diff --git a/.dockerignore b/.dockerignore index d2b0a06..9328fdb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,6 @@ -**/node_modules +node_modules +apps/*/node_modules +packages/*/node_modules # **/dist # **/.output **/.nuxt diff --git a/.env.example b/.env.example index 9247c34..b7c0ff2 100644 --- a/.env.example +++ b/.env.example @@ -29,6 +29,3 @@ REVALIDATE_SECRET=change-me-too ADMIN_PHONE=09120000000 ADMIN_PASSWORD=change-me ADMIN_NAME=مدیر سایت - -# npm registry used while building the images (set a mirror if npmjs.org is slow or blocked) -NPM_REGISTRY=https://registry.npmjs.org/ diff --git a/.gitignore b/.gitignore index 0068758..20d12b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ -# dependencies -node_modules/ +# dependencies (build outputs keep theirs: apps/web/.output/server/node_modules, apps/api/.output/node_modules) +/node_modules/ +/apps/*/node_modules/ +/packages/*/node_modules/ # build output # dist/ diff --git a/README.md b/README.md index f3da3d0..bf25e84 100644 --- a/README.md +++ b/README.md @@ -126,21 +126,16 @@ docker compose exec api node dist/seed/seed.js # فقط بار اول ``` - کانتینر `gateway` روی پورت `HTTP_PORT` (پیش‌فرض 8080) گوش می‌دهد و هر دو دامنه (`SITE_DOMAIN` و `ADMIN_DOMAIN`) را سرو می‌کند. TLS را nginx یا Traefik روی سرور یا CDN جلوی آن تأمین می‌کند. هر دو دامنه باید به سرور اشاره کنند. -- سرویس یک‌باره‌ی `migrate` پیش از `api` اجرا می‌شود، migrationهای جدید را اعمال می‌کند و خارج می‌شود. Prisma CLI فقط در همین image هست و image اجرایی API سبک می‌ماند. +- سرویس یک‌باره‌ی `migrate` پیش از `api` اجرا می‌شود، migrationهای جدید را اعمال می‌کند و خارج می‌شود. این کار را `dist/migrate.js` انجام می‌دهد که هم‌ارز `prisma migrate deploy` است و از همان جدول `_prisma_migrations` استفاده می‌کند، پس Prisma CLI روی سرور لازم نیست. - نام پروژه‌ی Compose ثابت و برابر `imen` است، تا با `docker-compose.dev.yml` (PostgreSQL و MinIO توسعه) هیچ کانتینر یا volume مشترکی نداشته باشد. - سرویس `backup` هر روز یک dump از دیتابیس در `./backups` می‌سازد و dumpهای قدیمی‌تر از ۱۴ روز را پاک می‌کند. بازگردانی: `docker compose exec -T postgres pg_restore -U imen -d imen --clean < backups/imen-YYYY-MM-DD.dump` - از فایل‌های MinIO (volume `miniodata`) هم جداگانه بکاپ بگیرید. -**اگر سرور به رجیستری npm دسترسی ندارد**، دو راه هست: -1. در `.env` مقدار `NPM_REGISTRY` را روی یک mirror در دسترس بگذارید. -2. imageها را روی سیستم توسعه بسازید و به سرور منتقل کنید: - ```bash - docker compose build - docker save imen-api imen-migrate imen-web imen-admin | gzip > imen-images.tar.gz - # روی سرور: - gunzip -c imen-images.tar.gz | docker load && docker compose up -d - ``` +**روی سرور چیزی نصب یا build نمی‌شود.** imageها فقط خروجی آماده‌ای را که در ریپو commit شده کپی می‌کنند، پس سرور به رجیستری npm نیازی ندارد. قبل از هر push روی سیستم توسعه `pnpm build` بگیرید و خروجی‌ها را هم commit کنید: +- `apps/web/.output` (همراه `server/node_modules`)، `apps/admin/dist` و `apps/api/.output`. +- `apps/api/.output` را `apps/api/scripts/bundle.mjs` می‌سازد. کد API و همه‌ی وابستگی‌های JS در آن bundle می‌شوند و فقط پکیج‌های native (`sharp` و `@node-rs/argon2`) با باینری Linux (Alpine، x64) کنارش کپی می‌شوند. این باینری‌ها را `supportedArchitectures` در `pnpm-workspace.yaml` موقع `pnpm install` دانلود می‌کند. +- آدرس سایت در لینک‌های پنل ادمین موقع build از `apps/admin/.env.production` خوانده می‌شود. **Object Storage ابرآروان (یا هر S3 دیگر) به‌جای MinIO**: در سرویس `api`، مقادیر `S3_ENDPOINT`، `S3_BUCKET` و کلیدها را تنظیم کنید و `S3_ENSURE_BUCKET` را `false` بگذارید. `MEDIA_PUBLIC_URL` را روی آدرس عمومی باکت یا CDN بگذارید. بعد از آن به سرویس `minio` و مسیر `/media` در gateway نیازی نیست. diff --git a/apps/admin/.env.production b/apps/admin/.env.production new file mode 100644 index 0000000..24424d0 --- /dev/null +++ b/apps/admin/.env.production @@ -0,0 +1,2 @@ +# loaded by `vite build` (the pre-built dist/ the admin image serves); dev uses http://localhost:3000 +VITE_SITE_URL=https://imenpishgaman.ir diff --git a/apps/admin/dist/assets/AdminLayout-BWEJTyVc.js b/apps/admin/dist/assets/AdminLayout-j5VE2EZ9.js similarity index 98% rename from apps/admin/dist/assets/AdminLayout-BWEJTyVc.js rename to apps/admin/dist/assets/AdminLayout-j5VE2EZ9.js index 860e170..b3133ea 100644 --- a/apps/admin/dist/assets/AdminLayout-BWEJTyVc.js +++ b/apps/admin/dist/assets/AdminLayout-j5VE2EZ9.js @@ -1 +1 @@ -import{n as e,o as t,t as n}from"./VuesaxIcon-CrbgSv-1.js";import{At as ee,Bt as r,Ct as i,It as a,Lt as o,Mt as s,Nt as c,Rt as l,Tt as u,_t as d,a as f,dt as p,ft as m,gt as h,ht as g,kt as _,lt as v,n as y,o as b,pt as x,t as S,ut as C,vt as w}from"./index-BCImsMjH.js";import"./logo-BuUh917n.js";import{t as T}from"./format-NkL3G1Uq.js";var te={class:`admin-sider__nav`},ne={class:`flex flex-col h-full`},re={class:`p-4 bg-white border-b border-slate-200/80`},ie={class:`flex items-center justify-between mb-3`},ae={class:`size-10 rounded-full bg-linear-to-br from-[#ff5a00] to-[#ff8a3d] text-white flex items-center justify-center font-bold text-sm shadow-xs`},oe={class:`min-w-0 flex-1`},se={class:`text-xs font-bold text-slate-800 truncate`},ce={class:`flex items-center gap-2 mt-0.5`},le={class:`text-[10px] text-orange-600 font-medium`},ue={class:`text-[10px] text-slate-400 font-mono`,dir:`ltr`},de={class:`flex-1 overflow-y-auto p-4 space-y-4`},fe={class:`grid grid-cols-2 gap-2`},pe={class:`size-9 rounded-lg bg-orange-50 text-orange-600 flex items-center justify-center mb-1.5`},E={class:`size-9 rounded-lg bg-orange-50 text-orange-600 flex items-center justify-center mb-1.5`},D={class:`size-9 rounded-lg bg-blue-50 text-blue-600 flex items-center justify-center mb-1.5`},O={key:0,class:`absolute top-2 end-2 size-2.5 rounded-full bg-orange-600 ring-2 ring-white animate-pulse`},k={class:`size-9 rounded-lg bg-amber-50 text-amber-600 flex items-center justify-center mb-1.5`},A={class:`grid grid-cols-2 gap-2`},j={class:`size-9 rounded-lg bg-purple-50 text-purple-600 flex items-center justify-center mb-1.5`},M={class:`size-9 rounded-lg bg-emerald-50 text-emerald-600 flex items-center justify-center mb-1.5`},N={key:0},P={class:`grid grid-cols-1 gap-2`},F={class:`size-9 rounded-lg bg-slate-100 text-slate-600 flex items-center justify-center shrink-0`},I={class:`p-3 bg-white border-t border-slate-200/80 space-y-2`},L=[`href`],R={class:`flex items-center gap-2`},z={class:`mobile-app-bar lg:!hidden`},B={key:0,class:`flex items-center justify-between w-full`},me={class:`text-xs font-bold text-slate-700`},he={class:`text-xs font-bold text-slate-800 truncate max-w-[140px]`},ge={key:1,class:`flex items-center justify-between w-full`},_e={class:`flex items-center gap-2.5`},ve={class:`leading-none`},ye={class:`text-[10px] font-medium text-orange-600 mt-0.5`},be={class:`flex items-center gap-1.5`},xe=[`href`],Se={class:`admin-header__start`},V={class:`admin-header__crumb`},Ce={class:`admin-header__crumb-page`},we={class:`admin-header__end`},Te=[`href`],Ee={type:`button`,class:`admin-header__user`},De={class:`admin-header__avatar`},Oe={class:`admin-header__user-meta`},ke={class:`admin-header__user-name`},Ae={key:0,class:`admin-header__user-role`},je={class:`admin-page`},Me={key:0,class:`mobile-nav-bar lg:!hidden`},Ne={class:`mobile-nav-item__icon`},Pe={class:`mobile-nav-item__icon`},Fe={class:`mobile-nav-item__icon relative`},Ie={key:0,class:`absolute -top-1 -end-1 size-2 rounded-full bg-orange-600 ring-2 ring-white`},Le={class:`mobile-nav-item__icon`},H=e(d({__name:`AdminLayout`,setup(e){let d=S(),H=f(),U=b(),W=a(!1),G=a(0);async function K(){try{let e=await y(`/admin/messages`,{query:{status:`NEW`,pageSize:1}});G.value=e.total}catch{}}i(K),s(()=>H.fullPath,K);let q=e=>()=>w(`span`,{class:`admin-menu__icon`},[w(n,{name:e,size:20})]),Re=v(()=>[{key:`dashboard`,icon:q(`chart-square`),label:`داشبورد`},{key:`products`,icon:q(`bag-2`),label:`محصولات`},{key:`categories`,icon:q(`category`),label:`دسته‌بندی‌ها`},{key:`sections`,icon:q(`row-vertical`),label:`بخش‌های سایت`},{key:`messages`,icon:q(`sms`),label:`پیام‌های تماس`},{key:`media`,icon:q(`gallery`),label:`کتابخانه رسانه`},...d.isAdmin?[{key:`users`,icon:q(`profile-2user`),label:`کاربران`}]:[]]),ze={"product-new":`products`,"product-edit":`products`,"category-new":`categories`,"category-edit":`categories`,"section-edit":`sections`},Be={dashboard:`داشبورد`,products:`محصولات`,"product-new":`محصول جدید`,"product-edit":`ویرایش محصول`,categories:`دسته‌بندی‌ها`,"category-new":`دسته‌بندی جدید`,"category-edit":`ویرایش دسته‌بندی`,sections:`بخش‌های سایت`,"section-edit":`ویرایش بخش`,messages:`پیام‌های تماس`,media:`کتابخانه رسانه`,users:`کاربران`,profile:`حساب کاربری`},J=v(()=>{let e=String(H.name??``);return[ze[e]??e]}),Y=v(()=>Be[String(H.name??``)]??`پنل مدیریت`),X=v(()=>(d.user?.name?.trim().charAt(0)||`ک`).slice(0,1)),Z=v(()=>{let e=String(H.name??``);return[`product-new`,`product-edit`,`category-new`,`category-edit`,`section-edit`].includes(e)}),Q=v(()=>{let e=String(H.name??``);return e.startsWith(`product`)?{name:`products`,label:`محصولات`}:e.startsWith(`category`)?{name:`categories`,label:`دسته‌بندی‌ها`}:e.startsWith(`section`)?{name:`sections`,label:`بخش‌های سایت`}:{name:`dashboard`,label:`داشبورد`}}),Ve=({key:e})=>{W.value=!1,U.push({name:String(e)})},$=e=>{W.value=!1,U.push({name:e})};return s(()=>H.fullPath,()=>W.value=!1),(e,i)=>{let a=_(`a-menu`),s=_(`a-layout-sider`),f=_(`a-drawer`),v=_(`a-menu-item`),y=_(`a-menu-divider`),b=_(`a-dropdown`),S=_(`a-layout-header`),w=_(`RouterView`),K=_(`a-layout-content`),q=_(`a-layout`);return u(),p(q,{class:`admin-shell`},{default:c(()=>[h(s,{width:248,breakpoint:`lg`,"collapsed-width":`0`,trigger:null,class:`admin-sider !hidden lg:!block`},{default:c(()=>[i[20]||=C(`div`,{class:`admin-sider__brand`},[C(`span`,{class:`admin-sider__logo`},[C(`img`,{src:`/logo.png`,alt:``,class:`size-7 object-contain`})]),C(`div`,{class:`leading-tight`},[C(`div`,{class:`text-[14px] font-bold text-[#0f172a]`},`ایمن پیشگامان`),C(`div`,{class:`text-[10px] font-medium tracking-wide text-[#94a3b8]`},`پنل مدیریت`)])],-1),C(`div`,te,[i[19]||=C(`div`,{class:`admin-sider__label`},`منوی اصلی`,-1),h(a,{class:`admin-menu`,mode:`inline`,"selected-keys":J.value,items:Re.value,onClick:Ve},null,8,[`selected-keys`,`items`])])]),_:1}),h(f,{open:W.value,"onUpdate:open":i[10]||=e=>W.value=e,placement:`right`,width:320,closable:!1,class:`mobile-hub-drawer`,"body-style":{padding:0,background:`#f8fafc`}},{default:c(()=>[C(`div`,ne,[C(`div`,re,[C(`div`,ie,[i[21]||=C(`div`,{class:`flex items-center gap-2.5`},[C(`span`,{class:`size-8 rounded-lg bg-orange-50 border border-orange-100 flex items-center justify-center`},[C(`img`,{src:`/logo.png`,alt:``,class:`size-5 object-contain`})]),C(`div`,null,[C(`div`,{class:`text-sm font-bold text-slate-800`},`ایمن پیشگامان`),C(`div`,{class:`text-[10px] text-slate-400`},`اپلیکیشن مدیریت`)])],-1),C(`button`,{type:`button`,class:`size-8 rounded-full flex items-center justify-center text-slate-400 hover:text-slate-600 hover:bg-slate-100 transition`,onClick:i[0]||=e=>W.value=!1},[h(n,{name:`close-circle`,size:20})])]),C(`div`,{class:`flex items-center gap-3 p-2.5 rounded-xl bg-slate-50 border border-slate-100 cursor-pointer active:scale-[0.99] transition`,onClick:i[1]||=e=>$(`profile`)},[C(`span`,ae,r(X.value),1),C(`div`,oe,[C(`div`,se,r(o(d).user?.name),1),C(`div`,ce,[C(`span`,le,r(o(d).user&&o(t)[o(d).user.role]),1),C(`span`,ue,r(o(d).user?.phone),1)])]),h(n,{name:`arrow-left`,size:14,class:`text-slate-400`})])]),C(`div`,de,[C(`div`,null,[i[30]||=C(`div`,{class:`text-[11px] font-bold text-slate-400 mb-2.5 px-1`},`بخش‌ها و کاتالوگ`,-1),C(`div`,fe,[C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-orange-200 active:bg-orange-50/40 transition`,{"!border-orange-500 !bg-orange-50/30 font-bold text-orange-600":o(H).name===`dashboard`}]),onClick:i[2]||=e=>$(`dashboard`)},[C(`div`,pe,[h(n,{name:`chart-square`,size:18})]),i[22]||=C(`span`,{class:`text-xs text-slate-700`},`داشبورد`,-1),i[23]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`نمای کلی آمار`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-orange-200 active:bg-orange-50/40 transition`,{"!border-orange-500 !bg-orange-50/30 font-bold text-orange-600":J.value.includes(`products`)}]),onClick:i[3]||=e=>$(`products`)},[C(`div`,E,[h(n,{name:`bag-2`,size:18})]),i[24]||=C(`span`,{class:`text-xs text-slate-700`},`محصولات`,-1),i[25]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`کاتالوگ و موجودی`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-blue-200 active:bg-blue-50/40 transition`,{"!border-blue-500 !bg-blue-50/30 font-bold text-blue-600":J.value.includes(`categories`)}]),onClick:i[4]||=e=>$(`categories`)},[C(`div`,D,[h(n,{name:`category`,size:18})]),i[26]||=C(`span`,{class:`text-xs text-slate-700`},`دسته‌بندی‌ها`,-1),i[27]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`گروه‌های کالا`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-amber-200 active:bg-amber-50/40 transition relative`,{"!border-amber-500 !bg-amber-50/30 font-bold text-amber-600":o(H).name===`messages`}]),onClick:i[5]||=e=>$(`messages`)},[G.value>0?(u(),x(`span`,O)):m(``,!0),C(`div`,k,[h(n,{name:`sms`,size:18})]),i[28]||=C(`span`,{class:`text-xs text-slate-700`},`پیام‌های تماس`,-1),i[29]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`درخواست‌های مشاوره`,-1)],2)])]),C(`div`,null,[i[35]||=C(`div`,{class:`text-[11px] font-bold text-slate-400 mb-2.5 px-1`},`محتوا و وب‌سایت`,-1),C(`div`,A,[C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-purple-200 active:bg-purple-50/40 transition`,{"!border-purple-500 !bg-purple-50/30 font-bold text-purple-600":o(H).name===`media`}]),onClick:i[6]||=e=>$(`media`)},[C(`div`,j,[h(n,{name:`gallery`,size:18})]),i[31]||=C(`span`,{class:`text-xs text-slate-700`},`کتابخانه رسانه`,-1),i[32]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`تصاویر WebP`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-emerald-200 active:bg-emerald-50/40 transition`,{"!border-emerald-500 !bg-emerald-50/30 font-bold text-emerald-600":J.value.includes(`sections`)}]),onClick:i[7]||=e=>$(`sections`)},[C(`div`,M,[h(n,{name:`row-vertical`,size:18})]),i[33]||=C(`span`,{class:`text-xs text-slate-700`},`بخش‌های سایت`,-1),i[34]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`تنظیمات صفحه اصلی`,-1)],2)])]),o(d).isAdmin?(u(),x(`div`,N,[i[37]||=C(`div`,{class:`text-[11px] font-bold text-slate-400 mb-2.5 px-1`},`مدیریت سیستم`,-1),C(`div`,P,[C(`button`,{type:`button`,class:l([`flex items-center gap-3 p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-slate-300 active:bg-slate-50 transition text-right`,{"!border-orange-500 font-bold":o(H).name===`users`}]),onClick:i[8]||=e=>$(`users`)},[C(`div`,F,[h(n,{name:`profile-2user`,size:18})]),i[36]||=C(`div`,{class:`flex-1 min-w-0`},[C(`div`,{class:`text-xs font-bold text-slate-800`},`مدیریت کاربران پنل`),C(`div`,{class:`text-[10px] text-slate-400`},`حساب‌ها و سطح دسترسی‌ها`)],-1),h(n,{name:`arrow-left`,size:14,class:`text-slate-400`})],2)])])):m(``,!0)]),C(`div`,I,[C(`a`,{href:o(T),target:`_blank`,rel:`noopener`,class:`flex items-center justify-between p-2.5 rounded-lg text-slate-600 hover:bg-slate-50 text-xs font-semibold transition`},[C(`span`,R,[h(n,{name:`export`,size:16,class:`text-slate-400`}),i[38]||=g(` مشاهده وب‌سایت اصلی `,-1)]),h(n,{name:`arrow-left`,size:12,class:`text-slate-300`})],8,L),C(`button`,{type:`button`,class:`w-full flex items-center justify-center gap-2 p-2.5 rounded-lg text-rose-600 hover:bg-rose-50 text-xs font-semibold transition`,onClick:i[9]||=e=>o(d).logout()},[h(n,{name:`logout`,size:16}),i[39]||=g(` خروج از حساب کاربری `,-1)])])])]),_:1},8,[`open`]),h(q,null,{default:c(()=>[C(`header`,z,[Z.value?(u(),x(`div`,B,[C(`button`,{type:`button`,class:`mobile-app-bar__back-btn`,onClick:i[11]||=e=>o(U).push(Q.value)},[h(n,{name:`arrow-right`,size:20}),C(`span`,me,`بازگشت به `+r(Q.value.label),1)]),C(`div`,he,r(Y.value),1)])):(u(),x(`div`,ge,[C(`div`,_e,[i[41]||=C(`span`,{class:`size-8 rounded-lg bg-orange-50 border border-orange-100 flex items-center justify-center`},[C(`img`,{src:`/logo.png`,alt:``,class:`size-5 object-contain`})],-1),C(`div`,ve,[i[40]||=C(`div`,{class:`text-xs font-extrabold text-slate-800`},`ایمن پیشگامان`,-1),C(`div`,ye,r(Y.value),1)])]),C(`div`,be,[C(`a`,{href:o(T),target:`_blank`,rel:`noopener`,class:`size-8 rounded-lg flex items-center justify-center text-slate-500 hover:text-orange-600 hover:bg-orange-50 transition`,title:`مشاهده سایت`},[h(n,{name:`export`,size:18})],8,xe),C(`button`,{type:`button`,class:`size-8 rounded-lg bg-linear-to-br from-[#ff5a00] to-[#ff8a3d] text-white flex items-center justify-center font-bold text-xs shadow-xs`,onClick:i[12]||=e=>o(U).push({name:`profile`})},r(X.value),1)])]))]),h(S,{class:`admin-header !hidden lg:!flex`},{default:c(()=>[C(`div`,Se,[C(`div`,V,[i[42]||=C(`span`,{class:`admin-header__crumb-kicker`},`پنل مدیریت`,-1),i[43]||=C(`span`,{class:`admin-header__crumb-sep`,"aria-hidden":`true`},`/`,-1),C(`span`,Ce,r(Y.value),1)])]),C(`div`,we,[C(`a`,{href:o(T),target:`_blank`,rel:`noopener`,class:`admin-header__site`},[h(n,{name:`export`,size:16}),i[44]||=C(`span`,null,`مشاهده سایت`,-1)],8,Te),i[47]||=C(`div`,{class:`admin-header__divider`,"aria-hidden":`true`},null,-1),h(b,{placement:`bottomLeft`,trigger:[`click`]},{overlay:c(()=>[h(a,{class:`admin-header__dropdown`},{default:c(()=>[h(v,{key:`profile`,onClick:i[13]||=e=>o(U).push({name:`profile`})},{default:c(()=>[h(n,{name:`user`,size:16}),i[45]||=g(` حساب کاربری `,-1)]),_:1}),h(y),h(v,{key:`logout`,danger:``,onClick:i[14]||=e=>o(d).logout()},{default:c(()=>[h(n,{name:`logout`,size:16}),i[46]||=g(` خروج `,-1)]),_:1})]),_:1})]),default:c(()=>[C(`button`,Ee,[C(`span`,De,r(X.value),1),C(`span`,Oe,[C(`span`,ke,r(o(d).user?.name),1),o(d).user?(u(),x(`span`,Ae,r(o(t)[o(d).user.role]),1)):m(``,!0)]),h(n,{name:`arrow-down`,size:12,class:`admin-header__chevron`})])]),_:1})])]),_:1}),h(K,{class:l([`admin-content`,{"admin-content--has-bottom-nav":!Z.value}])},{default:c(()=>[C(`div`,je,[h(w,null,{default:c(({Component:e,route:t})=>[(u(),p(ee(e),{key:t.path}))]),_:1})])]),_:1},8,[`class`]),Z.value?m(``,!0):(u(),x(`nav`,Me,[C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":o(H).name===`dashboard`}]),onClick:i[15]||=e=>$(`dashboard`)},[C(`div`,Ne,[h(n,{name:`chart-square`,size:20})]),i[48]||=C(`span`,{class:`mobile-nav-item__label`},`داشبورد`,-1)],2),C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":J.value.includes(`products`)}]),onClick:i[16]||=e=>$(`products`)},[C(`div`,Pe,[h(n,{name:`bag-2`,size:20})]),i[49]||=C(`span`,{class:`mobile-nav-item__label`},`محصولات`,-1)],2),C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":o(H).name===`messages`}]),onClick:i[17]||=e=>$(`messages`)},[C(`div`,Fe,[h(n,{name:`sms`,size:20}),G.value>0?(u(),x(`span`,Ie)):m(``,!0)]),i[50]||=C(`span`,{class:`mobile-nav-item__label`},`پیام‌ها`,-1)],2),C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":W.value||[`categories`,`sections`,`media`,`users`,`profile`].includes(String(o(H).name??``))}]),onClick:i[18]||=e=>W.value=!0},[C(`div`,Le,[h(n,{name:`category`,size:20})]),i[51]||=C(`span`,{class:`mobile-nav-item__label`},`ابزارها`,-1)],2)]))]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-4f03381b`]]);export{H as default}; \ No newline at end of file +import{n as e,o as t,t as n}from"./VuesaxIcon-B2OgulS6.js";import{At as ee,Bt as r,Ct as i,It as a,Lt as o,Mt as s,Nt as c,Rt as l,Tt as u,_t as d,a as f,dt as p,ft as m,gt as h,ht as g,kt as _,lt as v,n as y,o as b,pt as x,t as S,ut as C,vt as w}from"./index-BuGK6ptM.js";import"./logo-BuUh917n.js";import{t as T}from"./format-B9MYDQJN.js";var te={class:`admin-sider__nav`},ne={class:`flex flex-col h-full`},re={class:`p-4 bg-white border-b border-slate-200/80`},ie={class:`flex items-center justify-between mb-3`},ae={class:`size-10 rounded-full bg-linear-to-br from-[#ff5a00] to-[#ff8a3d] text-white flex items-center justify-center font-bold text-sm shadow-xs`},oe={class:`min-w-0 flex-1`},se={class:`text-xs font-bold text-slate-800 truncate`},ce={class:`flex items-center gap-2 mt-0.5`},le={class:`text-[10px] text-orange-600 font-medium`},ue={class:`text-[10px] text-slate-400 font-mono`,dir:`ltr`},de={class:`flex-1 overflow-y-auto p-4 space-y-4`},fe={class:`grid grid-cols-2 gap-2`},pe={class:`size-9 rounded-lg bg-orange-50 text-orange-600 flex items-center justify-center mb-1.5`},E={class:`size-9 rounded-lg bg-orange-50 text-orange-600 flex items-center justify-center mb-1.5`},D={class:`size-9 rounded-lg bg-blue-50 text-blue-600 flex items-center justify-center mb-1.5`},O={key:0,class:`absolute top-2 end-2 size-2.5 rounded-full bg-orange-600 ring-2 ring-white animate-pulse`},k={class:`size-9 rounded-lg bg-amber-50 text-amber-600 flex items-center justify-center mb-1.5`},A={class:`grid grid-cols-2 gap-2`},j={class:`size-9 rounded-lg bg-purple-50 text-purple-600 flex items-center justify-center mb-1.5`},M={class:`size-9 rounded-lg bg-emerald-50 text-emerald-600 flex items-center justify-center mb-1.5`},N={key:0},P={class:`grid grid-cols-1 gap-2`},F={class:`size-9 rounded-lg bg-slate-100 text-slate-600 flex items-center justify-center shrink-0`},I={class:`p-3 bg-white border-t border-slate-200/80 space-y-2`},L=[`href`],R={class:`flex items-center gap-2`},z={class:`mobile-app-bar lg:!hidden`},B={key:0,class:`flex items-center justify-between w-full`},me={class:`text-xs font-bold text-slate-700`},he={class:`text-xs font-bold text-slate-800 truncate max-w-[140px]`},ge={key:1,class:`flex items-center justify-between w-full`},_e={class:`flex items-center gap-2.5`},ve={class:`leading-none`},ye={class:`text-[10px] font-medium text-orange-600 mt-0.5`},be={class:`flex items-center gap-1.5`},xe=[`href`],Se={class:`admin-header__start`},V={class:`admin-header__crumb`},Ce={class:`admin-header__crumb-page`},we={class:`admin-header__end`},Te=[`href`],Ee={type:`button`,class:`admin-header__user`},De={class:`admin-header__avatar`},Oe={class:`admin-header__user-meta`},ke={class:`admin-header__user-name`},Ae={key:0,class:`admin-header__user-role`},je={class:`admin-page`},Me={key:0,class:`mobile-nav-bar lg:!hidden`},Ne={class:`mobile-nav-item__icon`},Pe={class:`mobile-nav-item__icon`},Fe={class:`mobile-nav-item__icon relative`},Ie={key:0,class:`absolute -top-1 -end-1 size-2 rounded-full bg-orange-600 ring-2 ring-white`},Le={class:`mobile-nav-item__icon`},H=e(d({__name:`AdminLayout`,setup(e){let d=S(),H=f(),U=b(),W=a(!1),G=a(0);async function K(){try{let e=await y(`/admin/messages`,{query:{status:`NEW`,pageSize:1}});G.value=e.total}catch{}}i(K),s(()=>H.fullPath,K);let q=e=>()=>w(`span`,{class:`admin-menu__icon`},[w(n,{name:e,size:20})]),Re=v(()=>[{key:`dashboard`,icon:q(`chart-square`),label:`داشبورد`},{key:`products`,icon:q(`bag-2`),label:`محصولات`},{key:`categories`,icon:q(`category`),label:`دسته‌بندی‌ها`},{key:`sections`,icon:q(`row-vertical`),label:`بخش‌های سایت`},{key:`messages`,icon:q(`sms`),label:`پیام‌های تماس`},{key:`media`,icon:q(`gallery`),label:`کتابخانه رسانه`},...d.isAdmin?[{key:`users`,icon:q(`profile-2user`),label:`کاربران`}]:[]]),ze={"product-new":`products`,"product-edit":`products`,"category-new":`categories`,"category-edit":`categories`,"section-edit":`sections`},Be={dashboard:`داشبورد`,products:`محصولات`,"product-new":`محصول جدید`,"product-edit":`ویرایش محصول`,categories:`دسته‌بندی‌ها`,"category-new":`دسته‌بندی جدید`,"category-edit":`ویرایش دسته‌بندی`,sections:`بخش‌های سایت`,"section-edit":`ویرایش بخش`,messages:`پیام‌های تماس`,media:`کتابخانه رسانه`,users:`کاربران`,profile:`حساب کاربری`},J=v(()=>{let e=String(H.name??``);return[ze[e]??e]}),Y=v(()=>Be[String(H.name??``)]??`پنل مدیریت`),X=v(()=>(d.user?.name?.trim().charAt(0)||`ک`).slice(0,1)),Z=v(()=>{let e=String(H.name??``);return[`product-new`,`product-edit`,`category-new`,`category-edit`,`section-edit`].includes(e)}),Q=v(()=>{let e=String(H.name??``);return e.startsWith(`product`)?{name:`products`,label:`محصولات`}:e.startsWith(`category`)?{name:`categories`,label:`دسته‌بندی‌ها`}:e.startsWith(`section`)?{name:`sections`,label:`بخش‌های سایت`}:{name:`dashboard`,label:`داشبورد`}}),Ve=({key:e})=>{W.value=!1,U.push({name:String(e)})},$=e=>{W.value=!1,U.push({name:e})};return s(()=>H.fullPath,()=>W.value=!1),(e,i)=>{let a=_(`a-menu`),s=_(`a-layout-sider`),f=_(`a-drawer`),v=_(`a-menu-item`),y=_(`a-menu-divider`),b=_(`a-dropdown`),S=_(`a-layout-header`),w=_(`RouterView`),K=_(`a-layout-content`),q=_(`a-layout`);return u(),p(q,{class:`admin-shell`},{default:c(()=>[h(s,{width:248,breakpoint:`lg`,"collapsed-width":`0`,trigger:null,class:`admin-sider !hidden lg:!block`},{default:c(()=>[i[20]||=C(`div`,{class:`admin-sider__brand`},[C(`span`,{class:`admin-sider__logo`},[C(`img`,{src:`/logo.png`,alt:``,class:`size-7 object-contain`})]),C(`div`,{class:`leading-tight`},[C(`div`,{class:`text-[14px] font-bold text-[#0f172a]`},`ایمن پیشگامان`),C(`div`,{class:`text-[10px] font-medium tracking-wide text-[#94a3b8]`},`پنل مدیریت`)])],-1),C(`div`,te,[i[19]||=C(`div`,{class:`admin-sider__label`},`منوی اصلی`,-1),h(a,{class:`admin-menu`,mode:`inline`,"selected-keys":J.value,items:Re.value,onClick:Ve},null,8,[`selected-keys`,`items`])])]),_:1}),h(f,{open:W.value,"onUpdate:open":i[10]||=e=>W.value=e,placement:`right`,width:320,closable:!1,class:`mobile-hub-drawer`,"body-style":{padding:0,background:`#f8fafc`}},{default:c(()=>[C(`div`,ne,[C(`div`,re,[C(`div`,ie,[i[21]||=C(`div`,{class:`flex items-center gap-2.5`},[C(`span`,{class:`size-8 rounded-lg bg-orange-50 border border-orange-100 flex items-center justify-center`},[C(`img`,{src:`/logo.png`,alt:``,class:`size-5 object-contain`})]),C(`div`,null,[C(`div`,{class:`text-sm font-bold text-slate-800`},`ایمن پیشگامان`),C(`div`,{class:`text-[10px] text-slate-400`},`اپلیکیشن مدیریت`)])],-1),C(`button`,{type:`button`,class:`size-8 rounded-full flex items-center justify-center text-slate-400 hover:text-slate-600 hover:bg-slate-100 transition`,onClick:i[0]||=e=>W.value=!1},[h(n,{name:`close-circle`,size:20})])]),C(`div`,{class:`flex items-center gap-3 p-2.5 rounded-xl bg-slate-50 border border-slate-100 cursor-pointer active:scale-[0.99] transition`,onClick:i[1]||=e=>$(`profile`)},[C(`span`,ae,r(X.value),1),C(`div`,oe,[C(`div`,se,r(o(d).user?.name),1),C(`div`,ce,[C(`span`,le,r(o(d).user&&o(t)[o(d).user.role]),1),C(`span`,ue,r(o(d).user?.phone),1)])]),h(n,{name:`arrow-left`,size:14,class:`text-slate-400`})])]),C(`div`,de,[C(`div`,null,[i[30]||=C(`div`,{class:`text-[11px] font-bold text-slate-400 mb-2.5 px-1`},`بخش‌ها و کاتالوگ`,-1),C(`div`,fe,[C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-orange-200 active:bg-orange-50/40 transition`,{"!border-orange-500 !bg-orange-50/30 font-bold text-orange-600":o(H).name===`dashboard`}]),onClick:i[2]||=e=>$(`dashboard`)},[C(`div`,pe,[h(n,{name:`chart-square`,size:18})]),i[22]||=C(`span`,{class:`text-xs text-slate-700`},`داشبورد`,-1),i[23]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`نمای کلی آمار`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-orange-200 active:bg-orange-50/40 transition`,{"!border-orange-500 !bg-orange-50/30 font-bold text-orange-600":J.value.includes(`products`)}]),onClick:i[3]||=e=>$(`products`)},[C(`div`,E,[h(n,{name:`bag-2`,size:18})]),i[24]||=C(`span`,{class:`text-xs text-slate-700`},`محصولات`,-1),i[25]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`کاتالوگ و موجودی`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-blue-200 active:bg-blue-50/40 transition`,{"!border-blue-500 !bg-blue-50/30 font-bold text-blue-600":J.value.includes(`categories`)}]),onClick:i[4]||=e=>$(`categories`)},[C(`div`,D,[h(n,{name:`category`,size:18})]),i[26]||=C(`span`,{class:`text-xs text-slate-700`},`دسته‌بندی‌ها`,-1),i[27]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`گروه‌های کالا`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-amber-200 active:bg-amber-50/40 transition relative`,{"!border-amber-500 !bg-amber-50/30 font-bold text-amber-600":o(H).name===`messages`}]),onClick:i[5]||=e=>$(`messages`)},[G.value>0?(u(),x(`span`,O)):m(``,!0),C(`div`,k,[h(n,{name:`sms`,size:18})]),i[28]||=C(`span`,{class:`text-xs text-slate-700`},`پیام‌های تماس`,-1),i[29]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`درخواست‌های مشاوره`,-1)],2)])]),C(`div`,null,[i[35]||=C(`div`,{class:`text-[11px] font-bold text-slate-400 mb-2.5 px-1`},`محتوا و وب‌سایت`,-1),C(`div`,A,[C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-purple-200 active:bg-purple-50/40 transition`,{"!border-purple-500 !bg-purple-50/30 font-bold text-purple-600":o(H).name===`media`}]),onClick:i[6]||=e=>$(`media`)},[C(`div`,j,[h(n,{name:`gallery`,size:18})]),i[31]||=C(`span`,{class:`text-xs text-slate-700`},`کتابخانه رسانه`,-1),i[32]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`تصاویر WebP`,-1)],2),C(`button`,{type:`button`,class:l([`flex flex-col items-center justify-center p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-emerald-200 active:bg-emerald-50/40 transition`,{"!border-emerald-500 !bg-emerald-50/30 font-bold text-emerald-600":J.value.includes(`sections`)}]),onClick:i[7]||=e=>$(`sections`)},[C(`div`,M,[h(n,{name:`row-vertical`,size:18})]),i[33]||=C(`span`,{class:`text-xs text-slate-700`},`بخش‌های سایت`,-1),i[34]||=C(`span`,{class:`text-[9px] text-slate-400 mt-0.5`},`تنظیمات صفحه اصلی`,-1)],2)])]),o(d).isAdmin?(u(),x(`div`,N,[i[37]||=C(`div`,{class:`text-[11px] font-bold text-slate-400 mb-2.5 px-1`},`مدیریت سیستم`,-1),C(`div`,P,[C(`button`,{type:`button`,class:l([`flex items-center gap-3 p-3 rounded-xl bg-white border border-slate-200/70 shadow-2xs hover:border-slate-300 active:bg-slate-50 transition text-right`,{"!border-orange-500 font-bold":o(H).name===`users`}]),onClick:i[8]||=e=>$(`users`)},[C(`div`,F,[h(n,{name:`profile-2user`,size:18})]),i[36]||=C(`div`,{class:`flex-1 min-w-0`},[C(`div`,{class:`text-xs font-bold text-slate-800`},`مدیریت کاربران پنل`),C(`div`,{class:`text-[10px] text-slate-400`},`حساب‌ها و سطح دسترسی‌ها`)],-1),h(n,{name:`arrow-left`,size:14,class:`text-slate-400`})],2)])])):m(``,!0)]),C(`div`,I,[C(`a`,{href:o(T),target:`_blank`,rel:`noopener`,class:`flex items-center justify-between p-2.5 rounded-lg text-slate-600 hover:bg-slate-50 text-xs font-semibold transition`},[C(`span`,R,[h(n,{name:`export`,size:16,class:`text-slate-400`}),i[38]||=g(` مشاهده وب‌سایت اصلی `,-1)]),h(n,{name:`arrow-left`,size:12,class:`text-slate-300`})],8,L),C(`button`,{type:`button`,class:`w-full flex items-center justify-center gap-2 p-2.5 rounded-lg text-rose-600 hover:bg-rose-50 text-xs font-semibold transition`,onClick:i[9]||=e=>o(d).logout()},[h(n,{name:`logout`,size:16}),i[39]||=g(` خروج از حساب کاربری `,-1)])])])]),_:1},8,[`open`]),h(q,null,{default:c(()=>[C(`header`,z,[Z.value?(u(),x(`div`,B,[C(`button`,{type:`button`,class:`mobile-app-bar__back-btn`,onClick:i[11]||=e=>o(U).push(Q.value)},[h(n,{name:`arrow-right`,size:20}),C(`span`,me,`بازگشت به `+r(Q.value.label),1)]),C(`div`,he,r(Y.value),1)])):(u(),x(`div`,ge,[C(`div`,_e,[i[41]||=C(`span`,{class:`size-8 rounded-lg bg-orange-50 border border-orange-100 flex items-center justify-center`},[C(`img`,{src:`/logo.png`,alt:``,class:`size-5 object-contain`})],-1),C(`div`,ve,[i[40]||=C(`div`,{class:`text-xs font-extrabold text-slate-800`},`ایمن پیشگامان`,-1),C(`div`,ye,r(Y.value),1)])]),C(`div`,be,[C(`a`,{href:o(T),target:`_blank`,rel:`noopener`,class:`size-8 rounded-lg flex items-center justify-center text-slate-500 hover:text-orange-600 hover:bg-orange-50 transition`,title:`مشاهده سایت`},[h(n,{name:`export`,size:18})],8,xe),C(`button`,{type:`button`,class:`size-8 rounded-lg bg-linear-to-br from-[#ff5a00] to-[#ff8a3d] text-white flex items-center justify-center font-bold text-xs shadow-xs`,onClick:i[12]||=e=>o(U).push({name:`profile`})},r(X.value),1)])]))]),h(S,{class:`admin-header !hidden lg:!flex`},{default:c(()=>[C(`div`,Se,[C(`div`,V,[i[42]||=C(`span`,{class:`admin-header__crumb-kicker`},`پنل مدیریت`,-1),i[43]||=C(`span`,{class:`admin-header__crumb-sep`,"aria-hidden":`true`},`/`,-1),C(`span`,Ce,r(Y.value),1)])]),C(`div`,we,[C(`a`,{href:o(T),target:`_blank`,rel:`noopener`,class:`admin-header__site`},[h(n,{name:`export`,size:16}),i[44]||=C(`span`,null,`مشاهده سایت`,-1)],8,Te),i[47]||=C(`div`,{class:`admin-header__divider`,"aria-hidden":`true`},null,-1),h(b,{placement:`bottomLeft`,trigger:[`click`]},{overlay:c(()=>[h(a,{class:`admin-header__dropdown`},{default:c(()=>[h(v,{key:`profile`,onClick:i[13]||=e=>o(U).push({name:`profile`})},{default:c(()=>[h(n,{name:`user`,size:16}),i[45]||=g(` حساب کاربری `,-1)]),_:1}),h(y),h(v,{key:`logout`,danger:``,onClick:i[14]||=e=>o(d).logout()},{default:c(()=>[h(n,{name:`logout`,size:16}),i[46]||=g(` خروج `,-1)]),_:1})]),_:1})]),default:c(()=>[C(`button`,Ee,[C(`span`,De,r(X.value),1),C(`span`,Oe,[C(`span`,ke,r(o(d).user?.name),1),o(d).user?(u(),x(`span`,Ae,r(o(t)[o(d).user.role]),1)):m(``,!0)]),h(n,{name:`arrow-down`,size:12,class:`admin-header__chevron`})])]),_:1})])]),_:1}),h(K,{class:l([`admin-content`,{"admin-content--has-bottom-nav":!Z.value}])},{default:c(()=>[C(`div`,je,[h(w,null,{default:c(({Component:e,route:t})=>[(u(),p(ee(e),{key:t.path}))]),_:1})])]),_:1},8,[`class`]),Z.value?m(``,!0):(u(),x(`nav`,Me,[C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":o(H).name===`dashboard`}]),onClick:i[15]||=e=>$(`dashboard`)},[C(`div`,Ne,[h(n,{name:`chart-square`,size:20})]),i[48]||=C(`span`,{class:`mobile-nav-item__label`},`داشبورد`,-1)],2),C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":J.value.includes(`products`)}]),onClick:i[16]||=e=>$(`products`)},[C(`div`,Pe,[h(n,{name:`bag-2`,size:20})]),i[49]||=C(`span`,{class:`mobile-nav-item__label`},`محصولات`,-1)],2),C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":o(H).name===`messages`}]),onClick:i[17]||=e=>$(`messages`)},[C(`div`,Fe,[h(n,{name:`sms`,size:20}),G.value>0?(u(),x(`span`,Ie)):m(``,!0)]),i[50]||=C(`span`,{class:`mobile-nav-item__label`},`پیام‌ها`,-1)],2),C(`button`,{type:`button`,class:l([`mobile-nav-item`,{"mobile-nav-item--active":W.value||[`categories`,`sections`,`media`,`users`,`profile`].includes(String(o(H).name??``))}]),onClick:i[18]||=e=>W.value=!0},[C(`div`,Le,[h(n,{name:`category`,size:20})]),i[51]||=C(`span`,{class:`mobile-nav-item__label`},`ابزارها`,-1)],2)]))]),_:1})]),_:1})}}}),[[`__scopeId`,`data-v-4f03381b`]]);export{H as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/CategoriesPage-DDuDA84R.js b/apps/admin/dist/assets/CategoriesPage-DSZGpYF5.js similarity index 96% rename from apps/admin/dist/assets/CategoriesPage-DDuDA84R.js rename to apps/admin/dist/assets/CategoriesPage-DSZGpYF5.js index ca23519..079b165 100644 --- a/apps/admin/dist/assets/CategoriesPage-DDuDA84R.js +++ b/apps/admin/dist/assets/CategoriesPage-DSZGpYF5.js @@ -1 +1 @@ -import{t as e}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as t,Ct as n,Dt as r,It as i,Lt as a,Nt as o,Tt as s,_t as c,ct as l,dt as u,ft as d,gt as f,ht as p,i as m,kt as h,n as g,ot as _,pt as v,t as y,ut as b}from"./index-BCImsMjH.js";import{r as x,t as S}from"./format-NkL3G1Uq.js";import{t as C}from"./PageHeader-vyrIuh7P.js";var w=[`src`],T={class:`text-xs text-gray-400`,dir:`ltr`},E=[`href`],D={class:`mobile-categories-view block lg:!hidden pb-24`},O={key:1,class:`space-y-3`},k={class:`flex items-start gap-3`},A=[`src`],j={key:1,class:`size-14 rounded-lg bg-slate-100 shrink-0 flex items-center justify-center text-slate-300`},M={class:`min-w-0 flex-1`},N={class:`flex items-start justify-between gap-2`},P={class:`text-[10px] font-mono text-slate-500 bg-slate-100 px-1.5 py-0.5 rounded shrink-0`,dir:`ltr`},F={class:`flex items-center gap-2 mt-1.5 text-xs`},I={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-3`},L={class:`flex items-center gap-1`},R=[`disabled`,`onClick`],z=[`disabled`,`onClick`],B={class:`flex items-center gap-1.5`},V={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`ویرایش`},H=[`href`],U={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`مشاهده در سایت`},W=[`disabled`,`title`],G=c({__name:`CategoriesPage`,setup(c){let G=y(),K=i([]),q=i(!1);async function J(){q.value=!0;try{K.value=await g(`/admin/categories`)}catch(e){_.error(m(e))}finally{q.value=!1}}async function Y(e,t){let n=[...K.value],[r]=n.splice(e,1);n.splice(e+t,0,r),K.value=n;try{await g(`/admin/categories/reorder`,{method:`POST`,body:{ids:n.map(e=>e.id)}})}catch(e){_.error(m(e)),await J()}}async function X(e){try{await g(`/admin/categories/${e.id}`,{method:`DELETE`}),_.success(`دسته حذف شد`),await J()}catch(e){_.error(m(e))}}let Z=[{title:`تصویر`,key:`cover`,width:80},{title:`نام`,key:`name`},{title:`کد`,dataIndex:`code`,width:100},{title:`محصولات`,key:`products`,width:100},{title:`وضعیت`,key:`status`,width:110},{title:`ترتیب`,key:`order`,width:100},{title:``,key:`actions`,width:170}];return n(J),(n,i)=>{let c=h(`a-button`),m=h(`RouterLink`),g=h(`a-tag`),_=h(`a-space`),y=h(`a-popconfirm`),J=h(`a-table`),Q=h(`a-card`),$=h(`a-empty`),ee=h(`a-spin`);return s(),v(l,null,[f(C,{title:`دسته‌بندی‌ها`,subtitle:`ترتیب دسته‌ها همان ترتیب نمایش در سایت است`},{default:o(()=>[f(m,{to:{name:`category-new`}},{default:o(()=>[f(c,{type:`primary`},{icon:o(()=>[f(e,{name:`add`,size:16})]),default:o(()=>[i[0]||=p(` دسته جدید `,-1)]),_:1})]),_:1})]),_:1}),f(Q,{class:`!hidden lg:!block`,"body-style":{padding:0}},{default:o(()=>[f(J,{columns:Z,"data-source":K.value,loading:q.value,"row-key":`id`,pagination:!1,scroll:{x:800}},{bodyCell:o(({column:n,record:r,index:i})=>[n.key===`cover`?(s(),v(l,{key:0},[r.coverImage?(s(),v(`img`,{key:0,src:r.coverImage.url,alt:``,class:`size-12 rounded object-cover`},null,8,w)):d(``,!0)],64)):n.key===`name`?(s(),v(l,{key:1},[f(m,{to:{name:`category-edit`,params:{id:r.id}},class:`font-bold`},{default:o(()=>[p(t(r.name),1)]),_:2},1032,[`to`]),b(`div`,T,t(r.slug),1)],64)):n.key===`products`?(s(),u(m,{key:2,to:{name:`products`,query:{categoryId:r.id}}},{default:o(()=>[p(t(a(x)(r.productCount)),1)]),_:2},1032,[`to`])):n.key===`status`?(s(),u(g,{key:3,color:r.isPublished?`green`:`default`},{default:o(()=>[p(t(r.isPublished?`منتشرشده`:`مخفی`),1)]),_:2},1032,[`color`])):n.key===`order`?(s(),u(_,{key:4,size:4},{default:o(()=>[f(c,{size:`small`,disabled:i===0,onClick:e=>Y(i,-1)},{icon:o(()=>[f(e,{name:`arrow-up`,size:16})]),_:1},8,[`disabled`,`onClick`]),f(c,{size:`small`,disabled:i===K.value.length-1,onClick:e=>Y(i,1)},{icon:o(()=>[f(e,{name:`arrow-down`,size:16})]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)):n.key===`actions`?(s(),u(_,{key:5,size:4},{default:o(()=>[f(m,{to:{name:`category-edit`,params:{id:r.id}}},{default:o(()=>[f(c,{size:`small`},{icon:o(()=>[f(e,{name:`edit-2`,size:16})]),_:1})]),_:1},8,[`to`]),b(`a`,{href:`${a(S)}/categories/${r.slug}`,target:`_blank`,rel:`noopener`},[f(c,{size:`small`,title:`مشاهده در سایت`},{icon:o(()=>[f(e,{name:`export`,size:16})]),_:1})],8,E),a(G).isAdmin?(s(),u(y,{key:0,title:`این دسته حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>X(r)},{default:o(()=>[f(c,{size:`small`,danger:``,disabled:r.productCount>0,title:r.productCount>0?`ابتدا محصولات این دسته را حذف یا جابه‌جا کنید`:`حذف`},{icon:o(()=>[f(e,{name:`trash`,size:16})]),_:1},8,[`disabled`,`title`])]),_:2},1032,[`onConfirm`])):d(``,!0)]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`,`loading`])]),_:1}),b(`div`,D,[f(ee,{spinning:q.value},{default:o(()=>[!K.value.length&&!q.value?(s(),u($,{key:0,description:`دسته‌بندی ثبت نشده است`,class:`py-12`})):(s(),v(`div`,O,[(s(!0),v(l,null,r(K.value,(n,r)=>(s(),v(`div`,{key:n.id,class:`bg-white rounded-xl border border-slate-200/80 p-3.5 shadow-2xs transition`},[b(`div`,k,[n.coverImage?(s(),v(`img`,{key:0,src:n.coverImage.url,alt:``,class:`size-14 rounded-lg object-cover shrink-0 border border-slate-100 bg-slate-50`},null,8,A)):(s(),v(`div`,j,[f(e,{name:`category`,size:22})])),b(`div`,M,[b(`div`,N,[f(m,{to:{name:`category-edit`,params:{id:n.id}},class:`font-bold text-[14px] text-slate-800 hover:text-orange-600 line-clamp-1`},{default:o(()=>[p(t(n.name),1)]),_:2},1032,[`to`]),b(`span`,P,t(n.code),1)]),b(`div`,F,[f(m,{to:{name:`products`,query:{categoryId:n.id}},class:`inline-flex items-center gap-1 text-orange-600 font-bold bg-orange-50 px-2 py-0.5 rounded-full`},{default:o(()=>[p(t(a(x)(n.productCount))+` محصول `,1)]),_:2},1032,[`to`]),f(g,{color:n.isPublished?`green`:`default`,class:`!m-0 !text-[10px]`},{default:o(()=>[p(t(n.isPublished?`منتشرشده`:`مخفی`),1)]),_:2},1032,[`color`])])])]),b(`div`,I,[b(`div`,L,[i[1]||=b(`span`,{class:`text-[11px] text-slate-400 me-1`},`ترتیب:`,-1),b(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===0,onClick:e=>Y(r,-1)},[f(e,{name:`arrow-up`,size:16})],8,R),b(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===K.value.length-1,onClick:e=>Y(r,1)},[f(e,{name:`arrow-down`,size:16})],8,z)]),b(`div`,B,[f(m,{to:{name:`category-edit`,params:{id:n.id}}},{default:o(()=>[b(`button`,V,[f(e,{name:`edit-2`,size:16})])]),_:1},8,[`to`]),b(`a`,{href:`${a(S)}/categories/${n.slug}`,target:`_blank`,rel:`noopener`},[b(`button`,U,[f(e,{name:`export`,size:16})])],8,H),a(G).isAdmin?(s(),u(y,{key:0,title:`این دسته حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>X(n)},{default:o(()=>[b(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-rose-500 bg-rose-50 hover:bg-rose-100 disabled:opacity-30 disabled:pointer-events-none active:bg-rose-200 transition`,disabled:n.productCount>0,title:n.productCount>0?`ابتدا محصولات این دسته را حذف کنید`:`حذف`},[f(e,{name:`trash`,size:16})],8,W)]),_:2},1032,[`onConfirm`])):d(``,!0)])])]))),128))]))]),_:1},8,[`spinning`]),f(m,{to:{name:`category-new`},class:`fixed start-4 bottom-[72px] z-30 flex items-center gap-2 px-4 py-2.5 rounded-full bg-linear-to-r from-[#ff5a00] to-[#ff7a29] text-white font-bold text-xs shadow-lg shadow-orange-500/30 active:scale-95 transition`},{default:o(()=>[f(e,{name:`add`,size:18}),i[2]||=b(`span`,null,`دسته جدید`,-1)]),_:1})])],64)}}});export{G as default}; \ No newline at end of file +import{t as e}from"./VuesaxIcon-B2OgulS6.js";import{Bt as t,Ct as n,Dt as r,It as i,Lt as a,Nt as o,Tt as s,_t as c,ct as l,dt as u,ft as d,gt as f,ht as p,i as m,kt as h,n as g,ot as _,pt as v,t as y,ut as b}from"./index-BuGK6ptM.js";import{r as x,t as S}from"./format-B9MYDQJN.js";import{t as C}from"./PageHeader-3Ryvg2HD.js";var w=[`src`],T={class:`text-xs text-gray-400`,dir:`ltr`},E=[`href`],D={class:`mobile-categories-view block lg:!hidden pb-24`},O={key:1,class:`space-y-3`},k={class:`flex items-start gap-3`},A=[`src`],j={key:1,class:`size-14 rounded-lg bg-slate-100 shrink-0 flex items-center justify-center text-slate-300`},M={class:`min-w-0 flex-1`},N={class:`flex items-start justify-between gap-2`},P={class:`text-[10px] font-mono text-slate-500 bg-slate-100 px-1.5 py-0.5 rounded shrink-0`,dir:`ltr`},F={class:`flex items-center gap-2 mt-1.5 text-xs`},I={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-3`},L={class:`flex items-center gap-1`},R=[`disabled`,`onClick`],z=[`disabled`,`onClick`],B={class:`flex items-center gap-1.5`},V={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`ویرایش`},H=[`href`],U={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`مشاهده در سایت`},W=[`disabled`,`title`],G=c({__name:`CategoriesPage`,setup(c){let G=y(),K=i([]),q=i(!1);async function J(){q.value=!0;try{K.value=await g(`/admin/categories`)}catch(e){_.error(m(e))}finally{q.value=!1}}async function Y(e,t){let n=[...K.value],[r]=n.splice(e,1);n.splice(e+t,0,r),K.value=n;try{await g(`/admin/categories/reorder`,{method:`POST`,body:{ids:n.map(e=>e.id)}})}catch(e){_.error(m(e)),await J()}}async function X(e){try{await g(`/admin/categories/${e.id}`,{method:`DELETE`}),_.success(`دسته حذف شد`),await J()}catch(e){_.error(m(e))}}let Z=[{title:`تصویر`,key:`cover`,width:80},{title:`نام`,key:`name`},{title:`کد`,dataIndex:`code`,width:100},{title:`محصولات`,key:`products`,width:100},{title:`وضعیت`,key:`status`,width:110},{title:`ترتیب`,key:`order`,width:100},{title:``,key:`actions`,width:170}];return n(J),(n,i)=>{let c=h(`a-button`),m=h(`RouterLink`),g=h(`a-tag`),_=h(`a-space`),y=h(`a-popconfirm`),J=h(`a-table`),Q=h(`a-card`),$=h(`a-empty`),ee=h(`a-spin`);return s(),v(l,null,[f(C,{title:`دسته‌بندی‌ها`,subtitle:`ترتیب دسته‌ها همان ترتیب نمایش در سایت است`},{default:o(()=>[f(m,{to:{name:`category-new`}},{default:o(()=>[f(c,{type:`primary`},{icon:o(()=>[f(e,{name:`add`,size:16})]),default:o(()=>[i[0]||=p(` دسته جدید `,-1)]),_:1})]),_:1})]),_:1}),f(Q,{class:`!hidden lg:!block`,"body-style":{padding:0}},{default:o(()=>[f(J,{columns:Z,"data-source":K.value,loading:q.value,"row-key":`id`,pagination:!1,scroll:{x:800}},{bodyCell:o(({column:n,record:r,index:i})=>[n.key===`cover`?(s(),v(l,{key:0},[r.coverImage?(s(),v(`img`,{key:0,src:r.coverImage.url,alt:``,class:`size-12 rounded object-cover`},null,8,w)):d(``,!0)],64)):n.key===`name`?(s(),v(l,{key:1},[f(m,{to:{name:`category-edit`,params:{id:r.id}},class:`font-bold`},{default:o(()=>[p(t(r.name),1)]),_:2},1032,[`to`]),b(`div`,T,t(r.slug),1)],64)):n.key===`products`?(s(),u(m,{key:2,to:{name:`products`,query:{categoryId:r.id}}},{default:o(()=>[p(t(a(x)(r.productCount)),1)]),_:2},1032,[`to`])):n.key===`status`?(s(),u(g,{key:3,color:r.isPublished?`green`:`default`},{default:o(()=>[p(t(r.isPublished?`منتشرشده`:`مخفی`),1)]),_:2},1032,[`color`])):n.key===`order`?(s(),u(_,{key:4,size:4},{default:o(()=>[f(c,{size:`small`,disabled:i===0,onClick:e=>Y(i,-1)},{icon:o(()=>[f(e,{name:`arrow-up`,size:16})]),_:1},8,[`disabled`,`onClick`]),f(c,{size:`small`,disabled:i===K.value.length-1,onClick:e=>Y(i,1)},{icon:o(()=>[f(e,{name:`arrow-down`,size:16})]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)):n.key===`actions`?(s(),u(_,{key:5,size:4},{default:o(()=>[f(m,{to:{name:`category-edit`,params:{id:r.id}}},{default:o(()=>[f(c,{size:`small`},{icon:o(()=>[f(e,{name:`edit-2`,size:16})]),_:1})]),_:1},8,[`to`]),b(`a`,{href:`${a(S)}/categories/${r.slug}`,target:`_blank`,rel:`noopener`},[f(c,{size:`small`,title:`مشاهده در سایت`},{icon:o(()=>[f(e,{name:`export`,size:16})]),_:1})],8,E),a(G).isAdmin?(s(),u(y,{key:0,title:`این دسته حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>X(r)},{default:o(()=>[f(c,{size:`small`,danger:``,disabled:r.productCount>0,title:r.productCount>0?`ابتدا محصولات این دسته را حذف یا جابه‌جا کنید`:`حذف`},{icon:o(()=>[f(e,{name:`trash`,size:16})]),_:1},8,[`disabled`,`title`])]),_:2},1032,[`onConfirm`])):d(``,!0)]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`,`loading`])]),_:1}),b(`div`,D,[f(ee,{spinning:q.value},{default:o(()=>[!K.value.length&&!q.value?(s(),u($,{key:0,description:`دسته‌بندی ثبت نشده است`,class:`py-12`})):(s(),v(`div`,O,[(s(!0),v(l,null,r(K.value,(n,r)=>(s(),v(`div`,{key:n.id,class:`bg-white rounded-xl border border-slate-200/80 p-3.5 shadow-2xs transition`},[b(`div`,k,[n.coverImage?(s(),v(`img`,{key:0,src:n.coverImage.url,alt:``,class:`size-14 rounded-lg object-cover shrink-0 border border-slate-100 bg-slate-50`},null,8,A)):(s(),v(`div`,j,[f(e,{name:`category`,size:22})])),b(`div`,M,[b(`div`,N,[f(m,{to:{name:`category-edit`,params:{id:n.id}},class:`font-bold text-[14px] text-slate-800 hover:text-orange-600 line-clamp-1`},{default:o(()=>[p(t(n.name),1)]),_:2},1032,[`to`]),b(`span`,P,t(n.code),1)]),b(`div`,F,[f(m,{to:{name:`products`,query:{categoryId:n.id}},class:`inline-flex items-center gap-1 text-orange-600 font-bold bg-orange-50 px-2 py-0.5 rounded-full`},{default:o(()=>[p(t(a(x)(n.productCount))+` محصول `,1)]),_:2},1032,[`to`]),f(g,{color:n.isPublished?`green`:`default`,class:`!m-0 !text-[10px]`},{default:o(()=>[p(t(n.isPublished?`منتشرشده`:`مخفی`),1)]),_:2},1032,[`color`])])])]),b(`div`,I,[b(`div`,L,[i[1]||=b(`span`,{class:`text-[11px] text-slate-400 me-1`},`ترتیب:`,-1),b(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===0,onClick:e=>Y(r,-1)},[f(e,{name:`arrow-up`,size:16})],8,R),b(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===K.value.length-1,onClick:e=>Y(r,1)},[f(e,{name:`arrow-down`,size:16})],8,z)]),b(`div`,B,[f(m,{to:{name:`category-edit`,params:{id:n.id}}},{default:o(()=>[b(`button`,V,[f(e,{name:`edit-2`,size:16})])]),_:1},8,[`to`]),b(`a`,{href:`${a(S)}/categories/${n.slug}`,target:`_blank`,rel:`noopener`},[b(`button`,U,[f(e,{name:`export`,size:16})])],8,H),a(G).isAdmin?(s(),u(y,{key:0,title:`این دسته حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>X(n)},{default:o(()=>[b(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-rose-500 bg-rose-50 hover:bg-rose-100 disabled:opacity-30 disabled:pointer-events-none active:bg-rose-200 transition`,disabled:n.productCount>0,title:n.productCount>0?`ابتدا محصولات این دسته را حذف کنید`:`حذف`},[f(e,{name:`trash`,size:16})],8,W)]),_:2},1032,[`onConfirm`])):d(``,!0)])])]))),128))]))]),_:1},8,[`spinning`]),f(m,{to:{name:`category-new`},class:`fixed start-4 bottom-[72px] z-30 flex items-center gap-2 px-4 py-2.5 rounded-full bg-linear-to-r from-[#ff5a00] to-[#ff7a29] text-white font-bold text-xs shadow-lg shadow-orange-500/30 active:scale-95 transition`},{default:o(()=>[f(e,{name:`add`,size:18}),i[2]||=b(`span`,null,`دسته جدید`,-1)]),_:1})])],64)}}});export{G as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/CategoryEditPage-DezgJrn9.js b/apps/admin/dist/assets/CategoryEditPage-B4VYwreC.js similarity index 96% rename from apps/admin/dist/assets/CategoryEditPage-DezgJrn9.js rename to apps/admin/dist/assets/CategoryEditPage-B4VYwreC.js index a227fcb..27ef79c 100644 --- a/apps/admin/dist/assets/CategoryEditPage-DezgJrn9.js +++ b/apps/admin/dist/assets/CategoryEditPage-B4VYwreC.js @@ -1 +1 @@ -import{_ as e,t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Ct as r,It as i,Lt as a,Nt as o,Rt as s,Tt as c,_t as l,a as u,ct as d,ft as f,gt as p,ht as m,i as h,kt as g,lt as _,n as v,o as y,ot as b,pt as x,st as S,ut as C}from"./index-BCImsMjH.js";import{t as w}from"./PageHeader-vyrIuh7P.js";import{n as T,t as E}from"./FormField-D95xTO-F.js";import{t as D}from"./IconSelect-n5KsEDDN.js";import{n as ee,t as te}from"./ListEditor-DF9sShFo.js";import{t as ne}from"./slug-Flyc3fOh.js";var re={class:`lg:hidden mb-4 overflow-x-auto pb-1 scrollbar-none`},ie={class:`flex items-center gap-1.5 min-w-max bg-gray-100 p-1 rounded-xl`},O={class:`rounded-full bg-gray-200 px-1.5 py-0.2 text-[10px]`},k={class:`grid gap-6 xl:grid-cols-3`},A={class:`space-y-6 xl:col-span-2`},j={class:`grid gap-x-4 md:grid-cols-2`},M={class:`grid gap-x-4 md:grid-cols-2`},N={class:`space-y-6`},P={class:`ms-2`},F={class:`lg:hidden fixed bottom-0 inset-x-0 z-30 border-t border-gray-200 bg-white/95 px-4 py-2.5 backdrop-blur-md shadow-lg flex items-center justify-between gap-3`},I={class:`flex items-center gap-2`},L={class:`text-xs font-medium text-gray-700`},R={class:`flex items-center gap-2`},z=[`href`],B=l({__name:`CategoryEditPage`,setup(l){let B=u(),V=y(),H=_(()=>B.params.id?Number(B.params.id):null),{model:U,validate:W,handleError:G,reset:K}=T(e,{slug:``,code:``,name:``,nameEn:``,shortDesc:``,fullDesc:``,icon:``,coverImageId:null,isPublished:!0,seoTitle:``,seoDescription:``,groups:[]}),q=i(null),J=i({}),Y=i(!1),X=i(!1);async function Z(){if(H.value){Y.value=!0;try{let e=await v(`/admin/categories/${H.value}`);K({slug:e.slug,code:e.code,name:e.name,nameEn:e.nameEn,shortDesc:e.shortDesc,fullDesc:e.fullDesc,icon:e.icon,coverImageId:e.coverImageId,isPublished:e.isPublished,seoTitle:e.seoTitle,seoDescription:e.seoDescription,groups:e.groups.map(e=>({id:e.id,slug:e.slug,name:e.name,desc:e.desc}))}),q.value=e.coverImage,J.value=Object.fromEntries(e.groups.map(e=>[e.id,e.productCount]))}catch(e){b.error(h(e))}finally{Y.value=!1}}}function ae(e){q.value=e,U.value.coverImageId=e.id}async function Q(){let e=W();if(e){X.value=!0;try{let t=await v(H.value?`/admin/categories/${H.value}`:`/admin/categories`,{method:H.value?`PUT`:`POST`,body:e});b.success(`دسته ذخیره شد`),H.value||await V.replace({name:`category-edit`,params:{id:t.id}}),await Z()}catch(e){G(e)}finally{X.value=!1}}}let oe=()=>({slug:``,name:``,desc:``}),se=e=>{let t=e.id?J.value[e.id]:0;return t?`${e.name} (${t} محصول)`:e.name},$=i(`main`);return r(Z),(e,r)=>{let i=g(`a-button`),l=g(`a-input`),u=g(`a-textarea`),h=g(`a-card`),_=g(`a-switch`),v=g(`a-form`),y=g(`a-spin`);return c(),x(d,null,[p(w,{title:H.value?`ویرایش دسته: ${a(U).name}`:`دسته جدید`,back:`/categories`},{default:o(()=>[p(i,{type:`primary`,loading:X.value,onClick:Q},{icon:o(()=>[p(t,{name:`save-2`,size:16})]),default:o(()=>[r[18]||=m(` ذخیره `,-1)]),_:1},8,[`loading`])]),_:1},8,[`title`]),C(`div`,re,[C(`div`,ie,[C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all`,$.value===`main`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[0]||=e=>$.value=`main`},` اطلاعات اصلی `,2),C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all flex items-center gap-1`,$.value===`groups`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[1]||=e=>$.value=`groups`},[r[19]||=C(`span`,null,`زیرگروه‌ها`,-1),C(`span`,O,n(a(U).groups.length),1)],2),C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all`,$.value===`media`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[2]||=e=>$.value=`media`},` کاور و آیکون `,2),C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all`,$.value===`seo`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[3]||=e=>$.value=`seo`},` سئو و انتشار `,2)])]),p(y,{spinning:Y.value},{default:o(()=>[p(v,{layout:`vertical`,class:`pb-20 lg:pb-0`,onSubmit:S(Q,[`prevent`])},{default:o(()=>[C(`div`,k,[C(`div`,A,[p(h,{title:`اطلاعات اصلی`,class:s($.value!==`main`&&`max-lg:hidden`)},{default:o(()=>[C(`div`,j,[p(E,{path:`name`,label:`نام دسته`,required:``},{default:o(()=>[p(l,{value:a(U).name,"onUpdate:value":r[4]||=e=>a(U).name=e},null,8,[`value`])]),_:1}),p(E,{path:`nameEn`,label:`نام انگلیسی`,hint:`زیر نام دسته نمایش داده می‌شود`},{default:o(()=>[p(l,{value:a(U).nameEn,"onUpdate:value":r[5]||=e=>a(U).nameEn=e,class:`ltr-input`},null,8,[`value`])]),_:1}),p(E,{path:`slug`,label:`اسلاگ (آدرس صفحه)`,hint:`آدرس: /categories/${a(U).slug||`...`}`,required:``},{default:o(()=>[p(l,{value:a(U).slug,"onUpdate:value":r[7]||=e=>a(U).slug=e,class:`ltr-input`},{suffix:o(()=>[C(`a`,{class:`text-xs`,onClick:r[6]||=e=>a(U).slug=a(ne)(a(U).nameEn)},`ساخت از نام انگلیسی`)]),_:1},8,[`value`])]),_:1},8,[`hint`]),p(E,{path:`code`,label:`کد دسته`,required:``},{default:o(()=>[p(l,{value:a(U).code,"onUpdate:value":r[8]||=e=>a(U).code=e,class:`ltr-input`,placeholder:`IP-C09`},null,8,[`value`])]),_:1}),p(E,{path:`shortDesc`,label:`توضیح کوتاه`,class:`md:col-span-2`},{default:o(()=>[p(u,{value:a(U).shortDesc,"onUpdate:value":r[9]||=e=>a(U).shortDesc=e,"auto-size":{minRows:2,maxRows:4}},null,8,[`value`])]),_:1}),p(E,{path:`fullDesc`,label:`توضیح کامل (بالای صفحه دسته)`,class:`md:col-span-2`},{default:o(()=>[p(u,{value:a(U).fullDesc,"onUpdate:value":r[10]||=e=>a(U).fullDesc=e,"auto-size":{minRows:3,maxRows:8}},null,8,[`value`])]),_:1})])]),_:1},8,[`class`]),p(h,{title:`زیرگروه‌ها`,"body-style":{background:`#fafafa`},class:s($.value!==`groups`&&`max-lg:hidden`)},{default:o(()=>[r[20]||=C(`p`,{class:`mb-4 text-sm text-gray-500`},` زیرگروه‌ها در صفحه دسته به‌صورت فیلتر نمایش داده می‌شوند. با حذف یک زیرگروه، محصولات آن بدون زیرگروه می‌مانند. `,-1),p(te,{modelValue:a(U).groups,"onUpdate:modelValue":r[11]||=e=>a(U).groups=e,create:oe,"add-label":`افزودن زیرگروه`,"item-title":se},{default:o(({item:e,index:t})=>[C(`div`,M,[p(E,{path:`groups.${t}.name`,label:`نام`,required:``},{default:o(()=>[p(l,{value:e.name,"onUpdate:value":t=>e.name=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),p(E,{path:`groups.${t}.slug`,label:`اسلاگ`,required:``},{default:o(()=>[p(l,{value:e.slug,"onUpdate:value":t=>e.slug=t,class:`ltr-input`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),p(E,{path:`groups.${t}.desc`,label:`توضیح`,class:`md:col-span-2`},{default:o(()=>[p(u,{value:e.desc,"onUpdate:value":t=>e.desc=t,"auto-size":{minRows:1,maxRows:4}},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`])]),_:1},8,[`class`])]),C(`div`,N,[p(h,{title:`انتشار`,class:s($.value!==`seo`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`isPublished`},{default:o(()=>[p(_,{checked:a(U).isPublished,"onUpdate:checked":r[12]||=e=>a(U).isPublished=e},null,8,[`checked`]),C(`span`,P,n(a(U).isPublished?`در سایت نمایش داده می‌شود`:`مخفی`),1)]),_:1})]),_:1},8,[`class`]),p(h,{title:`تصویر کاور`,class:s($.value!==`media`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`coverImageId`},{default:o(()=>[p(ee,{url:q.value?.url,clearable:``,onPick:ae,onClear:r[13]||=e=>{q.value=null,a(U).coverImageId=null}},null,8,[`url`])]),_:1})]),_:1},8,[`class`]),p(h,{title:`آیکون`,class:s($.value!==`media`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`icon`},{default:o(()=>[p(D,{modelValue:a(U).icon,"onUpdate:modelValue":r[14]||=e=>a(U).icon=e,"allow-clear":``},null,8,[`modelValue`])]),_:1})]),_:1},8,[`class`]),p(h,{title:`سئو`,class:s($.value!==`seo`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`seoTitle`,label:`عنوان صفحه`,hint:`خالی = نام دسته`},{default:o(()=>[p(l,{value:a(U).seoTitle,"onUpdate:value":r[15]||=e=>a(U).seoTitle=e,maxlength:120,"show-count":``},null,8,[`value`])]),_:1}),p(E,{path:`seoDescription`,label:`توضیحات متا`,hint:`خالی = توضیح کامل`},{default:o(()=>[p(u,{value:a(U).seoDescription,"onUpdate:value":r[16]||=e=>a(U).seoDescription=e,maxlength:300,"show-count":``,"auto-size":{minRows:3}},null,8,[`value`])]),_:1})]),_:1},8,[`class`])])])]),_:1})]),_:1},8,[`spinning`]),C(`div`,F,[C(`div`,I,[p(_,{checked:a(U).isPublished,"onUpdate:checked":r[17]||=e=>a(U).isPublished=e,size:`small`},null,8,[`checked`]),C(`span`,L,n(a(U).isPublished?`انتشار`:`پیش‌نویس`),1)]),C(`div`,R,[a(U).slug?(c(),x(`a`,{key:0,href:`/categories/${a(U).slug}`,target:`_blank`,rel:`noopener`},[p(i,{size:`middle`,class:`!px-3`,title:`مشاهده در سایت`},{icon:o(()=>[p(t,{name:`eye`,size:16})]),_:1})],8,z)):f(``,!0),p(i,{type:`primary`,size:`middle`,class:`!font-bold !px-5`,loading:X.value,onClick:Q},{icon:o(()=>[p(t,{name:`save-2`,size:16})]),default:o(()=>[r[21]||=m(` ذخیره تغییرات `,-1)]),_:1},8,[`loading`])])])],64)}}});export{B as default}; \ No newline at end of file +import{_ as e,t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Ct as r,It as i,Lt as a,Nt as o,Rt as s,Tt as c,_t as l,a as u,ct as d,ft as f,gt as p,ht as m,i as h,kt as g,lt as _,n as v,o as y,ot as b,pt as x,st as S,ut as C}from"./index-BuGK6ptM.js";import{t as w}from"./PageHeader-3Ryvg2HD.js";import{n as T,t as E}from"./FormField-CiVT7mqC.js";import{t as D}from"./IconSelect-rJLPzIXV.js";import{n as ee,t as te}from"./ListEditor-C8F91lSJ.js";import{t as ne}from"./slug-Flyc3fOh.js";var re={class:`lg:hidden mb-4 overflow-x-auto pb-1 scrollbar-none`},ie={class:`flex items-center gap-1.5 min-w-max bg-gray-100 p-1 rounded-xl`},O={class:`rounded-full bg-gray-200 px-1.5 py-0.2 text-[10px]`},k={class:`grid gap-6 xl:grid-cols-3`},A={class:`space-y-6 xl:col-span-2`},j={class:`grid gap-x-4 md:grid-cols-2`},M={class:`grid gap-x-4 md:grid-cols-2`},N={class:`space-y-6`},P={class:`ms-2`},F={class:`lg:hidden fixed bottom-0 inset-x-0 z-30 border-t border-gray-200 bg-white/95 px-4 py-2.5 backdrop-blur-md shadow-lg flex items-center justify-between gap-3`},I={class:`flex items-center gap-2`},L={class:`text-xs font-medium text-gray-700`},R={class:`flex items-center gap-2`},z=[`href`],B=l({__name:`CategoryEditPage`,setup(l){let B=u(),V=y(),H=_(()=>B.params.id?Number(B.params.id):null),{model:U,validate:W,handleError:G,reset:K}=T(e,{slug:``,code:``,name:``,nameEn:``,shortDesc:``,fullDesc:``,icon:``,coverImageId:null,isPublished:!0,seoTitle:``,seoDescription:``,groups:[]}),q=i(null),J=i({}),Y=i(!1),X=i(!1);async function Z(){if(H.value){Y.value=!0;try{let e=await v(`/admin/categories/${H.value}`);K({slug:e.slug,code:e.code,name:e.name,nameEn:e.nameEn,shortDesc:e.shortDesc,fullDesc:e.fullDesc,icon:e.icon,coverImageId:e.coverImageId,isPublished:e.isPublished,seoTitle:e.seoTitle,seoDescription:e.seoDescription,groups:e.groups.map(e=>({id:e.id,slug:e.slug,name:e.name,desc:e.desc}))}),q.value=e.coverImage,J.value=Object.fromEntries(e.groups.map(e=>[e.id,e.productCount]))}catch(e){b.error(h(e))}finally{Y.value=!1}}}function ae(e){q.value=e,U.value.coverImageId=e.id}async function Q(){let e=W();if(e){X.value=!0;try{let t=await v(H.value?`/admin/categories/${H.value}`:`/admin/categories`,{method:H.value?`PUT`:`POST`,body:e});b.success(`دسته ذخیره شد`),H.value||await V.replace({name:`category-edit`,params:{id:t.id}}),await Z()}catch(e){G(e)}finally{X.value=!1}}}let oe=()=>({slug:``,name:``,desc:``}),se=e=>{let t=e.id?J.value[e.id]:0;return t?`${e.name} (${t} محصول)`:e.name},$=i(`main`);return r(Z),(e,r)=>{let i=g(`a-button`),l=g(`a-input`),u=g(`a-textarea`),h=g(`a-card`),_=g(`a-switch`),v=g(`a-form`),y=g(`a-spin`);return c(),x(d,null,[p(w,{title:H.value?`ویرایش دسته: ${a(U).name}`:`دسته جدید`,back:`/categories`},{default:o(()=>[p(i,{type:`primary`,loading:X.value,onClick:Q},{icon:o(()=>[p(t,{name:`save-2`,size:16})]),default:o(()=>[r[18]||=m(` ذخیره `,-1)]),_:1},8,[`loading`])]),_:1},8,[`title`]),C(`div`,re,[C(`div`,ie,[C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all`,$.value===`main`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[0]||=e=>$.value=`main`},` اطلاعات اصلی `,2),C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all flex items-center gap-1`,$.value===`groups`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[1]||=e=>$.value=`groups`},[r[19]||=C(`span`,null,`زیرگروه‌ها`,-1),C(`span`,O,n(a(U).groups.length),1)],2),C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all`,$.value===`media`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[2]||=e=>$.value=`media`},` کاور و آیکون `,2),C(`button`,{type:`button`,class:s([`rounded-lg px-3 py-1.5 text-xs font-bold transition-all`,$.value===`seo`?`bg-white text-orange-600 shadow-sm`:`text-gray-600`]),onClick:r[3]||=e=>$.value=`seo`},` سئو و انتشار `,2)])]),p(y,{spinning:Y.value},{default:o(()=>[p(v,{layout:`vertical`,class:`pb-20 lg:pb-0`,onSubmit:S(Q,[`prevent`])},{default:o(()=>[C(`div`,k,[C(`div`,A,[p(h,{title:`اطلاعات اصلی`,class:s($.value!==`main`&&`max-lg:hidden`)},{default:o(()=>[C(`div`,j,[p(E,{path:`name`,label:`نام دسته`,required:``},{default:o(()=>[p(l,{value:a(U).name,"onUpdate:value":r[4]||=e=>a(U).name=e},null,8,[`value`])]),_:1}),p(E,{path:`nameEn`,label:`نام انگلیسی`,hint:`زیر نام دسته نمایش داده می‌شود`},{default:o(()=>[p(l,{value:a(U).nameEn,"onUpdate:value":r[5]||=e=>a(U).nameEn=e,class:`ltr-input`},null,8,[`value`])]),_:1}),p(E,{path:`slug`,label:`اسلاگ (آدرس صفحه)`,hint:`آدرس: /categories/${a(U).slug||`...`}`,required:``},{default:o(()=>[p(l,{value:a(U).slug,"onUpdate:value":r[7]||=e=>a(U).slug=e,class:`ltr-input`},{suffix:o(()=>[C(`a`,{class:`text-xs`,onClick:r[6]||=e=>a(U).slug=a(ne)(a(U).nameEn)},`ساخت از نام انگلیسی`)]),_:1},8,[`value`])]),_:1},8,[`hint`]),p(E,{path:`code`,label:`کد دسته`,required:``},{default:o(()=>[p(l,{value:a(U).code,"onUpdate:value":r[8]||=e=>a(U).code=e,class:`ltr-input`,placeholder:`IP-C09`},null,8,[`value`])]),_:1}),p(E,{path:`shortDesc`,label:`توضیح کوتاه`,class:`md:col-span-2`},{default:o(()=>[p(u,{value:a(U).shortDesc,"onUpdate:value":r[9]||=e=>a(U).shortDesc=e,"auto-size":{minRows:2,maxRows:4}},null,8,[`value`])]),_:1}),p(E,{path:`fullDesc`,label:`توضیح کامل (بالای صفحه دسته)`,class:`md:col-span-2`},{default:o(()=>[p(u,{value:a(U).fullDesc,"onUpdate:value":r[10]||=e=>a(U).fullDesc=e,"auto-size":{minRows:3,maxRows:8}},null,8,[`value`])]),_:1})])]),_:1},8,[`class`]),p(h,{title:`زیرگروه‌ها`,"body-style":{background:`#fafafa`},class:s($.value!==`groups`&&`max-lg:hidden`)},{default:o(()=>[r[20]||=C(`p`,{class:`mb-4 text-sm text-gray-500`},` زیرگروه‌ها در صفحه دسته به‌صورت فیلتر نمایش داده می‌شوند. با حذف یک زیرگروه، محصولات آن بدون زیرگروه می‌مانند. `,-1),p(te,{modelValue:a(U).groups,"onUpdate:modelValue":r[11]||=e=>a(U).groups=e,create:oe,"add-label":`افزودن زیرگروه`,"item-title":se},{default:o(({item:e,index:t})=>[C(`div`,M,[p(E,{path:`groups.${t}.name`,label:`نام`,required:``},{default:o(()=>[p(l,{value:e.name,"onUpdate:value":t=>e.name=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),p(E,{path:`groups.${t}.slug`,label:`اسلاگ`,required:``},{default:o(()=>[p(l,{value:e.slug,"onUpdate:value":t=>e.slug=t,class:`ltr-input`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),p(E,{path:`groups.${t}.desc`,label:`توضیح`,class:`md:col-span-2`},{default:o(()=>[p(u,{value:e.desc,"onUpdate:value":t=>e.desc=t,"auto-size":{minRows:1,maxRows:4}},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`])]),_:1},8,[`class`])]),C(`div`,N,[p(h,{title:`انتشار`,class:s($.value!==`seo`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`isPublished`},{default:o(()=>[p(_,{checked:a(U).isPublished,"onUpdate:checked":r[12]||=e=>a(U).isPublished=e},null,8,[`checked`]),C(`span`,P,n(a(U).isPublished?`در سایت نمایش داده می‌شود`:`مخفی`),1)]),_:1})]),_:1},8,[`class`]),p(h,{title:`تصویر کاور`,class:s($.value!==`media`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`coverImageId`},{default:o(()=>[p(ee,{url:q.value?.url,clearable:``,onPick:ae,onClear:r[13]||=e=>{q.value=null,a(U).coverImageId=null}},null,8,[`url`])]),_:1})]),_:1},8,[`class`]),p(h,{title:`آیکون`,class:s($.value!==`media`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`icon`},{default:o(()=>[p(D,{modelValue:a(U).icon,"onUpdate:modelValue":r[14]||=e=>a(U).icon=e,"allow-clear":``},null,8,[`modelValue`])]),_:1})]),_:1},8,[`class`]),p(h,{title:`سئو`,class:s($.value!==`seo`&&`max-lg:hidden`)},{default:o(()=>[p(E,{path:`seoTitle`,label:`عنوان صفحه`,hint:`خالی = نام دسته`},{default:o(()=>[p(l,{value:a(U).seoTitle,"onUpdate:value":r[15]||=e=>a(U).seoTitle=e,maxlength:120,"show-count":``},null,8,[`value`])]),_:1}),p(E,{path:`seoDescription`,label:`توضیحات متا`,hint:`خالی = توضیح کامل`},{default:o(()=>[p(u,{value:a(U).seoDescription,"onUpdate:value":r[16]||=e=>a(U).seoDescription=e,maxlength:300,"show-count":``,"auto-size":{minRows:3}},null,8,[`value`])]),_:1})]),_:1},8,[`class`])])])]),_:1})]),_:1},8,[`spinning`]),C(`div`,F,[C(`div`,I,[p(_,{checked:a(U).isPublished,"onUpdate:checked":r[17]||=e=>a(U).isPublished=e,size:`small`},null,8,[`checked`]),C(`span`,L,n(a(U).isPublished?`انتشار`:`پیش‌نویس`),1)]),C(`div`,R,[a(U).slug?(c(),x(`a`,{key:0,href:`/categories/${a(U).slug}`,target:`_blank`,rel:`noopener`},[p(i,{size:`middle`,class:`!px-3`,title:`مشاهده در سایت`},{icon:o(()=>[p(t,{name:`eye`,size:16})]),_:1})],8,z)):f(``,!0),p(i,{type:`primary`,size:`middle`,class:`!font-bold !px-5`,loading:X.value,onClick:Q},{icon:o(()=>[p(t,{name:`save-2`,size:16})]),default:o(()=>[r[21]||=m(` ذخیره تغییرات `,-1)]),_:1},8,[`loading`])])])],64)}}});export{B as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/DashboardPage-D3Dg5cDP.js b/apps/admin/dist/assets/DashboardPage-Do-v_tLH.js similarity index 98% rename from apps/admin/dist/assets/DashboardPage-D3Dg5cDP.js rename to apps/admin/dist/assets/DashboardPage-Do-v_tLH.js index 6db8357..3831aec 100644 --- a/apps/admin/dist/assets/DashboardPage-D3Dg5cDP.js +++ b/apps/admin/dist/assets/DashboardPage-Do-v_tLH.js @@ -1 +1 @@ -import{i as e,t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Ct as ee,Dt as r,It as i,Lt as a,Nt as o,Rt as s,Tt as c,_t as l,ct as u,dt as d,ft as te,gt as f,ht as p,i as m,kt as h,lt as g,n as _,ot as v,pt as y,t as b,ut as x,zt as ne}from"./index-BCImsMjH.js";import{a as S,n as re,r as C}from"./format-NkL3G1Uq.js";import{t as w}from"./PageHeader-vyrIuh7P.js";var T={class:`flex items-center gap-2`},E={class:`grid grid-cols-2 gap-3 lg:gap-4 lg:grid-cols-5`},D={class:`flex items-center justify-between`},O={class:`flex size-10 items-center justify-center rounded-xl bg-orange-50 text-orange-600`},k={class:`mt-2 text-xs text-gray-400`},A={class:`flex items-center justify-between`},j={class:`flex size-10 items-center justify-center rounded-xl bg-amber-50 text-amber-600`},M={class:`flex items-center justify-between`},N={class:`flex size-10 items-center justify-center rounded-xl bg-blue-50 text-blue-600`},P={class:`flex items-center justify-between`},F={class:`mt-2 text-xs text-gray-400`},I={class:`flex items-center justify-between`},L={class:`flex size-10 items-center justify-center rounded-xl bg-purple-50 text-purple-600`},R={class:`mt-6 grid gap-6 lg:grid-cols-12`},z={class:`grid grid-cols-2 gap-3 sm:grid-cols-4`},B={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-orange-200 hover:bg-orange-50/50 hover:shadow-sm`},V={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-orange-600 shadow-sm`},H={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-blue-200 hover:bg-blue-50/50 hover:shadow-sm`},U={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-blue-600 shadow-sm`},W={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-emerald-200 hover:bg-emerald-50/50 hover:shadow-sm`},G={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-emerald-600 shadow-sm`},K={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-purple-200 hover:bg-purple-50/50 hover:shadow-sm`},q={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-purple-600 shadow-sm`},J={class:`flex items-center gap-4`},Y={class:`space-y-1.5 text-xs`},X={class:`font-bold text-gray-800`},ie={class:`text-gray-500`},ae={key:0,class:`text-emerald-600 font-medium`},oe={key:1,class:`text-amber-600 font-medium`},se={class:`mt-6 grid gap-6 lg:grid-cols-12`},ce={key:0,class:`py-8`},le={key:1,class:`space-y-3.5 pt-1`},ue={class:`flex items-center justify-between text-xs font-medium`},de={class:`text-gray-700`},fe={class:`font-mono text-gray-500`},pe={class:`grid grid-cols-3 gap-2 text-center`},me={class:`rounded-lg bg-orange-50 p-2.5`},he={class:`text-lg font-black text-orange-600`},ge={class:`rounded-lg bg-blue-50 p-2.5`},_e={class:`text-lg font-black text-blue-600`},ve={class:`rounded-lg bg-gray-50 p-2.5`},ye={class:`text-lg font-black text-gray-600`},be={class:`mt-5 border-t border-gray-100 pt-4`},xe={class:`flex h-28 items-end justify-between gap-1.5 sm:gap-2 pt-4`},Se={key:0,class:`text-[9px] font-bold text-orange-600 mb-0.5`},Ce={key:1,class:`text-[9px] text-transparent mb-0.5 select-none`},we={class:`relative flex w-full justify-center`},Te={class:`text-[10px] text-gray-400 truncate max-w-[36px]`},Ee={class:`mt-6 grid gap-6 lg:grid-cols-2`},De={class:`text-left text-xs text-gray-400`},Oe={class:`mt-1 font-mono text-[11px]`},ke={class:`text-sm`},Ae={key:0,class:`text-gray-600`},je={class:`mt-0.5 text-xs text-gray-400`},Z=l({__name:`DashboardPage`,setup(l){b();let Z=i(null),Q=i(!0),Me=g(()=>Z.value?.categoryStats?.length?Math.max(...Z.value.categoryStats.map(e=>e.count),1):1),Ne=g(()=>Z.value?.trend?.length?Math.max(...Z.value.trend.map(e=>e.messages),1):1),Pe=g(()=>Z.value?.sectionsSummary?.total?Math.round(Z.value.sectionsSummary.visible/Z.value.sectionsSummary.total*100):100);return ee(async()=>{Q.value=!0;try{Z.value=await _(`/admin/dashboard`)}catch(e){v.error(m(e))}finally{Q.value=!1}}),(ee,i)=>{let l=h(`a-button`),m=h(`RouterLink`),g=h(`a-statistic`),_=h(`a-card`),v=h(`a-progress`),b=h(`a-empty`),Fe=h(`a-tooltip`),Ie=h(`a-list-item-meta`),Le=h(`a-tag`),$=h(`a-list-item`),Re=h(`a-list`),ze=h(`a-timeline-item`),Be=h(`a-timeline`),Ve=h(`a-spin`);return c(),y(u,null,[f(w,{title:`داشبورد مدیریت`,subtitle:`نمای کلی آمار، نمودارها، پیام‌ها و فعالیت‌های اخیر سامانه`},{default:o(()=>[x(`div`,T,[f(m,{to:{name:`sections`}},{default:o(()=>[f(l,null,{icon:o(()=>[f(t,{name:`row-vertical`,size:16})]),default:o(()=>[i[0]||=p(` مدیریت بخش‌ها `,-1)]),_:1})]),_:1}),f(m,{to:{name:`product-new`}},{default:o(()=>[f(l,{type:`primary`},{icon:o(()=>[f(t,{name:`add`,size:16})]),default:o(()=>[i[1]||=p(` محصول جدید `,-1)]),_:1})]),_:1})])]),_:1}),f(Ve,{spinning:Q.value},{default:o(()=>[x(`div`,E,[f(m,{to:{name:`products`},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,D,[f(g,{title:`کل محصولات`,value:a(C)(Z.value?.products??0)},null,8,[`value`]),x(`div`,O,[f(t,{name:`bag-2`,size:20})])]),x(`div`,k,n(a(C)((Z.value?.products??0)-(Z.value?.draftProducts??0)))+` محصول فعال روی سایت `,1)]),_:1})]),_:1}),f(m,{to:{name:`products`,query:{status:`draft`}},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,A,[f(g,{title:`پیش‌نویس‌ها`,value:a(C)(Z.value?.draftProducts??0)},null,8,[`value`]),x(`div`,j,[f(t,{name:`document-text`,size:20})])]),i[2]||=x(`div`,{class:`mt-2 text-xs text-gray-400`},`نیاز به بازبینی و انتشار`,-1)]),_:1})]),_:1}),f(m,{to:{name:`categories`},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,M,[f(g,{title:`دسته‌بندی‌ها`,value:a(C)(Z.value?.categories??0)},null,8,[`value`]),x(`div`,N,[f(t,{name:`category`,size:20})])]),i[3]||=x(`div`,{class:`mt-2 text-xs text-gray-400`},`شاخه‌های تجهیزات ایمنی`,-1)]),_:1})]),_:1}),f(m,{to:{name:`messages`,query:{status:`NEW`}},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,P,[f(g,{title:`پیام‌های جدید`,value:a(C)(Z.value?.newMessages??0),"value-style":Z.value?.newMessages?{color:`#ff5a00`,fontWeight:`bold`}:void 0},null,8,[`value`,`value-style`]),x(`div`,{class:s([`flex size-10 items-center justify-center rounded-xl`,Z.value?.newMessages?`bg-orange-100 text-orange-600 animate-pulse`:`bg-gray-100 text-gray-500`])},[f(t,{name:`sms`,size:20})],2)]),x(`div`,F,` از مجموع `+n(a(C)(Z.value?.messageBreakdown?.total??0))+` پیام `,1)]),_:1})]),_:1}),f(m,{to:{name:`media`},class:`max-lg:col-span-2 active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,I,[f(g,{title:`رسانه‌ها و تصاویر`,value:a(C)(Z.value?.media??0)},null,8,[`value`]),x(`div`,L,[f(t,{name:`gallery`,size:20})])]),i[4]||=x(`div`,{class:`mt-2 text-xs text-gray-400`},`تصاویر بهینه‌شده WebP`,-1)]),_:1})]),_:1})]),x(`div`,R,[f(_,{title:`دسترسی‌های سریع`,class:`lg:col-span-8`},{default:o(()=>[x(`div`,z,[f(m,{to:{name:`product-new`},class:`block`},{default:o(()=>[x(`div`,B,[x(`div`,V,[f(t,{name:`add`,size:22})]),i[5]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`افزودن محصول`,-1),i[6]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`کالای ایمنی جدید`,-1)])]),_:1}),f(m,{to:{name:`category-new`},class:`block`},{default:o(()=>[x(`div`,H,[x(`div`,U,[f(t,{name:`folder-add`,size:22})]),i[7]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`دسته‌بندی جدید`,-1),i[8]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`گروه محصولات`,-1)])]),_:1}),f(m,{to:{name:`sections`},class:`block`},{default:o(()=>[x(`div`,W,[x(`div`,G,[f(t,{name:`row-vertical`,size:22})]),i[9]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`بخش‌های سایت`,-1),i[10]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`نمایش یا مخفی‌سازی`,-1)])]),_:1}),f(m,{to:{name:`media`},class:`block`},{default:o(()=>[x(`div`,K,[x(`div`,q,[f(t,{name:`gallery-add`,size:22})]),i[11]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`آپلود رسانه`,-1),i[12]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`تصاویر و اسناد`,-1)])]),_:1})])]),_:1}),f(_,{title:`وضعیت بخش‌های صفحه اصلی`,class:`lg:col-span-4`},{extra:o(()=>[f(m,{to:{name:`sections`},class:`text-xs text-orange-600 hover:underline`},{default:o(()=>[...i[13]||=[p(` مدیریت `,-1)]]),_:1})]),default:o(()=>[x(`div`,J,[f(v,{type:`circle`,percent:Pe.value,size:72,"stroke-color":{"0%":`#ff8a3d`,"100%":`#ff5a00`}},null,8,[`percent`]),x(`div`,Y,[x(`div`,X,n(a(C)(Z.value?.sectionsSummary?.visible??0))+` بخش از `+n(a(C)(Z.value?.sectionsSummary?.total??12))+` فعال `,1),x(`div`,ie,[(Z.value?.sectionsSummary?.hidden??0)===0?(c(),y(`span`,ae,` تمامی بخش‌های سایت در حال نمایش هستند `)):(c(),y(`span`,oe,n(a(C)(Z.value?.sectionsSummary?.hidden??0))+` بخش غیرفعال / مخفی `,1))]),i[14]||=x(`div`,{class:`text-[11px] text-gray-400`},` تغییر وضعیت آنی از منوی بخش‌های سایت `,-1)])])]),_:1})]),x(`div`,se,[f(_,{title:`نمودار توزیع محصولات بر اساس دسته‌بندی`,class:`lg:col-span-7`},{default:o(()=>[Z.value?.categoryStats?.length?(c(),y(`div`,le,[(c(!0),y(u,null,r(Z.value.categoryStats,e=>(c(),y(`div`,{key:e.id,class:`space-y-1`},[x(`div`,ue,[x(`span`,de,n(e.name),1),x(`span`,fe,n(a(C)(e.count))+` محصول`,1)]),f(v,{percent:Math.round(e.count/Me.value*100),"show-info":!1,"stroke-color":{"0%":`#ffd0b5`,"100%":`#ff5a00`},size:`small`},null,8,[`percent`])]))),128))])):(c(),y(`div`,ce,[f(b,{description:`داده‌ای موجود نیست`})]))]),_:1}),f(_,{title:`تحلیل پیام‌های تماس دریافتی`,class:`lg:col-span-5`},{default:o(()=>[x(`div`,pe,[x(`div`,me,[x(`div`,he,n(a(C)(Z.value?.messageBreakdown?.new??0)),1),i[15]||=x(`div`,{class:`text-[11px] font-medium text-gray-600`},`جدید`,-1)]),x(`div`,ge,[x(`div`,_e,n(a(C)(Z.value?.messageBreakdown?.read??0)),1),i[16]||=x(`div`,{class:`text-[11px] font-medium text-gray-600`},`خوانده‌شده`,-1)]),x(`div`,ve,[x(`div`,ye,n(a(C)(Z.value?.messageBreakdown?.archived??0)),1),i[17]||=x(`div`,{class:`text-[11px] font-medium text-gray-600`},`بایگانی`,-1)])]),x(`div`,be,[i[18]||=x(`div`,{class:`mb-3 flex items-center justify-between text-xs`},[x(`span`,{class:`font-bold text-gray-700`},`روند پیام‌ها در ۷ روز اخیر`),x(`span`,{class:`text-gray-400`},`نمودار روزانه`)],-1),x(`div`,xe,[(c(!0),y(u,null,r(Z.value?.trend??[],e=>(c(),y(`div`,{key:e.date,class:`flex flex-1 flex-col items-center gap-1`},[e.messages>0?(c(),y(`span`,Se,n(a(C)(e.messages)),1)):(c(),y(`span`,Ce,`-`)),f(Fe,{title:`${e.dayName}: ${a(C)(e.messages)} پیام`},{default:o(()=>[x(`div`,we,[x(`div`,{class:s([`w-full max-w-[24px] rounded-t-md transition-all duration-300`,e.messages>0?`bg-orange-500 hover:bg-orange-600`:`bg-gray-100`]),style:ne({height:`${Math.max(Math.round(e.messages/Ne.value*72),6)}px`})},null,6)])]),_:2},1032,[`title`]),x(`span`,Te,n(e.dayName),1)]))),128))])])]),_:1})]),x(`div`,Ee,[f(_,{title:`آخرین پیام‌های تماس`},{extra:o(()=>[f(m,{to:{name:`messages`},class:`text-xs text-orange-600 hover:underline`},{default:o(()=>[...i[19]||=[p(` مشاهده همه ← `,-1)]]),_:1})]),default:o(()=>[Z.value?.recentMessages.length?(c(),d(Re,{key:1,"data-source":Z.value.recentMessages,"item-layout":`horizontal`},{renderItem:o(({item:t})=>[f($,null,{default:o(()=>[f(Ie,{title:`${t.name} — ${t.org}`,description:t.message||t.phone},null,8,[`title`,`description`]),x(`div`,De,[f(Le,{color:t.status===`NEW`?`orange`:t.status===`READ`?`blue`:`default`},{default:o(()=>[p(n(a(e)[t.status]),1)]),_:2},1032,[`color`]),x(`div`,Oe,n(a(S)(t.createdAt)),1)])]),_:2},1024)]),_:1},8,[`data-source`])):(c(),d(b,{key:0,description:`پیامی ثبت نشده است`}))]),_:1}),f(_,{title:`آخرین فعالیت‌ها و رویدادهای سیستم`},{default:o(()=>[Z.value?.recentActivity.length?(c(),d(Be,{key:1,class:`!mt-2 max-h-[360px] overflow-y-auto pe-2`},{default:o(()=>[(c(!0),y(u,null,r(Z.value.recentActivity,e=>(c(),d(ze,{key:e.id,color:e.action===`delete`?`red`:e.action===`create`?`green`:`blue`},{default:o(()=>[x(`div`,ke,[x(`b`,null,n(a(re)(e.action,e.entity)),1),e.summary?(c(),y(`span`,Ae,` — `+n(e.summary),1)):te(``,!0)]),x(`div`,je,n(e.user??`سیستم`)+` · `+n(a(S)(e.createdAt)),1)]),_:2},1032,[`color`]))),128))]),_:1})):(c(),d(b,{key:0,description:`فعالیتی ثبت نشده است`}))]),_:1})])]),_:1},8,[`spinning`])],64)}}});export{Z as default}; \ No newline at end of file +import{i as e,t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Ct as ee,Dt as r,It as i,Lt as a,Nt as o,Rt as s,Tt as c,_t as l,ct as u,dt as d,ft as te,gt as f,ht as p,i as m,kt as h,lt as g,n as _,ot as v,pt as y,t as b,ut as x,zt as ne}from"./index-BuGK6ptM.js";import{a as S,n as re,r as C}from"./format-B9MYDQJN.js";import{t as w}from"./PageHeader-3Ryvg2HD.js";var T={class:`flex items-center gap-2`},E={class:`grid grid-cols-2 gap-3 lg:gap-4 lg:grid-cols-5`},D={class:`flex items-center justify-between`},O={class:`flex size-10 items-center justify-center rounded-xl bg-orange-50 text-orange-600`},k={class:`mt-2 text-xs text-gray-400`},A={class:`flex items-center justify-between`},j={class:`flex size-10 items-center justify-center rounded-xl bg-amber-50 text-amber-600`},M={class:`flex items-center justify-between`},N={class:`flex size-10 items-center justify-center rounded-xl bg-blue-50 text-blue-600`},P={class:`flex items-center justify-between`},F={class:`mt-2 text-xs text-gray-400`},I={class:`flex items-center justify-between`},L={class:`flex size-10 items-center justify-center rounded-xl bg-purple-50 text-purple-600`},R={class:`mt-6 grid gap-6 lg:grid-cols-12`},z={class:`grid grid-cols-2 gap-3 sm:grid-cols-4`},B={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-orange-200 hover:bg-orange-50/50 hover:shadow-sm`},V={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-orange-600 shadow-sm`},H={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-blue-200 hover:bg-blue-50/50 hover:shadow-sm`},U={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-blue-600 shadow-sm`},W={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-emerald-200 hover:bg-emerald-50/50 hover:shadow-sm`},G={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-emerald-600 shadow-sm`},K={class:`flex flex-col items-center justify-center rounded-xl border border-gray-100 bg-gray-50/70 p-4 text-center transition-all hover:border-purple-200 hover:bg-purple-50/50 hover:shadow-sm`},q={class:`mb-2 flex size-11 items-center justify-center rounded-full bg-white text-purple-600 shadow-sm`},J={class:`flex items-center gap-4`},Y={class:`space-y-1.5 text-xs`},X={class:`font-bold text-gray-800`},ie={class:`text-gray-500`},ae={key:0,class:`text-emerald-600 font-medium`},oe={key:1,class:`text-amber-600 font-medium`},se={class:`mt-6 grid gap-6 lg:grid-cols-12`},ce={key:0,class:`py-8`},le={key:1,class:`space-y-3.5 pt-1`},ue={class:`flex items-center justify-between text-xs font-medium`},de={class:`text-gray-700`},fe={class:`font-mono text-gray-500`},pe={class:`grid grid-cols-3 gap-2 text-center`},me={class:`rounded-lg bg-orange-50 p-2.5`},he={class:`text-lg font-black text-orange-600`},ge={class:`rounded-lg bg-blue-50 p-2.5`},_e={class:`text-lg font-black text-blue-600`},ve={class:`rounded-lg bg-gray-50 p-2.5`},ye={class:`text-lg font-black text-gray-600`},be={class:`mt-5 border-t border-gray-100 pt-4`},xe={class:`flex h-28 items-end justify-between gap-1.5 sm:gap-2 pt-4`},Se={key:0,class:`text-[9px] font-bold text-orange-600 mb-0.5`},Ce={key:1,class:`text-[9px] text-transparent mb-0.5 select-none`},we={class:`relative flex w-full justify-center`},Te={class:`text-[10px] text-gray-400 truncate max-w-[36px]`},Ee={class:`mt-6 grid gap-6 lg:grid-cols-2`},De={class:`text-left text-xs text-gray-400`},Oe={class:`mt-1 font-mono text-[11px]`},ke={class:`text-sm`},Ae={key:0,class:`text-gray-600`},je={class:`mt-0.5 text-xs text-gray-400`},Z=l({__name:`DashboardPage`,setup(l){b();let Z=i(null),Q=i(!0),Me=g(()=>Z.value?.categoryStats?.length?Math.max(...Z.value.categoryStats.map(e=>e.count),1):1),Ne=g(()=>Z.value?.trend?.length?Math.max(...Z.value.trend.map(e=>e.messages),1):1),Pe=g(()=>Z.value?.sectionsSummary?.total?Math.round(Z.value.sectionsSummary.visible/Z.value.sectionsSummary.total*100):100);return ee(async()=>{Q.value=!0;try{Z.value=await _(`/admin/dashboard`)}catch(e){v.error(m(e))}finally{Q.value=!1}}),(ee,i)=>{let l=h(`a-button`),m=h(`RouterLink`),g=h(`a-statistic`),_=h(`a-card`),v=h(`a-progress`),b=h(`a-empty`),Fe=h(`a-tooltip`),Ie=h(`a-list-item-meta`),Le=h(`a-tag`),$=h(`a-list-item`),Re=h(`a-list`),ze=h(`a-timeline-item`),Be=h(`a-timeline`),Ve=h(`a-spin`);return c(),y(u,null,[f(w,{title:`داشبورد مدیریت`,subtitle:`نمای کلی آمار، نمودارها، پیام‌ها و فعالیت‌های اخیر سامانه`},{default:o(()=>[x(`div`,T,[f(m,{to:{name:`sections`}},{default:o(()=>[f(l,null,{icon:o(()=>[f(t,{name:`row-vertical`,size:16})]),default:o(()=>[i[0]||=p(` مدیریت بخش‌ها `,-1)]),_:1})]),_:1}),f(m,{to:{name:`product-new`}},{default:o(()=>[f(l,{type:`primary`},{icon:o(()=>[f(t,{name:`add`,size:16})]),default:o(()=>[i[1]||=p(` محصول جدید `,-1)]),_:1})]),_:1})])]),_:1}),f(Ve,{spinning:Q.value},{default:o(()=>[x(`div`,E,[f(m,{to:{name:`products`},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,D,[f(g,{title:`کل محصولات`,value:a(C)(Z.value?.products??0)},null,8,[`value`]),x(`div`,O,[f(t,{name:`bag-2`,size:20})])]),x(`div`,k,n(a(C)((Z.value?.products??0)-(Z.value?.draftProducts??0)))+` محصول فعال روی سایت `,1)]),_:1})]),_:1}),f(m,{to:{name:`products`,query:{status:`draft`}},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,A,[f(g,{title:`پیش‌نویس‌ها`,value:a(C)(Z.value?.draftProducts??0)},null,8,[`value`]),x(`div`,j,[f(t,{name:`document-text`,size:20})])]),i[2]||=x(`div`,{class:`mt-2 text-xs text-gray-400`},`نیاز به بازبینی و انتشار`,-1)]),_:1})]),_:1}),f(m,{to:{name:`categories`},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,M,[f(g,{title:`دسته‌بندی‌ها`,value:a(C)(Z.value?.categories??0)},null,8,[`value`]),x(`div`,N,[f(t,{name:`category`,size:20})])]),i[3]||=x(`div`,{class:`mt-2 text-xs text-gray-400`},`شاخه‌های تجهیزات ایمنی`,-1)]),_:1})]),_:1}),f(m,{to:{name:`messages`,query:{status:`NEW`}},class:`active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,P,[f(g,{title:`پیام‌های جدید`,value:a(C)(Z.value?.newMessages??0),"value-style":Z.value?.newMessages?{color:`#ff5a00`,fontWeight:`bold`}:void 0},null,8,[`value`,`value-style`]),x(`div`,{class:s([`flex size-10 items-center justify-center rounded-xl`,Z.value?.newMessages?`bg-orange-100 text-orange-600 animate-pulse`:`bg-gray-100 text-gray-500`])},[f(t,{name:`sms`,size:20})],2)]),x(`div`,F,` از مجموع `+n(a(C)(Z.value?.messageBreakdown?.total??0))+` پیام `,1)]),_:1})]),_:1}),f(m,{to:{name:`media`},class:`max-lg:col-span-2 active:scale-[0.98] transition-transform`},{default:o(()=>[f(_,{hoverable:``,class:`h-full`,"body-style":{padding:`14px`}},{default:o(()=>[x(`div`,I,[f(g,{title:`رسانه‌ها و تصاویر`,value:a(C)(Z.value?.media??0)},null,8,[`value`]),x(`div`,L,[f(t,{name:`gallery`,size:20})])]),i[4]||=x(`div`,{class:`mt-2 text-xs text-gray-400`},`تصاویر بهینه‌شده WebP`,-1)]),_:1})]),_:1})]),x(`div`,R,[f(_,{title:`دسترسی‌های سریع`,class:`lg:col-span-8`},{default:o(()=>[x(`div`,z,[f(m,{to:{name:`product-new`},class:`block`},{default:o(()=>[x(`div`,B,[x(`div`,V,[f(t,{name:`add`,size:22})]),i[5]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`افزودن محصول`,-1),i[6]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`کالای ایمنی جدید`,-1)])]),_:1}),f(m,{to:{name:`category-new`},class:`block`},{default:o(()=>[x(`div`,H,[x(`div`,U,[f(t,{name:`folder-add`,size:22})]),i[7]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`دسته‌بندی جدید`,-1),i[8]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`گروه محصولات`,-1)])]),_:1}),f(m,{to:{name:`sections`},class:`block`},{default:o(()=>[x(`div`,W,[x(`div`,G,[f(t,{name:`row-vertical`,size:22})]),i[9]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`بخش‌های سایت`,-1),i[10]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`نمایش یا مخفی‌سازی`,-1)])]),_:1}),f(m,{to:{name:`media`},class:`block`},{default:o(()=>[x(`div`,K,[x(`div`,q,[f(t,{name:`gallery-add`,size:22})]),i[11]||=x(`span`,{class:`text-xs font-bold text-gray-800`},`آپلود رسانه`,-1),i[12]||=x(`span`,{class:`mt-1 text-[11px] text-gray-400`},`تصاویر و اسناد`,-1)])]),_:1})])]),_:1}),f(_,{title:`وضعیت بخش‌های صفحه اصلی`,class:`lg:col-span-4`},{extra:o(()=>[f(m,{to:{name:`sections`},class:`text-xs text-orange-600 hover:underline`},{default:o(()=>[...i[13]||=[p(` مدیریت `,-1)]]),_:1})]),default:o(()=>[x(`div`,J,[f(v,{type:`circle`,percent:Pe.value,size:72,"stroke-color":{"0%":`#ff8a3d`,"100%":`#ff5a00`}},null,8,[`percent`]),x(`div`,Y,[x(`div`,X,n(a(C)(Z.value?.sectionsSummary?.visible??0))+` بخش از `+n(a(C)(Z.value?.sectionsSummary?.total??12))+` فعال `,1),x(`div`,ie,[(Z.value?.sectionsSummary?.hidden??0)===0?(c(),y(`span`,ae,` تمامی بخش‌های سایت در حال نمایش هستند `)):(c(),y(`span`,oe,n(a(C)(Z.value?.sectionsSummary?.hidden??0))+` بخش غیرفعال / مخفی `,1))]),i[14]||=x(`div`,{class:`text-[11px] text-gray-400`},` تغییر وضعیت آنی از منوی بخش‌های سایت `,-1)])])]),_:1})]),x(`div`,se,[f(_,{title:`نمودار توزیع محصولات بر اساس دسته‌بندی`,class:`lg:col-span-7`},{default:o(()=>[Z.value?.categoryStats?.length?(c(),y(`div`,le,[(c(!0),y(u,null,r(Z.value.categoryStats,e=>(c(),y(`div`,{key:e.id,class:`space-y-1`},[x(`div`,ue,[x(`span`,de,n(e.name),1),x(`span`,fe,n(a(C)(e.count))+` محصول`,1)]),f(v,{percent:Math.round(e.count/Me.value*100),"show-info":!1,"stroke-color":{"0%":`#ffd0b5`,"100%":`#ff5a00`},size:`small`},null,8,[`percent`])]))),128))])):(c(),y(`div`,ce,[f(b,{description:`داده‌ای موجود نیست`})]))]),_:1}),f(_,{title:`تحلیل پیام‌های تماس دریافتی`,class:`lg:col-span-5`},{default:o(()=>[x(`div`,pe,[x(`div`,me,[x(`div`,he,n(a(C)(Z.value?.messageBreakdown?.new??0)),1),i[15]||=x(`div`,{class:`text-[11px] font-medium text-gray-600`},`جدید`,-1)]),x(`div`,ge,[x(`div`,_e,n(a(C)(Z.value?.messageBreakdown?.read??0)),1),i[16]||=x(`div`,{class:`text-[11px] font-medium text-gray-600`},`خوانده‌شده`,-1)]),x(`div`,ve,[x(`div`,ye,n(a(C)(Z.value?.messageBreakdown?.archived??0)),1),i[17]||=x(`div`,{class:`text-[11px] font-medium text-gray-600`},`بایگانی`,-1)])]),x(`div`,be,[i[18]||=x(`div`,{class:`mb-3 flex items-center justify-between text-xs`},[x(`span`,{class:`font-bold text-gray-700`},`روند پیام‌ها در ۷ روز اخیر`),x(`span`,{class:`text-gray-400`},`نمودار روزانه`)],-1),x(`div`,xe,[(c(!0),y(u,null,r(Z.value?.trend??[],e=>(c(),y(`div`,{key:e.date,class:`flex flex-1 flex-col items-center gap-1`},[e.messages>0?(c(),y(`span`,Se,n(a(C)(e.messages)),1)):(c(),y(`span`,Ce,`-`)),f(Fe,{title:`${e.dayName}: ${a(C)(e.messages)} پیام`},{default:o(()=>[x(`div`,we,[x(`div`,{class:s([`w-full max-w-[24px] rounded-t-md transition-all duration-300`,e.messages>0?`bg-orange-500 hover:bg-orange-600`:`bg-gray-100`]),style:ne({height:`${Math.max(Math.round(e.messages/Ne.value*72),6)}px`})},null,6)])]),_:2},1032,[`title`]),x(`span`,Te,n(e.dayName),1)]))),128))])])]),_:1})]),x(`div`,Ee,[f(_,{title:`آخرین پیام‌های تماس`},{extra:o(()=>[f(m,{to:{name:`messages`},class:`text-xs text-orange-600 hover:underline`},{default:o(()=>[...i[19]||=[p(` مشاهده همه ← `,-1)]]),_:1})]),default:o(()=>[Z.value?.recentMessages.length?(c(),d(Re,{key:1,"data-source":Z.value.recentMessages,"item-layout":`horizontal`},{renderItem:o(({item:t})=>[f($,null,{default:o(()=>[f(Ie,{title:`${t.name} — ${t.org}`,description:t.message||t.phone},null,8,[`title`,`description`]),x(`div`,De,[f(Le,{color:t.status===`NEW`?`orange`:t.status===`READ`?`blue`:`default`},{default:o(()=>[p(n(a(e)[t.status]),1)]),_:2},1032,[`color`]),x(`div`,Oe,n(a(S)(t.createdAt)),1)])]),_:2},1024)]),_:1},8,[`data-source`])):(c(),d(b,{key:0,description:`پیامی ثبت نشده است`}))]),_:1}),f(_,{title:`آخرین فعالیت‌ها و رویدادهای سیستم`},{default:o(()=>[Z.value?.recentActivity.length?(c(),d(Be,{key:1,class:`!mt-2 max-h-[360px] overflow-y-auto pe-2`},{default:o(()=>[(c(!0),y(u,null,r(Z.value.recentActivity,e=>(c(),d(ze,{key:e.id,color:e.action===`delete`?`red`:e.action===`create`?`green`:`blue`},{default:o(()=>[x(`div`,ke,[x(`b`,null,n(a(re)(e.action,e.entity)),1),e.summary?(c(),y(`span`,Ae,` — `+n(e.summary),1)):te(``,!0)]),x(`div`,je,n(e.user??`سیستم`)+` · `+n(a(S)(e.createdAt)),1)]),_:2},1032,[`color`]))),128))]),_:1})):(c(),d(b,{key:0,description:`فعالیتی ثبت نشده است`}))]),_:1})])]),_:1},8,[`spinning`])],64)}}});export{Z as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/FormField-D95xTO-F.js b/apps/admin/dist/assets/FormField-CiVT7mqC.js similarity index 88% rename from apps/admin/dist/assets/FormField-D95xTO-F.js rename to apps/admin/dist/assets/FormField-CiVT7mqC.js index 627cf04..4b6db99 100644 --- a/apps/admin/dist/assets/FormField-D95xTO-F.js +++ b/apps/admin/dist/assets/FormField-CiVT7mqC.js @@ -1 +1 @@ -import{b as e}from"./VuesaxIcon-CrbgSv-1.js";import{Et as t,It as n,Nt as r,Ot as i,Tt as a,_t as o,dt as s,i as c,kt as l,lt as u,ot as d,r as f,yt as p}from"./index-BCImsMjH.js";var m=Symbol(`form-errors`),h=e=>Object.fromEntries(e.map(e=>[e.path,e.message]));function g(r,i){let a=n(structuredClone(i)),o=n({});t(m,o);function s(){let t=r.safeParse(a.value);return t.success?(o.value={},t.data):(o.value=h(e(t.error)),d.error(`لطفاً خطاهای فرم را برطرف کنید`),null)}function l(e){let t=f(e).issues;t?.length&&(o.value=h(t)),d.error(c(e))}function u(e){a.value=structuredClone(e),o.value={}}return{model:a,errors:o,validate:s,handleError:l,reset:u}}var _=o({__name:`FormField`,props:{path:{},label:{},hint:{},required:{type:Boolean}},setup(e){let t=e,n=p(m,null),o=u(()=>n?.value[t.path]);return(t,n)=>{let c=l(`a-form-item`);return a(),s(c,{label:e.label,required:e.required,"validate-status":o.value?`error`:void 0,help:o.value||e.hint},{default:r(()=>[i(t.$slots,`default`)]),_:3},8,[`label`,`required`,`validate-status`,`help`])}}});export{g as n,_ as t}; \ No newline at end of file +import{b as e}from"./VuesaxIcon-B2OgulS6.js";import{Et as t,It as n,Nt as r,Ot as i,Tt as a,_t as o,dt as s,i as c,kt as l,lt as u,ot as d,r as f,yt as p}from"./index-BuGK6ptM.js";var m=Symbol(`form-errors`),h=e=>Object.fromEntries(e.map(e=>[e.path,e.message]));function g(r,i){let a=n(structuredClone(i)),o=n({});t(m,o);function s(){let t=r.safeParse(a.value);return t.success?(o.value={},t.data):(o.value=h(e(t.error)),d.error(`لطفاً خطاهای فرم را برطرف کنید`),null)}function l(e){let t=f(e).issues;t?.length&&(o.value=h(t)),d.error(c(e))}function u(e){a.value=structuredClone(e),o.value={}}return{model:a,errors:o,validate:s,handleError:l,reset:u}}var _=o({__name:`FormField`,props:{path:{},label:{},hint:{},required:{type:Boolean}},setup(e){let t=e,n=p(m,null),o=u(()=>n?.value[t.path]);return(t,n)=>{let c=l(`a-form-item`);return a(),s(c,{label:e.label,required:e.required,"validate-status":o.value?`error`:void 0,help:o.value||e.hint},{default:r(()=>[i(t.$slots,`default`)]),_:3},8,[`label`,`required`,`validate-status`,`help`])}}});export{g as n,_ as t}; \ No newline at end of file diff --git a/apps/admin/dist/assets/IconSelect-n5KsEDDN.js b/apps/admin/dist/assets/IconSelect-rJLPzIXV.js similarity index 89% rename from apps/admin/dist/assets/IconSelect-n5KsEDDN.js rename to apps/admin/dist/assets/IconSelect-rJLPzIXV.js index 3ed2ac8..b449dc5 100644 --- a/apps/admin/dist/assets/IconSelect-n5KsEDDN.js +++ b/apps/admin/dist/assets/IconSelect-rJLPzIXV.js @@ -1 +1 @@ -import{t as e,y as t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Lt as r,Nt as i,Tt as a,_t as o,bt as s,dt as c,gt as l,jt as u,kt as d,pt as f,ut as p}from"./index-BCImsMjH.js";var m={class:`flex items-center gap-2`},h={class:`flex size-9 shrink-0 items-center justify-center rounded-lg border border-gray-200 bg-gray-50 text-[#ff5a00]`},g={key:1,class:`text-xs text-gray-400`},_={class:`flex items-center gap-2.5 py-0.5`,dir:`ltr`},v={class:`text-xs font-mono`},y=o({__name:`IconSelect`,props:s({allowClear:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(o){let s=u(o,`modelValue`),y=t.map(e=>({value:e,label:e}));return(t,u)=>{let b=d(`a-select`);return a(),f(`div`,m,[p(`span`,h,[s.value?(a(),c(e,{key:0,name:s.value,size:20},null,8,[`name`])):(a(),f(`span`,g,`---`))]),l(b,{value:s.value,"onUpdate:value":u[0]||=e=>s.value=e,class:`min-w-0 flex-1`,"show-search":``,"allow-clear":o.allowClear,options:r(y),placeholder:`انتخاب آیکون`},{option:i(({value:t})=>[p(`span`,_,[l(e,{name:t,size:18,class:`text-orange-600`},null,8,[`name`]),p(`span`,v,n(t),1)])]),_:1},8,[`value`,`allow-clear`,`options`])])}}});export{y as t}; \ No newline at end of file +import{t as e,y as t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Lt as r,Nt as i,Tt as a,_t as o,bt as s,dt as c,gt as l,jt as u,kt as d,pt as f,ut as p}from"./index-BuGK6ptM.js";var m={class:`flex items-center gap-2`},h={class:`flex size-9 shrink-0 items-center justify-center rounded-lg border border-gray-200 bg-gray-50 text-[#ff5a00]`},g={key:1,class:`text-xs text-gray-400`},_={class:`flex items-center gap-2.5 py-0.5`,dir:`ltr`},v={class:`text-xs font-mono`},y=o({__name:`IconSelect`,props:s({allowClear:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(o){let s=u(o,`modelValue`),y=t.map(e=>({value:e,label:e}));return(t,u)=>{let b=d(`a-select`);return a(),f(`div`,m,[p(`span`,h,[s.value?(a(),c(e,{key:0,name:s.value,size:20},null,8,[`name`])):(a(),f(`span`,g,`---`))]),l(b,{value:s.value,"onUpdate:value":u[0]||=e=>s.value=e,class:`min-w-0 flex-1`,"show-search":``,"allow-clear":o.allowClear,options:r(y),placeholder:`انتخاب آیکون`},{option:i(({value:t})=>[p(`span`,_,[l(e,{name:t,size:18,class:`text-orange-600`},null,8,[`name`]),p(`span`,v,n(t),1)])]),_:1},8,[`value`,`allow-clear`,`options`])])}}});export{y as t}; \ No newline at end of file diff --git a/apps/admin/dist/assets/ListEditor-DF9sShFo.js b/apps/admin/dist/assets/ListEditor-C8F91lSJ.js similarity index 97% rename from apps/admin/dist/assets/ListEditor-DF9sShFo.js rename to apps/admin/dist/assets/ListEditor-C8F91lSJ.js index 638cb67..e4c3a09 100644 --- a/apps/admin/dist/assets/ListEditor-DF9sShFo.js +++ b/apps/admin/dist/assets/ListEditor-C8F91lSJ.js @@ -1 +1 @@ -import{t as e}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as t,Dt as n,It as r,Mt as i,Nt as a,Ot as o,Tt as s,_t as c,bt as l,ct as u,dt as d,ft as f,gt as p,ht as m,i as h,jt as g,kt as _,n as v,ot as y,pt as b,ut as x}from"./index-BCImsMjH.js";var S={class:`grid grid-cols-3 gap-3 sm:grid-cols-4 md:grid-cols-6`},C=[`title`,`onClick`],w=[`src`,`alt`],T={class:`truncate px-1.5 py-1 text-[11px] text-gray-500`,dir:`ltr`},E={class:`mt-4 flex justify-center`},D={class:`ant-upload-drag-icon`},O=24,k=c({__name:`MediaPicker`,props:{open:{type:Boolean,required:!0},openModifiers:{}},emits:l([`select`],[`update:open`]),setup(o,{emit:c}){let l=g(o,`open`),m=c,k=r(`library`),A=r([]),j=r(0),M=r(1),N=r(``),P=r(!1),F=r(!1);async function I(){P.value=!0;try{let e=await v(`/admin/media`,{query:{page:M.value,pageSize:O,q:N.value||void 0}});A.value=e.items,j.value=e.total}catch(e){y.error(h(e))}finally{P.value=!1}}i(l,e=>e&&I());function L(e){m(`select`,e),l.value=!1}async function R(e){F.value=!0;try{let t=new FormData;t.append(`file`,e);let n=await v(`/admin/media`,{method:`POST`,body:t});y.success(`تصویر آپلود شد`),L(n)}catch(e){y.error(h(e))}finally{F.value=!1}return!1}return(r,i)=>{let o=_(`a-input-search`),c=_(`a-empty`),m=_(`a-spin`),h=_(`a-pagination`),g=_(`a-tab-pane`),v=_(`a-upload-dragger`),y=_(`a-tabs`),z=_(`a-modal`);return s(),d(z,{open:l.value,"onUpdate:open":i[4]||=e=>l.value=e,title:`انتخاب تصویر`,footer:null,width:`900px`,"destroy-on-close":``},{default:a(()=>[p(y,{"active-key":k.value,"onUpdate:activeKey":i[3]||=e=>k.value=e},{default:a(()=>[p(g,{key:`library`,tab:`کتابخانه رسانه`},{default:a(()=>[p(o,{value:N.value,"onUpdate:value":i[0]||=e=>N.value=e,placeholder:`جستجو در نام فایل یا متن جایگزین`,"allow-clear":``,class:`mb-4`,onSearch:i[1]||=()=>{M.value=1,I()}},null,8,[`value`]),p(m,{spinning:P.value},{default:a(()=>[!A.value.length&&!P.value?(s(),d(c,{key:0,description:`تصویری پیدا نشد`})):f(``,!0),x(`div`,S,[(s(!0),b(u,null,n(A.value,e=>(s(),b(`button`,{key:e.id,type:`button`,class:`group overflow-hidden rounded-lg border border-gray-200 bg-gray-50 text-start transition hover:border-[#ff5a00] focus:border-[#ff5a00] focus:outline-none`,title:e.originalName,onClick:t=>L(e)},[x(`img`,{src:e.url,alt:e.alt,class:`aspect-square w-full object-contain`,loading:`lazy`},null,8,w),x(`div`,T,t(e.originalName),1)],8,C))),128))])]),_:1},8,[`spinning`]),x(`div`,E,[p(h,{current:M.value,"onUpdate:current":i[2]||=e=>M.value=e,total:j.value,"page-size":O,"show-size-changer":!1,onChange:I},null,8,[`current`,`total`])])]),_:1}),p(g,{key:`upload`,tab:`آپلود تصویر جدید`},{default:a(()=>[p(m,{spinning:F.value},{default:a(()=>[p(v,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,"show-upload-list":!1,"before-upload":R},{default:a(()=>[x(`p`,D,[p(e,{name:`document-upload`,size:40})]),i[5]||=x(`p`,{class:`ant-upload-text`},`تصویر را اینجا رها کنید یا کلیک کنید`,-1),i[6]||=x(`p`,{class:`ant-upload-hint`},` JPG، PNG، WebP، AVIF یا GIF — حداکثر ۱۵ مگابایت. تصویر به‌صورت خودکار بهینه و به WebP تبدیل می‌شود. `,-1)]),_:1})]),_:1},8,[`spinning`])]),_:1})]),_:1},8,[`active-key`])]),_:1},8,[`open`])}}}),A={class:`flex items-start gap-4`},j={class:`flex size-28 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-dashed border-gray-300 bg-gray-50`},M=[`src`],N=c({__name:`ImageField`,props:{url:{},clearable:{type:Boolean}},emits:[`pick`,`clear`],setup(n,{emit:i}){let o=i,c=r(!1);return(r,i)=>{let l=_(`a-button`),u=_(`a-space`);return s(),b(`div`,A,[x(`div`,j,[n.url?(s(),b(`img`,{key:0,src:n.url,alt:``,class:`size-full object-contain`},null,8,M)):(s(),d(e,{key:1,name:`gallery`,size:32,class:`text-gray-300`}))]),p(u,{direction:`vertical`},{default:a(()=>[p(l,{onClick:i[0]||=e=>c.value=!0},{icon:a(()=>[p(e,{name:`gallery`,size:16})]),default:a(()=>[m(` `+t(n.url?`تغییر تصویر`:`انتخاب یا آپلود تصویر`),1)]),_:1}),n.url&&n.clearable?(s(),d(l,{key:0,danger:``,onClick:i[1]||=e=>o(`clear`)},{icon:a(()=>[p(e,{name:`trash`,size:16})]),default:a(()=>[i[4]||=m(` حذف تصویر `,-1)]),_:1})):f(``,!0)]),_:1}),p(k,{open:c.value,"onUpdate:open":i[2]||=e=>c.value=e,onSelect:i[3]||=e=>o(`pick`,e)},null,8,[`open`])])}}}),P={class:`space-y-3`},F={class:`mb-3 flex items-center justify-between gap-2`},I={class:`text-sm font-bold text-gray-600`},L=c({__name:`ListEditor`,props:l({create:{},addLabel:{default:`افزودن مورد`},max:{default:50},itemTitle:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(r){let i=g(r,`modelValue`),c=r,l=(e,t)=>{let n=[...i.value],[r]=n.splice(e,1);n.splice(e+t,0,r),i.value=n},d=e=>{i.value=i.value.filter((t,n)=>n!==e)},f=()=>{i.value=[...i.value,c.create()]};return(c,h)=>{let g=_(`a-button`),v=_(`a-popconfirm`),y=_(`a-space`);return s(),b(`div`,P,[(s(!0),b(u,null,n(i.value,(n,u)=>(s(),b(`div`,{key:u,class:`rounded-lg border border-gray-200 bg-white p-4`},[x(`div`,F,[x(`span`,I,t((u+1).toLocaleString(`fa-IR`))+`. `+t(r.itemTitle?.(n,u)??``),1),p(y,{size:4},{default:a(()=>[p(g,{size:`small`,disabled:u===0,title:`بالا`,onClick:e=>l(u,-1)},{icon:a(()=>[p(e,{name:`arrow-up`,size:16})]),_:1},8,[`disabled`,`onClick`]),p(g,{size:`small`,disabled:u===i.value.length-1,title:`پایین`,onClick:e=>l(u,1)},{icon:a(()=>[p(e,{name:`arrow-down`,size:16})]),_:1},8,[`disabled`,`onClick`]),p(v,{title:`این مورد حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>d(u)},{default:a(()=>[p(g,{size:`small`,danger:``,title:`حذف`},{icon:a(()=>[p(e,{name:`trash`,size:16})]),_:1})]),_:1},8,[`onConfirm`])]),_:2},1024)]),o(c.$slots,`default`,{item:n,index:u})]))),128)),p(g,{type:`dashed`,block:``,disabled:i.value.length>=r.max,onClick:f},{icon:a(()=>[p(e,{name:`add`,size:16})]),default:a(()=>[m(` `+t(r.addLabel),1)]),_:1},8,[`disabled`])])}}});export{N as n,k as r,L as t}; \ No newline at end of file +import{t as e}from"./VuesaxIcon-B2OgulS6.js";import{Bt as t,Dt as n,It as r,Mt as i,Nt as a,Ot as o,Tt as s,_t as c,bt as l,ct as u,dt as d,ft as f,gt as p,ht as m,i as h,jt as g,kt as _,n as v,ot as y,pt as b,ut as x}from"./index-BuGK6ptM.js";var S={class:`grid grid-cols-3 gap-3 sm:grid-cols-4 md:grid-cols-6`},C=[`title`,`onClick`],w=[`src`,`alt`],T={class:`truncate px-1.5 py-1 text-[11px] text-gray-500`,dir:`ltr`},E={class:`mt-4 flex justify-center`},D={class:`ant-upload-drag-icon`},O=24,k=c({__name:`MediaPicker`,props:{open:{type:Boolean,required:!0},openModifiers:{}},emits:l([`select`],[`update:open`]),setup(o,{emit:c}){let l=g(o,`open`),m=c,k=r(`library`),A=r([]),j=r(0),M=r(1),N=r(``),P=r(!1),F=r(!1);async function I(){P.value=!0;try{let e=await v(`/admin/media`,{query:{page:M.value,pageSize:O,q:N.value||void 0}});A.value=e.items,j.value=e.total}catch(e){y.error(h(e))}finally{P.value=!1}}i(l,e=>e&&I());function L(e){m(`select`,e),l.value=!1}async function R(e){F.value=!0;try{let t=new FormData;t.append(`file`,e);let n=await v(`/admin/media`,{method:`POST`,body:t});y.success(`تصویر آپلود شد`),L(n)}catch(e){y.error(h(e))}finally{F.value=!1}return!1}return(r,i)=>{let o=_(`a-input-search`),c=_(`a-empty`),m=_(`a-spin`),h=_(`a-pagination`),g=_(`a-tab-pane`),v=_(`a-upload-dragger`),y=_(`a-tabs`),z=_(`a-modal`);return s(),d(z,{open:l.value,"onUpdate:open":i[4]||=e=>l.value=e,title:`انتخاب تصویر`,footer:null,width:`900px`,"destroy-on-close":``},{default:a(()=>[p(y,{"active-key":k.value,"onUpdate:activeKey":i[3]||=e=>k.value=e},{default:a(()=>[p(g,{key:`library`,tab:`کتابخانه رسانه`},{default:a(()=>[p(o,{value:N.value,"onUpdate:value":i[0]||=e=>N.value=e,placeholder:`جستجو در نام فایل یا متن جایگزین`,"allow-clear":``,class:`mb-4`,onSearch:i[1]||=()=>{M.value=1,I()}},null,8,[`value`]),p(m,{spinning:P.value},{default:a(()=>[!A.value.length&&!P.value?(s(),d(c,{key:0,description:`تصویری پیدا نشد`})):f(``,!0),x(`div`,S,[(s(!0),b(u,null,n(A.value,e=>(s(),b(`button`,{key:e.id,type:`button`,class:`group overflow-hidden rounded-lg border border-gray-200 bg-gray-50 text-start transition hover:border-[#ff5a00] focus:border-[#ff5a00] focus:outline-none`,title:e.originalName,onClick:t=>L(e)},[x(`img`,{src:e.url,alt:e.alt,class:`aspect-square w-full object-contain`,loading:`lazy`},null,8,w),x(`div`,T,t(e.originalName),1)],8,C))),128))])]),_:1},8,[`spinning`]),x(`div`,E,[p(h,{current:M.value,"onUpdate:current":i[2]||=e=>M.value=e,total:j.value,"page-size":O,"show-size-changer":!1,onChange:I},null,8,[`current`,`total`])])]),_:1}),p(g,{key:`upload`,tab:`آپلود تصویر جدید`},{default:a(()=>[p(m,{spinning:F.value},{default:a(()=>[p(v,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,"show-upload-list":!1,"before-upload":R},{default:a(()=>[x(`p`,D,[p(e,{name:`document-upload`,size:40})]),i[5]||=x(`p`,{class:`ant-upload-text`},`تصویر را اینجا رها کنید یا کلیک کنید`,-1),i[6]||=x(`p`,{class:`ant-upload-hint`},` JPG، PNG، WebP، AVIF یا GIF — حداکثر ۱۵ مگابایت. تصویر به‌صورت خودکار بهینه و به WebP تبدیل می‌شود. `,-1)]),_:1})]),_:1},8,[`spinning`])]),_:1})]),_:1},8,[`active-key`])]),_:1},8,[`open`])}}}),A={class:`flex items-start gap-4`},j={class:`flex size-28 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-dashed border-gray-300 bg-gray-50`},M=[`src`],N=c({__name:`ImageField`,props:{url:{},clearable:{type:Boolean}},emits:[`pick`,`clear`],setup(n,{emit:i}){let o=i,c=r(!1);return(r,i)=>{let l=_(`a-button`),u=_(`a-space`);return s(),b(`div`,A,[x(`div`,j,[n.url?(s(),b(`img`,{key:0,src:n.url,alt:``,class:`size-full object-contain`},null,8,M)):(s(),d(e,{key:1,name:`gallery`,size:32,class:`text-gray-300`}))]),p(u,{direction:`vertical`},{default:a(()=>[p(l,{onClick:i[0]||=e=>c.value=!0},{icon:a(()=>[p(e,{name:`gallery`,size:16})]),default:a(()=>[m(` `+t(n.url?`تغییر تصویر`:`انتخاب یا آپلود تصویر`),1)]),_:1}),n.url&&n.clearable?(s(),d(l,{key:0,danger:``,onClick:i[1]||=e=>o(`clear`)},{icon:a(()=>[p(e,{name:`trash`,size:16})]),default:a(()=>[i[4]||=m(` حذف تصویر `,-1)]),_:1})):f(``,!0)]),_:1}),p(k,{open:c.value,"onUpdate:open":i[2]||=e=>c.value=e,onSelect:i[3]||=e=>o(`pick`,e)},null,8,[`open`])])}}}),P={class:`space-y-3`},F={class:`mb-3 flex items-center justify-between gap-2`},I={class:`text-sm font-bold text-gray-600`},L=c({__name:`ListEditor`,props:l({create:{},addLabel:{default:`افزودن مورد`},max:{default:50},itemTitle:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(r){let i=g(r,`modelValue`),c=r,l=(e,t)=>{let n=[...i.value],[r]=n.splice(e,1);n.splice(e+t,0,r),i.value=n},d=e=>{i.value=i.value.filter((t,n)=>n!==e)},f=()=>{i.value=[...i.value,c.create()]};return(c,h)=>{let g=_(`a-button`),v=_(`a-popconfirm`),y=_(`a-space`);return s(),b(`div`,P,[(s(!0),b(u,null,n(i.value,(n,u)=>(s(),b(`div`,{key:u,class:`rounded-lg border border-gray-200 bg-white p-4`},[x(`div`,F,[x(`span`,I,t((u+1).toLocaleString(`fa-IR`))+`. `+t(r.itemTitle?.(n,u)??``),1),p(y,{size:4},{default:a(()=>[p(g,{size:`small`,disabled:u===0,title:`بالا`,onClick:e=>l(u,-1)},{icon:a(()=>[p(e,{name:`arrow-up`,size:16})]),_:1},8,[`disabled`,`onClick`]),p(g,{size:`small`,disabled:u===i.value.length-1,title:`پایین`,onClick:e=>l(u,1)},{icon:a(()=>[p(e,{name:`arrow-down`,size:16})]),_:1},8,[`disabled`,`onClick`]),p(v,{title:`این مورد حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>d(u)},{default:a(()=>[p(g,{size:`small`,danger:``,title:`حذف`},{icon:a(()=>[p(e,{name:`trash`,size:16})]),_:1})]),_:1},8,[`onConfirm`])]),_:2},1024)]),o(c.$slots,`default`,{item:n,index:u})]))),128)),p(g,{type:`dashed`,block:``,disabled:i.value.length>=r.max,onClick:f},{icon:a(()=>[p(e,{name:`add`,size:16})]),default:a(()=>[m(` `+t(r.addLabel),1)]),_:1},8,[`disabled`])])}}});export{N as n,k as r,L as t}; \ No newline at end of file diff --git a/apps/admin/dist/assets/LoginPage-9ZnLIZG9.js b/apps/admin/dist/assets/LoginPage-D6HPXv4g.js similarity index 95% rename from apps/admin/dist/assets/LoginPage-9ZnLIZG9.js rename to apps/admin/dist/assets/LoginPage-D6HPXv4g.js index cb0ba2f..f6a59f4 100644 --- a/apps/admin/dist/assets/LoginPage-9ZnLIZG9.js +++ b/apps/admin/dist/assets/LoginPage-D6HPXv4g.js @@ -1 +1 @@ -import{c as e,n as t,t as n}from"./VuesaxIcon-CrbgSv-1.js";import{It as r,Lt as i,Nt as a,Tt as o,_t as s,a as c,gt as l,ht as u,kt as d,mt as f,o as p,pt as m,st as h,t as g,ut as _}from"./index-BCImsMjH.js";import"./logo-BuUh917n.js";import{n as v,t as y}from"./FormField-D95xTO-F.js";var b={class:`login-page relative flex min-h-screen overflow-hidden text-[#edede6]`},x={class:`relative z-10 mx-auto grid w-full max-w-[1120px] flex-1 items-center gap-10 px-5 py-12 md:px-8 lg:grid-cols-12 lg:gap-16`},S={class:`login-fade-3 lg:col-span-6`},C={class:`login-panel w-full max-w-md border border-[#2a3d63]/70 bg-[#1a2744]/80 p-7 backdrop-blur-md md:p-8 lg:me-auto`},w=t(s({__name:`LoginPage`,setup(t){let s=g(),w=p(),T=c(),{model:E,validate:D,handleError:O}=v(e,{phone:``,password:``}),k=r(!1);async function A(){let e=D();if(e){k.value=!0;try{await s.login(e);let t=typeof T.query.redirect==`string`?T.query.redirect:`/`;await w.replace(t.startsWith(`/`)?t:`/`)}catch(e){O(e)}finally{k.value=!1}}}return(e,t)=>{let r=d(`a-input`),s=d(`a-input-password`),c=d(`a-button`),p=d(`a-form`);return o(),m(`div`,b,[t[5]||=f(`
`,6),_(`div`,x,[_(`div`,S,[_(`div`,C,[t[3]||=_(`div`,{class:`mb-7 text-center`},[_(`div`,{class:`font-mono text-[10px] tracking-[0.28em] text-[#8e9ab0]`},`SIGN IN`),_(`h2`,{class:`mt-2 text-xl font-bold text-[#edede6]`},`ورود به پنل`),_(`p`,{class:`mt-1.5 text-sm text-[#8e9ab0]`},`شماره موبایل و رمز عبور خود را وارد کنید`)],-1),l(p,{class:`login-form`,layout:`vertical`,onSubmit:h(A,[`prevent`])},{default:a(()=>[l(y,{path:`phone`,label:`شماره موبایل`},{default:a(()=>[l(r,{value:i(E).phone,"onUpdate:value":t[0]||=e=>i(E).phone=e,size:`large`,class:`ltr-input`,autocomplete:`tel`,autofocus:``,inputmode:`tel`,placeholder:`09121234567`},{prefix:a(()=>[l(n,{name:`mobile`,size:16,class:`text-[#8e9ab0]`})]),_:1},8,[`value`])]),_:1}),l(y,{path:`password`,label:`رمز عبور`},{default:a(()=>[l(s,{value:i(E).password,"onUpdate:value":t[1]||=e=>i(E).password=e,size:`large`,class:`ltr-input`,autocomplete:`current-password`,placeholder:`••••••••`},{prefix:a(()=>[l(n,{name:`lock`,size:16,class:`text-[#8e9ab0]`})]),_:1},8,[`value`])]),_:1}),l(c,{type:`primary`,"html-type":`submit`,size:`large`,block:``,loading:k.value,class:`!mt-2 !h-12 !rounded-full !font-bold !shadow-[0_8px_32px_rgba(255,90,0,0.35)]`},{default:a(()=>[...t[2]||=[u(` ورود به پنل `,-1)]]),_:1},8,[`loading`])]),_:1})])]),t[4]||=f(`
پنل مدیریت ایمن پیشگامان
ایمن پیشگامان
ایمن پیشگامان
IMEN PISHGAMAN CO.

ورود امن به سامانه

مدیریت محصولات، محتوا و پیام‌های سایت — فقط برای کاربران مجاز.

`,1)])])}}}),[[`__scopeId`,`data-v-2d323d25`]]);export{w as default}; \ No newline at end of file +import{c as e,n as t,t as n}from"./VuesaxIcon-B2OgulS6.js";import{It as r,Lt as i,Nt as a,Tt as o,_t as s,a as c,gt as l,ht as u,kt as d,mt as f,o as p,pt as m,st as h,t as g,ut as _}from"./index-BuGK6ptM.js";import"./logo-BuUh917n.js";import{n as v,t as y}from"./FormField-CiVT7mqC.js";var b={class:`login-page relative flex min-h-screen overflow-hidden text-[#edede6]`},x={class:`relative z-10 mx-auto grid w-full max-w-[1120px] flex-1 items-center gap-10 px-5 py-12 md:px-8 lg:grid-cols-12 lg:gap-16`},S={class:`login-fade-3 lg:col-span-6`},C={class:`login-panel w-full max-w-md border border-[#2a3d63]/70 bg-[#1a2744]/80 p-7 backdrop-blur-md md:p-8 lg:me-auto`},w=t(s({__name:`LoginPage`,setup(t){let s=g(),w=p(),T=c(),{model:E,validate:D,handleError:O}=v(e,{phone:``,password:``}),k=r(!1);async function A(){let e=D();if(e){k.value=!0;try{await s.login(e);let t=typeof T.query.redirect==`string`?T.query.redirect:`/`;await w.replace(t.startsWith(`/`)?t:`/`)}catch(e){O(e)}finally{k.value=!1}}}return(e,t)=>{let r=d(`a-input`),s=d(`a-input-password`),c=d(`a-button`),p=d(`a-form`);return o(),m(`div`,b,[t[5]||=f(`
`,6),_(`div`,x,[_(`div`,S,[_(`div`,C,[t[3]||=_(`div`,{class:`mb-7 text-center`},[_(`div`,{class:`font-mono text-[10px] tracking-[0.28em] text-[#8e9ab0]`},`SIGN IN`),_(`h2`,{class:`mt-2 text-xl font-bold text-[#edede6]`},`ورود به پنل`),_(`p`,{class:`mt-1.5 text-sm text-[#8e9ab0]`},`شماره موبایل و رمز عبور خود را وارد کنید`)],-1),l(p,{class:`login-form`,layout:`vertical`,onSubmit:h(A,[`prevent`])},{default:a(()=>[l(y,{path:`phone`,label:`شماره موبایل`},{default:a(()=>[l(r,{value:i(E).phone,"onUpdate:value":t[0]||=e=>i(E).phone=e,size:`large`,class:`ltr-input`,autocomplete:`tel`,autofocus:``,inputmode:`tel`,placeholder:`09121234567`},{prefix:a(()=>[l(n,{name:`mobile`,size:16,class:`text-[#8e9ab0]`})]),_:1},8,[`value`])]),_:1}),l(y,{path:`password`,label:`رمز عبور`},{default:a(()=>[l(s,{value:i(E).password,"onUpdate:value":t[1]||=e=>i(E).password=e,size:`large`,class:`ltr-input`,autocomplete:`current-password`,placeholder:`••••••••`},{prefix:a(()=>[l(n,{name:`lock`,size:16,class:`text-[#8e9ab0]`})]),_:1},8,[`value`])]),_:1}),l(c,{type:`primary`,"html-type":`submit`,size:`large`,block:``,loading:k.value,class:`!mt-2 !h-12 !rounded-full !font-bold !shadow-[0_8px_32px_rgba(255,90,0,0.35)]`},{default:a(()=>[...t[2]||=[u(` ورود به پنل `,-1)]]),_:1},8,[`loading`])]),_:1})])]),t[4]||=f(`
پنل مدیریت ایمن پیشگامان
ایمن پیشگامان
ایمن پیشگامان
IMEN PISHGAMAN CO.

ورود امن به سامانه

مدیریت محصولات، محتوا و پیام‌های سایت — فقط برای کاربران مجاز.

`,1)])])}}}),[[`__scopeId`,`data-v-2d323d25`]]);export{w as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/MediaPage-4vzZa5Eb.js b/apps/admin/dist/assets/MediaPage-DnfskIVE.js similarity index 96% rename from apps/admin/dist/assets/MediaPage-4vzZa5Eb.js rename to apps/admin/dist/assets/MediaPage-DnfskIVE.js index fea162f..168c983 100644 --- a/apps/admin/dist/assets/MediaPage-4vzZa5Eb.js +++ b/apps/admin/dist/assets/MediaPage-DnfskIVE.js @@ -1 +1 @@ -import{t as e}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as t,Ct as n,Dt as r,It as i,Lt as a,Nt as o,Tt as s,_t as c,ct as l,dt as u,ft as d,gt as f,ht as p,i as m,kt as h,n as g,ot as _,pt as v,t as y,ut as b,wt as x}from"./index-BCImsMjH.js";import{a as S,i as C,r as w}from"./format-NkL3G1Uq.js";import{t as T}from"./PageHeader-vyrIuh7P.js";var E={class:`grid grid-cols-3 gap-2.5 sm:grid-cols-4 md:grid-cols-6 xl:grid-cols-9`},D=[`title`,`onClick`],O=[`src`,`alt`],k={class:`absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent p-1 text-[9px] text-white opacity-0 transition group-hover:opacity-100 max-lg:hidden truncate`},A={class:`mt-4 flex justify-center`},j={class:`lg:hidden fixed bottom-20 left-4 z-30`},M=[`disabled`],N={key:1,class:`text-xs font-bold`},ee={class:`overflow-hidden rounded-xl border border-gray-200 bg-gray-50 flex items-center justify-center p-2`},te=[`src`,`alt`],ne={dir:`ltr`,class:`truncate block max-w-[240px] text-xs font-mono text-gray-700`},re={dir:`ltr`,class:`text-xs font-mono`},ie={class:`max-lg:grid max-lg:grid-cols-2 max-lg:gap-2 max-lg:mt-4 max-lg:hidden`},ae={class:`lg:hidden grid grid-cols-2 gap-2 mt-4`},P=36,F=c({__name:`MediaPage`,setup(c){let F=y(),I=i([]),L=i(0),R=i(1),z=i(``),B=i(!1),V=i(0),H=i(null),U=i(``),W=i(!1);function G(){typeof window<`u`&&(W.value=window.innerWidth<1024)}async function K(){B.value=!0;try{let e=await g(`/admin/media`,{query:{page:R.value,pageSize:P,q:z.value||void 0}});I.value=e.items,L.value=e.total}catch(e){_.error(m(e))}finally{B.value=!1}}async function q(e){V.value++;try{let t=new FormData;t.append(`file`,e),await g(`/admin/media`,{method:`POST`,body:t}),_.success(`«${e.name}» آپلود شد`),R.value=1,await K()}catch(t){_.error(`${e.name}: ${m(t)}`)}finally{V.value--}return!1}function oe(e){H.value=e,U.value=e.alt}async function J(){if(H.value)try{let e=await g(`/admin/media/${H.value.id}`,{method:`PATCH`,body:{alt:U.value}});Object.assign(H.value,e),_.success(`ذخیره شد`)}catch(e){_.error(m(e))}}async function Y(){if(H.value)try{await g(`/admin/media/${H.value.id}`,{method:`DELETE`}),_.success(`تصویر حذف شد`),H.value=null,await K()}catch(e){_.error(m(e))}}async function X(e){await navigator.clipboard.writeText(new URL(e,location.origin).toString()),_.success(`آدرس کپی شد`)}return n(()=>{G(),window.addEventListener(`resize`,G),K()}),x(()=>{typeof window<`u`&&window.removeEventListener(`resize`,G)}),(n,i)=>{let c=h(`a-button`),m=h(`a-upload`),g=h(`a-input-search`),_=h(`a-empty`),y=h(`a-spin`),x=h(`a-pagination`),G=h(`a-card`),Z=h(`a-descriptions-item`),se=h(`a-descriptions`),ce=h(`a-input`),le=h(`a-form-item`),Q=h(`a-popconfirm`),$=h(`a-space`),ue=h(`a-form`),de=h(`a-drawer`);return s(),v(l,null,[f(T,{title:`کتابخانه رسانه`,subtitle:`${a(w)(L.value)} تصویر`},{default:o(()=>[f(m,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,multiple:``,"show-upload-list":!1,"before-upload":q},{default:o(()=>[f(c,{type:`primary`,loading:V.value>0},{icon:o(()=>[f(e,{name:`document-upload`,size:16})]),default:o(()=>[i[7]||=p(` آپلود تصویر `,-1)]),_:1},8,[`loading`])]),_:1})]),_:1},8,[`subtitle`]),f(G,null,{default:o(()=>[f(g,{value:z.value,"onUpdate:value":i[0]||=e=>z.value=e,"allow-clear":``,placeholder:`جستجو در نام فایل یا متن جایگزین`,class:`mb-4 w-full md:max-w-md`,onSearch:i[1]||=()=>{R.value=1,K()}},null,8,[`value`]),f(y,{spinning:B.value},{default:o(()=>[!I.value.length&&!B.value?(s(),u(_,{key:0,description:`تصویری پیدا نشد`})):d(``,!0),b(`div`,E,[(s(!0),v(l,null,r(I.value,e=>(s(),v(`button`,{key:e.id,type:`button`,class:`group relative overflow-hidden rounded-xl border border-gray-200 bg-gray-50 transition active:scale-95 hover:border-[#ff5a00] focus:outline-none`,title:e.originalName,onClick:t=>oe(e)},[b(`img`,{src:e.url,alt:e.alt,class:`aspect-square w-full object-contain p-1`,loading:`lazy`},null,8,O),b(`div`,k,t(e.originalName),1)],8,D))),128))])]),_:1},8,[`spinning`]),b(`div`,A,[f(x,{current:R.value,"onUpdate:current":i[2]||=e=>R.value=e,total:L.value,"page-size":P,"show-size-changer":!1,simple:W.value,onChange:K},null,8,[`current`,`total`,`simple`])])]),_:1}),b(`div`,j,[f(m,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,multiple:``,"show-upload-list":!1,"before-upload":q},{default:o(()=>[b(`button`,{type:`button`,class:`flex size-13 items-center justify-center rounded-full bg-[#ff5a00] text-white shadow-lg shadow-orange-500/30 transition-transform active:scale-95`,title:`آپلود تصویر`,disabled:V.value>0},[V.value===0?(s(),u(e,{key:0,name:`document-upload`,size:24})):(s(),v(`span`,N,t(V.value),1))],8,M)]),_:1})]),f(de,{open:!!H.value,title:`جزئیات تصویر`,width:W.value?`100%`:380,height:W.value?`82vh`:void 0,placement:W.value?`bottom`:`left`,"body-style":{paddingBottom:W.value?`80px`:`24px`},onClose:i[6]||=e=>H.value=null},{default:o(()=>[H.value?(s(),v(l,{key:0},[b(`div`,ee,[b(`img`,{src:H.value.url,alt:H.value.alt,class:`max-h-60 w-full object-contain`},null,8,te)]),f(se,{column:W.value?2:1,size:`small`,class:`mt-4`},{default:o(()=>[f(Z,{label:`نام فایل`,span:W.value?2:1},{default:o(()=>[b(`span`,ne,t(H.value.originalName),1)]),_:1},8,[`span`]),f(Z,{label:`ابعاد`},{default:o(()=>[b(`span`,re,t(H.value.width)+`×`+t(H.value.height),1)]),_:1}),f(Z,{label:`حجم`},{default:o(()=>[p(t(a(C)(H.value.size)),1)]),_:1}),f(Z,{label:`تاریخ`,span:W.value?2:1},{default:o(()=>[p(t(a(S)(H.value.createdAt)),1)]),_:1},8,[`span`])]),_:1},8,[`column`]),f(ue,{layout:`vertical`,class:`mt-4`},{default:o(()=>[f(le,{label:`متن جایگزین (alt)`,class:`!mb-3`},{default:o(()=>[f(ce,{value:U.value,"onUpdate:value":i[3]||=e=>U.value=e,placeholder:`توضیح کوتاه برای سئو و دسترس‌پذیری`},null,8,[`value`])]),_:1}),b(`div`,ie,[f($,{wrap:``},{default:o(()=>[f(c,{type:`primary`,onClick:J},{default:o(()=>[...i[8]||=[p(`ذخیره`,-1)]]),_:1}),f(c,{onClick:i[4]||=e=>X(H.value.url)},{icon:o(()=>[f(e,{name:`copy`,size:16})]),default:o(()=>[i[9]||=p(`کپی آدرس`,-1)]),_:1}),a(F).isAdmin?(s(),u(Q,{key:0,title:`این تصویر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:Y},{default:o(()=>[f(c,{danger:``},{icon:o(()=>[f(e,{name:`trash`,size:16})]),default:o(()=>[i[10]||=p(`حذف`,-1)]),_:1})]),_:1})):d(``,!0)]),_:1})]),b(`div`,ae,[f(c,{type:`primary`,class:`h-10 !font-bold`,onClick:J},{default:o(()=>[...i[11]||=[p(`ذخیره متن`,-1)]]),_:1}),f(c,{class:`h-10 !flex !items-center !justify-center !gap-1`,onClick:i[5]||=e=>X(H.value.url)},{icon:o(()=>[f(e,{name:`copy`,size:16})]),default:o(()=>[i[12]||=b(`span`,null,`کپی آدرس`,-1)]),_:1}),a(F).isAdmin?(s(),u(Q,{key:0,title:`این تصویر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:Y},{default:o(()=>[f(c,{danger:``,class:`col-span-2 h-10 !flex !items-center !justify-center !gap-1`},{icon:o(()=>[f(e,{name:`trash`,size:16})]),default:o(()=>[i[13]||=b(`span`,null,`حذف تصویر`,-1)]),_:1})]),_:1})):d(``,!0)])]),_:1})],64)):d(``,!0)]),_:1},8,[`open`,`width`,`height`,`placement`,`body-style`])],64)}}});export{F as default}; \ No newline at end of file +import{t as e}from"./VuesaxIcon-B2OgulS6.js";import{Bt as t,Ct as n,Dt as r,It as i,Lt as a,Nt as o,Tt as s,_t as c,ct as l,dt as u,ft as d,gt as f,ht as p,i as m,kt as h,n as g,ot as _,pt as v,t as y,ut as b,wt as x}from"./index-BuGK6ptM.js";import{a as S,i as C,r as w}from"./format-B9MYDQJN.js";import{t as T}from"./PageHeader-3Ryvg2HD.js";var E={class:`grid grid-cols-3 gap-2.5 sm:grid-cols-4 md:grid-cols-6 xl:grid-cols-9`},D=[`title`,`onClick`],O=[`src`,`alt`],k={class:`absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent p-1 text-[9px] text-white opacity-0 transition group-hover:opacity-100 max-lg:hidden truncate`},A={class:`mt-4 flex justify-center`},j={class:`lg:hidden fixed bottom-20 left-4 z-30`},M=[`disabled`],N={key:1,class:`text-xs font-bold`},ee={class:`overflow-hidden rounded-xl border border-gray-200 bg-gray-50 flex items-center justify-center p-2`},te=[`src`,`alt`],ne={dir:`ltr`,class:`truncate block max-w-[240px] text-xs font-mono text-gray-700`},re={dir:`ltr`,class:`text-xs font-mono`},ie={class:`max-lg:grid max-lg:grid-cols-2 max-lg:gap-2 max-lg:mt-4 max-lg:hidden`},ae={class:`lg:hidden grid grid-cols-2 gap-2 mt-4`},P=36,F=c({__name:`MediaPage`,setup(c){let F=y(),I=i([]),L=i(0),R=i(1),z=i(``),B=i(!1),V=i(0),H=i(null),U=i(``),W=i(!1);function G(){typeof window<`u`&&(W.value=window.innerWidth<1024)}async function K(){B.value=!0;try{let e=await g(`/admin/media`,{query:{page:R.value,pageSize:P,q:z.value||void 0}});I.value=e.items,L.value=e.total}catch(e){_.error(m(e))}finally{B.value=!1}}async function q(e){V.value++;try{let t=new FormData;t.append(`file`,e),await g(`/admin/media`,{method:`POST`,body:t}),_.success(`«${e.name}» آپلود شد`),R.value=1,await K()}catch(t){_.error(`${e.name}: ${m(t)}`)}finally{V.value--}return!1}function oe(e){H.value=e,U.value=e.alt}async function J(){if(H.value)try{let e=await g(`/admin/media/${H.value.id}`,{method:`PATCH`,body:{alt:U.value}});Object.assign(H.value,e),_.success(`ذخیره شد`)}catch(e){_.error(m(e))}}async function Y(){if(H.value)try{await g(`/admin/media/${H.value.id}`,{method:`DELETE`}),_.success(`تصویر حذف شد`),H.value=null,await K()}catch(e){_.error(m(e))}}async function X(e){await navigator.clipboard.writeText(new URL(e,location.origin).toString()),_.success(`آدرس کپی شد`)}return n(()=>{G(),window.addEventListener(`resize`,G),K()}),x(()=>{typeof window<`u`&&window.removeEventListener(`resize`,G)}),(n,i)=>{let c=h(`a-button`),m=h(`a-upload`),g=h(`a-input-search`),_=h(`a-empty`),y=h(`a-spin`),x=h(`a-pagination`),G=h(`a-card`),Z=h(`a-descriptions-item`),se=h(`a-descriptions`),ce=h(`a-input`),le=h(`a-form-item`),Q=h(`a-popconfirm`),$=h(`a-space`),ue=h(`a-form`),de=h(`a-drawer`);return s(),v(l,null,[f(T,{title:`کتابخانه رسانه`,subtitle:`${a(w)(L.value)} تصویر`},{default:o(()=>[f(m,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,multiple:``,"show-upload-list":!1,"before-upload":q},{default:o(()=>[f(c,{type:`primary`,loading:V.value>0},{icon:o(()=>[f(e,{name:`document-upload`,size:16})]),default:o(()=>[i[7]||=p(` آپلود تصویر `,-1)]),_:1},8,[`loading`])]),_:1})]),_:1},8,[`subtitle`]),f(G,null,{default:o(()=>[f(g,{value:z.value,"onUpdate:value":i[0]||=e=>z.value=e,"allow-clear":``,placeholder:`جستجو در نام فایل یا متن جایگزین`,class:`mb-4 w-full md:max-w-md`,onSearch:i[1]||=()=>{R.value=1,K()}},null,8,[`value`]),f(y,{spinning:B.value},{default:o(()=>[!I.value.length&&!B.value?(s(),u(_,{key:0,description:`تصویری پیدا نشد`})):d(``,!0),b(`div`,E,[(s(!0),v(l,null,r(I.value,e=>(s(),v(`button`,{key:e.id,type:`button`,class:`group relative overflow-hidden rounded-xl border border-gray-200 bg-gray-50 transition active:scale-95 hover:border-[#ff5a00] focus:outline-none`,title:e.originalName,onClick:t=>oe(e)},[b(`img`,{src:e.url,alt:e.alt,class:`aspect-square w-full object-contain p-1`,loading:`lazy`},null,8,O),b(`div`,k,t(e.originalName),1)],8,D))),128))])]),_:1},8,[`spinning`]),b(`div`,A,[f(x,{current:R.value,"onUpdate:current":i[2]||=e=>R.value=e,total:L.value,"page-size":P,"show-size-changer":!1,simple:W.value,onChange:K},null,8,[`current`,`total`,`simple`])])]),_:1}),b(`div`,j,[f(m,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,multiple:``,"show-upload-list":!1,"before-upload":q},{default:o(()=>[b(`button`,{type:`button`,class:`flex size-13 items-center justify-center rounded-full bg-[#ff5a00] text-white shadow-lg shadow-orange-500/30 transition-transform active:scale-95`,title:`آپلود تصویر`,disabled:V.value>0},[V.value===0?(s(),u(e,{key:0,name:`document-upload`,size:24})):(s(),v(`span`,N,t(V.value),1))],8,M)]),_:1})]),f(de,{open:!!H.value,title:`جزئیات تصویر`,width:W.value?`100%`:380,height:W.value?`82vh`:void 0,placement:W.value?`bottom`:`left`,"body-style":{paddingBottom:W.value?`80px`:`24px`},onClose:i[6]||=e=>H.value=null},{default:o(()=>[H.value?(s(),v(l,{key:0},[b(`div`,ee,[b(`img`,{src:H.value.url,alt:H.value.alt,class:`max-h-60 w-full object-contain`},null,8,te)]),f(se,{column:W.value?2:1,size:`small`,class:`mt-4`},{default:o(()=>[f(Z,{label:`نام فایل`,span:W.value?2:1},{default:o(()=>[b(`span`,ne,t(H.value.originalName),1)]),_:1},8,[`span`]),f(Z,{label:`ابعاد`},{default:o(()=>[b(`span`,re,t(H.value.width)+`×`+t(H.value.height),1)]),_:1}),f(Z,{label:`حجم`},{default:o(()=>[p(t(a(C)(H.value.size)),1)]),_:1}),f(Z,{label:`تاریخ`,span:W.value?2:1},{default:o(()=>[p(t(a(S)(H.value.createdAt)),1)]),_:1},8,[`span`])]),_:1},8,[`column`]),f(ue,{layout:`vertical`,class:`mt-4`},{default:o(()=>[f(le,{label:`متن جایگزین (alt)`,class:`!mb-3`},{default:o(()=>[f(ce,{value:U.value,"onUpdate:value":i[3]||=e=>U.value=e,placeholder:`توضیح کوتاه برای سئو و دسترس‌پذیری`},null,8,[`value`])]),_:1}),b(`div`,ie,[f($,{wrap:``},{default:o(()=>[f(c,{type:`primary`,onClick:J},{default:o(()=>[...i[8]||=[p(`ذخیره`,-1)]]),_:1}),f(c,{onClick:i[4]||=e=>X(H.value.url)},{icon:o(()=>[f(e,{name:`copy`,size:16})]),default:o(()=>[i[9]||=p(`کپی آدرس`,-1)]),_:1}),a(F).isAdmin?(s(),u(Q,{key:0,title:`این تصویر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:Y},{default:o(()=>[f(c,{danger:``},{icon:o(()=>[f(e,{name:`trash`,size:16})]),default:o(()=>[i[10]||=p(`حذف`,-1)]),_:1})]),_:1})):d(``,!0)]),_:1})]),b(`div`,ae,[f(c,{type:`primary`,class:`h-10 !font-bold`,onClick:J},{default:o(()=>[...i[11]||=[p(`ذخیره متن`,-1)]]),_:1}),f(c,{class:`h-10 !flex !items-center !justify-center !gap-1`,onClick:i[5]||=e=>X(H.value.url)},{icon:o(()=>[f(e,{name:`copy`,size:16})]),default:o(()=>[i[12]||=b(`span`,null,`کپی آدرس`,-1)]),_:1}),a(F).isAdmin?(s(),u(Q,{key:0,title:`این تصویر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:Y},{default:o(()=>[f(c,{danger:``,class:`col-span-2 h-10 !flex !items-center !justify-center !gap-1`},{icon:o(()=>[f(e,{name:`trash`,size:16})]),default:o(()=>[i[13]||=b(`span`,null,`حذف تصویر`,-1)]),_:1})]),_:1})):d(``,!0)])]),_:1})],64)):d(``,!0)]),_:1},8,[`open`,`width`,`height`,`placement`,`body-style`])],64)}}});export{F as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/MessagesPage-C1A1xjPE.js b/apps/admin/dist/assets/MessagesPage-Bb_X9ABq.js similarity index 97% rename from apps/admin/dist/assets/MessagesPage-C1A1xjPE.js rename to apps/admin/dist/assets/MessagesPage-Bb_X9ABq.js index a68af2c..2adaa53 100644 --- a/apps/admin/dist/assets/MessagesPage-C1A1xjPE.js +++ b/apps/admin/dist/assets/MessagesPage-Bb_X9ABq.js @@ -1 +1 @@ -import{i as e,r as t,t as n}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as r,Ct as i,Dt as a,It as o,Lt as s,Mt as c,Nt as l,Rt as u,Tt as d,_t as f,a as p,ct as m,dt as h,ft as g,gt as _,ht as v,i as y,kt as b,lt as x,n as S,ot as C,pt as w,t as T,ut as E}from"./index-BCImsMjH.js";import{a as D,r as ee}from"./format-NkL3G1Uq.js";import{t as O}from"./PageHeader-vyrIuh7P.js";var te={class:`!hidden lg:!block`},k={class:`mobile-filter-bar sticky top-[52px] z-20 bg-white/95 backdrop-blur-md -mx-3 px-3 py-2 border-b border-slate-100 flex items-center gap-1.5 overflow-x-auto no-scrollbar mb-3 lg:!hidden`},ne=[`onClick`],re={class:`whitespace-pre-line leading-7`},ie=[`href`],ae={class:`mobile-messages-view block lg:!hidden pb-20`},oe={key:1,class:`space-y-3`},se={class:`flex items-start justify-between gap-2`},ce={class:`flex items-center gap-1.5`},le={class:`font-bold text-[14px] text-slate-800`},ue={key:0,class:`size-2 rounded-full bg-orange-500 animate-pulse`},de={key:0,class:`text-xs text-slate-500 font-medium mt-0.5`},fe={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-2.5`},pe={class:`text-[11px] text-slate-400 font-mono`},me=[`href`],he={dir:`ltr`,class:`font-mono`},ge=[`onClick`],A={key:0,class:`text-xs text-slate-600 line-clamp-2 leading-relaxed bg-slate-50/70 p-2.5 rounded-lg border border-slate-100`},j={key:1,class:`text-xs text-slate-700 whitespace-pre-line leading-relaxed bg-orange-50/30 p-3 rounded-lg border border-orange-100`},M={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-3`},N={class:`flex items-center gap-2`},P={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-rose-500 bg-rose-50 hover:bg-rose-100 active:bg-rose-200 transition`,title:`حذف پیام`},F={key:2,class:`flex items-center justify-between gap-3 pt-4 px-1`},I={class:`text-xs text-slate-500 font-mono`},L=20,R=f({__name:`MessagesPage`,setup(f){let R=T(),z=p(),B=o(z.query.status||`ALL`),V=t.map(t=>({value:t,label:e[t]})),H=[{value:`ALL`,label:`همه`},...V],U=o(1),W=o([]),G=o(0),K=o(!1),q=o([]),J=x(()=>Math.ceil(G.value/L)||1);async function Y(){K.value=!0;try{let e=await S(`/admin/messages`,{query:{status:B.value===`ALL`?void 0:B.value,page:U.value,pageSize:L}});W.value=e.items,G.value=e.total}catch(e){C.error(y(e))}finally{K.value=!1}}async function X(t,n){try{await S(`/admin/messages/${t.id}`,{method:`PATCH`,body:{status:n}}),t.status=n,C.success(`وضعیت پیام به «${e[n]}» تغییر کرد`)}catch(e){C.error(y(e))}}function _e(e){let t=q.value.indexOf(e.id);t>-1?q.value.splice(t,1):(q.value.push(e.id),e.status===`NEW`&&X(e,`READ`))}function ve(e,t){e&&t.status===`NEW`&&X(t,`READ`)}async function Z(e){try{await S(`/admin/messages/${e.id}`,{method:`DELETE`}),C.success(`پیام حذف شد`),await Y()}catch(e){C.error(y(e))}}function Q(e){e<1||e>J.value||(U.value=e,Y())}let $={NEW:`orange`,READ:`blue`,ARCHIVED:`default`},ye=[{title:`نام`,dataIndex:`name`},{title:`سازمان`,dataIndex:`org`},{title:`تلفن`,key:`phone`,width:150},{title:`تاریخ`,key:`date`,width:170},{title:`وضعیت`,key:`status`,width:140},{title:``,key:`actions`,width:60}];return c(B,()=>{U.value=1,Y()}),i(Y),(t,i)=>{let o=b(`a-segmented`),c=b(`a-badge`),f=b(`a-select`),p=b(`a-button`),y=b(`a-popconfirm`),x=b(`a-table`),S=b(`a-card`),C=b(`a-empty`),T=b(`a-tag`),z=b(`Phone`),be=b(`a-spin`);return d(),w(m,null,[_(O,{title:`پیام‌های تماس`,subtitle:`${s(ee)(G.value)} پیام — استعلام‌ها و درخواست‌های ثبت‌شده از سایت`},{default:l(()=>[E(`div`,te,[_(o,{value:B.value,"onUpdate:value":i[0]||=e=>B.value=e,options:H},null,8,[`value`])])]),_:1},8,[`subtitle`]),E(`div`,k,[(d(),w(m,null,a(H,e=>E(`button`,{key:e.value,type:`button`,class:u([`px-3 py-1.5 rounded-full text-xs font-bold transition shrink-0 select-none cursor-pointer`,B.value===e.value?`bg-orange-600 text-white shadow-xs`:`bg-slate-100 text-slate-600 active:bg-slate-200`]),onClick:t=>B.value=e.value},r(e.label),11,ne)),64))]),_(S,{class:`!hidden lg:!block`,"body-style":{padding:0}},{default:l(()=>[_(x,{columns:ye,"data-source":W.value,loading:K.value,"row-key":`id`,scroll:{x:760},pagination:{current:U.value,pageSize:L,total:G.value,showSizeChanger:!1,onChange:e=>{U.value=e,Y()}},onExpand:ve},{expandedRowRender:l(({record:e})=>[E(`p`,re,r(e.message||`— بدون توضیح —`),1)]),bodyCell:l(({column:e,record:t})=>[e.key===`phone`?(d(),w(`a`,{key:0,href:`tel:${t.phone}`,dir:`ltr`,class:`hover:text-orange-600 font-mono`},r(t.phone),9,ie)):e.key===`date`?(d(),w(m,{key:1},[v(r(s(D)(t.createdAt)),1)],64)):e.key===`status`?(d(),h(f,{key:2,value:t.status,size:`small`,class:`w-28`,options:s(V),onChange:e=>X(t,e)},{suffixIcon:l(()=>[_(c,{color:$[t.status]},null,8,[`color`])]),_:2},1032,[`value`,`options`,`onChange`])):e.key===`actions`?(d(),w(m,{key:3},[s(R).isAdmin?(d(),h(y,{key:0,title:`این پیام حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>Z(t)},{default:l(()=>[_(p,{size:`small`,danger:``},{icon:l(()=>[_(n,{name:`trash`,size:16})]),_:1})]),_:1},8,[`onConfirm`])):g(``,!0)],64)):g(``,!0)]),_:1},8,[`data-source`,`loading`,`pagination`])]),_:1}),E(`div`,ae,[_(be,{spinning:K.value},{default:l(()=>[!W.value.length&&!K.value?(d(),h(C,{key:0,description:`پیامی با این وضعیت موجود نیست`,class:`py-12`})):(d(),w(`div`,oe,[(d(!0),w(m,null,a(W.value,t=>(d(),w(`div`,{key:t.id,class:u([`bg-white rounded-xl border border-slate-200/80 p-3.5 shadow-2xs transition`,{"border-orange-300 ring-2 ring-orange-100":t.status===`NEW`}])},[E(`div`,se,[E(`div`,null,[E(`div`,ce,[E(`span`,le,r(t.name),1),t.status===`NEW`?(d(),w(`span`,ue)):g(``,!0)]),t.org?(d(),w(`div`,de,r(t.org),1)):g(``,!0)]),_(T,{color:$[t.status],class:`!m-0 !text-[11px] !font-bold`},{default:l(()=>[v(r(s(e)[t.status]),1)]),_:2},1032,[`color`])]),E(`div`,fe,[E(`span`,pe,r(s(D)(t.createdAt)),1),E(`a`,{href:`tel:`+t.phone,class:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-emerald-50 text-emerald-700 border border-emerald-200/70 font-bold text-xs active:bg-emerald-100 active:scale-95 transition`,title:`تماس مستقیم با مشتری`},[_(z,{size:13,class:`text-emerald-600 shrink-0`}),E(`span`,he,r(t.phone),1)],8,me)]),E(`div`,{class:`mt-3 cursor-pointer`,onClick:e=>_e(t)},[q.value.includes(t.id)?(d(),w(`div`,j,[v(r(t.message||`— بدون توضیح —`)+` `,1),i[4]||=E(`div`,{class:`text-[10px] text-slate-400 font-medium mt-2`},`بستن متن پیام ↑`,-1)])):(d(),w(`div`,A,[v(r(t.message||`— بدون توضیح —`)+` `,1),i[3]||=E(`div`,{class:`text-[10px] text-orange-600 font-bold mt-1`},`مشاهده متن کامل پیام ←`,-1)]))],8,ge),E(`div`,M,[E(`div`,N,[i[5]||=E(`span`,{class:`text-[11px] text-slate-400`},`وضعیت:`,-1),_(f,{value:t.status,size:`small`,class:`w-28 !text-xs`,options:s(V),onChange:e=>X(t,e)},null,8,[`value`,`options`,`onChange`])]),s(R).isAdmin?(d(),h(y,{key:0,title:`این پیام حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>Z(t)},{default:l(()=>[E(`button`,P,[_(n,{name:`trash`,size:16})])]),_:1},8,[`onConfirm`])):g(``,!0)])],2))),128))])),J.value>1?(d(),w(`div`,F,[_(p,{disabled:U.value<=1,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:i[1]||=e=>Q(U.value-1)},{default:l(()=>[...i[6]||=[v(` صفحه قبلی `,-1)]]),_:1},8,[`disabled`]),E(`span`,I,r(U.value.toLocaleString(`fa-IR`))+` / `+r(J.value.toLocaleString(`fa-IR`)),1),_(p,{disabled:U.value>=J.value,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:i[2]||=e=>Q(U.value+1)},{default:l(()=>[...i[7]||=[v(` صفحه بعدی `,-1)]]),_:1},8,[`disabled`])])):g(``,!0)]),_:1},8,[`spinning`])])],64)}}});export{R as default}; \ No newline at end of file +import{i as e,r as t,t as n}from"./VuesaxIcon-B2OgulS6.js";import{Bt as r,Ct as i,Dt as a,It as o,Lt as s,Mt as c,Nt as l,Rt as u,Tt as d,_t as f,a as p,ct as m,dt as h,ft as g,gt as _,ht as v,i as y,kt as b,lt as x,n as S,ot as C,pt as w,t as T,ut as E}from"./index-BuGK6ptM.js";import{a as D,r as ee}from"./format-B9MYDQJN.js";import{t as O}from"./PageHeader-3Ryvg2HD.js";var te={class:`!hidden lg:!block`},k={class:`mobile-filter-bar sticky top-[52px] z-20 bg-white/95 backdrop-blur-md -mx-3 px-3 py-2 border-b border-slate-100 flex items-center gap-1.5 overflow-x-auto no-scrollbar mb-3 lg:!hidden`},ne=[`onClick`],re={class:`whitespace-pre-line leading-7`},ie=[`href`],ae={class:`mobile-messages-view block lg:!hidden pb-20`},oe={key:1,class:`space-y-3`},se={class:`flex items-start justify-between gap-2`},ce={class:`flex items-center gap-1.5`},le={class:`font-bold text-[14px] text-slate-800`},ue={key:0,class:`size-2 rounded-full bg-orange-500 animate-pulse`},de={key:0,class:`text-xs text-slate-500 font-medium mt-0.5`},fe={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-2.5`},pe={class:`text-[11px] text-slate-400 font-mono`},me=[`href`],he={dir:`ltr`,class:`font-mono`},ge=[`onClick`],A={key:0,class:`text-xs text-slate-600 line-clamp-2 leading-relaxed bg-slate-50/70 p-2.5 rounded-lg border border-slate-100`},j={key:1,class:`text-xs text-slate-700 whitespace-pre-line leading-relaxed bg-orange-50/30 p-3 rounded-lg border border-orange-100`},M={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-3`},N={class:`flex items-center gap-2`},P={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-rose-500 bg-rose-50 hover:bg-rose-100 active:bg-rose-200 transition`,title:`حذف پیام`},F={key:2,class:`flex items-center justify-between gap-3 pt-4 px-1`},I={class:`text-xs text-slate-500 font-mono`},L=20,R=f({__name:`MessagesPage`,setup(f){let R=T(),z=p(),B=o(z.query.status||`ALL`),V=t.map(t=>({value:t,label:e[t]})),H=[{value:`ALL`,label:`همه`},...V],U=o(1),W=o([]),G=o(0),K=o(!1),q=o([]),J=x(()=>Math.ceil(G.value/L)||1);async function Y(){K.value=!0;try{let e=await S(`/admin/messages`,{query:{status:B.value===`ALL`?void 0:B.value,page:U.value,pageSize:L}});W.value=e.items,G.value=e.total}catch(e){C.error(y(e))}finally{K.value=!1}}async function X(t,n){try{await S(`/admin/messages/${t.id}`,{method:`PATCH`,body:{status:n}}),t.status=n,C.success(`وضعیت پیام به «${e[n]}» تغییر کرد`)}catch(e){C.error(y(e))}}function _e(e){let t=q.value.indexOf(e.id);t>-1?q.value.splice(t,1):(q.value.push(e.id),e.status===`NEW`&&X(e,`READ`))}function ve(e,t){e&&t.status===`NEW`&&X(t,`READ`)}async function Z(e){try{await S(`/admin/messages/${e.id}`,{method:`DELETE`}),C.success(`پیام حذف شد`),await Y()}catch(e){C.error(y(e))}}function Q(e){e<1||e>J.value||(U.value=e,Y())}let $={NEW:`orange`,READ:`blue`,ARCHIVED:`default`},ye=[{title:`نام`,dataIndex:`name`},{title:`سازمان`,dataIndex:`org`},{title:`تلفن`,key:`phone`,width:150},{title:`تاریخ`,key:`date`,width:170},{title:`وضعیت`,key:`status`,width:140},{title:``,key:`actions`,width:60}];return c(B,()=>{U.value=1,Y()}),i(Y),(t,i)=>{let o=b(`a-segmented`),c=b(`a-badge`),f=b(`a-select`),p=b(`a-button`),y=b(`a-popconfirm`),x=b(`a-table`),S=b(`a-card`),C=b(`a-empty`),T=b(`a-tag`),z=b(`Phone`),be=b(`a-spin`);return d(),w(m,null,[_(O,{title:`پیام‌های تماس`,subtitle:`${s(ee)(G.value)} پیام — استعلام‌ها و درخواست‌های ثبت‌شده از سایت`},{default:l(()=>[E(`div`,te,[_(o,{value:B.value,"onUpdate:value":i[0]||=e=>B.value=e,options:H},null,8,[`value`])])]),_:1},8,[`subtitle`]),E(`div`,k,[(d(),w(m,null,a(H,e=>E(`button`,{key:e.value,type:`button`,class:u([`px-3 py-1.5 rounded-full text-xs font-bold transition shrink-0 select-none cursor-pointer`,B.value===e.value?`bg-orange-600 text-white shadow-xs`:`bg-slate-100 text-slate-600 active:bg-slate-200`]),onClick:t=>B.value=e.value},r(e.label),11,ne)),64))]),_(S,{class:`!hidden lg:!block`,"body-style":{padding:0}},{default:l(()=>[_(x,{columns:ye,"data-source":W.value,loading:K.value,"row-key":`id`,scroll:{x:760},pagination:{current:U.value,pageSize:L,total:G.value,showSizeChanger:!1,onChange:e=>{U.value=e,Y()}},onExpand:ve},{expandedRowRender:l(({record:e})=>[E(`p`,re,r(e.message||`— بدون توضیح —`),1)]),bodyCell:l(({column:e,record:t})=>[e.key===`phone`?(d(),w(`a`,{key:0,href:`tel:${t.phone}`,dir:`ltr`,class:`hover:text-orange-600 font-mono`},r(t.phone),9,ie)):e.key===`date`?(d(),w(m,{key:1},[v(r(s(D)(t.createdAt)),1)],64)):e.key===`status`?(d(),h(f,{key:2,value:t.status,size:`small`,class:`w-28`,options:s(V),onChange:e=>X(t,e)},{suffixIcon:l(()=>[_(c,{color:$[t.status]},null,8,[`color`])]),_:2},1032,[`value`,`options`,`onChange`])):e.key===`actions`?(d(),w(m,{key:3},[s(R).isAdmin?(d(),h(y,{key:0,title:`این پیام حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>Z(t)},{default:l(()=>[_(p,{size:`small`,danger:``},{icon:l(()=>[_(n,{name:`trash`,size:16})]),_:1})]),_:1},8,[`onConfirm`])):g(``,!0)],64)):g(``,!0)]),_:1},8,[`data-source`,`loading`,`pagination`])]),_:1}),E(`div`,ae,[_(be,{spinning:K.value},{default:l(()=>[!W.value.length&&!K.value?(d(),h(C,{key:0,description:`پیامی با این وضعیت موجود نیست`,class:`py-12`})):(d(),w(`div`,oe,[(d(!0),w(m,null,a(W.value,t=>(d(),w(`div`,{key:t.id,class:u([`bg-white rounded-xl border border-slate-200/80 p-3.5 shadow-2xs transition`,{"border-orange-300 ring-2 ring-orange-100":t.status===`NEW`}])},[E(`div`,se,[E(`div`,null,[E(`div`,ce,[E(`span`,le,r(t.name),1),t.status===`NEW`?(d(),w(`span`,ue)):g(``,!0)]),t.org?(d(),w(`div`,de,r(t.org),1)):g(``,!0)]),_(T,{color:$[t.status],class:`!m-0 !text-[11px] !font-bold`},{default:l(()=>[v(r(s(e)[t.status]),1)]),_:2},1032,[`color`])]),E(`div`,fe,[E(`span`,pe,r(s(D)(t.createdAt)),1),E(`a`,{href:`tel:`+t.phone,class:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-emerald-50 text-emerald-700 border border-emerald-200/70 font-bold text-xs active:bg-emerald-100 active:scale-95 transition`,title:`تماس مستقیم با مشتری`},[_(z,{size:13,class:`text-emerald-600 shrink-0`}),E(`span`,he,r(t.phone),1)],8,me)]),E(`div`,{class:`mt-3 cursor-pointer`,onClick:e=>_e(t)},[q.value.includes(t.id)?(d(),w(`div`,j,[v(r(t.message||`— بدون توضیح —`)+` `,1),i[4]||=E(`div`,{class:`text-[10px] text-slate-400 font-medium mt-2`},`بستن متن پیام ↑`,-1)])):(d(),w(`div`,A,[v(r(t.message||`— بدون توضیح —`)+` `,1),i[3]||=E(`div`,{class:`text-[10px] text-orange-600 font-bold mt-1`},`مشاهده متن کامل پیام ←`,-1)]))],8,ge),E(`div`,M,[E(`div`,N,[i[5]||=E(`span`,{class:`text-[11px] text-slate-400`},`وضعیت:`,-1),_(f,{value:t.status,size:`small`,class:`w-28 !text-xs`,options:s(V),onChange:e=>X(t,e)},null,8,[`value`,`options`,`onChange`])]),s(R).isAdmin?(d(),h(y,{key:0,title:`این پیام حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>Z(t)},{default:l(()=>[E(`button`,P,[_(n,{name:`trash`,size:16})])]),_:1},8,[`onConfirm`])):g(``,!0)])],2))),128))])),J.value>1?(d(),w(`div`,F,[_(p,{disabled:U.value<=1,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:i[1]||=e=>Q(U.value-1)},{default:l(()=>[...i[6]||=[v(` صفحه قبلی `,-1)]]),_:1},8,[`disabled`]),E(`span`,I,r(U.value.toLocaleString(`fa-IR`))+` / `+r(J.value.toLocaleString(`fa-IR`)),1),_(p,{disabled:U.value>=J.value,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:i[2]||=e=>Q(U.value+1)},{default:l(()=>[...i[7]||=[v(` صفحه بعدی `,-1)]]),_:1},8,[`disabled`])])):g(``,!0)]),_:1},8,[`spinning`])])],64)}}});export{R as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/PageHeader-vyrIuh7P.js b/apps/admin/dist/assets/PageHeader-3Ryvg2HD.js similarity index 85% rename from apps/admin/dist/assets/PageHeader-vyrIuh7P.js rename to apps/admin/dist/assets/PageHeader-3Ryvg2HD.js index d1893f4..564209f 100644 --- a/apps/admin/dist/assets/PageHeader-vyrIuh7P.js +++ b/apps/admin/dist/assets/PageHeader-3Ryvg2HD.js @@ -1 +1 @@ -import{n as e,t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Nt as r,Ot as i,Tt as a,_t as o,dt as s,ft as c,gt as l,kt as u,pt as d,ut as f}from"./index-BCImsMjH.js";var p={class:`page-header`},m={class:`page-header__main`},h={class:`min-w-0`},g={class:`page-header__title`},_={key:0,class:`page-header__subtitle`},v={key:0,class:`page-header__actions`},y=e(o({__name:`PageHeader`,props:{title:{},subtitle:{},back:{}},setup(e){return(o,y)=>{let b=u(`RouterLink`);return a(),d(`div`,p,[f(`div`,m,[e.back?(a(),s(b,{key:0,to:e.back,class:`page-header__back`,title:`بازگشت`},{default:r(()=>[l(t,{name:`arrow-right`,size:18})]),_:1},8,[`to`])):c(``,!0),f(`div`,h,[f(`h1`,g,n(e.title),1),e.subtitle?(a(),d(`p`,_,n(e.subtitle),1)):c(``,!0)])]),o.$slots.default?(a(),d(`div`,v,[i(o.$slots,`default`,{},void 0,!0)])):c(``,!0)])}}}),[[`__scopeId`,`data-v-c0b72af8`]]);export{y as t}; \ No newline at end of file +import{n as e,t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Nt as r,Ot as i,Tt as a,_t as o,dt as s,ft as c,gt as l,kt as u,pt as d,ut as f}from"./index-BuGK6ptM.js";var p={class:`page-header`},m={class:`page-header__main`},h={class:`min-w-0`},g={class:`page-header__title`},_={key:0,class:`page-header__subtitle`},v={key:0,class:`page-header__actions`},y=e(o({__name:`PageHeader`,props:{title:{},subtitle:{},back:{}},setup(e){return(o,y)=>{let b=u(`RouterLink`);return a(),d(`div`,p,[f(`div`,m,[e.back?(a(),s(b,{key:0,to:e.back,class:`page-header__back`,title:`بازگشت`},{default:r(()=>[l(t,{name:`arrow-right`,size:18})]),_:1},8,[`to`])):c(``,!0),f(`div`,h,[f(`h1`,g,n(e.title),1),e.subtitle?(a(),d(`p`,_,n(e.subtitle),1)):c(``,!0)])]),o.$slots.default?(a(),d(`div`,v,[i(o.$slots,`default`,{},void 0,!0)])):c(``,!0)])}}}),[[`__scopeId`,`data-v-c0b72af8`]]);export{y as t}; \ No newline at end of file diff --git a/apps/admin/dist/assets/ProductEditPage-B-Sknc6p.js b/apps/admin/dist/assets/ProductEditPage-DTSEsrWG.js similarity index 98% rename from apps/admin/dist/assets/ProductEditPage-B-Sknc6p.js rename to apps/admin/dist/assets/ProductEditPage-DTSEsrWG.js index edc03a0..28b38d2 100644 --- a/apps/admin/dist/assets/ProductEditPage-B-Sknc6p.js +++ b/apps/admin/dist/assets/ProductEditPage-DTSEsrWG.js @@ -1,4 +1,4 @@ -import{t as e,v as t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Ct as r,Dt as i,It as a,Lt as o,Mt as s,Nt as c,Rt as l,Tt as u,_t as d,a as f,bt as p,ct as m,dt as h,ft as g,gt as _,ht as v,i as y,jt as b,kt as x,lt as S,n as C,o as ee,ot as w,pt as T,st as te,ut as E}from"./index-BCImsMjH.js";import{t as D}from"./format-NkL3G1Uq.js";import{t as ne}from"./PageHeader-vyrIuh7P.js";import{n as re,t as O}from"./FormField-D95xTO-F.js";import{n as ie,r as ae,t as oe}from"./ListEditor-DF9sShFo.js";import{t as se}from"./slug-Flyc3fOh.js";var ce=d({__name:`LinesInput`,props:p({placeholder:{},rows:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=b(e,`modelValue`),n=e=>e.split(` +import{t as e,v as t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Ct as r,Dt as i,It as a,Lt as o,Mt as s,Nt as c,Rt as l,Tt as u,_t as d,a as f,bt as p,ct as m,dt as h,ft as g,gt as _,ht as v,i as y,jt as b,kt as x,lt as S,n as C,o as ee,ot as w,pt as T,st as te,ut as E}from"./index-BuGK6ptM.js";import{t as D}from"./format-B9MYDQJN.js";import{t as ne}from"./PageHeader-3Ryvg2HD.js";import{n as re,t as O}from"./FormField-CiVT7mqC.js";import{n as ie,r as ae,t as oe}from"./ListEditor-C8F91lSJ.js";import{t as se}from"./slug-Flyc3fOh.js";var ce=d({__name:`LinesInput`,props:p({placeholder:{},rows:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=b(e,`modelValue`),n=e=>e.split(` `).map(e=>e.trim()).filter(Boolean),r=a(t.value.join(` `));s(t,e=>{n(r.value).join(` `)!==e.join(` diff --git a/apps/admin/dist/assets/ProductsPage-BEwm5CwI.js b/apps/admin/dist/assets/ProductsPage-CVHBMUNz.js similarity index 99% rename from apps/admin/dist/assets/ProductsPage-BEwm5CwI.js rename to apps/admin/dist/assets/ProductsPage-CVHBMUNz.js index d77d7f3..d1e1be9 100644 --- a/apps/admin/dist/assets/ProductsPage-BEwm5CwI.js +++ b/apps/admin/dist/assets/ProductsPage-CVHBMUNz.js @@ -1 +1 @@ -import{n as e,t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Ct as r,Dt as i,Ft as a,It as o,Lt as s,Mt as c,Nt as l,Ot as u,Rt as d,St as f,Tt as p,_t as m,a as h,ct as g,dt as _,ft as v,gt as y,ht as b,i as x,kt as S,lt as C,n as w,o as ee,ot as T,pt as E,t as D,ut as O,xt as k}from"./index-BCImsMjH.js";var A={class:`ap`},j={key:0,class:`ap__head`},te=e(m({__name:`AdminPage`,props:{lockBody:{type:Boolean}},setup(e){return(t,n)=>(p(),E(`div`,A,[t.$slots.head?(p(),E(`header`,j,[u(t.$slots,`head`,{},void 0,!0)])):v(``,!0),O(`div`,{class:d([`ap__body`,{"ap__body--locked":e.lockBody}])},[u(t.$slots,`default`,{},void 0,!0)],2)]))}}),[[`__scopeId`,`data-v-7f365815`]]),ne={class:`toolbar !hidden lg:!flex`},re={class:`toolbar__start`},ie={class:`filter-panel`},ae={key:0,class:`filter-panel__hint`},oe={class:`mobile-products-toolbar lg:!hidden flex flex-col gap-2`},se={class:`flex items-center gap-2 w-full`},ce={key:0,class:`flex items-center gap-1.5 overflow-x-auto py-1 text-[11px] no-scrollbar`},le={key:0,class:`inline-flex items-center gap-1 bg-slate-100 text-slate-700 px-2 py-0.5 rounded-full shrink-0`},ue={key:1,class:`inline-flex items-center gap-1 bg-orange-50 text-orange-700 border border-orange-200/60 px-2 py-0.5 rounded-full shrink-0`},de={key:2,class:`inline-flex items-center gap-1 bg-blue-50 text-blue-700 border border-blue-200/60 px-2 py-0.5 rounded-full shrink-0`},fe={key:3,class:`inline-flex items-center gap-1 bg-slate-100 text-slate-700 px-2 py-0.5 rounded-full shrink-0`},pe=[`src`,`title`],me={key:1,class:`size-12 rounded bg-gray-100`},he={class:`text-xs text-gray-400`,dir:`ltr`},ge={key:0,class:`text-xs text-gray-400`},_e={class:`mobile-products-view block lg:!hidden pb-24`},ve={key:0,class:`mb-3 p-2.5 rounded-xl bg-orange-50 border border-orange-200/70 text-xs text-orange-800 flex items-center gap-2`},ye={class:`flex items-center justify-between text-xs text-slate-500 px-1 mb-2.5`},be={key:0,class:`font-mono`},xe={key:1,class:`space-y-2.5`},Se={class:`flex items-start gap-3`},Ce=[`src`],we={key:1,class:`size-14 rounded-lg bg-slate-100 shrink-0 flex items-center justify-center text-slate-300`},Te={class:`min-w-0 flex-1`},Ee={class:`flex items-start justify-between gap-2`},De={class:`text-[10px] font-mono text-slate-500 bg-slate-100 px-1.5 py-0.5 rounded shrink-0`,dir:`ltr`},Oe={class:`flex flex-wrap items-center gap-1.5 mt-1.5 text-[11px] text-slate-500`},ke={class:`text-slate-600 font-medium`},Ae={key:0,class:`text-slate-400`},je={key:1,class:`text-slate-500`},Me={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-2.5`},Ne={class:`flex items-center gap-2`},Pe={class:`flex items-center gap-1.5`},Fe=[`disabled`,`onClick`],Ie=[`disabled`,`onClick`],Le={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`ویرایش`},Re=[`onClick`],ze={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-rose-500 bg-rose-50 hover:bg-rose-100 active:bg-rose-200 transition`,title:`حذف`},Be={key:2,class:`flex items-center justify-between gap-3 pt-4 px-1`},Ve={class:`text-xs text-slate-500 font-mono`},He={class:`flex flex-col gap-4`},Ue={class:`flex items-center justify-between border-b border-slate-100 pb-3`},We={class:`flex items-center gap-2`},Ge={class:`space-y-3`},Ke={class:`flex items-center gap-2.5 pt-2 border-t border-slate-100`},qe=20,M=e(m({__name:`ProductsPage`,setup(e){let u=h(),m=ee(),A=D(),j=o(null),M=o(360),N=null;function P(){let e=j.value;if(!e)return;let t=e.querySelector(`.ant-table-pagination`),n=e.querySelector(`.ant-table-thead`),r=t?.offsetHeight??(Z.value?0:48),i=n?.offsetHeight??55;M.value=Math.max(180,e.clientHeight-r-i-16)}let F=e=>e?Number(e):void 0,Je=[`10`,`20`,`50`,`100`],I=a({categoryId:F(u.query.categoryId),groupId:F(u.query.groupId),status:u.query.status||void 0,q:typeof u.query.q==`string`?u.query.q:``,page:F(u.query.page)??1,pageSize:F(u.query.pageSize)??qe}),L=o([]),R=o(0),z=o(!1),B=o([]),V=o([]),H=o(!1),U=o(!1),W=C(()=>[I.categoryId,I.groupId,I.status].filter(Boolean).length),G=C(()=>B.value.find(e=>e.id===I.categoryId)?.name),K=C(()=>V.value.find(e=>e.id===I.groupId)?.name),q=C(()=>Math.ceil(R.value/I.pageSize)||1);function J(){I.categoryId=void 0,I.groupId=void 0,I.status=void 0,I.q=``,I.page=1,Q()}function Ye(){I.categoryId=void 0,I.groupId=void 0,I.page=1,Q()}function Xe(){I.groupId=void 0,I.page=1,Q()}function Ze(){I.status=void 0,I.page=1,Q()}function Qe(){I.q=``,I.page=1,Q()}function Y(e){e<1||e>q.value||(I.page=e,Q())}let X=e=>e.image?{url:e.image.url,fallback:!1}:{url:B.value.find(t=>t.id===e.categoryId)?.coverImage?.url??null,fallback:!0},Z=C(()=>!!I.categoryId&&!I.groupId&&!I.status&&!I.q),$e=C(()=>Z.value?200:I.pageSize),et=C(()=>!Z.value&&{current:I.page,pageSize:I.pageSize,total:R.value,showSizeChanger:!0,pageSizeOptions:Je,showQuickJumper:!0,showTotal:e=>`${e.toLocaleString(`fa-IR`)} محصول`,onChange:(e,t)=>{I.page=e,t!==I.pageSize&&(I.pageSize=t,I.page=1),Q()}});async function Q(){z.value=!0,m.replace({query:Object.fromEntries(Object.entries({...I,page:I.page===1?void 0:I.page,pageSize:I.pageSize===qe?void 0:I.pageSize}).filter(([,e])=>e))});try{let e=await w(`/admin/products`,{query:{...I,q:I.q||void 0,pageSize:$e.value}});L.value=e.items,R.value=e.total}catch(e){T.error(x(e))}finally{z.value=!1}}async function tt(){V.value=I.categoryId?(await w(`/admin/categories/${I.categoryId}`)).groups:[]}c(()=>I.categoryId,async()=>{I.groupId=void 0,await tt()}),c(()=>[I.categoryId,I.groupId,I.status],()=>{I.page=1,Q()});async function nt(e,t){try{await w(`/admin/products/${e.id}/publish`,{method:`PATCH`,body:{isPublished:t}}),e.isPublished=t,T.success(t?`محصول منتشر شد`:`محصول از سایت مخفی شد`)}catch(e){T.error(x(e))}}async function rt(e){try{let t=await w(`/admin/products/${e.id}/duplicate`,{method:`POST`});T.success(`کپی پیش‌نویس ساخته شد`),await m.push({name:`product-edit`,params:{id:t.id}})}catch(e){T.error(x(e))}}async function it(e){try{await w(`/admin/products/${e.id}`,{method:`DELETE`}),T.success(`محصول حذف شد`),await Q()}catch(e){T.error(x(e))}}async function $(e,t){let n=[...L.value],[r]=n.splice(e,1);n.splice(e+t,0,r),L.value=n;try{await w(`/admin/products/reorder`,{method:`POST`,body:{ids:n.map(e=>e.id)}})}catch(e){T.error(x(e)),await Q()}}let at=C(()=>[{title:`تصویر`,key:`image`,width:76},{title:`محصول`,key:`name`},{title:`دسته / زیرگروه`,key:`category`,width:200},{title:`انتشار`,key:`status`,width:90},...Z.value?[{title:`ترتیب`,key:`order`,width:100}]:[],{title:``,key:`actions`,width:130}]);return c([Z,z,L],async()=>{await k(),P()}),r(async()=>{try{B.value=await w(`/admin/categories`),await tt()}catch(e){T.error(x(e))}await Q(),await k(),j.value&&(N=new ResizeObserver(()=>P()),N.observe(j.value),P())}),f(()=>{N?.disconnect(),N=null}),(e,r)=>{let a=S(`a-input-search`),o=S(`a-select`),c=S(`a-button`),u=S(`a-badge`),f=S(`a-popover`),m=S(`RouterLink`),h=S(`a-switch`),x=S(`a-space`),C=S(`a-popconfirm`),w=S(`a-table`),ee=S(`a-empty`),T=S(`a-spin`),D=S(`a-drawer`);return p(),_(te,{"lock-body":``},{head:l(()=>[O(`div`,ne,[O(`div`,re,[y(a,{value:I.q,"onUpdate:value":r[0]||=e=>I.q=e,"allow-clear":``,class:`toolbar__search`,placeholder:`جستجوی نام یا کد`,onSearch:r[1]||=()=>{I.page=1,Q()}},null,8,[`value`]),y(f,{open:H.value,"onUpdate:open":r[5]||=e=>H.value=e,trigger:`click`,placement:`bottomLeft`,"overlay-style":{width:`280px`}},{content:l(()=>[O(`div`,ie,[y(o,{value:I.categoryId,"onUpdate:value":r[2]||=e=>I.categoryId=e,"allow-clear":``,style:{width:`100%`},placeholder:`همه دسته‌ها`,options:B.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`]),y(o,{value:I.groupId,"onUpdate:value":r[3]||=e=>I.groupId=e,"allow-clear":``,style:{width:`100%`},placeholder:`همه زیرگروه‌ها`,disabled:!V.value.length,options:V.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`disabled`,`options`]),y(o,{value:I.status,"onUpdate:value":r[4]||=e=>I.status=e,"allow-clear":``,style:{width:`100%`},placeholder:`همه وضعیت‌ها`,options:[{value:`published`,label:`منتشرشده`},{value:`draft`,label:`پیش‌نویس / مخفی`}]},null,8,[`value`]),I.categoryId&&!Z.value?(p(),E(`p`,ae,` برای تغییر ترتیب، فقط فیلتر دسته را نگه دارید. `)):v(``,!0)])]),default:l(()=>[y(u,{count:W.value,offset:[-4,4],color:`#ff5a00`},{default:l(()=>[y(c,null,{icon:l(()=>[y(t,{name:`filter`,size:16})]),default:l(()=>[r[18]||=b(` فیلتر `,-1)]),_:1})]),_:1},8,[`count`])]),_:1},8,[`open`])]),y(m,{class:`toolbar__new`,to:{name:`product-new`,query:I.categoryId?{categoryId:I.categoryId}:{}}},{default:l(()=>[y(c,{type:`primary`},{icon:l(()=>[y(t,{name:`add`,size:16})]),default:l(()=>[r[19]||=b(` محصول جدید `,-1)]),_:1})]),_:1},8,[`to`])]),O(`div`,oe,[O(`div`,se,[y(a,{value:I.q,"onUpdate:value":r[6]||=e=>I.q=e,"allow-clear":``,class:`flex-1`,placeholder:`جستجوی نام یا کد کالا...`,onSearch:r[7]||=()=>{I.page=1,Q()}},null,8,[`value`]),y(u,{count:W.value,offset:[-2,2],color:`#ff5a00`},{default:l(()=>[y(c,{class:`!h-9 !px-3 !rounded-lg !flex !items-center !gap-1.5`,type:W.value>0?`primary`:`default`,ghost:W.value>0,onClick:r[8]||=e=>U.value=!0},{icon:l(()=>[y(t,{name:`filter`,size:16})]),default:l(()=>[r[20]||=O(`span`,{class:`text-xs`},`فیلتر`,-1)]),_:1},8,[`type`,`ghost`])]),_:1},8,[`count`])]),W.value>0||I.q?(p(),E(`div`,ce,[I.q?(p(),E(`span`,le,[b(` جستجو: «`+n(I.q)+`» `,1),O(`button`,{type:`button`,class:`text-slate-400 hover:text-slate-600`,onClick:Qe},`✕`)])):v(``,!0),G.value?(p(),E(`span`,ue,[b(n(G.value)+` `,1),O(`button`,{type:`button`,class:`text-orange-400 hover:text-orange-700`,onClick:Ye},`✕`)])):v(``,!0),K.value?(p(),E(`span`,de,[b(n(K.value)+` `,1),O(`button`,{type:`button`,class:`text-blue-400 hover:text-blue-700`,onClick:Xe},`✕`)])):v(``,!0),I.status?(p(),E(`span`,fe,[b(n(I.status===`published`?`منتشرشده`:`پیش‌نویس / مخفی`)+` `,1),O(`button`,{type:`button`,class:`text-slate-400 hover:text-slate-700`,onClick:Ze},`✕`)])):v(``,!0),O(`button`,{type:`button`,class:`text-[10px] text-rose-500 font-medium hover:underline shrink-0 px-1`,onClick:J},` حذف همه `)])):v(``,!0)])]),default:l(()=>[O(`div`,{ref_key:`tableShell`,ref:j,class:`table-shell !hidden lg:!flex`},[y(w,{class:`table-shell__table`,columns:at.value,"data-source":L.value,loading:z.value,"row-key":`id`,scroll:{x:760,y:M.value},pagination:et.value},{bodyCell:l(({column:e,record:r,index:i})=>[e.key===`image`?(p(),E(g,{key:0},[X(r).url?(p(),E(`img`,{key:0,src:X(r).url,alt:``,title:X(r).fallback?`این محصول عکس ندارد؛ کاور دسته نمایش داده شده`:void 0,class:d([`size-12 rounded bg-gray-50 object-contain`,X(r).fallback&&`opacity-40 grayscale`])},null,10,pe)):(p(),E(`div`,me))],64)):e.key===`name`?(p(),E(g,{key:1},[y(m,{to:{name:`product-edit`,params:{id:r.id}},class:`font-bold text-[#0f172a] hover:text-[#ff5a00]`},{default:l(()=>[b(n(r.name),1)]),_:2},1032,[`to`]),O(`div`,he,n(r.code),1)],64)):e.key===`category`?(p(),E(g,{key:2},[O(`div`,null,n(r.category.name),1),r.group?(p(),E(`div`,ge,n(r.group.name),1)):v(``,!0)],64)):e.key===`status`?(p(),_(h,{key:3,checked:r.isPublished,size:`small`,onChange:e=>nt(r,!!e)},null,8,[`checked`,`onChange`])):e.key===`order`?(p(),_(x,{key:4,size:4},{default:l(()=>[y(c,{size:`small`,disabled:i===0,onClick:e=>$(i,-1)},{icon:l(()=>[y(t,{name:`arrow-up`,size:14})]),_:1},8,[`disabled`,`onClick`]),y(c,{size:`small`,disabled:i===L.value.length-1,onClick:e=>$(i,1)},{icon:l(()=>[y(t,{name:`arrow-down`,size:14})]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)):e.key===`actions`?(p(),_(x,{key:5,size:4},{default:l(()=>[y(m,{to:{name:`product-edit`,params:{id:r.id}}},{default:l(()=>[y(c,{size:`small`,title:`ویرایش`},{icon:l(()=>[y(t,{name:`edit-2`,size:14})]),_:1})]),_:1},8,[`to`]),y(c,{size:`small`,title:`کپی`,onClick:e=>rt(r)},{icon:l(()=>[y(t,{name:`copy`,size:14})]),_:1},8,[`onClick`]),s(A).isAdmin?(p(),_(C,{key:0,title:`این محصول حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>it(r)},{default:l(()=>[y(c,{size:`small`,danger:``,title:`حذف`},{icon:l(()=>[y(t,{name:`trash`,size:14})]),_:1})]),_:1},8,[`onConfirm`])):v(``,!0)]),_:2},1024)):v(``,!0)]),_:1},8,[`columns`,`data-source`,`loading`,`scroll`,`pagination`])],512),O(`div`,_e,[Z.value?(p(),E(`div`,ve,[y(t,{name:`info-circle`,size:18,class:`text-orange-600 shrink-0`}),r[21]||=O(`span`,null,`حالت تغییر ترتیب فعال است. می‌توانید با فلش‌ها ترتیب کالاها را عوض کنید.`,-1)])):v(``,!0),O(`div`,ye,[O(`span`,null,n(R.value.toLocaleString(`fa-IR`))+` محصول`,1),!Z.value&&q.value>1?(p(),E(`span`,be,` صفحه `+n(I.page.toLocaleString(`fa-IR`))+` از `+n(q.value.toLocaleString(`fa-IR`)),1)):v(``,!0)]),y(T,{spinning:z.value},{default:l(()=>[!L.value.length&&!z.value?(p(),_(ee,{key:0,description:`محصولی با این مشخصات یافت نشد`,class:`py-12`})):(p(),E(`div`,xe,[(p(!0),E(g,null,i(L.value,(e,r)=>(p(),E(`div`,{key:e.id,class:`bg-white rounded-xl border border-slate-200/80 p-3 shadow-2xs transition active:bg-slate-50/50`},[O(`div`,Se,[X(e).url?(p(),E(`img`,{key:0,src:X(e).url,alt:``,class:d([`size-14 rounded-lg bg-slate-50 object-contain shrink-0 border border-slate-100`,X(e).fallback&&`opacity-40 grayscale`])},null,10,Ce)):(p(),E(`div`,we,[y(t,{name:`gallery`,size:20})])),O(`div`,Te,[O(`div`,Ee,[y(m,{to:{name:`product-edit`,params:{id:e.id}},class:`font-bold text-[13px] text-slate-800 hover:text-orange-600 line-clamp-2 leading-snug`},{default:l(()=>[b(n(e.name),1)]),_:2},1032,[`to`]),O(`span`,De,n(e.code),1)]),O(`div`,Oe,[O(`span`,ke,n(e.category.name),1),e.group?(p(),E(`span`,Ae,`/`)):v(``,!0),e.group?(p(),E(`span`,je,n(e.group.name),1)):v(``,!0)])])]),O(`div`,Me,[O(`div`,Ne,[y(h,{checked:e.isPublished,size:`small`,onChange:t=>nt(e,!!t)},null,8,[`checked`,`onChange`]),O(`span`,{class:d([`text-xs`,e.isPublished?`text-emerald-600 font-medium`:`text-slate-400`])},n(e.isPublished?`منتشرشده`:`پیش‌نویس`),3)]),O(`div`,Pe,[Z.value?(p(),E(g,{key:0},[O(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===0,onClick:e=>$(r,-1)},[y(t,{name:`arrow-up`,size:16})],8,Fe),O(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===L.value.length-1,onClick:e=>$(r,1)},[y(t,{name:`arrow-down`,size:16})],8,Ie)],64)):v(``,!0),y(m,{to:{name:`product-edit`,params:{id:e.id}}},{default:l(()=>[O(`button`,Le,[y(t,{name:`edit-2`,size:16})])]),_:1},8,[`to`]),O(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`تکثیر / کپی`,onClick:t=>rt(e)},[y(t,{name:`copy`,size:16})],8,Re),s(A).isAdmin?(p(),_(C,{key:1,title:`این محصول حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:t=>it(e)},{default:l(()=>[O(`button`,ze,[y(t,{name:`trash`,size:16})])]),_:1},8,[`onConfirm`])):v(``,!0)])])]))),128))])),!Z.value&&q.value>1?(p(),E(`div`,Be,[y(c,{disabled:I.page<=1,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:r[9]||=e=>Y(I.page-1)},{default:l(()=>[...r[22]||=[b(` صفحه قبلی `,-1)]]),_:1},8,[`disabled`]),O(`span`,Ve,n(I.page.toLocaleString(`fa-IR`))+` / `+n(q.value.toLocaleString(`fa-IR`)),1),y(c,{disabled:I.page>=q.value,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:r[10]||=e=>Y(I.page+1)},{default:l(()=>[...r[23]||=[b(` صفحه بعدی `,-1)]]),_:1},8,[`disabled`])])):v(``,!0)]),_:1},8,[`spinning`]),y(m,{to:{name:`product-new`,query:I.categoryId?{categoryId:I.categoryId}:{}},class:`fixed start-4 bottom-[72px] z-30 flex items-center gap-2 px-4 py-2.5 rounded-full bg-linear-to-r from-[#ff5a00] to-[#ff7a29] text-white font-bold text-xs shadow-lg shadow-orange-500/30 active:scale-95 transition`},{default:l(()=>[y(t,{name:`add`,size:18}),r[24]||=O(`span`,null,`محصول جدید`,-1)]),_:1},8,[`to`])]),y(D,{open:U.value,"onUpdate:open":r[17]||=e=>U.value=e,placement:`bottom`,height:`auto`,closable:!1,class:`mobile-filter-drawer`,"body-style":{padding:`16px 20px 24px`,background:`#ffffff`,borderTopLeftRadius:`20px`,borderTopRightRadius:`20px`}},{default:l(()=>[O(`div`,He,[O(`div`,Ue,[O(`div`,We,[y(t,{name:`filter`,size:18,class:`text-orange-600`}),r[25]||=O(`span`,{class:`text-sm font-bold text-slate-800`},`فیلترهای کاتالوگ`,-1)]),O(`button`,{type:`button`,class:`text-xs text-slate-400 hover:text-slate-600`,onClick:r[11]||=e=>U.value=!1},` بستن `)]),O(`div`,Ge,[O(`div`,null,[r[26]||=O(`label`,{class:`block text-xs font-semibold text-slate-700 mb-1.5`},`دسته‌بندی`,-1),y(o,{value:I.categoryId,"onUpdate:value":r[12]||=e=>I.categoryId=e,"allow-clear":``,size:`large`,style:{width:`100%`},placeholder:`همه دسته‌ها`,options:B.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`])]),O(`div`,null,[r[27]||=O(`label`,{class:`block text-xs font-semibold text-slate-700 mb-1.5`},`زیرگروه کالا`,-1),y(o,{value:I.groupId,"onUpdate:value":r[13]||=e=>I.groupId=e,"allow-clear":``,size:`large`,style:{width:`100%`},placeholder:`همه زیرگروه‌ها`,disabled:!V.value.length,options:V.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`disabled`,`options`])]),O(`div`,null,[r[28]||=O(`label`,{class:`block text-xs font-semibold text-slate-700 mb-1.5`},`وضعیت انتشار`,-1),y(o,{value:I.status,"onUpdate:value":r[14]||=e=>I.status=e,"allow-clear":``,size:`large`,style:{width:`100%`},placeholder:`همه وضعیت‌ها`,options:[{value:`published`,label:`منتشرشده در سایت`},{value:`draft`,label:`پیش‌نویس / مخفی`}]},null,8,[`value`])])]),O(`div`,Ke,[W.value>0?(p(),_(c,{key:0,danger:``,class:`!h-11 !rounded-xl`,onClick:r[15]||=e=>{J(),U.value=!1}},{default:l(()=>[...r[29]||=[b(` حذف فیلترها `,-1)]]),_:1})):v(``,!0),y(c,{type:`primary`,block:``,class:`!h-11 !rounded-xl !font-bold`,onClick:r[16]||=e=>{U.value=!1,Q()}},{default:l(()=>[...r[30]||=[b(` اعمال فیلترها `,-1)]]),_:1})])])]),_:1},8,[`open`])]),_:1})}}}),[[`__scopeId`,`data-v-a64d8be2`]]);export{M as default}; \ No newline at end of file +import{n as e,t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Ct as r,Dt as i,Ft as a,It as o,Lt as s,Mt as c,Nt as l,Ot as u,Rt as d,St as f,Tt as p,_t as m,a as h,ct as g,dt as _,ft as v,gt as y,ht as b,i as x,kt as S,lt as C,n as w,o as ee,ot as T,pt as E,t as D,ut as O,xt as k}from"./index-BuGK6ptM.js";var A={class:`ap`},j={key:0,class:`ap__head`},te=e(m({__name:`AdminPage`,props:{lockBody:{type:Boolean}},setup(e){return(t,n)=>(p(),E(`div`,A,[t.$slots.head?(p(),E(`header`,j,[u(t.$slots,`head`,{},void 0,!0)])):v(``,!0),O(`div`,{class:d([`ap__body`,{"ap__body--locked":e.lockBody}])},[u(t.$slots,`default`,{},void 0,!0)],2)]))}}),[[`__scopeId`,`data-v-7f365815`]]),ne={class:`toolbar !hidden lg:!flex`},re={class:`toolbar__start`},ie={class:`filter-panel`},ae={key:0,class:`filter-panel__hint`},oe={class:`mobile-products-toolbar lg:!hidden flex flex-col gap-2`},se={class:`flex items-center gap-2 w-full`},ce={key:0,class:`flex items-center gap-1.5 overflow-x-auto py-1 text-[11px] no-scrollbar`},le={key:0,class:`inline-flex items-center gap-1 bg-slate-100 text-slate-700 px-2 py-0.5 rounded-full shrink-0`},ue={key:1,class:`inline-flex items-center gap-1 bg-orange-50 text-orange-700 border border-orange-200/60 px-2 py-0.5 rounded-full shrink-0`},de={key:2,class:`inline-flex items-center gap-1 bg-blue-50 text-blue-700 border border-blue-200/60 px-2 py-0.5 rounded-full shrink-0`},fe={key:3,class:`inline-flex items-center gap-1 bg-slate-100 text-slate-700 px-2 py-0.5 rounded-full shrink-0`},pe=[`src`,`title`],me={key:1,class:`size-12 rounded bg-gray-100`},he={class:`text-xs text-gray-400`,dir:`ltr`},ge={key:0,class:`text-xs text-gray-400`},_e={class:`mobile-products-view block lg:!hidden pb-24`},ve={key:0,class:`mb-3 p-2.5 rounded-xl bg-orange-50 border border-orange-200/70 text-xs text-orange-800 flex items-center gap-2`},ye={class:`flex items-center justify-between text-xs text-slate-500 px-1 mb-2.5`},be={key:0,class:`font-mono`},xe={key:1,class:`space-y-2.5`},Se={class:`flex items-start gap-3`},Ce=[`src`],we={key:1,class:`size-14 rounded-lg bg-slate-100 shrink-0 flex items-center justify-center text-slate-300`},Te={class:`min-w-0 flex-1`},Ee={class:`flex items-start justify-between gap-2`},De={class:`text-[10px] font-mono text-slate-500 bg-slate-100 px-1.5 py-0.5 rounded shrink-0`,dir:`ltr`},Oe={class:`flex flex-wrap items-center gap-1.5 mt-1.5 text-[11px] text-slate-500`},ke={class:`text-slate-600 font-medium`},Ae={key:0,class:`text-slate-400`},je={key:1,class:`text-slate-500`},Me={class:`flex items-center justify-between border-t border-slate-100 pt-2.5 mt-2.5`},Ne={class:`flex items-center gap-2`},Pe={class:`flex items-center gap-1.5`},Fe=[`disabled`,`onClick`],Ie=[`disabled`,`onClick`],Le={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`ویرایش`},Re=[`onClick`],ze={type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-rose-500 bg-rose-50 hover:bg-rose-100 active:bg-rose-200 transition`,title:`حذف`},Be={key:2,class:`flex items-center justify-between gap-3 pt-4 px-1`},Ve={class:`text-xs text-slate-500 font-mono`},He={class:`flex flex-col gap-4`},Ue={class:`flex items-center justify-between border-b border-slate-100 pb-3`},We={class:`flex items-center gap-2`},Ge={class:`space-y-3`},Ke={class:`flex items-center gap-2.5 pt-2 border-t border-slate-100`},qe=20,M=e(m({__name:`ProductsPage`,setup(e){let u=h(),m=ee(),A=D(),j=o(null),M=o(360),N=null;function P(){let e=j.value;if(!e)return;let t=e.querySelector(`.ant-table-pagination`),n=e.querySelector(`.ant-table-thead`),r=t?.offsetHeight??(Z.value?0:48),i=n?.offsetHeight??55;M.value=Math.max(180,e.clientHeight-r-i-16)}let F=e=>e?Number(e):void 0,Je=[`10`,`20`,`50`,`100`],I=a({categoryId:F(u.query.categoryId),groupId:F(u.query.groupId),status:u.query.status||void 0,q:typeof u.query.q==`string`?u.query.q:``,page:F(u.query.page)??1,pageSize:F(u.query.pageSize)??qe}),L=o([]),R=o(0),z=o(!1),B=o([]),V=o([]),H=o(!1),U=o(!1),W=C(()=>[I.categoryId,I.groupId,I.status].filter(Boolean).length),G=C(()=>B.value.find(e=>e.id===I.categoryId)?.name),K=C(()=>V.value.find(e=>e.id===I.groupId)?.name),q=C(()=>Math.ceil(R.value/I.pageSize)||1);function J(){I.categoryId=void 0,I.groupId=void 0,I.status=void 0,I.q=``,I.page=1,Q()}function Ye(){I.categoryId=void 0,I.groupId=void 0,I.page=1,Q()}function Xe(){I.groupId=void 0,I.page=1,Q()}function Ze(){I.status=void 0,I.page=1,Q()}function Qe(){I.q=``,I.page=1,Q()}function Y(e){e<1||e>q.value||(I.page=e,Q())}let X=e=>e.image?{url:e.image.url,fallback:!1}:{url:B.value.find(t=>t.id===e.categoryId)?.coverImage?.url??null,fallback:!0},Z=C(()=>!!I.categoryId&&!I.groupId&&!I.status&&!I.q),$e=C(()=>Z.value?200:I.pageSize),et=C(()=>!Z.value&&{current:I.page,pageSize:I.pageSize,total:R.value,showSizeChanger:!0,pageSizeOptions:Je,showQuickJumper:!0,showTotal:e=>`${e.toLocaleString(`fa-IR`)} محصول`,onChange:(e,t)=>{I.page=e,t!==I.pageSize&&(I.pageSize=t,I.page=1),Q()}});async function Q(){z.value=!0,m.replace({query:Object.fromEntries(Object.entries({...I,page:I.page===1?void 0:I.page,pageSize:I.pageSize===qe?void 0:I.pageSize}).filter(([,e])=>e))});try{let e=await w(`/admin/products`,{query:{...I,q:I.q||void 0,pageSize:$e.value}});L.value=e.items,R.value=e.total}catch(e){T.error(x(e))}finally{z.value=!1}}async function tt(){V.value=I.categoryId?(await w(`/admin/categories/${I.categoryId}`)).groups:[]}c(()=>I.categoryId,async()=>{I.groupId=void 0,await tt()}),c(()=>[I.categoryId,I.groupId,I.status],()=>{I.page=1,Q()});async function nt(e,t){try{await w(`/admin/products/${e.id}/publish`,{method:`PATCH`,body:{isPublished:t}}),e.isPublished=t,T.success(t?`محصول منتشر شد`:`محصول از سایت مخفی شد`)}catch(e){T.error(x(e))}}async function rt(e){try{let t=await w(`/admin/products/${e.id}/duplicate`,{method:`POST`});T.success(`کپی پیش‌نویس ساخته شد`),await m.push({name:`product-edit`,params:{id:t.id}})}catch(e){T.error(x(e))}}async function it(e){try{await w(`/admin/products/${e.id}`,{method:`DELETE`}),T.success(`محصول حذف شد`),await Q()}catch(e){T.error(x(e))}}async function $(e,t){let n=[...L.value],[r]=n.splice(e,1);n.splice(e+t,0,r),L.value=n;try{await w(`/admin/products/reorder`,{method:`POST`,body:{ids:n.map(e=>e.id)}})}catch(e){T.error(x(e)),await Q()}}let at=C(()=>[{title:`تصویر`,key:`image`,width:76},{title:`محصول`,key:`name`},{title:`دسته / زیرگروه`,key:`category`,width:200},{title:`انتشار`,key:`status`,width:90},...Z.value?[{title:`ترتیب`,key:`order`,width:100}]:[],{title:``,key:`actions`,width:130}]);return c([Z,z,L],async()=>{await k(),P()}),r(async()=>{try{B.value=await w(`/admin/categories`),await tt()}catch(e){T.error(x(e))}await Q(),await k(),j.value&&(N=new ResizeObserver(()=>P()),N.observe(j.value),P())}),f(()=>{N?.disconnect(),N=null}),(e,r)=>{let a=S(`a-input-search`),o=S(`a-select`),c=S(`a-button`),u=S(`a-badge`),f=S(`a-popover`),m=S(`RouterLink`),h=S(`a-switch`),x=S(`a-space`),C=S(`a-popconfirm`),w=S(`a-table`),ee=S(`a-empty`),T=S(`a-spin`),D=S(`a-drawer`);return p(),_(te,{"lock-body":``},{head:l(()=>[O(`div`,ne,[O(`div`,re,[y(a,{value:I.q,"onUpdate:value":r[0]||=e=>I.q=e,"allow-clear":``,class:`toolbar__search`,placeholder:`جستجوی نام یا کد`,onSearch:r[1]||=()=>{I.page=1,Q()}},null,8,[`value`]),y(f,{open:H.value,"onUpdate:open":r[5]||=e=>H.value=e,trigger:`click`,placement:`bottomLeft`,"overlay-style":{width:`280px`}},{content:l(()=>[O(`div`,ie,[y(o,{value:I.categoryId,"onUpdate:value":r[2]||=e=>I.categoryId=e,"allow-clear":``,style:{width:`100%`},placeholder:`همه دسته‌ها`,options:B.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`]),y(o,{value:I.groupId,"onUpdate:value":r[3]||=e=>I.groupId=e,"allow-clear":``,style:{width:`100%`},placeholder:`همه زیرگروه‌ها`,disabled:!V.value.length,options:V.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`disabled`,`options`]),y(o,{value:I.status,"onUpdate:value":r[4]||=e=>I.status=e,"allow-clear":``,style:{width:`100%`},placeholder:`همه وضعیت‌ها`,options:[{value:`published`,label:`منتشرشده`},{value:`draft`,label:`پیش‌نویس / مخفی`}]},null,8,[`value`]),I.categoryId&&!Z.value?(p(),E(`p`,ae,` برای تغییر ترتیب، فقط فیلتر دسته را نگه دارید. `)):v(``,!0)])]),default:l(()=>[y(u,{count:W.value,offset:[-4,4],color:`#ff5a00`},{default:l(()=>[y(c,null,{icon:l(()=>[y(t,{name:`filter`,size:16})]),default:l(()=>[r[18]||=b(` فیلتر `,-1)]),_:1})]),_:1},8,[`count`])]),_:1},8,[`open`])]),y(m,{class:`toolbar__new`,to:{name:`product-new`,query:I.categoryId?{categoryId:I.categoryId}:{}}},{default:l(()=>[y(c,{type:`primary`},{icon:l(()=>[y(t,{name:`add`,size:16})]),default:l(()=>[r[19]||=b(` محصول جدید `,-1)]),_:1})]),_:1},8,[`to`])]),O(`div`,oe,[O(`div`,se,[y(a,{value:I.q,"onUpdate:value":r[6]||=e=>I.q=e,"allow-clear":``,class:`flex-1`,placeholder:`جستجوی نام یا کد کالا...`,onSearch:r[7]||=()=>{I.page=1,Q()}},null,8,[`value`]),y(u,{count:W.value,offset:[-2,2],color:`#ff5a00`},{default:l(()=>[y(c,{class:`!h-9 !px-3 !rounded-lg !flex !items-center !gap-1.5`,type:W.value>0?`primary`:`default`,ghost:W.value>0,onClick:r[8]||=e=>U.value=!0},{icon:l(()=>[y(t,{name:`filter`,size:16})]),default:l(()=>[r[20]||=O(`span`,{class:`text-xs`},`فیلتر`,-1)]),_:1},8,[`type`,`ghost`])]),_:1},8,[`count`])]),W.value>0||I.q?(p(),E(`div`,ce,[I.q?(p(),E(`span`,le,[b(` جستجو: «`+n(I.q)+`» `,1),O(`button`,{type:`button`,class:`text-slate-400 hover:text-slate-600`,onClick:Qe},`✕`)])):v(``,!0),G.value?(p(),E(`span`,ue,[b(n(G.value)+` `,1),O(`button`,{type:`button`,class:`text-orange-400 hover:text-orange-700`,onClick:Ye},`✕`)])):v(``,!0),K.value?(p(),E(`span`,de,[b(n(K.value)+` `,1),O(`button`,{type:`button`,class:`text-blue-400 hover:text-blue-700`,onClick:Xe},`✕`)])):v(``,!0),I.status?(p(),E(`span`,fe,[b(n(I.status===`published`?`منتشرشده`:`پیش‌نویس / مخفی`)+` `,1),O(`button`,{type:`button`,class:`text-slate-400 hover:text-slate-700`,onClick:Ze},`✕`)])):v(``,!0),O(`button`,{type:`button`,class:`text-[10px] text-rose-500 font-medium hover:underline shrink-0 px-1`,onClick:J},` حذف همه `)])):v(``,!0)])]),default:l(()=>[O(`div`,{ref_key:`tableShell`,ref:j,class:`table-shell !hidden lg:!flex`},[y(w,{class:`table-shell__table`,columns:at.value,"data-source":L.value,loading:z.value,"row-key":`id`,scroll:{x:760,y:M.value},pagination:et.value},{bodyCell:l(({column:e,record:r,index:i})=>[e.key===`image`?(p(),E(g,{key:0},[X(r).url?(p(),E(`img`,{key:0,src:X(r).url,alt:``,title:X(r).fallback?`این محصول عکس ندارد؛ کاور دسته نمایش داده شده`:void 0,class:d([`size-12 rounded bg-gray-50 object-contain`,X(r).fallback&&`opacity-40 grayscale`])},null,10,pe)):(p(),E(`div`,me))],64)):e.key===`name`?(p(),E(g,{key:1},[y(m,{to:{name:`product-edit`,params:{id:r.id}},class:`font-bold text-[#0f172a] hover:text-[#ff5a00]`},{default:l(()=>[b(n(r.name),1)]),_:2},1032,[`to`]),O(`div`,he,n(r.code),1)],64)):e.key===`category`?(p(),E(g,{key:2},[O(`div`,null,n(r.category.name),1),r.group?(p(),E(`div`,ge,n(r.group.name),1)):v(``,!0)],64)):e.key===`status`?(p(),_(h,{key:3,checked:r.isPublished,size:`small`,onChange:e=>nt(r,!!e)},null,8,[`checked`,`onChange`])):e.key===`order`?(p(),_(x,{key:4,size:4},{default:l(()=>[y(c,{size:`small`,disabled:i===0,onClick:e=>$(i,-1)},{icon:l(()=>[y(t,{name:`arrow-up`,size:14})]),_:1},8,[`disabled`,`onClick`]),y(c,{size:`small`,disabled:i===L.value.length-1,onClick:e=>$(i,1)},{icon:l(()=>[y(t,{name:`arrow-down`,size:14})]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)):e.key===`actions`?(p(),_(x,{key:5,size:4},{default:l(()=>[y(m,{to:{name:`product-edit`,params:{id:r.id}}},{default:l(()=>[y(c,{size:`small`,title:`ویرایش`},{icon:l(()=>[y(t,{name:`edit-2`,size:14})]),_:1})]),_:1},8,[`to`]),y(c,{size:`small`,title:`کپی`,onClick:e=>rt(r)},{icon:l(()=>[y(t,{name:`copy`,size:14})]),_:1},8,[`onClick`]),s(A).isAdmin?(p(),_(C,{key:0,title:`این محصول حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>it(r)},{default:l(()=>[y(c,{size:`small`,danger:``,title:`حذف`},{icon:l(()=>[y(t,{name:`trash`,size:14})]),_:1})]),_:1},8,[`onConfirm`])):v(``,!0)]),_:2},1024)):v(``,!0)]),_:1},8,[`columns`,`data-source`,`loading`,`scroll`,`pagination`])],512),O(`div`,_e,[Z.value?(p(),E(`div`,ve,[y(t,{name:`info-circle`,size:18,class:`text-orange-600 shrink-0`}),r[21]||=O(`span`,null,`حالت تغییر ترتیب فعال است. می‌توانید با فلش‌ها ترتیب کالاها را عوض کنید.`,-1)])):v(``,!0),O(`div`,ye,[O(`span`,null,n(R.value.toLocaleString(`fa-IR`))+` محصول`,1),!Z.value&&q.value>1?(p(),E(`span`,be,` صفحه `+n(I.page.toLocaleString(`fa-IR`))+` از `+n(q.value.toLocaleString(`fa-IR`)),1)):v(``,!0)]),y(T,{spinning:z.value},{default:l(()=>[!L.value.length&&!z.value?(p(),_(ee,{key:0,description:`محصولی با این مشخصات یافت نشد`,class:`py-12`})):(p(),E(`div`,xe,[(p(!0),E(g,null,i(L.value,(e,r)=>(p(),E(`div`,{key:e.id,class:`bg-white rounded-xl border border-slate-200/80 p-3 shadow-2xs transition active:bg-slate-50/50`},[O(`div`,Se,[X(e).url?(p(),E(`img`,{key:0,src:X(e).url,alt:``,class:d([`size-14 rounded-lg bg-slate-50 object-contain shrink-0 border border-slate-100`,X(e).fallback&&`opacity-40 grayscale`])},null,10,Ce)):(p(),E(`div`,we,[y(t,{name:`gallery`,size:20})])),O(`div`,Te,[O(`div`,Ee,[y(m,{to:{name:`product-edit`,params:{id:e.id}},class:`font-bold text-[13px] text-slate-800 hover:text-orange-600 line-clamp-2 leading-snug`},{default:l(()=>[b(n(e.name),1)]),_:2},1032,[`to`]),O(`span`,De,n(e.code),1)]),O(`div`,Oe,[O(`span`,ke,n(e.category.name),1),e.group?(p(),E(`span`,Ae,`/`)):v(``,!0),e.group?(p(),E(`span`,je,n(e.group.name),1)):v(``,!0)])])]),O(`div`,Me,[O(`div`,Ne,[y(h,{checked:e.isPublished,size:`small`,onChange:t=>nt(e,!!t)},null,8,[`checked`,`onChange`]),O(`span`,{class:d([`text-xs`,e.isPublished?`text-emerald-600 font-medium`:`text-slate-400`])},n(e.isPublished?`منتشرشده`:`پیش‌نویس`),3)]),O(`div`,Pe,[Z.value?(p(),E(g,{key:0},[O(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===0,onClick:e=>$(r,-1)},[y(t,{name:`arrow-up`,size:16})],8,Fe),O(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 disabled:opacity-30 disabled:pointer-events-none active:bg-slate-300 transition`,disabled:r===L.value.length-1,onClick:e=>$(r,1)},[y(t,{name:`arrow-down`,size:16})],8,Ie)],64)):v(``,!0),y(m,{to:{name:`product-edit`,params:{id:e.id}}},{default:l(()=>[O(`button`,Le,[y(t,{name:`edit-2`,size:16})])]),_:1},8,[`to`]),O(`button`,{type:`button`,class:`size-8 rounded-lg flex items-center justify-center text-slate-600 bg-slate-100 hover:bg-slate-200 active:bg-slate-300 transition`,title:`تکثیر / کپی`,onClick:t=>rt(e)},[y(t,{name:`copy`,size:16})],8,Re),s(A).isAdmin?(p(),_(C,{key:1,title:`این محصول حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:t=>it(e)},{default:l(()=>[O(`button`,ze,[y(t,{name:`trash`,size:16})])]),_:1},8,[`onConfirm`])):v(``,!0)])])]))),128))])),!Z.value&&q.value>1?(p(),E(`div`,Be,[y(c,{disabled:I.page<=1,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:r[9]||=e=>Y(I.page-1)},{default:l(()=>[...r[22]||=[b(` صفحه قبلی `,-1)]]),_:1},8,[`disabled`]),O(`span`,Ve,n(I.page.toLocaleString(`fa-IR`))+` / `+n(q.value.toLocaleString(`fa-IR`)),1),y(c,{disabled:I.page>=q.value,class:`!flex-1 !h-10 !rounded-xl !font-medium`,onClick:r[10]||=e=>Y(I.page+1)},{default:l(()=>[...r[23]||=[b(` صفحه بعدی `,-1)]]),_:1},8,[`disabled`])])):v(``,!0)]),_:1},8,[`spinning`]),y(m,{to:{name:`product-new`,query:I.categoryId?{categoryId:I.categoryId}:{}},class:`fixed start-4 bottom-[72px] z-30 flex items-center gap-2 px-4 py-2.5 rounded-full bg-linear-to-r from-[#ff5a00] to-[#ff7a29] text-white font-bold text-xs shadow-lg shadow-orange-500/30 active:scale-95 transition`},{default:l(()=>[y(t,{name:`add`,size:18}),r[24]||=O(`span`,null,`محصول جدید`,-1)]),_:1},8,[`to`])]),y(D,{open:U.value,"onUpdate:open":r[17]||=e=>U.value=e,placement:`bottom`,height:`auto`,closable:!1,class:`mobile-filter-drawer`,"body-style":{padding:`16px 20px 24px`,background:`#ffffff`,borderTopLeftRadius:`20px`,borderTopRightRadius:`20px`}},{default:l(()=>[O(`div`,He,[O(`div`,Ue,[O(`div`,We,[y(t,{name:`filter`,size:18,class:`text-orange-600`}),r[25]||=O(`span`,{class:`text-sm font-bold text-slate-800`},`فیلترهای کاتالوگ`,-1)]),O(`button`,{type:`button`,class:`text-xs text-slate-400 hover:text-slate-600`,onClick:r[11]||=e=>U.value=!1},` بستن `)]),O(`div`,Ge,[O(`div`,null,[r[26]||=O(`label`,{class:`block text-xs font-semibold text-slate-700 mb-1.5`},`دسته‌بندی`,-1),y(o,{value:I.categoryId,"onUpdate:value":r[12]||=e=>I.categoryId=e,"allow-clear":``,size:`large`,style:{width:`100%`},placeholder:`همه دسته‌ها`,options:B.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`])]),O(`div`,null,[r[27]||=O(`label`,{class:`block text-xs font-semibold text-slate-700 mb-1.5`},`زیرگروه کالا`,-1),y(o,{value:I.groupId,"onUpdate:value":r[13]||=e=>I.groupId=e,"allow-clear":``,size:`large`,style:{width:`100%`},placeholder:`همه زیرگروه‌ها`,disabled:!V.value.length,options:V.value.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`disabled`,`options`])]),O(`div`,null,[r[28]||=O(`label`,{class:`block text-xs font-semibold text-slate-700 mb-1.5`},`وضعیت انتشار`,-1),y(o,{value:I.status,"onUpdate:value":r[14]||=e=>I.status=e,"allow-clear":``,size:`large`,style:{width:`100%`},placeholder:`همه وضعیت‌ها`,options:[{value:`published`,label:`منتشرشده در سایت`},{value:`draft`,label:`پیش‌نویس / مخفی`}]},null,8,[`value`])])]),O(`div`,Ke,[W.value>0?(p(),_(c,{key:0,danger:``,class:`!h-11 !rounded-xl`,onClick:r[15]||=e=>{J(),U.value=!1}},{default:l(()=>[...r[29]||=[b(` حذف فیلترها `,-1)]]),_:1})):v(``,!0),y(c,{type:`primary`,block:``,class:`!h-11 !rounded-xl !font-bold`,onClick:r[16]||=e=>{U.value=!1,Q()}},{default:l(()=>[...r[30]||=[b(` اعمال فیلترها `,-1)]]),_:1})])])]),_:1},8,[`open`])]),_:1})}}}),[[`__scopeId`,`data-v-a64d8be2`]]);export{M as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/ProfilePage-CKqPwLoF.js b/apps/admin/dist/assets/ProfilePage-DxhVPJ4c.js similarity index 93% rename from apps/admin/dist/assets/ProfilePage-CKqPwLoF.js rename to apps/admin/dist/assets/ProfilePage-DxhVPJ4c.js index 1be2eb6..b7b8a86 100644 --- a/apps/admin/dist/assets/ProfilePage-CKqPwLoF.js +++ b/apps/admin/dist/assets/ProfilePage-DxhVPJ4c.js @@ -1 +1 @@ -import{o as e,s as t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,It as r,Lt as i,Nt as a,Tt as o,_t as s,ct as c,gt as l,ht as u,kt as d,n as f,ot as p,pt as m,st as h,t as g,ut as _}from"./index-BCImsMjH.js";import{t as v}from"./PageHeader-vyrIuh7P.js";import{n as y,t as b}from"./FormField-D95xTO-F.js";var x={class:`grid max-w-4xl gap-4 md:gap-6 md:grid-cols-2`},S={class:`flex items-center gap-3.5 mb-4 pb-4 border-b border-gray-100`},C={class:`flex size-14 items-center justify-center rounded-2xl bg-gradient-to-tr from-[#ff5a00] to-amber-500 text-xl font-black text-white shadow-md shadow-orange-500/20`},w={class:`text-base font-bold text-gray-900`},T={class:`mt-0.5 text-xs font-mono text-gray-500`,dir:`ltr`},E={dir:`ltr`,class:`font-mono`},D=s({__name:`ProfilePage`,setup(s){let D=g(),{model:O,validate:k,handleError:A,reset:j}=y(t,{currentPassword:``,newPassword:``}),M=r(!1);async function N(){let e=k();if(e){M.value=!0;try{await f(`/admin/auth/change-password`,{method:`POST`,body:e}),p.success(`رمز عبور تغییر کرد`),j({currentPassword:``,newPassword:``})}catch(e){A(e)}finally{M.value=!1}}}return(t,r)=>{let s=d(`a-descriptions-item`),f=d(`a-tag`),p=d(`a-descriptions`),g=d(`a-card`),y=d(`a-input-password`),k=d(`a-button`),A=d(`a-form`);return o(),m(c,null,[l(v,{title:`حساب کاربری`,subtitle:`مشخصات فردی، نقش دسترسی و تغییر رمز عبور ورود به سامانه`}),_(`div`,x,[l(g,{title:`مشخصات کاربری`},{default:a(()=>[_(`div`,S,[_(`div`,C,n(i(D).user?.name?.slice(0,1)||`U`),1),_(`div`,null,[_(`div`,w,n(i(D).user?.name),1),_(`div`,T,n(i(D).user?.phone),1)])]),l(p,{column:1,size:`small`},{default:a(()=>[l(s,{label:`نام`},{default:a(()=>[u(n(i(D).user?.name),1)]),_:1}),l(s,{label:`موبایل`},{default:a(()=>[_(`span`,E,n(i(D).user?.phone),1)]),_:1}),l(s,{label:`نقش دسترسی`},{default:a(()=>[l(f,{color:i(D).user?.role===`ADMIN`?`orange`:`blue`},{default:a(()=>[u(n(i(D).user&&i(e)[i(D).user.role]),1)]),_:1},8,[`color`])]),_:1})]),_:1})]),_:1}),l(g,{title:`تغییر رمز عبور`},{default:a(()=>[l(A,{layout:`vertical`,onSubmit:h(N,[`prevent`])},{default:a(()=>[l(b,{path:`currentPassword`,label:`رمز فعلی`,required:``},{default:a(()=>[l(y,{value:i(O).currentPassword,"onUpdate:value":r[0]||=e=>i(O).currentPassword=e,class:`ltr-input h-10`,autocomplete:`current-password`},null,8,[`value`])]),_:1}),l(b,{path:`newPassword`,label:`رمز جدید`,hint:`حداقل ۸ کاراکتر`,required:``},{default:a(()=>[l(y,{value:i(O).newPassword,"onUpdate:value":r[1]||=e=>i(O).newPassword=e,class:`ltr-input h-10`,autocomplete:`new-password`},null,8,[`value`])]),_:1}),l(k,{type:`primary`,"html-type":`submit`,loading:M.value,class:`w-full md:w-auto h-10 !font-bold`},{default:a(()=>[...r[2]||=[u(` تغییر رمز ورود `,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})])],64)}}});export{D as default}; \ No newline at end of file +import{o as e,s as t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,It as r,Lt as i,Nt as a,Tt as o,_t as s,ct as c,gt as l,ht as u,kt as d,n as f,ot as p,pt as m,st as h,t as g,ut as _}from"./index-BuGK6ptM.js";import{t as v}from"./PageHeader-3Ryvg2HD.js";import{n as y,t as b}from"./FormField-CiVT7mqC.js";var x={class:`grid max-w-4xl gap-4 md:gap-6 md:grid-cols-2`},S={class:`flex items-center gap-3.5 mb-4 pb-4 border-b border-gray-100`},C={class:`flex size-14 items-center justify-center rounded-2xl bg-gradient-to-tr from-[#ff5a00] to-amber-500 text-xl font-black text-white shadow-md shadow-orange-500/20`},w={class:`text-base font-bold text-gray-900`},T={class:`mt-0.5 text-xs font-mono text-gray-500`,dir:`ltr`},E={dir:`ltr`,class:`font-mono`},D=s({__name:`ProfilePage`,setup(s){let D=g(),{model:O,validate:k,handleError:A,reset:j}=y(t,{currentPassword:``,newPassword:``}),M=r(!1);async function N(){let e=k();if(e){M.value=!0;try{await f(`/admin/auth/change-password`,{method:`POST`,body:e}),p.success(`رمز عبور تغییر کرد`),j({currentPassword:``,newPassword:``})}catch(e){A(e)}finally{M.value=!1}}}return(t,r)=>{let s=d(`a-descriptions-item`),f=d(`a-tag`),p=d(`a-descriptions`),g=d(`a-card`),y=d(`a-input-password`),k=d(`a-button`),A=d(`a-form`);return o(),m(c,null,[l(v,{title:`حساب کاربری`,subtitle:`مشخصات فردی، نقش دسترسی و تغییر رمز عبور ورود به سامانه`}),_(`div`,x,[l(g,{title:`مشخصات کاربری`},{default:a(()=>[_(`div`,S,[_(`div`,C,n(i(D).user?.name?.slice(0,1)||`U`),1),_(`div`,null,[_(`div`,w,n(i(D).user?.name),1),_(`div`,T,n(i(D).user?.phone),1)])]),l(p,{column:1,size:`small`},{default:a(()=>[l(s,{label:`نام`},{default:a(()=>[u(n(i(D).user?.name),1)]),_:1}),l(s,{label:`موبایل`},{default:a(()=>[_(`span`,E,n(i(D).user?.phone),1)]),_:1}),l(s,{label:`نقش دسترسی`},{default:a(()=>[l(f,{color:i(D).user?.role===`ADMIN`?`orange`:`blue`},{default:a(()=>[u(n(i(D).user&&i(e)[i(D).user.role]),1)]),_:1},8,[`color`])]),_:1})]),_:1})]),_:1}),l(g,{title:`تغییر رمز عبور`},{default:a(()=>[l(A,{layout:`vertical`,onSubmit:h(N,[`prevent`])},{default:a(()=>[l(b,{path:`currentPassword`,label:`رمز فعلی`,required:``},{default:a(()=>[l(y,{value:i(O).currentPassword,"onUpdate:value":r[0]||=e=>i(O).currentPassword=e,class:`ltr-input h-10`,autocomplete:`current-password`},null,8,[`value`])]),_:1}),l(b,{path:`newPassword`,label:`رمز جدید`,hint:`حداقل ۸ کاراکتر`,required:``},{default:a(()=>[l(y,{value:i(O).newPassword,"onUpdate:value":r[1]||=e=>i(O).newPassword=e,class:`ltr-input h-10`,autocomplete:`new-password`},null,8,[`value`])]),_:1}),l(k,{type:`primary`,"html-type":`submit`,loading:M.value,class:`w-full md:w-auto h-10 !font-bold`},{default:a(()=>[...r[2]||=[u(` تغییر رمز ورود `,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})])],64)}}});export{D as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/SectionEditPage-BdDEZJqd.js b/apps/admin/dist/assets/SectionEditPage-BfSd3Uov.js similarity index 98% rename from apps/admin/dist/assets/SectionEditPage-BdDEZJqd.js rename to apps/admin/dist/assets/SectionEditPage-BfSd3Uov.js index d696965..6e99d72 100644 --- a/apps/admin/dist/assets/SectionEditPage-BdDEZJqd.js +++ b/apps/admin/dist/assets/SectionEditPage-BfSd3Uov.js @@ -1 +1 @@ -import{f as e,g as t,h as n,m as r,p as i,t as a}from"./VuesaxIcon-CrbgSv-1.js";import{At as o,Bt as s,It as c,Lt as l,Nt as u,Pt as d,Tt as f,_t as p,a as m,bt as h,ct as g,dt as _,ft as v,gt as y,ht as b,i as x,jt as S,kt as C,lt as w,n as T,ot as E,pt as D,st as ee,t as O,ut as k}from"./index-BCImsMjH.js";import{a as te,t as A}from"./format-NkL3G1Uq.js";import{t as j}from"./PageHeader-vyrIuh7P.js";import{n as M,t as N}from"./FormField-D95xTO-F.js";import{t as P}from"./IconSelect-n5KsEDDN.js";import{n as F,t as I}from"./ListEditor-DF9sShFo.js";var L=p({__name:`ImageRefField`,props:h({path:{},label:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(n,r)=>{let i=C(`a-input`);return f(),D(g,null,[y(N,{path:`${e.path}.url`,label:e.label,required:``},{default:u(()=>[y(F,{url:t.value.url,onPick:r[0]||=e=>t.value={url:e.url,alt:t.value.alt||e.alt}},null,8,[`url`])]),_:1},8,[`path`,`label`]),y(N,{path:`${e.path}.alt`,label:`متن جایگزین تصویر (alt)`,hint:`برای سئو و دسترسی‌پذیری؛ تصویر را در یک جمله توصیف کنید`},{default:u(()=>[y(i,{value:t.value.alt,"onUpdate:value":r[1]||=e=>t.value.alt=e},null,8,[`value`])]),_:1},8,[`path`])],64)}}}),R={class:`grid gap-x-4 md:grid-cols-2`},z=p({__name:`SectionHeadFields`,props:h({path:{default:`head`},withHighlight:{type:Boolean,default:!0},withDesc:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(n,r)=>{let i=C(`a-input`),a=C(`a-textarea`);return f(),D(`div`,R,[y(N,{path:`${e.path}.tag`,label:`برچسب بالای عنوان`,hint:`مثلاً «۰۱ — محصولات»`,required:``},{default:u(()=>[y(i,{value:t.value.tag,"onUpdate:value":r[0]||=e=>t.value.tag=e},null,8,[`value`])]),_:1},8,[`path`]),y(N,{path:`${e.path}.title`,label:`عنوان`,hint:`برای شکستن خط، Enter بزنید`,required:``},{default:u(()=>[y(a,{value:t.value.title,"onUpdate:value":r[1]||=e=>t.value.title=e,"auto-size":{minRows:2,maxRows:4}},null,8,[`value`])]),_:1},8,[`path`]),e.withHighlight?(f(),_(N,{key:0,path:`${e.path}.highlight`,label:`خط رنگی انتهای عنوان (اختیاری)`},{default:u(()=>[y(i,{value:t.value.highlight,"onUpdate:value":r[2]||=e=>t.value.highlight=e},null,8,[`value`])]),_:1},8,[`path`])):v(``,!0),e.withDesc?(f(),_(N,{key:1,path:`${e.path}.desc`,label:`توضیح زیر عنوان`,class:`md:col-span-2`},{default:u(()=>[y(a,{value:t.value.desc,"onUpdate:value":r[3]||=e=>t.value.desc=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1},8,[`path`])):v(``,!0)])}}}),B={class:`grid gap-6 xl:grid-cols-3`},V={class:`space-y-6 xl:col-span-2`},H={class:`grid gap-x-4 md:grid-cols-4`},U={class:`grid gap-x-4 md:grid-cols-2`},W={class:`space-y-6`},G=p({__name:`AboutForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-textarea`),i=C(`a-card`),a=C(`a-input`);return f(),D(`div`,B,[k(`div`,V,[y(i,{title:`عنوان و متن`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e,"with-desc":!1},null,8,[`modelValue`]),y(N,{path:`body`,label:`متن درباره ما`,required:``},{default:u(()=>[y(r,{value:t.value.body,"onUpdate:value":n[1]||=e=>t.value.body=e,"auto-size":{minRows:4,maxRows:10}},null,8,[`value`])]),_:1})]),_:1}),y(i,{title:`تایم‌لاین`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.timeline,"onUpdate:modelValue":n[2]||=e=>t.value.timeline=e,create:()=>({year:``,text:``}),max:12,"add-label":`افزودن رویداد`,"item-title":e=>e.year},{default:u(({item:e,index:t})=>[k(`div`,H,[y(N,{path:`timeline.${t}.year`,label:`سال`,required:``},{default:u(()=>[y(a,{value:e.year,"onUpdate:value":t=>e.year=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`timeline.${t}.text`,label:`رویداد`,required:``,class:`md:col-span-3`},{default:u(()=>[y(a,{value:e.text,"onUpdate:value":t=>e.text=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1}),y(i,{title:`ویژگی‌ها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.features,"onUpdate:modelValue":n[3]||=e=>t.value.features=e,create:()=>({icon:`ShieldCheck`,label:``}),max:6,"add-label":`افزودن ویژگی`,"item-title":e=>e.label},{default:u(({item:e,index:t})=>[k(`div`,U,[y(N,{path:`features.${t}.label`,label:`متن`,required:``},{default:u(()=>[y(a,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`features.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})]),k(`div`,W,[y(i,{title:`تصویر`},{default:u(()=>[y(L,{modelValue:t.value.image,"onUpdate:modelValue":n[4]||=e=>t.value.image=e,path:`image`,label:`تصویر`},null,8,[`modelValue`])]),_:1}),y(i,{title:`نشان روی تصویر`},{default:u(()=>[y(N,{path:`badge.value`,label:`عدد`,required:``},{default:u(()=>[y(a,{value:t.value.badge.value,"onUpdate:value":n[5]||=e=>t.value.badge.value=e},null,8,[`value`])]),_:1}),y(N,{path:`badge.label`,label:`متن`,hint:`برای شکستن خط Enter بزنید`,required:``},{default:u(()=>[y(r,{value:t.value.badge.label,"onUpdate:value":n[6]||=e=>t.value.badge.label=e,"auto-size":{minRows:2}},null,8,[`value`])]),_:1})]),_:1})])])}}}),K={class:`space-y-6`},q={class:`grid gap-6 lg:grid-cols-2`},J=p({__name:`ContactForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-card`),i=C(`a-input`),a=C(`a-textarea`);return f(),D(`div`,K,[y(r,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`]),n[7]||=k(`p`,{class:`text-sm text-gray-500`},`نشانی، تلفن، ایمیل و ساعات کاری از «تنظیمات سایت» خوانده می‌شوند.`,-1)]),_:1}),k(`div`,q,[y(r,{title:`کادر پاسخ‌گویی اضطراری`},{default:u(()=>[y(N,{path:`emergencyTitle`,label:`عنوان`,required:``},{default:u(()=>[y(i,{value:t.value.emergencyTitle,"onUpdate:value":n[1]||=e=>t.value.emergencyTitle=e},null,8,[`value`])]),_:1}),y(N,{path:`emergencyText`,label:`متن`,required:``},{default:u(()=>[y(a,{value:t.value.emergencyText,"onUpdate:value":n[2]||=e=>t.value.emergencyText=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1})]),_:1}),y(r,{title:`فرم`},{default:u(()=>[y(N,{path:`formTag`,label:`برچسب بالای فرم`},{default:u(()=>[y(i,{value:t.value.formTag,"onUpdate:value":n[3]||=e=>t.value.formTag=e},null,8,[`value`])]),_:1}),y(N,{path:`formTitle`,label:`عنوان فرم`,hint:`برای شکستن خط Enter بزنید`,required:``},{default:u(()=>[y(a,{value:t.value.formTitle,"onUpdate:value":n[4]||=e=>t.value.formTitle=e,"auto-size":{minRows:2}},null,8,[`value`])]),_:1}),y(N,{path:`successTitle`,label:`عنوان پیام موفقیت`,required:``},{default:u(()=>[y(i,{value:t.value.successTitle,"onUpdate:value":n[5]||=e=>t.value.successTitle=e},null,8,[`value`])]),_:1}),y(N,{path:`successText`,label:`متن پیام موفقیت`,required:``},{default:u(()=>[y(a,{value:t.value.successText,"onUpdate:value":n[6]||=e=>t.value.successText=e,"auto-size":{minRows:2}},null,8,[`value`])]),_:1})]),_:1})])])}}}),Y={class:`grid gap-x-4 md:grid-cols-3`},X=p({__name:`FooterForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-textarea`),i=C(`a-input`),a=C(`a-card`);return f(),_(a,{title:`فوتر`},{default:u(()=>[y(N,{path:`about`,label:`متن معرفی`,required:``},{default:u(()=>[y(r,{value:t.value.about,"onUpdate:value":n[0]||=e=>t.value.about=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1}),k(`div`,Y,[y(N,{path:`copyright`,label:`متن کپی‌رایت`,required:``},{default:u(()=>[y(i,{value:t.value.copyright,"onUpdate:value":n[1]||=e=>t.value.copyright=e},null,8,[`value`])]),_:1}),y(N,{path:`certLine`,label:`خط گواهی‌نامه‌ها`},{default:u(()=>[y(i,{value:t.value.certLine,"onUpdate:value":n[2]||=e=>t.value.certLine=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`emergencyNote`,label:`یادداشت پشتیبانی`},{default:u(()=>[y(i,{value:t.value.emergencyNote,"onUpdate:value":n[3]||=e=>t.value.emergencyNote=e},null,8,[`value`])]),_:1})]),n[4]||=k(`p`,{class:`text-sm text-gray-500`},`لینک دسته‌ها و اطلاعات تماس فوتر به‌صورت خودکار از دسته‌بندی‌ها و تنظیمات سایت ساخته می‌شوند.`,-1)]),_:1})}}}),Z={class:`grid gap-6 xl:grid-cols-3`},Q={class:`space-y-6 xl:col-span-2`},ne={class:`grid gap-x-4 md:grid-cols-2`},re={class:`grid gap-x-4 md:grid-cols-2`},ie={class:`grid gap-x-4 md:grid-cols-2`},ae={class:`grid gap-x-4 md:grid-cols-3`},oe={class:`space-y-6`},se=p({__name:`HeroForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-input`),i=C(`a-textarea`),a=C(`a-card`);return f(),D(`div`,Z,[k(`div`,Q,[y(a,{title:`متن‌ها`},{default:u(()=>[k(`div`,ne,[y(N,{path:`badge`,label:`نشان بالای تیتر`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.badge,"onUpdate:value":n[0]||=e=>t.value.badge=e},null,8,[`value`])]),_:1}),y(N,{path:`title`,label:`تیتر (خط اول)`,required:``},{default:u(()=>[y(r,{value:t.value.title,"onUpdate:value":n[1]||=e=>t.value.title=e},null,8,[`value`])]),_:1}),y(N,{path:`titleHighlight`,label:`تیتر (خط زرد)`,required:``},{default:u(()=>[y(r,{value:t.value.titleHighlight,"onUpdate:value":n[2]||=e=>t.value.titleHighlight=e},null,8,[`value`])]),_:1}),y(N,{path:`intro`,label:`متن معرفی`,required:``,class:`md:col-span-2`},{default:u(()=>[y(i,{value:t.value.intro,"onUpdate:value":n[3]||=e=>t.value.intro=e,"auto-size":{minRows:3,maxRows:6}},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`دکمه‌ها`},{default:u(()=>[k(`div`,re,[y(N,{path:`primaryCta.label`,label:`دکمه اصلی — متن`,required:``},{default:u(()=>[y(r,{value:t.value.primaryCta.label,"onUpdate:value":n[4]||=e=>t.value.primaryCta.label=e},null,8,[`value`])]),_:1}),y(N,{path:`primaryCta.href`,label:`دکمه اصلی — لینک`,hint:`مثلاً #contact یا /categories/...`,required:``},{default:u(()=>[y(r,{value:t.value.primaryCta.href,"onUpdate:value":n[5]||=e=>t.value.primaryCta.href=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`secondaryCta.label`,label:`دکمه دوم — متن`,required:``},{default:u(()=>[y(r,{value:t.value.secondaryCta.label,"onUpdate:value":n[6]||=e=>t.value.secondaryCta.label=e},null,8,[`value`])]),_:1}),y(N,{path:`secondaryCta.href`,label:`دکمه دوم — لینک`,required:``},{default:u(()=>[y(r,{value:t.value.secondaryCta.href,"onUpdate:value":n[7]||=e=>t.value.secondaryCta.href=e,class:`ltr-input`},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`نشان‌های گواهی`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.chips,"onUpdate:modelValue":n[8]||=e=>t.value.chips=e,create:()=>({icon:`ShieldCheck`,label:``}),max:6,"add-label":`افزودن نشان`,"item-title":e=>e.label},{default:u(({item:e,index:t})=>[k(`div`,ie,[y(N,{path:`chips.${t}.label`,label:`متن`,required:``},{default:u(()=>[y(r,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`chips.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1}),y(a,{title:`آمار پایین Hero`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.miniStats,"onUpdate:modelValue":n[9]||=e=>t.value.miniStats=e,create:()=>({value:``,label:``}),max:4,"add-label":`افزودن آمار`,"item-title":e=>e.value},{default:u(({item:e,index:t})=>[k(`div`,ae,[y(N,{path:`miniStats.${t}.value`,label:`عدد`,required:``},{default:u(()=>[y(r,{value:e.value,"onUpdate:value":t=>e.value=t,placeholder:`۱۸+`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`miniStats.${t}.label`,label:`توضیح`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})]),k(`div`,oe,[y(a,{title:`تصویر پس‌زمینه`},{default:u(()=>[y(L,{modelValue:t.value.image,"onUpdate:modelValue":n[10]||=e=>t.value.image=e,path:`image`,label:`تصویر`},null,8,[`modelValue`])]),_:1}),y(a,{title:`کارت وضعیت`},{default:u(()=>[y(N,{path:`lastInspection`,label:`تاریخ آخرین بازرسی`,hint:`خالی = نمایش داده نمی‌شود`},{default:u(()=>[y(r,{value:t.value.lastInspection,"onUpdate:value":n[11]||=e=>t.value.lastInspection=e,placeholder:`۱۴۰۴/۰۸/۱۲`},null,8,[`value`])]),_:1})]),_:1})])])}}}),ce={class:`space-y-6`},le={class:`grid gap-x-6 lg:grid-cols-2`},ue=p({__name:`IndustriesForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-card`),i=C(`a-input`);return f(),D(`div`,ce,[y(r,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`])]),_:1}),y(r,{title:`صنایع`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[1]||=e=>t.value.items=e,create:()=>({name:``,nameEn:``,count:``,image:{url:``,alt:``}}),max:12,"add-label":`افزودن صنعت`,"item-title":e=>e.name},{default:u(({item:e,index:t})=>[k(`div`,le,[k(`div`,null,[y(N,{path:`items.${t}.name`,label:`نام`,required:``},{default:u(()=>[y(i,{value:e.name,"onUpdate:value":t=>e.name=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.nameEn`,label:`نام انگلیسی`},{default:u(()=>[y(i,{value:e.nameEn,"onUpdate:value":t=>e.nameEn=t,class:`ltr-input`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.count`,label:`تعداد پروژه`,hint:`مثلاً ۱۴۰+ — خالی = نمایش داده نمی‌شود`},{default:u(()=>[y(i,{value:e.count,"onUpdate:value":t=>e.count=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])]),k(`div`,null,[y(L,{modelValue:e.image,"onUpdate:modelValue":t=>e.image=t,path:`items.${t}.image`,label:`تصویر`},null,8,[`modelValue`,`onUpdate:modelValue`,`path`])])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),de={class:`space-y-6`},fe={class:`grid gap-x-4 md:grid-cols-3`},pe=p({__name:`ProductsIntroForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-input`),i=C(`a-card`);return f(),D(`div`,de,[y(i,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`]),y(N,{path:`ctaLabel`,label:`متن دکمه کاتالوگ`,required:``},{default:u(()=>[y(r,{value:t.value.ctaLabel,"onUpdate:value":n[1]||=e=>t.value.ctaLabel=e},null,8,[`value`])]),_:1}),n[3]||=k(`p`,{class:`text-sm text-gray-500`},`کارت‌های دسته‌بندی از بخش «دسته‌بندی‌ها» مدیریت می‌شوند.`,-1)]),_:1}),y(i,{title:`کارت‌های اعتماد`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.trust,"onUpdate:modelValue":n[2]||=e=>t.value.trust=e,create:()=>({icon:`BadgeCheck`,title:``,desc:``}),max:6,"add-label":`افزودن کارت`,"item-title":e=>e.title},{default:u(({item:e,index:t})=>[k(`div`,fe,[y(N,{path:`trust.${t}.title`,label:`عنوان`,required:``},{default:u(()=>[y(r,{value:e.title,"onUpdate:value":t=>e.title=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`trust.${t}.desc`,label:`توضیح`},{default:u(()=>[y(r,{value:e.desc,"onUpdate:value":t=>e.desc=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`trust.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),me={class:`space-y-6`},he={class:`grid gap-x-4 md:grid-cols-2`},ge=p({__name:`ServicesForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`),n=()=>({icon:`ClipboardCheck`,title:``,desc:``,items:[]});return(e,r)=>{let i=C(`a-card`),a=C(`a-input`),o=C(`a-textarea`),s=C(`a-select`);return f(),D(`div`,me,[y(i,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":r[0]||=e=>t.value.head=e},null,8,[`modelValue`])]),_:1}),y(i,{title:`خدمات`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":r[1]||=e=>t.value.items=e,create:n,max:10,"add-label":`افزودن خدمت`,"item-title":e=>e.title},{default:u(({item:e,index:t})=>[k(`div`,he,[y(N,{path:`items.${t}.title`,label:`عنوان`,required:``},{default:u(()=>[y(a,{value:e.title,"onUpdate:value":t=>e.title=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.desc`,label:`توضیح`,required:``,class:`md:col-span-2`},{default:u(()=>[y(o,{value:e.desc,"onUpdate:value":t=>e.desc=t,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.items`,label:`موارد (فهرست)`,hint:`هر مورد را بنویسید و Enter بزنید`,class:`md:col-span-2`},{default:u(()=>[y(s,{value:e.items,"onUpdate:value":t=>e.items=t,mode:`tags`,open:!1},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),_e={class:`grid gap-6 xl:grid-cols-2`},ve={class:`grid gap-x-4 md:grid-cols-2`},ye={class:`grid gap-x-4 md:grid-cols-2`},be={class:`grid gap-x-4 md:grid-cols-2`},xe={class:`grid gap-x-4 md:grid-cols-3`},Se=`https://t.me/...`,Ce=p({__name:`SettingsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`),n={Saturday:`شنبه`,Sunday:`یکشنبه`,Monday:`دوشنبه`,Tuesday:`سه‌شنبه`,Wednesday:`چهارشنبه`,Thursday:`پنجشنبه`,Friday:`جمعه`},a={website:`وب‌سایت`,telegram:`تلگرام`,instagram:`اینستاگرام`,linkedin:`لینکدین`,whatsapp:`واتساپ`,bale:`بله`,eitaa:`ایتا`,aparat:`آپارات`,youtube:`یوتیوب`,email:`ایمیل (mailto:)`,phone:`تلفن (tel:)`},o=()=>({type:`telegram`,url:``}),s=e=>a[e.type],c=i.map(e=>({value:e,label:a[e]})),d=r.map(e=>({value:e,label:n[e]}));function p(e){t.value.ogImage={url:e.url,alt:t.value.ogImage.alt||e.alt,width:e.width,height:e.height}}return(e,n)=>{let r=C(`a-input`),i=C(`a-textarea`),a=C(`a-card`),m=C(`a-checkbox-group`),h=C(`a-select`);return f(),D(`div`,_e,[y(a,{title:`هویت و سئوی پیش‌فرض`},{default:u(()=>[k(`div`,ve,[y(N,{path:`name`,label:`نام شرکت`,required:``},{default:u(()=>[y(r,{value:t.value.name,"onUpdate:value":n[0]||=e=>t.value.name=e},null,8,[`value`])]),_:1}),y(N,{path:`nameEn`,label:`نام انگلیسی`,required:``},{default:u(()=>[y(r,{value:t.value.nameEn,"onUpdate:value":n[1]||=e=>t.value.nameEn=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`title`,label:`عنوان پیش‌فرض صفحات (title)`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.title,"onUpdate:value":n[2]||=e=>t.value.title=e,maxlength:120,"show-count":``},null,8,[`value`])]),_:1}),y(N,{path:`description`,label:`توضیحات متا (description)`,required:``,class:`md:col-span-2`},{default:u(()=>[y(i,{value:t.value.description,"onUpdate:value":n[3]||=e=>t.value.description=e,maxlength:400,"show-count":``,"auto-size":{minRows:3}},null,8,[`value`])]),_:1}),y(N,{path:`foundingDate`,label:`سال تأسیس (میلادی)`,required:``},{default:u(()=>[y(r,{value:t.value.foundingDate,"onUpdate:value":n[4]||=e=>t.value.foundingDate=e,class:`ltr-input`,placeholder:`2007`},null,8,[`value`])]),_:1})]),y(N,{path:`ogImage.url`,label:`تصویر اشتراک‌گذاری (Open Graph)`,hint:`ترجیحاً ۱۲۰۰×۶۳۰ پیکسل`,required:``},{default:u(()=>[y(F,{url:t.value.ogImage.url,onPick:p},null,8,[`url`])]),_:1}),y(N,{path:`ogImage.alt`,label:`متن جایگزین تصویر`},{default:u(()=>[y(r,{value:t.value.ogImage.alt,"onUpdate:value":n[5]||=e=>t.value.ogImage.alt=e},null,8,[`value`])]),_:1})]),_:1}),y(a,{title:`اطلاعات تماس`},{default:u(()=>[k(`div`,ye,[y(N,{path:`phoneDisplay`,label:`تلفن (نمایشی)`,required:``},{default:u(()=>[y(r,{value:t.value.phoneDisplay,"onUpdate:value":n[6]||=e=>t.value.phoneDisplay=e},null,8,[`value`])]),_:1}),y(N,{path:`phone`,label:`تلفن (برای لینک و گوگل)`,hint:`با کد کشور، مثلاً ‎+98-21-91008800`,required:``},{default:u(()=>[y(r,{value:t.value.phone,"onUpdate:value":n[7]||=e=>t.value.phone=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`email`,label:`ایمیل`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.email,"onUpdate:value":n[8]||=e=>t.value.email=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`address.locality`,label:`شهر`,required:``},{default:u(()=>[y(r,{value:t.value.address.locality,"onUpdate:value":n[9]||=e=>t.value.address.locality=e},null,8,[`value`])]),_:1}),y(N,{path:`address.country`,label:`کد کشور`,required:``},{default:u(()=>[y(r,{value:t.value.address.country,"onUpdate:value":n[10]||=e=>t.value.address.country=e,class:`ltr-input`,maxlength:2},null,8,[`value`])]),_:1}),y(N,{path:`address.street`,label:`نشانی`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.address.street,"onUpdate:value":n[11]||=e=>t.value.address.street=e},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`ساعات کاری`},{default:u(()=>[y(N,{path:`workingHours`,label:`متن نمایشی`,required:``},{default:u(()=>[y(r,{value:t.value.workingHours,"onUpdate:value":n[12]||=e=>t.value.workingHours=e},null,8,[`value`])]),_:1}),y(N,{path:`openingHours.days`,label:`روزهای کاری (برای گوگل)`},{default:u(()=>[y(m,{value:t.value.openingHours.days,"onUpdate:value":n[13]||=e=>t.value.openingHours.days=e,options:l(d)},null,8,[`value`,`options`])]),_:1}),k(`div`,be,[y(N,{path:`openingHours.opens`,label:`ساعت شروع`,required:``},{default:u(()=>[y(r,{value:t.value.openingHours.opens,"onUpdate:value":n[14]||=e=>t.value.openingHours.opens=e,class:`ltr-input`,placeholder:`08:00`},null,8,[`value`])]),_:1}),y(N,{path:`openingHours.closes`,label:`ساعت پایان`,required:``},{default:u(()=>[y(r,{value:t.value.openingHours.closes,"onUpdate:value":n[15]||=e=>t.value.openingHours.closes=e,class:`ltr-input`,placeholder:`17:00`},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`شبکه‌های اجتماعی و لینک‌ها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.socials,"onUpdate:modelValue":n[16]||=e=>t.value.socials=e,create:o,max:12,"add-label":`افزودن لینک`,"item-title":s},{default:u(({item:e,index:t})=>[k(`div`,xe,[y(N,{path:`socials.${t}.type`,label:`نوع`},{default:u(()=>[y(h,{value:e.type,"onUpdate:value":t=>e.type=t,options:l(c)},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1032,[`path`]),y(N,{path:`socials.${t}.url`,label:`آدرس`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:e.url,"onUpdate:value":t=>e.url=t,class:`ltr-input`,placeholder:Se},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`])]),_:1})])}}}),we={class:`space-y-6`},Te={class:`grid gap-x-4 md:grid-cols-2`},Ee={class:`grid gap-x-4 md:grid-cols-2`},De=p({__name:`StandardsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-textarea`),i=C(`a-input`),a=C(`a-card`);return f(),D(`div`,we,[y(a,{title:`عنوان و متن`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`]),k(`div`,Te,[y(N,{path:`note`,label:`کادر توضیح (اختیاری)`},{default:u(()=>[y(r,{value:t.value.note,"onUpdate:value":n[1]||=e=>t.value.note=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1}),y(N,{path:`ctaLabel`,label:`متن دکمه`,required:``},{default:u(()=>[y(i,{value:t.value.ctaLabel,"onUpdate:value":n[2]||=e=>t.value.ctaLabel=e},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`استانداردها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[3]||=e=>t.value.items=e,create:()=>({code:``,label:``}),max:12,"add-label":`افزودن استاندارد`,"item-title":e=>e.code},{default:u(({item:e,index:t})=>[k(`div`,Ee,[y(N,{path:`items.${t}.code`,label:`کد استاندارد`,required:``},{default:u(()=>[y(i,{value:e.code,"onUpdate:value":t=>e.code=t,class:`ltr-input`,placeholder:`EN 397`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.label`,label:`عنوان`,required:``},{default:u(()=>[y(i,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),Oe={class:`grid gap-x-4 md:grid-cols-4`},ke=p({__name:`StatsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-input-number`),i=C(`a-input`),a=C(`a-card`);return f(),_(a,{title:`شمارنده‌ها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[0]||=e=>t.value.items=e,create:()=>({end:0,suffix:`+`,label:``,note:``}),max:8,"add-label":`افزودن شمارنده`,"item-title":e=>e.label},{default:u(({item:e,index:t})=>[k(`div`,Oe,[y(N,{path:`items.${t}.end`,label:`عدد نهایی`,required:``},{default:u(()=>[y(r,{value:e.end,"onUpdate:value":t=>e.end=t,min:0,class:`!w-full`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.suffix`,label:`پسوند`,hint:`مثلاً + یا ٪`},{default:u(()=>[y(i,{value:e.suffix,"onUpdate:value":t=>e.suffix=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.label`,label:`عنوان`,required:``},{default:u(()=>[y(i,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.note`,label:`یادداشت انگلیسی کوچک`},{default:u(()=>[y(i,{value:e.note,"onUpdate:value":t=>e.note=t,class:`ltr-input`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})}}}),Ae=p({__name:`TapeForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-select`),i=C(`a-card`);return f(),_(i,{title:`عبارت‌های نوار متحرک`},{default:u(()=>[y(N,{path:`items`,label:`عبارت‌ها`,hint:`هر عبارت را بنویسید و Enter بزنید؛ برای حذف روی × کلیک کنید`,required:``},{default:u(()=>[y(r,{value:t.value.items,"onUpdate:value":n[0]||=e=>t.value.items=e,mode:`tags`,open:!1},null,8,[`value`])]),_:1})]),_:1})}}}),je={class:`space-y-6`},Me={class:`grid gap-x-4 md:grid-cols-2`},Ne=p({__name:`TestimonialsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-card`),i=C(`a-textarea`),a=C(`a-input`);return f(),D(`div`,je,[y(r,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e,"with-highlight":!1,"with-desc":!1},null,8,[`modelValue`])]),_:1}),y(r,{title:`نظرات`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[1]||=e=>t.value.items=e,create:()=>({text:``,name:``,role:``}),max:12,"add-label":`افزودن نظر`,"item-title":e=>e.name},{default:u(({item:e,index:t})=>[k(`div`,Me,[y(N,{path:`items.${t}.text`,label:`متن نظر`,required:``,class:`md:col-span-2`},{default:u(()=>[y(i,{value:e.text,"onUpdate:value":t=>e.text=t,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.name`,label:`نام`,required:``},{default:u(()=>[y(a,{value:e.name,"onUpdate:value":t=>e.name=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.role`,label:`سمت و سازمان`},{default:u(()=>[y(a,{value:e.role,"onUpdate:value":t=>e.role=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),Pe={key:0,class:`max-lg:hidden flex items-center gap-2 me-2`},$=[`href`],Fe={class:`lg:hidden fixed bottom-0 inset-x-0 z-30 border-t border-gray-200 bg-white/95 px-4 py-2.5 backdrop-blur-md shadow-lg flex items-center justify-between gap-3`},Ie={key:0,class:`flex items-center gap-2`},Le={class:`text-xs font-medium text-gray-700`},Re={key:1,class:`text-xs text-gray-500 font-medium`},ze={class:`flex items-center gap-2`},Be=[`href`],Ve=p({__name:`SectionEditPage`,setup(r){let i={settings:Ce,hero:se,tape:Ae,stats:ke,productsIntro:pe,about:G,services:ge,standards:De,industries:ue,testimonials:Ne,contact:J,footer:X},p=O(),h=m(),S=String(h.params.key),N=n(S),P=N?S:`hero`,{model:F,validate:I,handleError:L,reset:R}=M(t[P],{}),z=c(!1),B=c(!1),V=c(null),H=w(()=>N?e[P]:null);async function U(){try{let e=await T(`/admin/sections/${P}`),t=e.data;P!==`settings`&&t.enabled===void 0&&(t.enabled=!0),R(t),V.value=e.updatedAt,z.value=!0}catch(e){E.error(x(e))}}async function W(){let e=I();if(e){B.value=!0;try{let t=await T(`/admin/sections/${P}`,{method:`PUT`,body:e});R(t.data),V.value=t.updatedAt,E.success(`ذخیره شد؛ سایت تا چند لحظه دیگر به‌روز می‌شود`)}catch(e){L(e)}finally{B.value=!1}}}let K=c(!1);async function q(e){let t=!!e;F.value.enabled=t,K.value=!0;try{let e=await T(`/admin/sections/${P}/visibility`,{method:`PATCH`,body:{enabled:t}});F.value.enabled=e.enabled!==!1,V.value=e.updatedAt,E.success(`وضعیت نمایش به ${t?`نمایش`:`عدم نمایش`} تغییر یافت`)}catch(e){F.value.enabled=!t,E.error(x(e))}finally{K.value=!1}}return N&&U(),(e,t)=>{let n=C(`a-result`),r=C(`a-switch`),c=C(`a-button`),m=C(`a-alert`),h=C(`a-form`),x=C(`a-spin`);return l(N)?(f(),D(g,{key:1},[y(j,{title:H.value.title,subtitle:V.value?`آخرین ذخیره: ${l(te)(V.value)}`:H.value.desc,back:`/sections`},{default:u(()=>[l(P)===`settings`?v(``,!0):(f(),D(`div`,Pe,[t[1]||=k(`span`,{class:`text-sm font-medium text-gray-700`},`نمایش در سایت:`,-1),y(r,{checked:l(F)?.enabled!==!1,loading:K.value,"checked-children":`نمایش`,"un-checked-children":`مخفی`,onChange:q},null,8,[`checked`,`loading`])])),k(`a`,{href:l(A),target:`_blank`,rel:`noopener`,class:`max-lg:hidden`},[y(c,null,{default:u(()=>[...t[2]||=[b(`مشاهده سایت`,-1)]]),_:1})],8,$),y(c,{type:`primary`,class:`max-lg:hidden`,loading:B.value,disabled:!z.value||l(P)===`settings`&&!l(p).isAdmin,onClick:W},{icon:u(()=>[y(a,{name:`save-2`,size:16})]),default:u(()=>[t[3]||=b(` ذخیره `,-1)]),_:1},8,[`loading`,`disabled`])]),_:1},8,[`title`,`subtitle`]),y(x,{spinning:!z.value},{default:u(()=>[z.value&&l(P)===`settings`&&!l(p).isAdmin?(f(),_(m,{key:0,type:`error`,"show-icon":``,message:`فقط مدیر کل می‌تواند تنظیمات سایت را تغییر دهد.`,class:`mb-4`})):z.value&&l(P)!==`settings`&&l(F).enabled===!1?(f(),_(m,{key:1,type:`warning`,"show-icon":``,message:`این بخش در حال حاضر در سایت نمایش داده نمی‌شود (مخفی است).`,class:`mb-4`})):v(``,!0),z.value?(f(),_(h,{key:2,layout:`vertical`,class:`pb-20 lg:pb-0`,onSubmit:ee(W,[`prevent`])},{default:u(()=>[(f(),_(o(i[l(P)]),{modelValue:l(F),"onUpdate:modelValue":t[0]||=e=>d(F)?F.value=e:null},null,8,[`modelValue`]))]),_:1})):v(``,!0)]),_:1},8,[`spinning`]),k(`div`,Fe,[l(P)===`settings`?(f(),D(`div`,Re,`تنظیمات پایه`)):(f(),D(`div`,Ie,[y(r,{checked:l(F)?.enabled!==!1,loading:K.value,size:`small`,onChange:q},null,8,[`checked`,`loading`]),k(`span`,Le,s(l(F)?.enabled===!1?`مخفی`:`نمایش در سایت`),1)])),k(`div`,ze,[k(`a`,{href:l(A),target:`_blank`,rel:`noopener`},[y(c,{size:`middle`,class:`!px-3`,title:`مشاهده سایت`},{icon:u(()=>[y(a,{name:`eye`,size:16})]),_:1})],8,Be),y(c,{type:`primary`,size:`middle`,class:`!font-bold !px-5`,loading:B.value,disabled:!z.value||l(P)===`settings`&&!l(p).isAdmin,onClick:W},{icon:u(()=>[y(a,{name:`save-2`,size:16})]),default:u(()=>[t[4]||=b(` ذخیره تغییرات `,-1)]),_:1},8,[`loading`,`disabled`])])])],64)):(f(),_(n,{key:0,status:`404`,title:`بخش پیدا نشد`}))}}});export{Ve as default}; \ No newline at end of file +import{f as e,g as t,h as n,m as r,p as i,t as a}from"./VuesaxIcon-B2OgulS6.js";import{At as o,Bt as s,It as c,Lt as l,Nt as u,Pt as d,Tt as f,_t as p,a as m,bt as h,ct as g,dt as _,ft as v,gt as y,ht as b,i as x,jt as S,kt as C,lt as w,n as T,ot as E,pt as D,st as ee,t as O,ut as k}from"./index-BuGK6ptM.js";import{a as te,t as A}from"./format-B9MYDQJN.js";import{t as j}from"./PageHeader-3Ryvg2HD.js";import{n as M,t as N}from"./FormField-CiVT7mqC.js";import{t as P}from"./IconSelect-rJLPzIXV.js";import{n as F,t as I}from"./ListEditor-C8F91lSJ.js";var L=p({__name:`ImageRefField`,props:h({path:{},label:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(n,r)=>{let i=C(`a-input`);return f(),D(g,null,[y(N,{path:`${e.path}.url`,label:e.label,required:``},{default:u(()=>[y(F,{url:t.value.url,onPick:r[0]||=e=>t.value={url:e.url,alt:t.value.alt||e.alt}},null,8,[`url`])]),_:1},8,[`path`,`label`]),y(N,{path:`${e.path}.alt`,label:`متن جایگزین تصویر (alt)`,hint:`برای سئو و دسترسی‌پذیری؛ تصویر را در یک جمله توصیف کنید`},{default:u(()=>[y(i,{value:t.value.alt,"onUpdate:value":r[1]||=e=>t.value.alt=e},null,8,[`value`])]),_:1},8,[`path`])],64)}}}),R={class:`grid gap-x-4 md:grid-cols-2`},z=p({__name:`SectionHeadFields`,props:h({path:{default:`head`},withHighlight:{type:Boolean,default:!0},withDesc:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(n,r)=>{let i=C(`a-input`),a=C(`a-textarea`);return f(),D(`div`,R,[y(N,{path:`${e.path}.tag`,label:`برچسب بالای عنوان`,hint:`مثلاً «۰۱ — محصولات»`,required:``},{default:u(()=>[y(i,{value:t.value.tag,"onUpdate:value":r[0]||=e=>t.value.tag=e},null,8,[`value`])]),_:1},8,[`path`]),y(N,{path:`${e.path}.title`,label:`عنوان`,hint:`برای شکستن خط، Enter بزنید`,required:``},{default:u(()=>[y(a,{value:t.value.title,"onUpdate:value":r[1]||=e=>t.value.title=e,"auto-size":{minRows:2,maxRows:4}},null,8,[`value`])]),_:1},8,[`path`]),e.withHighlight?(f(),_(N,{key:0,path:`${e.path}.highlight`,label:`خط رنگی انتهای عنوان (اختیاری)`},{default:u(()=>[y(i,{value:t.value.highlight,"onUpdate:value":r[2]||=e=>t.value.highlight=e},null,8,[`value`])]),_:1},8,[`path`])):v(``,!0),e.withDesc?(f(),_(N,{key:1,path:`${e.path}.desc`,label:`توضیح زیر عنوان`,class:`md:col-span-2`},{default:u(()=>[y(a,{value:t.value.desc,"onUpdate:value":r[3]||=e=>t.value.desc=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1},8,[`path`])):v(``,!0)])}}}),B={class:`grid gap-6 xl:grid-cols-3`},V={class:`space-y-6 xl:col-span-2`},H={class:`grid gap-x-4 md:grid-cols-4`},U={class:`grid gap-x-4 md:grid-cols-2`},W={class:`space-y-6`},G=p({__name:`AboutForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-textarea`),i=C(`a-card`),a=C(`a-input`);return f(),D(`div`,B,[k(`div`,V,[y(i,{title:`عنوان و متن`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e,"with-desc":!1},null,8,[`modelValue`]),y(N,{path:`body`,label:`متن درباره ما`,required:``},{default:u(()=>[y(r,{value:t.value.body,"onUpdate:value":n[1]||=e=>t.value.body=e,"auto-size":{minRows:4,maxRows:10}},null,8,[`value`])]),_:1})]),_:1}),y(i,{title:`تایم‌لاین`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.timeline,"onUpdate:modelValue":n[2]||=e=>t.value.timeline=e,create:()=>({year:``,text:``}),max:12,"add-label":`افزودن رویداد`,"item-title":e=>e.year},{default:u(({item:e,index:t})=>[k(`div`,H,[y(N,{path:`timeline.${t}.year`,label:`سال`,required:``},{default:u(()=>[y(a,{value:e.year,"onUpdate:value":t=>e.year=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`timeline.${t}.text`,label:`رویداد`,required:``,class:`md:col-span-3`},{default:u(()=>[y(a,{value:e.text,"onUpdate:value":t=>e.text=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1}),y(i,{title:`ویژگی‌ها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.features,"onUpdate:modelValue":n[3]||=e=>t.value.features=e,create:()=>({icon:`ShieldCheck`,label:``}),max:6,"add-label":`افزودن ویژگی`,"item-title":e=>e.label},{default:u(({item:e,index:t})=>[k(`div`,U,[y(N,{path:`features.${t}.label`,label:`متن`,required:``},{default:u(()=>[y(a,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`features.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})]),k(`div`,W,[y(i,{title:`تصویر`},{default:u(()=>[y(L,{modelValue:t.value.image,"onUpdate:modelValue":n[4]||=e=>t.value.image=e,path:`image`,label:`تصویر`},null,8,[`modelValue`])]),_:1}),y(i,{title:`نشان روی تصویر`},{default:u(()=>[y(N,{path:`badge.value`,label:`عدد`,required:``},{default:u(()=>[y(a,{value:t.value.badge.value,"onUpdate:value":n[5]||=e=>t.value.badge.value=e},null,8,[`value`])]),_:1}),y(N,{path:`badge.label`,label:`متن`,hint:`برای شکستن خط Enter بزنید`,required:``},{default:u(()=>[y(r,{value:t.value.badge.label,"onUpdate:value":n[6]||=e=>t.value.badge.label=e,"auto-size":{minRows:2}},null,8,[`value`])]),_:1})]),_:1})])])}}}),K={class:`space-y-6`},q={class:`grid gap-6 lg:grid-cols-2`},J=p({__name:`ContactForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-card`),i=C(`a-input`),a=C(`a-textarea`);return f(),D(`div`,K,[y(r,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`]),n[7]||=k(`p`,{class:`text-sm text-gray-500`},`نشانی، تلفن، ایمیل و ساعات کاری از «تنظیمات سایت» خوانده می‌شوند.`,-1)]),_:1}),k(`div`,q,[y(r,{title:`کادر پاسخ‌گویی اضطراری`},{default:u(()=>[y(N,{path:`emergencyTitle`,label:`عنوان`,required:``},{default:u(()=>[y(i,{value:t.value.emergencyTitle,"onUpdate:value":n[1]||=e=>t.value.emergencyTitle=e},null,8,[`value`])]),_:1}),y(N,{path:`emergencyText`,label:`متن`,required:``},{default:u(()=>[y(a,{value:t.value.emergencyText,"onUpdate:value":n[2]||=e=>t.value.emergencyText=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1})]),_:1}),y(r,{title:`فرم`},{default:u(()=>[y(N,{path:`formTag`,label:`برچسب بالای فرم`},{default:u(()=>[y(i,{value:t.value.formTag,"onUpdate:value":n[3]||=e=>t.value.formTag=e},null,8,[`value`])]),_:1}),y(N,{path:`formTitle`,label:`عنوان فرم`,hint:`برای شکستن خط Enter بزنید`,required:``},{default:u(()=>[y(a,{value:t.value.formTitle,"onUpdate:value":n[4]||=e=>t.value.formTitle=e,"auto-size":{minRows:2}},null,8,[`value`])]),_:1}),y(N,{path:`successTitle`,label:`عنوان پیام موفقیت`,required:``},{default:u(()=>[y(i,{value:t.value.successTitle,"onUpdate:value":n[5]||=e=>t.value.successTitle=e},null,8,[`value`])]),_:1}),y(N,{path:`successText`,label:`متن پیام موفقیت`,required:``},{default:u(()=>[y(a,{value:t.value.successText,"onUpdate:value":n[6]||=e=>t.value.successText=e,"auto-size":{minRows:2}},null,8,[`value`])]),_:1})]),_:1})])])}}}),Y={class:`grid gap-x-4 md:grid-cols-3`},X=p({__name:`FooterForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-textarea`),i=C(`a-input`),a=C(`a-card`);return f(),_(a,{title:`فوتر`},{default:u(()=>[y(N,{path:`about`,label:`متن معرفی`,required:``},{default:u(()=>[y(r,{value:t.value.about,"onUpdate:value":n[0]||=e=>t.value.about=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1}),k(`div`,Y,[y(N,{path:`copyright`,label:`متن کپی‌رایت`,required:``},{default:u(()=>[y(i,{value:t.value.copyright,"onUpdate:value":n[1]||=e=>t.value.copyright=e},null,8,[`value`])]),_:1}),y(N,{path:`certLine`,label:`خط گواهی‌نامه‌ها`},{default:u(()=>[y(i,{value:t.value.certLine,"onUpdate:value":n[2]||=e=>t.value.certLine=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`emergencyNote`,label:`یادداشت پشتیبانی`},{default:u(()=>[y(i,{value:t.value.emergencyNote,"onUpdate:value":n[3]||=e=>t.value.emergencyNote=e},null,8,[`value`])]),_:1})]),n[4]||=k(`p`,{class:`text-sm text-gray-500`},`لینک دسته‌ها و اطلاعات تماس فوتر به‌صورت خودکار از دسته‌بندی‌ها و تنظیمات سایت ساخته می‌شوند.`,-1)]),_:1})}}}),Z={class:`grid gap-6 xl:grid-cols-3`},Q={class:`space-y-6 xl:col-span-2`},ne={class:`grid gap-x-4 md:grid-cols-2`},re={class:`grid gap-x-4 md:grid-cols-2`},ie={class:`grid gap-x-4 md:grid-cols-2`},ae={class:`grid gap-x-4 md:grid-cols-3`},oe={class:`space-y-6`},se=p({__name:`HeroForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-input`),i=C(`a-textarea`),a=C(`a-card`);return f(),D(`div`,Z,[k(`div`,Q,[y(a,{title:`متن‌ها`},{default:u(()=>[k(`div`,ne,[y(N,{path:`badge`,label:`نشان بالای تیتر`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.badge,"onUpdate:value":n[0]||=e=>t.value.badge=e},null,8,[`value`])]),_:1}),y(N,{path:`title`,label:`تیتر (خط اول)`,required:``},{default:u(()=>[y(r,{value:t.value.title,"onUpdate:value":n[1]||=e=>t.value.title=e},null,8,[`value`])]),_:1}),y(N,{path:`titleHighlight`,label:`تیتر (خط زرد)`,required:``},{default:u(()=>[y(r,{value:t.value.titleHighlight,"onUpdate:value":n[2]||=e=>t.value.titleHighlight=e},null,8,[`value`])]),_:1}),y(N,{path:`intro`,label:`متن معرفی`,required:``,class:`md:col-span-2`},{default:u(()=>[y(i,{value:t.value.intro,"onUpdate:value":n[3]||=e=>t.value.intro=e,"auto-size":{minRows:3,maxRows:6}},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`دکمه‌ها`},{default:u(()=>[k(`div`,re,[y(N,{path:`primaryCta.label`,label:`دکمه اصلی — متن`,required:``},{default:u(()=>[y(r,{value:t.value.primaryCta.label,"onUpdate:value":n[4]||=e=>t.value.primaryCta.label=e},null,8,[`value`])]),_:1}),y(N,{path:`primaryCta.href`,label:`دکمه اصلی — لینک`,hint:`مثلاً #contact یا /categories/...`,required:``},{default:u(()=>[y(r,{value:t.value.primaryCta.href,"onUpdate:value":n[5]||=e=>t.value.primaryCta.href=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`secondaryCta.label`,label:`دکمه دوم — متن`,required:``},{default:u(()=>[y(r,{value:t.value.secondaryCta.label,"onUpdate:value":n[6]||=e=>t.value.secondaryCta.label=e},null,8,[`value`])]),_:1}),y(N,{path:`secondaryCta.href`,label:`دکمه دوم — لینک`,required:``},{default:u(()=>[y(r,{value:t.value.secondaryCta.href,"onUpdate:value":n[7]||=e=>t.value.secondaryCta.href=e,class:`ltr-input`},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`نشان‌های گواهی`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.chips,"onUpdate:modelValue":n[8]||=e=>t.value.chips=e,create:()=>({icon:`ShieldCheck`,label:``}),max:6,"add-label":`افزودن نشان`,"item-title":e=>e.label},{default:u(({item:e,index:t})=>[k(`div`,ie,[y(N,{path:`chips.${t}.label`,label:`متن`,required:``},{default:u(()=>[y(r,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`chips.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1}),y(a,{title:`آمار پایین Hero`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.miniStats,"onUpdate:modelValue":n[9]||=e=>t.value.miniStats=e,create:()=>({value:``,label:``}),max:4,"add-label":`افزودن آمار`,"item-title":e=>e.value},{default:u(({item:e,index:t})=>[k(`div`,ae,[y(N,{path:`miniStats.${t}.value`,label:`عدد`,required:``},{default:u(()=>[y(r,{value:e.value,"onUpdate:value":t=>e.value=t,placeholder:`۱۸+`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`miniStats.${t}.label`,label:`توضیح`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})]),k(`div`,oe,[y(a,{title:`تصویر پس‌زمینه`},{default:u(()=>[y(L,{modelValue:t.value.image,"onUpdate:modelValue":n[10]||=e=>t.value.image=e,path:`image`,label:`تصویر`},null,8,[`modelValue`])]),_:1}),y(a,{title:`کارت وضعیت`},{default:u(()=>[y(N,{path:`lastInspection`,label:`تاریخ آخرین بازرسی`,hint:`خالی = نمایش داده نمی‌شود`},{default:u(()=>[y(r,{value:t.value.lastInspection,"onUpdate:value":n[11]||=e=>t.value.lastInspection=e,placeholder:`۱۴۰۴/۰۸/۱۲`},null,8,[`value`])]),_:1})]),_:1})])])}}}),ce={class:`space-y-6`},le={class:`grid gap-x-6 lg:grid-cols-2`},ue=p({__name:`IndustriesForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-card`),i=C(`a-input`);return f(),D(`div`,ce,[y(r,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`])]),_:1}),y(r,{title:`صنایع`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[1]||=e=>t.value.items=e,create:()=>({name:``,nameEn:``,count:``,image:{url:``,alt:``}}),max:12,"add-label":`افزودن صنعت`,"item-title":e=>e.name},{default:u(({item:e,index:t})=>[k(`div`,le,[k(`div`,null,[y(N,{path:`items.${t}.name`,label:`نام`,required:``},{default:u(()=>[y(i,{value:e.name,"onUpdate:value":t=>e.name=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.nameEn`,label:`نام انگلیسی`},{default:u(()=>[y(i,{value:e.nameEn,"onUpdate:value":t=>e.nameEn=t,class:`ltr-input`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.count`,label:`تعداد پروژه`,hint:`مثلاً ۱۴۰+ — خالی = نمایش داده نمی‌شود`},{default:u(()=>[y(i,{value:e.count,"onUpdate:value":t=>e.count=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])]),k(`div`,null,[y(L,{modelValue:e.image,"onUpdate:modelValue":t=>e.image=t,path:`items.${t}.image`,label:`تصویر`},null,8,[`modelValue`,`onUpdate:modelValue`,`path`])])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),de={class:`space-y-6`},fe={class:`grid gap-x-4 md:grid-cols-3`},pe=p({__name:`ProductsIntroForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-input`),i=C(`a-card`);return f(),D(`div`,de,[y(i,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`]),y(N,{path:`ctaLabel`,label:`متن دکمه کاتالوگ`,required:``},{default:u(()=>[y(r,{value:t.value.ctaLabel,"onUpdate:value":n[1]||=e=>t.value.ctaLabel=e},null,8,[`value`])]),_:1}),n[3]||=k(`p`,{class:`text-sm text-gray-500`},`کارت‌های دسته‌بندی از بخش «دسته‌بندی‌ها» مدیریت می‌شوند.`,-1)]),_:1}),y(i,{title:`کارت‌های اعتماد`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.trust,"onUpdate:modelValue":n[2]||=e=>t.value.trust=e,create:()=>({icon:`BadgeCheck`,title:``,desc:``}),max:6,"add-label":`افزودن کارت`,"item-title":e=>e.title},{default:u(({item:e,index:t})=>[k(`div`,fe,[y(N,{path:`trust.${t}.title`,label:`عنوان`,required:``},{default:u(()=>[y(r,{value:e.title,"onUpdate:value":t=>e.title=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`trust.${t}.desc`,label:`توضیح`},{default:u(()=>[y(r,{value:e.desc,"onUpdate:value":t=>e.desc=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`trust.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),me={class:`space-y-6`},he={class:`grid gap-x-4 md:grid-cols-2`},ge=p({__name:`ServicesForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`),n=()=>({icon:`ClipboardCheck`,title:``,desc:``,items:[]});return(e,r)=>{let i=C(`a-card`),a=C(`a-input`),o=C(`a-textarea`),s=C(`a-select`);return f(),D(`div`,me,[y(i,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":r[0]||=e=>t.value.head=e},null,8,[`modelValue`])]),_:1}),y(i,{title:`خدمات`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":r[1]||=e=>t.value.items=e,create:n,max:10,"add-label":`افزودن خدمت`,"item-title":e=>e.title},{default:u(({item:e,index:t})=>[k(`div`,he,[y(N,{path:`items.${t}.title`,label:`عنوان`,required:``},{default:u(()=>[y(a,{value:e.title,"onUpdate:value":t=>e.title=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.icon`,label:`آیکون`},{default:u(()=>[y(P,{modelValue:e.icon,"onUpdate:modelValue":t=>e.icon=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.desc`,label:`توضیح`,required:``,class:`md:col-span-2`},{default:u(()=>[y(o,{value:e.desc,"onUpdate:value":t=>e.desc=t,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.items`,label:`موارد (فهرست)`,hint:`هر مورد را بنویسید و Enter بزنید`,class:`md:col-span-2`},{default:u(()=>[y(s,{value:e.items,"onUpdate:value":t=>e.items=t,mode:`tags`,open:!1},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),_e={class:`grid gap-6 xl:grid-cols-2`},ve={class:`grid gap-x-4 md:grid-cols-2`},ye={class:`grid gap-x-4 md:grid-cols-2`},be={class:`grid gap-x-4 md:grid-cols-2`},xe={class:`grid gap-x-4 md:grid-cols-3`},Se=`https://t.me/...`,Ce=p({__name:`SettingsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`),n={Saturday:`شنبه`,Sunday:`یکشنبه`,Monday:`دوشنبه`,Tuesday:`سه‌شنبه`,Wednesday:`چهارشنبه`,Thursday:`پنجشنبه`,Friday:`جمعه`},a={website:`وب‌سایت`,telegram:`تلگرام`,instagram:`اینستاگرام`,linkedin:`لینکدین`,whatsapp:`واتساپ`,bale:`بله`,eitaa:`ایتا`,aparat:`آپارات`,youtube:`یوتیوب`,email:`ایمیل (mailto:)`,phone:`تلفن (tel:)`},o=()=>({type:`telegram`,url:``}),s=e=>a[e.type],c=i.map(e=>({value:e,label:a[e]})),d=r.map(e=>({value:e,label:n[e]}));function p(e){t.value.ogImage={url:e.url,alt:t.value.ogImage.alt||e.alt,width:e.width,height:e.height}}return(e,n)=>{let r=C(`a-input`),i=C(`a-textarea`),a=C(`a-card`),m=C(`a-checkbox-group`),h=C(`a-select`);return f(),D(`div`,_e,[y(a,{title:`هویت و سئوی پیش‌فرض`},{default:u(()=>[k(`div`,ve,[y(N,{path:`name`,label:`نام شرکت`,required:``},{default:u(()=>[y(r,{value:t.value.name,"onUpdate:value":n[0]||=e=>t.value.name=e},null,8,[`value`])]),_:1}),y(N,{path:`nameEn`,label:`نام انگلیسی`,required:``},{default:u(()=>[y(r,{value:t.value.nameEn,"onUpdate:value":n[1]||=e=>t.value.nameEn=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`title`,label:`عنوان پیش‌فرض صفحات (title)`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.title,"onUpdate:value":n[2]||=e=>t.value.title=e,maxlength:120,"show-count":``},null,8,[`value`])]),_:1}),y(N,{path:`description`,label:`توضیحات متا (description)`,required:``,class:`md:col-span-2`},{default:u(()=>[y(i,{value:t.value.description,"onUpdate:value":n[3]||=e=>t.value.description=e,maxlength:400,"show-count":``,"auto-size":{minRows:3}},null,8,[`value`])]),_:1}),y(N,{path:`foundingDate`,label:`سال تأسیس (میلادی)`,required:``},{default:u(()=>[y(r,{value:t.value.foundingDate,"onUpdate:value":n[4]||=e=>t.value.foundingDate=e,class:`ltr-input`,placeholder:`2007`},null,8,[`value`])]),_:1})]),y(N,{path:`ogImage.url`,label:`تصویر اشتراک‌گذاری (Open Graph)`,hint:`ترجیحاً ۱۲۰۰×۶۳۰ پیکسل`,required:``},{default:u(()=>[y(F,{url:t.value.ogImage.url,onPick:p},null,8,[`url`])]),_:1}),y(N,{path:`ogImage.alt`,label:`متن جایگزین تصویر`},{default:u(()=>[y(r,{value:t.value.ogImage.alt,"onUpdate:value":n[5]||=e=>t.value.ogImage.alt=e},null,8,[`value`])]),_:1})]),_:1}),y(a,{title:`اطلاعات تماس`},{default:u(()=>[k(`div`,ye,[y(N,{path:`phoneDisplay`,label:`تلفن (نمایشی)`,required:``},{default:u(()=>[y(r,{value:t.value.phoneDisplay,"onUpdate:value":n[6]||=e=>t.value.phoneDisplay=e},null,8,[`value`])]),_:1}),y(N,{path:`phone`,label:`تلفن (برای لینک و گوگل)`,hint:`با کد کشور، مثلاً ‎+98-21-91008800`,required:``},{default:u(()=>[y(r,{value:t.value.phone,"onUpdate:value":n[7]||=e=>t.value.phone=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`email`,label:`ایمیل`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.email,"onUpdate:value":n[8]||=e=>t.value.email=e,class:`ltr-input`},null,8,[`value`])]),_:1}),y(N,{path:`address.locality`,label:`شهر`,required:``},{default:u(()=>[y(r,{value:t.value.address.locality,"onUpdate:value":n[9]||=e=>t.value.address.locality=e},null,8,[`value`])]),_:1}),y(N,{path:`address.country`,label:`کد کشور`,required:``},{default:u(()=>[y(r,{value:t.value.address.country,"onUpdate:value":n[10]||=e=>t.value.address.country=e,class:`ltr-input`,maxlength:2},null,8,[`value`])]),_:1}),y(N,{path:`address.street`,label:`نشانی`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:t.value.address.street,"onUpdate:value":n[11]||=e=>t.value.address.street=e},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`ساعات کاری`},{default:u(()=>[y(N,{path:`workingHours`,label:`متن نمایشی`,required:``},{default:u(()=>[y(r,{value:t.value.workingHours,"onUpdate:value":n[12]||=e=>t.value.workingHours=e},null,8,[`value`])]),_:1}),y(N,{path:`openingHours.days`,label:`روزهای کاری (برای گوگل)`},{default:u(()=>[y(m,{value:t.value.openingHours.days,"onUpdate:value":n[13]||=e=>t.value.openingHours.days=e,options:l(d)},null,8,[`value`,`options`])]),_:1}),k(`div`,be,[y(N,{path:`openingHours.opens`,label:`ساعت شروع`,required:``},{default:u(()=>[y(r,{value:t.value.openingHours.opens,"onUpdate:value":n[14]||=e=>t.value.openingHours.opens=e,class:`ltr-input`,placeholder:`08:00`},null,8,[`value`])]),_:1}),y(N,{path:`openingHours.closes`,label:`ساعت پایان`,required:``},{default:u(()=>[y(r,{value:t.value.openingHours.closes,"onUpdate:value":n[15]||=e=>t.value.openingHours.closes=e,class:`ltr-input`,placeholder:`17:00`},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`شبکه‌های اجتماعی و لینک‌ها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.socials,"onUpdate:modelValue":n[16]||=e=>t.value.socials=e,create:o,max:12,"add-label":`افزودن لینک`,"item-title":s},{default:u(({item:e,index:t})=>[k(`div`,xe,[y(N,{path:`socials.${t}.type`,label:`نوع`},{default:u(()=>[y(h,{value:e.type,"onUpdate:value":t=>e.type=t,options:l(c)},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1032,[`path`]),y(N,{path:`socials.${t}.url`,label:`آدرس`,required:``,class:`md:col-span-2`},{default:u(()=>[y(r,{value:e.url,"onUpdate:value":t=>e.url=t,class:`ltr-input`,placeholder:Se},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`])]),_:1})])}}}),we={class:`space-y-6`},Te={class:`grid gap-x-4 md:grid-cols-2`},Ee={class:`grid gap-x-4 md:grid-cols-2`},De=p({__name:`StandardsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-textarea`),i=C(`a-input`),a=C(`a-card`);return f(),D(`div`,we,[y(a,{title:`عنوان و متن`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e},null,8,[`modelValue`]),k(`div`,Te,[y(N,{path:`note`,label:`کادر توضیح (اختیاری)`},{default:u(()=>[y(r,{value:t.value.note,"onUpdate:value":n[1]||=e=>t.value.note=e,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`])]),_:1}),y(N,{path:`ctaLabel`,label:`متن دکمه`,required:``},{default:u(()=>[y(i,{value:t.value.ctaLabel,"onUpdate:value":n[2]||=e=>t.value.ctaLabel=e},null,8,[`value`])]),_:1})])]),_:1}),y(a,{title:`استانداردها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[3]||=e=>t.value.items=e,create:()=>({code:``,label:``}),max:12,"add-label":`افزودن استاندارد`,"item-title":e=>e.code},{default:u(({item:e,index:t})=>[k(`div`,Ee,[y(N,{path:`items.${t}.code`,label:`کد استاندارد`,required:``},{default:u(()=>[y(i,{value:e.code,"onUpdate:value":t=>e.code=t,class:`ltr-input`,placeholder:`EN 397`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.label`,label:`عنوان`,required:``},{default:u(()=>[y(i,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),Oe={class:`grid gap-x-4 md:grid-cols-4`},ke=p({__name:`StatsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-input-number`),i=C(`a-input`),a=C(`a-card`);return f(),_(a,{title:`شمارنده‌ها`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[0]||=e=>t.value.items=e,create:()=>({end:0,suffix:`+`,label:``,note:``}),max:8,"add-label":`افزودن شمارنده`,"item-title":e=>e.label},{default:u(({item:e,index:t})=>[k(`div`,Oe,[y(N,{path:`items.${t}.end`,label:`عدد نهایی`,required:``},{default:u(()=>[y(r,{value:e.end,"onUpdate:value":t=>e.end=t,min:0,class:`!w-full`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.suffix`,label:`پسوند`,hint:`مثلاً + یا ٪`},{default:u(()=>[y(i,{value:e.suffix,"onUpdate:value":t=>e.suffix=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.label`,label:`عنوان`,required:``},{default:u(()=>[y(i,{value:e.label,"onUpdate:value":t=>e.label=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.note`,label:`یادداشت انگلیسی کوچک`},{default:u(()=>[y(i,{value:e.note,"onUpdate:value":t=>e.note=t,class:`ltr-input`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})}}}),Ae=p({__name:`TapeForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-select`),i=C(`a-card`);return f(),_(i,{title:`عبارت‌های نوار متحرک`},{default:u(()=>[y(N,{path:`items`,label:`عبارت‌ها`,hint:`هر عبارت را بنویسید و Enter بزنید؛ برای حذف روی × کلیک کنید`,required:``},{default:u(()=>[y(r,{value:t.value.items,"onUpdate:value":n[0]||=e=>t.value.items=e,mode:`tags`,open:!1},null,8,[`value`])]),_:1})]),_:1})}}}),je={class:`space-y-6`},Me={class:`grid gap-x-4 md:grid-cols-2`},Ne=p({__name:`TestimonialsForm`,props:{modelValue:{required:!0},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=S(e,`modelValue`);return(e,n)=>{let r=C(`a-card`),i=C(`a-textarea`),a=C(`a-input`);return f(),D(`div`,je,[y(r,{title:`عنوان بخش`},{default:u(()=>[y(z,{modelValue:t.value.head,"onUpdate:modelValue":n[0]||=e=>t.value.head=e,"with-highlight":!1,"with-desc":!1},null,8,[`modelValue`])]),_:1}),y(r,{title:`نظرات`,"body-style":{background:`#fafafa`}},{default:u(()=>[y(I,{modelValue:t.value.items,"onUpdate:modelValue":n[1]||=e=>t.value.items=e,create:()=>({text:``,name:``,role:``}),max:12,"add-label":`افزودن نظر`,"item-title":e=>e.name},{default:u(({item:e,index:t})=>[k(`div`,Me,[y(N,{path:`items.${t}.text`,label:`متن نظر`,required:``,class:`md:col-span-2`},{default:u(()=>[y(i,{value:e.text,"onUpdate:value":t=>e.text=t,"auto-size":{minRows:2,maxRows:5}},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.name`,label:`نام`,required:``},{default:u(()=>[y(a,{value:e.name,"onUpdate:value":t=>e.name=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`]),y(N,{path:`items.${t}.role`,label:`سمت و سازمان`},{default:u(()=>[y(a,{value:e.role,"onUpdate:value":t=>e.role=t},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`])])]),_:1},8,[`modelValue`,`item-title`])]),_:1})])}}}),Pe={key:0,class:`max-lg:hidden flex items-center gap-2 me-2`},$=[`href`],Fe={class:`lg:hidden fixed bottom-0 inset-x-0 z-30 border-t border-gray-200 bg-white/95 px-4 py-2.5 backdrop-blur-md shadow-lg flex items-center justify-between gap-3`},Ie={key:0,class:`flex items-center gap-2`},Le={class:`text-xs font-medium text-gray-700`},Re={key:1,class:`text-xs text-gray-500 font-medium`},ze={class:`flex items-center gap-2`},Be=[`href`],Ve=p({__name:`SectionEditPage`,setup(r){let i={settings:Ce,hero:se,tape:Ae,stats:ke,productsIntro:pe,about:G,services:ge,standards:De,industries:ue,testimonials:Ne,contact:J,footer:X},p=O(),h=m(),S=String(h.params.key),N=n(S),P=N?S:`hero`,{model:F,validate:I,handleError:L,reset:R}=M(t[P],{}),z=c(!1),B=c(!1),V=c(null),H=w(()=>N?e[P]:null);async function U(){try{let e=await T(`/admin/sections/${P}`),t=e.data;P!==`settings`&&t.enabled===void 0&&(t.enabled=!0),R(t),V.value=e.updatedAt,z.value=!0}catch(e){E.error(x(e))}}async function W(){let e=I();if(e){B.value=!0;try{let t=await T(`/admin/sections/${P}`,{method:`PUT`,body:e});R(t.data),V.value=t.updatedAt,E.success(`ذخیره شد؛ سایت تا چند لحظه دیگر به‌روز می‌شود`)}catch(e){L(e)}finally{B.value=!1}}}let K=c(!1);async function q(e){let t=!!e;F.value.enabled=t,K.value=!0;try{let e=await T(`/admin/sections/${P}/visibility`,{method:`PATCH`,body:{enabled:t}});F.value.enabled=e.enabled!==!1,V.value=e.updatedAt,E.success(`وضعیت نمایش به ${t?`نمایش`:`عدم نمایش`} تغییر یافت`)}catch(e){F.value.enabled=!t,E.error(x(e))}finally{K.value=!1}}return N&&U(),(e,t)=>{let n=C(`a-result`),r=C(`a-switch`),c=C(`a-button`),m=C(`a-alert`),h=C(`a-form`),x=C(`a-spin`);return l(N)?(f(),D(g,{key:1},[y(j,{title:H.value.title,subtitle:V.value?`آخرین ذخیره: ${l(te)(V.value)}`:H.value.desc,back:`/sections`},{default:u(()=>[l(P)===`settings`?v(``,!0):(f(),D(`div`,Pe,[t[1]||=k(`span`,{class:`text-sm font-medium text-gray-700`},`نمایش در سایت:`,-1),y(r,{checked:l(F)?.enabled!==!1,loading:K.value,"checked-children":`نمایش`,"un-checked-children":`مخفی`,onChange:q},null,8,[`checked`,`loading`])])),k(`a`,{href:l(A),target:`_blank`,rel:`noopener`,class:`max-lg:hidden`},[y(c,null,{default:u(()=>[...t[2]||=[b(`مشاهده سایت`,-1)]]),_:1})],8,$),y(c,{type:`primary`,class:`max-lg:hidden`,loading:B.value,disabled:!z.value||l(P)===`settings`&&!l(p).isAdmin,onClick:W},{icon:u(()=>[y(a,{name:`save-2`,size:16})]),default:u(()=>[t[3]||=b(` ذخیره `,-1)]),_:1},8,[`loading`,`disabled`])]),_:1},8,[`title`,`subtitle`]),y(x,{spinning:!z.value},{default:u(()=>[z.value&&l(P)===`settings`&&!l(p).isAdmin?(f(),_(m,{key:0,type:`error`,"show-icon":``,message:`فقط مدیر کل می‌تواند تنظیمات سایت را تغییر دهد.`,class:`mb-4`})):z.value&&l(P)!==`settings`&&l(F).enabled===!1?(f(),_(m,{key:1,type:`warning`,"show-icon":``,message:`این بخش در حال حاضر در سایت نمایش داده نمی‌شود (مخفی است).`,class:`mb-4`})):v(``,!0),z.value?(f(),_(h,{key:2,layout:`vertical`,class:`pb-20 lg:pb-0`,onSubmit:ee(W,[`prevent`])},{default:u(()=>[(f(),_(o(i[l(P)]),{modelValue:l(F),"onUpdate:modelValue":t[0]||=e=>d(F)?F.value=e:null},null,8,[`modelValue`]))]),_:1})):v(``,!0)]),_:1},8,[`spinning`]),k(`div`,Fe,[l(P)===`settings`?(f(),D(`div`,Re,`تنظیمات پایه`)):(f(),D(`div`,Ie,[y(r,{checked:l(F)?.enabled!==!1,loading:K.value,size:`small`,onChange:q},null,8,[`checked`,`loading`]),k(`span`,Le,s(l(F)?.enabled===!1?`مخفی`:`نمایش در سایت`),1)])),k(`div`,ze,[k(`a`,{href:l(A),target:`_blank`,rel:`noopener`},[y(c,{size:`middle`,class:`!px-3`,title:`مشاهده سایت`},{icon:u(()=>[y(a,{name:`eye`,size:16})]),_:1})],8,Be),y(c,{type:`primary`,size:`middle`,class:`!font-bold !px-5`,loading:B.value,disabled:!z.value||l(P)===`settings`&&!l(p).isAdmin,onClick:W},{icon:u(()=>[y(a,{name:`save-2`,size:16})]),default:u(()=>[t[4]||=b(` ذخیره تغییرات `,-1)]),_:1},8,[`loading`,`disabled`])])])],64)):(f(),_(n,{key:0,status:`404`,title:`بخش پیدا نشد`}))}}});export{Ve as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/SectionsPage-D2mxIFwm.js b/apps/admin/dist/assets/SectionsPage-Da2RoCd0.js similarity index 91% rename from apps/admin/dist/assets/SectionsPage-D2mxIFwm.js rename to apps/admin/dist/assets/SectionsPage-Da2RoCd0.js index ac80894..86e95fe 100644 --- a/apps/admin/dist/assets/SectionsPage-D2mxIFwm.js +++ b/apps/admin/dist/assets/SectionsPage-Da2RoCd0.js @@ -1 +1 @@ -import{d as e,f as t}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as n,Ct as r,Dt as i,Ft as a,It as o,Lt as s,Nt as c,Rt as l,Tt as u,_t as d,ct as f,dt as p,ft as m,gt as h,ht as g,i as _,kt as v,n as y,o as b,ot as x,pt as S,t as C,ut as w}from"./index-BCImsMjH.js";import{a as T}from"./format-NkL3G1Uq.js";import{t as E}from"./PageHeader-vyrIuh7P.js";var D={class:`grid gap-4 sm:grid-cols-2 xl:grid-cols-3`},O={class:`flex items-center justify-between gap-2`},k=[`onClick`],A={class:`font-bold text-gray-800 group-hover:text-orange-600 transition-colors`},j={key:0,class:`flex items-center flex-shrink-0`},M=[`onClick`],N=[`onClick`],P={key:0},F=d({__name:`SectionsPage`,setup(d){let F=b(),I=C(),L=e.filter(e=>e!==`settings`||I.isAdmin),R=o(!0),z=a({hero:!0,tape:!0,stats:!0,productsIntro:!0,about:!0,services:!0,standards:!0,industries:!0,testimonials:!0,contact:!0,footer:!0}),B=a({}),V=a({});function H(e){return z[e]!==!1}function U(e){return B[e]??null}async function W(){R.value=!0;try{let e=await y(`/admin/sections`);for(let t of e)z[t.key]=t.enabled!==!1,B[t.key]=t.updatedAt}catch(e){x.error(_(e))}finally{R.value=!1}}async function G(e,n){if(e===`settings`)return;let r=z[e]!==!1;z[e]=n,V[e]=!0;try{let r=await y(`/admin/sections/${e}/visibility`,{method:`PATCH`,body:{enabled:n}});z[e]=r.enabled!==!1,B[e]=r.updatedAt,x.success(`وضعیت «${t[e].title}» به ${n?`نمایش`:`عدم نمایش`} تغییر یافت`)}catch(t){z[e]=r,x.error(_(t))}finally{V[e]=!1}}function K(e){F.push({name:`section-edit`,params:{key:e}})}return r(()=>{W()}),(e,r)=>{let a=v(`a-tag`),o=v(`a-switch`),d=v(`a-card`),_=v(`a-spin`);return u(),S(f,null,[h(E,{title:`بخش‌های سایت`,subtitle:`متن‌ها، تصاویر و فهرست‌های صفحه اصلی؛ تنظیم وضعیت نمایش و ویرایش محتوا`}),h(_,{spinning:R.value},{default:c(()=>[w(`div`,D,[(u(!0),S(f,null,i(s(L),e=>(u(),S(`div`,{key:e,class:`block group`},[h(d,{hoverable:``,class:l([`h-full flex flex-col justify-between transition-all`,{"opacity-75 bg-gray-50/60":e!==`settings`&&!H(e)}])},{default:c(()=>[w(`div`,null,[w(`div`,O,[w(`div`,{class:`flex items-center gap-2 cursor-pointer flex-1`,onClick:t=>K(e)},[w(`span`,A,n(s(t)[e].title),1),e===`settings`?(u(),p(a,{key:0,color:`blue`},{default:c(()=>[...r[0]||=[g(`تنظیمات پایه`,-1)]]),_:1})):H(e)?m(``,!0):(u(),p(a,{key:1,color:`error`},{default:c(()=>[...r[1]||=[g(`مخفی`,-1)]]),_:1}))],8,k),e===`settings`?m(``,!0):(u(),S(`div`,j,[h(o,{checked:H(e),loading:V[e],"checked-children":`نمایش`,"un-checked-children":`مخفی`,onChange:t=>G(e,!!t)},null,8,[`checked`,`loading`,`onChange`])]))]),w(`p`,{class:`mt-2 text-sm leading-6 text-gray-500 cursor-pointer`,onClick:t=>K(e)},n(s(t)[e].desc),9,M)]),w(`div`,{class:`mt-4 flex items-center justify-between border-t border-gray-100 pt-3 text-xs text-gray-400 cursor-pointer`,onClick:t=>K(e)},[r[2]||=w(`span`,{class:`text-primary font-medium group-hover:underline`},`ویرایش بخش ←`,-1),U(e)?(u(),S(`span`,P,`آخرین تغییر: `+n(s(T)(U(e))),1)):m(``,!0)],8,N)]),_:2},1032,[`class`])]))),128))])]),_:1},8,[`spinning`])],64)}}});export{F as default}; \ No newline at end of file +import{d as e,f as t}from"./VuesaxIcon-B2OgulS6.js";import{Bt as n,Ct as r,Dt as i,Ft as a,It as o,Lt as s,Nt as c,Rt as l,Tt as u,_t as d,ct as f,dt as p,ft as m,gt as h,ht as g,i as _,kt as v,n as y,o as b,ot as x,pt as S,t as C,ut as w}from"./index-BuGK6ptM.js";import{a as T}from"./format-B9MYDQJN.js";import{t as E}from"./PageHeader-3Ryvg2HD.js";var D={class:`grid gap-4 sm:grid-cols-2 xl:grid-cols-3`},O={class:`flex items-center justify-between gap-2`},k=[`onClick`],A={class:`font-bold text-gray-800 group-hover:text-orange-600 transition-colors`},j={key:0,class:`flex items-center flex-shrink-0`},M=[`onClick`],N=[`onClick`],P={key:0},F=d({__name:`SectionsPage`,setup(d){let F=b(),I=C(),L=e.filter(e=>e!==`settings`||I.isAdmin),R=o(!0),z=a({hero:!0,tape:!0,stats:!0,productsIntro:!0,about:!0,services:!0,standards:!0,industries:!0,testimonials:!0,contact:!0,footer:!0}),B=a({}),V=a({});function H(e){return z[e]!==!1}function U(e){return B[e]??null}async function W(){R.value=!0;try{let e=await y(`/admin/sections`);for(let t of e)z[t.key]=t.enabled!==!1,B[t.key]=t.updatedAt}catch(e){x.error(_(e))}finally{R.value=!1}}async function G(e,n){if(e===`settings`)return;let r=z[e]!==!1;z[e]=n,V[e]=!0;try{let r=await y(`/admin/sections/${e}/visibility`,{method:`PATCH`,body:{enabled:n}});z[e]=r.enabled!==!1,B[e]=r.updatedAt,x.success(`وضعیت «${t[e].title}» به ${n?`نمایش`:`عدم نمایش`} تغییر یافت`)}catch(t){z[e]=r,x.error(_(t))}finally{V[e]=!1}}function K(e){F.push({name:`section-edit`,params:{key:e}})}return r(()=>{W()}),(e,r)=>{let a=v(`a-tag`),o=v(`a-switch`),d=v(`a-card`),_=v(`a-spin`);return u(),S(f,null,[h(E,{title:`بخش‌های سایت`,subtitle:`متن‌ها، تصاویر و فهرست‌های صفحه اصلی؛ تنظیم وضعیت نمایش و ویرایش محتوا`}),h(_,{spinning:R.value},{default:c(()=>[w(`div`,D,[(u(!0),S(f,null,i(s(L),e=>(u(),S(`div`,{key:e,class:`block group`},[h(d,{hoverable:``,class:l([`h-full flex flex-col justify-between transition-all`,{"opacity-75 bg-gray-50/60":e!==`settings`&&!H(e)}])},{default:c(()=>[w(`div`,null,[w(`div`,O,[w(`div`,{class:`flex items-center gap-2 cursor-pointer flex-1`,onClick:t=>K(e)},[w(`span`,A,n(s(t)[e].title),1),e===`settings`?(u(),p(a,{key:0,color:`blue`},{default:c(()=>[...r[0]||=[g(`تنظیمات پایه`,-1)]]),_:1})):H(e)?m(``,!0):(u(),p(a,{key:1,color:`error`},{default:c(()=>[...r[1]||=[g(`مخفی`,-1)]]),_:1}))],8,k),e===`settings`?m(``,!0):(u(),S(`div`,j,[h(o,{checked:H(e),loading:V[e],"checked-children":`نمایش`,"un-checked-children":`مخفی`,onChange:t=>G(e,!!t)},null,8,[`checked`,`loading`,`onChange`])]))]),w(`p`,{class:`mt-2 text-sm leading-6 text-gray-500 cursor-pointer`,onClick:t=>K(e)},n(s(t)[e].desc),9,M)]),w(`div`,{class:`mt-4 flex items-center justify-between border-t border-gray-100 pt-3 text-xs text-gray-400 cursor-pointer`,onClick:t=>K(e)},[r[2]||=w(`span`,{class:`text-primary font-medium group-hover:underline`},`ویرایش بخش ←`,-1),U(e)?(u(),S(`span`,P,`آخرین تغییر: `+n(s(T)(U(e))),1)):m(``,!0)],8,N)]),_:2},1032,[`class`])]))),128))])]),_:1},8,[`spinning`])],64)}}});export{F as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/UsersPage-D2QmqN50.js b/apps/admin/dist/assets/UsersPage-C15bNN1T.js similarity index 97% rename from apps/admin/dist/assets/UsersPage-D2QmqN50.js rename to apps/admin/dist/assets/UsersPage-C15bNN1T.js index 9c2b043..fa0b6e9 100644 --- a/apps/admin/dist/assets/UsersPage-D2QmqN50.js +++ b/apps/admin/dist/assets/UsersPage-C15bNN1T.js @@ -1 +1 @@ -import{a as e,b as t,l as n,o as r,t as i,u as a}from"./VuesaxIcon-CrbgSv-1.js";import{Bt as o,Ct as s,Dt as ee,It as c,Lt as l,Nt as u,Rt as te,Tt as d,_t as f,ct as p,dt as m,ft as h,gt as g,ht as _,i as v,kt as y,lt as b,n as x,ot as S,pt as C,st as ne,t as w,ut as T}from"./index-BCImsMjH.js";import{a as E}from"./format-NkL3G1Uq.js";import{t as re}from"./PageHeader-vyrIuh7P.js";import{n as D,t as O}from"./FormField-D95xTO-F.js";var ie={key:0,dir:`ltr`},ae={class:`lg:hidden space-y-3`},k={key:0,class:`rounded-xl border border-dashed border-gray-200 bg-white p-8 text-center`},A={key:1,class:`space-y-3`},oe={class:`flex items-start justify-between gap-3`},se={class:`flex items-center gap-3`},ce={class:`font-bold text-gray-900`},le=[`href`],ue={class:`flex flex-col items-end gap-1`},de={class:`mt-3.5 flex items-center justify-between border-t border-gray-100 pt-3 text-xs text-gray-400`},fe={class:`flex items-center gap-1.5`},pe={class:`font-medium text-gray-600`},j={class:`flex items-center gap-1.5`},M={class:`lg:hidden mt-4 rounded-xl border border-gray-200 bg-white p-3 text-xs shadow-sm`},N={class:`cursor-pointer font-bold text-gray-700 flex items-center justify-between select-none`},P={class:`flex items-center gap-1.5`},F={class:`mt-3 space-y-3 pt-3 border-t border-gray-100`},I={class:`rounded-lg border border-orange-200 bg-orange-50/40 p-2.5`},L={class:`flex items-center gap-2 font-bold text-orange-700`},R={class:`rounded-lg border border-blue-200 bg-blue-50/40 p-2.5`},z={class:`flex items-center gap-2 font-bold text-blue-700`},me={class:`mt-6 max-lg:hidden grid gap-4 md:grid-cols-2`},he={class:`flex items-center gap-2 font-bold text-orange-700`},ge={class:`flex items-center gap-2 font-bold text-blue-700`},_e={class:`mt-1.5 text-[11px] text-gray-500`},B=f({__name:`UsersPage`,setup(f){let B=w(),V=c([]),H=c(!1),U=c(null),W=c(!1),G={phone:``,name:``,role:`EDITOR`,password:``,isActive:!0},K=D(n,G),q=K.model,J=b(()=>U.value===0),ve=e.map(e=>({value:e,label:r[e]}));async function Y(){H.value=!0;try{V.value=await x(`/admin/users`)}catch(e){S.error(v(e))}finally{H.value=!1}}function X(){K.reset(G),U.value=0}function Z(e){K.reset({phone:e.phone,name:e.name,role:e.role,isActive:e.isActive,password:``}),U.value=e.id}async function Q(){W.value=!0;try{if(J.value){let e=K.validate();if(!e)return;await x(`/admin/users`,{method:`POST`,body:e})}else{let{name:e,role:n,isActive:r,password:i}=q.value,o=a.safeParse({name:e,role:n,isActive:r,password:i||void 0});if(!o.success){K.errors.value=Object.fromEntries(t(o.error).map(e=>[e.path,e.message]));return}await x(`/admin/users/${U.value}`,{method:`PUT`,body:o.data})}S.success(`ذخیره شد`),U.value=null,await Y()}catch(e){K.handleError(e)}finally{W.value=!1}}async function $(e){try{await x(`/admin/users/${e.id}`,{method:`DELETE`}),S.success(`کاربر حذف شد`),await Y()}catch(e){S.error(v(e))}}let ye=[{title:`نام`,dataIndex:`name`},{title:`موبایل`,key:`phone`},{title:`نقش`,key:`role`,width:110},{title:`وضعیت`,key:`active`,width:100},{title:`آخرین ورود`,key:`login`,width:170},{title:``,key:`actions`,width:100}];return s(Y),(e,t)=>{let n=y(`a-button`),a=y(`a-tag`),s=y(`a-popconfirm`),c=y(`a-space`),f=y(`a-table`),v=y(`a-card`),b=y(`a-spin`),x=y(`a-input`),S=y(`a-select`),w=y(`a-checkbox`),D=y(`a-input-password`),G=y(`a-form`),K=y(`a-modal`);return d(),C(p,null,[g(re,{title:`کاربران پنل`,subtitle:`مدیر کل به همه بخش‌ها دسترسی دارد؛ ویرایشگر به جز کاربران و تنظیمات سایت`},{default:u(()=>[g(n,{type:`primary`,onClick:X},{icon:u(()=>[g(i,{name:`add`,size:16})]),default:u(()=>[t[6]||=_(` کاربر جدید `,-1)]),_:1})]),_:1}),g(v,{"body-style":{padding:0},class:`max-lg:hidden`},{default:u(()=>[g(f,{columns:ye,"data-source":V.value,loading:H.value,"row-key":`id`,pagination:!1,scroll:{x:700}},{bodyCell:u(({column:e,record:t})=>[e.key===`phone`?(d(),C(`span`,ie,o(t.phone),1)):e.key===`role`?(d(),m(a,{key:1,color:t.role===`ADMIN`?`orange`:`blue`},{default:u(()=>[_(o(l(r)[t.role]),1)]),_:2},1032,[`color`])):e.key===`active`?(d(),m(a,{key:2,color:t.isActive?`green`:`default`},{default:u(()=>[_(o(t.isActive?`فعال`:`غیرفعال`),1)]),_:2},1032,[`color`])):e.key===`login`?(d(),C(p,{key:3},[_(o(l(E)(t.lastLoginAt)),1)],64)):e.key===`actions`?(d(),m(c,{key:4,size:4},{default:u(()=>[g(n,{size:`small`,onClick:e=>Z(t)},{icon:u(()=>[g(i,{name:`edit-2`,size:16})]),_:1},8,[`onClick`]),t.id===l(B).user?.id?h(``,!0):(d(),m(s,{key:0,title:`این کاربر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>$(t)},{default:u(()=>[g(n,{size:`small`,danger:``},{icon:u(()=>[g(i,{name:`trash`,size:16})]),_:1})]),_:1},8,[`onConfirm`]))]),_:2},1024)):h(``,!0)]),_:1},8,[`data-source`,`loading`])]),_:1}),T(`div`,ae,[g(b,{spinning:H.value},{default:u(()=>[!V.value.length&&!H.value?(d(),C(`div`,k,[...t[7]||=[T(`div`,{class:`text-sm text-gray-500`},`کاربری یافت نشد`,-1)]])):(d(),C(`div`,A,[(d(!0),C(p,null,ee(V.value,e=>(d(),C(`div`,{key:e.id,class:`rounded-xl border border-gray-100 bg-white p-4 shadow-sm transition-all`},[T(`div`,oe,[T(`div`,se,[T(`div`,{class:te([`flex size-11 flex-shrink-0 items-center justify-center rounded-full font-bold text-white shadow-sm`,e.role===`ADMIN`?`bg-gradient-to-tr from-orange-600 to-amber-500`:`bg-gradient-to-tr from-blue-600 to-sky-500`])},o(e.name.slice(0,1)),3),T(`div`,null,[T(`div`,ce,o(e.name),1),T(`a`,{href:`tel:${e.phone}`,class:`mt-0.5 inline-block text-xs font-mono text-gray-500 hover:text-orange-600`,dir:`ltr`},o(e.phone),9,le)])]),T(`div`,ue,[g(a,{color:e.role===`ADMIN`?`orange`:`blue`,class:`!m-0 text-[11px]`},{default:u(()=>[_(o(l(r)[e.role]),1)]),_:2},1032,[`color`]),g(a,{color:e.isActive?`green`:`default`,class:`!m-0 text-[10px]`},{default:u(()=>[_(o(e.isActive?`فعال`:`غیرفعال`),1)]),_:2},1032,[`color`])])]),T(`div`,de,[T(`div`,fe,[t[8]||=T(`span`,null,`آخرین ورود:`,-1),T(`span`,pe,o(l(E)(e.lastLoginAt)),1)]),T(`div`,j,[g(n,{size:`small`,class:`!flex !items-center !gap-1`,onClick:t=>Z(e)},{icon:u(()=>[g(i,{name:`edit-2`,size:14})]),default:u(()=>[t[9]||=T(`span`,null,`ویرایش`,-1)]),_:1},8,[`onClick`]),e.id===l(B).user?.id?h(``,!0):(d(),m(s,{key:0,title:`این کاربر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:t=>$(e)},{default:u(()=>[g(n,{size:`small`,danger:``,class:`!px-2`},{icon:u(()=>[g(i,{name:`trash`,size:14})]),_:1})]),_:1},8,[`onConfirm`]))])])]))),128))]))]),_:1},8,[`spinning`])]),T(`button`,{type:`button`,class:`lg:hidden fixed bottom-20 left-4 z-30 flex size-13 items-center justify-center rounded-full bg-[#ff5a00] text-white shadow-lg shadow-orange-500/30 transition-transform active:scale-95`,title:`کاربر جدید`,onClick:X},[g(i,{name:`add`,size:24})]),T(`details`,M,[T(`summary`,N,[T(`span`,P,[g(i,{name:`info-circle`,size:16,class:`text-orange-500`}),t[10]||=_(` راهنمای نقش‌ها و مجوزهای دسترسی `,-1)]),t[11]||=T(`span`,{class:`text-gray-400 text-[10px]`},`لمس برای مشاهده`,-1)]),T(`div`,F,[T(`div`,I,[T(`div`,L,[g(a,{color:`orange`},{default:u(()=>[...t[12]||=[_(`مدیر کل (ADMIN)`,-1)]]),_:1}),t[13]||=T(`span`,{class:`text-[11px]`},`دسترسی ارشد سیستمی`,-1)]),t[14]||=T(`ul`,{class:`mt-2 space-y-1 text-[11px] text-gray-600 list-disc list-inside`},[T(`li`,null,`مدیریت کاربران، نقش‌ها و تنظیمات امنیتی`),T(`li`,null,`تنظیمات پایه سایت، سئو، شبکه‌ها و ساعات کاری`),T(`li`,null,`حذف داده‌ها (محصولات، دسته‌ها، پیام‌ها، رسانه‌ها)`)],-1)]),T(`div`,R,[T(`div`,z,[g(a,{color:`blue`},{default:u(()=>[...t[15]||=[_(`ویرایشگر (EDITOR)`,-1)]]),_:1}),t[16]||=T(`span`,{class:`text-[11px]`},`دسترسی محتوایی`,-1)]),t[17]||=T(`ul`,{class:`mt-2 space-y-1 text-[11px] text-gray-600 list-disc list-inside`},[T(`li`,null,`ایجاد، ویرایش و انتشار محصولات و دسته‌بندی‌ها`),T(`li`,null,`ویرایش محتوای بخش‌های صفحه اصلی`),T(`li`,null,`آپلود تصاویر در رسانه و مشاهده پیام‌های تماس`)],-1)])])]),T(`div`,me,[g(v,{size:`small`,class:`border-orange-200 bg-orange-50/30`},{default:u(()=>[T(`div`,he,[g(a,{color:`orange`},{default:u(()=>[...t[18]||=[_(`مدیر کل (ADMIN)`,-1)]]),_:1}),t[19]||=T(`span`,{class:`text-xs`},`دسترسی ارشد سیستمی`,-1)]),t[20]||=T(`ul`,{class:`mt-2.5 space-y-1.5 text-xs text-gray-600 list-disc list-inside`},[T(`li`,null,`مدیریت کاربران، افزودن کاربر و تغییر نقش‌ها و وضعیت حساب`),T(`li`,null,`دسترسی کامل به تنظیمات پایه سایت، ساعات کاری، شبکه‌ها و سئو`),T(`li`,null,`مجوز حذف محصولات، دسته‌بندی‌ها، رسانه‌ها و پیام‌های تماس`),T(`li`,null,`مشاهده لاگ‌های امنیتی و رویدادهای کامل سامانه`)],-1)]),_:1}),g(v,{size:`small`,class:`border-blue-200 bg-blue-50/30`},{default:u(()=>[T(`div`,ge,[g(a,{color:`blue`},{default:u(()=>[...t[21]||=[_(`ویرایشگر (EDITOR)`,-1)]]),_:1}),t[22]||=T(`span`,{class:`text-xs`},`دسترسی محتوایی`,-1)]),t[23]||=T(`ul`,{class:`mt-2.5 space-y-1.5 text-xs text-gray-600 list-disc list-inside`},[T(`li`,null,`ایجاد، ویرایش، کپی و انتشار محصولات و گروه‌ها`),T(`li`,null,`ویرایش محتوای بخش‌های صفحه اصلی و فعال/مخفی‌سازی نمایش آنها`),T(`li`,null,`آپلود و ویرایش اطلاعات رسانه‌ها در کتابخانه رسانه`),T(`li`,null,`مشاهده پیام‌های تماس و به‌روزرسانی وضعیت (بدون دسترسی حذف یا مدیریت کاربران)`)],-1)]),_:1})]),g(K,{open:U.value!==null,title:J.value?`کاربر جدید`:`ویرایش کاربر`,"ok-text":`ذخیره`,"cancel-text":`انصراف`,"confirm-loading":W.value,"destroy-on-close":``,onOk:Q,onCancel:t[5]||=e=>U.value=null},{default:u(()=>[g(G,{layout:`vertical`,class:`mt-4`,onSubmit:ne(Q,[`prevent`])},{default:u(()=>[g(O,{path:`phone`,label:`شماره موبایل`,required:``},{default:u(()=>[g(x,{value:l(q).phone,"onUpdate:value":t[0]||=e=>l(q).phone=e,class:`ltr-input`,disabled:!J.value,inputmode:`tel`,placeholder:`09121234567`},null,8,[`value`,`disabled`])]),_:1}),g(O,{path:`name`,label:`نام`,required:``},{default:u(()=>[g(x,{value:l(q).name,"onUpdate:value":t[1]||=e=>l(q).name=e},null,8,[`value`])]),_:1}),g(O,{path:`role`,label:`نقش`,required:``},{default:u(()=>[g(S,{value:l(q).role,"onUpdate:value":t[2]||=e=>l(q).role=e,disabled:U.value===l(B).user?.id,options:l(ve)},null,8,[`value`,`disabled`,`options`]),T(`div`,_e,o(l(q).role===`ADMIN`?`مدیر کل: دسترسی کامل سیستمی، حذف داده‌ها، تنظیمات و مدیریت کاربران`:`ویرایشگر: ویرایش محتوا، محصولات، بخش‌ها و پیام‌ها (بدون حذف)`),1)]),_:1}),J.value?h(``,!0):(d(),m(O,{key:0,path:`isActive`},{default:u(()=>[g(w,{checked:l(q).isActive,"onUpdate:checked":t[3]||=e=>l(q).isActive=e,disabled:U.value===l(B).user?.id},{default:u(()=>[...t[24]||=[_(`حساب فعال است`,-1)]]),_:1},8,[`checked`,`disabled`])]),_:1})),g(O,{path:`password`,label:J.value?`رمز عبور`:`رمز عبور جدید (اختیاری)`,required:J.value,hint:`حداقل ۸ کاراکتر`},{default:u(()=>[g(D,{value:l(q).password,"onUpdate:value":t[4]||=e=>l(q).password=e,class:`ltr-input`,autocomplete:`new-password`},null,8,[`value`])]),_:1},8,[`label`,`required`])]),_:1})]),_:1},8,[`open`,`title`,`confirm-loading`])],64)}}});export{B as default}; \ No newline at end of file +import{a as e,b as t,l as n,o as r,t as i,u as a}from"./VuesaxIcon-B2OgulS6.js";import{Bt as o,Ct as s,Dt as ee,It as c,Lt as l,Nt as u,Rt as te,Tt as d,_t as f,ct as p,dt as m,ft as h,gt as g,ht as _,i as v,kt as y,lt as b,n as x,ot as S,pt as C,st as ne,t as w,ut as T}from"./index-BuGK6ptM.js";import{a as E}from"./format-B9MYDQJN.js";import{t as re}from"./PageHeader-3Ryvg2HD.js";import{n as D,t as O}from"./FormField-CiVT7mqC.js";var ie={key:0,dir:`ltr`},ae={class:`lg:hidden space-y-3`},k={key:0,class:`rounded-xl border border-dashed border-gray-200 bg-white p-8 text-center`},A={key:1,class:`space-y-3`},oe={class:`flex items-start justify-between gap-3`},se={class:`flex items-center gap-3`},ce={class:`font-bold text-gray-900`},le=[`href`],ue={class:`flex flex-col items-end gap-1`},de={class:`mt-3.5 flex items-center justify-between border-t border-gray-100 pt-3 text-xs text-gray-400`},fe={class:`flex items-center gap-1.5`},pe={class:`font-medium text-gray-600`},j={class:`flex items-center gap-1.5`},M={class:`lg:hidden mt-4 rounded-xl border border-gray-200 bg-white p-3 text-xs shadow-sm`},N={class:`cursor-pointer font-bold text-gray-700 flex items-center justify-between select-none`},P={class:`flex items-center gap-1.5`},F={class:`mt-3 space-y-3 pt-3 border-t border-gray-100`},I={class:`rounded-lg border border-orange-200 bg-orange-50/40 p-2.5`},L={class:`flex items-center gap-2 font-bold text-orange-700`},R={class:`rounded-lg border border-blue-200 bg-blue-50/40 p-2.5`},z={class:`flex items-center gap-2 font-bold text-blue-700`},me={class:`mt-6 max-lg:hidden grid gap-4 md:grid-cols-2`},he={class:`flex items-center gap-2 font-bold text-orange-700`},ge={class:`flex items-center gap-2 font-bold text-blue-700`},_e={class:`mt-1.5 text-[11px] text-gray-500`},B=f({__name:`UsersPage`,setup(f){let B=w(),V=c([]),H=c(!1),U=c(null),W=c(!1),G={phone:``,name:``,role:`EDITOR`,password:``,isActive:!0},K=D(n,G),q=K.model,J=b(()=>U.value===0),ve=e.map(e=>({value:e,label:r[e]}));async function Y(){H.value=!0;try{V.value=await x(`/admin/users`)}catch(e){S.error(v(e))}finally{H.value=!1}}function X(){K.reset(G),U.value=0}function Z(e){K.reset({phone:e.phone,name:e.name,role:e.role,isActive:e.isActive,password:``}),U.value=e.id}async function Q(){W.value=!0;try{if(J.value){let e=K.validate();if(!e)return;await x(`/admin/users`,{method:`POST`,body:e})}else{let{name:e,role:n,isActive:r,password:i}=q.value,o=a.safeParse({name:e,role:n,isActive:r,password:i||void 0});if(!o.success){K.errors.value=Object.fromEntries(t(o.error).map(e=>[e.path,e.message]));return}await x(`/admin/users/${U.value}`,{method:`PUT`,body:o.data})}S.success(`ذخیره شد`),U.value=null,await Y()}catch(e){K.handleError(e)}finally{W.value=!1}}async function $(e){try{await x(`/admin/users/${e.id}`,{method:`DELETE`}),S.success(`کاربر حذف شد`),await Y()}catch(e){S.error(v(e))}}let ye=[{title:`نام`,dataIndex:`name`},{title:`موبایل`,key:`phone`},{title:`نقش`,key:`role`,width:110},{title:`وضعیت`,key:`active`,width:100},{title:`آخرین ورود`,key:`login`,width:170},{title:``,key:`actions`,width:100}];return s(Y),(e,t)=>{let n=y(`a-button`),a=y(`a-tag`),s=y(`a-popconfirm`),c=y(`a-space`),f=y(`a-table`),v=y(`a-card`),b=y(`a-spin`),x=y(`a-input`),S=y(`a-select`),w=y(`a-checkbox`),D=y(`a-input-password`),G=y(`a-form`),K=y(`a-modal`);return d(),C(p,null,[g(re,{title:`کاربران پنل`,subtitle:`مدیر کل به همه بخش‌ها دسترسی دارد؛ ویرایشگر به جز کاربران و تنظیمات سایت`},{default:u(()=>[g(n,{type:`primary`,onClick:X},{icon:u(()=>[g(i,{name:`add`,size:16})]),default:u(()=>[t[6]||=_(` کاربر جدید `,-1)]),_:1})]),_:1}),g(v,{"body-style":{padding:0},class:`max-lg:hidden`},{default:u(()=>[g(f,{columns:ye,"data-source":V.value,loading:H.value,"row-key":`id`,pagination:!1,scroll:{x:700}},{bodyCell:u(({column:e,record:t})=>[e.key===`phone`?(d(),C(`span`,ie,o(t.phone),1)):e.key===`role`?(d(),m(a,{key:1,color:t.role===`ADMIN`?`orange`:`blue`},{default:u(()=>[_(o(l(r)[t.role]),1)]),_:2},1032,[`color`])):e.key===`active`?(d(),m(a,{key:2,color:t.isActive?`green`:`default`},{default:u(()=>[_(o(t.isActive?`فعال`:`غیرفعال`),1)]),_:2},1032,[`color`])):e.key===`login`?(d(),C(p,{key:3},[_(o(l(E)(t.lastLoginAt)),1)],64)):e.key===`actions`?(d(),m(c,{key:4,size:4},{default:u(()=>[g(n,{size:`small`,onClick:e=>Z(t)},{icon:u(()=>[g(i,{name:`edit-2`,size:16})]),_:1},8,[`onClick`]),t.id===l(B).user?.id?h(``,!0):(d(),m(s,{key:0,title:`این کاربر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:e=>$(t)},{default:u(()=>[g(n,{size:`small`,danger:``},{icon:u(()=>[g(i,{name:`trash`,size:16})]),_:1})]),_:1},8,[`onConfirm`]))]),_:2},1024)):h(``,!0)]),_:1},8,[`data-source`,`loading`])]),_:1}),T(`div`,ae,[g(b,{spinning:H.value},{default:u(()=>[!V.value.length&&!H.value?(d(),C(`div`,k,[...t[7]||=[T(`div`,{class:`text-sm text-gray-500`},`کاربری یافت نشد`,-1)]])):(d(),C(`div`,A,[(d(!0),C(p,null,ee(V.value,e=>(d(),C(`div`,{key:e.id,class:`rounded-xl border border-gray-100 bg-white p-4 shadow-sm transition-all`},[T(`div`,oe,[T(`div`,se,[T(`div`,{class:te([`flex size-11 flex-shrink-0 items-center justify-center rounded-full font-bold text-white shadow-sm`,e.role===`ADMIN`?`bg-gradient-to-tr from-orange-600 to-amber-500`:`bg-gradient-to-tr from-blue-600 to-sky-500`])},o(e.name.slice(0,1)),3),T(`div`,null,[T(`div`,ce,o(e.name),1),T(`a`,{href:`tel:${e.phone}`,class:`mt-0.5 inline-block text-xs font-mono text-gray-500 hover:text-orange-600`,dir:`ltr`},o(e.phone),9,le)])]),T(`div`,ue,[g(a,{color:e.role===`ADMIN`?`orange`:`blue`,class:`!m-0 text-[11px]`},{default:u(()=>[_(o(l(r)[e.role]),1)]),_:2},1032,[`color`]),g(a,{color:e.isActive?`green`:`default`,class:`!m-0 text-[10px]`},{default:u(()=>[_(o(e.isActive?`فعال`:`غیرفعال`),1)]),_:2},1032,[`color`])])]),T(`div`,de,[T(`div`,fe,[t[8]||=T(`span`,null,`آخرین ورود:`,-1),T(`span`,pe,o(l(E)(e.lastLoginAt)),1)]),T(`div`,j,[g(n,{size:`small`,class:`!flex !items-center !gap-1`,onClick:t=>Z(e)},{icon:u(()=>[g(i,{name:`edit-2`,size:14})]),default:u(()=>[t[9]||=T(`span`,null,`ویرایش`,-1)]),_:1},8,[`onClick`]),e.id===l(B).user?.id?h(``,!0):(d(),m(s,{key:0,title:`این کاربر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:t=>$(e)},{default:u(()=>[g(n,{size:`small`,danger:``,class:`!px-2`},{icon:u(()=>[g(i,{name:`trash`,size:14})]),_:1})]),_:1},8,[`onConfirm`]))])])]))),128))]))]),_:1},8,[`spinning`])]),T(`button`,{type:`button`,class:`lg:hidden fixed bottom-20 left-4 z-30 flex size-13 items-center justify-center rounded-full bg-[#ff5a00] text-white shadow-lg shadow-orange-500/30 transition-transform active:scale-95`,title:`کاربر جدید`,onClick:X},[g(i,{name:`add`,size:24})]),T(`details`,M,[T(`summary`,N,[T(`span`,P,[g(i,{name:`info-circle`,size:16,class:`text-orange-500`}),t[10]||=_(` راهنمای نقش‌ها و مجوزهای دسترسی `,-1)]),t[11]||=T(`span`,{class:`text-gray-400 text-[10px]`},`لمس برای مشاهده`,-1)]),T(`div`,F,[T(`div`,I,[T(`div`,L,[g(a,{color:`orange`},{default:u(()=>[...t[12]||=[_(`مدیر کل (ADMIN)`,-1)]]),_:1}),t[13]||=T(`span`,{class:`text-[11px]`},`دسترسی ارشد سیستمی`,-1)]),t[14]||=T(`ul`,{class:`mt-2 space-y-1 text-[11px] text-gray-600 list-disc list-inside`},[T(`li`,null,`مدیریت کاربران، نقش‌ها و تنظیمات امنیتی`),T(`li`,null,`تنظیمات پایه سایت، سئو، شبکه‌ها و ساعات کاری`),T(`li`,null,`حذف داده‌ها (محصولات، دسته‌ها، پیام‌ها، رسانه‌ها)`)],-1)]),T(`div`,R,[T(`div`,z,[g(a,{color:`blue`},{default:u(()=>[...t[15]||=[_(`ویرایشگر (EDITOR)`,-1)]]),_:1}),t[16]||=T(`span`,{class:`text-[11px]`},`دسترسی محتوایی`,-1)]),t[17]||=T(`ul`,{class:`mt-2 space-y-1 text-[11px] text-gray-600 list-disc list-inside`},[T(`li`,null,`ایجاد، ویرایش و انتشار محصولات و دسته‌بندی‌ها`),T(`li`,null,`ویرایش محتوای بخش‌های صفحه اصلی`),T(`li`,null,`آپلود تصاویر در رسانه و مشاهده پیام‌های تماس`)],-1)])])]),T(`div`,me,[g(v,{size:`small`,class:`border-orange-200 bg-orange-50/30`},{default:u(()=>[T(`div`,he,[g(a,{color:`orange`},{default:u(()=>[...t[18]||=[_(`مدیر کل (ADMIN)`,-1)]]),_:1}),t[19]||=T(`span`,{class:`text-xs`},`دسترسی ارشد سیستمی`,-1)]),t[20]||=T(`ul`,{class:`mt-2.5 space-y-1.5 text-xs text-gray-600 list-disc list-inside`},[T(`li`,null,`مدیریت کاربران، افزودن کاربر و تغییر نقش‌ها و وضعیت حساب`),T(`li`,null,`دسترسی کامل به تنظیمات پایه سایت، ساعات کاری، شبکه‌ها و سئو`),T(`li`,null,`مجوز حذف محصولات، دسته‌بندی‌ها، رسانه‌ها و پیام‌های تماس`),T(`li`,null,`مشاهده لاگ‌های امنیتی و رویدادهای کامل سامانه`)],-1)]),_:1}),g(v,{size:`small`,class:`border-blue-200 bg-blue-50/30`},{default:u(()=>[T(`div`,ge,[g(a,{color:`blue`},{default:u(()=>[...t[21]||=[_(`ویرایشگر (EDITOR)`,-1)]]),_:1}),t[22]||=T(`span`,{class:`text-xs`},`دسترسی محتوایی`,-1)]),t[23]||=T(`ul`,{class:`mt-2.5 space-y-1.5 text-xs text-gray-600 list-disc list-inside`},[T(`li`,null,`ایجاد، ویرایش، کپی و انتشار محصولات و گروه‌ها`),T(`li`,null,`ویرایش محتوای بخش‌های صفحه اصلی و فعال/مخفی‌سازی نمایش آنها`),T(`li`,null,`آپلود و ویرایش اطلاعات رسانه‌ها در کتابخانه رسانه`),T(`li`,null,`مشاهده پیام‌های تماس و به‌روزرسانی وضعیت (بدون دسترسی حذف یا مدیریت کاربران)`)],-1)]),_:1})]),g(K,{open:U.value!==null,title:J.value?`کاربر جدید`:`ویرایش کاربر`,"ok-text":`ذخیره`,"cancel-text":`انصراف`,"confirm-loading":W.value,"destroy-on-close":``,onOk:Q,onCancel:t[5]||=e=>U.value=null},{default:u(()=>[g(G,{layout:`vertical`,class:`mt-4`,onSubmit:ne(Q,[`prevent`])},{default:u(()=>[g(O,{path:`phone`,label:`شماره موبایل`,required:``},{default:u(()=>[g(x,{value:l(q).phone,"onUpdate:value":t[0]||=e=>l(q).phone=e,class:`ltr-input`,disabled:!J.value,inputmode:`tel`,placeholder:`09121234567`},null,8,[`value`,`disabled`])]),_:1}),g(O,{path:`name`,label:`نام`,required:``},{default:u(()=>[g(x,{value:l(q).name,"onUpdate:value":t[1]||=e=>l(q).name=e},null,8,[`value`])]),_:1}),g(O,{path:`role`,label:`نقش`,required:``},{default:u(()=>[g(S,{value:l(q).role,"onUpdate:value":t[2]||=e=>l(q).role=e,disabled:U.value===l(B).user?.id,options:l(ve)},null,8,[`value`,`disabled`,`options`]),T(`div`,_e,o(l(q).role===`ADMIN`?`مدیر کل: دسترسی کامل سیستمی، حذف داده‌ها، تنظیمات و مدیریت کاربران`:`ویرایشگر: ویرایش محتوا، محصولات، بخش‌ها و پیام‌ها (بدون حذف)`),1)]),_:1}),J.value?h(``,!0):(d(),m(O,{key:0,path:`isActive`},{default:u(()=>[g(w,{checked:l(q).isActive,"onUpdate:checked":t[3]||=e=>l(q).isActive=e,disabled:U.value===l(B).user?.id},{default:u(()=>[...t[24]||=[_(`حساب فعال است`,-1)]]),_:1},8,[`checked`,`disabled`])]),_:1})),g(O,{path:`password`,label:J.value?`رمز عبور`:`رمز عبور جدید (اختیاری)`,required:J.value,hint:`حداقل ۸ کاراکتر`},{default:u(()=>[g(D,{value:l(q).password,"onUpdate:value":t[4]||=e=>l(q).password=e,class:`ltr-input`,autocomplete:`new-password`},null,8,[`value`])]),_:1},8,[`label`,`required`])]),_:1})]),_:1},8,[`open`,`title`,`confirm-loading`])],64)}}});export{B as default}; \ No newline at end of file diff --git a/apps/admin/dist/assets/VuesaxIcon-CrbgSv-1.js b/apps/admin/dist/assets/VuesaxIcon-B2OgulS6.js similarity index 99% rename from apps/admin/dist/assets/VuesaxIcon-CrbgSv-1.js rename to apps/admin/dist/assets/VuesaxIcon-B2OgulS6.js index 8c0541f..f03554b 100644 --- a/apps/admin/dist/assets/VuesaxIcon-CrbgSv-1.js +++ b/apps/admin/dist/assets/VuesaxIcon-B2OgulS6.js @@ -1,4 +1,4 @@ -import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as ee,Q as te,R as g,S as ne,T as re,Tt as ie,U as _,V as ae,W as oe,X as se,Y as ce,Z as le,_ as ue,_t as de,at as fe,b as pe,c as me,d as v,et as he,f as ge,g as y,h as _e,it as ve,j as ye,k as be,l as b,lt as xe,m as x,nt as Se,p as Ce,pt as we,q as Te,rt as Ee,s as S,tt as De,u as C,v as Oe,w,x as ke,y as Ae,z as je,zt as Me}from"./index-BCImsMjH.js";function Ne(){let e=this._zod;return e.message??=JSON.stringify(e.def,n,2),e.message}function Pe(e){this._zod.message=e}var Fe={get:Ne,set:Pe,enumerable:!0,configurable:!0},Ie={value:void 0,enumerable:!1},Le=new WeakSet([Object.prototype,Error.prototype]),Re=b(`$ZodError`,(e,t)=>{e.name=`$ZodError`,Ie.value=t,Object.defineProperty(e,"issues",Ie),Ie.value=void 0,Object.defineProperty(e,"message",Fe);let n=Object.getPrototypeOf(e);Le.has(n)||(Le.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))});function ze(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Be(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?ze(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ve(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let n=(r,i,a,o)=>{let s=a?{...a,async:!1}:{async:!1},c=r._zod.run({value:i,issues:[]},s);if(c instanceof Promise)throw new S;if(c.issues.length){let r=new((o?.Err)??e)(c.issues.map(e=>t(e,s,C())));throw Ae(r,o?.callee??n),r}return c.value};return n},We=e=>{let n=async(r,i,a,o)=>{let s=a?{...a,async:!0}:{async:!0},c=r._zod.run({value:i,issues:[]},s);if(c instanceof Promise&&(c=await c),c.issues.length){let r=new((o?.Err)??e)(c.issues.map(e=>t(e,s,C())));throw Ae(r,o?.callee??n),r}return c.value};return n},Ge=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new S;return a.issues.length?Ke(e,a.issues,i):{success:!0,data:a.value}};function Ke(e,n,r){let i;return{success:!1,get error(){return i||(i=new e(n.map(e=>t(e,r,C()))),n=void 0,r=void 0),i},set error(e){i=e,n=void 0,r=void 0}}}var qe=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?Ke(e,a.issues,i):{success:!0,data:a.value}},Je=Symbol.for(`zod.compile.invalid`),Ye=Symbol.for(`zod.compile.fallback`),Xe=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==Je)return!0;if(r.definite===!0&&n===void 0)return!1}return Ze(e,t,n)});function Ze(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[Ye]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new S;return a.issues.length===0}var Qe=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},$e=e=>{let t=Ue(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,He(n,a))};return n},et=e=>{let t=Ue(e),n=(e,r,i,a)=>t(e,r,i,He(n,a));return n},tt=e=>{let t=We(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,He(n,a))};return n},nt=e=>{let t=We(e),n=async(e,r,i,a)=>await t(e,r,i,He(n,a));return n},rt=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ge(e)(t,n,i)},it=e=>(t,n,r)=>Ge(e)(t,n,r),at=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return qe(e)(t,n,i)},ot=e=>async(t,n,r)=>qe(e)(t,n,r),st=/^[cC][0-9a-z]{6,}$/,ct=/^[0-9a-z]+$/,lt=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,ut=/^[0-9a-vA-V]{20}$/,dt=/^[A-Za-z0-9]{27}$/,ft=/^[a-zA-Z0-9_-]{21}$/;function pt(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var mt=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ht=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,gt=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,_t=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,vt=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function yt(){return new RegExp(vt,`u`)}var bt=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,St=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ct=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,wt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Tt=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Et=/^https?$/,Dt=/^\+[1-9]\d{6,14}$/,Ot=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function kt(e){return RegExp(`^${e}$`)}var At=kt(Ot);function jt(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Mt(e){return RegExp(`^${jt(e)}$`)}function Nt(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${jt({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${jt({precision:e.precision})}`:n;return RegExp(`^${Ot}T(?:${r})$`)}var Pt=/^[\s\S]{0,}$/,Ft=/^-?\d+(?:\.\d+)?$/,It=/^(?:true|false)$/i,Lt=/^[^A-Z]*$/,Rt=/^[^a-z]*$/,T=b(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),zt=e=>{let t=e.value;return!oe(t)&&t.length!==void 0},E={number:`number`,bigint:`bigint`,object:`date`},Bt=b(`$ZodCheckLessThan`,(e,t)=>{T.init(e,t);let n=E[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{T.init(e,t);let n=E[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:E[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ht=b(`$ZodCheckMultipleOf`,(e,t)=>{T.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ye(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ut=b(`$ZodCheckNumberFormat`,(e,t)=>{T.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Ce[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Wt=b(`$ZodCheckMaxLength`,(e,t)=>{var n;T.init(e,t),(n=e._zod.def).when??(n.when=zt),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?ne(r):i)<=t.maximum)return;let a=m(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Gt=b(`$ZodCheckMinLength`,(e,t)=>{var n;T.init(e,t),(n=e._zod.def).when??(n.when=zt),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=m(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Kt=b(`$ZodCheckLengthEquals`,(e,t)=>{var n;T.init(e,t),(n=e._zod.def).when??(n.when=zt),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?ne(r):i;if(a===t.length)return;let o=m(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),qt=b(`$ZodCheckStringFormat`,(e,t)=>{var n,r;T.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Jt=b(`$ZodCheckRegex`,(e,t)=>{qt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Yt=b(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Lt,qt.init(e,t)}),Xt=b(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Rt,qt.init(e,t)}),Zt=b(`$ZodCheckIncludes`,(e,t)=>{T.init(e,t);let n=i(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Qt=b(`$ZodCheckStartsWith`,(e,t)=>{T.init(e,t);let n=RegExp(`^${i(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),$t=b(`$ZodCheckEndsWith`,(e,t)=>{T.init(e,t);let n=RegExp(`.*${i(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),en=b(`$ZodCheckOverwrite`,(e,t)=>{T.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),tn=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as ee,Q as te,R as g,S as ne,T as re,Tt as ie,U as _,V as ae,W as oe,X as se,Y as ce,Z as le,_ as ue,_t as de,at as fe,b as pe,c as me,d as v,et as he,f as ge,g as y,h as _e,it as ve,j as ye,k as be,l as b,lt as xe,m as x,nt as Se,p as Ce,pt as we,q as Te,rt as Ee,s as S,tt as De,u as C,v as Oe,w,x as ke,y as Ae,z as je,zt as Me}from"./index-BuGK6ptM.js";function Ne(){let e=this._zod;return e.message??=JSON.stringify(e.def,n,2),e.message}function Pe(e){this._zod.message=e}var Fe={get:Ne,set:Pe,enumerable:!0,configurable:!0},Ie={value:void 0,enumerable:!1},Le=new WeakSet([Object.prototype,Error.prototype]),Re=b(`$ZodError`,(e,t)=>{e.name=`$ZodError`,Ie.value=t,Object.defineProperty(e,"issues",Ie),Ie.value=void 0,Object.defineProperty(e,"message",Fe);let n=Object.getPrototypeOf(e);Le.has(n)||(Le.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))});function ze(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Be(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?ze(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ve(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let n=(r,i,a,o)=>{let s=a?{...a,async:!1}:{async:!1},c=r._zod.run({value:i,issues:[]},s);if(c instanceof Promise)throw new S;if(c.issues.length){let r=new((o?.Err)??e)(c.issues.map(e=>t(e,s,C())));throw Ae(r,o?.callee??n),r}return c.value};return n},We=e=>{let n=async(r,i,a,o)=>{let s=a?{...a,async:!0}:{async:!0},c=r._zod.run({value:i,issues:[]},s);if(c instanceof Promise&&(c=await c),c.issues.length){let r=new((o?.Err)??e)(c.issues.map(e=>t(e,s,C())));throw Ae(r,o?.callee??n),r}return c.value};return n},Ge=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new S;return a.issues.length?Ke(e,a.issues,i):{success:!0,data:a.value}};function Ke(e,n,r){let i;return{success:!1,get error(){return i||(i=new e(n.map(e=>t(e,r,C()))),n=void 0,r=void 0),i},set error(e){i=e,n=void 0,r=void 0}}}var qe=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?Ke(e,a.issues,i):{success:!0,data:a.value}},Je=Symbol.for(`zod.compile.invalid`),Ye=Symbol.for(`zod.compile.fallback`),Xe=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==Je)return!0;if(r.definite===!0&&n===void 0)return!1}return Ze(e,t,n)});function Ze(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[Ye]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new S;return a.issues.length===0}var Qe=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},$e=e=>{let t=Ue(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,He(n,a))};return n},et=e=>{let t=Ue(e),n=(e,r,i,a)=>t(e,r,i,He(n,a));return n},tt=e=>{let t=We(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,He(n,a))};return n},nt=e=>{let t=We(e),n=async(e,r,i,a)=>await t(e,r,i,He(n,a));return n},rt=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ge(e)(t,n,i)},it=e=>(t,n,r)=>Ge(e)(t,n,r),at=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return qe(e)(t,n,i)},ot=e=>async(t,n,r)=>qe(e)(t,n,r),st=/^[cC][0-9a-z]{6,}$/,ct=/^[0-9a-z]+$/,lt=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,ut=/^[0-9a-vA-V]{20}$/,dt=/^[A-Za-z0-9]{27}$/,ft=/^[a-zA-Z0-9_-]{21}$/;function pt(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var mt=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ht=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,gt=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,_t=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,vt=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function yt(){return new RegExp(vt,`u`)}var bt=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,St=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ct=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,wt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Tt=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Et=/^https?$/,Dt=/^\+[1-9]\d{6,14}$/,Ot=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function kt(e){return RegExp(`^${e}$`)}var At=kt(Ot);function jt(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Mt(e){return RegExp(`^${jt(e)}$`)}function Nt(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${jt({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${jt({precision:e.precision})}`:n;return RegExp(`^${Ot}T(?:${r})$`)}var Pt=/^[\s\S]{0,}$/,Ft=/^-?\d+(?:\.\d+)?$/,It=/^(?:true|false)$/i,Lt=/^[^A-Z]*$/,Rt=/^[^a-z]*$/,T=b(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),zt=e=>{let t=e.value;return!oe(t)&&t.length!==void 0},E={number:`number`,bigint:`bigint`,object:`date`},Bt=b(`$ZodCheckLessThan`,(e,t)=>{T.init(e,t);let n=E[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{T.init(e,t);let n=E[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:E[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ht=b(`$ZodCheckMultipleOf`,(e,t)=>{T.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ye(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ut=b(`$ZodCheckNumberFormat`,(e,t)=>{T.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Ce[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Wt=b(`$ZodCheckMaxLength`,(e,t)=>{var n;T.init(e,t),(n=e._zod.def).when??(n.when=zt),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?ne(r):i)<=t.maximum)return;let a=m(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Gt=b(`$ZodCheckMinLength`,(e,t)=>{var n;T.init(e,t),(n=e._zod.def).when??(n.when=zt),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=m(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Kt=b(`$ZodCheckLengthEquals`,(e,t)=>{var n;T.init(e,t),(n=e._zod.def).when??(n.when=zt),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?ne(r):i;if(a===t.length)return;let o=m(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),qt=b(`$ZodCheckStringFormat`,(e,t)=>{var n,r;T.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Jt=b(`$ZodCheckRegex`,(e,t)=>{qt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Yt=b(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Lt,qt.init(e,t)}),Xt=b(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Rt,qt.init(e,t)}),Zt=b(`$ZodCheckIncludes`,(e,t)=>{T.init(e,t);let n=i(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Qt=b(`$ZodCheckStartsWith`,(e,t)=>{T.init(e,t);let n=RegExp(`^${i(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),$t=b(`$ZodCheckEndsWith`,(e,t)=>{T.init(e,t);let n=RegExp(`.*${i(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),en=b(`$ZodCheckOverwrite`,(e,t)=>{T.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),tn=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` `)}\n};`)(...Object.values(this.closed))}},nn={major:4,minor:6,patch:7},D=b(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=nn;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=x(t),a;for(let o of n){if(o._zod.def.when){if(h(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new S;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(ue(t.issues,n,e),i||=x(t,n))});else{if(t.issues.length===n)continue;ue(t.issues,n,e),i||=x(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(x(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new S;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new S;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return ee(this,`~standard`,on(this))},set"~standard"(e){Te(this,`~standard`,e)}}),rn=(e,n)=>e.issues.length?{issues:e.issues.map(e=>t(e,n,C()))}:{value:e.value};async function an(e,t){let n={async:!0};return rn(await e._zod.run({value:t,issues:[]},n),n)}function on(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return rn(r,n)}catch{}return an(e,t)},vendor:`zod`,version:1}}var sn=b(`$ZodString`,(e,t)=>{D.init(e,t),e._zod.pattern=t.pattern??Pt,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),O=b(`$ZodStringFormat`,(e,t)=>{qt.init(e,t),sn.init(e,t)}),cn=b(`$ZodGUID`,(e,t)=>{t.pattern??=ht,O.init(e,t)}),ln=b(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=gt(e)}else t.pattern??=gt();O.init(e,t)}),un=b(`$ZodEmail`,(e,t)=>{t.pattern??=_t,O.init(e,t)});function dn(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function fn(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?dn(e)||2:pn(e,t)}function pn(e,t){if(!t.normalize&&t.protocol?.source===Et.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}var mn=/[\t\n\r]/g;function hn(e){return e.replace(mn,``)}function gn(e,t){return t.lastIndex=0,t.test(e.hostname)}function _n(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var vn=b(`$ZodURL`,(e,t)=>{O.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=fn(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=hn(r);return}t.hostname&&!gn(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!_n(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:hn(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),yn=b(`$ZodEmoji`,(e,t)=>{t.pattern??=yt(),O.init(e,t)}),bn=b(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?ft:pt(t.length),O.init(e,t)}),xn=b(`$ZodCUID`,(e,t)=>{t.pattern??=st,O.init(e,t)}),Sn=b(`$ZodCUID2`,(e,t)=>{t.pattern??=ct,O.init(e,t)}),Cn=b(`$ZodULID`,(e,t)=>{t.pattern??=lt,O.init(e,t)}),wn=b(`$ZodXID`,(e,t)=>{t.pattern??=ut,O.init(e,t)}),Tn=b(`$ZodKSUID`,(e,t)=>{t.pattern??=dt,O.init(e,t)}),En=b(`$ZodISODateTime`,(e,t)=>{t.pattern??=Nt(t),O.init(e,t)}),Dn=b(`$ZodISODate`,(e,t)=>{t.pattern??=At,O.init(e,t)}),On=b(`$ZodISOTime`,(e,t)=>{t.pattern??=Mt(t),O.init(e,t)}),kn=b(`$ZodISODuration`,(e,t)=>{t.pattern??=mt,O.init(e,t)}),An=b(`$ZodIPv4`,(e,t)=>{t.pattern??=bt,O.init(e,t)}),jn=/^[0-9a-fA-F:.]+$/;function Mn(e){return jn.test(e)?dn(`http://[${e}]`):!1}var Nn=b(`$ZodIPv6`,(e,t)=>{t.pattern??=xt,O.init(e,t),e._zod.check=n=>{Mn(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Pn=b(`$ZodCIDRv4`,(e,t)=>{t.pattern??=St,O.init(e,t)});function Fn(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Mn(n)}var In=b(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Ct,O.init(e,t),e._zod.check=n=>{Fn(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function Ln(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Rn=/^[0-9a-zA-Z+/]*={0,2}$/,zn=b(`$ZodBase64`,(e,t)=>{t.pattern??=Rn,O.init(e,t),e._zod.check=n=>{Ln(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),Bn=/^[A-Za-z0-9_-]*$/;function Vn(e){if(!Bn.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Ln(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Hn=b(`$ZodBase64URL`,(e,t)=>{t.pattern??=Bn,O.init(e,t),e._zod.check=n=>{Vn(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Un=b(`$ZodE164`,(e,t)=>{t.pattern??=Dt,O.init(e,t)});function Wn(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Gn=b(`$ZodJWT`,(e,t)=>{O.init(e,t),e._zod.check=n=>{Wn(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Kn=b(`$ZodNumber`,(e,t)=>{D.init(e,t),e._zod.pattern=Ft,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),qn=b(`$ZodNumberFormat`,(e,t)=>{Ut.init(e,t),Kn.init(e,t)}),Jn=b(`$ZodBoolean`,(e,t)=>{D.init(e,t),e._zod.pattern=It,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Yn=b(`$ZodUnknown`,(e,t)=>{D.init(e,t),e._zod.parse=e=>e}),Xn=b(`$ZodNever`,(e,t)=>{D.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Zn(e,t){let n=Ee(e._zod.def.checks);if(!n.length)return;let r=Math.min(...n.map(e=>e[0])),i=e._zod.parse;e._zod.parse=(n,a)=>{let o=t(n.value);if(o>r&&!a?.skipChecks&&a?.direction!==`backward`){for(let[t,r]of Ee(e._zod.def.checks))if(o>t&&r._zod.def.when(n)){let t=n.issues.length;return r._zod.check(n),n.issues[t].continue=!1,ue(n.issues,t,e),n}}return i(n,a)}}var Qn=e=>Array.isArray(e)?e.length:-1;function $n(e,t,n){e.issues.length&&t.issues.push(...le(n,e.issues)),t.value[n]=e.value}var er=b(`$ZodArray`,(e,t)=>{D.init(e,t);let n=v.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;e$n(t,r,e)));else if($n(c,r,e),s&&c.issues.length!==0&&x(c))break}return o.length?Promise.all(o).then(()=>r):r},Zn(e,Qn)});function k(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...le(n,e.issues))}!o&&i===void 0?e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]}):e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}var tr=[];function nr(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:tr,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=d(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function rr(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(x(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>k(e,n,i,t,d,f))):k(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var ir=b(`$ZodObject`,(e,t)=>{D.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=Oe(()=>nr(t));w(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||y(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=l,o=t.catchall,s,c=v.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(x(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>k(n,t,e,r,a,o))):k(s,t,e,r,a,o)}return o?rr(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),ar=b(`$ZodObjectJIT`,(e,t)=>{ir.init(e,t);let n=e._zod.parse,r=Oe(()=>nr(t)),i=v.memoizer,o=t=>{let n=r.value,o=n.symbolKeys,s=new tn([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:o}),c=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,l=(e,t)=>` let ${e}_ab = false; diff --git a/apps/admin/dist/assets/format-B9MYDQJN.js b/apps/admin/dist/assets/format-B9MYDQJN.js new file mode 100644 index 0000000..73eb1e5 --- /dev/null +++ b/apps/admin/dist/assets/format-B9MYDQJN.js @@ -0,0 +1 @@ +var e=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),t=t=>t?e.format(new Date(t)):`—`,n=e=>e<1048576?`${(e/1024).toLocaleString(`fa-IR`,{maximumFractionDigits:0})} کیلوبایت`:`${(e/1024/1024).toLocaleString(`fa-IR`,{maximumFractionDigits:1})} مگابایت`,r=e=>e.toLocaleString(`fa-IR`),i=`https://imenpishgaman.ir`,a={create:`ایجاد`,update:`ویرایش`,delete:`حذف`,upload:`آپلود`,login:`ورود`,publish:`انتشار`,unpublish:`عدم انتشار`,duplicate:`کپی`,reorder:`مرتب‌سازی`,"change-password":`تغییر رمز`},o={product:`محصول`,category:`دسته`,section:`بخش سایت`,media:`رسانه`,user:`کاربر`,message:`پیام`},s=(e,t)=>`${a[e]??e} ${o[t]??t}`;export{t as a,n as i,s as n,r,i as t}; \ No newline at end of file diff --git a/apps/admin/dist/assets/format-NkL3G1Uq.js b/apps/admin/dist/assets/format-NkL3G1Uq.js deleted file mode 100644 index 40438ac..0000000 --- a/apps/admin/dist/assets/format-NkL3G1Uq.js +++ /dev/null @@ -1 +0,0 @@ -var e=new Intl.DateTimeFormat(`fa-IR-u-ca-persian`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),t=t=>t?e.format(new Date(t)):`—`,n=e=>e<1048576?`${(e/1024).toLocaleString(`fa-IR`,{maximumFractionDigits:0})} کیلوبایت`:`${(e/1024/1024).toLocaleString(`fa-IR`,{maximumFractionDigits:1})} مگابایت`,r=e=>e.toLocaleString(`fa-IR`),i=`http://localhost:3000`,a={create:`ایجاد`,update:`ویرایش`,delete:`حذف`,upload:`آپلود`,login:`ورود`,publish:`انتشار`,unpublish:`عدم انتشار`,duplicate:`کپی`,reorder:`مرتب‌سازی`,"change-password":`تغییر رمز`},o={product:`محصول`,category:`دسته`,section:`بخش سایت`,media:`رسانه`,user:`کاربر`,message:`پیام`},s=(e,t)=>`${a[e]??e} ${o[t]??t}`;export{t as a,n as i,s as n,r,i as t}; \ No newline at end of file diff --git a/apps/admin/dist/assets/index-BCImsMjH.js b/apps/admin/dist/assets/index-BuGK6ptM.js similarity index 99% rename from apps/admin/dist/assets/index-BCImsMjH.js rename to apps/admin/dist/assets/index-BuGK6ptM.js index 0aa8fc6..6b5cd2c 100644 --- a/apps/admin/dist/assets/index-BCImsMjH.js +++ b/apps/admin/dist/assets/index-BuGK6ptM.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-9ZnLIZG9.js","assets/VuesaxIcon-CrbgSv-1.js","assets/VuesaxIcon-CWCuvyiA.css","assets/logo-BuUh917n.js","assets/FormField-D95xTO-F.js","assets/LoginPage-CTFu9XSt.css","assets/AdminLayout-BWEJTyVc.js","assets/format-NkL3G1Uq.js","assets/AdminLayout-DqN4f4Pv.css","assets/DashboardPage-D3Dg5cDP.js","assets/PageHeader-vyrIuh7P.js","assets/PageHeader-ChIv12OH.css","assets/ProductsPage-BEwm5CwI.js","assets/ProductsPage-BoL7n7Xx.css","assets/ProductEditPage-B-Sknc6p.js","assets/ListEditor-DF9sShFo.js","assets/slug-Flyc3fOh.js","assets/CategoriesPage-DDuDA84R.js","assets/CategoryEditPage-DezgJrn9.js","assets/IconSelect-n5KsEDDN.js","assets/SectionsPage-D2mxIFwm.js","assets/SectionEditPage-BdDEZJqd.js","assets/MessagesPage-C1A1xjPE.js","assets/MediaPage-4vzZa5Eb.js","assets/UsersPage-D2QmqN50.js","assets/ProfilePage-CKqPwLoF.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-D6HPXv4g.js","assets/VuesaxIcon-B2OgulS6.js","assets/VuesaxIcon-CWCuvyiA.css","assets/logo-BuUh917n.js","assets/FormField-CiVT7mqC.js","assets/LoginPage-CTFu9XSt.css","assets/AdminLayout-j5VE2EZ9.js","assets/format-B9MYDQJN.js","assets/AdminLayout-DqN4f4Pv.css","assets/DashboardPage-Do-v_tLH.js","assets/PageHeader-3Ryvg2HD.js","assets/PageHeader-ChIv12OH.css","assets/ProductsPage-CVHBMUNz.js","assets/ProductsPage-BoL7n7Xx.css","assets/ProductEditPage-DTSEsrWG.js","assets/ListEditor-C8F91lSJ.js","assets/slug-Flyc3fOh.js","assets/CategoriesPage-DSZGpYF5.js","assets/CategoryEditPage-B4VYwreC.js","assets/IconSelect-rJLPzIXV.js","assets/SectionsPage-Da2RoCd0.js","assets/SectionEditPage-BfSd3Uov.js","assets/MessagesPage-Bb_X9ABq.js","assets/MediaPage-DnfskIVE.js","assets/UsersPage-C15bNN1T.js","assets/ProfilePage-DxhVPJ4c.js"])))=>i.map(i=>d[i]); var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function u(e){"@babel/helpers - typeof";return u=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n;if(typeof Symbol<`u`&&(n=e[Symbol.toPrimitive])!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function h(e){for(var t=1;te in t}var v={},y=[],b=()=>{},x=()=>!1,S=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),C=e=>e.startsWith(`onUpdate:`),w=Object.assign,T=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},E=Object.prototype.hasOwnProperty,D=(e,t)=>E.call(e,t),O=Array.isArray,k=e=>R(e)===`[object Map]`,A=e=>R(e)===`[object Set]`,j=e=>R(e)===`[object Date]`,M=e=>typeof e==`function`,N=e=>typeof e==`string`,P=e=>typeof e==`symbol`,F=e=>typeof e==`object`&&!!e,I=e=>(F(e)||M(e))&&M(e.then)&&M(e.catch),L=Object.prototype.toString,R=e=>L.call(e),ee=e=>R(e).slice(8,-1),te=e=>R(e)===`[object Object]`,ne=e=>N(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,z=_(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),re=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ie=/-\w/g,ae=re(e=>e.replace(ie,e=>e.slice(1).toUpperCase())),oe=/\B([A-Z])/g,se=re(e=>e.replace(oe,`-$1`).toLowerCase()),ce=re(e=>e.charAt(0).toUpperCase()+e.slice(1)),le=re(e=>e?`on${ce(e)}`:``),ue=(e,t)=>!Object.is(e,t),de=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},pe=e=>{let t=parseFloat(e);return isNaN(t)?e:t},me=e=>{let t=N(e)?Number(e):NaN;return isNaN(t)?e:t},he,ge=()=>he||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function _e(e){if(O(e)){let t={};for(let n=0;ne.startsWith(`/*`)?``:e).split(ve).forEach(e=>{if(e){let n=e.split(ye);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Se(e){let t=``;if(N(e))t=e;else if(O(e))for(let n=0;n!!(e&&e.__v_isRef===!0),je=e=>N(e)?e:e==null?``:O(e)||F(e)&&(e.toString===L||!M(e.toString))?Ae(e)?je(e.value):JSON.stringify(e,Me,2):String(e),Me=(e,t)=>Ae(t)?Me(e,t.value):k(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Ne(t,r)+` =>`]=n,e),{})}:A(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Ne(e))}:P(t)?Ne(t):F(t)&&!O(t)&&!te(t)?String(t):t,Ne=(e,t=``)=>P(e)?`Symbol(${e.description??t})`:e,Pe,Fe=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&Pe&&(Pe.active?(this.parent=Pe,this.index=(Pe.scopes||(Pe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e0&&--this._on===0){if(Pe===this)Pe=this.prevScope;else{let e=Pe;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(We){let e=We;for(We=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Ue;){let t=Ue;for(Ue=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Je(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ye(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Qe(r),$e(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function Xe(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ze(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ze(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===at)||(e.globalVersion=at,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Xe(e))))return;e.flags|=2;let t=e.dep,n=ze,r=et;ze=e,et=!0;try{Je(e);let n=e.fn(e._value);(t.version===0||ue(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{ze=n,et=r,Ye(e),e.flags&=-3}}function Qe(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Qe(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function $e(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var et=!0,tt=[];function nt(){tt.push(et),et=!1}function rt(){let e=tt.pop();et=e===void 0||e}function it(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=ze;ze=void 0;try{t()}finally{ze=e}}}var at=0,ot=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},st=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!ze||!et||ze===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==ze)t=this.activeLink=new ot(ze,this),ze.deps?(t.prevDep=ze.depsTail,ze.depsTail.nextDep=t,ze.depsTail=t):ze.deps=ze.depsTail=t,ct(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=ze.depsTail,t.nextDep=void 0,ze.depsTail.nextDep=t,ze.depsTail=t,ze.deps===t&&(ze.deps=e)}return t}trigger(e){this.version++,at++,this.notify(e)}notify(e){Ke();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{qe()}}};function ct(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)ct(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var lt=new WeakMap,ut=Symbol(``),dt=Symbol(``),ft=Symbol(``);function pt(e,t,n){if(et&&ze){let t=lt.get(e);t||lt.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new st),r.map=t,r.key=n),r.track()}}function mt(e,t,n,r,i,a){let o=lt.get(e);if(!o){at++;return}let s=e=>{e&&e.trigger()};if(Ke(),t===`clear`)o.forEach(s);else{let i=O(e),a=i&&ne(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===ft||!P(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(ft)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(ut)),k(e)&&s(o.get(dt)));break;case`delete`:i||(s(o.get(ut)),k(e)&&s(o.get(dt)));break;case`set`:k(e)&&s(o.get(ut))}}qe()}function ht(e,t){let n=lt.get(e);return n&&n.get(t)}function gt(e){let t=rn(e);return t===e||(pt(t,`iterate`,ft),tn(e))?t:en(e)?$t(e)?t.map(e=>sn(on(e))):t.map(sn):t.map(on)}function _t(e){return pt(e=rn(e),`iterate`,ft),e}function vt(e,t){return en(e)?sn($t(e)?on(t):t):on(t)}var yt={__proto__:null,[Symbol.iterator](){return bt(this,Symbol.iterator,e=>vt(this,e))},concat(...e){return gt(this).concat(...e.map(e=>O(e)?gt(e):e))},entries(){return bt(this,`entries`,e=>(e[1]=vt(this,e[1]),e))},every(e,t){return Ct(this,`every`,e,t,void 0,arguments)},filter(e,t){return Ct(this,`filter`,e,t,e=>e.map(e=>vt(this,e)),arguments)},find(e,t){return Ct(this,`find`,e,t,e=>vt(this,e),arguments)},findIndex(e,t){return Ct(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return Ct(this,`findLast`,e,t,e=>vt(this,e),arguments)},findLastIndex(e,t){return Ct(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return Ct(this,`forEach`,e,t,void 0,arguments)},includes(...e){return Tt(this,`includes`,e)},indexOf(...e){return Tt(this,`indexOf`,e)},join(e){return gt(this).join(e)},lastIndexOf(...e){return Tt(this,`lastIndexOf`,e)},map(e,t){return Ct(this,`map`,e,t,void 0,arguments)},pop(){return Et(this,`pop`)},push(...e){return Et(this,`push`,e)},reduce(e,...t){return wt(this,`reduce`,e,t)},reduceRight(e,...t){return wt(this,`reduceRight`,e,t)},shift(){return Et(this,`shift`)},some(e,t){return Ct(this,`some`,e,t,void 0,arguments)},splice(...e){return Et(this,`splice`,e)},toReversed(){return gt(this).toReversed()},toSorted(e){return gt(this).toSorted(e)},toSpliced(...e){return gt(this).toSpliced(...e)},unshift(...e){return Et(this,`unshift`,e)},values(){return bt(this,`values`,e=>vt(this,e))}};function bt(e,t,n){let r=_t(e),i=r[t],a=i.call(r);if(r!==e&&!tn(e)){if(a[Symbol.toStringTag]===`Array Iterator`){let e=Object.create(Object.getPrototypeOf(a));return e.next=()=>xt(a.next(),n),i!==St[t]&&Object.defineProperties(e,{return:{get(){let e=a.return;return typeof e==`function`?e.bind(a):e}},throw:{get(){let e=a.throw;return typeof e==`function`?e.bind(a):e}}}),e}a._next=a.next,a.next=()=>xt(a._next(),n)}return a}function xt(e,t){return e.done||(e.value=t(e.value)),e}var St=Array.prototype;function Ct(e,t,n,r,i,a){let o=_t(e),s=o!==e&&!tn(e),c=o[t];if(c!==St[t]){let t=c.apply(e,a);return s?on(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,vt(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function wt(e,t,n,r){let i=_t(e),a=i!==e&&!tn(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=vt(e,t)),n.call(this,t,vt(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?vt(e,c):c}function Tt(e,t,n){let r=rn(e);pt(r,`iterate`,ft);let i=r[t](...n);return(i===-1||i===!1)&&nn(n[0])?(n[0]=rn(n[0]),r[t](...n)):i}function Et(e,t,n=[]){nt(),Ke();let r=rn(e)[t].apply(e,n);return qe(),rt(),r}var Dt=_(`__proto__,__v_isRef,__isVue`),Ot=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(P));function kt(e){P(e)||(e=String(e));let t=rn(this);return pt(t,`has`,e),t.hasOwnProperty(e)}var At=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?qt:Kt:i?Gt:Wt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=O(e);if(!r){let e;if(a&&(e=yt[t]))return e;if(t===`hasOwnProperty`)return kt}let o=Reflect.get(e,t,cn(e)?e:n);if((P(t)?Ot.has(t):Dt(t))||(r||pt(e,`get`,t),i))return o;if(cn(o)){let e=a&&ne(t)?o:o.value;return r&&F(e)?Zt(e):e}return F(o)?r?Zt(o):Yt(o):o}},jt=class extends At{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=O(e)&&ne(t);if(!this._isShallow){let e=en(i);if(!tn(n)&&!en(n)&&(i=rn(i),n=rn(n)),!a&&cn(i)&&!cn(n))return e||(i.value=n),!0}let o=a?Number(t)e,It=e=>Reflect.getPrototypeOf(e);function Lt(e,t,n){return function(...r){let i=this.__v_raw,a=rn(i),o=k(a),s=e===`entries`||e===Symbol.iterator&&o,c=e===`keys`&&o,l=i[e](...r),u=n?Ft:t?sn:on;return!t&&pt(a,`iterate`,c?dt:ut),w(Object.create(l),{next(){let{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}}})}}function Rt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function zt(e,t){let n={get(n){let r=this.__v_raw,i=rn(r),a=rn(n);e||(ue(n,a)&&pt(i,`get`,n),pt(i,`get`,a));let{has:o}=It(i),s=t?Ft:e?sn:on;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&pt(rn(t),`iterate`,ut),t.size},has(t){let n=this.__v_raw,r=rn(n),i=rn(t);return e||(ue(t,i)&&pt(r,`has`,t),pt(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=rn(a),s=t?Ft:e?sn:on;return!e&&pt(o,`iterate`,ut),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return w(n,e?{add:Rt(`add`),set:Rt(`set`),delete:Rt(`delete`),clear:Rt(`clear`)}:{add(e){let n=rn(this),r=It(n),i=rn(e),a=!t&&!tn(e)&&!en(e)?i:e;return r.has.call(n,a)||ue(e,a)&&r.has.call(n,e)||ue(i,a)&&r.has.call(n,i)||(n.add(a),mt(n,`add`,a,a)),this},set(e,n){!t&&!tn(n)&&!en(n)&&(n=rn(n));let r=rn(this),{has:i,get:a}=It(r),o=i.call(r,e);o||=(e=rn(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?ue(n,s)&&mt(r,`set`,e,n,s):mt(r,`add`,e,n),this},delete(e){let t=rn(this),{has:n,get:r}=It(t),i=n.call(t,e);i||=(e=rn(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&mt(t,`delete`,e,void 0,a),o},clear(){let e=rn(this),t=e.size!==0,n=e.clear();return t&&mt(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=Lt(r,e,t)}),n}function Bt(e,t){let n=zt(e,t);return(r,i,a)=>i===`__v_isReactive`?!e:i===`__v_isReadonly`?e:i===`__v_isShallow`?t:i===`__v_raw`?r:Reflect.get(D(n,i)&&i in r?n:r,i,a)}var Vt={get:Bt(!1,!1)},Ht={get:Bt(!1,!0)},Ut={get:Bt(!0,!1)},Wt=new WeakMap,Gt=new WeakMap,Kt=new WeakMap,qt=new WeakMap;function Jt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function Yt(e){return en(e)?e:Qt(e,!1,Nt,Vt,Wt)}function Xt(e){return Qt(e,!1,Pt,Ht,Gt)}function Zt(e){return Qt(e,!0,eee,Ut,Kt)}function Qt(e,t,n,r,i){if(!F(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=Jt(ee(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function $t(e){return en(e)?$t(e.__v_raw):!!(e&&e.__v_isReactive)}function en(e){return!!(e&&e.__v_isReadonly)}function tn(e){return!!(e&&e.__v_isShallow)}function nn(e){return e?!!e.__v_raw:!1}function rn(e){let t=e&&e.__v_raw;return t?rn(t):e}function an(e){return!D(e,`__v_skip`)&&Object.isExtensible(e)&&fe(e,`__v_skip`,!0),e}var on=e=>F(e)?Yt(e):e,sn=e=>F(e)?Zt(e):e;function cn(e){return e?e.__v_isRef===!0:!1}function B(e){return ln(e,!1)}function V(e){return ln(e,!0)}function ln(e,t){return cn(e)?e:new un(e,t)}var un=class{constructor(e,t){this.dep=new st,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:rn(e),this._value=t?e:on(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||tn(e)||en(e);e=n?e:rn(e),ue(e,t)&&(this._rawValue=e,this._value=n?e:on(e),this.dep.trigger())}};function dn(e){e.dep&&e.dep.trigger()}function fn(e){return cn(e)?e.value:e}var pn={get:(e,t,n)=>t===`__v_raw`?e:fn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return cn(i)&&!cn(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function mn(e){return $t(e)?e:new Proxy(e,pn)}var tee=class{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new st,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}};function nee(e){return new tee(e)}function hn(e){let t=O(e)?Array(e.length):{};for(let n in e)t[n]=yn(e,n);return t}var gn=class{constructor(e,t,n){this._object=e,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=P(t)?t:String(t),this._raw=rn(e);let r=!0,i=e;if(!O(e)||P(this._key)||!ne(this._key))do r=!nn(i)||tn(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=fn(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&cn(this._raw[this._key])){let t=this._object[this._key];if(cn(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return ht(this._raw,this._key)}},_n=class{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}};function vn(e,t,n){return cn(e)?e:M(e)?new _n(e):F(e)&&arguments.length>1?yn(e,t,n):B(e)}function yn(e,t,n){return new gn(e,t,n)}var bn=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new st(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=at-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ze!==this)return Ge(this,!0),!0}get value(){let e=this.dep.track();return Ze(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function xn(e,t,n=!1){let r,i;return M(e)?r=e:(r=e.get,i=e.set),new bn(r,i,n)}var Sn={},Cn=new WeakMap,wn=void 0;function Tn(e,t=!1,n=wn){if(n){let t=Cn.get(n);t||Cn.set(n,t=[]),t.push(e)}}function En(e,t,n=v){let{immediate:r,deep:i,once:a,scheduler:o,augmentJob:s,call:c}=n,l=e=>i?e:tn(e)||i===!1||i===0?Dn(e,1):Dn(e),u,d,f,p,m=!1,h=!1;if(cn(e)?(d=()=>e.value,m=tn(e)):$t(e)?(d=()=>l(e),m=!0):O(e)?(h=!0,m=e.some(e=>$t(e)||tn(e)),d=()=>e.map(e=>{if(cn(e))return e.value;if($t(e))return l(e);if(M(e))return c?c(e,2):e()})):d=M(e)?t?c?()=>c(e,2):e:()=>{if(f){nt();try{f()}finally{rt()}}let t=wn;wn=u;try{return c?c(e,3,[p]):e(p)}finally{wn=t}}:b,t&&i){let e=d,t=i===!0?1/0:i;d=()=>Dn(e(),t)}let g=Le(),_=()=>{u.stop(),g&&g.active&&T(g.effects,u)};if(a&&t){let e=t;t=(...t)=>{try{return e(...t)}finally{_()}}}let y=h?Array(e.length).fill(Sn):Sn,x=e=>{if(u.flags&1&&(u.dirty||e)){if(t){let n=u.run();if(e||i||m||(h?n.some((e,t)=>ue(e,y[t])):ue(n,y))){let e=wn;nt();try{f&&f(),wn=u;let e=[n,y===Sn?void 0:h&&y[0]===Sn?[]:y,p];y=n,c?c(t,3,e):t(...e)}finally{wn=e,rt()}}}else u.run()}};return s&&s(x),u=new Ve(d),u.scheduler=o?()=>o(x,!1):x,p=e=>Tn(e,!1,u),f=u.onStop=()=>{let e=Cn.get(u);if(e){if(c)c(e,4);else for(let t of e)t();Cn.delete(u)}},t?r?x(!0):y=u.run():o?o(x.bind(null,!0),!0):u.run(),_.pause=u.pause.bind(u),_.resume=u.resume.bind(u),_.stop=_,_}function Dn(e,t=1/0,n){if(t<=0||!F(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,cn(e))Dn(e.value,t,n);else if(O(e))for(let r=0;r{Dn(e,t,n)});else if(te(e)){for(let r in e)Dn(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Dn(e[r],t,n)}return e}function On(e,t,n,r){try{return r?e(...r):e()}catch(e){An(e,t,n)}}function kn(e,t,n,r){if(M(e)){let i=On(e,t,n,r);return i&&I(i)&&i.catch(e=>{An(e,t,n)}),i}if(O(e)){let i=[];for(let a=0;a>>1,i=Mn[r],a=Kn(i);a=Kn(n)?Mn.push(e):Mn.splice(ree(t),0,e),e.flags|=1,Vn()}}function Vn(){Rn||=Ln.then(qn)}function iee(e){if(!O(e))Fn&&e.id===-1?Fn.splice(In+1,0,e):e.flags&1||(Pn.push(e),e.flags|=1);else for(let t=0;t=t))continue;Mn.splice(r,1),r=e?r-1:Nn,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function Un(e,t,n=0){if(Pn.length){let e=Pn,r=0;if(t){e=[];for(let i=0;iKn(e)-Kn(t));if(Pn.length=r,Fn){for(let e=0;ee.id==null?e.flags&2?-1:1/0:e.id;function qn(e){try{for(Nn=0;Nn{r._d&&Va(-1);let i=Xn(t),a=Ia.length,o;try{o=e(...n)}finally{for(let e=Ia.length;e>a;e--)za();Xn(i),r._d&&Va(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function Qn(e,t){if(Jn===null)return e;let n=To(Jn),r=e.dirs||=[];for(let e=0;e1)return n&&M(t)?t.call(r&&r.proxy):t}}function nr(){return!!(fo()||Bi)}var rr=Symbol.for(`v-scx`),ir=()=>tr(rr);function ar(e,t){return sr(e,null,t)}function or(e,t){return sr(e,null,{flush:`sync`})}function H(e,t,n){return sr(e,t,n)}function sr(e,t,n=v){let{immediate:r,deep:i,flush:a,once:o}=n,s=w({},n),c=t&&r||!t&&a!==`post`,l;if(vo){if(a===`sync`){let e=ir();l=e.__watcherHandles||=[]}else if(!c){let e=()=>{};return e.stop=b,e.resume=b,e.pause=b,e}}let u=uo;s.call=(e,t,n)=>kn(e,u,t,n);let d=!1;a===`post`?s.scheduler=e=>{e.i=u,ya(e,u&&u.suspense)}:a!==`sync`&&(d=!0,s.scheduler=(e,t)=>{t?e():Bn(e)}),s.augmentJob=e=>{t&&(e.flags|=4),d&&(e.flags|=2,u&&(e.id=u.uid,e.i=u))};let f=En(e,t,s);return vo&&(l?l.push(f):c&&f()),f}function cr(e,t,n){let r=this.proxy,i=N(e)?e.includes(`.`)?lr(r,e):()=>r[e]:e.bind(r,r),a;M(t)?a=t:(a=t.handler,n=t);let o=ho(this),s=sr(i,a.bind(r),n);return o(),s}function lr(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;ee.__isTeleport,pr=e=>e&&(e.disabled||e.disabled===``),mr=e=>e&&(e.defer||e.defer===``),hr=e=>typeof SVGElement<`u`&&e instanceof SVGElement,gr=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,_r=(e,t)=>{let n=e&&e.to;return N(n)?t?t(n):null:n},vr={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g,parentNode:_}}=l,v=pr(t.props),{dynamicChildren:y}=t,b=(e,t,n)=>{e.shapeFlag&16&&u(e.children,t,n,i,a,o,s,c)},x=(e=t)=>{let n=pr(e.props),r=e.target=_r(e.props,m),a=Cr(r,e,h,p);r&&(o!==`svg`&&hr(r)?o=`svg`:o!==`mathml`&&gr(r)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(r),n||(b(e,r,a),Sr(e,!1)))},S=e=>{let t=()=>{if(ur.get(e)===t){if(ur.delete(e),pr(e.props)){let t=_(e.el)||n;b(e,t,e.anchor),Sr(e,!0)}x(e)}};ur.set(e,t),ya(t,a)};if(e==null){let e=t.el=h(``),i=t.anchor=h(``);if(p(e,n,r),p(i,n,r),mr(t.props)||a&&a.pendingBranch){S(t);return}v&&(b(t,n,i),Sr(t,!0)),x()}else{t.el=e.el;let r=t.anchor=e.anchor,u=ur.get(e);if(u){u.flags|=8,ur.delete(e),S(t);return}t.targetStart=e.targetStart;let p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=pr(e.props),_=g?n:p,b=g?r:h;if(o===`svg`||hr(p)?o=`svg`:(o===`mathml`||gr(p))&&(o=`mathml`),y?(f(e.dynamicChildren,y,_,i,a,o,s),Ta(e,t,!0)):c||d(e,t,_,b,i,a,o,s,!1),v)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):yr(t,n,r,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=_r(t.props,m);e&&(t.target=e,yr(t,e,null,l,0))}else g&&yr(t,p,h,l,1);Sr(t,v)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e,p=pr(f),m=a||!p,h=ur.get(e);if(h&&(h.flags|=8,ur.delete(e)),d&&(i(l),i(u)),a&&i(c),!h&&(p||d)&&o&16)for(let e=0;e{e.isMounted=!0}),ni(()=>{e.isUnmounting=!0}),e}var Dr=[Function,Array],Or={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Dr,onEnter:Dr,onAfterEnter:Dr,onEnterCancelled:Dr,onBeforeLeave:Dr,onLeave:Dr,onAfterLeave:Dr,onLeaveCancelled:Dr,onBeforeAppear:Dr,onAppear:Dr,onAfterAppear:Dr,onAppearCancelled:Dr},kr={name:`BaseTransition`,props:Or,setup(e,{slots:t}){let n=fo(),r=Er();return()=>{let i=t.default&&Lr(t.default(),!0),a=i&&i.length?Ar(i):n.subTree?eo():void 0;if(!a)return;let o=rn(e),{mode:s}=o;if(r.isLeaving)return Pr(a);let c=Fr(a);if(!c)return Pr(a);let l=Nr(c,o,r,n,e=>l=e);c.type!==Pa&&Ir(c,l);let u=n.subTree&&Fr(n.subTree);if(u&&u.type!==Pa&&!Ga(u,c)&&Rr(n.subTree)){let e=Nr(u,o,r,n);if(Ir(u,e),s===`out-in`&&c.type!==Pa)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},Pr(a);s===`in-out`&&c.type!==Pa?e.delayLeave=(e,t,n)=>{let i=Mr(r,u);i[String(u.key)]=u,e[wr]=()=>{t(),e[wr]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function Ar(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==Pa){t=n;break}}return t}var jr=kr;function Mr(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Nr(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:f,onLeave:p,onAfterLeave:m,onLeaveCancelled:h,onBeforeAppear:g,onAppear:_,onAfterAppear:v,onAppearCancelled:y}=t,b=String(e.key),x=Mr(n,e),S=(e,t)=>{e&&kn(e,r,9,t)},C=(e,t)=>{let n=t[1];S(e,t),O(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},w={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted){if(a)r=g||c;else return}t[wr]&&t[wr](!0);let i=x[b];if(i&&Ga(e,i)){let e=i.el[wr];if(!e){let t=Rr(i);e=t&&t.el[wr]}e&&e()}S(r,[t])},enter(t){if(x[b]===e)return;let r=l,i=u,o=d;if(!n.isMounted){if(a)r=_||l,i=v||u,o=y||d;else return}let s=!1;t[Tr]=e=>{s||(s=!0,S(e?o:i,[t]),w.delayedLeave&&w.delayedLeave(),t[Tr]=void 0)};let c=t[Tr].bind(null,!1);r?C(r,[t,c]):c()},leave(t,r){let i=String(e.key);if(t[Tr]&&t[Tr](!0),n.isUnmounting)return r();S(f,[t]);let a=!1;t[wr]=n=>{a||(a=!0,r(),S(n?h:m,[t]),t[wr]=void 0,x[i]===e&&delete x[i])};let o=t[wr].bind(null,!1);x[i]=e,p?C(p,[t,o]):o()},clone(e){let a=Nr(e,t,n,r,i);return i&&i(a),a}};return w}function Pr(e){if(Gr(e))return e=Za(e),e.children=null,e}function Fr(e){if(!Gr(e))return fr(e.type)&&e.children?Ar(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&M(n.default))return n.default()}}function Ir(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let n=e.component.subTree;Ir(fr(n.type)&&Fr(n)||n,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===Ma&&O(e.children)){let n=Ji(e.children,!1);n&&Ir(n,t)}}function Lr(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;eHr(e,t&&(O(t)?t[a]:t),n,r,i));return}if(Wr(r)&&!i){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Hr(e,t,n,r.component.subTree);return}let a=r.shapeFlag&4?To(r.component):r.el,o=i?null:a,{i:s,r:c}=e,l=t&&t.r,u=s.refs===v?s.refs={}:s.refs,d=s.setupState,f=rn(d),p=d===v?x:e=>!Br(u,e)&&D(f,e),m=(e,t)=>!(t&&Br(u,t));if(l!=null&&l!==c){if(Ur(t),N(l))u[l]=null,p(l)&&(d[l]=null);else if(cn(l)){let e=t;m(l,e.k)&&(l.value=null),e.k&&(u[e.k]=null)}}if(M(c))On(c,s,12,[o,u]);else{let t=N(c),r=cn(c);if(t||r){let s=()=>{if(e.f){let n=t?p(c)?d[c]:u[c]:m(c)||!e.k?c.value:u[e.k];if(i)O(n)&&T(n,a);else if(O(n))n.includes(a)||n.push(a);else if(t)u[c]=[a],p(c)&&(d[c]=u[c]);else{let t=[a];m(c,e.k)&&(c.value=t),e.k&&(u[e.k]=t)}}else t?(u[c]=o,p(c)&&(d[c]=o)):r&&(m(c,e.k)&&(c.value=o),e.k&&(u[e.k]=o))};if(o){let t=()=>{s(),Vr.delete(e)};t.id=-1,Vr.set(e,t),ya(t,n)}else Ur(e),s()}}}function Ur(e){let t=Vr.get(e);t&&(t.flags|=8,Vr.delete(e))}ge().requestIdleCallback,ge().cancelIdleCallback;var Wr=e=>!!e.type.__asyncLoader,Gr=e=>e.type.__isKeepAlive;function Kr(e,t){Jr(e,`a`,t)}function qr(e,t){Jr(e,`da`,t)}function Jr(e,t,n=uo){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Xr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Gr(e.parent.vnode)&&Yr(r,t,n,e),e=e.parent}}function Yr(e,t,n,r){let i=Xr(t,e,r,!0);ri(()=>{T(r[t],i)},n)}function Xr(e,t,n=uo,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{nt();let i=ho(n),a=kn(t,n,e,r);return i(),rt(),a};return r?i.unshift(a):i.push(a),a}}var Zr=e=>(t,n=uo)=>{(!vo||e===`sp`)&&Xr(e,(...e)=>t(...e),n)},Qr=Zr(`bm`),$r=Zr(`m`),ei=Zr(`bu`),ti=Zr(`u`),ni=Zr(`bum`),ri=Zr(`um`),ii=Zr(`sp`),ai=Zr(`rtg`),oi=Zr(`rtc`);function si(e,t=uo){Xr(`ec`,e,t)}var ci=`components`,li=`directives`;function ui(e,t){return mi(ci,e,!0,t)||e}var di=Symbol.for(`v-ndc`);function fi(e){return N(e)?mi(ci,e,!1)||e:e||di}function pi(e){return mi(li,e)}function mi(e,t,n=!0,r=!1){let i=Jn||uo;if(i){let n=i.type;if(e===ci){let e=Eo(n,!1);if(e&&(e===t||e===ae(t)||e===ce(ae(t))))return n}let a=hi(i[e]||n[e],t)||hi(i.appContext[e],t);return!a&&r?n:a}}function hi(e,t){return e&&(e[t]||e[ae(t)]||e[ce(ae(t))])}function gi(e,t,n,r){let i,a=n&&n[r],o=O(e);if(o||N(e)){let n=o&&$t(e),r=!1,s=!1;n&&(r=!tn(e),s=en(e),e=_t(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r0;return t!=="default"&&(e.name=t),Ra(),Ua(Ma,null,[W(`slot`,e,r&&r())],i?-2:64)}let o=e[t];o&&o._c&&(o._d=!1);let s=Ia.length;Ra();let c;try{let i=o&&_i(o(n)),s=n.key||a||i&&i.key;c=Ua(Ma,{key:(s&&!P(s)?s:`_${t}`)+(!i&&r?`_fb`:``)},i||(r?r():[]),i&&e._===1?64:-2)}catch(e){for(let e=Ia.length;e>s;e--)za();throw e}finally{o&&o._c&&(o._d=!0)}return!i&&c.scopeId&&(c.slotScopeIds=[c.scopeId+`-s`]),c}function _i(e){return e.some(e=>!Wa(e)||!(e.type===Pa||e.type===Ma&&!_i(e.children)))?e:null}var vi=e=>e?_o(e)?To(e):vi(e.parent):null,yi=w(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>vi(e.parent),$root:e=>vi(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Di(e),$forceUpdate:e=>e.f||=()=>{Bn(e.update)},$nextTick:e=>e.n||=zn.bind(e.proxy),$watch:e=>cr.bind(e)}),bi=(e,t)=>e!==v&&!e.__isScriptSetup&&D(e,t),oee={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:n,setupState:r,data:i,props:a,accessCache:o,type:s,appContext:c}=e;if(t[0]!==`$`){let e=o[t];if(e!==void 0)switch(e){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return a[t]}else if(bi(r,t))return o[t]=1,r[t];else if(i!==v&&D(i,t))return o[t]=2,i[t];else if(D(a,t))return o[t]=3,a[t];else if(n!==v&&D(n,t))return o[t]=4,n[t];else Si&&(o[t]=0)}let l=yi[t],u,d;if(l)return t===`$attrs`&&pt(e.attrs,`get`,``),l(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==v&&D(n,t))return o[t]=4,n[t];if(d=c.config.globalProperties,D(d,t))return d[t]},set({_:e},t,n){let{data:r,setupState:i,ctx:a}=e;return bi(i,t)?(i[t]=n,!0):r!==v&&D(r,t)?(r[t]=n,!0):D(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:a,type:o}},s){let c;return!!(n[s]||e!==v&&s[0]!==`$`&&D(e,s)||bi(t,s)||D(a,s)||D(r,s)||D(yi,s)||D(i.config.globalProperties,s)||(c=o.__cssModules)&&c[s])},defineProperty(e,t,n){return n.get==null?D(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function see(){return cee(`useAttrs`).attrs}function cee(e){let t=fo();return t.setupContext||=wo(t)}function xi(e){return O(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function lee(e,t){return!e||!t?e||t:O(e)&&O(t)?e.concat(t):w({},xi(e),xi(t))}var Si=!0;function Ci(e){let t=Di(e),n=e.proxy,r=e.ctx;Si=!1,t.beforeCreate&&Ti(t.beforeCreate,e,`bc`);let{data:i,computed:a,methods:o,watch:s,provide:c,inject:l,created:u,beforeMount:d,mounted:f,beforeUpdate:p,updated:m,activated:h,deactivated:g,beforeDestroy:_,beforeUnmount:v,destroyed:y,unmounted:x,render:S,renderTracked:C,renderTriggered:w,errorCaptured:T,serverPrefetch:E,expose:D,inheritAttrs:k,components:A,directives:j,filters:N}=t;if(l&&wi(l,r,null),o)for(let e in o){let t=o[e];M(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);F(t)&&(e.data=Yt(t))}if(Si=!0,a)for(let e in a){let t=a[e],i=G({get:M(t)?t.bind(n,n):M(t.get)?t.get.bind(n,n):b,set:!M(t)&&M(t.set)?t.set.bind(n):b});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(s)for(let e in s)Ei(s[e],r,n,e);if(c){let e=M(c)?c.call(n):c;Reflect.ownKeys(e).forEach(t=>{er(t,e[t])})}u&&Ti(u,e,`c`);function P(e,t){O(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(P(Qr,d),P($r,f),P(ei,p),P(ti,m),P(Kr,h),P(qr,g),P(si,T),P(oi,C),P(ai,w),P(ni,v),P(ri,x),P(ii,E),O(D)){if(D.length){let t=e.exposed||={};D.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={}}S&&e.render===b&&(e.render=S),k!=null&&(e.inheritAttrs=k),A&&(e.components=A),j&&(e.directives=j),E&&zr(e)}function wi(e,t,n=b){O(e)&&(e=Mi(e));for(let n in e){let r=e[n],i;i=F(r)?`default`in r?tr(r.from||n,r.default,!0):tr(r.from||n):tr(r),cn(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Ti(e,t,n){kn(O(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ei(e,t,n,r){let i=r.includes(`.`)?lr(n,r):()=>n[r];if(N(e)){let n=t[e];M(n)&&H(i,n)}else if(M(e))H(i,e.bind(n));else if(F(e)){if(O(e))e.forEach(e=>Ei(e,t,n,r));else{let r=M(e.handler)?e.handler.bind(n):t[e.handler];M(r)&&H(i,r,e)}}}function Di(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Oi(c,e,o,!0)),Oi(c,t,o)),F(t)&&a.set(t,c),c}function Oi(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Oi(e,a,n,!0),i&&i.forEach(t=>Oi(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=ki[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var ki={data:Ai,props:Fi,emits:Fi,methods:Pi,computed:Pi,beforeCreate:Ni,created:Ni,beforeMount:Ni,mounted:Ni,beforeUpdate:Ni,updated:Ni,beforeDestroy:Ni,beforeUnmount:Ni,destroyed:Ni,unmounted:Ni,activated:Ni,deactivated:Ni,errorCaptured:Ni,serverPrefetch:Ni,components:Pi,directives:Pi,watch:Ii,provide:Ai,inject:ji};function Ai(e,t){return t?e?function(){return w(M(e)?e.call(this,this):e,M(t)?t.call(this,this):t)}:t:e}function ji(e,t){return Pi(Mi(e),Mi(t))}function Mi(e){if(O(e)){let t={};for(let n=0;n{let c,l=v,u;return or(()=>{let t=e[i];ue(c,t)&&(c=t,s())}),{get(){return o(),n.get?n.get(c):c},set(e){let o=n.set?n.set(e):e;if(!ue(o,c)&&!(l!==v&&ue(e,l)))return;let d=r.vnode.props,f=!!(d&&(t in d||i in d||a in d)&&(`onUpdate:${t}`in d||`onUpdate:${i}`in d||`onUpdate:${a}`in d));f||(c=e,s()),r.emit(`update:${t}`,o),ue(e,l)&&(ue(e,o)&&!ue(o,u)||f&&l!==v&&!ue(o,c))&&s(),l=e,u=o}}});return s[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?o||v:s,done:!1}:{done:!0}}}},s}var Hi=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${ae(t)}Modifiers`]||e[`${se(t)}Modifiers`];function Ui(e,t,...n){if(e.isUnmounted)return;let r=e.vnode.props||v,i=n,a=t.startsWith(`update:`),o=a&&Hi(r,t.slice(7));o&&(o.trim&&(i=n.map(e=>N(e)?e.trim():e)),o.number&&(i=i.map(pe)));let s,c=r[s=le(t)]||r[s=le(ae(t))];!c&&a&&(c=r[s=le(se(t))]),c&&kn(c,e,6,i);let l=r[s+`Once`];if(l){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,kn(l,e,6,i)}}var Wi=new WeakMap;function Gi(e,t,n=!1){let r=n?Wi:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!M(e)){let r=e=>{let n=Gi(e,t,!0);n&&(s=!0,w(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(F(e)&&r.set(e,null),null):(O(a)?a.forEach(e=>o[e]=null):w(o,a),F(e)&&r.set(e,o),o)}function Ki(e,t){return!e||!S(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),D(e,t[0].toLowerCase()+t.slice(1))||D(e,se(t))||D(e,t))}function qi(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:s,emit:c,render:l,renderCache:u,props:d,data:f,setupState:p,ctx:m,inheritAttrs:h}=e,g=Xn(e),_,v;try{if(n.shapeFlag&4){let e=i||r,t=e;_=to(l.call(t,e,u,d,p,f,m)),v=s}else{let e=t;_=to(e.length>1?e(d,{attrs:s,slots:o,emit:c}):e(d,null)),v=t.props?s:Yi(s)}}catch(t){Ia.length=0,An(t,e,1),_=W(Pa)}let y=_;if(v&&h!==!1){let e=Object.keys(v),{shapeFlag:t}=y;e.length&&t&7&&(a&&e.some(C)&&(v=Xi(v,a)),y=Za(y,v,!1,!0))}return n.dirs&&(y=Za(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&Ir(fr(y.type)&&Fr(y)||y,n.transition),_=y,Xn(g),_}function Ji(e,t=!0){let n;for(let t=0;t{let t;for(let n in e)(n===`class`||n===`style`||S(n))&&((t||={})[n]=e[n]);return t},Xi=(e,t)=>{let n={};for(let r in e)(!C(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Zi(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Qi(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(ta),ra=e=>Object.getPrototypeOf(e)===ta;function ia(e,t,n,r=!1){let i={},a=na();e.propsDefaults=Object.create(null),oa(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);e.props=n?r?i:Xt(i):e.type.props?i:a,e.attrs=a}function aa(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=rn(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{c=!0;let[n,r]=la(e,t,!0);w(o,n),r&&s.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!a&&!c)return F(e)&&r.set(e,y),y;if(O(a))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,fa=e=>O(e)?e.map(to):[to(e)],pa=(e,t,n)=>{if(t._n)return t;let r=Zn((...e)=>fa(t(...e)),n);return r._c=!1,r},ma=(e,t,n)=>{let r=e._ctx;for(let n in e){if(da(n))continue;let i=e[n];if(M(i))t[n]=pa(n,i,r);else if(i!=null){let e=fa(i);t[n]=()=>e}}},ha=(e,t)=>{let n=fa(t);e.slots.default=()=>n},ga=(e,t,n)=>{for(let r in t)(n||!da(r))&&(e[r]=t[r])},_a=(e,t,n)=>{let r=e.slots=na();if(e.vnode.shapeFlag&32){let e=t._;e?(ga(r,t,n),n&&fe(r,`_`,e,!0)):ma(t,r)}else t&&ha(e,t)},va=(e,t,n)=>{let{vnode:r,slots:i}=e,a=!0,o=v;if(r.shapeFlag&32){let e=t._;e?n&&e===1?a=!1:ga(i,t,n):(a=!t.$stable,ma(t,i)),o=t}else t&&(ha(e,t),o={default:1});if(a)for(let e in i)!da(e)&&o[e]==null&&delete i[e]},ya=ja;function ba(e){return xa(e)}function xa(e,t){let n=ge();n.__VUE__=!0;let{insert:r,remove:i,patchProp:a,createElement:o,createText:s,createComment:c,setText:l,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=b,insertStaticContent:m}=e,h=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Ga(e,t)&&(r=se(e),ne(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null),t.dynamicChildren&&e&&e.dynamicChildren&&e.dynamicChildren.hasOnce&&(t.dynamicChildren===y&&(t.dynamicChildren=[]),t.dynamicChildren.hasOnce=!0);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case Na:g(e,t,n,r);break;case Pa:_(e,t,n,r);break;case Fa:e??x(t,n,r,o);break;case Ma:j(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?M(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,le)}u!=null&&i?Hr(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&Hr(e.ref,null,a,e,!0)},g=(e,t,n,i)=>{if(e==null)r(t.el=s(t.children),n,i);else{let n=t.el=e.el;t.children!==e.children&&l(n,t.children)}},_=(e,t,n,i)=>{e==null?r(t.el=c(t.children||``),n,i):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=m(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,i)=>{let a;for(;e&&e!==t;)a=f(e),r(e,n,i),e=a;r(t,n,i)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),i(e),e=n;i(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)T(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),O(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},T=(e,t,n,i,s,c,l,d)=>{let f,p,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(f=e.el=o(e.type,c,m&&m.is,m),h&8?u(f,e.children):h&16&&D(e.children,f,null,i,s,Sa(e,c),l,d),_&&$n(e,null,i,`created`),E(f,e,e.scopeId,l,i),m){for(let e in m)e!==`value`&&!z(e)&&a(f,e,null,m[e],c,i);`value`in m&&a(f,`value`,null,m.value,c),(p=m.onVnodeBeforeMount)&&ao(p,i,e)}_&&$n(e,null,i,`beforeMount`);let v=wa(s,g);v&&g.beforeEnter(f),r(f,t,n),((p=m&&m.onVnodeMounted)||v||_)&&ya(()=>{try{p&&ao(p,i,e),v&&g.enter(f),_&&$n(e,null,i,`mounted`)}finally{}},s)},E=(e,t,n,r,i)=>{if(n&&p(e,n),r)for(let t=0;t{for(let l=c;l{let c=t.el=e.el,{patchFlag:l,dynamicChildren:d,dirs:f}=t;l|=e.patchFlag&16;let p=e.props||v,m=t.props||v,h;if(n&&Ca(n,!1),(h=m.onVnodeBeforeUpdate)&&ao(h,n,t,e),f&&$n(t,e,n,`beforeUpdate`),n&&Ca(n,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(l=0,s=!1,d=null),(p.innerHTML&&m.innerHTML==null||p.textContent&&m.textContent==null)&&u(c,``),d?k(e.dynamicChildren,d,c,n,r,Sa(t,i),o):s||L(e,t,c,null,n,r,Sa(t,i),o,!1),l>0){if(l&16)A(c,p,m,n,i);else if(l&2&&p.class!==m.class&&a(c,`class`,null,m.class,i),l&4&&a(c,`style`,p.style,m.style,i),l&8){let e=t.dynamicProps;for(let t=0;t{h&&ao(h,n,t,e),f&&$n(t,e,n,`updated`)},r)},k=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(t!==n){if(t!==v)for(let o in t)!z(o)&&!(o in n)&&a(e,o,t[o],null,i,r);for(let o in n){if(z(o))continue;let s=n[o],c=t[o];s!==c&&o!==`value`&&a(e,o,c,s,i,r)}`value`in n&&a(e,`value`,t.value,n.value,i)}},j=(e,t,n,i,a,o,c,l,u)=>{let d=t.el=e?e.el:s(``),f=t.anchor=e?e.anchor:s(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(l=l?l.concat(h):h),e==null?(r(d,n,i),r(f,n,i),D(t.children||[],n,f,a,o,c,l,u)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(k(e.dynamicChildren,m,n,a,o,c,l),(t.key!=null||a&&t===a.subTree)&&Ta(e,t,!0)):L(e,t,n,f,a,o,c,l,u)},M=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):N(t,n,r,i,a,o,c):P(e,t,c)},N=(e,t,n,r,i,a,o)=>{let s=e.component=lo(e,r,i);if(Gr(e)&&(s.ctx.renderer=le),yo(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,F,o,a),!e.el){let r=s.subTree=W(Pa);_(null,r,t,n),e.placeholder=r.el}}else F(s,e,t,n,i,a,o)},P=(e,t,n)=>{let r=t.component=e.component;if(Zi(e,t,n)){if(r.asyncDep&&!r.asyncResolved){t.el=e.el,t.placeholder=e.placeholder,I(r,t,n);return}r.next=t,r.update()}else t.el=e.el,t.placeholder=e.placeholder,r.vnode=t},F=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=Da(e);if(n){t&&(t.el=c.el,I(e,t,o)),n.asyncDep.then(()=>{ya(()=>{e.isUnmounted||l()},i)});return}}let u=t,f;Ca(e,!1),t?(t.el=c.el,I(e,t,o)):t=c,n&&de(n),(f=t.props&&t.props.onVnodeBeforeUpdate)&&ao(f,s,t,c),Ca(e,!0);let p=qi(e),m=e.subTree;e.subTree=p,h(m,p,d(m.el),se(m),e,i,a),t.el=p.el,u===null&&ea(e,p.el),r&&ya(r,i),(f=t.props&&t.props.onVnodeUpdated)&&ya(()=>ao(f,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=Wr(t);if(Ca(e,!1),l&&de(l),!m&&(o=c&&c.onVnodeBeforeMount)&&ao(o,d,t),Ca(e,!0),s&&fe){let t=()=>{e.subTree=qi(e),fe(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=qi(e);h(null,o,n,r,e,i,a),t.el=o.el}if(u&&ya(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;ya(()=>ao(o,d,e),i)}(t.shapeFlag&256||d&&Wr(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&ya(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Ve(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>Bn(u),Ca(e,!0),l()},I=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,aa(e,t.props,r,n),va(e,t.children,n),nt(),Hn(e),rt()},L=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,d=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:m}=t;if(p>0){if(p&128){ee(l,f,n,r,i,a,o,s,c);return}if(p&256){R(l,f,n,r,i,a,o,s,c);return}}m&8?(d&16&&oe(l,i,a),f!==l&&u(n,f)):d&16?m&16?ee(l,f,n,r,i,a,o,s,c):oe(l,i,a,!0):(d&8&&u(n,``),m&16&&D(f,n,r,i,a,o,s,c))},R=(e,t,n,r,i,a,o,s,c)=>{e||=y,t||=y;let l=e.length,u=t.length,d=Math.min(l,u),f=0;for(;fu?oe(e,i,a,!0,!1,d):D(t,n,r,i,a,o,s,c,d)},ee=(e,t,n,r,i,a,o,s,c)=>{let l=0,u=t.length,d=e.length-1,f=u-1;for(;l<=d&&l<=f;){let r=e[l],u=t[l]=c?no(t[l]):to(t[l]);if(Ga(r,u))h(r,u,n,null,i,a,o,s,c);else break;l++}for(;l<=d&&l<=f;){let r=e[d],l=t[f]=c?no(t[f]):to(t[f]);if(Ga(r,l))h(r,l,n,null,i,a,o,s,c);else break;d--,f--}if(l>d){if(l<=f){let e=f+1,d=ef)for(;l<=d;)ne(e[l],i,a,!0),l++;else{let p=l,m=l,g=new Map;for(l=m;l<=f;l++){let e=t[l]=c?no(t[l]):to(t[l]);e.key!=null&&g.set(e.key,l)}let _,v=0,b=f-m+1,x=!1,S=0,C=Array(b);for(l=0;l=b){ne(r,i,a,!0);continue}let u;if(r.key!=null)u=g.get(r.key);else for(_=m;_<=f;_++)if(C[_-m]===0&&Ga(r,t[_])){u=_;break}u===void 0?ne(r,i,a,!0):(C[u-m]=l+1,u>=S?S=u:x=!0,h(r,t[u],n,null,i,a,o,s,c),v++)}let w=x?Ea(C):y;for(_=w.length-1,l=b-1;l>=0;l--){let e=m+l,d=t[e],f=t[e+1],p=e+1{let{el:s,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6)te(e.component.subTree,t,n,a);else if(d&128)e.suspense.move(t,n,a);else if(d&64)c.move(e,t,n,le);else if(c===Ma){r(s,t,n);for(let e=0;el.enter(s),o));else{let{leave:a,delayLeave:o,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?i(s):r(s,t,n)},d=()=>{let e=s._isLeaving||!!s[wr];s._isLeaving&&s[wr](!0),l.persisted&&!e?u():a(s,()=>{u(),c&&c()})};o?o(s,u,d):d()}}else r(s,t,n)},ne=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if((d===-2||l&&l.hasOnce)&&(i=!1),s!=null&&(nt(),Hr(s,null,n,e,!0),rt()),p!=null&&(!e.ctx||e.ctx===t)&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!Wr(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&ao(_,t,e),u&6)ae(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&$n(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,le,r):l&&!l.hasOnce&&(a!==Ma||d>0&&d&64)?oe(l,t,n,!1,!0):(a===Ma&&d&384||!i&&u&16)&&oe(c,t,n),r&&re(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&ya(()=>{_&&ao(_,t,e),h&&$n(e,null,t,`unmounted`),v&&(e.el=null)},n)},re=e=>{let{type:t,el:n,anchor:r,transition:a}=e,o=t===Ma;if(o&&!a){ie(n,r);return}if(t===Fa){C(e),a&&!a.persisted&&a.afterLeave&&a.afterLeave();return}let s=o?Rr(e):e,c=()=>{o?d(n)&&ie(n,r):i(n),a&&!a.persisted&&a.afterLeave&&a.afterLeave()};if(s&&s.shapeFlag&1&&a&&!a.persisted){let{leave:e,delayLeave:t}=a,n=s.el,r=()=>e(n,c);t?t(n,c,r):r()}else c()},ie=(e,t)=>{let n;for(;e!==t;)n=f(e),i(e),e=n;i(t)},ae=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Oa(c),Oa(l),r&&de(r),i.stop(),a?(a.flags|=8,ne(o,e,t,n)):e.vnode.el&&o&&(o.transition=e.vnode.transition,ne(o,e,t,n)),s&&ya(s,t),ya(()=>{e.isUnmounted=!0},t)},oe=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return se(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=f(e.anchor||e.el),n=t&&t[dr];return n?f(n):t},ce=(e,t,n)=>{Gn(()=>{e==null?t._vnode&&ne(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),t._vnode=e},e&&t._vnode?void 0:e&&e.component?e.component.uid:co())},le={p:h,um:ne,m:te,r:re,mt:N,mc:D,pc:L,pbc:k,n:se,o:e},ue,fe;return t&&([ue,fe]=t(le)),{render:ce,hydrate:ue,createApp:zi(ce,ue)}}function Sa({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function Ca({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function wa(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ta(e,t,n=!1){let r=e.children,i=t.children;if(O(r)&&O(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function Da(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Da(t)}function Oa(e){if(e)for(let t=0;te.__isSuspense;function ja(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):iee(e)}var Ma=Symbol.for(`v-fgt`),Na=Symbol.for(`v-txt`),Pa=Symbol.for(`v-cmt`),Fa=Symbol.for(`v-stc`),Ia=[],La=null;function Ra(e=!1){Ia.push(La=e?null:[])}function za(){Ia.pop(),La=Ia[Ia.length-1]||null}var Ba=1;function Va(e,t=!1){Ba+=e,e<0&&La&&t&&(La.hasOnce=!0)}function Ha(e){return e.dynamicChildren=Ba>0?La||y:null,za(),Ba>0&&La&&La.push(e),e}function uee(e,t,n,r,i,a){return Ha(Ja(e,t,n,r,i,a,!0))}function Ua(e,t,n,r,i){return Ha(W(e,t,n,r,i,!0))}function Wa(e){return e?e.__v_isVNode===!0:!1}function Ga(e,t){return e.type===t.type&&e.key===t.key}var Ka=({key:e})=>e??null,qa=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:N(e)||cn(e)||M(e)?{i:Jn,r:e,k:t,f:!!n}:e);function Ja(e,t=null,n=null,r=0,i=null,a=e===Ma?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ka(t),ref:t&&qa(t),scopeId:Yn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Jn};return s?(ro(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=N(n)?8:16),Ba>0&&!o&&La&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&La.push(c),c}var W=Ya;function Ya(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===di)&&(e=Pa),Wa(e)){let r=Za(e,t,!0);return n&&ro(r,n),Ba>0&&!a&&La&&(r.shapeFlag&6?La[La.indexOf(e)]=r:La.push(r)),r.patchFlag=-2,r}if(Do(e)&&(e=e.__vccOpts),t){t=Xa(t);let{class:e,style:n}=t;e&&!N(e)&&(t.class=Se(e)),F(n)&&(nn(n)&&!O(n)&&(n=w({},n)),t.style=_e(n))}let o=N(e)?1:Aa(e)?128:fr(e)?64:F(e)?4:M(e)?2:0;return Ja(e,t,n,r,i,o,a,!0)}function Xa(e){return e?nn(e)||ra(e)?w({},e):e:null}function Za(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?io(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ka(l),ref:t&&t.ref?n&&a?O(a)?a.concat(qa(t)):[a,qa(t)]:qa(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ma?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Za(e.ssContent),ssFallback:e.ssFallback&&Za(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return c&&r&&Ir(u,c.clone(u)),u}function Qa(e=` `,t=0){return W(Na,null,e,t)}function $a(e,t){let n=W(Fa,null,e);return n.staticCount=t,n}function eo(e=``,t=!1){return t?(Ra(),Ua(Pa,null,e)):W(Pa,null,e)}function to(e){return e==null||typeof e==`boolean`?W(Pa):O(e)?W(Ma,null,e.slice()):Wa(e)?no(e):W(Na,null,String(e))}function no(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Za(e)}function ro(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(O(t))n=16;else if(typeof t==`object`){if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),ro(e,n()),n._c&&(n._d=!0));return}{n=32;let r=t._;!r&&!ra(t)?t._ctx=Jn:r===3&&Jn&&(Jn.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}}else if(M(t)){if(r&65){ro(e,{default:t});return}t={default:t,_ctx:Jn},n=32}else t=String(t),r&64?(n=16,t=[Qa(t)]):n=8;e.children=t,e.shapeFlag|=n}function io(...e){let t={};for(let n=0;nuo||Jn,po,mo;{let e=ge(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};po=t(`__VUE_INSTANCE_SETTERS__`,e=>uo=e),mo=t(`__VUE_SSR_SETTERS__`,e=>vo=e)}var ho=e=>{let t=uo;return po(e),e.scope.on(),()=>{e.scope.off(),po(t)}},go=()=>{uo&&uo.scope.off(),po(null)};function _o(e){return e.vnode.shapeFlag&4}var vo=!1;function yo(e,t=!1,n=!1){t&&mo(t);let{props:r,children:i}=e.vnode,a=_o(e);ia(e,r,a,t),_a(e,i,n||t);let o=a?bo(e,t):void 0;return t&&mo(!1),o}function bo(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,oee);let{setup:r}=n;if(r){nt();let n=e.setupContext=r.length>1?wo(e):null,i=ho(e),a=On(r,e,0,[e.props,n]),o=I(a);if(rt(),i(),(o||e.sp)&&!Wr(e)&&zr(e),o){if(a.then(go,go),t)return a.then(n=>{mo(!0);try{xo(e,n,t)}finally{mo(!1)}}).catch(t=>{An(t,e,0)});e.asyncDep=a}else xo(e,a,t)}else So(e,t)}function xo(e,t,n){M(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:F(t)&&(e.setupState=mn(t)),So(e,n)}function So(e,t,n){let r=e.type;e.render||=r.render||b;{let t=ho(e);nt();try{Ci(e)}finally{rt(),t()}}}var Co={get(e,t){return pt(e,`get`,``),e[t]}};function wo(e){return{attrs:new Proxy(e.attrs,Co),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function To(e){return e.exposed?e.exposeProxy||=new Proxy(mn(an(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in yi)return yi[n](e)},has(e,t){return t in e||t in yi}}):e.proxy}function Eo(e,t=!0){return M(e)?e.displayName||e.name:e.name||t&&e.__name}function Do(e){return M(e)&&`__vccOpts`in e}var G=(e,t)=>xn(e,t,vo);function Oo(e,t,n){try{Va(-1);let r=arguments.length;return r===2?F(t)&&!O(t)?Wa(t)?W(e,null,[t]):W(e,t):W(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Wa(n)&&(n=[n]),W(e,t,n))}finally{Va(1)}}var ko=`3.5.44`,Ao=void 0,jo=typeof window<`u`&&window.trustedTypes;if(jo)try{Ao=jo.createPolicy(`vue`,{createHTML:e=>e})}catch{}var Mo=Ao?e=>Ao.createHTML(e):e=>e,No=`http://www.w3.org/2000/svg`,Po=`http://www.w3.org/1998/Math/MathML`,Fo=typeof document<`u`?document:null,Io=Fo&&Fo.createElement(`template`),Lo={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?Fo.createElementNS(No,e):t===`mathml`?Fo.createElementNS(Po,e):n?Fo.createElement(e,{is:n}):Fo.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>Fo.createTextNode(e),createComment:e=>Fo.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Fo.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),i!==a&&(i=i.nextSibling););else{Io.innerHTML=Mo(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=Io.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ro=`transition`,zo=`animation`,Bo=Symbol(`_vtc`),Vo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ho=w({},Or,Vo),Uo=(e=>(e.displayName=`Transition`,e.props=Ho,e))((e,{slots:t})=>Oo(jr,Ko(e),t)),Wo=(e,t=[])=>{O(e)?e.forEach(e=>e(...t)):e&&e(...t)},Go=e=>e?O(e)?e.some(e=>e.length>1):e.length>1:!1;function Ko(e){let t={};for(let n in e)n in Vo||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=qo(i),h=m&&m[0],g=m&&m[1],{onBeforeEnter:_,onEnter:v,onEnterCancelled:y,onLeave:b,onLeaveCancelled:x,onBeforeAppear:S=_,onAppear:C=v,onAppearCancelled:T=y}=t,E=(e,t,n,r)=>{e._enterCancelled=r,Xo(e,t?u:s),Xo(e,t?l:o),n&&n()},D=(e,t)=>{e._isLeaving=!1,Xo(e,d),Xo(e,p),Xo(e,f),t&&t()},O=e=>(t,n)=>{let i=e?C:v,o=()=>E(t,e,n);Wo(i,[t,o]),Zo(()=>{Xo(t,e?c:a),Yo(t,e?u:s),Go(i)||$o(t,r,h,o)})};return w(t,{onBeforeEnter(e){Wo(_,[e]),Yo(e,a),Yo(e,o)},onBeforeAppear(e){Wo(S,[e]),Yo(e,c),Yo(e,l)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>D(e,t);Yo(e,d),e._enterCancelled?(Yo(e,f),rs(e)):(rs(e),Yo(e,f)),Zo(()=>{e._isLeaving&&(Xo(e,d),Yo(e,p),Go(b)||$o(e,r,g,n))}),Wo(b,[e,n])},onEnterCancelled(e){E(e,!1,void 0,!0),Wo(y,[e])},onAppearCancelled(e){E(e,!0,void 0,!0),Wo(T,[e])},onLeaveCancelled(e){D(e),Wo(x,[e])}})}function qo(e){if(e==null)return null;if(F(e))return[Jo(e.enter),Jo(e.leave)];{let t=Jo(e);return[t,t]}}function Jo(e){return me(e)}function Yo(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[Bo]||(e[Bo]=new Set)).add(t)}function Xo(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[Bo];n&&(n.delete(t),n.size||(e[Bo]=void 0))}function Zo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Qo=0;function $o(e,t,n,r){let i=e._endId=++Qo,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=es(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${Ro}Delay`),a=r(`${Ro}Duration`),o=ts(i,a),s=r(`${zo}Delay`),c=r(`${zo}Duration`),l=ts(s,c),u=null,d=0,f=0;t===Ro?o>0&&(u=Ro,d=o,f=a.length):t===zo?l>0&&(u=zo,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?Ro:zo:null,f=u?u===Ro?a.length:c.length:0);let p=u===Ro&&/\b(?:transform|all)(?:,|$)/.test(r(`${Ro}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function ts(e,t){for(;e.lengthns(t)+ns(e[n])))}function ns(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function rs(e){return(e?e.ownerDocument:document).body.offsetHeight}function is(e,t,n){let r=e[Bo];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var as=Symbol(`_vod`),os=Symbol(`_vsh`),ss={name:`show`,beforeMount(e,{value:t},{transition:n}){e[as]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):cs(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),cs(e,!0),r.enter(e)):r.leave(e,()=>{cs(e,!1)}):cs(e,t))},beforeUnmount(e,{value:t}){cs(e,t)}};function cs(e,t){e.style.display=t?e[as]:`none`,e[os]=!t}var ls=Symbol(``),us=/(?:^|;)\s*display\s*:/;function ds(e,t,n){let r=e.style,i=N(n),a=!1;if(n&&!i){if(t){if(N(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??ps(r,t,``)}else for(let e in t)n[e]??ps(r,e,``)}for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?ps(r,i,``):_s(e,i,!N(t)&&t?t[i]:void 0,o)||ps(r,i,o)}}else if(i){if(t!==n){let e=r[ls];e&&(n+=`;`+e),r.cssText=n,a=us.test(n)}}else t&&e.removeAttribute(`style`);as in e&&((!i||t!==n)&&(e[as]=a?r.display:``),e[os]&&(r.display=`none`))}var fs=/\s*!important$/;function ps(e,t,n){if(O(n))n.forEach(n=>ps(e,t,n));else if(n??=``,t.startsWith(`--`))fs.test(n)?e.setProperty(t,n.replace(fs,``),`important`):e.setProperty(t,n);else{let r=gs(e,t);fs.test(n)?e.setProperty(se(r),n.replace(fs,``),`important`):e[r]=n}}var ms=[`Webkit`,`Moz`,`ms`],hs={};function gs(e,t){let n=hs[t];if(n)return n;let r=ae(t);if(r!==`filter`&&r in e)return hs[t]=r;r=ce(r);for(let n=0;nOs||=(ks.then(()=>Os=0),Date.now());function js(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(O(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;ne.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ns=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?is(e,r,o):t===`style`?ds(e,n,r):S(t)?C(t)||ws(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),1):t[0]===`^`?(t=t.slice(1),0):Ps(e,t,r,o))?(bs(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&ys(e,t,r,o,a,t!==`value`)):e._isVueCE&&(Fs(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!N(r)))?bs(e,ae(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),ys(e,t,r,o))};function Ps(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&Ms(t)&&M(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return Ms(t)&&N(n)?!1:t in e}function Fs(e,t){let n=e._def.props;if(!n)return!1;let r=ae(t);return Array.isArray(n)?n.some(e=>ae(e)===r):Object.keys(n).some(e=>ae(e)===r)}var Is=new WeakMap,Ls=new WeakMap,Rs=Symbol(`_moveCb`),zs=Symbol(`_enterCb`),Bs=new WeakMap,Vs=(e=>(delete e.props.mode,e))({name:`TransitionGroup`,props:w({},Ho,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=fo(),r=Er(),i,a,o,s,c=()=>(s===void 0&&(s=i.length>0&&Xs(i[0].el,n.vnode.el,Us(e))),s);return ti(()=>{if(Bs.delete(n),!c()){i=[],o=void 0;return}let t=Us(e);i.forEach(Hs);let r=o&&Ys(o,n.vnode.el);o=void 0,i.forEach(e=>Ws(e,r));let a=i.filter(Gs);rs(n.vnode.el),a.forEach(e=>{let n=e.el,r=n.style;Yo(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[Rs]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[Rs]=null,Xo(n,t))};n.addEventListener(`transitionend`,i)}),i=[]}),()=>{let l=rn(e),u=Ko(l),d=l.tag||Ma;if(i=[],s=void 0,a)for(let e=0;ee.willMove()&&e.item.contains(t));return n&&Ks(n.item,n)}function Xs(e,t,n){let r=e.cloneNode(),i=e[Bo];i&&i.forEach(e=>{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=es(r);return a.removeChild(r),o}var Zs=[`ctrl`,`shift`,`alt`,`meta`],Qs={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Zs.some(n=>e[`${n}Key`]&&!t.includes(n))},$s=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{tc().render(...e)}),rc=((...e)=>{let t=tc().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=pee(e);if(!r)return;let i=t._component;!M(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,fee(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function fee(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function pee(e){return N(e)?document.querySelector(e):e}var ic=e=>typeof e==`function`,mee=Array.isArray,hee=e=>typeof e==`string`,gee=e=>typeof e==`object`&&!!e,_ee=/^on[^a-z]/,vee=e=>_ee.test(e),ac=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},yee=/-(\w)/g,oc=ac(e=>e.replace(yee,(e,t)=>t?t.toUpperCase():``)),bee=/\B([A-Z])/g,xee=ac(e=>e.replace(bee,`-$1`).toLowerCase()),See=ac(e=>e.charAt(0).toUpperCase()+e.slice(1)),Cee=Object.prototype.hasOwnProperty,sc=(e,t)=>Cee.call(e,t);function wee(e,t,n,r){let i=e[n];if(i!=null){let e=sc(i,`default`);if(e&&r===void 0){let e=i.default;r=i.type!==Function&&ic(e)?e():e}i.type===Boolean&&(!sc(t,n)&&!e?r=!1:r===``&&(r=!0))}return r}function Tee(e){return Object.keys(e).reduce((t,n)=>((n.startsWith(`data-`)||n.startsWith(`aria-`))&&(t[n]=e[n]),t),{})}function cc(e){return typeof e==`number`?`${e}px`:e}function lc(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof e==`function`?e(t):e??n}function Eee(e){let t,n=new Promise(n=>{t=e(()=>{n(!0)})}),r=()=>{t?.()};return r.then=(e,t)=>n.then(e,t),r.promise=n,r}function K(){let e=[];for(let t=0;t0},e.prototype.connect_=function(){dc&&!this.connected_&&(document.addEventListener(`transitionend`,this.onTransitionEnd_),window.addEventListener(`resize`,this.refresh),vc?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(`DOMSubtreeModified`,this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){dc&&this.connected_&&(document.removeEventListener(`transitionend`,this.onTransitionEnd_),window.removeEventListener(`resize`,this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(`DOMSubtreeModified`,this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=t===void 0?``:t;_c.some(function(e){return!!~n.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||=new e,this.instance_},e.instance_=null,e}(),bc=(function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),Ic=typeof WeakMap<`u`?new WeakMap:new uc,Lc=function(){function e(t){if(!(this instanceof e))throw TypeError(`Cannot call a class as a function.`);if(!arguments.length)throw TypeError(`1 argument required, but only 0 present.`);var n=new Fc(t,yc.getInstance(),this);Ic.set(this,n)}return e}();[`observe`,`unobserve`,`disconnect`].forEach(function(e){Lc.prototype[e]=function(){var t;return(t=Ic.get(this))[e].apply(t,arguments)}});var Rc=(function(){return fc.ResizeObserver===void 0?Lc:fc.ResizeObserver})(),zc=e=>e!=null&&e!==``,Bc=(e,t)=>{let n=g({},e);return Object.keys(t).forEach(e=>{let r=n[e];if(r)r.type||r.default?r.default=t[e]:r.def?r.def(t[e]):n[e]={type:r,default:t[e]};else throw Error(`not have ${e} prop`)}),n},Vc=e=>{let t=Object.keys(e),n={},r={},i={};for(let a=0,o=t.length;a0&&arguments[0]!==void 0?arguments[0]:``,t=arguments.length>1&&arguments[1]!==void 0&&arguments[1],n={},r=/;(?![^(]*\))/g,i=/:(.+)/;return typeof e==`object`?e:(e.split(r).forEach(function(e){if(e){let r=e.split(i);if(r.length>1){let e=t?oc(r[0].trim()):r[0].trim();n[e]=r[1].trim()}}}),n)},Uc=(e,t)=>e[t]!==void 0,Wc=Symbol(`skipFlatten`),Gc=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=Array.isArray(e)?e:[e],r=[];return n.forEach(e=>{Array.isArray(e)?r.push(...Gc(e,t)):e&&e.type===Ma?e.key===Wc?r.push(e):r.push(...Gc(e.children,t)):e&&Wa(e)?t&&!tl(e)?r.push(e):t||r.push(e):zc(e)&&r.push(e)}),r},Kc=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`default`,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return Wa(e)?e.type===Ma?t==="default"?Gc(e.children):[]:e.children&&e.children[t]?Gc(e.children[t](n)):[]:Gc(e.$slots[t]&&e.$slots[t](n))},qc=e=>{let t=e?.vnode?.el||e&&(e.$el||e);for(;t&&!t.tagName;)t=t.nextSibling;return t},Jc=e=>{let t={};if(e.$&&e.$.vnode){let n=e.$.vnode.props||{};Object.keys(e.$props).forEach(r=>{let i=e.$props[r],a=xee(r);(i!==void 0||a in n)&&(t[r]=i)})}else if(Wa(e)&&typeof e.type==`object`){let n=e.props||{},r={};Object.keys(n).forEach(e=>{r[oc(e)]=n[e]});let i=e.type.props||{};Object.keys(i).forEach(e=>{let n=wee(i,r,e,r[e]);(n!==void 0||e in r)&&(t[e]=n)})}return t},Yc=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`default`,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i;if(e.$){let a=e[t];if(a!==void 0)return typeof a==`function`&&r?a(n):a;i=e.$slots[t],i=r&&i?i(n):i}else if(Wa(e)){let a=e.props&&e.props[t];if(a!==void 0&&e.props!==null)return typeof a==`function`&&r?a(n):a;e.type===Ma?i=e.children:e.children&&e.children[t]&&(i=e.children[t],i=r&&i?i(n):i)}return Array.isArray(i)&&(i=Gc(i),i=i.length===1?i[0]:i,i=i.length===0?void 0:i),i};function Xc(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return n=e.$?g(g({},n),e.$attrs):g(g({},n),e.props),Vc(n)[t?`onEvents`:`events`]}function Zc(e){let t=((Wa(e)?e.props:e.$attrs)||{}).class||{},n={};return typeof t==`string`?t.split(` `).forEach(e=>{n[e.trim()]=!0}):Array.isArray(t)?K(t).split(` `).forEach(e=>{n[e.trim()]=!0}):n=g(g({},n),t),n}function Qc(e,t){let n=((Wa(e)?e.props:e.$attrs)||{}).style||{};if(typeof n==`string`)n=Hc(n,t);else if(t&&n){let e={};return Object.keys(n).forEach(t=>e[oc(t)]=n[t]),e}return n}function $c(e){return e.length===1&&e[0].type===Ma}function el(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function tl(e){return e&&(e.type===Pa||e.type===Ma&&e.children.length===0||e.type===Na&&e.children.trim()===``)}function nl(e){return e&&e.type===Na}function rl(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=[];return e.forEach(e=>{Array.isArray(e)?t.push(...e):e?.type===Ma?t.push(...rl(e.children)):t.push(e)}),t.filter(e=>!tl(e))}function il(e){if(e){let t=rl(e);return t.length?t:void 0}return e}function al(e){return Array.isArray(e)&&e.length===1&&(e=e[0]),e&&e.__v_isVNode&&typeof e.type!=`symbol`}function ol(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`default`;return t[n]??e[n]?.call(e)}var sl=U({compatConfig:{MODE:3},name:`ResizeObserver`,props:{disabled:Boolean,onResize:Function},emits:[`resize`],setup(e,t){let{slots:n}=t,r=Yt({width:0,height:0,offsetHeight:0,offsetWidth:0}),i=null,a=null,o=()=>{a&&=(a.disconnect(),null)},s=t=>{let{onResize:n}=e,i=t[0].target,{width:a,height:o}=i.getBoundingClientRect(),{offsetWidth:s,offsetHeight:c}=i,l=Math.floor(a),u=Math.floor(o);if(r.width!==l||r.height!==u||r.offsetWidth!==s||r.offsetHeight!==c){let e={width:l,height:u,offsetWidth:s,offsetHeight:c};g(r,e),n&&Promise.resolve().then(()=>{n(g(g({},e),{offsetWidth:s,offsetHeight:c}),i)})}},c=fo(),l=()=>{let{disabled:t}=e;if(t){o();return}let n=qc(c);n!==i&&(o(),i=n),!a&&n&&(a=new Rc(s),a.observe(n))};return $r(()=>{l()}),ti(()=>{l()}),ri(()=>{o()}),H(()=>e.disabled,()=>{l()},{flush:`post`}),()=>n.default?.call(n)[0]}}),cl=e=>setTimeout(e,16),ll=e=>clearTimeout(e);typeof window<`u`&&`requestAnimationFrame`in window&&(cl=e=>window.requestAnimationFrame(e),ll=e=>window.cancelAnimationFrame(e));var ul=0,dl=new Map;function fl(e){dl.delete(e)}function pl(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;ul+=1;let n=ul;function r(t){if(t===0)fl(n),e();else{let e=cl(()=>{r(t-1)});dl.set(n,e)}}return r(t),n}pl.cancel=e=>{let t=dl.get(e);return fl(t),ll(t)};function ml(e){let t,n=n=>()=>{t=null,e(...n)},r=function(){t??=pl(n([...arguments]))};return r.cancel=()=>{pl.cancel(t),t=null},r}var hl=function(){return[...arguments]},gl=function(){return[...arguments]},_l=e=>{let t=e;return t.install=function(n){n.component(t.displayName||t.name,e)},e};function vl(){return{type:[Function,Array]}}function q(e){return{type:Object,default:e}}function J(e){return{type:Boolean,default:e}}function Y(e){return{type:Function,default:e}}function yl(e,t){return{validator:()=>!0,default:e}}function bl(){return{validator:()=>!0}}function xl(e){return{type:Array,default:e}}function X(e){return{type:String,default:e}}function Sl(e,t){return e?{type:e,default:t}:yl(t)}var Cl=!1;try{let e=Object.defineProperty({},"passive",{get(){Cl=!0}});window.addEventListener(`testPassive`,null,e),window.removeEventListener(`testPassive`,null,e)}catch{}var wl=Cl;function Tl(e,t,n,r){if(e&&e.addEventListener){let i=r;i===void 0&&wl&&(t===`touchstart`||t===`touchmove`||t===`wheel`)&&(i={passive:!1}),e.addEventListener(t,n,i)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(t,n)}}}function El(e){return e===window?{top:0,bottom:window.innerHeight}:e.getBoundingClientRect()}function Dl(e,t,n){if(n!==void 0&&t.top>e.top-n)return`${n+t.top}px`}function Ol(e,t,n){if(n!==void 0&&t.bottomt.target===e);n?n.affixList.push(t):(n={target:e,affixList:[t],eventHandlers:{}},Al.push(n),kl.forEach(t=>{n.eventHandlers[t]=Tl(e,t,()=>{n.affixList.forEach(e=>{let{lazyUpdatePosition:t}=e.exposed;t()},(t===`touchstart`||t===`touchmove`)&&wl?{passive:!0}:!1)})}))}function Ml(e){let t=Al.find(t=>{let n=t.affixList.some(t=>t===e);return n&&(t.affixList=t.affixList.filter(t=>t!==e)),n});t&&t.affixList.length===0&&(Al=Al.filter(e=>e!==t),kl.forEach(e=>{let n=t.eventHandlers[e];n&&n.remove&&n.remove()}))}var Nl=`anticon`,Pl=Symbol(`GlobalFormContextKey`),Fl=e=>{er(Pl,e)},Il=()=>tr(Pl,{validateMessages:G(()=>void 0)}),Ll=()=>({iconPrefixCls:String,getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:q(),input:q(),autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:q(),pageHeader:q(),componentSize:{type:String},componentDisabled:{type:Boolean,default:void 0},direction:{type:String,default:`ltr`},space:q(),virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:q(),pagination:q(),theme:q(),select:q(),wave:q()}),Rl=Symbol(`configProvider`),zl={getPrefixCls:(e,t)=>t||(e?`ant-${e}`:`ant`),iconPrefixCls:G(()=>Nl),getPopupContainer:G(()=>()=>document.body),direction:G(()=>`ltr`)},Bl=()=>tr(Rl,zl),Vl=e=>er(Rl,e),Hl=Symbol(`DisabledContextKey`),Ul=()=>tr(Hl,B(void 0)),Wl=e=>{let t=Ul();return er(Hl,G(()=>e.value??t.value)),e},Gl={items_per_page:`/ page`,jump_to:`Go to`,jump_to_confirm:`confirm`,page:``,prev_page:`Previous Page`,next_page:`Next Page`,prev_5:`Previous 5 Pages`,next_5:`Next 5 Pages`,prev_3:`Previous 3 Pages`,next_3:`Next 3 Pages`},Kl={locale:`en_US`,today:`Today`,now:`Now`,backToToday:`Back to today`,ok:`Ok`,clear:`Clear`,month:`Month`,year:`Year`,timeSelect:`select time`,dateSelect:`select date`,weekSelect:`Choose a week`,monthSelect:`Choose a month`,yearSelect:`Choose a year`,decadeSelect:`Choose a decade`,yearFormat:`YYYY`,dateFormat:`M/D/YYYY`,dayFormat:`D`,dateTimeFormat:`M/D/YYYY HH:mm:ss`,monthBeforeYear:!0,previousMonth:`Previous month (PageUp)`,nextMonth:`Next month (PageDown)`,previousYear:`Last year (Control + left)`,nextYear:`Next year (Control + right)`,previousDecade:`Last decade`,nextDecade:`Next decade`,previousCentury:`Last century`,nextCentury:`Next century`},ql={placeholder:`Select time`,rangePlaceholder:[`Start time`,`End time`]},Jl={lang:g({placeholder:`Select date`,yearPlaceholder:`Select year`,quarterPlaceholder:`Select quarter`,monthPlaceholder:`Select month`,weekPlaceholder:`Select week`,rangePlaceholder:[`Start date`,`End date`],rangeYearPlaceholder:[`Start year`,`End year`],rangeQuarterPlaceholder:[`Start quarter`,`End quarter`],rangeMonthPlaceholder:[`Start month`,`End month`],rangeWeekPlaceholder:[`Start week`,`End week`]},Kl),timePickerLocale:g({},ql)},Yl=Jl,Xl="${label} is not a valid ${type}",Zl={locale:`en`,Pagination:Gl,DatePicker:Jl,TimePicker:ql,Calendar:Yl,global:{placeholder:`Please select`},Table:{filterTitle:`Filter menu`,filterConfirm:`OK`,filterReset:`Reset`,filterEmptyText:`No filters`,filterCheckall:`Select all items`,filterSearchPlaceholder:`Search in filters`,emptyText:`No data`,selectAll:`Select current page`,selectInvert:`Invert current page`,selectNone:`Clear all data`,selectionAll:`Select all data`,sortTitle:`Sort`,expand:`Expand row`,collapse:`Collapse row`,triggerDesc:`Click to sort descending`,triggerAsc:`Click to sort ascending`,cancelSort:`Click to cancel sorting`},Tour:{Next:`Next`,Previous:`Previous`,Finish:`Finish`},Modal:{okText:`OK`,cancelText:`Cancel`,justOkText:`OK`},Popconfirm:{okText:`OK`,cancelText:`Cancel`},Transfer:{titles:[``,``],searchPlaceholder:`Search here`,itemUnit:`item`,itemsUnit:`items`,remove:`Remove`,selectCurrent:`Select current page`,removeCurrent:`Remove current page`,selectAll:`Select all data`,removeAll:`Remove all data`,selectInvert:`Invert current page`},Upload:{uploading:`Uploading...`,removeFile:`Remove file`,uploadError:`Upload error`,previewFile:`Preview file`,downloadFile:`Download file`},Empty:{description:`No data`},Icon:{icon:`icon`},Text:{edit:`Edit`,copy:`Copy`,copied:`Copied`,expand:`Expand`},PageHeader:{back:`Back`},Form:{optional:`(optional)`,defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:Xl,method:Xl,array:Xl,object:Xl,number:Xl,date:Xl,boolean:Xl,integer:Xl,float:Xl,regexp:Xl,email:Xl,url:Xl,hex:Xl},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:`Preview`},QRCode:{expired:`QR code expired`,refresh:`Refresh`,scanned:`Scanned`}},Ql=U({compatConfig:{MODE:3},name:`LocaleReceiver`,props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup(e,t){let{slots:n}=t,r=tr(`localeData`,{}),i=G(()=>{let{componentName:t=`global`,defaultLocale:n}=e,i=n||Zl[t||`global`],{antLocale:a}=r,o=t&&a?a[t]:{};return g(g({},typeof i==`function`?i():i),o||{})}),a=G(()=>{let{antLocale:e}=r,t=e&&e.locale;return e&&e.exist&&!t?Zl.locale:t});return()=>{let t=e.children||n.default,{antLocale:o}=r;return t?.(i.value,a.value,o)}}});function $l(e,t,n){let r=tr(`localeData`,{});return[G(()=>{let{antLocale:i}=r,a=fn(t)||Zl[e||`global`],o=e&&i?i[e]:{};return g(g(g({},typeof a==`function`?a():a),o||{}),fn(n)||{})})]}var eu=Ql;function tu(e){for(var t=0,n,r=0,i=e.length;i>=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var nu=`%`,ru=class{constructor(e){this.cache=new Map,this.instanceId=e}get(e){return this.cache.get(Array.isArray(e)?e.join(nu):e)||null}update(e,t){let n=Array.isArray(e)?e.join(nu):e,r=t(this.cache.get(n));r===null?this.cache.delete(n):this.cache.set(n,r)}},iu=`data-token-hash`,au=`data-css-hash`,ou=`__cssinjs_instance__`;function su(){let e=Math.random().toString(12).slice(2);if(typeof document<`u`&&document.head&&document.body){let t=document.body.querySelectorAll(`style[data-css-hash]`)||[],{firstChild:n}=document.head;Array.from(t).forEach(t=>{t[ou]=t.__cssinjs_instance__||e,t.__cssinjs_instance__===e&&document.head.insertBefore(t,n)});let r={};Array.from(document.querySelectorAll(`style[${au}]`)).forEach(t=>{var n;let i=t.getAttribute(au);r[i]?t.__cssinjs_instance__===e&&((n=t.parentNode)==null||n.removeChild(t)):r[i]=!0})}return new ru(e)}var cu=Symbol(`StyleContextKey`),lu=()=>{let e=fo(),t;if(e&&e.appContext){let n=e.appContext?.config?.globalProperties?.__ANTDV_CSSINJS_CACHE__;n?t=n:(t=su(),e.appContext.config.globalProperties&&(e.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__=t))}else t=su();return t},uu={cache:su(),defaultCache:!0,hashPriority:`low`},du=()=>{let e=lu();return tr(cu,V(g(g({},uu),{cache:e})))},fu=e=>{let t=du(),n=V(g(g({},uu),{cache:su()}));return H([()=>fn(e),t],()=>{let r=g({},t.value),i=fn(e);Object.keys(i).forEach(e=>{let t=i[e];i[e]!==void 0&&(r[e]=t)});let{cache:a}=i;r.cache=r.cache||su(),r.defaultCache=!a&&t.value.defaultCache,n.value=r},{immediate:!0}),er(cu,n),n},pu=_l(U({name:`AStyleProvider`,inheritAttrs:!1,props:{autoClear:J(),mock:X(),cache:q(),defaultCache:J(),hashPriority:X(),container:Sl(),ssrInline:J(),transformers:xl(),linters:xl()},setup(e,t){let{slots:n}=t;return fu(e),()=>n.default?.call(n)}}));function mu(e,t,n,r){let i=du(),a=V(``),o=V();ar(()=>{a.value=[e,...t.value].join(`%`)});let s=e=>{i.value.cache.update(e,e=>{let[t=0,n]=e||[];return t-1==0?(r?.(n,!1),null):[t-1,n]})};return H(a,(e,t)=>{t&&s(t),i.value.cache.update(e,e=>{let[t=0,r]=e||[],i=r||n();return[t+1,i]}),o.value=i.value.cache.get(a.value)[1]},{immediate:!0}),ni(()=>{s(a.value)}),o}function hu(){return!!(typeof window<`u`&&window.document&&window.document.createElement)}function gu(e,t){return e&&e.contains?e.contains(t):!1}var _u=`data-vc-order`,vu=`vc-util-key`,yu=new Map;function bu(){let{mark:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e?e.startsWith(`data-`)?e:`data-${e}`:vu}function xu(e){return e.attachTo?e.attachTo:document.querySelector(`head`)||document.body}function Su(e){return e===`queue`?`prependQueue`:e?`prepend`:`append`}function Cu(e){return Array.from((yu.get(e)||e).children).filter(e=>e.tagName===`STYLE`)}function wu(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!hu())return null;let{csp:n,prepend:r}=t,i=document.createElement(`style`);i.setAttribute(_u,Su(r)),n?.nonce&&(i.nonce=n?.nonce),i.innerHTML=e;let a=xu(t),{firstChild:o}=a;if(r){if(r===`queue`){let e=Cu(a).filter(e=>[`prepend`,`prependQueue`].includes(e.getAttribute(_u)));if(e.length)return a.insertBefore(i,e[e.length-1].nextSibling),i}a.insertBefore(i,o)}else a.appendChild(i);return i}function Tu(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Cu(xu(t)).find(n=>n.getAttribute(bu(t))===e)}function Eu(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Tu(e,t);n&&xu(t).removeChild(n)}function Du(e,t){let n=yu.get(e);if(!n||!gu(document,n)){let n=wu(``,t),{parentNode:r}=n;yu.set(e,r),e.removeChild(n)}}function Ou(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Du(xu(n),n);let r=Tu(t,n);if(r)return n.csp?.nonce&&r.nonce!==n.csp?.nonce&&(r.nonce=n.csp?.nonce),r.innerHTML!==e&&(r.innerHTML=e),r;let i=wu(e,n);return i.setAttribute(bu(n),t),i}function ku(e,t){if(e.length!==t.length)return!1;for(let n=0;n1&&arguments[1]!==void 0&&arguments[1],n={map:this.cache};return e.forEach(e=>{n=n?(n?.map)?.get(e):void 0}),n?.value&&t&&(n.value[1]=this.cacheCallTimes++),n?.value}get(e){return this.internalGet(e,!0)?.[0]}has(e){return!!this.internalGet(e)}set(t,n){if(!this.has(t)){if(this.size()+1>e.MAX_CACHE_SIZE+e.MAX_CACHE_OFFSET){let[e]=this.keys.reduce((e,t)=>{let[,n]=e;return this.internalGet(t)[1]{if(i===t.length-1)r.set(e,{value:[n,this.cacheCallTimes++]});else{let t=r.get(e);t?t.map||=new Map:r.set(e,{map:new Map}),r=r.get(e).map}})}deleteByPath(e,t){let n=e.get(t[0]);if(t.length===1)return n.map?e.set(t[0],{map:n.map}):e.delete(t[0]),n.value?.[0];let r=this.deleteByPath(n.map,t.slice(1));return(!n.map||n.map.size===0)&&!n.value&&e.delete(t[0]),r}delete(e){if(this.has(e))return this.keys=this.keys.filter(t=>!ku(t,e)),this.deleteByPath(this.cache,e)}};Au.MAX_CACHE_SIZE=20,Au.MAX_CACHE_OFFSET=5;var ju={};function Mu(e,t){}function Nu(e,t){}function Pu(e,t,n){!t&&!ju[n]&&(e(!1,n),ju[n]=!0)}function Fu(e,t){Pu(Mu,e,t)}function Iu(e,t){Pu(Nu,e,t)}function Lu(){}var Ru=Lu,zu=0,Bu=class{constructor(e){this.derivatives=Array.isArray(e)?e:[e],this.id=zu,e.length===0&&Ru(e.length>0,`[Ant Design Vue CSS-in-JS] Theme should have at least one derivative function.`),zu+=1}getDerivativeToken(e){return this.derivatives.reduce((t,n)=>n(e,t),void 0)}},Vu=new Au;function Hu(e){let t=Array.isArray(e)?e:[e];return Vu.has(t)||Vu.set(t,new Bu(t)),Vu.get(t)}var Uu=new WeakMap;function Wu(e){let t=Uu.get(e)||``;return t||(Object.keys(e).forEach(n=>{let r=e[n];t+=n,r instanceof Bu?t+=r.id:t+=r&&typeof r==`object`?Wu(r):r}),Uu.set(e,t)),t}function Gu(e,t){return tu(`${t}_${Wu(e)}`)}var Ku=`random-${Date.now()}-${Math.random()}`.replace(/\./g,``),qu=`_bAmBoO_`;function Ju(e,t,n){var r;if(hu()){Ou(e,Ku);let i=document.createElement(`div`);i.style.position=`fixed`,i.style.left=`0`,i.style.top=`0`,t?.(i),document.body.appendChild(i);let a=n?n(i):getComputedStyle(i).content?.includes(qu);return(r=i.parentNode)==null||r.removeChild(i),Eu(Ku),a}return!1}var Yu=void 0;function Xu(){return Yu===void 0&&(Yu=Ju(`@layer ${Ku} { .${Ku} { content: "${qu}"!important; } }`,e=>{e.className=Ku})),Yu}var Zu={},Qu=`css`,$u=new Map;function ed(e){$u.set(e,($u.get(e)||0)+1)}function td(e,t){typeof document<`u`&&document.querySelectorAll(`style[${iu}="${e}"]`).forEach(e=>{var n;e.__cssinjs_instance__===t&&((n=e.parentNode)==null||n.removeChild(e))})}var nd=0;function rd(e,t){$u.set(e,($u.get(e)||0)-1);let n=Array.from($u.keys()),r=n.filter(e=>($u.get(e)||0)<=0);n.length-r.length>nd&&r.forEach(e=>{td(e,t),$u.delete(e)})}var id=(e,t,n,r)=>{let i=n.getDerivativeToken(e),a=g(g({},i),t);return r&&(a=r(a)),a};function ad(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:B({}),r=du(),i=G(()=>g({},...t.value)),a=G(()=>Wu(i.value)),o=G(()=>Wu(n.value.override||Zu));return mu(`token`,G(()=>[n.value.salt||``,e.value.id,a.value,o.value]),()=>{let{salt:t=``,override:r=Zu,formatToken:a,getComputedToken:o}=n.value,s=o?o(i.value,r,e.value):id(i.value,r,e.value,a),c=Gu(s,t);s._tokenKey=c,ed(c);let l=`${Qu}-${tu(c)}`;return s._hashId=l,[s,l]},e=>{rd(e[0]._tokenKey,r.value?.cache.instanceId)})}var od={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},sd=`comm`,cd=`rule`,ld=`decl`,Dee=`@import`,Oee=`@namespace`,kee=`@keyframes`,Aee=`@layer`,jee=Math.abs,ud=String.fromCharCode;function dd(e){return e.trim()}function fd(e,t,n){return e.replace(t,n)}function pd(e,t){return e.charCodeAt(t)|0}function md(e,t,n){return e.slice(t,n)}function hd(e){return e.length}function Mee(e){return e.length}function gd(e,t){return t.push(e),e}var _d=1,vd=1,yd=0,bd=0,xd=0,Sd=``;function Cd(e,t,n,r,i,a,o,s){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:_d,column:vd,length:o,return:``,siblings:s}}function Nee(){return xd}function Pee(){return xd=bd>0?pd(Sd,--bd):0,vd--,xd===10&&(vd=1,_d--),xd}function wd(){return xd=bd2||Od(xd)>3?``:` `}function Ree(e,t){for(;--t&&wd()&&!(xd<48||xd>102||xd>57&&xd<65||xd>70&&xd<97););return Dd(e,Ed()+(t<6&&Td()==32&&wd()==32))}function Ad(e){for(;wd();)switch(xd){case e:return bd;case 34:case 39:e!==34&&e!==39&&Ad(xd);break;case 40:e===41&&Ad(e);break;case 92:wd()}return bd}function zee(e,t){for(;wd()&&e+xd!==57&&(e+xd!==84||Td()!==47););return`/*`+Dd(t,bd-1)+`*`+ud(e===47?e:wd())}function Bee(e){for(;!Od(Td());)wd();return Dd(e,bd)}function Vee(e){return Iee(jd(``,null,null,null,[``],e=Fee(e),0,[0],e))}function jd(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=0,b=``,x=i,S=a,C=r,w=b;g;)switch(m=y,y=wd()){case 40:m!=108&&pd(w,d-1)==58?(v++,w+=`(`):w+=kd(y);break;case 41:v--,w+=`)`;break;case 34:case 39:case 91:w+=kd(y);break;case 9:case 10:case 13:case 32:if(v>0){w+=ud(y);break}w+=Lee(m);break;case 92:w+=Ree(Ed()-1,7);continue;case 47:switch(Td()){case 42:case 47:gd(Hee(zee(wd(),Ed()),t,n,c),c),(Od(m||1)==5||Od(Td()||1)==5)&&hd(w)&&md(w,-1,void 0)!==` `&&(w+=` `);break;default:w+=`/`}break;case 123*h:s[l++]=hd(w)*_;case 125*h:case 59:case 0:if(v>0&&y){w+=ud(y);break}switch(y){case 0:case 125:g=0;case 59+u:_==-1&&(w=fd(w,/\f/g,``)),p>0&&(hd(w)-d||h===0)&&gd(p>32?Nd(w+`;`,r,n,d-1,c):Nd(fd(w,` `,``)+`;`,r,n,d-2,c),c);break;case 59:w+=`;`;default:if(gd(C=Md(w,t,n,l,u,i,s,b,x=[],S=[],d,a),a),y===123){if(u===0)jd(w,t,C,C,x,a,d,s,S);else{switch(f){case 99:if(pd(w,3)===110)break;case 108:if(pd(w,2)===97)break;default:u=0;case 100:case 109:case 115:}u?jd(e,C,C,r&&gd(Md(e,C,C,0,0,i,s,b,i,x=[],d,S),S),i,S,d,s,r?x:S):jd(w,C,C,C,[``],S,0,s,S)}}}l=u=p=0,h=_=1,b=w=``,d=o;break;case 58:d=1+hd(w),p=m;default:if(h<1){if(y==123)--h;else if(y==125&&h++==0&&Pee()==125)continue}switch(w+=ud(y),y*h){case 38:_=u>0?1:(w+=`\f`,-1);break;case 44:if(v>0)break;s[l++]=(hd(w)-1)*_,_=1;break;case 64:Td()===45&&(w+=kd(wd())),f=Td(),u=d=hd(b=w+=Bee(Ed())),y++;break;case 45:m===45&&hd(w)==2&&(h=0)}}return a}function Md(e,t,n,r,i,a,o,s,c,l,u,d){for(var f=i-1,p=i===0?a:[``],m=Mee(p),h=0,g=0,_=0;h0?p[v]+` `+y:fd(y,/&\f/g,p[v])))&&(c[_++]=b);return Cd(e,t,n,i===0?cd:s,c,l,u,d)}function Hee(e,t,n,r){return Cd(e,t,n,sd,ud(Nee()),md(e,2,-2),0,r)}function Nd(e,t,n,r,i){return Cd(e,t,n,ld,md(e,0,r),md(e,r+1,-1),r,i)}function Pd(e,t){for(var n=``,r=0;r `)}`:``}`)}function Wee(e){return(e.match(/:not\(([^)]*)\)/)?.[1]||``).split(/(\[[^[]*])|(?=[.#])/).filter(e=>e).length>1}function Gee(e){return e.parentSelectors.reduce((e,t)=>e?t.includes(`&`)?t.replace(/&/g,e):`${e} ${t}`:t,``)}var Kee=(e,t,n)=>{let r=Gee(n).match(/:not\([^)]*\)/g)||[];r.length>0&&r.some(Wee)&&Fd(`Concat ':not' selector not support in legacy browsers.`,n)},qee=(e,t,n)=>{switch(e){case`marginLeft`:case`marginRight`:case`paddingLeft`:case`paddingRight`:case`left`:case`right`:case`borderLeft`:case`borderLeftWidth`:case`borderLeftStyle`:case`borderLeftColor`:case`borderRight`:case`borderRightWidth`:case`borderRightStyle`:case`borderRightColor`:case`borderTopLeftRadius`:case`borderTopRightRadius`:case`borderBottomLeftRadius`:case`borderBottomRightRadius`:Fd(`You seem to be using non-logical property '${e}' which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n);return;case`margin`:case`padding`:case`borderWidth`:case`borderStyle`:if(typeof t==`string`){let r=t.split(` `).map(e=>e.trim());r.length===4&&r[1]!==r[3]&&Fd(`You seem to be using '${e}' property with different left ${e} and right ${e}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n)}return;case`clear`:case`textAlign`:(t===`left`||t===`right`)&&Fd(`You seem to be using non-logical value '${t}' of ${e}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n);return;case`borderRadius`:typeof t==`string`&&t.split(`/`).map(e=>e.trim()).reduce((e,t)=>{if(e)return e;let n=t.split(` `).map(e=>e.trim());return n.length>=2&&n[0]!==n[1]||n.length===3&&n[1]!==n[2]||n.length===4&&n[2]!==n[3]||e},!1)&&Fd(`You seem to be using non-logical value '${t}' of ${e}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n);return}},Jee=(e,t,n)=>{n.parentSelectors.some(e=>e.split(`,`).some(e=>e.split(`&`).length>2))&&Fd("Should not use more than one `&` in a selector.",n)},Id=`data-ant-cssinjs-cache-path`,Yee=`_FILE_STYLE__`;function Ld(e){return Object.keys(e).map(t=>`${t}:${e[t]}`).join(`;`)}var Rd,zd=!0;function Bd(){var e;if(!Rd&&(Rd={},hu())){let t=document.createElement(`div`);t.className=Id,t.style.position=`fixed`,t.style.visibility=`hidden`,t.style.top=`-9999px`,document.body.appendChild(t);let n=getComputedStyle(t).content||``;n=n.replace(/^"/,``).replace(/"$/,``),n.split(`;`).forEach(e=>{let[t,n]=e.split(`:`);Rd[t]=n});let r=document.querySelector(`style[${Id}]`);r&&(zd=!1,(e=r.parentNode)==null||e.removeChild(r)),document.body.removeChild(t)}}function Vd(e){return Bd(),!!Rd[e]}function Hd(e){let t=Rd[e],n=null;if(t&&hu()){if(zd)n=Yee;else{let t=document.querySelector(`style[${au}="${Rd[e]}"]`);t?n=t.innerHTML:delete Rd[e]}}return[n,t]}var Ud=hu(),Wd=`_skip_check_`,Gd=`_multi_value_`;function Kd(e){return Pd(Vee(e),Uee).replace(/\{%%%\:[^;];}/g,`;`)}function qd(e){return typeof e==`object`&&e&&(Wd in e||Gd in e)}function Jd(e,t,n){if(!t)return e;let r=`.${t}`,i=n===`low`?`:where(${r})`:r;return e.split(`,`).map(e=>{let t=e.trim().split(/\s+/),n=t[0]||``,r=n.match(/^\w+/)?.[0]||``;return n=`${r}${i}${n.slice(r.length)}`,[n,...t.slice(1)].join(` `)}).join(`,`)}var Yd=new Set,Xd=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{root:n,injectHash:r,parentSelectors:i}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{root:!0,parentSelectors:[]},{hashId:a,layer:o,path:s,hashPriority:c,transformers:l=[],linters:u=[]}=t,d=``,f={};function p(e){let n=e.getName(a);if(!f[n]){let[r]=Xd(e.style,t,{root:!1,parentSelectors:i});f[n]=`@keyframes ${e.getName(a)}${r}`}}function m(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e.forEach(e=>{Array.isArray(e)?m(e,t):e&&t.push(e)}),t}if(m(Array.isArray(e)?e:[e]).forEach(e=>{let o=typeof e==`string`&&!n?{}:e;if(typeof o==`string`)d+=`${o}\n`;else if(o._keyframe)p(o);else{let e=l.reduce((e,t)=>(t?.visit)?.call(t,e)||e,o);Object.keys(e).forEach(o=>{let s=e[o];if(typeof s==`object`&&s&&(o!==`animationName`||!s._keyframe)&&!qd(s)){let e=!1,l=o.trim(),u=!1;(n||r)&&a?l.startsWith(`@`)?e=!0:l=Jd(o,a,c):n&&!a&&(l===`&`||l===``)&&(l=``,u=!0);let[p,m]=Xd(s,t,{root:u,injectHash:e,parentSelectors:[...i,l]});f=g(g({},f),m),d+=`${l}${p}`}else{function e(e,t){let n=e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),r=t;!od[e]&&typeof r==`number`&&r!==0&&(r=`${r}px`),e===`animationName`&&t?._keyframe&&(p(t),r=t.getName(a)),d+=`${n}:${r};`}let t=s?.value??s;typeof s==`object`&&s?.[Gd]&&Array.isArray(t)?t.forEach(t=>{e(o,t)}):e(o,t)}})}}),!n)d=`{${d}}`;else if(o&&Xu()){let e=o.split(`,`);d=`@layer ${e[e.length-1].trim()} {${d}}`,e.length>1&&(d=`@layer ${o}{%%%:%}${d}`)}return[d,f]};function Zd(e,t){return tu(`${e.join(`%`)}${t}`)}function Qd(e,t){let n=du(),r=G(()=>e.value.token._tokenKey),i=G(()=>[r.value,...e.value.path]),a=Ud;return mu(`style`,i,()=>{let{path:o,hashId:s,layer:c,nonce:l,clientOnly:u,order:d=0}=e.value,f=i.value.join(`|`);if(Vd(f)){let[e,t]=Hd(f);if(e)return[e,r.value,t,{},u,d]}let p=t(),{hashPriority:m,container:h,transformers:g,linters:_,cache:v}=n.value,[y,b]=Xd(p,{hashId:s,hashPriority:m,layer:c,path:o.join(`-`),transformers:g,linters:_}),x=Kd(y),S=Zd(i.value,x);if(a){let e={mark:au,prepend:`queue`,attachTo:h,priority:d},t=typeof l==`function`?l():l;t&&(e.csp={nonce:t});let n=Ou(x,S,e);n[ou]=v.instanceId,n.setAttribute(iu,r.value),Object.keys(b).forEach(e=>{Yd.has(e)||(Yd.add(e),Ou(Kd(b[e]),`_effect-${e}`,{mark:au,prepend:`queue`,attachTo:h}))})}return[x,r.value,S,b,u,d]},(e,t)=>{let[,,r]=e;(t||n.value.autoClear)&&Ud&&Eu(r,{mark:au})}),e=>e}function $d(e){let t=arguments.length>1&&arguments[1]!==void 0&&arguments[1],n=Array.from(e.cache.keys()).filter(e=>e.startsWith(`style%`)),r={},i={},a=``;function o(e,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},a=g(g({},i),{[iu]:n,[au]:r}),o=Object.keys(a).map(e=>{let t=a[e];return t?`${e}="${t}"`:null}).filter(e=>e).join(` `);return t?e:``}return n.map(t=>{let n=t.slice(6).replace(/%/g,`|`),[a,s,c,l,u,d]=e.cache.get(t)[1];if(u)return null;let f={"data-vc-order":`prependQueue`,"data-vc-priority":`${d}`},p=o(a,s,c,f);return i[n]=c,l&&Object.keys(l).forEach(e=>{r[e]||(r[e]=!0,p+=o(Kd(l[e]),s,`_effect-${e}`,f))}),[d,p]}).filter(e=>e).sort((e,t)=>e[0]-t[0]).forEach(e=>{let[,t]=e;a+=t}),a+=o(`.${Id}{content:"${Ld(i)}";}`,void 0,void 0,{[Id]:Id}),a}var ef=class{constructor(e,t){this._keyframe=!0,this.name=e,this.style=t}getName(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``;return e?`${e}-${this.name}`:this.name}};function tf(e){if(typeof e==`number`)return[e];let t=String(e).split(/\s+/),n=``,r=0;return t.reduce((e,t)=>(t.includes(`(`)?(n+=t,r+=t.split(`(`).length-1):t.includes(`)`)?(n+=` ${t}`,r-=t.split(`)`).length-1,r===0&&(e.push(n),n=``)):r>0?n+=` ${t}`:e.push(t),e),[])}function nf(e){return e.notSplit=!0,e}var rf={inset:[`top`,`right`,`bottom`,`left`],insetBlock:[`top`,`bottom`],insetBlockStart:[`top`],insetBlockEnd:[`bottom`],insetInline:[`left`,`right`],insetInlineStart:[`left`],insetInlineEnd:[`right`],marginBlock:[`marginTop`,`marginBottom`],marginBlockStart:[`marginTop`],marginBlockEnd:[`marginBottom`],marginInline:[`marginLeft`,`marginRight`],marginInlineStart:[`marginLeft`],marginInlineEnd:[`marginRight`],paddingBlock:[`paddingTop`,`paddingBottom`],paddingBlockStart:[`paddingTop`],paddingBlockEnd:[`paddingBottom`],paddingInline:[`paddingLeft`,`paddingRight`],paddingInlineStart:[`paddingLeft`],paddingInlineEnd:[`paddingRight`],borderBlock:nf([`borderTop`,`borderBottom`]),borderBlockStart:nf([`borderTop`]),borderBlockEnd:nf([`borderBottom`]),borderInline:nf([`borderLeft`,`borderRight`]),borderInlineStart:nf([`borderLeft`]),borderInlineEnd:nf([`borderRight`]),borderBlockWidth:[`borderTopWidth`,`borderBottomWidth`],borderBlockStartWidth:[`borderTopWidth`],borderBlockEndWidth:[`borderBottomWidth`],borderInlineWidth:[`borderLeftWidth`,`borderRightWidth`],borderInlineStartWidth:[`borderLeftWidth`],borderInlineEndWidth:[`borderRightWidth`],borderBlockStyle:[`borderTopStyle`,`borderBottomStyle`],borderBlockStartStyle:[`borderTopStyle`],borderBlockEndStyle:[`borderBottomStyle`],borderInlineStyle:[`borderLeftStyle`,`borderRightStyle`],borderInlineStartStyle:[`borderLeftStyle`],borderInlineEndStyle:[`borderRightStyle`],borderBlockColor:[`borderTopColor`,`borderBottomColor`],borderBlockStartColor:[`borderTopColor`],borderBlockEndColor:[`borderBottomColor`],borderInlineColor:[`borderLeftColor`,`borderRightColor`],borderInlineStartColor:[`borderLeftColor`],borderInlineEndColor:[`borderRightColor`],borderStartStartRadius:[`borderTopLeftRadius`],borderStartEndRadius:[`borderTopRightRadius`],borderEndStartRadius:[`borderBottomLeftRadius`],borderEndEndRadius:[`borderBottomRightRadius`]};function af(e){return{_skip_check_:!0,value:e}}var of={visit:e=>{let t={};return Object.keys(e).forEach(n=>{let r=e[n],i=rf[n];if(i&&(typeof r==`number`||typeof r==`string`)){let e=tf(r);i.length&&i.notSplit?i.forEach(e=>{t[e]=af(r)}):i.length===1?t[i[0]]=af(r):i.length===2?i.forEach((n,r)=>{t[n]=af(e[r]??e[0])}):i.length===4?i.forEach((n,r)=>{t[n]=af(e[r]??e[r-2]??e[0])}):t[n]=r}else t[n]=r}),t}},sf=/url\([^)]+\)|var\([^)]+\)|(\d*\.?\d+)px/g;function cf(e,t){let n=10**(t+1),r=Math.floor(e*n);return Math.round(r/10)*10/n}var lf={Theme:Bu,createTheme:Hu,useStyleRegister:Qd,useCacheToken:ad,createCache:su,useStyleInject:du,useStyleProvider:fu,Keyframes:ef,extractStyle:$d,legacyLogicalPropertiesTransformer:of,px2remTransformer:function(){let{rootValue:e=16,precision:t=5,mediaQuery:n=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=(n,r)=>{if(!r)return n;let i=parseFloat(r);return i<=1?n:`${cf(i/e,t)}rem`};return{visit:e=>{let t=g({},e);return Object.entries(e).forEach(e=>{let[i,a]=e;if(typeof a==`string`&&a.includes(`px`)){let e=a.replace(sf,r);t[i]=e}!od[i]&&typeof a==`number`&&a!==0&&(t[i]=`${a}px`.replace(sf,r));let o=i.trim();if(o.startsWith(`@`)&&o.includes(`px`)&&n){let e=i.replace(sf,r);t[e]=t[i],delete t[i]}}),t}}},logicalPropertiesLinter:qee,legacyNotSelectorLinter:Kee,parentSelectorLinter:Jee,StyleProvider:pu},uf=`4.2.6`,df=[`blue`,`purple`,`cyan`,`green`,`magenta`,`pink`,`red`,`orange`,`yellow`,`volcano`,`geekblue`,`lime`,`gold`];function ff(e,t){mf(e)&&(e=`100%`);var n=hf(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(e=t===360?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t)),e)}function pf(e){return Math.min(1,Math.max(0,e))}function mf(e){return typeof e==`string`&&e.indexOf(`.`)!==-1&&parseFloat(e)===1}function hf(e){return typeof e==`string`&&e.indexOf(`%`)!==-1}function gf(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function _f(e){return e<=1?`${Number(e)*100}%`:e}function vf(e){return e.length===1?`0`+e:String(e)}function yf(e,t,n){return{r:ff(e,255)*255,g:ff(t,255)*255,b:ff(n,255)*255}}function bf(e,t,n){e=ff(e,255),t=ff(t,255),n=ff(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),a=0,o=0,s=(r+i)/2;if(r===i)o=0,a=0;else{var c=r-i;switch(o=s>.5?c/(2-r-i):c/(r+i),r){case e:a=(t-n)/c+(t1&&--n,n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Sf(e,t,n){var r,i,a;if(e=ff(e,360),t=ff(t,100),n=ff(n,100),t===0)i=n,a=n,r=n;else{var o=n<.5?n*(1+t):n+t-n*t,s=2*n-o;r=xf(s,o,e+1/3),i=xf(s,o,e),a=xf(s,o,e-1/3)}return{r:r*255,g:i*255,b:a*255}}function Cf(e,t,n){e=ff(e,255),t=ff(t,255),n=ff(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),a=0,o=r,s=r-i,c=r===0?0:s/r;if(r===i)a=0;else{switch(r){case e:a=(t-n)/s+(t>16,g:(e&65280)>>8,b:e&255}}var jf={aliceblue:`#f0f8ff`,antiquewhite:`#faebd7`,aqua:`#00ffff`,aquamarine:`#7fffd4`,azure:`#f0ffff`,beige:`#f5f5dc`,bisque:`#ffe4c4`,black:`#000000`,blanchedalmond:`#ffebcd`,blue:`#0000ff`,blueviolet:`#8a2be2`,brown:`#a52a2a`,burlywood:`#deb887`,cadetblue:`#5f9ea0`,chartreuse:`#7fff00`,chocolate:`#d2691e`,coral:`#ff7f50`,cornflowerblue:`#6495ed`,cornsilk:`#fff8dc`,crimson:`#dc143c`,cyan:`#00ffff`,darkblue:`#00008b`,darkcyan:`#008b8b`,darkgoldenrod:`#b8860b`,darkgray:`#a9a9a9`,darkgreen:`#006400`,darkgrey:`#a9a9a9`,darkkhaki:`#bdb76b`,darkmagenta:`#8b008b`,darkolivegreen:`#556b2f`,darkorange:`#ff8c00`,darkorchid:`#9932cc`,darkred:`#8b0000`,darksalmon:`#e9967a`,darkseagreen:`#8fbc8f`,darkslateblue:`#483d8b`,darkslategray:`#2f4f4f`,darkslategrey:`#2f4f4f`,darkturquoise:`#00ced1`,darkviolet:`#9400d3`,deeppink:`#ff1493`,deepskyblue:`#00bfff`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1e90ff`,firebrick:`#b22222`,floralwhite:`#fffaf0`,forestgreen:`#228b22`,fuchsia:`#ff00ff`,gainsboro:`#dcdcdc`,ghostwhite:`#f8f8ff`,goldenrod:`#daa520`,gold:`#ffd700`,gray:`#808080`,green:`#008000`,greenyellow:`#adff2f`,grey:`#808080`,honeydew:`#f0fff0`,hotpink:`#ff69b4`,indianred:`#cd5c5c`,indigo:`#4b0082`,ivory:`#fffff0`,khaki:`#f0e68c`,lavenderblush:`#fff0f5`,lavender:`#e6e6fa`,lawngreen:`#7cfc00`,lemonchiffon:`#fffacd`,lightblue:`#add8e6`,lightcoral:`#f08080`,lightcyan:`#e0ffff`,lightgoldenrodyellow:`#fafad2`,lightgray:`#d3d3d3`,lightgreen:`#90ee90`,lightgrey:`#d3d3d3`,lightpink:`#ffb6c1`,lightsalmon:`#ffa07a`,lightseagreen:`#20b2aa`,lightskyblue:`#87cefa`,lightslategray:`#778899`,lightslategrey:`#778899`,lightsteelblue:`#b0c4de`,lightyellow:`#ffffe0`,lime:`#00ff00`,limegreen:`#32cd32`,linen:`#faf0e6`,magenta:`#ff00ff`,maroon:`#800000`,mediumaquamarine:`#66cdaa`,mediumblue:`#0000cd`,mediumorchid:`#ba55d3`,mediumpurple:`#9370db`,mediumseagreen:`#3cb371`,mediumslateblue:`#7b68ee`,mediumspringgreen:`#00fa9a`,mediumturquoise:`#48d1cc`,mediumvioletred:`#c71585`,midnightblue:`#191970`,mintcream:`#f5fffa`,mistyrose:`#ffe4e1`,moccasin:`#ffe4b5`,navajowhite:`#ffdead`,navy:`#000080`,oldlace:`#fdf5e6`,olive:`#808000`,olivedrab:`#6b8e23`,orange:`#ffa500`,orangered:`#ff4500`,orchid:`#da70d6`,palegoldenrod:`#eee8aa`,palegreen:`#98fb98`,paleturquoise:`#afeeee`,palevioletred:`#db7093`,papayawhip:`#ffefd5`,peachpuff:`#ffdab9`,peru:`#cd853f`,pink:`#ffc0cb`,plum:`#dda0dd`,powderblue:`#b0e0e6`,purple:`#800080`,rebeccapurple:`#663399`,red:`#ff0000`,rosybrown:`#bc8f8f`,royalblue:`#4169e1`,saddlebrown:`#8b4513`,salmon:`#fa8072`,sandybrown:`#f4a460`,seagreen:`#2e8b57`,seashell:`#fff5ee`,sienna:`#a0522d`,silver:`#c0c0c0`,skyblue:`#87ceeb`,slateblue:`#6a5acd`,slategray:`#708090`,slategrey:`#708090`,snow:`#fffafa`,springgreen:`#00ff7f`,steelblue:`#4682b4`,tan:`#d2b48c`,teal:`#008080`,thistle:`#d8bfd8`,tomato:`#ff6347`,turquoise:`#40e0d0`,violet:`#ee82ee`,wheat:`#f5deb3`,white:`#ffffff`,whitesmoke:`#f5f5f5`,yellow:`#ffff00`,yellowgreen:`#9acd32`};function Mf(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,a=null,o=!1,s=!1;return typeof e==`string`&&(e=Lf(e)),typeof e==`object`&&(Rf(e.r)&&Rf(e.g)&&Rf(e.b)?(t=yf(e.r,e.g,e.b),o=!0,s=String(e.r).substr(-1)===`%`?`prgb`:`rgb`):Rf(e.h)&&Rf(e.s)&&Rf(e.v)?(r=_f(e.s),i=_f(e.v),t=wf(e.h,r,i),o=!0,s=`hsv`):Rf(e.h)&&Rf(e.s)&&Rf(e.l)&&(r=_f(e.s),a=_f(e.l),t=Sf(e.h,r,a),o=!0,s=`hsl`),Object.prototype.hasOwnProperty.call(e,`a`)&&(n=e.a)),n=gf(n),{ok:o,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Nf=`(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)`,Pf=`[\\s|\\(]+(${Nf})[,|\\s]+(${Nf})[,|\\s]+(${Nf})\\s*\\)?`,Ff=`[\\s|\\(]+(${Nf})[,|\\s]+(${Nf})[,|\\s]+(${Nf})[,|\\s]+(${Nf})\\s*\\)?`,If={CSS_UNIT:new RegExp(Nf),rgb:RegExp(`rgb`+Pf),rgba:RegExp(`rgba`+Ff),hsl:RegExp(`hsl`+Pf),hsla:RegExp(`hsla`+Ff),hsv:RegExp(`hsv`+Pf),hsva:RegExp(`hsva`+Ff),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Lf(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(jf[e])e=jf[e],t=!0;else if(e===`transparent`)return{r:0,g:0,b:0,a:0,format:`name`};var n=If.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=If.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=If.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=If.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=If.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=If.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=If.hex8.exec(e),n?{r:kf(n[1]),g:kf(n[2]),b:kf(n[3]),a:Of(n[4]),format:t?`name`:`hex8`}:(n=If.hex6.exec(e),n?{r:kf(n[1]),g:kf(n[2]),b:kf(n[3]),format:t?`name`:`hex`}:(n=If.hex4.exec(e),n?{r:kf(n[1]+n[1]),g:kf(n[2]+n[2]),b:kf(n[3]+n[3]),a:Of(n[4]+n[4]),format:t?`name`:`hex8`}:(n=If.hex3.exec(e),n?{r:kf(n[1]+n[1]),g:kf(n[2]+n[2]),b:kf(n[3]+n[3]),format:t?`name`:`hex`}:!1)))))))))}function Rf(e){return!!If.CSS_UNIT.exec(String(e))}var zf=function(){function e(t,n){if(t===void 0&&(t=``),n===void 0&&(n={}),t instanceof e)return t;typeof t==`number`&&(t=Af(t)),this.originalInput=t;var r=Mf(t);this.originalInput=t,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=n.format??r.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},e.prototype.getLuminance=function(){var e=this.toRgb(),t,n,r,i=e.r/255,a=e.g/255,o=e.b/255;return t=i<=.03928?i/12.92:((i+.055)/1.055)**2.4,n=a<=.03928?a/12.92:((a+.055)/1.055)**2.4,r=o<=.03928?o/12.92:((o+.055)/1.055)**2.4,.2126*t+.7152*n+.0722*r},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(e){return this.a=gf(e),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){return this.toHsl().s===0},e.prototype.toHsv=function(){var e=Cf(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},e.prototype.toHsvString=function(){var e=Cf(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.v*100);return this.a===1?`hsv(${t}, ${n}%, ${r}%)`:`hsva(${t}, ${n}%, ${r}%, ${this.roundA})`},e.prototype.toHsl=function(){var e=bf(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},e.prototype.toHslString=function(){var e=bf(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.l*100);return this.a===1?`hsl(${t}, ${n}%, ${r}%)`:`hsla(${t}, ${n}%, ${r}%, ${this.roundA})`},e.prototype.toHex=function(e){return e===void 0&&(e=!1),Tf(this.r,this.g,this.b,e)},e.prototype.toHexString=function(e){return e===void 0&&(e=!1),`#`+this.toHex(e)},e.prototype.toHex8=function(e){return e===void 0&&(e=!1),Ef(this.r,this.g,this.b,this.a,e)},e.prototype.toHex8String=function(e){return e===void 0&&(e=!1),`#`+this.toHex8(e)},e.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return this.a===1?`rgb(${e}, ${t}, ${n})`:`rgba(${e}, ${t}, ${n}, ${this.roundA})`},e.prototype.toPercentageRgb=function(){var e=function(e){return`${Math.round(ff(e,255)*100)}%`};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var e=function(e){return Math.round(ff(e,255)*100)};return this.a===1?`rgb(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%)`:`rgba(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%, ${this.roundA})`},e.prototype.toName=function(){if(this.a===0)return`transparent`;if(this.a<1)return!1;for(var e=`#`+Tf(this.r,this.g,this.b,!1),t=0,n=Object.entries(jf);t=0;return!t&&r&&(e.startsWith(`hex`)||e===`name`)?e===`name`&&this.a===0?this.toName():this.toRgbString():(e===`rgb`&&(n=this.toRgbString()),e===`prgb`&&(n=this.toPercentageRgbString()),(e===`hex`||e===`hex6`)&&(n=this.toHexString()),e===`hex3`&&(n=this.toHexString(!0)),e===`hex4`&&(n=this.toHex8String(!0)),e===`hex8`&&(n=this.toHex8String()),e===`name`&&(n=this.toName()),e===`hsl`&&(n=this.toHslString()),e===`hsv`&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=pf(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=pf(n.l),new e(n)},e.prototype.tint=function(e){return e===void 0&&(e=10),this.mix(`white`,e)},e.prototype.shade=function(e){return e===void 0&&(e=10),this.mix(`black`,e)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=pf(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=pf(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),a=n/100;return new e({r:(i.r-r.r)*a+r.r,g:(i.g-r.g)*a+r.g,b:(i.b-r.b)*a+r.b,a:(i.a-r.a)*a+r.a})},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),i=360/n,a=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,a.push(new e(r));return a},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,a=n.v,o=[],s=1/t;t--;)o.push(new e({h:r,s:i,v:a})),a=(a+s)%1;return o},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],a=360/t,o=1;o=60&&Math.round(e.h)<=240?n?Math.round(e.h)-Bf*t:Math.round(e.h)+Bf*t:n?Math.round(e.h)+Bf*t:Math.round(e.h)-Bf*t;return r<0?r+=360:r>=360&&(r-=360),r}function Qf(e,t,n){if(e.h===0&&e.s===0)return e.s;var r=n?e.s-Vf*t:t===Kf?e.s+Vf:e.s+Hf*t;return r>1&&(r=1),n&&t===Gf&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2))}function $f(e,t,n){var r=n?e.v+Uf*t:e.v-Wf*t;return r>1&&(r=1),Number(r.toFixed(2))}function ep(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[],r=Mf(e),i=Gf;i>0;--i){var a=Jf(r),o=Yf(Mf({h:Zf(a,i,!0),s:Qf(a,i,!0),v:$f(a,i,!0)}));n.push(o)}n.push(Yf(r));for(var s=1;s<=Kf;s+=1){var c=Jf(r),l=Yf(Mf({h:Zf(c,s),s:Qf(c,s),v:$f(c,s)}));n.push(l)}return t.theme===`dark`?qf.map(function(e){var r=e.index,i=e.opacity;return Yf(Xf(Mf(t.backgroundColor||`#141414`),Mf(n[r]),i*100))}):n}var tp={red:`#F5222D`,volcano:`#FA541C`,orange:`#FA8C16`,gold:`#FAAD14`,yellow:`#FADB14`,lime:`#A0D911`,green:`#52C41A`,cyan:`#13C2C2`,blue:`#1890FF`,geekblue:`#2F54EB`,purple:`#722ED1`,magenta:`#EB2F96`,grey:`#666666`},np={},rp={};Object.keys(tp).forEach(function(e){np[e]=ep(tp[e]),np[e].primary=np[e][5],rp[e]=ep(tp[e],{theme:`dark`,backgroundColor:`#141414`}),rp[e].primary=rp[e][5]}),np.red,np.volcano;var ip=np.gold;np.orange,np.yellow,np.lime,np.green,np.cyan;var ap=np.blue;np.geekblue,np.purple,np.magenta,np.grey;var op=e=>{let{controlHeight:t}=e;return{controlHeightSM:t*.75,controlHeightXS:t*.5,controlHeightLG:t*1.25}};function sp(e){let{sizeUnit:t,sizeStep:n}=e;return{sizeXXL:t*(n+8),sizeXL:t*(n+4),sizeLG:t*(n+2),sizeMD:t*(n+1),sizeMS:t*n,size:t*n,sizeSM:t*(n-1),sizeXS:t*(n-2),sizeXXS:t*(n-3)}}var cp={blue:`#1677ff`,purple:`#722ED1`,cyan:`#13C2C2`,green:`#52C41A`,magenta:`#EB2F96`,pink:`#eb2f96`,red:`#F5222D`,orange:`#FA8C16`,yellow:`#FADB14`,volcano:`#FA541C`,geekblue:`#2F54EB`,gold:`#FAAD14`,lime:`#A0D911`},lp=g(g({},cp),{colorPrimary:`#1677ff`,colorSuccess:`#52c41a`,colorWarning:`#faad14`,colorError:`#ff4d4f`,colorInfo:`#1677ff`,colorTextBase:``,colorBgBase:``,fontFamily:`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`,fontSize:14,lineWidth:1,lineType:`solid`,motionUnit:.1,motionBase:0,motionEaseOutCirc:`cubic-bezier(0.08, 0.82, 0.17, 1)`,motionEaseInOutCirc:`cubic-bezier(0.78, 0.14, 0.15, 0.86)`,motionEaseOut:`cubic-bezier(0.215, 0.61, 0.355, 1)`,motionEaseInOut:`cubic-bezier(0.645, 0.045, 0.355, 1)`,motionEaseOutBack:`cubic-bezier(0.12, 0.4, 0.29, 1.46)`,motionEaseInBack:`cubic-bezier(0.71, -0.46, 0.88, 0.6)`,motionEaseInQuint:`cubic-bezier(0.755, 0.05, 0.855, 0.06)`,motionEaseOutQuint:`cubic-bezier(0.23, 1, 0.32, 1)`,borderRadius:6,sizeUnit:4,sizeStep:4,sizePopupArrow:16,controlHeight:32,zIndexBase:0,zIndexPopupBase:1e3,opacityImage:1,wireframe:!1});function up(e,t){let{generateColorPalettes:n,generateNeutralColorPalettes:r}=t,{colorSuccess:i,colorWarning:a,colorError:o,colorInfo:s,colorPrimary:c,colorBgBase:l,colorTextBase:u}=e,d=n(c),f=n(i),p=n(a),m=n(o),h=n(s),_=r(l,u);return g(g({},_),{colorPrimaryBg:d[1],colorPrimaryBgHover:d[2],colorPrimaryBorder:d[3],colorPrimaryBorderHover:d[4],colorPrimaryHover:d[5],colorPrimary:d[6],colorPrimaryActive:d[7],colorPrimaryTextHover:d[8],colorPrimaryText:d[9],colorPrimaryTextActive:d[10],colorSuccessBg:f[1],colorSuccessBgHover:f[2],colorSuccessBorder:f[3],colorSuccessBorderHover:f[4],colorSuccessHover:f[4],colorSuccess:f[6],colorSuccessActive:f[7],colorSuccessTextHover:f[8],colorSuccessText:f[9],colorSuccessTextActive:f[10],colorErrorBg:m[1],colorErrorBgHover:m[2],colorErrorBorder:m[3],colorErrorBorderHover:m[4],colorErrorHover:m[5],colorError:m[6],colorErrorActive:m[7],colorErrorTextHover:m[8],colorErrorText:m[9],colorErrorTextActive:m[10],colorWarningBg:p[1],colorWarningBgHover:p[2],colorWarningBorder:p[3],colorWarningBorderHover:p[4],colorWarningHover:p[4],colorWarning:p[6],colorWarningActive:p[7],colorWarningTextHover:p[8],colorWarningText:p[9],colorWarningTextActive:p[10],colorInfoBg:h[1],colorInfoBgHover:h[2],colorInfoBorder:h[3],colorInfoBorderHover:h[4],colorInfoHover:h[4],colorInfo:h[6],colorInfoActive:h[7],colorInfoTextHover:h[8],colorInfoText:h[9],colorInfoTextActive:h[10],colorBgMask:new zf(`#000`).setAlpha(.45).toRgbString(),colorWhite:`#fff`})}var dp=e=>{let t=e,n=e,r=e,i=e;return e<6&&e>=5?t=e+1:e<16&&e>=6?t=e+2:e>=16&&(t=16),e<7&&e>=5?n=4:e<8&&e>=7?n=5:e<14&&e>=8?n=6:e<16&&e>=14?n=7:e>=16&&(n=8),e<6&&e>=2?r=1:e>=6&&(r=2),e>4&&e<8?i=4:e>=8&&(i=6),{borderRadius:e>16?16:e,borderRadiusXS:r,borderRadiusSM:n,borderRadiusLG:t,borderRadiusOuter:i}};function fp(e){let{motionUnit:t,motionBase:n,borderRadius:r,lineWidth:i}=e;return g({motionDurationFast:`${(n+t).toFixed(1)}s`,motionDurationMid:`${(n+t*2).toFixed(1)}s`,motionDurationSlow:`${(n+t*3).toFixed(1)}s`,lineWidthBold:i+1},dp(r))}var pp=(e,t)=>new zf(e).setAlpha(t).toRgbString(),mp=(e,t)=>new zf(e).darken(t).toHexString(),hp=e=>{let t=ep(e);return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[4],6:t[5],7:t[6],8:t[4],9:t[5],10:t[6]}},gp=(e,t)=>{let n=e||`#fff`,r=t||`#000`;return{colorBgBase:n,colorTextBase:r,colorText:pp(r,.88),colorTextSecondary:pp(r,.65),colorTextTertiary:pp(r,.45),colorTextQuaternary:pp(r,.25),colorFill:pp(r,.15),colorFillSecondary:pp(r,.06),colorFillTertiary:pp(r,.04),colorFillQuaternary:pp(r,.02),colorBgLayout:mp(n,4),colorBgContainer:mp(n,0),colorBgElevated:mp(n,0),colorBgSpotlight:pp(r,.85),colorBorder:mp(n,15),colorBorderSecondary:mp(n,6)}};function _p(e){let t=Array(10).fill(null).map((t,n)=>{let r=e*2.71828**((n-1)/5);return Math.floor((n>1?Math.floor(r):Math.ceil(r))/2)*2});return t[1]=e,t.map(e=>({size:e,lineHeight:(e+8)/e}))}var vp=e=>{let t=_p(e),n=t.map(e=>e.size),r=t.map(e=>e.lineHeight);return{fontSizeSM:n[0],fontSize:n[1],fontSizeLG:n[2],fontSizeXL:n[3],fontSizeHeading1:n[6],fontSizeHeading2:n[5],fontSizeHeading3:n[4],fontSizeHeading4:n[3],fontSizeHeading5:n[2],lineHeight:r[1],lineHeightLG:r[2],lineHeightSM:r[0],lineHeightHeading1:r[6],lineHeightHeading2:r[5],lineHeightHeading3:r[4],lineHeightHeading4:r[3],lineHeightHeading5:r[2]}};function yp(e){let t=Object.keys(cp).map(t=>{let n=ep(e[t]);return Array(10).fill(1).reduce((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e),{})}).reduce((e,t)=>(e=g(g({},e),t),e),{});return g(g(g(g(g(g(g({},e),t),up(e,{generateColorPalettes:hp,generateNeutralColorPalettes:gp})),vp(e.fontSize)),sp(e)),op(e)),fp(e))}function bp(e){return e>=0&&e<=255}function xp(e,t){let{r:n,g:r,b:i,a}=new zf(e).toRgb();if(a<1)return e;let{r:o,g:s,b:c}=new zf(t).toRgb();for(let e=.01;e<=1;e+=.01){let t=Math.round((n-o*(1-e))/e),a=Math.round((r-s*(1-e))/e),l=Math.round((i-c*(1-e))/e);if(bp(t)&&bp(a)&&bp(l))return new zf({r:t,g:a,b:l,a:Math.round(e*100)/100}).toRgbString()}return new zf({r:n,g:r,b:i,a:1}).toRgbString()}var Sp=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{delete r[e]});let i=g(g({},n),r),a=1200,o=1600,s=2e3;return g(g(g({},i),{colorLink:i.colorInfoText,colorLinkHover:i.colorInfoHover,colorLinkActive:i.colorInfoActive,colorFillContent:i.colorFillSecondary,colorFillContentHover:i.colorFill,colorFillAlter:i.colorFillQuaternary,colorBgContainerDisabled:i.colorFillTertiary,colorBorderBg:i.colorBgContainer,colorSplit:xp(i.colorBorderSecondary,i.colorBgContainer),colorTextPlaceholder:i.colorTextQuaternary,colorTextDisabled:i.colorTextQuaternary,colorTextHeading:i.colorText,colorTextLabel:i.colorTextSecondary,colorTextDescription:i.colorTextTertiary,colorTextLightSolid:i.colorWhite,colorHighlight:i.colorError,colorBgTextHover:i.colorFillSecondary,colorBgTextActive:i.colorFill,colorIcon:i.colorTextTertiary,colorIconHover:i.colorText,colorErrorOutline:xp(i.colorErrorBg,i.colorBgContainer),colorWarningOutline:xp(i.colorWarningBg,i.colorBgContainer),fontSizeIcon:i.fontSizeSM,lineWidth:i.lineWidth,controlOutlineWidth:i.lineWidth*2,controlInteractiveSize:i.controlHeight/2,controlItemBgHover:i.colorFillTertiary,controlItemBgActive:i.colorPrimaryBg,controlItemBgActiveHover:i.colorPrimaryBgHover,controlItemBgActiveDisabled:i.colorFill,controlTmpOutline:i.colorFillQuaternary,controlOutline:xp(i.colorPrimaryBg,i.colorBgContainer),lineType:i.lineType,borderRadius:i.borderRadius,borderRadiusXS:i.borderRadiusXS,borderRadiusSM:i.borderRadiusSM,borderRadiusLG:i.borderRadiusLG,fontWeightStrong:600,opacityLoading:.65,linkDecoration:`none`,linkHoverDecoration:`none`,linkFocusDecoration:`none`,controlPaddingHorizontal:12,controlPaddingHorizontalSM:8,paddingXXS:i.sizeXXS,paddingXS:i.sizeXS,paddingSM:i.sizeSM,padding:i.size,paddingMD:i.sizeMD,paddingLG:i.sizeLG,paddingXL:i.sizeXL,paddingContentHorizontalLG:i.sizeLG,paddingContentVerticalLG:i.sizeMS,paddingContentHorizontal:i.sizeMS,paddingContentVertical:i.sizeSM,paddingContentHorizontalSM:i.size,paddingContentVerticalSM:i.sizeXS,marginXXS:i.sizeXXS,marginXS:i.sizeXS,marginSM:i.sizeSM,margin:i.size,marginMD:i.sizeMD,marginLG:i.sizeLG,marginXL:i.sizeXL,marginXXL:i.sizeXXL,boxShadow:` @@ -470,4 +470,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho `]:{color:e.colorTextDisabled}}}}}},roe=e=>{let{componentCls:t,antCls:n,iconCls:r,fontSize:i,lineHeight:a}=e,o=`${t}-list-item`,s=`${o}-actions`,c=`${o}-action`,l=Math.round(i*a);return{[`${t}-wrapper`]:{[`${t}-list`]:g(g({},Ap()),{lineHeight:e.lineHeight,[o]:{position:`relative`,height:e.lineHeight*i,marginTop:e.marginXS,fontSize:i,display:`flex`,alignItems:`center`,transition:`background-color ${e.motionDurationSlow}`,"&:hover":{backgroundColor:e.controlItemBgHover},[`${o}-name`]:g(g({},Dp),{padding:`0 ${e.paddingXS}px`,lineHeight:a,flex:`auto`,transition:`all ${e.motionDurationSlow}`}),[s]:{[c]:{opacity:0},[`${c}${n}-btn-sm`]:{height:l,border:0,lineHeight:1,"> span":{transform:`scale(1)`}},[` ${c}:focus, &.picture ${c} - `]:{opacity:1},[r]:{color:e.colorTextDescription,transition:`all ${e.motionDurationSlow}`},[`&:hover ${r}`]:{color:e.colorText}},[`${t}-icon ${r}`]:{color:e.colorTextDescription,fontSize:i},[`${o}-progress`]:{position:`absolute`,bottom:-e.uploadProgressOffset,width:`100%`,paddingInlineStart:i+e.paddingXS,fontSize:i,lineHeight:0,pointerEvents:`none`,"> div":{margin:0}}},[`${o}:hover ${c}`]:{opacity:1,color:e.colorText},[`${o}-error`]:{color:e.colorError,[`${o}-name, ${t}-icon ${r}`]:{color:e.colorError},[s]:{[`${r}, ${r}:hover`]:{color:e.colorError},[c]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,"&::before":{display:`table`,width:0,height:0,content:`""`}}})}}},X8=new ef(`uploadAnimateInlineIn`,{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),Z8=new ef(`uploadAnimateInlineOut`,{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),ioe=e=>{let{componentCls:t}=e,n=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${n}-appear, ${n}-enter, ${n}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:`forwards`},[`${n}-appear, ${n}-enter`]:{animationName:X8},[`${n}-leave`]:{animationName:Z8}}},X8,Z8]},aoe=e=>{let{componentCls:t,iconCls:n,uploadThumbnailSize:r,uploadProgressOffset:i}=e,a=`${t}-list`,o=`${a}-item`;return{[`${t}-wrapper`]:{[`${a}${a}-picture, ${a}${a}-picture-card`]:{[o]:{position:`relative`,height:r+e.lineWidth*2+e.paddingXS*2,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,"&:hover":{background:`transparent`},[`${o}-thumbnail`]:g(g({},Dp),{width:r,height:r,lineHeight:`${r+e.paddingSM}px`,textAlign:`center`,flex:`none`,[n]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:`block`,width:`100%`,height:`100%`,overflow:`hidden`}}),[`${o}-progress`]:{bottom:i,width:`calc(100% - ${e.paddingSM*2}px)`,marginTop:0,paddingInlineStart:r+e.paddingXS}},[`${o}-error`]:{borderColor:e.colorError,[`${o}-thumbnail ${n}`]:{"svg path[fill='#e6f7ff']":{fill:e.colorErrorBg},"svg path[fill='#1890ff']":{fill:e.colorError}}},[`${o}-uploading`]:{borderStyle:`dashed`,[`${o}-name`]:{marginBottom:i}}}}}},ooe=e=>{let{componentCls:t,iconCls:n,fontSizeLG:r,colorTextLightSolid:i}=e,a=`${t}-list`,o=`${a}-item`,s=e.uploadPicCardSize;return{[`${t}-wrapper${t}-picture-card-wrapper`]:g(g({},Ap()),{display:`inline-block`,width:`100%`,[`${t}${t}-select`]:{width:s,height:s,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:`center`,verticalAlign:`top`,backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:`pointer`,transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:`flex`,alignItems:`center`,justifyContent:`center`,height:`100%`,textAlign:`center`},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${a}${a}-picture-card`]:{[`${a}-item-container`]:{display:`inline-block`,width:s,height:s,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:`top`},"&::after":{display:`none`},[o]:{height:`100%`,margin:0,"&::before":{position:`absolute`,zIndex:1,width:`calc(100% - ${e.paddingXS*2}px)`,height:`calc(100% - ${e.paddingXS*2}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:`" "`}},[`${o}:hover`]:{[`&::before, ${o}-actions`]:{opacity:1}},[`${o}-actions`]:{position:`absolute`,insetInlineStart:0,zIndex:10,width:`100%`,whiteSpace:`nowrap`,textAlign:`center`,opacity:0,transition:`all ${e.motionDurationSlow}`,[`${n}-eye, ${n}-download, ${n}-delete`]:{zIndex:10,width:r,margin:`0 ${e.marginXXS}px`,fontSize:r,cursor:`pointer`,transition:`all ${e.motionDurationSlow}`}},[`${o}-actions, ${o}-actions:hover`]:{[`${n}-eye, ${n}-download, ${n}-delete`]:{color:new zf(i).setAlpha(.65).toRgbString(),"&:hover":{color:i}}},[`${o}-thumbnail, ${o}-thumbnail img`]:{position:`static`,display:`block`,width:`100%`,height:`100%`,objectFit:`contain`},[`${o}-name`]:{display:`none`,textAlign:`center`},[`${o}-file + ${o}-name`]:{position:`absolute`,bottom:e.margin,display:`block`,width:`calc(100% - ${e.paddingXS*2}px)`},[`${o}-uploading`]:{[`&${o}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${n}-eye, ${n}-download, ${n}-delete`]:{display:`none`}},[`${o}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${e.paddingXS*2}px)`,paddingInlineStart:0}}})}},soe=e=>{let{componentCls:t}=e;return{[`${t}-rtl`]:{direction:`rtl`}}},coe=e=>{let{componentCls:t,colorTextDisabled:n}=e;return{[`${t}-wrapper`]:g(g({},Op(e)),{[t]:{outline:0,"input[type='file']":{cursor:`pointer`}},[`${t}-select`]:{display:`inline-block`},[`${t}-disabled`]:{color:n,cursor:`not-allowed`}})}},loe=Fp(`Upload`,e=>{let{fontSizeHeading3:t,fontSize:n,lineHeight:r,lineWidth:i,controlHeightLG:a}=e,o=Math.round(n*r),s=Rp(e,{uploadThumbnailSize:t*2,uploadProgressOffset:o/2+i,uploadPicCardSize:a*2.55});return[coe(s),noe(s),aoe(s),ooe(s),roe(s),ioe(s),soe(s),vk(s)]}),uoe=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},doe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);ic.value??d.value),[p,m]=gS(e.defaultFileList||[],{value:vn(e,`fileList`),postState:e=>{let t=Date.now();return(e??[]).map((e,n)=>(!e.uid&&!Object.isFrozen(e)&&(e.uid=`__AUTO__${t}_${n}__`),e))}}),_=B(`drop`),v=B(null);$r(()=>{wh(e.fileList!==void 0||r.value===void 0,`Upload`,"`value` is not a valid prop, do you mean `fileList`?"),wh(e.transformFile===void 0,`Upload`,"`transformFile` is deprecated. Please use `beforeUpload` directly."),wh(e.remove===void 0,`Upload`,"`remove` props is deprecated. Please use `remove` event.")});let y=(t,n,r)=>{var i,o;let s=[...n];e.maxCount===1?s=s.slice(-1):e.maxCount&&(s=s.slice(0,e.maxCount)),m(s);let c={file:t,fileList:s};r&&(c.event=r),(i=e[`onUpdate:fileList`])==null||i.call(e,c.fileList),(o=e.onChange)==null||o.call(e,c),a.onFieldChange()},b=(t,n)=>uoe(this,void 0,void 0,function*(){let{beforeUpload:r,transformFile:i}=e,a=t;if(r){let e=yield r(t,n);if(e===!1)return!1;if(delete t[Q8],e===Q8)return Object.defineProperty(t,Q8,{value:!0,configurable:!0}),!1;typeof e==`object`&&e&&(a=e)}return i&&(a=yield i(a)),a}),x=e=>{let t=e.filter(e=>!e.file[Q8]);if(!t.length)return;let n=t.map(e=>U8(e.file)),r=[...p.value];n.forEach(e=>{r=W8(e,r)}),n.forEach((e,n)=>{let i=e;if(t[n].parsedFile)e.status=`uploading`;else{let{originFileObj:t}=e,n;try{n=new File([t],t.name,{type:t.type})}catch{n=new Blob([t],{type:t.type}),n.name=t.name,n.lastModifiedDate=new Date,n.lastModified=new Date().getTime()}n.uid=e.uid,i=n}y(i,r)})},S=(e,t,n)=>{try{typeof e==`string`&&(e=JSON.parse(e))}catch{}if(!G8(t,p.value))return;let r=U8(t);r.status=`done`,r.percent=100,r.response=e,r.xhr=n;let i=W8(r,p.value);y(r,i)},C=(e,t)=>{if(!G8(t,p.value))return;let n=U8(t);n.status=`uploading`,n.percent=e.percent;let r=W8(n,p.value);y(n,r,e)},w=(e,t,n)=>{if(!G8(n,p.value))return;let r=U8(n);r.error=e,r.response=t,r.status=`error`;let i=W8(r,p.value);y(r,i)},T=t=>{let n,r=e.onRemove||e.remove;Promise.resolve(typeof r==`function`?r(t):r).then(e=>{var r,i;if(e===!1)return;let a=qae(t,p.value);a&&(n=g(g({},t),{status:`removed`}),(r=p.value)==null||r.forEach(e=>{let t=n.uid===void 0?`name`:`uid`;e[t]===n[t]&&!Object.isFrozen(e)&&(e.status=`removed`)}),(i=v.value)==null||i.abort(n),y(n,a))})},E=t=>{var n;_.value=t.type,t.type===`drop`&&((n=e.onDrop)==null||n.call(e,t))};i({onBatchStart:x,onSuccess:S,onProgress:C,onError:w,fileList:p,upload:v});let[D]=$l(`Upload`,Zl.Upload,G(()=>e.locale)),O=(t,r)=>{let{removeIcon:i,previewIcon:a,downloadIcon:s,previewFile:c,onPreview:l,onDownload:u,isImageUrl:d,progress:m,itemRender:h,iconRender:_,showUploadList:v}=e,{showDownloadIcon:y,showPreviewIcon:b,showRemoveIcon:x}=typeof v==`boolean`?{}:v;return v?W(toe,{prefixCls:o.value,listType:e.listType,items:p.value,previewFile:c,onPreview:l,onDownload:u,onRemove:T,showRemoveIcon:!f.value&&x,showPreviewIcon:b,showDownloadIcon:y,removeIcon:i,previewIcon:a,downloadIcon:s,iconRender:_,locale:D.value,isImageUrl:d,progress:m,itemRender:h,appendActionVisible:r,appendAction:t},g({},n)):t?.()};return()=>{let{listType:t,type:i}=e,{class:c,style:d}=r,m=doe(r,[`class`,`style`]),y=g(g(g({onBatchStart:x,onError:w,onProgress:C,onSuccess:S},m),e),{id:e.id??a.id.value,prefixCls:o.value,beforeUpload:b,onChange:void 0,disabled:f.value});delete y.remove,(!n.default||f.value)&&delete y.id;let T={[`${o.value}-rtl`]:s.value===`rtl`};if(i===`drag`){let e=K(o.value,{[`${o.value}-drag`]:!0,[`${o.value}-drag-uploading`]:p.value.some(e=>e.status===`uploading`),[`${o.value}-drag-hover`]:_.value===`dragover`,[`${o.value}-disabled`]:f.value,[`${o.value}-rtl`]:s.value===`rtl`},r.class,u.value);return l(W(`span`,h(h({},r),{},{class:K(`${o.value}-wrapper`,T,c,u.value)}),[W(`div`,{class:e,onDrop:E,onDragover:E,onDragleave:E,style:r.style},[W(F8,h(h({},y),{},{ref:v,class:`${o.value}-btn`}),h({default:()=>[W(`div`,{class:`${o.value}-drag-container`},[n.default?.call(n)])]},n))]),O()]))}let D=K(o.value,{[`${o.value}-select`]:!0,[`${o.value}-select-${t}`]:!0,[`${o.value}-disabled`]:f.value,[`${o.value}-rtl`]:s.value===`rtl`}),k=Gc(n.default?.call(n)),A=e=>W(`div`,{class:D,style:e},[W(F8,h(h({},y),{},{ref:v}),n)]);return l(t===`picture-card`?W(`span`,h(h({},r),{},{class:K(`${o.value}-wrapper`,`${o.value}-picture-card-wrapper`,T,r.class,u.value)}),[O(A,!!(k&&k.length))]):W(`span`,h(h({},r),{},{class:K(`${o.value}-wrapper`,T,r.class,u.value)}),[A(k&&k.length?void 0:{display:`none`}),O()]))}}}),e5=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{height:t}=e,i=e5(e,[`height`]),{style:a}=r,o=e5(r,[`style`]);return W($8,g(g(g({},i),o),{type:`drag`,style:g(g({},a),{height:typeof t==`number`?`${t}px`:t})}),n)}}}),foe=t5,poe=g($8,{Dragger:t5,LIST_IGNORE:Q8,install(e){return e.component($8.name,$8),e.component(t5.name,t5),e}});function moe(e){return e.replace(/([A-Z])/g,`-$1`).toLowerCase()}function hoe(e){return Object.keys(e).map(t=>`${moe(t)}: ${e[t]};`).join(` `)}function n5(){return window.devicePixelRatio||1}function r5(e,t,n,r){e.translate(t,n),e.rotate(Math.PI/180*Number(r)),e.translate(-t,-n)}var goe=(e,t)=>{let n=!1;return e.removedNodes.length&&(n=Array.from(e.removedNodes).some(e=>e===t)),e.type===`attributes`&&e.target===t&&(n=!0),n},_oe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i2&&arguments[2]!==void 0?arguments[2]:{},{window:r=GP}=n,i=_oe(n,[`window`]),a,o=UP(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=H(()=>VP(e),e=>{s(),o.value&&r&&e&&(a=new MutationObserver(t),a.observe(e,i))},{immediate:!0}),l=()=>{s(),c()};return zP(l),{isSupported:o,stop:l}}var i5=2,a5=3,yoe=_l(U({name:`AWatermark`,inheritAttrs:!1,props:Bc({zIndex:Number,rotate:Number,width:Number,height:Number,image:String,content:Sl([String,Array]),font:q(),rootClassName:String,gap:xl(),offset:xl()},{zIndex:9,rotate:-22,font:{},gap:[100,100]}),setup(e,t){let{slots:n,attrs:r}=t,[,i]=Jp(),a=V(),o=V(),s=V(!1),c=G(()=>e.gap?.[0]??100),l=G(()=>e.gap?.[1]??100),u=G(()=>c.value/2),d=G(()=>l.value/2),f=G(()=>e.offset?.[0]??u.value),p=G(()=>e.offset?.[1]??d.value),m=G(()=>e.font?.fontSize??i.value.fontSizeLG),_=G(()=>e.font?.fontWeight??`normal`),v=G(()=>e.font?.fontStyle??`normal`),y=G(()=>e.font?.fontFamily??`sans-serif`),b=G(()=>e.font?.color??i.value.colorFill),x=G(()=>{let t={zIndex:e.zIndex??9,position:`absolute`,left:0,top:0,width:`100%`,height:`100%`,pointerEvents:`none`,backgroundRepeat:`repeat`},n=f.value-u.value,r=p.value-d.value;return n>0&&(t.left=`${n}px`,t.width=`calc(100% - ${n}px)`,n=0),r>0&&(t.top=`${r}px`,t.height=`calc(100% - ${r}px)`,r=0),t.backgroundPosition=`${n}px ${r}px`,t}),S=()=>{o.value&&=(o.value.remove(),void 0)},C=(e,t)=>{var n;a.value&&o.value&&(s.value=!0,o.value.setAttribute(`style`,hoe(g(g({},x.value),{backgroundImage:`url('${e}')`,backgroundSize:`${(c.value+t)*i5}px`}))),(n=a.value)==null||n.append(o.value),setTimeout(()=>{s.value=!1}))},w=t=>{let n=120,r=64,i=e.content,a=e.image,o=e.width,s=e.height;if(!a&&t.measureText){t.font=`${Number(m.value)}px ${y.value}`;let e=Array.isArray(i)?i:[i],a=e.map(e=>t.measureText(e).width);n=Math.ceil(Math.max(...a)),r=Number(m.value)*e.length+(e.length-1)*a5}return[o??n,s??r]},T=(t,n,r,i,a)=>{let o=n5(),s=e.content,c=Number(m.value)*o;t.font=`${v.value} normal ${_.value} ${c}px/${a}px ${y.value}`,t.fillStyle=b.value,t.textAlign=`center`,t.textBaseline=`top`,t.translate(i/2,0),(Array.isArray(s)?s:[s])?.forEach((e,i)=>{t.fillText(e??``,n,r+i*(c+a5*o))})},E=()=>{let t=document.createElement(`canvas`),n=t.getContext(`2d`),r=e.image,i=e.rotate??-22;if(n){o.value||=document.createElement(`div`);let e=n5(),[a,s]=w(n),u=(c.value+a)*e,d=(l.value+s)*e;t.setAttribute(`width`,`${u*i5}px`),t.setAttribute(`height`,`${d*i5}px`);let f=c.value*e/2,p=l.value*e/2,m=a*e,h=s*e,g=(m+c.value*e)/2,_=(h+l.value*e)/2,v=f+u,y=p+d,b=g+u,x=_+d;if(n.save(),r5(n,g,_,i),r){let e=new Image;e.onload=()=>{n.drawImage(e,f,p,m,h),n.restore(),r5(n,b,x,i),n.drawImage(e,v,y,m,h),C(t.toDataURL(),a)},e.crossOrigin=`anonymous`,e.referrerPolicy=`no-referrer`,e.src=r}else T(n,f,p,m,h),n.restore(),r5(n,b,x,i),T(n,v,y,m,h),C(t.toDataURL(),a)}};return $r(()=>{E()}),H(()=>[e,i.value.colorFill,i.value.fontSizeLG],()=>{E()},{deep:!0,flush:`post`}),ni(()=>{S()}),voe(a,e=>{s.value||e.forEach(e=>{goe(e,o.value)&&(S(),E())})},{attributes:!0,subtree:!0,childList:!0,attributeFilter:[`style`,`class`]}),()=>W(`div`,h(h({},r),{},{ref:a,class:[r.class,e.rootClassName],style:[{position:`relative`},r.style]}),[n.default?.call(n)])}}));function o5(e,t){return{[`${e}, ${e}:hover, ${e}:focus`]:{color:t.colorTextDisabled,cursor:`not-allowed`}}}function s5(e){return{backgroundColor:e.bgColorSelected,boxShadow:e.boxShadow}}var boe=g({overflow:`hidden`},Dp),xoe=e=>{let{componentCls:t}=e;return{[t]:g(g(g(g(g({},Op(e)),{display:`inline-block`,padding:e.segmentedContainerPadding,color:e.labelColor,backgroundColor:e.bgColor,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,[`${t}-group`]:{position:`relative`,display:`flex`,alignItems:`stretch`,justifyItems:`flex-start`,width:`100%`},[`&${t}-rtl`]:{direction:`rtl`},[`&${t}-block`]:{display:`flex`},[`&${t}-block ${t}-item`]:{flex:1,minWidth:0},[`${t}-item`]:{position:`relative`,textAlign:`center`,cursor:`pointer`,transition:`color ${e.motionDurationMid} ${e.motionEaseInOut}`,borderRadius:e.borderRadiusSM,"&-selected":g(g({},s5(e)),{color:e.labelColorHover}),"&::after":{content:`""`,position:`absolute`,width:`100%`,height:`100%`,top:0,insetInlineStart:0,borderRadius:`inherit`,transition:`background-color ${e.motionDurationMid}`,pointerEvents:`none`},[`&:hover:not(${t}-item-selected):not(${t}-item-disabled)`]:{color:e.labelColorHover,"&::after":{backgroundColor:e.bgColorHover}},"&-label":g({minHeight:e.controlHeight-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeight-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`},boe),"&-icon + *":{marginInlineStart:e.marginSM/2},"&-input":{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:0,opacity:0,pointerEvents:`none`}},[`${t}-thumb`]:g(g({},s5(e)),{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:`100%`,padding:`${e.paddingXXS}px 0`,borderRadius:e.borderRadiusSM,[`& ~ ${t}-item:not(${t}-item-selected):not(${t}-item-disabled)::after`]:{backgroundColor:`transparent`}}),[`&${t}-lg`]:{borderRadius:e.borderRadiusLG,[`${t}-item-label`]:{minHeight:e.controlHeightLG-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightLG-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`,fontSize:e.fontSizeLG},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadius}},[`&${t}-sm`]:{borderRadius:e.borderRadiusSM,[`${t}-item-label`]:{minHeight:e.controlHeightSM-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightSM-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontalSM}px`},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadiusXS}}}),o5(`&-disabled ${t}-item`,e)),o5(`${t}-item-disabled`,e)),{[`${t}-thumb-motion-appear-active`]:{transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOut}, width ${e.motionDurationSlow} ${e.motionEaseInOut}`,willChange:`transform, width`}})}},Soe=Fp(`Segmented`,e=>{let{lineWidthBold:t,lineWidth:n,colorTextLabel:r,colorText:i,colorFillSecondary:a,colorBgLayout:o,colorBgElevated:s}=e;return[xoe(Rp(e,{segmentedPaddingHorizontal:e.controlPaddingHorizontal-n,segmentedPaddingHorizontalSM:e.controlPaddingHorizontalSM-n,segmentedContainerPadding:t,labelColor:r,labelColorHover:i,bgColor:o,bgColorHover:a,bgColorSelected:s}))]}),c5=e=>e?{left:e.offsetLeft,right:e.parentElement.clientWidth-e.clientWidth-e.offsetLeft,width:e.clientWidth}:null,l5=e=>e===void 0?void 0:`${e}px`,Coe=U({props:{value:yl(),getValueIndex:yl(),prefixCls:yl(),motionName:yl(),onMotionStart:yl(),onMotionEnd:yl(),direction:yl(),containerRef:yl()},emits:[`motionStart`,`motionEnd`],setup(e,t){let{emit:n}=t,r=B(),i=t=>{let n=e.getValueIndex(t),r=e.containerRef.value?.querySelectorAll(`.${e.prefixCls}-item`)[n];return r?.offsetParent&&r},a=B(null),o=B(null);H(()=>e.value,(e,t)=>{let r=i(t),s=i(e),c=c5(r),l=c5(s);a.value=c,o.value=l,n(r&&s?`motionStart`:`motionEnd`)},{flush:`post`});let s=G(()=>e.direction===`rtl`?l5(-a.value?.right):l5(a.value?.left)),c=G(()=>e.direction===`rtl`?l5(-o.value?.right):l5(o.value?.left)),l,u=e=>{clearTimeout(l),zn(()=>{e&&(e.style.transform=`translateX(var(--thumb-start-left))`,e.style.width=`var(--thumb-start-width)`)})},d=t=>{l=setTimeout(()=>{t&&(pM(t,`${e.motionName}-appear-active`),t.style.transform=`translateX(var(--thumb-active-left))`,t.style.width=`var(--thumb-active-width)`)})},f=t=>{a.value=null,o.value=null,t&&(t.style.transform=null,t.style.width=null,mM(t,`${e.motionName}-appear-active`)),n(`motionEnd`)},p=G(()=>({"--thumb-start-left":s.value,"--thumb-start-width":l5(a.value?.width),"--thumb-active-left":c.value,"--thumb-active-width":l5(o.value?.width)}));return ni(()=>{clearTimeout(l)}),()=>{let t={ref:r,style:p.value,class:[`${e.prefixCls}-thumb`]};return W(Uo,{appear:!0,onBeforeEnter:u,onEnter:d,onAfterEnter:f},{default:()=>[!a.value||!o.value?null:W(`div`,t,null)]})}}});function woe(e){return e.map(e=>typeof e==`object`&&e?e:{label:e?.toString(),title:e?.toString(),value:e})}var Toe=()=>({prefixCls:String,options:xl(),block:J(),disabled:J(),size:X(),value:g(g({},Sl([String,Number])),{required:!0}),motionName:String,onChange:Y(),"onUpdate:value":Y()}),u5=(e,t)=>{let{slots:n,emit:r}=t,{value:i,disabled:a,payload:o,title:s,prefixCls:c,label:l=n.label,checked:u,className:d}=e,f=e=>{a||r(`change`,e,i)};return W(`label`,{class:K({[`${c}-item-disabled`]:a},d)},[W(`input`,{class:`${c}-item-input`,type:`radio`,disabled:a,checked:u,onChange:f},null),W(`div`,{class:`${c}-item-label`,title:typeof s==`string`?s:``},[typeof l==`function`?l({value:i,disabled:a,payload:o,title:s}):l??i])])};u5.inheritAttrs=!1;var Eoe=_l(U({name:`ASegmented`,inheritAttrs:!1,props:Bc(Toe(),{options:[],motionName:`thumb-motion`}),slots:Object,setup(e,t){let{emit:n,slots:r,attrs:i}=t,{prefixCls:a,direction:o,size:s}=Z(`segmented`,e),[c,l]=Soe(a),u=V(),d=V(!1),f=G(()=>woe(e.options)),p=(t,r)=>{e.disabled||(n(`update:value`,r),n(`change`,r))};return()=>{let t=a.value;return c(W(`div`,h(h({},i),{},{class:K(t,{[l.value]:!0,[`${t}-block`]:e.block,[`${t}-disabled`]:e.disabled,[`${t}-lg`]:s.value==`large`,[`${t}-sm`]:s.value==`small`,[`${t}-rtl`]:o.value===`rtl`},i.class),ref:u}),[W(`div`,{class:`${t}-group`},[W(Coe,{containerRef:u,prefixCls:t,value:e.value,motionName:`${t}-${e.motionName}`,direction:o.value,getValueIndex:e=>f.value.findIndex(t=>t.value===e),onMotionStart:()=>{d.value=!0},onMotionEnd:()=>{d.value=!1}},null),f.value.map(n=>W(u5,h(h({key:n.value,prefixCls:t,checked:n.value===e.value,onChange:p},n),{},{className:K(n.className,`${t}-item`,{[`${t}-item-selected`]:n.value===e.value&&!d.value}),disabled:!!e.disabled||!!n.disabled}),r))])]))}}})),Doe=e=>{let{componentCls:t}=e;return{[t]:g(g({},Op(e)),{display:`flex`,justifyContent:`center`,alignItems:`center`,padding:e.paddingSM,backgroundColor:e.colorWhite,borderRadius:e.borderRadiusLG,border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,position:`relative`,width:`100%`,height:`100%`,overflow:`hidden`,[`& > ${t}-mask`]:{position:`absolute`,insetBlockStart:0,insetInlineStart:0,zIndex:10,display:`flex`,flexDirection:`column`,justifyContent:`center`,alignItems:`center`,width:`100%`,height:`100%`,color:e.colorText,lineHeight:e.lineHeight,background:e.QRCodeMaskBackgroundColor,textAlign:`center`,[`& > ${t}-expired , & > ${t}-scanned`]:{color:e.QRCodeTextColor}},"&-icon":{marginBlockEnd:e.marginXS,fontSize:e.controlHeight}}),[`${t}-borderless`]:{borderColor:`transparent`}}},Ooe=Fp(`QRCode`,e=>Doe(Rp(e,{QRCodeTextColor:`rgba(0, 0, 0, 0.88)`,QRCodeMaskBackgroundColor:`rgba(255, 255, 255, 0.96)`}))),koe={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z`}}]},name:`reload`,theme:`outlined`};function d5(e){for(var t=1;t({size:{type:Number,default:160},value:{type:String,required:!0},type:X(`canvas`),color:String,bgColor:String,includeMargin:Boolean,imageSettings:q()}),joe=()=>g(g({},p5()),{errorLevel:X(`M`),icon:String,iconSize:{type:Number,default:40},status:X(`active`),bordered:{type:Boolean,default:!0}}),m5;(function(e){class t{static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:40,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1,l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;if(!(t.MIN_VERSION<=o&&o<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=o;;u++){let n=t.getNumDataCodewords(u,r)*8,i=a.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.lengthm[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],et.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e>>9)*1335;let a=(t<<10|n)^21522;i(!(a>>>15));for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(!(t>>>18));for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;ne+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.lengtht.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(!(n>>>8)),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}}t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return!!(e>>>t&1)}function i(e){if(!e)throw Error(`Assertion error`)}class a{static makeBytes(e){let t=[];for(let r of e)n(r,8,t);return new a(a.Mode.BYTE,e.length,t)}static makeNumeric(e){if(!a.isNumeric(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let r=0;r=1<1&&arguments[1]!==void 0?arguments[1]:0,n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null)n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;else if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`)}else a&&i===null&&(i=o)})}),n.join(``)}function C5(e,t){return e.slice().map((e,n)=>n=t.y+t.h?e:e.map((e,n)=>n=t.x+t.w?e:!1))}function w5(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*Poe),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);d={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}return{x:l,y:u,h:c,w:s,excavation:d}}function T5(e,t){return t==null?e?Moe:Noe:Math.floor(t)}var Foe=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),Ioe=U({name:`QRCodeCanvas`,inheritAttrs:!1,props:g(g({},p5()),{level:String,bgColor:String,fgColor:String,marginSize:Number}),setup(e,t){let{attrs:n,expose:r}=t,i=G(()=>e.imageSettings?.src),a=V(null),o=V(null),s=V(!1);return r({toDataURL:(e,t)=>a.value?.toDataURL(e,t)}),ar(()=>{let{value:t,size:n=_5,level:r=v5,bgColor:i=y5,fgColor:c=b5,includeMargin:l=x5,marginSize:u,imageSettings:d}=e;if(a.value!=null){let e=a.value,f=e.getContext(`2d`);if(!f)return;let p=h5.QrCode.encodeText(t,g5[r]).getModules(),m=T5(l,u),h=p.length+m*2,g=w5(p,n,m,d),_=o.value,v=s.value&&g!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;v&&g.excavation!=null&&(p=C5(p,g.excavation));let y=window.devicePixelRatio||1;e.height=e.width=n*y;let b=n/h*y;f.scale(b,b),f.fillStyle=i,f.fillRect(0,0,h,h),f.fillStyle=c,Foe?f.fill(new Path2D(S5(p,m))):p.forEach(function(e,t){e.forEach(function(e,n){e&&f.fillRect(n+m,t+m,1,1)})}),v&&f.drawImage(_,g.x+m,g.y+m,g.w,g.h)}},{flush:`post`}),H(i,()=>{s.value=!1}),()=>{let t=e.size??_5,r={height:`${t}px`,width:`${t}px`},c=null;return i.value!=null&&(c=W(`img`,{src:i.value,key:i.value,style:{display:`none`},onLoad:()=>{s.value=!0},ref:o},null)),W(Ma,null,[W(`canvas`,h(h({},n),{},{style:[r,n.style],ref:a}),null),c])}}}),Loe=U({name:`QRCodeSVG`,inheritAttrs:!1,props:g(g({},p5()),{color:String,level:String,bgColor:String,fgColor:String,marginSize:Number,title:String}),setup(e){let t=null,n=null,r=null,i=null,a=null,o=null;return ar(()=>{let{value:s,size:c=_5,level:l=v5,includeMargin:u=x5,marginSize:d,imageSettings:f}=e;t=h5.QrCode.encodeText(s,g5[l]).getModules(),n=T5(u,d),r=t.length+n*2,i=w5(t,c,n,f),f!=null&&i!=null&&(i.excavation!=null&&(t=C5(t,i.excavation)),o=W(`image`,{"xlink:href":f.src,height:i.h,width:i.w,x:i.x+n,y:i.y+n,preserveAspectRatio:`none`},null)),a=S5(t,n)}),()=>{let t=e.bgColor&&y5,n=e.fgColor&&b5;return W(`svg`,{height:e.size,width:e.size,viewBox:`0 0 ${r} ${r}`},[!!e.title&&W(`title`,null,[e.title]),W(`path`,{fill:t,d:`M0,0 h${r}v${r}H0z`,"shape-rendering":`crispEdges`},null),W(`path`,{fill:n,d:a,"shape-rendering":`crispEdges`},null),o])}}}),Roe=_l(U({name:`AQrcode`,inheritAttrs:!1,props:joe(),emits:[`refresh`],setup(e,t){let{emit:n,attrs:r,expose:i}=t,[a]=$l(`QRCode`),{prefixCls:o}=Z(`qrcode`,e),[s,c]=Ooe(o),[,l]=Jp(),u=B();i({toDataURL:(e,t)=>u.value?.toDataURL(e,t)});let d=G(()=>{let{value:t,icon:n=``,size:r=160,iconSize:i=40,color:a=l.value.colorText,bgColor:o=`transparent`,errorLevel:s=`M`}=e,c={src:n,x:void 0,y:void 0,height:i,width:i,excavate:!0};return{value:t,size:r-(l.value.paddingSM+l.value.lineWidth)*2,level:s,bgColor:o,fgColor:a,imageSettings:n?c:void 0}});return()=>{let t=o.value;return s(W(`div`,h(h({},r),{},{style:[r.style,{width:`${e.size}px`,height:`${e.size}px`,backgroundColor:d.value.bgColor}],class:[c.value,t,{[`${t}-borderless`]:!e.bordered}]}),[e.status!==`active`&&W(`div`,{class:`${t}-mask`},[e.status===`loading`&&W(EX,null,null),e.status===`expired`&&W(Ma,null,[W(`p`,{class:`${t}-expired`},[a.value.expired]),W(Oj,{type:`link`,onClick:e=>n(`refresh`,e)},{default:()=>[a.value.refresh],icon:()=>W(f5,null,null)})]),e.status===`scanned`&&W(`p`,{class:`${t}-scanned`},[a.value.scanned])]),e.type===`canvas`?W(Ioe,h({ref:u},d.value),null):W(Loe,d.value,null)]))}}}));function zoe(e){let t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:i,bottom:a,left:o}=e.getBoundingClientRect();return r>=0&&o>=0&&i<=t&&a<=n}function Boe(e,t,n,r){let[i,a]=_S(void 0);ar(()=>{let t=typeof e.value==`function`?e.value():e.value;a(t||null)},{flush:`post`});let[o,s]=_S(null),c=()=>{if(!t.value)s(null);else if(i.value){!zoe(i.value)&&t.value&&i.value.scrollIntoView(r.value);let{left:e,top:n,width:a,height:c}=i.value.getBoundingClientRect(),l={left:e,top:n,width:a,height:c,radius:0};JSON.stringify(o.value)!==JSON.stringify(l)&&s(l)}else s(null)};return $r(()=>{H([t,i],()=>{c()},{flush:`post`,immediate:!0}),window.addEventListener(`resize`,c)}),ni(()=>{window.removeEventListener(`resize`,c)}),[G(()=>{if(!o.value)return o.value;let e=n.value?.offset||6,t=n.value?.radius||2;return{left:o.value.left-e,top:o.value.top-e,width:o.value.width+e*2,height:o.value.height+e*2,radius:t}}),i]}var Voe=()=>({arrow:Sl([Boolean,Object]),target:Sl([String,Function,Object]),title:Sl([String,Object]),description:Sl([String,Object]),placement:X(),mask:Sl([Object,Boolean],!0),className:{type:String},style:q(),scrollIntoViewOptions:Sl([Boolean,Object])}),E5=()=>g(g({},Voe()),{prefixCls:{type:String},total:{type:Number},current:{type:Number},onClose:Y(),onFinish:Y(),renderPanel:Y(),onPrev:Y(),onNext:Y()}),Hoe=U({name:`DefaultPanel`,inheritAttrs:!1,props:E5(),setup(e,t){let{attrs:n}=t;return()=>{let{prefixCls:t,current:r,total:i,title:a,description:o,onClose:s,onPrev:c,onNext:l,onFinish:u}=e;return W(`div`,h(h({},n),{},{class:K(`${t}-content`,n.class)}),[W(`div`,{class:`${t}-inner`},[W(`button`,{type:`button`,onClick:s,"aria-label":`Close`,class:`${t}-close`},[W(`span`,{class:`${t}-close-x`},[Qa(`×`)])]),W(`div`,{class:`${t}-header`},[W(`div`,{class:`${t}-title`},[a])]),W(`div`,{class:`${t}-description`},[o]),W(`div`,{class:`${t}-footer`},[W(`div`,{class:`${t}-sliders`},[i>1?[...Array.from({length:i}).keys()].map((e,t)=>W(`span`,{key:e,class:t===r?`active`:``},null)):null]),W(`div`,{class:`${t}-buttons`},[r===0?null:W(`button`,{class:`${t}-prev-btn`,onClick:c},[Qa(`Prev`)]),r===i-1?W(`button`,{class:`${t}-finish-btn`,onClick:u},[Qa(`Finish`)]):W(`button`,{class:`${t}-next-btn`,onClick:l},[Qa(`Next`)])])])])])}}}),Uoe=U({name:`TourStep`,inheritAttrs:!1,props:E5(),setup(e,t){let{attrs:n}=t;return()=>{let{current:t,renderPanel:r}=e;return W(Ma,null,[typeof r==`function`?r(g(g({},n),e),t):W(Hoe,h(h({},n),e),null)])}}}),D5=0,Woe=hu();function Goe(){let e;return Woe?(e=D5,D5+=1):e=`TEST_OR_SSR`,e}function Koe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:B(``),t=`vc_unique_${Goe()}`;return e.value||t}var O5={fill:`transparent`,"pointer-events":`auto`},qoe=U({name:`TourMask`,props:{prefixCls:{type:String},pos:q(),rootClassName:{type:String},showMask:J(),fill:{type:String,default:`rgba(0,0,0,0.5)`},open:J(),animated:Sl([Boolean,Object]),zIndex:{type:Number}},setup(e,t){let{attrs:n}=t,r=Koe();return()=>{let{prefixCls:t,open:i,rootClassName:a,pos:o,showMask:s,fill:c,animated:l,zIndex:u}=e,d=`${t}-mask-${r}`,f=typeof l==`object`?l?.placeholder:l;return W(Eb,{visible:i,autoLock:!0},{default:()=>i&&W(`div`,h(h({},n),{},{class:K(`${t}-mask`,a,n.class),style:[{position:`fixed`,left:0,right:0,top:0,bottom:0,zIndex:u,pointerEvents:`none`},n.style]}),[s?W(`svg`,{style:{width:`100%`,height:`100%`}},[W(`defs`,null,[W(`mask`,{id:d},[W(`rect`,{x:`0`,y:`0`,width:`100vw`,height:`100vh`,fill:`white`},null),o&&W(`rect`,{x:o.left,y:o.top,rx:o.radius,width:o.width,height:o.height,fill:`black`,class:f?`${t}-placeholder-animated`:``},null)])]),W(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:c,mask:`url(#${d})`},null),o&&W(Ma,null,[W(`rect`,h(h({},O5),{},{x:`0`,y:`0`,width:`100%`,height:o.top}),null),W(`rect`,h(h({},O5),{},{x:`0`,y:`0`,width:o.left,height:`100%`}),null),W(`rect`,h(h({},O5),{},{x:`0`,y:o.top+o.height,width:`100%`,height:`calc(100vh - ${o.top+o.height}px)`}),null),W(`rect`,h(h({},O5),{},{x:o.left+o.width,y:`0`,width:`calc(100vw - ${o.left+o.width}px)`,height:`100%`}),null)])]):null])})}}}),Joe=[0,0],k5={left:{points:[`cr`,`cl`],offset:[-8,0]},right:{points:[`cl`,`cr`],offset:[8,0]},top:{points:[`bc`,`tc`],offset:[0,-8]},bottom:{points:[`tc`,`bc`],offset:[0,8]},topLeft:{points:[`bl`,`tl`],offset:[0,-8]},leftTop:{points:[`tr`,`tl`],offset:[-8,0]},topRight:{points:[`br`,`tr`],offset:[0,-8]},rightTop:{points:[`tl`,`tr`],offset:[8,0]},bottomRight:{points:[`tr`,`br`],offset:[0,8]},rightBottom:{points:[`bl`,`br`],offset:[8,0]},bottomLeft:{points:[`tl`,`bl`],offset:[0,8]},leftBottom:{points:[`br`,`bl`],offset:[-8,0]}};function A5(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0],t={};return Object.keys(k5).forEach(n=>{t[n]=g(g({},k5[n]),{autoArrow:e,targetOffset:Joe})}),t}A5();var Yoe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{builtinPlacements:e,popupAlign:t}=Rh();return{builtinPlacements:e,popupAlign:t,steps:xl(),open:J(),defaultCurrent:{type:Number},current:{type:Number},onChange:Y(),onClose:Y(),onFinish:Y(),mask:Sl([Boolean,Object],!0),arrow:Sl([Boolean,Object],!0),rootClassName:{type:String},placement:X(`bottom`),prefixCls:{type:String,default:`rc-tour`},renderPanel:Y(),gap:q(),animated:Sl([Boolean,Object]),scrollIntoViewOptions:Sl([Boolean,Object],!0),zIndex:{type:Number,default:1001}}},Xoe=U({name:`Tour`,inheritAttrs:!1,props:Bc(M5(),{}),setup(e){let{defaultCurrent:t,placement:n,mask:r,scrollIntoViewOptions:i,open:a,gap:o,arrow:s}=hn(e),c=B(),[l,u]=gS(0,{value:G(()=>e.current),defaultValue:t.value}),[d,f]=gS(void 0,{value:G(()=>e.open),postState:t=>l.value<0||l.value>=e.steps.length?!1:t??!0}),p=V(d.value);ar(()=>{d.value&&!p.value&&u(0),p.value=d.value});let m=G(()=>e.steps[l.value]||{}),_=G(()=>m.value.placement??n.value),v=G(()=>d.value&&(m.value.mask??r.value)),y=G(()=>m.value.scrollIntoViewOptions??i.value),[b,x]=Boe(G(()=>m.value.target),a,o,y),S=G(()=>x.value?m.value.arrow===void 0?s.value:m.value.arrow:!1),C=G(()=>typeof S.value==`object`&&S.value.pointAtCenter);H(C,()=>{var e;(e=c.value)==null||e.forcePopupAlign()}),H(l,()=>{var e;(e=c.value)==null||e.forcePopupAlign()});let w=t=>{var n;u(t),(n=e.onChange)==null||n.call(e,t)};return()=>{let{prefixCls:t,steps:n,onClose:r,onFinish:i,rootClassName:a,renderPanel:o,animated:s,zIndex:u}=e,p=Yoe(e,[`prefixCls`,`steps`,`onClose`,`onFinish`,`rootClassName`,`renderPanel`,`animated`,`zIndex`]);if(x.value===void 0)return null;let y=()=>{f(!1),r?.(l.value)},T=typeof v.value==`boolean`?v.value:!!v.value,E=typeof v.value==`boolean`?void 0:v.value,D=()=>x.value||document.body,O=()=>W(Uoe,h({arrow:S.value,key:`content`,prefixCls:t,total:n.length,renderPanel:o,onPrev:()=>{w(l.value-1)},onNext:()=>{w(l.value+1)},onClose:y,current:l.value,onFinish:()=>{y(),i?.()}},m.value),null),k=G(()=>{let e=b.value||j5,t={};return Object.keys(e).forEach(n=>{typeof e[n]==`number`?t[n]=`${e[n]}px`:t[n]=e[n]}),t});return d.value?W(Ma,null,[W(qoe,{zIndex:u,prefixCls:t,pos:b.value,showMask:T,style:E?.style,fill:E?.color,open:d.value,animated:s,rootClassName:a},null),W(Ob,h(h({},p),{},{arrow:!!p.arrow,builtinPlacements:m.value.target?p.builtinPlacements??A5(C.value):void 0,ref:c,popupStyle:m.value.target?m.value.style:g(g({},m.value.style),{position:`fixed`,left:j5.left,top:j5.top,transform:`translate(-50%, -50%)`}),popupPlacement:_.value,popupVisible:d.value,popupClassName:K(a,m.value.className),prefixCls:t,popup:O,forceRender:!1,destroyPopupOnHide:!0,zIndex:u,mask:!1,getTriggerDOMNode:D}),{default:()=>[W(Eb,{visible:d.value,autoLock:!0},{default:()=>[W(`div`,{class:K(a,`${t}-target-placeholder`),style:g(g({},k.value),{position:`fixed`,pointerEvents:`none`})},null)]})]})]):null}}}),Zoe=()=>g(g({},M5()),{steps:{type:Array},prefixCls:{type:String},current:{type:Number},type:{type:String},"onUpdate:current":Function}),Qoe=U({name:`ATourPanel`,inheritAttrs:!1,props:g(g({},E5()),{cover:{type:Object},nextButtonProps:{type:Object},prevButtonProps:{type:Object},current:{type:Number},type:{type:String}}),setup(e,t){let{attrs:n,slots:r}=t,{current:i,total:a}=hn(e),o=G(()=>i.value===a.value-1),s=t=>{var n;let r=e.prevButtonProps;(n=e.onPrev)==null||n.call(e,t),typeof r?.onClick==`function`&&r?.onClick()},c=t=>{var n,r;let i=e.nextButtonProps;o.value?(n=e.onFinish)==null||n.call(e,t):(r=e.onNext)==null||r.call(e,t),typeof i?.onClick==`function`&&i?.onClick()};return()=>{let{prefixCls:t,title:l,onClose:u,cover:d,description:f,type:p,arrow:m}=e,g=e.prevButtonProps,_=e.nextButtonProps,v;l&&(v=W(`div`,{class:`${t}-header`},[W(`div`,{class:`${t}-title`},[l])]));let y;f&&(y=W(`div`,{class:`${t}-description`},[f]));let b;d&&(b=W(`div`,{class:`${t}-cover`},[d]));let x;x=r.indicatorsRender?r.indicatorsRender({current:i.value,total:a}):[...Array.from({length:a.value}).keys()].map((e,n)=>W(`span`,{key:e,class:K(n===i.value&&`${t}-indicator-active`,`${t}-indicator`)},null));let S=p===`primary`?`default`:`primary`,C={type:`default`,ghost:p===`primary`};return W(Ql,{componentName:`Tour`,defaultLocale:Zl.Tour},{default:e=>W(`div`,h(h({},n),{},{class:K(p===`primary`?`${t}-primary`:``,n.class,`${t}-content`)}),[m&&W(`div`,{class:`${t}-arrow`,key:`arrow`},null),W(`div`,{class:`${t}-inner`},[W(UC,{class:`${t}-close`,onClick:u},null),b,v,y,W(`div`,{class:`${t}-footer`},[a.value>1&&W(`div`,{class:`${t}-indicators`},[x]),W(`div`,{class:`${t}-buttons`},[i.value===0?null:W(Oj,h(h(h({},C),g),{},{onClick:s,size:`small`,class:K(`${t}-prev-btn`,g?.className)}),{default:()=>[ic(g?.children)?g.children():g?.children??e.Previous]}),W(Oj,h(h({type:S},_),{},{onClick:c,size:`small`,class:K(`${t}-next-btn`,_?.className)}),{default:()=>[ic(_?.children)?_?.children():o.value?e.Finish:e.Next]})])])])])})}}}),$oe=e=>{let{defaultType:t,steps:n,current:r,defaultCurrent:i}=e,a=B(i?.value);H(G(()=>r?.value),e=>{a.value=e??i?.value},{immediate:!0});let o=e=>{a.value=e},s=G(()=>typeof a.value==`number`?n&&n.value?.[a.value]?.type:t?.value);return{currentMergedType:G(()=>s.value??t?.value),updateInnerCurrent:o}},ese=e=>{let{componentCls:t,lineHeight:n,padding:r,paddingXS:i,borderRadius:a,borderRadiusXS:o,colorPrimary:s,colorText:c,colorFill:l,indicatorHeight:u,indicatorWidth:d,boxShadowTertiary:f,tourZIndexPopup:p,fontSize:m,colorBgContainer:h,fontWeightStrong:_,marginXS:v,colorTextLightSolid:y,tourBorderRadius:b,colorWhite:x,colorBgTextHover:S,tourCloseSize:C,motionDurationSlow:w,antCls:T}=e;return[{[t]:g(g({},Op(e)),{color:c,position:`absolute`,zIndex:p,display:`block`,visibility:`visible`,fontSize:m,lineHeight:n,width:520,"--antd-arrow-background-color":h,"&-pure":{maxWidth:`100%`,position:`relative`},[`&${t}-hidden`]:{display:`none`},[`${t}-content`]:{position:`relative`},[`${t}-inner`]:{textAlign:`start`,textDecoration:`none`,borderRadius:b,boxShadow:f,position:`relative`,backgroundColor:h,border:`none`,backgroundClip:`padding-box`,[`${t}-close`]:{position:`absolute`,top:r,insetInlineEnd:r,color:e.colorIcon,outline:`none`,width:C,height:C,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:`flex`,alignItems:`center`,justifyContent:`center`,"&:hover":{color:e.colorIconHover,backgroundColor:e.wireframe?`transparent`:e.colorFillContent}},[`${t}-cover`]:{textAlign:`center`,padding:`${r+C+i}px ${r}px 0`,img:{width:`100%`}},[`${t}-header`]:{padding:`${r}px ${r}px ${i}px`,[`${t}-title`]:{lineHeight:n,fontSize:m,fontWeight:_}},[`${t}-description`]:{padding:`0 ${r}px`,lineHeight:n,wordWrap:`break-word`},[`${t}-footer`]:{padding:`${i}px ${r}px ${r}px`,textAlign:`end`,borderRadius:`0 0 ${o}px ${o}px`,display:`flex`,[`${t}-indicators`]:{display:`inline-block`,[`${t}-indicator`]:{width:d,height:u,display:`inline-block`,borderRadius:`50%`,background:l,"&:not(:last-child)":{marginInlineEnd:u},"&-active":{background:s}}},[`${t}-buttons`]:{marginInlineStart:`auto`,[`${T}-btn`]:{marginInlineStart:v}}}},[`${t}-primary, &${t}-primary`]:{"--antd-arrow-background-color":s,[`${t}-inner`]:{color:y,textAlign:`start`,textDecoration:`none`,backgroundColor:s,borderRadius:a,boxShadow:f,[`${t}-close`]:{color:y},[`${t}-indicators`]:{[`${t}-indicator`]:{background:new zf(y).setAlpha(.15).toRgbString(),"&-active":{background:y}}},[`${t}-prev-btn`]:{color:y,borderColor:new zf(y).setAlpha(.15).toRgbString(),backgroundColor:s,"&:hover":{backgroundColor:new zf(y).setAlpha(.15).toRgbString(),borderColor:`transparent`}},[`${t}-next-btn`]:{color:s,borderColor:`transparent`,background:x,"&:hover":{background:new zf(S).onBackground(x).toRgbString()}}}}}),[`${t}-mask`]:{[`${t}-placeholder-animated`]:{transition:`all ${w}`}},[[`&-placement-left`,`&-placement-leftTop`,`&-placement-leftBottom`,`&-placement-right`,`&-placement-rightTop`,`&-placement-rightBottom`].join(`,`)]:{[`${t}-inner`]:{borderRadius:Math.min(b,8)}}},UA(e,{colorBg:`var(--antd-arrow-background-color)`,contentRadius:b,limitVerticalRadius:!0})]},tse=Fp(`Tour`,e=>{let{borderRadiusLG:t,fontSize:n,lineHeight:r}=e;return[ese(Rp(e,{tourZIndexPopup:e.zIndexPopupBase+70,indicatorWidth:6,indicatorHeight:6,tourBorderRadius:t,tourCloseSize:n*r}))]}),nse=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{steps:t,current:a,type:o,rootClassName:s}=e,c=nse(e,[`steps`,`current`,`type`,`rootClassName`]),g=K({[`${l.value}-primary`]:p.value===`primary`,[`${l.value}-rtl`]:u.value===`rtl`},f.value,s),_=(e,t)=>W(Qoe,h(h({},e),{},{type:o,current:t}),{indicatorsRender:i.indicatorsRender}),v=e=>{m(e),r(`update:current`,e),r(`change`,e)},y=G(()=>RA({arrowPointAtCenter:!0,autoAdjustOverflow:!0}));return d(W(Xoe,h(h(h({},n),c),{},{rootClassName:g,prefixCls:l.value,current:a,defaultCurrent:e.defaultCurrent,animated:!0,renderPanel:_,onChange:v,steps:t,builtinPlacements:y.value}),null))}}})),N5=Symbol(`appConfigContext`),ise=e=>er(N5,e),ase=()=>tr(N5,{}),P5=Symbol(`appContext`),ose=e=>er(P5,e),sse=Yt({message:{},notification:{},modal:{}}),cse=()=>tr(P5,sse),lse=e=>{let{componentCls:t,colorText:n,fontSize:r,lineHeight:i,fontFamily:a}=e;return{[t]:{color:n,fontSize:r,lineHeight:i,fontFamily:a}}},use=Fp(`App`,e=>[lse(e)]),dse=()=>({rootClassName:String,message:q(),notification:q()}),fse=()=>cse(),F5=U({name:`AApp`,props:Bc(dse(),{}),setup(e,t){let{slots:n}=t,{prefixCls:r}=Z(`app`,e),[i,a]=use(r),o=G(()=>K(a.value,r.value,e.rootClassName)),s=ase(),c=G(()=>({message:g(g({},s.message),e.message),notification:g(g({},s.notification),e.notification)}));ise(c.value);let[l,u]=$U(c.value.message),[d,f]=MW(c.value.notification),[p,m]=cQ();return ose(G(()=>({message:l,notification:d,modal:p})).value),()=>i(W(`div`,{class:o.value},[m(),u(),f(),n.default?.call(n)]))}});F5.useApp=fse,F5.install=function(e){e.component(F5.name,F5)};var I5=[`wrap`,`nowrap`,`wrap-reverse`],L5=[`flex-start`,`flex-end`,`start`,`end`,`center`,`space-between`,`space-around`,`space-evenly`,`stretch`,`normal`,`left`,`right`],R5=[`center`,`start`,`end`,`flex-start`,`flex-end`,`self-start`,`self-end`,`baseline`,`normal`,`stretch`],pse=(e,t)=>{let n={};return I5.forEach(r=>{n[`${e}-wrap-${r}`]=t.wrap===r}),n},mse=(e,t)=>{let n={};return R5.forEach(r=>{n[`${e}-align-${r}`]=t.align===r}),n[`${e}-align-stretch`]=!t.align&&!!t.vertical,n},hse=(e,t)=>{let n={};return L5.forEach(r=>{n[`${e}-justify-${r}`]=t.justify===r}),n};function gse(e,t){return K(g(g(g({},pse(e,t)),mse(e,t)),hse(e,t)))}var _se=e=>{let{componentCls:t}=e;return{[t]:{display:`flex`,"&-vertical":{flexDirection:`column`},"&-rtl":{direction:`rtl`},"&:empty":{display:`none`}}}},vse=e=>{let{componentCls:t}=e;return{[t]:{"&-gap-small":{gap:e.flexGapSM},"&-gap-middle":{gap:e.flexGap},"&-gap-large":{gap:e.flexGapLG}}}},yse=e=>{let{componentCls:t}=e,n={};return I5.forEach(e=>{n[`${t}-wrap-${e}`]={flexWrap:e}}),n},bse=e=>{let{componentCls:t}=e,n={};return R5.forEach(e=>{n[`${t}-align-${e}`]={alignItems:e}}),n},xse=e=>{let{componentCls:t}=e,n={};return L5.forEach(e=>{n[`${t}-justify-${e}`]={justifyContent:e}}),n},Sse=Fp(`Flex`,e=>{let t=Rp(e,{flexGapSM:e.paddingXS,flexGap:e.padding,flexGapLG:e.paddingLG});return[_se(t),vse(t),yse(t),bse(t),xse(t)]});function z5(e){return[`small`,`middle`,`large`].includes(e)}var Cse=()=>({prefixCls:X(),vertical:J(),wrap:X(),justify:X(),align:X(),flex:Sl([Number,String]),gap:Sl([Number,String]),component:yl()}),wse=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i[o.value,c.value,gse(o.value,e),{[`${o.value}-rtl`]:a.value===`rtl`,[`${o.value}-gap-${e.gap}`]:z5(e.gap),[`${o.value}-vertical`]:e.vertical??i?.value.vertical}]);return()=>{let{flex:t,gap:i,component:a=`div`}=e,o=wse(e,[`flex`,`gap`,`component`]),c={};return t&&(c.flex=t),i&&!z5(i)&&(c.gap=`${i}px`),s(W(a,h({class:[r.class,l.value],style:[r.style,c]},sm(o,[`justify`,`wrap`,`align`,`vertical`])),{default:()=>[n.default?.call(n)]}))}}})),B5=s({Affix:()=>fm,Alert:()=>vne,Anchor:()=>kh,AnchorLink:()=>Nm,App:()=>F5,AutoComplete:()=>Jk,AutoCompleteOptGroup:()=>Kk,AutoCompleteOption:()=>Gk,Avatar:()=>YA,AvatarGroup:()=>JA,BackTop:()=>rq,Badge:()=>tj,BadgeRibbon:()=>QA,Breadcrumb:()=>AM,BreadcrumbItem:()=>Vj,BreadcrumbSeparator:()=>kM,Button:()=>Oj,ButtonGroup:()=>Cj,Calendar:()=>QF,Card:()=>jL,CardGrid:()=>AL,CardMeta:()=>kL,Carousel:()=>YR,Cascader:()=>oU,CheckableTag:()=>pG,Checkbox:()=>hU,CheckboxGroup:()=>mU,Col:()=>_U,Collapse:()=>UL,CollapsePanel:()=>HL,Comment:()=>bU,Compact:()=>NO,ConfigProvider:()=>sG,DatePicker:()=>YG,Descriptions:()=>lK,DescriptionsItem:()=>nK,DirectoryTree:()=>L3,Divider:()=>fK,Drawer:()=>jK,Dropdown:()=>pK,DropdownButton:()=>Pj,Empty:()=>tm,Flex:()=>Tse,FloatButton:()=>iq,FloatButtonGroup:()=>QK,Form:()=>JH,FormItem:()=>zH,FormItemRest:()=>ow,Grid:()=>gU,Image:()=>uY,ImagePreviewGroup:()=>lY,Input:()=>$q,InputGroup:()=>xq,InputNumber:()=>UY,InputPassword:()=>Qq,InputSearch:()=>Cq,Layout:()=>pX,LayoutContent:()=>fX,LayoutFooter:()=>uX,LayoutHeader:()=>lX,LayoutSider:()=>dX,List:()=>uZ,ListItem:()=>aZ,ListItemMeta:()=>nZ,LocaleProvider:()=>EU,Mentions:()=>HZ,MentionsOption:()=>VZ,Menu:()=>EM,MenuDivider:()=>_M,MenuItem:()=>oM,MenuItemGroup:()=>gM,Modal:()=>uQ,MonthPicker:()=>WG,PageHeader:()=>BQ,Pagination:()=>tZ,Popconfirm:()=>WQ,Popover:()=>qA,Progress:()=>w$,QRCode:()=>Roe,QuarterPicker:()=>qG,Radio:()=>vF,RadioButton:()=>_F,RadioGroup:()=>gF,RangePicker:()=>JG,Rate:()=>L$,Result:()=>n1,Row:()=>r1,Segmented:()=>Eoe,Select:()=>Rk,SelectOptGroup:()=>Bk,SelectOption:()=>zk,Skeleton:()=>EL,SkeletonAvatar:()=>TL,SkeletonButton:()=>xL,SkeletonImage:()=>wL,SkeletonInput:()=>SL,SkeletonTitle:()=>ZI,Slider:()=>L1,Space:()=>LQ,Spin:()=>EX,Statistic:()=>SQ,StatisticCountdown:()=>xQ,Step:()=>o0,Steps:()=>s0,SubMenu:()=>dM,Switch:()=>h0,TabPane:()=>zI,Table:()=>j6,TableColumn:()=>E6,TableColumnGroup:()=>D6,TableSummary:()=>A6,TableSummaryCell:()=>k6,TableSummaryRow:()=>O6,Tabs:()=>VI,Tag:()=>mG,Textarea:()=>Bq,TimePicker:()=>Kie,TimeRangePicker:()=>c8,Timeline:()=>Yie,TimelineItem:()=>l8,Tooltip:()=>KA,Tour:()=>rse,Transfer:()=>yie,Tree:()=>z3,TreeNode:()=>R3,TreeSelect:()=>Wie,TreeSelectNode:()=>a8,Typography:()=>Aae,TypographyLink:()=>E8,TypographyParagraph:()=>D8,TypographyText:()=>O8,TypographyTitle:()=>k8,Upload:()=>poe,UploadDragger:()=>foe,Watermark:()=>yoe,WeekPicker:()=>UG,message:()=>_W,notification:()=>qW}),V5=(e,t)=>new zf(e).setAlpha(t).toRgbString(),H5=(e,t)=>new zf(e).lighten(t).toHexString(),Ese=e=>{let t=ep(e,{theme:`dark`});return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[6],6:t[5],7:t[4],8:t[6],9:t[5],10:t[4]}},Dse=(e,t)=>{let n=e||`#000`,r=t||`#fff`;return{colorBgBase:n,colorTextBase:r,colorText:V5(r,.85),colorTextSecondary:V5(r,.65),colorTextTertiary:V5(r,.45),colorTextQuaternary:V5(r,.25),colorFill:V5(r,.18),colorFillSecondary:V5(r,.12),colorFillTertiary:V5(r,.08),colorFillQuaternary:V5(r,.04),colorBgElevated:H5(n,12),colorBgContainer:H5(n,8),colorBgLayout:H5(n,0),colorBgSpotlight:H5(n,26),colorBorder:H5(n,26),colorBorderSecondary:H5(n,19)}},Ose=(e,t)=>{let n=Object.keys(cp).map(t=>{let n=ep(e[t],{theme:`dark`});return Array(10).fill(1).reduce((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e),{})}).reduce((e,t)=>(e=g(g({},e),t),e),{}),r=t??yp(e);return g(g(g({},r),n),up(e,{generateColorPalettes:Ese,generateNeutralColorPalettes:Dse}))};function kse(e){let{sizeUnit:t,sizeStep:n}=e,r=n-2;return{sizeXXL:t*(r+10),sizeXL:t*(r+6),sizeLG:t*(r+2),sizeMD:t*(r+2),sizeMS:t*(r+1),size:t*r,sizeSM:t*r,sizeXS:t*(r-1),sizeXXS:t*(r-1)}}var Ase=(e,t)=>{let n=t??yp(e),r=n.fontSizeSM,i=n.controlHeight-4;return g(g(g(g(g({},n),kse(t??e)),vp(r)),{controlHeight:i}),op(g(g({},n),{controlHeight:i})))};function jse(){let[e,t,n]=Jp();return{theme:e,token:t,hashId:n}}var Mse={defaultConfig:Up,defaultSeed:Up.token,useToken:jse,defaultAlgorithm:yp,darkAlgorithm:Ose,compactAlgorithm:Ase},Nse={version:uf,install:function(e){return Object.keys(B5).forEach(t=>{let n=B5[t];n.install&&e.use(n)}),e.use(lf.StyleProvider),e.config.globalProperties.$message=_W,e.config.globalProperties.$notification=qW,e.config.globalProperties.$info=uQ.info,e.config.globalProperties.$success=uQ.success,e.config.globalProperties.$error=uQ.error,e.config.globalProperties.$warning=uQ.warning,e.config.globalProperties.$confirm=uQ.confirm,e.config.globalProperties.$destroyAll=uQ.destroyAll,e}},Pse=typeof window<`u`,U5,W5=e=>U5=e,G5=Symbol();function K5(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var q5=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function Fse(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function J5(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){Ise(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Y5(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function X5(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var Z5=typeof navigator==`object`?navigator:{userAgent:``},Q5=/Macintosh/.test(Z5.userAgent)&&/AppleWebKit/.test(Z5.userAgent)&&!/Safari/.test(Z5.userAgent),Ise=Pse?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!Q5?Lse:`msSaveOrOpenBlob`in Z5?Rse:zse:()=>{};function Lse(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?X5(r):Y5(r.href)?J5(e,t,n):(r.target=`_blank`,X5(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){X5(r)},0))}function Rse(e,t=`download`,n){if(typeof e==`string`){if(Y5(e))J5(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){X5(t)})}}else navigator.msSaveOrOpenBlob(Fse(e,n),t)}function zse(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return J5(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(q5.HTMLElement))||`safari`in q5,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||Q5)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:Bse}=Object;function Vse(){let e=Ie(!0),t=e.run(()=>B({})),n=[],r=[],i=an({install(e){W5(i),i._a=e,e.provide(G5,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var $5=()=>{};function e7(e,t,n,r=$5){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&Le()&&Re(i),i}function t7(e,...t){e.forEach(e=>{e(...t)})}var Hse=e=>e(),n7=Symbol(),r7=Symbol();function i7(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];if(K5(i)&&K5(r)&&Object.hasOwn(e,n)&&!cn(r)&&!$t(r)){e[n]=i7(i,r);let t=rn(e)[n];cn(t)&&tn(t)&&dn(t)}else e[n]=r}return e}var Use=Symbol();function Wse(e){return!e||typeof e!=`object`||!Object.hasOwn(e,Use)}var{assign:a7}=Object;function Gse(e){return!!(cn(e)&&e.effect)}function Kse(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),a7(hn(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=an(G(()=>{W5(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=o7(e,l,t,n,r,!0),c}function o7(e,t,n={},r,i,a){let o,s=a7({actions:{}},n),c={deep:!0},l,u,d=new Set,f=new Set,p,m=r.state.value[e];!a&&!m&&(r.state.value[e]={});let h;function g(t){let n;l=u=!1,typeof t==`function`?(t(r.state.value[e]),n={type:`patch function`,storeId:e,events:p}):(i7(r.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:p});let i=h=Symbol();zn().then(()=>{h===i&&(l=!0)}),u=!0,t7(d,n,r.state.value[e])}let _=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{a7(e,t)})}:$5;function v(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let y=(t,n=``)=>{if(n7 in t)return t[r7]=n,t;let i=function(){W5(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}t7(f,{args:n,name:i[r7],store:b,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:b,n)}catch(e){throw t7(o,e),e}return l instanceof Promise?l.then(e=>(t7(a,e),e)).catch(e=>(t7(o,e),Promise.reject(e))):(t7(a,l),l)};return i[n7]=!0,i[r7]=n,i},b=Yt({_p:r,$id:e,$onAction:e7.bind(null,f),$patch:g,$reset:_,$subscribe(t,n={}){if(d.has(t))return $5;let i=e7(d,t,n.detached,()=>a()),a=o.run(()=>H(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:`direct`,events:p},r)},a7({},c,n)));return i},$dispose:v});r._s.set(e,b);let x=(r._a&&r._a.runWithContext||Hse)(()=>r._e.run(()=>(o=Ie()).run(()=>t({action:y}))));for(let t in x){let n=x[t];cn(n)&&!Gse(n)||$t(n)?a||(m&&Wse(n)&&(cn(n)?n.value=m[t]:((n instanceof Set||n instanceof Map)&&n.clear(),i7(n,m[t]))),r.state.value[e][t]=n):typeof n==`function`&&(x[t]=y(n,t),s.actions[t]=n)}return a7(b,x),a7(rn(b),x),Object.defineProperty(b,"$state",{get:()=>r.state.value[e],set:e=>{g(t=>{a7(t,e)})}}),r._p.forEach(e=>{let t=o.run(()=>e({store:b,app:r._a,pinia:r,options:s}));a7(b,t)}),m&&a&&n.hydrate&&n.hydrate(b.$state,m),l=!0,u=!0,b}function qse(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=nr();return n||=o?tr(G5,null):null,n&&W5(n),n=U5,n._s.has(e)||(i?o7(e,t,r,n):Kse(e,r,n)),n._s.get(e)}return a.$id=e,a}function Jse(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function s7(e,t=`|`){return e.map(e=>y7(e)).join(t)}function Yse(e,t){return typeof t==`bigint`?t.toString():t}var Xse=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function c7(e){return new Xse(e)}function Zse(e){return e==null}function Qse(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function $se(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):p7(e,a,r?r(n.value,a):n.value))}}function ece(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?f7(e,n,()=>t[n]):p7(e,n,r.value))}}function h7(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function tce(e){return JSON.stringify(e)}function nce(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var rce=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function g7(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ice=c7(()=>{if(A7.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function _7(e){if(g7(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return g7(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ace(e){return _7(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var oce=new Set([`string`,`number`,`symbol`]);function sce(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function v7(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function cce(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function y7(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function lce(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var uce={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},dce={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function fce(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return m7(i,e,b7(e,t)),v7(e,h7(n,{shape:i,checks:[]}))}function b7(e,t){let n=d7(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function pce(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(b7(e,t)),a={};return m7(a,e,Reflect.ownKeys(d7(e)).filter(e=>!i.has(e))),v7(e,h7(n,{shape:a,checks:[]}))}function mce(e,t){if(!_7(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=d7(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return v7(e,h7(e._zod.def,{shape:x7(e,t)}))}function x7(e,t){let n={};return m7(n,e,Reflect.ownKeys(d7(e))),ece(n,t),n}function hce(e,t){if(!_7(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return v7(e,h7(e._zod.def,{shape:x7(e,t)}))}function gce(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return m7(n,e,Reflect.ownKeys(d7(e))),m7(n,t,Reflect.ownKeys(d7(t))),v7(e,h7(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function _ce(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(b7(t,n)):void 0,o={};return m7(o,t,Reflect.ownKeys(d7(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),v7(t,h7(t._zod.def,{shape:o,checks:[]}))}function vce(e,t,n){let r=n?new Set(b7(t,n)):void 0,i={};return m7(i,t,Reflect.ownKeys(d7(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),v7(t,h7(t._zod.def,{shape:i}))}function yce(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function S7(e){return typeof e==`string`?e:e?.message}function Sce(e){let t=[];for(let n of e??[]){let e=n._zod.def;if(!/_(length|size)$|_equals$/.test(e.check))break;let r=e.maximum??e.length??e.size;r>=0&&t.push([r,n])}return t}function Cce(e,t,n){var r;for(let i=t;ie;return t[Lce]=!0,t}var D7,O7={value:void 0,enumerable:!1},k7=`captureStackTrace`in Error?Error:null;function zce(e){let t=k7;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return k7=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function Bce(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){O7.value=new a(r);try{Object.defineProperty(n,"_zod",O7)}finally{O7.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),kce(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?zce(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Vce=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Hce=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(D7=globalThis).__zod_globalConfig??(D7.__zod_globalConfig={});var A7=globalThis.__zod_globalConfig;function j7(e){return e&&Object.assign(A7,e),A7}var Uce=()=>{let e={string:{unit:`کاراکتر`,verb:`داشته باشد`},file:{unit:`بایت`,verb:`داشته باشد`},array:{unit:`آیتم`,verb:`داشته باشد`},set:{unit:`آیتم`,verb:`داشته باشد`},map:{unit:`آیتم`,verb:`داشته باشد`}};function t(t){return e[t]??null}let n={regex:`ورودی`,email:`آدرس ایمیل`,url:`URL`,emoji:`ایموجی`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`تاریخ و زمان ایزو`,date:`تاریخ ایزو`,time:`زمان ایزو`,duration:`مدت زمان ایزو`,ipv4:`IPv4 آدرس`,ipv6:`IPv6 آدرس`,mac:`MAC آدرس`,cidrv4:`IPv4 دامنه`,cidrv6:`IPv6 دامنه`,base64:`base64-encoded رشته`,base64url:`base64url-encoded رشته`,json_string:`JSON رشته`,e164:`E.164 عدد`,credit_card:`شماره کارت اعتباری`,currency_code:`کد ارز`,iban:`IBAN`,jwt:`JWT`,template_literal:`ورودی`},r={nan:`NaN`,number:`عدد`,array:`آرایه`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=C7(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`ورودی نامعتبر: می‌بایست instanceof ${e.expected} می‌بود، ${i} دریافت شد`:`ورودی نامعتبر: می‌بایست ${t} می‌بود، ${i} دریافت شد`}case`invalid_value`:return e.values.length===1?`ورودی نامعتبر: می‌بایست ${y7(e.values[0])} می‌بود`:`گزینه نامعتبر: می‌بایست یکی از ${s7(e.values,`|`)} می‌بود`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`خیلی بزرگ: ${e.origin??`مقدار`} باید ${n}${e.maximum.toString()} ${r.unit??`عنصر`} باشد`:`خیلی بزرگ: ${e.origin??`مقدار`} باید ${n}${e.maximum.toString()} باشد`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`خیلی کوچک: ${e.origin} باید ${n}${e.minimum.toString()} ${r.unit} باشد`:`خیلی کوچک: ${e.origin} باید ${n}${e.minimum.toString()} باشد`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`رشته نامعتبر: باید با "${t.prefix}" شروع شود`:t.format===`ends_with`?`رشته نامعتبر: باید با "${t.suffix}" تمام شود`:t.format===`includes`?`رشته نامعتبر: باید شامل "${t.includes}" باشد`:t.format===`regex`?`رشته نامعتبر: باید با الگوی ${t.pattern} مطابقت داشته باشد`:`${n[t.format]??e.format} نامعتبر`}case`not_multiple_of`:return`عدد نامعتبر: باید مضرب ${e.divisor} باشد`;case`unrecognized_keys`:return`کلید${e.keys.length>1?`های`:``} ناشناس: ${s7(e.keys,`, `)}`;case`invalid_key`:return`کلید ناشناس در ${e.origin}`;case`invalid_union`:return`ورودی نامعتبر`;case`invalid_element`:return`مقدار نامعتبر در ${e.origin}`;default:return`ورودی نامعتبر`}}};function Wce(){return{localeError:Uce()}}var Gce={items_per_page:`/ صفحه`,jump_to:`برو به`,jump_to_confirm:`تایید`,page:``,prev_page:`صفحه قبلی`,next_page:`صفحه بعدی`,prev_5:`۵ صفحه قبلی`,next_5:`۵ صفحه بعدی`,prev_3:`۳ صفحه قبلی`,next_3:`۳ صفحه بعدی`},Kce={locale:`fa_IR`,today:`امروز`,now:`اکنون`,backToToday:`بازگشت به روز`,ok:`باشه`,clear:`پاک کردن`,month:`ماه`,year:`سال`,timeSelect:`انتخاب زمان`,dateSelect:`انتخاب تاریخ`,monthSelect:`یک ماه را انتخاب کنید`,yearSelect:`یک سال را انتخاب کنید`,decadeSelect:`یک دهه را انتخاب کنید`,yearFormat:`YYYY`,dateFormat:`M/D/YYYY`,dayFormat:`D`,dateTimeFormat:`M/D/YYYY HH:mm:ss`,monthBeforeYear:!0,previousMonth:`ماه قبل (PageUp)`,nextMonth:`ماه بعد (PageDown)`,previousYear:`سال قبل (Control + left)`,nextYear:`سال بعد (Control + right)`,previousDecade:`دهه قبل`,nextDecade:`دهه بعد`,previousCentury:`قرن قبل`,nextCentury:`قرن بعد`},M7={placeholder:`انتخاب زمان`,rangePlaceholder:[`زمان شروع`,`زمان پایان`]},N7={lang:g({placeholder:`انتخاب تاریخ`,yearPlaceholder:`انتخاب سال`,quarterPlaceholder:`انتخاب فصل`,monthPlaceholder:`انتخاب ماه`,weekPlaceholder:`انتخاب هفته`,rangePlaceholder:[`تاریخ شروع`,`تاریخ پایان`],rangeYearPlaceholder:[`سال شروع`,`سال پایان`],rangeMonthPlaceholder:[`ماه شروع`,`ماه پایان`],rangeWeekPlaceholder:[`هفته شروع`,`هفته پایان`]},Kce),timePickerLocale:g({},M7)},qce=N7,P7="${label} از نوع ${type} معتبر نیست",Jce={locale:`fa`,Pagination:Gce,DatePicker:N7,TimePicker:M7,Calendar:qce,global:{placeholder:`لطفاً انتخاب کنید`},Table:{filterTitle:`منوی فیلتر`,filterConfirm:`تایید`,filterReset:`پاک کردن`,filterEmptyText:`بدون فیلتر`,emptyText:`بدون داده`,selectAll:`انتخاب صفحه‌ی کنونی`,selectInvert:`معکوس کردن انتخاب‌ها در صفحه ی کنونی`,selectNone:`انتخاب هیچکدام`,selectionAll:`انتخاب همه داده‌ها`,sortTitle:`مرتب سازی`,expand:`باز شدن ردیف`,collapse:`بستن ردیف`,triggerDesc:`ترتیب نزولی`,triggerAsc:`ترتیب صعودی`,cancelSort:`لغوِ ترتیبِ داده شده`},Modal:{okText:`تایید`,cancelText:`لغو`,justOkText:`تایید`},Popconfirm:{okText:`تایید`,cancelText:`لغو`},Transfer:{titles:[``,``],searchPlaceholder:`جستجو`,itemUnit:`عدد`,itemsUnit:`عدد`,remove:`حذف`,selectCurrent:`انتخاب صفحه فعلی`,removeCurrent:`پاک کردن انتخاب‌های صفحه فعلی`,selectAll:`انتخاب همه`,removeAll:`پاک کردن همه انتخاب‌ها`,selectInvert:`معکوس کردن انتخاب‌ها در صفحه ی کنونی`},Upload:{uploading:`در حال آپلود...`,removeFile:`حذف فایل`,uploadError:`خطا در آپلود`,previewFile:`مشاهده‌ی فایل`,downloadFile:`دریافت فایل`},Empty:{description:`داده‌ای موجود نیست`},Icon:{icon:`آیکن`},Text:{edit:`ویرایش`,copy:`کپی`,copied:`کپی شد`,expand:`توسعه`},PageHeader:{back:`برگشت`},Form:{optional:`(اختیاری)`,defaultValidateMessages:{default:"خطا در ${label}",required:"فیلد ${label} اجباریست",enum:"${label} باید یکی از [${enum}] باشد",whitespace:"${label} نمیتواند خالی باشد",date:{format:"ساختار تاریخ در ${label} نامعتبر است",parse:"${label} قابل تبدیل به تاریخ نیست",invalid:"${label} تاریخی نا معتبر است"},types:{string:P7,method:P7,array:P7,object:P7,number:P7,date:P7,boolean:P7,integer:P7,float:P7,regexp:P7,email:P7,url:P7,hex:P7},string:{len:"${label} باید ${len} کاراکتر باشد",min:"${label} باید حداقل ${min} کاراکتر باشد",max:"${label} باید حداکثر ${max} کاراکتر باشد",range:"${label} باید بین ${min}-${max} کاراکتر باشد"},number:{len:"${label} باید برابر ${len}",min:"${label} حداقل میتواند ${min} باشد",max:"${label} حداکثر میتواند ${max} باشد",range:"${label} باید بین ${min}-${max} باشد"},array:{len:"تعداد ${label} باید ${len} باشد.",min:"تعداد ${label} حداقل باید ${min} باشد",max:"تعداد ${label} حداکثر باید ${max} باشد",range:"مقدار ${label} باید بین ${min}-${max} باشد"},pattern:{mismatch:"الگوی ${label} با ${pattern} برابری نمی‌کند"}}},Image:{preview:`نمایش`}},Yce=U({__name:`App`,setup(e){let t={algorithm:Mse.defaultAlgorithm,token:{colorPrimary:`#ff5a00`,colorInfo:`#ff5a00`,colorLink:`#e04f00`,fontFamily:`"IRANSans", Tahoma, sans-serif`,borderRadius:8}};return(e,n)=>{let r=ui(`RouterView`),i=ui(`a-config-provider`);return Ra(),Ua(i,{theme:t,direction:`rtl`,locale:fn(Jce)},{default:Zn(()=>[W(r)]),_:1},8,[`locale`])}}}),F7=e=>e.startsWith(`/`);function I7(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Xce(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&I7(e.default)}var L7=Object.assign;function R7(e,t){let n={};for(let r in t){let i=t[r];n[r]=B7(i)?i.map(e):e(i)}return n}var z7=()=>{},B7=Array.isArray;function V7(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var H7=Symbol(``);function U7(e,t){return L7(Error(),{type:e,[H7]:!0},t)}function W7(e,t){return e instanceof Error&&H7 in e&&(t==null||!!(e.type&t))}var Zce=Symbol(``),G7=Symbol(``),K7=Symbol(``),q7=Symbol(``),J7=Symbol(``),Qce=Symbol(``);function $ce(){return tr(K7)}function ele(e){return tr(q7)}var Y7=typeof document<`u`,X7=/#/g,tle=/&/g,nle=/\//g,rle=/=/g,ile=/\?/g,Z7=/\+/g,ale=/%5B/g,ole=/%5D/g,Q7=/%5E/g,sle=/%60/g,$7=/%7B/g,cle=/%7C/g,e9=/%7D/g,lle=/%20/g;function t9(e){return e==null?``:encodeURI(``+e).replace(cle,`|`).replace(ale,`[`).replace(ole,`]`)}function ule(e){return t9(e).replace($7,`{`).replace(e9,`}`).replace(Q7,`^`)}function n9(e){return t9(e).replace(Z7,`%2B`).replace(lle,`+`).replace(X7,`%23`).replace(tle,`%26`).replace(sle,"`").replace($7,`{`).replace(e9,`}`).replace(Q7,`^`)}function dle(e){return n9(e).replace(rle,`%3D`)}function fle(e){return t9(e).replace(X7,`%23`).replace(ile,`%3F`)}function ple(e){return fle(e).replace(nle,`%2F`)}function r9(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var mle=/\/$/,hle=e=>e.replace(mle,``);function i9(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=yle(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:r9(o)}}function gle(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function a9(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function _le(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&o9(t.matched[r],n.matched[i])&&s9(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function o9(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function s9(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!vle(e[n],t[n]))return!1;return!0}function vle(e,t){return B7(e)?c9(e,t):B7(t)?c9(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function c9(e,t){return B7(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function yle(e,t){if(F7(e))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var l9={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function ble(e){if(!e){if(Y7){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),hle(e)}var xle=/^[^#]+#/;function Sle(e,t){return e.replace(xle,`#`)+t}function Cle(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var u9=()=>history.scrollRestoration===`manual`?{left:window.scrollX,top:window.scrollY}:null;function wle(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=Cle(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function d9(e,t){return(history.state?history.state.position-t:-1)+e}var f9=new Map;function Tle(e){f9.set(e,u9())}function Ele(e){let t=f9.get(e);return f9.delete(e),t}function p9(e,t=!1){for(let n of f9.keys()){let r=parseInt(n,10);(r===e||!t&&r>e)&&f9.delete(n)}}function Dle(e){return typeof e==`string`||e&&typeof e==`object`}function m9(e){return typeof e==`string`||typeof e==`symbol`}function Ole(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&n9(e)):[r&&n9(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function kle(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=B7(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function g9(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function _9(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(U7(4,{from:n,to:t})):e instanceof Error?c(e):Dle(e)?c(U7(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function v9(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(t===`beforeRouteEnter`||o.instances[e]){if(I7(s)){let c=(s.__vccOpts||s)[t];c&&a.push(_9(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Xce(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&_9(c,n,r,o,e,i)()}))}}}return a}function Ale(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oo9(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>o9(e,s))||i.push(s))}return[n,r,i]}var jle=()=>location.protocol+`//`+location.host;function y9(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),a9(n,``)}return a9(n,e)+r+i}function Mle(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=y9(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){let{history:e}=window;e.state&&e.replaceState(L7({},e.state,{scroll:u9()}),``)}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),{pauseListeners:c,listen:l,destroy:d}}function b9(e,t,n,r=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:null}}function Nle(e){let{history:t,location:n}=window,r={value:y9(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:jle()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){let o=L7({},t.state,b9(i.value.back,e,i.value.forward,!0),n,{position:i.value.position});a(e,o,!0),p9(o.position,!0),r.value=e}function s(e,n){let o=L7({},i.value,t.state,{forward:e,scroll:u9()});a(o.current,o,!0),a(e,L7({},b9(r.value,e,null),{position:o.position+1},n),!1),p9(o.position),r.value=e}return{location:r,state:i,push:s,replace:o}}function Ple(e){e=ble(e);let t=Nle(e),n=Mle(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=L7({location:``,base:e,go:r,createHref:Sle.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var Fle={type:0,value:``},Ile=/[a-zA-Z0-9_]/;function Lle(e){if(!e)return[[]];if(e===`/`)return[[Fle]];if(!F7(e))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===80?1:-1:0}function S9(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Hle={strict:!1,end:!0,sensitive:!1};function Ule(e,t,n){let r=L7(Ble(Lle(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Wle(e,t){let n=[],r=new Map;t=V7(Hle,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=T9(e);s.aliasOf=r&&r.record;let l=V7(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(T9(L7({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&!F7(u)){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Ule(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!E9(d)&&o(e.name)),D9(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:z7}function o(e){if(m9(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=qle(e,n);n.splice(t,0,e),e.record.name&&!E9(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw U7(1,{location:e});s=i.record.name,a=L7(w9(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&w9(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw U7(1,{location:e,currentLocation:t});s=i.record.name,a=L7({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Kle(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function w9(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function T9(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Gle(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Gle(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function E9(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Kle(e){return e.reduce((e,t)=>L7(e,t.meta),{})}function qle(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;S9(e,t[i])<0?r=i:n=i+1}let i=Jle(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Jle(e){let t=e;for(;t=t.parent;)if(D9(t)&&S9(e,t)===0)return t}function D9({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function O9(e){let t=tr(K7),n=tr(q7),r=G(()=>{let n=fn(e.to);return t.resolve(n)}),i=G(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(o9.bind(null,i));if(o>-1)return o;let s=k9(e[t-2]);return t>1&&k9(i)===s&&a[a.length-1].path!==s?a.findIndex(o9.bind(null,e[t-2])):o}),a=G(()=>i.value>-1&&Qle(n.params,r.value.params)),o=G(()=>i.value>-1&&i.value===n.matched.length-1&&s9(n.params,r.value.params));function s(n={}){if(Zle(n)){let n=t[fn(e.replace)?`replace`:`push`](fn(e.to)).catch(z7);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:G(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function Yle(e){return e.length===1?e[0]:e}var Xle=U({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:O9,setup(e,{slots:t}){let n=Yt(O9(e)),{options:r}=tr(K7),i=G(()=>({[A9(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[A9(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&Yle(t.default(n));return e.custom?r:Oo(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function Zle(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Qle(e,t){for(let n in t){let r=t[n],i=e[n];if(B7(r)){if(!B7(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}else if(r!==i)return!1}return!0}function k9(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var A9=(e,t,n)=>e??t??n,$le=U({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=tr(J7),i=G(()=>e.route||r.value),a=tr(G7,0),o=G(()=>{let e=fn(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),s=G(()=>i.value.matched[o.value]);er(G7,G(()=>o.value+1)),er(Zce,s),er(J7,i);let c=new Set;er(Qce,c);let l=B(),u=l9,{app:d}=fo().appContext;return H(()=>[l.value,s.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!o9(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=s.value,f=o&&o.components[a];if(!f)return j9(n.default,{Component:f,route:r});let p=o.props[a],m=p?p===!0?r.params:typeof p==`function`?p(r):p:null,h=e=>{e.component.isUnmounted&&(o.instances[a]=null)},g=e=>zn(()=>{if(u===r||i.value!==r||e.el.getRootNode()!==d._container.getRootNode())return;let t=u;u=r;for(let e of c)e(r,t)}),_=Oo(f,L7({},m,t,{onVnodeUnmounted:h,onVnodeMounted:g,onVnodeUpdated:g,ref:l}));return j9(n.default,{Component:_,route:r})||_}}});function j9(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var eue=$le;function tue(e){let t=e.matcher||Wle(e.routes,e),n=e.parseQuery||Ole,r=e.stringifyQuery||h9,i=e.history,a=g9(),o=g9(),s=g9(),c=V(l9),l=V(0),u=l9;Y7&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let d=R7.bind(null,e=>``+e),f=R7.bind(null,ple),p=R7.bind(null,r9);function m(e,n){let r,i;m9(e)?(r=t.getRecordMatcher(e),i=n):i=e;let a=t.addRoute(i,r);return l.value++,()=>{a(),l.value++}}function h(e){let n=t.getRecordMatcher(e);n&&(t.removeRoute(n),l.value++)}function g(){t.clearRoutes(),l.value++}function _(){return t.getRoutes().map(e=>e.record)}function v(e){return!!t.getRecordMatcher(e)}function y(e,a){if(l.value,typeof e==`string`){a||=e.startsWith(`/`)?l9:c.value;let r=i9(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return L7(r,o,{params:p(o.params),redirectedFrom:void 0,href:s})}a=L7({},a||(e.path!=null&&e.path.startsWith(`/`)&&!(`name`in e&&e.name)?l9:c.value));let o;if(e.path!=null)o=L7({},e,{path:i9(n,e.path,a.path).path});else{let t=L7({},e.params);for(let e in t)t[e]??delete t[e];o=L7({},e,{params:f(t)}),a.params=f(a.params)}let s=t.resolve(o,a),u=e.hash||``;s.params=d(p(s.params));let m=gle(r,L7({},e,{hash:ule(u),path:s.path})),h=i.createHref(m);return L7({fullPath:m,hash:u,query:r===h9?kle(e.query):e.query||{}},s,{redirectedFrom:void 0,href:h})}function b(e){return typeof e==`string`?i9(n,e,c.value.path):L7({},e)}function x(e,t){if(u!==e)return U7(8,{from:t,to:e})}function S(e){return T(e)}function C(e){return S(L7(b(e),{replace:!0}))}function w(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=b(i):{path:i},i.params={}),L7({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=u=y(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,l=w(n,i);if(l)return T(L7(b(l),{state:typeof l==`object`?L7({},a,l.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&_le(r,i,n)&&(f=U7(16,{to:d,from:i}),ee(i,i,!0,!1)),(f?Promise.resolve(f):O(d,i)).catch(e=>W7(e)?W7(e,2)?e:R(e):I(e,d,i)).then(e=>{if(e){if(W7(e,2))return T(L7({replace:s},b(e.to),{state:typeof e.to==`object`?L7({},a,e.to.state):a,force:o}),t||d)}else e=A(d,i,!0,s,a);return k(d,i,e),e})}function E(e,t){let n=x(e,t);return n?Promise.reject(n):Promise.resolve()}function D(e){let t=z.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function O(e,t){let n,[r,i,s]=Ale(e,t);n=v9(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(_9(r,e,t))});let c=E.bind(null,e,t);return n.push(c),ie(n).then(()=>{n=[];for(let r of a.list())n.push(_9(r,e,t));return n.push(c),ie(n)}).then(()=>{n=v9(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(_9(r,e,t))});return n.push(c),ie(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter){if(B7(r.beforeEnter))for(let i of r.beforeEnter)n.push(_9(i,e,t));else n.push(_9(r.beforeEnter,e,t))}return n.push(c),ie(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=v9(s,`beforeRouteEnter`,e,t,D),n.push(c),ie(n))).then(()=>{n=[];for(let r of o.list())n.push(_9(r,e,t));return n.push(c),ie(n)}).catch(e=>W7(e,8)?e:Promise.reject(e))}function k(e,t,n){s.list().forEach(r=>D(()=>r(e,t,n)))}function A(e,t,n,r,a){let o=x(e,t);if(o)return o;let s=t===l9,l=Y7?history.state:{};n&&(r||s?i.replace(e.fullPath,L7({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,ee(e,t,n,s),R()}let j;function M(){j||=i.listen((e,t,n)=>{if(!re.listening)return;let r=y(e),a=w(r,re.currentRoute.value);if(a){T(L7(a,{replace:!0,force:!0}),r).catch(z7);return}u=r;let o=c.value;Y7&&n.delta&&Tle(d9(o.fullPath,n.delta)),O(r,o).catch(e=>W7(e,12)?e:W7(e,2)?(T(L7(b(e.to),{force:!0}),r).then(e=>{W7(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(z7),Promise.reject()):(n.delta&&i.go(-n.delta,!1),I(e,r,o))).then(e=>{e||=A(r,o,!1),e&&(n.delta&&!W7(e,8)?i.go(-n.delta,!1):n.type===`pop`&&W7(e,20)&&i.go(-1,!1)),k(r,o,e)}).catch(z7)})}let N=g9(),P=g9(),F;function I(e,t,n){R(e);let r=P.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function L(){return F&&c.value!==l9?Promise.resolve():new Promise((e,t)=>{N.add([e,t])})}function R(e){return F||(F=!e,M(),N.list().forEach(([t,n])=>e?n(e):t()),N.reset()),e}function ee(t,n,r,i){let{scrollBehavior:a}=e;if(!Y7||!a)return Promise.resolve();let o=!r&&Ele(d9(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return zn().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&wle(e)).catch(e=>t===c.value&&I(e,t,n))}let te=e=>i.go(e),ne,z=new Set,re={currentRoute:c,listening:!0,addRoute:m,removeRoute:h,clearRoutes:g,hasRoute:v,getRoutes:_,resolve:y,options:e,push:S,replace:C,go:te,back:()=>te(-1),forward:()=>te(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:P.add,isReady:L,install(e){e.component(`RouterLink`,Xle),e.component(`RouterView`,eue),e.config.globalProperties.$router=re,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>fn(c)}),Y7&&!ne&&c.value===l9&&(ne=!0,S(i.location).catch(e=>{}));let t={};for(let e in l9)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(K7,re),e.provide(q7,Xt(t)),e.provide(J7,c);let n=e.unmount;z.add(e),e.unmount=function(){z.delete(e),z.size<1&&(u=l9,j&&j(),j=null,c.value=l9,ne=!1,F=!1),n()}}};function ie(e){return e.reduce((e,t)=>e.then(()=>D(t)),Promise.resolve())}return re}var nue=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,rue=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,iue=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function aue(e,t){if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t)oue(e);else return t}function oue(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function sue(e,t={}){if(typeof e!=`string`)return e;if(e[0]===`"`&&e[e.length-1]===`"`&&e.indexOf(`\\`)===-1)return e.slice(1,-1);let n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case`true`:return!0;case`false`:return!1;case`undefined`:return;case`null`:return null;case`nan`:return NaN;case`infinity`:return 1/0;case`-infinity`:return-1/0}if(!iue.test(e)){if(t.strict)throw SyntaxError(`[destr] Invalid JSON`);return e}try{if(nue.test(e)||rue.test(e)){if(t.strict)throw Error(`[destr] Possible prototype pollution`);return JSON.parse(e,aue)}return JSON.parse(e)}catch(n){if(t.strict)throw n;return e}}String.fromCharCode;var cue=/#/g,lue=/&/g,uue=/\//g,due=/=/g,M9=/\+/g,fue=/%5e/gi,pue=/%60/gi,mue=/%7c/gi,hue=/%20/gi;function gue(e){return encodeURI(``+e).replace(mue,`|`)}function N9(e){return gue(typeof e==`string`?e:JSON.stringify(e)).replace(M9,`%2B`).replace(hue,`+`).replace(cue,`%23`).replace(lue,`%26`).replace(pue,"`").replace(fue,`^`).replace(uue,`%2F`)}function P9(e){return N9(e).replace(due,`%3D`)}function F9(e=``){try{return decodeURIComponent(``+e)}catch{return``+e}}function _ue(e){return F9(e.replace(M9,` `))}function vue(e){return F9(e.replace(M9,` `))}function yue(e=``){let t=Object.create(null);e[0]===`?`&&(e=e.slice(1));for(let n of e.split(`&`)){let e=n.match(/([^=]+)=?(.*)/)||[];if(e.length<2)continue;let r=_ue(e[1]);if(r===`__proto__`||r===`constructor`)continue;let i=vue(e[2]||``);t[r]===void 0?t[r]=i:Array.isArray(t[r])?t[r].push(i):t[r]=[t[r],i]}return t}function bue(e,t){return(typeof t==`number`||typeof t==`boolean`)&&(t=String(t)),t?Array.isArray(t)?t.map(t=>`${P9(e)}=${N9(t)}`).join(`&`):`${P9(e)}=${N9(t)}`:P9(e)}function xue(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>bue(t,e[t])).filter(Boolean).join(`&`)}var Sue=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Cue=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,wue=/^([/\\]\s*){2,}[^/\\]/,Tue=/\/$|\/\?|\/#/,Eue=/^\.?\//;function I9(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?Sue.test(e):Cue.test(e)||(t.acceptRelative?wue.test(e):!1)}function L9(e=``,t){return t?Tue.test(e):e.endsWith(`/`)}function Due(e=``,t){if(!t)return(L9(e)?e.slice(0,-1):e)||`/`;if(!L9(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function Oue(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(L9(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function kue(e,t){if(jue(t)||I9(e))return e;let n=Due(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return Nue(n,e)}function Aue(e,t){let n=z9(e);return n.search=xue({...yue(n.search),...t}),Pue(n)}function jue(e){return!e||e===`/`}function Mue(e){return e&&e!==`/`}function Nue(e,...t){let n=e||``;for(let e of t.filter(e=>Mue(e)))if(n){let t=e.replace(Eue,``);n=Oue(n)+t}else n=e;return n}var R9=Symbol.for(`ufo:protocolRelative`);function z9(e=``,t){let n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){let[,e,t=``]=n;return{protocol:e.toLowerCase(),pathname:t,href:e+t,auth:``,host:``,search:``,hash:``}}if(!I9(e,{acceptRelative:!0}))return t?z9(t+e):B9(e);let[,r=``,i,a=``]=e.replace(/\\/g,`/`).match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[],[,o=``,s=``]=a.match(/([^#/?]*)(.*)?/)||[];r===`file:`&&(s=s.replace(/\/(?=[A-Za-z]:)/,``));let{pathname:c,search:l,hash:u}=B9(s);return{protocol:r.toLowerCase(),auth:i?i.slice(0,Math.max(0,i.length-1)):``,host:o,pathname:c,search:l,hash:u,[R9]:!r}}function B9(e=``){let[t=``,n=``,r=``]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Pue(e){let t=e.pathname||``,n=e.search?(e.search.startsWith(`?`)?``:`?`)+e.search:``,r=e.hash||``,i=e.auth?e.auth+`@`:``,a=e.host||``;return(e.protocol||e[R9]?(e.protocol||``)+`//`:``)+i+a+t+n+r}var V9=class extends Error{constructor(e,t){super(e,t),this.name=`FetchError`,t?.cause&&!this.cause&&(this.cause=t.cause)}};function Fue(e){let t=e.error?.message||e.error?.toString()||``,n=e.request?.method||e.options?.method||`GET`,r=e.request?.url||String(e.request)||`/`,i=new V9(`${`[${n}] ${JSON.stringify(r)}`}: ${e.response?`${e.response.status} ${e.response.statusText}`:``}${t?` ${t}`:``}`,e.error?{cause:e.error}:void 0);for(let t of[`request`,`options`,`response`])Object.defineProperty(i,t,{get(){return e[t]}});for(let[t,n]of[[`data`,`_data`],[`status`,`status`],[`statusCode`,`status`],[`statusText`,`statusText`],[`statusMessage`,`statusText`]])Object.defineProperty(i,t,{get(){return e.response&&e.response[n]}});return i}var Iue=new Set(Object.freeze([`PATCH`,`POST`,`PUT`,`DELETE`]));function H9(e=`GET`){return Iue.has(e.toUpperCase())}function Lue(e){if(e===void 0)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`||t===null?!0:t===`object`?Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name===`Object`||typeof e.toJSON==`function`:!1}var Rue=new Set([`image/svg`,`application/xml`,`application/xhtml`,`application/html`]),zue=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Bue(e=``){if(!e)return`json`;let t=e.split(`;`).shift()||``;return zue.test(t)?`json`:t===`text/event-stream`?`stream`:Rue.has(t)||t.startsWith(`text/`)?`text`:`blob`}function Vue(e,t,n,r){let i=Hue(t?.headers??e?.headers,n?.headers,r),a;return(n?.query||n?.params||t?.params||t?.query)&&(a={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:a,params:a,headers:i}}function Hue(e,t,n){if(!t)return new n(e);let r=new n(t);if(e)for(let[t,i]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(t,i);return r}async function U9(e,t){if(t){if(Array.isArray(t))for(let n of t)await n(e);else await t(e)}}var Uue=new Set([408,409,425,429,500,502,503,504]),Wue=new Set([101,204,205,304]);function W9(e={}){let{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function i(e){let t=e.error&&e.error.name===`AbortError`&&!e.options.timeout||!1;if(e.options.retry!==!1&&!t){let t;t=typeof e.options.retry==`number`?e.options.retry:+!H9(e.options.method);let n=e.response&&e.response.status||500;if(t>0&&(Array.isArray(e.options.retryStatusCodes)?e.options.retryStatusCodes.includes(n):Uue.has(n))){let n=typeof e.options.retryDelay==`function`?e.options.retryDelay(e):e.options.retryDelay||0;return n>0&&await new Promise(e=>setTimeout(e,n)),a(e.request,{...e.options,retry:t-1})}}let n=Fue(e);throw Error.captureStackTrace&&Error.captureStackTrace(n,a),n}let a=async function(a,o={}){let s={request:a,options:Vue(a,o,e.defaults,n),response:void 0,error:void 0};if(s.options.method&&(s.options.method=s.options.method.toUpperCase()),s.options.onRequest&&(await U9(s,s.options.onRequest),s.options.headers instanceof n||(s.options.headers=new n(s.options.headers||{}))),typeof s.request==`string`&&(s.options.baseURL&&(s.request=kue(s.request,s.options.baseURL)),s.options.query&&(s.request=Aue(s.request,s.options.query),delete s.options.query),`query`in s.options&&delete s.options.query,`params`in s.options&&delete s.options.params),s.options.body&&H9(s.options.method)){if(Lue(s.options.body)){let e=s.options.headers.get(`content-type`);typeof s.options.body!=`string`&&(s.options.body=e===`application/x-www-form-urlencoded`?new URLSearchParams(s.options.body).toString():JSON.stringify(s.options.body)),e||s.options.headers.set(`content-type`,`application/json`),s.options.headers.has(`accept`)||s.options.headers.set(`accept`,`application/json`)}else(`pipeTo`in s.options.body&&typeof s.options.body.pipeTo==`function`||typeof s.options.body.pipe==`function`)&&(`duplex`in s.options||(s.options.duplex=`half`))}let c;if(!s.options.signal&&s.options.timeout){let e=new r;c=setTimeout(()=>{let t=Error(`[TimeoutError]: The operation was aborted due to timeout`);t.name=`TimeoutError`,t.code=23,e.abort(t)},s.options.timeout),s.options.signal=e.signal}try{s.response=await t(s.request,s.options)}catch(e){return s.error=e,s.options.onRequestError&&await U9(s,s.options.onRequestError),await i(s)}finally{c&&clearTimeout(c)}if((s.response.body||s.response._bodyInit)&&!Wue.has(s.response.status)&&s.options.method!==`HEAD`){let e=(s.options.parseResponse?`json`:s.options.responseType)||Bue(s.response.headers.get(`content-type`)||``);switch(e){case`json`:{let e=await s.response.text(),t=s.options.parseResponse||sue;s.response._data=t(e);break}case`stream`:s.response._data=s.response.body||s.response._bodyInit;break;default:s.response._data=await s.response[e]()}}return s.options.onResponse&&await U9(s,s.options.onResponse),!s.options.ignoreResponseError&&s.response.status>=400&&s.response.status<600?(s.options.onResponseError&&await U9(s,s.options.onResponseError),await i(s)):s.response},o=async function(e,t){return(await a(e,t))._data};return o.raw=a,o.native=(...e)=>t(...e),o.create=(t={},n={})=>W9({...e,...n,defaults:{...e.defaults,...n.defaults,...t}}),o}var G9=(function(){if(typeof globalThis<`u`)return globalThis;if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global;throw Error(`unable to locate global object`)})(),Gue=G9.fetch?(...e)=>G9.fetch(...e):()=>Promise.reject(Error(`[ofetch] global.fetch is not supported!`)),Kue=G9.Headers,que=G9.AbortController,K9=W9({fetch:Gue,Headers:Kue,AbortController:que}).create({baseURL:`/api`,credentials:`include`}),q9=null,Jue=e=>{q9=e};async function J9(e,t={},n=!1){let r=q9?.token();try{return await K9(e,{...t,headers:{...t.headers,...r&&{Authorization:`Bearer ${r}`}}})}catch(r){if(r instanceof V9&&r.status===401&&!n&&q9){if(await q9.refresh())return J9(e,t,!0);q9.onExpired()}throw r}}var Y9=e=>e instanceof V9?e.data??{}:{};function Yue(e){if(e instanceof V9){if(!e.status)return`ارتباط با سرور برقرار نشد`;let t=Y9(e).message;return Array.isArray(t)?t.join(`، `):t||(e.status===413?`حجم فایل بیش از حد مجاز است`:e.status===429?`تعداد درخواست‌ها زیاد است؛ کمی بعد تلاش کنید`:`خطای سرور (${e.status})`)}return`خطای ناشناخته`}var X9=null,Z9=qse(`auth`,{state:()=>({token:``,user:null,ready:!1}),getters:{isAdmin:e=>e.user?.role===`ADMIN`},actions:{setSession(e){this.token=e.accessToken,this.user=e.user},clear(){this.token=``,this.user=null},async login(e){this.setSession(await K9(`/admin/auth/login`,{method:`POST`,body:e}))},refresh(){return X9??=K9(`/admin/auth/refresh`,{method:`POST`}).then(e=>(this.setSession(e),!0)).catch(()=>(this.clear(),!1)).finally(()=>{X9=null}),X9},async init(){this.ready||=(Jue({token:()=>this.token,refresh:()=>this.refresh(),onExpired:()=>{this.clear(),$9.push({name:`login`,query:{redirect:$9.currentRoute.value.fullPath}})}}),await this.refresh(),!0)},async logout(){await K9(`/admin/auth/logout`,{method:`POST`}).catch(()=>void 0),this.clear(),await $9.push({name:`login`})}}}),Xue=`modulepreload`,Zue=function(e){return`/`+e},Que={},$ue=function(e){return e.pathname.endsWith(`.css`)},ede=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},Q9=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=Zue(t,n);let r=s(t),i=$ue(r);return ede(Que,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:Xue,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},$9=tue({history:Ple(),routes:[{path:`/login`,name:`login`,component:()=>Q9(()=>import(`./LoginPage-9ZnLIZG9.js`),__vite__mapDeps([0,1,2,3,4,5])),meta:{public:!0,title:`ورود`}},{path:`/`,component:()=>Q9(()=>import(`./AdminLayout-BWEJTyVc.js`),__vite__mapDeps([6,1,2,3,7,8])),children:[{path:``,name:`dashboard`,component:()=>Q9(()=>import(`./DashboardPage-D3Dg5cDP.js`),__vite__mapDeps([9,1,2,7,10,11])),meta:{title:`داشبورد`}},{path:`products`,name:`products`,component:()=>Q9(()=>import(`./ProductsPage-BEwm5CwI.js`),__vite__mapDeps([12,1,2,13])),meta:{title:`محصولات`}},{path:`products/new`,name:`product-new`,component:()=>Q9(()=>import(`./ProductEditPage-B-Sknc6p.js`),__vite__mapDeps([14,1,2,7,10,11,4,15,16])),meta:{title:`محصول جدید`}},{path:`products/:id`,name:`product-edit`,component:()=>Q9(()=>import(`./ProductEditPage-B-Sknc6p.js`),__vite__mapDeps([14,1,2,7,10,11,4,15,16])),meta:{title:`ویرایش محصول`}},{path:`categories`,name:`categories`,component:()=>Q9(()=>import(`./CategoriesPage-DDuDA84R.js`),__vite__mapDeps([17,1,2,7,10,11])),meta:{title:`دسته‌بندی‌ها`}},{path:`categories/new`,name:`category-new`,component:()=>Q9(()=>import(`./CategoryEditPage-DezgJrn9.js`),__vite__mapDeps([18,1,2,10,11,4,19,15,16])),meta:{title:`دسته جدید`}},{path:`categories/:id`,name:`category-edit`,component:()=>Q9(()=>import(`./CategoryEditPage-DezgJrn9.js`),__vite__mapDeps([18,1,2,10,11,4,19,15,16])),meta:{title:`ویرایش دسته`}},{path:`sections`,name:`sections`,component:()=>Q9(()=>import(`./SectionsPage-D2mxIFwm.js`),__vite__mapDeps([20,1,2,7,10,11])),meta:{title:`بخش‌های سایت`}},{path:`sections/:key`,name:`section-edit`,component:()=>Q9(()=>import(`./SectionEditPage-BdDEZJqd.js`),__vite__mapDeps([21,1,2,7,10,11,4,19,15])),meta:{title:`ویرایش بخش`}},{path:`messages`,name:`messages`,component:()=>Q9(()=>import(`./MessagesPage-C1A1xjPE.js`),__vite__mapDeps([22,1,2,7,10,11])),meta:{title:`پیام‌های تماس`}},{path:`media`,name:`media`,component:()=>Q9(()=>import(`./MediaPage-4vzZa5Eb.js`),__vite__mapDeps([23,1,2,7,10,11])),meta:{title:`کتابخانه رسانه`}},{path:`users`,name:`users`,component:()=>Q9(()=>import(`./UsersPage-D2QmqN50.js`),__vite__mapDeps([24,1,2,7,10,11,4])),meta:{title:`کاربران`,roles:[`ADMIN`]}},{path:`profile`,name:`profile`,component:()=>Q9(()=>import(`./ProfilePage-CKqPwLoF.js`),__vite__mapDeps([25,1,2,10,11,4])),meta:{title:`حساب کاربری`}}]},{path:`/:pathMatch(.*)*`,redirect:`/`}]});$9.beforeEach(async e=>{let t=Z9();return await t.init(),e.meta.public?t.user&&e.name===`login`?{name:`dashboard`}:!0:t.user?e.meta.roles&&!e.meta.roles.includes(t.user.role)?{name:`dashboard`}:!0:{name:`login`,query:{redirect:e.fullPath}}}),$9.afterEach(e=>{document.title=e.meta.title?`${e.meta.title} | پنل ایمن پیشگامان`:`پنل ایمن پیشگامان`}),j7(Wce()),rc(Yce).use(Vse()).use($9).use(Nse).mount(`#app`);export{u7 as $,wce as A,fi as At,Yse as B,je as Bt,Rce as C,$r as Ct,sce as D,gi as Dt,tce as E,er as Et,Ice as F,Yt as Ft,pce as G,h7 as H,g7 as I,B as It,C7 as J,lce as K,_7 as L,fn as Lt,Jse as M,H as Mt,Dce as N,Zn as Nt,bce as O,aee as Ot,Ace as P,cn as Pt,oce as Q,Oce as R,Se as Rt,Ece as S,ni as St,jce as T,Ra as Tt,cce as U,gce as V,Zse as W,fce as X,_ce as Y,xce as Z,Cce as _,U as _t,ele as a,y7 as at,Qse as b,lee as bt,Hce as c,Ma as ct,A7 as d,Ua as dt,vce as et,dce as f,eo as ft,l7 as g,W as gt,ice as h,Qa as ht,Yue as i,nce as it,$se as j,Vi as jt,mce as k,ui as kt,Bce as l,G as lt,yce as m,$a as mt,J9 as n,ace as nt,$ce as o,_W as ot,uce as p,uee as pt,w7 as q,Y9 as r,Sce as rt,Vce as s,$s as st,Z9 as t,hce as tt,j7 as u,Ja as ut,c7 as v,Oo as vt,Fce as w,ri as wt,v7 as x,zn as xt,rce as y,tr as yt,s7 as z,_e as zt}; \ No newline at end of file + `]:{opacity:1},[r]:{color:e.colorTextDescription,transition:`all ${e.motionDurationSlow}`},[`&:hover ${r}`]:{color:e.colorText}},[`${t}-icon ${r}`]:{color:e.colorTextDescription,fontSize:i},[`${o}-progress`]:{position:`absolute`,bottom:-e.uploadProgressOffset,width:`100%`,paddingInlineStart:i+e.paddingXS,fontSize:i,lineHeight:0,pointerEvents:`none`,"> div":{margin:0}}},[`${o}:hover ${c}`]:{opacity:1,color:e.colorText},[`${o}-error`]:{color:e.colorError,[`${o}-name, ${t}-icon ${r}`]:{color:e.colorError},[s]:{[`${r}, ${r}:hover`]:{color:e.colorError},[c]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,"&::before":{display:`table`,width:0,height:0,content:`""`}}})}}},X8=new ef(`uploadAnimateInlineIn`,{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),Z8=new ef(`uploadAnimateInlineOut`,{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),ioe=e=>{let{componentCls:t}=e,n=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${n}-appear, ${n}-enter, ${n}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:`forwards`},[`${n}-appear, ${n}-enter`]:{animationName:X8},[`${n}-leave`]:{animationName:Z8}}},X8,Z8]},aoe=e=>{let{componentCls:t,iconCls:n,uploadThumbnailSize:r,uploadProgressOffset:i}=e,a=`${t}-list`,o=`${a}-item`;return{[`${t}-wrapper`]:{[`${a}${a}-picture, ${a}${a}-picture-card`]:{[o]:{position:`relative`,height:r+e.lineWidth*2+e.paddingXS*2,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,"&:hover":{background:`transparent`},[`${o}-thumbnail`]:g(g({},Dp),{width:r,height:r,lineHeight:`${r+e.paddingSM}px`,textAlign:`center`,flex:`none`,[n]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:`block`,width:`100%`,height:`100%`,overflow:`hidden`}}),[`${o}-progress`]:{bottom:i,width:`calc(100% - ${e.paddingSM*2}px)`,marginTop:0,paddingInlineStart:r+e.paddingXS}},[`${o}-error`]:{borderColor:e.colorError,[`${o}-thumbnail ${n}`]:{"svg path[fill='#e6f7ff']":{fill:e.colorErrorBg},"svg path[fill='#1890ff']":{fill:e.colorError}}},[`${o}-uploading`]:{borderStyle:`dashed`,[`${o}-name`]:{marginBottom:i}}}}}},ooe=e=>{let{componentCls:t,iconCls:n,fontSizeLG:r,colorTextLightSolid:i}=e,a=`${t}-list`,o=`${a}-item`,s=e.uploadPicCardSize;return{[`${t}-wrapper${t}-picture-card-wrapper`]:g(g({},Ap()),{display:`inline-block`,width:`100%`,[`${t}${t}-select`]:{width:s,height:s,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:`center`,verticalAlign:`top`,backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:`pointer`,transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:`flex`,alignItems:`center`,justifyContent:`center`,height:`100%`,textAlign:`center`},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${a}${a}-picture-card`]:{[`${a}-item-container`]:{display:`inline-block`,width:s,height:s,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:`top`},"&::after":{display:`none`},[o]:{height:`100%`,margin:0,"&::before":{position:`absolute`,zIndex:1,width:`calc(100% - ${e.paddingXS*2}px)`,height:`calc(100% - ${e.paddingXS*2}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:`" "`}},[`${o}:hover`]:{[`&::before, ${o}-actions`]:{opacity:1}},[`${o}-actions`]:{position:`absolute`,insetInlineStart:0,zIndex:10,width:`100%`,whiteSpace:`nowrap`,textAlign:`center`,opacity:0,transition:`all ${e.motionDurationSlow}`,[`${n}-eye, ${n}-download, ${n}-delete`]:{zIndex:10,width:r,margin:`0 ${e.marginXXS}px`,fontSize:r,cursor:`pointer`,transition:`all ${e.motionDurationSlow}`}},[`${o}-actions, ${o}-actions:hover`]:{[`${n}-eye, ${n}-download, ${n}-delete`]:{color:new zf(i).setAlpha(.65).toRgbString(),"&:hover":{color:i}}},[`${o}-thumbnail, ${o}-thumbnail img`]:{position:`static`,display:`block`,width:`100%`,height:`100%`,objectFit:`contain`},[`${o}-name`]:{display:`none`,textAlign:`center`},[`${o}-file + ${o}-name`]:{position:`absolute`,bottom:e.margin,display:`block`,width:`calc(100% - ${e.paddingXS*2}px)`},[`${o}-uploading`]:{[`&${o}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${n}-eye, ${n}-download, ${n}-delete`]:{display:`none`}},[`${o}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${e.paddingXS*2}px)`,paddingInlineStart:0}}})}},soe=e=>{let{componentCls:t}=e;return{[`${t}-rtl`]:{direction:`rtl`}}},coe=e=>{let{componentCls:t,colorTextDisabled:n}=e;return{[`${t}-wrapper`]:g(g({},Op(e)),{[t]:{outline:0,"input[type='file']":{cursor:`pointer`}},[`${t}-select`]:{display:`inline-block`},[`${t}-disabled`]:{color:n,cursor:`not-allowed`}})}},loe=Fp(`Upload`,e=>{let{fontSizeHeading3:t,fontSize:n,lineHeight:r,lineWidth:i,controlHeightLG:a}=e,o=Math.round(n*r),s=Rp(e,{uploadThumbnailSize:t*2,uploadProgressOffset:o/2+i,uploadPicCardSize:a*2.55});return[coe(s),noe(s),aoe(s),ooe(s),roe(s),ioe(s),soe(s),vk(s)]}),uoe=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},doe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);ic.value??d.value),[p,m]=gS(e.defaultFileList||[],{value:vn(e,`fileList`),postState:e=>{let t=Date.now();return(e??[]).map((e,n)=>(!e.uid&&!Object.isFrozen(e)&&(e.uid=`__AUTO__${t}_${n}__`),e))}}),_=B(`drop`),v=B(null);$r(()=>{wh(e.fileList!==void 0||r.value===void 0,`Upload`,"`value` is not a valid prop, do you mean `fileList`?"),wh(e.transformFile===void 0,`Upload`,"`transformFile` is deprecated. Please use `beforeUpload` directly."),wh(e.remove===void 0,`Upload`,"`remove` props is deprecated. Please use `remove` event.")});let y=(t,n,r)=>{var i,o;let s=[...n];e.maxCount===1?s=s.slice(-1):e.maxCount&&(s=s.slice(0,e.maxCount)),m(s);let c={file:t,fileList:s};r&&(c.event=r),(i=e[`onUpdate:fileList`])==null||i.call(e,c.fileList),(o=e.onChange)==null||o.call(e,c),a.onFieldChange()},b=(t,n)=>uoe(this,void 0,void 0,function*(){let{beforeUpload:r,transformFile:i}=e,a=t;if(r){let e=yield r(t,n);if(e===!1)return!1;if(delete t[Q8],e===Q8)return Object.defineProperty(t,Q8,{value:!0,configurable:!0}),!1;typeof e==`object`&&e&&(a=e)}return i&&(a=yield i(a)),a}),x=e=>{let t=e.filter(e=>!e.file[Q8]);if(!t.length)return;let n=t.map(e=>U8(e.file)),r=[...p.value];n.forEach(e=>{r=W8(e,r)}),n.forEach((e,n)=>{let i=e;if(t[n].parsedFile)e.status=`uploading`;else{let{originFileObj:t}=e,n;try{n=new File([t],t.name,{type:t.type})}catch{n=new Blob([t],{type:t.type}),n.name=t.name,n.lastModifiedDate=new Date,n.lastModified=new Date().getTime()}n.uid=e.uid,i=n}y(i,r)})},S=(e,t,n)=>{try{typeof e==`string`&&(e=JSON.parse(e))}catch{}if(!G8(t,p.value))return;let r=U8(t);r.status=`done`,r.percent=100,r.response=e,r.xhr=n;let i=W8(r,p.value);y(r,i)},C=(e,t)=>{if(!G8(t,p.value))return;let n=U8(t);n.status=`uploading`,n.percent=e.percent;let r=W8(n,p.value);y(n,r,e)},w=(e,t,n)=>{if(!G8(n,p.value))return;let r=U8(n);r.error=e,r.response=t,r.status=`error`;let i=W8(r,p.value);y(r,i)},T=t=>{let n,r=e.onRemove||e.remove;Promise.resolve(typeof r==`function`?r(t):r).then(e=>{var r,i;if(e===!1)return;let a=qae(t,p.value);a&&(n=g(g({},t),{status:`removed`}),(r=p.value)==null||r.forEach(e=>{let t=n.uid===void 0?`name`:`uid`;e[t]===n[t]&&!Object.isFrozen(e)&&(e.status=`removed`)}),(i=v.value)==null||i.abort(n),y(n,a))})},E=t=>{var n;_.value=t.type,t.type===`drop`&&((n=e.onDrop)==null||n.call(e,t))};i({onBatchStart:x,onSuccess:S,onProgress:C,onError:w,fileList:p,upload:v});let[D]=$l(`Upload`,Zl.Upload,G(()=>e.locale)),O=(t,r)=>{let{removeIcon:i,previewIcon:a,downloadIcon:s,previewFile:c,onPreview:l,onDownload:u,isImageUrl:d,progress:m,itemRender:h,iconRender:_,showUploadList:v}=e,{showDownloadIcon:y,showPreviewIcon:b,showRemoveIcon:x}=typeof v==`boolean`?{}:v;return v?W(toe,{prefixCls:o.value,listType:e.listType,items:p.value,previewFile:c,onPreview:l,onDownload:u,onRemove:T,showRemoveIcon:!f.value&&x,showPreviewIcon:b,showDownloadIcon:y,removeIcon:i,previewIcon:a,downloadIcon:s,iconRender:_,locale:D.value,isImageUrl:d,progress:m,itemRender:h,appendActionVisible:r,appendAction:t},g({},n)):t?.()};return()=>{let{listType:t,type:i}=e,{class:c,style:d}=r,m=doe(r,[`class`,`style`]),y=g(g(g({onBatchStart:x,onError:w,onProgress:C,onSuccess:S},m),e),{id:e.id??a.id.value,prefixCls:o.value,beforeUpload:b,onChange:void 0,disabled:f.value});delete y.remove,(!n.default||f.value)&&delete y.id;let T={[`${o.value}-rtl`]:s.value===`rtl`};if(i===`drag`){let e=K(o.value,{[`${o.value}-drag`]:!0,[`${o.value}-drag-uploading`]:p.value.some(e=>e.status===`uploading`),[`${o.value}-drag-hover`]:_.value===`dragover`,[`${o.value}-disabled`]:f.value,[`${o.value}-rtl`]:s.value===`rtl`},r.class,u.value);return l(W(`span`,h(h({},r),{},{class:K(`${o.value}-wrapper`,T,c,u.value)}),[W(`div`,{class:e,onDrop:E,onDragover:E,onDragleave:E,style:r.style},[W(F8,h(h({},y),{},{ref:v,class:`${o.value}-btn`}),h({default:()=>[W(`div`,{class:`${o.value}-drag-container`},[n.default?.call(n)])]},n))]),O()]))}let D=K(o.value,{[`${o.value}-select`]:!0,[`${o.value}-select-${t}`]:!0,[`${o.value}-disabled`]:f.value,[`${o.value}-rtl`]:s.value===`rtl`}),k=Gc(n.default?.call(n)),A=e=>W(`div`,{class:D,style:e},[W(F8,h(h({},y),{},{ref:v}),n)]);return l(t===`picture-card`?W(`span`,h(h({},r),{},{class:K(`${o.value}-wrapper`,`${o.value}-picture-card-wrapper`,T,r.class,u.value)}),[O(A,!!(k&&k.length))]):W(`span`,h(h({},r),{},{class:K(`${o.value}-wrapper`,T,r.class,u.value)}),[A(k&&k.length?void 0:{display:`none`}),O()]))}}}),e5=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{height:t}=e,i=e5(e,[`height`]),{style:a}=r,o=e5(r,[`style`]);return W($8,g(g(g({},i),o),{type:`drag`,style:g(g({},a),{height:typeof t==`number`?`${t}px`:t})}),n)}}}),foe=t5,poe=g($8,{Dragger:t5,LIST_IGNORE:Q8,install(e){return e.component($8.name,$8),e.component(t5.name,t5),e}});function moe(e){return e.replace(/([A-Z])/g,`-$1`).toLowerCase()}function hoe(e){return Object.keys(e).map(t=>`${moe(t)}: ${e[t]};`).join(` `)}function n5(){return window.devicePixelRatio||1}function r5(e,t,n,r){e.translate(t,n),e.rotate(Math.PI/180*Number(r)),e.translate(-t,-n)}var goe=(e,t)=>{let n=!1;return e.removedNodes.length&&(n=Array.from(e.removedNodes).some(e=>e===t)),e.type===`attributes`&&e.target===t&&(n=!0),n},_oe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i2&&arguments[2]!==void 0?arguments[2]:{},{window:r=GP}=n,i=_oe(n,[`window`]),a,o=UP(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=H(()=>VP(e),e=>{s(),o.value&&r&&e&&(a=new MutationObserver(t),a.observe(e,i))},{immediate:!0}),l=()=>{s(),c()};return zP(l),{isSupported:o,stop:l}}var i5=2,a5=3,yoe=_l(U({name:`AWatermark`,inheritAttrs:!1,props:Bc({zIndex:Number,rotate:Number,width:Number,height:Number,image:String,content:Sl([String,Array]),font:q(),rootClassName:String,gap:xl(),offset:xl()},{zIndex:9,rotate:-22,font:{},gap:[100,100]}),setup(e,t){let{slots:n,attrs:r}=t,[,i]=Jp(),a=V(),o=V(),s=V(!1),c=G(()=>e.gap?.[0]??100),l=G(()=>e.gap?.[1]??100),u=G(()=>c.value/2),d=G(()=>l.value/2),f=G(()=>e.offset?.[0]??u.value),p=G(()=>e.offset?.[1]??d.value),m=G(()=>e.font?.fontSize??i.value.fontSizeLG),_=G(()=>e.font?.fontWeight??`normal`),v=G(()=>e.font?.fontStyle??`normal`),y=G(()=>e.font?.fontFamily??`sans-serif`),b=G(()=>e.font?.color??i.value.colorFill),x=G(()=>{let t={zIndex:e.zIndex??9,position:`absolute`,left:0,top:0,width:`100%`,height:`100%`,pointerEvents:`none`,backgroundRepeat:`repeat`},n=f.value-u.value,r=p.value-d.value;return n>0&&(t.left=`${n}px`,t.width=`calc(100% - ${n}px)`,n=0),r>0&&(t.top=`${r}px`,t.height=`calc(100% - ${r}px)`,r=0),t.backgroundPosition=`${n}px ${r}px`,t}),S=()=>{o.value&&=(o.value.remove(),void 0)},C=(e,t)=>{var n;a.value&&o.value&&(s.value=!0,o.value.setAttribute(`style`,hoe(g(g({},x.value),{backgroundImage:`url('${e}')`,backgroundSize:`${(c.value+t)*i5}px`}))),(n=a.value)==null||n.append(o.value),setTimeout(()=>{s.value=!1}))},w=t=>{let n=120,r=64,i=e.content,a=e.image,o=e.width,s=e.height;if(!a&&t.measureText){t.font=`${Number(m.value)}px ${y.value}`;let e=Array.isArray(i)?i:[i],a=e.map(e=>t.measureText(e).width);n=Math.ceil(Math.max(...a)),r=Number(m.value)*e.length+(e.length-1)*a5}return[o??n,s??r]},T=(t,n,r,i,a)=>{let o=n5(),s=e.content,c=Number(m.value)*o;t.font=`${v.value} normal ${_.value} ${c}px/${a}px ${y.value}`,t.fillStyle=b.value,t.textAlign=`center`,t.textBaseline=`top`,t.translate(i/2,0),(Array.isArray(s)?s:[s])?.forEach((e,i)=>{t.fillText(e??``,n,r+i*(c+a5*o))})},E=()=>{let t=document.createElement(`canvas`),n=t.getContext(`2d`),r=e.image,i=e.rotate??-22;if(n){o.value||=document.createElement(`div`);let e=n5(),[a,s]=w(n),u=(c.value+a)*e,d=(l.value+s)*e;t.setAttribute(`width`,`${u*i5}px`),t.setAttribute(`height`,`${d*i5}px`);let f=c.value*e/2,p=l.value*e/2,m=a*e,h=s*e,g=(m+c.value*e)/2,_=(h+l.value*e)/2,v=f+u,y=p+d,b=g+u,x=_+d;if(n.save(),r5(n,g,_,i),r){let e=new Image;e.onload=()=>{n.drawImage(e,f,p,m,h),n.restore(),r5(n,b,x,i),n.drawImage(e,v,y,m,h),C(t.toDataURL(),a)},e.crossOrigin=`anonymous`,e.referrerPolicy=`no-referrer`,e.src=r}else T(n,f,p,m,h),n.restore(),r5(n,b,x,i),T(n,v,y,m,h),C(t.toDataURL(),a)}};return $r(()=>{E()}),H(()=>[e,i.value.colorFill,i.value.fontSizeLG],()=>{E()},{deep:!0,flush:`post`}),ni(()=>{S()}),voe(a,e=>{s.value||e.forEach(e=>{goe(e,o.value)&&(S(),E())})},{attributes:!0,subtree:!0,childList:!0,attributeFilter:[`style`,`class`]}),()=>W(`div`,h(h({},r),{},{ref:a,class:[r.class,e.rootClassName],style:[{position:`relative`},r.style]}),[n.default?.call(n)])}}));function o5(e,t){return{[`${e}, ${e}:hover, ${e}:focus`]:{color:t.colorTextDisabled,cursor:`not-allowed`}}}function s5(e){return{backgroundColor:e.bgColorSelected,boxShadow:e.boxShadow}}var boe=g({overflow:`hidden`},Dp),xoe=e=>{let{componentCls:t}=e;return{[t]:g(g(g(g(g({},Op(e)),{display:`inline-block`,padding:e.segmentedContainerPadding,color:e.labelColor,backgroundColor:e.bgColor,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,[`${t}-group`]:{position:`relative`,display:`flex`,alignItems:`stretch`,justifyItems:`flex-start`,width:`100%`},[`&${t}-rtl`]:{direction:`rtl`},[`&${t}-block`]:{display:`flex`},[`&${t}-block ${t}-item`]:{flex:1,minWidth:0},[`${t}-item`]:{position:`relative`,textAlign:`center`,cursor:`pointer`,transition:`color ${e.motionDurationMid} ${e.motionEaseInOut}`,borderRadius:e.borderRadiusSM,"&-selected":g(g({},s5(e)),{color:e.labelColorHover}),"&::after":{content:`""`,position:`absolute`,width:`100%`,height:`100%`,top:0,insetInlineStart:0,borderRadius:`inherit`,transition:`background-color ${e.motionDurationMid}`,pointerEvents:`none`},[`&:hover:not(${t}-item-selected):not(${t}-item-disabled)`]:{color:e.labelColorHover,"&::after":{backgroundColor:e.bgColorHover}},"&-label":g({minHeight:e.controlHeight-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeight-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`},boe),"&-icon + *":{marginInlineStart:e.marginSM/2},"&-input":{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:0,opacity:0,pointerEvents:`none`}},[`${t}-thumb`]:g(g({},s5(e)),{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:`100%`,padding:`${e.paddingXXS}px 0`,borderRadius:e.borderRadiusSM,[`& ~ ${t}-item:not(${t}-item-selected):not(${t}-item-disabled)::after`]:{backgroundColor:`transparent`}}),[`&${t}-lg`]:{borderRadius:e.borderRadiusLG,[`${t}-item-label`]:{minHeight:e.controlHeightLG-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightLG-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`,fontSize:e.fontSizeLG},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadius}},[`&${t}-sm`]:{borderRadius:e.borderRadiusSM,[`${t}-item-label`]:{minHeight:e.controlHeightSM-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightSM-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontalSM}px`},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadiusXS}}}),o5(`&-disabled ${t}-item`,e)),o5(`${t}-item-disabled`,e)),{[`${t}-thumb-motion-appear-active`]:{transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOut}, width ${e.motionDurationSlow} ${e.motionEaseInOut}`,willChange:`transform, width`}})}},Soe=Fp(`Segmented`,e=>{let{lineWidthBold:t,lineWidth:n,colorTextLabel:r,colorText:i,colorFillSecondary:a,colorBgLayout:o,colorBgElevated:s}=e;return[xoe(Rp(e,{segmentedPaddingHorizontal:e.controlPaddingHorizontal-n,segmentedPaddingHorizontalSM:e.controlPaddingHorizontalSM-n,segmentedContainerPadding:t,labelColor:r,labelColorHover:i,bgColor:o,bgColorHover:a,bgColorSelected:s}))]}),c5=e=>e?{left:e.offsetLeft,right:e.parentElement.clientWidth-e.clientWidth-e.offsetLeft,width:e.clientWidth}:null,l5=e=>e===void 0?void 0:`${e}px`,Coe=U({props:{value:yl(),getValueIndex:yl(),prefixCls:yl(),motionName:yl(),onMotionStart:yl(),onMotionEnd:yl(),direction:yl(),containerRef:yl()},emits:[`motionStart`,`motionEnd`],setup(e,t){let{emit:n}=t,r=B(),i=t=>{let n=e.getValueIndex(t),r=e.containerRef.value?.querySelectorAll(`.${e.prefixCls}-item`)[n];return r?.offsetParent&&r},a=B(null),o=B(null);H(()=>e.value,(e,t)=>{let r=i(t),s=i(e),c=c5(r),l=c5(s);a.value=c,o.value=l,n(r&&s?`motionStart`:`motionEnd`)},{flush:`post`});let s=G(()=>e.direction===`rtl`?l5(-a.value?.right):l5(a.value?.left)),c=G(()=>e.direction===`rtl`?l5(-o.value?.right):l5(o.value?.left)),l,u=e=>{clearTimeout(l),zn(()=>{e&&(e.style.transform=`translateX(var(--thumb-start-left))`,e.style.width=`var(--thumb-start-width)`)})},d=t=>{l=setTimeout(()=>{t&&(pM(t,`${e.motionName}-appear-active`),t.style.transform=`translateX(var(--thumb-active-left))`,t.style.width=`var(--thumb-active-width)`)})},f=t=>{a.value=null,o.value=null,t&&(t.style.transform=null,t.style.width=null,mM(t,`${e.motionName}-appear-active`)),n(`motionEnd`)},p=G(()=>({"--thumb-start-left":s.value,"--thumb-start-width":l5(a.value?.width),"--thumb-active-left":c.value,"--thumb-active-width":l5(o.value?.width)}));return ni(()=>{clearTimeout(l)}),()=>{let t={ref:r,style:p.value,class:[`${e.prefixCls}-thumb`]};return W(Uo,{appear:!0,onBeforeEnter:u,onEnter:d,onAfterEnter:f},{default:()=>[!a.value||!o.value?null:W(`div`,t,null)]})}}});function woe(e){return e.map(e=>typeof e==`object`&&e?e:{label:e?.toString(),title:e?.toString(),value:e})}var Toe=()=>({prefixCls:String,options:xl(),block:J(),disabled:J(),size:X(),value:g(g({},Sl([String,Number])),{required:!0}),motionName:String,onChange:Y(),"onUpdate:value":Y()}),u5=(e,t)=>{let{slots:n,emit:r}=t,{value:i,disabled:a,payload:o,title:s,prefixCls:c,label:l=n.label,checked:u,className:d}=e,f=e=>{a||r(`change`,e,i)};return W(`label`,{class:K({[`${c}-item-disabled`]:a},d)},[W(`input`,{class:`${c}-item-input`,type:`radio`,disabled:a,checked:u,onChange:f},null),W(`div`,{class:`${c}-item-label`,title:typeof s==`string`?s:``},[typeof l==`function`?l({value:i,disabled:a,payload:o,title:s}):l??i])])};u5.inheritAttrs=!1;var Eoe=_l(U({name:`ASegmented`,inheritAttrs:!1,props:Bc(Toe(),{options:[],motionName:`thumb-motion`}),slots:Object,setup(e,t){let{emit:n,slots:r,attrs:i}=t,{prefixCls:a,direction:o,size:s}=Z(`segmented`,e),[c,l]=Soe(a),u=V(),d=V(!1),f=G(()=>woe(e.options)),p=(t,r)=>{e.disabled||(n(`update:value`,r),n(`change`,r))};return()=>{let t=a.value;return c(W(`div`,h(h({},i),{},{class:K(t,{[l.value]:!0,[`${t}-block`]:e.block,[`${t}-disabled`]:e.disabled,[`${t}-lg`]:s.value==`large`,[`${t}-sm`]:s.value==`small`,[`${t}-rtl`]:o.value===`rtl`},i.class),ref:u}),[W(`div`,{class:`${t}-group`},[W(Coe,{containerRef:u,prefixCls:t,value:e.value,motionName:`${t}-${e.motionName}`,direction:o.value,getValueIndex:e=>f.value.findIndex(t=>t.value===e),onMotionStart:()=>{d.value=!0},onMotionEnd:()=>{d.value=!1}},null),f.value.map(n=>W(u5,h(h({key:n.value,prefixCls:t,checked:n.value===e.value,onChange:p},n),{},{className:K(n.className,`${t}-item`,{[`${t}-item-selected`]:n.value===e.value&&!d.value}),disabled:!!e.disabled||!!n.disabled}),r))])]))}}})),Doe=e=>{let{componentCls:t}=e;return{[t]:g(g({},Op(e)),{display:`flex`,justifyContent:`center`,alignItems:`center`,padding:e.paddingSM,backgroundColor:e.colorWhite,borderRadius:e.borderRadiusLG,border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,position:`relative`,width:`100%`,height:`100%`,overflow:`hidden`,[`& > ${t}-mask`]:{position:`absolute`,insetBlockStart:0,insetInlineStart:0,zIndex:10,display:`flex`,flexDirection:`column`,justifyContent:`center`,alignItems:`center`,width:`100%`,height:`100%`,color:e.colorText,lineHeight:e.lineHeight,background:e.QRCodeMaskBackgroundColor,textAlign:`center`,[`& > ${t}-expired , & > ${t}-scanned`]:{color:e.QRCodeTextColor}},"&-icon":{marginBlockEnd:e.marginXS,fontSize:e.controlHeight}}),[`${t}-borderless`]:{borderColor:`transparent`}}},Ooe=Fp(`QRCode`,e=>Doe(Rp(e,{QRCodeTextColor:`rgba(0, 0, 0, 0.88)`,QRCodeMaskBackgroundColor:`rgba(255, 255, 255, 0.96)`}))),koe={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z`}}]},name:`reload`,theme:`outlined`};function d5(e){for(var t=1;t({size:{type:Number,default:160},value:{type:String,required:!0},type:X(`canvas`),color:String,bgColor:String,includeMargin:Boolean,imageSettings:q()}),joe=()=>g(g({},p5()),{errorLevel:X(`M`),icon:String,iconSize:{type:Number,default:40},status:X(`active`),bordered:{type:Boolean,default:!0}}),m5;(function(e){class t{static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:40,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1,l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;if(!(t.MIN_VERSION<=o&&o<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=o;;u++){let n=t.getNumDataCodewords(u,r)*8,i=a.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.lengthm[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],et.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e>>9)*1335;let a=(t<<10|n)^21522;i(!(a>>>15));for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(!(t>>>18));for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;ne+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.lengtht.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(!(n>>>8)),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}}t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return!!(e>>>t&1)}function i(e){if(!e)throw Error(`Assertion error`)}class a{static makeBytes(e){let t=[];for(let r of e)n(r,8,t);return new a(a.Mode.BYTE,e.length,t)}static makeNumeric(e){if(!a.isNumeric(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let r=0;r=1<1&&arguments[1]!==void 0?arguments[1]:0,n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null)n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;else if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`)}else a&&i===null&&(i=o)})}),n.join(``)}function C5(e,t){return e.slice().map((e,n)=>n=t.y+t.h?e:e.map((e,n)=>n=t.x+t.w?e:!1))}function w5(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*Poe),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);d={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}return{x:l,y:u,h:c,w:s,excavation:d}}function T5(e,t){return t==null?e?Moe:Noe:Math.floor(t)}var Foe=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),Ioe=U({name:`QRCodeCanvas`,inheritAttrs:!1,props:g(g({},p5()),{level:String,bgColor:String,fgColor:String,marginSize:Number}),setup(e,t){let{attrs:n,expose:r}=t,i=G(()=>e.imageSettings?.src),a=V(null),o=V(null),s=V(!1);return r({toDataURL:(e,t)=>a.value?.toDataURL(e,t)}),ar(()=>{let{value:t,size:n=_5,level:r=v5,bgColor:i=y5,fgColor:c=b5,includeMargin:l=x5,marginSize:u,imageSettings:d}=e;if(a.value!=null){let e=a.value,f=e.getContext(`2d`);if(!f)return;let p=h5.QrCode.encodeText(t,g5[r]).getModules(),m=T5(l,u),h=p.length+m*2,g=w5(p,n,m,d),_=o.value,v=s.value&&g!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;v&&g.excavation!=null&&(p=C5(p,g.excavation));let y=window.devicePixelRatio||1;e.height=e.width=n*y;let b=n/h*y;f.scale(b,b),f.fillStyle=i,f.fillRect(0,0,h,h),f.fillStyle=c,Foe?f.fill(new Path2D(S5(p,m))):p.forEach(function(e,t){e.forEach(function(e,n){e&&f.fillRect(n+m,t+m,1,1)})}),v&&f.drawImage(_,g.x+m,g.y+m,g.w,g.h)}},{flush:`post`}),H(i,()=>{s.value=!1}),()=>{let t=e.size??_5,r={height:`${t}px`,width:`${t}px`},c=null;return i.value!=null&&(c=W(`img`,{src:i.value,key:i.value,style:{display:`none`},onLoad:()=>{s.value=!0},ref:o},null)),W(Ma,null,[W(`canvas`,h(h({},n),{},{style:[r,n.style],ref:a}),null),c])}}}),Loe=U({name:`QRCodeSVG`,inheritAttrs:!1,props:g(g({},p5()),{color:String,level:String,bgColor:String,fgColor:String,marginSize:Number,title:String}),setup(e){let t=null,n=null,r=null,i=null,a=null,o=null;return ar(()=>{let{value:s,size:c=_5,level:l=v5,includeMargin:u=x5,marginSize:d,imageSettings:f}=e;t=h5.QrCode.encodeText(s,g5[l]).getModules(),n=T5(u,d),r=t.length+n*2,i=w5(t,c,n,f),f!=null&&i!=null&&(i.excavation!=null&&(t=C5(t,i.excavation)),o=W(`image`,{"xlink:href":f.src,height:i.h,width:i.w,x:i.x+n,y:i.y+n,preserveAspectRatio:`none`},null)),a=S5(t,n)}),()=>{let t=e.bgColor&&y5,n=e.fgColor&&b5;return W(`svg`,{height:e.size,width:e.size,viewBox:`0 0 ${r} ${r}`},[!!e.title&&W(`title`,null,[e.title]),W(`path`,{fill:t,d:`M0,0 h${r}v${r}H0z`,"shape-rendering":`crispEdges`},null),W(`path`,{fill:n,d:a,"shape-rendering":`crispEdges`},null),o])}}}),Roe=_l(U({name:`AQrcode`,inheritAttrs:!1,props:joe(),emits:[`refresh`],setup(e,t){let{emit:n,attrs:r,expose:i}=t,[a]=$l(`QRCode`),{prefixCls:o}=Z(`qrcode`,e),[s,c]=Ooe(o),[,l]=Jp(),u=B();i({toDataURL:(e,t)=>u.value?.toDataURL(e,t)});let d=G(()=>{let{value:t,icon:n=``,size:r=160,iconSize:i=40,color:a=l.value.colorText,bgColor:o=`transparent`,errorLevel:s=`M`}=e,c={src:n,x:void 0,y:void 0,height:i,width:i,excavate:!0};return{value:t,size:r-(l.value.paddingSM+l.value.lineWidth)*2,level:s,bgColor:o,fgColor:a,imageSettings:n?c:void 0}});return()=>{let t=o.value;return s(W(`div`,h(h({},r),{},{style:[r.style,{width:`${e.size}px`,height:`${e.size}px`,backgroundColor:d.value.bgColor}],class:[c.value,t,{[`${t}-borderless`]:!e.bordered}]}),[e.status!==`active`&&W(`div`,{class:`${t}-mask`},[e.status===`loading`&&W(EX,null,null),e.status===`expired`&&W(Ma,null,[W(`p`,{class:`${t}-expired`},[a.value.expired]),W(Oj,{type:`link`,onClick:e=>n(`refresh`,e)},{default:()=>[a.value.refresh],icon:()=>W(f5,null,null)})]),e.status===`scanned`&&W(`p`,{class:`${t}-scanned`},[a.value.scanned])]),e.type===`canvas`?W(Ioe,h({ref:u},d.value),null):W(Loe,d.value,null)]))}}}));function zoe(e){let t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:i,bottom:a,left:o}=e.getBoundingClientRect();return r>=0&&o>=0&&i<=t&&a<=n}function Boe(e,t,n,r){let[i,a]=_S(void 0);ar(()=>{let t=typeof e.value==`function`?e.value():e.value;a(t||null)},{flush:`post`});let[o,s]=_S(null),c=()=>{if(!t.value)s(null);else if(i.value){!zoe(i.value)&&t.value&&i.value.scrollIntoView(r.value);let{left:e,top:n,width:a,height:c}=i.value.getBoundingClientRect(),l={left:e,top:n,width:a,height:c,radius:0};JSON.stringify(o.value)!==JSON.stringify(l)&&s(l)}else s(null)};return $r(()=>{H([t,i],()=>{c()},{flush:`post`,immediate:!0}),window.addEventListener(`resize`,c)}),ni(()=>{window.removeEventListener(`resize`,c)}),[G(()=>{if(!o.value)return o.value;let e=n.value?.offset||6,t=n.value?.radius||2;return{left:o.value.left-e,top:o.value.top-e,width:o.value.width+e*2,height:o.value.height+e*2,radius:t}}),i]}var Voe=()=>({arrow:Sl([Boolean,Object]),target:Sl([String,Function,Object]),title:Sl([String,Object]),description:Sl([String,Object]),placement:X(),mask:Sl([Object,Boolean],!0),className:{type:String},style:q(),scrollIntoViewOptions:Sl([Boolean,Object])}),E5=()=>g(g({},Voe()),{prefixCls:{type:String},total:{type:Number},current:{type:Number},onClose:Y(),onFinish:Y(),renderPanel:Y(),onPrev:Y(),onNext:Y()}),Hoe=U({name:`DefaultPanel`,inheritAttrs:!1,props:E5(),setup(e,t){let{attrs:n}=t;return()=>{let{prefixCls:t,current:r,total:i,title:a,description:o,onClose:s,onPrev:c,onNext:l,onFinish:u}=e;return W(`div`,h(h({},n),{},{class:K(`${t}-content`,n.class)}),[W(`div`,{class:`${t}-inner`},[W(`button`,{type:`button`,onClick:s,"aria-label":`Close`,class:`${t}-close`},[W(`span`,{class:`${t}-close-x`},[Qa(`×`)])]),W(`div`,{class:`${t}-header`},[W(`div`,{class:`${t}-title`},[a])]),W(`div`,{class:`${t}-description`},[o]),W(`div`,{class:`${t}-footer`},[W(`div`,{class:`${t}-sliders`},[i>1?[...Array.from({length:i}).keys()].map((e,t)=>W(`span`,{key:e,class:t===r?`active`:``},null)):null]),W(`div`,{class:`${t}-buttons`},[r===0?null:W(`button`,{class:`${t}-prev-btn`,onClick:c},[Qa(`Prev`)]),r===i-1?W(`button`,{class:`${t}-finish-btn`,onClick:u},[Qa(`Finish`)]):W(`button`,{class:`${t}-next-btn`,onClick:l},[Qa(`Next`)])])])])])}}}),Uoe=U({name:`TourStep`,inheritAttrs:!1,props:E5(),setup(e,t){let{attrs:n}=t;return()=>{let{current:t,renderPanel:r}=e;return W(Ma,null,[typeof r==`function`?r(g(g({},n),e),t):W(Hoe,h(h({},n),e),null)])}}}),D5=0,Woe=hu();function Goe(){let e;return Woe?(e=D5,D5+=1):e=`TEST_OR_SSR`,e}function Koe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:B(``),t=`vc_unique_${Goe()}`;return e.value||t}var O5={fill:`transparent`,"pointer-events":`auto`},qoe=U({name:`TourMask`,props:{prefixCls:{type:String},pos:q(),rootClassName:{type:String},showMask:J(),fill:{type:String,default:`rgba(0,0,0,0.5)`},open:J(),animated:Sl([Boolean,Object]),zIndex:{type:Number}},setup(e,t){let{attrs:n}=t,r=Koe();return()=>{let{prefixCls:t,open:i,rootClassName:a,pos:o,showMask:s,fill:c,animated:l,zIndex:u}=e,d=`${t}-mask-${r}`,f=typeof l==`object`?l?.placeholder:l;return W(Eb,{visible:i,autoLock:!0},{default:()=>i&&W(`div`,h(h({},n),{},{class:K(`${t}-mask`,a,n.class),style:[{position:`fixed`,left:0,right:0,top:0,bottom:0,zIndex:u,pointerEvents:`none`},n.style]}),[s?W(`svg`,{style:{width:`100%`,height:`100%`}},[W(`defs`,null,[W(`mask`,{id:d},[W(`rect`,{x:`0`,y:`0`,width:`100vw`,height:`100vh`,fill:`white`},null),o&&W(`rect`,{x:o.left,y:o.top,rx:o.radius,width:o.width,height:o.height,fill:`black`,class:f?`${t}-placeholder-animated`:``},null)])]),W(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:c,mask:`url(#${d})`},null),o&&W(Ma,null,[W(`rect`,h(h({},O5),{},{x:`0`,y:`0`,width:`100%`,height:o.top}),null),W(`rect`,h(h({},O5),{},{x:`0`,y:`0`,width:o.left,height:`100%`}),null),W(`rect`,h(h({},O5),{},{x:`0`,y:o.top+o.height,width:`100%`,height:`calc(100vh - ${o.top+o.height}px)`}),null),W(`rect`,h(h({},O5),{},{x:o.left+o.width,y:`0`,width:`calc(100vw - ${o.left+o.width}px)`,height:`100%`}),null)])]):null])})}}}),Joe=[0,0],k5={left:{points:[`cr`,`cl`],offset:[-8,0]},right:{points:[`cl`,`cr`],offset:[8,0]},top:{points:[`bc`,`tc`],offset:[0,-8]},bottom:{points:[`tc`,`bc`],offset:[0,8]},topLeft:{points:[`bl`,`tl`],offset:[0,-8]},leftTop:{points:[`tr`,`tl`],offset:[-8,0]},topRight:{points:[`br`,`tr`],offset:[0,-8]},rightTop:{points:[`tl`,`tr`],offset:[8,0]},bottomRight:{points:[`tr`,`br`],offset:[0,8]},rightBottom:{points:[`bl`,`br`],offset:[8,0]},bottomLeft:{points:[`tl`,`bl`],offset:[0,8]},leftBottom:{points:[`br`,`bl`],offset:[-8,0]}};function A5(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0],t={};return Object.keys(k5).forEach(n=>{t[n]=g(g({},k5[n]),{autoArrow:e,targetOffset:Joe})}),t}A5();var Yoe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{builtinPlacements:e,popupAlign:t}=Rh();return{builtinPlacements:e,popupAlign:t,steps:xl(),open:J(),defaultCurrent:{type:Number},current:{type:Number},onChange:Y(),onClose:Y(),onFinish:Y(),mask:Sl([Boolean,Object],!0),arrow:Sl([Boolean,Object],!0),rootClassName:{type:String},placement:X(`bottom`),prefixCls:{type:String,default:`rc-tour`},renderPanel:Y(),gap:q(),animated:Sl([Boolean,Object]),scrollIntoViewOptions:Sl([Boolean,Object],!0),zIndex:{type:Number,default:1001}}},Xoe=U({name:`Tour`,inheritAttrs:!1,props:Bc(M5(),{}),setup(e){let{defaultCurrent:t,placement:n,mask:r,scrollIntoViewOptions:i,open:a,gap:o,arrow:s}=hn(e),c=B(),[l,u]=gS(0,{value:G(()=>e.current),defaultValue:t.value}),[d,f]=gS(void 0,{value:G(()=>e.open),postState:t=>l.value<0||l.value>=e.steps.length?!1:t??!0}),p=V(d.value);ar(()=>{d.value&&!p.value&&u(0),p.value=d.value});let m=G(()=>e.steps[l.value]||{}),_=G(()=>m.value.placement??n.value),v=G(()=>d.value&&(m.value.mask??r.value)),y=G(()=>m.value.scrollIntoViewOptions??i.value),[b,x]=Boe(G(()=>m.value.target),a,o,y),S=G(()=>x.value?m.value.arrow===void 0?s.value:m.value.arrow:!1),C=G(()=>typeof S.value==`object`&&S.value.pointAtCenter);H(C,()=>{var e;(e=c.value)==null||e.forcePopupAlign()}),H(l,()=>{var e;(e=c.value)==null||e.forcePopupAlign()});let w=t=>{var n;u(t),(n=e.onChange)==null||n.call(e,t)};return()=>{let{prefixCls:t,steps:n,onClose:r,onFinish:i,rootClassName:a,renderPanel:o,animated:s,zIndex:u}=e,p=Yoe(e,[`prefixCls`,`steps`,`onClose`,`onFinish`,`rootClassName`,`renderPanel`,`animated`,`zIndex`]);if(x.value===void 0)return null;let y=()=>{f(!1),r?.(l.value)},T=typeof v.value==`boolean`?v.value:!!v.value,E=typeof v.value==`boolean`?void 0:v.value,D=()=>x.value||document.body,O=()=>W(Uoe,h({arrow:S.value,key:`content`,prefixCls:t,total:n.length,renderPanel:o,onPrev:()=>{w(l.value-1)},onNext:()=>{w(l.value+1)},onClose:y,current:l.value,onFinish:()=>{y(),i?.()}},m.value),null),k=G(()=>{let e=b.value||j5,t={};return Object.keys(e).forEach(n=>{typeof e[n]==`number`?t[n]=`${e[n]}px`:t[n]=e[n]}),t});return d.value?W(Ma,null,[W(qoe,{zIndex:u,prefixCls:t,pos:b.value,showMask:T,style:E?.style,fill:E?.color,open:d.value,animated:s,rootClassName:a},null),W(Ob,h(h({},p),{},{arrow:!!p.arrow,builtinPlacements:m.value.target?p.builtinPlacements??A5(C.value):void 0,ref:c,popupStyle:m.value.target?m.value.style:g(g({},m.value.style),{position:`fixed`,left:j5.left,top:j5.top,transform:`translate(-50%, -50%)`}),popupPlacement:_.value,popupVisible:d.value,popupClassName:K(a,m.value.className),prefixCls:t,popup:O,forceRender:!1,destroyPopupOnHide:!0,zIndex:u,mask:!1,getTriggerDOMNode:D}),{default:()=>[W(Eb,{visible:d.value,autoLock:!0},{default:()=>[W(`div`,{class:K(a,`${t}-target-placeholder`),style:g(g({},k.value),{position:`fixed`,pointerEvents:`none`})},null)]})]})]):null}}}),Zoe=()=>g(g({},M5()),{steps:{type:Array},prefixCls:{type:String},current:{type:Number},type:{type:String},"onUpdate:current":Function}),Qoe=U({name:`ATourPanel`,inheritAttrs:!1,props:g(g({},E5()),{cover:{type:Object},nextButtonProps:{type:Object},prevButtonProps:{type:Object},current:{type:Number},type:{type:String}}),setup(e,t){let{attrs:n,slots:r}=t,{current:i,total:a}=hn(e),o=G(()=>i.value===a.value-1),s=t=>{var n;let r=e.prevButtonProps;(n=e.onPrev)==null||n.call(e,t),typeof r?.onClick==`function`&&r?.onClick()},c=t=>{var n,r;let i=e.nextButtonProps;o.value?(n=e.onFinish)==null||n.call(e,t):(r=e.onNext)==null||r.call(e,t),typeof i?.onClick==`function`&&i?.onClick()};return()=>{let{prefixCls:t,title:l,onClose:u,cover:d,description:f,type:p,arrow:m}=e,g=e.prevButtonProps,_=e.nextButtonProps,v;l&&(v=W(`div`,{class:`${t}-header`},[W(`div`,{class:`${t}-title`},[l])]));let y;f&&(y=W(`div`,{class:`${t}-description`},[f]));let b;d&&(b=W(`div`,{class:`${t}-cover`},[d]));let x;x=r.indicatorsRender?r.indicatorsRender({current:i.value,total:a}):[...Array.from({length:a.value}).keys()].map((e,n)=>W(`span`,{key:e,class:K(n===i.value&&`${t}-indicator-active`,`${t}-indicator`)},null));let S=p===`primary`?`default`:`primary`,C={type:`default`,ghost:p===`primary`};return W(Ql,{componentName:`Tour`,defaultLocale:Zl.Tour},{default:e=>W(`div`,h(h({},n),{},{class:K(p===`primary`?`${t}-primary`:``,n.class,`${t}-content`)}),[m&&W(`div`,{class:`${t}-arrow`,key:`arrow`},null),W(`div`,{class:`${t}-inner`},[W(UC,{class:`${t}-close`,onClick:u},null),b,v,y,W(`div`,{class:`${t}-footer`},[a.value>1&&W(`div`,{class:`${t}-indicators`},[x]),W(`div`,{class:`${t}-buttons`},[i.value===0?null:W(Oj,h(h(h({},C),g),{},{onClick:s,size:`small`,class:K(`${t}-prev-btn`,g?.className)}),{default:()=>[ic(g?.children)?g.children():g?.children??e.Previous]}),W(Oj,h(h({type:S},_),{},{onClick:c,size:`small`,class:K(`${t}-next-btn`,_?.className)}),{default:()=>[ic(_?.children)?_?.children():o.value?e.Finish:e.Next]})])])])])})}}}),$oe=e=>{let{defaultType:t,steps:n,current:r,defaultCurrent:i}=e,a=B(i?.value);H(G(()=>r?.value),e=>{a.value=e??i?.value},{immediate:!0});let o=e=>{a.value=e},s=G(()=>typeof a.value==`number`?n&&n.value?.[a.value]?.type:t?.value);return{currentMergedType:G(()=>s.value??t?.value),updateInnerCurrent:o}},ese=e=>{let{componentCls:t,lineHeight:n,padding:r,paddingXS:i,borderRadius:a,borderRadiusXS:o,colorPrimary:s,colorText:c,colorFill:l,indicatorHeight:u,indicatorWidth:d,boxShadowTertiary:f,tourZIndexPopup:p,fontSize:m,colorBgContainer:h,fontWeightStrong:_,marginXS:v,colorTextLightSolid:y,tourBorderRadius:b,colorWhite:x,colorBgTextHover:S,tourCloseSize:C,motionDurationSlow:w,antCls:T}=e;return[{[t]:g(g({},Op(e)),{color:c,position:`absolute`,zIndex:p,display:`block`,visibility:`visible`,fontSize:m,lineHeight:n,width:520,"--antd-arrow-background-color":h,"&-pure":{maxWidth:`100%`,position:`relative`},[`&${t}-hidden`]:{display:`none`},[`${t}-content`]:{position:`relative`},[`${t}-inner`]:{textAlign:`start`,textDecoration:`none`,borderRadius:b,boxShadow:f,position:`relative`,backgroundColor:h,border:`none`,backgroundClip:`padding-box`,[`${t}-close`]:{position:`absolute`,top:r,insetInlineEnd:r,color:e.colorIcon,outline:`none`,width:C,height:C,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:`flex`,alignItems:`center`,justifyContent:`center`,"&:hover":{color:e.colorIconHover,backgroundColor:e.wireframe?`transparent`:e.colorFillContent}},[`${t}-cover`]:{textAlign:`center`,padding:`${r+C+i}px ${r}px 0`,img:{width:`100%`}},[`${t}-header`]:{padding:`${r}px ${r}px ${i}px`,[`${t}-title`]:{lineHeight:n,fontSize:m,fontWeight:_}},[`${t}-description`]:{padding:`0 ${r}px`,lineHeight:n,wordWrap:`break-word`},[`${t}-footer`]:{padding:`${i}px ${r}px ${r}px`,textAlign:`end`,borderRadius:`0 0 ${o}px ${o}px`,display:`flex`,[`${t}-indicators`]:{display:`inline-block`,[`${t}-indicator`]:{width:d,height:u,display:`inline-block`,borderRadius:`50%`,background:l,"&:not(:last-child)":{marginInlineEnd:u},"&-active":{background:s}}},[`${t}-buttons`]:{marginInlineStart:`auto`,[`${T}-btn`]:{marginInlineStart:v}}}},[`${t}-primary, &${t}-primary`]:{"--antd-arrow-background-color":s,[`${t}-inner`]:{color:y,textAlign:`start`,textDecoration:`none`,backgroundColor:s,borderRadius:a,boxShadow:f,[`${t}-close`]:{color:y},[`${t}-indicators`]:{[`${t}-indicator`]:{background:new zf(y).setAlpha(.15).toRgbString(),"&-active":{background:y}}},[`${t}-prev-btn`]:{color:y,borderColor:new zf(y).setAlpha(.15).toRgbString(),backgroundColor:s,"&:hover":{backgroundColor:new zf(y).setAlpha(.15).toRgbString(),borderColor:`transparent`}},[`${t}-next-btn`]:{color:s,borderColor:`transparent`,background:x,"&:hover":{background:new zf(S).onBackground(x).toRgbString()}}}}}),[`${t}-mask`]:{[`${t}-placeholder-animated`]:{transition:`all ${w}`}},[[`&-placement-left`,`&-placement-leftTop`,`&-placement-leftBottom`,`&-placement-right`,`&-placement-rightTop`,`&-placement-rightBottom`].join(`,`)]:{[`${t}-inner`]:{borderRadius:Math.min(b,8)}}},UA(e,{colorBg:`var(--antd-arrow-background-color)`,contentRadius:b,limitVerticalRadius:!0})]},tse=Fp(`Tour`,e=>{let{borderRadiusLG:t,fontSize:n,lineHeight:r}=e;return[ese(Rp(e,{tourZIndexPopup:e.zIndexPopupBase+70,indicatorWidth:6,indicatorHeight:6,tourBorderRadius:t,tourCloseSize:n*r}))]}),nse=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{steps:t,current:a,type:o,rootClassName:s}=e,c=nse(e,[`steps`,`current`,`type`,`rootClassName`]),g=K({[`${l.value}-primary`]:p.value===`primary`,[`${l.value}-rtl`]:u.value===`rtl`},f.value,s),_=(e,t)=>W(Qoe,h(h({},e),{},{type:o,current:t}),{indicatorsRender:i.indicatorsRender}),v=e=>{m(e),r(`update:current`,e),r(`change`,e)},y=G(()=>RA({arrowPointAtCenter:!0,autoAdjustOverflow:!0}));return d(W(Xoe,h(h(h({},n),c),{},{rootClassName:g,prefixCls:l.value,current:a,defaultCurrent:e.defaultCurrent,animated:!0,renderPanel:_,onChange:v,steps:t,builtinPlacements:y.value}),null))}}})),N5=Symbol(`appConfigContext`),ise=e=>er(N5,e),ase=()=>tr(N5,{}),P5=Symbol(`appContext`),ose=e=>er(P5,e),sse=Yt({message:{},notification:{},modal:{}}),cse=()=>tr(P5,sse),lse=e=>{let{componentCls:t,colorText:n,fontSize:r,lineHeight:i,fontFamily:a}=e;return{[t]:{color:n,fontSize:r,lineHeight:i,fontFamily:a}}},use=Fp(`App`,e=>[lse(e)]),dse=()=>({rootClassName:String,message:q(),notification:q()}),fse=()=>cse(),F5=U({name:`AApp`,props:Bc(dse(),{}),setup(e,t){let{slots:n}=t,{prefixCls:r}=Z(`app`,e),[i,a]=use(r),o=G(()=>K(a.value,r.value,e.rootClassName)),s=ase(),c=G(()=>({message:g(g({},s.message),e.message),notification:g(g({},s.notification),e.notification)}));ise(c.value);let[l,u]=$U(c.value.message),[d,f]=MW(c.value.notification),[p,m]=cQ();return ose(G(()=>({message:l,notification:d,modal:p})).value),()=>i(W(`div`,{class:o.value},[m(),u(),f(),n.default?.call(n)]))}});F5.useApp=fse,F5.install=function(e){e.component(F5.name,F5)};var I5=[`wrap`,`nowrap`,`wrap-reverse`],L5=[`flex-start`,`flex-end`,`start`,`end`,`center`,`space-between`,`space-around`,`space-evenly`,`stretch`,`normal`,`left`,`right`],R5=[`center`,`start`,`end`,`flex-start`,`flex-end`,`self-start`,`self-end`,`baseline`,`normal`,`stretch`],pse=(e,t)=>{let n={};return I5.forEach(r=>{n[`${e}-wrap-${r}`]=t.wrap===r}),n},mse=(e,t)=>{let n={};return R5.forEach(r=>{n[`${e}-align-${r}`]=t.align===r}),n[`${e}-align-stretch`]=!t.align&&!!t.vertical,n},hse=(e,t)=>{let n={};return L5.forEach(r=>{n[`${e}-justify-${r}`]=t.justify===r}),n};function gse(e,t){return K(g(g(g({},pse(e,t)),mse(e,t)),hse(e,t)))}var _se=e=>{let{componentCls:t}=e;return{[t]:{display:`flex`,"&-vertical":{flexDirection:`column`},"&-rtl":{direction:`rtl`},"&:empty":{display:`none`}}}},vse=e=>{let{componentCls:t}=e;return{[t]:{"&-gap-small":{gap:e.flexGapSM},"&-gap-middle":{gap:e.flexGap},"&-gap-large":{gap:e.flexGapLG}}}},yse=e=>{let{componentCls:t}=e,n={};return I5.forEach(e=>{n[`${t}-wrap-${e}`]={flexWrap:e}}),n},bse=e=>{let{componentCls:t}=e,n={};return R5.forEach(e=>{n[`${t}-align-${e}`]={alignItems:e}}),n},xse=e=>{let{componentCls:t}=e,n={};return L5.forEach(e=>{n[`${t}-justify-${e}`]={justifyContent:e}}),n},Sse=Fp(`Flex`,e=>{let t=Rp(e,{flexGapSM:e.paddingXS,flexGap:e.padding,flexGapLG:e.paddingLG});return[_se(t),vse(t),yse(t),bse(t),xse(t)]});function z5(e){return[`small`,`middle`,`large`].includes(e)}var Cse=()=>({prefixCls:X(),vertical:J(),wrap:X(),justify:X(),align:X(),flex:Sl([Number,String]),gap:Sl([Number,String]),component:yl()}),wse=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i[o.value,c.value,gse(o.value,e),{[`${o.value}-rtl`]:a.value===`rtl`,[`${o.value}-gap-${e.gap}`]:z5(e.gap),[`${o.value}-vertical`]:e.vertical??i?.value.vertical}]);return()=>{let{flex:t,gap:i,component:a=`div`}=e,o=wse(e,[`flex`,`gap`,`component`]),c={};return t&&(c.flex=t),i&&!z5(i)&&(c.gap=`${i}px`),s(W(a,h({class:[r.class,l.value],style:[r.style,c]},sm(o,[`justify`,`wrap`,`align`,`vertical`])),{default:()=>[n.default?.call(n)]}))}}})),B5=s({Affix:()=>fm,Alert:()=>vne,Anchor:()=>kh,AnchorLink:()=>Nm,App:()=>F5,AutoComplete:()=>Jk,AutoCompleteOptGroup:()=>Kk,AutoCompleteOption:()=>Gk,Avatar:()=>YA,AvatarGroup:()=>JA,BackTop:()=>rq,Badge:()=>tj,BadgeRibbon:()=>QA,Breadcrumb:()=>AM,BreadcrumbItem:()=>Vj,BreadcrumbSeparator:()=>kM,Button:()=>Oj,ButtonGroup:()=>Cj,Calendar:()=>QF,Card:()=>jL,CardGrid:()=>AL,CardMeta:()=>kL,Carousel:()=>YR,Cascader:()=>oU,CheckableTag:()=>pG,Checkbox:()=>hU,CheckboxGroup:()=>mU,Col:()=>_U,Collapse:()=>UL,CollapsePanel:()=>HL,Comment:()=>bU,Compact:()=>NO,ConfigProvider:()=>sG,DatePicker:()=>YG,Descriptions:()=>lK,DescriptionsItem:()=>nK,DirectoryTree:()=>L3,Divider:()=>fK,Drawer:()=>jK,Dropdown:()=>pK,DropdownButton:()=>Pj,Empty:()=>tm,Flex:()=>Tse,FloatButton:()=>iq,FloatButtonGroup:()=>QK,Form:()=>JH,FormItem:()=>zH,FormItemRest:()=>ow,Grid:()=>gU,Image:()=>uY,ImagePreviewGroup:()=>lY,Input:()=>$q,InputGroup:()=>xq,InputNumber:()=>UY,InputPassword:()=>Qq,InputSearch:()=>Cq,Layout:()=>pX,LayoutContent:()=>fX,LayoutFooter:()=>uX,LayoutHeader:()=>lX,LayoutSider:()=>dX,List:()=>uZ,ListItem:()=>aZ,ListItemMeta:()=>nZ,LocaleProvider:()=>EU,Mentions:()=>HZ,MentionsOption:()=>VZ,Menu:()=>EM,MenuDivider:()=>_M,MenuItem:()=>oM,MenuItemGroup:()=>gM,Modal:()=>uQ,MonthPicker:()=>WG,PageHeader:()=>BQ,Pagination:()=>tZ,Popconfirm:()=>WQ,Popover:()=>qA,Progress:()=>w$,QRCode:()=>Roe,QuarterPicker:()=>qG,Radio:()=>vF,RadioButton:()=>_F,RadioGroup:()=>gF,RangePicker:()=>JG,Rate:()=>L$,Result:()=>n1,Row:()=>r1,Segmented:()=>Eoe,Select:()=>Rk,SelectOptGroup:()=>Bk,SelectOption:()=>zk,Skeleton:()=>EL,SkeletonAvatar:()=>TL,SkeletonButton:()=>xL,SkeletonImage:()=>wL,SkeletonInput:()=>SL,SkeletonTitle:()=>ZI,Slider:()=>L1,Space:()=>LQ,Spin:()=>EX,Statistic:()=>SQ,StatisticCountdown:()=>xQ,Step:()=>o0,Steps:()=>s0,SubMenu:()=>dM,Switch:()=>h0,TabPane:()=>zI,Table:()=>j6,TableColumn:()=>E6,TableColumnGroup:()=>D6,TableSummary:()=>A6,TableSummaryCell:()=>k6,TableSummaryRow:()=>O6,Tabs:()=>VI,Tag:()=>mG,Textarea:()=>Bq,TimePicker:()=>Kie,TimeRangePicker:()=>c8,Timeline:()=>Yie,TimelineItem:()=>l8,Tooltip:()=>KA,Tour:()=>rse,Transfer:()=>yie,Tree:()=>z3,TreeNode:()=>R3,TreeSelect:()=>Wie,TreeSelectNode:()=>a8,Typography:()=>Aae,TypographyLink:()=>E8,TypographyParagraph:()=>D8,TypographyText:()=>O8,TypographyTitle:()=>k8,Upload:()=>poe,UploadDragger:()=>foe,Watermark:()=>yoe,WeekPicker:()=>UG,message:()=>_W,notification:()=>qW}),V5=(e,t)=>new zf(e).setAlpha(t).toRgbString(),H5=(e,t)=>new zf(e).lighten(t).toHexString(),Ese=e=>{let t=ep(e,{theme:`dark`});return{1:t[0],2:t[1],3:t[2],4:t[3],5:t[6],6:t[5],7:t[4],8:t[6],9:t[5],10:t[4]}},Dse=(e,t)=>{let n=e||`#000`,r=t||`#fff`;return{colorBgBase:n,colorTextBase:r,colorText:V5(r,.85),colorTextSecondary:V5(r,.65),colorTextTertiary:V5(r,.45),colorTextQuaternary:V5(r,.25),colorFill:V5(r,.18),colorFillSecondary:V5(r,.12),colorFillTertiary:V5(r,.08),colorFillQuaternary:V5(r,.04),colorBgElevated:H5(n,12),colorBgContainer:H5(n,8),colorBgLayout:H5(n,0),colorBgSpotlight:H5(n,26),colorBorder:H5(n,26),colorBorderSecondary:H5(n,19)}},Ose=(e,t)=>{let n=Object.keys(cp).map(t=>{let n=ep(e[t],{theme:`dark`});return Array(10).fill(1).reduce((e,r,i)=>(e[`${t}-${i+1}`]=n[i],e),{})}).reduce((e,t)=>(e=g(g({},e),t),e),{}),r=t??yp(e);return g(g(g({},r),n),up(e,{generateColorPalettes:Ese,generateNeutralColorPalettes:Dse}))};function kse(e){let{sizeUnit:t,sizeStep:n}=e,r=n-2;return{sizeXXL:t*(r+10),sizeXL:t*(r+6),sizeLG:t*(r+2),sizeMD:t*(r+2),sizeMS:t*(r+1),size:t*r,sizeSM:t*r,sizeXS:t*(r-1),sizeXXS:t*(r-1)}}var Ase=(e,t)=>{let n=t??yp(e),r=n.fontSizeSM,i=n.controlHeight-4;return g(g(g(g(g({},n),kse(t??e)),vp(r)),{controlHeight:i}),op(g(g({},n),{controlHeight:i})))};function jse(){let[e,t,n]=Jp();return{theme:e,token:t,hashId:n}}var Mse={defaultConfig:Up,defaultSeed:Up.token,useToken:jse,defaultAlgorithm:yp,darkAlgorithm:Ose,compactAlgorithm:Ase},Nse={version:uf,install:function(e){return Object.keys(B5).forEach(t=>{let n=B5[t];n.install&&e.use(n)}),e.use(lf.StyleProvider),e.config.globalProperties.$message=_W,e.config.globalProperties.$notification=qW,e.config.globalProperties.$info=uQ.info,e.config.globalProperties.$success=uQ.success,e.config.globalProperties.$error=uQ.error,e.config.globalProperties.$warning=uQ.warning,e.config.globalProperties.$confirm=uQ.confirm,e.config.globalProperties.$destroyAll=uQ.destroyAll,e}},Pse=typeof window<`u`,U5,W5=e=>U5=e,G5=Symbol();function K5(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var q5=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function Fse(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function J5(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){Ise(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Y5(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function X5(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var Z5=typeof navigator==`object`?navigator:{userAgent:``},Q5=/Macintosh/.test(Z5.userAgent)&&/AppleWebKit/.test(Z5.userAgent)&&!/Safari/.test(Z5.userAgent),Ise=Pse?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!Q5?Lse:`msSaveOrOpenBlob`in Z5?Rse:zse:()=>{};function Lse(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?X5(r):Y5(r.href)?J5(e,t,n):(r.target=`_blank`,X5(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){X5(r)},0))}function Rse(e,t=`download`,n){if(typeof e==`string`){if(Y5(e))J5(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){X5(t)})}}else navigator.msSaveOrOpenBlob(Fse(e,n),t)}function zse(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return J5(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(q5.HTMLElement))||`safari`in q5,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||Q5)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:Bse}=Object;function Vse(){let e=Ie(!0),t=e.run(()=>B({})),n=[],r=[],i=an({install(e){W5(i),i._a=e,e.provide(G5,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var $5=()=>{};function e7(e,t,n,r=$5){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&Le()&&Re(i),i}function t7(e,...t){e.forEach(e=>{e(...t)})}var Hse=e=>e(),n7=Symbol(),r7=Symbol();function i7(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];if(K5(i)&&K5(r)&&Object.hasOwn(e,n)&&!cn(r)&&!$t(r)){e[n]=i7(i,r);let t=rn(e)[n];cn(t)&&tn(t)&&dn(t)}else e[n]=r}return e}var Use=Symbol();function Wse(e){return!e||typeof e!=`object`||!Object.hasOwn(e,Use)}var{assign:a7}=Object;function Gse(e){return!!(cn(e)&&e.effect)}function Kse(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),a7(hn(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=an(G(()=>{W5(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=o7(e,l,t,n,r,!0),c}function o7(e,t,n={},r,i,a){let o,s=a7({actions:{}},n),c={deep:!0},l,u,d=new Set,f=new Set,p,m=r.state.value[e];!a&&!m&&(r.state.value[e]={});let h;function g(t){let n;l=u=!1,typeof t==`function`?(t(r.state.value[e]),n={type:`patch function`,storeId:e,events:p}):(i7(r.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:p});let i=h=Symbol();zn().then(()=>{h===i&&(l=!0)}),u=!0,t7(d,n,r.state.value[e])}let _=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{a7(e,t)})}:$5;function v(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let y=(t,n=``)=>{if(n7 in t)return t[r7]=n,t;let i=function(){W5(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}t7(f,{args:n,name:i[r7],store:b,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:b,n)}catch(e){throw t7(o,e),e}return l instanceof Promise?l.then(e=>(t7(a,e),e)).catch(e=>(t7(o,e),Promise.reject(e))):(t7(a,l),l)};return i[n7]=!0,i[r7]=n,i},b=Yt({_p:r,$id:e,$onAction:e7.bind(null,f),$patch:g,$reset:_,$subscribe(t,n={}){if(d.has(t))return $5;let i=e7(d,t,n.detached,()=>a()),a=o.run(()=>H(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:`direct`,events:p},r)},a7({},c,n)));return i},$dispose:v});r._s.set(e,b);let x=(r._a&&r._a.runWithContext||Hse)(()=>r._e.run(()=>(o=Ie()).run(()=>t({action:y}))));for(let t in x){let n=x[t];cn(n)&&!Gse(n)||$t(n)?a||(m&&Wse(n)&&(cn(n)?n.value=m[t]:((n instanceof Set||n instanceof Map)&&n.clear(),i7(n,m[t]))),r.state.value[e][t]=n):typeof n==`function`&&(x[t]=y(n,t),s.actions[t]=n)}return a7(b,x),a7(rn(b),x),Object.defineProperty(b,"$state",{get:()=>r.state.value[e],set:e=>{g(t=>{a7(t,e)})}}),r._p.forEach(e=>{let t=o.run(()=>e({store:b,app:r._a,pinia:r,options:s}));a7(b,t)}),m&&a&&n.hydrate&&n.hydrate(b.$state,m),l=!0,u=!0,b}function qse(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=nr();return n||=o?tr(G5,null):null,n&&W5(n),n=U5,n._s.has(e)||(i?o7(e,t,r,n):Kse(e,r,n)),n._s.get(e)}return a.$id=e,a}function Jse(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function s7(e,t=`|`){return e.map(e=>y7(e)).join(t)}function Yse(e,t){return typeof t==`bigint`?t.toString():t}var Xse=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function c7(e){return new Xse(e)}function Zse(e){return e==null}function Qse(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function $se(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):p7(e,a,r?r(n.value,a):n.value))}}function ece(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?f7(e,n,()=>t[n]):p7(e,n,r.value))}}function h7(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function tce(e){return JSON.stringify(e)}function nce(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var rce=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function g7(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ice=c7(()=>{if(A7.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function _7(e){if(g7(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return g7(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ace(e){return _7(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var oce=new Set([`string`,`number`,`symbol`]);function sce(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function v7(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function cce(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function y7(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function lce(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var uce={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},dce={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function fce(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return m7(i,e,b7(e,t)),v7(e,h7(n,{shape:i,checks:[]}))}function b7(e,t){let n=d7(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function pce(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(b7(e,t)),a={};return m7(a,e,Reflect.ownKeys(d7(e)).filter(e=>!i.has(e))),v7(e,h7(n,{shape:a,checks:[]}))}function mce(e,t){if(!_7(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=d7(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return v7(e,h7(e._zod.def,{shape:x7(e,t)}))}function x7(e,t){let n={};return m7(n,e,Reflect.ownKeys(d7(e))),ece(n,t),n}function hce(e,t){if(!_7(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return v7(e,h7(e._zod.def,{shape:x7(e,t)}))}function gce(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return m7(n,e,Reflect.ownKeys(d7(e))),m7(n,t,Reflect.ownKeys(d7(t))),v7(e,h7(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function _ce(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(b7(t,n)):void 0,o={};return m7(o,t,Reflect.ownKeys(d7(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),v7(t,h7(t._zod.def,{shape:o,checks:[]}))}function vce(e,t,n){let r=n?new Set(b7(t,n)):void 0,i={};return m7(i,t,Reflect.ownKeys(d7(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),v7(t,h7(t._zod.def,{shape:i}))}function yce(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function S7(e){return typeof e==`string`?e:e?.message}function Sce(e){let t=[];for(let n of e??[]){let e=n._zod.def;if(!/_(length|size)$|_equals$/.test(e.check))break;let r=e.maximum??e.length??e.size;r>=0&&t.push([r,n])}return t}function Cce(e,t,n){var r;for(let i=t;ie;return t[Lce]=!0,t}var D7,O7={value:void 0,enumerable:!1},k7=`captureStackTrace`in Error?Error:null;function zce(e){let t=k7;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return k7=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function Bce(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){O7.value=new a(r);try{Object.defineProperty(n,"_zod",O7)}finally{O7.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),kce(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?zce(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Vce=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Hce=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(D7=globalThis).__zod_globalConfig??(D7.__zod_globalConfig={});var A7=globalThis.__zod_globalConfig;function j7(e){return e&&Object.assign(A7,e),A7}var Uce=()=>{let e={string:{unit:`کاراکتر`,verb:`داشته باشد`},file:{unit:`بایت`,verb:`داشته باشد`},array:{unit:`آیتم`,verb:`داشته باشد`},set:{unit:`آیتم`,verb:`داشته باشد`},map:{unit:`آیتم`,verb:`داشته باشد`}};function t(t){return e[t]??null}let n={regex:`ورودی`,email:`آدرس ایمیل`,url:`URL`,emoji:`ایموجی`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`تاریخ و زمان ایزو`,date:`تاریخ ایزو`,time:`زمان ایزو`,duration:`مدت زمان ایزو`,ipv4:`IPv4 آدرس`,ipv6:`IPv6 آدرس`,mac:`MAC آدرس`,cidrv4:`IPv4 دامنه`,cidrv6:`IPv6 دامنه`,base64:`base64-encoded رشته`,base64url:`base64url-encoded رشته`,json_string:`JSON رشته`,e164:`E.164 عدد`,credit_card:`شماره کارت اعتباری`,currency_code:`کد ارز`,iban:`IBAN`,jwt:`JWT`,template_literal:`ورودی`},r={nan:`NaN`,number:`عدد`,array:`آرایه`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=C7(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`ورودی نامعتبر: می‌بایست instanceof ${e.expected} می‌بود، ${i} دریافت شد`:`ورودی نامعتبر: می‌بایست ${t} می‌بود، ${i} دریافت شد`}case`invalid_value`:return e.values.length===1?`ورودی نامعتبر: می‌بایست ${y7(e.values[0])} می‌بود`:`گزینه نامعتبر: می‌بایست یکی از ${s7(e.values,`|`)} می‌بود`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`خیلی بزرگ: ${e.origin??`مقدار`} باید ${n}${e.maximum.toString()} ${r.unit??`عنصر`} باشد`:`خیلی بزرگ: ${e.origin??`مقدار`} باید ${n}${e.maximum.toString()} باشد`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`خیلی کوچک: ${e.origin} باید ${n}${e.minimum.toString()} ${r.unit} باشد`:`خیلی کوچک: ${e.origin} باید ${n}${e.minimum.toString()} باشد`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`رشته نامعتبر: باید با "${t.prefix}" شروع شود`:t.format===`ends_with`?`رشته نامعتبر: باید با "${t.suffix}" تمام شود`:t.format===`includes`?`رشته نامعتبر: باید شامل "${t.includes}" باشد`:t.format===`regex`?`رشته نامعتبر: باید با الگوی ${t.pattern} مطابقت داشته باشد`:`${n[t.format]??e.format} نامعتبر`}case`not_multiple_of`:return`عدد نامعتبر: باید مضرب ${e.divisor} باشد`;case`unrecognized_keys`:return`کلید${e.keys.length>1?`های`:``} ناشناس: ${s7(e.keys,`, `)}`;case`invalid_key`:return`کلید ناشناس در ${e.origin}`;case`invalid_union`:return`ورودی نامعتبر`;case`invalid_element`:return`مقدار نامعتبر در ${e.origin}`;default:return`ورودی نامعتبر`}}};function Wce(){return{localeError:Uce()}}var Gce={items_per_page:`/ صفحه`,jump_to:`برو به`,jump_to_confirm:`تایید`,page:``,prev_page:`صفحه قبلی`,next_page:`صفحه بعدی`,prev_5:`۵ صفحه قبلی`,next_5:`۵ صفحه بعدی`,prev_3:`۳ صفحه قبلی`,next_3:`۳ صفحه بعدی`},Kce={locale:`fa_IR`,today:`امروز`,now:`اکنون`,backToToday:`بازگشت به روز`,ok:`باشه`,clear:`پاک کردن`,month:`ماه`,year:`سال`,timeSelect:`انتخاب زمان`,dateSelect:`انتخاب تاریخ`,monthSelect:`یک ماه را انتخاب کنید`,yearSelect:`یک سال را انتخاب کنید`,decadeSelect:`یک دهه را انتخاب کنید`,yearFormat:`YYYY`,dateFormat:`M/D/YYYY`,dayFormat:`D`,dateTimeFormat:`M/D/YYYY HH:mm:ss`,monthBeforeYear:!0,previousMonth:`ماه قبل (PageUp)`,nextMonth:`ماه بعد (PageDown)`,previousYear:`سال قبل (Control + left)`,nextYear:`سال بعد (Control + right)`,previousDecade:`دهه قبل`,nextDecade:`دهه بعد`,previousCentury:`قرن قبل`,nextCentury:`قرن بعد`},M7={placeholder:`انتخاب زمان`,rangePlaceholder:[`زمان شروع`,`زمان پایان`]},N7={lang:g({placeholder:`انتخاب تاریخ`,yearPlaceholder:`انتخاب سال`,quarterPlaceholder:`انتخاب فصل`,monthPlaceholder:`انتخاب ماه`,weekPlaceholder:`انتخاب هفته`,rangePlaceholder:[`تاریخ شروع`,`تاریخ پایان`],rangeYearPlaceholder:[`سال شروع`,`سال پایان`],rangeMonthPlaceholder:[`ماه شروع`,`ماه پایان`],rangeWeekPlaceholder:[`هفته شروع`,`هفته پایان`]},Kce),timePickerLocale:g({},M7)},qce=N7,P7="${label} از نوع ${type} معتبر نیست",Jce={locale:`fa`,Pagination:Gce,DatePicker:N7,TimePicker:M7,Calendar:qce,global:{placeholder:`لطفاً انتخاب کنید`},Table:{filterTitle:`منوی فیلتر`,filterConfirm:`تایید`,filterReset:`پاک کردن`,filterEmptyText:`بدون فیلتر`,emptyText:`بدون داده`,selectAll:`انتخاب صفحه‌ی کنونی`,selectInvert:`معکوس کردن انتخاب‌ها در صفحه ی کنونی`,selectNone:`انتخاب هیچکدام`,selectionAll:`انتخاب همه داده‌ها`,sortTitle:`مرتب سازی`,expand:`باز شدن ردیف`,collapse:`بستن ردیف`,triggerDesc:`ترتیب نزولی`,triggerAsc:`ترتیب صعودی`,cancelSort:`لغوِ ترتیبِ داده شده`},Modal:{okText:`تایید`,cancelText:`لغو`,justOkText:`تایید`},Popconfirm:{okText:`تایید`,cancelText:`لغو`},Transfer:{titles:[``,``],searchPlaceholder:`جستجو`,itemUnit:`عدد`,itemsUnit:`عدد`,remove:`حذف`,selectCurrent:`انتخاب صفحه فعلی`,removeCurrent:`پاک کردن انتخاب‌های صفحه فعلی`,selectAll:`انتخاب همه`,removeAll:`پاک کردن همه انتخاب‌ها`,selectInvert:`معکوس کردن انتخاب‌ها در صفحه ی کنونی`},Upload:{uploading:`در حال آپلود...`,removeFile:`حذف فایل`,uploadError:`خطا در آپلود`,previewFile:`مشاهده‌ی فایل`,downloadFile:`دریافت فایل`},Empty:{description:`داده‌ای موجود نیست`},Icon:{icon:`آیکن`},Text:{edit:`ویرایش`,copy:`کپی`,copied:`کپی شد`,expand:`توسعه`},PageHeader:{back:`برگشت`},Form:{optional:`(اختیاری)`,defaultValidateMessages:{default:"خطا در ${label}",required:"فیلد ${label} اجباریست",enum:"${label} باید یکی از [${enum}] باشد",whitespace:"${label} نمیتواند خالی باشد",date:{format:"ساختار تاریخ در ${label} نامعتبر است",parse:"${label} قابل تبدیل به تاریخ نیست",invalid:"${label} تاریخی نا معتبر است"},types:{string:P7,method:P7,array:P7,object:P7,number:P7,date:P7,boolean:P7,integer:P7,float:P7,regexp:P7,email:P7,url:P7,hex:P7},string:{len:"${label} باید ${len} کاراکتر باشد",min:"${label} باید حداقل ${min} کاراکتر باشد",max:"${label} باید حداکثر ${max} کاراکتر باشد",range:"${label} باید بین ${min}-${max} کاراکتر باشد"},number:{len:"${label} باید برابر ${len}",min:"${label} حداقل میتواند ${min} باشد",max:"${label} حداکثر میتواند ${max} باشد",range:"${label} باید بین ${min}-${max} باشد"},array:{len:"تعداد ${label} باید ${len} باشد.",min:"تعداد ${label} حداقل باید ${min} باشد",max:"تعداد ${label} حداکثر باید ${max} باشد",range:"مقدار ${label} باید بین ${min}-${max} باشد"},pattern:{mismatch:"الگوی ${label} با ${pattern} برابری نمی‌کند"}}},Image:{preview:`نمایش`}},Yce=U({__name:`App`,setup(e){let t={algorithm:Mse.defaultAlgorithm,token:{colorPrimary:`#ff5a00`,colorInfo:`#ff5a00`,colorLink:`#e04f00`,fontFamily:`"IRANSans", Tahoma, sans-serif`,borderRadius:8}};return(e,n)=>{let r=ui(`RouterView`),i=ui(`a-config-provider`);return Ra(),Ua(i,{theme:t,direction:`rtl`,locale:fn(Jce)},{default:Zn(()=>[W(r)]),_:1},8,[`locale`])}}}),F7=e=>e.startsWith(`/`);function I7(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Xce(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&I7(e.default)}var L7=Object.assign;function R7(e,t){let n={};for(let r in t){let i=t[r];n[r]=B7(i)?i.map(e):e(i)}return n}var z7=()=>{},B7=Array.isArray;function V7(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var H7=Symbol(``);function U7(e,t){return L7(Error(),{type:e,[H7]:!0},t)}function W7(e,t){return e instanceof Error&&H7 in e&&(t==null||!!(e.type&t))}var Zce=Symbol(``),G7=Symbol(``),K7=Symbol(``),q7=Symbol(``),J7=Symbol(``),Qce=Symbol(``);function $ce(){return tr(K7)}function ele(e){return tr(q7)}var Y7=typeof document<`u`,X7=/#/g,tle=/&/g,nle=/\//g,rle=/=/g,ile=/\?/g,Z7=/\+/g,ale=/%5B/g,ole=/%5D/g,Q7=/%5E/g,sle=/%60/g,$7=/%7B/g,cle=/%7C/g,e9=/%7D/g,lle=/%20/g;function t9(e){return e==null?``:encodeURI(``+e).replace(cle,`|`).replace(ale,`[`).replace(ole,`]`)}function ule(e){return t9(e).replace($7,`{`).replace(e9,`}`).replace(Q7,`^`)}function n9(e){return t9(e).replace(Z7,`%2B`).replace(lle,`+`).replace(X7,`%23`).replace(tle,`%26`).replace(sle,"`").replace($7,`{`).replace(e9,`}`).replace(Q7,`^`)}function dle(e){return n9(e).replace(rle,`%3D`)}function fle(e){return t9(e).replace(X7,`%23`).replace(ile,`%3F`)}function ple(e){return fle(e).replace(nle,`%2F`)}function r9(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var mle=/\/$/,hle=e=>e.replace(mle,``);function i9(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=yle(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:r9(o)}}function gle(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function a9(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function _le(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&o9(t.matched[r],n.matched[i])&&s9(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function o9(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function s9(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!vle(e[n],t[n]))return!1;return!0}function vle(e,t){return B7(e)?c9(e,t):B7(t)?c9(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function c9(e,t){return B7(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function yle(e,t){if(F7(e))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var l9={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function ble(e){if(!e){if(Y7){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),hle(e)}var xle=/^[^#]+#/;function Sle(e,t){return e.replace(xle,`#`)+t}function Cle(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var u9=()=>history.scrollRestoration===`manual`?{left:window.scrollX,top:window.scrollY}:null;function wle(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=Cle(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function d9(e,t){return(history.state?history.state.position-t:-1)+e}var f9=new Map;function Tle(e){f9.set(e,u9())}function Ele(e){let t=f9.get(e);return f9.delete(e),t}function p9(e,t=!1){for(let n of f9.keys()){let r=parseInt(n,10);(r===e||!t&&r>e)&&f9.delete(n)}}function Dle(e){return typeof e==`string`||e&&typeof e==`object`}function m9(e){return typeof e==`string`||typeof e==`symbol`}function Ole(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&n9(e)):[r&&n9(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function kle(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=B7(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function g9(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function _9(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(U7(4,{from:n,to:t})):e instanceof Error?c(e):Dle(e)?c(U7(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function v9(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(t===`beforeRouteEnter`||o.instances[e]){if(I7(s)){let c=(s.__vccOpts||s)[t];c&&a.push(_9(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Xce(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&_9(c,n,r,o,e,i)()}))}}}return a}function Ale(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oo9(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>o9(e,s))||i.push(s))}return[n,r,i]}var jle=()=>location.protocol+`//`+location.host;function y9(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),a9(n,``)}return a9(n,e)+r+i}function Mle(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=y9(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){let{history:e}=window;e.state&&e.replaceState(L7({},e.state,{scroll:u9()}),``)}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),{pauseListeners:c,listen:l,destroy:d}}function b9(e,t,n,r=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:null}}function Nle(e){let{history:t,location:n}=window,r={value:y9(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:jle()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){let o=L7({},t.state,b9(i.value.back,e,i.value.forward,!0),n,{position:i.value.position});a(e,o,!0),p9(o.position,!0),r.value=e}function s(e,n){let o=L7({},i.value,t.state,{forward:e,scroll:u9()});a(o.current,o,!0),a(e,L7({},b9(r.value,e,null),{position:o.position+1},n),!1),p9(o.position),r.value=e}return{location:r,state:i,push:s,replace:o}}function Ple(e){e=ble(e);let t=Nle(e),n=Mle(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=L7({location:``,base:e,go:r,createHref:Sle.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var Fle={type:0,value:``},Ile=/[a-zA-Z0-9_]/;function Lle(e){if(!e)return[[]];if(e===`/`)return[[Fle]];if(!F7(e))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===80?1:-1:0}function S9(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Hle={strict:!1,end:!0,sensitive:!1};function Ule(e,t,n){let r=L7(Ble(Lle(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Wle(e,t){let n=[],r=new Map;t=V7(Hle,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=T9(e);s.aliasOf=r&&r.record;let l=V7(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(T9(L7({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&!F7(u)){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Ule(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!E9(d)&&o(e.name)),D9(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:z7}function o(e){if(m9(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=qle(e,n);n.splice(t,0,e),e.record.name&&!E9(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw U7(1,{location:e});s=i.record.name,a=L7(w9(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&w9(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw U7(1,{location:e,currentLocation:t});s=i.record.name,a=L7({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Kle(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function w9(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function T9(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Gle(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Gle(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function E9(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Kle(e){return e.reduce((e,t)=>L7(e,t.meta),{})}function qle(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;S9(e,t[i])<0?r=i:n=i+1}let i=Jle(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Jle(e){let t=e;for(;t=t.parent;)if(D9(t)&&S9(e,t)===0)return t}function D9({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function O9(e){let t=tr(K7),n=tr(q7),r=G(()=>{let n=fn(e.to);return t.resolve(n)}),i=G(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(o9.bind(null,i));if(o>-1)return o;let s=k9(e[t-2]);return t>1&&k9(i)===s&&a[a.length-1].path!==s?a.findIndex(o9.bind(null,e[t-2])):o}),a=G(()=>i.value>-1&&Qle(n.params,r.value.params)),o=G(()=>i.value>-1&&i.value===n.matched.length-1&&s9(n.params,r.value.params));function s(n={}){if(Zle(n)){let n=t[fn(e.replace)?`replace`:`push`](fn(e.to)).catch(z7);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:G(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function Yle(e){return e.length===1?e[0]:e}var Xle=U({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:O9,setup(e,{slots:t}){let n=Yt(O9(e)),{options:r}=tr(K7),i=G(()=>({[A9(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[A9(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&Yle(t.default(n));return e.custom?r:Oo(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function Zle(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Qle(e,t){for(let n in t){let r=t[n],i=e[n];if(B7(r)){if(!B7(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}else if(r!==i)return!1}return!0}function k9(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var A9=(e,t,n)=>e??t??n,$le=U({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=tr(J7),i=G(()=>e.route||r.value),a=tr(G7,0),o=G(()=>{let e=fn(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),s=G(()=>i.value.matched[o.value]);er(G7,G(()=>o.value+1)),er(Zce,s),er(J7,i);let c=new Set;er(Qce,c);let l=B(),u=l9,{app:d}=fo().appContext;return H(()=>[l.value,s.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!o9(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=s.value,f=o&&o.components[a];if(!f)return j9(n.default,{Component:f,route:r});let p=o.props[a],m=p?p===!0?r.params:typeof p==`function`?p(r):p:null,h=e=>{e.component.isUnmounted&&(o.instances[a]=null)},g=e=>zn(()=>{if(u===r||i.value!==r||e.el.getRootNode()!==d._container.getRootNode())return;let t=u;u=r;for(let e of c)e(r,t)}),_=Oo(f,L7({},m,t,{onVnodeUnmounted:h,onVnodeMounted:g,onVnodeUpdated:g,ref:l}));return j9(n.default,{Component:_,route:r})||_}}});function j9(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var eue=$le;function tue(e){let t=e.matcher||Wle(e.routes,e),n=e.parseQuery||Ole,r=e.stringifyQuery||h9,i=e.history,a=g9(),o=g9(),s=g9(),c=V(l9),l=V(0),u=l9;Y7&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let d=R7.bind(null,e=>``+e),f=R7.bind(null,ple),p=R7.bind(null,r9);function m(e,n){let r,i;m9(e)?(r=t.getRecordMatcher(e),i=n):i=e;let a=t.addRoute(i,r);return l.value++,()=>{a(),l.value++}}function h(e){let n=t.getRecordMatcher(e);n&&(t.removeRoute(n),l.value++)}function g(){t.clearRoutes(),l.value++}function _(){return t.getRoutes().map(e=>e.record)}function v(e){return!!t.getRecordMatcher(e)}function y(e,a){if(l.value,typeof e==`string`){a||=e.startsWith(`/`)?l9:c.value;let r=i9(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return L7(r,o,{params:p(o.params),redirectedFrom:void 0,href:s})}a=L7({},a||(e.path!=null&&e.path.startsWith(`/`)&&!(`name`in e&&e.name)?l9:c.value));let o;if(e.path!=null)o=L7({},e,{path:i9(n,e.path,a.path).path});else{let t=L7({},e.params);for(let e in t)t[e]??delete t[e];o=L7({},e,{params:f(t)}),a.params=f(a.params)}let s=t.resolve(o,a),u=e.hash||``;s.params=d(p(s.params));let m=gle(r,L7({},e,{hash:ule(u),path:s.path})),h=i.createHref(m);return L7({fullPath:m,hash:u,query:r===h9?kle(e.query):e.query||{}},s,{redirectedFrom:void 0,href:h})}function b(e){return typeof e==`string`?i9(n,e,c.value.path):L7({},e)}function x(e,t){if(u!==e)return U7(8,{from:t,to:e})}function S(e){return T(e)}function C(e){return S(L7(b(e),{replace:!0}))}function w(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=b(i):{path:i},i.params={}),L7({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=u=y(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,l=w(n,i);if(l)return T(L7(b(l),{state:typeof l==`object`?L7({},a,l.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&_le(r,i,n)&&(f=U7(16,{to:d,from:i}),ee(i,i,!0,!1)),(f?Promise.resolve(f):O(d,i)).catch(e=>W7(e)?W7(e,2)?e:R(e):I(e,d,i)).then(e=>{if(e){if(W7(e,2))return T(L7({replace:s},b(e.to),{state:typeof e.to==`object`?L7({},a,e.to.state):a,force:o}),t||d)}else e=A(d,i,!0,s,a);return k(d,i,e),e})}function E(e,t){let n=x(e,t);return n?Promise.reject(n):Promise.resolve()}function D(e){let t=z.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function O(e,t){let n,[r,i,s]=Ale(e,t);n=v9(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(_9(r,e,t))});let c=E.bind(null,e,t);return n.push(c),ie(n).then(()=>{n=[];for(let r of a.list())n.push(_9(r,e,t));return n.push(c),ie(n)}).then(()=>{n=v9(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(_9(r,e,t))});return n.push(c),ie(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter){if(B7(r.beforeEnter))for(let i of r.beforeEnter)n.push(_9(i,e,t));else n.push(_9(r.beforeEnter,e,t))}return n.push(c),ie(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=v9(s,`beforeRouteEnter`,e,t,D),n.push(c),ie(n))).then(()=>{n=[];for(let r of o.list())n.push(_9(r,e,t));return n.push(c),ie(n)}).catch(e=>W7(e,8)?e:Promise.reject(e))}function k(e,t,n){s.list().forEach(r=>D(()=>r(e,t,n)))}function A(e,t,n,r,a){let o=x(e,t);if(o)return o;let s=t===l9,l=Y7?history.state:{};n&&(r||s?i.replace(e.fullPath,L7({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,ee(e,t,n,s),R()}let j;function M(){j||=i.listen((e,t,n)=>{if(!re.listening)return;let r=y(e),a=w(r,re.currentRoute.value);if(a){T(L7(a,{replace:!0,force:!0}),r).catch(z7);return}u=r;let o=c.value;Y7&&n.delta&&Tle(d9(o.fullPath,n.delta)),O(r,o).catch(e=>W7(e,12)?e:W7(e,2)?(T(L7(b(e.to),{force:!0}),r).then(e=>{W7(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(z7),Promise.reject()):(n.delta&&i.go(-n.delta,!1),I(e,r,o))).then(e=>{e||=A(r,o,!1),e&&(n.delta&&!W7(e,8)?i.go(-n.delta,!1):n.type===`pop`&&W7(e,20)&&i.go(-1,!1)),k(r,o,e)}).catch(z7)})}let N=g9(),P=g9(),F;function I(e,t,n){R(e);let r=P.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function L(){return F&&c.value!==l9?Promise.resolve():new Promise((e,t)=>{N.add([e,t])})}function R(e){return F||(F=!e,M(),N.list().forEach(([t,n])=>e?n(e):t()),N.reset()),e}function ee(t,n,r,i){let{scrollBehavior:a}=e;if(!Y7||!a)return Promise.resolve();let o=!r&&Ele(d9(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return zn().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&wle(e)).catch(e=>t===c.value&&I(e,t,n))}let te=e=>i.go(e),ne,z=new Set,re={currentRoute:c,listening:!0,addRoute:m,removeRoute:h,clearRoutes:g,hasRoute:v,getRoutes:_,resolve:y,options:e,push:S,replace:C,go:te,back:()=>te(-1),forward:()=>te(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:P.add,isReady:L,install(e){e.component(`RouterLink`,Xle),e.component(`RouterView`,eue),e.config.globalProperties.$router=re,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>fn(c)}),Y7&&!ne&&c.value===l9&&(ne=!0,S(i.location).catch(e=>{}));let t={};for(let e in l9)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(K7,re),e.provide(q7,Xt(t)),e.provide(J7,c);let n=e.unmount;z.add(e),e.unmount=function(){z.delete(e),z.size<1&&(u=l9,j&&j(),j=null,c.value=l9,ne=!1,F=!1),n()}}};function ie(e){return e.reduce((e,t)=>e.then(()=>D(t)),Promise.resolve())}return re}var nue=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,rue=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,iue=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function aue(e,t){if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t)oue(e);else return t}function oue(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function sue(e,t={}){if(typeof e!=`string`)return e;if(e[0]===`"`&&e[e.length-1]===`"`&&e.indexOf(`\\`)===-1)return e.slice(1,-1);let n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case`true`:return!0;case`false`:return!1;case`undefined`:return;case`null`:return null;case`nan`:return NaN;case`infinity`:return 1/0;case`-infinity`:return-1/0}if(!iue.test(e)){if(t.strict)throw SyntaxError(`[destr] Invalid JSON`);return e}try{if(nue.test(e)||rue.test(e)){if(t.strict)throw Error(`[destr] Possible prototype pollution`);return JSON.parse(e,aue)}return JSON.parse(e)}catch(n){if(t.strict)throw n;return e}}String.fromCharCode;var cue=/#/g,lue=/&/g,uue=/\//g,due=/=/g,M9=/\+/g,fue=/%5e/gi,pue=/%60/gi,mue=/%7c/gi,hue=/%20/gi;function gue(e){return encodeURI(``+e).replace(mue,`|`)}function N9(e){return gue(typeof e==`string`?e:JSON.stringify(e)).replace(M9,`%2B`).replace(hue,`+`).replace(cue,`%23`).replace(lue,`%26`).replace(pue,"`").replace(fue,`^`).replace(uue,`%2F`)}function P9(e){return N9(e).replace(due,`%3D`)}function F9(e=``){try{return decodeURIComponent(``+e)}catch{return``+e}}function _ue(e){return F9(e.replace(M9,` `))}function vue(e){return F9(e.replace(M9,` `))}function yue(e=``){let t=Object.create(null);e[0]===`?`&&(e=e.slice(1));for(let n of e.split(`&`)){let e=n.match(/([^=]+)=?(.*)/)||[];if(e.length<2)continue;let r=_ue(e[1]);if(r===`__proto__`||r===`constructor`)continue;let i=vue(e[2]||``);t[r]===void 0?t[r]=i:Array.isArray(t[r])?t[r].push(i):t[r]=[t[r],i]}return t}function bue(e,t){return(typeof t==`number`||typeof t==`boolean`)&&(t=String(t)),t?Array.isArray(t)?t.map(t=>`${P9(e)}=${N9(t)}`).join(`&`):`${P9(e)}=${N9(t)}`:P9(e)}function xue(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>bue(t,e[t])).filter(Boolean).join(`&`)}var Sue=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Cue=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,wue=/^([/\\]\s*){2,}[^/\\]/,Tue=/\/$|\/\?|\/#/,Eue=/^\.?\//;function I9(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?Sue.test(e):Cue.test(e)||(t.acceptRelative?wue.test(e):!1)}function L9(e=``,t){return t?Tue.test(e):e.endsWith(`/`)}function Due(e=``,t){if(!t)return(L9(e)?e.slice(0,-1):e)||`/`;if(!L9(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function Oue(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(L9(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function kue(e,t){if(jue(t)||I9(e))return e;let n=Due(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return Nue(n,e)}function Aue(e,t){let n=z9(e);return n.search=xue({...yue(n.search),...t}),Pue(n)}function jue(e){return!e||e===`/`}function Mue(e){return e&&e!==`/`}function Nue(e,...t){let n=e||``;for(let e of t.filter(e=>Mue(e)))if(n){let t=e.replace(Eue,``);n=Oue(n)+t}else n=e;return n}var R9=Symbol.for(`ufo:protocolRelative`);function z9(e=``,t){let n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){let[,e,t=``]=n;return{protocol:e.toLowerCase(),pathname:t,href:e+t,auth:``,host:``,search:``,hash:``}}if(!I9(e,{acceptRelative:!0}))return t?z9(t+e):B9(e);let[,r=``,i,a=``]=e.replace(/\\/g,`/`).match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[],[,o=``,s=``]=a.match(/([^#/?]*)(.*)?/)||[];r===`file:`&&(s=s.replace(/\/(?=[A-Za-z]:)/,``));let{pathname:c,search:l,hash:u}=B9(s);return{protocol:r.toLowerCase(),auth:i?i.slice(0,Math.max(0,i.length-1)):``,host:o,pathname:c,search:l,hash:u,[R9]:!r}}function B9(e=``){let[t=``,n=``,r=``]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Pue(e){let t=e.pathname||``,n=e.search?(e.search.startsWith(`?`)?``:`?`)+e.search:``,r=e.hash||``,i=e.auth?e.auth+`@`:``,a=e.host||``;return(e.protocol||e[R9]?(e.protocol||``)+`//`:``)+i+a+t+n+r}var V9=class extends Error{constructor(e,t){super(e,t),this.name=`FetchError`,t?.cause&&!this.cause&&(this.cause=t.cause)}};function Fue(e){let t=e.error?.message||e.error?.toString()||``,n=e.request?.method||e.options?.method||`GET`,r=e.request?.url||String(e.request)||`/`,i=new V9(`${`[${n}] ${JSON.stringify(r)}`}: ${e.response?`${e.response.status} ${e.response.statusText}`:``}${t?` ${t}`:``}`,e.error?{cause:e.error}:void 0);for(let t of[`request`,`options`,`response`])Object.defineProperty(i,t,{get(){return e[t]}});for(let[t,n]of[[`data`,`_data`],[`status`,`status`],[`statusCode`,`status`],[`statusText`,`statusText`],[`statusMessage`,`statusText`]])Object.defineProperty(i,t,{get(){return e.response&&e.response[n]}});return i}var Iue=new Set(Object.freeze([`PATCH`,`POST`,`PUT`,`DELETE`]));function H9(e=`GET`){return Iue.has(e.toUpperCase())}function Lue(e){if(e===void 0)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`||t===null?!0:t===`object`?Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name===`Object`||typeof e.toJSON==`function`:!1}var Rue=new Set([`image/svg`,`application/xml`,`application/xhtml`,`application/html`]),zue=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Bue(e=``){if(!e)return`json`;let t=e.split(`;`).shift()||``;return zue.test(t)?`json`:t===`text/event-stream`?`stream`:Rue.has(t)||t.startsWith(`text/`)?`text`:`blob`}function Vue(e,t,n,r){let i=Hue(t?.headers??e?.headers,n?.headers,r),a;return(n?.query||n?.params||t?.params||t?.query)&&(a={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:a,params:a,headers:i}}function Hue(e,t,n){if(!t)return new n(e);let r=new n(t);if(e)for(let[t,i]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(t,i);return r}async function U9(e,t){if(t){if(Array.isArray(t))for(let n of t)await n(e);else await t(e)}}var Uue=new Set([408,409,425,429,500,502,503,504]),Wue=new Set([101,204,205,304]);function W9(e={}){let{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function i(e){let t=e.error&&e.error.name===`AbortError`&&!e.options.timeout||!1;if(e.options.retry!==!1&&!t){let t;t=typeof e.options.retry==`number`?e.options.retry:+!H9(e.options.method);let n=e.response&&e.response.status||500;if(t>0&&(Array.isArray(e.options.retryStatusCodes)?e.options.retryStatusCodes.includes(n):Uue.has(n))){let n=typeof e.options.retryDelay==`function`?e.options.retryDelay(e):e.options.retryDelay||0;return n>0&&await new Promise(e=>setTimeout(e,n)),a(e.request,{...e.options,retry:t-1})}}let n=Fue(e);throw Error.captureStackTrace&&Error.captureStackTrace(n,a),n}let a=async function(a,o={}){let s={request:a,options:Vue(a,o,e.defaults,n),response:void 0,error:void 0};if(s.options.method&&(s.options.method=s.options.method.toUpperCase()),s.options.onRequest&&(await U9(s,s.options.onRequest),s.options.headers instanceof n||(s.options.headers=new n(s.options.headers||{}))),typeof s.request==`string`&&(s.options.baseURL&&(s.request=kue(s.request,s.options.baseURL)),s.options.query&&(s.request=Aue(s.request,s.options.query),delete s.options.query),`query`in s.options&&delete s.options.query,`params`in s.options&&delete s.options.params),s.options.body&&H9(s.options.method)){if(Lue(s.options.body)){let e=s.options.headers.get(`content-type`);typeof s.options.body!=`string`&&(s.options.body=e===`application/x-www-form-urlencoded`?new URLSearchParams(s.options.body).toString():JSON.stringify(s.options.body)),e||s.options.headers.set(`content-type`,`application/json`),s.options.headers.has(`accept`)||s.options.headers.set(`accept`,`application/json`)}else(`pipeTo`in s.options.body&&typeof s.options.body.pipeTo==`function`||typeof s.options.body.pipe==`function`)&&(`duplex`in s.options||(s.options.duplex=`half`))}let c;if(!s.options.signal&&s.options.timeout){let e=new r;c=setTimeout(()=>{let t=Error(`[TimeoutError]: The operation was aborted due to timeout`);t.name=`TimeoutError`,t.code=23,e.abort(t)},s.options.timeout),s.options.signal=e.signal}try{s.response=await t(s.request,s.options)}catch(e){return s.error=e,s.options.onRequestError&&await U9(s,s.options.onRequestError),await i(s)}finally{c&&clearTimeout(c)}if((s.response.body||s.response._bodyInit)&&!Wue.has(s.response.status)&&s.options.method!==`HEAD`){let e=(s.options.parseResponse?`json`:s.options.responseType)||Bue(s.response.headers.get(`content-type`)||``);switch(e){case`json`:{let e=await s.response.text(),t=s.options.parseResponse||sue;s.response._data=t(e);break}case`stream`:s.response._data=s.response.body||s.response._bodyInit;break;default:s.response._data=await s.response[e]()}}return s.options.onResponse&&await U9(s,s.options.onResponse),!s.options.ignoreResponseError&&s.response.status>=400&&s.response.status<600?(s.options.onResponseError&&await U9(s,s.options.onResponseError),await i(s)):s.response},o=async function(e,t){return(await a(e,t))._data};return o.raw=a,o.native=(...e)=>t(...e),o.create=(t={},n={})=>W9({...e,...n,defaults:{...e.defaults,...n.defaults,...t}}),o}var G9=(function(){if(typeof globalThis<`u`)return globalThis;if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global;throw Error(`unable to locate global object`)})(),Gue=G9.fetch?(...e)=>G9.fetch(...e):()=>Promise.reject(Error(`[ofetch] global.fetch is not supported!`)),Kue=G9.Headers,que=G9.AbortController,K9=W9({fetch:Gue,Headers:Kue,AbortController:que}).create({baseURL:`/api`,credentials:`include`}),q9=null,Jue=e=>{q9=e};async function J9(e,t={},n=!1){let r=q9?.token();try{return await K9(e,{...t,headers:{...t.headers,...r&&{Authorization:`Bearer ${r}`}}})}catch(r){if(r instanceof V9&&r.status===401&&!n&&q9){if(await q9.refresh())return J9(e,t,!0);q9.onExpired()}throw r}}var Y9=e=>e instanceof V9?e.data??{}:{};function Yue(e){if(e instanceof V9){if(!e.status)return`ارتباط با سرور برقرار نشد`;let t=Y9(e).message;return Array.isArray(t)?t.join(`، `):t||(e.status===413?`حجم فایل بیش از حد مجاز است`:e.status===429?`تعداد درخواست‌ها زیاد است؛ کمی بعد تلاش کنید`:`خطای سرور (${e.status})`)}return`خطای ناشناخته`}var X9=null,Z9=qse(`auth`,{state:()=>({token:``,user:null,ready:!1}),getters:{isAdmin:e=>e.user?.role===`ADMIN`},actions:{setSession(e){this.token=e.accessToken,this.user=e.user},clear(){this.token=``,this.user=null},async login(e){this.setSession(await K9(`/admin/auth/login`,{method:`POST`,body:e}))},refresh(){return X9??=K9(`/admin/auth/refresh`,{method:`POST`}).then(e=>(this.setSession(e),!0)).catch(()=>(this.clear(),!1)).finally(()=>{X9=null}),X9},async init(){this.ready||=(Jue({token:()=>this.token,refresh:()=>this.refresh(),onExpired:()=>{this.clear(),$9.push({name:`login`,query:{redirect:$9.currentRoute.value.fullPath}})}}),await this.refresh(),!0)},async logout(){await K9(`/admin/auth/logout`,{method:`POST`}).catch(()=>void 0),this.clear(),await $9.push({name:`login`})}}}),Xue=`modulepreload`,Zue=function(e){return`/`+e},Que={},$ue=function(e){return e.pathname.endsWith(`.css`)},ede=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},Q9=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=Zue(t,n);let r=s(t),i=$ue(r);return ede(Que,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:Xue,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},$9=tue({history:Ple(),routes:[{path:`/login`,name:`login`,component:()=>Q9(()=>import(`./LoginPage-D6HPXv4g.js`),__vite__mapDeps([0,1,2,3,4,5])),meta:{public:!0,title:`ورود`}},{path:`/`,component:()=>Q9(()=>import(`./AdminLayout-j5VE2EZ9.js`),__vite__mapDeps([6,1,2,3,7,8])),children:[{path:``,name:`dashboard`,component:()=>Q9(()=>import(`./DashboardPage-Do-v_tLH.js`),__vite__mapDeps([9,1,2,7,10,11])),meta:{title:`داشبورد`}},{path:`products`,name:`products`,component:()=>Q9(()=>import(`./ProductsPage-CVHBMUNz.js`),__vite__mapDeps([12,1,2,13])),meta:{title:`محصولات`}},{path:`products/new`,name:`product-new`,component:()=>Q9(()=>import(`./ProductEditPage-DTSEsrWG.js`),__vite__mapDeps([14,1,2,7,10,11,4,15,16])),meta:{title:`محصول جدید`}},{path:`products/:id`,name:`product-edit`,component:()=>Q9(()=>import(`./ProductEditPage-DTSEsrWG.js`),__vite__mapDeps([14,1,2,7,10,11,4,15,16])),meta:{title:`ویرایش محصول`}},{path:`categories`,name:`categories`,component:()=>Q9(()=>import(`./CategoriesPage-DSZGpYF5.js`),__vite__mapDeps([17,1,2,7,10,11])),meta:{title:`دسته‌بندی‌ها`}},{path:`categories/new`,name:`category-new`,component:()=>Q9(()=>import(`./CategoryEditPage-B4VYwreC.js`),__vite__mapDeps([18,1,2,10,11,4,19,15,16])),meta:{title:`دسته جدید`}},{path:`categories/:id`,name:`category-edit`,component:()=>Q9(()=>import(`./CategoryEditPage-B4VYwreC.js`),__vite__mapDeps([18,1,2,10,11,4,19,15,16])),meta:{title:`ویرایش دسته`}},{path:`sections`,name:`sections`,component:()=>Q9(()=>import(`./SectionsPage-Da2RoCd0.js`),__vite__mapDeps([20,1,2,7,10,11])),meta:{title:`بخش‌های سایت`}},{path:`sections/:key`,name:`section-edit`,component:()=>Q9(()=>import(`./SectionEditPage-BfSd3Uov.js`),__vite__mapDeps([21,1,2,7,10,11,4,19,15])),meta:{title:`ویرایش بخش`}},{path:`messages`,name:`messages`,component:()=>Q9(()=>import(`./MessagesPage-Bb_X9ABq.js`),__vite__mapDeps([22,1,2,7,10,11])),meta:{title:`پیام‌های تماس`}},{path:`media`,name:`media`,component:()=>Q9(()=>import(`./MediaPage-DnfskIVE.js`),__vite__mapDeps([23,1,2,7,10,11])),meta:{title:`کتابخانه رسانه`}},{path:`users`,name:`users`,component:()=>Q9(()=>import(`./UsersPage-C15bNN1T.js`),__vite__mapDeps([24,1,2,7,10,11,4])),meta:{title:`کاربران`,roles:[`ADMIN`]}},{path:`profile`,name:`profile`,component:()=>Q9(()=>import(`./ProfilePage-DxhVPJ4c.js`),__vite__mapDeps([25,1,2,10,11,4])),meta:{title:`حساب کاربری`}}]},{path:`/:pathMatch(.*)*`,redirect:`/`}]});$9.beforeEach(async e=>{let t=Z9();return await t.init(),e.meta.public?t.user&&e.name===`login`?{name:`dashboard`}:!0:t.user?e.meta.roles&&!e.meta.roles.includes(t.user.role)?{name:`dashboard`}:!0:{name:`login`,query:{redirect:e.fullPath}}}),$9.afterEach(e=>{document.title=e.meta.title?`${e.meta.title} | پنل ایمن پیشگامان`:`پنل ایمن پیشگامان`}),j7(Wce()),rc(Yce).use(Vse()).use($9).use(Nse).mount(`#app`);export{u7 as $,wce as A,fi as At,Yse as B,je as Bt,Rce as C,$r as Ct,sce as D,gi as Dt,tce as E,er as Et,Ice as F,Yt as Ft,pce as G,h7 as H,g7 as I,B as It,C7 as J,lce as K,_7 as L,fn as Lt,Jse as M,H as Mt,Dce as N,Zn as Nt,bce as O,aee as Ot,Ace as P,cn as Pt,oce as Q,Oce as R,Se as Rt,Ece as S,ni as St,jce as T,Ra as Tt,cce as U,gce as V,Zse as W,fce as X,_ce as Y,xce as Z,Cce as _,U as _t,ele as a,y7 as at,Qse as b,lee as bt,Hce as c,Ma as ct,A7 as d,Ua as dt,vce as et,dce as f,eo as ft,l7 as g,W as gt,ice as h,Qa as ht,Yue as i,nce as it,$se as j,Vi as jt,mce as k,ui as kt,Bce as l,G as lt,yce as m,$a as mt,J9 as n,ace as nt,$ce as o,_W as ot,uce as p,uee as pt,w7 as q,Y9 as r,Sce as rt,Vce as s,$s as st,Z9 as t,hce as tt,j7 as u,Ja as ut,c7 as v,Oo as vt,Fce as w,ri as wt,v7 as x,zn as xt,rce as y,tr as yt,s7 as z,_e as zt}; \ No newline at end of file diff --git a/apps/admin/dist/index.html b/apps/admin/dist/index.html index 903a7a0..ca24b91 100644 --- a/apps/admin/dist/index.html +++ b/apps/admin/dist/index.html @@ -6,7 +6,7 @@ پنل مدیریت ایمن پیشگامان - + diff --git a/apps/api/.output/dist/chunks/chunk-6UPY3HEI.js b/apps/api/.output/dist/chunks/chunk-6UPY3HEI.js new file mode 100644 index 0000000..b95cda9 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-6UPY3HEI.js @@ -0,0 +1,9040 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + __commonJS, + __esm, + __export, + __name, + __toESM +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/chunked-blob-reader/chunked-blob-reader.js +async function blobReader(blob, onChunk, chunkSize = 1024 * 1024) { + const size = blob.size; + let totalBytesRead = 0; + while (totalBytesRead < size) { + const slice = blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)); + onChunk(new Uint8Array(await slice.arrayBuffer())); + totalBytesRead += slice.size; + } +} +var init_chunked_blob_reader = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/chunked-blob-reader/chunked-blob-reader.js"() { + __name(blobReader, "blobReader"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-blob-browser/blobHasher.js +var blobHasher; +var init_blobHasher = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-blob-browser/blobHasher.js"() { + init_chunked_blob_reader(); + blobHasher = /* @__PURE__ */ __name(async function blobHasher2(hashCtor, blob) { + const hash = new hashCtor(); + await blobReader(blob, (chunk) => { + hash.update(chunk); + }); + return hash.digest(); + }, "blobHasher"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/is-array-buffer/is-array-buffer.js +var isArrayBuffer; +var init_is_array_buffer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/is-array-buffer/is-array-buffer.js"() { + isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-buffer-from/buffer-from.js +var fromArrayBuffer, fromString; +var init_buffer_from = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-buffer-from/buffer-from.js"() { + init_is_array_buffer(); + fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); + }, "fromArrayBuffer"); + fromString = /* @__PURE__ */ __name((input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); + }, "fromString"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/fromBase64.js +var BASE64_REGEX, fromBase64; +var init_fromBase64 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/fromBase64.js"() { + init_buffer_from(); + BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/; + fromBase64 = /* @__PURE__ */ __name((input) => { + if (input.length * 3 % 4 !== 0) { + throw new TypeError(`Incorrect padding on base64 string.`); + } + if (!BASE64_REGEX.exec(input)) { + throw new TypeError(`Invalid base64 string.`); + } + const buffer = fromString(input, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); + }, "fromBase64"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/fromUtf8.js +var fromUtf8; +var init_fromUtf8 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/fromUtf8.js"() { + init_buffer_from(); + fromUtf8 = /* @__PURE__ */ __name((input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); + }, "fromUtf8"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/toBase64.js +var toBase64; +var init_toBase64 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/toBase64.js"() { + init_buffer_from(); + init_fromUtf8(); + toBase64 = /* @__PURE__ */ __name((_input) => { + let input; + if (typeof _input === "string") { + input = fromUtf8(_input); + } else { + input = _input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("base64"); + }, "toBase64"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/blob/Uint8ArrayBlobAdapter.js +function bindUint8ArrayBlobAdapter(toUtf83, fromUtf83, toBase643, fromBase642) { + return class Uint8ArrayBlobAdapter2 extends Uint8Array { + static { + __name(this, "Uint8ArrayBlobAdapter"); + } + static fromString(source, encoding = "utf-8") { + if (typeof source === "string") { + if (encoding === "base64") { + return Uint8ArrayBlobAdapter2.mutate(fromBase642(source)); + } + return Uint8ArrayBlobAdapter2.mutate(fromUtf83(source)); + } + throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`); + } + static mutate(source) { + Object.setPrototypeOf(source, Uint8ArrayBlobAdapter2.prototype); + return source; + } + transformToString(encoding = "utf-8") { + if (encoding === "base64") { + return toBase643(this); + } + return toUtf83(this); + } + }; +} +var init_Uint8ArrayBlobAdapter = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/blob/Uint8ArrayBlobAdapter.js"() { + __name(bindUint8ArrayBlobAdapter, "bindUint8ArrayBlobAdapter"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.js +var toUtf8; +var init_toUtf8 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.js"() { + init_buffer_from(); + toUtf8 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); + }, "toUtf8"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/uuid/v4.js +function bindV4(getRandomValues2) { + if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") { + return () => crypto.randomUUID(); + } + return () => { + const rnds = new Uint8Array(16); + getRandomValues2(rnds); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + return decimalToHex[rnds[0]] + decimalToHex[rnds[1]] + decimalToHex[rnds[2]] + decimalToHex[rnds[3]] + "-" + decimalToHex[rnds[4]] + decimalToHex[rnds[5]] + "-" + decimalToHex[rnds[6]] + decimalToHex[rnds[7]] + "-" + decimalToHex[rnds[8]] + decimalToHex[rnds[9]] + "-" + decimalToHex[rnds[10]] + decimalToHex[rnds[11]] + decimalToHex[rnds[12]] + decimalToHex[rnds[13]] + decimalToHex[rnds[14]] + decimalToHex[rnds[15]]; + }; +} +var decimalToHex; +var init_v4 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/uuid/v4.js"() { + decimalToHex = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); + __name(bindV4, "bindV4"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js +var copyDocumentWithTransform; +var init_copyDocumentWithTransform = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js"() { + copyDocumentWithTransform = /* @__PURE__ */ __name((source, _schemaRef, _transform = (_) => _) => source, "copyDocumentWithTransform"); + } +}); + +// ../../node_modules/.pnpm/@smithy+types@4.19.0/node_modules/@smithy/types/dist-cjs/index.js +var require_dist_cjs = __commonJS({ + "../../node_modules/.pnpm/@smithy+types@4.19.0/node_modules/@smithy/types/dist-cjs/index.js"(exports) { + var HttpAuthLocation; + (function(HttpAuthLocation2) { + HttpAuthLocation2["HEADER"] = "header"; + HttpAuthLocation2["QUERY"] = "query"; + })(HttpAuthLocation || (HttpAuthLocation = {})); + var HttpApiKeyAuthLocation; + (function(HttpApiKeyAuthLocation2) { + HttpApiKeyAuthLocation2["HEADER"] = "header"; + HttpApiKeyAuthLocation2["QUERY"] = "query"; + })(HttpApiKeyAuthLocation || (HttpApiKeyAuthLocation = {})); + var EndpointURLScheme2; + (function(EndpointURLScheme3) { + EndpointURLScheme3["HTTP"] = "http"; + EndpointURLScheme3["HTTPS"] = "https"; + })(EndpointURLScheme2 || (EndpointURLScheme2 = {})); + var AlgorithmId2; + (function(AlgorithmId3) { + AlgorithmId3["MD5"] = "md5"; + AlgorithmId3["CRC32"] = "crc32"; + AlgorithmId3["CRC32C"] = "crc32c"; + AlgorithmId3["SHA1"] = "sha1"; + AlgorithmId3["SHA256"] = "sha256"; + })(AlgorithmId2 || (AlgorithmId2 = {})); + var getChecksumConfiguration2 = /* @__PURE__ */ __name((runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== void 0) { + checksumAlgorithms.push({ + algorithmId: /* @__PURE__ */ __name(() => AlgorithmId2.SHA256, "algorithmId"), + checksumConstructor: /* @__PURE__ */ __name(() => runtimeConfig.sha256, "checksumConstructor") + }); + } + if (runtimeConfig.md5 != void 0) { + checksumAlgorithms.push({ + algorithmId: /* @__PURE__ */ __name(() => AlgorithmId2.MD5, "algorithmId"), + checksumConstructor: /* @__PURE__ */ __name(() => runtimeConfig.md5, "checksumConstructor") + }); + } + return { + addChecksumAlgorithm(algo) { + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + } + }; + }, "getChecksumConfiguration"); + var resolveChecksumRuntimeConfig2 = /* @__PURE__ */ __name((clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; + }, "resolveChecksumRuntimeConfig"); + var getDefaultClientConfiguration2 = /* @__PURE__ */ __name((runtimeConfig) => { + return getChecksumConfiguration2(runtimeConfig); + }, "getDefaultClientConfiguration"); + var resolveDefaultRuntimeConfig2 = /* @__PURE__ */ __name((config) => { + return resolveChecksumRuntimeConfig2(config); + }, "resolveDefaultRuntimeConfig"); + var FieldPosition; + (function(FieldPosition2) { + FieldPosition2[FieldPosition2["HEADER"] = 0] = "HEADER"; + FieldPosition2[FieldPosition2["TRAILER"] = 1] = "TRAILER"; + })(FieldPosition || (FieldPosition = {})); + var SMITHY_CONTEXT_KEY3 = "__smithy_context"; + var IniSectionType4; + (function(IniSectionType5) { + IniSectionType5["PROFILE"] = "profile"; + IniSectionType5["SSO_SESSION"] = "sso-session"; + IniSectionType5["SERVICES"] = "services"; + })(IniSectionType4 || (IniSectionType4 = {})); + var RequestHandlerProtocol; + (function(RequestHandlerProtocol2) { + RequestHandlerProtocol2["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol2["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol2["TDS_8_0"] = "tds/8.0"; + })(RequestHandlerProtocol || (RequestHandlerProtocol = {})); + exports.AlgorithmId = AlgorithmId2; + exports.EndpointURLScheme = EndpointURLScheme2; + exports.FieldPosition = FieldPosition; + exports.HttpApiKeyAuthLocation = HttpApiKeyAuthLocation; + exports.HttpAuthLocation = HttpAuthLocation; + exports.IniSectionType = IniSectionType4; + exports.RequestHandlerProtocol = RequestHandlerProtocol; + exports.SMITHY_CONTEXT_KEY = SMITHY_CONTEXT_KEY3; + exports.getDefaultClientConfiguration = getDefaultClientConfiguration2; + exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig2; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/getSmithyContext.js +var import_types, getSmithyContext; +var init_getSmithyContext = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/getSmithyContext.js"() { + import_types = __toESM(require_dist_cjs()); + getSmithyContext = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), "getSmithyContext"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/hasOwn.js +function hasOwn(o, k) { + return Object.prototype.hasOwnProperty.call(o, k); +} +var init_hasOwn = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/hasOwn.js"() { + __name(hasOwn, "hasOwn"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/httpRequest.js +function cloneQuery(query) { + return Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param + }; + }, {}); +} +var HttpRequest; +var init_httpRequest = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/httpRequest.js"() { + HttpRequest = class _HttpRequest { + static { + __name(this, "HttpRequest"); + } + method; + protocol; + hostname; + port; + path; + query; + headers; + username; + password; + fragment; + body; + constructor(options) { + this.method = options.method || "GET"; + this.hostname = options.hostname || "localhost"; + this.port = options.port; + this.query = options.query || {}; + this.headers = options.headers || {}; + this.body = options.body; + this.protocol = options.protocol ? options.protocol.slice(-1) !== ":" ? `${options.protocol}:` : options.protocol : "https:"; + this.path = options.path ? options.path.charAt(0) !== "/" ? `/${options.path}` : options.path : "/"; + this.username = options.username; + this.password = options.password; + this.fragment = options.fragment; + } + static clone(request) { + const cloned = new _HttpRequest({ + ...request, + headers: { ...request.headers } + }); + if (cloned.query) { + cloned.query = cloneQuery(cloned.query); + } + return cloned; + } + static isInstance(request) { + if (!request) { + return false; + } + const req = request; + return "method" in req && "protocol" in req && "hostname" in req && "path" in req && typeof req["query"] === "object" && typeof req["headers"] === "object"; + } + clone() { + return _HttpRequest.clone(this); + } + }; + __name(cloneQuery, "cloneQuery"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/httpResponse.js +var HttpResponse; +var init_httpResponse = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/httpResponse.js"() { + HttpResponse = class { + static { + __name(this, "HttpResponse"); + } + statusCode; + reason; + headers; + body; + constructor(options) { + this.statusCode = options.statusCode; + this.reason = options.reason; + this.headers = options.headers || {}; + this.body = options.body; + } + static isInstance(response) { + if (!response) + return false; + const resp = response; + return typeof resp.statusCode === "number" && typeof resp.headers === "object"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/isValidHostLabel.js +var VALID_HOST_LABEL_REGEX, isValidHostLabel; +var init_isValidHostLabel = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/isValidHostLabel.js"() { + VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`); + isValidHostLabel = /* @__PURE__ */ __name((value, allowSubDomains = false) => { + if (!allowSubDomains) { + return VALID_HOST_LABEL_REGEX.test(value); + } + const labels = value.split("."); + for (const label of labels) { + if (!isValidHostLabel(label)) { + return false; + } + } + return true; + }, "isValidHostLabel"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/isValidHostname.js +function isValidHostname(hostname) { + const hostPattern = /^[a-z0-9][a-z0-9.-]*[a-z0-9]$/; + return hostPattern.test(hostname); +} +var init_isValidHostname = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/isValidHostname.js"() { + __name(isValidHostname, "isValidHostname"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/normalizeProvider.js +var normalizeProvider; +var init_normalizeProvider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/normalizeProvider.js"() { + normalizeProvider = /* @__PURE__ */ __name((input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; + }, "normalizeProvider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/parseQueryString.js +function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } else if (Array.isArray(query[key])) { + query[key].push(value); + } else { + query[key] = [query[key], value]; + } + } + } + return query; +} +var init_parseQueryString = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/parseQueryString.js"() { + __name(parseQueryString, "parseQueryString"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/parseUrl.js +var parseUrl; +var init_parseUrl = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/parseUrl.js"() { + init_parseQueryString(); + parseUrl = /* @__PURE__ */ __name((url) => { + if (typeof url === "string") { + return parseUrl(new URL(url)); + } + const { hostname, pathname, port, protocol, search } = url; + let query; + if (search) { + query = parseQueryString(search); + } + return { + hostname, + port: port ? parseInt(port) : void 0, + protocol, + path: pathname, + query + }; + }, "parseUrl"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/toEndpointV1.js +var toEndpointV1; +var init_toEndpointV1 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/toEndpointV1.js"() { + init_hasOwn(); + init_parseUrl(); + toEndpointV1 = /* @__PURE__ */ __name((endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const name in endpoint.headers) { + if (!hasOwn(endpoint.headers, name)) + continue; + v1Endpoint.headers[name.toLowerCase()] = endpoint.headers[name].join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return parseUrl(endpoint); + }, "toEndpointV1"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/index.js +var init_transport = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/transport/index.js"() { + init_getSmithyContext(); + init_hasOwn(); + init_httpRequest(); + init_httpResponse(); + init_isValidHostLabel(); + init_isValidHostname(); + init_normalizeProvider(); + init_parseQueryString(); + init_parseUrl(); + init_toEndpointV1(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +var parseBoolean, expectBoolean, expectNumber, MAX_FLOAT, expectFloat32, expectLong, expectInt, expectInt32, expectShort, expectByte, expectSizedInt, castInt, expectNonNull, expectObject, expectString, expectUnion, strictParseDouble, strictParseFloat, strictParseFloat32, NUMBER_REGEX, parseNumber, limitedParseDouble, handleFloat, limitedParseFloat, limitedParseFloat32, parseFloatString, strictParseLong, strictParseInt, strictParseInt32, strictParseShort, strictParseByte, stackTraceWarning, logger; +var init_parse_utils = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js"() { + init_transport(); + parseBoolean = /* @__PURE__ */ __name((value) => { + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new Error(`Unable to parse boolean value "${value}"`); + } + }, "parseBoolean"); + expectBoolean = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "number") { + if (value === 0 || value === 1) { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (value === 0) { + return false; + } + if (value === 1) { + return true; + } + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "false" || lower === "true") { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (lower === "false") { + return false; + } + if (lower === "true") { + return true; + } + } + if (typeof value === "boolean") { + return value; + } + throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`); + }, "expectBoolean"); + expectNumber = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "string") { + const parsed = parseFloat(value); + if (!Number.isNaN(parsed)) { + if (String(parsed) !== String(value)) { + logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`)); + } + return parsed; + } + } + if (typeof value === "number") { + return value; + } + throw new TypeError(`Expected number, got ${typeof value}: ${value}`); + }, "expectNumber"); + MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23)); + expectFloat32 = /* @__PURE__ */ __name((value) => { + const expected = expectNumber(value); + if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) { + if (Math.abs(expected) > MAX_FLOAT) { + throw new TypeError(`Expected 32-bit float, got ${value}`); + } + } + return expected; + }, "expectFloat32"); + expectLong = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (Number.isInteger(value) && !Number.isNaN(value)) { + return value; + } + throw new TypeError(`Expected integer, got ${typeof value}: ${value}`); + }, "expectLong"); + expectInt = expectLong; + expectInt32 = /* @__PURE__ */ __name((value) => expectSizedInt(value, 32), "expectInt32"); + expectShort = /* @__PURE__ */ __name((value) => expectSizedInt(value, 16), "expectShort"); + expectByte = /* @__PURE__ */ __name((value) => expectSizedInt(value, 8), "expectByte"); + expectSizedInt = /* @__PURE__ */ __name((value, size) => { + const expected = expectLong(value); + if (expected !== void 0 && castInt(expected, size) !== expected) { + throw new TypeError(`Expected ${size}-bit integer, got ${value}`); + } + return expected; + }, "expectSizedInt"); + castInt = /* @__PURE__ */ __name((value, size) => { + switch (size) { + case 32: + return Int32Array.of(value)[0]; + case 16: + return Int16Array.of(value)[0]; + case 8: + return Int8Array.of(value)[0]; + } + }, "castInt"); + expectNonNull = /* @__PURE__ */ __name((value, location) => { + if (value === null || value === void 0) { + if (location) { + throw new TypeError(`Expected a non-null value for ${location}`); + } + throw new TypeError("Expected a non-null value"); + } + return value; + }, "expectNonNull"); + expectObject = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "object" && !Array.isArray(value)) { + return value; + } + const receivedType = Array.isArray(value) ? "array" : typeof value; + throw new TypeError(`Expected object, got ${receivedType}: ${value}`); + }, "expectObject"); + expectString = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value === "string") { + return value; + } + if (["boolean", "number", "bigint"].includes(typeof value)) { + logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`)); + return String(value); + } + throw new TypeError(`Expected string, got ${typeof value}: ${value}`); + }, "expectString"); + expectUnion = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + const asObject = expectObject(value); + const setKeys = []; + for (const k in asObject) { + if (!hasOwn(asObject, k)) + continue; + if (asObject[k] != null) { + setKeys.push(k); + } + } + if (setKeys.length === 0) { + throw new TypeError(`Unions must have exactly one non-null member. None were found.`); + } + if (setKeys.length > 1) { + throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`); + } + return asObject; + }, "expectUnion"); + strictParseDouble = /* @__PURE__ */ __name((value) => { + if (typeof value == "string") { + return expectNumber(parseNumber(value)); + } + return expectNumber(value); + }, "strictParseDouble"); + strictParseFloat = strictParseDouble; + strictParseFloat32 = /* @__PURE__ */ __name((value) => { + if (typeof value == "string") { + return expectFloat32(parseNumber(value)); + } + return expectFloat32(value); + }, "strictParseFloat32"); + NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g; + parseNumber = /* @__PURE__ */ __name((value) => { + const matches = value.match(NUMBER_REGEX); + if (matches === null || matches[0].length !== value.length) { + throw new TypeError(`Expected real number, got implicit NaN`); + } + return parseFloat(value); + }, "parseNumber"); + limitedParseDouble = /* @__PURE__ */ __name((value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectNumber(value); + }, "limitedParseDouble"); + handleFloat = limitedParseDouble; + limitedParseFloat = limitedParseDouble; + limitedParseFloat32 = /* @__PURE__ */ __name((value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectFloat32(value); + }, "limitedParseFloat32"); + parseFloatString = /* @__PURE__ */ __name((value) => { + switch (value) { + case "NaN": + return NaN; + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + default: + throw new Error(`Unable to parse float value: ${value}`); + } + }, "parseFloatString"); + strictParseLong = /* @__PURE__ */ __name((value) => { + if (typeof value === "string") { + return expectLong(parseNumber(value)); + } + return expectLong(value); + }, "strictParseLong"); + strictParseInt = strictParseLong; + strictParseInt32 = /* @__PURE__ */ __name((value) => { + if (typeof value === "string") { + return expectInt32(parseNumber(value)); + } + return expectInt32(value); + }, "strictParseInt32"); + strictParseShort = /* @__PURE__ */ __name((value) => { + if (typeof value === "string") { + return expectShort(parseNumber(value)); + } + return expectShort(value); + }, "strictParseShort"); + strictParseByte = /* @__PURE__ */ __name((value) => { + if (typeof value === "string") { + return expectByte(parseNumber(value)); + } + return expectByte(value); + }, "strictParseByte"); + stackTraceWarning = /* @__PURE__ */ __name((message) => { + return String(new TypeError(message).stack || message).split("\n").slice(0, 5).filter((s) => !s.includes("stackTraceWarning")).join("\n"); + }, "stackTraceWarning"); + logger = { + warn: console.warn + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js +function dateToUtcString(date2) { + const year2 = date2.getUTCFullYear(); + const month = date2.getUTCMonth(); + const dayOfWeek = date2.getUTCDay(); + const dayOfMonthInt = date2.getUTCDate(); + const hoursInt = date2.getUTCHours(); + const minutesInt = date2.getUTCMinutes(); + const secondsInt = date2.getUTCSeconds(); + const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`; + const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`; + const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`; + const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`; + return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year2} ${hoursString}:${minutesString}:${secondsString} GMT`; +} +var DAYS, MONTHS, RFC3339, parseRfc3339DateTime, RFC3339_WITH_OFFSET, parseRfc3339DateTimeWithOffset, IMF_FIXDATE, RFC_850_DATE, ASC_TIME, parseRfc7231DateTime, parseEpochTimestamp, buildDate, parseTwoDigitYear, FIFTY_YEARS_IN_MILLIS, adjustRfc850Year, parseMonthByShortName, DAYS_IN_MONTH, validateDayOfMonth, isLeapYear, parseDateValue, parseMilliseconds, parseOffsetToMilliseconds, stripLeadingZeroes; +var init_date_utils = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js"() { + init_parse_utils(); + DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + __name(dateToUtcString, "dateToUtcString"); + RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/); + parseRfc3339DateTime = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match; + const year2 = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + return buildDate(year2, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + }, "parseRfc3339DateTime"); + RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}:\d{2})|[zZ])$/); + parseRfc3339DateTimeWithOffset = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339_WITH_OFFSET.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match; + const year2 = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + const date2 = buildDate(year2, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + if (offsetStr.toUpperCase() != "Z") { + date2.setTime(date2.getTime() - parseOffsetToMilliseconds(offsetStr)); + } + return date2; + }, "parseRfc3339DateTimeWithOffset"); + IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); + RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); + ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/); + parseRfc7231DateTime = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC-7231 date-times must be expressed as strings"); + } + let match = IMF_FIXDATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + match = RFC_850_DATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { + hours, + minutes, + seconds, + fractionalMilliseconds + })); + } + match = ASC_TIME.exec(value); + if (match) { + const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + throw new TypeError("Invalid RFC-7231 date-time value"); + }, "parseRfc7231DateTime"); + parseEpochTimestamp = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return void 0; + } + let valueAsDouble; + if (typeof value === "number") { + valueAsDouble = value; + } else if (typeof value === "string") { + valueAsDouble = strictParseDouble(value); + } else if (typeof value === "object" && value.tag === 1) { + valueAsDouble = value.value; + } else { + throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation"); + } + if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) { + throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics"); + } + return new Date(Math.round(valueAsDouble * 1e3)); + }, "parseEpochTimestamp"); + buildDate = /* @__PURE__ */ __name((year2, month, day, time2) => { + const adjustedMonth = month - 1; + validateDayOfMonth(year2, adjustedMonth, day); + return new Date(Date.UTC(year2, adjustedMonth, day, parseDateValue(time2.hours, "hour", 0, 23), parseDateValue(time2.minutes, "minute", 0, 59), parseDateValue(time2.seconds, "seconds", 0, 60), parseMilliseconds(time2.fractionalMilliseconds))); + }, "buildDate"); + parseTwoDigitYear = /* @__PURE__ */ __name((value) => { + const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear(); + const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value)); + if (valueInThisCentury < thisYear) { + return valueInThisCentury + 100; + } + return valueInThisCentury; + }, "parseTwoDigitYear"); + FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3; + adjustRfc850Year = /* @__PURE__ */ __name((input) => { + if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) { + return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds())); + } + return input; + }, "adjustRfc850Year"); + parseMonthByShortName = /* @__PURE__ */ __name((value) => { + const monthIdx = MONTHS.indexOf(value); + if (monthIdx < 0) { + throw new TypeError(`Invalid month: ${value}`); + } + return monthIdx + 1; + }, "parseMonthByShortName"); + DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + validateDayOfMonth = /* @__PURE__ */ __name((year2, month, day) => { + let maxDays = DAYS_IN_MONTH[month]; + if (month === 1 && isLeapYear(year2)) { + maxDays = 29; + } + if (day > maxDays) { + throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year2}: ${day}`); + } + }, "validateDayOfMonth"); + isLeapYear = /* @__PURE__ */ __name((year2) => { + return year2 % 4 === 0 && (year2 % 100 !== 0 || year2 % 400 === 0); + }, "isLeapYear"); + parseDateValue = /* @__PURE__ */ __name((value, type, lower, upper) => { + const dateVal = strictParseByte(stripLeadingZeroes(value)); + if (dateVal < lower || dateVal > upper) { + throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`); + } + return dateVal; + }, "parseDateValue"); + parseMilliseconds = /* @__PURE__ */ __name((value) => { + if (value === null || value === void 0) { + return 0; + } + return strictParseFloat32("0." + value) * 1e3; + }, "parseMilliseconds"); + parseOffsetToMilliseconds = /* @__PURE__ */ __name((value) => { + const directionStr = value[0]; + let direction = 1; + if (directionStr == "+") { + direction = 1; + } else if (directionStr == "-") { + direction = -1; + } else { + throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`); + } + const hour = Number(value.substring(1, 3)); + const minute = Number(value.substring(4, 6)); + return direction * (hour * 60 + minute) * 60 * 1e3; + }, "parseOffsetToMilliseconds"); + stripLeadingZeroes = /* @__PURE__ */ __name((value) => { + let idx = 0; + while (idx < value.length - 1 && value.charAt(idx) === "0") { + idx++; + } + if (idx === 0) { + return value; + } + return value.slice(idx); + }, "stripLeadingZeroes"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js +var LazyJsonString; +var init_lazy_json = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js"() { + LazyJsonString = /* @__PURE__ */ __name(function LazyJsonString2(val) { + const str = Object.assign(new String(val), { + deserializeJSON() { + return JSON.parse(String(val)); + }, + toString() { + return String(val); + }, + toJSON() { + return String(val); + } + }); + return str; + }, "LazyJsonString"); + LazyJsonString.from = (object) => { + if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) { + return object; + } else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) { + return LazyJsonString(String(object)); + } + return LazyJsonString(JSON.stringify(object)); + }; + LazyJsonString.fromObject = LazyJsonString.from; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js +function quoteHeader(part) { + if (part.includes(",") || part.includes('"')) { + part = `"${part.replace(/"/g, '\\"')}"`; + } + return part; +} +var init_quote_header = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js"() { + __name(quoteHeader, "quoteHeader"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js +function range(v, min, max) { + const _v = Number(v); + if (_v < min || _v > max) { + throw new Error(`Value ${_v} out of range [${min}, ${max}]`); + } +} +var ddd, mmm, time, date, year, RFC3339_WITH_OFFSET2, IMF_FIXDATE2, RFC_850_DATE2, ASC_TIME2, months, _parseEpochTimestamp, _parseRfc3339DateTimeWithOffset, _parseRfc7231DateTime; +var init_schema_date_utils = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js"() { + ddd = `(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?`; + mmm = `(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`; + time = `(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?`; + date = `(\\d?\\d)`; + year = `(\\d{4})`; + RFC3339_WITH_OFFSET2 = new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/); + IMF_FIXDATE2 = new RegExp(`^${ddd}, ${date} ${mmm} ${year} ${time} GMT$`); + RFC_850_DATE2 = new RegExp(`^${ddd}, ${date}-${mmm}-(\\d\\d) ${time} GMT$`); + ASC_TIME2 = new RegExp(`^${ddd} ${mmm} ( [1-9]|\\d\\d) ${time} ${year}$`); + months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + _parseEpochTimestamp = /* @__PURE__ */ __name((value) => { + if (value == null) { + return void 0; + } + let num = NaN; + if (typeof value === "number") { + num = value; + } else if (typeof value === "string") { + if (!/^-?\d*\.?\d+$/.test(value)) { + throw new TypeError(`parseEpochTimestamp - numeric string invalid.`); + } + num = Number.parseFloat(value); + } else if (typeof value === "object" && value.tag === 1) { + num = value.value; + } + if (isNaN(num) || Math.abs(num) === Infinity) { + throw new TypeError("Epoch timestamps must be valid finite numbers."); + } + return new Date(Math.round(num * 1e3)); + }, "_parseEpochTimestamp"); + _parseRfc3339DateTimeWithOffset = /* @__PURE__ */ __name((value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC3339 timestamps must be strings"); + } + const matches = RFC3339_WITH_OFFSET2.exec(value); + if (!matches) { + throw new TypeError(`Invalid RFC3339 timestamp format ${value}`); + } + const [, yearStr, monthStr, dayStr, hours, minutes, seconds, , ms, offsetStr] = matches; + range(monthStr, 1, 12); + range(dayStr, 1, 31); + range(hours, 0, 23); + range(minutes, 0, 59); + range(seconds, 0, 60); + const date2 = new Date(Date.UTC(Number(yearStr), Number(monthStr) - 1, Number(dayStr), Number(hours), Number(minutes), Number(seconds), Number(ms) ? Math.round(parseFloat(`0.${ms}`) * 1e3) : 0)); + date2.setUTCFullYear(Number(yearStr)); + if (offsetStr.toUpperCase() != "Z") { + const [, sign2, offsetH, offsetM] = /([+-])(\d\d):(\d\d)/.exec(offsetStr) || [void 0, "+", 0, 0]; + const scalar = sign2 === "-" ? 1 : -1; + date2.setTime(date2.getTime() + scalar * (Number(offsetH) * 60 * 60 * 1e3 + Number(offsetM) * 60 * 1e3)); + } + return date2; + }, "_parseRfc3339DateTimeWithOffset"); + _parseRfc7231DateTime = /* @__PURE__ */ __name((value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC7231 timestamps must be strings."); + } + let day; + let month; + let year2; + let hour; + let minute; + let second; + let fraction; + let matches; + if (matches = IMF_FIXDATE2.exec(value)) { + [, day, month, year2, hour, minute, second, fraction] = matches; + } else if (matches = RFC_850_DATE2.exec(value)) { + [, day, month, year2, hour, minute, second, fraction] = matches; + year2 = (Number(year2) + 1900).toString(); + } else if (matches = ASC_TIME2.exec(value)) { + [, month, day, hour, minute, second, fraction, year2] = matches; + } + if (year2 && second) { + const timestamp = Date.UTC(Number(year2), months.indexOf(month), Number(day), Number(hour), Number(minute), Number(second), fraction ? Math.round(parseFloat(`0.${fraction}`) * 1e3) : 0); + range(day, 1, 31); + range(hour, 0, 23); + range(minute, 0, 59); + range(second, 0, 60); + const date2 = new Date(timestamp); + date2.setUTCFullYear(Number(year2)); + return date2; + } + throw new TypeError(`Invalid RFC7231 date-time value ${value}.`); + }, "_parseRfc7231DateTime"); + __name(range, "range"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js +function splitEvery(value, delimiter, numDelimiters) { + if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) { + throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery."); + } + const segments = value.split(delimiter); + if (numDelimiters === 1) { + return segments; + } + const compoundSegments = []; + let currentSegment = ""; + for (let i = 0; i < segments.length; i++) { + if (currentSegment === "") { + currentSegment = segments[i]; + } else { + currentSegment += delimiter + segments[i]; + } + if ((i + 1) % numDelimiters === 0) { + compoundSegments.push(currentSegment); + currentSegment = ""; + } + } + if (currentSegment !== "") { + compoundSegments.push(currentSegment); + } + return compoundSegments; +} +var init_split_every = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js"() { + __name(splitEvery, "splitEvery"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js +var splitHeader; +var init_split_header = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js"() { + splitHeader = /* @__PURE__ */ __name((value) => { + const z = value.length; + const values = []; + let withinQuotes = false; + let prevChar = void 0; + let anchor = 0; + for (let i = 0; i < z; ++i) { + const char = value[i]; + switch (char) { + case `"`: + if (prevChar !== "\\") { + withinQuotes = !withinQuotes; + } + break; + case ",": + if (!withinQuotes) { + values.push(value.slice(anchor, i)); + anchor = i + 1; + } + break; + default: + } + prevChar = char; + } + values.push(value.slice(anchor)); + return values.map((v) => { + v = v.trim(); + const z2 = v.length; + if (z2 < 2) { + return v; + } + if (v[0] === `"` && v[z2 - 1] === `"`) { + v = v.slice(1, z2 - 1); + } + return v.replace(/\\"/g, '"'); + }); + }, "splitHeader"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js +function nv(input) { + return new NumericValue(String(input), "bigDecimal"); +} +var format, NumericValue; +var init_NumericValue = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js"() { + format = /^-?((0|[1-9]\d*)(\.\d+)?|\.\d+)([eE][+-]?\d+)?$/; + NumericValue = class _NumericValue { + static { + __name(this, "NumericValue"); + } + string; + type; + constructor(string, type) { + this.string = string; + this.type = type; + if (!format.test(string)) { + throw new Error(`@smithy/core/serde - NumericValue string must conform to the Smithy bigDecimal format. Received: "${string}"`); + } + } + toString() { + return this.string; + } + static [Symbol.hasInstance](object) { + if (!object || typeof object !== "object") { + return false; + } + const _nv = object; + return _NumericValue.prototype.isPrototypeOf(object) || _nv.type === "bigDecimal" && format.test(_nv.string); + } + }; + __name(nv, "nv"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-hex-encoding/hex-encoding.js +function fromHex(encoded) { + if (encoded.length % 2 !== 0) { + throw new Error("Hex encoded strings must have an even number length"); + } + const out = new Uint8Array(encoded.length / 2); + for (let i = 0; i < encoded.length; i += 2) { + const encodedByte = encoded.slice(i, i + 2).toLowerCase(); + if (encodedByte in HEX_TO_SHORT) { + out[i / 2] = HEX_TO_SHORT[encodedByte]; + } else { + throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`); + } + } + return out; +} +function toHex(bytes) { + let out = ""; + for (let i = 0; i < bytes.byteLength; i++) { + out += SHORT_TO_HEX[bytes[i]]; + } + return out; +} +var SHORT_TO_HEX, HEX_TO_SHORT; +var init_hex_encoding = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-hex-encoding/hex-encoding.js"() { + SHORT_TO_HEX = {}; + HEX_TO_SHORT = {}; + for (let i = 0; i < 256; i++) { + let encodedByte = i.toString(16).toLowerCase(); + if (encodedByte.length === 1) { + encodedByte = `0${encodedByte}`; + } + SHORT_TO_HEX[i] = encodedByte; + HEX_TO_SHORT[encodedByte] = i; + } + __name(fromHex, "fromHex"); + __name(toHex, "toHex"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-body-length/calculateBodyLength.js +import { ReadStream, fstatSync, lstatSync } from "node:fs"; +var calculateBodyLength; +var init_calculateBodyLength = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-body-length/calculateBodyLength.js"() { + calculateBodyLength = /* @__PURE__ */ __name((body) => { + if (!body) { + return 0; + } + if (typeof body === "string") { + return Buffer.byteLength(body); + } else if (typeof body.byteLength === "number") { + return body.byteLength; + } else if (typeof body.size === "number") { + return body.size; + } else if (typeof body.start === "number" && typeof body.end === "number") { + return body.end + 1 - body.start; + } else if (body instanceof ReadStream) { + if (body.path != null) { + return lstatSync(body.path).size; + } else if (typeof body.fd === "number") { + return fstatSync(body.fd).size; + } + } + throw new Error(`Body Length computation failed for ${body}`); + }, "calculateBodyLength"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js +var toUint8Array; +var init_toUint8Array = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js"() { + init_fromUtf8(); + toUint8Array = /* @__PURE__ */ __name((data) => { + if (data instanceof Uint8Array) { + return data; + } + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); + }, "toUint8Array"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js +function concatBytes(arrays, length) { + if (length === void 0) { + length = 0; + for (const bytes of arrays) { + length += bytes.byteLength; + } + } + const result = new Uint8Array(length); + let offset = 0; + for (const buf of arrays) { + result.set(buf, offset); + offset += buf.byteLength; + } + return result; +} +var init_concatBytes = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js"() { + __name(concatBytes, "concatBytes"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/deserializerMiddleware.js +var deserializerMiddleware, findHeader; +var init_deserializerMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/deserializerMiddleware.js"() { + init_transport(); + deserializerMiddleware = /* @__PURE__ */ __name((options, deserializer) => (next, context) => async (args) => { + const { response } = await next(args); + try { + const parsed = await deserializer(response, options); + return { + response, + output: parsed + }; + } catch (error2) { + Object.defineProperty(error2, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false + }); + if (!("$metadata" in error2)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error2.message += "\n " + hint; + } catch (ignored) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } else { + context.logger?.warn?.(hint); + } + } + if (typeof error2.$responseBodyText !== "undefined") { + if (error2.$response) { + error2.$response.body = error2.$responseBodyText; + } + } + try { + if (HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error2.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries) + }; + } + } catch (ignored) { + } + } + throw error2; + } + }, "deserializerMiddleware"); + findHeader = /* @__PURE__ */ __name((pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 0])[1]; + }, "findHeader"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/ProviderError.js +var ProviderError; +var init_ProviderError = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/ProviderError.js"() { + ProviderError = class _ProviderError extends Error { + static { + __name(this, "ProviderError"); + } + name = "ProviderError"; + tryNextLink; + constructor(message, options = true) { + let logger2; + let tryNextLink = true; + if (typeof options === "boolean") { + logger2 = void 0; + tryNextLink = options; + } else if (options != null && typeof options === "object") { + logger2 = options.logger; + tryNextLink = options.tryNextLink ?? true; + } + super(message); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, _ProviderError.prototype); + logger2?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`); + } + static from(error2, options = true) { + return Object.assign(new this(error2.message, options), error2); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/CredentialsProviderError.js +var CredentialsProviderError; +var init_CredentialsProviderError = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/CredentialsProviderError.js"() { + init_ProviderError(); + CredentialsProviderError = class _CredentialsProviderError extends ProviderError { + static { + __name(this, "CredentialsProviderError"); + } + name = "CredentialsProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, _CredentialsProviderError.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/TokenProviderError.js +var TokenProviderError; +var init_TokenProviderError = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/TokenProviderError.js"() { + init_ProviderError(); + TokenProviderError = class _TokenProviderError extends ProviderError { + static { + __name(this, "TokenProviderError"); + } + name = "TokenProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, _TokenProviderError.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/chain.js +var chain; +var init_chain = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/chain.js"() { + init_ProviderError(); + chain = /* @__PURE__ */ __name((...providers) => async () => { + if (providers.length === 0) { + throw new ProviderError("No providers in chain"); + } + let lastProviderError; + for (const provider of providers) { + try { + const credentials = await provider(); + return credentials; + } catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; + }, "chain"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/fromValue.js +var fromValue; +var init_fromValue = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/fromValue.js"() { + fromValue = /* @__PURE__ */ __name((staticValue) => () => Promise.resolve(staticValue), "fromValue"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/memoize.js +var memoize; +var init_memoize = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/property-provider/memoize.js"() { + memoize = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => { + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = /* @__PURE__ */ __name(async () => { + if (!pending) { + pending = provider(); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } finally { + pending = void 0; + } + return resolved; + }, "coalesceProvider"); + if (isExpired === void 0) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + if (isConstant) { + return resolved; + } + if (requiresRefresh && !requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(); + return resolved; + } + return resolved; + }; + }, "memoize"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/booleanSelector.js +var booleanSelector; +var init_booleanSelector = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/booleanSelector.js"() { + booleanSelector = /* @__PURE__ */ __name((obj, key, type) => { + if (!(key in obj)) + return void 0; + if (obj[key] === "true") + return true; + if (obj[key] === "false") + return false; + throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`); + }, "booleanSelector"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/numberSelector.js +var numberSelector; +var init_numberSelector = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/numberSelector.js"() { + numberSelector = /* @__PURE__ */ __name((obj, key, type) => { + if (!(key in obj)) + return void 0; + const numberValue = parseInt(obj[key], 10); + if (Number.isNaN(numberValue)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`); + } + return numberValue; + }, "numberSelector"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/types.js +var SelectorType; +var init_types = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/types.js"() { + (function(SelectorType2) { + SelectorType2["ENV"] = "env"; + SelectorType2["CONFIG"] = "shared config entry"; + })(SelectorType || (SelectorType = {})); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getHomeDir.js +import { homedir } from "node:os"; +import { sep } from "node:path"; +var homeDirCache, getHomeDirCacheKey, getHomeDir; +var init_getHomeDir = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getHomeDir.js"() { + homeDirCache = {}; + getHomeDirCacheKey = /* @__PURE__ */ __name(() => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; + }, "getHomeDirCacheKey"); + getHomeDir = /* @__PURE__ */ __name(() => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = homedir(); + return homeDirCache[homeDirCacheKey]; + }, "getHomeDir"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getProfileName.js +var ENV_PROFILE, DEFAULT_PROFILE, getProfileName; +var init_getProfileName = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getProfileName.js"() { + ENV_PROFILE = "AWS_PROFILE"; + DEFAULT_PROFILE = "default"; + getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, "getProfileName"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFilepath.js +import { createHash } from "node:crypto"; +import { join } from "node:path"; +var getSSOTokenFilepath; +var init_getSSOTokenFilepath = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFilepath.js"() { + init_getHomeDir(); + getSSOTokenFilepath = /* @__PURE__ */ __name((id) => { + const hasher = createHash("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return join(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`); + }, "getSSOTokenFilepath"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFromFile.js +import { readFile } from "node:fs/promises"; +var tokenIntercept, getSSOTokenFromFile; +var init_getSSOTokenFromFile = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFromFile.js"() { + init_getSSOTokenFilepath(); + tokenIntercept = {}; + getSSOTokenFromFile = /* @__PURE__ */ __name(async (id) => { + if (tokenIntercept[id]) { + return tokenIntercept[id]; + } + const ssoTokenFilepath = getSSOTokenFilepath(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); + }, "getSSOTokenFromFile"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/constants.js +var CONFIG_PREFIX_SEPARATOR; +var init_constants = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/constants.js"() { + CONFIG_PREFIX_SEPARATOR = "."; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getConfigData.js +var import_types2, getConfigData; +var init_getConfigData = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getConfigData.js"() { + import_types2 = __toESM(require_dist_cjs()); + init_constants(); + getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(import_types2.IniSectionType).includes(key.substring(0, indexOfSeparator)); + }).reduce((acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === import_types2.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; + }, { + ...data.default && { default: data.default } + }), "getConfigData"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getConfigFilepath.js +import { join as join2 } from "node:path"; +var ENV_CONFIG_PATH, getConfigFilepath; +var init_getConfigFilepath = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getConfigFilepath.js"() { + init_getHomeDir(); + ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; + getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || join2(getHomeDir(), ".aws", "config"), "getConfigFilepath"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getCredentialsFilepath.js +import { join as join3 } from "node:path"; +var ENV_CREDENTIALS_PATH, getCredentialsFilepath; +var init_getCredentialsFilepath = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getCredentialsFilepath.js"() { + init_getHomeDir(); + ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; + getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || join3(getHomeDir(), ".aws", "credentials"), "getCredentialsFilepath"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/parseIni.js +var import_types3, prefixKeyRegex, profileNameBlockList, parseIni; +var init_parseIni = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/parseIni.js"() { + import_types3 = __toESM(require_dist_cjs()); + init_constants(); + prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@+.%:/]+)\2$/; + profileNameBlockList = ["__proto__", "profile __proto__"]; + parseIni = /* @__PURE__ */ __name((iniData) => { + const map3 = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = void 0; + currentSubSection = void 0; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(import_types3.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim() + ]; + if (value === "") { + currentSubSection = name; + } else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = void 0; + } + map3[currentSection] = map3[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map3[currentSection][key] = value; + } + } + } + } + return map3; + }, "parseIni"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/readFile.js +import { readFile as fsReadFile } from "node:fs/promises"; +var filePromises, fileIntercept, readFile2; +var init_readFile = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/readFile.js"() { + filePromises = {}; + fileIntercept = {}; + readFile2 = /* @__PURE__ */ __name((path, options) => { + if (fileIntercept[path] !== void 0) { + return fileIntercept[path]; + } + if (!filePromises[path] || options?.ignoreCache) { + filePromises[path] = fsReadFile(path, "utf8"); + } + return filePromises[path]; + }, "readFile"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/loadSharedConfigFiles.js +import { join as join4 } from "node:path"; +var swallowError, loadSharedConfigFiles; +var init_loadSharedConfigFiles = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/loadSharedConfigFiles.js"() { + init_getConfigData(); + init_getConfigFilepath(); + init_getCredentialsFilepath(); + init_getHomeDir(); + init_parseIni(); + init_readFile(); + init_constants(); + swallowError = /* @__PURE__ */ __name(() => ({}), "swallowError"); + loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = getHomeDir(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = join4(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = join4(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + readFile2(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).then(getConfigData).catch(swallowError), + readFile2(resolvedFilepath, { + ignoreCache: init.ignoreCache + }).then(parseIni).catch(swallowError) + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1] + }; + }, "loadSharedConfigFiles"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSsoSessionData.js +var import_types4, getSsoSessionData; +var init_getSsoSessionData = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSsoSessionData.js"() { + import_types4 = __toESM(require_dist_cjs()); + init_loadSharedConfigFiles(); + getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types4.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), "getSsoSessionData"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/loadSsoSessionData.js +var swallowError2, loadSsoSessionData; +var init_loadSsoSessionData = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/loadSsoSessionData.js"() { + init_getConfigFilepath(); + init_getSsoSessionData(); + init_parseIni(); + init_readFile(); + swallowError2 = /* @__PURE__ */ __name(() => ({}), "swallowError"); + loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => readFile2(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), "loadSsoSessionData"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/mergeConfigFiles.js +var mergeConfigFiles; +var init_mergeConfigFiles = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/mergeConfigFiles.js"() { + mergeConfigFiles = /* @__PURE__ */ __name((...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== void 0) { + Object.assign(merged[key], values); + } else { + merged[key] = values; + } + } + } + return merged; + }, "mergeConfigFiles"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/parseKnownFiles.js +var parseKnownFiles; +var init_parseKnownFiles = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/parseKnownFiles.js"() { + init_loadSharedConfigFiles(); + init_mergeConfigFiles(); + parseKnownFiles = /* @__PURE__ */ __name(async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); + }, "parseKnownFiles"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/externalDataInterceptor.js +var externalDataInterceptor; +var init_externalDataInterceptor = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/externalDataInterceptor.js"() { + init_getSSOTokenFromFile(); + init_readFile(); + externalDataInterceptor = { + getFileRecord() { + return fileIntercept; + }, + interceptFile(path, contents) { + fileIntercept[path] = Promise.resolve(contents); + }, + getTokenRecord() { + return tokenIntercept; + }, + interceptToken(id, contents) { + tokenIntercept[id] = contents; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/getSelectorName.js +function getSelectorName(functionString) { + try { + const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? [])); + constants.delete("CONFIG"); + constants.delete("CONFIG_PREFIX_SEPARATOR"); + constants.delete("ENV"); + return [...constants].join(", "); + } catch (ignored) { + return functionString; + } +} +var init_getSelectorName = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/getSelectorName.js"() { + __name(getSelectorName, "getSelectorName"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromEnv.js +var fromEnv; +var init_fromEnv = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromEnv.js"() { + init_CredentialsProviderError(); + init_getSelectorName(); + fromEnv = /* @__PURE__ */ __name((envVarSelector, options) => async () => { + try { + const config = envVarSelector(process.env, options); + if (config === void 0) { + throw new Error(); + } + return config; + } catch (e) { + throw new CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger }); + } + }, "fromEnv"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromSharedConfigFiles.js +var fromSharedConfigFiles; +var init_fromSharedConfigFiles = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromSharedConfigFiles.js"() { + init_CredentialsProviderError(); + init_getProfileName(); + init_loadSharedConfigFiles(); + init_getSelectorName(); + fromSharedConfigFiles = /* @__PURE__ */ __name((configSelector, { preferredFile = "config", ...init } = {}) => async () => { + const profile = getProfileName(init); + const { configFile, credentialsFile } = await loadSharedConfigFiles(init); + const profileFromCredentials = credentialsFile[profile] || {}; + const profileFromConfig = configFile[profile] || {}; + const mergedProfile = preferredFile === "config" ? { ...profileFromCredentials, ...profileFromConfig } : { ...profileFromConfig, ...profileFromCredentials }; + try { + const cfgFile = preferredFile === "config" ? configFile : credentialsFile; + const configValue = configSelector(mergedProfile, cfgFile); + if (configValue === void 0) { + throw new Error(); + } + return configValue; + } catch (e) { + throw new CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger }); + } + }, "fromSharedConfigFiles"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromStatic.js +var isFunction, fromStatic; +var init_fromStatic = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromStatic.js"() { + init_fromValue(); + isFunction = /* @__PURE__ */ __name((func) => typeof func === "function", "isFunction"); + fromStatic = /* @__PURE__ */ __name((defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : fromValue(defaultValue), "fromStatic"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/configLoader.js +var loadConfig; +var init_configLoader = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/configLoader.js"() { + init_chain(); + init_memoize(); + init_fromEnv(); + init_fromSharedConfigFiles(); + init_fromStatic(); + loadConfig = /* @__PURE__ */ __name(({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => { + const { signingName, logger: logger2 } = configuration; + const envOptions = { signingName, logger: logger2 }; + return memoize(chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue))); + }, "loadConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js +var ENV_USE_DUALSTACK_ENDPOINT, CONFIG_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_DUALSTACK_ENDPOINT, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, nodeDualstackConfigSelectors; +var init_NodeUseDualstackEndpointConfigOptions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js"() { + init_booleanSelector(); + init_types(); + ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; + CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; + DEFAULT_USE_DUALSTACK_ENDPOINT = false; + NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG), "configFileSelector"), + default: false + }; + nodeDualstackConfigSelectors = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG), "configFileSelector"), + default: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/NodeUseFipsEndpointConfigOptions.js +var ENV_USE_FIPS_ENDPOINT, CONFIG_USE_FIPS_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, nodeFipsConfigSelectors; +var init_NodeUseFipsEndpointConfigOptions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/NodeUseFipsEndpointConfigOptions.js"() { + init_booleanSelector(); + init_types(); + ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; + CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; + DEFAULT_USE_FIPS_ENDPOINT = false; + NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG), "configFileSelector"), + default: false + }; + nodeFipsConfigSelectors = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG), "configFileSelector"), + default: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/middleware-stack/MiddlewareStack.js +var getAllAliases, getMiddlewareNameWithAliases, constructStack, stepWeights, priorityWeights; +var init_MiddlewareStack = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/middleware-stack/MiddlewareStack.js"() { + getAllAliases = /* @__PURE__ */ __name((name, aliases) => { + const _aliases = []; + if (name) { + _aliases.push(name); + } + if (aliases) { + for (const alias of aliases) { + _aliases.push(alias); + } + } + return _aliases; + }, "getAllAliases"); + getMiddlewareNameWithAliases = /* @__PURE__ */ __name((name, aliases) => { + return `${name || "anonymous"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(",")})` : ""}`; + }, "getMiddlewareNameWithAliases"); + constructStack = /* @__PURE__ */ __name(() => { + let absoluteEntries = []; + let relativeEntries = []; + let identifyOnResolve = false; + const entriesNameSet = /* @__PURE__ */ new Set(); + const sort = /* @__PURE__ */ __name((entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] || priorityWeights[b.priority || "normal"] - priorityWeights[a.priority || "normal"]), "sort"); + const removeByName = /* @__PURE__ */ __name((toRemove) => { + let isRemoved = false; + const filterCb = /* @__PURE__ */ __name((entry) => { + const aliases = getAllAliases(entry.name, entry.aliases); + if (aliases.includes(toRemove)) { + isRemoved = true; + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }, "filterCb"); + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, "removeByName"); + const removeByReference = /* @__PURE__ */ __name((toRemove) => { + let isRemoved = false; + const filterCb = /* @__PURE__ */ __name((entry) => { + if (entry.middleware === toRemove) { + isRemoved = true; + for (const alias of getAllAliases(entry.name, entry.aliases)) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }, "filterCb"); + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, "removeByReference"); + const cloneTo = /* @__PURE__ */ __name((toStack) => { + absoluteEntries.forEach((entry) => { + toStack.add(entry.middleware, { ...entry }); + }); + relativeEntries.forEach((entry) => { + toStack.addRelativeTo(entry.middleware, { ...entry }); + }); + toStack.identifyOnResolve?.(stack.identifyOnResolve()); + return toStack; + }, "cloneTo"); + const expandRelativeMiddlewareList = /* @__PURE__ */ __name((from) => { + const expandedMiddlewareList = []; + from.before.forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + expandedMiddlewareList.push(from); + from.after.reverse().forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + return expandedMiddlewareList; + }, "expandRelativeMiddlewareList"); + const getMiddlewareList = /* @__PURE__ */ __name((debug = false) => { + const normalizedAbsoluteEntries = []; + const normalizedRelativeEntries = []; + const normalizedEntriesNameMap = {}; + absoluteEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [] + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedAbsoluteEntries.push(normalizedEntry); + }); + relativeEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [] + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedRelativeEntries.push(normalizedEntry); + }); + normalizedRelativeEntries.forEach((entry) => { + if (entry.toMiddleware) { + const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware]; + if (toMiddleware === void 0) { + if (debug) { + return; + } + throw new Error(`${entry.toMiddleware} is not found when adding ${getMiddlewareNameWithAliases(entry.name, entry.aliases)} middleware ${entry.relation} ${entry.toMiddleware}`); + } + if (entry.relation === "after") { + toMiddleware.after.push(entry); + } + if (entry.relation === "before") { + toMiddleware.before.push(entry); + } + } + }); + const mainChain = sort(normalizedAbsoluteEntries).map(expandRelativeMiddlewareList).reduce((wholeList, expandedMiddlewareList) => { + wholeList.push(...expandedMiddlewareList); + return wholeList; + }, []); + return mainChain; + }, "getMiddlewareList"); + const stack = { + add: /* @__PURE__ */ __name((middleware, options = {}) => { + const { name, override, aliases: _aliases } = options; + const entry = { + step: "initialize", + priority: "normal", + middleware, + ...options + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = absoluteEntries.findIndex((entry2) => entry2.name === alias || entry2.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = absoluteEntries[toOverrideIndex]; + if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware with ${entry.priority} priority in ${entry.step} step.`); + } + absoluteEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + absoluteEntries.push(entry); + }, "add"), + addRelativeTo: /* @__PURE__ */ __name((middleware, options) => { + const { name, override, aliases: _aliases } = options; + const entry = { + middleware, + ...options + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = relativeEntries.findIndex((entry2) => entry2.name === alias || entry2.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = relativeEntries[toOverrideIndex]; + if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware ${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware ${entry.relation} "${entry.toMiddleware}" middleware.`); + } + relativeEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + relativeEntries.push(entry); + }, "addRelativeTo"), + clone: /* @__PURE__ */ __name(() => cloneTo(constructStack()), "clone"), + use: /* @__PURE__ */ __name((plugin) => { + plugin.applyToStack(stack); + }, "use"), + remove: /* @__PURE__ */ __name((toRemove) => { + if (typeof toRemove === "string") + return removeByName(toRemove); + else + return removeByReference(toRemove); + }, "remove"), + removeByTag: /* @__PURE__ */ __name((toRemove) => { + let isRemoved = false; + const filterCb = /* @__PURE__ */ __name((entry) => { + const { tags, name, aliases: _aliases } = entry; + if (tags && tags.includes(toRemove)) { + const aliases = getAllAliases(name, _aliases); + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + isRemoved = true; + return false; + } + return true; + }, "filterCb"); + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, "removeByTag"), + concat: /* @__PURE__ */ __name((from) => { + const cloned = cloneTo(constructStack()); + cloned.use(from); + cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false)); + return cloned; + }, "concat"), + applyToStack: cloneTo, + identify: /* @__PURE__ */ __name(() => { + return getMiddlewareList(true).map((mw) => { + const step = mw.step ?? mw.relation + " " + mw.toMiddleware; + return getMiddlewareNameWithAliases(mw.name, mw.aliases) + " - " + step; + }); + }, "identify"), + identifyOnResolve(toggle) { + if (typeof toggle === "boolean") + identifyOnResolve = toggle; + return identifyOnResolve; + }, + resolve: /* @__PURE__ */ __name((handler, context) => { + for (const middleware of getMiddlewareList().map((entry) => entry.middleware).reverse()) { + handler = middleware(handler, context); + } + if (identifyOnResolve) { + console.log(stack.identify()); + } + return handler; + }, "resolve") + }; + return stack; + }, "constructStack"); + stepWeights = { + initialize: 5, + serialize: 4, + build: 3, + finalizeRequest: 2, + deserialize: 1 + }; + priorityWeights = { + high: 3, + normal: 2, + low: 1 + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/invalid-dependency/invalidFunction.js +var invalidFunction; +var init_invalidFunction = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/invalid-dependency/invalidFunction.js"() { + invalidFunction = /* @__PURE__ */ __name((message) => () => { + throw new Error(message); + }, "invalidFunction"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/invalid-dependency/invalidProvider.js +var invalidProvider; +var init_invalidProvider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/invalid-dependency/invalidProvider.js"() { + invalidProvider = /* @__PURE__ */ __name((message) => () => Promise.reject(message), "invalidProvider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/circularReplacer.js +var getCircularReplacer; +var init_circularReplacer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/circularReplacer.js"() { + getCircularReplacer = /* @__PURE__ */ __name(() => { + const seen = /* @__PURE__ */ new WeakSet(); + return (key, value) => { + if (typeof value === "object" && value !== null) { + if (seen.has(value)) { + return "[Circular]"; + } + seen.add(value); + } + return value; + }; + }, "getCircularReplacer"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/utils/sleep.js +var sleep; +var init_sleep = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/utils/sleep.js"() { + sleep = /* @__PURE__ */ __name((seconds) => { + return new Promise((resolve) => setTimeout(resolve, seconds * 1e3)); + }, "sleep"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/waiter.js +var waiterServiceDefaults, WaiterState, checkExceptions; +var init_waiter = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/waiter.js"() { + init_circularReplacer(); + waiterServiceDefaults = { + minDelay: 2, + maxDelay: 120 + }; + (function(WaiterState2) { + WaiterState2["ABORTED"] = "ABORTED"; + WaiterState2["FAILURE"] = "FAILURE"; + WaiterState2["SUCCESS"] = "SUCCESS"; + WaiterState2["RETRY"] = "RETRY"; + WaiterState2["TIMEOUT"] = "TIMEOUT"; + })(WaiterState || (WaiterState = {})); + checkExceptions = /* @__PURE__ */ __name((result) => { + if (result.state === WaiterState.ABORTED) { + const abortError = new Error(`${JSON.stringify({ + ...result, + reason: "Request was aborted" + }, getCircularReplacer())}`); + abortError.name = "AbortError"; + throw abortError; + } else if (result.state === WaiterState.TIMEOUT) { + const timeoutError = new Error(`${JSON.stringify({ + ...result, + reason: "Waiter has timed out" + }, getCircularReplacer())}`); + timeoutError.name = "TimeoutError"; + throw timeoutError; + } else if (result.state !== WaiterState.SUCCESS) { + throw new Error(`${JSON.stringify(result, getCircularReplacer())}`); + } + return result; + }, "checkExceptions"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/poller.js +var runPolling, checkWarn403, createMessageFromResponse, exponentialBackoffWithJitter, randomInRange; +var init_poller = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/poller.js"() { + init_circularReplacer(); + init_sleep(); + init_waiter(); + runPolling = /* @__PURE__ */ __name(async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => { + const observedResponses = {}; + const [minDelayMs, maxDelayMs] = [minDelay * 1e3, maxDelay * 1e3]; + let currentAttempt = 0; + const waitUntil = Date.now() + maxWaitTime * 1e3; + const warn403Time = Date.now() + 6e4; + let didWarn403 = false; + while (true) { + if (currentAttempt > 0) { + const delayMs = exponentialBackoffWithJitter(minDelayMs, maxDelayMs, currentAttempt, waitUntil); + if (abortController?.signal?.aborted || abortSignal?.aborted) { + const message = "AbortController signal aborted."; + observedResponses[message] |= 0; + observedResponses[message] += 1; + return { state: WaiterState.ABORTED, observedResponses }; + } + if (Date.now() + delayMs > waitUntil) { + return { state: WaiterState.TIMEOUT, observedResponses }; + } + await sleep(delayMs / 1e3); + } + const { state, reason } = await acceptorChecks(client, input); + if (reason) { + const message = createMessageFromResponse(reason); + observedResponses[message] |= 0; + observedResponses[message] += 1; + } + if (state !== WaiterState.RETRY) { + return { state, reason, final: reason, observedResponses }; + } + currentAttempt += 1; + if (!didWarn403 && Date.now() >= warn403Time) { + checkWarn403(observedResponses, client); + didWarn403 = true; + } + } + }, "runPolling"); + checkWarn403 = /* @__PURE__ */ __name((observedResponses = {}, client) => { + const orderedErrors = Object.keys(observedResponses); + let maxCount = 0; + let count403 = 0; + for (const response of orderedErrors) { + const n = observedResponses[response] | 0; + maxCount = Math.max(n, maxCount); + if (response.startsWith("403:")) { + count403 += n; + } + } + const clientLogger = client?.config?.logger; + const warningLogger = typeof clientLogger?.warn === "function" && !clientLogger.constructor?.name?.includes?.("NoOpLogger") ? clientLogger : console; + if (count403 >= 3 || orderedErrors[orderedErrors.length - 1]?.startsWith("403:")) { + warningLogger.warn(`@smithy/util-waiter WARN - 403 status code encountered during waiter polling.`); + } + }, "checkWarn403"); + createMessageFromResponse = /* @__PURE__ */ __name((reason) => { + const status = reason?.$response?.statusCode ?? reason?.$metadata?.httpStatusCode; + if (reason?.$responseBodyText) { + return `${status ? status + ": " : ""}Deserialization error for body: ${reason.$responseBodyText}`; + } + if (status) { + if (reason?.$response || reason?.message) { + return `${status ?? "Unknown"}: ${reason?.message}`; + } + return `${status}: OK`; + } + return String(reason?.message ?? JSON.stringify(reason, getCircularReplacer()) ?? "Unknown"); + }, "createMessageFromResponse"); + exponentialBackoffWithJitter = /* @__PURE__ */ __name((minDelayMs, maxDelayMs, attempt, waitUntil) => { + const attemptCountCeiling = Math.log(maxDelayMs / minDelayMs) / Math.log(2) + 1; + if (attempt > attemptCountCeiling) { + return maxDelayMs; + } + const delay = minDelayMs * 2 ** (attempt - 1); + const capped = Math.min(delay, maxDelayMs); + const waitFor = randomInRange(minDelayMs, capped); + if (Date.now() + waitFor > waitUntil) { + const timeRemaining = waitUntil - Date.now(); + return Math.max(0, timeRemaining - 500); + } + return waitFor; + }, "exponentialBackoffWithJitter"); + randomInRange = /* @__PURE__ */ __name((min, max) => min + Math.random() * (max - min), "randomInRange"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/utils/validate.js +var validateWaiterOptions; +var init_validate = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/utils/validate.js"() { + validateWaiterOptions = /* @__PURE__ */ __name((options) => { + if (options.maxWaitTime <= 0) { + throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`); + } else if (options.minDelay <= 0) { + throw new Error(`WaiterConfiguration.minDelay must be greater than 0`); + } else if (options.maxDelay <= 0) { + throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`); + } else if (options.maxWaitTime <= options.minDelay) { + throw new Error(`WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`); + } else if (options.maxDelay < options.minDelay) { + throw new Error(`WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`); + } + }, "validateWaiterOptions"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/createWaiter.js +var abortTimeout, createWaiter; +var init_createWaiter = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/util-waiter/createWaiter.js"() { + init_poller(); + init_validate(); + init_waiter(); + abortTimeout = /* @__PURE__ */ __name((abortSignal) => { + let onAbort; + const promise = new Promise((resolve) => { + onAbort = /* @__PURE__ */ __name(() => resolve({ state: WaiterState.ABORTED }), "onAbort"); + if (typeof abortSignal.addEventListener === "function") { + abortSignal.addEventListener("abort", onAbort); + } else { + abortSignal.onabort = onAbort; + } + }); + return { + clearListener() { + if (typeof abortSignal.removeEventListener === "function") { + abortSignal.removeEventListener("abort", onAbort); + } + }, + aborted: promise + }; + }, "abortTimeout"); + createWaiter = /* @__PURE__ */ __name(async (options, input, acceptorChecks) => { + const params = { + ...waiterServiceDefaults, + ...options + }; + validateWaiterOptions(params); + const exitConditions = [runPolling(params, input, acceptorChecks)]; + const finalize = []; + if (options.abortSignal) { + const { aborted, clearListener } = abortTimeout(options.abortSignal); + finalize.push(clearListener); + exitConditions.push(aborted); + } + if (options.abortController?.signal) { + const { aborted, clearListener } = abortTimeout(options.abortController.signal); + finalize.push(clearListener); + exitConditions.push(aborted); + } + return Promise.race(exitConditions).then((result) => { + for (const fn of finalize) { + fn(); + } + return result; + }); + }, "createWaiter"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client.js +var Client; +var init_client = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client.js"() { + init_MiddlewareStack(); + Client = class { + static { + __name(this, "Client"); + } + config; + middlewareStack = constructStack(); + initConfig; + handlers; + constructor(config) { + this.config = config; + const { protocol, protocolSettings } = config; + if (protocolSettings) { + if (typeof protocol === "function") { + config.protocol = new protocol(protocolSettings); + } + } + } + send(command, optionsOrCb, cb) { + const options = typeof optionsOrCb !== "function" ? optionsOrCb : void 0; + const callback = typeof optionsOrCb === "function" ? optionsOrCb : cb; + const useHandlerCache = options === void 0 && this.config.cacheMiddleware === true; + let handler; + if (useHandlerCache) { + if (!this.handlers) { + this.handlers = /* @__PURE__ */ new WeakMap(); + } + const handlers = this.handlers; + if (handlers.has(command.constructor)) { + handler = handlers.get(command.constructor); + } else { + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + handlers.set(command.constructor, handler); + } + } else { + delete this.handlers; + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + } + if (callback) { + handler(command).then((result) => callback(null, result.output), (err) => callback(err)).catch(() => { + }); + } else { + return handler(command).then((result) => result.output); + } + } + destroy() { + this.config?.requestHandler?.destroy?.(); + delete this.handlers; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/deref.js +var deref; +var init_deref = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/deref.js"() { + deref = /* @__PURE__ */ __name((schemaRef) => { + if (typeof schemaRef === "function") { + return schemaRef(); + } + return schemaRef; + }, "deref"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js +var operation; +var init_operation = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js"() { + operation = /* @__PURE__ */ __name((namespace, name, traits, input, output) => ({ + name, + namespace, + traits, + input, + output + }), "operation"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +var schemaDeserializationMiddleware, findHeader2; +var init_schemaDeserializationMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js"() { + init_transport(); + init_operation(); + schemaDeserializationMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => { + const { response } = await next(args); + const { operationSchema } = getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + try { + const parsed = await config.protocol.deserializeResponse(operation(ns, n, t, i, o), { + ...config, + ...context + }, response); + return { + response, + output: parsed + }; + } catch (error2) { + Object.defineProperty(error2, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false + }); + if (!("$metadata" in error2)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error2.message += "\n " + hint; + } catch (ignored) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } else { + context.logger?.warn?.(hint); + } + } + if (typeof error2.$responseBodyText !== "undefined") { + if (error2.$response) { + error2.$response.body = error2.$responseBodyText; + } + } + try { + if (HttpResponse.isInstance(response)) { + const { headers = {}, statusCode } = response; + const headerEntries = Object.entries(headers); + error2.$metadata = { + httpStatusCode: statusCode, + requestId: findHeader2(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader2(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader2(/^x-[\w-]+-cf-id$/, headerEntries) + }; + } + } catch (ignored) { + } + } + throw error2; + } + }, "schemaDeserializationMiddleware"); + findHeader2 = /* @__PURE__ */ __name((pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 0])[1]; + }, "findHeader"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +var schemaSerializationMiddleware; +var init_schemaSerializationMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js"() { + init_transport(); + init_operation(); + schemaSerializationMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => { + const { operationSchema } = getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + const endpoint = context.endpointV2 ? async () => toEndpointV1(context.endpointV2) : config.endpoint; + const request = await config.protocol.serializeRequest(operation(ns, n, t, i, o), args.input, { + ...config, + ...context, + endpoint + }); + return next({ + ...args, + request + }); + }, "schemaSerializationMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js +function getSchemaSerdePlugin(config) { + return { + applyToStack: /* @__PURE__ */ __name((commandStack) => { + commandStack.add(schemaSerializationMiddleware(config), serializerMiddlewareOption); + commandStack.add(schemaDeserializationMiddleware(config), deserializerMiddlewareOption); + config.protocol.setSerdeContext(config); + }, "applyToStack") + }; +} +var deserializerMiddlewareOption, serializerMiddlewareOption; +var init_getSchemaSerdePlugin = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js"() { + init_schemaDeserializationMiddleware(); + init_schemaSerializationMiddleware(); + deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true + }; + serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true + }; + __name(getSchemaSerdePlugin, "getSchemaSerdePlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js +var Schema; +var init_Schema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js"() { + Schema = class { + static { + __name(this, "Schema"); + } + name; + namespace; + traits; + static assign(instance, values) { + const schema = Object.assign(instance, values); + return schema; + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const list2 = lhs; + return list2.symbol === this.symbol; + } + return isPrototype; + } + getName() { + return this.namespace + "#" + this.name; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js +var ListSchema, list; +var init_ListSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js"() { + init_Schema(); + ListSchema = class _ListSchema extends Schema { + static { + __name(this, "ListSchema"); + } + static symbol = /* @__PURE__ */ Symbol.for("@smithy/lis"); + valueSchema; + symbol = _ListSchema.symbol; + }; + list = /* @__PURE__ */ __name((namespace, name, traits, valueSchema) => Schema.assign(new ListSchema(), { + name, + namespace, + traits, + valueSchema + }), "list"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js +var MapSchema, map; +var init_MapSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js"() { + init_Schema(); + MapSchema = class _MapSchema extends Schema { + static { + __name(this, "MapSchema"); + } + static symbol = /* @__PURE__ */ Symbol.for("@smithy/map"); + keySchema; + valueSchema; + symbol = _MapSchema.symbol; + }; + map = /* @__PURE__ */ __name((namespace, name, traits, keySchema, valueSchema) => Schema.assign(new MapSchema(), { + name, + namespace, + traits, + keySchema, + valueSchema + }), "map"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js +var OperationSchema, op; +var init_OperationSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js"() { + init_Schema(); + OperationSchema = class _OperationSchema extends Schema { + static { + __name(this, "OperationSchema"); + } + static symbol = /* @__PURE__ */ Symbol.for("@smithy/ope"); + input; + output; + symbol = _OperationSchema.symbol; + }; + op = /* @__PURE__ */ __name((namespace, name, traits, input, output) => Schema.assign(new OperationSchema(), { + name, + namespace, + traits, + input, + output + }), "op"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js +var StructureSchema, struct; +var init_StructureSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js"() { + init_Schema(); + StructureSchema = class _StructureSchema extends Schema { + static { + __name(this, "StructureSchema"); + } + static symbol = /* @__PURE__ */ Symbol.for("@smithy/str"); + memberNames; + memberList; + symbol = _StructureSchema.symbol; + }; + struct = /* @__PURE__ */ __name((namespace, name, traits, memberNames, memberList) => Schema.assign(new StructureSchema(), { + name, + namespace, + traits, + memberNames, + memberList + }), "struct"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js +var ErrorSchema, error; +var init_ErrorSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js"() { + init_Schema(); + init_StructureSchema(); + ErrorSchema = class _ErrorSchema extends StructureSchema { + static { + __name(this, "ErrorSchema"); + } + static symbol = /* @__PURE__ */ Symbol.for("@smithy/err"); + ctor; + symbol = _ErrorSchema.symbol; + }; + error = /* @__PURE__ */ __name((namespace, name, traits, memberNames, memberList, _ctor) => Schema.assign(new ErrorSchema(), { + name, + namespace, + traits, + memberNames, + memberList, + ctor: null + }), "error"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js +function translateTraits(indicator) { + if (typeof indicator === "object") { + return indicator; + } + indicator = indicator | 0; + if (traitsCache[indicator]) { + return traitsCache[indicator]; + } + const traits = {}; + let i = 0; + for (const trait of [ + "httpLabel", + "idempotent", + "idempotencyToken", + "sensitive", + "httpPayload", + "httpResponseCode", + "httpQueryParams" + ]) { + if ((indicator >> i++ & 1) === 1) { + traits[trait] = 1; + } + } + return traitsCache[indicator] = traits; +} +var traitsCache; +var init_translateTraits = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js"() { + traitsCache = []; + __name(translateTraits, "translateTraits"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +function member(memberSchema, memberName) { + if (memberSchema instanceof NormalizedSchema) { + return Object.assign(memberSchema, { + memberName, + _isMemberSchema: true + }); + } + const internalCtorAccess = NormalizedSchema; + return new internalCtorAccess(memberSchema, memberName); +} +var anno, simpleSchemaCacheN, simpleSchemaCacheS, NormalizedSchema, isMemberSchema, isStaticSchema; +var init_NormalizedSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js"() { + init_deref(); + init_translateTraits(); + anno = { + it: /* @__PURE__ */ Symbol.for("@smithy/nor-struct-it"), + ns: /* @__PURE__ */ Symbol.for("@smithy/ns") + }; + simpleSchemaCacheN = []; + simpleSchemaCacheS = {}; + NormalizedSchema = class _NormalizedSchema { + static { + __name(this, "NormalizedSchema"); + } + ref; + memberName; + static symbol = /* @__PURE__ */ Symbol.for("@smithy/nor"); + symbol = _NormalizedSchema.symbol; + name; + schema; + _isMemberSchema; + traits; + memberTraits; + normalizedTraits; + constructor(ref, memberName) { + this.ref = ref; + this.memberName = memberName; + const traitStack = []; + let _ref = ref; + let schema = ref; + this._isMemberSchema = false; + while (isMemberSchema(_ref)) { + traitStack.push(_ref[1]); + _ref = _ref[0]; + schema = deref(_ref); + this._isMemberSchema = true; + } + if (traitStack.length > 0) { + this.memberTraits = {}; + for (let i = traitStack.length - 1; i >= 0; --i) { + const traitSet = traitStack[i]; + Object.assign(this.memberTraits, translateTraits(traitSet)); + } + } else { + this.memberTraits = 0; + } + if (schema instanceof _NormalizedSchema) { + const computedMemberTraits = this.memberTraits; + Object.assign(this, schema); + this.memberTraits = Object.assign({}, computedMemberTraits, schema.getMemberTraits(), this.getMemberTraits()); + this.normalizedTraits = void 0; + this.memberName = memberName ?? schema.memberName; + return; + } + this.schema = deref(schema); + if (isStaticSchema(this.schema)) { + this.name = `${this.schema[1]}#${this.schema[2]}`; + this.traits = this.schema[3]; + } else { + this.name = this.memberName ?? String(schema); + this.traits = 0; + } + if (this._isMemberSchema && !memberName) { + throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(true)} missing member name.`); + } + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const ns = lhs; + return ns.symbol === this.symbol; + } + return isPrototype; + } + static of(ref) { + const keyAble = typeof ref === "function" || typeof ref === "object" && ref !== null; + if (typeof ref === "number") { + if (simpleSchemaCacheN[ref]) { + return simpleSchemaCacheN[ref]; + } + } else if (typeof ref === "string") { + if (simpleSchemaCacheS[ref]) { + return simpleSchemaCacheS[ref]; + } + } else if (keyAble) { + if (ref[anno.ns]) { + return ref[anno.ns]; + } + } + const sc = deref(ref); + if (sc instanceof _NormalizedSchema) { + return sc; + } + if (isMemberSchema(sc)) { + const [ns2, traits] = sc; + if (ns2 instanceof _NormalizedSchema) { + Object.assign(ns2.getMergedTraits(), translateTraits(traits)); + return ns2; + } + throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(ref, null, 2)}.`); + } + const ns = new _NormalizedSchema(sc); + if (keyAble) { + return ref[anno.ns] = ns; + } + if (typeof sc === "string") { + return simpleSchemaCacheS[sc] = ns; + } + if (typeof sc === "number") { + return simpleSchemaCacheN[sc] = ns; + } + return ns; + } + getSchema() { + const sc = this.schema; + if (Array.isArray(sc) && sc[0] === 0) { + return sc[4]; + } + return sc; + } + getName(withNamespace = false) { + const { name } = this; + const short = !withNamespace && name && name.includes("#"); + return short ? name.split("#")[1] : name || void 0; + } + getMemberName() { + return this.memberName; + } + isMemberSchema() { + return this._isMemberSchema; + } + isListSchema() { + const sc = this.getSchema(); + return typeof sc === "number" ? sc >= 64 && sc < 128 : sc[0] === 1; + } + isMapSchema() { + const sc = this.getSchema(); + return typeof sc === "number" ? sc >= 128 && sc <= 255 : sc[0] === 2; + } + isStructSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + const id = sc[0]; + return id === 3 || id === -3 || id === 4; + } + isUnionSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + return sc[0] === 4; + } + isBlobSchema() { + const sc = this.getSchema(); + return sc === 21 || sc === 42; + } + isTimestampSchema() { + const sc = this.getSchema(); + return typeof sc === "number" && sc >= 4 && sc <= 7; + } + isUnitSchema() { + return this.getSchema() === "unit"; + } + isDocumentSchema() { + return this.getSchema() === 15; + } + isStringSchema() { + return this.getSchema() === 0; + } + isBooleanSchema() { + return this.getSchema() === 2; + } + isNumericSchema() { + return this.getSchema() === 1; + } + isBigIntegerSchema() { + return this.getSchema() === 17; + } + isBigDecimalSchema() { + return this.getSchema() === 19; + } + isStreaming() { + const { streaming } = this.getMergedTraits(); + return !!streaming || this.getSchema() === 42; + } + isIdempotencyToken() { + return !!this.getMergedTraits().idempotencyToken; + } + getMergedTraits() { + return this.normalizedTraits ?? (this.normalizedTraits = { + ...this.getOwnTraits(), + ...this.getMemberTraits() + }); + } + getMemberTraits() { + return translateTraits(this.memberTraits); + } + getOwnTraits() { + return translateTraits(this.traits); + } + getKeySchema() { + const [isDoc, isMap] = [this.isDocumentSchema(), this.isMapSchema()]; + if (!isDoc && !isMap) { + throw new Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(true)}`); + } + const schema = this.getSchema(); + const memberSchema = isDoc ? 15 : schema[4] ?? 0; + return member([memberSchema, 0], "key"); + } + getValueSchema() { + const sc = this.getSchema(); + const [isDoc, isMap, isList] = [this.isDocumentSchema(), this.isMapSchema(), this.isListSchema()]; + const memberSchema = typeof sc === "number" ? 63 & sc : sc && typeof sc === "object" && (isMap || isList) ? sc[3 + sc[0]] : isDoc ? 15 : void 0; + if (memberSchema != null) { + return member([memberSchema, 0], isMap ? "value" : "member"); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no value member.`); + } + getMemberSchema(memberName) { + const struct2 = this.getSchema(); + if (this.isStructSchema() && struct2[4].includes(memberName)) { + const i = struct2[4].indexOf(memberName); + const memberSchema = struct2[5][i]; + return member(isMemberSchema(memberSchema) ? memberSchema : [memberSchema, 0], memberName); + } + if (this.isDocumentSchema()) { + return member([15, 0], memberName); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no member=${memberName}.`); + } + getMemberSchemas() { + const buffer = {}; + try { + for (const [k, v] of this.structIterator()) { + buffer[k] = v; + } + } catch (ignored) { + } + return buffer; + } + getEventStreamMember() { + if (this.isStructSchema()) { + for (const [memberName, memberSchema] of this.structIterator()) { + if (memberSchema.isStreaming() && memberSchema.isStructSchema()) { + return memberName; + } + } + } + return ""; + } + *structIterator() { + if (this.isUnitSchema()) { + return; + } + if (!this.isStructSchema()) { + throw new Error("@smithy/core/schema - cannot iterate non-struct schema."); + } + const struct2 = this.getSchema(); + const z = struct2[4].length; + let it = struct2[anno.it]; + if (it && z === it.length) { + yield* it; + return; + } + it = Array(z); + for (let i = 0; i < z; ++i) { + const k = struct2[4][i]; + const v = member([struct2[5][i], 0], k); + yield it[i] = [k, v]; + } + struct2[anno.it] = it; + } + }; + __name(member, "member"); + isMemberSchema = /* @__PURE__ */ __name((sc) => Array.isArray(sc) && sc.length === 2, "isMemberSchema"); + isStaticSchema = /* @__PURE__ */ __name((sc) => Array.isArray(sc) && sc.length >= 5, "isStaticSchema"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js +var SimpleSchema, sim, simAdapter; +var init_SimpleSchema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js"() { + init_Schema(); + SimpleSchema = class _SimpleSchema extends Schema { + static { + __name(this, "SimpleSchema"); + } + static symbol = /* @__PURE__ */ Symbol.for("@smithy/sim"); + schemaRef; + symbol = _SimpleSchema.symbol; + }; + sim = /* @__PURE__ */ __name((namespace, name, schemaRef, traits) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef + }), "sim"); + simAdapter = /* @__PURE__ */ __name((namespace, name, traits, schemaRef) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef + }), "simAdapter"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js +var SCHEMA; +var init_sentinels = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js"() { + SCHEMA = { + BLOB: 21, + STREAMING_BLOB: 42, + BOOLEAN: 2, + STRING: 0, + NUMERIC: 1, + BIG_INTEGER: 17, + BIG_DECIMAL: 19, + DOCUMENT: 15, + TIMESTAMP_DEFAULT: 4, + TIMESTAMP_DATE_TIME: 5, + TIMESTAMP_HTTP_DATE: 6, + TIMESTAMP_EPOCH_SECONDS: 7, + LIST_MODIFIER: 64, + MAP_MODIFIER: 128 + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +var TypeRegistry; +var init_TypeRegistry = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js"() { + TypeRegistry = class _TypeRegistry { + static { + __name(this, "TypeRegistry"); + } + namespace; + schemas; + exceptions; + static registries = /* @__PURE__ */ new Map(); + constructor(namespace, schemas = /* @__PURE__ */ new Map(), exceptions = /* @__PURE__ */ new Map()) { + this.namespace = namespace; + this.schemas = schemas; + this.exceptions = exceptions; + if (!_TypeRegistry.registries.has(namespace)) { + _TypeRegistry.registries.set(namespace, this); + } + } + static for(namespace) { + return _TypeRegistry.registries.get(namespace) ?? new _TypeRegistry(namespace); + } + copyFrom(other) { + const { schemas, exceptions } = this; + for (const [k, v] of other.schemas) { + if (!schemas.has(k)) { + schemas.set(k, v); + } + } + for (const [k, v] of other.exceptions) { + if (!exceptions.has(k)) { + exceptions.set(k, v); + } + } + } + register(shapeId, schema) { + const qualifiedName = this.normalizeShapeId(shapeId); + for (const r of [this, _TypeRegistry.for(qualifiedName.split("#")[0])]) { + if (!r.schemas.has(qualifiedName)) { + r.schemas.set(qualifiedName, schema); + } + } + } + getSchema(shapeId) { + const id = this.normalizeShapeId(shapeId); + if (!this.schemas.has(id)) { + if (!shapeId.includes("#")) { + const suffix = "#" + shapeId; + const candidates = []; + for (const [shapeId2, schema] of this.schemas.entries()) { + if (shapeId2.endsWith(suffix)) { + candidates.push(schema); + } + } + if (candidates.length === 1) { + return candidates[0]; + } + } + throw new Error(`@smithy/core/schema - schema not found for ${id}`); + } + return this.schemas.get(id); + } + registerError(es, ctor) { + const $error = es; + const ns = $error[1]; + const qualifiedName = ns + "#" + $error[2]; + if (!ctor.hasOwnProperty?.("shapeId")) { + ctor.shapeId = qualifiedName; + } + for (const r of [this, _TypeRegistry.for(ns)]) { + if (!r.schemas.has(qualifiedName) && !r.exceptions.has($error)) { + r.schemas.set(qualifiedName, $error); + r.exceptions.set($error, ctor); + } + } + } + getErrorCtor(es) { + const $error = es; + if (this.exceptions.has($error)) { + return this.exceptions.get($error); + } + const registry = _TypeRegistry.for($error[1]); + return registry.exceptions.get($error); + } + getBaseException() { + for (const exceptionKey of this.exceptions.keys()) { + if (Array.isArray(exceptionKey)) { + const [, ns, name] = exceptionKey; + const id = ns + "#" + name; + if (id.startsWith("smithy.ts.sdk.synthetic.") && id.endsWith("ServiceException")) { + return exceptionKey; + } + } + } + return void 0; + } + find(predicate) { + for (const schema of this.schemas.values()) { + if (predicate(schema)) { + return schema; + } + } + return void 0; + } + clear() { + this.schemas.clear(); + this.exceptions.clear(); + } + normalizeShapeId(shapeId) { + if (shapeId.includes("#")) { + return shapeId; + } + return this.namespace + "#" + shapeId; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/index.js +var schema_exports = {}; +__export(schema_exports, { + ErrorSchema: () => ErrorSchema, + ListSchema: () => ListSchema, + MapSchema: () => MapSchema, + NormalizedSchema: () => NormalizedSchema, + OperationSchema: () => OperationSchema, + SCHEMA: () => SCHEMA, + Schema: () => Schema, + SimpleSchema: () => SimpleSchema, + StructureSchema: () => StructureSchema, + TypeRegistry: () => TypeRegistry, + deref: () => deref, + deserializerMiddlewareOption: () => deserializerMiddlewareOption, + error: () => error, + getSchemaSerdePlugin: () => getSchemaSerdePlugin, + isStaticSchema: () => isStaticSchema, + list: () => list, + map: () => map, + op: () => op, + operation: () => operation, + serializerMiddlewareOption: () => serializerMiddlewareOption, + sim: () => sim, + simAdapter: () => simAdapter, + simpleSchemaCacheN: () => simpleSchemaCacheN, + simpleSchemaCacheS: () => simpleSchemaCacheS, + struct: () => struct, + traitsCache: () => traitsCache, + translateTraits: () => translateTraits +}); +var init_schema = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/schema/index.js"() { + init_deref(); + init_getSchemaSerdePlugin(); + init_ListSchema(); + init_MapSchema(); + init_OperationSchema(); + init_operation(); + init_ErrorSchema(); + init_NormalizedSchema(); + init_Schema(); + init_SimpleSchema(); + init_StructureSchema(); + init_sentinels(); + init_translateTraits(); + init_TypeRegistry(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/schemaLogFilter.js +function schemaLogFilter(schema, data) { + if (data == null) { + return data; + } + const ns = NormalizedSchema.of(schema); + if (ns.getMergedTraits().sensitive) { + return SENSITIVE_STRING; + } + if (ns.isListSchema()) { + const isSensitive = !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING; + } + } else if (ns.isMapSchema()) { + const isSensitive = !!ns.getKeySchema().getMergedTraits().sensitive || !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING; + } + } else if (ns.isStructSchema() && typeof data === "object") { + const object = data; + const newObject = {}; + for (const [member2, memberNs] of ns.structIterator()) { + if (object[member2] != null) { + newObject[member2] = schemaLogFilter(memberNs, object[member2]); + } + } + return newObject; + } + return data; +} +var SENSITIVE_STRING; +var init_schemaLogFilter = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/schemaLogFilter.js"() { + init_schema(); + SENSITIVE_STRING = "***SensitiveInformation***"; + __name(schemaLogFilter, "schemaLogFilter"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/command.js +var import_types7, Command, ClassBuilder; +var init_command = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/command.js"() { + import_types7 = __toESM(require_dist_cjs()); + init_MiddlewareStack(); + init_schemaLogFilter(); + Command = class { + static { + __name(this, "Command"); + } + middlewareStack = constructStack(); + schema; + static classBuilder() { + return new ClassBuilder(); + } + resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor }) { + for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) { + this.middlewareStack.use(mw); + } + const stack = clientStack.concat(this.middlewareStack); + const { logger: logger2 } = configuration; + const additionalSmithyContext = additionalContext[import_types7.SMITHY_CONTEXT_KEY]; + const handlerExecutionContext = { + logger: logger2, + clientName, + commandName, + inputFilterSensitiveLog, + outputFilterSensitiveLog, + ...additionalContext, + [import_types7.SMITHY_CONTEXT_KEY]: { + ...additionalSmithyContext, + commandInstance: this, + ...smithyContext, + ...options?.metricsRecorder === void 0 ? {} : { metricsRecorder: options.metricsRecorder } + } + }; + const { requestHandler } = configuration; + let requestOptions = options ?? {}; + if (requestOptions.metricsRecorder) { + requestOptions = { ...requestOptions }; + delete requestOptions.metricsRecorder; + } + if (smithyContext.eventStream) { + requestOptions = { + isEventStream: true, + ...requestOptions + }; + } + return stack.resolve((request) => requestHandler.handle(request.request, requestOptions), handlerExecutionContext); + } + }; + ClassBuilder = class { + static { + __name(this, "ClassBuilder"); + } + _init = /* @__PURE__ */ __name(() => { + }, "_init"); + _ep = {}; + _middlewareFn = /* @__PURE__ */ __name(() => [], "_middlewareFn"); + _commandName = ""; + _clientName = ""; + _additionalContext = {}; + _smithyContext = {}; + _inputFilterSensitiveLog = void 0; + _outputFilterSensitiveLog = void 0; + _serializer = null; + _deserializer = null; + _operationSchema; + init(cb) { + this._init = cb; + } + ep(endpointParameterInstructions) { + this._ep = endpointParameterInstructions; + return this; + } + m(middlewareSupplier) { + this._middlewareFn = middlewareSupplier; + return this; + } + s(service, operation2, smithyContext = {}) { + this._smithyContext = { + service, + operation: operation2, + ...smithyContext + }; + return this; + } + c(additionalContext = {}) { + this._additionalContext = additionalContext; + return this; + } + n(clientName, commandName) { + this._clientName = clientName; + this._commandName = commandName; + return this; + } + f(inputFilter = (_) => _, outputFilter = (_) => _) { + this._inputFilterSensitiveLog = inputFilter; + this._outputFilterSensitiveLog = outputFilter; + return this; + } + ser(serializer) { + this._serializer = serializer; + return this; + } + de(deserializer) { + this._deserializer = deserializer; + return this; + } + sc(operation2) { + this._operationSchema = operation2; + this._smithyContext.operationSchema = operation2; + return this; + } + build() { + const closure = this; + let CommandRef; + return CommandRef = class extends Command { + static { + __name(this, "CommandRef"); + } + input; + static getEndpointParameterInstructions() { + return closure._ep; + } + constructor(...[input]) { + super(); + this.input = input ?? {}; + closure._init(this); + this.schema = closure._operationSchema; + } + resolveMiddleware(stack, configuration, options) { + const op2 = closure._operationSchema; + const input = op2?.[4] ?? op2?.input; + const output = op2?.[5] ?? op2?.output; + return this.resolveMiddlewareWithContext(stack, configuration, options, { + CommandCtor: CommandRef, + middlewareFn: closure._middlewareFn, + clientName: closure._clientName, + commandName: closure._commandName, + inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (op2 ? schemaLogFilter.bind(null, input) : (_) => _), + outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (op2 ? schemaLogFilter.bind(null, output) : (_) => _), + smithyContext: closure._smithyContext, + additionalContext: closure._additionalContext + }); + } + serialize = closure._serializer; + deserialize = closure._deserializer; + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/constants.js +var SENSITIVE_STRING2; +var init_constants2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/constants.js"() { + SENSITIVE_STRING2 = "***SensitiveInformation***"; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/create-aggregated-client.js +var createAggregatedClient; +var init_create_aggregated_client = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/create-aggregated-client.js"() { + createAggregatedClient = /* @__PURE__ */ __name((commands, Client2, options) => { + for (const [command, CommandCtor] of Object.entries(commands)) { + const methodImpl = /* @__PURE__ */ __name(async function(args, optionsOrCb, cb) { + const command2 = new CommandCtor(args); + if (typeof optionsOrCb === "function") { + this.send(command2, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expected http options but got ${typeof optionsOrCb}`); + this.send(command2, optionsOrCb || {}, cb); + } else { + return this.send(command2, optionsOrCb); + } + }, "methodImpl"); + const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, ""); + Client2.prototype[methodName] = methodImpl; + } + const { paginators = {}, waiters = {} } = options ?? {}; + for (const [paginatorName, paginatorFn] of Object.entries(paginators)) { + if (Client2.prototype[paginatorName] === void 0) { + Client2.prototype[paginatorName] = function(commandInput = {}, paginationConfiguration, ...rest) { + return paginatorFn({ + ...paginationConfiguration, + client: this + }, commandInput, ...rest); + }; + } + } + for (const [waiterName, waiterFn] of Object.entries(waiters)) { + if (Client2.prototype[waiterName] === void 0) { + Client2.prototype[waiterName] = async function(commandInput = {}, waiterConfiguration, ...rest) { + let config = waiterConfiguration; + if (typeof waiterConfiguration === "number") { + config = { + maxWaitTime: waiterConfiguration + }; + } + return waiterFn({ + ...config, + client: this + }, commandInput, ...rest); + }; + } + } + }, "createAggregatedClient"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/exceptions.js +var ServiceException, decorateServiceException; +var init_exceptions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/exceptions.js"() { + ServiceException = class _ServiceException extends Error { + static { + __name(this, "ServiceException"); + } + static shapeId = "smithy.ts.sdk.synthetic.nonamespace.client#ServiceException"; + $fault; + $response; + $retryable; + $metadata; + constructor(options) { + super(options.message); + Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype); + this.name = options.name; + this.$fault = options.$fault; + this.$metadata = options.$metadata; + } + static isInstance(value) { + if (!value) + return false; + const candidate = value; + return _ServiceException.prototype.isPrototypeOf(candidate) || Boolean(candidate.$fault) && Boolean(candidate.$metadata) && (candidate.$fault === "client" || candidate.$fault === "server"); + } + static [Symbol.hasInstance](instance) { + if (!instance) + return false; + const candidate = instance; + if (this === _ServiceException) { + return _ServiceException.isInstance(instance); + } + if (_ServiceException.isInstance(instance)) { + if (this.prototype.isPrototypeOf(instance)) { + return true; + } + const targetId = Object.prototype.hasOwnProperty.call(this, "shapeId") ? this.shapeId : void 0; + let candidateHasShapeId = false; + if (targetId) { + let proto = Object.getPrototypeOf(candidate); + while (proto && proto !== Object.prototype) { + const ctor = proto.constructor; + const candidateId = ctor !== _ServiceException && Object.prototype.hasOwnProperty.call(ctor, "shapeId") ? ctor?.shapeId : void 0; + if (candidateId) { + candidateHasShapeId = true; + if (candidateId === targetId) { + return true; + } + } + proto = Object.getPrototypeOf(proto); + } + } + if (targetId && candidateHasShapeId) { + return false; + } + const targetName = this.name; + if (targetName && targetName.length >= 6) { + if (candidate.name === targetName) { + return true; + } + let proto = Object.getPrototypeOf(candidate); + while (proto && proto !== Object.prototype) { + const ctorName = proto.constructor?.name; + if (ctorName && ctorName !== "Error" && ctorName === targetName) { + return true; + } + proto = Object.getPrototypeOf(proto); + } + } + } + return false; + } + }; + decorateServiceException = /* @__PURE__ */ __name((exception, additions = {}) => { + Object.entries(additions).filter(([, v]) => v !== void 0).forEach(([k, v]) => { + if (exception[k] == void 0 || exception[k] === "") { + exception[k] = v; + } + }); + const message = exception.message || exception.Message || "UnknownError"; + exception.message = message; + delete exception.Message; + return exception; + }, "decorateServiceException"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/default-error-handler.js +var throwDefaultError, withBaseException, deserializeMetadata; +var init_default_error_handler = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/default-error-handler.js"() { + init_exceptions(); + throwDefaultError = /* @__PURE__ */ __name(({ output, parsedBody, exceptionCtor, errorCode }) => { + const $metadata = deserializeMetadata(output); + const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : void 0; + const response = new exceptionCtor({ + name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || "UnknownError", + $fault: "client", + $metadata + }); + throw decorateServiceException(response, parsedBody); + }, "throwDefaultError"); + withBaseException = /* @__PURE__ */ __name((ExceptionCtor) => { + return ({ output, parsedBody, errorCode }) => { + throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode }); + }; + }, "withBaseException"); + deserializeMetadata = /* @__PURE__ */ __name((output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"] + }), "deserializeMetadata"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/defaults-mode.js +var loadConfigsForDefaultMode; +var init_defaults_mode = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/defaults-mode.js"() { + loadConfigsForDefaultMode = /* @__PURE__ */ __name((mode) => { + switch (mode) { + case "standard": + return { + retryMode: "standard", + connectionTimeout: 3100 + }; + case "in-region": + return { + retryMode: "standard", + connectionTimeout: 1100 + }; + case "cross-region": + return { + retryMode: "standard", + connectionTimeout: 3100 + }; + case "mobile": + return { + retryMode: "standard", + connectionTimeout: 3e4 + }; + default: + return {}; + } + }, "loadConfigsForDefaultMode"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/emitWarningIfUnsupportedVersion.js +var warningEmitted, emitWarningIfUnsupportedVersion; +var init_emitWarningIfUnsupportedVersion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/emitWarningIfUnsupportedVersion.js"() { + warningEmitted = false; + emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => { + if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 16) { + warningEmitted = true; + } + }, "emitWarningIfUnsupportedVersion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/checksum.js +var import_types8, knownAlgorithms, getChecksumConfiguration, resolveChecksumRuntimeConfig; +var init_checksum = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/checksum.js"() { + init_transport(); + import_types8 = __toESM(require_dist_cjs()); + knownAlgorithms = Object.values(import_types8.AlgorithmId); + getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + const checksumAlgorithms = []; + for (const id in import_types8.AlgorithmId) { + if (!hasOwn(import_types8.AlgorithmId, id)) + continue; + const algorithmId = import_types8.AlgorithmId[id]; + if (runtimeConfig[algorithmId] === void 0) { + continue; + } + checksumAlgorithms.push({ + algorithmId: /* @__PURE__ */ __name(() => algorithmId, "algorithmId"), + checksumConstructor: /* @__PURE__ */ __name(() => runtimeConfig[algorithmId], "checksumConstructor") + }); + } + for (const [id, ChecksumCtor] of Object.entries(runtimeConfig.checksumAlgorithms ?? {})) { + checksumAlgorithms.push({ + algorithmId: /* @__PURE__ */ __name(() => id, "algorithmId"), + checksumConstructor: /* @__PURE__ */ __name(() => ChecksumCtor, "checksumConstructor") + }); + } + return { + addChecksumAlgorithm(algo) { + runtimeConfig.checksumAlgorithms = runtimeConfig.checksumAlgorithms ?? {}; + const id = algo.algorithmId(); + const ctor = algo.checksumConstructor(); + if (knownAlgorithms.includes(id)) { + runtimeConfig.checksumAlgorithms[id.toUpperCase()] = ctor; + } else { + runtimeConfig.checksumAlgorithms[id] = ctor; + } + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + } + }; + }, "getChecksumConfiguration"); + resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + const id = checksumAlgorithm.algorithmId(); + if (knownAlgorithms.includes(id)) { + runtimeConfig[id] = checksumAlgorithm.checksumConstructor(); + } + }); + return runtimeConfig; + }, "resolveChecksumRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/retry.js +var getRetryConfiguration, resolveRetryRuntimeConfig; +var init_retry = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/retry.js"() { + getRetryConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + return { + setRetryStrategy(retryStrategy) { + runtimeConfig.retryStrategy = retryStrategy; + }, + retryStrategy() { + return runtimeConfig.retryStrategy; + } + }; + }, "getRetryConfiguration"); + resolveRetryRuntimeConfig = /* @__PURE__ */ __name((retryStrategyConfiguration) => { + const runtimeConfig = {}; + runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy(); + return runtimeConfig; + }, "resolveRetryRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/defaultExtensionConfiguration.js +var getDefaultExtensionConfiguration, getDefaultClientConfiguration, resolveDefaultRuntimeConfig; +var init_defaultExtensionConfiguration = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/defaultExtensionConfiguration.js"() { + init_checksum(); + init_retry(); + getDefaultExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig)); + }, "getDefaultExtensionConfiguration"); + getDefaultClientConfiguration = getDefaultExtensionConfiguration; + resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => { + return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config)); + }, "resolveDefaultRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-array-if-single-item.js +var getArrayIfSingleItem; +var init_get_array_if_single_item = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-array-if-single-item.js"() { + getArrayIfSingleItem = /* @__PURE__ */ __name((mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray], "getArrayIfSingleItem"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js +var getValueFromTextNode; +var init_get_value_from_text_node = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js"() { + init_transport(); + getValueFromTextNode = /* @__PURE__ */ __name((obj) => { + const textNodeName = "#text"; + for (const key in obj) { + if (!hasOwn(obj, key)) + continue; + if (obj[key][textNodeName] !== void 0) { + obj[key] = obj[key][textNodeName]; + } else if (typeof obj[key] === "object" && obj[key] !== null) { + obj[key] = getValueFromTextNode(obj[key]); + } + } + return obj; + }, "getValueFromTextNode"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/is-serializable-header-value.js +var isSerializableHeaderValue; +var init_is_serializable_header_value = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/is-serializable-header-value.js"() { + isSerializableHeaderValue = /* @__PURE__ */ __name((value) => { + return value != null; + }, "isSerializableHeaderValue"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/NoOpLogger.js +var NoOpLogger; +var init_NoOpLogger = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/NoOpLogger.js"() { + NoOpLogger = class { + static { + __name(this, "NoOpLogger"); + } + trace() { + } + debug() { + } + info() { + } + warn() { + } + error() { + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/object-mapping.js +function map2(arg0, arg1, arg2) { + let target; + let filter; + let instructions; + if (typeof arg1 === "undefined" && typeof arg2 === "undefined") { + target = {}; + instructions = arg0; + } else { + target = arg0; + if (typeof arg1 === "function") { + filter = arg1; + instructions = arg2; + return mapWithFilter(target, filter, instructions); + } else { + instructions = arg1; + } + } + for (const key in instructions) { + if (!hasOwn(instructions, key)) + continue; + if (!Array.isArray(instructions[key])) { + target[key] = instructions[key]; + continue; + } + applyInstruction(target, null, instructions, key); + } + return target; +} +var convertMap, take, mapWithFilter, applyInstruction, nonNullish, pass; +var init_object_mapping = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/object-mapping.js"() { + init_transport(); + __name(map2, "map"); + convertMap = /* @__PURE__ */ __name((target) => { + const output = {}; + for (const [k, v] of Object.entries(target || {})) { + output[k] = [, v]; + } + return output; + }, "convertMap"); + take = /* @__PURE__ */ __name((source, instructions) => { + const out = {}; + for (const key in instructions) { + if (!hasOwn(instructions, key)) + continue; + applyInstruction(out, source, instructions, key); + } + return out; + }, "take"); + mapWithFilter = /* @__PURE__ */ __name((target, filter, instructions) => { + return map2(target, Object.entries(instructions).reduce((_instructions, [key, value]) => { + if (Array.isArray(value)) { + _instructions[key] = value; + } else { + if (typeof value === "function") { + _instructions[key] = [filter, value()]; + } else { + _instructions[key] = [filter, value]; + } + } + return _instructions; + }, {})); + }, "mapWithFilter"); + applyInstruction = /* @__PURE__ */ __name((target, source, instructions, targetKey) => { + if (source !== null) { + let instruction = instructions[targetKey]; + if (typeof instruction === "function") { + instruction = [, instruction]; + } + const [filter2 = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction; + if (typeof filter2 === "function" && filter2(source[sourceKey]) || typeof filter2 !== "function" && !!filter2) { + target[targetKey] = valueFn(source[sourceKey]); + } + return; + } + let [filter, value] = instructions[targetKey]; + if (typeof value === "function") { + let _value; + const defaultFilterPassed = filter === void 0 && (_value = value()) != null; + const customFilterPassed = typeof filter === "function" && !!filter(void 0) || typeof filter !== "function" && !!filter; + if (defaultFilterPassed) { + target[targetKey] = _value; + } else if (customFilterPassed) { + target[targetKey] = value(); + } + } else { + const defaultFilterPassed = filter === void 0 && value != null; + const customFilterPassed = typeof filter === "function" && !!filter(value) || typeof filter !== "function" && !!filter; + if (defaultFilterPassed || customFilterPassed) { + target[targetKey] = value; + } + } + }, "applyInstruction"); + nonNullish = /* @__PURE__ */ __name((_) => _ != null, "nonNullish"); + pass = /* @__PURE__ */ __name((_) => _, "pass"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/ser-utils.js +var serializeFloat, serializeDateTime; +var init_ser_utils = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/ser-utils.js"() { + serializeFloat = /* @__PURE__ */ __name((value) => { + if (value !== value) { + return "NaN"; + } + switch (value) { + case Infinity: + return "Infinity"; + case -Infinity: + return "-Infinity"; + default: + return value; + } + }, "serializeFloat"); + serializeDateTime = /* @__PURE__ */ __name((date2) => date2.toISOString().replace(".000Z", "Z"), "serializeDateTime"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/serde-json.js +var _json; +var init_serde_json = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/serde-json.js"() { + init_transport(); + _json = /* @__PURE__ */ __name((obj) => { + if (obj == null) { + return {}; + } + if (Array.isArray(obj)) { + return obj.filter((_) => _ != null).map(_json); + } + if (typeof obj === "object") { + const target = {}; + for (const key in obj) { + if (!hasOwn(obj, key)) + continue; + if (obj[key] == null) { + continue; + } + target[key] = _json(obj[key]); + } + return target; + } + return obj; + }, "_json"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js +function makeBuilder(common, service, name, ep) { + return /* @__PURE__ */ __name(function makeCommand(added, plugins, op2, $, smithyContext = {}) { + const epMerged = Object.assign({}, common, added); + return Command.classBuilder().ep(epMerged).m(function(CommandCtor, clientStack, config, options) { + const list2 = plugins.call(this, CommandCtor, clientStack, config, options); + list2.unshift(ep(config, CommandCtor.getEndpointParameterInstructions())); + return list2; + }).s(service, op2, smithyContext).n(name, op2.charAt(0).toUpperCase() + op2.slice(1) + "Command").sc($).build(); + }, "makeCommand"); +} +var init_client_command_builder = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js"() { + init_command(); + __name(makeBuilder, "makeBuilder"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/index.js +var client_exports = {}; +__export(client_exports, { + AlgorithmId: () => import_types8.AlgorithmId, + Client: () => Client, + Command: () => Command, + NoOpLogger: () => NoOpLogger, + SENSITIVE_STRING: () => SENSITIVE_STRING2, + ServiceException: () => ServiceException, + WaiterState: () => WaiterState, + _json: () => _json, + checkExceptions: () => checkExceptions, + constructStack: () => constructStack, + convertMap: () => convertMap, + createAggregatedClient: () => createAggregatedClient, + createWaiter: () => createWaiter, + decorateServiceException: () => decorateServiceException, + emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion, + getArrayIfSingleItem: () => getArrayIfSingleItem, + getChecksumConfiguration: () => getChecksumConfiguration, + getDefaultClientConfiguration: () => getDefaultClientConfiguration, + getDefaultExtensionConfiguration: () => getDefaultExtensionConfiguration, + getRetryConfiguration: () => getRetryConfiguration, + getSmithyContext: () => getSmithyContext, + getValueFromTextNode: () => getValueFromTextNode, + invalidFunction: () => invalidFunction, + invalidProvider: () => invalidProvider, + isSerializableHeaderValue: () => isSerializableHeaderValue, + loadConfigsForDefaultMode: () => loadConfigsForDefaultMode, + makeBuilder: () => makeBuilder, + map: () => map2, + normalizeProvider: () => normalizeProvider, + resolveChecksumRuntimeConfig: () => resolveChecksumRuntimeConfig, + resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig, + resolveRetryRuntimeConfig: () => resolveRetryRuntimeConfig, + schemaLogFilter: () => schemaLogFilter, + serializeDateTime: () => serializeDateTime, + serializeFloat: () => serializeFloat, + take: () => take, + throwDefaultError: () => throwDefaultError, + waiterServiceDefaults: () => waiterServiceDefaults, + withBaseException: () => withBaseException +}); +var init_client2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/client/index.js"() { + init_MiddlewareStack(); + init_transport(); + init_transport(); + init_invalidFunction(); + init_invalidProvider(); + init_createWaiter(); + init_waiter(); + init_client(); + init_command(); + init_constants2(); + init_create_aggregated_client(); + init_default_error_handler(); + init_defaults_mode(); + init_emitWarningIfUnsupportedVersion(); + init_exceptions(); + init_defaultExtensionConfiguration(); + init_checksum(); + init_retry(); + init_get_array_if_single_item(); + init_get_value_from_text_node(); + init_is_serializable_header_value(); + init_NoOpLogger(); + init_object_mapping(); + init_schemaLogFilter(); + init_ser_utils(); + init_serde_json(); + init_client_command_builder(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/resolveCustomEndpointsConfig.js +var resolveCustomEndpointsConfig; +var init_resolveCustomEndpointsConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/resolveCustomEndpointsConfig.js"() { + init_client2(); + resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => { + const { tls, endpoint, urlParser, useDualstackEndpoint } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false) + }); + }, "resolveCustomEndpointsConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/utils/getEndpointFromRegion.js +var getEndpointFromRegion; +var init_getEndpointFromRegion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/utils/getEndpointFromRegion.js"() { + getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => { + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); + } + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); + } + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); + }, "getEndpointFromRegion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/resolveEndpointsConfig.js +var resolveEndpointsConfig; +var init_resolveEndpointsConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/resolveEndpointsConfig.js"() { + init_client2(); + init_getEndpointFromRegion(); + resolveEndpointsConfig = /* @__PURE__ */ __name((input) => { + const useDualstackEndpoint = normalizeProvider(input.useDualstackEndpoint ?? false); + const { endpoint, useFipsEndpoint, urlParser, tls } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: endpoint ? normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint + }); + }, "resolveEndpointsConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/constants.js +var AWS_EXECUTION_ENV, AWS_REGION_ENV, AWS_DEFAULT_REGION_ENV, ENV_IMDS_DISABLED, DEFAULTS_MODE_OPTIONS, IMDS_REGION_PATH, IMDS_TOKEN_PATH, X_AWS_EC2_METADATA_TOKEN, X_AWS_EC2_METADATA_TOKEN_TTL; +var init_constants3 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/constants.js"() { + AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; + AWS_REGION_ENV = "AWS_REGION"; + AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; + ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; + DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; + IMDS_REGION_PATH = "/latest/meta-data/placement/region"; + IMDS_TOKEN_PATH = "/latest/api/token"; + X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; + X_AWS_EC2_METADATA_TOKEN_TTL = "x-aws-ec2-metadata-token-ttl-seconds"; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.js +var TIMEOUT_MS, NEG_CACHE_TTL_MS, negativeCacheUntil, getInstanceMetadataRegion, cacheNegativeAndReturnUndefined, resolveImdsEndpoint, imdsRequest; +var init_getInstanceMetadataRegion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.js"() { + init_constants3(); + TIMEOUT_MS = 1e3; + NEG_CACHE_TTL_MS = 6e4; + negativeCacheUntil = 0; + getInstanceMetadataRegion = /* @__PURE__ */ __name(async () => { + if (process.env[ENV_IMDS_DISABLED]) { + return void 0; + } + if (Date.now() < negativeCacheUntil) { + return void 0; + } + try { + const endpoint = resolveImdsEndpoint(); + const token = (await imdsRequest({ + ...endpoint, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + [X_AWS_EC2_METADATA_TOKEN_TTL]: "21600" + } + })).toString(); + const region = (await imdsRequest({ + ...endpoint, + path: IMDS_REGION_PATH, + method: "GET", + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token + } + })).toString().trim(); + return region || cacheNegativeAndReturnUndefined(); + } catch { + return cacheNegativeAndReturnUndefined(); + } + }, "getInstanceMetadataRegion"); + cacheNegativeAndReturnUndefined = /* @__PURE__ */ __name(() => { + negativeCacheUntil = Date.now() + NEG_CACHE_TTL_MS; + return void 0; + }, "cacheNegativeAndReturnUndefined"); + resolveImdsEndpoint = /* @__PURE__ */ __name(() => { + const envEndpoint = process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT; + if (envEndpoint) { + const url = new URL(envEndpoint); + return { + hostname: url.hostname.replace(/^\[(.+)]$/, "$1"), + port: url.port ? Number(url.port) : void 0 + }; + } + if (process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE === "IPv6") { + return { hostname: "fd00:ec2::254" }; + } + return { hostname: "169.254.169.254" }; + }, "resolveImdsEndpoint"); + imdsRequest = /* @__PURE__ */ __name(async (options) => { + const { request } = await import("node:http"); + return new Promise((resolve, reject) => { + const req = request({ + hostname: options.hostname, + port: options.port, + path: options.path, + method: options.method, + headers: options.headers, + timeout: TIMEOUT_MS, + signal: AbortSignal.timeout(TIMEOUT_MS) + }); + req.on("error", (err) => { + reject(err); + req.destroy(); + }); + req.on("timeout", () => { + reject(new Error("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || statusCode >= 300) { + reject(Object.assign(new Error("Error response received from instance metadata service"), { statusCode })); + req.destroy(); + return; + } + const chunks = []; + res.on("data", (chunk) => chunks.push(chunk)); + res.on("end", () => { + resolve(Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); + }, "imdsRequest"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/config.js +var REGION_ENV_NAME, REGION_INI_NAME, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS; +var init_config = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/config.js"() { + init_getInstanceMetadataRegion(); + REGION_ENV_NAME = "AWS_REGION"; + REGION_INI_NAME = "region"; + NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => env[REGION_ENV_NAME], "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => profile[REGION_INI_NAME], "configFileSelector"), + default: /* @__PURE__ */ __name(async () => { + const region = await getInstanceMetadataRegion(); + if (region) { + return region; + } + throw new Error("Region is missing"); + }, "default") + }; + NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials" + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/checkRegion.js +var validRegions, checkRegion; +var init_checkRegion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/checkRegion.js"() { + init_transport(); + validRegions = /* @__PURE__ */ new Set(); + checkRegion = /* @__PURE__ */ __name((region, check = isValidHostLabel) => { + if (!validRegions.has(region) && !check(region)) { + if (region === "*") { + console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`); + } else { + throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + } + } else { + validRegions.add(region); + } + }, "checkRegion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/isFipsRegion.js +var isFipsRegion; +var init_isFipsRegion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/isFipsRegion.js"() { + isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")), "isFipsRegion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getRealRegion.js +var getRealRegion; +var init_getRealRegion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getRealRegion.js"() { + init_isFipsRegion(); + getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? ["fips-aws-global", "aws-fips"].includes(region) ? "us-east-1" : region.replace(/fips-(dkr-|prod-)?|-fips/, "") : region, "getRealRegion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/resolveRegionConfig.js +var resolveRegionConfig; +var init_resolveRegionConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/resolveRegionConfig.js"() { + init_checkRegion(); + init_getRealRegion(); + init_isFipsRegion(); + resolveRegionConfig = /* @__PURE__ */ __name((input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return Object.assign(input, { + region: /* @__PURE__ */ __name(async () => { + const providedRegion = typeof region === "function" ? await region() : region; + const realRegion = getRealRegion(providedRegion); + checkRegion(realRegion); + return realRegion; + }, "region"), + useFipsEndpoint: /* @__PURE__ */ __name(async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if (isFipsRegion(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + }, "useFipsEndpoint") + }); + }, "resolveRegionConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getHostnameFromVariants.js +var getHostnameFromVariants; +var init_getHostnameFromVariants = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getHostnameFromVariants.js"() { + getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => variants.find(({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack"))?.hostname, "getHostnameFromVariants"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getResolvedHostname.js +var getResolvedHostname; +var init_getResolvedHostname = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getResolvedHostname.js"() { + getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace("{region}", resolvedRegion) : void 0, "getResolvedHostname"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getResolvedPartition.js +var getResolvedPartition; +var init_getResolvedPartition = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getResolvedPartition.js"() { + getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws", "getResolvedPartition"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getResolvedSigningRegion.js +var getResolvedSigningRegion; +var init_getResolvedSigningRegion = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getResolvedSigningRegion.js"() { + getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } + }, "getResolvedSigningRegion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getRegionInfo.js +var getRegionInfo; +var init_getRegionInfo = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionInfo/getRegionInfo.js"() { + init_getHostnameFromVariants(); + init_getResolvedHostname(); + init_getResolvedPartition(); + init_getResolvedSigningRegion(); + getRegionInfo = /* @__PURE__ */ __name((region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash }) => { + const partition = getResolvedPartition(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : partitionHash[partition]?.endpoint ?? region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = getHostnameFromVariants(regionHash[resolvedRegion]?.variants, hostnameOptions); + const partitionHostname = getHostnameFromVariants(partitionHash[partition]?.variants, hostnameOptions); + const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === void 0) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = getResolvedSigningRegion(hostname, { + signingRegion: regionHash[resolvedRegion]?.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint + }); + return { + partition, + signingService, + hostname, + ...signingRegion && { signingRegion }, + ...regionHash[resolvedRegion]?.signingService && { + signingService: regionHash[resolvedRegion].signingService + } + }; + }, "getRegionInfo"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/defaultsModeConfig.js +var AWS_DEFAULTS_MODE_ENV, AWS_DEFAULTS_MODE_CONFIG, NODE_DEFAULTS_MODE_CONFIG_OPTIONS; +var init_defaultsModeConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/defaultsModeConfig.js"() { + AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; + AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; + NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => { + return env[AWS_DEFAULTS_MODE_ENV]; + }, "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => { + return profile[AWS_DEFAULTS_MODE_CONFIG]; + }, "configFileSelector"), + default: "legacy" + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/resolveDefaultsModeConfig.js +var resolveDefaultsModeConfig, resolveNodeDefaultsModeAuto, inferPhysicalRegion; +var init_resolveDefaultsModeConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/resolveDefaultsModeConfig.js"() { + init_config(); + init_getInstanceMetadataRegion(); + init_configLoader(); + init_memoize(); + init_constants3(); + init_defaultsModeConfig(); + resolveDefaultsModeConfig = /* @__PURE__ */ __name(({ region = loadConfig(NODE_REGION_CONFIG_OPTIONS), defaultsMode = loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS) } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return resolveNodeDefaultsModeAuto(region); + case "in-region": + case "cross-region": + case "mobile": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case void 0: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } + }), "resolveDefaultsModeConfig"); + resolveNodeDefaultsModeAuto = /* @__PURE__ */ __name(async (clientRegion) => { + if (clientRegion) { + const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; + const inferredRegion = await inferPhysicalRegion(); + if (!inferredRegion) { + return "standard"; + } + if (resolvedRegion === inferredRegion) { + return "in-region"; + } else { + return "cross-region"; + } + } + return "standard"; + }, "resolveNodeDefaultsModeAuto"); + inferPhysicalRegion = /* @__PURE__ */ __name(async () => { + if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { + return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; + } + return getInstanceMetadataRegion(); + }, "inferPhysicalRegion"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/index.js +var config_exports = {}; +__export(config_exports, { + CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR, + CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT, + CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT, + CredentialsProviderError: () => CredentialsProviderError, + DEFAULT_PROFILE: () => DEFAULT_PROFILE, + DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT, + DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT, + ENV_PROFILE: () => ENV_PROFILE, + ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT, + ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT, + NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS, + NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS, + NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, + NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, + ProviderError: () => ProviderError, + REGION_ENV_NAME: () => REGION_ENV_NAME, + REGION_INI_NAME: () => REGION_INI_NAME, + SelectorType: () => SelectorType, + TokenProviderError: () => TokenProviderError, + booleanSelector: () => booleanSelector, + chain: () => chain, + externalDataInterceptor: () => externalDataInterceptor, + fromStatic: () => fromStatic, + fromValue: () => fromValue, + getHomeDir: () => getHomeDir, + getProfileName: () => getProfileName, + getRegionInfo: () => getRegionInfo, + getSSOTokenFilepath: () => getSSOTokenFilepath, + getSSOTokenFromFile: () => getSSOTokenFromFile, + loadConfig: () => loadConfig, + loadSharedConfigFiles: () => loadSharedConfigFiles, + loadSsoSessionData: () => loadSsoSessionData, + memoize: () => memoize, + nodeDualstackConfigSelectors: () => nodeDualstackConfigSelectors, + nodeFipsConfigSelectors: () => nodeFipsConfigSelectors, + numberSelector: () => numberSelector, + parseKnownFiles: () => parseKnownFiles, + readFile: () => readFile2, + resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig, + resolveDefaultsModeConfig: () => resolveDefaultsModeConfig, + resolveEndpointsConfig: () => resolveEndpointsConfig, + resolveRegionConfig: () => resolveRegionConfig +}); +var init_config2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/config/index.js"() { + init_ProviderError(); + init_CredentialsProviderError(); + init_TokenProviderError(); + init_chain(); + init_fromValue(); + init_memoize(); + init_booleanSelector(); + init_numberSelector(); + init_types(); + init_getHomeDir(); + init_getProfileName(); + init_getSSOTokenFilepath(); + init_getSSOTokenFromFile(); + init_constants(); + init_loadSharedConfigFiles(); + init_loadSsoSessionData(); + init_parseKnownFiles(); + init_externalDataInterceptor(); + init_readFile(); + init_configLoader(); + init_fromStatic(); + init_NodeUseDualstackEndpointConfigOptions(); + init_NodeUseFipsEndpointConfigOptions(); + init_resolveCustomEndpointsConfig(); + init_resolveEndpointsConfig(); + init_config(); + init_resolveRegionConfig(); + init_getRegionInfo(); + init_resolveDefaultsModeConfig(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointUrlConfig.js +var ENV_ENDPOINT_URL, CONFIG_ENDPOINT_URL, getEndpointUrlConfig; +var init_getEndpointUrlConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointUrlConfig.js"() { + init_config2(); + ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; + CONFIG_ENDPOINT_URL = "endpoint_url"; + getEndpointUrlConfig = /* @__PURE__ */ __name((serviceId) => ({ + environmentVariableSelector: /* @__PURE__ */ __name((env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return void 0; + }, "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile, config) => { + if (profile.services) { + const servicesSectionKey = ["services", profile.services].join(CONFIG_PREFIX_SEPARATOR); + if (!config || !config[servicesSectionKey]) { + throw new Error(`The services section "${profile.services}" specified in the profile is not present in the shared configuration file.`); + } + const servicesSection = config[servicesSectionKey]; + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl2 = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl2) + return endpointUrl2; + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return void 0; + }, "configFileSelector"), + default: void 0 + }), "getEndpointUrlConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getIgnoreConfiguredEndpointUrls.js +var ENV_IGNORE_CONFIGURED_ENDPOINT_URLS, CONFIG_IGNORE_CONFIGURED_ENDPOINT_URLS, ignoreConfiguredEndpointUrlsConfigSelectors; +var init_getIgnoreConfiguredEndpointUrls = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getIgnoreConfiguredEndpointUrls.js"() { + init_config2(); + ENV_IGNORE_CONFIGURED_ENDPOINT_URLS = "AWS_IGNORE_CONFIGURED_ENDPOINT_URLS"; + CONFIG_IGNORE_CONFIGURED_ENDPOINT_URLS = "ignore_configured_endpoint_urls"; + ignoreConfiguredEndpointUrlsConfigSelectors = { + environmentVariableSelector: /* @__PURE__ */ __name((env) => booleanSelector(env, ENV_IGNORE_CONFIGURED_ENDPOINT_URLS, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, CONFIG_IGNORE_CONFIGURED_ENDPOINT_URLS, SelectorType.CONFIG), "configFileSelector"), + default: false + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromConfig.js +var getEndpointFromConfig; +var init_getEndpointFromConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromConfig.js"() { + init_config2(); + init_getEndpointUrlConfig(); + init_getIgnoreConfiguredEndpointUrls(); + getEndpointFromConfig = /* @__PURE__ */ __name(async (serviceId) => { + const ignore = await loadConfig(ignoreConfiguredEndpointUrlsConfigSelectors)(); + if (ignore) { + return void 0; + } + return loadConfig(getEndpointUrlConfig(serviceId ?? ""))(); + }, "getEndpointFromConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/service-customizations/s3.js +var resolveParamsForS3, DOMAIN_PATTERN, IP_ADDRESS_PATTERN, DOTS_PATTERN, isDnsCompatibleBucketName, isArnBucketName; +var init_s3 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/service-customizations/s3.js"() { + resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => { + const bucket = endpointParams?.Bucket || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if (isArnBucketName(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); + } + } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:") || bucket.toLowerCase() !== bucket || bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; + }, "resolveParamsForS3"); + DOMAIN_PATTERN = /^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/; + IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; + DOTS_PATTERN = /\.\./; + isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), "isDnsCompatibleBucketName"); + isArnBucketName = /* @__PURE__ */ __name((bucketName) => { + const [arn, partition, service, , , bucket] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = Boolean(isArn && partition && service && bucket); + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return isValidArn; + }, "isArnBucketName"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/service-customizations/index.js +var init_service_customizations = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/service-customizations/index.js"() { + init_s3(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/createConfigValueProvider.js +var createConfigValueProvider; +var init_createConfigValueProvider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/createConfigValueProvider.js"() { + createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config, isClientContextParam = false) => { + const configProvider = /* @__PURE__ */ __name(async () => { + let configValue; + if (isClientContextParam) { + const clientContextParams = config.clientContextParams; + const nestedValue = clientContextParams?.[configKey]; + configValue = nestedValue ?? config[configKey] ?? config[canonicalEndpointParamKey]; + } else { + configValue = config[configKey] ?? config[canonicalEndpointParamKey]; + } + if (typeof configValue === "function") { + return configValue(); + } + return configValue; + }, "configProvider"); + if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.credentialScope ?? credentials?.CredentialScope; + return configValue; + }; + } + if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.accountId ?? credentials?.AccountId; + return configValue; + }; + } + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + if (config.isCustomEndpoint === false) { + return void 0; + } + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; + }, "createConfigValueProvider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/toEndpointV1.js +var init_toEndpointV12 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/toEndpointV1.js"() { + init_transport(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromInstructions.js +function bindGetEndpointFromInstructions(getEndpointFromConfig2) { + return async (commandInput, instructionsSupplier, clientConfig, context) => { + if (!clientConfig.isCustomEndpoint && !clientConfig.ignoreConfiguredEndpointUrls) { + let endpointFromConfig; + if (clientConfig.serviceConfiguredEndpoint) { + endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); + } else { + endpointFromConfig = await getEndpointFromConfig2(clientConfig.serviceId); + } + if (endpointFromConfig) { + clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); + clientConfig.isCustomEndpoint = true; + context?.logger?.debug?.(`@smithy/core/endpoints - resolved endpoint from config: ${endpointFromConfig}`); + } + } + const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + if (clientConfig.isCustomEndpoint && clientConfig.endpoint) { + const customEndpoint = await clientConfig.endpoint(); + if (customEndpoint?.headers) { + endpoint.headers ??= {}; + for (const [name, value] of Object.entries(customEndpoint.headers)) { + endpoint.headers[name] = Array.isArray(value) ? value : [value]; + } + } + } + return endpoint; + }; +} +var resolveParams; +var init_getEndpointFromInstructions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromInstructions.js"() { + init_service_customizations(); + init_createConfigValueProvider(); + init_toEndpointV12(); + __name(bindGetEndpointFromInstructions, "bindGetEndpointFromInstructions"); + resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => { + const endpointParams = {}; + const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig, instruction.type !== "builtInParams")(); + break; + case "operationContextParams": + endpointParams[name] = instruction.get(commandInput); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await resolveParamsForS3(endpointParams); + } + return endpointParams; + }, "resolveParams"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/endpointMiddleware.js +function setFeature(context, feature, value) { + if (!context.__smithy_context) { + context.__smithy_context = { features: {} }; + } else if (!context.__smithy_context.features) { + context.__smithy_context.features = {}; + } + context.__smithy_context.features[feature] = value; +} +function bindEndpointMiddleware(getEndpointFromConfig2) { + const getEndpointFromInstructions2 = bindGetEndpointFromInstructions(getEndpointFromConfig2); + return ({ config, instructions }) => { + return (next, context) => async (args) => { + if (config.isCustomEndpoint) { + setFeature(context, "ENDPOINT_OVERRIDE", "N"); + } + const endpoint = await getEndpointFromInstructions2(args.input, { + getEndpointParameterInstructions() { + return instructions; + } + }, { ...config }, context); + context.endpointV2 = endpoint; + context.authSchemes = endpoint.properties?.authSchemes; + const authScheme = context.authSchemes?.[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + const smithyContext = getSmithyContext(context); + const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption; + if (httpAuthOption) { + httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, { + signing_region: authScheme.signingRegion, + signingRegion: authScheme.signingRegion, + signing_service: authScheme.signingName, + signingName: authScheme.signingName, + signingRegionSet: authScheme.signingRegionSet + }, authScheme.properties); + } + } + return next({ + ...args + }); + }; + }; +} +var init_endpointMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/endpointMiddleware.js"() { + init_transport(); + init_getEndpointFromInstructions(); + __name(setFeature, "setFeature"); + __name(bindEndpointMiddleware, "bindEndpointMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/getEndpointPlugin.js +function bindGetEndpointPlugin(getEndpointFromConfig2) { + const endpointMiddleware2 = bindEndpointMiddleware(getEndpointFromConfig2); + return (config, instructions) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(endpointMiddleware2({ + config, + instructions + }), endpointMiddlewareOptions); + }, "applyToStack") + }); +} +var serializerMiddlewareOption2, endpointMiddlewareOptions; +var init_getEndpointPlugin = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/getEndpointPlugin.js"() { + init_endpointMiddleware(); + serializerMiddlewareOption2 = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true + }; + endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: serializerMiddlewareOption2.name + }; + __name(bindGetEndpointPlugin, "bindGetEndpointPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointConfig.js +function bindResolveEndpointConfig(getEndpointFromConfig2) { + return (input) => { + const tls = input.tls ?? true; + const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input; + const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await normalizeProvider(endpoint)()) : void 0; + const isCustomEndpoint = !!endpoint; + const resolvedConfig = Object.assign(input, { + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false), + useFipsEndpoint: normalizeProvider(useFipsEndpoint ?? false), + ignoreConfiguredEndpointUrls: !!input.ignoreConfiguredEndpointUrls + }); + let configuredEndpointPromise = void 0; + resolvedConfig.serviceConfiguredEndpoint = async () => { + if (input.serviceId && !configuredEndpointPromise) { + configuredEndpointPromise = getEndpointFromConfig2(input.serviceId); + } + return configuredEndpointPromise; + }; + return resolvedConfig; + }; +} +var init_resolveEndpointConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointConfig.js"() { + init_transport(); + init_toEndpointV12(); + __name(bindResolveEndpointConfig, "bindResolveEndpointConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/bdd/BinaryDecisionDiagram.js +var BinaryDecisionDiagram; +var init_BinaryDecisionDiagram = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/bdd/BinaryDecisionDiagram.js"() { + BinaryDecisionDiagram = class _BinaryDecisionDiagram { + static { + __name(this, "BinaryDecisionDiagram"); + } + nodes; + root; + conditions; + results; + constructor(bdd, root, conditions, results) { + this.nodes = bdd; + this.root = root; + this.conditions = conditions; + this.results = results; + } + static from(bdd, root, conditions, results) { + return new _BinaryDecisionDiagram(bdd, root, conditions, results); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/cache/EndpointCache.js +var EndpointCache; +var init_EndpointCache = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/cache/EndpointCache.js"() { + EndpointCache = class { + static { + __name(this, "EndpointCache"); + } + capacity; + data = /* @__PURE__ */ new Map(); + parameters = []; + constructor({ size, params }) { + this.capacity = size ?? 50; + if (params) { + this.parameters = params; + } + } + get(endpointParams, resolver) { + const key = this.hash(endpointParams); + if (key === false) { + return resolver(); + } + if (!this.data.has(key)) { + if (this.data.size > this.capacity + 10) { + const keys = this.data.keys(); + let i = 0; + while (true) { + const { value, done } = keys.next(); + this.data.delete(value); + if (done || ++i > 10) { + break; + } + } + } + this.data.set(key, resolver()); + } + return this.data.get(key); + } + size() { + return this.data.size; + } + hash(endpointParams) { + let buffer = ""; + const { parameters } = this; + if (parameters.length === 0) { + return false; + } + for (const param of parameters) { + const raw = endpointParams[param]; + const val = raw == null ? "\0" : String(raw); + if (val.includes("|;")) { + return false; + } + buffer += val + "|;"; + } + return buffer; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/types/EndpointError.js +var EndpointError; +var init_EndpointError = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/types/EndpointError.js"() { + EndpointError = class extends Error { + static { + __name(this, "EndpointError"); + } + constructor(message) { + super(message); + this.name = "EndpointError"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/types/index.js +var init_types2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/types/index.js"() { + init_EndpointError(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/debugId.js +var debugId; +var init_debugId = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/debugId.js"() { + debugId = "endpoints"; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/toDebugString.js +function toDebugString(input) { + if (typeof input !== "object" || input == null) { + return input; + } + if ("ref" in input) { + return `$${toDebugString(input.ref)}`; + } + if ("fn" in input) { + return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`; + } + return JSON.stringify(input, null, 2); +} +var init_toDebugString = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/toDebugString.js"() { + __name(toDebugString, "toDebugString"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/index.js +var init_debug = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/index.js"() { + init_debugId(); + init_toDebugString(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/customEndpointFunctions.js +var customEndpointFunctions; +var init_customEndpointFunctions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/customEndpointFunctions.js"() { + customEndpointFunctions = {}; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/booleanEquals.js +var booleanEquals; +var init_booleanEquals = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/booleanEquals.js"() { + booleanEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, "booleanEquals"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/coalesce.js +function coalesce(...args) { + for (const arg of args) { + if (arg != null) { + return arg; + } + } + return void 0; +} +var init_coalesce = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/coalesce.js"() { + __name(coalesce, "coalesce"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/getAttrPathList.js +var getAttrPathList; +var init_getAttrPathList = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/getAttrPathList.js"() { + init_types2(); + getAttrPathList = /* @__PURE__ */ __name((path) => { + const parts = path.split("."); + const pathList = []; + for (const part of parts) { + const squareBracketIndex = part.indexOf("["); + if (squareBracketIndex !== -1) { + if (part.indexOf("]") !== part.length - 1) { + throw new EndpointError(`Path: '${path}' does not end with ']'`); + } + const arrayIndex = part.slice(squareBracketIndex + 1, -1); + if (Number.isNaN(parseInt(arrayIndex))) { + throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`); + } + if (squareBracketIndex !== 0) { + pathList.push(part.slice(0, squareBracketIndex)); + } + pathList.push(arrayIndex); + } else { + pathList.push(part); + } + } + return pathList; + }, "getAttrPathList"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/getAttr.js +var getAttr; +var init_getAttr = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/getAttr.js"() { + init_types2(); + init_getAttrPathList(); + getAttr = /* @__PURE__ */ __name((value, path) => getAttrPathList(path).reduce((acc, index) => { + if (typeof acc !== "object") { + throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`); + } else if (Array.isArray(acc)) { + const i = parseInt(index); + return acc[i < 0 ? acc.length + i : i]; + } + return acc[index]; + }, value), "getAttr"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/isSet.js +var isSet; +var init_isSet = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/isSet.js"() { + isSet = /* @__PURE__ */ __name((value) => value != null, "isSet"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/ite.js +function ite(condition, trueValue, falseValue) { + return condition ? trueValue : falseValue; +} +var init_ite = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/ite.js"() { + __name(ite, "ite"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/not.js +var not; +var init_not = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/not.js"() { + not = /* @__PURE__ */ __name((value) => !value, "not"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/isIpAddress.js +var IP_V4_REGEX, isIpAddress; +var init_isIpAddress = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/isIpAddress.js"() { + IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`); + isIpAddress = /* @__PURE__ */ __name((value) => IP_V4_REGEX.test(value) || value.startsWith("[") && value.endsWith("]"), "isIpAddress"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/parseURL.js +var import_types12, DEFAULT_PORTS, parseURL; +var init_parseURL = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/parseURL.js"() { + import_types12 = __toESM(require_dist_cjs()); + init_isIpAddress(); + DEFAULT_PORTS = { + [import_types12.EndpointURLScheme.HTTP]: 80, + [import_types12.EndpointURLScheme.HTTPS]: 443 + }; + parseURL = /* @__PURE__ */ __name((value) => { + const whatwgURL = (() => { + try { + if (value instanceof URL) { + return value; + } + if (typeof value === "object" && "hostname" in value) { + const { hostname: hostname2, port, protocol: protocol2 = "", path = "", query = {} } = value; + const url = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : ""}${path}`); + url.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join("&"); + return url; + } + return new URL(value); + } catch (ignored) { + return null; + } + })(); + if (!whatwgURL) { + console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`); + return null; + } + const urlString = whatwgURL.href; + const { host, hostname, pathname, protocol, search } = whatwgURL; + if (search) { + return null; + } + const scheme = protocol.slice(0, -1); + if (!Object.values(import_types12.EndpointURLScheme).includes(scheme)) { + return null; + } + const isIp = isIpAddress(hostname); + const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`); + const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`; + return { + scheme, + authority, + path: pathname, + normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`, + isIp + }; + }, "parseURL"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/split.js +function split(value, delimiter, limit) { + if (limit === 1) { + return [value]; + } + if (value === "") { + return [""]; + } + const parts = value.split(delimiter); + if (limit === 0) { + return parts; + } + return parts.slice(0, limit - 1).concat(parts.slice(1).join(delimiter)); +} +var init_split = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/split.js"() { + __name(split, "split"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/stringEquals.js +var stringEquals; +var init_stringEquals = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/stringEquals.js"() { + stringEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, "stringEquals"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/substring.js +var substring; +var init_substring = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/substring.js"() { + substring = /* @__PURE__ */ __name((input, start, stop, reverse) => { + if (input == null || start >= stop || input.length < stop || /[^\u0000-\u007f]/.test(input)) { + return null; + } + if (!reverse) { + return input.substring(start, stop); + } + return input.substring(input.length - stop, input.length - start); + }, "substring"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/uriEncode.js +var uriEncode; +var init_uriEncode = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/uriEncode.js"() { + uriEncode = /* @__PURE__ */ __name((value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`), "uriEncode"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/index.js +var init_lib = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/index.js"() { + init_booleanEquals(); + init_coalesce(); + init_getAttr(); + init_isSet(); + init_transport(); + init_ite(); + init_not(); + init_parseURL(); + init_split(); + init_stringEquals(); + init_substring(); + init_uriEncode(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/endpointFunctions.js +var endpointFunctions; +var init_endpointFunctions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/endpointFunctions.js"() { + init_lib(); + endpointFunctions = { + booleanEquals, + coalesce, + getAttr, + isSet, + isValidHostLabel, + ite, + not, + parseURL, + split, + stringEquals, + substring, + uriEncode + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateTemplate.js +var evaluateTemplate; +var init_evaluateTemplate = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateTemplate.js"() { + init_lib(); + evaluateTemplate = /* @__PURE__ */ __name((template, options) => { + const evaluatedTemplateArr = []; + const { referenceRecord, endpointParams } = options; + let currentIndex = 0; + while (currentIndex < template.length) { + const openingBraceIndex = template.indexOf("{", currentIndex); + if (openingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(currentIndex)); + break; + } + evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex)); + const closingBraceIndex = template.indexOf("}", openingBraceIndex); + if (closingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(openingBraceIndex)); + break; + } + if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") { + evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex)); + currentIndex = closingBraceIndex + 2; + } + const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex); + if (parameterName.includes("#")) { + const [refName, attrName] = parameterName.split("#"); + evaluatedTemplateArr.push(getAttr(referenceRecord[refName] ?? endpointParams[refName], attrName)); + } else { + evaluatedTemplateArr.push(referenceRecord[parameterName] ?? endpointParams[parameterName]); + } + currentIndex = closingBraceIndex + 1; + } + return evaluatedTemplateArr.join(""); + }, "evaluateTemplate"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getReferenceValue.js +var getReferenceValue; +var init_getReferenceValue = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getReferenceValue.js"() { + getReferenceValue = /* @__PURE__ */ __name(({ ref }, options) => { + return options.referenceRecord[ref] ?? options.endpointParams[ref]; + }, "getReferenceValue"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateExpression.js +var evaluateExpression, callFunction, group; +var init_evaluateExpression = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateExpression.js"() { + init_types2(); + init_customEndpointFunctions(); + init_endpointFunctions(); + init_evaluateTemplate(); + init_getReferenceValue(); + evaluateExpression = /* @__PURE__ */ __name((obj, keyName, options) => { + if (typeof obj === "string") { + return evaluateTemplate(obj, options); + } else if (obj["fn"]) { + return group.callFunction(obj, options); + } else if (obj["ref"]) { + return getReferenceValue(obj, options); + } + throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`); + }, "evaluateExpression"); + callFunction = /* @__PURE__ */ __name(({ fn, argv }, options) => { + const evaluatedArgs = Array(argv.length); + for (let i = 0; i < evaluatedArgs.length; ++i) { + const arg = argv[i]; + if (typeof arg === "boolean" || typeof arg === "number") { + evaluatedArgs[i] = arg; + } else { + evaluatedArgs[i] = group.evaluateExpression(arg, "arg", options); + } + } + const namespaceSeparatorIndex = fn.indexOf("."); + if (namespaceSeparatorIndex !== -1) { + const namespaceFunctions = customEndpointFunctions[fn.slice(0, namespaceSeparatorIndex)]; + const customFunction = namespaceFunctions?.[fn.slice(namespaceSeparatorIndex + 1)]; + if (typeof customFunction === "function") { + return customFunction(...evaluatedArgs); + } + } + const callable = endpointFunctions[fn]; + if (typeof callable === "function") { + return callable(...evaluatedArgs); + } + throw new Error(`function ${fn} not loaded in endpointFunctions.`); + }, "callFunction"); + group = { + evaluateExpression, + callFunction + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/callFunction.js +var init_callFunction = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/callFunction.js"() { + init_evaluateExpression(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateCondition.js +var evaluateCondition; +var init_evaluateCondition = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateCondition.js"() { + init_debug(); + init_types2(); + init_callFunction(); + evaluateCondition = /* @__PURE__ */ __name((condition, options) => { + const { assign } = condition; + if (assign && assign in options.referenceRecord) { + throw new EndpointError(`'${assign}' is already defined in Reference Record.`); + } + const value = callFunction(condition, options); + options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(condition)} = ${toDebugString(value)}`); + const result = value === "" ? true : !!value; + if (assign != null) { + return { result, toAssign: { name: assign, value } }; + } + return { result }; + }, "evaluateCondition"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointHeaders.js +var getEndpointHeaders; +var init_getEndpointHeaders = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointHeaders.js"() { + init_types2(); + init_evaluateExpression(); + getEndpointHeaders = /* @__PURE__ */ __name((headers, options) => Object.entries(headers ?? {}).reduce((acc, [headerKey, headerVal]) => { + acc[headerKey] = headerVal.map((headerValEntry) => { + const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options); + if (typeof processedExpr !== "string") { + throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`); + } + return processedExpr; + }); + return acc; + }, {}), "getEndpointHeaders"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointProperties.js +var getEndpointProperties, getEndpointProperty, group2; +var init_getEndpointProperties = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointProperties.js"() { + init_types2(); + init_evaluateTemplate(); + getEndpointProperties = /* @__PURE__ */ __name((properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => { + acc[propertyKey] = group2.getEndpointProperty(propertyVal, options); + return acc; + }, {}), "getEndpointProperties"); + getEndpointProperty = /* @__PURE__ */ __name((property, options) => { + if (Array.isArray(property)) { + return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options)); + } + switch (typeof property) { + case "string": + return evaluateTemplate(property, options); + case "object": + if (property === null) { + throw new EndpointError(`Unexpected endpoint property: ${property}`); + } + return group2.getEndpointProperties(property, options); + case "boolean": + return property; + default: + throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`); + } + }, "getEndpointProperty"); + group2 = { + getEndpointProperty, + getEndpointProperties + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointUrl.js +var getEndpointUrl; +var init_getEndpointUrl = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointUrl.js"() { + init_types2(); + init_evaluateExpression(); + getEndpointUrl = /* @__PURE__ */ __name((endpointUrl, options) => { + const expression = evaluateExpression(endpointUrl, "Endpoint URL", options); + if (typeof expression === "string") { + try { + return new URL(expression); + } catch (error2) { + console.error(`Failed to construct URL with ${expression}`, error2); + throw error2; + } + } + throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`); + }, "getEndpointUrl"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/decideEndpoint.js +var RESULT, decideEndpoint; +var init_decideEndpoint = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/decideEndpoint.js"() { + init_types2(); + init_evaluateCondition(); + init_evaluateExpression(); + init_getEndpointHeaders(); + init_getEndpointProperties(); + init_getEndpointUrl(); + RESULT = 1e8; + decideEndpoint = /* @__PURE__ */ __name((bdd, options) => { + const { nodes, root, results, conditions } = bdd; + let ref = root; + const referenceRecord = {}; + const closure = { + referenceRecord, + endpointParams: options.endpointParams, + logger: options.logger + }; + while (ref !== 1 && ref !== -1 && ref < RESULT) { + const node_i = 3 * (Math.abs(ref) - 1); + const [condition_i, highRef, lowRef] = [nodes[node_i], nodes[node_i + 1], nodes[node_i + 2]]; + const [fn, argv, assign] = conditions[condition_i]; + const evaluation = evaluateCondition({ fn, assign, argv }, closure); + if (evaluation.toAssign) { + const { name, value } = evaluation.toAssign; + referenceRecord[name] = value; + } + ref = ref >= 0 === evaluation.result ? highRef : lowRef; + } + if (ref >= RESULT) { + const result = results[ref - RESULT]; + if (result[0] === -1) { + const [, errorExpression] = result; + throw new EndpointError(evaluateExpression(errorExpression, "Error", closure)); + } + const [url, properties, headers] = result; + return { + url: getEndpointUrl(url, closure), + properties: getEndpointProperties(properties, closure), + headers: getEndpointHeaders(headers ?? {}, closure) + }; + } + throw new EndpointError(`No matching endpoint.`); + }, "decideEndpoint"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateConditions.js +var evaluateConditions; +var init_evaluateConditions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateConditions.js"() { + init_debug(); + init_evaluateCondition(); + evaluateConditions = /* @__PURE__ */ __name((conditions = [], options) => { + const conditionsReferenceRecord = {}; + const conditionOptions = { + ...options, + referenceRecord: { ...options.referenceRecord } + }; + let didAssign = false; + for (const condition of conditions) { + const { result, toAssign } = evaluateCondition(condition, conditionOptions); + if (!result) { + return { result }; + } + if (toAssign) { + didAssign = true; + conditionsReferenceRecord[toAssign.name] = toAssign.value; + conditionOptions.referenceRecord[toAssign.name] = toAssign.value; + options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`); + } + } + if (didAssign) { + return { result: true, referenceRecord: conditionsReferenceRecord }; + } + return { result: true }; + }, "evaluateConditions"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateEndpointRule.js +var evaluateEndpointRule; +var init_evaluateEndpointRule = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateEndpointRule.js"() { + init_debug(); + init_evaluateConditions(); + init_getEndpointHeaders(); + init_getEndpointProperties(); + init_getEndpointUrl(); + evaluateEndpointRule = /* @__PURE__ */ __name((endpointRule, options) => { + const { conditions, endpoint } = endpointRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const endpointRuleOptions = referenceRecord ? { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord } + } : options; + const { url, properties, headers } = endpoint; + options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`); + const endpointToReturn = { url: getEndpointUrl(url, endpointRuleOptions) }; + if (headers != null) { + endpointToReturn.headers = getEndpointHeaders(headers, endpointRuleOptions); + } + if (properties != null) { + endpointToReturn.properties = getEndpointProperties(properties, endpointRuleOptions); + } + return endpointToReturn; + }, "evaluateEndpointRule"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateErrorRule.js +var evaluateErrorRule; +var init_evaluateErrorRule = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateErrorRule.js"() { + init_types2(); + init_evaluateConditions(); + init_evaluateExpression(); + evaluateErrorRule = /* @__PURE__ */ __name((errorRule, options) => { + const { conditions, error: error2 } = errorRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const errorRuleOptions = referenceRecord ? { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord } + } : options; + throw new EndpointError(evaluateExpression(error2, "Error", errorRuleOptions)); + }, "evaluateErrorRule"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateRules.js +var evaluateRules, evaluateTreeRule, group3; +var init_evaluateRules = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateRules.js"() { + init_types2(); + init_evaluateConditions(); + init_evaluateEndpointRule(); + init_evaluateErrorRule(); + evaluateRules = /* @__PURE__ */ __name((rules, options) => { + for (const rule of rules) { + if (rule.type === "endpoint") { + const endpointOrUndefined = evaluateEndpointRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } else if (rule.type === "error") { + evaluateErrorRule(rule, options); + } else if (rule.type === "tree") { + const endpointOrUndefined = group3.evaluateTreeRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } else { + throw new EndpointError(`Unknown endpoint rule: ${rule}`); + } + } + throw new EndpointError(`Rules evaluation failed`); + }, "evaluateRules"); + evaluateTreeRule = /* @__PURE__ */ __name((treeRule, options) => { + const { conditions, rules } = treeRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const treeRuleOptions = referenceRecord ? { ...options, referenceRecord: { ...options.referenceRecord, ...referenceRecord } } : options; + return group3.evaluateRules(rules, treeRuleOptions); + }, "evaluateTreeRule"); + group3 = { + evaluateRules, + evaluateTreeRule + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/index.js +var init_utils = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/index.js"() { + init_evaluateRules(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/resolveEndpoint.js +var resolveEndpoint; +var init_resolveEndpoint = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/resolveEndpoint.js"() { + init_transport(); + init_debug(); + init_types2(); + init_utils(); + resolveEndpoint = /* @__PURE__ */ __name((ruleSetObject, options) => { + const { endpointParams, logger: logger2 } = options; + const { parameters, rules } = ruleSetObject; + options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`); + for (const paramKey in parameters) { + if (!hasOwn(parameters, paramKey)) + continue; + const parameter = parameters[paramKey]; + const endpointParam = endpointParams[paramKey]; + if (endpointParam == null && parameter.default != null) { + endpointParams[paramKey] = parameter.default; + continue; + } + if (parameter.required && endpointParam == null) { + throw new EndpointError(`Missing required parameter: '${paramKey}'`); + } + } + const endpoint = evaluateRules(rules, { endpointParams, logger: logger2, referenceRecord: {} }); + options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`); + return endpoint; + }, "resolveEndpoint"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointRequiredConfig.js +var resolveEndpointRequiredConfig; +var init_resolveEndpointRequiredConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointRequiredConfig.js"() { + resolveEndpointRequiredConfig = /* @__PURE__ */ __name((input) => { + const { endpoint } = input; + if (endpoint === void 0) { + input.endpoint = async () => { + throw new Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint."); + }; + } + return input; + }, "resolveEndpointRequiredConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js +var endpoints_exports = {}; +__export(endpoints_exports, { + BinaryDecisionDiagram: () => BinaryDecisionDiagram, + EndpointCache: () => EndpointCache, + EndpointError: () => EndpointError, + customEndpointFunctions: () => customEndpointFunctions, + decideEndpoint: () => decideEndpoint, + endpointMiddleware: () => endpointMiddleware, + endpointMiddlewareOptions: () => endpointMiddlewareOptions, + getEndpointFromInstructions: () => getEndpointFromInstructions, + getEndpointPlugin: () => getEndpointPlugin, + isIpAddress: () => isIpAddress, + isValidHostLabel: () => isValidHostLabel, + middlewareEndpointToEndpointV1: () => toEndpointV1, + resolveEndpoint: () => resolveEndpoint, + resolveEndpointConfig: () => resolveEndpointConfig, + resolveEndpointRequiredConfig: () => resolveEndpointRequiredConfig, + resolveParams: () => resolveParams, + toEndpointV1: () => toEndpointV1 +}); +var getEndpointFromInstructions, resolveEndpointConfig, endpointMiddleware, getEndpointPlugin; +var init_endpoints = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js"() { + init_getEndpointFromConfig(); + init_getEndpointFromInstructions(); + init_endpointMiddleware(); + init_getEndpointPlugin(); + init_resolveEndpointConfig(); + init_transport(); + init_BinaryDecisionDiagram(); + init_EndpointCache(); + init_decideEndpoint(); + init_isIpAddress(); + init_transport(); + init_customEndpointFunctions(); + init_resolveEndpoint(); + init_types2(); + init_getEndpointFromInstructions(); + init_toEndpointV12(); + init_getEndpointPlugin(); + init_resolveEndpointRequiredConfig(); + getEndpointFromInstructions = bindGetEndpointFromInstructions(getEndpointFromConfig); + resolveEndpointConfig = bindResolveEndpointConfig(getEndpointFromConfig); + endpointMiddleware = bindEndpointMiddleware(getEndpointFromConfig); + getEndpointPlugin = bindGetEndpointPlugin(getEndpointFromConfig); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/serializerMiddleware.js +var serializerMiddleware; +var init_serializerMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/serializerMiddleware.js"() { + init_endpoints(); + serializerMiddleware = /* @__PURE__ */ __name((options, serializer) => (next, context) => async (args) => { + const endpointConfig = options; + const endpoint = context.endpointV2 ? async () => toEndpointV1(context.endpointV2) : endpointConfig.endpoint; + if (!endpoint) { + throw new Error("No valid endpoint provider available."); + } + const request = await serializer(args.input, { ...options, endpoint }); + return next({ + ...args, + request + }); + }, "serializerMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/serdePlugin.js +function getSerdePlugin(config, serializer, deserializer) { + return { + applyToStack: /* @__PURE__ */ __name((commandStack) => { + commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption2); + commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption3); + }, "applyToStack") + }; +} +var deserializerMiddlewareOption2, serializerMiddlewareOption3; +var init_serdePlugin = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/serdePlugin.js"() { + init_deserializerMiddleware(); + init_serializerMiddleware(); + deserializerMiddlewareOption2 = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true + }; + serializerMiddlewareOption3 = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true + }; + __name(getSerdePlugin, "getSerdePlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/hash-node/hash-node.js +import { createHash as createHash2, createHmac } from "node:crypto"; +function castSourceData(toCast, encoding) { + if (Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return fromString(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return fromArrayBuffer(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return fromArrayBuffer(toCast); +} +var Hash; +var init_hash_node = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/hash-node/hash-node.js"() { + init_buffer_from(); + init_toUint8Array(); + Hash = class { + static { + __name(this, "Hash"); + } + algorithmIdentifier; + secret; + hash; + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update(toUint8Array(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret ? createHmac(this.algorithmIdentifier, castSourceData(this.secret)) : createHash2(this.algorithmIdentifier); + } + }; + __name(castSourceData, "castSourceData"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js +import { Readable } from "node:stream"; +var ChecksumStream; +var init_ChecksumStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js"() { + init_toBase64(); + ChecksumStream = class extends Readable { + static { + __name(this, "ChecksumStream"); + } + expectedChecksum; + checksumSourceLocation; + checksum; + source; + base64Encoder; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder }) { + super(); + if (typeof source.pipe !== "function") { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + this.source = source; + this.base64Encoder = base64Encoder ?? toBase64; + this.expectedChecksum = expectedChecksum; + this.checksum = checksum; + this.checksumSourceLocation = checksumSourceLocation; + this.source.on("data", this.onSourceData); + this.source.on("end", this.onSourceEnd); + this.source.on("error", this.onSourceError); + this.source.on("close", this.onSourceClose); + this.source.pause(); + } + onSourceData = /* @__PURE__ */ __name((chunk) => { + if (this.destroyed) { + return; + } + try { + this.checksum.update(chunk); + } catch (e) { + this.destroy(e); + return; + } + if (!this.push(chunk)) { + this.source.pause(); + } + }, "onSourceData"); + onSourceEnd = /* @__PURE__ */ __name(async () => { + if (this.destroyed) { + return; + } + try { + const digest2 = await this.checksum.digest(); + const received = this.base64Encoder(digest2); + if (this.expectedChecksum !== received) { + this.destroy(new Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${received}" in response header "${this.checksumSourceLocation}".`)); + return; + } + } catch (e) { + this.destroy(e); + return; + } + this.push(null); + }, "onSourceEnd"); + onSourceError = /* @__PURE__ */ __name((error2) => { + this.destroy(error2); + }, "onSourceError"); + onSourceClose = /* @__PURE__ */ __name(() => { + if (!this.destroyed && !this.source.readableEnded) { + this.destroy(new Error("Connection lost or stream closed before all data was received.")); + } + }, "onSourceClose"); + _read(_size) { + this.source.resume(); + } + _destroy(error2, callback) { + this.source?.removeListener("data", this.onSourceData); + this.source?.removeListener("end", this.onSourceEnd); + this.source?.removeListener("error", this.onSourceError); + this.source?.removeListener("close", this.onSourceClose); + this.source?.destroy(); + callback(error2); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-type-check.js +var isReadableStream, isBlob; +var init_stream_type_check = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-type-check.js"() { + isReadableStream = /* @__PURE__ */ __name((stream) => typeof ReadableStream === "function" && (stream?.constructor?.name === ReadableStream.name || stream instanceof ReadableStream), "isReadableStream"); + isBlob = /* @__PURE__ */ __name((blob) => { + return typeof Blob === "function" && (blob?.constructor?.name === Blob.name || blob instanceof Blob); + }, "isBlob"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/fromUtf8.browser.js +var fromUtf82; +var init_fromUtf8_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/fromUtf8.browser.js"() { + fromUtf82 = /* @__PURE__ */ __name((input) => new TextEncoder().encode(input), "fromUtf8"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/constants-for-browser.js +var chars, alphabetByEncoding, alphabetByValue, bitsPerLetter, bitsPerByte, maxLetterValue; +var init_constants_for_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/constants-for-browser.js"() { + chars = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`; + alphabetByEncoding = Object.entries(chars).reduce((acc, [i, c]) => { + acc[c] = Number(i); + return acc; + }, {}); + alphabetByValue = chars.split(""); + bitsPerLetter = 6; + bitsPerByte = 8; + maxLetterValue = 63; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/toBase64.browser.js +function toBase642(_input) { + let input; + if (typeof _input === "string") { + input = fromUtf82(_input); + } else { + input = _input; + } + const isArrayLike = typeof input === "object" && typeof input.length === "number"; + const isUint8Array = typeof input === "object" && typeof input.byteOffset === "number" && typeof input.byteLength === "number"; + if (!isArrayLike && !isUint8Array) { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + let str = ""; + for (let i = 0; i < input.length; i += 3) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) { + bits |= input[j] << (limit - j - 1) * bitsPerByte; + bitLength += bitsPerByte; + } + const bitClusterCount = Math.ceil(bitLength / bitsPerLetter); + bits <<= bitClusterCount * bitsPerLetter - bitLength; + for (let k = 1; k <= bitClusterCount; k++) { + const offset = (bitClusterCount - k) * bitsPerLetter; + str += alphabetByValue[(bits & maxLetterValue << offset) >> offset]; + } + str += "==".slice(0, 4 - bitClusterCount); + } + return str; +} +var init_toBase64_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/toBase64.browser.js"() { + init_fromUtf8_browser(); + init_constants_for_browser(); + __name(toBase642, "toBase64"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.browser.js +var ReadableStreamRef, ChecksumStream2; +var init_ChecksumStream_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.browser.js"() { + ReadableStreamRef = typeof ReadableStream === "function" ? ReadableStream : function() { + }; + ChecksumStream2 = class extends ReadableStreamRef { + static { + __name(this, "ChecksumStream"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/createChecksumStream.browser.js +var createChecksumStream; +var init_createChecksumStream_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/createChecksumStream.browser.js"() { + init_toBase64_browser(); + init_stream_type_check(); + init_ChecksumStream_browser(); + createChecksumStream = /* @__PURE__ */ __name(({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder }) => { + if (!isReadableStream(source)) { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + const encoder = base64Encoder ?? toBase642; + if (typeof TransformStream !== "function") { + throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream."); + } + const transform = new TransformStream({ + start() { + }, + async transform(chunk, controller) { + checksum.update(chunk); + controller.enqueue(chunk); + }, + async flush(controller) { + const digest2 = await checksum.digest(); + const received = encoder(digest2); + if (expectedChecksum !== received) { + const error2 = new Error(`Checksum mismatch: expected "${expectedChecksum}" but received "${received}" in response header "${checksumSourceLocation}".`); + controller.error(error2); + } else { + controller.terminate(); + } + } + }); + source.pipeThrough(transform); + const readable = transform.readable; + Object.setPrototypeOf(readable, ChecksumStream2.prototype); + return readable; + }, "createChecksumStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/createChecksumStream.js +function createChecksumStream2(init) { + if (typeof ReadableStream === "function" && isReadableStream(init.source)) { + return createChecksumStream(init); + } + return new ChecksumStream(init); +} +var init_createChecksumStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/createChecksumStream.js"() { + init_stream_type_check(); + init_ChecksumStream(); + init_createChecksumStream_browser(); + __name(createChecksumStream2, "createChecksumStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/ByteArrayCollector.js +var ByteArrayCollector; +var init_ByteArrayCollector = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/ByteArrayCollector.js"() { + ByteArrayCollector = class { + static { + __name(this, "ByteArrayCollector"); + } + allocByteArray; + byteLength = 0; + byteArrays = []; + constructor(allocByteArray) { + this.allocByteArray = allocByteArray; + } + push(byteArray) { + this.byteArrays.push(byteArray); + this.byteLength += byteArray.byteLength; + } + flush() { + if (this.byteArrays.length === 1) { + const bytes = this.byteArrays[0]; + this.reset(); + return bytes; + } + const aggregation = this.allocByteArray(this.byteLength); + let cursor = 0; + for (let i = 0; i < this.byteArrays.length; ++i) { + const bytes = this.byteArrays[i]; + aggregation.set(bytes, cursor); + cursor += bytes.byteLength; + } + this.reset(); + return aggregation; + } + reset() { + this.byteArrays = []; + this.byteLength = 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/createBufferedReadable.browser.js +function createBufferedReadableStream(upstream, size, logger2) { + const reader = upstream.getReader(); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = ["", new ByteArrayCollector((size2) => new Uint8Array(size2))]; + let mode = -1; + const pull = /* @__PURE__ */ __name(async (controller) => { + const { value, done } = await reader.read(); + const chunk = value; + if (done) { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + controller.enqueue(remainder); + } + } + controller.close(); + } else { + const chunkMode = modeOf(chunk, false); + if (mode !== chunkMode) { + if (mode >= 0) { + controller.enqueue(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + controller.enqueue(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + controller.enqueue(chunk); + } else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger2?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + controller.enqueue(flush(buffers, mode)); + } else { + await pull(controller); + } + } + } + }, "pull"); + return new ReadableStream({ + pull + }); +} +function merge(buffers, mode, chunk) { + switch (mode) { + case 0: + buffers[0] += chunk; + return sizeOf(buffers[0]); + case 1: + case 2: + buffers[mode].push(chunk); + return sizeOf(buffers[mode]); + } +} +function flush(buffers, mode) { + switch (mode) { + case 0: + const s = buffers[0]; + buffers[0] = ""; + return s; + case 1: + case 2: + return buffers[mode].flush(); + } + throw new Error(`@smithy/util-stream - invalid index ${mode} given to flush()`); +} +function sizeOf(chunk) { + return chunk?.byteLength ?? chunk?.length ?? 0; +} +function modeOf(chunk, allowBuffer = true) { + if (allowBuffer && typeof Buffer !== "undefined" && chunk instanceof Buffer) { + return 2; + } + if (chunk instanceof Uint8Array) { + return 1; + } + if (typeof chunk === "string") { + return 0; + } + return -1; +} +var init_createBufferedReadable_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/createBufferedReadable.browser.js"() { + init_ByteArrayCollector(); + __name(createBufferedReadableStream, "createBufferedReadableStream"); + __name(merge, "merge"); + __name(flush, "flush"); + __name(sizeOf, "sizeOf"); + __name(modeOf, "modeOf"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/createBufferedReadable.js +import { Readable as Readable2 } from "node:stream"; +function createBufferedReadable(upstream, size, logger2) { + if (isReadableStream(upstream)) { + return createBufferedReadableStream(upstream, size, logger2); + } + const downstream = new Readable2({ read() { + } }); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = [ + "", + new ByteArrayCollector((size2) => new Uint8Array(size2)), + new ByteArrayCollector((size2) => Buffer.from(new Uint8Array(size2))) + ]; + let mode = -1; + upstream.on("data", (chunk) => { + const chunkMode = modeOf(chunk, true); + if (mode !== chunkMode) { + if (mode >= 0) { + downstream.push(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + downstream.push(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + downstream.push(chunk); + } else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger2?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + downstream.push(flush(buffers, mode)); + } + } + }); + upstream.on("end", () => { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + downstream.push(remainder); + } + } + downstream.push(null); + }); + return downstream; +} +var init_createBufferedReadable = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/createBufferedReadable.js"() { + init_ByteArrayCollector(); + init_createBufferedReadable_browser(); + init_stream_type_check(); + __name(createBufferedReadable, "createBufferedReadable"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.browser.js +var getAwsChunkedEncodingStream; +var init_getAwsChunkedEncodingStream_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.browser.js"() { + getAwsChunkedEncodingStream = /* @__PURE__ */ __name((readableStream, options) => { + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== void 0 && bodyLengthChecker !== void 0 && checksumAlgorithmFn !== void 0 && checksumLocationName !== void 0 && streamHasher !== void 0; + const digest2 = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : void 0; + Promise.resolve(digest2).catch(() => { + }); + const reader = readableStream.getReader(); + return new ReadableStream({ + async pull(controller) { + const { value, done } = await reader.read(); + if (done) { + controller.enqueue(`0\r +`); + if (checksumRequired) { + const checksum = base64Encoder(await digest2); + controller.enqueue(`${checksumLocationName}:${checksum}\r +`); + controller.enqueue(`\r +`); + } + controller.close(); + } else { + controller.enqueue(`${(bodyLengthChecker(value) || 0).toString(16)}\r +${value}\r +`); + } + } + }); + }, "getAwsChunkedEncodingStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.js +import { Readable as Readable3 } from "node:stream"; +function getAwsChunkedEncodingStream2(stream, options) { + const readable = stream; + const readableStream = stream; + if (isReadableStream(readableStream)) { + return getAwsChunkedEncodingStream(readableStream, options); + } + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== void 0 && checksumAlgorithmFn !== void 0 && checksumLocationName !== void 0 && streamHasher !== void 0; + const digest2 = checksumRequired ? streamHasher(checksumAlgorithmFn, readable) : void 0; + Promise.resolve(digest2).catch(() => { + }); + const awsChunkedEncodingStream = new Readable3({ + read() { + readable.resume(); + } + }); + readable.on("data", (data) => { + const length = bodyLengthChecker(data) || 0; + if (length === 0) { + return; + } + awsChunkedEncodingStream.push(`${length.toString(16)}\r +`); + awsChunkedEncodingStream.push(data); + if (!awsChunkedEncodingStream.push("\r\n")) { + readable.pause(); + } + }); + readable.on("error", (err) => { + awsChunkedEncodingStream.destroy(err); + }); + readable.pause(); + readable.on("end", async () => { + try { + awsChunkedEncodingStream.push(`0\r +`); + if (checksumRequired) { + const checksum = base64Encoder(await digest2); + awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\r +`); + awsChunkedEncodingStream.push(`\r +`); + } + awsChunkedEncodingStream.push(null); + } catch (err) { + awsChunkedEncodingStream.destroy(err); + } + }); + return awsChunkedEncodingStream; +} +var init_getAwsChunkedEncodingStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.js"() { + init_getAwsChunkedEncodingStream_browser(); + init_stream_type_check(); + __name(getAwsChunkedEncodingStream2, "getAwsChunkedEncodingStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.browser.js +async function headStream(stream, bytes) { + let byteLengthCounter = 0; + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + byteLengthCounter += value?.byteLength ?? 0; + } + if (byteLengthCounter >= bytes) { + break; + } + isDone = done; + } + reader.releaseLock(); + const collected = new Uint8Array(Math.min(bytes, byteLengthCounter)); + let offset = 0; + for (const chunk of chunks) { + if (chunk.byteLength > collected.byteLength - offset) { + collected.set(chunk.subarray(0, collected.byteLength - offset), offset); + break; + } else { + collected.set(chunk, offset); + } + offset += chunk.length; + } + return collected; +} +var init_headStream_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.browser.js"() { + __name(headStream, "headStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js +import { Writable } from "node:stream"; +var headStream2, Collector; +var init_headStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js"() { + init_concatBytes(); + init_headStream_browser(); + init_stream_type_check(); + headStream2 = /* @__PURE__ */ __name((stream, bytes) => { + if (isReadableStream(stream)) { + return headStream(stream, bytes); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + collector.limit = bytes; + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function() { + const bytes2 = concatBytes(this.buffers); + resolve(bytes2); + }); + }); + }, "headStream"); + Collector = class extends Writable { + static { + __name(this, "Collector"); + } + buffers = []; + limit = Infinity; + bytesBuffered = 0; + _write(chunk, encoding, callback) { + this.buffers.push(chunk); + this.bytesBuffered += chunk.byteLength ?? 0; + if (this.bytesBuffered >= this.limit) { + const excess = this.bytesBuffered - this.limit; + const tailBuffer = this.buffers[this.buffers.length - 1]; + this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess); + this.emit("finish"); + } + callback(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.browser.js +var toUtf82; +var init_toUtf8_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.browser.js"() { + toUtf82 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); + }, "toUtf8"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js +async function collectBlob(blob) { + return blob.arrayBuffer().then((ab) => new Uint8Array(ab)); +} +async function collectReadableStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let length = 0; + while (true) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + if (done) { + break; + } + } + return concatBytes(chunks, length); +} +var streamCollector; +var init_stream_collector_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js"() { + init_concatBytes(); + init_stream_type_check(); + streamCollector = /* @__PURE__ */ __name(async (stream) => { + if (isBlob(stream)) { + return collectBlob(stream); + } + return collectReadableStream(stream); + }, "streamCollector"); + __name(collectBlob, "collectBlob"); + __name(collectReadableStream, "collectReadableStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/sdk-stream-mixin.browser.js +var ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED, sdkStreamMixin, isBlobInstance; +var init_sdk_stream_mixin_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/sdk-stream-mixin.browser.js"() { + init_toBase64_browser(); + init_hex_encoding(); + init_toUtf8_browser(); + init_stream_collector_browser(); + init_stream_type_check(); + ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; + sdkStreamMixin = /* @__PURE__ */ __name((stream) => { + if (!isBlobInstance(stream) && !isReadableStream(stream)) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`); + } + let transformed = false; + const transformToByteArray = /* @__PURE__ */ __name(async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await streamCollector(stream); + }, "transformToByteArray"); + const blobToWebStream = /* @__PURE__ */ __name((blob) => { + if (typeof blob.stream !== "function") { + throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body"); + } + return blob.stream(); + }, "blobToWebStream"); + return Object.assign(stream, { + transformToByteArray, + transformToString: /* @__PURE__ */ __name(async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === "base64") { + return toBase642(buf); + } else if (encoding === "hex") { + return toHex(buf); + } else if (encoding === void 0 || encoding === "utf8" || encoding === "utf-8") { + return toUtf82(buf); + } else if (typeof TextDecoder === "function") { + return new TextDecoder(encoding).decode(buf); + } else { + throw new Error("TextDecoder is not available, please make sure polyfill is provided."); + } + }, "transformToString"), + transformToWebStream: /* @__PURE__ */ __name(() => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + if (isBlobInstance(stream)) { + return blobToWebStream(stream); + } else if (isReadableStream(stream)) { + return stream; + } else { + throw new Error(`Cannot transform payload to web stream, got ${stream}`); + } + }, "transformToWebStream") + }); + }, "sdkStreamMixin"); + isBlobInstance = /* @__PURE__ */ __name((stream) => typeof Blob === "function" && stream instanceof Blob, "isBlobInstance"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js +import { Writable as Writable2 } from "node:stream"; +var streamCollector2, Collector2; +var init_stream_collector = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js"() { + init_concatBytes(); + init_stream_collector_browser(); + init_stream_type_check(); + streamCollector2 = /* @__PURE__ */ __name((stream) => { + if (isBlob(stream)) { + return collectBlob(stream); + } + if (isReadableStream(stream)) { + return collectReadableStream(stream); + } + return new Promise((resolve, reject) => { + const collector = new Collector2(); + const nodeStream = stream; + nodeStream.pipe(collector); + nodeStream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function() { + const bytes = concatBytes(this.bufferedBytes); + resolve(bytes); + }); + }); + }, "streamCollector"); + Collector2 = class extends Writable2 { + static { + __name(this, "Collector"); + } + bufferedBytes = []; + _write(chunk, encoding, callback) { + this.bufferedBytes.push(chunk); + callback(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/sdk-stream-mixin.js +import { Readable as Readable4 } from "node:stream"; +var ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED2, sdkStreamMixin2; +var init_sdk_stream_mixin = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/sdk-stream-mixin.js"() { + init_buffer_from(); + init_sdk_stream_mixin_browser(); + init_stream_collector(); + ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED2 = "The stream has already been transformed."; + sdkStreamMixin2 = /* @__PURE__ */ __name((stream) => { + if (!(stream instanceof Readable4)) { + try { + return sdkStreamMixin(stream); + } catch (ignored) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`); + } + } + let transformed = false; + const transformToByteArray = /* @__PURE__ */ __name(async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED2); + } + transformed = true; + return await streamCollector2(stream); + }, "transformToByteArray"); + return Object.assign(stream, { + transformToByteArray, + transformToString: /* @__PURE__ */ __name(async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === void 0 || Buffer.isEncoding(encoding)) { + return fromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); + } else { + const decoder = new TextDecoder(encoding); + return decoder.decode(buf); + } + }, "transformToString"), + transformToWebStream: /* @__PURE__ */ __name(() => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED2); + } + if (stream.readableFlowing !== null) { + throw new Error("The stream has been consumed by other callbacks."); + } + if (typeof Readable4.toWeb !== "function") { + throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available."); + } + transformed = true; + return Readable4.toWeb(stream); + }, "transformToWebStream") + }); + }, "sdkStreamMixin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/splitStream.browser.js +async function splitStream(stream) { + if (typeof stream.stream === "function") { + stream = stream.stream(); + } + const readableStream = stream; + return readableStream.tee(); +} +var init_splitStream_browser = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/splitStream.browser.js"() { + __name(splitStream, "splitStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/splitStream.js +import { PassThrough } from "node:stream"; +async function splitStream2(stream) { + if (isReadableStream(stream) || isBlob(stream)) { + return splitStream(stream); + } + const stream1 = new PassThrough(); + const stream2 = new PassThrough(); + stream.pipe(stream1); + stream.pipe(stream2); + return [stream1, stream2]; +} +var init_splitStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/splitStream.js"() { + init_splitStream_browser(); + init_stream_type_check(); + __name(splitStream2, "splitStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/index.js +var serde_exports = {}; +__export(serde_exports, { + ChecksumStream: () => ChecksumStream, + Hash: () => Hash, + LazyJsonString: () => LazyJsonString, + NumericValue: () => NumericValue, + Uint8ArrayBlobAdapter: () => Uint8ArrayBlobAdapter, + _parseEpochTimestamp: () => _parseEpochTimestamp, + _parseRfc3339DateTimeWithOffset: () => _parseRfc3339DateTimeWithOffset, + _parseRfc7231DateTime: () => _parseRfc7231DateTime, + calculateBodyLength: () => calculateBodyLength, + concatBytes: () => concatBytes, + copyDocumentWithTransform: () => copyDocumentWithTransform, + createBufferedReadable: () => createBufferedReadable, + createChecksumStream: () => createChecksumStream2, + dateToUtcString: () => dateToUtcString, + deserializerMiddleware: () => deserializerMiddleware, + deserializerMiddlewareOption: () => deserializerMiddlewareOption2, + expectBoolean: () => expectBoolean, + expectByte: () => expectByte, + expectFloat32: () => expectFloat32, + expectInt: () => expectInt, + expectInt32: () => expectInt32, + expectLong: () => expectLong, + expectNonNull: () => expectNonNull, + expectNumber: () => expectNumber, + expectObject: () => expectObject, + expectShort: () => expectShort, + expectString: () => expectString, + expectUnion: () => expectUnion, + fromArrayBuffer: () => fromArrayBuffer, + fromBase64: () => fromBase64, + fromHex: () => fromHex, + fromString: () => fromString, + fromUtf8: () => fromUtf8, + generateIdempotencyToken: () => generateIdempotencyToken, + getAwsChunkedEncodingStream: () => getAwsChunkedEncodingStream2, + getSerdePlugin: () => getSerdePlugin, + handleFloat: () => handleFloat, + hasOwn: () => hasOwn, + headStream: () => headStream2, + isArrayBuffer: () => isArrayBuffer, + isBlob: () => isBlob, + isReadableStream: () => isReadableStream, + limitedParseDouble: () => limitedParseDouble, + limitedParseFloat: () => limitedParseFloat, + limitedParseFloat32: () => limitedParseFloat32, + logger: () => logger, + nv: () => nv, + parseBoolean: () => parseBoolean, + parseEpochTimestamp: () => parseEpochTimestamp, + parseRfc3339DateTime: () => parseRfc3339DateTime, + parseRfc3339DateTimeWithOffset: () => parseRfc3339DateTimeWithOffset, + parseRfc7231DateTime: () => parseRfc7231DateTime, + quoteHeader: () => quoteHeader, + sdkStreamMixin: () => sdkStreamMixin2, + serializerMiddleware: () => serializerMiddleware, + serializerMiddlewareOption: () => serializerMiddlewareOption3, + splitEvery: () => splitEvery, + splitHeader: () => splitHeader, + splitStream: () => splitStream2, + streamCollector: () => streamCollector2, + strictParseByte: () => strictParseByte, + strictParseDouble: () => strictParseDouble, + strictParseFloat: () => strictParseFloat, + strictParseFloat32: () => strictParseFloat32, + strictParseInt: () => strictParseInt, + strictParseInt32: () => strictParseInt32, + strictParseLong: () => strictParseLong, + strictParseShort: () => strictParseShort, + toBase64: () => toBase64, + toHex: () => toHex, + toUint8Array: () => toUint8Array, + toUtf8: () => toUtf8, + v4: () => v4 +}); +import { getRandomValues } from "node:crypto"; +var Uint8ArrayBlobAdapter, _getRandomValues, v4, generateIdempotencyToken; +var init_serde = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/serde/index.js"() { + init_fromBase64(); + init_toBase64(); + init_Uint8ArrayBlobAdapter(); + init_fromUtf8(); + init_toUtf8(); + init_v4(); + init_copyDocumentWithTransform(); + init_date_utils(); + init_lazy_json(); + init_parse_utils(); + init_quote_header(); + init_schema_date_utils(); + init_split_every(); + init_split_header(); + init_NumericValue(); + init_hex_encoding(); + init_calculateBodyLength(); + init_toUint8Array(); + init_concatBytes(); + init_buffer_from(); + init_is_array_buffer(); + init_deserializerMiddleware(); + init_serdePlugin(); + init_serializerMiddleware(); + init_hash_node(); + init_ChecksumStream(); + init_createChecksumStream(); + init_createBufferedReadable(); + init_getAwsChunkedEncodingStream(); + init_headStream(); + init_sdk_stream_mixin(); + init_splitStream(); + init_stream_type_check(); + init_stream_collector(); + init_transport(); + Uint8ArrayBlobAdapter = class extends bindUint8ArrayBlobAdapter(toUtf8, fromUtf8, toBase64, fromBase64) { + static { + __name(this, "Uint8ArrayBlobAdapter"); + } + }; + _getRandomValues = getRandomValues; + v4 = bindV4(_getRandomValues); + generateIdempotencyToken = v4; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-stream-node/HashCalculator.js +import { Writable as Writable3 } from "node:stream"; +var HashCalculator; +var init_HashCalculator = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-stream-node/HashCalculator.js"() { + init_serde(); + HashCalculator = class extends Writable3 { + static { + __name(this, "HashCalculator"); + } + hash; + constructor(hash, options) { + super(options); + this.hash = hash; + } + _write(chunk, encoding, callback) { + try { + this.hash.update(toUint8Array(chunk)); + } catch (err) { + return callback(err); + } + callback(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-stream-node/fileStreamHasher.js +import { createReadStream } from "node:fs"; +var fileStreamHasher, isReadStream; +var init_fileStreamHasher = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-stream-node/fileStreamHasher.js"() { + init_HashCalculator(); + fileStreamHasher = /* @__PURE__ */ __name((hashCtor, fileStream) => new Promise((resolve, reject) => { + if (!isReadStream(fileStream)) { + reject(new Error("Unable to calculate hash for non-file streams.")); + return; + } + const fileStreamTee = createReadStream(fileStream.path, { + start: fileStream.start, + end: fileStream.end + }); + const hash = new hashCtor(); + const hashCalculator = new HashCalculator(hash); + fileStreamTee.pipe(hashCalculator); + fileStreamTee.on("error", (err) => { + hashCalculator.end(); + reject(err); + }); + hashCalculator.on("error", reject); + hashCalculator.on("finish", function() { + hash.digest().then(resolve).catch(reject); + }); + }), "fileStreamHasher"); + isReadStream = /* @__PURE__ */ __name((stream) => typeof stream.path === "string", "isReadStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-stream-node/readableStreamHasher.js +var readableStreamHasher; +var init_readableStreamHasher = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/hash-stream-node/readableStreamHasher.js"() { + init_HashCalculator(); + readableStreamHasher = /* @__PURE__ */ __name((hashCtor, readableStream) => { + if (readableStream.readableFlowing !== null) { + throw new Error("Unable to calculate hash for flowing readable stream"); + } + const hash = new hashCtor(); + const hashCalculator = new HashCalculator(hash); + readableStream.pipe(hashCalculator); + return new Promise((resolve, reject) => { + readableStream.on("error", (err) => { + hashCalculator.end(); + reject(err); + }); + hashCalculator.on("error", reject); + hashCalculator.on("finish", () => { + hash.digest().then(resolve).catch(reject); + }); + }); + }, "readableStreamHasher"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js +function compress(state, block) { + let a = state[0], b = state[1], c = state[2], d = state[3]; + for (let i = 0; i < 64; ++i) { + let f, g; + if (i < 16) { + f = b & c | ~b & d; + g = i; + } else if (i < 32) { + f = d & b | c & ~d; + g = (5 * i + 1) % 16; + } else if (i < 48) { + f = b ^ c ^ d; + g = (3 * i + 5) % 16; + } else { + f = c ^ (b | ~d); + g = 7 * i % 16; + } + const x = block.getUint32(g * 4, true); + const tmp = d; + d = c; + c = b; + const s = S[(i >> 4) * 4 + (i & 3)]; + const sum = (a + f & M) + (x + T[i] & M) & M; + b = b + ((sum << s | sum >>> 32 - s) >>> 0) & M; + a = tmp; + } + state[0] = state[0] + a & M; + state[1] = state[1] + b & M; + state[2] = state[2] + c & M; + state[3] = state[3] + d & M; +} +var Md5Js, INIT, M, S, T; +var init_Md5Js = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js"() { + init_serde(); + Md5Js = class { + static { + __name(this, "Md5Js"); + } + digestLength = 16; + state = Uint32Array.from(INIT); + writeBuffer = new DataView(new ArrayBuffer(64)); + bufferLength = 0; + bytesHashed = 0; + update(sourceData) { + const data = toUint8Array(sourceData); + let pos = 0; + let len = data.byteLength; + this.bytesHashed += len; + while (len > 0) { + this.writeBuffer.setUint8(this.bufferLength++, data[pos++]); + --len; + if (this.bufferLength === 64) { + compress(this.state, this.writeBuffer); + this.bufferLength = 0; + } + } + } + async digest() { + const state = Uint32Array.from(this.state); + const buf = new DataView(this.writeBuffer.buffer.slice(0)); + let bufLen = this.bufferLength; + const bits = this.bytesHashed * 8; + buf.setUint8(bufLen++, 128); + if (this.bufferLength % 64 >= 56) { + for (let i = bufLen; i < 64; ++i) { + buf.setUint8(i, 0); + } + compress(state, buf); + bufLen = 0; + } + for (let i = bufLen; i < 56; ++i) { + buf.setUint8(i, 0); + } + buf.setUint32(56, bits >>> 0, true); + buf.setUint32(60, Math.floor(bits / 2 ** 32), true); + compress(state, buf); + const out = new Uint8Array(16); + const view = new DataView(out.buffer); + for (let i = 0; i < 4; ++i) { + view.setUint32(i * 4, state[i], true); + } + return out; + } + reset() { + this.state.set(INIT); + this.writeBuffer = new DataView(new ArrayBuffer(64)); + this.bufferLength = 0; + this.bytesHashed = 0; + } + }; + INIT = [1732584193, 4023233417, 2562383102, 271733878]; + M = 4294967295; + S = Uint8Array.of(7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21); + T = Array.from({ length: 64 }, (_, i) => Math.abs(Math.sin(i + 1)) * 2 ** 32 >>> 0); + __name(compress, "compress"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js +import { createHash as createHash3 } from "node:crypto"; +function buildNativeClass() { + return class Md5Node { + static { + __name(this, "Md5Node"); + } + digestLength = 16; + hash = createHash3("md5"); + update(data) { + this.hash.update(toUint8Array(data)); + } + async digest() { + const buf = this.hash.copy().digest(); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); + } + reset() { + this.hash = createHash3("md5"); + } + }; +} +var hasNativeCrypto, Md5Node; +var init_Md5Node = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js"() { + init_serde(); + init_Md5Js(); + hasNativeCrypto = (() => { + try { + createHash3("md5"); + return true; + } catch { + return false; + } + })(); + Md5Node = hasNativeCrypto ? buildNativeClass() : Md5Js; + __name(buildNativeClass, "buildNativeClass"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js +var CRC32_TABLE, ONES, Crc32Js; +var init_Crc32Js = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js"() { + CRC32_TABLE = new Uint32Array(256); + for (let i = 0; i < 256; ++i) { + let c = i; + for (let j = 0; j < 8; ++j) { + c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; + } + CRC32_TABLE[i] = c >>> 0; + } + ONES = 4294967295; + Crc32Js = class { + static { + __name(this, "Crc32Js"); + } + digestLength = 4; + checksum = ONES; + update(data) { + for (let i = 0; i < data.length; ++i) { + this.checksum = this.checksum >>> 8 ^ CRC32_TABLE[(this.checksum ^ data[i]) & 255]; + } + } + digestSync() { + return (this.checksum ^ ONES) >>> 0; + } + async digest() { + const value = this.digestSync(); + const out = new Uint8Array(4); + new DataView(out.buffer).setUint32(0, value, false); + return out; + } + reset() { + this.checksum = ONES; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js +import * as zlib from "node:zlib"; +function buildNativeClass2(nativeCrc32) { + return class Crc32Node { + static { + __name(this, "Crc32Node"); + } + digestLength = 4; + value = 0; + update(data) { + this.value = nativeCrc32(data, this.value); + } + digestSync() { + return this.value >>> 0; + } + async digest() { + const out = new Uint8Array(4); + new DataView(out.buffer).setUint32(0, this.digestSync(), false); + return out; + } + reset() { + this.value = 0; + } + }; +} +var zlibCrc32, Crc32Node; +var init_Crc32Node = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js"() { + init_Crc32Js(); + zlibCrc32 = typeof zlib.crc32 === "function" ? zlib.crc32 : void 0; + Crc32Node = zlibCrc32 ? buildNativeClass2(zlibCrc32) : Crc32Js; + __name(buildNativeClass2, "buildNativeClass"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js +var BLOCK, DIGEST_LENGTH, MAX_HASHABLE_LENGTH, Sha256Js, INIT2, K; +var init_Sha256Js = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js"() { + init_serde(); + BLOCK = 64; + DIGEST_LENGTH = 32; + MAX_HASHABLE_LENGTH = 2 ** 53 - 1; + Sha256Js = class _Sha256Js { + static { + __name(this, "Sha256Js"); + } + digestLength = DIGEST_LENGTH; + state = Int32Array.from(INIT2); + w; + buffer = new Uint8Array(64); + bufferLength = 0; + bytesHashed = 0; + finished = false; + inner; + outer; + constructor(secret) { + if (secret) { + const key = _Sha256Js.normalizeKey(secret); + this.inner = new _Sha256Js(); + this.outer = new _Sha256Js(); + const { inner, outer } = this; + const pad = new Uint8Array(BLOCK * 2); + for (let i = 0; i < BLOCK; ++i) { + pad[i] = 54 ^ key[i]; + pad[i + BLOCK] = 92 ^ key[i]; + } + inner.update(pad.subarray(0, BLOCK)); + outer.update(pad.subarray(BLOCK)); + } + } + update(data) { + if (this.finished) { + throw new Error("Attempted to update an already finished HMAC."); + } + if (this.inner) { + this.inner.update(data); + return; + } + const chunk = toUint8Array(data); + let position = 0; + let { byteLength } = chunk; + this.bytesHashed += byteLength; + if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) { + throw new Error("Cannot hash more than 2^53 - 1 bits"); + } + while (byteLength > 0) { + this.buffer[this.bufferLength++] = chunk[position++]; + byteLength--; + if (this.bufferLength === BLOCK) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + } + async digest() { + const { inner, outer } = this; + if (inner && outer) { + if (this.finished) { + throw new Error("Attempted to digest an already finished HMAC."); + } + this.finished = true; + const innerDigest = inner.digestSync(); + outer.update(innerDigest); + return outer.digestSync(); + } + return this.digestSync(); + } + reset() { + this.state = Int32Array.from(INIT2); + this.buffer = new Uint8Array(64); + this.bufferLength = 0; + this.bytesHashed = 0; + } + digestSync() { + const state = this.state.slice(); + const buffer = this.buffer.slice(); + let bufferLength = this.bufferLength; + const bitsHashed = this.bytesHashed * 8; + const bufferView = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength); + bufferView.setUint8(bufferLength++, 128); + if ((bufferLength - 1) % BLOCK >= BLOCK - 8) { + for (let i = bufferLength; i < BLOCK; ++i) { + bufferView.setUint8(i, 0); + } + this.hashBufferWith(state, buffer); + bufferLength = 0; + } + for (let i = bufferLength; i < BLOCK - 8; ++i) { + bufferView.setUint8(i, 0); + } + bufferView.setUint32(BLOCK - 8, Math.floor(bitsHashed / 4294967296), false); + bufferView.setUint32(BLOCK - 4, bitsHashed, false); + this.hashBufferWith(state, buffer); + const out = new Uint8Array(DIGEST_LENGTH); + for (let i = 0; i < 8; ++i) { + out[i * 4] = state[i] >>> 24 & 255; + out[i * 4 + 1] = state[i] >>> 16 & 255; + out[i * 4 + 2] = state[i] >>> 8 & 255; + out[i * 4 + 3] = state[i] >>> 0 & 255; + } + return out; + } + static normalizeKey(secret) { + const key = toUint8Array(secret); + if (key.byteLength > BLOCK) { + const h = new _Sha256Js(); + h.update(key); + const out = h.digestSync(); + const padded = new Uint8Array(BLOCK); + padded.set(out); + return padded; + } + if (key.byteLength < BLOCK) { + const padded = new Uint8Array(BLOCK); + padded.set(key); + return padded; + } + return key; + } + hashBuffer() { + this.hashBufferWith(this.state, this.buffer); + } + hashBufferWith(state, buffer) { + const w = this.w ??= new Int32Array(64); + let s0 = state[0], s1 = state[1], s2 = state[2], s3 = state[3], s4 = state[4], s5 = state[5], s6 = state[6], s7 = state[7]; + for (let i = 0; i < BLOCK; ++i) { + if (i < 16) { + w[i] = (buffer[i * 4] & 255) << 24 | (buffer[i * 4 + 1] & 255) << 16 | (buffer[i * 4 + 2] & 255) << 8 | buffer[i * 4 + 3] & 255; + } else { + let u = w[i - 2]; + const t12 = (u >>> 17 | u << 15) ^ (u >>> 19 | u << 13) ^ u >>> 10; + u = w[i - 15]; + const t22 = (u >>> 7 | u << 25) ^ (u >>> 18 | u << 14) ^ u >>> 3; + w[i] = (t12 + w[i - 7] | 0) + (t22 + w[i - 16] | 0); + } + const t1 = (((s4 >>> 6 | s4 << 26) ^ (s4 >>> 11 | s4 << 21) ^ (s4 >>> 25 | s4 << 7)) + (s4 & s5 ^ ~s4 & s6) | 0) + (s7 + (K[i] + w[i] | 0) | 0) | 0; + const t2 = ((s0 >>> 2 | s0 << 30) ^ (s0 >>> 13 | s0 << 19) ^ (s0 >>> 22 | s0 << 10)) + (s0 & s1 ^ s0 & s2 ^ s1 & s2) | 0; + s7 = s6; + s6 = s5; + s5 = s4; + s4 = s3 + t1 | 0; + s3 = s2; + s2 = s1; + s1 = s0; + s0 = t1 + t2 | 0; + } + state[0] += s0; + state[1] += s1; + state[2] += s2; + state[3] += s3; + state[4] += s4; + state[5] += s5; + state[6] += s6; + state[7] += s7; + } + }; + INIT2 = new Int32Array([ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]); + K = new Int32Array([ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js +import { createHash as createHash4, createHmac as createHmac2 } from "node:crypto"; +function buildNativeClass3() { + return class Sha256Node { + static { + __name(this, "Sha256Node"); + } + digestLength = 32; + secret; + hash; + isHmac; + finished = false; + constructor(secret) { + this.secret = secret; + this.isHmac = !!secret; + this.hash = this.createHash(); + } + update(data) { + if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + this.hash.update(data); + } + async digest() { + let buf; + if (this.isHmac) { + this.finished = true; + buf = this.hash.digest(); + } else { + buf = this.hash.copy().digest(); + } + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); + } + reset() { + this.hash = this.createHash(); + this.finished = false; + } + createHash() { + return this.secret ? createHmac2("sha256", toBuffer(this.secret)) : createHash4("sha256"); + } + }; +} +function toBuffer(data) { + if (typeof data === "string") { + return data; + } + if (ArrayBuffer.isView(data)) { + return Buffer.from(data.buffer, data.byteOffset, data.byteLength); + } + return Buffer.from(data); +} +var hasNativeCrypto2, Sha256Node; +var init_Sha256Node = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js"() { + init_Sha256Js(); + hasNativeCrypto2 = (() => { + try { + createHash4("sha256"); + return true; + } catch { + return false; + } + })(); + Sha256Node = hasNativeCrypto2 ? buildNativeClass3() : Sha256Js; + __name(buildNativeClass3, "buildNativeClass"); + __name(toBuffer, "toBuffer"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js +var digest, sign, importKey, subtle, MAX_PENDING_BYTES, Sha256WebCrypto; +var init_Sha256WebCrypto = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js"() { + init_serde(); + init_Sha256Js(); + ({ digest, sign, importKey } = globalThis?.crypto?.subtle ?? {}); + subtle = typeof digest === "function" && typeof sign === "function" && typeof importKey === "function" ? globalThis.crypto.subtle : void 0; + MAX_PENDING_BYTES = 8 * 1024 * 1024; + Sha256WebCrypto = class { + static { + __name(this, "Sha256WebCrypto"); + } + digestLength = 32; + secret; + pending = []; + pendingBytes = 0; + fallback; + finished = false; + constructor(secret) { + if (secret) { + this.secret = toUint8Array(secret); + } + } + update(data) { + if (this.finished) { + throw new Error("Attempted to update an already finished HMAC."); + } + if (this.fallback) { + this.fallback.update(data); + return; + } + this.pending.push(data.slice()); + this.pendingBytes += data.byteLength; + if (this.pendingBytes >= MAX_PENDING_BYTES) { + this.switchToFallback(); + } + } + async digest() { + if (this.fallback) { + return this.fallback.digest(); + } + if (this.secret && this.finished) { + throw new Error("Attempted to digest an already finished HMAC."); + } + const data = concatBytes(this.pending); + if (subtle) { + if (this.secret) { + this.finished = true; + const key = await subtle.importKey("raw", this.secret, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]); + const sig = await subtle.sign("HMAC", key, data); + return new Uint8Array(sig); + } + const hash = await subtle.digest("SHA-256", data); + return new Uint8Array(hash); + } + const sha256 = new Sha256Js(this.secret); + sha256.update(data); + return sha256.digest(); + } + reset() { + this.pending = []; + this.pendingBytes = 0; + this.fallback = void 0; + this.finished = false; + } + switchToFallback() { + const sha256Js = new Sha256Js(this.secret); + for (const chunk of this.pending) { + sha256Js.update(chunk); + } + this.fallback = sha256Js; + this.pending = []; + this.pendingBytes = 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/index.js +var checksum_exports = {}; +__export(checksum_exports, { + Crc32: () => Crc32Node, + Crc32Js: () => Crc32Js, + Crc32Node: () => Crc32Node, + Md5: () => Md5Node, + Md5Js: () => Md5Js, + Md5Node: () => Md5Node, + Sha256: () => Sha256Node, + Sha256Js: () => Sha256Js, + Sha256Node: () => Sha256Node, + Sha256WebCrypto: () => Sha256WebCrypto, + blobHasher: () => blobHasher, + blobReader: () => blobReader, + fileStreamHasher: () => fileStreamHasher, + readableStreamHasher: () => readableStreamHasher +}); +var init_checksum2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/checksum/index.js"() { + init_blobHasher(); + init_fileStreamHasher(); + init_readableStreamHasher(); + init_Md5Js(); + init_Md5Node(); + init_Crc32Js(); + init_Crc32Node(); + init_Sha256Js(); + init_Sha256Node(); + init_Sha256WebCrypto(); + init_chunked_blob_reader(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/Int64.js +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 255; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} +var Int64; +var init_Int64 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/Int64.js"() { + init_serde(); + Int64 = class _Int64 { + static { + __name(this, "Int64"); + } + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9223372036854776e3 || number < -9223372036854776e3) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new _Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 128; + if (negative) { + negate(bytes); + } + return parseInt(toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } + }; + __name(negate, "negate"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/HeaderMarshaller.js +var HeaderMarshaller, HEADER_VALUE_TYPE, BOOLEAN_TAG, BYTE_TAG, SHORT_TAG, INT_TAG, LONG_TAG, BINARY_TAG, STRING_TAG, TIMESTAMP_TAG, UUID_TAG, UUID_PATTERN; +var init_HeaderMarshaller = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/HeaderMarshaller.js"() { + init_transport(); + init_serde(); + init_Int64(); + HeaderMarshaller = class { + static { + __name(this, "HeaderMarshaller"); + } + toUtf8; + fromUtf8; + constructor(toUtf83, fromUtf83) { + this.toUtf8 = toUtf83; + this.fromUtf8 = fromUtf83; + } + format(headers) { + const chunks = []; + for (const headerName in headers) { + if (!hasOwn(headers, headerName)) + continue; + const bytes = this.fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = this.fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(fromHex(header.value.replace(/-/g, "")), 1); + return uuidBytes; + } + } + parse(headers) { + const out = {}; + let position = 0; + while (position < headers.byteLength) { + const nameLength = headers.getUint8(position++); + const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength)); + position += nameLength; + switch (headers.getUint8(position++)) { + case 0: + out[name] = { + type: BOOLEAN_TAG, + value: true + }; + break; + case 1: + out[name] = { + type: BOOLEAN_TAG, + value: false + }; + break; + case 2: + out[name] = { + type: BYTE_TAG, + value: headers.getInt8(position++) + }; + break; + case 3: + out[name] = { + type: SHORT_TAG, + value: headers.getInt16(position, false) + }; + position += 2; + break; + case 4: + out[name] = { + type: INT_TAG, + value: headers.getInt32(position, false) + }; + position += 4; + break; + case 5: + out[name] = { + type: LONG_TAG, + value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)) + }; + position += 8; + break; + case 6: + const binaryLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: BINARY_TAG, + value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength) + }; + position += binaryLength; + break; + case 7: + const stringLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: STRING_TAG, + value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)) + }; + position += stringLength; + break; + case 8: + out[name] = { + type: TIMESTAMP_TAG, + value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()) + }; + position += 8; + break; + case 9: + const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16); + position += 16; + out[name] = { + type: UUID_TAG, + value: `${toHex(uuidBytes.subarray(0, 4))}-${toHex(uuidBytes.subarray(4, 6))}-${toHex(uuidBytes.subarray(6, 8))}-${toHex(uuidBytes.subarray(8, 10))}-${toHex(uuidBytes.subarray(10))}` + }; + break; + default: + throw new Error(`Unrecognized header type tag`); + } + } + return out; + } + }; + (function(HEADER_VALUE_TYPE2) { + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["boolTrue"] = 0] = "boolTrue"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["boolFalse"] = 1] = "boolFalse"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["byte"] = 2] = "byte"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["short"] = 3] = "short"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["integer"] = 4] = "integer"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["long"] = 5] = "long"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["byteArray"] = 6] = "byteArray"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["string"] = 7] = "string"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["timestamp"] = 8] = "timestamp"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["uuid"] = 9] = "uuid"; + })(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {})); + BOOLEAN_TAG = "boolean"; + BYTE_TAG = "byte"; + SHORT_TAG = "short"; + INT_TAG = "integer"; + LONG_TAG = "long"; + BINARY_TAG = "binary"; + STRING_TAG = "string"; + TIMESTAMP_TAG = "timestamp"; + UUID_TAG = "uuid"; + UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/splitMessage.js +function splitMessage({ byteLength, byteOffset, buffer }) { + if (byteLength < MINIMUM_MESSAGE_LENGTH) { + throw new Error("Provided message too short to accommodate event stream message overhead"); + } + const view = new DataView(buffer, byteOffset, byteLength); + const messageLength = view.getUint32(0, false); + if (byteLength !== messageLength) { + throw new Error("Reported message length does not match received message length"); + } + const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false); + const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false); + const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false); + const checksummer = new Crc32Node(); + checksummer.update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH)); + if (expectedPreludeChecksum !== checksummer.digestSync()) { + throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digestSync()})`); + } + checksummer.update(new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH))); + if (expectedMessageChecksum !== checksummer.digestSync()) { + throw new Error(`The message checksum (${checksummer.digestSync()}) did not match the expected value of ${expectedMessageChecksum}`); + } + return { + headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength), + body: new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength, messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)) + }; +} +var PRELUDE_MEMBER_LENGTH, PRELUDE_LENGTH, CHECKSUM_LENGTH, MINIMUM_MESSAGE_LENGTH; +var init_splitMessage = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/splitMessage.js"() { + init_checksum2(); + PRELUDE_MEMBER_LENGTH = 4; + PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2; + CHECKSUM_LENGTH = 4; + MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2; + __name(splitMessage, "splitMessage"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/EventStreamCodec.js +var EventStreamCodec; +var init_EventStreamCodec = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/EventStreamCodec.js"() { + init_checksum2(); + init_HeaderMarshaller(); + init_splitMessage(); + EventStreamCodec = class { + static { + __name(this, "EventStreamCodec"); + } + headerMarshaller; + messageBuffer; + isEndOfStream; + constructor(toUtf83, fromUtf83) { + this.headerMarshaller = new HeaderMarshaller(toUtf83, fromUtf83); + this.messageBuffer = []; + this.isEndOfStream = false; + } + feed(message) { + this.messageBuffer.push(this.decode(message)); + } + endOfStream() { + this.isEndOfStream = true; + } + getMessage() { + const message = this.messageBuffer.pop(); + const isEndOfStream = this.isEndOfStream; + return { + getMessage() { + return message; + }, + isEndOfStream() { + return isEndOfStream; + } + }; + } + getAvailableMessages() { + const messages = this.messageBuffer; + this.messageBuffer = []; + const isEndOfStream = this.isEndOfStream; + return { + getMessages() { + return messages; + }, + isEndOfStream() { + return isEndOfStream; + } + }; + } + encode({ headers: rawHeaders, body }) { + const headers = this.headerMarshaller.format(rawHeaders); + const length = headers.byteLength + body.byteLength + 16; + const out = new Uint8Array(length); + const view = new DataView(out.buffer, out.byteOffset, out.byteLength); + const checksum = new Crc32Node(); + view.setUint32(0, length, false); + view.setUint32(4, headers.byteLength, false); + checksum.update(out.subarray(0, 8)); + view.setUint32(8, checksum.digestSync(), false); + out.set(headers, 12); + out.set(body, headers.byteLength + 12); + checksum.update(out.subarray(8, length - 4)); + view.setUint32(length - 4, checksum.digestSync(), false); + return out; + } + decode(message) { + const { headers, body } = splitMessage(message); + return { headers: this.headerMarshaller.parse(headers), body }; + } + formatHeaders(rawHeaders) { + return this.headerMarshaller.format(rawHeaders); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/MessageDecoderStream.js +var MessageDecoderStream; +var init_MessageDecoderStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/MessageDecoderStream.js"() { + MessageDecoderStream = class { + static { + __name(this, "MessageDecoderStream"); + } + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const bytes of this.options.inputStream) { + const decoded = this.options.decoder.decode(bytes); + yield decoded; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/MessageEncoderStream.js +var MessageEncoderStream; +var init_MessageEncoderStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/MessageEncoderStream.js"() { + MessageEncoderStream = class { + static { + __name(this, "MessageEncoderStream"); + } + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const msg of this.options.messageStream) { + const encoded = this.options.encoder.encode(msg); + yield encoded; + } + if (this.options.includeEndFrame) { + yield new Uint8Array(0); + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/SmithyMessageDecoderStream.js +var SmithyMessageDecoderStream; +var init_SmithyMessageDecoderStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/SmithyMessageDecoderStream.js"() { + SmithyMessageDecoderStream = class { + static { + __name(this, "SmithyMessageDecoderStream"); + } + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const message of this.options.messageStream) { + const deserialized = await this.options.deserializer(message); + if (deserialized === void 0) + continue; + yield deserialized; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/SmithyMessageEncoderStream.js +var SmithyMessageEncoderStream; +var init_SmithyMessageEncoderStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/SmithyMessageEncoderStream.js"() { + SmithyMessageEncoderStream = class { + static { + __name(this, "SmithyMessageEncoderStream"); + } + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const chunk of this.options.inputStream) { + const payloadBuf = this.options.serializer(chunk); + yield payloadBuf; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-universal/getChunkedStream.js +function getChunkedStream(source) { + let currentMessageTotalLength = 0; + let currentMessagePendingLength = 0; + let currentMessage = null; + let messageLengthBuffer = null; + const allocateMessage = /* @__PURE__ */ __name((size) => { + if (typeof size !== "number") { + throw new Error("Attempted to allocate an event message where size was not a number: " + size); + } + currentMessageTotalLength = size; + currentMessagePendingLength = 4; + currentMessage = new Uint8Array(size); + const currentMessageView = new DataView(currentMessage.buffer); + currentMessageView.setUint32(0, size, false); + }, "allocateMessage"); + const iterator = /* @__PURE__ */ __name(async function* () { + const sourceIterator = source[Symbol.asyncIterator](); + while (true) { + const { value, done } = await sourceIterator.next(); + if (done) { + if (!currentMessageTotalLength) { + return; + } else if (currentMessageTotalLength === currentMessagePendingLength) { + yield currentMessage; + } else { + throw new Error("Truncated event message received."); + } + return; + } + const chunkLength = value.length; + let currentOffset = 0; + while (currentOffset < chunkLength) { + if (!currentMessage) { + const bytesRemaining = chunkLength - currentOffset; + if (!messageLengthBuffer) { + messageLengthBuffer = new Uint8Array(4); + } + const numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining); + messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength); + currentMessagePendingLength += numBytesForTotal; + currentOffset += numBytesForTotal; + if (currentMessagePendingLength < 4) { + break; + } + allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false)); + messageLengthBuffer = null; + } + const numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset); + currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength); + currentMessagePendingLength += numBytesToWrite; + currentOffset += numBytesToWrite; + if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) { + yield currentMessage; + currentMessage = null; + currentMessageTotalLength = 0; + currentMessagePendingLength = 0; + } + } + } + }, "iterator"); + return { + [Symbol.asyncIterator]: iterator + }; +} +var init_getChunkedStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-universal/getChunkedStream.js"() { + __name(getChunkedStream, "getChunkedStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-universal/getUnmarshalledStream.js +function getUnmarshalledStream(source, options) { + const messageUnmarshaller = getMessageUnmarshaller(options.deserializer, options.toUtf8); + return { + [Symbol.asyncIterator]: async function* () { + for await (const chunk of source) { + const message = options.eventStreamCodec.decode(chunk); + const type = await messageUnmarshaller(message); + if (type === void 0) + continue; + yield type; + } + } + }; +} +function getMessageUnmarshaller(deserializer, toUtf83) { + return async function(message) { + const { value: messageType } = message.headers[":message-type"]; + if (messageType === "error") { + const unmodeledError = new Error(message.headers[":error-message"].value || "UnknownError"); + unmodeledError.name = message.headers[":error-code"].value; + throw unmodeledError; + } else if (messageType === "exception") { + const code = message.headers[":exception-type"].value; + const exception = { [code]: message }; + const deserializedException = await deserializer(exception); + if (deserializedException.$unknown) { + const error2 = new Error(toUtf83(message.body)); + error2.name = code; + throw error2; + } + throw deserializedException[code]; + } else if (messageType === "event") { + const event = { + [message.headers[":event-type"].value]: message + }; + const deserialized = await deserializer(event); + if (deserialized.$unknown) + return; + return deserialized; + } else { + throw Error(`Unrecognizable event type: ${message.headers[":event-type"].value}`); + } + }; +} +var init_getUnmarshalledStream = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-universal/getUnmarshalledStream.js"() { + __name(getUnmarshalledStream, "getUnmarshalledStream"); + __name(getMessageUnmarshaller, "getMessageUnmarshaller"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-universal/EventStreamMarshaller.js +var EventStreamMarshaller, eventStreamSerdeProvider; +var init_EventStreamMarshaller = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-universal/EventStreamMarshaller.js"() { + init_EventStreamCodec(); + init_MessageDecoderStream(); + init_MessageEncoderStream(); + init_SmithyMessageDecoderStream(); + init_SmithyMessageEncoderStream(); + init_getChunkedStream(); + init_getUnmarshalledStream(); + EventStreamMarshaller = class { + static { + __name(this, "EventStreamMarshaller"); + } + eventStreamCodec; + utfEncoder; + constructor({ utf8Encoder, utf8Decoder }) { + this.eventStreamCodec = new EventStreamCodec(utf8Encoder, utf8Decoder); + this.utfEncoder = utf8Encoder; + } + deserialize(body, deserializer) { + const inputStream = getChunkedStream(body); + return new SmithyMessageDecoderStream({ + messageStream: new MessageDecoderStream({ inputStream, decoder: this.eventStreamCodec }), + deserializer: getMessageUnmarshaller(deserializer, this.utfEncoder) + }); + } + serialize(inputStream, serializer) { + return new MessageEncoderStream({ + messageStream: new SmithyMessageEncoderStream({ inputStream, serializer }), + encoder: this.eventStreamCodec, + includeEndFrame: true + }); + } + }; + eventStreamSerdeProvider = /* @__PURE__ */ __name((options) => new EventStreamMarshaller(options), "eventStreamSerdeProvider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde/EventStreamMarshaller.js +import { Readable as Readable5 } from "node:stream"; +async function* readableToIterable(readStream) { + let streamEnded = false; + let generationEnded = false; + const records = new Array(); + readStream.on("error", (err) => { + if (!streamEnded) { + streamEnded = true; + } + if (err) { + throw err; + } + }); + readStream.on("data", (data) => { + records.push(data); + }); + readStream.on("end", () => { + streamEnded = true; + }); + while (!generationEnded) { + const value = await new Promise((resolve) => setTimeout(() => resolve(records.shift()), 0)); + if (value) { + yield value; + } + generationEnded = streamEnded && records.length === 0; + } +} +var EventStreamMarshaller2, eventStreamSerdeProvider2; +var init_EventStreamMarshaller2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde/EventStreamMarshaller.js"() { + init_EventStreamMarshaller(); + EventStreamMarshaller2 = class { + static { + __name(this, "EventStreamMarshaller"); + } + universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }) { + this.universalMarshaller = new EventStreamMarshaller({ + utf8Decoder, + utf8Encoder + }); + } + deserialize(body, deserializer) { + const bodyIterable = typeof body[Symbol.asyncIterator] === "function" ? body : readableToIterable(body); + return this.universalMarshaller.deserialize(bodyIterable, deserializer); + } + serialize(input, serializer) { + return Readable5.from(this.universalMarshaller.serialize(input, serializer)); + } + }; + eventStreamSerdeProvider2 = /* @__PURE__ */ __name((options) => new EventStreamMarshaller2(options), "eventStreamSerdeProvider"); + __name(readableToIterable, "readableToIterable"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde/utils.js +var readableStreamToIterable, iterableToReadableStream; +var init_utils2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde/utils.js"() { + readableStreamToIterable = /* @__PURE__ */ __name((readableStream) => ({ + [Symbol.asyncIterator]: async function* () { + const reader = readableStream.getReader(); + try { + while (true) { + const { done, value } = await reader.read(); + if (done) + return; + yield value; + } + } finally { + reader.releaseLock(); + } + } + }), "readableStreamToIterable"); + iterableToReadableStream = /* @__PURE__ */ __name((asyncIterable) => { + const iterator = asyncIterable[Symbol.asyncIterator](); + return new ReadableStream({ + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + return controller.close(); + } + controller.enqueue(value); + } + }); + }, "iterableToReadableStream"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-config-resolver/EventStreamSerdeConfig.js +var resolveEventStreamSerdeConfig; +var init_EventStreamSerdeConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-serde-config-resolver/EventStreamSerdeConfig.js"() { + resolveEventStreamSerdeConfig = /* @__PURE__ */ __name((input) => Object.assign(input, { + eventStreamMarshaller: input.eventStreamSerdeProvider(input) + }), "resolveEventStreamSerdeConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +var EventStreamSerde; +var init_EventStreamSerde = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js"() { + init_transport(); + init_schema(); + init_serde(); + EventStreamSerde = class { + static { + __name(this, "EventStreamSerde"); + } + marshaller; + serializer; + deserializer; + serdeContext; + defaultContentType; + compositeErrorRegistry; + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, compositeErrorRegistry }) { + this.marshaller = marshaller; + this.serializer = serializer; + this.deserializer = deserializer; + this.serdeContext = serdeContext; + this.defaultContentType = defaultContentType; + this.compositeErrorRegistry = compositeErrorRegistry; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, initialMessageType }) { + const marshaller = this.marshaller; + const eventStreamMember = requestSchema.getEventStreamMember(); + const unionSchema = requestSchema.getMemberSchema(eventStreamMember); + const serializer = this.serializer; + const defaultContentType = this.defaultContentType; + const initialRequestMarker = /* @__PURE__ */ Symbol("initialRequestMarker"); + const eventStreamIterable = { + async *[Symbol.asyncIterator]() { + if (initialRequest) { + const headers = { + ":event-type": { type: "string", value: initialMessageType ?? "initial-request" }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: defaultContentType } + }; + serializer.write(requestSchema, initialRequest); + const body = serializer.flush(); + yield { + [initialRequestMarker]: true, + headers, + body + }; + } + for await (const page of eventStream) { + yield page; + } + } + }; + return marshaller.serialize(eventStreamIterable, (event) => { + if (event[initialRequestMarker]) { + return { + headers: event.headers, + body: event.body + }; + } + let unionMember = ""; + for (const key in event) { + if (!hasOwn(event, key)) + continue; + if (key !== "__type") { + unionMember = key; + break; + } + } + const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event); + const headers = { + ":event-type": { type: "string", value: eventType }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: explicitPayloadContentType ?? defaultContentType }, + ...additionalHeaders + }; + return { + headers, + body + }; + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, initialMessageType }) { + const marshaller = this.marshaller; + const eventStreamMember = responseSchema.getEventStreamMember(); + const unionSchema = responseSchema.getMemberSchema(eventStreamMember); + const memberSchemas = unionSchema.getMemberSchemas(); + const initialResponseMarker = /* @__PURE__ */ Symbol("initialResponseMarker"); + const asyncIterable = marshaller.deserialize(response.body, async (event) => { + let unionMember = ""; + for (const key in event) { + if (!hasOwn(event, key)) + continue; + if (key !== "__type") { + unionMember = key; + break; + } + } + const body = event[unionMember].body; + if (unionMember === (initialMessageType ?? "initial-response")) { + const dataObject = await this.deserializer.read(responseSchema, body); + delete dataObject[eventStreamMember]; + return { + [initialResponseMarker]: true, + ...dataObject + }; + } else if (unionMember in memberSchemas) { + const eventStreamSchema = memberSchemas[unionMember]; + if (eventStreamSchema.isStructSchema()) { + const out = {}; + let hasBindings = false; + for (const [name, member2] of eventStreamSchema.structIterator()) { + const { eventHeader, eventPayload } = member2.getMergedTraits(); + hasBindings = hasBindings || Boolean(eventHeader || eventPayload); + if (eventPayload) { + if (member2.isBlobSchema()) { + out[name] = body; + } else if (member2.isStringSchema()) { + out[name] = (this.serdeContext?.utf8Encoder ?? toUtf8)(body); + } else if (member2.isStructSchema()) { + out[name] = await this.deserializer.read(member2, body); + } + } else if (eventHeader) { + const value = event[unionMember].headers[name]?.value; + if (value != null) { + if (member2.isNumericSchema()) { + if (value && typeof value === "object" && "bytes" in value) { + out[name] = BigInt(value.toString()); + } else { + out[name] = Number(value); + } + } else { + out[name] = value; + } + } + } + } + return { + [unionMember]: await this.readEventMember(eventStreamSchema, body, hasBindings, out) + }; + } + return { + [unionMember]: await this.deserializer.read(eventStreamSchema, body) + }; + } else { + return { + $unknown: event + }; + } + }); + const asyncIterator = asyncIterable[Symbol.asyncIterator](); + const firstEvent = await asyncIterator.next(); + if (firstEvent.done) { + return asyncIterable; + } + if (firstEvent.value?.[initialResponseMarker]) { + if (!responseSchema) { + throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given."); + } + for (const key in firstEvent.value) { + if (!hasOwn(firstEvent.value, key)) + continue; + initialResponseContainer[key] = firstEvent.value[key]; + } + } + return { + async *[Symbol.asyncIterator]() { + if (!firstEvent?.value?.[initialResponseMarker]) { + yield firstEvent.value; + } + while (true) { + const { done, value } = await asyncIterator.next(); + if (done) { + break; + } + yield value; + } + } + }; + } + async readEventMember(eventStreamSchema, body, hasBindings, out) { + let ErrCtor; + const staticStructuralSchema = eventStreamSchema.getSchema(); + if (Array.isArray(staticStructuralSchema) && staticStructuralSchema[0] === -3) { + const namespace = staticStructuralSchema[1]; + const nsRegistry = TypeRegistry.for(namespace); + this.compositeErrorRegistry?.copyFrom(nsRegistry); + ErrCtor = (this.compositeErrorRegistry ?? nsRegistry)?.getErrorCtor(staticStructuralSchema); + } + const dataObject = hasBindings ? out : body.byteLength === 0 ? {} : await this.deserializer.read(eventStreamSchema, body); + if (ErrCtor) { + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const metadata = {}; + const $fault = eventStreamSchema.getMergedTraits().error; + if ($fault) { + metadata.$fault = $fault; + } + return Object.assign(new ErrCtor({}), metadata, { + message + }, dataObject); + } + return dataObject; + } + writeEventBody(unionMember, unionSchema, event) { + const serializer = this.serializer; + let eventType = unionMember; + let explicitPayloadMember = null; + let explicitPayloadContentType; + const isKnownSchema = (() => { + const struct2 = unionSchema.getSchema(); + return struct2[4].includes(unionMember); + })(); + const additionalHeaders = {}; + if (!isKnownSchema) { + const [type, value] = event[unionMember]; + eventType = type; + serializer.write(15, value); + } else { + const eventSchema = unionSchema.getMemberSchema(unionMember); + if (eventSchema.isStructSchema()) { + for (const [memberName, memberSchema] of eventSchema.structIterator()) { + const { eventHeader, eventPayload } = memberSchema.getMergedTraits(); + if (eventPayload) { + explicitPayloadMember = memberName; + } else if (eventHeader) { + const value = event[unionMember][memberName]; + let type = "binary"; + if (memberSchema.isNumericSchema()) { + if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) { + type = "integer"; + } else { + type = "long"; + } + } else if (memberSchema.isTimestampSchema()) { + type = "timestamp"; + } else if (memberSchema.isStringSchema()) { + type = "string"; + } else if (memberSchema.isBooleanSchema()) { + type = "boolean"; + } + if (value != null) { + additionalHeaders[memberName] = { + type, + value + }; + delete event[unionMember][memberName]; + } + } + } + if (explicitPayloadMember !== null) { + const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember); + if (payloadSchema.isBlobSchema()) { + explicitPayloadContentType = "application/octet-stream"; + } else if (payloadSchema.isStringSchema()) { + explicitPayloadContentType = "text/plain"; + } + serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]); + } else { + serializer.write(eventSchema, event[unionMember]); + } + } else if (eventSchema.isUnitSchema()) { + serializer.write(eventSchema, {}); + } else { + throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union."); + } + } + const messageSerialization = serializer.flush() ?? new Uint8Array(); + const body = typeof messageSerialization === "string" ? (this.serdeContext?.utf8Decoder ?? fromUtf8)(messageSerialization) : messageSerialization; + return { + body, + eventType, + explicitPayloadContentType, + additionalHeaders + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js +var event_streams_exports = {}; +__export(event_streams_exports, { + EventStreamCodec: () => EventStreamCodec, + EventStreamMarshaller: () => EventStreamMarshaller2, + EventStreamSerde: () => EventStreamSerde, + HeaderMarshaller: () => HeaderMarshaller, + Int64: () => Int64, + MessageDecoderStream: () => MessageDecoderStream, + MessageEncoderStream: () => MessageEncoderStream, + SmithyMessageDecoderStream: () => SmithyMessageDecoderStream, + SmithyMessageEncoderStream: () => SmithyMessageEncoderStream, + UniversalEventStreamMarshaller: () => EventStreamMarshaller, + eventStreamSerdeProvider: () => eventStreamSerdeProvider2, + getChunkedStream: () => getChunkedStream, + getMessageUnmarshaller: () => getMessageUnmarshaller, + getUnmarshalledStream: () => getUnmarshalledStream, + iterableToReadableStream: () => iterableToReadableStream, + readableStreamToIterable: () => readableStreamToIterable, + resolveEventStreamSerdeConfig: () => resolveEventStreamSerdeConfig, + universalEventStreamSerdeProvider: () => eventStreamSerdeProvider +}); +var init_event_streams = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js"() { + init_EventStreamCodec(); + init_HeaderMarshaller(); + init_Int64(); + init_MessageDecoderStream(); + init_MessageEncoderStream(); + init_SmithyMessageDecoderStream(); + init_SmithyMessageEncoderStream(); + init_EventStreamMarshaller2(); + init_utils2(); + init_EventStreamMarshaller(); + init_getChunkedStream(); + init_getUnmarshalledStream(); + init_EventStreamSerdeConfig(); + init_EventStreamSerde(); + } +}); + +export { + require_dist_cjs, + getSmithyContext, + hasOwn, + HttpRequest, + HttpResponse, + isValidHostLabel, + isValidHostname, + normalizeProvider, + parseQueryString, + parseUrl, + init_transport, + Client, + deref, + getSchemaSerdePlugin, + translateTraits, + NormalizedSchema, + TypeRegistry, + schema_exports, + init_schema, + Command, + createAggregatedClient, + ServiceException, + decorateServiceException, + loadConfigsForDefaultMode, + emitWarningIfUnsupportedVersion, + getDefaultExtensionConfiguration, + resolveDefaultRuntimeConfig, + getValueFromTextNode, + NoOpLogger, + makeBuilder, + client_exports, + init_client2 as init_client, + isArrayBuffer, + fromBase64, + fromUtf8, + toBase64, + toUtf8, + dateToUtcString, + parseRfc3339DateTimeWithOffset, + parseRfc7231DateTime, + parseEpochTimestamp, + LazyJsonString, + quoteHeader, + _parseEpochTimestamp, + _parseRfc3339DateTimeWithOffset, + _parseRfc7231DateTime, + splitEvery, + splitHeader, + NumericValue, + calculateBodyLength, + toUint8Array, + concatBytes, + ProviderError, + booleanSelector, + SelectorType, + loadConfig, + NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, + NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, + REGION_ENV_NAME, + REGION_INI_NAME, + NODE_REGION_CONFIG_OPTIONS, + NODE_REGION_CONFIG_FILE_OPTIONS, + resolveRegionConfig, + resolveDefaultsModeConfig, + config_exports, + init_config2 as init_config, + resolveParams, + BinaryDecisionDiagram, + EndpointCache, + EndpointError, + customEndpointFunctions, + isIpAddress, + decideEndpoint, + resolveEndpoint, + resolveEndpointConfig, + getEndpointPlugin, + endpoints_exports, + init_endpoints, + createChecksumStream2 as createChecksumStream, + createBufferedReadable, + sdkStreamMixin2 as sdkStreamMixin, + Uint8ArrayBlobAdapter, + v4, + generateIdempotencyToken, + serde_exports, + init_serde, + Crc32Node, + Sha256Js, + Sha256Node, + checksum_exports, + init_checksum2 as init_checksum, + Int64, + HeaderMarshaller, + EventStreamCodec, + MessageDecoderStream, + MessageEncoderStream, + SmithyMessageDecoderStream, + SmithyMessageEncoderStream, + getChunkedStream, + getUnmarshalledStream, + getMessageUnmarshaller, + EventStreamMarshaller, + eventStreamSerdeProvider, + EventStreamMarshaller2, + eventStreamSerdeProvider2, + readableStreamToIterable, + iterableToReadableStream, + resolveEventStreamSerdeConfig, + EventStreamSerde, + event_streams_exports, + init_event_streams +}; diff --git a/apps/api/.output/dist/chunks/chunk-A34KYKJP.js b/apps/api/.output/dist/chunks/chunk-A34KYKJP.js new file mode 100644 index 0000000..459cff8 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-A34KYKJP.js @@ -0,0 +1,129 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + __commonJS, + __name +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js +var require_ms = __commonJS({ + "../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"(exports, module) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + __name(parse, "parse"); + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + __name(fmtShort, "fmtShort"); + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + __name(fmtLong, "fmtLong"); + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); + } + __name(plural, "plural"); + } +}); + +export { + require_ms +}; diff --git a/apps/api/.output/dist/chunks/chunk-BX2ML7LW.js b/apps/api/.output/dist/chunks/chunk-BX2ML7LW.js new file mode 100644 index 0000000..27f2858 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-BX2ML7LW.js @@ -0,0 +1,15727 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + __commonJS, + __esm, + __export, + __name, + __toESM +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js +var require_Reflect = __commonJS({ + "../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js"() { + var Reflect2; + (function(Reflect3) { + (function(factory) { + var root = typeof globalThis === "object" ? globalThis : typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : sloppyModeThis(); + var exporter = makeExporter(Reflect3); + if (typeof root.Reflect !== "undefined") { + exporter = makeExporter(root.Reflect, exporter); + } + factory(exporter, root); + if (typeof root.Reflect === "undefined") { + root.Reflect = Reflect3; + } + function makeExporter(target, previous) { + return function(key, value) { + Object.defineProperty(target, key, { configurable: true, writable: true, value }); + if (previous) + previous(key, value); + }; + } + __name(makeExporter, "makeExporter"); + function functionThis() { + try { + return Function("return this;")(); + } catch (_) { + } + } + __name(functionThis, "functionThis"); + function indirectEvalThis() { + try { + return (void 0, eval)("(function() { return this; })()"); + } catch (_) { + } + } + __name(indirectEvalThis, "indirectEvalThis"); + function sloppyModeThis() { + return functionThis() || indirectEvalThis(); + } + __name(sloppyModeThis, "sloppyModeThis"); + })(function(exporter, root) { + var hasOwn = Object.prototype.hasOwnProperty; + var supportsSymbol = typeof Symbol === "function"; + var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== "undefined" ? Symbol.toPrimitive : "@@toPrimitive"; + var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== "undefined" ? Symbol.iterator : "@@iterator"; + var supportsCreate = typeof Object.create === "function"; + var supportsProto = { __proto__: [] } instanceof Array; + var downLevel = !supportsCreate && !supportsProto; + var HashMap = { + // create an object in dictionary mode (a.k.a. "slow" mode in v8) + create: supportsCreate ? function() { + return MakeDictionary(/* @__PURE__ */ Object.create(null)); + } : supportsProto ? function() { + return MakeDictionary({ __proto__: null }); + } : function() { + return MakeDictionary({}); + }, + has: downLevel ? function(map2, key) { + return hasOwn.call(map2, key); + } : function(map2, key) { + return key in map2; + }, + get: downLevel ? function(map2, key) { + return hasOwn.call(map2, key) ? map2[key] : void 0; + } : function(map2, key) { + return map2[key]; + } + }; + var functionPrototype = Object.getPrototypeOf(Function); + var _Map = typeof Map === "function" && typeof Map.prototype.entries === "function" ? Map : CreateMapPolyfill(); + var _Set = typeof Set === "function" && typeof Set.prototype.entries === "function" ? Set : CreateSetPolyfill(); + var _WeakMap = typeof WeakMap === "function" ? WeakMap : CreateWeakMapPolyfill(); + var registrySymbol = supportsSymbol ? /* @__PURE__ */ Symbol.for("@reflect-metadata:registry") : void 0; + var metadataRegistry = GetOrCreateMetadataRegistry(); + var metadataProvider = CreateMetadataProvider(metadataRegistry); + function decorate(decorators, target, propertyKey, attributes) { + if (!IsUndefined(propertyKey)) { + if (!IsArray(decorators)) + throw new TypeError(); + if (!IsObject(target)) + throw new TypeError(); + if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes)) + throw new TypeError(); + if (IsNull(attributes)) + attributes = void 0; + propertyKey = ToPropertyKey(propertyKey); + return DecorateProperty(decorators, target, propertyKey, attributes); + } else { + if (!IsArray(decorators)) + throw new TypeError(); + if (!IsConstructor(target)) + throw new TypeError(); + return DecorateConstructor(decorators, target); + } + } + __name(decorate, "decorate"); + exporter("decorate", decorate); + function metadata(metadataKey, metadataValue) { + function decorator(target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey)) + throw new TypeError(); + OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); + } + __name(decorator, "decorator"); + return decorator; + } + __name(metadata, "metadata"); + exporter("metadata", metadata); + function defineMetadata(metadataKey, metadataValue, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); + } + __name(defineMetadata, "defineMetadata"); + exporter("defineMetadata", defineMetadata); + function hasMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryHasMetadata(metadataKey, target, propertyKey); + } + __name(hasMetadata, "hasMetadata"); + exporter("hasMetadata", hasMetadata); + function hasOwnMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey); + } + __name(hasOwnMetadata, "hasOwnMetadata"); + exporter("hasOwnMetadata", hasOwnMetadata); + function getMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryGetMetadata(metadataKey, target, propertyKey); + } + __name(getMetadata, "getMetadata"); + exporter("getMetadata", getMetadata); + function getOwnMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey); + } + __name(getOwnMetadata, "getOwnMetadata"); + exporter("getOwnMetadata", getOwnMetadata); + function getMetadataKeys(target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryMetadataKeys(target, propertyKey); + } + __name(getMetadataKeys, "getMetadataKeys"); + exporter("getMetadataKeys", getMetadataKeys); + function getOwnMetadataKeys(target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + return OrdinaryOwnMetadataKeys(target, propertyKey); + } + __name(getOwnMetadataKeys, "getOwnMetadataKeys"); + exporter("getOwnMetadataKeys", getOwnMetadataKeys); + function deleteMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + if (!IsObject(target)) + throw new TypeError(); + if (!IsUndefined(propertyKey)) + propertyKey = ToPropertyKey(propertyKey); + var provider = GetMetadataProvider( + target, + propertyKey, + /*Create*/ + false + ); + if (IsUndefined(provider)) + return false; + return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey); + } + __name(deleteMetadata, "deleteMetadata"); + exporter("deleteMetadata", deleteMetadata); + function DecorateConstructor(decorators, target) { + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + var decorated = decorator(target); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsConstructor(decorated)) + throw new TypeError(); + target = decorated; + } + } + return target; + } + __name(DecorateConstructor, "DecorateConstructor"); + function DecorateProperty(decorators, target, propertyKey, descriptor) { + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + var decorated = decorator(target, propertyKey, descriptor); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsObject(decorated)) + throw new TypeError(); + descriptor = decorated; + } + } + return descriptor; + } + __name(DecorateProperty, "DecorateProperty"); + function OrdinaryHasMetadata(MetadataKey, O, P) { + var hasOwn2 = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn2) + return true; + var parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) + return OrdinaryHasMetadata(MetadataKey, parent, P); + return false; + } + __name(OrdinaryHasMetadata, "OrdinaryHasMetadata"); + function OrdinaryHasOwnMetadata(MetadataKey, O, P) { + var provider = GetMetadataProvider( + O, + P, + /*Create*/ + false + ); + if (IsUndefined(provider)) + return false; + return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P)); + } + __name(OrdinaryHasOwnMetadata, "OrdinaryHasOwnMetadata"); + function OrdinaryGetMetadata(MetadataKey, O, P) { + var hasOwn2 = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn2) + return OrdinaryGetOwnMetadata(MetadataKey, O, P); + var parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) + return OrdinaryGetMetadata(MetadataKey, parent, P); + return void 0; + } + __name(OrdinaryGetMetadata, "OrdinaryGetMetadata"); + function OrdinaryGetOwnMetadata(MetadataKey, O, P) { + var provider = GetMetadataProvider( + O, + P, + /*Create*/ + false + ); + if (IsUndefined(provider)) + return; + return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P); + } + __name(OrdinaryGetOwnMetadata, "OrdinaryGetOwnMetadata"); + function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { + var provider = GetMetadataProvider( + O, + P, + /*Create*/ + true + ); + provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P); + } + __name(OrdinaryDefineOwnMetadata, "OrdinaryDefineOwnMetadata"); + function OrdinaryMetadataKeys(O, P) { + var ownKeys = OrdinaryOwnMetadataKeys(O, P); + var parent = OrdinaryGetPrototypeOf(O); + if (parent === null) + return ownKeys; + var parentKeys = OrdinaryMetadataKeys(parent, P); + if (parentKeys.length <= 0) + return ownKeys; + if (ownKeys.length <= 0) + return parentKeys; + var set = new _Set(); + var keys = []; + for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) { + var key = ownKeys_1[_i]; + var hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) { + var key = parentKeys_1[_a]; + var hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + return keys; + } + __name(OrdinaryMetadataKeys, "OrdinaryMetadataKeys"); + function OrdinaryOwnMetadataKeys(O, P) { + var provider = GetMetadataProvider( + O, + P, + /*create*/ + false + ); + if (!provider) { + return []; + } + return provider.OrdinaryOwnMetadataKeys(O, P); + } + __name(OrdinaryOwnMetadataKeys, "OrdinaryOwnMetadataKeys"); + function Type(x) { + if (x === null) + return 1; + switch (typeof x) { + case "undefined": + return 0; + case "boolean": + return 2; + case "string": + return 3; + case "symbol": + return 4; + case "number": + return 5; + case "object": + return x === null ? 1 : 6; + default: + return 6; + } + } + __name(Type, "Type"); + function IsUndefined(x) { + return x === void 0; + } + __name(IsUndefined, "IsUndefined"); + function IsNull(x) { + return x === null; + } + __name(IsNull, "IsNull"); + function IsSymbol(x) { + return typeof x === "symbol"; + } + __name(IsSymbol, "IsSymbol"); + function IsObject(x) { + return typeof x === "object" ? x !== null : typeof x === "function"; + } + __name(IsObject, "IsObject"); + function ToPrimitive(input, PreferredType) { + switch (Type(input)) { + case 0: + return input; + case 1: + return input; + case 2: + return input; + case 3: + return input; + case 4: + return input; + case 5: + return input; + } + var hint = PreferredType === 3 ? "string" : PreferredType === 5 ? "number" : "default"; + var exoticToPrim = GetMethod(input, toPrimitiveSymbol); + if (exoticToPrim !== void 0) { + var result = exoticToPrim.call(input, hint); + if (IsObject(result)) + throw new TypeError(); + return result; + } + return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint); + } + __name(ToPrimitive, "ToPrimitive"); + function OrdinaryToPrimitive(O, hint) { + if (hint === "string") { + var toString_1 = O.toString; + if (IsCallable(toString_1)) { + var result = toString_1.call(O); + if (!IsObject(result)) + return result; + } + var valueOf = O.valueOf; + if (IsCallable(valueOf)) { + var result = valueOf.call(O); + if (!IsObject(result)) + return result; + } + } else { + var valueOf = O.valueOf; + if (IsCallable(valueOf)) { + var result = valueOf.call(O); + if (!IsObject(result)) + return result; + } + var toString_2 = O.toString; + if (IsCallable(toString_2)) { + var result = toString_2.call(O); + if (!IsObject(result)) + return result; + } + } + throw new TypeError(); + } + __name(OrdinaryToPrimitive, "OrdinaryToPrimitive"); + function ToBoolean(argument) { + return !!argument; + } + __name(ToBoolean, "ToBoolean"); + function ToString(argument) { + return "" + argument; + } + __name(ToString, "ToString"); + function ToPropertyKey(argument) { + var key = ToPrimitive( + argument, + 3 + /* String */ + ); + if (IsSymbol(key)) + return key; + return ToString(key); + } + __name(ToPropertyKey, "ToPropertyKey"); + function IsArray(argument) { + return Array.isArray ? Array.isArray(argument) : argument instanceof Object ? argument instanceof Array : Object.prototype.toString.call(argument) === "[object Array]"; + } + __name(IsArray, "IsArray"); + function IsCallable(argument) { + return typeof argument === "function"; + } + __name(IsCallable, "IsCallable"); + function IsConstructor(argument) { + return typeof argument === "function"; + } + __name(IsConstructor, "IsConstructor"); + function IsPropertyKey(argument) { + switch (Type(argument)) { + case 3: + return true; + case 4: + return true; + default: + return false; + } + } + __name(IsPropertyKey, "IsPropertyKey"); + function SameValueZero(x, y) { + return x === y || x !== x && y !== y; + } + __name(SameValueZero, "SameValueZero"); + function GetMethod(V, P) { + var func = V[P]; + if (func === void 0 || func === null) + return void 0; + if (!IsCallable(func)) + throw new TypeError(); + return func; + } + __name(GetMethod, "GetMethod"); + function GetIterator(obj) { + var method = GetMethod(obj, iteratorSymbol); + if (!IsCallable(method)) + throw new TypeError(); + var iterator = method.call(obj); + if (!IsObject(iterator)) + throw new TypeError(); + return iterator; + } + __name(GetIterator, "GetIterator"); + function IteratorValue(iterResult) { + return iterResult.value; + } + __name(IteratorValue, "IteratorValue"); + function IteratorStep(iterator) { + var result = iterator.next(); + return result.done ? false : result; + } + __name(IteratorStep, "IteratorStep"); + function IteratorClose(iterator) { + var f = iterator["return"]; + if (f) + f.call(iterator); + } + __name(IteratorClose, "IteratorClose"); + function OrdinaryGetPrototypeOf(O) { + var proto = Object.getPrototypeOf(O); + if (typeof O !== "function" || O === functionPrototype) + return proto; + if (proto !== functionPrototype) + return proto; + var prototype = O.prototype; + var prototypeProto = prototype && Object.getPrototypeOf(prototype); + if (prototypeProto == null || prototypeProto === Object.prototype) + return proto; + var constructor = prototypeProto.constructor; + if (typeof constructor !== "function") + return proto; + if (constructor === O) + return proto; + return constructor; + } + __name(OrdinaryGetPrototypeOf, "OrdinaryGetPrototypeOf"); + function CreateMetadataRegistry() { + var fallback; + if (!IsUndefined(registrySymbol) && typeof root.Reflect !== "undefined" && !(registrySymbol in root.Reflect) && typeof root.Reflect.defineMetadata === "function") { + fallback = CreateFallbackProvider(root.Reflect); + } + var first; + var second; + var rest; + var targetProviderMap = new _WeakMap(); + var registry = { + registerProvider, + getProvider, + setProvider + }; + return registry; + function registerProvider(provider) { + if (!Object.isExtensible(registry)) { + throw new Error("Cannot add provider to a frozen registry."); + } + switch (true) { + case fallback === provider: + break; + case IsUndefined(first): + first = provider; + break; + case first === provider: + break; + case IsUndefined(second): + second = provider; + break; + case second === provider: + break; + default: + if (rest === void 0) + rest = new _Set(); + rest.add(provider); + break; + } + } + __name(registerProvider, "registerProvider"); + function getProviderNoCache(O, P) { + if (!IsUndefined(first)) { + if (first.isProviderFor(O, P)) + return first; + if (!IsUndefined(second)) { + if (second.isProviderFor(O, P)) + return first; + if (!IsUndefined(rest)) { + var iterator = GetIterator(rest); + while (true) { + var next = IteratorStep(iterator); + if (!next) { + return void 0; + } + var provider = IteratorValue(next); + if (provider.isProviderFor(O, P)) { + IteratorClose(iterator); + return provider; + } + } + } + } + } + if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) { + return fallback; + } + return void 0; + } + __name(getProviderNoCache, "getProviderNoCache"); + function getProvider(O, P) { + var providerMap = targetProviderMap.get(O); + var provider; + if (!IsUndefined(providerMap)) { + provider = providerMap.get(P); + } + if (!IsUndefined(provider)) { + return provider; + } + provider = getProviderNoCache(O, P); + if (!IsUndefined(provider)) { + if (IsUndefined(providerMap)) { + providerMap = new _Map(); + targetProviderMap.set(O, providerMap); + } + providerMap.set(P, provider); + } + return provider; + } + __name(getProvider, "getProvider"); + function hasProvider(provider) { + if (IsUndefined(provider)) + throw new TypeError(); + return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider); + } + __name(hasProvider, "hasProvider"); + function setProvider(O, P, provider) { + if (!hasProvider(provider)) { + throw new Error("Metadata provider not registered."); + } + var existingProvider = getProvider(O, P); + if (existingProvider !== provider) { + if (!IsUndefined(existingProvider)) { + return false; + } + var providerMap = targetProviderMap.get(O); + if (IsUndefined(providerMap)) { + providerMap = new _Map(); + targetProviderMap.set(O, providerMap); + } + providerMap.set(P, provider); + } + return true; + } + __name(setProvider, "setProvider"); + } + __name(CreateMetadataRegistry, "CreateMetadataRegistry"); + function GetOrCreateMetadataRegistry() { + var metadataRegistry2; + if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) { + metadataRegistry2 = root.Reflect[registrySymbol]; + } + if (IsUndefined(metadataRegistry2)) { + metadataRegistry2 = CreateMetadataRegistry(); + } + if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) { + Object.defineProperty(root.Reflect, registrySymbol, { + enumerable: false, + configurable: false, + writable: false, + value: metadataRegistry2 + }); + } + return metadataRegistry2; + } + __name(GetOrCreateMetadataRegistry, "GetOrCreateMetadataRegistry"); + function CreateMetadataProvider(registry) { + var metadata2 = new _WeakMap(); + var provider = { + isProviderFor: /* @__PURE__ */ __name(function(O, P) { + var targetMetadata = metadata2.get(O); + if (IsUndefined(targetMetadata)) + return false; + return targetMetadata.has(P); + }, "isProviderFor"), + OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata2, + OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata2, + OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata2, + OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys2, + OrdinaryDeleteMetadata + }; + metadataRegistry.registerProvider(provider); + return provider; + function GetOrCreateMetadataMap(O, P, Create) { + var targetMetadata = metadata2.get(O); + var createdTargetMetadata = false; + if (IsUndefined(targetMetadata)) { + if (!Create) + return void 0; + targetMetadata = new _Map(); + metadata2.set(O, targetMetadata); + createdTargetMetadata = true; + } + var metadataMap = targetMetadata.get(P); + if (IsUndefined(metadataMap)) { + if (!Create) + return void 0; + metadataMap = new _Map(); + targetMetadata.set(P, metadataMap); + if (!registry.setProvider(O, P, provider)) { + targetMetadata.delete(P); + if (createdTargetMetadata) { + metadata2.delete(O); + } + throw new Error("Wrong provider for target."); + } + } + return metadataMap; + } + __name(GetOrCreateMetadataMap, "GetOrCreateMetadataMap"); + function OrdinaryHasOwnMetadata2(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap( + O, + P, + /*Create*/ + false + ); + if (IsUndefined(metadataMap)) + return false; + return ToBoolean(metadataMap.has(MetadataKey)); + } + __name(OrdinaryHasOwnMetadata2, "OrdinaryHasOwnMetadata"); + function OrdinaryGetOwnMetadata2(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap( + O, + P, + /*Create*/ + false + ); + if (IsUndefined(metadataMap)) + return void 0; + return metadataMap.get(MetadataKey); + } + __name(OrdinaryGetOwnMetadata2, "OrdinaryGetOwnMetadata"); + function OrdinaryDefineOwnMetadata2(MetadataKey, MetadataValue, O, P) { + var metadataMap = GetOrCreateMetadataMap( + O, + P, + /*Create*/ + true + ); + metadataMap.set(MetadataKey, MetadataValue); + } + __name(OrdinaryDefineOwnMetadata2, "OrdinaryDefineOwnMetadata"); + function OrdinaryOwnMetadataKeys2(O, P) { + var keys = []; + var metadataMap = GetOrCreateMetadataMap( + O, + P, + /*Create*/ + false + ); + if (IsUndefined(metadataMap)) + return keys; + var keysObj = metadataMap.keys(); + var iterator = GetIterator(keysObj); + var k = 0; + while (true) { + var next = IteratorStep(iterator); + if (!next) { + keys.length = k; + return keys; + } + var nextValue = IteratorValue(next); + try { + keys[k] = nextValue; + } catch (e) { + try { + IteratorClose(iterator); + } finally { + throw e; + } + } + k++; + } + } + __name(OrdinaryOwnMetadataKeys2, "OrdinaryOwnMetadataKeys"); + function OrdinaryDeleteMetadata(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap( + O, + P, + /*Create*/ + false + ); + if (IsUndefined(metadataMap)) + return false; + if (!metadataMap.delete(MetadataKey)) + return false; + if (metadataMap.size === 0) { + var targetMetadata = metadata2.get(O); + if (!IsUndefined(targetMetadata)) { + targetMetadata.delete(P); + if (targetMetadata.size === 0) { + metadata2.delete(targetMetadata); + } + } + } + return true; + } + __name(OrdinaryDeleteMetadata, "OrdinaryDeleteMetadata"); + } + __name(CreateMetadataProvider, "CreateMetadataProvider"); + function CreateFallbackProvider(reflect) { + var defineMetadata2 = reflect.defineMetadata, hasOwnMetadata2 = reflect.hasOwnMetadata, getOwnMetadata2 = reflect.getOwnMetadata, getOwnMetadataKeys2 = reflect.getOwnMetadataKeys, deleteMetadata2 = reflect.deleteMetadata; + var metadataOwner = new _WeakMap(); + var provider = { + isProviderFor: /* @__PURE__ */ __name(function(O, P) { + var metadataPropertySet = metadataOwner.get(O); + if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) { + return true; + } + if (getOwnMetadataKeys2(O, P).length) { + if (IsUndefined(metadataPropertySet)) { + metadataPropertySet = new _Set(); + metadataOwner.set(O, metadataPropertySet); + } + metadataPropertySet.add(P); + return true; + } + return false; + }, "isProviderFor"), + OrdinaryDefineOwnMetadata: defineMetadata2, + OrdinaryHasOwnMetadata: hasOwnMetadata2, + OrdinaryGetOwnMetadata: getOwnMetadata2, + OrdinaryOwnMetadataKeys: getOwnMetadataKeys2, + OrdinaryDeleteMetadata: deleteMetadata2 + }; + return provider; + } + __name(CreateFallbackProvider, "CreateFallbackProvider"); + function GetMetadataProvider(O, P, Create) { + var registeredProvider = metadataRegistry.getProvider(O, P); + if (!IsUndefined(registeredProvider)) { + return registeredProvider; + } + if (Create) { + if (metadataRegistry.setProvider(O, P, metadataProvider)) { + return metadataProvider; + } + throw new Error("Illegal state."); + } + return void 0; + } + __name(GetMetadataProvider, "GetMetadataProvider"); + function CreateMapPolyfill() { + var cacheSentinel = {}; + var arraySentinel = []; + var MapIterator = ( + /** @class */ + (function() { + function MapIterator2(keys, values, selector) { + this._index = 0; + this._keys = keys; + this._values = values; + this._selector = selector; + } + __name(MapIterator2, "MapIterator"); + MapIterator2.prototype["@@iterator"] = function() { + return this; + }; + MapIterator2.prototype[iteratorSymbol] = function() { + return this; + }; + MapIterator2.prototype.next = function() { + var index = this._index; + if (index >= 0 && index < this._keys.length) { + var result = this._selector(this._keys[index], this._values[index]); + if (index + 1 >= this._keys.length) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } else { + this._index++; + } + return { value: result, done: false }; + } + return { value: void 0, done: true }; + }; + MapIterator2.prototype.throw = function(error) { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + throw error; + }; + MapIterator2.prototype.return = function(value) { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + return { value, done: true }; + }; + return MapIterator2; + })() + ); + var Map2 = ( + /** @class */ + (function() { + function Map3() { + this._keys = []; + this._values = []; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + __name(Map3, "Map"); + Object.defineProperty(Map3.prototype, "size", { + get: /* @__PURE__ */ __name(function() { + return this._keys.length; + }, "get"), + enumerable: true, + configurable: true + }); + Map3.prototype.has = function(key) { + return this._find( + key, + /*insert*/ + false + ) >= 0; + }; + Map3.prototype.get = function(key) { + var index = this._find( + key, + /*insert*/ + false + ); + return index >= 0 ? this._values[index] : void 0; + }; + Map3.prototype.set = function(key, value) { + var index = this._find( + key, + /*insert*/ + true + ); + this._values[index] = value; + return this; + }; + Map3.prototype.delete = function(key) { + var index = this._find( + key, + /*insert*/ + false + ); + if (index >= 0) { + var size = this._keys.length; + for (var i = index + 1; i < size; i++) { + this._keys[i - 1] = this._keys[i]; + this._values[i - 1] = this._values[i]; + } + this._keys.length--; + this._values.length--; + if (SameValueZero(key, this._cacheKey)) { + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + return true; + } + return false; + }; + Map3.prototype.clear = function() { + this._keys.length = 0; + this._values.length = 0; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + }; + Map3.prototype.keys = function() { + return new MapIterator(this._keys, this._values, getKey); + }; + Map3.prototype.values = function() { + return new MapIterator(this._keys, this._values, getValue); + }; + Map3.prototype.entries = function() { + return new MapIterator(this._keys, this._values, getEntry); + }; + Map3.prototype["@@iterator"] = function() { + return this.entries(); + }; + Map3.prototype[iteratorSymbol] = function() { + return this.entries(); + }; + Map3.prototype._find = function(key, insert) { + if (!SameValueZero(this._cacheKey, key)) { + this._cacheIndex = -1; + for (var i = 0; i < this._keys.length; i++) { + if (SameValueZero(this._keys[i], key)) { + this._cacheIndex = i; + break; + } + } + } + if (this._cacheIndex < 0 && insert) { + this._cacheIndex = this._keys.length; + this._keys.push(key); + this._values.push(void 0); + } + return this._cacheIndex; + }; + return Map3; + })() + ); + return Map2; + function getKey(key, _) { + return key; + } + __name(getKey, "getKey"); + function getValue(_, value) { + return value; + } + __name(getValue, "getValue"); + function getEntry(key, value) { + return [key, value]; + } + __name(getEntry, "getEntry"); + } + __name(CreateMapPolyfill, "CreateMapPolyfill"); + function CreateSetPolyfill() { + var Set2 = ( + /** @class */ + (function() { + function Set3() { + this._map = new _Map(); + } + __name(Set3, "Set"); + Object.defineProperty(Set3.prototype, "size", { + get: /* @__PURE__ */ __name(function() { + return this._map.size; + }, "get"), + enumerable: true, + configurable: true + }); + Set3.prototype.has = function(value) { + return this._map.has(value); + }; + Set3.prototype.add = function(value) { + return this._map.set(value, value), this; + }; + Set3.prototype.delete = function(value) { + return this._map.delete(value); + }; + Set3.prototype.clear = function() { + this._map.clear(); + }; + Set3.prototype.keys = function() { + return this._map.keys(); + }; + Set3.prototype.values = function() { + return this._map.keys(); + }; + Set3.prototype.entries = function() { + return this._map.entries(); + }; + Set3.prototype["@@iterator"] = function() { + return this.keys(); + }; + Set3.prototype[iteratorSymbol] = function() { + return this.keys(); + }; + return Set3; + })() + ); + return Set2; + } + __name(CreateSetPolyfill, "CreateSetPolyfill"); + function CreateWeakMapPolyfill() { + var UUID_SIZE = 16; + var keys = HashMap.create(); + var rootKey = CreateUniqueKey(); + return ( + /** @class */ + (function() { + function WeakMap2() { + this._key = CreateUniqueKey(); + } + __name(WeakMap2, "WeakMap"); + WeakMap2.prototype.has = function(target) { + var table = GetOrCreateWeakMapTable( + target, + /*create*/ + false + ); + return table !== void 0 ? HashMap.has(table, this._key) : false; + }; + WeakMap2.prototype.get = function(target) { + var table = GetOrCreateWeakMapTable( + target, + /*create*/ + false + ); + return table !== void 0 ? HashMap.get(table, this._key) : void 0; + }; + WeakMap2.prototype.set = function(target, value) { + var table = GetOrCreateWeakMapTable( + target, + /*create*/ + true + ); + table[this._key] = value; + return this; + }; + WeakMap2.prototype.delete = function(target) { + var table = GetOrCreateWeakMapTable( + target, + /*create*/ + false + ); + return table !== void 0 ? delete table[this._key] : false; + }; + WeakMap2.prototype.clear = function() { + this._key = CreateUniqueKey(); + }; + return WeakMap2; + })() + ); + function CreateUniqueKey() { + var key; + do + key = "@@WeakMap@@" + CreateUUID(); + while (HashMap.has(keys, key)); + keys[key] = true; + return key; + } + __name(CreateUniqueKey, "CreateUniqueKey"); + function GetOrCreateWeakMapTable(target, create) { + if (!hasOwn.call(target, rootKey)) { + if (!create) + return void 0; + Object.defineProperty(target, rootKey, { value: HashMap.create() }); + } + return target[rootKey]; + } + __name(GetOrCreateWeakMapTable, "GetOrCreateWeakMapTable"); + function FillRandomBytes(buffer, size) { + for (var i = 0; i < size; ++i) + buffer[i] = Math.random() * 255 | 0; + return buffer; + } + __name(FillRandomBytes, "FillRandomBytes"); + function GenRandomBytes(size) { + if (typeof Uint8Array === "function") { + var array = new Uint8Array(size); + if (typeof crypto !== "undefined") { + crypto.getRandomValues(array); + } else if (typeof msCrypto !== "undefined") { + msCrypto.getRandomValues(array); + } else { + FillRandomBytes(array, size); + } + return array; + } + return FillRandomBytes(new Array(size), size); + } + __name(GenRandomBytes, "GenRandomBytes"); + function CreateUUID() { + var data = GenRandomBytes(UUID_SIZE); + data[6] = data[6] & 79 | 64; + data[8] = data[8] & 191 | 128; + var result = ""; + for (var offset = 0; offset < UUID_SIZE; ++offset) { + var byte = data[offset]; + if (offset === 4 || offset === 6 || offset === 8) + result += "-"; + if (byte < 16) + result += "0"; + result += byte.toString(16).toLowerCase(); + } + return result; + } + __name(CreateUUID, "CreateUUID"); + } + __name(CreateWeakMapPolyfill, "CreateWeakMapPolyfill"); + function MakeDictionary(obj) { + obj.__ = void 0; + delete obj.__; + return obj; + } + __name(MakeDictionary, "MakeDictionary"); + }); + })(Reflect2 || (Reflect2 = {})); + } +}); + +// ../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} +function __param(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +} +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} +var init_tslib_es6 = __esm({ + "../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs"() { + __name(__decorate, "__decorate"); + __name(__param, "__param"); + __name(__metadata, "__metadata"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/shared.utils.js +var isUndefined, isObject, isPlainObject, addLeadingSlash, normalizePath, stripEndSlash, isFunction, isString, isNumber, isConstructor, isNil, isEmpty, isEmptyArray, isSymbol; +var init_shared_utils = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/shared.utils.js"() { + isUndefined = /* @__PURE__ */ __name((obj) => typeof obj === "undefined", "isUndefined"); + isObject = /* @__PURE__ */ __name((fn) => !isNil(fn) && typeof fn === "object", "isObject"); + isPlainObject = /* @__PURE__ */ __name((fn) => { + if (!isObject(fn)) { + return false; + } + const proto = Object.getPrototypeOf(fn); + if (proto === null) { + return true; + } + const ctor = Object.hasOwn(proto, "constructor") && proto.constructor; + return typeof ctor === "function" && ctor instanceof ctor && Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object); + }, "isPlainObject"); + addLeadingSlash = /* @__PURE__ */ __name((path) => path && typeof path === "string" ? path.charAt(0) !== "/" && path.substring(0, 2) !== "{/" ? "/" + path : path : "", "addLeadingSlash"); + normalizePath = /* @__PURE__ */ __name((path) => path ? ("/" + path.replace(/\/+$/, "")).replace(/\/+/g, "/") : "/", "normalizePath"); + stripEndSlash = /* @__PURE__ */ __name((path) => path.endsWith("/") ? path.slice(0, -1) : path, "stripEndSlash"); + isFunction = /* @__PURE__ */ __name((val) => typeof val === "function", "isFunction"); + isString = /* @__PURE__ */ __name((val) => typeof val === "string", "isString"); + isNumber = /* @__PURE__ */ __name((val) => typeof val === "number", "isNumber"); + isConstructor = /* @__PURE__ */ __name((val) => val === "constructor", "isConstructor"); + isNil = /* @__PURE__ */ __name((val) => isUndefined(val) || val === null, "isNil"); + isEmpty = /* @__PURE__ */ __name((value) => { + if (isNil(value)) { + return true; + } + if (Array.isArray(value)) { + return value.length === 0; + } + return false; + }, "isEmpty"); + isEmptyArray = /* @__PURE__ */ __name((array) => { + if (!Array.isArray(array)) { + return false; + } + return array.length === 0; + }, "isEmptyArray"); + isSymbol = /* @__PURE__ */ __name((val) => typeof val === "symbol", "isSymbol"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/constants.js +var MODULE_METADATA, GLOBAL_MODULE_METADATA, HOST_METADATA, PATH_METADATA, PARAMTYPES_METADATA, SELF_DECLARED_DEPS_METADATA, OPTIONAL_DEPS_METADATA, PROPERTY_DEPS_METADATA, OPTIONAL_PROPERTY_DEPS_METADATA, SCOPE_OPTIONS_METADATA, METHOD_METADATA, ROUTE_ARGS_METADATA, CUSTOM_ROUTE_ARGS_METADATA, FILTER_CATCH_EXCEPTIONS, PIPES_METADATA, GUARDS_METADATA, INTERCEPTORS_METADATA, EXCEPTION_FILTERS_METADATA, ENHANCER_KEY_TO_SUBTYPE_MAP, RENDER_METADATA, HTTP_CODE_METADATA, MODULE_PATH, HEADERS_METADATA, REDIRECT_METADATA, RESPONSE_PASSTHROUGH_METADATA, SSE_METADATA, SSE_OPTIONS_METADATA, VERSION_METADATA, INJECTABLE_WATERMARK, CONTROLLER_WATERMARK, CATCH_WATERMARK, ENTRY_PROVIDER_WATERMARK; +var init_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/constants.js"() { + MODULE_METADATA = { + IMPORTS: "imports", + PROVIDERS: "providers", + CONTROLLERS: "controllers", + EXPORTS: "exports" + }; + GLOBAL_MODULE_METADATA = "__module:global__"; + HOST_METADATA = "host"; + PATH_METADATA = "path"; + PARAMTYPES_METADATA = "design:paramtypes"; + SELF_DECLARED_DEPS_METADATA = "self:paramtypes"; + OPTIONAL_DEPS_METADATA = "optional:paramtypes"; + PROPERTY_DEPS_METADATA = "self:properties_metadata"; + OPTIONAL_PROPERTY_DEPS_METADATA = "optional:properties_metadata"; + SCOPE_OPTIONS_METADATA = "scope:options"; + METHOD_METADATA = "method"; + ROUTE_ARGS_METADATA = "__routeArguments__"; + CUSTOM_ROUTE_ARGS_METADATA = "__customRouteArgs__"; + FILTER_CATCH_EXCEPTIONS = "__filterCatchExceptions__"; + PIPES_METADATA = "__pipes__"; + GUARDS_METADATA = "__guards__"; + INTERCEPTORS_METADATA = "__interceptors__"; + EXCEPTION_FILTERS_METADATA = "__exceptionFilters__"; + ENHANCER_KEY_TO_SUBTYPE_MAP = { + [GUARDS_METADATA]: "guard", + [INTERCEPTORS_METADATA]: "interceptor", + [PIPES_METADATA]: "pipe", + [EXCEPTION_FILTERS_METADATA]: "filter" + }; + RENDER_METADATA = "__renderTemplate__"; + HTTP_CODE_METADATA = "__httpCode__"; + MODULE_PATH = "__module_path__"; + HEADERS_METADATA = "__headers__"; + REDIRECT_METADATA = "__redirect__"; + RESPONSE_PASSTHROUGH_METADATA = "__responsePassthrough__"; + SSE_METADATA = "__sse__"; + SSE_OPTIONS_METADATA = "__sseOptions__"; + VERSION_METADATA = "__version__"; + INJECTABLE_WATERMARK = "__injectable__"; + CONTROLLER_WATERMARK = "__controller__"; + CATCH_WATERMARK = "__catch__"; + ENTRY_PROVIDER_WATERMARK = "__entryProvider__"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/controller.decorator.js +function Controller(prefixOrOptions) { + const defaultPath = "/"; + const [path, host, scopeOptions, versionOptions] = isUndefined(prefixOrOptions) ? [defaultPath, void 0, void 0, void 0] : isString(prefixOrOptions) || Array.isArray(prefixOrOptions) ? [prefixOrOptions, void 0, void 0, void 0] : [ + prefixOrOptions.path || defaultPath, + prefixOrOptions.host, + { scope: prefixOrOptions.scope, durable: prefixOrOptions.durable }, + Array.isArray(prefixOrOptions.version) ? Array.from(new Set(prefixOrOptions.version)) : prefixOrOptions.version + ]; + return (target) => { + Reflect.defineMetadata(CONTROLLER_WATERMARK, true, target); + Reflect.defineMetadata(PATH_METADATA, path, target); + Reflect.defineMetadata(HOST_METADATA, host, target); + Reflect.defineMetadata(SCOPE_OPTIONS_METADATA, scopeOptions, target); + Reflect.defineMetadata(VERSION_METADATA, versionOptions, target); + }; +} +var init_controller_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/controller.decorator.js"() { + init_constants(); + init_shared_utils(); + __name(Controller, "Controller"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/inject.decorator.js +function Inject(token) { + const injectCallHasArguments = arguments.length > 0; + return (target, key, index) => { + let type = token || Reflect.getMetadata("design:type", target, key); + if (!type && !injectCallHasArguments) { + type = Reflect.getMetadata(PARAMTYPES_METADATA, target, key)?.[index]; + } + if (!isUndefined(index)) { + let dependencies = Reflect.getMetadata(SELF_DECLARED_DEPS_METADATA, target) || []; + dependencies = [...dependencies, { index, param: type }]; + Reflect.defineMetadata(SELF_DECLARED_DEPS_METADATA, dependencies, target); + return; + } + let properties = Reflect.getMetadata(PROPERTY_DEPS_METADATA, target.constructor) || []; + properties = [ + ...properties.filter((property) => property.key !== key), + { key, type } + ]; + Reflect.defineMetadata(PROPERTY_DEPS_METADATA, properties, target.constructor); + }; +} +var init_inject_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/inject.decorator.js"() { + init_constants(); + init_shared_utils(); + __name(Inject, "Inject"); + } +}); + +// ../../node_modules/.pnpm/uid@2.0.2/node_modules/uid/dist/index.mjs +function uid(len) { + var i = 0, tmp = len || 11; + if (!BUFFER || IDX + tmp > SIZE * 2) { + for (BUFFER = "", IDX = 0; i < SIZE; i++) { + BUFFER += HEX[Math.random() * 256 | 0]; + } + } + return BUFFER.substring(IDX, IDX++ + tmp); +} +var IDX, HEX, SIZE, BUFFER; +var init_dist = __esm({ + "../../node_modules/.pnpm/uid@2.0.2/node_modules/uid/dist/index.mjs"() { + IDX = 256; + HEX = []; + SIZE = 256; + while (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1); + __name(uid, "uid"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/injectable.decorator.js +function Injectable(options) { + return (target) => { + Reflect.defineMetadata(INJECTABLE_WATERMARK, true, target); + Reflect.defineMetadata(SCOPE_OPTIONS_METADATA, options, target); + }; +} +function mixin(mixinClass) { + Object.defineProperty(mixinClass, "name", { + value: uid(21) + }); + Injectable()(mixinClass); + return mixinClass; +} +var init_injectable_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/injectable.decorator.js"() { + init_dist(); + init_constants(); + __name(Injectable, "Injectable"); + __name(mixin, "mixin"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/optional.decorator.js +function Optional() { + return (target, key, index) => { + if (!isUndefined(index)) { + const args = Reflect.getOwnMetadata(OPTIONAL_DEPS_METADATA, target) || []; + Reflect.defineMetadata(OPTIONAL_DEPS_METADATA, [...args, index], target); + return; + } + const properties = Reflect.getMetadata(OPTIONAL_PROPERTY_DEPS_METADATA, target.constructor) || []; + Reflect.defineMetadata(OPTIONAL_PROPERTY_DEPS_METADATA, [...properties, key], target.constructor); + }; +} +var init_optional_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/optional.decorator.js"() { + init_constants(); + init_shared_utils(); + __name(Optional, "Optional"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/global.decorator.js +function Global() { + return (target) => { + Reflect.defineMetadata(GLOBAL_MODULE_METADATA, true, target); + }; +} +var init_global_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/global.decorator.js"() { + init_constants(); + __name(Global, "Global"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/validate-module-keys.util.js +function validateModuleKeys(keys) { + const validateKey = /* @__PURE__ */ __name((key) => { + if (metadataKeys.includes(key)) { + return; + } + throw new Error(INVALID_MODULE_CONFIG_MESSAGE`${key}`); + }, "validateKey"); + keys.forEach(validateKey); +} +var INVALID_MODULE_CONFIG_MESSAGE, metadataKeys; +var init_validate_module_keys_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/validate-module-keys.util.js"() { + init_constants(); + INVALID_MODULE_CONFIG_MESSAGE = /* @__PURE__ */ __name((text, property) => `Invalid property '${property}' passed into the @Module() decorator.`, "INVALID_MODULE_CONFIG_MESSAGE"); + metadataKeys = [ + MODULE_METADATA.IMPORTS, + MODULE_METADATA.EXPORTS, + MODULE_METADATA.CONTROLLERS, + MODULE_METADATA.PROVIDERS + ]; + __name(validateModuleKeys, "validateModuleKeys"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/module.decorator.js +function Module(metadata) { + const propsKeys = Object.keys(metadata); + validateModuleKeys(propsKeys); + return (target) => { + for (const property in metadata) { + if (Object.hasOwn(metadata, property)) { + Reflect.defineMetadata(property, metadata[property], target); + } + } + }; +} +var init_module_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/module.decorator.js"() { + init_validate_module_keys_util(); + __name(Module, "Module"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/request-method.enum.js +var RequestMethod; +var init_request_method_enum = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/request-method.enum.js"() { + (function(RequestMethod2) { + RequestMethod2[RequestMethod2["GET"] = 0] = "GET"; + RequestMethod2[RequestMethod2["POST"] = 1] = "POST"; + RequestMethod2[RequestMethod2["PUT"] = 2] = "PUT"; + RequestMethod2[RequestMethod2["DELETE"] = 3] = "DELETE"; + RequestMethod2[RequestMethod2["PATCH"] = 4] = "PATCH"; + RequestMethod2[RequestMethod2["ALL"] = 5] = "ALL"; + RequestMethod2[RequestMethod2["OPTIONS"] = 6] = "OPTIONS"; + RequestMethod2[RequestMethod2["HEAD"] = 7] = "HEAD"; + RequestMethod2[RequestMethod2["SEARCH"] = 8] = "SEARCH"; + RequestMethod2[RequestMethod2["PROPFIND"] = 9] = "PROPFIND"; + RequestMethod2[RequestMethod2["PROPPATCH"] = 10] = "PROPPATCH"; + RequestMethod2[RequestMethod2["MKCOL"] = 11] = "MKCOL"; + RequestMethod2[RequestMethod2["COPY"] = 12] = "COPY"; + RequestMethod2[RequestMethod2["MOVE"] = 13] = "MOVE"; + RequestMethod2[RequestMethod2["LOCK"] = 14] = "LOCK"; + RequestMethod2[RequestMethod2["UNLOCK"] = 15] = "UNLOCK"; + RequestMethod2[RequestMethod2["QUERY"] = 16] = "QUERY"; + })(RequestMethod || (RequestMethod = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/request-mapping.decorator.js +var defaultMetadata, RequestMapping, createMappingDecorator, Post, Get, Delete, Put, Patch, Options, Head, All, Search, QueryMethod, Propfind, Proppatch, Mkcol, Copy, Move, Lock, Unlock; +var init_request_mapping_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/request-mapping.decorator.js"() { + init_constants(); + init_request_method_enum(); + defaultMetadata = { + [PATH_METADATA]: "/", + [METHOD_METADATA]: RequestMethod.GET + }; + RequestMapping = /* @__PURE__ */ __name((metadata = defaultMetadata) => { + const pathMetadata = metadata[PATH_METADATA]; + const path = pathMetadata && pathMetadata.length ? pathMetadata : "/"; + const requestMethod = metadata[METHOD_METADATA] || RequestMethod.GET; + return (target, key, descriptor) => { + Reflect.defineMetadata(PATH_METADATA, path, descriptor.value); + Reflect.defineMetadata(METHOD_METADATA, requestMethod, descriptor.value); + return descriptor; + }; + }, "RequestMapping"); + createMappingDecorator = /* @__PURE__ */ __name((method) => (path) => { + return RequestMapping({ + [PATH_METADATA]: path, + [METHOD_METADATA]: method + }); + }, "createMappingDecorator"); + Post = createMappingDecorator(RequestMethod.POST); + Get = createMappingDecorator(RequestMethod.GET); + Delete = createMappingDecorator(RequestMethod.DELETE); + Put = createMappingDecorator(RequestMethod.PUT); + Patch = createMappingDecorator(RequestMethod.PATCH); + Options = createMappingDecorator(RequestMethod.OPTIONS); + Head = createMappingDecorator(RequestMethod.HEAD); + All = createMappingDecorator(RequestMethod.ALL); + Search = createMappingDecorator(RequestMethod.SEARCH); + QueryMethod = createMappingDecorator(RequestMethod.QUERY); + Propfind = createMappingDecorator(RequestMethod.PROPFIND); + Proppatch = createMappingDecorator(RequestMethod.PROPPATCH); + Mkcol = createMappingDecorator(RequestMethod.MKCOL); + Copy = createMappingDecorator(RequestMethod.COPY); + Move = createMappingDecorator(RequestMethod.MOVE); + Lock = createMappingDecorator(RequestMethod.LOCK); + Unlock = createMappingDecorator(RequestMethod.UNLOCK); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/http-status.enum.js +var HttpStatus; +var init_http_status_enum = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/http-status.enum.js"() { + (function(HttpStatus2) { + HttpStatus2[HttpStatus2["CONTINUE"] = 100] = "CONTINUE"; + HttpStatus2[HttpStatus2["SWITCHING_PROTOCOLS"] = 101] = "SWITCHING_PROTOCOLS"; + HttpStatus2[HttpStatus2["PROCESSING"] = 102] = "PROCESSING"; + HttpStatus2[HttpStatus2["EARLYHINTS"] = 103] = "EARLYHINTS"; + HttpStatus2[HttpStatus2["OK"] = 200] = "OK"; + HttpStatus2[HttpStatus2["CREATED"] = 201] = "CREATED"; + HttpStatus2[HttpStatus2["ACCEPTED"] = 202] = "ACCEPTED"; + HttpStatus2[HttpStatus2["NON_AUTHORITATIVE_INFORMATION"] = 203] = "NON_AUTHORITATIVE_INFORMATION"; + HttpStatus2[HttpStatus2["NO_CONTENT"] = 204] = "NO_CONTENT"; + HttpStatus2[HttpStatus2["RESET_CONTENT"] = 205] = "RESET_CONTENT"; + HttpStatus2[HttpStatus2["PARTIAL_CONTENT"] = 206] = "PARTIAL_CONTENT"; + HttpStatus2[HttpStatus2["MULTI_STATUS"] = 207] = "MULTI_STATUS"; + HttpStatus2[HttpStatus2["ALREADY_REPORTED"] = 208] = "ALREADY_REPORTED"; + HttpStatus2[HttpStatus2["CONTENT_DIFFERENT"] = 210] = "CONTENT_DIFFERENT"; + HttpStatus2[HttpStatus2["AMBIGUOUS"] = 300] = "AMBIGUOUS"; + HttpStatus2[HttpStatus2["MOVED_PERMANENTLY"] = 301] = "MOVED_PERMANENTLY"; + HttpStatus2[HttpStatus2["FOUND"] = 302] = "FOUND"; + HttpStatus2[HttpStatus2["SEE_OTHER"] = 303] = "SEE_OTHER"; + HttpStatus2[HttpStatus2["NOT_MODIFIED"] = 304] = "NOT_MODIFIED"; + HttpStatus2[HttpStatus2["TEMPORARY_REDIRECT"] = 307] = "TEMPORARY_REDIRECT"; + HttpStatus2[HttpStatus2["PERMANENT_REDIRECT"] = 308] = "PERMANENT_REDIRECT"; + HttpStatus2[HttpStatus2["BAD_REQUEST"] = 400] = "BAD_REQUEST"; + HttpStatus2[HttpStatus2["UNAUTHORIZED"] = 401] = "UNAUTHORIZED"; + HttpStatus2[HttpStatus2["PAYMENT_REQUIRED"] = 402] = "PAYMENT_REQUIRED"; + HttpStatus2[HttpStatus2["FORBIDDEN"] = 403] = "FORBIDDEN"; + HttpStatus2[HttpStatus2["NOT_FOUND"] = 404] = "NOT_FOUND"; + HttpStatus2[HttpStatus2["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED"; + HttpStatus2[HttpStatus2["NOT_ACCEPTABLE"] = 406] = "NOT_ACCEPTABLE"; + HttpStatus2[HttpStatus2["PROXY_AUTHENTICATION_REQUIRED"] = 407] = "PROXY_AUTHENTICATION_REQUIRED"; + HttpStatus2[HttpStatus2["REQUEST_TIMEOUT"] = 408] = "REQUEST_TIMEOUT"; + HttpStatus2[HttpStatus2["CONFLICT"] = 409] = "CONFLICT"; + HttpStatus2[HttpStatus2["GONE"] = 410] = "GONE"; + HttpStatus2[HttpStatus2["LENGTH_REQUIRED"] = 411] = "LENGTH_REQUIRED"; + HttpStatus2[HttpStatus2["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED"; + HttpStatus2[HttpStatus2["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE"; + HttpStatus2[HttpStatus2["URI_TOO_LONG"] = 414] = "URI_TOO_LONG"; + HttpStatus2[HttpStatus2["UNSUPPORTED_MEDIA_TYPE"] = 415] = "UNSUPPORTED_MEDIA_TYPE"; + HttpStatus2[HttpStatus2["REQUESTED_RANGE_NOT_SATISFIABLE"] = 416] = "REQUESTED_RANGE_NOT_SATISFIABLE"; + HttpStatus2[HttpStatus2["EXPECTATION_FAILED"] = 417] = "EXPECTATION_FAILED"; + HttpStatus2[HttpStatus2["I_AM_A_TEAPOT"] = 418] = "I_AM_A_TEAPOT"; + HttpStatus2[HttpStatus2["MISDIRECTED"] = 421] = "MISDIRECTED"; + HttpStatus2[HttpStatus2["UNPROCESSABLE_ENTITY"] = 422] = "UNPROCESSABLE_ENTITY"; + HttpStatus2[HttpStatus2["LOCKED"] = 423] = "LOCKED"; + HttpStatus2[HttpStatus2["FAILED_DEPENDENCY"] = 424] = "FAILED_DEPENDENCY"; + HttpStatus2[HttpStatus2["PRECONDITION_REQUIRED"] = 428] = "PRECONDITION_REQUIRED"; + HttpStatus2[HttpStatus2["TOO_MANY_REQUESTS"] = 429] = "TOO_MANY_REQUESTS"; + HttpStatus2[HttpStatus2["UNRECOVERABLE_ERROR"] = 456] = "UNRECOVERABLE_ERROR"; + HttpStatus2[HttpStatus2["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR"; + HttpStatus2[HttpStatus2["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED"; + HttpStatus2[HttpStatus2["BAD_GATEWAY"] = 502] = "BAD_GATEWAY"; + HttpStatus2[HttpStatus2["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE"; + HttpStatus2[HttpStatus2["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT"; + HttpStatus2[HttpStatus2["HTTP_VERSION_NOT_SUPPORTED"] = 505] = "HTTP_VERSION_NOT_SUPPORTED"; + HttpStatus2[HttpStatus2["INSUFFICIENT_STORAGE"] = 507] = "INSUFFICIENT_STORAGE"; + HttpStatus2[HttpStatus2["LOOP_DETECTED"] = 508] = "LOOP_DETECTED"; + })(HttpStatus || (HttpStatus = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/version-type.enum.js +var VersioningType; +var init_version_type_enum = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/version-type.enum.js"() { + (function(VersioningType2) { + VersioningType2[VersioningType2["URI"] = 0] = "URI"; + VersioningType2[VersioningType2["HEADER"] = 1] = "HEADER"; + VersioningType2[VersioningType2["MEDIA_TYPE"] = 2] = "MEDIA_TYPE"; + VersioningType2[VersioningType2["CUSTOM"] = 3] = "CUSTOM"; + })(VersioningType || (VersioningType = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/intrinsic.exception.js +var IntrinsicException; +var init_intrinsic_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/intrinsic.exception.js"() { + IntrinsicException = class extends Error { + static { + __name(this, "IntrinsicException"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/http.exception.js +var HttpException; +var init_http_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/http.exception.js"() { + init_shared_utils(); + init_intrinsic_exception(); + HttpException = class extends IntrinsicException { + static { + __name(this, "HttpException"); + } + response; + status; + options; + /** + * Exception cause. Indicates the specific original cause of the error. + * It is used when catching and re-throwing an error with a more-specific or useful error message in order to still have access to the original error. + */ + cause; + errorCode; + /** + * Instantiate a plain HTTP Exception. + * + * @example + * throw new HttpException('message', HttpStatus.BAD_REQUEST) + * throw new HttpException('custom message', HttpStatus.BAD_REQUEST, { + * cause: new Error('Cause Error'), + * }) + * + * + * @usageNotes + * The constructor arguments define the response and the HTTP response status code. + * - The `response` argument (required) defines the JSON response body. alternatively, it can also be + * an error object that is used to define an error [cause](https://nodejs.org/en/blog/release/v16.9.0/#error-cause). + * - The `status` argument (required) defines the HTTP Status Code. + * - The `options` argument (optional) defines additional error options. Currently, it supports the `cause` attribute, + * and can be used as an alternative way to specify the error cause: `const error = new HttpException('description', 400, { cause: new Error() });` + * + * By default, the JSON response body contains two properties: + * - `statusCode`: the Http Status Code. + * - `message`: a short description of the HTTP error by default; override this + * by supplying a string in the `response` parameter. + * + * To override the entire JSON response body, pass an object to the `createBody` + * method. Nest will serialize the object and return it as the JSON response body. + * + * The `status` argument is required, and should be a valid HTTP status code. + * Best practice is to use the `HttpStatus` enum imported from `nestjs/common`. + * + * @param response string, object describing the error condition or the error cause. + * @param status HTTP response status code. + * @param options An object used to add an error cause. + */ + constructor(response, status, options) { + super(); + this.response = response; + this.status = status; + this.options = options; + this.initMessage(); + this.initName(); + this.initCause(); + this.initErrorCode(); + } + /** + * Configures error chaining support + * + * @see https://nodejs.org/en/blog/release/v16.9.0/#error-cause + * @see https://github.com/microsoft/TypeScript/issues/45167 + */ + initCause() { + if (this.options?.cause) { + this.cause = this.options.cause; + return; + } + } + initErrorCode() { + if (this.options?.errorCode) { + this.errorCode = this.options.errorCode; + } + } + initMessage() { + if (isString(this.response)) { + this.message = this.response; + } else if (isObject(this.response) && isString(this.response.message)) { + this.message = this.response.message; + } else if (this.constructor) { + this.message = this.constructor.name.match(/[A-Z][a-z]+|[0-9]+/g)?.join(" ") ?? "Error"; + } + } + initName() { + this.name = this.constructor.name; + } + getResponse() { + return this.response; + } + getStatus() { + return this.status; + } + static createBody(arg0, arg1, statusCode, errorCode) { + if (!arg0) { + const body = { + message: arg1, + statusCode + }; + if (errorCode) { + body.errorCode = errorCode; + } + return body; + } + if (isString(arg0) || Array.isArray(arg0) || isNumber(arg0)) { + const body = { + message: arg0, + error: arg1, + statusCode + }; + if (errorCode) { + body.errorCode = errorCode; + } + return body; + } + return arg0; + } + static getDescriptionFrom(descriptionOrOptions) { + return isString(descriptionOrOptions) ? descriptionOrOptions : descriptionOrOptions?.description; + } + static getHttpExceptionOptionsFrom(descriptionOrOptions) { + return isString(descriptionOrOptions) ? {} : descriptionOrOptions; + } + /** + * Utility method used to extract the error description and httpExceptionOptions from the given argument. + * This is used by inheriting classes to correctly parse both options. + * @returns the error description and the httpExceptionOptions as an object. + */ + static extractDescriptionAndOptionsFrom(descriptionOrOptions) { + const description = isString(descriptionOrOptions) ? descriptionOrOptions : descriptionOrOptions?.description; + const httpExceptionOptions = isString(descriptionOrOptions) ? {} : descriptionOrOptions; + return { + description, + httpExceptionOptions + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/bad-request.exception.js +var BadRequestException; +var init_bad_request_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/bad-request.exception.js"() { + init_http_status_enum(); + init_http_exception(); + BadRequestException = class extends HttpException { + static { + __name(this, "BadRequestException"); + } + /** + * Instantiate a `BadRequestException` Exception. + * + * @example + * `throw new BadRequestException()` + * + * @usageNotes + * The HTTP response status code will be 400. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 400. + * - `message`: the string `'Bad Request'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Bad Request") { + const { description = "Bad Request", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.BAD_REQUEST, httpExceptionOptions?.errorCode), HttpStatus.BAD_REQUEST, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/internal-server-error.exception.js +var InternalServerErrorException; +var init_internal_server_error_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/internal-server-error.exception.js"() { + init_http_status_enum(); + init_http_exception(); + InternalServerErrorException = class extends HttpException { + static { + __name(this, "InternalServerErrorException"); + } + /** + * Instantiate an `InternalServerErrorException` Exception. + * + * @example + * `throw new InternalServerErrorException()` + * + * @usageNotes + * The HTTP response status code will be 500. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 500. + * - `message`: the string `'Internal Server Error'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Internal Server Error") { + const { description = "Internal Server Error", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.INTERNAL_SERVER_ERROR, httpExceptionOptions?.errorCode), HttpStatus.INTERNAL_SERVER_ERROR, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unauthorized.exception.js +var UnauthorizedException; +var init_unauthorized_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unauthorized.exception.js"() { + init_http_status_enum(); + init_http_exception(); + UnauthorizedException = class extends HttpException { + static { + __name(this, "UnauthorizedException"); + } + /** + * Instantiate an `UnauthorizedException` Exception. + * + * @example + * `throw new UnauthorizedException()` + * + * @usageNotes + * The HTTP response status code will be 401. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 401. + * - `message`: the string `'Unauthorized'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Unauthorized") { + const { description = "Unauthorized", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.UNAUTHORIZED, httpExceptionOptions?.errorCode), HttpStatus.UNAUTHORIZED, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/bind.decorator.js +function Bind(...decorators) { + return (target, key, descriptor) => { + decorators.forEach((fn, index) => fn(target, key, index)); + return descriptor; + }; +} +var init_bind_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/bind.decorator.js"() { + __name(Bind, "Bind"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/catch.decorator.js +function Catch(...exceptions) { + return (target) => { + Reflect.defineMetadata(CATCH_WATERMARK, true, target); + Reflect.defineMetadata(FILTER_CATCH_EXCEPTIONS, exceptions, target); + }; +} +var init_catch_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/catch.decorator.js"() { + init_constants(); + __name(Catch, "Catch"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/dependencies.decorator.js +function flatten(arr) { + const flat = [].concat(...arr); + return flat.some(Array.isArray) ? flatten(flat) : flat; +} +var Dependencies; +var init_dependencies_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/dependencies.decorator.js"() { + init_constants(); + __name(flatten, "flatten"); + Dependencies = /* @__PURE__ */ __name((...dependencies) => { + const flattenDeps = flatten(dependencies); + return (target) => { + Reflect.defineMetadata(PARAMTYPES_METADATA, flattenDeps, target); + }; + }, "Dependencies"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/extend-metadata.util.js +function extendArrayMetadata(key, metadata, target) { + const previousValue = Reflect.getMetadata(key, target) || []; + const value = [...previousValue, ...metadata]; + Reflect.defineMetadata(key, value, target); +} +var init_extend_metadata_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/extend-metadata.util.js"() { + __name(extendArrayMetadata, "extendArrayMetadata"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/validate-each.util.js +function validateEach(context, arr, predicate, decorator, item) { + if (!context || !context.name) { + return true; + } + const errors = arr.some((str) => !predicate(str)); + if (errors) { + throw new InvalidDecoratorItemException(decorator, item, context.name); + } + return true; +} +var InvalidDecoratorItemException; +var init_validate_each_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/validate-each.util.js"() { + InvalidDecoratorItemException = class extends Error { + static { + __name(this, "InvalidDecoratorItemException"); + } + msg; + constructor(decorator, item, context) { + const message = `Invalid ${item} passed to ${decorator}() decorator (${context}).`; + super(message); + this.msg = message; + } + what() { + return this.msg; + } + }; + __name(validateEach, "validateEach"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/exception-filters.decorator.js +function addExceptionFiltersMetadata(...filters) { + return (target, key, descriptor) => { + const isFilterValid = /* @__PURE__ */ __name((filter) => filter && (isFunction(filter) || isFunction(filter.catch)), "isFilterValid"); + if (descriptor) { + validateEach(target.constructor, filters, isFilterValid, "@UseFilters", "filter"); + extendArrayMetadata(EXCEPTION_FILTERS_METADATA, filters, descriptor.value); + return descriptor; + } + validateEach(target, filters, isFilterValid, "@UseFilters", "filter"); + extendArrayMetadata(EXCEPTION_FILTERS_METADATA, filters, target); + return target; + }; +} +var UseFilters; +var init_exception_filters_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/exception-filters.decorator.js"() { + init_constants(); + init_extend_metadata_util(); + init_shared_utils(); + init_validate_each_util(); + UseFilters = /* @__PURE__ */ __name((...filters) => addExceptionFiltersMetadata(...filters), "UseFilters"); + __name(addExceptionFiltersMetadata, "addExceptionFiltersMetadata"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/set-metadata.decorator.js +var SetMetadata; +var init_set_metadata_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/set-metadata.decorator.js"() { + SetMetadata = /* @__PURE__ */ __name((metadataKey, metadataValue) => { + const decoratorFactory = /* @__PURE__ */ __name((target, key, descriptor) => { + if (descriptor) { + Reflect.defineMetadata(metadataKey, metadataValue, descriptor.value); + return descriptor; + } + Reflect.defineMetadata(metadataKey, metadataValue, target); + return target; + }, "decoratorFactory"); + decoratorFactory.KEY = metadataKey; + return decoratorFactory; + }, "SetMetadata"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-guards.decorator.js +function UseGuards(...guards) { + return (target, key, descriptor) => { + const isGuardValid = /* @__PURE__ */ __name((guard) => guard && (isFunction(guard) || isFunction(guard.canActivate)), "isGuardValid"); + if (descriptor) { + validateEach(target.constructor, guards, isGuardValid, "@UseGuards", "guard"); + extendArrayMetadata(GUARDS_METADATA, guards, descriptor.value); + return descriptor; + } + validateEach(target, guards, isGuardValid, "@UseGuards", "guard"); + extendArrayMetadata(GUARDS_METADATA, guards, target); + return target; + }; +} +var init_use_guards_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-guards.decorator.js"() { + init_constants(); + init_extend_metadata_util(); + init_shared_utils(); + init_validate_each_util(); + __name(UseGuards, "UseGuards"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.js +function UseInterceptors(...interceptors) { + return (target, key, descriptor) => { + const isInterceptorValid = /* @__PURE__ */ __name((interceptor) => interceptor && (isFunction(interceptor) || isFunction(interceptor.intercept)), "isInterceptorValid"); + if (descriptor) { + validateEach(target.constructor, interceptors, isInterceptorValid, "@UseInterceptors", "interceptor"); + extendArrayMetadata(INTERCEPTORS_METADATA, interceptors, descriptor.value); + return descriptor; + } + validateEach(target, interceptors, isInterceptorValid, "@UseInterceptors", "interceptor"); + extendArrayMetadata(INTERCEPTORS_METADATA, interceptors, target); + return target; + }; +} +var init_use_interceptors_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.js"() { + init_constants(); + init_extend_metadata_util(); + init_shared_utils(); + init_validate_each_util(); + __name(UseInterceptors, "UseInterceptors"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-pipes.decorator.js +function UsePipes(...pipes) { + return (target, key, descriptor) => { + const isPipeValid = /* @__PURE__ */ __name((pipe) => pipe && (isFunction(pipe) || isFunction(pipe.transform)), "isPipeValid"); + if (descriptor) { + validateEach(target.constructor, pipes, isPipeValid, "@UsePipes", "pipe"); + extendArrayMetadata(PIPES_METADATA, pipes, descriptor.value); + return descriptor; + } + validateEach(target, pipes, isPipeValid, "@UsePipes", "pipe"); + extendArrayMetadata(PIPES_METADATA, pipes, target); + return target; + }; +} +var init_use_pipes_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-pipes.decorator.js"() { + init_constants(); + init_extend_metadata_util(); + init_shared_utils(); + init_validate_each_util(); + __name(UsePipes, "UsePipes"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/apply-decorators.js +function applyDecorators(...decorators) { + return (target, propertyKey, descriptor) => { + for (const decorator of decorators) { + if (target instanceof Function && !descriptor) { + decorator(target); + continue; + } + decorator(target, propertyKey, descriptor); + } + }; +} +var init_apply_decorators = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/apply-decorators.js"() { + __name(applyDecorators, "applyDecorators"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/version.decorator.js +function Version(version) { + if (Array.isArray(version)) { + version = Array.from(new Set(version)); + } + return (target, key, descriptor) => { + Reflect.defineMetadata(VERSION_METADATA, version, descriptor.value); + return descriptor; + }; +} +var init_version_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/version.decorator.js"() { + init_constants(); + __name(Version, "Version"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/index.js +var init_core = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/index.js"() { + init_bind_decorator(); + init_catch_decorator(); + init_controller_decorator(); + init_dependencies_decorator(); + init_exception_filters_decorator(); + init_inject_decorator(); + init_injectable_decorator(); + init_optional_decorator(); + init_set_metadata_decorator(); + init_use_guards_decorator(); + init_use_interceptors_decorator(); + init_use_pipes_decorator(); + init_apply_decorators(); + init_version_decorator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/cli-colors.util.js +var isColorAllowed, colorIfAllowed, clc, yellow; +var init_cli_colors_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/cli-colors.util.js"() { + isColorAllowed = /* @__PURE__ */ __name(() => !process.env.NO_COLOR, "isColorAllowed"); + colorIfAllowed = /* @__PURE__ */ __name((colorFn) => (text) => isColorAllowed() ? colorFn(text) : text, "colorIfAllowed"); + clc = { + bold: colorIfAllowed((text) => `\x1B[1m${text}\x1B[0m`), + green: colorIfAllowed((text) => `\x1B[32m${text}\x1B[39m`), + yellow: colorIfAllowed((text) => `\x1B[33m${text}\x1B[39m`), + red: colorIfAllowed((text) => `\x1B[31m${text}\x1B[39m`), + magentaBright: colorIfAllowed((text) => `\x1B[95m${text}\x1B[39m`), + cyanBright: colorIfAllowed((text) => `\x1B[96m${text}\x1B[39m`) + }; + yellow = colorIfAllowed((text) => `\x1B[38;5;3m${text}\x1B[39m`); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/log-levels.constant.js +var LOG_LEVELS; +var init_log_levels_constant = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/log-levels.constant.js"() { + LOG_LEVELS = [ + "verbose", + "debug", + "log", + "warn", + "error", + "fatal" + ]; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/is-log-level.util.js +function isLogLevel(maybeLogLevel) { + return LOG_LEVELS.includes(maybeLogLevel); +} +var init_is_log_level_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/is-log-level.util.js"() { + init_log_levels_constant(); + __name(isLogLevel, "isLogLevel"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/filter-log-levels.util.js +function filterLogLevels(parseableString = "") { + const sanitizedString = parseableString.replaceAll(" ", "").toLowerCase(); + if (sanitizedString[0] === ">") { + const orEqual = sanitizedString[1] === "="; + const logLevelIndex = LOG_LEVELS.indexOf(sanitizedString.substring(orEqual ? 2 : 1)); + if (logLevelIndex === -1) { + throw new Error(`parse error (unknown log level): ${sanitizedString}`); + } + return LOG_LEVELS.slice(orEqual ? logLevelIndex : logLevelIndex + 1); + } else if (sanitizedString.includes(",")) { + return sanitizedString.split(",").filter(isLogLevel); + } + return isLogLevel(sanitizedString) ? [sanitizedString] : LOG_LEVELS; +} +var init_filter_log_levels_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/filter-log-levels.util.js"() { + init_log_levels_constant(); + init_is_log_level_util(); + __name(filterLogLevels, "filterLogLevels"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/get-env-log-levels.util.js +function getEnvLogLevels() { + const value = process.env[LOG_LEVEL_ENV_VAR]?.replaceAll(" ", ""); + if (!value) { + return void 0; + } + const threshold = /^>=?(.*)$/.exec(value.toLowerCase()); + const isValid = threshold ? isLogLevel(threshold[1]) : value.toLowerCase().split(",").every(isLogLevel); + return isValid ? filterLogLevels(value) : false; +} +var LOG_LEVEL_ENV_VAR; +var init_get_env_log_levels_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/get-env-log-levels.util.js"() { + init_filter_log_levels_util(); + init_is_log_level_util(); + LOG_LEVEL_ENV_VAR = "NEST_LOG_LEVEL"; + __name(getEnvLogLevels, "getEnvLogLevels"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/is-log-level-enabled.util.js +function isLogLevelEnabled(targetLevel, logLevels) { + if (!logLevels || Array.isArray(logLevels) && logLevels?.length === 0) { + return false; + } + if (logLevels.includes(targetLevel)) { + return true; + } + let highestLogLevelValue = -Infinity; + for (const level of logLevels) { + const v = LOG_LEVEL_VALUES[level]; + if (v > highestLogLevelValue) + highestLogLevelValue = v; + } + const targetLevelValue = LOG_LEVEL_VALUES[targetLevel]; + return targetLevelValue >= highestLogLevelValue; +} +var LOG_LEVEL_VALUES; +var init_is_log_level_enabled_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/is-log-level-enabled.util.js"() { + LOG_LEVEL_VALUES = { + verbose: 0, + debug: 1, + log: 2, + warn: 3, + error: 4, + fatal: 5 + }; + __name(isLogLevelEnabled, "isLogLevelEnabled"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/redact.util.js +function createRedactor(paths, censor = DEFAULT_REDACT_CENSOR) { + const keys = /* @__PURE__ */ new Set(); + const dottedPaths = []; + for (const path of paths) { + const segments = path.split(".").map((segment) => segment.trim().toLowerCase()).filter((segment) => segment.length > 0); + if (segments.length === 1) { + keys.add(segments[0]); + } else if (segments.length > 1) { + dottedPaths.push(segments); + } + } + if (keys.size === 0 && dottedPaths.length === 0) { + return void 0; + } + const contextLength = Math.max(0, ...dottedPaths.map((segments) => segments.length - 1)); + return (value) => { + const path = []; + const ancestors = []; + const visited = /* @__PURE__ */ new Map(); + const isRedacted = /* @__PURE__ */ __name((key) => { + if (keys.has(key)) { + return true; + } + return dottedPaths.some((segments) => { + const last = segments.length - 1; + if (segments[last] !== key || last > path.length) { + return false; + } + for (let i = 1; i <= last; i++) { + if (segments[last - i] !== path[path.length - i]) { + return false; + } + } + return true; + }); + }, "isRedacted"); + const visitProperty = /* @__PURE__ */ __name((key, propertyValue) => { + const normalizedKey = key.toLowerCase(); + if (isRedacted(normalizedKey)) { + return censor; + } + if (typeof propertyValue !== "object" || propertyValue === null) { + return propertyValue; + } + path.push(normalizedKey); + const redacted = visit(propertyValue); + path.pop(); + return redacted; + }, "visitProperty"); + const visit = /* @__PURE__ */ __name((current) => { + if (typeof current !== "object" || current === null) { + return current; + } + if (ancestors.includes(current)) { + return CIRCULAR; + } + const context = contextLength > 0 ? JSON.stringify(path.slice(-contextLength)) : ""; + let results = visited.get(context); + if (!results) { + results = /* @__PURE__ */ new Map(); + visited.set(context, results); + } + if (results.has(current)) { + return results.get(current); + } + let redacted; + ancestors.push(current); + if (Array.isArray(current)) { + redacted = redactArray(current); + } else if (Object.getPrototypeOf(current) === Object.prototype) { + redacted = redactObject(current); + } else if (current instanceof Map) { + redacted = redactMap(current); + } else if (current instanceof Set) { + redacted = redactSet(current); + } else if (isOpaque(current)) { + redacted = current; + } else { + redacted = redactObject(current); + } + ancestors.pop(); + results.set(current, redacted); + return redacted; + }, "visit"); + const redactArray = /* @__PURE__ */ __name((array) => { + let copy; + for (let i = 0; i < array.length; i++) { + const redacted = visit(array[i]); + if (!Object.is(redacted, array[i])) { + copy ??= array.slice(); + copy[i] = redacted; + } + } + return copy ?? array; + }, "redactArray"); + const redactMap = /* @__PURE__ */ __name((map2) => { + let changed = false; + const entries = []; + for (const [key, entryValue] of map2) { + const redacted = typeof key === "string" ? visitProperty(key, entryValue) : visit(entryValue); + changed ||= !Object.is(redacted, entryValue); + entries.push([key, redacted]); + } + return changed ? new Map(entries) : map2; + }, "redactMap"); + const redactSet = /* @__PURE__ */ __name((set) => { + let changed = false; + const values = []; + for (const setValue of set) { + const redacted = visit(setValue); + changed ||= !Object.is(redacted, setValue); + values.push(redacted); + } + return changed ? new Set(values) : set; + }, "redactSet"); + const redactObject = /* @__PURE__ */ __name((object) => { + const source = object; + const keysToVisit = Object.keys(source); + if (object instanceof Error) { + for (const key of ["cause", "errors"]) { + if (Object.prototype.hasOwnProperty.call(object, key) && !keysToVisit.includes(key)) { + keysToVisit.push(key); + } + } + } + let changes; + for (const key of keysToVisit) { + const original = source[key]; + const redacted = visitProperty(key, original); + if (!Object.is(redacted, original)) { + changes ??= /* @__PURE__ */ new Map(); + changes.set(key, redacted); + } + } + if (!changes) { + return object; + } + if (Object.getPrototypeOf(object) === Object.prototype) { + const copy = { ...source }; + for (const [key, redacted] of changes) { + if (key === "__proto__") { + Object.defineProperty(copy, key, { + value: redacted, + enumerable: true, + writable: true, + configurable: true + }); + } else { + copy[key] = redacted; + } + } + return copy; + } + const descriptors = Object.getOwnPropertyDescriptors(object); + if (object instanceof Error && descriptors.stack?.get) { + descriptors.stack = { + value: object.stack, + enumerable: descriptors.stack.enumerable, + writable: true, + configurable: true + }; + } + for (const [key, redacted] of changes) { + descriptors[key] = { + value: redacted, + enumerable: descriptors[key].enumerable, + writable: true, + configurable: true + }; + } + return Object.create(Object.getPrototypeOf(object), descriptors); + }, "redactObject"); + try { + return visit(value); + } catch { + return censor; + } + }; +} +function isOpaque(value) { + return value instanceof Date || value instanceof RegExp || value instanceof Promise || value instanceof WeakMap || value instanceof WeakSet || value instanceof ArrayBuffer || ArrayBuffer.isView(value); +} +var DEFAULT_REDACT_CENSOR, CIRCULAR; +var init_redact_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/redact.util.js"() { + DEFAULT_REDACT_CENSOR = "[REDACTED]"; + CIRCULAR = "[Circular]"; + __name(createRedactor, "createRedactor"); + __name(isOpaque, "isOpaque"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/console-logger.service.js +import { inspect } from "util"; +var ConsoleLogger_1, DEFAULT_DEPTH, MAX_ERROR_DEPTH, MAX_JSON_LENGTH, DEFAULT_LOG_LEVELS, reportedInvalidEnvLogLevel, dateTimeFormatter, ConsoleLogger; +var init_console_logger_service = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/console-logger.service.js"() { + init_tslib_es6(); + init_core(); + init_cli_colors_util(); + init_shared_utils(); + init_get_env_log_levels_util(); + init_is_log_level_enabled_util(); + init_redact_util(); + DEFAULT_DEPTH = 5; + MAX_ERROR_DEPTH = 5; + MAX_JSON_LENGTH = 1e6; + DEFAULT_LOG_LEVELS = [ + "log", + "error", + "warn", + "debug", + "verbose", + "fatal" + ]; + dateTimeFormatter = new Intl.DateTimeFormat(void 0, { + year: "numeric", + hour: "numeric", + minute: "numeric", + second: "numeric", + day: "2-digit", + month: "2-digit" + }); + ConsoleLogger = class ConsoleLogger2 { + static { + __name(this, "ConsoleLogger"); + } + static { + ConsoleLogger_1 = this; + } + /** + * The options of the logger. + */ + options; + /** + * The context of the logger (can be set manually or automatically inferred). + */ + context; + /** + * The original context of the logger (set in the constructor). + */ + originalContext; + /** + * The options used for the "inspect" method. + */ + inspectOptions; + /** + * The last timestamp at which the log message was printed. + */ + static lastTimestampAt; + /** + * Masks the properties set in the `redact` option. + */ + redactor; + constructor(contextOrOptions, options) { + let [context, opts] = isString(contextOrOptions) ? [contextOrOptions, options] : options ? [void 0, options] : [contextOrOptions?.context, contextOrOptions]; + opts = opts ?? {}; + opts.colors ??= opts.colors ?? (opts.json ? false : isColorAllowed()); + opts.prefix ??= "Nest"; + this.options = opts; + this.inspectOptions = this.getInspectOptions(); + if (opts.redact) { + this.redactor = Array.isArray(opts.redact) ? createRedactor(opts.redact) : createRedactor(opts.redact.paths, opts.redact.censor); + } + if (context) { + this.context = context; + this.originalContext = context; + } + } + log(message, ...optionalParams) { + if (!this.isLevelEnabled("log")) { + return; + } + const { messages, context, params } = this.getContextAndMessagesToPrint([ + message, + ...optionalParams + ]); + this.printMessages(messages, context, "log", "stdout", void 0, params); + } + error(message, ...optionalParams) { + if (!this.isLevelEnabled("error")) { + return; + } + const { messages, context, stack, params } = this.getContextAndStackAndMessagesToPrint([message, ...optionalParams]); + this.printMessages(messages, context, "error", "stderr", stack, params); + this.printStackTrace(stack); + } + warn(message, ...optionalParams) { + if (!this.isLevelEnabled("warn")) { + return; + } + const { messages, context, params } = this.getContextAndMessagesToPrint([ + message, + ...optionalParams + ]); + this.printMessages(messages, context, "warn", "stdout", void 0, params); + } + debug(message, ...optionalParams) { + if (!this.isLevelEnabled("debug")) { + return; + } + const { messages, context, params } = this.getContextAndMessagesToPrint([ + message, + ...optionalParams + ]); + this.printMessages(messages, context, "debug", "stdout", void 0, params); + } + verbose(message, ...optionalParams) { + if (!this.isLevelEnabled("verbose")) { + return; + } + const { messages, context, params } = this.getContextAndMessagesToPrint([ + message, + ...optionalParams + ]); + this.printMessages(messages, context, "verbose", "stdout", void 0, params); + } + fatal(message, ...optionalParams) { + if (!this.isLevelEnabled("fatal")) { + return; + } + const { messages, context, stack, params } = this.getContextAndStackAndMessagesToPrint([message, ...optionalParams]); + this.printMessages(messages, context, "fatal", "stderr", stack, params); + this.printStackTrace(stack); + } + /** + * Set log levels + * @param levels log levels + */ + setLogLevels(levels) { + if (!this.options) { + this.options = {}; + } + this.options.logLevels = levels; + } + /** + * Set logger context + * @param context context + */ + setContext(context) { + this.context = context; + } + /** + * Resets the logger context to the value that was passed in the constructor. + */ + resetContext() { + this.context = this.originalContext; + } + isLevelEnabled(level) { + if (this.options && !this.options.logLevels) { + this.options.logLevels = this.getDefaultLogLevels(); + } + const logLevels = this.options?.logLevels; + return isLogLevelEnabled(level, logLevels); + } + /** + * Returns the levels used when none were passed to the constructor: the + * `NEST_LOG_LEVEL` environment variable if it is set, every level otherwise. + * Called on the first level check rather than in the constructor, so that + * the default logger also sees variables loaded after "@nestjs/common" was + * imported (for example, from a `.env` file). + */ + getDefaultLogLevels() { + const envLogLevels = getEnvLogLevels(); + if (envLogLevels !== false) { + return envLogLevels ?? DEFAULT_LOG_LEVELS; + } + const value = process.env[LOG_LEVEL_ENV_VAR]; + if (reportedInvalidEnvLogLevel !== value) { + reportedInvalidEnvLogLevel = value; + this.options.logLevels = DEFAULT_LOG_LEVELS; + this.warn(`Invalid ${LOG_LEVEL_ENV_VAR} value "${value}". Expected a log level ("warn"), a comma-separated list ("warn,error") or a threshold (">=warn"). Every log level is enabled instead.`, "ConsoleLogger"); + } + return DEFAULT_LOG_LEVELS; + } + getTimestamp() { + return dateTimeFormatter.format(Date.now()); + } + printMessages(messages, context = "", logLevel = "log", writeStreamType, errorStack, params) { + if (this.redactor) { + messages = messages.map((message) => this.redact(this.resolveMessage(message))); + params = params && this.redact(params); + } + if (this.options.json) { + const { messages: jsonMessages, error } = this.extractJsonError(messages.map((message) => this.resolveMessage(message))); + jsonMessages.forEach((message, index) => { + this.printAsJson(message, { + context, + logLevel, + writeStreamType, + errorStack, + params, + // The error belongs to the first record (the log message). + error: index === 0 ? error : void 0 + }); + }); + return; + } + messages.forEach((message) => { + const pidMessage = this.formatPid(process.pid); + const contextMessage = this.formatContext(context); + const timestampDiff = this.updateAndGetTimestampDiff(); + const formattedLogLevel = logLevel.toUpperCase().padStart(7, " "); + const formattedMessage = this.formatMessage(logLevel, message, pidMessage, formattedLogLevel, contextMessage, timestampDiff, params); + if (this.options.forceConsole) { + if (writeStreamType === "stderr") { + console.error(formattedMessage.trim()); + } else { + console.log(formattedMessage.trim()); + } + } else { + process[writeStreamType ?? "stdout"].write(formattedMessage); + } + }); + } + printAsJson(message, options) { + const logObject = this.getJsonLogObject(message, options); + const formattedMessage = !this.options.colors && this.inspectOptions.compact === true ? this.stringifyJsonLogObject(logObject) : inspect(logObject, this.inspectOptions); + if (this.options.forceConsole) { + if (options.writeStreamType === "stderr") { + console.error(formattedMessage); + } else { + console.log(formattedMessage); + } + } else { + process[options.writeStreamType ?? "stdout"].write(`${formattedMessage} +`); + } + } + getJsonLogObject(message, options) { + const logObject = { + level: options.logLevel, + pid: process.pid, + timestamp: Date.now(), + message + }; + if (options.context) { + logObject.context = options.context; + } + if (options.errorStack) { + logObject.stack = options.errorStack; + } + if (options.error) { + logObject.error = this.serializeError(options.error); + } + if (options.params) { + if (this.options.flattenParams) { + for (const [key, value] of Object.entries(options.params)) { + if (!(key in logObject)) { + logObject[key] = value; + } + } + } else { + logObject.params = options.params; + } + } + return logObject; + } + /** + * Pulls the first `Error` out of the messages so that it can be attached to + * the log record as a structured `error` field instead of being printed as + * a separate record. When the error is the message itself, the record's + * message becomes the error's message. + */ + extractJsonError(messages) { + const errorIndex = messages.findIndex((message) => message instanceof Error); + if (errorIndex === -1) { + return { messages }; + } + const error = messages[errorIndex]; + const remainingMessages = errorIndex === 0 ? [error.message, ...messages.slice(1)] : messages.filter((_, index) => index !== errorIndex); + return { messages: remainingMessages, error }; + } + /** + * Converts an error into a plain object: `name`, `message`, `stack`, own + * primitive properties (e.g. `code`), and, recursively, `cause` and the + * `errors` of an `AggregateError`, up to a fixed depth. + */ + serializeError(error, depth = 0, ancestors = /* @__PURE__ */ new Set()) { + const serialized = { + name: error.name, + message: error.message, + stack: error.stack + }; + for (const [key, value] of Object.entries(error)) { + if (key in serialized || key === "cause" || key === "errors") { + continue; + } + const isPrimitive = value === null || typeof value !== "object" && typeof value !== "function"; + if (isPrimitive) { + serialized[key] = value; + } + } + const serializeNested = /* @__PURE__ */ __name((value) => { + if (!(value instanceof Error)) { + return value; + } + if (ancestors.has(value)) { + return "[Circular]"; + } + if (depth + 1 > MAX_ERROR_DEPTH) { + return "[Truncated]"; + } + return this.serializeError(value, depth + 1, ancestors); + }, "serializeNested"); + ancestors.add(error); + if (error.cause !== void 0) { + serialized.cause = serializeNested(error.cause); + } + const errors = error.errors; + if (Array.isArray(errors)) { + serialized.errors = errors.map(serializeNested); + } + ancestors.delete(error); + return serialized; + } + /** + * Masks the properties set in the `redact` option. Returns the value itself + * when the option isn't set or nothing matched. + */ + redact(value) { + return this.redactor ? this.redactor(value) : value; + } + formatPid(pid) { + return `[${this.options.prefix}] ${pid} - `; + } + formatContext(context) { + if (!context) { + return ""; + } + context = `[${context}] `; + return this.options.colors ? yellow(context) : context; + } + formatMessage(logLevel, message, pidMessage, formattedLogLevel, contextMessage, timestampDiff, params) { + const output = this.stringifyMessage(message, logLevel); + pidMessage = this.colorize(pidMessage, logLevel); + formattedLogLevel = this.colorize(formattedLogLevel, logLevel); + const paramsOutput = params ? ` ${this.stringifyParams(params)}` : ""; + return `${pidMessage}${this.getTimestamp()} ${formattedLogLevel} ${contextMessage}${output}${paramsOutput}${timestampDiff} +`; + } + stringifyParams(params) { + return inspect(params, { + ...this.inspectOptions, + compact: true, + breakLength: Infinity + }); + } + /** + * Resolves a message passed as a function: a class resolves to its name, + * any other function is called (lazy message) and its result re-resolved. + */ + resolveMessage(message) { + if (isFunction(message)) { + const messageAsStr = Function.prototype.toString.call(message); + const isClass = messageAsStr.startsWith("class "); + if (isClass) { + return message.name; + } + return this.resolveMessage(message()); + } + return message; + } + stringifyMessage(message, logLevel) { + message = this.resolveMessage(message); + if (typeof message === "string") { + return this.colorize(message, logLevel); + } + const outputText = inspect(message, this.inspectOptions); + if (isPlainObject(message)) { + return `Object(${Object.keys(message).length}) ${outputText}`; + } + if (Array.isArray(message)) { + return `Array(${message.length}) ${outputText}`; + } + return outputText; + } + colorize(message, logLevel) { + if (!this.options.colors || this.options.json) { + return message; + } + const color = this.getColorByLogLevel(logLevel); + return color(message); + } + printStackTrace(stack) { + if (!stack || this.options.json) { + return; + } + if (this.options.forceConsole) { + console.error(stack); + } else { + process.stderr.write(`${stack} +`); + } + } + updateAndGetTimestampDiff() { + const includeTimestamp = ConsoleLogger_1.lastTimestampAt && this.options?.timestamp; + const result = includeTimestamp ? this.formatTimestampDiff(Date.now() - ConsoleLogger_1.lastTimestampAt) : ""; + ConsoleLogger_1.lastTimestampAt = Date.now(); + return result; + } + formatTimestampDiff(timestampDiff) { + const formattedDiff = ` +${timestampDiff}ms`; + return this.options.colors ? yellow(formattedDiff) : formattedDiff; + } + getInspectOptions() { + let breakLength = this.options.breakLength; + if (typeof breakLength === "undefined") { + breakLength = this.options.colors ? this.options.compact ? Infinity : void 0 : this.options.compact === false ? void 0 : Infinity; + } + const inspectOptions = { + depth: this.options.depth ?? DEFAULT_DEPTH, + sorted: this.options.sorted, + showHidden: this.options.showHidden, + compact: this.options.compact ?? (this.options.json ? true : false), + colors: this.options.colors, + breakLength + }; + if (typeof this.options.maxArrayLength !== "undefined") { + inspectOptions.maxArrayLength = this.options.maxArrayLength; + } + if (typeof this.options.maxStringLength !== "undefined") { + inspectOptions.maxStringLength = this.options.maxStringLength; + } + return inspectOptions; + } + /** + * Serializes a JSON log object without ever throwing: circular references + * are replaced with "[Circular]", whatever comes past `MAX_JSON_LENGTH` + * characters with "[Truncated]", and a value that cannot be serialized + * (e.g. a throwing `toJSON()`) makes the whole record fall back to `inspect`. + */ + stringifyJsonLogObject(logObject) { + const replacer = this.stringifyReplacer.bind(this); + const ancestors = []; + let length = 0; + try { + return JSON.stringify(logObject, function(key, value) { + value = replacer(key, value); + length += (Array.isArray(this) ? 0 : key.length) + (isString(value) || typeof value === "number" ? String(value).length : 1); + if (length > MAX_JSON_LENGTH) { + return isString(value) || typeof value === "object" && value !== null ? "[Truncated]" : value; + } + if (typeof value !== "object" || value === null) { + return value; + } + while (ancestors.length > 0 && ancestors[ancestors.length - 1] !== this) { + ancestors.pop(); + } + if (ancestors.includes(value)) { + return "[Circular]"; + } + ancestors.push(value); + return value; + }); + } catch { + return inspect(logObject, { + ...this.inspectOptions, + colors: false, + compact: true, + breakLength: Infinity + }); + } + } + stringifyReplacer(key, value) { + if (typeof value === "bigint") { + return value.toString(); + } + if (typeof value === "symbol") { + return value.toString(); + } + if (value instanceof Map || value instanceof Set || value instanceof Error) { + return `${inspect(value, this.inspectOptions)}`; + } + return value; + } + getContextAndMessagesToPrint(args) { + if (args?.length <= 1) { + return { messages: args, context: this.context }; + } + const lastElement = args[args.length - 1]; + const isContext = isString(lastElement); + let context; + let remainingArgs; + if (isContext) { + context = lastElement; + remainingArgs = args.slice(0, args.length - 1); + } else { + context = this.context; + remainingArgs = args; + } + if (this.options.structuredParams === false) { + return { messages: remainingArgs, context }; + } + const messages = [remainingArgs[0]]; + const paramObjects = []; + for (let i = 1; i < remainingArgs.length; i++) { + if (isPlainObject(remainingArgs[i])) { + paramObjects.push(remainingArgs[i]); + } else { + messages.push(remainingArgs[i]); + } + } + const params = paramObjects.length > 0 ? Object.assign({}, ...paramObjects) : void 0; + return { messages, context, params }; + } + getContextAndStackAndMessagesToPrint(args) { + if (args.length === 1) { + return { ...this.getContextAndMessagesToPrint(args) }; + } + if (args.length === 2) { + if (this.isStackFormat(args[1]) || isUndefined(args[1])) { + return { + messages: [args[0]], + stack: args[1], + context: this.context + }; + } + return { ...this.getContextAndMessagesToPrint(args) }; + } + const trailingArg = args[args.length - 1]; + if (this.isStackFormat(trailingArg)) { + const { messages: messages2, context: context2, params: params2 } = this.getContextAndMessagesToPrint(args.slice(0, -1)); + return { + messages: messages2, + context: context2, + stack: trailingArg, + params: params2 + }; + } + const { messages, context, params } = this.getContextAndMessagesToPrint(args); + if (messages?.length <= 1) { + return { messages, context, params }; + } + const lastElement = messages[messages.length - 1]; + const isStack = isString(lastElement); + if (!isStack && !isUndefined(lastElement)) { + return { messages, context, params }; + } + return { + stack: lastElement, + messages: messages.slice(0, messages.length - 1), + context, + params + }; + } + isStackFormat(stack) { + if (!isString(stack) && !isUndefined(stack)) { + return false; + } + return /\n[ \t]+at .+:\d+:\d+/.test(stack); + } + getColorByLogLevel(level) { + switch (level) { + case "debug": + return clc.magentaBright; + case "warn": + return clc.yellow; + case "error": + return clc.red; + case "verbose": + return clc.cyanBright; + case "fatal": + return clc.bold; + default: + return clc.green; + } + } + }; + ConsoleLogger = ConsoleLogger_1 = __decorate([ + Injectable(), + __param(0, Optional()), + __param(1, Optional()), + __metadata("design:paramtypes", [Object, Object]) + ], ConsoleLogger); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/index.js +var init_utils = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/index.js"() { + init_filter_log_levels_util(); + init_is_log_level_enabled_util(); + init_is_log_level_util(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/logger.service.js +var Logger_1, DEFAULT_LOGGER, dateTimeFormatter2, Logger; +var init_logger_service = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/logger.service.js"() { + init_tslib_es6(); + init_core(); + init_shared_utils(); + init_console_logger_service(); + init_utils(); + init_log_levels_constant(); + DEFAULT_LOGGER = new ConsoleLogger(); + dateTimeFormatter2 = new Intl.DateTimeFormat(void 0, { + year: "numeric", + hour: "numeric", + minute: "numeric", + second: "numeric", + day: "2-digit", + month: "2-digit" + }); + Logger = class Logger2 { + static { + __name(this, "Logger"); + } + static { + Logger_1 = this; + } + context; + options; + static logBuffer = new Array(); + static staticInstanceRef = DEFAULT_LOGGER; + static logLevels; + static isBufferAttached; + localInstanceRef; + /** + * The `Logger.logLevels` the local instance was last configured with. + */ + localInstanceLogLevels; + static WrapBuffer = /* @__PURE__ */ __name((target, propertyKey, descriptor) => { + const originalFn = descriptor.value; + descriptor.value = function(...args) { + if (Logger_1.isBufferAttached) { + Logger_1.logBuffer.push({ + methodRef: originalFn.bind(this), + arguments: args + }); + return; + } + return originalFn.call(this, ...args); + }; + }, "WrapBuffer"); + constructor(context, options = {}) { + this.context = context; + this.options = options; + } + get localInstance() { + if (Logger_1.staticInstanceRef === DEFAULT_LOGGER) { + return this.registerLocalInstanceRef(); + } else if (Logger_1.staticInstanceRef instanceof Logger_1) { + const prototype = Object.getPrototypeOf(Logger_1.staticInstanceRef); + if (prototype.constructor === Logger_1) { + return this.registerLocalInstanceRef(); + } + } + return Logger_1.staticInstanceRef; + } + error(message, ...optionalParams) { + optionalParams = this.context ? (optionalParams.length ? optionalParams : [void 0]).concat(this.context) : optionalParams; + this.localInstance?.error(message, ...optionalParams); + } + log(message, ...optionalParams) { + optionalParams = this.context ? optionalParams.concat(this.context) : optionalParams; + this.localInstance?.log(message, ...optionalParams); + } + warn(message, ...optionalParams) { + optionalParams = this.context ? optionalParams.concat(this.context) : optionalParams; + this.localInstance?.warn(message, ...optionalParams); + } + debug(message, ...optionalParams) { + optionalParams = this.context ? optionalParams.concat(this.context) : optionalParams; + this.localInstance?.debug?.(message, ...optionalParams); + } + verbose(message, ...optionalParams) { + optionalParams = this.context ? optionalParams.concat(this.context) : optionalParams; + this.localInstance?.verbose?.(message, ...optionalParams); + } + fatal(message, ...optionalParams) { + optionalParams = this.context ? optionalParams.concat(this.context) : optionalParams; + this.localInstance?.fatal?.(message, ...optionalParams); + } + static error(message, ...optionalParams) { + this.staticInstanceRef?.error(message, ...optionalParams); + } + static log(message, ...optionalParams) { + this.staticInstanceRef?.log(message, ...optionalParams); + } + static warn(message, ...optionalParams) { + this.staticInstanceRef?.warn(message, ...optionalParams); + } + static debug(message, ...optionalParams) { + this.staticInstanceRef?.debug?.(message, ...optionalParams); + } + static verbose(message, ...optionalParams) { + this.staticInstanceRef?.verbose?.(message, ...optionalParams); + } + static fatal(message, ...optionalParams) { + this.staticInstanceRef?.fatal?.(message, ...optionalParams); + } + /** + * Print buffered logs and detach buffer. + */ + static flush() { + this.isBufferAttached = false; + this.logBuffer.forEach((item) => item.methodRef(...item.arguments)); + this.logBuffer = []; + } + /** + * Attach buffer. + * Turns on initialization logs buffering. + */ + static attachBuffer() { + this.isBufferAttached = true; + } + /** + * Detach buffer. + * Turns off initialization logs buffering. + */ + static detachBuffer() { + this.isBufferAttached = false; + } + static getTimestamp() { + return dateTimeFormatter2.format(Date.now()); + } + static overrideLogger(logger3) { + if (Array.isArray(logger3)) { + Logger_1.logLevels = logger3; + return this.staticInstanceRef?.setLogLevels?.(logger3); + } + if (isObject(logger3)) { + if (logger3 instanceof Logger_1 && logger3.constructor !== Logger_1) { + const errorMessage = `Using the "extends Logger" instruction is not allowed in Nest v9. Please, use "extends ConsoleLogger" instead.`; + this.staticInstanceRef?.error(errorMessage); + throw new Error(errorMessage); + } + this.staticInstanceRef = logger3; + } else { + this.staticInstanceRef = void 0; + } + } + static isLevelEnabled(level) { + const instance = Logger_1.staticInstanceRef; + if (!instance) { + return false; + } + if (instance instanceof ConsoleLogger) { + return instance.isLevelEnabled(level); + } + const logLevels = Logger_1.logLevels; + return logLevels ? isLogLevelEnabled(level, logLevels) : true; + } + registerLocalInstanceRef() { + if (this.localInstanceRef) { + if (Logger_1.logLevels && this.localInstanceLogLevels !== Logger_1.logLevels) { + this.localInstanceRef.setLogLevels?.(Logger_1.logLevels); + this.localInstanceLogLevels = Logger_1.logLevels; + } + return this.localInstanceRef; + } + this.localInstanceLogLevels = Logger_1.logLevels; + this.localInstanceRef = new ConsoleLogger(this.context, { + timestamp: this.options?.timestamp, + logLevels: Logger_1.logLevels + }); + return this.localInstanceRef; + } + }; + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger.prototype, "error", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger.prototype, "log", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger.prototype, "warn", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger.prototype, "debug", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger.prototype, "verbose", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger.prototype, "fatal", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger, "error", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger, "log", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger, "warn", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger, "debug", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger, "verbose", null); + __decorate([ + Logger.WrapBuffer, + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", void 0) + ], Logger, "fatal", null); + Logger = Logger_1 = __decorate([ + Injectable(), + __param(0, Optional()), + __param(1, Optional()), + __metadata("design:paramtypes", [String, Object]) + ], Logger); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/shutdown-signal.enum.js +var ShutdownSignal; +var init_shutdown_signal_enum = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/shutdown-signal.enum.js"() { + (function(ShutdownSignal2) { + ShutdownSignal2["SIGHUP"] = "SIGHUP"; + ShutdownSignal2["SIGINT"] = "SIGINT"; + ShutdownSignal2["SIGQUIT"] = "SIGQUIT"; + ShutdownSignal2["SIGILL"] = "SIGILL"; + ShutdownSignal2["SIGTRAP"] = "SIGTRAP"; + ShutdownSignal2["SIGABRT"] = "SIGABRT"; + ShutdownSignal2["SIGBUS"] = "SIGBUS"; + ShutdownSignal2["SIGFPE"] = "SIGFPE"; + ShutdownSignal2["SIGSEGV"] = "SIGSEGV"; + ShutdownSignal2["SIGUSR2"] = "SIGUSR2"; + ShutdownSignal2["SIGTERM"] = "SIGTERM"; + })(ShutdownSignal || (ShutdownSignal = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/index.js +var init_enums = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/index.js"() { + init_request_method_enum(); + init_http_status_enum(); + init_shutdown_signal_enum(); + init_version_type_enum(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/index.js +var init_services = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/index.js"() { + init_console_logger_service(); + init_logger_service(); + init_filter_log_levels_util(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/file-stream/streamable-file.js +import { Readable } from "stream"; +import { types } from "util"; +var StreamableFile; +var init_streamable_file = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/file-stream/streamable-file.js"() { + init_enums(); + init_services(); + init_shared_utils(); + StreamableFile = class { + static { + __name(this, "StreamableFile"); + } + options; + stream; + logger = new Logger("StreamableFile"); + handleError = /* @__PURE__ */ __name((err, res) => { + if (res.destroyed) { + return; + } + if (res.headersSent) { + res.end(); + return; + } + this.logError(err); + res.statusCode = HttpStatus.BAD_REQUEST; + res.send("Bad Request"); + }, "handleError"); + logError = /* @__PURE__ */ __name((err) => { + this.logger.error(err); + }, "logError"); + constructor(bufferOrReadStream, options = {}) { + this.options = options; + if (types.isUint8Array(bufferOrReadStream)) { + this.stream = new Readable(); + this.stream.push(bufferOrReadStream); + this.stream.push(null); + this.options = { + ...this.options, + length: this.options.length ?? bufferOrReadStream.length + }; + } else if (bufferOrReadStream.pipe && isFunction(bufferOrReadStream.pipe)) { + this.stream = bufferOrReadStream; + if (isFunction(this.stream.on)) { + this.stream.on("error", () => { + }); + } + } + } + getStream() { + return this.stream; + } + getHeaders() { + const { type = "application/octet-stream", disposition = void 0, length = void 0 } = this.options; + return { + type, + disposition, + length + }; + } + get errorHandler() { + return this.handleError; + } + setErrorHandler(handler) { + this.handleError = handler; + return this; + } + get errorLogger() { + return this.logError; + } + setErrorLogger(handler) { + this.logError = handler; + return this; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/version-options.interface.js +var VERSION_NEUTRAL; +var init_version_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/version-options.interface.js"() { + VERSION_NEUTRAL = /* @__PURE__ */ Symbol("VERSION_NEUTRAL"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/random-string-generator.util.js +var randomStringGenerator; +var init_random_string_generator_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/random-string-generator.util.js"() { + init_dist(); + randomStringGenerator = /* @__PURE__ */ __name(() => uid(21), "randomStringGenerator"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/load-package.util.js +import { createRequire } from "module"; +async function loadPackage(packageName, context, loaderFn) { + const cached = packageCache.get(packageName); + if (cached) { + return cached; + } + try { + const pkg = loaderFn ? await loaderFn() : await import(packageName); + packageCache.set(packageName, pkg); + return pkg; + } catch (e) { + logger.error(MISSING_REQUIRED_DEPENDENCY(packageName, context)); + Logger.flush(); + process.exit(1); + } +} +function loadPackageSync(packageName, context, loaderFn) { + const cached = packageCache.get(packageName); + if (cached) { + return cached; + } + try { + const pkg = loaderFn ? loaderFn() : createRequire(import.meta.url)(packageName); + packageCache.set(packageName, pkg); + return pkg; + } catch (e) { + logger.error(MISSING_REQUIRED_DEPENDENCY(packageName, context)); + Logger.flush(); + process.exit(1); + } +} +function loadPackageCached(packageName, context) { + const cached = packageCache.get(packageName); + if (!cached) { + if (context) { + return loadPackageSync(packageName, context); + } + throw new Error(`Package "${packageName}" has not been loaded yet. Ensure loadPackage("${packageName}", ...) has been awaited before calling loadPackageCached.`); + } + return cached; +} +async function tryLoadPackage(packageName, loaderFn) { + const cached = packageCache.get(packageName); + if (cached) { + return cached; + } + try { + const pkg = loaderFn ? await loaderFn() : await import(packageName); + packageCache.set(packageName, pkg); + return pkg; + } catch { + return null; + } +} +var MISSING_REQUIRED_DEPENDENCY, logger, packageCache; +var init_load_package_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/load-package.util.js"() { + init_logger_service(); + MISSING_REQUIRED_DEPENDENCY = /* @__PURE__ */ __name((name, reason) => `The "${name}" package is missing. Please, make sure to install it to use ${reason}.`, "MISSING_REQUIRED_DEPENDENCY"); + logger = new Logger("PackageLoader"); + packageCache = /* @__PURE__ */ new Map(); + __name(loadPackage, "loadPackage"); + __name(loadPackageSync, "loadPackageSync"); + __name(loadPackageCached, "loadPackageCached"); + __name(tryLoadPackage, "tryLoadPackage"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/index.js +var init_modules = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/index.js"() { + init_global_decorator(); + init_module_decorator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/route-paramtypes.enum.js +var RouteParamtypes; +var init_route_paramtypes_enum = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/route-paramtypes.enum.js"() { + (function(RouteParamtypes2) { + RouteParamtypes2[RouteParamtypes2["REQUEST"] = 0] = "REQUEST"; + RouteParamtypes2[RouteParamtypes2["RESPONSE"] = 1] = "RESPONSE"; + RouteParamtypes2[RouteParamtypes2["NEXT"] = 2] = "NEXT"; + RouteParamtypes2[RouteParamtypes2["BODY"] = 3] = "BODY"; + RouteParamtypes2[RouteParamtypes2["QUERY"] = 4] = "QUERY"; + RouteParamtypes2[RouteParamtypes2["PARAM"] = 5] = "PARAM"; + RouteParamtypes2[RouteParamtypes2["HEADERS"] = 6] = "HEADERS"; + RouteParamtypes2[RouteParamtypes2["SESSION"] = 7] = "SESSION"; + RouteParamtypes2[RouteParamtypes2["FILE"] = 8] = "FILE"; + RouteParamtypes2[RouteParamtypes2["FILES"] = 9] = "FILES"; + RouteParamtypes2[RouteParamtypes2["HOST"] = 10] = "HOST"; + RouteParamtypes2[RouteParamtypes2["IP"] = 11] = "IP"; + RouteParamtypes2[RouteParamtypes2["RAW_BODY"] = 12] = "RAW_BODY"; + RouteParamtypes2[RouteParamtypes2["ACK"] = 13] = "ACK"; + RouteParamtypes2[RouteParamtypes2["COOKIES"] = 14] = "COOKIES"; + RouteParamtypes2[RouteParamtypes2["SIGNED_COOKIES"] = 15] = "SIGNED_COOKIES"; + })(RouteParamtypes || (RouteParamtypes = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/parameter-decorator-options.util.js +function isParameterDecoratorOptions(value) { + return !!value && typeof value === "object" && !isPipeLike(value) && ("schema" in value || "pipes" in value); +} +var isPipeLike; +var init_parameter_decorator_options_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/parameter-decorator-options.util.js"() { + init_shared_utils(); + isPipeLike = /* @__PURE__ */ __name((value) => isFunction(value?.transform) || isFunction(value) && value.prototype && isFunction(value.prototype.transform), "isPipeLike"); + __name(isParameterDecoratorOptions, "isParameterDecoratorOptions"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/route-params.decorator.js +function assignMetadata(args, paramtype, index, options, ...legacyPipes) { + const isOptionsObject = options !== null && typeof options === "object" && (isParameterDecoratorOptions(options) || "data" in options) && !("transform" in options) && legacyPipes.length === 0; + const normalizedOptions = isOptionsObject ? options : { data: options, pipes: legacyPipes }; + return { + ...args, + [`${paramtype}:${index}`]: { + index, + data: normalizedOptions.data, + pipes: normalizedOptions.pipes ?? [], + ...normalizedOptions.schema !== void 0 && { + schema: normalizedOptions.schema + } + } + }; +} +function createRouteParamDecorator(paramtype) { + return (data) => (target, key, index) => { + const args = Reflect.getMetadata(ROUTE_ARGS_METADATA, target.constructor, key) || {}; + Reflect.defineMetadata(ROUTE_ARGS_METADATA, assignMetadata(args, paramtype, index, { + data + }), target.constructor, key); + }; +} +function UploadedFile(fileKey, ...pipes) { + return createPipesRouteParamDecorator(RouteParamtypes.FILE)({ + data: fileKey, + pipes + }); +} +function UploadedFiles(...pipes) { + return createPipesRouteParamDecorator(RouteParamtypes.FILES)({ + pipes + }); +} +function Query(property, optionsOrPipe, ...pipes) { + const isPropertyOptions = isParameterDecoratorOptions(property); + if (isPropertyOptions) { + return createPipesRouteParamDecorator(RouteParamtypes.QUERY)({ + pipes: property.pipes, + schema: property.schema + }); + } + const isOptions = isParameterDecoratorOptions(optionsOrPipe); + const actualPipes = isOptions ? [...optionsOrPipe.pipes ?? [], ...pipes] : [optionsOrPipe, ...pipes].filter(Boolean); + return createPipesRouteParamDecorator(RouteParamtypes.QUERY)({ + data: property, + pipes: actualPipes, + schema: isOptions ? optionsOrPipe.schema : void 0 + }); +} +function Body(property, optionsOrPipe, ...pipes) { + const isPropertyOptions = isParameterDecoratorOptions(property); + if (isPropertyOptions) { + return createPipesRouteParamDecorator(RouteParamtypes.BODY)({ + pipes: property.pipes, + schema: property.schema + }); + } + const isOptions = isParameterDecoratorOptions(optionsOrPipe); + const actualPipes = isOptions ? [...optionsOrPipe.pipes ?? [], ...pipes] : [optionsOrPipe, ...pipes].filter(Boolean); + return createPipesRouteParamDecorator(RouteParamtypes.BODY)({ + data: property, + pipes: actualPipes, + schema: isOptions ? optionsOrPipe.schema : void 0 + }); +} +function RawBody(optionsOrPipe, ...pipes) { + const isOptions = isParameterDecoratorOptions(optionsOrPipe); + const actualPipes = isOptions ? [...optionsOrPipe.pipes ?? [], ...pipes] : [optionsOrPipe, ...pipes].filter(Boolean); + return createPipesRouteParamDecorator(RouteParamtypes.RAW_BODY)({ + pipes: actualPipes, + schema: isOptions ? optionsOrPipe.schema : void 0 + }); +} +function Param(property, optionsOrPipe, ...pipes) { + const isPropertyOptions = isParameterDecoratorOptions(property); + if (isPropertyOptions) { + return createPipesRouteParamDecorator(RouteParamtypes.PARAM)({ + pipes: property.pipes, + schema: property.schema + }); + } + const isOptions = isParameterDecoratorOptions(optionsOrPipe); + const actualPipes = isOptions ? [...optionsOrPipe.pipes ?? [], ...pipes] : [optionsOrPipe, ...pipes].filter(Boolean); + return createPipesRouteParamDecorator(RouteParamtypes.PARAM)({ + data: property, + pipes: actualPipes, + schema: isOptions ? optionsOrPipe.schema : void 0 + }); +} +function HostParam(property) { + return createRouteParamDecorator(RouteParamtypes.HOST)(property); +} +function Cookies(property, ...pipes) { + return createPipesRouteParamDecorator(RouteParamtypes.COOKIES)({ + data: property, + pipes + }); +} +function SignedCookies(property, ...pipes) { + return createPipesRouteParamDecorator(RouteParamtypes.SIGNED_COOKIES)({ + data: property, + pipes + }); +} +var createPipesRouteParamDecorator, Request, Response, Next, Ip, Session, Headers, Req, Res; +var init_route_params_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/route-params.decorator.js"() { + init_constants(); + init_route_paramtypes_enum(); + init_shared_utils(); + init_parameter_decorator_options_util(); + __name(assignMetadata, "assignMetadata"); + __name(createRouteParamDecorator, "createRouteParamDecorator"); + createPipesRouteParamDecorator = /* @__PURE__ */ __name((paramtype) => ({ data, pipes, schema }) => (target, key, index) => { + const args = Reflect.getMetadata(ROUTE_ARGS_METADATA, target.constructor, key) || {}; + const hasParamData = isNil(data) || isString(data); + const paramData = hasParamData ? data : void 0; + const paramPipes = hasParamData ? pipes ?? [] : [data, ...pipes ?? []]; + Reflect.defineMetadata(ROUTE_ARGS_METADATA, assignMetadata(args, paramtype, index, { + data: paramData, + pipes: paramPipes, + schema + }), target.constructor, key); + }, "createPipesRouteParamDecorator"); + Request = createRouteParamDecorator(RouteParamtypes.REQUEST); + Response = /* @__PURE__ */ __name((options) => (target, key, index) => { + if (options?.passthrough) { + Reflect.defineMetadata(RESPONSE_PASSTHROUGH_METADATA, options?.passthrough, target.constructor, key); + } + return createRouteParamDecorator(RouteParamtypes.RESPONSE)()(target, key, index); + }, "Response"); + Next = createRouteParamDecorator(RouteParamtypes.NEXT); + Ip = createRouteParamDecorator(RouteParamtypes.IP); + Session = createRouteParamDecorator(RouteParamtypes.SESSION); + __name(UploadedFile, "UploadedFile"); + __name(UploadedFiles, "UploadedFiles"); + Headers = createRouteParamDecorator(RouteParamtypes.HEADERS); + __name(Query, "Query"); + __name(Body, "Body"); + __name(RawBody, "RawBody"); + __name(Param, "Param"); + __name(HostParam, "HostParam"); + __name(Cookies, "Cookies"); + __name(SignedCookies, "SignedCookies"); + Req = Request; + Res = Response; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/http-code.decorator.js +function HttpCode(statusCode) { + return (target, key, descriptor) => { + Reflect.defineMetadata(HTTP_CODE_METADATA, statusCode, descriptor.value); + return descriptor; + }; +} +var init_http_code_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/http-code.decorator.js"() { + init_constants(); + __name(HttpCode, "HttpCode"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/assign-custom-metadata.util.js +function assignCustomParameterMetadata(args, paramtype, index, factory, data, schema, ...pipes) { + return { + ...args, + [`${paramtype}${CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: { + index, + factory, + data, + pipes, + ...schema !== void 0 && { schema } + } + }; +} +var init_assign_custom_metadata_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/assign-custom-metadata.util.js"() { + init_constants(); + __name(assignCustomParameterMetadata, "assignCustomParameterMetadata"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.js +function createParamDecorator(factory, enhancers = []) { + const paramtype = uid(21); + return (data, ...pipes) => (target, key, index) => { + const args = Reflect.getMetadata(ROUTE_ARGS_METADATA, target.constructor, key) || {}; + const isPipe = /* @__PURE__ */ __name((pipe) => pipe && (isFunction(pipe) && pipe.prototype && isFunction(pipe.prototype.transform) || isFunction(pipe.transform)), "isPipe"); + const hasParamData = isNil(data) || !isPipe(data); + const paramData = hasParamData ? data : void 0; + const paramPipes = hasParamData ? pipes : [data, ...pipes]; + const isDataOptions = hasParamData && !isNil(data) && isParameterDecoratorOptions(data) && Object.keys(data).every((key2) => key2 === "schema" || key2 === "pipes") && (data.schema === void 0 || isFunction(data.schema?.["~standard"]?.validate)) && (data.pipes === void 0 || Array.isArray(data.pipes) && // Falsy entries are allowed, as the pipes context filters them out + data.pipes.every((pipe) => isNil(pipe) || isPipe(pipe))); + const finalData = isDataOptions ? void 0 : paramData; + let finalSchema; + const finalPipes = []; + for (const arg of isDataOptions ? [data, ...paramPipes] : paramPipes) { + if (isParameterDecoratorOptions(arg)) { + finalSchema ??= arg.schema; + finalPipes.push(...arg.pipes ?? []); + } else { + finalPipes.push(arg); + } + } + Reflect.defineMetadata(ROUTE_ARGS_METADATA, assignCustomParameterMetadata(args, paramtype, index, factory, finalData, finalSchema, ...finalPipes), target.constructor, key); + enhancers.forEach((fn) => fn(target, key, index)); + }; +} +var init_create_route_param_metadata_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.js"() { + init_dist(); + init_constants(); + init_assign_custom_metadata_util(); + init_shared_utils(); + init_parameter_decorator_options_util(); + __name(createParamDecorator, "createParamDecorator"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/render.decorator.js +function Render(template) { + return (target, key, descriptor) => { + Reflect.defineMetadata(RENDER_METADATA, template, descriptor.value); + return descriptor; + }; +} +var init_render_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/render.decorator.js"() { + init_constants(); + __name(Render, "Render"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/header.decorator.js +function Header(name, value) { + return (target, key, descriptor) => { + extendArrayMetadata(HEADERS_METADATA, [{ name, value }], descriptor.value); + return descriptor; + }; +} +var init_header_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/header.decorator.js"() { + init_constants(); + init_extend_metadata_util(); + __name(Header, "Header"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/redirect.decorator.js +function Redirect(url = "", statusCode) { + return (target, key, descriptor) => { + Reflect.defineMetadata(REDIRECT_METADATA, { statusCode, url }, descriptor.value); + return descriptor; + }; +} +var init_redirect_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/redirect.decorator.js"() { + init_constants(); + __name(Redirect, "Redirect"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/sse.decorator.js +function Sse(path, options = {}) { + return (target, key, descriptor) => { + path = path && path.length ? path : "/"; + Reflect.defineMetadata(PATH_METADATA, path, descriptor.value); + Reflect.defineMetadata(METHOD_METADATA, options[METHOD_METADATA] ?? RequestMethod.GET, descriptor.value); + Reflect.defineMetadata(SSE_METADATA, true, descriptor.value); + Reflect.defineMetadata(SSE_OPTIONS_METADATA, { maxPendingDataLength: options.maxPendingDataLength }, descriptor.value); + return descriptor; + }; +} +var init_sse_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/sse.decorator.js"() { + init_constants(); + init_request_method_enum(); + __name(Sse, "Sse"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/sse-signal.decorator.js +var SSE_ABORT_CONTROLLER, SseSignal; +var init_sse_signal_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/sse-signal.decorator.js"() { + init_create_route_param_metadata_decorator(); + SSE_ABORT_CONTROLLER = /* @__PURE__ */ Symbol("SSE_ABORT_CONTROLLER"); + SseSignal = createParamDecorator((_data, ctx) => { + const request = ctx.switchToHttp().getRequest(); + const controller = request?.[SSE_ABORT_CONTROLLER]; + return controller?.signal; + }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/index.js +var init_http = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/index.js"() { + init_request_mapping_decorator(); + init_route_params_decorator(); + init_http_code_decorator(); + init_create_route_param_metadata_decorator(); + init_render_decorator(); + init_header_decorator(); + init_redirect_decorator(); + init_sse_decorator(); + init_sse_signal_decorator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/index.js +var init_decorators = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/index.js"() { + init_core(); + init_modules(); + init_http(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/bad-gateway.exception.js +var BadGatewayException; +var init_bad_gateway_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/bad-gateway.exception.js"() { + init_http_status_enum(); + init_http_exception(); + BadGatewayException = class extends HttpException { + static { + __name(this, "BadGatewayException"); + } + /** + * Instantiate a `BadGatewayException` Exception. + * + * @example + * `throw new BadGatewayException()` + * + * @usageNotes + * The HTTP response status code will be 502. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 502. + * - `message`: the string `'Bad Gateway'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Bad Gateway") { + const { description = "Bad Gateway", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.BAD_GATEWAY, httpExceptionOptions?.errorCode), HttpStatus.BAD_GATEWAY, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/conflict.exception.js +var ConflictException; +var init_conflict_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/conflict.exception.js"() { + init_http_status_enum(); + init_http_exception(); + ConflictException = class extends HttpException { + static { + __name(this, "ConflictException"); + } + /** + * Instantiate a `ConflictException` Exception. + * + * @example + * `throw new ConflictException()` + * + * @usageNotes + * The HTTP response status code will be 409. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 409. + * - `message`: the string `'Conflict'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Conflict") { + const { description = "Conflict", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.CONFLICT, httpExceptionOptions?.errorCode), HttpStatus.CONFLICT, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/forbidden.exception.js +var ForbiddenException; +var init_forbidden_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/forbidden.exception.js"() { + init_http_status_enum(); + init_http_exception(); + ForbiddenException = class extends HttpException { + static { + __name(this, "ForbiddenException"); + } + /** + * Instantiate a `ForbiddenException` Exception. + * + * @example + * `throw new ForbiddenException()` + * + * @usageNotes + * The HTTP response status code will be 403. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 403. + * - `message`: the string `'Forbidden'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Forbidden") { + const { description = "Forbidden", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.FORBIDDEN, httpExceptionOptions?.errorCode), HttpStatus.FORBIDDEN, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/gateway-timeout.exception.js +var GatewayTimeoutException; +var init_gateway_timeout_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/gateway-timeout.exception.js"() { + init_http_status_enum(); + init_http_exception(); + GatewayTimeoutException = class extends HttpException { + static { + __name(this, "GatewayTimeoutException"); + } + /** + * Instantiate a `GatewayTimeoutException` Exception. + * + * @example + * `throw new GatewayTimeoutException()` + * + * @usageNotes + * The HTTP response status code will be 504. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 504. + * - `message`: the string `'Gateway Timeout'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Gateway Timeout") { + const { description = "Gateway Timeout", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.GATEWAY_TIMEOUT, httpExceptionOptions?.errorCode), HttpStatus.GATEWAY_TIMEOUT, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/gone.exception.js +var GoneException; +var init_gone_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/gone.exception.js"() { + init_http_status_enum(); + init_http_exception(); + GoneException = class extends HttpException { + static { + __name(this, "GoneException"); + } + /** + * Instantiate a `GoneException` Exception. + * + * @example + * `throw new GoneException()` + * + * @usageNotes + * The HTTP response status code will be 410. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 410. + * - `message`: the string `'Gone'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Gone") { + const { description = "Gone", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.GONE, httpExceptionOptions?.errorCode), HttpStatus.GONE, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.js +var HttpVersionNotSupportedException; +var init_http_version_not_supported_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.js"() { + init_http_status_enum(); + init_http_exception(); + HttpVersionNotSupportedException = class extends HttpException { + static { + __name(this, "HttpVersionNotSupportedException"); + } + /** + * Instantiate a `HttpVersionNotSupportedException` Exception. + * + * @example + * `throw new HttpVersionNotSupportedException()` + * + * @usageNotes + * The HTTP response status code will be 505. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 505. + * - `message`: the string `'HTTP Version Not Supported'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "HTTP Version Not Supported") { + const { description = "HTTP Version Not Supported", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.HTTP_VERSION_NOT_SUPPORTED, httpExceptionOptions?.errorCode), HttpStatus.HTTP_VERSION_NOT_SUPPORTED, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/im-a-teapot.exception.js +var ImATeapotException; +var init_im_a_teapot_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/im-a-teapot.exception.js"() { + init_http_status_enum(); + init_http_exception(); + ImATeapotException = class extends HttpException { + static { + __name(this, "ImATeapotException"); + } + /** + * Instantiate an `ImATeapotException` Exception. + * + * @example + * `throw new ImATeapotException()` + * + * @usageNotes + * The HTTP response status code will be 418. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 418. + * - `message`: the string `"I'm a Teapot"` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = `I'm a teapot`) { + const { description = `I'm a teapot`, httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.I_AM_A_TEAPOT, httpExceptionOptions?.errorCode), HttpStatus.I_AM_A_TEAPOT, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/method-not-allowed.exception.js +var MethodNotAllowedException; +var init_method_not_allowed_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/method-not-allowed.exception.js"() { + init_http_status_enum(); + init_http_exception(); + MethodNotAllowedException = class extends HttpException { + static { + __name(this, "MethodNotAllowedException"); + } + /** + * Instantiate a `MethodNotAllowedException` Exception. + * + * @example + * `throw new MethodNotAllowedException()` + * + * @usageNotes + * The HTTP response status code will be 405. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 405. + * - `message`: the string `'Method Not Allowed'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Method Not Allowed") { + const { description = "Method Not Allowed", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.METHOD_NOT_ALLOWED, httpExceptionOptions?.errorCode), HttpStatus.METHOD_NOT_ALLOWED, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/misdirected.exception.js +var MisdirectedException; +var init_misdirected_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/misdirected.exception.js"() { + init_http_status_enum(); + init_http_exception(); + MisdirectedException = class extends HttpException { + static { + __name(this, "MisdirectedException"); + } + /** + * Instantiate a `MisdirectedException` Exception. + * + * @example + * `throw new MisdirectedException()` + * + * @usageNotes + * The HTTP response status code will be 421. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 421. + * - `message`: the string `'Misdirected'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Misdirected") { + const { description = "Misdirected", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.MISDIRECTED, httpExceptionOptions?.errorCode), HttpStatus.MISDIRECTED, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-acceptable.exception.js +var NotAcceptableException; +var init_not_acceptable_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-acceptable.exception.js"() { + init_http_status_enum(); + init_http_exception(); + NotAcceptableException = class extends HttpException { + static { + __name(this, "NotAcceptableException"); + } + /** + * Instantiate a `NotAcceptableException` Exception. + * + * @example + * `throw new NotAcceptableException()` + * + * @usageNotes + * The HTTP response status code will be 406. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 406. + * - `message`: the string `'Not Acceptable'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Not Acceptable") { + const { description = "Not Acceptable", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.NOT_ACCEPTABLE, httpExceptionOptions?.errorCode), HttpStatus.NOT_ACCEPTABLE, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-found.exception.js +var NotFoundException; +var init_not_found_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-found.exception.js"() { + init_http_status_enum(); + init_http_exception(); + NotFoundException = class extends HttpException { + static { + __name(this, "NotFoundException"); + } + /** + * Instantiate a `NotFoundException` Exception. + * + * @example + * `throw new NotFoundException()` + * + * @usageNotes + * The HTTP response status code will be 404. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 404. + * - `message`: the string `'Not Found'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Not Found") { + const { description = "Not Found", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.NOT_FOUND, httpExceptionOptions?.errorCode), HttpStatus.NOT_FOUND, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-implemented.exception.js +var NotImplementedException; +var init_not_implemented_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-implemented.exception.js"() { + init_http_status_enum(); + init_http_exception(); + NotImplementedException = class extends HttpException { + static { + __name(this, "NotImplementedException"); + } + /** + * Instantiate a `NotImplementedException` Exception. + * + * @example + * `throw new NotImplementedException()` + * + * @usageNotes + * The HTTP response status code will be 501. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 501. + * - `message`: the string `'Not Implemented'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + * @param error a short description of the HTTP error. + */ + constructor(objectOrError, descriptionOrOptions = "Not Implemented") { + const { description = "Not Implemented", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.NOT_IMPLEMENTED, httpExceptionOptions?.errorCode), HttpStatus.NOT_IMPLEMENTED, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/payload-too-large.exception.js +var PayloadTooLargeException; +var init_payload_too_large_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/payload-too-large.exception.js"() { + init_http_status_enum(); + init_http_exception(); + PayloadTooLargeException = class extends HttpException { + static { + __name(this, "PayloadTooLargeException"); + } + /** + * Instantiate a `PayloadTooLargeException` Exception. + * + * @example + * `throw new PayloadTooLargeException()` + * + * @usageNotes + * The HTTP response status code will be 413. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 413. + * - `message`: the string `'Payload Too Large'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Payload Too Large") { + const { description = "Payload Too Large", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.PAYLOAD_TOO_LARGE, httpExceptionOptions?.errorCode), HttpStatus.PAYLOAD_TOO_LARGE, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/precondition-failed.exception.js +var PreconditionFailedException; +var init_precondition_failed_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/precondition-failed.exception.js"() { + init_http_status_enum(); + init_http_exception(); + PreconditionFailedException = class extends HttpException { + static { + __name(this, "PreconditionFailedException"); + } + /** + * Instantiate a `PreconditionFailedException` Exception. + * + * @example + * `throw new PreconditionFailedException()` + * + * @usageNotes + * The HTTP response status code will be 412. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 412. + * - `message`: the string `'Precondition Failed'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Precondition Failed") { + const { description = "Precondition Failed", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.PRECONDITION_FAILED, httpExceptionOptions?.errorCode), HttpStatus.PRECONDITION_FAILED, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/request-timeout.exception.js +var RequestTimeoutException; +var init_request_timeout_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/request-timeout.exception.js"() { + init_http_status_enum(); + init_http_exception(); + RequestTimeoutException = class extends HttpException { + static { + __name(this, "RequestTimeoutException"); + } + /** + * Instantiate a `RequestTimeoutException` Exception. + * + * @example + * `throw new RequestTimeoutException()` + * + * @usageNotes + * The HTTP response status code will be 408. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 408. + * - `message`: the string `'Request Timeout'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Request Timeout") { + const { description = "Request Timeout", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.REQUEST_TIMEOUT, httpExceptionOptions?.errorCode), HttpStatus.REQUEST_TIMEOUT, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/service-unavailable.exception.js +var ServiceUnavailableException; +var init_service_unavailable_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/service-unavailable.exception.js"() { + init_http_status_enum(); + init_http_exception(); + ServiceUnavailableException = class extends HttpException { + static { + __name(this, "ServiceUnavailableException"); + } + /** + * Instantiate a `ServiceUnavailableException` Exception. + * + * @example + * `throw new ServiceUnavailableException()` + * + * @usageNotes + * The HTTP response status code will be 503. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 503. + * - `message`: the string `'Service Unavailable'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Service Unavailable") { + const { description = "Service Unavailable", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.SERVICE_UNAVAILABLE, httpExceptionOptions?.errorCode), HttpStatus.SERVICE_UNAVAILABLE, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.js +var UnprocessableEntityException; +var init_unprocessable_entity_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.js"() { + init_http_status_enum(); + init_http_exception(); + UnprocessableEntityException = class extends HttpException { + static { + __name(this, "UnprocessableEntityException"); + } + /** + * Instantiate an `UnprocessableEntityException` Exception. + * + * @example + * `throw new UnprocessableEntityException()` + * + * @usageNotes + * The HTTP response status code will be 422. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 422. + * - `message`: the string `'Unprocessable Entity'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Unprocessable Entity") { + const { description = "Unprocessable Entity", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.UNPROCESSABLE_ENTITY, httpExceptionOptions?.errorCode), HttpStatus.UNPROCESSABLE_ENTITY, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.js +var UnsupportedMediaTypeException; +var init_unsupported_media_type_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.js"() { + init_http_status_enum(); + init_http_exception(); + UnsupportedMediaTypeException = class extends HttpException { + static { + __name(this, "UnsupportedMediaTypeException"); + } + /** + * Instantiate an `UnsupportedMediaTypeException` Exception. + * + * @example + * `throw new UnsupportedMediaTypeException()` + * + * @usageNotes + * The HTTP response status code will be 415. + * - The `objectOrError` argument defines the JSON response body or the message string. + * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause. + * + * By default, the JSON response body contains two properties: + * - `statusCode`: this will be the value 415. + * - `message`: the string `'Unsupported Media Type'` by default; override this by supplying + * a string in the `objectOrError` parameter. + * + * If the parameter `objectOrError` is a string, the response body will contain an + * additional property, `error`, with a short description of the HTTP error. To override the + * entire JSON response body, pass an object instead. Nest will serialize the object + * and return it as the JSON response body. + * + * @param objectOrError string or object describing the error condition. + * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause + */ + constructor(objectOrError, descriptionOrOptions = "Unsupported Media Type") { + const { description = "Unsupported Media Type", httpExceptionOptions } = HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions); + super(HttpException.createBody(objectOrError, description, HttpStatus.UNSUPPORTED_MEDIA_TYPE, httpExceptionOptions?.errorCode), HttpStatus.UNSUPPORTED_MEDIA_TYPE, httpExceptionOptions); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/index.js +var init_exceptions = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/index.js"() { + init_bad_gateway_exception(); + init_bad_request_exception(); + init_conflict_exception(); + init_forbidden_exception(); + init_gateway_timeout_exception(); + init_gone_exception(); + init_http_version_not_supported_exception(); + init_http_exception(); + init_im_a_teapot_exception(); + init_internal_server_error_exception(); + init_intrinsic_exception(); + init_method_not_allowed_exception(); + init_misdirected_exception(); + init_not_acceptable_exception(); + init_not_found_exception(); + init_not_implemented_exception(); + init_payload_too_large_exception(); + init_precondition_failed_exception(); + init_request_timeout_exception(); + init_service_unavailable_exception(); + init_unauthorized_exception(); + init_unprocessable_entity_exception(); + init_unsupported_media_type_exception(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/file-stream/index.js +var init_file_stream = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/file-stream/index.js"() { + init_streamable_file(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/abstract.interface.js +var init_abstract_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/abstract.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.js +var init_controller_metadata_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/controllers/controller.interface.js +var init_controller_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/controllers/controller.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.js +var init_exception_filter_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.js +var init_rpc_exception_filter_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.js +var init_ws_exception_filter_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/external/validation-error.interface.js +var init_validation_error_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/external/validation-error.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/arguments-host.interface.js +var init_arguments_host_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/arguments-host.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/can-activate.interface.js +var init_can_activate_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/can-activate.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.js +var init_custom_route_param_factory_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/execution-context.interface.js +var init_execution_context_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/execution-context.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.js +var init_nest_interceptor_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/paramtype.interface.js +var init_paramtype_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/paramtype.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.js +var init_pipe_transform_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/global-prefix-options.interface.js +var init_global_prefix_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/global-prefix-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.js +var init_before_application_shutdown_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.js +var init_on_application_bootstrap_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.js +var init_on_application_shutdown_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.js +var init_on_destroy_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-init.interface.js +var init_on_init_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-init.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/index.js +var init_hooks = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/index.js"() { + init_before_application_shutdown_interface(); + init_on_application_bootstrap_interface(); + init_on_application_shutdown_interface(); + init_on_destroy_interface(); + init_on_init_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/cookie-options.interface.js +var init_cookie_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/cookie-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/csrf-protection-options.interface.js +var init_csrf_protection_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/csrf-protection-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.js +var init_http_exception_body_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.js +var init_http_redirect_response_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-server.interface.js +var init_http_server_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-server.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/message-event.interface.js +var init_message_event_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/message-event.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.js +var init_raw_body_request_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/security-headers-options.interface.js +var init_security_headers_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/security-headers-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/index.js +var init_http2 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/index.js"() { + init_cookie_options_interface(); + init_csrf_protection_options_interface(); + init_http_exception_body_interface(); + init_http_redirect_response_interface(); + init_http_server_interface(); + init_message_event_interface(); + init_raw_body_request_interface(); + init_security_headers_options_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/injectable.interface.js +var init_injectable_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/injectable.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.js +var init_nest_hybrid_application_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/pre-request-hook.interface.js +var init_pre_request_hook_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/pre-request-hook.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/transport-server.interface.js +var init_transport_server_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/transport-server.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.js +var init_middleware_config_proxy_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.js +var init_middleware_configuration_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.js +var init_middleware_consumer_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.js +var init_nest_middleware_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/index.js +var init_middleware = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/index.js"() { + init_middleware_config_proxy_interface(); + init_middleware_configuration_interface(); + init_middleware_consumer_interface(); + init_nest_middleware_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.js +var init_dynamic_module_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.js +var init_forward_reference_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/injection-token.interface.js +var init_injection_token_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/injection-token.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.js +var init_introspection_result_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.js +var init_module_metadata_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/nest-module.interface.js +var init_nest_module_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/nest-module.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.js +var init_optional_factory_dependency_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/provider.interface.js +var init_provider_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/provider.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/index.js +var init_modules2 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/index.js"() { + init_dynamic_module_interface(); + init_forward_reference_interface(); + init_injection_token_interface(); + init_introspection_result_interface(); + init_module_metadata_interface(); + init_nest_module_interface(); + init_optional_factory_dependency_interface(); + init_provider_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application-context.interface.js +var init_nest_application_context_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application-context.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application-options.interface.js +var init_nest_application_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application.interface.js +var init_nest_application_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-microservice.interface.js +var init_nest_microservice_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-microservice.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/router-options.interface.js +var init_router_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/router-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/scope-options.interface.js +var Scope; +var init_scope_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/scope-options.interface.js"() { + (function(Scope2) { + Scope2[Scope2["DEFAULT"] = 0] = "DEFAULT"; + Scope2[Scope2["TRANSIENT"] = 1] = "TRANSIENT"; + Scope2[Scope2["REQUEST"] = 2] = "REQUEST"; + })(Scope || (Scope = {})); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.js +var init_shutdown_hooks_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/type.interface.js +var init_type_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/type.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.js +var init_web_socket_adapter_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/index.js +var init_interfaces = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/index.js"() { + init_abstract_interface(); + init_controller_metadata_interface(); + init_controller_interface(); + init_exception_filter_interface(); + init_rpc_exception_filter_interface(); + init_ws_exception_filter_interface(); + init_validation_error_interface(); + init_arguments_host_interface(); + init_can_activate_interface(); + init_custom_route_param_factory_interface(); + init_execution_context_interface(); + init_nest_interceptor_interface(); + init_paramtype_interface(); + init_pipe_transform_interface(); + init_global_prefix_options_interface(); + init_hooks(); + init_http2(); + init_injectable_interface(); + init_nest_hybrid_application_options_interface(); + init_pre_request_hook_interface(); + init_transport_server_interface(); + init_middleware(); + init_modules2(); + init_nest_application_context_interface(); + init_nest_application_options_interface(); + init_nest_application_interface(); + init_nest_microservice_interface(); + init_router_options_interface(); + init_scope_options_interface(); + init_shutdown_hooks_options_interface(); + init_type_interface(); + init_version_options_interface(); + init_web_socket_adapter_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/constants.js +var DEFAULT_METHOD_KEY, DEFAULT_FACTORY_CLASS_METHOD_KEY, ASYNC_METHOD_SUFFIX, CONFIGURABLE_MODULE_ID, ASYNC_OPTIONS_METADATA_KEYS; +var init_constants2 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/constants.js"() { + DEFAULT_METHOD_KEY = "register"; + DEFAULT_FACTORY_CLASS_METHOD_KEY = "create"; + ASYNC_METHOD_SUFFIX = "Async"; + CONFIGURABLE_MODULE_ID = "CONFIGURABLE_MODULE_ID"; + ASYNC_OPTIONS_METADATA_KEYS = [ + "useFactory", + "useClass", + "useExisting", + "inject", + "imports", + "provideInjectionTokensFrom" + ]; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/generate-options-injection-token.util.js +function generateOptionsInjectionToken() { + const hash = randomStringGenerator(); + return `CONFIGURABLE_MODULE_OPTIONS[${hash}]`; +} +var init_generate_options_injection_token_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/generate-options-injection-token.util.js"() { + init_random_string_generator_util(); + __name(generateOptionsInjectionToken, "generateOptionsInjectionToken"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/get-injection-providers.util.js +function isOptionalFactoryDependency(value) { + return !isUndefined(value.token) && !isUndefined(value.optional) && !value.prototype; +} +function getInjectionProviders(providers, tokens) { + const result = []; + let search = tokens.map(mapInjectToTokens); + while (search.length > 0) { + const match = (providers ?? []).filter((p) => !result.includes(p) && // this prevents circular loops and duplication + (search.includes(p) || search.includes(p?.provide))); + result.push(...match); + search = match.flatMap((p) => p?.useExisting !== void 0 ? [p.useExisting] : p?.inject ?? []).map(mapInjectToTokens); + } + return result; +} +var mapInjectToTokens; +var init_get_injection_providers_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/get-injection-providers.util.js"() { + init_shared_utils(); + __name(isOptionalFactoryDependency, "isOptionalFactoryDependency"); + mapInjectToTokens = /* @__PURE__ */ __name((t) => isOptionalFactoryDependency(t) ? t.token : t, "mapInjectToTokens"); + __name(getInjectionProviders, "getInjectionProviders"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/index.js +var init_utils2 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/index.js"() { + init_generate_options_injection_token_util(); + init_get_injection_providers_util(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/configurable-module.builder.js +var ConfigurableModuleBuilder; +var init_configurable_module_builder = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/configurable-module.builder.js"() { + init_logger_service(); + init_random_string_generator_util(); + init_constants2(); + init_utils2(); + ConfigurableModuleBuilder = class _ConfigurableModuleBuilder { + static { + __name(this, "ConfigurableModuleBuilder"); + } + options; + staticMethodKey; + factoryClassMethodKey; + extras; + transformModuleDefinition; + logger = new Logger(_ConfigurableModuleBuilder.name); + constructor(options = {}, parentBuilder) { + this.options = options; + if (parentBuilder) { + this.staticMethodKey = parentBuilder.staticMethodKey; + this.factoryClassMethodKey = parentBuilder.factoryClassMethodKey; + this.transformModuleDefinition = parentBuilder.transformModuleDefinition; + this.extras = parentBuilder.extras; + } + } + /** + * Registers the "extras" object (a set of extra options that can be used to modify the dynamic module definition). + * Values you specify within the "extras" object will be used as default values (that can be overridden by module consumers). + * + * This method also applies the so-called "module definition transform function" that takes the auto-generated + * dynamic module object ("DynamicModule") and the actual consumer "extras" object as input parameters. + * The "extras" object consists of values explicitly specified by module consumers and default values. + * + * @example + * ```typescript + * .setExtras<{ isGlobal?: boolean }>({ isGlobal: false }, (definition, extras) => + * ({ ...definition, global: extras.isGlobal }) + * ) + * ``` + */ + setExtras(extras, transformDefinition = (def) => def) { + const builder = new _ConfigurableModuleBuilder(this.options, this); + builder.extras = extras; + builder.transformModuleDefinition = transformDefinition; + return builder; + } + /** + * Dynamic modules must expose public static methods that let you pass in + * configuration parameters (control the module's behavior from the outside). + * Some frequently used names that you may have seen in other modules are: + * "forRoot", "forFeature", "register", "configure". + * + * This method "setClassMethodName" lets you specify the name of the + * method that will be auto-generated. + * + * @param key name of the method + */ + setClassMethodName(key) { + const builder = new _ConfigurableModuleBuilder(this.options, this); + builder.staticMethodKey = key; + return builder; + } + /** + * Asynchronously configured modules (that rely on other modules, i.e. "ConfigModule") + * let you pass the configuration factory class that will be registered and instantiated as a provider. + * This provider then will be used to retrieve the module's configuration. To provide the configuration, + * the corresponding factory method must be implemented. + * + * This method ("setFactoryMethodName") lets you control what method name will have to be + * implemented by the config factory (default is "create"). + * + * @param key name of the method + */ + setFactoryMethodName(key) { + const builder = new _ConfigurableModuleBuilder(this.options, this); + builder.factoryClassMethodKey = key; + return builder; + } + /** + * Returns an object consisting of multiple properties that lets you + * easily construct dynamic configurable modules. See "ConfigurableModuleHost" interface for more details. + */ + build() { + this.staticMethodKey ??= DEFAULT_METHOD_KEY; + this.factoryClassMethodKey ??= DEFAULT_FACTORY_CLASS_METHOD_KEY; + this.options.optionsInjectionToken ??= this.options.moduleName ? this.constructInjectionTokenString() : generateOptionsInjectionToken(); + this.transformModuleDefinition ??= (definition) => definition; + return { + ConfigurableModuleClass: this.createConfigurableModuleCls(), + MODULE_OPTIONS_TOKEN: this.options.optionsInjectionToken, + ASYNC_OPTIONS_TYPE: this.createTypeProxy("ASYNC_OPTIONS_TYPE"), + OPTIONS_TYPE: this.createTypeProxy("OPTIONS_TYPE") + }; + } + constructInjectionTokenString() { + const moduleNameInSnakeCase = this.options.moduleName.trim().split(/(?=[A-Z])/).join("_").toUpperCase(); + return `${moduleNameInSnakeCase}_MODULE_OPTIONS`; + } + createConfigurableModuleCls() { + const self2 = this; + const asyncMethodKey = this.staticMethodKey + ASYNC_METHOD_SUFFIX; + class InternalModuleClass { + static { + __name(this, "InternalModuleClass"); + } + static [self2.staticMethodKey](options) { + const providers = [ + { + provide: self2.options.optionsInjectionToken, + useValue: this.omitExtras(options, self2.extras) + } + ]; + if (self2.options.alwaysTransient) { + providers.push({ + provide: CONFIGURABLE_MODULE_ID, + useValue: randomStringGenerator() + }); + } + return self2.transformModuleDefinition({ + module: this, + providers + }, { + ...self2.extras, + ...options + }); + } + static [asyncMethodKey](options) { + const providers = this.createAsyncProviders(options); + if (self2.options.alwaysTransient) { + providers.push({ + provide: CONFIGURABLE_MODULE_ID, + useValue: randomStringGenerator() + }); + } + return self2.transformModuleDefinition({ + module: this, + imports: options.imports || [], + providers + }, { + ...self2.extras, + ...this.extractExtrasFromAsyncOptions(options, self2.extras) + }); + } + static omitExtras(input, extras) { + if (!extras) { + return input; + } + const moduleOptions = {}; + const extrasKeys = Object.keys(extras); + Object.keys(input).filter((key) => !extrasKeys.includes(key)).forEach((key) => { + moduleOptions[key] = input[key]; + }); + return moduleOptions; + } + static extractExtrasFromAsyncOptions(input, extras) { + if (!extras) { + return {}; + } + const extrasOptions = {}; + Object.keys(input).filter((key) => !ASYNC_OPTIONS_METADATA_KEYS.includes(key)).forEach((key) => { + extrasOptions[key] = input[key]; + }); + return extrasOptions; + } + static createAsyncProviders(options) { + if (options.useExisting || options.useFactory) { + if (options.inject && options.provideInjectionTokensFrom) { + return [ + this.createAsyncOptionsProvider(options), + ...getInjectionProviders(options.provideInjectionTokensFrom, options.inject) + ]; + } + return [this.createAsyncOptionsProvider(options)]; + } + return [ + this.createAsyncOptionsProvider(options), + { + provide: options.useClass, + useClass: options.useClass + } + ]; + } + static createAsyncOptionsProvider(options) { + if (options.useFactory) { + return { + provide: self2.options.optionsInjectionToken, + useFactory: options.useFactory, + inject: options.inject || [] + }; + } + return { + provide: self2.options.optionsInjectionToken, + useFactory: /* @__PURE__ */ __name(async (optionsFactory) => await optionsFactory[self2.factoryClassMethodKey](), "useFactory"), + inject: [options.useExisting || options.useClass] + }; + } + } + return InternalModuleClass; + } + createTypeProxy(typeName) { + const proxy = new Proxy({}, { + get: /* @__PURE__ */ __name(() => { + throw new Error(`"${typeName}" is not supposed to be used as a value.`); + }, "get") + }); + return proxy; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.js +var init_configurable_module_async_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.js +var init_configurable_module_cls_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.js +var init_configurable_module_host_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/index.js +var init_interfaces2 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/index.js"() { + init_configurable_module_async_options_interface(); + init_configurable_module_cls_interface(); + init_configurable_module_host_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/index.js +var init_module_utils = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/index.js"() { + init_configurable_module_builder(); + init_interfaces2(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/default-value.pipe.js +var DefaultValuePipe; +var init_default_value_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/default-value.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_shared_utils(); + DefaultValuePipe = class DefaultValuePipe2 { + static { + __name(this, "DefaultValuePipe"); + } + defaultValue; + constructor(defaultValue) { + this.defaultValue = defaultValue; + } + transform(value, _metadata) { + if (isNil(value) || isNumber(value) && isNaN(value)) { + return this.copyDefaultValue(this.defaultValue); + } + return value; + } + /** + * Copies `value` if it is an array or a plain object, along with the arrays + * and plain objects nested in it. `copies` maps the objects copied so far + * to their copies, so that shared and circular references are preserved. + */ + copyDefaultValue(value, copies) { + const isArray = Array.isArray(value) && Object.getPrototypeOf(value) === Array.prototype; + if (!isArray && !isPlainObject(value)) { + return value; + } + copies ??= /* @__PURE__ */ new Map(); + if (copies.has(value)) { + return copies.get(value); + } + const copy = Object.assign(isArray ? [] : Object.create(Object.getPrototypeOf(value)), value); + copies.set(value, copy); + for (const key of Reflect.ownKeys(copy)) { + copy[key] = this.copyDefaultValue(copy[key], copies); + } + return copy; + } + }; + DefaultValuePipe = __decorate([ + Injectable(), + __metadata("design:paramtypes", [Object]) + ], DefaultValuePipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/file-validator.interface.js +var FileValidator; +var init_file_validator_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/file-validator.interface.js"() { + FileValidator = class { + static { + __name(this, "FileValidator"); + } + validationOptions; + constructor(validationOptions) { + this.validationOptions = validationOptions; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/file-type.validator.js +var logger2, FileTypeValidator; +var init_file_type_validator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/file-type.validator.js"() { + init_logger_service(); + init_file_validator_interface(); + logger2 = new Logger("FileTypeValidator"); + FileTypeValidator = class extends FileValidator { + static { + __name(this, "FileTypeValidator"); + } + buildErrorMessage(file) { + const { errorMessage, ...config } = this.validationOptions; + if (errorMessage) { + return typeof errorMessage === "function" ? errorMessage({ file, config }) : errorMessage; + } + if (file?.mimetype && !file.buffer && !this.validationOptions?.fallbackToMimetype && !this.validationOptions?.skipMagicNumbersValidation) { + return `Validation failed (file buffer is not available; file type validation could not be performed; expected type is ${this.validationOptions.fileType})`; + } + if (file?.mimetype) { + const baseMessage = `Validation failed (current file type is ${file.mimetype}, expected type is ${this.validationOptions.fileType})`; + if (this.validationOptions.fallbackToMimetype) { + return `${baseMessage} - magic number detection failed, used mimetype fallback`; + } + return baseMessage; + } + return `Validation failed (expected type is ${this.validationOptions.fileType})`; + } + async isValid(file) { + if (!this.validationOptions) { + return true; + } + const isFileValid = !!file && "mimetype" in file; + if (this.validationOptions.skipMagicNumbersValidation) { + return isFileValid && this.matchesFileType(file.mimetype); + } + if (!isFileValid) + return false; + if (!file.buffer) { + if (this.validationOptions.fallbackToMimetype) { + return this.matchesFileType(file.mimetype); + } + return false; + } + try { + const { fileTypeFromBuffer } = await import("./source-SMPGMLTA.js"); + const fileType = await fileTypeFromBuffer(file.buffer); + if (fileType) { + if (this.validationOptions.overrideMimeType) { + file.mimetype = fileType.mime; + } + return this.matchesFileType(fileType.mime); + } + if (this.validationOptions.fallbackToMimetype) { + return this.matchesFileType(file.mimetype); + } + return false; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + if (errorMessage.includes("ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING") || errorMessage.includes("Cannot find module") || errorMessage.includes("ERR_MODULE_NOT_FOUND")) { + logger2.warn(`Failed to load the "file-type" package for magic number validation. If you are using Jest, run it with NODE_OPTIONS="--experimental-vm-modules". Error: ${errorMessage}`); + } + if (this.validationOptions.fallbackToMimetype) { + return this.matchesFileType(file.mimetype); + } + return false; + } + } + matchesFileType(mimetype) { + const { fileType } = this.validationOptions; + if (typeof fileType === "string" && mimetype === fileType) { + return true; + } + if (typeof fileType === "string") { + return !!mimetype.match(/[a-z\d]$/i.test(fileType) ? `(?:${fileType})(?![\\w-])` : fileType); + } + return !!mimetype.match(new RegExp(fileType)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/max-file-size.validator.js +var MaxFileSizeValidator; +var init_max_file_size_validator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/max-file-size.validator.js"() { + init_file_validator_interface(); + MaxFileSizeValidator = class extends FileValidator { + static { + __name(this, "MaxFileSizeValidator"); + } + buildErrorMessage(file) { + const { errorMessage, message, ...config } = this.validationOptions; + if (errorMessage) { + return typeof errorMessage === "function" ? errorMessage({ file, config }) : errorMessage; + } + if (message) { + return typeof message === "function" ? message(this.validationOptions.maxSize) : message; + } + if (file?.size) { + return `Validation failed (current file size is ${file.size}, expected size is less than ${this.validationOptions.maxSize})`; + } + return `Validation failed (expected size is less than ${this.validationOptions.maxSize})`; + } + isValid(file) { + if (!this.validationOptions || !file) { + return true; + } + return "size" in file && file.size < this.validationOptions.maxSize; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file-options.interface.js +var init_parse_file_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/http-error-by-code.util.js +var HttpErrorByCode; +var init_http_error_by_code_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/http-error-by-code.util.js"() { + init_enums(); + init_exceptions(); + HttpErrorByCode = { + [HttpStatus.BAD_GATEWAY]: BadGatewayException, + [HttpStatus.BAD_REQUEST]: BadRequestException, + [HttpStatus.CONFLICT]: ConflictException, + [HttpStatus.FORBIDDEN]: ForbiddenException, + [HttpStatus.GATEWAY_TIMEOUT]: GatewayTimeoutException, + [HttpStatus.GONE]: GoneException, + [HttpStatus.HTTP_VERSION_NOT_SUPPORTED]: HttpVersionNotSupportedException, + [HttpStatus.I_AM_A_TEAPOT]: ImATeapotException, + [HttpStatus.INTERNAL_SERVER_ERROR]: InternalServerErrorException, + [HttpStatus.METHOD_NOT_ALLOWED]: MethodNotAllowedException, + [HttpStatus.MISDIRECTED]: MisdirectedException, + [HttpStatus.NOT_ACCEPTABLE]: NotAcceptableException, + [HttpStatus.NOT_FOUND]: NotFoundException, + [HttpStatus.NOT_IMPLEMENTED]: NotImplementedException, + [HttpStatus.PAYLOAD_TOO_LARGE]: PayloadTooLargeException, + [HttpStatus.PRECONDITION_FAILED]: PreconditionFailedException, + [HttpStatus.REQUEST_TIMEOUT]: RequestTimeoutException, + [HttpStatus.SERVICE_UNAVAILABLE]: ServiceUnavailableException, + [HttpStatus.UNAUTHORIZED]: UnauthorizedException, + [HttpStatus.UNPROCESSABLE_ENTITY]: UnprocessableEntityException, + [HttpStatus.UNSUPPORTED_MEDIA_TYPE]: UnsupportedMediaTypeException + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file.pipe.js +var ParseFilePipe; +var init_parse_file_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file.pipe.js"() { + init_tslib_es6(); + init_core(); + init_enums(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseFilePipe = class ParseFilePipe2 { + static { + __name(this, "ParseFilePipe"); + } + exceptionFactory; + validators; + fileIsRequired; + constructor(options = {}) { + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST, validators = [], fileIsRequired } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + this.validators = validators; + this.fileIsRequired = fileIsRequired ?? true; + } + async transform(value) { + const areThereAnyFilesIn = this.thereAreNoFilesIn(value); + if (areThereAnyFilesIn && this.fileIsRequired) { + throw this.exceptionFactory("File is required"); + } + if (!areThereAnyFilesIn && this.validators.length) { + await this.validateFilesOrFile(value); + } + return value; + } + async validateFilesOrFile(value) { + if (Array.isArray(value)) { + await Promise.all(value.map((f) => this.validate(f))); + } else { + await this.validate(value); + } + } + thereAreNoFilesIn(value) { + const isEmptyObject = isObject(value) && isEmptyArray(Object.keys(value)); + return isNil(value) || isEmptyArray(value) || isEmptyObject; + } + async validate(file) { + for (const validator of this.validators) { + await this.validateOrThrow(file, validator); + } + return file; + } + async validateOrThrow(file, validator) { + const isValid = await validator.isValid(file); + if (!isValid) { + const errorMessage = validator.buildErrorMessage(file); + throw this.exceptionFactory(errorMessage); + } + } + /** + * @returns list of validators used in this pipe. + */ + getValidators() { + return this.validators; + } + }; + ParseFilePipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseFilePipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.js +var ParseFilePipeBuilder; +var init_parse_file_pipe_builder = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.js"() { + init_file_type_validator(); + init_max_file_size_validator(); + init_parse_file_pipe(); + ParseFilePipeBuilder = class { + static { + __name(this, "ParseFilePipeBuilder"); + } + validators = []; + addMaxSizeValidator(options) { + return this.addValidator(new MaxFileSizeValidator(options)); + } + addFileTypeValidator(options) { + return this.addValidator(new FileTypeValidator(options)); + } + addValidator(validator) { + this.validators.push(validator); + return this; + } + build(additionalOptions) { + const parseFilePipe = new ParseFilePipe({ + ...additionalOptions, + validators: this.validators + }); + this.validators = []; + return parseFilePipe; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/index.js +var init_file = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/index.js"() { + init_file_type_validator(); + init_file_validator_interface(); + init_max_file_size_validator(); + init_parse_file_options_interface(); + init_parse_file_pipe(); + init_parse_file_pipe_builder(); + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/concat.js +var require_concat = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/concat.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var ConcatIterator = class { + static { + __name(this, "ConcatIterator"); + } + constructor(toConcat) { + this.toConcat = toConcat; + } + next() { + if (this.toConcat.length === 0) { + return { done: true }; + } + const result = this.toConcat[0].next(); + if (!result.done) { + return result; + } + this.toConcat.shift(); + return this.next(); + } + }; + exports.ConcatIterator = ConcatIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/filter.js +var require_filter = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/filter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var FilterIterator = class { + static { + __name(this, "FilterIterator"); + } + constructor(source, predicate) { + this.source = source; + this.predicate = predicate; + } + next() { + let result; + do { + result = this.source.next(); + } while (!result.done && !this.predicate(result.value)); + return result; + } + }; + exports.FilterIterator = FilterIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/utils.js +var require_utils = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/utils.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function isIterator(candidate) { + return typeof candidate === "object" && candidate !== null && typeof candidate.next === "function"; + } + __name(isIterator, "isIterator"); + exports.isIterator = isIterator; + function isIterable(candidate) { + return typeof candidate === "object" && candidate !== null && typeof candidate[Symbol.iterator] === "function"; + } + __name(isIterable, "isIterable"); + exports.isIterable = isIterable; + function toIterator(collection) { + if (isIterator(collection)) { + return collection; + } + if (isIterable(collection)) { + return collection[Symbol.iterator](); + } + throw new Error("Passed collection is neither an Iterator nor an Iterable"); + } + __name(toIterator, "toIterator"); + exports.toIterator = toIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/flatten.js +var require_flatten = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/flatten.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var utils_1 = require_utils(); + var FlattenIterator = class { + static { + __name(this, "FlattenIterator"); + } + constructor(outer) { + this.outer = outer; + } + next() { + if (this.inner) { + const result = this.inner.next(); + if (!result.done) { + return result; + } + this.inner = void 0; + } + const { value, done } = this.outer.next(); + if (utils_1.isIterable(value)) { + this.inner = value[Symbol.iterator](); + return this.next(); + } + return { value, done }; + } + }; + exports.FlattenIterator = FlattenIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/map.js +var require_map = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/map.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var MapIterator = class { + static { + __name(this, "MapIterator"); + } + constructor(source, iteratee) { + this.source = source; + this.iteratee = iteratee; + } + next() { + const { value, done } = this.source.next(); + return { value: !done && this.iteratee(value), done }; + } + }; + exports.MapIterator = MapIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/slice.js +var require_slice = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/slice.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var SliceIterator = class { + static { + __name(this, "SliceIterator"); + } + /** + * @param {Iterator} source Source Iterator + * @param {number} start Zero-based positive start index, inclusive + * @param {number} end Zero-based positive end index, exclusive, defaults to end of iterator + */ + constructor(source, start, end = Infinity) { + this.source = source; + this.start = start; + this.end = end; + this.i = 0; + } + next() { + while (this.i < this.start) { + const result = this.source.next(); + if (result.done) { + return result; + } + this.i++; + } + this.i++; + if (this.i >= this.end) { + return { done: true }; + } + return this.source.next(); + } + }; + exports.SliceIterator = SliceIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/zip.js +var require_zip = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/zip.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var ZipIterator = class { + static { + __name(this, "ZipIterator"); + } + constructor(a, b) { + this.a = a; + this.b = b; + } + next() { + const a = this.a.next(); + if (a.done) { + return { done: true }; + } + const b = this.b.next(); + if (b.done) { + return { done: true }; + } + return { value: [a.value, b.value], done: false }; + } + }; + exports.ZipIterator = ZipIterator; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/iterate.js +var require_iterate = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/iterate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var concat_1 = require_concat(); + var filter_1 = require_filter(); + var flatten_1 = require_flatten(); + var map_1 = require_map(); + var slice_1 = require_slice(); + var utils_1 = require_utils(); + var zip_1 = require_zip(); + var IteratorWithOperators = class _IteratorWithOperators { + static { + __name(this, "IteratorWithOperators"); + } + /** + * @param source Iterator to wrap + */ + constructor(source) { + this.source = source; + } + /** + * Returns a `{ value, done }` object that adheres to the Iterator protocol + */ + next() { + return this.source.next(); + } + /** + * The presence of this method makes the Iterator itself Iterable. + * This makes it possible to pass it to `for of` and Iterable-accepting functions like `Array.from()` + */ + [Symbol.iterator]() { + return this; + } + /** + * Returns a new Iterator by running each element thru iteratee + */ + map(iteratee) { + return new _IteratorWithOperators(new map_1.MapIterator(this.source, iteratee)); + } + filter(predicate) { + return new _IteratorWithOperators(new filter_1.FilterIterator(this.source, predicate)); + } + /** + * Returns a new Iterator concatenating the Iterator with an additional Iterator or Iterable + */ + concat(collection) { + return new _IteratorWithOperators(new concat_1.ConcatIterator([this.source, utils_1.toIterator(collection)])); + } + /** + * Returns a new Iterator that emits slice of the source with n elements taken from the beginning + * + * @param limit The number of elements to take. + */ + take(limit) { + return new _IteratorWithOperators(new slice_1.SliceIterator(this.source, 0, limit + 1)); + } + /** + * Returns a new Iterator that emits slice of the source with n elements dropped from the beginning + * + * @param n The number of elements to drop. + */ + drop(n) { + return new _IteratorWithOperators(new slice_1.SliceIterator(this.source, n, Infinity)); + } + /** + * Returns a new Iterator that emits a slice of the source + * + * @param {number} start Zero-based positive start index, inclusive + * @param {number} end Zero-based positive end index, exclusive, defaults to end of iterator + */ + slice(start, end = Infinity) { + return new _IteratorWithOperators(new slice_1.SliceIterator(this.source, start, end)); + } + /** + * Returns a new Iterator that flattens items emitted by the Iterator a single level deep + */ + flatten() { + return new _IteratorWithOperators(new flatten_1.FlattenIterator(this.source)); + } + reduce(iteratee, accumulator) { + let result; + if (accumulator === void 0) { + result = this.source.next(); + if (result.done) { + throw new TypeError("Reduce of empty Iterator with no initial value"); + } + accumulator = result.value; + } + while (true) { + result = this.source.next(); + if (result.done) { + break; + } + accumulator = iteratee(accumulator, result.value); + } + return accumulator; + } + find(predicate) { + let result; + while (true) { + result = this.source.next(); + if (result.done) { + return void 0; + } + if (predicate(result.value)) { + return result.value; + } + } + } + /** + * Iterates and checks if `value` is emitted by the Iterator + * + * @param value The value to search + */ + includes(value) { + let result; + do { + result = this.source.next(); + if (!result.done && result.value === value) { + return true; + } + } while (!result.done); + return false; + } + /** + * Iterates and checks if `predicate` returns truthy for any element emitted by the Iterator + */ + some(predicate) { + let result; + do { + result = this.source.next(); + if (!result.done && predicate(result.value)) { + return true; + } + } while (!result.done); + return false; + } + /** + * Iterates and checks if `predicate` returns truthy for all elements emitted by the Iterator + */ + every(predicate) { + let result; + do { + result = this.source.next(); + if (!result.done && !predicate(result.value)) { + return false; + } + } while (!result.done); + return true; + } + /** + * Iterates and invokes `iteratee` for every element emitted by the Iterator + */ + forEach(iteratee) { + let result; + while (true) { + result = this.source.next(); + if (result.done) { + break; + } + iteratee(result.value); + } + } + /** + * Iterates and joins all elements emitted by the Iterator together as a string separated by an optional separator + */ + join(separator = ",") { + let joined = ""; + let result; + while (true) { + result = this.source.next(); + if (result.done) { + break; + } + joined += separator + result.value; + } + return joined.substr(separator.length); + } + /** + * Iterates and returns all items emitted by the Iterator as an array. + * Equivalent to passing the Iterator to `Array.from()` + */ + toArray() { + return Array.from(this); + } + /** + * Iterates and returns all items emitted by the Iterator as an ES6 Set. + * Equivalent to passing the Iterator to `new Set()` + */ + toSet() { + const set = /* @__PURE__ */ new Set(); + while (true) { + const { value, done } = this.next(); + if (done) { + return set; + } + set.add(value); + } + } + /** + * Iterates and returns all `[key, value]` paris emitted by the Iterator as an ES6 Map. + * Equivalent to passing the Iterator to `new Map()` + */ + toMap() { + return new Map(this); + } + }; + exports.IteratorWithOperators = IteratorWithOperators; + function iterate2(collection) { + return new IteratorWithOperators(utils_1.toIterator(collection)); + } + __name(iterate2, "iterate"); + exports.iterate = iterate2; + function zip(a, b) { + return new IteratorWithOperators(new zip_1.ZipIterator(utils_1.toIterator(a), utils_1.toIterator(b))); + } + __name(zip, "zip"); + exports.zip = zip; + exports.default = iterate2; + } +}); + +// ../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/index.js +var require_lib = __commonJS({ + "../../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var iterate_1 = require_iterate(); + exports.iterate = iterate_1.iterate; + exports.zip = iterate_1.zip; + exports.default = iterate_1.iterate; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/strip-proto-keys.util.js +import { types as types2 } from "util"; +function stripProtoKeys(value) { + if (value == null || typeof value !== "object" || types2.isTypedArray(value)) { + return; + } + if (BUILT_IN_TYPES.some((type) => value instanceof type)) { + return; + } + if (Array.isArray(value)) { + for (const v of Object.values(value)) { + stripProtoKeys(v); + } + return; + } + delete value.__proto__; + delete value.prototype; + if (!BUILT_IN_TYPES.includes(value.constructor)) { + delete value.constructor; + } + for (const key in value) { + stripProtoKeys(value[key]); + } +} +var BUILT_IN_TYPES; +var init_strip_proto_keys_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/strip-proto-keys.util.js"() { + BUILT_IN_TYPES = [Date, RegExp, Error, Map, Set, WeakMap, WeakSet]; + __name(stripProtoKeys, "stripProtoKeys"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/validation.pipe.js +var import_iterare, DEFAULT_MAX_ERROR_MESSAGES_LENGTH, OMITTED_ERRORS_MESSAGE, classValidator, classTransformer, ValidationPipe; +var init_validation_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/validation.pipe.js"() { + init_tslib_es6(); + import_iterare = __toESM(require_lib(), 1); + init_core(); + init_decorators(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_load_package_util(); + init_shared_utils(); + init_strip_proto_keys_util(); + DEFAULT_MAX_ERROR_MESSAGES_LENGTH = 1e6; + OMITTED_ERRORS_MESSAGE = "Further validation errors were omitted"; + classValidator = {}; + classTransformer = {}; + ValidationPipe = class ValidationPipe2 { + static { + __name(this, "ValidationPipe"); + } + isTransformEnabled; + isDetailedOutputDisabled; + validatorOptions; + transformOptions; + errorHttpStatusCode; + expectedType; + exceptionFactory; + validateCustomDecorators; + errorFormat; + maxErrorMessagesLength; + constructor(options) { + options = options || {}; + const { transform, disableErrorMessages, errorHttpStatusCode, expectedType, transformOptions, exceptionFactory, validatorPackage, transformerPackage, validateCustomDecorators, errorFormat, maxErrorMessagesLength, ...validatorOptions } = options; + this.validatorOptions = { forbidUnknownValues: false, ...validatorOptions }; + this.isTransformEnabled = !!transform; + this.transformOptions = transformOptions; + this.isDetailedOutputDisabled = disableErrorMessages; + this.validateCustomDecorators = validateCustomDecorators || false; + this.errorHttpStatusCode = errorHttpStatusCode || HttpStatus.BAD_REQUEST; + this.expectedType = expectedType; + this.errorFormat = errorFormat || "list"; + this.maxErrorMessagesLength = maxErrorMessagesLength ?? DEFAULT_MAX_ERROR_MESSAGES_LENGTH; + this.exceptionFactory = exceptionFactory || this.createExceptionFactory(); + classValidator = this.loadValidator(validatorPackage); + classTransformer = this.loadTransformer(transformerPackage); + } + loadValidator(validatorPackage) { + return validatorPackage ?? loadPackage("class-validator", "ValidationPipe", () => import("class-validator")); + } + loadTransformer(transformerPackage) { + return transformerPackage ?? loadPackage("class-transformer", "ValidationPipe", () => import("class-transformer")); + } + async transform(value, metadata) { + if (this.expectedType) { + metadata = { ...metadata, metatype: this.expectedType }; + } + const metatype = metadata.metatype; + if (!metatype || !this.toValidate(metadata)) { + return this.isTransformEnabled ? this.transformPrimitive(value, metadata) : value; + } + classValidator = await classValidator; + classTransformer = await classTransformer; + const originalValue = value; + value = this.toEmptyIfNil(value, metatype); + const isNil2 = value !== originalValue; + const isPrimitive = this.isPrimitive(value); + this.stripProtoKeys(value); + let entity = classTransformer.plainToInstance(metatype, value, this.transformOptions); + const originalEntity = entity; + const isCtorNotEqual = entity.constructor !== metatype; + if (isCtorNotEqual && !isPrimitive) { + entity.constructor = metatype; + } else if (isCtorNotEqual) { + entity = { constructor: metatype }; + } + const errors = await this.validate(entity, { + ...this.validatorOptions, + // The target of an error is the whole object it was found in, so an + // exception factory that sends the errors would repeat that object + // once per error. + validationError: { + target: false, + ...this.validatorOptions.validationError + } + }); + if (errors.length > 0) { + throw await this.exceptionFactory(errors); + } + if (isCtorNotEqual && (isPrimitive || Array.isArray(value)) && await this.hasValidationRules(metatype)) { + throw await this.exceptionFactory([ + { + property: metadata.data || metadata.type, + constraints: { isObject: "Validation failed (object is expected)" }, + children: [] + } + ]); + } + if (originalValue === void 0 && originalEntity === "") { + return originalValue; + } + if (isPrimitive) { + entity = originalEntity; + } + if (this.isTransformEnabled) { + return entity; + } + if (isNil2) { + return originalValue; + } + const shouldTransformToPlain = Object.keys(this.validatorOptions).length > 1; + return shouldTransformToPlain ? classTransformer.classToPlain(entity, this.transformOptions) : value; + } + createExceptionFactory() { + return (validationErrors = []) => { + if (this.isDetailedOutputDisabled) { + return new HttpErrorByCode[this.errorHttpStatusCode](); + } + const budget = { + remaining: this.maxErrorMessagesLength, + isExceeded: false + }; + validationErrors = this.limitValidationErrors(validationErrors, budget); + if (this.errorFormat === "grouped") { + let errors2 = this.groupValidationErrors(validationErrors); + if (budget.isExceeded) { + errors2 = { ...errors2, "...": [OMITTED_ERRORS_MESSAGE] }; + } + const { message: error, statusCode } = new HttpErrorByCode[this.errorHttpStatusCode]().getResponse(); + return new HttpErrorByCode[this.errorHttpStatusCode]({ + message: errors2, + error, + statusCode + }); + } + let errors = this.flattenValidationErrors(validationErrors); + if (budget.isExceeded) { + errors = [...errors, OMITTED_ERRORS_MESSAGE]; + } + return new HttpErrorByCode[this.errorHttpStatusCode](errors); + }; + } + /** + * Leaves out the errors that come after the first "maxErrorMessagesLength" + * characters of messages. Each message counts with the path of its + * property, which is what makes the response to a deeply nested payload + * grow faster than the payload. The errors past the limit are not visited. + */ + limitValidationErrors(validationErrors, budget, parentPathLength = 0) { + const limited = []; + let isChanged = false; + for (const error of validationErrors) { + if (budget.remaining <= 0) { + budget.isExceeded = true; + return limited; + } + const pathLength = parentPathLength + String(error.property).length + 1; + for (const key in error.constraints) { + budget.remaining -= pathLength + String(error.constraints[key]).length; + } + const children = error.children && this.limitValidationErrors(error.children, budget, pathLength); + if (children === error.children) { + limited.push(error); + } else { + limited.push({ ...error, children }); + isChanged = true; + } + } + return isChanged ? limited : validationErrors; + } + toValidate(metadata) { + const { metatype, type } = metadata; + if (type === "custom" && !this.validateCustomDecorators) { + return false; + } + const types3 = [String, Boolean, Number, Array, Object, Buffer, Date]; + return !types3.some((t) => metatype === t) && !isNil(metatype); + } + transformPrimitive(value, metadata) { + if (!metadata.data) { + return value; + } + const { type, metatype } = metadata; + if (type !== "param" && type !== "query") { + return value; + } + if (metatype === Boolean) { + if (isUndefined(value)) { + return void 0; + } + return value === true || value === "true"; + } + if (metatype === Number) { + if (isUndefined(value)) { + return void 0; + } + return +value; + } + if (metatype === String && !isUndefined(value)) { + return String(value); + } + return value; + } + toEmptyIfNil(value, metatype) { + if (!isNil(value)) { + return value; + } + if (typeof metatype === "function" || metatype && "prototype" in metatype && metatype.prototype?.constructor) { + return {}; + } + return ""; + } + isPrimitive(value) { + return ["number", "boolean", "string"].includes(typeof value); + } + stripProtoKeys(value) { + stripProtoKeys(value); + } + validate(object, validatorOptions) { + return classValidator.validate(object, validatorOptions); + } + async hasValidationRules(metatype) { + const errors = await this.validate({ constructor: metatype }, { ...this.validatorOptions, forbidUnknownValues: true }); + return !errors.some((error) => error.constraints?.unknownValue); + } + flattenValidationErrors(validationErrors) { + return (0, import_iterare.iterate)(validationErrors).map((error) => this.mapChildrenToValidationErrors(error)).flatten().filter((item) => !!item.constraints).map((item) => Object.values(item.constraints)).flatten().toArray(); + } + groupValidationErrors(validationErrors, parentPath, result = {}) { + for (const error of validationErrors) { + const path = parentPath ? `${parentPath}.${error.property}` : error.property; + if (error.constraints) { + result[path] = Object.values(error.constraints); + } + if (error.children && error.children.length) { + const nested = this.groupValidationErrors(error.children, path, result); + if (nested !== result) { + Object.assign(result, nested); + } + } + } + return result; + } + mapChildrenToValidationErrors(error, parentPath, validationErrors = []) { + const currentError = parentPath ? this.prependConstraintsWithParentProp(parentPath, error) : error; + if (!(error.children && error.children.length)) { + validationErrors.push(currentError); + return validationErrors; + } + if (error.constraints) { + validationErrors.push(currentError); + } + parentPath = parentPath ? `${parentPath}.${error.property}` : error.property; + for (const item of error.children) { + const nested = this.mapChildrenToValidationErrors(item, parentPath, validationErrors); + if (nested !== validationErrors) { + for (const nestedError of nested) { + validationErrors.push(nestedError); + } + } + } + return validationErrors; + } + prependConstraintsWithParentProp(parentPath, error) { + const constraints = {}; + for (const key in error.constraints) { + constraints[key] = `${parentPath}.${error.constraints[key]}`; + } + return { + ...error, + constraints + }; + } + }; + ValidationPipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ValidationPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-array.pipe.js +var VALIDATION_ERROR_MESSAGE, DEFAULT_ARRAY_SEPARATOR, ParseArrayPipe; +var init_parse_array_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-array.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_optional_decorator(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_shared_utils(); + init_validation_pipe(); + VALIDATION_ERROR_MESSAGE = "Validation failed (parsable array expected)"; + DEFAULT_ARRAY_SEPARATOR = ","; + ParseArrayPipe = class ParseArrayPipe2 { + static { + __name(this, "ParseArrayPipe"); + } + options; + validationPipe; + exceptionFactory; + constructor(options = {}) { + this.options = options; + this.validationPipe = new ValidationPipe({ + transform: true, + validateCustomDecorators: true, + ...options + }); + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + /** + * Method that accesses and performs optional transformation on argument for + * in-flight requests. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + async transform(value, metadata) { + if (isNil(value) && !this.options.optional) { + throw this.exceptionFactory(VALIDATION_ERROR_MESSAGE); + } else if (isNil(value) && this.options.optional) { + return value; + } + if (!Array.isArray(value)) { + if (!isString(value)) { + throw this.exceptionFactory(VALIDATION_ERROR_MESSAGE); + } else { + try { + value = value.trim().split(this.options.separator || DEFAULT_ARRAY_SEPARATOR); + } catch { + throw this.exceptionFactory(VALIDATION_ERROR_MESSAGE); + } + } + } + if (this.options.items) { + const validationMetadata = { + metatype: this.options.items, + type: "query" + }; + const isExpectedTypePrimitive = this.isExpectedTypePrimitive(); + const toClassInstance = /* @__PURE__ */ __name((item, index) => { + if (this.options.items !== String && isString(item)) { + try { + item = JSON.parse(item); + } catch { + } + } + if (isExpectedTypePrimitive) { + return this.validatePrimitive(item, index); + } + return this.validationPipe.transform(item, validationMetadata); + }, "toClassInstance"); + if (this.options.stopAtFirstError === false) { + const errors = []; + const targetArray = Array.from(value); + for (let i = 0; i < targetArray.length; i++) { + try { + targetArray[i] = await toClassInstance(targetArray[i]); + } catch (err) { + let message; + if (err.getResponse) { + const response = err.getResponse(); + if (Array.isArray(response.message)) { + message = response.message.map((item) => `[${i}] ${item}`); + } else { + message = `[${i}] ${response.message}`; + } + } else { + message = err; + } + if (Array.isArray(message)) { + for (const item of message) { + errors.push(item); + } + } else { + errors.push(message); + } + } + } + if (errors.length > 0) { + throw this.exceptionFactory(errors); + } + return targetArray; + } else { + const targetArray = value; + const items = []; + for (let i = 0; i < targetArray.length; i++) { + items.push(i in targetArray ? await toClassInstance(targetArray[i], i) : void 0); + } + value = items; + } + } + return value; + } + isExpectedTypePrimitive() { + return [Boolean, Number, String].includes(this.options.items); + } + validatePrimitive(originalValue, index) { + if (this.options.items === Number) { + if (!this.isNumeric(originalValue)) { + throw this.exceptionFactory(`${isUndefined(index) ? "" : `[${index}] `}item must be a number`); + } + return Number(originalValue); + } else if (this.options.items === String) { + if (!isString(originalValue)) { + return `${originalValue}`; + } + } else if (this.options.items === Boolean) { + if (typeof originalValue !== "boolean") { + throw this.exceptionFactory(`${isUndefined(index) ? "" : `[${index}] `}item must be a boolean value`); + } + } + return originalValue; + } + isNumeric(value) { + if (typeof value === "number") { + return Number.isFinite(value); + } + if (typeof value !== "string" || value.trim() === "") { + return false; + } + if (/^0[box]/i.test(value.trim())) { + return false; + } + return Number.isFinite(Number(value)); + } + }; + ParseArrayPipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseArrayPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-bool.pipe.js +var ParseBoolPipe; +var init_parse_bool_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-bool.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_optional_decorator(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseBoolPipe = class ParseBoolPipe2 { + static { + __name(this, "ParseBoolPipe"); + } + options; + exceptionFactory; + constructor(options) { + this.options = options; + options = options || {}; + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + /** + * Method that accesses and performs optional transformation on argument for + * in-flight requests. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + async transform(value, metadata) { + if (isNil(value) && this.options?.optional) { + return value; + } + if (this.isTrue(value)) { + return true; + } + if (this.isFalse(value)) { + return false; + } + throw this.exceptionFactory("Validation failed (boolean string is expected)"); + } + /** + * @param value currently processed route argument + * @returns `true` if `value` is said 'true', ie., if it is equal to the boolean + * `true` or the string `"true"` + */ + isTrue(value) { + return value === true || value === "true"; + } + /** + * @param value currently processed route argument + * @returns `true` if `value` is said 'false', ie., if it is equal to the boolean + * `false` or the string `"false"` + */ + isFalse(value) { + return value === false || value === "false"; + } + }; + ParseBoolPipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseBoolPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-date.pipe.js +var ParseDatePipe; +var init_parse_date_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-date.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_optional_decorator(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseDatePipe = class ParseDatePipe2 { + static { + __name(this, "ParseDatePipe"); + } + options; + exceptionFactory; + constructor(options = {}) { + this.options = options; + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + /** + * Method that accesses and performs optional transformation on argument for + * in-flight requests. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + transform(value) { + if (isNil(value)) { + if (this.options.default) { + return this.options.default(); + } + if (this.options.optional) { + return value; + } + } + if (isNil(value) || value === "") { + throw this.exceptionFactory("Validation failed (no Date provided)"); + } + const transformedValue = isString(value) || isNumber(value) || value instanceof Date ? new Date(value) : /* @__PURE__ */ new Date(NaN); + if (isNaN(transformedValue.getTime())) { + throw this.exceptionFactory("Validation failed (invalid date format)"); + } + return transformedValue; + } + }; + ParseDatePipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseDatePipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-enum.pipe.js +var ParseEnumPipe; +var init_parse_enum_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-enum.pipe.js"() { + init_tslib_es6(); + init_core(); + init_common(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseEnumPipe = class ParseEnumPipe2 { + static { + __name(this, "ParseEnumPipe"); + } + enumType; + options; + exceptionFactory; + cachedEnumValues; + constructor(enumType, options) { + this.enumType = enumType; + this.options = options; + if (!enumType) { + throw new Error(`"ParseEnumPipe" requires "enumType" argument specified (to validate input values).`); + } + options = options || {}; + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + /** + * Method that accesses and performs optional transformation on argument for + * in-flight requests. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + async transform(value, metadata) { + if (isNil(value) && this.options?.optional) { + return value; + } + if (!this.isEnum(value)) { + throw this.exceptionFactory("Validation failed (enum string is expected)"); + } + return this.toEnumValue(value) ?? value; + } + isEnum(value) { + return this.toEnumValue(value) !== void 0; + } + /** + * Returns the enum member that `value` refers to, or `undefined` if there is none. + * Numeric members also match their string representation (e.g. `'1'` for `1`), + * since HTTP route and query params always arrive as strings. + */ + toEnumValue(value) { + return this.getEnumValues().find((enumValue) => enumValue === value || typeof enumValue === "number" && typeof value === "string" && String(enumValue) === value); + } + getEnumValues() { + return this.cachedEnumValues ??= this.computeEnumValues(); + } + computeEnumValues() { + return Object.keys(this.enumType).filter((key) => { + const enumValue = this.enumType[key]; + return !(typeof enumValue === "string" && typeof this.enumType[enumValue] === "number" && String(this.enumType[enumValue]) === key); + }).map((key) => this.enumType[key]); + } + }; + ParseEnumPipe = __decorate([ + Injectable(), + __param(1, Optional()), + __metadata("design:paramtypes", [Object, Object]) + ], ParseEnumPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-float.pipe.js +var ParseFloatPipe; +var init_parse_float_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-float.pipe.js"() { + init_tslib_es6(); + init_core(); + init_common(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseFloatPipe = class ParseFloatPipe2 { + static { + __name(this, "ParseFloatPipe"); + } + options; + exceptionFactory; + constructor(options) { + this.options = options; + options = options || {}; + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + /** + * Method that accesses and performs optional transformation on argument for + * in-flight requests. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + async transform(value, metadata) { + if (isNil(value) && this.options?.optional) { + return value; + } + if (!this.isNumeric(value)) { + throw this.exceptionFactory("Validation failed (numeric string is expected)"); + } + return parseFloat(String(value)); + } + /** + * @param value currently processed route argument + * @returns `true` if `value` is a valid float number + */ + isNumeric(value) { + if (typeof value === "number") + return Number.isFinite(value); + if (typeof value !== "string" || value === "" || value !== value.trim()) { + return false; + } + if (value.startsWith("0x") || value.startsWith("0X") || value.startsWith("0b") || value.startsWith("0B") || value.startsWith("0o") || value.startsWith("0O")) { + return false; + } + return Number.isFinite(Number(value)); + } + }; + ParseFloatPipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseFloatPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-int.pipe.js +var ParseIntPipe; +var init_parse_int_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-int.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_optional_decorator(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseIntPipe = class ParseIntPipe2 { + static { + __name(this, "ParseIntPipe"); + } + options; + exceptionFactory; + constructor(options) { + this.options = options; + options = options || {}; + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + /** + * Method that accesses and performs optional transformation on argument for + * in-flight requests. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + async transform(value, metadata) { + if (isNil(value) && this.options?.optional) { + return value; + } + if (!this.isNumeric(value)) { + throw this.exceptionFactory("Validation failed (numeric string is expected)"); + } + return parseInt(String(value), 10); + } + /** + * @param value currently processed route argument + * @returns `true` if `value` is a valid integer number + */ + isNumeric(value) { + return ["string", "number"].includes(typeof value) && /^-?\d+$/.test(String(value)) && isFinite(value); + } + }; + ParseIntPipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseIntPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-uuid.pipe.js +var ParseUUIDPipe_1, ParseUUIDPipe; +var init_parse_uuid_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-uuid.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_optional_decorator(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_shared_utils(); + ParseUUIDPipe = class ParseUUIDPipe2 { + static { + __name(this, "ParseUUIDPipe"); + } + static { + ParseUUIDPipe_1 = this; + } + options; + static uuidRegExps = { + 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 6: /^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 8: /^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + // Versions 1-8 with the RFC variant, or the Nil and Max UUIDs (RFC 9562, sections 5.9, 5.10) + all: /^(?:[0-9A-F]{8}-[0-9A-F]{4}-[1-8][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}|00000000-0000-0000-0000-000000000000|FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF)$/i + }; + version; + exceptionFactory; + constructor(options) { + this.options = options; + options = options || {}; + const { exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST, version } = options; + this.version = version; + this.exceptionFactory = exceptionFactory || ((error) => new HttpErrorByCode[errorHttpStatusCode](error)); + } + async transform(value, metadata) { + if (isNil(value) && this.options?.optional) { + return value; + } + if (!this.isUUID(value, this.version)) { + throw this.exceptionFactory(`Validation failed (uuid${this.version && this.version !== "all" ? ` v ${this.version}` : ""} is expected)`); + } + return value; + } + isUUID(str, version = "all") { + if (!isString(str)) { + throw this.exceptionFactory("The value passed as UUID is not a string"); + } + const pattern = ParseUUIDPipe_1.uuidRegExps[version]; + return pattern?.test(str); + } + }; + ParseUUIDPipe = ParseUUIDPipe_1 = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], ParseUUIDPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/standard-schema-validation.pipe.js +var StandardSchemaValidationPipe; +var init_standard_schema_validation_pipe = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/standard-schema-validation.pipe.js"() { + init_tslib_es6(); + init_injectable_decorator(); + init_optional_decorator(); + init_http_status_enum(); + init_http_error_by_code_util(); + init_shared_utils(); + init_strip_proto_keys_util(); + StandardSchemaValidationPipe = class StandardSchemaValidationPipe2 { + static { + __name(this, "StandardSchemaValidationPipe"); + } + options; + isTransformEnabled; + validateCustomDecorators; + validateOptions; + exceptionFactory; + constructor(options) { + this.options = options; + const { transform = true, validateCustomDecorators = false, validateOptions, exceptionFactory, errorHttpStatusCode = HttpStatus.BAD_REQUEST } = options || {}; + this.isTransformEnabled = transform; + this.validateCustomDecorators = validateCustomDecorators; + this.validateOptions = validateOptions; + this.exceptionFactory = exceptionFactory || ((issues) => { + const messages = this.formatIssueMessages(issues); + return new HttpErrorByCode[errorHttpStatusCode](messages); + }); + } + /** + * Formats Standard Schema validation issues into a flat list of error messages. + * When an issue includes a path, the path is prefixed to the message. + */ + formatIssueMessages(issues) { + return issues.map((issue) => { + if (issue.path?.length) { + const stringPath = issue.path.map((segment) => String(isObject(segment) ? segment.key : segment)).join("."); + return `${stringPath}: ${issue.message}`; + } + return issue.message; + }); + } + /** + * Method that validates the incoming value against the standard schema + * provided in the parameter metadata. + * + * @param value currently processed route argument + * @param metadata contains metadata about the currently processed route argument + */ + async transform(value, metadata) { + const schema = metadata.schema; + if (!schema || !this.toValidate(metadata)) { + return value; + } + this.stripProtoKeys(value); + const result = await this.validate(value, schema, this.validateOptions); + if (result.issues) { + throw this.exceptionFactory(result.issues); + } + return this.isTransformEnabled ? result.value : value; + } + /** + * Determines whether validation should be performed for the given metadata. + * Skips validation for custom decorators unless `validateCustomDecorators` is enabled. + * + * @param metadata contains metadata about the currently processed route argument + * @returns `true` if validation should be performed + */ + toValidate(metadata) { + const { type } = metadata; + if (type === "custom" && !this.validateCustomDecorators) { + return false; + } + return true; + } + /** + * Validates a value against a standard schema. + * Can be overridden to customize validation behavior. + * + * @param value The value to validate + * @param schema The standard schema to validate against + * @param options Optional options forwarded to the schema's validate method + * @returns The validation result + */ + validate(value, schema, options) { + return schema["~standard"].validate(value, options); + } + stripProtoKeys(value) { + stripProtoKeys(value); + } + }; + StandardSchemaValidationPipe = __decorate([ + Injectable(), + __param(0, Optional()), + __metadata("design:paramtypes", [Object]) + ], StandardSchemaValidationPipe); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/index.js +var init_pipes = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/index.js"() { + init_default_value_pipe(); + init_file(); + init_parse_array_pipe(); + init_parse_bool_pipe(); + init_parse_date_pipe(); + init_parse_enum_pipe(); + init_parse_float_pipe(); + init_parse_int_pipe(); + init_parse_uuid_pipe(); + init_standard_schema_validation_pipe(); + init_validation_pipe(); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isFunction.js +var require_isFunction = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isFunction.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isFunction = void 0; + function isFunction2(value) { + return typeof value === "function"; + } + __name(isFunction2, "isFunction"); + exports.isFunction = isFunction2; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/lift.js +var require_lift = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/lift.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.operate = exports.hasLift = void 0; + var isFunction_1 = require_isFunction(); + function hasLift(source) { + return isFunction_1.isFunction(source === null || source === void 0 ? void 0 : source.lift); + } + __name(hasLift, "hasLift"); + exports.hasLift = hasLift; + function operate(init) { + return function(source) { + if (hasLift(source)) { + return source.lift(function(liftedSource) { + try { + return init(liftedSource, this); + } catch (err) { + this.error(err); + } + }); + } + throw new TypeError("Unable to lift unknown Observable type"); + }; + } + __name(operate, "operate"); + exports.operate = operate; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js +var require_isArrayLike = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isArrayLike = void 0; + exports.isArrayLike = (function(x) { + return x && typeof x.length === "number" && typeof x !== "function"; + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isPromise.js +var require_isPromise = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isPromise.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isPromise = void 0; + var isFunction_1 = require_isFunction(); + function isPromise(value) { + return isFunction_1.isFunction(value === null || value === void 0 ? void 0 : value.then); + } + __name(isPromise, "isPromise"); + exports.isPromise = isPromise; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js +var require_createErrorClass = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createErrorClass = void 0; + function createErrorClass(createImpl) { + var _super = /* @__PURE__ */ __name(function(instance) { + Error.call(instance); + instance.stack = new Error().stack; + }, "_super"); + var ctorFunc = createImpl(_super); + ctorFunc.prototype = Object.create(Error.prototype); + ctorFunc.prototype.constructor = ctorFunc; + return ctorFunc; + } + __name(createErrorClass, "createErrorClass"); + exports.createErrorClass = createErrorClass; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js +var require_UnsubscriptionError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UnsubscriptionError = void 0; + var createErrorClass_1 = require_createErrorClass(); + exports.UnsubscriptionError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function UnsubscriptionErrorImpl(errors) { + _super(this); + this.message = errors ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function(err, i) { + return i + 1 + ") " + err.toString(); + }).join("\n ") : ""; + this.name = "UnsubscriptionError"; + this.errors = errors; + }, "UnsubscriptionErrorImpl"); + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/arrRemove.js +var require_arrRemove = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/arrRemove.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.arrRemove = void 0; + function arrRemove(arr, item) { + if (arr) { + var index = arr.indexOf(item); + 0 <= index && arr.splice(index, 1); + } + } + __name(arrRemove, "arrRemove"); + exports.arrRemove = arrRemove; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Subscription.js +var require_Subscription = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Subscription.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isSubscription = exports.EMPTY_SUBSCRIPTION = exports.Subscription = void 0; + var isFunction_1 = require_isFunction(); + var UnsubscriptionError_1 = require_UnsubscriptionError(); + var arrRemove_1 = require_arrRemove(); + var Subscription = (function() { + function Subscription2(initialTeardown) { + this.initialTeardown = initialTeardown; + this.closed = false; + this._parentage = null; + this._finalizers = null; + } + __name(Subscription2, "Subscription"); + Subscription2.prototype.unsubscribe = function() { + var e_1, _a, e_2, _b; + var errors; + if (!this.closed) { + this.closed = true; + var _parentage = this._parentage; + if (_parentage) { + this._parentage = null; + if (Array.isArray(_parentage)) { + try { + for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) { + var parent_1 = _parentage_1_1.value; + parent_1.remove(this); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1); + } finally { + if (e_1) throw e_1.error; + } + } + } else { + _parentage.remove(this); + } + } + var initialFinalizer = this.initialTeardown; + if (isFunction_1.isFunction(initialFinalizer)) { + try { + initialFinalizer(); + } catch (e) { + errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? e.errors : [e]; + } + } + var _finalizers = this._finalizers; + if (_finalizers) { + this._finalizers = null; + try { + for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) { + var finalizer = _finalizers_1_1.value; + try { + execFinalizer(finalizer); + } catch (err) { + errors = errors !== null && errors !== void 0 ? errors : []; + if (err instanceof UnsubscriptionError_1.UnsubscriptionError) { + errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors)); + } else { + errors.push(err); + } + } + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1); + } finally { + if (e_2) throw e_2.error; + } + } + } + if (errors) { + throw new UnsubscriptionError_1.UnsubscriptionError(errors); + } + } + }; + Subscription2.prototype.add = function(teardown) { + var _a; + if (teardown && teardown !== this) { + if (this.closed) { + execFinalizer(teardown); + } else { + if (teardown instanceof Subscription2) { + if (teardown.closed || teardown._hasParent(this)) { + return; + } + teardown._addParent(this); + } + (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); + } + } + }; + Subscription2.prototype._hasParent = function(parent) { + var _parentage = this._parentage; + return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent); + }; + Subscription2.prototype._addParent = function(parent) { + var _parentage = this._parentage; + this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; + }; + Subscription2.prototype._removeParent = function(parent) { + var _parentage = this._parentage; + if (_parentage === parent) { + this._parentage = null; + } else if (Array.isArray(_parentage)) { + arrRemove_1.arrRemove(_parentage, parent); + } + }; + Subscription2.prototype.remove = function(teardown) { + var _finalizers = this._finalizers; + _finalizers && arrRemove_1.arrRemove(_finalizers, teardown); + if (teardown instanceof Subscription2) { + teardown._removeParent(this); + } + }; + Subscription2.EMPTY = (function() { + var empty = new Subscription2(); + empty.closed = true; + return empty; + })(); + return Subscription2; + })(); + exports.Subscription = Subscription; + exports.EMPTY_SUBSCRIPTION = Subscription.EMPTY; + function isSubscription(value) { + return value instanceof Subscription || value && "closed" in value && isFunction_1.isFunction(value.remove) && isFunction_1.isFunction(value.add) && isFunction_1.isFunction(value.unsubscribe); + } + __name(isSubscription, "isSubscription"); + exports.isSubscription = isSubscription; + function execFinalizer(finalizer) { + if (isFunction_1.isFunction(finalizer)) { + finalizer(); + } else { + finalizer.unsubscribe(); + } + } + __name(execFinalizer, "execFinalizer"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/config.js +var require_config = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/config.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.config = void 0; + exports.config = { + onUnhandledError: null, + onStoppedNotification: null, + Promise: void 0, + useDeprecatedSynchronousErrorHandling: false, + useDeprecatedNextContext: false + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js +var require_timeoutProvider = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.timeoutProvider = void 0; + exports.timeoutProvider = { + setTimeout: /* @__PURE__ */ __name(function(handler, timeout) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var delegate = exports.timeoutProvider.delegate; + if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { + return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args))); + } + return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args))); + }, "setTimeout"), + clearTimeout: /* @__PURE__ */ __name(function(handle) { + var delegate = exports.timeoutProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); + }, "clearTimeout"), + delegate: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js +var require_reportUnhandledError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.reportUnhandledError = void 0; + var config_1 = require_config(); + var timeoutProvider_1 = require_timeoutProvider(); + function reportUnhandledError(err) { + timeoutProvider_1.timeoutProvider.setTimeout(function() { + var onUnhandledError = config_1.config.onUnhandledError; + if (onUnhandledError) { + onUnhandledError(err); + } else { + throw err; + } + }); + } + __name(reportUnhandledError, "reportUnhandledError"); + exports.reportUnhandledError = reportUnhandledError; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/noop.js +var require_noop = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/noop.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.noop = void 0; + function noop() { + } + __name(noop, "noop"); + exports.noop = noop; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/NotificationFactories.js +var require_NotificationFactories = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/NotificationFactories.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createNotification = exports.nextNotification = exports.errorNotification = exports.COMPLETE_NOTIFICATION = void 0; + exports.COMPLETE_NOTIFICATION = (function() { + return createNotification("C", void 0, void 0); + })(); + function errorNotification(error) { + return createNotification("E", void 0, error); + } + __name(errorNotification, "errorNotification"); + exports.errorNotification = errorNotification; + function nextNotification(value) { + return createNotification("N", value, void 0); + } + __name(nextNotification, "nextNotification"); + exports.nextNotification = nextNotification; + function createNotification(kind, value, error) { + return { + kind, + value, + error + }; + } + __name(createNotification, "createNotification"); + exports.createNotification = createNotification; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/errorContext.js +var require_errorContext = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/errorContext.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.captureError = exports.errorContext = void 0; + var config_1 = require_config(); + var context = null; + function errorContext(cb) { + if (config_1.config.useDeprecatedSynchronousErrorHandling) { + var isRoot = !context; + if (isRoot) { + context = { errorThrown: false, error: null }; + } + cb(); + if (isRoot) { + var _a = context, errorThrown = _a.errorThrown, error = _a.error; + context = null; + if (errorThrown) { + throw error; + } + } + } else { + cb(); + } + } + __name(errorContext, "errorContext"); + exports.errorContext = errorContext; + function captureError(err) { + if (config_1.config.useDeprecatedSynchronousErrorHandling && context) { + context.errorThrown = true; + context.error = err; + } + } + __name(captureError, "captureError"); + exports.captureError = captureError; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Subscriber.js +var require_Subscriber = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Subscriber.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EMPTY_OBSERVER = exports.SafeSubscriber = exports.Subscriber = void 0; + var isFunction_1 = require_isFunction(); + var Subscription_1 = require_Subscription(); + var config_1 = require_config(); + var reportUnhandledError_1 = require_reportUnhandledError(); + var noop_1 = require_noop(); + var NotificationFactories_1 = require_NotificationFactories(); + var timeoutProvider_1 = require_timeoutProvider(); + var errorContext_1 = require_errorContext(); + var Subscriber = (function(_super) { + __extends(Subscriber2, _super); + function Subscriber2(destination) { + var _this = _super.call(this) || this; + _this.isStopped = false; + if (destination) { + _this.destination = destination; + if (Subscription_1.isSubscription(destination)) { + destination.add(_this); + } + } else { + _this.destination = exports.EMPTY_OBSERVER; + } + return _this; + } + __name(Subscriber2, "Subscriber"); + Subscriber2.create = function(next, error, complete) { + return new SafeSubscriber(next, error, complete); + }; + Subscriber2.prototype.next = function(value) { + if (this.isStopped) { + handleStoppedNotification(NotificationFactories_1.nextNotification(value), this); + } else { + this._next(value); + } + }; + Subscriber2.prototype.error = function(err) { + if (this.isStopped) { + handleStoppedNotification(NotificationFactories_1.errorNotification(err), this); + } else { + this.isStopped = true; + this._error(err); + } + }; + Subscriber2.prototype.complete = function() { + if (this.isStopped) { + handleStoppedNotification(NotificationFactories_1.COMPLETE_NOTIFICATION, this); + } else { + this.isStopped = true; + this._complete(); + } + }; + Subscriber2.prototype.unsubscribe = function() { + if (!this.closed) { + this.isStopped = true; + _super.prototype.unsubscribe.call(this); + this.destination = null; + } + }; + Subscriber2.prototype._next = function(value) { + this.destination.next(value); + }; + Subscriber2.prototype._error = function(err) { + try { + this.destination.error(err); + } finally { + this.unsubscribe(); + } + }; + Subscriber2.prototype._complete = function() { + try { + this.destination.complete(); + } finally { + this.unsubscribe(); + } + }; + return Subscriber2; + })(Subscription_1.Subscription); + exports.Subscriber = Subscriber; + var _bind = Function.prototype.bind; + function bind(fn, thisArg) { + return _bind.call(fn, thisArg); + } + __name(bind, "bind"); + var ConsumerObserver = (function() { + function ConsumerObserver2(partialObserver) { + this.partialObserver = partialObserver; + } + __name(ConsumerObserver2, "ConsumerObserver"); + ConsumerObserver2.prototype.next = function(value) { + var partialObserver = this.partialObserver; + if (partialObserver.next) { + try { + partialObserver.next(value); + } catch (error) { + handleUnhandledError(error); + } + } + }; + ConsumerObserver2.prototype.error = function(err) { + var partialObserver = this.partialObserver; + if (partialObserver.error) { + try { + partialObserver.error(err); + } catch (error) { + handleUnhandledError(error); + } + } else { + handleUnhandledError(err); + } + }; + ConsumerObserver2.prototype.complete = function() { + var partialObserver = this.partialObserver; + if (partialObserver.complete) { + try { + partialObserver.complete(); + } catch (error) { + handleUnhandledError(error); + } + } + }; + return ConsumerObserver2; + })(); + var SafeSubscriber = (function(_super) { + __extends(SafeSubscriber2, _super); + function SafeSubscriber2(observerOrNext, error, complete) { + var _this = _super.call(this) || this; + var partialObserver; + if (isFunction_1.isFunction(observerOrNext) || !observerOrNext) { + partialObserver = { + next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0, + error: error !== null && error !== void 0 ? error : void 0, + complete: complete !== null && complete !== void 0 ? complete : void 0 + }; + } else { + var context_1; + if (_this && config_1.config.useDeprecatedNextContext) { + context_1 = Object.create(observerOrNext); + context_1.unsubscribe = function() { + return _this.unsubscribe(); + }; + partialObserver = { + next: observerOrNext.next && bind(observerOrNext.next, context_1), + error: observerOrNext.error && bind(observerOrNext.error, context_1), + complete: observerOrNext.complete && bind(observerOrNext.complete, context_1) + }; + } else { + partialObserver = observerOrNext; + } + } + _this.destination = new ConsumerObserver(partialObserver); + return _this; + } + __name(SafeSubscriber2, "SafeSubscriber"); + return SafeSubscriber2; + })(Subscriber); + exports.SafeSubscriber = SafeSubscriber; + function handleUnhandledError(error) { + if (config_1.config.useDeprecatedSynchronousErrorHandling) { + errorContext_1.captureError(error); + } else { + reportUnhandledError_1.reportUnhandledError(error); + } + } + __name(handleUnhandledError, "handleUnhandledError"); + function defaultErrorHandler(err) { + throw err; + } + __name(defaultErrorHandler, "defaultErrorHandler"); + function handleStoppedNotification(notification, subscriber) { + var onStoppedNotification = config_1.config.onStoppedNotification; + onStoppedNotification && timeoutProvider_1.timeoutProvider.setTimeout(function() { + return onStoppedNotification(notification, subscriber); + }); + } + __name(handleStoppedNotification, "handleStoppedNotification"); + exports.EMPTY_OBSERVER = { + closed: true, + next: noop_1.noop, + error: defaultErrorHandler, + complete: noop_1.noop + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/symbol/observable.js +var require_observable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/symbol/observable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.observable = void 0; + exports.observable = (function() { + return typeof Symbol === "function" && Symbol.observable || "@@observable"; + })(); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/identity.js +var require_identity = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/identity.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.identity = void 0; + function identity(x) { + return x; + } + __name(identity, "identity"); + exports.identity = identity; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/pipe.js +var require_pipe = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/pipe.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.pipeFromArray = exports.pipe = void 0; + var identity_1 = require_identity(); + function pipe() { + var fns = []; + for (var _i = 0; _i < arguments.length; _i++) { + fns[_i] = arguments[_i]; + } + return pipeFromArray(fns); + } + __name(pipe, "pipe"); + exports.pipe = pipe; + function pipeFromArray(fns) { + if (fns.length === 0) { + return identity_1.identity; + } + if (fns.length === 1) { + return fns[0]; + } + return /* @__PURE__ */ __name(function piped(input) { + return fns.reduce(function(prev, fn) { + return fn(prev); + }, input); + }, "piped"); + } + __name(pipeFromArray, "pipeFromArray"); + exports.pipeFromArray = pipeFromArray; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Observable.js +var require_Observable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Observable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Observable = void 0; + var Subscriber_1 = require_Subscriber(); + var Subscription_1 = require_Subscription(); + var observable_1 = require_observable(); + var pipe_1 = require_pipe(); + var config_1 = require_config(); + var isFunction_1 = require_isFunction(); + var errorContext_1 = require_errorContext(); + var Observable = (function() { + function Observable2(subscribe) { + if (subscribe) { + this._subscribe = subscribe; + } + } + __name(Observable2, "Observable"); + Observable2.prototype.lift = function(operator) { + var observable = new Observable2(); + observable.source = this; + observable.operator = operator; + return observable; + }; + Observable2.prototype.subscribe = function(observerOrNext, error, complete) { + var _this = this; + var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new Subscriber_1.SafeSubscriber(observerOrNext, error, complete); + errorContext_1.errorContext(function() { + var _a = _this, operator = _a.operator, source = _a.source; + subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber)); + }); + return subscriber; + }; + Observable2.prototype._trySubscribe = function(sink) { + try { + return this._subscribe(sink); + } catch (err) { + sink.error(err); + } + }; + Observable2.prototype.forEach = function(next, promiseCtor) { + var _this = this; + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor(function(resolve, reject) { + var subscriber = new Subscriber_1.SafeSubscriber({ + next: /* @__PURE__ */ __name(function(value) { + try { + next(value); + } catch (err) { + reject(err); + subscriber.unsubscribe(); + } + }, "next"), + error: reject, + complete: resolve + }); + _this.subscribe(subscriber); + }); + }; + Observable2.prototype._subscribe = function(subscriber) { + var _a; + return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); + }; + Observable2.prototype[observable_1.observable] = function() { + return this; + }; + Observable2.prototype.pipe = function() { + var operations = []; + for (var _i = 0; _i < arguments.length; _i++) { + operations[_i] = arguments[_i]; + } + return pipe_1.pipeFromArray(operations)(this); + }; + Observable2.prototype.toPromise = function(promiseCtor) { + var _this = this; + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor(function(resolve, reject) { + var value; + _this.subscribe(function(x) { + return value = x; + }, function(err) { + return reject(err); + }, function() { + return resolve(value); + }); + }); + }; + Observable2.create = function(subscribe) { + return new Observable2(subscribe); + }; + return Observable2; + })(); + exports.Observable = Observable; + function getPromiseCtor(promiseCtor) { + var _a; + return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config_1.config.Promise) !== null && _a !== void 0 ? _a : Promise; + } + __name(getPromiseCtor, "getPromiseCtor"); + function isObserver(value) { + return value && isFunction_1.isFunction(value.next) && isFunction_1.isFunction(value.error) && isFunction_1.isFunction(value.complete); + } + __name(isObserver, "isObserver"); + function isSubscriber(value) { + return value && value instanceof Subscriber_1.Subscriber || isObserver(value) && Subscription_1.isSubscription(value); + } + __name(isSubscriber, "isSubscriber"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js +var require_isInteropObservable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isInteropObservable = void 0; + var observable_1 = require_observable(); + var isFunction_1 = require_isFunction(); + function isInteropObservable(input) { + return isFunction_1.isFunction(input[observable_1.observable]); + } + __name(isInteropObservable, "isInteropObservable"); + exports.isInteropObservable = isInteropObservable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js +var require_isAsyncIterable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isAsyncIterable = void 0; + var isFunction_1 = require_isFunction(); + function isAsyncIterable(obj) { + return Symbol.asyncIterator && isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); + } + __name(isAsyncIterable, "isAsyncIterable"); + exports.isAsyncIterable = isAsyncIterable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js +var require_throwUnobservableError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createInvalidObservableTypeError = void 0; + function createInvalidObservableTypeError(input) { + return new TypeError("You provided " + (input !== null && typeof input === "object" ? "an invalid object" : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable."); + } + __name(createInvalidObservableTypeError, "createInvalidObservableTypeError"); + exports.createInvalidObservableTypeError = createInvalidObservableTypeError; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/symbol/iterator.js +var require_iterator = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/symbol/iterator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.iterator = exports.getSymbolIterator = void 0; + function getSymbolIterator() { + if (typeof Symbol !== "function" || !Symbol.iterator) { + return "@@iterator"; + } + return Symbol.iterator; + } + __name(getSymbolIterator, "getSymbolIterator"); + exports.getSymbolIterator = getSymbolIterator; + exports.iterator = getSymbolIterator(); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isIterable.js +var require_isIterable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isIterable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isIterable = void 0; + var iterator_1 = require_iterator(); + var isFunction_1 = require_isFunction(); + function isIterable(input) { + return isFunction_1.isFunction(input === null || input === void 0 ? void 0 : input[iterator_1.iterator]); + } + __name(isIterable, "isIterable"); + exports.isIterable = isIterable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js +var require_isReadableStreamLike = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js"(exports) { + "use strict"; + var __generator = exports && exports.__generator || function(thisArg, body) { + var _ = { label: 0, sent: /* @__PURE__ */ __name(function() { + if (t[0] & 1) throw t[1]; + return t[1]; + }, "sent"), trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + __name(verb, "verb"); + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + __name(step, "step"); + }; + var __await = exports && exports.__await || function(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + var __asyncGenerator = exports && exports.__asyncGenerator || function(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function verb(n) { + if (g[n]) i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + __name(verb, "verb"); + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + __name(resume, "resume"); + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + __name(step, "step"); + function fulfill(value) { + resume("next", value); + } + __name(fulfill, "fulfill"); + function reject(value) { + resume("throw", value); + } + __name(reject, "reject"); + function settle(f, v) { + if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); + } + __name(settle, "settle"); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isReadableStreamLike = exports.readableStreamLikeToAsyncGenerator = void 0; + var isFunction_1 = require_isFunction(); + function readableStreamLikeToAsyncGenerator(readableStream) { + return __asyncGenerator(this, arguments, /* @__PURE__ */ __name(function readableStreamLikeToAsyncGenerator_1() { + var reader, _a, value, done; + return __generator(this, function(_b) { + switch (_b.label) { + case 0: + reader = readableStream.getReader(); + _b.label = 1; + case 1: + _b.trys.push([1, , 9, 10]); + _b.label = 2; + case 2: + if (false) return [3, 8]; + return [4, __await(reader.read())]; + case 3: + _a = _b.sent(), value = _a.value, done = _a.done; + if (!done) return [3, 5]; + return [4, __await(void 0)]; + case 4: + return [2, _b.sent()]; + case 5: + return [4, __await(value)]; + case 6: + return [4, _b.sent()]; + case 7: + _b.sent(); + return [3, 2]; + case 8: + return [3, 10]; + case 9: + reader.releaseLock(); + return [7]; + case 10: + return [2]; + } + }); + }, "readableStreamLikeToAsyncGenerator_1")); + } + __name(readableStreamLikeToAsyncGenerator, "readableStreamLikeToAsyncGenerator"); + exports.readableStreamLikeToAsyncGenerator = readableStreamLikeToAsyncGenerator; + function isReadableStreamLike(obj) { + return isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader); + } + __name(isReadableStreamLike, "isReadableStreamLike"); + exports.isReadableStreamLike = isReadableStreamLike; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js +var require_innerFrom = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js"(exports) { + "use strict"; + var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + __name(adopt, "adopt"); + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + __name(fulfilled, "fulfilled"); + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + __name(rejected, "rejected"); + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + __name(step, "step"); + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator = exports && exports.__generator || function(thisArg, body) { + var _ = { label: 0, sent: /* @__PURE__ */ __name(function() { + if (t[0] & 1) throw t[1]; + return t[1]; + }, "sent"), trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + __name(verb, "verb"); + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + __name(step, "step"); + }; + var __asyncValues = exports && exports.__asyncValues || function(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i); + function verb(n) { + i[n] = o[n] && function(v) { + return new Promise(function(resolve, reject) { + v = o[n](v), settle(resolve, reject, v.done, v.value); + }); + }; + } + __name(verb, "verb"); + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } + __name(settle, "settle"); + }; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromReadableStreamLike = exports.fromAsyncIterable = exports.fromIterable = exports.fromPromise = exports.fromArrayLike = exports.fromInteropObservable = exports.innerFrom = void 0; + var isArrayLike_1 = require_isArrayLike(); + var isPromise_1 = require_isPromise(); + var Observable_1 = require_Observable(); + var isInteropObservable_1 = require_isInteropObservable(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var throwUnobservableError_1 = require_throwUnobservableError(); + var isIterable_1 = require_isIterable(); + var isReadableStreamLike_1 = require_isReadableStreamLike(); + var isFunction_1 = require_isFunction(); + var reportUnhandledError_1 = require_reportUnhandledError(); + var observable_1 = require_observable(); + function innerFrom(input) { + if (input instanceof Observable_1.Observable) { + return input; + } + if (input != null) { + if (isInteropObservable_1.isInteropObservable(input)) { + return fromInteropObservable(input); + } + if (isArrayLike_1.isArrayLike(input)) { + return fromArrayLike(input); + } + if (isPromise_1.isPromise(input)) { + return fromPromise(input); + } + if (isAsyncIterable_1.isAsyncIterable(input)) { + return fromAsyncIterable(input); + } + if (isIterable_1.isIterable(input)) { + return fromIterable(input); + } + if (isReadableStreamLike_1.isReadableStreamLike(input)) { + return fromReadableStreamLike(input); + } + } + throw throwUnobservableError_1.createInvalidObservableTypeError(input); + } + __name(innerFrom, "innerFrom"); + exports.innerFrom = innerFrom; + function fromInteropObservable(obj) { + return new Observable_1.Observable(function(subscriber) { + var obs = obj[observable_1.observable](); + if (isFunction_1.isFunction(obs.subscribe)) { + return obs.subscribe(subscriber); + } + throw new TypeError("Provided object does not correctly implement Symbol.observable"); + }); + } + __name(fromInteropObservable, "fromInteropObservable"); + exports.fromInteropObservable = fromInteropObservable; + function fromArrayLike(array) { + return new Observable_1.Observable(function(subscriber) { + for (var i = 0; i < array.length && !subscriber.closed; i++) { + subscriber.next(array[i]); + } + subscriber.complete(); + }); + } + __name(fromArrayLike, "fromArrayLike"); + exports.fromArrayLike = fromArrayLike; + function fromPromise(promise) { + return new Observable_1.Observable(function(subscriber) { + promise.then(function(value) { + if (!subscriber.closed) { + subscriber.next(value); + subscriber.complete(); + } + }, function(err) { + return subscriber.error(err); + }).then(null, reportUnhandledError_1.reportUnhandledError); + }); + } + __name(fromPromise, "fromPromise"); + exports.fromPromise = fromPromise; + function fromIterable(iterable) { + return new Observable_1.Observable(function(subscriber) { + var e_1, _a; + try { + for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) { + var value = iterable_1_1.value; + subscriber.next(value); + if (subscriber.closed) { + return; + } + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1); + } finally { + if (e_1) throw e_1.error; + } + } + subscriber.complete(); + }); + } + __name(fromIterable, "fromIterable"); + exports.fromIterable = fromIterable; + function fromAsyncIterable(asyncIterable) { + return new Observable_1.Observable(function(subscriber) { + process2(asyncIterable, subscriber).catch(function(err) { + return subscriber.error(err); + }); + }); + } + __name(fromAsyncIterable, "fromAsyncIterable"); + exports.fromAsyncIterable = fromAsyncIterable; + function fromReadableStreamLike(readableStream) { + return fromAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(readableStream)); + } + __name(fromReadableStreamLike, "fromReadableStreamLike"); + exports.fromReadableStreamLike = fromReadableStreamLike; + function process2(asyncIterable, subscriber) { + var asyncIterable_1, asyncIterable_1_1; + var e_2, _a; + return __awaiter(this, void 0, void 0, function() { + var value, e_2_1; + return __generator(this, function(_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 11]); + asyncIterable_1 = __asyncValues(asyncIterable); + _b.label = 1; + case 1: + return [4, asyncIterable_1.next()]; + case 2: + if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4]; + value = asyncIterable_1_1.value; + subscriber.next(value); + if (subscriber.closed) { + return [2]; + } + _b.label = 3; + case 3: + return [3, 1]; + case 4: + return [3, 11]; + case 5: + e_2_1 = _b.sent(); + e_2 = { error: e_2_1 }; + return [3, 11]; + case 6: + _b.trys.push([6, , 9, 10]); + if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8]; + return [4, _a.call(asyncIterable_1)]; + case 7: + _b.sent(); + _b.label = 8; + case 8: + return [3, 10]; + case 9: + if (e_2) throw e_2.error; + return [7]; + case 10: + return [7]; + case 11: + subscriber.complete(); + return [2]; + } + }); + }); + } + __name(process2, "process"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js +var require_OperatorSubscriber = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.OperatorSubscriber = exports.createOperatorSubscriber = void 0; + var Subscriber_1 = require_Subscriber(); + function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { + return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); + } + __name(createOperatorSubscriber, "createOperatorSubscriber"); + exports.createOperatorSubscriber = createOperatorSubscriber; + var OperatorSubscriber = (function(_super) { + __extends(OperatorSubscriber2, _super); + function OperatorSubscriber2(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { + var _this = _super.call(this, destination) || this; + _this.onFinalize = onFinalize; + _this.shouldUnsubscribe = shouldUnsubscribe; + _this._next = onNext ? function(value) { + try { + onNext(value); + } catch (err) { + destination.error(err); + } + } : _super.prototype._next; + _this._error = onError ? function(err) { + try { + onError(err); + } catch (err2) { + destination.error(err2); + } finally { + this.unsubscribe(); + } + } : _super.prototype._error; + _this._complete = onComplete ? function() { + try { + onComplete(); + } catch (err) { + destination.error(err); + } finally { + this.unsubscribe(); + } + } : _super.prototype._complete; + return _this; + } + __name(OperatorSubscriber2, "OperatorSubscriber"); + OperatorSubscriber2.prototype.unsubscribe = function() { + var _a; + if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { + var closed_1 = this.closed; + _super.prototype.unsubscribe.call(this); + !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); + } + }; + return OperatorSubscriber2; + })(Subscriber_1.Subscriber); + exports.OperatorSubscriber = OperatorSubscriber; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/audit.js +var require_audit = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/audit.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.audit = void 0; + var lift_1 = require_lift(); + var innerFrom_1 = require_innerFrom(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function audit(durationSelector) { + return lift_1.operate(function(source, subscriber) { + var hasValue = false; + var lastValue = null; + var durationSubscriber = null; + var isComplete = false; + var endDuration = /* @__PURE__ */ __name(function() { + durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); + durationSubscriber = null; + if (hasValue) { + hasValue = false; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + isComplete && subscriber.complete(); + }, "endDuration"); + var cleanupDuration = /* @__PURE__ */ __name(function() { + durationSubscriber = null; + isComplete && subscriber.complete(); + }, "cleanupDuration"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + hasValue = true; + lastValue = value; + if (!durationSubscriber) { + innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration)); + } + }, function() { + isComplete = true; + (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete(); + })); + }); + } + __name(audit, "audit"); + exports.audit = audit; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/Action.js +var require_Action = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/Action.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Action = void 0; + var Subscription_1 = require_Subscription(); + var Action = (function(_super) { + __extends(Action2, _super); + function Action2(scheduler, work) { + return _super.call(this) || this; + } + __name(Action2, "Action"); + Action2.prototype.schedule = function(state, delay) { + if (delay === void 0) { + delay = 0; + } + return this; + }; + return Action2; + })(Subscription_1.Subscription); + exports.Action = Action; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js +var require_intervalProvider = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.intervalProvider = void 0; + exports.intervalProvider = { + setInterval: /* @__PURE__ */ __name(function(handler, timeout) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var delegate = exports.intervalProvider.delegate; + if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { + return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args))); + } + return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args))); + }, "setInterval"), + clearInterval: /* @__PURE__ */ __name(function(handle) { + var delegate = exports.intervalProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); + }, "clearInterval"), + delegate: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js +var require_AsyncAction = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsyncAction = void 0; + var Action_1 = require_Action(); + var intervalProvider_1 = require_intervalProvider(); + var arrRemove_1 = require_arrRemove(); + var AsyncAction = (function(_super) { + __extends(AsyncAction2, _super); + function AsyncAction2(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.pending = false; + return _this; + } + __name(AsyncAction2, "AsyncAction"); + AsyncAction2.prototype.schedule = function(state, delay) { + var _a; + if (delay === void 0) { + delay = 0; + } + if (this.closed) { + return this; + } + this.state = state; + var id = this.id; + var scheduler = this.scheduler; + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.pending = true; + this.delay = delay; + this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay); + return this; + }; + AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay) { + if (delay === void 0) { + delay = 0; + } + return intervalProvider_1.intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay); + }; + AsyncAction2.prototype.recycleAsyncId = function(_scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay != null && this.delay === delay && this.pending === false) { + return id; + } + if (id != null) { + intervalProvider_1.intervalProvider.clearInterval(id); + } + return void 0; + }; + AsyncAction2.prototype.execute = function(state, delay) { + if (this.closed) { + return new Error("executing a cancelled action"); + } + this.pending = false; + var error = this._execute(state, delay); + if (error) { + return error; + } else if (this.pending === false && this.id != null) { + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + }; + AsyncAction2.prototype._execute = function(state, _delay) { + var errored = false; + var errorValue; + try { + this.work(state); + } catch (e) { + errored = true; + errorValue = e ? e : new Error("Scheduled action threw falsy error"); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + }; + AsyncAction2.prototype.unsubscribe = function() { + if (!this.closed) { + var _a = this, id = _a.id, scheduler = _a.scheduler; + var actions = scheduler.actions; + this.work = this.state = this.scheduler = null; + this.pending = false; + arrRemove_1.arrRemove(actions, this); + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + _super.prototype.unsubscribe.call(this); + } + }; + return AsyncAction2; + })(Action_1.Action); + exports.AsyncAction = AsyncAction; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js +var require_dateTimestampProvider = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.dateTimestampProvider = void 0; + exports.dateTimestampProvider = { + now: /* @__PURE__ */ __name(function() { + return (exports.dateTimestampProvider.delegate || Date).now(); + }, "now"), + delegate: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Scheduler.js +var require_Scheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Scheduler.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Scheduler = void 0; + var dateTimestampProvider_1 = require_dateTimestampProvider(); + var Scheduler = (function() { + function Scheduler2(schedulerActionCtor, now) { + if (now === void 0) { + now = Scheduler2.now; + } + this.schedulerActionCtor = schedulerActionCtor; + this.now = now; + } + __name(Scheduler2, "Scheduler"); + Scheduler2.prototype.schedule = function(work, delay, state) { + if (delay === void 0) { + delay = 0; + } + return new this.schedulerActionCtor(this, work).schedule(state, delay); + }; + Scheduler2.now = dateTimestampProvider_1.dateTimestampProvider.now; + return Scheduler2; + })(); + exports.Scheduler = Scheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js +var require_AsyncScheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsyncScheduler = void 0; + var Scheduler_1 = require_Scheduler(); + var AsyncScheduler = (function(_super) { + __extends(AsyncScheduler2, _super); + function AsyncScheduler2(SchedulerAction, now) { + if (now === void 0) { + now = Scheduler_1.Scheduler.now; + } + var _this = _super.call(this, SchedulerAction, now) || this; + _this.actions = []; + _this._active = false; + return _this; + } + __name(AsyncScheduler2, "AsyncScheduler"); + AsyncScheduler2.prototype.flush = function(action) { + var actions = this.actions; + if (this._active) { + actions.push(action); + return; + } + var error; + this._active = true; + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (action = actions.shift()); + this._active = false; + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AsyncScheduler2; + })(Scheduler_1.Scheduler); + exports.AsyncScheduler = AsyncScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/async.js +var require_async = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/async.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.async = exports.asyncScheduler = void 0; + var AsyncAction_1 = require_AsyncAction(); + var AsyncScheduler_1 = require_AsyncScheduler(); + exports.asyncScheduler = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction); + exports.async = exports.asyncScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isScheduler.js +var require_isScheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isScheduler.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isScheduler = void 0; + var isFunction_1 = require_isFunction(); + function isScheduler(value) { + return value && isFunction_1.isFunction(value.schedule); + } + __name(isScheduler, "isScheduler"); + exports.isScheduler = isScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isDate.js +var require_isDate = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isDate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isValidDate = void 0; + function isValidDate(value) { + return value instanceof Date && !isNaN(value); + } + __name(isValidDate, "isValidDate"); + exports.isValidDate = isValidDate; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/timer.js +var require_timer = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/timer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.timer = void 0; + var Observable_1 = require_Observable(); + var async_1 = require_async(); + var isScheduler_1 = require_isScheduler(); + var isDate_1 = require_isDate(); + function timer(dueTime, intervalOrScheduler, scheduler) { + if (dueTime === void 0) { + dueTime = 0; + } + if (scheduler === void 0) { + scheduler = async_1.async; + } + var intervalDuration = -1; + if (intervalOrScheduler != null) { + if (isScheduler_1.isScheduler(intervalOrScheduler)) { + scheduler = intervalOrScheduler; + } else { + intervalDuration = intervalOrScheduler; + } + } + return new Observable_1.Observable(function(subscriber) { + var due = isDate_1.isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime; + if (due < 0) { + due = 0; + } + var n = 0; + return scheduler.schedule(function() { + if (!subscriber.closed) { + subscriber.next(n++); + if (0 <= intervalDuration) { + this.schedule(void 0, intervalDuration); + } else { + subscriber.complete(); + } + } + }, due); + }); + } + __name(timer, "timer"); + exports.timer = timer; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/auditTime.js +var require_auditTime = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/auditTime.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.auditTime = void 0; + var async_1 = require_async(); + var audit_1 = require_audit(); + var timer_1 = require_timer(); + function auditTime(duration, scheduler) { + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + return audit_1.audit(function() { + return timer_1.timer(duration, scheduler); + }); + } + __name(auditTime, "auditTime"); + exports.auditTime = auditTime; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/buffer.js +var require_buffer = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/buffer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.buffer = void 0; + var lift_1 = require_lift(); + var noop_1 = require_noop(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + function buffer(closingNotifier) { + return lift_1.operate(function(source, subscriber) { + var currentBuffer = []; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return currentBuffer.push(value); + }, function() { + subscriber.next(currentBuffer); + subscriber.complete(); + })); + innerFrom_1.innerFrom(closingNotifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + var b = currentBuffer; + currentBuffer = []; + subscriber.next(b); + }, noop_1.noop)); + return function() { + currentBuffer = null; + }; + }); + } + __name(buffer, "buffer"); + exports.buffer = buffer; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js +var require_bufferCount = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bufferCount = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var arrRemove_1 = require_arrRemove(); + function bufferCount(bufferSize, startBufferEvery) { + if (startBufferEvery === void 0) { + startBufferEvery = null; + } + startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize; + return lift_1.operate(function(source, subscriber) { + var buffers = []; + var count = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var e_1, _a, e_2, _b; + var toEmit = null; + if (count++ % startBufferEvery === 0) { + buffers.push([]); + } + try { + for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) { + var buffer = buffers_1_1.value; + buffer.push(value); + if (bufferSize <= buffer.length) { + toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : []; + toEmit.push(buffer); + } + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1); + } finally { + if (e_1) throw e_1.error; + } + } + if (toEmit) { + try { + for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) { + var buffer = toEmit_1_1.value; + arrRemove_1.arrRemove(buffers, buffer); + subscriber.next(buffer); + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1); + } finally { + if (e_2) throw e_2.error; + } + } + } + }, function() { + var e_3, _a; + try { + for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) { + var buffer = buffers_2_1.value; + subscriber.next(buffer); + } + } catch (e_3_1) { + e_3 = { error: e_3_1 }; + } finally { + try { + if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2); + } finally { + if (e_3) throw e_3.error; + } + } + subscriber.complete(); + }, void 0, function() { + buffers = null; + })); + }); + } + __name(bufferCount, "bufferCount"); + exports.bufferCount = bufferCount; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/args.js +var require_args = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/args.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.popNumber = exports.popScheduler = exports.popResultSelector = void 0; + var isFunction_1 = require_isFunction(); + var isScheduler_1 = require_isScheduler(); + function last(arr) { + return arr[arr.length - 1]; + } + __name(last, "last"); + function popResultSelector(args) { + return isFunction_1.isFunction(last(args)) ? args.pop() : void 0; + } + __name(popResultSelector, "popResultSelector"); + exports.popResultSelector = popResultSelector; + function popScheduler(args) { + return isScheduler_1.isScheduler(last(args)) ? args.pop() : void 0; + } + __name(popScheduler, "popScheduler"); + exports.popScheduler = popScheduler; + function popNumber(args, defaultValue) { + return typeof last(args) === "number" ? args.pop() : defaultValue; + } + __name(popNumber, "popNumber"); + exports.popNumber = popNumber; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js +var require_executeSchedule = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.executeSchedule = void 0; + function executeSchedule(parentSubscription, scheduler, work, delay, repeat) { + if (delay === void 0) { + delay = 0; + } + if (repeat === void 0) { + repeat = false; + } + var scheduleSubscription = scheduler.schedule(function() { + work(); + if (repeat) { + parentSubscription.add(this.schedule(null, delay)); + } else { + this.unsubscribe(); + } + }, delay); + parentSubscription.add(scheduleSubscription); + if (!repeat) { + return scheduleSubscription; + } + } + __name(executeSchedule, "executeSchedule"); + exports.executeSchedule = executeSchedule; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js +var require_bufferTime = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bufferTime = void 0; + var Subscription_1 = require_Subscription(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var arrRemove_1 = require_arrRemove(); + var async_1 = require_async(); + var args_1 = require_args(); + var executeSchedule_1 = require_executeSchedule(); + function bufferTime(bufferTimeSpan) { + var _a, _b; + var otherArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + otherArgs[_i - 1] = arguments[_i]; + } + var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler; + var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; + var maxBufferSize = otherArgs[1] || Infinity; + return lift_1.operate(function(source, subscriber) { + var bufferRecords = []; + var restartOnEmit = false; + var emit = /* @__PURE__ */ __name(function(record) { + var buffer = record.buffer, subs = record.subs; + subs.unsubscribe(); + arrRemove_1.arrRemove(bufferRecords, record); + subscriber.next(buffer); + restartOnEmit && startBuffer(); + }, "emit"); + var startBuffer = /* @__PURE__ */ __name(function() { + if (bufferRecords) { + var subs = new Subscription_1.Subscription(); + subscriber.add(subs); + var buffer = []; + var record_1 = { + buffer, + subs + }; + bufferRecords.push(record_1); + executeSchedule_1.executeSchedule(subs, scheduler, function() { + return emit(record_1); + }, bufferTimeSpan); + } + }, "startBuffer"); + if (bufferCreationInterval !== null && bufferCreationInterval >= 0) { + executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true); + } else { + restartOnEmit = true; + } + startBuffer(); + var bufferTimeSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var e_1, _a2; + var recordsCopy = bufferRecords.slice(); + try { + for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) { + var record = recordsCopy_1_1.value; + var buffer = record.buffer; + buffer.push(value); + maxBufferSize <= buffer.length && emit(record); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a2 = recordsCopy_1.return)) _a2.call(recordsCopy_1); + } finally { + if (e_1) throw e_1.error; + } + } + }, function() { + while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) { + subscriber.next(bufferRecords.shift().buffer); + } + bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe(); + subscriber.complete(); + subscriber.unsubscribe(); + }, void 0, function() { + return bufferRecords = null; + }); + source.subscribe(bufferTimeSubscriber); + }); + } + __name(bufferTime, "bufferTime"); + exports.bufferTime = bufferTime; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js +var require_bufferToggle = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bufferToggle = void 0; + var Subscription_1 = require_Subscription(); + var lift_1 = require_lift(); + var innerFrom_1 = require_innerFrom(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var noop_1 = require_noop(); + var arrRemove_1 = require_arrRemove(); + function bufferToggle(openings, closingSelector) { + return lift_1.operate(function(source, subscriber) { + var buffers = []; + innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(openValue) { + var buffer = []; + buffers.push(buffer); + var closingSubscription = new Subscription_1.Subscription(); + var emitBuffer = /* @__PURE__ */ __name(function() { + arrRemove_1.arrRemove(buffers, buffer); + subscriber.next(buffer); + closingSubscription.unsubscribe(); + }, "emitBuffer"); + closingSubscription.add(innerFrom_1.innerFrom(closingSelector(openValue)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, emitBuffer, noop_1.noop))); + }, noop_1.noop)); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var e_1, _a; + try { + for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) { + var buffer = buffers_1_1.value; + buffer.push(value); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1); + } finally { + if (e_1) throw e_1.error; + } + } + }, function() { + while (buffers.length > 0) { + subscriber.next(buffers.shift()); + } + subscriber.complete(); + })); + }); + } + __name(bufferToggle, "bufferToggle"); + exports.bufferToggle = bufferToggle; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js +var require_bufferWhen = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bufferWhen = void 0; + var lift_1 = require_lift(); + var noop_1 = require_noop(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + function bufferWhen(closingSelector) { + return lift_1.operate(function(source, subscriber) { + var buffer = null; + var closingSubscriber = null; + var openBuffer = /* @__PURE__ */ __name(function() { + closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); + var b = buffer; + buffer = []; + b && subscriber.next(b); + innerFrom_1.innerFrom(closingSelector()).subscribe(closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openBuffer, noop_1.noop)); + }, "openBuffer"); + openBuffer(); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); + }, function() { + buffer && subscriber.next(buffer); + subscriber.complete(); + }, void 0, function() { + return buffer = closingSubscriber = null; + })); + }); + } + __name(bufferWhen, "bufferWhen"); + exports.bufferWhen = bufferWhen; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/catchError.js +var require_catchError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/catchError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.catchError = void 0; + var innerFrom_1 = require_innerFrom(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var lift_1 = require_lift(); + function catchError(selector) { + return lift_1.operate(function(source, subscriber) { + var innerSub = null; + var syncUnsub = false; + var handledResult; + innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, function(err) { + handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source))); + if (innerSub) { + innerSub.unsubscribe(); + innerSub = null; + handledResult.subscribe(subscriber); + } else { + syncUnsub = true; + } + })); + if (syncUnsub) { + innerSub.unsubscribe(); + innerSub = null; + handledResult.subscribe(subscriber); + } + }); + } + __name(catchError, "catchError"); + exports.catchError = catchError; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js +var require_argsArgArrayOrObject = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.argsArgArrayOrObject = void 0; + var isArray = Array.isArray; + var getPrototypeOf = Object.getPrototypeOf; + var objectProto = Object.prototype; + var getKeys = Object.keys; + function argsArgArrayOrObject(args) { + if (args.length === 1) { + var first_1 = args[0]; + if (isArray(first_1)) { + return { args: first_1, keys: null }; + } + if (isPOJO(first_1)) { + var keys = getKeys(first_1); + return { + args: keys.map(function(key) { + return first_1[key]; + }), + keys + }; + } + } + return { args, keys: null }; + } + __name(argsArgArrayOrObject, "argsArgArrayOrObject"); + exports.argsArgArrayOrObject = argsArgArrayOrObject; + function isPOJO(obj) { + return obj && typeof obj === "object" && getPrototypeOf(obj) === objectProto; + } + __name(isPOJO, "isPOJO"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/observeOn.js +var require_observeOn = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/observeOn.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.observeOn = void 0; + var executeSchedule_1 = require_executeSchedule(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function observeOn(scheduler, delay) { + if (delay === void 0) { + delay = 0; + } + return lift_1.operate(function(source, subscriber) { + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + return subscriber.next(value); + }, delay); + }, function() { + return executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + return subscriber.complete(); + }, delay); + }, function(err) { + return executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + return subscriber.error(err); + }, delay); + })); + }); + } + __name(observeOn, "observeOn"); + exports.observeOn = observeOn; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js +var require_subscribeOn = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.subscribeOn = void 0; + var lift_1 = require_lift(); + function subscribeOn(scheduler, delay) { + if (delay === void 0) { + delay = 0; + } + return lift_1.operate(function(source, subscriber) { + subscriber.add(scheduler.schedule(function() { + return source.subscribe(subscriber); + }, delay)); + }); + } + __name(subscribeOn, "subscribeOn"); + exports.subscribeOn = subscribeOn; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js +var require_scheduleObservable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scheduleObservable = void 0; + var innerFrom_1 = require_innerFrom(); + var observeOn_1 = require_observeOn(); + var subscribeOn_1 = require_subscribeOn(); + function scheduleObservable(input, scheduler) { + return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler)); + } + __name(scheduleObservable, "scheduleObservable"); + exports.scheduleObservable = scheduleObservable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js +var require_schedulePromise = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.schedulePromise = void 0; + var innerFrom_1 = require_innerFrom(); + var observeOn_1 = require_observeOn(); + var subscribeOn_1 = require_subscribeOn(); + function schedulePromise(input, scheduler) { + return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler)); + } + __name(schedulePromise, "schedulePromise"); + exports.schedulePromise = schedulePromise; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js +var require_scheduleArray = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scheduleArray = void 0; + var Observable_1 = require_Observable(); + function scheduleArray(input, scheduler) { + return new Observable_1.Observable(function(subscriber) { + var i = 0; + return scheduler.schedule(function() { + if (i === input.length) { + subscriber.complete(); + } else { + subscriber.next(input[i++]); + if (!subscriber.closed) { + this.schedule(); + } + } + }); + }); + } + __name(scheduleArray, "scheduleArray"); + exports.scheduleArray = scheduleArray; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js +var require_scheduleIterable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scheduleIterable = void 0; + var Observable_1 = require_Observable(); + var iterator_1 = require_iterator(); + var isFunction_1 = require_isFunction(); + var executeSchedule_1 = require_executeSchedule(); + function scheduleIterable(input, scheduler) { + return new Observable_1.Observable(function(subscriber) { + var iterator; + executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + iterator = input[iterator_1.iterator](); + executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + var _a; + var value; + var done; + try { + _a = iterator.next(), value = _a.value, done = _a.done; + } catch (err) { + subscriber.error(err); + return; + } + if (done) { + subscriber.complete(); + } else { + subscriber.next(value); + } + }, 0, true); + }); + return function() { + return isFunction_1.isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); + }; + }); + } + __name(scheduleIterable, "scheduleIterable"); + exports.scheduleIterable = scheduleIterable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js +var require_scheduleAsyncIterable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scheduleAsyncIterable = void 0; + var Observable_1 = require_Observable(); + var executeSchedule_1 = require_executeSchedule(); + function scheduleAsyncIterable(input, scheduler) { + if (!input) { + throw new Error("Iterable cannot be null"); + } + return new Observable_1.Observable(function(subscriber) { + executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + var iterator = input[Symbol.asyncIterator](); + executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + iterator.next().then(function(result) { + if (result.done) { + subscriber.complete(); + } else { + subscriber.next(result.value); + } + }); + }, 0, true); + }); + }); + } + __name(scheduleAsyncIterable, "scheduleAsyncIterable"); + exports.scheduleAsyncIterable = scheduleAsyncIterable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js +var require_scheduleReadableStreamLike = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scheduleReadableStreamLike = void 0; + var scheduleAsyncIterable_1 = require_scheduleAsyncIterable(); + var isReadableStreamLike_1 = require_isReadableStreamLike(); + function scheduleReadableStreamLike(input, scheduler) { + return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler); + } + __name(scheduleReadableStreamLike, "scheduleReadableStreamLike"); + exports.scheduleReadableStreamLike = scheduleReadableStreamLike; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js +var require_scheduled = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scheduled = void 0; + var scheduleObservable_1 = require_scheduleObservable(); + var schedulePromise_1 = require_schedulePromise(); + var scheduleArray_1 = require_scheduleArray(); + var scheduleIterable_1 = require_scheduleIterable(); + var scheduleAsyncIterable_1 = require_scheduleAsyncIterable(); + var isInteropObservable_1 = require_isInteropObservable(); + var isPromise_1 = require_isPromise(); + var isArrayLike_1 = require_isArrayLike(); + var isIterable_1 = require_isIterable(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var throwUnobservableError_1 = require_throwUnobservableError(); + var isReadableStreamLike_1 = require_isReadableStreamLike(); + var scheduleReadableStreamLike_1 = require_scheduleReadableStreamLike(); + function scheduled(input, scheduler) { + if (input != null) { + if (isInteropObservable_1.isInteropObservable(input)) { + return scheduleObservable_1.scheduleObservable(input, scheduler); + } + if (isArrayLike_1.isArrayLike(input)) { + return scheduleArray_1.scheduleArray(input, scheduler); + } + if (isPromise_1.isPromise(input)) { + return schedulePromise_1.schedulePromise(input, scheduler); + } + if (isAsyncIterable_1.isAsyncIterable(input)) { + return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler); + } + if (isIterable_1.isIterable(input)) { + return scheduleIterable_1.scheduleIterable(input, scheduler); + } + if (isReadableStreamLike_1.isReadableStreamLike(input)) { + return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler); + } + } + throw throwUnobservableError_1.createInvalidObservableTypeError(input); + } + __name(scheduled, "scheduled"); + exports.scheduled = scheduled; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/from.js +var require_from = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/from.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.from = void 0; + var scheduled_1 = require_scheduled(); + var innerFrom_1 = require_innerFrom(); + function from(input, scheduler) { + return scheduler ? scheduled_1.scheduled(input, scheduler) : innerFrom_1.innerFrom(input); + } + __name(from, "from"); + exports.from = from; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/map.js +var require_map2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/map.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.map = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function map2(project, thisArg) { + return lift_1.operate(function(source, subscriber) { + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + subscriber.next(project.call(thisArg, value, index++)); + })); + }); + } + __name(map2, "map"); + exports.map = map2; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js +var require_mapOneOrManyArgs = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mapOneOrManyArgs = void 0; + var map_1 = require_map2(); + var isArray = Array.isArray; + function callOrApply(fn, args) { + return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args); + } + __name(callOrApply, "callOrApply"); + function mapOneOrManyArgs(fn) { + return map_1.map(function(args) { + return callOrApply(fn, args); + }); + } + __name(mapOneOrManyArgs, "mapOneOrManyArgs"); + exports.mapOneOrManyArgs = mapOneOrManyArgs; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/createObject.js +var require_createObject = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/createObject.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createObject = void 0; + function createObject(keys, values) { + return keys.reduce(function(result, key, i) { + return result[key] = values[i], result; + }, {}); + } + __name(createObject, "createObject"); + exports.createObject = createObject; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js +var require_combineLatest = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.combineLatestInit = exports.combineLatest = void 0; + var Observable_1 = require_Observable(); + var argsArgArrayOrObject_1 = require_argsArgArrayOrObject(); + var from_1 = require_from(); + var identity_1 = require_identity(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + var args_1 = require_args(); + var createObject_1 = require_createObject(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var executeSchedule_1 = require_executeSchedule(); + function combineLatest() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = args_1.popScheduler(args); + var resultSelector = args_1.popResultSelector(args); + var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys; + if (observables.length === 0) { + return from_1.from([], scheduler); + } + var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys ? function(values) { + return createObject_1.createObject(keys, values); + } : identity_1.identity)); + return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result; + } + __name(combineLatest, "combineLatest"); + exports.combineLatest = combineLatest; + function combineLatestInit(observables, scheduler, valueTransform) { + if (valueTransform === void 0) { + valueTransform = identity_1.identity; + } + return function(subscriber) { + maybeSchedule(scheduler, function() { + var length = observables.length; + var values = new Array(length); + var active = length; + var remainingFirstValues = length; + var _loop_1 = /* @__PURE__ */ __name(function(i2) { + maybeSchedule(scheduler, function() { + var source = from_1.from(observables[i2], scheduler); + var hasFirstValue = false; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + values[i2] = value; + if (!hasFirstValue) { + hasFirstValue = true; + remainingFirstValues--; + } + if (!remainingFirstValues) { + subscriber.next(valueTransform(values.slice())); + } + }, function() { + if (!--active) { + subscriber.complete(); + } + })); + }, subscriber); + }, "_loop_1"); + for (var i = 0; i < length; i++) { + _loop_1(i); + } + }, subscriber); + }; + } + __name(combineLatestInit, "combineLatestInit"); + exports.combineLatestInit = combineLatestInit; + function maybeSchedule(scheduler, execute, subscription) { + if (scheduler) { + executeSchedule_1.executeSchedule(subscription, scheduler, execute); + } else { + execute(); + } + } + __name(maybeSchedule, "maybeSchedule"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js +var require_mergeInternals = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeInternals = void 0; + var innerFrom_1 = require_innerFrom(); + var executeSchedule_1 = require_executeSchedule(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) { + var buffer = []; + var active = 0; + var index = 0; + var isComplete = false; + var checkComplete = /* @__PURE__ */ __name(function() { + if (isComplete && !buffer.length && !active) { + subscriber.complete(); + } + }, "checkComplete"); + var outerNext = /* @__PURE__ */ __name(function(value) { + return active < concurrent ? doInnerSub(value) : buffer.push(value); + }, "outerNext"); + var doInnerSub = /* @__PURE__ */ __name(function(value) { + expand && subscriber.next(value); + active++; + var innerComplete = false; + innerFrom_1.innerFrom(project(value, index++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(innerValue) { + onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); + if (expand) { + outerNext(innerValue); + } else { + subscriber.next(innerValue); + } + }, function() { + innerComplete = true; + }, void 0, function() { + if (innerComplete) { + try { + active--; + var _loop_1 = /* @__PURE__ */ __name(function() { + var bufferedValue = buffer.shift(); + if (innerSubScheduler) { + executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function() { + return doInnerSub(bufferedValue); + }); + } else { + doInnerSub(bufferedValue); + } + }, "_loop_1"); + while (buffer.length && active < concurrent) { + _loop_1(); + } + checkComplete(); + } catch (err) { + subscriber.error(err); + } + } + })); + }, "doInnerSub"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function() { + isComplete = true; + checkComplete(); + })); + return function() { + additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); + }; + } + __name(mergeInternals, "mergeInternals"); + exports.mergeInternals = mergeInternals; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js +var require_mergeMap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeMap = void 0; + var map_1 = require_map2(); + var innerFrom_1 = require_innerFrom(); + var lift_1 = require_lift(); + var mergeInternals_1 = require_mergeInternals(); + var isFunction_1 = require_isFunction(); + function mergeMap(project, resultSelector, concurrent) { + if (concurrent === void 0) { + concurrent = Infinity; + } + if (isFunction_1.isFunction(resultSelector)) { + return mergeMap(function(a, i) { + return map_1.map(function(b, ii) { + return resultSelector(a, b, i, ii); + })(innerFrom_1.innerFrom(project(a, i))); + }, concurrent); + } else if (typeof resultSelector === "number") { + concurrent = resultSelector; + } + return lift_1.operate(function(source, subscriber) { + return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent); + }); + } + __name(mergeMap, "mergeMap"); + exports.mergeMap = mergeMap; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js +var require_scanInternals = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scanInternals = void 0; + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) { + return function(source, subscriber) { + var hasState = hasSeed; + var state = seed; + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var i = index++; + state = hasState ? accumulator(state, value, i) : (hasState = true, value); + emitOnNext && subscriber.next(state); + }, emitBeforeComplete && (function() { + hasState && subscriber.next(state); + subscriber.complete(); + }))); + }; + } + __name(scanInternals, "scanInternals"); + exports.scanInternals = scanInternals; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/reduce.js +var require_reduce = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/reduce.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.reduce = void 0; + var scanInternals_1 = require_scanInternals(); + var lift_1 = require_lift(); + function reduce(accumulator, seed) { + return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, false, true)); + } + __name(reduce, "reduce"); + exports.reduce = reduce; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/toArray.js +var require_toArray = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/toArray.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.toArray = void 0; + var reduce_1 = require_reduce(); + var lift_1 = require_lift(); + var arrReducer = /* @__PURE__ */ __name(function(arr, value) { + return arr.push(value), arr; + }, "arrReducer"); + function toArray() { + return lift_1.operate(function(source, subscriber) { + reduce_1.reduce(arrReducer, [])(source).subscribe(subscriber); + }); + } + __name(toArray, "toArray"); + exports.toArray = toArray; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js +var require_joinAllInternals = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.joinAllInternals = void 0; + var identity_1 = require_identity(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + var pipe_1 = require_pipe(); + var mergeMap_1 = require_mergeMap(); + var toArray_1 = require_toArray(); + function joinAllInternals(joinFn, project) { + return pipe_1.pipe(toArray_1.toArray(), mergeMap_1.mergeMap(function(sources) { + return joinFn(sources); + }), project ? mapOneOrManyArgs_1.mapOneOrManyArgs(project) : identity_1.identity); + } + __name(joinAllInternals, "joinAllInternals"); + exports.joinAllInternals = joinAllInternals; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js +var require_combineLatestAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.combineLatestAll = void 0; + var combineLatest_1 = require_combineLatest(); + var joinAllInternals_1 = require_joinAllInternals(); + function combineLatestAll(project) { + return joinAllInternals_1.joinAllInternals(combineLatest_1.combineLatest, project); + } + __name(combineLatestAll, "combineLatestAll"); + exports.combineLatestAll = combineLatestAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineAll.js +var require_combineAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.combineAll = void 0; + var combineLatestAll_1 = require_combineLatestAll(); + exports.combineAll = combineLatestAll_1.combineLatestAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js +var require_argsOrArgArray = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.argsOrArgArray = void 0; + var isArray = Array.isArray; + function argsOrArgArray(args) { + return args.length === 1 && isArray(args[0]) ? args[0] : args; + } + __name(argsOrArgArray, "argsOrArgArray"); + exports.argsOrArgArray = argsOrArgArray; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js +var require_combineLatest2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.combineLatest = void 0; + var combineLatest_1 = require_combineLatest(); + var lift_1 = require_lift(); + var argsOrArgArray_1 = require_argsOrArgArray(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + var pipe_1 = require_pipe(); + var args_1 = require_args(); + function combineLatest() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var resultSelector = args_1.popResultSelector(args); + return resultSelector ? pipe_1.pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : lift_1.operate(function(source, subscriber) { + combineLatest_1.combineLatestInit(__spreadArray([source], __read(argsOrArgArray_1.argsOrArgArray(args))))(subscriber); + }); + } + __name(combineLatest, "combineLatest"); + exports.combineLatest = combineLatest; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js +var require_combineLatestWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.combineLatestWith = void 0; + var combineLatest_1 = require_combineLatest2(); + function combineLatestWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return combineLatest_1.combineLatest.apply(void 0, __spreadArray([], __read(otherSources))); + } + __name(combineLatestWith, "combineLatestWith"); + exports.combineLatestWith = combineLatestWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js +var require_mergeAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeAll = void 0; + var mergeMap_1 = require_mergeMap(); + var identity_1 = require_identity(); + function mergeAll(concurrent) { + if (concurrent === void 0) { + concurrent = Infinity; + } + return mergeMap_1.mergeMap(identity_1.identity, concurrent); + } + __name(mergeAll, "mergeAll"); + exports.mergeAll = mergeAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatAll.js +var require_concatAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concatAll = void 0; + var mergeAll_1 = require_mergeAll(); + function concatAll() { + return mergeAll_1.mergeAll(1); + } + __name(concatAll, "concatAll"); + exports.concatAll = concatAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concat.js +var require_concat2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concat.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concat = void 0; + var lift_1 = require_lift(); + var concatAll_1 = require_concatAll(); + var args_1 = require_args(); + var from_1 = require_from(); + function concat() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = args_1.popScheduler(args); + return lift_1.operate(function(source, subscriber) { + concatAll_1.concatAll()(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber); + }); + } + __name(concat, "concat"); + exports.concat = concat; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatMap.js +var require_concatMap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatMap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concatMap = void 0; + var mergeMap_1 = require_mergeMap(); + var isFunction_1 = require_isFunction(); + function concatMap2(project, resultSelector) { + return isFunction_1.isFunction(resultSelector) ? mergeMap_1.mergeMap(project, resultSelector, 1) : mergeMap_1.mergeMap(project, 1); + } + __name(concatMap2, "concatMap"); + exports.concatMap = concatMap2; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js +var require_concatMapTo = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concatMapTo = void 0; + var concatMap_1 = require_concatMap(); + var isFunction_1 = require_isFunction(); + function concatMapTo(innerObservable, resultSelector) { + return isFunction_1.isFunction(resultSelector) ? concatMap_1.concatMap(function() { + return innerObservable; + }, resultSelector) : concatMap_1.concatMap(function() { + return innerObservable; + }); + } + __name(concatMapTo, "concatMapTo"); + exports.concatMapTo = concatMapTo; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatWith.js +var require_concatWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/concatWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concatWith = void 0; + var concat_1 = require_concat2(); + function concatWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return concat_1.concat.apply(void 0, __spreadArray([], __read(otherSources))); + } + __name(concatWith, "concatWith"); + exports.concatWith = concatWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js +var require_ObjectUnsubscribedError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ObjectUnsubscribedError = void 0; + var createErrorClass_1 = require_createErrorClass(); + exports.ObjectUnsubscribedError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function ObjectUnsubscribedErrorImpl() { + _super(this); + this.name = "ObjectUnsubscribedError"; + this.message = "object unsubscribed"; + }, "ObjectUnsubscribedErrorImpl"); + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Subject.js +var require_Subject = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Subject.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AnonymousSubject = exports.Subject = void 0; + var Observable_1 = require_Observable(); + var Subscription_1 = require_Subscription(); + var ObjectUnsubscribedError_1 = require_ObjectUnsubscribedError(); + var arrRemove_1 = require_arrRemove(); + var errorContext_1 = require_errorContext(); + var Subject = (function(_super) { + __extends(Subject2, _super); + function Subject2() { + var _this = _super.call(this) || this; + _this.closed = false; + _this.currentObservers = null; + _this.observers = []; + _this.isStopped = false; + _this.hasError = false; + _this.thrownError = null; + return _this; + } + __name(Subject2, "Subject"); + Subject2.prototype.lift = function(operator) { + var subject = new AnonymousSubject(this, this); + subject.operator = operator; + return subject; + }; + Subject2.prototype._throwIfClosed = function() { + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + }; + Subject2.prototype.next = function(value) { + var _this = this; + errorContext_1.errorContext(function() { + var e_1, _a; + _this._throwIfClosed(); + if (!_this.isStopped) { + if (!_this.currentObservers) { + _this.currentObservers = Array.from(_this.observers); + } + try { + for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) { + var observer = _c.value; + observer.next(value); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } finally { + if (e_1) throw e_1.error; + } + } + } + }); + }; + Subject2.prototype.error = function(err) { + var _this = this; + errorContext_1.errorContext(function() { + _this._throwIfClosed(); + if (!_this.isStopped) { + _this.hasError = _this.isStopped = true; + _this.thrownError = err; + var observers = _this.observers; + while (observers.length) { + observers.shift().error(err); + } + } + }); + }; + Subject2.prototype.complete = function() { + var _this = this; + errorContext_1.errorContext(function() { + _this._throwIfClosed(); + if (!_this.isStopped) { + _this.isStopped = true; + var observers = _this.observers; + while (observers.length) { + observers.shift().complete(); + } + } + }); + }; + Subject2.prototype.unsubscribe = function() { + this.isStopped = this.closed = true; + this.observers = this.currentObservers = null; + }; + Object.defineProperty(Subject2.prototype, "observed", { + get: /* @__PURE__ */ __name(function() { + var _a; + return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; + }, "get"), + enumerable: false, + configurable: true + }); + Subject2.prototype._trySubscribe = function(subscriber) { + this._throwIfClosed(); + return _super.prototype._trySubscribe.call(this, subscriber); + }; + Subject2.prototype._subscribe = function(subscriber) { + this._throwIfClosed(); + this._checkFinalizedStatuses(subscriber); + return this._innerSubscribe(subscriber); + }; + Subject2.prototype._innerSubscribe = function(subscriber) { + var _this = this; + var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; + if (hasError || isStopped) { + return Subscription_1.EMPTY_SUBSCRIPTION; + } + this.currentObservers = null; + observers.push(subscriber); + return new Subscription_1.Subscription(function() { + _this.currentObservers = null; + arrRemove_1.arrRemove(observers, subscriber); + }); + }; + Subject2.prototype._checkFinalizedStatuses = function(subscriber) { + var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; + if (hasError) { + subscriber.error(thrownError); + } else if (isStopped) { + subscriber.complete(); + } + }; + Subject2.prototype.asObservable = function() { + var observable = new Observable_1.Observable(); + observable.source = this; + return observable; + }; + Subject2.create = function(destination, source) { + return new AnonymousSubject(destination, source); + }; + return Subject2; + })(Observable_1.Observable); + exports.Subject = Subject; + var AnonymousSubject = (function(_super) { + __extends(AnonymousSubject2, _super); + function AnonymousSubject2(destination, source) { + var _this = _super.call(this) || this; + _this.destination = destination; + _this.source = source; + return _this; + } + __name(AnonymousSubject2, "AnonymousSubject"); + AnonymousSubject2.prototype.next = function(value) { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); + }; + AnonymousSubject2.prototype.error = function(err) { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); + }; + AnonymousSubject2.prototype.complete = function() { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); + }; + AnonymousSubject2.prototype._subscribe = function(subscriber) { + var _a, _b; + return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : Subscription_1.EMPTY_SUBSCRIPTION; + }; + return AnonymousSubject2; + })(Subject); + exports.AnonymousSubject = AnonymousSubject; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js +var require_fromSubscribable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromSubscribable = void 0; + var Observable_1 = require_Observable(); + function fromSubscribable(subscribable) { + return new Observable_1.Observable(function(subscriber) { + return subscribable.subscribe(subscriber); + }); + } + __name(fromSubscribable, "fromSubscribable"); + exports.fromSubscribable = fromSubscribable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/connect.js +var require_connect = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/connect.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.connect = void 0; + var Subject_1 = require_Subject(); + var innerFrom_1 = require_innerFrom(); + var lift_1 = require_lift(); + var fromSubscribable_1 = require_fromSubscribable(); + var DEFAULT_CONFIG = { + connector: /* @__PURE__ */ __name(function() { + return new Subject_1.Subject(); + }, "connector") + }; + function connect(selector, config) { + if (config === void 0) { + config = DEFAULT_CONFIG; + } + var connector = config.connector; + return lift_1.operate(function(source, subscriber) { + var subject = connector(); + innerFrom_1.innerFrom(selector(fromSubscribable_1.fromSubscribable(subject))).subscribe(subscriber); + subscriber.add(source.subscribe(subject)); + }); + } + __name(connect, "connect"); + exports.connect = connect; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/count.js +var require_count = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/count.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.count = void 0; + var reduce_1 = require_reduce(); + function count(predicate) { + return reduce_1.reduce(function(total, value, i) { + return !predicate || predicate(value, i) ? total + 1 : total; + }, 0); + } + __name(count, "count"); + exports.count = count; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/debounce.js +var require_debounce = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/debounce.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.debounce = void 0; + var lift_1 = require_lift(); + var noop_1 = require_noop(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + function debounce(durationSelector) { + return lift_1.operate(function(source, subscriber) { + var hasValue = false; + var lastValue = null; + var durationSubscriber = null; + var emit = /* @__PURE__ */ __name(function() { + durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); + durationSubscriber = null; + if (hasValue) { + hasValue = false; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + }, "emit"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); + hasValue = true; + lastValue = value; + durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, emit, noop_1.noop); + innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber); + }, function() { + emit(); + subscriber.complete(); + }, void 0, function() { + lastValue = durationSubscriber = null; + })); + }); + } + __name(debounce, "debounce"); + exports.debounce = debounce; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js +var require_debounceTime = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.debounceTime = void 0; + var async_1 = require_async(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function debounceTime(dueTime, scheduler) { + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + return lift_1.operate(function(source, subscriber) { + var activeTask = null; + var lastValue = null; + var lastTime = null; + var emit = /* @__PURE__ */ __name(function() { + if (activeTask) { + activeTask.unsubscribe(); + activeTask = null; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + }, "emit"); + function emitWhenIdle() { + var targetTime = lastTime + dueTime; + var now = scheduler.now(); + if (now < targetTime) { + activeTask = this.schedule(void 0, targetTime - now); + subscriber.add(activeTask); + return; + } + emit(); + } + __name(emitWhenIdle, "emitWhenIdle"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + lastValue = value; + lastTime = scheduler.now(); + if (!activeTask) { + activeTask = scheduler.schedule(emitWhenIdle, dueTime); + subscriber.add(activeTask); + } + }, function() { + emit(); + subscriber.complete(); + }, void 0, function() { + lastValue = activeTask = null; + })); + }); + } + __name(debounceTime, "debounceTime"); + exports.debounceTime = debounceTime; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js +var require_defaultIfEmpty = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultIfEmpty = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function defaultIfEmpty(defaultValue) { + return lift_1.operate(function(source, subscriber) { + var hasValue = false; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + hasValue = true; + subscriber.next(value); + }, function() { + if (!hasValue) { + subscriber.next(defaultValue); + } + subscriber.complete(); + })); + }); + } + __name(defaultIfEmpty, "defaultIfEmpty"); + exports.defaultIfEmpty = defaultIfEmpty; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/concat.js +var require_concat3 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/concat.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concat = void 0; + var concatAll_1 = require_concatAll(); + var args_1 = require_args(); + var from_1 = require_from(); + function concat() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return concatAll_1.concatAll()(from_1.from(args, args_1.popScheduler(args))); + } + __name(concat, "concat"); + exports.concat = concat; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/empty.js +var require_empty = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/empty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.empty = exports.EMPTY = void 0; + var Observable_1 = require_Observable(); + exports.EMPTY = new Observable_1.Observable(function(subscriber) { + return subscriber.complete(); + }); + function empty(scheduler) { + return scheduler ? emptyScheduled(scheduler) : exports.EMPTY; + } + __name(empty, "empty"); + exports.empty = empty; + function emptyScheduled(scheduler) { + return new Observable_1.Observable(function(subscriber) { + return scheduler.schedule(function() { + return subscriber.complete(); + }); + }); + } + __name(emptyScheduled, "emptyScheduled"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/take.js +var require_take = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/take.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.take = void 0; + var empty_1 = require_empty(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function take(count) { + return count <= 0 ? function() { + return empty_1.EMPTY; + } : lift_1.operate(function(source, subscriber) { + var seen = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + if (++seen <= count) { + subscriber.next(value); + if (count <= seen) { + subscriber.complete(); + } + } + })); + }); + } + __name(take, "take"); + exports.take = take; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js +var require_ignoreElements = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ignoreElements = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var noop_1 = require_noop(); + function ignoreElements() { + return lift_1.operate(function(source, subscriber) { + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, noop_1.noop)); + }); + } + __name(ignoreElements, "ignoreElements"); + exports.ignoreElements = ignoreElements; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mapTo.js +var require_mapTo = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mapTo.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mapTo = void 0; + var map_1 = require_map2(); + function mapTo(value) { + return map_1.map(function() { + return value; + }); + } + __name(mapTo, "mapTo"); + exports.mapTo = mapTo; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js +var require_delayWhen = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.delayWhen = void 0; + var concat_1 = require_concat3(); + var take_1 = require_take(); + var ignoreElements_1 = require_ignoreElements(); + var mapTo_1 = require_mapTo(); + var mergeMap_1 = require_mergeMap(); + var innerFrom_1 = require_innerFrom(); + function delayWhen(delayDurationSelector, subscriptionDelay) { + if (subscriptionDelay) { + return function(source) { + return concat_1.concat(subscriptionDelay.pipe(take_1.take(1), ignoreElements_1.ignoreElements()), source.pipe(delayWhen(delayDurationSelector))); + }; + } + return mergeMap_1.mergeMap(function(value, index) { + return innerFrom_1.innerFrom(delayDurationSelector(value, index)).pipe(take_1.take(1), mapTo_1.mapTo(value)); + }); + } + __name(delayWhen, "delayWhen"); + exports.delayWhen = delayWhen; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/delay.js +var require_delay = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/delay.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.delay = void 0; + var async_1 = require_async(); + var delayWhen_1 = require_delayWhen(); + var timer_1 = require_timer(); + function delay(due, scheduler) { + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + var duration = timer_1.timer(due, scheduler); + return delayWhen_1.delayWhen(function() { + return duration; + }); + } + __name(delay, "delay"); + exports.delay = delay; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/of.js +var require_of = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/of.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.of = void 0; + var args_1 = require_args(); + var from_1 = require_from(); + function of() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = args_1.popScheduler(args); + return from_1.from(args, scheduler); + } + __name(of, "of"); + exports.of = of; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/throwError.js +var require_throwError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/throwError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.throwError = void 0; + var Observable_1 = require_Observable(); + var isFunction_1 = require_isFunction(); + function throwError(errorOrErrorFactory, scheduler) { + var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function() { + return errorOrErrorFactory; + }; + var init = /* @__PURE__ */ __name(function(subscriber) { + return subscriber.error(errorFactory()); + }, "init"); + return new Observable_1.Observable(scheduler ? function(subscriber) { + return scheduler.schedule(init, 0, subscriber); + } : init); + } + __name(throwError, "throwError"); + exports.throwError = throwError; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Notification.js +var require_Notification = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/Notification.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.observeNotification = exports.Notification = exports.NotificationKind = void 0; + var empty_1 = require_empty(); + var of_1 = require_of(); + var throwError_1 = require_throwError(); + var isFunction_1 = require_isFunction(); + var NotificationKind; + (function(NotificationKind2) { + NotificationKind2["NEXT"] = "N"; + NotificationKind2["ERROR"] = "E"; + NotificationKind2["COMPLETE"] = "C"; + })(NotificationKind = exports.NotificationKind || (exports.NotificationKind = {})); + var Notification = (function() { + function Notification2(kind, value, error) { + this.kind = kind; + this.value = value; + this.error = error; + this.hasValue = kind === "N"; + } + __name(Notification2, "Notification"); + Notification2.prototype.observe = function(observer) { + return observeNotification(this, observer); + }; + Notification2.prototype.do = function(nextHandler, errorHandler, completeHandler) { + var _a = this, kind = _a.kind, value = _a.value, error = _a.error; + return kind === "N" ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === "E" ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler(); + }; + Notification2.prototype.accept = function(nextOrObserver, error, complete) { + var _a; + return isFunction_1.isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete); + }; + Notification2.prototype.toObservable = function() { + var _a = this, kind = _a.kind, value = _a.value, error = _a.error; + var result = kind === "N" ? of_1.of(value) : kind === "E" ? throwError_1.throwError(function() { + return error; + }) : kind === "C" ? empty_1.EMPTY : 0; + if (!result) { + throw new TypeError("Unexpected notification kind " + kind); + } + return result; + }; + Notification2.createNext = function(value) { + return new Notification2("N", value); + }; + Notification2.createError = function(err) { + return new Notification2("E", void 0, err); + }; + Notification2.createComplete = function() { + return Notification2.completeNotification; + }; + Notification2.completeNotification = new Notification2("C"); + return Notification2; + })(); + exports.Notification = Notification; + function observeNotification(notification, observer) { + var _a, _b, _c; + var _d = notification, kind = _d.kind, value = _d.value, error = _d.error; + if (typeof kind !== "string") { + throw new TypeError('Invalid notification, missing "kind"'); + } + kind === "N" ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === "E" ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer); + } + __name(observeNotification, "observeNotification"); + exports.observeNotification = observeNotification; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js +var require_dematerialize = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.dematerialize = void 0; + var Notification_1 = require_Notification(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function dematerialize() { + return lift_1.operate(function(source, subscriber) { + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(notification) { + return Notification_1.observeNotification(notification, subscriber); + })); + }); + } + __name(dematerialize, "dematerialize"); + exports.dematerialize = dematerialize; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/distinct.js +var require_distinct = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/distinct.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.distinct = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var noop_1 = require_noop(); + var innerFrom_1 = require_innerFrom(); + function distinct(keySelector, flushes) { + return lift_1.operate(function(source, subscriber) { + var distinctKeys = /* @__PURE__ */ new Set(); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var key = keySelector ? keySelector(value) : value; + if (!distinctKeys.has(key)) { + distinctKeys.add(key); + subscriber.next(value); + } + })); + flushes && innerFrom_1.innerFrom(flushes).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + return distinctKeys.clear(); + }, noop_1.noop)); + }); + } + __name(distinct, "distinct"); + exports.distinct = distinct; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js +var require_distinctUntilChanged = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.distinctUntilChanged = void 0; + var identity_1 = require_identity(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function distinctUntilChanged(comparator, keySelector) { + if (keySelector === void 0) { + keySelector = identity_1.identity; + } + comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare; + return lift_1.operate(function(source, subscriber) { + var previousKey; + var first = true; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var currentKey = keySelector(value); + if (first || !comparator(previousKey, currentKey)) { + first = false; + previousKey = currentKey; + subscriber.next(value); + } + })); + }); + } + __name(distinctUntilChanged, "distinctUntilChanged"); + exports.distinctUntilChanged = distinctUntilChanged; + function defaultCompare(a, b) { + return a === b; + } + __name(defaultCompare, "defaultCompare"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js +var require_distinctUntilKeyChanged = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.distinctUntilKeyChanged = void 0; + var distinctUntilChanged_1 = require_distinctUntilChanged(); + function distinctUntilKeyChanged(key, compare) { + return distinctUntilChanged_1.distinctUntilChanged(function(x, y) { + return compare ? compare(x[key], y[key]) : x[key] === y[key]; + }); + } + __name(distinctUntilKeyChanged, "distinctUntilKeyChanged"); + exports.distinctUntilKeyChanged = distinctUntilKeyChanged; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js +var require_ArgumentOutOfRangeError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ArgumentOutOfRangeError = void 0; + var createErrorClass_1 = require_createErrorClass(); + exports.ArgumentOutOfRangeError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function ArgumentOutOfRangeErrorImpl() { + _super(this); + this.name = "ArgumentOutOfRangeError"; + this.message = "argument out of range"; + }, "ArgumentOutOfRangeErrorImpl"); + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/filter.js +var require_filter2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/filter.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.filter = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function filter(predicate, thisArg) { + return lift_1.operate(function(source, subscriber) { + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return predicate.call(thisArg, value, index++) && subscriber.next(value); + })); + }); + } + __name(filter, "filter"); + exports.filter = filter; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/EmptyError.js +var require_EmptyError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/EmptyError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.EmptyError = void 0; + var createErrorClass_1 = require_createErrorClass(); + exports.EmptyError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function EmptyErrorImpl() { + _super(this); + this.name = "EmptyError"; + this.message = "no elements in sequence"; + }, "EmptyErrorImpl"); + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js +var require_throwIfEmpty = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.throwIfEmpty = void 0; + var EmptyError_1 = require_EmptyError(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function throwIfEmpty(errorFactory) { + if (errorFactory === void 0) { + errorFactory = defaultErrorFactory; + } + return lift_1.operate(function(source, subscriber) { + var hasValue = false; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + hasValue = true; + subscriber.next(value); + }, function() { + return hasValue ? subscriber.complete() : subscriber.error(errorFactory()); + })); + }); + } + __name(throwIfEmpty, "throwIfEmpty"); + exports.throwIfEmpty = throwIfEmpty; + function defaultErrorFactory() { + return new EmptyError_1.EmptyError(); + } + __name(defaultErrorFactory, "defaultErrorFactory"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/elementAt.js +var require_elementAt = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/elementAt.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.elementAt = void 0; + var ArgumentOutOfRangeError_1 = require_ArgumentOutOfRangeError(); + var filter_1 = require_filter2(); + var throwIfEmpty_1 = require_throwIfEmpty(); + var defaultIfEmpty_1 = require_defaultIfEmpty(); + var take_1 = require_take(); + function elementAt(index, defaultValue) { + if (index < 0) { + throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); + } + var hasDefaultValue = arguments.length >= 2; + return function(source) { + return source.pipe(filter_1.filter(function(v, i) { + return i === index; + }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() { + return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); + })); + }; + } + __name(elementAt, "elementAt"); + exports.elementAt = elementAt; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/endWith.js +var require_endWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/endWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.endWith = void 0; + var concat_1 = require_concat3(); + var of_1 = require_of(); + function endWith() { + var values = []; + for (var _i = 0; _i < arguments.length; _i++) { + values[_i] = arguments[_i]; + } + return function(source) { + return concat_1.concat(source, of_1.of.apply(void 0, __spreadArray([], __read(values)))); + }; + } + __name(endWith, "endWith"); + exports.endWith = endWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/every.js +var require_every = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/every.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.every = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function every(predicate, thisArg) { + return lift_1.operate(function(source, subscriber) { + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + if (!predicate.call(thisArg, value, index++, source)) { + subscriber.next(false); + subscriber.complete(); + } + }, function() { + subscriber.next(true); + subscriber.complete(); + })); + }); + } + __name(every, "every"); + exports.every = every; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js +var require_exhaustMap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.exhaustMap = void 0; + var map_1 = require_map2(); + var innerFrom_1 = require_innerFrom(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function exhaustMap(project, resultSelector) { + if (resultSelector) { + return function(source) { + return source.pipe(exhaustMap(function(a, i) { + return innerFrom_1.innerFrom(project(a, i)).pipe(map_1.map(function(b, ii) { + return resultSelector(a, b, i, ii); + })); + })); + }; + } + return lift_1.operate(function(source, subscriber) { + var index = 0; + var innerSub = null; + var isComplete = false; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(outerValue) { + if (!innerSub) { + innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() { + innerSub = null; + isComplete && subscriber.complete(); + }); + innerFrom_1.innerFrom(project(outerValue, index++)).subscribe(innerSub); + } + }, function() { + isComplete = true; + !innerSub && subscriber.complete(); + })); + }); + } + __name(exhaustMap, "exhaustMap"); + exports.exhaustMap = exhaustMap; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js +var require_exhaustAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.exhaustAll = void 0; + var exhaustMap_1 = require_exhaustMap(); + var identity_1 = require_identity(); + function exhaustAll() { + return exhaustMap_1.exhaustMap(identity_1.identity); + } + __name(exhaustAll, "exhaustAll"); + exports.exhaustAll = exhaustAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/exhaust.js +var require_exhaust = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/exhaust.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.exhaust = void 0; + var exhaustAll_1 = require_exhaustAll(); + exports.exhaust = exhaustAll_1.exhaustAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/expand.js +var require_expand = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/expand.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.expand = void 0; + var lift_1 = require_lift(); + var mergeInternals_1 = require_mergeInternals(); + function expand(project, concurrent, scheduler) { + if (concurrent === void 0) { + concurrent = Infinity; + } + concurrent = (concurrent || 0) < 1 ? Infinity : concurrent; + return lift_1.operate(function(source, subscriber) { + return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, void 0, true, scheduler); + }); + } + __name(expand, "expand"); + exports.expand = expand; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/finalize.js +var require_finalize = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/finalize.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.finalize = void 0; + var lift_1 = require_lift(); + function finalize(callback) { + return lift_1.operate(function(source, subscriber) { + try { + source.subscribe(subscriber); + } finally { + subscriber.add(callback); + } + }); + } + __name(finalize, "finalize"); + exports.finalize = finalize; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/find.js +var require_find = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/find.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createFind = exports.find = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function find(predicate, thisArg) { + return lift_1.operate(createFind(predicate, thisArg, "value")); + } + __name(find, "find"); + exports.find = find; + function createFind(predicate, thisArg, emit) { + var findIndex = emit === "index"; + return function(source, subscriber) { + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var i = index++; + if (predicate.call(thisArg, value, i, source)) { + subscriber.next(findIndex ? i : value); + subscriber.complete(); + } + }, function() { + subscriber.next(findIndex ? -1 : void 0); + subscriber.complete(); + })); + }; + } + __name(createFind, "createFind"); + exports.createFind = createFind; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/findIndex.js +var require_findIndex = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/findIndex.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.findIndex = void 0; + var lift_1 = require_lift(); + var find_1 = require_find(); + function findIndex(predicate, thisArg) { + return lift_1.operate(find_1.createFind(predicate, thisArg, "index")); + } + __name(findIndex, "findIndex"); + exports.findIndex = findIndex; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/first.js +var require_first = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/first.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.first = void 0; + var EmptyError_1 = require_EmptyError(); + var filter_1 = require_filter2(); + var take_1 = require_take(); + var defaultIfEmpty_1 = require_defaultIfEmpty(); + var throwIfEmpty_1 = require_throwIfEmpty(); + var identity_1 = require_identity(); + function first(predicate, defaultValue) { + var hasDefaultValue = arguments.length >= 2; + return function(source) { + return source.pipe(predicate ? filter_1.filter(function(v, i) { + return predicate(v, i, source); + }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() { + return new EmptyError_1.EmptyError(); + })); + }; + } + __name(first, "first"); + exports.first = first; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/groupBy.js +var require_groupBy = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/groupBy.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.groupBy = void 0; + var Observable_1 = require_Observable(); + var innerFrom_1 = require_innerFrom(); + var Subject_1 = require_Subject(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function groupBy(keySelector, elementOrOptions, duration, connector) { + return lift_1.operate(function(source, subscriber) { + var element; + if (!elementOrOptions || typeof elementOrOptions === "function") { + element = elementOrOptions; + } else { + duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector; + } + var groups = /* @__PURE__ */ new Map(); + var notify = /* @__PURE__ */ __name(function(cb) { + groups.forEach(cb); + cb(subscriber); + }, "notify"); + var handleError = /* @__PURE__ */ __name(function(err) { + return notify(function(consumer) { + return consumer.error(err); + }); + }, "handleError"); + var activeGroups = 0; + var teardownAttempted = false; + var groupBySourceSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, function(value) { + try { + var key_1 = keySelector(value); + var group_1 = groups.get(key_1); + if (!group_1) { + groups.set(key_1, group_1 = connector ? connector() : new Subject_1.Subject()); + var grouped = createGroupedObservable(key_1, group_1); + subscriber.next(grouped); + if (duration) { + var durationSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(group_1, function() { + group_1.complete(); + durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe(); + }, void 0, void 0, function() { + return groups.delete(key_1); + }); + groupBySourceSubscriber.add(innerFrom_1.innerFrom(duration(grouped)).subscribe(durationSubscriber_1)); + } + } + group_1.next(element ? element(value) : value); + } catch (err) { + handleError(err); + } + }, function() { + return notify(function(consumer) { + return consumer.complete(); + }); + }, handleError, function() { + return groups.clear(); + }, function() { + teardownAttempted = true; + return activeGroups === 0; + }); + source.subscribe(groupBySourceSubscriber); + function createGroupedObservable(key, groupSubject) { + var result = new Observable_1.Observable(function(groupSubscriber) { + activeGroups++; + var innerSub = groupSubject.subscribe(groupSubscriber); + return function() { + innerSub.unsubscribe(); + --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe(); + }; + }); + result.key = key; + return result; + } + __name(createGroupedObservable, "createGroupedObservable"); + }); + } + __name(groupBy, "groupBy"); + exports.groupBy = groupBy; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js +var require_isEmpty = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isEmpty = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function isEmpty2() { + return lift_1.operate(function(source, subscriber) { + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + subscriber.next(false); + subscriber.complete(); + }, function() { + subscriber.next(true); + subscriber.complete(); + })); + }); + } + __name(isEmpty2, "isEmpty"); + exports.isEmpty = isEmpty2; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/takeLast.js +var require_takeLast = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/takeLast.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.takeLast = void 0; + var empty_1 = require_empty(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function takeLast(count) { + return count <= 0 ? function() { + return empty_1.EMPTY; + } : lift_1.operate(function(source, subscriber) { + var buffer = []; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + buffer.push(value); + count < buffer.length && buffer.shift(); + }, function() { + var e_1, _a; + try { + for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) { + var value = buffer_1_1.value; + subscriber.next(value); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1); + } finally { + if (e_1) throw e_1.error; + } + } + subscriber.complete(); + }, void 0, function() { + buffer = null; + })); + }); + } + __name(takeLast, "takeLast"); + exports.takeLast = takeLast; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/last.js +var require_last = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/last.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.last = void 0; + var EmptyError_1 = require_EmptyError(); + var filter_1 = require_filter2(); + var takeLast_1 = require_takeLast(); + var throwIfEmpty_1 = require_throwIfEmpty(); + var defaultIfEmpty_1 = require_defaultIfEmpty(); + var identity_1 = require_identity(); + function last(predicate, defaultValue) { + var hasDefaultValue = arguments.length >= 2; + return function(source) { + return source.pipe(predicate ? filter_1.filter(function(v, i) { + return predicate(v, i, source); + }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() { + return new EmptyError_1.EmptyError(); + })); + }; + } + __name(last, "last"); + exports.last = last; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/materialize.js +var require_materialize = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/materialize.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.materialize = void 0; + var Notification_1 = require_Notification(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function materialize() { + return lift_1.operate(function(source, subscriber) { + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + subscriber.next(Notification_1.Notification.createNext(value)); + }, function() { + subscriber.next(Notification_1.Notification.createComplete()); + subscriber.complete(); + }, function(err) { + subscriber.next(Notification_1.Notification.createError(err)); + subscriber.complete(); + })); + }); + } + __name(materialize, "materialize"); + exports.materialize = materialize; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/max.js +var require_max = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/max.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.max = void 0; + var reduce_1 = require_reduce(); + var isFunction_1 = require_isFunction(); + function max(comparer) { + return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function(x, y) { + return comparer(x, y) > 0 ? x : y; + } : function(x, y) { + return x > y ? x : y; + }); + } + __name(max, "max"); + exports.max = max; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/merge.js +var require_merge = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/merge.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.merge = void 0; + var lift_1 = require_lift(); + var mergeAll_1 = require_mergeAll(); + var args_1 = require_args(); + var from_1 = require_from(); + function merge() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = args_1.popScheduler(args); + var concurrent = args_1.popNumber(args, Infinity); + return lift_1.operate(function(source, subscriber) { + mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber); + }); + } + __name(merge, "merge"); + exports.merge = merge; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/flatMap.js +var require_flatMap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/flatMap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.flatMap = void 0; + var mergeMap_1 = require_mergeMap(); + exports.flatMap = mergeMap_1.mergeMap; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js +var require_mergeMapTo = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeMapTo = void 0; + var mergeMap_1 = require_mergeMap(); + var isFunction_1 = require_isFunction(); + function mergeMapTo(innerObservable, resultSelector, concurrent) { + if (concurrent === void 0) { + concurrent = Infinity; + } + if (isFunction_1.isFunction(resultSelector)) { + return mergeMap_1.mergeMap(function() { + return innerObservable; + }, resultSelector, concurrent); + } + if (typeof resultSelector === "number") { + concurrent = resultSelector; + } + return mergeMap_1.mergeMap(function() { + return innerObservable; + }, concurrent); + } + __name(mergeMapTo, "mergeMapTo"); + exports.mergeMapTo = mergeMapTo; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js +var require_mergeScan = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeScan = void 0; + var lift_1 = require_lift(); + var mergeInternals_1 = require_mergeInternals(); + function mergeScan(accumulator, seed, concurrent) { + if (concurrent === void 0) { + concurrent = Infinity; + } + return lift_1.operate(function(source, subscriber) { + var state = seed; + return mergeInternals_1.mergeInternals(source, subscriber, function(value, index) { + return accumulator(state, value, index); + }, concurrent, function(value) { + state = value; + }, false, void 0, function() { + return state = null; + }); + }); + } + __name(mergeScan, "mergeScan"); + exports.mergeScan = mergeScan; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js +var require_mergeWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeWith = void 0; + var merge_1 = require_merge(); + function mergeWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return merge_1.merge.apply(void 0, __spreadArray([], __read(otherSources))); + } + __name(mergeWith, "mergeWith"); + exports.mergeWith = mergeWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/min.js +var require_min = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/min.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.min = void 0; + var reduce_1 = require_reduce(); + var isFunction_1 = require_isFunction(); + function min(comparer) { + return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function(x, y) { + return comparer(x, y) < 0 ? x : y; + } : function(x, y) { + return x < y ? x : y; + }); + } + __name(min, "min"); + exports.min = min; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/refCount.js +var require_refCount = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/refCount.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.refCount = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function refCount() { + return lift_1.operate(function(source, subscriber) { + var connection = null; + source._refCount++; + var refCounter = OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, void 0, function() { + if (!source || source._refCount <= 0 || 0 < --source._refCount) { + connection = null; + return; + } + var sharedConnection = source._connection; + var conn = connection; + connection = null; + if (sharedConnection && (!conn || sharedConnection === conn)) { + sharedConnection.unsubscribe(); + } + subscriber.unsubscribe(); + }); + source.subscribe(refCounter); + if (!refCounter.closed) { + connection = source.connect(); + } + }); + } + __name(refCount, "refCount"); + exports.refCount = refCount; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js +var require_ConnectableObservable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ConnectableObservable = void 0; + var Observable_1 = require_Observable(); + var Subscription_1 = require_Subscription(); + var refCount_1 = require_refCount(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var lift_1 = require_lift(); + var ConnectableObservable = (function(_super) { + __extends(ConnectableObservable2, _super); + function ConnectableObservable2(source, subjectFactory) { + var _this = _super.call(this) || this; + _this.source = source; + _this.subjectFactory = subjectFactory; + _this._subject = null; + _this._refCount = 0; + _this._connection = null; + if (lift_1.hasLift(source)) { + _this.lift = source.lift; + } + return _this; + } + __name(ConnectableObservable2, "ConnectableObservable"); + ConnectableObservable2.prototype._subscribe = function(subscriber) { + return this.getSubject().subscribe(subscriber); + }; + ConnectableObservable2.prototype.getSubject = function() { + var subject = this._subject; + if (!subject || subject.isStopped) { + this._subject = this.subjectFactory(); + } + return this._subject; + }; + ConnectableObservable2.prototype._teardown = function() { + this._refCount = 0; + var _connection = this._connection; + this._subject = this._connection = null; + _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); + }; + ConnectableObservable2.prototype.connect = function() { + var _this = this; + var connection = this._connection; + if (!connection) { + connection = this._connection = new Subscription_1.Subscription(); + var subject_1 = this.getSubject(); + connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, void 0, function() { + _this._teardown(); + subject_1.complete(); + }, function(err) { + _this._teardown(); + subject_1.error(err); + }, function() { + return _this._teardown(); + }))); + if (connection.closed) { + this._connection = null; + connection = Subscription_1.Subscription.EMPTY; + } + } + return connection; + }; + ConnectableObservable2.prototype.refCount = function() { + return refCount_1.refCount()(this); + }; + return ConnectableObservable2; + })(Observable_1.Observable); + exports.ConnectableObservable = ConnectableObservable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/multicast.js +var require_multicast = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/multicast.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.multicast = void 0; + var ConnectableObservable_1 = require_ConnectableObservable(); + var isFunction_1 = require_isFunction(); + var connect_1 = require_connect(); + function multicast(subjectOrSubjectFactory, selector) { + var subjectFactory = isFunction_1.isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function() { + return subjectOrSubjectFactory; + }; + if (isFunction_1.isFunction(selector)) { + return connect_1.connect(selector, { + connector: subjectFactory + }); + } + return function(source) { + return new ConnectableObservable_1.ConnectableObservable(source, subjectFactory); + }; + } + __name(multicast, "multicast"); + exports.multicast = multicast; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js +var require_onErrorResumeNext = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.onErrorResumeNext = void 0; + var Observable_1 = require_Observable(); + var argsOrArgArray_1 = require_argsOrArgArray(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var noop_1 = require_noop(); + var innerFrom_1 = require_innerFrom(); + function onErrorResumeNext() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + var nextSources = argsOrArgArray_1.argsOrArgArray(sources); + return new Observable_1.Observable(function(subscriber) { + var sourceIndex = 0; + var subscribeNext = /* @__PURE__ */ __name(function() { + if (sourceIndex < nextSources.length) { + var nextSource = void 0; + try { + nextSource = innerFrom_1.innerFrom(nextSources[sourceIndex++]); + } catch (err) { + subscribeNext(); + return; + } + var innerSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, void 0, noop_1.noop, noop_1.noop); + nextSource.subscribe(innerSubscriber); + innerSubscriber.add(subscribeNext); + } else { + subscriber.complete(); + } + }, "subscribeNext"); + subscribeNext(); + }); + } + __name(onErrorResumeNext, "onErrorResumeNext"); + exports.onErrorResumeNext = onErrorResumeNext; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js +var require_onErrorResumeNextWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.onErrorResumeNext = exports.onErrorResumeNextWith = void 0; + var argsOrArgArray_1 = require_argsOrArgArray(); + var onErrorResumeNext_1 = require_onErrorResumeNext(); + function onErrorResumeNextWith() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + var nextSources = argsOrArgArray_1.argsOrArgArray(sources); + return function(source) { + return onErrorResumeNext_1.onErrorResumeNext.apply(void 0, __spreadArray([source], __read(nextSources))); + }; + } + __name(onErrorResumeNextWith, "onErrorResumeNextWith"); + exports.onErrorResumeNextWith = onErrorResumeNextWith; + exports.onErrorResumeNext = onErrorResumeNextWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/pairwise.js +var require_pairwise = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/pairwise.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.pairwise = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function pairwise() { + return lift_1.operate(function(source, subscriber) { + var prev; + var hasPrev = false; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var p = prev; + prev = value; + hasPrev && subscriber.next([p, value]); + hasPrev = true; + })); + }); + } + __name(pairwise, "pairwise"); + exports.pairwise = pairwise; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/not.js +var require_not = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/not.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.not = void 0; + function not(pred, thisArg) { + return function(value, index) { + return !pred.call(thisArg, value, index); + }; + } + __name(not, "not"); + exports.not = not; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/partition.js +var require_partition = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/partition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.partition = void 0; + var not_1 = require_not(); + var filter_1 = require_filter2(); + function partition(predicate, thisArg) { + return function(source) { + return [filter_1.filter(predicate, thisArg)(source), filter_1.filter(not_1.not(predicate, thisArg))(source)]; + }; + } + __name(partition, "partition"); + exports.partition = partition; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/pluck.js +var require_pluck = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/pluck.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.pluck = void 0; + var map_1 = require_map2(); + function pluck() { + var properties = []; + for (var _i = 0; _i < arguments.length; _i++) { + properties[_i] = arguments[_i]; + } + var length = properties.length; + if (length === 0) { + throw new Error("list of properties cannot be empty."); + } + return map_1.map(function(x) { + var currentProp = x; + for (var i = 0; i < length; i++) { + var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]]; + if (typeof p !== "undefined") { + currentProp = p; + } else { + return void 0; + } + } + return currentProp; + }); + } + __name(pluck, "pluck"); + exports.pluck = pluck; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publish.js +var require_publish = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publish.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.publish = void 0; + var Subject_1 = require_Subject(); + var multicast_1 = require_multicast(); + var connect_1 = require_connect(); + function publish(selector) { + return selector ? function(source) { + return connect_1.connect(selector)(source); + } : function(source) { + return multicast_1.multicast(new Subject_1.Subject())(source); + }; + } + __name(publish, "publish"); + exports.publish = publish; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js +var require_BehaviorSubject = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.BehaviorSubject = void 0; + var Subject_1 = require_Subject(); + var BehaviorSubject = (function(_super) { + __extends(BehaviorSubject2, _super); + function BehaviorSubject2(_value) { + var _this = _super.call(this) || this; + _this._value = _value; + return _this; + } + __name(BehaviorSubject2, "BehaviorSubject"); + Object.defineProperty(BehaviorSubject2.prototype, "value", { + get: /* @__PURE__ */ __name(function() { + return this.getValue(); + }, "get"), + enumerable: false, + configurable: true + }); + BehaviorSubject2.prototype._subscribe = function(subscriber) { + var subscription = _super.prototype._subscribe.call(this, subscriber); + !subscription.closed && subscriber.next(this._value); + return subscription; + }; + BehaviorSubject2.prototype.getValue = function() { + var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; + if (hasError) { + throw thrownError; + } + this._throwIfClosed(); + return _value; + }; + BehaviorSubject2.prototype.next = function(value) { + _super.prototype.next.call(this, this._value = value); + }; + return BehaviorSubject2; + })(Subject_1.Subject); + exports.BehaviorSubject = BehaviorSubject; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js +var require_publishBehavior = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.publishBehavior = void 0; + var BehaviorSubject_1 = require_BehaviorSubject(); + var ConnectableObservable_1 = require_ConnectableObservable(); + function publishBehavior(initialValue) { + return function(source) { + var subject = new BehaviorSubject_1.BehaviorSubject(initialValue); + return new ConnectableObservable_1.ConnectableObservable(source, function() { + return subject; + }); + }; + } + __name(publishBehavior, "publishBehavior"); + exports.publishBehavior = publishBehavior; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/AsyncSubject.js +var require_AsyncSubject = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/AsyncSubject.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsyncSubject = void 0; + var Subject_1 = require_Subject(); + var AsyncSubject = (function(_super) { + __extends(AsyncSubject2, _super); + function AsyncSubject2() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._value = null; + _this._hasValue = false; + _this._isComplete = false; + return _this; + } + __name(AsyncSubject2, "AsyncSubject"); + AsyncSubject2.prototype._checkFinalizedStatuses = function(subscriber) { + var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete; + if (hasError) { + subscriber.error(thrownError); + } else if (isStopped || _isComplete) { + _hasValue && subscriber.next(_value); + subscriber.complete(); + } + }; + AsyncSubject2.prototype.next = function(value) { + if (!this.isStopped) { + this._value = value; + this._hasValue = true; + } + }; + AsyncSubject2.prototype.complete = function() { + var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete; + if (!_isComplete) { + this._isComplete = true; + _hasValue && _super.prototype.next.call(this, _value); + _super.prototype.complete.call(this); + } + }; + return AsyncSubject2; + })(Subject_1.Subject); + exports.AsyncSubject = AsyncSubject; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publishLast.js +var require_publishLast = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publishLast.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.publishLast = void 0; + var AsyncSubject_1 = require_AsyncSubject(); + var ConnectableObservable_1 = require_ConnectableObservable(); + function publishLast() { + return function(source) { + var subject = new AsyncSubject_1.AsyncSubject(); + return new ConnectableObservable_1.ConnectableObservable(source, function() { + return subject; + }); + }; + } + __name(publishLast, "publishLast"); + exports.publishLast = publishLast; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/ReplaySubject.js +var require_ReplaySubject = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/ReplaySubject.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ReplaySubject = void 0; + var Subject_1 = require_Subject(); + var dateTimestampProvider_1 = require_dateTimestampProvider(); + var ReplaySubject = (function(_super) { + __extends(ReplaySubject2, _super); + function ReplaySubject2(_bufferSize, _windowTime, _timestampProvider) { + if (_bufferSize === void 0) { + _bufferSize = Infinity; + } + if (_windowTime === void 0) { + _windowTime = Infinity; + } + if (_timestampProvider === void 0) { + _timestampProvider = dateTimestampProvider_1.dateTimestampProvider; + } + var _this = _super.call(this) || this; + _this._bufferSize = _bufferSize; + _this._windowTime = _windowTime; + _this._timestampProvider = _timestampProvider; + _this._buffer = []; + _this._infiniteTimeWindow = true; + _this._infiniteTimeWindow = _windowTime === Infinity; + _this._bufferSize = Math.max(1, _bufferSize); + _this._windowTime = Math.max(1, _windowTime); + return _this; + } + __name(ReplaySubject2, "ReplaySubject"); + ReplaySubject2.prototype.next = function(value) { + var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime; + if (!isStopped) { + _buffer.push(value); + !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime); + } + this._trimBuffer(); + _super.prototype.next.call(this, value); + }; + ReplaySubject2.prototype._subscribe = function(subscriber) { + this._throwIfClosed(); + this._trimBuffer(); + var subscription = this._innerSubscribe(subscriber); + var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer; + var copy = _buffer.slice(); + for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) { + subscriber.next(copy[i]); + } + this._checkFinalizedStatuses(subscriber); + return subscription; + }; + ReplaySubject2.prototype._trimBuffer = function() { + var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow; + var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize; + _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize); + if (!_infiniteTimeWindow) { + var now = _timestampProvider.now(); + var last = 0; + for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) { + last = i; + } + last && _buffer.splice(0, last + 1); + } + }; + return ReplaySubject2; + })(Subject_1.Subject); + exports.ReplaySubject = ReplaySubject; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js +var require_publishReplay = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.publishReplay = void 0; + var ReplaySubject_1 = require_ReplaySubject(); + var multicast_1 = require_multicast(); + var isFunction_1 = require_isFunction(); + function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) { + if (selectorOrScheduler && !isFunction_1.isFunction(selectorOrScheduler)) { + timestampProvider = selectorOrScheduler; + } + var selector = isFunction_1.isFunction(selectorOrScheduler) ? selectorOrScheduler : void 0; + return function(source) { + return multicast_1.multicast(new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); + }; + } + __name(publishReplay, "publishReplay"); + exports.publishReplay = publishReplay; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/race.js +var require_race = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/race.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.raceInit = exports.race = void 0; + var Observable_1 = require_Observable(); + var innerFrom_1 = require_innerFrom(); + var argsOrArgArray_1 = require_argsOrArgArray(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function race() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + sources = argsOrArgArray_1.argsOrArgArray(sources); + return sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : new Observable_1.Observable(raceInit(sources)); + } + __name(race, "race"); + exports.race = race; + function raceInit(sources) { + return function(subscriber) { + var subscriptions = []; + var _loop_1 = /* @__PURE__ */ __name(function(i2) { + subscriptions.push(innerFrom_1.innerFrom(sources[i2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + if (subscriptions) { + for (var s = 0; s < subscriptions.length; s++) { + s !== i2 && subscriptions[s].unsubscribe(); + } + subscriptions = null; + } + subscriber.next(value); + }))); + }, "_loop_1"); + for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) { + _loop_1(i); + } + }; + } + __name(raceInit, "raceInit"); + exports.raceInit = raceInit; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/raceWith.js +var require_raceWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/raceWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.raceWith = void 0; + var race_1 = require_race(); + var lift_1 = require_lift(); + var identity_1 = require_identity(); + function raceWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return !otherSources.length ? identity_1.identity : lift_1.operate(function(source, subscriber) { + race_1.raceInit(__spreadArray([source], __read(otherSources)))(subscriber); + }); + } + __name(raceWith, "raceWith"); + exports.raceWith = raceWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/race.js +var require_race2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/race.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.race = void 0; + var argsOrArgArray_1 = require_argsOrArgArray(); + var raceWith_1 = require_raceWith(); + function race() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return raceWith_1.raceWith.apply(void 0, __spreadArray([], __read(argsOrArgArray_1.argsOrArgArray(args)))); + } + __name(race, "race"); + exports.race = race; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/repeat.js +var require_repeat = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/repeat.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.repeat = void 0; + var empty_1 = require_empty(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + var timer_1 = require_timer(); + function repeat(countOrConfig) { + var _a; + var count = Infinity; + var delay; + if (countOrConfig != null) { + if (typeof countOrConfig === "object") { + _a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay; + } else { + count = countOrConfig; + } + } + return count <= 0 ? function() { + return empty_1.EMPTY; + } : lift_1.operate(function(source, subscriber) { + var soFar = 0; + var sourceSub; + var resubscribe = /* @__PURE__ */ __name(function() { + sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe(); + sourceSub = null; + if (delay != null) { + var notifier = typeof delay === "number" ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(soFar)); + var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + notifierSubscriber_1.unsubscribe(); + subscribeToSource(); + }); + notifier.subscribe(notifierSubscriber_1); + } else { + subscribeToSource(); + } + }, "resubscribe"); + var subscribeToSource = /* @__PURE__ */ __name(function() { + var syncUnsub = false; + sourceSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() { + if (++soFar < count) { + if (sourceSub) { + resubscribe(); + } else { + syncUnsub = true; + } + } else { + subscriber.complete(); + } + })); + if (syncUnsub) { + resubscribe(); + } + }, "subscribeToSource"); + subscribeToSource(); + }); + } + __name(repeat, "repeat"); + exports.repeat = repeat; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js +var require_repeatWhen = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.repeatWhen = void 0; + var innerFrom_1 = require_innerFrom(); + var Subject_1 = require_Subject(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function repeatWhen(notifier) { + return lift_1.operate(function(source, subscriber) { + var innerSub; + var syncResub = false; + var completions$; + var isNotifierComplete = false; + var isMainComplete = false; + var checkComplete = /* @__PURE__ */ __name(function() { + return isMainComplete && isNotifierComplete && (subscriber.complete(), true); + }, "checkComplete"); + var getCompletionSubject = /* @__PURE__ */ __name(function() { + if (!completions$) { + completions$ = new Subject_1.Subject(); + innerFrom_1.innerFrom(notifier(completions$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + if (innerSub) { + subscribeForRepeatWhen(); + } else { + syncResub = true; + } + }, function() { + isNotifierComplete = true; + checkComplete(); + })); + } + return completions$; + }, "getCompletionSubject"); + var subscribeForRepeatWhen = /* @__PURE__ */ __name(function() { + isMainComplete = false; + innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() { + isMainComplete = true; + !checkComplete() && getCompletionSubject().next(); + })); + if (syncResub) { + innerSub.unsubscribe(); + innerSub = null; + syncResub = false; + subscribeForRepeatWhen(); + } + }, "subscribeForRepeatWhen"); + subscribeForRepeatWhen(); + }); + } + __name(repeatWhen, "repeatWhen"); + exports.repeatWhen = repeatWhen; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/retry.js +var require_retry = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/retry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.retry = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var identity_1 = require_identity(); + var timer_1 = require_timer(); + var innerFrom_1 = require_innerFrom(); + function retry(configOrCount) { + if (configOrCount === void 0) { + configOrCount = Infinity; + } + var config; + if (configOrCount && typeof configOrCount === "object") { + config = configOrCount; + } else { + config = { + count: configOrCount + }; + } + var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b; + return count <= 0 ? identity_1.identity : lift_1.operate(function(source, subscriber) { + var soFar = 0; + var innerSub; + var subscribeForRetry = /* @__PURE__ */ __name(function() { + var syncUnsub = false; + innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + if (resetOnSuccess) { + soFar = 0; + } + subscriber.next(value); + }, void 0, function(err) { + if (soFar++ < count) { + var resub_1 = /* @__PURE__ */ __name(function() { + if (innerSub) { + innerSub.unsubscribe(); + innerSub = null; + subscribeForRetry(); + } else { + syncUnsub = true; + } + }, "resub_1"); + if (delay != null) { + var notifier = typeof delay === "number" ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(err, soFar)); + var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + notifierSubscriber_1.unsubscribe(); + resub_1(); + }, function() { + subscriber.complete(); + }); + notifier.subscribe(notifierSubscriber_1); + } else { + resub_1(); + } + } else { + subscriber.error(err); + } + })); + if (syncUnsub) { + innerSub.unsubscribe(); + innerSub = null; + subscribeForRetry(); + } + }, "subscribeForRetry"); + subscribeForRetry(); + }); + } + __name(retry, "retry"); + exports.retry = retry; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js +var require_retryWhen = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.retryWhen = void 0; + var innerFrom_1 = require_innerFrom(); + var Subject_1 = require_Subject(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function retryWhen(notifier) { + return lift_1.operate(function(source, subscriber) { + var innerSub; + var syncResub = false; + var errors$; + var subscribeForRetryWhen = /* @__PURE__ */ __name(function() { + innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, function(err) { + if (!errors$) { + errors$ = new Subject_1.Subject(); + innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + return innerSub ? subscribeForRetryWhen() : syncResub = true; + })); + } + if (errors$) { + errors$.next(err); + } + })); + if (syncResub) { + innerSub.unsubscribe(); + innerSub = null; + syncResub = false; + subscribeForRetryWhen(); + } + }, "subscribeForRetryWhen"); + subscribeForRetryWhen(); + }); + } + __name(retryWhen, "retryWhen"); + exports.retryWhen = retryWhen; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/sample.js +var require_sample = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/sample.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sample = void 0; + var innerFrom_1 = require_innerFrom(); + var lift_1 = require_lift(); + var noop_1 = require_noop(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function sample(notifier) { + return lift_1.operate(function(source, subscriber) { + var hasValue = false; + var lastValue = null; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + hasValue = true; + lastValue = value; + })); + innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + if (hasValue) { + hasValue = false; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + }, noop_1.noop)); + }); + } + __name(sample, "sample"); + exports.sample = sample; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/interval.js +var require_interval = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/interval.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.interval = void 0; + var async_1 = require_async(); + var timer_1 = require_timer(); + function interval(period, scheduler) { + if (period === void 0) { + period = 0; + } + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + if (period < 0) { + period = 0; + } + return timer_1.timer(period, period, scheduler); + } + __name(interval, "interval"); + exports.interval = interval; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js +var require_sampleTime = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sampleTime = void 0; + var async_1 = require_async(); + var sample_1 = require_sample(); + var interval_1 = require_interval(); + function sampleTime(period, scheduler) { + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + return sample_1.sample(interval_1.interval(period, scheduler)); + } + __name(sampleTime, "sampleTime"); + exports.sampleTime = sampleTime; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/scan.js +var require_scan = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/scan.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.scan = void 0; + var lift_1 = require_lift(); + var scanInternals_1 = require_scanInternals(); + function scan(accumulator, seed) { + return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, true)); + } + __name(scan, "scan"); + exports.scan = scan; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js +var require_sequenceEqual = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sequenceEqual = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + function sequenceEqual(compareTo, comparator) { + if (comparator === void 0) { + comparator = /* @__PURE__ */ __name(function(a, b) { + return a === b; + }, "comparator"); + } + return lift_1.operate(function(source, subscriber) { + var aState = createState(); + var bState = createState(); + var emit = /* @__PURE__ */ __name(function(isEqual) { + subscriber.next(isEqual); + subscriber.complete(); + }, "emit"); + var createSubscriber = /* @__PURE__ */ __name(function(selfState, otherState) { + var sequenceEqualSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(a) { + var buffer = otherState.buffer, complete = otherState.complete; + if (buffer.length === 0) { + complete ? emit(false) : selfState.buffer.push(a); + } else { + !comparator(a, buffer.shift()) && emit(false); + } + }, function() { + selfState.complete = true; + var complete = otherState.complete, buffer = otherState.buffer; + complete && emit(buffer.length === 0); + sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe(); + }); + return sequenceEqualSubscriber; + }, "createSubscriber"); + source.subscribe(createSubscriber(aState, bState)); + innerFrom_1.innerFrom(compareTo).subscribe(createSubscriber(bState, aState)); + }); + } + __name(sequenceEqual, "sequenceEqual"); + exports.sequenceEqual = sequenceEqual; + function createState() { + return { + buffer: [], + complete: false + }; + } + __name(createState, "createState"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/share.js +var require_share = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/share.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.share = void 0; + var innerFrom_1 = require_innerFrom(); + var Subject_1 = require_Subject(); + var Subscriber_1 = require_Subscriber(); + var lift_1 = require_lift(); + function share(options) { + if (options === void 0) { + options = {}; + } + var _a = options.connector, connector = _a === void 0 ? function() { + return new Subject_1.Subject(); + } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d; + return function(wrapperSource) { + var connection; + var resetConnection; + var subject; + var refCount = 0; + var hasCompleted = false; + var hasErrored = false; + var cancelReset = /* @__PURE__ */ __name(function() { + resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe(); + resetConnection = void 0; + }, "cancelReset"); + var reset = /* @__PURE__ */ __name(function() { + cancelReset(); + connection = subject = void 0; + hasCompleted = hasErrored = false; + }, "reset"); + var resetAndUnsubscribe = /* @__PURE__ */ __name(function() { + var conn = connection; + reset(); + conn === null || conn === void 0 ? void 0 : conn.unsubscribe(); + }, "resetAndUnsubscribe"); + return lift_1.operate(function(source, subscriber) { + refCount++; + if (!hasErrored && !hasCompleted) { + cancelReset(); + } + var dest = subject = subject !== null && subject !== void 0 ? subject : connector(); + subscriber.add(function() { + refCount--; + if (refCount === 0 && !hasErrored && !hasCompleted) { + resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero); + } + }); + dest.subscribe(subscriber); + if (!connection && refCount > 0) { + connection = new Subscriber_1.SafeSubscriber({ + next: /* @__PURE__ */ __name(function(value) { + return dest.next(value); + }, "next"), + error: /* @__PURE__ */ __name(function(err) { + hasErrored = true; + cancelReset(); + resetConnection = handleReset(reset, resetOnError, err); + dest.error(err); + }, "error"), + complete: /* @__PURE__ */ __name(function() { + hasCompleted = true; + cancelReset(); + resetConnection = handleReset(reset, resetOnComplete); + dest.complete(); + }, "complete") + }); + innerFrom_1.innerFrom(source).subscribe(connection); + } + })(wrapperSource); + }; + } + __name(share, "share"); + exports.share = share; + function handleReset(reset, on) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + if (on === true) { + reset(); + return; + } + if (on === false) { + return; + } + var onSubscriber = new Subscriber_1.SafeSubscriber({ + next: /* @__PURE__ */ __name(function() { + onSubscriber.unsubscribe(); + reset(); + }, "next") + }); + return innerFrom_1.innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber); + } + __name(handleReset, "handleReset"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js +var require_shareReplay = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.shareReplay = void 0; + var ReplaySubject_1 = require_ReplaySubject(); + var share_1 = require_share(); + function shareReplay(configOrBufferSize, windowTime, scheduler) { + var _a, _b, _c; + var bufferSize; + var refCount = false; + if (configOrBufferSize && typeof configOrBufferSize === "object") { + _a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler; + } else { + bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity; + } + return share_1.share({ + connector: /* @__PURE__ */ __name(function() { + return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler); + }, "connector"), + resetOnError: true, + resetOnComplete: false, + resetOnRefCountZero: refCount + }); + } + __name(shareReplay, "shareReplay"); + exports.shareReplay = shareReplay; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/SequenceError.js +var require_SequenceError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/SequenceError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SequenceError = void 0; + var createErrorClass_1 = require_createErrorClass(); + exports.SequenceError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function SequenceErrorImpl(message) { + _super(this); + this.name = "SequenceError"; + this.message = message; + }, "SequenceErrorImpl"); + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js +var require_NotFoundError = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NotFoundError = void 0; + var createErrorClass_1 = require_createErrorClass(); + exports.NotFoundError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function NotFoundErrorImpl(message) { + _super(this); + this.name = "NotFoundError"; + this.message = message; + }, "NotFoundErrorImpl"); + }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/single.js +var require_single = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/single.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.single = void 0; + var EmptyError_1 = require_EmptyError(); + var SequenceError_1 = require_SequenceError(); + var NotFoundError_1 = require_NotFoundError(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function single(predicate) { + return lift_1.operate(function(source, subscriber) { + var hasValue = false; + var singleValue; + var seenValue = false; + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + seenValue = true; + if (!predicate || predicate(value, index++, source)) { + hasValue && subscriber.error(new SequenceError_1.SequenceError("Too many matching values")); + hasValue = true; + singleValue = value; + } + }, function() { + if (hasValue) { + subscriber.next(singleValue); + subscriber.complete(); + } else { + subscriber.error(seenValue ? new NotFoundError_1.NotFoundError("No matching values") : new EmptyError_1.EmptyError()); + } + })); + }); + } + __name(single, "single"); + exports.single = single; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skip.js +var require_skip = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skip.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.skip = void 0; + var filter_1 = require_filter2(); + function skip(count) { + return filter_1.filter(function(_, index) { + return count <= index; + }); + } + __name(skip, "skip"); + exports.skip = skip; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skipLast.js +var require_skipLast = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skipLast.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.skipLast = void 0; + var identity_1 = require_identity(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function skipLast(skipCount) { + return skipCount <= 0 ? identity_1.identity : lift_1.operate(function(source, subscriber) { + var ring = new Array(skipCount); + var seen = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var valueIndex = seen++; + if (valueIndex < skipCount) { + ring[valueIndex] = value; + } else { + var index = valueIndex % skipCount; + var oldValue = ring[index]; + ring[index] = value; + subscriber.next(oldValue); + } + })); + return function() { + ring = null; + }; + }); + } + __name(skipLast, "skipLast"); + exports.skipLast = skipLast; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js +var require_skipUntil = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.skipUntil = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + var noop_1 = require_noop(); + function skipUntil(notifier) { + return lift_1.operate(function(source, subscriber) { + var taking = false; + var skipSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe(); + taking = true; + }, noop_1.noop); + innerFrom_1.innerFrom(notifier).subscribe(skipSubscriber); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return taking && subscriber.next(value); + })); + }); + } + __name(skipUntil, "skipUntil"); + exports.skipUntil = skipUntil; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js +var require_skipWhile = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.skipWhile = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function skipWhile(predicate) { + return lift_1.operate(function(source, subscriber) { + var taking = false; + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); + })); + }); + } + __name(skipWhile, "skipWhile"); + exports.skipWhile = skipWhile; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/startWith.js +var require_startWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/startWith.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.startWith = void 0; + var concat_1 = require_concat3(); + var args_1 = require_args(); + var lift_1 = require_lift(); + function startWith() { + var values = []; + for (var _i = 0; _i < arguments.length; _i++) { + values[_i] = arguments[_i]; + } + var scheduler = args_1.popScheduler(values); + return lift_1.operate(function(source, subscriber) { + (scheduler ? concat_1.concat(values, source, scheduler) : concat_1.concat(values, source)).subscribe(subscriber); + }); + } + __name(startWith, "startWith"); + exports.startWith = startWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchMap.js +var require_switchMap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchMap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.switchMap = void 0; + var innerFrom_1 = require_innerFrom(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function switchMap(project, resultSelector) { + return lift_1.operate(function(source, subscriber) { + var innerSubscriber = null; + var index = 0; + var isComplete = false; + var checkComplete = /* @__PURE__ */ __name(function() { + return isComplete && !innerSubscriber && subscriber.complete(); + }, "checkComplete"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); + var innerIndex = 0; + var outerIndex = index++; + innerFrom_1.innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(innerValue) { + return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); + }, function() { + innerSubscriber = null; + checkComplete(); + })); + }, function() { + isComplete = true; + checkComplete(); + })); + }); + } + __name(switchMap, "switchMap"); + exports.switchMap = switchMap; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchAll.js +var require_switchAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.switchAll = void 0; + var switchMap_1 = require_switchMap(); + var identity_1 = require_identity(); + function switchAll() { + return switchMap_1.switchMap(identity_1.identity); + } + __name(switchAll, "switchAll"); + exports.switchAll = switchAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js +var require_switchMapTo = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.switchMapTo = void 0; + var switchMap_1 = require_switchMap(); + var isFunction_1 = require_isFunction(); + function switchMapTo(innerObservable, resultSelector) { + return isFunction_1.isFunction(resultSelector) ? switchMap_1.switchMap(function() { + return innerObservable; + }, resultSelector) : switchMap_1.switchMap(function() { + return innerObservable; + }); + } + __name(switchMapTo, "switchMapTo"); + exports.switchMapTo = switchMapTo; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchScan.js +var require_switchScan = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/switchScan.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.switchScan = void 0; + var switchMap_1 = require_switchMap(); + var lift_1 = require_lift(); + function switchScan(accumulator, seed) { + return lift_1.operate(function(source, subscriber) { + var state = seed; + switchMap_1.switchMap(function(value, index) { + return accumulator(state, value, index); + }, function(_, innerValue) { + return state = innerValue, innerValue; + })(source).subscribe(subscriber); + return function() { + state = null; + }; + }); + } + __name(switchScan, "switchScan"); + exports.switchScan = switchScan; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js +var require_takeUntil = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.takeUntil = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + var noop_1 = require_noop(); + function takeUntil(notifier) { + return lift_1.operate(function(source, subscriber) { + innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + return subscriber.complete(); + }, noop_1.noop)); + !subscriber.closed && source.subscribe(subscriber); + }); + } + __name(takeUntil, "takeUntil"); + exports.takeUntil = takeUntil; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js +var require_takeWhile = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.takeWhile = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function takeWhile(predicate, inclusive) { + if (inclusive === void 0) { + inclusive = false; + } + return lift_1.operate(function(source, subscriber) { + var index = 0; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var result = predicate(value, index++); + (result || inclusive) && subscriber.next(value); + !result && subscriber.complete(); + })); + }); + } + __name(takeWhile, "takeWhile"); + exports.takeWhile = takeWhile; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/tap.js +var require_tap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/tap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.tap = void 0; + var isFunction_1 = require_isFunction(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var identity_1 = require_identity(); + function tap(observerOrNext, error, complete) { + var tapObserver = isFunction_1.isFunction(observerOrNext) || error || complete ? { next: observerOrNext, error, complete } : observerOrNext; + return tapObserver ? lift_1.operate(function(source, subscriber) { + var _a; + (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); + var isUnsub = true; + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var _a2; + (_a2 = tapObserver.next) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, value); + subscriber.next(value); + }, function() { + var _a2; + isUnsub = false; + (_a2 = tapObserver.complete) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); + subscriber.complete(); + }, function(err) { + var _a2; + isUnsub = false; + (_a2 = tapObserver.error) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, err); + subscriber.error(err); + }, function() { + var _a2, _b; + if (isUnsub) { + (_a2 = tapObserver.unsubscribe) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); + } + (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); + })); + }) : identity_1.identity; + } + __name(tap, "tap"); + exports.tap = tap; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/throttle.js +var require_throttle = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/throttle.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.throttle = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + function throttle(durationSelector, config) { + return lift_1.operate(function(source, subscriber) { + var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c; + var hasValue = false; + var sendValue = null; + var throttled = null; + var isComplete = false; + var endThrottling = /* @__PURE__ */ __name(function() { + throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe(); + throttled = null; + if (trailing) { + send(); + isComplete && subscriber.complete(); + } + }, "endThrottling"); + var cleanupThrottling = /* @__PURE__ */ __name(function() { + throttled = null; + isComplete && subscriber.complete(); + }, "cleanupThrottling"); + var startThrottle = /* @__PURE__ */ __name(function(value) { + return throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)); + }, "startThrottle"); + var send = /* @__PURE__ */ __name(function() { + if (hasValue) { + hasValue = false; + var value = sendValue; + sendValue = null; + subscriber.next(value); + !isComplete && startThrottle(value); + } + }, "send"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + hasValue = true; + sendValue = value; + !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value)); + }, function() { + isComplete = true; + !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete(); + })); + }); + } + __name(throttle, "throttle"); + exports.throttle = throttle; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js +var require_throttleTime = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.throttleTime = void 0; + var async_1 = require_async(); + var throttle_1 = require_throttle(); + var timer_1 = require_timer(); + function throttleTime(duration, scheduler, config) { + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + var duration$ = timer_1.timer(duration, scheduler); + return throttle_1.throttle(function() { + return duration$; + }, config); + } + __name(throttleTime, "throttleTime"); + exports.throttleTime = throttleTime; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js +var require_timeInterval = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.TimeInterval = exports.timeInterval = void 0; + var async_1 = require_async(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function timeInterval(scheduler) { + if (scheduler === void 0) { + scheduler = async_1.asyncScheduler; + } + return lift_1.operate(function(source, subscriber) { + var last = scheduler.now(); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var now = scheduler.now(); + var interval = now - last; + last = now; + subscriber.next(new TimeInterval(value, interval)); + })); + }); + } + __name(timeInterval, "timeInterval"); + exports.timeInterval = timeInterval; + var TimeInterval = /* @__PURE__ */ (function() { + function TimeInterval2(value, interval) { + this.value = value; + this.interval = interval; + } + __name(TimeInterval2, "TimeInterval"); + return TimeInterval2; + })(); + exports.TimeInterval = TimeInterval; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timeout.js +var require_timeout = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timeout.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.timeout = exports.TimeoutError = void 0; + var async_1 = require_async(); + var isDate_1 = require_isDate(); + var lift_1 = require_lift(); + var innerFrom_1 = require_innerFrom(); + var createErrorClass_1 = require_createErrorClass(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var executeSchedule_1 = require_executeSchedule(); + exports.TimeoutError = createErrorClass_1.createErrorClass(function(_super) { + return /* @__PURE__ */ __name(function TimeoutErrorImpl(info) { + if (info === void 0) { + info = null; + } + _super(this); + this.message = "Timeout has occurred"; + this.name = "TimeoutError"; + this.info = info; + }, "TimeoutErrorImpl"); + }); + function timeout(config, schedulerArg) { + var _a = isDate_1.isValidDate(config) ? { first: config } : typeof config === "number" ? { each: config } : config, first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : async_1.asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d; + if (first == null && each == null) { + throw new TypeError("No timeout provided."); + } + return lift_1.operate(function(source, subscriber) { + var originalSourceSubscription; + var timerSubscription; + var lastValue = null; + var seen = 0; + var startTimer = /* @__PURE__ */ __name(function(delay) { + timerSubscription = executeSchedule_1.executeSchedule(subscriber, scheduler, function() { + try { + originalSourceSubscription.unsubscribe(); + innerFrom_1.innerFrom(_with({ + meta, + lastValue, + seen + })).subscribe(subscriber); + } catch (err) { + subscriber.error(err); + } + }, delay); + }, "startTimer"); + originalSourceSubscription = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); + seen++; + subscriber.next(lastValue = value); + each > 0 && startTimer(each); + }, void 0, void 0, function() { + if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) { + timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); + } + lastValue = null; + })); + !seen && startTimer(first != null ? typeof first === "number" ? first : +first - scheduler.now() : each); + }); + } + __name(timeout, "timeout"); + exports.timeout = timeout; + function timeoutErrorFactory(info) { + throw new exports.TimeoutError(info); + } + __name(timeoutErrorFactory, "timeoutErrorFactory"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js +var require_timeoutWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.timeoutWith = void 0; + var async_1 = require_async(); + var isDate_1 = require_isDate(); + var timeout_1 = require_timeout(); + function timeoutWith(due, withObservable, scheduler) { + var first; + var each; + var _with; + scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async; + if (isDate_1.isValidDate(due)) { + first = due; + } else if (typeof due === "number") { + each = due; + } + if (withObservable) { + _with = /* @__PURE__ */ __name(function() { + return withObservable; + }, "_with"); + } else { + throw new TypeError("No observable provided to switch to"); + } + if (first == null && each == null) { + throw new TypeError("No timeout provided."); + } + return timeout_1.timeout({ + first, + each, + scheduler, + with: _with + }); + } + __name(timeoutWith, "timeoutWith"); + exports.timeoutWith = timeoutWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timestamp.js +var require_timestamp = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/timestamp.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.timestamp = void 0; + var dateTimestampProvider_1 = require_dateTimestampProvider(); + var map_1 = require_map2(); + function timestamp(timestampProvider) { + if (timestampProvider === void 0) { + timestampProvider = dateTimestampProvider_1.dateTimestampProvider; + } + return map_1.map(function(value) { + return { value, timestamp: timestampProvider.now() }; + }); + } + __name(timestamp, "timestamp"); + exports.timestamp = timestamp; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/window.js +var require_window = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/window.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.window = void 0; + var Subject_1 = require_Subject(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var noop_1 = require_noop(); + var innerFrom_1 = require_innerFrom(); + function window(windowBoundaries) { + return lift_1.operate(function(source, subscriber) { + var windowSubject = new Subject_1.Subject(); + subscriber.next(windowSubject.asObservable()); + var errorHandler = /* @__PURE__ */ __name(function(err) { + windowSubject.error(err); + subscriber.error(err); + }, "errorHandler"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); + }, function() { + windowSubject.complete(); + subscriber.complete(); + }, errorHandler)); + innerFrom_1.innerFrom(windowBoundaries).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() { + windowSubject.complete(); + subscriber.next(windowSubject = new Subject_1.Subject()); + }, noop_1.noop, errorHandler)); + return function() { + windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe(); + windowSubject = null; + }; + }); + } + __name(window, "window"); + exports.window = window; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowCount.js +var require_windowCount = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowCount.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.windowCount = void 0; + var Subject_1 = require_Subject(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + function windowCount(windowSize, startWindowEvery) { + if (startWindowEvery === void 0) { + startWindowEvery = 0; + } + var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize; + return lift_1.operate(function(source, subscriber) { + var windows = [new Subject_1.Subject()]; + var starts = []; + var count = 0; + subscriber.next(windows[0].asObservable()); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var e_1, _a; + try { + for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) { + var window_1 = windows_1_1.value; + window_1.next(value); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1); + } finally { + if (e_1) throw e_1.error; + } + } + var c = count - windowSize + 1; + if (c >= 0 && c % startEvery === 0) { + windows.shift().complete(); + } + if (++count % startEvery === 0) { + var window_2 = new Subject_1.Subject(); + windows.push(window_2); + subscriber.next(window_2.asObservable()); + } + }, function() { + while (windows.length > 0) { + windows.shift().complete(); + } + subscriber.complete(); + }, function(err) { + while (windows.length > 0) { + windows.shift().error(err); + } + subscriber.error(err); + }, function() { + starts = null; + windows = null; + })); + }); + } + __name(windowCount, "windowCount"); + exports.windowCount = windowCount; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowTime.js +var require_windowTime = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowTime.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.windowTime = void 0; + var Subject_1 = require_Subject(); + var async_1 = require_async(); + var Subscription_1 = require_Subscription(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var arrRemove_1 = require_arrRemove(); + var args_1 = require_args(); + var executeSchedule_1 = require_executeSchedule(); + function windowTime(windowTimeSpan) { + var _a, _b; + var otherArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + otherArgs[_i - 1] = arguments[_i]; + } + var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler; + var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; + var maxWindowSize = otherArgs[1] || Infinity; + return lift_1.operate(function(source, subscriber) { + var windowRecords = []; + var restartOnClose = false; + var closeWindow = /* @__PURE__ */ __name(function(record) { + var window = record.window, subs = record.subs; + window.complete(); + subs.unsubscribe(); + arrRemove_1.arrRemove(windowRecords, record); + restartOnClose && startWindow(); + }, "closeWindow"); + var startWindow = /* @__PURE__ */ __name(function() { + if (windowRecords) { + var subs = new Subscription_1.Subscription(); + subscriber.add(subs); + var window_1 = new Subject_1.Subject(); + var record_1 = { + window: window_1, + subs, + seen: 0 + }; + windowRecords.push(record_1); + subscriber.next(window_1.asObservable()); + executeSchedule_1.executeSchedule(subs, scheduler, function() { + return closeWindow(record_1); + }, windowTimeSpan); + } + }, "startWindow"); + if (windowCreationInterval !== null && windowCreationInterval >= 0) { + executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true); + } else { + restartOnClose = true; + } + startWindow(); + var loop = /* @__PURE__ */ __name(function(cb) { + return windowRecords.slice().forEach(cb); + }, "loop"); + var terminate = /* @__PURE__ */ __name(function(cb) { + loop(function(_a2) { + var window = _a2.window; + return cb(window); + }); + cb(subscriber); + subscriber.unsubscribe(); + }, "terminate"); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + loop(function(record) { + record.window.next(value); + maxWindowSize <= ++record.seen && closeWindow(record); + }); + }, function() { + return terminate(function(consumer) { + return consumer.complete(); + }); + }, function(err) { + return terminate(function(consumer) { + return consumer.error(err); + }); + })); + return function() { + windowRecords = null; + }; + }); + } + __name(windowTime, "windowTime"); + exports.windowTime = windowTime; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js +var require_windowToggle = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js"(exports) { + "use strict"; + var __values = exports && exports.__values || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: /* @__PURE__ */ __name(function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, "next") + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.windowToggle = void 0; + var Subject_1 = require_Subject(); + var Subscription_1 = require_Subscription(); + var lift_1 = require_lift(); + var innerFrom_1 = require_innerFrom(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var noop_1 = require_noop(); + var arrRemove_1 = require_arrRemove(); + function windowToggle(openings, closingSelector) { + return lift_1.operate(function(source, subscriber) { + var windows = []; + var handleError = /* @__PURE__ */ __name(function(err) { + while (0 < windows.length) { + windows.shift().error(err); + } + subscriber.error(err); + }, "handleError"); + innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(openValue) { + var window = new Subject_1.Subject(); + windows.push(window); + var closingSubscription = new Subscription_1.Subscription(); + var closeWindow = /* @__PURE__ */ __name(function() { + arrRemove_1.arrRemove(windows, window); + window.complete(); + closingSubscription.unsubscribe(); + }, "closeWindow"); + var closingNotifier; + try { + closingNotifier = innerFrom_1.innerFrom(closingSelector(openValue)); + } catch (err) { + handleError(err); + return; + } + subscriber.next(window.asObservable()); + closingSubscription.add(closingNotifier.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, closeWindow, noop_1.noop, handleError))); + }, noop_1.noop)); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + var e_1, _a; + var windowsCopy = windows.slice(); + try { + for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) { + var window_1 = windowsCopy_1_1.value; + window_1.next(value); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1); + } finally { + if (e_1) throw e_1.error; + } + } + }, function() { + while (0 < windows.length) { + windows.shift().complete(); + } + subscriber.complete(); + }, handleError, function() { + while (0 < windows.length) { + windows.shift().unsubscribe(); + } + })); + }); + } + __name(windowToggle, "windowToggle"); + exports.windowToggle = windowToggle; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js +var require_windowWhen = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.windowWhen = void 0; + var Subject_1 = require_Subject(); + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + function windowWhen(closingSelector) { + return lift_1.operate(function(source, subscriber) { + var window; + var closingSubscriber; + var handleError = /* @__PURE__ */ __name(function(err) { + window.error(err); + subscriber.error(err); + }, "handleError"); + var openWindow = /* @__PURE__ */ __name(function() { + closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); + window === null || window === void 0 ? void 0 : window.complete(); + window = new Subject_1.Subject(); + subscriber.next(window.asObservable()); + var closingNotifier; + try { + closingNotifier = innerFrom_1.innerFrom(closingSelector()); + } catch (err) { + handleError(err); + return; + } + closingNotifier.subscribe(closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openWindow, openWindow, handleError)); + }, "openWindow"); + openWindow(); + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + return window.next(value); + }, function() { + window.complete(); + subscriber.complete(); + }, handleError, function() { + closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); + window = null; + })); + }); + } + __name(windowWhen, "windowWhen"); + exports.windowWhen = windowWhen; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js +var require_withLatestFrom = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.withLatestFrom = void 0; + var lift_1 = require_lift(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var innerFrom_1 = require_innerFrom(); + var identity_1 = require_identity(); + var noop_1 = require_noop(); + var args_1 = require_args(); + function withLatestFrom() { + var inputs = []; + for (var _i = 0; _i < arguments.length; _i++) { + inputs[_i] = arguments[_i]; + } + var project = args_1.popResultSelector(inputs); + return lift_1.operate(function(source, subscriber) { + var len = inputs.length; + var otherValues = new Array(len); + var hasValue = inputs.map(function() { + return false; + }); + var ready = false; + var _loop_1 = /* @__PURE__ */ __name(function(i2) { + innerFrom_1.innerFrom(inputs[i2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + otherValues[i2] = value; + if (!ready && !hasValue[i2]) { + hasValue[i2] = true; + (ready = hasValue.every(identity_1.identity)) && (hasValue = null); + } + }, noop_1.noop)); + }, "_loop_1"); + for (var i = 0; i < len; i++) { + _loop_1(i); + } + source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + if (ready) { + var values = __spreadArray([value], __read(otherValues)); + subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values); + } + })); + }); + } + __name(withLatestFrom, "withLatestFrom"); + exports.withLatestFrom = withLatestFrom; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/zip.js +var require_zip2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/zip.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.zip = void 0; + var Observable_1 = require_Observable(); + var innerFrom_1 = require_innerFrom(); + var argsOrArgArray_1 = require_argsOrArgArray(); + var empty_1 = require_empty(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var args_1 = require_args(); + function zip() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var resultSelector = args_1.popResultSelector(args); + var sources = argsOrArgArray_1.argsOrArgArray(args); + return sources.length ? new Observable_1.Observable(function(subscriber) { + var buffers = sources.map(function() { + return []; + }); + var completed = sources.map(function() { + return false; + }); + subscriber.add(function() { + buffers = completed = null; + }); + var _loop_1 = /* @__PURE__ */ __name(function(sourceIndex2) { + innerFrom_1.innerFrom(sources[sourceIndex2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + buffers[sourceIndex2].push(value); + if (buffers.every(function(buffer) { + return buffer.length; + })) { + var result = buffers.map(function(buffer) { + return buffer.shift(); + }); + subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result); + if (buffers.some(function(buffer, i) { + return !buffer.length && completed[i]; + })) { + subscriber.complete(); + } + } + }, function() { + completed[sourceIndex2] = true; + !buffers[sourceIndex2].length && subscriber.complete(); + })); + }, "_loop_1"); + for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) { + _loop_1(sourceIndex); + } + return function() { + buffers = completed = null; + }; + }) : empty_1.EMPTY; + } + __name(zip, "zip"); + exports.zip = zip; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/zip.js +var require_zip3 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/zip.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.zip = void 0; + var zip_1 = require_zip2(); + var lift_1 = require_lift(); + function zip() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + return lift_1.operate(function(source, subscriber) { + zip_1.zip.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber); + }); + } + __name(zip, "zip"); + exports.zip = zip; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/zipAll.js +var require_zipAll = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/zipAll.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.zipAll = void 0; + var zip_1 = require_zip2(); + var joinAllInternals_1 = require_joinAllInternals(); + function zipAll(project) { + return joinAllInternals_1.joinAllInternals(zip_1.zip, project); + } + __name(zipAll, "zipAll"); + exports.zipAll = zipAll; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/zipWith.js +var require_zipWith = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/operators/zipWith.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.zipWith = void 0; + var zip_1 = require_zip3(); + function zipWith() { + var otherInputs = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherInputs[_i] = arguments[_i]; + } + return zip_1.zip.apply(void 0, __spreadArray([], __read(otherInputs))); + } + __name(zipWith, "zipWith"); + exports.zipWith = zipWith; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/operators/index.js +var require_operators = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/operators/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mergeAll = exports.merge = exports.max = exports.materialize = exports.mapTo = exports.map = exports.last = exports.isEmpty = exports.ignoreElements = exports.groupBy = exports.first = exports.findIndex = exports.find = exports.finalize = exports.filter = exports.expand = exports.exhaustMap = exports.exhaustAll = exports.exhaust = exports.every = exports.endWith = exports.elementAt = exports.distinctUntilKeyChanged = exports.distinctUntilChanged = exports.distinct = exports.dematerialize = exports.delayWhen = exports.delay = exports.defaultIfEmpty = exports.debounceTime = exports.debounce = exports.count = exports.connect = exports.concatWith = exports.concatMapTo = exports.concatMap = exports.concatAll = exports.concat = exports.combineLatestWith = exports.combineLatest = exports.combineLatestAll = exports.combineAll = exports.catchError = exports.bufferWhen = exports.bufferToggle = exports.bufferTime = exports.bufferCount = exports.buffer = exports.auditTime = exports.audit = void 0; + exports.timeInterval = exports.throwIfEmpty = exports.throttleTime = exports.throttle = exports.tap = exports.takeWhile = exports.takeUntil = exports.takeLast = exports.take = exports.switchScan = exports.switchMapTo = exports.switchMap = exports.switchAll = exports.subscribeOn = exports.startWith = exports.skipWhile = exports.skipUntil = exports.skipLast = exports.skip = exports.single = exports.shareReplay = exports.share = exports.sequenceEqual = exports.scan = exports.sampleTime = exports.sample = exports.refCount = exports.retryWhen = exports.retry = exports.repeatWhen = exports.repeat = exports.reduce = exports.raceWith = exports.race = exports.publishReplay = exports.publishLast = exports.publishBehavior = exports.publish = exports.pluck = exports.partition = exports.pairwise = exports.onErrorResumeNext = exports.observeOn = exports.multicast = exports.min = exports.mergeWith = exports.mergeScan = exports.mergeMapTo = exports.mergeMap = exports.flatMap = void 0; + exports.zipWith = exports.zipAll = exports.zip = exports.withLatestFrom = exports.windowWhen = exports.windowToggle = exports.windowTime = exports.windowCount = exports.window = exports.toArray = exports.timestamp = exports.timeoutWith = exports.timeout = void 0; + var audit_1 = require_audit(); + Object.defineProperty(exports, "audit", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return audit_1.audit; + }, "get") }); + var auditTime_1 = require_auditTime(); + Object.defineProperty(exports, "auditTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return auditTime_1.auditTime; + }, "get") }); + var buffer_1 = require_buffer(); + Object.defineProperty(exports, "buffer", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return buffer_1.buffer; + }, "get") }); + var bufferCount_1 = require_bufferCount(); + Object.defineProperty(exports, "bufferCount", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferCount_1.bufferCount; + }, "get") }); + var bufferTime_1 = require_bufferTime(); + Object.defineProperty(exports, "bufferTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferTime_1.bufferTime; + }, "get") }); + var bufferToggle_1 = require_bufferToggle(); + Object.defineProperty(exports, "bufferToggle", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferToggle_1.bufferToggle; + }, "get") }); + var bufferWhen_1 = require_bufferWhen(); + Object.defineProperty(exports, "bufferWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferWhen_1.bufferWhen; + }, "get") }); + var catchError_1 = require_catchError(); + Object.defineProperty(exports, "catchError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return catchError_1.catchError; + }, "get") }); + var combineAll_1 = require_combineAll(); + Object.defineProperty(exports, "combineAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineAll_1.combineAll; + }, "get") }); + var combineLatestAll_1 = require_combineLatestAll(); + Object.defineProperty(exports, "combineLatestAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineLatestAll_1.combineLatestAll; + }, "get") }); + var combineLatest_1 = require_combineLatest2(); + Object.defineProperty(exports, "combineLatest", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineLatest_1.combineLatest; + }, "get") }); + var combineLatestWith_1 = require_combineLatestWith(); + Object.defineProperty(exports, "combineLatestWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineLatestWith_1.combineLatestWith; + }, "get") }); + var concat_1 = require_concat2(); + Object.defineProperty(exports, "concat", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concat_1.concat; + }, "get") }); + var concatAll_1 = require_concatAll(); + Object.defineProperty(exports, "concatAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatAll_1.concatAll; + }, "get") }); + var concatMap_1 = require_concatMap(); + Object.defineProperty(exports, "concatMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatMap_1.concatMap; + }, "get") }); + var concatMapTo_1 = require_concatMapTo(); + Object.defineProperty(exports, "concatMapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatMapTo_1.concatMapTo; + }, "get") }); + var concatWith_1 = require_concatWith(); + Object.defineProperty(exports, "concatWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatWith_1.concatWith; + }, "get") }); + var connect_1 = require_connect(); + Object.defineProperty(exports, "connect", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return connect_1.connect; + }, "get") }); + var count_1 = require_count(); + Object.defineProperty(exports, "count", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return count_1.count; + }, "get") }); + var debounce_1 = require_debounce(); + Object.defineProperty(exports, "debounce", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return debounce_1.debounce; + }, "get") }); + var debounceTime_1 = require_debounceTime(); + Object.defineProperty(exports, "debounceTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return debounceTime_1.debounceTime; + }, "get") }); + var defaultIfEmpty_1 = require_defaultIfEmpty(); + Object.defineProperty(exports, "defaultIfEmpty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return defaultIfEmpty_1.defaultIfEmpty; + }, "get") }); + var delay_1 = require_delay(); + Object.defineProperty(exports, "delay", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return delay_1.delay; + }, "get") }); + var delayWhen_1 = require_delayWhen(); + Object.defineProperty(exports, "delayWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return delayWhen_1.delayWhen; + }, "get") }); + var dematerialize_1 = require_dematerialize(); + Object.defineProperty(exports, "dematerialize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return dematerialize_1.dematerialize; + }, "get") }); + var distinct_1 = require_distinct(); + Object.defineProperty(exports, "distinct", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return distinct_1.distinct; + }, "get") }); + var distinctUntilChanged_1 = require_distinctUntilChanged(); + Object.defineProperty(exports, "distinctUntilChanged", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return distinctUntilChanged_1.distinctUntilChanged; + }, "get") }); + var distinctUntilKeyChanged_1 = require_distinctUntilKeyChanged(); + Object.defineProperty(exports, "distinctUntilKeyChanged", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return distinctUntilKeyChanged_1.distinctUntilKeyChanged; + }, "get") }); + var elementAt_1 = require_elementAt(); + Object.defineProperty(exports, "elementAt", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return elementAt_1.elementAt; + }, "get") }); + var endWith_1 = require_endWith(); + Object.defineProperty(exports, "endWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return endWith_1.endWith; + }, "get") }); + var every_1 = require_every(); + Object.defineProperty(exports, "every", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return every_1.every; + }, "get") }); + var exhaust_1 = require_exhaust(); + Object.defineProperty(exports, "exhaust", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return exhaust_1.exhaust; + }, "get") }); + var exhaustAll_1 = require_exhaustAll(); + Object.defineProperty(exports, "exhaustAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return exhaustAll_1.exhaustAll; + }, "get") }); + var exhaustMap_1 = require_exhaustMap(); + Object.defineProperty(exports, "exhaustMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return exhaustMap_1.exhaustMap; + }, "get") }); + var expand_1 = require_expand(); + Object.defineProperty(exports, "expand", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return expand_1.expand; + }, "get") }); + var filter_1 = require_filter2(); + Object.defineProperty(exports, "filter", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return filter_1.filter; + }, "get") }); + var finalize_1 = require_finalize(); + Object.defineProperty(exports, "finalize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return finalize_1.finalize; + }, "get") }); + var find_1 = require_find(); + Object.defineProperty(exports, "find", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return find_1.find; + }, "get") }); + var findIndex_1 = require_findIndex(); + Object.defineProperty(exports, "findIndex", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return findIndex_1.findIndex; + }, "get") }); + var first_1 = require_first(); + Object.defineProperty(exports, "first", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return first_1.first; + }, "get") }); + var groupBy_1 = require_groupBy(); + Object.defineProperty(exports, "groupBy", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return groupBy_1.groupBy; + }, "get") }); + var ignoreElements_1 = require_ignoreElements(); + Object.defineProperty(exports, "ignoreElements", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return ignoreElements_1.ignoreElements; + }, "get") }); + var isEmpty_1 = require_isEmpty(); + Object.defineProperty(exports, "isEmpty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return isEmpty_1.isEmpty; + }, "get") }); + var last_1 = require_last(); + Object.defineProperty(exports, "last", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return last_1.last; + }, "get") }); + var map_1 = require_map2(); + Object.defineProperty(exports, "map", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return map_1.map; + }, "get") }); + var mapTo_1 = require_mapTo(); + Object.defineProperty(exports, "mapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mapTo_1.mapTo; + }, "get") }); + var materialize_1 = require_materialize(); + Object.defineProperty(exports, "materialize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return materialize_1.materialize; + }, "get") }); + var max_1 = require_max(); + Object.defineProperty(exports, "max", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return max_1.max; + }, "get") }); + var merge_1 = require_merge(); + Object.defineProperty(exports, "merge", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return merge_1.merge; + }, "get") }); + var mergeAll_1 = require_mergeAll(); + Object.defineProperty(exports, "mergeAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeAll_1.mergeAll; + }, "get") }); + var flatMap_1 = require_flatMap(); + Object.defineProperty(exports, "flatMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return flatMap_1.flatMap; + }, "get") }); + var mergeMap_1 = require_mergeMap(); + Object.defineProperty(exports, "mergeMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeMap_1.mergeMap; + }, "get") }); + var mergeMapTo_1 = require_mergeMapTo(); + Object.defineProperty(exports, "mergeMapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeMapTo_1.mergeMapTo; + }, "get") }); + var mergeScan_1 = require_mergeScan(); + Object.defineProperty(exports, "mergeScan", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeScan_1.mergeScan; + }, "get") }); + var mergeWith_1 = require_mergeWith(); + Object.defineProperty(exports, "mergeWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeWith_1.mergeWith; + }, "get") }); + var min_1 = require_min(); + Object.defineProperty(exports, "min", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return min_1.min; + }, "get") }); + var multicast_1 = require_multicast(); + Object.defineProperty(exports, "multicast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return multicast_1.multicast; + }, "get") }); + var observeOn_1 = require_observeOn(); + Object.defineProperty(exports, "observeOn", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return observeOn_1.observeOn; + }, "get") }); + var onErrorResumeNextWith_1 = require_onErrorResumeNextWith(); + Object.defineProperty(exports, "onErrorResumeNext", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return onErrorResumeNextWith_1.onErrorResumeNext; + }, "get") }); + var pairwise_1 = require_pairwise(); + Object.defineProperty(exports, "pairwise", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return pairwise_1.pairwise; + }, "get") }); + var partition_1 = require_partition(); + Object.defineProperty(exports, "partition", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return partition_1.partition; + }, "get") }); + var pluck_1 = require_pluck(); + Object.defineProperty(exports, "pluck", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return pluck_1.pluck; + }, "get") }); + var publish_1 = require_publish(); + Object.defineProperty(exports, "publish", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publish_1.publish; + }, "get") }); + var publishBehavior_1 = require_publishBehavior(); + Object.defineProperty(exports, "publishBehavior", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publishBehavior_1.publishBehavior; + }, "get") }); + var publishLast_1 = require_publishLast(); + Object.defineProperty(exports, "publishLast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publishLast_1.publishLast; + }, "get") }); + var publishReplay_1 = require_publishReplay(); + Object.defineProperty(exports, "publishReplay", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publishReplay_1.publishReplay; + }, "get") }); + var race_1 = require_race2(); + Object.defineProperty(exports, "race", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return race_1.race; + }, "get") }); + var raceWith_1 = require_raceWith(); + Object.defineProperty(exports, "raceWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return raceWith_1.raceWith; + }, "get") }); + var reduce_1 = require_reduce(); + Object.defineProperty(exports, "reduce", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return reduce_1.reduce; + }, "get") }); + var repeat_1 = require_repeat(); + Object.defineProperty(exports, "repeat", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return repeat_1.repeat; + }, "get") }); + var repeatWhen_1 = require_repeatWhen(); + Object.defineProperty(exports, "repeatWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return repeatWhen_1.repeatWhen; + }, "get") }); + var retry_1 = require_retry(); + Object.defineProperty(exports, "retry", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return retry_1.retry; + }, "get") }); + var retryWhen_1 = require_retryWhen(); + Object.defineProperty(exports, "retryWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return retryWhen_1.retryWhen; + }, "get") }); + var refCount_1 = require_refCount(); + Object.defineProperty(exports, "refCount", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return refCount_1.refCount; + }, "get") }); + var sample_1 = require_sample(); + Object.defineProperty(exports, "sample", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return sample_1.sample; + }, "get") }); + var sampleTime_1 = require_sampleTime(); + Object.defineProperty(exports, "sampleTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return sampleTime_1.sampleTime; + }, "get") }); + var scan_1 = require_scan(); + Object.defineProperty(exports, "scan", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return scan_1.scan; + }, "get") }); + var sequenceEqual_1 = require_sequenceEqual(); + Object.defineProperty(exports, "sequenceEqual", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return sequenceEqual_1.sequenceEqual; + }, "get") }); + var share_1 = require_share(); + Object.defineProperty(exports, "share", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return share_1.share; + }, "get") }); + var shareReplay_1 = require_shareReplay(); + Object.defineProperty(exports, "shareReplay", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return shareReplay_1.shareReplay; + }, "get") }); + var single_1 = require_single(); + Object.defineProperty(exports, "single", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return single_1.single; + }, "get") }); + var skip_1 = require_skip(); + Object.defineProperty(exports, "skip", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skip_1.skip; + }, "get") }); + var skipLast_1 = require_skipLast(); + Object.defineProperty(exports, "skipLast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skipLast_1.skipLast; + }, "get") }); + var skipUntil_1 = require_skipUntil(); + Object.defineProperty(exports, "skipUntil", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skipUntil_1.skipUntil; + }, "get") }); + var skipWhile_1 = require_skipWhile(); + Object.defineProperty(exports, "skipWhile", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skipWhile_1.skipWhile; + }, "get") }); + var startWith_1 = require_startWith(); + Object.defineProperty(exports, "startWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return startWith_1.startWith; + }, "get") }); + var subscribeOn_1 = require_subscribeOn(); + Object.defineProperty(exports, "subscribeOn", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return subscribeOn_1.subscribeOn; + }, "get") }); + var switchAll_1 = require_switchAll(); + Object.defineProperty(exports, "switchAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchAll_1.switchAll; + }, "get") }); + var switchMap_1 = require_switchMap(); + Object.defineProperty(exports, "switchMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchMap_1.switchMap; + }, "get") }); + var switchMapTo_1 = require_switchMapTo(); + Object.defineProperty(exports, "switchMapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchMapTo_1.switchMapTo; + }, "get") }); + var switchScan_1 = require_switchScan(); + Object.defineProperty(exports, "switchScan", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchScan_1.switchScan; + }, "get") }); + var take_1 = require_take(); + Object.defineProperty(exports, "take", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return take_1.take; + }, "get") }); + var takeLast_1 = require_takeLast(); + Object.defineProperty(exports, "takeLast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return takeLast_1.takeLast; + }, "get") }); + var takeUntil_1 = require_takeUntil(); + Object.defineProperty(exports, "takeUntil", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return takeUntil_1.takeUntil; + }, "get") }); + var takeWhile_1 = require_takeWhile(); + Object.defineProperty(exports, "takeWhile", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return takeWhile_1.takeWhile; + }, "get") }); + var tap_1 = require_tap(); + Object.defineProperty(exports, "tap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return tap_1.tap; + }, "get") }); + var throttle_1 = require_throttle(); + Object.defineProperty(exports, "throttle", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throttle_1.throttle; + }, "get") }); + var throttleTime_1 = require_throttleTime(); + Object.defineProperty(exports, "throttleTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throttleTime_1.throttleTime; + }, "get") }); + var throwIfEmpty_1 = require_throwIfEmpty(); + Object.defineProperty(exports, "throwIfEmpty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throwIfEmpty_1.throwIfEmpty; + }, "get") }); + var timeInterval_1 = require_timeInterval(); + Object.defineProperty(exports, "timeInterval", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeInterval_1.timeInterval; + }, "get") }); + var timeout_1 = require_timeout(); + Object.defineProperty(exports, "timeout", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeout_1.timeout; + }, "get") }); + var timeoutWith_1 = require_timeoutWith(); + Object.defineProperty(exports, "timeoutWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeoutWith_1.timeoutWith; + }, "get") }); + var timestamp_1 = require_timestamp(); + Object.defineProperty(exports, "timestamp", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timestamp_1.timestamp; + }, "get") }); + var toArray_1 = require_toArray(); + Object.defineProperty(exports, "toArray", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return toArray_1.toArray; + }, "get") }); + var window_1 = require_window(); + Object.defineProperty(exports, "window", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return window_1.window; + }, "get") }); + var windowCount_1 = require_windowCount(); + Object.defineProperty(exports, "windowCount", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowCount_1.windowCount; + }, "get") }); + var windowTime_1 = require_windowTime(); + Object.defineProperty(exports, "windowTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowTime_1.windowTime; + }, "get") }); + var windowToggle_1 = require_windowToggle(); + Object.defineProperty(exports, "windowToggle", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowToggle_1.windowToggle; + }, "get") }); + var windowWhen_1 = require_windowWhen(); + Object.defineProperty(exports, "windowWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowWhen_1.windowWhen; + }, "get") }); + var withLatestFrom_1 = require_withLatestFrom(); + Object.defineProperty(exports, "withLatestFrom", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return withLatestFrom_1.withLatestFrom; + }, "get") }); + var zip_1 = require_zip3(); + Object.defineProperty(exports, "zip", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return zip_1.zip; + }, "get") }); + var zipAll_1 = require_zipAll(); + Object.defineProperty(exports, "zipAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return zipAll_1.zipAll; + }, "get") }); + var zipWith_1 = require_zipWith(); + Object.defineProperty(exports, "zipWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return zipWith_1.zipWith; + }, "get") }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.constants.js +var CLASS_SERIALIZER_OPTIONS; +var init_class_serializer_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.constants.js"() { + CLASS_SERIALIZER_OPTIONS = "class_serializer:options"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js +var import_operators, classTransformer2, pendingClassTransformer, REFLECTOR, ClassSerializerInterceptor; +var init_class_serializer_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js"() { + init_tslib_es6(); + import_operators = __toESM(require_operators(), 1); + init_core(); + init_file_stream(); + init_load_package_util(); + init_shared_utils(); + init_class_serializer_constants(); + classTransformer2 = {}; + REFLECTOR = "Reflector"; + ClassSerializerInterceptor = class ClassSerializerInterceptor2 { + static { + __name(this, "ClassSerializerInterceptor"); + } + reflector; + defaultOptions; + constructor(reflector, defaultOptions = {}) { + this.reflector = reflector; + this.defaultOptions = defaultOptions; + pendingClassTransformer = defaultOptions?.transformerPackage ?? loadPackage("class-transformer", "ClassSerializerInterceptor", () => import("class-transformer")); + if (!(pendingClassTransformer instanceof Promise)) { + classTransformer2 = pendingClassTransformer; + } + } + async intercept(context, next) { + classTransformer2 = await pendingClassTransformer; + const contextOptions = this.getContextOptions(context); + const options = { + ...this.defaultOptions, + ...contextOptions + }; + return next.handle().pipe((0, import_operators.map)((res) => this.serialize(res, options))); + } + /** + * Serializes responses that are non-null objects nor streamable files. + */ + serialize(response, options) { + if (!isObject(response) || response instanceof StreamableFile) { + return response; + } + return Array.isArray(response) ? response.map((item) => this.transformToPlain(item, options)) : this.transformToPlain(response, options); + } + transformToPlain(plainOrClass, options) { + if (!plainOrClass) { + return plainOrClass; + } + if (!options.type) { + return classTransformer2.classToPlain(plainOrClass, options); + } + if (plainOrClass instanceof options.type) { + return classTransformer2.classToPlain(plainOrClass, options); + } + const instance = classTransformer2.plainToInstance(options.type, plainOrClass, options); + return classTransformer2.classToPlain(instance, options); + } + getContextOptions(context) { + return this.reflector.getAllAndOverride(CLASS_SERIALIZER_OPTIONS, [ + context.getHandler(), + context.getClass() + ]); + } + }; + ClassSerializerInterceptor = __decorate([ + Injectable(), + __param(0, Inject(REFLECTOR)), + __param(1, Optional()), + __metadata("design:paramtypes", [Object, Object]) + ], ClassSerializerInterceptor); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.interfaces.js +var init_class_serializer_interfaces = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.interfaces.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.js +var SerializeOptions; +var init_serialize_options_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.js"() { + init_decorators(); + init_class_serializer_constants(); + SerializeOptions = /* @__PURE__ */ __name((options) => SetMetadata(CLASS_SERIALIZER_OPTIONS, options), "SerializeOptions"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/decorators/index.js +var init_decorators2 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/decorators/index.js"() { + init_serialize_options_decorator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/standard-schema-serializer.interceptor.js +var import_operators2, REFLECTOR2, StandardSchemaSerializerInterceptor; +var init_standard_schema_serializer_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/standard-schema-serializer.interceptor.js"() { + init_tslib_es6(); + import_operators2 = __toESM(require_operators(), 1); + init_core(); + init_file_stream(); + init_shared_utils(); + init_class_serializer_constants(); + REFLECTOR2 = "Reflector"; + StandardSchemaSerializerInterceptor = class StandardSchemaSerializerInterceptor2 { + static { + __name(this, "StandardSchemaSerializerInterceptor"); + } + reflector; + defaultOptions; + constructor(reflector, defaultOptions = {}) { + this.reflector = reflector; + this.defaultOptions = defaultOptions; + } + intercept(context, next) { + const contextOptions = this.getContextOptions(context); + const schema = contextOptions?.schema ?? this.defaultOptions.schema; + const validateOptions = contextOptions?.validateOptions ?? this.defaultOptions.validateOptions; + return next.handle().pipe((0, import_operators2.concatMap)(async (res) => this.serialize(res, schema, validateOptions))); + } + /** + * Serializes responses that are non-null objects nor streamable files. + */ + serialize(response, schema, validateOptions) { + if (!schema || !isObject(response) || response instanceof StreamableFile) { + return response; + } + return Array.isArray(response) ? Promise.all(response.map((item) => this.transformToPlain(item, schema, validateOptions))) : this.transformToPlain(response, schema, validateOptions); + } + async transformToPlain(plainOrClass, schema, validateOptions) { + if (!plainOrClass) { + return plainOrClass; + } + const result = await schema["~standard"].validate(plainOrClass, validateOptions); + if (result.issues) { + throw new Error(`Serialization failed: ${result.issues.map((i) => i.message).join(", ")}`); + } + return result.value; + } + getContextOptions(context) { + const [handlerOptions, classOptions] = this.reflector.getAll(CLASS_SERIALIZER_OPTIONS, [ + context.getHandler(), + context.getClass() + ]); + if (!handlerOptions || !classOptions) { + return handlerOptions ?? classOptions; + } + return { + schema: handlerOptions.schema ?? classOptions.schema, + validateOptions: handlerOptions.validateOptions ?? classOptions.validateOptions + }; + } + }; + StandardSchemaSerializerInterceptor = __decorate([ + Injectable(), + __param(0, Inject(REFLECTOR2)), + __param(1, Optional()), + __metadata("design:paramtypes", [Object, Object]) + ], StandardSchemaSerializerInterceptor); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/standard-schema-serializer.interfaces.js +var init_standard_schema_serializer_interfaces = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/standard-schema-serializer.interfaces.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/index.js +var init_serializer = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/index.js"() { + init_class_serializer_interceptor(); + init_class_serializer_interfaces(); + init_decorators2(); + init_standard_schema_serializer_interceptor(); + init_standard_schema_serializer_interfaces(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/forward-ref.util.js +var forwardRef; +var init_forward_ref_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/forward-ref.util.js"() { + forwardRef = /* @__PURE__ */ __name((fn) => ({ + forwardRef: fn + }), "forwardRef"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/index.js +var init_utils3 = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/index.js"() { + init_forward_ref_util(); + init_strip_proto_keys_util(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/index.js +var common_exports = {}; +__export(common_exports, { + All: () => All, + BadGatewayException: () => BadGatewayException, + BadRequestException: () => BadRequestException, + Bind: () => Bind, + Body: () => Body, + Catch: () => Catch, + ClassSerializerInterceptor: () => ClassSerializerInterceptor, + ConfigurableModuleBuilder: () => ConfigurableModuleBuilder, + ConflictException: () => ConflictException, + ConsoleLogger: () => ConsoleLogger, + Controller: () => Controller, + Cookies: () => Cookies, + Copy: () => Copy, + DefaultValuePipe: () => DefaultValuePipe, + Delete: () => Delete, + Dependencies: () => Dependencies, + FileTypeValidator: () => FileTypeValidator, + FileValidator: () => FileValidator, + ForbiddenException: () => ForbiddenException, + GatewayTimeoutException: () => GatewayTimeoutException, + Get: () => Get, + Global: () => Global, + GoneException: () => GoneException, + Head: () => Head, + Header: () => Header, + Headers: () => Headers, + HostParam: () => HostParam, + HttpCode: () => HttpCode, + HttpException: () => HttpException, + HttpStatus: () => HttpStatus, + HttpVersionNotSupportedException: () => HttpVersionNotSupportedException, + ImATeapotException: () => ImATeapotException, + Inject: () => Inject, + Injectable: () => Injectable, + InternalServerErrorException: () => InternalServerErrorException, + IntrinsicException: () => IntrinsicException, + Ip: () => Ip, + LOG_LEVELS: () => LOG_LEVELS, + Lock: () => Lock, + Logger: () => Logger, + MaxFileSizeValidator: () => MaxFileSizeValidator, + MethodNotAllowedException: () => MethodNotAllowedException, + MisdirectedException: () => MisdirectedException, + Mkcol: () => Mkcol, + Module: () => Module, + Move: () => Move, + Next: () => Next, + NotAcceptableException: () => NotAcceptableException, + NotFoundException: () => NotFoundException, + NotImplementedException: () => NotImplementedException, + Optional: () => Optional, + Options: () => Options, + Param: () => Param, + ParseArrayPipe: () => ParseArrayPipe, + ParseBoolPipe: () => ParseBoolPipe, + ParseDatePipe: () => ParseDatePipe, + ParseEnumPipe: () => ParseEnumPipe, + ParseFilePipe: () => ParseFilePipe, + ParseFilePipeBuilder: () => ParseFilePipeBuilder, + ParseFloatPipe: () => ParseFloatPipe, + ParseIntPipe: () => ParseIntPipe, + ParseUUIDPipe: () => ParseUUIDPipe, + Patch: () => Patch, + PayloadTooLargeException: () => PayloadTooLargeException, + Post: () => Post, + PreconditionFailedException: () => PreconditionFailedException, + Propfind: () => Propfind, + Proppatch: () => Proppatch, + Put: () => Put, + Query: () => Query, + QueryMethod: () => QueryMethod, + RawBody: () => RawBody, + Redirect: () => Redirect, + Render: () => Render, + Req: () => Req, + Request: () => Request, + RequestMapping: () => RequestMapping, + RequestMethod: () => RequestMethod, + RequestTimeoutException: () => RequestTimeoutException, + Res: () => Res, + Response: () => Response, + SSE_ABORT_CONTROLLER: () => SSE_ABORT_CONTROLLER, + Scope: () => Scope, + Search: () => Search, + SerializeOptions: () => SerializeOptions, + ServiceUnavailableException: () => ServiceUnavailableException, + Session: () => Session, + SetMetadata: () => SetMetadata, + ShutdownSignal: () => ShutdownSignal, + SignedCookies: () => SignedCookies, + Sse: () => Sse, + SseSignal: () => SseSignal, + StandardSchemaSerializerInterceptor: () => StandardSchemaSerializerInterceptor, + StandardSchemaValidationPipe: () => StandardSchemaValidationPipe, + StreamableFile: () => StreamableFile, + UnauthorizedException: () => UnauthorizedException, + Unlock: () => Unlock, + UnprocessableEntityException: () => UnprocessableEntityException, + UnsupportedMediaTypeException: () => UnsupportedMediaTypeException, + UploadedFile: () => UploadedFile, + UploadedFiles: () => UploadedFiles, + UseFilters: () => UseFilters, + UseGuards: () => UseGuards, + UseInterceptors: () => UseInterceptors, + UsePipes: () => UsePipes, + VERSION_NEUTRAL: () => VERSION_NEUTRAL, + ValidationPipe: () => ValidationPipe, + Version: () => Version, + VersioningType: () => VersioningType, + applyDecorators: () => applyDecorators, + assignMetadata: () => assignMetadata, + createParamDecorator: () => createParamDecorator, + filterLogLevels: () => filterLogLevels, + flatten: () => flatten, + forwardRef: () => forwardRef, + mixin: () => mixin, + stripProtoKeys: () => stripProtoKeys +}); +var import_reflect_metadata; +var init_common = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/index.js"() { + import_reflect_metadata = __toESM(require_Reflect(), 1); + init_decorators(); + init_enums(); + init_exceptions(); + init_file_stream(); + init_interfaces(); + init_module_utils(); + init_pipes(); + init_serializer(); + init_services(); + init_utils3(); + } +}); + +export { + require_Reflect, + __decorate, + __param, + __metadata, + init_tslib_es6, + MODULE_METADATA, + GLOBAL_MODULE_METADATA, + HOST_METADATA, + PATH_METADATA, + PARAMTYPES_METADATA, + SELF_DECLARED_DEPS_METADATA, + OPTIONAL_DEPS_METADATA, + PROPERTY_DEPS_METADATA, + OPTIONAL_PROPERTY_DEPS_METADATA, + SCOPE_OPTIONS_METADATA, + METHOD_METADATA, + ROUTE_ARGS_METADATA, + CUSTOM_ROUTE_ARGS_METADATA, + FILTER_CATCH_EXCEPTIONS, + PIPES_METADATA, + GUARDS_METADATA, + INTERCEPTORS_METADATA, + EXCEPTION_FILTERS_METADATA, + ENHANCER_KEY_TO_SUBTYPE_MAP, + RENDER_METADATA, + HTTP_CODE_METADATA, + MODULE_PATH, + HEADERS_METADATA, + REDIRECT_METADATA, + RESPONSE_PASSTHROUGH_METADATA, + SSE_METADATA, + SSE_OPTIONS_METADATA, + VERSION_METADATA, + INJECTABLE_WATERMARK, + CONTROLLER_WATERMARK, + CATCH_WATERMARK, + ENTRY_PROVIDER_WATERMARK, + init_constants, + Catch, + isUndefined, + isObject, + isPlainObject, + addLeadingSlash, + normalizePath, + stripEndSlash, + isFunction, + isString, + isConstructor, + isNil, + isEmpty, + isEmptyArray, + isSymbol, + init_shared_utils, + Controller, + flatten, + Inject, + uid, + init_dist, + Injectable, + mixin, + Optional, + SetMetadata, + UseGuards, + UseInterceptors, + applyDecorators, + Global, + Module, + RequestMethod, + Post, + Get, + Delete, + Put, + Patch, + RouteParamtypes, + init_route_paramtypes_enum, + init_parameter_decorator_options_util, + UploadedFile, + Query, + Body, + Param, + Req, + Res, + init_route_params_decorator, + HttpCode, + createParamDecorator, + SSE_ABORT_CONTROLLER, + HttpStatus, + ShutdownSignal, + VersioningType, + IntrinsicException, + HttpException, + BadRequestException, + ConflictException, + ForbiddenException, + InternalServerErrorException, + NotFoundException, + PayloadTooLargeException, + ServiceUnavailableException, + UnauthorizedException, + clc, + init_cli_colors_util, + ConsoleLogger, + Logger, + StreamableFile, + Scope, + VERSION_NEUTRAL, + randomStringGenerator, + init_random_string_generator_util, + require_lib, + loadPackage, + loadPackageCached, + tryLoadPackage, + init_load_package_util, + require_isFunction, + require_isArrayLike, + require_UnsubscriptionError, + require_Subscription, + require_config, + require_noop, + require_Subscriber, + require_observable, + require_identity, + require_pipe, + require_Observable, + require_innerFrom, + require_OperatorSubscriber, + require_audit, + require_AsyncAction, + require_Scheduler, + require_AsyncScheduler, + require_async, + require_isScheduler, + require_timer, + require_auditTime, + require_buffer, + require_bufferCount, + require_args, + require_bufferTime, + require_bufferToggle, + require_bufferWhen, + require_catchError, + require_argsArgArrayOrObject, + require_observeOn, + require_subscribeOn, + require_scheduleIterable, + require_scheduled, + require_from, + require_map2 as require_map, + require_mapOneOrManyArgs, + require_createObject, + require_combineLatest, + require_mergeMap, + require_reduce, + require_toArray, + require_combineLatestAll, + require_combineAll, + require_combineLatestWith, + require_mergeAll, + require_concatAll, + require_concatMap, + require_concatMapTo, + require_concatWith, + require_ObjectUnsubscribedError, + require_Subject, + require_connect, + require_count, + require_debounce, + require_debounceTime, + require_defaultIfEmpty, + require_concat3 as require_concat, + require_empty, + require_take, + require_ignoreElements, + require_mapTo, + require_delayWhen, + require_delay, + require_of, + require_throwError, + require_Notification, + require_dematerialize, + require_distinct, + require_distinctUntilChanged, + require_distinctUntilKeyChanged, + require_ArgumentOutOfRangeError, + require_filter2 as require_filter, + require_EmptyError, + require_throwIfEmpty, + require_elementAt, + require_endWith, + require_every, + require_exhaustMap, + require_exhaustAll, + require_exhaust, + require_expand, + require_finalize, + require_find, + require_findIndex, + require_first, + require_groupBy, + require_isEmpty, + require_takeLast, + require_last, + require_materialize, + require_max, + require_flatMap, + require_mergeMapTo, + require_mergeScan, + require_mergeWith, + require_min, + require_refCount, + require_ConnectableObservable, + require_multicast, + require_onErrorResumeNext, + require_onErrorResumeNextWith, + require_pairwise, + require_not, + require_pluck, + require_publish, + require_BehaviorSubject, + require_publishBehavior, + require_AsyncSubject, + require_publishLast, + require_ReplaySubject, + require_publishReplay, + require_race, + require_raceWith, + require_repeat, + require_repeatWhen, + require_retry, + require_retryWhen, + require_sample, + require_interval, + require_sampleTime, + require_scan, + require_sequenceEqual, + require_share, + require_shareReplay, + require_SequenceError, + require_NotFoundError, + require_single, + require_skip, + require_skipLast, + require_skipUntil, + require_skipWhile, + require_startWith, + require_switchMap, + require_switchAll, + require_switchMapTo, + require_switchScan, + require_takeUntil, + require_takeWhile, + require_tap, + require_throttle, + require_throttleTime, + require_timeInterval, + require_timeout, + require_timeoutWith, + require_timestamp, + require_window, + require_windowCount, + require_windowTime, + require_windowToggle, + require_windowWhen, + require_withLatestFrom, + require_zip2 as require_zip, + require_zipAll, + require_zipWith, + require_operators, + common_exports, + init_common +}; diff --git a/apps/api/.output/dist/chunks/chunk-C4DYPKAN.js b/apps/api/.output/dist/chunks/chunk-C4DYPKAN.js new file mode 100644 index 0000000..5be60a6 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-C4DYPKAN.js @@ -0,0 +1,725 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + require_ms +} from "./chunk-A34KYKJP.js"; +import { + __commonJS, + __esm, + __export, + __name, + __require, + __toCommonJS +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js +var require_common = __commonJS({ + "../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js"(exports, module) { + function setup(env2) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy; + Object.keys(env2).forEach((key) => { + createDebug[key] = env2[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + __name(selectColor, "selectColor"); + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug(...args) { + if (!debug.enabled) { + return; + } + const self = debug; + const curr = Number(/* @__PURE__ */ new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + if (match === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + const val = args[index]; + match = formatter.call(self, val); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(self, args); + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + __name(debug, "debug"); + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; + Object.defineProperty(debug, "enabled", { + enumerable: true, + configurable: false, + get: /* @__PURE__ */ __name(() => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, "get"), + set: /* @__PURE__ */ __name((v) => { + enableOverride = v; + }, "set") + }); + if (typeof createDebug.init === "function") { + createDebug.init(debug); + } + return debug; + } + __name(createDebug, "createDebug"); + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + __name(extend, "extend"); + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); + for (const ns of split) { + if (ns[0] === "-") { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + __name(enable, "enable"); + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { + if (template[templateIndex] === "*") { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; + } + } + while (templateIndex < template.length && template[templateIndex] === "*") { + templateIndex++; + } + return templateIndex === template.length; + } + __name(matchesTemplate, "matchesTemplate"); + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + __name(disable, "disable"); + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + return false; + } + __name(enabled, "enabled"); + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + __name(coerce, "coerce"); + function destroy() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + __name(destroy, "destroy"); + createDebug.enable(createDebug.load()); + return createDebug; + } + __name(setup, "setup"); + module.exports = setup; + } +}); + +// ../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js +var require_browser = __commonJS({ + "../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js"(exports, module) { + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = localstorage(); + exports.destroy = /* @__PURE__ */ (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; + } + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + let m; + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + __name(useColors, "useColors"); + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match) => { + if (match === "%%") { + return; + } + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + __name(formatArgs, "formatArgs"); + exports.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem("debug", namespaces); + } else { + exports.storage.removeItem("debug"); + } + } catch (error) { + } + } + __name(save, "save"); + function load() { + let r; + try { + r = exports.storage.getItem("debug") || exports.storage.getItem("DEBUG"); + } catch (error) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + __name(load, "load"); + function localstorage() { + try { + return localStorage; + } catch (error) { + } + } + __name(localstorage, "localstorage"); + module.exports = require_common()(exports); + var { formatters } = module.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error) { + return "[UnexpectedJSONParseError]: " + error.message; + } + }; + } +}); + +// ../../node_modules/.pnpm/supports-color@10.2.2/node_modules/supports-color/index.js +var supports_color_exports = {}; +__export(supports_color_exports, { + createSupportsColor: () => createSupportsColor, + default: () => supports_color_default +}); +import process2 from "node:process"; +import os from "node:os"; +import tty from "node:tty"; +function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) { + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf("--"); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +} +function envForceColor() { + if (!("FORCE_COLOR" in env)) { + return; + } + if (env.FORCE_COLOR === "true") { + return 1; + } + if (env.FORCE_COLOR === "false") { + return 0; + } + if (env.FORCE_COLOR.length === 0) { + return 1; + } + const level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + if (![0, 1, 2, 3].includes(level)) { + return; + } + return level; +} +function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} +function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) { + const noFlagForceColor = envForceColor(); + if (noFlagForceColor !== void 0) { + flagForceColor = noFlagForceColor; + } + const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; + if (forceColor === 0) { + return 0; + } + if (sniffFlags) { + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + } + if ("TF_BUILD" in env && "AGENT_NAME" in env) { + return 1; + } + if (haveStream && !streamIsTTY && forceColor === void 0) { + return 0; + } + const min = forceColor || 0; + if (env.TERM === "dumb") { + return min; + } + if (process2.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) { + return 3; + } + if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if (env.TERM === "xterm-kitty") { + return 3; + } + if (env.TERM === "xterm-ghostty") { + return 3; + } + if (env.TERM === "wezterm") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": { + return version >= 3 ? 3 : 2; + } + case "Apple_Terminal": { + return 2; + } + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + return min; +} +function createSupportsColor(stream, options = {}) { + const level = _supportsColor(stream, { + streamIsTTY: stream && stream.isTTY, + ...options + }); + return translateLevel(level); +} +var env, flagForceColor, supportsColor, supports_color_default; +var init_supports_color = __esm({ + "../../node_modules/.pnpm/supports-color@10.2.2/node_modules/supports-color/index.js"() { + __name(hasFlag, "hasFlag"); + ({ env } = process2); + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { + flagForceColor = 0; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + flagForceColor = 1; + } + __name(envForceColor, "envForceColor"); + __name(translateLevel, "translateLevel"); + __name(_supportsColor, "_supportsColor"); + __name(createSupportsColor, "createSupportsColor"); + supportsColor = { + stdout: createSupportsColor({ isTTY: tty.isatty(1) }), + stderr: createSupportsColor({ isTTY: tty.isatty(2) }) + }; + supports_color_default = supportsColor; + } +}); + +// ../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/node.js +var require_node = __commonJS({ + "../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/node.js"(exports, module) { + var tty2 = __require("tty"); + var util = __require("util"); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.destroy = util.deprecate( + () => { + }, + "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." + ); + exports.colors = [6, 2, 3, 4, 5, 1]; + try { + const supportsColor2 = (init_supports_color(), __toCommonJS(supports_color_exports)); + if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } + } catch (error) { + } + exports.inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === "null") { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; + }, {}); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty2.isatty(process.stderr.fd); + } + __name(useColors, "useColors"); + function formatArgs(args) { + const { namespace: name, useColors: useColors2 } = this; + if (useColors2) { + const c = this.color; + const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); + const prefix = ` ${colorCode};1m${name} \x1B[0m`; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push(colorCode + "m+" + module.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name + " " + args[0]; + } + } + __name(formatArgs, "formatArgs"); + function getDate() { + if (exports.inspectOpts.hideDate) { + return ""; + } + return (/* @__PURE__ */ new Date()).toISOString() + " "; + } + __name(getDate, "getDate"); + function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + "\n"); + } + __name(log, "log"); + function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + delete process.env.DEBUG; + } + } + __name(save, "save"); + function load() { + return process.env.DEBUG; + } + __name(load, "load"); + function init(debug) { + debug.inspectOpts = {}; + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } + } + __name(init, "init"); + module.exports = require_common()(exports); + var { formatters } = module.exports; + formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + } +}); + +// ../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/index.js +var require_src = __commonJS({ + "../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/index.js"(exports, module) { + if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { + module.exports = require_browser(); + } else { + module.exports = require_node(); + } + } +}); + +export { + require_src +}; diff --git a/apps/api/.output/dist/chunks/chunk-KIUJQ22G.js b/apps/api/.output/dist/chunks/chunk-KIUJQ22G.js new file mode 100644 index 0000000..8678232 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-KIUJQ22G.js @@ -0,0 +1,5494 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + __commonJS, + __name, + __require, + __toESM +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js +var require_postgres_array = __commonJS({ + "../../node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js"(exports) { + "use strict"; + exports.parse = function(source, transform) { + return new ArrayParser(source, transform).parse(); + }; + var ArrayParser = class _ArrayParser { + static { + __name(this, "ArrayParser"); + } + constructor(source, transform) { + this.source = source; + this.transform = transform || identity; + this.position = 0; + this.entries = []; + this.recorded = []; + this.dimension = 0; + } + isEof() { + return this.position >= this.source.length; + } + nextCharacter() { + var character = this.source[this.position++]; + if (character === "\\") { + return { + value: this.source[this.position++], + escaped: true + }; + } + return { + value: character, + escaped: false + }; + } + record(character) { + this.recorded.push(character); + } + newEntry(includeEmpty) { + var entry; + if (this.recorded.length > 0 || includeEmpty) { + entry = this.recorded.join(""); + if (entry === "NULL" && !includeEmpty) { + entry = null; + } + if (entry !== null) entry = this.transform(entry); + this.entries.push(entry); + this.recorded = []; + } + } + consumeDimensions() { + if (this.source[0] === "[") { + while (!this.isEof()) { + var char = this.nextCharacter(); + if (char.value === "=") break; + } + } + } + parse(nested) { + var character, parser, quote; + this.consumeDimensions(); + while (!this.isEof()) { + character = this.nextCharacter(); + if (character.value === "{" && !quote) { + this.dimension++; + if (this.dimension > 1) { + parser = new _ArrayParser(this.source.substr(this.position - 1), this.transform); + this.entries.push(parser.parse(true)); + this.position += parser.position - 2; + } + } else if (character.value === "}" && !quote) { + this.dimension--; + if (!this.dimension) { + this.newEntry(); + if (nested) return this.entries; + } + } else if (character.value === '"' && !character.escaped) { + if (quote) this.newEntry(true); + quote = !quote; + } else if (character.value === "," && !quote) { + this.newEntry(); + } else { + this.record(character.value); + } + } + if (this.dimension !== 0) { + throw new Error("array dimension not balanced"); + } + return this.entries; + } + }; + function identity(value) { + return value; + } + __name(identity, "identity"); + } +}); + +// ../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js +var require_arrayParser = __commonJS({ + "../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js"(exports, module) { + var array = require_postgres_array(); + module.exports = { + create: /* @__PURE__ */ __name(function(source, transform) { + return { + parse: /* @__PURE__ */ __name(function() { + return array.parse(source, transform); + }, "parse") + }; + }, "create") + }; + } +}); + +// ../../node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js +var require_postgres_date = __commonJS({ + "../../node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js"(exports, module) { + "use strict"; + var DATE_TIME = /(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/; + var DATE = /^(\d{1,})-(\d{2})-(\d{2})( BC)?$/; + var TIME_ZONE = /([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/; + var INFINITY = /^-?infinity$/; + module.exports = /* @__PURE__ */ __name(function parseDate(isoDate) { + if (INFINITY.test(isoDate)) { + return Number(isoDate.replace("i", "I")); + } + var matches = DATE_TIME.exec(isoDate); + if (!matches) { + return getDate(isoDate) || null; + } + var isBC = !!matches[8]; + var year = parseInt(matches[1], 10); + if (isBC) { + year = bcYearToNegativeYear(year); + } + var month = parseInt(matches[2], 10) - 1; + var day = matches[3]; + var hour = parseInt(matches[4], 10); + var minute = parseInt(matches[5], 10); + var second = parseInt(matches[6], 10); + var ms = matches[7]; + ms = ms ? 1e3 * parseFloat(ms) : 0; + var date; + var offset = timeZoneOffset(isoDate); + if (offset != null) { + date = new Date(Date.UTC(year, month, day, hour, minute, second, ms)); + if (is0To99(year)) { + date.setUTCFullYear(year); + } + if (offset !== 0) { + date.setTime(date.getTime() - offset); + } + } else { + date = new Date(year, month, day, hour, minute, second, ms); + if (is0To99(year)) { + date.setFullYear(year); + } + } + return date; + }, "parseDate"); + function getDate(isoDate) { + var matches = DATE.exec(isoDate); + if (!matches) { + return; + } + var year = parseInt(matches[1], 10); + var isBC = !!matches[4]; + if (isBC) { + year = bcYearToNegativeYear(year); + } + var month = parseInt(matches[2], 10) - 1; + var day = matches[3]; + var date = new Date(year, month, day); + if (is0To99(year)) { + date.setFullYear(year); + } + return date; + } + __name(getDate, "getDate"); + function timeZoneOffset(isoDate) { + if (isoDate.endsWith("+00")) { + return 0; + } + var zone = TIME_ZONE.exec(isoDate.split(" ")[1]); + if (!zone) return; + var type = zone[1]; + if (type === "Z") { + return 0; + } + var sign = type === "-" ? -1 : 1; + var offset = parseInt(zone[2], 10) * 3600 + parseInt(zone[3] || 0, 10) * 60 + parseInt(zone[4] || 0, 10); + return offset * sign * 1e3; + } + __name(timeZoneOffset, "timeZoneOffset"); + function bcYearToNegativeYear(year) { + return -(year - 1); + } + __name(bcYearToNegativeYear, "bcYearToNegativeYear"); + function is0To99(num) { + return num >= 0 && num < 100; + } + __name(is0To99, "is0To99"); + } +}); + +// ../../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js +var require_mutable = __commonJS({ + "../../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js"(exports, module) { + module.exports = extend; + var hasOwnProperty = Object.prototype.hasOwnProperty; + function extend(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + } + __name(extend, "extend"); + } +}); + +// ../../node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js +var require_postgres_interval = __commonJS({ + "../../node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js"(exports, module) { + "use strict"; + var extend = require_mutable(); + module.exports = PostgresInterval; + function PostgresInterval(raw) { + if (!(this instanceof PostgresInterval)) { + return new PostgresInterval(raw); + } + extend(this, parse(raw)); + } + __name(PostgresInterval, "PostgresInterval"); + var properties = ["seconds", "minutes", "hours", "days", "months", "years"]; + PostgresInterval.prototype.toPostgres = function() { + var filtered = properties.filter(this.hasOwnProperty, this); + if (this.milliseconds && filtered.indexOf("seconds") < 0) { + filtered.push("seconds"); + } + if (filtered.length === 0) return "0"; + return filtered.map(function(property) { + var value = this[property] || 0; + if (property === "seconds" && this.milliseconds) { + value = (value + this.milliseconds / 1e3).toFixed(6).replace(/\.?0+$/, ""); + } + return value + " " + property; + }, this).join(" "); + }; + var propertiesISOEquivalent = { + years: "Y", + months: "M", + days: "D", + hours: "H", + minutes: "M", + seconds: "S" + }; + var dateProperties = ["years", "months", "days"]; + var timeProperties = ["hours", "minutes", "seconds"]; + PostgresInterval.prototype.toISOString = PostgresInterval.prototype.toISO = function() { + var datePart = dateProperties.map(buildProperty, this).join(""); + var timePart = timeProperties.map(buildProperty, this).join(""); + return "P" + datePart + "T" + timePart; + function buildProperty(property) { + var value = this[property] || 0; + if (property === "seconds" && this.milliseconds) { + value = (value + this.milliseconds / 1e3).toFixed(6).replace(/0+$/, ""); + } + return value + propertiesISOEquivalent[property]; + } + __name(buildProperty, "buildProperty"); + }; + var NUMBER = "([+-]?\\d+)"; + var YEAR = NUMBER + "\\s+years?"; + var MONTH = NUMBER + "\\s+mons?"; + var DAY = NUMBER + "\\s+days?"; + var TIME = "([+-])?([\\d]*):(\\d\\d):(\\d\\d)\\.?(\\d{1,6})?"; + var INTERVAL = new RegExp([YEAR, MONTH, DAY, TIME].map(function(regexString) { + return "(" + regexString + ")?"; + }).join("\\s*")); + var positions = { + years: 2, + months: 4, + days: 6, + hours: 9, + minutes: 10, + seconds: 11, + milliseconds: 12 + }; + var negatives = ["hours", "minutes", "seconds", "milliseconds"]; + function parseMilliseconds(fraction) { + var microseconds = fraction + "000000".slice(fraction.length); + return parseInt(microseconds, 10) / 1e3; + } + __name(parseMilliseconds, "parseMilliseconds"); + function parse(interval) { + if (!interval) return {}; + var matches = INTERVAL.exec(interval); + var isNegative = matches[8] === "-"; + return Object.keys(positions).reduce(function(parsed, property) { + var position = positions[property]; + var value = matches[position]; + if (!value) return parsed; + value = property === "milliseconds" ? parseMilliseconds(value) : parseInt(value, 10); + if (!value) return parsed; + if (isNegative && ~negatives.indexOf(property)) { + value *= -1; + } + parsed[property] = value; + return parsed; + }, {}); + } + __name(parse, "parse"); + } +}); + +// ../../node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js +var require_postgres_bytea = __commonJS({ + "../../node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js"(exports, module) { + "use strict"; + var bufferFrom = Buffer.from || Buffer; + module.exports = /* @__PURE__ */ __name(function parseBytea(input) { + if (/^\\x/.test(input)) { + return bufferFrom(input.substr(2), "hex"); + } + var output = ""; + var i = 0; + while (i < input.length) { + if (input[i] !== "\\") { + output += input[i]; + ++i; + } else { + if (/[0-7]{3}/.test(input.substr(i + 1, 3))) { + output += String.fromCharCode(parseInt(input.substr(i + 1, 3), 8)); + i += 4; + } else { + var backslashes = 1; + while (i + backslashes < input.length && input[i + backslashes] === "\\") { + backslashes++; + } + for (var k = 0; k < Math.floor(backslashes / 2); ++k) { + output += "\\"; + } + i += Math.floor(backslashes / 2) * 2; + } + } + } + return bufferFrom(output, "binary"); + }, "parseBytea"); + } +}); + +// ../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js +var require_textParsers = __commonJS({ + "../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js"(exports, module) { + var array = require_postgres_array(); + var arrayParser = require_arrayParser(); + var parseDate = require_postgres_date(); + var parseInterval = require_postgres_interval(); + var parseByteA = require_postgres_bytea(); + function allowNull(fn) { + return /* @__PURE__ */ __name(function nullAllowed(value) { + if (value === null) return value; + return fn(value); + }, "nullAllowed"); + } + __name(allowNull, "allowNull"); + function parseBool(value) { + if (value === null) return value; + return value === "TRUE" || value === "t" || value === "true" || value === "y" || value === "yes" || value === "on" || value === "1"; + } + __name(parseBool, "parseBool"); + function parseBoolArray(value) { + if (!value) return null; + return array.parse(value, parseBool); + } + __name(parseBoolArray, "parseBoolArray"); + function parseBaseTenInt(string) { + return parseInt(string, 10); + } + __name(parseBaseTenInt, "parseBaseTenInt"); + function parseIntegerArray(value) { + if (!value) return null; + return array.parse(value, allowNull(parseBaseTenInt)); + } + __name(parseIntegerArray, "parseIntegerArray"); + function parseBigIntegerArray(value) { + if (!value) return null; + return array.parse(value, allowNull(function(entry) { + return parseBigInteger(entry).trim(); + })); + } + __name(parseBigIntegerArray, "parseBigIntegerArray"); + var parsePointArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + var p = arrayParser.create(value, function(entry) { + if (entry !== null) { + entry = parsePoint(entry); + } + return entry; + }); + return p.parse(); + }, "parsePointArray"); + var parseFloatArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + var p = arrayParser.create(value, function(entry) { + if (entry !== null) { + entry = parseFloat(entry); + } + return entry; + }); + return p.parse(); + }, "parseFloatArray"); + var parseStringArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + var p = arrayParser.create(value); + return p.parse(); + }, "parseStringArray"); + var parseDateArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + var p = arrayParser.create(value, function(entry) { + if (entry !== null) { + entry = parseDate(entry); + } + return entry; + }); + return p.parse(); + }, "parseDateArray"); + var parseIntervalArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + var p = arrayParser.create(value, function(entry) { + if (entry !== null) { + entry = parseInterval(entry); + } + return entry; + }); + return p.parse(); + }, "parseIntervalArray"); + var parseByteAArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + return array.parse(value, allowNull(parseByteA)); + }, "parseByteAArray"); + var parseInteger = /* @__PURE__ */ __name(function(value) { + return parseInt(value, 10); + }, "parseInteger"); + var parseBigInteger = /* @__PURE__ */ __name(function(value) { + var valStr = String(value); + if (/^\d+$/.test(valStr)) { + return valStr; + } + return value; + }, "parseBigInteger"); + var parseJsonArray = /* @__PURE__ */ __name(function(value) { + if (!value) { + return null; + } + return array.parse(value, allowNull(JSON.parse)); + }, "parseJsonArray"); + var parsePoint = /* @__PURE__ */ __name(function(value) { + if (value[0] !== "(") { + return null; + } + value = value.substring(1, value.length - 1).split(","); + return { + x: parseFloat(value[0]), + y: parseFloat(value[1]) + }; + }, "parsePoint"); + var parseCircle = /* @__PURE__ */ __name(function(value) { + if (value[0] !== "<" && value[1] !== "(") { + return null; + } + var point = "("; + var radius = ""; + var pointParsed = false; + for (var i = 2; i < value.length - 1; i++) { + if (!pointParsed) { + point += value[i]; + } + if (value[i] === ")") { + pointParsed = true; + continue; + } else if (!pointParsed) { + continue; + } + if (value[i] === ",") { + continue; + } + radius += value[i]; + } + var result = parsePoint(point); + result.radius = parseFloat(radius); + return result; + }, "parseCircle"); + var init = /* @__PURE__ */ __name(function(register) { + register(20, parseBigInteger); + register(21, parseInteger); + register(23, parseInteger); + register(26, parseInteger); + register(700, parseFloat); + register(701, parseFloat); + register(16, parseBool); + register(1082, parseDate); + register(1114, parseDate); + register(1184, parseDate); + register(600, parsePoint); + register(651, parseStringArray); + register(718, parseCircle); + register(1e3, parseBoolArray); + register(1001, parseByteAArray); + register(1005, parseIntegerArray); + register(1007, parseIntegerArray); + register(1028, parseIntegerArray); + register(1016, parseBigIntegerArray); + register(1017, parsePointArray); + register(1021, parseFloatArray); + register(1022, parseFloatArray); + register(1231, parseFloatArray); + register(1014, parseStringArray); + register(1015, parseStringArray); + register(1008, parseStringArray); + register(1009, parseStringArray); + register(1040, parseStringArray); + register(1041, parseStringArray); + register(1115, parseDateArray); + register(1182, parseDateArray); + register(1185, parseDateArray); + register(1186, parseInterval); + register(1187, parseIntervalArray); + register(17, parseByteA); + register(114, JSON.parse.bind(JSON)); + register(3802, JSON.parse.bind(JSON)); + register(199, parseJsonArray); + register(3807, parseJsonArray); + register(3907, parseStringArray); + register(2951, parseStringArray); + register(791, parseStringArray); + register(1183, parseStringArray); + register(1270, parseStringArray); + }, "init"); + module.exports = { + init + }; + } +}); + +// ../../node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js +var require_pg_int8 = __commonJS({ + "../../node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js"(exports, module) { + "use strict"; + var BASE = 1e6; + function readInt8(buffer) { + var high = buffer.readInt32BE(0); + var low = buffer.readUInt32BE(4); + var sign = ""; + if (high < 0) { + high = ~high + (low === 0); + low = ~low + 1 >>> 0; + sign = "-"; + } + var result = ""; + var carry; + var t; + var digits; + var pad; + var l; + var i; + { + carry = high % BASE; + high = high / BASE >>> 0; + t = 4294967296 * carry + low; + low = t / BASE >>> 0; + digits = "" + (t - BASE * low); + if (low === 0 && high === 0) { + return sign + digits + result; + } + pad = ""; + l = 6 - digits.length; + for (i = 0; i < l; i++) { + pad += "0"; + } + result = pad + digits + result; + } + { + carry = high % BASE; + high = high / BASE >>> 0; + t = 4294967296 * carry + low; + low = t / BASE >>> 0; + digits = "" + (t - BASE * low); + if (low === 0 && high === 0) { + return sign + digits + result; + } + pad = ""; + l = 6 - digits.length; + for (i = 0; i < l; i++) { + pad += "0"; + } + result = pad + digits + result; + } + { + carry = high % BASE; + high = high / BASE >>> 0; + t = 4294967296 * carry + low; + low = t / BASE >>> 0; + digits = "" + (t - BASE * low); + if (low === 0 && high === 0) { + return sign + digits + result; + } + pad = ""; + l = 6 - digits.length; + for (i = 0; i < l; i++) { + pad += "0"; + } + result = pad + digits + result; + } + { + carry = high % BASE; + t = 4294967296 * carry + low; + digits = "" + t % BASE; + return sign + digits + result; + } + } + __name(readInt8, "readInt8"); + module.exports = readInt8; + } +}); + +// ../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js +var require_binaryParsers = __commonJS({ + "../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js"(exports, module) { + var parseInt64 = require_pg_int8(); + var parseBits = /* @__PURE__ */ __name(function(data, bits, offset, invert, callback) { + offset = offset || 0; + invert = invert || false; + callback = callback || function(lastValue, newValue, bits2) { + return lastValue * Math.pow(2, bits2) + newValue; + }; + var offsetBytes = offset >> 3; + var inv = /* @__PURE__ */ __name(function(value) { + if (invert) { + return ~value & 255; + } + return value; + }, "inv"); + var mask = 255; + var firstBits = 8 - offset % 8; + if (bits < firstBits) { + mask = 255 << 8 - bits & 255; + firstBits = bits; + } + if (offset) { + mask = mask >> offset % 8; + } + var result = 0; + if (offset % 8 + bits >= 8) { + result = callback(0, inv(data[offsetBytes]) & mask, firstBits); + } + var bytes = bits + offset >> 3; + for (var i = offsetBytes + 1; i < bytes; i++) { + result = callback(result, inv(data[i]), 8); + } + var lastBits = (bits + offset) % 8; + if (lastBits > 0) { + result = callback(result, inv(data[bytes]) >> 8 - lastBits, lastBits); + } + return result; + }, "parseBits"); + var parseFloatFromBits = /* @__PURE__ */ __name(function(data, precisionBits, exponentBits) { + var bias = Math.pow(2, exponentBits - 1) - 1; + var sign = parseBits(data, 1); + var exponent = parseBits(data, exponentBits, 1); + if (exponent === 0) { + return 0; + } + var precisionBitsCounter = 1; + var parsePrecisionBits = /* @__PURE__ */ __name(function(lastValue, newValue, bits) { + if (lastValue === 0) { + lastValue = 1; + } + for (var i = 1; i <= bits; i++) { + precisionBitsCounter /= 2; + if ((newValue & 1 << bits - i) > 0) { + lastValue += precisionBitsCounter; + } + } + return lastValue; + }, "parsePrecisionBits"); + var mantissa = parseBits(data, precisionBits, exponentBits + 1, false, parsePrecisionBits); + if (exponent == Math.pow(2, exponentBits + 1) - 1) { + if (mantissa === 0) { + return sign === 0 ? Infinity : -Infinity; + } + return NaN; + } + return (sign === 0 ? 1 : -1) * Math.pow(2, exponent - bias) * mantissa; + }, "parseFloatFromBits"); + var parseInt16 = /* @__PURE__ */ __name(function(value) { + if (parseBits(value, 1) == 1) { + return -1 * (parseBits(value, 15, 1, true) + 1); + } + return parseBits(value, 15, 1); + }, "parseInt16"); + var parseInt32 = /* @__PURE__ */ __name(function(value) { + if (parseBits(value, 1) == 1) { + return -1 * (parseBits(value, 31, 1, true) + 1); + } + return parseBits(value, 31, 1); + }, "parseInt32"); + var parseFloat32 = /* @__PURE__ */ __name(function(value) { + return parseFloatFromBits(value, 23, 8); + }, "parseFloat32"); + var parseFloat64 = /* @__PURE__ */ __name(function(value) { + return parseFloatFromBits(value, 52, 11); + }, "parseFloat64"); + var parseNumeric = /* @__PURE__ */ __name(function(value) { + var sign = parseBits(value, 16, 32); + if (sign == 49152) { + return NaN; + } + var weight = Math.pow(1e4, parseBits(value, 16, 16)); + var result = 0; + var digits = []; + var ndigits = parseBits(value, 16); + for (var i = 0; i < ndigits; i++) { + result += parseBits(value, 16, 64 + 16 * i) * weight; + weight /= 1e4; + } + var scale = Math.pow(10, parseBits(value, 16, 48)); + return (sign === 0 ? 1 : -1) * Math.round(result * scale) / scale; + }, "parseNumeric"); + var parseDate = /* @__PURE__ */ __name(function(isUTC, value) { + var sign = parseBits(value, 1); + var rawValue = parseBits(value, 63, 1); + var result = new Date((sign === 0 ? 1 : -1) * rawValue / 1e3 + 9466848e5); + if (!isUTC) { + result.setTime(result.getTime() + result.getTimezoneOffset() * 6e4); + } + result.usec = rawValue % 1e3; + result.getMicroSeconds = function() { + return this.usec; + }; + result.setMicroSeconds = function(value2) { + this.usec = value2; + }; + result.getUTCMicroSeconds = function() { + return this.usec; + }; + return result; + }, "parseDate"); + var parseArray = /* @__PURE__ */ __name(function(value) { + var dim = parseBits(value, 32); + var flags = parseBits(value, 32, 32); + var elementType = parseBits(value, 32, 64); + var offset = 96; + var dims = []; + for (var i = 0; i < dim; i++) { + dims[i] = parseBits(value, 32, offset); + offset += 32; + offset += 32; + } + var parseElement = /* @__PURE__ */ __name(function(elementType2) { + var length = parseBits(value, 32, offset); + offset += 32; + if (length == 4294967295) { + return null; + } + var result; + if (elementType2 == 23 || elementType2 == 20) { + result = parseBits(value, length * 8, offset); + offset += length * 8; + return result; + } else if (elementType2 == 25) { + result = value.toString(this.encoding, offset >> 3, (offset += length << 3) >> 3); + return result; + } else { + console.log("ERROR: ElementType not implemented: " + elementType2); + } + }, "parseElement"); + var parse = /* @__PURE__ */ __name(function(dimension, elementType2) { + var array = []; + var i2; + if (dimension.length > 1) { + var count = dimension.shift(); + for (i2 = 0; i2 < count; i2++) { + array[i2] = parse(dimension, elementType2); + } + dimension.unshift(count); + } else { + for (i2 = 0; i2 < dimension[0]; i2++) { + array[i2] = parseElement(elementType2); + } + } + return array; + }, "parse"); + return parse(dims, elementType); + }, "parseArray"); + var parseText = /* @__PURE__ */ __name(function(value) { + return value.toString("utf8"); + }, "parseText"); + var parseBool = /* @__PURE__ */ __name(function(value) { + if (value === null) return null; + return parseBits(value, 8) > 0; + }, "parseBool"); + var init = /* @__PURE__ */ __name(function(register) { + register(20, parseInt64); + register(21, parseInt16); + register(23, parseInt32); + register(26, parseInt32); + register(1700, parseNumeric); + register(700, parseFloat32); + register(701, parseFloat64); + register(16, parseBool); + register(1114, parseDate.bind(null, false)); + register(1184, parseDate.bind(null, true)); + register(1e3, parseArray); + register(1007, parseArray); + register(1016, parseArray); + register(1008, parseArray); + register(1009, parseArray); + register(25, parseText); + }, "init"); + module.exports = { + init + }; + } +}); + +// ../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js +var require_builtins = __commonJS({ + "../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js"(exports, module) { + module.exports = { + BOOL: 16, + BYTEA: 17, + CHAR: 18, + INT8: 20, + INT2: 21, + INT4: 23, + REGPROC: 24, + TEXT: 25, + OID: 26, + TID: 27, + XID: 28, + CID: 29, + JSON: 114, + XML: 142, + PG_NODE_TREE: 194, + SMGR: 210, + PATH: 602, + POLYGON: 604, + CIDR: 650, + FLOAT4: 700, + FLOAT8: 701, + ABSTIME: 702, + RELTIME: 703, + TINTERVAL: 704, + CIRCLE: 718, + MACADDR8: 774, + MONEY: 790, + MACADDR: 829, + INET: 869, + ACLITEM: 1033, + BPCHAR: 1042, + VARCHAR: 1043, + DATE: 1082, + TIME: 1083, + TIMESTAMP: 1114, + TIMESTAMPTZ: 1184, + INTERVAL: 1186, + TIMETZ: 1266, + BIT: 1560, + VARBIT: 1562, + NUMERIC: 1700, + REFCURSOR: 1790, + REGPROCEDURE: 2202, + REGOPER: 2203, + REGOPERATOR: 2204, + REGCLASS: 2205, + REGTYPE: 2206, + UUID: 2950, + TXID_SNAPSHOT: 2970, + PG_LSN: 3220, + PG_NDISTINCT: 3361, + PG_DEPENDENCIES: 3402, + TSVECTOR: 3614, + TSQUERY: 3615, + GTSVECTOR: 3642, + REGCONFIG: 3734, + REGDICTIONARY: 3769, + JSONB: 3802, + REGNAMESPACE: 4089, + REGROLE: 4096 + }; + } +}); + +// ../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js +var require_pg_types = __commonJS({ + "../../node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js"(exports) { + var textParsers = require_textParsers(); + var binaryParsers = require_binaryParsers(); + var arrayParser = require_arrayParser(); + var builtinTypes = require_builtins(); + exports.getTypeParser = getTypeParser; + exports.setTypeParser = setTypeParser; + exports.arrayParser = arrayParser; + exports.builtins = builtinTypes; + var typeParsers = { + text: {}, + binary: {} + }; + function noParse(val) { + return String(val); + } + __name(noParse, "noParse"); + function getTypeParser(oid, format) { + format = format || "text"; + if (!typeParsers[format]) { + return noParse; + } + return typeParsers[format][oid] || noParse; + } + __name(getTypeParser, "getTypeParser"); + function setTypeParser(oid, format, parseFn) { + if (typeof format == "function") { + parseFn = format; + format = "text"; + } + typeParsers[format][oid] = parseFn; + } + __name(setTypeParser, "setTypeParser"); + textParsers.init(function(oid, converter) { + typeParsers.text[oid] = converter; + }); + binaryParsers.init(function(oid, converter) { + typeParsers.binary[oid] = converter; + }); + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/defaults.js +var require_defaults = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/defaults.js"(exports, module) { + "use strict"; + var user; + try { + user = process.platform === "win32" ? process.env.USERNAME : process.env.USER; + } catch { + } + module.exports = { + // database host. defaults to localhost + host: "localhost", + // database user's name + user, + // name of database to connect + database: void 0, + // database user's password + password: null, + // a Postgres connection string to be used instead of setting individual connection items + // NOTE: Setting this value will cause it to override any other value (such as database or user) defined + // in the defaults object. + connectionString: void 0, + // database port + port: 5432, + // number of rows to return at a time from a prepared statement's + // portal. 0 will return all rows at once + rows: 0, + // binary result mode + binary: false, + // Connection pool options - see https://github.com/brianc/node-pg-pool + // number of connections to use in connection pool + // 0 will disable connection pooling + max: 10, + // max milliseconds a client can go unused before it is removed + // from the pool and destroyed + idleTimeoutMillis: 3e4, + client_encoding: "", + ssl: false, + // SSL negotiation style: 'postgres' (traditional SSLRequest) or 'direct' + sslnegotiation: void 0, + application_name: void 0, + fallback_application_name: void 0, + options: void 0, + parseInputDatesAsUTC: false, + // max milliseconds any query using this connection will execute for before timing out in error. + // false=unlimited + statement_timeout: false, + // Abort any statement that waits longer than the specified duration in milliseconds while attempting to acquire a lock. + // false=unlimited + lock_timeout: false, + // Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds + // false=unlimited + idle_in_transaction_session_timeout: false, + // max milliseconds to wait for query to complete (client side) + query_timeout: false, + connect_timeout: 0, + keepalives: 1, + keepalives_idle: 0 + }; + var pgTypes = require_pg_types(); + var parseBigInteger = pgTypes.getTypeParser(20, "text"); + var parseBigIntegerArray = pgTypes.getTypeParser(1016, "text"); + module.exports.__defineSetter__("parseInt8", function(val) { + pgTypes.setTypeParser(20, "text", val ? pgTypes.getTypeParser(23, "text") : parseBigInteger); + pgTypes.setTypeParser(1016, "text", val ? pgTypes.getTypeParser(1007, "text") : parseBigIntegerArray); + }); + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/utils.js +var require_utils = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/utils.js"(exports, module) { + "use strict"; + var defaults2 = require_defaults(); + var nodeUtils = __require("util"); + var { isDate } = __require("util/types"); + var invalidDateDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "Sending an invalid date to Postgres is deprecated and will throw an error in the next major version of pg. Ensure any Date object passed as a query parameter is valid.", + "PG_INVALID_DATE" + ); + function escapeElement(elementRepresentation) { + const escaped = elementRepresentation.replace(/\\/g, "\\\\").replace(/"/g, '\\"'); + return '"' + escaped + '"'; + } + __name(escapeElement, "escapeElement"); + function arrayString(val) { + let result = "{"; + for (let i = 0; i < val.length; i++) { + if (i > 0) { + result += ","; + } + let item = val[i]; + if (item == null) { + result += "NULL"; + } else if (Array.isArray(item)) { + result += arrayString(item); + } else if (ArrayBuffer.isView(item)) { + if (!(item instanceof Buffer)) { + item = Buffer.from(item.buffer, item.byteOffset, item.byteLength); + } + result += "\\\\x" + item.toString("hex"); + } else { + result += escapeElement(prepareValue(item)); + } + } + result += "}"; + return result; + } + __name(arrayString, "arrayString"); + var prepareValue = /* @__PURE__ */ __name(function(val, seen) { + if (val == null) { + return null; + } + if (typeof val === "object") { + if (val instanceof Buffer) { + return val; + } + if (ArrayBuffer.isView(val)) { + return Buffer.from(val.buffer, val.byteOffset, val.byteLength); + } + if (isDate(val)) { + if (isNaN(val.getTime())) { + invalidDateDeprecationNotice(); + } + if (defaults2.parseInputDatesAsUTC) { + return dateToStringUTC(val); + } else { + return dateToString(val); + } + } + if (Array.isArray(val)) { + return arrayString(val); + } + return prepareObject(val, seen); + } + return val.toString(); + }, "prepareValue"); + function prepareObject(val, seen) { + if (val && typeof val.toPostgres === "function") { + seen = seen || []; + if (seen.indexOf(val) !== -1) { + throw new Error('circular reference detected while preparing "' + val + '" for query'); + } + seen.push(val); + return prepareValue(val.toPostgres(prepareValue), seen); + } + return JSON.stringify(val); + } + __name(prepareObject, "prepareObject"); + function dateToString(date) { + let offset = -date.getTimezoneOffset(); + let year = date.getFullYear(); + const isBCYear = year < 1; + if (isBCYear) year = Math.abs(year) + 1; + let ret = String(year).padStart(4, "0") + "-" + String(date.getMonth() + 1).padStart(2, "0") + "-" + String(date.getDate()).padStart(2, "0") + "T" + String(date.getHours()).padStart(2, "0") + ":" + String(date.getMinutes()).padStart(2, "0") + ":" + String(date.getSeconds()).padStart(2, "0") + "." + String(date.getMilliseconds()).padStart(3, "0"); + if (offset < 0) { + ret += "-"; + offset *= -1; + } else { + ret += "+"; + } + ret += String(Math.floor(offset / 60)).padStart(2, "0") + ":" + String(offset % 60).padStart(2, "0"); + if (isBCYear) ret += " BC"; + return ret; + } + __name(dateToString, "dateToString"); + function dateToStringUTC(date) { + let year = date.getUTCFullYear(); + const isBCYear = year < 1; + if (isBCYear) year = Math.abs(year) + 1; + let ret = String(year).padStart(4, "0") + "-" + String(date.getUTCMonth() + 1).padStart(2, "0") + "-" + String(date.getUTCDate()).padStart(2, "0") + "T" + String(date.getUTCHours()).padStart(2, "0") + ":" + String(date.getUTCMinutes()).padStart(2, "0") + ":" + String(date.getUTCSeconds()).padStart(2, "0") + "." + String(date.getUTCMilliseconds()).padStart(3, "0"); + ret += "+00:00"; + if (isBCYear) ret += " BC"; + return ret; + } + __name(dateToStringUTC, "dateToStringUTC"); + function normalizeQueryConfig(config, values, callback) { + config = typeof config === "string" ? { text: config } : cloneQueryConfig(config); + if (values) { + if (typeof values === "function") { + config.callback = values; + } else { + config.values = values; + } + } + if (callback) { + config.callback = callback; + } + return config; + } + __name(normalizeQueryConfig, "normalizeQueryConfig"); + function cloneQueryConfig(config) { + if (config == null) { + return config; + } + return Object.defineProperties(Object.create(Object.getPrototypeOf(config)), Object.getOwnPropertyDescriptors(config)); + } + __name(cloneQueryConfig, "cloneQueryConfig"); + var escapeIdentifier2 = /* @__PURE__ */ __name(function(str) { + return '"' + str.replace(/"/g, '""') + '"'; + }, "escapeIdentifier"); + var escapeLiteral2 = /* @__PURE__ */ __name(function(str) { + let hasBackslash = false; + let escaped = "'"; + if (str == null) { + return "''"; + } + if (typeof str !== "string") { + return "''"; + } + for (let i = 0; i < str.length; i++) { + const c = str[i]; + if (c === "'") { + escaped += c + c; + } else if (c === "\\") { + escaped += c + c; + hasBackslash = true; + } else { + escaped += c; + } + } + escaped += "'"; + if (hasBackslash === true) { + escaped = " E" + escaped; + } + return escaped; + }, "escapeLiteral"); + module.exports = { + prepareValue: /* @__PURE__ */ __name(function prepareValueWrapper(value) { + return prepareValue(value); + }, "prepareValueWrapper"), + normalizeQueryConfig, + escapeIdentifier: escapeIdentifier2, + escapeLiteral: escapeLiteral2 + }; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/crypto/utils.js +var require_utils2 = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/crypto/utils.js"(exports, module) { + var nodeCrypto = __require("crypto"); + module.exports = { + postgresMd5PasswordHash, + randomBytes, + deriveKey, + sha256, + hashByName, + hmacSha256, + md5 + }; + var webCrypto = nodeCrypto.webcrypto || globalThis.crypto; + var subtleCrypto = webCrypto.subtle; + var textEncoder = new TextEncoder(); + function randomBytes(length) { + return webCrypto.getRandomValues(Buffer.alloc(length)); + } + __name(randomBytes, "randomBytes"); + async function md5(string) { + try { + return nodeCrypto.createHash("md5").update(string, "utf-8").digest("hex"); + } catch (e) { + const data = typeof string === "string" ? textEncoder.encode(string) : string; + const hash = await subtleCrypto.digest("MD5", data); + return Array.from(new Uint8Array(hash)).map((b) => b.toString(16).padStart(2, "0")).join(""); + } + } + __name(md5, "md5"); + async function postgresMd5PasswordHash(user, password, salt) { + const inner = await md5(password + user); + const outer = await md5(Buffer.concat([Buffer.from(inner), salt])); + return "md5" + outer; + } + __name(postgresMd5PasswordHash, "postgresMd5PasswordHash"); + async function sha256(text) { + return await subtleCrypto.digest("SHA-256", text); + } + __name(sha256, "sha256"); + async function hashByName(hashName, text) { + return await subtleCrypto.digest(hashName, text); + } + __name(hashByName, "hashByName"); + async function hmacSha256(keyBuffer, msg) { + const key = await subtleCrypto.importKey("raw", keyBuffer, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]); + return await subtleCrypto.sign("HMAC", key, textEncoder.encode(msg)); + } + __name(hmacSha256, "hmacSha256"); + async function deriveKey(password, salt, iterations) { + const key = await subtleCrypto.importKey("raw", textEncoder.encode(password), "PBKDF2", false, ["deriveBits"]); + const params = { name: "PBKDF2", hash: "SHA-256", salt, iterations }; + return await subtleCrypto.deriveBits(params, key, 32 * 8, ["deriveBits"]); + } + __name(deriveKey, "deriveKey"); + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/crypto/cert-signatures.js +var require_cert_signatures = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/crypto/cert-signatures.js"(exports, module) { + function x509Error(msg, cert) { + return new Error("SASL channel binding: " + msg + " when parsing public certificate " + cert.toString("base64")); + } + __name(x509Error, "x509Error"); + function readASN1Length(data, index) { + let length = data[index++]; + if (length < 128) return { length, index }; + const lengthBytes = length & 127; + if (lengthBytes > 4) throw x509Error("bad length", data); + length = 0; + for (let i = 0; i < lengthBytes; i++) { + length = length << 8 | data[index++]; + } + return { length, index }; + } + __name(readASN1Length, "readASN1Length"); + function readASN1OID(data, index) { + if (data[index++] !== 6) throw x509Error("non-OID data", data); + const { length: OIDLength, index: indexAfterOIDLength } = readASN1Length(data, index); + index = indexAfterOIDLength; + const lastIndex = index + OIDLength; + const byte1 = data[index++]; + let oid = (byte1 / 40 >> 0) + "." + byte1 % 40; + while (index < lastIndex) { + let value = 0; + while (index < lastIndex) { + const nextByte = data[index++]; + value = value << 7 | nextByte & 127; + if (nextByte < 128) break; + } + oid += "." + value; + } + return { oid, index }; + } + __name(readASN1OID, "readASN1OID"); + function expectASN1Seq(data, index) { + if (data[index++] !== 48) throw x509Error("non-sequence data", data); + return readASN1Length(data, index); + } + __name(expectASN1Seq, "expectASN1Seq"); + function signatureAlgorithmHashFromCertificate(data, index) { + if (index === void 0) index = 0; + index = expectASN1Seq(data, index).index; + const { length: certInfoLength, index: indexAfterCertInfoLength } = expectASN1Seq(data, index); + index = indexAfterCertInfoLength + certInfoLength; + index = expectASN1Seq(data, index).index; + const { oid, index: indexAfterOID } = readASN1OID(data, index); + switch (oid) { + // RSA + case "1.2.840.113549.1.1.4": + return "MD5"; + case "1.2.840.113549.1.1.5": + return "SHA-1"; + case "1.2.840.113549.1.1.11": + return "SHA-256"; + case "1.2.840.113549.1.1.12": + return "SHA-384"; + case "1.2.840.113549.1.1.13": + return "SHA-512"; + case "1.2.840.113549.1.1.14": + return "SHA-224"; + case "1.2.840.113549.1.1.15": + return "SHA512-224"; + case "1.2.840.113549.1.1.16": + return "SHA512-256"; + // ECDSA + case "1.2.840.10045.4.1": + return "SHA-1"; + case "1.2.840.10045.4.3.1": + return "SHA-224"; + case "1.2.840.10045.4.3.2": + return "SHA-256"; + case "1.2.840.10045.4.3.3": + return "SHA-384"; + case "1.2.840.10045.4.3.4": + return "SHA-512"; + // RSASSA-PSS: hash is indicated separately + case "1.2.840.113549.1.1.10": { + index = indexAfterOID; + index = expectASN1Seq(data, index).index; + if (data[index++] !== 160) throw x509Error("non-tag data", data); + index = readASN1Length(data, index).index; + index = expectASN1Seq(data, index).index; + const { oid: hashOID } = readASN1OID(data, index); + switch (hashOID) { + // standalone hash OIDs + case "1.2.840.113549.2.5": + return "MD5"; + case "1.3.14.3.2.26": + return "SHA-1"; + case "2.16.840.1.101.3.4.2.1": + return "SHA-256"; + case "2.16.840.1.101.3.4.2.2": + return "SHA-384"; + case "2.16.840.1.101.3.4.2.3": + return "SHA-512"; + } + throw x509Error("unknown hash OID " + hashOID, data); + } + // Ed25519 -- see https://github.com/openssl/openssl/issues/15477 + case "1.3.101.110": + case "1.3.101.112": + return "SHA-512"; + // Ed448 -- still not in pg 17.2 (if supported, digest would be SHAKE256 x 64 bytes) + case "1.3.101.111": + case "1.3.101.113": + throw x509Error("Ed448 certificate channel binding is not currently supported by Postgres"); + } + throw x509Error("unknown OID " + oid, data); + } + __name(signatureAlgorithmHashFromCertificate, "signatureAlgorithmHashFromCertificate"); + module.exports = { signatureAlgorithmHashFromCertificate }; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/crypto/sasl.js +var require_sasl = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/crypto/sasl.js"(exports, module) { + "use strict"; + var crypto = require_utils2(); + var { signatureAlgorithmHashFromCertificate } = require_cert_signatures(); + function saslprep(password) { + const nonAsciiSpace = /[\u00A0\u1680\u2000-\u200B\u202F\u205F\u3000]/g; + const mappedToNothing = /[\u00AD\u034F\u1806\u180B\u180C\u180D\u200C\u200D\u2060\uFE00-\uFE0F\uFEFF]/g; + return password.replace(nonAsciiSpace, " ").replace(mappedToNothing, "").normalize("NFKC"); + } + __name(saslprep, "saslprep"); + var DEFAULT_MAX_SCRAM_ITERATIONS = 1e5; + function startSession(mechanisms, stream, scramMaxIterations = DEFAULT_MAX_SCRAM_ITERATIONS) { + const candidates = ["SCRAM-SHA-256"]; + if (stream) candidates.unshift("SCRAM-SHA-256-PLUS"); + const mechanism = candidates.find((candidate) => mechanisms.includes(candidate)); + if (!mechanism) { + throw new Error("SASL: Only mechanism(s) " + candidates.join(" and ") + " are supported"); + } + if (mechanism === "SCRAM-SHA-256-PLUS" && typeof stream.getPeerCertificate !== "function") { + throw new Error("SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate"); + } + const clientNonce = crypto.randomBytes(18).toString("base64"); + const gs2Header = mechanism === "SCRAM-SHA-256-PLUS" ? "p=tls-server-end-point" : stream ? "y" : "n"; + return { + mechanism, + clientNonce, + response: gs2Header + ",,n=*,r=" + clientNonce, + message: "SASLInitialResponse", + scramMaxIterations + }; + } + __name(startSession, "startSession"); + async function continueSession(session, password, serverData, stream) { + if (session.message !== "SASLInitialResponse") { + throw new Error("SASL: Last message was not SASLInitialResponse"); + } + if (typeof password !== "string") { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string"); + } + if (password === "") { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string"); + } + if (typeof serverData !== "string") { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string"); + } + const sv = parseServerFirstMessage(serverData); + if (!sv.nonce.startsWith(session.clientNonce)) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce"); + } else if (sv.nonce.length === session.clientNonce.length) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short"); + } + const scramMaxIterations = typeof session.scramMaxIterations === "number" ? session.scramMaxIterations : DEFAULT_MAX_SCRAM_ITERATIONS; + if (scramMaxIterations !== 0 && sv.iteration > scramMaxIterations) { + throw new Error( + "SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration count " + sv.iteration + " exceeds scramMaxIterations of " + scramMaxIterations + ); + } + const clientFirstMessageBare = "n=*,r=" + session.clientNonce; + const serverFirstMessage = "r=" + sv.nonce + ",s=" + sv.salt + ",i=" + sv.iteration; + let channelBinding = stream ? "eSws" : "biws"; + if (session.mechanism === "SCRAM-SHA-256-PLUS") { + const peerCert = stream.getPeerCertificate().raw; + let hashName = signatureAlgorithmHashFromCertificate(peerCert); + if (hashName === "MD5" || hashName === "SHA-1") hashName = "SHA-256"; + const certHash = await crypto.hashByName(hashName, peerCert); + const bindingData = Buffer.concat([Buffer.from("p=tls-server-end-point,,"), Buffer.from(certHash)]); + channelBinding = bindingData.toString("base64"); + } + const clientFinalMessageWithoutProof = "c=" + channelBinding + ",r=" + sv.nonce; + const authMessage = clientFirstMessageBare + "," + serverFirstMessage + "," + clientFinalMessageWithoutProof; + const saltBytes = Buffer.from(sv.salt, "base64"); + const saltedPassword = await crypto.deriveKey(saslprep(password), saltBytes, sv.iteration); + const clientKey = await crypto.hmacSha256(saltedPassword, "Client Key"); + const storedKey = await crypto.sha256(clientKey); + const clientSignature = await crypto.hmacSha256(storedKey, authMessage); + const clientProof = xorBuffers(Buffer.from(clientKey), Buffer.from(clientSignature)).toString("base64"); + const serverKey = await crypto.hmacSha256(saltedPassword, "Server Key"); + const serverSignatureBytes = await crypto.hmacSha256(serverKey, authMessage); + session.message = "SASLResponse"; + session.serverSignature = Buffer.from(serverSignatureBytes).toString("base64"); + session.response = clientFinalMessageWithoutProof + ",p=" + clientProof; + } + __name(continueSession, "continueSession"); + function finalizeSession(session, serverData) { + if (session.message !== "SASLResponse") { + throw new Error("SASL: Last message was not SASLResponse"); + } + if (typeof serverData !== "string") { + throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string"); + } + const { serverSignature } = parseServerFinalMessage(serverData); + if (serverSignature !== session.serverSignature) { + throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match"); + } + } + __name(finalizeSession, "finalizeSession"); + function isPrintableChars(text) { + if (typeof text !== "string") { + throw new TypeError("SASL: text must be a string"); + } + return text.split("").map((_, i) => text.charCodeAt(i)).every((c) => c >= 33 && c <= 43 || c >= 45 && c <= 126); + } + __name(isPrintableChars, "isPrintableChars"); + function isBase64(text) { + return /^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(text); + } + __name(isBase64, "isBase64"); + function parseAttributePairs(text) { + if (typeof text !== "string") { + throw new TypeError("SASL: attribute pairs text must be a string"); + } + return new Map( + text.split(",").map((attrValue) => { + if (!/^.=/.test(attrValue)) { + throw new Error("SASL: Invalid attribute pair entry"); + } + const name = attrValue[0]; + const value = attrValue.substring(2); + return [name, value]; + }) + ); + } + __name(parseAttributePairs, "parseAttributePairs"); + function parseServerFirstMessage(data) { + const attrPairs = parseAttributePairs(data); + const nonce = attrPairs.get("r"); + if (!nonce) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing"); + } else if (!isPrintableChars(nonce)) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters"); + } + const salt = attrPairs.get("s"); + if (!salt) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing"); + } else if (!isBase64(salt)) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64"); + } + const iterationText = attrPairs.get("i"); + if (!iterationText) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing"); + } else if (!/^[1-9][0-9]*$/.test(iterationText)) { + throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count"); + } + const iteration = parseInt(iterationText, 10); + return { + nonce, + salt, + iteration + }; + } + __name(parseServerFirstMessage, "parseServerFirstMessage"); + function parseServerFinalMessage(serverData) { + const attrPairs = parseAttributePairs(serverData); + const error = attrPairs.get("e"); + const serverSignature = attrPairs.get("v"); + if (error) { + throw new Error(`SASL: SCRAM-SERVER-FINAL-MESSAGE: server returned error: "${error}"`); + } + if (!serverSignature) { + throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing"); + } else if (!isBase64(serverSignature)) { + throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64"); + } + return { + serverSignature + }; + } + __name(parseServerFinalMessage, "parseServerFinalMessage"); + function xorBuffers(a, b) { + if (!Buffer.isBuffer(a)) { + throw new TypeError("first argument must be a Buffer"); + } + if (!Buffer.isBuffer(b)) { + throw new TypeError("second argument must be a Buffer"); + } + if (a.length !== b.length) { + throw new Error("Buffer lengths must match"); + } + if (a.length === 0) { + throw new Error("Buffers cannot be empty"); + } + return Buffer.from(a.map((_, i) => a[i] ^ b[i])); + } + __name(xorBuffers, "xorBuffers"); + module.exports = { + startSession, + continueSession, + finalizeSession, + DEFAULT_MAX_SCRAM_ITERATIONS + }; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/type-overrides.js +var require_type_overrides = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/type-overrides.js"(exports, module) { + "use strict"; + var types2 = require_pg_types(); + function TypeOverrides2(userTypes) { + this._types = userTypes || types2; + this.text = {}; + this.binary = {}; + } + __name(TypeOverrides2, "TypeOverrides"); + TypeOverrides2.prototype.getOverrides = function(format) { + switch (format) { + case "text": + return this.text; + case "binary": + return this.binary; + default: + return {}; + } + }; + TypeOverrides2.prototype.setTypeParser = function(oid, format, parseFn) { + if (typeof format === "function") { + parseFn = format; + format = "text"; + } + this.getOverrides(format)[oid] = parseFn; + }; + TypeOverrides2.prototype.getTypeParser = function(oid, format) { + format = format || "text"; + return this.getOverrides(format)[oid] || this._types.getTypeParser(oid, format); + }; + module.exports = TypeOverrides2; + } +}); + +// ../../node_modules/.pnpm/pg-connection-string@2.14.1/node_modules/pg-connection-string/index.js +var require_pg_connection_string = __commonJS({ + "../../node_modules/.pnpm/pg-connection-string@2.14.1/node_modules/pg-connection-string/index.js"(exports, module) { + "use strict"; + function parse(str, options = {}) { + if (str.charAt(0) === "/") { + const config2 = str.split(" "); + return { host: config2[0], database: config2[1] }; + } + const config = /* @__PURE__ */ Object.create(null); + let result; + let dummyHost = false; + if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) { + str = encodeURI(str).replace(/%25(\d\d)/g, "%$1"); + } + try { + try { + result = new URL(str, "postgres://base"); + } catch (e) { + result = new URL(str.replace("@/", "@___DUMMY___/"), "postgres://base"); + dummyHost = true; + } + } catch (err) { + err.input && (err.input = "*****REDACTED*****"); + throw err; + } + for (const entry of result.searchParams.entries()) { + config[entry[0]] = entry[1]; + } + config.user = config.user || decodeURIComponent(result.username); + config.password = config.password || decodeURIComponent(result.password); + if (result.protocol == "socket:") { + config.host = decodeURI(result.pathname); + config.database = result.searchParams.get("db"); + config.client_encoding = result.searchParams.get("encoding"); + return config; + } + const hostname = (dummyHost ? "" : result.hostname).replace(/^\[(.+)\]$/, "$1"); + if (!config.host) { + config.host = decodeURIComponent(hostname); + } else if (hostname && /^%2f/i.test(hostname)) { + result.pathname = hostname + result.pathname; + } + if (!config.port) { + config.port = result.port; + } + const pathname = result.pathname.slice(1) || null; + config.database = pathname ? decodeURI(pathname) : null; + if (config.ssl === "true" || config.ssl === "1") { + config.ssl = true; + } + if (config.ssl === "0") { + config.ssl = false; + } + if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) { + config.ssl = {}; + } + if (config.sslnegotiation === "direct" && config.ssl === void 0) { + config.ssl = true; + } + const fs = config.sslcert || config.sslkey || config.sslrootcert ? __require("fs") : null; + if (config.sslcert) { + config.ssl.cert = fs.readFileSync(config.sslcert).toString(); + } + if (config.sslkey) { + config.ssl.key = fs.readFileSync(config.sslkey).toString(); + } + if (config.sslrootcert) { + config.ssl.ca = fs.readFileSync(config.sslrootcert).toString(); + } + if (options.useLibpqCompat && config.uselibpqcompat) { + throw new Error("Both useLibpqCompat and uselibpqcompat are set. Please use only one of them."); + } + if (config.uselibpqcompat === "true" || options.useLibpqCompat) { + switch (config.sslmode) { + case "disable": { + config.ssl = false; + break; + } + case "prefer": { + config.ssl.rejectUnauthorized = false; + break; + } + case "require": { + if (config.sslrootcert) { + config.ssl.checkServerIdentity = function() { + }; + } else { + config.ssl.rejectUnauthorized = false; + } + break; + } + case "verify-ca": { + if (!config.ssl.ca) { + throw new Error( + "SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security." + ); + } + config.ssl.checkServerIdentity = function() { + }; + break; + } + case "verify-full": { + break; + } + } + } else { + switch (config.sslmode) { + case "disable": { + config.ssl = false; + break; + } + case "prefer": + case "require": + case "verify-ca": + case "verify-full": { + if (config.sslmode !== "verify-full") { + deprecatedSslModeWarning(config.sslmode); + } + break; + } + case "no-verify": { + config.ssl.rejectUnauthorized = false; + break; + } + } + } + return config; + } + __name(parse, "parse"); + function toConnectionOptions(sslConfig) { + const connectionOptions = Object.entries(sslConfig).reduce((c, [key, value]) => { + if (value !== void 0 && value !== null) { + c[key] = value; + } + return c; + }, /* @__PURE__ */ Object.create(null)); + return connectionOptions; + } + __name(toConnectionOptions, "toConnectionOptions"); + function toClientConfig(config) { + const poolConfig = Object.entries(config).reduce((c, [key, value]) => { + if (key === "ssl") { + const sslConfig = value; + if (typeof sslConfig === "boolean") { + c[key] = sslConfig; + } + if (typeof sslConfig === "object") { + c[key] = toConnectionOptions(sslConfig); + } + } else if (value !== void 0 && value !== null) { + if (key === "port") { + if (value !== "") { + const v = parseInt(value, 10); + if (isNaN(v)) { + throw new Error(`Invalid ${key}: ${value}`); + } + c[key] = v; + } + } else { + c[key] = value; + } + } + return c; + }, /* @__PURE__ */ Object.create(null)); + return poolConfig; + } + __name(toClientConfig, "toClientConfig"); + function parseIntoClientConfig(str) { + return toClientConfig(parse(str)); + } + __name(parseIntoClientConfig, "parseIntoClientConfig"); + function deprecatedSslModeWarning(sslmode) { + if (!deprecatedSslModeWarning.warned && typeof process !== "undefined" && process.emitWarning) { + deprecatedSslModeWarning.warned = true; + process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'. +In the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees. + +To prepare for this change: +- If you want the current behavior, explicitly use 'sslmode=verify-full' +- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${sslmode}' + +See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`); + } + } + __name(deprecatedSslModeWarning, "deprecatedSslModeWarning"); + module.exports = parse; + parse.parse = parse; + parse.toClientConfig = toClientConfig; + parse.parseIntoClientConfig = parseIntoClientConfig; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/connection-parameters.js +var require_connection_parameters = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/connection-parameters.js"(exports, module) { + "use strict"; + var dns = __require("dns"); + var defaults2 = require_defaults(); + var parse = require_pg_connection_string().parse; + var val = /* @__PURE__ */ __name(function(key, config, envVar) { + if (config[key]) { + return config[key]; + } + if (envVar === void 0) { + envVar = process.env["PG" + key.toUpperCase()]; + } else if (envVar === false) { + } else { + envVar = process.env[envVar]; + } + return envVar || defaults2[key]; + }, "val"); + var readSSLConfigFromEnvironment = /* @__PURE__ */ __name(function() { + switch (process.env.PGSSLMODE) { + case "disable": + return false; + case "prefer": + case "require": + case "verify-ca": + case "verify-full": + return true; + case "no-verify": + return { rejectUnauthorized: false }; + } + return defaults2.ssl; + }, "readSSLConfigFromEnvironment"); + var quoteParamValue = /* @__PURE__ */ __name(function(value) { + return "'" + ("" + value).replace(/\\/g, "\\\\").replace(/'/g, "\\'") + "'"; + }, "quoteParamValue"); + var add = /* @__PURE__ */ __name(function(params, config, paramName) { + const value = config[paramName]; + if (value !== void 0 && value !== null) { + params.push(paramName + "=" + quoteParamValue(value)); + } + }, "add"); + var ConnectionParameters = class { + static { + __name(this, "ConnectionParameters"); + } + constructor(config) { + config = typeof config === "string" ? parse(config) : config || {}; + if (config.connectionString) { + config = Object.assign({}, config, parse(config.connectionString)); + } + this.user = val("user", config); + this.database = val("database", config); + if (this.database === void 0) { + this.database = this.user; + } + this.port = parseInt(val("port", config), 10); + this.host = val("host", config); + Object.defineProperty(this, "password", { + configurable: true, + enumerable: false, + writable: true, + value: val("password", config) + }); + this.binary = val("binary", config); + this.options = val("options", config); + this.ssl = typeof config.ssl === "undefined" ? readSSLConfigFromEnvironment() : config.ssl; + if (typeof this.ssl === "string") { + if (this.ssl === "true") { + this.ssl = true; + } + } + if (this.ssl === "no-verify") { + this.ssl = { rejectUnauthorized: false }; + } + if (this.ssl && this.ssl.key) { + Object.defineProperty(this.ssl, "key", { + enumerable: false + }); + } + this.sslnegotiation = val("sslnegotiation", config, "PGSSLNEGOTIATION"); + if (this.sslnegotiation !== void 0 && this.sslnegotiation !== "postgres" && this.sslnegotiation !== "direct") { + throw new Error( + `Invalid sslnegotiation value: "${this.sslnegotiation}". Valid values are "postgres" and "direct".` + ); + } + if (this.sslnegotiation === "direct" && !this.ssl) { + throw new Error("sslnegotiation=direct requires SSL to be enabled"); + } + this.client_encoding = val("client_encoding", config); + this.replication = val("replication", config); + this.isDomainSocket = !(this.host || "").indexOf("/"); + this.application_name = val("application_name", config, "PGAPPNAME"); + this.fallback_application_name = val("fallback_application_name", config, false); + this.statement_timeout = val("statement_timeout", config, false); + this.lock_timeout = val("lock_timeout", config, false); + this.idle_in_transaction_session_timeout = val("idle_in_transaction_session_timeout", config, false); + this.query_timeout = val("query_timeout", config, false); + if (config.connectionTimeoutMillis === void 0) { + this.connect_timeout = process.env.PGCONNECT_TIMEOUT || 0; + } else { + this.connect_timeout = Math.floor(config.connectionTimeoutMillis / 1e3); + } + if (config.keepAlive === false) { + this.keepalives = 0; + } else if (config.keepAlive === true) { + this.keepalives = 1; + } + if (typeof config.keepAliveInitialDelayMillis === "number") { + this.keepalives_idle = Math.floor(config.keepAliveInitialDelayMillis / 1e3); + } + } + getLibpqConnectionString(cb) { + const params = []; + add(params, this, "user"); + add(params, this, "password"); + add(params, this, "port"); + add(params, this, "application_name"); + add(params, this, "fallback_application_name"); + add(params, this, "connect_timeout"); + add(params, this, "options"); + const ssl = typeof this.ssl === "object" ? this.ssl : this.ssl ? { sslmode: this.ssl } : {}; + add(params, ssl, "sslmode"); + add(params, ssl, "sslca"); + add(params, ssl, "sslkey"); + add(params, ssl, "sslcert"); + add(params, ssl, "sslrootcert"); + add(params, this, "sslnegotiation"); + if (this.database) { + params.push("dbname=" + quoteParamValue(this.database)); + } + if (this.replication) { + params.push("replication=" + quoteParamValue(this.replication)); + } + if (this.host) { + params.push("host=" + quoteParamValue(this.host)); + } + if (this.isDomainSocket) { + return cb(null, params.join(" ")); + } + if (this.client_encoding) { + params.push("client_encoding=" + quoteParamValue(this.client_encoding)); + } + dns.lookup(this.host, function(err, address) { + if (err) return cb(err, null); + params.push("hostaddr=" + quoteParamValue(address)); + return cb(null, params.join(" ")); + }); + } + }; + module.exports = ConnectionParameters; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/result.js +var require_result = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/result.js"(exports, module) { + "use strict"; + var types2 = require_pg_types(); + var matchRegexp = /^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/; + var Result2 = class { + static { + __name(this, "Result"); + } + constructor(rowMode, types3) { + this.command = null; + this.rowCount = null; + this.oid = null; + this.rows = []; + this.fields = []; + this._parsers = void 0; + this._types = types3; + this.RowCtor = null; + this.rowAsArray = rowMode === "array"; + if (this.rowAsArray) { + this.parseRow = this._parseRowAsArray; + } + this._prebuiltEmptyResultObject = null; + } + // adds a command complete message + addCommandComplete(msg) { + let match; + if (msg.text) { + match = matchRegexp.exec(msg.text); + } else { + match = matchRegexp.exec(msg.command); + } + if (match) { + this.command = match[1]; + if (match[3]) { + this.oid = parseInt(match[2], 10); + this.rowCount = parseInt(match[3], 10); + } else if (match[2]) { + this.rowCount = parseInt(match[2], 10); + } + } + } + _parseRowAsArray(rowData) { + const row = new Array(rowData.length); + for (let i = 0, len = rowData.length; i < len; i++) { + const rawValue = rowData[i]; + if (rawValue !== null) { + row[i] = this._parsers[i](rawValue); + } else { + row[i] = null; + } + } + return row; + } + parseRow(rowData) { + const row = { ...this._prebuiltEmptyResultObject }; + for (let i = 0, len = rowData.length; i < len; i++) { + const rawValue = rowData[i]; + const field = this.fields[i].name; + if (rawValue !== null) { + const v = this.fields[i].format === "binary" ? Buffer.from(rawValue) : rawValue; + row[field] = this._parsers[i](v); + } else { + row[field] = null; + } + } + return row; + } + addRow(row) { + this.rows.push(row); + } + addFields(fieldDescriptions) { + this.fields = fieldDescriptions; + if (this.fields.length) { + this._parsers = new Array(fieldDescriptions.length); + } + const row = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < fieldDescriptions.length; i++) { + const desc = fieldDescriptions[i]; + row[desc.name] = null; + if (this._types) { + this._parsers[i] = this._types.getTypeParser(desc.dataTypeID, desc.format || "text"); + } else { + this._parsers[i] = types2.getTypeParser(desc.dataTypeID, desc.format || "text"); + } + } + this._prebuiltEmptyResultObject = { ...row }; + } + }; + module.exports = Result2; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/query.js +var require_query = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/query.js"(exports, module) { + "use strict"; + var { EventEmitter } = __require("events"); + var Result2 = require_result(); + var utils = require_utils(); + var Query2 = class extends EventEmitter { + static { + __name(this, "Query"); + } + constructor(config, values, callback) { + super(); + config = utils.normalizeQueryConfig(config, values, callback); + this.text = config.text; + this.values = config.values; + this.rows = config.rows; + this.types = config.types; + this.name = config.name; + this.queryMode = config.queryMode; + this.binary = config.binary; + this.portal = config.portal || ""; + this.callback = config.callback; + this._rowMode = config.rowMode; + if (process.domain && config.callback) { + this.callback = process.domain.bind(config.callback); + } + this._result = new Result2(this._rowMode, this.types); + this._results = this._result; + this._canceledDueToError = false; + } + requiresPreparation() { + if (this.queryMode === "extended") { + return true; + } + if (this.name) { + return true; + } + if (this.rows) { + return true; + } + if (!this.text) { + return false; + } + if (!this.values) { + return false; + } + return this.values.length > 0; + } + _checkForMultirow() { + if (this._result.command) { + if (!Array.isArray(this._results)) { + this._results = [this._result]; + } + this._result = new Result2(this._rowMode, this._result._types); + this._results.push(this._result); + } + } + // associates row metadata from the supplied + // message with this query object + // metadata used when parsing row results + handleRowDescription(msg) { + this._checkForMultirow(); + this._result.addFields(msg.fields); + this._accumulateRows = this.callback || !this.listeners("row").length; + } + handleDataRow(msg) { + let row; + if (this._canceledDueToError) { + return; + } + try { + row = this._result.parseRow(msg.fields); + } catch (err) { + this._canceledDueToError = err; + return; + } + this.emit("row", row, this._result); + if (this._accumulateRows) { + this._result.addRow(row); + } + } + handleCommandComplete(msg, connection) { + this._checkForMultirow(); + this._result.addCommandComplete(msg); + if (this.rows) { + connection.sync(); + } + } + // if a named prepared statement is created with empty query text + // the backend will send an emptyQuery message but *not* a command complete message + // since we pipeline sync immediately after execute we don't need to do anything here + // unless we have rows specified, in which case we did not pipeline the initial sync call + handleEmptyQuery(connection) { + if (this.rows) { + connection.sync(); + } + } + handleError(err, connection) { + if (this._canceledDueToError) { + err = this._canceledDueToError; + this._canceledDueToError = false; + } + if (this.callback) { + return this.callback(err); + } + this.emit("error", err); + } + handleReadyForQuery(con) { + if (this._canceledDueToError) { + return this.handleError(this._canceledDueToError, con); + } + if (this.callback) { + try { + this.callback(null, this._results); + } catch (err) { + process.nextTick(() => { + throw err; + }); + } + } + this.emit("end", this._results); + } + submit(connection) { + if (typeof this.text !== "string" && typeof this.name !== "string") { + return new Error("A query must have either text or a name. Supplying neither is unsupported."); + } + const previous = connection.parsedStatements[this.name] || connection.submittedNamedStatements[this.name]; + if (this.text && previous && this.text !== previous) { + return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`); + } + if (this.values && !Array.isArray(this.values)) { + return new Error("Query values must be an array"); + } + if (this.requiresPreparation()) { + connection.stream.cork && connection.stream.cork(); + try { + this.prepare(connection); + } finally { + connection.stream.uncork && connection.stream.uncork(); + } + } else { + connection.query(this.text); + } + return null; + } + hasBeenParsed(connection) { + return this.name && (connection.parsedStatements[this.name] !== void 0 || connection.submittedNamedStatements[this.name] !== void 0); + } + handlePortalSuspended(connection) { + this._getRows(connection, this.rows); + } + _getRows(connection, rows) { + connection.execute({ + portal: this.portal, + rows + }); + if (!rows) { + connection.sync(); + } else { + connection.flush(); + } + } + // http://developer.postgresql.org/pgdocs/postgres/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY + prepare(connection) { + if (!this.hasBeenParsed(connection)) { + connection.parse({ + text: this.text, + name: this.name, + types: this.types + }); + if (this.name) { + connection.submittedNamedStatements[this.name] = this.text; + } + } + try { + connection.bind({ + portal: this.portal, + statement: this.name, + values: this.values, + binary: this.binary, + valueMapper: utils.prepareValue + }); + } catch (err) { + connection.close({ type: "S", name: this.name }); + connection.sync(); + this.handleError(err, connection); + return; + } + connection.describe({ + type: "P", + name: this.portal || "" + }); + this._getRows(connection, this.rows); + } + handleCopyInResponse(connection) { + connection.sendCopyFail("No source stream defined"); + } + handleCopyData(msg, connection) { + } + }; + module.exports = Query2; + } +}); + +// ../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/messages.js +var require_messages = __commonJS({ + "../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/messages.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NoticeMessage = exports.DataRowMessage = exports.CommandCompleteMessage = exports.ReadyForQueryMessage = exports.NotificationResponseMessage = exports.BackendKeyDataMessage = exports.AuthenticationMD5Password = exports.ParameterStatusMessage = exports.ParameterDescriptionMessage = exports.RowDescriptionMessage = exports.Field = exports.CopyResponse = exports.CopyDataMessage = exports.DatabaseError = exports.copyDone = exports.emptyQuery = exports.replicationStart = exports.portalSuspended = exports.noData = exports.closeComplete = exports.bindComplete = exports.parseComplete = void 0; + exports.parseComplete = { + name: "parseComplete", + length: 5 + }; + exports.bindComplete = { + name: "bindComplete", + length: 5 + }; + exports.closeComplete = { + name: "closeComplete", + length: 5 + }; + exports.noData = { + name: "noData", + length: 5 + }; + exports.portalSuspended = { + name: "portalSuspended", + length: 5 + }; + exports.replicationStart = { + name: "replicationStart", + length: 4 + }; + exports.emptyQuery = { + name: "emptyQuery", + length: 4 + }; + exports.copyDone = { + name: "copyDone", + length: 4 + }; + var DatabaseError2 = class extends Error { + static { + __name(this, "DatabaseError"); + } + constructor(message, length, name) { + super(message); + this.length = length; + this.name = name; + } + }; + exports.DatabaseError = DatabaseError2; + var CopyDataMessage = class { + static { + __name(this, "CopyDataMessage"); + } + constructor(length, chunk) { + this.length = length; + this.chunk = chunk; + this.name = "copyData"; + } + }; + exports.CopyDataMessage = CopyDataMessage; + var CopyResponse = class { + static { + __name(this, "CopyResponse"); + } + constructor(length, name, binary, columnCount) { + this.length = length; + this.name = name; + this.binary = binary; + this.columnTypes = new Array(columnCount); + } + }; + exports.CopyResponse = CopyResponse; + var Field = class { + static { + __name(this, "Field"); + } + constructor(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, format) { + this.name = name; + this.tableID = tableID; + this.columnID = columnID; + this.dataTypeID = dataTypeID; + this.dataTypeSize = dataTypeSize; + this.dataTypeModifier = dataTypeModifier; + this.format = format; + } + }; + exports.Field = Field; + var RowDescriptionMessage = class { + static { + __name(this, "RowDescriptionMessage"); + } + constructor(length, fieldCount) { + this.length = length; + this.fieldCount = fieldCount; + this.name = "rowDescription"; + this.fields = new Array(this.fieldCount); + } + }; + exports.RowDescriptionMessage = RowDescriptionMessage; + var ParameterDescriptionMessage = class { + static { + __name(this, "ParameterDescriptionMessage"); + } + constructor(length, parameterCount) { + this.length = length; + this.parameterCount = parameterCount; + this.name = "parameterDescription"; + this.dataTypeIDs = new Array(this.parameterCount); + } + }; + exports.ParameterDescriptionMessage = ParameterDescriptionMessage; + var ParameterStatusMessage = class { + static { + __name(this, "ParameterStatusMessage"); + } + constructor(length, parameterName, parameterValue) { + this.length = length; + this.parameterName = parameterName; + this.parameterValue = parameterValue; + this.name = "parameterStatus"; + } + }; + exports.ParameterStatusMessage = ParameterStatusMessage; + var AuthenticationMD5Password = class { + static { + __name(this, "AuthenticationMD5Password"); + } + constructor(length, salt) { + this.length = length; + this.salt = salt; + this.name = "authenticationMD5Password"; + } + }; + exports.AuthenticationMD5Password = AuthenticationMD5Password; + var BackendKeyDataMessage = class { + static { + __name(this, "BackendKeyDataMessage"); + } + constructor(length, processID, secretKey) { + this.length = length; + this.processID = processID; + this.secretKey = secretKey; + this.name = "backendKeyData"; + } + }; + exports.BackendKeyDataMessage = BackendKeyDataMessage; + var NotificationResponseMessage = class { + static { + __name(this, "NotificationResponseMessage"); + } + constructor(length, processId, channel, payload) { + this.length = length; + this.processId = processId; + this.channel = channel; + this.payload = payload; + this.name = "notification"; + } + }; + exports.NotificationResponseMessage = NotificationResponseMessage; + var ReadyForQueryMessage = class { + static { + __name(this, "ReadyForQueryMessage"); + } + constructor(length, status) { + this.length = length; + this.status = status; + this.name = "readyForQuery"; + } + }; + exports.ReadyForQueryMessage = ReadyForQueryMessage; + var CommandCompleteMessage = class { + static { + __name(this, "CommandCompleteMessage"); + } + constructor(length, text) { + this.length = length; + this.text = text; + this.name = "commandComplete"; + } + }; + exports.CommandCompleteMessage = CommandCompleteMessage; + var DataRowMessage = class { + static { + __name(this, "DataRowMessage"); + } + constructor(length, fields) { + this.length = length; + this.fields = fields; + this.name = "dataRow"; + this.fieldCount = fields.length; + } + }; + exports.DataRowMessage = DataRowMessage; + var NoticeMessage = class { + static { + __name(this, "NoticeMessage"); + } + constructor(length, message) { + this.length = length; + this.message = message; + this.name = "notice"; + } + }; + exports.NoticeMessage = NoticeMessage; + } +}); + +// ../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/buffer-writer.js +var require_buffer_writer = __commonJS({ + "../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/buffer-writer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Writer = void 0; + var Writer = class { + static { + __name(this, "Writer"); + } + constructor(size = 256) { + this.size = size; + this.offset = 5; + this.headerPosition = 0; + this.buffer = Buffer.allocUnsafe(size); + } + ensure(size) { + const remaining = this.buffer.length - this.offset; + if (remaining < size) { + const oldBuffer = this.buffer; + const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size; + this.buffer = Buffer.allocUnsafe(newSize); + oldBuffer.copy(this.buffer, 0, 0, this.offset); + } + } + addInt32(num) { + this.ensure(4); + this.buffer[this.offset++] = num >>> 24 & 255; + this.buffer[this.offset++] = num >>> 16 & 255; + this.buffer[this.offset++] = num >>> 8 & 255; + this.buffer[this.offset++] = num >>> 0 & 255; + return this; + } + addInt16(num) { + this.ensure(2); + this.buffer[this.offset++] = num >>> 8 & 255; + this.buffer[this.offset++] = num >>> 0 & 255; + return this; + } + addCString(string) { + if (!string) { + this.ensure(1); + } else { + const len = Buffer.byteLength(string); + this.ensure(len + 1); + this.buffer.write(string, this.offset, "utf-8"); + this.offset += len; + } + this.buffer[this.offset++] = 0; + return this; + } + addString(string = "") { + const len = Buffer.byteLength(string); + this.ensure(len); + this.buffer.write(string, this.offset); + this.offset += len; + return this; + } + // Write an Int32 byte-length prefix immediately followed by the string's UTF-8 + // bytes. Postgres' Bind wire format prefixes every parameter with its length, + // and doing it in one method computes Buffer.byteLength ONCE — the previous + // `addInt32(Buffer.byteLength(s)).addString(s)` pairing scanned the string + // three times (byteLength for the prefix, byteLength again inside addString, + // then the encode), which is costly for large text parameters. + addInt32PrefixedString(string) { + const len = Buffer.byteLength(string); + this.ensure(4 + len); + const buffer = this.buffer; + let offset = this.offset; + buffer[offset++] = len >>> 24 & 255; + buffer[offset++] = len >>> 16 & 255; + buffer[offset++] = len >>> 8 & 255; + buffer[offset++] = len >>> 0 & 255; + buffer.write(string, offset, "utf-8"); + this.offset = offset + len; + return this; + } + add(otherBuffer) { + this.ensure(otherBuffer.length); + otherBuffer.copy(this.buffer, this.offset); + this.offset += otherBuffer.length; + return this; + } + /** + * Appends an uninitialized block of {@link size} bytes to the buffer and returns its offset. + */ + reserveUnsafe(size) { + const offset = this.offset; + this.ensure(size); + this.offset += size; + return offset; + } + join(code) { + if (code) { + this.buffer[this.headerPosition] = code; + const length = this.offset - (this.headerPosition + 1); + this.buffer.writeInt32BE(length, this.headerPosition + 1); + } + return this.buffer.slice(code ? 0 : 5, this.offset); + } + flush(code) { + const result = this.join(code); + this.offset = 5; + this.headerPosition = 0; + this.buffer = Buffer.allocUnsafe(this.size); + return result; + } + clear() { + this.offset = 5; + this.headerPosition = 0; + } + }; + exports.Writer = Writer; + } +}); + +// ../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/serializer.js +var require_serializer = __commonJS({ + "../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/serializer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.serialize = void 0; + var buffer_writer_1 = require_buffer_writer(); + var writer = new buffer_writer_1.Writer(); + var startup = /* @__PURE__ */ __name((opts) => { + writer.addInt16(3).addInt16(0); + for (const key of Object.keys(opts)) { + writer.addCString(key).addCString(opts[key]); + } + writer.addCString("client_encoding").addCString("UTF8"); + const bodyBuffer = writer.addCString("").flush(); + const length = bodyBuffer.length + 4; + return new buffer_writer_1.Writer().addInt32(length).add(bodyBuffer).flush(); + }, "startup"); + var requestSsl = /* @__PURE__ */ __name(() => { + const response = Buffer.allocUnsafe(8); + response.writeInt32BE(8, 0); + response.writeInt32BE(80877103, 4); + return response; + }, "requestSsl"); + var password = /* @__PURE__ */ __name((password2) => { + return writer.addCString(password2).flush( + 112 + /* code.startup */ + ); + }, "password"); + var sendSASLInitialResponseMessage = /* @__PURE__ */ __name(function(mechanism, initialResponse) { + writer.addCString(mechanism).addInt32PrefixedString(initialResponse); + return writer.flush( + 112 + /* code.startup */ + ); + }, "sendSASLInitialResponseMessage"); + var sendSCRAMClientFinalMessage = /* @__PURE__ */ __name(function(additionalData) { + return writer.addString(additionalData).flush( + 112 + /* code.startup */ + ); + }, "sendSCRAMClientFinalMessage"); + var query = /* @__PURE__ */ __name((text) => { + return writer.addCString(text).flush( + 81 + /* code.query */ + ); + }, "query"); + var emptyArray = []; + var parse = /* @__PURE__ */ __name((query2) => { + const name = query2.name || ""; + if (name.length > 63) { + console.error("Warning! Postgres only supports 63 characters for query names."); + console.error("You supplied %s (%s)", name, name.length); + console.error("This can cause conflicts and silent errors executing queries"); + } + const types2 = query2.types || emptyArray; + const len = types2.length; + const buffer = writer.addCString(name).addCString(query2.text).addInt16(len); + for (let i = 0; i < len; i++) { + buffer.addInt32(types2[i]); + } + return writer.flush( + 80 + /* code.parse */ + ); + }, "parse"); + var writeValues = /* @__PURE__ */ __name(function(values, valueMapper, formatsOffset) { + const len = values.length; + for (let i = 0; i < len; i++) { + const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i]; + let formatByte = 0; + if (mappedVal == null) { + writer.addInt32(-1); + } else if (mappedVal instanceof Buffer) { + formatByte = 1; + writer.addInt32(mappedVal.length); + writer.add(mappedVal); + } else { + writer.addInt32PrefixedString(mappedVal); + } + const buf = writer.buffer; + buf[formatsOffset++] = 0; + buf[formatsOffset++] = formatByte; + } + }, "writeValues"); + var bind = /* @__PURE__ */ __name((config = {}) => { + const portal = config.portal || ""; + const statement = config.statement || ""; + const binary = config.binary || false; + const values = config.values || emptyArray; + const len = values.length; + writer.addCString(portal).addCString(statement); + writer.addInt16(len); + const formatsOffset = writer.reserveUnsafe(len * 2); + writer.addInt16(len); + try { + writeValues(values, config.valueMapper, formatsOffset); + } catch (err) { + writer.clear(); + throw err; + } + writer.addInt16(1); + writer.addInt16( + binary ? 1 : 0 + /* ParamType.STRING */ + ); + return writer.flush( + 66 + /* code.bind */ + ); + }, "bind"); + var emptyExecute = Buffer.from([69, 0, 0, 0, 9, 0, 0, 0, 0, 0]); + var execute = /* @__PURE__ */ __name((config) => { + if (!config || !config.portal && !config.rows) { + return emptyExecute; + } + const portal = config.portal || ""; + const rows = config.rows || 0; + const portalLength = Buffer.byteLength(portal); + const len = 4 + portalLength + 1 + 4; + const buff = Buffer.allocUnsafe(1 + len); + buff[0] = 69; + buff.writeInt32BE(len, 1); + buff.write(portal, 5, "utf-8"); + buff[portalLength + 5] = 0; + buff.writeUInt32BE(rows, buff.length - 4); + return buff; + }, "execute"); + var cancel = /* @__PURE__ */ __name((processID, secretKey) => { + const buffer = Buffer.allocUnsafe(16); + buffer.writeInt32BE(16, 0); + buffer.writeInt16BE(1234, 4); + buffer.writeInt16BE(5678, 6); + buffer.writeInt32BE(processID, 8); + buffer.writeInt32BE(secretKey, 12); + return buffer; + }, "cancel"); + var cstringMessage = /* @__PURE__ */ __name((code, string) => { + const stringLen = Buffer.byteLength(string); + const len = 4 + stringLen + 1; + const buffer = Buffer.allocUnsafe(1 + len); + buffer[0] = code; + buffer.writeInt32BE(len, 1); + buffer.write(string, 5, "utf-8"); + buffer[len] = 0; + return buffer; + }, "cstringMessage"); + var emptyDescribePortal = writer.addCString("P").flush( + 68 + /* code.describe */ + ); + var emptyDescribeStatement = writer.addCString("S").flush( + 68 + /* code.describe */ + ); + var describe = /* @__PURE__ */ __name((msg) => { + return msg.name ? cstringMessage(68, `${msg.type}${msg.name || ""}`) : msg.type === "P" ? emptyDescribePortal : emptyDescribeStatement; + }, "describe"); + var close = /* @__PURE__ */ __name((msg) => { + const text = `${msg.type}${msg.name || ""}`; + return cstringMessage(67, text); + }, "close"); + var copyData = /* @__PURE__ */ __name((chunk) => { + return writer.add(chunk).flush( + 100 + /* code.copyFromChunk */ + ); + }, "copyData"); + var copyFail = /* @__PURE__ */ __name((message) => { + return cstringMessage(102, message); + }, "copyFail"); + var codeOnlyBuffer = /* @__PURE__ */ __name((code) => Buffer.from([code, 0, 0, 0, 4]), "codeOnlyBuffer"); + var flushBuffer = codeOnlyBuffer( + 72 + /* code.flush */ + ); + var syncBuffer = codeOnlyBuffer( + 83 + /* code.sync */ + ); + var endBuffer = codeOnlyBuffer( + 88 + /* code.end */ + ); + var copyDoneBuffer = codeOnlyBuffer( + 99 + /* code.copyDone */ + ); + var serialize = { + startup, + password, + requestSsl, + sendSASLInitialResponseMessage, + sendSCRAMClientFinalMessage, + query, + parse, + bind, + execute, + describe, + close, + flush: /* @__PURE__ */ __name(() => flushBuffer, "flush"), + sync: /* @__PURE__ */ __name(() => syncBuffer, "sync"), + end: /* @__PURE__ */ __name(() => endBuffer, "end"), + copyData, + copyDone: /* @__PURE__ */ __name(() => copyDoneBuffer, "copyDone"), + copyFail, + cancel + }; + exports.serialize = serialize; + } +}); + +// ../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/buffer-reader.js +var require_buffer_reader = __commonJS({ + "../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/buffer-reader.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.BufferReader = void 0; + var BufferReader = class { + static { + __name(this, "BufferReader"); + } + constructor(offset = 0) { + this.offset = offset; + this.buffer = Buffer.allocUnsafe(0); + this.encoding = "utf-8"; + } + setBuffer(offset, buffer) { + this.offset = offset; + this.buffer = buffer; + } + int16() { + const result = this.buffer.readInt16BE(this.offset); + this.offset += 2; + return result; + } + byte() { + const result = this.buffer[this.offset]; + this.offset++; + return result; + } + int32() { + const result = this.buffer.readInt32BE(this.offset); + this.offset += 4; + return result; + } + uint32() { + const result = this.buffer.readUInt32BE(this.offset); + this.offset += 4; + return result; + } + string(length) { + const result = this.buffer.toString(this.encoding, this.offset, this.offset + length); + this.offset += length; + return result; + } + cstring() { + const start = this.offset; + let end = start; + while (this.buffer[end++]) { + } + this.offset = end; + return this.buffer.toString(this.encoding, start, end - 1); + } + bytes(length) { + const result = this.buffer.slice(this.offset, this.offset + length); + this.offset += length; + return result; + } + }; + exports.BufferReader = BufferReader; + } +}); + +// ../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/parser.js +var require_parser = __commonJS({ + "../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/parser.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Parser = void 0; + var messages_1 = require_messages(); + var buffer_reader_1 = require_buffer_reader(); + var CODE_LENGTH = 1; + var LEN_LENGTH = 4; + var HEADER_LENGTH = CODE_LENGTH + LEN_LENGTH; + var LATEINIT_LENGTH = -1; + var emptyBuffer = Buffer.allocUnsafe(0); + var Parser = class { + static { + __name(this, "Parser"); + } + constructor(opts) { + this.buffer = emptyBuffer; + this.bufferLength = 0; + this.bufferOffset = 0; + this.reader = new buffer_reader_1.BufferReader(); + if ((opts === null || opts === void 0 ? void 0 : opts.mode) === "binary") { + throw new Error("Binary mode not supported yet"); + } + this.mode = (opts === null || opts === void 0 ? void 0 : opts.mode) || "text"; + } + parse(buffer, callback) { + this.mergeBuffer(buffer); + const bufferFullLength = this.bufferOffset + this.bufferLength; + let offset = this.bufferOffset; + while (offset + HEADER_LENGTH <= bufferFullLength) { + const code = this.buffer[offset]; + const length = this.buffer.readUInt32BE(offset + CODE_LENGTH); + const fullMessageLength = CODE_LENGTH + length; + if (fullMessageLength + offset <= bufferFullLength) { + const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer); + callback(message); + offset += fullMessageLength; + } else { + break; + } + } + if (offset === bufferFullLength) { + this.buffer = emptyBuffer; + this.bufferLength = 0; + this.bufferOffset = 0; + } else { + this.bufferLength = bufferFullLength - offset; + this.bufferOffset = offset; + } + } + mergeBuffer(buffer) { + if (this.bufferLength > 0) { + const newLength = this.bufferLength + buffer.byteLength; + const newFullLength = newLength + this.bufferOffset; + if (newFullLength > this.buffer.byteLength) { + let newBuffer; + if (newLength <= this.buffer.byteLength && this.bufferOffset >= this.bufferLength) { + newBuffer = this.buffer; + } else { + let newBufferLength = this.buffer.byteLength * 2; + while (newLength >= newBufferLength) { + newBufferLength *= 2; + } + newBuffer = Buffer.allocUnsafe(newBufferLength); + } + this.buffer.copy(newBuffer, 0, this.bufferOffset, this.bufferOffset + this.bufferLength); + this.buffer = newBuffer; + this.bufferOffset = 0; + } + buffer.copy(this.buffer, this.bufferOffset + this.bufferLength); + this.bufferLength = newLength; + } else { + this.buffer = buffer; + this.bufferOffset = 0; + this.bufferLength = buffer.byteLength; + } + } + handlePacket(offset, code, length, bytes) { + const { reader } = this; + reader.setBuffer(offset, bytes); + let message; + switch (code) { + case 50: + message = messages_1.bindComplete; + break; + case 49: + message = messages_1.parseComplete; + break; + case 51: + message = messages_1.closeComplete; + break; + case 110: + message = messages_1.noData; + break; + case 115: + message = messages_1.portalSuspended; + break; + case 99: + message = messages_1.copyDone; + break; + case 87: + message = messages_1.replicationStart; + break; + case 73: + message = messages_1.emptyQuery; + break; + case 68: + message = parseDataRowMessage(reader); + break; + case 67: + message = parseCommandCompleteMessage(reader); + break; + case 90: + message = parseReadyForQueryMessage(reader); + break; + case 65: + message = parseNotificationMessage(reader); + break; + case 82: + message = parseAuthenticationResponse(reader, length); + break; + case 83: + message = parseParameterStatusMessage(reader); + break; + case 75: + message = parseBackendKeyData(reader); + break; + case 69: + message = parseErrorMessage(reader, "error"); + break; + case 78: + message = parseErrorMessage(reader, "notice"); + break; + case 84: + message = parseRowDescriptionMessage(reader); + break; + case 116: + message = parseParameterDescriptionMessage(reader); + break; + case 71: + message = parseCopyInMessage(reader); + break; + case 72: + message = parseCopyOutMessage(reader); + break; + case 100: + message = parseCopyData(reader, length); + break; + default: + return new messages_1.DatabaseError("received invalid response: " + code.toString(16), length, "error"); + } + reader.setBuffer(0, emptyBuffer); + message.length = length; + return message; + } + }; + exports.Parser = Parser; + var parseReadyForQueryMessage = /* @__PURE__ */ __name((reader) => { + const status = reader.string(1); + return new messages_1.ReadyForQueryMessage(LATEINIT_LENGTH, status); + }, "parseReadyForQueryMessage"); + var parseCommandCompleteMessage = /* @__PURE__ */ __name((reader) => { + const text = reader.cstring(); + return new messages_1.CommandCompleteMessage(LATEINIT_LENGTH, text); + }, "parseCommandCompleteMessage"); + var parseCopyData = /* @__PURE__ */ __name((reader, length) => { + const chunk = reader.bytes(length - 4); + return new messages_1.CopyDataMessage(LATEINIT_LENGTH, chunk); + }, "parseCopyData"); + var parseCopyInMessage = /* @__PURE__ */ __name((reader) => parseCopyMessage(reader, "copyInResponse"), "parseCopyInMessage"); + var parseCopyOutMessage = /* @__PURE__ */ __name((reader) => parseCopyMessage(reader, "copyOutResponse"), "parseCopyOutMessage"); + var parseCopyMessage = /* @__PURE__ */ __name((reader, messageName) => { + const isBinary = reader.byte() !== 0; + const columnCount = reader.int16(); + const message = new messages_1.CopyResponse(LATEINIT_LENGTH, messageName, isBinary, columnCount); + for (let i = 0; i < columnCount; i++) { + message.columnTypes[i] = reader.int16(); + } + return message; + }, "parseCopyMessage"); + var parseNotificationMessage = /* @__PURE__ */ __name((reader) => { + const processId = reader.int32(); + const channel = reader.cstring(); + const payload = reader.cstring(); + return new messages_1.NotificationResponseMessage(LATEINIT_LENGTH, processId, channel, payload); + }, "parseNotificationMessage"); + var parseRowDescriptionMessage = /* @__PURE__ */ __name((reader) => { + const fieldCount = reader.int16(); + const message = new messages_1.RowDescriptionMessage(LATEINIT_LENGTH, fieldCount); + for (let i = 0; i < fieldCount; i++) { + message.fields[i] = parseField(reader); + } + return message; + }, "parseRowDescriptionMessage"); + var parseField = /* @__PURE__ */ __name((reader) => { + const name = reader.cstring(); + const tableID = reader.uint32(); + const columnID = reader.int16(); + const dataTypeID = reader.uint32(); + const dataTypeSize = reader.int16(); + const dataTypeModifier = reader.int32(); + const mode = reader.int16() === 0 ? "text" : "binary"; + return new messages_1.Field(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, mode); + }, "parseField"); + var parseParameterDescriptionMessage = /* @__PURE__ */ __name((reader) => { + const parameterCount = reader.int16(); + const message = new messages_1.ParameterDescriptionMessage(LATEINIT_LENGTH, parameterCount); + for (let i = 0; i < parameterCount; i++) { + message.dataTypeIDs[i] = reader.uint32(); + } + return message; + }, "parseParameterDescriptionMessage"); + var parseDataRowMessage = /* @__PURE__ */ __name((reader) => { + const fieldCount = reader.int16(); + const fields = new Array(fieldCount); + for (let i = 0; i < fieldCount; i++) { + const len = reader.int32(); + fields[i] = len === -1 ? null : reader.string(len); + } + return new messages_1.DataRowMessage(LATEINIT_LENGTH, fields); + }, "parseDataRowMessage"); + var parseParameterStatusMessage = /* @__PURE__ */ __name((reader) => { + const name = reader.cstring(); + const value = reader.cstring(); + return new messages_1.ParameterStatusMessage(LATEINIT_LENGTH, name, value); + }, "parseParameterStatusMessage"); + var parseBackendKeyData = /* @__PURE__ */ __name((reader) => { + const processID = reader.int32(); + const secretKey = reader.int32(); + return new messages_1.BackendKeyDataMessage(LATEINIT_LENGTH, processID, secretKey); + }, "parseBackendKeyData"); + var parseAuthenticationResponse = /* @__PURE__ */ __name((reader, length) => { + const code = reader.int32(); + const message = { + name: "authenticationOk", + length + }; + switch (code) { + case 0: + break; + case 3: + if (message.length === 8) { + message.name = "authenticationCleartextPassword"; + } + break; + case 5: + if (message.length === 12) { + message.name = "authenticationMD5Password"; + const salt = reader.bytes(4); + return new messages_1.AuthenticationMD5Password(LATEINIT_LENGTH, salt); + } + break; + case 10: + { + message.name = "authenticationSASL"; + message.mechanisms = []; + let mechanism; + do { + mechanism = reader.cstring(); + if (mechanism) { + message.mechanisms.push(mechanism); + } + } while (mechanism); + } + break; + case 11: + message.name = "authenticationSASLContinue"; + message.data = reader.string(length - 8); + break; + case 12: + message.name = "authenticationSASLFinal"; + message.data = reader.string(length - 8); + break; + default: + throw new Error("Unknown authenticationOk message type " + code); + } + return message; + }, "parseAuthenticationResponse"); + var parseErrorMessage = /* @__PURE__ */ __name((reader, name) => { + const fields = {}; + let fieldType = reader.string(1); + while (fieldType !== "\0") { + fields[fieldType] = reader.cstring(); + fieldType = reader.string(1); + } + const messageValue = fields.M; + const message = name === "notice" ? new messages_1.NoticeMessage(LATEINIT_LENGTH, messageValue) : new messages_1.DatabaseError(messageValue, LATEINIT_LENGTH, name); + message.severity = fields.S; + message.code = fields.C; + message.detail = fields.D; + message.hint = fields.H; + message.position = fields.P; + message.internalPosition = fields.p; + message.internalQuery = fields.q; + message.where = fields.W; + message.schema = fields.s; + message.table = fields.t; + message.column = fields.c; + message.dataType = fields.d; + message.constraint = fields.n; + message.file = fields.F; + message.line = fields.L; + message.routine = fields.R; + return message; + }, "parseErrorMessage"); + } +}); + +// ../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/index.js +var require_dist = __commonJS({ + "../../node_modules/.pnpm/pg-protocol@1.16.1/node_modules/pg-protocol/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DatabaseError = exports.serialize = void 0; + exports.parse = parse; + var messages_1 = require_messages(); + Object.defineProperty(exports, "DatabaseError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return messages_1.DatabaseError; + }, "get") }); + var serializer_1 = require_serializer(); + Object.defineProperty(exports, "serialize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return serializer_1.serialize; + }, "get") }); + var parser_1 = require_parser(); + function parse(stream, callback) { + const parser = new parser_1.Parser(); + stream.on("data", (buffer) => parser.parse(buffer, callback)); + return new Promise((resolve) => stream.on("end", () => resolve())); + } + __name(parse, "parse"); + } +}); + +// ../../node_modules/.pnpm/pg-cloudflare@1.4.1/node_modules/pg-cloudflare/dist/empty.js +var require_empty = __commonJS({ + "../../node_modules/.pnpm/pg-cloudflare@1.4.1/node_modules/pg-cloudflare/dist/empty.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = {}; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/stream.js +var require_stream = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/stream.js"(exports, module) { + var { getStream, getSecureStream } = getStreamFuncs(); + module.exports = { + /** + * Get a socket stream compatible with the current runtime environment. + * @returns {Duplex} + */ + getStream, + /** + * Get a TLS secured socket, compatible with the current environment, + * using the socket and other settings given in `options`. + * @returns {Duplex} + */ + getSecureStream + }; + function getNodejsStreamFuncs() { + function getStream2(ssl) { + const net = __require("net"); + return new net.Socket(); + } + __name(getStream2, "getStream"); + function getSecureStream2(options) { + const tls = __require("tls"); + return tls.connect(options); + } + __name(getSecureStream2, "getSecureStream"); + return { + getStream: getStream2, + getSecureStream: getSecureStream2 + }; + } + __name(getNodejsStreamFuncs, "getNodejsStreamFuncs"); + function getCloudflareStreamFuncs() { + function getStream2(ssl) { + const { CloudflareSocket } = require_empty(); + return new CloudflareSocket(ssl); + } + __name(getStream2, "getStream"); + function getSecureStream2(options) { + options.socket.startTls(options); + return options.socket; + } + __name(getSecureStream2, "getSecureStream"); + return { + getStream: getStream2, + getSecureStream: getSecureStream2 + }; + } + __name(getCloudflareStreamFuncs, "getCloudflareStreamFuncs"); + function isCloudflareRuntime() { + if (typeof navigator === "object" && navigator !== null && typeof navigator.userAgent === "string") { + return navigator.userAgent === "Cloudflare-Workers"; + } + if (typeof Response === "function") { + const resp = new Response(null, { cf: { thing: true } }); + if (typeof resp.cf === "object" && resp.cf !== null && resp.cf.thing) { + return true; + } + } + return false; + } + __name(isCloudflareRuntime, "isCloudflareRuntime"); + function getStreamFuncs() { + if (isCloudflareRuntime()) { + return getCloudflareStreamFuncs(); + } + return getNodejsStreamFuncs(); + } + __name(getStreamFuncs, "getStreamFuncs"); + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/connection.js +var require_connection = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/connection.js"(exports, module) { + "use strict"; + var EventEmitter = __require("events").EventEmitter; + var { parse, serialize } = require_dist(); + var stream = require_stream(); + var { getStream } = stream; + var flushBuffer = serialize.flush(); + var syncBuffer = serialize.sync(); + var endBuffer = serialize.end(); + var Connection2 = class extends EventEmitter { + static { + __name(this, "Connection"); + } + constructor(config) { + super(); + config = config || {}; + this.stream = config.stream || getStream(config.ssl); + if (typeof this.stream === "function") { + this.stream = this.stream(config); + } + this._keepAlive = config.keepAlive; + this._keepAliveInitialDelayMillis = config.keepAliveInitialDelayMillis; + this.parsedStatements = {}; + this.submittedNamedStatements = {}; + this.ssl = config.ssl || false; + this.sslNegotiation = config.sslNegotiation || "postgres"; + this._ending = false; + this._emitMessage = false; + const self = this; + this.on("newListener", function(eventName) { + if (eventName === "message") { + self._emitMessage = true; + } + }); + } + connect(port, host) { + const self = this; + this._connecting = true; + this.stream.setNoDelay(true); + this.stream.connect(port, host); + this.stream.once("connect", function() { + if (self._keepAlive) { + self.stream.setKeepAlive(true, self._keepAliveInitialDelayMillis); + } + self.emit("connect"); + }); + const reportStreamError = /* @__PURE__ */ __name(function(error) { + if (self._ending && (error.code === "ECONNRESET" || error.code === "EPIPE")) { + return; + } + self.emit("error", error); + }, "reportStreamError"); + this.stream.on("error", reportStreamError); + this.stream.on("close", function() { + self.emit("end"); + }); + if (!this.ssl) { + return this.attachListeners(this.stream); + } + if (this.sslNegotiation === "direct") { + return this.stream.once("connect", function() { + self.upgradeToSSL(host, reportStreamError); + }); + } + this.stream.once("data", function(buffer) { + const responseCode = buffer.toString("utf8"); + switch (responseCode) { + case "S": + break; + case "N": + self.stream.end(); + return self.emit("error", new Error("The server does not support SSL connections")); + default: + self.stream.end(); + return self.emit("error", new Error("There was an error establishing an SSL connection")); + } + self.upgradeToSSL(host, reportStreamError); + }); + } + upgradeToSSL(host, reportStreamError) { + const self = this; + const options = { + socket: self.stream, + // tls.connect checks the server identity against `servername`, falling + // back to `host` and then to 'localhost'. `servername` must stay unset + // for IP addresses (see below), so `host` is needed to keep certificate + // validation working when connecting to an IP address. + host + }; + if (self.ssl !== true) { + Object.assign(options, self.ssl); + if ("key" in self.ssl) { + options.key = self.ssl.key; + } + } + if (self.sslNegotiation === "direct") { + options.ALPNProtocols = ["postgresql"]; + } + const net = __require("net"); + if (net.isIP && net.isIP(host) === 0) { + options.servername = host; + } + try { + self.stream = stream.getSecureStream(options); + } catch (err) { + return self.emit("error", err); + } + self.attachListeners(self.stream); + self.stream.on("error", reportStreamError); + self.emit("sslconnect"); + } + attachListeners(stream2) { + parse(stream2, (msg) => { + const eventName = msg.name === "error" ? "errorMessage" : msg.name; + if (this._emitMessage) { + this.emit("message", msg); + } + this.emit(eventName, msg); + }); + } + requestSsl() { + this.stream.write(serialize.requestSsl()); + } + startup(config) { + this.stream.write(serialize.startup(config)); + } + cancel(processID, secretKey) { + this._send(serialize.cancel(processID, secretKey)); + } + password(password) { + this._send(serialize.password(password)); + } + sendSASLInitialResponseMessage(mechanism, initialResponse) { + this._send(serialize.sendSASLInitialResponseMessage(mechanism, initialResponse)); + } + sendSCRAMClientFinalMessage(additionalData) { + this._send(serialize.sendSCRAMClientFinalMessage(additionalData)); + } + _send(buffer) { + if (!this.stream.writable) { + return false; + } + return this.stream.write(buffer); + } + query(text) { + this._send(serialize.query(text)); + } + // send parse message + parse(query) { + this._send(serialize.parse(query)); + } + // send bind message + bind(config) { + this._send(serialize.bind(config)); + } + // send execute message + execute(config) { + this._send(serialize.execute(config)); + } + flush() { + if (this.stream.writable) { + this.stream.write(flushBuffer); + } + } + sync() { + this._send(syncBuffer); + } + ref() { + this.stream.ref(); + } + unref() { + this.stream.unref(); + } + end() { + this._ending = true; + if (!this._connecting || !this.stream.writable) { + this.stream.end(); + return; + } + return this.stream.write(endBuffer, () => { + this.stream.end(); + }); + } + close(msg) { + this._send(serialize.close(msg)); + } + describe(msg) { + this._send(serialize.describe(msg)); + } + sendCopyFromChunk(chunk) { + this._send(serialize.copyData(chunk)); + } + endCopyFrom() { + this._send(serialize.copyDone()); + } + sendCopyFail(msg) { + this._send(serialize.copyFail(msg)); + } + }; + module.exports = Connection2; + } +}); + +// ../../node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js +var require_split2 = __commonJS({ + "../../node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js"(exports, module) { + "use strict"; + var { Transform } = __require("stream"); + var { StringDecoder } = __require("string_decoder"); + var kLast = /* @__PURE__ */ Symbol("last"); + var kDecoder = /* @__PURE__ */ Symbol("decoder"); + function transform(chunk, enc, cb) { + let list; + if (this.overflow) { + const buf = this[kDecoder].write(chunk); + list = buf.split(this.matcher); + if (list.length === 1) return cb(); + list.shift(); + this.overflow = false; + } else { + this[kLast] += this[kDecoder].write(chunk); + list = this[kLast].split(this.matcher); + } + this[kLast] = list.pop(); + for (let i = 0; i < list.length; i++) { + try { + push(this, this.mapper(list[i])); + } catch (error) { + return cb(error); + } + } + this.overflow = this[kLast].length > this.maxLength; + if (this.overflow && !this.skipOverflow) { + cb(new Error("maximum buffer reached")); + return; + } + cb(); + } + __name(transform, "transform"); + function flush(cb) { + this[kLast] += this[kDecoder].end(); + if (this[kLast]) { + try { + push(this, this.mapper(this[kLast])); + } catch (error) { + return cb(error); + } + } + cb(); + } + __name(flush, "flush"); + function push(self, val) { + if (val !== void 0) { + self.push(val); + } + } + __name(push, "push"); + function noop(incoming) { + return incoming; + } + __name(noop, "noop"); + function split(matcher, mapper, options) { + matcher = matcher || /\r?\n/; + mapper = mapper || noop; + options = options || {}; + switch (arguments.length) { + case 1: + if (typeof matcher === "function") { + mapper = matcher; + matcher = /\r?\n/; + } else if (typeof matcher === "object" && !(matcher instanceof RegExp) && !matcher[Symbol.split]) { + options = matcher; + matcher = /\r?\n/; + } + break; + case 2: + if (typeof matcher === "function") { + options = mapper; + mapper = matcher; + matcher = /\r?\n/; + } else if (typeof mapper === "object") { + options = mapper; + mapper = noop; + } + } + options = Object.assign({}, options); + options.autoDestroy = true; + options.transform = transform; + options.flush = flush; + options.readableObjectMode = true; + const stream = new Transform(options); + stream[kLast] = ""; + stream[kDecoder] = new StringDecoder("utf8"); + stream.matcher = matcher; + stream.mapper = mapper; + stream.maxLength = options.maxLength; + stream.skipOverflow = options.skipOverflow || false; + stream.overflow = false; + stream._destroy = function(err, cb) { + this._writableState.errorEmitted = false; + cb(err); + }; + return stream; + } + __name(split, "split"); + module.exports = split; + } +}); + +// ../../node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js +var require_helper = __commonJS({ + "../../node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js"(exports, module) { + "use strict"; + var path = __require("path"); + var Stream = __require("stream").Stream; + var split = require_split2(); + var util = __require("util"); + var defaultPort = 5432; + var isWin = process.platform === "win32"; + var warnStream = process.stderr; + var S_IRWXG = 56; + var S_IRWXO = 7; + var S_IFMT = 61440; + var S_IFREG = 32768; + function isRegFile(mode) { + return (mode & S_IFMT) == S_IFREG; + } + __name(isRegFile, "isRegFile"); + var fieldNames = ["host", "port", "database", "user", "password"]; + var nrOfFields = fieldNames.length; + var passKey = fieldNames[nrOfFields - 1]; + function warn() { + var isWritable = warnStream instanceof Stream && true === warnStream.writable; + if (isWritable) { + var args = Array.prototype.slice.call(arguments).concat("\n"); + warnStream.write(util.format.apply(util, args)); + } + } + __name(warn, "warn"); + Object.defineProperty(module.exports, "isWin", { + get: /* @__PURE__ */ __name(function() { + return isWin; + }, "get"), + set: /* @__PURE__ */ __name(function(val) { + isWin = val; + }, "set") + }); + module.exports.warnTo = function(stream) { + var old = warnStream; + warnStream = stream; + return old; + }; + module.exports.getFileName = function(rawEnv) { + var env = rawEnv || process.env; + var file = env.PGPASSFILE || (isWin ? path.join(env.APPDATA || "./", "postgresql", "pgpass.conf") : path.join(env.HOME || "./", ".pgpass")); + return file; + }; + module.exports.usePgPass = function(stats, fname) { + if (Object.prototype.hasOwnProperty.call(process.env, "PGPASSWORD")) { + return false; + } + if (isWin) { + return true; + } + fname = fname || ""; + if (!isRegFile(stats.mode)) { + warn('WARNING: password file "%s" is not a plain file', fname); + return false; + } + if (stats.mode & (S_IRWXG | S_IRWXO)) { + warn('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less', fname); + return false; + } + return true; + }; + var matcher = module.exports.match = function(connInfo, entry) { + return fieldNames.slice(0, -1).reduce(function(prev, field, idx) { + if (idx == 1) { + if (Number(connInfo[field] || defaultPort) === Number(entry[field])) { + return prev && true; + } + } + return prev && (entry[field] === "*" || entry[field] === connInfo[field]); + }, true); + }; + module.exports.getPassword = function(connInfo, stream, cb) { + var pass; + var lineStream = stream.pipe(split()); + function onLine(line) { + var entry = parseLine(line); + if (entry && isValidEntry(entry) && matcher(connInfo, entry)) { + pass = entry[passKey]; + lineStream.end(); + } + } + __name(onLine, "onLine"); + var onEnd = /* @__PURE__ */ __name(function() { + stream.destroy(); + cb(pass); + }, "onEnd"); + var onErr = /* @__PURE__ */ __name(function(err) { + stream.destroy(); + warn("WARNING: error on reading file: %s", err); + cb(void 0); + }, "onErr"); + stream.on("error", onErr); + lineStream.on("data", onLine).on("end", onEnd).on("error", onErr); + }; + var parseLine = module.exports.parseLine = function(line) { + if (line.length < 11 || line.match(/^\s+#/)) { + return null; + } + var curChar = ""; + var prevChar = ""; + var fieldIdx = 0; + var startIdx = 0; + var endIdx = 0; + var obj = {}; + var isLastField = false; + var addToObj = /* @__PURE__ */ __name(function(idx, i0, i1) { + var field = line.substring(i0, i1); + if (!Object.hasOwnProperty.call(process.env, "PGPASS_NO_DEESCAPE")) { + field = field.replace(/\\([:\\])/g, "$1"); + } + obj[fieldNames[idx]] = field; + }, "addToObj"); + for (var i = 0; i < line.length - 1; i += 1) { + curChar = line.charAt(i + 1); + prevChar = line.charAt(i); + isLastField = fieldIdx == nrOfFields - 1; + if (isLastField) { + addToObj(fieldIdx, startIdx); + break; + } + if (i >= 0 && curChar == ":" && prevChar !== "\\") { + addToObj(fieldIdx, startIdx, i + 1); + startIdx = i + 2; + fieldIdx += 1; + } + } + obj = Object.keys(obj).length === nrOfFields ? obj : null; + return obj; + }; + var isValidEntry = module.exports.isValidEntry = function(entry) { + var rules = { + // host + 0: function(x) { + return x.length > 0; + }, + // port + 1: function(x) { + if (x === "*") { + return true; + } + x = Number(x); + return isFinite(x) && x > 0 && x < 9007199254740992 && Math.floor(x) === x; + }, + // database + 2: function(x) { + return x.length > 0; + }, + // username + 3: function(x) { + return x.length > 0; + }, + // password + 4: function(x) { + return x.length > 0; + } + }; + for (var idx = 0; idx < fieldNames.length; idx += 1) { + var rule = rules[idx]; + var value = entry[fieldNames[idx]] || ""; + var res = rule(value); + if (!res) { + return false; + } + } + return true; + }; + } +}); + +// ../../node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js +var require_lib = __commonJS({ + "../../node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js"(exports, module) { + "use strict"; + var path = __require("path"); + var fs = __require("fs"); + var helper = require_helper(); + module.exports = function(connInfo, cb) { + var file = helper.getFileName(); + fs.stat(file, function(err, stat) { + if (err || !helper.usePgPass(stat, file)) { + return cb(void 0); + } + var st = fs.createReadStream(file); + helper.getPassword(connInfo, st, cb); + }); + }; + module.exports.warnTo = helper.warnTo; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/client.js +var require_client = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/client.js"(exports, module) { + var EventEmitter = __require("events").EventEmitter; + var utils = require_utils(); + var nodeUtils = __require("util"); + var sasl = require_sasl(); + var TypeOverrides2 = require_type_overrides(); + var ConnectionParameters = require_connection_parameters(); + var Query2 = require_query(); + var defaults2 = require_defaults(); + var Connection2 = require_connection(); + var crypto = require_utils2(); + var activeQueryDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "Client.activeQuery is deprecated and will be removed in pg@9.0" + ); + var queryQueueDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "Client.queryQueue is deprecated and will be removed in pg@9.0." + ); + var pgPassDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "pgpass support is deprecated and will be removed in pg@9.0. You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code." + ); + var byoPromiseDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0." + ); + var queryQueueLengthDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead." + ); + function coerceNumberOrDefault(value, defaultValue) { + if (typeof value === "number") { + return Number.isFinite(value) ? value : defaultValue; + } + if (typeof value === "string" && value.trim() !== "") { + const n = Number(value); + return Number.isFinite(n) ? n : defaultValue; + } + return defaultValue; + } + __name(coerceNumberOrDefault, "coerceNumberOrDefault"); + var Client2 = class extends EventEmitter { + static { + __name(this, "Client"); + } + constructor(config) { + super(); + this.connectionParameters = new ConnectionParameters(config); + this.user = this.connectionParameters.user; + this.database = this.connectionParameters.database; + this.port = this.connectionParameters.port; + this.host = this.connectionParameters.host; + Object.defineProperty(this, "password", { + configurable: true, + enumerable: false, + writable: true, + value: this.connectionParameters.password + }); + this.replication = this.connectionParameters.replication; + const c = config || {}; + if (c.Promise) { + byoPromiseDeprecationNotice(); + } + this._Promise = c.Promise || global.Promise; + this._types = new TypeOverrides2(c.types); + this._ending = false; + this._ended = false; + this._connecting = false; + this._connected = false; + this._connectionError = false; + this._queryable = true; + this._activeQuery = null; + this._txStatus = null; + this.enableChannelBinding = Boolean(c.enableChannelBinding); + this.scramMaxIterations = coerceNumberOrDefault(c.scramMaxIterations, sasl.DEFAULT_MAX_SCRAM_ITERATIONS); + this.connection = c.connection || new Connection2({ + stream: c.stream, + ssl: this.connectionParameters.ssl, + sslNegotiation: this.connectionParameters.sslnegotiation, + keepAlive: c.keepAlive || false, + keepAliveInitialDelayMillis: c.keepAliveInitialDelayMillis || 0, + encoding: this.connectionParameters.client_encoding || "utf8" + }); + this._queryQueue = []; + this._sentQueryQueue = []; + this.pipeline = Boolean(c.pipeline); + this.binary = c.binary || defaults2.binary; + this.processID = null; + this.secretKey = null; + this.ssl = this.connectionParameters.ssl || false; + this.sslNegotiation = this.connectionParameters.sslnegotiation || "postgres"; + if (this.ssl && this.ssl.key) { + Object.defineProperty(this.ssl, "key", { + enumerable: false + }); + } + this._connectionTimeoutMillis = c.connectionTimeoutMillis || 0; + } + get activeQuery() { + activeQueryDeprecationNotice(); + return this._activeQuery; + } + set activeQuery(val) { + activeQueryDeprecationNotice(); + this._activeQuery = val; + } + _getActiveQuery() { + return this._activeQuery; + } + _errorAllQueries(err) { + const enqueueError = /* @__PURE__ */ __name((query) => { + process.nextTick(() => { + query.handleError(err, this.connection); + }); + }, "enqueueError"); + const activeQuery = this._getActiveQuery(); + if (activeQuery) { + enqueueError(activeQuery); + this._activeQuery = null; + } + this._sentQueryQueue.forEach(enqueueError); + this._sentQueryQueue.length = 0; + this._queryQueue.forEach(enqueueError); + this._queryQueue.length = 0; + } + _connect(callback) { + const self = this; + const con = this.connection; + this._connectionCallback = callback; + if (this._connecting || this._connected) { + const err = new Error("Client has already been connected. You cannot reuse a client."); + process.nextTick(() => { + callback(err); + }); + return; + } + this._connecting = true; + if (this._connectionTimeoutMillis > 0) { + this.connectionTimeoutHandle = setTimeout(() => { + con._ending = true; + con.stream.destroy(new Error("timeout expired")); + }, this._connectionTimeoutMillis); + if (this.connectionTimeoutHandle.unref) { + this.connectionTimeoutHandle.unref(); + } + } + if (this.host && this.host.indexOf("/") === 0) { + con.connect(this.host + "/.s.PGSQL." + this.port); + } else { + con.connect(this.port, this.host); + } + con.on("connect", function() { + if (self.ssl) { + if (self.sslNegotiation !== "direct") { + con.requestSsl(); + } + } else { + con.startup(self.getStartupConf()); + } + }); + con.on("sslconnect", function() { + con.startup(self.getStartupConf()); + }); + this._attachListeners(con); + con.once("end", () => { + const error = this._ending ? new Error("Connection terminated") : new Error("Connection terminated unexpectedly"); + clearTimeout(this.connectionTimeoutHandle); + this._errorAllQueries(error); + this._ended = true; + if (!this._ending) { + if (this._connecting && !this._connectionError) { + if (this._connectionCallback) { + this._connectionCallback(error); + } else { + this._handleErrorEvent(error); + } + } else if (!this._connectionError) { + this._handleErrorEvent(error); + } + } + process.nextTick(() => { + this.emit("end"); + }); + }); + } + connect(callback) { + if (callback) { + this._connect(callback); + return; + } + return new this._Promise((resolve, reject) => { + this._connect((error) => { + if (error) { + reject(error); + } else { + resolve(this); + } + }); + }); + } + _attachListeners(con) { + con.on("authenticationCleartextPassword", this._handleAuthCleartextPassword.bind(this)); + con.on("authenticationMD5Password", this._handleAuthMD5Password.bind(this)); + con.on("authenticationSASL", this._handleAuthSASL.bind(this)); + con.on("authenticationSASLContinue", this._handleAuthSASLContinue.bind(this)); + con.on("authenticationSASLFinal", this._handleAuthSASLFinal.bind(this)); + con.on("backendKeyData", this._handleBackendKeyData.bind(this)); + con.on("error", this._handleErrorEvent.bind(this)); + con.on("errorMessage", this._handleErrorMessage.bind(this)); + con.on("readyForQuery", this._handleReadyForQuery.bind(this)); + con.on("notice", this._handleNotice.bind(this)); + con.on("rowDescription", this._handleRowDescription.bind(this)); + con.on("dataRow", this._handleDataRow.bind(this)); + con.on("portalSuspended", this._handlePortalSuspended.bind(this)); + con.on("emptyQuery", this._handleEmptyQuery.bind(this)); + con.on("commandComplete", this._handleCommandComplete.bind(this)); + con.on("parseComplete", this._handleParseComplete.bind(this)); + con.on("copyInResponse", this._handleCopyInResponse.bind(this)); + con.on("copyData", this._handleCopyData.bind(this)); + con.on("notification", this._handleNotification.bind(this)); + } + _getPassword(cb) { + const con = this.connection; + if (typeof this.password === "function") { + this._Promise.resolve().then(() => this.password(this.connectionParameters)).then((pass) => { + if (pass !== void 0) { + if (typeof pass !== "string") { + con.emit("error", new TypeError("Password must be a string")); + return; + } + this.connectionParameters.password = this.password = pass; + } else { + this.connectionParameters.password = this.password = null; + } + cb(); + }).catch((err) => { + con.emit("error", err); + }); + } else if (this.password !== null) { + cb(); + } else { + try { + const pgPass = require_lib(); + pgPass(this.connectionParameters, (pass) => { + if (void 0 !== pass) { + pgPassDeprecationNotice(); + this.connectionParameters.password = this.password = pass; + } + cb(); + }); + } catch (e) { + this.emit("error", e); + } + } + } + _handleAuthCleartextPassword(msg) { + this._getPassword(() => { + this.connection.password(this.password); + }); + } + _handleAuthMD5Password(msg) { + this._getPassword(async () => { + try { + const hashedPassword = await crypto.postgresMd5PasswordHash(this.user, this.password, msg.salt); + this.connection.password(hashedPassword); + } catch (e) { + this.emit("error", e); + } + }); + } + _handleAuthSASL(msg) { + this._getPassword(() => { + try { + this.saslSession = sasl.startSession( + msg.mechanisms, + this.enableChannelBinding && this.connection.stream, + this.scramMaxIterations + ); + this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism, this.saslSession.response); + } catch (err) { + this.connection.emit("error", err); + } + }); + } + async _handleAuthSASLContinue(msg) { + try { + await sasl.continueSession( + this.saslSession, + this.password, + msg.data, + this.enableChannelBinding && this.connection.stream + ); + this.connection.sendSCRAMClientFinalMessage(this.saslSession.response); + } catch (err) { + this.connection.emit("error", err); + } + } + _handleAuthSASLFinal(msg) { + try { + sasl.finalizeSession(this.saslSession, msg.data); + this.saslSession = null; + } catch (err) { + this.connection.emit("error", err); + } + } + _handleBackendKeyData(msg) { + this.processID = msg.processID; + this.secretKey = msg.secretKey; + } + _handleReadyForQuery(msg) { + if (this._connecting) { + this._connecting = false; + this._connected = true; + clearTimeout(this.connectionTimeoutHandle); + if (this._connectionCallback) { + this._connectionCallback(null, this); + this._connectionCallback = null; + } + this.emit("connect"); + } + const activeQuery = this._getActiveQuery(); + this._activeQuery = null; + this._txStatus = msg?.status ?? null; + this.readyForQuery = true; + if (activeQuery) { + activeQuery.handleReadyForQuery(this.connection); + } + this._pulseQueryQueue(); + } + // if we receive an error event or error message + // during the connection process we handle it here + _handleErrorWhileConnecting(err) { + if (this._connectionError) { + return; + } + this._connectionError = true; + clearTimeout(this.connectionTimeoutHandle); + if (this._connectionCallback) { + return this._connectionCallback(err); + } + this.emit("error", err); + } + // if we're connected and we receive an error event from the connection + // this means the socket is dead - do a hard abort of all queries and emit + // the socket error on the client as well + _handleErrorEvent(err) { + if (this._connecting) { + return this._handleErrorWhileConnecting(err); + } + this._queryable = false; + this._errorAllQueries(err); + this.emit("error", err); + } + // handle error messages from the postgres backend + _handleErrorMessage(msg) { + if (this._connecting) { + return this._handleErrorWhileConnecting(msg); + } + const activeQuery = this._getActiveQuery(); + if (!activeQuery) { + this._handleErrorEvent(msg); + return; + } + this._activeQuery = null; + if (activeQuery.name) { + delete this.connection.submittedNamedStatements[activeQuery.name]; + } + activeQuery.handleError(msg, this.connection); + } + _handleRowDescription(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected rowDescription message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handleRowDescription(msg); + } + _handleDataRow(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected dataRow message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handleDataRow(msg); + } + _handlePortalSuspended(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected portalSuspended message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handlePortalSuspended(this.connection); + } + _handleEmptyQuery(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected emptyQuery message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handleEmptyQuery(this.connection); + } + _handleCommandComplete(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected commandComplete message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handleCommandComplete(msg, this.connection); + } + _handleParseComplete() { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected parseComplete message from backend."); + this._handleErrorEvent(error); + return; + } + if (activeQuery.name) { + this.connection.parsedStatements[activeQuery.name] = activeQuery.text; + delete this.connection.submittedNamedStatements[activeQuery.name]; + } + } + _handleCopyInResponse(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected copyInResponse message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handleCopyInResponse(this.connection); + } + _handleCopyData(msg) { + const activeQuery = this._getActiveQuery(); + if (activeQuery == null) { + const error = new Error("Received unexpected copyData message from backend."); + this._handleErrorEvent(error); + return; + } + activeQuery.handleCopyData(msg, this.connection); + } + _handleNotification(msg) { + this.emit("notification", msg); + } + _handleNotice(msg) { + this.emit("notice", msg); + } + getStartupConf() { + const params = this.connectionParameters; + const data = { + user: params.user, + database: params.database + }; + const appName = params.application_name || params.fallback_application_name; + if (appName) { + data.application_name = appName; + } + if (params.replication) { + data.replication = "" + params.replication; + } + if (params.statement_timeout) { + data.statement_timeout = String(parseInt(params.statement_timeout, 10)); + } + if (params.lock_timeout) { + data.lock_timeout = String(parseInt(params.lock_timeout, 10)); + } + if (params.idle_in_transaction_session_timeout) { + data.idle_in_transaction_session_timeout = String(parseInt(params.idle_in_transaction_session_timeout, 10)); + } + if (params.options) { + data.options = params.options; + } + return data; + } + cancel(client, query) { + if (client.activeQuery === query) { + const con = this.connection; + if (this.host && this.host.indexOf("/") === 0) { + con.connect(this.host + "/.s.PGSQL." + this.port); + } else { + con.connect(this.port, this.host); + } + con.on("connect", function() { + con.cancel(client.processID, client.secretKey); + }); + } else if (client._queryQueue.indexOf(query) !== -1) { + client._queryQueue.splice(client._queryQueue.indexOf(query), 1); + } else if (client._sentQueryQueue.indexOf(query) !== -1) { + query.callback = () => { + }; + } + } + setTypeParser(oid, format, parseFn) { + return this._types.setTypeParser(oid, format, parseFn); + } + getTypeParser(oid, format) { + return this._types.getTypeParser(oid, format); + } + // escapeIdentifier and escapeLiteral moved to utility functions & exported + // on PG + // re-exported here for backwards compatibility + escapeIdentifier(str) { + return utils.escapeIdentifier(str); + } + escapeLiteral(str) { + return utils.escapeLiteral(str); + } + _pulseQueryQueue() { + if (this.pipeline) { + this._pulsePipelinedQueryQueue(); + return; + } + if (this.readyForQuery === true) { + this._activeQuery = this._queryQueue.shift(); + const activeQuery = this._getActiveQuery(); + if (activeQuery) { + this.readyForQuery = false; + this.hasExecuted = true; + const queryError = activeQuery.submit(this.connection); + if (queryError) { + process.nextTick(() => { + activeQuery.handleError(queryError, this.connection); + this.readyForQuery = true; + this._pulseQueryQueue(); + }); + } + } else if (this.hasExecuted) { + this._activeQuery = null; + this.emit("drain"); + } + } + } + _pulsePipelinedQueryQueue() { + if (!this._connected || !this._queryable) { + return; + } + while (this._queryQueue.length > 0) { + const query = this._queryQueue.shift(); + this.hasExecuted = true; + const queryError = query.submit(this.connection); + if (queryError) { + process.nextTick(() => { + query.handleError(queryError, this.connection); + }); + continue; + } + this._sentQueryQueue.push(query); + } + if (this.readyForQuery && !this._activeQuery && this._sentQueryQueue.length > 0) { + this._activeQuery = this._sentQueryQueue.shift(); + this.readyForQuery = false; + } + if (!this._activeQuery && this._sentQueryQueue.length === 0 && this._queryQueue.length === 0 && this.hasExecuted) { + this.emit("drain"); + } + } + query(config, values, callback) { + let query; + let result; + if (config == null) { + throw new TypeError("Client was passed a null or undefined query"); + } + if (typeof config.submit === "function") { + result = query = config; + if (!query.callback) { + if (typeof values === "function") { + query.callback = values; + } else if (callback) { + query.callback = callback; + } + } + } else { + query = new Query2(config, values, callback); + if (!query.callback) { + result = new this._Promise((resolve, reject) => { + query.callback = (err, res) => err ? reject(err) : resolve(res); + }).catch((err) => { + Error.captureStackTrace(err); + throw err; + }); + } else if (typeof query.callback !== "function") { + throw new TypeError("callback is not a function"); + } + } + const readTimeout = config.query_timeout || this.connectionParameters.query_timeout; + if (readTimeout) { + const queryCallback = query.callback || (() => { + }); + const readTimeoutTimer = setTimeout(() => { + const error = new Error("Query read timeout"); + process.nextTick(() => { + query.handleError(error, this.connection); + }); + queryCallback(error); + query.callback = () => { + }; + const index = this._queryQueue.indexOf(query); + if (index > -1) { + this._queryQueue.splice(index, 1); + } else if (this.pipeline) { + this.connection.stream.destroy(); + return; + } + this._pulseQueryQueue(); + }, readTimeout); + query.callback = (err, res) => { + clearTimeout(readTimeoutTimer); + queryCallback(err, res); + }; + } + if (this.binary && !query.binary) { + query.binary = true; + } + if (query._result && !query._result._types) { + query._result._types = this._types; + } + if (this.pipeline) { + const portalQuery = typeof config.submit === "function" && !(query instanceof Query2) ? "Custom query classes such as pg-cursor and pg-query-stream are" : query.rows ? "The `rows` option is" : null; + if (portalQuery) { + process.nextTick(() => { + query.handleError(new Error(`${portalQuery} not supported in pipeline mode`), this.connection); + }); + return result; + } + } + if (!this._queryable) { + process.nextTick(() => { + query.handleError(new Error("Client has encountered a connection error and is not queryable"), this.connection); + }); + return result; + } + if (this._ending) { + process.nextTick(() => { + query.handleError(new Error("Client was closed and is not queryable"), this.connection); + }); + return result; + } + if (this._queryQueue.length > 0 && !this.pipeline) { + queryQueueLengthDeprecationNotice(); + } + this._queryQueue.push(query); + this._pulseQueryQueue(); + return result; + } + ref() { + this.connection.ref(); + } + unref() { + this.connection.unref(); + } + getTransactionStatus() { + return this._txStatus; + } + end(cb) { + this._ending = true; + if (!this.connection._connecting || this._ended) { + if (cb) { + cb(); + return; + } else { + return this._Promise.resolve(); + } + } + if (!this._queryable) { + this.connection.stream.destroy(); + } else if (this.pipeline && (this._getActiveQuery() || this._sentQueryQueue.length > 0 || this._queryQueue.length > 0)) { + this.once("drain", () => this.connection.end()); + } else if (this._getActiveQuery()) { + this.connection.stream.destroy(); + } else { + this.connection.end(); + } + if (cb) { + this.connection.once("end", cb); + } else { + return new this._Promise((resolve) => { + this.connection.once("end", resolve); + }); + } + } + get queryQueue() { + queryQueueDeprecationNotice(); + return this._queryQueue; + } + }; + Client2.Query = Query2; + module.exports = Client2; + } +}); + +// ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.23.1/node_modules/pg-pool/index.js +var require_pg_pool = __commonJS({ + "../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.23.1/node_modules/pg-pool/index.js"(exports, module) { + "use strict"; + var EventEmitter = __require("events").EventEmitter; + var NOOP = /* @__PURE__ */ __name(function() { + }, "NOOP"); + var removeWhere = /* @__PURE__ */ __name((list, predicate) => { + const i = list.findIndex(predicate); + return i === -1 ? void 0 : list.splice(i, 1)[0]; + }, "removeWhere"); + var IdleItem = class { + static { + __name(this, "IdleItem"); + } + constructor(client, idleListener, timeoutId) { + this.client = client; + this.idleListener = idleListener; + this.timeoutId = timeoutId; + } + }; + var PendingItem = class { + static { + __name(this, "PendingItem"); + } + constructor(callback) { + this.callback = callback; + } + }; + function throwOnDoubleRelease() { + throw new Error("Release called on client which has already been released to the pool."); + } + __name(throwOnDoubleRelease, "throwOnDoubleRelease"); + function promisify(Promise2, callback) { + if (callback) { + return { callback, result: void 0 }; + } + let rej; + let res; + const cb = /* @__PURE__ */ __name(function(err, client) { + err ? rej(err) : res(client); + }, "cb"); + const result = new Promise2(function(resolve, reject) { + res = resolve; + rej = reject; + }).catch((err) => { + Error.captureStackTrace(err); + throw err; + }); + return { callback: cb, result }; + } + __name(promisify, "promisify"); + function makeIdleListener(pool, client) { + return /* @__PURE__ */ __name(function idleListener(err) { + err.client = client; + client.removeListener("error", idleListener); + client.on("error", () => { + pool.log("additional client error after disconnection due to error", err); + }); + pool._remove(client); + pool.emit("error", err, client); + }, "idleListener"); + } + __name(makeIdleListener, "makeIdleListener"); + var Pool2 = class extends EventEmitter { + static { + __name(this, "Pool"); + } + constructor(options, Client2) { + super(); + this.options = Object.assign({}, options); + if (options != null && "password" in options) { + Object.defineProperty(this.options, "password", { + configurable: true, + enumerable: false, + writable: true, + value: options.password + }); + } + if (options != null && options.ssl && options.ssl.key) { + Object.defineProperty(this.options.ssl, "key", { + enumerable: false + }); + } + this.options.max = this.options.max || this.options.poolSize || 10; + this.options.min = this.options.min || 0; + this.options.maxUses = this.options.maxUses || Infinity; + this.options.allowExitOnIdle = this.options.allowExitOnIdle || false; + this.options.maxLifetimeSeconds = this.options.maxLifetimeSeconds || 0; + this.log = this.options.log || function() { + }; + this.Client = this.options.Client || Client2 || require_lib2().Client; + this.Promise = this.options.Promise || global.Promise; + if (typeof this.options.idleTimeoutMillis === "undefined") { + this.options.idleTimeoutMillis = 1e4; + } + this._clients = []; + this._idle = []; + this._expired = /* @__PURE__ */ new WeakSet(); + this._pendingQueue = []; + this._endCallback = void 0; + this.ending = false; + this.ended = false; + } + _promiseTry(f) { + const Promise2 = this.Promise; + if (typeof Promise2.try === "function") { + return Promise2.try(f); + } + return new Promise2((resolve) => resolve(f())); + } + _isFull() { + return this._clients.length >= this.options.max; + } + _isAboveMin() { + return this._clients.length > this.options.min; + } + _pulseQueue() { + this.log("pulse queue"); + if (this.ended) { + this.log("pulse queue ended"); + return; + } + if (this.ending) { + this.log("pulse queue on ending"); + if (this._idle.length) { + this._idle.slice().map((item) => { + this._remove(item.client); + }); + } + if (!this._clients.length) { + this.ended = true; + this._endCallback(); + } + return; + } + if (!this._pendingQueue.length) { + this.log("no queued requests"); + return; + } + if (!this._idle.length && this._isFull()) { + return; + } + const pendingItem = this._pendingQueue.shift(); + if (this._idle.length) { + const idleItem = this._idle.pop(); + clearTimeout(idleItem.timeoutId); + const client = idleItem.client; + client.ref && client.ref(); + const idleListener = idleItem.idleListener; + return this._acquireClient(client, pendingItem, idleListener, false); + } + if (!this._isFull()) { + return this.newClient(pendingItem); + } + throw new Error("unexpected condition"); + } + _remove(client, callback) { + const removed = removeWhere(this._idle, (item) => item.client === client); + if (removed !== void 0) { + clearTimeout(removed.timeoutId); + } + this._clients = this._clients.filter((c) => c !== client); + const context = this; + client.end(() => { + context.emit("remove", client); + if (typeof callback === "function") { + callback(); + } + }); + } + connect(cb) { + if (this.ending) { + const err = new Error("Cannot use a pool after calling end on the pool"); + return cb ? cb(err) : this.Promise.reject(err); + } + const response = promisify(this.Promise, cb); + const result = response.result; + if (this._isFull() || this._idle.length) { + if (this._idle.length) { + process.nextTick(() => this._pulseQueue()); + } + if (!this.options.connectionTimeoutMillis) { + this._pendingQueue.push(new PendingItem(response.callback)); + return result; + } + const queueCallback = /* @__PURE__ */ __name((err, res, done) => { + clearTimeout(tid); + response.callback(err, res, done); + }, "queueCallback"); + const pendingItem = new PendingItem(queueCallback); + const tid = setTimeout(() => { + removeWhere(this._pendingQueue, (i) => i.callback === queueCallback); + pendingItem.timedOut = true; + response.callback(new Error("timeout exceeded when trying to connect")); + }, this.options.connectionTimeoutMillis); + if (tid.unref) { + tid.unref(); + } + this._pendingQueue.push(pendingItem); + return result; + } + this.newClient(new PendingItem(response.callback)); + return result; + } + newClient(pendingItem) { + const client = new this.Client(this.options); + this._clients.push(client); + const idleListener = makeIdleListener(this, client); + this.log("checking client timeout"); + let tid; + let timeoutHit = false; + if (this.options.connectionTimeoutMillis) { + tid = setTimeout(() => { + if (client.connection) { + this.log("ending client due to timeout"); + timeoutHit = true; + client.connection.stream.destroy(); + } else if (!client.isConnected()) { + this.log("ending client due to timeout"); + timeoutHit = true; + client.end(); + } + }, this.options.connectionTimeoutMillis); + } + this.log("connecting new client"); + client.connect((err) => { + if (tid) { + clearTimeout(tid); + } + client.on("error", idleListener); + if (err) { + this.log("client failed to connect", err); + this._clients = this._clients.filter((c) => c !== client); + if (timeoutHit) { + err = new Error("Connection terminated due to connection timeout", { cause: err }); + } + this._pulseQueue(); + if (!pendingItem.timedOut) { + pendingItem.callback(err, void 0, NOOP); + } + } else { + this.log("new client connected"); + if (this.options.onConnect) { + this._promiseTry(() => this.options.onConnect(client)).then( + () => { + this._afterConnect(client, pendingItem, idleListener); + }, + (hookErr) => { + this._clients = this._clients.filter((c) => c !== client); + client.end(() => { + this._pulseQueue(); + if (!pendingItem.timedOut) { + pendingItem.callback(hookErr, void 0, NOOP); + } + }); + } + ); + return; + } + return this._afterConnect(client, pendingItem, idleListener); + } + }); + } + _afterConnect(client, pendingItem, idleListener) { + if (this.options.maxLifetimeSeconds !== 0) { + const maxLifetimeTimeout = setTimeout(() => { + this.log("ending client due to expired lifetime"); + this._expired.add(client); + const idleIndex = this._idle.findIndex((idleItem) => idleItem.client === client); + if (idleIndex !== -1) { + this._acquireClient( + client, + new PendingItem((err, client2, clientRelease) => clientRelease()), + idleListener, + false + ); + } + }, this.options.maxLifetimeSeconds * 1e3); + maxLifetimeTimeout.unref(); + client.once("end", () => clearTimeout(maxLifetimeTimeout)); + } + return this._acquireClient(client, pendingItem, idleListener, true); + } + // acquire a client for a pending work item + _acquireClient(client, pendingItem, idleListener, isNew) { + if (isNew) { + this.emit("connect", client); + } + this.emit("acquire", client); + client.release = this._releaseOnce(client, idleListener); + client.removeListener("error", idleListener); + if (!pendingItem.timedOut) { + if (isNew && this.options.verify) { + this.options.verify(client, (err) => { + if (err) { + client.release(err); + return pendingItem.callback(err, void 0, NOOP); + } + pendingItem.callback(void 0, client, client.release); + }); + } else { + pendingItem.callback(void 0, client, client.release); + } + } else { + if (isNew && this.options.verify) { + this.options.verify(client, client.release); + } else { + client.release(); + } + } + } + // returns a function that wraps _release and throws if called more than once + _releaseOnce(client, idleListener) { + let released = false; + return (err) => { + if (released) { + throwOnDoubleRelease(); + } + released = true; + this._release(client, idleListener, err); + }; + } + // release a client back to the poll, include an error + // to remove it from the pool + _release(client, idleListener, err) { + client.on("error", idleListener); + client._poolUseCount = (client._poolUseCount || 0) + 1; + this.emit("release", err, client); + if (err || this.ending || !client._queryable || client._ending || client._poolUseCount >= this.options.maxUses) { + if (client._poolUseCount >= this.options.maxUses) { + this.log("remove expended client"); + } + return this._remove(client, this._pulseQueue.bind(this)); + } + const isExpired = this._expired.has(client); + if (isExpired) { + this.log("remove expired client"); + this._expired.delete(client); + return this._remove(client, this._pulseQueue.bind(this)); + } + let tid; + if (this.options.idleTimeoutMillis && this._isAboveMin()) { + tid = setTimeout(() => { + if (this._isAboveMin()) { + this.log("remove idle client"); + this._remove(client, this._pulseQueue.bind(this)); + } + }, this.options.idleTimeoutMillis); + if (this.options.allowExitOnIdle) { + tid.unref(); + } + } + if (this.options.allowExitOnIdle) { + client.unref(); + } + this._idle.push(new IdleItem(client, idleListener, tid)); + this._pulseQueue(); + } + query(text, values, cb) { + if (typeof text === "function") { + const response2 = promisify(this.Promise, text); + setImmediate(function() { + return response2.callback(new Error("Passing a function as the first parameter to pool.query is not supported")); + }); + return response2.result; + } + if (typeof values === "function") { + cb = values; + values = void 0; + } + const response = promisify(this.Promise, cb); + cb = response.callback; + this.connect((err, client) => { + if (err) { + return cb(err); + } + let clientReleased = false; + const onError = /* @__PURE__ */ __name((err2) => { + if (clientReleased) { + return; + } + clientReleased = true; + client.release(err2); + cb(err2); + }, "onError"); + client.once("error", onError); + this.log("dispatching query"); + try { + client.query(text, values, (err2, res) => { + this.log("query dispatched"); + client.removeListener("error", onError); + if (clientReleased) { + return; + } + clientReleased = true; + client.release(err2); + if (err2) { + return cb(err2); + } + return cb(void 0, res); + }); + } catch (err2) { + client.release(err2); + return cb(err2); + } + }); + return response.result; + } + end(cb) { + this.log("ending"); + if (this.ending) { + const err = new Error("Called end on pool more than once"); + return cb ? cb(err) : this.Promise.reject(err); + } + this.ending = true; + const promised = promisify(this.Promise, cb); + this._endCallback = promised.callback; + this._pulseQueue(); + return promised.result; + } + get waitingCount() { + return this._pendingQueue.length; + } + get idleCount() { + return this._idle.length; + } + get expiredCount() { + return this._clients.reduce((acc, client) => acc + (this._expired.has(client) ? 1 : 0), 0); + } + get totalCount() { + return this._clients.length; + } + }; + module.exports = Pool2; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/native/query.js +var require_query2 = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/native/query.js"(exports, module) { + "use strict"; + var EventEmitter = __require("events").EventEmitter; + var util = __require("util"); + var utils = require_utils(); + var NativeQuery = module.exports = function(config, values, callback) { + EventEmitter.call(this); + config = utils.normalizeQueryConfig(config, values, callback); + this.text = config.text; + this.values = config.values; + this.name = config.name; + this.queryMode = config.queryMode; + this.callback = config.callback; + this.state = "new"; + this._arrayMode = config.rowMode === "array"; + this._emitRowEvents = false; + this.on( + "newListener", + function(event) { + if (event === "row") this._emitRowEvents = true; + }.bind(this) + ); + }; + util.inherits(NativeQuery, EventEmitter); + var errorFieldMap = { + sqlState: "code", + statementPosition: "position", + messagePrimary: "message", + messageDetail: "detail", + messageHint: "hint", + context: "where", + schemaName: "schema", + tableName: "table", + columnName: "column", + dataTypeName: "dataType", + constraintName: "constraint", + sourceFile: "file", + sourceLine: "line", + sourceFunction: "routine" + }; + NativeQuery.prototype.handleError = function(err) { + const fields = this.native && this.native.pq.resultErrorFields(); + if (fields) { + for (const key in fields) { + const normalizedFieldName = errorFieldMap[key] || key; + err[normalizedFieldName] = fields[key]; + } + } + if (this.callback) { + this.callback(err); + } else { + this.emit("error", err); + } + this.state = "error"; + }; + NativeQuery.prototype.then = function(onSuccess, onFailure) { + return this._getPromise().then(onSuccess, onFailure); + }; + NativeQuery.prototype.catch = function(callback) { + return this._getPromise().catch(callback); + }; + NativeQuery.prototype._getPromise = function() { + if (this._promise) return this._promise; + this._promise = new Promise( + function(resolve, reject) { + this._once("end", resolve); + this._once("error", reject); + }.bind(this) + ); + return this._promise; + }; + NativeQuery.prototype.submit = function(client) { + this.state = "running"; + const self = this; + this.native = client.native; + client.native.arrayMode = this._arrayMode; + let after = /* @__PURE__ */ __name(function(err, rows, results) { + client.native.arrayMode = false; + setImmediate(function() { + self.emit("_done"); + }); + if (err) { + return self.handleError(err); + } + if (self._emitRowEvents) { + if (results.length > 1) { + rows.forEach((rowOfRows, i) => { + rowOfRows.forEach((row) => { + self.emit("row", row, results[i]); + }); + }); + } else { + rows.forEach(function(row) { + self.emit("row", row, results); + }); + } + } + self.state = "end"; + self.emit("end", results); + if (self.callback) { + self.callback(null, results); + } + }, "after"); + if (process.domain) { + after = process.domain.bind(after); + } + if (this.name) { + if (this.name.length > 63) { + console.error("Warning! Postgres only supports 63 characters for query names."); + console.error("You supplied %s (%s)", this.name, this.name.length); + console.error("This can cause conflicts and silent errors executing queries"); + } + const values = (this.values || []).map(utils.prepareValue); + if (client.namedQueries[this.name] !== void 0) { + if (this.text && client.namedQueries[this.name] !== this.text) { + const err = new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`); + return after(err); + } + return client.native.execute(this.name, values, after); + } + return client.native.prepare(this.name, this.text, values.length, function(err) { + if (err) return after(err); + client.namedQueries[self.name] = self.text; + return self.native.execute(self.name, values, after); + }); + } else if (this.values) { + if (!Array.isArray(this.values)) { + const err = new Error("Query values must be an array"); + return after(err); + } + const vals = this.values.map(utils.prepareValue); + client.native.query(this.text, vals, after); + } else if (this.queryMode === "extended") { + client.native.query(this.text, [], after); + } else { + client.native.query(this.text, after); + } + }; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/native/client.js +var require_client2 = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/native/client.js"(exports, module) { + var nodeUtils = __require("util"); + var Native; + try { + Native = __require("pg-native"); + } catch (e) { + throw e; + } + var TypeOverrides2 = require_type_overrides(); + var EventEmitter = __require("events").EventEmitter; + var util = __require("util"); + var ConnectionParameters = require_connection_parameters(); + var NativeQuery = require_query2(); + var queryQueueLengthDeprecationNotice = nodeUtils.deprecate( + () => { + }, + "Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead." + ); + var Client2 = module.exports = function(config) { + EventEmitter.call(this); + config = config || {}; + this._Promise = config.Promise || global.Promise; + this._types = new TypeOverrides2(config.types); + this.native = new Native({ + types: this._types + }); + this._queryQueue = []; + this._ending = false; + this._connecting = false; + this._connected = false; + this._queryable = true; + this.pipeline = Boolean(config.pipeline); + this._pipelineInFlight = false; + const cp = this.connectionParameters = new ConnectionParameters(config); + if (config.nativeConnectionString) cp.nativeConnectionString = config.nativeConnectionString; + this.user = cp.user; + Object.defineProperty(this, "password", { + configurable: true, + enumerable: false, + writable: true, + value: cp.password + }); + this.database = cp.database; + this.host = cp.host; + this.port = cp.port; + this.namedQueries = {}; + }; + Client2.Query = NativeQuery; + util.inherits(Client2, EventEmitter); + Client2.prototype._errorAllQueries = function(err) { + const enqueueError = /* @__PURE__ */ __name((query) => { + process.nextTick(() => { + query.native = this.native; + query.handleError(err); + }); + }, "enqueueError"); + if (this._hasActiveQuery()) { + enqueueError(this._activeQuery); + this._activeQuery = null; + } + this._queryQueue.forEach(enqueueError); + this._queryQueue.length = 0; + }; + Client2.prototype._connect = function(cb) { + const self = this; + if (this._connecting) { + process.nextTick(() => cb(new Error("Client has already been connected. You cannot reuse a client."))); + return; + } + this._connecting = true; + this.connectionParameters.getLibpqConnectionString(function(err, conString) { + if (self.connectionParameters.nativeConnectionString) conString = self.connectionParameters.nativeConnectionString; + if (err) return cb(err); + self.native.connect(conString, function(err2) { + if (err2) { + self.native.end(); + return cb(err2); + } + self._connected = true; + self.native.on("error", function(err3) { + self._queryable = false; + self._errorAllQueries(err3); + self.emit("error", err3); + }); + self.native.on("notification", function(msg) { + self.emit("notification", { + channel: msg.relname, + payload: msg.extra + }); + }); + self.emit("connect"); + self._pulseQueryQueue(true); + cb(null, this); + }); + }); + }; + Client2.prototype.connect = function(callback) { + if (callback) { + this._connect(callback); + return; + } + return new this._Promise((resolve, reject) => { + this._connect((error) => { + if (error) { + reject(error); + } else { + resolve(this); + } + }); + }); + }; + Client2.prototype.query = function(config, values, callback) { + let query; + let result; + let readTimeout; + let readTimeoutTimer; + let queryCallback; + if (config === null || config === void 0) { + throw new TypeError("Client was passed a null or undefined query"); + } else if (typeof config.submit === "function") { + readTimeout = config.query_timeout || this.connectionParameters.query_timeout; + result = query = config; + if (typeof values === "function") { + config.callback = values; + } + } else { + readTimeout = config.query_timeout || this.connectionParameters.query_timeout; + query = new NativeQuery(config, values, callback); + if (!query.callback) { + let resolveOut, rejectOut; + result = new this._Promise((resolve, reject) => { + resolveOut = resolve; + rejectOut = reject; + }).catch((err) => { + Error.captureStackTrace(err); + throw err; + }); + query.callback = (err, res) => err ? rejectOut(err) : resolveOut(res); + } + } + if (readTimeout) { + queryCallback = query.callback || (() => { + }); + readTimeoutTimer = setTimeout(() => { + const error = new Error("Query read timeout"); + process.nextTick(() => { + query.handleError(error, this.connection); + }); + queryCallback(error); + query.callback = () => { + }; + const index = this._queryQueue.indexOf(query); + if (index > -1) { + this._queryQueue.splice(index, 1); + } + this._pulseQueryQueue(); + }, readTimeout); + query.callback = (err, res) => { + clearTimeout(readTimeoutTimer); + queryCallback(err, res); + }; + } + if (!this._queryable) { + query.native = this.native; + process.nextTick(() => { + query.handleError(new Error("Client has encountered a connection error and is not queryable")); + }); + return result; + } + if (this._ending) { + query.native = this.native; + process.nextTick(() => { + query.handleError(new Error("Client was closed and is not queryable")); + }); + return result; + } + if (this._queryQueue.length > 0 && !this.pipeline) { + queryQueueLengthDeprecationNotice(); + } + this._queryQueue.push(query); + this._pulseQueryQueue(); + return result; + }; + Client2.prototype.end = function(cb) { + const self = this; + this._ending = true; + if (this._connecting && !this._connected) { + this.once("connect", () => { + this.end(() => { + }); + }); + } + let result; + if (!cb) { + result = new this._Promise(function(resolve, reject) { + cb = /* @__PURE__ */ __name((err) => err ? reject(err) : resolve(), "cb"); + }); + } + const doEnd = /* @__PURE__ */ __name(function() { + self.native.end(function() { + self._connected = false; + self._errorAllQueries(new Error("Connection terminated")); + process.nextTick(() => { + self.emit("end"); + if (cb) cb(); + }); + }); + }, "doEnd"); + if (this.pipeline && (this._pipelineInFlight || this._queryQueue.length > 0)) { + this.once("drain", doEnd); + } else { + doEnd(); + } + return result; + }; + Client2.prototype._hasActiveQuery = function() { + return this._activeQuery && this._activeQuery.state !== "error" && this._activeQuery.state !== "end"; + }; + Client2.prototype._pulseQueryQueue = function(initialConnection) { + if (!this._connected) { + return; + } + if (this.pipeline && !initialConnection) { + return this._pulsePipelinedQueryQueue(); + } + if (this._hasActiveQuery()) { + return; + } + const query = this._queryQueue.shift(); + if (!query) { + if (!initialConnection) { + this.emit("drain"); + } + return; + } + this._activeQuery = query; + query.submit(this); + const self = this; + query.once("_done", function() { + self._pulseQueryQueue(); + }); + }; + Client2.prototype._pulsePipelinedQueryQueue = function() { + if (!this._connected || this._pipelineInFlight) { + return; + } + if (this._queryQueue.length === 0) { + if (this.hasExecuted) { + this.emit("drain"); + } + return; + } + this._pipelineInFlight = true; + const self = this; + const queries = []; + const nativeQueries = []; + const utils = require_utils(); + while (this._queryQueue.length > 0) { + const query = this._queryQueue.shift(); + this.hasExecuted = true; + nativeQueries.push(query); + const values = query.values ? query.values.map(utils.prepareValue) : null; + const pipelineEntry = { text: query.text, name: query.name, arrayMode: query._arrayMode }; + if (values) { + pipelineEntry.values = values; + } + if (query.name && this.namedQueries[query.name]) { + pipelineEntry._alreadyPrepared = true; + } + queries.push(pipelineEntry); + } + this.native.pipeline(queries, function(err, results) { + self._pipelineInFlight = false; + if (err) { + self._connected = false; + self._queryable = false; + for (let i = 0; i < nativeQueries.length; i++) { + const q = nativeQueries[i]; + q.native = self.native; + q.handleError(err); + } + self._errorAllQueries(err); + self.emit("error", err); + self.emit("end"); + return; + } + for (let i = 0; i < nativeQueries.length; i++) { + const q = nativeQueries[i]; + const r = results[i]; + q.native = self.native; + if (r.err) { + q.handleError(r.err); + } else { + if (q.name) { + self.namedQueries[q.name] = q.text; + } + q.state = "end"; + q.emit("end", r.result); + if (q.callback) { + q.callback(null, r.result); + } + } + setImmediate(function() { + q.emit("_done"); + }); + } + self._pulsePipelinedQueryQueue(); + }); + }; + Client2.prototype.cancel = function(query) { + if (this._activeQuery === query) { + this.native.cancel(function() { + }); + } else if (this._queryQueue.indexOf(query) !== -1) { + this._queryQueue.splice(this._queryQueue.indexOf(query), 1); + } + }; + Client2.prototype.ref = function() { + }; + Client2.prototype.unref = function() { + }; + Client2.prototype.setTypeParser = function(oid, format, parseFn) { + return this._types.setTypeParser(oid, format, parseFn); + }; + Client2.prototype.getTypeParser = function(oid, format) { + return this._types.getTypeParser(oid, format); + }; + Client2.prototype.isConnected = function() { + return this._connected; + }; + Client2.prototype.getTransactionStatus = function() { + return this.native.getTransactionStatus(); + }; + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/native/index.js +var require_native = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/native/index.js"(exports, module) { + "use strict"; + module.exports = require_client2(); + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/index.js +var require_lib2 = __commonJS({ + "../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/lib/index.js"(exports, module) { + "use strict"; + var Client2 = require_client(); + var defaults2 = require_defaults(); + var Connection2 = require_connection(); + var Result2 = require_result(); + var utils = require_utils(); + var Pool2 = require_pg_pool(); + var TypeOverrides2 = require_type_overrides(); + var { DatabaseError: DatabaseError2 } = require_dist(); + var { escapeIdentifier: escapeIdentifier2, escapeLiteral: escapeLiteral2 } = require_utils(); + var poolFactory = /* @__PURE__ */ __name((Client3) => { + return class BoundPool extends Pool2 { + static { + __name(this, "BoundPool"); + } + constructor(options) { + super(options, Client3); + } + }; + }, "poolFactory"); + var PG = /* @__PURE__ */ __name(function(clientConstructor2) { + this.defaults = defaults2; + this.Client = clientConstructor2; + this.Query = this.Client.Query; + this.Pool = poolFactory(this.Client); + this._pools = []; + this.Connection = Connection2; + this.types = require_pg_types(); + this.DatabaseError = DatabaseError2; + this.TypeOverrides = TypeOverrides2; + this.escapeIdentifier = escapeIdentifier2; + this.escapeLiteral = escapeLiteral2; + this.Result = Result2; + this.utils = utils; + }, "PG"); + var clientConstructor = Client2; + var forceNative = false; + try { + forceNative = !!process.env.NODE_PG_FORCE_NATIVE; + } catch { + } + if (forceNative) { + clientConstructor = require_native(); + } + module.exports = new PG(clientConstructor); + Object.defineProperty(module.exports, "native", { + configurable: true, + enumerable: false, + get() { + let native = null; + try { + native = new PG(require_native()); + } catch (err) { + if (err.code !== "MODULE_NOT_FOUND") { + throw err; + } + } + Object.defineProperty(module.exports, "native", { + value: native + }); + return native; + } + }); + } +}); + +// ../../node_modules/.pnpm/pg@8.23.1/node_modules/pg/esm/index.mjs +var import_lib = __toESM(require_lib2(), 1); +var Client = import_lib.default.Client; +var Pool = import_lib.default.Pool; +var Connection = import_lib.default.Connection; +var types = import_lib.default.types; +var Query = import_lib.default.Query; +var DatabaseError = import_lib.default.DatabaseError; +var escapeIdentifier = import_lib.default.escapeIdentifier; +var escapeLiteral = import_lib.default.escapeLiteral; +var Result = import_lib.default.Result; +var TypeOverrides = import_lib.default.TypeOverrides; +var defaults = import_lib.default.defaults; +var esm_default = import_lib.default; + +export { + esm_default +}; diff --git a/apps/api/.output/dist/chunks/chunk-T6GW54FI.js b/apps/api/.output/dist/chunks/chunk-T6GW54FI.js new file mode 100644 index 0000000..191ebf8 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-T6GW54FI.js @@ -0,0 +1,60 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] +}) : x)(function(x) { + if (typeof require !== "undefined") return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); +}); +var __esm = (fn, res, err) => function __init() { + if (err) throw err[0]; + try { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; + } catch (e) { + throw err = [e], e; + } +}; +var __commonJS = (cb, mod) => function __require2() { + try { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + } catch (e) { + throw mod = 0, e; + } +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +export { + __name, + __require, + __esm, + __commonJS, + __export, + __toESM, + __toCommonJS +}; diff --git a/apps/api/.output/dist/chunks/chunk-TXBARIZB.js b/apps/api/.output/dist/chunks/chunk-TXBARIZB.js new file mode 100644 index 0000000..19bd5b8 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-TXBARIZB.js @@ -0,0 +1,64774 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + esm_default +} from "./chunk-KIUJQ22G.js"; +import { + BadRequestException, + Global, + Inject, + Injectable, + Logger, + Module, + Optional, + UnauthorizedException, + init_common +} from "./chunk-BX2ML7LW.js"; +import { + require_ms +} from "./chunk-A34KYKJP.js"; +import { + BinaryDecisionDiagram, + Client, + Command, + Crc32Node, + EndpointCache, + EndpointError, + HttpRequest, + HttpResponse, + LazyJsonString, + NODE_REGION_CONFIG_FILE_OPTIONS, + NODE_REGION_CONFIG_OPTIONS, + NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, + NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, + NoOpLogger, + NormalizedSchema, + NumericValue, + ProviderError, + REGION_ENV_NAME, + REGION_INI_NAME, + SelectorType, + ServiceException, + Sha256Js, + Sha256Node, + TypeRegistry, + Uint8ArrayBlobAdapter, + _parseEpochTimestamp, + _parseRfc3339DateTimeWithOffset, + _parseRfc7231DateTime, + booleanSelector, + calculateBodyLength, + checksum_exports, + client_exports, + concatBytes, + config_exports, + createAggregatedClient, + createBufferedReadable, + createChecksumStream, + customEndpointFunctions, + dateToUtcString, + decideEndpoint, + decorateServiceException, + deref, + emitWarningIfUnsupportedVersion, + endpoints_exports, + event_streams_exports, + fromBase64, + fromUtf8, + generateIdempotencyToken, + getDefaultExtensionConfiguration, + getEndpointPlugin, + getSchemaSerdePlugin, + getSmithyContext, + getValueFromTextNode, + hasOwn, + init_checksum, + init_client, + init_config, + init_endpoints, + init_event_streams, + init_schema, + init_serde, + init_transport, + isArrayBuffer, + isIpAddress, + isValidHostLabel, + isValidHostname, + loadConfig, + loadConfigsForDefaultMode, + makeBuilder, + normalizeProvider, + parseEpochTimestamp, + parseQueryString, + parseRfc3339DateTimeWithOffset, + parseRfc7231DateTime, + parseUrl, + quoteHeader, + require_dist_cjs, + resolveDefaultRuntimeConfig, + resolveDefaultsModeConfig, + resolveEndpoint, + resolveEndpointConfig, + resolveParams, + resolveRegionConfig, + schema_exports, + sdkStreamMixin, + serde_exports, + splitEvery, + splitHeader, + toBase64, + toUint8Array, + toUtf8, + translateTraits, + v4 +} from "./chunk-6UPY3HEI.js"; +import { + __commonJS, + __esm, + __export, + __name, + __require, + __toCommonJS, + __toESM +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/postgres-array@3.0.4/node_modules/postgres-array/index.js +var require_postgres_array = __commonJS({ + "../../node_modules/.pnpm/postgres-array@3.0.4/node_modules/postgres-array/index.js"(exports) { + "use strict"; + var BACKSLASH2 = "\\"; + var DQUOT = '"'; + var LBRACE = "{"; + var RBRACE = "}"; + var LBRACKET = "["; + var EQUALS = "="; + var COMMA2 = ","; + var NULL_STRING = "NULL"; + function makeParseArrayWithTransform(transform2) { + const haveTransform = transform2 != null; + return /* @__PURE__ */ __name(function parseArray3(str) { + const rbraceIndex = str.length - 1; + if (rbraceIndex === 1) { + return []; + } + if (str[rbraceIndex] !== RBRACE) { + throw new Error("Invalid array text - must end with }"); + } + let position = 0; + if (str[position] === LBRACKET) { + position = str.indexOf(EQUALS) + 1; + } + if (str[position++] !== LBRACE) { + throw new Error("Invalid array text - must start with {"); + } + const output2 = []; + let current = output2; + const stack = []; + let currentStringStart = position; + let currentString = ""; + let expectValue = true; + for (; position < rbraceIndex; ++position) { + let char = str[position]; + if (char === DQUOT) { + currentStringStart = ++position; + let dquot = str.indexOf(DQUOT, currentStringStart); + let backSlash = str.indexOf(BACKSLASH2, currentStringStart); + while (backSlash !== -1 && backSlash < dquot) { + position = backSlash; + const part2 = str.slice(currentStringStart, position); + currentString += part2; + currentStringStart = ++position; + if (dquot === position++) { + dquot = str.indexOf(DQUOT, position); + } + backSlash = str.indexOf(BACKSLASH2, position); + } + position = dquot; + const part = str.slice(currentStringStart, position); + currentString += part; + current.push(haveTransform ? transform2(currentString) : currentString); + currentString = ""; + expectValue = false; + } else if (char === LBRACE) { + const newArray = []; + current.push(newArray); + stack.push(current); + current = newArray; + currentStringStart = position + 1; + expectValue = true; + } else if (char === COMMA2) { + expectValue = true; + } else if (char === RBRACE) { + expectValue = false; + const arr = stack.pop(); + if (arr === void 0) { + throw new Error("Invalid array text - too many '}'"); + } + current = arr; + } else if (expectValue) { + currentStringStart = position; + while ((char = str[position]) !== COMMA2 && char !== RBRACE && position < rbraceIndex) { + ++position; + } + const part = str.slice(currentStringStart, position--); + current.push( + part === NULL_STRING ? null : haveTransform ? transform2(part) : part + ); + expectValue = false; + } else { + throw new Error("Was expecting delimeter"); + } + } + return output2; + }, "parseArray"); + } + __name(makeParseArrayWithTransform, "makeParseArrayWithTransform"); + var parseArray2 = makeParseArrayWithTransform(); + exports.parse = (source, transform2) => transform2 != null ? makeParseArrayWithTransform(transform2)(source) : parseArray2(source); + } +}); + +// ../../node_modules/.pnpm/@prisma+client-runtime-utils@7.10.1/node_modules/@prisma/client-runtime-utils/dist/index.js +var require_dist = __commonJS({ + "../../node_modules/.pnpm/@prisma+client-runtime-utils@7.10.1/node_modules/@prisma/client-runtime-utils/dist/index.js"(exports, module) { + "use strict"; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __export3 = /* @__PURE__ */ __name((target, all) => { + for (var name2 in all) + __defProp2(target, name2, { get: all[name2], enumerable: true }); + }, "__export"); + var __copyProps = /* @__PURE__ */ __name((to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp2(to, key, { get: /* @__PURE__ */ __name(() => from[key], "get"), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }, "__copyProps"); + var __toCommonJS2 = /* @__PURE__ */ __name((mod2) => __copyProps(__defProp2({}, "__esModule", { value: true }), mod2), "__toCommonJS"); + var index_exports = {}; + __export3(index_exports, { + AnyNull: /* @__PURE__ */ __name(() => AnyNull4, "AnyNull"), + AnyNullClass: /* @__PURE__ */ __name(() => AnyNullClass, "AnyNullClass"), + DbNull: /* @__PURE__ */ __name(() => DbNull4, "DbNull"), + DbNullClass: /* @__PURE__ */ __name(() => DbNullClass, "DbNullClass"), + Decimal: /* @__PURE__ */ __name(() => Decimal4, "Decimal"), + JsonNull: /* @__PURE__ */ __name(() => JsonNull4, "JsonNull"), + JsonNullClass: /* @__PURE__ */ __name(() => JsonNullClass, "JsonNullClass"), + NullTypes: /* @__PURE__ */ __name(() => NullTypes4, "NullTypes"), + ObjectEnumValue: /* @__PURE__ */ __name(() => ObjectEnumValue2, "ObjectEnumValue"), + PrismaClientInitializationError: /* @__PURE__ */ __name(() => PrismaClientInitializationError4, "PrismaClientInitializationError"), + PrismaClientKnownRequestError: /* @__PURE__ */ __name(() => PrismaClientKnownRequestError4, "PrismaClientKnownRequestError"), + PrismaClientRustError: /* @__PURE__ */ __name(() => PrismaClientRustError, "PrismaClientRustError"), + PrismaClientRustPanicError: /* @__PURE__ */ __name(() => PrismaClientRustPanicError4, "PrismaClientRustPanicError"), + PrismaClientUnknownRequestError: /* @__PURE__ */ __name(() => PrismaClientUnknownRequestError4, "PrismaClientUnknownRequestError"), + PrismaClientValidationError: /* @__PURE__ */ __name(() => PrismaClientValidationError4, "PrismaClientValidationError"), + Sql: /* @__PURE__ */ __name(() => Sql4, "Sql"), + empty: /* @__PURE__ */ __name(() => empty4, "empty"), + hasBatchIndex: /* @__PURE__ */ __name(() => hasBatchIndex, "hasBatchIndex"), + isAnyNull: /* @__PURE__ */ __name(() => isAnyNull2, "isAnyNull"), + isDbNull: /* @__PURE__ */ __name(() => isDbNull2, "isDbNull"), + isJsonNull: /* @__PURE__ */ __name(() => isJsonNull2, "isJsonNull"), + isObjectEnumValue: /* @__PURE__ */ __name(() => isObjectEnumValue2, "isObjectEnumValue"), + join: /* @__PURE__ */ __name(() => join4, "join"), + raw: /* @__PURE__ */ __name(() => raw4, "raw"), + sql: /* @__PURE__ */ __name(() => sql2, "sql") + }); + module.exports = __toCommonJS2(index_exports); + function hasBatchIndex(value) { + return typeof value["batchRequestIdx"] === "number"; + } + __name(hasBatchIndex, "hasBatchIndex"); + function setClassName(classObject, name2) { + Object.defineProperty(classObject, "name", { + value: name2, + configurable: true + }); + } + __name(setClassName, "setClassName"); + var PrismaClientInitializationError4 = class _PrismaClientInitializationError extends Error { + static { + __name(this, "_PrismaClientInitializationError"); + } + clientVersion; + errorCode; + retryable; + constructor(message, clientVersion, errorCode) { + super(message); + this.name = "PrismaClientInitializationError"; + this.clientVersion = clientVersion; + this.errorCode = errorCode; + Error.captureStackTrace(_PrismaClientInitializationError); + } + get [Symbol.toStringTag]() { + return "PrismaClientInitializationError"; + } + }; + setClassName(PrismaClientInitializationError4, "PrismaClientInitializationError"); + var PrismaClientKnownRequestError4 = class extends Error { + static { + __name(this, "PrismaClientKnownRequestError"); + } + code; + meta; + clientVersion; + batchRequestIdx; + constructor(message, { code, clientVersion, meta: meta3, batchRequestIdx }) { + super(message); + this.name = "PrismaClientKnownRequestError"; + this.code = code; + this.clientVersion = clientVersion; + this.meta = meta3; + Object.defineProperty(this, "batchRequestIdx", { + value: batchRequestIdx, + enumerable: false, + writable: true + }); + } + get [Symbol.toStringTag]() { + return "PrismaClientKnownRequestError"; + } + }; + setClassName(PrismaClientKnownRequestError4, "PrismaClientKnownRequestError"); + function getBacktrace(log3) { + if (log3.fields?.message) { + let str = log3.fields?.message; + if (log3.fields?.file) { + str += ` in ${log3.fields.file}`; + if (log3.fields?.line) { + str += `:${log3.fields.line}`; + } + if (log3.fields?.column) { + str += `:${log3.fields.column}`; + } + } + if (log3.fields?.reason) { + str += ` +${log3.fields?.reason}`; + } + return str; + } + return "Unknown error"; + } + __name(getBacktrace, "getBacktrace"); + function isPanic(err) { + return err.fields?.message === "PANIC"; + } + __name(isPanic, "isPanic"); + var PrismaClientRustError = class extends Error { + static { + __name(this, "PrismaClientRustError"); + } + clientVersion; + _isPanic; + constructor({ clientVersion, error: error62 }) { + const backtrace = getBacktrace(error62); + super(backtrace ?? "Unknown error"); + this._isPanic = isPanic(error62); + this.clientVersion = clientVersion; + } + get [Symbol.toStringTag]() { + return "PrismaClientRustError"; + } + isPanic() { + return this._isPanic; + } + }; + setClassName(PrismaClientRustError, "PrismaClientRustError"); + var PrismaClientRustPanicError4 = class extends Error { + static { + __name(this, "PrismaClientRustPanicError"); + } + clientVersion; + constructor(message, clientVersion) { + super(message); + this.name = "PrismaClientRustPanicError"; + this.clientVersion = clientVersion; + } + get [Symbol.toStringTag]() { + return "PrismaClientRustPanicError"; + } + }; + setClassName(PrismaClientRustPanicError4, "PrismaClientRustPanicError"); + var PrismaClientUnknownRequestError4 = class extends Error { + static { + __name(this, "PrismaClientUnknownRequestError"); + } + clientVersion; + batchRequestIdx; + constructor(message, { clientVersion, batchRequestIdx }) { + super(message); + this.name = "PrismaClientUnknownRequestError"; + this.clientVersion = clientVersion; + Object.defineProperty(this, "batchRequestIdx", { + value: batchRequestIdx, + writable: true, + enumerable: false + }); + } + get [Symbol.toStringTag]() { + return "PrismaClientUnknownRequestError"; + } + }; + setClassName(PrismaClientUnknownRequestError4, "PrismaClientUnknownRequestError"); + var PrismaClientValidationError4 = class extends Error { + static { + __name(this, "PrismaClientValidationError"); + } + name = "PrismaClientValidationError"; + clientVersion; + constructor(message, { clientVersion }) { + super(message); + this.clientVersion = clientVersion; + } + get [Symbol.toStringTag]() { + return "PrismaClientValidationError"; + } + }; + setClassName(PrismaClientValidationError4, "PrismaClientValidationError"); + var secret = /* @__PURE__ */ Symbol(); + var PRISMA_OBJECT_ENUM_VALUE = /* @__PURE__ */ Symbol.for("prisma.objectEnumValue"); + var ObjectEnumValue2 = class { + static { + __name(this, "ObjectEnumValue"); + } + [PRISMA_OBJECT_ENUM_VALUE] = true; + #representation; + constructor(arg) { + if (arg === secret) { + this.#representation = `Prisma.${this._getName()}`; + } else { + this.#representation = `new Prisma.${this._getNamespace()}.${this._getName()}()`; + } + } + _getName() { + return this.constructor.name; + } + toString() { + return this.#representation; + } + }; + function setClassName2(classObject, name2) { + Object.defineProperty(classObject, "name", { + value: name2, + configurable: true + }); + } + __name(setClassName2, "setClassName2"); + var NullTypesEnumValue = class extends ObjectEnumValue2 { + static { + __name(this, "NullTypesEnumValue"); + } + _getNamespace() { + return "NullTypes"; + } + }; + var DbNullClass = class extends NullTypesEnumValue { + static { + __name(this, "DbNullClass"); + } + // Phantom private property to prevent structural type equality + // eslint-disable-next-line no-unused-private-class-members + #_brand_DbNull; + }; + setClassName2(DbNullClass, "DbNull"); + var JsonNullClass = class extends NullTypesEnumValue { + static { + __name(this, "JsonNullClass"); + } + // Phantom private property to prevent structural type equality + // eslint-disable-next-line no-unused-private-class-members + #_brand_JsonNull; + }; + setClassName2(JsonNullClass, "JsonNull"); + var AnyNullClass = class extends NullTypesEnumValue { + static { + __name(this, "AnyNullClass"); + } + // Phantom private property to prevent structural type equality + // eslint-disable-next-line no-unused-private-class-members + #_brand_AnyNull; + }; + setClassName2(AnyNullClass, "AnyNull"); + var NullTypes4 = { + DbNull: DbNullClass, + JsonNull: JsonNullClass, + AnyNull: AnyNullClass + }; + var DbNull4 = new DbNullClass(secret); + var JsonNull4 = new JsonNullClass(secret); + var AnyNull4 = new AnyNullClass(secret); + function isObjectEnumValue2(value) { + return typeof value === "object" && value !== null && value[PRISMA_OBJECT_ENUM_VALUE] === true; + } + __name(isObjectEnumValue2, "isObjectEnumValue"); + function isDbNull2(value) { + return value === DbNull4; + } + __name(isDbNull2, "isDbNull"); + function isJsonNull2(value) { + return value === JsonNull4; + } + __name(isJsonNull2, "isJsonNull"); + function isAnyNull2(value) { + return value === AnyNull4; + } + __name(isAnyNull2, "isAnyNull"); + var EXP_LIMIT = 9e15; + var MAX_DIGITS = 1e9; + var NUMERALS = "0123456789abcdef"; + var LN10 = "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058"; + var PI = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789"; + var DEFAULTS = { + // These values must be integers within the stated ranges (inclusive). + // Most of these values can be changed at run-time using the `Decimal.config` method. + // The maximum number of significant digits of the result of a calculation or base conversion. + // E.g. `Decimal.config({ precision: 20 });` + precision: 20, + // 1 to MAX_DIGITS + // The rounding mode used when rounding to `precision`. + // + // ROUND_UP 0 Away from zero. + // ROUND_DOWN 1 Towards zero. + // ROUND_CEIL 2 Towards +Infinity. + // ROUND_FLOOR 3 Towards -Infinity. + // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + // + // E.g. + // `Decimal.rounding = 4;` + // `Decimal.rounding = Decimal.ROUND_HALF_UP;` + rounding: 4, + // 0 to 8 + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend (JavaScript %). + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 The IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive. + // + // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian + // division (9) are commonly used for the modulus operation. The other rounding modes can also + // be used, but they may not give useful results. + modulo: 1, + // 0 to 9 + // The exponent value at and beneath which `toString` returns exponential notation. + // JavaScript numbers: -7 + toExpNeg: -7, + // 0 to -EXP_LIMIT + // The exponent value at and above which `toString` returns exponential notation. + // JavaScript numbers: 21 + toExpPos: 21, + // 0 to EXP_LIMIT + // The minimum exponent value, beneath which underflow to zero occurs. + // JavaScript numbers: -324 (5e-324) + minE: -EXP_LIMIT, + // -1 to -EXP_LIMIT + // The maximum exponent value, above which overflow to Infinity occurs. + // JavaScript numbers: 308 (1.7976931348623157e+308) + maxE: EXP_LIMIT, + // 1 to EXP_LIMIT + // Whether to use cryptographically-secure random number generation, if available. + crypto: false + // true/false + }; + var inexact; + var quadrant; + var external = true; + var decimalError = "[DecimalError] "; + var invalidArgument = decimalError + "Invalid argument: "; + var precisionLimitExceeded = decimalError + "Precision limit exceeded"; + var cryptoUnavailable = decimalError + "crypto unavailable"; + var tag = "[object Decimal]"; + var mathfloor = Math.floor; + var mathpow = Math.pow; + var isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i; + var isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i; + var isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i; + var isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i; + var BASE = 1e7; + var LOG_BASE = 7; + var MAX_SAFE_INTEGER = 9007199254740991; + var LN10_PRECISION = LN10.length - 1; + var PI_PRECISION = PI.length - 1; + var P = { toStringTag: tag }; + P.absoluteValue = P.abs = function() { + var x = new this.constructor(this); + if (x.s < 0) x.s = 1; + return finalise(x); + }; + P.ceil = function() { + return finalise(new this.constructor(this), this.e + 1, 2); + }; + P.clampedTo = P.clamp = function(min2, max2) { + var k5, x = this, Ctor = x.constructor; + min2 = new Ctor(min2); + max2 = new Ctor(max2); + if (!min2.s || !max2.s) return new Ctor(NaN); + if (min2.gt(max2)) throw Error(invalidArgument + max2); + k5 = x.cmp(min2); + return k5 < 0 ? min2 : x.cmp(max2) > 0 ? max2 : new Ctor(x); + }; + P.comparedTo = P.cmp = function(y) { + var i5, j5, xdL, ydL, x = this, xd = x.d, yd = (y = new x.constructor(y)).d, xs = x.s, ys = y.s; + if (!xd || !yd) { + return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1; + } + if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0; + if (xs !== ys) return xs; + if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1; + xdL = xd.length; + ydL = yd.length; + for (i5 = 0, j5 = xdL < ydL ? xdL : ydL; i5 < j5; ++i5) { + if (xd[i5] !== yd[i5]) return xd[i5] > yd[i5] ^ xs < 0 ? 1 : -1; + } + return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1; + }; + P.cosine = P.cos = function() { + var pr, rm, x = this, Ctor = x.constructor; + if (!x.d) return new Ctor(NaN); + if (!x.d[0]) return new Ctor(1); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + x = cosine(Ctor, toLessThanHalfPi(Ctor, x)); + Ctor.precision = pr; + Ctor.rounding = rm; + return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true); + }; + P.cubeRoot = P.cbrt = function() { + var e5, m3, n3, r5, rep, s2, sd, t, t32, t3plusx, x = this, Ctor = x.constructor; + if (!x.isFinite() || x.isZero()) return new Ctor(x); + external = false; + s2 = x.s * mathpow(x.s * x, 1 / 3); + if (!s2 || Math.abs(s2) == 1 / 0) { + n3 = digitsToString(x.d); + e5 = x.e; + if (s2 = (e5 - n3.length + 1) % 3) n3 += s2 == 1 || s2 == -2 ? "0" : "00"; + s2 = mathpow(n3, 1 / 3); + e5 = mathfloor((e5 + 1) / 3) - (e5 % 3 == (e5 < 0 ? -1 : 2)); + if (s2 == 1 / 0) { + n3 = "5e" + e5; + } else { + n3 = s2.toExponential(); + n3 = n3.slice(0, n3.indexOf("e") + 1) + e5; + } + r5 = new Ctor(n3); + r5.s = x.s; + } else { + r5 = new Ctor(s2.toString()); + } + sd = (e5 = Ctor.precision) + 3; + for (; ; ) { + t = r5; + t32 = t.times(t).times(t); + t3plusx = t32.plus(x); + r5 = divide(t3plusx.plus(x).times(t), t3plusx.plus(t32), sd + 2, 1); + if (digitsToString(t.d).slice(0, sd) === (n3 = digitsToString(r5.d)).slice(0, sd)) { + n3 = n3.slice(sd - 3, sd + 1); + if (n3 == "9999" || !rep && n3 == "4999") { + if (!rep) { + finalise(t, e5 + 1, 0); + if (t.times(t).times(t).eq(x)) { + r5 = t; + break; + } + } + sd += 4; + rep = 1; + } else { + if (!+n3 || !+n3.slice(1) && n3.charAt(0) == "5") { + finalise(r5, e5 + 1, 1); + m3 = !r5.times(r5).times(r5).eq(x); + } + break; + } + } + } + external = true; + return finalise(r5, e5, Ctor.rounding, m3); + }; + P.decimalPlaces = P.dp = function() { + var w, d5 = this.d, n3 = NaN; + if (d5) { + w = d5.length - 1; + n3 = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE; + w = d5[w]; + if (w) for (; w % 10 == 0; w /= 10) n3--; + if (n3 < 0) n3 = 0; + } + return n3; + }; + P.dividedBy = P.div = function(y) { + return divide(this, new this.constructor(y)); + }; + P.dividedToIntegerBy = P.divToInt = function(y) { + var x = this, Ctor = x.constructor; + return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding); + }; + P.equals = P.eq = function(y) { + return this.cmp(y) === 0; + }; + P.floor = function() { + return finalise(new this.constructor(this), this.e + 1, 3); + }; + P.greaterThan = P.gt = function(y) { + return this.cmp(y) > 0; + }; + P.greaterThanOrEqualTo = P.gte = function(y) { + var k5 = this.cmp(y); + return k5 == 1 || k5 === 0; + }; + P.hyperbolicCosine = P.cosh = function() { + var k5, n3, pr, rm, len, x = this, Ctor = x.constructor, one = new Ctor(1); + if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN); + if (x.isZero()) return one; + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + if (len < 32) { + k5 = Math.ceil(len / 3); + n3 = (1 / tinyPow(4, k5)).toString(); + } else { + k5 = 16; + n3 = "2.3283064365386962890625e-10"; + } + x = taylorSeries(Ctor, 1, x.times(n3), new Ctor(1), true); + var cosh2_x, i5 = k5, d8 = new Ctor(8); + for (; i5--; ) { + cosh2_x = x.times(x); + x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8)))); + } + return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + P.hyperbolicSine = P.sinh = function() { + var k5, pr, rm, len, x = this, Ctor = x.constructor; + if (!x.isFinite() || x.isZero()) return new Ctor(x); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + if (len < 3) { + x = taylorSeries(Ctor, 2, x, x, true); + } else { + k5 = 1.4 * Math.sqrt(len); + k5 = k5 > 16 ? 16 : k5 | 0; + x = x.times(1 / tinyPow(5, k5)); + x = taylorSeries(Ctor, 2, x, x, true); + var sinh2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20); + for (; k5--; ) { + sinh2_x = x.times(x); + x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20)))); + } + } + Ctor.precision = pr; + Ctor.rounding = rm; + return finalise(x, pr, rm, true); + }; + P.hyperbolicTangent = P.tanh = function() { + var pr, rm, x = this, Ctor = x.constructor; + if (!x.isFinite()) return new Ctor(x.s); + if (x.isZero()) return new Ctor(x); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 7; + Ctor.rounding = 1; + return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm); + }; + P.inverseCosine = P.acos = function() { + var x = this, Ctor = x.constructor, k5 = x.abs().cmp(1), pr = Ctor.precision, rm = Ctor.rounding; + if (k5 !== -1) { + return k5 === 0 ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) : new Ctor(NaN); + } + if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5); + Ctor.precision = pr + 6; + Ctor.rounding = 1; + x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan(); + Ctor.precision = pr; + Ctor.rounding = rm; + return x.times(2); + }; + P.inverseHyperbolicCosine = P.acosh = function() { + var pr, rm, x = this, Ctor = x.constructor; + if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN); + if (!x.isFinite()) return new Ctor(x); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4; + Ctor.rounding = 1; + external = false; + x = x.times(x).minus(1).sqrt().plus(x); + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + return x.ln(); + }; + P.inverseHyperbolicSine = P.asinh = function() { + var pr, rm, x = this, Ctor = x.constructor; + if (!x.isFinite() || x.isZero()) return new Ctor(x); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6; + Ctor.rounding = 1; + external = false; + x = x.times(x).plus(1).sqrt().plus(x); + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + return x.ln(); + }; + P.inverseHyperbolicTangent = P.atanh = function() { + var pr, rm, wpr, xsd, x = this, Ctor = x.constructor; + if (!x.isFinite()) return new Ctor(NaN); + if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN); + pr = Ctor.precision; + rm = Ctor.rounding; + xsd = x.sd(); + if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true); + Ctor.precision = wpr = xsd - x.e; + x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1); + Ctor.precision = pr + 4; + Ctor.rounding = 1; + x = x.ln(); + Ctor.precision = pr; + Ctor.rounding = rm; + return x.times(0.5); + }; + P.inverseSine = P.asin = function() { + var halfPi, k5, pr, rm, x = this, Ctor = x.constructor; + if (x.isZero()) return new Ctor(x); + k5 = x.abs().cmp(1); + pr = Ctor.precision; + rm = Ctor.rounding; + if (k5 !== -1) { + if (k5 === 0) { + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + halfPi.s = x.s; + return halfPi; + } + return new Ctor(NaN); + } + Ctor.precision = pr + 6; + Ctor.rounding = 1; + x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan(); + Ctor.precision = pr; + Ctor.rounding = rm; + return x.times(2); + }; + P.inverseTangent = P.atan = function() { + var i5, j5, k5, n3, px, t, r5, wpr, x2, x = this, Ctor = x.constructor, pr = Ctor.precision, rm = Ctor.rounding; + if (!x.isFinite()) { + if (!x.s) return new Ctor(NaN); + if (pr + 4 <= PI_PRECISION) { + r5 = getPi(Ctor, pr + 4, rm).times(0.5); + r5.s = x.s; + return r5; + } + } else if (x.isZero()) { + return new Ctor(x); + } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) { + r5 = getPi(Ctor, pr + 4, rm).times(0.25); + r5.s = x.s; + return r5; + } + Ctor.precision = wpr = pr + 10; + Ctor.rounding = 1; + k5 = Math.min(28, wpr / LOG_BASE + 2 | 0); + for (i5 = k5; i5; --i5) x = x.div(x.times(x).plus(1).sqrt().plus(1)); + external = false; + j5 = Math.ceil(wpr / LOG_BASE); + n3 = 1; + x2 = x.times(x); + r5 = new Ctor(x); + px = x; + for (; i5 !== -1; ) { + px = px.times(x2); + t = r5.minus(px.div(n3 += 2)); + px = px.times(x2); + r5 = t.plus(px.div(n3 += 2)); + if (r5.d[j5] !== void 0) for (i5 = j5; r5.d[i5] === t.d[i5] && i5--; ) ; + } + if (k5) r5 = r5.times(2 << k5 - 1); + external = true; + return finalise(r5, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + P.isFinite = function() { + return !!this.d; + }; + P.isInteger = P.isInt = function() { + return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2; + }; + P.isNaN = function() { + return !this.s; + }; + P.isNegative = P.isNeg = function() { + return this.s < 0; + }; + P.isPositive = P.isPos = function() { + return this.s > 0; + }; + P.isZero = function() { + return !!this.d && this.d[0] === 0; + }; + P.lessThan = P.lt = function(y) { + return this.cmp(y) < 0; + }; + P.lessThanOrEqualTo = P.lte = function(y) { + return this.cmp(y) < 1; + }; + P.logarithm = P.log = function(base) { + var isBase10, d5, denominator, k5, inf, num, sd, r5, arg = this, Ctor = arg.constructor, pr = Ctor.precision, rm = Ctor.rounding, guard = 5; + if (base == null) { + base = new Ctor(10); + isBase10 = true; + } else { + base = new Ctor(base); + d5 = base.d; + if (base.s < 0 || !d5 || !d5[0] || base.eq(1)) return new Ctor(NaN); + isBase10 = base.eq(10); + } + d5 = arg.d; + if (arg.s < 0 || !d5 || !d5[0] || arg.eq(1)) { + return new Ctor(d5 && !d5[0] ? -1 / 0 : arg.s != 1 ? NaN : d5 ? 0 : 1 / 0); + } + if (isBase10) { + if (d5.length > 1) { + inf = true; + } else { + for (k5 = d5[0]; k5 % 10 === 0; ) k5 /= 10; + inf = k5 !== 1; + } + } + external = false; + sd = pr + guard; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + r5 = divide(num, denominator, sd, 1); + if (checkRoundingDigits(r5.d, k5 = pr, rm)) { + do { + sd += 10; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + r5 = divide(num, denominator, sd, 1); + if (!inf) { + if (+digitsToString(r5.d).slice(k5 + 1, k5 + 15) + 1 == 1e14) { + r5 = finalise(r5, pr + 1, 0); + } + break; + } + } while (checkRoundingDigits(r5.d, k5 += 10, rm)); + } + external = true; + return finalise(r5, pr, rm); + }; + P.minus = P.sub = function(y) { + var d5, e5, i5, j5, k5, len, pr, rm, xd, xe, xLTy, yd, x = this, Ctor = x.constructor; + y = new Ctor(y); + if (!x.d || !y.d) { + if (!x.s || !y.s) y = new Ctor(NaN); + else if (x.d) y.s = -y.s; + else y = new Ctor(y.d || x.s !== y.s ? x : NaN); + return y; + } + if (x.s != y.s) { + y.s = -y.s; + return x.plus(y); + } + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + if (!xd[0] || !yd[0]) { + if (yd[0]) y.s = -y.s; + else if (xd[0]) y = new Ctor(x); + else return new Ctor(rm === 3 ? -0 : 0); + return external ? finalise(y, pr, rm) : y; + } + e5 = mathfloor(y.e / LOG_BASE); + xe = mathfloor(x.e / LOG_BASE); + xd = xd.slice(); + k5 = xe - e5; + if (k5) { + xLTy = k5 < 0; + if (xLTy) { + d5 = xd; + k5 = -k5; + len = yd.length; + } else { + d5 = yd; + e5 = xe; + len = xd.length; + } + i5 = Math.max(Math.ceil(pr / LOG_BASE), len) + 2; + if (k5 > i5) { + k5 = i5; + d5.length = 1; + } + d5.reverse(); + for (i5 = k5; i5--; ) d5.push(0); + d5.reverse(); + } else { + i5 = xd.length; + len = yd.length; + xLTy = i5 < len; + if (xLTy) len = i5; + for (i5 = 0; i5 < len; i5++) { + if (xd[i5] != yd[i5]) { + xLTy = xd[i5] < yd[i5]; + break; + } + } + k5 = 0; + } + if (xLTy) { + d5 = xd; + xd = yd; + yd = d5; + y.s = -y.s; + } + len = xd.length; + for (i5 = yd.length - len; i5 > 0; --i5) xd[len++] = 0; + for (i5 = yd.length; i5 > k5; ) { + if (xd[--i5] < yd[i5]) { + for (j5 = i5; j5 && xd[--j5] === 0; ) xd[j5] = BASE - 1; + --xd[j5]; + xd[i5] += BASE; + } + xd[i5] -= yd[i5]; + } + for (; xd[--len] === 0; ) xd.pop(); + for (; xd[0] === 0; xd.shift()) --e5; + if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0); + y.d = xd; + y.e = getBase10Exponent(xd, e5); + return external ? finalise(y, pr, rm) : y; + }; + P.modulo = P.mod = function(y) { + var q3, x = this, Ctor = x.constructor; + y = new Ctor(y); + if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN); + if (!y.d || x.d && !x.d[0]) { + return finalise(new Ctor(x), Ctor.precision, Ctor.rounding); + } + external = false; + if (Ctor.modulo == 9) { + q3 = divide(x, y.abs(), 0, 3, 1); + q3.s *= y.s; + } else { + q3 = divide(x, y, 0, Ctor.modulo, 1); + } + q3 = q3.times(y); + external = true; + return x.minus(q3); + }; + P.naturalExponential = P.exp = function() { + return naturalExponential(this); + }; + P.naturalLogarithm = P.ln = function() { + return naturalLogarithm(this); + }; + P.negated = P.neg = function() { + var x = new this.constructor(this); + x.s = -x.s; + return finalise(x); + }; + P.plus = P.add = function(y) { + var carry, d5, e5, i5, k5, len, pr, rm, xd, yd, x = this, Ctor = x.constructor; + y = new Ctor(y); + if (!x.d || !y.d) { + if (!x.s || !y.s) y = new Ctor(NaN); + else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN); + return y; + } + if (x.s != y.s) { + y.s = -y.s; + return x.minus(y); + } + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + if (!xd[0] || !yd[0]) { + if (!yd[0]) y = new Ctor(x); + return external ? finalise(y, pr, rm) : y; + } + k5 = mathfloor(x.e / LOG_BASE); + e5 = mathfloor(y.e / LOG_BASE); + xd = xd.slice(); + i5 = k5 - e5; + if (i5) { + if (i5 < 0) { + d5 = xd; + i5 = -i5; + len = yd.length; + } else { + d5 = yd; + e5 = k5; + len = xd.length; + } + k5 = Math.ceil(pr / LOG_BASE); + len = k5 > len ? k5 + 1 : len + 1; + if (i5 > len) { + i5 = len; + d5.length = 1; + } + d5.reverse(); + for (; i5--; ) d5.push(0); + d5.reverse(); + } + len = xd.length; + i5 = yd.length; + if (len - i5 < 0) { + i5 = len; + d5 = yd; + yd = xd; + xd = d5; + } + for (carry = 0; i5; ) { + carry = (xd[--i5] = xd[i5] + yd[i5] + carry) / BASE | 0; + xd[i5] %= BASE; + } + if (carry) { + xd.unshift(carry); + ++e5; + } + for (len = xd.length; xd[--len] == 0; ) xd.pop(); + y.d = xd; + y.e = getBase10Exponent(xd, e5); + return external ? finalise(y, pr, rm) : y; + }; + P.precision = P.sd = function(z2) { + var k5, x = this; + if (z2 !== void 0 && z2 !== !!z2 && z2 !== 1 && z2 !== 0) throw Error(invalidArgument + z2); + if (x.d) { + k5 = getPrecision(x.d); + if (z2 && x.e + 1 > k5) k5 = x.e + 1; + } else { + k5 = NaN; + } + return k5; + }; + P.round = function() { + var x = this, Ctor = x.constructor; + return finalise(new Ctor(x), x.e + 1, Ctor.rounding); + }; + P.sine = P.sin = function() { + var pr, rm, x = this, Ctor = x.constructor; + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + x = sine(Ctor, toLessThanHalfPi(Ctor, x)); + Ctor.precision = pr; + Ctor.rounding = rm; + return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true); + }; + P.squareRoot = P.sqrt = function() { + var m3, n3, sd, r5, rep, t, x = this, d5 = x.d, e5 = x.e, s2 = x.s, Ctor = x.constructor; + if (s2 !== 1 || !d5 || !d5[0]) { + return new Ctor(!s2 || s2 < 0 && (!d5 || d5[0]) ? NaN : d5 ? x : 1 / 0); + } + external = false; + s2 = Math.sqrt(+x); + if (s2 == 0 || s2 == 1 / 0) { + n3 = digitsToString(d5); + if ((n3.length + e5) % 2 == 0) n3 += "0"; + s2 = Math.sqrt(n3); + e5 = mathfloor((e5 + 1) / 2) - (e5 < 0 || e5 % 2); + if (s2 == 1 / 0) { + n3 = "5e" + e5; + } else { + n3 = s2.toExponential(); + n3 = n3.slice(0, n3.indexOf("e") + 1) + e5; + } + r5 = new Ctor(n3); + } else { + r5 = new Ctor(s2.toString()); + } + sd = (e5 = Ctor.precision) + 3; + for (; ; ) { + t = r5; + r5 = t.plus(divide(x, t, sd + 2, 1)).times(0.5); + if (digitsToString(t.d).slice(0, sd) === (n3 = digitsToString(r5.d)).slice(0, sd)) { + n3 = n3.slice(sd - 3, sd + 1); + if (n3 == "9999" || !rep && n3 == "4999") { + if (!rep) { + finalise(t, e5 + 1, 0); + if (t.times(t).eq(x)) { + r5 = t; + break; + } + } + sd += 4; + rep = 1; + } else { + if (!+n3 || !+n3.slice(1) && n3.charAt(0) == "5") { + finalise(r5, e5 + 1, 1); + m3 = !r5.times(r5).eq(x); + } + break; + } + } + } + external = true; + return finalise(r5, e5, Ctor.rounding, m3); + }; + P.tangent = P.tan = function() { + var pr, rm, x = this, Ctor = x.constructor; + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 10; + Ctor.rounding = 1; + x = x.sin(); + x.s = 1; + x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0); + Ctor.precision = pr; + Ctor.rounding = rm; + return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true); + }; + P.times = P.mul = function(y) { + var carry, e5, i5, k5, r5, rL, t, xdL, ydL, x = this, Ctor = x.constructor, xd = x.d, yd = (y = new Ctor(y)).d; + y.s *= x.s; + if (!xd || !xd[0] || !yd || !yd[0]) { + return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd ? NaN : !xd || !yd ? y.s / 0 : y.s * 0); + } + e5 = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE); + xdL = xd.length; + ydL = yd.length; + if (xdL < ydL) { + r5 = xd; + xd = yd; + yd = r5; + rL = xdL; + xdL = ydL; + ydL = rL; + } + r5 = []; + rL = xdL + ydL; + for (i5 = rL; i5--; ) r5.push(0); + for (i5 = ydL; --i5 >= 0; ) { + carry = 0; + for (k5 = xdL + i5; k5 > i5; ) { + t = r5[k5] + yd[i5] * xd[k5 - i5 - 1] + carry; + r5[k5--] = t % BASE | 0; + carry = t / BASE | 0; + } + r5[k5] = (r5[k5] + carry) % BASE | 0; + } + for (; !r5[--rL]; ) r5.pop(); + if (carry) ++e5; + else r5.shift(); + y.d = r5; + y.e = getBase10Exponent(r5, e5); + return external ? finalise(y, Ctor.precision, Ctor.rounding) : y; + }; + P.toBinary = function(sd, rm) { + return toStringBinary(this, 2, sd, rm); + }; + P.toDecimalPlaces = P.toDP = function(dp, rm) { + var x = this, Ctor = x.constructor; + x = new Ctor(x); + if (dp === void 0) return x; + checkInt32(dp, 0, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + return finalise(x, dp + x.e + 1, rm); + }; + P.toExponential = function(dp, rm) { + var str, x = this, Ctor = x.constructor; + if (dp === void 0) { + str = finiteToString(x, true); + } else { + checkInt32(dp, 0, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + x = finalise(new Ctor(x), dp + 1, rm); + str = finiteToString(x, true, dp + 1); + } + return x.isNeg() && !x.isZero() ? "-" + str : str; + }; + P.toFixed = function(dp, rm) { + var str, y, x = this, Ctor = x.constructor; + if (dp === void 0) { + str = finiteToString(x); + } else { + checkInt32(dp, 0, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + y = finalise(new Ctor(x), dp + x.e + 1, rm); + str = finiteToString(y, false, dp + y.e + 1); + } + return x.isNeg() && !x.isZero() ? "-" + str : str; + }; + P.toFraction = function(maxD) { + var d5, d0, d1, d22, e5, k5, n3, n05, n1, pr, q3, r5, x = this, xd = x.d, Ctor = x.constructor; + if (!xd) return new Ctor(x); + n1 = d0 = new Ctor(1); + d1 = n05 = new Ctor(0); + d5 = new Ctor(d1); + e5 = d5.e = getPrecision(xd) - x.e - 1; + k5 = e5 % LOG_BASE; + d5.d[0] = mathpow(10, k5 < 0 ? LOG_BASE + k5 : k5); + if (maxD == null) { + maxD = e5 > 0 ? d5 : n1; + } else { + n3 = new Ctor(maxD); + if (!n3.isInt() || n3.lt(n1)) throw Error(invalidArgument + n3); + maxD = n3.gt(d5) ? e5 > 0 ? d5 : n1 : n3; + } + external = false; + n3 = new Ctor(digitsToString(xd)); + pr = Ctor.precision; + Ctor.precision = e5 = xd.length * LOG_BASE * 2; + for (; ; ) { + q3 = divide(n3, d5, 0, 1, 1); + d22 = d0.plus(q3.times(d1)); + if (d22.cmp(maxD) == 1) break; + d0 = d1; + d1 = d22; + d22 = n1; + n1 = n05.plus(q3.times(d22)); + n05 = d22; + d22 = d5; + d5 = n3.minus(q3.times(d22)); + n3 = d22; + } + d22 = divide(maxD.minus(d0), d1, 0, 1, 1); + n05 = n05.plus(d22.times(n1)); + d0 = d0.plus(d22.times(d1)); + n05.s = n1.s = x.s; + r5 = divide(n1, d1, e5, 1).minus(x).abs().cmp(divide(n05, d0, e5, 1).minus(x).abs()) < 1 ? [n1, d1] : [n05, d0]; + Ctor.precision = pr; + external = true; + return r5; + }; + P.toHexadecimal = P.toHex = function(sd, rm) { + return toStringBinary(this, 16, sd, rm); + }; + P.toNearest = function(y, rm) { + var x = this, Ctor = x.constructor; + x = new Ctor(x); + if (y == null) { + if (!x.d) return x; + y = new Ctor(1); + rm = Ctor.rounding; + } else { + y = new Ctor(y); + if (rm === void 0) { + rm = Ctor.rounding; + } else { + checkInt32(rm, 0, 8); + } + if (!x.d) return y.s ? x : y; + if (!y.d) { + if (y.s) y.s = x.s; + return y; + } + } + if (y.d[0]) { + external = false; + x = divide(x, y, 0, rm, 1).times(y); + external = true; + finalise(x); + } else { + y.s = x.s; + x = y; + } + return x; + }; + P.toNumber = function() { + return +this; + }; + P.toOctal = function(sd, rm) { + return toStringBinary(this, 8, sd, rm); + }; + P.toPower = P.pow = function(y) { + var e5, k5, pr, r5, rm, s2, x = this, Ctor = x.constructor, yn = +(y = new Ctor(y)); + if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn)); + x = new Ctor(x); + if (x.eq(1)) return x; + pr = Ctor.precision; + rm = Ctor.rounding; + if (y.eq(1)) return finalise(x, pr, rm); + e5 = mathfloor(y.e / LOG_BASE); + if (e5 >= y.d.length - 1 && (k5 = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) { + r5 = intPow(Ctor, x, k5, pr); + return y.s < 0 ? new Ctor(1).div(r5) : finalise(r5, pr, rm); + } + s2 = x.s; + if (s2 < 0) { + if (e5 < y.d.length - 1) return new Ctor(NaN); + if ((y.d[e5] & 1) == 0) s2 = 1; + if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) { + x.s = s2; + return x; + } + } + k5 = mathpow(+x, yn); + e5 = k5 == 0 || !isFinite(k5) ? mathfloor(yn * (Math.log("0." + digitsToString(x.d)) / Math.LN10 + x.e + 1)) : new Ctor(k5 + "").e; + if (e5 > Ctor.maxE + 1 || e5 < Ctor.minE - 1) return new Ctor(e5 > 0 ? s2 / 0 : 0); + external = false; + Ctor.rounding = x.s = 1; + k5 = Math.min(12, (e5 + "").length); + r5 = naturalExponential(y.times(naturalLogarithm(x, pr + k5)), pr); + if (r5.d) { + r5 = finalise(r5, pr + 5, 1); + if (checkRoundingDigits(r5.d, pr, rm)) { + e5 = pr + 10; + r5 = finalise(naturalExponential(y.times(naturalLogarithm(x, e5 + k5)), e5), e5 + 5, 1); + if (+digitsToString(r5.d).slice(pr + 1, pr + 15) + 1 == 1e14) { + r5 = finalise(r5, pr + 1, 0); + } + } + } + r5.s = s2; + external = true; + Ctor.rounding = rm; + return finalise(r5, pr, rm); + }; + P.toPrecision = function(sd, rm) { + var str, x = this, Ctor = x.constructor; + if (sd === void 0) { + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + } else { + checkInt32(sd, 1, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + x = finalise(new Ctor(x), sd, rm); + str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd); + } + return x.isNeg() && !x.isZero() ? "-" + str : str; + }; + P.toSignificantDigits = P.toSD = function(sd, rm) { + var x = this, Ctor = x.constructor; + if (sd === void 0) { + sd = Ctor.precision; + rm = Ctor.rounding; + } else { + checkInt32(sd, 1, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } + return finalise(new Ctor(x), sd, rm); + }; + P.toString = function() { + var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + return x.isNeg() && !x.isZero() ? "-" + str : str; + }; + P.truncated = P.trunc = function() { + return finalise(new this.constructor(this), this.e + 1, 1); + }; + P.valueOf = P.toJSON = function() { + var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + return x.isNeg() ? "-" + str : str; + }; + function digitsToString(d5) { + var i5, k5, ws, indexOfLastWord = d5.length - 1, str = "", w = d5[0]; + if (indexOfLastWord > 0) { + str += w; + for (i5 = 1; i5 < indexOfLastWord; i5++) { + ws = d5[i5] + ""; + k5 = LOG_BASE - ws.length; + if (k5) str += getZeroString(k5); + str += ws; + } + w = d5[i5]; + ws = w + ""; + k5 = LOG_BASE - ws.length; + if (k5) str += getZeroString(k5); + } else if (w === 0) { + return "0"; + } + for (; w % 10 === 0; ) w /= 10; + return str + w; + } + __name(digitsToString, "digitsToString"); + function checkInt32(i5, min2, max2) { + if (i5 !== ~~i5 || i5 < min2 || i5 > max2) { + throw Error(invalidArgument + i5); + } + } + __name(checkInt32, "checkInt32"); + function checkRoundingDigits(d5, i5, rm, repeating) { + var di, k5, r5, rd; + for (k5 = d5[0]; k5 >= 10; k5 /= 10) --i5; + if (--i5 < 0) { + i5 += LOG_BASE; + di = 0; + } else { + di = Math.ceil((i5 + 1) / LOG_BASE); + i5 %= LOG_BASE; + } + k5 = mathpow(10, LOG_BASE - i5); + rd = d5[di] % k5 | 0; + if (repeating == null) { + if (i5 < 3) { + if (i5 == 0) rd = rd / 100 | 0; + else if (i5 == 1) rd = rd / 10 | 0; + r5 = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 5e4 || rd == 0; + } else { + r5 = (rm < 4 && rd + 1 == k5 || rm > 3 && rd + 1 == k5 / 2) && (d5[di + 1] / k5 / 100 | 0) == mathpow(10, i5 - 2) - 1 || (rd == k5 / 2 || rd == 0) && (d5[di + 1] / k5 / 100 | 0) == 0; + } + } else { + if (i5 < 4) { + if (i5 == 0) rd = rd / 1e3 | 0; + else if (i5 == 1) rd = rd / 100 | 0; + else if (i5 == 2) rd = rd / 10 | 0; + r5 = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999; + } else { + r5 = ((repeating || rm < 4) && rd + 1 == k5 || !repeating && rm > 3 && rd + 1 == k5 / 2) && (d5[di + 1] / k5 / 1e3 | 0) == mathpow(10, i5 - 3) - 1; + } + } + return r5; + } + __name(checkRoundingDigits, "checkRoundingDigits"); + function convertBase(str, baseIn, baseOut) { + var j5, arr = [0], arrL, i5 = 0, strL = str.length; + for (; i5 < strL; ) { + for (arrL = arr.length; arrL--; ) arr[arrL] *= baseIn; + arr[0] += NUMERALS.indexOf(str.charAt(i5++)); + for (j5 = 0; j5 < arr.length; j5++) { + if (arr[j5] > baseOut - 1) { + if (arr[j5 + 1] === void 0) arr[j5 + 1] = 0; + arr[j5 + 1] += arr[j5] / baseOut | 0; + arr[j5] %= baseOut; + } + } + } + return arr.reverse(); + } + __name(convertBase, "convertBase"); + function cosine(Ctor, x) { + var k5, len, y; + if (x.isZero()) return x; + len = x.d.length; + if (len < 32) { + k5 = Math.ceil(len / 3); + y = (1 / tinyPow(4, k5)).toString(); + } else { + k5 = 16; + y = "2.3283064365386962890625e-10"; + } + Ctor.precision += k5; + x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1)); + for (var i5 = k5; i5--; ) { + var cos2x = x.times(x); + x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1); + } + Ctor.precision -= k5; + return x; + } + __name(cosine, "cosine"); + var divide = /* @__PURE__ */ (function() { + function multiplyInteger(x, k5, base) { + var temp, carry = 0, i5 = x.length; + for (x = x.slice(); i5--; ) { + temp = x[i5] * k5 + carry; + x[i5] = temp % base | 0; + carry = temp / base | 0; + } + if (carry) x.unshift(carry); + return x; + } + __name(multiplyInteger, "multiplyInteger"); + function compare(a5, b5, aL, bL) { + var i5, r5; + if (aL != bL) { + r5 = aL > bL ? 1 : -1; + } else { + for (i5 = r5 = 0; i5 < aL; i5++) { + if (a5[i5] != b5[i5]) { + r5 = a5[i5] > b5[i5] ? 1 : -1; + break; + } + } + } + return r5; + } + __name(compare, "compare"); + function subtract(a5, b5, aL, base) { + var i5 = 0; + for (; aL--; ) { + a5[aL] -= i5; + i5 = a5[aL] < b5[aL] ? 1 : 0; + a5[aL] = i5 * base + a5[aL] - b5[aL]; + } + for (; !a5[0] && a5.length > 1; ) a5.shift(); + } + __name(subtract, "subtract"); + return function(x, y, pr, rm, dp, base) { + var cmp, e5, i5, k5, logBase, more, prod, prodL, q3, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz, Ctor = x.constructor, sign22 = x.s == y.s ? 1 : -1, xd = x.d, yd = y.d; + if (!xd || !xd[0] || !yd || !yd[0]) { + return new Ctor( + // Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : ( + // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0. + xd && xd[0] == 0 || !yd ? sign22 * 0 : sign22 / 0 + ) + ); + } + if (base) { + logBase = 1; + e5 = x.e - y.e; + } else { + base = BASE; + logBase = LOG_BASE; + e5 = mathfloor(x.e / logBase) - mathfloor(y.e / logBase); + } + yL = yd.length; + xL = xd.length; + q3 = new Ctor(sign22); + qd = q3.d = []; + for (i5 = 0; yd[i5] == (xd[i5] || 0); i5++) ; + if (yd[i5] > (xd[i5] || 0)) e5--; + if (pr == null) { + sd = pr = Ctor.precision; + rm = Ctor.rounding; + } else if (dp) { + sd = pr + (x.e - y.e) + 1; + } else { + sd = pr; + } + if (sd < 0) { + qd.push(1); + more = true; + } else { + sd = sd / logBase + 2 | 0; + i5 = 0; + if (yL == 1) { + k5 = 0; + yd = yd[0]; + sd++; + for (; (i5 < xL || k5) && sd--; i5++) { + t = k5 * base + (xd[i5] || 0); + qd[i5] = t / yd | 0; + k5 = t % yd | 0; + } + more = k5 || i5 < xL; + } else { + k5 = base / (yd[0] + 1) | 0; + if (k5 > 1) { + yd = multiplyInteger(yd, k5, base); + xd = multiplyInteger(xd, k5, base); + yL = yd.length; + xL = xd.length; + } + xi = yL; + rem = xd.slice(0, yL); + remL = rem.length; + for (; remL < yL; ) rem[remL++] = 0; + yz = yd.slice(); + yz.unshift(0); + yd0 = yd[0]; + if (yd[1] >= base / 2) ++yd0; + do { + k5 = 0; + cmp = compare(yd, rem, yL, remL); + if (cmp < 0) { + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + k5 = rem0 / yd0 | 0; + if (k5 > 1) { + if (k5 >= base) k5 = base - 1; + prod = multiplyInteger(yd, k5, base); + prodL = prod.length; + remL = rem.length; + cmp = compare(prod, rem, prodL, remL); + if (cmp == 1) { + k5--; + subtract(prod, yL < prodL ? yz : yd, prodL, base); + } + } else { + if (k5 == 0) cmp = k5 = 1; + prod = yd.slice(); + } + prodL = prod.length; + if (prodL < remL) prod.unshift(0); + subtract(rem, prod, remL, base); + if (cmp == -1) { + remL = rem.length; + cmp = compare(yd, rem, yL, remL); + if (cmp < 1) { + k5++; + subtract(rem, yL < remL ? yz : yd, remL, base); + } + } + remL = rem.length; + } else if (cmp === 0) { + k5++; + rem = [0]; + } + qd[i5++] = k5; + if (cmp && rem[0]) { + rem[remL++] = xd[xi] || 0; + } else { + rem = [xd[xi]]; + remL = 1; + } + } while ((xi++ < xL || rem[0] !== void 0) && sd--); + more = rem[0] !== void 0; + } + if (!qd[0]) qd.shift(); + } + if (logBase == 1) { + q3.e = e5; + inexact = more; + } else { + for (i5 = 1, k5 = qd[0]; k5 >= 10; k5 /= 10) i5++; + q3.e = i5 + e5 * logBase - 1; + finalise(q3, dp ? pr + q3.e + 1 : pr, rm, more); + } + return q3; + }; + })(); + function finalise(x, sd, rm, isTruncated) { + var digits, i5, j5, k5, rd, roundUp, w, xd, xdi, Ctor = x.constructor; + out: if (sd != null) { + xd = x.d; + if (!xd) return x; + for (digits = 1, k5 = xd[0]; k5 >= 10; k5 /= 10) digits++; + i5 = sd - digits; + if (i5 < 0) { + i5 += LOG_BASE; + j5 = sd; + w = xd[xdi = 0]; + rd = w / mathpow(10, digits - j5 - 1) % 10 | 0; + } else { + xdi = Math.ceil((i5 + 1) / LOG_BASE); + k5 = xd.length; + if (xdi >= k5) { + if (isTruncated) { + for (; k5++ <= xdi; ) xd.push(0); + w = rd = 0; + digits = 1; + i5 %= LOG_BASE; + j5 = i5 - LOG_BASE + 1; + } else { + break out; + } + } else { + w = k5 = xd[xdi]; + for (digits = 1; k5 >= 10; k5 /= 10) digits++; + i5 %= LOG_BASE; + j5 = i5 - LOG_BASE + digits; + rd = j5 < 0 ? 0 : w / mathpow(10, digits - j5 - 1) % 10 | 0; + } + } + isTruncated = isTruncated || sd < 0 || xd[xdi + 1] !== void 0 || (j5 < 0 ? w : w % mathpow(10, digits - j5 - 1)); + roundUp = rm < 4 ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && // Check whether the digit to the left of the rounding digit is odd. + (i5 > 0 ? j5 > 0 ? w / mathpow(10, digits - j5) : 0 : xd[xdi - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7)); + if (sd < 1 || !xd[0]) { + xd.length = 0; + if (roundUp) { + sd -= x.e + 1; + xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE); + x.e = -sd || 0; + } else { + xd[0] = x.e = 0; + } + return x; + } + if (i5 == 0) { + xd.length = xdi; + k5 = 1; + xdi--; + } else { + xd.length = xdi + 1; + k5 = mathpow(10, LOG_BASE - i5); + xd[xdi] = j5 > 0 ? (w / mathpow(10, digits - j5) % mathpow(10, j5) | 0) * k5 : 0; + } + if (roundUp) { + for (; ; ) { + if (xdi == 0) { + for (i5 = 1, j5 = xd[0]; j5 >= 10; j5 /= 10) i5++; + j5 = xd[0] += k5; + for (k5 = 1; j5 >= 10; j5 /= 10) k5++; + if (i5 != k5) { + x.e++; + if (xd[0] == BASE) xd[0] = 1; + } + break; + } else { + xd[xdi] += k5; + if (xd[xdi] != BASE) break; + xd[xdi--] = 0; + k5 = 1; + } + } + } + for (i5 = xd.length; xd[--i5] === 0; ) xd.pop(); + } + if (external) { + if (x.e > Ctor.maxE) { + x.d = null; + x.e = NaN; + } else if (x.e < Ctor.minE) { + x.e = 0; + x.d = [0]; + } + } + return x; + } + __name(finalise, "finalise"); + function finiteToString(x, isExp, sd) { + if (!x.isFinite()) return nonFiniteToString(x); + var k5, e5 = x.e, str = digitsToString(x.d), len = str.length; + if (isExp) { + if (sd && (k5 = sd - len) > 0) { + str = str.charAt(0) + "." + str.slice(1) + getZeroString(k5); + } else if (len > 1) { + str = str.charAt(0) + "." + str.slice(1); + } + str = str + (x.e < 0 ? "e" : "e+") + x.e; + } else if (e5 < 0) { + str = "0." + getZeroString(-e5 - 1) + str; + if (sd && (k5 = sd - len) > 0) str += getZeroString(k5); + } else if (e5 >= len) { + str += getZeroString(e5 + 1 - len); + if (sd && (k5 = sd - e5 - 1) > 0) str = str + "." + getZeroString(k5); + } else { + if ((k5 = e5 + 1) < len) str = str.slice(0, k5) + "." + str.slice(k5); + if (sd && (k5 = sd - len) > 0) { + if (e5 + 1 === len) str += "."; + str += getZeroString(k5); + } + } + return str; + } + __name(finiteToString, "finiteToString"); + function getBase10Exponent(digits, e5) { + var w = digits[0]; + for (e5 *= LOG_BASE; w >= 10; w /= 10) e5++; + return e5; + } + __name(getBase10Exponent, "getBase10Exponent"); + function getLn10(Ctor, sd, pr) { + if (sd > LN10_PRECISION) { + external = true; + if (pr) Ctor.precision = pr; + throw Error(precisionLimitExceeded); + } + return finalise(new Ctor(LN10), sd, 1, true); + } + __name(getLn10, "getLn10"); + function getPi(Ctor, sd, rm) { + if (sd > PI_PRECISION) throw Error(precisionLimitExceeded); + return finalise(new Ctor(PI), sd, rm, true); + } + __name(getPi, "getPi"); + function getPrecision(digits) { + var w = digits.length - 1, len = w * LOG_BASE + 1; + w = digits[w]; + if (w) { + for (; w % 10 == 0; w /= 10) len--; + for (w = digits[0]; w >= 10; w /= 10) len++; + } + return len; + } + __name(getPrecision, "getPrecision"); + function getZeroString(k5) { + var zs = ""; + for (; k5--; ) zs += "0"; + return zs; + } + __name(getZeroString, "getZeroString"); + function intPow(Ctor, x, n3, pr) { + var isTruncated, r5 = new Ctor(1), k5 = Math.ceil(pr / LOG_BASE + 4); + external = false; + for (; ; ) { + if (n3 % 2) { + r5 = r5.times(x); + if (truncate(r5.d, k5)) isTruncated = true; + } + n3 = mathfloor(n3 / 2); + if (n3 === 0) { + n3 = r5.d.length - 1; + if (isTruncated && r5.d[n3] === 0) ++r5.d[n3]; + break; + } + x = x.times(x); + truncate(x.d, k5); + } + external = true; + return r5; + } + __name(intPow, "intPow"); + function isOdd(n3) { + return n3.d[n3.d.length - 1] & 1; + } + __name(isOdd, "isOdd"); + function maxOrMin(Ctor, args, n3) { + var k5, y, x = new Ctor(args[0]), i5 = 0; + for (; ++i5 < args.length; ) { + y = new Ctor(args[i5]); + if (!y.s) { + x = y; + break; + } + k5 = x.cmp(y); + if (k5 === n3 || k5 === 0 && x.s === n3) { + x = y; + } + } + return x; + } + __name(maxOrMin, "maxOrMin"); + function naturalExponential(x, sd) { + var denominator, guard, j5, pow2, sum2, t, wpr, rep = 0, i5 = 0, k5 = 0, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision; + if (!x.d || !x.d[0] || x.e > 17) { + return new Ctor(x.d ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 : x.s ? x.s < 0 ? 0 : x : 0 / 0); + } + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + t = new Ctor(0.03125); + while (x.e > -2) { + x = x.times(t); + k5 += 5; + } + guard = Math.log(mathpow(2, k5)) / Math.LN10 * 2 + 5 | 0; + wpr += guard; + denominator = pow2 = sum2 = new Ctor(1); + Ctor.precision = wpr; + for (; ; ) { + pow2 = finalise(pow2.times(x), wpr, 1); + denominator = denominator.times(++i5); + t = sum2.plus(divide(pow2, denominator, wpr, 1)); + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum2.d).slice(0, wpr)) { + j5 = k5; + while (j5--) sum2 = finalise(sum2.times(sum2), wpr, 1); + if (sd == null) { + if (rep < 3 && checkRoundingDigits(sum2.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += 10; + denominator = pow2 = t = new Ctor(1); + i5 = 0; + rep++; + } else { + return finalise(sum2, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum2; + } + } + sum2 = t; + } + } + __name(naturalExponential, "naturalExponential"); + function naturalLogarithm(y, sd) { + var c5, c0, denominator, e5, numerator, rep, sum2, t, wpr, x1, x2, n3 = 1, guard = 10, x = y, xd = x.d, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision; + if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) { + return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x); + } + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + Ctor.precision = wpr += guard; + c5 = digitsToString(xd); + c0 = c5.charAt(0); + if (Math.abs(e5 = x.e) < 15e14) { + while (c0 < 7 && c0 != 1 || c0 == 1 && c5.charAt(1) > 3) { + x = x.times(y); + c5 = digitsToString(x.d); + c0 = c5.charAt(0); + n3++; + } + e5 = x.e; + if (c0 > 1) { + x = new Ctor("0." + c5); + e5++; + } else { + x = new Ctor(c0 + "." + c5.slice(1)); + } + } else { + t = getLn10(Ctor, wpr + 2, pr).times(e5 + ""); + x = naturalLogarithm(new Ctor(c0 + "." + c5.slice(1)), wpr - guard).plus(t); + Ctor.precision = pr; + return sd == null ? finalise(x, pr, rm, external = true) : x; + } + x1 = x; + sum2 = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = 3; + for (; ; ) { + numerator = finalise(numerator.times(x2), wpr, 1); + t = sum2.plus(divide(numerator, new Ctor(denominator), wpr, 1)); + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum2.d).slice(0, wpr)) { + sum2 = sum2.times(2); + if (e5 !== 0) sum2 = sum2.plus(getLn10(Ctor, wpr + 2, pr).times(e5 + "")); + sum2 = divide(sum2, new Ctor(n3), wpr, 1); + if (sd == null) { + if (checkRoundingDigits(sum2.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += guard; + t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = rep = 1; + } else { + return finalise(sum2, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum2; + } + } + sum2 = t; + denominator += 2; + } + } + __name(naturalLogarithm, "naturalLogarithm"); + function nonFiniteToString(x) { + return String(x.s * x.s / 0); + } + __name(nonFiniteToString, "nonFiniteToString"); + function parseDecimal(x, str) { + var e5, i5, len; + if ((e5 = str.indexOf(".")) > -1) str = str.replace(".", ""); + if ((i5 = str.search(/e/i)) > 0) { + if (e5 < 0) e5 = i5; + e5 += +str.slice(i5 + 1); + str = str.substring(0, i5); + } else if (e5 < 0) { + e5 = str.length; + } + for (i5 = 0; str.charCodeAt(i5) === 48; i5++) ; + for (len = str.length; str.charCodeAt(len - 1) === 48; --len) ; + str = str.slice(i5, len); + if (str) { + len -= i5; + x.e = e5 = e5 - i5 - 1; + x.d = []; + i5 = (e5 + 1) % LOG_BASE; + if (e5 < 0) i5 += LOG_BASE; + if (i5 < len) { + if (i5) x.d.push(+str.slice(0, i5)); + for (len -= LOG_BASE; i5 < len; ) x.d.push(+str.slice(i5, i5 += LOG_BASE)); + str = str.slice(i5); + i5 = LOG_BASE - str.length; + } else { + i5 -= len; + } + for (; i5--; ) str += "0"; + x.d.push(+str); + if (external) { + if (x.e > x.constructor.maxE) { + x.d = null; + x.e = NaN; + } else if (x.e < x.constructor.minE) { + x.e = 0; + x.d = [0]; + } + } + } else { + x.e = 0; + x.d = [0]; + } + return x; + } + __name(parseDecimal, "parseDecimal"); + function parseOther(x, str) { + var base, Ctor, divisor, i5, isFloat, len, p3, xd, xe; + if (str.indexOf("_") > -1) { + str = str.replace(/(\d)_(?=\d)/g, "$1"); + if (isDecimal.test(str)) return parseDecimal(x, str); + } else if (str === "Infinity" || str === "NaN") { + if (!+str) x.s = NaN; + x.e = NaN; + x.d = null; + return x; + } + if (isHex.test(str)) { + base = 16; + str = str.toLowerCase(); + } else if (isBinary.test(str)) { + base = 2; + } else if (isOctal.test(str)) { + base = 8; + } else { + throw Error(invalidArgument + str); + } + i5 = str.search(/p/i); + if (i5 > 0) { + p3 = +str.slice(i5 + 1); + str = str.substring(2, i5); + } else { + str = str.slice(2); + } + i5 = str.indexOf("."); + isFloat = i5 >= 0; + Ctor = x.constructor; + if (isFloat) { + str = str.replace(".", ""); + len = str.length; + i5 = len - i5; + divisor = intPow(Ctor, new Ctor(base), i5, i5 * 2); + } + xd = convertBase(str, base, BASE); + xe = xd.length - 1; + for (i5 = xe; xd[i5] === 0; --i5) xd.pop(); + if (i5 < 0) return new Ctor(x.s * 0); + x.e = getBase10Exponent(xd, xe); + x.d = xd; + external = false; + if (isFloat) x = divide(x, divisor, len * 4); + if (p3) x = x.times(Math.abs(p3) < 54 ? mathpow(2, p3) : Decimal4.pow(2, p3)); + external = true; + return x; + } + __name(parseOther, "parseOther"); + function sine(Ctor, x) { + var k5, len = x.d.length; + if (len < 3) { + return x.isZero() ? x : taylorSeries(Ctor, 2, x, x); + } + k5 = 1.4 * Math.sqrt(len); + k5 = k5 > 16 ? 16 : k5 | 0; + x = x.times(1 / tinyPow(5, k5)); + x = taylorSeries(Ctor, 2, x, x); + var sin2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20); + for (; k5--; ) { + sin2_x = x.times(x); + x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20)))); + } + return x; + } + __name(sine, "sine"); + function taylorSeries(Ctor, n3, x, y, isHyperbolic) { + var j5, t, u, x2, i5 = 1, pr = Ctor.precision, k5 = Math.ceil(pr / LOG_BASE); + external = false; + x2 = x.times(x); + u = new Ctor(y); + for (; ; ) { + t = divide(u.times(x2), new Ctor(n3++ * n3++), pr, 1); + u = isHyperbolic ? y.plus(t) : y.minus(t); + y = divide(t.times(x2), new Ctor(n3++ * n3++), pr, 1); + t = u.plus(y); + if (t.d[k5] !== void 0) { + for (j5 = k5; t.d[j5] === u.d[j5] && j5--; ) ; + if (j5 == -1) break; + } + j5 = u; + u = y; + y = t; + t = j5; + i5++; + } + external = true; + t.d.length = k5 + 1; + return t; + } + __name(taylorSeries, "taylorSeries"); + function tinyPow(b5, e5) { + var n3 = b5; + while (--e5) n3 *= b5; + return n3; + } + __name(tinyPow, "tinyPow"); + function toLessThanHalfPi(Ctor, x) { + var t, isNeg = x.s < 0, pi = getPi(Ctor, Ctor.precision, 1), halfPi = pi.times(0.5); + x = x.abs(); + if (x.lte(halfPi)) { + quadrant = isNeg ? 4 : 1; + return x; + } + t = x.divToInt(pi); + if (t.isZero()) { + quadrant = isNeg ? 3 : 2; + } else { + x = x.minus(t.times(pi)); + if (x.lte(halfPi)) { + quadrant = isOdd(t) ? isNeg ? 2 : 3 : isNeg ? 4 : 1; + return x; + } + quadrant = isOdd(t) ? isNeg ? 1 : 4 : isNeg ? 3 : 2; + } + return x.minus(pi).abs(); + } + __name(toLessThanHalfPi, "toLessThanHalfPi"); + function toStringBinary(x, baseOut, sd, rm) { + var base, e5, i5, k5, len, roundUp, str, xd, y, Ctor = x.constructor, isExp = sd !== void 0; + if (isExp) { + checkInt32(sd, 1, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } else { + sd = Ctor.precision; + rm = Ctor.rounding; + } + if (!x.isFinite()) { + str = nonFiniteToString(x); + } else { + str = finiteToString(x); + i5 = str.indexOf("."); + if (isExp) { + base = 2; + if (baseOut == 16) { + sd = sd * 4 - 3; + } else if (baseOut == 8) { + sd = sd * 3 - 2; + } + } else { + base = baseOut; + } + if (i5 >= 0) { + str = str.replace(".", ""); + y = new Ctor(1); + y.e = str.length - i5; + y.d = convertBase(finiteToString(y), 10, base); + y.e = y.d.length; + } + xd = convertBase(str, 10, base); + e5 = len = xd.length; + for (; xd[--len] == 0; ) xd.pop(); + if (!xd[0]) { + str = isExp ? "0p+0" : "0"; + } else { + if (i5 < 0) { + e5--; + } else { + x = new Ctor(x); + x.d = xd; + x.e = e5; + x = divide(x, y, sd, rm, 0, base); + xd = x.d; + e5 = x.e; + roundUp = inexact; + } + i5 = xd[sd]; + k5 = base / 2; + roundUp = roundUp || xd[sd + 1] !== void 0; + roundUp = rm < 4 ? (i5 !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) : i5 > k5 || i5 === k5 && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || rm === (x.s < 0 ? 8 : 7)); + xd.length = sd; + if (roundUp) { + for (; ++xd[--sd] > base - 1; ) { + xd[sd] = 0; + if (!sd) { + ++e5; + xd.unshift(1); + } + } + } + for (len = xd.length; !xd[len - 1]; --len) ; + for (i5 = 0, str = ""; i5 < len; i5++) str += NUMERALS.charAt(xd[i5]); + if (isExp) { + if (len > 1) { + if (baseOut == 16 || baseOut == 8) { + i5 = baseOut == 16 ? 4 : 3; + for (--len; len % i5; len++) str += "0"; + xd = convertBase(str, base, baseOut); + for (len = xd.length; !xd[len - 1]; --len) ; + for (i5 = 1, str = "1."; i5 < len; i5++) str += NUMERALS.charAt(xd[i5]); + } else { + str = str.charAt(0) + "." + str.slice(1); + } + } + str = str + (e5 < 0 ? "p" : "p+") + e5; + } else if (e5 < 0) { + for (; ++e5; ) str = "0" + str; + str = "0." + str; + } else { + if (++e5 > len) for (e5 -= len; e5--; ) str += "0"; + else if (e5 < len) str = str.slice(0, e5) + "." + str.slice(e5); + } + } + str = (baseOut == 16 ? "0x" : baseOut == 2 ? "0b" : baseOut == 8 ? "0o" : "") + str; + } + return x.s < 0 ? "-" + str : str; + } + __name(toStringBinary, "toStringBinary"); + function truncate(arr, len) { + if (arr.length > len) { + arr.length = len; + return true; + } + } + __name(truncate, "truncate"); + function abs(x) { + return new this(x).abs(); + } + __name(abs, "abs"); + function acos(x) { + return new this(x).acos(); + } + __name(acos, "acos"); + function acosh(x) { + return new this(x).acosh(); + } + __name(acosh, "acosh"); + function add(x, y) { + return new this(x).plus(y); + } + __name(add, "add"); + function asin(x) { + return new this(x).asin(); + } + __name(asin, "asin"); + function asinh(x) { + return new this(x).asinh(); + } + __name(asinh, "asinh"); + function atan(x) { + return new this(x).atan(); + } + __name(atan, "atan"); + function atanh(x) { + return new this(x).atanh(); + } + __name(atanh, "atanh"); + function atan2(y, x) { + y = new this(y); + x = new this(x); + var r5, pr = this.precision, rm = this.rounding, wpr = pr + 4; + if (!y.s || !x.s) { + r5 = new this(NaN); + } else if (!y.d && !x.d) { + r5 = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75); + r5.s = y.s; + } else if (!x.d || y.isZero()) { + r5 = x.s < 0 ? getPi(this, pr, rm) : new this(0); + r5.s = y.s; + } else if (!y.d || x.isZero()) { + r5 = getPi(this, wpr, 1).times(0.5); + r5.s = y.s; + } else if (x.s < 0) { + this.precision = wpr; + this.rounding = 1; + r5 = this.atan(divide(y, x, wpr, 1)); + x = getPi(this, wpr, 1); + this.precision = pr; + this.rounding = rm; + r5 = y.s < 0 ? r5.minus(x) : r5.plus(x); + } else { + r5 = this.atan(divide(y, x, wpr, 1)); + } + return r5; + } + __name(atan2, "atan2"); + function cbrt(x) { + return new this(x).cbrt(); + } + __name(cbrt, "cbrt"); + function ceil(x) { + return finalise(x = new this(x), x.e + 1, 2); + } + __name(ceil, "ceil"); + function clamp(x, min2, max2) { + return new this(x).clamp(min2, max2); + } + __name(clamp, "clamp"); + function config3(obj) { + if (!obj || typeof obj !== "object") throw Error(decimalError + "Object expected"); + var i5, p3, v, useDefaults = obj.defaults === true, ps = [ + "precision", + 1, + MAX_DIGITS, + "rounding", + 0, + 8, + "toExpNeg", + -EXP_LIMIT, + 0, + "toExpPos", + 0, + EXP_LIMIT, + "maxE", + 0, + EXP_LIMIT, + "minE", + -EXP_LIMIT, + 0, + "modulo", + 0, + 9 + ]; + for (i5 = 0; i5 < ps.length; i5 += 3) { + if (p3 = ps[i5], useDefaults) this[p3] = DEFAULTS[p3]; + if ((v = obj[p3]) !== void 0) { + if (mathfloor(v) === v && v >= ps[i5 + 1] && v <= ps[i5 + 2]) this[p3] = v; + else throw Error(invalidArgument + p3 + ": " + v); + } + } + if (p3 = "crypto", useDefaults) this[p3] = DEFAULTS[p3]; + if ((v = obj[p3]) !== void 0) { + if (v === true || v === false || v === 0 || v === 1) { + if (v) { + if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) { + this[p3] = true; + } else { + throw Error(cryptoUnavailable); + } + } else { + this[p3] = false; + } + } else { + throw Error(invalidArgument + p3 + ": " + v); + } + } + return this; + } + __name(config3, "config"); + function cos(x) { + return new this(x).cos(); + } + __name(cos, "cos"); + function cosh(x) { + return new this(x).cosh(); + } + __name(cosh, "cosh"); + function clone2(obj) { + var i5, p3, ps; + function Decimal22(v) { + var e5, i22, t, x = this; + if (!(x instanceof Decimal22)) return new Decimal22(v); + x.constructor = Decimal22; + if (isDecimalInstance(v)) { + x.s = v.s; + if (external) { + if (!v.d || v.e > Decimal22.maxE) { + x.e = NaN; + x.d = null; + } else if (v.e < Decimal22.minE) { + x.e = 0; + x.d = [0]; + } else { + x.e = v.e; + x.d = v.d.slice(); + } + } else { + x.e = v.e; + x.d = v.d ? v.d.slice() : v.d; + } + return; + } + t = typeof v; + if (t === "number") { + if (v === 0) { + x.s = 1 / v < 0 ? -1 : 1; + x.e = 0; + x.d = [0]; + return; + } + if (v < 0) { + v = -v; + x.s = -1; + } else { + x.s = 1; + } + if (v === ~~v && v < 1e7) { + for (e5 = 0, i22 = v; i22 >= 10; i22 /= 10) e5++; + if (external) { + if (e5 > Decimal22.maxE) { + x.e = NaN; + x.d = null; + } else if (e5 < Decimal22.minE) { + x.e = 0; + x.d = [0]; + } else { + x.e = e5; + x.d = [v]; + } + } else { + x.e = e5; + x.d = [v]; + } + return; + } + if (v * 0 !== 0) { + if (!v) x.s = NaN; + x.e = NaN; + x.d = null; + return; + } + return parseDecimal(x, v.toString()); + } + if (t === "string") { + if ((i22 = v.charCodeAt(0)) === 45) { + v = v.slice(1); + x.s = -1; + } else { + if (i22 === 43) v = v.slice(1); + x.s = 1; + } + return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); + } + if (t === "bigint") { + if (v < 0) { + v = -v; + x.s = -1; + } else { + x.s = 1; + } + return parseDecimal(x, v.toString()); + } + throw Error(invalidArgument + v); + } + __name(Decimal22, "Decimal2"); + Decimal22.prototype = P; + Decimal22.ROUND_UP = 0; + Decimal22.ROUND_DOWN = 1; + Decimal22.ROUND_CEIL = 2; + Decimal22.ROUND_FLOOR = 3; + Decimal22.ROUND_HALF_UP = 4; + Decimal22.ROUND_HALF_DOWN = 5; + Decimal22.ROUND_HALF_EVEN = 6; + Decimal22.ROUND_HALF_CEIL = 7; + Decimal22.ROUND_HALF_FLOOR = 8; + Decimal22.EUCLID = 9; + Decimal22.config = Decimal22.set = config3; + Decimal22.clone = clone2; + Decimal22.isDecimal = isDecimalInstance; + Decimal22.abs = abs; + Decimal22.acos = acos; + Decimal22.acosh = acosh; + Decimal22.add = add; + Decimal22.asin = asin; + Decimal22.asinh = asinh; + Decimal22.atan = atan; + Decimal22.atanh = atanh; + Decimal22.atan2 = atan2; + Decimal22.cbrt = cbrt; + Decimal22.ceil = ceil; + Decimal22.clamp = clamp; + Decimal22.cos = cos; + Decimal22.cosh = cosh; + Decimal22.div = div; + Decimal22.exp = exp; + Decimal22.floor = floor; + Decimal22.hypot = hypot; + Decimal22.ln = ln; + Decimal22.log = log; + Decimal22.log10 = log10; + Decimal22.log2 = log2; + Decimal22.max = max; + Decimal22.min = min; + Decimal22.mod = mod; + Decimal22.mul = mul; + Decimal22.pow = pow; + Decimal22.random = random; + Decimal22.round = round; + Decimal22.sign = sign2; + Decimal22.sin = sin; + Decimal22.sinh = sinh; + Decimal22.sqrt = sqrt; + Decimal22.sub = sub; + Decimal22.sum = sum; + Decimal22.tan = tan; + Decimal22.tanh = tanh; + Decimal22.trunc = trunc; + if (obj === void 0) obj = {}; + if (obj) { + if (obj.defaults !== true) { + ps = ["precision", "rounding", "toExpNeg", "toExpPos", "maxE", "minE", "modulo", "crypto"]; + for (i5 = 0; i5 < ps.length; ) if (!obj.hasOwnProperty(p3 = ps[i5++])) obj[p3] = this[p3]; + } + } + Decimal22.config(obj); + return Decimal22; + } + __name(clone2, "clone"); + function div(x, y) { + return new this(x).div(y); + } + __name(div, "div"); + function exp(x) { + return new this(x).exp(); + } + __name(exp, "exp"); + function floor(x) { + return finalise(x = new this(x), x.e + 1, 3); + } + __name(floor, "floor"); + function hypot() { + var i5, n3, t = new this(0); + external = false; + for (i5 = 0; i5 < arguments.length; ) { + n3 = new this(arguments[i5++]); + if (!n3.d) { + if (n3.s) { + external = true; + return new this(1 / 0); + } + t = n3; + } else if (t.d) { + t = t.plus(n3.times(n3)); + } + } + external = true; + return t.sqrt(); + } + __name(hypot, "hypot"); + function isDecimalInstance(obj) { + return obj instanceof Decimal4 || obj && obj.toStringTag === tag || false; + } + __name(isDecimalInstance, "isDecimalInstance"); + function ln(x) { + return new this(x).ln(); + } + __name(ln, "ln"); + function log(x, y) { + return new this(x).log(y); + } + __name(log, "log"); + function log2(x) { + return new this(x).log(2); + } + __name(log2, "log2"); + function log10(x) { + return new this(x).log(10); + } + __name(log10, "log10"); + function max() { + return maxOrMin(this, arguments, -1); + } + __name(max, "max"); + function min() { + return maxOrMin(this, arguments, 1); + } + __name(min, "min"); + function mod(x, y) { + return new this(x).mod(y); + } + __name(mod, "mod"); + function mul(x, y) { + return new this(x).mul(y); + } + __name(mul, "mul"); + function pow(x, y) { + return new this(x).pow(y); + } + __name(pow, "pow"); + function random(sd) { + var d5, e5, k5, n3, i5 = 0, r5 = new this(1), rd = []; + if (sd === void 0) sd = this.precision; + else checkInt32(sd, 1, MAX_DIGITS); + k5 = Math.ceil(sd / LOG_BASE); + if (!this.crypto) { + for (; i5 < k5; ) rd[i5++] = Math.random() * 1e7 | 0; + } else if (crypto.getRandomValues) { + d5 = crypto.getRandomValues(new Uint32Array(k5)); + for (; i5 < k5; ) { + n3 = d5[i5]; + if (n3 >= 429e7) { + d5[i5] = crypto.getRandomValues(new Uint32Array(1))[0]; + } else { + rd[i5++] = n3 % 1e7; + } + } + } else if (crypto.randomBytes) { + d5 = crypto.randomBytes(k5 *= 4); + for (; i5 < k5; ) { + n3 = d5[i5] + (d5[i5 + 1] << 8) + (d5[i5 + 2] << 16) + ((d5[i5 + 3] & 127) << 24); + if (n3 >= 214e7) { + crypto.randomBytes(4).copy(d5, i5); + } else { + rd.push(n3 % 1e7); + i5 += 4; + } + } + i5 = k5 / 4; + } else { + throw Error(cryptoUnavailable); + } + k5 = rd[--i5]; + sd %= LOG_BASE; + if (k5 && sd) { + n3 = mathpow(10, LOG_BASE - sd); + rd[i5] = (k5 / n3 | 0) * n3; + } + for (; rd[i5] === 0; i5--) rd.pop(); + if (i5 < 0) { + e5 = 0; + rd = [0]; + } else { + e5 = -1; + for (; rd[0] === 0; e5 -= LOG_BASE) rd.shift(); + for (k5 = 1, n3 = rd[0]; n3 >= 10; n3 /= 10) k5++; + if (k5 < LOG_BASE) e5 -= LOG_BASE - k5; + } + r5.e = e5; + r5.d = rd; + return r5; + } + __name(random, "random"); + function round(x) { + return finalise(x = new this(x), x.e + 1, this.rounding); + } + __name(round, "round"); + function sign2(x) { + x = new this(x); + return x.d ? x.d[0] ? x.s : 0 * x.s : x.s || NaN; + } + __name(sign2, "sign"); + function sin(x) { + return new this(x).sin(); + } + __name(sin, "sin"); + function sinh(x) { + return new this(x).sinh(); + } + __name(sinh, "sinh"); + function sqrt(x) { + return new this(x).sqrt(); + } + __name(sqrt, "sqrt"); + function sub(x, y) { + return new this(x).sub(y); + } + __name(sub, "sub"); + function sum() { + var i5 = 0, args = arguments, x = new this(args[i5]); + external = false; + for (; x.s && ++i5 < args.length; ) x = x.plus(args[i5]); + external = true; + return finalise(x, this.precision, this.rounding); + } + __name(sum, "sum"); + function tan(x) { + return new this(x).tan(); + } + __name(tan, "tan"); + function tanh(x) { + return new this(x).tanh(); + } + __name(tanh, "tanh"); + function trunc(x) { + return finalise(x = new this(x), x.e + 1, 1); + } + __name(trunc, "trunc"); + P[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")] = P.toString; + P[Symbol.toStringTag] = "Decimal"; + var Decimal4 = P.constructor = clone2(DEFAULTS); + LN10 = new Decimal4(LN10); + PI = new Decimal4(PI); + var Sql4 = class _Sql { + static { + __name(this, "_Sql"); + } + constructor(rawStrings, rawValues) { + if (rawStrings.length - 1 !== rawValues.length) { + if (rawStrings.length === 0) { + throw new TypeError("Expected at least 1 string"); + } + throw new TypeError(`Expected ${rawStrings.length} strings to have ${rawStrings.length - 1} values`); + } + const valuesLength = rawValues.reduce((len, value) => len + (value instanceof _Sql ? value.values.length : 1), 0); + this.values = new Array(valuesLength); + this.strings = new Array(valuesLength + 1); + this.strings[0] = rawStrings[0]; + let i5 = 0, pos = 0; + while (i5 < rawValues.length) { + const child = rawValues[i5++]; + const rawString = rawStrings[i5]; + if (child instanceof _Sql) { + this.strings[pos] += child.strings[0]; + let childIndex = 0; + while (childIndex < child.values.length) { + this.values[pos++] = child.values[childIndex++]; + this.strings[pos] = child.strings[childIndex]; + } + this.strings[pos] += rawString; + } else { + this.values[pos++] = child; + this.strings[pos] = rawString; + } + } + } + get sql() { + const len = this.strings.length; + let i5 = 1; + let value = this.strings[0]; + while (i5 < len) + value += `?${this.strings[i5++]}`; + return value; + } + get statement() { + const len = this.strings.length; + let i5 = 1; + let value = this.strings[0]; + while (i5 < len) + value += `:${i5}${this.strings[i5++]}`; + return value; + } + get text() { + const len = this.strings.length; + let i5 = 1; + let value = this.strings[0]; + while (i5 < len) + value += `$${i5}${this.strings[i5++]}`; + return value; + } + inspect() { + return { + sql: this.sql, + statement: this.statement, + text: this.text, + values: this.values + }; + } + }; + function join4(values, separator = ",", prefix = "", suffix = "") { + if (values.length === 0) { + throw new TypeError("Expected `join([])` to be called with an array of multiple elements, but got an empty array"); + } + return new Sql4([prefix, ...Array(values.length - 1).fill(separator), suffix], values); + } + __name(join4, "join"); + function raw4(value) { + return new Sql4([value], []); + } + __name(raw4, "raw"); + var empty4 = raw4(""); + function sql2(strings, ...values) { + return new Sql4(strings, values); + } + __name(sql2, "sql"); + } +}); + +// ../../node_modules/.pnpm/@prisma+client@7.10.1_prism_1fac53bcaa5c7503395b340f2e6f2cd9/node_modules/@prisma/client/runtime/client.js +var require_client = __commonJS({ + "../../node_modules/.pnpm/@prisma+client@7.10.1_prism_1fac53bcaa5c7503395b340f2e6f2cd9/node_modules/@prisma/client/runtime/client.js"(exports, module) { + "use strict"; + var pu = Object.create; + var xr = Object.defineProperty; + var du = Object.getOwnPropertyDescriptor; + var mu = Object.getOwnPropertyNames; + var fu = Object.getPrototypeOf; + var gu = Object.prototype.hasOwnProperty; + var eo = /* @__PURE__ */ __name((e5, t) => () => (e5 && (t = e5(e5 = 0)), t), "eo"); + var at = /* @__PURE__ */ __name((e5, t) => () => (t || e5((t = { exports: {} }).exports, t), t.exports), "at"); + var lt = /* @__PURE__ */ __name((e5, t) => { + for (var r5 in t) xr(e5, r5, { get: t[r5], enumerable: true }); + }, "lt"); + var to = /* @__PURE__ */ __name((e5, t, r5, n3) => { + if (t && typeof t == "object" || typeof t == "function") for (let i5 of mu(t)) !gu.call(e5, i5) && i5 !== r5 && xr(e5, i5, { get: /* @__PURE__ */ __name(() => t[i5], "get"), enumerable: !(n3 = du(t, i5)) || n3.enumerable }); + return e5; + }, "to"); + var Pe = /* @__PURE__ */ __name((e5, t, r5) => (r5 = e5 != null ? pu(fu(e5)) : {}, to(t || !e5 || !e5.__esModule ? xr(r5, "default", { value: e5, enumerable: true }) : r5, e5)), "Pe"); + var yu = /* @__PURE__ */ __name((e5) => to(xr({}, "__esModule", { value: true }), e5), "yu"); + var ho = at((Rf, Lu) => { + Lu.exports = { name: "@prisma/engines-version", version: "8.1.0-1.d1b3f377ca835d73fd50954a5e22128b9ebdd6b8", main: "index.js", types: "index.d.ts", license: "Apache-2.0", author: "Tim Suchanek ", prisma: { enginesVersion: "d1b3f377ca835d73fd50954a5e22128b9ebdd6b8" }, repository: { type: "git", url: "https://github.com/prisma/engines-wrapper.git", directory: "packages/engines-version" }, devDependencies: { "@types/node": "18.19.76", typescript: "4.9.5" }, files: ["index.js", "index.d.ts"], scripts: { build: "tsc -d" } }; + }); + var wo = at((Pr) => { + "use strict"; + Object.defineProperty(Pr, "__esModule", { value: true }); + Pr.enginesVersion = void 0; + Pr.enginesVersion = ho().prisma.enginesVersion; + }); + var bo = at((If, xo) => { + "use strict"; + xo.exports = (e5) => { + let t = e5.match(/^[ \t]*(?=\S)/gm); + return t ? t.reduce((r5, n3) => Math.min(r5, n3.length), 1 / 0) : 0; + }; + }); + var So = at((Nf, vo) => { + "use strict"; + vo.exports = (e5, t = 1, r5) => { + if (r5 = { indent: " ", includeEmptyLines: false, ...r5 }, typeof e5 != "string") throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e5}\``); + if (typeof t != "number") throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``); + if (typeof r5.indent != "string") throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r5.indent}\``); + if (t === 0) return e5; + let n3 = r5.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; + return e5.replace(n3, r5.indent.repeat(t)); + }; + }); + var Ro = at((Lf, Tr) => { + "use strict"; + Tr.exports = (e5 = {}) => { + let t; + if (e5.repoUrl) t = e5.repoUrl; + else if (e5.user && e5.repo) t = `https://github.com/${e5.user}/${e5.repo}`; + else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options"); + let r5 = new URL(`${t}/issues/new`), n3 = ["body", "title", "labels", "template", "milestone", "assignee", "projects"]; + for (let i5 of n3) { + let o3 = e5[i5]; + if (o3 !== void 0) { + if (i5 === "labels" || i5 === "projects") { + if (!Array.isArray(o3)) throw new TypeError(`The \`${i5}\` option should be an array`); + o3 = o3.join(","); + } + r5.searchParams.set(i5, o3); + } + } + return r5.toString(); + }; + Tr.exports.default = Tr.exports; + }); + var qn = at((Ig, Fo) => { + "use strict"; + Fo.exports = /* @__PURE__ */ (function() { + function e5(t, r5, n3, i5, o3) { + return t < r5 || n3 < r5 ? t > n3 ? n3 + 1 : t + 1 : i5 === o3 ? r5 : r5 + 1; + } + __name(e5, "e"); + return function(t, r5) { + if (t === r5) return 0; + if (t.length > r5.length) { + var n3 = t; + t = r5, r5 = n3; + } + for (var i5 = t.length, o3 = r5.length; i5 > 0 && t.charCodeAt(i5 - 1) === r5.charCodeAt(o3 - 1); ) i5--, o3--; + for (var s2 = 0; s2 < i5 && t.charCodeAt(s2) === r5.charCodeAt(s2); ) s2++; + if (i5 -= s2, o3 -= s2, i5 === 0 || o3 < 3) return o3; + var a5 = 0, u, m3, P, T2, S, I, A, M, L, q3, E, D, H = []; + for (u = 0; u < i5; u++) H.push(u + 1), H.push(t.charCodeAt(s2 + u)); + for (var ce = H.length - 1; a5 < o3 - 3; ) for (L = r5.charCodeAt(s2 + (m3 = a5)), q3 = r5.charCodeAt(s2 + (P = a5 + 1)), E = r5.charCodeAt(s2 + (T2 = a5 + 2)), D = r5.charCodeAt(s2 + (S = a5 + 3)), I = a5 += 4, u = 0; u < ce; u += 2) A = H[u], M = H[u + 1], m3 = e5(A, m3, P, L, M), P = e5(m3, P, T2, q3, M), T2 = e5(P, T2, S, E, M), I = e5(T2, S, I, D, M), H[u] = I, S = T2, T2 = P, P = m3, m3 = A; + for (; a5 < o3; ) for (L = r5.charCodeAt(s2 + (m3 = a5)), I = ++a5, u = 0; u < ce; u += 2) A = H[u], H[u] = I = e5(A, m3, I, L, H[u + 1]), m3 = A; + return I; + }; + })(); + }); + var qo = eo(() => { + "use strict"; + }); + var Uo = eo(() => { + "use strict"; + }); + var Hm = {}; + lt(Hm, { AnyNull: /* @__PURE__ */ __name(() => ee.AnyNull, "AnyNull"), DMMF: /* @__PURE__ */ __name(() => Qt, "DMMF"), DbNull: /* @__PURE__ */ __name(() => ee.DbNull, "DbNull"), Debug: /* @__PURE__ */ __name(() => K2, "Debug"), Decimal: /* @__PURE__ */ __name(() => cu.Decimal, "Decimal"), Extensions: /* @__PURE__ */ __name(() => Rn, "Extensions"), JsonNull: /* @__PURE__ */ __name(() => ee.JsonNull, "JsonNull"), NullTypes: /* @__PURE__ */ __name(() => ee.NullTypes, "NullTypes"), ObjectEnumValue: /* @__PURE__ */ __name(() => ee.ObjectEnumValue, "ObjectEnumValue"), PrismaClientInitializationError: /* @__PURE__ */ __name(() => _.PrismaClientInitializationError, "PrismaClientInitializationError"), PrismaClientKnownRequestError: /* @__PURE__ */ __name(() => _.PrismaClientKnownRequestError, "PrismaClientKnownRequestError"), PrismaClientRustPanicError: /* @__PURE__ */ __name(() => _.PrismaClientRustPanicError, "PrismaClientRustPanicError"), PrismaClientUnknownRequestError: /* @__PURE__ */ __name(() => _.PrismaClientUnknownRequestError, "PrismaClientUnknownRequestError"), PrismaClientValidationError: /* @__PURE__ */ __name(() => _.PrismaClientValidationError, "PrismaClientValidationError"), Public: /* @__PURE__ */ __name(() => Cn, "Public"), Sql: /* @__PURE__ */ __name(() => Fe.Sql, "Sql"), createParam: /* @__PURE__ */ __name(() => os, "createParam"), defineDmmfProperty: /* @__PURE__ */ __name(() => ps, "defineDmmfProperty"), deserializeJsonObject: /* @__PURE__ */ __name(() => Ae, "deserializeJsonObject"), deserializeRawResult: /* @__PURE__ */ __name(() => Tn, "deserializeRawResult"), dmmfToRuntimeDataModel: /* @__PURE__ */ __name(() => so, "dmmfToRuntimeDataModel"), empty: /* @__PURE__ */ __name(() => Fe.empty, "empty"), getPrismaClient: /* @__PURE__ */ __name(() => au, "getPrismaClient"), getRuntime: /* @__PURE__ */ __name(() => uu, "getRuntime"), isAnyNull: /* @__PURE__ */ __name(() => ee.isAnyNull, "isAnyNull"), isDbNull: /* @__PURE__ */ __name(() => ee.isDbNull, "isDbNull"), isJsonNull: /* @__PURE__ */ __name(() => ee.isJsonNull, "isJsonNull"), isObjectEnumValue: /* @__PURE__ */ __name(() => ee.isObjectEnumValue, "isObjectEnumValue"), join: /* @__PURE__ */ __name(() => Fe.join, "join"), makeStrictEnum: /* @__PURE__ */ __name(() => lu, "makeStrictEnum"), makeTypedQueryFactory: /* @__PURE__ */ __name(() => ds, "makeTypedQueryFactory"), raw: /* @__PURE__ */ __name(() => Fe.raw, "raw"), serializeJsonQuery: /* @__PURE__ */ __name(() => Vr, "serializeJsonQuery"), skip: /* @__PURE__ */ __name(() => Lr, "skip"), sqltag: /* @__PURE__ */ __name(() => Fe.sql, "sqltag"), warnOnce: /* @__PURE__ */ __name(() => Vn, "warnOnce") }); + module.exports = yu(Hm); + var Rn = {}; + lt(Rn, { defineExtension: /* @__PURE__ */ __name(() => ro, "defineExtension"), getExtensionContext: /* @__PURE__ */ __name(() => no, "getExtensionContext") }); + function ro(e5) { + return typeof e5 == "function" ? e5 : (t) => t.$extends(e5); + } + __name(ro, "ro"); + function no(e5) { + return e5; + } + __name(no, "no"); + var Cn = {}; + lt(Cn, { validator: /* @__PURE__ */ __name(() => io, "validator") }); + function io(...e5) { + return (t) => t; + } + __name(io, "io"); + var Ie = class { + static { + __name(this, "Ie"); + } + _map = /* @__PURE__ */ new Map(); + get(t) { + return this._map.get(t)?.value; + } + set(t, r5) { + this._map.set(t, { value: r5 }); + } + getOrCreate(t, r5) { + let n3 = this._map.get(t); + if (n3) return n3.value; + let i5 = r5(); + return this.set(t, i5), i5; + } + }; + function qe(e5) { + return e5.substring(0, 1).toLowerCase() + e5.substring(1); + } + __name(qe, "qe"); + function oo(e5, t) { + let r5 = {}; + for (let n3 of e5) { + let i5 = n3[t]; + r5[i5] = n3; + } + return r5; + } + __name(oo, "oo"); + function Nt(e5) { + let t; + return { get() { + return t || (t = { value: e5() }), t.value; + } }; + } + __name(Nt, "Nt"); + function so(e5) { + return { models: In(e5.models), enums: In(e5.enums), types: In(e5.types) }; + } + __name(so, "so"); + function In(e5) { + let t = {}; + for (let { name: r5, ...n3 } of e5) t[r5] = n3; + return t; + } + __name(In, "In"); + var as = require_dist(); + var br = {}; + lt(br, { $: /* @__PURE__ */ __name(() => po, "$"), bgBlack: /* @__PURE__ */ __name(() => Au, "bgBlack"), bgBlue: /* @__PURE__ */ __name(() => ku, "bgBlue"), bgCyan: /* @__PURE__ */ __name(() => Nu, "bgCyan"), bgGreen: /* @__PURE__ */ __name(() => Cu, "bgGreen"), bgMagenta: /* @__PURE__ */ __name(() => Ou, "bgMagenta"), bgRed: /* @__PURE__ */ __name(() => Ru, "bgRed"), bgWhite: /* @__PURE__ */ __name(() => Du, "bgWhite"), bgYellow: /* @__PURE__ */ __name(() => Iu, "bgYellow"), black: /* @__PURE__ */ __name(() => Eu, "black"), blue: /* @__PURE__ */ __name(() => He, "blue"), bold: /* @__PURE__ */ __name(() => Ee, "bold"), cyan: /* @__PURE__ */ __name(() => _e5, "cyan"), dim: /* @__PURE__ */ __name(() => Dt, "dim"), gray: /* @__PURE__ */ __name(() => $t, "gray"), green: /* @__PURE__ */ __name(() => Ft, "green"), grey: /* @__PURE__ */ __name(() => Su, "grey"), hidden: /* @__PURE__ */ __name(() => bu, "hidden"), inverse: /* @__PURE__ */ __name(() => xu, "inverse"), italic: /* @__PURE__ */ __name(() => wu, "italic"), magenta: /* @__PURE__ */ __name(() => Tu, "magenta"), red: /* @__PURE__ */ __name(() => ze, "red"), reset: /* @__PURE__ */ __name(() => hu, "reset"), strikethrough: /* @__PURE__ */ __name(() => Pu, "strikethrough"), underline: /* @__PURE__ */ __name(() => Mt, "underline"), white: /* @__PURE__ */ __name(() => vu, "white"), yellow: /* @__PURE__ */ __name(() => _t, "yellow") }); + var kn; + var ao; + var lo; + var uo; + var co = true; + typeof process < "u" && ({ FORCE_COLOR: kn, NODE_DISABLE_COLORS: ao, NO_COLOR: lo, TERM: uo } = process.env || {}, co = process.stdout && process.stdout.isTTY); + var po = { enabled: !ao && lo == null && uo !== "dumb" && (kn != null && kn !== "0" || co) }; + function B(e5, t) { + let r5 = new RegExp(`\\x1b\\[${t}m`, "g"), n3 = `\x1B[${e5}m`, i5 = `\x1B[${t}m`; + return function(o3) { + return !po.enabled || o3 == null ? o3 : n3 + (~("" + o3).indexOf(i5) ? o3.replace(r5, i5 + n3) : o3) + i5; + }; + } + __name(B, "B"); + var hu = B(0, 0); + var Ee = B(1, 22); + var Dt = B(2, 22); + var wu = B(3, 23); + var Mt = B(4, 24); + var xu = B(7, 27); + var bu = B(8, 28); + var Pu = B(9, 29); + var Eu = B(30, 39); + var ze = B(31, 39); + var Ft = B(32, 39); + var _t = B(33, 39); + var He = B(34, 39); + var Tu = B(35, 39); + var _e5 = B(36, 39); + var vu = B(37, 39); + var $t = B(90, 39); + var Su = B(90, 39); + var Au = B(40, 49); + var Ru = B(41, 49); + var Cu = B(42, 49); + var Iu = B(43, 49); + var ku = B(44, 49); + var Ou = B(45, 49); + var Nu = B(46, 49); + var Du = B(47, 49); + var Mu = 100; + var mo = ["green", "yellow", "blue", "magenta", "cyan", "red"]; + var Lt = []; + var fo = Date.now(); + var Fu = 0; + var On = typeof process < "u" ? process.env : {}; + globalThis.DEBUG ??= On.DEBUG ?? ""; + globalThis.DEBUG_COLORS ??= On.DEBUG_COLORS ? On.DEBUG_COLORS === "true" : true; + var Vt = { enable(e5) { + typeof e5 == "string" && (globalThis.DEBUG = e5); + }, disable() { + let e5 = globalThis.DEBUG; + return globalThis.DEBUG = "", e5; + }, enabled(e5) { + let t = globalThis.DEBUG.split(",").map((i5) => i5.replace(/[.+?^${}()|[\]\\]/g, "\\$&")), r5 = t.some((i5) => i5 === "" || i5[0] === "-" ? false : e5.match(RegExp(i5.split("*").join(".*") + "$"))), n3 = t.some((i5) => i5 === "" || i5[0] !== "-" ? false : e5.match(RegExp(i5.slice(1).split("*").join(".*") + "$"))); + return r5 && !n3; + }, log: /* @__PURE__ */ __name((...e5) => { + let [t, r5, ...n3] = e5; + (console.warn ?? console.log)(`${t} ${r5}`, ...n3); + }, "log"), formatters: {} }; + function _u(e5) { + let t = { color: mo[Fu++ % mo.length], enabled: Vt.enabled(e5), namespace: e5, log: Vt.log, extend: /* @__PURE__ */ __name(() => { + }, "extend") }, r5 = /* @__PURE__ */ __name((...n3) => { + let { enabled: i5, namespace: o3, color: s2, log: a5 } = t; + if (n3.length !== 0 && Lt.push([o3, ...n3]), Lt.length > Mu && Lt.shift(), Vt.enabled(o3) || i5) { + let u = n3.map((P) => typeof P == "string" ? P : $u(P)), m3 = `+${Date.now() - fo}ms`; + fo = Date.now(), globalThis.DEBUG_COLORS ? a5(br[s2](Ee(o3)), ...u, br[s2](m3)) : a5(o3, ...u, m3); + } + }, "r"); + return new Proxy(r5, { get: /* @__PURE__ */ __name((n3, i5) => t[i5], "get"), set: /* @__PURE__ */ __name((n3, i5, o3) => t[i5] = o3, "set") }); + } + __name(_u, "_u"); + var K2 = new Proxy(_u, { get: /* @__PURE__ */ __name((e5, t) => Vt[t], "get"), set: /* @__PURE__ */ __name((e5, t, r5) => Vt[t] = r5, "set") }); + function $u(e5, t = 2) { + let r5 = /* @__PURE__ */ new Set(); + return JSON.stringify(e5, (n3, i5) => { + if (typeof i5 == "object" && i5 !== null) { + if (r5.has(i5)) return "[Circular *]"; + r5.add(i5); + } else if (typeof i5 == "bigint") return i5.toString(); + return i5; + }, t); + } + __name($u, "$u"); + function go(e5 = 7500) { + let t = Lt.map(([r5, ...n3]) => `${r5} ${n3.map((i5) => typeof i5 == "string" ? i5 : JSON.stringify(i5)).join(" ")}`).join(` +`); + return t.length < e5 ? t : t.slice(-e5); + } + __name(go, "go"); + function yo() { + Lt.length = 0; + } + __name(yo, "yo"); + function $e(e5, t) { + throw new Error(t); + } + __name($e, "$e"); + var Po = Pe(bo(), 1); + function Nn(e5) { + let t = (0, Po.default)(e5); + if (t === 0) return e5; + let r5 = new RegExp(`^[ \\t]{${t}}`, "gm"); + return e5.replace(r5, ""); + } + __name(Nn, "Nn"); + var Eo = "prisma+postgres"; + var Er = `${Eo}:`; + function To(e5) { + return e5?.toString().startsWith(`${Er}//`) ?? false; + } + __name(To, "To"); + function Dn(e5) { + if (!To(e5)) return false; + let { host: t } = new URL(e5); + return t.includes("localhost") || t.includes("127.0.0.1") || t.includes("[::1]"); + } + __name(Dn, "Dn"); + var Ut = {}; + lt(Ut, { error: /* @__PURE__ */ __name(() => Uu, "error"), info: /* @__PURE__ */ __name(() => qu, "info"), log: /* @__PURE__ */ __name(() => Vu, "log"), query: /* @__PURE__ */ __name(() => ju, "query"), should: /* @__PURE__ */ __name(() => Ao, "should"), tags: /* @__PURE__ */ __name(() => qt, "tags"), warn: /* @__PURE__ */ __name(() => Mn, "warn") }); + var qt = { error: ze("prisma:error"), warn: _t("prisma:warn"), info: _e5("prisma:info"), query: He("prisma:query") }; + var Ao = { warn: /* @__PURE__ */ __name(() => !process.env.PRISMA_DISABLE_WARNINGS, "warn") }; + function Vu(...e5) { + console.log(...e5); + } + __name(Vu, "Vu"); + function Mn(e5, ...t) { + Ao.warn() && console.warn(`${qt.warn} ${e5}`, ...t); + } + __name(Mn, "Mn"); + function qu(e5, ...t) { + console.info(`${qt.info} ${e5}`, ...t); + } + __name(qu, "qu"); + function Uu(e5, ...t) { + console.error(`${qt.error} ${e5}`, ...t); + } + __name(Uu, "Uu"); + function ju(e5, ...t) { + console.log(`${qt.query} ${e5}`, ...t); + } + __name(ju, "ju"); + function Fn({ onlyFirst: e5 = false } = {}) { + let r5 = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"); + return new RegExp(r5, e5 ? void 0 : "g"); + } + __name(Fn, "Fn"); + var Bu = Fn(); + function ut(e5) { + if (typeof e5 != "string") throw new TypeError(`Expected a \`string\`, got \`${typeof e5}\``); + return e5.replace(Bu, ""); + } + __name(ut, "ut"); + var jt = Pe(__require("node:path")); + function _n(e5) { + return jt.default.sep === jt.default.posix.sep ? e5 : e5.split(jt.default.sep).join(jt.default.posix.sep); + } + __name(_n, "_n"); + function $n(e5, t) { + return Object.prototype.hasOwnProperty.call(e5, t); + } + __name($n, "$n"); + function vr(e5, t) { + let r5 = {}; + for (let n3 of Object.keys(e5)) r5[n3] = t(e5[n3], n3); + return r5; + } + __name(vr, "vr"); + function Ln(e5, t) { + if (e5.length === 0) return; + let r5 = e5[0]; + for (let n3 = 1; n3 < e5.length; n3++) t(r5, e5[n3]) < 0 && (r5 = e5[n3]); + return r5; + } + __name(Ln, "Ln"); + function Bt(e5, t) { + Object.defineProperty(e5, "name", { value: t, configurable: true }); + } + __name(Bt, "Bt"); + var Co = /* @__PURE__ */ new Set(); + var Vn = /* @__PURE__ */ __name((e5, t, ...r5) => { + Co.has(e5) || (Co.add(e5), Mn(t, ...r5)); + }, "Vn"); + function ct(e5) { + return e5 instanceof Date || Object.prototype.toString.call(e5) === "[object Date]"; + } + __name(ct, "ct"); + function pt(e5) { + return e5.toString() !== "Invalid Date"; + } + __name(pt, "pt"); + var Io = require_dist(); + function dt(e5) { + return Io.Decimal.isDecimal(e5) ? true : e5 !== null && typeof e5 == "object" && typeof e5.s == "number" && typeof e5.e == "number" && typeof e5.toFixed == "function" && Array.isArray(e5.d); + } + __name(dt, "dt"); + var Yo = require_dist(); + var Qt = {}; + lt(Qt, { ModelAction: /* @__PURE__ */ __name(() => mt, "ModelAction"), datamodelEnumToSchemaEnum: /* @__PURE__ */ __name(() => Qu, "datamodelEnumToSchemaEnum") }); + function Qu(e5) { + return { name: e5.name, values: e5.values.map((t) => t.name) }; + } + __name(Qu, "Qu"); + var mt = ((D) => (D.findUnique = "findUnique", D.findUniqueOrThrow = "findUniqueOrThrow", D.findFirst = "findFirst", D.findFirstOrThrow = "findFirstOrThrow", D.findMany = "findMany", D.create = "create", D.createMany = "createMany", D.createManyAndReturn = "createManyAndReturn", D.update = "update", D.updateMany = "updateMany", D.updateManyAndReturn = "updateManyAndReturn", D.upsert = "upsert", D.delete = "delete", D.deleteMany = "deleteMany", D.groupBy = "groupBy", D.count = "count", D.aggregate = "aggregate", D.findRaw = "findRaw", D.aggregateRaw = "aggregateRaw", D))(mt || {}); + var Mo = Pe(So()); + var Do = Pe(__require("node:fs")); + var ko = { keyword: _e5, entity: _e5, value: /* @__PURE__ */ __name((e5) => Ee(He(e5)), "value"), punctuation: He, directive: _e5, function: _e5, variable: /* @__PURE__ */ __name((e5) => Ee(He(e5)), "variable"), string: /* @__PURE__ */ __name((e5) => Ee(Ft(e5)), "string"), boolean: _t, number: _e5, comment: $t }; + var Ju = /* @__PURE__ */ __name((e5) => e5, "Ju"); + var Sr = {}; + var Gu = 0; + var O = { manual: Sr.Prism && Sr.Prism.manual, disableWorkerMessageHandler: Sr.Prism && Sr.Prism.disableWorkerMessageHandler, util: { encode: /* @__PURE__ */ __name(function(e5) { + if (e5 instanceof Te) { + let t = e5; + return new Te(t.type, O.util.encode(t.content), t.alias); + } else return Array.isArray(e5) ? e5.map(O.util.encode) : e5.replace(/&/g, "&").replace(/ e5.length) return; + if (p3 instanceof Te) continue; + if (ce && l3 != t.length - 1) { + E.lastIndex = c5; + var T2 = E.exec(e5); + if (!T2) break; + var P = T2.index + (H ? T2[1].length : 0), S = T2.index + T2[0].length, a5 = l3, u = c5; + for (let g5 = t.length; a5 < g5 && (u < S || !t[a5].type && !t[a5 - 1].greedy); ++a5) u += t[a5].length, P >= u && (++l3, c5 = u); + if (t[l3] instanceof Te) continue; + m3 = a5 - l3, p3 = e5.slice(c5, u), T2.index -= c5; + } else { + E.lastIndex = 0; + var T2 = E.exec(p3), m3 = 1; + } + if (!T2) { + if (o3) break; + continue; + } + H && (ie = T2[1] ? T2[1].length : 0); + var P = T2.index + ie, T2 = T2[0].slice(ie), S = P + T2.length, I = p3.slice(0, P), A = p3.slice(S); + let h5 = [l3, m3]; + I && (++l3, c5 += I.length, h5.push(I)); + let f5 = new Te(M, D ? O.tokenize(T2, D) : T2, be, T2, ce); + if (h5.push(f5), A && h5.push(A), Array.prototype.splice.apply(t, h5), m3 != 1 && O.matchGrammar(e5, t, r5, l3, c5, true, M), o3) break; + } + } + } + }, "matchGrammar"), tokenize: /* @__PURE__ */ __name(function(e5, t) { + let r5 = [e5], n3 = t.rest; + if (n3) { + for (let i5 in n3) t[i5] = n3[i5]; + delete t.rest; + } + return O.matchGrammar(e5, r5, t, 0, 0, false), r5; + }, "tokenize"), hooks: { all: {}, add: /* @__PURE__ */ __name(function(e5, t) { + let r5 = O.hooks.all; + r5[e5] = r5[e5] || [], r5[e5].push(t); + }, "add"), run: /* @__PURE__ */ __name(function(e5, t) { + let r5 = O.hooks.all[e5]; + if (!(!r5 || !r5.length)) for (var n3 = 0, i5; i5 = r5[n3++]; ) i5(t); + }, "run") }, Token: Te }; + O.languages.clike = { comment: [{ pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: true }, { pattern: /(^|[^\\:])\/\/.*/, lookbehind: true, greedy: true }], string: { pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: true }, "class-name": { pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, lookbehind: true, inside: { punctuation: /[.\\]/ } }, keyword: /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, boolean: /\b(?:true|false)\b/, function: /\w+(?=\()/, number: /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, punctuation: /[{}[\];(),.:]/ }; + O.languages.javascript = O.languages.extend("clike", { "class-name": [O.languages.clike["class-name"], { pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/, lookbehind: true }], keyword: [{ pattern: /((?:^|})\s*)(?:catch|finally)\b/, lookbehind: true }, { pattern: /(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, lookbehind: true }], number: /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/, function: /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, operator: /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }); + O.languages.javascript["class-name"][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/; + O.languages.insertBefore("javascript", "keyword", { regex: { pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/, lookbehind: true, greedy: true }, "function-variable": { pattern: /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/, alias: "function" }, parameter: [{ pattern: /(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/, lookbehind: true, inside: O.languages.javascript }, { pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i, inside: O.languages.javascript }, { pattern: /(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/, lookbehind: true, inside: O.languages.javascript }, { pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/, lookbehind: true, inside: O.languages.javascript }], constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/ }); + O.languages.markup && O.languages.markup.tag.addInlined("script", "javascript"); + O.languages.js = O.languages.javascript; + O.languages.typescript = O.languages.extend("javascript", { keyword: /\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/, builtin: /\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/ }); + O.languages.ts = O.languages.typescript; + function Te(e5, t, r5, n3, i5) { + this.type = e5, this.content = t, this.alias = r5, this.length = (n3 || "").length | 0, this.greedy = !!i5; + } + __name(Te, "Te"); + Te.stringify = function(e5, t) { + return typeof e5 == "string" ? e5 : Array.isArray(e5) ? e5.map(function(r5) { + return Te.stringify(r5, t); + }).join("") : zu(e5.type)(e5.content); + }; + function zu(e5) { + return ko[e5] || Ju; + } + __name(zu, "zu"); + function Oo(e5) { + return Hu(e5, O.languages.javascript); + } + __name(Oo, "Oo"); + function Hu(e5, t) { + return O.tokenize(e5, t).map((n3) => Te.stringify(n3)).join(""); + } + __name(Hu, "Hu"); + function No(e5) { + return Nn(e5); + } + __name(No, "No"); + var Ar = class e5 { + static { + __name(this, "e"); + } + firstLineNumber; + lines; + static read(t) { + let r5; + try { + r5 = Do.default.readFileSync(t, "utf-8"); + } catch { + return null; + } + return e5.fromContent(r5); + } + static fromContent(t) { + let r5 = t.split(/\r?\n/); + return new e5(1, r5); + } + constructor(t, r5) { + this.firstLineNumber = t, this.lines = r5; + } + get lastLineNumber() { + return this.firstLineNumber + this.lines.length - 1; + } + mapLineAt(t, r5) { + if (t < this.firstLineNumber || t > this.lastLineNumber) return this; + let n3 = t - this.firstLineNumber, i5 = [...this.lines]; + return i5[n3] = r5(i5[n3]), new e5(this.firstLineNumber, i5); + } + mapLines(t) { + return new e5(this.firstLineNumber, this.lines.map((r5, n3) => t(r5, this.firstLineNumber + n3))); + } + lineAt(t) { + return this.lines[t - this.firstLineNumber]; + } + prependSymbolAt(t, r5) { + return this.mapLines((n3, i5) => i5 === t ? `${r5} ${n3}` : ` ${n3}`); + } + slice(t, r5) { + let n3 = Math.max(t, this.firstLineNumber), i5 = Math.min(r5, this.lastLineNumber); + if (n3 > i5) return new e5(t, []); + let o3 = this.lines.slice(n3 - this.firstLineNumber, i5 - this.firstLineNumber + 1).join(` +`); + return new e5(n3, No(o3).split(` +`)); + } + highlight() { + let t = Oo(this.toString()); + return new e5(this.firstLineNumber, t.split(` +`)); + } + toString() { + return this.lines.join(` +`); + } + }; + var Wu = { red: ze, gray: $t, dim: Dt, bold: Ee, underline: Mt, highlightSource: /* @__PURE__ */ __name((e5) => e5.highlight(), "highlightSource") }; + var Ku = { red: /* @__PURE__ */ __name((e5) => e5, "red"), gray: /* @__PURE__ */ __name((e5) => e5, "gray"), dim: /* @__PURE__ */ __name((e5) => e5, "dim"), bold: /* @__PURE__ */ __name((e5) => e5, "bold"), underline: /* @__PURE__ */ __name((e5) => e5, "underline"), highlightSource: /* @__PURE__ */ __name((e5) => e5, "highlightSource") }; + function Zu({ message: e5, originalMethod: t, isPanic: r5, callArguments: n3 }) { + return { functionName: `prisma.${t}()`, message: e5, isPanic: r5 ?? false, callArguments: n3 }; + } + __name(Zu, "Zu"); + function Xu({ callsite: e5, message: t, originalMethod: r5, isPanic: n3, callArguments: i5 }, o3) { + let s2 = Zu({ message: t, originalMethod: r5, isPanic: n3, callArguments: i5 }); + if (!e5 || typeof window < "u" || process.env.NODE_ENV === "production") return s2; + let a5 = e5.getLocation(); + if (!a5 || !a5.lineNumber || !a5.columnNumber) return s2; + let u = Math.max(1, a5.lineNumber - 3), m3 = Ar.read(a5.fileName)?.slice(u, a5.lineNumber), P = m3?.lineAt(a5.lineNumber); + if (m3 && P) { + let T2 = ec(P), S = Yu(P); + if (!S) return s2; + s2.functionName = `${S.code})`, s2.location = a5, n3 || (m3 = m3.mapLineAt(a5.lineNumber, (A) => A.slice(0, S.openingBraceIndex))), m3 = o3.highlightSource(m3); + let I = String(m3.lastLineNumber).length; + if (s2.contextLines = m3.mapLines((A, M) => o3.gray(String(M).padStart(I)) + " " + A).mapLines((A) => o3.dim(A)).prependSymbolAt(a5.lineNumber, o3.bold(o3.red("\u2192"))), i5) { + let A = T2 + I + 1; + A += 2, s2.callArguments = (0, Mo.default)(i5, A).slice(A); + } + } + return s2; + } + __name(Xu, "Xu"); + function Yu(e5) { + let t = Object.keys(mt).join("|"), n3 = new RegExp(String.raw`\.(${t})\(`).exec(e5); + if (n3) { + let i5 = n3.index + n3[0].length, o3 = e5.lastIndexOf(" ", n3.index) + 1; + return { code: e5.slice(o3, i5), openingBraceIndex: i5 }; + } + return null; + } + __name(Yu, "Yu"); + function ec(e5) { + let t = 0; + for (let r5 = 0; r5 < e5.length; r5++) { + if (e5.charAt(r5) !== " ") return t; + t++; + } + return t; + } + __name(ec, "ec"); + function tc({ functionName: e5, location: t, message: r5, isPanic: n3, contextLines: i5, callArguments: o3 }, s2) { + let a5 = [""], u = t ? " in" : ":"; + if (n3 ? (a5.push(s2.red(`Oops, an unknown error occurred! This is ${s2.bold("on us")}, you did nothing wrong.`)), a5.push(s2.red(`It occurred in the ${s2.bold(`\`${e5}\``)} invocation${u}`))) : a5.push(s2.red(`Invalid ${s2.bold(`\`${e5}\``)} invocation${u}`)), t && a5.push(s2.underline(rc(t))), i5) { + a5.push(""); + let m3 = [i5.toString()]; + o3 && (m3.push(o3), m3.push(s2.dim(")"))), a5.push(m3.join("")), o3 && a5.push(""); + } else a5.push(""), o3 && a5.push(o3), a5.push(""); + return a5.push(r5), a5.join(` +`); + } + __name(tc, "tc"); + function rc(e5) { + let t = [e5.fileName]; + return e5.lineNumber && t.push(String(e5.lineNumber)), e5.columnNumber && t.push(String(e5.columnNumber)), t.join(":"); + } + __name(rc, "rc"); + function Rr(e5) { + let t = e5.showColors ? Wu : Ku, r5; + return r5 = Xu(e5, t), tc(r5, t); + } + __name(Rr, "Rr"); + var Bo = Pe(qn()); + function Lo(e5, t, r5) { + let n3 = Vo(e5), i5 = nc(n3), o3 = oc(i5); + o3 ? Cr(o3, t, r5) : t.addErrorMessage(() => "Unknown error"); + } + __name(Lo, "Lo"); + function Vo(e5) { + return e5.errors.flatMap((t) => t.kind === "Union" ? Vo(t) : [t]); + } + __name(Vo, "Vo"); + function nc(e5) { + let t = /* @__PURE__ */ new Map(), r5 = []; + for (let n3 of e5) { + if (n3.kind !== "InvalidArgumentType") { + r5.push(n3); + continue; + } + let i5 = `${n3.selectionPath.join(".")}:${n3.argumentPath.join(".")}`, o3 = t.get(i5); + o3 ? t.set(i5, { ...n3, argument: { ...n3.argument, typeNames: ic(o3.argument.typeNames, n3.argument.typeNames) } }) : t.set(i5, n3); + } + return r5.push(...t.values()), r5; + } + __name(nc, "nc"); + function ic(e5, t) { + return [...new Set(e5.concat(t))]; + } + __name(ic, "ic"); + function oc(e5) { + return Ln(e5, (t, r5) => { + let n3 = _o(t), i5 = _o(r5); + return n3 !== i5 ? n3 - i5 : $o(t) - $o(r5); + }); + } + __name(oc, "oc"); + function _o(e5) { + let t = 0; + return Array.isArray(e5.selectionPath) && (t += e5.selectionPath.length), Array.isArray(e5.argumentPath) && (t += e5.argumentPath.length), t; + } + __name(_o, "_o"); + function $o(e5) { + switch (e5.kind) { + case "InvalidArgumentValue": + case "ValueTooLarge": + return 20; + case "InvalidArgumentType": + return 10; + case "RequiredArgumentMissing": + return -10; + default: + return 0; + } + } + __name($o, "$o"); + var pe = class { + static { + __name(this, "pe"); + } + constructor(t, r5) { + this.name = t; + this.value = r5; + } + isRequired = false; + makeRequired() { + return this.isRequired = true, this; + } + write(t) { + let { colors: { green: r5 } } = t.context; + t.addMarginSymbol(r5(this.isRequired ? "+" : "?")), t.write(r5(this.name)), this.isRequired || t.write(r5("?")), t.write(r5(": ")), typeof this.value == "string" ? t.write(r5(this.value)) : t.write(this.value); + } + }; + Uo(); + var ft = class { + static { + __name(this, "ft"); + } + constructor(t = 0, r5) { + this.context = r5; + this.currentIndent = t; + } + lines = []; + currentLine = ""; + currentIndent = 0; + marginSymbol; + afterNextNewLineCallback; + write(t) { + return typeof t == "string" ? this.currentLine += t : t.write(this), this; + } + writeJoined(t, r5, n3 = (i5, o3) => o3.write(i5)) { + let i5 = r5.length - 1; + for (let o3 = 0; o3 < r5.length; o3++) n3(r5[o3], this), o3 !== i5 && this.write(t); + return this; + } + writeLine(t) { + return this.write(t).newLine(); + } + newLine() { + this.lines.push(this.indentedCurrentLine()), this.currentLine = "", this.marginSymbol = void 0; + let t = this.afterNextNewLineCallback; + return this.afterNextNewLineCallback = void 0, t?.(), this; + } + withIndent(t) { + return this.indent(), t(this), this.unindent(), this; + } + afterNextNewline(t) { + return this.afterNextNewLineCallback = t, this; + } + indent() { + return this.currentIndent++, this; + } + unindent() { + return this.currentIndent > 0 && this.currentIndent--, this; + } + addMarginSymbol(t) { + return this.marginSymbol = t, this; + } + toString() { + return this.lines.concat(this.indentedCurrentLine()).join(` +`); + } + getCurrentLineLength() { + return this.currentLine.length; + } + indentedCurrentLine() { + let t = this.currentLine.padStart(this.currentLine.length + 2 * this.currentIndent); + return this.marginSymbol ? this.marginSymbol + t.slice(1) : t; + } + }; + qo(); + var Ir = class { + static { + __name(this, "Ir"); + } + constructor(t) { + this.value = t; + } + write(t) { + t.write(this.value); + } + markAsError() { + this.value.markAsError(); + } + }; + var kr = /* @__PURE__ */ __name((e5) => e5, "kr"); + var Or = { bold: kr, red: kr, green: kr, dim: kr, enabled: false }; + var jo = { bold: Ee, red: ze, green: Ft, dim: Dt, enabled: true }; + var gt = { write(e5) { + e5.writeLine(","); + } }; + var ke = class { + static { + __name(this, "ke"); + } + constructor(t) { + this.contents = t; + } + isUnderlined = false; + color = /* @__PURE__ */ __name((t) => t, "color"); + underline() { + return this.isUnderlined = true, this; + } + setColor(t) { + return this.color = t, this; + } + write(t) { + let r5 = t.getCurrentLineLength(); + t.write(this.color(this.contents)), this.isUnderlined && t.afterNextNewline(() => { + t.write(" ".repeat(r5)).writeLine(this.color("~".repeat(this.contents.length))); + }); + } + }; + var Ue = class { + static { + __name(this, "Ue"); + } + hasError = false; + markAsError() { + return this.hasError = true, this; + } + }; + var yt = class extends Ue { + static { + __name(this, "yt"); + } + items = []; + addItem(t) { + return this.items.push(new Ir(t)), this; + } + getField(t) { + return this.items[t]; + } + getPrintWidth() { + return this.items.length === 0 ? 2 : Math.max(...this.items.map((r5) => r5.value.getPrintWidth())) + 2; + } + write(t) { + if (this.items.length === 0) { + this.writeEmpty(t); + return; + } + this.writeWithItems(t); + } + writeEmpty(t) { + let r5 = new ke("[]"); + this.hasError && r5.setColor(t.context.colors.red).underline(), t.write(r5); + } + writeWithItems(t) { + let { colors: r5 } = t.context; + t.writeLine("[").withIndent(() => t.writeJoined(gt, this.items).newLine()).write("]"), this.hasError && t.afterNextNewline(() => { + t.writeLine(r5.red("~".repeat(this.getPrintWidth()))); + }); + } + asObject() { + } + }; + var ht = class e5 extends Ue { + static { + __name(this, "e"); + } + fields = {}; + suggestions = []; + addField(t) { + this.fields[t.name] = t; + } + addSuggestion(t) { + this.suggestions.push(t); + } + getField(t) { + return this.fields[t]; + } + getDeepField(t) { + let [r5, ...n3] = t, i5 = this.getField(r5); + if (!i5) return; + let o3 = i5; + for (let s2 of n3) { + let a5; + if (o3.value instanceof e5 ? a5 = o3.value.getField(s2) : o3.value instanceof yt && (a5 = o3.value.getField(Number(s2))), !a5) return; + o3 = a5; + } + return o3; + } + getDeepFieldValue(t) { + return t.length === 0 ? this : this.getDeepField(t)?.value; + } + hasField(t) { + return !!this.getField(t); + } + removeAllFields() { + this.fields = {}; + } + removeField(t) { + delete this.fields[t]; + } + getFields() { + return this.fields; + } + isEmpty() { + return Object.keys(this.fields).length === 0; + } + getFieldValue(t) { + return this.getField(t)?.value; + } + getDeepSubSelectionValue(t) { + let r5 = this; + for (let n3 of t) { + if (!(r5 instanceof e5)) return; + let i5 = r5.getSubSelectionValue(n3); + if (!i5) return; + r5 = i5; + } + return r5; + } + getDeepSelectionParent(t) { + let r5 = this.getSelectionParent(); + if (!r5) return; + let n3 = r5; + for (let i5 of t) { + let o3 = n3.value.getFieldValue(i5); + if (!o3 || !(o3 instanceof e5)) return; + let s2 = o3.getSelectionParent(); + if (!s2) return; + n3 = s2; + } + return n3; + } + getSelectionParent() { + let t = this.getField("select")?.value.asObject(); + if (t) return { kind: "select", value: t }; + let r5 = this.getField("include")?.value.asObject(); + if (r5) return { kind: "include", value: r5 }; + } + getSubSelectionValue(t) { + return this.getSelectionParent()?.value.fields[t].value; + } + getPrintWidth() { + let t = Object.values(this.fields); + return t.length == 0 ? 2 : Math.max(...t.map((n3) => n3.getPrintWidth())) + 2; + } + write(t) { + let r5 = Object.values(this.fields); + if (r5.length === 0 && this.suggestions.length === 0) { + this.writeEmpty(t); + return; + } + this.writeWithContents(t, r5); + } + asObject() { + return this; + } + writeEmpty(t) { + let r5 = new ke("{}"); + this.hasError && r5.setColor(t.context.colors.red).underline(), t.write(r5); + } + writeWithContents(t, r5) { + t.writeLine("{").withIndent(() => { + t.writeJoined(gt, [...r5, ...this.suggestions]).newLine(); + }), t.write("}"), this.hasError && t.afterNextNewline(() => { + t.writeLine(t.context.colors.red("~".repeat(this.getPrintWidth()))); + }); + } + }; + var Z = class extends Ue { + static { + __name(this, "Z"); + } + constructor(r5) { + super(); + this.text = r5; + } + getPrintWidth() { + return this.text.length; + } + write(r5) { + let n3 = new ke(this.text); + this.hasError && n3.underline().setColor(r5.context.colors.red), r5.write(n3); + } + asObject() { + } + }; + var Jt = class { + static { + __name(this, "Jt"); + } + fields = []; + addField(t, r5) { + return this.fields.push({ write(n3) { + let { green: i5, dim: o3 } = n3.context.colors; + n3.write(i5(o3(`${t}: ${r5}`))).addMarginSymbol(i5(o3("+"))); + } }), this; + } + write(t) { + let { colors: { green: r5 } } = t.context; + t.writeLine(r5("{")).withIndent(() => { + t.writeJoined(gt, this.fields).newLine(); + }).write(r5("}")).addMarginSymbol(r5("+")); + } + }; + function Cr(e5, t, r5) { + switch (e5.kind) { + case "MutuallyExclusiveFields": + sc(e5, t); + break; + case "IncludeOnScalar": + ac(e5, t); + break; + case "EmptySelection": + lc(e5, t, r5); + break; + case "UnknownSelectionField": + dc(e5, t); + break; + case "InvalidSelectionValue": + mc(e5, t); + break; + case "UnknownArgument": + fc(e5, t); + break; + case "UnknownInputField": + gc(e5, t); + break; + case "RequiredArgumentMissing": + yc(e5, t); + break; + case "InvalidArgumentType": + hc(e5, t); + break; + case "InvalidArgumentValue": + wc(e5, t); + break; + case "ValueTooLarge": + xc(e5, t); + break; + case "SomeFieldsMissing": + bc(e5, t); + break; + case "TooManyFieldsGiven": + Pc(e5, t); + break; + case "Union": + Lo(e5, t, r5); + break; + default: + throw new Error("not implemented: " + e5.kind); + } + } + __name(Cr, "Cr"); + function sc(e5, t) { + let r5 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + r5 && (r5.getField(e5.firstField)?.markAsError(), r5.getField(e5.secondField)?.markAsError()), t.addErrorMessage((n3) => `Please ${n3.bold("either")} use ${n3.green(`\`${e5.firstField}\``)} or ${n3.green(`\`${e5.secondField}\``)}, but ${n3.red("not both")} at the same time.`); + } + __name(sc, "sc"); + function ac(e5, t) { + let [r5, n3] = wt(e5.selectionPath), i5 = e5.outputType, o3 = t.arguments.getDeepSelectionParent(r5)?.value; + if (o3 && (o3.getField(n3)?.markAsError(), i5)) for (let s2 of i5.fields) s2.isRelation && o3.addSuggestion(new pe(s2.name, "true")); + t.addErrorMessage((s2) => { + let a5 = `Invalid scalar field ${s2.red(`\`${n3}\``)} for ${s2.bold("include")} statement`; + return i5 ? a5 += ` on model ${s2.bold(i5.name)}. ${Gt(s2)}` : a5 += ".", a5 += ` +Note that ${s2.bold("include")} statements only accept relation fields.`, a5; + }); + } + __name(ac, "ac"); + function lc(e5, t, r5) { + let n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + if (n3) { + let i5 = n3.getField("omit")?.value.asObject(); + if (i5) { + uc(e5, t, i5); + return; + } + if (n3.hasField("select")) { + cc(e5, t); + return; + } + } + if (r5?.[qe(e5.outputType.name)]) { + pc(e5, t); + return; + } + t.addErrorMessage(() => `Unknown field at "${e5.selectionPath.join(".")} selection"`); + } + __name(lc, "lc"); + function uc(e5, t, r5) { + r5.removeAllFields(); + for (let n3 of e5.outputType.fields) r5.addSuggestion(new pe(n3.name, "false")); + t.addErrorMessage((n3) => `The ${n3.red("omit")} statement includes every field of the model ${n3.bold(e5.outputType.name)}. At least one field must be included in the result`); + } + __name(uc, "uc"); + function cc(e5, t) { + let r5 = e5.outputType, n3 = t.arguments.getDeepSelectionParent(e5.selectionPath)?.value, i5 = n3?.isEmpty() ?? false; + n3 && (n3.removeAllFields(), Go(n3, r5)), t.addErrorMessage((o3) => i5 ? `The ${o3.red("`select`")} statement for type ${o3.bold(r5.name)} must not be empty. ${Gt(o3)}` : `The ${o3.red("`select`")} statement for type ${o3.bold(r5.name)} needs ${o3.bold("at least one truthy value")}.`); + } + __name(cc, "cc"); + function pc(e5, t) { + let r5 = new Jt(); + for (let i5 of e5.outputType.fields) i5.isRelation || r5.addField(i5.name, "false"); + let n3 = new pe("omit", r5).makeRequired(); + if (e5.selectionPath.length === 0) t.arguments.addSuggestion(n3); + else { + let [i5, o3] = wt(e5.selectionPath), a5 = t.arguments.getDeepSelectionParent(i5)?.value.asObject()?.getField(o3); + if (a5) { + let u = a5?.value.asObject() ?? new ht(); + u.addSuggestion(n3), a5.value = u; + } + } + t.addErrorMessage((i5) => `The global ${i5.red("omit")} configuration excludes every field of the model ${i5.bold(e5.outputType.name)}. At least one field must be included in the result`); + } + __name(pc, "pc"); + function dc(e5, t) { + let r5 = zo(e5.selectionPath, t); + if (r5.parentKind !== "unknown") { + r5.field.markAsError(); + let n3 = r5.parent; + switch (r5.parentKind) { + case "select": + Go(n3, e5.outputType); + break; + case "include": + Ec(n3, e5.outputType); + break; + case "omit": + Tc(n3, e5.outputType); + break; + } + } + t.addErrorMessage((n3) => { + let i5 = [`Unknown field ${n3.red(`\`${r5.fieldName}\``)}`]; + return r5.parentKind !== "unknown" && i5.push(`for ${n3.bold(r5.parentKind)} statement`), i5.push(`on model ${n3.bold(`\`${e5.outputType.name}\``)}.`), i5.push(Gt(n3)), i5.join(" "); + }); + } + __name(dc, "dc"); + function mc(e5, t) { + let r5 = zo(e5.selectionPath, t); + r5.parentKind !== "unknown" && r5.field.value.markAsError(), t.addErrorMessage((n3) => `Invalid value for selection field \`${n3.red(r5.fieldName)}\`: ${e5.underlyingError}`); + } + __name(mc, "mc"); + function fc(e5, t) { + let r5 = e5.argumentPath[0], n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + n3 && (n3.getField(r5)?.markAsError(), vc(n3, e5.arguments)), t.addErrorMessage((i5) => Qo(i5, r5, e5.arguments.map((o3) => o3.name))); + } + __name(fc, "fc"); + function gc(e5, t) { + let [r5, n3] = wt(e5.argumentPath), i5 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + if (i5) { + i5.getDeepField(e5.argumentPath)?.markAsError(); + let o3 = i5.getDeepFieldValue(r5)?.asObject(); + o3 && Ho(o3, e5.inputType); + } + t.addErrorMessage((o3) => Qo(o3, n3, e5.inputType.fields.map((s2) => s2.name))); + } + __name(gc, "gc"); + function Qo(e5, t, r5) { + let n3 = [`Unknown argument \`${e5.red(t)}\`.`], i5 = Ac(t, r5); + return i5 && n3.push(`Did you mean \`${e5.green(i5)}\`?`), r5.length > 0 && n3.push(Gt(e5)), n3.join(" "); + } + __name(Qo, "Qo"); + function yc(e5, t) { + let r5; + t.addErrorMessage((u) => r5?.value instanceof Z && r5.value.text === "null" ? `Argument \`${u.green(o3)}\` must not be ${u.red("null")}.` : `Argument \`${u.green(o3)}\` is missing.`); + let n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + if (!n3) return; + let [i5, o3] = wt(e5.argumentPath), s2 = new Jt(), a5 = n3.getDeepFieldValue(i5)?.asObject(); + if (a5) { + if (r5 = a5.getField(o3), r5 && a5.removeField(o3), e5.inputTypes.length === 1 && e5.inputTypes[0].kind === "object") { + for (let u of e5.inputTypes[0].fields) s2.addField(u.name, u.typeNames.join(" | ")); + a5.addSuggestion(new pe(o3, s2).makeRequired()); + } else { + let u = e5.inputTypes.map(Jo).join(" | "); + a5.addSuggestion(new pe(o3, u).makeRequired()); + } + if (e5.dependentArgumentPath) { + n3.getDeepField(e5.dependentArgumentPath)?.markAsError(); + let [, u] = wt(e5.dependentArgumentPath); + t.addErrorMessage((m3) => `Argument \`${m3.green(o3)}\` is required because argument \`${m3.green(u)}\` was provided.`); + } + } + } + __name(yc, "yc"); + function Jo(e5) { + return e5.kind === "list" ? `${Jo(e5.elementType)}[]` : e5.name; + } + __name(Jo, "Jo"); + function hc(e5, t) { + let r5 = e5.argument.name, n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + n3 && n3.getDeepFieldValue(e5.argumentPath)?.markAsError(), t.addErrorMessage((i5) => { + let o3 = Nr("or", e5.argument.typeNames.map((s2) => i5.green(s2))); + return `Argument \`${i5.bold(r5)}\`: Invalid value provided. Expected ${o3}, provided ${i5.red(e5.inferredType)}.`; + }); + } + __name(hc, "hc"); + function wc(e5, t) { + let r5 = e5.argument.name, n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + n3 && n3.getDeepFieldValue(e5.argumentPath)?.markAsError(), t.addErrorMessage((i5) => { + let o3 = [`Invalid value for argument \`${i5.bold(r5)}\``]; + if (e5.underlyingError && o3.push(`: ${e5.underlyingError}`), o3.push("."), e5.argument.typeNames.length > 0) { + let s2 = Nr("or", e5.argument.typeNames.map((a5) => i5.green(a5))); + o3.push(` Expected ${s2}.`); + } + return o3.join(""); + }); + } + __name(wc, "wc"); + function xc(e5, t) { + let r5 = e5.argument.name, n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(), i5; + if (n3) { + let s2 = n3.getDeepField(e5.argumentPath)?.value; + s2?.markAsError(), s2 instanceof Z && (i5 = s2.text); + } + t.addErrorMessage((o3) => { + let s2 = ["Unable to fit value"]; + return i5 && s2.push(o3.red(i5)), s2.push(`into a 64-bit signed integer for field \`${o3.bold(r5)}\``), s2.join(" "); + }); + } + __name(xc, "xc"); + function bc(e5, t) { + let r5 = e5.argumentPath[e5.argumentPath.length - 1], n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(); + if (n3) { + let i5 = n3.getDeepFieldValue(e5.argumentPath)?.asObject(); + i5 && Ho(i5, e5.inputType); + } + t.addErrorMessage((i5) => { + let o3 = [`Argument \`${i5.bold(r5)}\` of type ${i5.bold(e5.inputType.name)} needs`]; + return e5.constraints.minFieldCount === 1 ? e5.constraints.requiredFields ? o3.push(`${i5.green("at least one of")} ${Nr("or", e5.constraints.requiredFields.map((s2) => `\`${i5.bold(s2)}\``))} arguments.`) : o3.push(`${i5.green("at least one")} argument.`) : o3.push(`${i5.green(`at least ${e5.constraints.minFieldCount}`)} arguments.`), o3.push(Gt(i5)), o3.join(" "); + }); + } + __name(bc, "bc"); + function Pc(e5, t) { + let r5 = e5.argumentPath[e5.argumentPath.length - 1], n3 = t.arguments.getDeepSubSelectionValue(e5.selectionPath)?.asObject(), i5 = []; + if (n3) { + let o3 = n3.getDeepFieldValue(e5.argumentPath)?.asObject(); + o3 && (o3.markAsError(), i5 = Object.keys(o3.getFields())); + } + t.addErrorMessage((o3) => { + let s2 = [`Argument \`${o3.bold(r5)}\` of type ${o3.bold(e5.inputType.name)} needs`]; + return e5.constraints.minFieldCount === 1 && e5.constraints.maxFieldCount == 1 ? s2.push(`${o3.green("exactly one")} argument,`) : e5.constraints.maxFieldCount == 1 ? s2.push(`${o3.green("at most one")} argument,`) : s2.push(`${o3.green(`at most ${e5.constraints.maxFieldCount}`)} arguments,`), s2.push(`but you provided ${Nr("and", i5.map((a5) => o3.red(a5)))}. Please choose`), e5.constraints.maxFieldCount === 1 ? s2.push("one.") : s2.push(`${e5.constraints.maxFieldCount}.`), s2.join(" "); + }); + } + __name(Pc, "Pc"); + function Go(e5, t) { + for (let r5 of t.fields) e5.hasField(r5.name) || e5.addSuggestion(new pe(r5.name, "true")); + } + __name(Go, "Go"); + function Ec(e5, t) { + for (let r5 of t.fields) r5.isRelation && !e5.hasField(r5.name) && e5.addSuggestion(new pe(r5.name, "true")); + } + __name(Ec, "Ec"); + function Tc(e5, t) { + for (let r5 of t.fields) !e5.hasField(r5.name) && !r5.isRelation && e5.addSuggestion(new pe(r5.name, "true")); + } + __name(Tc, "Tc"); + function vc(e5, t) { + for (let r5 of t) e5.hasField(r5.name) || e5.addSuggestion(new pe(r5.name, r5.typeNames.join(" | "))); + } + __name(vc, "vc"); + function zo(e5, t) { + let [r5, n3] = wt(e5), i5 = t.arguments.getDeepSubSelectionValue(r5)?.asObject(); + if (!i5) return { parentKind: "unknown", fieldName: n3 }; + let o3 = i5.getFieldValue("select")?.asObject(), s2 = i5.getFieldValue("include")?.asObject(), a5 = i5.getFieldValue("omit")?.asObject(), u = o3?.getField(n3); + return o3 && u ? { parentKind: "select", parent: o3, field: u, fieldName: n3 } : (u = s2?.getField(n3), s2 && u ? { parentKind: "include", field: u, parent: s2, fieldName: n3 } : (u = a5?.getField(n3), a5 && u ? { parentKind: "omit", field: u, parent: a5, fieldName: n3 } : { parentKind: "unknown", fieldName: n3 })); + } + __name(zo, "zo"); + function Ho(e5, t) { + if (t.kind === "object") for (let r5 of t.fields) e5.hasField(r5.name) || e5.addSuggestion(new pe(r5.name, r5.typeNames.join(" | "))); + } + __name(Ho, "Ho"); + function wt(e5) { + let t = [...e5], r5 = t.pop(); + if (!r5) throw new Error("unexpected empty path"); + return [t, r5]; + } + __name(wt, "wt"); + function Gt({ green: e5, enabled: t }) { + return "Available options are " + (t ? `listed in ${e5("green")}` : "marked with ?") + "."; + } + __name(Gt, "Gt"); + function Nr(e5, t) { + if (t.length === 1) return t[0]; + let r5 = [...t], n3 = r5.pop(); + return `${r5.join(", ")} ${e5} ${n3}`; + } + __name(Nr, "Nr"); + var Sc = 3; + function Ac(e5, t) { + let r5 = 1 / 0, n3; + for (let i5 of t) { + let o3 = (0, Bo.default)(e5, i5); + o3 > Sc || o3 < r5 && (r5 = o3, n3 = i5); + } + return n3; + } + __name(Ac, "Ac"); + var Ko = require_dist(); + var zt = class { + static { + __name(this, "zt"); + } + modelName; + name; + typeName; + isList; + isEnum; + constructor(t, r5, n3, i5, o3) { + this.modelName = t, this.name = r5, this.typeName = n3, this.isList = i5, this.isEnum = o3; + } + _toGraphQLInputType() { + let t = this.isList ? "List" : "", r5 = this.isEnum ? "Enum" : ""; + return `${t}${r5}${this.typeName}FieldRefInput<${this.modelName}>`; + } + }; + function xt(e5) { + return e5 instanceof zt; + } + __name(xt, "xt"); + var Wo = ": "; + var Dr = class { + static { + __name(this, "Dr"); + } + constructor(t, r5) { + this.name = t; + this.value = r5; + } + hasError = false; + markAsError() { + this.hasError = true; + } + getPrintWidth() { + return this.name.length + this.value.getPrintWidth() + Wo.length; + } + write(t) { + let r5 = new ke(this.name); + this.hasError && r5.underline().setColor(t.context.colors.red), t.write(r5).write(Wo).write(this.value); + } + }; + var jn = class { + static { + __name(this, "jn"); + } + arguments; + errorMessages = []; + constructor(t) { + this.arguments = t; + } + write(t) { + t.write(this.arguments); + } + addErrorMessage(t) { + this.errorMessages.push(t); + } + renderAllMessages(t) { + return this.errorMessages.map((r5) => r5(t)).join(` +`); + } + }; + function bt(e5) { + return new jn(Zo(e5)); + } + __name(bt, "bt"); + function Zo(e5) { + let t = new ht(); + for (let [r5, n3] of Object.entries(e5)) { + let i5 = new Dr(r5, Xo(n3)); + t.addField(i5); + } + return t; + } + __name(Zo, "Zo"); + function Xo(e5) { + if (typeof e5 == "string") return new Z(JSON.stringify(e5)); + if (typeof e5 == "number" || typeof e5 == "boolean") return new Z(String(e5)); + if (typeof e5 == "bigint") return new Z(`${e5}n`); + if (e5 === null) return new Z("null"); + if (e5 === void 0) return new Z("undefined"); + if (dt(e5)) return new Z(`new Prisma.Decimal("${e5.toFixed()}")`); + if (e5 instanceof Uint8Array) return Buffer.isBuffer(e5) ? new Z(`Buffer.alloc(${e5.byteLength})`) : new Z(`new Uint8Array(${e5.byteLength})`); + if (e5 instanceof Date) { + let t = pt(e5) ? e5.toISOString() : "Invalid Date"; + return new Z(`new Date("${t}")`); + } + return (0, Ko.isObjectEnumValue)(e5) ? new Z(`Prisma.${e5._getName()}`) : xt(e5) ? new Z(`prisma.${qe(e5.modelName)}.$fields.${e5.name}`) : Array.isArray(e5) ? Rc(e5) : typeof e5 == "object" ? Zo(e5) : new Z(Object.prototype.toString.call(e5)); + } + __name(Xo, "Xo"); + function Rc(e5) { + let t = new yt(); + for (let r5 of e5) t.addItem(Xo(r5)); + return t; + } + __name(Rc, "Rc"); + function Mr(e5, t) { + let r5 = t === "pretty" ? jo : Or, n3 = e5.renderAllMessages(r5), i5 = new ft(0, { colors: r5 }).write(e5).toString(); + return { message: n3, args: i5 }; + } + __name(Mr, "Mr"); + function Fr({ args: e5, errors: t, errorFormat: r5, callsite: n3, originalMethod: i5, clientVersion: o3, globalOmit: s2 }) { + let a5 = bt(e5); + for (let T2 of t) Cr(T2, a5, s2); + let { message: u, args: m3 } = Mr(a5, r5), P = Rr({ message: u, callsite: n3, originalMethod: i5, showColors: r5 === "pretty", callArguments: m3 }); + throw new Yo.PrismaClientValidationError(P, { clientVersion: o3 }); + } + __name(Fr, "Fr"); + function Oe(e5) { + return e5.replace(/^./, (t) => t.toLowerCase()); + } + __name(Oe, "Oe"); + function ts(e5, t, r5) { + let n3 = Oe(r5); + return !t.result || !(t.result.$allModels || t.result[n3]) ? e5 : Cc({ ...e5, ...es(t.name, e5, t.result.$allModels), ...es(t.name, e5, t.result[n3]) }); + } + __name(ts, "ts"); + function Cc(e5) { + let t = new Ie(), r5 = /* @__PURE__ */ __name((n3, i5) => t.getOrCreate(n3, () => i5.has(n3) ? [n3] : (i5.add(n3), e5[n3] ? e5[n3].needs.flatMap((o3) => r5(o3, i5)) : [n3])), "r"); + return vr(e5, (n3) => ({ ...n3, needs: r5(n3.name, /* @__PURE__ */ new Set()) })); + } + __name(Cc, "Cc"); + function es(e5, t, r5) { + return r5 ? vr(r5, ({ needs: n3, compute: i5 }, o3) => ({ name: o3, needs: n3 ? Object.keys(n3).filter((s2) => n3[s2]) : [], compute: Ic(t, o3, i5) })) : {}; + } + __name(es, "es"); + function Ic(e5, t, r5) { + let n3 = e5?.[t]?.compute; + return n3 ? (i5, o3) => r5({ ...i5, [t]: n3(i5, o3) }, o3) : r5; + } + __name(Ic, "Ic"); + function rs(e5, t) { + if (!t) return e5; + let r5 = { ...e5 }; + for (let n3 of Object.values(t)) if (e5[n3.name]) for (let i5 of n3.needs) r5[i5] = true; + return r5; + } + __name(rs, "rs"); + function ns(e5, t) { + if (!t) return e5; + let r5 = { ...e5 }; + for (let n3 of Object.values(t)) if (!e5[n3.name]) for (let i5 of n3.needs) delete r5[i5]; + return r5; + } + __name(ns, "ns"); + var _r3 = class { + static { + __name(this, "_r"); + } + constructor(t, r5) { + this.extension = t; + this.previous = r5; + } + computedFieldsCache = new Ie(); + modelExtensionsCache = new Ie(); + queryCallbacksCache = new Ie(); + clientExtensions = Nt(() => this.extension.client ? { ...this.previous?.getAllClientExtensions(), ...this.extension.client } : this.previous?.getAllClientExtensions()); + batchCallbacks = Nt(() => { + let t = this.previous?.getAllBatchQueryCallbacks() ?? [], r5 = this.extension.query?.$__internalBatch; + return r5 ? t.concat(r5) : t; + }); + getAllComputedFields(t) { + return this.computedFieldsCache.getOrCreate(t, () => ts(this.previous?.getAllComputedFields(t), this.extension, t)); + } + getAllClientExtensions() { + return this.clientExtensions.get(); + } + getAllModelExtensions(t) { + return this.modelExtensionsCache.getOrCreate(t, () => { + let r5 = Oe(t); + return !this.extension.model || !(this.extension.model[r5] || this.extension.model.$allModels) ? this.previous?.getAllModelExtensions(t) : { ...this.previous?.getAllModelExtensions(t), ...this.extension.model.$allModels, ...this.extension.model[r5] }; + }); + } + getAllQueryCallbacks(t, r5) { + return this.queryCallbacksCache.getOrCreate(`${t}:${r5}`, () => { + let n3 = this.previous?.getAllQueryCallbacks(t, r5) ?? [], i5 = [], o3 = this.extension.query; + return !o3 || !(o3[t] || o3.$allModels || o3[r5] || o3.$allOperations) ? n3 : (o3[t] !== void 0 && (o3[t][r5] !== void 0 && i5.push(o3[t][r5]), o3[t].$allOperations !== void 0 && i5.push(o3[t].$allOperations)), t !== "$none" && o3.$allModels !== void 0 && (o3.$allModels[r5] !== void 0 && i5.push(o3.$allModels[r5]), o3.$allModels.$allOperations !== void 0 && i5.push(o3.$allModels.$allOperations)), o3[r5] !== void 0 && i5.push(o3[r5]), o3.$allOperations !== void 0 && i5.push(o3.$allOperations), n3.concat(i5)); + }); + } + getAllBatchQueryCallbacks() { + return this.batchCallbacks.get(); + } + }; + var Pt = class e5 { + static { + __name(this, "e"); + } + constructor(t) { + this.head = t; + } + static empty() { + return new e5(); + } + static single(t) { + return new e5(new _r3(t)); + } + isEmpty() { + return this.head === void 0; + } + append(t) { + return new e5(new _r3(t, this.head)); + } + getAllComputedFields(t) { + return this.head?.getAllComputedFields(t); + } + getAllClientExtensions() { + return this.head?.getAllClientExtensions(); + } + getAllModelExtensions(t) { + return this.head?.getAllModelExtensions(t); + } + getAllQueryCallbacks(t, r5) { + return this.head?.getAllQueryCallbacks(t, r5) ?? []; + } + getAllBatchQueryCallbacks() { + return this.head?.getAllBatchQueryCallbacks() ?? []; + } + }; + var $r = class { + static { + __name(this, "$r"); + } + constructor(t) { + this.name = t; + } + }; + function is(e5) { + return e5 instanceof $r; + } + __name(is, "is"); + function os(e5) { + return new $r(e5); + } + __name(os, "os"); + var ss = /* @__PURE__ */ Symbol(); + var Ht = class { + static { + __name(this, "Ht"); + } + constructor(t) { + if (t !== ss) throw new Error("Skip instance can not be constructed directly"); + } + ifUndefined(t) { + return t === void 0 ? Lr : t; + } + }; + var Lr = new Ht(ss); + function fe(e5) { + return e5 instanceof Ht; + } + __name(fe, "fe"); + var kc = { findUnique: "findUnique", findUniqueOrThrow: "findUniqueOrThrow", findFirst: "findFirst", findFirstOrThrow: "findFirstOrThrow", findMany: "findMany", count: "aggregate", create: "createOne", createMany: "createMany", createManyAndReturn: "createManyAndReturn", update: "updateOne", updateMany: "updateMany", updateManyAndReturn: "updateManyAndReturn", upsert: "upsertOne", delete: "deleteOne", deleteMany: "deleteMany", executeRaw: "executeRaw", queryRaw: "queryRaw", aggregate: "aggregate", groupBy: "groupBy", runCommandRaw: "runCommandRaw", findRaw: "findRaw", aggregateRaw: "aggregateRaw" }; + var ls = "explicitly `undefined` values are not allowed"; + function Vr({ modelName: e5, action: t, args: r5, runtimeDataModel: n3, extensions: i5 = Pt.empty(), callsite: o3, clientMethod: s2, errorFormat: a5, clientVersion: u, previewFeatures: m3, globalOmit: P, wrapRawValues: T2 }) { + let S = new Bn({ runtimeDataModel: n3, modelName: e5, action: t, rootArgs: r5, callsite: o3, extensions: i5, selectionPath: [], argumentPath: [], originalMethod: s2, errorFormat: a5, clientVersion: u, previewFeatures: m3, globalOmit: P, wrapRawValues: T2 }); + return { modelName: e5, action: kc[t], query: Wt(r5, S) }; + } + __name(Vr, "Vr"); + function Wt({ select: e5, include: t, ...r5 } = {}, n3) { + let i5 = r5.omit; + return delete r5.omit, { arguments: cs(r5, n3), selection: Oc(e5, t, i5, n3) }; + } + __name(Wt, "Wt"); + function Oc(e5, t, r5, n3) { + return e5 ? (t ? n3.throwValidationError({ kind: "MutuallyExclusiveFields", firstField: "include", secondField: "select", selectionPath: n3.getSelectionPath() }) : r5 && n3.throwValidationError({ kind: "MutuallyExclusiveFields", firstField: "omit", secondField: "select", selectionPath: n3.getSelectionPath() }), Fc(e5, n3)) : Nc(n3, t, r5); + } + __name(Oc, "Oc"); + function Nc(e5, t, r5) { + let n3 = {}; + return e5.modelOrType && !e5.isRawAction() && (n3.$composites = true, n3.$scalars = true), t && Dc(n3, t, e5), Mc(n3, r5, e5), n3; + } + __name(Nc, "Nc"); + function Dc(e5, t, r5) { + for (let [n3, i5] of Object.entries(t)) { + if (fe(i5)) continue; + let o3 = r5.nestSelection(n3); + if (Qn(i5, o3), i5 === false || i5 === void 0) { + e5[n3] = false; + continue; + } + let s2 = r5.findField(n3); + if (s2 && s2.kind !== "object" && r5.throwValidationError({ kind: "IncludeOnScalar", selectionPath: r5.getSelectionPath().concat(n3), outputType: r5.getOutputTypeDescription() }), s2) { + e5[n3] = Wt(i5 === true ? {} : i5, o3); + continue; + } + if (i5 === true) { + e5[n3] = true; + continue; + } + e5[n3] = Wt(i5, o3); + } + } + __name(Dc, "Dc"); + function Mc(e5, t, r5) { + let n3 = r5.getComputedFields(), i5 = { ...r5.getGlobalOmit(), ...t }, o3 = ns(i5, n3); + for (let [s2, a5] of Object.entries(o3)) { + if (fe(a5)) continue; + Qn(a5, r5.nestSelection(s2)); + let u = r5.findField(s2); + n3?.[s2] && !u || (e5[s2] = !a5); + } + } + __name(Mc, "Mc"); + function Fc(e5, t) { + let r5 = {}, n3 = t.getComputedFields(), i5 = rs(e5, n3); + for (let [o3, s2] of Object.entries(i5)) { + if (fe(s2)) continue; + let a5 = t.nestSelection(o3); + Qn(s2, a5); + let u = t.findField(o3); + if (!(n3?.[o3] && !u)) { + if (s2 === false || s2 === void 0 || fe(s2)) { + r5[o3] = false; + continue; + } + if (s2 === true) { + u?.kind === "object" ? r5[o3] = Wt({}, a5) : r5[o3] = true; + continue; + } + r5[o3] = Wt(s2, a5); + } + } + return r5; + } + __name(Fc, "Fc"); + function us(e5, t) { + if (e5 === null) return null; + if (typeof e5 == "string" || typeof e5 == "number" || typeof e5 == "boolean") return e5; + if (typeof e5 == "bigint") return { $type: "BigInt", value: String(e5) }; + if (ct(e5)) { + if (pt(e5)) return { $type: "DateTime", value: e5.toISOString() }; + t.throwValidationError({ kind: "InvalidArgumentValue", selectionPath: t.getSelectionPath(), argumentPath: t.getArgumentPath(), argument: { name: t.getArgumentName(), typeNames: ["Date"] }, underlyingError: "Provided Date object is invalid" }); + } + if (is(e5)) return { $type: "Param", value: e5.name }; + if (xt(e5)) return { $type: "FieldRef", value: { _ref: e5.name, _container: e5.modelName } }; + if (Array.isArray(e5)) return _c5(e5, t); + if (ArrayBuffer.isView(e5)) { + let { buffer: r5, byteOffset: n3, byteLength: i5 } = e5; + return { $type: "Bytes", value: Buffer.from(r5, n3, i5).toString("base64") }; + } + if ($c(e5)) return e5.values; + if (dt(e5)) return { $type: "Decimal", value: e5.toFixed() }; + if ((0, as.isObjectEnumValue)(e5)) { + let r5 = e5._getName(); + if (r5 !== "DbNull" && r5 !== "JsonNull" && r5 !== "AnyNull") throw new Error(`Invalid ObjectEnumValue: expected DbNull, JsonNull, or AnyNull, got ${r5}`); + return { $type: "Enum", value: r5 }; + } + if (Lc(e5)) return e5.toJSON(); + if (typeof e5 == "object") return cs(e5, t); + t.throwValidationError({ kind: "InvalidArgumentValue", selectionPath: t.getSelectionPath(), argumentPath: t.getArgumentPath(), argument: { name: t.getArgumentName(), typeNames: [] }, underlyingError: `We could not serialize ${Object.prototype.toString.call(e5)} value. Serialize the object to JSON or implement a ".toJSON()" method on it` }); + } + __name(us, "us"); + function cs(e5, t) { + if (t.shouldWrapRawValues() && e5.$type) return { $type: "Raw", value: e5 }; + let r5 = {}; + for (let n3 in e5) { + let i5 = e5[n3], o3 = t.nestArgument(n3); + fe(i5) || (i5 !== void 0 ? r5[n3] = us(i5, o3) : t.isPreviewFeatureOn("strictUndefinedChecks") && t.throwValidationError({ kind: "InvalidArgumentValue", argumentPath: o3.getArgumentPath(), selectionPath: t.getSelectionPath(), argument: { name: t.getArgumentName(), typeNames: [] }, underlyingError: ls })); + } + return r5; + } + __name(cs, "cs"); + function _c5(e5, t) { + let r5 = []; + for (let n3 = 0; n3 < e5.length; n3++) { + let i5 = t.nestArgument(String(n3)), o3 = e5[n3]; + if (o3 === void 0 || fe(o3)) { + let s2 = o3 === void 0 ? "undefined" : "Prisma.skip"; + t.throwValidationError({ kind: "InvalidArgumentValue", selectionPath: i5.getSelectionPath(), argumentPath: i5.getArgumentPath(), argument: { name: `${t.getArgumentName()}[${n3}]`, typeNames: [] }, underlyingError: `Can not use \`${s2}\` value within array. Use \`null\` or filter out \`${s2}\` values` }); + } + r5.push(us(o3, i5)); + } + return r5; + } + __name(_c5, "_c"); + function $c(e5) { + return typeof e5 == "object" && e5 !== null && e5.__prismaRawParameters__ === true; + } + __name($c, "$c"); + function Lc(e5) { + return typeof e5 == "object" && e5 !== null && typeof e5.toJSON == "function"; + } + __name(Lc, "Lc"); + function Qn(e5, t) { + e5 === void 0 && t.isPreviewFeatureOn("strictUndefinedChecks") && t.throwValidationError({ kind: "InvalidSelectionValue", selectionPath: t.getSelectionPath(), underlyingError: ls }); + } + __name(Qn, "Qn"); + var Bn = class e5 { + static { + __name(this, "e"); + } + constructor(t) { + this.params = t; + this.params.modelName && (this.modelOrType = this.params.runtimeDataModel.models[this.params.modelName] ?? this.params.runtimeDataModel.types[this.params.modelName]); + } + modelOrType; + throwValidationError(t) { + Fr({ errors: [t], originalMethod: this.params.originalMethod, args: this.params.rootArgs ?? {}, callsite: this.params.callsite, errorFormat: this.params.errorFormat, clientVersion: this.params.clientVersion, globalOmit: this.params.globalOmit }); + } + getSelectionPath() { + return this.params.selectionPath; + } + getArgumentPath() { + return this.params.argumentPath; + } + getArgumentName() { + return this.params.argumentPath[this.params.argumentPath.length - 1]; + } + getOutputTypeDescription() { + if (!(!this.params.modelName || !this.modelOrType)) return { name: this.params.modelName, fields: this.modelOrType.fields.map((t) => ({ name: t.name, typeName: "boolean", isRelation: t.kind === "object" })) }; + } + isRawAction() { + return ["executeRaw", "queryRaw", "runCommandRaw", "findRaw", "aggregateRaw"].includes(this.params.action); + } + isPreviewFeatureOn(t) { + return this.params.previewFeatures.includes(t); + } + shouldWrapRawValues() { + return this.params.wrapRawValues ?? true; + } + getComputedFields() { + if (this.params.modelName) return this.params.extensions.getAllComputedFields(this.params.modelName); + } + findField(t) { + return this.modelOrType?.fields.find((r5) => r5.name === t); + } + nestSelection(t) { + let r5 = this.findField(t), n3 = r5?.kind === "object" ? r5.type : void 0; + return new e5({ ...this.params, modelName: n3, selectionPath: this.params.selectionPath.concat(t) }); + } + getGlobalOmit() { + return this.params.modelName && this.shouldApplyGlobalOmit() ? this.params.globalOmit?.[qe(this.params.modelName)] ?? {} : {}; + } + shouldApplyGlobalOmit() { + switch (this.params.action) { + case "findFirst": + case "findFirstOrThrow": + case "findUniqueOrThrow": + case "findMany": + case "upsert": + case "findUnique": + case "createManyAndReturn": + case "create": + case "update": + case "updateManyAndReturn": + case "delete": + return true; + case "executeRaw": + case "aggregateRaw": + case "runCommandRaw": + case "findRaw": + case "createMany": + case "deleteMany": + case "groupBy": + case "updateMany": + case "count": + case "aggregate": + case "queryRaw": + return false; + default: + $e(this.params.action, "Unknown action"); + } + } + nestArgument(t) { + return new e5({ ...this.params, argumentPath: this.params.argumentPath.concat(t) }); + } + }; + function ps(e5, t) { + let r5 = Nt(() => Vc(t)); + Object.defineProperty(e5, "dmmf", { get: /* @__PURE__ */ __name(() => r5.get(), "get") }); + } + __name(ps, "ps"); + function Vc(e5) { + return { datamodel: { models: Jn(e5.models), enums: Jn(e5.enums), types: Jn(e5.types) } }; + } + __name(Vc, "Vc"); + function Jn(e5) { + return Object.entries(e5).map(([t, r5]) => ({ name: t, ...r5 })); + } + __name(Jn, "Jn"); + var Gn = /* @__PURE__ */ new WeakMap(); + var qr = "$$PrismaTypedSql"; + var Kt = class { + static { + __name(this, "Kt"); + } + constructor(t, r5) { + Gn.set(this, { sql: t, values: r5 }), Object.defineProperty(this, qr, { value: qr }); + } + get sql() { + return Gn.get(this).sql; + } + get values() { + return Gn.get(this).values; + } + }; + function ds(e5) { + return (...t) => new Kt(e5, t); + } + __name(ds, "ds"); + function Ur(e5) { + return e5 != null && e5[qr] === qr; + } + __name(Ur, "Ur"); + var nu = require_dist(); + var iu = __require("node:async_hooks"); + var ou = __require("node:events"); + function Zt(e5) { + return { getKeys() { + return Object.keys(e5); + }, getPropertyValue(t) { + return e5[t]; + } }; + } + __name(Zt, "Zt"); + function ae(e5, t) { + return { getKeys() { + return [e5]; + }, getPropertyValue() { + return t(); + } }; + } + __name(ae, "ae"); + function We(e5) { + let t = new Ie(); + return { getKeys() { + return e5.getKeys(); + }, getPropertyValue(r5) { + return t.getOrCreate(r5, () => e5.getPropertyValue(r5)); + }, getPropertyDescriptor(r5) { + return e5.getPropertyDescriptor?.(r5); + } }; + } + __name(We, "We"); + var jr = { enumerable: true, configurable: true, writable: true }; + function Br(e5) { + let t = new Set(e5); + return { getPrototypeOf: /* @__PURE__ */ __name(() => Object.prototype, "getPrototypeOf"), getOwnPropertyDescriptor: /* @__PURE__ */ __name(() => jr, "getOwnPropertyDescriptor"), has: /* @__PURE__ */ __name((r5, n3) => t.has(n3), "has"), set: /* @__PURE__ */ __name((r5, n3, i5) => t.add(n3) && Reflect.set(r5, n3, i5), "set"), ownKeys: /* @__PURE__ */ __name(() => [...t], "ownKeys") }; + } + __name(Br, "Br"); + var ms = /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom"); + function ve(e5, t) { + let r5 = qc(t), n3 = /* @__PURE__ */ new Set(), i5 = new Proxy(e5, { get(o3, s2) { + if (n3.has(s2)) return o3[s2]; + let a5 = r5.get(s2); + return a5 ? a5.getPropertyValue(s2) : o3[s2]; + }, has(o3, s2) { + if (n3.has(s2)) return true; + let a5 = r5.get(s2); + return a5 ? a5.has?.(s2) ?? true : Reflect.has(o3, s2); + }, ownKeys(o3) { + let s2 = fs(Reflect.ownKeys(o3), r5), a5 = fs(Array.from(r5.keys()), r5); + return [.../* @__PURE__ */ new Set([...s2, ...a5, ...n3])]; + }, set(o3, s2, a5) { + return r5.get(s2)?.getPropertyDescriptor?.(s2)?.writable === false ? false : (n3.add(s2), Reflect.set(o3, s2, a5)); + }, getOwnPropertyDescriptor(o3, s2) { + let a5 = Reflect.getOwnPropertyDescriptor(o3, s2); + if (a5 && !a5.configurable) return a5; + let u = r5.get(s2); + return u ? u.getPropertyDescriptor ? { ...jr, ...u?.getPropertyDescriptor(s2) } : jr : a5; + }, defineProperty(o3, s2, a5) { + return n3.add(s2), Reflect.defineProperty(o3, s2, a5); + }, getPrototypeOf: /* @__PURE__ */ __name(() => Object.prototype, "getPrototypeOf") }); + return i5[ms] = function() { + let o3 = { ...this }; + return delete o3[ms], o3; + }, i5; + } + __name(ve, "ve"); + function qc(e5) { + let t = /* @__PURE__ */ new Map(); + for (let r5 of e5) { + let n3 = r5.getKeys(); + for (let i5 of n3) t.set(i5, r5); + } + return t; + } + __name(qc, "qc"); + function fs(e5, t) { + return e5.filter((r5) => t.get(r5)?.has?.(r5) ?? true); + } + __name(fs, "fs"); + function Et(e5) { + return { getKeys() { + return e5; + }, has() { + return false; + }, getPropertyValue() { + } }; + } + __name(Et, "Et"); + function gs(e5) { + if (e5 === void 0) return ""; + let t = bt(e5); + return new ft(0, { colors: Or }).write(t).toString(); + } + __name(gs, "gs"); + var Xt = ""; + function ys(e5) { + var t = e5.split(` +`); + return t.reduce(function(r5, n3) { + var i5 = Bc(n3) || Jc(n3) || Hc(n3) || Xc(n3) || Kc(n3); + return i5 && r5.push(i5), r5; + }, []); + } + __name(ys, "ys"); + var Uc = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var jc = /\((\S*)(?::(\d+))(?::(\d+))\)/; + function Bc(e5) { + var t = Uc.exec(e5); + if (!t) return null; + var r5 = t[2] && t[2].indexOf("native") === 0, n3 = t[2] && t[2].indexOf("eval") === 0, i5 = jc.exec(t[2]); + return n3 && i5 != null && (t[2] = i5[1], t[3] = i5[2], t[4] = i5[3]), { file: r5 ? null : t[2], methodName: t[1] || Xt, arguments: r5 ? [t[2]] : [], lineNumber: t[3] ? +t[3] : null, column: t[4] ? +t[4] : null }; + } + __name(Bc, "Bc"); + var Qc = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + function Jc(e5) { + var t = Qc.exec(e5); + return t ? { file: t[2], methodName: t[1] || Xt, arguments: [], lineNumber: +t[3], column: t[4] ? +t[4] : null } : null; + } + __name(Jc, "Jc"); + var Gc = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + var zc = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + function Hc(e5) { + var t = Gc.exec(e5); + if (!t) return null; + var r5 = t[3] && t[3].indexOf(" > eval") > -1, n3 = zc.exec(t[3]); + return r5 && n3 != null && (t[3] = n3[1], t[4] = n3[2], t[5] = null), { file: t[3], methodName: t[1] || Xt, arguments: t[2] ? t[2].split(",") : [], lineNumber: t[4] ? +t[4] : null, column: t[5] ? +t[5] : null }; + } + __name(Hc, "Hc"); + var Wc = /^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i; + function Kc(e5) { + var t = Wc.exec(e5); + return t ? { file: t[3], methodName: t[1] || Xt, arguments: [], lineNumber: +t[4], column: t[5] ? +t[5] : null } : null; + } + __name(Kc, "Kc"); + var Zc = /^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i; + function Xc(e5) { + var t = Zc.exec(e5); + return t ? { file: t[2], methodName: t[1] || Xt, arguments: [], lineNumber: +t[3], column: t[4] ? +t[4] : null } : null; + } + __name(Xc, "Xc"); + var zn = class { + static { + __name(this, "zn"); + } + getLocation() { + return null; + } + }; + var Hn = class { + static { + __name(this, "Hn"); + } + _error; + constructor() { + this._error = new Error(); + } + getLocation() { + let t = this._error.stack; + if (!t) return null; + let n3 = ys(t).find((i5) => { + if (!i5.file) return false; + let o3 = _n(i5.file); + return o3 !== "" && !o3.includes("@prisma") && !o3.includes("/packages/client/src/runtime/") && !o3.endsWith("/runtime/client.js") && !o3.startsWith("internal/") && !i5.methodName.includes("new ") && !i5.methodName.includes("getCallSite") && !i5.methodName.includes("Proxy.") && i5.methodName.split(".").length < 4; + }); + return !n3 || !n3.file ? null : { fileName: n3.file, lineNumber: n3.lineNumber, columnNumber: n3.column }; + } + }; + function je(e5) { + return e5 === "minimal" ? typeof $EnabledCallSite == "function" && e5 !== "minimal" ? new $EnabledCallSite() : new zn() : new Hn(); + } + __name(je, "je"); + var hs = { _avg: true, _count: true, _sum: true, _min: true, _max: true }; + function Tt(e5 = {}) { + let t = ep(e5); + return Object.entries(t).reduce((n3, [i5, o3]) => (hs[i5] !== void 0 ? n3.select[i5] = { select: o3 } : n3[i5] = o3, n3), { select: {} }); + } + __name(Tt, "Tt"); + function ep(e5 = {}) { + return typeof e5._count == "boolean" ? { ...e5, _count: { _all: e5._count } } : e5; + } + __name(ep, "ep"); + function Qr(e5 = {}) { + return (t) => (typeof e5._count == "boolean" && (t._count = t._count._all), t); + } + __name(Qr, "Qr"); + function ws(e5, t) { + let r5 = Qr(e5); + return t({ action: "aggregate", unpacker: r5, argsMapper: Tt })(e5); + } + __name(ws, "ws"); + function tp(e5 = {}) { + let { select: t, ...r5 } = e5; + return typeof t == "object" ? Tt({ ...r5, _count: t }) : Tt({ ...r5, _count: { _all: true } }); + } + __name(tp, "tp"); + function rp(e5 = {}) { + return typeof e5.select == "object" ? (t) => Qr(e5)(t)._count : (t) => Qr(e5)(t)._count._all; + } + __name(rp, "rp"); + function xs(e5, t) { + return t({ action: "count", unpacker: rp(e5), argsMapper: tp })(e5); + } + __name(xs, "xs"); + function np(e5 = {}) { + let t = Tt(e5); + if (Array.isArray(t.by)) for (let r5 of t.by) typeof r5 == "string" && (t.select[r5] = true); + else typeof t.by == "string" && (t.select[t.by] = true); + return t; + } + __name(np, "np"); + function ip(e5 = {}) { + return (t) => (typeof e5?._count == "boolean" && t.forEach((r5) => { + r5._count = r5._count._all; + }), t); + } + __name(ip, "ip"); + function bs(e5, t) { + return t({ action: "groupBy", unpacker: ip(e5), argsMapper: np })(e5); + } + __name(bs, "bs"); + function Ps(e5, t, r5) { + if (t === "aggregate") return (n3) => ws(n3, r5); + if (t === "count") return (n3) => xs(n3, r5); + if (t === "groupBy") return (n3) => bs(n3, r5); + } + __name(Ps, "Ps"); + function Es(e5, t) { + let r5 = t.fields.filter((i5) => !i5.relationName), n3 = oo(r5, "name"); + return new Proxy({}, { get(i5, o3) { + if (o3 in i5 || typeof o3 == "symbol") return i5[o3]; + let s2 = n3[o3]; + if (s2) return new zt(e5, o3, s2.type, s2.isList, s2.kind === "enum"); + }, ...Br(Object.keys(n3)) }); + } + __name(Es, "Es"); + var Ts = /* @__PURE__ */ __name((e5) => Array.isArray(e5) ? e5 : e5.split("."), "Ts"); + var Wn = /* @__PURE__ */ __name((e5, t) => Ts(t).reduce((r5, n3) => r5 && r5[n3], e5), "Wn"); + var vs = /* @__PURE__ */ __name((e5, t, r5) => Ts(t).reduceRight((n3, i5, o3, s2) => Object.assign({}, Wn(e5, s2.slice(0, o3)), { [i5]: n3 }), r5), "vs"); + function op(e5, t) { + return e5 === void 0 || t === void 0 ? [] : [...t, "select", e5]; + } + __name(op, "op"); + function sp(e5, t, r5) { + return t === void 0 ? e5 ?? {} : vs(t, r5, e5 || true); + } + __name(sp, "sp"); + function Kn(e5, t, r5, n3, i5, o3) { + let s2 = e5._runtimeDataModel.models[t], a5; + return (u) => { + let m3 = je(e5._errorFormat), P = op(n3, i5), T2 = sp(u, o3, P), S = r5({ dataPath: P, callsite: m3 })(T2), I = ap(e5, t); + return new Proxy(S, { get(A, M) { + if (!I.includes(M)) return A[M]; + a5 ??= Object.fromEntries(s2.fields.map((D) => [D.name, D])); + let q3 = [a5[M].type, r5, M], E = [P, T2]; + return Kn(e5, ...q3, ...E); + }, ...Br([...I, ...Object.getOwnPropertyNames(S)]) }); + }; + } + __name(Kn, "Kn"); + function ap(e5, t) { + return e5._runtimeDataModel.models[t].fields.filter((r5) => r5.kind === "object").map((r5) => r5.name); + } + __name(ap, "ap"); + var lp = ["findUnique", "findUniqueOrThrow", "findFirst", "findFirstOrThrow", "create", "update", "upsert", "delete"]; + var up = ["aggregate", "count", "groupBy"]; + function Zn(e5, t) { + let r5 = e5._extensions.getAllModelExtensions(t) ?? {}, n3 = [cp(e5, t), dp(e5, t), Zt(r5), ae("name", () => t), ae("$name", () => t), ae("$parent", () => e5._appliedParent)]; + return ve({}, n3); + } + __name(Zn, "Zn"); + function cp(e5, t) { + let r5 = Oe(t), n3 = Object.keys(mt).concat("count"); + return { getKeys() { + return n3; + }, getPropertyValue(i5) { + let o3 = i5, s2 = /* @__PURE__ */ __name((a5) => (u) => { + let m3 = je(e5._errorFormat); + return e5._createPrismaPromise((P) => { + let T2 = { args: u, dataPath: [], action: o3, model: t, clientMethod: `${r5}.${i5}`, jsModelName: r5, transaction: P, callsite: m3 }; + return e5._request({ ...T2, ...a5 }); + }, { action: o3, args: u, model: t }); + }, "s"); + return lp.includes(o3) ? Kn(e5, t, s2) : pp(i5) ? Ps(e5, i5, s2) : s2({}); + } }; + } + __name(cp, "cp"); + function pp(e5) { + return up.includes(e5); + } + __name(pp, "pp"); + function dp(e5, t) { + return We(ae("fields", () => { + let r5 = e5._runtimeDataModel.models[t]; + return Es(t, r5); + })); + } + __name(dp, "dp"); + function Ss(e5) { + return e5.replace(/^./, (t) => t.toUpperCase()); + } + __name(Ss, "Ss"); + var Xn = /* @__PURE__ */ Symbol(); + function Yt(e5) { + let t = [mp(e5), fp(e5), ae(Xn, () => e5), ae("$parent", () => e5._appliedParent)], r5 = e5._extensions.getAllClientExtensions(); + return r5 && t.push(Zt(r5)), ve(e5, t); + } + __name(Yt, "Yt"); + function mp(e5) { + let t = Object.getPrototypeOf(e5._originalClient), r5 = [...new Set(Object.getOwnPropertyNames(t))]; + return { getKeys() { + return r5; + }, getPropertyValue(n3) { + return e5[n3]; + } }; + } + __name(mp, "mp"); + function fp(e5) { + let t = Object.keys(e5._runtimeDataModel.models), r5 = t.map(Oe), n3 = [...new Set(t.concat(r5))]; + return We({ getKeys() { + return n3; + }, getPropertyValue(i5) { + let o3 = Ss(i5); + if (e5._runtimeDataModel.models[o3] !== void 0) return Zn(e5, o3); + if (e5._runtimeDataModel.models[i5] !== void 0) return Zn(e5, i5); + }, getPropertyDescriptor(i5) { + if (!r5.includes(i5)) return { enumerable: false }; + } }); + } + __name(fp, "fp"); + function As(e5) { + return e5[Xn] ? e5[Xn] : e5; + } + __name(As, "As"); + function Rs(e5) { + if (typeof e5 == "function") return e5(this); + let t = Object.create(this._originalClient, { _extensions: { value: this._extensions.append(e5) }, _appliedParent: { value: this, configurable: true }, $on: { value: void 0 } }); + return Yt(t); + } + __name(Rs, "Rs"); + function Cs({ result: e5, modelName: t, select: r5, omit: n3, extensions: i5 }) { + let o3 = i5.getAllComputedFields(t); + if (!o3) return e5; + let s2 = [], a5 = []; + for (let u of Object.values(o3)) { + if (n3) { + if (n3[u.name]) continue; + let m3 = u.needs.filter((P) => n3[P]); + m3.length > 0 && a5.push(Et(m3)); + } else if (r5) { + if (!r5[u.name]) continue; + let m3 = u.needs.filter((P) => !r5[P]); + m3.length > 0 && a5.push(Et(m3)); + } + gp(e5, u.needs) && s2.push(yp(u, ve(e5, s2), t)); + } + return s2.length > 0 || a5.length > 0 ? ve(e5, [...s2, ...a5]) : e5; + } + __name(Cs, "Cs"); + function gp(e5, t) { + return t.every((r5) => $n(e5, r5)); + } + __name(gp, "gp"); + function yp(e5, t, r5) { + return We(ae(e5.name, () => e5.compute(t, r5))); + } + __name(yp, "yp"); + function Jr({ visitor: e5, result: t, args: r5, runtimeDataModel: n3, modelName: i5 }) { + if (Array.isArray(t)) { + for (let s2 = 0; s2 < t.length; s2++) t[s2] = Jr({ result: t[s2], args: r5, modelName: i5, runtimeDataModel: n3, visitor: e5 }); + return t; + } + let o3 = e5(t, i5, r5) ?? t; + return r5.include && Is({ includeOrSelect: r5.include, result: o3, parentModelName: i5, runtimeDataModel: n3, visitor: e5 }), r5.select && Is({ includeOrSelect: r5.select, result: o3, parentModelName: i5, runtimeDataModel: n3, visitor: e5 }), o3; + } + __name(Jr, "Jr"); + function Is({ includeOrSelect: e5, result: t, parentModelName: r5, runtimeDataModel: n3, visitor: i5 }) { + for (let [o3, s2] of Object.entries(e5)) { + if (!s2 || t[o3] == null || fe(s2)) continue; + let u = n3.models[r5].fields.find((P) => P.name === o3); + if (!u || u.kind !== "object" || !u.relationName) continue; + let m3 = typeof s2 == "object" ? s2 : {}; + t[o3] = Jr({ visitor: i5, result: t[o3], args: m3, modelName: u.type, runtimeDataModel: n3 }); + } + } + __name(Is, "Is"); + function ks({ result: e5, modelName: t, args: r5, extensions: n3, runtimeDataModel: i5, globalOmit: o3 }) { + return n3.isEmpty() || e5 == null || typeof e5 != "object" || !i5.models[t] ? e5 : Jr({ result: e5, args: r5 ?? {}, modelName: t, runtimeDataModel: i5, visitor: /* @__PURE__ */ __name((a5, u, m3) => { + let P = Oe(u); + return Cs({ result: a5, modelName: P, select: m3.select, omit: m3.select ? void 0 : { ...o3?.[P], ...m3.omit }, extensions: n3 }); + }, "visitor") }); + } + __name(ks, "ks"); + var Ke = require_dist(); + var hp = ["$connect", "$disconnect", "$on", "$use", "$extends"]; + var Os = hp; + function Ns(e5) { + if (e5 instanceof Ke.Sql) return wp(e5); + if (Ur(e5)) return xp(e5); + if (Array.isArray(e5)) { + let r5 = [e5[0]]; + for (let n3 = 1; n3 < e5.length; n3++) r5[n3] = er(e5[n3]); + return r5; + } + let t = {}; + for (let r5 in e5) t[r5] = er(e5[r5]); + return t; + } + __name(Ns, "Ns"); + function wp(e5) { + return new Ke.Sql(e5.strings, e5.values); + } + __name(wp, "wp"); + function xp(e5) { + return new Kt(e5.sql, e5.values); + } + __name(xp, "xp"); + function er(e5) { + if (typeof e5 != "object" || e5 == null || (0, Ke.isObjectEnumValue)(e5) || xt(e5) || fe(e5)) return e5; + if (dt(e5)) return new Ke.Decimal(e5.toFixed()); + if (ct(e5)) return /* @__PURE__ */ new Date(+e5); + if (ArrayBuffer.isView(e5)) return e5.slice(0); + if (Array.isArray(e5)) { + let t = e5.length, r5; + for (r5 = Array(t); t--; ) r5[t] = er(e5[t]); + return r5; + } + if (typeof e5 == "object") { + let t = {}; + for (let r5 in e5) r5 === "__proto__" ? Object.defineProperty(t, r5, { value: er(e5[r5]), configurable: true, enumerable: true, writable: true }) : t[r5] = er(e5[r5]); + return t; + } + $e(e5, "Unknown value"); + } + __name(er, "er"); + function Ms(e5, t, r5, n3 = 0) { + return e5._createPrismaPromise((i5) => { + let o3 = t.customDataProxyFetch; + return "transaction" in t && i5 !== void 0 && (t.transaction?.kind === "batch" && t.transaction.lock.then(), t.transaction = i5), n3 === r5.length ? e5._executeRequest(t) : r5[n3]({ model: t.model, operation: t.model ? t.action : t.clientMethod, args: Ns(t.args ?? {}), __internalParams: t, query: /* @__PURE__ */ __name((s2, a5 = t) => { + let u = a5.customDataProxyFetch; + return a5.customDataProxyFetch = Ls(o3, u), a5.args = s2, Ms(e5, a5, r5, n3 + 1); + }, "query") }); + }); + } + __name(Ms, "Ms"); + function Fs(e5, t) { + let { jsModelName: r5, action: n3, clientMethod: i5 } = t, o3 = r5 ? n3 : i5; + if (e5._extensions.isEmpty()) return e5._executeRequest(t); + let s2 = e5._extensions.getAllQueryCallbacks(r5 ?? "$none", o3); + return Ms(e5, t, s2); + } + __name(Fs, "Fs"); + function _s5(e5) { + return (t) => { + let r5 = { requests: t }, n3 = t[0].extensions.getAllBatchQueryCallbacks(); + return n3.length ? $s(r5, n3, 0, e5) : e5(r5); + }; + } + __name(_s5, "_s"); + function $s(e5, t, r5, n3) { + if (r5 === t.length) return n3(e5); + let i5 = e5.customDataProxyFetch, o3 = e5.requests[0].transaction; + return t[r5]({ args: { queries: e5.requests.map((s2) => ({ model: s2.modelName, operation: s2.action, args: s2.args })), transaction: o3 ? { isolationLevel: o3.kind === "batch" ? o3.isolationLevel : void 0 } : void 0 }, __internalParams: e5, query(s2, a5 = e5) { + let u = a5.customDataProxyFetch; + return a5.customDataProxyFetch = Ls(i5, u), $s(a5, t, r5 + 1, n3); + } }); + } + __name($s, "$s"); + var Ds = /* @__PURE__ */ __name((e5) => e5, "Ds"); + function Ls(e5 = Ds, t = Ds) { + return (r5) => e5(t(r5)); + } + __name(Ls, "Ls"); + function qs({ dataPath: e5, modelName: t, args: r5, runtimeDataModel: n3 }) { + let i5 = { modelName: t, args: r5 ?? {} }, o3 = bp(e5); + if (!o3 || o3.length === 0) return i5; + let s2 = t, a5 = r5 ?? {}; + for (let u of o3) { + let m3 = n3.models[s2]; + if (!m3) return i5; + let P = m3.fields.find((T2) => T2.name === u); + if (!P) throw new Error(`Could not resolve relation field "${u}" on model "${s2}" from dataPath "${e5.join(".")}"`); + if (P.kind !== "object" || !P.relationName) return i5; + s2 = P.type, a5 = Pp(a5, u); + } + return { modelName: s2, args: a5 }; + } + __name(qs, "qs"); + function bp(e5) { + let t = []; + for (let r5 = 0; r5 < e5.length; r5 += 2) { + let n3 = e5[r5], i5 = e5[r5 + 1]; + if (n3 !== "select" && n3 !== "include" || i5 === void 0) return; + t.push(i5); + } + return t; + } + __name(bp, "bp"); + function Pp(e5, t) { + let r5 = e5.select?.[t]; + if (Vs(r5)) return r5; + let n3 = e5.include?.[t]; + return Vs(n3) ? n3 : {}; + } + __name(Pp, "Pp"); + function Vs(e5) { + return !!e5 && typeof e5 == "object" && !Array.isArray(e5); + } + __name(Vs, "Vs"); + var Gs = require_dist(); + var tr = require_dist(); + function vt(e5) { + return ArrayBuffer.isView(e5) && Object.prototype.toString.call(e5) === "[object Uint8Array]"; + } + __name(vt, "vt"); + function rr(e5) { + return Object.prototype.toString.call(e5) === "[object Date]"; + } + __name(rr, "rr"); + function V(e5, t) { + throw new Error(t); + } + __name(V, "V"); + function ei(e5, t) { + return e5 === t || e5 !== null && t !== null && typeof e5 == "object" && typeof t == "object" && Object.keys(e5).length === Object.keys(t).length && Object.keys(e5).every((r5) => ei(e5[r5], t[r5])); + } + __name(ei, "ei"); + function St(e5, t) { + let r5 = Object.keys(e5), n3 = Object.keys(t); + return (r5.length < n3.length ? r5 : n3).every((o3) => { + if (typeof e5[o3] == typeof t[o3] && typeof e5[o3] != "object") return e5[o3] === t[o3]; + if (tr.Decimal.isDecimal(e5[o3]) || tr.Decimal.isDecimal(t[o3])) { + let s2 = Us(e5[o3]), a5 = Us(t[o3]); + return s2 && a5 && s2.equals(a5); + } else if (vt(e5[o3]) || vt(t[o3])) { + let s2 = js(e5[o3]), a5 = js(t[o3]); + return s2 && a5 && s2.equals(a5); + } else { + if (rr(e5[o3]) || rr(t[o3])) return Bs(e5[o3])?.getTime() === Bs(t[o3])?.getTime(); + if (typeof e5[o3] == "bigint" || typeof t[o3] == "bigint") return Qs(e5[o3]) === Qs(t[o3]); + if (typeof e5[o3] == "number" || typeof t[o3] == "number") return Js(e5[o3]) === Js(t[o3]); + } + return ei(e5[o3], t[o3]); + }); + } + __name(St, "St"); + function Us(e5) { + return tr.Decimal.isDecimal(e5) ? e5 : typeof e5 == "number" || typeof e5 == "string" ? new tr.Decimal(e5) : void 0; + } + __name(Us, "Us"); + function js(e5) { + return Buffer.isBuffer(e5) ? e5 : vt(e5) ? Buffer.from(e5.buffer, e5.byteOffset, e5.byteLength) : typeof e5 == "string" ? Buffer.from(e5, "base64") : void 0; + } + __name(js, "js"); + function Bs(e5) { + return rr(e5) ? e5 : typeof e5 == "string" || typeof e5 == "number" ? new Date(e5) : void 0; + } + __name(Bs, "Bs"); + function Qs(e5) { + return typeof e5 == "bigint" ? e5 : typeof e5 == "number" || typeof e5 == "string" ? BigInt(e5) : void 0; + } + __name(Qs, "Qs"); + function Js(e5) { + return typeof e5 == "number" ? e5 : typeof e5 == "string" ? Number(e5) : void 0; + } + __name(Js, "Js"); + function Se(e5) { + return JSON.stringify(e5, (t, r5) => typeof r5 == "bigint" ? r5.toString() : ArrayBuffer.isView(r5) ? Buffer.from(r5.buffer, r5.byteOffset, r5.byteLength).toString("base64") : r5); + } + __name(Se, "Se"); + var Yn = 8192; + function Gr(e5, t) { + if (t.length <= Yn) { + e5.push(...t); + return; + } + for (let r5 = 0; r5 < t.length; r5 += Yn) e5.push(...t.slice(r5, r5 + Yn)); + } + __name(Gr, "Gr"); + function Ep(e5) { + return e5 !== null && typeof e5 == "object" && typeof e5.$type == "string"; + } + __name(Ep, "Ep"); + function Tp(e5, t) { + let r5 = {}; + for (let n3 of Object.keys(e5)) r5[n3] = t(e5[n3], n3); + return r5; + } + __name(Tp, "Tp"); + function Ae(e5) { + return e5 === null ? e5 : Array.isArray(e5) ? e5.map(Ae) : typeof e5 == "object" ? Ep(e5) ? vp(e5) : e5.constructor !== null && e5.constructor.name !== "Object" ? e5 : Tp(e5, Ae) : e5; + } + __name(Ae, "Ae"); + function vp({ $type: e5, value: t }) { + switch (e5) { + case "BigInt": + return BigInt(t); + case "Bytes": + return new Uint8Array(Buffer.from(t, "base64")); + case "DateTime": + return new Date(t); + case "Decimal": + return new Gs.Decimal(t); + case "Json": + return JSON.parse(t); + case "Raw": + return t; + case "FieldRef": + throw new Error("FieldRef tagged values cannot be deserialized to JavaScript values"); + case "Enum": + return t; + default: + V(t, "Unknown tagged value"); + } + } + __name(vp, "vp"); + function zr(e5) { + return e5.name === "DriverAdapterError" && typeof e5.cause == "object"; + } + __name(zr, "zr"); + var k5 = { Int32: 0, Int64: 1, Float: 2, Double: 3, Numeric: 4, Boolean: 5, Character: 6, Text: 7, Date: 8, Time: 9, DateTime: 10, Json: 11, Enum: 12, Bytes: 13, Set: 14, Uuid: 15, Int32Array: 64, Int64Array: 65, FloatArray: 66, DoubleArray: 67, NumericArray: 68, BooleanArray: 69, CharacterArray: 70, TextArray: 71, DateArray: 72, TimeArray: 73, DateTimeArray: 74, JsonArray: 75, EnumArray: 76, BytesArray: 77, UuidArray: 78, UnknownNumber: 128 }; + var X = class extends Error { + static { + __name(this, "X"); + } + name = "UserFacingError"; + code; + meta; + constructor(t, r5, n3) { + super(t), this.code = r5, this.meta = n3 ?? {}; + } + toQueryResponseErrorObject() { + return { error: this.message, user_facing_error: { is_panic: false, message: this.message, meta: this.meta, error_code: this.code } }; + } + }; + function Be(e5) { + if (!zr(e5)) throw e5; + let t = Cp(e5), r5 = Hs(e5); + if (t !== void 0 && r5 !== void 0) { + let n3 = { driverAdapterError: e5 }; + throw e5.cause.kind === "UniqueConstraintViolation" && e5.cause.table && (n3.table = e5.cause.table), new X(r5, t, n3); + } + throw Rp(e5.cause.kind) ? Ap(e5) : e5; + } + __name(Be, "Be"); + function ri(e5) { + throw zr(e5) ? Sp(e5) : e5; + } + __name(ri, "ri"); + function Sp(e5) { + let t = e5.cause.originalCode ?? "N/A", r5 = zs(e5); + return new X(`Raw query failed. Code: \`${t}\`. Message: \`${r5}\``, "P2010", { driverAdapterError: e5 }); + } + __name(Sp, "Sp"); + function Ap(e5) { + let t = e5.cause.originalCode ?? "N/A", r5 = zs(e5); + return new X(`Database error. Code: \`${t}\`. Message: \`${r5}\``, "P2039", { driverAdapterError: e5 }); + } + __name(Ap, "Ap"); + function zs(e5) { + return e5.cause.originalMessage ?? Hs(e5) ?? e5.message ?? "N/A"; + } + __name(zs, "zs"); + function Rp(e5) { + switch (e5) { + case "postgres": + case "mysql": + case "sqlite": + case "mssql": + return true; + default: + return false; + } + } + __name(Rp, "Rp"); + function Cp(e5) { + switch (e5.cause.kind) { + case "AuthenticationFailed": + return "P1000"; + case "DatabaseNotReachable": + return "P1001"; + case "DatabaseDoesNotExist": + return "P1003"; + case "SocketTimeout": + return "P1008"; + case "DatabaseAlreadyExists": + return "P1009"; + case "DatabaseAccessDenied": + return "P1010"; + case "TlsConnectionError": + return "P1011"; + case "ConnectionClosed": + return "P1017"; + case "TransactionAlreadyClosed": + return "P1018"; + case "LengthMismatch": + return "P2000"; + case "UniqueConstraintViolation": + return "P2002"; + case "ForeignKeyConstraintViolation": + case "RestrictViolation": + return "P2003"; + case "InvalidInputValue": + return "P2007"; + case "UnsupportedNativeDataType": + return "P2010"; + case "NullConstraintViolation": + return "P2011"; + case "ValueOutOfRange": + return "P2020"; + case "TableDoesNotExist": + return "P2021"; + case "ColumnNotFound": + return "P2022"; + case "InvalidIsolationLevel": + case "InconsistentColumnData": + return "P2023"; + case "MissingFullTextSearchIndex": + return "P2030"; + case "TransactionWriteConflict": + return "P2034"; + case "GenericJs": + return "P2036"; + case "TooManyConnections": + return "P2037"; + case "postgres": + case "sqlite": + case "mysql": + case "mssql": + return; + default: + V(e5.cause, `Unknown error: ${Se(e5.cause)}`); + } + } + __name(Cp, "Cp"); + function Hs(e5) { + switch (e5.cause.kind) { + case "AuthenticationFailed": + return `Authentication failed against the database server, the provided database credentials for \`${e5.cause.user ?? "(not available)"}\` are not valid`; + case "DatabaseNotReachable": { + let t = e5.cause.host && e5.cause.port ? `${e5.cause.host}:${e5.cause.port}` : e5.cause.host; + return `Can't reach database server${t ? ` at ${t}` : ""}`; + } + case "DatabaseDoesNotExist": + return `Database \`${e5.cause.db ?? "(not available)"}\` does not exist on the database server`; + case "SocketTimeout": + return "Operation has timed out"; + case "DatabaseAlreadyExists": + return `Database \`${e5.cause.db ?? "(not available)"}\` already exists on the database server`; + case "DatabaseAccessDenied": + return `User was denied access on the database \`${e5.cause.db ?? "(not available)"}\``; + case "TlsConnectionError": + return `Error opening a TLS connection: ${e5.cause.reason}`; + case "ConnectionClosed": + return "Server has closed the connection."; + case "TransactionAlreadyClosed": + return e5.cause.cause; + case "LengthMismatch": + return `The provided value for the column is too long for the column's type. Column: ${e5.cause.column ?? "(not available)"}`; + case "UniqueConstraintViolation": + return `Unique constraint failed on the ${ti(e5.cause.constraint)}`; + case "ForeignKeyConstraintViolation": + case "RestrictViolation": + return `Foreign key constraint violated on the ${ti(e5.cause.constraint)}`; + case "UnsupportedNativeDataType": + return `Failed to deserialize column of type '${e5.cause.type}'. If you're using $queryRaw and this column is explicitly marked as \`Unsupported\` in your Prisma schema, try casting this column to any supported Prisma type such as \`String\`.`; + case "NullConstraintViolation": + return `Null constraint violation on the ${ti(e5.cause.constraint)}`; + case "ValueOutOfRange": + return `Value out of range for the type: ${e5.cause.cause}`; + case "TableDoesNotExist": + return `The table \`${e5.cause.table ?? "(not available)"}\` does not exist in the current database.`; + case "ColumnNotFound": + return `The column \`${e5.cause.column ?? "(not available)"}\` does not exist in the current database.`; + case "InvalidIsolationLevel": + return `Error in connector: Conversion error: ${e5.cause.level}`; + case "InconsistentColumnData": + return `Inconsistent column data: ${e5.cause.cause}`; + case "MissingFullTextSearchIndex": + return "Cannot find a fulltext index to use for the native search, try adding a @@fulltext([Fields...]) to your schema"; + case "TransactionWriteConflict": + return "Transaction failed due to a write conflict or a deadlock. Please retry your transaction"; + case "GenericJs": + return `Error in external connector (id ${e5.cause.id})`; + case "TooManyConnections": + return `Too many database connections opened: ${e5.cause.cause}`; + case "InvalidInputValue": + return `Invalid input value: ${e5.cause.message}`; + case "sqlite": + case "postgres": + case "mysql": + case "mssql": + return; + default: + V(e5.cause, `Unknown error: ${Se(e5.cause)}`); + } + } + __name(Hs, "Hs"); + function ti(e5) { + return e5 && "fields" in e5 ? `fields: (${e5.fields.map((t) => `\`${t}\``).join(", ")})` : e5 && "index" in e5 ? `constraint: \`${e5.index}\`` : e5 && "foreignKey" in e5 ? "foreign key" : "(not available)"; + } + __name(ti, "ti"); + function Ip(e5) { + if (typeof e5 != "object" || e5 === null) return false; + let t = e5; + return "$type" in t && t.$type === "Param" || "prisma__type" in t && t.prisma__type === "param"; + } + __name(Ip, "Ip"); + function kp(e5) { + return "prisma__type" in e5 ? e5.prisma__value?.name : e5.value.name; + } + __name(kp, "kp"); + function Op(e5, t) { + let r5 = {}; + for (let [n3, i5] of Object.entries(e5)) if (r5[n3] = i5, Ip(i5)) { + let o3 = kp(i5); + o3 && o3 in t && (r5[n3] = t[o3]); + } + return r5; + } + __name(Op, "Op"); + function Ws(e5, t, r5 = {}) { + let n3 = e5.map((o3) => t.keys.reduce((s2, a5) => (s2[a5] = Ae(o3[a5]), s2), {})), i5 = new Set(t.nestedSelection); + return t.arguments.map((o3) => { + let s2 = Op(o3, r5), a5 = n3.findIndex((u) => St(u, s2)); + if (a5 === -1) return t.expectNonEmpty ? new X("An operation failed because it depends on one or more records that were required but not found", "P2025") : null; + { + let u = Object.entries(e5[a5]).filter(([m3]) => i5.has(m3)); + return Object.fromEntries(u); + } + }); + } + __name(Ws, "Ws"); + var Xs = require_dist(); + var Q = class extends X { + static { + __name(this, "Q"); + } + name = "DataMapperError"; + constructor(t, r5) { + super(t, "P2023", r5); + } + }; + var Ks = /* @__PURE__ */ new WeakMap(); + function Np(e5) { + let t = Ks.get(e5); + return t || (t = Object.entries(e5), Ks.set(e5, t)), t; + } + __name(Np, "Np"); + function ii(e5, t, r5) { + switch (t.type) { + case "affectedRows": + if (typeof e5 != "number") throw new Q(`Expected an affected rows count, got: ${typeof e5} (${e5})`); + return { count: e5 }; + case "object": + return oi(e5, t.fields, r5, t.skipNulls); + case "field": + return ni(e5, "", t.fieldType, r5); + default: + V(t, `Invalid data mapping type: '${t.type}'`); + } + } + __name(ii, "ii"); + function oi(e5, t, r5, n3) { + if (e5 === null) return null; + if (Array.isArray(e5)) { + let i5 = e5; + return n3 && (i5 = i5.filter((o3) => o3 !== null)), i5.map((o3) => Zs(o3, t, r5)); + } + if (typeof e5 == "object") return Zs(e5, t, r5); + if (typeof e5 == "string") { + let i5; + try { + i5 = JSON.parse(e5); + } catch (o3) { + throw new Q("Expected an array or object, got a string that is not valid JSON", { cause: o3 }); + } + return oi(i5, t, r5, n3); + } + throw new Q(`Expected an array or an object, got: ${typeof e5}`); + } + __name(oi, "oi"); + function Zs(e5, t, r5) { + if (typeof e5 != "object") throw new Q(`Expected an object, but got '${typeof e5}'`); + let n3 = {}; + for (let [i5, o3] of Np(t)) switch (o3.type) { + case "affectedRows": + throw new Q(`Unexpected 'AffectedRows' node in data mapping for field '${i5}'`); + case "object": { + let { serializedName: s2, fields: a5, skipNulls: u } = o3; + if (s2 !== null && !Object.hasOwn(e5, s2)) throw new Q(`Missing data field (Object): '${i5}'; node: ${JSON.stringify(o3)}; data: ${JSON.stringify(e5)}`); + let m3 = s2 !== null ? e5[s2] : e5; + n3[i5] = oi(m3, a5, r5, u); + break; + } + case "field": + { + let s2 = o3.dbName; + if (Object.hasOwn(e5, s2)) n3[i5] = Dp(e5[s2], s2, o3.fieldType, r5); + else throw new Q(`Missing data field (Value): '${s2}'; node: ${JSON.stringify(o3)}; data: ${JSON.stringify(e5)}`); + } + break; + default: + V(o3, `DataMapper: Invalid data mapping node type: '${o3.type}'`); + } + return n3; + } + __name(Zs, "Zs"); + function Dp(e5, t, r5, n3) { + return e5 === null ? r5.arity === "list" ? [] : null : r5.arity === "list" ? e5.map((o3, s2) => ni(o3, `${t}[${s2}]`, r5, n3)) : ni(e5, t, r5, n3); + } + __name(Dp, "Dp"); + function ni(e5, t, r5, n3) { + switch (r5.type) { + case "unsupported": + return e5; + case "string": { + if (typeof e5 != "string") throw new Q(`Expected a string in column '${t}', got ${typeof e5}: ${e5}`); + return e5; + } + case "int": + switch (typeof e5) { + case "number": + return Math.trunc(e5); + case "string": { + let i5 = Math.trunc(Number(e5)); + if (Number.isNaN(i5) || !Number.isFinite(i5)) throw new Q(`Expected an integer in column '${t}', got string: ${e5}`); + if (!Number.isSafeInteger(i5)) throw new Q(`Integer value in column '${t}' is too large to represent as a JavaScript number without loss of precision, got: ${e5}. Consider using BigInt type.`); + return i5; + } + default: + throw new Q(`Expected an integer in column '${t}', got ${typeof e5}: ${e5}`); + } + case "bigint": { + if (typeof e5 != "number" && typeof e5 != "string") throw new Q(`Expected a bigint in column '${t}', got ${typeof e5}: ${e5}`); + return { $type: "BigInt", value: e5 }; + } + case "float": { + if (typeof e5 == "number") return e5; + if (typeof e5 == "string") { + let i5 = Number(e5); + if (Number.isNaN(i5) && !/^[-+]?nan$/.test(e5.toLowerCase())) throw new Q(`Expected a float in column '${t}', got string: ${e5}`); + return i5; + } + throw new Q(`Expected a float in column '${t}', got ${typeof e5}: ${e5}`); + } + case "boolean": { + if (typeof e5 == "boolean") return e5; + if (typeof e5 == "number") return e5 === 1; + if (typeof e5 == "string") { + if (e5 === "true" || e5 === "TRUE" || e5 === "1") return true; + if (e5 === "false" || e5 === "FALSE" || e5 === "0") return false; + throw new Q(`Expected a boolean in column '${t}', got ${typeof e5}: ${e5}`); + } + if (Array.isArray(e5) || vt(e5)) { + for (let i5 of e5) if (i5 !== 0) return true; + return false; + } + throw new Q(`Expected a boolean in column '${t}', got ${typeof e5}: ${e5}`); + } + case "decimal": + if (typeof e5 != "number" && typeof e5 != "string" && !Xs.Decimal.isDecimal(e5)) throw new Q(`Expected a decimal in column '${t}', got ${typeof e5}: ${e5}`); + return { $type: "Decimal", value: e5 }; + case "datetime": { + if (typeof e5 == "string") return { $type: "DateTime", value: Fp(e5) }; + if (typeof e5 == "number" || rr(e5)) return { $type: "DateTime", value: e5 }; + throw new Q(`Expected a date in column '${t}', got ${typeof e5}: ${e5}`); + } + case "object": + return { $type: "Json", value: Se(e5) }; + case "json": + return { $type: "Json", value: `${e5}` }; + case "bytes": { + switch (r5.encoding) { + case "base64": + if (typeof e5 != "string") throw new Q(`Expected a base64-encoded byte array in column '${t}', got ${typeof e5}: ${e5}`); + return { $type: "Bytes", value: e5 }; + case "hex": + if (typeof e5 != "string" || !e5.startsWith("\\x")) throw new Q(`Expected a hex-encoded byte array in column '${t}', got ${typeof e5}: ${e5}`); + return { $type: "Bytes", value: Buffer.from(e5.slice(2), "hex").toString("base64") }; + case "array": + if (Array.isArray(e5)) return { $type: "Bytes", value: Buffer.from(e5).toString("base64") }; + if (vt(e5)) return { $type: "Bytes", value: Buffer.from(e5).toString("base64") }; + throw new Q(`Expected a byte array in column '${t}', got ${typeof e5}: ${e5}`); + default: + V(r5.encoding, `DataMapper: Unknown bytes encoding: ${r5.encoding}`); + } + break; + } + case "enum": { + let i5 = n3[r5.name]; + if (i5 === void 0) throw new Q(`Unknown enum '${r5.name}'`); + let o3 = i5[`${e5}`]; + if (o3 === void 0) throw new Q(`Value '${e5}' not found in enum '${r5.name}'`); + return o3; + } + default: + V(r5, `DataMapper: Unknown result type: ${r5.type}`); + } + } + __name(ni, "ni"); + var Mp = /\d{2}:\d{2}:\d{2}(?:\.\d+)?(Z|[+-]\d{2}(:?\d{2})?)?$/; + function Fp(e5) { + let t = Mp.exec(e5); + if (t === null) return `${e5}T00:00:00Z`; + let r5 = e5, [n3, i5, o3] = t; + if (i5 !== void 0 && i5 !== "Z" && o3 === void 0 ? r5 = `${e5}:00` : i5 === void 0 && (r5 = `${e5}Z`), n3.length === e5.length) return `1970-01-01T${r5}`; + let s2 = t.index - 1; + return r5[s2] === " " && (r5 = `${r5.slice(0, s2)}T${r5.slice(s2 + 1)}`), r5; + } + __name(Fp, "Fp"); + function ge(e5) { + if (typeof e5 != "object") return e5; + var t, r5, n3 = Object.prototype.toString.call(e5); + if (n3 === "[object Object]") { + if (e5.constructor !== Object && typeof e5.constructor == "function") { + r5 = new e5.constructor(); + for (t in e5) e5.hasOwnProperty(t) && r5[t] !== e5[t] && (r5[t] = ge(e5[t])); + } else { + r5 = {}; + for (t in e5) t === "__proto__" ? Object.defineProperty(r5, t, { value: ge(e5[t]), configurable: true, enumerable: true, writable: true }) : r5[t] = ge(e5[t]); + } + return r5; + } + if (n3 === "[object Array]") { + for (t = e5.length, r5 = Array(t); t--; ) r5[t] = ge(e5[t]); + return r5; + } + return n3 === "[object Set]" ? (r5 = /* @__PURE__ */ new Set(), e5.forEach(function(i5) { + r5.add(ge(i5)); + }), r5) : n3 === "[object Map]" ? (r5 = /* @__PURE__ */ new Map(), e5.forEach(function(i5, o3) { + r5.set(ge(o3), ge(i5)); + }), r5) : n3 === "[object Date]" ? /* @__PURE__ */ new Date(+e5) : n3 === "[object RegExp]" ? (r5 = new RegExp(e5.source, e5.flags), r5.lastIndex = e5.lastIndex, r5) : n3 === "[object DataView]" ? new e5.constructor(ge(e5.buffer)) : n3 === "[object ArrayBuffer]" ? e5.slice(0) : n3.slice(-6) === "Array]" ? new e5.constructor(e5) : e5; + } + __name(ge, "ge"); + function _p(e5) { + let t = Object.entries(e5); + return t.length === 0 ? "" : (t.sort(([n3], [i5]) => n3.localeCompare(i5)), `/*${t.map(([n3, i5]) => { + let o3 = encodeURIComponent(n3), s2 = encodeURIComponent(i5).replace(/'/g, "\\'"); + return `${o3}='${s2}'`; + }).join(",")}*/`); + } + __name(_p, "_p"); + function Hr(e5, t) { + let r5 = {}; + for (let n3 of e5) { + let i5 = n3(ge(t)); + for (let [o3, s2] of Object.entries(i5)) s2 !== void 0 && (r5[o3] = s2); + } + return r5; + } + __name(Hr, "Hr"); + function Ys(e5, t) { + let r5 = Hr(e5, t); + return _p(r5); + } + __name(Ys, "Ys"); + function ea(e5, t) { + return t ? `${e5} ${t}` : e5; + } + __name(ea, "ea"); + var nr; + (function(e5) { + e5[e5.INTERNAL = 0] = "INTERNAL", e5[e5.SERVER = 1] = "SERVER", e5[e5.CLIENT = 2] = "CLIENT", e5[e5.PRODUCER = 3] = "PRODUCER", e5[e5.CONSUMER = 4] = "CONSUMER"; + })(nr || (nr = {})); + function $p(e5) { + switch (e5) { + case "postgresql": + case "postgres": + case "prisma+postgres": + return "postgresql"; + case "sqlserver": + return "mssql"; + case "mysql": + case "sqlite": + case "cockroachdb": + case "mongodb": + return e5; + default: + V(e5, `Unknown provider: ${e5}`); + } + } + __name($p, "$p"); + async function Wr({ query: e5, tracingHelper: t, provider: r5, onQuery: n3, execute: i5 }) { + let o3 = n3 === void 0 ? i5 : async () => { + let s2 = /* @__PURE__ */ new Date(), a5 = performance.now(), u = await i5(), m3 = performance.now(); + return n3({ timestamp: s2, duration: m3 - a5, query: e5.sql, params: e5.args }), u; + }; + return t.isEnabled() ? await t.runInChildSpan({ name: "db_query", kind: nr.CLIENT, attributes: { "db.query.text": e5.sql, "db.system.name": $p(r5) } }, o3) : o3(); + } + __name(Wr, "Wr"); + function Ze(e5, t) { + var r5 = "000000000" + e5; + return r5.substr(r5.length - t); + } + __name(Ze, "Ze"); + var ta = Pe(__require("node:os"), 1); + function Lp() { + try { + return ta.default.hostname(); + } catch { + return process.env._CLUSTER_NETWORK_NAME_ || process.env.COMPUTERNAME || "hostname"; + } + } + __name(Lp, "Lp"); + var ra = 2; + var Vp = Ze(process.pid.toString(36), ra); + var na = Lp(); + var qp = na.length; + var Up = Ze(na.split("").reduce(function(e5, t) { + return +e5 + t.charCodeAt(0); + }, +qp + 36).toString(36), ra); + function si() { + return Vp + Up; + } + __name(si, "si"); + function Kr(e5) { + return typeof e5 == "string" && /^c[a-z0-9]{20,32}$/.test(e5); + } + __name(Kr, "Kr"); + function ai(e5) { + let n3 = Math.pow(36, 4), i5 = 0; + function o3() { + return Ze((Math.random() * n3 << 0).toString(36), 4); + } + __name(o3, "o"); + function s2() { + return i5 = i5 < n3 ? i5 : 0, i5++, i5 - 1; + } + __name(s2, "s"); + function a5() { + var u = "c", m3 = (/* @__PURE__ */ new Date()).getTime().toString(36), P = Ze(s2().toString(36), 4), T2 = e5(), S = o3() + o3(); + return u + m3 + P + T2 + S; + } + __name(a5, "a"); + return a5.fingerprint = e5, a5.isCuid = Kr, a5; + } + __name(ai, "ai"); + var jp = ai(si); + var ia = jp; + var Zr = BigInt(4294967295); + var oa = BigInt(32); + function Bp(e5, t = false) { + return t ? { h: Number(e5 & Zr), l: Number(e5 >> oa & Zr) } : { h: Number(e5 >> oa & Zr) | 0, l: Number(e5 & Zr) | 0 }; + } + __name(Bp, "Bp"); + function sa(e5, t = false) { + let r5 = e5.length, n3 = new Uint32Array(r5), i5 = new Uint32Array(r5); + for (let o3 = 0; o3 < r5; o3++) { + let { h: s2, l: a5 } = Bp(e5[o3], t); + [n3[o3], i5[o3]] = [s2, a5]; + } + return [n3, i5]; + } + __name(sa, "sa"); + var aa = /* @__PURE__ */ __name((e5, t, r5) => e5 << r5 | t >>> 32 - r5, "aa"); + var la = /* @__PURE__ */ __name((e5, t, r5) => t << r5 | e5 >>> 32 - r5, "la"); + var ua = /* @__PURE__ */ __name((e5, t, r5) => t << r5 - 32 | e5 >>> 64 - r5, "ua"); + var ca = /* @__PURE__ */ __name((e5, t, r5) => e5 << r5 - 32 | t >>> 64 - r5, "ca"); + function Qp(e5) { + return e5 instanceof Uint8Array || ArrayBuffer.isView(e5) && e5.constructor.name === "Uint8Array" && "BYTES_PER_ELEMENT" in e5 && e5.BYTES_PER_ELEMENT === 1; + } + __name(Qp, "Qp"); + function Xr(e5, t = "") { + if (typeof e5 != "number") { + let r5 = t && `"${t}" `; + throw new TypeError(`${r5}expected number, got ${typeof e5}`); + } + if (!Number.isSafeInteger(e5) || e5 < 0) { + let r5 = t && `"${t}" `; + throw new RangeError(`${r5}expected integer >= 0, got ${e5}`); + } + } + __name(Xr, "Xr"); + function Yr(e5, t, r5 = "") { + let n3 = Qp(e5), i5 = e5?.length, o3 = t !== void 0; + if (!n3 || o3 && i5 !== t) { + let s2 = r5 && `"${r5}" `, a5 = o3 ? ` of length ${t}` : "", u = n3 ? `length=${i5}` : `type=${typeof e5}`, m3 = s2 + "expected Uint8Array" + a5 + ", got " + u; + throw n3 ? new RangeError(m3) : new TypeError(m3); + } + return e5; + } + __name(Yr, "Yr"); + function li(e5, t = true) { + if (e5.destroyed) throw new Error("Hash instance has been destroyed"); + if (t && e5.finished) throw new Error("Hash#digest() has already been called"); + } + __name(li, "li"); + function pa(e5, t) { + Yr(e5, void 0, "digestInto() output"); + let r5 = t.outputLen; + if (e5.length < r5) throw new RangeError('"digestInto() output" expected to be of length >=' + r5); + } + __name(pa, "pa"); + function da(e5) { + return new Uint32Array(e5.buffer, e5.byteOffset, Math.floor(e5.byteLength / 4)); + } + __name(da, "da"); + function ui(...e5) { + for (let t = 0; t < e5.length; t++) e5[t].fill(0); + } + __name(ui, "ui"); + var Jp = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68; + function Gp(e5) { + return e5 << 24 & 4278190080 | e5 << 8 & 16711680 | e5 >>> 8 & 65280 | e5 >>> 24 & 255; + } + __name(Gp, "Gp"); + function zp(e5) { + for (let t = 0; t < e5.length; t++) e5[t] = Gp(e5[t]); + return e5; + } + __name(zp, "zp"); + var ci = Jp ? (e5) => e5 : zp; + function ma(e5, t = {}) { + let r5 = /* @__PURE__ */ __name((i5, o3) => e5(o3).update(i5).digest(), "r"), n3 = e5(void 0); + return r5.outputLen = n3.outputLen, r5.blockLen = n3.blockLen, r5.canXOF = n3.canXOF, r5.create = (i5) => e5(i5), Object.assign(r5, t), Object.freeze(r5); + } + __name(ma, "ma"); + var fa = /* @__PURE__ */ __name((e5) => ({ oid: Uint8Array.from([6, 9, 96, 134, 72, 1, 101, 3, 4, 2, e5]) }), "fa"); + var Hp = BigInt(0); + var ir = BigInt(1); + var Wp = BigInt(2); + var Kp = BigInt(7); + var Zp = BigInt(256); + var Xp = BigInt(113); + var ha = []; + var wa = []; + var xa = []; + for (let e5 = 0, t = ir, r5 = 1, n3 = 0; e5 < 24; e5++) { + [r5, n3] = [n3, (2 * r5 + 3 * n3) % 5], ha.push(2 * (5 * n3 + r5)), wa.push((e5 + 1) * (e5 + 2) / 2 % 64); + let i5 = Hp; + for (let o3 = 0; o3 < 7; o3++) t = (t << ir ^ (t >> Kp) * Xp) % Zp, t & Wp && (i5 ^= ir << (ir << BigInt(o3)) - ir); + xa.push(i5); + } + var ba = sa(xa, true); + var Yp = ba[0]; + var ed = ba[1]; + var ga = /* @__PURE__ */ __name((e5, t, r5) => r5 > 32 ? ua(e5, t, r5) : aa(e5, t, r5), "ga"); + var ya = /* @__PURE__ */ __name((e5, t, r5) => r5 > 32 ? ca(e5, t, r5) : la(e5, t, r5), "ya"); + function td(e5, t = 24) { + if (Xr(t, "rounds"), t < 1 || t > 24) throw new Error('"rounds" expected integer 1..24'); + let r5 = new Uint32Array(5 * 2); + for (let n3 = 24 - t; n3 < 24; n3++) { + for (let s2 = 0; s2 < 10; s2++) r5[s2] = e5[s2] ^ e5[s2 + 10] ^ e5[s2 + 20] ^ e5[s2 + 30] ^ e5[s2 + 40]; + for (let s2 = 0; s2 < 10; s2 += 2) { + let a5 = (s2 + 8) % 10, u = (s2 + 2) % 10, m3 = r5[u], P = r5[u + 1], T2 = ga(m3, P, 1) ^ r5[a5], S = ya(m3, P, 1) ^ r5[a5 + 1]; + for (let I = 0; I < 50; I += 10) e5[s2 + I] ^= T2, e5[s2 + I + 1] ^= S; + } + let i5 = e5[2], o3 = e5[3]; + for (let s2 = 0; s2 < 24; s2++) { + let a5 = wa[s2], u = ga(i5, o3, a5), m3 = ya(i5, o3, a5), P = ha[s2]; + i5 = e5[P], o3 = e5[P + 1], e5[P] = u, e5[P + 1] = m3; + } + for (let s2 = 0; s2 < 50; s2 += 10) { + let a5 = e5[s2], u = e5[s2 + 1], m3 = e5[s2 + 2], P = e5[s2 + 3]; + e5[s2] ^= ~e5[s2 + 2] & e5[s2 + 4], e5[s2 + 1] ^= ~e5[s2 + 3] & e5[s2 + 5], e5[s2 + 2] ^= ~e5[s2 + 4] & e5[s2 + 6], e5[s2 + 3] ^= ~e5[s2 + 5] & e5[s2 + 7], e5[s2 + 4] ^= ~e5[s2 + 6] & e5[s2 + 8], e5[s2 + 5] ^= ~e5[s2 + 7] & e5[s2 + 9], e5[s2 + 6] ^= ~e5[s2 + 8] & a5, e5[s2 + 7] ^= ~e5[s2 + 9] & u, e5[s2 + 8] ^= ~a5 & m3, e5[s2 + 9] ^= ~u & P; + } + e5[0] ^= Yp[n3], e5[1] ^= ed[n3]; + } + ui(r5); + } + __name(td, "td"); + var pi = class e5 { + static { + __name(this, "e"); + } + state; + pos = 0; + posOut = 0; + finished = false; + state32; + destroyed = false; + blockLen; + suffix; + outputLen; + canXOF; + enableXOF = false; + rounds; + constructor(t, r5, n3, i5 = false, o3 = 24) { + if (this.blockLen = t, this.suffix = r5, this.outputLen = n3, this.enableXOF = i5, this.canXOF = i5, this.rounds = o3, Xr(n3, "outputLen"), !(0 < t && t < 200)) throw new Error("only keccak-f1600 function is supported"); + this.state = new Uint8Array(200), this.state32 = da(this.state); + } + clone() { + return this._cloneInto(); + } + keccak() { + ci(this.state32), td(this.state32, this.rounds), ci(this.state32), this.posOut = 0, this.pos = 0; + } + update(t) { + li(this), Yr(t); + let { blockLen: r5, state: n3 } = this, i5 = t.length; + for (let o3 = 0; o3 < i5; ) { + let s2 = Math.min(r5 - this.pos, i5 - o3); + for (let a5 = 0; a5 < s2; a5++) n3[this.pos++] ^= t[o3++]; + this.pos === r5 && this.keccak(); + } + return this; + } + finish() { + if (this.finished) return; + this.finished = true; + let { state: t, suffix: r5, pos: n3, blockLen: i5 } = this; + t[n3] ^= r5, (r5 & 128) !== 0 && n3 === i5 - 1 && this.keccak(), t[i5 - 1] ^= 128, this.keccak(); + } + writeInto(t) { + li(this, false), Yr(t), this.finish(); + let r5 = this.state, { blockLen: n3 } = this; + for (let i5 = 0, o3 = t.length; i5 < o3; ) { + this.posOut >= n3 && this.keccak(); + let s2 = Math.min(n3 - this.posOut, o3 - i5); + t.set(r5.subarray(this.posOut, this.posOut + s2), i5), this.posOut += s2, i5 += s2; + } + return t; + } + xofInto(t) { + if (!this.enableXOF) throw new Error("XOF is not possible for this instance"); + return this.writeInto(t); + } + xof(t) { + return Xr(t), this.xofInto(new Uint8Array(t)); + } + digestInto(t) { + if (pa(t, this), this.finished) throw new Error("digest() was already called"); + this.writeInto(t.subarray(0, this.outputLen)), this.destroy(); + } + digest() { + let t = new Uint8Array(this.outputLen); + return this.digestInto(t), t; + } + destroy() { + this.destroyed = true, ui(this.state); + } + _cloneInto(t) { + let { blockLen: r5, suffix: n3, outputLen: i5, rounds: o3, enableXOF: s2 } = this; + return t ||= new e5(r5, n3, i5, s2, o3), t.blockLen = r5, t.state32.set(this.state32), t.pos = this.pos, t.posOut = this.posOut, t.finished = this.finished, t.rounds = o3, t.suffix = n3, t.outputLen = i5, t.enableXOF = s2, t.canXOF = this.canXOF, t.destroyed = this.destroyed, t; + } + }; + var rd = /* @__PURE__ */ __name((e5, t, r5, n3 = {}) => ma(() => new pi(t, e5, r5), n3), "rd"); + var Pa = rd(6, 72, 64, fa(10)); + var nd = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i; + var di = Math.ceil; + var he = Math.floor; + var le = "[BigNumber Error] "; + var Ea = le + "Number primitive has more than 15 significant digits: "; + var Re = 1e14; + var N = 14; + var mi = 9007199254740991; + var fi = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13]; + var Qe = 1e7; + var Y = 1e9; + function Ta(e5) { + var t, r5, n3, i5 = E.prototype = { constructor: E, toString: null, valueOf: null }, o3 = new E(1), s2 = 20, a5 = 4, u = -7, m3 = 21, P = -1e7, T2 = 1e7, S = false, I = 1, A = 0, M = { prefix: "", groupSize: 3, secondaryGroupSize: 0, groupSeparator: ",", decimalSeparator: ".", fractionGroupSize: 0, fractionGroupSeparator: "\xA0", suffix: "" }, L = "0123456789abcdefghijklmnopqrstuvwxyz", q3 = true; + function E(l3, c5) { + var p3, h5, f5, y, b5, d5, g5, x, w = this; + if (!(w instanceof E)) return new E(l3, c5); + if (c5 == null) { + if (l3 && l3._isBigNumber === true) { + w.s = l3.s, !l3.c || l3.e > T2 ? w.c = w.e = null : l3.e < P ? w.c = [w.e = 0] : (w.e = l3.e, w.c = l3.c.slice()); + return; + } + if ((d5 = typeof l3 == "number") && l3 * 0 == 0) { + if (w.s = 1 / l3 < 0 ? (l3 = -l3, -1) : 1, l3 === ~~l3) { + for (y = 0, b5 = l3; b5 >= 10; b5 /= 10, y++) ; + y > T2 ? w.c = w.e = null : (w.e = y, w.c = [l3]); + return; + } + x = String(l3); + } else { + if (!nd.test(x = String(l3))) return n3(w, x, d5); + w.s = x.charCodeAt(0) == 45 ? (x = x.slice(1), -1) : 1; + } + (y = x.indexOf(".")) > -1 && (x = x.replace(".", "")), (b5 = x.search(/e/i)) > 0 ? (y < 0 && (y = b5), y += +x.slice(b5 + 1), x = x.substring(0, b5)) : y < 0 && (y = x.length); + } else { + if (J(c5, 2, L.length, "Base"), c5 == 10 && q3) return w = new E(l3), ie(w, s2 + w.e + 1, a5); + if (x = String(l3), d5 = typeof l3 == "number") { + if (l3 * 0 != 0) return n3(w, x, d5, c5); + if (w.s = 1 / l3 < 0 ? (x = x.slice(1), -1) : 1, E.DEBUG && x.replace(/^0\.0*|\./, "").length > 15) throw Error(Ea + l3); + } else w.s = x.charCodeAt(0) === 45 ? (x = x.slice(1), -1) : 1; + for (p3 = L.slice(0, c5), y = b5 = 0, g5 = x.length; b5 < g5; b5++) if (p3.indexOf(h5 = x.charAt(b5)) < 0) { + if (h5 == ".") { + if (b5 > y) { + y = g5; + continue; + } + } else if (!f5 && (x == x.toUpperCase() && (x = x.toLowerCase()) || x == x.toLowerCase() && (x = x.toUpperCase()))) { + f5 = true, b5 = -1, y = 0; + continue; + } + return n3(w, String(l3), d5, c5); + } + d5 = false, x = r5(x, c5, 10, w.s), (y = x.indexOf(".")) > -1 ? x = x.replace(".", "") : y = x.length; + } + for (b5 = 0; x.charCodeAt(b5) === 48; b5++) ; + for (g5 = x.length; x.charCodeAt(--g5) === 48; ) ; + if (x = x.slice(b5, ++g5)) { + if (g5 -= b5, d5 && E.DEBUG && g5 > 15 && (l3 > mi || l3 !== he(l3))) throw Error(Ea + w.s * l3); + if ((y = y - b5 - 1) > T2) w.c = w.e = null; + else if (y < P) w.c = [w.e = 0]; + else { + if (w.e = y, w.c = [], b5 = (y + 1) % N, y < 0 && (b5 += N), b5 < g5) { + for (b5 && w.c.push(+x.slice(0, b5)), g5 -= N; b5 < g5; ) w.c.push(+x.slice(b5, b5 += N)); + b5 = N - (x = x.slice(b5)).length; + } else b5 -= g5; + for (; b5--; x += "0") ; + w.c.push(+x); + } + } else w.c = [w.e = 0]; + } + __name(E, "E"); + E.clone = Ta, E.ROUND_UP = 0, E.ROUND_DOWN = 1, E.ROUND_CEIL = 2, E.ROUND_FLOOR = 3, E.ROUND_HALF_UP = 4, E.ROUND_HALF_DOWN = 5, E.ROUND_HALF_EVEN = 6, E.ROUND_HALF_CEIL = 7, E.ROUND_HALF_FLOOR = 8, E.EUCLID = 9, E.config = E.set = function(l3) { + var c5, p3; + if (l3 != null) if (typeof l3 == "object") { + if (l3.hasOwnProperty(c5 = "DECIMAL_PLACES") && (p3 = l3[c5], J(p3, 0, Y, c5), s2 = p3), l3.hasOwnProperty(c5 = "ROUNDING_MODE") && (p3 = l3[c5], J(p3, 0, 8, c5), a5 = p3), l3.hasOwnProperty(c5 = "EXPONENTIAL_AT") && (p3 = l3[c5], p3 && p3.pop ? (J(p3[0], -Y, 0, c5), J(p3[1], 0, Y, c5), u = p3[0], m3 = p3[1]) : (J(p3, -Y, Y, c5), u = -(m3 = p3 < 0 ? -p3 : p3))), l3.hasOwnProperty(c5 = "RANGE")) if (p3 = l3[c5], p3 && p3.pop) J(p3[0], -Y, -1, c5), J(p3[1], 1, Y, c5), P = p3[0], T2 = p3[1]; + else if (J(p3, -Y, Y, c5), p3) P = -(T2 = p3 < 0 ? -p3 : p3); + else throw Error(le + c5 + " cannot be zero: " + p3); + if (l3.hasOwnProperty(c5 = "CRYPTO")) if (p3 = l3[c5], p3 === !!p3) if (p3) if (typeof crypto < "u" && crypto && (crypto.getRandomValues || crypto.randomBytes)) S = p3; + else throw S = !p3, Error(le + "crypto unavailable"); + else S = p3; + else throw Error(le + c5 + " not true or false: " + p3); + if (l3.hasOwnProperty(c5 = "MODULO_MODE") && (p3 = l3[c5], J(p3, 0, 9, c5), I = p3), l3.hasOwnProperty(c5 = "POW_PRECISION") && (p3 = l3[c5], J(p3, 0, Y, c5), A = p3), l3.hasOwnProperty(c5 = "FORMAT")) if (p3 = l3[c5], typeof p3 == "object") M = p3; + else throw Error(le + c5 + " not an object: " + p3); + if (l3.hasOwnProperty(c5 = "ALPHABET")) if (p3 = l3[c5], typeof p3 == "string" && !/^.?$|[+\-.\s]|(.).*\1/.test(p3)) q3 = p3.slice(0, 10) == "0123456789", L = p3; + else throw Error(le + c5 + " invalid: " + p3); + } else throw Error(le + "Object expected: " + l3); + return { DECIMAL_PLACES: s2, ROUNDING_MODE: a5, EXPONENTIAL_AT: [u, m3], RANGE: [P, T2], CRYPTO: S, MODULO_MODE: I, POW_PRECISION: A, FORMAT: M, ALPHABET: L }; + }, E.isBigNumber = function(l3) { + if (!l3 || l3._isBigNumber !== true) return false; + if (!E.DEBUG) return true; + var c5, p3, h5 = l3.c, f5 = l3.e, y = l3.s; + e: if ({}.toString.call(h5) == "[object Array]") { + if ((y === 1 || y === -1) && f5 >= -Y && f5 <= Y && f5 === he(f5)) { + if (h5[0] === 0) { + if (f5 === 0 && h5.length === 1) return true; + break e; + } + if (c5 = (f5 + 1) % N, c5 < 1 && (c5 += N), String(h5[0]).length == c5) { + for (c5 = 0; c5 < h5.length; c5++) if (p3 = h5[c5], p3 < 0 || p3 >= Re || p3 !== he(p3)) break e; + if (p3 !== 0) return true; + } + } + } else if (h5 === null && f5 === null && (y === null || y === 1 || y === -1)) return true; + throw Error(le + "Invalid BigNumber: " + l3); + }, E.maximum = E.max = function() { + return H(arguments, -1); + }, E.minimum = E.min = function() { + return H(arguments, 1); + }, E.random = (function() { + var l3 = 9007199254740992, c5 = Math.random() * l3 & 2097151 ? function() { + return he(Math.random() * l3); + } : function() { + return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0); + }; + return function(p3) { + var h5, f5, y, b5, d5, g5 = 0, x = [], w = new E(o3); + if (p3 == null ? p3 = s2 : J(p3, 0, Y), b5 = di(p3 / N), S) if (crypto.getRandomValues) { + for (h5 = crypto.getRandomValues(new Uint32Array(b5 *= 2)); g5 < b5; ) d5 = h5[g5] * 131072 + (h5[g5 + 1] >>> 11), d5 >= 9e15 ? (f5 = crypto.getRandomValues(new Uint32Array(2)), h5[g5] = f5[0], h5[g5 + 1] = f5[1]) : (x.push(d5 % 1e14), g5 += 2); + g5 = b5 / 2; + } else if (crypto.randomBytes) { + for (h5 = crypto.randomBytes(b5 *= 7); g5 < b5; ) d5 = (h5[g5] & 31) * 281474976710656 + h5[g5 + 1] * 1099511627776 + h5[g5 + 2] * 4294967296 + h5[g5 + 3] * 16777216 + (h5[g5 + 4] << 16) + (h5[g5 + 5] << 8) + h5[g5 + 6], d5 >= 9e15 ? crypto.randomBytes(7).copy(h5, g5) : (x.push(d5 % 1e14), g5 += 7); + g5 = b5 / 7; + } else throw S = false, Error(le + "crypto unavailable"); + if (!S) for (; g5 < b5; ) d5 = c5(), d5 < 9e15 && (x[g5++] = d5 % 1e14); + for (b5 = x[--g5], p3 %= N, b5 && p3 && (d5 = fi[N - p3], x[g5] = he(b5 / d5) * d5); x[g5] === 0; x.pop(), g5--) ; + if (g5 < 0) x = [y = 0]; + else { + for (y = -1; x[0] === 0; x.splice(0, 1), y -= N) ; + for (g5 = 1, d5 = x[0]; d5 >= 10; d5 /= 10, g5++) ; + g5 < N && (y -= N - g5); + } + return w.e = y, w.c = x, w; + }; + })(), E.sum = function() { + for (var l3 = 1, c5 = arguments, p3 = new E(c5[0]); l3 < c5.length; ) p3 = p3.plus(c5[l3++]); + return p3; + }, r5 = /* @__PURE__ */ (function() { + var l3 = "0123456789"; + function c5(p3, h5, f5, y) { + for (var b5, d5 = [0], g5, x = 0, w = p3.length; x < w; ) { + for (g5 = d5.length; g5--; d5[g5] *= h5) ; + for (d5[0] += y.indexOf(p3.charAt(x++)), b5 = 0; b5 < d5.length; b5++) d5[b5] > f5 - 1 && (d5[b5 + 1] == null && (d5[b5 + 1] = 0), d5[b5 + 1] += d5[b5] / f5 | 0, d5[b5] %= f5); + } + return d5.reverse(); + } + __name(c5, "c"); + return function(p3, h5, f5, y, b5) { + var d5, g5, x, w, v, R, C, $2, G = p3.indexOf("."), W = s2, F = a5; + for (G >= 0 && (w = A, A = 0, p3 = p3.replace(".", ""), $2 = new E(h5), R = $2.pow(p3.length - G), A = w, $2.c = c5(Le(ye(R.c), R.e, "0"), 10, f5, l3), $2.e = $2.c.length), C = c5(p3, h5, f5, b5 ? (d5 = L, l3) : (d5 = l3, L)), x = w = C.length; C[--w] == 0; C.pop()) ; + if (!C[0]) return d5.charAt(0); + if (G < 0 ? --x : (R.c = C, R.e = x, R.s = y, R = t(R, $2, W, F, f5), C = R.c, v = R.r, x = R.e), g5 = x + W + 1, G = C[g5], w = f5 / 2, v = v || g5 < 0 || C[g5 + 1] != null, v = F < 4 ? (G != null || v) && (F == 0 || F == (R.s < 0 ? 3 : 2)) : G > w || G == w && (F == 4 || v || F == 6 && C[g5 - 1] & 1 || F == (R.s < 0 ? 8 : 7)), g5 < 1 || !C[0]) p3 = v ? Le(d5.charAt(1), -W, d5.charAt(0)) : d5.charAt(0); + else { + if (C.length = g5, v) for (--f5; ++C[--g5] > f5; ) C[g5] = 0, g5 || (++x, C = [1].concat(C)); + for (w = C.length; !C[--w]; ) ; + for (G = 0, p3 = ""; G <= w; p3 += d5.charAt(C[G++])) ; + p3 = Le(p3, x, d5.charAt(0)); + } + return p3; + }; + })(), t = /* @__PURE__ */ (function() { + function l3(h5, f5, y) { + var b5, d5, g5, x, w = 0, v = h5.length, R = f5 % Qe, C = f5 / Qe | 0; + for (h5 = h5.slice(); v--; ) g5 = h5[v] % Qe, x = h5[v] / Qe | 0, b5 = C * g5 + x * R, d5 = R * g5 + b5 % Qe * Qe + w, w = (d5 / y | 0) + (b5 / Qe | 0) + C * x, h5[v] = d5 % y; + return w && (h5 = [w].concat(h5)), h5; + } + __name(l3, "l"); + function c5(h5, f5, y, b5) { + var d5, g5; + if (y != b5) g5 = y > b5 ? 1 : -1; + else for (d5 = g5 = 0; d5 < y; d5++) if (h5[d5] != f5[d5]) { + g5 = h5[d5] > f5[d5] ? 1 : -1; + break; + } + return g5; + } + __name(c5, "c"); + function p3(h5, f5, y, b5) { + for (var d5 = 0; y--; ) h5[y] -= d5, d5 = h5[y] < f5[y] ? 1 : 0, h5[y] = d5 * b5 + h5[y] - f5[y]; + for (; !h5[0] && h5.length > 1; h5.splice(0, 1)) ; + } + __name(p3, "p"); + return function(h5, f5, y, b5, d5) { + var g5, x, w, v, R, C, $2, G, W, F, U, oe, wr, Sn, An, Ce, Ot, me = h5.s == f5.s ? 1 : -1, se = h5.c, z2 = f5.c; + if (!se || !se[0] || !z2 || !z2[0]) return new E(!h5.s || !f5.s || (se ? z2 && se[0] == z2[0] : !z2) ? NaN : se && se[0] == 0 || !z2 ? me * 0 : me / 0); + for (G = new E(me), W = G.c = [], x = h5.e - f5.e, me = y + x + 1, d5 || (d5 = Re, x = we(h5.e / N) - we(f5.e / N), me = me / N | 0), w = 0; z2[w] == (se[w] || 0); w++) ; + if (z2[w] > (se[w] || 0) && x--, me < 0) W.push(1), v = true; + else { + for (Sn = se.length, Ce = z2.length, w = 0, me += 2, R = he(d5 / (z2[0] + 1)), R > 1 && (z2 = l3(z2, R, d5), se = l3(se, R, d5), Ce = z2.length, Sn = se.length), wr = Ce, F = se.slice(0, Ce), U = F.length; U < Ce; F[U++] = 0) ; + Ot = z2.slice(), Ot = [0].concat(Ot), An = z2[0], z2[1] >= d5 / 2 && An++; + do { + if (R = 0, g5 = c5(z2, F, Ce, U), g5 < 0) { + if (oe = F[0], Ce != U && (oe = oe * d5 + (F[1] || 0)), R = he(oe / An), R > 1) for (R >= d5 && (R = d5 - 1), C = l3(z2, R, d5), $2 = C.length, U = F.length; c5(C, F, $2, U) == 1; ) R--, p3(C, Ce < $2 ? Ot : z2, $2, d5), $2 = C.length, g5 = 1; + else R == 0 && (g5 = R = 1), C = z2.slice(), $2 = C.length; + if ($2 < U && (C = [0].concat(C)), p3(F, C, U, d5), U = F.length, g5 == -1) for (; c5(z2, F, Ce, U) < 1; ) R++, p3(F, Ce < U ? Ot : z2, U, d5), U = F.length; + } else g5 === 0 && (R++, F = [0]); + W[w++] = R, F[0] ? F[U++] = se[wr] || 0 : (F = [se[wr]], U = 1); + } while ((wr++ < Sn || F[0] != null) && me--); + v = F[0] != null, W[0] || W.splice(0, 1); + } + if (d5 == Re) { + for (w = 1, me = W[0]; me >= 10; me /= 10, w++) ; + ie(G, y + (G.e = w + x * N - 1) + 1, b5, v); + } else G.e = x, G.r = +v; + return G; + }; + })(); + function D(l3, c5, p3, h5) { + var f5, y, b5, d5, g5; + if (p3 == null ? p3 = a5 : J(p3, 0, 8), !l3.c) return l3.toString(); + if (f5 = l3.c[0], b5 = l3.e, c5 == null) g5 = ye(l3.c), g5 = h5 == 1 || h5 == 2 && (b5 <= u || b5 >= m3) ? tn(g5, b5) : Le(g5, b5, "0"); + else if (l3 = ie(new E(l3), c5, p3), y = l3.e, g5 = ye(l3.c), d5 = g5.length, h5 == 1 || h5 == 2 && (c5 <= y || y <= u)) { + for (; d5 < c5; g5 += "0", d5++) ; + g5 = tn(g5, y); + } else if (c5 -= b5 + (h5 === 2 && y > b5), g5 = Le(g5, y, "0"), y + 1 > d5) { + if (--c5 > 0) for (g5 += "."; c5--; g5 += "0") ; + } else if (c5 += y - d5, c5 > 0) for (y + 1 == d5 && (g5 += "."); c5--; g5 += "0") ; + return l3.s < 0 && f5 ? "-" + g5 : g5; + } + __name(D, "D"); + function H(l3, c5) { + for (var p3, h5, f5 = 1, y = new E(l3[0]); f5 < l3.length; f5++) h5 = new E(l3[f5]), (!h5.s || (p3 = Xe(y, h5)) === c5 || p3 === 0 && y.s === c5) && (y = h5); + return y; + } + __name(H, "H"); + function ce(l3, c5, p3) { + for (var h5 = 1, f5 = c5.length; !c5[--f5]; c5.pop()) ; + for (f5 = c5[0]; f5 >= 10; f5 /= 10, h5++) ; + return (p3 = h5 + p3 * N - 1) > T2 ? l3.c = l3.e = null : p3 < P ? l3.c = [l3.e = 0] : (l3.e = p3, l3.c = c5), l3; + } + __name(ce, "ce"); + n3 = /* @__PURE__ */ (function() { + var l3 = /^(-?)0([xbo])(?=\w[\w.]*$)/i, c5 = /^([^.]+)\.$/, p3 = /^\.([^.]+)$/, h5 = /^-?(Infinity|NaN)$/, f5 = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + return function(y, b5, d5, g5) { + var x, w = d5 ? b5 : b5.replace(f5, ""); + if (h5.test(w)) y.s = isNaN(w) ? null : w < 0 ? -1 : 1; + else { + if (!d5 && (w = w.replace(l3, function(v, R, C) { + return x = (C = C.toLowerCase()) == "x" ? 16 : C == "b" ? 2 : 8, !g5 || g5 == x ? R : v; + }), g5 && (x = g5, w = w.replace(c5, "$1").replace(p3, "0.$1")), b5 != w)) return new E(w, x); + if (E.DEBUG) throw Error(le + "Not a" + (g5 ? " base " + g5 : "") + " number: " + b5); + y.s = null; + } + y.c = y.e = null; + }; + })(); + function ie(l3, c5, p3, h5) { + var f5, y, b5, d5, g5, x, w, v = l3.c, R = fi; + if (v) { + e: { + for (f5 = 1, d5 = v[0]; d5 >= 10; d5 /= 10, f5++) ; + if (y = c5 - f5, y < 0) y += N, b5 = c5, g5 = v[x = 0], w = he(g5 / R[f5 - b5 - 1] % 10); + else if (x = di((y + 1) / N), x >= v.length) if (h5) { + for (; v.length <= x; v.push(0)) ; + g5 = w = 0, f5 = 1, y %= N, b5 = y - N + 1; + } else break e; + else { + for (g5 = d5 = v[x], f5 = 1; d5 >= 10; d5 /= 10, f5++) ; + y %= N, b5 = y - N + f5, w = b5 < 0 ? 0 : he(g5 / R[f5 - b5 - 1] % 10); + } + if (h5 = h5 || c5 < 0 || v[x + 1] != null || (b5 < 0 ? g5 : g5 % R[f5 - b5 - 1]), h5 = p3 < 4 ? (w || h5) && (p3 == 0 || p3 == (l3.s < 0 ? 3 : 2)) : w > 5 || w == 5 && (p3 == 4 || h5 || p3 == 6 && (y > 0 ? b5 > 0 ? g5 / R[f5 - b5] : 0 : v[x - 1]) % 10 & 1 || p3 == (l3.s < 0 ? 8 : 7)), c5 < 1 || !v[0]) return v.length = 0, h5 ? (c5 -= l3.e + 1, v[0] = R[(N - c5 % N) % N], l3.e = -c5 || 0) : v[0] = l3.e = 0, l3; + if (y == 0 ? (v.length = x, d5 = 1, x--) : (v.length = x + 1, d5 = R[N - y], v[x] = b5 > 0 ? he(g5 / R[f5 - b5] % R[b5]) * d5 : 0), h5) for (; ; ) if (x == 0) { + for (y = 1, b5 = v[0]; b5 >= 10; b5 /= 10, y++) ; + for (b5 = v[0] += d5, d5 = 1; b5 >= 10; b5 /= 10, d5++) ; + y != d5 && (l3.e++, v[0] == Re && (v[0] = 1)); + break; + } else { + if (v[x] += d5, v[x] != Re) break; + v[x--] = 0, d5 = 1; + } + for (y = v.length; v[--y] === 0; v.pop()) ; + } + l3.e > T2 ? l3.c = l3.e = null : l3.e < P && (l3.c = [l3.e = 0]); + } + return l3; + } + __name(ie, "ie"); + function be(l3) { + var c5, p3 = l3.e; + return p3 === null ? l3.toString() : (c5 = ye(l3.c), c5 = p3 <= u || p3 >= m3 ? tn(c5, p3) : Le(c5, p3, "0"), l3.s < 0 ? "-" + c5 : c5); + } + __name(be, "be"); + return i5.absoluteValue = i5.abs = function() { + var l3 = new E(this); + return l3.s < 0 && (l3.s = 1), l3; + }, i5.comparedTo = function(l3, c5) { + return Xe(this, new E(l3, c5)); + }, i5.decimalPlaces = i5.dp = function(l3, c5) { + var p3, h5, f5, y = this; + if (l3 != null) return J(l3, 0, Y), c5 == null ? c5 = a5 : J(c5, 0, 8), ie(new E(y), l3 + y.e + 1, c5); + if (!(p3 = y.c)) return null; + if (h5 = ((f5 = p3.length - 1) - we(this.e / N)) * N, f5 = p3[f5]) for (; f5 % 10 == 0; f5 /= 10, h5--) ; + return h5 < 0 && (h5 = 0), h5; + }, i5.dividedBy = i5.div = function(l3, c5) { + return t(this, new E(l3, c5), s2, a5); + }, i5.dividedToIntegerBy = i5.idiv = function(l3, c5) { + return t(this, new E(l3, c5), 0, 1); + }, i5.exponentiatedBy = i5.pow = function(l3, c5) { + var p3, h5, f5, y, b5, d5, g5, x, w, v = this; + if (l3 = new E(l3), l3.c && !l3.isInteger()) throw Error(le + "Exponent not an integer: " + be(l3)); + if (c5 != null && (c5 = new E(c5)), d5 = l3.e > 14, !v.c || !v.c[0] || v.c[0] == 1 && !v.e && v.c.length == 1 || !l3.c || !l3.c[0]) return w = new E(Math.pow(+be(v), d5 ? l3.s * (2 - en(l3)) : +be(l3))), c5 ? w.mod(c5) : w; + if (g5 = l3.s < 0, c5) { + if (c5.c ? !c5.c[0] : !c5.s) return new E(NaN); + h5 = !g5 && v.isInteger() && c5.isInteger(), h5 && (v = v.mod(c5)); + } else { + if (l3.e > 9 && (v.e > 0 || v.e < -1 || (v.e == 0 ? v.c[0] > 1 || d5 && v.c[1] >= 24e7 : v.c[0] < 8e13 || d5 && v.c[0] <= 9999975e7))) return y = v.s < 0 && en(l3) ? -0 : 0, v.e > -1 && (y = 1 / y), new E(g5 ? 1 / y : y); + A && (y = di(A / N + 2)); + } + for (d5 ? (p3 = new E(0.5), g5 && (l3.s = 1), x = en(l3)) : (f5 = Math.abs(+be(l3)), x = f5 % 2), w = new E(o3); ; ) { + if (x) { + if (w = w.times(v), !w.c) break; + y ? w.c.length > y && (w.c.length = y) : h5 && (w = w.mod(c5)); + } + if (f5) { + if (f5 = he(f5 / 2), f5 === 0) break; + x = f5 % 2; + } else if (l3 = l3.times(p3), ie(l3, l3.e + 1, 1), l3.e > 14) x = en(l3); + else { + if (f5 = +be(l3), f5 === 0) break; + x = f5 % 2; + } + v = v.times(v), y ? v.c && v.c.length > y && (v.c.length = y) : h5 && (v = v.mod(c5)); + } + return h5 ? w : (g5 && (w = o3.div(w)), c5 ? w.mod(c5) : y ? ie(w, A, a5, b5) : w); + }, i5.integerValue = function(l3) { + var c5 = new E(this); + return l3 == null ? l3 = a5 : J(l3, 0, 8), ie(c5, c5.e + 1, l3); + }, i5.isEqualTo = i5.eq = function(l3, c5) { + return Xe(this, new E(l3, c5)) === 0; + }, i5.isFinite = function() { + return !!this.c; + }, i5.isGreaterThan = i5.gt = function(l3, c5) { + return Xe(this, new E(l3, c5)) > 0; + }, i5.isGreaterThanOrEqualTo = i5.gte = function(l3, c5) { + return (c5 = Xe(this, new E(l3, c5))) === 1 || c5 === 0; + }, i5.isInteger = function() { + return !!this.c && we(this.e / N) > this.c.length - 2; + }, i5.isLessThan = i5.lt = function(l3, c5) { + return Xe(this, new E(l3, c5)) < 0; + }, i5.isLessThanOrEqualTo = i5.lte = function(l3, c5) { + return (c5 = Xe(this, new E(l3, c5))) === -1 || c5 === 0; + }, i5.isNaN = function() { + return !this.s; + }, i5.isNegative = function() { + return this.s < 0; + }, i5.isPositive = function() { + return this.s > 0; + }, i5.isZero = function() { + return !!this.c && this.c[0] == 0; + }, i5.minus = function(l3, c5) { + var p3, h5, f5, y, b5 = this, d5 = b5.s; + if (l3 = new E(l3, c5), c5 = l3.s, !d5 || !c5) return new E(NaN); + if (d5 != c5) return l3.s = -c5, b5.plus(l3); + var g5 = b5.e / N, x = l3.e / N, w = b5.c, v = l3.c; + if (!g5 || !x) { + if (!w || !v) return w ? (l3.s = -c5, l3) : new E(v ? b5 : NaN); + if (!w[0] || !v[0]) return v[0] ? (l3.s = -c5, l3) : new E(w[0] ? b5 : a5 == 3 ? -0 : 0); + } + if (g5 = we(g5), x = we(x), w = w.slice(), d5 = g5 - x) { + for ((y = d5 < 0) ? (d5 = -d5, f5 = w) : (x = g5, f5 = v), f5.reverse(), c5 = d5; c5--; f5.push(0)) ; + f5.reverse(); + } else for (h5 = (y = (d5 = w.length) < (c5 = v.length)) ? d5 : c5, d5 = c5 = 0; c5 < h5; c5++) if (w[c5] != v[c5]) { + y = w[c5] < v[c5]; + break; + } + if (y && (f5 = w, w = v, v = f5, l3.s = -l3.s), c5 = (h5 = v.length) - (p3 = w.length), c5 > 0) for (; c5--; w[p3++] = 0) ; + for (c5 = Re - 1; h5 > d5; ) { + if (w[--h5] < v[h5]) { + for (p3 = h5; p3 && !w[--p3]; w[p3] = c5) ; + --w[p3], w[h5] += Re; + } + w[h5] -= v[h5]; + } + for (; w[0] == 0; w.splice(0, 1), --x) ; + return w[0] ? ce(l3, w, x) : (l3.s = a5 == 3 ? -1 : 1, l3.c = [l3.e = 0], l3); + }, i5.modulo = i5.mod = function(l3, c5) { + var p3, h5, f5 = this; + return l3 = new E(l3, c5), !f5.c || !l3.s || l3.c && !l3.c[0] ? new E(NaN) : !l3.c || f5.c && !f5.c[0] ? new E(f5) : (I == 9 ? (h5 = l3.s, l3.s = 1, p3 = t(f5, l3, 0, 3), l3.s = h5, p3.s *= h5) : p3 = t(f5, l3, 0, I), l3 = f5.minus(p3.times(l3)), !l3.c[0] && I == 1 && (l3.s = f5.s), l3); + }, i5.multipliedBy = i5.times = function(l3, c5) { + var p3, h5, f5, y, b5, d5, g5, x, w, v, R, C, $2, G, W, F = this, U = F.c, oe = (l3 = new E(l3, c5)).c; + if (!U || !oe || !U[0] || !oe[0]) return !F.s || !l3.s || U && !U[0] && !oe || oe && !oe[0] && !U ? l3.c = l3.e = l3.s = null : (l3.s *= F.s, !U || !oe ? l3.c = l3.e = null : (l3.c = [0], l3.e = 0)), l3; + for (h5 = we(F.e / N) + we(l3.e / N), l3.s *= F.s, g5 = U.length, v = oe.length, g5 < v && ($2 = U, U = oe, oe = $2, f5 = g5, g5 = v, v = f5), f5 = g5 + v, $2 = []; f5--; $2.push(0)) ; + for (G = Re, W = Qe, f5 = v; --f5 >= 0; ) { + for (p3 = 0, R = oe[f5] % W, C = oe[f5] / W | 0, b5 = g5, y = f5 + b5; y > f5; ) x = U[--b5] % W, w = U[b5] / W | 0, d5 = C * x + w * R, x = R * x + d5 % W * W + $2[y] + p3, p3 = (x / G | 0) + (d5 / W | 0) + C * w, $2[y--] = x % G; + $2[y] = p3; + } + return p3 ? ++h5 : $2.splice(0, 1), ce(l3, $2, h5); + }, i5.negated = function() { + var l3 = new E(this); + return l3.s = -l3.s || null, l3; + }, i5.plus = function(l3, c5) { + var p3, h5 = this, f5 = h5.s; + if (l3 = new E(l3, c5), c5 = l3.s, !f5 || !c5) return new E(NaN); + if (f5 != c5) return l3.s = -c5, h5.minus(l3); + var y = h5.e / N, b5 = l3.e / N, d5 = h5.c, g5 = l3.c; + if (!y || !b5) { + if (!d5 || !g5) return new E(f5 / 0); + if (!d5[0] || !g5[0]) return g5[0] ? l3 : new E(d5[0] ? h5 : f5 * 0); + } + if (y = we(y), b5 = we(b5), d5 = d5.slice(), f5 = y - b5) { + for (f5 > 0 ? (b5 = y, p3 = g5) : (f5 = -f5, p3 = d5), p3.reverse(); f5--; p3.push(0)) ; + p3.reverse(); + } + for (f5 = d5.length, c5 = g5.length, f5 - c5 < 0 && (p3 = g5, g5 = d5, d5 = p3, c5 = f5), f5 = 0; c5; ) f5 = (d5[--c5] = d5[c5] + g5[c5] + f5) / Re | 0, d5[c5] = Re === d5[c5] ? 0 : d5[c5] % Re; + return f5 && (d5 = [f5].concat(d5), ++b5), ce(l3, d5, b5); + }, i5.precision = i5.sd = function(l3, c5) { + var p3, h5, f5, y = this; + if (l3 != null && l3 !== !!l3) return J(l3, 1, Y), c5 == null ? c5 = a5 : J(c5, 0, 8), ie(new E(y), l3, c5); + if (!(p3 = y.c)) return null; + if (f5 = p3.length - 1, h5 = f5 * N + 1, f5 = p3[f5]) { + for (; f5 % 10 == 0; f5 /= 10, h5--) ; + for (f5 = p3[0]; f5 >= 10; f5 /= 10, h5++) ; + } + return l3 && y.e + 1 > h5 && (h5 = y.e + 1), h5; + }, i5.shiftedBy = function(l3) { + return J(l3, -mi, mi), this.times("1e" + l3); + }, i5.squareRoot = i5.sqrt = function() { + var l3, c5, p3, h5, f5, y = this, b5 = y.c, d5 = y.s, g5 = y.e, x = s2 + 4, w = new E("0.5"); + if (d5 !== 1 || !b5 || !b5[0]) return new E(!d5 || d5 < 0 && (!b5 || b5[0]) ? NaN : b5 ? y : 1 / 0); + if (d5 = Math.sqrt(+be(y)), d5 == 0 || d5 == 1 / 0 ? (c5 = ye(b5), (c5.length + g5) % 2 == 0 && (c5 += "0"), d5 = Math.sqrt(+c5), g5 = we((g5 + 1) / 2) - (g5 < 0 || g5 % 2), d5 == 1 / 0 ? c5 = "5e" + g5 : (c5 = d5.toExponential(), c5 = c5.slice(0, c5.indexOf("e") + 1) + g5), p3 = new E(c5)) : p3 = new E(d5 + ""), p3.c[0]) { + for (g5 = p3.e, d5 = g5 + x, d5 < 3 && (d5 = 0); ; ) if (f5 = p3, p3 = w.times(f5.plus(t(y, f5, x, 1))), ye(f5.c).slice(0, d5) === (c5 = ye(p3.c)).slice(0, d5)) if (p3.e < g5 && --d5, c5 = c5.slice(d5 - 3, d5 + 1), c5 == "9999" || !h5 && c5 == "4999") { + if (!h5 && (ie(f5, f5.e + s2 + 2, 0), f5.times(f5).eq(y))) { + p3 = f5; + break; + } + x += 4, d5 += 4, h5 = 1; + } else { + (!+c5 || !+c5.slice(1) && c5.charAt(0) == "5") && (ie(p3, p3.e + s2 + 2, 1), l3 = !p3.times(p3).eq(y)); + break; + } + } + return ie(p3, p3.e + s2 + 1, a5, l3); + }, i5.toExponential = function(l3, c5) { + return l3 != null && (J(l3, 0, Y), l3++), D(this, l3, c5, 1); + }, i5.toFixed = function(l3, c5) { + return l3 != null && (J(l3, 0, Y), l3 = l3 + this.e + 1), D(this, l3, c5); + }, i5.toFormat = function(l3, c5, p3) { + var h5, f5 = this; + if (p3 == null) l3 != null && c5 && typeof c5 == "object" ? (p3 = c5, c5 = null) : l3 && typeof l3 == "object" ? (p3 = l3, l3 = c5 = null) : p3 = M; + else if (typeof p3 != "object") throw Error(le + "Argument not an object: " + p3); + if (h5 = f5.toFixed(l3, c5), f5.c) { + var y, b5 = h5.split("."), d5 = +p3.groupSize, g5 = +p3.secondaryGroupSize, x = p3.groupSeparator || "", w = b5[0], v = b5[1], R = f5.s < 0, C = R ? w.slice(1) : w, $2 = C.length; + if (g5 && (y = d5, d5 = g5, g5 = y, $2 -= y), d5 > 0 && $2 > 0) { + for (y = $2 % d5 || d5, w = C.substr(0, y); y < $2; y += d5) w += x + C.substr(y, d5); + g5 > 0 && (w += x + C.slice(y)), R && (w = "-" + w); + } + h5 = v ? w + (p3.decimalSeparator || "") + ((g5 = +p3.fractionGroupSize) ? v.replace(new RegExp("\\d{" + g5 + "}\\B", "g"), "$&" + (p3.fractionGroupSeparator || "")) : v) : w; + } + return (p3.prefix || "") + h5 + (p3.suffix || ""); + }, i5.toFraction = function(l3) { + var c5, p3, h5, f5, y, b5, d5, g5, x, w, v, R, C = this, $2 = C.c; + if (l3 != null && (d5 = new E(l3), !d5.isInteger() && (d5.c || d5.s !== 1) || d5.lt(o3))) throw Error(le + "Argument " + (d5.isInteger() ? "out of range: " : "not an integer: ") + be(d5)); + if (!$2) return new E(C); + for (c5 = new E(o3), x = p3 = new E(o3), h5 = g5 = new E(o3), R = ye($2), y = c5.e = R.length - C.e - 1, c5.c[0] = fi[(b5 = y % N) < 0 ? N + b5 : b5], l3 = !l3 || d5.comparedTo(c5) > 0 ? y > 0 ? c5 : x : d5, b5 = T2, T2 = 1 / 0, d5 = new E(R), g5.c[0] = 0; w = t(d5, c5, 0, 1), f5 = p3.plus(w.times(h5)), f5.comparedTo(l3) != 1; ) p3 = h5, h5 = f5, x = g5.plus(w.times(f5 = x)), g5 = f5, c5 = d5.minus(w.times(f5 = c5)), d5 = f5; + return f5 = t(l3.minus(p3), h5, 0, 1), g5 = g5.plus(f5.times(x)), p3 = p3.plus(f5.times(h5)), g5.s = x.s = C.s, y = y * 2, v = t(x, h5, y, a5).minus(C).abs().comparedTo(t(g5, p3, y, a5).minus(C).abs()) < 1 ? [x, h5] : [g5, p3], T2 = b5, v; + }, i5.toNumber = function() { + return +be(this); + }, i5.toPrecision = function(l3, c5) { + return l3 != null && J(l3, 1, Y), D(this, l3, c5, 2); + }, i5.toString = function(l3) { + var c5, p3 = this, h5 = p3.s, f5 = p3.e; + return f5 === null ? h5 ? (c5 = "Infinity", h5 < 0 && (c5 = "-" + c5)) : c5 = "NaN" : (l3 == null ? c5 = f5 <= u || f5 >= m3 ? tn(ye(p3.c), f5) : Le(ye(p3.c), f5, "0") : l3 === 10 && q3 ? (p3 = ie(new E(p3), s2 + f5 + 1, a5), c5 = Le(ye(p3.c), p3.e, "0")) : (J(l3, 2, L.length, "Base"), c5 = r5(Le(ye(p3.c), f5, "0"), 10, l3, h5, true)), h5 < 0 && p3.c[0] && (c5 = "-" + c5)), c5; + }, i5.valueOf = i5.toJSON = function() { + return be(this); + }, i5._isBigNumber = true, i5[Symbol.toStringTag] = "BigNumber", i5[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")] = i5.valueOf, e5 != null && E.set(e5), E; + } + __name(Ta, "Ta"); + function we(e5) { + var t = e5 | 0; + return e5 > 0 || e5 === t ? t : t - 1; + } + __name(we, "we"); + function ye(e5) { + for (var t, r5, n3 = 1, i5 = e5.length, o3 = e5[0] + ""; n3 < i5; ) { + for (t = e5[n3++] + "", r5 = N - t.length; r5--; t = "0" + t) ; + o3 += t; + } + for (i5 = o3.length; o3.charCodeAt(--i5) === 48; ) ; + return o3.slice(0, i5 + 1 || 1); + } + __name(ye, "ye"); + function Xe(e5, t) { + var r5, n3, i5 = e5.c, o3 = t.c, s2 = e5.s, a5 = t.s, u = e5.e, m3 = t.e; + if (!s2 || !a5) return null; + if (r5 = i5 && !i5[0], n3 = o3 && !o3[0], r5 || n3) return r5 ? n3 ? 0 : -a5 : s2; + if (s2 != a5) return s2; + if (r5 = s2 < 0, n3 = u == m3, !i5 || !o3) return n3 ? 0 : !i5 ^ r5 ? 1 : -1; + if (!n3) return u > m3 ^ r5 ? 1 : -1; + for (a5 = (u = i5.length) < (m3 = o3.length) ? u : m3, s2 = 0; s2 < a5; s2++) if (i5[s2] != o3[s2]) return i5[s2] > o3[s2] ^ r5 ? 1 : -1; + return u == m3 ? 0 : u > m3 ^ r5 ? 1 : -1; + } + __name(Xe, "Xe"); + function J(e5, t, r5, n3) { + if (e5 < t || e5 > r5 || e5 !== he(e5)) throw Error(le + (n3 || "Argument") + (typeof e5 == "number" ? e5 < t || e5 > r5 ? " out of range: " : " not an integer: " : " not a primitive number: ") + String(e5)); + } + __name(J, "J"); + function en(e5) { + var t = e5.c.length - 1; + return we(e5.e / N) == t && e5.c[t] % 2 != 0; + } + __name(en, "en"); + function tn(e5, t) { + return (e5.length > 1 ? e5.charAt(0) + "." + e5.slice(1) : e5) + (t < 0 ? "e" : "e+") + t; + } + __name(tn, "tn"); + function Le(e5, t, r5) { + var n3, i5; + if (t < 0) { + for (i5 = r5 + "."; ++t; i5 += r5) ; + e5 = i5 + e5; + } else if (n3 = e5.length, ++t > n3) { + for (i5 = r5, t -= n3; --t; i5 += r5) ; + e5 += i5; + } else t < n3 && (e5 = e5.slice(0, t) + "." + e5.slice(t)); + return e5; + } + __name(Le, "Le"); + var id = Ta(); + var va = id; + var od = 24; + var or = 32; + var sd = /* @__PURE__ */ __name(() => typeof globalThis < "u" && globalThis.crypto && typeof globalThis.crypto.getRandomValues == "function" ? () => { + let e5 = new Uint32Array(1); + return globalThis.crypto.getRandomValues(e5), e5[0] / 4294967296; + } : Math.random, "sd"); + var yi = sd(); + var gi = /* @__PURE__ */ __name((e5 = 4, t = yi) => { + let r5 = ""; + for (; r5.length < e5; ) r5 = r5 + Math.floor(t() * 36).toString(36); + return r5; + }, "gi"); + function ad(e5) { + let t = new va(0); + for (let r5 of e5.values()) t = t.multipliedBy(256).plus(r5); + return t; + } + __name(ad, "ad"); + var Aa = /* @__PURE__ */ __name((e5 = "") => { + let t = new TextEncoder(); + return ad(Pa(t.encode(e5))).toString(36).slice(1); + }, "Aa"); + var Sa = Array.from({ length: 26 }, (e5, t) => String.fromCharCode(t + 97)); + var ld = /* @__PURE__ */ __name((e5) => Sa[Math.floor(e5() * Sa.length)], "ld"); + var ud = /* @__PURE__ */ __name(({ globalObj: e5 = typeof global < "u" ? global : typeof window < "u" ? window : {}, random: t = yi } = {}) => { + let r5 = Object.keys(e5).toString(), n3 = r5.length ? r5 + gi(or, t) : gi(or, t); + return Aa(n3).substring(0, or); + }, "ud"); + var cd = /* @__PURE__ */ __name((e5) => () => e5++, "cd"); + var pd = 476782367; + var Ra = /* @__PURE__ */ __name(({ random: e5 = yi, counter: t = cd(Math.floor(e5() * pd)), length: r5 = od, fingerprint: n3 = ud({ random: e5 }) } = {}) => { + if (r5 > or) throw new Error(`Length must be between 2 and ${or}. Received: ${r5}`); + return function() { + let o3 = ld(e5), s2 = Date.now().toString(36), a5 = t().toString(36), u = gi(r5, e5), m3 = `${s2 + u + a5 + n3}`; + return `${o3 + Aa(m3).substring(1, r5)}`; + }; + }, "Ra"); + var hi = dd(Ra); + function dd(e5) { + let t; + return () => (t || (t = e5()), t()); + } + __name(dd, "dd"); + var wi = __require("node:crypto"); + var Ca = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"; + var md = 128; + var Je; + var At; + function fd(e5) { + if (e5 < 0) throw new RangeError("Wrong ID size"); + try { + !Je || Je.length < e5 ? (Je = Buffer.allocUnsafe(e5 * md), wi.webcrypto.getRandomValues(Je), At = 0) : At + e5 > Je.length && (wi.webcrypto.getRandomValues(Je), At = 0); + } catch (t) { + throw Je = void 0, t; + } + At += e5; + } + __name(fd, "fd"); + function xi(e5 = 21) { + fd(e5 |= 0); + let t = ""; + for (let r5 = At - e5; r5 < At; r5++) t += Ca[Je[r5] & 63]; + return t; + } + __name(xi, "xi"); + var sr = Pe(__require("node:crypto"), 1); + var ka = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"; + var ar = 32; + var gd = 16; + var Oa = 10; + var Ia = 281474976710655; + var Ye; + (function(e5) { + e5.Base32IncorrectEncoding = "B32_ENC_INVALID", e5.DecodeTimeInvalidCharacter = "DEC_TIME_CHAR", e5.DecodeTimeValueMalformed = "DEC_TIME_MALFORMED", e5.EncodeTimeNegative = "ENC_TIME_NEG", e5.EncodeTimeSizeExceeded = "ENC_TIME_SIZE_EXCEED", e5.EncodeTimeValueMalformed = "ENC_TIME_MALFORMED", e5.PRNGDetectFailure = "PRNG_DETECT", e5.ULIDInvalid = "ULID_INVALID", e5.Unexpected = "UNEXPECTED", e5.UUIDInvalid = "UUID_INVALID"; + })(Ye || (Ye = {})); + var et = class extends Error { + static { + __name(this, "et"); + } + constructor(t, r5) { + super(`${r5} (${t})`), this.name = "ULIDError", this.code = t; + } + }; + function yd(e5) { + let t = Math.floor(e5() * ar); + return t === ar && (t = ar - 1), ka.charAt(t); + } + __name(yd, "yd"); + function hd(e5) { + let t = wd(), r5 = t && (t.crypto || t.msCrypto) || (typeof sr.default < "u" ? sr.default : null); + if (typeof r5?.getRandomValues == "function") return () => { + let n3 = new Uint8Array(1); + return r5.getRandomValues(n3), n3[0] / 255; + }; + if (typeof r5?.randomBytes == "function") return () => r5.randomBytes(1).readUInt8() / 255; + if (sr.default?.randomBytes) return () => sr.default.randomBytes(1).readUInt8() / 255; + throw new et(Ye.PRNGDetectFailure, "Failed to find a reliable PRNG"); + } + __name(hd, "hd"); + function wd() { + return Pd() ? self : typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : null; + } + __name(wd, "wd"); + function xd(e5, t) { + let r5 = ""; + for (; e5 > 0; e5--) r5 = yd(t) + r5; + return r5; + } + __name(xd, "xd"); + function bd(e5, t = Oa) { + if (isNaN(e5)) throw new et(Ye.EncodeTimeValueMalformed, `Time must be a number: ${e5}`); + if (e5 > Ia) throw new et(Ye.EncodeTimeSizeExceeded, `Cannot encode a time larger than ${Ia}: ${e5}`); + if (e5 < 0) throw new et(Ye.EncodeTimeNegative, `Time must be positive: ${e5}`); + if (Number.isInteger(e5) === false) throw new et(Ye.EncodeTimeValueMalformed, `Time must be an integer: ${e5}`); + let r5, n3 = ""; + for (let i5 = t; i5 > 0; i5--) r5 = e5 % ar, n3 = ka.charAt(r5) + n3, e5 = (e5 - r5) / ar; + return n3; + } + __name(bd, "bd"); + function Pd() { + return typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope; + } + __name(Pd, "Pd"); + function Na(e5, t) { + let r5 = t || hd(), n3 = !e5 || isNaN(e5) ? Date.now() : e5; + return bd(n3, Oa) + xd(gd, r5); + } + __name(Na, "Na"); + var te = []; + for (let e5 = 0; e5 < 256; ++e5) te.push((e5 + 256).toString(16).slice(1)); + function rn(e5, t = 0) { + return (te[e5[t + 0]] + te[e5[t + 1]] + te[e5[t + 2]] + te[e5[t + 3]] + "-" + te[e5[t + 4]] + te[e5[t + 5]] + "-" + te[e5[t + 6]] + te[e5[t + 7]] + "-" + te[e5[t + 8]] + te[e5[t + 9]] + "-" + te[e5[t + 10]] + te[e5[t + 11]] + te[e5[t + 12]] + te[e5[t + 13]] + te[e5[t + 14]] + te[e5[t + 15]]).toLowerCase(); + } + __name(rn, "rn"); + var Ed = new Uint8Array(16); + function Rt() { + return crypto.getRandomValues(Ed); + } + __name(Rt, "Rt"); + function Td(e5, t, r5) { + return !t && !e5 && crypto.randomUUID ? crypto.randomUUID() : vd(e5, t, r5); + } + __name(Td, "Td"); + function vd(e5, t, r5) { + e5 = e5 || {}; + let n3 = e5.random ?? e5.rng?.() ?? Rt(); + if (n3.length < 16) throw new Error("Random bytes length must be >= 16"); + if (n3[6] = n3[6] & 15 | 64, n3[8] = n3[8] & 63 | 128, t) { + if (r5 = r5 || 0, r5 < 0 || r5 + 16 > t.length) throw new RangeError(`UUID byte range ${r5}:${r5 + 15} is out of buffer bounds`); + for (let i5 = 0; i5 < 16; ++i5) t[r5 + i5] = n3[i5]; + return t; + } + return rn(n3); + } + __name(vd, "vd"); + var bi = Td; + var Pi = {}; + function Sd(e5, t, r5) { + let n3; + if (e5) n3 = Da(e5.random ?? e5.rng?.() ?? Rt(), e5.msecs, e5.seq, t, r5); + else { + let i5 = Date.now(), o3 = Rt(); + Ad(Pi, i5, o3), n3 = Da(o3, Pi.msecs, Pi.seq, t, r5); + } + return t ?? rn(n3); + } + __name(Sd, "Sd"); + function Ad(e5, t, r5) { + return e5.msecs ??= -1 / 0, e5.seq ??= 0, t > e5.msecs ? (e5.seq = r5[6] << 23 | r5[7] << 16 | r5[8] << 8 | r5[9], e5.msecs = t) : (e5.seq = e5.seq + 1 | 0, e5.seq === 0 && e5.msecs++), e5; + } + __name(Ad, "Ad"); + function Da(e5, t, r5, n3, i5 = 0) { + if (e5.length < 16) throw new Error("Random bytes length must be >= 16"); + if (!n3) n3 = new Uint8Array(16), i5 = 0; + else if (i5 < 0 || i5 + 16 > n3.length) throw new RangeError(`UUID byte range ${i5}:${i5 + 15} is out of buffer bounds`); + return t ??= Date.now(), r5 ??= e5[6] * 127 << 24 | e5[7] << 16 | e5[8] << 8 | e5[9], n3[i5++] = t / 1099511627776 & 255, n3[i5++] = t / 4294967296 & 255, n3[i5++] = t / 16777216 & 255, n3[i5++] = t / 65536 & 255, n3[i5++] = t / 256 & 255, n3[i5++] = t & 255, n3[i5++] = 112 | r5 >>> 28 & 15, n3[i5++] = r5 >>> 20 & 255, n3[i5++] = 128 | r5 >>> 14 & 63, n3[i5++] = r5 >>> 6 & 255, n3[i5++] = r5 << 2 & 255 | e5[10] & 3, n3[i5++] = e5[11], n3[i5++] = e5[12], n3[i5++] = e5[13], n3[i5++] = e5[14], n3[i5++] = e5[15], n3; + } + __name(Da, "Da"); + var Ei = Sd; + var nn = class { + static { + __name(this, "nn"); + } + #e = {}; + constructor() { + this.register("uuid", new vi()), this.register("cuid", new Si()), this.register("ulid", new Ai()), this.register("nanoid", new Ri()), this.register("product", new Ci()); + } + snapshot() { + return Object.create(this.#e, { now: { value: new Ti() } }); + } + register(t, r5) { + this.#e[t] = r5; + } + }; + var Ti = class { + static { + __name(this, "Ti"); + } + #e; + generate() { + return this.#e === void 0 && (this.#e = /* @__PURE__ */ new Date()), this.#e.toISOString(); + } + }; + var vi = class { + static { + __name(this, "vi"); + } + generate(t) { + if (t === 4) return bi(); + if (t === 7) return Ei(); + throw new Error("Invalid UUID generator arguments"); + } + }; + var Si = class { + static { + __name(this, "Si"); + } + generate(t) { + if (t === 1) return ia(); + if (t === 2) return hi(); + throw new Error("Invalid CUID generator arguments"); + } + }; + var Ai = class { + static { + __name(this, "Ai"); + } + generate() { + return Na(); + } + }; + var Ri = class { + static { + __name(this, "Ri"); + } + generate(t) { + if (typeof t == "number") return xi(t); + if (t === void 0) return xi(); + throw new Error("Invalid Nanoid generator arguments"); + } + }; + var Ci = class { + static { + __name(this, "Ci"); + } + generate(t, r5) { + if (t === void 0 || r5 === void 0) throw new Error("Invalid Product generator arguments"); + return Array.isArray(t) && Array.isArray(r5) ? t.flatMap((n3) => r5.map((i5) => [n3, i5])) : Array.isArray(t) ? t.map((n3) => [n3, r5]) : Array.isArray(r5) ? r5.map((n3) => [t, n3]) : [[t, r5]]; + } + }; + function lr(e5, t) { + return e5 == null ? e5 : typeof e5 == "string" ? lr(JSON.parse(e5), t) : Array.isArray(e5) ? Cd(e5, t) : Rd(e5, t); + } + __name(lr, "lr"); + function Rd(e5, t) { + if (t.pagination) { + let { skip: r5, take: n3, cursor: i5 } = t.pagination; + if (r5 !== null && r5 > 0 || n3 === 0 || i5 !== null && !St(e5, i5)) return null; + } + return Fa(e5, t.nested); + } + __name(Rd, "Rd"); + function Fa(e5, t) { + for (let [r5, n3] of Object.entries(t)) e5[r5] = lr(e5[r5], n3); + return e5; + } + __name(Fa, "Fa"); + function Cd(e5, t) { + if (t.distinct !== null) { + let r5 = t.linkingFields !== null ? [...t.distinct, ...t.linkingFields] : t.distinct; + e5 = Id(e5, r5); + } + return t.pagination && (e5 = kd(e5, t.pagination, t.linkingFields)), t.reverse && e5.reverse(), Object.keys(t.nested).length === 0 ? e5 : e5.map((r5) => Fa(r5, t.nested)); + } + __name(Cd, "Cd"); + function Id(e5, t) { + let r5 = /* @__PURE__ */ new Set(), n3 = []; + for (let i5 of e5) { + let o3 = tt(i5, t); + r5.has(o3) || (r5.add(o3), n3.push(i5)); + } + return n3; + } + __name(Id, "Id"); + function kd(e5, t, r5) { + if (r5 === null) return Ma(e5, t); + let n3 = /* @__PURE__ */ new Map(); + for (let o3 of e5) { + let s2 = tt(o3, r5); + n3.has(s2) || n3.set(s2, []), n3.get(s2).push(o3); + } + let i5 = Array.from(n3.entries()); + return i5.sort(([o3], [s2]) => o3 < s2 ? -1 : o3 > s2 ? 1 : 0), i5.flatMap(([, o3]) => Ma(o3, t)); + } + __name(kd, "kd"); + function Ma(e5, { cursor: t, skip: r5, take: n3 }) { + let i5 = t !== null ? e5.findIndex((a5) => St(a5, t)) : 0; + if (i5 === -1) return []; + let o3 = i5 + (r5 ?? 0), s2 = n3 !== null ? o3 + n3 : e5.length; + return e5.slice(o3, s2); + } + __name(Ma, "Ma"); + function tt(e5, t, r5) { + let n3 = t.map((i5, o3) => r5?.[o3] ? e5[i5] !== null ? r5[o3](e5[i5]) : null : e5[i5]); + return JSON.stringify(n3); + } + __name(tt, "tt"); + function Ii(e5) { + return typeof e5 == "object" && e5 !== null && e5.prisma__type === "param"; + } + __name(Ii, "Ii"); + function ki(e5) { + return typeof e5 == "object" && e5 !== null && e5.prisma__type === "generatorCall"; + } + __name(ki, "ki"); + function Di(e5, t, r5, n3) { + let i5 = e5.args.map((o3) => de(o3, t, r5)); + switch (e5.type) { + case "rawSql": + return [Dd(e5.sql, i5, e5.argTypes)]; + case "templateSql": + return (e5.chunkable ? Fd(e5.fragments, i5, n3) : [i5]).map((s2) => { + let a5 = Od(e5.fragments, e5.placeholderFormat, s2, e5.argTypes); + if (n3 !== void 0 && a5.args.length > n3) throw new X("The query parameter limit supported by your database is exceeded.", "P2029"); + return a5; + }); + default: + V(e5.type, "Invalid query type"); + } + } + __name(Di, "Di"); + function de(e5, t, r5) { + for (; Md(e5); ) if (Ii(e5)) { + let n3 = t[e5.prisma__value.name]; + if (n3 === void 0) throw new Error(`Missing value for query variable ${e5.prisma__value.name}`); + e5.prisma__value.type === "DateTime" && typeof n3 == "string" ? e5 = new Date(n3) : e5 = n3; + } else if (ki(e5)) { + let { name: n3, args: i5 } = e5.prisma__value, o3 = r5[n3]; + if (!o3) throw new Error(`Encountered an unknown generator '${n3}'`); + e5 = o3.generate(...i5.map((s2) => de(s2, t, r5))); + } else V(e5, `Unexpected unevaluated value type: ${e5}`); + return Array.isArray(e5) && (e5 = e5.map((n3) => de(n3, t, r5))), e5; + } + __name(de, "de"); + function Od(e5, t, r5, n3) { + let i5 = "", o3 = { placeholderNumber: 1 }, s2 = [], a5 = []; + for (let u of Ni(e5, r5, n3)) { + if (i5 += Nd(u, t, o3), u.type === "stringChunk") continue; + let m3 = Array.from(_a4(u)), P = m3.length; + if (Gr(s2, m3), u.argType.arity === "tuple") { + if (P % u.argType.elements.length !== 0) throw new Error(`Malformed query template. Expected the number of parameters to match the tuple arity, but got ${P} parameters for a tuple of arity ${u.argType.elements.length}.`); + for (let T2 = 0; T2 < P / u.argType.elements.length; T2++) a5.push(...u.argType.elements); + } else for (let T2 = 0; T2 < P; T2++) a5.push(u.argType); + } + return { sql: i5, args: s2, argTypes: a5 }; + } + __name(Od, "Od"); + function Nd(e5, t, r5) { + let n3 = e5.type; + switch (n3) { + case "parameter": + return Oi(t, r5.placeholderNumber++); + case "stringChunk": + return e5.chunk; + case "parameterTuple": + return `(${e5.value.length == 0 ? "NULL" : e5.value.map(() => { + let o3 = Oi(t, r5.placeholderNumber++); + return `${e5.itemPrefix}${o3}${e5.itemSuffix}`; + }).join(e5.itemSeparator)})`; + case "parameterTupleList": + return e5.value.map((i5) => { + let o3 = i5.map(() => Oi(t, r5.placeholderNumber++)).join(e5.itemSeparator); + return `${e5.itemPrefix}${o3}${e5.itemSuffix}`; + }).join(e5.groupSeparator); + default: + V(n3, "Invalid fragment type"); + } + } + __name(Nd, "Nd"); + function Oi(e5, t) { + return e5.hasNumbering ? `${e5.prefix}${t}` : e5.prefix; + } + __name(Oi, "Oi"); + function Dd(e5, t, r5) { + return { sql: e5, args: t, argTypes: r5 }; + } + __name(Dd, "Dd"); + function Md(e5) { + return Ii(e5) || ki(e5); + } + __name(Md, "Md"); + function* Ni(e5, t, r5) { + let n3 = 0; + for (let i5 of e5) switch (i5.type) { + case "parameter": { + if (n3 >= t.length) throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`); + yield { ...i5, value: t[n3], argType: r5?.[n3] }, n3++; + break; + } + case "stringChunk": { + yield i5; + break; + } + case "parameterTuple": { + if (n3 >= t.length) throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`); + let o3 = t[n3]; + yield { ...i5, value: Array.isArray(o3) ? o3 : [o3], argType: r5?.[n3] }, n3++; + break; + } + case "parameterTupleList": { + if (n3 >= t.length) throw new Error(`Malformed query template. Fragments attempt to read over ${t.length} parameters.`); + let o3 = t[n3]; + if (!Array.isArray(o3)) throw new Error("Malformed query template. Tuple list expected."); + if (o3.length === 0) throw new Error("Malformed query template. Tuple list cannot be empty."); + for (let s2 of o3) if (!Array.isArray(s2)) throw new Error("Malformed query template. Tuple expected."); + yield { ...i5, value: o3, argType: r5?.[n3] }, n3++; + break; + } + } + } + __name(Ni, "Ni"); + function* _a4(e5) { + switch (e5.type) { + case "parameter": + yield e5.value; + break; + case "stringChunk": + break; + case "parameterTuple": + yield* e5.value; + break; + case "parameterTupleList": + for (let t of e5.value) yield* t; + break; + } + } + __name(_a4, "_a"); + function Fd(e5, t, r5) { + let n3 = 0, i5 = 0; + for (let s2 of Ni(e5, t, void 0)) { + let a5 = 0; + for (let u of _a4(s2)) a5++; + i5 = Math.max(i5, a5), n3 += a5; + } + let o3 = [[]]; + for (let s2 of Ni(e5, t, void 0)) switch (s2.type) { + case "parameter": { + for (let a5 of o3) a5.push(s2.value); + break; + } + case "stringChunk": + break; + case "parameterTuple": { + let a5 = s2.value.length, u = []; + if (r5 && o3.length === 1 && a5 === i5 && n3 > r5 && n3 - a5 < r5) { + let m3 = r5 - (n3 - a5); + u = _d(s2.value, m3); + } else u = [s2.value]; + o3 = o3.flatMap((m3) => u.map((P) => [...m3, P])); + break; + } + case "parameterTupleList": { + let a5 = s2.value.reduce((T2, S) => T2 + S.length, 0), u = [], m3 = [], P = 0; + for (let T2 of s2.value) r5 && o3.length === 1 && a5 === i5 && m3.length > 0 && n3 - a5 + P + T2.length > r5 && (u.push(m3), m3 = [], P = 0), m3.push(T2), P += T2.length; + m3.length > 0 && u.push(m3), o3 = o3.flatMap((T2) => u.map((S) => [...T2, S])); + break; + } + } + return o3; + } + __name(Fd, "Fd"); + function _d(e5, t) { + let r5 = []; + for (let n3 = 0; n3 < e5.length; n3 += t) r5.push(e5.slice(n3, n3 + t)); + return r5; + } + __name(_d, "_d"); + function $a(e5) { + return e5.rows.map((t) => t.reduce((r5, n3, i5) => (r5[e5.columnNames[i5]] = n3, r5), {})); + } + __name($a, "$a"); + function La(e5) { + return { columns: e5.columnNames, types: e5.columnTypes.map((t) => $d(t)), rows: e5.rows.map((t) => t.map((r5, n3) => ur(r5, e5.columnTypes[n3]))) }; + } + __name(La, "La"); + function ur(e5, t) { + if (e5 === null) return null; + switch (t) { + case k5.Int32: + switch (typeof e5) { + case "number": + return Math.trunc(e5); + case "string": + return Math.trunc(Number(e5)); + default: + throw new Error(`Cannot serialize value of type ${typeof e5} as Int32`); + } + case k5.Int32Array: + if (!Array.isArray(e5)) throw new Error(`Cannot serialize value of type ${typeof e5} as Int32Array`); + return e5.map((r5) => ur(r5, k5.Int32)); + case k5.Int64: + switch (typeof e5) { + case "number": + return BigInt(Math.trunc(e5)); + case "string": + return e5; + default: + throw new Error(`Cannot serialize value of type ${typeof e5} as Int64`); + } + case k5.Int64Array: + if (!Array.isArray(e5)) throw new Error(`Cannot serialize value of type ${typeof e5} as Int64Array`); + return e5.map((r5) => ur(r5, k5.Int64)); + case k5.Json: + switch (typeof e5) { + case "string": + return JSON.parse(e5); + default: + throw new Error(`Cannot serialize value of type ${typeof e5} as Json`); + } + case k5.JsonArray: + if (!Array.isArray(e5)) throw new Error(`Cannot serialize value of type ${typeof e5} as JsonArray`); + return e5.map((r5) => ur(r5, k5.Json)); + case k5.Boolean: + switch (typeof e5) { + case "boolean": + return e5; + case "string": + return e5 === "true" || e5 === "1"; + case "number": + return e5 === 1; + default: + throw new Error(`Cannot serialize value of type ${typeof e5} as Boolean`); + } + case k5.BooleanArray: + if (!Array.isArray(e5)) throw new Error(`Cannot serialize value of type ${typeof e5} as BooleanArray`); + return e5.map((r5) => ur(r5, k5.Boolean)); + default: + return e5; + } + } + __name(ur, "ur"); + function $d(e5) { + switch (e5) { + case k5.Int32: + return "int"; + case k5.Int64: + return "bigint"; + case k5.Float: + return "float"; + case k5.Double: + return "double"; + case k5.Text: + return "string"; + case k5.Enum: + return "enum"; + case k5.Bytes: + return "bytes"; + case k5.Boolean: + return "bool"; + case k5.Character: + return "char"; + case k5.Numeric: + return "decimal"; + case k5.Json: + return "json"; + case k5.Uuid: + return "uuid"; + case k5.DateTime: + return "datetime"; + case k5.Date: + return "date"; + case k5.Time: + return "time"; + case k5.Int32Array: + return "int-array"; + case k5.Int64Array: + return "bigint-array"; + case k5.FloatArray: + return "float-array"; + case k5.DoubleArray: + return "double-array"; + case k5.TextArray: + return "string-array"; + case k5.EnumArray: + return "string-array"; + case k5.BytesArray: + return "bytes-array"; + case k5.BooleanArray: + return "bool-array"; + case k5.CharacterArray: + return "char-array"; + case k5.NumericArray: + return "decimal-array"; + case k5.JsonArray: + return "json-array"; + case k5.UuidArray: + return "uuid-array"; + case k5.DateTimeArray: + return "datetime-array"; + case k5.DateArray: + return "date-array"; + case k5.TimeArray: + return "time-array"; + case k5.UnknownNumber: + return "unknown"; + case k5.Set: + return "string"; + default: + V(e5, `Unexpected column type: ${e5}`); + } + } + __name($d, "$d"); + function Mi(e5, t, r5) { + if (!t.every((n3) => on(e5, n3))) { + let n3 = Ld(e5, r5), i5 = Vd(r5); + throw new X(n3, i5, r5.context); + } + } + __name(Mi, "Mi"); + function on(e5, t) { + switch (t.type) { + case "rowCountEq": + return Array.isArray(e5) ? e5.length === t.args : e5 === null ? t.args === 0 : t.args === 1; + case "rowCountNeq": + return Array.isArray(e5) ? e5.length !== t.args : e5 === null ? t.args !== 0 : t.args !== 1; + case "affectedRowCountEq": + return e5 === t.args; + case "never": + return false; + default: + V(t, `Unknown rule type: ${t.type}`); + } + } + __name(on, "on"); + function Ld(e5, t) { + switch (t.errorIdentifier) { + case "RELATION_VIOLATION": + return `The change you are trying to make would violate the required relation '${t.context.relation}' between the \`${t.context.modelA}\` and \`${t.context.modelB}\` models.`; + case "MISSING_RECORD": + return `An operation failed because it depends on one or more records that were required but not found. No record was found for ${t.context.operation}.`; + case "MISSING_RELATED_RECORD": { + let r5 = t.context.neededFor ? ` (needed to ${t.context.neededFor})` : ""; + return `An operation failed because it depends on one or more records that were required but not found. No '${t.context.model}' record${r5} was found for ${t.context.operation} on ${t.context.relationType} relation '${t.context.relation}'.`; + } + case "INCOMPLETE_CONNECT_INPUT": + return `An operation failed because it depends on one or more records that were required but not found. Expected ${t.context.expectedRows} records to be connected, found only ${Array.isArray(e5) ? e5.length : e5}.`; + case "INCOMPLETE_CONNECT_OUTPUT": + return `The required connected records were not found. Expected ${t.context.expectedRows} records to be connected after connect operation on ${t.context.relationType} relation '${t.context.relation}', found ${Array.isArray(e5) ? e5.length : e5}.`; + case "RECORDS_NOT_CONNECTED": + return `The records for relation \`${t.context.relation}\` between the \`${t.context.parent}\` and \`${t.context.child}\` models are not connected.`; + default: + V(t, `Unknown error identifier: ${t}`); + } + } + __name(Ld, "Ld"); + function Vd(e5) { + switch (e5.errorIdentifier) { + case "RELATION_VIOLATION": + return "P2014"; + case "RECORDS_NOT_CONNECTED": + return "P2017"; + case "INCOMPLETE_CONNECT_OUTPUT": + return "P2018"; + case "MISSING_RECORD": + case "MISSING_RELATED_RECORD": + case "INCOMPLETE_CONNECT_INPUT": + return "P2025"; + default: + V(e5, `Unknown error identifier: ${e5}`); + } + } + __name(Vd, "Vd"); + var qd = K2("prisma:client:queryInterpreter"); + var dr = class e5 { + static { + __name(this, "e"); + } + #e; + #t = new nn(); + #r; + #i; + #o; + #s; + #a; + constructor({ onQuery: t, tracingHelper: r5, serializer: n3, rawSerializer: i5, provider: o3, connectionInfo: s2 }) { + this.#e = t, this.#r = r5, this.#i = n3, this.#o = i5 ?? n3, this.#s = o3, this.#a = s2; + } + static forSql(t) { + return new e5({ onQuery: t.onQuery, tracingHelper: t.tracingHelper, serializer: $a, rawSerializer: La, provider: t.provider, connectionInfo: t.connectionInfo }); + } + async run(t, r5) { + let n3 = this.#t.snapshot(), i5 = { ...r5, generators: n3 }, o3 = jd(t, (a5) => this.interpretNode(a5, i5))?.catch((a5) => Be(a5)); + if (o3) try { + return this.#n(await o3, i5.scope, n3).value; + } catch (a5) { + Be(a5); + } + let { value: s2 } = await this.interpretNode(t, i5).catch((a5) => Be(a5)); + return s2; + } + async interpretNode(t, r5) { + switch (t.type) { + case "value": + return { value: de(t.args, r5.scope, r5.generators), lastInsertId: t.lastInsertId }; + case "seq": { + let n3; + for (let i5 of t.args) n3 = await this.interpretNode(i5, r5); + return n3 ?? { value: void 0 }; + } + case "let": { + let n3 = Object.create(r5.scope); + for (let i5 of t.args.bindings) { + let { value: o3 } = await this.interpretNode(i5.expr, { ...r5, scope: n3 }); + n3[i5.name] = o3; + } + return this.interpretNode(t.args.expr, { ...r5, scope: n3 }); + } + case "concat": { + let n3 = await Promise.all(t.args.map((i5) => this.interpretNode(i5, r5).then((o3) => o3.value))); + return { value: n3.length > 0 ? n3.reduce((i5, o3) => i5.concat(Ct(o3)), []) : [] }; + } + case "sum": { + let n3 = await Promise.all(t.args.map((i5) => this.interpretNode(i5, r5).then((o3) => o3.value))); + return { value: n3.length > 0 ? n3.reduce((i5, o3) => xe(i5) + xe(o3)) : 0 }; + } + case "execute": { + let n3 = Di(t.args, r5.scope, r5.generators, this.#p()); + return this.#u(n3.length, r5, async (i5) => { + let o3 = 0; + for (let s2 of n3) { + let a5 = ja(s2, i5.sqlCommenter); + o3 += await this.#d(a5, i5.queryable, () => i5.queryable.executeRaw(sn(a5)).catch((u) => t.args.type === "rawSql" ? ri(u) : Be(u))); + } + return { value: o3 }; + }); + } + case "query": { + let n3 = Di(t.args, r5.scope, r5.generators, this.#p()); + return this.#u(n3.length, r5, async (i5) => { + let o3; + for (let s2 of n3) { + let a5 = ja(s2, i5.sqlCommenter), u = await this.#d(a5, i5.queryable, () => i5.queryable.queryRaw(sn(a5)).catch((m3) => t.args.type === "rawSql" ? ri(m3) : Be(m3))); + o3 === void 0 ? o3 = u : (Gr(o3.rows, u.rows), o3.lastInsertId = u.lastInsertId); + } + return { value: t.args.type === "rawSql" ? this.#o(o3) : this.#i(o3), lastInsertId: o3?.lastInsertId }; + }); + } + case "reverse": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args, r5); + return { value: Array.isArray(n3) ? n3.reverse() : n3, lastInsertId: i5 }; + } + case "unique": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args, r5); + if (!Array.isArray(n3)) return { value: n3, lastInsertId: i5 }; + if (n3.length > 1) throw new Error(`Expected zero or one element, got ${n3.length}`); + return { value: n3[0] ?? null, lastInsertId: i5 }; + } + case "required": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args, r5); + if (Fi(n3)) throw new Error("Required value is empty"); + return { value: n3, lastInsertId: i5 }; + } + case "mapField": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args.records, r5); + return { value: _i(n3, t.args.field), lastInsertId: i5 }; + } + case "join": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args.parent, r5); + if (n3 === null) return { value: null, lastInsertId: i5 }; + let o3 = await Promise.all(t.args.children.map(async (s2) => ({ joinExpr: s2, childRecords: (await this.interpretNode(s2.child, r5)).value }))); + return { value: Va(n3, o3, t.args.canAssumeStrictEquality), lastInsertId: i5 }; + } + case "transaction": + return this.#l(r5, (n3) => this.interpretNode(t.args, n3)); + case "dataMap": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args.expr, r5); + return { value: ii(n3, t.args.structure, t.args.enums), lastInsertId: i5 }; + } + case "validate": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args.expr, r5); + return Mi(n3, t.args.rules, t.args), { value: n3, lastInsertId: i5 }; + } + case "if": { + let { value: n3 } = await this.interpretNode(t.args.value, r5); + return on(n3, t.args.rule) ? await this.interpretNode(t.args.then, r5) : await this.interpretNode(t.args.else, r5); + } + case "diff": { + let { value: n3 } = await this.interpretNode(t.args.from, r5), { value: i5 } = await this.interpretNode(t.args.to, r5), o3 = /* @__PURE__ */ __name((a5) => a5 !== null ? tt(rt(a5), t.args.fields) : null, "o"), s2 = new Set(Ct(i5).map(o3)); + return { value: Ct(n3).filter((a5) => !s2.has(o3(a5))) }; + } + case "process": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args.expr, r5), o3 = sn(t.args.operations); + return $i(o3, r5.scope, r5.generators), { value: lr(n3, o3), lastInsertId: i5 }; + } + case "initializeRecord": { + let { lastInsertId: n3 } = await this.interpretNode(t.args.expr, r5), i5 = {}; + for (let [o3, s2] of Object.entries(t.args.fields)) i5[o3] = qa(s2, n3, r5.scope, r5.generators); + return { value: i5, lastInsertId: n3 }; + } + case "mapRecord": { + let { value: n3, lastInsertId: i5 } = await this.interpretNode(t.args.expr, r5), o3 = n3 === null ? {} : rt(n3); + for (let [s2, a5] of Object.entries(t.args.fields)) o3[s2] = Ua(a5, o3[s2], r5.scope, r5.generators); + return { value: o3, lastInsertId: i5 }; + } + default: + return this.#n(t, r5.scope, r5.generators); + } + } + #n(t, r5, n3) { + switch (t.type) { + case "value": + return { value: de(t.args, r5, n3), lastInsertId: t.lastInsertId }; + case "seq": { + let i5; + for (let o3 of t.args) i5 = this.#n(o3, r5, n3); + return i5 ?? { value: void 0 }; + } + case "get": + return { value: r5[t.args.name] }; + case "let": { + let i5 = Object.create(r5); + for (let o3 of t.args.bindings) { + let { value: s2 } = this.#n(o3.expr, i5, n3); + i5[o3.name] = s2; + } + return this.#n(t.args.expr, i5, n3); + } + case "getFirstNonEmpty": { + for (let i5 of t.args.names) { + let o3 = r5[i5]; + if (!Fi(o3)) return { value: o3 }; + } + return { value: [] }; + } + case "concat": { + let i5 = t.args.map((o3) => this.#n(o3, r5, n3).value); + return { value: i5.length > 0 ? i5.reduce((o3, s2) => o3.concat(Ct(s2)), []) : [] }; + } + case "sum": { + let i5 = t.args.map((o3) => this.#n(o3, r5, n3).value); + return { value: i5.length > 0 ? i5.reduce((o3, s2) => xe(o3) + xe(s2)) : 0 }; + } + case "reverse": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args, r5, n3); + return { value: Array.isArray(i5) ? i5.reverse() : i5, lastInsertId: o3 }; + } + case "unique": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args, r5, n3); + if (!Array.isArray(i5)) return { value: i5, lastInsertId: o3 }; + if (i5.length > 1) throw new Error(`Expected zero or one element, got ${i5.length}`); + return { value: i5[0] ?? null, lastInsertId: o3 }; + } + case "required": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args, r5, n3); + if (Fi(i5)) throw new Error("Required value is empty"); + return { value: i5, lastInsertId: o3 }; + } + case "mapField": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args.records, r5, n3); + return { value: _i(i5, t.args.field), lastInsertId: o3 }; + } + case "join": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args.parent, r5, n3); + if (i5 === null) return { value: null, lastInsertId: o3 }; + let s2 = t.args.children.map((a5) => ({ joinExpr: a5, childRecords: this.#n(a5.child, r5, n3).value })); + return { value: Va(i5, s2, t.args.canAssumeStrictEquality), lastInsertId: o3 }; + } + case "dataMap": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args.expr, r5, n3); + return { value: ii(i5, t.args.structure, t.args.enums), lastInsertId: o3 }; + } + case "validate": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args.expr, r5, n3); + return Mi(i5, t.args.rules, t.args), { value: i5, lastInsertId: o3 }; + } + case "if": { + let { value: i5 } = this.#n(t.args.value, r5, n3); + return on(i5, t.args.rule) ? this.#n(t.args.then, r5, n3) : this.#n(t.args.else, r5, n3); + } + case "unit": + return { value: void 0 }; + case "diff": { + let { value: i5 } = this.#n(t.args.from, r5, n3), { value: o3 } = this.#n(t.args.to, r5, n3), s2 = /* @__PURE__ */ __name((u) => u !== null ? tt(rt(u), t.args.fields) : null, "s"), a5 = new Set(Ct(o3).map(s2)); + return { value: Ct(i5).filter((u) => !a5.has(s2(u))) }; + } + case "process": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args.expr, r5, n3), s2 = sn(t.args.operations); + return $i(s2, r5, n3), { value: lr(i5, s2), lastInsertId: o3 }; + } + case "initializeRecord": { + let { lastInsertId: i5 } = this.#n(t.args.expr, r5, n3), o3 = {}; + for (let [s2, a5] of Object.entries(t.args.fields)) o3[s2] = qa(a5, i5, r5, n3); + return { value: o3, lastInsertId: i5 }; + } + case "mapRecord": { + let { value: i5, lastInsertId: o3 } = this.#n(t.args.expr, r5, n3), s2 = i5 === null ? {} : rt(i5); + for (let [a5, u] of Object.entries(t.args.fields)) s2[a5] = Ua(u, s2[a5], r5, n3); + return { value: s2, lastInsertId: o3 }; + } + default: + V(t, `Unexpected node type: ${t.type}`); + } + } + #u(t, r5, n3) { + return t <= 1 ? n3(r5) : this.#l(r5, n3); + } + async #l(t, r5) { + if (!t.transactionManager.enabled) return r5(t); + let n3 = t.transactionManager.manager, i5 = await n3.startInternalTransaction(), o3 = await n3.getTransaction(i5, "query"); + try { + let s2 = await r5({ ...t, queryable: o3, transactionManager: { enabled: false } }); + return await n3.commitTransaction(i5.id), s2; + } catch (s2) { + try { + await n3.rollbackTransaction(i5.id); + } catch (a5) { + qd("failed to roll back an internal transaction", a5); + } + throw s2; + } + } + #p() { + return this.#a?.maxBindValues !== void 0 ? this.#a.maxBindValues : this.#c(); + } + #c() { + if (this.#s !== void 0) switch (this.#s) { + case "cockroachdb": + case "postgres": + case "postgresql": + case "prisma+postgres": + return 32766; + case "mysql": + return 65535; + case "sqlite": + return 999; + case "sqlserver": + return 2098; + case "mongodb": + return; + default: + V(this.#s, `Unexpected provider: ${this.#s}`); + } + } + #d(t, r5, n3) { + return Wr({ query: t, execute: n3, provider: this.#s ?? r5.provider, tracingHelper: this.#r, onQuery: this.#e }); + } + }; + function Fi(e5) { + return Array.isArray(e5) ? e5.length === 0 : e5 == null; + } + __name(Fi, "Fi"); + function Ct(e5) { + return Array.isArray(e5) ? e5 : [e5]; + } + __name(Ct, "Ct"); + function xe(e5) { + if (typeof e5 == "number") return e5; + if (typeof e5 == "string") return Number(e5); + throw new Error(`Expected number, got ${typeof e5}`); + } + __name(xe, "xe"); + function rt(e5) { + if (typeof e5 == "object" && e5 !== null) return e5; + throw new Error(`Expected object, got ${typeof e5}`); + } + __name(rt, "rt"); + function _i(e5, t) { + return Array.isArray(e5) ? e5.map((r5) => _i(r5, t)) : typeof e5 == "object" && e5 !== null ? e5[t] ?? null : e5; + } + __name(_i, "_i"); + function Va(e5, t, r5) { + for (let { joinExpr: n3, childRecords: i5 } of t) { + let o3 = n3.on.map(([P]) => P), s2 = n3.on.map(([, P]) => P), a5 = {}, u = Array.isArray(e5) ? e5 : [e5]; + for (let P of u) { + let T2 = rt(P), S = tt(T2, o3); + a5[S] || (a5[S] = []), a5[S].push(T2), n3.isRelationUnique ? T2[n3.parentField] = null : T2[n3.parentField] = []; + } + let m3 = r5 ? void 0 : Ud(u, o3); + for (let P of Array.isArray(i5) ? i5 : [i5]) { + if (P === null) continue; + let T2 = tt(rt(P), s2, m3); + for (let S of a5[T2] ?? []) n3.isRelationUnique ? S[n3.parentField] = P : S[n3.parentField].push(P); + } + } + return e5; + } + __name(Va, "Va"); + function Ud(e5, t) { + function r5(o3) { + switch (o3) { + case "number": + return Number; + case "string": + return String; + case "boolean": + return Boolean; + case "bigint": + return BigInt; + default: + return; + } + } + __name(r5, "r"); + let n3 = Array.from({ length: t.length }), i5 = 0; + for (let o3 of e5) { + let s2 = rt(o3); + for (let [a5, u] of t.entries()) if (s2[u] !== null && n3[a5] === void 0) { + let m3 = r5(typeof s2[u]); + m3 !== void 0 && (n3[a5] = m3), i5++; + } + if (i5 === t.length) break; + } + return n3; + } + __name(Ud, "Ud"); + function qa(e5, t, r5, n3) { + switch (e5.type) { + case "value": + return de(e5.value, r5, n3); + case "lastInsertId": + return t; + default: + V(e5, `Unexpected field initializer type: ${e5.type}`); + } + } + __name(qa, "qa"); + function Ua(e5, t, r5, n3) { + switch (e5.type) { + case "set": + return de(e5.value, r5, n3); + case "add": + return xe(t) + xe(de(e5.value, r5, n3)); + case "subtract": + return xe(t) - xe(de(e5.value, r5, n3)); + case "multiply": + return xe(t) * xe(de(e5.value, r5, n3)); + case "divide": { + let i5 = xe(t), o3 = xe(de(e5.value, r5, n3)); + return o3 === 0 ? null : i5 / o3; + } + default: + V(e5, `Unexpected field operation type: ${e5.type}`); + } + } + __name(Ua, "Ua"); + function jd(e5, t) { + let r5 = pr(e5); + if (r5) return t(r5).then((n3) => { + let i5 = { type: "value", args: n3.value, lastInsertId: n3.lastInsertId }, o3 = cr(e5, r5, i5); + if (!o3) throw new Error("Could not substitute the evaluated impure node into the query plan"); + return o3; + }); + } + __name(jd, "jd"); + function cr(e5, t, r5) { + if (e5 === t) return r5; + switch (e5.type) { + case "seq": + case "sum": + case "concat": { + for (let n3 = 0; n3 < e5.args.length; n3++) { + let i5 = cr(e5.args[n3], t, r5); + if (i5) return { ...e5, args: e5.args.map((o3, s2) => s2 === n3 ? i5 : o3) }; + } + return; + } + case "dataMap": + case "validate": + case "initializeRecord": + case "mapRecord": + case "process": { + let n3 = cr(e5.args.expr, t, r5); + return n3 && { ...e5, args: { ...e5.args, expr: n3 } }; + } + case "mapField": { + let n3 = cr(e5.args.records, t, r5); + return n3 && { ...e5, args: { ...e5.args, records: n3 } }; + } + case "reverse": + case "unique": + case "required": { + let n3 = cr(e5.args, t, r5); + return n3 && { ...e5, args: n3 }; + } + default: + return; + } + } + __name(cr, "cr"); + function pr(e5) { + switch (e5.type) { + case "query": + case "execute": + return e5; + case "seq": + case "sum": + case "concat": { + let t; + for (let r5 of e5.args) { + let n3 = pr(r5); + if (n3 === null) return null; + if (n3) { + if (t) return null; + t = n3; + } + } + return t; + } + case "dataMap": + case "validate": + case "initializeRecord": + case "mapRecord": + case "process": + return pr(e5.args.expr); + case "mapField": + return pr(e5.args.records); + case "reverse": + case "unique": + case "required": + return pr(e5.args); + case "let": + case "join": + case "diff": + case "if": + case "transaction": + return null; + case "value": + case "get": + case "getFirstNonEmpty": + case "unit": + return; + default: + V(e5, `Unexpected node type: ${e5.type}`); + } + } + __name(pr, "pr"); + function ja(e5, t) { + if (!t || t.plugins.length === 0) return e5; + let r5 = Ys(t.plugins, { query: t.queryInfo, sql: e5.sql }); + return r5 ? { ...e5, sql: ea(e5.sql, r5) } : e5; + } + __name(ja, "ja"); + function $i(e5, t, r5) { + let n3 = e5.pagination?.cursor; + if (n3) for (let [i5, o3] of Object.entries(n3)) n3[i5] = de(o3, t, r5); + for (let i5 of Object.values(e5.nested)) $i(i5, t, r5); + } + __name($i, "$i"); + function sn(e5) { + return ge(e5); + } + __name(sn, "sn"); + function Ba(e5) { + return new Li(e5).deserialize(); + } + __name(Ba, "Ba"); + function Bd(e5) { + return Buffer.from(e5, "base64url"); + } + __name(Bd, "Bd"); + var Li = class { + static { + __name(this, "Li"); + } + #e; + #t; + #r = 0; + constructor(t) { + this.#e = t; + let r5 = Bd(t.graph); + this.#t = new DataView(r5.buffer, r5.byteOffset, r5.byteLength); + } + deserialize() { + let { inputNodeCount: t, outputNodeCount: r5, rootCount: n3 } = this.#n(), i5 = this.#u(t), o3 = this.#l(r5), s2 = this.#p(n3); + return { strings: this.#e.strings, inputNodes: i5, outputNodes: o3, roots: s2 }; + } + #i() { + let t = 0, r5 = 0, n3; + do + n3 = this.#t.getUint8(this.#r++), t |= (n3 & 127) << r5, r5 += 7; + while (n3 >= 128); + return t; + } + #o() { + let t = this.#i(); + return t === 0 ? void 0 : t - 1; + } + #s() { + let t = this.#t.getUint8(this.#r); + return this.#r += 1, t; + } + #a() { + let t = this.#t.getUint16(this.#r, true); + return this.#r += 2, t; + } + #n() { + let t = this.#i(), r5 = this.#i(), n3 = this.#i(); + return { inputNodeCount: t, outputNodeCount: r5, rootCount: n3 }; + } + #u(t) { + let r5 = []; + for (let n3 = 0; n3 < t; n3++) { + let i5 = this.#i(), o3 = {}; + for (let s2 = 0; s2 < i5; s2++) { + let a5 = this.#i(), u = this.#a(), m3 = this.#o(), P = this.#o(), S = { flags: this.#s() }; + u !== 0 && (S.scalarMask = u), m3 !== void 0 && (S.childNodeId = m3), P !== void 0 && (S.enumNameIndex = P), o3[a5] = S; + } + r5.push({ edges: o3 }); + } + return r5; + } + #l(t) { + let r5 = []; + for (let n3 = 0; n3 < t; n3++) { + let i5 = this.#i(), o3 = {}; + for (let s2 = 0; s2 < i5; s2++) { + let a5 = this.#i(), u = this.#o(), m3 = this.#o(), P = {}; + u !== void 0 && (P.argsNodeId = u), m3 !== void 0 && (P.outputNodeId = m3), o3[a5] = P; + } + r5.push({ edges: o3 }); + } + return r5; + } + #p(t) { + let r5 = {}; + for (let n3 = 0; n3 < t; n3++) { + let i5 = this.#i(), o3 = this.#o(), s2 = this.#o(), a5 = this.#e.strings[i5], u = {}; + o3 !== void 0 && (u.argsNodeId = o3), s2 !== void 0 && (u.outputNodeId = s2), r5[a5] = u; + } + return r5; + } + }; + var mr = class e5 { + static { + __name(this, "e"); + } + #e; + #t; + #r; + constructor(t, r5) { + this.#e = t, this.#r = r5, this.#t = /* @__PURE__ */ new Map(); + for (let n3 = 0; n3 < t.strings.length; n3++) this.#t.set(t.strings[n3], n3); + } + static deserialize(t, r5) { + let n3 = Ba(t); + return new e5(n3, r5); + } + static fromData(t, r5) { + return new e5(t, r5); + } + root(t) { + let r5 = this.#e.roots[t]; + if (r5) return { argsNodeId: r5.argsNodeId, outputNodeId: r5.outputNodeId }; + } + inputNode(t) { + if (!(t === void 0 || t < 0 || t >= this.#e.inputNodes.length)) return { id: t }; + } + outputNode(t) { + if (!(t === void 0 || t < 0 || t >= this.#e.outputNodes.length)) return { id: t }; + } + inputEdge(t, r5) { + if (!t) return; + let n3 = this.#e.inputNodes[t.id]; + if (!n3) return; + let i5 = this.#t.get(r5); + if (i5 === void 0) return; + let o3 = n3.edges[i5]; + if (o3) return { flags: o3.flags, childNodeId: o3.childNodeId, scalarMask: o3.scalarMask ?? 0, enumNameIndex: o3.enumNameIndex }; + } + outputEdge(t, r5) { + if (!t) return; + let n3 = this.#e.outputNodes[t.id]; + if (!n3) return; + let i5 = this.#t.get(r5); + if (i5 === void 0) return; + let o3 = n3.edges[i5]; + if (o3) return { argsNodeId: o3.argsNodeId, outputNodeId: o3.outputNodeId }; + } + enumValues(t) { + if (t?.enumNameIndex === void 0) return; + let r5 = this.#e.strings[t.enumNameIndex]; + if (r5) return this.#r(r5); + } + getString(t) { + return this.#e.strings[t]; + } + }; + var Ne = { ParamScalar: 1, ParamEnum: 2, ParamListScalar: 4, ParamListEnum: 8, ListObject: 16, Object: 32 }; + var re = { String: 1, Int: 2, BigInt: 4, Float: 8, Decimal: 16, Boolean: 32, DateTime: 64, Json: 128, Bytes: 256 }; + function De(e5, t) { + return (e5.flags & t) !== 0; + } + __name(De, "De"); + function Ge(e5) { + return e5.scalarMask; + } + __name(Ge, "Ge"); + var Qd = /* @__PURE__ */ new Set(["DateTime", "Decimal", "BigInt", "Bytes", "Json", "Raw"]); + function an(e5) { + if (e5 == null) return { kind: "null" }; + if (typeof e5 == "string") return { kind: "primitive", value: e5 }; + if (typeof e5 == "number") return { kind: "primitive", value: e5 }; + if (typeof e5 == "boolean") return { kind: "primitive", value: e5 }; + if (Array.isArray(e5)) return { kind: "array", items: e5 }; + if (typeof e5 == "object") { + let t = e5; + if ("$type" in t && typeof t.$type == "string") { + let r5 = t.$type; + return Qd.has(r5) ? { kind: "taggedScalar", tag: r5, value: t.value } : { kind: "structural", value: t.value }; + } + return { kind: "object", entries: t }; + } + return { kind: "structural", value: e5 }; + } + __name(an, "an"); + function Qa(e5) { + return typeof e5 == "object" && e5 !== null && !Array.isArray(e5) && !("$type" in e5); + } + __name(Qa, "Qa"); + function Ja(e5) { + return typeof e5 == "object" && e5 !== null && "$type" in e5 && typeof e5.$type == "string"; + } + __name(Ja, "Ja"); + function Vi(e5, t) { + let r5 = new ln(t), n3 = e5.modelName ? `${e5.modelName}.${e5.action}` : e5.action, i5 = t.root(n3); + return { parameterizedQuery: { ...e5, query: r5.parameterizeFieldSelection(e5.query, i5?.argsNodeId, i5?.outputNodeId) }, placeholderValues: r5.getPlaceholderValues() }; + } + __name(Vi, "Vi"); + function qi(e5, t) { + let r5 = new ln(t), n3 = []; + for (let i5 = 0; i5 < e5.batch.length; i5++) { + let o3 = e5.batch[i5], s2 = o3.modelName ? `${o3.modelName}.${o3.action}` : o3.action, a5 = t.root(s2); + n3.push({ ...o3, query: r5.parameterizeFieldSelection(o3.query, a5?.argsNodeId, a5?.outputNodeId) }); + } + return { parameterizedBatch: { ...e5, batch: n3 }, placeholderValues: r5.getPlaceholderValues() }; + } + __name(qi, "qi"); + var ln = class { + static { + __name(this, "ln"); + } + #e; + #t = /* @__PURE__ */ new Map(); + #r = /* @__PURE__ */ new Map(); + #i = 1; + constructor(t) { + this.#e = t; + } + getPlaceholderValues() { + return Object.fromEntries(this.#t); + } + #o(t, r5) { + let n3 = Gd(t, r5), i5 = this.#r.get(n3); + if (i5 !== void 0) return Ga(i5, r5); + let o3 = `%${this.#i++}`; + return this.#r.set(n3, o3), this.#t.set(o3, t), Ga(o3, r5); + } + parameterizeFieldSelection(t, r5, n3) { + let i5 = this.#e.inputNode(r5), o3 = this.#e.outputNode(n3), s2 = { ...t }; + return t.arguments && t.arguments.$type !== "Raw" && (s2.arguments = this.#s(t.arguments, i5)), t.selection && (s2.selection = this.#c(t.selection, o3)), s2; + } + #s(t, r5) { + if (!r5) return t; + let n3 = {}; + for (let [i5, o3] of Object.entries(t)) { + let s2 = this.#e.inputEdge(r5, i5); + s2 ? n3[i5] = this.#a(o3, s2) : n3[i5] = o3; + } + return n3; + } + #a(t, r5) { + let n3 = an(t); + switch (n3.kind) { + case "null": + return t; + case "structural": + return t; + case "primitive": + return this.#n(n3.value, r5); + case "taggedScalar": + return this.#u(t, n3.tag, r5); + case "array": + return this.#l(n3.items, t, r5); + case "object": + return this.#p(n3.entries, r5); + default: + throw new Error(`Unknown value kind ${n3.kind}`); + } + } + #n(t, r5) { + if (De(r5, Ne.ParamEnum) && r5.enumNameIndex !== void 0 && typeof t == "string") { + let o3 = this.#e.enumValues(r5); + if (o3 && Object.hasOwn(o3, t)) { + let s2 = { type: "Enum" }; + return this.#o(o3[t], s2); + } + } + if (!De(r5, Ne.ParamScalar)) return t; + let n3 = Ge(r5); + if (n3 === 0) return t; + let i5 = Ui(t); + return Ha(i5, n3) ? (n3 & re.Json && (t = JSON.stringify(t)), this.#o(t, i5)) : t; + } + #u(t, r5, n3) { + if (!De(n3, Ne.ParamScalar)) return t; + let i5 = Ge(n3); + if (i5 === 0 || !Ka(r5, i5)) return t; + let o3 = Wa(t.$type), s2 = Za(t); + return this.#o(s2, o3); + } + #l(t, r5, n3) { + if (De(n3, Ne.ParamScalar) && Ge(n3) & re.Json) { + let i5 = Se(Ae(t)), o3 = { type: "Json" }; + return this.#o(i5, o3); + } + if (De(n3, Ne.ParamEnum)) { + let i5 = this.#e.enumValues(n3); + if (i5 && t.every((o3) => typeof o3 == "string" && Object.hasOwn(i5, o3))) { + let o3 = { type: "List", inner: { type: "Enum" } }; + return this.#o(t, o3); + } + } + if (De(n3, Ne.ParamListScalar) && t.every((o3) => Zd(o3, n3)) && t.length > 0) { + let o3 = t.map((u) => Xd(u)), a5 = { type: "List", inner: Wd(t) }; + return this.#o(o3, a5); + } + if (De(n3, Ne.ListObject)) { + let i5 = this.#e.inputNode(n3.childNodeId); + if (i5) return t.map((o3) => Qa(o3) ? this.#s(o3, i5) : o3); + } + return r5; + } + #p(t, r5) { + if (De(r5, Ne.Object)) { + let i5 = this.#e.inputNode(r5.childNodeId); + if (i5) return this.#s(t, i5); + } + if (Ge(r5) & re.Json) { + let i5 = Se(Ae(t)), o3 = { type: "Json" }; + return this.#o(i5, o3); + } + return t; + } + #c(t, r5) { + if (!t || !r5) return t; + let n3 = {}; + for (let [i5, o3] of Object.entries(t)) { + if (i5 === "$scalars" || i5 === "$composites" || typeof o3 == "boolean") { + n3[i5] = o3; + continue; + } + let s2 = this.#e.outputEdge(r5, i5); + if (s2) { + let a5 = o3, u = this.#e.inputNode(s2.argsNodeId), m3 = this.#e.outputNode(s2.outputNodeId), P = { selection: a5.selection ? this.#c(a5.selection, m3) : {} }; + a5.arguments && (P.arguments = this.#s(a5.arguments, u)), n3[i5] = P; + } else n3[i5] = o3; + } + return n3; + } + }; + function Ga(e5, t) { + return { $type: "Param", value: { name: e5, ...t } }; + } + __name(Ga, "Ga"); + function za(e5) { + return e5.type === "List" ? `List<${za(e5.inner)}>` : e5.type; + } + __name(za, "za"); + function Jd(e5) { + return ArrayBuffer.isView(e5) ? Buffer.from(e5.buffer, e5.byteOffset, e5.byteLength).toString("base64") : JSON.stringify(e5); + } + __name(Jd, "Jd"); + function Gd(e5, t) { + let r5 = za(t), n3 = Jd(e5); + return `${r5}:${n3}`; + } + __name(Gd, "Gd"); + var zd = 2 ** 31 - 1; + var Hd = -(2 ** 31); + function Ui(e5) { + switch (typeof e5) { + case "boolean": + return { type: "Boolean" }; + case "number": + return Number.isInteger(e5) ? Hd <= e5 && e5 <= zd ? { type: "Int" } : { type: "BigInt" } : { type: "Float" }; + case "string": + return { type: "String" }; + default: + throw new Error("unreachable"); + } + } + __name(Ui, "Ui"); + function Ha({ type: e5 }, t) { + switch (e5) { + case "Boolean": + return (t & re.Boolean) !== 0; + case "Int": + return (t & (re.Int | re.BigInt | re.Float)) !== 0; + case "BigInt": + return (t & re.BigInt) !== 0; + case "Float": + return (t & re.Float) !== 0; + case "String": + return (t & re.String) !== 0; + default: + return false; + } + } + __name(Ha, "Ha"); + function Wa(e5) { + switch (e5) { + case "BigInt": + case "Bytes": + case "DateTime": + case "Json": + return { type: e5 }; + case "Decimal": + return { type: "Float" }; + default: + return; + } + } + __name(Wa, "Wa"); + function Wd(e5) { + let t = { type: "Any" }; + for (let r5 of e5) { + let n3 = an(r5), i5; + switch (n3.kind) { + case "primitive": + i5 = Ui(n3.value); + break; + case "taggedScalar": + i5 = Wa(n3.tag) ?? { type: "Any" }; + break; + default: + return { type: "Any" }; + } + t = Kd(t, i5); + } + return t; + } + __name(Wd, "Wd"); + function Kd(e5, t) { + if (e5.type === "Any") return t; + if (t.type === "Any" || e5.type === t.type) return e5; + let r5 = { Int: 0, BigInt: 1, Float: 2 }, n3 = r5[e5.type], i5 = r5[t.type]; + return n3 !== void 0 && i5 !== void 0 ? n3 >= i5 ? e5 : t : { type: "Any" }; + } + __name(Kd, "Kd"); + function Ka(e5, t) { + switch (e5) { + case "DateTime": + return (t & re.DateTime) !== 0; + case "Decimal": + return (t & re.Decimal) !== 0; + case "BigInt": + return (t & re.BigInt) !== 0; + case "Bytes": + return (t & re.Bytes) !== 0; + case "Json": + return (t & re.Json) !== 0; + default: + return false; + } + } + __name(Ka, "Ka"); + function Zd(e5, t) { + let r5 = an(e5); + switch (r5.kind) { + case "structural": + return false; + case "null": + return false; + case "primitive": { + let n3 = Ui(r5.value), i5 = Ge(t); + return i5 !== 0 && Ha(n3, i5); + } + case "taggedScalar": { + let n3 = Ge(t); + return n3 !== 0 && Ka(r5.tag, n3); + } + default: + return false; + } + } + __name(Zd, "Zd"); + function Xd(e5) { + return Ja(e5) ? Za(e5) : e5; + } + __name(Xd, "Xd"); + function Za(e5) { + return e5.value; + } + __name(Za, "Za"); + async function Yd() { + return globalThis.crypto ?? await import("node:crypto"); + } + __name(Yd, "Yd"); + async function Xa() { + return (await Yd()).randomUUID(); + } + __name(Xa, "Xa"); + async function Ya(e5, t) { + return new Promise((r5) => { + e5.addEventListener(t, r5, { once: true }); + }); + } + __name(Ya, "Ya"); + var ue = class extends X { + static { + __name(this, "ue"); + } + name = "TransactionManagerError"; + constructor(t, r5) { + super("Transaction API error: " + t, "P2028", r5); + } + }; + var nt = class extends ue { + static { + __name(this, "nt"); + } + constructor() { + super("Transaction not found. Transaction ID is invalid, refers to an old closed transaction Prisma doesn't have information about anymore, or was obtained before disconnecting."); + } + }; + var un = class extends ue { + static { + __name(this, "un"); + } + constructor(t) { + super(`Transaction already closed: A ${t} cannot be executed on a committed transaction.`); + } + }; + var cn = class extends ue { + static { + __name(this, "cn"); + } + constructor(t) { + super(`Transaction already closed: A ${t} cannot be executed on a transaction that was rolled back.`); + } + }; + var fr = class extends ue { + static { + __name(this, "fr"); + } + constructor() { + super("Unable to start a transaction in the given time."); + } + }; + var pn = class extends ue { + static { + __name(this, "pn"); + } + constructor(t, { timeout: r5, timeTaken: n3 }) { + super(`A ${t} cannot be executed on an expired transaction. The timeout for this transaction was ${r5} ms, however ${n3} ms passed since the start of the transaction. Consider increasing the interactive transaction timeout or doing less work in the transaction.`, { operation: t, timeout: r5, timeTaken: n3 }); + } + }; + var Me = class extends ue { + static { + __name(this, "Me"); + } + constructor(t) { + super(`Internal Consistency Error: ${t}`); + } + }; + var dn = class extends ue { + static { + __name(this, "dn"); + } + constructor(t) { + super(`Invalid isolation level: ${t}`, { isolationLevel: t }); + } + }; + var em = 100; + var tm = 2e3; + function rm() { + let e5, t = new Promise((r5) => { + e5 = r5; + }); + return { abortController: new AbortController(), settled: t, markSettled: e5 }; + } + __name(rm, "rm"); + var it = K2("prisma:client:transactionManager"); + var nm = /* @__PURE__ */ __name(() => ({ sql: "COMMIT", args: [], argTypes: [] }), "nm"); + var el = /* @__PURE__ */ __name(() => ({ sql: "ROLLBACK", args: [], argTypes: [] }), "el"); + var im = /* @__PURE__ */ __name(() => ({ sql: '-- Implicit "COMMIT" query via underlying driver', args: [], argTypes: [] }), "im"); + var om = /* @__PURE__ */ __name(() => ({ sql: '-- Implicit "ROLLBACK" query via underlying driver', args: [], argTypes: [] }), "om"); + var gr = class { + static { + __name(this, "gr"); + } + transactions = /* @__PURE__ */ new Map(); + closedTransactions = []; + #e = /* @__PURE__ */ new Set(); + driverAdapter; + transactionOptions; + tracingHelper; + #t; + #r; + constructor({ driverAdapter: t, transactionOptions: r5, tracingHelper: n3, onQuery: i5, provider: o3 }) { + this.driverAdapter = t, this.transactionOptions = r5, this.tracingHelper = n3, this.#t = i5, this.#r = o3; + } + async startInternalTransaction(t) { + let r5 = t !== void 0 ? this.#y(t) : {}; + return await this.tracingHelper.runInChildSpan("start_transaction", () => this.#i(r5)); + } + async startTransaction(t) { + let r5 = t !== void 0 ? this.#y(t) : this.transactionOptions; + return await this.tracingHelper.runInChildSpan("start_transaction", () => this.#i(r5)); + } + async #i(t) { + if (t.newTxId) return await this.#d(t.newTxId, "start", async (o3) => { + if (o3.status !== "running") throw new Me(`Transaction in invalid state ${o3.status} when starting a nested transaction.`); + if (!o3.transaction) throw new Me("Transaction missing underlying driver transaction when starting a nested transaction."); + o3.depth += 1; + let s2 = this.#a(o3); + o3.savepoints.push(s2); + try { + await this.#n(o3.transaction)(s2); + } catch (a5) { + throw o3.depth -= 1, o3.savepoints.pop(), a5; + } + return { id: o3.id }; + }); + let r5 = rm(), { abortController: n3 } = r5; + this.#e.add(r5); + let i5; + try { + let o3 = { id: await Xa(), status: "waiting", timer: void 0, timeout: t.timeout, startedAt: Date.now(), transaction: void 0, operationQueue: Promise.resolve(), depth: 1, savepoints: [], savepointCounter: 0 }; + if (n3.signal.aborted) throw new fr(); + let s2 = tl(() => n3.abort(), t.maxWait); + s2?.unref?.(); + let a5 = this.driverAdapter.startTransaction(t.isolationLevel).catch(Be); + switch (o3.transaction = await Promise.race([a5.finally(() => clearTimeout(s2)), Ya(n3.signal, "abort").then(() => { + })]), this.transactions.set(o3.id, o3), o3.status) { + case "waiting": + if (n3.signal.aborted) throw o3.transaction = void 0, i5 = this.#o(a5), await this.#f(o3, "timed_out"), new fr(); + return o3.status = "running", o3.startedAt = Date.now(), o3.timer = this.#c(o3.id, t.timeout), { id: o3.id }; + case "timed_out": + case "running": + case "committed": + case "rolled_back": + throw new Me(`Transaction in invalid state ${o3.status} although it just finished startup.`); + default: + return V(o3.status, "Unknown transaction status."); + } + } finally { + this.#e.delete(r5), i5 ? i5.finally(r5.markSettled) : r5.markSettled(); + } + } + async #o(t) { + try { + let r5 = await t; + if (r5.options.usePhantomQuery) await r5.rollback(); + else try { + await r5.executeRaw(el()); + } finally { + await r5.rollback(); + } + } catch (r5) { + it("error in discarded transaction:", r5); + } + } + async commitTransaction(t) { + return await this.tracingHelper.runInChildSpan("commit_transaction", async () => { + await this.#d(t, "commit", async (r5) => { + if (r5.depth > 1) { + if (!r5.transaction) throw new nt(); + let n3 = r5.savepoints.at(-1); + if (!n3) throw new Me(`Missing savepoint for nested commit. Depth: ${r5.depth}, transactionId: ${r5.id}`); + try { + await this.#l(r5.transaction, n3); + } finally { + r5.savepoints.pop(), r5.depth -= 1; + } + return; + } + await this.#f(r5, "committed"); + }); + }); + } + async rollbackTransaction(t) { + return await this.tracingHelper.runInChildSpan("rollback_transaction", async () => { + await this.#d(t, "rollback", async (r5) => { + if (r5.depth > 1) { + if (!r5.transaction) throw new nt(); + let n3 = r5.savepoints.at(-1); + if (!n3) throw new Me(`Missing savepoint for nested rollback. Depth: ${r5.depth}, transactionId: ${r5.id}`); + try { + await this.#u(r5.transaction)(n3), await this.#l(r5.transaction, n3); + } finally { + r5.savepoints.pop(), r5.depth -= 1; + } + return; + } + await this.#f(r5, "rolled_back"); + }); + }); + } + async getTransaction(t, r5) { + let n3 = this.#s(t.id, r5); + if (n3.status === "closing" && (await n3.closing, n3 = this.#s(t.id, r5)), !n3.transaction) throw new nt(); + return n3.transaction; + } + #s(t, r5) { + let n3 = this.transactions.get(t); + if (!n3) { + let i5 = this.closedTransactions.find((o3) => o3.id === t); + if (i5) switch (it("Transaction already closed.", { transactionId: t, status: i5.status }), i5.status) { + case "closing": + case "waiting": + case "running": + throw new Me("Active transaction found in closed transactions list."); + case "committed": + throw new un(r5); + case "rolled_back": + throw new cn(r5); + case "timed_out": + throw new pn(r5, { timeout: i5.timeout, timeTaken: Date.now() - i5.startedAt }); + } + else throw it("Transaction not found.", t), new nt(); + } + if (["committed", "rolled_back", "timed_out"].includes(n3.status)) throw new Me("Closed transaction found in active transactions map."); + return n3; + } + async cancelAllTransactions() { + let t = [...this.#e]; + for (let { abortController: r5 } of t) r5.abort(); + await Promise.allSettled([...[...this.transactions.values()].map((r5) => this.#m(r5, async () => { + let n3 = this.transactions.get(r5.id); + n3 && await this.#f(n3, "rolled_back"); + })), ...t.map(({ settled: r5 }) => sm(r5, tm))]); + } + #a(t) { + return `prisma_sp_${t.savepointCounter++}`; + } + #n(t) { + if (t.createSavepoint) return t.createSavepoint.bind(t); + throw new ue(`Nested transactions are not supported by adapter "${t.adapterName}" (${t.provider}): createSavepoint is not implemented.`); + } + #u(t) { + if (t.rollbackToSavepoint) return t.rollbackToSavepoint.bind(t); + throw new ue(`Nested transactions are not supported by adapter "${t.adapterName}" (${t.provider}): rollbackToSavepoint is not implemented.`); + } + async #l(t, r5) { + t.releaseSavepoint && await t.releaseSavepoint(r5); + } + #p(t) { + it("Transaction already committed or rolled back when timeout happened.", t); + } + #c(t, r5) { + let n3 = Date.now(), i5 = tl(async () => { + try { + it("Transaction timed out.", { transactionId: t, timeoutStartedAt: n3, timeout: r5 }); + let o3 = this.transactions.get(t); + if (!o3) { + this.#p(t); + return; + } + await this.#m(o3, async () => { + let s2 = this.transactions.get(t); + s2 && ["running", "waiting"].includes(s2.status) ? await this.#f(s2, "timed_out") : this.#p(t); + }); + } catch (o3) { + it("Error while closing timed-out transaction.", { transactionId: t, error: o3 }); + } + }, r5); + return i5?.unref?.(), i5; + } + async #d(t, r5, n3) { + let i5 = this.#s(t, r5); + return await this.#m(i5, async () => { + let o3 = this.#s(t, r5); + return await n3(o3); + }); + } + async #m(t, r5) { + let n3 = t.operationQueue, i5; + t.operationQueue = new Promise((o3) => { + i5 = o3; + }), await n3; + try { + return await r5(); + } finally { + i5(); + } + } + async #f(t, r5) { + let n3 = /* @__PURE__ */ __name(async () => { + it("Closing transaction.", { transactionId: t.id, status: r5 }); + try { + if (t.transaction && r5 === "committed") if (t.transaction.options.usePhantomQuery) await this.#g(im(), t.transaction, () => t.transaction.commit()); + else { + let i5 = nm(); + await this.#g(i5, t.transaction, () => t.transaction.executeRaw(i5)).then(() => t.transaction.commit(), (o3) => { + let s2 = /* @__PURE__ */ __name(() => Promise.reject(o3), "s"); + return t.transaction.rollback().then(s2, s2); + }); + } + else if (t.transaction) if (t.transaction.options.usePhantomQuery) await this.#g(om(), t.transaction, () => t.transaction.rollback()); + else { + let i5 = el(); + try { + await this.#g(i5, t.transaction, () => t.transaction.executeRaw(i5)); + } finally { + await t.transaction.rollback(); + } + } + } finally { + t.status = r5, clearTimeout(t.timer), t.timer = void 0, this.transactions.delete(t.id), this.closedTransactions.push(t), this.closedTransactions.length > em && this.closedTransactions.shift(); + } + }, "n"); + t.status === "closing" ? (await t.closing, this.#s(t.id, r5 === "committed" ? "commit" : "rollback")) : await Object.assign(t, { status: "closing", reason: r5, closing: n3() }).closing; + } + #y(t) { + if (!t.timeout) throw new ue("timeout is required"); + if (!t.maxWait) throw new ue("maxWait is required"); + if (t.isolationLevel === "SNAPSHOT") throw new dn(t.isolationLevel); + return { ...t, timeout: t.timeout, maxWait: t.maxWait }; + } + #g(t, r5, n3) { + return Wr({ query: t, execute: n3, provider: this.#r ?? r5.provider, tracingHelper: this.tracingHelper, onQuery: this.#t }); + } + }; + function tl(e5, t) { + return t !== void 0 ? setTimeout(e5, t) : void 0; + } + __name(tl, "tl"); + function sm(e5, t) { + let r5, n3 = new Promise((i5) => { + r5 = setTimeout(i5, t), r5?.unref?.(); + }); + return Promise.race([e5, n3]).finally(() => clearTimeout(r5)); + } + __name(sm, "sm"); + var ne = require_dist(); + var mn = "7.10.1"; + var rl = { bigint: "bigint", date: "datetime", decimal: "decimal", bytes: "bytes" }; + function il(e5) { + let t; + try { + t = JSON.parse(e5); + } catch (i5) { + throw new Error(`Received invalid serialized parameters: ${i5.message}`); + } + if (!Array.isArray(t)) throw new Error("Received invalid serialized parameters: expected an array"); + let r5 = t.map((i5) => ol(i5)), n3 = t.map((i5) => lm(i5)); + return { args: r5, argTypes: n3 }; + } + __name(il, "il"); + function ol(e5) { + if (Array.isArray(e5)) return e5.map((t) => ol(t)); + if (typeof e5 == "object" && e5 !== null && "prisma__value" in e5) { + if (!("prisma__type" in e5)) throw new Error("Invalid serialized parameter, prisma__type should be present when prisma__value is present"); + return `${e5.prisma__value}`; + } + return typeof e5 == "object" && e5 !== null ? JSON.stringify(e5) : e5; + } + __name(ol, "ol"); + function lm(e5) { + return Array.isArray(e5) ? { scalarType: e5.length > 0 ? nl(e5[0]) : "unknown", arity: "list" } : { scalarType: nl(e5), arity: "scalar" }; + } + __name(lm, "lm"); + function nl(e5) { + return typeof e5 == "object" && e5 !== null && "prisma__type" in e5 && typeof e5.prisma__type == "string" && e5.prisma__type in rl ? rl[e5.prisma__type] : typeof e5 == "number" ? "decimal" : typeof e5 == "string" ? "string" : "unknown"; + } + __name(nl, "nl"); + function sl(e5, t) { + return { batch: e5, transaction: t?.kind === "batch" ? { isolationLevel: t.options.isolationLevel } : void 0 }; + } + __name(sl, "sl"); + function al(e5) { + return e5 ? e5.replace(/"(?:[^"\\]|\\.)*"/g, '"X"').replace(/[\s:\[]([+-]?([0-9]*[.])?[0-9]+)/g, (t) => `${t[0]}5`) : ""; + } + __name(al, "al"); + function ll(e5) { + return e5.split(` +`).map((t) => t.replace(/^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)\s*/, "").replace(/\+\d+\s*ms$/, "")).join(` +`); + } + __name(ll, "ll"); + var ul = Pe(Ro()); + function cl({ title: e5, user: t = "prisma", repo: r5 = "prisma", template: n3 = "bug_report.yml", body: i5 }) { + return (0, ul.default)({ user: t, repo: r5, template: n3, title: e5, body: i5 }); + } + __name(cl, "cl"); + function pl({ version: e5, binaryTarget: t, title: r5, description: n3, engineVersion: i5, database: o3, query: s2 }) { + let a5 = go(6e3 - (s2?.length ?? 0)), u = ll(ut(a5)), m3 = n3 ? `# Description +\`\`\` +${n3} +\`\`\`` : "", P = ut(`Hi Prisma Team! My Prisma Client just crashed. This is the report: +## Versions + +| Name | Version | +|-----------------|--------------------| +| Node | ${process.version?.padEnd(19)}| +| OS | ${t?.padEnd(19)}| +| Prisma Client | ${e5?.padEnd(19)}| +| Query Engine | ${i5?.padEnd(19)}| +| Database | ${o3?.padEnd(19)}| + +${m3} + +## Logs +\`\`\` +${u} +\`\`\` + +## Client Snippet +\`\`\`ts +// PLEASE FILL YOUR CODE SNIPPET HERE +\`\`\` + +## Schema +\`\`\`prisma +// PLEASE ADD YOUR SCHEMA HERE IF POSSIBLE +\`\`\` + +## Prisma Engine Query +\`\`\` +${s2 ? al(s2) : ""} +\`\`\` +`), T2 = cl({ title: r5, body: P }); + return `${r5} + +This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic. + +${Mt(T2)} + +If you want the Prisma team to look into it, please open the link above \u{1F64F} +To increase the chance of success, please post your schema and a snippet of +how you used Prisma Client in the issue. +`; + } + __name(pl, "pl"); + var fn = class e5 { + static { + __name(this, "e"); + } + #e; + #t; + #r; + #i; + #o; + constructor(t, r5, n3) { + this.#e = t, this.#t = r5, this.#r = n3, this.#i = r5.getConnectionInfo?.(), this.#o = dr.forSql({ onQuery: this.#e.onQuery, tracingHelper: this.#e.tracingHelper, provider: this.#e.provider, connectionInfo: this.#i }); + } + static async connect(t) { + let r5, n3; + try { + r5 = await t.driverAdapterFactory.connect(), n3 = new gr({ driverAdapter: r5, transactionOptions: t.transactionOptions, tracingHelper: t.tracingHelper, onQuery: t.onQuery, provider: t.provider }); + } catch (i5) { + throw await r5?.dispose(), i5; + } + return new e5(t, r5, n3); + } + getConnectionInfo() { + let t = this.#i ?? { supportsRelationJoins: false }; + return Promise.resolve({ provider: this.#t.provider, connectionInfo: t }); + } + async execute({ plan: t, placeholderValues: r5, transaction: n3, batchIndex: i5, queryInfo: o3 }) { + let s2 = n3 ? await this.#r.getTransaction(n3, i5 !== void 0 ? "batch query" : "query") : this.#t; + return await this.#o.run(t, { queryable: s2, transactionManager: n3 ? { enabled: false } : { enabled: true, manager: this.#r }, scope: r5, sqlCommenter: this.#e.sqlCommenters && { plugins: this.#e.sqlCommenters, queryInfo: o3 } }); + } + async startTransaction(t) { + return { ...await this.#r.startTransaction(t), payload: void 0 }; + } + async commitTransaction(t) { + await this.#r.commitTransaction(t.id); + } + async rollbackTransaction(t) { + await this.#r.rollbackTransaction(t.id); + } + async disconnect() { + try { + await this.#r.cancelAllTransactions(); + } finally { + await this.#t.dispose(); + } + } + apiKey() { + return null; + } + }; + var gn = class { + static { + __name(this, "gn"); + } + #e; + #t; + #r; + constructor(t = 1e3) { + this.#e = /* @__PURE__ */ new Map(), this.#t = /* @__PURE__ */ new Map(), this.#r = t; + } + getSingle(t) { + let r5 = this.#e.get(t); + return r5 && (this.#e.delete(t), this.#e.set(t, r5)), r5; + } + setSingle(t, r5) { + if (this.#e.has(t)) { + this.#e.delete(t), this.#e.set(t, r5); + return; + } + if (this.#e.size >= this.#r) { + let n3 = this.#e.keys().next().value; + n3 !== void 0 && this.#e.delete(n3); + } + this.#e.set(t, r5); + } + getBatch(t) { + let r5 = this.#t.get(t); + return r5 && (this.#t.delete(t), this.#t.set(t, r5)), r5; + } + setBatch(t, r5) { + if (this.#t.has(t)) { + this.#t.delete(t), this.#t.set(t, r5); + return; + } + if (this.#t.size >= this.#r) { + let n3 = this.#t.keys().next().value; + n3 !== void 0 && this.#t.delete(n3); + } + this.#t.set(t, r5); + } + clear() { + this.#e.clear(), this.#t.clear(); + } + get size() { + return this.#e.size + this.#t.size; + } + get singleCacheSize() { + return this.#e.size; + } + get batchCacheSize() { + return this.#t.size; + } + }; + var hl = require_dist(); + var yn = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/; + function dl(e5, t, r5) { + let n3 = r5 || {}, i5 = n3.encode || encodeURIComponent; + if (typeof i5 != "function") throw new TypeError("option encode is invalid"); + if (!yn.test(e5)) throw new TypeError("argument name is invalid"); + let o3 = i5(t); + if (o3 && !yn.test(o3)) throw new TypeError("argument val is invalid"); + let s2 = e5 + "=" + o3; + if (n3.maxAge !== void 0 && n3.maxAge !== null) { + let a5 = n3.maxAge - 0; + if (Number.isNaN(a5) || !Number.isFinite(a5)) throw new TypeError("option maxAge is invalid"); + s2 += "; Max-Age=" + Math.floor(a5); + } + if (n3.domain) { + if (!yn.test(n3.domain)) throw new TypeError("option domain is invalid"); + s2 += "; Domain=" + n3.domain; + } + if (n3.path) { + if (!yn.test(n3.path)) throw new TypeError("option path is invalid"); + s2 += "; Path=" + n3.path; + } + if (n3.expires) { + if (!um(n3.expires) || Number.isNaN(n3.expires.valueOf())) throw new TypeError("option expires is invalid"); + s2 += "; Expires=" + n3.expires.toUTCString(); + } + if (n3.httpOnly && (s2 += "; HttpOnly"), n3.secure && (s2 += "; Secure"), n3.priority) switch (typeof n3.priority == "string" ? n3.priority.toLowerCase() : n3.priority) { + case "low": { + s2 += "; Priority=Low"; + break; + } + case "medium": { + s2 += "; Priority=Medium"; + break; + } + case "high": { + s2 += "; Priority=High"; + break; + } + default: + throw new TypeError("option priority is invalid"); + } + if (n3.sameSite) switch (typeof n3.sameSite == "string" ? n3.sameSite.toLowerCase() : n3.sameSite) { + case true: { + s2 += "; SameSite=Strict"; + break; + } + case "lax": { + s2 += "; SameSite=Lax"; + break; + } + case "strict": { + s2 += "; SameSite=Strict"; + break; + } + case "none": { + s2 += "; SameSite=None"; + break; + } + default: + throw new TypeError("option sameSite is invalid"); + } + return n3.partitioned && (s2 += "; Partitioned"), s2; + } + __name(dl, "dl"); + function um(e5) { + return Object.prototype.toString.call(e5) === "[object Date]" || e5 instanceof Date; + } + __name(um, "um"); + function ml(e5, t) { + let r5 = (e5 || "").split(";").filter((u) => typeof u == "string" && !!u.trim()), n3 = r5.shift() || "", i5 = cm(n3), o3 = i5.name, s2 = i5.value; + try { + s2 = t?.decode === false ? s2 : (t?.decode || decodeURIComponent)(s2); + } catch { + } + let a5 = { name: o3, value: s2 }; + for (let u of r5) { + let m3 = u.split("="), P = (m3.shift() || "").trimStart().toLowerCase(), T2 = m3.join("="); + switch (P) { + case "expires": { + a5.expires = new Date(T2); + break; + } + case "max-age": { + a5.maxAge = Number.parseInt(T2, 10); + break; + } + case "secure": { + a5.secure = true; + break; + } + case "httponly": { + a5.httpOnly = true; + break; + } + case "samesite": { + a5.sameSite = T2; + break; + } + default: + a5[P] = T2; + } + } + return a5; + } + __name(ml, "ml"); + function cm(e5) { + let t = "", r5 = "", n3 = e5.split("="); + return n3.length > 1 ? (t = n3.shift(), r5 = n3.join("=")) : r5 = e5, { name: t, value: r5 }; + } + __name(cm, "cm"); + var hn = class extends Error { + static { + __name(this, "hn"); + } + clientVersion; + cause; + constructor(t, r5) { + super(t), this.clientVersion = r5.clientVersion, this.cause = r5.cause; + } + get [Symbol.toStringTag]() { + return this.name; + } + }; + var wn = class extends hn { + static { + __name(this, "wn"); + } + isRetryable; + constructor(t, r5) { + super(t, r5), this.isRetryable = r5.isRetryable ?? true; + } + }; + function fl(e5, t) { + return { ...e5, isRetryable: t }; + } + __name(fl, "fl"); + var ot = class extends wn { + static { + __name(this, "ot"); + } + name = "InvalidDatasourceError"; + code = "P6001"; + constructor(t, r5) { + super(t, fl(r5, false)); + } + }; + Bt(ot, "InvalidDatasourceError"); + function gl(e5) { + let t = { clientVersion: e5.clientVersion }, r5; + try { + r5 = new URL(e5.accelerateUrl); + } catch (u) { + let m3 = u.message; + throw new ot(`Error validating \`accelerateUrl\`, the URL cannot be parsed, reason: ${m3}`, t); + } + let { protocol: n3, searchParams: i5 } = r5; + if (n3 !== "prisma:" && n3 !== Er) throw new ot("Error validating `accelerateUrl`: the URL must start with the protocol `prisma://` or `prisma+postgres://`", t); + let o3 = i5.get("api_key"); + if (o3 === null || o3.length < 1) throw new ot("Error validating `accelerateUrl`: the URL must contain a valid API key", t); + let s2 = Dn(r5) ? "http:" : "https:"; + process.env.TEST_CLIENT_ENGINE_REMOTE_EXECUTOR && r5.searchParams.has("use_http") && (s2 = "http:"); + let a5 = new URL(r5.href.replace(n3, s2)); + return { apiKey: o3, url: a5 }; + } + __name(gl, "gl"); + var yl = Pe(wo()); + var xn = class { + static { + __name(this, "xn"); + } + apiKey; + tracingHelper; + logLevel; + logQueries; + engineHash; + constructor({ apiKey: t, tracingHelper: r5, logLevel: n3, logQueries: i5, engineHash: o3 }) { + this.apiKey = t, this.tracingHelper = r5, this.logLevel = n3, this.logQueries = i5, this.engineHash = o3; + } + build({ traceparent: t, transactionId: r5 } = {}) { + let n3 = { Accept: "application/json", Authorization: `Bearer ${this.apiKey}`, "Content-Type": "application/json", "Prisma-Engine-Hash": this.engineHash, "Prisma-Engine-Version": yl.enginesVersion }; + this.tracingHelper.isEnabled() && (n3.traceparent = t ?? this.tracingHelper.getTraceParent()), r5 && (n3["X-Transaction-Id"] = r5); + let i5 = this.#e(); + return i5.length > 0 && (n3["X-Capture-Telemetry"] = i5.join(", ")), n3; + } + #e() { + let t = []; + return this.tracingHelper.isEnabled() && t.push("tracing"), this.logLevel && t.push(this.logLevel), this.logQueries && t.push("query"), t; + } + }; + function pm(e5) { + return e5[0] * 1e3 + e5[1] / 1e6; + } + __name(pm, "pm"); + function ji(e5) { + return new Date(pm(e5)); + } + __name(ji, "ji"); + var wl = K2("prisma:client:clientEngine:remoteExecutor"); + var bn = class { + static { + __name(this, "bn"); + } + #e; + #t; + #r; + #i; + #o; + #s; + constructor(t) { + this.#e = t.clientVersion, this.#i = t.logEmitter, this.#o = t.tracingHelper, this.#s = t.sqlCommenters; + let { url: r5, apiKey: n3 } = gl({ clientVersion: t.clientVersion, accelerateUrl: t.accelerateUrl }); + this.#r = new Bi(r5), this.#t = new xn({ apiKey: n3, engineHash: t.clientVersion, logLevel: t.logLevel, logQueries: t.logQueries, tracingHelper: t.tracingHelper }); + } + async getConnectionInfo() { + return await this.#a({ path: "/connection-info", method: "GET" }); + } + async execute({ plan: t, placeholderValues: r5, batchIndex: n3, model: i5, operation: o3, transaction: s2, customFetch: a5, queryInfo: u }) { + let m3 = u && this.#s?.length ? Hr(this.#s, { query: u }) : void 0; + return (await this.#a({ path: s2 ? `/transaction/${s2.id}/query` : "/query", method: "POST", body: { model: i5, operation: o3, plan: t, params: r5, comments: m3 && Object.keys(m3).length > 0 ? m3 : void 0 }, batchRequestIdx: n3, fetch: a5 })).data; + } + async startTransaction(t) { + return { ...await this.#a({ path: "/transaction/start", method: "POST", body: t }), payload: void 0 }; + } + async commitTransaction(t) { + await this.#a({ path: `/transaction/${t.id}/commit`, method: "POST" }); + } + async rollbackTransaction(t) { + await this.#a({ path: `/transaction/${t.id}/rollback`, method: "POST" }); + } + disconnect() { + return Promise.resolve(); + } + apiKey() { + return this.#t.apiKey; + } + async #a({ path: t, method: r5, body: n3, fetch: i5 = globalThis.fetch, batchRequestIdx: o3 }) { + let s2 = await this.#r.request({ method: r5, path: t, headers: this.#t.build(), body: n3, fetch: i5 }); + s2.ok || await this.#n(s2, o3); + let a5 = await s2.json(); + return typeof a5.extensions == "object" && a5.extensions !== null && this.#u(a5.extensions), a5; + } + async #n(t, r5) { + let n3 = t.headers.get("Prisma-Error-Code"), i5 = await t.text(), o3, s2 = i5; + try { + o3 = JSON.parse(i5); + } catch { + o3 = {}; + } + typeof o3.code == "string" && (n3 = o3.code), typeof o3.error == "string" ? s2 = o3.error : typeof o3.message == "string" ? s2 = o3.message : typeof o3.InvalidRequestError == "object" && o3.InvalidRequestError !== null && typeof o3.InvalidRequestError.reason == "string" && (s2 = o3.InvalidRequestError.reason), s2 = s2 || `HTTP ${t.status}: ${t.statusText}`; + let a5 = typeof o3.meta == "object" && o3.meta !== null ? o3.meta : o3; + throw new hl.PrismaClientKnownRequestError(s2, { clientVersion: this.#e, code: n3 ?? "P6000", batchRequestIdx: r5, meta: a5 }); + } + #u(t) { + let r5 = t.logs ?? []; + if (t.spans) this.#o.dispatchEngineSpans(t.spans, r5, (n3) => this.#l(n3)); + else for (let n3 of r5) this.#l(n3); + } + #l(t) { + switch (t.level) { + case "debug": + case "trace": + wl(t); + break; + case "error": + case "warn": + case "info": { + this.#i.emit(t.level, { timestamp: ji(t.timestamp), message: t.attributes.message ?? "", target: t.target ?? "RemoteExecutor" }); + break; + } + case "query": { + this.#i.emit("query", { query: t.attributes.query ?? "", timestamp: ji(t.timestamp), duration: t.attributes.duration_ms ?? 0, params: t.attributes.params ?? "", target: t.target ?? "RemoteExecutor" }); + break; + } + default: + throw new Error(`Unexpected log level: ${t.level}`); + } + } + }; + var Bi = class { + static { + __name(this, "Bi"); + } + #e; + #t; + #r; + constructor(t) { + this.#e = t, this.#t = /* @__PURE__ */ new Map(); + } + async request({ method: t, path: r5, headers: n3, body: i5, fetch: o3 }) { + let s2 = new URL(r5, this.#e), a5 = this.#i(s2); + a5 && (n3.Cookie = a5), this.#r && (n3["Accelerate-Query-Engine-Jwt"] = this.#r); + let u = await o3(s2.href, { method: t, body: i5 !== void 0 ? JSON.stringify(i5) : void 0, headers: n3 }); + return wl(t, s2, u.status, u.statusText), this.#r = u.headers.get("Accelerate-Query-Engine-Jwt") ?? void 0, this.#o(s2, u), u; + } + #i(t) { + let r5 = [], n3 = /* @__PURE__ */ new Date(); + for (let [i5, o3] of this.#t) { + if (o3.expires && o3.expires < n3) { + this.#t.delete(i5); + continue; + } + let s2 = o3.domain ?? t.hostname, a5 = o3.path ?? "/"; + t.hostname.endsWith(s2) && t.pathname.startsWith(a5) && r5.push(dl(o3.name, o3.value)); + } + return r5.length > 0 ? r5.join("; ") : void 0; + } + #o(t, r5) { + let n3 = r5.headers.getSetCookie?.() || []; + if (n3.length === 0) { + let i5 = r5.headers.get("Set-Cookie"); + i5 && n3.push(i5); + } + for (let i5 of n3) { + let o3 = ml(i5), s2 = o3.domain ?? t.hostname, a5 = o3.path ?? "/", u = `${s2}:${a5}:${o3.name}`; + this.#t.set(u, { name: o3.name, value: o3.value, domain: s2, path: a5, expires: o3.expires }); + } + } + }; + var Ji = require_dist(); + var Qi = {}; + var xl = { async loadQueryCompiler(e5) { + let { clientVersion: t, compilerWasm: r5 } = e5; + if (r5 === void 0) throw new Ji.PrismaClientInitializationError("WASM query compiler was unexpectedly `undefined`", t); + let n3; + return e5.activeProvider === void 0 || Qi[e5.activeProvider] === void 0 ? (n3 = (async () => { + let i5 = await r5.getRuntime(), o3 = await r5.getQueryCompilerWasmModule(); + if (o3 == null) throw new Ji.PrismaClientInitializationError("The loaded wasm module was unexpectedly `undefined` or `null` once loaded", t); + let s2 = { [r5.importName]: i5 }, a5 = new WebAssembly.Instance(o3, s2), u = a5.exports.__wbindgen_start; + return i5.__wbg_set_wasm(a5.exports), u(), i5.QueryCompiler; + })(), e5.activeProvider !== void 0 && (Qi[e5.activeProvider] = n3)) : n3 = Qi[e5.activeProvider], await n3; + } }; + var dm = "P2038"; + var Ve = K2("prisma:client:clientEngine"); + var Tl = globalThis; + Tl.PRISMA_WASM_PANIC_REGISTRY = { set_message(e5) { + throw new ne.PrismaClientRustPanicError(e5, mn); + } }; + var yr = class { + static { + __name(this, "yr"); + } + name = "ClientEngine"; + #e; + #t = { type: "disconnected" }; + #r; + #i; + #o; + #s; + config; + datamodel; + logEmitter; + logQueries; + logLevel; + tracingHelper; + #a; + constructor(t, r5) { + if (t.accelerateUrl !== void 0) this.#i = { remote: true, accelerateUrl: t.accelerateUrl }; + else if (t.adapter) this.#i = { remote: false, driverAdapterFactory: t.adapter }, Ve("Using driver adapter: %O", t.adapter); + else throw new ne.PrismaClientInitializationError("PrismaClient requires a driver adapter to connect to your database, but none was provided. Pass one to the PrismaClient constructor, e.g. `new PrismaClient({ adapter })`. Learn more: https://pris.ly/d/driver-adapters", t.clientVersion, dm); + this.#r = r5 ?? xl, this.config = t, this.logQueries = t.logQueries ?? false, this.logLevel = t.logLevel ?? "error", this.logEmitter = t.logEmitter, this.datamodel = t.inlineSchema, this.tracingHelper = t.tracingHelper, this.#o = t.queryPlanCacheMaxSize === 0 ? void 0 : new gn(t.queryPlanCacheMaxSize), this.#s = mr.deserialize(t.parameterizationSchema, (n3) => { + if (!Object.hasOwn(t.runtimeDataModel.enums, n3)) return; + let i5 = {}; + for (let o3 of t.runtimeDataModel.enums[n3].values) i5[o3.name] = o3.dbName ?? o3.name; + return i5; + }), t.enableDebugLogs && (this.logLevel = "debug"), this.logQueries && (this.#a = (n3) => { + this.logEmitter.emit("query", { ...n3, params: Se(n3.params), target: "ClientEngine" }); + }); + } + async #n() { + switch (this.#t.type) { + case "disconnected": { + let t = this.tracingHelper.runInChildSpan("connect", async () => { + let r5, n3; + try { + r5 = await this.#u(), n3 = await this.#l(r5); + } catch (o3) { + throw this.#t = { type: "disconnected" }, n3?.free(), await r5?.disconnect(), o3; + } + let i5 = { executor: r5, queryCompiler: n3 }; + return this.#t = { type: "connected", engine: i5 }, i5; + }); + return this.#t = { type: "connecting", promise: t }, await t; + } + case "connecting": + return await this.#t.promise; + case "connected": + return this.#t.engine; + case "disconnecting": + return await this.#t.promise, await this.#n(); + } + } + async #u() { + return this.#i.remote ? new bn({ clientVersion: this.config.clientVersion, accelerateUrl: this.#i.accelerateUrl, logEmitter: this.logEmitter, logLevel: this.logLevel, logQueries: this.logQueries, tracingHelper: this.tracingHelper, sqlCommenters: this.config.sqlCommenters }) : await fn.connect({ driverAdapterFactory: this.#i.driverAdapterFactory, tracingHelper: this.tracingHelper, transactionOptions: { ...this.config.transactionOptions, isolationLevel: this.#g(this.config.transactionOptions.isolationLevel) }, onQuery: this.#a, provider: this.config.activeProvider, sqlCommenters: this.config.sqlCommenters }); + } + async #l(t) { + let r5 = this.#e; + r5 === void 0 && (r5 = await this.#r.loadQueryCompiler(this.config), this.#e = r5); + let { provider: n3, connectionInfo: i5 } = await t.getConnectionInfo(); + try { + return this.#m(() => new r5({ datamodel: this.datamodel, provider: n3, connectionInfo: i5 }), void 0, false); + } catch (o3) { + throw this.#p(o3); + } + } + #p(t) { + if (t instanceof ne.PrismaClientRustPanicError) return t; + try { + let r5 = JSON.parse(t.message); + return new ne.PrismaClientInitializationError(r5.message, this.config.clientVersion, r5.error_code); + } catch { + return t; + } + } + #c(t, r5) { + if (t instanceof ne.PrismaClientInitializationError) return t; + if (t.code === "GenericFailure" && t.message?.startsWith("PANIC:")) return new ne.PrismaClientRustPanicError(bl(this, t.message, r5), this.config.clientVersion); + if (t instanceof X) return new ne.PrismaClientKnownRequestError(t.message, { code: t.code, meta: t.meta, clientVersion: this.config.clientVersion }); + try { + let n3 = JSON.parse(t); + return new ne.PrismaClientUnknownRequestError(`${n3.message} +${n3.backtrace}`, { clientVersion: this.config.clientVersion }); + } catch { + return t; + } + } + #d(t) { + return t instanceof ne.PrismaClientRustPanicError ? t : typeof t.message == "string" && typeof t.code == "string" ? new ne.PrismaClientKnownRequestError(t.message, { code: t.code, meta: t.meta, clientVersion: this.config.clientVersion }) : typeof t.message == "string" ? new ne.PrismaClientUnknownRequestError(t.message, { clientVersion: this.config.clientVersion }) : t; + } + #m(t, r5, n3 = true) { + let i5 = Tl.PRISMA_WASM_PANIC_REGISTRY.set_message, o3; + global.PRISMA_WASM_PANIC_REGISTRY.set_message = (s2) => { + o3 = s2; + }; + try { + return t(); + } finally { + if (global.PRISMA_WASM_PANIC_REGISTRY.set_message = i5, o3) throw this.#e = void 0, n3 && this.stop().catch((s2) => Ve("failed to disconnect:", s2)), new ne.PrismaClientRustPanicError(bl(this, o3, r5), this.config.clientVersion); + } + } + onBeforeExit() { + throw new Error('"beforeExit" hook is not applicable to the client engine, it is only relevant and implemented for the binary engine. Please add your event listener to the `process` object directly instead.'); + } + async start() { + await this.#n(); + } + async stop() { + switch (this.#t.type) { + case "disconnected": + return; + case "connecting": + return await this.#t.promise, await this.stop(); + case "connected": { + let t = this.#t.engine, r5 = this.tracingHelper.runInChildSpan("disconnect", async () => { + try { + await t.executor.disconnect(), t.queryCompiler.free(); + } finally { + this.#t = { type: "disconnected" }; + } + }); + return this.#t = { type: "disconnecting", promise: r5 }, await r5; + } + case "disconnecting": + return await this.#t.promise; + } + } + version() { + return "unknown"; + } + async transaction(t, r5, n3) { + let i5, { executor: o3 } = await this.#n(); + try { + if (t === "start") { + let s2 = n3; + i5 = await o3.startTransaction({ ...s2, isolationLevel: this.#g(s2.isolationLevel) }); + } else if (t === "commit") { + let s2 = n3; + await o3.commitTransaction(s2); + } else if (t === "rollback") { + let s2 = n3; + await o3.rollbackTransaction(s2); + } else $e(t, "Invalid transaction action."); + } catch (s2) { + throw this.#c(s2); + } + return i5 ? { id: i5.id, payload: void 0 } : void 0; + } + async request(t, { interactiveTransaction: r5, customDataProxyFetch: n3 }) { + Ve("sending request"); + let { executor: i5, queryCompiler: o3 } = await this.#n().catch((m3) => { + throw this.#c(m3, JSON.stringify(t)); + }), s2, a5 = {}, u = t.query; + if (Pl(t)) s2 = El(t); + else { + let { parameterizedQuery: m3, placeholderValues: P } = Vi(t, this.#s), T2 = JSON.stringify(m3); + a5 = P, u = m3.query; + let S = t.action !== "createMany" && t.action !== "createManyAndReturn", I = S ? this.#o?.getSingle(T2) : void 0; + I ? (Ve("query plan cache hit"), s2 = I) : (Ve("query plan cache miss"), s2 = this.#f(m3, T2, o3), S && this.#o?.setSingle(T2, s2)); + } + try { + Ve("query plan created", s2); + let m3 = await i5.execute({ plan: s2, model: t.modelName, operation: t.action, placeholderValues: a5, transaction: r5, batchIndex: void 0, customFetch: n3?.(globalThis.fetch), queryInfo: { type: "single", modelName: t.modelName, action: t.action, query: u } }); + return Ve("query plan executed"), { data: { [t.action]: m3 } }; + } catch (m3) { + throw this.#c(m3, JSON.stringify(t)); + } + } + async requestBatch(t, { transaction: r5, customDataProxyFetch: n3 }) { + if (t.length === 0) return []; + let i5 = t[0].action, o3 = t[0].modelName, s2 = sl(t, r5), a5 = JSON.stringify(s2), { executor: u, queryCompiler: m3 } = await this.#n().catch((A) => { + throw this.#c(A, a5); + }), P = o3 === void 0, T2, S = {}, I = t.map((A) => A.query); + if (P) T2 = this.#y(t, a5, m3); + else { + let { parameterizedBatch: A, placeholderValues: M } = qi(s2, this.#s), L = JSON.stringify(A); + S = M, I = A.batch.map((E) => E.query); + let q3 = this.#o?.getBatch(L); + if (q3) Ve("batch query plan cache hit"), T2 = q3; + else { + Ve("batch query plan cache miss"); + try { + T2 = this.#y(A.batch, L, m3), this.#o?.setBatch(L, T2); + } catch (E) { + throw this.#d(E); + } + } + } + try { + let A; + switch (r5?.kind === "itx" && (A = r5.options), T2.type) { + case "multi": { + if (r5?.kind !== "itx") { + let E = r5?.options, D = { maxWait: E?.maxWait ?? this.config.transactionOptions.maxWait, timeout: E?.timeout ?? this.config.transactionOptions.timeout, isolationLevel: E?.isolationLevel ?? this.config.transactionOptions.isolationLevel }; + A = await this.transaction("start", {}, D); + } + let M = [], L = false, q3; + for (let [E, D] of T2.plans.entries()) try { + let H = await u.execute({ plan: D, placeholderValues: S, model: t[E].modelName, operation: t[E].action, batchIndex: E, transaction: A, customFetch: n3?.(globalThis.fetch), queryInfo: { type: "single", modelName: t[E].modelName, action: t[E].action, query: I[E] } }); + M.push({ data: { [t[E].action]: H } }); + } catch (H) { + if (q3 ??= r5?.kind !== "batch" && t.every((ce) => ce.action === "findUnique" || ce.action === "findUniqueOrThrow"), M.push(H), L = true, !q3) break; + } + return A !== void 0 && r5?.kind !== "itx" && (L ? await this.transaction("rollback", {}, A) : await this.transaction("commit", {}, A)), M; + } + case "compacted": { + if (!t.every((q3) => q3.action === i5 && q3.modelName === o3)) { + let q3 = t.map((D) => D.action).join(", "), E = t.map((D) => D.modelName).join(", "); + throw new Error(`Internal error: All queries in a compacted batch must have the same action and model name, but received actions: [${q3}] and model names: [${E}]. This indicates a bug in the client. Please report this issue to the Prisma team with your query details.`); + } + if (o3 === void 0) throw new Error("Internal error: A compacted batch cannot contain raw queries. This indicates a bug in the client. Please report this issue to the Prisma team with your query details."); + let M = await u.execute({ plan: T2.plan, placeholderValues: S, model: o3, operation: i5, batchIndex: void 0, transaction: A, customFetch: n3?.(globalThis.fetch), queryInfo: { type: "compacted", action: i5, modelName: o3, queries: I } }); + return Ws(M, T2, S).map((q3) => ({ data: { [i5]: q3 } })); + } + } + } catch (A) { + throw this.#c(A, a5); + } + } + async apiKey() { + let { executor: t } = await this.#n(); + return t.apiKey(); + } + #f(t, r5, n3) { + try { + return this.#m(() => this.#h({ queries: [t], execute: /* @__PURE__ */ __name(() => n3.compile(r5), "execute") })); + } catch (i5) { + throw this.#d(i5); + } + } + #y(t, r5, n3) { + if (t.every(Pl)) return { type: "multi", plans: t.map((i5) => El(i5)) }; + try { + return this.#m(() => this.#h({ queries: t, execute: /* @__PURE__ */ __name(() => n3.compileBatch(r5), "execute") })); + } catch (i5) { + throw this.#d(i5); + } + } + #g(t) { + switch (t) { + case void 0: + return; + case "ReadUncommitted": + return "READ UNCOMMITTED"; + case "ReadCommitted": + return "READ COMMITTED"; + case "RepeatableRead": + return "REPEATABLE READ"; + case "Serializable": + return "SERIALIZABLE"; + case "Snapshot": + return "SNAPSHOT"; + default: + throw new ne.PrismaClientKnownRequestError(`Inconsistent column data: Conversion failed: Invalid isolation level \`${t}\``, { code: "P2023", clientVersion: this.config.clientVersion, meta: { providedIsolationLevel: t } }); + } + } + #h({ queries: t, execute: r5 }) { + return this.tracingHelper.runInChildSpan({ name: "compile", attributes: { models: t.map((n3) => n3.modelName).filter((n3) => n3 !== void 0), actions: t.map((n3) => n3.action) } }, r5); + } + }; + function bl(e5, t, r5) { + return pl({ binaryTarget: void 0, title: t, version: e5.config.clientVersion, engineVersion: "unknown", database: e5.config.activeProvider, query: r5 }); + } + __name(bl, "bl"); + function Pl(e5) { + return e5.action === "queryRaw" || e5.action === "executeRaw"; + } + __name(Pl, "Pl"); + function El(e5) { + let t = e5.query.arguments.query, { args: r5, argTypes: n3 } = il(e5.query.arguments.parameters); + return { type: e5.action === "queryRaw" ? "query" : "execute", args: { type: "rawSql", sql: t, args: r5, argTypes: n3 } }; + } + __name(El, "El"); + function vl(e5) { + return new yr(e5); + } + __name(vl, "vl"); + var Sl = /* @__PURE__ */ __name((e5) => ({ command: e5 }), "Sl"); + var Nl = require_dist(); + var Al = /* @__PURE__ */ __name((e5) => e5.strings.reduce((t, r5, n3) => `${t}@P${n3}${r5}`), "Al"); + var Pn = require_dist(); + function It(e5, t) { + try { + return Rl(e5, "fast", t); + } catch (r5) { + if (r5 instanceof TypeError) return Rl(e5, "slow", t); + throw r5; + } + } + __name(It, "It"); + function Rl(e5, t, r5) { + return JSON.stringify(e5.map((n3) => Il(n3, t, r5))); + } + __name(Rl, "Rl"); + function Il(e5, t, r5) { + if (Array.isArray(e5)) return e5.map((n3) => Il(n3, t, r5)); + if (typeof e5 == "bigint") return { prisma__type: "bigint", prisma__value: e5.toString() }; + if (ct(e5)) { + if (!pt(e5)) throw new Pn.PrismaClientValidationError("Provided Date object is invalid", { clientVersion: r5 }); + return { prisma__type: "date", prisma__value: e5.toJSON() }; + } + if (Pn.Decimal.isDecimal(e5)) return { prisma__type: "decimal", prisma__value: e5.toJSON() }; + if (Buffer.isBuffer(e5)) return { prisma__type: "bytes", prisma__value: e5.toString("base64") }; + if (mm(e5)) return { prisma__type: "bytes", prisma__value: Buffer.from(e5).toString("base64") }; + if (ArrayBuffer.isView(e5)) { + let { buffer: n3, byteOffset: i5, byteLength: o3 } = e5; + return { prisma__type: "bytes", prisma__value: Buffer.from(n3, i5, o3).toString("base64") }; + } + return typeof e5 == "object" && t === "slow" ? kl(e5) : e5; + } + __name(Il, "Il"); + function mm(e5) { + return e5 instanceof ArrayBuffer || e5 instanceof SharedArrayBuffer ? true : typeof e5 == "object" && e5 !== null ? e5[Symbol.toStringTag] === "ArrayBuffer" || e5[Symbol.toStringTag] === "SharedArrayBuffer" : false; + } + __name(mm, "mm"); + function kl(e5) { + if (typeof e5 != "object" || e5 === null) return e5; + if (typeof e5.toJSON == "function") return e5.toJSON(); + if (Array.isArray(e5)) return e5.map(Cl); + let t = {}; + for (let r5 of Object.keys(e5)) t[r5] = Cl(e5[r5]); + return t; + } + __name(kl, "kl"); + function Cl(e5) { + return typeof e5 == "bigint" ? e5.toString() : kl(e5); + } + __name(Cl, "Cl"); + var fm = /^(\s*alter\s)/i; + var Ol = K2("prisma:client"); + function Gi(e5, t, r5, n3) { + if (!(e5 !== "postgresql" && e5 !== "cockroachdb") && r5.length > 0 && fm.exec(t)) throw new Error(`Running ALTER using ${n3} is not supported +Using the example below you can still execute your query with Prisma, but please note that it is vulnerable to SQL injection attacks and requires you to take care of input sanitization. + +Example: + await prisma.$executeRawUnsafe(\`ALTER USER prisma WITH PASSWORD '\${password}'\`) + +More Information: https://pris.ly/d/execute-raw +`); + } + __name(Gi, "Gi"); + var zi = /* @__PURE__ */ __name(({ clientMethod: e5, activeProvider: t, clientVersion: r5 }) => (n3) => { + let i5 = "", o3; + if (Ur(n3)) i5 = n3.sql, o3 = { values: It(n3.values, r5), __prismaRawParameters__: true }; + else if (Array.isArray(n3)) { + let [s2, ...a5] = n3; + i5 = s2, o3 = { values: It(a5 || [], r5), __prismaRawParameters__: true }; + } else switch (t) { + case "sqlite": + case "mysql": { + i5 = n3.sql, o3 = { values: It(n3.values, r5), __prismaRawParameters__: true }; + break; + } + case "cockroachdb": + case "postgresql": + case "postgres": { + i5 = n3.text, o3 = { values: It(n3.values, r5), __prismaRawParameters__: true }; + break; + } + case "sqlserver": { + i5 = Al(n3), o3 = { values: It(n3.values, r5), __prismaRawParameters__: true }; + break; + } + default: + throw new Error(`The ${t} provider does not support ${e5}`); + } + return o3?.values ? Ol(`prisma.${e5}(${i5}, ${o3.values})`) : Ol(`prisma.${e5}(${i5})`), { query: i5, parameters: o3 }; + }, "zi"); + var Dl = { requestArgsToMiddlewareArgs(e5) { + return [e5.strings, ...e5.values]; + }, middlewareArgsToRequestArgs(e5) { + let [t, ...r5] = e5; + return new Nl.Sql(t, r5); + } }; + var Ml = { requestArgsToMiddlewareArgs(e5) { + return [e5]; + }, middlewareArgsToRequestArgs(e5) { + return e5[0]; + } }; + function Hi(e5) { + return function(r5, n3) { + let i5, o3 = /* @__PURE__ */ __name((s2 = e5) => { + try { + return s2 === void 0 || s2?.kind === "itx" ? i5 ??= Fl(r5(s2)) : Fl(r5(s2)); + } catch (a5) { + return Promise.reject(a5); + } + }, "o"); + return { get spec() { + return n3; + }, then(s2, a5) { + return o3().then(s2, a5); + }, catch(s2) { + return o3().catch(s2); + }, finally(s2) { + return o3().finally(s2); + }, requestTransaction(s2) { + let a5 = o3(s2); + return a5.requestTransaction ? a5.requestTransaction(s2) : a5; + }, [Symbol.toStringTag]: "PrismaPromise" }; + }; + } + __name(Hi, "Hi"); + function Fl(e5) { + return typeof e5.then == "function" ? e5 : Promise.resolve(e5); + } + __name(Fl, "Fl"); + var _l = { name: "@prisma/instrumentation-contract", version: "7.10.1", description: "Shared types and utilities for Prisma instrumentation", main: "dist/index.js", module: "dist/index.mjs", types: "dist/index.d.ts", exports: { ".": { require: { types: "./dist/index.d.ts", default: "./dist/index.js" }, import: { types: "./dist/index.d.mts", default: "./dist/index.mjs" } } }, license: "Apache-2.0", homepage: "https://www.prisma.io", repository: { type: "git", url: "https://github.com/prisma/orm.git", directory: "packages/instrumentation-contract" }, bugs: "https://github.com/prisma/prisma/issues", scripts: { dev: "DEV=true tsx helpers/build.ts", build: "tsx helpers/build.ts", prepublishOnly: "pnpm run build", test: "vitest run" }, files: ["dist"], sideEffects: false, devDependencies: { "@opentelemetry/api": "1.9.0" }, peerDependencies: { "@opentelemetry/api": "^1.8" } }; + var ym = _l.version.split(".")[0]; + var hm = "PRISMA_INSTRUMENTATION"; + var wm = `V${ym}_PRISMA_INSTRUMENTATION`; + var $l = globalThis; + function Ll() { + let e5 = $l[wm]; + return e5?.helper ? e5.helper : $l[hm]?.helper; + } + __name(Ll, "Ll"); + var xm = { isEnabled() { + return false; + }, getTraceParent() { + return "00-10-10-00"; + }, dispatchEngineSpans(e5, t, r5) { + for (let n3 of t) r5(n3); + }, getActiveContext() { + }, runInChildSpan(e5, t) { + return t(); + } }; + var Wi = class { + static { + __name(this, "Wi"); + } + isEnabled() { + return this.getTracingHelper().isEnabled(); + } + getTraceParent(t) { + return this.getTracingHelper().getTraceParent(t); + } + dispatchEngineSpans(t, r5, n3) { + return this.getTracingHelper().dispatchEngineSpans(t, r5, n3); + } + getActiveContext() { + return this.getTracingHelper().getActiveContext(); + } + runInChildSpan(t, r5) { + return this.getTracingHelper().runInChildSpan(t, r5); + } + getTracingHelper() { + return Ll() ?? xm; + } + }; + function Vl() { + return new Wi(); + } + __name(Vl, "Vl"); + function ql(e5, t = () => { + }) { + let r5, n3 = new Promise((i5) => r5 = i5); + return { then(i5) { + return --e5 === 0 && r5(t()), i5?.(n3); + } }; + } + __name(ql, "ql"); + function Ul(e5) { + return typeof e5 == "string" ? e5 : e5.reduce((t, r5) => { + let n3 = typeof r5 == "string" ? r5 : r5.level; + return n3 === "query" ? t : t && (r5 === "info" || t === "info") ? "info" : n3; + }, void 0); + } + __name(Ul, "Ul"); + var Ql = require_dist(); + function Zi(e5) { + if (e5.action !== "findUnique" && e5.action !== "findUniqueOrThrow") return; + let t = []; + return e5.modelName && t.push(e5.modelName), e5.query.arguments && t.push(Ki(e5.query.arguments)), t.push(Ki(e5.query.selection)), t.join(""); + } + __name(Zi, "Zi"); + function Ki(e5) { + return `(${Object.keys(e5).sort().map((r5) => { + let n3 = e5[r5]; + return typeof n3 == "object" && n3 !== null ? `(${r5} ${Ki(n3)})` : r5; + }).join(" ")})`; + } + __name(Ki, "Ki"); + var bm = { aggregate: false, aggregateRaw: false, createMany: true, createManyAndReturn: true, createOne: true, deleteMany: true, deleteOne: true, executeRaw: true, findFirst: false, findFirstOrThrow: false, findMany: false, findRaw: false, findUnique: false, findUniqueOrThrow: false, groupBy: false, queryRaw: false, runCommandRaw: true, updateMany: true, updateManyAndReturn: true, updateOne: true, upsertOne: true }; + function Xi(e5) { + return bm[e5]; + } + __name(Xi, "Xi"); + var En = class { + static { + __name(this, "En"); + } + constructor(t) { + this.options = t; + this.batches = {}; + } + batches; + tickActive = false; + request(t) { + let r5 = this.options.batchBy(t); + return r5 ? (this.batches[r5] || (this.batches[r5] = [], this.tickActive || (this.tickActive = true, process.nextTick(() => { + this.dispatchBatches(), this.tickActive = false; + }))), new Promise((n3, i5) => { + this.batches[r5].push({ request: t, resolve: n3, reject: i5 }); + })) : this.options.singleLoader(t); + } + dispatchBatches() { + for (let t in this.batches) { + let r5 = this.batches[t]; + delete this.batches[t], r5.length === 1 ? this.options.singleLoader(r5[0].request).then((n3) => { + n3 instanceof Error ? r5[0].reject(n3) : r5[0].resolve(n3); + }).catch((n3) => { + r5[0].reject(n3); + }) : (r5.sort((n3, i5) => this.options.batchOrder(n3.request, i5.request)), this.options.batchLoader(r5.map((n3) => n3.request)).then((n3) => { + if (n3 instanceof Error) for (let i5 = 0; i5 < r5.length; i5++) r5[i5].reject(n3); + else for (let i5 = 0; i5 < r5.length; i5++) { + let o3 = n3[i5]; + o3 instanceof Error ? r5[i5].reject(o3) : r5[i5].resolve(o3); + } + }).catch((n3) => { + for (let i5 = 0; i5 < r5.length; i5++) r5[i5].reject(n3); + })); + } + } + get [Symbol.toStringTag]() { + return "DataLoader"; + } + }; + var jl = require_dist(); + function st(e5, t) { + if (t === null) return t; + switch (e5) { + case "bigint": + return BigInt(t); + case "bytes": + return new Uint8Array(Buffer.from(t, "base64")); + case "decimal": + return new jl.Decimal(t); + case "datetime": + case "date": + return new Date(t); + case "time": + return /* @__PURE__ */ new Date(`1970-01-01T${t}Z`); + case "bigint-array": + return t.map((r5) => st("bigint", r5)); + case "bytes-array": + return t.map((r5) => st("bytes", r5)); + case "decimal-array": + return t.map((r5) => st("decimal", r5)); + case "datetime-array": + return t.map((r5) => st("datetime", r5)); + case "date-array": + return t.map((r5) => st("date", r5)); + case "time-array": + return t.map((r5) => st("time", r5)); + default: + return t; + } + } + __name(st, "st"); + function Tn(e5) { + let t = [], r5 = Pm(e5); + for (let n3 = 0; n3 < e5.rows.length; n3++) { + let i5 = e5.rows[n3], o3 = { ...r5 }; + for (let s2 = 0; s2 < i5.length; s2++) o3[e5.columns[s2]] = st(e5.types[s2], i5[s2]); + t.push(o3); + } + return t; + } + __name(Tn, "Tn"); + function Pm(e5) { + let t = {}; + for (let r5 = 0; r5 < e5.columns.length; r5++) t[e5.columns[r5]] = null; + return t; + } + __name(Pm, "Pm"); + function Bl(e5, t) { + let { schema: r5, name: n3 } = Em(t), i5 = Object.entries(e5.models).filter(([o3, s2]) => (s2.dbName ?? o3) === n3); + if (i5.length <= 1) return i5[0]?.[0]; + if (r5 !== void 0) { + let o3 = i5.filter(([, s2]) => s2.schema === r5); + if (o3.length === 1) return o3[0][0]; + } + } + __name(Bl, "Bl"); + function Em(e5) { + let t = e5.lastIndexOf("."); + return t === -1 ? { schema: void 0, name: e5 } : { schema: e5.slice(0, t), name: e5.slice(t + 1) }; + } + __name(Em, "Em"); + var Tm = K2("prisma:client:request_handler"); + var vn = class { + static { + __name(this, "vn"); + } + client; + dataloader; + logEmitter; + constructor(t, r5) { + this.logEmitter = r5, this.client = t, this.dataloader = new En({ batchLoader: _s5(async ({ requests: n3, customDataProxyFetch: i5 }) => { + let { transaction: o3, otelParentCtx: s2 } = n3[0], a5 = n3.map((T2) => T2.protocolQuery), u = this.client._tracingHelper.getTraceParent(s2), m3 = n3.some((T2) => Xi(T2.protocolQuery.action)); + return (await this.client._engine.requestBatch(a5, { traceparent: u, transaction: vm(o3), containsWrite: m3, customDataProxyFetch: i5 })).map((T2, S) => { + if (T2 instanceof Error) return T2; + try { + return this.mapQueryEngineResult(n3[S], T2); + } catch (I) { + return I; + } + }); + }), singleLoader: /* @__PURE__ */ __name(async (n3) => { + let i5 = n3.transaction?.kind === "itx" ? Jl(n3.transaction) : void 0, o3 = await this.client._engine.request(n3.protocolQuery, { traceparent: this.client._tracingHelper.getTraceParent(), interactiveTransaction: i5, isWrite: Xi(n3.protocolQuery.action), customDataProxyFetch: n3.customDataProxyFetch }); + return this.mapQueryEngineResult(n3, o3); + }, "singleLoader"), batchBy: /* @__PURE__ */ __name((n3) => { + if (n3.transaction?.kind === "itx") { + let i5 = Zi(n3.protocolQuery); + return `itx-${n3.transaction.id}${i5 ? `-${i5}` : ""}`; + } + return n3.transaction?.id ? `transaction-${n3.transaction.id}` : Zi(n3.protocolQuery); + }, "batchBy"), batchOrder(n3, i5) { + return n3.transaction?.kind === "batch" && i5.transaction?.kind === "batch" ? n3.transaction.index - i5.transaction.index : 0; + } }); + } + async request(t) { + try { + return await this.dataloader.request(t); + } catch (r5) { + let { clientMethod: n3, callsite: i5, transaction: o3, args: s2, modelName: a5 } = t; + this.handleAndLogRequestError({ error: r5, clientMethod: n3, callsite: i5, transaction: o3, args: s2, modelName: a5, globalOmit: t.globalOmit }); + } + } + mapQueryEngineResult({ dataPath: t, unpacker: r5 }, n3) { + let i5 = n3?.data, o3 = this.unpack(i5, t, r5); + return process.env.PRISMA_CLIENT_GET_TIME ? { data: o3 } : o3; + } + handleAndLogRequestError(t) { + try { + this.handleRequestError(t); + } catch (r5) { + throw this.logEmitter && this.logEmitter.emit("error", { message: r5.message, target: t.clientMethod, timestamp: /* @__PURE__ */ new Date() }), r5; + } + } + handleRequestError({ error: t, clientMethod: r5, callsite: n3, transaction: i5, args: o3, modelName: s2, globalOmit: a5 }) { + if (Tm(t), Sm(t, i5)) throw t; + if (t instanceof _.PrismaClientKnownRequestError && Am(t)) { + let m3 = Gl(t.meta); + Fr({ args: o3, errors: [m3], callsite: n3, errorFormat: this.client._errorFormat, originalMethod: r5, clientVersion: this.client._clientVersion, globalOmit: a5 }); + } + let u = t.message; + if (n3 && (u = Rr({ callsite: n3, originalMethod: r5, isPanic: t.isPanic, showColors: this.client._errorFormat === "pretty", message: u })), u = this.sanitizeMessage(u), t.code) { + let m3 = this.resolveErrorMeta(t.meta, t.code, s2); + throw new _.PrismaClientKnownRequestError(u, { code: t.code, clientVersion: this.client._clientVersion, meta: m3, batchRequestIdx: t.batchRequestIdx }); + } else { + if (t.isPanic) throw new _.PrismaClientRustPanicError(u, this.client._clientVersion); + if (t instanceof _.PrismaClientUnknownRequestError) throw new _.PrismaClientUnknownRequestError(u, { clientVersion: this.client._clientVersion, batchRequestIdx: t.batchRequestIdx }); + if (t instanceof _.PrismaClientInitializationError) throw new _.PrismaClientInitializationError(u, this.client._clientVersion); + if (t instanceof _.PrismaClientRustPanicError) throw new _.PrismaClientRustPanicError(u, this.client._clientVersion); + } + throw t.clientVersion = this.client._clientVersion, t; + } + resolveErrorMeta(t, r5, n3) { + if (r5 !== "P2002" || typeof t?.table != "string") return n3 ? { modelName: n3, ...t } : t; + let i5 = { ...t }; + delete i5.table; + let o3 = Bl(this.client._runtimeDataModel, t.table) ?? (typeof i5.modelName == "string" ? i5.modelName : n3); + return o3 !== void 0 ? { ...i5, modelName: o3 } : i5; + } + sanitizeMessage(t) { + return this.client._errorFormat && this.client._errorFormat !== "pretty" ? ut(t) : t; + } + unpack(t, r5, n3) { + if (!t || (t.data && (t = t.data), !t)) return t; + let i5 = Object.keys(t)[0], o3 = Object.values(t)[0], s2 = Rm(r5), a5 = Wn(o3, s2), u = i5 === "queryRaw" ? Tn(a5) : Ae(a5); + return n3 ? n3(u) : u; + } + get [Symbol.toStringTag]() { + return "RequestHandler"; + } + }; + function vm(e5) { + if (e5) { + if (e5.kind === "batch") return { kind: "batch", options: { isolationLevel: e5.isolationLevel, maxWait: e5.maxWait, timeout: e5.timeout } }; + if (e5.kind === "itx") return { kind: "itx", options: Jl(e5) }; + $e(e5, "Unknown transaction kind"); + } + } + __name(vm, "vm"); + function Jl(e5) { + return { id: e5.id, payload: e5.payload }; + } + __name(Jl, "Jl"); + function Sm(e5, t) { + return (0, Ql.hasBatchIndex)(e5) && t?.kind === "batch" && e5.batchRequestIdx !== t.index; + } + __name(Sm, "Sm"); + function Am(e5) { + return e5.code === "P2009" || e5.code === "P2012"; + } + __name(Am, "Am"); + function Gl(e5) { + if (e5.kind === "Union") return { kind: "Union", errors: e5.errors.map(Gl) }; + if (Array.isArray(e5.selectionPath)) { + let [, ...t] = e5.selectionPath; + return { ...e5, selectionPath: t }; + } + return e5; + } + __name(Gl, "Gl"); + function Rm(e5) { + let t = []; + for (let r5 = 1; r5 < e5.length; r5 += 2) t.push(e5[r5]); + return t; + } + __name(Rm, "Rm"); + var Yi = mn; + var Zl = Pe(qn()); + var j5 = class extends Error { + static { + __name(this, "j"); + } + constructor(t) { + super(t + ` +Read more at https://pris.ly/d/client-constructor`), this.name = "PrismaClientConstructorValidationError"; + } + get [Symbol.toStringTag]() { + return "PrismaClientConstructorValidationError"; + } + }; + Bt(j5, "PrismaClientConstructorValidationError"); + var zl = ["errorFormat", "adapter", "accelerateUrl", "log", "transactionOptions", "omit", "comments", "queryPlanCacheMaxSize", "__internal"]; + var Hl = ["pretty", "colorless", "minimal"]; + var Wl = ["info", "query", "warn", "error"]; + var Cm = { adapter: /* @__PURE__ */ __name(() => { + }, "adapter"), accelerateUrl: /* @__PURE__ */ __name((e5) => { + if (e5 !== void 0) { + if (typeof e5 != "string") throw new j5(`Invalid value ${JSON.stringify(e5)} for "accelerateUrl" provided to PrismaClient constructor.`); + if (e5.trim().length === 0) throw new j5('"accelerateUrl" provided to PrismaClient constructor must be a non-empty string.'); + } + }, "accelerateUrl"), errorFormat: /* @__PURE__ */ __name((e5) => { + if (e5) { + if (typeof e5 != "string") throw new j5(`Invalid value ${JSON.stringify(e5)} for "errorFormat" provided to PrismaClient constructor.`); + if (!Hl.includes(e5)) { + let t = hr(e5, Hl); + throw new j5(`Invalid errorFormat ${e5} provided to PrismaClient constructor.${t}`); + } + } + }, "errorFormat"), log: /* @__PURE__ */ __name((e5) => { + if (!e5) return; + if (!Array.isArray(e5)) throw new j5(`Invalid value ${JSON.stringify(e5)} for "log" provided to PrismaClient constructor.`); + function t(r5) { + if (typeof r5 == "string" && !Wl.includes(r5)) { + let n3 = hr(r5, Wl); + throw new j5(`Invalid log level "${r5}" provided to PrismaClient constructor.${n3}`); + } + } + __name(t, "t"); + for (let r5 of e5) { + t(r5); + let n3 = { level: t, emit: /* @__PURE__ */ __name((i5) => { + let o3 = ["stdout", "event"]; + if (!o3.includes(i5)) { + let s2 = hr(i5, o3); + throw new j5(`Invalid value ${JSON.stringify(i5)} for "emit" in logLevel provided to PrismaClient constructor.${s2}`); + } + }, "emit") }; + if (r5 && typeof r5 == "object") for (let [i5, o3] of Object.entries(r5)) if (n3[i5]) n3[i5](o3); + else throw new j5(`Invalid property ${i5} for "log" provided to PrismaClient constructor`); + } + }, "log"), transactionOptions: /* @__PURE__ */ __name((e5) => { + if (!e5) return; + let t = e5.maxWait; + if (t != null && t <= 0) throw new j5(`Invalid value ${t} for maxWait in "transactionOptions" provided to PrismaClient constructor. maxWait needs to be greater than 0`); + let r5 = e5.timeout; + if (r5 != null && r5 <= 0) throw new j5(`Invalid value ${r5} for timeout in "transactionOptions" provided to PrismaClient constructor. timeout needs to be greater than 0`); + }, "transactionOptions"), omit: /* @__PURE__ */ __name((e5, t) => { + if (typeof e5 != "object") throw new j5('"omit" option is expected to be an object.'); + if (e5 === null) throw new j5('"omit" option can not be `null`'); + let r5 = []; + for (let [n3, i5] of Object.entries(e5)) { + let o3 = Om(n3, t.runtimeDataModel); + if (!o3) { + r5.push({ kind: "UnknownModel", modelKey: n3 }); + continue; + } + for (let [s2, a5] of Object.entries(i5)) { + let u = o3.fields.find((m3) => m3.name === s2); + if (!u) { + r5.push({ kind: "UnknownField", modelKey: n3, fieldName: s2 }); + continue; + } + if (u.relationName) { + r5.push({ kind: "RelationInOmit", modelKey: n3, fieldName: s2 }); + continue; + } + typeof a5 != "boolean" && r5.push({ kind: "InvalidFieldValue", modelKey: n3, fieldName: s2 }); + } + } + if (r5.length > 0) throw new j5(Nm(e5, r5)); + }, "omit"), queryPlanCacheMaxSize: /* @__PURE__ */ __name((e5) => { + if (e5 !== void 0) { + if (typeof e5 != "number") throw new j5(`Invalid value ${JSON.stringify(e5)} for "queryPlanCacheMaxSize" provided to PrismaClient constructor. Expected a number.`); + if (!Number.isInteger(e5)) throw new j5(`Invalid value ${e5} for "queryPlanCacheMaxSize" provided to PrismaClient constructor. Expected an integer.`); + if (e5 < 0) throw new j5(`Invalid value ${e5} for "queryPlanCacheMaxSize" provided to PrismaClient constructor. Cache size needs to be greater or equal to 0.`); + } + }, "queryPlanCacheMaxSize"), comments: /* @__PURE__ */ __name((e5) => { + if (e5 !== void 0) { + if (!Array.isArray(e5)) throw new j5(`Invalid value ${JSON.stringify(e5)} for "comments" provided to PrismaClient constructor. Expected an array of SQL commenter plugins.`); + for (let t = 0; t < e5.length; t++) if (typeof e5[t] != "function") throw new j5(`Invalid value at index ${t} for "comments" provided to PrismaClient constructor. Each plugin must be a function.`); + } + }, "comments"), __internal: /* @__PURE__ */ __name((e5) => { + if (!e5) return; + let t = ["debug", "engine", "configOverride"]; + if (typeof e5 != "object") throw new j5(`Invalid value ${JSON.stringify(e5)} for "__internal" to PrismaClient constructor`); + for (let [r5] of Object.entries(e5)) if (!t.includes(r5)) { + let n3 = hr(r5, t); + throw new j5(`Invalid property ${JSON.stringify(r5)} for "__internal" provided to PrismaClient constructor.${n3}`); + } + }, "__internal") }; + function Im(e5) { + let t = e5.adapter !== void 0, r5 = e5.accelerateUrl !== void 0; + if (t && r5) throw new j5('The "adapter" and "accelerateUrl" options are mutually exclusive. Please provide only one of them.'); + if (!t && !r5) throw new j5(`PrismaClient requires a driver adapter to connect to your database, but none was provided. + +Pass a driver adapter to the PrismaClient constructor, for example: + + import { PrismaPg } from '@prisma/adapter-pg' + import { PrismaClient } from './generated/prisma/client' + + const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL }) + const prisma = new PrismaClient({ adapter }) + +Learn more about driver adapters: https://pris.ly/d/driver-adapters + +If you use Prisma Accelerate instead of connecting to your database directly, pass \`accelerateUrl\` to the PrismaClient constructor instead of \`adapter\`.`); + } + __name(Im, "Im"); + function Xl(e5, t) { + for (let [r5, n3] of Object.entries(e5)) { + if (!zl.includes(r5)) { + let i5 = hr(r5, zl); + throw new j5(`Unknown property ${r5} provided to PrismaClient constructor.${i5}`); + } + Cm[r5](n3, t); + } + Im(e5); + } + __name(Xl, "Xl"); + function hr(e5, t) { + if (t.length === 0 || typeof e5 != "string") return ""; + let r5 = km(e5, t); + return r5 ? ` Did you mean "${r5}"?` : ""; + } + __name(hr, "hr"); + function km(e5, t) { + if (t.length === 0) return null; + let r5 = t.map((i5) => ({ value: i5, distance: (0, Zl.default)(e5, i5) })); + r5.sort((i5, o3) => i5.distance < o3.distance ? -1 : 1); + let n3 = r5[0]; + return n3.distance < 3 ? n3.value : null; + } + __name(km, "km"); + function Om(e5, t) { + return Kl(t.models, e5) ?? Kl(t.types, e5); + } + __name(Om, "Om"); + function Kl(e5, t) { + let r5 = Object.keys(e5).find((n3) => qe(n3) === t); + if (r5) return e5[r5]; + } + __name(Kl, "Kl"); + function Nm(e5, t) { + let r5 = bt(e5); + for (let o3 of t) switch (o3.kind) { + case "UnknownModel": + r5.arguments.getField(o3.modelKey)?.markAsError(), r5.addErrorMessage(() => `Unknown model name: ${o3.modelKey}.`); + break; + case "UnknownField": + r5.arguments.getDeepField([o3.modelKey, o3.fieldName])?.markAsError(), r5.addErrorMessage(() => `Model "${o3.modelKey}" does not have a field named "${o3.fieldName}".`); + break; + case "RelationInOmit": + r5.arguments.getDeepField([o3.modelKey, o3.fieldName])?.markAsError(), r5.addErrorMessage(() => 'Relations are already excluded by default and can not be specified in "omit".'); + break; + case "InvalidFieldValue": + r5.arguments.getDeepFieldValue([o3.modelKey, o3.fieldName])?.markAsError(), r5.addErrorMessage(() => "Omit field option value must be a boolean."); + break; + } + let { message: n3, args: i5 } = Mr(r5, "colorless"); + return `Error validating "omit" option: + +${i5} + +${n3}`; + } + __name(Nm, "Nm"); + var Yl = require_dist(); + function eu(e5) { + return e5.length === 0 ? Promise.resolve([]) : new Promise((t, r5) => { + let n3 = new Array(e5.length), i5 = null, o3 = false, s2 = 0, a5 = /* @__PURE__ */ __name(() => { + o3 || (s2++, s2 === e5.length && (o3 = true, i5 ? r5(i5) : t(n3))); + }, "a"), u = /* @__PURE__ */ __name((m3) => { + o3 || (o3 = true, r5(m3)); + }, "u"); + for (let m3 = 0; m3 < e5.length; m3++) e5[m3].then((P) => { + n3[m3] = P, a5(); + }, (P) => { + if (!(0, Yl.hasBatchIndex)(P)) { + u(P); + return; + } + P.batchRequestIdx === m3 ? u(P) : (i5 || (i5 = P), a5()); + }); + }); + } + __name(eu, "eu"); + var kt = K2("prisma:client"); + typeof globalThis == "object" && (globalThis.NODE_CLIENT = true); + var Dm = { requestArgsToMiddlewareArgs: /* @__PURE__ */ __name((e5) => e5, "requestArgsToMiddlewareArgs"), middlewareArgsToRequestArgs: /* @__PURE__ */ __name((e5) => e5, "middlewareArgsToRequestArgs") }; + var su = /* @__PURE__ */ Symbol.for("prisma.client.transaction.scope_context"); + function tu(e5) { + let r5 = e5[su]; + if (r5 === void 0) return { kind: "top-level" }; + if (Mm(r5)) return r5; + throw new Error("Internal error: inconsistent transaction scope context."); + } + __name(tu, "tu"); + function Mm(e5) { + if (typeof e5 != "object" || e5 === null) return false; + let t = e5; + return t.kind === "nested" && typeof t.txId == "string" && typeof t.scopeId == "string" && Fm(t.scopeState); + } + __name(Mm, "Mm"); + function Fm(e5) { + return typeof e5 != "object" || e5 === null ? false : Array.isArray(e5.stack); + } + __name(Fm, "Fm"); + function _m4() { + return typeof globalThis.crypto?.randomUUID == "function" ? globalThis.crypto.randomUUID() : `${Date.now()}-${Math.random().toString(16).slice(2)}`; + } + __name(_m4, "_m"); + var $m = { id: 0, nextId() { + return ++this.id; + } }; + function au(e5) { + class t { + static { + __name(this, "t"); + } + _originalClient = this; + _runtimeDataModel; + _requestHandler; + _connectionPromise; + _disconnectionPromise; + _engineConfig; + _accelerateEngineConfig; + _clientVersion; + _errorFormat; + _tracingHelper; + _previewFeatures; + _activeProvider; + _globalOmit; + _extensions; + _engine; + _appliedParent; + _createPrismaPromise = Hi(); + constructor(n3) { + if (!n3) throw new _.PrismaClientInitializationError(`PrismaClient was instantiated without any options. A driver adapter is required to connect to your database. + +Pass a driver adapter to the PrismaClient constructor, for example: + + import { PrismaPg } from '@prisma/adapter-pg' + import { PrismaClient } from './generated/prisma/client' + + const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL }) + const prisma = new PrismaClient({ adapter }) + +Learn more about driver adapters: https://pris.ly/d/driver-adapters + +If you use Prisma Accelerate instead of connecting to your database directly, pass \`accelerateUrl\` to the PrismaClient constructor instead of \`adapter\`.`, Yi); + e5 = n3.__internal?.configOverride?.(e5) ?? e5, Xl(n3, e5); + let i5 = new ou.EventEmitter().on("error", () => { + }); + this._extensions = Pt.empty(), this._previewFeatures = e5.previewFeatures, this._clientVersion = e5.clientVersion ?? Yi, this._activeProvider = e5.activeProvider, this._globalOmit = n3?.omit, this._tracingHelper = Vl(); + let o3; + if (n3.adapter) { + o3 = n3.adapter; + let s2 = e5.activeProvider === "postgresql" || e5.activeProvider === "cockroachdb" ? "postgres" : e5.activeProvider; + if (o3.provider !== s2) throw new _.PrismaClientInitializationError(`The Driver Adapter \`${o3.adapterName}\`, based on \`${o3.provider}\`, is not compatible with the provider \`${s2}\` specified in the Prisma schema.`, this._clientVersion); + } + try { + let s2 = n3 ?? {}, u = (s2.__internal ?? {}).debug === true; + if (u && K2.enable("prisma:client"), s2.errorFormat ? this._errorFormat = s2.errorFormat : process.env.NODE_ENV === "production" ? this._errorFormat = "minimal" : process.env.NO_COLOR ? this._errorFormat = "colorless" : this._errorFormat = "colorless", this._runtimeDataModel = e5.runtimeDataModel, this._engineConfig = { enableDebugLogs: u, logLevel: s2.log && Ul(s2.log), logQueries: s2.log && !!(typeof s2.log == "string" ? s2.log === "query" : s2.log.find((m3) => typeof m3 == "string" ? m3 === "query" : m3.level === "query")), compilerWasm: e5.compilerWasm, clientVersion: e5.clientVersion, previewFeatures: this._previewFeatures, activeProvider: e5.activeProvider, inlineSchema: e5.inlineSchema, tracingHelper: this._tracingHelper, transactionOptions: { maxWait: s2.transactionOptions?.maxWait ?? 2e3, timeout: s2.transactionOptions?.timeout ?? 5e3, isolationLevel: s2.transactionOptions?.isolationLevel }, logEmitter: i5, adapter: o3, accelerateUrl: s2.accelerateUrl, sqlCommenters: s2.comments, parameterizationSchema: e5.parameterizationSchema, runtimeDataModel: e5.runtimeDataModel, queryPlanCacheMaxSize: n3.queryPlanCacheMaxSize }, this._accelerateEngineConfig = Object.create(this._engineConfig), this._accelerateEngineConfig.accelerateUtils = { resolveDatasourceUrl: /* @__PURE__ */ __name(() => { + if (s2.accelerateUrl) return s2.accelerateUrl; + throw new _.PrismaClientInitializationError(`\`accelerateUrl\` is required when using \`@prisma/extension-accelerate\`: + +new PrismaClient({ + accelerateUrl: "prisma://...", +}).$extends(withAccelerate()) +`, e5.clientVersion); + }, "resolveDatasourceUrl") }, kt("clientVersion", e5.clientVersion), this._engine = vl(this._engineConfig), this._requestHandler = new vn(this, i5), s2.log) for (let m3 of s2.log) { + let P = typeof m3 == "string" ? m3 : m3.emit === "stdout" ? m3.level : null; + P && this.$on(P, (T2) => { + Ut.log(`${Ut.tags[P] ?? ""}`, T2.message || T2.query); + }); + } + } catch (s2) { + throw s2.clientVersion = this._clientVersion, s2; + } + return this._appliedParent = Yt(this); + } + get [Symbol.toStringTag]() { + return "PrismaClient"; + } + $on(n3, i5) { + return n3 === "beforeExit" ? this._engine.onBeforeExit(i5) : n3 && this._engineConfig.logEmitter.on(n3, i5), this; + } + $connect() { + try { + return this._engine.start(); + } catch (n3) { + throw n3.clientVersion = this._clientVersion, n3; + } + } + async $disconnect() { + try { + await this._engine.stop(); + } catch (n3) { + throw n3.clientVersion = this._clientVersion, n3; + } finally { + yo(); + } + } + $executeRawInternal(n3, i5, o3, s2) { + let a5 = this._activeProvider; + return this._request({ action: "executeRaw", args: o3, transaction: n3, clientMethod: i5, argsMapper: zi({ clientMethod: i5, activeProvider: a5, clientVersion: this._clientVersion }), callsite: je(this._errorFormat), dataPath: [], middlewareArgsMapper: s2 }); + } + $executeRaw(n3, ...i5) { + return this._createPrismaPromise((o3) => { + if (n3.raw !== void 0 || n3.sql !== void 0) { + let [s2, a5] = ru(n3, i5); + return Gi(this._activeProvider, s2.text, s2.values, Array.isArray(n3) ? "prisma.$executeRaw``" : "prisma.$executeRaw(sql``)"), this.$executeRawInternal(o3, "$executeRaw", s2, a5); + } + throw new _.PrismaClientValidationError("`$executeRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#executeraw\n", { clientVersion: this._clientVersion }); + }); + } + $executeRawUnsafe(n3, ...i5) { + return this._createPrismaPromise((o3) => (Gi(this._activeProvider, n3, i5, "prisma.$executeRawUnsafe(, [...values])"), this.$executeRawInternal(o3, "$executeRawUnsafe", [n3, ...i5]))); + } + $runCommandRaw(n3) { + if (e5.activeProvider !== "mongodb") throw new _.PrismaClientValidationError(`The ${e5.activeProvider} provider does not support $runCommandRaw. Use the mongodb provider.`, { clientVersion: this._clientVersion }); + return this._createPrismaPromise((i5) => this._request({ args: n3, clientMethod: "$runCommandRaw", dataPath: [], action: "runCommandRaw", argsMapper: Sl, callsite: je(this._errorFormat), transaction: i5 })); + } + async $queryRawInternal(n3, i5, o3, s2) { + let a5 = this._activeProvider; + return this._request({ action: "queryRaw", args: o3, transaction: n3, clientMethod: i5, argsMapper: zi({ clientMethod: i5, activeProvider: a5, clientVersion: this._clientVersion }), callsite: je(this._errorFormat), dataPath: [], middlewareArgsMapper: s2 }); + } + $queryRaw(n3, ...i5) { + return this._createPrismaPromise((o3) => { + if (n3.raw !== void 0 || n3.sql !== void 0) return this.$queryRawInternal(o3, "$queryRaw", ...ru(n3, i5)); + throw new _.PrismaClientValidationError("`$queryRaw` is a tag function, please use it like the following:\n```\nconst result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n```\n\nOr read our docs at https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access#queryraw\n", { clientVersion: this._clientVersion }); + }); + } + $queryRawTyped(n3) { + return this._createPrismaPromise((i5) => { + if (!this._hasPreviewFlag("typedSql")) throw new _.PrismaClientValidationError("`typedSql` preview feature must be enabled in order to access $queryRawTyped API", { clientVersion: this._clientVersion }); + return this.$queryRawInternal(i5, "$queryRawTyped", n3); + }); + } + $queryRawUnsafe(n3, ...i5) { + return this._createPrismaPromise((o3) => this.$queryRawInternal(o3, "$queryRawUnsafe", [n3, ...i5])); + } + _transactionWithArray({ promises: n3, options: i5 }) { + let o3 = $m.nextId(), s2 = ql(n3.length), a5 = n3.map((u, m3) => { + if (u?.[Symbol.toStringTag] !== "PrismaPromise") throw new Error("All elements of the array need to be Prisma Client promises. Hint: Please make sure you are not awaiting the Prisma client calls you intended to pass in the $transaction function."); + let P = i5?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel, T2 = { kind: "batch", id: o3, index: m3, isolationLevel: P, maxWait: i5?.maxWait ?? this._engineConfig.transactionOptions.maxWait, timeout: i5?.timeout ?? this._engineConfig.transactionOptions.timeout, lock: s2 }; + return u.requestTransaction?.(T2) ?? u; + }); + return eu(a5); + } + async _transactionWithCallback({ callback: n3, options: i5 = {} }) { + let o3 = tu(this), s2 = o3.kind === "nested", a5 = s2 ? o3.scopeState : { stack: [] }, u = a5.stack, m3 = _m4(); + if (s2 && u.at(-1) !== o3.scopeId) throw new Error("Concurrent nested transactions are not supported"); + u.push(m3); + let P = { traceparent: this._tracingHelper.getTraceParent() }, T2 = { maxWait: i5?.maxWait ?? this._engineConfig.transactionOptions.maxWait, timeout: i5?.timeout ?? this._engineConfig.transactionOptions.timeout, isolationLevel: i5?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel, newTxId: s2 ? o3.txId : void 0 }, S; + try { + S = await this._engine.transaction("start", P, T2); + } catch (A) { + throw u.at(-1) === m3 && u.pop(), A; + } + let I; + try { + let A = { kind: "itx", ...S }; + if (I = await n3(this._createItxClient(A, m3, a5)), s2) { + if (u.at(-1) !== m3) throw new Error("Nested transactions must be closed in reverse order of creation."); + } else if (u.length !== 1) throw new Error("Cannot close transaction while a nested transaction is still active."); + await this._engine.transaction("commit", P, S); + } catch (A) { + let L = u.at(-1) !== m3 ? Math.max(1, u.length) : 1; + for (let q3 = 0; q3 < L; q3++) await this._engine.transaction("rollback", P, S).catch((E) => { + kt("rollback attempt %d/%d failed: %O", q3 + 1, L, E); + }); + throw A; + } finally { + u.at(-1) === m3 ? u.pop() : u.length = 0; + } + return I; + } + _createItxClient(n3, i5, o3) { + let s2 = { kind: "nested", txId: n3.id, scopeId: i5, scopeState: o3 }; + return ve(Yt(ve(As(this), [ae("_appliedParent", () => this._appliedParent._createItxClient(n3, i5, o3)), ae("_createPrismaPromise", () => Hi(n3)), ae(su, () => s2)])), [Et(Os)]); + } + $transaction(n3, i5) { + let o3; + typeof n3 == "function" ? this._engineConfig.adapter?.adapterName === "@prisma/adapter-d1" ? o3 = /* @__PURE__ */ __name(() => { + throw new Error("Cloudflare D1 does not support interactive transactions. We recommend you to refactor your queries with that limitation in mind, and use batch transactions with `prisma.$transactions([])` where applicable."); + }, "o") : e5.activeProvider === "mongodb" && tu(this).kind === "nested" ? o3 = /* @__PURE__ */ __name(() => { + throw new _.PrismaClientValidationError(`The ${e5.activeProvider} provider does not support nested transactions`, { clientVersion: this._clientVersion }); + }, "o") : o3 = /* @__PURE__ */ __name(() => this._transactionWithCallback({ callback: n3, options: i5 }), "o") : o3 = /* @__PURE__ */ __name(() => this._transactionWithArray({ promises: n3, options: i5 }), "o"); + let s2 = { name: "transaction", attributes: { method: "$transaction" } }; + return this._tracingHelper.runInChildSpan(s2, o3); + } + _request(n3) { + n3.otelParentCtx = this._tracingHelper.getActiveContext(); + let i5 = n3.middlewareArgsMapper ?? Dm, o3 = { args: i5.requestArgsToMiddlewareArgs(n3.args), dataPath: n3.dataPath, runInTransaction: !!n3.transaction, action: n3.action, model: n3.model }, s2 = { operation: { name: "operation", attributes: { method: o3.action, model: o3.model, name: o3.model ? `${o3.model}.${o3.action}` : o3.action } } }, a5 = /* @__PURE__ */ __name(async (u) => { + let { runInTransaction: m3, args: P, ...T2 } = u, S = { ...n3, ...T2 }; + P && (S.args = i5.middlewareArgsToRequestArgs(P)), n3.transaction !== void 0 && m3 === false && delete S.transaction; + let I = await Fs(this, S); + if (!S.model) return I; + let A = qs({ dataPath: S.dataPath, modelName: S.model, args: S.args, runtimeDataModel: this._runtimeDataModel }); + return ks({ result: I, modelName: A.modelName, args: A.args, extensions: this._extensions, runtimeDataModel: this._runtimeDataModel, globalOmit: this._globalOmit }); + }, "a"); + return this._tracingHelper.runInChildSpan(s2.operation, () => new iu.AsyncResource("prisma-client-request").runInAsyncScope(() => a5(o3))); + } + async _executeRequest({ args: n3, clientMethod: i5, dataPath: o3, callsite: s2, action: a5, model: u, argsMapper: m3, transaction: P, unpacker: T2, otelParentCtx: S, customDataProxyFetch: I }) { + try { + n3 = m3 ? m3(n3) : n3; + let A = { name: "serialize" }, M = this._tracingHelper.runInChildSpan(A, () => Vr({ modelName: u, runtimeDataModel: this._runtimeDataModel, action: a5, args: n3, clientMethod: i5, callsite: s2, extensions: this._extensions, errorFormat: this._errorFormat, clientVersion: this._clientVersion, previewFeatures: this._previewFeatures, globalOmit: this._globalOmit })); + return K2.enabled("prisma:client") && (kt("Prisma Client call:"), kt(`prisma.${i5}(${gs(n3)})`), kt("Generated request:"), kt(JSON.stringify(M, null, 2) + ` +`)), P?.kind === "batch" && await P.lock, this._requestHandler.request({ protocolQuery: M, modelName: u, action: a5, clientMethod: i5, dataPath: o3, callsite: s2, args: n3, extensions: this._extensions, transaction: P, unpacker: T2, otelParentCtx: S, otelChildCtx: this._tracingHelper.getActiveContext(), globalOmit: this._globalOmit, customDataProxyFetch: I }); + } catch (A) { + throw A.clientVersion = this._clientVersion, A; + } + } + _hasPreviewFlag(n3) { + return !!this._engineConfig.previewFeatures?.includes(n3); + } + $extends = Rs; + } + return t; + } + __name(au, "au"); + function ru(e5, t) { + return Lm(e5) ? [new nu.Sql(e5, t), Dl] : [e5, Ml]; + } + __name(ru, "ru"); + function Lm(e5) { + return Array.isArray(e5) && Array.isArray(e5.raw); + } + __name(Lm, "Lm"); + var Vm = /* @__PURE__ */ new Set(["toJSON", "$$typeof", "asymmetricMatch", Symbol.iterator, Symbol.toStringTag, Symbol.isConcatSpreadable, Symbol.toPrimitive]); + function lu(e5) { + return new Proxy(e5, { get(t, r5) { + if (r5 in t) return t[r5]; + if (!Vm.has(r5)) throw new TypeError(`Invalid enum value: ${String(r5)}`); + } }); + } + __name(lu, "lu"); + var qm = /* @__PURE__ */ __name(() => globalThis.process?.release?.name === "node", "qm"); + var Um = /* @__PURE__ */ __name(() => !!globalThis.Bun || !!globalThis.process?.versions?.bun, "Um"); + var jm = /* @__PURE__ */ __name(() => !!globalThis.Deno, "jm"); + var Bm = /* @__PURE__ */ __name(() => typeof globalThis.Netlify == "object", "Bm"); + var Qm = /* @__PURE__ */ __name(() => typeof globalThis.EdgeRuntime == "object", "Qm"); + var Jm = /* @__PURE__ */ __name(() => globalThis.navigator?.userAgent === "Cloudflare-Workers", "Jm"); + function Gm() { + return [[Bm, "netlify"], [Qm, "edge-light"], [Jm, "workerd"], [jm, "deno"], [Um, "bun"], [qm, "node"]].flatMap((r5) => r5[0]() ? [r5[1]] : []).at(0) ?? ""; + } + __name(Gm, "Gm"); + var zm = { node: "Node.js", workerd: "Cloudflare Workers", deno: "Deno and Deno Deploy", netlify: "Netlify Edge Functions", "edge-light": "Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)" }; + function uu() { + let e5 = Gm(); + return { id: e5, prettyName: zm[e5] || e5, isEdge: ["workerd", "deno", "netlify", "edge-light"].includes(e5) }; + } + __name(uu, "uu"); + var _ = require_dist(); + var Fe = require_dist(); + var ee = require_dist(); + var cu = require_dist(); + } +}); + +// ../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js +var require_safe_buffer = __commonJS({ + "../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js"(exports, module) { + var buffer = __require("buffer"); + var Buffer2 = buffer.Buffer; + function copyProps(src, dst) { + for (var key in src) { + dst[key] = src[key]; + } + } + __name(copyProps, "copyProps"); + if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) { + module.exports = buffer; + } else { + copyProps(buffer, exports); + exports.Buffer = SafeBuffer; + } + function SafeBuffer(arg, encodingOrOffset, length) { + return Buffer2(arg, encodingOrOffset, length); + } + __name(SafeBuffer, "SafeBuffer"); + SafeBuffer.prototype = Object.create(Buffer2.prototype); + copyProps(Buffer2, SafeBuffer); + SafeBuffer.from = function(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + throw new TypeError("Argument must not be a number"); + } + return Buffer2(arg, encodingOrOffset, length); + }; + SafeBuffer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + var buf = Buffer2(size); + if (fill !== void 0) { + if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf; + }; + SafeBuffer.allocUnsafe = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return Buffer2(size); + }; + SafeBuffer.allocUnsafeSlow = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return buffer.SlowBuffer(size); + }; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/data-stream.js +var require_data_stream = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/data-stream.js"(exports, module) { + var Buffer2 = require_safe_buffer().Buffer; + var Stream = __require("stream"); + var util = __require("util"); + function DataStream(data) { + this.buffer = null; + this.writable = true; + this.readable = true; + if (!data) { + this.buffer = Buffer2.alloc(0); + return this; + } + if (typeof data.pipe === "function") { + this.buffer = Buffer2.alloc(0); + data.pipe(this); + return this; + } + if (data.length || typeof data === "object") { + this.buffer = data; + this.writable = false; + process.nextTick(function() { + this.emit("end", data); + this.readable = false; + this.emit("close"); + }.bind(this)); + return this; + } + throw new TypeError("Unexpected data type (" + typeof data + ")"); + } + __name(DataStream, "DataStream"); + util.inherits(DataStream, Stream); + DataStream.prototype.write = /* @__PURE__ */ __name(function write(data) { + this.buffer = Buffer2.concat([this.buffer, Buffer2.from(data)]); + this.emit("data", data); + }, "write"); + DataStream.prototype.end = /* @__PURE__ */ __name(function end(data) { + if (data) + this.write(data); + this.emit("end", data); + this.emit("close"); + this.writable = false; + this.readable = false; + }, "end"); + module.exports = DataStream; + } +}); + +// ../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +var require_param_bytes_for_alg = __commonJS({ + "../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js"(exports, module) { + "use strict"; + function getParamSize(keySize) { + var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1); + return result; + } + __name(getParamSize, "getParamSize"); + var paramBytesForAlg = { + ES256: getParamSize(256), + ES384: getParamSize(384), + ES512: getParamSize(521) + }; + function getParamBytesForAlg(alg) { + var paramBytes = paramBytesForAlg[alg]; + if (paramBytes) { + return paramBytes; + } + throw new Error('Unknown algorithm "' + alg + '"'); + } + __name(getParamBytesForAlg, "getParamBytesForAlg"); + module.exports = getParamBytesForAlg; + } +}); + +// ../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +var require_ecdsa_sig_formatter = __commonJS({ + "../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js"(exports, module) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var getParamBytesForAlg = require_param_bytes_for_alg(); + var MAX_OCTET = 128; + var CLASS_UNIVERSAL = 0; + var PRIMITIVE_BIT = 32; + var TAG_SEQ = 16; + var TAG_INT = 2; + var ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6; + var ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6; + function base64Url(base643) { + return base643.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + __name(base64Url, "base64Url"); + function signatureAsBuffer(signature) { + if (Buffer2.isBuffer(signature)) { + return signature; + } else if ("string" === typeof signature) { + return Buffer2.from(signature, "base64"); + } + throw new TypeError("ECDSA signature must be a Base64 string or a Buffer"); + } + __name(signatureAsBuffer, "signatureAsBuffer"); + function derToJose(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var maxEncodedParamLength = paramBytes + 1; + var inputLength = signature.length; + var offset = 0; + if (signature[offset++] !== ENCODED_TAG_SEQ) { + throw new Error('Could not find expected "seq"'); + } + var seqLength = signature[offset++]; + if (seqLength === (MAX_OCTET | 1)) { + seqLength = signature[offset++]; + } + if (inputLength - offset < seqLength) { + throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining'); + } + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "r"'); + } + var rLength = signature[offset++]; + if (inputLength - offset - 2 < rLength) { + throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available'); + } + if (maxEncodedParamLength < rLength) { + throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var rOffset = offset; + offset += rLength; + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "s"'); + } + var sLength = signature[offset++]; + if (inputLength - offset !== sLength) { + throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"'); + } + if (maxEncodedParamLength < sLength) { + throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var sOffset = offset; + offset += sLength; + if (offset !== inputLength) { + throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain'); + } + var rPadding = paramBytes - rLength, sPadding = paramBytes - sLength; + var dst = Buffer2.allocUnsafe(rPadding + rLength + sPadding + sLength); + for (offset = 0; offset < rPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength); + offset = paramBytes; + for (var o3 = offset; offset < o3 + sPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength); + dst = dst.toString("base64"); + dst = base64Url(dst); + return dst; + } + __name(derToJose, "derToJose"); + function countPadding(buf, start, stop) { + var padding = 0; + while (start + padding < stop && buf[start + padding] === 0) { + ++padding; + } + var needsSign = buf[start + padding] >= MAX_OCTET; + if (needsSign) { + --padding; + } + return padding; + } + __name(countPadding, "countPadding"); + function joseToDer(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var signatureBytes = signature.length; + if (signatureBytes !== paramBytes * 2) { + throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"'); + } + var rPadding = countPadding(signature, 0, paramBytes); + var sPadding = countPadding(signature, paramBytes, signature.length); + var rLength = paramBytes - rPadding; + var sLength = paramBytes - sPadding; + var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; + var shortLength = rsBytes < MAX_OCTET; + var dst = Buffer2.allocUnsafe((shortLength ? 2 : 3) + rsBytes); + var offset = 0; + dst[offset++] = ENCODED_TAG_SEQ; + if (shortLength) { + dst[offset++] = rsBytes; + } else { + dst[offset++] = MAX_OCTET | 1; + dst[offset++] = rsBytes & 255; + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = rLength; + if (rPadding < 0) { + dst[offset++] = 0; + offset += signature.copy(dst, offset, 0, paramBytes); + } else { + offset += signature.copy(dst, offset, rPadding, paramBytes); + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = sLength; + if (sPadding < 0) { + dst[offset++] = 0; + signature.copy(dst, offset, paramBytes); + } else { + signature.copy(dst, offset, paramBytes + sPadding); + } + return dst; + } + __name(joseToDer, "joseToDer"); + module.exports = { + derToJose, + joseToDer + }; + } +}); + +// ../../node_modules/.pnpm/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js +var require_buffer_equal_constant_time = __commonJS({ + "../../node_modules/.pnpm/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js"(exports, module) { + "use strict"; + var Buffer2 = __require("buffer").Buffer; + var SlowBuffer = __require("buffer").SlowBuffer; + module.exports = bufferEq; + function bufferEq(a5, b5) { + if (!Buffer2.isBuffer(a5) || !Buffer2.isBuffer(b5)) { + return false; + } + if (a5.length !== b5.length) { + return false; + } + var c5 = 0; + for (var i5 = 0; i5 < a5.length; i5++) { + c5 |= a5[i5] ^ b5[i5]; + } + return c5 === 0; + } + __name(bufferEq, "bufferEq"); + bufferEq.install = function() { + Buffer2.prototype.equal = SlowBuffer.prototype.equal = /* @__PURE__ */ __name(function equal(that) { + return bufferEq(this, that); + }, "equal"); + }; + var origBufEqual = Buffer2.prototype.equal; + var origSlowBufEqual = SlowBuffer.prototype.equal; + bufferEq.restore = function() { + Buffer2.prototype.equal = origBufEqual; + SlowBuffer.prototype.equal = origSlowBufEqual; + }; + } +}); + +// ../../node_modules/.pnpm/jwa@2.0.1/node_modules/jwa/index.js +var require_jwa = __commonJS({ + "../../node_modules/.pnpm/jwa@2.0.1/node_modules/jwa/index.js"(exports, module) { + var Buffer2 = require_safe_buffer().Buffer; + var crypto2 = __require("crypto"); + var formatEcdsa = require_ecdsa_sig_formatter(); + var util = __require("util"); + var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'; + var MSG_INVALID_SECRET = "secret must be a string or buffer"; + var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer"; + var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object"; + var supportsKeyObjects = typeof crypto2.createPublicKey === "function"; + if (supportsKeyObjects) { + MSG_INVALID_VERIFIER_KEY += " or a KeyObject"; + MSG_INVALID_SECRET += "or a KeyObject"; + } + function checkIsPublicKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.type !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.asymmetricKeyType !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + } + __name(checkIsPublicKey, "checkIsPublicKey"); + function checkIsPrivateKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (typeof key === "object") { + return; + } + throw typeError(MSG_INVALID_SIGNER_KEY); + } + __name(checkIsPrivateKey, "checkIsPrivateKey"); + function checkIsSecretKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return key; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_SECRET); + } + if (key.type !== "secret") { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_SECRET); + } + } + __name(checkIsSecretKey, "checkIsSecretKey"); + function fromBase642(base643) { + return base643.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + __name(fromBase642, "fromBase64"); + function toBase642(base64url3) { + base64url3 = base64url3.toString(); + var padding = 4 - base64url3.length % 4; + if (padding !== 4) { + for (var i5 = 0; i5 < padding; ++i5) { + base64url3 += "="; + } + } + return base64url3.replace(/\-/g, "+").replace(/_/g, "/"); + } + __name(toBase642, "toBase64"); + function typeError(template) { + var args = [].slice.call(arguments, 1); + var errMsg = util.format.bind(util, template).apply(null, args); + return new TypeError(errMsg); + } + __name(typeError, "typeError"); + function bufferOrString(obj) { + return Buffer2.isBuffer(obj) || typeof obj === "string"; + } + __name(bufferOrString, "bufferOrString"); + function normalizeInput(thing) { + if (!bufferOrString(thing)) + thing = JSON.stringify(thing); + return thing; + } + __name(normalizeInput, "normalizeInput"); + function createHmacSigner(bits) { + return /* @__PURE__ */ __name(function sign2(thing, secret) { + checkIsSecretKey(secret); + thing = normalizeInput(thing); + var hmac = crypto2.createHmac("sha" + bits, secret); + var sig = (hmac.update(thing), hmac.digest("base64")); + return fromBase642(sig); + }, "sign"); + } + __name(createHmacSigner, "createHmacSigner"); + var bufferEqual; + var timingSafeEqual = "timingSafeEqual" in crypto2 ? /* @__PURE__ */ __name(function timingSafeEqual2(a5, b5) { + if (a5.byteLength !== b5.byteLength) { + return false; + } + return crypto2.timingSafeEqual(a5, b5); + }, "timingSafeEqual") : /* @__PURE__ */ __name(function timingSafeEqual2(a5, b5) { + if (!bufferEqual) { + bufferEqual = require_buffer_equal_constant_time(); + } + return bufferEqual(a5, b5); + }, "timingSafeEqual"); + function createHmacVerifier(bits) { + return /* @__PURE__ */ __name(function verify2(thing, signature, secret) { + var computedSig = createHmacSigner(bits)(thing, secret); + return timingSafeEqual(Buffer2.from(signature), Buffer2.from(computedSig)); + }, "verify"); + } + __name(createHmacVerifier, "createHmacVerifier"); + function createKeySigner(bits) { + return /* @__PURE__ */ __name(function sign2(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto2.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign(privateKey, "base64")); + return fromBase642(sig); + }, "sign"); + } + __name(createKeySigner, "createKeySigner"); + function createKeyVerifier(bits) { + return /* @__PURE__ */ __name(function verify2(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase642(signature); + var verifier = crypto2.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify(publicKey, signature, "base64"); + }, "verify"); + } + __name(createKeyVerifier, "createKeyVerifier"); + function createPSSKeySigner(bits) { + return /* @__PURE__ */ __name(function sign2(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto2.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign({ + key: privateKey, + padding: crypto2.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto2.constants.RSA_PSS_SALTLEN_DIGEST + }, "base64")); + return fromBase642(sig); + }, "sign"); + } + __name(createPSSKeySigner, "createPSSKeySigner"); + function createPSSKeyVerifier(bits) { + return /* @__PURE__ */ __name(function verify2(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase642(signature); + var verifier = crypto2.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify({ + key: publicKey, + padding: crypto2.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto2.constants.RSA_PSS_SALTLEN_DIGEST + }, signature, "base64"); + }, "verify"); + } + __name(createPSSKeyVerifier, "createPSSKeyVerifier"); + function createECDSASigner(bits) { + var inner = createKeySigner(bits); + return /* @__PURE__ */ __name(function sign2() { + var signature = inner.apply(null, arguments); + signature = formatEcdsa.derToJose(signature, "ES" + bits); + return signature; + }, "sign"); + } + __name(createECDSASigner, "createECDSASigner"); + function createECDSAVerifer(bits) { + var inner = createKeyVerifier(bits); + return /* @__PURE__ */ __name(function verify2(thing, signature, publicKey) { + signature = formatEcdsa.joseToDer(signature, "ES" + bits).toString("base64"); + var result = inner(thing, signature, publicKey); + return result; + }, "verify"); + } + __name(createECDSAVerifer, "createECDSAVerifer"); + function createNoneSigner() { + return /* @__PURE__ */ __name(function sign2() { + return ""; + }, "sign"); + } + __name(createNoneSigner, "createNoneSigner"); + function createNoneVerifier() { + return /* @__PURE__ */ __name(function verify2(thing, signature) { + return signature === ""; + }, "verify"); + } + __name(createNoneVerifier, "createNoneVerifier"); + module.exports = /* @__PURE__ */ __name(function jwa(algorithm) { + var signerFactories = { + hs: createHmacSigner, + rs: createKeySigner, + ps: createPSSKeySigner, + es: createECDSASigner, + none: createNoneSigner + }; + var verifierFactories = { + hs: createHmacVerifier, + rs: createKeyVerifier, + ps: createPSSKeyVerifier, + es: createECDSAVerifer, + none: createNoneVerifier + }; + var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); + if (!match) + throw typeError(MSG_INVALID_ALGORITHM, algorithm); + var algo = (match[1] || match[3]).toLowerCase(); + var bits = match[2]; + return { + sign: signerFactories[algo](bits), + verify: verifierFactories[algo](bits) + }; + }, "jwa"); + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/tostring.js +var require_tostring = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/tostring.js"(exports, module) { + var Buffer2 = __require("buffer").Buffer; + module.exports = /* @__PURE__ */ __name(function toString(obj) { + if (typeof obj === "string") + return obj; + if (typeof obj === "number" || Buffer2.isBuffer(obj)) + return obj.toString(); + return JSON.stringify(obj); + }, "toString"); + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/sign-stream.js +var require_sign_stream = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/sign-stream.js"(exports, module) { + var Buffer2 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = __require("stream"); + var toString = require_tostring(); + var util = __require("util"); + function base64url3(string4, encoding) { + return Buffer2.from(string4, encoding).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + __name(base64url3, "base64url"); + function jwsSecuredInput(header, payload, encoding) { + encoding = encoding || "utf8"; + var encodedHeader = base64url3(toString(header), "binary"); + var encodedPayload = base64url3(toString(payload), encoding); + return util.format("%s.%s", encodedHeader, encodedPayload); + } + __name(jwsSecuredInput, "jwsSecuredInput"); + function jwsSign(opts) { + var header = opts.header; + var payload = opts.payload; + var secretOrKey = opts.secret || opts.privateKey; + var encoding = opts.encoding; + var algo = jwa(header.alg); + var securedInput = jwsSecuredInput(header, payload, encoding); + var signature = algo.sign(securedInput, secretOrKey); + return util.format("%s.%s", securedInput, signature); + } + __name(jwsSign, "jwsSign"); + function SignStream(opts) { + var secret = opts.secret; + secret = secret == null ? opts.privateKey : secret; + secret = secret == null ? opts.key : secret; + if (/^hs/i.test(opts.header.alg) === true && secret == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secret); + this.readable = true; + this.header = opts.header; + this.encoding = opts.encoding; + this.secret = this.privateKey = this.key = secretStream; + this.payload = new DataStream(opts.payload); + this.secret.once("close", function() { + if (!this.payload.writable && this.readable) + this.sign(); + }.bind(this)); + this.payload.once("close", function() { + if (!this.secret.writable && this.readable) + this.sign(); + }.bind(this)); + } + __name(SignStream, "SignStream"); + util.inherits(SignStream, Stream); + SignStream.prototype.sign = /* @__PURE__ */ __name(function sign2() { + try { + var signature = jwsSign({ + header: this.header, + payload: this.payload.buffer, + secret: this.secret.buffer, + encoding: this.encoding + }); + this.emit("done", signature); + this.emit("data", signature); + this.emit("end"); + this.readable = false; + return signature; + } catch (e5) { + this.readable = false; + this.emit("error", e5); + this.emit("close"); + } + }, "sign"); + SignStream.sign = jwsSign; + module.exports = SignStream; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/verify-stream.js +var require_verify_stream = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/lib/verify-stream.js"(exports, module) { + var Buffer2 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = __require("stream"); + var toString = require_tostring(); + var util = __require("util"); + var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; + function isObject2(thing) { + return Object.prototype.toString.call(thing) === "[object Object]"; + } + __name(isObject2, "isObject"); + function safeJsonParse(thing) { + if (isObject2(thing)) + return thing; + try { + return JSON.parse(thing); + } catch (e5) { + return void 0; + } + } + __name(safeJsonParse, "safeJsonParse"); + function headerFromJWS(jwsSig) { + var encodedHeader = jwsSig.split(".", 1)[0]; + return safeJsonParse(Buffer2.from(encodedHeader, "base64").toString("binary")); + } + __name(headerFromJWS, "headerFromJWS"); + function securedInputFromJWS(jwsSig) { + return jwsSig.split(".", 2).join("."); + } + __name(securedInputFromJWS, "securedInputFromJWS"); + function signatureFromJWS(jwsSig) { + return jwsSig.split(".")[2]; + } + __name(signatureFromJWS, "signatureFromJWS"); + function payloadFromJWS(jwsSig, encoding) { + encoding = encoding || "utf8"; + var payload = jwsSig.split(".")[1]; + return Buffer2.from(payload, "base64").toString(encoding); + } + __name(payloadFromJWS, "payloadFromJWS"); + function isValidJws(string4) { + return JWS_REGEX.test(string4) && !!headerFromJWS(string4); + } + __name(isValidJws, "isValidJws"); + function jwsVerify(jwsSig, algorithm, secretOrKey) { + if (!algorithm) { + var err = new Error("Missing algorithm parameter for jws.verify"); + err.code = "MISSING_ALGORITHM"; + throw err; + } + jwsSig = toString(jwsSig); + var signature = signatureFromJWS(jwsSig); + var securedInput = securedInputFromJWS(jwsSig); + var algo = jwa(algorithm); + return algo.verify(securedInput, signature, secretOrKey); + } + __name(jwsVerify, "jwsVerify"); + function jwsDecode(jwsSig, opts) { + opts = opts || {}; + jwsSig = toString(jwsSig); + if (!isValidJws(jwsSig)) + return null; + var header = headerFromJWS(jwsSig); + if (!header) + return null; + var payload = payloadFromJWS(jwsSig); + if (header.typ === "JWT" || opts.json) + payload = JSON.parse(payload, opts.encoding); + return { + header, + payload, + signature: signatureFromJWS(jwsSig) + }; + } + __name(jwsDecode, "jwsDecode"); + function VerifyStream(opts) { + opts = opts || {}; + var secretOrKey = opts.secret; + secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey; + secretOrKey = secretOrKey == null ? opts.key : secretOrKey; + if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secretOrKey); + this.readable = true; + this.algorithm = opts.algorithm; + this.encoding = opts.encoding; + this.secret = this.publicKey = this.key = secretStream; + this.signature = new DataStream(opts.signature); + this.secret.once("close", function() { + if (!this.signature.writable && this.readable) + this.verify(); + }.bind(this)); + this.signature.once("close", function() { + if (!this.secret.writable && this.readable) + this.verify(); + }.bind(this)); + } + __name(VerifyStream, "VerifyStream"); + util.inherits(VerifyStream, Stream); + VerifyStream.prototype.verify = /* @__PURE__ */ __name(function verify2() { + try { + var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); + var obj = jwsDecode(this.signature.buffer, this.encoding); + this.emit("done", valid, obj); + this.emit("data", valid); + this.emit("end"); + this.readable = false; + return valid; + } catch (e5) { + this.readable = false; + this.emit("error", e5); + this.emit("close"); + } + }, "verify"); + VerifyStream.decode = jwsDecode; + VerifyStream.isValid = isValidJws; + VerifyStream.verify = jwsVerify; + module.exports = VerifyStream; + } +}); + +// ../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/index.js +var require_jws = __commonJS({ + "../../node_modules/.pnpm/jws@4.0.1/node_modules/jws/index.js"(exports) { + var SignStream = require_sign_stream(); + var VerifyStream = require_verify_stream(); + var ALGORITHMS = [ + "HS256", + "HS384", + "HS512", + "RS256", + "RS384", + "RS512", + "PS256", + "PS384", + "PS512", + "ES256", + "ES384", + "ES512" + ]; + exports.ALGORITHMS = ALGORITHMS; + exports.sign = SignStream.sign; + exports.verify = VerifyStream.verify; + exports.decode = VerifyStream.decode; + exports.isValid = VerifyStream.isValid; + exports.createSign = /* @__PURE__ */ __name(function createSign(opts) { + return new SignStream(opts); + }, "createSign"); + exports.createVerify = /* @__PURE__ */ __name(function createVerify(opts) { + return new VerifyStream(opts); + }, "createVerify"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/decode.js +var require_decode = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/decode.js"(exports, module) { + var jws = require_jws(); + module.exports = function(jwt2, options) { + options = options || {}; + var decoded = jws.decode(jwt2, options); + if (!decoded) { + return null; + } + var payload = decoded.payload; + if (typeof payload === "string") { + try { + var obj = JSON.parse(payload); + if (obj !== null && typeof obj === "object") { + payload = obj; + } + } catch (e5) { + } + } + if (options.complete === true) { + return { + header: decoded.header, + payload, + signature: decoded.signature + }; + } + return payload; + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +var require_JsonWebTokenError = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/JsonWebTokenError.js"(exports, module) { + var JsonWebTokenError2 = /* @__PURE__ */ __name(function(message, error62) { + Error.call(this, message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "JsonWebTokenError"; + this.message = message; + if (error62) this.inner = error62; + }, "JsonWebTokenError"); + JsonWebTokenError2.prototype = Object.create(Error.prototype); + JsonWebTokenError2.prototype.constructor = JsonWebTokenError2; + module.exports = JsonWebTokenError2; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/NotBeforeError.js +var require_NotBeforeError = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/NotBeforeError.js"(exports, module) { + var JsonWebTokenError2 = require_JsonWebTokenError(); + var NotBeforeError2 = /* @__PURE__ */ __name(function(message, date5) { + JsonWebTokenError2.call(this, message); + this.name = "NotBeforeError"; + this.date = date5; + }, "NotBeforeError"); + NotBeforeError2.prototype = Object.create(JsonWebTokenError2.prototype); + NotBeforeError2.prototype.constructor = NotBeforeError2; + module.exports = NotBeforeError2; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/TokenExpiredError.js +var require_TokenExpiredError = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/TokenExpiredError.js"(exports, module) { + var JsonWebTokenError2 = require_JsonWebTokenError(); + var TokenExpiredError2 = /* @__PURE__ */ __name(function(message, expiredAt) { + JsonWebTokenError2.call(this, message); + this.name = "TokenExpiredError"; + this.expiredAt = expiredAt; + }, "TokenExpiredError"); + TokenExpiredError2.prototype = Object.create(JsonWebTokenError2.prototype); + TokenExpiredError2.prototype.constructor = TokenExpiredError2; + module.exports = TokenExpiredError2; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/timespan.js +var require_timespan = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/timespan.js"(exports, module) { + var ms = require_ms(); + module.exports = function(time3, iat) { + var timestamp = iat || Math.floor(Date.now() / 1e3); + if (typeof time3 === "string") { + var milliseconds = ms(time3); + if (typeof milliseconds === "undefined") { + return; + } + return Math.floor(timestamp + milliseconds / 1e3); + } else if (typeof time3 === "number") { + return timestamp + time3; + } else { + return; + } + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js +var require_constants = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports, module) { + "use strict"; + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ + 9007199254740991; + var MAX_SAFE_COMPONENT_LENGTH = 16; + var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; + var RELEASE_TYPES = [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ]; + module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js +var require_debug = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports, module) { + "use strict"; + var debug3 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { + }; + module.exports = debug3; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js +var require_re = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports, module) { + "use strict"; + var { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH + } = require_constants(); + var debug3 = require_debug(); + exports = module.exports = {}; + var re = exports.re = []; + var safeRe = exports.safeRe = []; + var src = exports.src = []; + var safeSrc = exports.safeSrc = []; + var t = exports.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] + ]; + var makeSafeRegex = /* @__PURE__ */ __name((value) => { + for (const [token, max] of safeRegexReplacements) { + value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + } + return value; + }, "makeSafeRegex"); + var createToken = /* @__PURE__ */ __name((name2, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug3(name2, index, value); + t[name2] = index; + src[index] = value; + safeSrc[index] = safe; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); + }, "createToken"); + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js +var require_parse_options = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports, module) { + "use strict"; + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions = /* @__PURE__ */ __name((options) => { + if (!options) { + return emptyOpts; + } + if (typeof options !== "object") { + return looseOption; + } + return options; + }, "parseOptions"); + module.exports = parseOptions; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js +var require_identifiers = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports, module) { + "use strict"; + var numeric = /^[0-9]+$/; + var compareIdentifiers = /* @__PURE__ */ __name((a5, b5) => { + if (typeof a5 === "number" && typeof b5 === "number") { + return a5 === b5 ? 0 : a5 < b5 ? -1 : 1; + } + const anum = numeric.test(a5); + const bnum = numeric.test(b5); + if (anum && bnum) { + a5 = +a5; + b5 = +b5; + } + return a5 === b5 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a5 < b5 ? -1 : 1; + }, "compareIdentifiers"); + var rcompareIdentifiers = /* @__PURE__ */ __name((a5, b5) => compareIdentifiers(b5, a5), "rcompareIdentifiers"); + module.exports = { + compareIdentifiers, + rcompareIdentifiers + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js +var require_semver = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports, module) { + "use strict"; + var debug3 = require_debug(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants(); + var { safeRe: re, t } = require_re(); + var parseOptions = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + var isPrereleaseIdentifier = /* @__PURE__ */ __name((prerelease, identifier) => { + const identifiers = identifier.split("."); + if (identifiers.length > prerelease.length) { + return false; + } + for (let i5 = 0; i5 < identifiers.length; i5++) { + if (compareIdentifiers(prerelease[i5], identifiers[i5]) !== 0) { + return false; + } + } + return true; + }, "isPrereleaseIdentifier"); + var SemVer = class _SemVer { + static { + __name(this, "SemVer"); + } + constructor(version2, options) { + options = parseOptions(options); + if (version2 instanceof _SemVer) { + if (version2.loose === !!options.loose && version2.includePrerelease === !!options.includePrerelease) { + return version2; + } else { + version2 = version2.version; + } + } else if (typeof version2 !== "string") { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version2}".`); + } + if (version2.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ); + } + debug3("SemVer", version2, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m3 = version2.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m3) { + throw new TypeError(`Invalid Version: ${version2}`); + } + this.raw = version2; + this.major = +m3[1]; + this.minor = +m3[2]; + this.patch = +m3[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + if (!m3[4]) { + this.prerelease = []; + } else { + this.prerelease = m3[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + this.build = m3[5] ? m3[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join(".")}`; + } + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug3("SemVer.compare", this.version, this.options, other); + if (!(other instanceof _SemVer)) { + if (typeof other === "string" && other === this.version) { + return 0; + } + other = new _SemVer(other, this.options); + } + if (other.version === this.version) { + return 0; + } + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.major < other.major) { + return -1; + } + if (this.major > other.major) { + return 1; + } + if (this.minor < other.minor) { + return -1; + } + if (this.minor > other.minor) { + return 1; + } + if (this.patch < other.patch) { + return -1; + } + if (this.patch > other.patch) { + return 1; + } + return 0; + } + comparePre(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + let i5 = 0; + do { + const a5 = this.prerelease[i5]; + const b5 = other.prerelease[i5]; + debug3("prerelease compare", i5, a5, b5); + if (a5 === void 0 && b5 === void 0) { + return 0; + } else if (b5 === void 0) { + return 1; + } else if (a5 === void 0) { + return -1; + } else if (a5 === b5) { + continue; + } else { + return compareIdentifiers(a5, b5); + } + } while (++i5); + } + compareBuild(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + let i5 = 0; + do { + const a5 = this.build[i5]; + const b5 = other.build[i5]; + debug3("build compare", i5, a5, b5); + if (a5 === void 0 && b5 === void 0) { + return 0; + } else if (b5 === void 0) { + return 1; + } else if (a5 === void 0) { + return -1; + } else if (a5 === b5) { + continue; + } else { + return compareIdentifiers(a5, b5); + } + } while (++i5); + } + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc(release2, identifier, identifierBase) { + if (release2.startsWith("pre")) { + if (!identifier && identifierBase === false) { + throw new Error("invalid increment argument: identifier is empty"); + } + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); + if (!match || match[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`); + } + } + } + switch (release2) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier, identifierBase); + } + this.inc("pre", identifier, identifierBase); + break; + case "release": + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`); + } + this.prerelease.length = 0; + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (this.prerelease.length === 0) { + this.prerelease = [base]; + } else { + let i5 = this.prerelease.length; + while (--i5 >= 0) { + if (typeof this.prerelease[i5] === "number") { + this.prerelease[i5]++; + i5 = -2; + } + } + if (i5 === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) { + throw new Error("invalid increment argument: identifier already exists"); + } + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) { + prerelease = [identifier]; + } + if (isPrereleaseIdentifier(this.prerelease, identifier)) { + const prereleaseBase = this.prerelease[identifier.split(".").length]; + if (isNaN(prereleaseBase)) { + this.prerelease = prerelease; + } + } else { + this.prerelease = prerelease; + } + } + break; + } + default: + throw new Error(`invalid increment argument: ${release2}`); + } + this.raw = this.format(); + if (this.build.length) { + this.raw += `+${this.build.join(".")}`; + } + return this; + } + }; + module.exports = SemVer; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js +var require_parse = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var parse4 = /* @__PURE__ */ __name((version2, options, throwErrors = false) => { + if (version2 instanceof SemVer) { + return version2; + } + try { + return new SemVer(version2, options); + } catch (er) { + if (!throwErrors) { + return null; + } + throw er; + } + }, "parse"); + module.exports = parse4; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js +var require_valid = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports, module) { + "use strict"; + var parse4 = require_parse(); + var valid = /* @__PURE__ */ __name((version2, options) => { + const v = parse4(version2, options); + return v ? v.version : null; + }, "valid"); + module.exports = valid; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js +var require_clean = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports, module) { + "use strict"; + var parse4 = require_parse(); + var clean = /* @__PURE__ */ __name((version2, options) => { + const s2 = parse4(version2.trim().replace(/^[=v]+/, ""), options); + return s2 ? s2.version : null; + }, "clean"); + module.exports = clean; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js +var require_inc = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var inc = /* @__PURE__ */ __name((version2, release2, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer( + version2 instanceof SemVer ? version2.version : version2, + options + ).inc(release2, identifier, identifierBase).version; + } catch (er) { + return null; + } + }, "inc"); + module.exports = inc; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js +var require_diff = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports, module) { + "use strict"; + var parse4 = require_parse(); + var diff = /* @__PURE__ */ __name((version1, version2) => { + const v1 = parse4(version1, null, true); + const v2 = parse4(version2, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) { + return null; + } + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + const lowHasPre = !!lowVersion.prerelease.length; + if (lowHasPre && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) { + return "major"; + } + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return "minor"; + } + return "patch"; + } + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) { + return prefix + "major"; + } + if (v1.minor !== v2.minor) { + return prefix + "minor"; + } + if (v1.patch !== v2.patch) { + return prefix + "patch"; + } + return "prerelease"; + }, "diff"); + module.exports = diff; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js +var require_major = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var major = /* @__PURE__ */ __name((a5, loose) => new SemVer(a5, loose).major, "major"); + module.exports = major; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js +var require_minor = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var minor = /* @__PURE__ */ __name((a5, loose) => new SemVer(a5, loose).minor, "minor"); + module.exports = minor; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js +var require_patch = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var patch = /* @__PURE__ */ __name((a5, loose) => new SemVer(a5, loose).patch, "patch"); + module.exports = patch; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js +var require_prerelease = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports, module) { + "use strict"; + var parse4 = require_parse(); + var prerelease = /* @__PURE__ */ __name((version2, options) => { + const parsed2 = parse4(version2, options); + return parsed2 && parsed2.prerelease.length ? parsed2.prerelease : null; + }, "prerelease"); + module.exports = prerelease; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js +var require_compare = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var compare = /* @__PURE__ */ __name((a5, b5, loose) => new SemVer(a5, loose).compare(new SemVer(b5, loose)), "compare"); + module.exports = compare; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js +var require_rcompare = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var rcompare = /* @__PURE__ */ __name((a5, b5, loose) => compare(b5, a5, loose), "rcompare"); + module.exports = rcompare; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js +var require_compare_loose = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var compareLoose = /* @__PURE__ */ __name((a5, b5) => compare(a5, b5, true), "compareLoose"); + module.exports = compareLoose; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js +var require_compare_build = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var compareBuild = /* @__PURE__ */ __name((a5, b5, loose) => { + const versionA = new SemVer(a5, loose); + const versionB = new SemVer(b5, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); + }, "compareBuild"); + module.exports = compareBuild; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js +var require_sort = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports, module) { + "use strict"; + var compareBuild = require_compare_build(); + var sort = /* @__PURE__ */ __name((list, loose) => list.sort((a5, b5) => compareBuild(a5, b5, loose)), "sort"); + module.exports = sort; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js +var require_rsort = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports, module) { + "use strict"; + var compareBuild = require_compare_build(); + var rsort = /* @__PURE__ */ __name((list, loose) => list.sort((a5, b5) => compareBuild(b5, a5, loose)), "rsort"); + module.exports = rsort; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js +var require_gt = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var gt = /* @__PURE__ */ __name((a5, b5, loose) => compare(a5, b5, loose) > 0, "gt"); + module.exports = gt; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js +var require_lt = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var lt = /* @__PURE__ */ __name((a5, b5, loose) => compare(a5, b5, loose) < 0, "lt"); + module.exports = lt; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js +var require_eq = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var eq = /* @__PURE__ */ __name((a5, b5, loose) => compare(a5, b5, loose) === 0, "eq"); + module.exports = eq; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js +var require_neq = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var neq = /* @__PURE__ */ __name((a5, b5, loose) => compare(a5, b5, loose) !== 0, "neq"); + module.exports = neq; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js +var require_gte = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var gte = /* @__PURE__ */ __name((a5, b5, loose) => compare(a5, b5, loose) >= 0, "gte"); + module.exports = gte; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js +var require_lte = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports, module) { + "use strict"; + var compare = require_compare(); + var lte = /* @__PURE__ */ __name((a5, b5, loose) => compare(a5, b5, loose) <= 0, "lte"); + module.exports = lte; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js +var require_cmp = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports, module) { + "use strict"; + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte = require_gte(); + var lt = require_lt(); + var lte = require_lte(); + var cmp = /* @__PURE__ */ __name((a5, op, b5, loose) => { + switch (op) { + case "===": + if (typeof a5 === "object") { + a5 = a5.version; + } + if (typeof b5 === "object") { + b5 = b5.version; + } + return a5 === b5; + case "!==": + if (typeof a5 === "object") { + a5 = a5.version; + } + if (typeof b5 === "object") { + b5 = b5.version; + } + return a5 !== b5; + case "": + case "=": + case "==": + return eq(a5, b5, loose); + case "!=": + return neq(a5, b5, loose); + case ">": + return gt(a5, b5, loose); + case ">=": + return gte(a5, b5, loose); + case "<": + return lt(a5, b5, loose); + case "<=": + return lte(a5, b5, loose); + default: + throw new TypeError(`Invalid operator: ${op}`); + } + }, "cmp"); + module.exports = cmp; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js +var require_coerce = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var parse4 = require_parse(); + var { safeRe: re, t } = require_re(); + var coerce = /* @__PURE__ */ __name((version2, options) => { + if (version2 instanceof SemVer) { + return version2; + } + if (typeof version2 === "number") { + version2 = String(version2); + } + if (typeof version2 !== "string") { + return null; + } + options = options || {}; + let match = null; + if (!options.rtl) { + match = version2.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + } else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version2)) && (!match || match.index + match[0].length !== version2.length)) { + if (!match || next.index + next[0].length !== match.index + match[0].length) { + match = next; + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match === null) { + return null; + } + const major = match[2]; + const minor = match[3] || "0"; + const patch = match[4] || "0"; + const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; + const build2 = options.includePrerelease && match[6] ? `+${match[6]}` : ""; + return parse4(`${major}.${minor}.${patch}${prerelease}${build2}`, options); + }, "coerce"); + module.exports = coerce; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js +var require_truncate = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports, module) { + "use strict"; + var parse4 = require_parse(); + var constants = require_constants(); + var SemVer = require_semver(); + var truncate = /* @__PURE__ */ __name((version2, truncation, options) => { + if (!constants.RELEASE_TYPES.includes(truncation)) { + return null; + } + const clonedVersion = cloneInputVersion(version2, options); + return clonedVersion && doTruncation(clonedVersion, truncation); + }, "truncate"); + var cloneInputVersion = /* @__PURE__ */ __name((version2, options) => { + const versionStringToParse = version2 instanceof SemVer ? version2.version : version2; + return parse4(versionStringToParse, options); + }, "cloneInputVersion"); + var doTruncation = /* @__PURE__ */ __name((version2, truncation) => { + if (isPrerelease(truncation)) { + return version2.version; + } + version2.prerelease = []; + switch (truncation) { + case "major": + version2.minor = 0; + version2.patch = 0; + break; + case "minor": + version2.patch = 0; + break; + } + return version2.format(); + }, "doTruncation"); + var isPrerelease = /* @__PURE__ */ __name((type) => { + return type.startsWith("pre"); + }, "isPrerelease"); + module.exports = truncate; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js +var require_lrucache = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports, module) { + "use strict"; + var LRUCache = class { + static { + __name(this, "LRUCache"); + } + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) { + return void 0; + } else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + const deleted = this.delete(key); + if (!deleted && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } + }; + module.exports = LRUCache; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js +var require_range = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports, module) { + "use strict"; + var SPACE_CHARACTERS = /\s+/g; + var Range = class _Range { + static { + __name(this, "Range"); + } + constructor(range, options) { + options = parseOptions(options); + if (range instanceof _Range) { + if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { + return range; + } else { + return new _Range(range.raw, options); + } + } + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r5) => this.parseRange(r5.trim())).filter((c5) => c5.length); + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + } + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c5) => !isNullSet(c5[0])); + if (this.set.length === 0) { + this.set = [first]; + } else if (this.set.length > 1) { + for (const c5 of this.set) { + if (c5.length === 1 && isAny(c5[0])) { + this.set = [c5]; + break; + } + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i5 = 0; i5 < this.set.length; i5++) { + if (i5 > 0) { + this.formatted += "||"; + } + const comps = this.set[i5]; + for (let k5 = 0; k5 < comps.length; k5++) { + if (k5 > 0) { + this.formatted += " "; + } + this.formatted += comps[k5].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range) { + range = range.replace(BUILDSTRIPRE, ""); + const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE); + const memoKey = memoOpts + ":" + range; + const cached2 = cache5.get(memoKey); + if (cached2) { + return cached2; + } + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug3("hyphen replace", range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug3("comparator trim", range); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug3("tilde trim", range); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug3("caret trim", range); + let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) { + rangeList = rangeList.filter((comp) => { + debug3("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + } + debug3("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp]; + } + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) { + rangeMap.delete(""); + } + const result = [...rangeMap.values()]; + cache5.set(memoKey, result); + return result; + } + intersects(range, options) { + if (!(range instanceof _Range)) { + throw new TypeError("a Range is required"); + } + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + // if ANY of the sets match ALL of its comparators, then pass + test(version2) { + if (!version2) { + return false; + } + if (typeof version2 === "string") { + try { + version2 = new SemVer(version2, this.options); + } catch (er) { + return false; + } + } + for (let i5 = 0; i5 < this.set.length; i5++) { + if (testSet(this.set[i5], version2, this.options)) { + return true; + } + } + return false; + } + }; + module.exports = Range; + var LRU = require_lrucache(); + var cache5 = new LRU(); + var parseOptions = require_parse_options(); + var Comparator = require_comparator(); + var debug3 = require_debug(); + var SemVer = require_semver(); + var { + safeRe: re, + src, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace + } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(); + var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g"); + var isNullSet = /* @__PURE__ */ __name((c5) => c5.value === "<0.0.0-0", "isNullSet"); + var isAny = /* @__PURE__ */ __name((c5) => c5.value === "", "isAny"); + var isSatisfiable = /* @__PURE__ */ __name((comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; + }, "isSatisfiable"); + var parseComparator = /* @__PURE__ */ __name((comp, options) => { + comp = comp.replace(re[t.BUILD], ""); + debug3("comp", comp, options); + comp = replaceCarets(comp, options); + debug3("caret", comp); + comp = replaceTildes(comp, options); + debug3("tildes", comp); + comp = replaceXRanges(comp, options); + debug3("xrange", comp); + comp = replaceStars(comp, options); + debug3("stars", comp); + return comp; + }, "parseComparator"); + var isX = /* @__PURE__ */ __name((id) => !id || id.toLowerCase() === "x" || id === "*", "isX"); + var invalidXRangeOrder = /* @__PURE__ */ __name((M, m3, p3) => isX(M) && !isX(m3) || isX(m3) && p3 && !isX(p3), "invalidXRangeOrder"); + var replaceTildes = /* @__PURE__ */ __name((comp, options) => { + return comp.trim().split(/\s+/).map((c5) => replaceTilde(c5, options)).join(" "); + }, "replaceTildes"); + var replaceTilde = /* @__PURE__ */ __name((comp, options) => { + const r5 = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + const z2 = options.includePrerelease ? "-0" : ""; + return comp.replace(r5, (_, M, m3, p3, pr) => { + debug3("tilde", comp, _, M, m3, p3, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m3)) { + ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`; + } else if (isX(p3)) { + ret = `>=${M}.${m3}.0${z2} <${M}.${+m3 + 1}.0-0`; + } else if (pr) { + debug3("replaceTilde pr", pr); + ret = `>=${M}.${m3}.${p3}-${pr} <${M}.${+m3 + 1}.0-0`; + } else { + ret = `>=${M}.${m3}.${p3} <${M}.${+m3 + 1}.0-0`; + } + debug3("tilde return", ret); + return ret; + }); + }, "replaceTilde"); + var replaceCarets = /* @__PURE__ */ __name((comp, options) => { + return comp.trim().split(/\s+/).map((c5) => replaceCaret(c5, options)).join(" "); + }, "replaceCarets"); + var replaceCaret = /* @__PURE__ */ __name((comp, options) => { + debug3("caret", comp, options); + const r5 = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z2 = options.includePrerelease ? "-0" : ""; + return comp.replace(r5, (_, M, m3, p3, pr) => { + debug3("caret", comp, _, M, m3, p3, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m3)) { + ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`; + } else if (isX(p3)) { + if (M === "0") { + ret = `>=${M}.${m3}.0${z2} <${M}.${+m3 + 1}.0-0`; + } else { + ret = `>=${M}.${m3}.0${z2} <${+M + 1}.0.0-0`; + } + } else if (pr) { + debug3("replaceCaret pr", pr); + if (M === "0") { + if (m3 === "0") { + ret = `>=${M}.${m3}.${p3}-${pr} <${M}.${m3}.${+p3 + 1}-0`; + } else { + ret = `>=${M}.${m3}.${p3}-${pr} <${M}.${+m3 + 1}.0-0`; + } + } else { + ret = `>=${M}.${m3}.${p3}-${pr} <${+M + 1}.0.0-0`; + } + } else { + debug3("no pr"); + if (M === "0") { + if (m3 === "0") { + ret = `>=${M}.${m3}.${p3} <${M}.${m3}.${+p3 + 1}-0`; + } else { + ret = `>=${M}.${m3}.${p3} <${M}.${+m3 + 1}.0-0`; + } + } else { + ret = `>=${M}.${m3}.${p3} <${+M + 1}.0.0-0`; + } + } + debug3("caret return", ret); + return ret; + }); + }, "replaceCaret"); + var replaceXRanges = /* @__PURE__ */ __name((comp, options) => { + debug3("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c5) => replaceXRange(c5, options)).join(" "); + }, "replaceXRanges"); + var replaceXRange = /* @__PURE__ */ __name((comp, options) => { + comp = comp.trim(); + const r5 = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r5, (ret, gtlt, M, m3, p3, pr) => { + debug3("xRange", comp, ret, gtlt, M, m3, p3, pr); + if (invalidXRangeOrder(M, m3, p3)) { + return comp; + } + const xM = isX(M); + const xm = xM || isX(m3); + const xp = xm || isX(p3); + const anyX = xp; + if (gtlt === "=" && anyX) { + gtlt = ""; + } + pr = options.includePrerelease ? "-0" : ""; + if (xM) { + if (gtlt === ">" || gtlt === "<") { + ret = "<0.0.0-0"; + } else { + ret = "*"; + } + } else if (gtlt && anyX) { + if (xm) { + m3 = 0; + } + p3 = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m3 = 0; + p3 = 0; + } else { + m3 = +m3 + 1; + p3 = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) { + M = +M + 1; + } else { + m3 = +m3 + 1; + } + } + if (gtlt === "<") { + pr = "-0"; + } + ret = `${gtlt + M}.${m3}.${p3}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m3}.0${pr} <${M}.${+m3 + 1}.0-0`; + } + debug3("xRange return", ret); + return ret; + }); + }, "replaceXRange"); + var replaceStars = /* @__PURE__ */ __name((comp, options) => { + debug3("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); + }, "replaceStars"); + var replaceGTE0 = /* @__PURE__ */ __name((comp, options) => { + debug3("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); + }, "replaceGTE0"); + var hyphenReplace = /* @__PURE__ */ __name((incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ""; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? "-0" : ""}`; + } + if (isX(tM)) { + to = ""; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }, "hyphenReplace"); + var testSet = /* @__PURE__ */ __name((set2, version2, options) => { + for (let i5 = 0; i5 < set2.length; i5++) { + if (!set2[i5].test(version2)) { + return false; + } + } + if (version2.prerelease.length && !options.includePrerelease) { + for (let i5 = 0; i5 < set2.length; i5++) { + debug3(set2[i5].semver); + if (set2[i5].semver === Comparator.ANY) { + continue; + } + if (set2[i5].semver.prerelease.length > 0) { + const allowed = set2[i5].semver; + if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) { + return true; + } + } + } + return false; + } + return true; + }, "testSet"); + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js +var require_comparator = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports, module) { + "use strict"; + var ANY = /* @__PURE__ */ Symbol("SemVer ANY"); + var Comparator = class _Comparator { + static { + __name(this, "Comparator"); + } + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions(options); + if (comp instanceof _Comparator) { + if (comp.loose === !!options.loose) { + return comp; + } else { + comp = comp.value; + } + } + comp = comp.trim().split(/\s+/).join(" "); + debug3("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) { + this.value = ""; + } else { + this.value = this.operator + this.semver.version; + } + debug3("comp", this); + } + parse(comp) { + const r5 = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m3 = comp.match(r5); + if (!m3) { + throw new TypeError(`Invalid comparator: ${comp}`); + } + this.operator = m3[1] !== void 0 ? m3[1] : ""; + if (this.operator === "=") { + this.operator = ""; + } + if (!m3[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m3[2], this.options.loose); + } + } + toString() { + return this.value; + } + test(version2) { + debug3("Comparator.test", version2, this.options.loose); + if (this.semver === ANY || version2 === ANY) { + return true; + } + if (typeof version2 === "string") { + try { + version2 = new SemVer(version2, this.options); + } catch (er) { + return false; + } + } + return cmp(version2, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof _Comparator)) { + throw new TypeError("a Comparator is required"); + } + if (this.operator === "") { + if (this.value === "") { + return true; + } + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") { + return true; + } + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) { + return false; + } + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) { + return false; + } + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { + return true; + } + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { + return true; + } + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) { + return true; + } + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) { + return true; + } + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) { + return true; + } + return false; + } + }; + module.exports = Comparator; + var parseOptions = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug3 = require_debug(); + var SemVer = require_semver(); + var Range = require_range(); + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js +var require_satisfies = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports, module) { + "use strict"; + var Range = require_range(); + var satisfies = /* @__PURE__ */ __name((version2, range, options) => { + try { + range = new Range(range, options); + } catch (er) { + return false; + } + return range.test(version2); + }, "satisfies"); + module.exports = satisfies; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js +var require_to_comparators = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports, module) { + "use strict"; + var Range = require_range(); + var toComparators = /* @__PURE__ */ __name((range, options) => new Range(range, options).set.map((comp) => comp.map((c5) => c5.value).join(" ").trim().split(" ")), "toComparators"); + module.exports = toComparators; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js +var require_max_satisfying = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var maxSatisfying = /* @__PURE__ */ __name((versions2, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions2.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; + }, "maxSatisfying"); + module.exports = maxSatisfying; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js +var require_min_satisfying = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var minSatisfying = /* @__PURE__ */ __name((versions2, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions2.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; + }, "minSatisfying"); + module.exports = minSatisfying; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js +var require_min_version = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var gt = require_gt(); + var minVersion = /* @__PURE__ */ __name((range, loose) => { + range = new Range(range, loose); + let minver = new SemVer("0.0.0"); + if (range.test(minver)) { + return minver; + } + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) { + return minver; + } + minver = null; + for (let i5 = 0; i5 < range.set.length; ++i5) { + const comparators = range.set[i5]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + /* fallthrough */ + case "": + case ">=": + if (!setMin || gt(compver, setMin)) { + setMin = compver; + } + break; + case "<": + case "<=": + break; + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin; + } + } + if (minver && range.test(minver)) { + return minver; + } + return null; + }, "minVersion"); + module.exports = minVersion; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js +var require_valid2 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports, module) { + "use strict"; + var Range = require_range(); + var validRange = /* @__PURE__ */ __name((range, options) => { + try { + return new Range(range, options).range || "*"; + } catch (er) { + return null; + } + }, "validRange"); + module.exports = validRange; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js +var require_outside = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte = require_lte(); + var gte = require_gte(); + var outside = /* @__PURE__ */ __name((version2, range, hilo, options) => { + version2 = new SemVer(version2, options); + range = new Range(range, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + if (satisfies(version2, range, options)) { + return false; + } + for (let i5 = 0; i5 < range.set.length; ++i5) { + const comparators = range.set[i5]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator(">=0.0.0"); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + if (high.operator === comp || high.operator === ecomp) { + return false; + } + if ((!low.operator || low.operator === comp) && ltefn(version2, low.semver)) { + return false; + } else if (low.operator === ecomp && ltfn(version2, low.semver)) { + return false; + } + } + return true; + }, "outside"); + module.exports = outside; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js +var require_gtr = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports, module) { + "use strict"; + var outside = require_outside(); + var gtr = /* @__PURE__ */ __name((version2, range, options) => outside(version2, range, ">", options), "gtr"); + module.exports = gtr; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js +var require_ltr = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports, module) { + "use strict"; + var outside = require_outside(); + var ltr = /* @__PURE__ */ __name((version2, range, options) => outside(version2, range, "<", options), "ltr"); + module.exports = ltr; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js +var require_intersects = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports, module) { + "use strict"; + var Range = require_range(); + var intersects = /* @__PURE__ */ __name((r1, r22, options) => { + r1 = new Range(r1, options); + r22 = new Range(r22, options); + return r1.intersects(r22, options); + }, "intersects"); + module.exports = intersects; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js +var require_simplify = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports, module) { + "use strict"; + var satisfies = require_satisfies(); + var compare = require_compare(); + module.exports = (versions2, range, options) => { + const set2 = []; + let first = null; + let prev = null; + const v = versions2.sort((a5, b5) => compare(a5, b5, options)); + for (const version2 of v) { + const included = satisfies(version2, range, options); + if (included) { + prev = version2; + if (!first) { + first = version2; + } + } else { + if (prev) { + set2.push([first, prev]); + } + prev = null; + first = null; + } + } + if (first) { + set2.push([first, null]); + } + const ranges = []; + for (const [min, max] of set2) { + if (min === max) { + ranges.push(min); + } else if (!max && min === v[0]) { + ranges.push("*"); + } else if (!max) { + ranges.push(`>=${min}`); + } else if (min === v[0]) { + ranges.push(`<=${max}`); + } else { + ranges.push(`${min} - ${max}`); + } + } + const simplified = ranges.join(" || "); + const original = typeof range.raw === "string" ? range.raw : String(range); + return simplified.length < original.length ? simplified : range; + }; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js +var require_subset = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports, module) { + "use strict"; + var Range = require_range(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = /* @__PURE__ */ __name((sub, dom, options = {}) => { + if (sub === dom) { + return true; + } + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) { + continue OUTER; + } + } + if (sawNonNull) { + return false; + } + } + return true; + }, "subset"); + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = /* @__PURE__ */ __name((sub, dom, options) => { + if (sub === dom) { + return true; + } + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true; + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease; + } else { + sub = minimumVersion; + } + } + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true; + } else { + dom = minimumVersion; + } + } + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c5 of sub) { + if (c5.operator === ">" || c5.operator === ">=") { + gt = higherGT(gt, c5, options); + } else if (c5.operator === "<" || c5.operator === "<=") { + lt = lowerLT(lt, c5, options); + } else { + eqSet.add(c5.semver); + } + } + if (eqSet.size > 1) { + return null; + } + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) { + return null; + } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { + return null; + } + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null; + } + if (lt && !satisfies(eq, String(lt), options)) { + return null; + } + for (const c5 of dom) { + if (!satisfies(eq, String(c5), options)) { + return false; + } + } + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false; + } + for (const c5 of dom) { + hasDomGT = hasDomGT || c5.operator === ">" || c5.operator === ">="; + hasDomLT = hasDomLT || c5.operator === "<" || c5.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c5.semver.prerelease && c5.semver.prerelease.length && c5.semver.major === needDomGTPre.major && c5.semver.minor === needDomGTPre.minor && c5.semver.patch === needDomGTPre.patch) { + needDomGTPre = false; + } + } + if (c5.operator === ">" || c5.operator === ">=") { + higher = higherGT(gt, c5, options); + if (higher === c5 && higher !== gt) { + return false; + } + } else if (gt.operator === ">=" && !c5.test(gt.semver)) { + return false; + } + } + if (lt) { + if (needDomLTPre) { + if (c5.semver.prerelease && c5.semver.prerelease.length && c5.semver.major === needDomLTPre.major && c5.semver.minor === needDomLTPre.minor && c5.semver.patch === needDomLTPre.patch) { + needDomLTPre = false; + } + } + if (c5.operator === "<" || c5.operator === "<=") { + lower = lowerLT(lt, c5, options); + if (lower === c5 && lower !== lt) { + return false; + } + } else if (lt.operator === "<=" && !c5.test(lt.semver)) { + return false; + } + } + if (!c5.operator && (lt || gt) && gtltComp !== 0) { + return false; + } + } + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false; + } + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false; + } + if (needDomGTPre || needDomLTPre) { + return false; + } + return true; + }, "simpleSubset"); + var higherGT = /* @__PURE__ */ __name((a5, b5, options) => { + if (!a5) { + return b5; + } + const comp = compare(a5.semver, b5.semver, options); + return comp > 0 ? a5 : comp < 0 ? b5 : b5.operator === ">" && a5.operator === ">=" ? b5 : a5; + }, "higherGT"); + var lowerLT = /* @__PURE__ */ __name((a5, b5, options) => { + if (!a5) { + return b5; + } + const comp = compare(a5.semver, b5.semver, options); + return comp < 0 ? a5 : comp > 0 ? b5 : b5.operator === "<" && a5.operator === "<=" ? b5 : a5; + }, "lowerLT"); + module.exports = subset; + } +}); + +// ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js +var require_semver2 = __commonJS({ + "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports, module) { + "use strict"; + var internalRe = require_re(); + var constants = require_constants(); + var SemVer = require_semver(); + var identifiers = require_identifiers(); + var parse4 = require_parse(); + var valid = require_valid(); + var clean = require_clean(); + var inc = require_inc(); + var diff = require_diff(); + var major = require_major(); + var minor = require_minor(); + var patch = require_patch(); + var prerelease = require_prerelease(); + var compare = require_compare(); + var rcompare = require_rcompare(); + var compareLoose = require_compare_loose(); + var compareBuild = require_compare_build(); + var sort = require_sort(); + var rsort = require_rsort(); + var gt = require_gt(); + var lt = require_lt(); + var eq = require_eq(); + var neq = require_neq(); + var gte = require_gte(); + var lte = require_lte(); + var cmp = require_cmp(); + var coerce = require_coerce(); + var truncate = require_truncate(); + var Comparator = require_comparator(); + var Range = require_range(); + var satisfies = require_satisfies(); + var toComparators = require_to_comparators(); + var maxSatisfying = require_max_satisfying(); + var minSatisfying = require_min_satisfying(); + var minVersion = require_min_version(); + var validRange = require_valid2(); + var outside = require_outside(); + var gtr = require_gtr(); + var ltr = require_ltr(); + var intersects = require_intersects(); + var simplifyRange = require_simplify(); + var subset = require_subset(); + module.exports = { + parse: parse4, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + truncate, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +var require_asymmetricKeyDetailsSupported = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js"(exports, module) { + var semver = require_semver2(); + module.exports = semver.satisfies(process.version, ">=15.7.0"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +var require_rsaPssKeyDetailsSupported = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js"(exports, module) { + var semver = require_semver2(); + module.exports = semver.satisfies(process.version, ">=16.9.0"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +var require_validateAsymmetricKey = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js"(exports, module) { + var ASYMMETRIC_KEY_DETAILS_SUPPORTED = require_asymmetricKeyDetailsSupported(); + var RSA_PSS_KEY_DETAILS_SUPPORTED = require_rsaPssKeyDetailsSupported(); + var allowedAlgorithmsForKeys = { + "ec": ["ES256", "ES384", "ES512"], + "rsa": ["RS256", "PS256", "RS384", "PS384", "RS512", "PS512"], + "rsa-pss": ["PS256", "PS384", "PS512"] + }; + var allowedCurves = { + ES256: "prime256v1", + ES384: "secp384r1", + ES512: "secp521r1" + }; + module.exports = function(algorithm, key) { + if (!algorithm || !key) return; + const keyType = key.asymmetricKeyType; + if (!keyType) return; + const allowedAlgorithms = allowedAlgorithmsForKeys[keyType]; + if (!allowedAlgorithms) { + throw new Error(`Unknown key type "${keyType}".`); + } + if (!allowedAlgorithms.includes(algorithm)) { + throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(", ")}.`); + } + if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) { + switch (keyType) { + case "ec": + const keyCurve = key.asymmetricKeyDetails.namedCurve; + const allowedCurve = allowedCurves[algorithm]; + if (keyCurve !== allowedCurve) { + throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`); + } + break; + case "rsa-pss": + if (RSA_PSS_KEY_DETAILS_SUPPORTED) { + const length = parseInt(algorithm.slice(-3), 10); + const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails; + if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`); + } + if (saltLength !== void 0 && saltLength > length >> 3) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`); + } + } + break; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/psSupported.js +var require_psSupported = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/lib/psSupported.js"(exports, module) { + var semver = require_semver2(); + module.exports = semver.satisfies(process.version, "^6.12.0 || >=8.0.0"); + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/verify.js +var require_verify = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/verify.js"(exports, module) { + var JsonWebTokenError2 = require_JsonWebTokenError(); + var NotBeforeError2 = require_NotBeforeError(); + var TokenExpiredError2 = require_TokenExpiredError(); + var decode3 = require_decode(); + var timespan = require_timespan(); + var validateAsymmetricKey = require_validateAsymmetricKey(); + var PS_SUPPORTED = require_psSupported(); + var jws = require_jws(); + var { KeyObject, createSecretKey, createPublicKey } = __require("crypto"); + var PUB_KEY_ALGS = ["RS256", "RS384", "RS512"]; + var EC_KEY_ALGS = ["ES256", "ES384", "ES512"]; + var RSA_KEY_ALGS = ["RS256", "RS384", "RS512"]; + var HS_ALGS = ["HS256", "HS384", "HS512"]; + if (PS_SUPPORTED) { + PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, "PS256", "PS384", "PS512"); + RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, "PS256", "PS384", "PS512"); + } + module.exports = function(jwtString, secretOrPublicKey, options, callback) { + if (typeof options === "function" && !callback) { + callback = options; + options = {}; + } + if (!options) { + options = {}; + } + options = Object.assign({}, options); + let done; + if (callback) { + done = callback; + } else { + done = /* @__PURE__ */ __name(function(err, data) { + if (err) throw err; + return data; + }, "done"); + } + if (options.clockTimestamp && typeof options.clockTimestamp !== "number") { + return done(new JsonWebTokenError2("clockTimestamp must be a number")); + } + if (options.nonce !== void 0 && (typeof options.nonce !== "string" || options.nonce.trim() === "")) { + return done(new JsonWebTokenError2("nonce must be a non-empty string")); + } + if (options.allowInvalidAsymmetricKeyTypes !== void 0 && typeof options.allowInvalidAsymmetricKeyTypes !== "boolean") { + return done(new JsonWebTokenError2("allowInvalidAsymmetricKeyTypes must be a boolean")); + } + const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1e3); + if (!jwtString) { + return done(new JsonWebTokenError2("jwt must be provided")); + } + if (typeof jwtString !== "string") { + return done(new JsonWebTokenError2("jwt must be a string")); + } + const parts = jwtString.split("."); + if (parts.length !== 3) { + return done(new JsonWebTokenError2("jwt malformed")); + } + let decodedToken; + try { + decodedToken = decode3(jwtString, { complete: true }); + } catch (err) { + return done(err); + } + if (!decodedToken) { + return done(new JsonWebTokenError2("invalid token")); + } + const header = decodedToken.header; + let getSecret; + if (typeof secretOrPublicKey === "function") { + if (!callback) { + return done(new JsonWebTokenError2("verify must be called asynchronous if secret or public key is provided as a callback")); + } + getSecret = secretOrPublicKey; + } else { + getSecret = /* @__PURE__ */ __name(function(header2, secretCallback) { + return secretCallback(null, secretOrPublicKey); + }, "getSecret"); + } + return getSecret(header, function(err, secretOrPublicKey2) { + if (err) { + return done(new JsonWebTokenError2("error in secret or public key callback: " + err.message)); + } + const hasSignature = parts[2].trim() !== ""; + if (!hasSignature && secretOrPublicKey2) { + return done(new JsonWebTokenError2("jwt signature is required")); + } + if (hasSignature && !secretOrPublicKey2) { + return done(new JsonWebTokenError2("secret or public key must be provided")); + } + if (!hasSignature && !options.algorithms) { + return done(new JsonWebTokenError2('please specify "none" in "algorithms" to verify unsigned tokens')); + } + if (secretOrPublicKey2 != null && !(secretOrPublicKey2 instanceof KeyObject)) { + try { + secretOrPublicKey2 = createPublicKey(secretOrPublicKey2); + } catch (_) { + try { + secretOrPublicKey2 = createSecretKey(typeof secretOrPublicKey2 === "string" ? Buffer.from(secretOrPublicKey2) : secretOrPublicKey2); + } catch (_2) { + return done(new JsonWebTokenError2("secretOrPublicKey is not valid key material")); + } + } + } + if (!options.algorithms) { + if (secretOrPublicKey2.type === "secret") { + options.algorithms = HS_ALGS; + } else if (["rsa", "rsa-pss"].includes(secretOrPublicKey2.asymmetricKeyType)) { + options.algorithms = RSA_KEY_ALGS; + } else if (secretOrPublicKey2.asymmetricKeyType === "ec") { + options.algorithms = EC_KEY_ALGS; + } else { + options.algorithms = PUB_KEY_ALGS; + } + } + if (options.algorithms.indexOf(decodedToken.header.alg) === -1) { + return done(new JsonWebTokenError2("invalid algorithm")); + } + if (header.alg.startsWith("HS") && secretOrPublicKey2.type !== "secret") { + return done(new JsonWebTokenError2(`secretOrPublicKey must be a symmetric key when using ${header.alg}`)); + } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey2.type !== "public") { + return done(new JsonWebTokenError2(`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)); + } + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPublicKey2); + } catch (e5) { + return done(e5); + } + } + let valid; + try { + valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey2); + } catch (e5) { + return done(e5); + } + if (!valid) { + return done(new JsonWebTokenError2("invalid signature")); + } + const payload = decodedToken.payload; + if (typeof payload.nbf !== "undefined" && !options.ignoreNotBefore) { + if (typeof payload.nbf !== "number") { + return done(new JsonWebTokenError2("invalid nbf value")); + } + if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) { + return done(new NotBeforeError2("jwt not active", new Date(payload.nbf * 1e3))); + } + } + if (typeof payload.exp !== "undefined" && !options.ignoreExpiration) { + if (typeof payload.exp !== "number") { + return done(new JsonWebTokenError2("invalid exp value")); + } + if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError2("jwt expired", new Date(payload.exp * 1e3))); + } + } + if (options.audience) { + const audiences = Array.isArray(options.audience) ? options.audience : [options.audience]; + const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud]; + const match = target.some(function(targetAudience) { + return audiences.some(function(audience) { + return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience; + }); + }); + if (!match) { + return done(new JsonWebTokenError2("jwt audience invalid. expected: " + audiences.join(" or "))); + } + } + if (options.issuer) { + const invalid_issuer = typeof options.issuer === "string" && payload.iss !== options.issuer || Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1; + if (invalid_issuer) { + return done(new JsonWebTokenError2("jwt issuer invalid. expected: " + options.issuer)); + } + } + if (options.subject) { + if (payload.sub !== options.subject) { + return done(new JsonWebTokenError2("jwt subject invalid. expected: " + options.subject)); + } + } + if (options.jwtid) { + if (payload.jti !== options.jwtid) { + return done(new JsonWebTokenError2("jwt jwtid invalid. expected: " + options.jwtid)); + } + } + if (options.nonce) { + if (payload.nonce !== options.nonce) { + return done(new JsonWebTokenError2("jwt nonce invalid. expected: " + options.nonce)); + } + } + if (options.maxAge) { + if (typeof payload.iat !== "number") { + return done(new JsonWebTokenError2("iat required when maxAge is specified")); + } + const maxAgeTimestamp = timespan(options.maxAge, payload.iat); + if (typeof maxAgeTimestamp === "undefined") { + return done(new JsonWebTokenError2('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError2("maxAge exceeded", new Date(maxAgeTimestamp * 1e3))); + } + } + if (options.complete === true) { + const signature = decodedToken.signature; + return done(null, { + header, + payload, + signature + }); + } + return done(null, payload); + }); + }; + } +}); + +// ../../node_modules/.pnpm/lodash.includes@4.3.0/node_modules/lodash.includes/index.js +var require_lodash = __commonJS({ + "../../node_modules/.pnpm/lodash.includes@4.3.0/node_modules/lodash.includes/index.js"(exports, module) { + var INFINITY = 1 / 0; + var MAX_SAFE_INTEGER = 9007199254740991; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var argsTag = "[object Arguments]"; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var stringTag = "[object String]"; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var freeParseInt = parseInt; + function arrayMap(array2, iteratee) { + var index = -1, length = array2 ? array2.length : 0, result = Array(length); + while (++index < length) { + result[index] = iteratee(array2[index], index, array2); + } + return result; + } + __name(arrayMap, "arrayMap"); + function baseFindIndex(array2, predicate, fromIndex, fromRight) { + var length = array2.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) { + if (predicate(array2[index], index, array2)) { + return index; + } + } + return -1; + } + __name(baseFindIndex, "baseFindIndex"); + function baseIndexOf(array2, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array2, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, length = array2.length; + while (++index < length) { + if (array2[index] === value) { + return index; + } + } + return -1; + } + __name(baseIndexOf, "baseIndexOf"); + function baseIsNaN(value) { + return value !== value; + } + __name(baseIsNaN, "baseIsNaN"); + function baseTimes(n3, iteratee) { + var index = -1, result = Array(n3); + while (++index < n3) { + result[index] = iteratee(index); + } + return result; + } + __name(baseTimes, "baseTimes"); + function baseValues(object2, props) { + return arrayMap(props, function(key) { + return object2[key]; + }); + } + __name(baseValues, "baseValues"); + function overArg(func, transform2) { + return function(arg) { + return func(transform2(arg)); + }; + } + __name(overArg, "overArg"); + var objectProto = Object.prototype; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectToString = objectProto.toString; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var nativeKeys = overArg(Object.keys, Object); + var nativeMax = Math.max; + function arrayLikeKeys(value, inherited) { + var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []; + var length = result.length, skipIndexes = !!length; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + __name(arrayLikeKeys, "arrayLikeKeys"); + function baseKeys(object2) { + if (!isPrototype(object2)) { + return nativeKeys(object2); + } + var result = []; + for (var key in Object(object2)) { + if (hasOwnProperty.call(object2, key) && key != "constructor") { + result.push(key); + } + } + return result; + } + __name(baseKeys, "baseKeys"); + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + __name(isIndex, "isIndex"); + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + __name(isPrototype, "isPrototype"); + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; + } + __name(includes, "includes"); + function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag); + } + __name(isArguments, "isArguments"); + var isArray = Array.isArray; + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + __name(isArrayLike, "isArrayLike"); + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + __name(isArrayLikeObject, "isArrayLikeObject"); + function isFunction(value) { + var tag = isObject2(value) ? objectToString.call(value) : ""; + return tag == funcTag || tag == genTag; + } + __name(isFunction, "isFunction"); + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + __name(isLength, "isLength"); + function isObject2(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + __name(isObject2, "isObject"); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag; + } + __name(isString, "isString"); + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + __name(isSymbol, "isSymbol"); + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign2 = value < 0 ? -1 : 1; + return sign2 * MAX_INTEGER; + } + return value === value ? value : 0; + } + __name(toFinite, "toFinite"); + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + __name(toInteger, "toInteger"); + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject2(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject2(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + __name(toNumber, "toNumber"); + function keys(object2) { + return isArrayLike(object2) ? arrayLikeKeys(object2) : baseKeys(object2); + } + __name(keys, "keys"); + function values(object2) { + return object2 ? baseValues(object2, keys(object2)) : []; + } + __name(values, "values"); + module.exports = includes; + } +}); + +// ../../node_modules/.pnpm/lodash.isboolean@3.0.3/node_modules/lodash.isboolean/index.js +var require_lodash2 = __commonJS({ + "../../node_modules/.pnpm/lodash.isboolean@3.0.3/node_modules/lodash.isboolean/index.js"(exports, module) { + var boolTag = "[object Boolean]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isBoolean(value) { + return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag; + } + __name(isBoolean, "isBoolean"); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + module.exports = isBoolean; + } +}); + +// ../../node_modules/.pnpm/lodash.isinteger@4.0.4/node_modules/lodash.isinteger/index.js +var require_lodash3 = __commonJS({ + "../../node_modules/.pnpm/lodash.isinteger@4.0.4/node_modules/lodash.isinteger/index.js"(exports, module) { + var INFINITY = 1 / 0; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isInteger(value) { + return typeof value == "number" && value == toInteger(value); + } + __name(isInteger, "isInteger"); + function isObject2(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + __name(isObject2, "isObject"); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + __name(isSymbol, "isSymbol"); + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign2 = value < 0 ? -1 : 1; + return sign2 * MAX_INTEGER; + } + return value === value ? value : 0; + } + __name(toFinite, "toFinite"); + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + __name(toInteger, "toInteger"); + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject2(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject2(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + __name(toNumber, "toNumber"); + module.exports = isInteger; + } +}); + +// ../../node_modules/.pnpm/lodash.isnumber@3.0.3/node_modules/lodash.isnumber/index.js +var require_lodash4 = __commonJS({ + "../../node_modules/.pnpm/lodash.isnumber@3.0.3/node_modules/lodash.isnumber/index.js"(exports, module) { + var numberTag = "[object Number]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + function isNumber(value) { + return typeof value == "number" || isObjectLike(value) && objectToString.call(value) == numberTag; + } + __name(isNumber, "isNumber"); + module.exports = isNumber; + } +}); + +// ../../node_modules/.pnpm/lodash.isplainobject@4.0.6/node_modules/lodash.isplainobject/index.js +var require_lodash5 = __commonJS({ + "../../node_modules/.pnpm/lodash.isplainobject@4.0.6/node_modules/lodash.isplainobject/index.js"(exports, module) { + var objectTag = "[object Object]"; + function isHostObject(value) { + var result = false; + if (value != null && typeof value.toString != "function") { + try { + result = !!(value + ""); + } catch (e5) { + } + } + return result; + } + __name(isHostObject, "isHostObject"); + function overArg(func, transform2) { + return function(arg) { + return func(transform2(arg)); + }; + } + __name(overArg, "overArg"); + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var objectCtorString = funcToString.call(Object); + var objectToString = objectProto.toString; + var getPrototype = overArg(Object.getPrototypeOf, Object); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + function isPlainObject2(value) { + if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + __name(isPlainObject2, "isPlainObject"); + module.exports = isPlainObject2; + } +}); + +// ../../node_modules/.pnpm/lodash.isstring@4.0.1/node_modules/lodash.isstring/index.js +var require_lodash6 = __commonJS({ + "../../node_modules/.pnpm/lodash.isstring@4.0.1/node_modules/lodash.isstring/index.js"(exports, module) { + var stringTag = "[object String]"; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + var isArray = Array.isArray; + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + function isString(value) { + return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag; + } + __name(isString, "isString"); + module.exports = isString; + } +}); + +// ../../node_modules/.pnpm/lodash.once@4.1.1/node_modules/lodash.once/index.js +var require_lodash7 = __commonJS({ + "../../node_modules/.pnpm/lodash.once@4.1.1/node_modules/lodash.once/index.js"(exports, module) { + var FUNC_ERROR_TEXT = "Expected a function"; + var INFINITY = 1 / 0; + var MAX_INTEGER = 17976931348623157e292; + var NAN = 0 / 0; + var symbolTag = "[object Symbol]"; + var reTrim = /^\s+|\s+$/g; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsOctal = /^0o[0-7]+$/i; + var freeParseInt = parseInt; + var objectProto = Object.prototype; + var objectToString = objectProto.toString; + function before(n3, func) { + var result; + if (typeof func != "function") { + throw new TypeError(FUNC_ERROR_TEXT); + } + n3 = toInteger(n3); + return function() { + if (--n3 > 0) { + result = func.apply(this, arguments); + } + if (n3 <= 1) { + func = void 0; + } + return result; + }; + } + __name(before, "before"); + function once(func) { + return before(2, func); + } + __name(once, "once"); + function isObject2(value) { + var type = typeof value; + return !!value && (type == "object" || type == "function"); + } + __name(isObject2, "isObject"); + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + __name(isObjectLike, "isObjectLike"); + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + __name(isSymbol, "isSymbol"); + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign2 = value < 0 ? -1 : 1; + return sign2 * MAX_INTEGER; + } + return value === value ? value : 0; + } + __name(toFinite, "toFinite"); + function toInteger(value) { + var result = toFinite(value), remainder = result % 1; + return result === result ? remainder ? result - remainder : result : 0; + } + __name(toInteger, "toInteger"); + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject2(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject2(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ""); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + __name(toNumber, "toNumber"); + module.exports = once; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/sign.js +var require_sign = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/sign.js"(exports, module) { + var timespan = require_timespan(); + var PS_SUPPORTED = require_psSupported(); + var validateAsymmetricKey = require_validateAsymmetricKey(); + var jws = require_jws(); + var includes = require_lodash(); + var isBoolean = require_lodash2(); + var isInteger = require_lodash3(); + var isNumber = require_lodash4(); + var isPlainObject2 = require_lodash5(); + var isString = require_lodash6(); + var once = require_lodash7(); + var { KeyObject, createSecretKey, createPrivateKey } = __require("crypto"); + var SUPPORTED_ALGS = ["RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "HS256", "HS384", "HS512", "none"]; + if (PS_SUPPORTED) { + SUPPORTED_ALGS.splice(3, 0, "PS256", "PS384", "PS512"); + } + var sign_options_schema = { + expiresIn: { isValid: /* @__PURE__ */ __name(function(value) { + return isInteger(value) || isString(value) && value; + }, "isValid"), message: '"expiresIn" should be a number of seconds or string representing a timespan' }, + notBefore: { isValid: /* @__PURE__ */ __name(function(value) { + return isInteger(value) || isString(value) && value; + }, "isValid"), message: '"notBefore" should be a number of seconds or string representing a timespan' }, + audience: { isValid: /* @__PURE__ */ __name(function(value) { + return isString(value) || Array.isArray(value); + }, "isValid"), message: '"audience" must be a string or array' }, + algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' }, + header: { isValid: isPlainObject2, message: '"header" must be an object' }, + encoding: { isValid: isString, message: '"encoding" must be a string' }, + issuer: { isValid: isString, message: '"issuer" must be a string' }, + subject: { isValid: isString, message: '"subject" must be a string' }, + jwtid: { isValid: isString, message: '"jwtid" must be a string' }, + noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' }, + keyid: { isValid: isString, message: '"keyid" must be a string' }, + mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' }, + allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean' }, + allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean' } + }; + var registered_claims_schema = { + iat: { isValid: isNumber, message: '"iat" should be a number of seconds' }, + exp: { isValid: isNumber, message: '"exp" should be a number of seconds' }, + nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' } + }; + function validate3(schema2, allowUnknown, object2, parameterName) { + if (!isPlainObject2(object2)) { + throw new Error('Expected "' + parameterName + '" to be a plain object.'); + } + Object.keys(object2).forEach(function(key) { + const validator = schema2[key]; + if (!validator) { + if (!allowUnknown) { + throw new Error('"' + key + '" is not allowed in "' + parameterName + '"'); + } + return; + } + if (!validator.isValid(object2[key])) { + throw new Error(validator.message); + } + }); + } + __name(validate3, "validate"); + function validateOptions(options) { + return validate3(sign_options_schema, false, options, "options"); + } + __name(validateOptions, "validateOptions"); + function validatePayload(payload) { + return validate3(registered_claims_schema, true, payload, "payload"); + } + __name(validatePayload, "validatePayload"); + var options_to_payload = { + "audience": "aud", + "issuer": "iss", + "subject": "sub", + "jwtid": "jti" + }; + var options_for_objects = [ + "expiresIn", + "notBefore", + "noTimestamp", + "audience", + "issuer", + "subject", + "jwtid" + ]; + module.exports = function(payload, secretOrPrivateKey, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } else { + options = options || {}; + } + const isObjectPayload = typeof payload === "object" && !Buffer.isBuffer(payload); + const header = Object.assign({ + alg: options.algorithm || "HS256", + typ: isObjectPayload ? "JWT" : void 0, + kid: options.keyid + }, options.header); + function failure2(err) { + if (callback) { + return callback(err); + } + throw err; + } + __name(failure2, "failure"); + if (!secretOrPrivateKey && options.algorithm !== "none") { + return failure2(new Error("secretOrPrivateKey must have a value")); + } + if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) { + try { + secretOrPrivateKey = createPrivateKey(secretOrPrivateKey); + } catch (_) { + try { + secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === "string" ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey); + } catch (_2) { + return failure2(new Error("secretOrPrivateKey is not valid key material")); + } + } + } + if (header.alg.startsWith("HS") && secretOrPrivateKey.type !== "secret") { + return failure2(new Error(`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)); + } else if (/^(?:RS|PS|ES)/.test(header.alg)) { + if (secretOrPrivateKey.type !== "private") { + return failure2(new Error(`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)); + } + if (!options.allowInsecureKeySizes && !header.alg.startsWith("ES") && secretOrPrivateKey.asymmetricKeyDetails !== void 0 && //KeyObject.asymmetricKeyDetails is supported in Node 15+ + secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) { + return failure2(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + } + if (typeof payload === "undefined") { + return failure2(new Error("payload is required")); + } else if (isObjectPayload) { + try { + validatePayload(payload); + } catch (error62) { + return failure2(error62); + } + if (!options.mutatePayload) { + payload = Object.assign({}, payload); + } + } else { + const invalid_options = options_for_objects.filter(function(opt) { + return typeof options[opt] !== "undefined"; + }); + if (invalid_options.length > 0) { + return failure2(new Error("invalid " + invalid_options.join(",") + " option for " + typeof payload + " payload")); + } + } + if (typeof payload.exp !== "undefined" && typeof options.expiresIn !== "undefined") { + return failure2(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.')); + } + if (typeof payload.nbf !== "undefined" && typeof options.notBefore !== "undefined") { + return failure2(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.')); + } + try { + validateOptions(options); + } catch (error62) { + return failure2(error62); + } + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPrivateKey); + } catch (error62) { + return failure2(error62); + } + } + const timestamp = payload.iat || Math.floor(Date.now() / 1e3); + if (options.noTimestamp) { + delete payload.iat; + } else if (isObjectPayload) { + payload.iat = timestamp; + } + if (typeof options.notBefore !== "undefined") { + try { + payload.nbf = timespan(options.notBefore, timestamp); + } catch (err) { + return failure2(err); + } + if (typeof payload.nbf === "undefined") { + return failure2(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + if (typeof options.expiresIn !== "undefined" && typeof payload === "object") { + try { + payload.exp = timespan(options.expiresIn, timestamp); + } catch (err) { + return failure2(err); + } + if (typeof payload.exp === "undefined") { + return failure2(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + Object.keys(options_to_payload).forEach(function(key) { + const claim2 = options_to_payload[key]; + if (typeof options[key] !== "undefined") { + if (typeof payload[claim2] !== "undefined") { + return failure2(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim2 + '" property.')); + } + payload[claim2] = options[key]; + } + }); + const encoding = options.encoding || "utf8"; + if (typeof callback === "function") { + callback = callback && once(callback); + jws.createSign({ + header, + privateKey: secretOrPrivateKey, + payload, + encoding + }).once("error", callback).once("done", function(signature) { + if (!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + callback(null, signature); + }); + } else { + let signature = jws.sign({ header, payload, secret: secretOrPrivateKey, encoding }); + if (!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`); + } + return signature; + } + }; + } +}); + +// ../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/index.js +var require_jsonwebtoken = __commonJS({ + "../../node_modules/.pnpm/jsonwebtoken@9.0.3/node_modules/jsonwebtoken/index.js"(exports, module) { + module.exports = { + decode: require_decode(), + verify: require_verify(), + sign: require_sign(), + JsonWebTokenError: require_JsonWebTokenError(), + NotBeforeError: require_NotBeforeError(), + TokenExpiredError: require_TokenExpiredError() + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/constants.js +var RequestChecksumCalculation, DEFAULT_REQUEST_CHECKSUM_CALCULATION, ResponseChecksumValidation, DEFAULT_RESPONSE_CHECKSUM_VALIDATION, ChecksumAlgorithm, ChecksumLocation, DEFAULT_CHECKSUM_ALGORITHM; +var init_constants = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/constants.js"() { + RequestChecksumCalculation = { + WHEN_SUPPORTED: "WHEN_SUPPORTED", + WHEN_REQUIRED: "WHEN_REQUIRED" + }; + DEFAULT_REQUEST_CHECKSUM_CALCULATION = RequestChecksumCalculation.WHEN_SUPPORTED; + ResponseChecksumValidation = { + WHEN_SUPPORTED: "WHEN_SUPPORTED", + WHEN_REQUIRED: "WHEN_REQUIRED" + }; + DEFAULT_RESPONSE_CHECKSUM_VALIDATION = RequestChecksumCalculation.WHEN_SUPPORTED; + (function(ChecksumAlgorithm2) { + ChecksumAlgorithm2["MD5"] = "MD5"; + ChecksumAlgorithm2["CRC32"] = "CRC32"; + ChecksumAlgorithm2["CRC32C"] = "CRC32C"; + ChecksumAlgorithm2["CRC64NVME"] = "CRC64NVME"; + ChecksumAlgorithm2["SHA1"] = "SHA1"; + ChecksumAlgorithm2["SHA256"] = "SHA256"; + })(ChecksumAlgorithm || (ChecksumAlgorithm = {})); + (function(ChecksumLocation2) { + ChecksumLocation2["HEADER"] = "header"; + ChecksumLocation2["TRAILER"] = "trailer"; + })(ChecksumLocation || (ChecksumLocation = {})); + DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/stringUnionSelector.js +var SelectorType2, stringUnionSelector; +var init_stringUnionSelector = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/stringUnionSelector.js"() { + (function(SelectorType3) { + SelectorType3["ENV"] = "env"; + SelectorType3["CONFIG"] = "shared config entry"; + })(SelectorType2 || (SelectorType2 = {})); + stringUnionSelector = /* @__PURE__ */ __name((obj, key, union2, type) => { + if (!(key in obj)) + return void 0; + const value = obj[key].toUpperCase(); + if (!Object.values(union2).includes(value)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected one of ${Object.values(union2)}, got '${obj[key]}'.`); + } + return value; + }, "stringUnionSelector"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.js +var ENV_REQUEST_CHECKSUM_CALCULATION, CONFIG_REQUEST_CHECKSUM_CALCULATION, NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS; +var init_NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.js"() { + init_constants(); + init_stringUnionSelector(); + ENV_REQUEST_CHECKSUM_CALCULATION = "AWS_REQUEST_CHECKSUM_CALCULATION"; + CONFIG_REQUEST_CHECKSUM_CALCULATION = "request_checksum_calculation"; + NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => stringUnionSelector(env3, ENV_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType2.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => stringUnionSelector(profile, CONFIG_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType2.CONFIG), "configFileSelector"), + default: DEFAULT_REQUEST_CHECKSUM_CALCULATION + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.js +var ENV_RESPONSE_CHECKSUM_VALIDATION, CONFIG_RESPONSE_CHECKSUM_VALIDATION, NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS; +var init_NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.js"() { + init_constants(); + init_stringUnionSelector(); + ENV_RESPONSE_CHECKSUM_VALIDATION = "AWS_RESPONSE_CHECKSUM_VALIDATION"; + CONFIG_RESPONSE_CHECKSUM_VALIDATION = "response_checksum_validation"; + NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => stringUnionSelector(env3, ENV_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType2.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => stringUnionSelector(profile, CONFIG_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType2.CONFIG), "configFileSelector"), + default: DEFAULT_RESPONSE_CHECKSUM_VALIDATION + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js +var state, emitWarningIfUnsupportedVersion2; +var init_emitWarningIfUnsupportedVersion = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js"() { + state = { + warningEmitted: false + }; + emitWarningIfUnsupportedVersion2 = /* @__PURE__ */ __name((version2) => { + if (version2 && !state.warningEmitted) { + if (process.env.AWS_SDK_JS_NODE_VERSION_SUPPORT_WARNING_DISABLED === "true") { + state.warningEmitted = true; + return; + } + const userMajorVersion = parseInt(version2.substring(1, version2.indexOf("."))); + const vv = 22; + if (userMajorVersion < vv) { + state.warningEmitted = true; + process.emitWarning(`NodeVersionSupportWarning: The AWS SDK for JavaScript (v3) +versions published after the first week of January 2027 +will require node >=${vv}. You are running node ${version2}. + +To continue receiving updates to AWS services, bug fixes, +and security updates please upgrade to node >=${vv}. + +More information can be found at: https://a.co/c895JFp`); + } + } + }, "emitWarningIfUnsupportedVersion"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/longPollMiddleware.js +var longPollMiddleware, longPollMiddlewareOptions, getLongPollPlugin; +var init_longPollMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/longPollMiddleware.js"() { + longPollMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => { + context.__retryLongPoll = true; + return next(args); + }, "longPollMiddleware"); + longPollMiddlewareOptions = { + name: "longPollMiddleware", + tags: ["RETRY"], + step: "initialize", + override: true + }; + getLongPollPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(longPollMiddleware(), longPollMiddlewareOptions); + }, "applyToStack") + }), "getLongPollPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js +function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} +var init_setCredentialFeature = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js"() { + __name(setCredentialFeature, "setCredentialFeature"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/isStreamingPayload/isStreamingPayload.js +import { Readable } from "node:stream"; +var isStreamingPayload; +var init_isStreamingPayload = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/isStreamingPayload/isStreamingPayload.js"() { + isStreamingPayload = /* @__PURE__ */ __name((request) => request?.body instanceof Readable || typeof ReadableStream !== "undefined" && request?.body instanceof ReadableStream, "isStreamingPayload"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js +var collectBody; +var init_collect_stream_body = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js"() { + init_serde(); + collectBody = /* @__PURE__ */ __name(async (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return Uint8ArrayBlobAdapter.mutate(streamBody); + } + if (!streamBody) { + return Uint8ArrayBlobAdapter.mutate(new Uint8Array()); + } + const fromContext = context.streamCollector(streamBody); + return Uint8ArrayBlobAdapter.mutate(await fromContext); + }, "collectBody"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js +function extendedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c5) { + return "%" + c5.charCodeAt(0).toString(16).toUpperCase(); + }); +} +var init_extended_encode_uri_component = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js"() { + __name(extendedEncodeURIComponent, "extendedEncodeURIComponent"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js +var SerdeContext; +var init_SerdeContext = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js"() { + SerdeContext = class { + static { + __name(this, "SerdeContext"); + } + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +var HttpProtocol; +var init_HttpProtocol = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js"() { + init_transport(); + init_schema(); + init_transport(); + init_SerdeContext(); + HttpProtocol = class extends SerdeContext { + static { + __name(this, "HttpProtocol"); + } + options; + compositeErrorRegistry; + constructor(options) { + super(); + this.options = options; + this.compositeErrorRegistry = new TypeRegistry(options.defaultNamespace); + for (const etr of options.errorTypeRegistries ?? []) { + this.compositeErrorRegistry.copyFrom(etr); + } + } + getRequestType() { + return HttpRequest; + } + getResponseType() { + return HttpResponse; + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + if (this.getPayloadCodec()) { + this.getPayloadCodec().setSerdeContext(serdeContext); + } + } + updateServiceEndpoint(request, endpoint) { + if ("url" in endpoint) { + request.protocol = endpoint.url.protocol; + request.hostname = endpoint.url.hostname; + request.port = endpoint.url.port ? Number(endpoint.url.port) : void 0; + request.path = endpoint.url.pathname; + request.fragment = endpoint.url.hash || void 0; + request.username = endpoint.url.username || void 0; + request.password = endpoint.url.password || void 0; + if (!request.query) { + request.query = {}; + } + for (const [k5, v] of endpoint.url.searchParams.entries()) { + request.query[k5] = v; + } + if (endpoint.headers) { + for (const name2 in endpoint.headers) { + if (!hasOwn(endpoint.headers, name2)) + continue; + request.headers[name2] = endpoint.headers[name2].join(", "); + } + } + return request; + } else { + request.protocol = endpoint.protocol; + request.hostname = endpoint.hostname; + request.port = endpoint.port ? Number(endpoint.port) : void 0; + request.path = endpoint.path; + request.query = { + ...endpoint.query + }; + if (endpoint.headers) { + for (const name2 in endpoint.headers) { + if (!hasOwn(endpoint.headers, name2)) + continue; + request.headers[name2] = endpoint.headers[name2]; + } + } + return request; + } + } + setHostPrefix(request, operationSchema, input2) { + if (this.serdeContext?.disableHostPrefix) { + return; + } + const inputNs = NormalizedSchema.of(operationSchema.input); + const opTraits = translateTraits(operationSchema.traits ?? {}); + if (opTraits.endpoint) { + let hostPrefix = opTraits.endpoint?.[0]; + if (typeof hostPrefix === "string") { + for (const [name2, member] of inputNs.structIterator()) { + if (!member.getMergedTraits().hostLabel) { + continue; + } + const replacement = input2[name2]; + if (typeof replacement !== "string") { + throw new Error(`@smithy/core/schema - ${name2} in input must be a string as hostLabel.`); + } + hostPrefix = hostPrefix.replace(`{${name2}}`, replacement); + } + request.hostname = hostPrefix + request.hostname; + if (!isValidHostname(request.hostname)) { + throw new Error(`[${request.hostname}] is not a valid hostname.`); + } + } + } + } + deserializeMetadata(output2) { + return { + httpStatusCode: output2.statusCode, + requestId: output2.headers["x-amzn-requestid"] ?? output2.headers["x-amzn-request-id"] ?? output2.headers["x-amz-request-id"], + extendedRequestId: output2.headers["x-amz-id-2"], + cfId: output2.headers["x-amz-cf-id"] + }; + } + resolveError(name2, namespaces, registries) { + const defaultErrorSchema = [-3, "", "Error", 0, [], [], 0]; + let schema2; + for (const registry2 of registries) { + for (const ns of namespaces) { + try { + if (ns === "*") { + schema2 = registry2.getSchema(name2); + } else { + schema2 = registry2.getSchema(ns + "#" + name2); + } + const errorCtor = registry2.getErrorCtor(schema2); + if (errorCtor) { + return [schema2, errorCtor, "modeled"]; + } else { + const syntheticErrorSchema = registry2.getBaseException(); + if (syntheticErrorSchema) { + const syntheticErrorCtor = registry2.getErrorCtor(syntheticErrorSchema); + if (syntheticErrorCtor) { + return [schema2, syntheticErrorCtor, "synthetic"]; + } + } + } + } catch (ignored) { + } + } + } + for (const registry2 of registries) { + const syntheticErrorSchema = registry2.getBaseException(); + if (syntheticErrorSchema) { + const syntheticErrorCtor = registry2.getErrorCtor(syntheticErrorSchema); + if (syntheticErrorCtor) { + return [syntheticErrorSchema, syntheticErrorCtor, "synthetic"]; + } + } + } + return [defaultErrorSchema, Error, "native"]; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.serializeEventStream({ + eventStream, + requestSchema, + initialRequest + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.deserializeEventStream({ + response, + responseSchema, + initialResponseContainer + }); + } + async loadEventStreamCapability() { + const { EventStreamSerde, eventStreamSerdeProvider } = await import("./event-streams-IPK6VS6T.js"); + const marshaller = this.resolveEventStreamMarshaller(eventStreamSerdeProvider); + return new EventStreamSerde({ + marshaller, + serializer: this.serializer, + deserializer: this.deserializer, + serdeContext: this.serdeContext, + defaultContentType: this.getDefaultContentType(), + compositeErrorRegistry: this.compositeErrorRegistry + }); + } + getDefaultContentType() { + throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`); + } + async deserializeHttpMessage(schema2, context, response, arg4, arg5) { + void schema2; + void context; + void response; + void arg4; + void arg5; + return []; + } + getEventStreamMarshaller() { + const context = this.serdeContext; + if (!context.eventStreamMarshaller) { + throw new Error("@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext."); + } + return context.eventStreamMarshaller; + } + resolveEventStreamMarshaller(importedProvider) { + const context = this.serdeContext; + if (context.eventStreamMarshaller) { + return context.eventStreamMarshaller; + } + return importedProvider(this.serdeContext); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +var HttpBindingProtocol; +var init_HttpBindingProtocol = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js"() { + init_transport(); + init_schema(); + init_serde(); + init_transport(); + init_HttpProtocol(); + init_collect_stream_body(); + init_extended_encode_uri_component(); + HttpBindingProtocol = class extends HttpProtocol { + static { + __name(this, "HttpBindingProtocol"); + } + async serializeRequest(operationSchema, _input, context) { + const input2 = _input && typeof _input === "object" ? _input : {}; + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = NormalizedSchema.of(operationSchema?.input); + const payloadMemberNames = []; + const payloadMemberSchemas = []; + let hasNonHttpBindingMember = false; + let payload; + const request = new HttpRequest({ + protocol: "", + hostname: "", + port: void 0, + path: "", + fragment: void 0, + query, + headers, + body: void 0 + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input2); + const opTraits = translateTraits(operationSchema.traits); + if (opTraits.http) { + request.method = opTraits.http[0]; + const [path2, search] = opTraits.http[1].split("?"); + if (request.path == "/") { + request.path = path2; + } else { + request.path += path2; + } + const traitSearchParams = new URLSearchParams(search ?? ""); + for (const [key, value] of traitSearchParams) { + query[key] = value; + } + } + } + for (const [memberName, memberNs] of ns.structIterator()) { + const memberTraits = memberNs.getMergedTraits() ?? {}; + const inputMemberValue = input2[memberName]; + if (inputMemberValue == null && !memberNs.isIdempotencyToken()) { + if (memberTraits.httpLabel) { + if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) { + throw new Error(`No value provided for input HTTP label: ${memberName}.`); + } + } + continue; + } + if (memberTraits.httpPayload) { + const isStreaming2 = memberNs.isStreaming(); + if (isStreaming2) { + const isEventStream = memberNs.isStructSchema(); + if (isEventStream) { + if (input2[memberName]) { + payload = await this.serializeEventStream({ + eventStream: input2[memberName], + requestSchema: ns + }); + } + } else { + payload = inputMemberValue; + } + } else { + serializer.write(memberNs, inputMemberValue); + payload = serializer.flush(); + } + } else if (memberTraits.httpLabel) { + serializer.write(memberNs, inputMemberValue); + const replacement = serializer.flush(); + if (request.path.includes(`{${memberName}+}`)) { + request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/")); + } else if (request.path.includes(`{${memberName}}`)) { + request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement)); + } + } else if (memberTraits.httpHeader) { + serializer.write(memberNs, inputMemberValue); + headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush()); + } else if (typeof memberTraits.httpPrefixHeaders === "string") { + for (const key in inputMemberValue) { + if (!hasOwn(inputMemberValue, key)) + continue; + const val = inputMemberValue[key]; + const amalgam = memberTraits.httpPrefixHeaders + key; + serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val); + headers[amalgam.toLowerCase()] = serializer.flush(); + } + } else if (memberTraits.httpQuery || memberTraits.httpQueryParams) { + this.serializeQuery(memberNs, inputMemberValue, query); + } else { + hasNonHttpBindingMember = true; + payloadMemberNames.push(memberName); + payloadMemberSchemas.push(memberNs); + } + } + if (hasNonHttpBindingMember && input2) { + const [namespace, name2] = (ns.getName(true) ?? "#Unknown").split("#"); + const requiredMembers = ns.getSchema()[6]; + const payloadSchema = [ + 3, + namespace, + name2, + ns.getMergedTraits(), + payloadMemberNames, + payloadMemberSchemas, + void 0 + ]; + if (requiredMembers) { + payloadSchema[6] = requiredMembers; + } else { + payloadSchema.pop(); + } + serializer.write(payloadSchema, input2); + payload = serializer.flush(); + } + request.headers = headers; + request.query = query; + request.body = payload; + return request; + } + serializeQuery(ns, data, query) { + const serializer = this.serializer; + const traits = ns.getMergedTraits(); + if (traits.httpQueryParams) { + for (const key in data) { + if (!hasOwn(data, key)) + continue; + if (!(key in query)) { + const val = data[key]; + const valueSchema = ns.getValueSchema(); + Object.assign(valueSchema.getMergedTraits(), { + ...traits, + httpQuery: key, + httpQueryParams: void 0 + }); + this.serializeQuery(valueSchema, val, query); + } + } + return; + } + if (ns.isListSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + const buffer = []; + for (const item of data) { + serializer.write([ns.getValueSchema(), traits], item); + const serializable = serializer.flush(); + if (sparse || serializable !== void 0) { + buffer.push(serializable); + } + } + query[traits.httpQuery] = buffer; + } else { + serializer.write([ns, traits], data); + query[traits.httpQuery] = serializer.flush(); + } + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw."); + } + for (const header in response.headers) { + if (!hasOwn(response.headers, header)) + continue; + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject); + if (nonHttpBindingMembers.length) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + const dataFromBody = await deserializer.read(ns, bytes); + for (const member of nonHttpBindingMembers) { + if (dataFromBody[member] != null) { + dataObject[member] = dataFromBody[member]; + } + } + } + } else if (nonHttpBindingMembers.discardResponseBody) { + await collectBody(response.body, context); + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + async deserializeHttpMessage(schema2, context, response, arg4, arg5) { + let dataObject; + if (arg4 instanceof Set) { + dataObject = arg5; + } else { + dataObject = arg4; + } + let discardResponseBody = true; + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(schema2); + const nonHttpBindingMembers = []; + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMemberTraits(); + if (memberTraits.httpPayload) { + discardResponseBody = false; + const isStreaming2 = memberSchema.isStreaming(); + if (isStreaming2) { + const isEventStream = memberSchema.isStructSchema(); + if (isEventStream) { + dataObject[memberName] = await this.deserializeEventStream({ + response, + responseSchema: ns + }); + } else { + dataObject[memberName] = sdkStreamMixin(response.body); + } + } else if (response.body) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + dataObject[memberName] = await deserializer.read(memberSchema, bytes); + } + } + } else if (memberTraits.httpHeader) { + const key = String(memberTraits.httpHeader).toLowerCase(); + const value = response.headers[key]; + if (null != value) { + if (memberSchema.isListSchema()) { + const headerListValueSchema = memberSchema.getValueSchema(); + headerListValueSchema.getMergedTraits().httpHeader = key; + let sections; + if (headerListValueSchema.isTimestampSchema() && headerListValueSchema.getSchema() === 4) { + sections = splitEvery(value, ",", 2); + } else { + sections = splitHeader(value); + } + const list = []; + for (const section of sections) { + list.push(await deserializer.read(headerListValueSchema, section.trim())); + } + dataObject[memberName] = list; + } else { + dataObject[memberName] = await deserializer.read(memberSchema, value); + } + } + } else if (memberTraits.httpPrefixHeaders !== void 0) { + dataObject[memberName] = {}; + for (const header in response.headers) { + if (!hasOwn(response.headers, header)) + continue; + if (header.startsWith(memberTraits.httpPrefixHeaders)) { + const value = response.headers[header]; + const valueSchema = memberSchema.getValueSchema(); + valueSchema.getMergedTraits().httpHeader = header; + dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value); + } + } + } else if (memberTraits.httpResponseCode) { + dataObject[memberName] = response.statusCode; + } else { + nonHttpBindingMembers.push(memberName); + } + } + nonHttpBindingMembers.discardResponseBody = discardResponseBody; + return nonHttpBindingMembers; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js +var RpcProtocol; +var init_RpcProtocol = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js"() { + init_transport(); + init_schema(); + init_transport(); + init_HttpProtocol(); + init_collect_stream_body(); + RpcProtocol = class extends HttpProtocol { + static { + __name(this, "RpcProtocol"); + } + async serializeRequest(operationSchema, _input, context) { + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = NormalizedSchema.of(operationSchema?.input); + const schema2 = ns.getSchema(); + let payload; + const input2 = _input && typeof _input === "object" ? _input : {}; + const request = new HttpRequest({ + protocol: "", + hostname: "", + port: void 0, + path: "/", + fragment: void 0, + query, + headers, + body: void 0 + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input2); + } + if (input2) { + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + if (input2[eventStreamMember]) { + const initialRequest = {}; + for (const [memberName] of ns.structIterator()) { + if (memberName !== eventStreamMember && input2[memberName] != null) { + initialRequest[memberName] = input2[memberName]; + } + } + payload = await this.serializeEventStream({ + eventStream: input2[eventStreamMember], + requestSchema: ns, + initialRequest + }); + } + } else { + serializer.write(schema2, input2); + payload = serializer.flush(); + } + } + request.headers = Object.assign(request.headers, headers); + request.query = query; + request.body = payload; + request.method = "POST"; + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - RPC Protocol error handler failed to throw."); + } + for (const header in response.headers) { + if (!hasOwn(response.headers, header)) + continue; + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + dataObject[eventStreamMember] = await this.deserializeEventStream({ + response, + responseSchema: ns, + initialResponseContainer: dataObject + }); + } else { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes)); + } + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js +var resolvedPath; +var init_resolve_path = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js"() { + init_extended_encode_uri_component(); + resolvedPath = /* @__PURE__ */ __name((resolvedPath2, input2, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input2 != null && input2[memberName] !== void 0) { + const labelValue = labelValueProvider(); + if (labelValue == null || labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath2 = resolvedPath2.replace(uriLabel, isGreedyLabel ? labelValue.split("/").map((segment) => extendedEncodeURIComponent(segment)).join("/") : extendedEncodeURIComponent(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath2; + }, "resolvedPath"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +function requestBuilder(input2, context) { + return new RequestBuilder(input2, context); +} +var RequestBuilder; +var init_requestBuilder = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js"() { + init_transport(); + init_resolve_path(); + __name(requestBuilder, "requestBuilder"); + RequestBuilder = class { + static { + __name(this, "RequestBuilder"); + } + input; + context; + query = {}; + method = ""; + headers = {}; + path = ""; + body = null; + hostname = ""; + resolvePathStack = []; + constructor(input2, context) { + this.input = input2; + this.context = context; + } + async build() { + const { hostname: hostname3, protocol = "https", port, path: basePath } = await this.context.endpoint(); + this.path = basePath; + for (const resolvePath of this.resolvePathStack) { + resolvePath(this.path); + } + return new HttpRequest({ + protocol, + hostname: this.hostname || hostname3, + port, + method: this.method, + path: this.path, + query: this.query, + body: this.body, + headers: this.headers + }); + } + hn(hostname3) { + this.hostname = hostname3; + return this; + } + bp(uriLabel) { + this.resolvePathStack.push((basePath) => { + this.path = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; + }); + return this; + } + p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { + this.resolvePathStack.push((path2) => { + this.path = resolvedPath(path2, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); + }); + return this; + } + h(headers) { + this.headers = headers; + return this; + } + q(query) { + this.query = query; + return this; + } + b(body) { + this.body = body; + return this; + } + m(method) { + this.method = method; + return this; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js +function determineTimestampFormat(ns, settings) { + if (settings.timestampFormat.useTrait) { + if (ns.isTimestampSchema() && (ns.getSchema() === 5 || ns.getSchema() === 6 || ns.getSchema() === 7)) { + return ns.getSchema(); + } + } + const { httpLabel, httpPrefixHeaders, httpHeader, httpQuery } = ns.getMergedTraits(); + const bindingFormat = settings.httpBindings ? typeof httpPrefixHeaders === "string" || Boolean(httpHeader) ? 6 : Boolean(httpQuery) || Boolean(httpLabel) ? 5 : void 0 : void 0; + return bindingFormat ?? settings.timestampFormat.default; +} +var init_determineTimestampFormat = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js"() { + __name(determineTimestampFormat, "determineTimestampFormat"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js +var FromStringShapeDeserializer; +var init_FromStringShapeDeserializer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js"() { + init_schema(); + init_serde(); + init_SerdeContext(); + init_determineTimestampFormat(); + FromStringShapeDeserializer = class extends SerdeContext { + static { + __name(this, "FromStringShapeDeserializer"); + } + settings; + constructor(settings) { + super(); + this.settings = settings; + } + read(_schema, data) { + const ns = NormalizedSchema.of(_schema); + if (ns.isListSchema()) { + return splitHeader(data).map((item) => this.read(ns.getValueSchema(), item)); + } + if (ns.isBlobSchema()) { + return (this.serdeContext?.base64Decoder ?? fromBase64)(data); + } + if (ns.isTimestampSchema()) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return _parseRfc3339DateTimeWithOffset(data); + case 6: + return _parseRfc7231DateTime(data); + case 7: + return _parseEpochTimestamp(data); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", data); + return new Date(data); + } + } + if (ns.isStringSchema()) { + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = data; + if (mediaType) { + if (ns.getMergedTraits().httpHeader) { + intermediateValue = this.base64ToUtf8(intermediateValue); + } + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = LazyJsonString.from(intermediateValue); + } + return intermediateValue; + } + } + if (ns.isNumericSchema()) { + return Number(data); + } + if (ns.isBigIntegerSchema()) { + return BigInt(data); + } + if (ns.isBigDecimalSchema()) { + return new NumericValue(data, "bigDecimal"); + } + if (ns.isBooleanSchema()) { + return String(data).toLowerCase() === "true"; + } + return data; + } + base64ToUtf8(base64String) { + return (this.serdeContext?.utf8Encoder ?? toUtf8)((this.serdeContext?.base64Decoder ?? fromBase64)(base64String)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js +var HttpInterceptingShapeDeserializer; +var init_HttpInterceptingShapeDeserializer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js"() { + init_schema(); + init_serde(); + init_SerdeContext(); + init_FromStringShapeDeserializer(); + HttpInterceptingShapeDeserializer = class extends SerdeContext { + static { + __name(this, "HttpInterceptingShapeDeserializer"); + } + codecDeserializer; + stringDeserializer; + constructor(codecDeserializer, codecSettings) { + super(); + this.codecDeserializer = codecDeserializer; + this.stringDeserializer = new FromStringShapeDeserializer(codecSettings); + } + setSerdeContext(serdeContext) { + this.stringDeserializer.setSerdeContext(serdeContext); + this.codecDeserializer.setSerdeContext(serdeContext); + this.serdeContext = serdeContext; + } + read(schema2, data) { + const ns = NormalizedSchema.of(schema2); + const traits = ns.getMergedTraits(); + const toString = this.serdeContext?.utf8Encoder ?? toUtf8; + if (traits.httpHeader || traits.httpResponseCode) { + return this.stringDeserializer.read(ns, toString(data)); + } + if (traits.httpPayload) { + if (ns.isBlobSchema()) { + const toBytes = this.serdeContext?.utf8Decoder ?? fromUtf8; + if (typeof data === "string") { + return toBytes(data); + } + return data; + } else if (ns.isStringSchema()) { + if ("byteLength" in data) { + return toString(data); + } + return data; + } + } + return this.codecDeserializer.read(ns, data); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js +var ToStringShapeSerializer; +var init_ToStringShapeSerializer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js"() { + init_schema(); + init_serde(); + init_SerdeContext(); + init_determineTimestampFormat(); + ToStringShapeSerializer = class extends SerdeContext { + static { + __name(this, "ToStringShapeSerializer"); + } + settings; + stringBuffer = ""; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema2, value) { + const ns = NormalizedSchema.of(schema2); + switch (typeof value) { + case "object": + if (value === null) { + this.stringBuffer = "null"; + return; + } + if (ns.isTimestampSchema()) { + if (!(value instanceof Date)) { + throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`); + } + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.stringBuffer = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + this.stringBuffer = dateToUtcString(value); + break; + case 7: + this.stringBuffer = String(value.getTime() / 1e3); + break; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + this.stringBuffer = String(value.getTime() / 1e3); + } + return; + } + if (ns.isBlobSchema() && "byteLength" in value) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(value); + return; + } + if (ns.isListSchema() && Array.isArray(value)) { + let buffer = ""; + for (const item of value) { + this.write([ns.getValueSchema(), ns.getMergedTraits()], item); + const headerItem = this.flush(); + const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : quoteHeader(headerItem); + if (buffer !== "") { + buffer += ", "; + } + buffer += serialized; + } + this.stringBuffer = buffer; + return; + } + this.stringBuffer = JSON.stringify(value, null, 2); + break; + case "string": + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = value; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = LazyJsonString.from(intermediateValue); + } + if (ns.getMergedTraits().httpHeader) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(intermediateValue.toString()); + return; + } + } + this.stringBuffer = value; + break; + default: + if (ns.isIdempotencyToken()) { + this.stringBuffer = generateIdempotencyToken(); + } else { + this.stringBuffer = String(value); + } + } + } + flush() { + const buffer = this.stringBuffer; + this.stringBuffer = ""; + return buffer; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js +var HttpInterceptingShapeSerializer; +var init_HttpInterceptingShapeSerializer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js"() { + init_schema(); + init_ToStringShapeSerializer(); + HttpInterceptingShapeSerializer = class { + static { + __name(this, "HttpInterceptingShapeSerializer"); + } + codecSerializer; + stringSerializer; + buffer; + constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) { + this.codecSerializer = codecSerializer; + this.stringSerializer = stringSerializer; + } + setSerdeContext(serdeContext) { + this.codecSerializer.setSerdeContext(serdeContext); + this.stringSerializer.setSerdeContext(serdeContext); + } + write(schema2, value) { + const ns = NormalizedSchema.of(schema2); + const traits = ns.getMergedTraits(); + if (traits.httpHeader || traits.httpLabel || traits.httpQuery) { + this.stringSerializer.write(ns, value); + this.buffer = this.stringSerializer.flush(); + return; + } + return this.codecSerializer.write(ns, value); + } + flush() { + if (this.buffer !== void 0) { + const buffer = this.buffer; + this.buffer = void 0; + return buffer; + } + return this.codecSerializer.flush(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/Field.js +var import_types, Field; +var init_Field = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/Field.js"() { + import_types = __toESM(require_dist_cjs()); + Field = class { + static { + __name(this, "Field"); + } + name; + kind; + values; + constructor({ name: name2, kind = import_types.FieldPosition.HEADER, values = [] }) { + this.name = name2; + this.kind = kind; + this.values = values; + } + add(value) { + this.values.push(value); + } + set(values) { + this.values = values; + } + remove(value) { + this.values = this.values.filter((v) => v !== value); + } + toString() { + return this.values.map((v) => v.includes(",") || v.includes(" ") ? `"${v}"` : v).join(", "); + } + get() { + return this.values; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/Fields.js +var Fields; +var init_Fields = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/Fields.js"() { + Fields = class { + static { + __name(this, "Fields"); + } + entries = {}; + encoding; + constructor({ fields = [], encoding = "utf-8" }) { + fields.forEach(this.setField.bind(this)); + this.encoding = encoding; + } + setField(field) { + this.entries[field.name.toLowerCase()] = field; + } + getField(name2) { + return this.entries[name2.toLowerCase()]; + } + removeField(name2) { + delete this.entries[name2.toLowerCase()]; + } + getByType(kind) { + return Object.values(this.entries).filter((field) => field.kind === kind); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/extensions/httpExtensionConfiguration.js +var getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig; +var init_httpExtensionConfiguration = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/extensions/httpExtensionConfiguration.js"() { + getHttpHandlerExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + if (runtimeConfig.logger && runtimeConfig.logger.constructor?.name !== "NoOpLogger") { + runtimeConfig.requestHandler?.updateHttpClientConfig?.(/* @__PURE__ */ Symbol.for("logger"), runtimeConfig.logger); + } + return { + setHttpHandler(handler) { + runtimeConfig.requestHandler = handler; + }, + httpHandler() { + return runtimeConfig.requestHandler; + }, + updateHttpClientConfig(key, value) { + runtimeConfig.requestHandler?.updateHttpClientConfig(key, value); + }, + httpHandlerConfigs() { + return runtimeConfig.requestHandler.httpHandlerConfigs(); + } + }; + }, "getHttpHandlerExtensionConfiguration"); + resolveHttpHandlerRuntimeConfig = /* @__PURE__ */ __name((httpHandlerExtensionConfiguration) => { + return { + requestHandler: httpHandlerExtensionConfiguration.httpHandler() + }; + }, "resolveHttpHandlerRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/middleware-content-length/contentLengthMiddleware.js +function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request = args.request; + if (HttpRequest.isInstance(request)) { + const { body, headers } = request; + if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + if (length != null) { + request.headers = { + ...request.headers, + [CONTENT_LENGTH_HEADER]: String(length) + }; + } + } catch (ignored) { + } + } + } + return next({ + ...args, + request + }); + }; +} +var CONTENT_LENGTH_HEADER, contentLengthMiddlewareOptions, getContentLengthPlugin; +var init_contentLengthMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/middleware-content-length/contentLengthMiddleware.js"() { + init_transport(); + CONTENT_LENGTH_HEADER = "content-length"; + __name(contentLengthMiddleware, "contentLengthMiddleware"); + contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true + }; + getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + }, "applyToStack") + }), "getContentLengthPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/util-uri-escape/escape-uri.js +var escapeUri, hexEncode; +var init_escape_uri = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/util-uri-escape/escape-uri.js"() { + escapeUri = /* @__PURE__ */ __name((uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode), "escapeUri"); + hexEncode = /* @__PURE__ */ __name((c5) => `%${c5.charCodeAt(0).toString(16).toUpperCase()}`, "hexEncode"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/util-uri-escape/escape-uri-path.js +var escapeUriPath; +var init_escape_uri_path = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/util-uri-escape/escape-uri-path.js"() { + init_escape_uri(); + escapeUriPath = /* @__PURE__ */ __name((uri) => uri.split("/").map(escapeUri).join("/"), "escapeUriPath"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/querystring-builder/buildQueryString.js +function buildQueryString(query) { + const parts = []; + for (let key of Object.keys(query).sort()) { + const value = query[key]; + key = escapeUri(key); + if (Array.isArray(value)) { + for (let i5 = 0, iLen = value.length; i5 < iLen; i5++) { + parts.push(`${key}=${escapeUri(value[i5])}`); + } + } else { + let qsEntry = key; + if (value || typeof value === "string") { + qsEntry += `=${escapeUri(value)}`; + } + parts.push(qsEntry); + } + } + return parts.join("&"); +} +var init_buildQueryString = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/querystring-builder/buildQueryString.js"() { + init_escape_uri(); + __name(buildQueryString, "buildQueryString"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js +var SerdeContextConfig; +var init_ConfigurableSerdeContext = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js"() { + SerdeContextConfig = class { + static { + __name(this, "SerdeContextConfig"); + } + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/UnionSerde.js +var UnionSerde; +var init_UnionSerde = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/UnionSerde.js"() { + UnionSerde = class { + static { + __name(this, "UnionSerde"); + } + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + const keys = Object.keys(this.from); + const set2 = new Set(keys); + set2.delete("__type"); + this.keys = set2; + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k5 = this.keys.values().next().value; + const v = this.from[k5]; + this.to.$unknown = [k5, v]; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/detectBufferParsing.js +function detectBufferParsing() { + if (canParseBuffer === void 0) { + try { + if (typeof Buffer !== "function") { + canParseBuffer = false; + } else { + const result = JSON.parse(Buffer.from([123, 125])); + canParseBuffer = result !== null && typeof result === "object"; + } + } catch { + canParseBuffer = false; + } + } + return canParseBuffer; +} +var canParseBuffer; +var init_detectBufferParsing = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/detectBufferParsing.js"() { + __name(detectBufferParsing, "detectBufferParsing"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/jsonReviver.js +function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + const inSafeRange = value <= Number.MAX_SAFE_INTEGER && value >= Number.MIN_SAFE_INTEGER; + if (inSafeRange) { + if (isRepresentable(numericString, value)) { + return value; + } + return new NumericValue(numericString, "bigDecimal"); + } else { + if (isFractionalBigNumeric(numericString)) { + return new NumericValue(numericString, "bigDecimal"); + } + if (/[eE]/.test(numericString)) { + return expandExponentToBigInt(numericString); + } + return BigInt(numericString); + } + } + } + return value; +} +function isFractionalBigNumeric(s2) { + const dotIndex = s2.indexOf("."); + if (dotIndex === -1) { + return false; + } + const eIndex = s2.search(/[eE]/); + if (eIndex === -1) { + return true; + } + const fracDigits = eIndex - dotIndex - 1; + const exp = parseInt(s2.slice(eIndex + 1), 10); + return exp < fracDigits; +} +function isRepresentable(numericString, value) { + if (numericString === String(value)) { + return true; + } + if (Object.is(value, -0)) { + return true; + } + if (/[eE]/.test(numericString)) { + return expandToDecimal(numericString) === expandToDecimal(String(value)); + } + const normalized = numericString.replace(/(\.\d*?)0+$/, "$1").replace(/\.$/, ""); + const canonical = String(value); + if (normalized === canonical) { + return true; + } + if (/[eE]/.test(canonical)) { + return normalized === expandToDecimal(canonical); + } + return false; +} +function expandToDecimal(s2) { + const negative = s2.startsWith("-"); + const abs = negative ? s2.slice(1) : s2; + const eIndex = abs.search(/[eE]/); + let result; + if (eIndex === -1) { + result = abs; + } else { + const exp = parseInt(abs.slice(eIndex + 1), 10); + const mantissa = abs.slice(0, eIndex); + const dotIndex = mantissa.indexOf("."); + let digits; + let intLen; + if (dotIndex === -1) { + digits = mantissa; + intLen = mantissa.length; + } else { + digits = mantissa.slice(0, dotIndex) + mantissa.slice(dotIndex + 1); + intLen = dotIndex; + } + digits = digits.replace(/0+$/, "") || "0"; + const newDotPos = intLen + exp; + if (digits === "0") { + result = "0"; + } else if (newDotPos <= 0) { + result = "0." + "0".repeat(-newDotPos) + digits; + } else if (newDotPos >= digits.length) { + result = digits + "0".repeat(newDotPos - digits.length); + } else { + result = digits.slice(0, newDotPos) + "." + digits.slice(newDotPos); + } + } + if (result.includes(".")) { + result = result.replace(/(\.\d*?)0+$/, "$1").replace(/\.$/, ""); + } + return (negative ? "-" : "") + result; +} +function expandExponentToBigInt(s2) { + const eIndex = s2.search(/[eE]/); + const exp = parseInt(s2.slice(eIndex + 1), 10); + const negative = s2.startsWith("-"); + const mantissa = s2.slice(negative ? 1 : 0, eIndex); + const dotIndex = mantissa.indexOf("."); + let digits; + let shift; + if (dotIndex === -1) { + digits = mantissa; + shift = exp; + } else { + digits = mantissa.slice(0, dotIndex) + mantissa.slice(dotIndex + 1); + const fracDigits = mantissa.length - dotIndex - 1; + shift = exp - fracDigits; + } + digits = digits.replace(/0+$/, "") || "0"; + const result = BigInt(digits) * 10n ** BigInt(shift + (mantissa.replace(".", "").length - digits.length)); + return negative ? -result : result; +} +var init_jsonReviver = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/jsonReviver.js"() { + init_serde(); + __name(jsonReviver, "jsonReviver"); + __name(isFractionalBigNumeric, "isFractionalBigNumeric"); + __name(isRepresentable, "isRepresentable"); + __name(expandToDecimal, "expandToDecimal"); + __name(expandExponentToBigInt, "expandExponentToBigInt"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/needsReviver.js +function needsReviver(schema2) { + const ns = NormalizedSchema.of(schema2); + const raw4 = ns.getSchema(); + if (Array.isArray(raw4) && ns.isStructSchema()) { + if (REVIVER_SYMBOL in raw4) { + return raw4[REVIVER_SYMBOL]; + } + const result = _check2(ns, /* @__PURE__ */ new Set()); + raw4[REVIVER_SYMBOL] = result; + return result; + } + return _check2(ns, /* @__PURE__ */ new Set()); +} +function _check2(ns, seen) { + const raw4 = ns.getSchema(); + if (seen.has(raw4)) { + return false; + } + seen.add(raw4); + if (ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + return true; + } + if (ns.isStructSchema()) { + for (const [, memberSchema] of ns.structIterator()) { + if (_check2(memberSchema, seen)) { + return true; + } + } + } else if (ns.isListSchema() || ns.isMapSchema()) { + if (_check2(ns.getValueSchema(), seen)) { + return true; + } + } else if (ns.isDocumentSchema()) { + return true; + } + return false; +} +var REVIVER_SYMBOL; +var init_needsReviver = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/needsReviver.js"() { + init_schema(); + REVIVER_SYMBOL = /* @__PURE__ */ Symbol.for("@aws-sdk/reviver"); + __name(needsReviver, "needsReviver"); + __name(_check2, "_check"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/common.js +var collectBodyString; +var init_common2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/common.js"() { + init_collect_stream_body(); + init_serde(); + collectBodyString = /* @__PURE__ */ __name((streamBody, context) => collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? toUtf8)(body)), "collectBodyString"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/parseJsonBody.js +async function parseJsonBody(streamBody, context, schema2) { + let parsingInput; + if (detectBufferParsing() && typeof streamBody?.[Symbol.asyncIterator] === "function") { + const buffer = await collectBody(streamBody, context); + if (typeof Buffer === "function") { + if (Buffer.isBuffer(buffer)) { + parsingInput = buffer; + } else { + parsingInput = Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength); + } + } + } + if (!parsingInput) { + parsingInput = await collectBodyString(streamBody, context); + } + if (parsingInput.length === 0) { + return {}; + } + const reviver = schema2 && needsReviver(schema2) ? jsonReviver : void 0; + try { + return JSON.parse(parsingInput, reviver); + } catch (e5) { + if (e5?.name === "SyntaxError") { + Object.defineProperty(e5, "$responseBodyText", { + value: typeof parsingInput === "string" ? parsingInput : parsingInput.toString("utf8") + }); + } + throw e5; + } +} +var parseJsonErrorBody, findKey, sanitizeErrorCode, loadRestJsonErrorCode, loadJsonRpcErrorCode, loadSmithyRpcV2JsonErrorCode, loadErrorCode; +var init_parseJsonBody = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/parseJsonBody.js"() { + init_collect_stream_body(); + init_common2(); + init_detectBufferParsing(); + init_jsonReviver(); + init_needsReviver(); + __name(parseJsonBody, "parseJsonBody"); + parseJsonErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; + }, "parseJsonErrorBody"); + findKey = /* @__PURE__ */ __name((object2, key) => Object.keys(object2).find((k5) => k5.toLowerCase() === key.toLowerCase()), "findKey"); + sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }, "sanitizeErrorCode"); + loadRestJsonErrorCode = /* @__PURE__ */ __name((output2, data) => { + return loadErrorCode(output2, data, ["header", "code", "type"]); + }, "loadRestJsonErrorCode"); + loadJsonRpcErrorCode = /* @__PURE__ */ __name((output2, data, queryCompat = false) => { + return loadErrorCode(output2, data, queryCompat ? ["code", "header", "type"] : ["type", "code", "header"]); + }, "loadJsonRpcErrorCode"); + loadSmithyRpcV2JsonErrorCode = /* @__PURE__ */ __name((output2, data) => { + if (data?.__type !== void 0) { + let cleanValue = data.__type; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + return cleanValue; + } + }, "loadSmithyRpcV2JsonErrorCode"); + loadErrorCode = /* @__PURE__ */ __name(({ headers }, data, order) => { + while (order.length > 0) { + const location = order.shift(); + switch (location) { + case "header": + const headerKey = findKey(headers ?? {}, "x-amzn-errortype"); + if (headerKey !== void 0) { + return sanitizeErrorCode(headers[headerKey]); + } + break; + case "code": + const codeKey = findKey(data ?? {}, "code"); + if (codeKey && data[codeKey] !== void 0) { + return sanitizeErrorCode(data[codeKey]); + } + break; + case "type": + if (data?.__type !== void 0) { + return sanitizeErrorCode(data.__type); + } + break; + } + } + }, "loadErrorCode"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/writeKey.js +function writeKey(obj) { + Object.defineProperty(obj, "__proto__", { value: void 0, writable: true, enumerable: true, configurable: true }); +} +var init_writeKey = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/writeKey.js"() { + __name(writeKey, "writeKey"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonShapeDeserializer2.js +var JsonShapeDeserializer2; +var init_JsonShapeDeserializer2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonShapeDeserializer2.js"() { + init_determineTimestampFormat(); + init_schema(); + init_serde(); + init_ConfigurableSerdeContext(); + init_UnionSerde(); + init_detectBufferParsing(); + init_jsonReviver(); + init_needsReviver(); + init_parseJsonBody(); + init_writeKey(); + init_transport(); + JsonShapeDeserializer2 = class extends SerdeContextConfig { + static { + __name(this, "JsonShapeDeserializer2"); + } + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema2, data) { + const reviver = needsReviver(schema2) ? jsonReviver : void 0; + let parsed2; + if (typeof data === "string") { + if (data.length === 0) { + return {}; + } + parsed2 = JSON.parse(data, reviver); + } else if (data instanceof Uint8Array && detectBufferParsing()) { + if (data.byteLength === 0) { + return {}; + } + const buf = Buffer.isBuffer(data) ? data : Buffer.from(data.buffer, data.byteOffset, data.byteLength); + parsed2 = JSON.parse(buf, reviver); + } else { + parsed2 = await parseJsonBody(data, this.serdeContext, schema2); + } + return this._read(schema2, parsed2); + } + readObject(schema2, data) { + return this._read(schema2, data); + } + _read(schema2, value) { + const isObject2 = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema2); + if (isObject2) { + if (ns.isStructSchema()) { + return this._readStruct(ns, value); + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + if (this.needsTransform(listMember)) { + for (let i5 = 0; i5 < value.length; ++i5) { + value[i5] = this._read(listMember, value[i5]); + } + } + return value; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const map2 = value; + if (this.needsTransform(mapMember)) { + for (const k5 in map2) { + if (!hasOwn(map2, k5)) + continue; + if (k5 === "__proto__") { + writeKey(map2); + } + map2[k5] = this._read(mapMember, map2[k5]); + } + } + return map2; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return parseRfc3339DateTimeWithOffset(value); + case 6: + return parseRfc7231DateTime(value); + case 7: + return parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != void 0) { + if (value instanceof NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new NumericValue(untyped.string, untyped.type); + } + return new NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject2) { + if (Array.isArray(value)) { + for (let i5 = 0; i5 < value.length; ++i5) { + const v = value[i5]; + if (!(v instanceof NumericValue)) { + value[i5] = this._read(ns, v); + } + } + } else { + const doc = value; + for (const k5 in doc) { + if (!hasOwn(doc, k5)) + continue; + if (k5 === "__proto__") { + writeKey(doc); + } + const v = doc[k5]; + if (!(v instanceof NumericValue)) { + doc[k5] = this._read(ns, v); + } + } + } + } + } + return value; + } + _readStruct(ns, record2) { + const union2 = ns.isUnionSchema(); + const out = {}; + let nameMap; + const hasType = typeof record2.__type === "string"; + const { jsonName } = this.settings; + if (jsonName && hasType) { + nameMap = {}; + } + let unionSerde; + if (union2) { + unionSerde = new UnionSerde(record2, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + if (hasType) { + nameMap[fromKey] = memberName; + } + } + if (union2) { + unionSerde.mark(fromKey); + } + if (record2[fromKey] != null) { + out[memberName] = this._read(memberSchema, record2[fromKey]); + } + } + if (union2) { + unionSerde.writeUnknown(); + } else if (hasType) { + for (const k5 in record2) { + if (!hasOwn(record2, k5)) + continue; + const v = record2[k5]; + const t = jsonName ? nameMap[k5] ?? k5 : k5; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + needsTransform(ns) { + if (ns.isBlobSchema() || ns.isTimestampSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema() || ns.isNumericSchema()) { + return true; + } + if (ns.isDocumentSchema() || ns.isStructSchema() || ns.isListSchema() || ns.isMapSchema()) { + return true; + } + if (ns.isStringSchema() && ns.getMergedTraits().mediaType) { + return true; + } + return false; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonBytesStringAdapter.js +var JsonBytesStringAdapter, warned; +var init_JsonBytesStringAdapter = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonBytesStringAdapter.js"() { + init_serde(); + JsonBytesStringAdapter = class _JsonBytesStringAdapter extends Uint8Array { + static { + __name(this, "JsonBytesStringAdapter"); + } + string = null; + static allocUnsafe(bytes) { + if (typeof Buffer === "function") { + const buffer = Buffer.allocUnsafe(bytes); + return new _JsonBytesStringAdapter(buffer.buffer, buffer.byteOffset, buffer.byteLength); + } + return new _JsonBytesStringAdapter(bytes); + } + toString() { + return this.s(); + } + valueOf() { + return this.s(); + } + includes(searchString, position) { + if (typeof searchString === "string") { + return this.s().includes(searchString, position); + } + return Uint8Array.prototype.includes.call(this, searchString, position); + } + indexOf(searchString, position) { + if (typeof searchString === "string") { + return this.s().indexOf(searchString, position); + } + return Uint8Array.prototype.indexOf.call(this, searchString, position); + } + lastIndexOf(searchString, position) { + if (typeof searchString === "string") { + return this.s().lastIndexOf(searchString, position); + } + const fn = Uint8Array.prototype.lastIndexOf; + if (position !== void 0) { + return fn.call(this, searchString, position); + } + return fn.call(this, searchString); + } + startsWith(searchString, position) { + return this.s().startsWith(searchString, position); + } + endsWith(searchString, endPosition) { + return this.s().endsWith(searchString, endPosition); + } + match(regexp) { + return this.s().match(regexp); + } + replace(searchValue, replaceValue) { + return this.s().replace(searchValue, replaceValue); + } + search(regexp) { + return this.s().search(regexp); + } + split(separator, limit) { + return this.s().split(separator, limit); + } + substring(start, end) { + return this.s().substring(start, end); + } + trim() { + return this.s().trim(); + } + trimStart() { + return this.s().trimStart(); + } + trimEnd() { + return this.s().trimEnd(); + } + charAt(pos) { + return this.s().charAt(pos); + } + charCodeAt(index) { + return this.s().charCodeAt(index); + } + padStart(maxLength, fillString) { + return this.s().padStart(maxLength, fillString); + } + padEnd(maxLength, fillString) { + return this.s().padEnd(maxLength, fillString); + } + repeat(count) { + return this.s().repeat(count); + } + toUpperCase() { + return this.s().toUpperCase(); + } + toLowerCase() { + return this.s().toLowerCase(); + } + s() { + if (this.string == null) { + const n3 = Date.now(); + if (n3 > warned + 6e4) { + console.warn("@aws-sdk/core/protocols - WARN - JsonCodec2: you have called a string method on a Uint8Array request body. It has been automatically converted to string. In a future version this will throw an error."); + warned = n3; + } + this.string = toUtf8(this); + } + return this.string; + } + }; + warned = 0; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonShapeSerializer2.js +function alloc(size) { + return JsonBytesStringAdapter.allocUnsafe(size); +} +var encoder, OPEN_BRACE, CLOSE_BRACE, OPEN_BRACKET, CLOSE_BRACKET, QUOTE, COLON, COMMA, BACKSLASH, TRUE, FALSE, NULL, ESCAPE_TABLE, INITIAL_BUFFER_SIZE, JsonShapeSerializer2; +var init_JsonShapeSerializer2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonShapeSerializer2.js"() { + init_determineTimestampFormat(); + init_schema(); + init_serde(); + init_ConfigurableSerdeContext(); + init_transport(); + init_JsonBytesStringAdapter(); + encoder = new TextEncoder(); + OPEN_BRACE = 123; + CLOSE_BRACE = 125; + OPEN_BRACKET = 91; + CLOSE_BRACKET = 93; + QUOTE = 34; + COLON = 58; + COMMA = 44; + BACKSLASH = 92; + TRUE = new Uint8Array([116, 114, 117, 101]); + FALSE = new Uint8Array([102, 97, 108, 115, 101]); + NULL = new Uint8Array([110, 117, 108, 108]); + ESCAPE_TABLE = new Array(128).fill(null); + ESCAPE_TABLE[8] = "b"; + ESCAPE_TABLE[9] = "t"; + ESCAPE_TABLE[10] = "n"; + ESCAPE_TABLE[12] = "f"; + ESCAPE_TABLE[13] = "r"; + ESCAPE_TABLE[34] = '"'; + ESCAPE_TABLE[92] = "\\"; + for (let i5 = 0; i5 < 32; i5++) { + if (ESCAPE_TABLE[i5] === null) { + ESCAPE_TABLE[i5] = "u00" + i5.toString(16).padStart(2, "0"); + } + } + INITIAL_BUFFER_SIZE = 2048; + __name(alloc, "alloc"); + JsonShapeSerializer2 = class _JsonShapeSerializer2 extends SerdeContextConfig { + static { + __name(this, "JsonShapeSerializer2"); + } + settings; + json; + i = 0; + rootSchema; + rawValue; + passthrough = false; + constructor(settings) { + super(); + this.settings = settings; + this.json = alloc(INITIAL_BUFFER_SIZE); + } + write(schema2, value) { + this.i = 0; + this.rawValue = value; + this.rootSchema = NormalizedSchema.of(schema2); + this.passthrough = this.rootSchema.isBlobSchema() || this.rootSchema.isStringSchema(); + if (!this.passthrough) { + this.writeValue(this.rootSchema, value, void 0); + } + } + writeDiscriminatedDocument(schema2, value) { + this.i = 0; + this.rootSchema = NormalizedSchema.of(schema2); + const ns = this.rootSchema; + if (ns.isStructSchema() && value != null && typeof value === "object") { + this.writeValue(ns, value, void 0); + const prefix = `"__type":"${ns.getName(true) ?? "Unknown"}",`; + const z2 = prefix.length; + this.ensure(z2); + this.json.copyWithin(1 + z2, 1, this.i); + encoder.encodeInto(prefix, this.json.subarray(1)); + this.i += z2; + } else { + this.writeValue(ns, value, void 0); + } + } + flush() { + this.rootSchema = void 0; + const finalPosition = this.i; + this.i = 0; + const raw4 = this.rawValue; + this.rawValue = void 0; + if (finalPosition === 0) { + return raw4; + } + const result = this.json.subarray(0, finalPosition); + this.json = alloc(INITIAL_BUFFER_SIZE); + return result; + } + ensure(byteCount) { + const { i: i5, json: json2 } = this; + if (i5 + byteCount > json2.length) { + let newSize = json2.length * 2; + while (newSize < i5 + byteCount) { + newSize *= 2; + } + const next = alloc(newSize); + next.set(this.json); + this.json = next; + } + } + writeAscii(s2) { + const z2 = s2.length; + this.ensure(z2); + let { i: i5, json: json2 } = this; + for (let j5 = 0; j5 < z2; ++j5) { + json2[i5] = s2.charCodeAt(j5); + i5 += 1; + } + this.i = i5; + } + writeAsciiQuoted(s2) { + const z2 = s2.length; + this.ensure(z2 + 4); + let { json: json2, i: i5 } = this; + json2[i5++] = QUOTE; + for (let j5 = 0; j5 < z2; ++j5) { + json2[i5++] = s2.charCodeAt(j5); + } + json2[i5++] = QUOTE; + this.i = i5; + } + writeJsonString(s2) { + const z2 = s2.length; + this.ensure(z2 * 3 + 2); + this.json[this.i++] = QUOTE; + for (let j5 = 0; j5 < z2; ++j5) { + const c5 = s2.charCodeAt(j5); + if (c5 > 34 && c5 < 92) { + this.json[this.i++] = c5; + } else if (c5 < 128) { + const esc2 = ESCAPE_TABLE[c5]; + if (esc2 !== null) { + this.ensure(esc2.length + 1 + (z2 - j5 - 1) * 3 + 1); + this.json[this.i++] = BACKSLASH; + for (let k5 = 0; k5 < esc2.length; k5++) { + this.json[this.i++] = esc2.charCodeAt(k5); + } + } else { + this.json[this.i++] = c5; + } + } else if (c5 >= 55296 && c5 <= 56319) { + const next = j5 + 1 < z2 ? s2.charCodeAt(j5 + 1) : 0; + if (next >= 56320 && next <= 57343) { + this.ensure(4); + const { written } = encoder.encodeInto(s2.substring(j5, j5 + 2), this.json.subarray(this.i)); + this.i += written; + ++j5; + } else { + this.ensure(6 + (z2 - j5 - 1) * 3 + 1); + this.writeUnicodeEscape(c5); + } + } else if (c5 >= 56320 && c5 <= 57343) { + this.ensure(6 + (z2 - j5 - 1) * 3 + 1); + this.writeUnicodeEscape(c5); + } else { + let { i: i5, json: json2 } = this; + if (c5 < 2048) { + json2[i5++] = 192 | c5 >> 6; + json2[i5++] = 128 | c5 & 63; + } else { + json2[i5++] = 224 | c5 >> 12; + json2[i5++] = 128 | c5 >> 6 & 63; + json2[i5++] = 128 | c5 & 63; + } + this.i = i5; + } + } + this.json[this.i++] = QUOTE; + } + writeUnicodeEscape(code) { + let { json: json2, i: i5 } = this; + json2[i5++] = BACKSLASH; + json2[i5++] = 117; + const hex3 = code.toString(16).padStart(4, "0"); + for (let j5 = 0; j5 < 4; ++j5) { + json2[i5++] = hex3.charCodeAt(j5); + } + this.i = i5; + } + static B64 = (() => { + const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + const table = new Uint8Array(64); + for (let i5 = 0; i5 < 64; ++i5) { + table[i5] = chars.charCodeAt(i5); + } + return table; + })(); + writeBase64(data) { + const b64Len = Math.ceil(data.length / 3) * 4; + this.ensure(b64Len + 2); + const json2 = this.json; + const B64 = _JsonShapeSerializer2.B64; + let i5 = this.i; + json2[i5++] = QUOTE; + const len = data.length; + const remainder = len % 3; + const mainLen = len - remainder; + for (let j5 = 0; j5 < mainLen; j5 += 3) { + const a5 = data[j5]; + const b5 = data[j5 + 1]; + const c5 = data[j5 + 2]; + json2[i5++] = B64[a5 >> 2]; + json2[i5++] = B64[(a5 & 3) << 4 | b5 >> 4]; + json2[i5++] = B64[(b5 & 15) << 2 | c5 >> 6]; + json2[i5++] = B64[c5 & 63]; + } + if (remainder === 2) { + const a5 = data[mainLen]; + const b5 = data[mainLen + 1]; + json2[i5++] = B64[a5 >> 2]; + json2[i5++] = B64[(a5 & 3) << 4 | b5 >> 4]; + json2[i5++] = B64[(b5 & 15) << 2]; + json2[i5++] = 61; + } else if (remainder === 1) { + const a5 = data[mainLen]; + json2[i5++] = B64[a5 >> 2]; + json2[i5++] = B64[(a5 & 3) << 4]; + json2[i5++] = 61; + json2[i5++] = 61; + } + json2[i5++] = QUOTE; + this.i = i5; + } + writeValue(schema2, value, container) { + if (value == null) { + if (container?.isStructSchema()) { + if (value === void 0) { + const ns2 = NormalizedSchema.of(schema2); + if (ns2.isIdempotencyToken()) { + this.writeAsciiQuoted(generateIdempotencyToken()); + return; + } + } + return; + } + this.ensure(4); + this.json.set(NULL, this.i); + this.i += 4; + return; + } + const ns = NormalizedSchema.of(schema2); + const isObject2 = typeof value === "object"; + if (ns.isStringSchema()) { + const mediaType = ns.getMergedTraits().mediaType; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + this.writeJsonString(LazyJsonString.from(value).toString()); + return; + } + } + } + if (this.settings.bigNumberAsString && value != null && (ns.isBigIntegerSchema() || ns.isBigDecimalSchema())) { + const asString = value instanceof NumericValue ? value.string : String(value); + this.writeAsciiQuoted(asString); + return; + } + if (isObject2) { + if (ns.isStructSchema()) { + this.writeStruct(ns, value); + return; + } + if (Array.isArray(value) && (ns.isListSchema() || ns.isDocumentSchema())) { + this.writeList(ns, value, ns.isDocumentSchema()); + return; + } + if (ns.isMapSchema()) { + this.writeMap(ns, value, false); + return; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + this.writeBase64(value); + return; + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + this.writeTimestamp(ns, value); + return; + } + if (value instanceof NumericValue) { + this.writeAscii(value.string); + return; + } + if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.writeList(ns, value, true); + } else { + this.writeMap(ns, value, true); + } + return; + } + const json2 = JSON.stringify(value); + this.writeAscii(json2); + return; + } + if (typeof value === "string") { + if (ns.isBlobSchema()) { + const b64 = (this.serdeContext?.base64Encoder ?? toBase64)(value); + this.writeAsciiQuoted(b64); + return; + } + this.writeJsonString(value); + return; + } + if (typeof value === "number") { + if (Math.abs(value) === Infinity || Number.isNaN(value)) { + this.writeAsciiQuoted(String(value)); + return; + } + const numStr = String(value); + this.writeAscii(numStr); + return; + } + if (typeof value === "boolean") { + this.ensure(5); + let { i: i5, json: json2 } = this; + if (value) { + json2.set(TRUE, i5); + i5 += 4; + } else { + json2.set(FALSE, i5); + i5 += 5; + } + this.i = i5; + return; + } + if (typeof value === "bigint") { + this.writeAscii(value.toString()); + return; + } + this.writeAscii(String(value)); + } + writeStruct(ns, value) { + this.ensure(2); + this.json[this.i++] = OPEN_BRACE; + let wroteAny = false; + const hasType = typeof value.__type === "string"; + let writtenKeys; + if (hasType) { + writtenKeys = /* @__PURE__ */ new Set(); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const item = value[memberName]; + if (item == null && !memberSchema.isIdempotencyToken()) { + continue; + } + if (wroteAny) { + this.ensure(1); + this.json[this.i++] = COMMA; + } + wroteAny = true; + const targetKey = this.settings.jsonName ? memberSchema.getMergedTraits().jsonName ?? memberName : memberName; + if (writtenKeys) { + writtenKeys.add(memberName); + writtenKeys.add(targetKey); + } + this.writeAsciiQuoted(targetKey); + this.json[this.i++] = COLON; + this.writeValue(memberSchema, item, ns); + } + if (!wroteAny && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k5, v] = $unknown; + this.writeAsciiQuoted(k5); + this.ensure(1); + this.json[this.i++] = COLON; + this.writeValue(15, v, ns); + } + } else if (hasType) { + for (const k5 in value) { + if (writtenKeys.has(k5)) { + continue; + } + writtenKeys.add(k5); + const v = value[k5]; + if (wroteAny) { + this.ensure(1); + this.json[this.i++] = COMMA; + } + wroteAny = true; + this.writeAsciiQuoted(k5); + this.ensure(1); + this.json[this.i++] = COLON; + this.writeValue(15, v, void 0); + } + } + this.ensure(1); + this.json[this.i++] = CLOSE_BRACE; + } + writeList(ns, value, isDocument) { + const sparse = !!ns.getMergedTraits().sparse; + const valueSchema = ns.getValueSchema(); + if (!isDocument) { + if (valueSchema.isStringSchema() || valueSchema.isNumericSchema() || valueSchema.isBooleanSchema()) { + let hasSpecials = false; + for (let i5 = 0; i5 < value.length; ++i5) { + const v = value[i5]; + if (Number.isNaN(v) || v === Infinity || v === -Infinity || v == null && !sparse) { + hasSpecials = true; + break; + } + } + let json2; + if (!hasSpecials) { + json2 = JSON.stringify(value); + } else { + const out = []; + for (let i5 = 0; i5 < value.length; ++i5) { + const v = value[i5]; + if (v == null && !sparse) + continue; + if (Number.isNaN(v) || v === Infinity || v === -Infinity) { + out.push(String(v)); + } else { + out.push(v); + } + } + json2 = JSON.stringify(out); + } + this.ensure(json2.length * 3); + this.i += encoder.encodeInto(json2, this.json.subarray(this.i)).written; + return; + } + } + this.ensure(2); + this.json[this.i++] = OPEN_BRACKET; + let wroteFirstItem = false; + for (let i5 = 0; i5 < value.length; ++i5) { + const item = value[i5]; + if (isDocument ? item === void 0 : item == null && !sparse) { + continue; + } + if (wroteFirstItem) { + this.ensure(1); + this.json[this.i++] = COMMA; + } + this.writeValue(valueSchema, item, void 0); + wroteFirstItem = true; + } + this.ensure(1); + this.json[this.i++] = CLOSE_BRACKET; + } + writeMap(ns, value, isDocument) { + const sparse = !!ns.getMergedTraits().sparse; + const valueSchema = ns.getValueSchema(); + if (!isDocument) { + if (valueSchema.isStringSchema() || valueSchema.isNumericSchema() || valueSchema.isBooleanSchema()) { + let modifications; + for (const k5 in value) { + if (!hasOwn(value, k5)) + continue; + const v = value[k5]; + if (Number.isNaN(v) || v === Infinity || v === -Infinity) { + (modifications ??= {})[k5] = v; + value[k5] = String(v); + } else if (v === null && !sparse) { + (modifications ??= {})[k5] = null; + value[k5] = void 0; + } + } + const json2 = JSON.stringify(value); + if (modifications) { + Object.assign(value, modifications); + } + this.ensure(json2.length * 3); + this.i += encoder.encodeInto(json2, this.json.subarray(this.i)).written; + return; + } + } + this.ensure(2); + this.json[this.i++] = OPEN_BRACE; + let first = true; + for (const k5 in value) { + if (!hasOwn(value, k5)) + continue; + const v = value[k5]; + if (isDocument ? v === void 0 : v == null && !sparse) { + continue; + } + if (!first) { + this.ensure(1); + this.json[this.i++] = COMMA; + } + first = false; + this.writeJsonString(k5); + this.ensure(1); + this.json[this.i++] = COLON; + this.writeValue(valueSchema, v, void 0); + } + this.ensure(1); + this.json[this.i++] = CLOSE_BRACE; + } + writeTimestamp(ns, value) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: { + const iso = value.toISOString().replace(".000Z", "Z"); + this.writeAsciiQuoted(iso); + return; + } + case 6: { + this.writeAsciiQuoted(dateToUtcString(value)); + return; + } + case 7: { + const epochSecs = String(value.getTime() / 1e3); + this.writeAscii(epochSecs); + return; + } + default: { + const epochSecs = String(value.getTime() / 1e3); + this.writeAscii(epochSecs); + return; + } + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonCodec2.js +var JsonCodec2; +var init_JsonCodec2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v2/JsonCodec2.js"() { + init_ConfigurableSerdeContext(); + init_JsonShapeDeserializer2(); + init_JsonShapeSerializer2(); + JsonCodec2 = class extends SerdeContextConfig { + static { + __name(this, "JsonCodec2"); + } + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer2(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer2(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/SmithyRpcV2JsonProtocol.js +var SmithyRpcV2JsonProtocol; +var init_SmithyRpcV2JsonProtocol = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/SmithyRpcV2JsonProtocol.js"() { + init_RpcProtocol(); + init_schema(); + init_transport(); + init_JsonCodec2(); + init_parseJsonBody(); + SmithyRpcV2JsonProtocol = class extends RpcProtocol { + static { + __name(this, "SmithyRpcV2JsonProtocol"); + } + codec = new JsonCodec2({ + timestampFormat: { + useTrait: false, + default: 7 + }, + jsonName: false, + bigNumberAsString: true + }); + serializer = this.codec.createSerializer(); + deserializer = this.codec.createDeserializer(); + constructor({ defaultNamespace, errorTypeRegistries: errorTypeRegistries5 }) { + super({ defaultNamespace, errorTypeRegistries: errorTypeRegistries5 }); + } + getShapeId() { + return "smithy.protocols#rpcv2Json"; + } + getPayloadCodec() { + return this.codec; + } + async serializeRequest(operationSchema, input2, context) { + const request = await super.serializeRequest(operationSchema, input2, context); + Object.assign(request.headers, { + "content-type": this.getDefaultContentType(), + "smithy-protocol": "rpc-v2-json", + accept: this.getDefaultContentType() + }); + if (deref(operationSchema.input) === "unit") { + delete request.body; + delete request.headers["content-type"]; + } else if (!request.body) { + request.body = "{}"; + } + const { service, operation } = getSmithyContext(context); + const path2 = `/service/${service}/operation/${operation}`; + if (request.path.endsWith("/")) { + request.path += path2.slice(1); + } else { + request.path += path2; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorName = loadSmithyRpcV2JsonErrorCode(response, dataObject) ?? "Unknown"; + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode <= 500 ? "client" : "server" + }; + let namespace = this.options.defaultNamespace; + if (errorName.includes("#")) { + [namespace] = errorName.split("#"); + } + const registry2 = this.compositeErrorRegistry; + const nsRegistry = TypeRegistry.for(namespace); + registry2.copyFrom(nsRegistry); + let errorSchema; + try { + errorSchema = registry2.getSchema(errorName); + } catch (ignored) { + if (dataObject.Message) { + dataObject.message = dataObject.Message; + } + const syntheticRegistry = TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + registry2.copyFrom(syntheticRegistry); + const baseExceptionSchema = registry2.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor2 = registry2.getErrorCtor(baseExceptionSchema); + throw Object.assign(new ErrorCtor2({ name: errorName }), errorMetadata, dataObject); + } + throw Object.assign(new Error(errorName), errorMetadata, dataObject); + } + const ns = NormalizedSchema.of(errorSchema); + const ErrorCtor = registry2.getErrorCtor(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const exception = new ErrorCtor({}); + const output2 = {}; + const errorDeserializer = this.codec.createDeserializer(); + for (const [name2, member] of ns.structIterator()) { + if (dataObject[name2] != null) { + output2[name2] = errorDeserializer.readObject(member, dataObject[name2]); + } + } + throw Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message + }, output2); + } + getDefaultContentType() { + return "application/json"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v1/JsonShapeDeserializer.js +var JsonShapeDeserializer; +var init_JsonShapeDeserializer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v1/JsonShapeDeserializer.js"() { + init_determineTimestampFormat(); + init_schema(); + init_serde(); + init_serde(); + init_transport(); + init_ConfigurableSerdeContext(); + init_UnionSerde(); + init_jsonReviver(); + init_needsReviver(); + init_parseJsonBody(); + init_writeKey(); + JsonShapeDeserializer = class extends SerdeContextConfig { + static { + __name(this, "JsonShapeDeserializer"); + } + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema2, data) { + const reviver = needsReviver(schema2) ? jsonReviver : void 0; + return this._read(schema2, typeof data === "string" ? JSON.parse(data, reviver) : await parseJsonBody(data, this.serdeContext, schema2)); + } + readObject(schema2, data) { + return this._read(schema2, data); + } + _read(schema2, value) { + const isObject2 = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema2); + if (isObject2) { + if (ns.isStructSchema()) { + const record2 = value; + const union2 = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union2) { + unionSerde = new UnionSerde(record2, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union2) { + unionSerde.mark(fromKey); + } + if (record2[fromKey] != null) { + out[memberName] = this._read(memberSchema, record2[fromKey]); + } + } + if (union2) { + unionSerde.writeUnknown(); + } else if (typeof record2.__type === "string") { + for (const k5 in record2) { + if (!hasOwn(record2, k5)) + continue; + const v = record2[k5]; + const t = jsonName ? nameMap[k5] ?? k5 : k5; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const _k in value) { + if (!hasOwn(value, _k)) + continue; + if (_k === "__proto__") { + writeKey(out); + } + out[_k] = this._read(mapMember, value[_k]); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return parseRfc3339DateTimeWithOffset(value); + case 6: + return parseRfc7231DateTime(value); + case 7: + return parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != void 0) { + if (value instanceof NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new NumericValue(untyped.string, untyped.type); + } + return new NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject2) { + const out = Array.isArray(value) ? [] : {}; + for (const k5 in value) { + if (!hasOwn(value, k5)) + continue; + if (k5 === "__proto__") { + writeKey(out); + } + const v = value[k5]; + if (v instanceof NumericValue) { + out[k5] = v; + } else { + out[k5] = this._read(ns, v); + } + } + return out; + } else { + return structuredClone(value); + } + } + return value; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/jsonReplacer.js +var NUMERIC_CONTROL_CHAR, JsonReplacer; +var init_jsonReplacer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/jsonReplacer.js"() { + init_serde(); + NUMERIC_CONTROL_CHAR = String.fromCharCode(925); + JsonReplacer = class { + static { + __name(this, "JsonReplacer"); + } + values = /* @__PURE__ */ new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s2 = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s2; + this.values.set(`"${v}"`, s2); + return v; + } + return value; + }; + } + replaceInJson(json2) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json2; + } + for (const [key, value] of this.values) { + json2 = json2.replace(key, value); + } + return json2; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v1/JsonShapeSerializer.js +var JsonShapeSerializer; +var init_JsonShapeSerializer = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v1/JsonShapeSerializer.js"() { + init_determineTimestampFormat(); + init_schema(); + init_serde(); + init_ConfigurableSerdeContext(); + init_jsonReplacer(); + init_writeKey(); + init_transport(); + JsonShapeSerializer = class extends SerdeContextConfig { + static { + __name(this, "JsonShapeSerializer"); + } + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema2, value) { + this.rootSchema = NormalizedSchema.of(schema2); + this.buffer = this._write(this.rootSchema, value); + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = void 0; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + writeDiscriminatedDocument(schema2, value) { + this.write(schema2, value); + if (typeof this.buffer === "object") { + this.buffer.__type = NormalizedSchema.of(schema2).getName(true); + } + } + _write(schema2, value, container) { + const isObject2 = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema2); + if (isObject2) { + if (ns.isStructSchema()) { + const record2 = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + let outCount = 0; + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record2[memberName], ns); + if (serializableValue !== void 0) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + outCount++; + } + } + if (ns.isUnionSchema() && outCount === 0) { + const { $unknown } = record2; + if (Array.isArray($unknown)) { + const [k5, v] = $unknown; + if (k5 === "__proto__") { + writeKey(out); + } + out[k5] = this._write(15, v); + } + } else if (typeof record2.__type === "string") { + for (const k5 in record2) { + if (!hasOwn(record2, k5)) + continue; + const v = record2[k5]; + const targetKey = jsonName ? nameMap[k5] ?? k5 : k5; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const _k in value) { + if (!hasOwn(value, _k)) + continue; + const _v = value[_k]; + if (sparse || _v != null) { + if (_k === "__proto__") { + writeKey(out); + } + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return dateToUtcString(value); + case 7: + return value.getTime() / 1e3; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1e3; + } + } + if (value instanceof NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number") { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject2) { + if (value instanceof Uint8Array) { + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + const out = Array.isArray(value) ? [] : {}; + for (const k5 in value) { + if (!hasOwn(value, k5)) + continue; + const v = value[k5]; + if (k5 === "__proto__") { + writeKey(out); + } + if (v instanceof NumericValue) { + this.useReplacer = true; + out[k5] = v; + } else { + out[k5] = this._write(ns, v); + } + } + return out; + } else { + return structuredClone(value); + } + } + return value; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v1/JsonCodec.js +var JsonCodec; +var init_JsonCodec = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/json/codec-v1/JsonCodec.js"() { + init_ConfigurableSerdeContext(); + init_JsonShapeDeserializer(); + init_JsonShapeSerializer(); + JsonCodec = class extends SerdeContextConfig { + static { + __name(this, "JsonCodec"); + } + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +var protocols_exports = {}; +__export(protocols_exports, { + Field: () => Field, + Fields: () => Fields, + FromStringShapeDeserializer: () => FromStringShapeDeserializer, + HttpBindingProtocol: () => HttpBindingProtocol, + HttpInterceptingShapeDeserializer: () => HttpInterceptingShapeDeserializer, + HttpInterceptingShapeSerializer: () => HttpInterceptingShapeSerializer, + HttpProtocol: () => HttpProtocol, + HttpRequest: () => HttpRequest, + HttpResponse: () => HttpResponse, + JsonCodec: () => JsonCodec, + JsonCodec2: () => JsonCodec2, + JsonShapeDeserializer: () => JsonShapeDeserializer, + JsonShapeDeserializer2: () => JsonShapeDeserializer2, + JsonShapeSerializer: () => JsonShapeSerializer, + JsonShapeSerializer2: () => JsonShapeSerializer2, + RequestBuilder: () => RequestBuilder, + RpcProtocol: () => RpcProtocol, + SerdeContext: () => SerdeContext, + SmithyRpcV2JsonProtocol: () => SmithyRpcV2JsonProtocol, + ToStringShapeSerializer: () => ToStringShapeSerializer, + buildQueryString: () => buildQueryString, + collectBody: () => collectBody, + contentLengthMiddleware: () => contentLengthMiddleware, + contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions, + determineTimestampFormat: () => determineTimestampFormat, + escapeUri: () => escapeUri, + escapeUriPath: () => escapeUriPath, + extendedEncodeURIComponent: () => extendedEncodeURIComponent, + getContentLengthPlugin: () => getContentLengthPlugin, + getHttpHandlerExtensionConfiguration: () => getHttpHandlerExtensionConfiguration, + isValidHostname: () => isValidHostname, + loadJsonRpcErrorCode: () => loadJsonRpcErrorCode, + loadRestJsonErrorCode: () => loadRestJsonErrorCode, + loadSmithyRpcV2JsonErrorCode: () => loadSmithyRpcV2JsonErrorCode, + parseJsonBody: () => parseJsonBody, + parseJsonErrorBody: () => parseJsonErrorBody, + parseQueryString: () => parseQueryString, + parseUrl: () => parseUrl, + requestBuilder: () => requestBuilder, + resolveHttpHandlerRuntimeConfig: () => resolveHttpHandlerRuntimeConfig, + resolvedPath: () => resolvedPath +}); +var init_protocols = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/protocols/index.js"() { + init_collect_stream_body(); + init_extended_encode_uri_component(); + init_HttpBindingProtocol(); + init_HttpProtocol(); + init_RpcProtocol(); + init_requestBuilder(); + init_resolve_path(); + init_FromStringShapeDeserializer(); + init_HttpInterceptingShapeDeserializer(); + init_HttpInterceptingShapeSerializer(); + init_ToStringShapeSerializer(); + init_determineTimestampFormat(); + init_SerdeContext(); + init_Field(); + init_Fields(); + init_transport(); + init_transport(); + init_transport(); + init_httpExtensionConfiguration(); + init_contentLengthMiddleware(); + init_escape_uri(); + init_escape_uri_path(); + init_buildQueryString(); + init_transport(); + init_transport(); + init_SmithyRpcV2JsonProtocol(); + init_parseJsonBody(); + init_JsonCodec(); + init_JsonShapeSerializer(); + init_JsonShapeDeserializer(); + init_JsonCodec2(); + init_JsonShapeSerializer2(); + init_JsonShapeDeserializer2(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/constants.js +var CLOCK_SKEW_ERROR_CODES, THROTTLING_ERROR_CODES, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_STATUS_CODES, NODEJS_TIMEOUT_ERROR_CODES, NODEJS_NETWORK_ERROR_CODES; +var init_constants2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/constants.js"() { + CLOCK_SKEW_ERROR_CODES = [ + "AccessDeniedException", + "AuthFailure", + "InvalidSignatureException", + "RequestExpired", + "RequestInTheFuture", + "RequestTimeTooSkewed", + "SignatureDoesNotMatch" + ]; + THROTTLING_ERROR_CODES = [ + "BandwidthLimitExceeded", + "EC2ThrottledException", + "LimitExceededException", + "PriorRequestNotComplete", + "ProvisionedThroughputExceededException", + "RequestLimitExceeded", + "RequestThrottled", + "RequestThrottledException", + "SlowDown", + "ThrottledException", + "Throttling", + "ThrottlingException", + "TooManyRequestsException", + "TransactionInProgressException" + ]; + TRANSIENT_ERROR_CODES = ["TimeoutError", "RequestTimeout", "RequestTimeoutException"]; + TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504]; + NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "ECONNREFUSED", "EPIPE", "ETIMEDOUT"]; + NODEJS_NETWORK_ERROR_CODES = ["EHOSTUNREACH", "ENETUNREACH", "ENOTFOUND", "EAI_AGAIN"]; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/service-error-classification.js +function isNodeJsHttp2TransientError(error62) { + return error62.code === "ERR_HTTP2_STREAM_ERROR" && error62.message.includes("NGHTTP2_REFUSED_STREAM"); +} +var isRetryableByTrait, isClockSkewError, isClockSkewCorrectedError, isBrowserNetworkError, isThrottlingError, isTransientError, isServerError; +var init_service_error_classification = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/service-error-classification.js"() { + init_constants2(); + isRetryableByTrait = /* @__PURE__ */ __name((error62) => error62?.$retryable !== void 0, "isRetryableByTrait"); + isClockSkewError = /* @__PURE__ */ __name((error62) => CLOCK_SKEW_ERROR_CODES.includes(error62.name), "isClockSkewError"); + isClockSkewCorrectedError = /* @__PURE__ */ __name((error62) => error62.$metadata?.clockSkewCorrected, "isClockSkewCorrectedError"); + isBrowserNetworkError = /* @__PURE__ */ __name((error62) => { + const errorMessages = /* @__PURE__ */ new Set([ + "Failed to fetch", + "NetworkError when attempting to fetch resource", + "The Internet connection appears to be offline", + "Load failed", + "Network request failed" + ]); + const isValid = error62 && error62 instanceof TypeError; + if (!isValid) { + return false; + } + return errorMessages.has(error62.message); + }, "isBrowserNetworkError"); + isThrottlingError = /* @__PURE__ */ __name((error62) => error62.$metadata?.httpStatusCode === 429 || THROTTLING_ERROR_CODES.includes(error62.name) || error62.$retryable?.throttling == true, "isThrottlingError"); + isTransientError = /* @__PURE__ */ __name((error62, depth = 0) => error62?.name !== "AbortError" && (isRetryableByTrait(error62) || isClockSkewCorrectedError(error62) || error62.name === "InvalidSignatureException" && error62.message?.includes("Signature expired") || TRANSIENT_ERROR_CODES.includes(error62.name) || NODEJS_TIMEOUT_ERROR_CODES.includes(error62?.code || "") || NODEJS_NETWORK_ERROR_CODES.includes(error62?.code || "") || TRANSIENT_ERROR_STATUS_CODES.includes(error62.$metadata?.httpStatusCode || 0) || isBrowserNetworkError(error62) || isNodeJsHttp2TransientError(error62) || error62.cause !== void 0 && depth <= 10 && isTransientError(error62.cause, depth + 1)), "isTransientError"); + isServerError = /* @__PURE__ */ __name((error62) => { + if (error62.$metadata?.httpStatusCode !== void 0) { + const statusCode = error62.$metadata.httpStatusCode; + if (500 <= statusCode && statusCode <= 599 && !isTransientError(error62)) { + return true; + } + return false; + } + return false; + }, "isServerError"); + __name(isNodeJsHttp2TransientError, "isNodeJsHttp2TransientError"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/constants.js +var DEFAULT_RETRY_DELAY_BASE, MAXIMUM_RETRY_DELAY, THROTTLING_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, RETRY_COST, TIMEOUT_RETRY_COST, NO_RETRY_INCREMENT, INVOCATION_ID_HEADER, REQUEST_HEADER; +var init_constants3 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/constants.js"() { + DEFAULT_RETRY_DELAY_BASE = 100; + MAXIMUM_RETRY_DELAY = 20 * 1e3; + THROTTLING_RETRY_DELAY_BASE = 500; + INITIAL_RETRY_TOKENS = 500; + RETRY_COST = 5; + TIMEOUT_RETRY_COST = 10; + NO_RETRY_INCREMENT = 1; + INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; + REQUEST_HEADER = "amz-sdk-request"; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/parseRetryAfterHeader.js +function parseRetryAfterHeader(response, logger) { + if (!HttpResponse.isInstance(response)) { + return; + } + for (const header in response.headers) { + if (!hasOwn(response.headers, header)) + continue; + const h5 = header.toLowerCase(); + if (h5 === "retry-after") { + const retryAfter = response.headers[header]; + let retryAfterSeconds = NaN; + if (retryAfter.endsWith("GMT")) { + try { + const date5 = parseRfc7231DateTime(retryAfter); + retryAfterSeconds = (date5.getTime() - Date.now()) / 1e3; + } catch (e5) { + logger?.trace?.("Failed to parse retry-after header"); + logger?.trace?.(e5); + } + } else if (retryAfter.match(/ GMT, ((\d+)|(\d+\.\d+))$/)) { + retryAfterSeconds = Number(retryAfter.match(/ GMT, ([\d.]+)$/)?.[1]); + } else if (retryAfter.match(/^((\d+)|(\d+\.\d+))$/)) { + retryAfterSeconds = Number(retryAfter); + } else if (Date.parse(retryAfter) >= Date.now()) { + retryAfterSeconds = (Date.parse(retryAfter) - Date.now()) / 1e3; + } + if (isNaN(retryAfterSeconds)) { + return; + } + return new Date(Date.now() + retryAfterSeconds * 1e3); + } else if (h5 === "x-amz-retry-after") { + const v = response.headers[header]; + const backoffMilliseconds = Number(v); + if (isNaN(backoffMilliseconds)) { + logger?.trace?.(`Failed to parse x-amz-retry-after=${v}`); + return; + } + return new Date(Date.now() + backoffMilliseconds); + } + } +} +function getRetryAfterHint(response, logger) { + return parseRetryAfterHeader(response, logger); +} +var init_parseRetryAfterHeader = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/parseRetryAfterHeader.js"() { + init_transport(); + init_protocols(); + init_serde(); + __name(parseRetryAfterHeader, "parseRetryAfterHeader"); + __name(getRetryAfterHint, "getRetryAfterHint"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/util.js +var asSdkError; +var init_util = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/util.js"() { + asSdkError = /* @__PURE__ */ __name((error62) => { + if (error62 instanceof Error) + return error62; + if (error62 instanceof Object) + return Object.assign(new Error(), error62); + if (typeof error62 === "string") + return new Error(error62); + return new Error(`AWS SDK error wrapper for ${error62}`); + }, "asSdkError"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retryMiddleware.js +function bindRetryMiddleware(isStreamingPayload2) { + return (options) => (next, context) => async (args) => { + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken((context["partition_id"] ?? "") + (context.__retryLongPoll ? ":longpoll" : "")); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request } = args; + const isRequest = HttpRequest.isInstance(request); + if (isRequest) { + request.headers[INVOCATION_ID_HEADER] = v4(); + } + while (true) { + try { + if (isRequest) { + request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output: output2 } = await next(args); + retryStrategy.recordSuccess(retryToken); + output2.$metadata.attempts = attempts + 1; + output2.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output: output2 }; + } catch (e5) { + const retryErrorInfo = getRetryErrorInfo(e5, options.logger); + lastError = asSdkError(e5); + if (isRequest && isStreamingPayload2(request)) { + (context.logger instanceof NoOpLogger ? console : context.logger)?.warn("An error was encountered in a non-retryable streaming request."); + throw lastError; + } + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } catch (ignoredRefreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += (retryToken?.$retryLog?.acquisitionDelay ?? 0) + delay; + if (delay > 0) { + await cooldown(delay); + } + } + } + } else { + retryStrategy = retryStrategy; + if (retryStrategy?.mode) { + context.userAgent = [...context.userAgent || [], ["cfg/retry-mode", retryStrategy.mode]]; + } + return retryStrategy.retry(next, args); + } + }; +} +function bindGetRetryPlugin(isStreamingPayload2) { + const retryMiddleware2 = bindRetryMiddleware(isStreamingPayload2); + return (options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(retryMiddleware2(options), retryMiddlewareOptions); + }, "applyToStack") + }); +} +var cooldown, isRetryStrategyV2, getRetryErrorInfo, getRetryErrorType, retryMiddlewareOptions; +var init_retryMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retryMiddleware.js"() { + init_client(); + init_protocols(); + init_serde(); + init_service_error_classification(); + init_constants3(); + init_parseRetryAfterHeader(); + init_util(); + __name(bindRetryMiddleware, "bindRetryMiddleware"); + cooldown = /* @__PURE__ */ __name((ms) => new Promise((resolve) => setTimeout(resolve, ms)), "cooldown"); + isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && typeof retryStrategy.recordSuccess !== "undefined", "isRetryStrategyV2"); + getRetryErrorInfo = /* @__PURE__ */ __name((error62, logger) => { + const errorInfo = { + error: error62, + errorType: getRetryErrorType(error62) + }; + const retryAfterHint = parseRetryAfterHeader(error62.$response, logger); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; + }, "getRetryErrorInfo"); + getRetryErrorType = /* @__PURE__ */ __name((error62) => { + if (isThrottlingError(error62)) + return "THROTTLING"; + if (isTransientError(error62)) + return "TRANSIENT"; + if (isServerError(error62)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; + }, "getRetryErrorType"); + retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true + }; + __name(bindGetRetryPlugin, "bindGetRetryPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRateLimiter.js +var DefaultRateLimiter; +var init_DefaultRateLimiter = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRateLimiter.js"() { + init_service_error_classification(); + DefaultRateLimiter = class _DefaultRateLimiter { + static { + __name(this, "DefaultRateLimiter"); + } + static setTimeoutFn = /* @__PURE__ */ __name((fn, delay) => setTimeout(fn, delay), "setTimeoutFn"); + beta; + minCapacity; + minFillRate; + scaleConstant; + smooth; + enabled = false; + availableTokens = 0; + lastMaxRate = 0; + measuredTxRate = 0; + requestCount = 0; + fillRate; + lastThrottleTime; + lastTimestamp = 0; + lastTxRateBucket; + maxCapacity; + timeWindow = 0; + constructor(options) { + this.beta = options?.beta ?? 0.7; + this.minCapacity = options?.minCapacity ?? 1; + this.minFillRate = options?.minFillRate ?? 0.5; + this.scaleConstant = options?.scaleConstant ?? 0.4; + this.smooth = options?.smooth ?? 0.8; + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds()); + this.fillRate = this.minFillRate; + this.maxCapacity = this.minCapacity; + } + async getSendToken() { + return this.acquireTokenBucket(1); + } + updateClientSendingRate(response) { + let calculatedRate; + this.updateMeasuredRate(); + const retryErrorInfo = response; + const isThrottling = retryErrorInfo?.errorType === "THROTTLING" || isThrottlingError(retryErrorInfo?.error ?? response); + if (isThrottling) { + const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate); + this.lastMaxRate = rateToUse; + this.calculateTimeWindow(); + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + calculatedRate = this.cubicThrottle(rateToUse); + this.enableTokenBucket(); + } else { + this.calculateTimeWindow(); + calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds()); + } + const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate); + this.updateTokenBucketRate(newRate); + } + getCurrentTimeInSeconds() { + return Date.now() / 1e3; + } + async acquireTokenBucket(amount) { + if (!this.enabled) { + return; + } + this.refillTokenBucket(); + while (amount > this.availableTokens) { + const delay = (amount - this.availableTokens) / this.fillRate * 1e3; + await new Promise((resolve) => _DefaultRateLimiter.setTimeoutFn(resolve, delay)); + this.refillTokenBucket(); + } + this.availableTokens = this.availableTokens - amount; + } + refillTokenBucket() { + const timestamp = this.getCurrentTimeInSeconds(); + if (!this.lastTimestamp) { + this.lastTimestamp = timestamp; + return; + } + const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate; + this.availableTokens = Math.min(this.maxCapacity, this.availableTokens + fillAmount); + this.lastTimestamp = timestamp; + } + calculateTimeWindow() { + this.timeWindow = this.getPrecise(Math.pow(this.lastMaxRate * (1 - this.beta) / this.scaleConstant, 1 / 3)); + } + cubicThrottle(rateToUse) { + return this.getPrecise(rateToUse * this.beta); + } + cubicSuccess(timestamp) { + return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate); + } + enableTokenBucket() { + this.enabled = true; + } + updateTokenBucketRate(newRate) { + this.refillTokenBucket(); + this.fillRate = Math.max(newRate, this.minFillRate); + this.maxCapacity = Math.max(newRate, this.minCapacity); + this.availableTokens = Math.min(this.availableTokens, this.maxCapacity); + } + updateMeasuredRate() { + const t = this.getCurrentTimeInSeconds(); + const timeBucket = Math.floor(t * 2) / 2; + this.requestCount++; + if (timeBucket > this.lastTxRateBucket) { + const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket); + this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth)); + this.requestCount = 0; + this.lastTxRateBucket = timeBucket; + } + } + getPrecise(num) { + return parseFloat(num.toFixed(8)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/retries-2026-config.js +var Retry; +var init_retries_2026_config = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/retries-2026-config.js"() { + Retry = class _Retry { + static { + __name(this, "Retry"); + } + static v2026 = typeof process !== "undefined" && process.env?.SMITHY_NEW_RETRIES_2026 === "true"; + static delay() { + return _Retry.v2026 ? 50 : 100; + } + static throttlingDelay() { + return _Retry.v2026 ? 1e3 : 500; + } + static cost() { + return _Retry.v2026 ? 14 : 5; + } + static throttlingCost() { + return _Retry.v2026 ? 5 : 10; + } + static modifiedCostType() { + return _Retry.v2026 ? "THROTTLING" : "TRANSIENT"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRetryBackoffStrategy.js +var DefaultRetryBackoffStrategy; +var init_DefaultRetryBackoffStrategy = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRetryBackoffStrategy.js"() { + init_constants3(); + init_retries_2026_config(); + DefaultRetryBackoffStrategy = class { + static { + __name(this, "DefaultRetryBackoffStrategy"); + } + x = Retry.delay(); + computeNextBackoffDelay(i5) { + const b5 = Math.random(); + const r5 = 2; + const t_i = b5 * Math.min(this.x * r5 ** i5, MAXIMUM_RETRY_DELAY); + return Math.floor(t_i); + } + setDelayBase(delay) { + this.x = delay; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRetryToken.js +var DefaultRetryToken; +var init_DefaultRetryToken = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRetryToken.js"() { + init_constants3(); + DefaultRetryToken = class { + static { + __name(this, "DefaultRetryToken"); + } + delay; + count; + cost; + longPoll; + $retryLog = { + acquisitionDelay: 0 + }; + constructor(delay, count, cost, longPoll) { + this.delay = delay; + this.count = count; + this.cost = cost; + this.longPoll = longPoll; + } + getRetryCount() { + return this.count; + } + getRetryDelay() { + return Math.min(MAXIMUM_RETRY_DELAY, this.delay); + } + getRetryCost() { + return this.cost; + } + isLongPoll() { + return this.longPoll; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/config.js +var RETRY_MODES, DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE; +var init_config2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/config.js"() { + (function(RETRY_MODES2) { + RETRY_MODES2["STANDARD"] = "standard"; + RETRY_MODES2["ADAPTIVE"] = "adaptive"; + })(RETRY_MODES || (RETRY_MODES = {})); + DEFAULT_MAX_ATTEMPTS = 3; + DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/StandardRetryStrategy.js +var refusal, StandardRetryStrategy; +var init_StandardRetryStrategy = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/StandardRetryStrategy.js"() { + init_DefaultRetryBackoffStrategy(); + init_DefaultRetryToken(); + init_config2(); + init_constants3(); + init_retries_2026_config(); + refusal = { + incompatible: 1, + attempts: 2, + capacity: 3 + }; + StandardRetryStrategy = class { + static { + __name(this, "StandardRetryStrategy"); + } + mode = RETRY_MODES.STANDARD; + retryBackoffStrategy; + capacity = INITIAL_RETRY_TOKENS; + maxAttemptsProvider; + baseDelay; + constructor(arg1) { + if (typeof arg1 === "number") { + this.maxAttemptsProvider = async () => arg1; + } else if (typeof arg1 === "function") { + this.maxAttemptsProvider = arg1; + } else if (arg1 && typeof arg1 === "object") { + this.maxAttemptsProvider = async () => arg1.maxAttempts; + this.baseDelay = arg1.baseDelay; + this.retryBackoffStrategy = arg1.backoff; + } + this.maxAttemptsProvider ??= async () => DEFAULT_MAX_ATTEMPTS; + this.baseDelay ??= Retry.delay(); + this.retryBackoffStrategy ??= new DefaultRetryBackoffStrategy(); + } + async acquireInitialRetryToken(retryTokenScope) { + return new DefaultRetryToken(Retry.delay(), 0, void 0, Retry.v2026 && retryTokenScope.includes(":longpoll")); + } + async refreshRetryTokenForRetry(token, errorInfo) { + const maxAttempts = await this.getMaxAttempts(); + const retryCode = this.retryCode(token, errorInfo, maxAttempts); + const shouldRetry = retryCode === 0; + const isLongPoll = token.isLongPoll?.(); + if (shouldRetry || isLongPoll) { + const errorType = errorInfo.errorType; + this.retryBackoffStrategy.setDelayBase(errorType === "THROTTLING" ? Retry.throttlingDelay() : this.baseDelay); + const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()); + let retryDelay = delayFromErrorType; + if (errorInfo.retryAfterHint instanceof Date) { + retryDelay = Math.max(delayFromErrorType, Math.min(errorInfo.retryAfterHint.getTime() - Date.now(), delayFromErrorType + 5e3)); + } + if (!shouldRetry) { + const longPollBackoff = Retry.v2026 && retryCode === refusal.capacity && isLongPoll ? retryDelay : 0; + if (longPollBackoff > 0) { + await new Promise((r5) => setTimeout(r5, longPollBackoff)); + } + } else { + const capacityCost = this.getCapacityCost(errorType); + this.capacity -= capacityCost; + const nextToken = new DefaultRetryToken(0, token.getRetryCount() + 1, capacityCost, token.isLongPoll?.() ?? false); + await new Promise((r5) => setTimeout(r5, retryDelay)); + nextToken.$retryLog.acquisitionDelay = retryDelay; + return nextToken; + } + } + throw new Error("No retry token available"); + } + recordSuccess(token) { + this.capacity = Math.min(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT)); + } + getCapacity() { + return this.capacity; + } + async maxAttempts() { + return this.maxAttemptsProvider(); + } + async getMaxAttempts() { + try { + return await this.maxAttemptsProvider(); + } catch (ignored) { + console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`); + return DEFAULT_MAX_ATTEMPTS; + } + } + retryCode(tokenToRenew, errorInfo, maxAttempts) { + const attempts = tokenToRenew.getRetryCount() + 1; + const retryableStatus = this.isRetryableError(errorInfo.errorType) ? 0 : refusal.incompatible; + const attemptStatus = attempts < maxAttempts ? 0 : refusal.attempts; + const capacityStatus = this.capacity >= this.getCapacityCost(errorInfo.errorType) ? 0 : refusal.capacity; + return retryableStatus || attemptStatus || capacityStatus; + } + getCapacityCost(errorType) { + return errorType === Retry.modifiedCostType() ? Retry.throttlingCost() : Retry.cost(); + } + isRetryableError(errorType) { + return errorType === "THROTTLING" || errorType === "TRANSIENT"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/AdaptiveRetryStrategy.js +var AdaptiveRetryStrategy; +var init_AdaptiveRetryStrategy = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/AdaptiveRetryStrategy.js"() { + init_DefaultRateLimiter(); + init_StandardRetryStrategy(); + init_config2(); + AdaptiveRetryStrategy = class { + static { + __name(this, "AdaptiveRetryStrategy"); + } + mode = RETRY_MODES.ADAPTIVE; + rateLimiter; + standardRetryStrategy; + constructor(maxAttemptsProvider, options) { + const { rateLimiter } = options ?? {}; + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.standardRetryStrategy = options ? new StandardRetryStrategy({ + maxAttempts: typeof maxAttemptsProvider === "number" ? maxAttemptsProvider : 3, + ...options + }) : new StandardRetryStrategy(maxAttemptsProvider); + } + async acquireInitialRetryToken(retryTokenScope) { + const token = await this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope); + await this.rateLimiter.getSendToken(); + return token; + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + this.rateLimiter.updateClientSendingRate(errorInfo); + const token = await this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + await this.rateLimiter.getSendToken(); + return token; + } + recordSuccess(token) { + this.rateLimiter.updateClientSendingRate({}); + this.standardRetryStrategy.recordSuccess(token); + } + async maxAttemptsProvider() { + return this.standardRetryStrategy.maxAttempts(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/ConfiguredRetryStrategy.js +var ConfiguredRetryStrategy; +var init_ConfiguredRetryStrategy = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/ConfiguredRetryStrategy.js"() { + init_StandardRetryStrategy(); + init_retries_2026_config(); + ConfiguredRetryStrategy = class extends StandardRetryStrategy { + static { + __name(this, "ConfiguredRetryStrategy"); + } + computeNextBackoffDelay; + constructor(maxAttempts, computeNextBackoffDelay = Retry.delay()) { + super(typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts); + if (typeof computeNextBackoffDelay === "number") { + this.computeNextBackoffDelay = () => computeNextBackoffDelay; + } else { + this.computeNextBackoffDelay = computeNextBackoffDelay; + } + this.retryBackoffStrategy.computeNextBackoffDelay = (completedAttempt) => { + const nextAttempt = completedAttempt + 1; + return this.computeNextBackoffDelay(nextAttempt); + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/defaultRetryQuota.js +var getDefaultRetryQuota; +var init_defaultRetryQuota = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/defaultRetryQuota.js"() { + init_constants3(); + getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => { + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = options?.noRetryIncrement ?? NO_RETRY_INCREMENT; + const retryCost = options?.retryCost ?? RETRY_COST; + const timeoutRetryCost = options?.timeoutRetryCost ?? TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = /* @__PURE__ */ __name((error62) => error62.name === "TimeoutError" ? timeoutRetryCost : retryCost, "getCapacityAmount"); + const hasRetryTokens = /* @__PURE__ */ __name((error62) => getCapacityAmount(error62) <= availableCapacity, "hasRetryTokens"); + const retrieveRetryTokens = /* @__PURE__ */ __name((error62) => { + if (!hasRetryTokens(error62)) { + throw new Error("No retry token available"); + } + const capacityAmount = getCapacityAmount(error62); + availableCapacity -= capacityAmount; + return capacityAmount; + }, "retrieveRetryTokens"); + const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount ?? noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }, "releaseRetryTokens"); + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens + }); + }, "getDefaultRetryQuota"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/delayDecider.js +var defaultDelayDecider; +var init_delayDecider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/delayDecider.js"() { + init_constants3(); + defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), "defaultDelayDecider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/retryDecider.js +var defaultRetryDecider; +var init_retryDecider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/retryDecider.js"() { + init_service_error_classification(); + defaultRetryDecider = /* @__PURE__ */ __name((error62) => { + if (!error62) { + return false; + } + return isRetryableByTrait(error62) || isClockSkewError(error62) || isThrottlingError(error62) || isTransientError(error62); + }, "defaultRetryDecider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/StandardRetryStrategy.js +var StandardRetryStrategy2, getDelayFromRetryAfterHeader; +var init_StandardRetryStrategy2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/StandardRetryStrategy.js"() { + init_protocols(); + init_serde(); + init_service_error_classification(); + init_config2(); + init_constants3(); + init_util(); + init_defaultRetryQuota(); + init_delayDecider(); + init_retryDecider(); + StandardRetryStrategy2 = class { + static { + __name(this, "StandardRetryStrategy"); + } + maxAttemptsProvider; + retryDecider; + delayDecider; + retryQuota; + mode = RETRY_MODES.STANDARD; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.retryDecider = options?.retryDecider ?? defaultRetryDecider; + this.delayDecider = options?.delayDecider ?? defaultDelayDecider; + this.retryQuota = options?.retryQuota ?? getDefaultRetryQuota(INITIAL_RETRY_TOKENS); + } + shouldRetry(error62, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error62) && this.retryQuota.hasRetryTokens(error62); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } catch (ignored) { + maxAttempts = DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request } = args; + if (HttpRequest.isInstance(request)) { + request.headers[INVOCATION_ID_HEADER] = v4(); + } + while (true) { + try { + if (HttpRequest.isInstance(request)) { + request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options?.beforeRequest) { + await options.beforeRequest(); + } + const { response, output: output2 } = await next(args); + if (options?.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output2.$metadata.attempts = attempts + 1; + output2.$metadata.totalRetryDelay = totalDelay; + return { response, output: output2 }; + } catch (e5) { + const err = asSdkError(e5); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider(isThrottlingError(err) ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE, attempts); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } + }; + getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => { + if (!HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return Math.min(retryAfterSeconds * 1e3, 2e4); + const retryAfterDate = new Date(retryAfter); + return Math.min(retryAfterDate.getTime() - Date.now(), 2e4); + }, "getDelayFromRetryAfterHeader"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/AdaptiveRetryStrategy.js +var AdaptiveRetryStrategy2; +var init_AdaptiveRetryStrategy2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retry-pre-sra-deprecated/AdaptiveRetryStrategy.js"() { + init_DefaultRateLimiter(); + init_config2(); + init_StandardRetryStrategy2(); + AdaptiveRetryStrategy2 = class extends StandardRetryStrategy2 { + static { + __name(this, "AdaptiveRetryStrategy"); + } + rateLimiter; + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options ?? {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.mode = RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: /* @__PURE__ */ __name(async () => { + return this.rateLimiter.getSendToken(); + }, "beforeRequest"), + afterRequest: /* @__PURE__ */ __name((response) => { + this.rateLimiter.updateClientSendingRate(response); + }, "afterRequest") + }); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/configurations.js +var ENV_MAX_ATTEMPTS, CONFIG_MAX_ATTEMPTS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, resolveRetryConfig, ENV_RETRY_MODE, CONFIG_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS; +var init_configurations = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/configurations.js"() { + init_client(); + init_AdaptiveRetryStrategy(); + init_StandardRetryStrategy(); + init_config2(); + init_retries_2026_config(); + ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; + CONFIG_MAX_ATTEMPTS = "max_attempts"; + NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => { + const value = env3[ENV_MAX_ATTEMPTS]; + if (!value) + return void 0; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => { + const value = profile[CONFIG_MAX_ATTEMPTS]; + if (!value) + return void 0; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, "configFileSelector"), + default: DEFAULT_MAX_ATTEMPTS + }; + resolveRetryConfig = /* @__PURE__ */ __name((input2, defaults) => { + const { retryStrategy, retryMode } = input2; + const { defaultMaxAttempts = DEFAULT_MAX_ATTEMPTS, defaultBaseDelay = Retry.delay() } = defaults ?? {}; + const maxAttemptsProvider = normalizeProvider(input2.maxAttempts ?? defaultMaxAttempts); + let controller = retryStrategy ? Promise.resolve(retryStrategy) : void 0; + const getDefault = /* @__PURE__ */ __name(async () => { + const maxAttempts = await maxAttemptsProvider(); + const adaptive = await normalizeProvider(retryMode)() === RETRY_MODES.ADAPTIVE; + if (adaptive) { + return new AdaptiveRetryStrategy(maxAttemptsProvider, { + maxAttempts, + baseDelay: defaultBaseDelay + }); + } + return new StandardRetryStrategy({ + maxAttempts, + baseDelay: defaultBaseDelay + }); + }, "getDefault"); + return Object.assign(input2, { + maxAttempts: maxAttemptsProvider, + retryStrategy: /* @__PURE__ */ __name(() => controller ??= getDefault(), "retryStrategy") + }); + }, "resolveRetryConfig"); + ENV_RETRY_MODE = "AWS_RETRY_MODE"; + CONFIG_RETRY_MODE = "retry_mode"; + NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => env3[ENV_RETRY_MODE], "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => profile[CONFIG_RETRY_MODE], "configFileSelector"), + default: DEFAULT_RETRY_MODE + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/omitRetryHeadersMiddleware.js +var omitRetryHeadersMiddleware, omitRetryHeadersMiddlewareOptions, getOmitRetryHeadersPlugin; +var init_omitRetryHeadersMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/omitRetryHeadersMiddleware.js"() { + init_protocols(); + init_constants3(); + omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => { + const { request } = args; + if (HttpRequest.isInstance(request)) { + delete request.headers[INVOCATION_ID_HEADER]; + delete request.headers[REQUEST_HEADER]; + } + return next(args); + }, "omitRetryHeadersMiddleware"); + omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true + }; + getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + }, "applyToStack") + }), "getOmitRetryHeadersPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/index.js +var retry_exports = {}; +__export(retry_exports, { + AdaptiveRetryStrategy: () => AdaptiveRetryStrategy, + CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS, + CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE, + ConfiguredRetryStrategy: () => ConfiguredRetryStrategy, + DEFAULT_MAX_ATTEMPTS: () => DEFAULT_MAX_ATTEMPTS, + DEFAULT_RETRY_DELAY_BASE: () => DEFAULT_RETRY_DELAY_BASE, + DEFAULT_RETRY_MODE: () => DEFAULT_RETRY_MODE, + DefaultRateLimiter: () => DefaultRateLimiter, + DeprecatedAdaptiveRetryStrategy: () => AdaptiveRetryStrategy2, + DeprecatedStandardRetryStrategy: () => StandardRetryStrategy2, + ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS, + ENV_RETRY_MODE: () => ENV_RETRY_MODE, + INITIAL_RETRY_TOKENS: () => INITIAL_RETRY_TOKENS, + INVOCATION_ID_HEADER: () => INVOCATION_ID_HEADER, + MAXIMUM_RETRY_DELAY: () => MAXIMUM_RETRY_DELAY, + NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS, + NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS, + NO_RETRY_INCREMENT: () => NO_RETRY_INCREMENT, + REQUEST_HEADER: () => REQUEST_HEADER, + RETRY_COST: () => RETRY_COST, + RETRY_MODES: () => RETRY_MODES, + Retry: () => Retry, + StandardRetryStrategy: () => StandardRetryStrategy, + THROTTLING_RETRY_DELAY_BASE: () => THROTTLING_RETRY_DELAY_BASE, + TIMEOUT_RETRY_COST: () => TIMEOUT_RETRY_COST, + defaultDelayDecider: () => defaultDelayDecider, + defaultRetryDecider: () => defaultRetryDecider, + getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin, + getRetryAfterHint: () => getRetryAfterHint, + getRetryPlugin: () => getRetryPlugin, + isBrowserNetworkError: () => isBrowserNetworkError, + isClockSkewCorrectedError: () => isClockSkewCorrectedError, + isClockSkewError: () => isClockSkewError, + isNodeJsHttp2TransientError: () => isNodeJsHttp2TransientError, + isRetryableByTrait: () => isRetryableByTrait, + isServerError: () => isServerError, + isThrottlingError: () => isThrottlingError, + isTransientError: () => isTransientError, + omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware, + omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions, + resolveRetryConfig: () => resolveRetryConfig, + retryMiddleware: () => retryMiddleware, + retryMiddlewareOptions: () => retryMiddlewareOptions +}); +var retryMiddleware, getRetryPlugin; +var init_retry = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/submodules/retry/index.js"() { + init_isStreamingPayload(); + init_retryMiddleware(); + init_service_error_classification(); + init_AdaptiveRetryStrategy(); + init_ConfiguredRetryStrategy(); + init_DefaultRateLimiter(); + init_StandardRetryStrategy(); + init_config2(); + init_constants3(); + init_retries_2026_config(); + init_AdaptiveRetryStrategy2(); + init_StandardRetryStrategy2(); + init_delayDecider(); + init_retryDecider(); + init_configurations(); + init_omitRetryHeadersMiddleware(); + init_retryMiddleware(); + init_parseRetryAfterHeader(); + retryMiddleware = bindRetryMiddleware(isStreamingPayload); + getRetryPlugin = bindGetRetryPlugin(isStreamingPayload); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js +function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {} + }; + } else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} +var init_setFeature = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js"() { + init_retry(); + Retry.v2026 ||= typeof process === "object" && process.env?.AWS_NEW_RETRIES_2026 === "true"; + __name(setFeature, "setFeature"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js +function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} +var init_setTokenFeature = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js"() { + __name(setTokenFeature, "setTokenFeature"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-host-header/hostHeaderMiddleware.js +function resolveHostHeaderConfig(input2) { + return input2; +} +var hostHeaderMiddleware, hostHeaderMiddlewareOptions, getHostHeaderPlugin; +var init_hostHeaderMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-host-header/hostHeaderMiddleware.js"() { + init_protocols(); + __name(resolveHostHeaderConfig, "resolveHostHeaderConfig"); + hostHeaderMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => { + if (!HttpRequest.isInstance(args.request)) + return next(args); + const { request } = args; + const { handlerProtocol = "" } = options.requestHandler.metadata || {}; + if (handlerProtocol.indexOf("h2") >= 0 && !request.headers[":authority"]) { + delete request.headers["host"]; + request.headers[":authority"] = request.hostname + (request.port ? ":" + request.port : ""); + } else if (!request.headers["host"]) { + let host = request.hostname; + if (request.port != null) + host += `:${request.port}`; + request.headers["host"] = host; + } + return next(args); + }, "hostHeaderMiddleware"); + hostHeaderMiddlewareOptions = { + name: "hostHeaderMiddleware", + step: "build", + priority: "low", + tags: ["HOST"], + override: true + }; + getHostHeaderPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions); + }, "applyToStack") + }), "getHostHeaderPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-logger/loggerMiddleware.js +var loggerMiddleware, loggerMiddlewareOptions, getLoggerPlugin; +var init_loggerMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-logger/loggerMiddleware.js"() { + loggerMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => { + try { + const response = await next(args); + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog; + const { $metadata, ...outputWithoutMetadata } = response.output; + logger?.info?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + output: outputFilterSensitiveLog(outputWithoutMetadata), + metadata: $metadata + }); + return response; + } catch (error62) { + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + logger?.error?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + error: error62, + metadata: error62.$metadata + }); + throw error62; + } + }, "loggerMiddleware"); + loggerMiddlewareOptions = { + name: "loggerMiddleware", + tags: ["LOGGER"], + step: "initialize", + override: true + }; + getLoggerPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(loggerMiddleware(), loggerMiddlewareOptions); + }, "applyToStack") + }), "getLoggerPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/configuration.js +var recursionDetectionMiddlewareOptions; +var init_configuration = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/configuration.js"() { + recursionDetectionMiddlewareOptions = { + step: "build", + tags: ["RECURSION_DETECTION", "TRACE_CONTEXT_PROPAGATION"], + name: "recursionDetectionMiddleware", + override: true, + priority: "low" + }; + } +}); + +// ../../node_modules/.pnpm/@aws+lambda-invoke-store@0.3.0/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js +var PROTECTED_KEYS, NO_GLOBAL_AWS_LAMBDA, InvokeStoreBase, InvokeStoreSingle, InvokeStoreMulti, InvokeStore; +var init_invoke_store = __esm({ + "../../node_modules/.pnpm/@aws+lambda-invoke-store@0.3.0/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js"() { + PROTECTED_KEYS = { + REQUEST_ID: /* @__PURE__ */ Symbol.for("_AWS_LAMBDA_REQUEST_ID"), + X_RAY_TRACE_ID: /* @__PURE__ */ Symbol.for("_AWS_LAMBDA_X_RAY_TRACE_ID"), + TENANT_ID: /* @__PURE__ */ Symbol.for("_AWS_LAMBDA_TENANT_ID"), + TRACEPARENT: /* @__PURE__ */ Symbol.for("_AWS_LAMBDA_TRACEPARENT"), + TRACESTATE: /* @__PURE__ */ Symbol.for("_AWS_LAMBDA_TRACESTATE"), + BAGGAGE: /* @__PURE__ */ Symbol.for("_AWS_LAMBDA_BAGGAGE") + }; + NO_GLOBAL_AWS_LAMBDA = ["true", "1"].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA ?? ""); + if (!NO_GLOBAL_AWS_LAMBDA) { + globalThis.awslambda = globalThis.awslambda || {}; + } + InvokeStoreBase = class { + static { + __name(this, "InvokeStoreBase"); + } + static PROTECTED_KEYS = PROTECTED_KEYS; + isProtectedKey(key) { + return Object.values(PROTECTED_KEYS).includes(key); + } + getRequestId() { + return this.get(PROTECTED_KEYS.REQUEST_ID) ?? "-"; + } + getXRayTraceId() { + return this.get(PROTECTED_KEYS.X_RAY_TRACE_ID); + } + getTenantId() { + return this.get(PROTECTED_KEYS.TENANT_ID); + } + getTraceparent() { + return this.get(PROTECTED_KEYS.TRACEPARENT); + } + getTracestate() { + return this.get(PROTECTED_KEYS.TRACESTATE); + } + getBaggage() { + return this.get(PROTECTED_KEYS.BAGGAGE); + } + }; + InvokeStoreSingle = class extends InvokeStoreBase { + static { + __name(this, "InvokeStoreSingle"); + } + currentContext; + getContext() { + return this.currentContext; + } + hasContext() { + return this.currentContext !== void 0; + } + get(key) { + return this.currentContext?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + this.currentContext = this.currentContext || {}; + this.currentContext[key] = value; + } + run(context, fn) { + this.currentContext = context; + return fn(); + } + }; + InvokeStoreMulti = class _InvokeStoreMulti extends InvokeStoreBase { + static { + __name(this, "InvokeStoreMulti"); + } + als; + static async create() { + const instance = new _InvokeStoreMulti(); + const asyncHooks = await import("node:async_hooks"); + instance.als = new asyncHooks.AsyncLocalStorage(); + return instance; + } + getContext() { + return this.als.getStore(); + } + hasContext() { + return this.als.getStore() !== void 0; + } + get(key) { + return this.als.getStore()?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + const store = this.als.getStore(); + if (!store) { + throw new Error("No context available"); + } + store[key] = value; + } + run(context, fn) { + return this.als.run(context, fn); + } + }; + (function(InvokeStore2) { + let instance = null; + async function getInstanceAsync(forceInvokeStoreMulti) { + if (!instance) { + instance = (async () => { + const isMulti = forceInvokeStoreMulti === true || "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; + const newInstance = isMulti ? await InvokeStoreMulti.create() : new InvokeStoreSingle(); + if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda?.InvokeStore) { + return globalThis.awslambda.InvokeStore; + } else if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda) { + globalThis.awslambda.InvokeStore = newInstance; + return newInstance; + } else { + return newInstance; + } + })(); + } + return instance; + } + __name(getInstanceAsync, "getInstanceAsync"); + InvokeStore2.getInstanceAsync = getInstanceAsync; + InvokeStore2._testing = process.env.AWS_LAMBDA_BENCHMARK_MODE === "1" ? { + reset: /* @__PURE__ */ __name(() => { + instance = null; + if (globalThis.awslambda?.InvokeStore) { + delete globalThis.awslambda.InvokeStore; + } + globalThis.awslambda = { InvokeStore: void 0 }; + }, "reset") + } : void 0; + })(InvokeStore || (InvokeStore = {})); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/recursionDetectionMiddleware.js +function sanitizeTraceHeaders(headers) { + for (const header of Object.keys(headers)) { + const lower = header.toLowerCase(); + if (header !== lower && (lower === TRACEPARENT || lower === TRACESTATE || lower === BAGGAGE)) { + headers[lower] = headers[header]; + delete headers[header]; + } + } +} +var AWS_LAMBDA_FUNCTION_NAME, _X_AMZN_TRACE_ID, X_AMZN_TRACE_ID, TRACEPARENT, TRACESTATE, BAGGAGE, recursionDetectionMiddleware; +var init_recursionDetectionMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/recursionDetectionMiddleware.js"() { + init_invoke_store(); + init_protocols(); + AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME"; + _X_AMZN_TRACE_ID = "_X_AMZN_TRACE_ID"; + X_AMZN_TRACE_ID = "X-Amzn-Trace-Id"; + TRACEPARENT = "traceparent"; + TRACESTATE = "tracestate"; + BAGGAGE = "baggage"; + recursionDetectionMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + return next(args); + } + let invokeStore; + { + const traceIdHeader = Object.keys(request.headers ?? {}).find((h5) => h5.toLowerCase() === X_AMZN_TRACE_ID.toLowerCase()) ?? X_AMZN_TRACE_ID; + if (!request.headers.hasOwnProperty(traceIdHeader)) { + const functionName = process.env[AWS_LAMBDA_FUNCTION_NAME]; + const traceIdFromEnv = process.env[_X_AMZN_TRACE_ID]; + invokeStore ??= await InvokeStore.getInstanceAsync(); + const traceIdFromInvokeStore = invokeStore?.getXRayTraceId(); + const traceId = traceIdFromInvokeStore ?? traceIdFromEnv; + const nonEmptyString = /* @__PURE__ */ __name((str) => typeof str === "string" && str.length > 0, "nonEmptyString"); + if (nonEmptyString(functionName) && nonEmptyString(traceId)) { + request.headers[X_AMZN_TRACE_ID] = traceId; + } + } + } + { + sanitizeTraceHeaders(request.headers); + const existingTraceparent = request.headers[TRACEPARENT]; + if (!existingTraceparent) { + const traceparent = (invokeStore ??= await InvokeStore.getInstanceAsync())?.getTraceparent?.(); + if (traceparent) { + request.headers[TRACEPARENT] = traceparent; + const tracestate = invokeStore?.getTracestate?.(); + if (tracestate) { + request.headers[TRACESTATE] = tracestate; + } + const baggage = invokeStore?.getBaggage?.(); + if (baggage) { + request.headers[BAGGAGE] = baggage; + } + } + } + } + return next(args); + }, "recursionDetectionMiddleware"); + __name(sanitizeTraceHeaders, "sanitizeTraceHeaders"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.js +var getRecursionDetectionPlugin; +var init_getRecursionDetectionPlugin = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.js"() { + init_configuration(); + init_recursionDetectionMiddleware(); + getRecursionDetectionPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(recursionDetectionMiddleware(), recursionDetectionMiddlewareOptions); + }, "applyToStack") + }), "getRecursionDetectionPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/resolveAuthOptions.js +var resolveAuthOptions; +var init_resolveAuthOptions = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/resolveAuthOptions.js"() { + resolveAuthOptions = /* @__PURE__ */ __name((candidateAuthOptions, authSchemePreference) => { + if (!authSchemePreference || authSchemePreference.length === 0) { + return candidateAuthOptions; + } + const preferredAuthOptions = []; + for (const preferredSchemeName of authSchemePreference) { + for (const candidateAuthOption of candidateAuthOptions) { + const candidateAuthSchemeName = candidateAuthOption.schemeId.split("#")[1]; + if (candidateAuthSchemeName === preferredSchemeName) { + preferredAuthOptions.push(candidateAuthOption); + } + } + } + for (const candidateAuthOption of candidateAuthOptions) { + if (!preferredAuthOptions.find(({ schemeId }) => schemeId === candidateAuthOption.schemeId)) { + preferredAuthOptions.push(candidateAuthOption); + } + } + return preferredAuthOptions; + }, "resolveAuthOptions"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +function convertHttpAuthSchemesToMap(httpAuthSchemes) { + const map2 = /* @__PURE__ */ new Map(); + for (const scheme of httpAuthSchemes) { + map2.set(scheme.schemeId, scheme); + } + return map2; +} +var httpAuthSchemeMiddleware; +var init_httpAuthSchemeMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js"() { + init_transport(); + init_resolveAuthOptions(); + __name(convertHttpAuthSchemesToMap, "convertHttpAuthSchemesToMap"); + httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config3, mwOptions) => (next, context) => async (args) => { + const options = config3.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config3, context, args.input)); + const authSchemePreference = config3.authSchemePreference ? await config3.authSchemePreference() : []; + const resolvedOptions = resolveAuthOptions(options, authSchemePreference); + const authSchemes = convertHttpAuthSchemesToMap(config3.httpAuthSchemes); + const smithyContext = getSmithyContext(context); + const failureReasons = []; + for (const option of resolvedOptions) { + const scheme = authSchemes.get(option.schemeId); + if (!scheme) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); + continue; + } + const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config3)); + if (!identityProvider) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); + continue; + } + const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config3, context) || {}; + option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); + option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); + smithyContext.selectedHttpAuthScheme = { + httpAuthOption: option, + identity: await identityProvider(option.identityProperties), + signer: scheme.signer + }; + break; + } + if (!smithyContext.selectedHttpAuthScheme) { + throw new Error(failureReasons.join("\n")); + } + return next(args); + }, "httpAuthSchemeMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +var httpAuthSchemeEndpointRuleSetMiddlewareOptions, getHttpAuthSchemeEndpointRuleSetPlugin; +var init_getHttpAuthSchemeEndpointRuleSetPlugin = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js"() { + init_httpAuthSchemeMiddleware(); + httpAuthSchemeEndpointRuleSetMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware" + }; + getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config3, { httpAuthSchemeParametersProvider, identityProviderConfigProvider }) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config3, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider + }), httpAuthSchemeEndpointRuleSetMiddlewareOptions); + }, "applyToStack") + }), "getHttpAuthSchemeEndpointRuleSetPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +var httpAuthSchemeMiddlewareOptions, getHttpAuthSchemePlugin; +var init_getHttpAuthSchemePlugin = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js"() { + init_httpAuthSchemeMiddleware(); + httpAuthSchemeMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "serializerMiddleware" + }; + getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config3, { httpAuthSchemeParametersProvider, identityProviderConfigProvider }) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config3, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider + }), httpAuthSchemeMiddlewareOptions); + }, "applyToStack") + }), "getHttpAuthSchemePlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/index.js +var init_middleware_http_auth_scheme = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/index.js"() { + init_httpAuthSchemeMiddleware(); + init_getHttpAuthSchemeEndpointRuleSetPlugin(); + init_getHttpAuthSchemePlugin(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/httpSigningMiddleware.js +var defaultErrorHandler, defaultSuccessHandler, httpSigningMiddleware; +var init_httpSigningMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/httpSigningMiddleware.js"() { + init_protocols(); + init_transport(); + defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error62) => { + throw error62; + }, "defaultErrorHandler"); + defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => { + }, "defaultSuccessHandler"); + httpSigningMiddleware = /* @__PURE__ */ __name((config3) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer } = scheme; + const output2 = await next({ + ...args, + request: await signer.sign(args.request, identity, signingProperties) + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output2.response, signingProperties); + return output2; + }, "httpSigningMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/getHttpSigningMiddleware.js +var httpSigningMiddlewareOptions, getHttpSigningPlugin; +var init_getHttpSigningMiddleware = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/getHttpSigningMiddleware.js"() { + init_httpSigningMiddleware(); + httpSigningMiddlewareOptions = { + step: "finalizeRequest", + tags: ["HTTP_SIGNING"], + name: "httpSigningMiddleware", + aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], + override: true, + relation: "after", + toMiddleware: "retryMiddleware" + }; + getHttpSigningPlugin = /* @__PURE__ */ __name((config3) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(httpSigningMiddleware(config3), httpSigningMiddlewareOptions); + }, "applyToStack") + }), "getHttpSigningPlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/index.js +var init_middleware_http_signing = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/index.js"() { + init_httpSigningMiddleware(); + init_getHttpSigningMiddleware(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/normalizeProvider.js +var normalizeProvider2; +var init_normalizeProvider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/normalizeProvider.js"() { + normalizeProvider2 = /* @__PURE__ */ __name((input2) => { + if (typeof input2 === "function") + return input2; + const promisified = Promise.resolve(input2); + return () => promisified; + }, "normalizeProvider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/pagination/createPaginator.js +function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { + return /* @__PURE__ */ __name(async function* paginateOperation(config3, input2, ...additionalArguments) { + const _input = input2; + let token = config3.startingToken ?? _input[inputTokenName]; + let hasNext = true; + let page; + while (hasNext) { + _input[inputTokenName] = token; + if (pageSizeTokenName) { + _input[pageSizeTokenName] = _input[pageSizeTokenName] ?? config3.pageSize; + } + if (config3.client instanceof ClientCtor) { + page = await makePagedClientRequest(CommandCtor, config3.client, input2, config3.withCommand, ...additionalArguments); + } else { + throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); + } + yield page; + const prevToken = token; + token = get(page, outputTokenName); + hasNext = !!(token && (!config3.stopOnSameToken || token !== prevToken)); + } + return void 0; + }, "paginateOperation"); +} +var makePagedClientRequest, get; +var init_createPaginator = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/pagination/createPaginator.js"() { + makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input2, withCommand = (_) => _, ...args) => { + let command5 = new CommandCtor(input2); + command5 = withCommand(command5) ?? command5; + return await client.send(command5, ...args); + }, "makePagedClientRequest"); + __name(createPaginator, "createPaginator"); + get = /* @__PURE__ */ __name((fromObject, path2) => { + let cursor = fromObject; + const pathComponents = path2.split("."); + for (const step of pathComponents) { + if (!cursor || typeof cursor !== "object") { + return void 0; + } + cursor = cursor[step]; + } + return cursor; + }, "get"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/setFeature.js +function setFeature2(context, feature, value) { + if (!context.__smithy_context) { + context.__smithy_context = { + features: {} + }; + } else if (!context.__smithy_context.features) { + context.__smithy_context.features = {}; + } + context.__smithy_context.features[feature] = value; +} +var init_setFeature2 = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/setFeature.js"() { + __name(setFeature2, "setFeature"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/DefaultIdentityProviderConfig.js +var DefaultIdentityProviderConfig; +var init_DefaultIdentityProviderConfig = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/DefaultIdentityProviderConfig.js"() { + init_transport(); + DefaultIdentityProviderConfig = class { + static { + __name(this, "DefaultIdentityProviderConfig"); + } + authSchemes = /* @__PURE__ */ new Map(); + constructor(config3) { + for (const key in config3) { + if (!hasOwn(config3, key)) + continue; + const value = config3[key]; + if (value !== void 0) { + this.authSchemes.set(key, value); + } + } + } + getIdentityProvider(schemeId) { + return this.authSchemes.get(schemeId); + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +var import_types2, HttpApiKeyAuthSigner; +var init_httpApiKeyAuth = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js"() { + init_protocols(); + import_types2 = __toESM(require_dist_cjs()); + HttpApiKeyAuthSigner = class { + static { + __name(this, "HttpApiKeyAuthSigner"); + } + async sign(httpRequest, identity, signingProperties) { + if (!signingProperties) { + throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing"); + } + if (!signingProperties.name) { + throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); + } + if (!signingProperties.in) { + throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); + } + if (!identity.apiKey) { + throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); + } + const clonedRequest = HttpRequest.clone(httpRequest); + if (signingProperties.in === import_types2.HttpApiKeyAuthLocation.QUERY) { + clonedRequest.query[signingProperties.name] = identity.apiKey; + } else if (signingProperties.in === import_types2.HttpApiKeyAuthLocation.HEADER) { + clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey; + } else { + throw new Error("request can only be signed with `apiKey` locations `query` or `header`, but found: `" + signingProperties.in + "`"); + } + return clonedRequest; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +var HttpBearerAuthSigner; +var init_httpBearerAuth = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js"() { + init_protocols(); + HttpBearerAuthSigner = class { + static { + __name(this, "HttpBearerAuthSigner"); + } + async sign(httpRequest, identity, signingProperties) { + const clonedRequest = HttpRequest.clone(httpRequest); + if (!identity.token) { + throw new Error("request could not be signed with `token` since the `token` is not defined"); + } + clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; + return clonedRequest; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/noAuth.js +var NoAuthSigner; +var init_noAuth = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/noAuth.js"() { + NoAuthSigner = class { + static { + __name(this, "NoAuthSigner"); + } + async sign(httpRequest, identity, signingProperties) { + return httpRequest; + } + }; + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/index.js +var init_httpAuthSchemes = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/index.js"() { + init_httpApiKeyAuth(); + init_httpBearerAuth(); + init_noAuth(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/memoizeIdentityProvider.js +var createIsIdentityExpiredFunction, EXPIRATION_MS, isIdentityExpired, doesIdentityRequireRefresh, memoizeIdentityProvider; +var init_memoizeIdentityProvider = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/memoizeIdentityProvider.js"() { + createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => /* @__PURE__ */ __name(function isIdentityExpired2(identity) { + return doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs; + }, "isIdentityExpired"), "createIsIdentityExpiredFunction"); + EXPIRATION_MS = 3e5; + isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); + doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, "doesIdentityRequireRefresh"); + memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => { + if (provider === void 0) { + return void 0; + } + const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = /* @__PURE__ */ __name(async (options) => { + if (!pending) { + pending = normalizedProvider(options); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } finally { + pending = void 0; + } + return resolved; + }, "coalesceProvider"); + if (isExpired === void 0) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + if (isConstant) { + return resolved; + } + if (!requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(options); + return resolved; + } + return resolved; + }; + }, "memoizeIdentityProvider"); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/index.js +var init_util_identity_and_auth = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/index.js"() { + init_DefaultIdentityProviderConfig(); + init_httpAuthSchemes(); + init_memoizeIdentityProvider(); + } +}); + +// ../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/index.js +var dist_es_exports = {}; +__export(dist_es_exports, { + DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig, + EXPIRATION_MS: () => EXPIRATION_MS, + HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner, + HttpBearerAuthSigner: () => HttpBearerAuthSigner, + NoAuthSigner: () => NoAuthSigner, + createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction, + createPaginator: () => createPaginator, + doesIdentityRequireRefresh: () => doesIdentityRequireRefresh, + getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin, + getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin, + getHttpSigningPlugin: () => getHttpSigningPlugin, + getSmithyContext: () => getSmithyContext, + httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions, + httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware, + httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions, + httpSigningMiddleware: () => httpSigningMiddleware, + httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions, + isIdentityExpired: () => isIdentityExpired, + memoizeIdentityProvider: () => memoizeIdentityProvider, + normalizeProvider: () => normalizeProvider2, + requestBuilder: () => requestBuilder, + setFeature: () => setFeature2 +}); +var init_dist_es = __esm({ + "../../node_modules/.pnpm/@smithy+core@3.36.1/node_modules/@smithy/core/dist-es/index.js"() { + init_transport(); + init_middleware_http_auth_scheme(); + init_middleware_http_signing(); + init_normalizeProvider(); + init_createPaginator(); + init_protocols(); + init_setFeature2(); + init_util_identity_and_auth(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/configurations.js +function isValidUserAgentAppId(appId) { + if (appId === void 0) { + return true; + } + return typeof appId === "string" && appId.length <= 50; +} +function resolveUserAgentConfig(input2) { + const normalizedAppIdProvider = normalizeProvider2(input2.userAgentAppId ?? DEFAULT_UA_APP_ID); + const { customUserAgent } = input2; + return Object.assign(input2, { + customUserAgent: typeof customUserAgent === "string" ? [[customUserAgent]] : customUserAgent, + userAgentAppId: /* @__PURE__ */ __name(async () => { + const appId = await normalizedAppIdProvider(); + if (!isValidUserAgentAppId(appId)) { + const logger = input2.logger?.constructor?.name === "NoOpLogger" || !input2.logger ? console : input2.logger; + if (typeof appId !== "string") { + logger?.warn("userAgentAppId must be a string or undefined."); + } else if (appId.length > 50) { + logger?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters."); + } + } + return appId; + }, "userAgentAppId") + }); +} +var DEFAULT_UA_APP_ID; +var init_configurations2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/configurations.js"() { + init_dist_es(); + DEFAULT_UA_APP_ID = void 0; + __name(isValidUserAgentAppId, "isValidUserAgentAppId"); + __name(resolveUserAgentConfig, "resolveUserAgentConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partitions.js +var partitionsInfo; +var init_partitions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partitions.js"() { + partitionsInfo = { + "partitions": [ + { + "id": "aws", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-east-1", + "name": "aws", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions": { + "af-south-1": { + "description": "Africa (Cape Town)" + }, + "ap-east-1": { + "description": "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + "description": "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + "description": "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + "description": "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + "description": "Asia Pacific (Osaka)" + }, + "ap-south-1": { + "description": "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + "description": "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + "description": "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + "description": "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + "description": "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + "description": "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + "description": "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + "description": "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + "description": "Asia Pacific (Thailand)" + }, + "aws-global": { + "description": "aws global region" + }, + "ca-central-1": { + "description": "Canada (Central)" + }, + "ca-west-1": { + "description": "Canada West (Calgary)" + }, + "eu-central-1": { + "description": "Europe (Frankfurt)" + }, + "eu-central-2": { + "description": "Europe (Zurich)" + }, + "eu-north-1": { + "description": "Europe (Stockholm)" + }, + "eu-south-1": { + "description": "Europe (Milan)" + }, + "eu-south-2": { + "description": "Europe (Spain)" + }, + "eu-west-1": { + "description": "Europe (Ireland)" + }, + "eu-west-2": { + "description": "Europe (London)" + }, + "eu-west-3": { + "description": "Europe (Paris)" + }, + "il-central-1": { + "description": "Israel (Tel Aviv)" + }, + "me-central-1": { + "description": "Middle East (UAE)" + }, + "me-south-1": { + "description": "Middle East (Bahrain)" + }, + "mx-central-1": { + "description": "Mexico (Central)" + }, + "sa-east-1": { + "description": "South America (Sao Paulo)" + }, + "us-east-1": { + "description": "US East (N. Virginia)" + }, + "us-east-2": { + "description": "US East (Ohio)" + }, + "us-west-1": { + "description": "US West (N. California)" + }, + "us-west-2": { + "description": "US West (Oregon)" + } + } + }, + { + "id": "aws-cn", + "outputs": { + "dnsSuffix": "amazonaws.com.cn", + "dualStackDnsSuffix": "api.amazonwebservices.com.cn", + "implicitGlobalRegion": "cn-northwest-1", + "name": "aws-cn", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^cn\\-\\w+\\-\\d+$", + "regions": { + "aws-cn-global": { + "description": "aws-cn global region" + }, + "cn-north-1": { + "description": "China (Beijing)" + }, + "cn-northwest-1": { + "description": "China (Ningxia)" + } + } + }, + { + "id": "aws-eusc", + "outputs": { + "dnsSuffix": "amazonaws.eu", + "dualStackDnsSuffix": "api.amazonwebservices.eu", + "implicitGlobalRegion": "eusc-de-east-1", + "name": "aws-eusc", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions": { + "eusc-de-east-1": { + "description": "AWS European Sovereign Cloud (Germany)" + } + } + }, + { + "id": "aws-iso", + "outputs": { + "dnsSuffix": "c2s.ic.gov", + "dualStackDnsSuffix": "api.aws.ic.gov", + "implicitGlobalRegion": "us-iso-east-1", + "name": "aws-iso", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-iso\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-global": { + "description": "aws-iso global region" + }, + "us-iso-east-1": { + "description": "US ISO East" + }, + "us-iso-west-1": { + "description": "US ISO WEST" + } + } + }, + { + "id": "aws-iso-b", + "outputs": { + "dnsSuffix": "sc2s.sgov.gov", + "dualStackDnsSuffix": "api.aws.scloud", + "implicitGlobalRegion": "us-isob-east-1", + "name": "aws-iso-b", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isob\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-b-global": { + "description": "aws-iso-b global region" + }, + "us-isob-east-1": { + "description": "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + "description": "US ISOB West" + } + } + }, + { + "id": "aws-iso-e", + "outputs": { + "dnsSuffix": "cloud.adc-e.uk", + "dualStackDnsSuffix": "api.cloud-aws.adc-e.uk", + "implicitGlobalRegion": "eu-isoe-west-1", + "name": "aws-iso-e", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-e-global": { + "description": "aws-iso-e global region" + }, + "eu-isoe-west-1": { + "description": "EU ISOE West" + } + } + }, + { + "id": "aws-iso-f", + "outputs": { + "dnsSuffix": "csp.hci.ic.gov", + "dualStackDnsSuffix": "api.aws.hci.ic.gov", + "implicitGlobalRegion": "us-isof-south-1", + "name": "aws-iso-f", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isof\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-f-global": { + "description": "aws-iso-f global region" + }, + "us-isof-east-1": { + "description": "US ISOF EAST" + }, + "us-isof-south-1": { + "description": "US ISOF SOUTH" + } + } + }, + { + "id": "aws-us-gov", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-gov-west-1", + "name": "aws-us-gov", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-gov\\-\\w+\\-\\d+$", + "regions": { + "aws-us-gov-global": { + "description": "aws-us-gov global region" + }, + "us-gov-east-1": { + "description": "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + "description": "AWS GovCloud (US-West)" + } + } + } + ], + "version": "1.1" + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partition.js +var selectedPartitionsInfo, selectedUserAgentPrefix, partition, setPartitionInfo, useDefaultPartitionInfo, getUserAgentPrefix; +var init_partition = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partition.js"() { + init_partitions(); + selectedPartitionsInfo = partitionsInfo; + selectedUserAgentPrefix = ""; + partition = /* @__PURE__ */ __name((value) => { + const { partitions } = selectedPartitionsInfo; + for (const partition2 of partitions) { + const { regions, outputs } = partition2; + for (const [region, regionData] of Object.entries(regions)) { + if (region === value) { + return { + ...outputs, + ...regionData + }; + } + } + } + for (const partition2 of partitions) { + const { regionRegex, outputs } = partition2; + if (new RegExp(regionRegex).test(value)) { + return { + ...outputs + }; + } + } + const DEFAULT_PARTITION = partitions.find((partition2) => partition2.id === "aws"); + if (!DEFAULT_PARTITION) { + throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist."); + } + return { + ...DEFAULT_PARTITION.outputs + }; + }, "partition"); + setPartitionInfo = /* @__PURE__ */ __name((partitionsInfo2, userAgentPrefix = "") => { + selectedPartitionsInfo = partitionsInfo2; + selectedUserAgentPrefix = userAgentPrefix; + }, "setPartitionInfo"); + useDefaultPartitionInfo = /* @__PURE__ */ __name(() => { + setPartitionInfo(partitionsInfo, ""); + }, "useDefaultPartitionInfo"); + getUserAgentPrefix = /* @__PURE__ */ __name(() => selectedUserAgentPrefix, "getUserAgentPrefix"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/check-features.js +async function checkFeatures(context, config3, args) { + const request = args.request; + if (request?.headers?.["smithy-protocol"] === "rpc-v2-cbor") { + setFeature(context, "PROTOCOL_RPC_V2_CBOR", "M"); + } + if (typeof config3.retryStrategy === "function") { + const retryStrategy = await config3.retryStrategy(); + if (typeof retryStrategy.mode === "string") { + switch (retryStrategy.mode) { + case RETRY_MODES.ADAPTIVE: + setFeature(context, "RETRY_MODE_ADAPTIVE", "F"); + break; + case RETRY_MODES.STANDARD: + setFeature(context, "RETRY_MODE_STANDARD", "E"); + break; + } + } + } + if (typeof config3.accountIdEndpointMode === "function") { + const endpointV2 = context.endpointV2; + if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) { + setFeature(context, "ACCOUNT_ID_ENDPOINT", "O"); + } + switch (await config3.accountIdEndpointMode?.()) { + case "disabled": + setFeature(context, "ACCOUNT_ID_MODE_DISABLED", "Q"); + break; + case "preferred": + setFeature(context, "ACCOUNT_ID_MODE_PREFERRED", "P"); + break; + case "required": + setFeature(context, "ACCOUNT_ID_MODE_REQUIRED", "R"); + break; + } + } + const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity; + if (identity?.$source) { + const credentials = identity; + if (credentials.accountId) { + setFeature(context, "RESOLVED_ACCOUNT_ID", "T"); + } + for (const [key, value] of Object.entries(credentials.$source ?? {})) { + setFeature(context, key, value); + } + } +} +var ACCOUNT_ID_ENDPOINT_REGEX; +var init_check_features = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/check-features.js"() { + init_retry(); + init_setFeature(); + ACCOUNT_ID_ENDPOINT_REGEX = /\d{12}\.ddb/; + __name(checkFeatures, "checkFeatures"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/constants.js +var USER_AGENT, X_AMZ_USER_AGENT, SPACE, UA_NAME_SEPARATOR, UA_NAME_ESCAPE_REGEX, UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR; +var init_constants4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/constants.js"() { + USER_AGENT = "user-agent"; + X_AMZ_USER_AGENT = "x-amz-user-agent"; + SPACE = " "; + UA_NAME_SEPARATOR = "/"; + UA_NAME_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w]/g; + UA_VALUE_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w#]/g; + UA_ESCAPE_CHAR = "-"; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/encode-features.js +function encodeFeatures(features) { + let buffer = ""; + for (const key in features) { + const val = features[key]; + if (buffer.length + val.length + 1 <= BYTE_LIMIT) { + if (buffer.length) { + buffer += "," + val; + } else { + buffer += val; + } + continue; + } + break; + } + return buffer; +} +var BYTE_LIMIT; +var init_encode_features = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/encode-features.js"() { + BYTE_LIMIT = 1024; + __name(encodeFeatures, "encodeFeatures"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/user-agent-middleware.js +var userAgentMiddleware, escapeUserAgent, getUserAgentMiddlewareOptions, getUserAgentPlugin; +var init_user_agent_middleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/user-agent-middleware.js"() { + init_protocols(); + init_partition(); + init_check_features(); + init_constants4(); + init_encode_features(); + userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + return next(args); + } + const { headers } = request; + const userAgent = context?.userAgent?.map(escapeUserAgent) || []; + const defaultUserAgent2 = (await options.defaultUserAgentProvider()).map(escapeUserAgent); + await checkFeatures(context, options, args); + const awsContext = context; + defaultUserAgent2.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`); + const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || []; + const appId = await options.userAgentAppId(); + if (appId) { + defaultUserAgent2.push(escapeUserAgent([`app`, `${appId}`])); + } + const prefix = getUserAgentPrefix(); + const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent2, ...userAgent, ...customUserAgent]).join(SPACE); + const normalUAValue = [ + ...defaultUserAgent2.filter((section) => section.startsWith("aws-sdk-")), + ...customUserAgent + ].join(SPACE); + if (options.runtime !== "browser") { + if (normalUAValue) { + headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue; + } + headers[USER_AGENT] = sdkUserAgentValue; + } else { + headers[X_AMZ_USER_AGENT] = sdkUserAgentValue; + } + return next({ + ...args, + request + }); + }, "userAgentMiddleware"); + escapeUserAgent = /* @__PURE__ */ __name((userAgentPair) => { + const name2 = userAgentPair[0].split(UA_NAME_SEPARATOR).map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)).join(UA_NAME_SEPARATOR); + const version2 = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR); + const prefixSeparatorIndex = name2.indexOf(UA_NAME_SEPARATOR); + const prefix = name2.substring(0, prefixSeparatorIndex); + let uaName = name2.substring(prefixSeparatorIndex + 1); + if (prefix === "api") { + uaName = uaName.toLowerCase(); + } + return [prefix, uaName, version2].filter((item) => item && item.length > 0).reduce((acc, item, index) => { + switch (index) { + case 0: + return item; + case 1: + return `${acc}/${item}`; + default: + return `${acc}#${item}`; + } + }, ""); + }, "escapeUserAgent"); + getUserAgentMiddlewareOptions = { + name: "getUserAgentMiddleware", + step: "build", + priority: "low", + tags: ["SET_USER_AGENT", "USER_AGENT"], + override: true + }; + getUserAgentPlugin = /* @__PURE__ */ __name((config3) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(userAgentMiddleware(config3), getUserAgentMiddlewareOptions); + }, "applyToStack") + }), "getUserAgentPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/getRuntimeUserAgentPair.js +import { versions } from "node:process"; +var getRuntimeUserAgentPair; +var init_getRuntimeUserAgentPair = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/getRuntimeUserAgentPair.js"() { + getRuntimeUserAgentPair = /* @__PURE__ */ __name(() => { + const runtimesToCheck = ["deno", "bun", "llrt"]; + for (const runtime3 of runtimesToCheck) { + if (versions[runtime3]) { + return [`md/${runtime3}`, versions[runtime3]]; + } + } + return ["md/nodejs", versions.node]; + }, "getRuntimeUserAgentPair"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/crt-availability.js +var crtAvailability; +var init_crt_availability = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/crt-availability.js"() { + crtAvailability = { + isCrtAvailable: false + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/is-crt-available.js +var isCrtAvailable; +var init_is_crt_available = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/is-crt-available.js"() { + init_crt_availability(); + isCrtAvailable = /* @__PURE__ */ __name(() => { + if (crtAvailability.isCrtAvailable) { + return ["md/crt-avail"]; + } + return null; + }, "isCrtAvailable"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/defaultUserAgent.js +import { platform, release } from "node:os"; +import { env as env2 } from "node:process"; +var createDefaultUserAgentProvider, defaultUserAgent; +var init_defaultUserAgent = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/defaultUserAgent.js"() { + init_getRuntimeUserAgentPair(); + init_is_crt_available(); + init_crt_availability(); + createDefaultUserAgentProvider = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => { + const runtimeUserAgentPair = getRuntimeUserAgentPair(); + return async (config3) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${platform()}`, release()], + ["lang/js"], + runtimeUserAgentPair + ]; + const crtAvailable = isCrtAvailable(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (env2.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${env2.AWS_EXECUTION_ENV}`]); + } + const appId = await config3?.userAgentAppId?.(); + const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; + return resolvedUserAgent; + }; + }, "createDefaultUserAgentProvider"); + defaultUserAgent = createDefaultUserAgentProvider; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/nodeAppIdConfigOptions.js +var UA_APP_ID_ENV_NAME, UA_APP_ID_INI_NAME, UA_APP_ID_INI_NAME_DEPRECATED, NODE_APP_ID_CONFIG_OPTIONS; +var init_nodeAppIdConfigOptions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/nodeAppIdConfigOptions.js"() { + init_configurations2(); + UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; + UA_APP_ID_INI_NAME = "sdk_ua_app_id"; + UA_APP_ID_INI_NAME_DEPRECATED = "sdk-ua-app-id"; + NODE_APP_ID_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => env3[UA_APP_ID_ENV_NAME], "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => profile[UA_APP_ID_INI_NAME] ?? profile[UA_APP_ID_INI_NAME_DEPRECATED], "configFileSelector"), + default: DEFAULT_UA_APP_ID + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-browser/createUserAgentStringParsingProvider.js +var createUserAgentStringParsingProvider; +var init_createUserAgentStringParsingProvider = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-browser/createUserAgentStringParsingProvider.js"() { + createUserAgentStringParsingProvider = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => async (config3) => { + const module = await import("./es5-NIUGVEY6.js"); + const parse4 = module.parse ?? module.default.parse ?? (() => ""); + const parsedUA = typeof window !== "undefined" && window?.navigator?.userAgent ? parse4(window.navigator.userAgent) : void 0; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${parsedUA?.os?.name || "other"}`, parsedUA?.os?.version], + ["lang/js"], + ["md/browser", `${parsedUA?.browser?.name ?? "unknown"}_${parsedUA?.browser?.version ?? "unknown"}`] + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config3?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; + }, "createUserAgentStringParsingProvider"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.js +var fallback; +var init_defaultUserAgent2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-browser/defaultUserAgent.js"() { + fallback = { + os(ua) { + if (/iPhone|iPad|iPod/.test(ua)) + return "iOS"; + if (/Macintosh|Mac OS X/.test(ua)) + return "macOS"; + if (/Windows NT/.test(ua)) + return "Windows"; + if (/Android/.test(ua)) + return "Android"; + if (/Linux/.test(ua)) + return "Linux"; + return void 0; + }, + browser(ua) { + if (/EdgiOS|EdgA|Edg\//.test(ua)) + return "Microsoft Edge"; + if (/Firefox\//.test(ua)) + return "Firefox"; + if (/Chrome\//.test(ua)) + return "Chrome"; + if (/Safari\//.test(ua)) + return "Safari"; + return void 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/isIpAddress.js +var init_isIpAddress = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/isIpAddress.js"() { + init_endpoints(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/isVirtualHostableS3Bucket.js +var isVirtualHostableS3Bucket; +var init_isVirtualHostableS3Bucket = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/isVirtualHostableS3Bucket.js"() { + init_endpoints(); + init_isIpAddress(); + isVirtualHostableS3Bucket = /* @__PURE__ */ __name((value, allowSubDomains = false) => { + if (allowSubDomains) { + for (const label of value.split(".")) { + if (!isVirtualHostableS3Bucket(label)) { + return false; + } + } + return true; + } + if (!isValidHostLabel(value)) { + return false; + } + if (value.length < 3 || value.length > 63) { + return false; + } + if (value !== value.toLowerCase()) { + return false; + } + if (isIpAddress(value)) { + return false; + } + return true; + }, "isVirtualHostableS3Bucket"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/parseArn.js +var ARN_DELIMITER, RESOURCE_DELIMITER, parseArn; +var init_parseArn = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/parseArn.js"() { + ARN_DELIMITER = ":"; + RESOURCE_DELIMITER = "/"; + parseArn = /* @__PURE__ */ __name((value) => { + const segments = value.split(ARN_DELIMITER); + if (segments.length < 6) + return null; + const [arn, partition2, service, region, accountId, ...resourcePath] = segments; + if (arn !== "arn" || partition2 === "" || service === "" || resourcePath.join(ARN_DELIMITER) === "") + return null; + const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat(); + return { + partition: partition2, + service, + region, + accountId, + resourceId + }; + }, "parseArn"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/aws.js +var awsEndpointFunctions; +var init_aws = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/aws.js"() { + init_endpoints(); + init_isVirtualHostableS3Bucket(); + init_parseArn(); + init_partition(); + awsEndpointFunctions = { + isVirtualHostableS3Bucket, + parseArn, + partition + }; + customEndpointFunctions.aws = awsEndpointFunctions; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/resolveEndpoint.js +var init_resolveEndpoint = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/resolveEndpoint.js"() { + init_endpoints(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/resolveDefaultAwsRegionalEndpointsConfig.js +var resolveDefaultAwsRegionalEndpointsConfig, toEndpointV1; +var init_resolveDefaultAwsRegionalEndpointsConfig = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/resolveDefaultAwsRegionalEndpointsConfig.js"() { + init_protocols(); + resolveDefaultAwsRegionalEndpointsConfig = /* @__PURE__ */ __name((input2) => { + if (typeof input2.endpointProvider !== "function") { + throw new Error("@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client."); + } + const { endpoint } = input2; + if (endpoint === void 0) { + input2.endpoint = async () => { + return toEndpointV1(input2.endpointProvider({ + Region: typeof input2.region === "function" ? await input2.region() : input2.region, + UseDualStack: typeof input2.useDualstackEndpoint === "function" ? await input2.useDualstackEndpoint() : input2.useDualstackEndpoint, + UseFIPS: typeof input2.useFipsEndpoint === "function" ? await input2.useFipsEndpoint() : input2.useFipsEndpoint, + Endpoint: void 0 + }, { logger: input2.logger })); + }; + } + return input2; + }, "resolveDefaultAwsRegionalEndpointsConfig"); + toEndpointV1 = /* @__PURE__ */ __name((endpoint) => parseUrl(endpoint.url), "toEndpointV1"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/types/EndpointError.js +var init_EndpointError = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/types/EndpointError.js"() { + init_endpoints(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/awsRegionConfig.js +var init_awsRegionConfig = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/awsRegionConfig.js"() { + init_config(); + init_config(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/stsRegionDefaultResolver.js +function stsRegionDefaultResolver(loaderConfig = {}) { + return loadConfig({ + ...NODE_REGION_CONFIG_OPTIONS, + async default() { + if (!warning.silence) { + console.warn("@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly."); + } + return "us-east-1"; + } + }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }); +} +var warning; +var init_stsRegionDefaultResolver = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/stsRegionDefaultResolver.js"() { + init_config(); + __name(stsRegionDefaultResolver, "stsRegionDefaultResolver"); + warning = { + silence: false + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/extensions.js +var getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration; +var init_extensions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/extensions.js"() { + getAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + return { + setRegion(region) { + runtimeConfig.region = region; + }, + region() { + return runtimeConfig.region; + } + }; + }, "getAwsRegionExtensionConfiguration"); + resolveAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((awsRegionExtensionConfiguration) => { + return { + region: awsRegionExtensionConfiguration.region() + }; + }, "resolveAwsRegionExtensionConfiguration"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +var client_exports2 = {}; +__export(client_exports2, { + DEFAULT_UA_APP_ID: () => DEFAULT_UA_APP_ID, + EndpointError: () => EndpointError, + NODE_APP_ID_CONFIG_OPTIONS: () => NODE_APP_ID_CONFIG_OPTIONS, + NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS, + NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS, + REGION_ENV_NAME: () => REGION_ENV_NAME, + REGION_INI_NAME: () => REGION_INI_NAME, + UA_APP_ID_ENV_NAME: () => UA_APP_ID_ENV_NAME, + UA_APP_ID_INI_NAME: () => UA_APP_ID_INI_NAME, + awsEndpointFunctions: () => awsEndpointFunctions, + createDefaultUserAgentProvider: () => createDefaultUserAgentProvider, + createUserAgentStringParsingProvider: () => createUserAgentStringParsingProvider, + crtAvailability: () => crtAvailability, + defaultUserAgent: () => defaultUserAgent, + emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion2, + fallback: () => fallback, + getAwsRegionExtensionConfiguration: () => getAwsRegionExtensionConfiguration, + getHostHeaderPlugin: () => getHostHeaderPlugin, + getLoggerPlugin: () => getLoggerPlugin, + getLongPollPlugin: () => getLongPollPlugin, + getRecursionDetectionPlugin: () => getRecursionDetectionPlugin, + getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions, + getUserAgentPlugin: () => getUserAgentPlugin, + getUserAgentPrefix: () => getUserAgentPrefix, + hostHeaderMiddleware: () => hostHeaderMiddleware, + hostHeaderMiddlewareOptions: () => hostHeaderMiddlewareOptions, + isIpAddress: () => isIpAddress, + isVirtualHostableS3Bucket: () => isVirtualHostableS3Bucket, + loggerMiddleware: () => loggerMiddleware, + loggerMiddlewareOptions: () => loggerMiddlewareOptions, + parseArn: () => parseArn, + partition: () => partition, + recursionDetectionMiddleware: () => recursionDetectionMiddleware, + recursionDetectionMiddlewareOptions: () => recursionDetectionMiddlewareOptions, + resolveAwsRegionExtensionConfiguration: () => resolveAwsRegionExtensionConfiguration, + resolveDefaultAwsRegionalEndpointsConfig: () => resolveDefaultAwsRegionalEndpointsConfig, + resolveEndpoint: () => resolveEndpoint, + resolveHostHeaderConfig: () => resolveHostHeaderConfig, + resolveRegionConfig: () => resolveRegionConfig, + resolveUserAgentConfig: () => resolveUserAgentConfig, + setCredentialFeature: () => setCredentialFeature, + setFeature: () => setFeature, + setPartitionInfo: () => setPartitionInfo, + setTokenFeature: () => setTokenFeature, + state: () => state, + stsRegionDefaultResolver: () => stsRegionDefaultResolver, + stsRegionWarning: () => warning, + toEndpointV1: () => toEndpointV1, + useDefaultPartitionInfo: () => useDefaultPartitionInfo, + userAgentMiddleware: () => userAgentMiddleware +}); +var init_client2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js"() { + init_emitWarningIfUnsupportedVersion(); + init_longPollMiddleware(); + init_setCredentialFeature(); + init_setFeature(); + init_setTokenFeature(); + init_hostHeaderMiddleware(); + init_loggerMiddleware(); + init_configuration(); + init_getRecursionDetectionPlugin(); + init_recursionDetectionMiddleware(); + init_configurations2(); + init_user_agent_middleware(); + init_defaultUserAgent(); + init_nodeAppIdConfigOptions(); + init_defaultUserAgent2(); + init_createUserAgentStringParsingProvider(); + init_aws(); + init_resolveEndpoint(); + init_resolveDefaultAwsRegionalEndpointsConfig(); + init_isIpAddress(); + init_isVirtualHostableS3Bucket(); + init_parseArn(); + init_partition(); + init_EndpointError(); + init_awsRegionConfig(); + init_stsRegionDefaultResolver(); + init_extensions(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksumAlgorithmForRequest.js +var getChecksumAlgorithmForRequest; +var init_getChecksumAlgorithmForRequest = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksumAlgorithmForRequest.js"() { + init_constants(); + getChecksumAlgorithmForRequest = /* @__PURE__ */ __name((input2, { requestChecksumRequired, requestAlgorithmMember, requestChecksumCalculation }) => { + if (!requestAlgorithmMember) { + return requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired ? DEFAULT_CHECKSUM_ALGORITHM : void 0; + } + if (!input2[requestAlgorithmMember]) { + return void 0; + } + const checksumAlgorithm = input2[requestAlgorithmMember]; + return checksumAlgorithm; + }, "getChecksumAlgorithmForRequest"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksumLocationName.js +var getChecksumLocationName; +var init_getChecksumLocationName = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksumLocationName.js"() { + init_constants(); + getChecksumLocationName = /* @__PURE__ */ __name((algorithm) => algorithm === ChecksumAlgorithm.MD5 ? "content-md5" : `x-amz-checksum-${algorithm.toLowerCase()}`, "getChecksumLocationName"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/hasHeader.js +var hasHeader; +var init_hasHeader = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/hasHeader.js"() { + hasHeader = /* @__PURE__ */ __name((header, headers) => { + const soughtHeader = header.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; + }, "hasHeader"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/hasHeaderWithPrefix.js +var hasHeaderWithPrefix; +var init_hasHeaderWithPrefix = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/hasHeaderWithPrefix.js"() { + hasHeaderWithPrefix = /* @__PURE__ */ __name((headerPrefix, headers) => { + const soughtHeaderPrefix = headerPrefix.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase().startsWith(soughtHeaderPrefix)) { + return true; + } + } + return false; + }, "hasHeaderWithPrefix"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/isStreaming.js +var isStreaming; +var init_isStreaming = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/isStreaming.js"() { + init_serde(); + isStreaming = /* @__PURE__ */ __name((body) => body !== void 0 && typeof body !== "string" && !ArrayBuffer.isView(body) && !isArrayBuffer(body), "isStreaming"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc32c/Crc32cJs.js +var T, Crc32cJs; +var init_Crc32cJs = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc32c/Crc32cJs.js"() { + T = new Uint32Array(256); + for (let i5 = 0; i5 < 256; ++i5) { + let c5 = i5; + for (let j5 = 0; j5 < 8; ++j5) { + c5 = c5 & 1 ? 2197175160 ^ c5 >>> 1 : c5 >>> 1; + } + T[i5] = c5 >>> 0; + } + Crc32cJs = class { + static { + __name(this, "Crc32cJs"); + } + digestLength = 4; + crc = 4294967295; + update(data) { + let crc = this.crc; + for (let i5 = 0; i5 < data.length; ++i5) { + crc = crc >>> 8 ^ T[(crc ^ data[i5]) & 255]; + } + this.crc = crc; + } + async digest() { + const value = (this.crc ^ 4294967295) >>> 0; + const out = new Uint8Array(4); + out[0] = value >>> 24; + out[1] = value >>> 16 & 255; + out[2] = value >>> 8 & 255; + out[3] = value & 255; + return out; + } + reset() { + this.crc = 4294967295; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc32c/Crc32cNode.js +var Crc32cNode; +var init_Crc32cNode = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc32c/Crc32cNode.js"() { + init_Crc32cJs(); + Crc32cNode = Crc32cJs; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc64-nvme/crc64-nvme-crt-container.js +var crc64NvmeCrtContainer; +var init_crc64_nvme_crt_container = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc64-nvme/crc64-nvme-crt-container.js"() { + crc64NvmeCrtContainer = { + CrtCrc64Nvme: null + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc64-nvme/Crc64NvmeJs.js +var generateCRC64NVMETable, CRC64_NVME_REVERSED_TABLE, t0, t1, t2, t3, t4, t5, t6, t7, ensureTablesInitialized, Crc64NvmeJs; +var init_Crc64NvmeJs = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc64-nvme/Crc64NvmeJs.js"() { + generateCRC64NVMETable = /* @__PURE__ */ __name(() => { + const sliceLength = 8; + const tables = new Array(sliceLength); + for (let slice = 0; slice < sliceLength; slice++) { + const table = new Array(512); + for (let i5 = 0; i5 < 256; i5++) { + let crc = BigInt(i5); + for (let j5 = 0; j5 < 8 * (slice + 1); j5++) { + if (crc & 1n) { + crc = crc >> 1n ^ 0x9a6c9329ac4bc9b5n; + } else { + crc = crc >> 1n; + } + } + table[i5 * 2] = Number(crc >> 32n & 0xffffffffn); + table[i5 * 2 + 1] = Number(crc & 0xffffffffn); + } + tables[slice] = new Uint32Array(table); + } + return tables; + }, "generateCRC64NVMETable"); + ensureTablesInitialized = /* @__PURE__ */ __name(() => { + if (!CRC64_NVME_REVERSED_TABLE) { + CRC64_NVME_REVERSED_TABLE = generateCRC64NVMETable(); + [t0, t1, t2, t3, t4, t5, t6, t7] = CRC64_NVME_REVERSED_TABLE; + } + }, "ensureTablesInitialized"); + Crc64NvmeJs = class { + static { + __name(this, "Crc64NvmeJs"); + } + c1 = 0; + c2 = 0; + constructor() { + ensureTablesInitialized(); + this.reset(); + } + update(data) { + const len = data.length; + let i5 = 0; + let crc1 = this.c1; + let crc2 = this.c2; + while (i5 + 8 <= len) { + const idx0 = ((crc2 ^ data[i5++]) & 255) << 1; + const idx1 = ((crc2 >>> 8 ^ data[i5++]) & 255) << 1; + const idx2 = ((crc2 >>> 16 ^ data[i5++]) & 255) << 1; + const idx3 = ((crc2 >>> 24 ^ data[i5++]) & 255) << 1; + const idx4 = ((crc1 ^ data[i5++]) & 255) << 1; + const idx5 = ((crc1 >>> 8 ^ data[i5++]) & 255) << 1; + const idx6 = ((crc1 >>> 16 ^ data[i5++]) & 255) << 1; + const idx7 = ((crc1 >>> 24 ^ data[i5++]) & 255) << 1; + crc1 = t7[idx0] ^ t6[idx1] ^ t5[idx2] ^ t4[idx3] ^ t3[idx4] ^ t2[idx5] ^ t1[idx6] ^ t0[idx7]; + crc2 = t7[idx0 + 1] ^ t6[idx1 + 1] ^ t5[idx2 + 1] ^ t4[idx3 + 1] ^ t3[idx4 + 1] ^ t2[idx5 + 1] ^ t1[idx6 + 1] ^ t0[idx7 + 1]; + } + while (i5 < len) { + const idx = ((crc2 ^ data[i5]) & 255) << 1; + crc2 = (crc2 >>> 8 | (crc1 & 255) << 24) >>> 0; + crc1 = crc1 >>> 8 ^ t0[idx]; + crc2 ^= t0[idx + 1]; + ++i5; + } + this.c1 = crc1; + this.c2 = crc2; + } + async digest() { + const c1 = this.c1 ^ 4294967295; + const c22 = this.c2 ^ 4294967295; + return new Uint8Array([ + c1 >>> 24, + c1 >>> 16 & 255, + c1 >>> 8 & 255, + c1 & 255, + c22 >>> 24, + c22 >>> 16 & 255, + c22 >>> 8 & 255, + c22 & 255 + ]); + } + reset() { + this.c1 = 4294967295; + this.c2 = 4294967295; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc64-nvme/Crc64Nvme.js +var Crc64Nvme; +var init_Crc64Nvme = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/crc64-nvme/Crc64Nvme.js"() { + init_crc64_nvme_crt_container(); + init_Crc64NvmeJs(); + Crc64Nvme = class { + static { + __name(this, "Crc64Nvme"); + } + impl; + constructor() { + const Crt = crc64NvmeCrtContainer.CrtCrc64Nvme; + this.impl = Crt ? new Crt() : new Crc64NvmeJs(); + } + update(data) { + this.impl.update(data); + } + async digest() { + return this.impl.digest(); + } + reset() { + this.impl.reset(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/index.js +var init_crc = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/crc/index.js"() { + init_Crc32cNode(); + init_Crc64Nvme(); + init_checksum(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/types.js +var CLIENT_SUPPORTED_ALGORITHMS, PRIORITY_ORDER_ALGORITHMS; +var init_types = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/types.js"() { + init_constants(); + CLIENT_SUPPORTED_ALGORITHMS = [ + ChecksumAlgorithm.CRC32, + ChecksumAlgorithm.CRC32C, + ChecksumAlgorithm.CRC64NVME, + ChecksumAlgorithm.SHA1, + ChecksumAlgorithm.SHA256 + ]; + PRIORITY_ORDER_ALGORITHMS = [ + ChecksumAlgorithm.SHA256, + ChecksumAlgorithm.SHA1, + ChecksumAlgorithm.CRC32, + ChecksumAlgorithm.CRC32C, + ChecksumAlgorithm.CRC64NVME + ]; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/selectChecksumAlgorithmFunction.js +var selectChecksumAlgorithmFunction; +var init_selectChecksumAlgorithmFunction = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/selectChecksumAlgorithmFunction.js"() { + init_crc(); + init_constants(); + init_types(); + selectChecksumAlgorithmFunction = /* @__PURE__ */ __name((checksumAlgorithm, config3) => { + const { checksumAlgorithms = {} } = config3; + switch (checksumAlgorithm) { + case ChecksumAlgorithm.MD5: + return checksumAlgorithms?.MD5 ?? config3.md5; + case ChecksumAlgorithm.CRC32: + return checksumAlgorithms?.CRC32 ?? Crc32Node; + case ChecksumAlgorithm.CRC32C: + return checksumAlgorithms?.CRC32C ?? Crc32cNode; + case ChecksumAlgorithm.CRC64NVME: + return checksumAlgorithms?.CRC64NVME ?? Crc64Nvme; + case ChecksumAlgorithm.SHA1: + return checksumAlgorithms?.SHA1 ?? config3.sha1; + case ChecksumAlgorithm.SHA256: + return checksumAlgorithms?.SHA256 ?? config3.sha256; + default: + if (checksumAlgorithms?.[checksumAlgorithm]) { + return checksumAlgorithms[checksumAlgorithm]; + } + throw new Error(`The checksum algorithm "${checksumAlgorithm}" is not supported by the client. Select one of ${CLIENT_SUPPORTED_ALGORITHMS}, or provide an implementation to the client constructor checksums field.`); + } + }, "selectChecksumAlgorithmFunction"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/stringHasher.js +var stringHasher; +var init_stringHasher = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/stringHasher.js"() { + init_serde(); + stringHasher = /* @__PURE__ */ __name((checksumAlgorithmFn, body) => { + const hash3 = new checksumAlgorithmFn(); + hash3.update(toUint8Array(body || "")); + return hash3.digest(); + }, "stringHasher"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/flexibleChecksumsMiddleware.js +var flexibleChecksumsMiddlewareOptions, flexibleChecksumsMiddleware; +var init_flexibleChecksumsMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/flexibleChecksumsMiddleware.js"() { + init_client2(); + init_protocols(); + init_serde(); + init_constants(); + init_getChecksumAlgorithmForRequest(); + init_getChecksumLocationName(); + init_hasHeader(); + init_hasHeaderWithPrefix(); + init_isStreaming(); + init_selectChecksumAlgorithmFunction(); + init_stringHasher(); + flexibleChecksumsMiddlewareOptions = { + name: "flexibleChecksumsMiddleware", + step: "build", + tags: ["BODY_CHECKSUM"], + override: true + }; + flexibleChecksumsMiddleware = /* @__PURE__ */ __name((config3, middlewareConfig) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + if (hasHeaderWithPrefix("x-amz-checksum-", args.request.headers)) { + return next(args); + } + const { request, input: input2 } = args; + const { body: requestBody, headers } = request; + const { base64Encoder, streamHasher } = config3; + const { requestChecksumRequired, requestAlgorithmMember } = middlewareConfig; + const requestChecksumCalculation = await config3.requestChecksumCalculation(); + const requestAlgorithmMemberName = requestAlgorithmMember?.name; + const requestAlgorithmMemberHttpHeader = requestAlgorithmMember?.httpHeader; + if (requestAlgorithmMemberName && !input2[requestAlgorithmMemberName]) { + if (requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired) { + input2[requestAlgorithmMemberName] = DEFAULT_CHECKSUM_ALGORITHM; + if (requestAlgorithmMemberHttpHeader) { + headers[requestAlgorithmMemberHttpHeader] = DEFAULT_CHECKSUM_ALGORITHM; + } + } + } + const checksumAlgorithm = getChecksumAlgorithmForRequest(input2, { + requestChecksumRequired, + requestAlgorithmMember: requestAlgorithmMember?.name, + requestChecksumCalculation + }); + let updatedBody = requestBody; + let updatedHeaders = headers; + if (checksumAlgorithm) { + switch (checksumAlgorithm) { + case ChecksumAlgorithm.CRC32: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC32", "U"); + break; + case ChecksumAlgorithm.CRC32C: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC32C", "V"); + break; + case ChecksumAlgorithm.CRC64NVME: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC64", "W"); + break; + case ChecksumAlgorithm.SHA1: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_SHA1", "X"); + break; + case ChecksumAlgorithm.SHA256: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_SHA256", "Y"); + break; + } + const checksumLocationName = getChecksumLocationName(checksumAlgorithm); + const checksumAlgorithmFn = selectChecksumAlgorithmFunction(checksumAlgorithm, config3); + if (isStreaming(requestBody)) { + const { getAwsChunkedEncodingStream, bodyLengthChecker } = config3; + updatedBody = getAwsChunkedEncodingStream(typeof config3.requestStreamBufferSize === "number" && config3.requestStreamBufferSize >= 8 * 1024 ? createBufferedReadable(requestBody, config3.requestStreamBufferSize, context.logger) : requestBody, { + base64Encoder, + bodyLengthChecker, + checksumLocationName, + checksumAlgorithmFn, + streamHasher + }); + updatedHeaders = { + ...headers, + "content-encoding": headers["content-encoding"] ? `${headers["content-encoding"]},aws-chunked` : "aws-chunked", + "transfer-encoding": "chunked", + "x-amz-decoded-content-length": headers["content-length"], + "x-amz-content-sha256": "STREAMING-UNSIGNED-PAYLOAD-TRAILER", + "x-amz-trailer": checksumLocationName + }; + delete updatedHeaders["content-length"]; + } else if (!hasHeader(checksumLocationName, headers)) { + const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody); + updatedHeaders = { + ...headers, + [checksumLocationName]: base64Encoder(rawChecksum) + }; + } + } + try { + const result = await next({ + ...args, + request: { + ...request, + headers: updatedHeaders, + body: updatedBody + } + }); + return result; + } catch (e5) { + if (e5 instanceof Error && e5.name === "InvalidChunkSizeError") { + try { + if (!e5.message.endsWith(".")) { + e5.message += "."; + } + e5.message += " Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream."; + } catch (ignored) { + } + } + throw e5; + } + }, "flexibleChecksumsMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/flexibleChecksumsInputMiddleware.js +var flexibleChecksumsInputMiddlewareOptions, flexibleChecksumsInputMiddleware; +var init_flexibleChecksumsInputMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/flexibleChecksumsInputMiddleware.js"() { + init_client2(); + init_constants(); + flexibleChecksumsInputMiddlewareOptions = { + name: "flexibleChecksumsInputMiddleware", + toMiddleware: "serializerMiddleware", + relation: "before", + tags: ["BODY_CHECKSUM"], + override: true + }; + flexibleChecksumsInputMiddleware = /* @__PURE__ */ __name((config3, middlewareConfig) => (next, context) => async (args) => { + const input2 = args.input; + const { requestValidationModeMember } = middlewareConfig; + const requestChecksumCalculation = await config3.requestChecksumCalculation(); + const responseChecksumValidation = await config3.responseChecksumValidation(); + switch (requestChecksumCalculation) { + case RequestChecksumCalculation.WHEN_REQUIRED: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED", "a"); + break; + case RequestChecksumCalculation.WHEN_SUPPORTED: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED", "Z"); + break; + } + switch (responseChecksumValidation) { + case ResponseChecksumValidation.WHEN_REQUIRED: + setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED", "c"); + break; + case ResponseChecksumValidation.WHEN_SUPPORTED: + setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED", "b"); + break; + } + if (requestValidationModeMember && !input2[requestValidationModeMember]) { + if (responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED) { + input2[requestValidationModeMember] = "ENABLED"; + } + } + return next(args); + }, "flexibleChecksumsInputMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksumAlgorithmListForResponse.js +var getChecksumAlgorithmListForResponse; +var init_getChecksumAlgorithmListForResponse = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksumAlgorithmListForResponse.js"() { + init_types(); + getChecksumAlgorithmListForResponse = /* @__PURE__ */ __name((responseAlgorithms = []) => { + const validChecksumAlgorithms = []; + let i5 = PRIORITY_ORDER_ALGORITHMS.length; + for (const algorithm of responseAlgorithms) { + const priority = PRIORITY_ORDER_ALGORITHMS.indexOf(algorithm); + if (priority !== -1) { + validChecksumAlgorithms[priority] = algorithm; + } else { + validChecksumAlgorithms[i5++] = algorithm; + } + } + return validChecksumAlgorithms.filter(Boolean); + }, "getChecksumAlgorithmListForResponse"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/isChecksumWithPartNumber.js +var isChecksumWithPartNumber; +var init_isChecksumWithPartNumber = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/isChecksumWithPartNumber.js"() { + isChecksumWithPartNumber = /* @__PURE__ */ __name((checksum) => { + const lastHyphenIndex = checksum.lastIndexOf("-"); + if (lastHyphenIndex !== -1) { + const numberPart = checksum.slice(lastHyphenIndex + 1); + if (!numberPart.startsWith("0")) { + const number4 = parseInt(numberPart, 10); + if (!isNaN(number4) && number4 >= 1 && number4 <= 1e4) { + return true; + } + } + } + return false; + }, "isChecksumWithPartNumber"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksum.js +var getChecksum; +var init_getChecksum = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getChecksum.js"() { + init_stringHasher(); + getChecksum = /* @__PURE__ */ __name(async (body, { checksumAlgorithmFn, base64Encoder }) => base64Encoder(await stringHasher(checksumAlgorithmFn, body)), "getChecksum"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/validateChecksumFromResponse.js +var validateChecksumFromResponse; +var init_validateChecksumFromResponse = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/validateChecksumFromResponse.js"() { + init_serde(); + init_constants(); + init_getChecksum(); + init_getChecksumAlgorithmListForResponse(); + init_getChecksumLocationName(); + init_isStreaming(); + init_selectChecksumAlgorithmFunction(); + validateChecksumFromResponse = /* @__PURE__ */ __name(async (response, { config: config3, responseAlgorithms, logger }) => { + const checksumAlgorithms = getChecksumAlgorithmListForResponse(responseAlgorithms); + const { body: responseBody, headers: responseHeaders } = response; + for (const algorithm of checksumAlgorithms) { + const responseHeader = getChecksumLocationName(algorithm); + const checksumFromResponse = responseHeaders[responseHeader]; + if (checksumFromResponse) { + let checksumAlgorithmFn; + try { + checksumAlgorithmFn = selectChecksumAlgorithmFunction(algorithm, config3); + } catch (error62) { + if (algorithm === ChecksumAlgorithm.CRC64NVME) { + logger?.warn(`Skipping ${ChecksumAlgorithm.CRC64NVME} checksum validation: ${error62.message}`); + continue; + } + throw error62; + } + const { base64Encoder } = config3; + if (isStreaming(responseBody)) { + response.body = createChecksumStream({ + expectedChecksum: checksumFromResponse, + checksumSourceLocation: responseHeader, + checksum: new checksumAlgorithmFn(), + source: responseBody, + base64Encoder + }); + return; + } + const checksum = await getChecksum(responseBody, { checksumAlgorithmFn, base64Encoder }); + if (checksum === checksumFromResponse) { + break; + } + throw new Error(`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}" in response header "${responseHeader}".`); + } + } + }, "validateChecksumFromResponse"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/flexibleChecksumsResponseMiddleware.js +var flexibleChecksumsResponseMiddlewareOptions, flexibleChecksumsResponseMiddleware; +var init_flexibleChecksumsResponseMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/flexibleChecksumsResponseMiddleware.js"() { + init_protocols(); + init_getChecksumAlgorithmListForResponse(); + init_getChecksumLocationName(); + init_isChecksumWithPartNumber(); + init_validateChecksumFromResponse(); + flexibleChecksumsResponseMiddlewareOptions = { + name: "flexibleChecksumsResponseMiddleware", + toMiddleware: "deserializerMiddleware", + relation: "after", + tags: ["BODY_CHECKSUM"], + override: true + }; + flexibleChecksumsResponseMiddleware = /* @__PURE__ */ __name((config3, middlewareConfig) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const input2 = args.input; + const result = await next(args); + const response = result.response; + const { requestValidationModeMember, responseAlgorithms } = middlewareConfig; + if (requestValidationModeMember && input2[requestValidationModeMember] === "ENABLED") { + const { clientName, commandName } = context; + const customChecksumAlgorithms = Object.keys(config3.checksumAlgorithms ?? {}).filter((algorithm) => { + const responseHeader = getChecksumLocationName(algorithm); + return response.headers[responseHeader] !== void 0; + }); + const algoList = getChecksumAlgorithmListForResponse([ + ...responseAlgorithms ?? [], + ...customChecksumAlgorithms + ]); + const isS3WholeObjectMultipartGetResponseChecksum = clientName === "S3Client" && commandName === "GetObjectCommand" && algoList.every((algorithm) => { + const responseHeader = getChecksumLocationName(algorithm); + const checksumFromResponse = response.headers[responseHeader]; + return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse); + }); + if (isS3WholeObjectMultipartGetResponseChecksum) { + return result; + } + await validateChecksumFromResponse(response, { + config: config3, + responseAlgorithms: algoList, + logger: context.logger + }); + } + return result; + }, "flexibleChecksumsResponseMiddleware"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getFlexibleChecksumsPlugin.js +var getFlexibleChecksumsPlugin; +var init_getFlexibleChecksumsPlugin = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/getFlexibleChecksumsPlugin.js"() { + init_flexibleChecksumsInputMiddleware(); + init_flexibleChecksumsMiddleware(); + init_flexibleChecksumsResponseMiddleware(); + getFlexibleChecksumsPlugin = /* @__PURE__ */ __name((config3, middlewareConfig) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(flexibleChecksumsMiddleware(config3, middlewareConfig), flexibleChecksumsMiddlewareOptions); + clientStack.addRelativeTo(flexibleChecksumsInputMiddleware(config3, middlewareConfig), flexibleChecksumsInputMiddlewareOptions); + clientStack.addRelativeTo(flexibleChecksumsResponseMiddleware(config3, middlewareConfig), flexibleChecksumsResponseMiddlewareOptions); + }, "applyToStack") + }), "getFlexibleChecksumsPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/resolveFlexibleChecksumsConfig.js +var resolveFlexibleChecksumsConfig; +var init_resolveFlexibleChecksumsConfig = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/resolveFlexibleChecksumsConfig.js"() { + init_client(); + init_constants(); + resolveFlexibleChecksumsConfig = /* @__PURE__ */ __name((input2) => { + const { requestChecksumCalculation, responseChecksumValidation, requestStreamBufferSize } = input2; + return Object.assign(input2, { + requestChecksumCalculation: normalizeProvider(requestChecksumCalculation ?? DEFAULT_REQUEST_CHECKSUM_CALCULATION), + responseChecksumValidation: normalizeProvider(responseChecksumValidation ?? DEFAULT_RESPONSE_CHECKSUM_VALIDATION), + requestStreamBufferSize: Number(requestStreamBufferSize ?? 0), + checksumAlgorithms: input2.checksumAlgorithms ?? {} + }); + }, "resolveFlexibleChecksumsConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/index.js +var flexible_checksums_exports = {}; +__export(flexible_checksums_exports, { + CONFIG_REQUEST_CHECKSUM_CALCULATION: () => CONFIG_REQUEST_CHECKSUM_CALCULATION, + CONFIG_RESPONSE_CHECKSUM_VALIDATION: () => CONFIG_RESPONSE_CHECKSUM_VALIDATION, + ChecksumAlgorithm: () => ChecksumAlgorithm, + ChecksumLocation: () => ChecksumLocation, + DEFAULT_CHECKSUM_ALGORITHM: () => DEFAULT_CHECKSUM_ALGORITHM, + DEFAULT_REQUEST_CHECKSUM_CALCULATION: () => DEFAULT_REQUEST_CHECKSUM_CALCULATION, + DEFAULT_RESPONSE_CHECKSUM_VALIDATION: () => DEFAULT_RESPONSE_CHECKSUM_VALIDATION, + ENV_REQUEST_CHECKSUM_CALCULATION: () => ENV_REQUEST_CHECKSUM_CALCULATION, + ENV_RESPONSE_CHECKSUM_VALIDATION: () => ENV_RESPONSE_CHECKSUM_VALIDATION, + NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS: () => NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS, + NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS: () => NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS, + RequestChecksumCalculation: () => RequestChecksumCalculation, + ResponseChecksumValidation: () => ResponseChecksumValidation, + flexibleChecksumsMiddleware: () => flexibleChecksumsMiddleware, + flexibleChecksumsMiddlewareOptions: () => flexibleChecksumsMiddlewareOptions, + getFlexibleChecksumsPlugin: () => getFlexibleChecksumsPlugin, + resolveFlexibleChecksumsConfig: () => resolveFlexibleChecksumsConfig +}); +var init_flexible_checksums = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/flexible-checksums/index.js"() { + init_NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS(); + init_NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS(); + init_constants(); + init_flexibleChecksumsMiddleware(); + init_getFlexibleChecksumsPlugin(); + init_resolveFlexibleChecksumsConfig(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-check-content-length-header/check-content-length-header.js +function checkContentLengthHeader() { + return (next, context) => async (args) => { + const { request } = args; + if (HttpRequest.isInstance(request)) { + if (!(CONTENT_LENGTH_HEADER2 in request.headers) && !(DECODED_CONTENT_LENGTH_HEADER in request.headers)) { + const message = `Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`; + if (typeof context?.logger?.warn === "function" && !(context.logger instanceof NoOpLogger)) { + context.logger.warn(message); + } else { + console.warn(message); + } + } + } + return next({ ...args }); + }; +} +var CONTENT_LENGTH_HEADER2, DECODED_CONTENT_LENGTH_HEADER, checkContentLengthHeaderMiddlewareOptions, getCheckContentLengthHeaderPlugin; +var init_check_content_length_header = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-check-content-length-header/check-content-length-header.js"() { + init_client(); + init_protocols(); + CONTENT_LENGTH_HEADER2 = "content-length"; + DECODED_CONTENT_LENGTH_HEADER = "x-amz-decoded-content-length"; + __name(checkContentLengthHeader, "checkContentLengthHeader"); + checkContentLengthHeaderMiddlewareOptions = { + step: "finalizeRequest", + tags: ["CHECK_CONTENT_LENGTH_HEADER"], + name: "getCheckContentLengthHeaderPlugin", + override: true + }; + getCheckContentLengthHeaderPlugin = /* @__PURE__ */ __name((unused) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(checkContentLengthHeader(), checkContentLengthHeaderMiddlewareOptions); + }, "applyToStack") + }), "getCheckContentLengthHeaderPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-region-redirect/region-redirect-endpoint-middleware.js +var regionRedirectEndpointMiddleware, regionRedirectEndpointMiddlewareOptions; +var init_region_redirect_endpoint_middleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-region-redirect/region-redirect-endpoint-middleware.js"() { + regionRedirectEndpointMiddleware = /* @__PURE__ */ __name((config3) => { + return (next, context) => async (args) => { + const originalRegion = await config3.region(); + const regionProviderRef = config3.region; + let unlock = /* @__PURE__ */ __name(() => { + }, "unlock"); + if (context.__s3RegionRedirect) { + Object.defineProperty(config3, "region", { + writable: false, + value: /* @__PURE__ */ __name(async () => { + return context.__s3RegionRedirect; + }, "value") + }); + unlock = /* @__PURE__ */ __name(() => Object.defineProperty(config3, "region", { + writable: true, + value: regionProviderRef + }), "unlock"); + } + try { + const result = await next(args); + if (context.__s3RegionRedirect) { + unlock(); + const region = await config3.region(); + if (originalRegion !== region) { + throw new Error("Region was not restored following S3 region redirect."); + } + } + return result; + } catch (e5) { + unlock(); + throw e5; + } + }; + }, "regionRedirectEndpointMiddleware"); + regionRedirectEndpointMiddlewareOptions = { + tags: ["REGION_REDIRECT", "S3"], + name: "regionRedirectEndpointMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware" + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-region-redirect/region-redirect-middleware.js +function regionRedirectMiddleware(clientConfig) { + return (next, context) => async (args) => { + try { + return await next(args); + } catch (err) { + if (clientConfig.followRegionRedirects) { + const statusCode = err?.$metadata?.httpStatusCode; + const isHeadBucket = context.commandName === "HeadBucketCommand"; + const bucketRegionHeader = err?.$response?.headers?.["x-amz-bucket-region"]; + if (bucketRegionHeader) { + if (statusCode === 301 || statusCode === 400 && (err?.name === "IllegalLocationConstraintException" || isHeadBucket)) { + try { + const actualRegion = bucketRegionHeader; + context.logger?.debug(`Redirecting from ${await clientConfig.region()} to ${actualRegion}`); + context.__s3RegionRedirect = actualRegion; + setFeature(context, "S3_REGION_REDIRECT", "Ah"); + } catch (e5) { + throw new Error("Region redirect failed: " + e5); + } + return next(args); + } + } + } + throw err; + } + }; +} +var regionRedirectMiddlewareOptions, getRegionRedirectMiddlewarePlugin; +var init_region_redirect_middleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-region-redirect/region-redirect-middleware.js"() { + init_client2(); + init_region_redirect_endpoint_middleware(); + __name(regionRedirectMiddleware, "regionRedirectMiddleware"); + regionRedirectMiddlewareOptions = { + step: "initialize", + tags: ["REGION_REDIRECT", "S3"], + name: "regionRedirectMiddleware", + override: true + }; + getRegionRedirectMiddlewarePlugin = /* @__PURE__ */ __name((clientConfig) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(regionRedirectMiddleware(clientConfig), regionRedirectMiddlewareOptions); + clientStack.addRelativeTo(regionRedirectEndpointMiddleware(clientConfig), regionRedirectEndpointMiddlewareOptions); + }, "applyToStack") + }), "getRegionRedirectMiddlewarePlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/S3ExpressIdentityCache.js +var S3ExpressIdentityCache; +var init_S3ExpressIdentityCache = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/S3ExpressIdentityCache.js"() { + S3ExpressIdentityCache = class _S3ExpressIdentityCache { + static { + __name(this, "S3ExpressIdentityCache"); + } + data; + lastPurgeTime = Date.now(); + static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS = 3e4; + constructor(data = {}) { + this.data = data; + } + get(key) { + const entry = this.data[key]; + if (!entry) { + return; + } + return entry; + } + set(key, entry) { + this.data[key] = entry; + return entry; + } + delete(key) { + delete this.data[key]; + } + async purgeExpired() { + const now = Date.now(); + if (this.lastPurgeTime + _S3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS > now) { + return; + } + for (const key in this.data) { + const entry = this.data[key]; + if (!entry.isRefreshing) { + const credential = await entry.identity; + if (credential.expiration) { + if (credential.expiration.getTime() < now) { + delete this.data[key]; + } + } + } + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/S3ExpressIdentityCacheEntry.js +var S3ExpressIdentityCacheEntry; +var init_S3ExpressIdentityCacheEntry = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/S3ExpressIdentityCacheEntry.js"() { + S3ExpressIdentityCacheEntry = class { + static { + __name(this, "S3ExpressIdentityCacheEntry"); + } + _identity; + isRefreshing; + accessed; + constructor(_identity, isRefreshing = false, accessed = Date.now()) { + this._identity = _identity; + this.isRefreshing = isRefreshing; + this.accessed = accessed; + } + get identity() { + this.accessed = Date.now(); + return this._identity; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/S3ExpressIdentityProviderImpl.js +var S3ExpressIdentityProviderImpl; +var init_S3ExpressIdentityProviderImpl = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/S3ExpressIdentityProviderImpl.js"() { + init_S3ExpressIdentityCache(); + init_S3ExpressIdentityCacheEntry(); + S3ExpressIdentityProviderImpl = class _S3ExpressIdentityProviderImpl { + static { + __name(this, "S3ExpressIdentityProviderImpl"); + } + createSessionFn; + cache; + static REFRESH_WINDOW_MS = 6e4; + constructor(createSessionFn, cache5 = new S3ExpressIdentityCache()) { + this.createSessionFn = createSessionFn; + this.cache = cache5; + } + async getS3ExpressIdentity(awsIdentity, identityProperties) { + const key = identityProperties.Bucket; + const { cache: cache5 } = this; + const entry = cache5.get(key); + if (entry) { + return entry.identity.then((identity) => { + const isExpired = (identity.expiration?.getTime() ?? 0) < Date.now(); + if (isExpired) { + return cache5.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity; + } + const isExpiringSoon = (identity.expiration?.getTime() ?? 0) < Date.now() + _S3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS; + if (isExpiringSoon && !entry.isRefreshing) { + entry.isRefreshing = true; + this.getIdentity(key).then((id) => { + cache5.set(key, new S3ExpressIdentityCacheEntry(Promise.resolve(id))); + }); + } + return identity; + }); + } + return cache5.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity; + } + async getIdentity(key) { + await this.cache.purgeExpired().catch((error62) => { + console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n" + error62); + }); + const session = await this.createSessionFn(key); + if (!session.Credentials?.AccessKeyId || !session.Credentials?.SecretAccessKey) { + throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey."); + } + const identity = { + accessKeyId: session.Credentials.AccessKeyId, + secretAccessKey: session.Credentials.SecretAccessKey, + sessionToken: session.Credentials.SessionToken, + expiration: session.Credentials.Expiration ? new Date(session.Credentials.Expiration) : void 0 + }; + return identity; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-configuration/s3Configuration.js +var resolveS3Config; +var init_s3Configuration = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-configuration/s3Configuration.js"() { + init_S3ExpressIdentityProviderImpl(); + resolveS3Config = /* @__PURE__ */ __name((input2, { session }) => { + const [s3ClientProvider, CreateSessionCommandCtor] = session; + const { forcePathStyle, useAccelerateEndpoint, disableMultiregionAccessPoints, followRegionRedirects, s3ExpressIdentityProvider, bucketEndpoint, expectContinueHeader } = input2; + return Object.assign(input2, { + forcePathStyle: forcePathStyle ?? false, + useAccelerateEndpoint: useAccelerateEndpoint ?? false, + disableMultiregionAccessPoints: disableMultiregionAccessPoints ?? false, + followRegionRedirects: followRegionRedirects ?? false, + s3ExpressIdentityProvider: s3ExpressIdentityProvider ?? new S3ExpressIdentityProviderImpl(async (key) => s3ClientProvider().send(new CreateSessionCommandCtor({ + Bucket: key + }))), + bucketEndpoint: bucketEndpoint ?? false, + expectContinueHeader: expectContinueHeader ?? 2097152 + }); + }, "resolveS3Config"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-expires/s3-expires-middleware.js +var s3ExpiresMiddleware, s3ExpiresMiddlewareOptions, getS3ExpiresMiddlewarePlugin; +var init_s3_expires_middleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-expires/s3-expires-middleware.js"() { + init_protocols(); + init_serde(); + s3ExpiresMiddleware = /* @__PURE__ */ __name((config3) => { + return (next, context) => async (args) => { + const result = await next(args); + const { response } = result; + if (HttpResponse.isInstance(response)) { + if (response.headers.expires) { + response.headers.expiresstring = response.headers.expires; + try { + parseRfc7231DateTime(response.headers.expires); + } catch (e5) { + context.logger?.warn(`AWS SDK Warning for ${context.clientName}::${context.commandName} response parsing (${response.headers.expires}): ${e5}`); + delete response.headers.expires; + } + } + } + return result; + }; + }, "s3ExpiresMiddleware"); + s3ExpiresMiddlewareOptions = { + tags: ["S3"], + name: "s3ExpiresMiddleware", + override: true, + relation: "after", + toMiddleware: "deserializerMiddleware" + }; + getS3ExpiresMiddlewarePlugin = /* @__PURE__ */ __name((clientConfig) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(s3ExpiresMiddleware(clientConfig), s3ExpiresMiddlewareOptions); + }, "applyToStack") + }), "getS3ExpiresMiddlewarePlugin"); + } +}); + +// ../../node_modules/.pnpm/@smithy+signature-v4@5.7.4/node_modules/@smithy/signature-v4/dist-cjs/index.js +var require_dist_cjs2 = __commonJS({ + "../../node_modules/.pnpm/@smithy+signature-v4@5.7.4/node_modules/@smithy/signature-v4/dist-cjs/index.js"(exports) { + var { hasOwn: hasOwn2, fromUtf8: fromUtf82, fromHex, toHex, toUint8Array: toUint8Array2, isArrayBuffer: isArrayBuffer2 } = (init_serde(), __toCommonJS(serde_exports)); + var { normalizeProvider: normalizeProvider3 } = (init_client(), __toCommonJS(client_exports)); + var { escapeUri: escapeUri2, HttpRequest: HttpRequest2 } = (init_protocols(), __toCommonJS(protocols_exports)); + var HeaderFormatter = class { + static { + __name(this, "HeaderFormatter"); + } + format(headers) { + const chunks = []; + for (const headerName in headers) { + if (!hasOwn2(headers, headerName)) + continue; + const bytes = fromUtf82(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = fromUtf82(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(fromHex(header.value.replace(/-/g, "")), 1); + return uuidBytes; + } + } + }; + var HEADER_VALUE_TYPE; + (function(HEADER_VALUE_TYPE2) { + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["boolTrue"] = 0] = "boolTrue"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["boolFalse"] = 1] = "boolFalse"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["byte"] = 2] = "byte"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["short"] = 3] = "short"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["integer"] = 4] = "integer"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["long"] = 5] = "long"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["byteArray"] = 6] = "byteArray"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["string"] = 7] = "string"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["timestamp"] = 8] = "timestamp"; + HEADER_VALUE_TYPE2[HEADER_VALUE_TYPE2["uuid"] = 9] = "uuid"; + })(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {})); + var UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; + var Int64 = class _Int64 { + static { + __name(this, "Int64"); + } + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number4) { + if (number4 > 9223372036854776e3 || number4 < -9223372036854776e3) { + throw new Error(`${number4} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i5 = 7, remaining = Math.abs(Math.round(number4)); i5 > -1 && remaining > 0; i5--, remaining /= 256) { + bytes[i5] = remaining; + } + if (number4 < 0) { + negate(bytes); + } + return new _Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 128; + if (negative) { + negate(bytes); + } + return parseInt(toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } + }; + function negate(bytes) { + for (let i5 = 0; i5 < 8; i5++) { + bytes[i5] ^= 255; + } + for (let i5 = 7; i5 > -1; i5--) { + bytes[i5]++; + if (bytes[i5] !== 0) + break; + } + } + __name(negate, "negate"); + var ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; + var CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; + var AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; + var SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; + var EXPIRES_QUERY_PARAM = "X-Amz-Expires"; + var SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; + var TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; + var REGION_SET_PARAM = "X-Amz-Region-Set"; + var AUTH_HEADER = "authorization"; + var AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase(); + var DATE_HEADER = "date"; + var GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER]; + var SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase(); + var SHA256_HEADER = "x-amz-content-sha256"; + var TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase(); + var HOST_HEADER = "host"; + var ALWAYS_UNSIGNABLE_HEADERS = { + authorization: true, + "cache-control": true, + connection: true, + expect: true, + from: true, + "keep-alive": true, + "max-forwards": true, + pragma: true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + "user-agent": true, + "x-amzn-trace-id": true + }; + var PROXY_HEADER_PATTERN = /^proxy-/; + var SEC_HEADER_PATTERN = /^sec-/; + var UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i]; + var ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; + var ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; + var EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; + var UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; + var MAX_CACHE_SIZE = 50; + var KEY_TYPE_IDENTIFIER = "aws4_request"; + var MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7; + var getCanonicalQuery = /* @__PURE__ */ __name(({ query = {} }) => { + const keys = []; + const serialized = {}; + for (const key in query) { + if (!hasOwn2(query, key)) + continue; + if (key.toLowerCase() === SIGNATURE_HEADER) { + continue; + } + const encodedKey = escapeUri2(key); + keys.push(encodedKey); + const value = query[key]; + if (typeof value === "string") { + serialized[encodedKey] = `${encodedKey}=${escapeUri2(value)}`; + } else if (Array.isArray(value)) { + serialized[encodedKey] = value.slice(0).reduce((encoded, value2) => encoded.concat([`${encodedKey}=${escapeUri2(value2)}`]), []).sort().join("&"); + } + } + return keys.sort().map((key) => serialized[key]).filter((serialized2) => serialized2).join("&"); + }, "getCanonicalQuery"); + var iso8601 = /* @__PURE__ */ __name((time3) => toDate(time3).toISOString().replace(/\.\d{3}Z$/, "Z"), "iso8601"); + var toDate = /* @__PURE__ */ __name((time3) => { + if (typeof time3 === "number") { + return new Date(time3 * 1e3); + } + if (typeof time3 === "string") { + if (Number(time3)) { + return new Date(Number(time3) * 1e3); + } + return new Date(time3); + } + return time3; + }, "toDate"); + var SignatureV4Base = class { + static { + __name(this, "SignatureV4Base"); + } + service; + regionProvider; + credentialProvider; + sha256; + uriEscapePath; + applyChecksum; + constructor({ applyChecksum, credentials, region, service, sha256: sha2562, uriEscapePath = true }) { + this.service = service; + this.sha256 = sha2562; + this.uriEscapePath = uriEscapePath; + this.applyChecksum = typeof applyChecksum === "boolean" ? applyChecksum : true; + this.regionProvider = normalizeProvider3(region); + this.credentialProvider = normalizeProvider3(credentials); + } + createCanonicalRequest(request, canonicalHeaders, payloadHash) { + const sortedHeaders = Object.keys(canonicalHeaders).sort(); + return `${request.method} +${this.getCanonicalPath(request)} +${getCanonicalQuery(request)} +${sortedHeaders.map((name2) => `${name2}:${canonicalHeaders[name2]}`).join("\n")} + +${sortedHeaders.join(";")} +${payloadHash}`; + } + async createStringToSign(longDate, credentialScope, canonicalRequest, algorithmIdentifier) { + const hash3 = new this.sha256(); + hash3.update(toUint8Array2(canonicalRequest)); + const hashedRequest = await hash3.digest(); + return `${algorithmIdentifier} +${longDate} +${credentialScope} +${toHex(hashedRequest)}`; + } + getCanonicalPath({ path: path2 }) { + if (this.uriEscapePath) { + const normalizedPathSegments = []; + for (const pathSegment of path2.split("/")) { + if (pathSegment?.length === 0) + continue; + if (pathSegment === ".") + continue; + if (pathSegment === "..") { + normalizedPathSegments.pop(); + } else { + normalizedPathSegments.push(pathSegment); + } + } + const normalizedPath = `${path2?.startsWith("/") ? "/" : ""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length > 0 && path2?.endsWith("/") ? "/" : ""}`; + const doubleEncoded = escapeUri2(normalizedPath); + return doubleEncoded.replace(/%2F/g, "/"); + } + return path2; + } + validateResolvedCredentials(credentials) { + if (typeof credentials !== "object" || typeof credentials.accessKeyId !== "string" || typeof credentials.secretAccessKey !== "string") { + throw new Error("Resolved credential object is not valid"); + } + } + formatDate(now) { + const longDate = iso8601(now).replace(/[-:]/g, ""); + return { + longDate, + shortDate: longDate.slice(0, 8) + }; + } + getCanonicalHeaderList(headers) { + return Object.keys(headers).sort().join(";"); + } + }; + var signingKeyCache = {}; + var cacheQueue = []; + var createScope = /* @__PURE__ */ __name((shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`, "createScope"); + var getSigningKey = /* @__PURE__ */ __name(async (sha256Constructor, credentials, shortDate, region, service) => { + const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId); + const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`; + if (cacheKey in signingKeyCache) { + return signingKeyCache[cacheKey]; + } + cacheQueue.push(cacheKey); + while (cacheQueue.length > MAX_CACHE_SIZE) { + delete signingKeyCache[cacheQueue.shift()]; + } + let key = `AWS4${credentials.secretAccessKey}`; + for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) { + key = await hmac(sha256Constructor, key, signable); + } + return signingKeyCache[cacheKey] = key; + }, "getSigningKey"); + var clearCredentialCache = /* @__PURE__ */ __name(() => { + cacheQueue.length = 0; + Object.keys(signingKeyCache).forEach((cacheKey) => { + delete signingKeyCache[cacheKey]; + }); + }, "clearCredentialCache"); + var hmac = /* @__PURE__ */ __name((ctor, secret, data) => { + const hash3 = new ctor(secret); + hash3.update(toUint8Array2(data)); + return hash3.digest(); + }, "hmac"); + var getCanonicalHeaders = /* @__PURE__ */ __name(({ headers }, unsignableHeaders, signableHeaders) => { + const canonical = {}; + for (const headerName of Object.keys(headers).sort()) { + if (headers[headerName] == void 0) { + continue; + } + const canonicalHeaderName = headerName.toLowerCase(); + if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || unsignableHeaders?.has(canonicalHeaderName) || PROXY_HEADER_PATTERN.test(canonicalHeaderName) || SEC_HEADER_PATTERN.test(canonicalHeaderName)) { + if (!signableHeaders || signableHeaders && !signableHeaders.has(canonicalHeaderName)) { + continue; + } + } + canonical[canonicalHeaderName] = headers[headerName].replace(/[\r\n]/g, " ").replace(/[ \t]+/g, " ").replace(/^ | $/g, ""); + } + return canonical; + }, "getCanonicalHeaders"); + var getPayloadHash = /* @__PURE__ */ __name(async ({ headers, body }, hashConstructor) => { + for (const headerName in headers) { + if (!hasOwn2(headers, headerName)) + continue; + if (headerName.toLowerCase() === SHA256_HEADER) { + return headers[headerName]; + } + } + if (body == void 0) { + return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; + } else if (typeof body === "string" || ArrayBuffer.isView(body) || isArrayBuffer2(body)) { + const hashCtor = new hashConstructor(); + hashCtor.update(toUint8Array2(body)); + return toHex(await hashCtor.digest()); + } + return UNSIGNED_PAYLOAD; + }, "getPayloadHash"); + var hasHeader2 = /* @__PURE__ */ __name((soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName in headers) { + if (!hasOwn2(headers, headerName)) + continue; + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; + }, "hasHeader"); + var moveHeadersToQuery = /* @__PURE__ */ __name((request, options = {}) => { + const { headers, query = {} } = HttpRequest2.clone(request); + for (const name2 in headers) { + if (!hasOwn2(headers, name2)) + continue; + const lname = name2.toLowerCase(); + if (lname.slice(0, 6) === "x-amz-" && !options.unhoistableHeaders?.has(lname) || options.hoistableHeaders?.has(lname)) { + query[name2] = headers[name2]; + delete headers[name2]; + } + } + return { + ...request, + headers, + query + }; + }, "moveHeadersToQuery"); + var prepareRequest = /* @__PURE__ */ __name((request) => { + request = HttpRequest2.clone(request); + for (const headerName in request.headers) { + if (!hasOwn2(request.headers, headerName)) + continue; + if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) { + delete request.headers[headerName]; + } + } + return request; + }, "prepareRequest"); + var SignatureV42 = class extends SignatureV4Base { + static { + __name(this, "SignatureV4"); + } + headerFormatter = new HeaderFormatter(); + constructor({ applyChecksum, credentials, region, service, sha256: sha2562, uriEscapePath = true }) { + super({ + applyChecksum, + credentials, + region, + service, + sha256: sha2562, + uriEscapePath + }); + } + async presign(originalRequest, options = {}) { + const { signingDate = /* @__PURE__ */ new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService } = options; + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? await this.regionProvider(); + const { longDate, shortDate } = this.formatDate(signingDate); + if (expiresIn > MAX_PRESIGNED_TTL) { + return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future"); + } + const scope = createScope(shortDate, region, signingService ?? this.service); + const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders }); + if (credentials.sessionToken) { + request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken; + } + request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER; + request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`; + request.query[AMZ_DATE_QUERY_PARAM] = longDate; + request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10); + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + request.query[SIGNED_HEADERS_QUERY_PARAM] = this.getCanonicalHeaderList(canonicalHeaders); + request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))); + return request; + } + async sign(toSign, options) { + if (typeof toSign === "string") { + return this.signString(toSign, options); + } else if (toSign.headers && toSign.payload) { + return this.signEvent(toSign, options); + } else if (toSign.message) { + return this.signMessage(toSign, options); + } else { + return this.signRequest(toSign, options); + } + } + async signEvent({ headers, payload }, { signingDate = /* @__PURE__ */ new Date(), priorSignature, signingRegion, signingService, eventStreamCredentials }) { + const region = signingRegion ?? await this.regionProvider(); + const { shortDate, longDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256); + const hash3 = new this.sha256(); + hash3.update(headers); + const hashedHeaders = toHex(await hash3.digest()); + const stringToSign = [ + EVENT_ALGORITHM_IDENTIFIER, + longDate, + scope, + priorSignature, + hashedHeaders, + hashedPayload + ].join("\n"); + return this.signString(stringToSign, { + signingDate, + signingRegion: region, + signingService, + eventStreamCredentials + }); + } + async signMessage(signableMessage, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService, eventStreamCredentials }) { + const promise2 = this.signEvent({ + headers: this.headerFormatter.format(signableMessage.message.headers), + payload: signableMessage.message.body + }, { + signingDate, + signingRegion, + signingService, + priorSignature: signableMessage.priorSignature, + eventStreamCredentials + }); + return promise2.then((signature) => { + return { message: signableMessage.message, signature }; + }); + } + async signString(stringToSign, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService, eventStreamCredentials } = {}) { + const credentials = eventStreamCredentials ?? await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? await this.regionProvider(); + const { shortDate } = this.formatDate(signingDate); + const hash3 = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService)); + hash3.update(toUint8Array2(stringToSign)); + return toHex(await hash3.digest()); + } + async signRequest(requestToSign, { signingDate = /* @__PURE__ */ new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? await this.regionProvider(); + const request = prepareRequest(requestToSign); + const { longDate, shortDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + request.headers[AMZ_DATE_HEADER] = longDate; + if (credentials.sessionToken) { + request.headers[TOKEN_HEADER] = credentials.sessionToken; + } + const payloadHash = await getPayloadHash(request, this.sha256); + if (!hasHeader2(SHA256_HEADER, request.headers) && this.applyChecksum) { + request.headers[SHA256_HEADER] = payloadHash; + } + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash)); + request.headers[AUTH_HEADER] = `${ALGORITHM_IDENTIFIER} Credential=${credentials.accessKeyId}/${scope}, SignedHeaders=${this.getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`; + return request; + } + async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) { + const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest, ALGORITHM_IDENTIFIER); + const hash3 = new this.sha256(await keyPromise); + hash3.update(toUint8Array2(stringToSign)); + return toHex(await hash3.digest()); + } + getSigningKey(credentials, region, shortDate, service) { + return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service); + } + }; + var signatureV4aContainer = { + SignatureV4a: null + }; + exports.ALGORITHM_IDENTIFIER = ALGORITHM_IDENTIFIER; + exports.ALGORITHM_IDENTIFIER_V4A = ALGORITHM_IDENTIFIER_V4A; + exports.ALGORITHM_QUERY_PARAM = ALGORITHM_QUERY_PARAM; + exports.ALWAYS_UNSIGNABLE_HEADERS = ALWAYS_UNSIGNABLE_HEADERS; + exports.AMZ_DATE_HEADER = AMZ_DATE_HEADER; + exports.AMZ_DATE_QUERY_PARAM = AMZ_DATE_QUERY_PARAM; + exports.AUTH_HEADER = AUTH_HEADER; + exports.CREDENTIAL_QUERY_PARAM = CREDENTIAL_QUERY_PARAM; + exports.DATE_HEADER = DATE_HEADER; + exports.EVENT_ALGORITHM_IDENTIFIER = EVENT_ALGORITHM_IDENTIFIER; + exports.EXPIRES_QUERY_PARAM = EXPIRES_QUERY_PARAM; + exports.GENERATED_HEADERS = GENERATED_HEADERS; + exports.HOST_HEADER = HOST_HEADER; + exports.KEY_TYPE_IDENTIFIER = KEY_TYPE_IDENTIFIER; + exports.MAX_CACHE_SIZE = MAX_CACHE_SIZE; + exports.MAX_PRESIGNED_TTL = MAX_PRESIGNED_TTL; + exports.PROXY_HEADER_PATTERN = PROXY_HEADER_PATTERN; + exports.REGION_SET_PARAM = REGION_SET_PARAM; + exports.SEC_HEADER_PATTERN = SEC_HEADER_PATTERN; + exports.SHA256_HEADER = SHA256_HEADER; + exports.SIGNATURE_HEADER = SIGNATURE_HEADER; + exports.SIGNATURE_QUERY_PARAM = SIGNATURE_QUERY_PARAM; + exports.SIGNED_HEADERS_QUERY_PARAM = SIGNED_HEADERS_QUERY_PARAM; + exports.SignatureV4 = SignatureV42; + exports.SignatureV4Base = SignatureV4Base; + exports.TOKEN_HEADER = TOKEN_HEADER; + exports.TOKEN_QUERY_PARAM = TOKEN_QUERY_PARAM; + exports.UNSIGNABLE_PATTERNS = UNSIGNABLE_PATTERNS; + exports.UNSIGNED_PAYLOAD = UNSIGNED_PAYLOAD; + exports.clearCredentialCache = clearCredentialCache; + exports.createScope = createScope; + exports.getCanonicalHeaders = getCanonicalHeaders; + exports.getCanonicalQuery = getCanonicalQuery; + exports.getPayloadHash = getPayloadHash; + exports.getSigningKey = getSigningKey; + exports.hasHeader = hasHeader2; + exports.moveHeadersToQuery = moveHeadersToQuery; + exports.prepareRequest = prepareRequest; + exports.signatureV4aContainer = signatureV4aContainer; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+signature-v4-multi-region@3.996.48/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js +var require_dist_cjs3 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+signature-v4-multi-region@3.996.48/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js"(exports) { + var { SignatureV4: SignatureV42, signatureV4aContainer } = require_dist_cjs2(); + var signatureV4CrtContainer = { + CrtSignerV4: null + }; + var SESSION_TOKEN_QUERY_PARAM2 = "X-Amz-S3session-Token"; + var SESSION_TOKEN_HEADER2 = SESSION_TOKEN_QUERY_PARAM2.toLowerCase(); + var SignatureV4SignWithCredentials2 = class extends SignatureV42 { + static { + __name(this, "SignatureV4SignWithCredentials"); + } + async signWithCredentials(requestToSign, credentials, options) { + const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials); + requestToSign.headers[SESSION_TOKEN_HEADER2] = credentials.sessionToken; + const privateAccess = this; + setSingleOverride(privateAccess, credentialsWithoutSessionToken); + return privateAccess.signRequest(requestToSign, options ?? {}); + } + async presignWithCredentials(requestToSign, credentials, options) { + const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials); + delete requestToSign.headers[SESSION_TOKEN_HEADER2]; + requestToSign.headers[SESSION_TOKEN_QUERY_PARAM2] = credentials.sessionToken; + requestToSign.query = requestToSign.query ?? {}; + requestToSign.query[SESSION_TOKEN_QUERY_PARAM2] = credentials.sessionToken; + const privateAccess = this; + setSingleOverride(privateAccess, credentialsWithoutSessionToken); + return this.presign(requestToSign, options); + } + }; + function getCredentialsWithoutSessionToken(credentials) { + return { + accessKeyId: credentials.accessKeyId, + secretAccessKey: credentials.secretAccessKey, + expiration: credentials.expiration + }; + } + __name(getCredentialsWithoutSessionToken, "getCredentialsWithoutSessionToken"); + function setSingleOverride(privateAccess, credentialsWithoutSessionToken) { + const currentCredentialProvider = privateAccess.credentialProvider; + privateAccess.credentialProvider = () => { + privateAccess.credentialProvider = currentCredentialProvider; + return Promise.resolve(credentialsWithoutSessionToken); + }; + } + __name(setSingleOverride, "setSingleOverride"); + var SignatureV4MultiRegion3 = class { + static { + __name(this, "SignatureV4MultiRegion"); + } + sigv4aSigner; + sigv4Signer; + signerOptions; + static sigv4aDependency() { + if (typeof signatureV4CrtContainer.CrtSignerV4 === "function") { + return "crt"; + } else if (typeof signatureV4aContainer.SignatureV4a === "function") { + return "js"; + } + return "none"; + } + constructor(options) { + this.sigv4Signer = new SignatureV4SignWithCredentials2(options); + this.signerOptions = options; + } + async sign(requestToSign, options = {}) { + if (options.signingRegion === "*") { + return this.getSigv4aSigner().sign(requestToSign, options); + } + return this.sigv4Signer.sign(requestToSign, options); + } + async signWithCredentials(requestToSign, credentials, options = {}) { + if (options.signingRegion === "*") { + const signer = this.getSigv4aSigner(); + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + if (CrtSignerV4 && signer instanceof CrtSignerV4) { + return signer.signWithCredentials(requestToSign, credentials, options); + } else { + throw new Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`); + } + } + return this.sigv4Signer.signWithCredentials(requestToSign, credentials, options); + } + async presign(originalRequest, options = {}) { + if (options.signingRegion === "*") { + const signer = this.getSigv4aSigner(); + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + if (CrtSignerV4 && signer instanceof CrtSignerV4) { + return signer.presign(originalRequest, options); + } else { + throw new Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`); + } + } + return this.sigv4Signer.presign(originalRequest, options); + } + async presignWithCredentials(originalRequest, credentials, options = {}) { + if (options.signingRegion === "*") { + throw new Error("Method presignWithCredentials is not supported for [signingRegion=*]."); + } + return this.sigv4Signer.presignWithCredentials(originalRequest, credentials, options); + } + getSigv4aSigner() { + if (!this.sigv4aSigner) { + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + const JsSigV4aSigner = signatureV4aContainer.SignatureV4a; + if (this.signerOptions.runtime === "node") { + if (!CrtSignerV4 && !JsSigV4aSigner) { + throw new Error("Neither CRT nor JS SigV4a implementation is available. Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt"); + } + if (CrtSignerV4 && typeof CrtSignerV4 === "function") { + this.sigv4aSigner = new CrtSignerV4({ + ...this.signerOptions, + signingAlgorithm: 1 + }); + } else if (JsSigV4aSigner && typeof JsSigV4aSigner === "function") { + this.sigv4aSigner = new JsSigV4aSigner({ + ...this.signerOptions + }); + } else { + throw new Error("Available SigV4a implementation is not a valid constructor. Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a.For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt"); + } + } else { + if (!JsSigV4aSigner || typeof JsSigV4aSigner !== "function") { + throw new Error("JS SigV4a implementation is not available or not a valid constructor. Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. You must also register the package by calling [require('@aws-sdk/signature-v4a');] or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. For more information please go to https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a"); + } + this.sigv4aSigner = new JsSigV4aSigner({ + ...this.signerOptions + }); + } + } + return this.sigv4aSigner; + } + }; + exports.SignatureV4MultiRegion = SignatureV4MultiRegion3; + exports.SignatureV4SignWithCredentials = SignatureV4SignWithCredentials2; + exports.signatureV4CrtContainer = signatureV4CrtContainer; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/SignatureV4S3Express.js +var import_signature_v4_multi_region, SignatureV4S3Express; +var init_SignatureV4S3Express = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/classes/SignatureV4S3Express.js"() { + import_signature_v4_multi_region = __toESM(require_dist_cjs3()); + SignatureV4S3Express = class extends import_signature_v4_multi_region.SignatureV4SignWithCredentials { + static { + __name(this, "SignatureV4S3Express"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/constants.js +var S3_EXPRESS_BUCKET_TYPE, S3_EXPRESS_BACKEND, S3_EXPRESS_AUTH_SCHEME, SESSION_TOKEN_QUERY_PARAM, SESSION_TOKEN_HEADER, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS; +var init_constants5 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/constants.js"() { + init_config(); + S3_EXPRESS_BUCKET_TYPE = "Directory"; + S3_EXPRESS_BACKEND = "S3Express"; + S3_EXPRESS_AUTH_SCHEME = "sigv4-s3express"; + SESSION_TOKEN_QUERY_PARAM = "X-Amz-S3session-Token"; + SESSION_TOKEN_HEADER = SESSION_TOKEN_QUERY_PARAM.toLowerCase(); + NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH"; + NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = "s3_disable_express_session_auth"; + NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => booleanSelector(env3, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME, SelectorType.CONFIG), "configFileSelector"), + default: false + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/functions/s3ExpressMiddleware.js +var s3ExpressMiddleware, s3ExpressMiddlewareOptions, getS3ExpressPlugin; +var init_s3ExpressMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/functions/s3ExpressMiddleware.js"() { + init_client2(); + init_protocols(); + init_constants5(); + s3ExpressMiddleware = /* @__PURE__ */ __name((options) => { + return (next, context) => async (args) => { + if (context.endpointV2) { + const endpoint = context.endpointV2; + const isS3ExpressAuth = endpoint.properties?.authSchemes?.[0]?.name === S3_EXPRESS_AUTH_SCHEME; + const isS3ExpressBucket = endpoint.properties?.backend === S3_EXPRESS_BACKEND || endpoint.properties?.bucketType === S3_EXPRESS_BUCKET_TYPE; + if (isS3ExpressBucket) { + setFeature(context, "S3_EXPRESS_BUCKET", "J"); + context.isS3ExpressBucket = true; + } + if (isS3ExpressAuth) { + const requestBucket = args.input.Bucket; + if (requestBucket) { + const s3ExpressIdentity = await options.s3ExpressIdentityProvider.getS3ExpressIdentity(await options.credentials(), { + Bucket: requestBucket + }); + context.s3ExpressIdentity = s3ExpressIdentity; + if (HttpRequest.isInstance(args.request) && s3ExpressIdentity.sessionToken) { + args.request.headers[SESSION_TOKEN_HEADER] = s3ExpressIdentity.sessionToken; + } + } + } + } + return next(args); + }; + }, "s3ExpressMiddleware"); + s3ExpressMiddlewareOptions = { + name: "s3ExpressMiddleware", + step: "build", + tags: ["S3", "S3_EXPRESS"], + override: true + }; + getS3ExpressPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(s3ExpressMiddleware(options), s3ExpressMiddlewareOptions); + }, "applyToStack") + }), "getS3ExpressPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/functions/signS3Express.js +var signS3Express; +var init_signS3Express = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/functions/signS3Express.js"() { + signS3Express = /* @__PURE__ */ __name(async (s3ExpressIdentity, signingOptions, request, sigV4MultiRegionSigner) => { + const signedRequest = await sigV4MultiRegionSigner.signWithCredentials(request, s3ExpressIdentity, {}); + if (signedRequest.headers["X-Amz-Security-Token"] || signedRequest.headers["x-amz-security-token"]) { + throw new Error("X-Amz-Security-Token must not be set for s3-express requests."); + } + return signedRequest; + }, "signS3Express"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/functions/s3ExpressHttpSigningMiddleware.js +var defaultErrorHandler2, defaultSuccessHandler2, s3ExpressHttpSigningMiddlewareOptions, s3ExpressHttpSigningMiddleware, getS3ExpressHttpSigningPlugin; +var init_s3ExpressHttpSigningMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-s3-express/functions/s3ExpressHttpSigningMiddleware.js"() { + init_dist_es(); + init_client(); + init_protocols(); + init_signS3Express(); + defaultErrorHandler2 = /* @__PURE__ */ __name((signingProperties) => (error62) => { + throw error62; + }, "defaultErrorHandler"); + defaultSuccessHandler2 = /* @__PURE__ */ __name((httpResponse, signingProperties) => { + }, "defaultSuccessHandler"); + s3ExpressHttpSigningMiddlewareOptions = httpSigningMiddlewareOptions; + s3ExpressHttpSigningMiddleware = /* @__PURE__ */ __name((config3) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer } = scheme; + let request; + if (context.s3ExpressIdentity) { + request = await signS3Express(context.s3ExpressIdentity, signingProperties, args.request, await config3.signer()); + } else { + request = await signer.sign(args.request, identity, signingProperties); + } + const output2 = await next({ + ...args, + request + }).catch((signer.errorHandler || defaultErrorHandler2)(signingProperties)); + (signer.successHandler || defaultSuccessHandler2)(output2.response, signingProperties); + return output2; + }, "s3ExpressHttpSigningMiddleware"); + getS3ExpressHttpSigningPlugin = /* @__PURE__ */ __name((config3) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(s3ExpressHttpSigningMiddleware(config3), httpSigningMiddlewareOptions); + }, "applyToStack") + }), "getS3ExpressHttpSigningPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/to-stream/toStream.js +import { Readable as Readable2 } from "node:stream"; +function toStream(bytes) { + return Readable2.from(Buffer.from(bytes)); +} +var init_toStream = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/to-stream/toStream.js"() { + __name(toStream, "toStream"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-throw-200-exceptions/throw-200-exceptions.js +var THROW_IF_EMPTY_BODY, throw200ExceptionsMiddleware, collectBody2, throw200ExceptionsMiddlewareOptions, getThrow200ExceptionsPlugin; +var init_throw_200_exceptions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-throw-200-exceptions/throw-200-exceptions.js"() { + init_protocols(); + init_toStream(); + THROW_IF_EMPTY_BODY = { + CopyObjectCommand: true, + UploadPartCopyCommand: true, + CompleteMultipartUploadCommand: true + }; + throw200ExceptionsMiddleware = /* @__PURE__ */ __name((config3) => (next, context) => async (args) => { + const result = await next(args); + const { response } = result; + if (!HttpResponse.isInstance(response)) { + return result; + } + const { statusCode, body } = response; + if (statusCode < 200 || statusCode >= 300) { + return result; + } + const bodyBytes = await collectBody2(body, config3); + response.body = toStream(bodyBytes); + if (bodyBytes.length === 0 && THROW_IF_EMPTY_BODY[context.commandName]) { + const err = new Error("S3 aborted request"); + err.$metadata = { + httpStatusCode: 503 + }; + err.name = "InternalError"; + throw err; + } + const bodyStringTail = config3.utf8Encoder(bodyBytes.subarray(bodyBytes.length - 16)); + if (bodyStringTail && bodyStringTail.endsWith("")) { + response.statusCode = 503; + } + return result; + }, "throw200ExceptionsMiddleware"); + collectBody2 = /* @__PURE__ */ __name((streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return Promise.resolve(streamBody); + } + return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array()); + }, "collectBody"); + throw200ExceptionsMiddlewareOptions = { + relation: "after", + toMiddleware: "deserializerMiddleware", + tags: ["THROW_200_EXCEPTIONS", "S3"], + name: "throw200ExceptionsMiddleware", + override: true + }; + getThrow200ExceptionsPlugin = /* @__PURE__ */ __name((config3) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(throw200ExceptionsMiddleware(config3), throw200ExceptionsMiddlewareOptions); + }, "applyToStack") + }), "getThrow200ExceptionsPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/util/util-arn-parser/arn.js +var validate2, parse3; +var init_arn = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/util/util-arn-parser/arn.js"() { + validate2 = /* @__PURE__ */ __name((str) => typeof str === "string" && str.indexOf("arn:") === 0 && str.split(":").length >= 6, "validate"); + parse3 = /* @__PURE__ */ __name((arn) => { + const segments = arn.split(":"); + if (segments.length < 6 || segments[0] !== "arn") + throw new Error("Malformed ARN"); + const [, partition2, service, region, accountId, ...resource] = segments; + return { + partition: partition2, + service, + region, + accountId, + resource: resource.join(":") + }; + }, "parse"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/util/index.js +var init_util2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/util/index.js"() { + init_arn(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-region-redirect/bucket-endpoint-middleware.js +function bucketEndpointMiddleware(options) { + return (next, context) => async (args) => { + if (options.bucketEndpoint) { + const endpoint = context.endpointV2; + if (endpoint) { + const bucket = args.input.Bucket; + if (typeof bucket === "string") { + try { + const bucketEndpointUrl = new URL(bucket); + context.endpointV2 = { + ...endpoint, + url: bucketEndpointUrl + }; + } catch (e5) { + const warning2 = `@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${bucket} could not be parsed as URL.`; + if (context.logger?.constructor?.name === "NoOpLogger") { + console.warn(warning2); + } else { + context.logger?.warn?.(warning2); + } + throw e5; + } + } + } + } + return next(args); + }; +} +var bucketEndpointMiddlewareOptions; +var init_bucket_endpoint_middleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-region-redirect/bucket-endpoint-middleware.js"() { + __name(bucketEndpointMiddleware, "bucketEndpointMiddleware"); + bucketEndpointMiddlewareOptions = { + name: "bucketEndpointMiddleware", + override: true, + relation: "after", + toMiddleware: "endpointV2Middleware" + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-validate-bucket-name/validate-bucket-name.js +function validateBucketNameMiddleware({ bucketEndpoint }) { + return (next) => async (args) => { + const { input: { Bucket } } = args; + if (!bucketEndpoint && typeof Bucket === "string" && !validate2(Bucket) && Bucket.indexOf("/") >= 0) { + const err = new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`); + err.name = "InvalidBucketName"; + throw err; + } + return next({ ...args }); + }; +} +var validateBucketNameMiddlewareOptions, getValidateBucketNamePlugin; +var init_validate_bucket_name = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-validate-bucket-name/validate-bucket-name.js"() { + init_util2(); + init_bucket_endpoint_middleware(); + __name(validateBucketNameMiddleware, "validateBucketNameMiddleware"); + validateBucketNameMiddlewareOptions = { + step: "initialize", + tags: ["VALIDATE_BUCKET_NAME"], + name: "validateBucketNameMiddleware", + override: true + }; + getValidateBucketNamePlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(validateBucketNameMiddleware(options), validateBucketNameMiddlewareOptions); + clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions); + }, "applyToStack") + }), "getValidateBucketNamePlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +var ProtocolLib; +var init_ProtocolLib = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js"() { + init_client(); + init_schema(); + ProtocolLib = class { + static { + __name(this, "ProtocolLib"); + } + queryCompat; + errorRegistry; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members2 = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members2).find((m3) => { + return !!m3.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } else { + return defaultContentType; + } + } else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members2).find((m3) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m3.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server" + }; + if (!this.errorRegistry) { + throw new Error("@aws-sdk/core/protocols - error handler not initialized."); + } + try { + const errorSchema = getErrorSchema?.(this.errorRegistry, errorName) ?? this.errorRegistry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } catch (e5) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = this.errorRegistry; + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + const d5 = dataObject; + const message = d5?.message ?? d5?.Message ?? d5?.Error?.Message ?? d5?.Error?.message; + throw this.decorateServiceException(Object.assign(new Error(message), { + name: errorName + }, errorMetadata), dataObject); + } + } + compose(composite, errorIdentifier, defaultNamespace) { + let namespace = defaultNamespace; + if (errorIdentifier.includes("#")) { + [namespace] = errorIdentifier.split("#"); + } + const staticRegistry = TypeRegistry.for(namespace); + const defaultSyntheticRegistry = TypeRegistry.for("smithy.ts.sdk.synthetic." + defaultNamespace); + composite.copyFrom(staticRegistry); + composite.copyFrom(defaultSyntheticRegistry); + this.errorRegistry = composite; + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error62 = decorateServiceException(exception, additions); + if (msg) { + error62.message = msg; + } + const errorObj = error62.Error ?? {}; + errorObj.Type = error62.Error?.Type; + errorObj.Code = error62.Error?.Code; + errorObj.Message = error62.Error?.message ?? error62.Error?.Message ?? msg; + error62.Error = errorObj; + const reqId = error62.$metadata.requestId; + if (reqId) { + error62.RequestId = reqId; + } + return error62; + } + return decorateServiceException(exception, additions); + } + setQueryCompatError(output2, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output2 !== void 0 && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const keys = Object.keys(output2); + const Error2 = { + Code, + Type + }; + output2.Code = Code; + output2.Type = Type; + for (let i5 = 0; i5 < keys.length; i5++) { + const k5 = keys[i5]; + Error2[k5 === "message" ? "Message" : k5] = output2[k5]; + } + delete Error2.__type; + output2.Error = Error2; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry2, errorName) { + try { + return registry2.getSchema(errorName); + } catch (e5) { + return registry2.find((schema2) => NormalizedSchema.of(schema2).getMergedTraits().awsQueryError?.[0] === errorName); + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +var AwsRestJsonProtocol; +var init_AwsRestJsonProtocol = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js"() { + init_protocols(); + init_schema(); + init_ProtocolLib(); + AwsRestJsonProtocol = class extends HttpBindingProtocol { + static { + __name(this, "AwsRestJsonProtocol"); + } + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace, errorTypeRegistries: errorTypeRegistries5, jsonCodec }) { + super({ + defaultNamespace, + errorTypeRegistries: errorTypeRegistries5 + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7 + }, + httpBindings: true, + jsonName: true + }; + this.codec = jsonCodec ?? new JsonCodec2(settings); + this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input2, context) { + const request = await super.serializeRequest(operationSchema, input2, context); + const inputSchema = NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output2 = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = NormalizedSchema.of(operationSchema.output); + for (const [name2, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name2 in output2)) { + output2[name2] = null; + } + } + return output2; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor({}); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output2 = {}; + const errorDeserializer = this.codec.createDeserializer(); + for (const [name2, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name2; + output2[name2] = errorDeserializer.readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message + }, output2), dataObject); + } + getDefaultContentType() { + return "application/json"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+xml-builder@3.972.41/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +var require_dist_cjs4 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+xml-builder@3.972.41/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js"(exports) { + var ATTR_ESCAPE_RE = /[&<>"]/g; + var ATTR_ESCAPE_MAP = { + "&": "&", + "<": "<", + ">": ">", + '"': """ + }; + function escapeAttribute(value) { + return value.replace(ATTR_ESCAPE_RE, (ch) => ATTR_ESCAPE_MAP[ch]); + } + __name(escapeAttribute, "escapeAttribute"); + var ELEMENT_ESCAPE_RE = /[&"'<>\r\n\u0085\u2028]/g; + var ELEMENT_ESCAPE_MAP = { + "&": "&", + '"': """, + "'": "'", + "<": "<", + ">": ">", + "\r": " ", + "\n": " ", + "\x85": "…", + "\u2028": "
" + }; + function escapeElement(value) { + return value.replace(ELEMENT_ESCAPE_RE, (ch) => ELEMENT_ESCAPE_MAP[ch]); + } + __name(escapeElement, "escapeElement"); + var XmlText2 = class { + static { + __name(this, "XmlText"); + } + value; + constructor(value) { + this.value = value; + } + toString() { + return escapeElement("" + this.value); + } + }; + var XmlNode2 = class _XmlNode { + static { + __name(this, "XmlNode"); + } + name; + children; + attributes = {}; + static of(name2, childText, withName) { + const node2 = new _XmlNode(name2); + if (childText !== void 0) { + node2.addChildNode(new XmlText2(childText)); + } + if (withName !== void 0) { + node2.withName(withName); + } + return node2; + } + constructor(name2, children = []) { + this.name = name2; + this.children = children; + } + withName(name2) { + this.name = name2; + return this; + } + addAttribute(name2, value) { + this.attributes[name2] = value; + return this; + } + addChildNode(child) { + this.children.push(child); + return this; + } + removeAttribute(name2) { + delete this.attributes[name2]; + return this; + } + n(name2) { + this.name = name2; + return this; + } + c(child) { + this.children.push(child); + return this; + } + a(name2, value) { + if (value != null) { + this.attributes[name2] = value; + } + return this; + } + cc(input2, field, withName = field) { + if (input2[field] != null) { + const node2 = _XmlNode.of(field, input2[field]).withName(withName); + this.c(node2); + } + } + l(input2, listName, memberName, valueProvider) { + if (input2[listName] != null) { + const nodes5 = valueProvider(); + nodes5.map((node2) => { + node2.withName(memberName); + this.c(node2); + }); + } + } + lc(input2, listName, memberName, valueProvider) { + if (input2[listName] != null) { + const nodes5 = valueProvider(); + const containerNode = new _XmlNode(memberName); + nodes5.map((node2) => { + containerNode.c(node2); + }); + this.c(containerNode); + } + } + toString() { + const hasChildren = Boolean(this.children.length); + let xmlText = `<${this.name}`; + const attributes = this.attributes; + for (const attributeName of Object.keys(attributes)) { + const attribute = attributes[attributeName]; + if (attribute != null) { + xmlText += ` ${attributeName}="${escapeAttribute("" + attribute)}"`; + } + } + return xmlText += !hasChildren ? "/>" : `>${this.children.map((c5) => c5.toString()).join("")}`; + } + }; + function writeKey3(obj) { + Object.defineProperty(obj, "__proto__", { value: void 0, writable: true, enumerable: true, configurable: true }); + } + __name(writeKey3, "writeKey"); + function parseXML2(xml) { + const state2 = new AwsXmlParser(xml); + return state2.parse(); + } + __name(parseXML2, "parseXML"); + var AwsXmlParser = class _AwsXmlParser { + static { + __name(this, "AwsXmlParser"); + } + x; + i = 0; + z; + constructor(x) { + this.x = x; + this.x = x.replace(/\r\n?/g, "\n"); + this.z = this.x.length; + } + parse() { + const p3 = this; + const { z: z2 } = p3; + while (p3.i < z2) { + p3.trim(); + if (p3.i >= z2) { + break; + } + if (p3.isNext(""); + p3.trim(); + } else if (p3.isNext(""); + p3.trim(); + } else if (p3.isNext("/".includes(p3.x[p3.i])) { + tag += p3.x[p3.i++]; + } + let hasAttrs = false; + const attrs = {}; + while (p3.i < p3.z) { + p3.trim(); + if (">/".includes(p3.x[p3.i])) { + break; + } + let name2 = ""; + while (p3.i < p3.z && !"= \r\n>/?".includes(p3.x[p3.i])) { + name2 += p3.x[p3.i++]; + } + p3.trim(); + if (p3.x[p3.i] !== "=") { + break; + } + ++p3.i; + p3.trim(); + if (name2 === "__proto__") { + writeKey3(attrs); + } + attrs[name2] = p3.readAttrValue(); + hasAttrs = true; + } + if (p3.i >= p3.z) { + throw new Error("@aws-sdk XML parse error: unexpected end of input."); + } + if (p3.x[p3.i] === "/") { + ++p3.i; + if (p3.i >= p3.z || p3.x[p3.i] !== ">") { + throw new Error("@aws-sdk XML parse error: expected > at the end of self-closing tag."); + } + ++p3.i; + return { tag, value: hasAttrs ? attrs : "" }; + } + if (p3.x[p3.i] !== ">") { + throw new Error("@aws-sdk XML parse error: expected > at the end of opening tag."); + } + ++p3.i; + const textParts = []; + const childTags = []; + let hasElementChild = false; + while (p3.i < p3.z) { + if (p3.isNext(""); + } else if (p3.isNext("")); + } else if (p3.isNext(""); + } else { + hasElementChild = true; + childTags.push(p3.parseTag()); + } + } else { + let text2 = ""; + while (p3.i < p3.z && p3.x[p3.i] !== "<") { + text2 += p3.x[p3.i++]; + } + textParts.push(p3.decodeEntities(text2)); + } + } + if (!p3.isNext(".`); + } + p3.i += 2; + const closeTag = p3.readTo(">").trim(); + if (closeTag !== tag) { + throw new Error(`@aws-sdk XML parse error: mismatched tags <${tag}> and .`); + } + if (!hasAttrs && textParts.length === 0 && !hasElementChild) { + return { tag, value: "" }; + } + if (!hasAttrs && !hasElementChild) { + const text2 = textParts.length === 1 ? textParts[0] : textParts.join(""); + if (text2.trim() === "" && text2.includes("\n")) { + return { tag, value: "" }; + } + return { tag, value: text2 }; + } + const obj = {}; + for (const text2 of textParts) { + if (text2.trim() === "" && text2.includes("\n")) { + continue; + } + obj["#text"] = "#text" in obj ? obj["#text"] + text2 : text2; + } + for (const child of childTags) { + if (child.tag === "__proto__") { + writeKey3(obj); + } + if (child.tag in obj) { + if (Array.isArray(obj[child.tag])) { + obj[child.tag].push(child.value); + } else { + obj[child.tag] = [obj[child.tag], child.value]; + } + } else { + obj[child.tag] = child.value; + } + } + for (const [k5, v] of Object.entries(attrs)) { + if (k5 === "__proto__") { + writeKey3(obj); + } + obj[k5] = v; + } + return { tag, value: obj }; + } + static ENTITIES = { + amp: "&", + lt: "<", + gt: ">", + quot: '"', + apos: "'" + }; + skipDoctype() { + const p3 = this; + p3.i += 9; + let depth = 0; + while (p3.i < p3.z) { + const c5 = p3.x[p3.i]; + if (c5 === "[") { + ++depth; + } else if (c5 === "]") { + --depth; + } else if (c5 === ">" && depth === 0) { + ++p3.i; + return; + } + ++p3.i; + } + throw new Error("@aws-sdk XML parse error: unclosed DOCTYPE."); + } + decodeEntities(s2) { + return s2.replace(/&(?:#x([0-9a-fA-F]{1,6})|#(\d{1,7})|([a-zA-Z][a-zA-Z0-9]{0,30}));/g, (_, hex3, dec, named) => { + if (hex3) { + return String.fromCharCode(parseInt(hex3, 16)); + } + if (dec) { + return String.fromCharCode(parseInt(dec, 10)); + } + return _AwsXmlParser.ENTITIES[named] ?? ""; + }); + } + }; + exports.XmlNode = XmlNode2; + exports.XmlText = XmlText2; + exports.parseXML = parseXML2; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js +var SerdeContextConfig2; +var init_ConfigurableSerdeContext2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js"() { + SerdeContextConfig2 = class { + static { + __name(this, "SerdeContextConfig"); + } + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js +var UnionSerde2; +var init_UnionSerde2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js"() { + UnionSerde2 = class { + static { + __name(this, "UnionSerde"); + } + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + const keys = Object.keys(this.from); + const set2 = new Set(keys); + set2.delete("__type"); + this.keys = set2; + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k5 = this.keys.values().next().value; + const v = this.from[k5]; + this.to.$unknown = [k5, v]; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/writeKey.js +function writeKey2(obj) { + Object.defineProperty(obj, "__proto__", { value: void 0, writable: true, enumerable: true, configurable: true }); +} +var init_writeKey2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/writeKey.js"() { + __name(writeKey2, "writeKey"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js +var import_xml_builder, XmlShapeDeserializer; +var init_XmlShapeDeserializer = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js"() { + import_xml_builder = __toESM(require_dist_cjs4()); + init_client(); + init_protocols(); + init_schema(); + init_serde(); + init_ConfigurableSerdeContext2(); + init_UnionSerde2(); + init_writeKey2(); + XmlShapeDeserializer = class extends SerdeContextConfig2 { + static { + __name(this, "XmlShapeDeserializer"); + } + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema2, bytes, key) { + const ns = NormalizedSchema.of(schema2); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && ns.isMemberSchema() && !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output2 = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output2[memberName] = bytes; + } else { + output2[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output2; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema2, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer2 = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer2; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer2.push(this.readSchema(listValue, v)); + } + return buffer2; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value2 = entry[valueProperty]; + if (key === "__proto__") { + writeKey2(buffer); + } + buffer[key] = this.readSchema(memberNs, value2); + } + return buffer; + } + if (ns.isStructSchema()) { + const union2 = ns.isUnionSchema(); + let unionSerde; + if (union2) { + unionSerde = new UnionSerde2(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload ? memberSchema.getMemberTraits().xmlName ?? memberName : memberTraits.xmlName ?? memberSchema.getName(); + if (union2) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union2) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = (0, import_xml_builder.parseXML)(xml); + } catch (e5) { + if (e5 && typeof e5 === "object") { + Object.defineProperty(e5, "$responseBodyText", { + value: xml + }); + } + throw e5; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return getValueFromTextNode(parsedObjToReturn); + } + return {}; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js +var QueryShapeSerializer; +var init_QueryShapeSerializer = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js"() { + init_protocols(); + init_schema(); + init_serde(); + init_serde(); + init_ConfigurableSerdeContext2(); + QueryShapeSerializer = class extends SerdeContextConfig2 { + static { + __name(this, "QueryShapeSerializer"); + } + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema2, value, prefix = "") { + if (this.buffer === void 0) { + this.buffer = ""; + } + const ns = NormalizedSchema.of(schema2); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? toBase64)(value)); + } + } else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(generateIdempotencyToken()); + } + } else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof NumericValue ? value.string : String(value)); + } + } else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1e3)); + break; + } + } + } else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } else if (value instanceof Date) { + this.write(4, value, prefix); + } else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i5 = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i5}` : `${prefix}${suffix}.${i5}`; + this.write(member, item, key); + ++i5; + } + } + } + } else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i5 = 1; + for (const k5 in value) { + const v = value[k5]; + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i5}.${keySuffix}` : `${prefix}entry.${i5}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i5}.${valueSuffix}` : `${prefix}entry.${i5}.${valueSuffix}`; + this.write(keySchema, k5, key); + this.write(memberSchema, v, valueKey); + ++i5; + } + } + } else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k5, v] = $unknown; + const key = `${prefix}${k5}`; + this.write(15, v, key); + } + } + } + } else if (ns.isUnitSchema()) { + } else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === void 0) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += extendedEncodeURIComponent(value); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +var AwsQueryProtocol; +var init_AwsQueryProtocol = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js"() { + init_protocols(); + init_schema(); + init_ProtocolLib(); + init_XmlShapeDeserializer(); + init_QueryShapeSerializer(); + AwsQueryProtocol = class extends RpcProtocol { + static { + __name(this, "AwsQueryProtocol"); + } + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + errorTypeRegistries: options.errorTypeRegistries + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5 + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input2, context) { + const request = await super.serializeRequest(operationSchema, input2, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + request.headers["content-type"] = "application/x-www-form-urlencoded"; + if (deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes2 = await collectBody(response.body, context); + if (bytes2.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes2)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : void 0; + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = NormalizedSchema.of(errorSchema); + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor({}); + const output2 = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error + }; + for (const [name2, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name2; + const value = errorData[target] ?? dataObject[target]; + output2[name2] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message + }, output2), dataObject); + } + loadQueryErrorCode(output2, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== void 0) { + return code; + } + if (output2.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js +var loadRestXmlErrorCode; +var init_parseXmlBody = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js"() { + loadRestXmlErrorCode = /* @__PURE__ */ __name((output2, data) => { + if (data?.Error?.Code !== void 0) { + return data.Error.Code; + } + if (data?.Code !== void 0) { + return data.Code; + } + if (output2.statusCode == 404) { + return "NotFound"; + } + }, "loadRestXmlErrorCode"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js +var import_xml_builder2, XmlShapeSerializer; +var init_XmlShapeSerializer = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js"() { + import_xml_builder2 = __toESM(require_dist_cjs4()); + init_protocols(); + init_schema(); + init_serde(); + init_serde(); + init_ConfigurableSerdeContext2(); + XmlShapeSerializer = class extends SerdeContextConfig2 { + static { + __name(this, "XmlShapeSerializer"); + } + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema2, value) { + const ns = NormalizedSchema.of(schema2); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } else if (ns.isBlobSchema()) { + this.byteBuffer = "byteLength" in value ? value : (this.serdeContext?.base64Decoder ?? fromBase64)(value); + } else { + this.buffer = this.writeStruct(ns, value, void 0); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== void 0) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== void 0) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name2 = ns.isMemberSchema() && !traits.httpPayload ? ns.getMemberTraits().xmlName ?? ns.getMemberName() : traits.xmlName ?? ns.getName(); + if (!name2 || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = import_xml_builder2.XmlNode.of(name2); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } else { + const memberNode = import_xml_builder2.XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k5, v] = $unknown; + const node2 = import_xml_builder2.XmlNode.of(k5); + if (typeof v !== "string") { + if (value instanceof import_xml_builder2.XmlNode || value instanceof import_xml_builder2.XmlText) { + structXmlNode.addChildNode(value); + } else { + throw new Error(`@aws-sdk - $unknown union member in XML requires value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node2, xmlns); + structXmlNode.addChildNode(node2); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array2, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = /* @__PURE__ */ __name((container2, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container2, xmlns); + } else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container2, xmlns); + } else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container2.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } else { + const listItemNode = import_xml_builder2.XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container2.addChildNode(listItemNode); + } + }, "writeItem"); + if (flat) { + for (const value of array2) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } else { + const listNode = import_xml_builder2.XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array2) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map2, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = /* @__PURE__ */ __name((entry, key, val) => { + const keyNode = import_xml_builder2.XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = import_xml_builder2.XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }, "addKeyValue"); + if (flat) { + for (const key in map2) { + const val = map2[key]; + if (sparse || val != null) { + const entry = import_xml_builder2.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } else { + let mapNode; + if (!containerIsMap) { + mapNode = import_xml_builder2.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const key in map2) { + const val = map2[key]; + if (sparse || val != null) { + const entry = import_xml_builder2.XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? toBase64)(value); + } else if (ns.isTimestampSchema() && value instanceof Date) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1e3); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = dateToUtcString(value); + break; + } + } else if (ns.isBigDecimalSchema() && value) { + if (value instanceof NumericValue) { + return value.string; + } + return String(value); + } else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === void 0 && ns.isIdempotencyToken()) { + nodeContents = generateIdempotencyToken(); + } else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = NormalizedSchema.of(_schema); + const content = new import_xml_builder2.XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js +var XmlCodec; +var init_XmlCodec = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js"() { + init_ConfigurableSerdeContext2(); + init_XmlShapeDeserializer(); + init_XmlShapeSerializer(); + XmlCodec = class extends SerdeContextConfig2 { + static { + __name(this, "XmlCodec"); + } + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +var AwsRestXmlProtocol; +var init_AwsRestXmlProtocol = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js"() { + init_protocols(); + init_schema(); + init_ProtocolLib(); + init_parseXmlBody(); + init_XmlCodec(); + AwsRestXmlProtocol = class extends HttpBindingProtocol { + static { + __name(this, "AwsRestXmlProtocol"); + } + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5 + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace + }; + this.codec = new XmlCodec(settings); + this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input2, context) { + const request = await super.serializeRequest(operationSchema, input2, context); + const inputSchema = NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && request.headers["content-type"] === this.getDefaultContentType() && !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? dataObject.Error?.Message ?? dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor({}); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output2 = {}; + const errorDeserializer = this.codec.createDeserializer(); + for (const [name2, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name2; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output2[name2] = errorDeserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message + }, output2), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js +var init_protocols2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js"() { + init_AwsRestJsonProtocol(); + init_AwsQueryProtocol(); + init_AwsRestXmlProtocol(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/protocol/S3RestXmlProtocol.js +var S3RestXmlProtocol; +var init_S3RestXmlProtocol = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/protocol/S3RestXmlProtocol.js"() { + init_protocols2(); + init_schema(); + S3RestXmlProtocol = class extends AwsRestXmlProtocol { + static { + __name(this, "S3RestXmlProtocol"); + } + async serializeRequest(operationSchema, input2, context) { + const request = await super.serializeRequest(operationSchema, input2, context); + const ns = NormalizedSchema.of(operationSchema.input); + const staticStructureSchema = ns.getSchema(); + let bucketMemberIndex = 0; + const requiredMemberCount = staticStructureSchema[6] ?? 0; + if (input2 && typeof input2 === "object") { + for (const [memberName, memberNs] of ns.structIterator()) { + if (++bucketMemberIndex > requiredMemberCount) { + break; + } + if (memberName === "Bucket") { + if (!input2.Bucket && memberNs.getMergedTraits().httpLabel) { + throw new Error(`No value provided for input HTTP label: Bucket.`); + } + break; + } + } + } + return request; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/NodeDisableMultiregionAccessPointConfigOptions.js +var NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME, NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME, NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS; +var init_NodeDisableMultiregionAccessPointConfigOptions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/NodeDisableMultiregionAccessPointConfigOptions.js"() { + init_config(); + NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME = "AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS"; + NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME = "s3_disable_multiregion_access_points"; + NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => booleanSelector(env3, NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME, SelectorType.CONFIG), "configFileSelector"), + default: false + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/NodeUseArnRegionConfigOptions.js +var NODE_USE_ARN_REGION_ENV_NAME, NODE_USE_ARN_REGION_INI_NAME, NODE_USE_ARN_REGION_CONFIG_OPTIONS; +var init_NodeUseArnRegionConfigOptions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/NodeUseArnRegionConfigOptions.js"() { + init_config(); + NODE_USE_ARN_REGION_ENV_NAME = "AWS_S3_USE_ARN_REGION"; + NODE_USE_ARN_REGION_INI_NAME = "s3_use_arn_region"; + NODE_USE_ARN_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => booleanSelector(env3, NODE_USE_ARN_REGION_ENV_NAME, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, NODE_USE_ARN_REGION_INI_NAME, SelectorType.CONFIG), "configFileSelector"), + default: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/bucketHostnameUtils.js +var DOMAIN_PATTERN, IP_ADDRESS_PATTERN, DOTS_PATTERN, DOT_PATTERN, S3_HOSTNAME_PATTERN, S3_US_EAST_1_ALTNAME_PATTERN, AWS_PARTITION_SUFFIX, isBucketNameOptions, isDnsCompatibleBucketName, getRegionalSuffix, getSuffix, getSuffixForArnEndpoint, validateArnEndpointOptions, validateService, validateS3Service, validateOutpostService, validatePartition, validateRegion, validateRegionalClient, validateAccountId, validateDNSHostLabel, validateCustomEndpoint, getArnResources, validateNoDualstack, validateNoFIPS, validateMrapAlias; +var init_bucketHostnameUtils = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/bucketHostnameUtils.js"() { + DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; + IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; + DOTS_PATTERN = /\.\./; + DOT_PATTERN = /\./; + S3_HOSTNAME_PATTERN = /^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./; + S3_US_EAST_1_ALTNAME_PATTERN = /^s3(-external-1)?\.amazonaws\.com$/; + AWS_PARTITION_SUFFIX = "amazonaws.com"; + isBucketNameOptions = /* @__PURE__ */ __name((options) => typeof options.bucketName === "string", "isBucketNameOptions"); + isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), "isDnsCompatibleBucketName"); + getRegionalSuffix = /* @__PURE__ */ __name((hostname3) => { + const parts = hostname3.match(S3_HOSTNAME_PATTERN); + return [parts[4], hostname3.replace(new RegExp(`^${parts[0]}`), "")]; + }, "getRegionalSuffix"); + getSuffix = /* @__PURE__ */ __name((hostname3) => S3_US_EAST_1_ALTNAME_PATTERN.test(hostname3) ? ["us-east-1", AWS_PARTITION_SUFFIX] : getRegionalSuffix(hostname3), "getSuffix"); + getSuffixForArnEndpoint = /* @__PURE__ */ __name((hostname3) => S3_US_EAST_1_ALTNAME_PATTERN.test(hostname3) ? [hostname3.replace(`.${AWS_PARTITION_SUFFIX}`, ""), AWS_PARTITION_SUFFIX] : getRegionalSuffix(hostname3), "getSuffixForArnEndpoint"); + validateArnEndpointOptions = /* @__PURE__ */ __name((options) => { + if (options.pathStyleEndpoint) { + throw new Error("Path-style S3 endpoint is not supported when bucket is an ARN"); + } + if (options.accelerateEndpoint) { + throw new Error("Accelerate endpoint is not supported when bucket is an ARN"); + } + if (!options.tlsCompatible) { + throw new Error("HTTPS is required when bucket is an ARN"); + } + }, "validateArnEndpointOptions"); + validateService = /* @__PURE__ */ __name((service) => { + if (service !== "s3" && service !== "s3-outposts" && service !== "s3-object-lambda") { + throw new Error("Expect 's3' or 's3-outposts' or 's3-object-lambda' in ARN service component"); + } + }, "validateService"); + validateS3Service = /* @__PURE__ */ __name((service) => { + if (service !== "s3") { + throw new Error("Expect 's3' in Accesspoint ARN service component"); + } + }, "validateS3Service"); + validateOutpostService = /* @__PURE__ */ __name((service) => { + if (service !== "s3-outposts") { + throw new Error("Expect 's3-posts' in Outpost ARN service component"); + } + }, "validateOutpostService"); + validatePartition = /* @__PURE__ */ __name((partition2, options) => { + if (partition2 !== options.clientPartition) { + throw new Error(`Partition in ARN is incompatible, got "${partition2}" but expected "${options.clientPartition}"`); + } + }, "validatePartition"); + validateRegion = /* @__PURE__ */ __name((region, options) => { + }, "validateRegion"); + validateRegionalClient = /* @__PURE__ */ __name((region) => { + if (["s3-external-1", "aws-global"].includes(region)) { + throw new Error(`Client region ${region} is not regional`); + } + }, "validateRegionalClient"); + validateAccountId = /* @__PURE__ */ __name((accountId) => { + if (!/[0-9]{12}/.exec(accountId)) { + throw new Error("Access point ARN accountID does not match regex '[0-9]{12}'"); + } + }, "validateAccountId"); + validateDNSHostLabel = /* @__PURE__ */ __name((label, options = { tlsCompatible: true }) => { + if (label.length >= 64 || !/^[a-z0-9][a-z0-9.-]*[a-z0-9]$/.test(label) || /(\d+\.){3}\d+/.test(label) || /[.-]{2}/.test(label) || options?.tlsCompatible && DOT_PATTERN.test(label)) { + throw new Error(`Invalid DNS label ${label}`); + } + }, "validateDNSHostLabel"); + validateCustomEndpoint = /* @__PURE__ */ __name((options) => { + if (options.isCustomEndpoint) { + if (options.dualstackEndpoint) + throw new Error("Dualstack endpoint is not supported with custom endpoint"); + if (options.accelerateEndpoint) + throw new Error("Accelerate endpoint is not supported with custom endpoint"); + } + }, "validateCustomEndpoint"); + getArnResources = /* @__PURE__ */ __name((resource) => { + const delimiter = resource.includes(":") ? ":" : "/"; + const [resourceType, ...rest] = resource.split(delimiter); + if (resourceType === "accesspoint") { + if (rest.length !== 1 || rest[0] === "") { + throw new Error(`Access Point ARN should have one resource accesspoint${delimiter}{accesspointname}`); + } + return { accesspointName: rest[0] }; + } else if (resourceType === "outpost") { + if (!rest[0] || rest[1] !== "accesspoint" || !rest[2] || rest.length !== 3) { + throw new Error(`Outpost ARN should have resource outpost${delimiter}{outpostId}${delimiter}accesspoint${delimiter}{accesspointName}`); + } + const [outpostId, _, accesspointName] = rest; + return { outpostId, accesspointName }; + } else { + throw new Error(`ARN resource should begin with 'accesspoint${delimiter}' or 'outpost${delimiter}'`); + } + }, "getArnResources"); + validateNoDualstack = /* @__PURE__ */ __name((dualstackEndpoint) => { + }, "validateNoDualstack"); + validateNoFIPS = /* @__PURE__ */ __name((useFipsEndpoint) => { + if (useFipsEndpoint) + throw new Error(`FIPS region is not supported with Outpost.`); + }, "validateNoFIPS"); + validateMrapAlias = /* @__PURE__ */ __name((name2) => { + try { + name2.split(".").forEach((label) => { + validateDNSHostLabel(label); + }); + } catch (e5) { + throw new Error(`"${name2}" is not a DNS compatible name.`); + } + }, "validateMrapAlias"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/bucketHostname.js +var bucketHostname, getEndpointFromBucketName, getEndpointFromArn, getEndpointFromObjectLambdaArn, getEndpointFromMRAPArn, getEndpointFromOutpostArn, getEndpointFromAccessPointArn; +var init_bucketHostname = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/bucketHostname.js"() { + init_bucketHostnameUtils(); + bucketHostname = /* @__PURE__ */ __name((options) => { + validateCustomEndpoint(options); + return isBucketNameOptions(options) ? getEndpointFromBucketName(options) : getEndpointFromArn(options); + }, "bucketHostname"); + getEndpointFromBucketName = /* @__PURE__ */ __name(({ accelerateEndpoint = false, clientRegion: region, baseHostname, bucketName, dualstackEndpoint = false, fipsEndpoint = false, pathStyleEndpoint = false, tlsCompatible = true, isCustomEndpoint = false }) => { + const [clientRegion, hostnameSuffix] = isCustomEndpoint ? [region, baseHostname] : getSuffix(baseHostname); + if (pathStyleEndpoint || !isDnsCompatibleBucketName(bucketName) || tlsCompatible && DOT_PATTERN.test(bucketName)) { + return { + bucketEndpoint: false, + hostname: dualstackEndpoint ? `s3.dualstack.${clientRegion}.${hostnameSuffix}` : baseHostname + }; + } + if (accelerateEndpoint) { + baseHostname = `s3-accelerate${dualstackEndpoint ? ".dualstack" : ""}.${hostnameSuffix}`; + } else if (dualstackEndpoint) { + baseHostname = `s3.dualstack.${clientRegion}.${hostnameSuffix}`; + } + return { + bucketEndpoint: true, + hostname: `${bucketName}.${baseHostname}` + }; + }, "getEndpointFromBucketName"); + getEndpointFromArn = /* @__PURE__ */ __name((options) => { + const { isCustomEndpoint, baseHostname, clientRegion } = options; + const hostnameSuffix = isCustomEndpoint ? baseHostname : getSuffixForArnEndpoint(baseHostname)[1]; + const { pathStyleEndpoint, accelerateEndpoint = false, fipsEndpoint = false, tlsCompatible = true, bucketName, clientPartition = "aws" } = options; + validateArnEndpointOptions({ pathStyleEndpoint, accelerateEndpoint, tlsCompatible }); + const { service, partition: partition2, accountId, region, resource } = bucketName; + validateService(service); + validatePartition(partition2, { clientPartition }); + validateAccountId(accountId); + const { accesspointName, outpostId } = getArnResources(resource); + if (service === "s3-object-lambda") { + return getEndpointFromObjectLambdaArn({ ...options, tlsCompatible, bucketName, accesspointName, hostnameSuffix }); + } + if (region === "") { + return getEndpointFromMRAPArn({ ...options, clientRegion, mrapAlias: accesspointName, hostnameSuffix }); + } + if (outpostId) { + return getEndpointFromOutpostArn({ ...options, clientRegion, outpostId, accesspointName, hostnameSuffix }); + } + return getEndpointFromAccessPointArn({ ...options, clientRegion, accesspointName, hostnameSuffix }); + }, "getEndpointFromArn"); + getEndpointFromObjectLambdaArn = /* @__PURE__ */ __name(({ dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, useArnRegion, clientRegion, clientSigningRegion = clientRegion, accesspointName, bucketName, hostnameSuffix }) => { + const { accountId, region, service } = bucketName; + validateRegionalClient(clientRegion); + const DNSHostLabel = `${accesspointName}-${accountId}`; + validateDNSHostLabel(DNSHostLabel, { tlsCompatible }); + const endpointRegion = useArnRegion ? region : clientRegion; + const signingRegion = useArnRegion ? region : clientSigningRegion; + return { + bucketEndpoint: true, + hostname: `${DNSHostLabel}.${service}${fipsEndpoint ? "-fips" : ""}.${endpointRegion}.${hostnameSuffix}`, + signingRegion, + signingService: service + }; + }, "getEndpointFromObjectLambdaArn"); + getEndpointFromMRAPArn = /* @__PURE__ */ __name(({ disableMultiregionAccessPoints, dualstackEndpoint = false, isCustomEndpoint, mrapAlias, hostnameSuffix }) => { + if (disableMultiregionAccessPoints === true) { + throw new Error("SDK is attempting to use a MRAP ARN. Please enable to feature."); + } + validateMrapAlias(mrapAlias); + return { + bucketEndpoint: true, + hostname: `${mrapAlias}${isCustomEndpoint ? "" : `.accesspoint.s3-global`}.${hostnameSuffix}`, + signingRegion: "*" + }; + }, "getEndpointFromMRAPArn"); + getEndpointFromOutpostArn = /* @__PURE__ */ __name(({ useArnRegion, clientRegion, clientSigningRegion = clientRegion, bucketName, outpostId, dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, accesspointName, isCustomEndpoint, hostnameSuffix }) => { + validateRegionalClient(clientRegion); + const DNSHostLabel = `${accesspointName}-${bucketName.accountId}`; + validateDNSHostLabel(DNSHostLabel, { tlsCompatible }); + const endpointRegion = useArnRegion ? bucketName.region : clientRegion; + const signingRegion = useArnRegion ? bucketName.region : clientSigningRegion; + validateOutpostService(bucketName.service); + validateDNSHostLabel(outpostId, { tlsCompatible }); + validateNoFIPS(fipsEndpoint); + const hostnamePrefix = `${DNSHostLabel}.${outpostId}`; + return { + bucketEndpoint: true, + hostname: `${hostnamePrefix}${isCustomEndpoint ? "" : `.s3-outposts.${endpointRegion}`}.${hostnameSuffix}`, + signingRegion, + signingService: "s3-outposts" + }; + }, "getEndpointFromOutpostArn"); + getEndpointFromAccessPointArn = /* @__PURE__ */ __name(({ useArnRegion, clientRegion, clientSigningRegion = clientRegion, bucketName, dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, accesspointName, isCustomEndpoint, hostnameSuffix }) => { + validateRegionalClient(clientRegion); + const hostnamePrefix = `${accesspointName}-${bucketName.accountId}`; + validateDNSHostLabel(hostnamePrefix, { tlsCompatible }); + const endpointRegion = useArnRegion ? bucketName.region : clientRegion; + const signingRegion = useArnRegion ? bucketName.region : clientSigningRegion; + validateS3Service(bucketName.service); + return { + bucketEndpoint: true, + hostname: `${hostnamePrefix}${isCustomEndpoint ? "" : `.s3-accesspoint${fipsEndpoint ? "-fips" : ""}${dualstackEndpoint ? ".dualstack" : ""}.${endpointRegion}`}.${hostnameSuffix}`, + signingRegion + }; + }, "getEndpointFromAccessPointArn"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/bucketEndpointMiddleware.js +var bucketEndpointMiddleware2, bucketEndpointMiddlewareOptions2, getBucketEndpointPlugin; +var init_bucketEndpointMiddleware = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/bucketEndpointMiddleware.js"() { + init_util2(); + init_protocols(); + init_bucketHostname(); + bucketEndpointMiddleware2 = /* @__PURE__ */ __name((options) => (next, context) => async (args) => { + const { Bucket: bucketName } = args.input; + let replaceBucketInPath = options.bucketEndpoint; + const request = args.request; + if (HttpRequest.isInstance(request)) { + if (options.bucketEndpoint) { + request.hostname = bucketName; + } else if (validate2(bucketName)) { + const bucketArn = parse3(bucketName); + const clientRegion = await options.region(); + const useDualstackEndpoint = await options.useDualstackEndpoint(); + const useFipsEndpoint = await options.useFipsEndpoint(); + const { partition: partition2, signingRegion = clientRegion } = await options.regionInfoProvider(clientRegion, { useDualstackEndpoint, useFipsEndpoint }) || {}; + const useArnRegion = await options.useArnRegion(); + const { hostname: hostname3, bucketEndpoint, signingRegion: modifiedSigningRegion, signingService } = bucketHostname({ + bucketName: bucketArn, + baseHostname: request.hostname, + accelerateEndpoint: options.useAccelerateEndpoint, + dualstackEndpoint: useDualstackEndpoint, + fipsEndpoint: useFipsEndpoint, + pathStyleEndpoint: options.forcePathStyle, + tlsCompatible: request.protocol === "https:", + useArnRegion, + clientPartition: partition2, + clientSigningRegion: signingRegion, + clientRegion, + isCustomEndpoint: options.isCustomEndpoint, + disableMultiregionAccessPoints: await options.disableMultiregionAccessPoints() + }); + if (modifiedSigningRegion && modifiedSigningRegion !== signingRegion) { + context["signing_region"] = modifiedSigningRegion; + } + if (signingService && signingService !== "s3") { + context["signing_service"] = signingService; + } + request.hostname = hostname3; + replaceBucketInPath = bucketEndpoint; + } else { + const clientRegion = await options.region(); + const dualstackEndpoint = await options.useDualstackEndpoint(); + const fipsEndpoint = await options.useFipsEndpoint(); + const { hostname: hostname3, bucketEndpoint } = bucketHostname({ + bucketName, + clientRegion, + baseHostname: request.hostname, + accelerateEndpoint: options.useAccelerateEndpoint, + dualstackEndpoint, + fipsEndpoint, + pathStyleEndpoint: options.forcePathStyle, + tlsCompatible: request.protocol === "https:", + isCustomEndpoint: options.isCustomEndpoint + }); + request.hostname = hostname3; + replaceBucketInPath = bucketEndpoint; + } + if (replaceBucketInPath) { + request.path = request.path.replace(/^(\/)?[^\/]+/, ""); + if (request.path === "") { + request.path = "/"; + } + } + } + return next({ ...args, request }); + }, "bucketEndpointMiddleware"); + bucketEndpointMiddlewareOptions2 = { + tags: ["BUCKET_ENDPOINT"], + name: "bucketEndpointMiddleware", + relation: "before", + toMiddleware: "hostHeaderMiddleware", + override: true + }; + getBucketEndpointPlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.addRelativeTo(bucketEndpointMiddleware2(options), bucketEndpointMiddlewareOptions2); + }, "applyToStack") + }), "getBucketEndpointPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/configurations.js +function resolveBucketEndpointConfig(input2) { + const { bucketEndpoint = false, forcePathStyle = false, useAccelerateEndpoint = false, useArnRegion, disableMultiregionAccessPoints = false } = input2; + return Object.assign(input2, { + bucketEndpoint, + forcePathStyle, + useAccelerateEndpoint, + useArnRegion: typeof useArnRegion === "function" ? useArnRegion : () => Promise.resolve(useArnRegion), + disableMultiregionAccessPoints: typeof disableMultiregionAccessPoints === "function" ? disableMultiregionAccessPoints : () => Promise.resolve(disableMultiregionAccessPoints) + }); +} +var init_configurations3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-bucket-endpoint/configurations.js"() { + __name(resolveBucketEndpointConfig, "resolveBucketEndpointConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-expect-continue/middleware-expect-continue.js +function addExpectContinueMiddleware(options) { + return (next) => async (args) => { + const { request } = args; + if (options.expectContinueHeader !== false && HttpRequest.isInstance(request) && request.body && options.runtime === "node" && options.requestHandler?.constructor?.name !== "FetchHttpHandler") { + let sendHeader = true; + if (typeof options.expectContinueHeader === "number") { + try { + const bodyLength = Number(request.headers?.["content-length"]) ?? options.bodyLengthChecker?.(request.body) ?? Infinity; + sendHeader = bodyLength >= options.expectContinueHeader; + } catch (e5) { + } + } else { + sendHeader = !!options.expectContinueHeader; + } + if (sendHeader) { + request.headers.Expect = "100-continue"; + } + } + return next({ + ...args, + request + }); + }; +} +var addExpectContinueMiddlewareOptions, getAddExpectContinuePlugin; +var init_middleware_expect_continue = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-expect-continue/middleware-expect-continue.js"() { + init_protocols(); + __name(addExpectContinueMiddleware, "addExpectContinueMiddleware"); + addExpectContinueMiddlewareOptions = { + step: "build", + tags: ["SET_EXPECT_HEADER", "EXPECT_HEADER"], + name: "addExpectContinueMiddleware", + override: true + }; + getAddExpectContinuePlugin = /* @__PURE__ */ __name((options) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(addExpectContinueMiddleware(options), addExpectContinueMiddlewareOptions); + }, "applyToStack") + }), "getAddExpectContinuePlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-location-constraint/middleware-location-constraint.js +function locationConstraintMiddleware(options) { + return (next) => async (args) => { + const { CreateBucketConfiguration } = args.input; + const region = await options.region(); + if (!CreateBucketConfiguration?.LocationConstraint && !CreateBucketConfiguration?.Location) { + if (region !== "us-east-1") { + args.input.CreateBucketConfiguration = args.input.CreateBucketConfiguration ?? {}; + args.input.CreateBucketConfiguration.LocationConstraint = region; + } + } + return next(args); + }; +} +var locationConstraintMiddlewareOptions, getLocationConstraintPlugin; +var init_middleware_location_constraint = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-location-constraint/middleware-location-constraint.js"() { + __name(locationConstraintMiddleware, "locationConstraintMiddleware"); + locationConstraintMiddlewareOptions = { + step: "initialize", + tags: ["LOCATION_CONSTRAINT", "CREATE_BUCKET_CONFIGURATION"], + name: "locationConstraintMiddleware", + override: true + }; + getLocationConstraintPlugin = /* @__PURE__ */ __name((config3) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(locationConstraintMiddleware(config3), locationConstraintMiddlewareOptions); + }, "applyToStack") + }), "getLocationConstraintPlugin"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-location-constraint/configuration.js +function resolveLocationConstraintConfig(input2) { + return input2; +} +var init_configuration2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-location-constraint/configuration.js"() { + __name(resolveLocationConstraintConfig, "resolveLocationConstraintConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-ssec/middleware-ssec.js +function ssecMiddleware(options) { + return (next) => async (args) => { + const input2 = { ...args.input }; + const properties = [ + { + target: "SSECustomerKey", + hash: "SSECustomerKeyMD5" + }, + { + target: "CopySourceSSECustomerKey", + hash: "CopySourceSSECustomerKeyMD5" + } + ]; + for (const prop of properties) { + const value = input2[prop.target]; + if (value) { + let valueForHash; + if (typeof value === "string") { + if (isValidBase64EncodedSSECustomerKey(value, options)) { + valueForHash = options.base64Decoder(value); + } else { + valueForHash = options.utf8Decoder(value); + input2[prop.target] = options.base64Encoder(valueForHash); + } + } else { + valueForHash = ArrayBuffer.isView(value) ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength) : new Uint8Array(value); + input2[prop.target] = options.base64Encoder(valueForHash); + } + const hash3 = new options.md5(); + hash3.update(valueForHash); + input2[prop.hash] = options.base64Encoder(await hash3.digest()); + } + } + return next({ + ...args, + input: input2 + }); + }; +} +function isValidBase64EncodedSSECustomerKey(str, options) { + const base64Regex = /^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; + if (!base64Regex.test(str)) + return false; + try { + const decodedBytes = options.base64Decoder(str); + return decodedBytes.length === 32; + } catch { + return false; + } +} +var ssecMiddlewareOptions, getSsecPlugin; +var init_middleware_ssec = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/middleware-ssec/middleware-ssec.js"() { + __name(ssecMiddleware, "ssecMiddleware"); + ssecMiddlewareOptions = { + name: "ssecMiddleware", + step: "initialize", + tags: ["SSE"], + override: true + }; + getSsecPlugin = /* @__PURE__ */ __name((config3) => ({ + applyToStack: /* @__PURE__ */ __name((clientStack) => { + clientStack.add(ssecMiddleware(config3), ssecMiddlewareOptions); + }, "applyToStack") + }), "getSsecPlugin"); + __name(isValidBase64EncodedSSECustomerKey, "isValidBase64EncodedSSECustomerKey"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/index.js +var s3_exports = {}; +__export(s3_exports, { + NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS: () => NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS, + NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME: () => NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME, + NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME: () => NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME, + NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS: () => NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS, + NODE_USE_ARN_REGION_CONFIG_OPTIONS: () => NODE_USE_ARN_REGION_CONFIG_OPTIONS, + NODE_USE_ARN_REGION_ENV_NAME: () => NODE_USE_ARN_REGION_ENV_NAME, + NODE_USE_ARN_REGION_INI_NAME: () => NODE_USE_ARN_REGION_INI_NAME, + S3ExpressIdentityCache: () => S3ExpressIdentityCache, + S3ExpressIdentityCacheEntry: () => S3ExpressIdentityCacheEntry, + S3ExpressIdentityProviderImpl: () => S3ExpressIdentityProviderImpl, + S3RestXmlProtocol: () => S3RestXmlProtocol, + SignatureV4S3Express: () => SignatureV4S3Express, + addExpectContinueMiddleware: () => addExpectContinueMiddleware, + addExpectContinueMiddlewareOptions: () => addExpectContinueMiddlewareOptions, + bucketEndpointMiddleware: () => bucketEndpointMiddleware2, + bucketEndpointMiddlewareOptions: () => bucketEndpointMiddlewareOptions2, + bucketHostname: () => bucketHostname, + checkContentLengthHeader: () => checkContentLengthHeader, + checkContentLengthHeaderMiddlewareOptions: () => checkContentLengthHeaderMiddlewareOptions, + getAddExpectContinuePlugin: () => getAddExpectContinuePlugin, + getArnResources: () => getArnResources, + getBucketEndpointPlugin: () => getBucketEndpointPlugin, + getCheckContentLengthHeaderPlugin: () => getCheckContentLengthHeaderPlugin, + getLocationConstraintPlugin: () => getLocationConstraintPlugin, + getRegionRedirectMiddlewarePlugin: () => getRegionRedirectMiddlewarePlugin, + getS3ExpiresMiddlewarePlugin: () => getS3ExpiresMiddlewarePlugin, + getS3ExpressHttpSigningPlugin: () => getS3ExpressHttpSigningPlugin, + getS3ExpressPlugin: () => getS3ExpressPlugin, + getSsecPlugin: () => getSsecPlugin, + getSuffixForArnEndpoint: () => getSuffixForArnEndpoint, + getThrow200ExceptionsPlugin: () => getThrow200ExceptionsPlugin, + getValidateBucketNamePlugin: () => getValidateBucketNamePlugin, + isValidBase64EncodedSSECustomerKey: () => isValidBase64EncodedSSECustomerKey, + locationConstraintMiddleware: () => locationConstraintMiddleware, + locationConstraintMiddlewareOptions: () => locationConstraintMiddlewareOptions, + regionRedirectEndpointMiddleware: () => regionRedirectEndpointMiddleware, + regionRedirectEndpointMiddlewareOptions: () => regionRedirectEndpointMiddlewareOptions, + regionRedirectMiddleware: () => regionRedirectMiddleware, + regionRedirectMiddlewareOptions: () => regionRedirectMiddlewareOptions, + resolveBucketEndpointConfig: () => resolveBucketEndpointConfig, + resolveLocationConstraintConfig: () => resolveLocationConstraintConfig, + resolveS3Config: () => resolveS3Config, + s3ExpiresMiddleware: () => s3ExpiresMiddleware, + s3ExpiresMiddlewareOptions: () => s3ExpiresMiddlewareOptions, + s3ExpressHttpSigningMiddleware: () => s3ExpressHttpSigningMiddleware, + s3ExpressHttpSigningMiddlewareOptions: () => s3ExpressHttpSigningMiddlewareOptions, + s3ExpressMiddleware: () => s3ExpressMiddleware, + s3ExpressMiddlewareOptions: () => s3ExpressMiddlewareOptions, + ssecMiddleware: () => ssecMiddleware, + ssecMiddlewareOptions: () => ssecMiddlewareOptions, + throw200ExceptionsMiddleware: () => throw200ExceptionsMiddleware, + throw200ExceptionsMiddlewareOptions: () => throw200ExceptionsMiddlewareOptions, + validateAccountId: () => validateAccountId, + validateBucketNameMiddleware: () => validateBucketNameMiddleware, + validateBucketNameMiddlewareOptions: () => validateBucketNameMiddlewareOptions, + validateDNSHostLabel: () => validateDNSHostLabel, + validateNoDualstack: () => validateNoDualstack, + validateNoFIPS: () => validateNoFIPS, + validateOutpostService: () => validateOutpostService, + validatePartition: () => validatePartition, + validateRegion: () => validateRegion +}); +var init_s3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.80/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/submodules/s3/index.js"() { + init_check_content_length_header(); + init_region_redirect_endpoint_middleware(); + init_region_redirect_middleware(); + init_s3Configuration(); + init_s3_expires_middleware(); + init_S3ExpressIdentityCache(); + init_S3ExpressIdentityCacheEntry(); + init_S3ExpressIdentityProviderImpl(); + init_SignatureV4S3Express(); + init_constants5(); + init_s3ExpressMiddleware(); + init_s3ExpressHttpSigningMiddleware(); + init_throw_200_exceptions(); + init_validate_bucket_name(); + init_S3RestXmlProtocol(); + init_NodeDisableMultiregionAccessPointConfigOptions(); + init_NodeUseArnRegionConfigOptions(); + init_bucketEndpointMiddleware(); + init_bucketHostname(); + init_configurations3(); + init_bucketHostnameUtils(); + init_middleware_expect_continue(); + init_middleware_location_constraint(); + init_configuration2(); + init_middleware_ssec(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js +var getDateHeader, getAgeHeader; +var init_getDateHeader = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js"() { + init_protocols(); + getDateHeader = /* @__PURE__ */ __name((response) => HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : void 0, "getDateHeader"); + getAgeHeader = /* @__PURE__ */ __name((response) => HttpResponse.isInstance(response) ? response.headers?.age ?? response.headers?.Age : void 0, "getAgeHeader"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js +var getSkewCorrectedDate; +var init_getSkewCorrectedDate = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js"() { + getSkewCorrectedDate = /* @__PURE__ */ __name((systemClockOffset) => new Date(Date.now() + systemClockOffset), "getSkewCorrectedDate"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js +var getUpdatedSystemClockOffset; +var init_getUpdatedSystemClockOffset = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js"() { + getUpdatedSystemClockOffset = /* @__PURE__ */ __name((clockTime, currentSystemClockOffset, timeRequestSent, ageHeader) => { + if (ageHeader !== void 0) { + return currentSystemClockOffset; + } + const serverTime = Date.parse(clockTime); + const timeResponseReceived = Date.now(); + if (timeRequestSent !== void 0 && timeResponseReceived - timeRequestSent > 9e5) { + return currentSystemClockOffset; + } + const candidateSkew = timeRequestSent !== void 0 ? serverTime - (timeRequestSent + timeResponseReceived) / 2 : serverTime - timeResponseReceived; + return candidateSkew; + }, "getUpdatedSystemClockOffset"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js +var init_utils = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js"() { + init_getDateHeader(); + init_getSkewCorrectedDate(); + init_getUpdatedSystemClockOffset(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js +var import_types5, throwSigningPropertyError, hasEventStreamOutput, validateSigningProperties, AwsSdkSigV4Signer, AWSSDKSigV4Signer; +var init_AwsSdkSigV4Signer = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js"() { + init_protocols(); + import_types5 = __toESM(require_dist_cjs()); + init_utils(); + throwSigningPropertyError = /* @__PURE__ */ __name((name2, property) => { + if (!property) { + throw new Error(`Property \`${name2}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; + }, "throwSigningPropertyError"); + hasEventStreamOutput = /* @__PURE__ */ __name((signingProperties) => { + const context = signingProperties.context; + const eventStream = context?.[import_types5.SMITHY_CONTEXT_KEY]?.eventStream; + return eventStream?.output === true; + }, "hasEventStreamOutput"); + validateSigningProperties = /* @__PURE__ */ __name(async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config3 = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config3.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config: config3, + signer, + signingRegion, + signingRegionSet, + signingName + }; + }, "validateSigningProperties"); + AwsSdkSigV4Signer = class { + static { + __name(this, "AwsSdkSigV4Signer"); + } + async sign(httpRequest, identity, signingProperties) { + if (!HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config: config3, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const noSkewCorrection = await config3.disableClockSkewCorrection?.() === true; + signingProperties._disableClockSkewCorrection = noSkewCorrection; + const skipSkewSampling = noSkewCorrection || hasEventStreamOutput(signingProperties); + signingProperties._skipClockSkewSampling = skipSkewSampling; + if (!skipSkewSampling) { + signingProperties._preRequestSystemClockOffset = config3.systemClockOffset; + signingProperties._requestSentAt = Date.now(); + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: noSkewCorrection ? /* @__PURE__ */ new Date() : getSkewCorrectedDate(config3.systemClockOffset), + signingRegion, + signingService: signingName + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error62) => { + const errorException = error62; + if (!signingProperties._skipClockSkewSampling && !signingProperties._disableClockSkewCorrection) { + const serverTime = errorException.ServerTime ?? getDateHeader(errorException.$response); + if (serverTime) { + const config3 = throwSigningPropertyError("config", signingProperties.config); + const preRequestOffset = signingProperties._preRequestSystemClockOffset; + const timeRequestSent = signingProperties._requestSentAt; + const ageHeader = getAgeHeader(errorException.$response); + const newOffset = getUpdatedSystemClockOffset(serverTime, config3.systemClockOffset, timeRequestSent, ageHeader); + config3.systemClockOffset = newOffset; + const skewExceedsThreshold = Math.abs(newOffset) >= 24e4; + const isLocalCorrection = newOffset !== preRequestOffset; + const isConcurrentCorrection = preRequestOffset !== void 0 && preRequestOffset !== newOffset; + if (skewExceedsThreshold && (isLocalCorrection || isConcurrentCorrection) && errorException.$metadata) { + errorException.$metadata.clockSkewCorrected = true; + } + } + } + throw error62; + }; + } + successHandler(httpResponse, signingProperties) { + if (signingProperties._skipClockSkewSampling || signingProperties._disableClockSkewCorrection) { + return; + } + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config3 = throwSigningPropertyError("config", signingProperties.config); + const timeRequestSent = signingProperties._requestSentAt; + const ageHeader = getAgeHeader(httpResponse); + config3.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config3.systemClockOffset, timeRequestSent, ageHeader); + } + } + }; + AWSSDKSigV4Signer = AwsSdkSigV4Signer; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js +var AwsSdkSigV4ASigner; +var init_AwsSdkSigV4ASigner = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js"() { + init_protocols(); + init_utils(); + init_AwsSdkSigV4Signer(); + AwsSdkSigV4ASigner = class extends AwsSdkSigV4Signer { + static { + __name(this, "AwsSdkSigV4ASigner"); + } + async sign(httpRequest, identity, signingProperties) { + if (!HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config: config3, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config3.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? signingRegionSet ?? [signingRegion]).join(","); + const noSkewCorrection = await config3.disableClockSkewCorrection?.() === true; + signingProperties._disableClockSkewCorrection = noSkewCorrection; + if (!noSkewCorrection) { + signingProperties._preRequestSystemClockOffset = config3.systemClockOffset; + signingProperties._requestSentAt = Date.now(); + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: noSkewCorrection ? /* @__PURE__ */ new Date() : getSkewCorrectedDate(config3.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName + }); + return signedRequest; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js +var getArrayForCommaSeparatedString; +var init_getArrayForCommaSeparatedString = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js"() { + getArrayForCommaSeparatedString = /* @__PURE__ */ __name((str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : [], "getArrayForCommaSeparatedString"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js +var getBearerTokenEnvKey; +var init_getBearerTokenEnvKey = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js"() { + getBearerTokenEnvKey = /* @__PURE__ */ __name((signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`, "getBearerTokenEnvKey"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js +var NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY, NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS; +var init_NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js"() { + init_getArrayForCommaSeparatedString(); + init_getBearerTokenEnvKey(); + NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; + NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; + NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env3) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env3)) + return void 0; + return getArrayForCommaSeparatedString(env3[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return void 0; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, "configFileSelector"), + default: [] + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js +var resolveAwsSdkSigV4AConfig, NODE_SIGV4A_CONFIG_OPTIONS; +var init_resolveAwsSdkSigV4AConfig = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js"() { + init_dist_es(); + init_config(); + resolveAwsSdkSigV4AConfig = /* @__PURE__ */ __name((config3) => { + config3.sigv4aSigningRegionSet = normalizeProvider2(config3.sigv4aSigningRegionSet); + return config3; + }, "resolveAwsSdkSigV4AConfig"); + NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env3) { + if (env3.AWS_SIGV4A_SIGNING_REGION_SET) { + return env3.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true + }); + }, + default: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +function normalizeCredentialProvider(config3, { credentials, credentialDefaultProvider }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = memoizeIdentityProvider(credentials, isIdentityExpired, doesIdentityRequireRefresh); + } else { + credentialsProvider = credentials; + } + } else { + if (credentialDefaultProvider) { + credentialsProvider = normalizeProvider2(credentialDefaultProvider(Object.assign({}, config3, { + parentClientConfig: config3 + }))); + } else { + credentialsProvider = /* @__PURE__ */ __name(async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }, "credentialsProvider"); + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config3, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = /* @__PURE__ */ __name(async (options) => credentialsProvider({ ...options, callerClientConfig: config3 }), "fn"); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} +var import_signature_v4, bindResolveAwsSdkSigV4Config; +var init_resolveAwsSdkSigV4Config = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js"() { + init_client2(); + init_dist_es(); + import_signature_v4 = __toESM(require_dist_cjs2()); + bindResolveAwsSdkSigV4Config = /* @__PURE__ */ __name((defaultDisableClockSkewCorrection) => (config3) => { + let inputCredentials = config3.credentials; + let isUserSupplied = !!config3.credentials; + let resolvedCredentials = void 0; + Object.defineProperty(config3, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config3, { + credentials: inputCredentials, + credentialDefaultProvider: config3.credentialDefaultProvider + }); + const boundProvider = bindCallerConfig(config3, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = /* @__PURE__ */ __name(async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }, "resolvedCredentials"); + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true + }); + config3.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config3.systemClockOffset || 0, sha256: sha2562 } = config3; + let signer; + if (config3.signer) { + signer = normalizeProvider2(config3.signer); + } else if (config3.regionInfoProvider) { + signer = /* @__PURE__ */ __name(() => normalizeProvider2(config3.region)().then(async (region) => [ + await config3.regionInfoProvider(region, { + useFipsEndpoint: await config3.useFipsEndpoint(), + useDualstackEndpoint: await config3.useDualstackEndpoint() + }) || {}, + region + ]).then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config3.signingRegion = config3.signingRegion || signingRegion || region; + config3.signingName = config3.signingName || signingService || config3.serviceId; + const params = { + ...config3, + credentials: config3.credentials, + region: config3.signingRegion, + service: config3.signingName, + sha256: sha2562, + uriEscapePath: signingEscapePath + }; + const SignerCtor = config3.signerConstructor || import_signature_v4.SignatureV4; + return new SignerCtor(params); + }), "signer"); + } else { + signer = /* @__PURE__ */ __name(async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config3.signingName || config3.defaultSigningName, + signingRegion: await normalizeProvider2(config3.region)(), + properties: {} + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config3.signingRegion = config3.signingRegion || signingRegion; + config3.signingName = config3.signingName || signingService || config3.serviceId; + const params = { + ...config3, + credentials: config3.credentials, + region: config3.signingRegion, + service: config3.signingName, + sha256: sha2562, + uriEscapePath: signingEscapePath + }; + const SignerCtor = config3.signerConstructor || import_signature_v4.SignatureV4; + return new SignerCtor(params); + }, "signer"); + } + const resolvedConfig = Object.assign(config3, { + systemClockOffset, + signingEscapePath, + signer, + disableClockSkewCorrection: normalizeProvider2(config3.disableClockSkewCorrection ?? defaultDisableClockSkewCorrection) + }); + return resolvedConfig; + }, "bindResolveAwsSdkSigV4Config"); + __name(normalizeCredentialProvider, "normalizeCredentialProvider"); + __name(bindCallerConfig, "bindCallerConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js +var init_aws_sdk = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js"() { + init_AwsSdkSigV4Signer(); + init_AwsSdkSigV4ASigner(); + init_NODE_AUTH_SCHEME_PREFERENCE_OPTIONS(); + init_resolveAwsSdkSigV4AConfig(); + init_resolveAwsSdkSigV4Config(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-node-config.js +var ENV_DISABLE_CLOCK_SKEW_CORRECTION, CONFIG_DISABLE_CLOCK_SKEW_CORRECTION, NODE_DISABLE_CLOCK_SKEW_CORRECTION_CONFIG_OPTIONS; +var init_clock_skew_node_config = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-node-config.js"() { + init_config(); + ENV_DISABLE_CLOCK_SKEW_CORRECTION = "AWS_DISABLE_CLOCK_SKEW_CORRECTION"; + CONFIG_DISABLE_CLOCK_SKEW_CORRECTION = "disable_clock_skew_correction"; + NODE_DISABLE_CLOCK_SKEW_CORRECTION_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => booleanSelector(env3, ENV_DISABLE_CLOCK_SKEW_CORRECTION, SelectorType.ENV), "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => booleanSelector(profile, CONFIG_DISABLE_CLOCK_SKEW_CORRECTION, SelectorType.CONFIG), "configFileSelector"), + default: false + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.js +var DEFAULT_DISABLE_CLOCK_SKEW_CORRECTION; +var init_clock_skew_defaults = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.js"() { + init_config(); + init_clock_skew_node_config(); + DEFAULT_DISABLE_CLOCK_SKEW_CORRECTION = loadConfig(NODE_DISABLE_CLOCK_SKEW_CORRECTION_CONFIG_OPTIONS); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js +var httpAuthSchemes_exports = {}; +__export(httpAuthSchemes_exports, { + AWSSDKSigV4Signer: () => AWSSDKSigV4Signer, + AwsSdkSigV4ASigner: () => AwsSdkSigV4ASigner, + AwsSdkSigV4Signer: () => AwsSdkSigV4Signer, + NODE_AUTH_SCHEME_PREFERENCE_OPTIONS: () => NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, + NODE_SIGV4A_CONFIG_OPTIONS: () => NODE_SIGV4A_CONFIG_OPTIONS, + getBearerTokenEnvKey: () => getBearerTokenEnvKey, + resolveAWSSDKSigV4Config: () => resolveAWSSDKSigV4Config, + resolveAwsSdkSigV4AConfig: () => resolveAwsSdkSigV4AConfig, + resolveAwsSdkSigV4Config: () => resolveAwsSdkSigV4Config, + validateSigningProperties: () => validateSigningProperties +}); +var resolveAwsSdkSigV4Config, resolveAWSSDKSigV4Config; +var init_httpAuthSchemes2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+core@3.978.4/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js"() { + init_aws_sdk(); + init_getBearerTokenEnvKey(); + init_aws_sdk(); + init_clock_skew_defaults(); + resolveAwsSdkSigV4Config = bindResolveAwsSdkSigV4Config(DEFAULT_DISABLE_CLOCK_SKEW_CORRECTION); + resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-env@3.972.75/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +var require_dist_cjs5 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-env@3.972.75/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js"(exports) { + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var { CredentialsProviderError } = (init_config(), __toCommonJS(config_exports)); + var ENV_KEY = "AWS_ACCESS_KEY_ID"; + var ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; + var ENV_SESSION = "AWS_SESSION_TOKEN"; + var ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; + var ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; + var ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; + var fromEnv = /* @__PURE__ */ __name((init2) => async () => { + init2?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv"); + const accessKeyId = process.env[ENV_KEY]; + const secretAccessKey = process.env[ENV_SECRET]; + const sessionToken = process.env[ENV_SESSION]; + const expiry = process.env[ENV_EXPIRATION]; + const credentialScope = process.env[ENV_CREDENTIAL_SCOPE]; + const accountId = process.env[ENV_ACCOUNT_ID]; + if (accessKeyId && secretAccessKey) { + const credentials = { + accessKeyId, + secretAccessKey, + ...sessionToken && { sessionToken }, + ...expiry && { expiration: new Date(expiry) }, + ...credentialScope && { credentialScope }, + ...accountId && { accountId } + }; + setCredentialFeature2(credentials, "CREDENTIALS_ENV_VARS", "g"); + return credentials; + } + throw new CredentialsProviderError("Unable to find environment variable credentials.", { logger: init2?.logger }); + }, "fromEnv"); + exports.ENV_ACCOUNT_ID = ENV_ACCOUNT_ID; + exports.ENV_CREDENTIAL_SCOPE = ENV_CREDENTIAL_SCOPE; + exports.ENV_EXPIRATION = ENV_EXPIRATION; + exports.ENV_KEY = ENV_KEY; + exports.ENV_SECRET = ENV_SECRET; + exports.ENV_SESSION = ENV_SESSION; + exports.fromEnv = fromEnv; + } +}); + +// ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +var require_dist_cjs6 = __commonJS({ + "../../node_modules/.pnpm/@smithy+credential-provider-imds@4.5.2/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js"(exports) { + var { ProviderError: ProviderError2, CredentialsProviderError, loadConfig: loadConfig2 } = (init_config(), __toCommonJS(config_exports)); + var node_http = __require("node:http"); + var { parseUrl: parseUrl2 } = (init_protocols(), __toCommonJS(protocols_exports)); + var isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string", "isImdsCredentials"); + var fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...creds.AccountId && { accountId: creds.AccountId } + }), "fromImdsCredentials"); + var DEFAULT_TIMEOUT = 1e3; + var DEFAULT_MAX_RETRIES = 0; + var providerConfigFromInit = /* @__PURE__ */ __name(({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT }) => ({ maxRetries, timeout }), "providerConfigFromInit"); + function httpRequest(options) { + return new Promise((resolve, reject) => { + const req2 = node_http.request({ + method: "GET", + ...options, + hostname: options.hostname?.replace(/^\[(.+)\]$/, "$1") + }); + req2.on("error", (err) => { + reject(Object.assign(new ProviderError2("Unable to connect to instance metadata service"), err)); + req2.destroy(); + }); + req2.on("timeout", () => { + reject(new ProviderError2("TimeoutError from instance metadata service")); + req2.destroy(); + }); + req2.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject(Object.assign(new ProviderError2("Error response received from instance metadata service"), { statusCode })); + req2.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(Buffer.concat(chunks)); + req2.destroy(); + }); + }); + req2.end(); + }); + } + __name(httpRequest, "httpRequest"); + var retry = /* @__PURE__ */ __name((toRetry, maxRetries) => { + let promise2 = toRetry(); + for (let i5 = 0; i5 < maxRetries; i5++) { + promise2 = promise2.catch(toRetry); + } + return promise2; + }, "retry"); + var ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; + var ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; + var ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; + var fromContainerMetadata = /* @__PURE__ */ __name((init2 = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init2); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init2.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init2.logger + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); + }, "fromContainerMetadata"); + var requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN] + }; + } + const buffer = await httpRequest({ + ...options, + timeout + }); + return buffer.toString(); + }, "requestFromEcsImds"); + var CMDS_IP = "169.254.170.2"; + var GREENGRASS_HOSTS = /* @__PURE__ */ new Set(["localhost", "127.0.0.1"]); + var GREENGRASS_PROTOCOLS = /* @__PURE__ */ new Set(["http:", "https:"]); + var getCmdsUri = /* @__PURE__ */ __name(async ({ logger }) => { + if (process.env[ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[ENV_CMDS_RELATIVE_URI] + }; + } + if (process.env[ENV_CMDS_FULL_URI]) { + let parsed2; + try { + parsed2 = new URL(process.env[ENV_CMDS_FULL_URI]); + } catch { + throw new CredentialsProviderError(`${process.env[ENV_CMDS_FULL_URI]} is not a valid container metadata service URL`, { tryNextLink: false, logger }); + } + if (!parsed2.hostname || !GREENGRASS_HOSTS.has(parsed2.hostname)) { + throw new CredentialsProviderError(`${parsed2.hostname} is not a valid container metadata service hostname`, { + tryNextLink: false, + logger + }); + } + if (!parsed2.protocol || !GREENGRASS_PROTOCOLS.has(parsed2.protocol)) { + throw new CredentialsProviderError(`${parsed2.protocol} is not a valid container metadata service protocol`, { + tryNextLink: false, + logger + }); + } + return { + protocol: parsed2.protocol, + hostname: parsed2.hostname, + path: parsed2.pathname + parsed2.search, + port: parsed2.port ? parseInt(parsed2.port, 10) : void 0 + }; + } + throw new CredentialsProviderError(`The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`, { + tryNextLink: false, + logger + }); + }, "getCmdsUri"); + var InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends CredentialsProviderError { + static { + __name(this, "InstanceMetadataV1FallbackError"); + } + tryNextLink; + name = "InstanceMetadataV1FallbackError"; + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype); + } + }; + var Endpoint; + (function(Endpoint2) { + Endpoint2["IPv4"] = "http://169.254.169.254"; + Endpoint2["IPv6"] = "http://[fd00:ec2::254]"; + })(Endpoint || (Endpoint = {})); + var ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; + var CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; + var ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => env3[ENV_ENDPOINT_NAME], "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => profile[CONFIG_ENDPOINT_NAME], "configFileSelector"), + default: void 0 + }; + var EndpointMode; + (function(EndpointMode2) { + EndpointMode2["IPv4"] = "IPv4"; + EndpointMode2["IPv6"] = "IPv6"; + })(EndpointMode || (EndpointMode = {})); + var ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; + var CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; + var ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: /* @__PURE__ */ __name((env3) => env3[ENV_ENDPOINT_MODE_NAME], "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile) => profile[CONFIG_ENDPOINT_MODE_NAME], "configFileSelector"), + default: EndpointMode.IPv4 + }; + var getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => parseUrl2(await getFromEndpointConfig() || await getFromEndpointModeConfig()), "getInstanceMetadataEndpoint"); + var getFromEndpointConfig = /* @__PURE__ */ __name(async () => loadConfig2(ENDPOINT_CONFIG_OPTIONS)(), "getFromEndpointConfig"); + var getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => { + const endpointMode = await loadConfig2(ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case EndpointMode.IPv4: + return Endpoint.IPv4; + case EndpointMode.IPv6: + return Endpoint.IPv6; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`); + } + }, "getFromEndpointModeConfig"); + var STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; + var STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; + var STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; + var getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => { + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1e3); + logger.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}. +For more information, please visit: ` + STATIC_STABILITY_DOC_URL); + const originalExpiration = credentials.originalExpiration ?? credentials.expiration; + return { + ...credentials, + ...originalExpiration ? { originalExpiration } : {}, + expiration: newExpiration + }; + }, "getExtendedInstanceMetadataCredentials"); + var staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => { + const logger = options?.logger || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = getExtendedInstanceMetadataCredentials(credentials, logger); + } + } catch (e5) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e5); + credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); + } else { + throw e5; + } + } + pastCredentials = credentials; + return credentials; + }; + }, "staticStabilityProvider"); + var IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; + var IMDS_TOKEN_PATH = "/latest/api/token"; + var AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; + var PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; + var X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; + var fromInstanceMetadata = /* @__PURE__ */ __name((init2 = {}) => staticStabilityProvider(getInstanceMetadataProvider(init2), { logger: init2.logger }), "fromInstanceMetadata"); + var getInstanceMetadataProvider = /* @__PURE__ */ __name((init2 = {}) => { + let disableFetchToken = false; + const { logger, profile } = init2; + const { timeout, maxRetries } = providerConfigFromInit(init2); + const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => { + const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null; + if (isImdsV1Fallback) { + let fallbackBlockedFromProfile = false; + let fallbackBlockedFromProcessEnv = false; + const configValue = await loadConfig2({ + environmentVariableSelector: /* @__PURE__ */ __name((env3) => { + const envValue = env3[AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; + if (envValue === void 0) { + throw new CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init2.logger }); + } + return fallbackBlockedFromProcessEnv; + }, "environmentVariableSelector"), + configFileSelector: /* @__PURE__ */ __name((profile2) => { + const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; + return fallbackBlockedFromProfile; + }, "configFileSelector"), + default: false + }, { + profile + })(); + if (init2.ec2MetadataV1Disabled || configValue) { + const causes = []; + if (init2.ec2MetadataV1Disabled) + causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); + if (fallbackBlockedFromProfile) + causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); + if (fallbackBlockedFromProcessEnv) + causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); + throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(", ")}].`); + } + } + const imdsProfile = (await retry(async () => { + let profile2; + try { + profile2 = await getProfile(options); + } catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile2; + }, maxRetries2)).trim(); + return retry(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(imdsProfile, options, init2); + } catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries2); + }, "getCredentials"); + return async () => { + const endpoint = await getInstanceMetadataEndpoint(); + if (disableFetchToken) { + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } catch (error62) { + if (error62?.statusCode === 400) { + throw Object.assign(error62, { + message: "EC2 Metadata token request returned error" + }); + } else if (error62.message === "TimeoutError" || [403, 404, 405].includes(error62.statusCode)) { + disableFetchToken = true; + } + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token + }, + timeout + }); + } + }; + }, "getInstanceMetadataProvider"); + var getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600" + } + }), "getMetadataToken"); + var getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), "getProfile"); + var getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options, init2) => { + const credentialsResponse = JSON.parse((await httpRequest({ + ...options, + path: IMDS_PATH + profile + })).toString()); + if (!isImdsCredentials(credentialsResponse)) { + throw new CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init2.logger + }); + } + return fromImdsCredentials(credentialsResponse); + }, "getCredentialsFromProfile"); + exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES; + exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; + exports.ENV_CMDS_AUTH_TOKEN = ENV_CMDS_AUTH_TOKEN; + exports.ENV_CMDS_FULL_URI = ENV_CMDS_FULL_URI; + exports.ENV_CMDS_RELATIVE_URI = ENV_CMDS_RELATIVE_URI; + exports.Endpoint = Endpoint; + exports.fromContainerMetadata = fromContainerMetadata; + exports.fromInstanceMetadata = fromInstanceMetadata; + exports.getInstanceMetadataEndpoint = getInstanceMetadataEndpoint; + exports.httpRequest = httpRequest; + exports.providerConfigFromInit = providerConfigFromInit; + } +}); + +// ../../node_modules/.pnpm/@smithy+node-http-handler@4.12.1/node_modules/@smithy/node-http-handler/dist-cjs/index.js +var require_dist_cjs7 = __commonJS({ + "../../node_modules/.pnpm/@smithy+node-http-handler@4.12.1/node_modules/@smithy/node-http-handler/dist-cjs/index.js"(exports) { + var { hasOwn: hasOwn2 } = (init_serde(), __toCommonJS(serde_exports)); + var { streamCollector: streamCollector5 } = (init_serde(), __toCommonJS(serde_exports)); + exports.streamCollector = streamCollector5; + var { buildQueryString: buildQueryString2, HttpResponse: HttpResponse2 } = (init_protocols(), __toCommonJS(protocols_exports)); + var node_https = __require("node:https"); + var { Readable: Readable3 } = __require("node:stream"); + var http2 = __require("node:http2"); + function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal ? abortSignal.reason : void 0; + if (reason) { + if (reason instanceof Error) { + const abortError3 = new Error("Request aborted"); + abortError3.name = "AbortError"; + abortError3.cause = reason; + return abortError3; + } + const abortError2 = new Error(String(reason)); + abortError2.name = "AbortError"; + return abortError2; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; + } + __name(buildAbortError, "buildAbortError"); + var NODEJS_TIMEOUT_ERROR_CODES2 = ["ECONNRESET", "EPIPE", "ETIMEDOUT"]; + var getTransformedHeaders = /* @__PURE__ */ __name((headers) => { + const transformedHeaders = {}; + for (const name2 in headers) { + if (!hasOwn2(headers, name2)) + continue; + const headerValues = headers[name2]; + transformedHeaders[name2] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues; + } + return transformedHeaders; + }, "getTransformedHeaders"); + var timing = { + setTimeout: /* @__PURE__ */ __name((cb, ms) => setTimeout(cb, ms), "setTimeout"), + clearTimeout: /* @__PURE__ */ __name((timeoutId) => clearTimeout(timeoutId), "clearTimeout") + }; + var DEFER_EVENT_LISTENER_TIME$2 = 1e3; + var setConnectionTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => { + if (!timeoutInMs) { + return -1; + } + const registerTimeout = /* @__PURE__ */ __name((offset) => { + const timeoutId = timing.setTimeout(() => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), { + name: "TimeoutError" + })); + }, timeoutInMs - offset); + const doWithSocket = /* @__PURE__ */ __name((socket) => { + if (socket?.connecting) { + socket.on("connect", () => { + timing.clearTimeout(timeoutId); + }); + } else { + timing.clearTimeout(timeoutId); + } + }, "doWithSocket"); + if (request.socket) { + doWithSocket(request.socket); + } else { + request.on("socket", doWithSocket); + } + }, "registerTimeout"); + if (timeoutInMs < 2e3) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME$2), DEFER_EVENT_LISTENER_TIME$2); + }, "setConnectionTimeout"); + var setRequestTimeout = /* @__PURE__ */ __name((req2, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => { + if (timeoutInMs) { + return timing.setTimeout(() => { + let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? "ERROR" : "WARN"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`; + if (throwOnRequestTimeout) { + const error62 = Object.assign(new Error(msg), { + name: "TimeoutError", + code: "ETIMEDOUT" + }); + req2.destroy(error62); + reject(error62); + } else { + msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`; + logger?.warn?.(msg); + } + }, timeoutInMs); + } + return -1; + }, "setRequestTimeout"); + var DEFER_EVENT_LISTENER_TIME$1 = 3e3; + var setSocketKeepAlive = /* @__PURE__ */ __name((request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME$1) => { + if (keepAlive !== true) { + return -1; + } + const registerListener = /* @__PURE__ */ __name(() => { + if (request.socket) { + request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + } else { + request.on("socket", (socket) => { + socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + }); + } + }, "registerListener"); + if (deferTimeMs === 0) { + registerListener(); + return 0; + } + return timing.setTimeout(registerListener, deferTimeMs); + }, "setSocketKeepAlive"); + var DEFER_EVENT_LISTENER_TIME = 3e3; + var setSocketTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => { + const registerTimeout = /* @__PURE__ */ __name((offset) => { + const timeout = timeoutInMs - offset; + const onTimeout = /* @__PURE__ */ __name(() => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: "TimeoutError" })); + }, "onTimeout"); + if (request.socket) { + request.socket.setTimeout(timeout, onTimeout); + request.on("close", () => request.socket?.removeListener("timeout", onTimeout)); + } else { + request.setTimeout(timeout, onTimeout); + } + }, "registerTimeout"); + if (0 < timeoutInMs && timeoutInMs < 6e3) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); + }, "setSocketTimeout"); + var MIN_WAIT_TIME = 6e3; + async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) { + const headers = request.headers; + const expect = headers ? headers.Expect || headers.expect : void 0; + let timeoutId = -1; + let sendBody = true; + if (!externalAgent && expect === "100-continue") { + sendBody = await Promise.race([ + new Promise((resolve) => { + timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + }), + new Promise((resolve) => { + httpRequest.on("continue", () => { + timing.clearTimeout(timeoutId); + resolve(true); + }); + httpRequest.on("response", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + httpRequest.on("error", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + }) + ]); + } + if (sendBody) { + writeBody(httpRequest, request.body); + } + } + __name(writeRequestBody, "writeRequestBody"); + function writeBody(httpRequest, body) { + if (body instanceof Readable3) { + body.pipe(httpRequest); + return; + } + if (body) { + const isBuffer = Buffer.isBuffer(body); + const isString = typeof body === "string"; + if (isBuffer || isString) { + if (isBuffer && body.byteLength === 0) { + httpRequest.end(); + } else { + httpRequest.end(body); + } + return; + } + const uint8 = body; + if (typeof uint8 === "object" && uint8.buffer && typeof uint8.byteOffset === "number" && typeof uint8.byteLength === "number") { + httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength)); + return; + } + httpRequest.end(Buffer.from(body)); + return; + } + httpRequest.end(); + } + __name(writeBody, "writeBody"); + var DEFAULT_REQUEST_TIMEOUT = 0; + var hAgent = void 0; + var hRequest = void 0; + var NodeHttpHandler = class _NodeHttpHandler { + static { + __name(this, "NodeHttpHandler"); + } + config; + configProvider; + socketWarningTimestamp = 0; + externalAgent = false; + metadata = { handlerProtocol: "http/1.1" }; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new _NodeHttpHandler(instanceOrOptions); + } + static checkSocketUsage(agent, socketWarningTimestamp, logger = console) { + const { sockets, requests, maxSockets } = agent; + if (typeof maxSockets !== "number" || maxSockets === Infinity) { + return socketWarningTimestamp; + } + const interval = 15e3; + if (Date.now() - interval < socketWarningTimestamp) { + return socketWarningTimestamp; + } + if (sockets && requests) { + for (const origin in sockets) { + if (!hasOwn2(sockets, origin)) + continue; + const socketsInUse = sockets[origin]?.length ?? 0; + const requestsEnqueued = requests[origin]?.length ?? 0; + if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) { + logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued. +See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html +or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`); + return Date.now(); + } + } + } + return socketWarningTimestamp; + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options().then((_options) => { + resolve(this.resolveDefaultConfig(_options)); + }).catch(reject); + } else { + resolve(this.resolveDefaultConfig(options)); + } + }); + } + destroy() { + this.config?.httpAgent?.destroy(); + this.config?.httpsAgent?.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const config3 = this.config; + const logger = config3.logger; + const isSSL = request.protocol === "https:"; + if (!isSSL && !this.config.httpAgent) { + this.config.httpAgent = await this.config.httpAgentProvider(); + } + return new Promise((_resolve, _reject) => { + let writeRequestBodyPromise = void 0; + let socketWarningTimeoutId = -1; + let connectionTimeoutId = -1; + let requestTimeoutId = -1; + let socketTimeoutId = -1; + let keepAliveTimeoutId = -1; + const clearTimeouts = /* @__PURE__ */ __name(() => { + timing.clearTimeout(socketWarningTimeoutId); + timing.clearTimeout(connectionTimeoutId); + timing.clearTimeout(requestTimeoutId); + timing.clearTimeout(socketTimeoutId); + timing.clearTimeout(keepAliveTimeoutId); + }, "clearTimeouts"); + const resolve = /* @__PURE__ */ __name(async (arg) => { + await writeRequestBodyPromise; + clearTimeouts(); + _resolve(arg); + }, "resolve"); + const reject = /* @__PURE__ */ __name(async (arg) => { + await writeRequestBodyPromise; + clearTimeouts(); + _reject(arg); + }, "reject"); + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const headers = request.headers; + const expectContinue = headers ? (headers.Expect ?? headers.expect) === "100-continue" : false; + let agent = isSSL ? config3.httpsAgent : config3.httpAgent; + if (expectContinue && !this.externalAgent) { + agent = new (isSSL ? node_https.Agent : hAgent)({ + keepAlive: false, + maxSockets: Infinity + }); + } + socketWarningTimeoutId = timing.setTimeout(() => { + this.socketWarningTimestamp = _NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, logger); + }, config3.socketAcquisitionWarningTimeout ?? (config3.requestTimeout ?? 2e3) + (config3.connectionTimeout ?? 1e3)); + const queryString = request.query ? buildQueryString2(request.query) : ""; + let auth = void 0; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password2 = request.password ?? ""; + auth = `${username}:${password2}`; + } + let path2 = request.path; + if (queryString) { + path2 += `?${queryString}`; + } + if (request.fragment) { + path2 += `#${request.fragment}`; + } + let hostname3 = request.hostname ?? ""; + if (hostname3[0] === "[" && hostname3.endsWith("]")) { + hostname3 = request.hostname.slice(1, -1); + } else { + hostname3 = request.hostname; + } + const nodeHttpsOptions = { + headers: request.headers, + host: hostname3, + method: request.method, + path: path2, + port: request.port, + agent, + auth + }; + const requestFunc = isSSL ? node_https.request : hRequest; + const req2 = requestFunc(nodeHttpsOptions, (res) => { + const httpResponse = new HttpResponse2({ + statusCode: res.statusCode || -1, + reason: res.statusMessage, + headers: getTransformedHeaders(res.headers), + body: res + }); + resolve({ response: httpResponse }); + }); + req2.on("error", (err) => { + if (NODEJS_TIMEOUT_ERROR_CODES2.includes(err.code)) { + reject(Object.assign(err, { name: "TimeoutError" })); + } else { + reject(err); + } + }); + if (abortSignal) { + const onAbort = /* @__PURE__ */ __name(() => { + req2.destroy(); + const abortError = buildAbortError(abortSignal); + reject(abortError); + }, "onAbort"); + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req2.once("close", () => signal.removeEventListener("abort", onAbort)); + } else { + abortSignal.onabort = onAbort; + } + } + const effectiveRequestTimeout = requestTimeout ?? config3.requestTimeout; + connectionTimeoutId = setConnectionTimeout(req2, reject, config3.connectionTimeout); + requestTimeoutId = setRequestTimeout(req2, reject, effectiveRequestTimeout, config3.throwOnRequestTimeout, logger ?? console); + socketTimeoutId = setSocketTimeout(req2, reject, config3.socketTimeout); + const httpAgent = nodeHttpsOptions.agent; + if (typeof httpAgent === "object" && "keepAlive" in httpAgent) { + keepAliveTimeoutId = setSocketKeepAlive(req2, { + keepAlive: httpAgent.keepAlive, + keepAliveMsecs: httpAgent.keepAliveMsecs + }); + } + writeRequestBodyPromise = writeRequestBody(req2, request, effectiveRequestTimeout, this.externalAgent).catch((e5) => { + clearTimeouts(); + return _reject(e5); + }); + }); + } + updateHttpClientConfig(key, value) { + this.config = void 0; + this.configProvider = this.configProvider.then((config3) => { + if (key === /* @__PURE__ */ Symbol.for("logger")) { + return { + ...config3, + logger: config3.logger ?? value + }; + } + return { + ...config3, + [key]: value + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + resolveDefaultConfig(options) { + const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger } = options || {}; + const keepAlive = true; + const maxSockets = 50; + return { + connectionTimeout, + requestTimeout, + socketTimeout, + socketAcquisitionWarningTimeout, + throwOnRequestTimeout, + httpAgentProvider: /* @__PURE__ */ __name(async () => { + const node_http = __require("node:http"); + const { Agent, request } = node_http.default ?? node_http; + hRequest = request; + hAgent = Agent; + if (httpAgent instanceof hAgent || typeof httpAgent?.destroy === "function") { + this.externalAgent = true; + return httpAgent; + } + return new hAgent({ keepAlive, maxSockets, ...httpAgent }); + }, "httpAgentProvider"), + httpsAgent: (() => { + if (httpsAgent instanceof node_https.Agent || typeof httpsAgent?.destroy === "function") { + this.externalAgent = true; + return httpsAgent; + } + return new node_https.Agent({ keepAlive, maxSockets, ...httpsAgent }); + })(), + logger + }; + } + }; + var ids = new Uint16Array(1); + var ClientHttp2SessionRef = class { + static { + __name(this, "ClientHttp2SessionRef"); + } + id = ids[0]++; + total = 0; + max = 0; + session; + refs = 0; + constructor(session) { + session.unref(); + this.session = session; + } + retain() { + if (this.session.destroyed) { + throw new Error("@smithy/node-http-handler - cannot acquire reference to destroyed session."); + } + this.refs += 1; + this.total += 1; + this.max = Math.max(this.refs, this.max); + this.session.ref(); + } + free() { + if (this.session.destroyed) { + return; + } + this.refs -= 1; + if (this.refs === 0) { + this.session.unref(); + } + if (this.refs < 0) { + throw new Error("@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement."); + } + } + deref() { + return this.session; + } + close() { + if (!this.session.closed) { + this.session.close(); + } + } + destroy() { + this.refs = 0; + if (!this.session.destroyed) { + this.session.setTimeout(0); + this.session.destroy(); + } + } + useCount() { + return this.refs; + } + }; + var NodeHttp2ConnectionPool = class { + static { + __name(this, "NodeHttp2ConnectionPool"); + } + sessions = []; + maxConcurrency = 0; + constructor(sessions) { + this.sessions = (sessions ?? []).map((session) => new ClientHttp2SessionRef(session)); + } + poll() { + let cleanup = false; + for (const session of this.sessions) { + if (session.deref().destroyed) { + cleanup = true; + continue; + } + if (!this.maxConcurrency || session.useCount() < this.maxConcurrency) { + return session; + } + } + if (cleanup) { + for (const session of this.sessions) { + if (session.deref().destroyed) { + this.remove(session); + } + } + } + } + offerLast(ref) { + this.sessions.push(ref); + } + remove(ref) { + const ix = this.sessions.indexOf(ref); + if (ix > -1) { + this.sessions.splice(ix, 1); + } + } + [Symbol.iterator]() { + return this.sessions[Symbol.iterator](); + } + setMaxConcurrency(maxConcurrency) { + this.maxConcurrency = maxConcurrency; + } + destroy(ref) { + this.remove(ref); + ref.destroy(); + } + }; + var NodeHttp2ConnectionManager = class { + static { + __name(this, "NodeHttp2ConnectionManager"); + } + config; + connectOptions; + connectionPools = /* @__PURE__ */ new Map(); + constructor(config3) { + this.config = config3; + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrency must be greater than zero."); + } + } + lease(requestContext, connectionConfiguration) { + const url2 = this.getUrlString(requestContext); + const pool = this.getPool(url2); + if (!this.config.disableConcurrency && !connectionConfiguration.isEventStream) { + const available = pool.poll(); + if (available) { + available.retain(); + return available; + } + } + const ref = new ClientHttp2SessionRef(this.connect(url2)); + const session = ref.deref(); + if (this.config.maxConcurrency) { + session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => { + if (err) { + throw new Error("Fail to set maxConcurrentStreams to " + this.config.maxConcurrency + "when creating new session for " + requestContext.destination.toString()); + } + }); + } + const graceful = /* @__PURE__ */ __name(() => { + this.removeFromPoolAndClose(url2, ref); + }, "graceful"); + const ensureDestroyed = /* @__PURE__ */ __name(() => { + this.removeFromPoolAndCheckedDestroy(url2, ref); + }, "ensureDestroyed"); + session.on("goaway", graceful); + session.on("error", ensureDestroyed); + session.on("frameError", ensureDestroyed); + session.on("close", ensureDestroyed); + if (connectionConfiguration.requestTimeout) { + session.setTimeout(connectionConfiguration.requestTimeout, ensureDestroyed); + } + pool.offerLast(ref); + ref.retain(); + return ref; + } + release(_requestContext, ref) { + ref.free(); + } + createIsolatedSession(requestContext, connectionConfiguration) { + const url2 = this.getUrlString(requestContext); + const ref = new ClientHttp2SessionRef(this.connect(url2)); + const session = ref.deref(); + session.settings({ maxConcurrentStreams: 1 }); + const ensureDestroyed = /* @__PURE__ */ __name(() => { + ref.destroy(); + }, "ensureDestroyed"); + session.on("error", ensureDestroyed); + session.on("frameError", ensureDestroyed); + session.on("close", ensureDestroyed); + const timeout = connectionConfiguration.requestTimeout ?? 3e5; + session.setTimeout(timeout, ensureDestroyed); + ref.retain(); + return ref; + } + destroy() { + for (const [url2, connectionPool] of this.connectionPools) { + for (const session of [...connectionPool]) { + session.destroy(); + } + this.connectionPools.delete(url2); + } + } + setMaxConcurrentStreams(maxConcurrentStreams) { + if (maxConcurrentStreams && maxConcurrentStreams <= 0) { + throw new RangeError("maxConcurrentStreams must be greater than zero."); + } + this.config.maxConcurrency = maxConcurrentStreams; + for (const pool of this.connectionPools.values()) { + pool.setMaxConcurrency(maxConcurrentStreams); + } + } + setDisableConcurrentStreams(disableConcurrentStreams) { + this.config.disableConcurrency = disableConcurrentStreams; + } + setNodeHttp2ConnectOptions(nodeHttp2ConnectOptions) { + this.connectOptions = nodeHttp2ConnectOptions; + } + debug() { + const pools = {}; + for (const [url2, pool] of this.connectionPools) { + const sessions = []; + for (const ref of pool) { + sessions.push({ + id: ref.id, + active: ref.useCount(), + maxConcurrent: ref.max, + totalRequests: ref.total + }); + } + pools[url2] = { sessions }; + } + return pools; + } + removeFromPoolAndClose(authority, ref) { + this.connectionPools.get(authority)?.remove(ref); + ref.close(); + } + removeFromPoolAndCheckedDestroy(authority, ref) { + this.connectionPools.get(authority)?.remove(ref); + ref.destroy(); + } + getPool(url2) { + if (!this.connectionPools.has(url2)) { + const pool = new NodeHttp2ConnectionPool(); + if (this.config.maxConcurrency) { + pool.setMaxConcurrency(this.config.maxConcurrency); + } + this.connectionPools.set(url2, pool); + } + return this.connectionPools.get(url2); + } + getUrlString(request) { + return request.destination.toString(); + } + connect(url2) { + return this.connectOptions === void 0 ? http2.connect(url2) : http2.connect(url2, this.connectOptions); + } + }; + var { constants } = http2; + var NodeHttp2Handler = class _NodeHttp2Handler { + static { + __name(this, "NodeHttp2Handler"); + } + config; + configProvider; + metadata = { handlerProtocol: "h2" }; + connectionManager = new NodeHttp2ConnectionManager({}); + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new _NodeHttp2Handler(instanceOrOptions); + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options().then((opts) => { + resolve(opts || {}); + }).catch(reject); + } else { + resolve(options || {}); + } + }); + } + destroy() { + this.connectionManager.destroy(); + } + async handle(request, { abortSignal, requestTimeout, isEventStream } = {}) { + if (!this.config) { + this.config = await this.configProvider; + const { disableConcurrentStreams: disableConcurrentStreams2, maxConcurrentStreams, nodeHttp2ConnectOptions } = this.config; + this.connectionManager.setDisableConcurrentStreams(disableConcurrentStreams2 ?? false); + if (maxConcurrentStreams) { + this.connectionManager.setMaxConcurrentStreams(maxConcurrentStreams); + } + if (nodeHttp2ConnectOptions) { + this.connectionManager.setNodeHttp2ConnectOptions(nodeHttp2ConnectOptions); + } + } + const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config; + const useIsolatedSession = disableConcurrentStreams || isEventStream; + const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout; + return new Promise((_resolve, _reject) => { + let fulfilled = false; + let writeRequestBodyPromise = void 0; + const resolve = /* @__PURE__ */ __name(async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }, "resolve"); + const reject = /* @__PURE__ */ __name(async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }, "reject"); + if (abortSignal?.aborted) { + fulfilled = true; + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const { hostname: hostname3, method, port, protocol, query } = request; + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password2 = request.password ?? ""; + auth = `${username}:${password2}@`; + } + const authority = `${protocol}//${auth}${hostname3}${port ? `:${port}` : ""}`; + const requestContext = { destination: new URL(authority) }; + const connectConfig = { + requestTimeout: this.config?.sessionTimeout, + isEventStream + }; + const ref = useIsolatedSession ? this.connectionManager.createIsolatedSession(requestContext, connectConfig) : this.connectionManager.lease(requestContext, connectConfig); + const session = ref.deref(); + const rejectWithDestroy = /* @__PURE__ */ __name((err) => { + if (useIsolatedSession) { + ref.destroy(); + } + fulfilled = true; + reject(err); + }, "rejectWithDestroy"); + const queryString = query ? buildQueryString2(query) : ""; + let path2 = request.path; + if (queryString) { + path2 += `?${queryString}`; + } + if (request.fragment) { + path2 += `#${request.fragment}`; + } + const clientHttp2Stream = session.request({ + ...request.headers, + [constants.HTTP2_HEADER_PATH]: path2, + [constants.HTTP2_HEADER_METHOD]: method + }); + if (effectiveRequestTimeout) { + clientHttp2Stream.setTimeout(effectiveRequestTimeout, () => { + clientHttp2Stream.close(); + const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`); + timeoutError.name = "TimeoutError"; + rejectWithDestroy(timeoutError); + }); + } + if (abortSignal) { + const onAbort = /* @__PURE__ */ __name(() => { + clientHttp2Stream.close(); + const abortError = buildAbortError(abortSignal); + rejectWithDestroy(abortError); + }, "onAbort"); + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + clientHttp2Stream.once("close", () => signal.removeEventListener("abort", onAbort)); + } else { + abortSignal.onabort = onAbort; + } + } + clientHttp2Stream.on("frameError", (type, code, id) => { + rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`)); + }); + clientHttp2Stream.on("error", rejectWithDestroy); + clientHttp2Stream.on("aborted", () => { + rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${clientHttp2Stream.rstCode}.`)); + }); + clientHttp2Stream.on("response", (headers) => { + const httpResponse = new HttpResponse2({ + statusCode: headers[":status"] ?? -1, + headers: getTransformedHeaders(headers), + body: clientHttp2Stream + }); + fulfilled = true; + resolve({ response: httpResponse }); + if (useIsolatedSession) { + session.close(); + clientHttp2Stream.on("end", () => { + ref.destroy(); + }); + } + }); + clientHttp2Stream.on("close", () => { + if (useIsolatedSession) { + ref.destroy(); + } else { + this.connectionManager.release(requestContext, ref); + } + if (!fulfilled) { + const error62 = new Error("Unexpected error: http2 request did not get a response"); + if (session.destroyed) { + error62.name = "TimeoutError"; + } + rejectWithDestroy(error62); + } + }); + writeRequestBodyPromise = writeRequestBody(clientHttp2Stream, request, effectiveRequestTimeout); + }); + } + updateHttpClientConfig(key, value) { + this.config = void 0; + this.configProvider = this.configProvider.then((config3) => { + return { + ...config3, + [key]: value + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + }; + exports.DEFAULT_REQUEST_TIMEOUT = DEFAULT_REQUEST_TIMEOUT; + exports.NodeHttp2Handler = NodeHttp2Handler; + exports.NodeHttpHandler = NodeHttpHandler; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-http@3.972.77/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js +var require_dist_cjs8 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-http@3.972.77/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js"(exports) { + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var { CredentialsProviderError } = (init_config(), __toCommonJS(config_exports)); + var { NodeHttpHandler } = require_dist_cjs7(); + var fs = __require("node:fs/promises"); + var { HttpRequest: HttpRequest2 } = (init_protocols(), __toCommonJS(protocols_exports)); + var { sdkStreamMixin: sdkStreamMixin2, parseRfc3339DateTime } = (init_serde(), __toCommonJS(serde_exports)); + var ECS_CONTAINER_HOST = "169.254.170.2"; + var EKS_CONTAINER_HOST_IPv4 = "169.254.170.23"; + var EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]"; + var checkUrl = /* @__PURE__ */ __name((url2, logger) => { + if (url2.protocol === "https:") { + return; + } + if (url2.hostname === ECS_CONTAINER_HOST || url2.hostname === EKS_CONTAINER_HOST_IPv4 || url2.hostname === EKS_CONTAINER_HOST_IPv6) { + return; + } + if (url2.hostname.includes("[")) { + if (url2.hostname === "[::1]" || url2.hostname === "[0000:0000:0000:0000:0000:0000:0000:0001]") { + return; + } + } else { + if (url2.hostname === "localhost") { + return; + } + const ipComponents = url2.hostname.split("."); + const inRange = /* @__PURE__ */ __name((component) => { + const num = parseInt(component, 10); + return 0 <= num && num <= 255; + }, "inRange"); + if (ipComponents[0] === "127" && inRange(ipComponents[1]) && inRange(ipComponents[2]) && inRange(ipComponents[3]) && ipComponents.length === 4) { + return; + } + } + throw new CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following: + - loopback CIDR 127.0.0.0/8 or [::1/128] + - ECS container host 169.254.170.2 + - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger }); + }, "checkUrl"); + function createGetRequest(url2) { + return new HttpRequest2({ + protocol: url2.protocol, + hostname: url2.hostname, + port: Number(url2.port), + path: url2.pathname, + query: Array.from(url2.searchParams.entries()).reduce((acc, [k5, v]) => { + acc[k5] = v; + return acc; + }, {}), + fragment: url2.hash + }); + } + __name(createGetRequest, "createGetRequest"); + async function getCredentials(response, logger) { + const stream = sdkStreamMixin2(response.body); + const str = await stream.transformToString(); + if (response.statusCode === 200) { + const parsed2 = JSON.parse(str); + if (typeof parsed2.AccessKeyId !== "string" || typeof parsed2.SecretAccessKey !== "string" || typeof parsed2.Token !== "string" || typeof parsed2.Expiration !== "string") { + throw new CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: { AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger }); + } + return { + accessKeyId: parsed2.AccessKeyId, + secretAccessKey: parsed2.SecretAccessKey, + sessionToken: parsed2.Token, + expiration: parseRfc3339DateTime(parsed2.Expiration) + }; + } + if (response.statusCode >= 400 && response.statusCode < 500) { + let parsedBody = {}; + try { + parsedBody = JSON.parse(str); + } catch (e5) { + } + throw Object.assign(new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), { + Code: parsedBody.Code, + Message: parsedBody.Message + }); + } + throw new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }); + } + __name(getCredentials, "getCredentials"); + var retryWrapper = /* @__PURE__ */ __name((toRetry, maxRetries, delayMs) => { + return async () => { + for (let i5 = 0; i5 < maxRetries; ++i5) { + try { + return await toRetry(); + } catch (e5) { + await new Promise((resolve) => setTimeout(resolve, delayMs)); + } + } + return await toRetry(); + }; + }, "retryWrapper"); + var AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; + var DEFAULT_LINK_LOCAL_HOST = "http://169.254.170.2"; + var AWS_CONTAINER_CREDENTIALS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; + var AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE"; + var AWS_CONTAINER_AUTHORIZATION_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; + var fromHttp = /* @__PURE__ */ __name((options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI]; + const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI]; + const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN]; + const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE]; + const warn = options.logger?.constructor?.name === "NoOpLogger" || !options.logger?.warn ? console.warn : options.logger.warn.bind(options.logger); + if (relative && full) { + warn("@aws-sdk/credential-provider-http: you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."); + warn("awsContainerCredentialsRelativeUri will take precedence."); + } + if (token && tokenFile) { + warn("@aws-sdk/credential-provider-http: you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."); + warn("awsContainerAuthorizationTokenFile will take precedence."); + } + if (relative) { + host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`; + } else if (full) { + host = full; + } else { + throw new CredentialsProviderError(`No HTTP credential provider host provided. +Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger }); + } + const url2 = new URL(host); + checkUrl(url2, options.logger); + const requestHandler = NodeHttpHandler.create({ connectionTimeout: options.timeout ?? 1e3 }); + const requestTimeout = options.timeout ?? 1e3; + const provider = retryWrapper(async () => { + const request = createGetRequest(url2); + if (tokenFile) { + request.headers.Authorization = validateToken((await fs.readFile(tokenFile)).toString()); + } else if (token) { + request.headers.Authorization = validateToken(token); + } + try { + const result = await requestHandler.handle(request, { requestTimeout }); + return getCredentials(result.response).then((creds) => setCredentialFeature2(creds, "CREDENTIALS_HTTP", "z")); + } catch (e5) { + throw new CredentialsProviderError(String(e5), { logger: options.logger }); + } + }, options.maxRetries ?? 3, options.timeout ?? 1e3); + return async () => { + try { + return await provider(); + } finally { + requestHandler.destroy?.(); + } + }; + }, "fromHttp"); + var validateToken = /* @__PURE__ */ __name((token) => { + if (token.includes("\r\n")) { + throw new CredentialsProviderError("Authorization token contains invalid \\r\\n sequence."); + } + return token; + }, "validateToken"); + exports.fromHttp = fromHttp; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sso-oauth", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth" + }; +} +var defaultSSOOIDCHttpAuthSchemeParametersProvider, defaultSSOOIDCHttpAuthSchemeProvider, resolveHttpAuthSchemeConfig; +var init_httpAuthSchemeProvider = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js"() { + init_httpAuthSchemes2(); + init_client(); + defaultSSOOIDCHttpAuthSchemeParametersProvider = /* @__PURE__ */ __name(async (config3, context, input2) => { + return { + operation: getSmithyContext(context).operation, + region: await normalizeProvider(config3.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })() + }; + }, "defaultSSOOIDCHttpAuthSchemeParametersProvider"); + __name(createAwsAuthSigv4HttpAuthOption, "createAwsAuthSigv4HttpAuthOption"); + __name(createSmithyApiNoAuthHttpAuthOption, "createSmithyApiNoAuthHttpAuthOption"); + defaultSSOOIDCHttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateToken": + { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + ; + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; + }, "defaultSSOOIDCHttpAuthSchemeProvider"); + resolveHttpAuthSchemeConfig = /* @__PURE__ */ __name((config3) => { + const config_0 = resolveAwsSdkSigV4Config(config3); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config3.authSchemePreference ?? []) + }); + }, "resolveHttpAuthSchemeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js +var resolveClientEndpointParameters, commonParams; +var init_EndpointParameters = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js"() { + resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "sso-oauth" + }); + }, "resolveClientEndpointParameters"); + commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/package.json +var package_default; +var init_package = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/package.json"() { + package_default = { + name: "@aws-sdk/nested-clients", + version: "3.997.49", + description: "Nested clients for AWS SDK packages.", + homepage: "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/nested-clients", + license: "Apache-2.0", + author: { + name: "AWS SDK for JavaScript Team", + url: "https://aws.amazon.com/sdk-for-javascript/" + }, + repository: { + type: "git", + url: "https://github.com/aws/aws-sdk-js-v3.git", + directory: "packages/nested-clients" + }, + files: [ + "./cognito-identity.d.ts", + "./cognito-identity.js", + "./signin.d.ts", + "./signin.js", + "./sso-oidc.d.ts", + "./sso-oidc.js", + "./sso.d.ts", + "./sso.js", + "./sts.d.ts", + "./sts.js", + "dist-*/**" + ], + sideEffects: false, + main: "./dist-cjs/index.js", + module: "./dist-es/index.js", + browser: { + "./dist-es/submodules/cognito-identity/runtimeConfig": "./dist-es/submodules/cognito-identity/runtimeConfig.browser", + "./dist-es/submodules/signin/runtimeConfig": "./dist-es/submodules/signin/runtimeConfig.browser", + "./dist-es/submodules/sso-oidc/runtimeConfig": "./dist-es/submodules/sso-oidc/runtimeConfig.browser", + "./dist-es/submodules/sso/runtimeConfig": "./dist-es/submodules/sso/runtimeConfig.browser", + "./dist-es/submodules/sts/runtimeConfig": "./dist-es/submodules/sts/runtimeConfig.browser" + }, + types: "./dist-types/index.d.ts", + typesVersions: { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ], + "*": [ + "dist-types/ts3.4/submodules/*/index.d.ts" + ] + } + }, + "react-native": {}, + exports: { + "./package.json": "./package.json", + "./sso-oidc": { + types: "./dist-types/submodules/sso-oidc/index.d.ts", + module: "./dist-es/submodules/sso-oidc/index.js", + node: "./dist-cjs/submodules/sso-oidc/index.js", + import: "./dist-es/submodules/sso-oidc/index.js", + require: "./dist-cjs/submodules/sso-oidc/index.js" + }, + "./sts": { + types: "./dist-types/submodules/sts/index.d.ts", + module: "./dist-es/submodules/sts/index.js", + node: "./dist-cjs/submodules/sts/index.js", + import: "./dist-es/submodules/sts/index.js", + require: "./dist-cjs/submodules/sts/index.js" + }, + "./signin": { + types: "./dist-types/submodules/signin/index.d.ts", + module: "./dist-es/submodules/signin/index.js", + node: "./dist-cjs/submodules/signin/index.js", + import: "./dist-es/submodules/signin/index.js", + require: "./dist-cjs/submodules/signin/index.js" + }, + "./cognito-identity": { + types: "./dist-types/submodules/cognito-identity/index.d.ts", + module: "./dist-es/submodules/cognito-identity/index.js", + node: "./dist-cjs/submodules/cognito-identity/index.js", + import: "./dist-es/submodules/cognito-identity/index.js", + require: "./dist-cjs/submodules/cognito-identity/index.js" + }, + "./sso": { + types: "./dist-types/submodules/sso/index.d.ts", + module: "./dist-es/submodules/sso/index.js", + node: "./dist-cjs/submodules/sso/index.js", + import: "./dist-es/submodules/sso/index.js", + require: "./dist-cjs/submodules/sso/index.js" + } + }, + scripts: { + build: "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline", + "build:es": "premove dist-es && tsc -p tsconfig.es.json", + "build:include:deps": 'yarn g:turbo run build -F="$npm_package_name"', + "build:types": "premove dist-types && tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + clean: "premove dist-cjs dist-es dist-types", + lint: "node ../../scripts/validation/submodules-linter.js", + prebuild: "yarn lint", + test: "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + dependencies: { + "@aws-sdk/core": "^3.978.4", + "@aws-sdk/signature-v4-multi-region": "^3.996.48", + "@aws-sdk/types": "^3.974.6", + "@smithy/core": "^3.36.0", + "@smithy/fetch-http-handler": "^5.8.0", + "@smithy/node-http-handler": "^4.12.1", + "@smithy/types": "^4.19.0", + tslib: "^2.6.2" + }, + devDependencies: { + concurrently: "7.0.0", + "downlevel-dts": "0.10.1", + premove: "4.0.0", + typescript: "~7.0.2" + }, + engines: { + node: ">=20.0.0" + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/bdd.js +var k, a, b, c, d, e, f, g, h, i, j, _data, root, r, nodes, bdd; +var init_bdd = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/bdd.js"() { + init_endpoints(); + k = "ref"; + a = -1; + b = true; + c = "isSet"; + d = "PartitionResult"; + e = "booleanEquals"; + f = "getAttr"; + g = { [k]: "Endpoint" }; + h = { [k]: d }; + i = {}; + j = [{ [k]: "Region" }]; + _data = { + conditions: [ + [c, [g]], + [c, j], + ["aws.partition", j, d], + [e, [{ [k]: "UseFIPS" }, b]], + [e, [{ [k]: "UseDualStack" }, b]], + [e, [{ fn: f, argv: [h, "supportsDualStack"] }, b]], + [e, [{ fn: f, argv: [h, "supportsFIPS"] }, b]], + ["stringEquals", [{ fn: f, argv: [h, "name"] }, "aws-us-gov"]] + ], + results: [ + [a], + [a, "Invalid Configuration: FIPS and custom endpoint are not supported"], + [a, "Invalid Configuration: Dualstack and custom endpoint are not supported"], + [g, i], + ["https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", i], + [a, "FIPS and DualStack are enabled, but this partition does not support one or both"], + ["https://oidc.{Region}.amazonaws.com", i], + ["https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}", i], + [a, "FIPS is enabled but this partition does not support FIPS"], + ["https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}", i], + [a, "DualStack is enabled but this partition does not support DualStack"], + ["https://oidc.{Region}.{PartitionResult#dnsSuffix}", i], + [a, "Invalid Configuration: Missing Region"] + ] + }; + root = 2; + r = 1e8; + nodes = new Int32Array([ + -1, + 1, + -1, + 0, + 13, + 3, + 1, + 4, + r + 12, + 2, + 5, + r + 12, + 3, + 8, + 6, + 4, + 7, + r + 11, + 5, + r + 9, + r + 10, + 4, + 11, + 9, + 6, + 10, + r + 8, + 7, + r + 6, + r + 7, + 5, + 12, + r + 5, + 6, + r + 4, + r + 5, + 3, + r + 1, + 14, + 4, + r + 2, + r + 3 + ]); + bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +var cache, defaultEndpointResolver; +var init_endpointResolver = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js"() { + init_client2(); + init_endpoints(); + init_bdd(); + cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"] + }); + defaultEndpointResolver = /* @__PURE__ */ __name((endpointParams, context = {}) => { + return cache.get(endpointParams, () => decideEndpoint(bdd, { + endpointParams, + logger: context.logger + })); + }, "defaultEndpointResolver"); + customEndpointFunctions.aws = awsEndpointFunctions; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js +var SSOOIDCServiceException; +var init_SSOOIDCServiceException = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js"() { + init_client(); + SSOOIDCServiceException = class _SSOOIDCServiceException extends ServiceException { + static { + __name(this, "SSOOIDCServiceException"); + } + static shapeId = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc#SSOOIDCServiceException"; + constructor(options) { + super(options); + Object.setPrototypeOf(this, _SSOOIDCServiceException.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js +var AccessDeniedException, AuthorizationPendingException, ExpiredTokenException, InternalServerException, InvalidClientException, InvalidGrantException, InvalidRequestException, InvalidScopeException, SlowDownException, UnauthorizedClientException, UnsupportedGrantTypeException; +var init_errors = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js"() { + init_SSOOIDCServiceException(); + AccessDeniedException = class _AccessDeniedException extends SSOOIDCServiceException { + static { + __name(this, "AccessDeniedException"); + } + static shapeId = "com.amazonaws.ssooidc#AccessDeniedException"; + name = "AccessDeniedException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _AccessDeniedException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } + }; + AuthorizationPendingException = class _AuthorizationPendingException extends SSOOIDCServiceException { + static { + __name(this, "AuthorizationPendingException"); + } + static shapeId = "com.amazonaws.ssooidc#AuthorizationPendingException"; + name = "AuthorizationPendingException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "AuthorizationPendingException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _AuthorizationPendingException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException { + static { + __name(this, "ExpiredTokenException"); + } + static shapeId = "com.amazonaws.ssooidc#ExpiredTokenException"; + name = "ExpiredTokenException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _ExpiredTokenException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + InternalServerException = class _InternalServerException extends SSOOIDCServiceException { + static { + __name(this, "InternalServerException"); + } + static shapeId = "com.amazonaws.ssooidc#InternalServerException"; + name = "InternalServerException"; + $fault = "server"; + error; + error_description; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts + }); + Object.setPrototypeOf(this, _InternalServerException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + InvalidClientException = class _InvalidClientException extends SSOOIDCServiceException { + static { + __name(this, "InvalidClientException"); + } + static shapeId = "com.amazonaws.ssooidc#InvalidClientException"; + name = "InvalidClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidClientException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + InvalidGrantException = class _InvalidGrantException extends SSOOIDCServiceException { + static { + __name(this, "InvalidGrantException"); + } + static shapeId = "com.amazonaws.ssooidc#InvalidGrantException"; + name = "InvalidGrantException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidGrantException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidGrantException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + InvalidRequestException = class _InvalidRequestException extends SSOOIDCServiceException { + static { + __name(this, "InvalidRequestException"); + } + static shapeId = "com.amazonaws.ssooidc#InvalidRequestException"; + name = "InvalidRequestException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidRequestException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } + }; + InvalidScopeException = class _InvalidScopeException extends SSOOIDCServiceException { + static { + __name(this, "InvalidScopeException"); + } + static shapeId = "com.amazonaws.ssooidc#InvalidScopeException"; + name = "InvalidScopeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidScopeException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidScopeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + SlowDownException = class _SlowDownException extends SSOOIDCServiceException { + static { + __name(this, "SlowDownException"); + } + static shapeId = "com.amazonaws.ssooidc#SlowDownException"; + name = "SlowDownException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "SlowDownException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _SlowDownException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + UnauthorizedClientException = class _UnauthorizedClientException extends SSOOIDCServiceException { + static { + __name(this, "UnauthorizedClientException"); + } + static shapeId = "com.amazonaws.ssooidc#UnauthorizedClientException"; + name = "UnauthorizedClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnauthorizedClientException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _UnauthorizedClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends SSOOIDCServiceException { + static { + __name(this, "UnsupportedGrantTypeException"); + } + static shapeId = "com.amazonaws.ssooidc#UnsupportedGrantTypeException"; + name = "UnsupportedGrantTypeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnsupportedGrantTypeException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _UnsupportedGrantTypeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js +var _ADE, _APE, _AT, _CS, _CT, _CTR, _CTRr, _CV, _ETE, _ICE, _IGE, _IRE, _ISE, _ISEn, _IT, _RT, _SDE, _UCE, _UGTE, _aT, _c, _cI, _cS, _cV, _co, _dC, _e, _eI, _ed, _gT, _h, _hE, _iT, _r, _rT, _rU, _s, _sc, _se, _tT, n0, _s_registry, SSOOIDCServiceException$, n0_registry, AccessDeniedException$, AuthorizationPendingException$, ExpiredTokenException$, InternalServerException$, InvalidClientException$, InvalidGrantException$, InvalidRequestException$, InvalidScopeException$, SlowDownException$, UnauthorizedClientException$, UnsupportedGrantTypeException$, errorTypeRegistries, AccessToken, ClientSecret, CodeVerifier, IdToken, RefreshToken, CreateTokenRequest$, CreateTokenResponse$, Scopes, CreateToken$; +var init_schemas_0 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js"() { + init_schema(); + init_errors(); + init_SSOOIDCServiceException(); + _ADE = "AccessDeniedException"; + _APE = "AuthorizationPendingException"; + _AT = "AccessToken"; + _CS = "ClientSecret"; + _CT = "CreateToken"; + _CTR = "CreateTokenRequest"; + _CTRr = "CreateTokenResponse"; + _CV = "CodeVerifier"; + _ETE = "ExpiredTokenException"; + _ICE = "InvalidClientException"; + _IGE = "InvalidGrantException"; + _IRE = "InvalidRequestException"; + _ISE = "InternalServerException"; + _ISEn = "InvalidScopeException"; + _IT = "IdToken"; + _RT = "RefreshToken"; + _SDE = "SlowDownException"; + _UCE = "UnauthorizedClientException"; + _UGTE = "UnsupportedGrantTypeException"; + _aT = "accessToken"; + _c = "client"; + _cI = "clientId"; + _cS = "clientSecret"; + _cV = "codeVerifier"; + _co = "code"; + _dC = "deviceCode"; + _e = "error"; + _eI = "expiresIn"; + _ed = "error_description"; + _gT = "grantType"; + _h = "http"; + _hE = "httpError"; + _iT = "idToken"; + _r = "reason"; + _rT = "refreshToken"; + _rU = "redirectUri"; + _s = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; + _sc = "scope"; + _se = "server"; + _tT = "tokenType"; + n0 = "com.amazonaws.ssooidc"; + _s_registry = new TypeRegistry(_s); + SSOOIDCServiceException$ = [-3, _s, "SSOOIDCServiceException", 0, [], []]; + _s_registry.registerError(SSOOIDCServiceException$, SSOOIDCServiceException); + n0_registry = new TypeRegistry(n0); + AccessDeniedException$ = [ + -3, + n0, + _ADE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0] + ]; + n0_registry.registerError(AccessDeniedException$, AccessDeniedException); + AuthorizationPendingException$ = [ + -3, + n0, + _APE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(AuthorizationPendingException$, AuthorizationPendingException); + ExpiredTokenException$ = [ + -3, + n0, + _ETE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(ExpiredTokenException$, ExpiredTokenException); + InternalServerException$ = [ + -3, + n0, + _ISE, + { [_e]: _se, [_hE]: 500 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(InternalServerException$, InternalServerException); + InvalidClientException$ = [ + -3, + n0, + _ICE, + { [_e]: _c, [_hE]: 401 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(InvalidClientException$, InvalidClientException); + InvalidGrantException$ = [ + -3, + n0, + _IGE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(InvalidGrantException$, InvalidGrantException); + InvalidRequestException$ = [ + -3, + n0, + _IRE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0] + ]; + n0_registry.registerError(InvalidRequestException$, InvalidRequestException); + InvalidScopeException$ = [ + -3, + n0, + _ISEn, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(InvalidScopeException$, InvalidScopeException); + SlowDownException$ = [ + -3, + n0, + _SDE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(SlowDownException$, SlowDownException); + UnauthorizedClientException$ = [ + -3, + n0, + _UCE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(UnauthorizedClientException$, UnauthorizedClientException); + UnsupportedGrantTypeException$ = [ + -3, + n0, + _UGTE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0] + ]; + n0_registry.registerError(UnsupportedGrantTypeException$, UnsupportedGrantTypeException); + errorTypeRegistries = [ + _s_registry, + n0_registry + ]; + AccessToken = [0, n0, _AT, 8, 0]; + ClientSecret = [0, n0, _CS, 8, 0]; + CodeVerifier = [0, n0, _CV, 8, 0]; + IdToken = [0, n0, _IT, 8, 0]; + RefreshToken = [0, n0, _RT, 8, 0]; + CreateTokenRequest$ = [ + 3, + n0, + _CTR, + 0, + [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV], + [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], + 3 + ]; + CreateTokenResponse$ = [ + 3, + n0, + _CTRr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]] + ]; + Scopes = 64 | 0; + CreateToken$ = [ + 9, + n0, + _CT, + { [_h]: ["POST", "/token", 200] }, + () => CreateTokenRequest$, + () => CreateTokenResponse$ + ]; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js +var getRuntimeConfig; +var init_runtimeConfig_shared = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js"() { + init_httpAuthSchemes2(); + init_protocols2(); + init_dist_es(); + init_checksum(); + init_client(); + init_protocols(); + init_serde(); + init_httpAuthSchemeProvider(); + init_endpointResolver(); + init_schemas_0(); + getRuntimeConfig = /* @__PURE__ */ __name((config3) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config3?.base64Decoder ?? fromBase64, + base64Encoder: config3?.base64Encoder ?? toBase64, + disableHostPrefix: config3?.disableHostPrefix ?? false, + endpointProvider: config3?.endpointProvider ?? defaultEndpointResolver, + extensions: config3?.extensions ?? [], + httpAuthSchemeProvider: config3?.httpAuthSchemeProvider ?? defaultSSOOIDCHttpAuthSchemeProvider, + httpAuthSchemes: config3?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), "identityProvider"), + signer: new AwsSdkSigV4Signer() + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), "identityProvider"), + signer: new NoAuthSigner() + } + ], + logger: config3?.logger ?? new NoOpLogger(), + protocol: config3?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config3?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.ssooidc", + errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "AWSSSOOIDCService" + }, + serviceId: config3?.serviceId ?? "SSO OIDC", + sha256: config3?.sha256 ?? Sha256Node, + urlParser: config3?.urlParser ?? parseUrl, + utf8Decoder: config3?.utf8Decoder ?? fromUtf8, + utf8Encoder: config3?.utf8Encoder ?? toUtf8 + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js +var import_node_http_handler, getRuntimeConfig2; +var init_runtimeConfig = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js"() { + init_package(); + init_client2(); + init_httpAuthSchemes2(); + init_client(); + init_config(); + init_retry(); + init_serde(); + import_node_http_handler = __toESM(require_dist_cjs7()); + init_runtimeConfig_shared(); + getRuntimeConfig2 = /* @__PURE__ */ __name((config3) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config3); + const defaultConfigProvider = /* @__PURE__ */ __name(() => defaultsMode().then(loadConfigsForDefaultMode), "defaultConfigProvider"); + const clientSharedValues = getRuntimeConfig(config3); + emitWarningIfUnsupportedVersion2(process.version); + const loaderConfig = { + profile: config3?.profile, + logger: clientSharedValues.logger + }; + return { + ...clientSharedValues, + ...config3, + runtime: "node", + defaultsMode, + authSchemePreference: config3?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config3?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config3?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: package_default.version }), + maxAttempts: config3?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config3), + region: config3?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: import_node_http_handler.NodeHttpHandler.create(config3?.requestHandler ?? defaultConfigProvider), + retryMode: config3?.retryMode ?? loadConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: /* @__PURE__ */ __name(async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, "default") + }, config3), + streamCollector: config3?.streamCollector ?? import_node_http_handler.streamCollector, + useDualstackEndpoint: config3?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config3?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config3?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig) + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js +var getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig; +var init_httpAuthExtensionConfiguration = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js"() { + getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + } + }; + }, "getHttpAuthExtensionConfiguration"); + resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config3) => { + return { + httpAuthSchemes: config3.httpAuthSchemes(), + httpAuthSchemeProvider: config3.httpAuthSchemeProvider(), + credentials: config3.credentials() + }; + }, "resolveHttpAuthRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js +var resolveRuntimeExtensions; +var init_runtimeExtensions = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js"() { + init_client2(); + init_client(); + init_protocols(); + init_httpAuthExtensionConfiguration(); + resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); + }, "resolveRuntimeExtensions"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js +var SSOOIDCClient; +var init_SSOOIDCClient = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js"() { + init_client2(); + init_dist_es(); + init_client(); + init_config(); + init_endpoints(); + init_protocols(); + init_retry(); + init_schema(); + init_httpAuthSchemeProvider(); + init_EndpointParameters(); + init_runtimeConfig(); + init_runtimeExtensions(); + SSOOIDCClient = class extends Client { + static { + __name(this, "SSOOIDCClient"); + } + config; + constructor(...[configuration]) { + const _config_0 = getRuntimeConfig2(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSSOOIDCHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: /* @__PURE__ */ __name(async (config3) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config3.credentials + }), "identityProviderConfigProvider") + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commandBuilder.js +var command, _ep0, _mw0; +var init_commandBuilder = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commandBuilder.js"() { + init_client(); + init_endpoints(); + init_EndpointParameters(); + command = makeBuilder(commonParams, "AWSSSOOIDCService", "SSOOIDCClient", getEndpointPlugin); + _ep0 = {}; + _mw0 = /* @__PURE__ */ __name((Command2, cs, config3, o3) => [], "_mw0"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js +var CreateTokenCommand; +var init_CreateTokenCommand = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js"() { + init_commandBuilder(); + init_schemas_0(); + CreateTokenCommand = class extends command(_ep0, _mw0, "CreateToken", CreateToken$) { + static { + __name(this, "CreateTokenCommand"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js +var commands, SSOOIDC; +var init_SSOOIDC = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js"() { + init_client(); + init_CreateTokenCommand(); + init_SSOOIDCClient(); + commands = { + CreateTokenCommand + }; + SSOOIDC = class extends SSOOIDCClient { + static { + __name(this, "SSOOIDC"); + } + }; + createAggregatedClient(commands, SSOOIDC); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js +var init_commands = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js"() { + init_CreateTokenCommand(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js +var AccessDeniedExceptionReason, InvalidRequestExceptionReason; +var init_enums = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js"() { + AccessDeniedExceptionReason = { + KMS_ACCESS_DENIED: "KMS_AccessDeniedException" + }; + InvalidRequestExceptionReason = { + KMS_DISABLED_KEY: "KMS_DisabledException", + KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException", + KMS_INVALID_STATE: "KMS_InvalidStateException", + KMS_KEY_NOT_FOUND: "KMS_NotFoundException" + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js +var init_models_0 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js"() { + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js +var sso_oidc_exports = {}; +__export(sso_oidc_exports, { + $Command: () => Command, + AccessDeniedException: () => AccessDeniedException, + AccessDeniedException$: () => AccessDeniedException$, + AccessDeniedExceptionReason: () => AccessDeniedExceptionReason, + AuthorizationPendingException: () => AuthorizationPendingException, + AuthorizationPendingException$: () => AuthorizationPendingException$, + CreateToken$: () => CreateToken$, + CreateTokenCommand: () => CreateTokenCommand, + CreateTokenRequest$: () => CreateTokenRequest$, + CreateTokenResponse$: () => CreateTokenResponse$, + ExpiredTokenException: () => ExpiredTokenException, + ExpiredTokenException$: () => ExpiredTokenException$, + InternalServerException: () => InternalServerException, + InternalServerException$: () => InternalServerException$, + InvalidClientException: () => InvalidClientException, + InvalidClientException$: () => InvalidClientException$, + InvalidGrantException: () => InvalidGrantException, + InvalidGrantException$: () => InvalidGrantException$, + InvalidRequestException: () => InvalidRequestException, + InvalidRequestException$: () => InvalidRequestException$, + InvalidRequestExceptionReason: () => InvalidRequestExceptionReason, + InvalidScopeException: () => InvalidScopeException, + InvalidScopeException$: () => InvalidScopeException$, + SSOOIDC: () => SSOOIDC, + SSOOIDCClient: () => SSOOIDCClient, + SSOOIDCServiceException: () => SSOOIDCServiceException, + SSOOIDCServiceException$: () => SSOOIDCServiceException$, + SlowDownException: () => SlowDownException, + SlowDownException$: () => SlowDownException$, + UnauthorizedClientException: () => UnauthorizedClientException, + UnauthorizedClientException$: () => UnauthorizedClientException$, + UnsupportedGrantTypeException: () => UnsupportedGrantTypeException, + UnsupportedGrantTypeException$: () => UnsupportedGrantTypeException$, + __Client: () => Client, + errorTypeRegistries: () => errorTypeRegistries +}); +var init_sso_oidc = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js"() { + init_SSOOIDCClient(); + init_SSOOIDC(); + init_commands(); + init_client(); + init_schemas_0(); + init_enums(); + init_errors(); + init_models_0(); + init_SSOOIDCServiceException(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+token-providers@3.1153.0/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +var require_dist_cjs9 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+token-providers@3.1153.0/node_modules/@aws-sdk/token-providers/dist-cjs/index.js"(exports) { + var { setTokenFeature: setTokenFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var { getBearerTokenEnvKey: getBearerTokenEnvKey2 } = (init_httpAuthSchemes2(), __toCommonJS(httpAuthSchemes_exports)); + var { TokenProviderError, getSSOTokenFilepath, parseKnownFiles, getProfileName, loadSsoSessionData, getSSOTokenFromFile, memoize, chain } = (init_config(), __toCommonJS(config_exports)); + var { promises } = __require("node:fs"); + var fromEnvSigningName = /* @__PURE__ */ __name(({ logger, signingName } = {}) => async () => { + logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName"); + if (!signingName) { + throw new TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger }); + } + const bearerTokenKey = getBearerTokenEnvKey2(signingName); + if (!(bearerTokenKey in process.env)) { + throw new TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger }); + } + const token = { token: process.env[bearerTokenKey] }; + setTokenFeature2(token, "BEARER_SERVICE_ENV_VARS", "3"); + return token; + }, "fromEnvSigningName"); + var EXPIRE_WINDOW_MS = 5 * 60 * 1e3; + var REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; + var getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion, init2 = {}, callerClientConfig) => { + const { SSOOIDCClient: SSOOIDCClient2 } = (init_sso_oidc(), __toCommonJS(sso_oidc_exports)); + const coalesce = /* @__PURE__ */ __name((prop) => init2.clientConfig?.[prop] ?? init2.parentClientConfig?.[prop] ?? callerClientConfig?.[prop], "coalesce"); + const ssoOidcClient = new SSOOIDCClient2(Object.assign({}, init2.clientConfig ?? {}, { + region: ssoRegion ?? init2.clientConfig?.region, + logger: coalesce("logger"), + userAgentAppId: coalesce("userAgentAppId") + })); + return ssoOidcClient; + }, "getSsoOidcClient"); + var getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion, init2 = {}, callerClientConfig) => { + const { CreateTokenCommand: CreateTokenCommand2 } = (init_sso_oidc(), __toCommonJS(sso_oidc_exports)); + const ssoOidcClient = await getSsoOidcClient(ssoRegion, init2, callerClientConfig); + return ssoOidcClient.send(new CreateTokenCommand2({ + clientId: ssoToken.clientId, + clientSecret: ssoToken.clientSecret, + refreshToken: ssoToken.refreshToken, + grantType: "refresh_token" + })); + }, "getNewSsoOidcToken"); + var validateTokenExpiry = /* @__PURE__ */ __name((token) => { + if (token.expiration && token.expiration.getTime() < Date.now()) { + throw new TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false); + } + }, "validateTokenExpiry"); + var validateTokenKey = /* @__PURE__ */ __name((key, value, forRefresh = false) => { + if (typeof value === "undefined") { + throw new TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`, false); + } + }, "validateTokenKey"); + var { writeFile } = promises; + var writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => { + const tokenFilepath = getSSOTokenFilepath(id); + const tokenString = JSON.stringify(ssoToken, null, 2); + return writeFile(tokenFilepath, tokenString); + }, "writeSSOTokenToFile"); + var lastRefreshAttemptTimes = /* @__PURE__ */ new Map(); + var inFlightRefreshes = /* @__PURE__ */ new Map(); + var fromSso = /* @__PURE__ */ __name((init2 = {}) => async ({ callerClientConfig } = {}) => { + init2.logger?.debug("@aws-sdk/token-providers - fromSso"); + const profiles = await parseKnownFiles(init2); + const profileName = getProfileName({ + profile: init2.profile ?? callerClientConfig?.profile + }); + const profile = profiles[profileName]; + if (!profile) { + throw new TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false); + } else if (!profile["sso_session"]) { + throw new TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`); + } + const ssoSessionName = profile["sso_session"]; + const inFlightRefresh = inFlightRefreshes.get(ssoSessionName); + if (inFlightRefresh) { + return await inFlightRefresh; + } + const ssoSessions = await loadSsoSessionData(init2); + const ssoSession = ssoSessions[ssoSessionName]; + if (!ssoSession) { + throw new TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false); + } + for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) { + if (!ssoSession[ssoSessionRequiredKey]) { + throw new TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false); + } + } + ssoSession["sso_start_url"]; + const ssoRegion = ssoSession["sso_region"]; + let ssoToken; + try { + ssoToken = await getSSOTokenFromFile(ssoSessionName); + } catch (e5) { + throw new TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false); + } + validateTokenKey("accessToken", ssoToken.accessToken); + validateTokenKey("expiresAt", ssoToken.expiresAt); + const { accessToken, expiresAt } = ssoToken; + const existingToken = { + token: accessToken, + expiration: new Date(expiresAt) + }; + if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) { + return existingToken; + } + const inFlightRefreshAfterReadingToken = inFlightRefreshes.get(ssoSessionName); + if (inFlightRefreshAfterReadingToken) { + return await inFlightRefreshAfterReadingToken; + } + const lastRefreshAttemptTime = lastRefreshAttemptTimes.get(ssoSessionName) ?? 0; + if (Date.now() - lastRefreshAttemptTime < 30 * 1e3) { + validateTokenExpiry(existingToken); + return existingToken; + } + validateTokenKey("clientId", ssoToken.clientId, true); + validateTokenKey("clientSecret", ssoToken.clientSecret, true); + validateTokenKey("refreshToken", ssoToken.refreshToken, true); + const refresh = (async () => { + try { + lastRefreshAttemptTimes.set(ssoSessionName, Date.now()); + const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init2, callerClientConfig); + validateTokenKey("accessToken", newSsoOidcToken.accessToken); + validateTokenKey("expiresIn", newSsoOidcToken.expiresIn); + const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3); + try { + await writeSSOTokenToFile(ssoSessionName, { + ...ssoToken, + accessToken: newSsoOidcToken.accessToken, + expiresAt: newTokenExpiration.toISOString(), + refreshToken: newSsoOidcToken.refreshToken + }); + } catch (error62) { + } + return { + token: newSsoOidcToken.accessToken, + expiration: newTokenExpiration + }; + } catch (error62) { + validateTokenExpiry(existingToken); + return existingToken; + } + })(); + inFlightRefreshes.set(ssoSessionName, refresh); + try { + return await refresh; + } finally { + inFlightRefreshes.delete(ssoSessionName); + } + }, "fromSso"); + var fromStatic = /* @__PURE__ */ __name(({ token, logger }) => async () => { + logger?.debug("@aws-sdk/token-providers - fromStatic"); + if (!token || !token.token) { + throw new TokenProviderError(`Please pass a valid token to fromStatic`, false); + } + return token; + }, "fromStatic"); + var nodeProvider = /* @__PURE__ */ __name((init2 = {}) => memoize(chain(fromSso(init2), async () => { + throw new TokenProviderError("Could not load token from any providers", false); + }), (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5, (token) => token.expiration !== void 0), "nodeProvider"); + exports.fromEnvSigningName = fromEnvSigningName; + exports.fromSso = fromSso; + exports.fromStatic = fromStatic; + exports.nodeProvider = nodeProvider; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js +function createAwsAuthSigv4HttpAuthOption2(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "awsssoportal", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; +} +function createSmithyApiNoAuthHttpAuthOption2(authParameters) { + return { + schemeId: "smithy.api#noAuth" + }; +} +var defaultSSOHttpAuthSchemeParametersProvider, defaultSSOHttpAuthSchemeProvider, resolveHttpAuthSchemeConfig2; +var init_httpAuthSchemeProvider2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js"() { + init_httpAuthSchemes2(); + init_client(); + defaultSSOHttpAuthSchemeParametersProvider = /* @__PURE__ */ __name(async (config3, context, input2) => { + return { + operation: getSmithyContext(context).operation, + region: await normalizeProvider(config3.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })() + }; + }, "defaultSSOHttpAuthSchemeParametersProvider"); + __name(createAwsAuthSigv4HttpAuthOption2, "createAwsAuthSigv4HttpAuthOption"); + __name(createSmithyApiNoAuthHttpAuthOption2, "createSmithyApiNoAuthHttpAuthOption"); + defaultSSOHttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetRoleCredentials": + { + options.push(createSmithyApiNoAuthHttpAuthOption2(authParameters)); + break; + } + ; + default: { + options.push(createAwsAuthSigv4HttpAuthOption2(authParameters)); + } + } + return options; + }, "defaultSSOHttpAuthSchemeProvider"); + resolveHttpAuthSchemeConfig2 = /* @__PURE__ */ __name((config3) => { + const config_0 = resolveAwsSdkSigV4Config(config3); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config3.authSchemePreference ?? []) + }); + }, "resolveHttpAuthSchemeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js +var resolveClientEndpointParameters2, commonParams2; +var init_EndpointParameters2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js"() { + resolveClientEndpointParameters2 = /* @__PURE__ */ __name((options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "awsssoportal" + }); + }, "resolveClientEndpointParameters"); + commonParams2 = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/bdd.js +var k2, a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, _data2, root2, r2, nodes2, bdd2; +var init_bdd2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/bdd.js"() { + init_endpoints(); + k2 = "ref"; + a2 = -1; + b2 = true; + c2 = "isSet"; + d2 = "PartitionResult"; + e2 = "booleanEquals"; + f2 = "getAttr"; + g2 = { [k2]: "Endpoint" }; + h2 = { [k2]: d2 }; + i2 = {}; + j2 = [{ [k2]: "Region" }]; + _data2 = { + conditions: [ + [c2, [g2]], + [c2, j2], + ["aws.partition", j2, d2], + [e2, [{ [k2]: "UseFIPS" }, b2]], + [e2, [{ [k2]: "UseDualStack" }, b2]], + [e2, [{ fn: f2, argv: [h2, "supportsDualStack"] }, b2]], + [e2, [{ fn: f2, argv: [h2, "supportsFIPS"] }, b2]], + ["stringEquals", [{ fn: f2, argv: [h2, "name"] }, "aws-us-gov"]] + ], + results: [ + [a2], + [a2, "Invalid Configuration: FIPS and custom endpoint are not supported"], + [a2, "Invalid Configuration: Dualstack and custom endpoint are not supported"], + [g2, i2], + ["https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", i2], + [a2, "FIPS and DualStack are enabled, but this partition does not support one or both"], + ["https://portal.sso.{Region}.amazonaws.com", i2], + ["https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}", i2], + [a2, "FIPS is enabled but this partition does not support FIPS"], + ["https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}", i2], + [a2, "DualStack is enabled but this partition does not support DualStack"], + ["https://portal.sso.{Region}.{PartitionResult#dnsSuffix}", i2], + [a2, "Invalid Configuration: Missing Region"] + ] + }; + root2 = 2; + r2 = 1e8; + nodes2 = new Int32Array([ + -1, + 1, + -1, + 0, + 13, + 3, + 1, + 4, + r2 + 12, + 2, + 5, + r2 + 12, + 3, + 8, + 6, + 4, + 7, + r2 + 11, + 5, + r2 + 9, + r2 + 10, + 4, + 11, + 9, + 6, + 10, + r2 + 8, + 7, + r2 + 6, + r2 + 7, + 5, + 12, + r2 + 5, + 6, + r2 + 4, + r2 + 5, + 3, + r2 + 1, + 14, + 4, + r2 + 2, + r2 + 3 + ]); + bdd2 = BinaryDecisionDiagram.from(nodes2, root2, _data2.conditions, _data2.results); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js +var cache2, defaultEndpointResolver2; +var init_endpointResolver2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js"() { + init_client2(); + init_endpoints(); + init_bdd2(); + cache2 = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"] + }); + defaultEndpointResolver2 = /* @__PURE__ */ __name((endpointParams, context = {}) => { + return cache2.get(endpointParams, () => decideEndpoint(bdd2, { + endpointParams, + logger: context.logger + })); + }, "defaultEndpointResolver"); + customEndpointFunctions.aws = awsEndpointFunctions; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js +var SSOServiceException; +var init_SSOServiceException = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js"() { + init_client(); + SSOServiceException = class _SSOServiceException extends ServiceException { + static { + __name(this, "SSOServiceException"); + } + static shapeId = "smithy.ts.sdk.synthetic.com.amazonaws.sso#SSOServiceException"; + constructor(options) { + super(options); + Object.setPrototypeOf(this, _SSOServiceException.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js +var InvalidRequestException2, ResourceNotFoundException, TooManyRequestsException, UnauthorizedException2; +var init_errors2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js"() { + init_SSOServiceException(); + InvalidRequestException2 = class _InvalidRequestException extends SSOServiceException { + static { + __name(this, "InvalidRequestException"); + } + static shapeId = "com.amazonaws.sso#InvalidRequestException"; + name = "InvalidRequestException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidRequestException.prototype); + } + }; + ResourceNotFoundException = class _ResourceNotFoundException extends SSOServiceException { + static { + __name(this, "ResourceNotFoundException"); + } + static shapeId = "com.amazonaws.sso#ResourceNotFoundException"; + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _ResourceNotFoundException.prototype); + } + }; + TooManyRequestsException = class _TooManyRequestsException extends SSOServiceException { + static { + __name(this, "TooManyRequestsException"); + } + static shapeId = "com.amazonaws.sso#TooManyRequestsException"; + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _TooManyRequestsException.prototype); + } + }; + UnauthorizedException2 = class _UnauthorizedException extends SSOServiceException { + static { + __name(this, "UnauthorizedException"); + } + static shapeId = "com.amazonaws.sso#UnauthorizedException"; + name = "UnauthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "UnauthorizedException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _UnauthorizedException.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js +var _ATT, _GRC, _GRCR, _GRCRe, _IRE2, _RC, _RNFE, _SAKT, _STT, _TMRE, _UE, _aI, _aKI, _aT2, _ai, _c2, _e2, _ex, _h2, _hE2, _hH, _hQ, _m, _rC, _rN, _rn, _s2, _sAK, _sT, _xasbt, n02, _s_registry2, SSOServiceException$, n0_registry2, InvalidRequestException$2, ResourceNotFoundException$, TooManyRequestsException$, UnauthorizedException$, errorTypeRegistries2, AccessTokenType, SecretAccessKeyType, SessionTokenType, GetRoleCredentialsRequest$, GetRoleCredentialsResponse$, RoleCredentials$, GetRoleCredentials$; +var init_schemas_02 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js"() { + init_schema(); + init_errors2(); + init_SSOServiceException(); + _ATT = "AccessTokenType"; + _GRC = "GetRoleCredentials"; + _GRCR = "GetRoleCredentialsRequest"; + _GRCRe = "GetRoleCredentialsResponse"; + _IRE2 = "InvalidRequestException"; + _RC = "RoleCredentials"; + _RNFE = "ResourceNotFoundException"; + _SAKT = "SecretAccessKeyType"; + _STT = "SessionTokenType"; + _TMRE = "TooManyRequestsException"; + _UE = "UnauthorizedException"; + _aI = "accountId"; + _aKI = "accessKeyId"; + _aT2 = "accessToken"; + _ai = "account_id"; + _c2 = "client"; + _e2 = "error"; + _ex = "expiration"; + _h2 = "http"; + _hE2 = "httpError"; + _hH = "httpHeader"; + _hQ = "httpQuery"; + _m = "message"; + _rC = "roleCredentials"; + _rN = "roleName"; + _rn = "role_name"; + _s2 = "smithy.ts.sdk.synthetic.com.amazonaws.sso"; + _sAK = "secretAccessKey"; + _sT = "sessionToken"; + _xasbt = "x-amz-sso_bearer_token"; + n02 = "com.amazonaws.sso"; + _s_registry2 = new TypeRegistry(_s2); + SSOServiceException$ = [-3, _s2, "SSOServiceException", 0, [], []]; + _s_registry2.registerError(SSOServiceException$, SSOServiceException); + n0_registry2 = new TypeRegistry(n02); + InvalidRequestException$2 = [ + -3, + n02, + _IRE2, + { [_e2]: _c2, [_hE2]: 400 }, + [_m], + [0] + ]; + n0_registry2.registerError(InvalidRequestException$2, InvalidRequestException2); + ResourceNotFoundException$ = [ + -3, + n02, + _RNFE, + { [_e2]: _c2, [_hE2]: 404 }, + [_m], + [0] + ]; + n0_registry2.registerError(ResourceNotFoundException$, ResourceNotFoundException); + TooManyRequestsException$ = [ + -3, + n02, + _TMRE, + { [_e2]: _c2, [_hE2]: 429 }, + [_m], + [0] + ]; + n0_registry2.registerError(TooManyRequestsException$, TooManyRequestsException); + UnauthorizedException$ = [ + -3, + n02, + _UE, + { [_e2]: _c2, [_hE2]: 401 }, + [_m], + [0] + ]; + n0_registry2.registerError(UnauthorizedException$, UnauthorizedException2); + errorTypeRegistries2 = [ + _s_registry2, + n0_registry2 + ]; + AccessTokenType = [0, n02, _ATT, 8, 0]; + SecretAccessKeyType = [0, n02, _SAKT, 8, 0]; + SessionTokenType = [0, n02, _STT, 8, 0]; + GetRoleCredentialsRequest$ = [ + 3, + n02, + _GRCR, + 0, + [_rN, _aI, _aT2], + [[0, { [_hQ]: _rn }], [0, { [_hQ]: _ai }], [() => AccessTokenType, { [_hH]: _xasbt }]], + 3 + ]; + GetRoleCredentialsResponse$ = [ + 3, + n02, + _GRCRe, + 0, + [_rC], + [[() => RoleCredentials$, 0]] + ]; + RoleCredentials$ = [ + 3, + n02, + _RC, + 0, + [_aKI, _sAK, _sT, _ex], + [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1] + ]; + GetRoleCredentials$ = [ + 9, + n02, + _GRC, + { [_h2]: ["GET", "/federation/credentials", 200] }, + () => GetRoleCredentialsRequest$, + () => GetRoleCredentialsResponse$ + ]; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js +var getRuntimeConfig3; +var init_runtimeConfig_shared2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js"() { + init_httpAuthSchemes2(); + init_protocols2(); + init_dist_es(); + init_checksum(); + init_client(); + init_protocols(); + init_serde(); + init_httpAuthSchemeProvider2(); + init_endpointResolver2(); + init_schemas_02(); + getRuntimeConfig3 = /* @__PURE__ */ __name((config3) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config3?.base64Decoder ?? fromBase64, + base64Encoder: config3?.base64Encoder ?? toBase64, + disableHostPrefix: config3?.disableHostPrefix ?? false, + endpointProvider: config3?.endpointProvider ?? defaultEndpointResolver2, + extensions: config3?.extensions ?? [], + httpAuthSchemeProvider: config3?.httpAuthSchemeProvider ?? defaultSSOHttpAuthSchemeProvider, + httpAuthSchemes: config3?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), "identityProvider"), + signer: new AwsSdkSigV4Signer() + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), "identityProvider"), + signer: new NoAuthSigner() + } + ], + logger: config3?.logger ?? new NoOpLogger(), + protocol: config3?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config3?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sso", + errorTypeRegistries: errorTypeRegistries2, + version: "2019-06-10", + serviceTarget: "SWBPortalService" + }, + serviceId: config3?.serviceId ?? "SSO", + sha256: config3?.sha256 ?? Sha256Node, + urlParser: config3?.urlParser ?? parseUrl, + utf8Decoder: config3?.utf8Decoder ?? fromUtf8, + utf8Encoder: config3?.utf8Encoder ?? toUtf8 + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js +var import_node_http_handler2, getRuntimeConfig4; +var init_runtimeConfig2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js"() { + init_package(); + init_client2(); + init_httpAuthSchemes2(); + init_client(); + init_config(); + init_retry(); + init_serde(); + import_node_http_handler2 = __toESM(require_dist_cjs7()); + init_runtimeConfig_shared2(); + getRuntimeConfig4 = /* @__PURE__ */ __name((config3) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config3); + const defaultConfigProvider = /* @__PURE__ */ __name(() => defaultsMode().then(loadConfigsForDefaultMode), "defaultConfigProvider"); + const clientSharedValues = getRuntimeConfig3(config3); + emitWarningIfUnsupportedVersion2(process.version); + const loaderConfig = { + profile: config3?.profile, + logger: clientSharedValues.logger + }; + return { + ...clientSharedValues, + ...config3, + runtime: "node", + defaultsMode, + authSchemePreference: config3?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config3?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config3?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: package_default.version }), + maxAttempts: config3?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config3), + region: config3?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: import_node_http_handler2.NodeHttpHandler.create(config3?.requestHandler ?? defaultConfigProvider), + retryMode: config3?.retryMode ?? loadConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: /* @__PURE__ */ __name(async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, "default") + }, config3), + streamCollector: config3?.streamCollector ?? import_node_http_handler2.streamCollector, + useDualstackEndpoint: config3?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config3?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config3?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig) + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js +var getHttpAuthExtensionConfiguration2, resolveHttpAuthRuntimeConfig2; +var init_httpAuthExtensionConfiguration2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js"() { + getHttpAuthExtensionConfiguration2 = /* @__PURE__ */ __name((runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + } + }; + }, "getHttpAuthExtensionConfiguration"); + resolveHttpAuthRuntimeConfig2 = /* @__PURE__ */ __name((config3) => { + return { + httpAuthSchemes: config3.httpAuthSchemes(), + httpAuthSchemeProvider: config3.httpAuthSchemeProvider(), + credentials: config3.credentials() + }; + }, "resolveHttpAuthRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js +var resolveRuntimeExtensions2; +var init_runtimeExtensions2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js"() { + init_client2(); + init_client(); + init_protocols(); + init_httpAuthExtensionConfiguration2(); + resolveRuntimeExtensions2 = /* @__PURE__ */ __name((runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration2(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig2(extensionConfiguration)); + }, "resolveRuntimeExtensions"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js +var SSOClient; +var init_SSOClient = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js"() { + init_client2(); + init_dist_es(); + init_client(); + init_config(); + init_endpoints(); + init_protocols(); + init_retry(); + init_schema(); + init_httpAuthSchemeProvider2(); + init_EndpointParameters2(); + init_runtimeConfig2(); + init_runtimeExtensions2(); + SSOClient = class extends Client { + static { + __name(this, "SSOClient"); + } + config; + constructor(...[configuration]) { + const _config_0 = getRuntimeConfig4(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters2(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig2(_config_6); + const _config_8 = resolveRuntimeExtensions2(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSSOHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: /* @__PURE__ */ __name(async (config3) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config3.credentials + }), "identityProviderConfigProvider") + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commandBuilder.js +var command2, _ep02, _mw02; +var init_commandBuilder2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commandBuilder.js"() { + init_client(); + init_endpoints(); + init_EndpointParameters2(); + command2 = makeBuilder(commonParams2, "SWBPortalService", "SSOClient", getEndpointPlugin); + _ep02 = {}; + _mw02 = /* @__PURE__ */ __name((Command2, cs, config3, o3) => [], "_mw0"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js +var GetRoleCredentialsCommand; +var init_GetRoleCredentialsCommand = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js"() { + init_commandBuilder2(); + init_schemas_02(); + GetRoleCredentialsCommand = class extends command2(_ep02, _mw02, "GetRoleCredentials", GetRoleCredentials$) { + static { + __name(this, "GetRoleCredentialsCommand"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js +var commands2, SSO; +var init_SSO = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js"() { + init_client(); + init_GetRoleCredentialsCommand(); + init_SSOClient(); + commands2 = { + GetRoleCredentialsCommand + }; + SSO = class extends SSOClient { + static { + __name(this, "SSO"); + } + }; + createAggregatedClient(commands2, SSO); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js +var init_commands2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js"() { + init_GetRoleCredentialsCommand(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js +var init_models_02 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js"() { + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js +var sso_exports = {}; +__export(sso_exports, { + $Command: () => Command, + GetRoleCredentials$: () => GetRoleCredentials$, + GetRoleCredentialsCommand: () => GetRoleCredentialsCommand, + GetRoleCredentialsRequest$: () => GetRoleCredentialsRequest$, + GetRoleCredentialsResponse$: () => GetRoleCredentialsResponse$, + InvalidRequestException: () => InvalidRequestException2, + InvalidRequestException$: () => InvalidRequestException$2, + ResourceNotFoundException: () => ResourceNotFoundException, + ResourceNotFoundException$: () => ResourceNotFoundException$, + RoleCredentials$: () => RoleCredentials$, + SSO: () => SSO, + SSOClient: () => SSOClient, + SSOServiceException: () => SSOServiceException, + SSOServiceException$: () => SSOServiceException$, + TooManyRequestsException: () => TooManyRequestsException, + TooManyRequestsException$: () => TooManyRequestsException$, + UnauthorizedException: () => UnauthorizedException2, + UnauthorizedException$: () => UnauthorizedException$, + __Client: () => Client, + errorTypeRegistries: () => errorTypeRegistries2 +}); +var init_sso = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js"() { + init_SSOClient(); + init_SSO(); + init_commands2(); + init_client(); + init_schemas_02(); + init_errors2(); + init_models_02(); + init_SSOServiceException(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-sso@3.973.19/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BGYXHf8s.js +var require_loadSso_BGYXHf8s = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-sso@3.973.19/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BGYXHf8s.js"(exports) { + var { GetRoleCredentialsCommand: GetRoleCredentialsCommand2, SSOClient: SSOClient2 } = (init_sso(), __toCommonJS(sso_exports)); + exports.GetRoleCredentialsCommand = GetRoleCredentialsCommand2; + exports.SSOClient = SSOClient2; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-sso@3.973.19/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +var require_dist_cjs10 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-sso@3.973.19/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js"(exports) { + var { CredentialsProviderError, getSSOTokenFromFile, getProfileName, parseKnownFiles, loadSsoSessionData } = (init_config(), __toCommonJS(config_exports)); + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var { fromSso } = require_dist_cjs9(); + var isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === "string" || typeof arg.sso_account_id === "string" || typeof arg.sso_session === "string" || typeof arg.sso_region === "string" || typeof arg.sso_role_name === "string"), "isSsoProfile"); + var SHOULD_FAIL_CREDENTIAL_CHAIN = false; + var resolveSSOCredentials = /* @__PURE__ */ __name(async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger }) => { + let token; + const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`; + if (ssoSession) { + try { + const _token = await fromSso({ + profile, + filepath, + configFilepath, + ignoreCache, + clientConfig, + parentClientConfig, + logger + })({ callerClientConfig }); + token = { + accessToken: _token.token, + expiresAt: new Date(_token.expiration).toISOString() + }; + } catch (e5) { + throw new CredentialsProviderError(e5.message, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger + }); + } + } else { + try { + token = await getSSOTokenFromFile(ssoStartUrl); + } catch (e5) { + throw new CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger + }); + } + } + if (new Date(token.expiresAt).getTime() - Date.now() <= 0) { + throw new CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger + }); + } + const { accessToken } = token; + const { SSOClient: SSOClient2, GetRoleCredentialsCommand: GetRoleCredentialsCommand2 } = require_loadSso_BGYXHf8s(); + const sso = ssoClient || new SSOClient2(Object.assign({}, clientConfig ?? {}, { + logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger, + region: clientConfig?.region ?? ssoRegion, + userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId + })); + let ssoResp; + try { + ssoResp = await sso.send(new GetRoleCredentialsCommand2({ + accountId: ssoAccountId, + roleName: ssoRoleName, + accessToken + })); + } catch (e5) { + throw new CredentialsProviderError(e5, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger + }); + } + const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {} } = ssoResp; + if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) { + throw new CredentialsProviderError("SSO returns an invalid temporary credential.", { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger + }); + } + const credentials = { + accessKeyId, + secretAccessKey, + sessionToken, + expiration: new Date(expiration), + ...credentialScope && { credentialScope }, + ...accountId && { accountId } + }; + if (ssoSession) { + setCredentialFeature2(credentials, "CREDENTIALS_SSO", "s"); + } else { + setCredentialFeature2(credentials, "CREDENTIALS_SSO_LEGACY", "u"); + } + return credentials; + }, "resolveSSOCredentials"); + var validateSsoProfile = /* @__PURE__ */ __name((profile, logger) => { + const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile; + if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) { + throw new CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")} +Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger }); + } + return profile; + }, "validateSsoProfile"); + var fromSSO = /* @__PURE__ */ __name((init2 = {}) => async ({ callerClientConfig } = {}) => { + init2.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init2; + const { ssoClient } = init2; + const profileName = getProfileName({ + profile: init2.profile ?? callerClientConfig?.profile + }); + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + const profiles = await parseKnownFiles(init2); + const profile = profiles[profileName]; + if (!profile) { + throw new CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init2.logger }); + } + if (!isSsoProfile(profile)) { + throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, { + logger: init2.logger + }); + } + if (profile?.sso_session) { + const ssoSessions = await loadSsoSessionData(init2); + const session = ssoSessions[profile.sso_session]; + const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`; + if (ssoRegion && ssoRegion !== session.sso_region) { + throw new CredentialsProviderError(`Conflicting SSO region` + conflictMsg, { + tryNextLink: false, + logger: init2.logger + }); + } + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { + tryNextLink: false, + logger: init2.logger + }); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init2.logger); + return resolveSSOCredentials({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient, + clientConfig: init2.clientConfig, + parentClientConfig: init2.parentClientConfig, + callerClientConfig: init2.callerClientConfig, + profile: profileName, + filepath: init2.filepath, + configFilepath: init2.configFilepath, + ignoreCache: init2.ignoreCache, + logger: init2.logger + }); + } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', { tryNextLink: false, logger: init2.logger }); + } else { + return resolveSSOCredentials({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig: init2.clientConfig, + parentClientConfig: init2.parentClientConfig, + callerClientConfig: init2.callerClientConfig, + profile: profileName, + filepath: init2.filepath, + configFilepath: init2.configFilepath, + ignoreCache: init2.ignoreCache, + logger: init2.logger + }); + } + }, "fromSSO"); + exports.fromSSO = fromSSO; + exports.isSsoProfile = isSsoProfile; + exports.validateSsoProfile = validateSsoProfile; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/bdd.js +var q, a3, b3, c3, d3, e3, f3, g3, h3, i3, j3, k3, l, m, n, o, p, _data3, root3, r3, nodes3, bdd3; +var init_bdd3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/bdd.js"() { + init_endpoints(); + q = "ref"; + a3 = -1; + b3 = true; + c3 = "isSet"; + d3 = "PartitionResult"; + e3 = "booleanEquals"; + f3 = "stringEquals"; + g3 = "getAttr"; + h3 = "us-east-1"; + i3 = "sigv4"; + j3 = "sts"; + k3 = "https://sts.{Region}.{PartitionResult#dnsSuffix}"; + l = { [q]: "Endpoint" }; + m = { [q]: "Region" }; + n = { [q]: d3 }; + o = {}; + p = [m]; + _data3 = { + conditions: [ + [c3, [l]], + [c3, p], + ["aws.partition", p, d3], + [e3, [{ [q]: "UseFIPS" }, b3]], + [e3, [{ [q]: "UseDualStack" }, b3]], + [f3, [m, "aws-global"]], + [e3, [{ [q]: "UseGlobalEndpoint" }, b3]], + [f3, [m, "eu-central-1"]], + [e3, [{ fn: g3, argv: [n, "supportsDualStack"] }, b3]], + [e3, [{ fn: g3, argv: [n, "supportsFIPS"] }, b3]], + [f3, [m, "ap-south-1"]], + [f3, [m, "eu-north-1"]], + [f3, [m, "eu-west-1"]], + [f3, [m, "eu-west-2"]], + [f3, [m, "eu-west-3"]], + [f3, [m, "sa-east-1"]], + [f3, [m, h3]], + [f3, [m, "us-east-2"]], + [f3, [m, "us-west-2"]], + [f3, [m, "us-west-1"]], + [f3, [m, "ca-central-1"]], + [f3, [m, "ap-southeast-1"]], + [f3, [m, "ap-northeast-1"]], + [f3, [m, "ap-southeast-2"]], + [f3, [{ fn: g3, argv: [n, "name"] }, "aws-us-gov"]] + ], + results: [ + [a3], + ["https://sts.amazonaws.com", { authSchemes: [{ name: i3, signingName: j3, signingRegion: h3 }] }], + [k3, { authSchemes: [{ name: i3, signingName: j3, signingRegion: "{Region}" }] }], + [a3, "Invalid Configuration: FIPS and custom endpoint are not supported"], + [a3, "Invalid Configuration: Dualstack and custom endpoint are not supported"], + [l, o], + ["https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", o], + [a3, "FIPS and DualStack are enabled, but this partition does not support one or both"], + ["https://sts.{Region}.amazonaws.com", o], + ["https://sts-fips.{Region}.{PartitionResult#dnsSuffix}", o], + [a3, "FIPS is enabled but this partition does not support FIPS"], + ["https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}", o], + [a3, "DualStack is enabled but this partition does not support DualStack"], + [k3, o], + [a3, "Invalid Configuration: Missing Region"] + ] + }; + root3 = 2; + r3 = 1e8; + nodes3 = new Int32Array([ + -1, + 1, + -1, + 0, + 30, + 3, + 1, + 4, + r3 + 14, + 2, + 5, + r3 + 14, + 3, + 25, + 6, + 4, + 24, + 7, + 5, + r3 + 1, + 8, + 6, + 9, + r3 + 13, + 7, + r3 + 1, + 10, + 10, + r3 + 1, + 11, + 11, + r3 + 1, + 12, + 12, + r3 + 1, + 13, + 13, + r3 + 1, + 14, + 14, + r3 + 1, + 15, + 15, + r3 + 1, + 16, + 16, + r3 + 1, + 17, + 17, + r3 + 1, + 18, + 18, + r3 + 1, + 19, + 19, + r3 + 1, + 20, + 20, + r3 + 1, + 21, + 21, + r3 + 1, + 22, + 22, + r3 + 1, + 23, + 23, + r3 + 1, + r3 + 2, + 8, + r3 + 11, + r3 + 12, + 4, + 28, + 26, + 9, + 27, + r3 + 10, + 24, + r3 + 8, + r3 + 9, + 8, + 29, + r3 + 7, + 9, + r3 + 6, + r3 + 7, + 3, + r3 + 3, + 31, + 4, + r3 + 4, + r3 + 5 + ]); + bdd3 = BinaryDecisionDiagram.from(nodes3, root3, _data3.conditions, _data3.results); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js +var cache3, defaultEndpointResolver3; +var init_endpointResolver3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js"() { + init_client2(); + init_endpoints(); + init_bdd3(); + cache3 = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS", "UseGlobalEndpoint"] + }); + defaultEndpointResolver3 = /* @__PURE__ */ __name((endpointParams, context = {}) => { + return cache3.get(endpointParams, () => decideEndpoint(bdd3, { + endpointParams, + logger: context.logger + })); + }, "defaultEndpointResolver"); + customEndpointFunctions.aws = awsEndpointFunctions; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +function createAwsAuthSigv4HttpAuthOption3(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sts", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; +} +function createAwsAuthSigv4aHttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4a", + signingProperties: { + name: "sts", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; +} +function createSmithyApiNoAuthHttpAuthOption3(authParameters) { + return { + schemeId: "smithy.api#noAuth" + }; +} +var import_signature_v4_multi_region2, createEndpointRuleSetHttpAuthSchemeParametersProvider, _defaultSTSHttpAuthSchemeParametersProvider, defaultSTSHttpAuthSchemeParametersProvider, createEndpointRuleSetHttpAuthSchemeProvider, _defaultSTSHttpAuthSchemeProvider, defaultSTSHttpAuthSchemeProvider, resolveHttpAuthSchemeConfig3; +var init_httpAuthSchemeProvider3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js"() { + init_httpAuthSchemes2(); + import_signature_v4_multi_region2 = __toESM(require_dist_cjs3()); + init_client(); + init_endpoints(); + init_endpointResolver3(); + createEndpointRuleSetHttpAuthSchemeParametersProvider = /* @__PURE__ */ __name((defaultHttpAuthSchemeParametersProvider) => async (config3, context, input2) => { + if (!input2) { + throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`"); + } + const defaultParameters = await defaultHttpAuthSchemeParametersProvider(config3, context, input2); + const instructionsFn = getSmithyContext(context)?.commandInstance?.constructor?.getEndpointParameterInstructions; + if (!instructionsFn) { + throw new Error(`getEndpointParameterInstructions() is not defined on '${context.commandName}'`); + } + const endpointParameters = await resolveParams(input2, { getEndpointParameterInstructions: instructionsFn }, config3); + return Object.assign(defaultParameters, endpointParameters); + }, "createEndpointRuleSetHttpAuthSchemeParametersProvider"); + _defaultSTSHttpAuthSchemeParametersProvider = /* @__PURE__ */ __name(async (config3, context, input2) => { + return { + operation: getSmithyContext(context).operation, + region: await normalizeProvider(config3.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })() + }; + }, "_defaultSTSHttpAuthSchemeParametersProvider"); + defaultSTSHttpAuthSchemeParametersProvider = createEndpointRuleSetHttpAuthSchemeParametersProvider(_defaultSTSHttpAuthSchemeParametersProvider); + __name(createAwsAuthSigv4HttpAuthOption3, "createAwsAuthSigv4HttpAuthOption"); + __name(createAwsAuthSigv4aHttpAuthOption, "createAwsAuthSigv4aHttpAuthOption"); + __name(createSmithyApiNoAuthHttpAuthOption3, "createSmithyApiNoAuthHttpAuthOption"); + createEndpointRuleSetHttpAuthSchemeProvider = /* @__PURE__ */ __name((defaultEndpointResolver5, defaultHttpAuthSchemeResolver, createHttpAuthOptionFunctions) => { + const endpointRuleSetHttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const endpoint = defaultEndpointResolver5(authParameters); + const authSchemes = endpoint.properties?.authSchemes; + if (!authSchemes) { + return defaultHttpAuthSchemeResolver(authParameters); + } + const options = []; + for (const scheme of authSchemes) { + const { name: resolvedName, properties = {}, ...rest } = scheme; + const name2 = resolvedName.toLowerCase(); + if (resolvedName !== name2) { + console.warn(`HttpAuthScheme has been normalized with lowercasing: '${resolvedName}' to '${name2}'`); + } + let schemeId; + if (name2 === "sigv4a") { + schemeId = "aws.auth#sigv4a"; + const sigv4Present = authSchemes.find((s2) => { + const name3 = s2.name.toLowerCase(); + return name3 !== "sigv4a" && name3.startsWith("sigv4"); + }); + if (import_signature_v4_multi_region2.SignatureV4MultiRegion.sigv4aDependency() === "none" && sigv4Present) { + continue; + } + } else if (name2.startsWith("sigv4")) { + schemeId = "aws.auth#sigv4"; + } else { + throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${name2}'`); + } + const createOption = createHttpAuthOptionFunctions[schemeId]; + if (!createOption) { + throw new Error(`Could not find HttpAuthOption create function for '${schemeId}'`); + } + const option = createOption(authParameters); + option.schemeId = schemeId; + option.signingProperties = { ...option.signingProperties || {}, ...rest, ...properties }; + options.push(option); + } + return options; + }, "endpointRuleSetHttpAuthSchemeProvider"); + return endpointRuleSetHttpAuthSchemeProvider; + }, "createEndpointRuleSetHttpAuthSchemeProvider"); + _defaultSTSHttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const options = []; + switch (authParameters.operation) { + case "AssumeRoleWithWebIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption3(authParameters)); + options.push(createAwsAuthSigv4aHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption3(authParameters)); + options.push(createAwsAuthSigv4aHttpAuthOption(authParameters)); + } + } + return options; + }, "_defaultSTSHttpAuthSchemeProvider"); + defaultSTSHttpAuthSchemeProvider = createEndpointRuleSetHttpAuthSchemeProvider(defaultEndpointResolver3, _defaultSTSHttpAuthSchemeProvider, { + "aws.auth#sigv4": createAwsAuthSigv4HttpAuthOption3, + "aws.auth#sigv4a": createAwsAuthSigv4aHttpAuthOption, + "smithy.api#noAuth": createSmithyApiNoAuthHttpAuthOption3 + }); + resolveHttpAuthSchemeConfig3 = /* @__PURE__ */ __name((config3) => { + const config_0 = resolveAwsSdkSigV4Config(config3); + const config_1 = resolveAwsSdkSigV4AConfig(config_0); + return Object.assign(config_1, { + authSchemePreference: normalizeProvider(config3.authSchemePreference ?? []) + }); + }, "resolveHttpAuthSchemeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js +var resolveClientEndpointParameters3, commonParams3; +var init_EndpointParameters3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js"() { + resolveClientEndpointParameters3 = /* @__PURE__ */ __name((options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + defaultSigningName: "sts" + }); + }, "resolveClientEndpointParameters"); + commonParams3 = { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js +var STSServiceException; +var init_STSServiceException = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js"() { + init_client(); + STSServiceException = class _STSServiceException extends ServiceException { + static { + __name(this, "STSServiceException"); + } + static shapeId = "smithy.ts.sdk.synthetic.com.amazonaws.sts#STSServiceException"; + constructor(options) { + super(options); + Object.setPrototypeOf(this, _STSServiceException.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js +var ExpiredTokenException2, MalformedPolicyDocumentException, PackedPolicyTooLargeException, RegionDisabledException, IDPRejectedClaimException, InvalidIdentityTokenException, IDPCommunicationErrorException; +var init_errors3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js"() { + init_STSServiceException(); + ExpiredTokenException2 = class _ExpiredTokenException extends STSServiceException { + static { + __name(this, "ExpiredTokenException"); + } + static shapeId = "com.amazonaws.sts#ExpiredTokenException"; + name = "ExpiredTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _ExpiredTokenException.prototype); + } + }; + MalformedPolicyDocumentException = class _MalformedPolicyDocumentException extends STSServiceException { + static { + __name(this, "MalformedPolicyDocumentException"); + } + static shapeId = "com.amazonaws.sts#MalformedPolicyDocumentException"; + name = "MalformedPolicyDocumentException"; + $fault = "client"; + constructor(opts) { + super({ + name: "MalformedPolicyDocumentException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _MalformedPolicyDocumentException.prototype); + } + }; + PackedPolicyTooLargeException = class _PackedPolicyTooLargeException extends STSServiceException { + static { + __name(this, "PackedPolicyTooLargeException"); + } + static shapeId = "com.amazonaws.sts#PackedPolicyTooLargeException"; + name = "PackedPolicyTooLargeException"; + $fault = "client"; + constructor(opts) { + super({ + name: "PackedPolicyTooLargeException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _PackedPolicyTooLargeException.prototype); + } + }; + RegionDisabledException = class _RegionDisabledException extends STSServiceException { + static { + __name(this, "RegionDisabledException"); + } + static shapeId = "com.amazonaws.sts#RegionDisabledException"; + name = "RegionDisabledException"; + $fault = "client"; + constructor(opts) { + super({ + name: "RegionDisabledException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _RegionDisabledException.prototype); + } + }; + IDPRejectedClaimException = class _IDPRejectedClaimException extends STSServiceException { + static { + __name(this, "IDPRejectedClaimException"); + } + static shapeId = "com.amazonaws.sts#IDPRejectedClaimException"; + name = "IDPRejectedClaimException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPRejectedClaimException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _IDPRejectedClaimException.prototype); + } + }; + InvalidIdentityTokenException = class _InvalidIdentityTokenException extends STSServiceException { + static { + __name(this, "InvalidIdentityTokenException"); + } + static shapeId = "com.amazonaws.sts#InvalidIdentityTokenException"; + name = "InvalidIdentityTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityTokenException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidIdentityTokenException.prototype); + } + }; + IDPCommunicationErrorException = class _IDPCommunicationErrorException extends STSServiceException { + static { + __name(this, "IDPCommunicationErrorException"); + } + static shapeId = "com.amazonaws.sts#IDPCommunicationErrorException"; + name = "IDPCommunicationErrorException"; + $fault = "client"; + $retryable = {}; + constructor(opts) { + super({ + name: "IDPCommunicationErrorException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _IDPCommunicationErrorException.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js +var _A, _AKI, _AR, _ARI, _ARR, _ARRs, _ARU, _ARWWI, _ARWWIR, _ARWWIRs, _Au, _C, _CA, _DS, _E2, _EI, _ETE2, _IDPCEE, _IDPRCE, _IITE, _K, _MPDE, _MSTS, _P, _PA, _PAr, _PC, _PCLT, _PCr, _PDT, _PI, _PPS, _PPTLE, _Pr, _RA, _RDE, _RSN, _SAK, _SFWIT, _SI, _SN, _ST, _STS, _STU, _T, _TC, _TTK, _Ta, _V, _WIT, _a3, _aKST, _aQE, _c3, _cTT, _e3, _hE3, _m2, _pDLT, _s3, _tLT, n03, _s_registry3, STSServiceException$, n0_registry3, ExpiredTokenException$2, IDPCommunicationErrorException$, IDPRejectedClaimException$, InvalidIdentityTokenException$, MalformedPolicyDocumentException$, PackedPolicyTooLargeException$, RegionDisabledException$, errorTypeRegistries3, accessKeySecretType, clientTokenType, AssumedRoleUser$, AssumeRoleRequest$, AssumeRoleResponse$, AssumeRoleWithWebIdentityRequest$, AssumeRoleWithWebIdentityResponse$, Credentials$, PolicyDescriptorType$, ProvidedContext$, Tag$, policyDescriptorListType, ProvidedContextsListType, tagKeyListType, tagListType, AssumeRole$, AssumeRoleWithWebIdentity$; +var init_schemas_03 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js"() { + init_schema(); + init_errors3(); + init_STSServiceException(); + _A = "Arn"; + _AKI = "AccessKeyId"; + _AR = "AssumeRole"; + _ARI = "AssumedRoleId"; + _ARR = "AssumeRoleRequest"; + _ARRs = "AssumeRoleResponse"; + _ARU = "AssumedRoleUser"; + _ARWWI = "AssumeRoleWithWebIdentity"; + _ARWWIR = "AssumeRoleWithWebIdentityRequest"; + _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; + _Au = "Audience"; + _C = "Credentials"; + _CA = "ContextAssertion"; + _DS = "DurationSeconds"; + _E2 = "Expiration"; + _EI = "ExternalId"; + _ETE2 = "ExpiredTokenException"; + _IDPCEE = "IDPCommunicationErrorException"; + _IDPRCE = "IDPRejectedClaimException"; + _IITE = "InvalidIdentityTokenException"; + _K = "Key"; + _MPDE = "MalformedPolicyDocumentException"; + _MSTS = "MinimumSessionTokenSize"; + _P = "Policy"; + _PA = "PolicyArns"; + _PAr = "ProviderArn"; + _PC = "ProvidedContexts"; + _PCLT = "ProvidedContextsListType"; + _PCr = "ProvidedContext"; + _PDT = "PolicyDescriptorType"; + _PI = "ProviderId"; + _PPS = "PackedPolicySize"; + _PPTLE = "PackedPolicyTooLargeException"; + _Pr = "Provider"; + _RA = "RoleArn"; + _RDE = "RegionDisabledException"; + _RSN = "RoleSessionName"; + _SAK = "SecretAccessKey"; + _SFWIT = "SubjectFromWebIdentityToken"; + _SI = "SourceIdentity"; + _SN = "SerialNumber"; + _ST = "SessionToken"; + _STS = "SessionTokenSize"; + _STU = "SessionTokenUtilization"; + _T = "Tags"; + _TC = "TokenCode"; + _TTK = "TransitiveTagKeys"; + _Ta = "Tag"; + _V = "Value"; + _WIT = "WebIdentityToken"; + _a3 = "arn"; + _aKST = "accessKeySecretType"; + _aQE = "awsQueryError"; + _c3 = "client"; + _cTT = "clientTokenType"; + _e3 = "error"; + _hE3 = "httpError"; + _m2 = "message"; + _pDLT = "policyDescriptorListType"; + _s3 = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; + _tLT = "tagListType"; + n03 = "com.amazonaws.sts"; + _s_registry3 = new TypeRegistry(_s3); + STSServiceException$ = [-3, _s3, "STSServiceException", 0, [], []]; + _s_registry3.registerError(STSServiceException$, STSServiceException); + n0_registry3 = new TypeRegistry(n03); + ExpiredTokenException$2 = [ + -3, + n03, + _ETE2, + { [_aQE]: [`ExpiredTokenException`, 400], [_e3]: _c3, [_hE3]: 400 }, + [_m2], + [0] + ]; + n0_registry3.registerError(ExpiredTokenException$2, ExpiredTokenException2); + IDPCommunicationErrorException$ = [ + -3, + n03, + _IDPCEE, + { [_aQE]: [`IDPCommunicationError`, 400], [_e3]: _c3, [_hE3]: 400 }, + [_m2], + [0] + ]; + n0_registry3.registerError(IDPCommunicationErrorException$, IDPCommunicationErrorException); + IDPRejectedClaimException$ = [ + -3, + n03, + _IDPRCE, + { [_aQE]: [`IDPRejectedClaim`, 403], [_e3]: _c3, [_hE3]: 403 }, + [_m2], + [0] + ]; + n0_registry3.registerError(IDPRejectedClaimException$, IDPRejectedClaimException); + InvalidIdentityTokenException$ = [ + -3, + n03, + _IITE, + { [_aQE]: [`InvalidIdentityToken`, 400], [_e3]: _c3, [_hE3]: 400 }, + [_m2], + [0] + ]; + n0_registry3.registerError(InvalidIdentityTokenException$, InvalidIdentityTokenException); + MalformedPolicyDocumentException$ = [ + -3, + n03, + _MPDE, + { [_aQE]: [`MalformedPolicyDocument`, 400], [_e3]: _c3, [_hE3]: 400 }, + [_m2], + [0] + ]; + n0_registry3.registerError(MalformedPolicyDocumentException$, MalformedPolicyDocumentException); + PackedPolicyTooLargeException$ = [ + -3, + n03, + _PPTLE, + { [_aQE]: [`PackedPolicyTooLarge`, 400], [_e3]: _c3, [_hE3]: 400 }, + [_m2], + [0] + ]; + n0_registry3.registerError(PackedPolicyTooLargeException$, PackedPolicyTooLargeException); + RegionDisabledException$ = [ + -3, + n03, + _RDE, + { [_aQE]: [`RegionDisabledException`, 403], [_e3]: _c3, [_hE3]: 403 }, + [_m2], + [0] + ]; + n0_registry3.registerError(RegionDisabledException$, RegionDisabledException); + errorTypeRegistries3 = [ + _s_registry3, + n0_registry3 + ]; + accessKeySecretType = [0, n03, _aKST, 8, 0]; + clientTokenType = [0, n03, _cTT, 8, 0]; + AssumedRoleUser$ = [ + 3, + n03, + _ARU, + 0, + [_ARI, _A], + [0, 0], + 2 + ]; + AssumeRoleRequest$ = [ + 3, + n03, + _ARR, + 0, + [_RA, _RSN, _PA, _P, _DS, _T, _TTK, _EI, _SN, _TC, _SI, _PC, _MSTS], + [0, 0, () => policyDescriptorListType, 0, 1, () => tagListType, 64 | 0, 0, 0, 0, 0, () => ProvidedContextsListType, 1], + 2 + ]; + AssumeRoleResponse$ = [ + 3, + n03, + _ARRs, + 0, + [_C, _ARU, _PPS, _SI, _STU, _STS], + [[() => Credentials$, 0], () => AssumedRoleUser$, 1, 0, 1, 1] + ]; + AssumeRoleWithWebIdentityRequest$ = [ + 3, + n03, + _ARWWIR, + 0, + [_RA, _RSN, _WIT, _PI, _PA, _P, _DS, _MSTS], + [0, 0, [() => clientTokenType, 0], 0, () => policyDescriptorListType, 0, 1, 1], + 3 + ]; + AssumeRoleWithWebIdentityResponse$ = [ + 3, + n03, + _ARWWIRs, + 0, + [_C, _SFWIT, _ARU, _PPS, _Pr, _Au, _SI, _STU, _STS], + [[() => Credentials$, 0], 0, () => AssumedRoleUser$, 1, 0, 0, 0, 1, 1] + ]; + Credentials$ = [ + 3, + n03, + _C, + 0, + [_AKI, _SAK, _ST, _E2], + [0, [() => accessKeySecretType, 0], 0, 4], + 4 + ]; + PolicyDescriptorType$ = [ + 3, + n03, + _PDT, + 0, + [_a3], + [0] + ]; + ProvidedContext$ = [ + 3, + n03, + _PCr, + 0, + [_PAr, _CA], + [0, 0] + ]; + Tag$ = [ + 3, + n03, + _Ta, + 0, + [_K, _V], + [0, 0], + 2 + ]; + policyDescriptorListType = [ + 1, + n03, + _pDLT, + 0, + () => PolicyDescriptorType$ + ]; + ProvidedContextsListType = [ + 1, + n03, + _PCLT, + 0, + () => ProvidedContext$ + ]; + tagKeyListType = 64 | 0; + tagListType = [ + 1, + n03, + _tLT, + 0, + () => Tag$ + ]; + AssumeRole$ = [ + 9, + n03, + _AR, + 0, + () => AssumeRoleRequest$, + () => AssumeRoleResponse$ + ]; + AssumeRoleWithWebIdentity$ = [ + 9, + n03, + _ARWWI, + 0, + () => AssumeRoleWithWebIdentityRequest$, + () => AssumeRoleWithWebIdentityResponse$ + ]; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js +var import_signature_v4_multi_region3, getRuntimeConfig5; +var init_runtimeConfig_shared3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js"() { + init_httpAuthSchemes2(); + init_protocols2(); + import_signature_v4_multi_region3 = __toESM(require_dist_cjs3()); + init_dist_es(); + init_checksum(); + init_client(); + init_protocols(); + init_serde(); + init_httpAuthSchemeProvider3(); + init_endpointResolver3(); + init_schemas_03(); + getRuntimeConfig5 = /* @__PURE__ */ __name((config3) => { + return { + apiVersion: "2011-06-15", + base64Decoder: config3?.base64Decoder ?? fromBase64, + base64Encoder: config3?.base64Encoder ?? toBase64, + disableHostPrefix: config3?.disableHostPrefix ?? false, + endpointProvider: config3?.endpointProvider ?? defaultEndpointResolver3, + extensions: config3?.extensions ?? [], + httpAuthSchemeProvider: config3?.httpAuthSchemeProvider ?? defaultSTSHttpAuthSchemeProvider, + httpAuthSchemes: config3?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), "identityProvider"), + signer: new AwsSdkSigV4Signer() + }, + { + schemeId: "aws.auth#sigv4a", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4a"), "identityProvider"), + signer: new AwsSdkSigV4ASigner() + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), "identityProvider"), + signer: new NoAuthSigner() + } + ], + logger: config3?.logger ?? new NoOpLogger(), + protocol: config3?.protocol ?? AwsQueryProtocol, + protocolSettings: config3?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sts", + errorTypeRegistries: errorTypeRegistries3, + xmlNamespace: "https://sts.amazonaws.com/doc/2011-06-15/", + version: "2011-06-15", + serviceTarget: "AWSSecurityTokenServiceV20110615" + }, + serviceId: config3?.serviceId ?? "STS", + sha256: config3?.sha256 ?? Sha256Node, + signerConstructor: config3?.signerConstructor ?? import_signature_v4_multi_region3.SignatureV4MultiRegion, + urlParser: config3?.urlParser ?? parseUrl, + utf8Decoder: config3?.utf8Decoder ?? fromUtf8, + utf8Encoder: config3?.utf8Encoder ?? toUtf8 + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +var import_node_http_handler3, getRuntimeConfig6; +var init_runtimeConfig3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js"() { + init_package(); + init_client2(); + init_httpAuthSchemes2(); + init_dist_es(); + init_client(); + init_config(); + init_retry(); + init_serde(); + import_node_http_handler3 = __toESM(require_dist_cjs7()); + init_runtimeConfig_shared3(); + getRuntimeConfig6 = /* @__PURE__ */ __name((config3) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config3); + const defaultConfigProvider = /* @__PURE__ */ __name(() => defaultsMode().then(loadConfigsForDefaultMode), "defaultConfigProvider"); + const clientSharedValues = getRuntimeConfig5(config3); + emitWarningIfUnsupportedVersion2(process.version); + const loaderConfig = { + profile: config3?.profile, + logger: clientSharedValues.logger + }; + return { + ...clientSharedValues, + ...config3, + runtime: "node", + defaultsMode, + authSchemePreference: config3?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config3?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config3?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: package_default.version }), + httpAuthSchemes: config3?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4") || (async (idProps) => await config3.credentialDefaultProvider(idProps?.__config || {})()), "identityProvider"), + signer: new AwsSdkSigV4Signer() + }, + { + schemeId: "aws.auth#sigv4a", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4a"), "identityProvider"), + signer: new AwsSdkSigV4ASigner() + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), "identityProvider"), + signer: new NoAuthSigner() + } + ], + maxAttempts: config3?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config3), + region: config3?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: import_node_http_handler3.NodeHttpHandler.create(config3?.requestHandler ?? defaultConfigProvider), + retryMode: config3?.retryMode ?? loadConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: /* @__PURE__ */ __name(async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, "default") + }, config3), + sigv4aSigningRegionSet: config3?.sigv4aSigningRegionSet ?? loadConfig(NODE_SIGV4A_CONFIG_OPTIONS, loaderConfig), + streamCollector: config3?.streamCollector ?? import_node_http_handler3.streamCollector, + useDualstackEndpoint: config3?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config3?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config3?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig) + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js +var getHttpAuthExtensionConfiguration3, resolveHttpAuthRuntimeConfig3; +var init_httpAuthExtensionConfiguration3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js"() { + getHttpAuthExtensionConfiguration3 = /* @__PURE__ */ __name((runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + } + }; + }, "getHttpAuthExtensionConfiguration"); + resolveHttpAuthRuntimeConfig3 = /* @__PURE__ */ __name((config3) => { + return { + httpAuthSchemes: config3.httpAuthSchemes(), + httpAuthSchemeProvider: config3.httpAuthSchemeProvider(), + credentials: config3.credentials() + }; + }, "resolveHttpAuthRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js +var resolveRuntimeExtensions3; +var init_runtimeExtensions3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js"() { + init_client2(); + init_client(); + init_protocols(); + init_httpAuthExtensionConfiguration3(); + resolveRuntimeExtensions3 = /* @__PURE__ */ __name((runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration3(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig3(extensionConfiguration)); + }, "resolveRuntimeExtensions"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js +var STSClient; +var init_STSClient = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js"() { + init_client2(); + init_dist_es(); + init_client(); + init_config(); + init_endpoints(); + init_protocols(); + init_retry(); + init_schema(); + init_httpAuthSchemeProvider3(); + init_EndpointParameters3(); + init_runtimeConfig3(); + init_runtimeExtensions3(); + STSClient = class extends Client { + static { + __name(this, "STSClient"); + } + config; + constructor(...[configuration]) { + const _config_0 = getRuntimeConfig6(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters3(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig3(_config_6); + const _config_8 = resolveRuntimeExtensions3(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSTSHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: /* @__PURE__ */ __name(async (config3) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config3.credentials, + "aws.auth#sigv4a": config3.credentials + }), "identityProviderConfigProvider") + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commandBuilder.js +var command3, _ep03, _mw03; +var init_commandBuilder3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commandBuilder.js"() { + init_client(); + init_endpoints(); + init_EndpointParameters3(); + command3 = makeBuilder(commonParams3, "AWSSecurityTokenServiceV20110615", "STSClient", getEndpointPlugin); + _ep03 = {}; + _mw03 = /* @__PURE__ */ __name((Command2, cs, config3, o3) => [], "_mw0"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js +var AssumeRoleCommand; +var init_AssumeRoleCommand = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js"() { + init_commandBuilder3(); + init_schemas_03(); + AssumeRoleCommand = class extends command3(_ep03, _mw03, "AssumeRole", AssumeRole$) { + static { + __name(this, "AssumeRoleCommand"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +var AssumeRoleWithWebIdentityCommand; +var init_AssumeRoleWithWebIdentityCommand = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js"() { + init_commandBuilder3(); + init_schemas_03(); + AssumeRoleWithWebIdentityCommand = class extends command3(_ep03, _mw03, "AssumeRoleWithWebIdentity", AssumeRoleWithWebIdentity$) { + static { + __name(this, "AssumeRoleWithWebIdentityCommand"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js +var commands3, STS; +var init_STS = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js"() { + init_client(); + init_AssumeRoleCommand(); + init_AssumeRoleWithWebIdentityCommand(); + init_STSClient(); + commands3 = { + AssumeRoleCommand, + AssumeRoleWithWebIdentityCommand + }; + STS = class extends STSClient { + static { + __name(this, "STS"); + } + }; + createAggregatedClient(commands3, STS); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js +var init_commands3 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js"() { + init_AssumeRoleCommand(); + init_AssumeRoleWithWebIdentityCommand(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js +var init_models_03 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js"() { + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +var getAccountIdFromAssumedRoleUser, resolveRegion, getDefaultRoleAssumer, getDefaultRoleAssumerWithWebIdentity, isH2; +var init_defaultStsRoleAssumers = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js"() { + init_client2(); + init_AssumeRoleCommand(); + init_AssumeRoleWithWebIdentityCommand(); + getAccountIdFromAssumedRoleUser = /* @__PURE__ */ __name((assumedRoleUser) => { + if (typeof assumedRoleUser?.Arn === "string") { + const arnComponents = assumedRoleUser.Arn.split(":"); + if (arnComponents.length > 4 && arnComponents[4] !== "") { + return arnComponents[4]; + } + } + return void 0; + }, "getAccountIdFromAssumedRoleUser"); + resolveRegion = /* @__PURE__ */ __name(async (_region, _parentRegion, credentialProviderLogger, loaderConfig = {}) => { + const region = typeof _region === "function" ? await _region() : _region; + const parentRegion = typeof _parentRegion === "function" ? await _parentRegion() : _parentRegion; + let stsDefaultRegion = ""; + const resolvedRegion = region ?? parentRegion ?? (stsDefaultRegion = await stsRegionDefaultResolver(loaderConfig)()); + credentialProviderLogger?.debug?.("@aws-sdk/client-sts::resolveRegion", "accepting first of:", `${region} (credential provider clientConfig)`, `${parentRegion} (contextual client)`, `${stsDefaultRegion} (STS default: AWS_REGION, profile region, or us-east-1)`); + return resolvedRegion; + }, "resolveRegion"); + getDefaultRoleAssumer = /* @__PURE__ */ __name((stsOptions, STSClient2) => { + let stsClient; + let closureSourceCreds; + return async (sourceCreds, params) => { + closureSourceCreds = sourceCreds; + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient2({ + ...stsOptions, + userAgentAppId, + profile, + credentialDefaultProvider: /* @__PURE__ */ __name(() => async () => closureSourceCreds, "credentialDefaultProvider"), + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : void 0, + logger + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }, + ...accountId && { accountId } + }; + setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE", "i"); + return credentials; + }; + }, "getDefaultRoleAssumer"); + getDefaultRoleAssumerWithWebIdentity = /* @__PURE__ */ __name((stsOptions, STSClient2) => { + let stsClient; + return async (params) => { + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient2({ + ...stsOptions, + userAgentAppId, + profile, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : void 0, + logger + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }, + ...accountId && { accountId } + }; + if (accountId) { + setCredentialFeature(credentials, "RESOLVED_ACCOUNT_ID", "T"); + } + setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE_WEB_ID", "k"); + return credentials; + }; + }, "getDefaultRoleAssumerWithWebIdentity"); + isH2 = /* @__PURE__ */ __name((requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; + }, "isH2"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js +var getCustomizableStsClientCtor, getDefaultRoleAssumer2, getDefaultRoleAssumerWithWebIdentity2, decorateDefaultCredentialProvider; +var init_defaultRoleAssumers = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js"() { + init_defaultStsRoleAssumers(); + init_STSClient(); + getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => { + if (!customizations) + return baseCtor; + else + return class CustomizableSTSClient extends baseCtor { + static { + __name(this, "CustomizableSTSClient"); + } + constructor(config3) { + super(config3); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }; + }, "getCustomizableStsClientCtor"); + getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(STSClient, stsPlugins)), "getDefaultRoleAssumer"); + getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(STSClient, stsPlugins)), "getDefaultRoleAssumerWithWebIdentity"); + decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input2) => provider({ + roleAssumer: getDefaultRoleAssumer2(input2), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input2), + ...input2 + }), "decorateDefaultCredentialProvider"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js +var sts_exports = {}; +__export(sts_exports, { + $Command: () => Command, + AssumeRole$: () => AssumeRole$, + AssumeRoleCommand: () => AssumeRoleCommand, + AssumeRoleRequest$: () => AssumeRoleRequest$, + AssumeRoleResponse$: () => AssumeRoleResponse$, + AssumeRoleWithWebIdentity$: () => AssumeRoleWithWebIdentity$, + AssumeRoleWithWebIdentityCommand: () => AssumeRoleWithWebIdentityCommand, + AssumeRoleWithWebIdentityRequest$: () => AssumeRoleWithWebIdentityRequest$, + AssumeRoleWithWebIdentityResponse$: () => AssumeRoleWithWebIdentityResponse$, + AssumedRoleUser$: () => AssumedRoleUser$, + Credentials$: () => Credentials$, + ExpiredTokenException: () => ExpiredTokenException2, + ExpiredTokenException$: () => ExpiredTokenException$2, + IDPCommunicationErrorException: () => IDPCommunicationErrorException, + IDPCommunicationErrorException$: () => IDPCommunicationErrorException$, + IDPRejectedClaimException: () => IDPRejectedClaimException, + IDPRejectedClaimException$: () => IDPRejectedClaimException$, + InvalidIdentityTokenException: () => InvalidIdentityTokenException, + InvalidIdentityTokenException$: () => InvalidIdentityTokenException$, + MalformedPolicyDocumentException: () => MalformedPolicyDocumentException, + MalformedPolicyDocumentException$: () => MalformedPolicyDocumentException$, + PackedPolicyTooLargeException: () => PackedPolicyTooLargeException, + PackedPolicyTooLargeException$: () => PackedPolicyTooLargeException$, + PolicyDescriptorType$: () => PolicyDescriptorType$, + ProvidedContext$: () => ProvidedContext$, + RegionDisabledException: () => RegionDisabledException, + RegionDisabledException$: () => RegionDisabledException$, + STS: () => STS, + STSClient: () => STSClient, + STSServiceException: () => STSServiceException, + STSServiceException$: () => STSServiceException$, + Tag$: () => Tag$, + __Client: () => Client, + decorateDefaultCredentialProvider: () => decorateDefaultCredentialProvider, + errorTypeRegistries: () => errorTypeRegistries3, + getDefaultRoleAssumer: () => getDefaultRoleAssumer2, + getDefaultRoleAssumerWithWebIdentity: () => getDefaultRoleAssumerWithWebIdentity2 +}); +var init_sts = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js"() { + init_STSClient(); + init_STS(); + init_commands3(); + init_client(); + init_schemas_03(); + init_errors3(); + init_models_03(); + init_defaultRoleAssumers(); + init_STSServiceException(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js +function createAwsAuthSigv4HttpAuthOption4(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "signin", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; +} +function createSmithyApiNoAuthHttpAuthOption4(authParameters) { + return { + schemeId: "smithy.api#noAuth" + }; +} +var defaultSigninHttpAuthSchemeParametersProvider, defaultSigninHttpAuthSchemeProvider, resolveHttpAuthSchemeConfig4; +var init_httpAuthSchemeProvider4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js"() { + init_httpAuthSchemes2(); + init_client(); + defaultSigninHttpAuthSchemeParametersProvider = /* @__PURE__ */ __name(async (config3, context, input2) => { + return { + operation: getSmithyContext(context).operation, + region: await normalizeProvider(config3.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })() + }; + }, "defaultSigninHttpAuthSchemeParametersProvider"); + __name(createAwsAuthSigv4HttpAuthOption4, "createAwsAuthSigv4HttpAuthOption"); + __name(createSmithyApiNoAuthHttpAuthOption4, "createSmithyApiNoAuthHttpAuthOption"); + defaultSigninHttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateOAuth2Token": + { + options.push(createSmithyApiNoAuthHttpAuthOption4(authParameters)); + break; + } + ; + default: { + options.push(createAwsAuthSigv4HttpAuthOption4(authParameters)); + } + } + return options; + }, "defaultSigninHttpAuthSchemeProvider"); + resolveHttpAuthSchemeConfig4 = /* @__PURE__ */ __name((config3) => { + const config_0 = resolveAwsSdkSigV4Config(config3); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config3.authSchemePreference ?? []) + }); + }, "resolveHttpAuthSchemeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js +var resolveClientEndpointParameters4, commonParams4; +var init_EndpointParameters4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js"() { + resolveClientEndpointParameters4 = /* @__PURE__ */ __name((options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "signin" + }); + }, "resolveClientEndpointParameters"); + commonParams4 = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/bdd.js +var s, a4, b4, c4, d4, e4, f4, g4, h4, i4, j4, k4, l2, m2, n2, o2, p2, q2, _data4, root4, r4, nodes4, bdd4; +var init_bdd4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/bdd.js"() { + init_endpoints(); + s = "ref"; + a4 = -1; + b4 = false; + c4 = true; + d4 = "isSet"; + e4 = "booleanEquals"; + f4 = "coalesce"; + g4 = "PartitionResult"; + h4 = "stringEquals"; + i4 = "getAttr"; + j4 = "https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}"; + k4 = { [s]: "Endpoint" }; + l2 = { "fn": i4, "argv": [{ [s]: g4 }, "name"] }; + m2 = { [s]: "Region" }; + n2 = { [s]: g4 }; + o2 = { "authSchemes": [{ "name": "sigv4", "signingName": "signin", "signingRegion": "{Region}" }] }; + p2 = {}; + q2 = [m2]; + _data4 = { + conditions: [ + [d4, q2], + [e4, [{ fn: f4, argv: [{ [s]: "IsControlPlane" }, b4] }, c4]], + [d4, [k4]], + ["aws.partition", q2, g4], + [e4, [{ [s]: "UseFIPS" }, c4]], + [h4, [l2, "aws"]], + [e4, [{ fn: f4, argv: [{ [s]: "IsOAuthEndpoint" }, b4] }, c4]], + [e4, [{ [s]: "UseDualStack" }, c4]], + [h4, [l2, "aws-cn"]], + [h4, [m2, "us-gov-west-1"]], + [h4, [l2, "aws-us-gov"]], + [e4, [{ fn: i4, argv: [n2, "supportsFIPS"] }, c4]], + [h4, [l2, "aws-iso"]], + [h4, [l2, "aws-iso-b"]], + [h4, [l2, "aws-iso-f"]], + [h4, [l2, "aws-iso-e"]], + [h4, [l2, "aws-eusc"]], + [e4, [{ fn: i4, argv: [n2, "supportsDualStack"] }, c4]] + ], + results: [ + [a4], + ["https://signin.{Region}.api.aws", o2], + ["https://signin.{Region}.api.amazonwebservices.com.cn", o2], + [j4, o2], + [a4, "FIPS endpoints are not supported for OAuth operations. Disable FIPS or use a non-OAuth operation."], + ["https://{Region}.oauth.signin.aws", o2], + ["https://{Region}.signin.aws.amazon.com", p2], + ["https://{Region}.signin.amazonaws.cn", p2], + ["https://{Region}.signin.amazonaws-us-gov.com", p2], + ["https://{Region}.signin.c2shome.ic.gov", p2], + ["https://{Region}.signin.sc2shome.sgov.gov", p2], + ["https://{Region}.signin.csphome.hci.ic.gov", p2], + ["https://{Region}.signin.csphome.adc-e.uk", p2], + ["https://{Region}.signin.amazonaws-eusc.eu", p2], + ["https://signin-fips.amazonaws-us-gov.com", p2], + ["https://{Region}.signin-fips.amazonaws-us-gov.com", p2], + ["https://{Region}.signin.{PartitionResult#dnsSuffix}", p2], + [a4, "Invalid Configuration: FIPS and custom endpoint are not supported"], + [a4, "Invalid Configuration: Dualstack and custom endpoint are not supported"], + [k4, p2], + ["https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", p2], + [a4, "FIPS and DualStack are enabled, but this partition does not support one or both"], + ["https://signin-fips.{Region}.{PartitionResult#dnsSuffix}", p2], + [a4, "FIPS is enabled but this partition does not support FIPS"], + [j4, p2], + [a4, "DualStack is enabled but this partition does not support DualStack"], + ["https://signin.{Region}.{PartitionResult#dnsSuffix}", p2], + [a4, "Invalid Configuration: Missing Region"] + ] + }; + root4 = 2; + r4 = 1e8; + nodes4 = new Int32Array([ + -1, + 1, + -1, + 0, + 6, + 3, + 2, + 36, + 4, + 4, + 5, + r4 + 27, + 6, + r4 + 4, + r4 + 27, + 1, + 29, + 7, + 2, + 36, + 8, + 3, + 9, + 31, + 4, + 22, + 10, + 5, + 19, + 11, + 7, + 21, + 12, + 8, + r4 + 7, + 13, + 10, + r4 + 8, + 14, + 12, + r4 + 9, + 15, + 13, + r4 + 10, + 16, + 14, + r4 + 11, + 17, + 15, + r4 + 12, + 18, + 16, + r4 + 13, + r4 + 16, + 6, + r4 + 5, + 20, + 7, + 21, + r4 + 6, + 17, + r4 + 24, + r4 + 25, + 6, + r4 + 4, + 23, + 7, + 27, + 24, + 9, + r4 + 14, + 25, + 10, + r4 + 15, + 26, + 11, + r4 + 22, + r4 + 23, + 11, + 28, + r4 + 21, + 17, + r4 + 20, + r4 + 21, + 2, + 35, + 30, + 3, + 39, + 31, + 4, + 32, + r4 + 27, + 6, + r4 + 4, + 33, + 7, + r4 + 27, + 34, + 9, + r4 + 14, + r4 + 27, + 3, + 39, + 36, + 4, + 38, + 37, + 7, + r4 + 18, + r4 + 19, + 6, + r4 + 4, + r4 + 17, + 5, + r4 + 1, + 40, + 8, + r4 + 2, + r4 + 3 + ]); + bdd4 = BinaryDecisionDiagram.from(nodes4, root4, _data4.conditions, _data4.results); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js +var cache4, defaultEndpointResolver4; +var init_endpointResolver4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js"() { + init_client2(); + init_endpoints(); + init_bdd4(); + cache4 = new EndpointCache({ + size: 50, + params: ["Endpoint", "IsControlPlane", "IsOAuthEndpoint", "Region", "UseDualStack", "UseFIPS"] + }); + defaultEndpointResolver4 = /* @__PURE__ */ __name((endpointParams, context = {}) => { + return cache4.get(endpointParams, () => decideEndpoint(bdd4, { + endpointParams, + logger: context.logger + })); + }, "defaultEndpointResolver"); + customEndpointFunctions.aws = awsEndpointFunctions; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js +var SigninServiceException; +var init_SigninServiceException = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js"() { + init_client(); + SigninServiceException = class _SigninServiceException extends ServiceException { + static { + __name(this, "SigninServiceException"); + } + static shapeId = "smithy.ts.sdk.synthetic.com.amazonaws.signin#SigninServiceException"; + constructor(options) { + super(options); + Object.setPrototypeOf(this, _SigninServiceException.prototype); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js +var AccessDeniedException2, InternalServerException2, TooManyRequestsError, ValidationException; +var init_errors4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js"() { + init_SigninServiceException(); + AccessDeniedException2 = class _AccessDeniedException extends SigninServiceException { + static { + __name(this, "AccessDeniedException"); + } + static shapeId = "com.amazonaws.signin#AccessDeniedException"; + name = "AccessDeniedException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _AccessDeniedException.prototype); + this.error = opts.error; + } + }; + InternalServerException2 = class _InternalServerException extends SigninServiceException { + static { + __name(this, "InternalServerException"); + } + static shapeId = "com.amazonaws.signin#InternalServerException"; + name = "InternalServerException"; + $fault = "server"; + error; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts + }); + Object.setPrototypeOf(this, _InternalServerException.prototype); + this.error = opts.error; + } + }; + TooManyRequestsError = class _TooManyRequestsError extends SigninServiceException { + static { + __name(this, "TooManyRequestsError"); + } + static shapeId = "com.amazonaws.signin#TooManyRequestsError"; + name = "TooManyRequestsError"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "TooManyRequestsError", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _TooManyRequestsError.prototype); + this.error = opts.error; + } + }; + ValidationException = class _ValidationException extends SigninServiceException { + static { + __name(this, "ValidationException"); + } + static shapeId = "com.amazonaws.signin#ValidationException"; + name = "ValidationException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "ValidationException", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _ValidationException.prototype); + this.error = opts.error; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js +var _ADE2, _AT2, _COAT, _COATR, _COATRB, _COATRBr, _COATRr, _COATWIAM, _COATWIAMR, _COATWIAMRr, _ISE2, _OAAT, _RT2, _TMRE2, _VE, _aKI2, _aT3, _at, _c4, _cI2, _cV2, _co2, _e4, _eI2, _ei, _gT2, _gt2, _h3, _hE4, _iT2, _jN, _m3, _r2, _rT2, _rU2, _s4, _sAK2, _sT2, _se2, _tI, _tO, _tT2, _tt, n04, _s_registry4, SigninServiceException$, n0_registry4, AccessDeniedException$2, InternalServerException$2, TooManyRequestsError$, ValidationException$, errorTypeRegistries4, OAuthAccessToken, RefreshToken2, AccessToken$, CreateOAuth2TokenRequest$, CreateOAuth2TokenRequestBody$, CreateOAuth2TokenResponse$, CreateOAuth2TokenResponseBody$, CreateOAuth2TokenWithIAMRequest$, CreateOAuth2TokenWithIAMResponse$, CreateOAuth2Token$, CreateOAuth2TokenWithIAM$; +var init_schemas_04 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js"() { + init_schema(); + init_errors4(); + init_SigninServiceException(); + _ADE2 = "AccessDeniedException"; + _AT2 = "AccessToken"; + _COAT = "CreateOAuth2Token"; + _COATR = "CreateOAuth2TokenRequest"; + _COATRB = "CreateOAuth2TokenRequestBody"; + _COATRBr = "CreateOAuth2TokenResponseBody"; + _COATRr = "CreateOAuth2TokenResponse"; + _COATWIAM = "CreateOAuth2TokenWithIAM"; + _COATWIAMR = "CreateOAuth2TokenWithIAMRequest"; + _COATWIAMRr = "CreateOAuth2TokenWithIAMResponse"; + _ISE2 = "InternalServerException"; + _OAAT = "OAuthAccessToken"; + _RT2 = "RefreshToken"; + _TMRE2 = "TooManyRequestsError"; + _VE = "ValidationException"; + _aKI2 = "accessKeyId"; + _aT3 = "accessToken"; + _at = "access_token"; + _c4 = "client"; + _cI2 = "clientId"; + _cV2 = "codeVerifier"; + _co2 = "code"; + _e4 = "error"; + _eI2 = "expiresIn"; + _ei = "expires_in"; + _gT2 = "grantType"; + _gt2 = "grant_type"; + _h3 = "http"; + _hE4 = "httpError"; + _iT2 = "idToken"; + _jN = "jsonName"; + _m3 = "message"; + _r2 = "resource"; + _rT2 = "refreshToken"; + _rU2 = "redirectUri"; + _s4 = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; + _sAK2 = "secretAccessKey"; + _sT2 = "sessionToken"; + _se2 = "server"; + _tI = "tokenInput"; + _tO = "tokenOutput"; + _tT2 = "tokenType"; + _tt = "token_type"; + n04 = "com.amazonaws.signin"; + _s_registry4 = new TypeRegistry(_s4); + SigninServiceException$ = [-3, _s4, "SigninServiceException", 0, [], []]; + _s_registry4.registerError(SigninServiceException$, SigninServiceException); + n0_registry4 = new TypeRegistry(n04); + AccessDeniedException$2 = [ + -3, + n04, + _ADE2, + { [_e4]: _c4 }, + [_e4, _m3], + [0, 0], + 2 + ]; + n0_registry4.registerError(AccessDeniedException$2, AccessDeniedException2); + InternalServerException$2 = [ + -3, + n04, + _ISE2, + { [_e4]: _se2, [_hE4]: 500 }, + [_e4, _m3], + [0, 0], + 2 + ]; + n0_registry4.registerError(InternalServerException$2, InternalServerException2); + TooManyRequestsError$ = [ + -3, + n04, + _TMRE2, + { [_e4]: _c4, [_hE4]: 429 }, + [_e4, _m3], + [0, 0], + 2 + ]; + n0_registry4.registerError(TooManyRequestsError$, TooManyRequestsError); + ValidationException$ = [ + -3, + n04, + _VE, + { [_e4]: _c4, [_hE4]: 400 }, + [_e4, _m3], + [0, 0], + 2 + ]; + n0_registry4.registerError(ValidationException$, ValidationException); + errorTypeRegistries4 = [ + _s_registry4, + n0_registry4 + ]; + OAuthAccessToken = [0, n04, _OAAT, 8, 0]; + RefreshToken2 = [0, n04, _RT2, 8, 0]; + AccessToken$ = [ + 3, + n04, + _AT2, + 8, + [_aKI2, _sAK2, _sT2], + [[0, { [_jN]: _aKI2 }], [0, { [_jN]: _sAK2 }], [0, { [_jN]: _sT2 }]], + 3 + ]; + CreateOAuth2TokenRequest$ = [ + 3, + n04, + _COATR, + 0, + [_tI], + [[() => CreateOAuth2TokenRequestBody$, 16]], + 1 + ]; + CreateOAuth2TokenRequestBody$ = [ + 3, + n04, + _COATRB, + 0, + [_cI2, _gT2, _co2, _rU2, _cV2, _rT2], + [[0, { [_jN]: _cI2 }], [0, { [_jN]: _gT2 }], 0, [0, { [_jN]: _rU2 }], [0, { [_jN]: _cV2 }], [() => RefreshToken2, { [_jN]: _rT2 }]], + 2 + ]; + CreateOAuth2TokenResponse$ = [ + 3, + n04, + _COATRr, + 0, + [_tO], + [[() => CreateOAuth2TokenResponseBody$, 16]], + 1 + ]; + CreateOAuth2TokenResponseBody$ = [ + 3, + n04, + _COATRBr, + 0, + [_aT3, _tT2, _eI2, _rT2, _iT2], + [[() => AccessToken$, { [_jN]: _aT3 }], [0, { [_jN]: _tT2 }], [1, { [_jN]: _eI2 }], [() => RefreshToken2, { [_jN]: _rT2 }], [0, { [_jN]: _iT2 }]], + 4 + ]; + CreateOAuth2TokenWithIAMRequest$ = [ + 3, + n04, + _COATWIAMR, + 0, + [_gT2, _r2], + [[0, { [_jN]: _gt2 }], 0], + 2 + ]; + CreateOAuth2TokenWithIAMResponse$ = [ + 3, + n04, + _COATWIAMRr, + 0, + [_aT3, _tT2, _eI2], + [[() => OAuthAccessToken, { [_jN]: _at }], [0, { [_jN]: _tt }], [1, { [_jN]: _ei }]], + 3 + ]; + CreateOAuth2Token$ = [ + 9, + n04, + _COAT, + { [_h3]: ["POST", "/v1/token", 200] }, + () => CreateOAuth2TokenRequest$, + () => CreateOAuth2TokenResponse$ + ]; + CreateOAuth2TokenWithIAM$ = [ + 9, + n04, + _COATWIAM, + { [_h3]: ["POST", "/v1/token?x-amz-client-auth-method=iam", 200] }, + () => CreateOAuth2TokenWithIAMRequest$, + () => CreateOAuth2TokenWithIAMResponse$ + ]; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js +var getRuntimeConfig7; +var init_runtimeConfig_shared4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js"() { + init_httpAuthSchemes2(); + init_protocols2(); + init_dist_es(); + init_checksum(); + init_client(); + init_protocols(); + init_serde(); + init_httpAuthSchemeProvider4(); + init_endpointResolver4(); + init_schemas_04(); + getRuntimeConfig7 = /* @__PURE__ */ __name((config3) => { + return { + apiVersion: "2023-01-01", + base64Decoder: config3?.base64Decoder ?? fromBase64, + base64Encoder: config3?.base64Encoder ?? toBase64, + disableHostPrefix: config3?.disableHostPrefix ?? false, + endpointProvider: config3?.endpointProvider ?? defaultEndpointResolver4, + extensions: config3?.extensions ?? [], + httpAuthSchemeProvider: config3?.httpAuthSchemeProvider ?? defaultSigninHttpAuthSchemeProvider, + httpAuthSchemes: config3?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), "identityProvider"), + signer: new AwsSdkSigV4Signer() + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), "identityProvider"), + signer: new NoAuthSigner() + } + ], + logger: config3?.logger ?? new NoOpLogger(), + protocol: config3?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config3?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.signin", + errorTypeRegistries: errorTypeRegistries4, + version: "2023-01-01", + serviceTarget: "Signin" + }, + serviceId: config3?.serviceId ?? "Signin", + sha256: config3?.sha256 ?? Sha256Node, + urlParser: config3?.urlParser ?? parseUrl, + utf8Decoder: config3?.utf8Decoder ?? fromUtf8, + utf8Encoder: config3?.utf8Encoder ?? toUtf8 + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js +var import_node_http_handler4, getRuntimeConfig8; +var init_runtimeConfig4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js"() { + init_package(); + init_client2(); + init_httpAuthSchemes2(); + init_client(); + init_config(); + init_retry(); + init_serde(); + import_node_http_handler4 = __toESM(require_dist_cjs7()); + init_runtimeConfig_shared4(); + getRuntimeConfig8 = /* @__PURE__ */ __name((config3) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config3); + const defaultConfigProvider = /* @__PURE__ */ __name(() => defaultsMode().then(loadConfigsForDefaultMode), "defaultConfigProvider"); + const clientSharedValues = getRuntimeConfig7(config3); + emitWarningIfUnsupportedVersion2(process.version); + const loaderConfig = { + profile: config3?.profile, + logger: clientSharedValues.logger + }; + return { + ...clientSharedValues, + ...config3, + runtime: "node", + defaultsMode, + authSchemePreference: config3?.authSchemePreference ?? loadConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config3?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config3?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: package_default.version }), + maxAttempts: config3?.maxAttempts ?? loadConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config3), + region: config3?.region ?? loadConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: import_node_http_handler4.NodeHttpHandler.create(config3?.requestHandler ?? defaultConfigProvider), + retryMode: config3?.retryMode ?? loadConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: /* @__PURE__ */ __name(async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, "default") + }, config3), + streamCollector: config3?.streamCollector ?? import_node_http_handler4.streamCollector, + useDualstackEndpoint: config3?.useDualstackEndpoint ?? loadConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config3?.useFipsEndpoint ?? loadConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config3?.userAgentAppId ?? loadConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig) + }; + }, "getRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js +var getHttpAuthExtensionConfiguration4, resolveHttpAuthRuntimeConfig4; +var init_httpAuthExtensionConfiguration4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js"() { + getHttpAuthExtensionConfiguration4 = /* @__PURE__ */ __name((runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + } + }; + }, "getHttpAuthExtensionConfiguration"); + resolveHttpAuthRuntimeConfig4 = /* @__PURE__ */ __name((config3) => { + return { + httpAuthSchemes: config3.httpAuthSchemes(), + httpAuthSchemeProvider: config3.httpAuthSchemeProvider(), + credentials: config3.credentials() + }; + }, "resolveHttpAuthRuntimeConfig"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js +var resolveRuntimeExtensions4; +var init_runtimeExtensions4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js"() { + init_client2(); + init_client(); + init_protocols(); + init_httpAuthExtensionConfiguration4(); + resolveRuntimeExtensions4 = /* @__PURE__ */ __name((runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration4(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig4(extensionConfiguration)); + }, "resolveRuntimeExtensions"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js +var SigninClient; +var init_SigninClient = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js"() { + init_client2(); + init_dist_es(); + init_client(); + init_config(); + init_endpoints(); + init_protocols(); + init_retry(); + init_schema(); + init_httpAuthSchemeProvider4(); + init_EndpointParameters4(); + init_runtimeConfig4(); + init_runtimeExtensions4(); + SigninClient = class extends Client { + static { + __name(this, "SigninClient"); + } + config; + constructor(...[configuration]) { + const _config_0 = getRuntimeConfig8(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters4(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig4(_config_6); + const _config_8 = resolveRuntimeExtensions4(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSigninHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: /* @__PURE__ */ __name(async (config3) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config3.credentials + }), "identityProviderConfigProvider") + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commandBuilder.js +var command4, _ep04, _ep1, _mw04; +var init_commandBuilder4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commandBuilder.js"() { + init_client(); + init_endpoints(); + init_EndpointParameters4(); + command4 = makeBuilder(commonParams4, "Signin", "SigninClient", getEndpointPlugin); + _ep04 = { + IsControlPlane: { type: "staticContextParams", value: false } + }; + _ep1 = { + IsOAuthEndpoint: { type: "staticContextParams", value: true } + }; + _mw04 = /* @__PURE__ */ __name((Command2, cs, config3, o3) => [], "_mw0"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js +var CreateOAuth2TokenCommand; +var init_CreateOAuth2TokenCommand = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js"() { + init_commandBuilder4(); + init_schemas_04(); + CreateOAuth2TokenCommand = class extends command4(_ep04, _mw04, "CreateOAuth2Token", CreateOAuth2Token$) { + static { + __name(this, "CreateOAuth2TokenCommand"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenWithIAMCommand.js +var CreateOAuth2TokenWithIAMCommand; +var init_CreateOAuth2TokenWithIAMCommand = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenWithIAMCommand.js"() { + init_commandBuilder4(); + init_schemas_04(); + CreateOAuth2TokenWithIAMCommand = class extends command4(_ep1, _mw04, "CreateOAuth2TokenWithIAM", CreateOAuth2TokenWithIAM$) { + static { + __name(this, "CreateOAuth2TokenWithIAMCommand"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js +var commands4, Signin; +var init_Signin = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js"() { + init_client(); + init_CreateOAuth2TokenCommand(); + init_CreateOAuth2TokenWithIAMCommand(); + init_SigninClient(); + commands4 = { + CreateOAuth2TokenCommand, + CreateOAuth2TokenWithIAMCommand + }; + Signin = class extends SigninClient { + static { + __name(this, "Signin"); + } + }; + createAggregatedClient(commands4, Signin); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js +var init_commands4 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js"() { + init_CreateOAuth2TokenCommand(); + init_CreateOAuth2TokenWithIAMCommand(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js +var OAuth2ErrorCode; +var init_enums2 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js"() { + OAuth2ErrorCode = { + AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED", + CONFLICT: "CONFLICT", + INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS", + INVALID_REQUEST: "INVALID_REQUEST", + RESOURCE_NOT_FOUND: "RESOURCE_NOT_FOUND", + SERVER_ERROR: "server_error", + SERVICE_QUOTA_EXCEEDED: "SERVICE_QUOTA_EXCEEDED", + TOKEN_EXPIRED: "TOKEN_EXPIRED", + USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED" + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js +var init_models_04 = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js"() { + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js +var signin_exports = {}; +__export(signin_exports, { + $Command: () => Command, + AccessDeniedException: () => AccessDeniedException2, + AccessDeniedException$: () => AccessDeniedException$2, + AccessToken$: () => AccessToken$, + CreateOAuth2Token$: () => CreateOAuth2Token$, + CreateOAuth2TokenCommand: () => CreateOAuth2TokenCommand, + CreateOAuth2TokenRequest$: () => CreateOAuth2TokenRequest$, + CreateOAuth2TokenRequestBody$: () => CreateOAuth2TokenRequestBody$, + CreateOAuth2TokenResponse$: () => CreateOAuth2TokenResponse$, + CreateOAuth2TokenResponseBody$: () => CreateOAuth2TokenResponseBody$, + CreateOAuth2TokenWithIAM$: () => CreateOAuth2TokenWithIAM$, + CreateOAuth2TokenWithIAMCommand: () => CreateOAuth2TokenWithIAMCommand, + CreateOAuth2TokenWithIAMRequest$: () => CreateOAuth2TokenWithIAMRequest$, + CreateOAuth2TokenWithIAMResponse$: () => CreateOAuth2TokenWithIAMResponse$, + InternalServerException: () => InternalServerException2, + InternalServerException$: () => InternalServerException$2, + OAuth2ErrorCode: () => OAuth2ErrorCode, + Signin: () => Signin, + SigninClient: () => SigninClient, + SigninServiceException: () => SigninServiceException, + SigninServiceException$: () => SigninServiceException$, + TooManyRequestsError: () => TooManyRequestsError, + TooManyRequestsError$: () => TooManyRequestsError$, + ValidationException: () => ValidationException, + ValidationException$: () => ValidationException$, + __Client: () => Client, + errorTypeRegistries: () => errorTypeRegistries4 +}); +var init_signin = __esm({ + "../../node_modules/.pnpm/@aws-sdk+nested-clients@3.997.49/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js"() { + init_SigninClient(); + init_Signin(); + init_commands4(); + init_client(); + init_schemas_04(); + init_enums2(); + init_errors4(); + init_models_04(); + init_SigninServiceException(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-login@3.972.82/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js +var require_dist_cjs11 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-login@3.972.82/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js"(exports) { + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var { CredentialsProviderError, parseKnownFiles, getProfileName } = (init_config(), __toCommonJS(config_exports)); + var { HttpRequest: HttpRequest2 } = (init_protocols(), __toCommonJS(protocols_exports)); + var { createHash: createHash3, createPrivateKey, createPublicKey, sign: sign2 } = __require("node:crypto"); + var { promises } = __require("node:fs"); + var { homedir } = __require("node:os"); + var { dirname: dirname2, join: join4 } = __require("node:path"); + var LoginCredentialsFetcher = class _LoginCredentialsFetcher { + static { + __name(this, "LoginCredentialsFetcher"); + } + profileData; + init; + callerClientConfig; + static REFRESH_THRESHOLD = 5 * 60 * 1e3; + constructor(profileData, init2, callerClientConfig) { + this.profileData = profileData; + this.init = init2; + this.callerClientConfig = callerClientConfig; + } + async loadCredentials() { + const token = await this.loadToken(); + if (!token) { + throw new CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger }); + } + const accessToken = token.accessToken; + const now = Date.now(); + const expiryTime = new Date(accessToken.expiresAt).getTime(); + const timeUntilExpiry = expiryTime - now; + if (timeUntilExpiry <= _LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.refresh(token); + } + return this.toCredentials(token.accessToken); + } + get logger() { + return this.init?.logger; + } + get loginSession() { + return this.profileData.login_session; + } + toCredentials(token) { + return { + accessKeyId: token.accessKeyId, + secretAccessKey: token.secretAccessKey, + sessionToken: token.sessionToken, + accountId: token.accountId, + expiration: new Date(token.expiresAt) + }; + } + async refresh(token) { + const diskToken = await this.loadToken().catch(() => token); + const now = Date.now(); + const diskExpiry = new Date(diskToken.accessToken.expiresAt).getTime(); + const tokenExpiry = new Date(token.accessToken.expiresAt).getTime(); + const freshToken = diskExpiry <= now && tokenExpiry > now ? token : diskToken; + const freshExpiry = new Date(freshToken.accessToken.expiresAt).getTime(); + if (freshExpiry - Date.now() > _LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.toCredentials(freshToken.accessToken); + } + const { SigninClient: SigninClient2, CreateOAuth2TokenCommand: CreateOAuth2TokenCommand2 } = (init_signin(), __toCommonJS(signin_exports)); + const { logger, userAgentAppId } = this.callerClientConfig ?? {}; + const isH22 = /* @__PURE__ */ __name((requestHandler2) => { + return requestHandler2?.metadata?.handlerProtocol === "h2"; + }, "isH2"); + const requestHandler = isH22(this.callerClientConfig?.requestHandler) ? void 0 : this.callerClientConfig?.requestHandler; + const region = this.profileData.region ?? await this.callerClientConfig?.region?.() ?? process.env.AWS_REGION; + const client = new SigninClient2({ + credentials: { + accessKeyId: "", + secretAccessKey: "" + }, + region, + requestHandler, + logger, + userAgentAppId, + ...this.init?.clientConfig + }); + this.createDPoPInterceptor(client.middlewareStack); + const commandInput = { + tokenInput: { + clientId: freshToken.clientId, + refreshToken: freshToken.refreshToken, + grantType: "refresh_token" + } + }; + try { + const response = await client.send(new CreateOAuth2TokenCommand2(commandInput)); + const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {}; + const { refreshToken, expiresIn } = response.tokenOutput ?? {}; + if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) { + throw new CredentialsProviderError("Token refresh response missing required fields", { + logger: this.logger, + tryNextLink: false + }); + } + const expiresInMs = (expiresIn ?? 900) * 1e3; + const expiration = new Date(Date.now() + expiresInMs); + const updatedToken = { + ...freshToken, + accessToken: { + ...freshToken.accessToken, + accessKeyId, + secretAccessKey, + sessionToken, + expiresAt: expiration.toISOString() + }, + refreshToken + }; + await this.saveToken(updatedToken); + return this.toCredentials(updatedToken.accessToken); + } catch (error62) { + if (error62.name === "AccessDeniedException") { + const errorType = error62.error; + let message; + switch (errorType) { + case "TOKEN_EXPIRED": + message = "Your session has expired. Please reauthenticate."; + break; + case "USER_CREDENTIALS_CHANGED": + message = "Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password."; + break; + case "INSUFFICIENT_PERMISSIONS": + message = "Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action."; + break; + default: + message = `Failed to refresh token: ${String(error62)}. Please re-authenticate using \`aws login\``; + } + throw new CredentialsProviderError(message, { + logger: this.logger, + tryNextLink: false + }); + } + const tokenExpiry2 = new Date(freshToken.accessToken.expiresAt).getTime(); + if (tokenExpiry2 > Date.now()) { + this.logger?.warn?.(`Failed to refresh token: ${String(error62)}. Using existing token until expiry.`); + return this.toCredentials(freshToken.accessToken); + } + throw new CredentialsProviderError(`Failed to refresh token: ${String(error62)}. Please re-authenticate using aws login`, { logger: this.logger }); + } + } + async loadToken() { + const tokenFilePath = this.getTokenFilePath(); + try { + const tokenData = await promises.readFile(tokenFilePath, "utf8"); + const token = JSON.parse(tokenData); + const missingFields = ["accessToken", "clientId", "refreshToken", "dpopKey"].filter((k5) => !token[k5]); + if (!token.accessToken?.accountId) { + missingFields.push("accountId"); + } + if (missingFields.length > 0) { + throw new CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(", ")}`, { + logger: this.logger, + tryNextLink: false + }); + } + return token; + } catch (error62) { + throw new CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error62)}`, { + logger: this.logger, + tryNextLink: false + }); + } + } + async saveToken(token) { + const tokenFilePath = this.getTokenFilePath(); + const directory = dirname2(tokenFilePath); + try { + await promises.mkdir(directory, { recursive: true }); + } catch (error62) { + } + await promises.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8"); + } + getTokenFilePath() { + const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join4(homedir(), ".aws", "login", "cache"); + const loginSessionBytes = Buffer.from(this.loginSession, "utf8"); + const loginSessionSha256 = createHash3("sha256").update(loginSessionBytes).digest("hex"); + return join4(directory, `${loginSessionSha256}.json`); + } + derToRawSignature(derSignature) { + let offset = 2; + if (derSignature[offset] !== 2) { + throw new Error("Invalid DER signature"); + } + offset++; + const rLength = derSignature[offset++]; + let r5 = derSignature.subarray(offset, offset + rLength); + offset += rLength; + if (derSignature[offset] !== 2) { + throw new Error("Invalid DER signature"); + } + offset++; + const sLength = derSignature[offset++]; + let s2 = derSignature.subarray(offset, offset + sLength); + r5 = r5[0] === 0 ? r5.subarray(1) : r5; + s2 = s2[0] === 0 ? s2.subarray(1) : s2; + const rPadded = Buffer.concat([Buffer.alloc(32 - r5.length), r5]); + const sPadded = Buffer.concat([Buffer.alloc(32 - s2.length), s2]); + return Buffer.concat([rPadded, sPadded]); + } + createDPoPInterceptor(middlewareStack) { + middlewareStack.add((next) => async (args) => { + if (HttpRequest2.isInstance(args.request)) { + const request = args.request; + const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : ""}${request.path}`; + const dpop = await this.generateDpop(request.method, actualEndpoint); + request.headers = { + ...request.headers, + DPoP: dpop + }; + } + return next(args); + }, { + step: "finalizeRequest", + name: "dpopInterceptor", + override: true + }); + } + async generateDpop(method = "POST", endpoint) { + const token = await this.loadToken(); + try { + const privateKey = createPrivateKey({ + key: token.dpopKey, + format: "pem", + type: "sec1" + }); + const publicKey = createPublicKey(privateKey); + const publicDer = publicKey.export({ format: "der", type: "spki" }); + let pointStart = -1; + for (let i5 = 0; i5 < publicDer.length; i5++) { + if (publicDer[i5] === 4) { + pointStart = i5; + break; + } + } + const x = publicDer.slice(pointStart + 1, pointStart + 33); + const y = publicDer.slice(pointStart + 33, pointStart + 65); + const header = { + alg: "ES256", + typ: "dpop+jwt", + jwk: { + kty: "EC", + crv: "P-256", + x: x.toString("base64url"), + y: y.toString("base64url") + } + }; + const payload = { + jti: crypto.randomUUID(), + htm: method, + htu: endpoint, + iat: Math.floor(Date.now() / 1e3) + }; + const headerB64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadB64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const message = `${headerB64}.${payloadB64}`; + const asn1Signature = sign2("sha256", Buffer.from(message), privateKey); + const rawSignature = this.derToRawSignature(asn1Signature); + const signatureB64 = rawSignature.toString("base64url"); + return `${message}.${signatureB64}`; + } catch (error62) { + throw new CredentialsProviderError(`Failed to generate Dpop proof: ${error62 instanceof Error ? error62.message : String(error62)}`, { logger: this.logger, tryNextLink: false }); + } + } + }; + var fromLoginCredentials = /* @__PURE__ */ __name((init2) => async ({ callerClientConfig } = {}) => { + init2?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials"); + const profiles = await parseKnownFiles(init2 || {}); + const profileName = getProfileName({ + profile: init2?.profile ?? callerClientConfig?.profile + }); + const profile = profiles[profileName]; + if (!profile?.login_session) { + throw new CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, { + tryNextLink: true, + logger: init2?.logger + }); + } + const fetcher = new LoginCredentialsFetcher(profile, init2, callerClientConfig); + const credentials = await fetcher.loadCredentials(); + return setCredentialFeature2(credentials, "CREDENTIALS_LOGIN", "AD"); + }, "fromLoginCredentials"); + exports.fromLoginCredentials = fromLoginCredentials; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-process@3.972.75/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +var require_dist_cjs12 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-process@3.972.75/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js"(exports) { + var { externalDataInterceptor, CredentialsProviderError, parseKnownFiles, getProfileName } = (init_config(), __toCommonJS(config_exports)); + var { exec } = __require("node:child_process"); + var { promisify } = __require("node:util"); + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var getValidatedProcessCredentials = /* @__PURE__ */ __name((profileName, data, profiles) => { + if (data.Version !== 1) { + throw Error(`Profile ${profileName} credential_process did not return Version 1.`); + } + if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) { + throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); + } + if (data.Expiration) { + const currentTime = /* @__PURE__ */ new Date(); + const expireTime = new Date(data.Expiration); + if (expireTime < currentTime) { + throw Error(`Profile ${profileName} credential_process returned expired credentials.`); + } + } + let accountId = data.AccountId; + if (!accountId && profiles?.[profileName]?.aws_account_id) { + accountId = profiles[profileName].aws_account_id; + } + const credentials = { + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + ...data.SessionToken && { sessionToken: data.SessionToken }, + ...data.Expiration && { expiration: new Date(data.Expiration) }, + ...data.CredentialScope && { credentialScope: data.CredentialScope }, + ...accountId && { accountId } + }; + setCredentialFeature2(credentials, "CREDENTIALS_PROCESS", "w"); + return credentials; + }, "getValidatedProcessCredentials"); + var resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles, logger) => { + const profile = profiles[profileName]; + if (profiles[profileName]) { + const credentialProcess = profile["credential_process"]; + if (credentialProcess !== void 0) { + const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? exec); + try { + const { stdout } = await execPromise(credentialProcess); + let data; + try { + data = JSON.parse(stdout.trim()); + } catch { + throw Error(`Profile ${profileName} credential_process returned invalid JSON.`); + } + return getValidatedProcessCredentials(profileName, data, profiles); + } catch (error62) { + throw new CredentialsProviderError(error62.message, { logger }); + } + } else { + throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger }); + } + } else { + throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, { + logger + }); + } + }, "resolveProcessCredentials"); + var fromProcess = /* @__PURE__ */ __name((init2 = {}) => async ({ callerClientConfig } = {}) => { + init2.logger?.debug("@aws-sdk/credential-provider-process - fromProcess"); + const profiles = await parseKnownFiles(init2); + return resolveProcessCredentials(getProfileName({ + profile: init2.profile ?? callerClientConfig?.profile + }), profiles, init2.logger); + }, "fromProcess"); + exports.fromProcess = fromProcess; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-web-identity@3.972.81/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +var require_dist_cjs13 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-web-identity@3.972.81/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js"(exports) { + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var { CredentialsProviderError, externalDataInterceptor } = (init_config(), __toCommonJS(config_exports)); + var { readFileSync } = __require("node:fs"); + var fromWebToken = /* @__PURE__ */ __name((init2) => async (awsIdentityProperties) => { + init2.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken"); + const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init2; + let { roleAssumerWithWebIdentity } = init2; + if (!roleAssumerWithWebIdentity) { + const { getDefaultRoleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity3 } = (init_sts(), __toCommonJS(sts_exports)); + roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity3({ + ...init2.clientConfig, + credentialProviderLogger: init2.logger, + parentClientConfig: { + ...awsIdentityProperties?.callerClientConfig, + ...init2.parentClientConfig + } + }, init2.clientPlugins); + } + return roleAssumerWithWebIdentity({ + RoleArn: roleArn, + RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`, + WebIdentityToken: webIdentityToken, + ProviderId: providerId, + PolicyArns: policyArns, + Policy: policy, + DurationSeconds: durationSeconds + }); + }, "fromWebToken"); + var ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; + var ENV_ROLE_ARN = "AWS_ROLE_ARN"; + var ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; + var fromTokenFile = /* @__PURE__ */ __name((init2 = {}) => async (awsIdentityProperties) => { + init2.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile"); + const webIdentityTokenFile = init2?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE]; + const roleArn = init2?.roleArn ?? process.env[ENV_ROLE_ARN]; + const roleSessionName = init2?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME]; + if (!webIdentityTokenFile || !roleArn) { + throw new CredentialsProviderError("Web identity configuration not specified", { + logger: init2.logger + }); + } + const credentials = await fromWebToken({ + ...init2, + webIdentityToken: externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ?? readFileSync(webIdentityTokenFile, { encoding: "ascii" }), + roleArn, + roleSessionName + })(awsIdentityProperties); + if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) { + setCredentialFeature2(credentials, "CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN", "h"); + } + return credentials; + }, "fromTokenFile"); + exports.fromTokenFile = fromTokenFile; + exports.fromWebToken = fromWebToken; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-ini@3.973.20/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +var require_dist_cjs14 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-ini@3.973.20/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js"(exports) { + var { CredentialsProviderError, chain, getProfileName, parseKnownFiles } = (init_config(), __toCommonJS(config_exports)); + var { setCredentialFeature: setCredentialFeature2 } = (init_client2(), __toCommonJS(client_exports2)); + var resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName, logger) => { + const sourceProvidersMap = { + EcsContainer: /* @__PURE__ */ __name(async (options) => { + const { fromHttp } = require_dist_cjs8(); + const { fromContainerMetadata } = require_dist_cjs6(); + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"); + return async () => chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider); + }, "EcsContainer"), + Ec2InstanceMetadata: /* @__PURE__ */ __name(async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata"); + const { fromInstanceMetadata } = require_dist_cjs6(); + return async () => fromInstanceMetadata(options)().then(setNamedProvider); + }, "Ec2InstanceMetadata"), + Environment: /* @__PURE__ */ __name(async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment"); + const { fromEnv } = require_dist_cjs5(); + return async () => fromEnv(options)().then(setNamedProvider); + }, "Environment") + }; + if (credentialSource in sourceProvidersMap) { + return sourceProvidersMap[credentialSource]; + } else { + throw new CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger }); + } + }, "resolveCredentialSource"); + var setNamedProvider = /* @__PURE__ */ __name((creds) => setCredentialFeature2(creds, "CREDENTIALS_PROFILE_NAMED_PROVIDER", "p"), "setNamedProvider"); + var isAssumeRoleProfile = /* @__PURE__ */ __name((arg, { profile = "default", logger } = {}) => { + return Boolean(arg) && typeof arg === "object" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger })); + }, "isAssumeRoleProfile"); + var isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger }) => { + const withSourceProfile = typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined"; + if (withSourceProfile) { + logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`); + } + return withSourceProfile; + }, "isAssumeRoleWithSourceProfile"); + var isCredentialSourceProfile = /* @__PURE__ */ __name((arg, { profile, logger }) => { + const withProviderProfile = typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined"; + if (withProviderProfile) { + logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`); + } + return withProviderProfile; + }, "isCredentialSourceProfile"); + var resolveAssumeRoleCredentials = /* @__PURE__ */ __name(async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData2) => { + options.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)"); + const profileData = profiles[profileName]; + const { source_profile, region } = profileData; + if (!options.roleAssumer) { + const { getDefaultRoleAssumer: getDefaultRoleAssumer3 } = (init_sts(), __toCommonJS(sts_exports)); + options.roleAssumer = getDefaultRoleAssumer3({ + ...options.clientConfig, + credentialProviderLogger: options.logger, + parentClientConfig: { + ...callerClientConfig, + ...options?.parentClientConfig, + region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region + } + }, options.clientPlugins); + } + if (source_profile && source_profile in visitedProfiles) { + throw new CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile ${getProfileName(options)}. Profiles visited: ` + Object.keys(visitedProfiles).join(", "), { logger: options.logger }); + } + options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`); + const sourceCredsProvider = source_profile ? resolveProfileData2(source_profile, profiles, options, callerClientConfig, { + ...visitedProfiles, + [source_profile]: true + }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})) : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))(); + if (isCredentialSourceWithoutRoleArn(profileData)) { + return sourceCredsProvider.then((creds) => setCredentialFeature2(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } else { + const params = { + RoleArn: profileData.role_arn, + RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`, + ExternalId: profileData.external_id, + DurationSeconds: parseInt(profileData.duration_seconds || "3600", 10) + }; + const { mfa_serial } = profileData; + if (mfa_serial) { + if (!options.mfaCodeProvider) { + throw new CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false }); + } + params.SerialNumber = mfa_serial; + params.TokenCode = await options.mfaCodeProvider(mfa_serial); + } + const sourceCreds = await sourceCredsProvider; + return options.roleAssumer(sourceCreds, params).then((creds) => setCredentialFeature2(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } + }, "resolveAssumeRoleCredentials"); + var isCredentialSourceWithoutRoleArn = /* @__PURE__ */ __name((section) => { + return !section.role_arn && !!section.credential_source; + }, "isCredentialSourceWithoutRoleArn"); + var isLoginProfile = /* @__PURE__ */ __name((data) => { + return Boolean(data && data.login_session); + }, "isLoginProfile"); + var resolveLoginCredentials = /* @__PURE__ */ __name(async (profileName, options, callerClientConfig) => { + const { fromLoginCredentials } = require_dist_cjs11(); + const credentials = await fromLoginCredentials({ + ...options, + profile: profileName + })({ callerClientConfig }); + return setCredentialFeature2(credentials, "CREDENTIALS_PROFILE_LOGIN", "AC"); + }, "resolveLoginCredentials"); + var isProcessProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string", "isProcessProfile"); + var resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => { + const { fromProcess } = require_dist_cjs12(); + const credentials = await fromProcess({ + ...options, + profile + })(); + return setCredentialFeature2(credentials, "CREDENTIALS_PROFILE_PROCESS", "v"); + }, "resolveProcessCredentials"); + var resolveSsoCredentials = /* @__PURE__ */ __name(async (profile, profileData, options = {}, callerClientConfig) => { + const { fromSSO } = require_dist_cjs10(); + return fromSSO({ + profile, + logger: options.logger, + parentClientConfig: options.parentClientConfig, + clientConfig: options.clientConfig + })({ + callerClientConfig + }).then((creds) => { + if (profileData.sso_session) { + return setCredentialFeature2(creds, "CREDENTIALS_PROFILE_SSO", "r"); + } else { + return setCredentialFeature2(creds, "CREDENTIALS_PROFILE_SSO_LEGACY", "t"); + } + }); + }, "resolveSsoCredentials"); + var isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === "string" || typeof arg.sso_account_id === "string" || typeof arg.sso_session === "string" || typeof arg.sso_region === "string" || typeof arg.sso_role_name === "string"), "isSsoProfile"); + var isStaticCredsProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.aws_access_key_id === "string" && typeof arg.aws_secret_access_key === "string" && ["undefined", "string"].indexOf(typeof arg.aws_session_token) > -1 && ["undefined", "string"].indexOf(typeof arg.aws_account_id) > -1, "isStaticCredsProfile"); + var resolveStaticCredentials = /* @__PURE__ */ __name(async (profile, options) => { + options?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials"); + const credentials = { + accessKeyId: profile.aws_access_key_id, + secretAccessKey: profile.aws_secret_access_key, + sessionToken: profile.aws_session_token, + ...profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }, + ...profile.aws_account_id && { accountId: profile.aws_account_id } + }; + return setCredentialFeature2(credentials, "CREDENTIALS_PROFILE", "n"); + }, "resolveStaticCredentials"); + var isWebIdentityProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === "object" && typeof arg.web_identity_token_file === "string" && typeof arg.role_arn === "string" && ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1, "isWebIdentityProfile"); + var resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options, callerClientConfig) => { + const { fromTokenFile } = require_dist_cjs13(); + const credentials = await fromTokenFile({ + webIdentityTokenFile: profile.web_identity_token_file, + roleArn: profile.role_arn, + roleSessionName: profile.role_session_name, + roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity, + logger: options.logger, + parentClientConfig: options.parentClientConfig + })({ + callerClientConfig + }); + return setCredentialFeature2(credentials, "CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN", "q"); + }, "resolveWebIdentityCredentials"); + var resolveProfileData = /* @__PURE__ */ __name(async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => { + const data = profiles[profileName]; + if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) { + return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData); + } + if (isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isWebIdentityProfile(data)) { + return resolveWebIdentityCredentials(data, options, callerClientConfig); + } + if (isProcessProfile(data)) { + return resolveProcessCredentials(options, profileName); + } + if (isSsoProfile(data)) { + return await resolveSsoCredentials(profileName, data, options, callerClientConfig); + } + if (isLoginProfile(data)) { + return resolveLoginCredentials(profileName, options, callerClientConfig); + } + throw new CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger }); + }, "resolveProfileData"); + var fromIni = /* @__PURE__ */ __name((init2 = {}) => async ({ callerClientConfig } = {}) => { + init2.logger?.debug("@aws-sdk/credential-provider-ini - fromIni"); + const profiles = await parseKnownFiles(init2); + return resolveProfileData(getProfileName({ + profile: init2.profile ?? callerClientConfig?.profile + }), profiles, init2, callerClientConfig); + }, "fromIni"); + exports.fromIni = fromIni; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+credential-provider-node@3.972.87/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +var require_dist_cjs15 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+credential-provider-node@3.972.87/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js"(exports) { + var { ENV_KEY, ENV_SECRET, fromEnv } = require_dist_cjs5(); + var { chain, CredentialsProviderError, ENV_PROFILE } = (init_config(), __toCommonJS(config_exports)); + var ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; + var remoteProvider = /* @__PURE__ */ __name(async (init2) => { + const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = require_dist_cjs6(); + if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) { + init2.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata"); + const { fromHttp } = require_dist_cjs8(); + return chain(fromHttp(init2), fromContainerMetadata(init2)); + } + if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== "false") { + return async () => { + throw new CredentialsProviderError("EC2 Instance Metadata Service access disabled", { logger: init2.logger }); + }; + } + init2.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"); + return fromInstanceMetadata(init2); + }, "remoteProvider"); + function memoizeChain(providers, treatAsExpired) { + const chain2 = internalCreateChain(providers); + let activeLock; + let passiveLock; + let credentials; + let forceRefreshLock; + const provider = /* @__PURE__ */ __name(async (options) => { + if (options?.forceRefresh) { + if (!forceRefreshLock) { + forceRefreshLock = chain2(options).then((c5) => { + credentials = c5; + }).finally(() => { + forceRefreshLock = void 0; + }); + } + await forceRefreshLock; + return credentials; + } + if (credentials?.expiration) { + if (credentials?.expiration?.getTime() < Date.now()) { + credentials = void 0; + } + } + if (activeLock) { + await activeLock; + } else if (!credentials || treatAsExpired?.(credentials)) { + if (credentials) { + if (!passiveLock) { + passiveLock = chain2(options).then((c5) => { + credentials = c5; + }).catch(() => { + }).finally(() => { + passiveLock = void 0; + }); + } + } else { + activeLock = chain2(options).then((c5) => { + credentials = c5; + }).finally(() => { + activeLock = void 0; + }); + return provider(options); + } + } + return credentials; + }, "provider"); + return provider; + } + __name(memoizeChain, "memoizeChain"); + var internalCreateChain = /* @__PURE__ */ __name((providers) => async (awsIdentityProperties) => { + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; + }, "internalCreateChain"); + var multipleCredentialSourceWarningEmitted = false; + var defaultProvider = /* @__PURE__ */ __name((init2 = {}) => memoizeChain([ + async () => { + const profile = init2.profile ?? process.env[ENV_PROFILE]; + if (profile) { + const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET]; + if (envStaticCredentialsAreSet) { + if (!multipleCredentialSourceWarningEmitted) { + const warnFn = init2.logger?.warn && init2.logger?.constructor?.name !== "NoOpLogger" ? init2.logger.warn.bind(init2.logger) : console.warn; + warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: + Multiple credential sources detected: + Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set. + This SDK will proceed with the AWS_PROFILE value. + + However, a future version may change this behavior to prefer the ENV static credentials. + Please ensure that your environment only sets either the AWS_PROFILE or the + AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair. +`); + multipleCredentialSourceWarningEmitted = true; + } + } + throw new CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.", { + logger: init2.logger, + tryNextLink: true + }); + } + init2.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"); + return fromEnv(init2)(); + }, + async (awsIdentityProperties) => { + init2.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init2; + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + throw new CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).", { logger: init2.logger }); + } + const { fromSSO } = require_dist_cjs10(); + return fromSSO(init2)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init2.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni"); + const { fromIni } = require_dist_cjs14(); + return fromIni(init2)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init2.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess"); + const { fromProcess } = require_dist_cjs12(); + return fromProcess(init2)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init2.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile"); + const { fromTokenFile } = require_dist_cjs13(); + return fromTokenFile(init2)(awsIdentityProperties); + }, + async () => { + init2.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"); + return (await remoteProvider(init2))(); + }, + async () => { + throw new CredentialsProviderError("Could not load credentials from any providers", { + tryNextLink: false, + logger: init2.logger + }); + } + ], credentialsTreatedAsExpired), "defaultProvider"); + var credentialsWillNeedRefresh = /* @__PURE__ */ __name((credentials) => credentials?.expiration !== void 0, "credentialsWillNeedRefresh"); + var credentialsTreatedAsExpired = /* @__PURE__ */ __name((credentials) => credentials?.expiration !== void 0 && credentials.expiration.getTime() - Date.now() < 3e5, "credentialsTreatedAsExpired"); + exports.credentialsTreatedAsExpired = credentialsTreatedAsExpired; + exports.credentialsWillNeedRefresh = credentialsWillNeedRefresh; + exports.defaultProvider = defaultProvider; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1Js.js +var BLOCK, DIGEST_LENGTH, INIT, K, Sha1Js; +var init_Sha1Js = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1Js.js"() { + init_serde(); + BLOCK = 64; + DIGEST_LENGTH = 20; + INIT = new Int32Array([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + K = new Int32Array([1518500249, 1859775393, 2400959708, 3395469782]); + Sha1Js = class _Sha1Js { + static { + __name(this, "Sha1Js"); + } + digestLength = DIGEST_LENGTH; + state = Int32Array.from(INIT); + w; + buffer = new Uint8Array(BLOCK); + bufferLength = 0; + bytesHashed = 0; + finished = false; + inner; + outer; + constructor(secret) { + if (secret) { + const key = _Sha1Js.normalizeKey(secret); + this.inner = new _Sha1Js(); + this.outer = new _Sha1Js(); + const pad = new Uint8Array(BLOCK * 2); + for (let i5 = 0; i5 < BLOCK; ++i5) { + pad[i5] = 54 ^ key[i5]; + pad[i5 + BLOCK] = 92 ^ key[i5]; + } + this.inner.update(pad.subarray(0, BLOCK)); + this.outer.update(pad.subarray(BLOCK)); + } + } + update(data) { + if (this.finished) { + throw new Error("Attempted to update an already finished HMAC."); + } + if (this.inner) { + this.inner.update(data); + return; + } + let pos = 0; + let { length } = data; + this.bytesHashed += length; + if (this.bufferLength > 0) { + while (length > 0 && this.bufferLength < BLOCK) { + this.buffer[this.bufferLength++] = data[pos++]; + --length; + } + if (this.bufferLength === BLOCK) { + this.hashBuffer(this.buffer, 0); + this.bufferLength = 0; + } + } + while (length >= BLOCK) { + this.hashBuffer(data, pos); + pos += BLOCK; + length -= BLOCK; + } + while (length > 0) { + this.buffer[this.bufferLength++] = data[pos++]; + --length; + } + } + async digest() { + if (this.inner && this.outer) { + if (this.finished) { + throw new Error("Attempted to digest an already finished HMAC."); + } + this.finished = true; + const innerDigest = this.inner.digestSync(); + this.outer.update(innerDigest); + return this.outer.digestSync(); + } + return this.digestSync(); + } + reset() { + this.state = Int32Array.from(INIT); + this.buffer = new Uint8Array(BLOCK); + this.bufferLength = 0; + this.bytesHashed = 0; + } + digestSync() { + const state2 = this.state.slice(); + const buffer = this.buffer.slice(); + let bufferLength = this.bufferLength; + const bitsHi = this.bytesHashed / 536870912 | 0; + const bitsLo = this.bytesHashed << 3; + buffer[bufferLength++] = 128; + if (bufferLength > BLOCK - 8) { + for (let i5 = bufferLength; i5 < BLOCK; ++i5) { + buffer[i5] = 0; + } + this.hashBufferWith(state2, buffer, 0); + bufferLength = 0; + } + for (let i5 = bufferLength; i5 < BLOCK - 8; ++i5) { + buffer[i5] = 0; + } + const v = new DataView(buffer.buffer, buffer.byteOffset, BLOCK); + v.setUint32(BLOCK - 8, bitsHi, false); + v.setUint32(BLOCK - 4, bitsLo, false); + this.hashBufferWith(state2, buffer, 0); + const out = new Uint8Array(DIGEST_LENGTH); + out[0] = state2[0] >>> 24 & 255; + out[1] = state2[0] >>> 16 & 255; + out[2] = state2[0] >>> 8 & 255; + out[3] = state2[0] & 255; + out[4] = state2[1] >>> 24 & 255; + out[5] = state2[1] >>> 16 & 255; + out[6] = state2[1] >>> 8 & 255; + out[7] = state2[1] & 255; + out[8] = state2[2] >>> 24 & 255; + out[9] = state2[2] >>> 16 & 255; + out[10] = state2[2] >>> 8 & 255; + out[11] = state2[2] & 255; + out[12] = state2[3] >>> 24 & 255; + out[13] = state2[3] >>> 16 & 255; + out[14] = state2[3] >>> 8 & 255; + out[15] = state2[3] & 255; + out[16] = state2[4] >>> 24 & 255; + out[17] = state2[4] >>> 16 & 255; + out[18] = state2[4] >>> 8 & 255; + out[19] = state2[4] & 255; + return out; + } + static normalizeKey(secret) { + const key = toUint8Array(secret); + if (key.byteLength > BLOCK) { + const h5 = new _Sha1Js(); + h5.update(key); + const digest2 = h5.digestSync(); + const padded2 = new Uint8Array(BLOCK); + padded2.set(digest2); + return padded2; + } + const padded = new Uint8Array(BLOCK); + padded.set(key); + return padded; + } + hashBuffer(data, offset) { + this.hashBufferWith(this.state, data, offset); + } + hashBufferWith(state2, data, offset) { + const w = this.w ??= new Int32Array(80); + let s0 = state2[0], s1 = state2[1], s2 = state2[2], s3 = state2[3], s4 = state2[4]; + for (let t = 0; t < 16; ++t) { + w[t] = (data[offset + t * 4] & 255) << 24 | (data[offset + t * 4 + 1] & 255) << 16 | (data[offset + t * 4 + 2] & 255) << 8 | data[offset + t * 4 + 3] & 255; + } + for (let t = 16; t < 80; ++t) { + const x = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; + w[t] = x << 1 | x >>> 31; + } + for (let t = 0; t < 80; ++t) { + const r5 = t < 20 ? 0 : t < 40 ? 1 : t < 60 ? 2 : 3; + const temp = ((s0 << 5 | s0 >>> 27) + (r5 === 0 ? s1 & s2 ^ ~s1 & s3 : r5 === 2 ? s1 & s2 ^ s1 & s3 ^ s2 & s3 : s1 ^ s2 ^ s3) | 0) + (s4 + (K[r5] + w[t] | 0) | 0) | 0; + s4 = s3; + s3 = s2; + s2 = s1 << 30 | s1 >>> 2; + s1 = s0; + s0 = temp; + } + state2[0] = state2[0] + s0 | 0; + state2[1] = state2[1] + s1 | 0; + state2[2] = state2[2] + s2 | 0; + state2[3] = state2[3] + s3 | 0; + state2[4] = state2[4] + s4 | 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1Node.js +import { createHash as createHash2, createHmac } from "node:crypto"; +function buildNativeClass() { + return class Sha1Node { + static { + __name(this, "Sha1Node"); + } + digestLength = 20; + secret; + hash; + isHmac; + finished = false; + constructor(secret) { + this.secret = secret; + this.isHmac = !!secret; + this.hash = this.createHash(); + } + update(data) { + if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + this.hash.update(data); + } + async digest() { + let buf; + if (this.isHmac) { + this.finished = true; + buf = this.hash.digest(); + } else { + buf = this.hash.copy().digest(); + } + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); + } + reset() { + this.hash = this.createHash(); + this.finished = false; + } + createHash() { + return this.secret ? createHmac("sha1", toBuffer(this.secret)) : createHash2("sha1"); + } + }; +} +function toBuffer(data) { + if (typeof data === "string") { + return data; + } + if (ArrayBuffer.isView(data)) { + return Buffer.from(data.buffer, data.byteOffset, data.byteLength); + } + return Buffer.from(data); +} +var hasNativeCrypto, Sha1Node; +var init_Sha1Node = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1Node.js"() { + init_Sha1Js(); + hasNativeCrypto = (() => { + try { + createHash2("sha1"); + return true; + } catch { + return false; + } + })(); + Sha1Node = hasNativeCrypto ? buildNativeClass() : Sha1Js; + __name(buildNativeClass, "buildNativeClass"); + __name(toBuffer, "toBuffer"); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1WebCrypto.js +var digest, sign, importKey, subtle, MAX_PENDING_BYTES, Sha1WebCrypto; +var init_Sha1WebCrypto = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1WebCrypto.js"() { + init_serde(); + init_Sha1Js(); + ({ digest, sign, importKey } = globalThis?.crypto?.subtle ?? {}); + subtle = typeof digest === "function" && typeof sign === "function" && typeof importKey === "function" ? globalThis.crypto.subtle : void 0; + MAX_PENDING_BYTES = 8 * 1024 * 1024; + Sha1WebCrypto = class { + static { + __name(this, "Sha1WebCrypto"); + } + digestLength = 20; + secret; + pending = []; + pendingBytes = 0; + fallback; + finished = false; + constructor(secret) { + if (secret) { + this.secret = toUint8Array(secret); + } + } + update(data) { + if (this.finished) { + throw new Error("Attempted to update an already finished HMAC."); + } + if (this.fallback) { + this.fallback.update(data); + return; + } + this.pending.push(data.slice()); + this.pendingBytes += data.byteLength; + if (this.pendingBytes >= MAX_PENDING_BYTES) { + this.switchToFallback(); + } + } + async digest() { + if (this.fallback) { + return this.fallback.digest(); + } + if (this.secret && this.finished) { + throw new Error("Attempted to digest an already finished HMAC."); + } + const data = concatBytes(this.pending); + if (subtle) { + if (this.secret) { + this.finished = true; + const key = await subtle.importKey("raw", this.secret, { name: "HMAC", hash: "SHA-1" }, false, ["sign"]); + const sig = await subtle.sign("HMAC", key, data); + return new Uint8Array(sig); + } + const hash3 = await subtle.digest("SHA-1", data); + return new Uint8Array(hash3); + } + const sha1 = new Sha1Js(this.secret); + sha1.update(data); + return sha1.digest(); + } + reset() { + this.pending = []; + this.pendingBytes = 0; + this.fallback = void 0; + this.finished = false; + } + switchToFallback() { + const sha1Js = new Sha1Js(this.secret); + for (const chunk of this.pending) { + sha1Js.update(chunk); + } + this.fallback = sha1Js; + this.pending = []; + this.pendingBytes = 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/index.js +var sha_exports = {}; +__export(sha_exports, { + Sha1: () => Sha1Node, + Sha1Js: () => Sha1Js, + Sha1Node: () => Sha1Node, + Sha1WebCrypto: () => Sha1WebCrypto, + Sha256: () => Sha256Node, + Sha256Js: () => Sha256Js, + Sha256Node: () => Sha256Node +}); +var init_sha = __esm({ + "../../node_modules/.pnpm/@aws-sdk+checksums@3.1001.4/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/index.js"() { + init_Sha1Js(); + init_Sha1Node(); + init_Sha1WebCrypto(); + init_checksum(); + } +}); + +// ../../node_modules/.pnpm/@aws-sdk+client-s3@3.1154.0/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +var require_dist_cjs16 = __commonJS({ + "../../node_modules/.pnpm/@aws-sdk+client-s3@3.1154.0/node_modules/@aws-sdk/client-s3/dist-cjs/index.js"(exports) { + var { getFlexibleChecksumsPlugin: getFlexibleChecksumsPlugin2, NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS: NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS2, NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS: NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS2, resolveFlexibleChecksumsConfig: resolveFlexibleChecksumsConfig2 } = (init_flexible_checksums(), __toCommonJS(flexible_checksums_exports)); + var { awsEndpointFunctions: awsEndpointFunctions2, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion$1, createDefaultUserAgentProvider: createDefaultUserAgentProvider2, NODE_APP_ID_CONFIG_OPTIONS: NODE_APP_ID_CONFIG_OPTIONS2, getAwsRegionExtensionConfiguration: getAwsRegionExtensionConfiguration2, resolveAwsRegionExtensionConfiguration: resolveAwsRegionExtensionConfiguration2, resolveUserAgentConfig: resolveUserAgentConfig2, resolveHostHeaderConfig: resolveHostHeaderConfig2, getUserAgentPlugin: getUserAgentPlugin2, getHostHeaderPlugin: getHostHeaderPlugin2, getLoggerPlugin: getLoggerPlugin2, getRecursionDetectionPlugin: getRecursionDetectionPlugin2 } = (init_client2(), __toCommonJS(client_exports2)); + var { getThrow200ExceptionsPlugin: getThrow200ExceptionsPlugin2, getSsecPlugin: getSsecPlugin2, getLocationConstraintPlugin: getLocationConstraintPlugin2, getS3ExpiresMiddlewarePlugin: getS3ExpiresMiddlewarePlugin2, getCheckContentLengthHeaderPlugin: getCheckContentLengthHeaderPlugin2, S3RestXmlProtocol: S3RestXmlProtocol2, NODE_USE_ARN_REGION_CONFIG_OPTIONS: NODE_USE_ARN_REGION_CONFIG_OPTIONS2, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS: NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS2, resolveS3Config: resolveS3Config2, getValidateBucketNamePlugin: getValidateBucketNamePlugin2, getAddExpectContinuePlugin: getAddExpectContinuePlugin2, getRegionRedirectMiddlewarePlugin: getRegionRedirectMiddlewarePlugin2, getS3ExpressPlugin: getS3ExpressPlugin2, getS3ExpressHttpSigningPlugin: getS3ExpressHttpSigningPlugin2 } = (init_s3(), __toCommonJS(s3_exports)); + var { getHttpAuthSchemeEndpointRuleSetPlugin: getHttpAuthSchemeEndpointRuleSetPlugin2, DefaultIdentityProviderConfig: DefaultIdentityProviderConfig2, getHttpSigningPlugin: getHttpSigningPlugin2, createPaginator: createPaginator2 } = (init_dist_es(), __toCommonJS(dist_es_exports)); + var { normalizeProvider: normalizeProvider3, getSmithyContext: getSmithyContext2, makeBuilder: makeBuilder2, ServiceException: ServiceException2, NoOpLogger: NoOpLogger2, emitWarningIfUnsupportedVersion: emitWarningIfUnsupportedVersion3, loadConfigsForDefaultMode: loadConfigsForDefaultMode2, getDefaultExtensionConfiguration: getDefaultExtensionConfiguration2, resolveDefaultRuntimeConfig: resolveDefaultRuntimeConfig2, Client: Client2, createWaiter, checkExceptions, WaiterState, createAggregatedClient: createAggregatedClient2 } = (init_client(), __toCommonJS(client_exports)); + var { Command: $Command } = (init_client(), __toCommonJS(client_exports)); + exports.$Command = $Command; + exports.__Client = Client2; + var { resolveDefaultsModeConfig: resolveDefaultsModeConfig2, loadConfig: loadConfig2, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS2, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS2, NODE_REGION_CONFIG_OPTIONS: NODE_REGION_CONFIG_OPTIONS2, NODE_REGION_CONFIG_FILE_OPTIONS: NODE_REGION_CONFIG_FILE_OPTIONS2, resolveRegionConfig: resolveRegionConfig2 } = (init_config(), __toCommonJS(config_exports)); + var { BinaryDecisionDiagram: BinaryDecisionDiagram2, EndpointCache: EndpointCache2, decideEndpoint: decideEndpoint2, customEndpointFunctions: customEndpointFunctions2, resolveParams: resolveParams2, getEndpointPlugin: getEndpointPlugin2, resolveEndpointConfig: resolveEndpointConfig2 } = (init_endpoints(), __toCommonJS(endpoints_exports)); + var { eventStreamSerdeProvider, resolveEventStreamSerdeConfig } = (init_event_streams(), __toCommonJS(event_streams_exports)); + var { parseUrl: parseUrl2, getHttpHandlerExtensionConfiguration: getHttpHandlerExtensionConfiguration2, resolveHttpHandlerRuntimeConfig: resolveHttpHandlerRuntimeConfig2, getContentLengthPlugin: getContentLengthPlugin2 } = (init_protocols(), __toCommonJS(protocols_exports)); + var { DEFAULT_RETRY_MODE: DEFAULT_RETRY_MODE2, NODE_RETRY_MODE_CONFIG_OPTIONS: NODE_RETRY_MODE_CONFIG_OPTIONS2, NODE_MAX_ATTEMPT_CONFIG_OPTIONS: NODE_MAX_ATTEMPT_CONFIG_OPTIONS2, resolveRetryConfig: resolveRetryConfig2, getRetryPlugin: getRetryPlugin2 } = (init_retry(), __toCommonJS(retry_exports)); + var { TypeRegistry: TypeRegistry2, getSchemaSerdePlugin: getSchemaSerdePlugin2 } = (init_schema(), __toCommonJS(schema_exports)); + var { resolveAwsSdkSigV4Config: resolveAwsSdkSigV4Config2, resolveAwsSdkSigV4AConfig: resolveAwsSdkSigV4AConfig2, AwsSdkSigV4Signer: AwsSdkSigV4Signer2, AwsSdkSigV4ASigner: AwsSdkSigV4ASigner2, NODE_SIGV4A_CONFIG_OPTIONS: NODE_SIGV4A_CONFIG_OPTIONS2, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS: NODE_AUTH_SCHEME_PREFERENCE_OPTIONS2 } = (init_httpAuthSchemes2(), __toCommonJS(httpAuthSchemes_exports)); + var { SignatureV4MultiRegion: SignatureV4MultiRegion3 } = require_dist_cjs3(); + var { defaultProvider } = require_dist_cjs15(); + var { Sha256, Md5, readableStreamHasher } = (init_checksum(), __toCommonJS(checksum_exports)); + var { toUtf8: toUtf82, fromUtf8: fromUtf82, sdkStreamMixin: sdkStreamMixin2, getAwsChunkedEncodingStream, toBase64: toBase642, fromBase64: fromBase642, calculateBodyLength: calculateBodyLength2 } = (init_serde(), __toCommonJS(serde_exports)); + var { streamCollector: streamCollector5, NodeHttpHandler } = require_dist_cjs7(); + var { Sha1 } = (init_sha(), __toCommonJS(sha_exports)); + var aw = "ref"; + var ax = "argv"; + var ay = "backend"; + var az = "authSchemes"; + var aA = "disableDoubleEncoding"; + var aB = "signingName"; + var aC = "signingRegion"; + var aD = "signingRegionSet"; + var a5 = -1; + var b5 = true; + var c5 = false; + var d5 = "isSet"; + var e5 = "booleanEquals"; + var f5 = "stringEquals"; + var g5 = "coalesce"; + var h5 = "substring"; + var i5 = ""; + var j5 = "aws.partition"; + var k5 = "partitionResult"; + var l3 = "accessPointSuffix"; + var m3 = "regionPrefix"; + var n3 = /* @__PURE__ */ __name((n4) => "outpostId_ssa_" + n4 + i5, "n"); + var o3 = "hardwareType"; + var p3 = "ite"; + var q3 = "isValidHostLabel"; + var s2 = "sigv4"; + var t = "aws.isVirtualHostableS3Bucket"; + var u = "url"; + var v = "getAttr"; + var w = "bucketArn"; + var x = "--"; + var y = "arnType"; + var z2 = "accesspoint"; + var A = /* @__PURE__ */ __name((n4) => "accessPointName_ssa_" + n4 + i5, "A"); + var B = "s3-object-lambda"; + var C = "s3-outposts"; + var D = "bucketPartition"; + var E = "us-east-1"; + var F = "outpostType"; + var G = "name"; + var H = "s3"; + var I = "{url#scheme}://{Bucket}.{url#authority}{url#path}"; + var J = "{url#scheme}://{url#authority}{url#path}"; + var K2 = "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}"; + var L = "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}"; + var M = "https://{Bucket}.s3.{partitionResult#dnsSuffix}"; + var N = /* @__PURE__ */ __name((n4) => "{url#scheme}://{accessPointName_ssa_" + n4 + "}-{bucketArn#accountId}.{url#authority}{url#path}", "N"); + var O = /* @__PURE__ */ __name((n4) => "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName_ssa_" + n4 + "}`", "O"); + var P = "sigv4a"; + var Q = "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}"; + var R = "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}"; + var S = "https://s3.{partitionResult#dnsSuffix}"; + var T2 = { [aw]: "UseFIPS" }; + var U = { [aw]: "UseDualStack" }; + var V = { [aw]: "Bucket" }; + var W = { "fn": v, [ax]: [{ [aw]: k5 }, G] }; + var X = { [aw]: u }; + var Y = { [aw]: "Region" }; + var Z = { [aw]: w }; + var aa = { [aw]: y }; + var ab = { [aw]: "accessPointName_ssa_1" }; + var ac = { "fn": v, [ax]: [Z, "region"] }; + var ad = { [aw]: o3 }; + var ae = { "fn": v, [ax]: [Z, "service"] }; + var af = { "fn": v, [ax]: [Z, "accountId"] }; + var ag = { [ay]: "S3Express", [az]: [{ [aA]: true, [G]: "{_s3e_auth}", [aB]: "s3express", [aC]: "{Region}" }] }; + var ah = { [ay]: "S3Express", [az]: [{ [aA]: true, [G]: s2, [aB]: "s3express", [aC]: "{Region}" }] }; + var ai = { [az]: [{ [aA]: true, [G]: P, [aB]: C, [aD]: ["*"] }, { [aA]: true, [G]: s2, [aB]: C, [aC]: "{Region}" }] }; + var aj = { [az]: [{ [aA]: true, [G]: s2, [aB]: H, [aC]: E }] }; + var ak = { [az]: [{ [aA]: true, [G]: s2, [aB]: H, [aC]: "{Region}" }] }; + var al = { [az]: [{ [aA]: true, [G]: s2, [aB]: B, [aC]: "{bucketArn#region}" }] }; + var am = { [az]: [{ [aA]: true, [G]: s2, [aB]: H, [aC]: "{bucketArn#region}" }] }; + var an = { [az]: [{ [aA]: true, [G]: P, [aB]: C, [aD]: ["*"] }, { [aA]: true, [G]: s2, [aB]: C, [aC]: "{bucketArn#region}" }] }; + var ao = { [az]: [{ [aA]: true, [G]: s2, [aB]: B, [aC]: "{Region}" }] }; + var ap = [Y]; + var aq = [{ [aw]: "Endpoint" }]; + var as = [V]; + var at = [V, 0, 7, true]; + var au = [Z, "resourceId[1]"]; + var av = ["*"]; + var _data5 = { + conditions: [ + [d5, ap], + [e5, [{ [aw]: "Accelerate" }, b5]], + [e5, [T2, b5]], + [e5, [U, b5]], + [d5, aq], + [d5, as], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 0, 6, b5] }, i5] }, "--x-s3"]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: at }, i5] }, "--xa-s3"]], + [j5, ap, k5], + [h5, at, l3], + [f5, [{ [aw]: l3 }, "--op-s3"]], + [h5, [V, 8, 12, b5], m3], + [h5, [V, 32, 49, b5], n3(2)], + [h5, [V, 49, 50, b5], o3], + [e5, [{ [aw]: "ForcePathStyle" }, b5]], + [f5, [W, "aws-cn"]], + [p3, [U, ".dualstack", i5], "_s3e_ds"], + [q3, [{ [aw]: n3(2) }, c5]], + [p3, [T2, "-fips", i5], "_s3e_fips"], + [p3, [{ fn: g5, [ax]: [{ [aw]: "DisableS3ExpressSessionAuth" }, c5] }, s2, "sigv4-s3express"], "_s3e_auth"], + [t, [V, c5]], + ["parseURL", aq, u], + [e5, [{ fn: g5, [ax]: [{ [aw]: "UseS3ExpressControlEndpoint" }, c5] }, b5]], + [t, [V, b5]], + [f5, [{ fn: v, [ax]: [X, "scheme"] }, "http"]], + [q3, [Y, c5]], + ["aws.parseArn", as, w], + [v, [{ fn: "split", [ax]: [V, x, 0] }, "[-2]"], "s3expressAvailabilityZoneId"], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 0, 4, c5] }, i5] }, "arn:"]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 16, 18, b5] }, i5] }, x]], + [e5, [{ fn: v, [ax]: [X, "isIp"] }, b5]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 21, 23, b5] }, i5] }, x]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 27, 29, b5] }, i5] }, x]], + [f5, [{ [aw]: m3 }, "beta"]], + ["uriEncode", as, "uri_encoded_bucket"], + [q3, [Y, b5]], + [e5, [{ fn: g5, [ax]: [{ [aw]: "UseObjectLambdaEndpoint" }, c5] }, b5]], + [v, [Z, "resourceId[0]"], y], + [f5, [aa, i5]], + [f5, [aa, z2]], + [v, au, A(1)], + [f5, [ab, i5]], + [f5, [ac, i5]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 14, 16, b5] }, i5] }, x]], + [f5, [ad, "e"]], + [f5, [ad, "o"]], + [f5, [Y, "aws-global"]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 19, 21, b5] }, i5] }, x]], + [f5, [ae, B]], + [e5, [{ fn: g5, [ax]: [{ [aw]: "DisableAccessPoints" }, c5] }, b5]], + [f5, [ae, C]], + [j5, [ac], D], + [q3, [ab, b5]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 26, 28, b5] }, i5] }, x]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 15, 17, b5] }, i5] }, x]], + [v, [Z, "resourceId[4]"]], + [f5, [{ fn: g5, [ax]: [{ fn: h5, [ax]: [V, 20, 22, b5] }, i5] }, x]], + [e5, [{ [aw]: "UseGlobalEndpoint" }, b5]], + [f5, [Y, E]], + [v, au, n3(1)], + [e5, [{ fn: g5, [ax]: [{ [aw]: "UseArnRegion" }, b5] }, b5]], + [q3, [{ [aw]: n3(1) }, c5]], + [v, [Z, "resourceId[2]"], F], + [f5, [Y, ac]], + [f5, [{ fn: v, [ax]: [{ [aw]: D }, G] }, W]], + [e5, [{ [aw]: "DisableMultiRegionAccessPoints" }, b5]], + [q3, [ac, b5]], + [f5, [{ fn: v, [ax]: [Z, "partition"] }, W]], + [f5, [af, i5]], + [f5, [ae, H]], + [q3, [af, c5]], + [v, [Z, "resourceId[3]"], A(2)], + [q3, [ab, c5]], + [f5, [{ [aw]: F }, z2]], + [q3, [{ [aw]: A(2) }, c5]] + ], + results: [ + [a5], + [a5, "Accelerate cannot be used with FIPS"], + [a5, "Cannot set dual-stack in combination with a custom endpoint."], + [a5, "A custom endpoint cannot be combined with FIPS"], + [a5, "A custom endpoint cannot be combined with S3 Accelerate"], + [a5, "Partition does not support FIPS"], + [a5, "S3Express does not support S3 Accelerate."], + ["{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}", ag], + [I, ag], + [a5, "S3Express bucket name is not a valid virtual hostable name."], + ["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", ah], + ["https://{Bucket}.s3express{_s3e_fips}-{s3expressAvailabilityZoneId}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}", ag], + [a5, "Unrecognized S3Express bucket name format."], + [J, ag], + ["https://s3express-control{_s3e_fips}{_s3e_ds}.{Region}.{partitionResult#dnsSuffix}", ah], + [a5, "Expected a endpoint to be specified but no endpoint was found"], + ["https://{Bucket}.ec2.{url#authority}", ai], + ["https://{Bucket}.ec2.s3-outposts.{Region}.{partitionResult#dnsSuffix}", ai], + ["https://{Bucket}.op-{outpostId_ssa_2}.{url#authority}", ai], + ["https://{Bucket}.op-{outpostId_ssa_2}.s3-outposts.{Region}.{partitionResult#dnsSuffix}", ai], + [a5, 'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"'], + [a5, "Invalid Outposts Bucket alias - it must be a valid bucket name."], + [a5, "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."], + [a5, "Custom endpoint `{Endpoint}` was not a valid URI"], + [a5, "S3 Accelerate cannot be used in this region"], + ["https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", ak], + ["https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", ak], + ["https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", ak], + ["https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", ak], + [K2, aj], + [I, aj], + [K2, ak], + [I, ak], + [L, aj], + [L, ak], + [M, aj], + [M, ak], + ["https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", ak], + [a5, "Invalid region: region was not a valid DNS name."], + [a5, "S3 Object Lambda does not support Dual-stack"], + [a5, "S3 Object Lambda does not support S3 Accelerate"], + [a5, "Access points are not supported for this operation"], + [a5, "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`"], + [a5, "Invalid ARN: Missing account id"], + [N(1), al], + ["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", al], + ["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}", al], + [a5, O(1)], + [a5, "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`"], + [a5, "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)"], + [a5, "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`"], + [a5, "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."], + [a5, "Invalid ARN: bucket ARN is missing a region"], + [a5, "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided"], + [a5, "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`"], + [a5, "Access Points do not support S3 Accelerate"], + ["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", am], + ["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", am], + ["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", am], + [N(1), am], + ["https://{accessPointName_ssa_1}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}", am], + [a5, "Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}"], + [a5, "S3 MRAP does not support dual-stack"], + [a5, "S3 MRAP does not support FIPS"], + [a5, "S3 MRAP does not support S3 Accelerate"], + [a5, "Invalid configuration: Multi-Region Access Point ARNs are disabled."], + ["https://{accessPointName_ssa_1}.accesspoint.s3-global.{partitionResult#dnsSuffix}", { [az]: [{ [aA]: b5, name: P, [aB]: H, [aD]: av }] }], + [a5, "Client was configured for partition `{partitionResult#name}` but bucket referred to partition `{bucketArn#partition}`"], + [a5, "Invalid Access Point Name"], + [a5, "S3 Outposts does not support Dual-stack"], + [a5, "S3 Outposts does not support FIPS"], + [a5, "S3 Outposts does not support S3 Accelerate"], + [a5, "Invalid Arn: Outpost Access Point ARN contains sub resources"], + ["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.{url#authority}", an], + ["https://{accessPointName_ssa_2}-{bucketArn#accountId}.{outpostId_ssa_1}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}", an], + [a5, O(2)], + [a5, "Expected an outpost type `accesspoint`, found {outpostType}"], + [a5, "Invalid ARN: expected an access point name"], + [a5, "Invalid ARN: Expected a 4-component resource"], + [a5, "Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId_ssa_1}`"], + [a5, "Invalid ARN: The Outpost Id was not set"], + [a5, "Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})"], + [a5, "Invalid ARN: No ARN type specified"], + [a5, "Invalid ARN: `{Bucket}` was not a valid ARN"], + [a5, "Path-style addressing cannot be used with ARN buckets"], + ["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", aj], + ["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", ak], + ["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", aj], + ["https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", ak], + ["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", aj], + ["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", ak], + [Q, aj], + [Q, ak], + [R, aj], + [R, ak], + ["https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", ak], + [a5, "Path-style addressing cannot be used with S3 Accelerate"], + [J, ao], + ["https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}", ao], + ["https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}", ao], + ["https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", ak], + ["https://s3-fips.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://s3-fips.{Region}.{partitionResult#dnsSuffix}", ak], + ["https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", aj], + ["https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", ak], + [J, aj], + [J, ak], + [S, aj], + [S, ak], + ["https://s3.{Region}.{partitionResult#dnsSuffix}", ak], + [a5, "A region must be set when sending requests to S3."] + ] + }; + var root5 = 2; + var r5 = 1e8; + var nodes5 = new Int32Array([ + -1, + 1, + -1, + 0, + 3, + r5 + 115, + 1, + 424, + 4, + 2, + 272, + 5, + 3, + 233, + 6, + 4, + 85, + 7, + 5, + 15, + 8, + 8, + 9, + r5 + 115, + 16, + 10, + 13, + 18, + 11, + 13, + 19, + 12, + 13, + 22, + r5 + 14, + 13, + 35, + 14, + r5 + 42, + 36, + r5 + 103, + 435, + 6, + 271, + 16, + 7, + 270, + 17, + 8, + 19, + 18, + 14, + 501, + 106, + 9, + 20, + 24, + 10, + 21, + 24, + 11, + 22, + 24, + 12, + 23, + 24, + 13, + 547, + 24, + 14, + 77, + 25, + 20, + 73, + 26, + 26, + 27, + 78, + 37, + 28, + r5 + 86, + 38, + r5 + 86, + 29, + 39, + 47, + 30, + 48, + r5 + 58, + 31, + 50, + 32, + r5 + 85, + 51, + 33, + 136, + 55, + r5 + 76, + 34, + 59, + 35, + r5 + 84, + 60, + 39, + 36, + 61, + 37, + r5 + 83, + 62, + 38, + 146, + 63, + 41, + r5 + 46, + 61, + 40, + r5 + 83, + 62, + 41, + 150, + 64, + 42, + r5 + 54, + 66, + 43, + r5 + 53, + 70, + 44, + r5 + 52, + 71, + 45, + r5 + 81, + 73, + 46, + r5 + 80, + 74, + r5 + 78, + r5 + 79, + 40, + 48, + r5 + 57, + 41, + r5 + 57, + 49, + 42, + 185, + 50, + 48, + 62, + 51, + 49, + r5 + 45, + 52, + 51, + 53, + 526, + 60, + 56, + 54, + 62, + r5 + 55, + 55, + 63, + 57, + r5 + 46, + 62, + r5 + 55, + 57, + 64, + 58, + r5 + 54, + 66, + 59, + r5 + 53, + 69, + 60, + r5 + 65, + 70, + 61, + r5 + 52, + 72, + r5 + 64, + r5 + 51, + 49, + r5 + 45, + 63, + 51, + 64, + 526, + 60, + 67, + 65, + 62, + r5 + 55, + 66, + 63, + 68, + r5 + 46, + 62, + r5 + 55, + 68, + 64, + 69, + r5 + 54, + 66, + 70, + r5 + 53, + 68, + r5 + 47, + 71, + 70, + 72, + r5 + 52, + 72, + r5 + 50, + r5 + 51, + 25, + 74, + r5 + 42, + 46, + r5 + 39, + 75, + 57, + 76, + r5 + 41, + 58, + r5 + 40, + r5 + 41, + 26, + r5 + 88, + 78, + 28, + r5 + 87, + 79, + 34, + 82, + 80, + 35, + 81, + 545, + 36, + r5 + 103, + r5 + 115, + 46, + r5 + 97, + 83, + 57, + 84, + r5 + 99, + 58, + r5 + 98, + r5 + 99, + 5, + 101, + 86, + 8, + 87, + r5 + 115, + 16, + 88, + 89, + 18, + 91, + 89, + 19, + 90, + 92, + 21, + 97, + 95, + 19, + 93, + 92, + 21, + 98, + 95, + 21, + 97, + 94, + 22, + r5 + 14, + 95, + 35, + 96, + r5 + 42, + 36, + r5 + 103, + r5 + 42, + 22, + r5 + 13, + 98, + 35, + 99, + r5 + 42, + 36, + r5 + 101, + 100, + 46, + r5 + 110, + r5 + 111, + 6, + 214, + 102, + 7, + 208, + 103, + 8, + 119, + 104, + 14, + 118, + 105, + 21, + 106, + r5 + 23, + 26, + 107, + 502, + 37, + 108, + r5 + 86, + 38, + r5 + 86, + 109, + 39, + 112, + 110, + 48, + r5 + 58, + 111, + 50, + 136, + r5 + 85, + 40, + 113, + r5 + 57, + 41, + r5 + 57, + 114, + 42, + 115, + 500, + 48, + r5 + 56, + 116, + 52, + 117, + r5 + 72, + 65, + r5 + 69, + r5 + 72, + 21, + 501, + r5 + 23, + 9, + 120, + 124, + 10, + 121, + 124, + 11, + 122, + 124, + 12, + 123, + 124, + 13, + 202, + 124, + 14, + 195, + 125, + 20, + 190, + 126, + 21, + 127, + r5 + 23, + 23, + 128, + 129, + 24, + 189, + 129, + 26, + 130, + 197, + 37, + 131, + r5 + 86, + 38, + r5 + 86, + 132, + 39, + 159, + 133, + 48, + r5 + 58, + 134, + 50, + 135, + r5 + 85, + 51, + 141, + 136, + 55, + r5 + 76, + 137, + 59, + 138, + r5 + 84, + 60, + r5 + 83, + 139, + 61, + 140, + r5 + 83, + 63, + r5 + 83, + r5 + 46, + 55, + r5 + 76, + 142, + 59, + 143, + r5 + 84, + 60, + 148, + 144, + 61, + 145, + r5 + 83, + 62, + 147, + 146, + 63, + 150, + r5 + 46, + 63, + 153, + r5 + 46, + 61, + 149, + r5 + 83, + 62, + 153, + 150, + 64, + 151, + r5 + 54, + 66, + 152, + r5 + 53, + 70, + r5 + 82, + r5 + 52, + 64, + 154, + r5 + 54, + 66, + 155, + r5 + 53, + 70, + 156, + r5 + 52, + 71, + 157, + r5 + 81, + 73, + 158, + r5 + 80, + 74, + r5 + 77, + r5 + 79, + 40, + 160, + r5 + 57, + 41, + r5 + 57, + 161, + 42, + 185, + 162, + 48, + 174, + 163, + 49, + r5 + 45, + 164, + 51, + 165, + 526, + 60, + 168, + 166, + 62, + r5 + 55, + 167, + 63, + 169, + r5 + 46, + 62, + r5 + 55, + 169, + 64, + 170, + r5 + 54, + 66, + 171, + r5 + 53, + 69, + 172, + r5 + 65, + 70, + 173, + r5 + 52, + 72, + r5 + 63, + r5 + 51, + 49, + r5 + 45, + 175, + 51, + 176, + 526, + 60, + 179, + 177, + 62, + r5 + 55, + 178, + 63, + 180, + r5 + 46, + 62, + r5 + 55, + 180, + 64, + 181, + r5 + 54, + 66, + 182, + r5 + 53, + 68, + r5 + 47, + 183, + 70, + 184, + r5 + 52, + 72, + r5 + 48, + r5 + 51, + 48, + r5 + 56, + 186, + 52, + 187, + r5 + 72, + 65, + r5 + 69, + 188, + 67, + r5 + 70, + r5 + 71, + 25, + r5 + 36, + r5 + 42, + 21, + 191, + r5 + 23, + 25, + 192, + r5 + 42, + 30, + 194, + 193, + 46, + r5 + 34, + r5 + 36, + 46, + r5 + 33, + r5 + 35, + 21, + 196, + r5 + 23, + 26, + r5 + 88, + 197, + 28, + r5 + 87, + 198, + 34, + 201, + 199, + 35, + 200, + 545, + 36, + r5 + 101, + r5 + 115, + 46, + r5 + 95, + r5 + 96, + 17, + 203, + r5 + 22, + 20, + 204, + r5 + 21, + 21, + 205, + 550, + 33, + 206, + 550, + 44, + r5 + 16, + 207, + 45, + r5 + 18, + r5 + 20, + 8, + 209, + 215, + 16, + 210, + 220, + 18, + 211, + 220, + 19, + 212, + 224, + 20, + 213, + 227, + 21, + 231, + 401, + 8, + 218, + 215, + 19, + 216, + r5 + 9, + 20, + 217, + 227, + 21, + 231, + r5 + 9, + 16, + 219, + 220, + 18, + 223, + 220, + 19, + 221, + 224, + 20, + 222, + 227, + 21, + 231, + r5 + 12, + 19, + 226, + 224, + 20, + 225, + r5 + 9, + 21, + r5 + 9, + r5 + 12, + 20, + 230, + 227, + 21, + 228, + r5 + 9, + 30, + 229, + r5 + 9, + 34, + r5 + 7, + r5 + 9, + 21, + 231, + 415, + 30, + 232, + r5 + 8, + 34, + r5 + 7, + r5 + 8, + 4, + r5 + 2, + 234, + 5, + 235, + 480, + 6, + 271, + 236, + 7, + 270, + 237, + 8, + 238, + 491, + 9, + 239, + 243, + 10, + 240, + 243, + 11, + 241, + 243, + 12, + 242, + 243, + 13, + 547, + 243, + 14, + 266, + 244, + 20, + 264, + 245, + 26, + 246, + 267, + 37, + 247, + r5 + 86, + 38, + r5 + 86, + 248, + 39, + 249, + 518, + 40, + 250, + r5 + 57, + 41, + r5 + 57, + 251, + 42, + 538, + 252, + 48, + r5 + 43, + 253, + 49, + r5 + 45, + 254, + 51, + 255, + 526, + 60, + 258, + 256, + 62, + r5 + 55, + 257, + 63, + 259, + r5 + 46, + 62, + r5 + 55, + 259, + 64, + 260, + r5 + 54, + 66, + 261, + r5 + 53, + 69, + 262, + r5 + 65, + 70, + 263, + r5 + 52, + 72, + r5 + 62, + r5 + 51, + 25, + 265, + r5 + 42, + 46, + r5 + 31, + r5 + 32, + 26, + r5 + 88, + 267, + 28, + r5 + 87, + 268, + 34, + 269, + 544, + 46, + r5 + 93, + r5 + 94, + 8, + 397, + r5 + 9, + 8, + 407, + r5 + 9, + 3, + 346, + 273, + 4, + r5 + 3, + 274, + 5, + 284, + 275, + 8, + 276, + r5 + 115, + 15, + r5 + 5, + 277, + 16, + 278, + 281, + 18, + 279, + 281, + 19, + 280, + 281, + 22, + r5 + 14, + 281, + 35, + 282, + r5 + 42, + 36, + r5 + 102, + 283, + 46, + r5 + 106, + r5 + 107, + 6, + 405, + 285, + 7, + 395, + 286, + 8, + 295, + 287, + 14, + 501, + 288, + 26, + 289, + 502, + 37, + 290, + r5 + 86, + 38, + r5 + 86, + 291, + 39, + 292, + 307, + 40, + 293, + r5 + 57, + 41, + r5 + 57, + 294, + 42, + 335, + 500, + 9, + 296, + 300, + 10, + 297, + 300, + 11, + 298, + 300, + 12, + 299, + 300, + 13, + 394, + 300, + 14, + 339, + 301, + 15, + r5 + 5, + 302, + 20, + 337, + 303, + 26, + 304, + 341, + 37, + 305, + r5 + 86, + 38, + r5 + 86, + 306, + 39, + 309, + 307, + 48, + r5 + 58, + 308, + 50, + r5 + 74, + r5 + 85, + 40, + 310, + r5 + 57, + 41, + r5 + 57, + 311, + 42, + 335, + 312, + 48, + 324, + 313, + 49, + r5 + 45, + 314, + 51, + 315, + 526, + 60, + 318, + 316, + 62, + r5 + 55, + 317, + 63, + 319, + r5 + 46, + 62, + r5 + 55, + 319, + 64, + 320, + r5 + 54, + 66, + 321, + r5 + 53, + 69, + 322, + r5 + 65, + 70, + 323, + r5 + 52, + 72, + r5 + 61, + r5 + 51, + 49, + r5 + 45, + 325, + 51, + 326, + 526, + 60, + 329, + 327, + 62, + r5 + 55, + 328, + 63, + 330, + r5 + 46, + 62, + r5 + 55, + 330, + 64, + 331, + r5 + 54, + 66, + 332, + r5 + 53, + 68, + r5 + 47, + 333, + 70, + 334, + r5 + 52, + 72, + r5 + 49, + r5 + 51, + 48, + r5 + 56, + 336, + 52, + r5 + 67, + r5 + 72, + 25, + 338, + r5 + 42, + 46, + r5 + 27, + r5 + 28, + 15, + r5 + 5, + 340, + 26, + r5 + 88, + 341, + 28, + r5 + 87, + 342, + 34, + 345, + 343, + 35, + 344, + 545, + 36, + r5 + 102, + r5 + 115, + 46, + r5 + 91, + r5 + 92, + 4, + r5 + 2, + 347, + 5, + 357, + 348, + 8, + 349, + r5 + 115, + 15, + r5 + 5, + 350, + 16, + 351, + 354, + 18, + 352, + 354, + 19, + 353, + 354, + 22, + r5 + 14, + 354, + 35, + 355, + r5 + 42, + 36, + r5 + 43, + 356, + 46, + r5 + 104, + r5 + 105, + 6, + 405, + 358, + 7, + 395, + 359, + 8, + 360, + 491, + 9, + 361, + 365, + 10, + 362, + 365, + 11, + 363, + 365, + 12, + 364, + 365, + 13, + 394, + 365, + 14, + 389, + 366, + 15, + r5 + 5, + 367, + 20, + 387, + 368, + 26, + 369, + 391, + 37, + 370, + r5 + 86, + 38, + r5 + 86, + 371, + 39, + 372, + 518, + 40, + 373, + r5 + 57, + 41, + r5 + 57, + 374, + 42, + 538, + 375, + 48, + r5 + 43, + 376, + 49, + r5 + 45, + 377, + 51, + 378, + 526, + 60, + 381, + 379, + 62, + r5 + 55, + 380, + 63, + 382, + r5 + 46, + 62, + r5 + 55, + 382, + 64, + 383, + r5 + 54, + 66, + 384, + r5 + 53, + 69, + 385, + r5 + 65, + 70, + 386, + r5 + 52, + 72, + r5 + 60, + r5 + 51, + 25, + 388, + r5 + 42, + 46, + r5 + 25, + r5 + 26, + 15, + r5 + 5, + 390, + 26, + r5 + 88, + 391, + 28, + r5 + 87, + 392, + 34, + 393, + 544, + 46, + r5 + 89, + r5 + 90, + 15, + r5 + 5, + 547, + 8, + 396, + r5 + 9, + 15, + r5 + 5, + 397, + 16, + 398, + 410, + 18, + 399, + 410, + 19, + 400, + 410, + 20, + 401, + r5 + 9, + 27, + 402, + r5 + 12, + 29, + r5 + 11, + 403, + 31, + r5 + 11, + 404, + 32, + r5 + 11, + 422, + 8, + 406, + r5 + 9, + 15, + r5 + 5, + 407, + 16, + 408, + 410, + 18, + 409, + 410, + 19, + 411, + 410, + 20, + r5 + 12, + r5 + 9, + 20, + 414, + 412, + 22, + 413, + r5 + 9, + 34, + r5 + 10, + r5 + 9, + 22, + 416, + 415, + 27, + 419, + r5 + 12, + 27, + 418, + 417, + 34, + r5 + 10, + r5 + 12, + 34, + r5 + 10, + 419, + 43, + r5 + 11, + 420, + 47, + r5 + 11, + 421, + 53, + r5 + 11, + 422, + 54, + r5 + 11, + 423, + 56, + r5 + 11, + r5 + 12, + 2, + r5 + 1, + 425, + 3, + 478, + 426, + 4, + r5 + 4, + 427, + 5, + 438, + 428, + 8, + 429, + r5 + 115, + 16, + 430, + 433, + 18, + 431, + 433, + 19, + 432, + 433, + 22, + r5 + 14, + 433, + 35, + 434, + r5 + 42, + 36, + r5 + 44, + 435, + 46, + r5 + 112, + 436, + 57, + 437, + r5 + 114, + 58, + r5 + 113, + r5 + 114, + 6, + r5 + 6, + 439, + 7, + r5 + 6, + 440, + 8, + 450, + 441, + 14, + 501, + 442, + 26, + 443, + 502, + 37, + 444, + r5 + 86, + 38, + r5 + 86, + 445, + 39, + 446, + 465, + 40, + 447, + r5 + 57, + 41, + r5 + 57, + 448, + 42, + 471, + 449, + 48, + r5 + 44, + 500, + 9, + 451, + 455, + 10, + 452, + 455, + 11, + 453, + 455, + 12, + 454, + 455, + 13, + 547, + 455, + 14, + 473, + 456, + 15, + 460, + 457, + 20, + 458, + 461, + 25, + 459, + r5 + 42, + 46, + r5 + 37, + r5 + 38, + 20, + 540, + 461, + 26, + 462, + 474, + 37, + 463, + r5 + 86, + 38, + r5 + 86, + 464, + 39, + 467, + 465, + 48, + r5 + 58, + 466, + 50, + r5 + 75, + r5 + 85, + 40, + 468, + r5 + 57, + 41, + r5 + 57, + 469, + 42, + 471, + 470, + 48, + r5 + 44, + 524, + 48, + r5 + 44, + 472, + 52, + r5 + 68, + r5 + 72, + 26, + r5 + 88, + 474, + 28, + r5 + 87, + 475, + 34, + r5 + 100, + 476, + 35, + 477, + 545, + 36, + r5 + 44, + r5 + 115, + 4, + r5 + 2, + 479, + 5, + 488, + 480, + 8, + 481, + r5 + 115, + 16, + 482, + 485, + 18, + 483, + 485, + 19, + 484, + 485, + 22, + r5 + 14, + 485, + 35, + 486, + r5 + 42, + 36, + r5 + 43, + 487, + 46, + r5 + 108, + r5 + 109, + 6, + r5 + 6, + 489, + 7, + r5 + 6, + 490, + 8, + 503, + 491, + 14, + 501, + 492, + 26, + 493, + 502, + 37, + 494, + r5 + 86, + 38, + r5 + 86, + 495, + 39, + 496, + 518, + 40, + 497, + r5 + 57, + 41, + r5 + 57, + 498, + 42, + 538, + 499, + 48, + r5 + 43, + 500, + 49, + r5 + 45, + 526, + 26, + r5 + 88, + 502, + 28, + r5 + 87, + r5 + 115, + 9, + 504, + 508, + 10, + 505, + 508, + 11, + 506, + 508, + 12, + 507, + 508, + 13, + 547, + 508, + 14, + 541, + 509, + 15, + 513, + 510, + 20, + 511, + 514, + 25, + 512, + r5 + 42, + 46, + r5 + 29, + r5 + 30, + 20, + 540, + 514, + 26, + 515, + 542, + 37, + 516, + r5 + 86, + 38, + r5 + 86, + 517, + 39, + 520, + 518, + 48, + r5 + 58, + 519, + 50, + r5 + 73, + r5 + 85, + 40, + 521, + r5 + 57, + 41, + r5 + 57, + 522, + 42, + 538, + 523, + 48, + r5 + 43, + 524, + 49, + r5 + 45, + 525, + 51, + 529, + 526, + 60, + r5 + 55, + 527, + 62, + r5 + 55, + 528, + 63, + r5 + 55, + r5 + 46, + 60, + 532, + 530, + 62, + r5 + 55, + 531, + 63, + 533, + r5 + 46, + 62, + r5 + 55, + 533, + 64, + 534, + r5 + 54, + 66, + 535, + r5 + 53, + 69, + 536, + r5 + 65, + 70, + 537, + r5 + 52, + 72, + r5 + 59, + r5 + 51, + 48, + r5 + 43, + 539, + 52, + r5 + 66, + r5 + 72, + 25, + r5 + 24, + r5 + 42, + 26, + r5 + 88, + 542, + 28, + r5 + 87, + 543, + 34, + r5 + 100, + 544, + 35, + 546, + 545, + 36, + r5 + 42, + r5 + 115, + 36, + r5 + 43, + r5 + 115, + 17, + 548, + r5 + 22, + 20, + 549, + r5 + 21, + 33, + 552, + 550, + 44, + r5 + 17, + 551, + 45, + r5 + 19, + r5 + 20, + 44, + r5 + 15, + 553, + 45, + r5 + 15, + r5 + 20 + ]); + var bdd5 = BinaryDecisionDiagram2.from(nodes5, root5, _data5.conditions, _data5.results); + var cache5 = new EndpointCache2({ + size: 50, + params: [ + "Accelerate", + "Bucket", + "DisableAccessPoints", + "DisableMultiRegionAccessPoints", + "DisableS3ExpressSessionAuth", + "Endpoint", + "ForcePathStyle", + "Region", + "UseArnRegion", + "UseDualStack", + "UseFIPS", + "UseGlobalEndpoint", + "UseObjectLambdaEndpoint", + "UseS3ExpressControlEndpoint" + ] + }); + var defaultEndpointResolver5 = /* @__PURE__ */ __name((endpointParams, context = {}) => { + return cache5.get(endpointParams, () => decideEndpoint2(bdd5, { + endpointParams, + logger: context.logger + })); + }, "defaultEndpointResolver"); + customEndpointFunctions2.aws = awsEndpointFunctions2; + var createEndpointRuleSetHttpAuthSchemeParametersProvider2 = /* @__PURE__ */ __name((defaultHttpAuthSchemeParametersProvider) => async (config3, context, input2) => { + if (!input2) { + throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`"); + } + const defaultParameters = await defaultHttpAuthSchemeParametersProvider(config3, context, input2); + const instructionsFn = getSmithyContext2(context)?.commandInstance?.constructor?.getEndpointParameterInstructions; + if (!instructionsFn) { + throw new Error(`getEndpointParameterInstructions() is not defined on '${context.commandName}'`); + } + const endpointParameters = await resolveParams2(input2, { getEndpointParameterInstructions: instructionsFn }, config3); + return Object.assign(defaultParameters, endpointParameters); + }, "createEndpointRuleSetHttpAuthSchemeParametersProvider"); + var _defaultS3HttpAuthSchemeParametersProvider = /* @__PURE__ */ __name(async (config3, context, input2) => { + return { + operation: getSmithyContext2(context).operation, + region: await normalizeProvider3(config3.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })() + }; + }, "_defaultS3HttpAuthSchemeParametersProvider"); + var defaultS3HttpAuthSchemeParametersProvider = createEndpointRuleSetHttpAuthSchemeParametersProvider2(_defaultS3HttpAuthSchemeParametersProvider); + function createAwsAuthSigv4HttpAuthOption5(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "s3", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; + } + __name(createAwsAuthSigv4HttpAuthOption5, "createAwsAuthSigv4HttpAuthOption"); + function createAwsAuthSigv4aHttpAuthOption2(authParameters) { + return { + schemeId: "aws.auth#sigv4a", + signingProperties: { + name: "s3", + region: authParameters.region + }, + propertiesExtractor: /* @__PURE__ */ __name((config3, context) => ({ + signingProperties: { + config: config3, + context + } + }), "propertiesExtractor") + }; + } + __name(createAwsAuthSigv4aHttpAuthOption2, "createAwsAuthSigv4aHttpAuthOption"); + var createEndpointRuleSetHttpAuthSchemeProvider2 = /* @__PURE__ */ __name((defaultEndpointResolver6, defaultHttpAuthSchemeResolver, createHttpAuthOptionFunctions) => { + const endpointRuleSetHttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const endpoint = defaultEndpointResolver6(authParameters); + const authSchemes = endpoint.properties?.authSchemes; + if (!authSchemes) { + return defaultHttpAuthSchemeResolver(authParameters); + } + const options = []; + for (const scheme of authSchemes) { + const { name: resolvedName, properties = {}, ...rest } = scheme; + const name2 = resolvedName.toLowerCase(); + if (resolvedName !== name2) { + console.warn(`HttpAuthScheme has been normalized with lowercasing: '${resolvedName}' to '${name2}'`); + } + let schemeId; + if (name2 === "sigv4a") { + schemeId = "aws.auth#sigv4a"; + const sigv4Present = authSchemes.find((s3) => { + const name3 = s3.name.toLowerCase(); + return name3 !== "sigv4a" && name3.startsWith("sigv4"); + }); + if (SignatureV4MultiRegion3.sigv4aDependency() === "none" && sigv4Present) { + continue; + } + } else if (name2.startsWith("sigv4")) { + schemeId = "aws.auth#sigv4"; + } else { + throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${name2}'`); + } + const createOption = createHttpAuthOptionFunctions[schemeId]; + if (!createOption) { + throw new Error(`Could not find HttpAuthOption create function for '${schemeId}'`); + } + const option = createOption(authParameters); + option.schemeId = schemeId; + option.signingProperties = { ...option.signingProperties || {}, ...rest, ...properties }; + options.push(option); + } + return options; + }, "endpointRuleSetHttpAuthSchemeProvider"); + return endpointRuleSetHttpAuthSchemeProvider; + }, "createEndpointRuleSetHttpAuthSchemeProvider"); + var _defaultS3HttpAuthSchemeProvider = /* @__PURE__ */ __name((authParameters) => { + const options = []; + switch (authParameters.operation) { + default: { + options.push(createAwsAuthSigv4HttpAuthOption5(authParameters)); + options.push(createAwsAuthSigv4aHttpAuthOption2(authParameters)); + } + } + return options; + }, "_defaultS3HttpAuthSchemeProvider"); + var defaultS3HttpAuthSchemeProvider = createEndpointRuleSetHttpAuthSchemeProvider2(defaultEndpointResolver5, _defaultS3HttpAuthSchemeProvider, { + "aws.auth#sigv4": createAwsAuthSigv4HttpAuthOption5, + "aws.auth#sigv4a": createAwsAuthSigv4aHttpAuthOption2 + }); + var resolveHttpAuthSchemeConfig5 = /* @__PURE__ */ __name((config3) => { + const config_0 = resolveAwsSdkSigV4Config2(config3); + const config_1 = resolveAwsSdkSigV4AConfig2(config_0); + return Object.assign(config_1, { + authSchemePreference: normalizeProvider3(config3.authSchemePreference ?? []) + }); + }, "resolveHttpAuthSchemeConfig"); + var resolveClientEndpointParameters5 = /* @__PURE__ */ __name((options) => { + return Object.assign(options, { + useFipsEndpoint: options.useFipsEndpoint ?? false, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + forcePathStyle: options.forcePathStyle ?? false, + useAccelerateEndpoint: options.useAccelerateEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false, + defaultSigningName: "s3", + clientContextParams: options.clientContextParams ?? {} + }); + }, "resolveClientEndpointParameters"); + var commonParams5 = { + ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" }, + UseArnRegion: { type: "clientContextParams", name: "useArnRegion" }, + DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" }, + Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" }, + DisableS3ExpressSessionAuth: { type: "clientContextParams", name: "disableS3ExpressSessionAuth" }, + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" } + }; + var command5 = makeBuilder2(commonParams5, "AmazonS3", "S3Client", getEndpointPlugin2); + var _ep05 = { + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" } + }; + var _ep12 = { + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, + CopySource: { type: "contextParams", name: "CopySource" } + }; + var _ep2 = { + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + DisableAccessPoints: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" } + }; + var _ep3 = { + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" } + }; + var _ep4 = { + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" } + }; + var _ep5 = { + Bucket: { type: "contextParams", name: "Bucket" } + }; + var _ep6 = {}; + var _ep7 = { + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true } + }; + var _ep8 = { + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" } + }; + var _ep9 = { + UseObjectLambdaEndpoint: { type: "staticContextParams", value: true } + }; + var _mw05 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getThrow200ExceptionsPlugin2(config3) + ], "_mw0"); + var _mw1 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getThrow200ExceptionsPlugin2(config3), + getSsecPlugin2(config3) + ], "_mw1"); + var _mw2 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getThrow200ExceptionsPlugin2(config3), + getLocationConstraintPlugin2(config3) + ], "_mw2"); + var _mw3 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestAlgorithmMember: { "httpHeader": "x-amz-sdk-checksum-algorithm", "name": "ChecksumAlgorithm" }, + requestChecksumRequired: true + }) + ], "_mw3"); + var _mw4 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [], "_mw4"); + var _mw5 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestAlgorithmMember: { "httpHeader": "x-amz-sdk-checksum-algorithm", "name": "ChecksumAlgorithm" }, + requestChecksumRequired: true + }), + getThrow200ExceptionsPlugin2(config3) + ], "_mw5"); + var _mw6 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestChecksumRequired: false, + requestValidationModeMember: "ChecksumMode", + responseAlgorithms: ["CRC64NVME", "CRC32", "CRC32C", "SHA256", "SHA1", "SHA512", "MD5", "XXHASH64", "XXHASH3", "XXHASH128"] + }) + ], "_mw6"); + var _mw7 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestChecksumRequired: false, + requestValidationModeMember: "ChecksumMode", + responseAlgorithms: ["CRC64NVME", "CRC32", "CRC32C", "SHA256", "SHA1", "SHA512", "MD5", "XXHASH64", "XXHASH3", "XXHASH128"] + }), + getSsecPlugin2(config3), + getS3ExpiresMiddlewarePlugin2(config3) + ], "_mw7"); + var _mw8 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getThrow200ExceptionsPlugin2(config3), + getSsecPlugin2(config3), + getS3ExpiresMiddlewarePlugin2(config3) + ], "_mw8"); + var _mw9 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestAlgorithmMember: { "httpHeader": "x-amz-sdk-checksum-algorithm", "name": "ChecksumAlgorithm" }, + requestChecksumRequired: false + }) + ], "_mw9"); + var _mw10 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestAlgorithmMember: { "httpHeader": "x-amz-sdk-checksum-algorithm", "name": "ChecksumAlgorithm" }, + requestChecksumRequired: false + }), + getThrow200ExceptionsPlugin2(config3) + ], "_mw10"); + var _mw11 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestAlgorithmMember: { "httpHeader": "x-amz-sdk-checksum-algorithm", "name": "ChecksumAlgorithm" }, + requestChecksumRequired: false + }), + getCheckContentLengthHeaderPlugin2(config3), + getThrow200ExceptionsPlugin2(config3), + getSsecPlugin2(config3) + ], "_mw11"); + var _mw12 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getSsecPlugin2(config3) + ], "_mw12"); + var _mw13 = /* @__PURE__ */ __name((Command2, cs, config3, o4) => [ + getFlexibleChecksumsPlugin2(config3, { + requestAlgorithmMember: { "httpHeader": "x-amz-sdk-checksum-algorithm", "name": "ChecksumAlgorithm" }, + requestChecksumRequired: false + }), + getThrow200ExceptionsPlugin2(config3), + getSsecPlugin2(config3) + ], "_mw13"); + var S3ServiceException = class _S3ServiceException extends ServiceException2 { + static { + __name(this, "S3ServiceException"); + } + static shapeId = "smithy.ts.sdk.synthetic.com.amazonaws.s3#S3ServiceException"; + constructor(options) { + super(options); + Object.setPrototypeOf(this, _S3ServiceException.prototype); + } + }; + var NoSuchUpload = class _NoSuchUpload extends S3ServiceException { + static { + __name(this, "NoSuchUpload"); + } + static shapeId = "com.amazonaws.s3#NoSuchUpload"; + name = "NoSuchUpload"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchUpload", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _NoSuchUpload.prototype); + } + }; + var AccessDenied = class _AccessDenied extends S3ServiceException { + static { + __name(this, "AccessDenied"); + } + static shapeId = "com.amazonaws.s3#AccessDenied"; + name = "AccessDenied"; + $fault = "client"; + constructor(opts) { + super({ + name: "AccessDenied", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _AccessDenied.prototype); + } + }; + var ObjectNotInActiveTierError = class _ObjectNotInActiveTierError extends S3ServiceException { + static { + __name(this, "ObjectNotInActiveTierError"); + } + static shapeId = "com.amazonaws.s3#ObjectNotInActiveTierError"; + name = "ObjectNotInActiveTierError"; + $fault = "client"; + constructor(opts) { + super({ + name: "ObjectNotInActiveTierError", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _ObjectNotInActiveTierError.prototype); + } + }; + var BucketAlreadyExists = class _BucketAlreadyExists extends S3ServiceException { + static { + __name(this, "BucketAlreadyExists"); + } + static shapeId = "com.amazonaws.s3#BucketAlreadyExists"; + name = "BucketAlreadyExists"; + $fault = "client"; + constructor(opts) { + super({ + name: "BucketAlreadyExists", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _BucketAlreadyExists.prototype); + } + }; + var BucketAlreadyOwnedByYou = class _BucketAlreadyOwnedByYou extends S3ServiceException { + static { + __name(this, "BucketAlreadyOwnedByYou"); + } + static shapeId = "com.amazonaws.s3#BucketAlreadyOwnedByYou"; + name = "BucketAlreadyOwnedByYou"; + $fault = "client"; + constructor(opts) { + super({ + name: "BucketAlreadyOwnedByYou", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _BucketAlreadyOwnedByYou.prototype); + } + }; + var NoSuchBucket = class _NoSuchBucket extends S3ServiceException { + static { + __name(this, "NoSuchBucket"); + } + static shapeId = "com.amazonaws.s3#NoSuchBucket"; + name = "NoSuchBucket"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchBucket", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _NoSuchBucket.prototype); + } + }; + var NoSuchKey = class _NoSuchKey extends S3ServiceException { + static { + __name(this, "NoSuchKey"); + } + static shapeId = "com.amazonaws.s3#NoSuchKey"; + name = "NoSuchKey"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchKey", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _NoSuchKey.prototype); + } + }; + var InvalidObjectState = class _InvalidObjectState extends S3ServiceException { + static { + __name(this, "InvalidObjectState"); + } + static shapeId = "com.amazonaws.s3#InvalidObjectState"; + name = "InvalidObjectState"; + $fault = "client"; + StorageClass; + AccessTier; + constructor(opts) { + super({ + name: "InvalidObjectState", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidObjectState.prototype); + this.StorageClass = opts.StorageClass; + this.AccessTier = opts.AccessTier; + } + }; + var NoSuchAnnotation = class _NoSuchAnnotation extends S3ServiceException { + static { + __name(this, "NoSuchAnnotation"); + } + static shapeId = "com.amazonaws.s3#NoSuchAnnotation"; + name = "NoSuchAnnotation"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchAnnotation", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _NoSuchAnnotation.prototype); + } + }; + var NotFound = class _NotFound extends S3ServiceException { + static { + __name(this, "NotFound"); + } + static shapeId = "com.amazonaws.s3#NotFound"; + name = "NotFound"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotFound", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _NotFound.prototype); + } + }; + var InvalidPrefix = class _InvalidPrefix extends S3ServiceException { + static { + __name(this, "InvalidPrefix"); + } + static shapeId = "com.amazonaws.s3#InvalidPrefix"; + name = "InvalidPrefix"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidPrefix", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidPrefix.prototype); + } + }; + var EncryptionTypeMismatch = class _EncryptionTypeMismatch extends S3ServiceException { + static { + __name(this, "EncryptionTypeMismatch"); + } + static shapeId = "com.amazonaws.s3#EncryptionTypeMismatch"; + name = "EncryptionTypeMismatch"; + $fault = "client"; + constructor(opts) { + super({ + name: "EncryptionTypeMismatch", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _EncryptionTypeMismatch.prototype); + } + }; + var InvalidRequest = class _InvalidRequest extends S3ServiceException { + static { + __name(this, "InvalidRequest"); + } + static shapeId = "com.amazonaws.s3#InvalidRequest"; + name = "InvalidRequest"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequest", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidRequest.prototype); + } + }; + var InvalidWriteOffset = class _InvalidWriteOffset extends S3ServiceException { + static { + __name(this, "InvalidWriteOffset"); + } + static shapeId = "com.amazonaws.s3#InvalidWriteOffset"; + name = "InvalidWriteOffset"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidWriteOffset", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidWriteOffset.prototype); + } + }; + var TooManyParts = class _TooManyParts extends S3ServiceException { + static { + __name(this, "TooManyParts"); + } + static shapeId = "com.amazonaws.s3#TooManyParts"; + name = "TooManyParts"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyParts", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _TooManyParts.prototype); + } + }; + var AnnotationLimitExceeded = class _AnnotationLimitExceeded extends S3ServiceException { + static { + __name(this, "AnnotationLimitExceeded"); + } + static shapeId = "com.amazonaws.s3#AnnotationLimitExceeded"; + name = "AnnotationLimitExceeded"; + $fault = "client"; + constructor(opts) { + super({ + name: "AnnotationLimitExceeded", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _AnnotationLimitExceeded.prototype); + } + }; + var AnnotationNameTooLong = class _AnnotationNameTooLong extends S3ServiceException { + static { + __name(this, "AnnotationNameTooLong"); + } + static shapeId = "com.amazonaws.s3#AnnotationNameTooLong"; + name = "AnnotationNameTooLong"; + $fault = "client"; + constructor(opts) { + super({ + name: "AnnotationNameTooLong", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _AnnotationNameTooLong.prototype); + } + }; + var InvalidAnnotationName = class _InvalidAnnotationName extends S3ServiceException { + static { + __name(this, "InvalidAnnotationName"); + } + static shapeId = "com.amazonaws.s3#InvalidAnnotationName"; + name = "InvalidAnnotationName"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidAnnotationName", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _InvalidAnnotationName.prototype); + } + }; + var UnsupportedMediaType = class _UnsupportedMediaType extends S3ServiceException { + static { + __name(this, "UnsupportedMediaType"); + } + static shapeId = "com.amazonaws.s3#UnsupportedMediaType"; + name = "UnsupportedMediaType"; + $fault = "client"; + constructor(opts) { + super({ + name: "UnsupportedMediaType", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _UnsupportedMediaType.prototype); + } + }; + var IdempotencyParameterMismatch = class _IdempotencyParameterMismatch extends S3ServiceException { + static { + __name(this, "IdempotencyParameterMismatch"); + } + static shapeId = "com.amazonaws.s3#IdempotencyParameterMismatch"; + name = "IdempotencyParameterMismatch"; + $fault = "client"; + constructor(opts) { + super({ + name: "IdempotencyParameterMismatch", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _IdempotencyParameterMismatch.prototype); + } + }; + var ObjectAlreadyInActiveTierError = class _ObjectAlreadyInActiveTierError extends S3ServiceException { + static { + __name(this, "ObjectAlreadyInActiveTierError"); + } + static shapeId = "com.amazonaws.s3#ObjectAlreadyInActiveTierError"; + name = "ObjectAlreadyInActiveTierError"; + $fault = "client"; + constructor(opts) { + super({ + name: "ObjectAlreadyInActiveTierError", + $fault: "client", + ...opts + }); + Object.setPrototypeOf(this, _ObjectAlreadyInActiveTierError.prototype); + } + }; + var _A2 = "Account"; + var _AAO = "AnalyticsAndOperator"; + var _AC = "AccelerateConfiguration"; + var _ACL = "AccessControlList"; + var _ACL_ = "ACL"; + var _ACLn = "AnalyticsConfigurationList"; + var _ACP = "AccessControlPolicy"; + var _ACT = "AccessControlTranslation"; + var _ACn = "AnalyticsConfiguration"; + var _ACnn = "AnnotationCount"; + var _AD = "AccessDenied"; + var _ADb = "AbortDate"; + var _ADn = "AnnotationDirective"; + var _AE = "AnnotationEntry"; + var _AED = "AnalyticsExportDestination"; + var _AF = "AnalyticsFilter"; + var _AH = "AllowedHeaders"; + var _AHl = "AllowedHeader"; + var _AI = "AccountId"; + var _AIMU = "AbortIncompleteMultipartUpload"; + var _AKI2 = "AccessKeyId"; + var _AL = "AnnotationList"; + var _ALE = "AnnotationLimitExceeded"; + var _AM = "AllowedMethods"; + var _AMU = "AbortMultipartUpload"; + var _AMUO = "AbortMultipartUploadOutput"; + var _AMUR = "AbortMultipartUploadRequest"; + var _AMl = "AllowedMethod"; + var _AN = "AnnotationName"; + var _ANTL = "AnnotationNameTooLong"; + var _AO = "AllowedOrigins"; + var _AOl = "AllowedOrigin"; + var _AP = "AnnotationPayload"; + var _APA = "AccessPointAlias"; + var _APAc = "AccessPointArn"; + var _APn = "AnnotationPrefix"; + var _AQRD = "AllowQuotedRecordDelimiter"; + var _AR2 = "AcceptRanges"; + var _ARI2 = "AbortRuleId"; + var _AS = "AbacStatus"; + var _ASBD = "AnalyticsS3BucketDestination"; + var _ASSEBD = "ApplyServerSideEncryptionByDefault"; + var _ASr = "ArchiveStatus"; + var _AT3 = "AccessTier"; + var _ATC = "AnnotationTableConfiguration"; + var _ATCR = "AnnotationTableConfigurationResult"; + var _ATCU = "AnnotationTableConfigurationUpdates"; + var _An = "And"; + var _Ann = "Annotations"; + var _B = "Bucket"; + var _BA = "BucketArn"; + var _BAE = "BucketAlreadyExists"; + var _BAI = "BucketAccountId"; + var _BAOBY = "BucketAlreadyOwnedByYou"; + var _BET = "BlockedEncryptionTypes"; + var _BGR = "BypassGovernanceRetention"; + var _BI = "BucketInfo"; + var _BKE = "BucketKeyEnabled"; + var _BLC = "BucketLifecycleConfiguration"; + var _BLN = "BucketLocationName"; + var _BLS = "BucketLoggingStatus"; + var _BLT = "BucketLocationType"; + var _BN = "BucketNamespace"; + var _BNu = "BucketName"; + var _BP = "BytesProcessed"; + var _BPA = "BlockPublicAcls"; + var _BPP = "BlockPublicPolicy"; + var _BR = "BucketRegion"; + var _BRy = "BytesReturned"; + var _BS = "BytesScanned"; + var _Bo = "Body"; + var _Bu = "Buckets"; + var _C2 = "Checksum"; + var _CA2 = "ChecksumAlgorithm"; + var _CACL = "CannedACL"; + var _CB = "CreateBucket"; + var _CBC = "CreateBucketConfiguration"; + var _CBMC = "CreateBucketMetadataConfiguration"; + var _CBMCR = "CreateBucketMetadataConfigurationRequest"; + var _CBMTC = "CreateBucketMetadataTableConfiguration"; + var _CBMTCR = "CreateBucketMetadataTableConfigurationRequest"; + var _CBO = "CreateBucketOutput"; + var _CBR = "CreateBucketRequest"; + var _CC = "CacheControl"; + var _CCRC = "ChecksumCRC32"; + var _CCRCC = "ChecksumCRC32C"; + var _CCRCNVME = "ChecksumCRC64NVME"; + var _CC_ = "Cache-Control"; + var _CD = "CreationDate"; + var _CD_ = "Content-Disposition"; + var _CDo = "ContentDisposition"; + var _CE = "ContinuationEvent"; + var _CE_ = "Content-Encoding"; + var _CEo = "ContentEncoding"; + var _CF = "CloudFunction"; + var _CFC = "CloudFunctionConfiguration"; + var _CL = "ContentLanguage"; + var _CL_ = "Content-Language"; + var _CL__ = "Content-Length"; + var _CLo = "ContentLength"; + var _CM = "Content-MD5"; + var _CMD = "ChecksumMD5"; + var _CMDo = "ContentMD5"; + var _CMU = "CompletedMultipartUpload"; + var _CMUO = "CompleteMultipartUploadOutput"; + var _CMUOr = "CreateMultipartUploadOutput"; + var _CMUR = "CompleteMultipartUploadResult"; + var _CMURo = "CompleteMultipartUploadRequest"; + var _CMURr = "CreateMultipartUploadRequest"; + var _CMUo = "CompleteMultipartUpload"; + var _CMUr = "CreateMultipartUpload"; + var _CMh = "ChecksumMode"; + var _CO = "CopyObject"; + var _COO = "CopyObjectOutput"; + var _COR = "CopyObjectResult"; + var _CORSC = "CORSConfiguration"; + var _CORSR = "CORSRules"; + var _CORSRu = "CORSRule"; + var _CORo = "CopyObjectRequest"; + var _CP = "CommonPrefix"; + var _CPL = "CommonPrefixList"; + var _CPLo = "CompletedPartList"; + var _CPR = "CopyPartResult"; + var _CPo = "CompletedPart"; + var _CPom = "CommonPrefixes"; + var _CR = "ContentRange"; + var _CRSBA = "ConfirmRemoveSelfBucketAccess"; + var _CR_ = "Content-Range"; + var _CS2 = "ConfigurationState"; + var _CSHA = "ChecksumSHA1"; + var _CSHAh = "ChecksumSHA256"; + var _CSHAhe = "ChecksumSHA512"; + var _CSIM = "CopySourceIfMatch"; + var _CSIMS = "CopySourceIfModifiedSince"; + var _CSINM = "CopySourceIfNoneMatch"; + var _CSIUS = "CopySourceIfUnmodifiedSince"; + var _CSO = "CreateSessionOutput"; + var _CSR = "CreateSessionResult"; + var _CSRo = "CopySourceRange"; + var _CSRr = "CreateSessionRequest"; + var _CSSSECA = "CopySourceSSECustomerAlgorithm"; + var _CSSSECK = "CopySourceSSECustomerKey"; + var _CSSSECKMD = "CopySourceSSECustomerKeyMD5"; + var _CSV = "CSV"; + var _CSVI = "CopySourceVersionId"; + var _CSVIn = "CSVInput"; + var _CSVO = "CSVOutput"; + var _CSo = "CopySource"; + var _CSr = "CreateSession"; + var _CT2 = "ChecksumType"; + var _CT_ = "Content-Type"; + var _CTl = "ClientToken"; + var _CTo = "ContentType"; + var _CTom = "CompressionType"; + var _CTon = "ContinuationToken"; + var _CXXHASH = "ChecksumXXHASH64"; + var _CXXHASHh = "ChecksumXXHASH3"; + var _CXXHASHhe = "ChecksumXXHASH128"; + var _Co = "Condition"; + var _Cod = "Code"; + var _Com = "Comments"; + var _Con = "Contents"; + var _Cont = "Cont"; + var _Cr = "Credentials"; + var _D = "Days"; + var _DAI = "DaysAfterInitiation"; + var _DB = "DeleteBucket"; + var _DBAC = "DeleteBucketAnalyticsConfiguration"; + var _DBACR = "DeleteBucketAnalyticsConfigurationRequest"; + var _DBC = "DeleteBucketCors"; + var _DBCR = "DeleteBucketCorsRequest"; + var _DBE = "DeleteBucketEncryption"; + var _DBER = "DeleteBucketEncryptionRequest"; + var _DBIC = "DeleteBucketInventoryConfiguration"; + var _DBICR = "DeleteBucketInventoryConfigurationRequest"; + var _DBITC = "DeleteBucketIntelligentTieringConfiguration"; + var _DBITCR = "DeleteBucketIntelligentTieringConfigurationRequest"; + var _DBL = "DeleteBucketLifecycle"; + var _DBLR = "DeleteBucketLifecycleRequest"; + var _DBMC = "DeleteBucketMetadataConfiguration"; + var _DBMCR = "DeleteBucketMetadataConfigurationRequest"; + var _DBMCRe = "DeleteBucketMetricsConfigurationRequest"; + var _DBMCe = "DeleteBucketMetricsConfiguration"; + var _DBMTC = "DeleteBucketMetadataTableConfiguration"; + var _DBMTCR = "DeleteBucketMetadataTableConfigurationRequest"; + var _DBOC = "DeleteBucketOwnershipControls"; + var _DBOCR = "DeleteBucketOwnershipControlsRequest"; + var _DBP = "DeleteBucketPolicy"; + var _DBPR = "DeleteBucketPolicyRequest"; + var _DBR = "DeleteBucketRequest"; + var _DBRR = "DeleteBucketReplicationRequest"; + var _DBRe = "DeleteBucketReplication"; + var _DBT = "DeleteBucketTagging"; + var _DBTR = "DeleteBucketTaggingRequest"; + var _DBW = "DeleteBucketWebsite"; + var _DBWR = "DeleteBucketWebsiteRequest"; + var _DE = "DataExport"; + var _DEH = "DefaultEventHold"; + var _DIM = "DestinationIfMatch"; + var _DIMS = "DestinationIfModifiedSince"; + var _DINM = "DestinationIfNoneMatch"; + var _DIUS = "DestinationIfUnmodifiedSince"; + var _DM = "DeleteMarker"; + var _DME = "DeleteMarkerEntry"; + var _DMR = "DeleteMarkerReplication"; + var _DMVI = "DeleteMarkerVersionId"; + var _DMe = "DeleteMarkers"; + var _DN = "DisplayName"; + var _DO = "DeletedObject"; + var _DOA = "DeleteObjectAnnotation"; + var _DOAO = "DeleteObjectAnnotationOutput"; + var _DOAR = "DeleteObjectAnnotationRequest"; + var _DOO = "DeleteObjectOutput"; + var _DOOe = "DeleteObjectsOutput"; + var _DOR = "DeleteObjectRequest"; + var _DORe = "DeleteObjectsRequest"; + var _DOT = "DeleteObjectTagging"; + var _DOTO = "DeleteObjectTaggingOutput"; + var _DOTR = "DeleteObjectTaggingRequest"; + var _DOe = "DeletedObjects"; + var _DOel = "DeleteObject"; + var _DOele = "DeleteObjects"; + var _DPAB = "DeletePublicAccessBlock"; + var _DPABR = "DeletePublicAccessBlockRequest"; + var _DR = "DataRedundancy"; + var _DRe = "DefaultRetention"; + var _DRel = "DeleteResult"; + var _DRes = "DestinationResult"; + var _Da = "Date"; + var _De = "Delete"; + var _Del = "Deleted"; + var _Deli = "Delimiter"; + var _Des = "Destination"; + var _Desc = "Description"; + var _Det = "Details"; + var _E3 = "Error"; + var _EA = "EmailAddress"; + var _EBC = "EventBridgeConfiguration"; + var _EBO = "ExpectedBucketOwner"; + var _EC = "EncryptionConfiguration"; + var _ECr = "ErrorCode"; + var _ED = "ErrorDetails"; + var _EDr = "ErrorDocument"; + var _EE = "EndEvent"; + var _EH = "ExposeHeaders"; + var _EHD = "EventHoldDuration"; + var _EHv = "EventHold"; + var _EHx = "ExposeHeader"; + var _EM = "ErrorMessage"; + var _EODM = "ExpiredObjectDeleteMarker"; + var _EOR = "ExistingObjectReplication"; + var _ES = "ExpiresString"; + var _ESBO = "ExpectedSourceBucketOwner"; + var _ET = "ETag"; + var _ETL = "EncryptionTypeList"; + var _ETM = "EncryptionTypeMismatch"; + var _ETn = "EncryptionType"; + var _ETnc = "EncodingType"; + var _ETv = "EventThreshold"; + var _ETx = "ExpressionType"; + var _En = "Encryption"; + var _Ena = "Enabled"; + var _End = "End"; + var _Er = "Errors"; + var _Ev = "Events"; + var _Eve = "Event"; + var _Ex = "Expiration"; + var _Exp = "Expires"; + var _Expr = "Expression"; + var _F = "Filter"; + var _FD = "FieldDelimiter"; + var _FHI = "FileHeaderInfo"; + var _FO = "FetchOwner"; + var _FR = "FilterRule"; + var _FRL = "FilterRuleList"; + var _FRi = "FilterRules"; + var _Fi = "Field"; + var _Fo = "Format"; + var _Fr = "Frequency"; + var _G = "Grants"; + var _GBA = "GetBucketAbac"; + var _GBAC = "GetBucketAccelerateConfiguration"; + var _GBACO = "GetBucketAccelerateConfigurationOutput"; + var _GBACOe = "GetBucketAnalyticsConfigurationOutput"; + var _GBACR = "GetBucketAccelerateConfigurationRequest"; + var _GBACRe = "GetBucketAnalyticsConfigurationRequest"; + var _GBACe = "GetBucketAnalyticsConfiguration"; + var _GBAO = "GetBucketAbacOutput"; + var _GBAOe = "GetBucketAclOutput"; + var _GBAR = "GetBucketAbacRequest"; + var _GBARe = "GetBucketAclRequest"; + var _GBAe = "GetBucketAcl"; + var _GBC = "GetBucketCors"; + var _GBCO = "GetBucketCorsOutput"; + var _GBCR = "GetBucketCorsRequest"; + var _GBE = "GetBucketEncryption"; + var _GBEO = "GetBucketEncryptionOutput"; + var _GBER = "GetBucketEncryptionRequest"; + var _GBIC = "GetBucketInventoryConfiguration"; + var _GBICO = "GetBucketInventoryConfigurationOutput"; + var _GBICR = "GetBucketInventoryConfigurationRequest"; + var _GBITC = "GetBucketIntelligentTieringConfiguration"; + var _GBITCO = "GetBucketIntelligentTieringConfigurationOutput"; + var _GBITCR = "GetBucketIntelligentTieringConfigurationRequest"; + var _GBL = "GetBucketLocation"; + var _GBLC = "GetBucketLifecycleConfiguration"; + var _GBLCO = "GetBucketLifecycleConfigurationOutput"; + var _GBLCR = "GetBucketLifecycleConfigurationRequest"; + var _GBLO = "GetBucketLocationOutput"; + var _GBLOe = "GetBucketLoggingOutput"; + var _GBLR = "GetBucketLocationRequest"; + var _GBLRe = "GetBucketLoggingRequest"; + var _GBLe = "GetBucketLogging"; + var _GBMC = "GetBucketMetadataConfiguration"; + var _GBMCO = "GetBucketMetadataConfigurationOutput"; + var _GBMCOe = "GetBucketMetricsConfigurationOutput"; + var _GBMCR = "GetBucketMetadataConfigurationResult"; + var _GBMCRe = "GetBucketMetadataConfigurationRequest"; + var _GBMCRet = "GetBucketMetricsConfigurationRequest"; + var _GBMCe = "GetBucketMetricsConfiguration"; + var _GBMTC = "GetBucketMetadataTableConfiguration"; + var _GBMTCO = "GetBucketMetadataTableConfigurationOutput"; + var _GBMTCR = "GetBucketMetadataTableConfigurationResult"; + var _GBMTCRe = "GetBucketMetadataTableConfigurationRequest"; + var _GBNC = "GetBucketNotificationConfiguration"; + var _GBNCR = "GetBucketNotificationConfigurationRequest"; + var _GBOC = "GetBucketOwnershipControls"; + var _GBOCO = "GetBucketOwnershipControlsOutput"; + var _GBOCR = "GetBucketOwnershipControlsRequest"; + var _GBP = "GetBucketPolicy"; + var _GBPO = "GetBucketPolicyOutput"; + var _GBPR = "GetBucketPolicyRequest"; + var _GBPS = "GetBucketPolicyStatus"; + var _GBPSO = "GetBucketPolicyStatusOutput"; + var _GBPSR = "GetBucketPolicyStatusRequest"; + var _GBR = "GetBucketReplication"; + var _GBRO = "GetBucketReplicationOutput"; + var _GBRP = "GetBucketRequestPayment"; + var _GBRPO = "GetBucketRequestPaymentOutput"; + var _GBRPR = "GetBucketRequestPaymentRequest"; + var _GBRR = "GetBucketReplicationRequest"; + var _GBT = "GetBucketTagging"; + var _GBTO = "GetBucketTaggingOutput"; + var _GBTR = "GetBucketTaggingRequest"; + var _GBV = "GetBucketVersioning"; + var _GBVO = "GetBucketVersioningOutput"; + var _GBVR = "GetBucketVersioningRequest"; + var _GBW = "GetBucketWebsite"; + var _GBWO = "GetBucketWebsiteOutput"; + var _GBWR = "GetBucketWebsiteRequest"; + var _GFC = "GrantFullControl"; + var _GJP = "GlacierJobParameters"; + var _GO = "GetObject"; + var _GOA = "GetObjectAcl"; + var _GOAO = "GetObjectAclOutput"; + var _GOAOe = "GetObjectAnnotationOutput"; + var _GOAOet = "GetObjectAttributesOutput"; + var _GOAP = "GetObjectAttributesParts"; + var _GOAR = "GetObjectAclRequest"; + var _GOARe = "GetObjectAnnotationRequest"; + var _GOARet = "GetObjectAttributesResponse"; + var _GOARetb = "GetObjectAttributesRequest"; + var _GOAe = "GetObjectAnnotation"; + var _GOAet = "GetObjectAttributes"; + var _GOLC = "GetObjectLockConfiguration"; + var _GOLCO = "GetObjectLockConfigurationOutput"; + var _GOLCR = "GetObjectLockConfigurationRequest"; + var _GOLH = "GetObjectLegalHold"; + var _GOLHO = "GetObjectLegalHoldOutput"; + var _GOLHR = "GetObjectLegalHoldRequest"; + var _GOO = "GetObjectOutput"; + var _GOR = "GetObjectRequest"; + var _GORO = "GetObjectRetentionOutput"; + var _GORR = "GetObjectRetentionRequest"; + var _GORe = "GetObjectRetention"; + var _GOT = "GetObjectTagging"; + var _GOTO = "GetObjectTaggingOutput"; + var _GOTOe = "GetObjectTorrentOutput"; + var _GOTR = "GetObjectTaggingRequest"; + var _GOTRe = "GetObjectTorrentRequest"; + var _GOTe = "GetObjectTorrent"; + var _GPAB = "GetPublicAccessBlock"; + var _GPABO = "GetPublicAccessBlockOutput"; + var _GPABR = "GetPublicAccessBlockRequest"; + var _GR = "GrantRead"; + var _GRACP = "GrantReadACP"; + var _GW = "GrantWrite"; + var _GWACP = "GrantWriteACP"; + var _Gr = "Grant"; + var _Gra = "Grantee"; + var _HB = "HeadBucket"; + var _HBO = "HeadBucketOutput"; + var _HBR = "HeadBucketRequest"; + var _HECRE = "HttpErrorCodeReturnedEquals"; + var _HN = "HostName"; + var _HO = "HeadObject"; + var _HOO = "HeadObjectOutput"; + var _HOR = "HeadObjectRequest"; + var _HRC = "HttpRedirectCode"; + var _I = "Id"; + var _IAN = "InvalidAnnotationName"; + var _IC = "InventoryConfiguration"; + var _ICL = "InventoryConfigurationList"; + var _ID = "ID"; + var _IDn = "IndexDocument"; + var _IDnv = "InventoryDestination"; + var _IE = "IsEnabled"; + var _IEn = "InventoryEncryption"; + var _IF = "InventoryFilter"; + var _IL = "IsLatest"; + var _IM = "IfMatch"; + var _IMIT = "IfMatchInitiatedTime"; + var _IMLMT = "IfMatchLastModifiedTime"; + var _IMS = "IfMatchSize"; + var _IMS_ = "If-Modified-Since"; + var _IMSf = "IfModifiedSince"; + var _IMUR = "InitiateMultipartUploadResult"; + var _IM_ = "If-Match"; + var _INM = "IfNoneMatch"; + var _INM_ = "If-None-Match"; + var _IOF = "InventoryOptionalFields"; + var _IOS = "InvalidObjectState"; + var _IOV = "IncludedObjectVersions"; + var _IP = "InvalidPrefix"; + var _IPA = "IgnorePublicAcls"; + var _IPM = "IdempotencyParameterMismatch"; + var _IPs = "IsPublic"; + var _IR = "InvalidRequest"; + var _IRIP = "IsRestoreInProgress"; + var _IS = "InputSerialization"; + var _ISBD = "InventoryS3BucketDestination"; + var _ISn = "InventorySchedule"; + var _IT2 = "IsTruncated"; + var _ITAO = "IntelligentTieringAndOperator"; + var _ITC = "IntelligentTieringConfiguration"; + var _ITCL = "IntelligentTieringConfigurationList"; + var _ITCR = "InventoryTableConfigurationResult"; + var _ITCU = "InventoryTableConfigurationUpdates"; + var _ITCn = "InventoryTableConfiguration"; + var _ITF = "IntelligentTieringFilter"; + var _IUS = "IfUnmodifiedSince"; + var _IUS_ = "If-Unmodified-Since"; + var _IWO = "InvalidWriteOffset"; + var _In = "Initiator"; + var _Ini = "Initiated"; + var _JSON = "JSON"; + var _JSONI = "JSONInput"; + var _JSONO = "JSONOutput"; + var _JTC = "JournalTableConfiguration"; + var _JTCR = "JournalTableConfigurationResult"; + var _JTCU = "JournalTableConfigurationUpdates"; + var _K2 = "Key"; + var _KC = "KeyCount"; + var _KI = "KeyId"; + var _KKA = "KmsKeyArn"; + var _KM = "KeyMarker"; + var _KMSC = "KMSContext"; + var _KMSKA = "KMSKeyArn"; + var _KMSKI = "KMSKeyId"; + var _KMSMKID = "KMSMasterKeyID"; + var _KPE = "KeyPrefixEquals"; + var _L = "Location"; + var _LAMBR = "ListAllMyBucketsResult"; + var _LAMDBR = "ListAllMyDirectoryBucketsResult"; + var _LB = "ListBuckets"; + var _LBAC = "ListBucketAnalyticsConfigurations"; + var _LBACO = "ListBucketAnalyticsConfigurationsOutput"; + var _LBACR = "ListBucketAnalyticsConfigurationResult"; + var _LBACRi = "ListBucketAnalyticsConfigurationsRequest"; + var _LBIC = "ListBucketInventoryConfigurations"; + var _LBICO = "ListBucketInventoryConfigurationsOutput"; + var _LBICR = "ListBucketInventoryConfigurationsRequest"; + var _LBITC = "ListBucketIntelligentTieringConfigurations"; + var _LBITCO = "ListBucketIntelligentTieringConfigurationsOutput"; + var _LBITCR = "ListBucketIntelligentTieringConfigurationsRequest"; + var _LBMC = "ListBucketMetricsConfigurations"; + var _LBMCO = "ListBucketMetricsConfigurationsOutput"; + var _LBMCR = "ListBucketMetricsConfigurationsRequest"; + var _LBO = "ListBucketsOutput"; + var _LBR = "ListBucketsRequest"; + var _LBRi = "ListBucketResult"; + var _LC = "LocationConstraint"; + var _LCi = "LifecycleConfiguration"; + var _LDB = "ListDirectoryBuckets"; + var _LDBO = "ListDirectoryBucketsOutput"; + var _LDBR = "ListDirectoryBucketsRequest"; + var _LE = "LoggingEnabled"; + var _LEi = "LifecycleExpiration"; + var _LFA = "LambdaFunctionArn"; + var _LFC = "LambdaFunctionConfiguration"; + var _LFCL = "LambdaFunctionConfigurationList"; + var _LFCa = "LambdaFunctionConfigurations"; + var _LH = "LegalHold"; + var _LI = "LocationInfo"; + var _LICR = "ListInventoryConfigurationsResult"; + var _LM = "LastModified"; + var _LMCR = "ListMetricsConfigurationsResult"; + var _LMT = "LastModifiedTime"; + var _LMU = "ListMultipartUploads"; + var _LMUO = "ListMultipartUploadsOutput"; + var _LMUR = "ListMultipartUploadsResult"; + var _LMURi = "ListMultipartUploadsRequest"; + var _LM_ = "Last-Modified"; + var _LO = "ListObjects"; + var _LOA = "ListObjectAnnotations"; + var _LOAO = "ListObjectAnnotationsOutput"; + var _LOAR = "ListObjectAnnotationsRequest"; + var _LOO = "ListObjectsOutput"; + var _LOR = "ListObjectsRequest"; + var _LOV = "ListObjectsV2"; + var _LOVO = "ListObjectsV2Output"; + var _LOVOi = "ListObjectVersionsOutput"; + var _LOVR = "ListObjectsV2Request"; + var _LOVRi = "ListObjectVersionsRequest"; + var _LOVi = "ListObjectVersions"; + var _LP = "ListParts"; + var _LPO = "ListPartsOutput"; + var _LPR = "ListPartsResult"; + var _LPRi = "ListPartsRequest"; + var _LR = "LifecycleRule"; + var _LRAO = "LifecycleRuleAndOperator"; + var _LRF = "LifecycleRuleFilter"; + var _LRi = "LifecycleRules"; + var _LVR = "ListVersionsResult"; + var _M = "Metadata"; + var _MAO = "MetricsAndOperator"; + var _MAR = "MaxAnnotationResults"; + var _MAS = "MaxAgeSeconds"; + var _MB = "MaxBuckets"; + var _MC = "MetadataConfiguration"; + var _MCL = "MetricsConfigurationList"; + var _MCR = "MetadataConfigurationResult"; + var _MCe = "MetricsConfiguration"; + var _MD = "MetadataDirective"; + var _MDB = "MaxDirectoryBuckets"; + var _MDf = "MfaDelete"; + var _ME = "MetadataEntry"; + var _MF = "MetricsFilter"; + var _MFA = "MFA"; + var _MFAD = "MFADelete"; + var _MK = "MaxKeys"; + var _MM = "MissingMeta"; + var _MOS = "MpuObjectSize"; + var _MP = "MaxParts"; + var _MTC = "MetadataTableConfiguration"; + var _MTCR = "MetadataTableConfigurationResult"; + var _MTEC = "MetadataTableEncryptionConfiguration"; + var _MU = "MultipartUpload"; + var _MUL = "MultipartUploadList"; + var _MUa = "MaxUploads"; + var _Ma = "Marker"; + var _Me = "Metrics"; + var _Mes = "Message"; + var _Mi = "Minutes"; + var _Mo = "Mode"; + var _N = "Name"; + var _NC = "NotificationConfiguration"; + var _NCF = "NotificationConfigurationFilter"; + var _NCT = "NextContinuationToken"; + var _ND = "NoncurrentDays"; + var _NEKKAS = "NonEmptyKmsKeyArnString"; + var _NF = "NotFound"; + var _NKM = "NextKeyMarker"; + var _NM = "NextMarker"; + var _NNV = "NewerNoncurrentVersions"; + var _NPNM = "NextPartNumberMarker"; + var _NSA = "NoSuchAnnotation"; + var _NSB = "NoSuchBucket"; + var _NSK = "NoSuchKey"; + var _NSU = "NoSuchUpload"; + var _NUIM = "NextUploadIdMarker"; + var _NVE = "NoncurrentVersionExpiration"; + var _NVIM = "NextVersionIdMarker"; + var _NVT = "NoncurrentVersionTransitions"; + var _NVTL = "NoncurrentVersionTransitionList"; + var _NVTo = "NoncurrentVersionTransition"; + var _O = "Owner"; + var _OA = "ObjectAttributes"; + var _OAIATE = "ObjectAlreadyInActiveTierError"; + var _OC = "OwnershipControls"; + var _OCR = "OwnershipControlsRule"; + var _OCRw = "OwnershipControlsRules"; + var _OE = "ObjectEncryption"; + var _OF = "OptionalFields"; + var _OI = "ObjectIdentifier"; + var _OIL = "ObjectIdentifierList"; + var _OIM = "ObjectIfMatch"; + var _OL = "OutputLocation"; + var _OLC = "ObjectLockConfiguration"; + var _OLE = "ObjectLockEnabled"; + var _OLEFB = "ObjectLockEnabledForBucket"; + var _OLEH = "ObjectLockEventHold"; + var _OLEHDD = "ObjectLockEventHoldDurationDays"; + var _OLEHDY = "ObjectLockEventHoldDurationYears"; + var _OLLH = "ObjectLockLegalHold"; + var _OLLHS = "ObjectLockLegalHoldStatus"; + var _OLM = "ObjectLockMode"; + var _OLR = "ObjectLockRetention"; + var _OLRUD = "ObjectLockRetainUntilDate"; + var _OLRb = "ObjectLockRule"; + var _OLb = "ObjectList"; + var _ONIATE = "ObjectNotInActiveTierError"; + var _OO = "ObjectOwnership"; + var _OOA = "OptionalObjectAttributes"; + var _OP = "ObjectParts"; + var _OPb = "ObjectPart"; + var _OS = "ObjectSize"; + var _OSGT = "ObjectSizeGreaterThan"; + var _OSLT = "ObjectSizeLessThan"; + var _OSV = "OutputSchemaVersion"; + var _OSu = "OutputSerialization"; + var _OV = "ObjectVersion"; + var _OVI = "ObjectVersionId"; + var _OVL = "ObjectVersionList"; + var _Ob = "Objects"; + var _Obj = "Object"; + var _P2 = "Prefix"; + var _PABC = "PublicAccessBlockConfiguration"; + var _PBA = "PutBucketAbac"; + var _PBAC = "PutBucketAccelerateConfiguration"; + var _PBACR = "PutBucketAccelerateConfigurationRequest"; + var _PBACRu = "PutBucketAnalyticsConfigurationRequest"; + var _PBACu = "PutBucketAnalyticsConfiguration"; + var _PBAR = "PutBucketAbacRequest"; + var _PBARu = "PutBucketAclRequest"; + var _PBAu = "PutBucketAcl"; + var _PBC = "PutBucketCors"; + var _PBCR = "PutBucketCorsRequest"; + var _PBE = "PutBucketEncryption"; + var _PBER = "PutBucketEncryptionRequest"; + var _PBIC = "PutBucketInventoryConfiguration"; + var _PBICR = "PutBucketInventoryConfigurationRequest"; + var _PBITC = "PutBucketIntelligentTieringConfiguration"; + var _PBITCR = "PutBucketIntelligentTieringConfigurationRequest"; + var _PBL = "PutBucketLogging"; + var _PBLC = "PutBucketLifecycleConfiguration"; + var _PBLCO = "PutBucketLifecycleConfigurationOutput"; + var _PBLCR = "PutBucketLifecycleConfigurationRequest"; + var _PBLR = "PutBucketLoggingRequest"; + var _PBMC = "PutBucketMetricsConfiguration"; + var _PBMCR = "PutBucketMetricsConfigurationRequest"; + var _PBNC = "PutBucketNotificationConfiguration"; + var _PBNCR = "PutBucketNotificationConfigurationRequest"; + var _PBOC = "PutBucketOwnershipControls"; + var _PBOCR = "PutBucketOwnershipControlsRequest"; + var _PBP = "PutBucketPolicy"; + var _PBPR = "PutBucketPolicyRequest"; + var _PBR = "PutBucketReplication"; + var _PBRP = "PutBucketRequestPayment"; + var _PBRPR = "PutBucketRequestPaymentRequest"; + var _PBRR = "PutBucketReplicationRequest"; + var _PBT = "PutBucketTagging"; + var _PBTR = "PutBucketTaggingRequest"; + var _PBV = "PutBucketVersioning"; + var _PBVR = "PutBucketVersioningRequest"; + var _PBW = "PutBucketWebsite"; + var _PBWR = "PutBucketWebsiteRequest"; + var _PC2 = "PartsCount"; + var _PDS = "PartitionDateSource"; + var _PE = "ProgressEvent"; + var _PI2 = "ParquetInput"; + var _PL = "PartsList"; + var _PN = "PartNumber"; + var _PNM = "PartNumberMarker"; + var _PO = "PutObject"; + var _POA = "PutObjectAcl"; + var _POAO = "PutObjectAclOutput"; + var _POAOu = "PutObjectAnnotationOutput"; + var _POAR = "PutObjectAclRequest"; + var _POARu = "PutObjectAnnotationRequest"; + var _POAu = "PutObjectAnnotation"; + var _POLC = "PutObjectLockConfiguration"; + var _POLCO = "PutObjectLockConfigurationOutput"; + var _POLCR = "PutObjectLockConfigurationRequest"; + var _POLH = "PutObjectLegalHold"; + var _POLHO = "PutObjectLegalHoldOutput"; + var _POLHR = "PutObjectLegalHoldRequest"; + var _POO = "PutObjectOutput"; + var _POR = "PutObjectRequest"; + var _PORO = "PutObjectRetentionOutput"; + var _PORR = "PutObjectRetentionRequest"; + var _PORu = "PutObjectRetention"; + var _POT = "PutObjectTagging"; + var _POTO = "PutObjectTaggingOutput"; + var _POTR = "PutObjectTaggingRequest"; + var _PP = "PartitionedPrefix"; + var _PPAB = "PutPublicAccessBlock"; + var _PPABR = "PutPublicAccessBlockRequest"; + var _PS = "PolicyStatus"; + var _Pa = "Parts"; + var _Par = "Part"; + var _Parq = "Parquet"; + var _Pay = "Payer"; + var _Payl = "Payload"; + var _Pe = "Permission"; + var _Po = "Policy"; + var _Pr2 = "Progress"; + var _Pri = "Priority"; + var _Pro = "Protocol"; + var _Q = "Quiet"; + var _QA = "QueueArn"; + var _QC = "QuoteCharacter"; + var _QCL = "QueueConfigurationList"; + var _QCu = "QueueConfigurations"; + var _QCue = "QueueConfiguration"; + var _QEC = "QuoteEscapeCharacter"; + var _QF = "QuoteFields"; + var _Qu = "Queue"; + var _R = "Role"; + var _RART = "RedirectAllRequestsTo"; + var _RC2 = "RequestCharged"; + var _RCC = "ResponseCacheControl"; + var _RCD = "ResponseContentDisposition"; + var _RCE = "ResponseContentEncoding"; + var _RCL = "ResponseContentLanguage"; + var _RCT = "ResponseContentType"; + var _RCe = "ReplicationConfiguration"; + var _RD = "RecordDelimiter"; + var _RE = "ResponseExpires"; + var _RED = "RestoreExpiryDate"; + var _REe = "RecordExpiration"; + var _REec = "RecordsEvent"; + var _RKKID = "ReplicaKmsKeyID"; + var _RKPW = "ReplaceKeyPrefixWith"; + var _RKW = "ReplaceKeyWith"; + var _RM = "ReplicaModifications"; + var _RO = "RenameObject"; + var _ROO = "RenameObjectOutput"; + var _ROOe = "RestoreObjectOutput"; + var _ROP = "RestoreOutputPath"; + var _ROR = "RenameObjectRequest"; + var _RORe = "RestoreObjectRequest"; + var _ROe = "RestoreObject"; + var _RP = "RequestPayer"; + var _RPB = "RestrictPublicBuckets"; + var _RPC = "RequestPaymentConfiguration"; + var _RPe = "RequestProgress"; + var _RR = "RoutingRules"; + var _RRAO = "ReplicationRuleAndOperator"; + var _RRF = "ReplicationRuleFilter"; + var _RRe = "ReplicationRule"; + var _RRep = "ReplicationRules"; + var _RReq = "RequestRoute"; + var _RRes = "RestoreRequest"; + var _RRo = "RoutingRule"; + var _RS = "ReplicationStatus"; + var _RSe = "RestoreStatus"; + var _RSen = "RenameSource"; + var _RT3 = "ReplicationTime"; + var _RTV = "ReplicationTimeValue"; + var _RTe = "RequestToken"; + var _RUD = "RetainUntilDate"; + var _Ra = "Range"; + var _Re = "Restore"; + var _Rec = "Records"; + var _Red = "Redirect"; + var _Ret = "Retention"; + var _Ru = "Rules"; + var _Rul = "Rule"; + var _S = "Status"; + var _SA = "StartAfter"; + var _SAK2 = "SecretAccessKey"; + var _SAs = "SseAlgorithm"; + var _SB = "StreamingBlob"; + var _SBD = "S3BucketDestination"; + var _SC = "StorageClass"; + var _SCA = "StorageClassAnalysis"; + var _SCADE = "StorageClassAnalysisDataExport"; + var _SCV = "SessionCredentialValue"; + var _SCe = "SessionCredentials"; + var _SCt = "StatusCode"; + var _SDV = "SkipDestinationValidation"; + var _SE = "StatsEvent"; + var _SIM = "SourceIfMatch"; + var _SIMS = "SourceIfModifiedSince"; + var _SINM = "SourceIfNoneMatch"; + var _SIUS = "SourceIfUnmodifiedSince"; + var _SK = "SSE-KMS"; + var _SKEO = "SseKmsEncryptedObjects"; + var _SKF = "S3KeyFilter"; + var _SKe = "S3Key"; + var _SL = "S3Location"; + var _SM = "SessionMode"; + var _SOC = "SelectObjectContent"; + var _SOCES = "SelectObjectContentEventStream"; + var _SOCO = "SelectObjectContentOutput"; + var _SOCR = "SelectObjectContentRequest"; + var _SP = "SelectParameters"; + var _SPi = "SimplePrefix"; + var _SR = "ScanRange"; + var _SS = "SSE-S3"; + var _SSC = "SourceSelectionCriteria"; + var _SSE = "ServerSideEncryption"; + var _SSEA = "SSEAlgorithm"; + var _SSEBD = "ServerSideEncryptionByDefault"; + var _SSEC = "ServerSideEncryptionConfiguration"; + var _SSECA = "SSECustomerAlgorithm"; + var _SSECK = "SSECustomerKey"; + var _SSECKMD = "SSECustomerKeyMD5"; + var _SSEKMS = "SSEKMS"; + var _SSEKMSE = "SSEKMSEncryption"; + var _SSEKMSEC = "SSEKMSEncryptionContext"; + var _SSEKMSKI = "SSEKMSKeyId"; + var _SSER = "ServerSideEncryptionRule"; + var _SSERe = "ServerSideEncryptionRules"; + var _SSES = "SSES3"; + var _ST2 = "SessionToken"; + var _STD = "S3TablesDestination"; + var _STDR = "S3TablesDestinationResult"; + var _S_ = "S3"; + var _Sc = "Schedule"; + var _Si = "Size"; + var _St = "Start"; + var _Sta = "Stats"; + var _Su = "Suffix"; + var _T2 = "Tags"; + var _TA = "TableArn"; + var _TAo = "TopicArn"; + var _TB = "TargetBucket"; + var _TBA = "TableBucketArn"; + var _TBT = "TableBucketType"; + var _TC2 = "TagCount"; + var _TCL = "TopicConfigurationList"; + var _TCo = "TopicConfigurations"; + var _TCop = "TopicConfiguration"; + var _TD = "TaggingDirective"; + var _TDMOS = "TransitionDefaultMinimumObjectSize"; + var _TG = "TargetGrants"; + var _TGa = "TargetGrant"; + var _TL = "TieringList"; + var _TLr = "TransitionList"; + var _TMP = "TooManyParts"; + var _TN = "TableName"; + var _TNa = "TableNamespace"; + var _TOKF = "TargetObjectKeyFormat"; + var _TP = "TargetPrefix"; + var _TPC = "TotalPartsCount"; + var _TS = "TableStatus"; + var _TSa = "TagSet"; + var _Ta2 = "Tag"; + var _Tag = "Tagging"; + var _Ti = "Tier"; + var _Tie = "Tierings"; + var _Tier = "Tiering"; + var _Tim = "Time"; + var _To = "Token"; + var _Top = "Topic"; + var _Tr = "Transitions"; + var _Tra = "Transition"; + var _Ty = "Type"; + var _U = "Uploads"; + var _UBMATC = "UpdateBucketMetadataAnnotationTableConfiguration"; + var _UBMATCR = "UpdateBucketMetadataAnnotationTableConfigurationRequest"; + var _UBMITC = "UpdateBucketMetadataInventoryTableConfiguration"; + var _UBMITCR = "UpdateBucketMetadataInventoryTableConfigurationRequest"; + var _UBMJTC = "UpdateBucketMetadataJournalTableConfiguration"; + var _UBMJTCR = "UpdateBucketMetadataJournalTableConfigurationRequest"; + var _UI = "UploadId"; + var _UIM = "UploadIdMarker"; + var _UM = "UserMetadata"; + var _UMT = "UnsupportedMediaType"; + var _UOE = "UpdateObjectEncryption"; + var _UOER = "UpdateObjectEncryptionRequest"; + var _UOERp = "UpdateObjectEncryptionResponse"; + var _UP = "UploadPart"; + var _UPC = "UploadPartCopy"; + var _UPCO = "UploadPartCopyOutput"; + var _UPCR = "UploadPartCopyRequest"; + var _UPO = "UploadPartOutput"; + var _UPR = "UploadPartRequest"; + var _URI = "URI"; + var _Up = "Upload"; + var _V2 = "Value"; + var _VC = "VersioningConfiguration"; + var _VI = "VersionId"; + var _VIM = "VersionIdMarker"; + var _Ve = "Versions"; + var _Ver = "Version"; + var _WC = "WebsiteConfiguration"; + var _WGOR = "WriteGetObjectResponse"; + var _WGORR = "WriteGetObjectResponseRequest"; + var _WOB = "WriteOffsetBytes"; + var _WRL = "WebsiteRedirectLocation"; + var _Y = "Years"; + var _aN = "annotationName"; + var _ap = "annotation-prefix"; + var _ar = "accept-ranges"; + var _br = "bucket-region"; + var _c5 = "client"; + var _ct = "continuation-token"; + var _d = "delimiter"; + var _e5 = "error"; + var _eP = "eventPayload"; + var _en = "endpoint"; + var _et = "encoding-type"; + var _fo = "fetch-owner"; + var _h4 = "http"; + var _hC = "httpChecksum"; + var _hE5 = "httpError"; + var _hH2 = "httpHeader"; + var _hL = "hostLabel"; + var _hP = "httpPayload"; + var _hPH = "httpPrefixHeaders"; + var _hQ2 = "httpQuery"; + var _hi = "http://www.w3.org/2001/XMLSchema-instance"; + var _i = "id"; + var _iT3 = "idempotencyToken"; + var _km = "key-marker"; + var _m4 = "marker"; + var _mar = "max-annotation-results"; + var _mb = "max-buckets"; + var _mdb = "max-directory-buckets"; + var _mk = "max-keys"; + var _mp = "max-parts"; + var _mu = "max-uploads"; + var _p = "prefix"; + var _pN = "partNumber"; + var _pnm = "part-number-marker"; + var _rcc = "response-cache-control"; + var _rcd = "response-content-disposition"; + var _rce = "response-content-encoding"; + var _rcl = "response-content-language"; + var _rct = "response-content-type"; + var _re = "response-expires"; + var _s5 = "smithy.ts.sdk.synthetic.com.amazonaws.s3"; + var _sa = "start-after"; + var _st = "streaming"; + var _uI = "uploadId"; + var _uim = "upload-id-marker"; + var _vI = "versionId"; + var _vim = "version-id-marker"; + var _x = "xsi"; + var _xA = "xmlAttribute"; + var _xF = "xmlFlattened"; + var _xN = "xmlName"; + var _xNm = "xmlNamespace"; + var _xaa = "x-amz-acl"; + var _xaad = "x-amz-abort-date"; + var _xaapa = "x-amz-access-point-alias"; + var _xaari = "x-amz-abort-rule-id"; + var _xaas = "x-amz-archive-status"; + var _xaba = "x-amz-bucket-arn"; + var _xabgr = "x-amz-bypass-governance-retention"; + var _xabln = "x-amz-bucket-location-name"; + var _xablt = "x-amz-bucket-location-type"; + var _xabn = "x-amz-bucket-namespace"; + var _xabole = "x-amz-bucket-object-lock-enabled"; + var _xabolt = "x-amz-bucket-object-lock-token"; + var _xabr = "x-amz-bucket-region"; + var _xaca = "x-amz-checksum-algorithm"; + var _xacc = "x-amz-checksum-crc32"; + var _xacc_ = "x-amz-checksum-crc32c"; + var _xacc__ = "x-amz-checksum-crc64nvme"; + var _xacm = "x-amz-checksum-md5"; + var _xacm_ = "x-amz-checksum-mode"; + var _xacrsba = "x-amz-confirm-remove-self-bucket-access"; + var _xacs = "x-amz-checksum-sha1"; + var _xacs_ = "x-amz-checksum-sha256"; + var _xacs__ = "x-amz-checksum-sha512"; + var _xacs___ = "x-amz-copy-source"; + var _xacsim = "x-amz-copy-source-if-match"; + var _xacsims = "x-amz-copy-source-if-modified-since"; + var _xacsinm = "x-amz-copy-source-if-none-match"; + var _xacsius = "x-amz-copy-source-if-unmodified-since"; + var _xacsm = "x-amz-create-session-mode"; + var _xacsr = "x-amz-copy-source-range"; + var _xacssseca = "x-amz-copy-source-server-side-encryption-customer-algorithm"; + var _xacssseck = "x-amz-copy-source-server-side-encryption-customer-key"; + var _xacssseckM = "x-amz-copy-source-server-side-encryption-customer-key-MD5"; + var _xacsvi = "x-amz-copy-source-version-id"; + var _xact = "x-amz-checksum-type"; + var _xact_ = "x-amz-client-token"; + var _xacx = "x-amz-checksum-xxhash64"; + var _xacx_ = "x-amz-checksum-xxhash3"; + var _xacx__ = "x-amz-checksum-xxhash128"; + var _xadm = "x-amz-delete-marker"; + var _xae = "x-amz-expiration"; + var _xaebo = "x-amz-expected-bucket-owner"; + var _xafec = "x-amz-fwd-error-code"; + var _xafem = "x-amz-fwd-error-message"; + var _xafhCC = "x-amz-fwd-header-Cache-Control"; + var _xafhCD = "x-amz-fwd-header-Content-Disposition"; + var _xafhCE = "x-amz-fwd-header-Content-Encoding"; + var _xafhCL = "x-amz-fwd-header-Content-Language"; + var _xafhCR = "x-amz-fwd-header-Content-Range"; + var _xafhCT = "x-amz-fwd-header-Content-Type"; + var _xafhE = "x-amz-fwd-header-ETag"; + var _xafhE_ = "x-amz-fwd-header-Expires"; + var _xafhLM = "x-amz-fwd-header-Last-Modified"; + var _xafhar = "x-amz-fwd-header-accept-ranges"; + var _xafhxacc = "x-amz-fwd-header-x-amz-checksum-crc32"; + var _xafhxacc_ = "x-amz-fwd-header-x-amz-checksum-crc32c"; + var _xafhxacc__ = "x-amz-fwd-header-x-amz-checksum-crc64nvme"; + var _xafhxacm = "x-amz-fwd-header-x-amz-checksum-md5"; + var _xafhxacs = "x-amz-fwd-header-x-amz-checksum-sha1"; + var _xafhxacs_ = "x-amz-fwd-header-x-amz-checksum-sha256"; + var _xafhxacs__ = "x-amz-fwd-header-x-amz-checksum-sha512"; + var _xafhxacx = "x-amz-fwd-header-x-amz-checksum-xxhash64"; + var _xafhxacx_ = "x-amz-fwd-header-x-amz-checksum-xxhash3"; + var _xafhxacx__ = "x-amz-fwd-header-x-amz-checksum-xxhash128"; + var _xafhxadm = "x-amz-fwd-header-x-amz-delete-marker"; + var _xafhxae = "x-amz-fwd-header-x-amz-expiration"; + var _xafhxamm = "x-amz-fwd-header-x-amz-missing-meta"; + var _xafhxampc = "x-amz-fwd-header-x-amz-mp-parts-count"; + var _xafhxaollh = "x-amz-fwd-header-x-amz-object-lock-legal-hold"; + var _xafhxaolm = "x-amz-fwd-header-x-amz-object-lock-mode"; + var _xafhxaolrud = "x-amz-fwd-header-x-amz-object-lock-retain-until-date"; + var _xafhxar = "x-amz-fwd-header-x-amz-restore"; + var _xafhxarc = "x-amz-fwd-header-x-amz-request-charged"; + var _xafhxars = "x-amz-fwd-header-x-amz-replication-status"; + var _xafhxasc = "x-amz-fwd-header-x-amz-storage-class"; + var _xafhxasse = "x-amz-fwd-header-x-amz-server-side-encryption"; + var _xafhxasseakki = "x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id"; + var _xafhxassebke = "x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled"; + var _xafhxasseca = "x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm"; + var _xafhxasseckM = "x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5"; + var _xafhxatc = "x-amz-fwd-header-x-amz-tagging-count"; + var _xafhxavi = "x-amz-fwd-header-x-amz-version-id"; + var _xafs = "x-amz-fwd-status"; + var _xagfc = "x-amz-grant-full-control"; + var _xagr = "x-amz-grant-read"; + var _xagra = "x-amz-grant-read-acp"; + var _xagw = "x-amz-grant-write"; + var _xagwa = "x-amz-grant-write-acp"; + var _xaimit = "x-amz-if-match-initiated-time"; + var _xaimlmt = "x-amz-if-match-last-modified-time"; + var _xaims = "x-amz-if-match-size"; + var _xam = "x-amz-meta-"; + var _xam_ = "x-amz-mfa"; + var _xamd = "x-amz-metadata-directive"; + var _xamm = "x-amz-missing-meta"; + var _xamos = "x-amz-mp-object-size"; + var _xamp = "x-amz-max-parts"; + var _xampc = "x-amz-mp-parts-count"; + var _xaoa = "x-amz-object-attributes"; + var _xaoad = "x-amz-object-annotation-directive"; + var _xaoim = "x-amz-object-if-match"; + var _xaoleh = "x-amz-object-lock-event-hold"; + var _xaolehdd = "x-amz-object-lock-event-hold-duration-days"; + var _xaolehdy = "x-amz-object-lock-event-hold-duration-years"; + var _xaollh = "x-amz-object-lock-legal-hold"; + var _xaolm = "x-amz-object-lock-mode"; + var _xaolrud = "x-amz-object-lock-retain-until-date"; + var _xaoo = "x-amz-object-ownership"; + var _xaooa = "x-amz-optional-object-attributes"; + var _xaos = "x-amz-object-size"; + var _xaovi = "x-amz-object-version-id"; + var _xapnm = "x-amz-part-number-marker"; + var _xar = "x-amz-restore"; + var _xarc = "x-amz-request-charged"; + var _xarop = "x-amz-restore-output-path"; + var _xarp = "x-amz-request-payer"; + var _xarr = "x-amz-request-route"; + var _xars = "x-amz-replication-status"; + var _xars_ = "x-amz-rename-source"; + var _xarsim = "x-amz-rename-source-if-match"; + var _xarsims = "x-amz-rename-source-if-modified-since"; + var _xarsinm = "x-amz-rename-source-if-none-match"; + var _xarsius = "x-amz-rename-source-if-unmodified-since"; + var _xart = "x-amz-request-token"; + var _xasc = "x-amz-storage-class"; + var _xasca = "x-amz-sdk-checksum-algorithm"; + var _xasdv = "x-amz-skip-destination-validation"; + var _xasebo = "x-amz-source-expected-bucket-owner"; + var _xasse = "x-amz-server-side-encryption"; + var _xasseakki = "x-amz-server-side-encryption-aws-kms-key-id"; + var _xassebke = "x-amz-server-side-encryption-bucket-key-enabled"; + var _xassec = "x-amz-server-side-encryption-context"; + var _xasseca = "x-amz-server-side-encryption-customer-algorithm"; + var _xasseck = "x-amz-server-side-encryption-customer-key"; + var _xasseckM = "x-amz-server-side-encryption-customer-key-MD5"; + var _xat = "x-amz-tagging"; + var _xatc = "x-amz-tagging-count"; + var _xatd = "x-amz-tagging-directive"; + var _xatdmos = "x-amz-transition-default-minimum-object-size"; + var _xavi = "x-amz-version-id"; + var _xawob = "x-amz-write-offset-bytes"; + var _xawrl = "x-amz-website-redirect-location"; + var _xs = "xsi:type"; + var n05 = "com.amazonaws.s3"; + var _s_registry5 = new TypeRegistry2(_s5); + var S3ServiceException$ = [-3, _s5, "S3ServiceException", 0, [], []]; + _s_registry5.registerError(S3ServiceException$, S3ServiceException); + var n0_registry5 = new TypeRegistry2(n05); + var AccessDenied$ = [ + -3, + n05, + _AD, + { [_e5]: _c5, [_hE5]: 403 }, + [], + [] + ]; + n0_registry5.registerError(AccessDenied$, AccessDenied); + var AnnotationLimitExceeded$ = [ + -3, + n05, + _ALE, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(AnnotationLimitExceeded$, AnnotationLimitExceeded); + var AnnotationNameTooLong$ = [ + -3, + n05, + _ANTL, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(AnnotationNameTooLong$, AnnotationNameTooLong); + var BucketAlreadyExists$ = [ + -3, + n05, + _BAE, + { [_e5]: _c5, [_hE5]: 409 }, + [], + [] + ]; + n0_registry5.registerError(BucketAlreadyExists$, BucketAlreadyExists); + var BucketAlreadyOwnedByYou$ = [ + -3, + n05, + _BAOBY, + { [_e5]: _c5, [_hE5]: 409 }, + [], + [] + ]; + n0_registry5.registerError(BucketAlreadyOwnedByYou$, BucketAlreadyOwnedByYou); + var EncryptionTypeMismatch$ = [ + -3, + n05, + _ETM, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(EncryptionTypeMismatch$, EncryptionTypeMismatch); + var IdempotencyParameterMismatch$ = [ + -3, + n05, + _IPM, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(IdempotencyParameterMismatch$, IdempotencyParameterMismatch); + var InvalidAnnotationName$ = [ + -3, + n05, + _IAN, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(InvalidAnnotationName$, InvalidAnnotationName); + var InvalidObjectState$ = [ + -3, + n05, + _IOS, + { [_e5]: _c5, [_hE5]: 403 }, + [_SC, _AT3], + [0, 0] + ]; + n0_registry5.registerError(InvalidObjectState$, InvalidObjectState); + var InvalidPrefix$ = [ + -3, + n05, + _IP, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(InvalidPrefix$, InvalidPrefix); + var InvalidRequest$ = [ + -3, + n05, + _IR, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(InvalidRequest$, InvalidRequest); + var InvalidWriteOffset$ = [ + -3, + n05, + _IWO, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(InvalidWriteOffset$, InvalidWriteOffset); + var NoSuchAnnotation$ = [ + -3, + n05, + _NSA, + { [_e5]: _c5, [_hE5]: 404 }, + [], + [] + ]; + n0_registry5.registerError(NoSuchAnnotation$, NoSuchAnnotation); + var NoSuchBucket$ = [ + -3, + n05, + _NSB, + { [_e5]: _c5, [_hE5]: 404 }, + [], + [] + ]; + n0_registry5.registerError(NoSuchBucket$, NoSuchBucket); + var NoSuchKey$ = [ + -3, + n05, + _NSK, + { [_e5]: _c5, [_hE5]: 404 }, + [], + [] + ]; + n0_registry5.registerError(NoSuchKey$, NoSuchKey); + var NoSuchUpload$ = [ + -3, + n05, + _NSU, + { [_e5]: _c5, [_hE5]: 404 }, + [], + [] + ]; + n0_registry5.registerError(NoSuchUpload$, NoSuchUpload); + var NotFound$ = [ + -3, + n05, + _NF, + { [_e5]: _c5 }, + [], + [] + ]; + n0_registry5.registerError(NotFound$, NotFound); + var ObjectAlreadyInActiveTierError$ = [ + -3, + n05, + _OAIATE, + { [_e5]: _c5, [_hE5]: 403 }, + [], + [] + ]; + n0_registry5.registerError(ObjectAlreadyInActiveTierError$, ObjectAlreadyInActiveTierError); + var ObjectNotInActiveTierError$ = [ + -3, + n05, + _ONIATE, + { [_e5]: _c5, [_hE5]: 403 }, + [], + [] + ]; + n0_registry5.registerError(ObjectNotInActiveTierError$, ObjectNotInActiveTierError); + var TooManyParts$ = [ + -3, + n05, + _TMP, + { [_e5]: _c5, [_hE5]: 400 }, + [], + [] + ]; + n0_registry5.registerError(TooManyParts$, TooManyParts); + var UnsupportedMediaType$ = [ + -3, + n05, + _UMT, + { [_e5]: _c5, [_hE5]: 415 }, + [], + [] + ]; + n0_registry5.registerError(UnsupportedMediaType$, UnsupportedMediaType); + var errorTypeRegistries5 = [ + _s_registry5, + n0_registry5 + ]; + var CopySourceSSECustomerKey = [0, n05, _CSSSECK, 8, 0]; + var NonEmptyKmsKeyArnString = [0, n05, _NEKKAS, 8, 0]; + var SessionCredentialValue = [0, n05, _SCV, 8, 0]; + var SSECustomerKey = [0, n05, _SSECK, 8, 0]; + var SSEKMSEncryptionContext = [0, n05, _SSEKMSEC, 8, 0]; + var SSEKMSKeyId = [0, n05, _SSEKMSKI, 8, 0]; + var StreamingBlob = [0, n05, _SB, { [_st]: 1 }, 42]; + var AbacStatus$ = [ + 3, + n05, + _AS, + 0, + [_S], + [0] + ]; + var AbortIncompleteMultipartUpload$ = [ + 3, + n05, + _AIMU, + 0, + [_DAI], + [1] + ]; + var AbortMultipartUploadOutput$ = [ + 3, + n05, + _AMUO, + 0, + [_RC2], + [[0, { [_hH2]: _xarc }]] + ]; + var AbortMultipartUploadRequest$ = [ + 3, + n05, + _AMUR, + 0, + [_B, _K2, _UI, _RP, _EBO, _IMIT], + [[0, 1], [0, 1], [0, { [_hQ2]: _uI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [6, { [_hH2]: _xaimit }]], + 3 + ]; + var AccelerateConfiguration$ = [ + 3, + n05, + _AC, + 0, + [_S], + [0] + ]; + var AccessControlPolicy$ = [ + 3, + n05, + _ACP, + 0, + [_G, _O], + [[() => Grants, { [_xN]: _ACL }], () => Owner$] + ]; + var AccessControlTranslation$ = [ + 3, + n05, + _ACT, + 0, + [_O], + [0], + 1 + ]; + var AnalyticsAndOperator$ = [ + 3, + n05, + _AAO, + 0, + [_P2, _T2], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta2 }]] + ]; + var AnalyticsConfiguration$ = [ + 3, + n05, + _ACn, + 0, + [_I, _SCA, _F], + [0, () => StorageClassAnalysis$, [() => AnalyticsFilter$, 0]], + 2 + ]; + var AnalyticsExportDestination$ = [ + 3, + n05, + _AED, + 0, + [_SBD], + [() => AnalyticsS3BucketDestination$], + 1 + ]; + var AnalyticsS3BucketDestination$ = [ + 3, + n05, + _ASBD, + 0, + [_Fo, _B, _BAI, _P2], + [0, 0, 0, 0], + 2 + ]; + var AnnotationEntry$ = [ + 3, + n05, + _AE, + 0, + [_AN, _LM, _Si, _ET, _CA2, _RS], + [0, 4, 1, 0, [64 | 0, { [_xF]: 1 }], 0], + 3 + ]; + var AnnotationTableConfiguration$ = [ + 3, + n05, + _ATC, + 0, + [_CS2, _EC, _R], + [0, () => MetadataTableEncryptionConfiguration$, 0], + 1 + ]; + var AnnotationTableConfigurationResult$ = [ + 3, + n05, + _ATCR, + 0, + [_CS2, _TS, _E3, _TN, _TA, _R], + [0, 0, () => ErrorDetails$, 0, 0, 0], + 1 + ]; + var AnnotationTableConfigurationUpdates$ = [ + 3, + n05, + _ATCU, + 0, + [_CS2, _EC, _R], + [0, () => MetadataTableEncryptionConfiguration$, 0], + 1 + ]; + var BlockedEncryptionTypes$ = [ + 3, + n05, + _BET, + 0, + [_ETn], + [[() => EncryptionTypeList, { [_xF]: 1 }]] + ]; + var Bucket$ = [ + 3, + n05, + _B, + 0, + [_N, _CD, _BR, _BA], + [0, 4, 0, 0] + ]; + var BucketInfo$ = [ + 3, + n05, + _BI, + 0, + [_DR, _Ty], + [0, 0] + ]; + var BucketLifecycleConfiguration$ = [ + 3, + n05, + _BLC, + 0, + [_Ru], + [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Rul }]], + 1 + ]; + var BucketLoggingStatus$ = [ + 3, + n05, + _BLS, + 0, + [_LE], + [[() => LoggingEnabled$, 0]] + ]; + var Checksum$ = [ + 3, + n05, + _C2, + 0, + [_CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ]; + var CommonPrefix$ = [ + 3, + n05, + _CP, + 0, + [_P2], + [0] + ]; + var CompletedMultipartUpload$ = [ + 3, + n05, + _CMU, + 0, + [_Pa], + [[() => CompletedPartList, { [_xF]: 1, [_xN]: _Par }]] + ]; + var CompletedPart$ = [ + 3, + n05, + _CPo, + 0, + [_ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _PN], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] + ]; + var CompleteMultipartUploadOutput$ = [ + 3, + n05, + _CMUO, + { [_xN]: _CMUR }, + [_L, _B, _K2, _Ex, _ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _SSE, _VI, _SSEKMSKI, _BKE, _RC2], + [0, 0, 0, [0, { [_hH2]: _xae }], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xavi }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarc }]] + ]; + var CompleteMultipartUploadRequest$ = [ + 3, + n05, + _CMURo, + 0, + [_B, _K2, _UI, _MU, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _MOS, _RP, _EBO, _IM, _INM, _SSECA, _SSECK, _SSECKMD], + [[0, 1], [0, 1], [0, { [_hQ2]: _uI }], [() => CompletedMultipartUpload$, { [_hP]: 1, [_xN]: _CMUo }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xact }], [1, { [_hH2]: _xamos }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _IM_ }], [0, { [_hH2]: _INM_ }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }]], + 3 + ]; + var Condition$ = [ + 3, + n05, + _Co, + 0, + [_HECRE, _KPE], + [0, 0] + ]; + var ContinuationEvent$ = [ + 3, + n05, + _CE, + 0, + [], + [] + ]; + var CopyObjectOutput$ = [ + 3, + n05, + _COO, + 0, + [_COR, _Ex, _CSVI, _VI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC2], + [[() => CopyObjectResult$, 16], [0, { [_hH2]: _xae }], [0, { [_hH2]: _xacsvi }], [0, { [_hH2]: _xavi }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarc }]] + ]; + var CopyObjectRequest$ = [ + 3, + n05, + _CORo, + 0, + [_B, _CSo, _K2, _ACL_, _CC, _CA2, _CDo, _CEo, _CL, _CTo, _CSIM, _CSIMS, _CSINM, _CSIUS, _Exp, _GFC, _GR, _GRACP, _GWACP, _IM, _INM, _M, _MD, _TD, _ADn, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _OLEH, _OLEHDD, _OLEHDY, _EBO, _ESBO], + [[0, 1], [0, { [_hH2]: _xacs___ }], [0, 1], [0, { [_hH2]: _xaa }], [0, { [_hH2]: _CC_ }], [0, { [_hH2]: _xaca }], [0, { [_hH2]: _CD_ }], [0, { [_hH2]: _CE_ }], [0, { [_hH2]: _CL_ }], [0, { [_hH2]: _CT_ }], [0, { [_hH2]: _xacsim }], [4, { [_hH2]: _xacsims }], [0, { [_hH2]: _xacsinm }], [4, { [_hH2]: _xacsius }], [4, { [_hH2]: _Exp }], [0, { [_hH2]: _xagfc }], [0, { [_hH2]: _xagr }], [0, { [_hH2]: _xagra }], [0, { [_hH2]: _xagwa }], [0, { [_hH2]: _IM_ }], [0, { [_hH2]: _INM_ }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH2]: _xamd }], [0, { [_hH2]: _xatd }], [0, { [_hH2]: _xaoad }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xasc }], [0, { [_hH2]: _xawrl }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH2]: _xacssseck }], [0, { [_hH2]: _xacssseckM }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xat }], [0, { [_hH2]: _xaolm }], [5, { [_hH2]: _xaolrud }], [0, { [_hH2]: _xaollh }], [0, { [_hH2]: _xaoleh }], [1, { [_hH2]: _xaolehdd }], [1, { [_hH2]: _xaolehdy }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xasebo }]], + 3 + ]; + var CopyObjectResult$ = [ + 3, + n05, + _COR, + 0, + [_ET, _LM, _CT2, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe], + [0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ]; + var CopyPartResult$ = [ + 3, + n05, + _CPR, + 0, + [_ET, _LM, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe], + [0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ]; + var CORSConfiguration$ = [ + 3, + n05, + _CORSC, + 0, + [_CORSR], + [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]], + 1 + ]; + var CORSRule$ = [ + 3, + n05, + _CORSRu, + 0, + [_AM, _AO, _ID, _AH, _EH, _MAS], + [[64 | 0, { [_xF]: 1, [_xN]: _AMl }], [64 | 0, { [_xF]: 1, [_xN]: _AOl }], 0, [64 | 0, { [_xF]: 1, [_xN]: _AHl }], [64 | 0, { [_xF]: 1, [_xN]: _EHx }], 1], + 2 + ]; + var CreateBucketConfiguration$ = [ + 3, + n05, + _CBC, + 0, + [_LC, _L, _B, _T2], + [0, () => LocationInfo$, () => BucketInfo$, [() => TagSet, 0]] + ]; + var CreateBucketMetadataConfigurationRequest$ = [ + 3, + n05, + _CBMCR, + 0, + [_B, _MC, _CMDo, _CA2, _EBO], + [[0, 1], [() => MetadataConfiguration$, { [_hP]: 1, [_xN]: _MC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var CreateBucketMetadataTableConfigurationRequest$ = [ + 3, + n05, + _CBMTCR, + 0, + [_B, _MTC, _CMDo, _CA2, _EBO], + [[0, 1], [() => MetadataTableConfiguration$, { [_hP]: 1, [_xN]: _MTC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var CreateBucketOutput$ = [ + 3, + n05, + _CBO, + 0, + [_L, _BA], + [[0, { [_hH2]: _L }], [0, { [_hH2]: _xaba }]] + ]; + var CreateBucketRequest$ = [ + 3, + n05, + _CBR, + 0, + [_B, _ACL_, _CBC, _GFC, _GR, _GRACP, _GW, _GWACP, _OLEFB, _OO, _BN], + [[0, 1], [0, { [_hH2]: _xaa }], [() => CreateBucketConfiguration$, { [_hP]: 1, [_xN]: _CBC }], [0, { [_hH2]: _xagfc }], [0, { [_hH2]: _xagr }], [0, { [_hH2]: _xagra }], [0, { [_hH2]: _xagw }], [0, { [_hH2]: _xagwa }], [2, { [_hH2]: _xabole }], [0, { [_hH2]: _xaoo }], [0, { [_hH2]: _xabn }]], + 1 + ]; + var CreateMultipartUploadOutput$ = [ + 3, + n05, + _CMUOr, + { [_xN]: _IMUR }, + [_ADb, _ARI2, _B, _K2, _UI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC2, _CA2, _CT2], + [[4, { [_hH2]: _xaad }], [0, { [_hH2]: _xaari }], [0, { [_xN]: _B }], 0, 0, [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarc }], [0, { [_hH2]: _xaca }], [0, { [_hH2]: _xact }]] + ]; + var CreateMultipartUploadRequest$ = [ + 3, + n05, + _CMURr, + 0, + [_B, _K2, _ACL_, _CC, _CDo, _CEo, _CL, _CTo, _Exp, _GFC, _GR, _GRACP, _GWACP, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _OLEH, _OLEHDD, _OLEHDY, _EBO, _CA2, _CT2], + [[0, 1], [0, 1], [0, { [_hH2]: _xaa }], [0, { [_hH2]: _CC_ }], [0, { [_hH2]: _CD_ }], [0, { [_hH2]: _CE_ }], [0, { [_hH2]: _CL_ }], [0, { [_hH2]: _CT_ }], [4, { [_hH2]: _Exp }], [0, { [_hH2]: _xagfc }], [0, { [_hH2]: _xagr }], [0, { [_hH2]: _xagra }], [0, { [_hH2]: _xagwa }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xasc }], [0, { [_hH2]: _xawrl }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xat }], [0, { [_hH2]: _xaolm }], [5, { [_hH2]: _xaolrud }], [0, { [_hH2]: _xaollh }], [0, { [_hH2]: _xaoleh }], [1, { [_hH2]: _xaolehdd }], [1, { [_hH2]: _xaolehdy }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xaca }], [0, { [_hH2]: _xact }]], + 2 + ]; + var CreateSessionOutput$ = [ + 3, + n05, + _CSO, + { [_xN]: _CSR }, + [_Cr, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE], + [[() => SessionCredentials$, { [_xN]: _Cr }], [0, { [_hH2]: _xasse }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }]], + 1 + ]; + var CreateSessionRequest$ = [ + 3, + n05, + _CSRr, + 0, + [_B, _SM, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE], + [[0, 1], [0, { [_hH2]: _xacsm }], [0, { [_hH2]: _xasse }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }]], + 1 + ]; + var CSVInput$ = [ + 3, + n05, + _CSVIn, + 0, + [_FHI, _Com, _QEC, _RD, _FD, _QC, _AQRD], + [0, 0, 0, 0, 0, 0, 2] + ]; + var CSVOutput$ = [ + 3, + n05, + _CSVO, + 0, + [_QF, _QEC, _RD, _FD, _QC], + [0, 0, 0, 0, 0] + ]; + var DefaultRetention$ = [ + 3, + n05, + _DRe, + 0, + [_Mo, _D, _Y, _DEH], + [0, 1, 1, () => EventHoldDuration$] + ]; + var Delete$ = [ + 3, + n05, + _De, + 0, + [_Ob, _Q], + [[() => ObjectIdentifierList, { [_xF]: 1, [_xN]: _Obj }], 2], + 1 + ]; + var DeleteBucketAnalyticsConfigurationRequest$ = [ + 3, + n05, + _DBACR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var DeleteBucketCorsRequest$ = [ + 3, + n05, + _DBCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketEncryptionRequest$ = [ + 3, + n05, + _DBER, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketIntelligentTieringConfigurationRequest$ = [ + 3, + n05, + _DBITCR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var DeleteBucketInventoryConfigurationRequest$ = [ + 3, + n05, + _DBICR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var DeleteBucketLifecycleRequest$ = [ + 3, + n05, + _DBLR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketMetadataConfigurationRequest$ = [ + 3, + n05, + _DBMCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketMetadataTableConfigurationRequest$ = [ + 3, + n05, + _DBMTCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketMetricsConfigurationRequest$ = [ + 3, + n05, + _DBMCRe, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var DeleteBucketOwnershipControlsRequest$ = [ + 3, + n05, + _DBOCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketPolicyRequest$ = [ + 3, + n05, + _DBPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketReplicationRequest$ = [ + 3, + n05, + _DBRR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketRequest$ = [ + 3, + n05, + _DBR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketTaggingRequest$ = [ + 3, + n05, + _DBTR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeleteBucketWebsiteRequest$ = [ + 3, + n05, + _DBWR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var DeletedObject$ = [ + 3, + n05, + _DO, + 0, + [_K2, _VI, _DM, _DMVI], + [0, 0, 2, 0] + ]; + var DeleteMarkerEntry$ = [ + 3, + n05, + _DME, + 0, + [_O, _K2, _VI, _IL, _LM], + [() => Owner$, 0, 0, 2, 4] + ]; + var DeleteMarkerReplication$ = [ + 3, + n05, + _DMR, + 0, + [_S], + [0] + ]; + var DeleteObjectAnnotationOutput$ = [ + 3, + n05, + _DOAO, + 0, + [_OVI, _RC2], + [[0, { [_hH2]: _xaovi }], [0, { [_hH2]: _xarc }]] + ]; + var DeleteObjectAnnotationRequest$ = [ + 3, + n05, + _DOAR, + 0, + [_B, _K2, _AN, _VI, _RP, _EBO, _OIM], + [[0, 1], [0, 1], [0, { [_hQ2]: _aN }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xaoim }]], + 3 + ]; + var DeleteObjectOutput$ = [ + 3, + n05, + _DOO, + 0, + [_DM, _VI, _RC2], + [[2, { [_hH2]: _xadm }], [0, { [_hH2]: _xavi }], [0, { [_hH2]: _xarc }]] + ]; + var DeleteObjectRequest$ = [ + 3, + n05, + _DOR, + 0, + [_B, _K2, _MFA, _VI, _RP, _BGR, _EBO, _IM, _IMLMT, _IMS], + [[0, 1], [0, 1], [0, { [_hH2]: _xam_ }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [2, { [_hH2]: _xabgr }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _IM_ }], [6, { [_hH2]: _xaimlmt }], [1, { [_hH2]: _xaims }]], + 2 + ]; + var DeleteObjectsOutput$ = [ + 3, + n05, + _DOOe, + { [_xN]: _DRel }, + [_Del, _RC2, _Er], + [[() => DeletedObjects, { [_xF]: 1 }], [0, { [_hH2]: _xarc }], [() => Errors, { [_xF]: 1, [_xN]: _E3 }]] + ]; + var DeleteObjectsRequest$ = [ + 3, + n05, + _DORe, + 0, + [_B, _De, _MFA, _RP, _BGR, _EBO, _CA2], + [[0, 1], [() => Delete$, { [_hP]: 1, [_xN]: _De }], [0, { [_hH2]: _xam_ }], [0, { [_hH2]: _xarp }], [2, { [_hH2]: _xabgr }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xasca }]], + 2 + ]; + var DeleteObjectTaggingOutput$ = [ + 3, + n05, + _DOTO, + 0, + [_VI], + [[0, { [_hH2]: _xavi }]] + ]; + var DeleteObjectTaggingRequest$ = [ + 3, + n05, + _DOTR, + 0, + [_B, _K2, _VI, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var DeletePublicAccessBlockRequest$ = [ + 3, + n05, + _DPABR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var Destination$ = [ + 3, + n05, + _Des, + 0, + [_B, _A2, _SC, _ACT, _EC, _RT3, _Me], + [0, 0, 0, () => AccessControlTranslation$, () => EncryptionConfiguration$, () => ReplicationTime$, () => Metrics$], + 1 + ]; + var DestinationResult$ = [ + 3, + n05, + _DRes, + 0, + [_TBT, _TBA, _TNa], + [0, 0, 0] + ]; + var Encryption$ = [ + 3, + n05, + _En, + 0, + [_ETn, _KMSKI, _KMSC], + [0, [() => SSEKMSKeyId, 0], 0], + 1 + ]; + var EncryptionConfiguration$ = [ + 3, + n05, + _EC, + 0, + [_RKKID], + [0] + ]; + var EndEvent$ = [ + 3, + n05, + _EE, + 0, + [], + [] + ]; + var _Error$ = [ + 3, + n05, + _E3, + 0, + [_K2, _VI, _Cod, _Mes], + [0, 0, 0, 0] + ]; + var ErrorDetails$ = [ + 3, + n05, + _ED, + 0, + [_ECr, _EM], + [0, 0] + ]; + var ErrorDocument$ = [ + 3, + n05, + _EDr, + 0, + [_K2], + [0], + 1 + ]; + var EventBridgeConfiguration$ = [ + 3, + n05, + _EBC, + 0, + [], + [] + ]; + var EventHoldDuration$ = [ + 3, + n05, + _EHD, + 0, + [_D, _Y], + [1, 1] + ]; + var ExistingObjectReplication$ = [ + 3, + n05, + _EOR, + 0, + [_S], + [0], + 1 + ]; + var FilterRule$ = [ + 3, + n05, + _FR, + 0, + [_N, _V2], + [0, 0] + ]; + var GetBucketAbacOutput$ = [ + 3, + n05, + _GBAO, + 0, + [_AS], + [[() => AbacStatus$, 16]] + ]; + var GetBucketAbacRequest$ = [ + 3, + n05, + _GBAR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketAccelerateConfigurationOutput$ = [ + 3, + n05, + _GBACO, + { [_xN]: _AC }, + [_S, _RC2], + [0, [0, { [_hH2]: _xarc }]] + ]; + var GetBucketAccelerateConfigurationRequest$ = [ + 3, + n05, + _GBACR, + 0, + [_B, _EBO, _RP], + [[0, 1], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xarp }]], + 1 + ]; + var GetBucketAclOutput$ = [ + 3, + n05, + _GBAOe, + { [_xN]: _ACP }, + [_O, _G], + [() => Owner$, [() => Grants, { [_xN]: _ACL }]] + ]; + var GetBucketAclRequest$ = [ + 3, + n05, + _GBARe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketAnalyticsConfigurationOutput$ = [ + 3, + n05, + _GBACOe, + 0, + [_ACn], + [[() => AnalyticsConfiguration$, 16]] + ]; + var GetBucketAnalyticsConfigurationRequest$ = [ + 3, + n05, + _GBACRe, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetBucketCorsOutput$ = [ + 3, + n05, + _GBCO, + { [_xN]: _CORSC }, + [_CORSR], + [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]] + ]; + var GetBucketCorsRequest$ = [ + 3, + n05, + _GBCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketEncryptionOutput$ = [ + 3, + n05, + _GBEO, + 0, + [_SSEC], + [[() => ServerSideEncryptionConfiguration$, 16]] + ]; + var GetBucketEncryptionRequest$ = [ + 3, + n05, + _GBER, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketIntelligentTieringConfigurationOutput$ = [ + 3, + n05, + _GBITCO, + 0, + [_ITC], + [[() => IntelligentTieringConfiguration$, 16]] + ]; + var GetBucketIntelligentTieringConfigurationRequest$ = [ + 3, + n05, + _GBITCR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetBucketInventoryConfigurationOutput$ = [ + 3, + n05, + _GBICO, + 0, + [_IC], + [[() => InventoryConfiguration$, 16]] + ]; + var GetBucketInventoryConfigurationRequest$ = [ + 3, + n05, + _GBICR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetBucketLifecycleConfigurationOutput$ = [ + 3, + n05, + _GBLCO, + { [_xN]: _LCi }, + [_Ru, _TDMOS], + [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Rul }], [0, { [_hH2]: _xatdmos }]] + ]; + var GetBucketLifecycleConfigurationRequest$ = [ + 3, + n05, + _GBLCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketLocationOutput$ = [ + 3, + n05, + _GBLO, + { [_xN]: _LC }, + [_LC], + [0] + ]; + var GetBucketLocationRequest$ = [ + 3, + n05, + _GBLR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketLoggingOutput$ = [ + 3, + n05, + _GBLOe, + { [_xN]: _BLS }, + [_LE], + [[() => LoggingEnabled$, 0]] + ]; + var GetBucketLoggingRequest$ = [ + 3, + n05, + _GBLRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketMetadataConfigurationOutput$ = [ + 3, + n05, + _GBMCO, + 0, + [_GBMCR], + [[() => GetBucketMetadataConfigurationResult$, 16]] + ]; + var GetBucketMetadataConfigurationRequest$ = [ + 3, + n05, + _GBMCRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketMetadataConfigurationResult$ = [ + 3, + n05, + _GBMCR, + 0, + [_MCR], + [() => MetadataConfigurationResult$], + 1 + ]; + var GetBucketMetadataTableConfigurationOutput$ = [ + 3, + n05, + _GBMTCO, + 0, + [_GBMTCR], + [[() => GetBucketMetadataTableConfigurationResult$, 16]] + ]; + var GetBucketMetadataTableConfigurationRequest$ = [ + 3, + n05, + _GBMTCRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketMetadataTableConfigurationResult$ = [ + 3, + n05, + _GBMTCR, + 0, + [_MTCR, _S, _E3], + [() => MetadataTableConfigurationResult$, 0, () => ErrorDetails$], + 2 + ]; + var GetBucketMetricsConfigurationOutput$ = [ + 3, + n05, + _GBMCOe, + 0, + [_MCe], + [[() => MetricsConfiguration$, 16]] + ]; + var GetBucketMetricsConfigurationRequest$ = [ + 3, + n05, + _GBMCRet, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetBucketNotificationConfigurationRequest$ = [ + 3, + n05, + _GBNCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketOwnershipControlsOutput$ = [ + 3, + n05, + _GBOCO, + 0, + [_OC], + [[() => OwnershipControls$, 16]] + ]; + var GetBucketOwnershipControlsRequest$ = [ + 3, + n05, + _GBOCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketPolicyOutput$ = [ + 3, + n05, + _GBPO, + 0, + [_Po], + [[0, 16]] + ]; + var GetBucketPolicyRequest$ = [ + 3, + n05, + _GBPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketPolicyStatusOutput$ = [ + 3, + n05, + _GBPSO, + 0, + [_PS], + [[() => PolicyStatus$, 16]] + ]; + var GetBucketPolicyStatusRequest$ = [ + 3, + n05, + _GBPSR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketReplicationOutput$ = [ + 3, + n05, + _GBRO, + 0, + [_RCe], + [[() => ReplicationConfiguration$, 16]] + ]; + var GetBucketReplicationRequest$ = [ + 3, + n05, + _GBRR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketRequestPaymentOutput$ = [ + 3, + n05, + _GBRPO, + { [_xN]: _RPC }, + [_Pay], + [0] + ]; + var GetBucketRequestPaymentRequest$ = [ + 3, + n05, + _GBRPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketTaggingOutput$ = [ + 3, + n05, + _GBTO, + { [_xN]: _Tag }, + [_TSa], + [[() => TagSet, 0]], + 1 + ]; + var GetBucketTaggingRequest$ = [ + 3, + n05, + _GBTR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketVersioningOutput$ = [ + 3, + n05, + _GBVO, + { [_xN]: _VC }, + [_S, _MFAD], + [0, [0, { [_xN]: _MDf }]] + ]; + var GetBucketVersioningRequest$ = [ + 3, + n05, + _GBVR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetBucketWebsiteOutput$ = [ + 3, + n05, + _GBWO, + { [_xN]: _WC }, + [_RART, _IDn, _EDr, _RR], + [() => RedirectAllRequestsTo$, () => IndexDocument$, () => ErrorDocument$, [() => RoutingRules, 0]] + ]; + var GetBucketWebsiteRequest$ = [ + 3, + n05, + _GBWR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetObjectAclOutput$ = [ + 3, + n05, + _GOAO, + { [_xN]: _ACP }, + [_O, _G, _RC2], + [() => Owner$, [() => Grants, { [_xN]: _ACL }], [0, { [_hH2]: _xarc }]] + ]; + var GetObjectAclRequest$ = [ + 3, + n05, + _GOAR, + 0, + [_B, _K2, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetObjectAnnotationOutput$ = [ + 3, + n05, + _GOAOe, + 0, + [_AP, _OVI, _LM, _CLo, _ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _SSE, _RC2, _RS], + [[() => StreamingBlob, 16], [0, { [_hH2]: _xaovi }], [4, { [_hH2]: _LM_ }], [1, { [_hH2]: _CL__ }], [0, { [_hH2]: _ET }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xact }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xarc }], [0, { [_hH2]: _xars }]] + ]; + var GetObjectAnnotationRequest$ = [ + 3, + n05, + _GOARe, + 0, + [_B, _K2, _AN, _VI, _RP, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hQ2]: _aN }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xacm_ }]], + 3 + ]; + var GetObjectAttributesOutput$ = [ + 3, + n05, + _GOAOet, + { [_xN]: _GOARet }, + [_DM, _LM, _VI, _RC2, _ET, _C2, _OP, _SC, _OS], + [[2, { [_hH2]: _xadm }], [4, { [_hH2]: _LM_ }], [0, { [_hH2]: _xavi }], [0, { [_hH2]: _xarc }], 0, () => Checksum$, [() => GetObjectAttributesParts$, 0], 0, 1] + ]; + var GetObjectAttributesParts$ = [ + 3, + n05, + _GOAP, + 0, + [_TPC, _PNM, _NPNM, _MP, _IT2, _Pa], + [[1, { [_xN]: _PC2 }], 0, 0, 1, 2, [() => PartsList, { [_xF]: 1, [_xN]: _Par }]] + ]; + var GetObjectAttributesRequest$ = [ + 3, + n05, + _GOARetb, + 0, + [_B, _K2, _OA, _VI, _MP, _PNM, _SSECA, _SSECK, _SSECKMD, _RP, _EBO], + [[0, 1], [0, 1], [64 | 0, { [_hH2]: _xaoa }], [0, { [_hQ2]: _vI }], [1, { [_hH2]: _xamp }], [0, { [_hH2]: _xapnm }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 3 + ]; + var GetObjectLegalHoldOutput$ = [ + 3, + n05, + _GOLHO, + 0, + [_LH], + [[() => ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }]] + ]; + var GetObjectLegalHoldRequest$ = [ + 3, + n05, + _GOLHR, + 0, + [_B, _K2, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetObjectLockConfigurationOutput$ = [ + 3, + n05, + _GOLCO, + 0, + [_OLC], + [[() => ObjectLockConfiguration$, 16]] + ]; + var GetObjectLockConfigurationRequest$ = [ + 3, + n05, + _GOLCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GetObjectOutput$ = [ + 3, + n05, + _GOO, + 0, + [_Bo, _DM, _AR2, _Ex, _Re, _LM, _CLo, _ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _MM, _VI, _CC, _CDo, _CEo, _CL, _CR, _CTo, _Exp, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC2, _RS, _PC2, _TC2, _OLM, _OLRUD, _OLLHS, _OLEH, _OLEHDD, _OLEHDY], + [[() => StreamingBlob, 16], [2, { [_hH2]: _xadm }], [0, { [_hH2]: _ar }], [0, { [_hH2]: _xae }], [0, { [_hH2]: _xar }], [4, { [_hH2]: _LM_ }], [1, { [_hH2]: _CL__ }], [0, { [_hH2]: _ET }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xact }], [1, { [_hH2]: _xamm }], [0, { [_hH2]: _xavi }], [0, { [_hH2]: _CC_ }], [0, { [_hH2]: _CD_ }], [0, { [_hH2]: _CE_ }], [0, { [_hH2]: _CL_ }], [0, { [_hH2]: _CR_ }], [0, { [_hH2]: _CT_ }], [4, { [_hH2]: _Exp }], [0, { [_hH2]: _ES }], [0, { [_hH2]: _xawrl }], [0, { [_hH2]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xasc }], [0, { [_hH2]: _xarc }], [0, { [_hH2]: _xars }], [1, { [_hH2]: _xampc }], [1, { [_hH2]: _xatc }], [0, { [_hH2]: _xaolm }], [5, { [_hH2]: _xaolrud }], [0, { [_hH2]: _xaollh }], [0, { [_hH2]: _xaoleh }], [1, { [_hH2]: _xaolehdd }], [1, { [_hH2]: _xaolehdy }]] + ]; + var GetObjectRequest$ = [ + 3, + n05, + _GOR, + 0, + [_B, _K2, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hH2]: _IM_ }], [4, { [_hH2]: _IMS_ }], [0, { [_hH2]: _INM_ }], [4, { [_hH2]: _IUS_ }], [0, { [_hH2]: _Ra }], [0, { [_hQ2]: _rcc }], [0, { [_hQ2]: _rcd }], [0, { [_hQ2]: _rce }], [0, { [_hQ2]: _rcl }], [0, { [_hQ2]: _rct }], [6, { [_hQ2]: _re }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [0, { [_hH2]: _xarp }], [1, { [_hQ2]: _pN }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xacm_ }]], + 2 + ]; + var GetObjectRetentionOutput$ = [ + 3, + n05, + _GORO, + 0, + [_Ret], + [[() => ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }]] + ]; + var GetObjectRetentionRequest$ = [ + 3, + n05, + _GORR, + 0, + [_B, _K2, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetObjectTaggingOutput$ = [ + 3, + n05, + _GOTO, + { [_xN]: _Tag }, + [_TSa, _VI], + [[() => TagSet, 0], [0, { [_hH2]: _xavi }]], + 1 + ]; + var GetObjectTaggingRequest$ = [ + 3, + n05, + _GOTR, + 0, + [_B, _K2, _VI, _EBO, _RP], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xarp }]], + 2 + ]; + var GetObjectTorrentOutput$ = [ + 3, + n05, + _GOTOe, + 0, + [_Bo, _RC2], + [[() => StreamingBlob, 16], [0, { [_hH2]: _xarc }]] + ]; + var GetObjectTorrentRequest$ = [ + 3, + n05, + _GOTRe, + 0, + [_B, _K2, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var GetPublicAccessBlockOutput$ = [ + 3, + n05, + _GPABO, + 0, + [_PABC], + [[() => PublicAccessBlockConfiguration$, 16]] + ]; + var GetPublicAccessBlockRequest$ = [ + 3, + n05, + _GPABR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var GlacierJobParameters$ = [ + 3, + n05, + _GJP, + 0, + [_Ti], + [0], + 1 + ]; + var Grant$ = [ + 3, + n05, + _Gr, + 0, + [_Gra, _Pe], + [[() => Grantee$, { [_xNm]: [_x, _hi] }], 0] + ]; + var Grantee$ = [ + 3, + n05, + _Gra, + 0, + [_Ty, _DN, _EA, _ID, _URI], + [[0, { [_xA]: 1, [_xN]: _xs }], 0, 0, 0, 0], + 1 + ]; + var HeadBucketOutput$ = [ + 3, + n05, + _HBO, + 0, + [_BA, _BLT, _BLN, _BR, _APA], + [[0, { [_hH2]: _xaba }], [0, { [_hH2]: _xablt }], [0, { [_hH2]: _xabln }], [0, { [_hH2]: _xabr }], [2, { [_hH2]: _xaapa }]] + ]; + var HeadBucketRequest$ = [ + 3, + n05, + _HBR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var HeadObjectOutput$ = [ + 3, + n05, + _HOO, + 0, + [_DM, _AR2, _Ex, _Re, _ASr, _LM, _CLo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _ET, _MM, _VI, _CC, _CDo, _CEo, _CL, _CTo, _CR, _Exp, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC2, _RS, _PC2, _TC2, _OLM, _OLRUD, _OLLHS, _OLEH, _OLEHDD, _OLEHDY], + [[2, { [_hH2]: _xadm }], [0, { [_hH2]: _ar }], [0, { [_hH2]: _xae }], [0, { [_hH2]: _xar }], [0, { [_hH2]: _xaas }], [4, { [_hH2]: _LM_ }], [1, { [_hH2]: _CL__ }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xact }], [0, { [_hH2]: _ET }], [1, { [_hH2]: _xamm }], [0, { [_hH2]: _xavi }], [0, { [_hH2]: _CC_ }], [0, { [_hH2]: _CD_ }], [0, { [_hH2]: _CE_ }], [0, { [_hH2]: _CL_ }], [0, { [_hH2]: _CT_ }], [0, { [_hH2]: _CR_ }], [4, { [_hH2]: _Exp }], [0, { [_hH2]: _ES }], [0, { [_hH2]: _xawrl }], [0, { [_hH2]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xasc }], [0, { [_hH2]: _xarc }], [0, { [_hH2]: _xars }], [1, { [_hH2]: _xampc }], [1, { [_hH2]: _xatc }], [0, { [_hH2]: _xaolm }], [5, { [_hH2]: _xaolrud }], [0, { [_hH2]: _xaollh }], [0, { [_hH2]: _xaoleh }], [1, { [_hH2]: _xaolehdd }], [1, { [_hH2]: _xaolehdy }]] + ]; + var HeadObjectRequest$ = [ + 3, + n05, + _HOR, + 0, + [_B, _K2, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hH2]: _IM_ }], [4, { [_hH2]: _IMS_ }], [0, { [_hH2]: _INM_ }], [4, { [_hH2]: _IUS_ }], [0, { [_hH2]: _Ra }], [0, { [_hQ2]: _rcc }], [0, { [_hQ2]: _rcd }], [0, { [_hQ2]: _rce }], [0, { [_hQ2]: _rcl }], [0, { [_hQ2]: _rct }], [6, { [_hQ2]: _re }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [0, { [_hH2]: _xarp }], [1, { [_hQ2]: _pN }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xacm_ }]], + 2 + ]; + var IndexDocument$ = [ + 3, + n05, + _IDn, + 0, + [_Su], + [0], + 1 + ]; + var Initiator$ = [ + 3, + n05, + _In, + 0, + [_ID, _DN], + [0, 0] + ]; + var InputSerialization$ = [ + 3, + n05, + _IS, + 0, + [_CSV, _CTom, _JSON, _Parq], + [() => CSVInput$, 0, () => JSONInput$, () => ParquetInput$] + ]; + var IntelligentTieringAndOperator$ = [ + 3, + n05, + _ITAO, + 0, + [_P2, _T2], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta2 }]] + ]; + var IntelligentTieringConfiguration$ = [ + 3, + n05, + _ITC, + 0, + [_I, _S, _Tie, _F], + [0, 0, [() => TieringList, { [_xF]: 1, [_xN]: _Tier }], [() => IntelligentTieringFilter$, 0]], + 3 + ]; + var IntelligentTieringFilter$ = [ + 3, + n05, + _ITF, + 0, + [_P2, _Ta2, _An], + [0, () => Tag$2, [() => IntelligentTieringAndOperator$, 0]] + ]; + var InventoryConfiguration$ = [ + 3, + n05, + _IC, + 0, + [_Des, _IE, _I, _IOV, _Sc, _F, _OF], + [[() => InventoryDestination$, 0], 2, 0, 0, () => InventorySchedule$, () => InventoryFilter$, [() => InventoryOptionalFields, 0]], + 5 + ]; + var InventoryDestination$ = [ + 3, + n05, + _IDnv, + 0, + [_SBD], + [[() => InventoryS3BucketDestination$, 0]], + 1 + ]; + var InventoryEncryption$ = [ + 3, + n05, + _IEn, + 0, + [_SSES, _SSEKMS], + [[() => SSES3$, { [_xN]: _SS }], [() => SSEKMS$, { [_xN]: _SK }]] + ]; + var InventoryFilter$ = [ + 3, + n05, + _IF, + 0, + [_P2], + [0], + 1 + ]; + var InventoryS3BucketDestination$ = [ + 3, + n05, + _ISBD, + 0, + [_B, _Fo, _AI, _P2, _En], + [0, 0, 0, 0, [() => InventoryEncryption$, 0]], + 2 + ]; + var InventorySchedule$ = [ + 3, + n05, + _ISn, + 0, + [_Fr], + [0], + 1 + ]; + var InventoryTableConfiguration$ = [ + 3, + n05, + _ITCn, + 0, + [_CS2, _EC], + [0, () => MetadataTableEncryptionConfiguration$], + 1 + ]; + var InventoryTableConfigurationResult$ = [ + 3, + n05, + _ITCR, + 0, + [_CS2, _TS, _E3, _TN, _TA], + [0, 0, () => ErrorDetails$, 0, 0], + 1 + ]; + var InventoryTableConfigurationUpdates$ = [ + 3, + n05, + _ITCU, + 0, + [_CS2, _EC], + [0, () => MetadataTableEncryptionConfiguration$], + 1 + ]; + var JournalTableConfiguration$ = [ + 3, + n05, + _JTC, + 0, + [_REe, _EC], + [() => RecordExpiration$, () => MetadataTableEncryptionConfiguration$], + 1 + ]; + var JournalTableConfigurationResult$ = [ + 3, + n05, + _JTCR, + 0, + [_TS, _TN, _REe, _E3, _TA], + [0, 0, () => RecordExpiration$, () => ErrorDetails$, 0], + 3 + ]; + var JournalTableConfigurationUpdates$ = [ + 3, + n05, + _JTCU, + 0, + [_REe], + [() => RecordExpiration$], + 1 + ]; + var JSONInput$ = [ + 3, + n05, + _JSONI, + 0, + [_Ty], + [0] + ]; + var JSONOutput$ = [ + 3, + n05, + _JSONO, + 0, + [_RD], + [0] + ]; + var LambdaFunctionConfiguration$ = [ + 3, + n05, + _LFC, + 0, + [_LFA, _Ev, _I, _F], + [[0, { [_xN]: _CF }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], + 2 + ]; + var LifecycleExpiration$ = [ + 3, + n05, + _LEi, + 0, + [_Da, _D, _EODM], + [5, 1, 2] + ]; + var LifecycleRule$ = [ + 3, + n05, + _LR, + 0, + [_S, _Ex, _ID, _P2, _F, _Tr, _NVT, _NVE, _AIMU], + [0, () => LifecycleExpiration$, 0, 0, [() => LifecycleRuleFilter$, 0], [() => TransitionList, { [_xF]: 1, [_xN]: _Tra }], [() => NoncurrentVersionTransitionList, { [_xF]: 1, [_xN]: _NVTo }], () => NoncurrentVersionExpiration$, () => AbortIncompleteMultipartUpload$], + 1 + ]; + var LifecycleRuleAndOperator$ = [ + 3, + n05, + _LRAO, + 0, + [_P2, _T2, _OSGT, _OSLT], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta2 }], 1, 1] + ]; + var LifecycleRuleFilter$ = [ + 3, + n05, + _LRF, + 0, + [_P2, _Ta2, _OSGT, _OSLT, _An], + [0, () => Tag$2, 1, 1, [() => LifecycleRuleAndOperator$, 0]] + ]; + var ListBucketAnalyticsConfigurationsOutput$ = [ + 3, + n05, + _LBACO, + { [_xN]: _LBACR }, + [_IT2, _CTon, _NCT, _ACLn], + [2, 0, 0, [() => AnalyticsConfigurationList, { [_xF]: 1, [_xN]: _ACn }]] + ]; + var ListBucketAnalyticsConfigurationsRequest$ = [ + 3, + n05, + _LBACRi, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ2]: _ct }], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var ListBucketIntelligentTieringConfigurationsOutput$ = [ + 3, + n05, + _LBITCO, + 0, + [_IT2, _CTon, _NCT, _ITCL], + [2, 0, 0, [() => IntelligentTieringConfigurationList, { [_xF]: 1, [_xN]: _ITC }]] + ]; + var ListBucketIntelligentTieringConfigurationsRequest$ = [ + 3, + n05, + _LBITCR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ2]: _ct }], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var ListBucketInventoryConfigurationsOutput$ = [ + 3, + n05, + _LBICO, + { [_xN]: _LICR }, + [_CTon, _ICL, _IT2, _NCT], + [0, [() => InventoryConfigurationList, { [_xF]: 1, [_xN]: _IC }], 2, 0] + ]; + var ListBucketInventoryConfigurationsRequest$ = [ + 3, + n05, + _LBICR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ2]: _ct }], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var ListBucketMetricsConfigurationsOutput$ = [ + 3, + n05, + _LBMCO, + { [_xN]: _LMCR }, + [_IT2, _CTon, _NCT, _MCL], + [2, 0, 0, [() => MetricsConfigurationList, { [_xF]: 1, [_xN]: _MCe }]] + ]; + var ListBucketMetricsConfigurationsRequest$ = [ + 3, + n05, + _LBMCR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ2]: _ct }], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var ListBucketsOutput$ = [ + 3, + n05, + _LBO, + { [_xN]: _LAMBR }, + [_Bu, _O, _CTon, _P2], + [[() => Buckets, 0], () => Owner$, 0, 0] + ]; + var ListBucketsRequest$ = [ + 3, + n05, + _LBR, + 0, + [_MB, _CTon, _P2, _BR], + [[1, { [_hQ2]: _mb }], [0, { [_hQ2]: _ct }], [0, { [_hQ2]: _p }], [0, { [_hQ2]: _br }]] + ]; + var ListDirectoryBucketsOutput$ = [ + 3, + n05, + _LDBO, + { [_xN]: _LAMDBR }, + [_Bu, _CTon], + [[() => Buckets, 0], 0] + ]; + var ListDirectoryBucketsRequest$ = [ + 3, + n05, + _LDBR, + 0, + [_CTon, _MDB], + [[0, { [_hQ2]: _ct }], [1, { [_hQ2]: _mdb }]] + ]; + var ListMultipartUploadsOutput$ = [ + 3, + n05, + _LMUO, + { [_xN]: _LMUR }, + [_B, _KM, _UIM, _NKM, _P2, _Deli, _NUIM, _MUa, _IT2, _U, _CPom, _ETnc, _RC2], + [0, 0, 0, 0, 0, 0, 0, 1, 2, [() => MultipartUploadList, { [_xF]: 1, [_xN]: _Up }], [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH2]: _xarc }]] + ]; + var ListMultipartUploadsRequest$ = [ + 3, + n05, + _LMURi, + 0, + [_B, _Deli, _ETnc, _KM, _MUa, _P2, _UIM, _EBO, _RP], + [[0, 1], [0, { [_hQ2]: _d }], [0, { [_hQ2]: _et }], [0, { [_hQ2]: _km }], [1, { [_hQ2]: _mu }], [0, { [_hQ2]: _p }], [0, { [_hQ2]: _uim }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xarp }]], + 1 + ]; + var ListObjectAnnotationsOutput$ = [ + 3, + n05, + _LOAO, + 0, + [_Ann, _B, _K2, _OVI, _APn, _MAR, _ACnn, _CTon, _NCT, _RC2], + [[() => AnnotationList, 0], 0, 0, [0, { [_hH2]: _xaovi }], 0, 1, 1, 0, 0, [0, { [_hH2]: _xarc }]] + ]; + var ListObjectAnnotationsRequest$ = [ + 3, + n05, + _LOAR, + 0, + [_B, _K2, _VI, _MAR, _APn, _CTon, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [1, { [_hQ2]: _mar }], [0, { [_hQ2]: _ap }], [0, { [_hQ2]: _ct }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var ListObjectsOutput$ = [ + 3, + n05, + _LOO, + { [_xN]: _LBRi }, + [_IT2, _Ma, _NM, _Con, _N, _P2, _Deli, _MK, _CPom, _ETnc, _RC2], + [2, 0, 0, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH2]: _xarc }]] + ]; + var ListObjectsRequest$ = [ + 3, + n05, + _LOR, + 0, + [_B, _Deli, _ETnc, _Ma, _MK, _P2, _RP, _EBO, _OOA], + [[0, 1], [0, { [_hQ2]: _d }], [0, { [_hQ2]: _et }], [0, { [_hQ2]: _m4 }], [1, { [_hQ2]: _mk }], [0, { [_hQ2]: _p }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [64 | 0, { [_hH2]: _xaooa }]], + 1 + ]; + var ListObjectsV2Output$ = [ + 3, + n05, + _LOVO, + { [_xN]: _LBRi }, + [_IT2, _Con, _N, _P2, _Deli, _MK, _CPom, _ETnc, _KC, _CTon, _NCT, _SA, _RC2], + [2, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, 1, 0, 0, 0, [0, { [_hH2]: _xarc }]] + ]; + var ListObjectsV2Request$ = [ + 3, + n05, + _LOVR, + 0, + [_B, _Deli, _ETnc, _MK, _P2, _CTon, _FO, _SA, _RP, _EBO, _OOA], + [[0, 1], [0, { [_hQ2]: _d }], [0, { [_hQ2]: _et }], [1, { [_hQ2]: _mk }], [0, { [_hQ2]: _p }], [0, { [_hQ2]: _ct }], [2, { [_hQ2]: _fo }], [0, { [_hQ2]: _sa }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [64 | 0, { [_hH2]: _xaooa }]], + 1 + ]; + var ListObjectVersionsOutput$ = [ + 3, + n05, + _LOVOi, + { [_xN]: _LVR }, + [_IT2, _KM, _VIM, _NKM, _NVIM, _Ve, _DMe, _N, _P2, _Deli, _MK, _CPom, _ETnc, _RC2], + [2, 0, 0, 0, 0, [() => ObjectVersionList, { [_xF]: 1, [_xN]: _Ver }], [() => DeleteMarkers, { [_xF]: 1, [_xN]: _DM }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH2]: _xarc }]] + ]; + var ListObjectVersionsRequest$ = [ + 3, + n05, + _LOVRi, + 0, + [_B, _Deli, _ETnc, _KM, _MK, _P2, _VIM, _EBO, _RP, _OOA], + [[0, 1], [0, { [_hQ2]: _d }], [0, { [_hQ2]: _et }], [0, { [_hQ2]: _km }], [1, { [_hQ2]: _mk }], [0, { [_hQ2]: _p }], [0, { [_hQ2]: _vim }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xarp }], [64 | 0, { [_hH2]: _xaooa }]], + 1 + ]; + var ListPartsOutput$ = [ + 3, + n05, + _LPO, + { [_xN]: _LPR }, + [_ADb, _ARI2, _B, _K2, _UI, _PNM, _NPNM, _MP, _IT2, _Pa, _In, _O, _SC, _RC2, _CA2, _CT2], + [[4, { [_hH2]: _xaad }], [0, { [_hH2]: _xaari }], 0, 0, 0, 0, 0, 1, 2, [() => Parts, { [_xF]: 1, [_xN]: _Par }], () => Initiator$, () => Owner$, 0, [0, { [_hH2]: _xarc }], 0, 0] + ]; + var ListPartsRequest$ = [ + 3, + n05, + _LPRi, + 0, + [_B, _K2, _UI, _MP, _PNM, _RP, _EBO, _SSECA, _SSECK, _SSECKMD], + [[0, 1], [0, 1], [0, { [_hQ2]: _uI }], [1, { [_hQ2]: _mp }], [0, { [_hQ2]: _pnm }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }]], + 3 + ]; + var LocationInfo$ = [ + 3, + n05, + _LI, + 0, + [_Ty, _N], + [0, 0] + ]; + var LoggingEnabled$ = [ + 3, + n05, + _LE, + 0, + [_TB, _TP, _TG, _TOKF], + [0, 0, [() => TargetGrants, 0], [() => TargetObjectKeyFormat$, 0]], + 2 + ]; + var MetadataConfiguration$ = [ + 3, + n05, + _MC, + 0, + [_JTC, _ITCn, _ATC], + [() => JournalTableConfiguration$, () => InventoryTableConfiguration$, () => AnnotationTableConfiguration$], + 1 + ]; + var MetadataConfigurationResult$ = [ + 3, + n05, + _MCR, + 0, + [_DRes, _JTCR, _ITCR, _ATCR], + [() => DestinationResult$, () => JournalTableConfigurationResult$, () => InventoryTableConfigurationResult$, () => AnnotationTableConfigurationResult$], + 1 + ]; + var MetadataEntry$ = [ + 3, + n05, + _ME, + 0, + [_N, _V2], + [0, 0] + ]; + var MetadataTableConfiguration$ = [ + 3, + n05, + _MTC, + 0, + [_STD], + [() => S3TablesDestination$], + 1 + ]; + var MetadataTableConfigurationResult$ = [ + 3, + n05, + _MTCR, + 0, + [_STDR], + [() => S3TablesDestinationResult$], + 1 + ]; + var MetadataTableEncryptionConfiguration$ = [ + 3, + n05, + _MTEC, + 0, + [_SAs, _KKA], + [0, 0], + 1 + ]; + var Metrics$ = [ + 3, + n05, + _Me, + 0, + [_S, _ETv], + [0, () => ReplicationTimeValue$], + 1 + ]; + var MetricsAndOperator$ = [ + 3, + n05, + _MAO, + 0, + [_P2, _T2, _APAc], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta2 }], 0] + ]; + var MetricsConfiguration$ = [ + 3, + n05, + _MCe, + 0, + [_I, _F], + [0, [() => MetricsFilter$, 0]], + 1 + ]; + var MultipartUpload$ = [ + 3, + n05, + _MU, + 0, + [_UI, _K2, _Ini, _SC, _O, _In, _CA2, _CT2], + [0, 0, 4, 0, () => Owner$, () => Initiator$, 0, 0] + ]; + var NoncurrentVersionExpiration$ = [ + 3, + n05, + _NVE, + 0, + [_ND, _NNV], + [1, 1] + ]; + var NoncurrentVersionTransition$ = [ + 3, + n05, + _NVTo, + 0, + [_ND, _SC, _NNV], + [1, 0, 1] + ]; + var NotificationConfiguration$ = [ + 3, + n05, + _NC, + 0, + [_TCo, _QCu, _LFCa, _EBC], + [[() => TopicConfigurationList, { [_xF]: 1, [_xN]: _TCop }], [() => QueueConfigurationList, { [_xF]: 1, [_xN]: _QCue }], [() => LambdaFunctionConfigurationList, { [_xF]: 1, [_xN]: _CFC }], () => EventBridgeConfiguration$] + ]; + var NotificationConfigurationFilter$ = [ + 3, + n05, + _NCF, + 0, + [_K2], + [[() => S3KeyFilter$, { [_xN]: _SKe }]] + ]; + var _Object$ = [ + 3, + n05, + _Obj, + 0, + [_K2, _LM, _ET, _CA2, _CT2, _Si, _SC, _O, _RSe], + [0, 4, 0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, () => Owner$, () => RestoreStatus$] + ]; + var ObjectIdentifier$ = [ + 3, + n05, + _OI, + 0, + [_K2, _VI, _ET, _LMT, _Si], + [0, 0, 0, 6, 1], + 1 + ]; + var ObjectLockConfiguration$ = [ + 3, + n05, + _OLC, + 0, + [_OLE, _Rul], + [0, () => ObjectLockRule$] + ]; + var ObjectLockLegalHold$ = [ + 3, + n05, + _OLLH, + 0, + [_S], + [0] + ]; + var ObjectLockRetention$ = [ + 3, + n05, + _OLR, + 0, + [_Mo, _RUD, _EHv, _EHD], + [0, 5, 0, () => EventHoldDuration$] + ]; + var ObjectLockRule$ = [ + 3, + n05, + _OLRb, + 0, + [_DRe], + [() => DefaultRetention$] + ]; + var ObjectPart$ = [ + 3, + n05, + _OPb, + 0, + [_PN, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe], + [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ]; + var ObjectVersion$ = [ + 3, + n05, + _OV, + 0, + [_ET, _CA2, _CT2, _Si, _SC, _K2, _VI, _IL, _LM, _O, _RSe], + [0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, 0, 0, 2, 4, () => Owner$, () => RestoreStatus$] + ]; + var OutputLocation$ = [ + 3, + n05, + _OL, + 0, + [_S_], + [[() => S3Location$, 0]] + ]; + var OutputSerialization$ = [ + 3, + n05, + _OSu, + 0, + [_CSV, _JSON], + [() => CSVOutput$, () => JSONOutput$] + ]; + var Owner$ = [ + 3, + n05, + _O, + 0, + [_DN, _ID], + [0, 0] + ]; + var OwnershipControls$ = [ + 3, + n05, + _OC, + 0, + [_Ru], + [[() => OwnershipControlsRules, { [_xF]: 1, [_xN]: _Rul }]], + 1 + ]; + var OwnershipControlsRule$ = [ + 3, + n05, + _OCR, + 0, + [_OO], + [0], + 1 + ]; + var ParquetInput$ = [ + 3, + n05, + _PI2, + 0, + [], + [] + ]; + var Part$ = [ + 3, + n05, + _Par, + 0, + [_PN, _LM, _ET, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe], + [1, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ]; + var PartitionedPrefix$ = [ + 3, + n05, + _PP, + { [_xN]: _PP }, + [_PDS], + [0] + ]; + var PolicyStatus$ = [ + 3, + n05, + _PS, + 0, + [_IPs], + [[2, { [_xN]: _IPs }]] + ]; + var Progress$ = [ + 3, + n05, + _Pr2, + 0, + [_BS, _BP, _BRy], + [1, 1, 1] + ]; + var ProgressEvent$ = [ + 3, + n05, + _PE, + 0, + [_Det], + [[() => Progress$, { [_eP]: 1 }]] + ]; + var PublicAccessBlockConfiguration$ = [ + 3, + n05, + _PABC, + 0, + [_BPA, _IPA, _BPP, _RPB], + [[2, { [_xN]: _BPA }], [2, { [_xN]: _IPA }], [2, { [_xN]: _BPP }], [2, { [_xN]: _RPB }]] + ]; + var PutBucketAbacRequest$ = [ + 3, + n05, + _PBAR, + 0, + [_B, _AS, _CMDo, _CA2, _EBO], + [[0, 1], [() => AbacStatus$, { [_hP]: 1, [_xN]: _AS }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketAccelerateConfigurationRequest$ = [ + 3, + n05, + _PBACR, + 0, + [_B, _AC, _EBO, _CA2], + [[0, 1], [() => AccelerateConfiguration$, { [_hP]: 1, [_xN]: _AC }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xasca }]], + 2 + ]; + var PutBucketAclRequest$ = [ + 3, + n05, + _PBARu, + 0, + [_B, _ACL_, _ACP, _CMDo, _CA2, _GFC, _GR, _GRACP, _GW, _GWACP, _EBO], + [[0, 1], [0, { [_hH2]: _xaa }], [() => AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xagfc }], [0, { [_hH2]: _xagr }], [0, { [_hH2]: _xagra }], [0, { [_hH2]: _xagw }], [0, { [_hH2]: _xagwa }], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var PutBucketAnalyticsConfigurationRequest$ = [ + 3, + n05, + _PBACRu, + 0, + [_B, _I, _ACn, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [() => AnalyticsConfiguration$, { [_hP]: 1, [_xN]: _ACn }], [0, { [_hH2]: _xaebo }]], + 3 + ]; + var PutBucketCorsRequest$ = [ + 3, + n05, + _PBCR, + 0, + [_B, _CORSC, _CMDo, _CA2, _EBO], + [[0, 1], [() => CORSConfiguration$, { [_hP]: 1, [_xN]: _CORSC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketEncryptionRequest$ = [ + 3, + n05, + _PBER, + 0, + [_B, _SSEC, _CMDo, _CA2, _EBO], + [[0, 1], [() => ServerSideEncryptionConfiguration$, { [_hP]: 1, [_xN]: _SSEC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketIntelligentTieringConfigurationRequest$ = [ + 3, + n05, + _PBITCR, + 0, + [_B, _I, _ITC, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [() => IntelligentTieringConfiguration$, { [_hP]: 1, [_xN]: _ITC }], [0, { [_hH2]: _xaebo }]], + 3 + ]; + var PutBucketInventoryConfigurationRequest$ = [ + 3, + n05, + _PBICR, + 0, + [_B, _I, _IC, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [() => InventoryConfiguration$, { [_hP]: 1, [_xN]: _IC }], [0, { [_hH2]: _xaebo }]], + 3 + ]; + var PutBucketLifecycleConfigurationOutput$ = [ + 3, + n05, + _PBLCO, + 0, + [_TDMOS], + [[0, { [_hH2]: _xatdmos }]] + ]; + var PutBucketLifecycleConfigurationRequest$ = [ + 3, + n05, + _PBLCR, + 0, + [_B, _CA2, _LCi, _EBO, _TDMOS], + [[0, 1], [0, { [_hH2]: _xasca }], [() => BucketLifecycleConfiguration$, { [_hP]: 1, [_xN]: _LCi }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xatdmos }]], + 1 + ]; + var PutBucketLoggingRequest$ = [ + 3, + n05, + _PBLR, + 0, + [_B, _BLS, _CMDo, _CA2, _EBO], + [[0, 1], [() => BucketLoggingStatus$, { [_hP]: 1, [_xN]: _BLS }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketMetricsConfigurationRequest$ = [ + 3, + n05, + _PBMCR, + 0, + [_B, _I, _MCe, _EBO], + [[0, 1], [0, { [_hQ2]: _i }], [() => MetricsConfiguration$, { [_hP]: 1, [_xN]: _MCe }], [0, { [_hH2]: _xaebo }]], + 3 + ]; + var PutBucketNotificationConfigurationRequest$ = [ + 3, + n05, + _PBNCR, + 0, + [_B, _NC, _EBO, _SDV], + [[0, 1], [() => NotificationConfiguration$, { [_hP]: 1, [_xN]: _NC }], [0, { [_hH2]: _xaebo }], [2, { [_hH2]: _xasdv }]], + 2 + ]; + var PutBucketOwnershipControlsRequest$ = [ + 3, + n05, + _PBOCR, + 0, + [_B, _OC, _CMDo, _EBO, _CA2], + [[0, 1], [() => OwnershipControls$, { [_hP]: 1, [_xN]: _OC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xasca }]], + 2 + ]; + var PutBucketPolicyRequest$ = [ + 3, + n05, + _PBPR, + 0, + [_B, _Po, _CMDo, _CA2, _CRSBA, _EBO], + [[0, 1], [0, 16], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [2, { [_hH2]: _xacrsba }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketReplicationRequest$ = [ + 3, + n05, + _PBRR, + 0, + [_B, _RCe, _CMDo, _CA2, _To, _EBO], + [[0, 1], [() => ReplicationConfiguration$, { [_hP]: 1, [_xN]: _RCe }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xabolt }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketRequestPaymentRequest$ = [ + 3, + n05, + _PBRPR, + 0, + [_B, _RPC, _CMDo, _CA2, _EBO], + [[0, 1], [() => RequestPaymentConfiguration$, { [_hP]: 1, [_xN]: _RPC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketTaggingRequest$ = [ + 3, + n05, + _PBTR, + 0, + [_B, _Tag, _CMDo, _CA2, _EBO], + [[0, 1], [() => Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketVersioningRequest$ = [ + 3, + n05, + _PBVR, + 0, + [_B, _VC, _CMDo, _CA2, _MFA, _EBO], + [[0, 1], [() => VersioningConfiguration$, { [_hP]: 1, [_xN]: _VC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xam_ }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutBucketWebsiteRequest$ = [ + 3, + n05, + _PBWR, + 0, + [_B, _WC, _CMDo, _CA2, _EBO], + [[0, 1], [() => WebsiteConfiguration$, { [_hP]: 1, [_xN]: _WC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutObjectAclOutput$ = [ + 3, + n05, + _POAO, + 0, + [_RC2], + [[0, { [_hH2]: _xarc }]] + ]; + var PutObjectAclRequest$ = [ + 3, + n05, + _POAR, + 0, + [_B, _K2, _ACL_, _ACP, _CMDo, _CA2, _GFC, _GR, _GRACP, _GW, _GWACP, _RP, _VI, _EBO], + [[0, 1], [0, 1], [0, { [_hH2]: _xaa }], [() => AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xagfc }], [0, { [_hH2]: _xagr }], [0, { [_hH2]: _xagra }], [0, { [_hH2]: _xagw }], [0, { [_hH2]: _xagwa }], [0, { [_hH2]: _xarp }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutObjectAnnotationOutput$ = [ + 3, + n05, + _POAOu, + 0, + [_K2, _AN, _OVI, _ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _SSE, _RC2], + [0, 0, [0, { [_hH2]: _xaovi }], [0, { [_hH2]: _ET }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xact }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xarc }]] + ]; + var PutObjectAnnotationRequest$ = [ + 3, + n05, + _POARu, + 0, + [_B, _K2, _AN, _AP, _VI, _OIM, _CA2, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CMDo, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _aN }], [() => StreamingBlob, 16], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xaoim }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 4 + ]; + var PutObjectLegalHoldOutput$ = [ + 3, + n05, + _POLHO, + 0, + [_RC2], + [[0, { [_hH2]: _xarc }]] + ]; + var PutObjectLegalHoldRequest$ = [ + 3, + n05, + _POLHR, + 0, + [_B, _K2, _LH, _RP, _VI, _CMDo, _CA2, _EBO], + [[0, 1], [0, 1], [() => ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }], [0, { [_hH2]: _xarp }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutObjectLockConfigurationOutput$ = [ + 3, + n05, + _POLCO, + 0, + [_RC2], + [[0, { [_hH2]: _xarc }]] + ]; + var PutObjectLockConfigurationRequest$ = [ + 3, + n05, + _POLCR, + 0, + [_B, _OLC, _RP, _To, _CMDo, _CA2, _EBO], + [[0, 1], [() => ObjectLockConfiguration$, { [_hP]: 1, [_xN]: _OLC }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xabolt }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 1 + ]; + var PutObjectOutput$ = [ + 3, + n05, + _POO, + 0, + [_Ex, _ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _CT2, _SSE, _VI, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _Si, _RC2], + [[0, { [_hH2]: _xae }], [0, { [_hH2]: _ET }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xact }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xavi }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }], [1, { [_hH2]: _xaos }], [0, { [_hH2]: _xarc }]] + ]; + var PutObjectRequest$ = [ + 3, + n05, + _POR, + 0, + [_B, _K2, _ACL_, _Bo, _CC, _CDo, _CEo, _CL, _CLo, _CMDo, _CTo, _CA2, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _Exp, _IM, _INM, _GFC, _GR, _GRACP, _GWACP, _WOB, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _OLEH, _OLEHDD, _OLEHDY, _EBO], + [[0, 1], [0, 1], [0, { [_hH2]: _xaa }], [() => StreamingBlob, 16], [0, { [_hH2]: _CC_ }], [0, { [_hH2]: _CD_ }], [0, { [_hH2]: _CE_ }], [0, { [_hH2]: _CL_ }], [1, { [_hH2]: _CL__ }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _CT_ }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [4, { [_hH2]: _Exp }], [0, { [_hH2]: _IM_ }], [0, { [_hH2]: _INM_ }], [0, { [_hH2]: _xagfc }], [0, { [_hH2]: _xagr }], [0, { [_hH2]: _xagra }], [0, { [_hH2]: _xagwa }], [1, { [_hH2]: _xawob }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xasc }], [0, { [_hH2]: _xawrl }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH2]: _xassec }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xat }], [0, { [_hH2]: _xaolm }], [5, { [_hH2]: _xaolrud }], [0, { [_hH2]: _xaollh }], [0, { [_hH2]: _xaoleh }], [1, { [_hH2]: _xaolehdd }], [1, { [_hH2]: _xaolehdy }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutObjectRetentionOutput$ = [ + 3, + n05, + _PORO, + 0, + [_RC2], + [[0, { [_hH2]: _xarc }]] + ]; + var PutObjectRetentionRequest$ = [ + 3, + n05, + _PORR, + 0, + [_B, _K2, _Ret, _RP, _VI, _BGR, _CMDo, _CA2, _EBO], + [[0, 1], [0, 1], [() => ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }], [0, { [_hH2]: _xarp }], [0, { [_hQ2]: _vI }], [2, { [_hH2]: _xabgr }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var PutObjectTaggingOutput$ = [ + 3, + n05, + _POTO, + 0, + [_VI], + [[0, { [_hH2]: _xavi }]] + ]; + var PutObjectTaggingRequest$ = [ + 3, + n05, + _POTR, + 0, + [_B, _K2, _Tag, _VI, _CMDo, _CA2, _EBO, _RP], + [[0, 1], [0, 1], [() => Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xarp }]], + 3 + ]; + var PutPublicAccessBlockRequest$ = [ + 3, + n05, + _PPABR, + 0, + [_B, _PABC, _CMDo, _CA2, _EBO], + [[0, 1], [() => PublicAccessBlockConfiguration$, { [_hP]: 1, [_xN]: _PABC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var QueueConfiguration$ = [ + 3, + n05, + _QCue, + 0, + [_QA, _Ev, _I, _F], + [[0, { [_xN]: _Qu }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], + 2 + ]; + var RecordExpiration$ = [ + 3, + n05, + _REe, + 0, + [_Ex, _D], + [0, 1], + 1 + ]; + var RecordsEvent$ = [ + 3, + n05, + _REec, + 0, + [_Payl], + [[21, { [_eP]: 1 }]] + ]; + var Redirect$ = [ + 3, + n05, + _Red, + 0, + [_HN, _HRC, _Pro, _RKPW, _RKW], + [0, 0, 0, 0, 0] + ]; + var RedirectAllRequestsTo$ = [ + 3, + n05, + _RART, + 0, + [_HN, _Pro], + [0, 0], + 1 + ]; + var RenameObjectOutput$ = [ + 3, + n05, + _ROO, + 0, + [], + [] + ]; + var RenameObjectRequest$ = [ + 3, + n05, + _ROR, + 0, + [_B, _K2, _RSen, _DIM, _DINM, _DIMS, _DIUS, _SIM, _SINM, _SIMS, _SIUS, _CTl], + [[0, 1], [0, 1], [0, { [_hH2]: _xars_ }], [0, { [_hH2]: _IM_ }], [0, { [_hH2]: _INM_ }], [4, { [_hH2]: _IMS_ }], [4, { [_hH2]: _IUS_ }], [0, { [_hH2]: _xarsim }], [0, { [_hH2]: _xarsinm }], [6, { [_hH2]: _xarsims }], [6, { [_hH2]: _xarsius }], [0, { [_hH2]: _xact_, [_iT3]: 1 }]], + 3 + ]; + var ReplicaModifications$ = [ + 3, + n05, + _RM, + 0, + [_S], + [0], + 1 + ]; + var ReplicationConfiguration$ = [ + 3, + n05, + _RCe, + 0, + [_R, _Ru], + [0, [() => ReplicationRules, { [_xF]: 1, [_xN]: _Rul }]], + 2 + ]; + var ReplicationRule$ = [ + 3, + n05, + _RRe, + 0, + [_S, _Des, _ID, _Pri, _P2, _F, _SSC, _EOR, _DMR], + [0, () => Destination$, 0, 1, 0, [() => ReplicationRuleFilter$, 0], () => SourceSelectionCriteria$, () => ExistingObjectReplication$, () => DeleteMarkerReplication$], + 2 + ]; + var ReplicationRuleAndOperator$ = [ + 3, + n05, + _RRAO, + 0, + [_P2, _T2], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta2 }]] + ]; + var ReplicationRuleFilter$ = [ + 3, + n05, + _RRF, + 0, + [_P2, _Ta2, _An], + [0, () => Tag$2, [() => ReplicationRuleAndOperator$, 0]] + ]; + var ReplicationTime$ = [ + 3, + n05, + _RT3, + 0, + [_S, _Tim], + [0, () => ReplicationTimeValue$], + 2 + ]; + var ReplicationTimeValue$ = [ + 3, + n05, + _RTV, + 0, + [_Mi], + [1] + ]; + var RequestPaymentConfiguration$ = [ + 3, + n05, + _RPC, + 0, + [_Pay], + [0], + 1 + ]; + var RequestProgress$ = [ + 3, + n05, + _RPe, + 0, + [_Ena], + [2] + ]; + var RestoreObjectOutput$ = [ + 3, + n05, + _ROOe, + 0, + [_RC2, _ROP], + [[0, { [_hH2]: _xarc }], [0, { [_hH2]: _xarop }]] + ]; + var RestoreObjectRequest$ = [ + 3, + n05, + _RORe, + 0, + [_B, _K2, _VI, _RRes, _RP, _CA2, _EBO], + [[0, 1], [0, 1], [0, { [_hQ2]: _vI }], [() => RestoreRequest$, { [_hP]: 1, [_xN]: _RRes }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var RestoreRequest$ = [ + 3, + n05, + _RRes, + 0, + [_D, _GJP, _Ty, _Ti, _Desc, _SP, _OL], + [1, () => GlacierJobParameters$, 0, 0, 0, () => SelectParameters$, [() => OutputLocation$, 0]] + ]; + var RestoreStatus$ = [ + 3, + n05, + _RSe, + 0, + [_IRIP, _RED], + [2, 4] + ]; + var RoutingRule$ = [ + 3, + n05, + _RRo, + 0, + [_Red, _Co], + [() => Redirect$, () => Condition$], + 1 + ]; + var S3KeyFilter$ = [ + 3, + n05, + _SKF, + 0, + [_FRi], + [[() => FilterRuleList, { [_xF]: 1, [_xN]: _FR }]] + ]; + var S3Location$ = [ + 3, + n05, + _SL, + 0, + [_BNu, _P2, _En, _CACL, _ACL, _Tag, _UM, _SC], + [0, 0, [() => Encryption$, 0], 0, [() => Grants, 0], [() => Tagging$, 0], [() => UserMetadata, 0], 0], + 2 + ]; + var S3TablesDestination$ = [ + 3, + n05, + _STD, + 0, + [_TBA, _TN], + [0, 0], + 2 + ]; + var S3TablesDestinationResult$ = [ + 3, + n05, + _STDR, + 0, + [_TBA, _TN, _TA, _TNa], + [0, 0, 0, 0], + 4 + ]; + var ScanRange$ = [ + 3, + n05, + _SR, + 0, + [_St, _End], + [1, 1] + ]; + var SelectObjectContentOutput$ = [ + 3, + n05, + _SOCO, + 0, + [_Payl], + [[() => SelectObjectContentEventStream$, 16]] + ]; + var SelectObjectContentRequest$ = [ + 3, + n05, + _SOCR, + 0, + [_B, _K2, _Expr, _ETx, _IS, _OSu, _SSECA, _SSECK, _SSECKMD, _RPe, _SR, _EBO], + [[0, 1], [0, 1], 0, 0, () => InputSerialization$, () => OutputSerialization$, [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], () => RequestProgress$, () => ScanRange$, [0, { [_hH2]: _xaebo }]], + 6 + ]; + var SelectParameters$ = [ + 3, + n05, + _SP, + 0, + [_IS, _ETx, _Expr, _OSu], + [() => InputSerialization$, 0, 0, () => OutputSerialization$], + 4 + ]; + var ServerSideEncryptionByDefault$ = [ + 3, + n05, + _SSEBD, + 0, + [_SSEA, _KMSMKID], + [0, [() => SSEKMSKeyId, 0]], + 1 + ]; + var ServerSideEncryptionConfiguration$ = [ + 3, + n05, + _SSEC, + 0, + [_Ru], + [[() => ServerSideEncryptionRules, { [_xF]: 1, [_xN]: _Rul }]], + 1 + ]; + var ServerSideEncryptionRule$ = [ + 3, + n05, + _SSER, + 0, + [_ASSEBD, _BKE, _BET], + [[() => ServerSideEncryptionByDefault$, 0], 2, [() => BlockedEncryptionTypes$, 0]] + ]; + var SessionCredentials$ = [ + 3, + n05, + _SCe, + 0, + [_AKI2, _SAK2, _ST2, _Ex], + [[0, { [_xN]: _AKI2 }], [() => SessionCredentialValue, { [_xN]: _SAK2 }], [() => SessionCredentialValue, { [_xN]: _ST2 }], [4, { [_xN]: _Ex }]], + 4 + ]; + var SimplePrefix$ = [ + 3, + n05, + _SPi, + { [_xN]: _SPi }, + [], + [] + ]; + var SourceSelectionCriteria$ = [ + 3, + n05, + _SSC, + 0, + [_SKEO, _RM], + [() => SseKmsEncryptedObjects$, () => ReplicaModifications$] + ]; + var SSEKMS$ = [ + 3, + n05, + _SSEKMS, + { [_xN]: _SK }, + [_KI], + [[() => SSEKMSKeyId, 0]], + 1 + ]; + var SseKmsEncryptedObjects$ = [ + 3, + n05, + _SKEO, + 0, + [_S], + [0], + 1 + ]; + var SSEKMSEncryption$ = [ + 3, + n05, + _SSEKMSE, + { [_xN]: _SK }, + [_KMSKA, _BKE], + [[() => NonEmptyKmsKeyArnString, 0], 2], + 1 + ]; + var SSES3$ = [ + 3, + n05, + _SSES, + { [_xN]: _SS }, + [], + [] + ]; + var Stats$ = [ + 3, + n05, + _Sta, + 0, + [_BS, _BP, _BRy], + [1, 1, 1] + ]; + var StatsEvent$ = [ + 3, + n05, + _SE, + 0, + [_Det], + [[() => Stats$, { [_eP]: 1 }]] + ]; + var StorageClassAnalysis$ = [ + 3, + n05, + _SCA, + 0, + [_DE], + [() => StorageClassAnalysisDataExport$] + ]; + var StorageClassAnalysisDataExport$ = [ + 3, + n05, + _SCADE, + 0, + [_OSV, _Des], + [0, () => AnalyticsExportDestination$], + 2 + ]; + var Tag$2 = [ + 3, + n05, + _Ta2, + 0, + [_K2, _V2], + [0, 0], + 2 + ]; + var Tagging$ = [ + 3, + n05, + _Tag, + 0, + [_TSa], + [[() => TagSet, 0]], + 1 + ]; + var TargetGrant$ = [ + 3, + n05, + _TGa, + 0, + [_Gra, _Pe], + [[() => Grantee$, { [_xNm]: [_x, _hi] }], 0] + ]; + var TargetObjectKeyFormat$ = [ + 3, + n05, + _TOKF, + 0, + [_SPi, _PP], + [[() => SimplePrefix$, { [_xN]: _SPi }], [() => PartitionedPrefix$, { [_xN]: _PP }]] + ]; + var Tiering$ = [ + 3, + n05, + _Tier, + 0, + [_D, _AT3], + [1, 0], + 2 + ]; + var TopicConfiguration$ = [ + 3, + n05, + _TCop, + 0, + [_TAo, _Ev, _I, _F], + [[0, { [_xN]: _Top }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], + 2 + ]; + var Transition$ = [ + 3, + n05, + _Tra, + 0, + [_Da, _D, _SC], + [5, 1, 0] + ]; + var UpdateBucketMetadataAnnotationTableConfigurationRequest$ = [ + 3, + n05, + _UBMATCR, + 0, + [_B, _ATC, _CMDo, _CA2, _EBO], + [[0, 1], [() => AnnotationTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _ATC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var UpdateBucketMetadataInventoryTableConfigurationRequest$ = [ + 3, + n05, + _UBMITCR, + 0, + [_B, _ITCn, _CMDo, _CA2, _EBO], + [[0, 1], [() => InventoryTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _ITCn }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var UpdateBucketMetadataJournalTableConfigurationRequest$ = [ + 3, + n05, + _UBMJTCR, + 0, + [_B, _JTC, _CMDo, _CA2, _EBO], + [[0, 1], [() => JournalTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _JTC }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xaebo }]], + 2 + ]; + var UpdateObjectEncryptionRequest$ = [ + 3, + n05, + _UOER, + 0, + [_B, _K2, _OE, _VI, _RP, _EBO, _CMDo, _CA2], + [[0, 1], [0, 1], [() => ObjectEncryption$, 16], [0, { [_hQ2]: _vI }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }]], + 3 + ]; + var UpdateObjectEncryptionResponse$ = [ + 3, + n05, + _UOERp, + 0, + [_RC2], + [[0, { [_hH2]: _xarc }]] + ]; + var UploadPartCopyOutput$ = [ + 3, + n05, + _UPCO, + 0, + [_CSVI, _CPR, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC2], + [[0, { [_hH2]: _xacsvi }], [() => CopyPartResult$, 16], [0, { [_hH2]: _xasse }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarc }]] + ]; + var UploadPartCopyRequest$ = [ + 3, + n05, + _UPCR, + 0, + [_B, _CSo, _K2, _PN, _UI, _CSIM, _CSIMS, _CSINM, _CSIUS, _CSRo, _SSECA, _SSECK, _SSECKMD, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _EBO, _ESBO], + [[0, 1], [0, { [_hH2]: _xacs___ }], [0, 1], [1, { [_hQ2]: _pN }], [0, { [_hQ2]: _uI }], [0, { [_hH2]: _xacsim }], [4, { [_hH2]: _xacsims }], [0, { [_hH2]: _xacsinm }], [4, { [_hH2]: _xacsius }], [0, { [_hH2]: _xacsr }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [0, { [_hH2]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH2]: _xacssseck }], [0, { [_hH2]: _xacssseckM }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }], [0, { [_hH2]: _xasebo }]], + 5 + ]; + var UploadPartOutput$ = [ + 3, + n05, + _UPO, + 0, + [_SSE, _ET, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC2], + [[0, { [_hH2]: _xasse }], [0, { [_hH2]: _ET }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xasseca }], [0, { [_hH2]: _xasseckM }], [() => SSEKMSKeyId, { [_hH2]: _xasseakki }], [2, { [_hH2]: _xassebke }], [0, { [_hH2]: _xarc }]] + ]; + var UploadPartRequest$ = [ + 3, + n05, + _UPR, + 0, + [_B, _K2, _PN, _UI, _Bo, _CLo, _CMDo, _CA2, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _SSECA, _SSECK, _SSECKMD, _RP, _EBO], + [[0, 1], [0, 1], [1, { [_hQ2]: _pN }], [0, { [_hQ2]: _uI }], [() => StreamingBlob, 16], [1, { [_hH2]: _CL__ }], [0, { [_hH2]: _CM }], [0, { [_hH2]: _xasca }], [0, { [_hH2]: _xacc }], [0, { [_hH2]: _xacc_ }], [0, { [_hH2]: _xacc__ }], [0, { [_hH2]: _xacs }], [0, { [_hH2]: _xacs_ }], [0, { [_hH2]: _xacs__ }], [0, { [_hH2]: _xacm }], [0, { [_hH2]: _xacx }], [0, { [_hH2]: _xacx_ }], [0, { [_hH2]: _xacx__ }], [0, { [_hH2]: _xasseca }], [() => SSECustomerKey, { [_hH2]: _xasseck }], [0, { [_hH2]: _xasseckM }], [0, { [_hH2]: _xarp }], [0, { [_hH2]: _xaebo }]], + 4 + ]; + var VersioningConfiguration$ = [ + 3, + n05, + _VC, + 0, + [_MFAD, _S], + [[0, { [_xN]: _MDf }], 0] + ]; + var WebsiteConfiguration$ = [ + 3, + n05, + _WC, + 0, + [_EDr, _IDn, _RART, _RR], + [() => ErrorDocument$, () => IndexDocument$, () => RedirectAllRequestsTo$, [() => RoutingRules, 0]] + ]; + var WriteGetObjectResponseRequest$ = [ + 3, + n05, + _WGORR, + 0, + [_RReq, _RTe, _Bo, _SCt, _ECr, _EM, _AR2, _CC, _CDo, _CEo, _CL, _CLo, _CR, _CTo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CSHAhe, _CMD, _CXXHASH, _CXXHASHh, _CXXHASHhe, _DM, _ET, _Exp, _Ex, _LM, _MM, _M, _OLM, _OLLHS, _OLRUD, _PC2, _RS, _RC2, _Re, _SSE, _SSECA, _SSEKMSKI, _SSECKMD, _SC, _TC2, _VI, _BKE], + [[0, { [_hL]: 1, [_hH2]: _xarr }], [0, { [_hH2]: _xart }], [() => StreamingBlob, 16], [1, { [_hH2]: _xafs }], [0, { [_hH2]: _xafec }], [0, { [_hH2]: _xafem }], [0, { [_hH2]: _xafhar }], [0, { [_hH2]: _xafhCC }], [0, { [_hH2]: _xafhCD }], [0, { [_hH2]: _xafhCE }], [0, { [_hH2]: _xafhCL }], [1, { [_hH2]: _CL__ }], [0, { [_hH2]: _xafhCR }], [0, { [_hH2]: _xafhCT }], [0, { [_hH2]: _xafhxacc }], [0, { [_hH2]: _xafhxacc_ }], [0, { [_hH2]: _xafhxacc__ }], [0, { [_hH2]: _xafhxacs }], [0, { [_hH2]: _xafhxacs_ }], [0, { [_hH2]: _xafhxacs__ }], [0, { [_hH2]: _xafhxacm }], [0, { [_hH2]: _xafhxacx }], [0, { [_hH2]: _xafhxacx_ }], [0, { [_hH2]: _xafhxacx__ }], [2, { [_hH2]: _xafhxadm }], [0, { [_hH2]: _xafhE }], [4, { [_hH2]: _xafhE_ }], [0, { [_hH2]: _xafhxae }], [4, { [_hH2]: _xafhLM }], [1, { [_hH2]: _xafhxamm }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH2]: _xafhxaolm }], [0, { [_hH2]: _xafhxaollh }], [5, { [_hH2]: _xafhxaolrud }], [1, { [_hH2]: _xafhxampc }], [0, { [_hH2]: _xafhxars }], [0, { [_hH2]: _xafhxarc }], [0, { [_hH2]: _xafhxar }], [0, { [_hH2]: _xafhxasse }], [0, { [_hH2]: _xafhxasseca }], [() => SSEKMSKeyId, { [_hH2]: _xafhxasseakki }], [0, { [_hH2]: _xafhxasseckM }], [0, { [_hH2]: _xafhxasc }], [1, { [_hH2]: _xafhxatc }], [0, { [_hH2]: _xafhxavi }], [2, { [_hH2]: _xafhxassebke }]], + 2 + ]; + var __Unit = "unit"; + var AnalyticsConfigurationList = [ + 1, + n05, + _ACLn, + 0, + [ + () => AnalyticsConfiguration$, + 0 + ] + ]; + var AnnotationList = [ + 1, + n05, + _AL, + 0, + [ + () => AnnotationEntry$, + { [_xN]: _AE } + ] + ]; + var Buckets = [ + 1, + n05, + _Bu, + 0, + [ + () => Bucket$, + { [_xN]: _B } + ] + ]; + var CommonPrefixList = [ + 1, + n05, + _CPL, + 0, + () => CommonPrefix$ + ]; + var CompletedPartList = [ + 1, + n05, + _CPLo, + 0, + () => CompletedPart$ + ]; + var CORSRules = [ + 1, + n05, + _CORSR, + 0, + [ + () => CORSRule$, + 0 + ] + ]; + var DeletedObjects = [ + 1, + n05, + _DOe, + 0, + () => DeletedObject$ + ]; + var DeleteMarkers = [ + 1, + n05, + _DMe, + 0, + () => DeleteMarkerEntry$ + ]; + var EncryptionTypeList = [ + 1, + n05, + _ETL, + 0, + [ + 0, + { [_xN]: _ETn } + ] + ]; + var Errors = [ + 1, + n05, + _Er, + 0, + () => _Error$ + ]; + var FilterRuleList = [ + 1, + n05, + _FRL, + 0, + () => FilterRule$ + ]; + var Grants = [ + 1, + n05, + _G, + 0, + [ + () => Grant$, + { [_xN]: _Gr } + ] + ]; + var IntelligentTieringConfigurationList = [ + 1, + n05, + _ITCL, + 0, + [ + () => IntelligentTieringConfiguration$, + 0 + ] + ]; + var InventoryConfigurationList = [ + 1, + n05, + _ICL, + 0, + [ + () => InventoryConfiguration$, + 0 + ] + ]; + var InventoryOptionalFields = [ + 1, + n05, + _IOF, + 0, + [ + 0, + { [_xN]: _Fi } + ] + ]; + var LambdaFunctionConfigurationList = [ + 1, + n05, + _LFCL, + 0, + [ + () => LambdaFunctionConfiguration$, + 0 + ] + ]; + var LifecycleRules = [ + 1, + n05, + _LRi, + 0, + [ + () => LifecycleRule$, + 0 + ] + ]; + var MetricsConfigurationList = [ + 1, + n05, + _MCL, + 0, + [ + () => MetricsConfiguration$, + 0 + ] + ]; + var MultipartUploadList = [ + 1, + n05, + _MUL, + 0, + () => MultipartUpload$ + ]; + var NoncurrentVersionTransitionList = [ + 1, + n05, + _NVTL, + 0, + () => NoncurrentVersionTransition$ + ]; + var ObjectIdentifierList = [ + 1, + n05, + _OIL, + 0, + () => ObjectIdentifier$ + ]; + var ObjectList = [ + 1, + n05, + _OLb, + 0, + [ + () => _Object$, + 0 + ] + ]; + var ObjectVersionList = [ + 1, + n05, + _OVL, + 0, + [ + () => ObjectVersion$, + 0 + ] + ]; + var OwnershipControlsRules = [ + 1, + n05, + _OCRw, + 0, + () => OwnershipControlsRule$ + ]; + var Parts = [ + 1, + n05, + _Pa, + 0, + () => Part$ + ]; + var PartsList = [ + 1, + n05, + _PL, + 0, + () => ObjectPart$ + ]; + var QueueConfigurationList = [ + 1, + n05, + _QCL, + 0, + [ + () => QueueConfiguration$, + 0 + ] + ]; + var ReplicationRules = [ + 1, + n05, + _RRep, + 0, + [ + () => ReplicationRule$, + 0 + ] + ]; + var RoutingRules = [ + 1, + n05, + _RR, + 0, + [ + () => RoutingRule$, + { [_xN]: _RRo } + ] + ]; + var ServerSideEncryptionRules = [ + 1, + n05, + _SSERe, + 0, + [ + () => ServerSideEncryptionRule$, + 0 + ] + ]; + var TagSet = [ + 1, + n05, + _TSa, + 0, + [ + () => Tag$2, + { [_xN]: _Ta2 } + ] + ]; + var TargetGrants = [ + 1, + n05, + _TG, + 0, + [ + () => TargetGrant$, + { [_xN]: _Gr } + ] + ]; + var TieringList = [ + 1, + n05, + _TL, + 0, + () => Tiering$ + ]; + var TopicConfigurationList = [ + 1, + n05, + _TCL, + 0, + [ + () => TopicConfiguration$, + 0 + ] + ]; + var TransitionList = [ + 1, + n05, + _TLr, + 0, + () => Transition$ + ]; + var UserMetadata = [ + 1, + n05, + _UM, + 0, + [ + () => MetadataEntry$, + { [_xN]: _ME } + ] + ]; + var AnalyticsFilter$ = [ + 4, + n05, + _AF, + 0, + [_P2, _Ta2, _An], + [0, () => Tag$2, [() => AnalyticsAndOperator$, 0]] + ]; + var MetricsFilter$ = [ + 4, + n05, + _MF, + 0, + [_P2, _Ta2, _APAc, _An], + [0, () => Tag$2, 0, [() => MetricsAndOperator$, 0]] + ]; + var ObjectEncryption$ = [ + 4, + n05, + _OE, + 0, + [_SSEKMS], + [[() => SSEKMSEncryption$, { [_xN]: _SK }]] + ]; + var SelectObjectContentEventStream$ = [ + 4, + n05, + _SOCES, + { [_st]: 1 }, + [_Rec, _Sta, _Pr2, _Cont, _End], + [[() => RecordsEvent$, 0], [() => StatsEvent$, 0], [() => ProgressEvent$, 0], () => ContinuationEvent$, () => EndEvent$] + ]; + var AbortMultipartUpload$ = [ + 9, + n05, + _AMU, + { [_h4]: ["DELETE", "/{Key+}?x-id=AbortMultipartUpload", 204] }, + () => AbortMultipartUploadRequest$, + () => AbortMultipartUploadOutput$ + ]; + var CompleteMultipartUpload$ = [ + 9, + n05, + _CMUo, + { [_h4]: ["POST", "/{Key+}", 200] }, + () => CompleteMultipartUploadRequest$, + () => CompleteMultipartUploadOutput$ + ]; + var CopyObject$ = [ + 9, + n05, + _CO, + { [_h4]: ["PUT", "/{Key+}?x-id=CopyObject", 200] }, + () => CopyObjectRequest$, + () => CopyObjectOutput$ + ]; + var CreateBucket$ = [ + 9, + n05, + _CB, + { [_h4]: ["PUT", "/", 200] }, + () => CreateBucketRequest$, + () => CreateBucketOutput$ + ]; + var CreateBucketMetadataConfiguration$ = [ + 9, + n05, + _CBMC, + { [_hC]: "-", [_h4]: ["POST", "/?metadataConfiguration", 200] }, + () => CreateBucketMetadataConfigurationRequest$, + () => __Unit + ]; + var CreateBucketMetadataTableConfiguration$ = [ + 9, + n05, + _CBMTC, + { [_hC]: "-", [_h4]: ["POST", "/?metadataTable", 200] }, + () => CreateBucketMetadataTableConfigurationRequest$, + () => __Unit + ]; + var CreateMultipartUpload$ = [ + 9, + n05, + _CMUr, + { [_h4]: ["POST", "/{Key+}?uploads", 200] }, + () => CreateMultipartUploadRequest$, + () => CreateMultipartUploadOutput$ + ]; + var CreateSession$ = [ + 9, + n05, + _CSr, + { [_h4]: ["GET", "/?session", 200] }, + () => CreateSessionRequest$, + () => CreateSessionOutput$ + ]; + var DeleteBucket$ = [ + 9, + n05, + _DB, + { [_h4]: ["DELETE", "/", 204] }, + () => DeleteBucketRequest$, + () => __Unit + ]; + var DeleteBucketAnalyticsConfiguration$ = [ + 9, + n05, + _DBAC, + { [_h4]: ["DELETE", "/?analytics", 204] }, + () => DeleteBucketAnalyticsConfigurationRequest$, + () => __Unit + ]; + var DeleteBucketCors$ = [ + 9, + n05, + _DBC, + { [_h4]: ["DELETE", "/?cors", 204] }, + () => DeleteBucketCorsRequest$, + () => __Unit + ]; + var DeleteBucketEncryption$ = [ + 9, + n05, + _DBE, + { [_h4]: ["DELETE", "/?encryption", 204] }, + () => DeleteBucketEncryptionRequest$, + () => __Unit + ]; + var DeleteBucketIntelligentTieringConfiguration$ = [ + 9, + n05, + _DBITC, + { [_h4]: ["DELETE", "/?intelligent-tiering", 204] }, + () => DeleteBucketIntelligentTieringConfigurationRequest$, + () => __Unit + ]; + var DeleteBucketInventoryConfiguration$ = [ + 9, + n05, + _DBIC, + { [_h4]: ["DELETE", "/?inventory", 204] }, + () => DeleteBucketInventoryConfigurationRequest$, + () => __Unit + ]; + var DeleteBucketLifecycle$ = [ + 9, + n05, + _DBL, + { [_h4]: ["DELETE", "/?lifecycle", 204] }, + () => DeleteBucketLifecycleRequest$, + () => __Unit + ]; + var DeleteBucketMetadataConfiguration$ = [ + 9, + n05, + _DBMC, + { [_h4]: ["DELETE", "/?metadataConfiguration", 204] }, + () => DeleteBucketMetadataConfigurationRequest$, + () => __Unit + ]; + var DeleteBucketMetadataTableConfiguration$ = [ + 9, + n05, + _DBMTC, + { [_h4]: ["DELETE", "/?metadataTable", 204] }, + () => DeleteBucketMetadataTableConfigurationRequest$, + () => __Unit + ]; + var DeleteBucketMetricsConfiguration$ = [ + 9, + n05, + _DBMCe, + { [_h4]: ["DELETE", "/?metrics", 204] }, + () => DeleteBucketMetricsConfigurationRequest$, + () => __Unit + ]; + var DeleteBucketOwnershipControls$ = [ + 9, + n05, + _DBOC, + { [_h4]: ["DELETE", "/?ownershipControls", 204] }, + () => DeleteBucketOwnershipControlsRequest$, + () => __Unit + ]; + var DeleteBucketPolicy$ = [ + 9, + n05, + _DBP, + { [_h4]: ["DELETE", "/?policy", 204] }, + () => DeleteBucketPolicyRequest$, + () => __Unit + ]; + var DeleteBucketReplication$ = [ + 9, + n05, + _DBRe, + { [_h4]: ["DELETE", "/?replication", 204] }, + () => DeleteBucketReplicationRequest$, + () => __Unit + ]; + var DeleteBucketTagging$ = [ + 9, + n05, + _DBT, + { [_h4]: ["DELETE", "/?tagging", 204] }, + () => DeleteBucketTaggingRequest$, + () => __Unit + ]; + var DeleteBucketWebsite$ = [ + 9, + n05, + _DBW, + { [_h4]: ["DELETE", "/?website", 204] }, + () => DeleteBucketWebsiteRequest$, + () => __Unit + ]; + var DeleteObject$ = [ + 9, + n05, + _DOel, + { [_h4]: ["DELETE", "/{Key+}?x-id=DeleteObject", 204] }, + () => DeleteObjectRequest$, + () => DeleteObjectOutput$ + ]; + var DeleteObjectAnnotation$ = [ + 9, + n05, + _DOA, + { [_h4]: ["DELETE", "/{Key+}?annotation", 204] }, + () => DeleteObjectAnnotationRequest$, + () => DeleteObjectAnnotationOutput$ + ]; + var DeleteObjects$ = [ + 9, + n05, + _DOele, + { [_hC]: "-", [_h4]: ["POST", "/?delete", 200] }, + () => DeleteObjectsRequest$, + () => DeleteObjectsOutput$ + ]; + var DeleteObjectTagging$ = [ + 9, + n05, + _DOT, + { [_h4]: ["DELETE", "/{Key+}?tagging", 204] }, + () => DeleteObjectTaggingRequest$, + () => DeleteObjectTaggingOutput$ + ]; + var DeletePublicAccessBlock$ = [ + 9, + n05, + _DPAB, + { [_h4]: ["DELETE", "/?publicAccessBlock", 204] }, + () => DeletePublicAccessBlockRequest$, + () => __Unit + ]; + var GetBucketAbac$ = [ + 9, + n05, + _GBA, + { [_h4]: ["GET", "/?abac", 200] }, + () => GetBucketAbacRequest$, + () => GetBucketAbacOutput$ + ]; + var GetBucketAccelerateConfiguration$ = [ + 9, + n05, + _GBAC, + { [_h4]: ["GET", "/?accelerate", 200] }, + () => GetBucketAccelerateConfigurationRequest$, + () => GetBucketAccelerateConfigurationOutput$ + ]; + var GetBucketAcl$ = [ + 9, + n05, + _GBAe, + { [_h4]: ["GET", "/?acl", 200] }, + () => GetBucketAclRequest$, + () => GetBucketAclOutput$ + ]; + var GetBucketAnalyticsConfiguration$ = [ + 9, + n05, + _GBACe, + { [_h4]: ["GET", "/?analytics&x-id=GetBucketAnalyticsConfiguration", 200] }, + () => GetBucketAnalyticsConfigurationRequest$, + () => GetBucketAnalyticsConfigurationOutput$ + ]; + var GetBucketCors$ = [ + 9, + n05, + _GBC, + { [_h4]: ["GET", "/?cors", 200] }, + () => GetBucketCorsRequest$, + () => GetBucketCorsOutput$ + ]; + var GetBucketEncryption$ = [ + 9, + n05, + _GBE, + { [_h4]: ["GET", "/?encryption", 200] }, + () => GetBucketEncryptionRequest$, + () => GetBucketEncryptionOutput$ + ]; + var GetBucketIntelligentTieringConfiguration$ = [ + 9, + n05, + _GBITC, + { [_h4]: ["GET", "/?intelligent-tiering&x-id=GetBucketIntelligentTieringConfiguration", 200] }, + () => GetBucketIntelligentTieringConfigurationRequest$, + () => GetBucketIntelligentTieringConfigurationOutput$ + ]; + var GetBucketInventoryConfiguration$ = [ + 9, + n05, + _GBIC, + { [_h4]: ["GET", "/?inventory&x-id=GetBucketInventoryConfiguration", 200] }, + () => GetBucketInventoryConfigurationRequest$, + () => GetBucketInventoryConfigurationOutput$ + ]; + var GetBucketLifecycleConfiguration$ = [ + 9, + n05, + _GBLC, + { [_h4]: ["GET", "/?lifecycle", 200] }, + () => GetBucketLifecycleConfigurationRequest$, + () => GetBucketLifecycleConfigurationOutput$ + ]; + var GetBucketLocation$ = [ + 9, + n05, + _GBL, + { [_h4]: ["GET", "/?location", 200] }, + () => GetBucketLocationRequest$, + () => GetBucketLocationOutput$ + ]; + var GetBucketLogging$ = [ + 9, + n05, + _GBLe, + { [_h4]: ["GET", "/?logging", 200] }, + () => GetBucketLoggingRequest$, + () => GetBucketLoggingOutput$ + ]; + var GetBucketMetadataConfiguration$ = [ + 9, + n05, + _GBMC, + { [_h4]: ["GET", "/?metadataConfiguration", 200] }, + () => GetBucketMetadataConfigurationRequest$, + () => GetBucketMetadataConfigurationOutput$ + ]; + var GetBucketMetadataTableConfiguration$ = [ + 9, + n05, + _GBMTC, + { [_h4]: ["GET", "/?metadataTable", 200] }, + () => GetBucketMetadataTableConfigurationRequest$, + () => GetBucketMetadataTableConfigurationOutput$ + ]; + var GetBucketMetricsConfiguration$ = [ + 9, + n05, + _GBMCe, + { [_h4]: ["GET", "/?metrics&x-id=GetBucketMetricsConfiguration", 200] }, + () => GetBucketMetricsConfigurationRequest$, + () => GetBucketMetricsConfigurationOutput$ + ]; + var GetBucketNotificationConfiguration$ = [ + 9, + n05, + _GBNC, + { [_h4]: ["GET", "/?notification", 200] }, + () => GetBucketNotificationConfigurationRequest$, + () => NotificationConfiguration$ + ]; + var GetBucketOwnershipControls$ = [ + 9, + n05, + _GBOC, + { [_h4]: ["GET", "/?ownershipControls", 200] }, + () => GetBucketOwnershipControlsRequest$, + () => GetBucketOwnershipControlsOutput$ + ]; + var GetBucketPolicy$ = [ + 9, + n05, + _GBP, + { [_h4]: ["GET", "/?policy", 200] }, + () => GetBucketPolicyRequest$, + () => GetBucketPolicyOutput$ + ]; + var GetBucketPolicyStatus$ = [ + 9, + n05, + _GBPS, + { [_h4]: ["GET", "/?policyStatus", 200] }, + () => GetBucketPolicyStatusRequest$, + () => GetBucketPolicyStatusOutput$ + ]; + var GetBucketReplication$ = [ + 9, + n05, + _GBR, + { [_h4]: ["GET", "/?replication", 200] }, + () => GetBucketReplicationRequest$, + () => GetBucketReplicationOutput$ + ]; + var GetBucketRequestPayment$ = [ + 9, + n05, + _GBRP, + { [_h4]: ["GET", "/?requestPayment", 200] }, + () => GetBucketRequestPaymentRequest$, + () => GetBucketRequestPaymentOutput$ + ]; + var GetBucketTagging$ = [ + 9, + n05, + _GBT, + { [_h4]: ["GET", "/?tagging", 200] }, + () => GetBucketTaggingRequest$, + () => GetBucketTaggingOutput$ + ]; + var GetBucketVersioning$ = [ + 9, + n05, + _GBV, + { [_h4]: ["GET", "/?versioning", 200] }, + () => GetBucketVersioningRequest$, + () => GetBucketVersioningOutput$ + ]; + var GetBucketWebsite$ = [ + 9, + n05, + _GBW, + { [_h4]: ["GET", "/?website", 200] }, + () => GetBucketWebsiteRequest$, + () => GetBucketWebsiteOutput$ + ]; + var GetObject$ = [ + 9, + n05, + _GO, + { [_hC]: "-", [_h4]: ["GET", "/{Key+}?x-id=GetObject", 200] }, + () => GetObjectRequest$, + () => GetObjectOutput$ + ]; + var GetObjectAcl$ = [ + 9, + n05, + _GOA, + { [_h4]: ["GET", "/{Key+}?acl", 200] }, + () => GetObjectAclRequest$, + () => GetObjectAclOutput$ + ]; + var GetObjectAnnotation$ = [ + 9, + n05, + _GOAe, + { [_hC]: "-", [_h4]: ["GET", "/{Key+}?annotation&x-id=GetObjectAnnotation", 200] }, + () => GetObjectAnnotationRequest$, + () => GetObjectAnnotationOutput$ + ]; + var GetObjectAttributes$ = [ + 9, + n05, + _GOAet, + { [_h4]: ["GET", "/{Key+}?attributes", 200] }, + () => GetObjectAttributesRequest$, + () => GetObjectAttributesOutput$ + ]; + var GetObjectLegalHold$ = [ + 9, + n05, + _GOLH, + { [_h4]: ["GET", "/{Key+}?legal-hold", 200] }, + () => GetObjectLegalHoldRequest$, + () => GetObjectLegalHoldOutput$ + ]; + var GetObjectLockConfiguration$ = [ + 9, + n05, + _GOLC, + { [_h4]: ["GET", "/?object-lock", 200] }, + () => GetObjectLockConfigurationRequest$, + () => GetObjectLockConfigurationOutput$ + ]; + var GetObjectRetention$ = [ + 9, + n05, + _GORe, + { [_h4]: ["GET", "/{Key+}?retention", 200] }, + () => GetObjectRetentionRequest$, + () => GetObjectRetentionOutput$ + ]; + var GetObjectTagging$ = [ + 9, + n05, + _GOT, + { [_h4]: ["GET", "/{Key+}?tagging", 200] }, + () => GetObjectTaggingRequest$, + () => GetObjectTaggingOutput$ + ]; + var GetObjectTorrent$ = [ + 9, + n05, + _GOTe, + { [_h4]: ["GET", "/{Key+}?torrent", 200] }, + () => GetObjectTorrentRequest$, + () => GetObjectTorrentOutput$ + ]; + var GetPublicAccessBlock$ = [ + 9, + n05, + _GPAB, + { [_h4]: ["GET", "/?publicAccessBlock", 200] }, + () => GetPublicAccessBlockRequest$, + () => GetPublicAccessBlockOutput$ + ]; + var HeadBucket$ = [ + 9, + n05, + _HB, + { [_h4]: ["HEAD", "/", 200] }, + () => HeadBucketRequest$, + () => HeadBucketOutput$ + ]; + var HeadObject$ = [ + 9, + n05, + _HO, + { [_h4]: ["HEAD", "/{Key+}", 200] }, + () => HeadObjectRequest$, + () => HeadObjectOutput$ + ]; + var ListBucketAnalyticsConfigurations$ = [ + 9, + n05, + _LBAC, + { [_h4]: ["GET", "/?analytics&x-id=ListBucketAnalyticsConfigurations", 200] }, + () => ListBucketAnalyticsConfigurationsRequest$, + () => ListBucketAnalyticsConfigurationsOutput$ + ]; + var ListBucketIntelligentTieringConfigurations$ = [ + 9, + n05, + _LBITC, + { [_h4]: ["GET", "/?intelligent-tiering&x-id=ListBucketIntelligentTieringConfigurations", 200] }, + () => ListBucketIntelligentTieringConfigurationsRequest$, + () => ListBucketIntelligentTieringConfigurationsOutput$ + ]; + var ListBucketInventoryConfigurations$ = [ + 9, + n05, + _LBIC, + { [_h4]: ["GET", "/?inventory&x-id=ListBucketInventoryConfigurations", 200] }, + () => ListBucketInventoryConfigurationsRequest$, + () => ListBucketInventoryConfigurationsOutput$ + ]; + var ListBucketMetricsConfigurations$ = [ + 9, + n05, + _LBMC, + { [_h4]: ["GET", "/?metrics&x-id=ListBucketMetricsConfigurations", 200] }, + () => ListBucketMetricsConfigurationsRequest$, + () => ListBucketMetricsConfigurationsOutput$ + ]; + var ListBuckets$ = [ + 9, + n05, + _LB, + { [_h4]: ["GET", "/?x-id=ListBuckets", 200] }, + () => ListBucketsRequest$, + () => ListBucketsOutput$ + ]; + var ListDirectoryBuckets$ = [ + 9, + n05, + _LDB, + { [_h4]: ["GET", "/?x-id=ListDirectoryBuckets", 200] }, + () => ListDirectoryBucketsRequest$, + () => ListDirectoryBucketsOutput$ + ]; + var ListMultipartUploads$ = [ + 9, + n05, + _LMU, + { [_h4]: ["GET", "/?uploads", 200] }, + () => ListMultipartUploadsRequest$, + () => ListMultipartUploadsOutput$ + ]; + var ListObjectAnnotations$ = [ + 9, + n05, + _LOA, + { [_h4]: ["GET", "/{Key+}?annotation&x-id=ListObjectAnnotations", 200] }, + () => ListObjectAnnotationsRequest$, + () => ListObjectAnnotationsOutput$ + ]; + var ListObjects$ = [ + 9, + n05, + _LO, + { [_h4]: ["GET", "/", 200] }, + () => ListObjectsRequest$, + () => ListObjectsOutput$ + ]; + var ListObjectsV2$ = [ + 9, + n05, + _LOV, + { [_h4]: ["GET", "/?list-type=2", 200] }, + () => ListObjectsV2Request$, + () => ListObjectsV2Output$ + ]; + var ListObjectVersions$ = [ + 9, + n05, + _LOVi, + { [_h4]: ["GET", "/?versions", 200] }, + () => ListObjectVersionsRequest$, + () => ListObjectVersionsOutput$ + ]; + var ListParts$ = [ + 9, + n05, + _LP, + { [_h4]: ["GET", "/{Key+}?x-id=ListParts", 200] }, + () => ListPartsRequest$, + () => ListPartsOutput$ + ]; + var PutBucketAbac$ = [ + 9, + n05, + _PBA, + { [_hC]: "-", [_h4]: ["PUT", "/?abac", 200] }, + () => PutBucketAbacRequest$, + () => __Unit + ]; + var PutBucketAccelerateConfiguration$ = [ + 9, + n05, + _PBAC, + { [_hC]: "-", [_h4]: ["PUT", "/?accelerate", 200] }, + () => PutBucketAccelerateConfigurationRequest$, + () => __Unit + ]; + var PutBucketAcl$ = [ + 9, + n05, + _PBAu, + { [_hC]: "-", [_h4]: ["PUT", "/?acl", 200] }, + () => PutBucketAclRequest$, + () => __Unit + ]; + var PutBucketAnalyticsConfiguration$ = [ + 9, + n05, + _PBACu, + { [_h4]: ["PUT", "/?analytics", 200] }, + () => PutBucketAnalyticsConfigurationRequest$, + () => __Unit + ]; + var PutBucketCors$ = [ + 9, + n05, + _PBC, + { [_hC]: "-", [_h4]: ["PUT", "/?cors", 200] }, + () => PutBucketCorsRequest$, + () => __Unit + ]; + var PutBucketEncryption$ = [ + 9, + n05, + _PBE, + { [_hC]: "-", [_h4]: ["PUT", "/?encryption", 200] }, + () => PutBucketEncryptionRequest$, + () => __Unit + ]; + var PutBucketIntelligentTieringConfiguration$ = [ + 9, + n05, + _PBITC, + { [_h4]: ["PUT", "/?intelligent-tiering", 200] }, + () => PutBucketIntelligentTieringConfigurationRequest$, + () => __Unit + ]; + var PutBucketInventoryConfiguration$ = [ + 9, + n05, + _PBIC, + { [_h4]: ["PUT", "/?inventory", 200] }, + () => PutBucketInventoryConfigurationRequest$, + () => __Unit + ]; + var PutBucketLifecycleConfiguration$ = [ + 9, + n05, + _PBLC, + { [_hC]: "-", [_h4]: ["PUT", "/?lifecycle", 200] }, + () => PutBucketLifecycleConfigurationRequest$, + () => PutBucketLifecycleConfigurationOutput$ + ]; + var PutBucketLogging$ = [ + 9, + n05, + _PBL, + { [_hC]: "-", [_h4]: ["PUT", "/?logging", 200] }, + () => PutBucketLoggingRequest$, + () => __Unit + ]; + var PutBucketMetricsConfiguration$ = [ + 9, + n05, + _PBMC, + { [_h4]: ["PUT", "/?metrics", 200] }, + () => PutBucketMetricsConfigurationRequest$, + () => __Unit + ]; + var PutBucketNotificationConfiguration$ = [ + 9, + n05, + _PBNC, + { [_h4]: ["PUT", "/?notification", 200] }, + () => PutBucketNotificationConfigurationRequest$, + () => __Unit + ]; + var PutBucketOwnershipControls$ = [ + 9, + n05, + _PBOC, + { [_hC]: "-", [_h4]: ["PUT", "/?ownershipControls", 200] }, + () => PutBucketOwnershipControlsRequest$, + () => __Unit + ]; + var PutBucketPolicy$ = [ + 9, + n05, + _PBP, + { [_hC]: "-", [_h4]: ["PUT", "/?policy", 200] }, + () => PutBucketPolicyRequest$, + () => __Unit + ]; + var PutBucketReplication$ = [ + 9, + n05, + _PBR, + { [_hC]: "-", [_h4]: ["PUT", "/?replication", 200] }, + () => PutBucketReplicationRequest$, + () => __Unit + ]; + var PutBucketRequestPayment$ = [ + 9, + n05, + _PBRP, + { [_hC]: "-", [_h4]: ["PUT", "/?requestPayment", 200] }, + () => PutBucketRequestPaymentRequest$, + () => __Unit + ]; + var PutBucketTagging$ = [ + 9, + n05, + _PBT, + { [_hC]: "-", [_h4]: ["PUT", "/?tagging", 200] }, + () => PutBucketTaggingRequest$, + () => __Unit + ]; + var PutBucketVersioning$ = [ + 9, + n05, + _PBV, + { [_hC]: "-", [_h4]: ["PUT", "/?versioning", 200] }, + () => PutBucketVersioningRequest$, + () => __Unit + ]; + var PutBucketWebsite$ = [ + 9, + n05, + _PBW, + { [_hC]: "-", [_h4]: ["PUT", "/?website", 200] }, + () => PutBucketWebsiteRequest$, + () => __Unit + ]; + var PutObject$ = [ + 9, + n05, + _PO, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?x-id=PutObject", 200] }, + () => PutObjectRequest$, + () => PutObjectOutput$ + ]; + var PutObjectAcl$ = [ + 9, + n05, + _POA, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?acl", 200] }, + () => PutObjectAclRequest$, + () => PutObjectAclOutput$ + ]; + var PutObjectAnnotation$ = [ + 9, + n05, + _POAu, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?annotation", 200] }, + () => PutObjectAnnotationRequest$, + () => PutObjectAnnotationOutput$ + ]; + var PutObjectLegalHold$ = [ + 9, + n05, + _POLH, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?legal-hold", 200] }, + () => PutObjectLegalHoldRequest$, + () => PutObjectLegalHoldOutput$ + ]; + var PutObjectLockConfiguration$ = [ + 9, + n05, + _POLC, + { [_hC]: "-", [_h4]: ["PUT", "/?object-lock", 200] }, + () => PutObjectLockConfigurationRequest$, + () => PutObjectLockConfigurationOutput$ + ]; + var PutObjectRetention$ = [ + 9, + n05, + _PORu, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?retention", 200] }, + () => PutObjectRetentionRequest$, + () => PutObjectRetentionOutput$ + ]; + var PutObjectTagging$ = [ + 9, + n05, + _POT, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?tagging", 200] }, + () => PutObjectTaggingRequest$, + () => PutObjectTaggingOutput$ + ]; + var PutPublicAccessBlock$ = [ + 9, + n05, + _PPAB, + { [_hC]: "-", [_h4]: ["PUT", "/?publicAccessBlock", 200] }, + () => PutPublicAccessBlockRequest$, + () => __Unit + ]; + var RenameObject$ = [ + 9, + n05, + _RO, + { [_h4]: ["PUT", "/{Key+}?renameObject", 200] }, + () => RenameObjectRequest$, + () => RenameObjectOutput$ + ]; + var RestoreObject$ = [ + 9, + n05, + _ROe, + { [_hC]: "-", [_h4]: ["POST", "/{Key+}?restore", 200] }, + () => RestoreObjectRequest$, + () => RestoreObjectOutput$ + ]; + var SelectObjectContent$ = [ + 9, + n05, + _SOC, + { [_h4]: ["POST", "/{Key+}?select&select-type=2", 200] }, + () => SelectObjectContentRequest$, + () => SelectObjectContentOutput$ + ]; + var UpdateBucketMetadataAnnotationTableConfiguration$ = [ + 9, + n05, + _UBMATC, + { [_hC]: "-", [_h4]: ["PUT", "/?metadataAnnotationTable", 200] }, + () => UpdateBucketMetadataAnnotationTableConfigurationRequest$, + () => __Unit + ]; + var UpdateBucketMetadataInventoryTableConfiguration$ = [ + 9, + n05, + _UBMITC, + { [_hC]: "-", [_h4]: ["PUT", "/?metadataInventoryTable", 200] }, + () => UpdateBucketMetadataInventoryTableConfigurationRequest$, + () => __Unit + ]; + var UpdateBucketMetadataJournalTableConfiguration$ = [ + 9, + n05, + _UBMJTC, + { [_hC]: "-", [_h4]: ["PUT", "/?metadataJournalTable", 200] }, + () => UpdateBucketMetadataJournalTableConfigurationRequest$, + () => __Unit + ]; + var UpdateObjectEncryption$ = [ + 9, + n05, + _UOE, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?encryption", 200] }, + () => UpdateObjectEncryptionRequest$, + () => UpdateObjectEncryptionResponse$ + ]; + var UploadPart$ = [ + 9, + n05, + _UP, + { [_hC]: "-", [_h4]: ["PUT", "/{Key+}?x-id=UploadPart", 200] }, + () => UploadPartRequest$, + () => UploadPartOutput$ + ]; + var UploadPartCopy$ = [ + 9, + n05, + _UPC, + { [_h4]: ["PUT", "/{Key+}?x-id=UploadPartCopy", 200] }, + () => UploadPartCopyRequest$, + () => UploadPartCopyOutput$ + ]; + var WriteGetObjectResponse$ = [ + 9, + n05, + _WGOR, + { [_en]: ["{RequestRoute}."], [_h4]: ["POST", "/WriteGetObjectResponse", 200] }, + () => WriteGetObjectResponseRequest$, + () => __Unit + ]; + var CreateSessionCommand = class extends command5(_ep4, _mw05, "CreateSession", CreateSession$) { + static { + __name(this, "CreateSessionCommand"); + } + }; + var version2 = "3.1153.0"; + var packageInfo = { + version: version2 + }; + var getRuntimeConfig$1 = /* @__PURE__ */ __name((config3) => { + return { + apiVersion: "2006-03-01", + base64Decoder: config3?.base64Decoder ?? fromBase642, + base64Encoder: config3?.base64Encoder ?? toBase642, + disableHostPrefix: config3?.disableHostPrefix ?? false, + endpointProvider: config3?.endpointProvider ?? defaultEndpointResolver5, + extensions: config3?.extensions ?? [], + getAwsChunkedEncodingStream: config3?.getAwsChunkedEncodingStream ?? getAwsChunkedEncodingStream, + httpAuthSchemeProvider: config3?.httpAuthSchemeProvider ?? defaultS3HttpAuthSchemeProvider, + httpAuthSchemes: config3?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), "identityProvider"), + signer: new AwsSdkSigV4Signer2() + }, + { + schemeId: "aws.auth#sigv4a", + identityProvider: /* @__PURE__ */ __name((ipc) => ipc.getIdentityProvider("aws.auth#sigv4a"), "identityProvider"), + signer: new AwsSdkSigV4ASigner2() + } + ], + logger: config3?.logger ?? new NoOpLogger2(), + md5: config3?.md5 ?? Md5, + protocol: config3?.protocol ?? S3RestXmlProtocol2, + protocolSettings: config3?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.s3", + errorTypeRegistries: errorTypeRegistries5, + xmlNamespace: "http://s3.amazonaws.com/doc/2006-03-01/", + version: "2006-03-01", + serviceTarget: "AmazonS3" + }, + sdkStreamMixin: config3?.sdkStreamMixin ?? sdkStreamMixin2, + serviceId: config3?.serviceId ?? "S3", + sha1: config3?.sha1 ?? Sha1, + sha256: config3?.sha256 ?? Sha256, + signerConstructor: config3?.signerConstructor ?? SignatureV4MultiRegion3, + signingEscapePath: config3?.signingEscapePath ?? false, + urlParser: config3?.urlParser ?? parseUrl2, + useArnRegion: config3?.useArnRegion ?? void 0, + utf8Decoder: config3?.utf8Decoder ?? fromUtf82, + utf8Encoder: config3?.utf8Encoder ?? toUtf82 + }; + }, "getRuntimeConfig$1"); + var getRuntimeConfig9 = /* @__PURE__ */ __name((config3) => { + emitWarningIfUnsupportedVersion3(process.version); + const defaultsMode = resolveDefaultsModeConfig2(config3); + const defaultConfigProvider = /* @__PURE__ */ __name(() => defaultsMode().then(loadConfigsForDefaultMode2), "defaultConfigProvider"); + const clientSharedValues = getRuntimeConfig$1(config3); + emitWarningIfUnsupportedVersion$1(process.version); + const loaderConfig = { + profile: config3?.profile, + logger: clientSharedValues.logger + }; + return { + ...clientSharedValues, + ...config3, + runtime: "node", + defaultsMode, + authSchemePreference: config3?.authSchemePreference ?? loadConfig2(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS2, loaderConfig), + bodyLengthChecker: config3?.bodyLengthChecker ?? calculateBodyLength2, + credentialDefaultProvider: config3?.credentialDefaultProvider ?? defaultProvider, + defaultUserAgentProvider: config3?.defaultUserAgentProvider ?? createDefaultUserAgentProvider2({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + disableS3ExpressSessionAuth: config3?.disableS3ExpressSessionAuth ?? loadConfig2(NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS2, loaderConfig), + eventStreamSerdeProvider: config3?.eventStreamSerdeProvider ?? eventStreamSerdeProvider, + maxAttempts: config3?.maxAttempts ?? loadConfig2(NODE_MAX_ATTEMPT_CONFIG_OPTIONS2, config3), + region: config3?.region ?? loadConfig2(NODE_REGION_CONFIG_OPTIONS2, { ...NODE_REGION_CONFIG_FILE_OPTIONS2, ...loaderConfig }), + requestChecksumCalculation: config3?.requestChecksumCalculation ?? loadConfig2(NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS2, loaderConfig), + requestHandler: NodeHttpHandler.create(config3?.requestHandler ?? defaultConfigProvider), + responseChecksumValidation: config3?.responseChecksumValidation ?? loadConfig2(NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS2, loaderConfig), + retryMode: config3?.retryMode ?? loadConfig2({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS2, + default: /* @__PURE__ */ __name(async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE2, "default") + }, config3), + sigv4aSigningRegionSet: config3?.sigv4aSigningRegionSet ?? loadConfig2(NODE_SIGV4A_CONFIG_OPTIONS2, loaderConfig), + streamCollector: config3?.streamCollector ?? streamCollector5, + streamHasher: config3?.streamHasher ?? readableStreamHasher, + useArnRegion: config3?.useArnRegion ?? loadConfig2(NODE_USE_ARN_REGION_CONFIG_OPTIONS2, loaderConfig), + useDualstackEndpoint: config3?.useDualstackEndpoint ?? loadConfig2(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS2, loaderConfig), + useFipsEndpoint: config3?.useFipsEndpoint ?? loadConfig2(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS2, loaderConfig), + userAgentAppId: config3?.userAgentAppId ?? loadConfig2(NODE_APP_ID_CONFIG_OPTIONS2, loaderConfig) + }; + }, "getRuntimeConfig"); + var getHttpAuthExtensionConfiguration5 = /* @__PURE__ */ __name((runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + } + }; + }, "getHttpAuthExtensionConfiguration"); + var resolveHttpAuthRuntimeConfig5 = /* @__PURE__ */ __name((config3) => { + return { + httpAuthSchemes: config3.httpAuthSchemes(), + httpAuthSchemeProvider: config3.httpAuthSchemeProvider(), + credentials: config3.credentials() + }; + }, "resolveHttpAuthRuntimeConfig"); + var resolveRuntimeExtensions5 = /* @__PURE__ */ __name((runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration2(runtimeConfig), getDefaultExtensionConfiguration2(runtimeConfig), getHttpHandlerExtensionConfiguration2(runtimeConfig), getHttpAuthExtensionConfiguration5(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration2(extensionConfiguration), resolveDefaultRuntimeConfig2(extensionConfiguration), resolveHttpHandlerRuntimeConfig2(extensionConfiguration), resolveHttpAuthRuntimeConfig5(extensionConfiguration)); + }, "resolveRuntimeExtensions"); + var S3Client2 = class extends Client2 { + static { + __name(this, "S3Client"); + } + config; + constructor(...[configuration]) { + const _config_0 = getRuntimeConfig9(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters5(_config_0); + const _config_2 = resolveUserAgentConfig2(_config_1); + const _config_3 = resolveFlexibleChecksumsConfig2(_config_2); + const _config_4 = resolveRetryConfig2(_config_3); + const _config_5 = resolveRegionConfig2(_config_4); + const _config_6 = resolveHostHeaderConfig2(_config_5); + const _config_7 = resolveEndpointConfig2(_config_6); + const _config_8 = resolveEventStreamSerdeConfig(_config_7); + const _config_9 = resolveHttpAuthSchemeConfig5(_config_8); + const _config_10 = resolveS3Config2(_config_9, { session: [() => this, CreateSessionCommand] }); + const _config_11 = resolveRuntimeExtensions5(_config_10, configuration?.extensions || []); + this.config = _config_11; + this.middlewareStack.use(getSchemaSerdePlugin2(this.config)); + this.middlewareStack.use(getUserAgentPlugin2(this.config)); + this.middlewareStack.use(getRetryPlugin2(this.config)); + this.middlewareStack.use(getContentLengthPlugin2(this.config)); + this.middlewareStack.use(getHostHeaderPlugin2(this.config)); + this.middlewareStack.use(getLoggerPlugin2(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin2(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin2(this.config, { + httpAuthSchemeParametersProvider: defaultS3HttpAuthSchemeParametersProvider, + identityProviderConfigProvider: /* @__PURE__ */ __name(async (config3) => new DefaultIdentityProviderConfig2({ + "aws.auth#sigv4": config3.credentials, + "aws.auth#sigv4a": config3.credentials + }), "identityProviderConfigProvider") + })); + this.middlewareStack.use(getHttpSigningPlugin2(this.config)); + this.middlewareStack.use(getValidateBucketNamePlugin2(this.config)); + this.middlewareStack.use(getAddExpectContinuePlugin2(this.config)); + this.middlewareStack.use(getRegionRedirectMiddlewarePlugin2(this.config)); + this.middlewareStack.use(getS3ExpressPlugin2(this.config)); + this.middlewareStack.use(getS3ExpressHttpSigningPlugin2(this.config)); + } + destroy() { + super.destroy(); + } + }; + var AbortMultipartUploadCommand = class extends command5(_ep05, _mw05, "AbortMultipartUpload", AbortMultipartUpload$) { + static { + __name(this, "AbortMultipartUploadCommand"); + } + }; + var CompleteMultipartUploadCommand = class extends command5(_ep05, _mw1, "CompleteMultipartUpload", CompleteMultipartUpload$) { + static { + __name(this, "CompleteMultipartUploadCommand"); + } + }; + var CopyObjectCommand = class extends command5(_ep12, _mw1, "CopyObject", CopyObject$) { + static { + __name(this, "CopyObjectCommand"); + } + }; + var CreateBucketCommand2 = class extends command5(_ep2, _mw2, "CreateBucket", CreateBucket$) { + static { + __name(this, "CreateBucketCommand"); + } + }; + var CreateBucketMetadataConfigurationCommand = class extends command5(_ep3, _mw3, "CreateBucketMetadataConfiguration", CreateBucketMetadataConfiguration$) { + static { + __name(this, "CreateBucketMetadataConfigurationCommand"); + } + }; + var CreateBucketMetadataTableConfigurationCommand = class extends command5(_ep3, _mw3, "CreateBucketMetadataTableConfiguration", CreateBucketMetadataTableConfiguration$) { + static { + __name(this, "CreateBucketMetadataTableConfigurationCommand"); + } + }; + var CreateMultipartUploadCommand = class extends command5(_ep05, _mw1, "CreateMultipartUpload", CreateMultipartUpload$) { + static { + __name(this, "CreateMultipartUploadCommand"); + } + }; + var DeleteBucketAnalyticsConfigurationCommand = class extends command5(_ep3, _mw4, "DeleteBucketAnalyticsConfiguration", DeleteBucketAnalyticsConfiguration$) { + static { + __name(this, "DeleteBucketAnalyticsConfigurationCommand"); + } + }; + var DeleteBucketCommand = class extends command5(_ep3, _mw4, "DeleteBucket", DeleteBucket$) { + static { + __name(this, "DeleteBucketCommand"); + } + }; + var DeleteBucketCorsCommand = class extends command5(_ep3, _mw4, "DeleteBucketCors", DeleteBucketCors$) { + static { + __name(this, "DeleteBucketCorsCommand"); + } + }; + var DeleteBucketEncryptionCommand = class extends command5(_ep3, _mw4, "DeleteBucketEncryption", DeleteBucketEncryption$) { + static { + __name(this, "DeleteBucketEncryptionCommand"); + } + }; + var DeleteBucketIntelligentTieringConfigurationCommand = class extends command5(_ep3, _mw4, "DeleteBucketIntelligentTieringConfiguration", DeleteBucketIntelligentTieringConfiguration$) { + static { + __name(this, "DeleteBucketIntelligentTieringConfigurationCommand"); + } + }; + var DeleteBucketInventoryConfigurationCommand = class extends command5(_ep3, _mw4, "DeleteBucketInventoryConfiguration", DeleteBucketInventoryConfiguration$) { + static { + __name(this, "DeleteBucketInventoryConfigurationCommand"); + } + }; + var DeleteBucketLifecycleCommand = class extends command5(_ep3, _mw4, "DeleteBucketLifecycle", DeleteBucketLifecycle$) { + static { + __name(this, "DeleteBucketLifecycleCommand"); + } + }; + var DeleteBucketMetadataConfigurationCommand = class extends command5(_ep3, _mw4, "DeleteBucketMetadataConfiguration", DeleteBucketMetadataConfiguration$) { + static { + __name(this, "DeleteBucketMetadataConfigurationCommand"); + } + }; + var DeleteBucketMetadataTableConfigurationCommand = class extends command5(_ep3, _mw4, "DeleteBucketMetadataTableConfiguration", DeleteBucketMetadataTableConfiguration$) { + static { + __name(this, "DeleteBucketMetadataTableConfigurationCommand"); + } + }; + var DeleteBucketMetricsConfigurationCommand = class extends command5(_ep3, _mw4, "DeleteBucketMetricsConfiguration", DeleteBucketMetricsConfiguration$) { + static { + __name(this, "DeleteBucketMetricsConfigurationCommand"); + } + }; + var DeleteBucketOwnershipControlsCommand = class extends command5(_ep3, _mw4, "DeleteBucketOwnershipControls", DeleteBucketOwnershipControls$) { + static { + __name(this, "DeleteBucketOwnershipControlsCommand"); + } + }; + var DeleteBucketPolicyCommand = class extends command5(_ep3, _mw4, "DeleteBucketPolicy", DeleteBucketPolicy$) { + static { + __name(this, "DeleteBucketPolicyCommand"); + } + }; + var DeleteBucketReplicationCommand = class extends command5(_ep3, _mw4, "DeleteBucketReplication", DeleteBucketReplication$) { + static { + __name(this, "DeleteBucketReplicationCommand"); + } + }; + var DeleteBucketTaggingCommand = class extends command5(_ep3, _mw4, "DeleteBucketTagging", DeleteBucketTagging$) { + static { + __name(this, "DeleteBucketTaggingCommand"); + } + }; + var DeleteBucketWebsiteCommand = class extends command5(_ep3, _mw4, "DeleteBucketWebsite", DeleteBucketWebsite$) { + static { + __name(this, "DeleteBucketWebsiteCommand"); + } + }; + var DeleteObjectAnnotationCommand = class extends command5(_ep5, _mw05, "DeleteObjectAnnotation", DeleteObjectAnnotation$) { + static { + __name(this, "DeleteObjectAnnotationCommand"); + } + }; + var DeleteObjectCommand2 = class extends command5(_ep05, _mw05, "DeleteObject", DeleteObject$) { + static { + __name(this, "DeleteObjectCommand"); + } + }; + var DeleteObjectsCommand = class extends command5(_ep5, _mw5, "DeleteObjects", DeleteObjects$) { + static { + __name(this, "DeleteObjectsCommand"); + } + }; + var DeleteObjectTaggingCommand = class extends command5(_ep5, _mw05, "DeleteObjectTagging", DeleteObjectTagging$) { + static { + __name(this, "DeleteObjectTaggingCommand"); + } + }; + var DeletePublicAccessBlockCommand = class extends command5(_ep3, _mw4, "DeletePublicAccessBlock", DeletePublicAccessBlock$) { + static { + __name(this, "DeletePublicAccessBlockCommand"); + } + }; + var GetBucketAbacCommand = class extends command5(_ep5, _mw05, "GetBucketAbac", GetBucketAbac$) { + static { + __name(this, "GetBucketAbacCommand"); + } + }; + var GetBucketAccelerateConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketAccelerateConfiguration", GetBucketAccelerateConfiguration$) { + static { + __name(this, "GetBucketAccelerateConfigurationCommand"); + } + }; + var GetBucketAclCommand = class extends command5(_ep3, _mw05, "GetBucketAcl", GetBucketAcl$) { + static { + __name(this, "GetBucketAclCommand"); + } + }; + var GetBucketAnalyticsConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketAnalyticsConfiguration", GetBucketAnalyticsConfiguration$) { + static { + __name(this, "GetBucketAnalyticsConfigurationCommand"); + } + }; + var GetBucketCorsCommand = class extends command5(_ep3, _mw05, "GetBucketCors", GetBucketCors$) { + static { + __name(this, "GetBucketCorsCommand"); + } + }; + var GetBucketEncryptionCommand = class extends command5(_ep3, _mw05, "GetBucketEncryption", GetBucketEncryption$) { + static { + __name(this, "GetBucketEncryptionCommand"); + } + }; + var GetBucketIntelligentTieringConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketIntelligentTieringConfiguration", GetBucketIntelligentTieringConfiguration$) { + static { + __name(this, "GetBucketIntelligentTieringConfigurationCommand"); + } + }; + var GetBucketInventoryConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketInventoryConfiguration", GetBucketInventoryConfiguration$) { + static { + __name(this, "GetBucketInventoryConfigurationCommand"); + } + }; + var GetBucketLifecycleConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketLifecycleConfiguration", GetBucketLifecycleConfiguration$) { + static { + __name(this, "GetBucketLifecycleConfigurationCommand"); + } + }; + var GetBucketLocationCommand = class extends command5(_ep3, _mw05, "GetBucketLocation", GetBucketLocation$) { + static { + __name(this, "GetBucketLocationCommand"); + } + }; + var GetBucketLoggingCommand = class extends command5(_ep3, _mw05, "GetBucketLogging", GetBucketLogging$) { + static { + __name(this, "GetBucketLoggingCommand"); + } + }; + var GetBucketMetadataConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketMetadataConfiguration", GetBucketMetadataConfiguration$) { + static { + __name(this, "GetBucketMetadataConfigurationCommand"); + } + }; + var GetBucketMetadataTableConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketMetadataTableConfiguration", GetBucketMetadataTableConfiguration$) { + static { + __name(this, "GetBucketMetadataTableConfigurationCommand"); + } + }; + var GetBucketMetricsConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketMetricsConfiguration", GetBucketMetricsConfiguration$) { + static { + __name(this, "GetBucketMetricsConfigurationCommand"); + } + }; + var GetBucketNotificationConfigurationCommand = class extends command5(_ep3, _mw05, "GetBucketNotificationConfiguration", GetBucketNotificationConfiguration$) { + static { + __name(this, "GetBucketNotificationConfigurationCommand"); + } + }; + var GetBucketOwnershipControlsCommand = class extends command5(_ep3, _mw05, "GetBucketOwnershipControls", GetBucketOwnershipControls$) { + static { + __name(this, "GetBucketOwnershipControlsCommand"); + } + }; + var GetBucketPolicyCommand = class extends command5(_ep3, _mw4, "GetBucketPolicy", GetBucketPolicy$) { + static { + __name(this, "GetBucketPolicyCommand"); + } + }; + var GetBucketPolicyStatusCommand = class extends command5(_ep3, _mw05, "GetBucketPolicyStatus", GetBucketPolicyStatus$) { + static { + __name(this, "GetBucketPolicyStatusCommand"); + } + }; + var GetBucketReplicationCommand = class extends command5(_ep3, _mw05, "GetBucketReplication", GetBucketReplication$) { + static { + __name(this, "GetBucketReplicationCommand"); + } + }; + var GetBucketRequestPaymentCommand = class extends command5(_ep3, _mw05, "GetBucketRequestPayment", GetBucketRequestPayment$) { + static { + __name(this, "GetBucketRequestPaymentCommand"); + } + }; + var GetBucketTaggingCommand = class extends command5(_ep3, _mw05, "GetBucketTagging", GetBucketTagging$) { + static { + __name(this, "GetBucketTaggingCommand"); + } + }; + var GetBucketVersioningCommand = class extends command5(_ep3, _mw05, "GetBucketVersioning", GetBucketVersioning$) { + static { + __name(this, "GetBucketVersioningCommand"); + } + }; + var GetBucketWebsiteCommand = class extends command5(_ep3, _mw05, "GetBucketWebsite", GetBucketWebsite$) { + static { + __name(this, "GetBucketWebsiteCommand"); + } + }; + var GetObjectAclCommand = class extends command5(_ep05, _mw05, "GetObjectAcl", GetObjectAcl$) { + static { + __name(this, "GetObjectAclCommand"); + } + }; + var GetObjectAnnotationCommand = class extends command5(_ep05, _mw6, "GetObjectAnnotation", GetObjectAnnotation$) { + static { + __name(this, "GetObjectAnnotationCommand"); + } + }; + var GetObjectAttributesCommand = class extends command5(_ep5, _mw1, "GetObjectAttributes", GetObjectAttributes$) { + static { + __name(this, "GetObjectAttributesCommand"); + } + }; + var GetObjectCommand = class extends command5(_ep05, _mw7, "GetObject", GetObject$) { + static { + __name(this, "GetObjectCommand"); + } + }; + var GetObjectLegalHoldCommand = class extends command5(_ep5, _mw05, "GetObjectLegalHold", GetObjectLegalHold$) { + static { + __name(this, "GetObjectLegalHoldCommand"); + } + }; + var GetObjectLockConfigurationCommand = class extends command5(_ep5, _mw05, "GetObjectLockConfiguration", GetObjectLockConfiguration$) { + static { + __name(this, "GetObjectLockConfigurationCommand"); + } + }; + var GetObjectRetentionCommand = class extends command5(_ep5, _mw05, "GetObjectRetention", GetObjectRetention$) { + static { + __name(this, "GetObjectRetentionCommand"); + } + }; + var GetObjectTaggingCommand = class extends command5(_ep5, _mw05, "GetObjectTagging", GetObjectTagging$) { + static { + __name(this, "GetObjectTaggingCommand"); + } + }; + var GetObjectTorrentCommand = class extends command5(_ep5, _mw4, "GetObjectTorrent", GetObjectTorrent$) { + static { + __name(this, "GetObjectTorrentCommand"); + } + }; + var GetPublicAccessBlockCommand = class extends command5(_ep3, _mw05, "GetPublicAccessBlock", GetPublicAccessBlock$) { + static { + __name(this, "GetPublicAccessBlockCommand"); + } + }; + var HeadBucketCommand2 = class extends command5(_ep5, _mw05, "HeadBucket", HeadBucket$) { + static { + __name(this, "HeadBucketCommand"); + } + }; + var HeadObjectCommand = class extends command5(_ep05, _mw8, "HeadObject", HeadObject$) { + static { + __name(this, "HeadObjectCommand"); + } + }; + var ListBucketAnalyticsConfigurationsCommand = class extends command5(_ep3, _mw05, "ListBucketAnalyticsConfigurations", ListBucketAnalyticsConfigurations$) { + static { + __name(this, "ListBucketAnalyticsConfigurationsCommand"); + } + }; + var ListBucketIntelligentTieringConfigurationsCommand = class extends command5(_ep3, _mw05, "ListBucketIntelligentTieringConfigurations", ListBucketIntelligentTieringConfigurations$) { + static { + __name(this, "ListBucketIntelligentTieringConfigurationsCommand"); + } + }; + var ListBucketInventoryConfigurationsCommand = class extends command5(_ep3, _mw05, "ListBucketInventoryConfigurations", ListBucketInventoryConfigurations$) { + static { + __name(this, "ListBucketInventoryConfigurationsCommand"); + } + }; + var ListBucketMetricsConfigurationsCommand = class extends command5(_ep3, _mw05, "ListBucketMetricsConfigurations", ListBucketMetricsConfigurations$) { + static { + __name(this, "ListBucketMetricsConfigurationsCommand"); + } + }; + var ListBucketsCommand = class extends command5(_ep6, _mw05, "ListBuckets", ListBuckets$) { + static { + __name(this, "ListBucketsCommand"); + } + }; + var ListDirectoryBucketsCommand = class extends command5(_ep7, _mw05, "ListDirectoryBuckets", ListDirectoryBuckets$) { + static { + __name(this, "ListDirectoryBucketsCommand"); + } + }; + var ListMultipartUploadsCommand = class extends command5(_ep8, _mw05, "ListMultipartUploads", ListMultipartUploads$) { + static { + __name(this, "ListMultipartUploadsCommand"); + } + }; + var ListObjectAnnotationsCommand = class extends command5(_ep5, _mw05, "ListObjectAnnotations", ListObjectAnnotations$) { + static { + __name(this, "ListObjectAnnotationsCommand"); + } + }; + var ListObjectsCommand = class extends command5(_ep8, _mw05, "ListObjects", ListObjects$) { + static { + __name(this, "ListObjectsCommand"); + } + }; + var ListObjectsV2Command = class extends command5(_ep8, _mw05, "ListObjectsV2", ListObjectsV2$) { + static { + __name(this, "ListObjectsV2Command"); + } + }; + var ListObjectVersionsCommand = class extends command5(_ep8, _mw05, "ListObjectVersions", ListObjectVersions$) { + static { + __name(this, "ListObjectVersionsCommand"); + } + }; + var ListPartsCommand = class extends command5(_ep05, _mw1, "ListParts", ListParts$) { + static { + __name(this, "ListPartsCommand"); + } + }; + var PutBucketAbacCommand = class extends command5(_ep5, _mw9, "PutBucketAbac", PutBucketAbac$) { + static { + __name(this, "PutBucketAbacCommand"); + } + }; + var PutBucketAccelerateConfigurationCommand = class extends command5(_ep3, _mw9, "PutBucketAccelerateConfiguration", PutBucketAccelerateConfiguration$) { + static { + __name(this, "PutBucketAccelerateConfigurationCommand"); + } + }; + var PutBucketAclCommand = class extends command5(_ep3, _mw3, "PutBucketAcl", PutBucketAcl$) { + static { + __name(this, "PutBucketAclCommand"); + } + }; + var PutBucketAnalyticsConfigurationCommand = class extends command5(_ep3, _mw4, "PutBucketAnalyticsConfiguration", PutBucketAnalyticsConfiguration$) { + static { + __name(this, "PutBucketAnalyticsConfigurationCommand"); + } + }; + var PutBucketCorsCommand = class extends command5(_ep3, _mw3, "PutBucketCors", PutBucketCors$) { + static { + __name(this, "PutBucketCorsCommand"); + } + }; + var PutBucketEncryptionCommand = class extends command5(_ep3, _mw3, "PutBucketEncryption", PutBucketEncryption$) { + static { + __name(this, "PutBucketEncryptionCommand"); + } + }; + var PutBucketIntelligentTieringConfigurationCommand = class extends command5(_ep3, _mw4, "PutBucketIntelligentTieringConfiguration", PutBucketIntelligentTieringConfiguration$) { + static { + __name(this, "PutBucketIntelligentTieringConfigurationCommand"); + } + }; + var PutBucketInventoryConfigurationCommand = class extends command5(_ep3, _mw4, "PutBucketInventoryConfiguration", PutBucketInventoryConfiguration$) { + static { + __name(this, "PutBucketInventoryConfigurationCommand"); + } + }; + var PutBucketLifecycleConfigurationCommand = class extends command5(_ep3, _mw5, "PutBucketLifecycleConfiguration", PutBucketLifecycleConfiguration$) { + static { + __name(this, "PutBucketLifecycleConfigurationCommand"); + } + }; + var PutBucketLoggingCommand = class extends command5(_ep3, _mw3, "PutBucketLogging", PutBucketLogging$) { + static { + __name(this, "PutBucketLoggingCommand"); + } + }; + var PutBucketMetricsConfigurationCommand = class extends command5(_ep3, _mw4, "PutBucketMetricsConfiguration", PutBucketMetricsConfiguration$) { + static { + __name(this, "PutBucketMetricsConfigurationCommand"); + } + }; + var PutBucketNotificationConfigurationCommand = class extends command5(_ep3, _mw4, "PutBucketNotificationConfiguration", PutBucketNotificationConfiguration$) { + static { + __name(this, "PutBucketNotificationConfigurationCommand"); + } + }; + var PutBucketOwnershipControlsCommand = class extends command5(_ep3, _mw3, "PutBucketOwnershipControls", PutBucketOwnershipControls$) { + static { + __name(this, "PutBucketOwnershipControlsCommand"); + } + }; + var PutBucketPolicyCommand2 = class extends command5(_ep3, _mw3, "PutBucketPolicy", PutBucketPolicy$) { + static { + __name(this, "PutBucketPolicyCommand"); + } + }; + var PutBucketReplicationCommand = class extends command5(_ep3, _mw3, "PutBucketReplication", PutBucketReplication$) { + static { + __name(this, "PutBucketReplicationCommand"); + } + }; + var PutBucketRequestPaymentCommand = class extends command5(_ep3, _mw3, "PutBucketRequestPayment", PutBucketRequestPayment$) { + static { + __name(this, "PutBucketRequestPaymentCommand"); + } + }; + var PutBucketTaggingCommand = class extends command5(_ep3, _mw3, "PutBucketTagging", PutBucketTagging$) { + static { + __name(this, "PutBucketTaggingCommand"); + } + }; + var PutBucketVersioningCommand = class extends command5(_ep3, _mw3, "PutBucketVersioning", PutBucketVersioning$) { + static { + __name(this, "PutBucketVersioningCommand"); + } + }; + var PutBucketWebsiteCommand = class extends command5(_ep3, _mw3, "PutBucketWebsite", PutBucketWebsite$) { + static { + __name(this, "PutBucketWebsiteCommand"); + } + }; + var PutObjectAclCommand = class extends command5(_ep05, _mw5, "PutObjectAcl", PutObjectAcl$) { + static { + __name(this, "PutObjectAclCommand"); + } + }; + var PutObjectAnnotationCommand = class extends command5(_ep05, _mw10, "PutObjectAnnotation", PutObjectAnnotation$) { + static { + __name(this, "PutObjectAnnotationCommand"); + } + }; + var PutObjectCommand2 = class extends command5(_ep05, _mw11, "PutObject", PutObject$) { + static { + __name(this, "PutObjectCommand"); + } + }; + var PutObjectLegalHoldCommand = class extends command5(_ep5, _mw5, "PutObjectLegalHold", PutObjectLegalHold$) { + static { + __name(this, "PutObjectLegalHoldCommand"); + } + }; + var PutObjectLockConfigurationCommand = class extends command5(_ep5, _mw5, "PutObjectLockConfiguration", PutObjectLockConfiguration$) { + static { + __name(this, "PutObjectLockConfigurationCommand"); + } + }; + var PutObjectRetentionCommand = class extends command5(_ep5, _mw5, "PutObjectRetention", PutObjectRetention$) { + static { + __name(this, "PutObjectRetentionCommand"); + } + }; + var PutObjectTaggingCommand = class extends command5(_ep5, _mw5, "PutObjectTagging", PutObjectTagging$) { + static { + __name(this, "PutObjectTaggingCommand"); + } + }; + var PutPublicAccessBlockCommand = class extends command5(_ep3, _mw3, "PutPublicAccessBlock", PutPublicAccessBlock$) { + static { + __name(this, "PutPublicAccessBlockCommand"); + } + }; + var RenameObjectCommand = class extends command5(_ep05, _mw05, "RenameObject", RenameObject$) { + static { + __name(this, "RenameObjectCommand"); + } + }; + var RestoreObjectCommand = class extends command5(_ep5, _mw10, "RestoreObject", RestoreObject$) { + static { + __name(this, "RestoreObjectCommand"); + } + }; + var SelectObjectContentCommand = class extends command5(_ep5, _mw12, "SelectObjectContent", SelectObjectContent$) { + static { + __name(this, "SelectObjectContentCommand"); + } + }; + var UpdateBucketMetadataAnnotationTableConfigurationCommand = class extends command5(_ep3, _mw3, "UpdateBucketMetadataAnnotationTableConfiguration", UpdateBucketMetadataAnnotationTableConfiguration$) { + static { + __name(this, "UpdateBucketMetadataAnnotationTableConfigurationCommand"); + } + }; + var UpdateBucketMetadataInventoryTableConfigurationCommand = class extends command5(_ep3, _mw3, "UpdateBucketMetadataInventoryTableConfiguration", UpdateBucketMetadataInventoryTableConfiguration$) { + static { + __name(this, "UpdateBucketMetadataInventoryTableConfigurationCommand"); + } + }; + var UpdateBucketMetadataJournalTableConfigurationCommand = class extends command5(_ep3, _mw3, "UpdateBucketMetadataJournalTableConfiguration", UpdateBucketMetadataJournalTableConfiguration$) { + static { + __name(this, "UpdateBucketMetadataJournalTableConfigurationCommand"); + } + }; + var UpdateObjectEncryptionCommand = class extends command5(_ep5, _mw5, "UpdateObjectEncryption", UpdateObjectEncryption$) { + static { + __name(this, "UpdateObjectEncryptionCommand"); + } + }; + var UploadPartCommand = class extends command5(_ep05, _mw13, "UploadPart", UploadPart$) { + static { + __name(this, "UploadPartCommand"); + } + }; + var UploadPartCopyCommand = class extends command5(_ep4, _mw1, "UploadPartCopy", UploadPartCopy$) { + static { + __name(this, "UploadPartCopyCommand"); + } + }; + var WriteGetObjectResponseCommand = class extends command5(_ep9, _mw4, "WriteGetObjectResponse", WriteGetObjectResponse$) { + static { + __name(this, "WriteGetObjectResponseCommand"); + } + }; + var paginateListBuckets = createPaginator2(S3Client2, ListBucketsCommand, "ContinuationToken", "ContinuationToken", "MaxBuckets"); + var paginateListDirectoryBuckets = createPaginator2(S3Client2, ListDirectoryBucketsCommand, "ContinuationToken", "ContinuationToken", "MaxDirectoryBuckets"); + var paginateListObjectAnnotations = createPaginator2(S3Client2, ListObjectAnnotationsCommand, "ContinuationToken", "NextContinuationToken", "MaxAnnotationResults"); + var paginateListObjectsV2 = createPaginator2(S3Client2, ListObjectsV2Command, "ContinuationToken", "NextContinuationToken", "MaxKeys"); + var paginateListParts = createPaginator2(S3Client2, ListPartsCommand, "PartNumberMarker", "NextPartNumberMarker", "MaxParts"); + var checkState$3 = /* @__PURE__ */ __name(async (client, input2) => { + let reason; + try { + let result = await client.send(new HeadBucketCommand2(input2)); + reason = result; + return { state: WaiterState.SUCCESS, reason }; + } catch (exception) { + reason = exception; + if (exception.name === "NotFound") { + return { state: WaiterState.RETRY, reason }; + } + } + return { state: WaiterState.RETRY, reason }; + }, "checkState$3"); + var waitForBucketExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input2, checkState$3); + }, "waitForBucketExists"); + var waitUntilBucketExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input2, checkState$3); + return checkExceptions(result); + }, "waitUntilBucketExists"); + var checkState$2 = /* @__PURE__ */ __name(async (client, input2) => { + let reason; + try { + let result = await client.send(new HeadBucketCommand2(input2)); + reason = result; + } catch (exception) { + reason = exception; + if (exception.name === "NotFound") { + return { state: WaiterState.SUCCESS, reason }; + } + } + return { state: WaiterState.RETRY, reason }; + }, "checkState$2"); + var waitForBucketNotExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input2, checkState$2); + }, "waitForBucketNotExists"); + var waitUntilBucketNotExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input2, checkState$2); + return checkExceptions(result); + }, "waitUntilBucketNotExists"); + var checkState$1 = /* @__PURE__ */ __name(async (client, input2) => { + let reason; + try { + let result = await client.send(new HeadObjectCommand(input2)); + reason = result; + return { state: WaiterState.SUCCESS, reason }; + } catch (exception) { + reason = exception; + if (exception.name === "NotFound") { + return { state: WaiterState.RETRY, reason }; + } + } + return { state: WaiterState.RETRY, reason }; + }, "checkState$1"); + var waitForObjectExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input2, checkState$1); + }, "waitForObjectExists"); + var waitUntilObjectExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input2, checkState$1); + return checkExceptions(result); + }, "waitUntilObjectExists"); + var checkState = /* @__PURE__ */ __name(async (client, input2) => { + let reason; + try { + let result = await client.send(new HeadObjectCommand(input2)); + reason = result; + } catch (exception) { + reason = exception; + if (exception.name === "NotFound") { + return { state: WaiterState.SUCCESS, reason }; + } + } + return { state: WaiterState.RETRY, reason }; + }, "checkState"); + var waitForObjectNotExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input2, checkState); + }, "waitForObjectNotExists"); + var waitUntilObjectNotExists = /* @__PURE__ */ __name(async (params, input2) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input2, checkState); + return checkExceptions(result); + }, "waitUntilObjectNotExists"); + var commands5 = { + AbortMultipartUploadCommand, + CompleteMultipartUploadCommand, + CopyObjectCommand, + CreateBucketCommand: CreateBucketCommand2, + CreateBucketMetadataConfigurationCommand, + CreateBucketMetadataTableConfigurationCommand, + CreateMultipartUploadCommand, + CreateSessionCommand, + DeleteBucketCommand, + DeleteBucketAnalyticsConfigurationCommand, + DeleteBucketCorsCommand, + DeleteBucketEncryptionCommand, + DeleteBucketIntelligentTieringConfigurationCommand, + DeleteBucketInventoryConfigurationCommand, + DeleteBucketLifecycleCommand, + DeleteBucketMetadataConfigurationCommand, + DeleteBucketMetadataTableConfigurationCommand, + DeleteBucketMetricsConfigurationCommand, + DeleteBucketOwnershipControlsCommand, + DeleteBucketPolicyCommand, + DeleteBucketReplicationCommand, + DeleteBucketTaggingCommand, + DeleteBucketWebsiteCommand, + DeleteObjectCommand: DeleteObjectCommand2, + DeleteObjectAnnotationCommand, + DeleteObjectsCommand, + DeleteObjectTaggingCommand, + DeletePublicAccessBlockCommand, + GetBucketAbacCommand, + GetBucketAccelerateConfigurationCommand, + GetBucketAclCommand, + GetBucketAnalyticsConfigurationCommand, + GetBucketCorsCommand, + GetBucketEncryptionCommand, + GetBucketIntelligentTieringConfigurationCommand, + GetBucketInventoryConfigurationCommand, + GetBucketLifecycleConfigurationCommand, + GetBucketLocationCommand, + GetBucketLoggingCommand, + GetBucketMetadataConfigurationCommand, + GetBucketMetadataTableConfigurationCommand, + GetBucketMetricsConfigurationCommand, + GetBucketNotificationConfigurationCommand, + GetBucketOwnershipControlsCommand, + GetBucketPolicyCommand, + GetBucketPolicyStatusCommand, + GetBucketReplicationCommand, + GetBucketRequestPaymentCommand, + GetBucketTaggingCommand, + GetBucketVersioningCommand, + GetBucketWebsiteCommand, + GetObjectCommand, + GetObjectAclCommand, + GetObjectAnnotationCommand, + GetObjectAttributesCommand, + GetObjectLegalHoldCommand, + GetObjectLockConfigurationCommand, + GetObjectRetentionCommand, + GetObjectTaggingCommand, + GetObjectTorrentCommand, + GetPublicAccessBlockCommand, + HeadBucketCommand: HeadBucketCommand2, + HeadObjectCommand, + ListBucketAnalyticsConfigurationsCommand, + ListBucketIntelligentTieringConfigurationsCommand, + ListBucketInventoryConfigurationsCommand, + ListBucketMetricsConfigurationsCommand, + ListBucketsCommand, + ListDirectoryBucketsCommand, + ListMultipartUploadsCommand, + ListObjectAnnotationsCommand, + ListObjectsCommand, + ListObjectsV2Command, + ListObjectVersionsCommand, + ListPartsCommand, + PutBucketAbacCommand, + PutBucketAccelerateConfigurationCommand, + PutBucketAclCommand, + PutBucketAnalyticsConfigurationCommand, + PutBucketCorsCommand, + PutBucketEncryptionCommand, + PutBucketIntelligentTieringConfigurationCommand, + PutBucketInventoryConfigurationCommand, + PutBucketLifecycleConfigurationCommand, + PutBucketLoggingCommand, + PutBucketMetricsConfigurationCommand, + PutBucketNotificationConfigurationCommand, + PutBucketOwnershipControlsCommand, + PutBucketPolicyCommand: PutBucketPolicyCommand2, + PutBucketReplicationCommand, + PutBucketRequestPaymentCommand, + PutBucketTaggingCommand, + PutBucketVersioningCommand, + PutBucketWebsiteCommand, + PutObjectCommand: PutObjectCommand2, + PutObjectAclCommand, + PutObjectAnnotationCommand, + PutObjectLegalHoldCommand, + PutObjectLockConfigurationCommand, + PutObjectRetentionCommand, + PutObjectTaggingCommand, + PutPublicAccessBlockCommand, + RenameObjectCommand, + RestoreObjectCommand, + SelectObjectContentCommand, + UpdateBucketMetadataAnnotationTableConfigurationCommand, + UpdateBucketMetadataInventoryTableConfigurationCommand, + UpdateBucketMetadataJournalTableConfigurationCommand, + UpdateObjectEncryptionCommand, + UploadPartCommand, + UploadPartCopyCommand, + WriteGetObjectResponseCommand + }; + var paginators = { + paginateListBuckets, + paginateListDirectoryBuckets, + paginateListObjectAnnotations, + paginateListObjectsV2, + paginateListParts + }; + var waiters = { + waitUntilBucketExists, + waitUntilBucketNotExists, + waitUntilObjectExists, + waitUntilObjectNotExists + }; + var S3 = class extends S3Client2 { + static { + __name(this, "S3"); + } + }; + createAggregatedClient2(commands5, S3, { paginators, waiters }); + var BucketAbacStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var RequestCharged = { + requester: "requester" + }; + var RequestPayer = { + requester: "requester" + }; + var BucketAccelerateStatus = { + Enabled: "Enabled", + Suspended: "Suspended" + }; + var Type = { + AmazonCustomerByEmail: "AmazonCustomerByEmail", + CanonicalUser: "CanonicalUser", + Group: "Group" + }; + var Permission = { + FULL_CONTROL: "FULL_CONTROL", + READ: "READ", + READ_ACP: "READ_ACP", + WRITE: "WRITE", + WRITE_ACP: "WRITE_ACP" + }; + var OwnerOverride = { + Destination: "Destination" + }; + var ChecksumType = { + COMPOSITE: "COMPOSITE", + FULL_OBJECT: "FULL_OBJECT" + }; + var ServerSideEncryption = { + AES256: "AES256", + aws_backup: "aws:backup", + aws_fsx: "aws:fsx", + aws_kms: "aws:kms", + aws_kms_dsse: "aws:kms:dsse" + }; + var ObjectCannedACL = { + authenticated_read: "authenticated-read", + aws_exec_read: "aws-exec-read", + bucket_owner_full_control: "bucket-owner-full-control", + bucket_owner_read: "bucket-owner-read", + private: "private", + public_read: "public-read", + public_read_write: "public-read-write" + }; + var AnnotationDirective = { + COPY: "COPY", + EXCLUDE: "EXCLUDE" + }; + var ChecksumAlgorithm2 = { + CRC32: "CRC32", + CRC32C: "CRC32C", + CRC64NVME: "CRC64NVME", + MD5: "MD5", + SHA1: "SHA1", + SHA256: "SHA256", + SHA512: "SHA512", + XXHASH128: "XXHASH128", + XXHASH3: "XXHASH3", + XXHASH64: "XXHASH64" + }; + var MetadataDirective = { + COPY: "COPY", + REPLACE: "REPLACE" + }; + var ObjectLockEventHold = { + OFF: "OFF", + ON: "ON" + }; + var ObjectLockLegalHoldStatus = { + OFF: "OFF", + ON: "ON" + }; + var ObjectLockMode = { + COMPLIANCE: "COMPLIANCE", + GOVERNANCE: "GOVERNANCE" + }; + var StorageClass = { + AWS_BACKUP_LOW_COST_WARM: "AWS_BACKUP_LOW_COST_WARM", + AWS_BACKUP_WARM: "AWS_BACKUP_WARM", + DEEP_ARCHIVE: "DEEP_ARCHIVE", + EXPRESS_ONEZONE: "EXPRESS_ONEZONE", + FSX_ONTAP: "FSX_ONTAP", + FSX_OPENZFS: "FSX_OPENZFS", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + OUTPOSTS: "OUTPOSTS", + REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY", + SNOW: "SNOW", + STANDARD: "STANDARD", + STANDARD_IA: "STANDARD_IA" + }; + var TaggingDirective = { + COPY: "COPY", + REPLACE: "REPLACE" + }; + var BucketCannedACL = { + authenticated_read: "authenticated-read", + private: "private", + public_read: "public-read", + public_read_write: "public-read-write" + }; + var BucketNamespace = { + ACCOUNT_REGIONAL: "account-regional", + GLOBAL: "global" + }; + var DataRedundancy = { + SingleAvailabilityZone: "SingleAvailabilityZone", + SingleLocalZone: "SingleLocalZone" + }; + var BucketType = { + Directory: "Directory" + }; + var LocationType = { + AvailabilityZone: "AvailabilityZone", + LocalZone: "LocalZone" + }; + var BucketLocationConstraint = { + EU: "EU", + af_south_1: "af-south-1", + ap_east_1: "ap-east-1", + ap_east_2: "ap-east-2", + ap_northeast_1: "ap-northeast-1", + ap_northeast_2: "ap-northeast-2", + ap_northeast_3: "ap-northeast-3", + ap_south_1: "ap-south-1", + ap_south_2: "ap-south-2", + ap_southeast_1: "ap-southeast-1", + ap_southeast_2: "ap-southeast-2", + ap_southeast_3: "ap-southeast-3", + ap_southeast_4: "ap-southeast-4", + ap_southeast_5: "ap-southeast-5", + ap_southeast_6: "ap-southeast-6", + ap_southeast_7: "ap-southeast-7", + ca_central_1: "ca-central-1", + ca_west_1: "ca-west-1", + cn_north_1: "cn-north-1", + cn_northwest_1: "cn-northwest-1", + eu_central_1: "eu-central-1", + eu_central_2: "eu-central-2", + eu_north_1: "eu-north-1", + eu_south_1: "eu-south-1", + eu_south_2: "eu-south-2", + eu_west_1: "eu-west-1", + eu_west_2: "eu-west-2", + eu_west_3: "eu-west-3", + il_central_1: "il-central-1", + me_central_1: "me-central-1", + me_south_1: "me-south-1", + mx_central_1: "mx-central-1", + sa_east_1: "sa-east-1", + us_east_2: "us-east-2", + us_gov_east_1: "us-gov-east-1", + us_gov_west_1: "us-gov-west-1", + us_west_1: "us-west-1", + us_west_2: "us-west-2" + }; + var ObjectOwnership = { + BucketOwnerEnforced: "BucketOwnerEnforced", + BucketOwnerPreferred: "BucketOwnerPreferred", + ObjectWriter: "ObjectWriter" + }; + var AnnotationConfigurationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED" + }; + var TableSseAlgorithm = { + AES256: "AES256", + aws_kms: "aws:kms" + }; + var InventoryConfigurationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED" + }; + var ExpirationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED" + }; + var SessionMode = { + ReadOnly: "ReadOnly", + ReadWrite: "ReadWrite" + }; + var AnalyticsS3ExportFileFormat = { + CSV: "CSV" + }; + var StorageClassAnalysisSchemaVersion = { + V_1: "V_1" + }; + var EncryptionType = { + NONE: "NONE", + SSE_C: "SSE-C" + }; + var IntelligentTieringStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var IntelligentTieringAccessTier = { + ARCHIVE_ACCESS: "ARCHIVE_ACCESS", + DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS" + }; + var InventoryFormat = { + CSV: "CSV", + ORC: "ORC", + Parquet: "Parquet" + }; + var InventoryIncludedObjectVersions = { + All: "All", + Current: "Current" + }; + var InventoryOptionalField = { + BucketKeyStatus: "BucketKeyStatus", + ChecksumAlgorithm: "ChecksumAlgorithm", + ETag: "ETag", + EncryptionStatus: "EncryptionStatus", + IntelligentTieringAccessTier: "IntelligentTieringAccessTier", + IntelligentTieringReferenceDate: "IntelligentTieringReferenceDate", + IsMultipartUploaded: "IsMultipartUploaded", + LastModifiedDate: "LastModifiedDate", + LifecycleExpirationDate: "LifecycleExpirationDate", + ObjectAccessControlList: "ObjectAccessControlList", + ObjectLockEventHoldDuration: "ObjectLockEventHoldDuration", + ObjectLockEventHoldStatus: "ObjectLockEventHoldStatus", + ObjectLockLegalHoldStatus: "ObjectLockLegalHoldStatus", + ObjectLockMode: "ObjectLockMode", + ObjectLockRetainUntilDate: "ObjectLockRetainUntilDate", + ObjectOwner: "ObjectOwner", + ReplicationStatus: "ReplicationStatus", + Size: "Size", + StorageClass: "StorageClass" + }; + var InventoryFrequency = { + Daily: "Daily", + Weekly: "Weekly" + }; + var TransitionStorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + STANDARD_IA: "STANDARD_IA" + }; + var ExpirationStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var TransitionDefaultMinimumObjectSize = { + all_storage_classes_128K: "all_storage_classes_128K", + varies_by_storage_class: "varies_by_storage_class" + }; + var BucketLogsPermission = { + FULL_CONTROL: "FULL_CONTROL", + READ: "READ", + WRITE: "WRITE" + }; + var PartitionDateSource = { + DeliveryTime: "DeliveryTime", + EventTime: "EventTime" + }; + var S3TablesBucketType = { + aws: "aws", + customer: "customer" + }; + var Event = { + s3_IntelligentTiering: "s3:IntelligentTiering", + s3_LifecycleExpiration_: "s3:LifecycleExpiration:*", + s3_LifecycleExpiration_Delete: "s3:LifecycleExpiration:Delete", + s3_LifecycleExpiration_DeleteMarkerCreated: "s3:LifecycleExpiration:DeleteMarkerCreated", + s3_LifecycleTransition: "s3:LifecycleTransition", + s3_ObjectAcl_Put: "s3:ObjectAcl:Put", + s3_ObjectAnnotation_: "s3:ObjectAnnotation:*", + s3_ObjectAnnotation_Delete: "s3:ObjectAnnotation:Delete", + s3_ObjectAnnotation_Put: "s3:ObjectAnnotation:Put", + s3_ObjectCreated_: "s3:ObjectCreated:*", + s3_ObjectCreated_CompleteMultipartUpload: "s3:ObjectCreated:CompleteMultipartUpload", + s3_ObjectCreated_Copy: "s3:ObjectCreated:Copy", + s3_ObjectCreated_Post: "s3:ObjectCreated:Post", + s3_ObjectCreated_Put: "s3:ObjectCreated:Put", + s3_ObjectRemoved_: "s3:ObjectRemoved:*", + s3_ObjectRemoved_Delete: "s3:ObjectRemoved:Delete", + s3_ObjectRemoved_DeleteMarkerCreated: "s3:ObjectRemoved:DeleteMarkerCreated", + s3_ObjectRestore_: "s3:ObjectRestore:*", + s3_ObjectRestore_Completed: "s3:ObjectRestore:Completed", + s3_ObjectRestore_Delete: "s3:ObjectRestore:Delete", + s3_ObjectRestore_Post: "s3:ObjectRestore:Post", + s3_ObjectRetention_Put: "s3:ObjectRetention:Put", + s3_ObjectTagging_: "s3:ObjectTagging:*", + s3_ObjectTagging_Delete: "s3:ObjectTagging:Delete", + s3_ObjectTagging_Put: "s3:ObjectTagging:Put", + s3_ReducedRedundancyLostObject: "s3:ReducedRedundancyLostObject", + s3_Replication_: "s3:Replication:*", + s3_Replication_OperationFailedReplication: "s3:Replication:OperationFailedReplication", + s3_Replication_OperationMissedThreshold: "s3:Replication:OperationMissedThreshold", + s3_Replication_OperationNotTracked: "s3:Replication:OperationNotTracked", + s3_Replication_OperationReplicatedAfterThreshold: "s3:Replication:OperationReplicatedAfterThreshold" + }; + var FilterRuleName = { + prefix: "prefix", + suffix: "suffix" + }; + var DeleteMarkerReplicationStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var MetricsStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var ReplicationTimeStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var ExistingObjectReplicationStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var ReplicaModificationsStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var SseKmsEncryptedObjectsStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var ReplicationRuleStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var Payer = { + BucketOwner: "BucketOwner", + Requester: "Requester" + }; + var MFADeleteStatus = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var BucketVersioningStatus = { + Enabled: "Enabled", + Suspended: "Suspended" + }; + var Protocol = { + http: "http", + https: "https" + }; + var ReplicationStatus = { + COMPLETE: "COMPLETE", + COMPLETED: "COMPLETED", + FAILED: "FAILED", + PENDING: "PENDING", + REPLICA: "REPLICA" + }; + var ChecksumMode = { + ENABLED: "ENABLED" + }; + var ObjectAttributes = { + CHECKSUM: "Checksum", + ETAG: "ETag", + OBJECT_PARTS: "ObjectParts", + OBJECT_SIZE: "ObjectSize", + STORAGE_CLASS: "StorageClass" + }; + var ObjectLockEnabled = { + Enabled: "Enabled" + }; + var ObjectLockRetentionMode = { + COMPLIANCE: "COMPLIANCE", + GOVERNANCE: "GOVERNANCE" + }; + var ArchiveStatus = { + ARCHIVE_ACCESS: "ARCHIVE_ACCESS", + DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS" + }; + var EncodingType = { + url: "url" + }; + var ObjectStorageClass = { + AWS_BACKUP_LOW_COST_WARM: "AWS_BACKUP_LOW_COST_WARM", + AWS_BACKUP_WARM: "AWS_BACKUP_WARM", + DEEP_ARCHIVE: "DEEP_ARCHIVE", + EXPRESS_ONEZONE: "EXPRESS_ONEZONE", + FSX_ONTAP: "FSX_ONTAP", + FSX_OPENZFS: "FSX_OPENZFS", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + OUTPOSTS: "OUTPOSTS", + REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY", + SNOW: "SNOW", + STANDARD: "STANDARD", + STANDARD_IA: "STANDARD_IA" + }; + var OptionalObjectAttributes = { + RESTORE_STATUS: "RestoreStatus" + }; + var ObjectVersionStorageClass = { + STANDARD: "STANDARD" + }; + var MFADelete = { + Disabled: "Disabled", + Enabled: "Enabled" + }; + var Tier = { + Bulk: "Bulk", + Expedited: "Expedited", + Standard: "Standard" + }; + var ExpressionType = { + SQL: "SQL" + }; + var CompressionType = { + BZIP2: "BZIP2", + GZIP: "GZIP", + NONE: "NONE" + }; + var FileHeaderInfo = { + IGNORE: "IGNORE", + NONE: "NONE", + USE: "USE" + }; + var JSONType = { + DOCUMENT: "DOCUMENT", + LINES: "LINES" + }; + var QuoteFields = { + ALWAYS: "ALWAYS", + ASNEEDED: "ASNEEDED" + }; + var RestoreRequestType = { + SELECT: "SELECT" + }; + exports.AbacStatus$ = AbacStatus$; + exports.AbortIncompleteMultipartUpload$ = AbortIncompleteMultipartUpload$; + exports.AbortMultipartUpload$ = AbortMultipartUpload$; + exports.AbortMultipartUploadCommand = AbortMultipartUploadCommand; + exports.AbortMultipartUploadOutput$ = AbortMultipartUploadOutput$; + exports.AbortMultipartUploadRequest$ = AbortMultipartUploadRequest$; + exports.AccelerateConfiguration$ = AccelerateConfiguration$; + exports.AccessControlPolicy$ = AccessControlPolicy$; + exports.AccessControlTranslation$ = AccessControlTranslation$; + exports.AccessDenied = AccessDenied; + exports.AccessDenied$ = AccessDenied$; + exports.AnalyticsAndOperator$ = AnalyticsAndOperator$; + exports.AnalyticsConfiguration$ = AnalyticsConfiguration$; + exports.AnalyticsExportDestination$ = AnalyticsExportDestination$; + exports.AnalyticsFilter$ = AnalyticsFilter$; + exports.AnalyticsS3BucketDestination$ = AnalyticsS3BucketDestination$; + exports.AnalyticsS3ExportFileFormat = AnalyticsS3ExportFileFormat; + exports.AnnotationConfigurationState = AnnotationConfigurationState; + exports.AnnotationDirective = AnnotationDirective; + exports.AnnotationEntry$ = AnnotationEntry$; + exports.AnnotationLimitExceeded = AnnotationLimitExceeded; + exports.AnnotationLimitExceeded$ = AnnotationLimitExceeded$; + exports.AnnotationNameTooLong = AnnotationNameTooLong; + exports.AnnotationNameTooLong$ = AnnotationNameTooLong$; + exports.AnnotationTableConfiguration$ = AnnotationTableConfiguration$; + exports.AnnotationTableConfigurationResult$ = AnnotationTableConfigurationResult$; + exports.AnnotationTableConfigurationUpdates$ = AnnotationTableConfigurationUpdates$; + exports.ArchiveStatus = ArchiveStatus; + exports.BlockedEncryptionTypes$ = BlockedEncryptionTypes$; + exports.Bucket$ = Bucket$; + exports.BucketAbacStatus = BucketAbacStatus; + exports.BucketAccelerateStatus = BucketAccelerateStatus; + exports.BucketAlreadyExists = BucketAlreadyExists; + exports.BucketAlreadyExists$ = BucketAlreadyExists$; + exports.BucketAlreadyOwnedByYou = BucketAlreadyOwnedByYou; + exports.BucketAlreadyOwnedByYou$ = BucketAlreadyOwnedByYou$; + exports.BucketCannedACL = BucketCannedACL; + exports.BucketInfo$ = BucketInfo$; + exports.BucketLifecycleConfiguration$ = BucketLifecycleConfiguration$; + exports.BucketLocationConstraint = BucketLocationConstraint; + exports.BucketLoggingStatus$ = BucketLoggingStatus$; + exports.BucketLogsPermission = BucketLogsPermission; + exports.BucketNamespace = BucketNamespace; + exports.BucketType = BucketType; + exports.BucketVersioningStatus = BucketVersioningStatus; + exports.CORSConfiguration$ = CORSConfiguration$; + exports.CORSRule$ = CORSRule$; + exports.CSVInput$ = CSVInput$; + exports.CSVOutput$ = CSVOutput$; + exports.Checksum$ = Checksum$; + exports.ChecksumAlgorithm = ChecksumAlgorithm2; + exports.ChecksumMode = ChecksumMode; + exports.ChecksumType = ChecksumType; + exports.CommonPrefix$ = CommonPrefix$; + exports.CompleteMultipartUpload$ = CompleteMultipartUpload$; + exports.CompleteMultipartUploadCommand = CompleteMultipartUploadCommand; + exports.CompleteMultipartUploadOutput$ = CompleteMultipartUploadOutput$; + exports.CompleteMultipartUploadRequest$ = CompleteMultipartUploadRequest$; + exports.CompletedMultipartUpload$ = CompletedMultipartUpload$; + exports.CompletedPart$ = CompletedPart$; + exports.CompressionType = CompressionType; + exports.Condition$ = Condition$; + exports.ContinuationEvent$ = ContinuationEvent$; + exports.CopyObject$ = CopyObject$; + exports.CopyObjectCommand = CopyObjectCommand; + exports.CopyObjectOutput$ = CopyObjectOutput$; + exports.CopyObjectRequest$ = CopyObjectRequest$; + exports.CopyObjectResult$ = CopyObjectResult$; + exports.CopyPartResult$ = CopyPartResult$; + exports.CreateBucket$ = CreateBucket$; + exports.CreateBucketCommand = CreateBucketCommand2; + exports.CreateBucketConfiguration$ = CreateBucketConfiguration$; + exports.CreateBucketMetadataConfiguration$ = CreateBucketMetadataConfiguration$; + exports.CreateBucketMetadataConfigurationCommand = CreateBucketMetadataConfigurationCommand; + exports.CreateBucketMetadataConfigurationRequest$ = CreateBucketMetadataConfigurationRequest$; + exports.CreateBucketMetadataTableConfiguration$ = CreateBucketMetadataTableConfiguration$; + exports.CreateBucketMetadataTableConfigurationCommand = CreateBucketMetadataTableConfigurationCommand; + exports.CreateBucketMetadataTableConfigurationRequest$ = CreateBucketMetadataTableConfigurationRequest$; + exports.CreateBucketOutput$ = CreateBucketOutput$; + exports.CreateBucketRequest$ = CreateBucketRequest$; + exports.CreateMultipartUpload$ = CreateMultipartUpload$; + exports.CreateMultipartUploadCommand = CreateMultipartUploadCommand; + exports.CreateMultipartUploadOutput$ = CreateMultipartUploadOutput$; + exports.CreateMultipartUploadRequest$ = CreateMultipartUploadRequest$; + exports.CreateSession$ = CreateSession$; + exports.CreateSessionCommand = CreateSessionCommand; + exports.CreateSessionOutput$ = CreateSessionOutput$; + exports.CreateSessionRequest$ = CreateSessionRequest$; + exports.DataRedundancy = DataRedundancy; + exports.DefaultRetention$ = DefaultRetention$; + exports.Delete$ = Delete$; + exports.DeleteBucket$ = DeleteBucket$; + exports.DeleteBucketAnalyticsConfiguration$ = DeleteBucketAnalyticsConfiguration$; + exports.DeleteBucketAnalyticsConfigurationCommand = DeleteBucketAnalyticsConfigurationCommand; + exports.DeleteBucketAnalyticsConfigurationRequest$ = DeleteBucketAnalyticsConfigurationRequest$; + exports.DeleteBucketCommand = DeleteBucketCommand; + exports.DeleteBucketCors$ = DeleteBucketCors$; + exports.DeleteBucketCorsCommand = DeleteBucketCorsCommand; + exports.DeleteBucketCorsRequest$ = DeleteBucketCorsRequest$; + exports.DeleteBucketEncryption$ = DeleteBucketEncryption$; + exports.DeleteBucketEncryptionCommand = DeleteBucketEncryptionCommand; + exports.DeleteBucketEncryptionRequest$ = DeleteBucketEncryptionRequest$; + exports.DeleteBucketIntelligentTieringConfiguration$ = DeleteBucketIntelligentTieringConfiguration$; + exports.DeleteBucketIntelligentTieringConfigurationCommand = DeleteBucketIntelligentTieringConfigurationCommand; + exports.DeleteBucketIntelligentTieringConfigurationRequest$ = DeleteBucketIntelligentTieringConfigurationRequest$; + exports.DeleteBucketInventoryConfiguration$ = DeleteBucketInventoryConfiguration$; + exports.DeleteBucketInventoryConfigurationCommand = DeleteBucketInventoryConfigurationCommand; + exports.DeleteBucketInventoryConfigurationRequest$ = DeleteBucketInventoryConfigurationRequest$; + exports.DeleteBucketLifecycle$ = DeleteBucketLifecycle$; + exports.DeleteBucketLifecycleCommand = DeleteBucketLifecycleCommand; + exports.DeleteBucketLifecycleRequest$ = DeleteBucketLifecycleRequest$; + exports.DeleteBucketMetadataConfiguration$ = DeleteBucketMetadataConfiguration$; + exports.DeleteBucketMetadataConfigurationCommand = DeleteBucketMetadataConfigurationCommand; + exports.DeleteBucketMetadataConfigurationRequest$ = DeleteBucketMetadataConfigurationRequest$; + exports.DeleteBucketMetadataTableConfiguration$ = DeleteBucketMetadataTableConfiguration$; + exports.DeleteBucketMetadataTableConfigurationCommand = DeleteBucketMetadataTableConfigurationCommand; + exports.DeleteBucketMetadataTableConfigurationRequest$ = DeleteBucketMetadataTableConfigurationRequest$; + exports.DeleteBucketMetricsConfiguration$ = DeleteBucketMetricsConfiguration$; + exports.DeleteBucketMetricsConfigurationCommand = DeleteBucketMetricsConfigurationCommand; + exports.DeleteBucketMetricsConfigurationRequest$ = DeleteBucketMetricsConfigurationRequest$; + exports.DeleteBucketOwnershipControls$ = DeleteBucketOwnershipControls$; + exports.DeleteBucketOwnershipControlsCommand = DeleteBucketOwnershipControlsCommand; + exports.DeleteBucketOwnershipControlsRequest$ = DeleteBucketOwnershipControlsRequest$; + exports.DeleteBucketPolicy$ = DeleteBucketPolicy$; + exports.DeleteBucketPolicyCommand = DeleteBucketPolicyCommand; + exports.DeleteBucketPolicyRequest$ = DeleteBucketPolicyRequest$; + exports.DeleteBucketReplication$ = DeleteBucketReplication$; + exports.DeleteBucketReplicationCommand = DeleteBucketReplicationCommand; + exports.DeleteBucketReplicationRequest$ = DeleteBucketReplicationRequest$; + exports.DeleteBucketRequest$ = DeleteBucketRequest$; + exports.DeleteBucketTagging$ = DeleteBucketTagging$; + exports.DeleteBucketTaggingCommand = DeleteBucketTaggingCommand; + exports.DeleteBucketTaggingRequest$ = DeleteBucketTaggingRequest$; + exports.DeleteBucketWebsite$ = DeleteBucketWebsite$; + exports.DeleteBucketWebsiteCommand = DeleteBucketWebsiteCommand; + exports.DeleteBucketWebsiteRequest$ = DeleteBucketWebsiteRequest$; + exports.DeleteMarkerEntry$ = DeleteMarkerEntry$; + exports.DeleteMarkerReplication$ = DeleteMarkerReplication$; + exports.DeleteMarkerReplicationStatus = DeleteMarkerReplicationStatus; + exports.DeleteObject$ = DeleteObject$; + exports.DeleteObjectAnnotation$ = DeleteObjectAnnotation$; + exports.DeleteObjectAnnotationCommand = DeleteObjectAnnotationCommand; + exports.DeleteObjectAnnotationOutput$ = DeleteObjectAnnotationOutput$; + exports.DeleteObjectAnnotationRequest$ = DeleteObjectAnnotationRequest$; + exports.DeleteObjectCommand = DeleteObjectCommand2; + exports.DeleteObjectOutput$ = DeleteObjectOutput$; + exports.DeleteObjectRequest$ = DeleteObjectRequest$; + exports.DeleteObjectTagging$ = DeleteObjectTagging$; + exports.DeleteObjectTaggingCommand = DeleteObjectTaggingCommand; + exports.DeleteObjectTaggingOutput$ = DeleteObjectTaggingOutput$; + exports.DeleteObjectTaggingRequest$ = DeleteObjectTaggingRequest$; + exports.DeleteObjects$ = DeleteObjects$; + exports.DeleteObjectsCommand = DeleteObjectsCommand; + exports.DeleteObjectsOutput$ = DeleteObjectsOutput$; + exports.DeleteObjectsRequest$ = DeleteObjectsRequest$; + exports.DeletePublicAccessBlock$ = DeletePublicAccessBlock$; + exports.DeletePublicAccessBlockCommand = DeletePublicAccessBlockCommand; + exports.DeletePublicAccessBlockRequest$ = DeletePublicAccessBlockRequest$; + exports.DeletedObject$ = DeletedObject$; + exports.Destination$ = Destination$; + exports.DestinationResult$ = DestinationResult$; + exports.EncodingType = EncodingType; + exports.Encryption$ = Encryption$; + exports.EncryptionConfiguration$ = EncryptionConfiguration$; + exports.EncryptionType = EncryptionType; + exports.EncryptionTypeMismatch = EncryptionTypeMismatch; + exports.EncryptionTypeMismatch$ = EncryptionTypeMismatch$; + exports.EndEvent$ = EndEvent$; + exports.ErrorDetails$ = ErrorDetails$; + exports.ErrorDocument$ = ErrorDocument$; + exports.Event = Event; + exports.EventBridgeConfiguration$ = EventBridgeConfiguration$; + exports.EventHoldDuration$ = EventHoldDuration$; + exports.ExistingObjectReplication$ = ExistingObjectReplication$; + exports.ExistingObjectReplicationStatus = ExistingObjectReplicationStatus; + exports.ExpirationState = ExpirationState; + exports.ExpirationStatus = ExpirationStatus; + exports.ExpressionType = ExpressionType; + exports.FileHeaderInfo = FileHeaderInfo; + exports.FilterRule$ = FilterRule$; + exports.FilterRuleName = FilterRuleName; + exports.GetBucketAbac$ = GetBucketAbac$; + exports.GetBucketAbacCommand = GetBucketAbacCommand; + exports.GetBucketAbacOutput$ = GetBucketAbacOutput$; + exports.GetBucketAbacRequest$ = GetBucketAbacRequest$; + exports.GetBucketAccelerateConfiguration$ = GetBucketAccelerateConfiguration$; + exports.GetBucketAccelerateConfigurationCommand = GetBucketAccelerateConfigurationCommand; + exports.GetBucketAccelerateConfigurationOutput$ = GetBucketAccelerateConfigurationOutput$; + exports.GetBucketAccelerateConfigurationRequest$ = GetBucketAccelerateConfigurationRequest$; + exports.GetBucketAcl$ = GetBucketAcl$; + exports.GetBucketAclCommand = GetBucketAclCommand; + exports.GetBucketAclOutput$ = GetBucketAclOutput$; + exports.GetBucketAclRequest$ = GetBucketAclRequest$; + exports.GetBucketAnalyticsConfiguration$ = GetBucketAnalyticsConfiguration$; + exports.GetBucketAnalyticsConfigurationCommand = GetBucketAnalyticsConfigurationCommand; + exports.GetBucketAnalyticsConfigurationOutput$ = GetBucketAnalyticsConfigurationOutput$; + exports.GetBucketAnalyticsConfigurationRequest$ = GetBucketAnalyticsConfigurationRequest$; + exports.GetBucketCors$ = GetBucketCors$; + exports.GetBucketCorsCommand = GetBucketCorsCommand; + exports.GetBucketCorsOutput$ = GetBucketCorsOutput$; + exports.GetBucketCorsRequest$ = GetBucketCorsRequest$; + exports.GetBucketEncryption$ = GetBucketEncryption$; + exports.GetBucketEncryptionCommand = GetBucketEncryptionCommand; + exports.GetBucketEncryptionOutput$ = GetBucketEncryptionOutput$; + exports.GetBucketEncryptionRequest$ = GetBucketEncryptionRequest$; + exports.GetBucketIntelligentTieringConfiguration$ = GetBucketIntelligentTieringConfiguration$; + exports.GetBucketIntelligentTieringConfigurationCommand = GetBucketIntelligentTieringConfigurationCommand; + exports.GetBucketIntelligentTieringConfigurationOutput$ = GetBucketIntelligentTieringConfigurationOutput$; + exports.GetBucketIntelligentTieringConfigurationRequest$ = GetBucketIntelligentTieringConfigurationRequest$; + exports.GetBucketInventoryConfiguration$ = GetBucketInventoryConfiguration$; + exports.GetBucketInventoryConfigurationCommand = GetBucketInventoryConfigurationCommand; + exports.GetBucketInventoryConfigurationOutput$ = GetBucketInventoryConfigurationOutput$; + exports.GetBucketInventoryConfigurationRequest$ = GetBucketInventoryConfigurationRequest$; + exports.GetBucketLifecycleConfiguration$ = GetBucketLifecycleConfiguration$; + exports.GetBucketLifecycleConfigurationCommand = GetBucketLifecycleConfigurationCommand; + exports.GetBucketLifecycleConfigurationOutput$ = GetBucketLifecycleConfigurationOutput$; + exports.GetBucketLifecycleConfigurationRequest$ = GetBucketLifecycleConfigurationRequest$; + exports.GetBucketLocation$ = GetBucketLocation$; + exports.GetBucketLocationCommand = GetBucketLocationCommand; + exports.GetBucketLocationOutput$ = GetBucketLocationOutput$; + exports.GetBucketLocationRequest$ = GetBucketLocationRequest$; + exports.GetBucketLogging$ = GetBucketLogging$; + exports.GetBucketLoggingCommand = GetBucketLoggingCommand; + exports.GetBucketLoggingOutput$ = GetBucketLoggingOutput$; + exports.GetBucketLoggingRequest$ = GetBucketLoggingRequest$; + exports.GetBucketMetadataConfiguration$ = GetBucketMetadataConfiguration$; + exports.GetBucketMetadataConfigurationCommand = GetBucketMetadataConfigurationCommand; + exports.GetBucketMetadataConfigurationOutput$ = GetBucketMetadataConfigurationOutput$; + exports.GetBucketMetadataConfigurationRequest$ = GetBucketMetadataConfigurationRequest$; + exports.GetBucketMetadataConfigurationResult$ = GetBucketMetadataConfigurationResult$; + exports.GetBucketMetadataTableConfiguration$ = GetBucketMetadataTableConfiguration$; + exports.GetBucketMetadataTableConfigurationCommand = GetBucketMetadataTableConfigurationCommand; + exports.GetBucketMetadataTableConfigurationOutput$ = GetBucketMetadataTableConfigurationOutput$; + exports.GetBucketMetadataTableConfigurationRequest$ = GetBucketMetadataTableConfigurationRequest$; + exports.GetBucketMetadataTableConfigurationResult$ = GetBucketMetadataTableConfigurationResult$; + exports.GetBucketMetricsConfiguration$ = GetBucketMetricsConfiguration$; + exports.GetBucketMetricsConfigurationCommand = GetBucketMetricsConfigurationCommand; + exports.GetBucketMetricsConfigurationOutput$ = GetBucketMetricsConfigurationOutput$; + exports.GetBucketMetricsConfigurationRequest$ = GetBucketMetricsConfigurationRequest$; + exports.GetBucketNotificationConfiguration$ = GetBucketNotificationConfiguration$; + exports.GetBucketNotificationConfigurationCommand = GetBucketNotificationConfigurationCommand; + exports.GetBucketNotificationConfigurationRequest$ = GetBucketNotificationConfigurationRequest$; + exports.GetBucketOwnershipControls$ = GetBucketOwnershipControls$; + exports.GetBucketOwnershipControlsCommand = GetBucketOwnershipControlsCommand; + exports.GetBucketOwnershipControlsOutput$ = GetBucketOwnershipControlsOutput$; + exports.GetBucketOwnershipControlsRequest$ = GetBucketOwnershipControlsRequest$; + exports.GetBucketPolicy$ = GetBucketPolicy$; + exports.GetBucketPolicyCommand = GetBucketPolicyCommand; + exports.GetBucketPolicyOutput$ = GetBucketPolicyOutput$; + exports.GetBucketPolicyRequest$ = GetBucketPolicyRequest$; + exports.GetBucketPolicyStatus$ = GetBucketPolicyStatus$; + exports.GetBucketPolicyStatusCommand = GetBucketPolicyStatusCommand; + exports.GetBucketPolicyStatusOutput$ = GetBucketPolicyStatusOutput$; + exports.GetBucketPolicyStatusRequest$ = GetBucketPolicyStatusRequest$; + exports.GetBucketReplication$ = GetBucketReplication$; + exports.GetBucketReplicationCommand = GetBucketReplicationCommand; + exports.GetBucketReplicationOutput$ = GetBucketReplicationOutput$; + exports.GetBucketReplicationRequest$ = GetBucketReplicationRequest$; + exports.GetBucketRequestPayment$ = GetBucketRequestPayment$; + exports.GetBucketRequestPaymentCommand = GetBucketRequestPaymentCommand; + exports.GetBucketRequestPaymentOutput$ = GetBucketRequestPaymentOutput$; + exports.GetBucketRequestPaymentRequest$ = GetBucketRequestPaymentRequest$; + exports.GetBucketTagging$ = GetBucketTagging$; + exports.GetBucketTaggingCommand = GetBucketTaggingCommand; + exports.GetBucketTaggingOutput$ = GetBucketTaggingOutput$; + exports.GetBucketTaggingRequest$ = GetBucketTaggingRequest$; + exports.GetBucketVersioning$ = GetBucketVersioning$; + exports.GetBucketVersioningCommand = GetBucketVersioningCommand; + exports.GetBucketVersioningOutput$ = GetBucketVersioningOutput$; + exports.GetBucketVersioningRequest$ = GetBucketVersioningRequest$; + exports.GetBucketWebsite$ = GetBucketWebsite$; + exports.GetBucketWebsiteCommand = GetBucketWebsiteCommand; + exports.GetBucketWebsiteOutput$ = GetBucketWebsiteOutput$; + exports.GetBucketWebsiteRequest$ = GetBucketWebsiteRequest$; + exports.GetObject$ = GetObject$; + exports.GetObjectAcl$ = GetObjectAcl$; + exports.GetObjectAclCommand = GetObjectAclCommand; + exports.GetObjectAclOutput$ = GetObjectAclOutput$; + exports.GetObjectAclRequest$ = GetObjectAclRequest$; + exports.GetObjectAnnotation$ = GetObjectAnnotation$; + exports.GetObjectAnnotationCommand = GetObjectAnnotationCommand; + exports.GetObjectAnnotationOutput$ = GetObjectAnnotationOutput$; + exports.GetObjectAnnotationRequest$ = GetObjectAnnotationRequest$; + exports.GetObjectAttributes$ = GetObjectAttributes$; + exports.GetObjectAttributesCommand = GetObjectAttributesCommand; + exports.GetObjectAttributesOutput$ = GetObjectAttributesOutput$; + exports.GetObjectAttributesParts$ = GetObjectAttributesParts$; + exports.GetObjectAttributesRequest$ = GetObjectAttributesRequest$; + exports.GetObjectCommand = GetObjectCommand; + exports.GetObjectLegalHold$ = GetObjectLegalHold$; + exports.GetObjectLegalHoldCommand = GetObjectLegalHoldCommand; + exports.GetObjectLegalHoldOutput$ = GetObjectLegalHoldOutput$; + exports.GetObjectLegalHoldRequest$ = GetObjectLegalHoldRequest$; + exports.GetObjectLockConfiguration$ = GetObjectLockConfiguration$; + exports.GetObjectLockConfigurationCommand = GetObjectLockConfigurationCommand; + exports.GetObjectLockConfigurationOutput$ = GetObjectLockConfigurationOutput$; + exports.GetObjectLockConfigurationRequest$ = GetObjectLockConfigurationRequest$; + exports.GetObjectOutput$ = GetObjectOutput$; + exports.GetObjectRequest$ = GetObjectRequest$; + exports.GetObjectRetention$ = GetObjectRetention$; + exports.GetObjectRetentionCommand = GetObjectRetentionCommand; + exports.GetObjectRetentionOutput$ = GetObjectRetentionOutput$; + exports.GetObjectRetentionRequest$ = GetObjectRetentionRequest$; + exports.GetObjectTagging$ = GetObjectTagging$; + exports.GetObjectTaggingCommand = GetObjectTaggingCommand; + exports.GetObjectTaggingOutput$ = GetObjectTaggingOutput$; + exports.GetObjectTaggingRequest$ = GetObjectTaggingRequest$; + exports.GetObjectTorrent$ = GetObjectTorrent$; + exports.GetObjectTorrentCommand = GetObjectTorrentCommand; + exports.GetObjectTorrentOutput$ = GetObjectTorrentOutput$; + exports.GetObjectTorrentRequest$ = GetObjectTorrentRequest$; + exports.GetPublicAccessBlock$ = GetPublicAccessBlock$; + exports.GetPublicAccessBlockCommand = GetPublicAccessBlockCommand; + exports.GetPublicAccessBlockOutput$ = GetPublicAccessBlockOutput$; + exports.GetPublicAccessBlockRequest$ = GetPublicAccessBlockRequest$; + exports.GlacierJobParameters$ = GlacierJobParameters$; + exports.Grant$ = Grant$; + exports.Grantee$ = Grantee$; + exports.HeadBucket$ = HeadBucket$; + exports.HeadBucketCommand = HeadBucketCommand2; + exports.HeadBucketOutput$ = HeadBucketOutput$; + exports.HeadBucketRequest$ = HeadBucketRequest$; + exports.HeadObject$ = HeadObject$; + exports.HeadObjectCommand = HeadObjectCommand; + exports.HeadObjectOutput$ = HeadObjectOutput$; + exports.HeadObjectRequest$ = HeadObjectRequest$; + exports.IdempotencyParameterMismatch = IdempotencyParameterMismatch; + exports.IdempotencyParameterMismatch$ = IdempotencyParameterMismatch$; + exports.IndexDocument$ = IndexDocument$; + exports.Initiator$ = Initiator$; + exports.InputSerialization$ = InputSerialization$; + exports.IntelligentTieringAccessTier = IntelligentTieringAccessTier; + exports.IntelligentTieringAndOperator$ = IntelligentTieringAndOperator$; + exports.IntelligentTieringConfiguration$ = IntelligentTieringConfiguration$; + exports.IntelligentTieringFilter$ = IntelligentTieringFilter$; + exports.IntelligentTieringStatus = IntelligentTieringStatus; + exports.InvalidAnnotationName = InvalidAnnotationName; + exports.InvalidAnnotationName$ = InvalidAnnotationName$; + exports.InvalidObjectState = InvalidObjectState; + exports.InvalidObjectState$ = InvalidObjectState$; + exports.InvalidPrefix = InvalidPrefix; + exports.InvalidPrefix$ = InvalidPrefix$; + exports.InvalidRequest = InvalidRequest; + exports.InvalidRequest$ = InvalidRequest$; + exports.InvalidWriteOffset = InvalidWriteOffset; + exports.InvalidWriteOffset$ = InvalidWriteOffset$; + exports.InventoryConfiguration$ = InventoryConfiguration$; + exports.InventoryConfigurationState = InventoryConfigurationState; + exports.InventoryDestination$ = InventoryDestination$; + exports.InventoryEncryption$ = InventoryEncryption$; + exports.InventoryFilter$ = InventoryFilter$; + exports.InventoryFormat = InventoryFormat; + exports.InventoryFrequency = InventoryFrequency; + exports.InventoryIncludedObjectVersions = InventoryIncludedObjectVersions; + exports.InventoryOptionalField = InventoryOptionalField; + exports.InventoryS3BucketDestination$ = InventoryS3BucketDestination$; + exports.InventorySchedule$ = InventorySchedule$; + exports.InventoryTableConfiguration$ = InventoryTableConfiguration$; + exports.InventoryTableConfigurationResult$ = InventoryTableConfigurationResult$; + exports.InventoryTableConfigurationUpdates$ = InventoryTableConfigurationUpdates$; + exports.JSONInput$ = JSONInput$; + exports.JSONOutput$ = JSONOutput$; + exports.JSONType = JSONType; + exports.JournalTableConfiguration$ = JournalTableConfiguration$; + exports.JournalTableConfigurationResult$ = JournalTableConfigurationResult$; + exports.JournalTableConfigurationUpdates$ = JournalTableConfigurationUpdates$; + exports.LambdaFunctionConfiguration$ = LambdaFunctionConfiguration$; + exports.LifecycleExpiration$ = LifecycleExpiration$; + exports.LifecycleRule$ = LifecycleRule$; + exports.LifecycleRuleAndOperator$ = LifecycleRuleAndOperator$; + exports.LifecycleRuleFilter$ = LifecycleRuleFilter$; + exports.ListBucketAnalyticsConfigurations$ = ListBucketAnalyticsConfigurations$; + exports.ListBucketAnalyticsConfigurationsCommand = ListBucketAnalyticsConfigurationsCommand; + exports.ListBucketAnalyticsConfigurationsOutput$ = ListBucketAnalyticsConfigurationsOutput$; + exports.ListBucketAnalyticsConfigurationsRequest$ = ListBucketAnalyticsConfigurationsRequest$; + exports.ListBucketIntelligentTieringConfigurations$ = ListBucketIntelligentTieringConfigurations$; + exports.ListBucketIntelligentTieringConfigurationsCommand = ListBucketIntelligentTieringConfigurationsCommand; + exports.ListBucketIntelligentTieringConfigurationsOutput$ = ListBucketIntelligentTieringConfigurationsOutput$; + exports.ListBucketIntelligentTieringConfigurationsRequest$ = ListBucketIntelligentTieringConfigurationsRequest$; + exports.ListBucketInventoryConfigurations$ = ListBucketInventoryConfigurations$; + exports.ListBucketInventoryConfigurationsCommand = ListBucketInventoryConfigurationsCommand; + exports.ListBucketInventoryConfigurationsOutput$ = ListBucketInventoryConfigurationsOutput$; + exports.ListBucketInventoryConfigurationsRequest$ = ListBucketInventoryConfigurationsRequest$; + exports.ListBucketMetricsConfigurations$ = ListBucketMetricsConfigurations$; + exports.ListBucketMetricsConfigurationsCommand = ListBucketMetricsConfigurationsCommand; + exports.ListBucketMetricsConfigurationsOutput$ = ListBucketMetricsConfigurationsOutput$; + exports.ListBucketMetricsConfigurationsRequest$ = ListBucketMetricsConfigurationsRequest$; + exports.ListBuckets$ = ListBuckets$; + exports.ListBucketsCommand = ListBucketsCommand; + exports.ListBucketsOutput$ = ListBucketsOutput$; + exports.ListBucketsRequest$ = ListBucketsRequest$; + exports.ListDirectoryBuckets$ = ListDirectoryBuckets$; + exports.ListDirectoryBucketsCommand = ListDirectoryBucketsCommand; + exports.ListDirectoryBucketsOutput$ = ListDirectoryBucketsOutput$; + exports.ListDirectoryBucketsRequest$ = ListDirectoryBucketsRequest$; + exports.ListMultipartUploads$ = ListMultipartUploads$; + exports.ListMultipartUploadsCommand = ListMultipartUploadsCommand; + exports.ListMultipartUploadsOutput$ = ListMultipartUploadsOutput$; + exports.ListMultipartUploadsRequest$ = ListMultipartUploadsRequest$; + exports.ListObjectAnnotations$ = ListObjectAnnotations$; + exports.ListObjectAnnotationsCommand = ListObjectAnnotationsCommand; + exports.ListObjectAnnotationsOutput$ = ListObjectAnnotationsOutput$; + exports.ListObjectAnnotationsRequest$ = ListObjectAnnotationsRequest$; + exports.ListObjectVersions$ = ListObjectVersions$; + exports.ListObjectVersionsCommand = ListObjectVersionsCommand; + exports.ListObjectVersionsOutput$ = ListObjectVersionsOutput$; + exports.ListObjectVersionsRequest$ = ListObjectVersionsRequest$; + exports.ListObjects$ = ListObjects$; + exports.ListObjectsCommand = ListObjectsCommand; + exports.ListObjectsOutput$ = ListObjectsOutput$; + exports.ListObjectsRequest$ = ListObjectsRequest$; + exports.ListObjectsV2$ = ListObjectsV2$; + exports.ListObjectsV2Command = ListObjectsV2Command; + exports.ListObjectsV2Output$ = ListObjectsV2Output$; + exports.ListObjectsV2Request$ = ListObjectsV2Request$; + exports.ListParts$ = ListParts$; + exports.ListPartsCommand = ListPartsCommand; + exports.ListPartsOutput$ = ListPartsOutput$; + exports.ListPartsRequest$ = ListPartsRequest$; + exports.LocationInfo$ = LocationInfo$; + exports.LocationType = LocationType; + exports.LoggingEnabled$ = LoggingEnabled$; + exports.MFADelete = MFADelete; + exports.MFADeleteStatus = MFADeleteStatus; + exports.MetadataConfiguration$ = MetadataConfiguration$; + exports.MetadataConfigurationResult$ = MetadataConfigurationResult$; + exports.MetadataDirective = MetadataDirective; + exports.MetadataEntry$ = MetadataEntry$; + exports.MetadataTableConfiguration$ = MetadataTableConfiguration$; + exports.MetadataTableConfigurationResult$ = MetadataTableConfigurationResult$; + exports.MetadataTableEncryptionConfiguration$ = MetadataTableEncryptionConfiguration$; + exports.Metrics$ = Metrics$; + exports.MetricsAndOperator$ = MetricsAndOperator$; + exports.MetricsConfiguration$ = MetricsConfiguration$; + exports.MetricsFilter$ = MetricsFilter$; + exports.MetricsStatus = MetricsStatus; + exports.MultipartUpload$ = MultipartUpload$; + exports.NoSuchAnnotation = NoSuchAnnotation; + exports.NoSuchAnnotation$ = NoSuchAnnotation$; + exports.NoSuchBucket = NoSuchBucket; + exports.NoSuchBucket$ = NoSuchBucket$; + exports.NoSuchKey = NoSuchKey; + exports.NoSuchKey$ = NoSuchKey$; + exports.NoSuchUpload = NoSuchUpload; + exports.NoSuchUpload$ = NoSuchUpload$; + exports.NoncurrentVersionExpiration$ = NoncurrentVersionExpiration$; + exports.NoncurrentVersionTransition$ = NoncurrentVersionTransition$; + exports.NotFound = NotFound; + exports.NotFound$ = NotFound$; + exports.NotificationConfiguration$ = NotificationConfiguration$; + exports.NotificationConfigurationFilter$ = NotificationConfigurationFilter$; + exports.ObjectAlreadyInActiveTierError = ObjectAlreadyInActiveTierError; + exports.ObjectAlreadyInActiveTierError$ = ObjectAlreadyInActiveTierError$; + exports.ObjectAttributes = ObjectAttributes; + exports.ObjectCannedACL = ObjectCannedACL; + exports.ObjectEncryption$ = ObjectEncryption$; + exports.ObjectIdentifier$ = ObjectIdentifier$; + exports.ObjectLockConfiguration$ = ObjectLockConfiguration$; + exports.ObjectLockEnabled = ObjectLockEnabled; + exports.ObjectLockEventHold = ObjectLockEventHold; + exports.ObjectLockLegalHold$ = ObjectLockLegalHold$; + exports.ObjectLockLegalHoldStatus = ObjectLockLegalHoldStatus; + exports.ObjectLockMode = ObjectLockMode; + exports.ObjectLockRetention$ = ObjectLockRetention$; + exports.ObjectLockRetentionMode = ObjectLockRetentionMode; + exports.ObjectLockRule$ = ObjectLockRule$; + exports.ObjectNotInActiveTierError = ObjectNotInActiveTierError; + exports.ObjectNotInActiveTierError$ = ObjectNotInActiveTierError$; + exports.ObjectOwnership = ObjectOwnership; + exports.ObjectPart$ = ObjectPart$; + exports.ObjectStorageClass = ObjectStorageClass; + exports.ObjectVersion$ = ObjectVersion$; + exports.ObjectVersionStorageClass = ObjectVersionStorageClass; + exports.OptionalObjectAttributes = OptionalObjectAttributes; + exports.OutputLocation$ = OutputLocation$; + exports.OutputSerialization$ = OutputSerialization$; + exports.Owner$ = Owner$; + exports.OwnerOverride = OwnerOverride; + exports.OwnershipControls$ = OwnershipControls$; + exports.OwnershipControlsRule$ = OwnershipControlsRule$; + exports.ParquetInput$ = ParquetInput$; + exports.Part$ = Part$; + exports.PartitionDateSource = PartitionDateSource; + exports.PartitionedPrefix$ = PartitionedPrefix$; + exports.Payer = Payer; + exports.Permission = Permission; + exports.PolicyStatus$ = PolicyStatus$; + exports.Progress$ = Progress$; + exports.ProgressEvent$ = ProgressEvent$; + exports.Protocol = Protocol; + exports.PublicAccessBlockConfiguration$ = PublicAccessBlockConfiguration$; + exports.PutBucketAbac$ = PutBucketAbac$; + exports.PutBucketAbacCommand = PutBucketAbacCommand; + exports.PutBucketAbacRequest$ = PutBucketAbacRequest$; + exports.PutBucketAccelerateConfiguration$ = PutBucketAccelerateConfiguration$; + exports.PutBucketAccelerateConfigurationCommand = PutBucketAccelerateConfigurationCommand; + exports.PutBucketAccelerateConfigurationRequest$ = PutBucketAccelerateConfigurationRequest$; + exports.PutBucketAcl$ = PutBucketAcl$; + exports.PutBucketAclCommand = PutBucketAclCommand; + exports.PutBucketAclRequest$ = PutBucketAclRequest$; + exports.PutBucketAnalyticsConfiguration$ = PutBucketAnalyticsConfiguration$; + exports.PutBucketAnalyticsConfigurationCommand = PutBucketAnalyticsConfigurationCommand; + exports.PutBucketAnalyticsConfigurationRequest$ = PutBucketAnalyticsConfigurationRequest$; + exports.PutBucketCors$ = PutBucketCors$; + exports.PutBucketCorsCommand = PutBucketCorsCommand; + exports.PutBucketCorsRequest$ = PutBucketCorsRequest$; + exports.PutBucketEncryption$ = PutBucketEncryption$; + exports.PutBucketEncryptionCommand = PutBucketEncryptionCommand; + exports.PutBucketEncryptionRequest$ = PutBucketEncryptionRequest$; + exports.PutBucketIntelligentTieringConfiguration$ = PutBucketIntelligentTieringConfiguration$; + exports.PutBucketIntelligentTieringConfigurationCommand = PutBucketIntelligentTieringConfigurationCommand; + exports.PutBucketIntelligentTieringConfigurationRequest$ = PutBucketIntelligentTieringConfigurationRequest$; + exports.PutBucketInventoryConfiguration$ = PutBucketInventoryConfiguration$; + exports.PutBucketInventoryConfigurationCommand = PutBucketInventoryConfigurationCommand; + exports.PutBucketInventoryConfigurationRequest$ = PutBucketInventoryConfigurationRequest$; + exports.PutBucketLifecycleConfiguration$ = PutBucketLifecycleConfiguration$; + exports.PutBucketLifecycleConfigurationCommand = PutBucketLifecycleConfigurationCommand; + exports.PutBucketLifecycleConfigurationOutput$ = PutBucketLifecycleConfigurationOutput$; + exports.PutBucketLifecycleConfigurationRequest$ = PutBucketLifecycleConfigurationRequest$; + exports.PutBucketLogging$ = PutBucketLogging$; + exports.PutBucketLoggingCommand = PutBucketLoggingCommand; + exports.PutBucketLoggingRequest$ = PutBucketLoggingRequest$; + exports.PutBucketMetricsConfiguration$ = PutBucketMetricsConfiguration$; + exports.PutBucketMetricsConfigurationCommand = PutBucketMetricsConfigurationCommand; + exports.PutBucketMetricsConfigurationRequest$ = PutBucketMetricsConfigurationRequest$; + exports.PutBucketNotificationConfiguration$ = PutBucketNotificationConfiguration$; + exports.PutBucketNotificationConfigurationCommand = PutBucketNotificationConfigurationCommand; + exports.PutBucketNotificationConfigurationRequest$ = PutBucketNotificationConfigurationRequest$; + exports.PutBucketOwnershipControls$ = PutBucketOwnershipControls$; + exports.PutBucketOwnershipControlsCommand = PutBucketOwnershipControlsCommand; + exports.PutBucketOwnershipControlsRequest$ = PutBucketOwnershipControlsRequest$; + exports.PutBucketPolicy$ = PutBucketPolicy$; + exports.PutBucketPolicyCommand = PutBucketPolicyCommand2; + exports.PutBucketPolicyRequest$ = PutBucketPolicyRequest$; + exports.PutBucketReplication$ = PutBucketReplication$; + exports.PutBucketReplicationCommand = PutBucketReplicationCommand; + exports.PutBucketReplicationRequest$ = PutBucketReplicationRequest$; + exports.PutBucketRequestPayment$ = PutBucketRequestPayment$; + exports.PutBucketRequestPaymentCommand = PutBucketRequestPaymentCommand; + exports.PutBucketRequestPaymentRequest$ = PutBucketRequestPaymentRequest$; + exports.PutBucketTagging$ = PutBucketTagging$; + exports.PutBucketTaggingCommand = PutBucketTaggingCommand; + exports.PutBucketTaggingRequest$ = PutBucketTaggingRequest$; + exports.PutBucketVersioning$ = PutBucketVersioning$; + exports.PutBucketVersioningCommand = PutBucketVersioningCommand; + exports.PutBucketVersioningRequest$ = PutBucketVersioningRequest$; + exports.PutBucketWebsite$ = PutBucketWebsite$; + exports.PutBucketWebsiteCommand = PutBucketWebsiteCommand; + exports.PutBucketWebsiteRequest$ = PutBucketWebsiteRequest$; + exports.PutObject$ = PutObject$; + exports.PutObjectAcl$ = PutObjectAcl$; + exports.PutObjectAclCommand = PutObjectAclCommand; + exports.PutObjectAclOutput$ = PutObjectAclOutput$; + exports.PutObjectAclRequest$ = PutObjectAclRequest$; + exports.PutObjectAnnotation$ = PutObjectAnnotation$; + exports.PutObjectAnnotationCommand = PutObjectAnnotationCommand; + exports.PutObjectAnnotationOutput$ = PutObjectAnnotationOutput$; + exports.PutObjectAnnotationRequest$ = PutObjectAnnotationRequest$; + exports.PutObjectCommand = PutObjectCommand2; + exports.PutObjectLegalHold$ = PutObjectLegalHold$; + exports.PutObjectLegalHoldCommand = PutObjectLegalHoldCommand; + exports.PutObjectLegalHoldOutput$ = PutObjectLegalHoldOutput$; + exports.PutObjectLegalHoldRequest$ = PutObjectLegalHoldRequest$; + exports.PutObjectLockConfiguration$ = PutObjectLockConfiguration$; + exports.PutObjectLockConfigurationCommand = PutObjectLockConfigurationCommand; + exports.PutObjectLockConfigurationOutput$ = PutObjectLockConfigurationOutput$; + exports.PutObjectLockConfigurationRequest$ = PutObjectLockConfigurationRequest$; + exports.PutObjectOutput$ = PutObjectOutput$; + exports.PutObjectRequest$ = PutObjectRequest$; + exports.PutObjectRetention$ = PutObjectRetention$; + exports.PutObjectRetentionCommand = PutObjectRetentionCommand; + exports.PutObjectRetentionOutput$ = PutObjectRetentionOutput$; + exports.PutObjectRetentionRequest$ = PutObjectRetentionRequest$; + exports.PutObjectTagging$ = PutObjectTagging$; + exports.PutObjectTaggingCommand = PutObjectTaggingCommand; + exports.PutObjectTaggingOutput$ = PutObjectTaggingOutput$; + exports.PutObjectTaggingRequest$ = PutObjectTaggingRequest$; + exports.PutPublicAccessBlock$ = PutPublicAccessBlock$; + exports.PutPublicAccessBlockCommand = PutPublicAccessBlockCommand; + exports.PutPublicAccessBlockRequest$ = PutPublicAccessBlockRequest$; + exports.QueueConfiguration$ = QueueConfiguration$; + exports.QuoteFields = QuoteFields; + exports.RecordExpiration$ = RecordExpiration$; + exports.RecordsEvent$ = RecordsEvent$; + exports.Redirect$ = Redirect$; + exports.RedirectAllRequestsTo$ = RedirectAllRequestsTo$; + exports.RenameObject$ = RenameObject$; + exports.RenameObjectCommand = RenameObjectCommand; + exports.RenameObjectOutput$ = RenameObjectOutput$; + exports.RenameObjectRequest$ = RenameObjectRequest$; + exports.ReplicaModifications$ = ReplicaModifications$; + exports.ReplicaModificationsStatus = ReplicaModificationsStatus; + exports.ReplicationConfiguration$ = ReplicationConfiguration$; + exports.ReplicationRule$ = ReplicationRule$; + exports.ReplicationRuleAndOperator$ = ReplicationRuleAndOperator$; + exports.ReplicationRuleFilter$ = ReplicationRuleFilter$; + exports.ReplicationRuleStatus = ReplicationRuleStatus; + exports.ReplicationStatus = ReplicationStatus; + exports.ReplicationTime$ = ReplicationTime$; + exports.ReplicationTimeStatus = ReplicationTimeStatus; + exports.ReplicationTimeValue$ = ReplicationTimeValue$; + exports.RequestCharged = RequestCharged; + exports.RequestPayer = RequestPayer; + exports.RequestPaymentConfiguration$ = RequestPaymentConfiguration$; + exports.RequestProgress$ = RequestProgress$; + exports.RestoreObject$ = RestoreObject$; + exports.RestoreObjectCommand = RestoreObjectCommand; + exports.RestoreObjectOutput$ = RestoreObjectOutput$; + exports.RestoreObjectRequest$ = RestoreObjectRequest$; + exports.RestoreRequest$ = RestoreRequest$; + exports.RestoreRequestType = RestoreRequestType; + exports.RestoreStatus$ = RestoreStatus$; + exports.RoutingRule$ = RoutingRule$; + exports.S3 = S3; + exports.S3Client = S3Client2; + exports.S3KeyFilter$ = S3KeyFilter$; + exports.S3Location$ = S3Location$; + exports.S3ServiceException = S3ServiceException; + exports.S3ServiceException$ = S3ServiceException$; + exports.S3TablesBucketType = S3TablesBucketType; + exports.S3TablesDestination$ = S3TablesDestination$; + exports.S3TablesDestinationResult$ = S3TablesDestinationResult$; + exports.SSEKMS$ = SSEKMS$; + exports.SSEKMSEncryption$ = SSEKMSEncryption$; + exports.SSES3$ = SSES3$; + exports.ScanRange$ = ScanRange$; + exports.SelectObjectContent$ = SelectObjectContent$; + exports.SelectObjectContentCommand = SelectObjectContentCommand; + exports.SelectObjectContentEventStream$ = SelectObjectContentEventStream$; + exports.SelectObjectContentOutput$ = SelectObjectContentOutput$; + exports.SelectObjectContentRequest$ = SelectObjectContentRequest$; + exports.SelectParameters$ = SelectParameters$; + exports.ServerSideEncryption = ServerSideEncryption; + exports.ServerSideEncryptionByDefault$ = ServerSideEncryptionByDefault$; + exports.ServerSideEncryptionConfiguration$ = ServerSideEncryptionConfiguration$; + exports.ServerSideEncryptionRule$ = ServerSideEncryptionRule$; + exports.SessionCredentials$ = SessionCredentials$; + exports.SessionMode = SessionMode; + exports.SimplePrefix$ = SimplePrefix$; + exports.SourceSelectionCriteria$ = SourceSelectionCriteria$; + exports.SseKmsEncryptedObjects$ = SseKmsEncryptedObjects$; + exports.SseKmsEncryptedObjectsStatus = SseKmsEncryptedObjectsStatus; + exports.Stats$ = Stats$; + exports.StatsEvent$ = StatsEvent$; + exports.StorageClass = StorageClass; + exports.StorageClassAnalysis$ = StorageClassAnalysis$; + exports.StorageClassAnalysisDataExport$ = StorageClassAnalysisDataExport$; + exports.StorageClassAnalysisSchemaVersion = StorageClassAnalysisSchemaVersion; + exports.TableSseAlgorithm = TableSseAlgorithm; + exports.Tag$ = Tag$2; + exports.Tagging$ = Tagging$; + exports.TaggingDirective = TaggingDirective; + exports.TargetGrant$ = TargetGrant$; + exports.TargetObjectKeyFormat$ = TargetObjectKeyFormat$; + exports.Tier = Tier; + exports.Tiering$ = Tiering$; + exports.TooManyParts = TooManyParts; + exports.TooManyParts$ = TooManyParts$; + exports.TopicConfiguration$ = TopicConfiguration$; + exports.Transition$ = Transition$; + exports.TransitionDefaultMinimumObjectSize = TransitionDefaultMinimumObjectSize; + exports.TransitionStorageClass = TransitionStorageClass; + exports.Type = Type; + exports.UnsupportedMediaType = UnsupportedMediaType; + exports.UnsupportedMediaType$ = UnsupportedMediaType$; + exports.UpdateBucketMetadataAnnotationTableConfiguration$ = UpdateBucketMetadataAnnotationTableConfiguration$; + exports.UpdateBucketMetadataAnnotationTableConfigurationCommand = UpdateBucketMetadataAnnotationTableConfigurationCommand; + exports.UpdateBucketMetadataAnnotationTableConfigurationRequest$ = UpdateBucketMetadataAnnotationTableConfigurationRequest$; + exports.UpdateBucketMetadataInventoryTableConfiguration$ = UpdateBucketMetadataInventoryTableConfiguration$; + exports.UpdateBucketMetadataInventoryTableConfigurationCommand = UpdateBucketMetadataInventoryTableConfigurationCommand; + exports.UpdateBucketMetadataInventoryTableConfigurationRequest$ = UpdateBucketMetadataInventoryTableConfigurationRequest$; + exports.UpdateBucketMetadataJournalTableConfiguration$ = UpdateBucketMetadataJournalTableConfiguration$; + exports.UpdateBucketMetadataJournalTableConfigurationCommand = UpdateBucketMetadataJournalTableConfigurationCommand; + exports.UpdateBucketMetadataJournalTableConfigurationRequest$ = UpdateBucketMetadataJournalTableConfigurationRequest$; + exports.UpdateObjectEncryption$ = UpdateObjectEncryption$; + exports.UpdateObjectEncryptionCommand = UpdateObjectEncryptionCommand; + exports.UpdateObjectEncryptionRequest$ = UpdateObjectEncryptionRequest$; + exports.UpdateObjectEncryptionResponse$ = UpdateObjectEncryptionResponse$; + exports.UploadPart$ = UploadPart$; + exports.UploadPartCommand = UploadPartCommand; + exports.UploadPartCopy$ = UploadPartCopy$; + exports.UploadPartCopyCommand = UploadPartCopyCommand; + exports.UploadPartCopyOutput$ = UploadPartCopyOutput$; + exports.UploadPartCopyRequest$ = UploadPartCopyRequest$; + exports.UploadPartOutput$ = UploadPartOutput$; + exports.UploadPartRequest$ = UploadPartRequest$; + exports.VersioningConfiguration$ = VersioningConfiguration$; + exports.WebsiteConfiguration$ = WebsiteConfiguration$; + exports.WriteGetObjectResponse$ = WriteGetObjectResponse$; + exports.WriteGetObjectResponseCommand = WriteGetObjectResponseCommand; + exports.WriteGetObjectResponseRequest$ = WriteGetObjectResponseRequest$; + exports._Error$ = _Error$; + exports._Object$ = _Object$; + exports.errorTypeRegistries = errorTypeRegistries5; + exports.paginateListBuckets = paginateListBuckets; + exports.paginateListDirectoryBuckets = paginateListDirectoryBuckets; + exports.paginateListObjectAnnotations = paginateListObjectAnnotations; + exports.paginateListObjectsV2 = paginateListObjectsV2; + exports.paginateListParts = paginateListParts; + exports.waitForBucketExists = waitForBucketExists; + exports.waitForBucketNotExists = waitForBucketNotExists; + exports.waitForObjectExists = waitForObjectExists; + exports.waitForObjectNotExists = waitForObjectNotExists; + exports.waitUntilBucketExists = waitUntilBucketExists; + exports.waitUntilBucketNotExists = waitUntilBucketNotExists; + exports.waitUntilObjectExists = waitUntilObjectExists; + exports.waitUntilObjectNotExists = waitUntilObjectNotExists; + } +}); + +// dist/config/env.js +import { existsSync } from "node:fs"; + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/external.js +var external_exports = {}; +__export(external_exports, { + $brand: () => $brand, + $input: () => $input, + $output: () => $output, + INVALID: () => INVALID, + NEVER: () => NEVER, + TimePrecision: () => TimePrecision, + ZodAny: () => ZodAny, + ZodArray: () => ZodArray, + ZodBase64: () => ZodBase64, + ZodBase64URL: () => ZodBase64URL, + ZodBigInt: () => ZodBigInt, + ZodBigIntFormat: () => ZodBigIntFormat, + ZodBoolean: () => ZodBoolean, + ZodCIDRv4: () => ZodCIDRv4, + ZodCIDRv6: () => ZodCIDRv6, + ZodCUID: () => ZodCUID, + ZodCUID2: () => ZodCUID2, + ZodCatch: () => ZodCatch, + ZodCodec: () => ZodCodec, + ZodCompileAsyncError: () => ZodCompileAsyncError, + ZodCompileUnsupportedError: () => ZodCompileUnsupportedError, + ZodCreditCard: () => ZodCreditCard, + ZodCustom: () => ZodCustom, + ZodCustomStringFormat: () => ZodCustomStringFormat, + ZodDate: () => ZodDate, + ZodDefault: () => ZodDefault, + ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, + ZodE164: () => ZodE164, + ZodEmail: () => ZodEmail, + ZodEmoji: () => ZodEmoji, + ZodEnum: () => ZodEnum, + ZodError: () => ZodError, + ZodExactOptional: () => ZodExactOptional, + ZodFile: () => ZodFile, + ZodFirstPartyTypeKind: () => ZodFirstPartyTypeKind, + ZodFunction: () => ZodFunction, + ZodGUID: () => ZodGUID, + ZodIBAN: () => ZodIBAN, + ZodIPv4: () => ZodIPv4, + ZodIPv6: () => ZodIPv6, + ZodISODate: () => ZodISODate, + ZodISODateTime: () => ZodISODateTime, + ZodISODuration: () => ZodISODuration, + ZodISOTime: () => ZodISOTime, + ZodInstanceOf: () => ZodInstanceOf, + ZodIntersection: () => ZodIntersection, + ZodIssueCode: () => ZodIssueCode, + ZodJWT: () => ZodJWT, + ZodKSUID: () => ZodKSUID, + ZodLazy: () => ZodLazy, + ZodLiteral: () => ZodLiteral, + ZodMAC: () => ZodMAC, + ZodMap: () => ZodMap, + ZodNaN: () => ZodNaN, + ZodNanoID: () => ZodNanoID, + ZodNever: () => ZodNever, + ZodNonOptional: () => ZodNonOptional, + ZodNull: () => ZodNull, + ZodNullable: () => ZodNullable, + ZodNumber: () => ZodNumber, + ZodNumberFormat: () => ZodNumberFormat, + ZodObject: () => ZodObject, + ZodOptional: () => ZodOptional, + ZodPipe: () => ZodPipe, + ZodPrefault: () => ZodPrefault, + ZodPreprocess: () => ZodPreprocess, + ZodPromise: () => ZodPromise, + ZodReadonly: () => ZodReadonly, + ZodRealError: () => ZodRealError, + ZodRecord: () => ZodRecord, + ZodSet: () => ZodSet, + ZodString: () => ZodString, + ZodStringFormat: () => ZodStringFormat, + ZodSuccess: () => ZodSuccess, + ZodSymbol: () => ZodSymbol, + ZodTemplateLiteral: () => ZodTemplateLiteral, + ZodTransform: () => ZodTransform, + ZodTuple: () => ZodTuple, + ZodType: () => ZodType, + ZodULID: () => ZodULID, + ZodURL: () => ZodURL, + ZodUUID: () => ZodUUID, + ZodUndefined: () => ZodUndefined, + ZodUnion: () => ZodUnion, + ZodUnknown: () => ZodUnknown, + ZodVoid: () => ZodVoid, + ZodXID: () => ZodXID, + ZodXor: () => ZodXor, + _ZodString: () => _ZodString, + _default: () => _default2, + _function: () => _function, + any: () => any, + array: () => array, + base64: () => base642, + base64url: () => base64url2, + bigint: () => bigint2, + boolean: () => boolean2, + catch: () => _catch2, + check: () => check, + cidrv4: () => cidrv42, + cidrv6: () => cidrv62, + clone: () => clone, + codec: () => codec, + coerce: () => coerce_exports, + compile: () => compile, + config: () => config, + core: () => core_exports2, + creditCard: () => creditCard2, + cuid: () => cuid3, + cuid2: () => cuid22, + currencyCode: () => currencyCode2, + custom: () => custom, + date: () => date2, + decode: () => decode2, + decodeAsync: () => decodeAsync2, + deepPartial: () => deepPartial, + describe: () => describe2, + discriminatedUnion: () => discriminatedUnion, + e164: () => e1642, + email: () => email2, + emoji: () => emoji2, + encode: () => encode2, + encodeAsync: () => encodeAsync2, + endsWith: () => _endsWith, + enum: () => _enum2, + exactOptional: () => exactOptional, + file: () => file, + flattenError: () => flattenError, + float32: () => float32, + float64: () => float64, + formatError: () => formatError, + fromJSONSchema: () => fromJSONSchema, + function: () => _function, + getDiscriminatedOption: () => getDiscriminatedOption, + getErrorMap: () => getErrorMap, + globalRegistry: () => globalRegistry, + gt: () => _gt, + gte: () => _gte, + guid: () => guid2, + hash: () => hash, + hex: () => hex2, + hostname: () => hostname2, + httpUrl: () => httpUrl, + iban: () => iban2, + includes: () => _includes, + input: () => input, + instanceof: () => _instanceof, + int: () => int, + int32: () => int32, + int64: () => int64, + intersection: () => intersection, + invertCodec: () => invertCodec, + ipv4: () => ipv42, + ipv6: () => ipv62, + iso: () => iso_exports, + json: () => json, + jwt: () => jwt, + keyof: () => keyof, + ksuid: () => ksuid2, + lazy: () => lazy, + length: () => _length, + literal: () => literal, + locales: () => locales_exports, + looseObject: () => looseObject, + looseRecord: () => looseRecord, + lowercase: () => _lowercase, + lt: () => _lt, + lte: () => _lte, + mac: () => mac2, + map: () => map, + maxLength: () => _maxLength, + maxSize: () => _maxSize, + memoizer: () => memoizer, + meta: () => meta2, + mime: () => _mime, + minLength: () => _minLength, + minSize: () => _minSize, + multipleOf: () => _multipleOf, + nan: () => nan, + nanoid: () => nanoid2, + nativeEnum: () => nativeEnum, + negative: () => _negative, + never: () => never, + nonnegative: () => _nonnegative, + nonoptional: () => nonoptional, + nonpositive: () => _nonpositive, + normalize: () => _normalize, + null: () => _null3, + nullable: () => nullable, + nullish: () => nullish2, + number: () => number2, + object: () => object, + optional: () => optional, + output: () => output, + overwrite: () => _overwrite, + parse: () => parse2, + parseAsync: () => parseAsync2, + partialRecord: () => partialRecord, + pipe: () => pipe, + positive: () => _positive, + prefault: () => prefault, + preprocess: () => preprocess, + prettifyError: () => prettifyError, + promise: () => promise, + properties: () => _properties, + property: () => _property, + readonly: () => readonly, + record: () => record, + refine: () => refine, + regex: () => _regex, + regexes: () => regexes_exports, + registry: () => registry, + safeDecode: () => safeDecode2, + safeDecodeAsync: () => safeDecodeAsync2, + safeEncode: () => safeEncode2, + safeEncodeAsync: () => safeEncodeAsync2, + safeParse: () => safeParse2, + safeParseAsync: () => safeParseAsync2, + set: () => set, + setErrorMap: () => setErrorMap, + size: () => _size, + slugify: () => _slugify, + startsWith: () => _startsWith, + strictObject: () => strictObject, + string: () => string2, + stringFormat: () => stringFormat, + stringbool: () => stringbool, + success: () => success, + superRefine: () => superRefine, + symbol: () => symbol, + templateLiteral: () => templateLiteral, + toJSONSchema: () => toJSONSchema, + toLowerCase: () => _toLowerCase, + toUpperCase: () => _toUpperCase, + toZod: () => toZod, + transform: () => transform, + treeifyError: () => treeifyError, + trim: () => _trim, + tuple: () => tuple, + uint32: () => uint32, + uint64: () => uint64, + ulid: () => ulid2, + undefined: () => _undefined3, + union: () => union, + unknown: () => unknown, + uppercase: () => _uppercase, + url: () => url, + util: () => util_exports, + uuid: () => uuid2, + uuidv4: () => uuidv4, + uuidv6: () => uuidv6, + uuidv7: () => uuidv7, + validate: () => validate, + validateAsync: () => validateAsync, + void: () => _void2, + withParser: () => withParser, + xid: () => xid2, + xor: () => xor +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/index.js +var core_exports2 = {}; +__export(core_exports2, { + $ZodAny: () => $ZodAny, + $ZodArray: () => $ZodArray, + $ZodAsyncError: () => $ZodAsyncError, + $ZodBase64: () => $ZodBase64, + $ZodBase64URL: () => $ZodBase64URL, + $ZodBigInt: () => $ZodBigInt, + $ZodBigIntFormat: () => $ZodBigIntFormat, + $ZodBoolean: () => $ZodBoolean, + $ZodCIDRv4: () => $ZodCIDRv4, + $ZodCIDRv6: () => $ZodCIDRv6, + $ZodCUID: () => $ZodCUID, + $ZodCUID2: () => $ZodCUID2, + $ZodCatch: () => $ZodCatch, + $ZodCheck: () => $ZodCheck, + $ZodCheckBigIntFormat: () => $ZodCheckBigIntFormat, + $ZodCheckEndsWith: () => $ZodCheckEndsWith, + $ZodCheckGreaterThan: () => $ZodCheckGreaterThan, + $ZodCheckIncludes: () => $ZodCheckIncludes, + $ZodCheckLengthEquals: () => $ZodCheckLengthEquals, + $ZodCheckLessThan: () => $ZodCheckLessThan, + $ZodCheckLowerCase: () => $ZodCheckLowerCase, + $ZodCheckMaxLength: () => $ZodCheckMaxLength, + $ZodCheckMaxSize: () => $ZodCheckMaxSize, + $ZodCheckMimeType: () => $ZodCheckMimeType, + $ZodCheckMinLength: () => $ZodCheckMinLength, + $ZodCheckMinSize: () => $ZodCheckMinSize, + $ZodCheckMultipleOf: () => $ZodCheckMultipleOf, + $ZodCheckNumberFormat: () => $ZodCheckNumberFormat, + $ZodCheckOverwrite: () => $ZodCheckOverwrite, + $ZodCheckProperties: () => $ZodCheckProperties, + $ZodCheckProperty: () => $ZodCheckProperty, + $ZodCheckRegex: () => $ZodCheckRegex, + $ZodCheckSizeEquals: () => $ZodCheckSizeEquals, + $ZodCheckStartsWith: () => $ZodCheckStartsWith, + $ZodCheckStringFormat: () => $ZodCheckStringFormat, + $ZodCheckUpperCase: () => $ZodCheckUpperCase, + $ZodCodec: () => $ZodCodec, + $ZodCreditCard: () => $ZodCreditCard, + $ZodCustom: () => $ZodCustom, + $ZodCustomStringFormat: () => $ZodCustomStringFormat, + $ZodCyclicError: () => $ZodCyclicError, + $ZodDate: () => $ZodDate, + $ZodDefault: () => $ZodDefault, + $ZodDiscriminatedUnion: () => $ZodDiscriminatedUnion, + $ZodE164: () => $ZodE164, + $ZodEmail: () => $ZodEmail, + $ZodEmoji: () => $ZodEmoji, + $ZodEncodeError: () => $ZodEncodeError, + $ZodEnum: () => $ZodEnum, + $ZodError: () => $ZodError, + $ZodExactOptional: () => $ZodExactOptional, + $ZodFile: () => $ZodFile, + $ZodFunction: () => $ZodFunction, + $ZodGUID: () => $ZodGUID, + $ZodIBAN: () => $ZodIBAN, + $ZodIPv4: () => $ZodIPv4, + $ZodIPv6: () => $ZodIPv6, + $ZodISODate: () => $ZodISODate, + $ZodISODateTime: () => $ZodISODateTime, + $ZodISODuration: () => $ZodISODuration, + $ZodISOTime: () => $ZodISOTime, + $ZodIntersection: () => $ZodIntersection, + $ZodJWT: () => $ZodJWT, + $ZodKSUID: () => $ZodKSUID, + $ZodLazy: () => $ZodLazy, + $ZodLiteral: () => $ZodLiteral, + $ZodMAC: () => $ZodMAC, + $ZodMap: () => $ZodMap, + $ZodNaN: () => $ZodNaN, + $ZodNanoID: () => $ZodNanoID, + $ZodNever: () => $ZodNever, + $ZodNonOptional: () => $ZodNonOptional, + $ZodNull: () => $ZodNull, + $ZodNullable: () => $ZodNullable, + $ZodNumber: () => $ZodNumber, + $ZodNumberFormat: () => $ZodNumberFormat, + $ZodObject: () => $ZodObject, + $ZodObjectJIT: () => $ZodObjectJIT, + $ZodOptional: () => $ZodOptional, + $ZodPipe: () => $ZodPipe, + $ZodPrefault: () => $ZodPrefault, + $ZodPreprocess: () => $ZodPreprocess, + $ZodPromise: () => $ZodPromise, + $ZodReadonly: () => $ZodReadonly, + $ZodRealError: () => $ZodRealError, + $ZodRecord: () => $ZodRecord, + $ZodRegistry: () => $ZodRegistry, + $ZodSet: () => $ZodSet, + $ZodString: () => $ZodString, + $ZodStringFormat: () => $ZodStringFormat, + $ZodSuccess: () => $ZodSuccess, + $ZodSymbol: () => $ZodSymbol, + $ZodTemplateLiteral: () => $ZodTemplateLiteral, + $ZodTransform: () => $ZodTransform, + $ZodTuple: () => $ZodTuple, + $ZodType: () => $ZodType, + $ZodULID: () => $ZodULID, + $ZodURL: () => $ZodURL, + $ZodUUID: () => $ZodUUID, + $ZodUndefined: () => $ZodUndefined, + $ZodUnion: () => $ZodUnion, + $ZodUnknown: () => $ZodUnknown, + $ZodVoid: () => $ZodVoid, + $ZodXID: () => $ZodXID, + $ZodXor: () => $ZodXor, + $brand: () => $brand, + $constructor: () => $constructor, + $input: () => $input, + $output: () => $output, + Doc: () => Doc, + INVALID: () => INVALID, + JSONSchema: () => json_schema_exports, + JSONSchemaGenerator: () => JSONSchemaGenerator, + NEVER: () => NEVER, + TimePrecision: () => TimePrecision, + URL_BAD_FORMAT: () => URL_BAD_FORMAT, + URL_UNPARSEABLE: () => URL_UNPARSEABLE, + ZodCompileAsyncError: () => ZodCompileAsyncError, + ZodCompileUnsupportedError: () => ZodCompileUnsupportedError, + _any: () => _any, + _array: () => _array, + _base64: () => _base64, + _base64url: () => _base64url, + _bigint: () => _bigint, + _boolean: () => _boolean, + _catch: () => _catch, + _check: () => _check, + _cidrv4: () => _cidrv4, + _cidrv6: () => _cidrv6, + _coercedBigint: () => _coercedBigint, + _coercedBoolean: () => _coercedBoolean, + _coercedDate: () => _coercedDate, + _coercedNumber: () => _coercedNumber, + _coercedString: () => _coercedString, + _creditCard: () => _creditCard, + _cuid: () => _cuid, + _cuid2: () => _cuid2, + _custom: () => _custom, + _date: () => _date, + _decode: () => _decode, + _decodeAsync: () => _decodeAsync, + _default: () => _default, + _discriminatedUnion: () => _discriminatedUnion, + _e164: () => _e164, + _email: () => _email, + _emoji: () => _emoji2, + _encode: () => _encode, + _encodeAsync: () => _encodeAsync, + _endsWith: () => _endsWith, + _enum: () => _enum, + _file: () => _file, + _float32: () => _float32, + _float64: () => _float64, + _gt: () => _gt, + _gte: () => _gte, + _guid: () => _guid, + _iban: () => _iban, + _includes: () => _includes, + _int: () => _int, + _int32: () => _int32, + _int64: () => _int64, + _intersection: () => _intersection, + _ipv4: () => _ipv4, + _ipv6: () => _ipv6, + _isoDate: () => _isoDate, + _isoDateTime: () => _isoDateTime, + _isoDuration: () => _isoDuration, + _isoTime: () => _isoTime, + _jwt: () => _jwt, + _ksuid: () => _ksuid, + _lazy: () => _lazy, + _length: () => _length, + _literal: () => _literal, + _lowercase: () => _lowercase, + _lt: () => _lt, + _lte: () => _lte, + _mac: () => _mac, + _map: () => _map, + _max: () => _lte, + _maxLength: () => _maxLength, + _maxSize: () => _maxSize, + _mime: () => _mime, + _min: () => _gte, + _minLength: () => _minLength, + _minSize: () => _minSize, + _multipleOf: () => _multipleOf, + _nan: () => _nan, + _nanoid: () => _nanoid, + _nativeEnum: () => _nativeEnum, + _negative: () => _negative, + _never: () => _never, + _nonnegative: () => _nonnegative, + _nonoptional: () => _nonoptional, + _nonpositive: () => _nonpositive, + _normalize: () => _normalize, + _null: () => _null2, + _nullable: () => _nullable, + _number: () => _number, + _optional: () => _optional, + _overwrite: () => _overwrite, + _parse: () => _parse, + _parseAsync: () => _parseAsync, + _pipe: () => _pipe, + _positive: () => _positive, + _promise: () => _promise, + _properties: () => _properties, + _property: () => _property, + _readonly: () => _readonly, + _record: () => _record, + _refine: () => _refine, + _regex: () => _regex, + _safeDecode: () => _safeDecode, + _safeDecodeAsync: () => _safeDecodeAsync, + _safeEncode: () => _safeEncode, + _safeEncodeAsync: () => _safeEncodeAsync, + _safeParse: () => _safeParse, + _safeParseAsync: () => _safeParseAsync, + _set: () => _set, + _size: () => _size, + _slugify: () => _slugify, + _startsWith: () => _startsWith, + _string: () => _string, + _stringFormat: () => _stringFormat, + _stringbool: () => _stringbool, + _success: () => _success, + _superRefine: () => _superRefine, + _symbol: () => _symbol, + _templateLiteral: () => _templateLiteral, + _toLowerCase: () => _toLowerCase, + _toUpperCase: () => _toUpperCase, + _transform: () => _transform, + _trim: () => _trim, + _tuple: () => _tuple, + _uint32: () => _uint32, + _uint64: () => _uint64, + _ulid: () => _ulid, + _undefined: () => _undefined2, + _union: () => _union, + _unknown: () => _unknown, + _uppercase: () => _uppercase, + _url: () => _url, + _uuid: () => _uuid, + _uuidv4: () => _uuidv4, + _uuidv6: () => _uuidv6, + _uuidv7: () => _uuidv7, + _void: () => _void, + _xid: () => _xid, + _xor: () => _xor, + base64Charset: () => base64Charset, + base64urlCharset: () => base64urlCharset, + canParseURL: () => canParseURL, + clone: () => clone, + compile: () => compile, + compileFn: () => compileFn, + config: () => config, + createStandardJSONSchemaMethod: () => createStandardJSONSchemaMethod, + createToJSONSchemaMethod: () => createToJSONSchemaMethod, + decode: () => decode, + decodeAsync: () => decodeAsync, + describe: () => describe, + encode: () => encode, + encodeAsync: () => encodeAsync, + extractDefs: () => extractDefs, + finalize: () => finalize, + flattenError: () => flattenError, + formatError: () => formatError, + getDiscriminatedOption: () => getDiscriminatedOption, + globalConfig: () => globalConfig, + globalRegistry: () => globalRegistry, + handleUnrepresentable: () => handleUnrepresentable, + initializeContext: () => initializeContext, + isBackEdge: () => isBackEdge, + isRecursiveSchema: () => isRecursiveSchema, + isValidBase64: () => isValidBase64, + isValidBase64URL: () => isValidBase64URL, + isValidCIDRv6: () => isValidCIDRv6, + isValidCreditCard: () => isValidCreditCard, + isValidIBAN: () => isValidIBAN, + isValidIPv6: () => isValidIPv6, + isValidJWT: () => isValidJWT, + locales: () => locales_exports, + memoizer: () => memoizer, + mergeValues: () => mergeValues, + meta: () => meta, + parse: () => parse, + parseAsync: () => parseAsync, + parseURLObject: () => parseURLObject, + prettifyError: () => prettifyError, + process: () => processSchema, + processSchema: () => processSchema, + regexes: () => regexes_exports, + registry: () => registry, + safeDecode: () => safeDecode, + safeDecodeAsync: () => safeDecodeAsync, + safeEncode: () => safeEncode, + safeEncodeAsync: () => safeEncodeAsync, + safeParse: () => safeParse, + safeParseAsync: () => safeParseAsync, + standardProps: () => standardProps, + stripTabAndNewline: () => stripTabAndNewline, + toDotPath: () => toDotPath, + toJSONSchema: () => toJSONSchema, + toZod: () => toZod, + treeifyError: () => treeifyError, + urlHostnameOk: () => urlHostnameOk, + urlProtocolOk: () => urlProtocolOk, + util: () => util_exports, + validate: () => validate, + validateAsync: () => validateAsync, + validateURL: () => validateURL, + version: () => version, + withParser: () => withParser +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/util.js +var util_exports = {}; +__export(util_exports, { + BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES, + CONSTANT_CATCH: () => CONSTANT_CATCH, + Class: () => Class, + NUMBER_FORMAT_RANGES: () => NUMBER_FORMAT_RANGES, + aborted: () => aborted, + allowsEval: () => allowsEval, + assert: () => assert, + assertEqual: () => assertEqual, + assertIs: () => assertIs, + assertNever: () => assertNever, + assertNotEqual: () => assertNotEqual, + assignProp: () => assignProp, + attachSchema: () => attachSchema, + base64ToUint8Array: () => base64ToUint8Array, + base64urlToUint8Array: () => base64urlToUint8Array, + cached: () => cached, + captureStackTrace: () => captureStackTrace, + cleanEnum: () => cleanEnum, + cleanRegex: () => cleanRegex, + clone: () => clone, + cloneDef: () => cloneDef, + codePointLength: () => codePointLength, + constantCatch: () => constantCatch, + createTransparentProxy: () => createTransparentProxy, + defineLazy: () => defineLazy, + defineLazyInternal: () => defineLazyInternal, + derived: () => derived, + esc: () => esc, + escapeRegex: () => escapeRegex, + explicitlyAborted: () => explicitlyAborted, + extend: () => extend, + finalizeIssue: () => finalizeIssue, + floatSafeRemainder: () => floatSafeRemainder, + getElementAtPath: () => getElementAtPath, + getEnumValues: () => getEnumValues, + getLengthableOrigin: () => getLengthableOrigin, + getParsedType: () => getParsedType, + getSizableOrigin: () => getSizableOrigin, + hexToUint8Array: () => hexToUint8Array, + hide: () => hide, + installLazyProp: () => installLazyProp, + isObject: () => isObject, + isPlainObject: () => isPlainObject, + issue: () => issue, + joinValues: () => joinValues, + jsonStringifyReplacer: () => jsonStringifyReplacer, + members: () => members, + merge: () => merge, + mergeDefs: () => mergeDefs, + normalizeParams: () => normalizeParams, + nullish: () => nullish, + numKeys: () => numKeys, + objectClone: () => objectClone, + omit: () => omit, + optionalKeys: () => optionalKeys, + own: () => own, + parsedType: () => parsedType, + partial: () => partial, + pick: () => pick, + prefixIssues: () => prefixIssues, + primitiveTypes: () => primitiveTypes, + promiseAllObject: () => promiseAllObject, + propertyKeyTypes: () => propertyKeyTypes, + randomString: () => randomString, + rawShape: () => rawShape, + required: () => required, + safeExtend: () => safeExtend, + shallowClone: () => shallowClone, + sizeCaps: () => sizeCaps, + slugify: () => slugify, + stringifyPrimitive: () => stringifyPrimitive, + toZod: () => toZod, + uint8ArrayToBase64: () => uint8ArrayToBase64, + uint8ArrayToBase64url: () => uint8ArrayToBase64url, + uint8ArrayToHex: () => uint8ArrayToHex, + unwrapMessage: () => unwrapMessage +}); +function assertEqual(val) { + return val; +} +__name(assertEqual, "assertEqual"); +function assertNotEqual(val) { + return val; +} +__name(assertNotEqual, "assertNotEqual"); +function toZod() { + return (schema2) => schema2; +} +__name(toZod, "toZod"); +function assertIs(_arg) { +} +__name(assertIs, "assertIs"); +function assertNever(_x) { + throw new Error("Unexpected value in exhaustive check"); +} +__name(assertNever, "assertNever"); +function assert(_) { +} +__name(assert, "assert"); +function getEnumValues(entries) { + const numericValues = Object.values(entries).filter((v) => typeof v === "number"); + const values = Object.entries(entries).filter(([k5, _]) => numericValues.indexOf(+k5) === -1).map(([_, v]) => v); + return values; +} +__name(getEnumValues, "getEnumValues"); +function joinValues(array2, separator = "|") { + return array2.map((val) => stringifyPrimitive(val)).join(separator); +} +__name(joinValues, "joinValues"); +function jsonStringifyReplacer(_, value) { + if (typeof value === "bigint") + return value.toString(); + return value; +} +__name(jsonStringifyReplacer, "jsonStringifyReplacer"); +var Cached = class { + static { + __name(this, "Cached"); + } + constructor(getter) { + this._getter = getter; + this._value = void 0; + } + get value() { + const getter = this._getter; + if (getter !== void 0) { + this._value = getter(); + this._getter = void 0; + } + return this._value; + } +}; +function cached(getter) { + return new Cached(getter); +} +__name(cached, "cached"); +function nullish(input2) { + return input2 === null || input2 === void 0; +} +__name(nullish, "nullish"); +function cleanRegex(source) { + const start = source.startsWith("^") ? 1 : 0; + const end = source.endsWith("$") ? source.length - 1 : source.length; + return source.slice(start, end); +} +__name(cleanRegex, "cleanRegex"); +function floatSafeRemainder(val, step) { + const ratio = val / step; + const roundedRatio = Math.round(ratio); + const tolerance = 4 * Number.EPSILON * Math.max(Math.abs(ratio), 1); + if (Math.abs(ratio - roundedRatio) < tolerance) + return 0; + return ratio - roundedRatio; +} +__name(floatSafeRemainder, "floatSafeRemainder"); +var EVALUATING = /* @__PURE__ */ Symbol("evaluating"); +function defineLazy(object2, key, getter) { + let value = void 0; + Object.defineProperty(object2, key, { + get() { + if (value === EVALUATING) { + return void 0; + } + if (value === void 0) { + value = EVALUATING; + value = getter(); + } + return value; + }, + set(v) { + Object.defineProperty(object2, key, { + value: v + // configurable: true, + }); + }, + configurable: true + }); +} +__name(defineLazy, "defineLazy"); +function objectClone(obj) { + return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); +} +__name(objectClone, "objectClone"); +function assignProp(target, prop, value) { + Object.defineProperty(target, prop, { + value, + writable: true, + enumerable: true, + configurable: true + }); +} +__name(assignProp, "assignProp"); +function rawShape(def) { + const desc = Object.getOwnPropertyDescriptor(def, "shape"); + return desc?.get ? desc.get.raw : desc?.value; +} +__name(rawShape, "rawShape"); +function sourceShape(schema2) { + return rawShape(schema2._zod.def) ?? schema2._zod.def.shape; +} +__name(sourceShape, "sourceShape"); +function deferProp(target, key, getter) { + Object.defineProperty(target, key, { + get() { + const value = getter(); + assignProp(this, key, value); + return value; + }, + enumerable: true, + configurable: true + }); +} +__name(deferProp, "deferProp"); +function putProp(target, key, value) { + if (key in target) + assignProp(target, key, value); + else + target[key] = value; +} +__name(putProp, "putProp"); +function mirrorShape(target, source, keys, wrap) { + const raw4 = sourceShape(source); + for (const key of keys) { + const desc = Object.getOwnPropertyDescriptor(raw4, key); + if (!desc.enumerable) + continue; + if (desc.get) { + deferProp(target, key, () => { + const value = source._zod.def.shape[key]; + return wrap ? wrap(value, key) : value; + }); + } else + putProp(target, key, wrap ? wrap(desc.value, key) : desc.value); + } +} +__name(mirrorShape, "mirrorShape"); +function mirrorProps(target, source) { + for (const key of Reflect.ownKeys(source)) { + const desc = Object.getOwnPropertyDescriptor(source, key); + if (!desc.enumerable) + continue; + if (desc.get) + deferProp(target, key, () => source[key]); + else + putProp(target, key, desc.value); + } +} +__name(mirrorProps, "mirrorProps"); +function mergeDefs(...defs) { + const mergedDescriptors = {}; + for (const def of defs) { + const descriptors = Object.getOwnPropertyDescriptors(def); + Object.assign(mergedDescriptors, descriptors); + } + return Object.defineProperties({}, mergedDescriptors); +} +__name(mergeDefs, "mergeDefs"); +function cloneDef(schema2) { + return mergeDefs(schema2._zod.def); +} +__name(cloneDef, "cloneDef"); +function getElementAtPath(obj, path2) { + if (!path2) + return obj; + return path2.reduce((acc, key) => acc?.[key], obj); +} +__name(getElementAtPath, "getElementAtPath"); +function promiseAllObject(promisesObj) { + const keys = Object.keys(promisesObj); + const promises = keys.map((key) => promisesObj[key]); + return Promise.all(promises).then((results) => { + const resolvedObj = {}; + for (let i5 = 0; i5 < keys.length; i5++) { + resolvedObj[keys[i5]] = results[i5]; + } + return resolvedObj; + }); +} +__name(promiseAllObject, "promiseAllObject"); +function randomString(length = 10) { + const chars = "abcdefghijklmnopqrstuvwxyz"; + let str = ""; + for (let i5 = 0; i5 < length; i5++) { + str += chars[Math.floor(Math.random() * chars.length)]; + } + return str; +} +__name(randomString, "randomString"); +function esc(str) { + return JSON.stringify(str); +} +__name(esc, "esc"); +function slugify(input2) { + return input2.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, ""); +} +__name(slugify, "slugify"); +var captureStackTrace = "captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { +}; +function isObject(data) { + return typeof data === "object" && data !== null && !Array.isArray(data); +} +__name(isObject, "isObject"); +var allowsEval = /* @__PURE__ */ cached(() => { + if (globalConfig.jitless) { + return false; + } + if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) { + return false; + } + try { + const F = Function; + new F(""); + return true; + } catch (_) { + return false; + } +}); +function isPlainObject(o3) { + if (isObject(o3) === false) + return false; + const ctor = o3.constructor; + if (ctor === void 0) + return true; + if (typeof ctor !== "function") + return true; + const prot = ctor.prototype; + if (isObject(prot) === false) + return false; + if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) { + return false; + } + return true; +} +__name(isPlainObject, "isPlainObject"); +function shallowClone(o3) { + if (isPlainObject(o3)) + return { ...o3 }; + if (Array.isArray(o3)) + return [...o3]; + if (o3 instanceof Map) + return new Map(o3); + if (o3 instanceof Set) + return new Set(o3); + return o3; +} +__name(shallowClone, "shallowClone"); +function numKeys(data) { + let keyCount = 0; + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + keyCount++; + } + } + return keyCount; +} +__name(numKeys, "numKeys"); +var getParsedType = /* @__PURE__ */ __name((data) => { + const t = typeof data; + switch (t) { + case "undefined": + return "undefined"; + case "string": + return "string"; + case "number": + return Number.isNaN(data) ? "nan" : "number"; + case "boolean": + return "boolean"; + case "function": + return "function"; + case "bigint": + return "bigint"; + case "symbol": + return "symbol"; + case "object": + if (Array.isArray(data)) { + return "array"; + } + if (data === null) { + return "null"; + } + if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { + return "promise"; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return "map"; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return "set"; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return "date"; + } + if (typeof File !== "undefined" && data instanceof File) { + return "file"; + } + return "object"; + default: + throw new Error(`Unknown data type: ${t}`); + } +}, "getParsedType"); +var propertyKeyTypes = /* @__PURE__ */ new Set(["string", "number", "symbol"]); +var primitiveTypes = /* @__PURE__ */ new Set([ + "string", + "number", + "bigint", + "boolean", + "symbol", + "undefined" +]); +function escapeRegex(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} +__name(escapeRegex, "escapeRegex"); +function clone(inst, def, params) { + const cl = new inst._zod.constr(def ?? inst._zod.def); + if (!def || params?.parent) + cl._zod.parent = inst; + return cl; +} +__name(clone, "clone"); +function normalizeParams(_params) { + const params = _params; + if (!params) + return {}; + if (typeof params === "string") + return { error: /* @__PURE__ */ __name(() => params, "error") }; + if (params?.message !== void 0) { + if (params?.error !== void 0) + throw new Error("Cannot specify both `message` and `error` params"); + params.error = params.message; + } + delete params.message; + if (typeof params.error === "string") + return { ...params, error: /* @__PURE__ */ __name(() => params.error, "error") }; + return params; +} +__name(normalizeParams, "normalizeParams"); +function createTransparentProxy(getter) { + let target; + return new Proxy({}, { + get(_, prop, receiver) { + target ?? (target = getter()); + return Reflect.get(target, prop, receiver); + }, + set(_, prop, value, receiver) { + target ?? (target = getter()); + return Reflect.set(target, prop, value, receiver); + }, + has(_, prop) { + target ?? (target = getter()); + return Reflect.has(target, prop); + }, + deleteProperty(_, prop) { + target ?? (target = getter()); + return Reflect.deleteProperty(target, prop); + }, + ownKeys(_) { + target ?? (target = getter()); + return Reflect.ownKeys(target); + }, + getOwnPropertyDescriptor(_, prop) { + target ?? (target = getter()); + return Reflect.getOwnPropertyDescriptor(target, prop); + }, + defineProperty(_, prop, descriptor) { + target ?? (target = getter()); + return Reflect.defineProperty(target, prop, descriptor); + } + }); +} +__name(createTransparentProxy, "createTransparentProxy"); +function stringifyPrimitive(value) { + if (typeof value === "bigint") + return value.toString() + "n"; + if (typeof value === "string") + return `"${value}"`; + return `${value}`; +} +__name(stringifyPrimitive, "stringifyPrimitive"); +function optionalKeys(shape) { + return Object.keys(shape).filter((k5) => { + return shape[k5]._zod.optin !== void 0 && shape[k5]._zod.optout === "optional"; + }); +} +__name(optionalKeys, "optionalKeys"); +var NUMBER_FORMAT_RANGES = /* @__PURE__ */ (() => ({ + safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], + int32: [-2147483648, 2147483647], + uint32: [0, 4294967295], + float32: [-34028234663852886e22, 34028234663852886e22], + float64: [-Number.MAX_VALUE, Number.MAX_VALUE] +}))(); +var BIGINT_FORMAT_RANGES = { + int64: [/* @__PURE__ */ BigInt("-9223372036854775808"), /* @__PURE__ */ BigInt("9223372036854775807")], + uint64: [/* @__PURE__ */ BigInt(0), /* @__PURE__ */ BigInt("18446744073709551615")] +}; +function pick(schema2, mask) { + const currDef = schema2._zod.def; + const checks = currDef.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + throw new Error(".pick() cannot be used on object schemas containing refinements"); + } + const newShape = {}; + mirrorShape(newShape, schema2, maskedKeys(schema2, mask)); + return clone(schema2, mergeDefs(currDef, { shape: newShape, checks: [] })); +} +__name(pick, "pick"); +function maskedKeys(schema2, mask) { + const raw4 = sourceShape(schema2); + const keys = []; + for (const key of Reflect.ownKeys(mask)) { + if (!Object.getOwnPropertyDescriptor(raw4, key)?.enumerable) { + throw new Error(`Unrecognized key: "${String(key)}"`); + } + if (mask[key]) + keys.push(key); + } + return keys; +} +__name(maskedKeys, "maskedKeys"); +function omit(schema2, mask) { + const currDef = schema2._zod.def; + const checks = currDef.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + throw new Error(".omit() cannot be used on object schemas containing refinements"); + } + const omitted = new Set(maskedKeys(schema2, mask)); + const newShape = {}; + mirrorShape(newShape, schema2, Reflect.ownKeys(sourceShape(schema2)).filter((key) => !omitted.has(key))); + return clone(schema2, mergeDefs(currDef, { shape: newShape, checks: [] })); +} +__name(omit, "omit"); +function extend(schema2, shape) { + if (!isPlainObject(shape)) { + throw new Error("Invalid input to extend: expected a plain object"); + } + const checks = schema2._zod.def.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + const existingShape = sourceShape(schema2); + for (const key of Reflect.ownKeys(shape)) { + if (Object.getOwnPropertyDescriptor(existingShape, key) !== void 0) { + throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead."); + } + } + } + return clone(schema2, mergeDefs(schema2._zod.def, { shape: extended(schema2, shape) })); +} +__name(extend, "extend"); +function extended(schema2, shape) { + const newShape = {}; + mirrorShape(newShape, schema2, Reflect.ownKeys(sourceShape(schema2))); + mirrorProps(newShape, shape); + return newShape; +} +__name(extended, "extended"); +function safeExtend(schema2, shape) { + if (!isPlainObject(shape)) { + throw new Error("Invalid input to safeExtend: expected a plain object"); + } + return clone(schema2, mergeDefs(schema2._zod.def, { shape: extended(schema2, shape) })); +} +__name(safeExtend, "safeExtend"); +function merge(a5, b5) { + if (!b5?._zod?.def) { + throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`."); + } + if (a5._zod.def.checks?.length) { + throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead."); + } + const newShape = {}; + mirrorShape(newShape, a5, Reflect.ownKeys(sourceShape(a5))); + mirrorShape(newShape, b5, Reflect.ownKeys(sourceShape(b5))); + const def = mergeDefs(a5._zod.def, { + shape: newShape, + get catchall() { + return b5._zod.def.catchall; + }, + checks: b5._zod.def.checks ?? [] + }); + return clone(a5, def); +} +__name(merge, "merge"); +function partial(Class2, schema2, mask, name2 = "partial") { + const currDef = schema2._zod.def; + const checks = currDef.checks; + const hasChecks = checks && checks.length > 0; + if (hasChecks) { + throw new Error(`.${name2}() cannot be used on object schemas containing refinements`); + } + const selected = mask ? new Set(maskedKeys(schema2, mask)) : void 0; + const newShape = {}; + mirrorShape(newShape, schema2, Reflect.ownKeys(sourceShape(schema2)), Class2 && ((value, key) => selected && !selected.has(key) ? value : new Class2({ type: "optional", innerType: value }))); + return clone(schema2, mergeDefs(schema2._zod.def, { shape: newShape, checks: [] })); +} +__name(partial, "partial"); +function required(Class2, schema2, mask) { + const selected = mask ? new Set(maskedKeys(schema2, mask)) : void 0; + const newShape = {}; + mirrorShape(newShape, schema2, Reflect.ownKeys(sourceShape(schema2)), (value, key) => ( + // overwrite with non-optional + selected && !selected.has(key) ? value : new Class2({ type: "nonoptional", innerType: value }) + )); + return clone(schema2, mergeDefs(schema2._zod.def, { shape: newShape })); +} +__name(required, "required"); +function aborted(x, startIndex = 0) { + if (x.aborted === true) + return true; + for (let i5 = startIndex; i5 < x.issues.length; i5++) { + if (x.issues[i5]?.continue !== true) { + return true; + } + } + return false; +} +__name(aborted, "aborted"); +function explicitlyAborted(x, startIndex = 0) { + if (x.aborted === true) + return true; + for (let i5 = startIndex; i5 < x.issues.length; i5++) { + if (x.issues[i5]?.continue === false) { + return true; + } + } + return false; +} +__name(explicitlyAborted, "explicitlyAborted"); +function prefixIssues(path2, issues) { + return issues.map((iss) => { + var _a4; + (_a4 = iss).path ?? (_a4.path = []); + iss.path.unshift(path2); + return iss; + }); +} +__name(prefixIssues, "prefixIssues"); +function unwrapMessage(message) { + return typeof message === "string" ? message : message?.message; +} +__name(unwrapMessage, "unwrapMessage"); +function sizeCaps(defChecks) { + const caps = []; + for (const ch of defChecks ?? []) { + const d5 = ch._zod.def; + if (!/_(length|size)$|_equals$/.test(d5.check)) + break; + const max = d5.maximum ?? d5.length ?? d5.size; + if (max >= 0) + caps.push([max, ch]); + } + return caps; +} +__name(sizeCaps, "sizeCaps"); +function attachSchema(issues, start, inst) { + var _a4; + for (let i5 = start; i5 < issues.length; i5++) { + (_a4 = issues[i5]).schema ?? (_a4.schema = inst); + } +} +__name(attachSchema, "attachSchema"); +function finalizeIssue(iss, ctx, config3) { + var _a4; + const traits = iss.inst?._zod?.traits; + if (traits?.has("$ZodType")) { + if (traits.has("$ZodCheck")) + (_a4 = iss).schema ?? (_a4.schema = iss.inst); + else + iss.schema = iss.inst; + } + const schemaError = iss.schema !== iss.inst ? iss.schema?._zod.def?.error : void 0; + const message = iss.message ? iss.message : unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(schemaError?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config3.customError?.(iss)) ?? unwrapMessage(config3.localeError?.(iss)) ?? "Invalid input"; + const full = {}; + for (const k5 of Object.keys(iss)) { + if (k5 === "inst" || k5 === "schema" || k5 === "continue" || k5 === "input" || k5 === "__proto__") + continue; + full[k5] = iss[k5]; + } + full.path ?? (full.path = []); + full.message = message; + if (ctx?.reportInput) { + full.input = iss.input; + } + return full; +} +__name(finalizeIssue, "finalizeIssue"); +function getSizableOrigin(input2) { + if (input2 instanceof Set) + return "set"; + if (input2 instanceof Map) + return "map"; + if (input2 instanceof File) + return "file"; + return "unknown"; +} +__name(getSizableOrigin, "getSizableOrigin"); +var highSurrogate = /[\uD800-\uDBFF]/; +function codePointLength(str) { + const units = str.length; + if (!highSurrogate.test(str)) + return units; + let count = units; + for (let i5 = 0; i5 < units - 1; i5++) { + if ((str.charCodeAt(i5) & 64512) === 55296 && (str.charCodeAt(i5 + 1) & 64512) === 56320) { + count--; + i5++; + } + } + return count; +} +__name(codePointLength, "codePointLength"); +function getLengthableOrigin(input2) { + if (Array.isArray(input2)) + return "array"; + if (typeof input2 === "string") + return "string"; + return "unknown"; +} +__name(getLengthableOrigin, "getLengthableOrigin"); +function parsedType(data) { + const t = typeof data; + switch (t) { + case "number": { + return Number.isNaN(data) ? "nan" : "number"; + } + case "object": { + if (data === null) { + return "null"; + } + if (Array.isArray(data)) { + return "array"; + } + const obj = data; + if (obj && Object.getPrototypeOf(obj) !== Object.prototype && "constructor" in obj && obj.constructor) { + return obj.constructor.name; + } + } + } + return t; +} +__name(parsedType, "parsedType"); +function issue(...args) { + const [iss, input2, inst] = args; + if (typeof iss === "string") { + return { + message: iss, + code: "custom", + input: input2, + inst + }; + } + return { ...iss }; +} +__name(issue, "issue"); +function cleanEnum(obj) { + return Object.entries(obj).filter(([k5, _]) => { + return Number.isNaN(Number.parseInt(k5, 10)); + }).map((el) => el[1]); +} +__name(cleanEnum, "cleanEnum"); +function base64ToUint8Array(base643) { + const binaryString = atob(base643); + const bytes = new Uint8Array(binaryString.length); + for (let i5 = 0; i5 < binaryString.length; i5++) { + bytes[i5] = binaryString.charCodeAt(i5); + } + return bytes; +} +__name(base64ToUint8Array, "base64ToUint8Array"); +function uint8ArrayToBase64(bytes) { + let binaryString = ""; + for (let i5 = 0; i5 < bytes.length; i5++) { + binaryString += String.fromCharCode(bytes[i5]); + } + return btoa(binaryString); +} +__name(uint8ArrayToBase64, "uint8ArrayToBase64"); +function base64urlToUint8Array(base64url3) { + const base643 = base64url3.replace(/-/g, "+").replace(/_/g, "/"); + const padding = "=".repeat((4 - base643.length % 4) % 4); + return base64ToUint8Array(base643 + padding); +} +__name(base64urlToUint8Array, "base64urlToUint8Array"); +function uint8ArrayToBase64url(bytes) { + return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); +} +__name(uint8ArrayToBase64url, "uint8ArrayToBase64url"); +function hexToUint8Array(hex3) { + const cleanHex = hex3.replace(/^0x/, ""); + if (cleanHex.length % 2 !== 0) { + throw new Error("Invalid hex string length"); + } + const bytes = new Uint8Array(cleanHex.length / 2); + for (let i5 = 0; i5 < cleanHex.length; i5 += 2) { + bytes[i5 / 2] = Number.parseInt(cleanHex.slice(i5, i5 + 2), 16); + } + return bytes; +} +__name(hexToUint8Array, "hexToUint8Array"); +function uint8ArrayToHex(bytes) { + return Array.from(bytes).map((b5) => b5.toString(16).padStart(2, "0")).join(""); +} +__name(uint8ArrayToHex, "uint8ArrayToHex"); +var Class = class { + static { + __name(this, "Class"); + } + constructor(..._args) { + } +}; +function members(proto, table) { + for (const key in table) { + const desc = Object.getOwnPropertyDescriptor(table, key); + if (desc.get) + Object.defineProperty(proto, key, { ...desc, enumerable: false }); + else + defineBound(proto, key, desc.value); + } +} +__name(members, "members"); +function own(inst, key, value, enumerable = true) { + Object.defineProperty(inst, key, { configurable: true, writable: true, enumerable, value }); + return value; +} +__name(own, "own"); +function hide(inst, key, value) { + return own(inst, key, value, false); +} +__name(hide, "hide"); +// @__NO_SIDE_EFFECTS__ +function derived(computes, table) { + for (const key in computes) { + const compute = computes[key]; + Object.defineProperty(table, key, { + configurable: true, + enumerable: true, + get() { + return own(this, key, compute(this)); + }, + set(value) { + own(this, key, value); + } + }); + } + return table; +} +__name(derived, "derived"); +function defineBound(proto, key, fn) { + Object.defineProperty(proto, key, { + configurable: true, + get() { + return this == null ? fn : own(this, key, fn.bind(this)); + }, + set(value) { + own(this, key, value); + } + }); +} +__name(defineBound, "defineBound"); +function claim(inst, sentinel) { + const proto = Object.getPrototypeOf(inst); + return sentinel in proto ? void 0 : proto; +} +__name(claim, "claim"); +var installing; +var broke = false; +var breaker = { + configurable: true, + get() { + broke = true; + return void 0; + } +}; +function defineLazyInternal(inst, key, compute) { + const proto = Object.getPrototypeOf(inst._zod); + if (key in proto && installing !== inst._zod) { + installing = void 0; + return; + } + installing = inst._zod; + Object.defineProperty(proto, key, { + configurable: true, + get() { + Object.defineProperty(this, key, breaker); + const outer = broke; + broke = false; + try { + const value = compute(this); + if (broke) + delete this[key]; + else + Object.defineProperty(this, key, { configurable: true, writable: true, value }); + broke = broke || outer; + return value; + } catch (err) { + delete this[key]; + broke = broke || outer; + throw err; + } + }, + set(value) { + Object.defineProperty(this, key, { configurable: true, writable: true, value }); + } + }); +} +__name(defineLazyInternal, "defineLazyInternal"); +function installLazyProp(inst, key, make, enumerable) { + const proto = claim(inst, key); + if (!proto) + return; + Object.defineProperty(proto, key, { + configurable: true, + get() { + const desc = { configurable: true, writable: true, enumerable, value: void 0 }; + Object.defineProperty(this, key, desc); + desc.value = make(this); + Object.defineProperty(this, key, desc); + return desc.value; + }, + set(value) { + Object.defineProperty(this, key, { configurable: true, writable: true, enumerable, value }); + } + }); +} +__name(installLazyProp, "installLazyProp"); +var CONSTANT_CATCH = "~constantCatch"; +function constantCatch(value) { + const fn = /* @__PURE__ */ __name(() => value, "fn"); + fn[CONSTANT_CATCH] = true; + return fn; +} +__name(constantCatch, "constantCatch"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/core.js +var _a; +var NEVER = /* @__PURE__ */ Object.freeze({ + status: "aborted" +}); +var _zodDesc = { value: void 0, enumerable: false }; +var _E = "captureStackTrace" in Error ? Error : null; +function newError(Definition) { + const E = _E; + if (E) { + const saved = E.stackTraceLimit; + if (typeof saved === "number") { + try { + E.stackTraceLimit = 0; + } catch { + _E = null; + return new Definition(); + } + try { + return new Definition(); + } finally { + E.stackTraceLimit = saved; + } + } + } + return new Definition(); +} +__name(newError, "newError"); +// @__NO_SIDE_EFFECTS__ +function $constructor(name2, initializer3, proto, params) { + const zodProto = {}; + function Internals(def) { + this.def = def; + this.constr = _; + this.traits = /* @__PURE__ */ new Set(); + } + __name(Internals, "Internals"); + Internals.prototype = zodProto; + const protoMembers = proto; + const initialized = protoMembers && /* @__PURE__ */ new WeakSet(); + function init2(inst, def) { + if (!inst._zod) { + _zodDesc.value = new Internals(def); + try { + Object.defineProperty(inst, "_zod", _zodDesc); + } finally { + _zodDesc.value = void 0; + } + } else if (inst._zod.traits.has(name2)) { + return; + } + inst._zod.traits.add(name2); + initializer3(inst, def); + if (initialized) { + const own2 = Object.getPrototypeOf(inst); + const ctorProto = inst._zod.constr.prototype; + let up = own2; + while (up && up !== ctorProto) + up = Object.getPrototypeOf(up); + const target = up ?? own2; + if (!initialized.has(target)) { + initialized.add(target); + members(target, protoMembers); + } + } + const proto2 = _.prototype; + for (const k5 in proto2) { + if (!Object.prototype.hasOwnProperty.call(proto2, k5)) + continue; + if (!(k5 in inst)) { + inst[k5] = proto2[k5].bind(inst); + } + } + } + __name(init2, "init"); + const Parent = params?.Parent ?? Object; + class Definition extends Parent { + static { + __name(this, "Definition"); + } + } + Object.defineProperty(Definition, "name", { value: name2 }); + function _(def) { + const inst = params?.Parent ? newError(Definition) : this; + init2(inst, def); + const deferred = inst._zod.deferred; + if (deferred) { + for (const fn of deferred) { + fn(); + } + inst._zod.deferred = void 0; + } + const pp = globalThis.__zod_globalConfig?.postProcessor; + if (pp) + pp(inst); + return inst; + } + __name(_, "_"); + Object.defineProperty(_, "init", { value: init2 }); + Object.defineProperty(_, Symbol.hasInstance, { + value: /* @__PURE__ */ __name((inst) => { + if (params?.Parent && inst instanceof params.Parent) + return true; + return inst?._zod?.traits?.has(name2); + }, "value") + }); + Object.defineProperty(_, "name", { value: name2 }); + return _; +} +__name($constructor, "$constructor"); +var $brand = /* @__PURE__ */ Symbol("zod_brand"); +var $ZodAsyncError = class extends Error { + static { + __name(this, "$ZodAsyncError"); + } + constructor() { + super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`); + } +}; +var $ZodEncodeError = class extends Error { + static { + __name(this, "$ZodEncodeError"); + } + constructor(name2) { + super(`Encountered unidirectional transform during encode: ${name2}`); + this.name = "ZodEncodeError"; + } +}; +(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {}); +var globalConfig = globalThis.__zod_globalConfig; +function config(newConfig) { + if (newConfig) + Object.assign(globalConfig, newConfig); + return globalConfig; +} +__name(config, "config"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/errors.js +function _getMessage() { + const internals = this._zod; + internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2)); + return internals.message; +} +__name(_getMessage, "_getMessage"); +function _setMessage(value) { + this._zod.message = value; +} +__name(_setMessage, "_setMessage"); +var _messageDesc = { + get: _getMessage, + set: _setMessage, + enumerable: true, + configurable: true +}; +var _issuesDesc = { value: void 0, enumerable: false }; +var _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]); +var initializer = /* @__PURE__ */ __name((inst, def) => { + inst.name = "$ZodError"; + _issuesDesc.value = def; + Object.defineProperty(inst, "issues", _issuesDesc); + _issuesDesc.value = void 0; + Object.defineProperty(inst, "message", _messageDesc); + const proto = Object.getPrototypeOf(inst); + if (!_installedToString.has(proto)) { + _installedToString.add(proto); + Object.defineProperty(proto, "toString", { + configurable: true, + enumerable: false, + get() { + const value = /* @__PURE__ */ __name(() => this.message, "value"); + Object.defineProperty(this, "toString", { value, configurable: true, writable: true }); + return value; + }, + set(value) { + Object.defineProperty(this, "toString", { value, configurable: true, writable: true }); + } + }); + } +}, "initializer"); +var $ZodError = $constructor("$ZodError", initializer); +var $ZodRealError = $constructor("$ZodError", initializer, void 0, { + Parent: Error +}); +function node(obj, key, make) { + if (!Object.prototype.hasOwnProperty.call(obj, key)) { + if (key === "__proto__") { + Object.defineProperty(obj, key, { value: make(), writable: true, enumerable: true, configurable: true }); + } else { + obj[key] = make(); + } + } + return obj[key]; +} +__name(node, "node"); +function flattenError(error62, mapper = (issue2) => issue2.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of error62.issues) { + if (sub.path.length > 0) { + node(fieldErrors, sub.path[0], () => []).push(mapper(sub)); + } else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; +} +__name(flattenError, "flattenError"); +function formatError(error62, mapper = (issue2) => issue2.message) { + const fieldErrors = { _errors: [] }; + const processError = /* @__PURE__ */ __name((error63, path2 = []) => { + for (const issue2 of error63.issues) { + if (issue2.code === "invalid_union" && issue2.errors.length) { + issue2.errors.map((issues) => processError({ issues }, [...path2, ...issue2.path])); + } else if (issue2.code === "invalid_key") { + processError({ issues: issue2.issues }, [...path2, ...issue2.path]); + } else if (issue2.code === "invalid_element") { + processError({ issues: issue2.issues }, [...path2, ...issue2.path]); + } else { + const fullpath = [...path2, ...issue2.path]; + if (fullpath.length === 0) { + fieldErrors._errors.push(mapper(issue2)); + } else { + let curr = fieldErrors; + let i5 = 0; + while (i5 < fullpath.length) { + const el = fullpath[i5]; + const terminal = i5 === fullpath.length - 1; + if (el === "_errors") { + if (terminal) + curr._errors.push(mapper(issue2)); + i5++; + continue; + } + if (!Object.prototype.hasOwnProperty.call(curr, el)) { + Object.defineProperty(curr, el, { + value: { _errors: [] }, + enumerable: true, + writable: true, + configurable: true + }); + } + const node2 = curr[el]; + if (terminal) { + node2._errors.push(mapper(issue2)); + } + curr = node2; + i5++; + } + } + } + } + }, "processError"); + processError(error62); + return fieldErrors; +} +__name(formatError, "formatError"); +function treeifyError(error62, mapper = (issue2) => issue2.message) { + const result = { errors: [] }; + const processError = /* @__PURE__ */ __name((error63, path2 = []) => { + var _a4; + for (const issue2 of error63.issues) { + if (issue2.code === "invalid_union" && issue2.errors.length) { + issue2.errors.map((issues) => processError({ issues }, [...path2, ...issue2.path])); + } else if (issue2.code === "invalid_key") { + processError({ issues: issue2.issues }, [...path2, ...issue2.path]); + } else if (issue2.code === "invalid_element") { + processError({ issues: issue2.issues }, [...path2, ...issue2.path]); + } else { + const fullpath = [...path2, ...issue2.path]; + if (fullpath.length === 0) { + result.errors.push(mapper(issue2)); + continue; + } + let curr = result; + let i5 = 0; + while (i5 < fullpath.length) { + const el = fullpath[i5]; + const terminal = i5 === fullpath.length - 1; + if (typeof el === "string") { + curr.properties ?? (curr.properties = {}); + if (!Object.prototype.hasOwnProperty.call(curr.properties, el)) { + Object.defineProperty(curr.properties, el, { + value: { errors: [] }, + enumerable: true, + writable: true, + configurable: true + }); + } + curr = curr.properties[el]; + } else { + curr.items ?? (curr.items = []); + (_a4 = curr.items)[el] ?? (_a4[el] = { errors: [] }); + curr = curr.items[el]; + } + if (terminal) { + curr.errors.push(mapper(issue2)); + } + i5++; + } + } + } + }, "processError"); + processError(error62); + return result; +} +__name(treeifyError, "treeifyError"); +function toDotPath(_path) { + const segs = []; + const path2 = _path.map((seg) => typeof seg === "object" ? seg.key : seg); + for (const seg of path2) { + if (typeof seg === "number") + segs.push(`[${seg}]`); + else if (typeof seg === "symbol") + segs.push(`[${JSON.stringify(String(seg))}]`); + else if (/[^\w$]/.test(seg)) + segs.push(`[${JSON.stringify(seg)}]`); + else { + if (segs.length) + segs.push("."); + segs.push(seg); + } + } + return segs.join(""); +} +__name(toDotPath, "toDotPath"); +function prettifyError(error62) { + const lines = []; + const issues = [...error62.issues].sort((a5, b5) => (a5.path ?? []).length - (b5.path ?? []).length); + for (const issue2 of issues) { + lines.push(`\u2716 ${issue2.message}`); + if (issue2.path?.length) + lines.push(` \u2192 at ${toDotPath(issue2.path)}`); + } + return lines.join("\n"); +} +__name(prettifyError, "prettifyError"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/parse.js +function finalizeParams(callee, params) { + return { callee: params?.callee ?? callee, Err: params?.Err }; +} +__name(finalizeParams, "finalizeParams"); +var _parse = /* @__PURE__ */ __name((_Err) => { + const fn = /* @__PURE__ */ __name((schema2, value, _ctx, _params) => { + const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; + const result = schema2._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + if (result.issues.length) { + const e5 = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); + captureStackTrace(e5, _params?.callee ?? fn); + throw e5; + } + return result.value; + }, "fn"); + return fn; +}, "_parse"); +var parse = /* @__PURE__ */ _parse($ZodRealError); +var _parseAsync = /* @__PURE__ */ __name((_Err) => { + const fn = /* @__PURE__ */ __name(async (schema2, value, _ctx, params) => { + const ctx = _ctx ? { ..._ctx, async: true } : { async: true }; + let result = schema2._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + if (result.issues.length) { + const e5 = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config()))); + captureStackTrace(e5, params?.callee ?? fn); + throw e5; + } + return result.value; + }, "fn"); + return fn; +}, "_parseAsync"); +var parseAsync = /* @__PURE__ */ _parseAsync($ZodRealError); +var _safeParse = /* @__PURE__ */ __name((_Err) => (schema2, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, async: false } : { async: false }; + const result = schema2._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + return result.issues.length ? failure(_Err, result.issues, ctx) : { success: true, data: result.value }; +}, "_safeParse"); +var safeParse = /* @__PURE__ */ _safeParse($ZodRealError); +function failure(Err, issues, ctx) { + let error62; + return { + success: false, + get error() { + if (!error62) { + error62 = new Err(issues.map((iss) => finalizeIssue(iss, ctx, config()))); + issues = void 0; + ctx = void 0; + } + return error62; + }, + set error(e5) { + error62 = e5; + issues = void 0; + ctx = void 0; + } + }; +} +__name(failure, "failure"); +var _safeParseAsync = /* @__PURE__ */ __name((_Err) => async (schema2, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, async: true } : { async: true }; + let result = schema2._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + return result.issues.length ? failure(_Err, result.issues, ctx) : { success: true, data: result.value }; +}, "_safeParseAsync"); +var safeParseAsync = /* @__PURE__ */ _safeParseAsync($ZodRealError); +var COMPILE_INVALID = /* @__PURE__ */ Symbol.for("zod.compile.invalid"); +var COMPILE_FALLBACK = /* @__PURE__ */ Symbol.for("zod.compile.fallback"); +var validate = /* @__PURE__ */ __name(((schema2, value, _ctx) => { + const validator = schema2._zod.bag.validator; + if (validator !== void 0) { + if (validator(value) !== COMPILE_INVALID) + return true; + if (validator.definite === true && _ctx === void 0) + return false; + } + return validateFallback(schema2, value, _ctx); +}), "validate"); +function validateFallback(schema2, value, _ctx) { + const ctx = _ctx ? { ..._ctx, async: false, abortEarly: true } : { async: false, abortEarly: true }; + const fallbackRun = schema2._zod.bag.fallbackRun; + let result; + if (fallbackRun) { + ctx[COMPILE_FALLBACK] = true; + result = fallbackRun({ value, issues: [] }, ctx); + } else { + result = schema2._zod.run({ value, issues: [] }, ctx); + } + if (result instanceof Promise) { + throw new $ZodAsyncError(); + } + return result.issues.length === 0; +} +__name(validateFallback, "validateFallback"); +var validateAsync = /* @__PURE__ */ __name(async (schema2, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, async: true, abortEarly: true } : { async: true, abortEarly: true }; + let result = schema2._zod.run({ value, issues: [] }, ctx); + if (result instanceof Promise) + result = await result; + return result.issues.length === 0; +}, "validateAsync"); +var _encode = /* @__PURE__ */ __name((_Err) => { + const parse4 = _parse(_Err); + const fn = /* @__PURE__ */ __name((schema2, value, _ctx, _params) => { + const ctx = _ctx ? { ..._ctx, direction: "backward" } : { direction: "backward" }; + return parse4(schema2, value, ctx, finalizeParams(fn, _params)); + }, "fn"); + return fn; +}, "_encode"); +var encode = /* @__PURE__ */ _encode($ZodRealError); +var _decode = /* @__PURE__ */ __name((_Err) => { + const parse4 = _parse(_Err); + const fn = /* @__PURE__ */ __name((schema2, value, _ctx, _params) => { + return parse4(schema2, value, _ctx, finalizeParams(fn, _params)); + }, "fn"); + return fn; +}, "_decode"); +var decode = /* @__PURE__ */ _decode($ZodRealError); +var _encodeAsync = /* @__PURE__ */ __name((_Err) => { + const parseAsync3 = _parseAsync(_Err); + const fn = /* @__PURE__ */ __name(async (schema2, value, _ctx, _params) => { + const ctx = _ctx ? { ..._ctx, direction: "backward" } : { direction: "backward" }; + return await parseAsync3(schema2, value, ctx, finalizeParams(fn, _params)); + }, "fn"); + return fn; +}, "_encodeAsync"); +var encodeAsync = /* @__PURE__ */ _encodeAsync($ZodRealError); +var _decodeAsync = /* @__PURE__ */ __name((_Err) => { + const parseAsync3 = _parseAsync(_Err); + const fn = /* @__PURE__ */ __name(async (schema2, value, _ctx, _params) => { + return await parseAsync3(schema2, value, _ctx, finalizeParams(fn, _params)); + }, "fn"); + return fn; +}, "_decodeAsync"); +var decodeAsync = /* @__PURE__ */ _decodeAsync($ZodRealError); +var _safeEncode = /* @__PURE__ */ __name((_Err) => (schema2, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, direction: "backward" } : { direction: "backward" }; + return _safeParse(_Err)(schema2, value, ctx); +}, "_safeEncode"); +var safeEncode = /* @__PURE__ */ _safeEncode($ZodRealError); +var _safeDecode = /* @__PURE__ */ __name((_Err) => (schema2, value, _ctx) => { + return _safeParse(_Err)(schema2, value, _ctx); +}, "_safeDecode"); +var safeDecode = /* @__PURE__ */ _safeDecode($ZodRealError); +var _safeEncodeAsync = /* @__PURE__ */ __name((_Err) => async (schema2, value, _ctx) => { + const ctx = _ctx ? { ..._ctx, direction: "backward" } : { direction: "backward" }; + return _safeParseAsync(_Err)(schema2, value, ctx); +}, "_safeEncodeAsync"); +var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync($ZodRealError); +var _safeDecodeAsync = /* @__PURE__ */ __name((_Err) => async (schema2, value, _ctx) => { + return _safeParseAsync(_Err)(schema2, value, _ctx); +}, "_safeDecodeAsync"); +var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/regexes.js +var regexes_exports = {}; +__export(regexes_exports, { + anyString: () => anyString, + base64: () => base64, + base64url: () => base64url, + bigint: () => bigint, + boolean: () => boolean, + browserEmail: () => browserEmail, + cidrv4: () => cidrv4, + cidrv6: () => cidrv6, + creditCard: () => creditCard, + cuid: () => cuid, + cuid2: () => cuid2, + currencyCode: () => currencyCode, + date: () => date, + datetime: () => datetime, + domain: () => domain, + duration: () => duration, + e164: () => e164, + email: () => email, + emoji: () => emoji, + extendedDuration: () => extendedDuration, + guid: () => guid, + hex: () => hex, + hostname: () => hostname, + html5Email: () => html5Email, + httpProtocol: () => httpProtocol, + iban: () => iban, + idnEmail: () => idnEmail, + integer: () => integer, + ipv4: () => ipv4, + ipv6: () => ipv6, + ksuid: () => ksuid, + lowercase: () => lowercase, + mac: () => mac, + md5_base64: () => md5_base64, + md5_base64url: () => md5_base64url, + md5_hex: () => md5_hex, + nanoid: () => nanoid, + nanoidOfLength: () => nanoidOfLength, + null: () => _null, + number: () => number, + rfc5322Email: () => rfc5322Email, + sha1_base64: () => sha1_base64, + sha1_base64url: () => sha1_base64url, + sha1_hex: () => sha1_hex, + sha256_base64: () => sha256_base64, + sha256_base64url: () => sha256_base64url, + sha256_hex: () => sha256_hex, + sha384_base64: () => sha384_base64, + sha384_base64url: () => sha384_base64url, + sha384_hex: () => sha384_hex, + sha512_base64: () => sha512_base64, + sha512_base64url: () => sha512_base64url, + sha512_hex: () => sha512_hex, + string: () => string, + time: () => time, + ulid: () => ulid, + undefined: () => _undefined, + unicodeEmail: () => unicodeEmail, + uppercase: () => uppercase, + uuid: () => uuid, + uuid4: () => uuid4, + uuid6: () => uuid6, + uuid7: () => uuid7, + xid: () => xid +}); +var cuid = /^[cC][0-9a-z]{6,}$/; +var cuid2 = /^[0-9a-z]+$/; +var ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/; +var xid = /^[0-9a-vA-V]{20}$/; +var ksuid = /^[A-Za-z0-9]{27}$/; +var nanoid = /^[a-zA-Z0-9_-]{21}$/; +function nanoidOfLength(length) { + return new RegExp(`^[a-zA-Z0-9_-]{${length}}$`); +} +__name(nanoidOfLength, "nanoidOfLength"); +var duration = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/; +var extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +var guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/; +var uuid = /* @__PURE__ */ __name((version2) => { + if (!version2) + return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/; + return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version2}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`); +}, "uuid"); +var uuid4 = /* @__PURE__ */ uuid(4); +var uuid6 = /* @__PURE__ */ uuid(6); +var uuid7 = /* @__PURE__ */ uuid(7); +var email = /^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/; +var html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var rfc5322Email = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; +var unicodeEmail = /^[^\s@"]{1,64}@[^\s@]{1,255}$/u; +var idnEmail = unicodeEmail; +var browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +var _emoji = `^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`; +function emoji() { + return new RegExp(_emoji, "u"); +} +__name(emoji, "emoji"); +var ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/; +var mac = /* @__PURE__ */ __name((delimiter) => { + const escapedDelim = escapeRegex(delimiter ?? ":"); + return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`); +}, "mac"); +var cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; +var cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; +var base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/; +var base64url = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/; +var hostname = /^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/; +var domain = /^(?=.{1,253}$)([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$/; +var httpProtocol = /^https?$/; +var e164 = /^\+[1-9]\d{6,14}$/; +var creditCard = /^\d(?:[ -]?\d){11,18}$/; +var currencyCode = /^(?:AED|AFN|ALL|AMD|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYN|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRU|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLE|SOS|SRD|SSP|STN|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|UYI|UYU|UYW|UZS|VED|VES|VND|VUV|WST|XAD|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XCG|XDR|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWG)$/; +var iban = /^[A-Z]{2}(?!00|01|99)\d{2}[A-Z0-9]{11,30}$/; +var dateSource = `(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`; +function anchor(source) { + return new RegExp(`^${source}$`); +} +__name(anchor, "anchor"); +var date = /* @__PURE__ */ anchor(dateSource); +function timeSource(args) { + const hhmm = `(?:[01]\\d|2[0-3]):[0-5]\\d`; + const regex = typeof args.precision === "number" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\d` : `${hhmm}:[0-5]\\d\\.\\d{${args.precision}}` : args.seconds ? `${hhmm}:[0-5]\\d(?:\\.\\d+)?` : `${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`; + return regex; +} +__name(timeSource, "timeSource"); +function time(args) { + return new RegExp(`^${timeSource(args)}$`); +} +__name(time, "time"); +function datetime(args) { + const opts = ["Z"]; + if (args.offset) + opts.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`); + const qualified = `${timeSource({ precision: args.precision, seconds: true })}(?:${opts.join("|")})`; + const timeRegex = args.local ? `${qualified}|${timeSource({ precision: args.precision })}` : qualified; + return new RegExp(`^${dateSource}T(?:${timeRegex})$`); +} +__name(datetime, "datetime"); +var anyString = /^[\s\S]{0,}$/; +var string = /* @__PURE__ */ __name((params) => { + const regex = params ? `[\\s\\S]{${params?.minimum ?? 0},${params?.maximum ?? ""}}` : `[\\s\\S]*`; + return new RegExp(`^${regex}$`); +}, "string"); +var bigint = /^-?\d+n?$/; +var integer = /^-?\d+$/; +var number = /^-?\d+(?:\.\d+)?$/; +var boolean = /^(?:true|false)$/i; +var _null = /^null$/i; +var _undefined = /^undefined$/i; +var lowercase = /^[^A-Z]*$/; +var uppercase = /^[^a-z]*$/; +var hex = /^[0-9a-fA-F]*$/; +function fixedBase64(bodyLength, padding) { + return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`); +} +__name(fixedBase64, "fixedBase64"); +function fixedBase64url(length) { + return new RegExp(`^[A-Za-z0-9_-]{${length}}$`); +} +__name(fixedBase64url, "fixedBase64url"); +var md5_hex = /^[0-9a-fA-F]{32}$/; +var md5_base64 = /* @__PURE__ */ fixedBase64(22, "=="); +var md5_base64url = /* @__PURE__ */ fixedBase64url(22); +var sha1_hex = /^[0-9a-fA-F]{40}$/; +var sha1_base64 = /* @__PURE__ */ fixedBase64(27, "="); +var sha1_base64url = /* @__PURE__ */ fixedBase64url(27); +var sha256_hex = /^[0-9a-fA-F]{64}$/; +var sha256_base64 = /* @__PURE__ */ fixedBase64(43, "="); +var sha256_base64url = /* @__PURE__ */ fixedBase64url(43); +var sha384_hex = /^[0-9a-fA-F]{96}$/; +var sha384_base64 = /* @__PURE__ */ fixedBase64(64, ""); +var sha384_base64url = /* @__PURE__ */ fixedBase64url(64); +var sha512_hex = /^[0-9a-fA-F]{128}$/; +var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "=="); +var sha512_base64url = /* @__PURE__ */ fixedBase64url(86); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/checks.js +var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => { + var _a4; + inst._zod ?? (inst._zod = {}); + inst._zod.def = def; + (_a4 = inst._zod).onattach ?? (_a4.onattach = []); +}); +var _whenHasSize = /* @__PURE__ */ __name((payload) => { + const val = payload.value; + return !nullish(val) && val.size !== void 0; +}, "_whenHasSize"); +var _whenHasLength = /* @__PURE__ */ __name((payload) => { + const val = payload.value; + return !nullish(val) && val.length !== void 0; +}, "_whenHasLength"); +var numericOriginMap = { + number: "number", + bigint: "bigint", + object: "date" +}; +var $ZodCheckLessThan = /* @__PURE__ */ $constructor("$ZodCheckLessThan", (inst, def) => { + $ZodCheck.init(inst, def); + const origin = numericOriginMap[typeof def.value]; + inst._zod.check = (payload) => { + if (def.inclusive ? payload.value <= def.value : payload.value < def.value) { + return; + } + payload.issues.push({ + origin: numericOriginMap[typeof payload.value] ?? origin, + code: "too_big", + maximum: typeof def.value === "object" ? def.value.getTime() : def.value, + input: payload.value, + inclusive: def.inclusive, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan", (inst, def) => { + $ZodCheck.init(inst, def); + const origin = numericOriginMap[typeof def.value]; + inst._zod.check = (payload) => { + if (def.inclusive ? payload.value >= def.value : payload.value > def.value) { + return; + } + payload.issues.push({ + origin: numericOriginMap[typeof payload.value] ?? origin, + code: "too_small", + minimum: typeof def.value === "object" ? def.value.getTime() : def.value, + input: payload.value, + inclusive: def.inclusive, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.check = (payload) => { + if (typeof payload.value !== typeof def.value) + throw new Error("Cannot mix number and bigint in multiple_of check."); + const isMultiple = typeof payload.value === "bigint" ? ( + // `value % 0n` throws, and nothing is a multiple of zero — the number branch already fails this way via NaN + def.value !== BigInt(0) && payload.value % def.value === BigInt(0) + ) : floatSafeRemainder(payload.value, def.value) === 0; + if (isMultiple) + return; + payload.issues.push({ + origin: typeof payload.value, + code: "not_multiple_of", + divisor: def.value, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckNumberFormat = /* @__PURE__ */ $constructor("$ZodCheckNumberFormat", (inst, def) => { + $ZodCheck.init(inst, def); + def.format = def.format || "float64"; + const isInt = def.format?.includes("int"); + const origin = isInt ? "int" : "number"; + const [minimum, maximum] = NUMBER_FORMAT_RANGES[def.format]; + inst._zod.check = (payload) => { + const input2 = payload.value; + if (isInt) { + if (!Number.isInteger(input2)) { + payload.issues.push({ + expected: origin, + format: def.format, + code: "invalid_type", + continue: false, + input: input2, + inst + }); + return; + } + if (!Number.isSafeInteger(input2)) { + if (input2 > 0) { + payload.issues.push({ + input: input2, + code: "too_big", + maximum: Number.MAX_SAFE_INTEGER, + note: "Integers must be within the safe integer range.", + inst, + origin, + inclusive: true, + continue: !def.abort + }); + } else { + payload.issues.push({ + input: input2, + code: "too_small", + minimum: Number.MIN_SAFE_INTEGER, + note: "Integers must be within the safe integer range.", + inst, + origin, + inclusive: true, + continue: !def.abort + }); + } + return; + } + } + if (input2 < minimum) { + payload.issues.push({ + origin: "number", + input: input2, + code: "too_small", + minimum, + inclusive: true, + inst, + continue: !def.abort + }); + } + if (input2 > maximum) { + payload.issues.push({ + origin: "number", + input: input2, + code: "too_big", + maximum, + inclusive: true, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat", (inst, def) => { + $ZodCheck.init(inst, def); + const [minimum, maximum] = BIGINT_FORMAT_RANGES[def.format]; + inst._zod.check = (payload) => { + const input2 = payload.value; + if (input2 < minimum) { + payload.issues.push({ + origin: "bigint", + input: input2, + code: "too_small", + minimum, + inclusive: true, + inst, + continue: !def.abort + }); + } + if (input2 > maximum) { + payload.issues.push({ + origin: "bigint", + input: input2, + code: "too_big", + maximum, + inclusive: true, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => { + var _a4; + $ZodCheck.init(inst, def); + (_a4 = inst._zod.def).when ?? (_a4.when = _whenHasSize); + inst._zod.check = (payload) => { + const input2 = payload.value; + const size = input2.size; + if (size <= def.maximum) + return; + payload.issues.push({ + origin: getSizableOrigin(input2), + code: "too_big", + maximum: def.maximum, + inclusive: true, + input: input2, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => { + var _a4; + $ZodCheck.init(inst, def); + (_a4 = inst._zod.def).when ?? (_a4.when = _whenHasSize); + inst._zod.check = (payload) => { + const input2 = payload.value; + const size = input2.size; + if (size >= def.minimum) + return; + payload.issues.push({ + origin: getSizableOrigin(input2), + code: "too_small", + minimum: def.minimum, + inclusive: true, + input: input2, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => { + var _a4; + $ZodCheck.init(inst, def); + (_a4 = inst._zod.def).when ?? (_a4.when = _whenHasSize); + inst._zod.check = (payload) => { + const input2 = payload.value; + const size = input2.size; + if (size === def.size) + return; + const tooBig = size > def.size; + payload.issues.push({ + origin: getSizableOrigin(input2), + ...tooBig ? { code: "too_big", maximum: def.size } : { code: "too_small", minimum: def.size }, + inclusive: true, + exact: true, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => { + var _a4; + $ZodCheck.init(inst, def); + (_a4 = inst._zod.def).when ?? (_a4.when = _whenHasLength); + inst._zod.check = (payload) => { + const input2 = payload.value; + const units = input2.length; + const length = typeof input2 === "string" && units > def.maximum ? codePointLength(input2) : units; + if (length <= def.maximum) + return; + const origin = getLengthableOrigin(input2); + payload.issues.push({ + origin, + code: "too_big", + maximum: def.maximum, + inclusive: true, + input: input2, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => { + var _a4; + $ZodCheck.init(inst, def); + (_a4 = inst._zod.def).when ?? (_a4.when = _whenHasLength); + inst._zod.check = (payload) => { + const input2 = payload.value; + const units = input2.length; + const length = typeof input2 === "string" && units >= def.minimum && units < def.minimum * 2 ? codePointLength(input2) : units; + if (length >= def.minimum) + return; + const origin = getLengthableOrigin(input2); + payload.issues.push({ + origin, + code: "too_small", + minimum: def.minimum, + inclusive: true, + input: input2, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => { + var _a4; + $ZodCheck.init(inst, def); + (_a4 = inst._zod.def).when ?? (_a4.when = _whenHasLength); + inst._zod.check = (payload) => { + const input2 = payload.value; + const units = input2.length; + const length = typeof input2 === "string" && units >= def.length && units <= def.length * 2 ? codePointLength(input2) : units; + if (length === def.length) + return; + const origin = getLengthableOrigin(input2); + const tooBig = length > def.length; + payload.issues.push({ + origin, + ...tooBig ? { code: "too_big", maximum: def.length } : { code: "too_small", minimum: def.length }, + inclusive: true, + exact: true, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => { + var _a4, _b; + $ZodCheck.init(inst, def); + if (def.pattern) + (_a4 = inst._zod).check ?? (_a4.check = (payload) => { + def.pattern.lastIndex = 0; + if (def.pattern.test(payload.value)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: def.format, + input: payload.value, + ...def.pattern ? { pattern: def.pattern.toString() } : {}, + inst, + continue: !def.abort + }); + }); + else + (_b = inst._zod).check ?? (_b.check = () => { + }); +}); +var $ZodCheckRegex = /* @__PURE__ */ $constructor("$ZodCheckRegex", (inst, def) => { + $ZodCheckStringFormat.init(inst, def); + inst._zod.check = (payload) => { + def.pattern.lastIndex = 0; + if (def.pattern.test(payload.value)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "regex", + input: payload.value, + pattern: def.pattern.toString(), + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckLowerCase = /* @__PURE__ */ $constructor("$ZodCheckLowerCase", (inst, def) => { + def.pattern ?? (def.pattern = lowercase); + $ZodCheckStringFormat.init(inst, def); +}); +var $ZodCheckUpperCase = /* @__PURE__ */ $constructor("$ZodCheckUpperCase", (inst, def) => { + def.pattern ?? (def.pattern = uppercase); + $ZodCheckStringFormat.init(inst, def); +}); +var $ZodCheckIncludes = /* @__PURE__ */ $constructor("$ZodCheckIncludes", (inst, def) => { + $ZodCheck.init(inst, def); + const escapedRegex = escapeRegex(def.includes); + const pattern = new RegExp(typeof def.position === "number" ? `^.{${def.position},}${escapedRegex}` : escapedRegex); + def.pattern = pattern; + inst._zod.check = (payload) => { + if (payload.value.includes(def.includes, def.position)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "includes", + includes: def.includes, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckStartsWith = /* @__PURE__ */ $constructor("$ZodCheckStartsWith", (inst, def) => { + $ZodCheck.init(inst, def); + const pattern = new RegExp(`^${escapeRegex(def.prefix)}.*`); + def.pattern ?? (def.pattern = pattern); + inst._zod.check = (payload) => { + if (payload.value.startsWith(def.prefix)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "starts_with", + prefix: def.prefix, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckEndsWith = /* @__PURE__ */ $constructor("$ZodCheckEndsWith", (inst, def) => { + $ZodCheck.init(inst, def); + const pattern = new RegExp(`.*${escapeRegex(def.suffix)}$`); + def.pattern ?? (def.pattern = pattern); + inst._zod.check = (payload) => { + if (payload.value.endsWith(def.suffix)) + return; + payload.issues.push({ + origin: "string", + code: "invalid_format", + format: "ends_with", + suffix: def.suffix, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +function handleCheckPropertyResult(result, payload, property) { + if (result.issues.length) { + payload.issues.push(...prefixIssues(property, result.issues)); + } +} +__name(handleCheckPropertyResult, "handleCheckPropertyResult"); +var $ZodCheckProperty = /* @__PURE__ */ $constructor("$ZodCheckProperty", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.check = (payload) => { + const result = def.schema._zod.run({ + value: payload.value[def.property], + issues: [] + }, {}); + if (result instanceof Promise) { + return result.then((result2) => handleCheckPropertyResult(result2, payload, def.property)); + } + handleCheckPropertyResult(result, payload, def.property); + return; + }; +}); +var $ZodCheckProperties = /* @__PURE__ */ $constructor("$ZodCheckProperties", (inst, def) => { + $ZodCheck.init(inst, def); + hide(inst, Symbol.iterator, function* () { + yield inst; + }); + let entries; + inst._zod.check = (payload) => { + if (payload.value == null) { + payload.issues.push({ expected: "object", code: "invalid_type", input: payload.value, inst }); + return void 0; + } + entries ?? (entries = Reflect.ownKeys(def.shape).map((key) => [key, def.shape[key]])); + const input2 = payload.value; + let proms; + for (const [key, schema2] of entries) { + const result = schema2._zod.run({ value: input2[key], issues: [] }, {}); + if (result instanceof Promise) { + proms ?? (proms = []); + proms.push(result.then((result2) => handleCheckPropertyResult(result2, payload, key))); + } else { + handleCheckPropertyResult(result, payload, key); + } + } + if (proms) + return Promise.all(proms).then(() => void 0); + return void 0; + }; +}); +var $ZodCheckMimeType = /* @__PURE__ */ $constructor("$ZodCheckMimeType", (inst, def) => { + $ZodCheck.init(inst, def); + const mimeSet = new Set(def.mime); + inst._zod.check = (payload) => { + if (mimeSet.has(payload.value.type)) + return; + payload.issues.push({ + code: "invalid_value", + values: def.mime, + input: payload.value.type, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (inst, def) => { + $ZodCheck.init(inst, def); + inst._zod.check = (payload) => { + payload.value = def.tx(payload.value); + }; +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/doc.js +var Doc = class { + static { + __name(this, "Doc"); + } + constructor(args = [], closed = {}) { + this.content = []; + this.indent = 0; + this.args = args; + this.closed = closed; + } + // the compiler catches a child's throw and keeps writing into this doc, so the indent has to unwind with it + indented(fn) { + this.indent += 1; + try { + fn(this); + } finally { + this.indent -= 1; + } + } + write(arg) { + if (typeof arg === "function") { + arg(this, { execution: "sync" }); + arg(this, { execution: "async" }); + return; + } + const content = arg; + const lines = content.split("\n").filter((x) => x); + const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length)); + const dedented = lines.map((x) => x.slice(minIndent)).map((x) => " ".repeat(this.indent * 2) + x); + for (const line of dedented) { + this.content.push(line); + } + } + compile() { + const F = Function; + const content = this?.content ?? [``]; + const factory = new F(...Object.keys(this.closed), `return function (${this.args.join(", ")}) { +${content.join("\n")} +};`); + return factory(...Object.values(this.closed)); + } +}; + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/versions.js +var version = { + major: 4, + minor: 6, + patch: 7 +}; + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/schemas.js +var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => { + var _a4; + inst ?? (inst = {}); + inst._zod.def = def; + inst._zod.bag = inst._zod.bag || {}; + inst._zod.version = version; + const defChecks = inst._zod.def.checks; + const checks = inst._zod.traits.has("$ZodCheck") ? [inst, ...defChecks ?? []] : defChecks?.length ? [...defChecks] : []; + for (const ch of checks) { + for (const fn of ch._zod.onattach) { + fn(inst); + } + } + if (checks.length === 0) { + (_a4 = inst._zod).deferred ?? (_a4.deferred = []); + inst._zod.deferred?.push(() => { + inst._zod.run = inst._zod.parse; + }); + } else { + const runChecks = /* @__PURE__ */ __name((payload, checks2, ctx) => { + if (payload.memo) + return payload; + let isAborted = aborted(payload); + let asyncResult; + for (const ch of checks2) { + if (ch._zod.def.when) { + if (explicitlyAborted(payload)) + continue; + const shouldRun = ch._zod.def.when(payload); + if (!shouldRun) + continue; + } else if (isAborted) { + continue; + } + const currLen = payload.issues.length; + const _ = ch._zod.check(payload); + if (_ instanceof Promise && ctx?.async === false) { + throw new $ZodAsyncError(); + } + if (asyncResult || _ instanceof Promise) { + asyncResult = (asyncResult ?? Promise.resolve()).then(async () => { + await _; + const nextLen = payload.issues.length; + if (nextLen === currLen) + return; + attachSchema(payload.issues, currLen, inst); + if (!isAborted) + isAborted = aborted(payload, currLen); + }); + } else { + const nextLen = payload.issues.length; + if (nextLen === currLen) + continue; + attachSchema(payload.issues, currLen, inst); + if (!isAborted) + isAborted = aborted(payload, currLen); + } + } + if (asyncResult) { + return asyncResult.then(() => { + return payload; + }); + } + return payload; + }, "runChecks"); + const handleCanaryResult = /* @__PURE__ */ __name((canary, payload, ctx) => { + if (aborted(canary)) { + canary.aborted = true; + return canary; + } + const checkResult = runChecks(payload, checks, ctx); + if (checkResult instanceof Promise) { + if (ctx.async === false) + throw new $ZodAsyncError(); + return checkResult.then((checkResult2) => inst._zod.parse(checkResult2, ctx)); + } + return inst._zod.parse(checkResult, ctx); + }, "handleCanaryResult"); + inst._zod.run = (payload, ctx) => { + if (ctx.skipChecks) { + return inst._zod.parse(payload, ctx); + } + if (ctx.direction === "backward") { + const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true }); + if (canary instanceof Promise) { + return canary.then((canary2) => { + return handleCanaryResult(canary2, payload, ctx); + }); + } + return handleCanaryResult(canary, payload, ctx); + } + const result = inst._zod.parse(payload, ctx); + if (result instanceof Promise) { + if (ctx.async === false) + throw new $ZodAsyncError(); + return result.then((result2) => runChecks(result2, checks, ctx)); + } + return runChecks(result, checks, ctx); + }; + } +}, { + // Wrappers extend this by installing a richer factory over it; reading it eagerly would defeat the laziness. + get "~standard"() { + return hide(this, "~standard", standardProps(this)); + }, + set "~standard"(value) { + own(this, "~standard", value); + } +}); +var toStandardResult = /* @__PURE__ */ __name((r5, ctx) => r5.issues.length ? { issues: r5.issues.map((iss) => finalizeIssue(iss, ctx, config())) } : { value: r5.value }, "toStandardResult"); +async function validateAsync2(inst, value) { + const ctx = { async: true }; + return toStandardResult(await inst._zod.run({ value, issues: [] }, ctx), ctx); +} +__name(validateAsync2, "validateAsync"); +function standardProps(inst) { + return { + validate: /* @__PURE__ */ __name((value) => { + const ctx = { async: false }; + try { + const r5 = inst._zod.run({ value, issues: [] }, ctx); + if (!(r5 instanceof Promise)) + return toStandardResult(r5, ctx); + } catch (_) { + } + return validateAsync2(inst, value); + }, "validate"), + vendor: "zod", + version: 1 + }; +} +__name(standardProps, "standardProps"); +var $ZodString = /* @__PURE__ */ $constructor("$ZodString", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = def.pattern ?? anyString; + inst._zod.parse = (payload, _) => { + if (def.coerce) + try { + payload.value = String(payload.value); + } catch (_2) { + } + if (typeof payload.value === "string") + return payload; + payload.issues.push({ + expected: "string", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodStringFormat = /* @__PURE__ */ $constructor("$ZodStringFormat", (inst, def) => { + $ZodCheckStringFormat.init(inst, def); + $ZodString.init(inst, def); +}); +var $ZodGUID = /* @__PURE__ */ $constructor("$ZodGUID", (inst, def) => { + def.pattern ?? (def.pattern = guid); + $ZodStringFormat.init(inst, def); +}); +var $ZodUUID = /* @__PURE__ */ $constructor("$ZodUUID", (inst, def) => { + if (def.version) { + const versionMap = { + v1: 1, + v2: 2, + v3: 3, + v4: 4, + v5: 5, + v6: 6, + v7: 7, + v8: 8 + }; + const v = versionMap[def.version]; + if (v === void 0) + throw new Error(`Invalid UUID version: "${def.version}"`); + def.pattern ?? (def.pattern = uuid(v)); + } else + def.pattern ?? (def.pattern = uuid()); + $ZodStringFormat.init(inst, def); +}); +var $ZodEmail = /* @__PURE__ */ $constructor("$ZodEmail", (inst, def) => { + def.pattern ?? (def.pattern = email); + $ZodStringFormat.init(inst, def); +}); +var URL_BAD_FORMAT = 1; +var URL_UNPARSEABLE = 2; +function canParseURL(input2) { + try { + if (typeof URL !== "undefined" && typeof URL.canParse === "function") + return URL.canParse(input2); + new URL(input2); + return true; + } catch { + return false; + } +} +__name(canParseURL, "canParseURL"); +function validateURL(trimmed, def) { + if (!("normalize" in def) && !("hostname" in def) && !("protocol" in def)) { + return canParseURL(trimmed) || URL_UNPARSEABLE; + } + return parseURLObject(trimmed, def); +} +__name(validateURL, "validateURL"); +function parseURLObject(trimmed, def) { + if (!def.normalize && def.protocol?.source === httpProtocol.source && !/^https?:\/\//i.test(trimmed)) { + return URL_BAD_FORMAT; + } + try { + if (typeof URL !== "undefined") { + const URLStatic = URL; + if (typeof URLStatic.parse === "function") + return URLStatic.parse(trimmed) ?? URL_UNPARSEABLE; + } + return new URL(trimmed); + } catch { + return URL_UNPARSEABLE; + } +} +__name(parseURLObject, "parseURLObject"); +var asciiTabOrNewline = /[\t\n\r]/g; +function stripTabAndNewline(value) { + return value.replace(asciiTabOrNewline, ""); +} +__name(stripTabAndNewline, "stripTabAndNewline"); +function urlHostnameOk(url2, hostname3) { + hostname3.lastIndex = 0; + return hostname3.test(url2.hostname); +} +__name(urlHostnameOk, "urlHostnameOk"); +function urlProtocolOk(url2, protocol) { + protocol.lastIndex = 0; + return protocol.test(url2.protocol.endsWith(":") ? url2.protocol.slice(0, -1) : url2.protocol); +} +__name(urlProtocolOk, "urlProtocolOk"); +var $ZodURL = /* @__PURE__ */ $constructor("$ZodURL", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + try { + const trimmed = payload.value.trim(); + const url2 = validateURL(trimmed, def); + if (url2 === URL_BAD_FORMAT) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid URL format", + input: payload.value, + inst, + continue: !def.abort + }); + return; + } + if (url2 === URL_UNPARSEABLE) { + payload.issues.push({ + code: "invalid_format", + format: "url", + input: payload.value, + inst, + continue: !def.abort + }); + return; + } + if (url2 === true) { + payload.value = stripTabAndNewline(trimmed); + return; + } + if (def.hostname && !urlHostnameOk(url2, def.hostname)) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid hostname", + pattern: def.hostname.source, + input: payload.value, + inst, + continue: !def.abort + }); + } + if (def.protocol && !urlProtocolOk(url2, def.protocol)) { + payload.issues.push({ + code: "invalid_format", + format: "url", + note: "Invalid protocol", + pattern: def.protocol.source, + input: payload.value, + inst, + continue: !def.abort + }); + } + payload.value = def.normalize ? url2.href : stripTabAndNewline(trimmed); + return; + } catch (_) { + payload.issues.push({ + code: "invalid_format", + format: "url", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodEmoji = /* @__PURE__ */ $constructor("$ZodEmoji", (inst, def) => { + def.pattern ?? (def.pattern = emoji()); + $ZodStringFormat.init(inst, def); +}); +var $ZodNanoID = /* @__PURE__ */ $constructor("$ZodNanoID", (inst, def) => { + if (def.length !== void 0 && (!Number.isInteger(def.length) || def.length < 1)) + throw new Error(`Invalid nanoid length: ${def.length}`); + def.pattern ?? (def.pattern = def.length === void 0 ? nanoid : nanoidOfLength(def.length)); + $ZodStringFormat.init(inst, def); +}); +var $ZodCUID = /* @__PURE__ */ $constructor("$ZodCUID", (inst, def) => { + def.pattern ?? (def.pattern = cuid); + $ZodStringFormat.init(inst, def); +}); +var $ZodCUID2 = /* @__PURE__ */ $constructor("$ZodCUID2", (inst, def) => { + def.pattern ?? (def.pattern = cuid2); + $ZodStringFormat.init(inst, def); +}); +var $ZodULID = /* @__PURE__ */ $constructor("$ZodULID", (inst, def) => { + def.pattern ?? (def.pattern = ulid); + $ZodStringFormat.init(inst, def); +}); +var $ZodXID = /* @__PURE__ */ $constructor("$ZodXID", (inst, def) => { + def.pattern ?? (def.pattern = xid); + $ZodStringFormat.init(inst, def); +}); +var $ZodKSUID = /* @__PURE__ */ $constructor("$ZodKSUID", (inst, def) => { + def.pattern ?? (def.pattern = ksuid); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODateTime = /* @__PURE__ */ $constructor("$ZodISODateTime", (inst, def) => { + def.pattern ?? (def.pattern = datetime(def)); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODate = /* @__PURE__ */ $constructor("$ZodISODate", (inst, def) => { + def.pattern ?? (def.pattern = date); + $ZodStringFormat.init(inst, def); +}); +var $ZodISOTime = /* @__PURE__ */ $constructor("$ZodISOTime", (inst, def) => { + def.pattern ?? (def.pattern = time(def)); + $ZodStringFormat.init(inst, def); +}); +var $ZodISODuration = /* @__PURE__ */ $constructor("$ZodISODuration", (inst, def) => { + def.pattern ?? (def.pattern = duration); + $ZodStringFormat.init(inst, def); +}); +var $ZodIPv4 = /* @__PURE__ */ $constructor("$ZodIPv4", (inst, def) => { + def.pattern ?? (def.pattern = ipv4); + $ZodStringFormat.init(inst, def); +}); +var ipv6Alphabet = /^[0-9a-fA-F:.]+$/; +function isValidIPv6(value) { + if (!ipv6Alphabet.test(value)) + return false; + return canParseURL(`http://[${value}]`); +} +__name(isValidIPv6, "isValidIPv6"); +var $ZodIPv6 = /* @__PURE__ */ $constructor("$ZodIPv6", (inst, def) => { + def.pattern ?? (def.pattern = ipv6); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (!isValidIPv6(payload.value)) { + payload.issues.push({ + code: "invalid_format", + format: "ipv6", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +var $ZodMAC = /* @__PURE__ */ $constructor("$ZodMAC", (inst, def) => { + def.pattern ?? (def.pattern = mac(def.delimiter)); + $ZodStringFormat.init(inst, def); +}); +var $ZodCIDRv4 = /* @__PURE__ */ $constructor("$ZodCIDRv4", (inst, def) => { + def.pattern ?? (def.pattern = cidrv4); + $ZodStringFormat.init(inst, def); +}); +function isValidCIDRv6(value) { + const parts = value.split("/"); + if (parts.length !== 2) + return false; + const [address, prefix] = parts; + if (!prefix) + return false; + const prefixNum = Number(prefix); + if (`${prefixNum}` !== prefix) + return false; + if (prefixNum < 0 || prefixNum > 128) + return false; + return isValidIPv6(address); +} +__name(isValidCIDRv6, "isValidCIDRv6"); +var $ZodCIDRv6 = /* @__PURE__ */ $constructor("$ZodCIDRv6", (inst, def) => { + def.pattern ?? (def.pattern = cidrv6); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (!isValidCIDRv6(payload.value)) { + payload.issues.push({ + code: "invalid_format", + format: "cidrv6", + input: payload.value, + inst, + continue: !def.abort + }); + } + }; +}); +function isValidBase64(data) { + if (data === "") + return true; + if (/\s/.test(data)) + return false; + if (data.length % 4 !== 0) + return false; + try { + atob(data); + return true; + } catch { + return false; + } +} +__name(isValidBase64, "isValidBase64"); +var base64Charset = /^[0-9a-zA-Z+/]*={0,2}$/; +var $ZodBase64 = /* @__PURE__ */ $constructor("$ZodBase64", (inst, def) => { + def.pattern ?? (def.pattern = base64Charset); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidBase64(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "base64", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var base64urlCharset = /^[A-Za-z0-9_-]*$/; +function isValidBase64URL(data) { + if (!base64urlCharset.test(data)) + return false; + const base643 = data.replace(/[-_]/g, (c5) => c5 === "-" ? "+" : "/"); + const padded = base643.padEnd(Math.ceil(base643.length / 4) * 4, "="); + return isValidBase64(padded); +} +__name(isValidBase64URL, "isValidBase64URL"); +var $ZodBase64URL = /* @__PURE__ */ $constructor("$ZodBase64URL", (inst, def) => { + def.pattern ?? (def.pattern = base64urlCharset); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidBase64URL(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "base64url", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodE164 = /* @__PURE__ */ $constructor("$ZodE164", (inst, def) => { + def.pattern ?? (def.pattern = e164); + $ZodStringFormat.init(inst, def); +}); +var CC_SANITIZE = /[- ]/g; +function isLuhnAlgo(digits) { + let length = digits.length; + let bit = 1; + let sum = 0; + while (length) { + const value = digits.charCodeAt(--length) - 48; + bit ^= 1; + sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value; + } + return sum % 10 === 0; +} +__name(isLuhnAlgo, "isLuhnAlgo"); +function isValidCreditCard(input2) { + if (!creditCard.test(input2)) + return false; + return isLuhnAlgo(input2.replace(CC_SANITIZE, "")); +} +__name(isValidCreditCard, "isValidCreditCard"); +var $ZodCreditCard = /* @__PURE__ */ $constructor("$ZodCreditCard", (inst, def) => { + def.pattern ?? (def.pattern = creditCard); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidCreditCard(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "credit_card", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +function isIso7064Mod97(iban3) { + let remainder = 0; + const len = iban3.length; + for (let i5 = 4; i5 < len; i5++) { + const code = iban3.charCodeAt(i5); + remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97; + } + for (let i5 = 0; i5 < 4; i5++) { + const code = iban3.charCodeAt(i5); + remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97; + } + return remainder === 1; +} +__name(isIso7064Mod97, "isIso7064Mod97"); +function isValidIBAN(input2) { + if (!iban.test(input2)) + return false; + return isIso7064Mod97(input2); +} +__name(isValidIBAN, "isValidIBAN"); +var $ZodIBAN = /* @__PURE__ */ $constructor("$ZodIBAN", (inst, def) => { + def.pattern ?? (def.pattern = iban); + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidIBAN(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: "iban", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +function isValidJWT(token, algorithm = null) { + try { + const tokensParts = token.split("."); + if (tokensParts.length !== 3) + return false; + const [header] = tokensParts; + if (!header) + return false; + const parsedHeader = JSON.parse(atob(header)); + if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT") + return false; + if (!parsedHeader.alg) + return false; + if (algorithm && (!("alg" in parsedHeader) || parsedHeader.alg !== algorithm)) + return false; + return true; + } catch { + return false; + } +} +__name(isValidJWT, "isValidJWT"); +var $ZodJWT = /* @__PURE__ */ $constructor("$ZodJWT", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (isValidJWT(payload.value, def.alg)) + return; + payload.issues.push({ + code: "invalid_format", + format: "jwt", + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodCustomStringFormat = /* @__PURE__ */ $constructor("$ZodCustomStringFormat", (inst, def) => { + $ZodStringFormat.init(inst, def); + inst._zod.check = (payload) => { + if (def.fn(payload.value)) + return; + payload.issues.push({ + code: "invalid_format", + format: def.format, + input: payload.value, + inst, + continue: !def.abort + }); + }; +}); +var $ZodNumber = /* @__PURE__ */ $constructor("$ZodNumber", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = number; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = Number(payload.value); + } catch (_) { + } + const input2 = payload.value; + if (typeof input2 === "number" && !Number.isNaN(input2) && Number.isFinite(input2)) { + return payload; + } + const received = typeof input2 === "number" ? Number.isNaN(input2) ? "NaN" : !Number.isFinite(input2) ? String(input2) : void 0 : void 0; + payload.issues.push({ + expected: "number", + code: "invalid_type", + input: input2, + inst, + ...received ? { received } : {} + }); + return payload; + }; +}); +var $ZodNumberFormat = /* @__PURE__ */ $constructor("$ZodNumberFormat", (inst, def) => { + $ZodCheckNumberFormat.init(inst, def); + $ZodNumber.init(inst, def); +}); +var $ZodBoolean = /* @__PURE__ */ $constructor("$ZodBoolean", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = boolean; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = Boolean(payload.value); + } catch (_) { + } + const input2 = payload.value; + if (typeof input2 === "boolean") + return payload; + payload.issues.push({ + expected: "boolean", + code: "invalid_type", + input: input2, + inst + }); + return payload; + }; +}); +var $ZodBigInt = /* @__PURE__ */ $constructor("$ZodBigInt", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = bigint; + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) + try { + payload.value = BigInt(payload.value); + } catch (_) { + } + if (typeof payload.value === "bigint") + return payload; + payload.issues.push({ + expected: "bigint", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodBigIntFormat = /* @__PURE__ */ $constructor("$ZodBigIntFormat", (inst, def) => { + $ZodCheckBigIntFormat.init(inst, def); + $ZodBigInt.init(inst, def); +}); +var $ZodSymbol = /* @__PURE__ */ $constructor("$ZodSymbol", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (typeof input2 === "symbol") + return payload; + payload.issues.push({ + expected: "symbol", + code: "invalid_type", + input: input2, + inst + }); + return payload; + }; +}); +var $ZodUndefined = /* @__PURE__ */ $constructor("$ZodUndefined", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = _undefined; + inst._zod.values = /* @__PURE__ */ new Set([void 0]); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (typeof input2 === "undefined") + return payload; + payload.issues.push({ + expected: "undefined", + code: "invalid_type", + input: input2, + inst + }); + return payload; + }; +}); +var $ZodNull = /* @__PURE__ */ $constructor("$ZodNull", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.pattern = _null; + inst._zod.values = /* @__PURE__ */ new Set([null]); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (input2 === null) + return payload; + payload.issues.push({ + expected: "null", + code: "invalid_type", + input: input2, + inst + }); + return payload; + }; +}); +var $ZodAny = /* @__PURE__ */ $constructor("$ZodAny", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload) => payload; +}); +var $ZodUnknown = /* @__PURE__ */ $constructor("$ZodUnknown", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload) => payload; +}); +var $ZodNever = /* @__PURE__ */ $constructor("$ZodNever", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + payload.issues.push({ + expected: "never", + code: "invalid_type", + input: payload.value, + inst + }); + return payload; + }; +}); +var $ZodVoid = /* @__PURE__ */ $constructor("$ZodVoid", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (typeof input2 === "undefined") + return payload; + payload.issues.push({ + expected: "void", + code: "invalid_type", + input: input2, + inst + }); + return payload; + }; +}); +var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + if (def.coerce) { + try { + payload.value = new Date(payload.value); + } catch (_err) { + } + } + const input2 = payload.value; + const isDate = input2 instanceof Date; + const isValidDate = isDate && !Number.isNaN(input2.getTime()); + if (isValidDate) + return payload; + payload.issues.push({ + expected: "date", + code: "invalid_type", + input: input2, + ...isDate ? { received: "Invalid Date" } : {}, + inst + }); + return payload; + }; +}); +function capSize(inst, size) { + const caps = sizeCaps(inst._zod.def.checks); + if (!caps.length) + return; + const cap = Math.min(...caps.map((c5) => c5[0])); + const parse4 = inst._zod.parse; + inst._zod.parse = (payload, ctx) => { + const n3 = size(payload.value); + if (n3 > cap && !ctx?.skipChecks && ctx?.direction !== "backward") { + for (const [max, ch] of sizeCaps(inst._zod.def.checks)) { + if (n3 > max && ch._zod.def.when(payload)) { + const start = payload.issues.length; + ch._zod.check(payload); + payload.issues[start].continue = false; + attachSchema(payload.issues, start, inst); + return payload; + } + } + } + return parse4(payload, ctx); + }; +} +__name(capSize, "capSize"); +var arraySize = /* @__PURE__ */ __name((input2) => Array.isArray(input2) ? input2.length : -1, "arraySize"); +var mapSize = /* @__PURE__ */ __name((input2) => input2 instanceof Map ? input2.size : -1, "mapSize"); +var setSize = /* @__PURE__ */ __name((input2) => input2 instanceof Set ? input2.size : -1, "setSize"); +function handleArrayResult(result, final, index) { + if (result.issues.length) { + final.issues.push(...prefixIssues(index, result.issues)); + } + final.value[index] = result.value; +} +__name(handleArrayResult, "handleArrayResult"); +var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => { + $ZodType.init(inst, def); + const memo2 = globalConfig.memoizer; + memo2?.attach(inst); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + if (!Array.isArray(input2)) { + payload.issues.push({ + expected: "array", + code: "invalid_type", + input: input2, + inst + }); + return payload; + } + payload.value = memo2 ? memo2.alloc(inst, payload, Array(input2.length), ctx) : Array(input2.length); + const proms = []; + const abortEarly = ctx?.abortEarly; + for (let i5 = 0; i5 < input2.length; i5++) { + const item = input2[i5]; + const result = def.element._zod.run({ + value: item, + issues: [] + }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleArrayResult(result2, payload, i5))); + } else { + handleArrayResult(result, payload, i5); + if (abortEarly && result.issues.length !== 0 && aborted(result)) + break; + } + } + if (proms.length) { + return Promise.all(proms).then(() => payload); + } + return payload; + }; + capSize(inst, arraySize); +}); +function handlePropertyResult(result, final, key, input2, optin, optout) { + const isPresent = key in input2; + const isOptionalOut = optout === "optional"; + if (!isPresent && isOptionalOut && optin === "optional") { + return; + } + if (result.issues.length) { + if (optin !== void 0 && isOptionalOut && !isPresent) { + return; + } + final.issues.push(...prefixIssues(key, result.issues)); + } + if (!isPresent && optin === void 0) { + if (!result.issues.length) { + final.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: void 0, + path: [key] + }); + } + return; + } + if (result.value === void 0) { + if (isPresent || optin === "defaulted" && !isOptionalOut) { + final.value[key] = void 0; + } + } else { + final.value[key] = result.value; + } +} +__name(handlePropertyResult, "handlePropertyResult"); +var NO_SYMBOL_KEYS = []; +function normalizeDef(def) { + const keys = Object.keys(def.shape); + const ownSymbols = Object.getOwnPropertySymbols(def.shape); + const symbolKeys = ownSymbols.length ? ownSymbols : NO_SYMBOL_KEYS; + const allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys; + for (const k5 of allKeys) { + if (!def.shape?.[k5]?._zod?.traits?.has("$ZodType")) { + throw new Error(`Invalid element at key "${String(k5)}": expected a Zod schema`); + } + } + const okeys = optionalKeys(def.shape); + return { + ...def, + allKeys, + symbolKeys, + // string-only: handleCatchall matches it against `for...in`, which never yields a symbol + keySet: new Set(keys), + numKeys: keys.length, + optionalKeys: new Set(okeys) + }; +} +__name(normalizeDef, "normalizeDef"); +function handleCatchall(proms, input2, payload, ctx, def, inst, abortEarly) { + const unrecognized = []; + const keySet = def.keySet; + const _catchall = def.catchall._zod; + const t = _catchall.def.type; + const optin = _catchall.optin; + const optout = _catchall.optout; + let seen = 0; + for (const key in input2) { + if (abortEarly && payload.issues.length !== seen) { + if (aborted(payload, seen)) + break; + seen = payload.issues.length; + } + if (keySet.has(key)) + continue; + if (key === "__proto__") { + if (t === "never") + unrecognized.push(key); + continue; + } + if (t === "never") { + unrecognized.push(key); + continue; + } + const r5 = _catchall.run({ value: input2[key], issues: [] }, ctx); + if (r5 instanceof Promise) { + proms.push(r5.then((r6) => handlePropertyResult(r6, payload, key, input2, optin, optout))); + } else { + handlePropertyResult(r5, payload, key, input2, optin, optout); + } + } + if (unrecognized.length) { + payload.issues.push({ + code: "unrecognized_keys", + keys: unrecognized, + input: input2, + inst, + // Describes the shape of the input, not the validity of the parsed value, so it never aborts. The parse still fails; the schema's own checks just get to run first, and an enclosing intersection can reconcile the key against a sibling operand. + continue: true + }); + } + if (!proms.length) + return payload; + return Promise.all(proms).then(() => { + return payload; + }); +} +__name(handleCatchall, "handleCatchall"); +var $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => { + $ZodType.init(inst, def); + const desc = Object.getOwnPropertyDescriptor(def, "shape"); + const sh = desc?.get ? desc.get.raw : def.shape ?? {}; + if (sh) { + const get2 = /* @__PURE__ */ __name(() => { + const newSh = { ...sh }; + Object.defineProperty(def, "shape", { value: newSh }); + get2.raw = newSh; + return newSh; + }, "get"); + get2.raw = sh; + Object.defineProperty(def, "shape", { get: get2 }); + } + const _normalized = cached(() => normalizeDef(def)); + defineLazyInternal(inst, "propValues", (zod) => { + const shape = zod.def.shape; + const propValues = {}; + for (const key in shape) { + const field = shape[key]._zod; + if (field.values) { + if (!Object.prototype.hasOwnProperty.call(propValues, key)) { + assignProp(propValues, key, /* @__PURE__ */ new Set()); + } + for (const v of field.values) + propValues[key].add(v); + if (field.optin !== void 0) + propValues[key].add(void 0); + } + } + return propValues; + }); + const isObject2 = isObject; + const catchall = def.catchall; + let value; + const memo2 = globalConfig.memoizer; + memo2?.attach(inst); + inst._zod.parse = (payload, ctx) => { + value ?? (value = _normalized.value); + const input2 = payload.value; + if (!isObject2(input2)) { + payload.issues.push({ + expected: "object", + code: "invalid_type", + input: input2, + inst + }); + return payload; + } + payload.value = memo2 ? memo2.alloc(inst, payload, {}, ctx) : {}; + const proms = []; + const shape = value.shape; + const abortEarly = ctx?.abortEarly; + let seen = payload.issues.length; + for (const key of value.allKeys) { + if (abortEarly && payload.issues.length !== seen) { + if (aborted(payload, seen)) + break; + seen = payload.issues.length; + } + if (key === "__proto__") + continue; + const el = shape[key]; + const optin = el._zod.optin; + const optout = el._zod.optout; + const r5 = el._zod.run({ value: input2[key], issues: [] }, ctx); + if (r5 instanceof Promise) { + proms.push(r5.then((r6) => handlePropertyResult(r6, payload, key, input2, optin, optout))); + } else { + handlePropertyResult(r5, payload, key, input2, optin, optout); + } + } + if (!catchall) { + return proms.length ? Promise.all(proms).then(() => payload) : payload; + } + return handleCatchall(proms, input2, payload, ctx, _normalized.value, inst, abortEarly === true); + }; +}); +var $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def) => { + $ZodObject.init(inst, def); + const superParse = inst._zod.parse; + const _normalized = cached(() => normalizeDef(def)); + const memo2 = globalConfig.memoizer; + const generateFastpass = /* @__PURE__ */ __name((shape) => { + const normalized = _normalized.value; + const syms = normalized.symbolKeys; + const doc = new Doc(["payload", "ctx"], { shape, inst, memo: memo2, syms }); + const parseStr = /* @__PURE__ */ __name((k5) => `shape[${k5}]._zod.run({ value: input[${k5}], issues: [] }, ctx)`, "parseStr"); + const prefixStr = /* @__PURE__ */ __name((id, k5) => ` + let ${id}_ab = false; + for (let i = 0; i < ${id}.issues.length; i++) { + const iss = ${id}.issues[i]; + iss.path = iss.path ? [${k5}, ...iss.path] : [${k5}]; + payload.issues.push(iss); + if (iss.continue !== true) ${id}_ab = true; + } + if (${id}_ab && ctx && ctx.abortEarly) { + payload.value = newResult; + return payload; + }`, "prefixStr"); + doc.write(`const input = payload.value;`); + const ids = /* @__PURE__ */ Object.create(null); + let counter = 0; + for (const key of normalized.allKeys) { + ids[key] = `key_${counter++}`; + } + doc.write(memo2 ? `const newResult = memo.alloc(inst, payload, {}, ctx);` : `const newResult = {};`); + for (const key of normalized.allKeys) { + if (key === "__proto__") + continue; + const id = ids[key]; + const k5 = typeof key === "symbol" ? `syms[${syms.indexOf(key)}]` : esc(key); + const isPresent = `${k5} in input`; + const schema2 = shape[key]; + const optin = schema2?._zod?.optin; + const isOptionalIn = optin !== void 0; + const isOptionalOut = schema2?._zod?.optout === "optional"; + doc.write(`const ${id} = ${parseStr(k5)};`); + if (isOptionalIn && isOptionalOut) { + const assign = optin === "optional" ? `${id}_present` : `${id}.value !== undefined || ${id}_present`; + doc.write(` + const ${id}_present = ${isPresent}; + if (!${id}.issues.length || ${id}_present) { + if (${id}.issues.length) {${prefixStr(id, k5)} + } + + if (${assign}) { + newResult[${k5}] = ${id}.value; + } + } + + `); + } else if (!isOptionalIn) { + doc.write(` + const ${id}_present = ${isPresent}; + if (${id}.issues.length) {${prefixStr(id, k5)} + } + if (!${id}_present && !${id}.issues.length) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: undefined, + path: [${k5}] + }); + if (ctx && ctx.abortEarly) { + payload.value = newResult; + return payload; + } + } + + if (${id}_present) { + newResult[${k5}] = ${id}.value; + } + + `); + } else { + doc.write(` + if (${id}.issues.length) {${prefixStr(id, k5)} + } + `); + if (optin === "defaulted") { + doc.write(`newResult[${k5}] = ${id}.value;`); + } else { + doc.write(` + if (${id}.value !== undefined || ${isPresent}) { + newResult[${k5}] = ${id}.value; + } + `); + } + } + } + doc.write(`payload.value = newResult;`); + doc.write(`return payload;`); + return doc.compile(); + }, "generateFastpass"); + let fastpass; + const isObject2 = isObject; + const jit = !globalConfig.jitless; + const allowsEval2 = allowsEval; + const fastEnabled = jit && allowsEval2.value; + const catchall = def.catchall; + let value; + inst._zod.parse = (payload, ctx) => { + value ?? (value = _normalized.value); + const input2 = payload.value; + if (!isObject2(input2)) { + payload.issues.push({ + expected: "object", + code: "invalid_type", + input: input2, + inst + }); + return payload; + } + if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) { + if (!fastpass) + fastpass = generateFastpass(def.shape); + payload = fastpass(payload, ctx); + if (!catchall) + return payload; + return handleCatchall([], input2, payload, ctx, value, inst, ctx?.abortEarly === true); + } + return superParse(payload, ctx); + }; +}); +function handleUnionResults(results, final, inst, ctx) { + for (const result of results) { + if (result.issues.length === 0) { + final.value = result.value; + return final; + } + } + const nonaborted = results.filter((r5) => !aborted(r5)); + if (nonaborted.length === 1) { + final.value = nonaborted[0].value; + return nonaborted[0]; + } + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + }); + return final; +} +__name(handleUnionResults, "handleUnionResults"); +var $ZodUnion = /* @__PURE__ */ $constructor("$ZodUnion", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "optin", (zod) => zod.def.options.some((o3) => o3._zod.optin === "defaulted") ? "defaulted" : zod.def.options.some((o3) => o3._zod.optin !== void 0) ? "optional" : void 0); + defineLazyInternal(inst, "optout", (zod) => zod.def.options.some((o3) => o3._zod.optout === "optional") ? "optional" : void 0); + defineLazyInternal(inst, "values", (zod) => { + if (zod.def.options.every((o3) => o3._zod.values)) { + return new Set(zod.def.options.flatMap((option) => Array.from(option._zod.values))); + } + return void 0; + }); + defineLazyInternal(inst, "pattern", (zod) => { + if (zod.def.options.every((o3) => o3._zod.pattern)) { + const patterns = zod.def.options.map((o3) => o3._zod.pattern); + return new RegExp(`^(${patterns.map((p3) => cleanRegex(p3.source)).join("|")})$`); + } + return void 0; + }); + const first = def.options.length === 1 ? def.options[0]._zod.run : null; + inst._zod.parse = (payload, ctx) => { + if (first) { + return first(payload, ctx); + } + let async = false; + const results = []; + for (const option of def.options) { + const result = option._zod.run({ + value: payload.value, + issues: [] + }, ctx); + if (result instanceof Promise) { + results.push(result); + async = true; + } else { + if (result.issues.length === 0) + return result; + results.push(result); + } + } + if (!async) + return handleUnionResults(results, payload, inst, ctx); + return Promise.all(results).then((results2) => { + return handleUnionResults(results2, payload, inst, ctx); + }); + }; +}); +function handleExclusiveUnionResults(results, final, inst, ctx) { + const matches = []; + for (let i5 = 0; i5 < results.length; i5++) { + if (results[i5].issues.length === 0) + matches.push(i5); + } + if (matches.length === 1) { + final.value = results[matches[0]].value; + return final; + } + if (matches.length === 0) { + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: results.map((result) => result.issues.map((iss) => finalizeIssue(iss, ctx, config()))) + }); + } else { + final.issues.push({ + code: "invalid_union", + input: final.value, + inst, + errors: [], + inclusive: false, + matches + }); + } + return final; +} +__name(handleExclusiveUnionResults, "handleExclusiveUnionResults"); +var $ZodXor = /* @__PURE__ */ $constructor("$ZodXor", (inst, def) => { + $ZodUnion.init(inst, def); + def.inclusive = false; + const first = def.options.length === 1 ? def.options[0]._zod.run : null; + inst._zod.parse = (payload, ctx) => { + if (first) { + return first(payload, ctx); + } + let async = false; + const results = []; + for (const option of def.options) { + const result = option._zod.run({ + value: payload.value, + issues: [] + }, ctx); + if (result instanceof Promise) { + results.push(result); + async = true; + } else { + results.push(result); + } + } + if (!async) + return handleExclusiveUnionResults(results, payload, inst, ctx); + return Promise.all(results).then((results2) => { + return handleExclusiveUnionResults(results2, payload, inst, ctx); + }); + }; +}); +function getDiscriminatedOption(union2, value) { + const internals = union2._zod; + let map2 = internals.bag.optionsMap; + if (!map2) { + map2 = discriminatorMap(internals.def); + internals.bag.optionsMap = map2; + } + const option = map2.get(value); + if (option === null) + throw new Error(`Ambiguous discriminator value "${String(value)}"`); + return option; +} +__name(getDiscriminatedOption, "getDiscriminatedOption"); +function discriminatorMap(def) { + const map2 = /* @__PURE__ */ new Map(); + for (const option of def.options) { + const values = option._zod.propValues?.[def.discriminator]; + if (!values || values.size === 0) + throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`); + for (const value of values) { + if (map2.has(value)) { + if (value !== void 0) + throw new Error(`Duplicate discriminator value "${String(value)}"`); + map2.set(value, null); + } else { + map2.set(value, option); + } + } + } + return map2; +} +__name(discriminatorMap, "discriminatorMap"); +var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnion", (inst, def) => { + def.inclusive = false; + $ZodUnion.init(inst, def); + const _super = inst._zod.parse; + defineLazyInternal(inst, "propValues", (zod) => { + const propValues = {}; + let undefinedCount = 0; + for (const option of zod.def.options) { + const pv = option._zod.propValues; + if (!pv || Object.keys(pv).length === 0) + throw new Error(`Invalid discriminated union option at index "${zod.def.options.indexOf(option)}"`); + if (pv[zod.def.discriminator]?.has(void 0)) + undefinedCount++; + for (const [k5, v] of Object.entries(pv)) { + if (!Object.prototype.hasOwnProperty.call(propValues, k5)) { + assignProp(propValues, k5, /* @__PURE__ */ new Set()); + } + for (const val of v) { + propValues[k5].add(val); + } + } + } + if (!zod.def.unionFallback && undefinedCount > 1) + propValues[zod.def.discriminator]?.delete(void 0); + return propValues; + }); + def.options.forEach((option, i5) => { + const propShape = rawShape(option._zod.def); + if (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) { + throw new Error(`Invalid discriminated union option at index "${i5}"`); + } + }); + const disc = cached(() => discriminatorMap(def)); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + if (!isObject(input2)) { + payload.issues.push({ + code: "invalid_type", + expected: "object", + input: input2, + inst + }); + return payload; + } + const value = input2?.[def.discriminator]; + const opt = disc.value.get(value); + if (opt && (value !== void 0 || ctx.direction !== "backward")) { + return opt._zod.run(payload, ctx); + } + if (def.unionFallback || ctx.direction === "backward") { + return _super(payload, ctx); + } + payload.issues.push({ + code: "invalid_union", + errors: [], + note: "No matching discriminator", + discriminator: def.discriminator, + options: Array.from(disc.value.keys()).filter((value2) => disc.value.get(value2) !== null), + input: input2, + path: [def.discriminator], + inst + }); + return payload; + }; +}); +var $ZodIntersection = /* @__PURE__ */ $constructor("$ZodIntersection", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + const left = def.left._zod.run({ value: input2, issues: [] }, ctx); + const right = def.right._zod.run({ value: input2, issues: [] }, ctx); + const async = left instanceof Promise || right instanceof Promise; + if (async) { + return Promise.all([left, right]).then(([left2, right2]) => { + return handleIntersectionResults(payload, left2, right2); + }); + } + return handleIntersectionResults(payload, left, right); + }; +}); +function mergeValues(a5, b5) { + if (a5 === b5) { + return { valid: true, data: a5 }; + } + if (a5 instanceof Date && b5 instanceof Date && +a5 === +b5) { + return { valid: true, data: a5 }; + } + if (isPlainObject(a5) && isPlainObject(b5)) { + const bKeys = Object.keys(b5); + const sharedKeys = Object.keys(a5).filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a5, ...b5 }; + if (Object.prototype.hasOwnProperty.call(newObj, "__proto__")) + delete newObj.__proto__; + for (const key of sharedKeys) { + if (key === "__proto__") + continue; + const sharedValue = mergeValues(a5[key], b5[key]); + if (!sharedValue.valid) { + return { + valid: false, + mergeErrorPath: [key, ...sharedValue.mergeErrorPath] + }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } + if (Array.isArray(a5) && Array.isArray(b5)) { + if (a5.length !== b5.length) { + return { valid: false, mergeErrorPath: [] }; + } + const newArray = []; + for (let index = 0; index < a5.length; index++) { + const itemA = a5[index]; + const itemB = b5[index]; + const sharedValue = mergeValues(itemA, itemB); + if (!sharedValue.valid) { + return { + valid: false, + mergeErrorPath: [index, ...sharedValue.mergeErrorPath] + }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } + return { valid: false, mergeErrorPath: [] }; +} +__name(mergeValues, "mergeValues"); +function handleIntersectionResults(result, left, right) { + const unrecKeys = /* @__PURE__ */ new Map(); + let unrecIssue; + const keyIssues = /* @__PURE__ */ new Map(); + const collect = /* @__PURE__ */ __name((iss, side) => { + let keys; + if (iss.code === "unrecognized_keys" && !iss.path?.length) { + unrecIssue ?? (unrecIssue = iss); + keys = iss.keys; + } else if (iss.code === "invalid_key" && iss.origin === "record" && iss.path?.length === 1) { + const k5 = String(iss.path[0]); + if (!keyIssues.has(k5)) + keyIssues.set(k5, iss); + keys = [k5]; + } else { + return false; + } + for (const k5 of keys) { + if (!unrecKeys.has(k5)) + unrecKeys.set(k5, {}); + unrecKeys.get(k5)[side] = true; + } + return true; + }, "collect"); + for (const iss of left.issues) { + if (!collect(iss, "l")) + result.issues.push(iss); + } + for (const iss of right.issues) { + if (!collect(iss, "r")) + result.issues.push(iss); + } + const bothKeys = [...unrecKeys].filter(([, f5]) => f5.l && f5.r).map(([k5]) => k5); + if (bothKeys.length) { + const aggregated = unrecIssue ? bothKeys.filter((k5) => unrecIssue.keys.includes(k5)) : []; + if (aggregated.length) + result.issues.push({ ...unrecIssue, keys: aggregated }); + for (const k5 of bothKeys) { + if (!aggregated.includes(k5) && keyIssues.has(k5)) + result.issues.push(keyIssues.get(k5)); + } + } + const merged = mergeValues(left.value, right.value); + if (!merged.valid) { + if (aborted(result)) + return result; + throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`); + } + result.value = merged.data; + return result; +} +__name(handleIntersectionResults, "handleIntersectionResults"); +var $ZodTuple = /* @__PURE__ */ $constructor("$ZodTuple", (inst, def) => { + $ZodType.init(inst, def); + const items = def.items; + const memo2 = globalConfig.memoizer; + memo2?.attach(inst); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + if (!Array.isArray(input2)) { + payload.issues.push({ + input: input2, + inst, + expected: "tuple", + code: "invalid_type" + }); + return payload; + } + payload.value = memo2 ? memo2.alloc(inst, payload, [], ctx) : []; + const proms = []; + const optinStart = getTupleOptStart(items, "optin"); + const optoutStart = getTupleOptStart(items, "optout"); + if (!def.rest) { + if (input2.length < optinStart) { + payload.issues.push({ + code: "too_small", + minimum: optinStart, + inclusive: true, + input: input2, + inst, + origin: "array" + }); + return payload; + } + if (input2.length > items.length) { + payload.issues.push({ + code: "too_big", + maximum: items.length, + inclusive: true, + input: input2, + inst, + origin: "array" + }); + } + } + const itemResults = new Array(items.length); + const abortEarly = def.rest ? ctx?.abortEarly : void 0; + let itemAborted = false; + for (let i5 = 0; i5 < items.length; i5++) { + const r5 = items[i5]._zod.run({ value: input2[i5], issues: [] }, ctx); + if (r5 instanceof Promise) { + proms.push(r5.then((rr) => { + itemResults[i5] = rr; + })); + } else { + itemResults[i5] = r5; + if (abortEarly && !itemAborted && r5.issues.length) + itemAborted = aborted(r5); + } + } + if (def.rest && !itemAborted) { + let i5 = items.length - 1; + const rest = input2.slice(items.length); + let seen = payload.issues.length; + for (const el of rest) { + if (abortEarly && payload.issues.length !== seen) { + if (aborted(payload, seen)) + break; + seen = payload.issues.length; + } + i5++; + const result = def.rest._zod.run({ value: el, issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((r5) => handleTupleResult(r5, payload, i5))); + } else { + handleTupleResult(result, payload, i5); + } + } + } + if (proms.length) { + return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input2, optoutStart)); + } + return handleTupleResults(itemResults, payload, items, input2, optoutStart); + }; +}); +function getTupleOptStart(items, key) { + for (let i5 = items.length - 1; i5 >= 0; i5--) { + const omittable = key === "optin" ? items[i5]._zod.optin !== void 0 : items[i5]._zod.optout === "optional"; + if (!omittable) + return i5 + 1; + } + return 0; +} +__name(getTupleOptStart, "getTupleOptStart"); +function handleTupleResult(result, final, index) { + if (result.issues.length) { + final.issues.push(...prefixIssues(index, result.issues)); + } + final.value[index] = result.value; +} +__name(handleTupleResult, "handleTupleResult"); +function handleTupleResults(itemResults, final, items, input2, optoutStart) { + for (let i5 = 0; i5 < items.length; i5++) { + const r5 = itemResults[i5]; + const isPresent = i5 < input2.length; + if (!isPresent && i5 >= optoutStart && items[i5]._zod.optin === "optional") { + final.value.length = i5; + break; + } + if (r5.issues.length) { + if (!isPresent && i5 >= optoutStart) { + final.value.length = i5; + break; + } + final.issues.push(...prefixIssues(i5, r5.issues)); + } + final.value[i5] = r5.value; + } + for (let i5 = final.value.length - 1; i5 >= input2.length; i5--) { + if (items[i5]._zod.optout === "optional" && final.value[i5] === void 0) { + final.value.length = i5; + } else { + break; + } + } + return final; +} +__name(handleTupleResults, "handleTupleResults"); +var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => { + $ZodType.init(inst, def); + const memo2 = globalConfig.memoizer; + memo2?.attach(inst); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + if (!isPlainObject(input2)) { + payload.issues.push({ + expected: "record", + code: "invalid_type", + input: input2, + inst + }); + return payload; + } + const proms = []; + const values = def.keyType._zod.values; + if (values && !def.partial) { + payload.value = memo2 ? memo2.alloc(inst, payload, {}, ctx) : {}; + const recordKeys = /* @__PURE__ */ new Set(); + for (const key of values) { + if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") { + recordKeys.add(typeof key === "number" ? key.toString() : key); + if (key === "__proto__") + continue; + const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); + if (keyResult instanceof Promise) { + throw new Error("Async schemas not supported in object keys currently"); + } + if (keyResult.issues.length) { + payload.issues.push({ + code: "invalid_key", + origin: "record", + issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())), + input: key, + path: [key], + inst + }); + continue; + } + const outKey = keyResult.value; + if (outKey === "__proto__") + continue; + const result = def.valueType._zod.run({ value: input2[key], issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => { + if (result2.issues.length) { + payload.issues.push(...prefixIssues(key, result2.issues)); + } + payload.value[outKey] = result2.value; + })); + } else { + if (result.issues.length) { + payload.issues.push(...prefixIssues(key, result.issues)); + } + payload.value[outKey] = result.value; + } + } + } + let unrecognized; + for (const key in input2) { + if (!recordKeys.has(key)) { + if (def.mode === "loose") { + if (key === "__proto__") + continue; + payload.value[key] = input2[key]; + } else { + unrecognized = unrecognized ?? []; + unrecognized.push(key); + } + } + } + if (unrecognized && unrecognized.length > 0) { + payload.issues.push({ + code: "unrecognized_keys", + input: input2, + inst, + keys: unrecognized, + continue: true + }); + } + } else { + payload.value = memo2 ? memo2.alloc(inst, payload, {}, ctx) : {}; + let unrecognized; + for (const key of Reflect.ownKeys(input2)) { + if (key === "__proto__") + continue; + if (!Object.prototype.propertyIsEnumerable.call(input2, key)) + continue; + let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); + if (keyResult instanceof Promise) { + throw new Error("Async schemas not supported in object keys currently"); + } + const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length; + if (checkNumericKey) { + const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx); + if (retryResult instanceof Promise) { + throw new Error("Async schemas not supported in object keys currently"); + } + if (retryResult.issues.length === 0) { + keyResult = retryResult; + } + } + if (keyResult.issues.length) { + if (def.mode === "loose") { + payload.value[key] = input2[key]; + } else if (values) { + unrecognized = unrecognized ?? []; + unrecognized.push(key); + } else { + payload.issues.push({ + code: "invalid_key", + origin: "record", + issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())), + input: key, + path: [key], + inst + }); + } + continue; + } + const outKey = keyResult.value; + if (outKey === "__proto__") + continue; + const result = def.valueType._zod.run({ value: input2[key], issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => { + if (result2.issues.length) { + payload.issues.push(...prefixIssues(key, result2.issues)); + } + payload.value[outKey] = result2.value; + })); + } else { + if (result.issues.length) { + payload.issues.push(...prefixIssues(key, result.issues)); + } + payload.value[outKey] = result.value; + } + } + if (unrecognized && unrecognized.length > 0) { + payload.issues.push({ + code: "unrecognized_keys", + input: input2, + inst, + keys: unrecognized, + continue: true + }); + } + } + if (proms.length) { + return Promise.all(proms).then(() => payload); + } + return payload; + }; +}); +var $ZodMap = /* @__PURE__ */ $constructor("$ZodMap", (inst, def) => { + $ZodType.init(inst, def); + const memo2 = globalConfig.memoizer; + memo2?.attach(inst); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + if (!(input2 instanceof Map)) { + payload.issues.push({ + expected: "map", + code: "invalid_type", + input: input2, + inst + }); + return payload; + } + const proms = []; + payload.value = memo2 ? memo2.alloc(inst, payload, /* @__PURE__ */ new Map(), ctx) : /* @__PURE__ */ new Map(); + const abortEarly = ctx?.abortEarly; + let seen = payload.issues.length; + for (const [key, value] of input2) { + if (abortEarly && payload.issues.length !== seen) { + if (aborted(payload, seen)) + break; + seen = payload.issues.length; + } + const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx); + const valueResult = def.valueType._zod.run({ value, issues: [] }, ctx); + if (keyResult instanceof Promise || valueResult instanceof Promise) { + proms.push(Promise.all([keyResult, valueResult]).then(([keyResult2, valueResult2]) => { + handleMapResult(keyResult2, valueResult2, payload, key, input2, inst, ctx); + })); + } else { + handleMapResult(keyResult, valueResult, payload, key, input2, inst, ctx); + } + } + if (proms.length) + return Promise.all(proms).then(() => payload); + return payload; + }; + capSize(inst, mapSize); +}); +function handleMapResult(keyResult, valueResult, final, key, input2, inst, ctx) { + if (keyResult.issues.length) { + if (propertyKeyTypes.has(typeof key)) { + final.issues.push(...prefixIssues(key, keyResult.issues)); + } else { + final.issues.push({ + code: "invalid_key", + origin: "map", + input: input2, + inst, + issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }); + } + } + if (valueResult.issues.length) { + if (propertyKeyTypes.has(typeof key)) { + final.issues.push(...prefixIssues(key, valueResult.issues)); + } else { + final.issues.push({ + origin: "map", + code: "invalid_element", + input: input2, + inst, + key, + issues: valueResult.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }); + } + } + final.value.set(keyResult.value, valueResult.value); +} +__name(handleMapResult, "handleMapResult"); +var $ZodSet = /* @__PURE__ */ $constructor("$ZodSet", (inst, def) => { + $ZodType.init(inst, def); + const memo2 = globalConfig.memoizer; + memo2?.attach(inst); + inst._zod.parse = (payload, ctx) => { + const input2 = payload.value; + if (!(input2 instanceof Set)) { + payload.issues.push({ + input: input2, + inst, + expected: "set", + code: "invalid_type" + }); + return payload; + } + const proms = []; + payload.value = memo2 ? memo2.alloc(inst, payload, /* @__PURE__ */ new Set(), ctx) : /* @__PURE__ */ new Set(); + const abortEarly = ctx?.abortEarly; + let seen = payload.issues.length; + for (const item of input2) { + if (abortEarly && payload.issues.length !== seen) { + if (aborted(payload, seen)) + break; + seen = payload.issues.length; + } + const result = def.valueType._zod.run({ value: item, issues: [] }, ctx); + if (result instanceof Promise) { + proms.push(result.then((result2) => handleSetResult(result2, payload))); + } else + handleSetResult(result, payload); + } + if (proms.length) + return Promise.all(proms).then(() => payload); + return payload; + }; + capSize(inst, setSize); +}); +function handleSetResult(result, final) { + if (result.issues.length) { + final.issues.push(...result.issues); + } + final.value.add(result.value); +} +__name(handleSetResult, "handleSetResult"); +var $ZodEnum = /* @__PURE__ */ $constructor("$ZodEnum", (inst, def) => { + $ZodType.init(inst, def); + const values = getEnumValues(def.entries); + const valuesSet = new Set(values); + inst._zod.values = valuesSet; + defineLazyInternal(inst, "pattern", (zod) => { + const patternValues = getEnumValues(zod.def.entries).filter((k5) => propertyKeyTypes.has(typeof k5)); + return new RegExp(patternValues.length ? `^(${patternValues.map((o3) => escapeRegex(o3.toString())).join("|")})$` : "^[^\\s\\S]$"); + }); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (valuesSet.has(input2)) { + return payload; + } + payload.issues.push({ + code: "invalid_value", + values, + input: input2, + inst + }); + return payload; + }; +}); +var $ZodLiteral = /* @__PURE__ */ $constructor("$ZodLiteral", (inst, def) => { + $ZodType.init(inst, def); + const values = new Set(def.values); + inst._zod.values = values; + defineLazyInternal(inst, "pattern", (zod) => { + const vals = zod.def.values; + return new RegExp(vals.length ? `^(${vals.map((o3) => typeof o3 === "string" ? escapeRegex(o3) : o3 ? escapeRegex(o3.toString()) : String(o3)).join("|")})$` : "^[^\\s\\S]$"); + }); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (values.has(input2)) { + return payload; + } + payload.issues.push({ + code: "invalid_value", + values: def.values, + input: input2, + inst + }); + return payload; + }; +}); +var $ZodFile = /* @__PURE__ */ $constructor("$ZodFile", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + const input2 = payload.value; + if (input2 instanceof File) + return payload; + payload.issues.push({ + expected: "file", + code: "invalid_type", + input: input2, + inst + }); + return payload; + }; +}); +var $ZodTransform = /* @__PURE__ */ $constructor("$ZodTransform", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "optional"; + globalConfig.memoizer?.guard(inst); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + throw new $ZodEncodeError(inst.constructor.name); + } + const _out = def.transform(payload.value, payload); + if (ctx.async) { + const output2 = _out instanceof Promise ? _out : Promise.resolve(_out); + return output2.then((output3) => { + payload.value = output3; + return payload; + }); + } + if (_out instanceof Promise) { + throw new $ZodAsyncError(); + } + payload.value = _out; + return payload; + }; +}); +function handleOptionalResult(payload, result) { + payload.value = result.issues.length ? void 0 : result.value; + return payload; +} +__name(handleOptionalResult, "handleOptionalResult"); +var $ZodOptional = /* @__PURE__ */ $constructor("$ZodOptional", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "optin", (zod) => zod.def.innerType._zod.optin === "defaulted" ? "defaulted" : "optional"); + inst._zod.optout = "optional"; + defineLazyInternal(inst, "values", (zod) => { + const values = zod.def.innerType._zod.values; + return values ? /* @__PURE__ */ new Set([...values, void 0]) : void 0; + }); + defineLazyInternal(inst, "pattern", (zod) => { + const pattern = zod.def.innerType._zod.pattern; + return pattern ? new RegExp(`^(${cleanRegex(pattern.source)})?$`) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + if (payload.value === void 0) { + if (def.innerType._zod.optin !== "defaulted") + return payload; + const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx); + if (result instanceof Promise) + return result.then((result2) => handleOptionalResult(payload, result2)); + return handleOptionalResult(payload, result); + } + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodExactOptional = /* @__PURE__ */ $constructor("$ZodExactOptional", (inst, def) => { + $ZodOptional.init(inst, def); + defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values); + defineLazyInternal(inst, "pattern", (zod) => zod.def.innerType._zod.pattern); + inst._zod.parse = (payload, ctx) => { + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodNullable = /* @__PURE__ */ $constructor("$ZodNullable", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "optin", (zod) => zod.def.innerType._zod.optin); + defineLazyInternal(inst, "optout", (zod) => zod.def.innerType._zod.optout); + defineLazyInternal(inst, "pattern", (zod) => { + const pattern = zod.def.innerType._zod.pattern; + return pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0; + }); + defineLazyInternal(inst, "values", (zod) => { + return zod.def.innerType._zod.values ? /* @__PURE__ */ new Set([...zod.def.innerType._zod.values, null]) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + if (payload.value === null) + return payload; + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodDefault = /* @__PURE__ */ $constructor("$ZodDefault", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "defaulted"; + defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + if (payload.value === void 0) { + payload.value = def.defaultValue; + return payload; + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleDefaultResult(result2, def)); + } + return handleDefaultResult(result, def); + }; +}); +function handleDefaultResult(payload, def) { + if (payload.value === void 0) { + payload.value = def.defaultValue; + } + return payload; +} +__name(handleDefaultResult, "handleDefaultResult"); +var $ZodPrefault = /* @__PURE__ */ $constructor("$ZodPrefault", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.optin = "defaulted"; + defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + if (payload.value === void 0) { + payload.value = def.defaultValue; + } + return def.innerType._zod.run(payload, ctx); + }; +}); +var $ZodNonOptional = /* @__PURE__ */ $constructor("$ZodNonOptional", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "values", (zod) => { + const v = zod.def.innerType._zod.values; + return v ? new Set([...v].filter((x) => x !== void 0)) : void 0; + }); + inst._zod.parse = (payload, ctx) => { + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleNonOptionalResult(result2, inst)); + } + return handleNonOptionalResult(result, inst); + }; +}); +function handleNonOptionalResult(payload, inst) { + if (!payload.issues.length && payload.value === void 0) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: payload.value, + inst + }); + } + return payload; +} +__name(handleNonOptionalResult, "handleNonOptionalResult"); +var $ZodSuccess = /* @__PURE__ */ $constructor("$ZodSuccess", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + throw new $ZodEncodeError("ZodSuccess"); + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then((result2) => { + payload.value = result2.issues.length === 0; + return payload; + }); + } + payload.value = result.issues.length === 0; + return payload; + }; +}); +function handleCatchResult(payload, result, def, ctx) { + if (!result.issues.length) { + payload.value = result.value; + if (result.memo) + payload.memo = true; + return payload; + } + payload.value = def.catchValue({ + ...result, + value: payload.value, + error: { + issues: result.issues.map((iss) => finalizeIssue(iss, ctx, config())) + }, + input: payload.value + }); + return payload; +} +__name(handleCatchResult, "handleCatchResult"); +var $ZodCatch = /* @__PURE__ */ $constructor("$ZodCatch", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "optin", (zod) => zod.def.innerType._zod.optin === "defaulted" ? "defaulted" : "optional"); + defineLazyInternal(inst, "optout", (zod) => zod.def.innerType._zod.optout); + defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx); + if (result instanceof Promise) { + return result.then((result2) => handleCatchResult(payload, result2, def, ctx)); + } + return handleCatchResult(payload, result, def, ctx); + }; +}); +var $ZodNaN = /* @__PURE__ */ $constructor("$ZodNaN", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, _ctx) => { + if (typeof payload.value !== "number" || !Number.isNaN(payload.value)) { + payload.issues.push({ + input: payload.value, + inst, + expected: "nan", + code: "invalid_type" + }); + return payload; + } + return payload; + }; +}); +var $ZodPipe = /* @__PURE__ */ $constructor("$ZodPipe", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "values", (zod) => zod.def.in._zod.values); + defineLazyInternal(inst, "optin", (zod) => zod.def.in._zod.optin); + defineLazyInternal(inst, "optout", (zod) => zod.def.out._zod.optout); + defineLazyInternal(inst, "propValues", (zod) => zod.def.in._zod.propValues); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + const right = def.out._zod.run(payload, ctx); + if (right instanceof Promise) { + return right.then((right2) => handlePipeResult(right2, def.in, ctx)); + } + return handlePipeResult(right, def.in, ctx); + } + const left = def.in._zod.run(payload, ctx); + if (left instanceof Promise) { + return left.then((left2) => handlePipeResult(left2, def.out, ctx)); + } + return handlePipeResult(left, def.out, ctx); + }; +}); +function handlePipeResult(left, next, ctx) { + if (left.issues.some((iss) => iss.code !== "unrecognized_keys")) { + left.aborted = true; + return left; + } + return next._zod.run({ value: left.value, issues: left.issues }, ctx); +} +__name(handlePipeResult, "handlePipeResult"); +var $ZodCodec = /* @__PURE__ */ $constructor("$ZodCodec", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "values", (zod) => zod.def.in._zod.values); + defineLazyInternal(inst, "optin", (zod) => zod.def.in._zod.optin); + defineLazyInternal(inst, "optout", (zod) => zod.def.out._zod.optout); + defineLazyInternal(inst, "propValues", (zod) => zod.def.in._zod.propValues); + inst._zod.parse = (payload, ctx) => { + const direction = ctx.direction || "forward"; + if (direction === "forward") { + const left = def.in._zod.run(payload, ctx); + if (left instanceof Promise) { + return left.then((left2) => handleCodecAResult(left2, def, ctx)); + } + return handleCodecAResult(left, def, ctx); + } else { + const right = def.out._zod.run(payload, ctx); + if (right instanceof Promise) { + return right.then((right2) => handleCodecAResult(right2, def, ctx)); + } + return handleCodecAResult(right, def, ctx); + } + }; +}); +function handleCodecAResult(result, def, ctx) { + if (result.issues.length) { + result.aborted = true; + return result; + } + const direction = ctx.direction || "forward"; + if (direction === "forward") { + const transformed = def.transform(result.value, result); + if (transformed instanceof Promise) { + return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx)); + } + return handleCodecTxResult(result, transformed, def.out, ctx); + } else { + const transformed = def.reverseTransform(result.value, result); + if (transformed instanceof Promise) { + return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx)); + } + return handleCodecTxResult(result, transformed, def.in, ctx); + } +} +__name(handleCodecAResult, "handleCodecAResult"); +function handleCodecTxResult(left, value, nextSchema, ctx) { + if (left.issues.length) { + left.aborted = true; + return left; + } + return nextSchema._zod.run({ value, issues: left.issues }, ctx); +} +__name(handleCodecTxResult, "handleCodecTxResult"); +var $ZodPreprocess = /* @__PURE__ */ $constructor("$ZodPreprocess", (inst, def) => { + $ZodPipe.init(inst, def); +}); +var $ZodReadonly = /* @__PURE__ */ $constructor("$ZodReadonly", (inst, def) => { + $ZodType.init(inst, def); + defineLazyInternal(inst, "propValues", (zod) => zod.def.innerType._zod.propValues); + defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values); + defineLazyInternal(inst, "optin", (zod) => zod.def.innerType?._zod?.optin); + defineLazyInternal(inst, "optout", (zod) => zod.def.innerType?._zod?.optout); + inst._zod.parse = (payload, ctx) => { + if (ctx.direction === "backward") { + return def.innerType._zod.run(payload, ctx); + } + const result = def.innerType._zod.run(payload, ctx); + if (result instanceof Promise) { + return result.then(handleReadonlyResult); + } + return handleReadonlyResult(result); + }; +}); +function handleReadonlyResult(payload) { + if (!payload.memo) + payload.value = Object.freeze(payload.value); + return payload; +} +__name(handleReadonlyResult, "handleReadonlyResult"); +function leafPattern(schema2) { + const def = schema2._zod.def; + let pattern = def.pattern; + let isInt = !!def.format?.includes("int"); + let minimum; + let maximum; + for (const ch of def.checks ?? []) { + const d5 = ch._zod.def; + if (d5.pattern) + pattern = d5.pattern; + isInt || (isInt = !!d5.format?.includes("int")); + const lo = d5.minimum ?? d5.length; + const hi = d5.maximum ?? d5.length; + if (lo !== void 0 && (minimum === void 0 || lo > minimum)) + minimum = lo; + if (hi !== void 0 && (maximum === void 0 || hi < maximum)) + maximum = hi; + } + if (pattern) + return pattern.source; + if (minimum !== void 0 && maximum !== void 0 && minimum > maximum) + return "(?!)"; + if (minimum !== void 0 || maximum !== void 0) + return string({ minimum, maximum }).source; + const own2 = schema2._zod.pattern; + return (isInt && own2 === number ? integer : own2)?.source; +} +__name(leafPattern, "leafPattern"); +function partPattern(schema2) { + const def = schema2._zod.def; + const own2 = schema2._zod.pattern?.source; + const inner = def.innerType ?? schema2._zod.innerType; + if (inner) { + const before = inner._zod.pattern?.source; + const after = partPattern(inner); + if (own2 && before && after && after !== before) { + return own2.replace(cleanRegex(before), () => cleanRegex(after)); + } + return own2; + } + if (def.options) { + const sources = def.options.map(partPattern); + if (sources.every(Boolean)) + return `^(${sources.map((s2) => cleanRegex(s2)).join("|")})$`; + } + return leafPattern(schema2); +} +__name(partPattern, "partPattern"); +var $ZodTemplateLiteral = /* @__PURE__ */ $constructor("$ZodTemplateLiteral", (inst, def) => { + $ZodType.init(inst, def); + const regexParts = []; + for (const part of def.parts) { + if (typeof part === "object" && part !== null) { + const source = partPattern(part); + if (!source) { + throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`); + } + regexParts.push(cleanRegex(source)); + } else if (part === null || primitiveTypes.has(typeof part)) { + regexParts.push(escapeRegex(`${part}`)); + } else { + throw new Error(`Invalid template literal part: ${part}`); + } + } + inst._zod.pattern = new RegExp(`^${regexParts.join("")}$`); + inst._zod.parse = (payload, _ctx) => { + if (typeof payload.value !== "string") { + payload.issues.push({ + input: payload.value, + inst, + expected: "string", + code: "invalid_type" + }); + return payload; + } + inst._zod.pattern.lastIndex = 0; + if (!inst._zod.pattern.test(payload.value)) { + payload.issues.push({ + input: payload.value, + inst, + code: "invalid_format", + format: def.format ?? "template_literal", + pattern: inst._zod.pattern.source + }); + return payload; + } + return payload; + }; +}); +var $ZodFunction = /* @__PURE__ */ $constructor("$ZodFunction", (inst, def) => { + $ZodType.init(inst, def); + Object.defineProperty(inst, "_def", { value: def }); + inst._zod.def = def; + inst.implement = (func) => { + if (typeof func !== "function") { + throw new Error("implement() must be called with a function"); + } + return Object.defineProperty(function(...args) { + const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args; + const result = Reflect.apply(func, this, parsedArgs); + if (inst._def.output) { + return parse(inst._def.output, result); + } + return result; + }, "_zod", { value: inst._zod, enumerable: false }); + }; + inst.implementAsync = (func) => { + if (typeof func !== "function") { + throw new Error("implementAsync() must be called with a function"); + } + return Object.defineProperty(async function(...args) { + const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args; + const result = await Reflect.apply(func, this, parsedArgs); + if (inst._def.output) { + return await parseAsync(inst._def.output, result); + } + return result; + }, "_zod", { value: inst._zod, enumerable: false }); + }; + inst._zod.parse = (payload, _ctx) => { + if (typeof payload.value !== "function") { + payload.issues.push({ + code: "invalid_type", + expected: "function", + input: payload.value, + inst + }); + return payload; + } + const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === "promise"; + if (hasPromiseOutput) { + payload.value = inst.implementAsync(payload.value); + } else { + payload.value = inst.implement(payload.value); + } + return payload; + }; + inst.input = (...args) => { + const F = inst.constructor; + if (Array.isArray(args[0])) { + return new F({ + type: "function", + input: new $ZodTuple({ + type: "tuple", + items: args[0], + rest: args[1] + }), + output: inst._def.output + }); + } + return new F({ + type: "function", + input: args[0], + output: inst._def.output + }); + }; + inst.output = (output2) => { + const F = inst.constructor; + return new F({ + type: "function", + input: inst._def.input, + output: output2 + }); + }; + return inst; +}); +var $ZodPromise = /* @__PURE__ */ $constructor("$ZodPromise", (inst, def) => { + $ZodType.init(inst, def); + inst._zod.parse = (payload, ctx) => { + return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx)); + }; +}); +var $ZodLazy = /* @__PURE__ */ $constructor("$ZodLazy", (inst, def) => { + $ZodType.init(inst, def); + defineLazy(inst._zod, "innerType", () => { + const d5 = def; + if (!d5._cachedInner) + d5._cachedInner = def.getter(); + return d5._cachedInner; + }); + defineLazyInternal(inst, "pattern", (zod) => zod.innerType?._zod?.pattern); + defineLazyInternal(inst, "propValues", (zod) => zod.innerType?._zod?.propValues); + defineLazyInternal(inst, "optin", (zod) => zod.innerType?._zod?.optin ?? void 0); + defineLazyInternal(inst, "optout", (zod) => zod.innerType?._zod?.optout ?? void 0); + inst._zod.parse = (payload, ctx) => { + const inner = inst._zod.innerType; + return inner._zod.run(payload, ctx); + }; +}); +var $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => { + $ZodCheck.init(inst, def); + $ZodType.init(inst, def); + inst._zod.parse = (payload, _) => { + return payload; + }; + inst._zod.check = (payload) => { + const input2 = payload.value; + const r5 = def.fn(input2); + if (r5 instanceof Promise) { + return r5.then((r6) => handleRefineResult(r6, payload, input2, inst)); + } + handleRefineResult(r5, payload, input2, inst); + return; + }; +}); +function handleRefineResult(result, payload, input2, inst) { + if (!result) { + const _iss = { + code: "custom", + input: input2, + inst, + // incorporates params.error into issue reporting + path: [...inst._zod.def.path ?? []], + // incorporates params.error into issue reporting + continue: !inst._zod.def.abort + // params: inst._zod.def.params, + }; + if (inst._zod.def.params) + _iss.params = inst._zod.def.params; + payload.issues.push(issue(_iss)); + } +} +__name(handleRefineResult, "handleRefineResult"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/memoizer.js +var $ZodCyclicError = class extends Error { + static { + __name(this, "$ZodCyclicError"); + } + constructor() { + super(`Cannot parse a reference cycle that closes through a transform`); + this.name = "ZodCyclicError"; + } +}; +var STATE = "~memo"; +var NO_ISSUES = []; +function isRef(value) { + return value !== null && typeof value === "object"; +} +__name(isRef, "isRef"); +function cloneIssues(issues) { + return issues.map((iss) => iss.path ? { ...iss, path: iss.path.slice() } : { ...iss }); +} +__name(cloneIssues, "cloneIssues"); +var recursive = /* @__PURE__ */ new WeakMap(); +var NONE = 0; +var ASSUMED = 1; +var PROVEN = 2; +function isRecursive(inst, stack, resolve) { + const cached2 = recursive.get(inst); + if (cached2 !== void 0) + return cached2 ? PROVEN : NONE; + if (stack.has(inst)) + return PROVEN; + stack.add(inst); + let result = NONE; + const check2 = /* @__PURE__ */ __name((child) => { + if (result !== PROVEN && child?._zod) { + const answer = isRecursive(child, stack, resolve); + if (answer > result) + result = answer; + } + }, "check"); + const shape = /* @__PURE__ */ __name((sh, spread) => { + let answer = NONE; + for (const key of Reflect.ownKeys(sh)) { + const desc = Object.getOwnPropertyDescriptor(sh, key); + if (spread && !desc.enumerable) + continue; + const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve) : NONE; + if (child > answer) + answer = child; + } + return answer; + }, "shape"); + const merge2 = /* @__PURE__ */ __name((answer) => { + if (answer > result) + result = answer; + }, "merge"); + const def = inst._zod.def; + const kind = def.type; + switch (kind) { + case "object": { + const raw4 = rawShape(def); + merge2(raw4 ? shape(raw4, true) : ASSUMED); + check2(def.catchall); + break; + } + case "array": + check2(def.element); + break; + case "tuple": + for (const el of def.items) + check2(el); + check2(def.rest); + break; + case "record": + case "map": + check2(def.keyType); + check2(def.valueType); + break; + case "set": + check2(def.valueType); + break; + case "union": + for (const el of def.options) + check2(el); + break; + case "intersection": + check2(def.left); + check2(def.right); + break; + case "optional": + case "nullable": + case "default": + case "prefault": + case "catch": + case "readonly": + case "nonoptional": + case "promise": + case "success": + check2(def.innerType); + break; + case "pipe": + check2(def.in); + check2(def.out); + break; + case "function": + check2(def.input); + check2(def.output); + break; + // `$ZodLazy` caches its inner on the def, so a resolved edge is followed exactly + case "lazy": { + const inner = def._cachedInner ?? (resolve ? inst._zod.innerType : void 0); + merge2(inner ? isRecursive(inner, stack, false) : ASSUMED); + break; + } + // a leaf by choice: `parts` are regex fragments, not data positions + case "template_literal": + // leaves + case "string": + case "number": + case "int": + case "boolean": + case "bigint": + case "symbol": + case "undefined": + case "null": + case "void": + case "never": + case "any": + case "unknown": + case "date": + case "nan": + case "enum": + case "literal": + case "file": + case "transform": + case "custom": + break; + default: { + kind; + for (const key in def) { + const desc = Object.getOwnPropertyDescriptor(def, key); + if (!desc || desc.get) + continue; + const value = desc.value; + if (!value || typeof value !== "object") + continue; + if (value._zod) + check2(value); + else if (Array.isArray(value)) + for (const el of value) + check2(el); + } + } + } + stack.delete(inst); + return settle(inst, result); +} +__name(isRecursive, "isRecursive"); +function settle(inst, answer) { + if (answer !== ASSUMED) + recursive.set(inst, answer === PROVEN); + return answer; +} +__name(settle, "settle"); +function isRecursiveSchema(inst) { + return isRecursive(inst, /* @__PURE__ */ new Set(), true) !== NONE; +} +__name(isRecursiveSchema, "isRecursiveSchema"); +function bucketFor(state2, inst) { + let bucket = state2.buckets.get(inst); + if (!bucket) { + bucket = /* @__PURE__ */ new WeakMap(); + state2.buckets.set(inst, bucket); + } + return bucket; +} +__name(bucketFor, "bucketFor"); +var handoff; +var open = []; +var memo = { + alloc(_inst, payload, empty4) { + const bucket = handoff; + if (!bucket) + return empty4; + handoff = void 0; + const entry = { value: empty4, issues: null }; + bucket.set(payload.value, entry); + open.push(entry); + return empty4; + }, + guard(inst) { + var _a4; + (_a4 = inst._zod).deferred ?? (_a4.deferred = []); + inst._zod.deferred.push(() => { + const base = inst._zod.parse; + const wrapped = /* @__PURE__ */ __name((payload, ctx) => { + if (ctx.direction !== "backward" && isBackEdge(ctx, payload.value)) + throw new $ZodCyclicError(); + return base(payload, ctx); + }, "wrapped"); + inst._zod.parse = wrapped; + if (inst._zod.run === base) + inst._zod.run = wrapped; + }); + }, + attach(inst) { + var _a4; + let isRecursiveInst; + let rechecked = false; + let lastCtx; + let lastBucket; + (_a4 = inst._zod).deferred ?? (_a4.deferred = []); + inst._zod.deferred.push(() => { + const base = inst._zod.parse; + const wrapped = /* @__PURE__ */ __name((payload, ctx) => { + if (isRecursiveInst === void 0) { + const walked = isRecursive(inst, /* @__PURE__ */ new Set(), false); + if (walked === NONE) { + inst._zod.parse = base; + if (inst._zod.run === wrapped) + inst._zod.run = base; + return base(payload, ctx); + } + if (walked === PROVEN || rechecked) + isRecursiveInst = true; + else + rechecked = true; + } + const input2 = payload.value; + if (!isRef(input2)) + return base(payload, ctx); + let state2 = ctx[STATE]; + if (!state2) { + state2 = { buckets: /* @__PURE__ */ new WeakMap(), backEdges: void 0 }; + ctx[STATE] = state2; + } + let bucket; + if (lastCtx === ctx) { + bucket = lastBucket; + } else { + bucket = bucketFor(state2, inst); + lastCtx = ctx; + lastBucket = bucket; + } + const hit = bucket.get(input2); + if (hit) { + payload.value = hit.value; + if (hit.issues) { + if (hit.issues.length) + payload.issues.push(...cloneIssues(hit.issues)); + } else { + payload.memo = true; + state2.backEdges ?? (state2.backEdges = /* @__PURE__ */ new WeakSet()); + state2.backEdges.add(hit.value); + } + return payload; + } + handoff = bucket; + const depth = open.length; + const result = base(payload, ctx); + handoff = void 0; + const entry = open.length > depth ? open.pop() : void 0; + if (result instanceof Promise) { + return result.then((r5) => { + if (entry) + entry.issues = r5.issues.length ? cloneIssues(r5.issues) : NO_ISSUES; + return r5; + }); + } + if (entry) + entry.issues = result.issues.length ? cloneIssues(result.issues) : NO_ISSUES; + return result; + }, "wrapped"); + inst._zod.parse = wrapped; + if (inst._zod.run === base) + inst._zod.run = wrapped; + }); + } +}; +function memoizer() { + return memo; +} +__name(memoizer, "memoizer"); +function isBackEdge(ctx, value) { + const backEdges = ctx[STATE]?.backEdges; + return backEdges !== void 0 && isRef(value) && backEdges.has(value); +} +__name(isBackEdge, "isBackEdge"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/index.js +var locales_exports = {}; +__export(locales_exports, { + ar: () => ar_default, + az: () => az_default, + be: () => be_default, + bg: () => bg_default, + bn: () => bn_default, + ca: () => ca_default, + ckb: () => ckb_default, + cs: () => cs_default, + da: () => da_default, + de: () => de_default, + el: () => el_default, + en: () => en_default, + eo: () => eo_default, + es: () => es_default, + fa: () => fa_default, + fi: () => fi_default, + fr: () => fr_default, + frCA: () => fr_CA_default, + gu: () => gu_default, + he: () => he_default, + hi: () => hi_default, + hr: () => hr_default, + hu: () => hu_default, + hy: () => hy_default, + id: () => id_default, + is: () => is_default, + it: () => it_default, + ja: () => ja_default, + ka: () => ka_default, + kh: () => kh_default, + km: () => km_default, + kn: () => kn_default, + ko: () => ko_default, + lt: () => lt_default, + mk: () => mk_default, + ms: () => ms_default, + ne: () => ne_default, + nl: () => nl_default, + nn: () => nn_default, + no: () => no_default, + ota: () => ota_default, + pl: () => pl_default, + ps: () => ps_default, + pt: () => pt_default, + ptBR: () => pt_BR_default, + ro: () => ro_default, + ru: () => ru_default, + sk: () => sk_default, + sl: () => sl_default, + sv: () => sv_default, + ta: () => ta_default, + tg: () => tg_default, + th: () => th_default, + tk: () => tk_default, + tr: () => tr_default, + ua: () => ua_default, + uk: () => uk_default, + ur: () => ur_default, + uz: () => uz_default, + vi: () => vi_default, + yo: () => yo_default, + zhCN: () => zh_CN_default, + zhTW: () => zh_TW_default +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ar.js +var error = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + file: { unit: "\u0628\u0627\u064A\u062A", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + array: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + set: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" }, + map: { unit: "\u0639\u0646\u0635\u0631", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0645\u062F\u062E\u0644", + email: "\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A", + url: "\u0631\u0627\u0628\u0637", + emoji: "\u0625\u064A\u0645\u0648\u062C\u064A", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + date: "\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + time: "\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + duration: "\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO", + ipv4: "\u0639\u0646\u0648\u0627\u0646 IPv4", + ipv6: "\u0639\u0646\u0648\u0627\u0646 IPv6", + mac: "\u0639\u0646\u0648\u0627\u0646 MAC", + cidrv4: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4", + cidrv6: "\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6", + base64: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded", + base64url: "\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded", + json_string: "\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON", + e164: "\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164", + credit_card: "\u0631\u0642\u0645 \u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062A\u0645\u0627\u0646", + currency_code: "\u0631\u0645\u0632 \u0627\u0644\u0639\u0645\u0644\u0629", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0645\u062F\u062E\u0644" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue2.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; + } + return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue2.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"}`; + return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue2.origin ?? "\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue2.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue2.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${issue2.prefix}"`; + if (_issue.format === "ends_with") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`; + } + case "not_multiple_of": + return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue2.divisor}`; + case "unrecognized_keys": + return `\u0645\u0639\u0631\u0641${issue2.keys.length > 1 ? "\u0627\u062A" : ""} \u063A\u0631\u064A\u0628${issue2.keys.length > 1 ? "\u0629" : ""}: ${joinValues(issue2.keys, "\u060C ")}`; + case "invalid_key": + return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue2.origin}`; + case "invalid_union": + return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; + case "invalid_element": + return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue2.origin}`; + default: + return "\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"; + } + }; +}, "error"); +function ar_default() { + return { + localeError: error() + }; +} +__name(ar_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/az.js +var error2 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "simvol", verb: "olmal\u0131d\u0131r" }, + file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, + array: { unit: "element", verb: "olmal\u0131d\u0131r" }, + set: { unit: "element", verb: "olmal\u0131d\u0131r" }, + map: { unit: "element", verb: "olmal\u0131d\u0131r" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "email address", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datetime", + date: "ISO date", + time: "ISO time", + duration: "ISO duration", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + mac: "MAC address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded string", + base64url: "base64url-encoded string", + json_string: "JSON string", + e164: "E.164 number", + credit_card: "kredit kart\u0131 n\xF6mr\u0259si", + currency_code: "valyuta kodu", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${issue2.expected}, daxil olan ${received}`; + } + return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${stringifyPrimitive(issue2.values[0])}`; + return `Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue2.origin ?? "d\u0259y\u0259r"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element"}`; + return `\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue2.origin ?? "d\u0259y\u0259r"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + return `\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Yanl\u0131\u015F m\u0259tn: "${_issue.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`; + if (_issue.format === "ends_with") + return `Yanl\u0131\u015F m\u0259tn: "${_issue.suffix}" il\u0259 bitm\u0259lidir`; + if (_issue.format === "includes") + return `Yanl\u0131\u015F m\u0259tn: "${_issue.includes}" daxil olmal\u0131d\u0131r`; + if (_issue.format === "regex") + return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`; + return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Yanl\u0131\u015F \u0259d\u0259d: ${issue2.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`; + case "unrecognized_keys": + return `Tan\u0131nmayan a\xE7ar${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`; + case "invalid_union": + return "Yanl\u0131\u015F d\u0259y\u0259r"; + case "invalid_element": + return `${issue2.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`; + default: + return `Yanl\u0131\u015F d\u0259y\u0259r`; + } + }; +}, "error"); +function az_default() { + return { + localeError: error2() + }; +} +__name(az_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/be.js +function getBelarusianPlural(count, one, few, many) { + const absCount = Math.abs(count); + const lastDigit = absCount % 10; + const lastTwoDigits = absCount % 100; + if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { + return many; + } + if (lastDigit === 1) { + return one; + } + if (lastDigit >= 2 && lastDigit <= 4) { + return few; + } + return many; +} +__name(getBelarusianPlural, "getBelarusianPlural"); +var error3 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { + unit: { + one: "\u0441\u0456\u043C\u0432\u0430\u043B", + few: "\u0441\u0456\u043C\u0432\u0430\u043B\u044B", + many: "\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + array: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + set: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + map: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + }, + file: { + unit: { + one: "\u0431\u0430\u0439\u0442", + few: "\u0431\u0430\u0439\u0442\u044B", + many: "\u0431\u0430\u0439\u0442\u0430\u045E" + }, + verb: "\u043C\u0435\u0446\u044C" + } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0443\u0432\u043E\u0434", + email: "email \u0430\u0434\u0440\u0430\u0441", + url: "URL", + emoji: "\u044D\u043C\u043E\u0434\u0437\u0456", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441", + date: "ISO \u0434\u0430\u0442\u0430", + time: "ISO \u0447\u0430\u0441", + duration: "ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C", + ipv4: "IPv4 \u0430\u0434\u0440\u0430\u0441", + ipv6: "IPv6 \u0430\u0434\u0440\u0430\u0441", + mac: "MAC \u0430\u0434\u0440\u0430\u0441", + cidrv4: "IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", + cidrv6: "IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D", + base64: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64", + base64url: "\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url", + json_string: "JSON \u0440\u0430\u0434\u043E\u043A", + e164: "\u043D\u0443\u043C\u0430\u0440 E.164", + credit_card: "\u043D\u0443\u043C\u0430\u0440 \u043A\u0440\u044D\u0434\u044B\u0442\u043D\u0430\u0439 \u043A\u0430\u0440\u0442\u044B", + currency_code: "\u043A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u044B", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0443\u0432\u043E\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u043B\u0456\u043A", + array: "\u043C\u0430\u0441\u0456\u045E" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue2.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; + } + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const maxValue = Number(issue2.maximum); + const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue2.maximum.toString()} ${unit}`; + } + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const minValue = Number(issue2.minimum); + const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue2.minimum.toString()} ${unit}`; + } + return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue2.keys.length > 1 ? "\u043A\u043B\u044E\u0447\u044B" : "\u043A\u043B\u044E\u0447"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"; + case "invalid_element": + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue2.origin}`; + default: + return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`; + } + }; +}, "error"); +function be_default() { + return { + localeError: error3() + }; +} +__name(be_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/bg.js +var error4 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + file: { unit: "\u0431\u0430\u0439\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" }, + map: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0432\u0445\u043E\u0434", + email: "\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441", + url: "URL", + emoji: "\u0435\u043C\u043E\u0434\u0436\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0432\u0440\u0435\u043C\u0435", + date: "ISO \u0434\u0430\u0442\u0430", + time: "ISO \u0432\u0440\u0435\u043C\u0435", + duration: "ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442", + ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", + ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", + mac: "MAC \u0430\u0434\u0440\u0435\u0441", + cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + base64: "base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", + base64url: "base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437", + json_string: "JSON \u043D\u0438\u0437", + e164: "E.164 \u043D\u043E\u043C\u0435\u0440", + credit_card: "\u043D\u043E\u043C\u0435\u0440 \u043D\u0430 \u043A\u0440\u0435\u0434\u0438\u0442\u043D\u0430 \u043A\u0430\u0440\u0442\u0430", + currency_code: "\u043A\u043E\u0434 \u043D\u0430 \u0432\u0430\u043B\u0443\u0442\u0430", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0432\u0445\u043E\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0447\u0438\u0441\u043B\u043E", + array: "\u043C\u0430\u0441\u0438\u0432" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue2.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; + } + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`; + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin ?? "\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`; + let invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D"; + if (_issue.format === "emoji") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; + if (_issue.format === "datetime") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; + if (_issue.format === "date") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; + if (_issue.format === "time") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E"; + if (_issue.format === "duration") + invalid_adj = "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430"; + return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue2.keys.length > 1 ? "\u0438" : ""} \u043A\u043B\u044E\u0447${issue2.keys.length > 1 ? "\u043E\u0432\u0435" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"; + case "invalid_element": + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue2.origin}`; + default: + return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`; + } + }; +}, "error"); +function bg_default() { + return { + localeError: error4() + }; +} +__name(bg_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/bn.js +var error5 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0985\u0995\u09CD\u09B7\u09B0", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" }, + file: { unit: "\u09AC\u09BE\u0987\u099F", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" }, + array: { unit: "\u0986\u0987\u099F\u09C7\u09AE", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" }, + set: { unit: "\u0986\u0987\u099F\u09C7\u09AE", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" }, + map: { unit: "\u098F\u09A8\u09CD\u099F\u09CD\u09B0\u09BF", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0987\u09A8\u09AA\u09C1\u099F", + email: "\u0987\u09AE\u09C7\u0987\u09B2 \u09A0\u09BF\u0995\u09BE\u09A8\u09BE", + url: "URL", + emoji: "\u0987\u09AE\u09CB\u099C\u09BF", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u09A4\u09BE\u09B0\u09BF\u0996 \u0993 \u09B8\u09AE\u09AF\u09BC", + date: "ISO \u09A4\u09BE\u09B0\u09BF\u0996", + time: "ISO \u09B8\u09AE\u09AF\u09BC", + duration: "ISO \u09B8\u09AE\u09AF\u09BC\u0995\u09BE\u09B2", + ipv4: "IPv4 \u09A0\u09BF\u0995\u09BE\u09A8\u09BE", + ipv6: "IPv6 \u09A0\u09BF\u0995\u09BE\u09A8\u09BE", + mac: "MAC \u09A0\u09BF\u0995\u09BE\u09A8\u09BE", + cidrv4: "IPv4 \u09B0\u09C7\u099E\u09CD\u099C", + cidrv6: "IPv6 \u09B0\u09C7\u099E\u09CD\u099C", + base64: "base64-\u098F\u09A8\u0995\u09CB\u09A1\u09C7\u09A1 \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982", + base64url: "base64url-\u098F\u09A8\u0995\u09CB\u09A1\u09C7\u09A1 \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982", + json_string: "JSON \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982", + e164: "E.164 \u09A8\u09AE\u09CD\u09AC\u09B0", + credit_card: "\u0995\u09CD\u09B0\u09C7\u09A1\u09BF\u099F \u0995\u09BE\u09B0\u09CD\u09A1 \u09A8\u09AE\u09CD\u09AC\u09B0", + currency_code: "\u09AE\u09C1\u09A6\u09CD\u09B0\u09BE \u0995\u09CB\u09A1", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0987\u09A8\u09AA\u09C1\u099F" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `\u0985\u09AC\u09C8\u09A7 \u0987\u09A8\u09AA\u09C1\u099F: \u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B6\u09BF\u09A4 ${expected}, \u09AA\u09CD\u09B0\u09BE\u09AA\u09CD\u09A4 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0985\u09AC\u09C8\u09A7 \u0987\u09A8\u09AA\u09C1\u099F: \u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B6\u09BF\u09A4 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0985\u09AC\u09C8\u09A7 \u0985\u09AA\u09B6\u09A8: ${joinValues(issue2.values, " | ")} \u098F\u09B0 \u09AE\u09A7\u09CD\u09AF\u09C7 \u098F\u0995\u099F\u09BF \u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B6\u09BF\u09A4`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0985\u09A8\u09C7\u0995 \u09AC\u09A1\u09BC: ${issue2.origin ?? "\u09AE\u09BE\u09A8"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u098F\u09B2\u09BF\u09AE\u09C7\u09A8\u09CD\u099F"} \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + return `\u0985\u09A8\u09C7\u0995 \u09AC\u09A1\u09BC: ${issue2.origin ?? "\u09AE\u09BE\u09A8"} ${adj}${issue2.maximum.toString()} \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0985\u09A8\u09C7\u0995 \u099B\u09CB\u099F: ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + } + return `\u0985\u09A8\u09C7\u0995 \u099B\u09CB\u099F: ${issue2.origin} ${adj}${issue2.minimum.toString()} \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0985\u09AC\u09C8\u09A7 \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982: "${_issue.prefix}" \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B6\u09C1\u09B0\u09C1 \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + } + if (_issue.format === "ends_with") + return `\u0985\u09AC\u09C8\u09A7 \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982: "${_issue.suffix}" \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B6\u09C7\u09B7 \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + if (_issue.format === "includes") + return `\u0985\u09AC\u09C8\u09A7 \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982: "${_issue.includes}" \u0985\u09A8\u09CD\u09A4\u09B0\u09CD\u09AD\u09C1\u0995\u09CD\u09A4 \u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7`; + if (_issue.format === "regex") + return `\u0985\u09AC\u09C8\u09A7 \u09B8\u09CD\u099F\u09CD\u09B0\u09BF\u0982: ${_issue.pattern} \u09AA\u09CD\u09AF\u09BE\u099F\u09BE\u09B0\u09CD\u09A8 \u09AE\u09BF\u09B2\u09A4\u09C7 \u09B9\u09AC\u09C7`; + return `\u0985\u09AC\u09C8\u09A7 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0985\u09AC\u09C8\u09A7 \u09A8\u09AE\u09CD\u09AC\u09B0: ${issue2.divisor} \u098F\u09B0 \u0997\u09C1\u09A3\u09BF\u09A4\u0995 \u09B9\u09A4\u09C7 \u09B9\u09AC\u09C7`; + case "unrecognized_keys": + return `\u0985\u099A\u09C7\u09A8\u09BE \u0995\u09C0${issue2.keys.length > 1 ? "\u0997\u09C1\u09B2\u09CB" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} \u098F \u0985\u09AC\u09C8\u09A7 \u0995\u09C0`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u0985\u09AC\u09C8\u09A7 \u09A1\u09BF\u09B8\u0995\u09CD\u09B0\u09BF\u09AE\u09BF\u09A8\u09C7\u099F\u09B0 \u09AE\u09BE\u09A8\u0964 \u09AA\u09CD\u09B0\u09A4\u09CD\u09AF\u09BE\u09B6\u09BF\u09A4 ${opts}`; + } + return "\u0985\u09AC\u09C8\u09A7 \u0987\u09A8\u09AA\u09C1\u099F"; + case "invalid_element": + return `${issue2.origin} \u098F \u0985\u09AC\u09C8\u09A7 \u09AE\u09BE\u09A8`; + default: + return "\u0985\u09AC\u09C8\u09A7 \u0987\u09A8\u09AA\u09C1\u099F"; + } + }; +}, "error"); +function bn_default() { + return { + localeError: error5() + }; +} +__name(bn_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ca.js +var error6 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "car\xE0cters", verb: "contenir" }, + file: { unit: "bytes", verb: "contenir" }, + array: { unit: "elements", verb: "contenir" }, + set: { unit: "elements", verb: "contenir" }, + map: { unit: "elements", verb: "contenir" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "entrada", + email: "adre\xE7a electr\xF2nica", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data i hora ISO", + date: "data ISO", + time: "hora ISO", + duration: "durada ISO", + ipv4: "adre\xE7a IPv4", + ipv6: "adre\xE7a IPv6", + mac: "adre\xE7a MAC", + cidrv4: "rang IPv4", + cidrv6: "rang IPv6", + base64: "cadena codificada en base64", + base64url: "cadena codificada en base64url", + json_string: "cadena JSON", + e164: "n\xFAmero E.164", + credit_card: "n\xFAmero de targeta de cr\xE8dit", + currency_code: "codi de moneda", + iban: "IBAN", + jwt: "JWT", + template_literal: "entrada" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Tipus inv\xE0lid: s'esperava instanceof ${issue2.expected}, s'ha rebut ${received}`; + } + return `Tipus inv\xE0lid: s'esperava ${expected}, s'ha rebut ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Valor inv\xE0lid: s'esperava ${stringifyPrimitive(issue2.values[0])}`; + return `Opci\xF3 inv\xE0lida: s'esperava una de ${joinValues(issue2.values, " o ")}`; + case "too_big": { + const adj = issue2.inclusive ? "com a m\xE0xim" : "menys de"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Massa gran: s'esperava que ${issue2.origin ?? "el valor"} contingu\xE9s ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "elements"}`; + return `Massa gran: s'esperava que ${issue2.origin ?? "el valor"} fos ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? "com a m\xEDnim" : "m\xE9s de"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Massa petit: s'esperava que ${issue2.origin} contingu\xE9s ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Massa petit: s'esperava que ${issue2.origin} fos ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Format inv\xE0lid: ha de comen\xE7ar amb "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Format inv\xE0lid: ha d'acabar amb "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Format inv\xE0lid: ha d'incloure "${_issue.includes}"`; + if (_issue.format === "regex") + return `Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${_issue.pattern}`; + return `Format inv\xE0lid per a ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${issue2.divisor}`; + case "unrecognized_keys": + return `Clau${issue2.keys.length > 1 ? "s" : ""} no reconeguda${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Clau inv\xE0lida a ${issue2.origin}`; + case "invalid_union": + return "Entrada inv\xE0lida"; + // Could also be "Tipus d'unió invàlid" but "Entrada invàlida" is more general + case "invalid_element": + return `Element inv\xE0lid a ${issue2.origin}`; + default: + return `Entrada inv\xE0lida`; + } + }; +}, "error"); +function ca_default() { + return { + localeError: error6() + }; +} +__name(ca_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ckb.js +var error7 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u067E\u06CC\u062A", verb: "\u0628\u06CE\u062A" }, + file: { unit: "\u0628\u0627\u06CC\u062A", verb: "\u0628\u06CE\u062A" }, + array: { unit: "\u062F\u0627\u0646\u06D5", verb: "\u0628\u06CE\u062A" }, + set: { unit: "\u062F\u0627\u0646\u06D5", verb: "\u0628\u06CE\u062A" }, + map: { unit: "\u062F\u0627\u0646\u06D5", verb: "\u0628\u06CE\u062A" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "regex", + email: "\u0626\u06CC\u0645\u06D5\u06CC\u06B5", + url: "\u0628\u06D5\u0633\u062A\u06D5\u0631 (URL)", + emoji: "\u0626\u06CC\u0645\u06C6\u062C\u06CC", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0695\u06CE\u06A9\u06D5\u0648\u062A \u0648 \u06A9\u0627\u062A", + date: "\u0695\u06CE\u06A9\u06D5\u0648\u062A", + time: "\u06A9\u0627\u062A", + duration: "\u0645\u0627\u0648\u06D5", + ipv4: "\u0646\u0627\u0648\u0646\u06CC\u0634\u0627\u0646\u06CC IPv4", + ipv6: "\u0646\u0627\u0648\u0646\u06CC\u0634\u0627\u0646\u06CC IPv6", + mac: "\u0646\u0627\u0648\u0646\u06CC\u0634\u0627\u0646\u06CC MAC", + cidrv4: "\u0645\u06D5\u0648\u062F\u0627\u06CC IPv4", + cidrv6: "\u0645\u06D5\u0648\u062F\u0627\u06CC IPv6", + base64: "\u062F\u06D5\u0642\u06CC base64", + base64url: "\u062F\u06D5\u0642\u06CC base64url", + json_string: "\u062F\u06D5\u0642\u06CC JSON", + e164: "\u0698\u0645\u0627\u0631\u06D5\u06CC E.164", + credit_card: "\u0698\u0645\u0627\u0631\u06D5\u06CC \u06A9\u0627\u0631\u062A\u06CC \u06A9\u0631\u06CE\u062F\u06CC\u062A", + currency_code: "\u06A9\u06C6\u062F\u06CC \u062F\u0631\u0627\u0648", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u062A\u06CE\u06A9\u0631\u062F\u06D5" + }; + const TypeDictionary = { + nan: "NaN", + string: "\u0646\u0648\u0648\u0633\u06CC\u0646", + number: "\u0698\u0645\u0627\u0631\u06D5", + boolean: "boolean", + array: "array", + object: "object", + date: "\u0695\u06CE\u06A9\u06D5\u0648\u062A", + integer: "\u0698\u0645\u0627\u0631\u06D5", + float: "\u0698\u0645\u0627\u0631\u06D5", + null: "null", + undefined: "undefined", + function: "function", + symbol: "symbol", + unknown: "unknown", + promise: "promise", + void: "void", + never: "never", + map: "map", + set: "set" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + const postfix = ["\u0627", "\u0648", "\u06C6", "\u0648\u0648", "\u06D5", "\u06CC", "\u06CE"].some((p3) => received.endsWith(p3)) ? "\u06CC\u06D5" : "\u06D5"; + const isEnglish = /^[a-zA-Z]+$/.test(received); + if (receivedType === "null" || receivedType === "undefined") + return `\u062F\u0627\u0648\u0627\u06A9\u0631\u0627\u0648\u06D5`; + return `\u0686\u0627\u0648\u06D5\u0695\u0648\u0627\u0646\u06A9\u0631\u0627\u0648\u06D5 ${expected} \u0628\u06CE\u062A\u060C \u0628\u06D5\u06B5\u0627\u0645 ${received}${isEnglish ? "" : postfix}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0628\u06D5\u0647\u0627\u06A9\u06D5 \u0646\u0627\u062F\u0631\u0648\u0648\u0633\u062A\u06D5: \u0686\u0627\u0648\u06D5\u0695\u0648\u0627\u0646\u06A9\u0631\u0627\u0648\u06D5 ${stringifyPrimitive(issue2.values[0])} \u0628\u06CE\u062A`; + return `\u0647\u06D5\u06B5\u0628\u0698\u0627\u0631\u062F\u06D5\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A: \u0686\u0627\u0648\u06D5\u0695\u0648\u0627\u0646\u06A9\u0631\u0627\u0648\u06D5 \u06CC\u06D5\u06A9\u06CE\u06A9 \u0628\u06CE\u062A \u0644\u06D5 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u0628\u06D5 \u0644\u0627\u06CC\u06D5\u0646\u06CC \u0632\u06C6\u0631\u06D5\u0648\u06D5 ${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`; + return `\u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u0628\u06D5 \u0644\u0627\u06CC\u06D5\u0646\u06CC \u0632\u06C6\u0631\u06D5\u0648\u06D5 ${issue2.maximum.toString()} \u0628\u06CE\u062A`; + } + case "too_small": { + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u0628\u06D5 \u0644\u0627\u06CC\u06D5\u0646\u06CC \u06A9\u06D5\u0645\u06D5\u0648\u06D5 ${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + return `\u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u0628\u06D5 \u0644\u0627\u06CC\u06D5\u0646\u06CC \u06A9\u06D5\u0645\u06D5\u0648\u06D5 ${issue2.minimum.toString()} \u0628\u06CE\u062A`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u062F\u06D5\u0642\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A: \u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u062F\u06D5\u0633\u062A\u067E\u06CE\u0628\u06A9\u0627\u062A \u0628\u06D5 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u062F\u06D5\u0642\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A: \u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u06A9\u06C6\u062A\u0627\u06CC\u06CC\u0628\u06CE\u062A \u0628\u06D5 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u062F\u06D5\u0642\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A: \u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 "${_issue.includes}" \u0644\u06D5\u062E\u06C6\u0628\u06AF\u0631\u06CE\u062A`; + if (_issue.format === "regex") + return `\u062F\u06D5\u0642\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A: \u067E\u06CE\u0648\u06CC\u0633\u062A\u06D5 \u0644\u06D5\u06AF\u06D5\u06B5 \u067E\u0627\u062A\u06CE\u0631\u0646\u06CC ${_issue.pattern} \u0628\u06AF\u0648\u0646\u062C\u06CE\u062A`; + return `\u0628\u06D5\u0647\u0627\u06CC ${FormatDictionary[_issue.format] ?? issue2.format} \u0646\u0627\u062F\u0631\u0648\u0633\u062A\u06D5`; + } + case "not_multiple_of": + return `\u0698\u0645\u0627\u0631\u06D5\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A: \u062F\u06D5\u0628\u06CE\u062A \u0686\u06D5\u0646\u062F \u0647\u06CE\u0646\u062F\u06D5 \u0628\u06CE\u062A \u0628\u06C6 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u06A9\u0644\u06CC\u0644\u06CC \u0646\u06D5\u0646\u0627\u0633\u0631\u0627\u0648: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u06A9\u0644\u06CC\u0644\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A \u0644\u06D5 ${issue2.origin}`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u0628\u06D5\u0647\u0627\u06CC \u0646\u06D5\u0646\u0627\u0633\u0631\u0627\u0648 \u0647\u06D5\u06CC\u06D5. \u0628\u06D5\u0647\u0627\u06CC \u0686\u0627\u0648\u06D5\u0695\u0648\u0627\u0646\u06A9\u0631\u0627\u0648: ${opts}`; + } + return "\u06CC\u06D5\u06A9\u06AF\u0631\u062A\u0646\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A"; + case "invalid_element": + return `${issue2.origin} \u0628\u06D5\u0647\u0627\u06A9\u06D5 \u0646\u0627\u062F\u0631\u0648\u0633\u062A\u06D5`; + default: + return `\u062A\u06CE\u06A9\u0631\u062F\u06D5\u06CC \u0646\u0627\u062F\u0631\u0648\u0633\u062A`; + } + }; +}, "error"); +function ckb_default() { + return { + localeError: error7() + }; +} +__name(ckb_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/cs.js +var error8 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "znak\u016F", verb: "m\xEDt" }, + file: { unit: "bajt\u016F", verb: "m\xEDt" }, + array: { unit: "prvk\u016F", verb: "m\xEDt" }, + set: { unit: "prvk\u016F", verb: "m\xEDt" }, + map: { unit: "prvk\u016F", verb: "m\xEDt" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "regul\xE1rn\xED v\xFDraz", + email: "e-mailov\xE1 adresa", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "datum a \u010Das ve form\xE1tu ISO", + date: "datum ve form\xE1tu ISO", + time: "\u010Das ve form\xE1tu ISO", + duration: "doba trv\xE1n\xED ISO", + ipv4: "IPv4 adresa", + ipv6: "IPv6 adresa", + mac: "MAC adresa", + cidrv4: "rozsah IPv4", + cidrv6: "rozsah IPv6", + base64: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64", + base64url: "\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url", + json_string: "\u0159et\u011Bzec ve form\xE1tu JSON", + e164: "\u010D\xEDslo E.164", + credit_card: "\u010D\xEDslo kreditn\xED karty", + currency_code: "k\xF3d m\u011Bny", + iban: "IBAN", + jwt: "JWT", + template_literal: "vstup" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u010D\xEDslo", + string: "\u0159et\u011Bzec", + function: "funkce", + array: "pole" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${issue2.expected}, obdr\u017Eeno ${received}`; + } + return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${expected}, obdr\u017Eeno ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${stringifyPrimitive(issue2.values[0])}`; + return `Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue2.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "prvk\u016F"}`; + } + return `Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue2.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue2.origin ?? "hodnota"} mus\xED m\xEDt ${adj}${issue2.minimum.toString()} ${sizing.unit ?? "prvk\u016F"}`; + } + return `Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue2.origin ?? "hodnota"} mus\xED b\xFDt ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${_issue.includes}"`; + if (_issue.format === "regex") + return `Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${_issue.pattern}`; + return `Neplatn\xFD form\xE1t ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${issue2.divisor}`; + case "unrecognized_keys": + return `Nezn\xE1m\xE9 kl\xED\u010De: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Neplatn\xFD kl\xED\u010D v ${issue2.origin}`; + case "invalid_union": + return "Neplatn\xFD vstup"; + case "invalid_element": + return `Neplatn\xE1 hodnota v ${issue2.origin}`; + default: + return `Neplatn\xFD vstup`; + } + }; +}, "error"); +function cs_default() { + return { + localeError: error8() + }; +} +__name(cs_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/da.js +var error9 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "tegn", verb: "havde" }, + file: { unit: "bytes", verb: "havde" }, + array: { unit: "elementer", verb: "indeholdt" }, + set: { unit: "elementer", verb: "indeholdt" }, + map: { unit: "elementer", verb: "indeholdt" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "e-mailadresse", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dato- og klokkesl\xE6t", + date: "ISO-dato", + time: "ISO-klokkesl\xE6t", + duration: "ISO-varighed", + ipv4: "IPv4-adresse", + ipv6: "IPv6-adresse", + mac: "MAC-adresse", + cidrv4: "IPv4-spektrum", + cidrv6: "IPv6-spektrum", + base64: "base64-kodet streng", + base64url: "base64url-kodet streng", + json_string: "JSON-streng", + e164: "E.164-nummer", + credit_card: "kreditkortnummer", + currency_code: "valutakode", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + string: "streng", + number: "tal", + boolean: "boolean", + array: "liste", + object: "objekt", + set: "s\xE6t", + file: "fil" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ugyldigt input: forventede instanceof ${issue2.expected}, fik ${received}`; + } + return `Ugyldigt input: forventede ${expected}, fik ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ugyldig v\xE6rdi: forventede ${stringifyPrimitive(issue2.values[0])}`; + return `Ugyldigt valg: forventede en af f\xF8lgende ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) + return `For stor: forventede ${origin ?? "value"} ${sizing.verb} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "elementer"}`; + return `For stor: forventede ${origin ?? "value"} havde ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) { + return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `For lille: forventede ${origin} havde ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ugyldig streng: skal starte med "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Ugyldig streng: skal ende med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ugyldig streng: skal indeholde "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ugyldig streng: skal matche m\xF8nsteret ${_issue.pattern}`; + return `Ugyldig ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ugyldigt tal: skal v\xE6re deleligt med ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ukendte n\xF8gler" : "Ukendt n\xF8gle"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ugyldig n\xF8gle i ${issue2.origin}`; + case "invalid_union": + return "Ugyldigt input: matcher ingen af de tilladte typer"; + case "invalid_element": + return `Ugyldig v\xE6rdi i ${issue2.origin}`; + default: + return `Ugyldigt input`; + } + }; +}, "error"); +function da_default() { + return { + localeError: error9() + }; +} +__name(da_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/de.js +var error10 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "Zeichen", verb: "zu haben" }, + file: { unit: "Bytes", verb: "zu haben" }, + array: { unit: "Elemente", verb: "zu haben" }, + set: { unit: "Elemente", verb: "zu haben" }, + map: { unit: "Elemente", verb: "zu haben" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "Eingabe", + email: "E-Mail-Adresse", + url: "URL", + emoji: "Emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-Datum und -Uhrzeit", + date: "ISO-Datum", + time: "ISO-Uhrzeit", + duration: "ISO-Dauer", + ipv4: "IPv4-Adresse", + ipv6: "IPv6-Adresse", + mac: "MAC-Adresse", + cidrv4: "IPv4-Bereich", + cidrv6: "IPv6-Bereich", + base64: "Base64-codierter String", + base64url: "Base64-URL-codierter String", + json_string: "JSON-String", + e164: "E.164-Nummer", + credit_card: "Kreditkartennummer", + currency_code: "W\xE4hrungscode", + iban: "IBAN", + jwt: "JWT", + template_literal: "Eingabe" + }; + const TypeDictionary = { + nan: "NaN", + number: "Zahl", + array: "Array" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ung\xFCltige Eingabe: erwartet instanceof ${issue2.expected}, erhalten ${received}`; + } + return `Ung\xFCltige Eingabe: erwartet ${expected}, erhalten ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ung\xFCltige Eingabe: erwartet ${stringifyPrimitive(issue2.values[0])}`; + return `Ung\xFCltige Option: erwartet eine von ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Zu gro\xDF: erwartet, dass ${issue2.origin ?? "Wert"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "Elemente"} hat`; + return `Zu gro\xDF: erwartet, dass ${issue2.origin ?? "Wert"} ${adj}${issue2.maximum.toString()} ist`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} hat`; + } + return `Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ist`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ung\xFCltiger String: muss mit "${_issue.prefix}" beginnen`; + if (_issue.format === "ends_with") + return `Ung\xFCltiger String: muss mit "${_issue.suffix}" enden`; + if (_issue.format === "includes") + return `Ung\xFCltiger String: muss "${_issue.includes}" enthalten`; + if (_issue.format === "regex") + return `Ung\xFCltiger String: muss dem Muster ${_issue.pattern} entsprechen`; + return `Ung\xFCltig: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ung\xFCltige Zahl: muss ein Vielfaches von ${issue2.divisor} sein`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Unbekannte Schl\xFCssel" : "Unbekannter Schl\xFCssel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ung\xFCltiger Schl\xFCssel in ${issue2.origin}`; + case "invalid_union": + return "Ung\xFCltige Eingabe"; + case "invalid_element": + return `Ung\xFCltiger Wert in ${issue2.origin}`; + default: + return `Ung\xFCltige Eingabe`; + } + }; +}, "error"); +function de_default() { + return { + localeError: error10() + }; +} +__name(de_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/el.js +var error11 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" }, + file: { unit: "bytes", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" }, + array: { unit: "\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" }, + set: { unit: "\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" }, + map: { unit: "\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2", + email: "\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1", + date: "ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1", + time: "ISO \u03CE\u03C1\u03B1", + duration: "ISO \u03B4\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1", + ipv4: "\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv4", + ipv6: "\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv6", + mac: "\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 MAC", + cidrv4: "\u03B5\u03CD\u03C1\u03BF\u03C2 IPv4", + cidrv6: "\u03B5\u03CD\u03C1\u03BF\u03C2 IPv6", + base64: "\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64", + base64url: "\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64url", + json_string: "\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC JSON", + e164: "\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 E.164", + credit_card: "\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C0\u03B9\u03C3\u03C4\u03C9\u03C4\u03B9\u03BA\u03AE\u03C2 \u03BA\u03AC\u03C1\u03C4\u03B1\u03C2", + currency_code: "\u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03BD\u03BF\u03BC\u03AF\u03C3\u03BC\u03B1\u03C4\u03BF\u03C2", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (typeof issue2.expected === "string" && /^[A-Z]/.test(issue2.expected)) { + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD instanceof ${issue2.expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${received}`; + } + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${stringifyPrimitive(issue2.values[0])}`; + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin ?? "\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1"}`; + return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin ?? "\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03BC\u03B5 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03BF\u03C4\u03AF\u03B2\u03BF ${_issue.pattern}`; + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03BF\u03C5 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u0386\u03B3\u03BD\u03C9\u03C3\u03C4${issue2.keys.length > 1 ? "\u03B1" : "\u03BF"} \u03BA\u03BB\u03B5\u03B9\u03B4${issue2.keys.length > 1 ? "\u03B9\u03AC" : "\u03AF"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03C4\u03BF ${issue2.origin}`; + case "invalid_union": + return "\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"; + case "invalid_element": + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C3\u03C4\u03BF ${issue2.origin}`; + default: + return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2`; + } + }; +}, "error"); +function el_default() { + return { + localeError: error11() + }; +} +__name(el_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/en.js +var error12 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "characters", verb: "to have" }, + file: { unit: "bytes", verb: "to have" }, + array: { unit: "items", verb: "to have" }, + set: { unit: "items", verb: "to have" }, + map: { unit: "entries", verb: "to have" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "email address", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datetime", + date: "ISO date", + time: "ISO time", + duration: "ISO duration", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + mac: "MAC address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded string", + base64url: "base64url-encoded string", + json_string: "JSON string", + e164: "E.164 number", + currency_code: "currency code", + credit_card: "credit card number", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + // Compatibility: "nan" -> "NaN" for display + nan: "NaN" + // All other type names omitted - they fall back to raw values via ?? operator + }; + function getTypeName(type, input2) { + if (type === "number" && typeof input2 === "number" && !Number.isFinite(input2)) { + return String(input2); + } + return TypeDictionary[type] ?? type; + } + __name(getTypeName, "getTypeName"); + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = getTypeName(issue2.expected); + const receivedType = parsedType(issue2.input); + const received = getTypeName(receivedType, issue2.input); + return `Invalid input: expected ${expected}, received ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`; + return `Invalid option: expected one of ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.exact ? "exactly " : issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Too big: expected ${issue2.origin ?? "value"} to have ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elements"}`; + return `Too big: expected ${issue2.origin ?? "value"} to be ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.exact ? "exactly " : issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Too small: expected ${issue2.origin} to have ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Too small: expected ${issue2.origin} to be ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Invalid string: must start with "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Invalid string: must end with "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Invalid string: must include "${_issue.includes}"`; + if (_issue.format === "regex") + return `Invalid string: must match pattern ${_issue.pattern}`; + return `Invalid ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Invalid number: must be a multiple of ${issue2.divisor}`; + case "unrecognized_keys": + return `Unrecognized key${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Invalid key in ${issue2.origin}`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `Invalid discriminator value. Expected ${opts}`; + } + if (issue2.inclusive === false) { + return "Invalid input: more than one option matched"; + } + return "Invalid input"; + case "invalid_element": + return `Invalid value in ${issue2.origin}`; + default: + return `Invalid input`; + } + }; +}, "error"); +function en_default() { + return { + localeError: error12() + }; +} +__name(en_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/eo.js +var error13 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "karaktrojn", verb: "havi" }, + file: { unit: "bajtojn", verb: "havi" }, + array: { unit: "elementojn", verb: "havi" }, + set: { unit: "elementojn", verb: "havi" }, + map: { unit: "elementojn", verb: "havi" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "enigo", + email: "retadreso", + url: "URL", + emoji: "emo\u011Dio", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-datotempo", + date: "ISO-dato", + time: "ISO-tempo", + duration: "ISO-da\u016Dro", + ipv4: "IPv4-adreso", + ipv6: "IPv6-adreso", + mac: "MAC-adreso", + cidrv4: "IPv4-rango", + cidrv6: "IPv6-rango", + base64: "64-ume kodita karaktraro", + base64url: "URL-64-ume kodita karaktraro", + json_string: "JSON-karaktraro", + e164: "E.164-nombro", + credit_card: "kreditkarta numero", + currency_code: "valuta kodo", + iban: "IBAN", + jwt: "JWT", + template_literal: "enigo" + }; + const TypeDictionary = { + nan: "NaN", + number: "nombro", + array: "tabelo", + null: "senvalora" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Nevalida enigo: atendi\u011Dis instanceof ${issue2.expected}, ricevi\u011Dis ${received}`; + } + return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Nevalida enigo: atendi\u011Dis ${stringifyPrimitive(issue2.values[0])}`; + return `Nevalida opcio: atendi\u011Dis unu el ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Tro granda: atendi\u011Dis ke ${issue2.origin ?? "valoro"} havu ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementojn"}`; + return `Tro granda: atendi\u011Dis ke ${issue2.origin ?? "valoro"} havu ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Tro malgranda: atendi\u011Dis ke ${issue2.origin} havu ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Tro malgranda: atendi\u011Dis ke ${issue2.origin} estu ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Nevalida karaktraro: devas komenci\u011Di per "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Nevalida karaktraro: devas fini\u011Di per "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Nevalida karaktraro: devas inkluzivi "${_issue.includes}"`; + if (_issue.format === "regex") + return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`; + return `Nevalida ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Nevalida nombro: devas esti oblo de ${issue2.divisor}`; + case "unrecognized_keys": + return `Nekonata${issue2.keys.length > 1 ? "j" : ""} \u015Dlosilo${issue2.keys.length > 1 ? "j" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Nevalida \u015Dlosilo en ${issue2.origin}`; + case "invalid_union": + return "Nevalida enigo"; + case "invalid_element": + return `Nevalida valoro en ${issue2.origin}`; + default: + return `Nevalida enigo`; + } + }; +}, "error"); +function eo_default() { + return { + localeError: error13() + }; +} +__name(eo_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/es.js +var error14 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caracteres", verb: "tener" }, + file: { unit: "bytes", verb: "tener" }, + array: { unit: "elementos", verb: "tener" }, + set: { unit: "elementos", verb: "tener" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "entrada", + email: "direcci\xF3n de correo electr\xF3nico", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "fecha y hora ISO", + date: "fecha ISO", + time: "hora ISO", + duration: "duraci\xF3n ISO", + ipv4: "direcci\xF3n IPv4", + ipv6: "direcci\xF3n IPv6", + mac: "direcci\xF3n MAC", + cidrv4: "rango IPv4", + cidrv6: "rango IPv6", + base64: "cadena codificada en base64", + base64url: "URL codificada en base64", + json_string: "cadena JSON", + e164: "n\xFAmero E.164", + credit_card: "n\xFAmero de tarjeta de cr\xE9dito", + currency_code: "c\xF3digo de moneda", + iban: "IBAN", + jwt: "JWT", + template_literal: "entrada" + }; + const TypeDictionary = { + nan: "NaN", + string: "texto", + number: "n\xFAmero", + boolean: "booleano", + array: "arreglo", + object: "objeto", + set: "conjunto", + file: "archivo", + date: "fecha", + bigint: "n\xFAmero grande", + symbol: "s\xEDmbolo", + undefined: "indefinido", + null: "nulo", + function: "funci\xF3n", + map: "mapa", + record: "registro", + tuple: "tupla", + enum: "enumeraci\xF3n", + union: "uni\xF3n", + literal: "literal", + promise: "promesa", + void: "vac\xEDo", + never: "nunca", + unknown: "desconocido", + any: "cualquiera" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Entrada inv\xE1lida: se esperaba instanceof ${issue2.expected}, recibido ${received}`; + } + return `Entrada inv\xE1lida: se esperaba ${expected}, recibido ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entrada inv\xE1lida: se esperaba ${stringifyPrimitive(issue2.values[0])}`; + return `Opci\xF3n inv\xE1lida: se esperaba una de ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) + return `Demasiado grande: se esperaba que ${origin ?? "valor"} tuviera ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementos"}`; + return `Demasiado grande: se esperaba que ${origin ?? "valor"} fuera ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) { + return `Demasiado peque\xF1o: se esperaba que ${origin} tuviera ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Demasiado peque\xF1o: se esperaba que ${origin} fuera ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Cadena inv\xE1lida: debe comenzar con "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Cadena inv\xE1lida: debe terminar en "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Cadena inv\xE1lida: debe incluir "${_issue.includes}"`; + if (_issue.format === "regex") + return `Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${_issue.pattern}`; + return `Inv\xE1lido ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${issue2.divisor}`; + case "unrecognized_keys": + return `Llave${issue2.keys.length > 1 ? "s" : ""} desconocida${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Llave inv\xE1lida en ${TypeDictionary[issue2.origin] ?? issue2.origin}`; + case "invalid_union": + return "Entrada inv\xE1lida"; + case "invalid_element": + return `Valor inv\xE1lido en ${TypeDictionary[issue2.origin] ?? issue2.origin}`; + default: + return `Entrada inv\xE1lida`; + } + }; +}, "error"); +function es_default() { + return { + localeError: error14() + }; +} +__name(es_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fa.js +var error15 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + file: { unit: "\u0628\u0627\u06CC\u062A", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + array: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + set: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" }, + map: { unit: "\u0622\u06CC\u062A\u0645", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0648\u0631\u0648\u062F\u06CC", + email: "\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644", + url: "URL", + emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", + date: "\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648", + time: "\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", + duration: "\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648", + ipv4: "IPv4 \u0622\u062F\u0631\u0633", + ipv6: "IPv6 \u0622\u062F\u0631\u0633", + mac: "MAC \u0622\u062F\u0631\u0633", + cidrv4: "IPv4 \u062F\u0627\u0645\u0646\u0647", + cidrv6: "IPv6 \u062F\u0627\u0645\u0646\u0647", + base64: "base64-encoded \u0631\u0634\u062A\u0647", + base64url: "base64url-encoded \u0631\u0634\u062A\u0647", + json_string: "JSON \u0631\u0634\u062A\u0647", + e164: "E.164 \u0639\u062F\u062F", + credit_card: "\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0627\u0639\u062A\u0628\u0627\u0631\u06CC", + currency_code: "\u06A9\u062F \u0627\u0631\u0632", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0648\u0631\u0648\u062F\u06CC" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0639\u062F\u062F", + array: "\u0622\u0631\u0627\u06CC\u0647" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue2.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; + } + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`; + } + case "invalid_value": + if (issue2.values.length === 1) { + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${stringifyPrimitive(issue2.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`; + } + return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${joinValues(issue2.values, "|")} \u0645\u06CC\u200C\u0628\u0648\u062F`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue2.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`; + } + return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue2.origin ?? "\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} \u0628\u0627\u0634\u062F`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`; + } + return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} \u0628\u0627\u0634\u062F`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`; + } + if (_issue.format === "ends_with") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`; + } + if (_issue.format === "includes") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${_issue.includes}" \u0628\u0627\u0634\u062F`; + } + if (_issue.format === "regex") { + return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`; + } + return `${FormatDictionary[_issue.format] ?? issue2.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; + } + case "not_multiple_of": + return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue2.divisor} \u0628\u0627\u0634\u062F`; + case "unrecognized_keys": + return `\u06A9\u0644\u06CC\u062F${issue2.keys.length > 1 ? "\u0647\u0627\u06CC" : ""} \u0646\u0627\u0634\u0646\u0627\u0633: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue2.origin}`; + case "invalid_union": + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; + case "invalid_element": + return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue2.origin}`; + default: + return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`; + } + }; +}, "error"); +function fa_default() { + return { + localeError: error15() + }; +} +__name(fa_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fi.js +var error16 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "merkki\xE4", subject: "merkkijonon" }, + file: { unit: "tavua", subject: "tiedoston" }, + array: { unit: "alkiota", subject: "listan" }, + set: { unit: "alkiota", subject: "joukon" }, + map: { unit: "alkiota", subject: "kuvauksen" }, + number: { unit: "", subject: "luvun" }, + bigint: { unit: "", subject: "suuren kokonaisluvun" }, + int: { unit: "", subject: "kokonaisluvun" }, + date: { unit: "", subject: "p\xE4iv\xE4m\xE4\xE4r\xE4n" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "s\xE4\xE4nn\xF6llinen lauseke", + email: "s\xE4hk\xF6postiosoite", + url: "URL-osoite", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-aikaleima", + date: "ISO-p\xE4iv\xE4m\xE4\xE4r\xE4", + time: "ISO-aika", + duration: "ISO-kesto", + ipv4: "IPv4-osoite", + ipv6: "IPv6-osoite", + mac: "MAC-osoite", + cidrv4: "IPv4-alue", + cidrv6: "IPv6-alue", + base64: "base64-koodattu merkkijono", + base64url: "base64url-koodattu merkkijono", + json_string: "JSON-merkkijono", + e164: "E.164-luku", + credit_card: "luottokortin numero", + currency_code: "valuuttakoodi", + iban: "IBAN", + jwt: "JWT", + template_literal: "templaattimerkkijono" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Virheellinen tyyppi: odotettiin instanceof ${issue2.expected}, oli ${received}`; + } + return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Virheellinen sy\xF6te: t\xE4ytyy olla ${stringifyPrimitive(issue2.values[0])}`; + return `Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Liian suuri: ${sizing.subject} t\xE4ytyy olla ${adj}${issue2.maximum.toString()} ${sizing.unit}`.trim(); + } + return `Liian suuri: arvon t\xE4ytyy olla ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Liian pieni: ${sizing.subject} t\xE4ytyy olla ${adj}${issue2.minimum.toString()} ${sizing.unit}`.trim(); + } + return `Liian pieni: arvon t\xE4ytyy olla ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Virheellinen sy\xF6te: t\xE4ytyy alkaa "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Virheellinen sy\xF6te: t\xE4ytyy loppua "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${_issue.includes}"`; + if (_issue.format === "regex") { + return `Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${_issue.pattern}`; + } + return `Virheellinen ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Virheellinen luku: t\xE4ytyy olla luvun ${issue2.divisor} monikerta`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Tuntemattomat avaimet" : "Tuntematon avain"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return "Virheellinen avain tietueessa"; + case "invalid_union": + return "Virheellinen unioni"; + case "invalid_element": + return "Virheellinen arvo joukossa"; + default: + return `Virheellinen sy\xF6te`; + } + }; +}, "error"); +function fi_default() { + return { + localeError: error16() + }; +} +__name(fi_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fr.js +var error17 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caract\xE8res", verb: "avoir" }, + file: { unit: "octets", verb: "avoir" }, + array: { unit: "\xE9l\xE9ments", verb: "avoir" }, + set: { unit: "\xE9l\xE9ments", verb: "avoir" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "expression r\xE9guli\xE8re", + email: "adresse e-mail", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "date et heure ISO", + date: "date ISO", + time: "heure ISO", + duration: "dur\xE9e ISO", + ipv4: "adresse IPv4", + ipv6: "adresse IPv6", + mac: "adresse MAC", + cidrv4: "plage IPv4", + cidrv6: "plage IPv6", + base64: "cha\xEEne de caract\xE8res encod\xE9e en base64", + base64url: "cha\xEEne de caract\xE8res encod\xE9e en base64url", + json_string: "cha\xEEne de caract\xE8res JSON", + e164: "num\xE9ro au format E.164", + credit_card: "num\xE9ro de carte de cr\xE9dit", + currency_code: "code de devise", + iban: "IBAN", + jwt: "JWT", + template_literal: "entr\xE9e" + }; + const TypeDictionary = { + string: "cha\xEEne de caract\xE8res", + number: "nombre", + int: "entier", + boolean: "bool\xE9en", + bigint: "grand entier", + symbol: "symbole", + undefined: "ind\xE9fini", + null: "null", + never: "jamais", + void: "vide", + date: "date", + array: "tableau", + object: "objet", + tuple: "tuple", + record: "record", + map: "map", + set: "ensemble", + file: "fichier", + nonoptional: "non optionnel", + nan: "NaN", + function: "fonction" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Entr\xE9e invalide : instance de ${issue2.expected} attendu, ${received} re\xE7u`; + } + return `Entr\xE9e invalide : ${expected} attendu, ${received} re\xE7u`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entr\xE9e invalide : ${stringifyPrimitive(issue2.values[0])} attendu`; + return `Option invalide : une valeur parmi ${joinValues(issue2.values, "|")} attendue`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Trop grand : ${TypeDictionary[issue2.origin] ?? "valeur"} doit ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\xE9l\xE9ment(s)"}`; + return `Trop grand : ${TypeDictionary[issue2.origin] ?? "valeur"} doit \xEAtre ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Trop petit : ${TypeDictionary[issue2.origin] ?? "valeur"} doit ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + return `Trop petit : ${TypeDictionary[issue2.origin] ?? "valeur"} doit \xEAtre ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Cha\xEEne de caract\xE8res invalide : doit commencer par "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Cha\xEEne de caract\xE8res invalide : doit se terminer par "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Cha\xEEne de caract\xE8res invalide : doit inclure "${_issue.includes}"`; + if (_issue.format === "regex") + return `Cha\xEEne de caract\xE8res invalide : doit correspondre au motif ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} invalide`; + } + case "not_multiple_of": + return `Nombre invalide : doit \xEAtre un multiple de ${issue2.divisor}`; + case "unrecognized_keys": + return `Cl\xE9${issue2.keys.length > 1 ? "s" : ""} non reconnue${issue2.keys.length > 1 ? "s" : ""} : ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Cl\xE9 invalide dans ${issue2.origin}`; + case "invalid_union": + return "Entr\xE9e invalide"; + case "invalid_element": + return `Valeur invalide dans ${issue2.origin}`; + default: + return `Entr\xE9e invalide`; + } + }; +}, "error"); +function fr_default() { + return { + localeError: error17() + }; +} +__name(fr_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fr-CA.js +var error18 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caract\xE8res", verb: "avoir" }, + file: { unit: "octets", verb: "avoir" }, + array: { unit: "\xE9l\xE9ments", verb: "avoir" }, + set: { unit: "\xE9l\xE9ments", verb: "avoir" }, + map: { unit: "\xE9l\xE9ments", verb: "avoir" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "entr\xE9e", + email: "adresse courriel", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "date-heure ISO", + date: "date ISO", + time: "heure ISO", + duration: "dur\xE9e ISO", + ipv4: "adresse IPv4", + ipv6: "adresse IPv6", + mac: "adresse MAC", + cidrv4: "plage IPv4", + cidrv6: "plage IPv6", + base64: "cha\xEEne encod\xE9e en base64", + base64url: "cha\xEEne encod\xE9e en base64url", + json_string: "cha\xEEne JSON", + e164: "num\xE9ro E.164", + credit_card: "num\xE9ro de carte de cr\xE9dit", + currency_code: "code de devise", + iban: "IBAN", + jwt: "JWT", + template_literal: "entr\xE9e" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Entr\xE9e invalide : attendu instanceof ${issue2.expected}, re\xE7u ${received}`; + } + return `Entr\xE9e invalide : attendu ${expected}, re\xE7u ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entr\xE9e invalide : attendu ${stringifyPrimitive(issue2.values[0])}`; + return `Option invalide : attendu l'une des valeurs suivantes ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "\u2264" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Trop grand : attendu que ${issue2.origin ?? "la valeur"} ait ${adj}${issue2.maximum.toString()} ${sizing.unit}`; + return `Trop grand : attendu que ${issue2.origin ?? "la valeur"} soit ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? "\u2265" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Trop petit : attendu que ${issue2.origin} ait ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Trop petit : attendu que ${issue2.origin} soit ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Cha\xEEne invalide : doit inclure "${_issue.includes}"`; + if (_issue.format === "regex") + return `Cha\xEEne invalide : doit correspondre au motif ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} invalide`; + } + case "not_multiple_of": + return `Nombre invalide : doit \xEAtre un multiple de ${issue2.divisor}`; + case "unrecognized_keys": + return `Cl\xE9${issue2.keys.length > 1 ? "s" : ""} non reconnue${issue2.keys.length > 1 ? "s" : ""} : ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Cl\xE9 invalide dans ${issue2.origin}`; + case "invalid_union": + return "Entr\xE9e invalide"; + case "invalid_element": + return `Valeur invalide dans ${issue2.origin}`; + default: + return `Entr\xE9e invalide`; + } + }; +}, "error"); +function fr_CA_default() { + return { + localeError: error18() + }; +} +__name(fr_CA_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/gu.js +var error19 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0A85\u0A95\u0ACD\u0AB7\u0AB0", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" }, + file: { unit: "\u0AAC\u0ABE\u0AAF\u0A9F", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" }, + array: { unit: "\u0A86\u0A87\u0A9F\u0AAE", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" }, + set: { unit: "\u0A86\u0A87\u0A9F\u0AAE", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" }, + map: { unit: "\u0A8F\u0AA8\u0ACD\u0A9F\u0ACD\u0AB0\u0AC0", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0A87\u0AA8\u0AAA\u0AC1\u0A9F", + email: "\u0A88\u0AAE\u0AC7\u0A87\u0AB2 \u0A8F\u0AA1\u0ACD\u0AB0\u0AC7\u0AB8", + url: "URL", + emoji: "\u0A87\u0AAE\u0ACB\u0A9C\u0AC0", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0AA4\u0ABE\u0AB0\u0AC0\u0A96 \u0A85\u0AA8\u0AC7 \u0AB8\u0AAE\u0AAF", + date: "ISO \u0AA4\u0ABE\u0AB0\u0AC0\u0A96", + time: "ISO \u0AB8\u0AAE\u0AAF", + duration: "ISO \u0A85\u0AB5\u0AA7\u0ABF", + ipv4: "IPv4 \u0A8F\u0AA1\u0ACD\u0AB0\u0AC7\u0AB8", + ipv6: "IPv6 \u0A8F\u0AA1\u0ACD\u0AB0\u0AC7\u0AB8", + mac: "MAC \u0A8F\u0AA1\u0ACD\u0AB0\u0AC7\u0AB8", + cidrv4: "IPv4 \u0AB6\u0ACD\u0AB0\u0AC7\u0AA3\u0AC0", + cidrv6: "IPv6 \u0AB6\u0ACD\u0AB0\u0AC7\u0AA3\u0AC0", + base64: "base64-\u0A8F\u0AA8\u0ACD\u0A95\u0ACB\u0AA1\u0AC7\u0AA1 \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97", + base64url: "base64url-\u0A8F\u0AA8\u0ACD\u0A95\u0ACB\u0AA1\u0AC7\u0AA1 \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97", + json_string: "JSON \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97", + e164: "E.164 \u0AA8\u0A82\u0AAC\u0AB0", + credit_card: "\u0A95\u0ACD\u0AB0\u0AC7\u0AA1\u0ABF\u0A9F \u0A95\u0ABE\u0AB0\u0ACD\u0AA1 \u0AA8\u0A82\u0AAC\u0AB0", + currency_code: "\u0A9A\u0AB2\u0AA3 \u0A95\u0ACB\u0AA1", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0A87\u0AA8\u0AAA\u0AC1\u0A9F" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0A87\u0AA8\u0AAA\u0AC1\u0A9F: \u0A85\u0AAA\u0AC7\u0A95\u0ACD\u0AB7\u0ABF\u0AA4 ${expected}, \u0AAA\u0ACD\u0AB0\u0ABE\u0AAA\u0ACD\u0AA4 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0A87\u0AA8\u0AAA\u0AC1\u0A9F: \u0A85\u0AAA\u0AC7\u0A95\u0ACD\u0AB7\u0ABF\u0AA4 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AB5\u0ABF\u0A95\u0AB2\u0ACD\u0AAA: ${joinValues(issue2.values, " | ")} \u0AAE\u0ABE\u0AA7\u0ACD\u0AAF\u0AAE\u0AA5\u0AC0 \u0A8F\u0A95 \u0A85\u0AAA\u0AC7\u0A95\u0ACD\u0AB7\u0ABF\u0AA4`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0A96\u0AC2\u0AAC \u0AAE\u0ACB\u0A9F\u0AC1\u0A82: ${issue2.origin ?? "\u0AAE\u0AC2\u0AB2\u0ACD\u0AAF"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0A8F\u0AB2\u0ABF\u0AAE\u0AC7\u0AA8\u0ACD\u0A9F"} \u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F`; + return `\u0A96\u0AC2\u0AAC \u0AAE\u0ACB\u0A9F\u0AC1\u0A82: ${issue2.origin ?? "\u0AAE\u0AC2\u0AB2\u0ACD\u0AAF"} ${adj}${issue2.maximum.toString()} \u0AB9\u0ACB\u0AB5\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0A96\u0AC2\u0AAC \u0AA8\u0ABE\u0AA8\u0AC1\u0A82: ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F`; + } + return `\u0A96\u0AC2\u0AAC \u0AA8\u0ABE\u0AA8\u0AC1\u0A82: ${issue2.origin} ${adj}${issue2.minimum.toString()} \u0AB9\u0ACB\u0AB5\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97: "${_issue.prefix}" \u0AA5\u0AC0 \u0AB6\u0AB0\u0AC2 \u0AA5\u0AB5\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F`; + } + if (_issue.format === "ends_with") + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97: "${_issue.suffix}" \u0AAA\u0AB0 \u0AB8\u0AAE\u0ABE\u0AAA\u0ACD\u0AA4 \u0AA5\u0AB5\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F`; + if (_issue.format === "includes") + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97: "${_issue.includes}" \u0AB6\u0ABE\u0AAE\u0AC7\u0AB2 \u0AB9\u0ACB\u0AB5\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F`; + if (_issue.format === "regex") + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABF\u0A82\u0A97: \u0AAA\u0AC7\u0A9F\u0AB0\u0ACD\u0AA8 ${_issue.pattern} \u0AB8\u0ABE\u0AA5\u0AC7 \u0AAE\u0AC7\u0AB3 \u0A96\u0ABE\u0AB5\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F`; + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AA8\u0A82\u0AAC\u0AB0: ${issue2.divisor} \u0AA8\u0ACB \u0A97\u0AC1\u0AA3\u0ABE\u0A82\u0A95 \u0AB9\u0ACB\u0AB5\u0ACB \u0A9C\u0ACB\u0A88\u0A8F`; + case "unrecognized_keys": + return `\u0A93\u0AB3\u0A96\u0AC0 \u0AB6\u0A95\u0ABE\u0AA4\u0ABE \u0AA8\u0AB9\u0AC0\u0A82 \u0AA4\u0AC7 \u0A95\u0AC0${issue2.keys.length > 1 ? "\u0A93" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} \u0AAE\u0ABE\u0A82 \u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0A95\u0AC0`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AA1\u0ABF\u0AB8\u0ACD\u0A95\u0ACD\u0AB0\u0ABF\u0AAE\u0ABF\u0AA8\u0AC7\u0A9F\u0AB0 \u0AAE\u0AC2\u0AB2\u0ACD\u0AAF. \u0A85\u0AAA\u0AC7\u0A95\u0ACD\u0AB7\u0ABF\u0AA4 ${opts}`; + } + return "\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0A87\u0AA8\u0AAA\u0AC1\u0A9F"; + case "invalid_element": + return `${issue2.origin} \u0AAE\u0ABE\u0A82 \u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0AAE\u0AC2\u0AB2\u0ACD\u0AAF`; + default: + return "\u0A85\u0AAE\u0ABE\u0AA8\u0ACD\u0AAF \u0A87\u0AA8\u0AAA\u0AC1\u0A9F"; + } + }; +}, "error"); +function gu_default() { + return { + localeError: error19() + }; +} +__name(gu_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/he.js +var error20 = /* @__PURE__ */ __name(() => { + const TypeNames = { + string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" }, + number: { label: "\u05DE\u05E1\u05E4\u05E8", gender: "m" }, + boolean: { label: "\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9", gender: "m" }, + bigint: { label: "BigInt", gender: "m" }, + date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA", gender: "m" }, + array: { label: "\u05DE\u05E2\u05E8\u05DA", gender: "m" }, + object: { label: "\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8", gender: "m" }, + null: { label: "\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)", gender: "m" }, + undefined: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)", gender: "m" }, + symbol: { label: "\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)", gender: "m" }, + function: { label: "\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4", gender: "f" }, + map: { label: "\u05DE\u05E4\u05D4 (Map)", gender: "f" }, + set: { label: "\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)", gender: "f" }, + file: { label: "\u05E7\u05D5\u05D1\u05E5", gender: "m" }, + promise: { label: "Promise", gender: "m" }, + NaN: { label: "NaN", gender: "m" }, + unknown: { label: "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2", gender: "m" }, + value: { label: "\u05E2\u05E8\u05DA", gender: "m" } + }; + const Sizable = { + string: { unit: "\u05EA\u05D5\u05D5\u05D9\u05DD", shortLabel: "\u05E7\u05E6\u05E8", longLabel: "\u05D0\u05E8\u05D5\u05DA" }, + file: { unit: "\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, + array: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, + set: { unit: "\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" }, + number: { unit: "", shortLabel: "\u05E7\u05D8\u05DF", longLabel: "\u05D2\u05D3\u05D5\u05DC" } + // no unit + }; + const typeEntry = /* @__PURE__ */ __name((t) => t ? TypeNames[t] : void 0, "typeEntry"); + const typeLabel = /* @__PURE__ */ __name((t) => { + const e5 = typeEntry(t); + if (e5) + return e5.label; + return t ?? TypeNames.unknown.label; + }, "typeLabel"); + const withDefinite = /* @__PURE__ */ __name((t) => `\u05D4${typeLabel(t)}`, "withDefinite"); + const verbFor = /* @__PURE__ */ __name((t) => { + const e5 = typeEntry(t); + const gender = e5?.gender ?? "m"; + return gender === "f" ? "\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA" : "\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"; + }, "verbFor"); + const getSizing = /* @__PURE__ */ __name((origin) => { + if (!origin) + return null; + return Sizable[origin] ?? null; + }, "getSizing"); + const FormatDictionary = { + regex: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + email: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC", gender: "f" }, + url: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA", gender: "f" }, + emoji: { label: "\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9", gender: "m" }, + uuid: { label: "UUID", gender: "m" }, + uuidv4: { label: "UUIDv4", gender: "m" }, + uuidv6: { label: "UUIDv6", gender: "m" }, + nanoid: { label: "nanoid", gender: "m" }, + guid: { label: "GUID", gender: "m" }, + cuid: { label: "cuid", gender: "m" }, + cuid2: { label: "cuid2", gender: "m" }, + ulid: { label: "ULID", gender: "m" }, + xid: { label: "XID", gender: "m" }, + ksuid: { label: "KSUID", gender: "m" }, + datetime: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO", gender: "m" }, + date: { label: "\u05EA\u05D0\u05E8\u05D9\u05DA ISO", gender: "m" }, + time: { label: "\u05D6\u05DE\u05DF ISO", gender: "m" }, + duration: { label: "\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO", gender: "m" }, + ipv4: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv4", gender: "f" }, + ipv6: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA IPv6", gender: "f" }, + mac: { label: "\u05DB\u05EA\u05D5\u05D1\u05EA MAC", gender: "f" }, + cidrv4: { label: "\u05D8\u05D5\u05D5\u05D7 IPv4", gender: "m" }, + cidrv6: { label: "\u05D8\u05D5\u05D5\u05D7 IPv6", gender: "m" }, + base64: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64", gender: "f" }, + base64url: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA", gender: "f" }, + json_string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON", gender: "f" }, + e164: { label: "\u05DE\u05E1\u05E4\u05E8 E.164", gender: "m" }, + credit_card: { label: "\u05DE\u05E1\u05E4\u05E8 \u05DB\u05E8\u05D8\u05D9\u05E1 \u05D0\u05E9\u05E8\u05D0\u05D9", gender: "m" }, + currency_code: { label: "\u05E7\u05D5\u05D3 \u05DE\u05D8\u05D1\u05E2", gender: "m" }, + iban: { label: "IBAN", gender: "m" }, + jwt: { label: "JWT", gender: "m" }, + template_literal: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + ends_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + includes: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + lowercase: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + starts_with: { label: "\u05E7\u05DC\u05D8", gender: "m" }, + uppercase: { label: "\u05E7\u05DC\u05D8", gender: "m" } + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expectedKey = issue2.expected; + const expected = TypeDictionary[expectedKey ?? ""] ?? typeLabel(expectedKey); + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue2.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; + } + return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`; + } + case "invalid_value": { + if (issue2.values.length === 1) { + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${stringifyPrimitive(issue2.values[0])}`; + } + const stringified = issue2.values.map((v) => stringifyPrimitive(v)); + if (issue2.values.length === 2) { + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`; + } + const lastValue = stringified[stringified.length - 1]; + const restValues = stringified.slice(0, -1).join(", "); + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`; + } + case "too_big": { + const sizing = getSizing(issue2.origin); + const subject = withDefinite(issue2.origin ?? "value"); + if (issue2.origin === "string") { + return `${sizing?.longLabel ?? "\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue2.maximum.toString()} ${sizing?.unit ?? ""} ${issue2.inclusive ? "\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA" : "\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim(); + } + if (issue2.origin === "number") { + const comparison = issue2.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue2.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue2.maximum}`; + return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; + } + if (issue2.origin === "array" || issue2.origin === "set") { + const verb = issue2.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; + const comparison = issue2.inclusive ? `${issue2.maximum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA` : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue2.maximum} ${sizing?.unit ?? ""}`; + return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); + } + const adj = issue2.inclusive ? "<=" : "<"; + const be = verbFor(issue2.origin ?? "value"); + if (sizing?.unit) { + return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.maximum.toString()} ${sizing.unit}`; + } + return `${sizing?.longLabel ?? "\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const sizing = getSizing(issue2.origin); + const subject = withDefinite(issue2.origin ?? "value"); + if (issue2.origin === "string") { + return `${sizing?.shortLabel ?? "\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue2.minimum.toString()} ${sizing?.unit ?? ""} ${issue2.inclusive ? "\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8" : "\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim(); + } + if (issue2.origin === "number") { + const comparison = issue2.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue2.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue2.minimum}`; + return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`; + } + if (issue2.origin === "array" || issue2.origin === "set") { + const verb = issue2.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA"; + if (issue2.minimum === 1 && issue2.inclusive) { + const singularPhrase = issue2.origin === "set" ? "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3" : "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3"; + return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`; + } + const comparison = issue2.inclusive ? `${issue2.minimum} ${sizing?.unit ?? ""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8` : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue2.minimum} ${sizing?.unit ?? ""}`; + return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim(); + } + const adj = issue2.inclusive ? ">=" : ">"; + const be = verbFor(issue2.origin ?? "value"); + if (sizing?.unit) { + return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `${sizing?.shortLabel ?? "\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`; + const nounEntry = FormatDictionary[_issue.format]; + const noun = nounEntry?.label ?? _issue.format; + const gender = nounEntry?.gender ?? "m"; + const adjective = gender === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF"; + return `${noun} \u05DC\u05D0 ${adjective}`; + } + case "not_multiple_of": + return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue2.divisor}`; + case "unrecognized_keys": + return `\u05DE\u05E4\u05EA\u05D7${issue2.keys.length > 1 ? "\u05D5\u05EA" : ""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue2.keys.length > 1 ? "\u05D9\u05DD" : "\u05D4"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": { + return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`; + } + case "invalid_union": + return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"; + case "invalid_element": { + const place = withDefinite(issue2.origin ?? "array"); + return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`; + } + default: + return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`; + } + }; +}, "error"); +function he_default() { + return { + localeError: error20() + }; +} +__name(he_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hi.js +var error21 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0905\u0915\u094D\u0937\u0930", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" }, + file: { unit: "\u092C\u093E\u0907\u091F\u094D\u0938", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" }, + array: { unit: "\u0924\u0924\u094D\u0935", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" }, + set: { unit: "\u0924\u0924\u094D\u0935", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" }, + map: { unit: "\u092A\u094D\u0930\u0935\u093F\u0937\u094D\u091F\u093F\u092F\u093E\u0901", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0907\u0928\u092A\u0941\u091F", + email: "\u0908\u092E\u0947\u0932 \u092A\u0924\u093E", + url: "URL", + emoji: "\u0907\u092E\u094B\u091C\u0940", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0924\u093F\u0925\u093F \u0914\u0930 \u0938\u092E\u092F", + date: "ISO \u0924\u093F\u0925\u093F", + time: "ISO \u0938\u092E\u092F", + duration: "ISO \u0905\u0935\u0927\u093F", + ipv4: "IPv4 \u092A\u0924\u093E", + ipv6: "IPv6 \u092A\u0924\u093E", + mac: "MAC \u092A\u0924\u093E", + cidrv4: "IPv4 \u0936\u094D\u0930\u0947\u0923\u0940", + cidrv6: "IPv6 \u0936\u094D\u0930\u0947\u0923\u0940", + base64: "Base64-\u090F\u0928\u094D\u0915\u094B\u0921\u0947\u0921 \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917", + base64url: "Base64URL-\u090F\u0928\u094D\u0915\u094B\u0921\u0947\u0921 \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917", + json_string: "JSON \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917", + e164: "E.164 \u0938\u0902\u0916\u094D\u092F\u093E", + credit_card: "\u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u093E\u0930\u094D\u0921 \u0938\u0902\u0916\u094D\u092F\u093E", + currency_code: "\u092E\u0941\u0926\u094D\u0930\u093E \u0915\u094B\u0921", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0907\u0928\u092A\u0941\u091F" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 ${expected}, \u092A\u094D\u0930\u093E\u092A\u094D\u0924 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0935\u093F\u0915\u0932\u094D\u092A: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u092E\u093E\u0928\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u090F\u0915 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u092C\u0939\u0941\u0924 \u092C\u0921\u093C\u093E: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u0925\u093E \u0915\u093F ${issue2.origin ?? "\u092E\u093E\u0928"} \u092E\u0947\u0902 ${adj}${issue2.maximum} ${sizing.unit} \u0939\u094B\u0902`; + return `\u092C\u0939\u0941\u0924 \u092C\u0921\u093C\u093E: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u0925\u093E \u0915\u093F ${issue2.origin ?? "\u092E\u093E\u0928"} ${adj}${issue2.maximum} \u0939\u094B`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u092C\u0939\u0941\u0924 \u091B\u094B\u091F\u093E: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u0925\u093E \u0915\u093F ${issue2.origin} \u092E\u0947\u0902 ${adj}${issue2.minimum} ${sizing.unit} \u0939\u094B\u0902`; + return `\u092C\u0939\u0941\u0924 \u091B\u094B\u091F\u093E: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u0925\u093E \u0915\u093F ${issue2.origin} ${adj}${issue2.minimum} \u0939\u094B`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917: "${_issue.prefix}" \u0938\u0947 \u0936\u0941\u0930\u0942 \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F`; + if (_issue.format === "ends_with") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917: "${_issue.suffix}" \u092A\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F`; + if (_issue.format === "includes") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917: \u0907\u0938\u092E\u0947\u0902 "${_issue.includes}" \u0936\u093E\u092E\u093F\u0932 \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F`; + if (_issue.format === "regex") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917: \u092A\u0948\u091F\u0930\u094D\u0928 ${_issue.pattern} \u0938\u0947 \u092E\u0947\u0932 \u0916\u093E\u0928\u093E \u091A\u093E\u0939\u093F\u090F`; + return `\u0905\u092E\u093E\u0928\u094D\u092F ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u0902\u0916\u094D\u092F\u093E: \u092F\u0939 ${issue2.divisor} \u0915\u093E \u0917\u0941\u0923\u091C \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F`; + case "unrecognized_keys": + return `\u0905\u092A\u0930\u093F\u091A\u093F\u0924 \u0915\u0941\u0902\u091C\u0940${issue2.keys.length > 1 ? "\u092F\u093E\u0901" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0915\u0941\u0902\u091C\u0940: ${issue2.origin} \u092E\u0947\u0902`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0921\u093F\u0938\u094D\u0915\u094D\u0930\u093F\u092E\u093F\u0928\u0947\u091F\u0930 \u092E\u093E\u0928: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 ${opts}`; + } + return "\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F"; + case "invalid_element": + return `\u0905\u092E\u093E\u0928\u094D\u092F \u092E\u093E\u0928: ${issue2.origin} \u092E\u0947\u0902`; + default: + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F`; + } + }; +}, "error"); +function hi_default() { + return { + localeError: error21() + }; +} +__name(hi_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hr.js +var error22 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "znakova", verb: "imati" }, + file: { unit: "bajtova", verb: "imati" }, + array: { unit: "stavki", verb: "imati" }, + set: { unit: "stavki", verb: "imati" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "unos", + email: "email adresa", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datum i vrijeme", + date: "ISO datum", + time: "ISO vrijeme", + duration: "ISO trajanje", + ipv4: "IPv4 adresa", + ipv6: "IPv6 adresa", + mac: "MAC adresa", + cidrv4: "IPv4 raspon", + cidrv6: "IPv6 raspon", + base64: "base64 kodirani tekst", + base64url: "base64url kodirani tekst", + json_string: "JSON tekst", + e164: "E.164 broj", + credit_card: "broj kreditne kartice", + currency_code: "kod valute", + iban: "IBAN", + jwt: "JWT", + template_literal: "unos" + }; + const TypeDictionary = { + nan: "NaN", + string: "tekst", + number: "broj", + boolean: "boolean", + array: "niz", + object: "objekt", + set: "skup", + file: "datoteka", + date: "datum", + bigint: "bigint", + symbol: "simbol", + undefined: "undefined", + null: "null", + function: "funkcija", + map: "mapa" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Neispravan unos: o\u010Dekuje se instanceof ${issue2.expected}, a primljeno je ${received}`; + } + return `Neispravan unos: o\u010Dekuje se ${expected}, a primljeno je ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Neispravna vrijednost: o\u010Dekivano ${stringifyPrimitive(issue2.values[0])}`; + return `Neispravna opcija: o\u010Dekivano jedno od ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) + return `Preveliko: o\u010Dekivano da ${origin ?? "vrijednost"} ima ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elemenata"}`; + return `Preveliko: o\u010Dekivano da ${origin ?? "vrijednost"} bude ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + if (sizing) { + return `Premalo: o\u010Dekivano da ${origin} ima ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Premalo: o\u010Dekivano da ${origin} bude ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Neispravan tekst: mora zapo\u010Dinjati s "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Neispravan tekst: mora zavr\u0161avati s "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Neispravan tekst: mora sadr\u017Eavati "${_issue.includes}"`; + if (_issue.format === "regex") + return `Neispravan tekst: mora odgovarati uzorku ${_issue.pattern}`; + return `Neispravna ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Neispravan broj: mora biti vi\u0161ekratnik od ${issue2.divisor}`; + case "unrecognized_keys": + return `Neprepoznat${issue2.keys.length > 1 ? "i klju\u010Devi" : " klju\u010D"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Neispravan klju\u010D u ${TypeDictionary[issue2.origin] ?? issue2.origin}`; + case "invalid_union": + return "Neispravan unos"; + case "invalid_element": + return `Neispravna vrijednost u ${TypeDictionary[issue2.origin] ?? issue2.origin}`; + default: + return `Neispravan unos`; + } + }; +}, "error"); +function hr_default() { + return { + localeError: error22() + }; +} +__name(hr_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hu.js +var error23 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "karakter", verb: "legyen" }, + file: { unit: "byte", verb: "legyen" }, + array: { unit: "elem", verb: "legyen" }, + set: { unit: "elem", verb: "legyen" }, + map: { unit: "elem", verb: "legyen" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "bemenet", + email: "email c\xEDm", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO id\u0151b\xE9lyeg", + date: "ISO d\xE1tum", + time: "ISO id\u0151", + duration: "ISO id\u0151intervallum", + ipv4: "IPv4 c\xEDm", + ipv6: "IPv6 c\xEDm", + mac: "MAC c\xEDm", + cidrv4: "IPv4 tartom\xE1ny", + cidrv6: "IPv6 tartom\xE1ny", + base64: "base64-k\xF3dolt string", + base64url: "base64url-k\xF3dolt string", + json_string: "JSON string", + e164: "E.164 sz\xE1m", + credit_card: "hitelk\xE1rtyasz\xE1m", + currency_code: "p\xE9nznemk\xF3d", + iban: "IBAN", + jwt: "JWT", + template_literal: "bemenet" + }; + const TypeDictionary = { + nan: "NaN", + number: "sz\xE1m", + array: "t\xF6mb" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${issue2.expected}, a kapott \xE9rt\xE9k ${received}`; + } + return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${expected}, a kapott \xE9rt\xE9k ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${stringifyPrimitive(issue2.values[0])}`; + return `\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `T\xFAl nagy: ${issue2.origin ?? "\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elem"}`; + return `T\xFAl nagy: a bemeneti \xE9rt\xE9k ${issue2.origin ?? "\xE9rt\xE9k"} t\xFAl nagy: ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue2.origin} m\xE9rete t\xFAl kicsi ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue2.origin} t\xFAl kicsi ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\xC9rv\xE9nytelen string: "${_issue.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`; + if (_issue.format === "ends_with") + return `\xC9rv\xE9nytelen string: "${_issue.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`; + if (_issue.format === "includes") + return `\xC9rv\xE9nytelen string: "${_issue.includes}" \xE9rt\xE9ket kell tartalmaznia`; + if (_issue.format === "regex") + return `\xC9rv\xE9nytelen string: ${_issue.pattern} mint\xE1nak kell megfelelnie`; + return `\xC9rv\xE9nytelen ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\xC9rv\xE9nytelen sz\xE1m: ${issue2.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`; + case "unrecognized_keys": + return `Ismeretlen kulcs${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\xC9rv\xE9nytelen kulcs ${issue2.origin}`; + case "invalid_union": + return "\xC9rv\xE9nytelen bemenet"; + case "invalid_element": + return `\xC9rv\xE9nytelen \xE9rt\xE9k: ${issue2.origin}`; + default: + return `\xC9rv\xE9nytelen bemenet`; + } + }; +}, "error"); +function hu_default() { + return { + localeError: error23() + }; +} +__name(hu_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hy.js +function getArmenianPlural(count, one, many) { + return Math.abs(count) === 1 ? one : many; +} +__name(getArmenianPlural, "getArmenianPlural"); +function withDefiniteArticle(word) { + if (!word) + return ""; + const vowels = ["\u0561", "\u0565", "\u0568", "\u056B", "\u0578", "\u0578\u0582", "\u0585"]; + const lastChar = word[word.length - 1]; + return word + (vowels.includes(lastChar) ? "\u0576" : "\u0568"); +} +__name(withDefiniteArticle, "withDefiniteArticle"); +var error24 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { + unit: { + one: "\u0576\u0577\u0561\u0576", + many: "\u0576\u0577\u0561\u0576\u0576\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + file: { + unit: { + one: "\u0562\u0561\u0575\u0569", + many: "\u0562\u0561\u0575\u0569\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + array: { + unit: { + one: "\u057F\u0561\u0580\u0580", + many: "\u057F\u0561\u0580\u0580\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + set: { + unit: { + one: "\u057F\u0561\u0580\u0580", + many: "\u057F\u0561\u0580\u0580\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + }, + map: { + unit: { + one: "\u057F\u0561\u0580\u0580", + many: "\u057F\u0561\u0580\u0580\u0565\u0580" + }, + verb: "\u0578\u0582\u0576\u0565\u0576\u0561\u056C" + } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0574\u0578\u0582\u057F\u0584", + email: "\u0567\u056C. \u0570\u0561\u057D\u0581\u0565", + url: "URL", + emoji: "\u0567\u0574\u0578\u057B\u056B", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574", + date: "ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E", + time: "ISO \u056A\u0561\u0574", + duration: "ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576", + ipv4: "IPv4 \u0570\u0561\u057D\u0581\u0565", + ipv6: "IPv6 \u0570\u0561\u057D\u0581\u0565", + mac: "MAC \u0570\u0561\u057D\u0581\u0565", + cidrv4: "IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", + cidrv6: "IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584", + base64: "base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", + base64url: "base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572", + json_string: "JSON \u057F\u0578\u0572", + e164: "E.164 \u0570\u0561\u0574\u0561\u0580", + credit_card: "\u056F\u0580\u0565\u0564\u056B\u057F \u0584\u0561\u0580\u057F\u056B \u0570\u0561\u0574\u0561\u0580", + currency_code: "\u0561\u0580\u056A\u0578\u0582\u0575\u0569\u056B \u056F\u0578\u0564", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0574\u0578\u0582\u057F\u0584" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0569\u056B\u057E", + array: "\u0566\u0561\u0576\u0563\u057E\u0561\u056E" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue2.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; + } + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${stringifyPrimitive(issue2.values[1])}`; + return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const maxValue = Number(issue2.maximum); + const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many); + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue2.maximum.toString()} ${unit}`; + } + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin ?? "\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const minValue = Number(issue2.minimum); + const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many); + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue2.minimum.toString()} ${unit}`; + } + return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin)} \u056C\u056B\u0576\u056B ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${_issue.prefix}"-\u0578\u057E`; + if (_issue.format === "ends_with") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${_issue.suffix}"-\u0578\u057E`; + if (_issue.format === "includes") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`; + return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue2.divisor}-\u056B`; + case "unrecognized_keys": + return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue2.keys.length > 1 ? "\u0576\u0565\u0580" : ""}. ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue2.origin)}-\u0578\u0582\u0574`; + case "invalid_union": + return "\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"; + case "invalid_element": + return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue2.origin)}-\u0578\u0582\u0574`; + default: + return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`; + } + }; +}, "error"); +function hy_default() { + return { + localeError: error24() + }; +} +__name(hy_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/id.js +var error25 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "karakter", verb: "memiliki" }, + file: { unit: "byte", verb: "memiliki" }, + array: { unit: "item", verb: "memiliki" }, + set: { unit: "item", verb: "memiliki" }, + map: { unit: "item", verb: "memiliki" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "alamat email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "tanggal dan waktu format ISO", + date: "tanggal format ISO", + time: "jam format ISO", + duration: "durasi format ISO", + ipv4: "alamat IPv4", + ipv6: "alamat IPv6", + mac: "alamat MAC", + cidrv4: "rentang alamat IPv4", + cidrv6: "rentang alamat IPv6", + base64: "string dengan enkode base64", + base64url: "string dengan enkode base64url", + json_string: "string JSON", + e164: "angka E.164", + credit_card: "nomor kartu kredit", + currency_code: "kode mata uang", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Input tidak valid: diharapkan instanceof ${issue2.expected}, diterima ${received}`; + } + return `Input tidak valid: diharapkan ${expected}, diterima ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Input tidak valid: diharapkan ${stringifyPrimitive(issue2.values[0])}`; + return `Pilihan tidak valid: diharapkan salah satu dari ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Terlalu besar: diharapkan ${issue2.origin ?? "value"} memiliki ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elemen"}`; + return `Terlalu besar: diharapkan ${issue2.origin ?? "value"} menjadi ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Terlalu kecil: diharapkan ${issue2.origin} memiliki ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Terlalu kecil: diharapkan ${issue2.origin} menjadi ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `String tidak valid: harus dimulai dengan "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `String tidak valid: harus berakhir dengan "${_issue.suffix}"`; + if (_issue.format === "includes") + return `String tidak valid: harus menyertakan "${_issue.includes}"`; + if (_issue.format === "regex") + return `String tidak valid: harus sesuai pola ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} tidak valid`; + } + case "not_multiple_of": + return `Angka tidak valid: harus kelipatan dari ${issue2.divisor}`; + case "unrecognized_keys": + return `Kunci tidak dikenali ${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Kunci tidak valid di ${issue2.origin}`; + case "invalid_union": + return "Input tidak valid"; + case "invalid_element": + return `Nilai tidak valid di ${issue2.origin}`; + default: + return `Input tidak valid`; + } + }; +}, "error"); +function id_default() { + return { + localeError: error25() + }; +} +__name(id_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/is.js +var error26 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "stafi", verb: "a\xF0 hafa" }, + file: { unit: "b\xE6ti", verb: "a\xF0 hafa" }, + array: { unit: "hluti", verb: "a\xF0 hafa" }, + set: { unit: "hluti", verb: "a\xF0 hafa" }, + map: { unit: "hluti", verb: "a\xF0 hafa" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "gildi", + email: "netfang", + url: "vefsl\xF3\xF0", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dagsetning og t\xEDmi", + date: "ISO dagsetning", + time: "ISO t\xEDmi", + duration: "ISO t\xEDmalengd", + ipv4: "IPv4 address", + ipv6: "IPv6 address", + mac: "MAC address", + cidrv4: "IPv4 range", + cidrv6: "IPv6 range", + base64: "base64-encoded strengur", + base64url: "base64url-encoded strengur", + json_string: "JSON strengur", + e164: "E.164 t\xF6lugildi", + credit_card: "kreditkortan\xFAmer", + currency_code: "gjaldmi\xF0ilsk\xF3\xF0i", + iban: "IBAN", + jwt: "JWT", + template_literal: "gildi" + }; + const TypeDictionary = { + nan: "NaN", + number: "n\xFAmer", + array: "fylki" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera instanceof ${issue2.expected}`; + } + return `Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera ${expected}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Rangt gildi: gert r\xE1\xF0 fyrir ${stringifyPrimitive(issue2.values[0])}`; + return `\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin ?? "gildi"} hafi ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "hluti"}`; + return `Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin ?? "gildi"} s\xE9 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin} hafi ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin} s\xE9 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${_issue.includes}"`; + if (_issue.format === "regex") + return `\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${_issue.pattern}`; + return `Rangt ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${issue2.divisor}`; + case "unrecognized_keys": + return `\xD3\xFEekkt ${issue2.keys.length > 1 ? "ir lyklar" : "ur lykill"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Rangur lykill \xED ${issue2.origin}`; + case "invalid_union": + return "Rangt gildi"; + case "invalid_element": + return `Rangt gildi \xED ${issue2.origin}`; + default: + return `Rangt gildi`; + } + }; +}, "error"); +function is_default() { + return { + localeError: error26() + }; +} +__name(is_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/it.js +var error27 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caratteri", verb: "avere" }, + file: { unit: "byte", verb: "avere" }, + array: { unit: "elementi", verb: "avere" }, + set: { unit: "elementi", verb: "avere" }, + map: { unit: "elementi", verb: "avere" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "indirizzo email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data e ora ISO", + date: "data ISO", + time: "ora ISO", + duration: "durata ISO", + ipv4: "indirizzo IPv4", + ipv6: "indirizzo IPv6", + mac: "indirizzo MAC", + cidrv4: "intervallo IPv4", + cidrv6: "intervallo IPv6", + base64: "stringa codificata in base64", + base64url: "URL codificata in base64", + json_string: "stringa JSON", + e164: "numero E.164", + credit_card: "numero di carta di credito", + currency_code: "codice valuta", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "numero", + array: "vettore" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Input non valido: atteso instanceof ${issue2.expected}, ricevuto ${received}`; + } + return `Input non valido: atteso ${expected}, ricevuto ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Input non valido: atteso ${stringifyPrimitive(issue2.values[0])}`; + return `Opzione non valida: atteso uno tra ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Troppo grande: ${issue2.origin ?? "valore"} deve avere ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementi"}`; + return `Troppo grande: ${issue2.origin ?? "valore"} deve essere ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Troppo piccolo: ${issue2.origin} deve avere ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Troppo piccolo: ${issue2.origin} deve essere ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Stringa non valida: deve iniziare con "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Stringa non valida: deve terminare con "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Stringa non valida: deve includere "${_issue.includes}"`; + if (_issue.format === "regex") + return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`; + return `Input non valido: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Numero non valido: deve essere un multiplo di ${issue2.divisor}`; + case "unrecognized_keys": + return `Chiav${issue2.keys.length > 1 ? "i" : "e"} non riconosciut${issue2.keys.length > 1 ? "e" : "a"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Chiave non valida in ${issue2.origin}`; + case "invalid_union": + return "Input non valido"; + case "invalid_element": + return `Valore non valido in ${issue2.origin}`; + default: + return `Input non valido`; + } + }; +}, "error"); +function it_default() { + return { + localeError: error27() + }; +} +__name(it_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ja.js +var error28 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" }, + file: { unit: "\u30D0\u30A4\u30C8", verb: "\u3067\u3042\u308B" }, + array: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" }, + set: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" }, + map: { unit: "\u8981\u7D20", verb: "\u3067\u3042\u308B" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u5165\u529B\u5024", + email: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9", + url: "URL", + emoji: "\u7D75\u6587\u5B57", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO\u65E5\u6642", + date: "ISO\u65E5\u4ED8", + time: "ISO\u6642\u523B", + duration: "ISO\u671F\u9593", + ipv4: "IPv4\u30A2\u30C9\u30EC\u30B9", + ipv6: "IPv6\u30A2\u30C9\u30EC\u30B9", + mac: "MAC\u30A2\u30C9\u30EC\u30B9", + cidrv4: "IPv4\u7BC4\u56F2", + cidrv6: "IPv6\u7BC4\u56F2", + base64: "base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", + base64url: "base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217", + json_string: "JSON\u6587\u5B57\u5217", + e164: "E.164\u756A\u53F7", + credit_card: "\u30AF\u30EC\u30B8\u30C3\u30C8\u30AB\u30FC\u30C9\u756A\u53F7", + currency_code: "\u901A\u8CA8\u30B3\u30FC\u30C9", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u5165\u529B\u5024" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u6570\u5024", + array: "\u914D\u5217" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue2.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; + } + return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u7121\u52B9\u306A\u5165\u529B: ${stringifyPrimitive(issue2.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`; + return `\u7121\u52B9\u306A\u9078\u629E: ${joinValues(issue2.values, "\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + case "too_big": { + const adj = issue2.inclusive ? "\u4EE5\u4E0B\u3067\u3042\u308B" : "\u3088\u308A\u5C0F\u3055\u3044"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue2.origin ?? "\u5024"}\u306F${issue2.maximum.toString()}${sizing.unit ?? "\u8981\u7D20"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue2.origin ?? "\u5024"}\u306F${issue2.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + } + case "too_small": { + const adj = issue2.inclusive ? "\u4EE5\u4E0A\u3067\u3042\u308B" : "\u3088\u308A\u5927\u304D\u3044"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue2.origin}\u306F${issue2.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue2.origin}\u306F${issue2.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + if (_issue.format === "ends_with") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + if (_issue.format === "includes") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + if (_issue.format === "regex") + return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u7121\u52B9\u306A\u6570\u5024: ${issue2.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`; + case "unrecognized_keys": + return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue2.keys.length > 1 ? "\u7FA4" : ""}: ${joinValues(issue2.keys, "\u3001")}`; + case "invalid_key": + return `${issue2.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`; + case "invalid_union": + return "\u7121\u52B9\u306A\u5165\u529B"; + case "invalid_element": + return `${issue2.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`; + default: + return `\u7121\u52B9\u306A\u5165\u529B`; + } + }; +}, "error"); +function ja_default() { + return { + localeError: error28() + }; +} +__name(ja_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ka.js +var error29 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + file: { unit: "\u10D1\u10D0\u10D8\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + array: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + set: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" }, + map: { unit: "\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0", + email: "\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + url: "URL", + emoji: "\u10D4\u10DB\u10DD\u10EF\u10D8", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD", + date: "\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8", + time: "\u10D3\u10E0\u10DD", + duration: "\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0", + ipv4: "IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + ipv6: "IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + mac: "MAC \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8", + cidrv4: "IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", + cidrv6: "IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8", + base64: "base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8", + base64url: "base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8", + json_string: "JSON \u10D5\u10D4\u10DA\u10D8", + e164: "E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8", + credit_card: "\u10E1\u10D0\u10D9\u10E0\u10D4\u10D3\u10D8\u10E2\u10DD \u10D1\u10D0\u10E0\u10D0\u10D7\u10D8\u10E1 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8", + currency_code: "\u10D5\u10D0\u10DA\u10E3\u10E2\u10D8\u10E1 \u10D9\u10DD\u10D3\u10D8", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8", + string: "\u10D5\u10D4\u10DA\u10D8", + boolean: "\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8", + function: "\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0", + array: "\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue2.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; + } + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${stringifyPrimitive(issue2.values[0])}`; + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${joinValues(issue2.values, "|")}-\u10D3\u10D0\u10DC`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit}`; + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin ?? "\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.prefix}"-\u10D8\u10D7`; + } + if (_issue.format === "ends_with") + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.suffix}"-\u10D8\u10D7`; + if (_issue.format === "includes") + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${_issue.includes}"-\u10E1`; + if (_issue.format === "regex") + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`; + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue2.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`; + case "unrecognized_keys": + return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue2.keys.length > 1 ? "\u10D4\u10D1\u10D8" : "\u10D8"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue2.origin}-\u10E8\u10D8`; + case "invalid_union": + return "\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"; + case "invalid_element": + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue2.origin}-\u10E8\u10D8`; + default: + return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`; + } + }; +}, "error"); +function ka_default() { + return { + localeError: error29() + }; +} +__name(ka_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/km.js +var error30 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + file: { unit: "\u1794\u17C3", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + array: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + set: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" }, + map: { unit: "\u1792\u17B6\u178F\u17BB", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B", + email: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B", + url: "URL", + emoji: "\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO", + date: "\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO", + time: "\u1798\u17C9\u17C4\u1784 ISO", + duration: "\u179A\u1799\u17C8\u1796\u17C1\u179B ISO", + ipv4: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", + ipv6: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", + mac: "\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 MAC", + cidrv4: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4", + cidrv6: "\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6", + base64: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64", + base64url: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url", + json_string: "\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON", + e164: "\u179B\u17C1\u1781 E.164", + credit_card: "\u179B\u17C1\u1781\u1794\u17D0\u178E\u17D2\u178E\u17A5\u178E\u1791\u17B6\u1793", + currency_code: "\u1780\u17BC\u178A\u179A\u17BC\u1794\u17B7\u1799\u1794\u17D0\u178E\u17D2\u178E", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u179B\u17C1\u1781", + array: "\u17A2\u17B6\u179A\u17C1 (Array)", + null: "\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue2.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; + } + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${stringifyPrimitive(issue2.values[0])}`; + return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "\u1792\u17B6\u178F\u17BB"}`; + return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin ?? "\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin} ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`; + return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue2.origin}`; + case "invalid_union": + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; + case "invalid_element": + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue2.origin}`; + default: + return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`; + } + }; +}, "error"); +function km_default() { + return { + localeError: error30() + }; +} +__name(km_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/kh.js +function kh_default() { + return km_default(); +} +__name(kh_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/kn.js +var error31 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0C85\u0C95\u0CCD\u0CB7\u0CB0\u0C97\u0CB3\u0CC1", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" }, + file: { unit: "\u0CAC\u0CC8\u0C9F\u0CCD\u200C\u0C97\u0CB3\u0CC1", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" }, + array: { unit: "\u0CB5\u0CB8\u0CCD\u0CA4\u0CC1\u0C97\u0CB3\u0CC1", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" }, + set: { unit: "\u0CB5\u0CB8\u0CCD\u0CA4\u0CC1\u0C97\u0CB3\u0CC1", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" }, + map: { unit: "entries", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0C87\u0CA8\u0CCD\u0CAA\u0CC1\u0C9F\u0CCD", + email: "email \u0CB5\u0CBF\u0CB3\u0CBE\u0CB8", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0CA6\u0CBF\u0CA8\u0CBE\u0C82\u0C95\u0CA6 \u0CB8\u0CAE\u0CAF", + date: "ISO \u0CA6\u0CBF\u0CA8\u0CBE\u0C82\u0C95", + time: "ISO \u0CB8\u0CAE\u0CAF", + duration: "ISO \u0C85\u0CB5\u0CA7\u0CBF", + ipv4: "IPv4 \u0CB5\u0CBF\u0CB3\u0CBE\u0CB8", + ipv6: "IPv6 \u0CB5\u0CBF\u0CB3\u0CBE\u0CB8", + mac: "MAC \u0CB5\u0CBF\u0CB3\u0CBE\u0CB8", + cidrv4: "IPv4 \u0CB5\u0CCD\u0CAF\u0CBE\u0CAA\u0CCD\u0CA4\u0CBF\u0CAF", + cidrv6: "IPv6 \u0CB5\u0CCD\u0CAF\u0CBE\u0CAA\u0CCD\u0CA4\u0CBF\u0CAF", + base64: "base64-encoded\u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD", + base64url: "base64url-encoded\u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD", + json_string: "JSON\u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD", + e164: "E.164 \u0CB8\u0C82\u0C96\u0CCD\u0CAF\u0CC6", + credit_card: "\u0C95\u0CCD\u0CB0\u0CC6\u0CA1\u0CBF\u0C9F\u0CCD \u0C95\u0CBE\u0CB0\u0CCD\u0CA1\u0CCD \u0CB8\u0C82\u0C96\u0CCD\u0CAF\u0CC6", + currency_code: "\u0C95\u0CB0\u0CC6\u0CA8\u0CCD\u0CB8\u0CBF \u0C95\u0CCB\u0CA1\u0CCD", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0C87\u0CA8\u0CCD\u0CAA\u0CC1\u0C9F\u0CCD" + }; + const TypeDictionary = { + // Compatibility: "nan" -> "NaN" for display + nan: "NaN" + // All other type names omitted - they fall back to raw values via ?? operator + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0C87\u0CA8\u0CCD\u200C\u0CAA\u0CC1\u0C9F\u0CCD: \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${expected}, \u0CB8\u0CCD\u0CB5\u0CC0\u0C95\u0CB0\u0CBF\u0CB8\u0CBF\u0CA6\u0CA8\u0CC1 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0C87\u0CA8\u0CCD\u200C\u0CAA\u0CC1\u0C9F\u0CCD: \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0C86\u0CAF\u0CCD\u0C95\u0CC6: \u0C87\u0CB5\u0CC1\u0C97\u0CB3\u0CB2\u0CCD\u0CB2\u0CBF \u0C92\u0C82\u0CA6\u0CA8\u0CCD\u0CA8\u0CC1 \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0CA4\u0CC1\u0C82\u0CAC\u0CBE \u0CA6\u0CCA\u0CA1\u0CCD\u0CA1\u0CA6\u0CC1: \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${issue2.origin ?? "value"} \u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0C85\u0C82\u0CB6\u0C97\u0CB3\u0CC1"}`; + return `\u0CA4\u0CC1\u0C82\u0CAC\u0CBE \u0CA6\u0CCA\u0CA1\u0CCD\u0CA1\u0CA6\u0CC1: \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${issue2.origin ?? "value"} \u0C8E\u0C82\u0CA6\u0CC1 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0CA4\u0CC1\u0C82\u0CAC\u0CBE \u0C9A\u0CBF\u0C95\u0CCD\u0C95\u0CA6\u0CC1: \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${issue2.origin} \u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1 ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0CA4\u0CC1\u0C82\u0CAC\u0CBE \u0C9A\u0CBF\u0C95\u0CCD\u0C95\u0CA6\u0CC1: \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${issue2.origin} \u0C8E\u0C82\u0CA6\u0CC1 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF\u0CB5\u0CBE\u0CA6 \u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD: \u0C87\u0CA6\u0CB0\u0CCA\u0C82\u0CA6\u0CBF\u0C97\u0CC6 \u0CAA\u0CCD\u0CB0\u0CBE\u0CB0\u0C82\u0CAD\u0CBF\u0CB8\u0CAC\u0CC7\u0C95\u0CC1 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF\u0CB5\u0CBE\u0CA6 \u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD: \u0C87\u0CA6\u0CB0\u0CCA\u0C82\u0CA6\u0CBF\u0C97\u0CC6 \u0C95\u0CCA\u0CA8\u0CC6\u0C97\u0CCA\u0CB3\u0CCD\u0CB3\u0CAC\u0CC7\u0C95\u0CC1 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD: \u0C92\u0CB3\u0C97\u0CCA\u0C82\u0CA1\u0CBF\u0CB0\u0CAC\u0CC7\u0C95\u0CC1 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF\u0CB5\u0CBE\u0CA6 \u0CB8\u0CCD\u0C9F\u0CCD\u0CB0\u0CBF\u0C82\u0C97\u0CCD: \u0CAE\u0CBE\u0CA6\u0CB0\u0CBF\u0C97\u0CC6 \u0CB9\u0CCA\u0C82\u0CA6\u0CBF\u0C95\u0CC6\u0CAF\u0CBE\u0C97\u0CAC\u0CC7\u0C95\u0CC1 ${_issue.pattern}`; + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0CB8\u0C82\u0C96\u0CCD\u0CAF\u0CC6: \u0CAC\u0CB9\u0CC1\u0CB8\u0C82\u0C96\u0CCD\u0CAF\u0CC6\u0CAF\u0CBE\u0C97\u0CBF\u0CB0\u0CAC\u0CC7\u0C95\u0CC1 ${issue2.divisor}`; + case "unrecognized_keys": + return `\u0C97\u0CC1\u0CB0\u0CC1\u0CA4\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CA6 \u0C95\u0CC0 ${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF\u0CB5\u0CBE\u0CA6 \u0C95\u0CC0 \u0C87\u0CA8\u0CCD ${issue2.origin}`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0CA4\u0CBE\u0CB0\u0CA4\u0CAE\u0CCD\u0CAF \u0CAE\u0CCC\u0CB2\u0CCD\u0CAF. \u0CA8\u0CBF\u0CB0\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CBF\u0CA6\u0CC6 ${opts}`; + } + return "\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0C87\u0CA8\u0CCD\u200C\u0CAA\u0CC1\u0C9F\u0CCD"; + case "invalid_element": + return `\u0CB0\u0CB2\u0CCD\u0CB2\u0CBF \u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0CAE\u0CCC\u0CB2\u0CCD\u0CAF ${issue2.origin}`; + default: + return `\u0C85\u0CAE\u0CBE\u0CA8\u0CCD\u0CAF \u0C87\u0CA8\u0CCD\u200C\u0CAA\u0CC1\u0C9F\u0CCD`; + } + }; +}, "error"); +function kn_default() { + return { + localeError: error31() + }; +} +__name(kn_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ko.js +var error32 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\uBB38\uC790", verb: "to have" }, + file: { unit: "\uBC14\uC774\uD2B8", verb: "to have" }, + array: { unit: "\uAC1C", verb: "to have" }, + set: { unit: "\uAC1C", verb: "to have" }, + map: { unit: "\uAC1C", verb: "to have" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\uC785\uB825", + email: "\uC774\uBA54\uC77C \uC8FC\uC18C", + url: "URL", + emoji: "\uC774\uBAA8\uC9C0", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \uB0A0\uC9DC\uC2DC\uAC04", + date: "ISO \uB0A0\uC9DC", + time: "ISO \uC2DC\uAC04", + duration: "ISO \uAE30\uAC04", + ipv4: "IPv4 \uC8FC\uC18C", + ipv6: "IPv6 \uC8FC\uC18C", + mac: "MAC \uC8FC\uC18C", + cidrv4: "IPv4 \uBC94\uC704", + cidrv6: "IPv6 \uBC94\uC704", + base64: "base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", + base64url: "base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4", + json_string: "JSON \uBB38\uC790\uC5F4", + e164: "E.164 \uBC88\uD638", + credit_card: "\uC2E0\uC6A9\uCE74\uB4DC \uBC88\uD638", + currency_code: "\uD1B5\uD654 \uCF54\uB4DC", + iban: "IBAN", + jwt: "JWT", + template_literal: "\uC785\uB825" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue2.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; + } + return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${stringifyPrimitive(issue2.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`; + return `\uC798\uBABB\uB41C \uC635\uC158: ${joinValues(issue2.values, "\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`; + case "too_big": { + const adj = issue2.inclusive ? "\uC774\uD558" : "\uBBF8\uB9CC"; + const suffix = adj === "\uBBF8\uB9CC" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; + const sizing = getSizing(issue2.origin); + const unit = sizing?.unit ?? "\uC694\uC18C"; + if (sizing) + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue2.maximum.toString()}${unit} ${adj}${suffix}`; + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue2.maximum.toString()} ${adj}${suffix}`; + } + case "too_small": { + const adj = issue2.inclusive ? "\uC774\uC0C1" : "\uCD08\uACFC"; + const suffix = adj === "\uC774\uC0C1" ? "\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" : "\uC5EC\uC57C \uD569\uB2C8\uB2E4"; + const sizing = getSizing(issue2.origin); + const unit = sizing?.unit ?? "\uC694\uC18C"; + if (sizing) { + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue2.minimum.toString()}${unit} ${adj}${suffix}`; + } + return `${issue2.origin ?? "\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue2.minimum.toString()} ${adj}${suffix}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`; + } + if (_issue.format === "ends_with") + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`; + if (_issue.format === "includes") + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`; + if (_issue.format === "regex") + return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`; + return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue2.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`; + case "unrecognized_keys": + return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\uC798\uBABB\uB41C \uD0A4: ${issue2.origin}`; + case "invalid_union": + return `\uC798\uBABB\uB41C \uC785\uB825`; + case "invalid_element": + return `\uC798\uBABB\uB41C \uAC12: ${issue2.origin}`; + default: + return `\uC798\uBABB\uB41C \uC785\uB825`; + } + }; +}, "error"); +function ko_default() { + return { + localeError: error32() + }; +} +__name(ko_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/lt.js +var capitalizeFirstCharacter = /* @__PURE__ */ __name((text2) => { + return text2.charAt(0).toUpperCase() + text2.slice(1); +}, "capitalizeFirstCharacter"); +function getUnitTypeFromNumber(number4) { + const abs = Math.abs(number4); + const last = abs % 10; + const last2 = abs % 100; + if (last2 >= 11 && last2 <= 19 || last === 0) + return "many"; + if (last === 1) + return "one"; + return "few"; +} +__name(getUnitTypeFromNumber, "getUnitTypeFromNumber"); +var error33 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { + unit: { + one: "simbolis", + few: "simboliai", + many: "simboli\u0173" + }, + verb: { + smaller: { + inclusive: "turi b\u016Bti ne ilgesn\u0117 kaip", + notInclusive: "turi b\u016Bti trumpesn\u0117 kaip" + }, + bigger: { + inclusive: "turi b\u016Bti ne trumpesn\u0117 kaip", + notInclusive: "turi b\u016Bti ilgesn\u0117 kaip" + } + } + }, + file: { + unit: { + one: "baitas", + few: "baitai", + many: "bait\u0173" + }, + verb: { + smaller: { + inclusive: "turi b\u016Bti ne didesnis kaip", + notInclusive: "turi b\u016Bti ma\u017Eesnis kaip" + }, + bigger: { + inclusive: "turi b\u016Bti ne ma\u017Eesnis kaip", + notInclusive: "turi b\u016Bti didesnis kaip" + } + } + }, + array: { + unit: { + one: "element\u0105", + few: "elementus", + many: "element\u0173" + }, + verb: { + smaller: { + inclusive: "turi tur\u0117ti ne daugiau kaip", + notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" + }, + bigger: { + inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", + notInclusive: "turi tur\u0117ti daugiau kaip" + } + } + }, + set: { + unit: { + one: "element\u0105", + few: "elementus", + many: "element\u0173" + }, + verb: { + smaller: { + inclusive: "turi tur\u0117ti ne daugiau kaip", + notInclusive: "turi tur\u0117ti ma\u017Eiau kaip" + }, + bigger: { + inclusive: "turi tur\u0117ti ne ma\u017Eiau kaip", + notInclusive: "turi tur\u0117ti daugiau kaip" + } + } + } + }; + function getSizing(origin, unitType, inclusive, targetShouldBe) { + const result = Sizable[origin] ?? null; + if (result === null) + return result; + return { + unit: result.unit[unitType], + verb: result.verb[targetShouldBe][inclusive ? "inclusive" : "notInclusive"] + }; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u012Fvestis", + email: "el. pa\u0161to adresas", + url: "URL", + emoji: "jaustukas", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO data ir laikas", + date: "ISO data", + time: "ISO laikas", + duration: "ISO trukm\u0117", + ipv4: "IPv4 adresas", + ipv6: "IPv6 adresas", + mac: "MAC adresas", + cidrv4: "IPv4 tinklo prefiksas (CIDR)", + cidrv6: "IPv6 tinklo prefiksas (CIDR)", + base64: "base64 u\u017Ekoduota eilut\u0117", + base64url: "base64url u\u017Ekoduota eilut\u0117", + json_string: "JSON eilut\u0117", + e164: "E.164 numeris", + credit_card: "kredito kortel\u0117s numeris", + currency_code: "valiutos kodas", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u012Fvestis" + }; + const TypeDictionary = { + nan: "NaN", + number: "skai\u010Dius", + bigint: "sveikasis skai\u010Dius", + string: "eilut\u0117", + boolean: "login\u0117 reik\u0161m\u0117", + undefined: "neapibr\u0117\u017Eta reik\u0161m\u0117", + function: "funkcija", + symbol: "simbolis", + array: "masyvas", + object: "objektas", + null: "nulin\u0117 reik\u0161m\u0117" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue2.expected}`; + } + return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Privalo b\u016Bti ${stringifyPrimitive(issue2.values[0])}`; + return `Privalo b\u016Bti vienas i\u0161 ${joinValues(issue2.values, "|")} pasirinkim\u0173`; + case "too_big": { + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + const sizing = getSizing(issue2.origin, getUnitTypeFromNumber(Number(issue2.maximum)), issue2.inclusive ?? false, "smaller"); + if (sizing?.verb) + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue2.maximum.toString()} ${sizing.unit ?? "element\u0173"}`; + const adj = issue2.inclusive ? "ne didesnis kaip" : "ma\u017Eesnis kaip"; + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue2.maximum.toString()} ${sizing?.unit}`; + } + case "too_small": { + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + const sizing = getSizing(issue2.origin, getUnitTypeFromNumber(Number(issue2.minimum)), issue2.inclusive ?? false, "bigger"); + if (sizing?.verb) + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} ${sizing.verb} ${issue2.minimum.toString()} ${sizing.unit ?? "element\u0173"}`; + const adj = issue2.inclusive ? "ne ma\u017Eesnis kaip" : "didesnis kaip"; + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue2.minimum.toString()} ${sizing?.unit}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Eilut\u0117 privalo prasid\u0117ti "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Eilut\u0117 privalo pasibaigti "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Eilut\u0117 privalo \u012Ftraukti "${_issue.includes}"`; + if (_issue.format === "regex") + return `Eilut\u0117 privalo atitikti ${_issue.pattern}`; + return `Neteisingas ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Skai\u010Dius privalo b\u016Bti ${issue2.divisor} kartotinis.`; + case "unrecognized_keys": + return `Neatpa\u017Eint${issue2.keys.length > 1 ? "i" : "as"} rakt${issue2.keys.length > 1 ? "ai" : "as"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return "Rastas klaidingas raktas"; + case "invalid_union": + return "Klaidinga \u012Fvestis"; + case "invalid_element": { + const origin = TypeDictionary[issue2.origin] ?? issue2.origin; + return `${capitalizeFirstCharacter(origin ?? issue2.origin ?? "reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`; + } + default: + return "Klaidinga \u012Fvestis"; + } + }; +}, "error"); +function lt_default() { + return { + localeError: error33() + }; +} +__name(lt_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/mk.js +var error34 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + file: { unit: "\u0431\u0430\u0458\u0442\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + array: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + set: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" }, + map: { unit: "\u0441\u0442\u0430\u0432\u043A\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0432\u043D\u0435\u0441", + email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430", + url: "URL", + emoji: "\u0435\u043C\u043E\u045F\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435", + date: "ISO \u0434\u0430\u0442\u0443\u043C", + time: "ISO \u0432\u0440\u0435\u043C\u0435", + duration: "ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435", + ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441\u0430", + ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441\u0430", + mac: "MAC \u0430\u0434\u0440\u0435\u0441\u0430", + cidrv4: "IPv4 \u043E\u043F\u0441\u0435\u0433", + cidrv6: "IPv6 \u043E\u043F\u0441\u0435\u0433", + base64: "base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", + base64url: "base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430", + json_string: "JSON \u043D\u0438\u0437\u0430", + e164: "E.164 \u0431\u0440\u043E\u0458", + credit_card: "\u0431\u0440\u043E\u0458 \u043D\u0430 \u043A\u0440\u0435\u0434\u0438\u0442\u043D\u0430 \u043A\u0430\u0440\u0442\u0438\u0447\u043A\u0430", + currency_code: "\u043A\u043E\u0434 \u043D\u0430 \u0432\u0430\u043B\u0443\u0442\u0430", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0432\u043D\u0435\u0441" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0431\u0440\u043E\u0458", + array: "\u043D\u0438\u0437\u0430" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue2.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; + } + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`; + return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`; + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin ?? "\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`; + return `Invalid ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438" : "\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue2.origin}`; + case "invalid_union": + return "\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"; + case "invalid_element": + return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue2.origin}`; + default: + return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`; + } + }; +}, "error"); +function mk_default() { + return { + localeError: error34() + }; +} +__name(mk_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ms.js +var error35 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "aksara", verb: "mempunyai" }, + file: { unit: "bait", verb: "mempunyai" }, + array: { unit: "elemen", verb: "mempunyai" }, + set: { unit: "elemen", verb: "mempunyai" }, + map: { unit: "elemen", verb: "mempunyai" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "alamat e-mel", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "tarikh masa ISO", + date: "tarikh ISO", + time: "masa ISO", + duration: "tempoh ISO", + ipv4: "alamat IPv4", + ipv6: "alamat IPv6", + mac: "alamat MAC", + cidrv4: "julat IPv4", + cidrv6: "julat IPv6", + base64: "string dikodkan base64", + base64url: "string dikodkan base64url", + json_string: "string JSON", + e164: "nombor E.164", + credit_card: "nombor kad kredit", + currency_code: "kod mata wang", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "nombor" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Input tidak sah: dijangka instanceof ${issue2.expected}, diterima ${received}`; + } + return `Input tidak sah: dijangka ${expected}, diterima ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Input tidak sah: dijangka ${stringifyPrimitive(issue2.values[0])}`; + return `Pilihan tidak sah: dijangka salah satu daripada ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Terlalu besar: dijangka ${issue2.origin ?? "nilai"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elemen"}`; + return `Terlalu besar: dijangka ${issue2.origin ?? "nilai"} adalah ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Terlalu kecil: dijangka ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Terlalu kecil: dijangka ${issue2.origin} adalah ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `String tidak sah: mesti bermula dengan "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `String tidak sah: mesti berakhir dengan "${_issue.suffix}"`; + if (_issue.format === "includes") + return `String tidak sah: mesti mengandungi "${_issue.includes}"`; + if (_issue.format === "regex") + return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} tidak sah`; + } + case "not_multiple_of": + return `Nombor tidak sah: perlu gandaan ${issue2.divisor}`; + case "unrecognized_keys": + return `Kunci tidak dikenali: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Kunci tidak sah dalam ${issue2.origin}`; + case "invalid_union": + return "Input tidak sah"; + case "invalid_element": + return `Nilai tidak sah dalam ${issue2.origin}`; + default: + return `Input tidak sah`; + } + }; +}, "error"); +function ms_default() { + return { + localeError: error35() + }; +} +__name(ms_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ne.js +var error36 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0905\u0915\u094D\u0937\u0930", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" }, + file: { unit: "\u092C\u093E\u0907\u091F", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" }, + array: { unit: "\u0924\u0924\u094D\u0935", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" }, + set: { unit: "\u0924\u0924\u094D\u0935", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" }, + map: { unit: "\u092A\u094D\u0930\u0935\u093F\u0937\u094D\u091F\u093F", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0907\u0928\u092A\u0941\u091F", + email: "\u0907\u092E\u0947\u0932 \u0920\u0947\u0917\u093E\u0928\u093E", + url: "URL", + emoji: "\u0907\u092E\u094B\u091C\u0940", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u092E\u093F\u0924\u093F \u0930 \u0938\u092E\u092F", + date: "ISO \u092E\u093F\u0924\u093F", + time: "ISO \u0938\u092E\u092F", + duration: "ISO \u0905\u0935\u0927\u093F", + ipv4: "IPv4 \u0920\u0947\u0917\u093E\u0928\u093E", + ipv6: "IPv6 \u0920\u0947\u0917\u093E\u0928\u093E", + mac: "MAC \u0920\u0947\u0917\u093E\u0928\u093E", + cidrv4: "IPv4 \u0926\u093E\u092F\u0930\u093E", + cidrv6: "IPv6 \u0926\u093E\u092F\u0930\u093E", + base64: "base64-\u0907\u0928\u094D\u0915\u094B\u0921 \u0917\u0930\u093F\u090F\u0915\u094B \u0938\u094D\u091F\u094D\u0930\u093F\u0919", + base64url: "base64url-\u0907\u0928\u094D\u0915\u094B\u0921 \u0917\u0930\u093F\u090F\u0915\u094B \u0938\u094D\u091F\u094D\u0930\u093F\u0919", + json_string: "JSON \u0938\u094D\u091F\u094D\u0930\u093F\u0919", + e164: "E.164 \u0928\u092E\u094D\u092C\u0930", + credit_card: "\u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0915\u093E\u0930\u094D\u0921 \u0928\u092E\u094D\u092C\u0930", + currency_code: "\u092E\u0941\u0926\u094D\u0930\u093E \u0915\u094B\u0921", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0907\u0928\u092A\u0941\u091F" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 ${expected}, \u092A\u094D\u0930\u093E\u092A\u094D\u0924 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0935\u093F\u0915\u0932\u094D\u092A: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u092E\u093E\u0928\u0939\u0930\u0942 \u092E\u0927\u094D\u092F\u0947 \u090F\u0915 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0927\u0947\u0930\u0948 \u0920\u0942\u0932\u094B: ${issue2.origin ?? "\u092E\u093E\u0928"} \u092E\u093E ${adj}${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`; + return `\u0927\u0947\u0930\u0948 \u0920\u0942\u0932\u094B: ${issue2.origin ?? "\u092E\u093E\u0928"} ${adj}${issue2.maximum.toString()} \u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0927\u0947\u0930\u0948 \u0938\u093E\u0928\u094B: ${issue2.origin} \u092E\u093E ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + return `\u0927\u0947\u0930\u0948 \u0938\u093E\u0928\u094B: ${issue2.origin} ${adj}${issue2.minimum.toString()} \u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0919: "${_issue.prefix}" \u092C\u093E\u091F \u0938\u0941\u0930\u0941 \u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B`; + if (_issue.format === "ends_with") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0919: "${_issue.suffix}" \u092E\u093E \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B`; + if (_issue.format === "includes") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0919: "${_issue.includes}" \u0938\u092E\u093E\u0935\u0947\u0936 \u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B`; + if (_issue.format === "regex") + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u094D\u091F\u094D\u0930\u093F\u0919: \u0922\u093E\u0901\u091A\u093E ${_issue.pattern} \u0938\u0901\u0917 \u092E\u0947\u0932 \u0916\u093E\u0928\u0941\u092A\u0930\u094D\u091B`; + return `\u0905\u092E\u093E\u0928\u094D\u092F ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0938\u0902\u0916\u094D\u092F\u093E: ${issue2.divisor} \u0915\u094B \u0917\u0941\u0923\u091C \u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B`; + case "unrecognized_keys": + return `\u0905\u092A\u0930\u093F\u091A\u093F\u0924 \u0915\u0941\u091E\u094D\u091C\u0940${issue2.keys.length > 1 ? "\u0939\u0930\u0942" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0915\u0941\u091E\u094D\u091C\u0940: ${issue2.origin} \u092E\u093E`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0921\u093F\u0938\u094D\u0915\u094D\u0930\u093F\u092E\u093F\u0928\u0947\u091F\u0930 \u092E\u093E\u0928: \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 ${opts}`; + } + return "\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F"; + case "invalid_element": + return `\u0905\u092E\u093E\u0928\u094D\u092F \u092E\u093E\u0928: ${issue2.origin} \u092E\u093E`; + default: + return `\u0905\u092E\u093E\u0928\u094D\u092F \u0907\u0928\u092A\u0941\u091F`; + } + }; +}, "error"); +function ne_default() { + return { + localeError: error36() + }; +} +__name(ne_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/nl.js +var error37 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "tekens", verb: "heeft" }, + file: { unit: "bytes", verb: "heeft" }, + array: { unit: "elementen", verb: "heeft" }, + set: { unit: "elementen", verb: "heeft" }, + map: { unit: "elementen", verb: "heeft" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "invoer", + email: "emailadres", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datum en tijd", + date: "ISO datum", + time: "ISO tijd", + duration: "ISO duur", + ipv4: "IPv4-adres", + ipv6: "IPv6-adres", + mac: "MAC-adres", + cidrv4: "IPv4-bereik", + cidrv6: "IPv6-bereik", + base64: "base64-gecodeerde tekst", + base64url: "base64 URL-gecodeerde tekst", + json_string: "JSON string", + e164: "E.164-nummer", + credit_card: "creditcardnummer", + currency_code: "valutacode", + iban: "IBAN", + jwt: "JWT", + template_literal: "invoer" + }; + const TypeDictionary = { + nan: "NaN", + number: "getal" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ongeldige invoer: verwacht instanceof ${issue2.expected}, ontving ${received}`; + } + return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ongeldige invoer: verwacht ${stringifyPrimitive(issue2.values[0])}`; + return `Ongeldige optie: verwacht \xE9\xE9n van ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + const longName = issue2.origin === "date" ? "laat" : issue2.origin === "string" ? "lang" : "groot"; + if (sizing) + return `Te ${longName}: verwacht dat ${issue2.origin ?? "waarde"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementen"} ${sizing.verb}`; + return `Te ${longName}: verwacht dat ${issue2.origin ?? "waarde"} ${adj}${issue2.maximum.toString()} is`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + const shortName = issue2.origin === "date" ? "vroeg" : issue2.origin === "string" ? "kort" : "klein"; + if (sizing) { + return `Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + } + return `Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} is`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Ongeldige tekst: moet met "${_issue.prefix}" beginnen`; + } + if (_issue.format === "ends_with") + return `Ongeldige tekst: moet op "${_issue.suffix}" eindigen`; + if (_issue.format === "includes") + return `Ongeldige tekst: moet "${_issue.includes}" bevatten`; + if (_issue.format === "regex") + return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`; + return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ongeldig getal: moet een veelvoud van ${issue2.divisor} zijn`; + case "unrecognized_keys": + return `Onbekende key${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ongeldige key in ${issue2.origin}`; + case "invalid_union": + return "Ongeldige invoer"; + case "invalid_element": + return `Ongeldige waarde in ${issue2.origin}`; + default: + return `Ongeldige invoer`; + } + }; +}, "error"); +function nl_default() { + return { + localeError: error37() + }; +} +__name(nl_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/nn.js +var error38 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "teikn", verb: "\xE5 ha" }, + file: { unit: "bytes", verb: "\xE5 ha" }, + array: { unit: "element", verb: "\xE5 innehalde" }, + set: { unit: "element", verb: "\xE5 innehalde" }, + map: { unit: "element", verb: "\xE5 innehalde" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "e-postadresse", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dato- og klokkeslett", + date: "ISO-dato", + time: "ISO-klokkeslett", + duration: "ISO-varigheit", + ipv4: "IPv4-adresse", + ipv6: "IPv6-adresse", + mac: "MAC-adresse", + cidrv4: "IPv4-spekter", + cidrv6: "IPv6-spekter", + base64: "base64-enkoda streng", + base64url: "base64url-enkoda streng", + json_string: "JSON-streng", + e164: "E.164-nummer", + credit_card: "kredittkortnummer", + currency_code: "valutakode", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "tal", + array: "liste" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ugyldig input: forventa instanceof ${issue2.expected}, fekk ${received}`; + } + return `Ugyldig input: forventa ${expected}, fekk ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ugyldig verdi: forventa ${stringifyPrimitive(issue2.values[0])}`; + return `Ugyldig val: forventa eitt av ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `For stor(t): forventa ${issue2.origin ?? "value"} til \xE5 ha ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element"}`; + return `For stor(t): forventa ${issue2.origin ?? "value"} til \xE5 ha ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `For lite(n): forventa ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `For lite(n): forventa ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ugyldig streng: m\xE5 starte med "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Ugyldig streng: m\xE5 slutte med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ugyldig streng: m\xE5 innehalde "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ugyldig streng: m\xE5 matche m\xF8nsteret ${_issue.pattern}`; + return `Ugyldig ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ugyldig tal: m\xE5 vere eit multiplum av ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ukjende n\xF8klar" : "Ukjend n\xF8kkel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ugyldig n\xF8kkel i ${issue2.origin}`; + case "invalid_union": + return "Ugyldig input"; + case "invalid_element": + return `Ugyldig verdi i ${issue2.origin}`; + default: + return `Ugyldig input`; + } + }; +}, "error"); +function nn_default() { + return { + localeError: error38() + }; +} +__name(nn_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/no.js +var error39 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "tegn", verb: "\xE5 ha" }, + file: { unit: "bytes", verb: "\xE5 ha" }, + array: { unit: "elementer", verb: "\xE5 inneholde" }, + set: { unit: "elementer", verb: "\xE5 inneholde" }, + map: { unit: "elementer", verb: "\xE5 inneholde" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "input", + email: "e-postadresse", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO dato- og klokkeslett", + date: "ISO-dato", + time: "ISO-klokkeslett", + duration: "ISO-varighet", + ipv4: "IPv4-adresse", + ipv6: "IPv6-adresse", + mac: "MAC-adresse", + cidrv4: "IPv4-spekter", + cidrv6: "IPv6-spekter", + base64: "base64-enkodet streng", + base64url: "base64url-enkodet streng", + json_string: "JSON-streng", + e164: "E.164-nummer", + credit_card: "kredittkortnummer", + currency_code: "valutakode", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "tall", + array: "liste" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ugyldig input: forventet instanceof ${issue2.expected}, fikk ${received}`; + } + return `Ugyldig input: forventet ${expected}, fikk ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ugyldig verdi: forventet ${stringifyPrimitive(issue2.values[0])}`; + return `Ugyldig valg: forventet en av ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `For stor(t): forventet ${issue2.origin ?? "value"} til \xE5 ha ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementer"}`; + return `For stor(t): forventet ${issue2.origin ?? "value"} til \xE5 ha ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `For lite(n): forventet ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `For lite(n): forventet ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ugyldig streng: m\xE5 starte med "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Ugyldig streng: m\xE5 ende med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ugyldig streng: m\xE5 inneholde "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ugyldig streng: m\xE5 matche m\xF8nsteret ${_issue.pattern}`; + return `Ugyldig ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ugyldig tall: m\xE5 v\xE6re et multiplum av ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ukjente n\xF8kler" : "Ukjent n\xF8kkel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ugyldig n\xF8kkel i ${issue2.origin}`; + case "invalid_union": + return "Ugyldig input"; + case "invalid_element": + return `Ugyldig verdi i ${issue2.origin}`; + default: + return `Ugyldig input`; + } + }; +}, "error"); +function no_default() { + return { + localeError: error39() + }; +} +__name(no_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ota.js +var error40 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "harf", verb: "olmal\u0131d\u0131r" }, + file: { unit: "bayt", verb: "olmal\u0131d\u0131r" }, + array: { unit: "unsur", verb: "olmal\u0131d\u0131r" }, + set: { unit: "unsur", verb: "olmal\u0131d\u0131r" }, + map: { unit: "unsur", verb: "olmal\u0131d\u0131r" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "giren", + email: "epostag\xE2h", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO heng\xE2m\u0131", + date: "ISO tarihi", + time: "ISO zaman\u0131", + duration: "ISO m\xFCddeti", + ipv4: "IPv4 ni\u015F\xE2n\u0131", + ipv6: "IPv6 ni\u015F\xE2n\u0131", + mac: "MAC ni\u015F\xE2n\u0131", + cidrv4: "IPv4 menzili", + cidrv6: "IPv6 menzili", + base64: "base64-\u015Fifreli metin", + base64url: "base64url-\u015Fifreli metin", + json_string: "JSON metin", + e164: "E.164 say\u0131s\u0131", + credit_card: "i'tib\xE2r kart\u0131 numaras\u0131", + currency_code: "para birimi kodu", + iban: "IBAN", + jwt: "JWT", + template_literal: "giren" + }; + const TypeDictionary = { + nan: "NaN", + number: "numara", + array: "saf", + null: "gayb" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `F\xE2sit giren: umulan instanceof ${issue2.expected}, al\u0131nan ${received}`; + } + return `F\xE2sit giren: umulan ${expected}, al\u0131nan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `F\xE2sit giren: umulan ${stringifyPrimitive(issue2.values[0])}`; + return `F\xE2sit tercih: m\xFBteberler ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Fazla b\xFCy\xFCk: ${issue2.origin ?? "value"}, ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elements"} sahip olmal\u0131yd\u0131.`; + return `Fazla b\xFCy\xFCk: ${issue2.origin ?? "value"}, ${adj}${issue2.maximum.toString()} olmal\u0131yd\u0131.`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Fazla k\xFC\xE7\xFCk: ${issue2.origin}, ${adj}${issue2.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`; + } + return `Fazla k\xFC\xE7\xFCk: ${issue2.origin}, ${adj}${issue2.minimum.toString()} olmal\u0131yd\u0131.`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `F\xE2sit metin: "${_issue.prefix}" ile ba\u015Flamal\u0131.`; + if (_issue.format === "ends_with") + return `F\xE2sit metin: "${_issue.suffix}" ile bitmeli.`; + if (_issue.format === "includes") + return `F\xE2sit metin: "${_issue.includes}" ihtiv\xE2 etmeli.`; + if (_issue.format === "regex") + return `F\xE2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`; + return `F\xE2sit ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `F\xE2sit say\u0131: ${issue2.divisor} kat\u0131 olmal\u0131yd\u0131.`; + case "unrecognized_keys": + return `Tan\u0131nmayan anahtar ${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} i\xE7in tan\u0131nmayan anahtar var.`; + case "invalid_union": + return "Giren tan\u0131namad\u0131."; + case "invalid_element": + return `${issue2.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`; + default: + return `K\u0131ymet tan\u0131namad\u0131.`; + } + }; +}, "error"); +function ota_default() { + return { + localeError: error40() + }; +} +__name(ota_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ps.js +var error41 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, + file: { unit: "\u0628\u0627\u06CC\u067C\u0633", verb: "\u0648\u0644\u0631\u064A" }, + array: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, + set: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" }, + map: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0648\u0631\u0648\u062F\u064A", + email: "\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9", + url: "\u06CC\u0648 \u0622\u0631 \u0627\u0644", + emoji: "\u0627\u06CC\u0645\u0648\u062C\u064A", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A", + date: "\u0646\u06D0\u067C\u0647", + time: "\u0648\u062E\u062A", + duration: "\u0645\u0648\u062F\u0647", + ipv4: "\u062F IPv4 \u067E\u062A\u0647", + ipv6: "\u062F IPv6 \u067E\u062A\u0647", + mac: "\u062F MAC \u067E\u062A\u0647", + cidrv4: "\u062F IPv4 \u0633\u0627\u062D\u0647", + cidrv6: "\u062F IPv6 \u0633\u0627\u062D\u0647", + base64: "base64-encoded \u0645\u062A\u0646", + base64url: "base64url-encoded \u0645\u062A\u0646", + json_string: "JSON \u0645\u062A\u0646", + e164: "\u062F E.164 \u0634\u0645\u06D0\u0631\u0647", + credit_card: "\u062F \u06A9\u0631\u06CC\u0689\u06CC\u067C \u06A9\u0627\u0631\u062A \u0634\u0645\u06CC\u0631\u0647", + currency_code: "\u062F \u0627\u0633\u0639\u0627\u0631\u0648 \u06A9\u0648\u0689", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0648\u0631\u0648\u062F\u064A" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0639\u062F\u062F", + array: "\u0627\u0631\u06D0" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue2.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; + } + return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`; + } + case "invalid_value": + if (issue2.values.length === 1) { + return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${stringifyPrimitive(issue2.values[0])} \u0648\u0627\u06CC`; + } + return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${joinValues(issue2.values, "|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue2.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`; + } + return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue2.origin ?? "\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} \u0648\u064A`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`; + } + return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} \u0648\u064A`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`; + } + if (_issue.format === "ends_with") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`; + } + if (_issue.format === "includes") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${_issue.includes}" \u0648\u0644\u0631\u064A`; + } + if (_issue.format === "regex") { + return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`; + } + return `${FormatDictionary[_issue.format] ?? issue2.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`; + } + case "not_multiple_of": + return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue2.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`; + case "unrecognized_keys": + return `\u0646\u0627\u0633\u0645 ${issue2.keys.length > 1 ? "\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647" : "\u06A9\u0644\u06CC\u0689"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue2.origin} \u06A9\u06D0`; + case "invalid_union": + return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; + case "invalid_element": + return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue2.origin} \u06A9\u06D0`; + default: + return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`; + } + }; +}, "error"); +function ps_default() { + return { + localeError: error41() + }; +} +__name(ps_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/pl.js +var error42 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "znak\xF3w", verb: "mie\u0107" }, + file: { unit: "bajt\xF3w", verb: "mie\u0107" }, + array: { unit: "element\xF3w", verb: "mie\u0107" }, + set: { unit: "element\xF3w", verb: "mie\u0107" }, + map: { unit: "element\xF3w", verb: "mie\u0107" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "wyra\u017Cenie", + email: "adres email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "data i godzina w formacie ISO", + date: "data w formacie ISO", + time: "godzina w formacie ISO", + duration: "czas trwania ISO", + ipv4: "adres IPv4", + ipv6: "adres IPv6", + mac: "adres MAC", + cidrv4: "zakres IPv4", + cidrv6: "zakres IPv6", + base64: "ci\u0105g znak\xF3w zakodowany w formacie base64", + base64url: "ci\u0105g znak\xF3w zakodowany w formacie base64url", + json_string: "ci\u0105g znak\xF3w w formacie JSON", + e164: "liczba E.164", + credit_card: "numer karty kredytowej", + currency_code: "kod waluty", + iban: "IBAN", + jwt: "JWT", + template_literal: "wej\u015Bcie" + }; + const TypeDictionary = { + nan: "NaN", + number: "liczba", + array: "tablica" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue2.expected}, otrzymano ${received}`; + } + return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${stringifyPrimitive(issue2.values[0])}`; + return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element\xF3w"}`; + } + return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue2.minimum.toString()} ${sizing.unit ?? "element\xF3w"}`; + } + return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue2.origin ?? "warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${_issue.includes}"`; + if (_issue.format === "regex") + return `Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`; + return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue2.divisor}`; + case "unrecognized_keys": + return `Nierozpoznane klucze${issue2.keys.length > 1 ? "s" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Nieprawid\u0142owy klucz w ${issue2.origin}`; + case "invalid_union": + return "Nieprawid\u0142owe dane wej\u015Bciowe"; + case "invalid_element": + return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue2.origin}`; + default: + return `Nieprawid\u0142owe dane wej\u015Bciowe`; + } + }; +}, "error"); +function pl_default() { + return { + localeError: error42() + }; +} +__name(pl_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/pt.js +var error43 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caracteres" }, + file: { unit: "bytes" }, + array: { unit: "elementos" }, + set: { unit: "elementos" }, + map: { unit: "entradas" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "a entrada", + email: "o endere\xE7o de e-mail", + url: "o URL", + emoji: "o emoji", + uuid: "o UUID", + uuidv4: "o UUIDv4", + uuidv6: "o UUIDv6", + nanoid: "o nanoid", + guid: "o GUID", + cuid: "o cuid", + cuid2: "o cuid2", + ulid: "o ULID", + xid: "o XID", + ksuid: "o KSUID", + datetime: "a data e hora ISO", + date: "a data ISO", + time: "a hora ISO", + duration: "a dura\xE7\xE3o ISO", + ipv4: "o endere\xE7o IPv4", + ipv6: "o endere\xE7o IPv6", + mac: "o endere\xE7o MAC", + cidrv4: "o intervalo de endere\xE7os IPv4", + cidrv6: "o intervalo de endere\xE7os IPv6", + base64: "o texto codificado em base64", + base64url: "o texto codificado em base64url", + json_string: "o texto JSON", + e164: "o n\xFAmero E.164", + credit_card: "o n\xFAmero de cart\xE3o de cr\xE9dito", + currency_code: "o c\xF3digo de moeda", + iban: "o IBAN", + jwt: "o JWT", + template_literal: "a entrada" + }; + const Gender = { + masculine: { definite: "o", indefinite: "um" }, + feminine: { definite: "a", indefinite: "uma" } + }; + const TypeDictionary = { + string: { name: "texto", articles: Gender.masculine }, + number: { name: "n\xFAmero", articles: Gender.masculine }, + int: { name: "n\xFAmero inteiro", articles: Gender.masculine }, + boolean: { name: "valor booleano", articles: Gender.masculine }, + bigint: { name: "n\xFAmero bigint", articles: Gender.masculine }, + symbol: { name: "s\xEDmbolo", articles: Gender.masculine }, + undefined: { name: 'valor "undefined"', articles: Gender.masculine }, + null: { name: 'valor "nulo"', articles: Gender.masculine }, + never: { name: 'valor "never"', articles: Gender.masculine }, + void: { name: 'valor "void"', articles: Gender.masculine }, + date: { name: "data", articles: Gender.feminine }, + array: { name: "vetor", articles: Gender.masculine }, + object: { name: "objeto", articles: Gender.masculine }, + tuple: { name: "tuplo", articles: Gender.masculine }, + record: { name: "registo", articles: Gender.masculine }, + map: { name: "mapa", articles: Gender.masculine }, + set: { name: "conjunto", articles: Gender.masculine }, + file: { name: "ficheiro", articles: Gender.masculine }, + nonoptional: { name: "valor n\xE3o opcional", articles: Gender.masculine }, + nan: { name: 'valor "NaN"', articles: Gender.masculine }, + // Compatibility: "nan" -> "NaN" for display + function: { name: "fun\xE7\xE3o", articles: Gender.feminine } + }; + function translateOriginWithArticle(type, articleType) { + const translatedValue = TypeDictionary[type] ?? { name: `valor "${type}"`, articles: Gender.masculine }; + return `${translatedValue.articles[articleType]} ${translatedValue.name}`; + } + __name(translateOriginWithArticle, "translateOriginWithArticle"); + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = translateOriginWithArticle(issue2.expected, "indefinite"); + const receivedType = parsedType(issue2.input); + const received = translateOriginWithArticle(receivedType, "indefinite"); + return `Entrada inv\xE1lida: esperava ${expected}, recebeu ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entrada inv\xE1lida: esperava ${stringifyPrimitive(issue2.values[0])}`; + return `Op\xE7\xE3o inv\xE1lida: esperava uma das seguintes op\xE7\xF5es: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Demasiado grande: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} tivesse ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "elementos"}`; + return `Demasiado grande: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} fosse ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Demasiado pequeno: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} tivesse ${adj} ${issue2.minimum.toString()} ${sizing.unit ?? "elementos"}`; + } + return `Demasiado pequeno: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} fosse ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Texto inv\xE1lido: deve come\xE7ar por "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Texto inv\xE1lido: deve terminar em "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Texto inv\xE1lido: deve incluir "${_issue.includes}"`; + if (_issue.format === "regex") + return `Texto inv\xE1lido: deve corresponder ao padr\xE3o ${_issue.pattern}`; + return `Formato d${FormatDictionary[_issue.format] ?? issue2.format} inv\xE1lido`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${issue2.divisor}`; + case "unrecognized_keys": { + const plural2 = issue2.keys.length > 1 ? "s" : ""; + return `Chave${plural2} inv\xE1lida${plural2}: ${joinValues(issue2.keys, ", ")}`; + } + case "invalid_key": + return `Entrada inv\xE1lida n${translateOriginWithArticle(issue2.origin, "definite")}`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `Valor de discrimina\xE7\xE3o inv\xE1lido. Esperava ${opts}`; + } + return "Entrada inv\xE1lida"; + case "invalid_element": + return `Entrada inv\xE1lida n${translateOriginWithArticle(issue2.origin, "definite")}`; + default: + return `Entrada inv\xE1lida`; + } + }; +}, "error"); +function pt_default() { + return { + localeError: error43() + }; +} +__name(pt_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/pt-BR.js +var error44 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caracteres" }, + file: { unit: "bytes" }, + array: { unit: "elementos" }, + set: { unit: "elementos" }, + map: { unit: "entradas" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "a entrada", + email: "o endere\xE7o de e-mail", + url: "o URL", + emoji: "o emoji", + uuid: "o UUID", + uuidv4: "o UUIDv4", + uuidv6: "o UUIDv6", + nanoid: "o nanoid", + guid: "o GUID", + cuid: "o cuid", + cuid2: "o cuid2", + ulid: "o ULID", + xid: "o XID", + ksuid: "o KSUID", + datetime: "a data e hora ISO", + date: "a data ISO", + time: "a hora ISO", + duration: "a dura\xE7\xE3o ISO", + ipv4: "o endere\xE7o IPv4", + ipv6: "o endere\xE7o IPv6", + mac: "o endere\xE7o MAC", + cidrv4: "a faixa de endere\xE7os IPv4", + cidrv6: "a faixa de endere\xE7os IPv6", + base64: "o texto codificado em base64", + base64url: "o texto codificado em base64url", + json_string: "o texto JSON", + e164: "o n\xFAmero E.164", + credit_card: "o n\xFAmero de cart\xE3o de cr\xE9dito", + currency_code: "o c\xF3digo de moeda", + iban: "o IBAN", + jwt: "o JWT", + template_literal: "a entrada" + }; + const Gender = { + masculine: { definite: "o", indefinite: "um" }, + feminine: { definite: "a", indefinite: "uma" } + }; + const TypeDictionary = { + string: { name: "texto", articles: Gender.masculine }, + number: { name: "n\xFAmero", articles: Gender.masculine }, + int: { name: "n\xFAmero inteiro", articles: Gender.masculine }, + boolean: { name: "valor booleano", articles: Gender.masculine }, + bigint: { name: "n\xFAmero bigint", articles: Gender.masculine }, + symbol: { name: "s\xEDmbolo", articles: Gender.masculine }, + undefined: { name: 'valor "undefined"', articles: Gender.masculine }, + null: { name: 'valor "nulo"', articles: Gender.masculine }, + never: { name: 'valor "never"', articles: Gender.masculine }, + void: { name: 'valor "void"', articles: Gender.masculine }, + date: { name: "data", articles: Gender.feminine }, + array: { name: "vetor", articles: Gender.masculine }, + object: { name: "objeto", articles: Gender.masculine }, + tuple: { name: "tupla", articles: Gender.feminine }, + record: { name: "registro", articles: Gender.masculine }, + map: { name: "mapa", articles: Gender.masculine }, + set: { name: "conjunto", articles: Gender.masculine }, + file: { name: "arquivo", articles: Gender.masculine }, + nonoptional: { name: "valor n\xE3o opcional", articles: Gender.masculine }, + nan: { name: 'valor "NaN"', articles: Gender.masculine }, + // Compatibility: "nan" -> "NaN" for display + function: { name: "fun\xE7\xE3o", articles: Gender.feminine } + }; + function translateOriginWithArticle(type, articleType) { + const translatedValue = TypeDictionary[type] ?? { name: `valor "${type}"`, articles: Gender.masculine }; + return `${translatedValue.articles[articleType]} ${translatedValue.name}`; + } + __name(translateOriginWithArticle, "translateOriginWithArticle"); + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = translateOriginWithArticle(issue2.expected, "indefinite"); + const receivedType = parsedType(issue2.input); + const received = translateOriginWithArticle(receivedType, "indefinite"); + return `Entrada inv\xE1lida: esperava ${expected}, recebeu ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Entrada inv\xE1lida: esperava ${stringifyPrimitive(issue2.values[0])}`; + return `Op\xE7\xE3o inv\xE1lida: esperava uma das seguintes op\xE7\xF5es: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Grande demais: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} tivesse ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "elementos"}`; + return `Grande demais: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} fosse ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Pequeno demais: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} tivesse ${adj} ${issue2.minimum.toString()} ${sizing.unit ?? "elementos"}`; + } + return `Pequeno demais: esperava que ${translateOriginWithArticle(issue2.origin, "definite")} fosse ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Texto inv\xE1lido: deve come\xE7ar com "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Texto inv\xE1lido: deve terminar com "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Texto inv\xE1lido: deve incluir "${_issue.includes}"`; + if (_issue.format === "regex") + return `Texto inv\xE1lido: deve corresponder ao padr\xE3o ${_issue.pattern}`; + return `Formato d${FormatDictionary[_issue.format] ?? issue2.format} inv\xE1lido`; + } + case "not_multiple_of": + return `N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${issue2.divisor}`; + case "unrecognized_keys": { + const plural2 = issue2.keys.length > 1 ? "s" : ""; + return `Chave${plural2} inv\xE1lida${plural2}: ${joinValues(issue2.keys, ", ")}`; + } + case "invalid_key": + return `Entrada inv\xE1lida n${translateOriginWithArticle(issue2.origin, "definite")}`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `Valor de discrimina\xE7\xE3o inv\xE1lido. Esperava ${opts}`; + } + return "Entrada inv\xE1lida"; + case "invalid_element": + return `Entrada inv\xE1lida n${translateOriginWithArticle(issue2.origin, "definite")}`; + default: + return `Entrada inv\xE1lida`; + } + }; +}, "error"); +function pt_BR_default() { + return { + localeError: error44() + }; +} +__name(pt_BR_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ro.js +var error45 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "caractere", verb: "s\u0103 aib\u0103" }, + file: { unit: "octe\u021Bi", verb: "s\u0103 aib\u0103" }, + array: { unit: "elemente", verb: "s\u0103 aib\u0103" }, + set: { unit: "elemente", verb: "s\u0103 aib\u0103" }, + map: { unit: "intr\u0103ri", verb: "s\u0103 aib\u0103" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "intrare", + email: "adres\u0103 de email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "dat\u0103 \u0219i or\u0103 ISO", + date: "dat\u0103 ISO", + time: "or\u0103 ISO", + duration: "durat\u0103 ISO", + ipv4: "adres\u0103 IPv4", + ipv6: "adres\u0103 IPv6", + mac: "adres\u0103 MAC", + cidrv4: "interval IPv4", + cidrv6: "interval IPv6", + base64: "\u0219ir codat base64", + base64url: "\u0219ir codat base64url", + json_string: "\u0219ir JSON", + e164: "num\u0103r E.164", + credit_card: "num\u0103r de card de credit", + currency_code: "cod valutar", + iban: "IBAN", + jwt: "JWT", + template_literal: "intrare" + }; + const TypeDictionary = { + nan: "NaN", + string: "\u0219ir", + number: "num\u0103r", + boolean: "boolean", + function: "func\u021Bie", + array: "matrice", + object: "obiect", + undefined: "nedefinit", + symbol: "simbol", + bigint: "num\u0103r mare", + void: "void", + never: "never", + map: "hart\u0103", + set: "set" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `Intrare invalid\u0103: a\u0219teptat ${expected}, primit ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Intrare invalid\u0103: a\u0219teptat ${stringifyPrimitive(issue2.values[0])}`; + return `Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Prea mare: a\u0219teptat ca ${issue2.origin ?? "valoarea"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elemente"}`; + return `Prea mare: a\u0219teptat ca ${issue2.origin ?? "valoarea"} s\u0103 fie ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Prea mic: a\u0219teptat ca ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Prea mic: a\u0219teptat ca ${issue2.origin} s\u0103 fie ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u0218ir invalid: trebuie s\u0103 se termine cu "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u0218ir invalid: trebuie s\u0103 includ\u0103 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${_issue.pattern}`; + return `Format invalid: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Num\u0103r invalid: trebuie s\u0103 fie multiplu de ${issue2.divisor}`; + case "unrecognized_keys": + return `Chei nerecunoscute: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Cheie invalid\u0103 \xEEn ${issue2.origin}`; + case "invalid_union": + return "Intrare invalid\u0103"; + case "invalid_element": + return `Valoare invalid\u0103 \xEEn ${issue2.origin}`; + default: + return `Intrare invalid\u0103`; + } + }; +}, "error"); +function ro_default() { + return { + localeError: error45() + }; +} +__name(ro_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ru.js +function getRussianPlural(count, one, few, many) { + const absCount = Math.abs(count); + const lastDigit = absCount % 10; + const lastTwoDigits = absCount % 100; + if (lastTwoDigits >= 11 && lastTwoDigits <= 19) { + return many; + } + if (lastDigit === 1) { + return one; + } + if (lastDigit >= 2 && lastDigit <= 4) { + return few; + } + return many; +} +__name(getRussianPlural, "getRussianPlural"); +var error46 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { + unit: { + one: "\u0441\u0438\u043C\u0432\u043E\u043B", + few: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", + many: "\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + file: { + unit: { + one: "\u0431\u0430\u0439\u0442", + few: "\u0431\u0430\u0439\u0442\u0430", + many: "\u0431\u0430\u0439\u0442" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + array: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + set: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + }, + map: { + unit: { + one: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", + few: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430", + many: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432" + }, + verb: "\u0438\u043C\u0435\u0442\u044C" + } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0432\u0432\u043E\u0434", + email: "email \u0430\u0434\u0440\u0435\u0441", + url: "URL", + emoji: "\u044D\u043C\u043E\u0434\u0437\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F", + date: "ISO \u0434\u0430\u0442\u0430", + time: "ISO \u0432\u0440\u0435\u043C\u044F", + duration: "ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C", + ipv4: "IPv4 \u0430\u0434\u0440\u0435\u0441", + ipv6: "IPv6 \u0430\u0434\u0440\u0435\u0441", + mac: "MAC \u0430\u0434\u0440\u0435\u0441", + cidrv4: "IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + cidrv6: "IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", + base64: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64", + base64url: "\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url", + json_string: "JSON \u0441\u0442\u0440\u043E\u043A\u0430", + e164: "\u043D\u043E\u043C\u0435\u0440 E.164", + credit_card: "\u043D\u043E\u043C\u0435\u0440 \u043A\u0440\u0435\u0434\u0438\u0442\u043D\u043E\u0439 \u043A\u0430\u0440\u0442\u044B", + currency_code: "\u043A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u044B", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0432\u0432\u043E\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0447\u0438\u0441\u043B\u043E", + array: "\u043C\u0430\u0441\u0441\u0438\u0432" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue2.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; + } + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const maxValue = Number(issue2.maximum); + const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue2.maximum.toString()} ${unit}`; + } + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + const minValue = Number(issue2.minimum); + const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many); + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue2.minimum.toString()} ${unit}`; + } + return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue2.keys.length > 1 ? "\u044B\u0435" : "\u044B\u0439"} \u043A\u043B\u044E\u0447${issue2.keys.length > 1 ? "\u0438" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"; + case "invalid_element": + return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue2.origin}`; + default: + return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`; + } + }; +}, "error"); +function ru_default() { + return { + localeError: error46() + }; +} +__name(ru_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/sk.js +var error47 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "znakov", verb: "ma\u0165" }, + file: { unit: "bajtov", verb: "ma\u0165" }, + array: { unit: "prvkov", verb: "ma\u0165" }, + set: { unit: "prvkov", verb: "ma\u0165" }, + map: { unit: "polo\u017Eiek", verb: "ma\u0165" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "regul\xE1rny v\xFDraz", + email: "e-mailov\xE1 adresa", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "d\xE1tum a \u010Das vo form\xE1te ISO", + date: "d\xE1tum vo form\xE1te ISO", + time: "\u010Das vo form\xE1te ISO", + duration: "doba trvania ISO", + ipv4: "IPv4 adresa", + ipv6: "IPv6 adresa", + mac: "MAC adresa", + cidrv4: "rozsah IPv4", + cidrv6: "rozsah IPv6", + base64: "re\u0165azec zak\xF3dovan\xFD vo form\xE1te base64", + base64url: "re\u0165azec zak\xF3dovan\xFD vo form\xE1te base64url", + json_string: "re\u0165azec vo form\xE1te JSON", + e164: "\u010D\xEDslo E.164", + credit_card: "\u010D\xEDslo kreditnej karty", + currency_code: "k\xF3d meny", + iban: "IBAN", + jwt: "JWT", + template_literal: "vstup" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u010D\xEDslo", + string: "re\u0165azec", + function: "funkcia", + array: "pole" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Neplatn\xFD vstup: o\u010Dak\xE1van\xE9 instanceof ${issue2.expected}, obdr\u017Ean\xE9 ${received}`; + } + return `Neplatn\xFD vstup: o\u010Dak\xE1van\xE9 ${expected}, obdr\u017Ean\xE9 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Neplatn\xFD vstup: o\u010Dak\xE1van\xE9 ${stringifyPrimitive(issue2.values[0])}`; + return `Neplatn\xFD vstup: o\u010Dak\xE1van\xE1 jedna z hodn\xF4t ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Hodnota je pr\xEDli\u0161 ve\u013Ek\xE1: ${issue2.origin ?? "hodnota"} mus\xED ma\u0165 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "prvkov"}`; + } + return `Hodnota je pr\xEDli\u0161 ve\u013Ek\xE1: ${issue2.origin ?? "hodnota"} mus\xED by\u0165 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Hodnota je pr\xEDli\u0161 mal\xE1: ${issue2.origin ?? "hodnota"} mus\xED ma\u0165 ${adj}${issue2.minimum.toString()} ${sizing.unit ?? "prvkov"}`; + } + return `Hodnota je pr\xEDli\u0161 mal\xE1: ${issue2.origin ?? "hodnota"} mus\xED by\u0165 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Neplatn\xFD re\u0165azec: mus\xED za\u010D\xEDna\u0165 na "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Neplatn\xFD re\u0165azec: mus\xED kon\u010Di\u0165 na "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Neplatn\xFD re\u0165azec: mus\xED obsahova\u0165 "${_issue.includes}"`; + if (_issue.format === "regex") + return `Neplatn\xFD re\u0165azec: mus\xED zodpoveda\u0165 vzoru ${_issue.pattern}`; + return `Neplatn\xFD form\xE1t ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Neplatn\xE9 \u010D\xEDslo: mus\xED by\u0165 n\xE1sobkom ${issue2.divisor}`; + case "unrecognized_keys": + return `Nezn\xE1me kl\xFA\u010De: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Neplatn\xFD kl\xFA\u010D v ${issue2.origin}`; + case "invalid_union": + return "Neplatn\xFD vstup"; + case "invalid_element": + return `Neplatn\xE1 hodnota v ${issue2.origin}`; + default: + return `Neplatn\xFD vstup`; + } + }; +}, "error"); +function sk_default() { + return { + localeError: error47() + }; +} +__name(sk_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/sl.js +var error48 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "znakov", verb: "imeti" }, + file: { unit: "bajtov", verb: "imeti" }, + array: { unit: "elementov", verb: "imeti" }, + set: { unit: "elementov", verb: "imeti" }, + map: { unit: "elementov", verb: "imeti" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "vnos", + email: "e-po\u0161tni naslov", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO datum in \u010Das", + date: "ISO datum", + time: "ISO \u010Das", + duration: "ISO trajanje", + ipv4: "IPv4 naslov", + ipv6: "IPv6 naslov", + mac: "MAC naslov", + cidrv4: "obseg IPv4", + cidrv6: "obseg IPv6", + base64: "base64 kodiran niz", + base64url: "base64url kodiran niz", + json_string: "JSON niz", + e164: "E.164 \u0161tevilka", + credit_card: "\u0161tevilka kreditne kartice", + currency_code: "koda valute", + iban: "IBAN", + jwt: "JWT", + template_literal: "vnos" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0161tevilo", + array: "tabela" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue2.expected}, prejeto ${received}`; + } + return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Neveljaven vnos: pri\u010Dakovano ${stringifyPrimitive(issue2.values[0])}`; + return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Preveliko: pri\u010Dakovano, da bo ${issue2.origin ?? "vrednost"} imelo ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "elementov"}`; + return `Preveliko: pri\u010Dakovano, da bo ${issue2.origin ?? "vrednost"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Premajhno: pri\u010Dakovano, da bo ${issue2.origin} imelo ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Premajhno: pri\u010Dakovano, da bo ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Neveljaven niz: mora se za\u010Deti z "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Neveljaven niz: mora se kon\u010Dati z "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Neveljaven niz: mora vsebovati "${_issue.includes}"`; + if (_issue.format === "regex") + return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`; + return `Neveljaven ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue2.divisor}`; + case "unrecognized_keys": + return `Neprepoznan${issue2.keys.length > 1 ? "i klju\u010Di" : " klju\u010D"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Neveljaven klju\u010D v ${issue2.origin}`; + case "invalid_union": + return "Neveljaven vnos"; + case "invalid_element": + return `Neveljavna vrednost v ${issue2.origin}`; + default: + return "Neveljaven vnos"; + } + }; +}, "error"); +function sl_default() { + return { + localeError: error48() + }; +} +__name(sl_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/sv.js +var error49 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "tecken", verb: "att ha" }, + file: { unit: "bytes", verb: "att ha" }, + array: { unit: "objekt", verb: "att inneh\xE5lla" }, + set: { unit: "objekt", verb: "att inneh\xE5lla" }, + map: { unit: "objekt", verb: "att inneh\xE5lla" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "regulj\xE4rt uttryck", + email: "e-postadress", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO-datum och tid", + date: "ISO-datum", + time: "ISO-tid", + duration: "ISO-varaktighet", + ipv4: "IPv4-adress", + ipv6: "IPv6-adress", + mac: "MAC-adress", + cidrv4: "IPv4-spektrum", + cidrv6: "IPv6-spektrum", + base64: "base64-kodad str\xE4ng", + base64url: "base64url-kodad str\xE4ng", + json_string: "JSON-str\xE4ng", + e164: "E.164-nummer", + credit_card: "kreditkortsnummer", + currency_code: "valutakod", + iban: "IBAN", + jwt: "JWT", + template_literal: "mall-literal" + }; + const TypeDictionary = { + nan: "NaN", + number: "antal", + array: "lista" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${issue2.expected}, fick ${received}`; + } + return `Ogiltig inmatning: f\xF6rv\xE4ntat ${expected}, fick ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ogiltig inmatning: f\xF6rv\xE4ntat ${stringifyPrimitive(issue2.values[0])}`; + return `Ogiltigt val: f\xF6rv\xE4ntade en av ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `F\xF6r stor(t): f\xF6rv\xE4ntade ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "element"}`; + } + return `F\xF6r stor(t): f\xF6rv\xE4ntat ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `F\xF6r lite(t): f\xF6rv\xE4ntade ${issue2.origin ?? "v\xE4rdet"} att ha ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `Ogiltig str\xE4ng: m\xE5ste sluta med "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${_issue.includes}"`; + if (_issue.format === "regex") + return `Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${_issue.pattern}"`; + return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ogiltigt tal: m\xE5ste vara en multipel av ${issue2.divisor}`; + case "unrecognized_keys": + return `${issue2.keys.length > 1 ? "Ok\xE4nda nycklar" : "Ok\xE4nd nyckel"}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Ogiltig nyckel i ${issue2.origin ?? "v\xE4rdet"}`; + case "invalid_union": + return "Ogiltig input"; + case "invalid_element": + return `Ogiltigt v\xE4rde i ${issue2.origin ?? "v\xE4rdet"}`; + default: + return `Ogiltig input`; + } + }; +}, "error"); +function sv_default() { + return { + localeError: error49() + }; +} +__name(sv_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ta.js +var error50 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + file: { unit: "\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + array: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + set: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" }, + map: { unit: "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1", + email: "\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", + date: "ISO \u0BA4\u0BC7\u0BA4\u0BBF", + time: "ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD", + duration: "ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1", + ipv4: "IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + ipv6: "IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + mac: "MAC \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF", + cidrv4: "IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", + cidrv6: "IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1", + base64: "base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD", + base64url: "base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD", + json_string: "JSON \u0B9A\u0BB0\u0BAE\u0BCD", + e164: "E.164 \u0B8E\u0BA3\u0BCD", + credit_card: "\u0B95\u0B9F\u0BA9\u0BCD \u0B85\u0B9F\u0BCD\u0B9F\u0BC8 \u0B8E\u0BA3\u0BCD", + currency_code: "\u0BA8\u0BBE\u0BA3\u0BAF\u0B95\u0BCD \u0B95\u0BC1\u0BB1\u0BBF\u0BAF\u0BC0\u0B9F\u0BC1", + iban: "IBAN", + jwt: "JWT", + template_literal: "input" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0B8E\u0BA3\u0BCD", + array: "\u0B85\u0BA3\u0BBF", + null: "\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue2.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; + } + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${joinValues(issue2.values, "|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin ?? "\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue2.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin} ${adj}${issue2.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + if (_issue.format === "ends_with") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + if (_issue.format === "includes") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + if (_issue.format === "regex") + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue2.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; + case "unrecognized_keys": + return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue2.keys.length > 1 ? "\u0B95\u0BB3\u0BCD" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`; + case "invalid_union": + return "\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"; + case "invalid_element": + return `${issue2.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`; + default: + return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`; + } + }; +}, "error"); +function ta_default() { + return { + localeError: error50() + }; +} +__name(ta_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/tg.js +var error51 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0430\u043B\u043E\u043C\u0430\u0442", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" }, + file: { unit: "\u0431\u0430\u0439\u0442", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" }, + array: { unit: "\u0443\u043D\u0441\u0443\u0440", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" }, + set: { unit: "\u0443\u043D\u0441\u0443\u0440", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" }, + map: { unit: "\u0441\u0430\u0431\u0442", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0432\u0443\u0440\u0443\u0434", + email: "\u0441\u0443\u0440\u043E\u0493\u0430\u0438 email", + url: "URL", + emoji: "\u044D\u043C\u043E\u04B7\u0438", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0441\u0430\u043D\u0430\u0432\u0443 \u0432\u0430\u049B\u0442\u0438 ISO", + date: "\u0441\u0430\u043D\u0430\u0438 ISO", + time: "\u0432\u0430\u049B\u0442\u0438 ISO", + duration: "\u0434\u0430\u0432\u043E\u043C\u043D\u043E\u043A\u0438\u0438 ISO", + ipv4: "\u0441\u0443\u0440\u043E\u0493\u0430\u0438 IPv4", + ipv6: "\u0441\u0443\u0440\u043E\u0493\u0430\u0438 IPv6", + mac: "\u0441\u0443\u0440\u043E\u0493\u0430\u0438 MAC", + cidrv4: "\u043C\u0430\u04B3\u0434\u0443\u0434\u0430\u0438 IPv4", + cidrv6: "\u043C\u0430\u04B3\u0434\u0443\u0434\u0430\u0438 IPv6", + base64: "\u0441\u0430\u0442\u0440\u0438 \u0434\u0430\u0440 \u0444\u043E\u0440\u043C\u0430\u0442\u0438 base64", + base64url: "\u0441\u0430\u0442\u0440\u0438 \u0434\u0430\u0440 \u0444\u043E\u0440\u043C\u0430\u0442\u0438 base64url", + json_string: "\u0441\u0430\u0442\u0440\u0438 JSON", + e164: "\u0440\u0430\u049B\u0430\u043C\u0438 E.164", + credit_card: "\u0440\u0430\u049B\u0430\u043C\u0438 \u043A\u043E\u0440\u0442\u0438 \u043A\u0440\u0435\u0434\u0438\u0442\u04E3", + currency_code: "\u0440\u0430\u043C\u0437\u0438 \u0430\u0441\u044A\u043E\u0440", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0432\u0443\u0440\u0443\u0434" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0440\u0430\u049B\u0430\u043C", + string: "\u0441\u0430\u0442\u0440", + array: "\u043C\u0430\u0441\u0441\u0438\u0432", + object: "\u043E\u0431\u044A\u0435\u043A\u0442", + date: "\u0441\u0430\u043D\u0430" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `\u0412\u0443\u0440\u0443\u0434\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: ${expected} \u0438\u043D\u0442\u0438\u0437\u043E\u0440 \u043C\u0435\u0440\u0430\u0444\u0442, ${received} \u0433\u0438\u0440\u0438\u0444\u0442\u0430 \u0448\u0443\u0434`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0412\u0443\u0440\u0443\u0434\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: ${stringifyPrimitive(issue2.values[0])} \u0438\u043D\u0442\u0438\u0437\u043E\u0440 \u043C\u0435\u0440\u0430\u0444\u0442`; + return `\u0418\u043D\u0442\u0438\u0445\u043E\u0431\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: \u044F\u043A\u0435 \u0430\u0437 ${joinValues(issue2.values, "|")} \u0438\u043D\u0442\u0438\u0437\u043E\u0440 \u043C\u0435\u0440\u0430\u0444\u0442`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0425\u0435\u043B\u0435 \u043A\u0430\u043B\u043E\u043D: ${issue2.origin ?? "\u049B\u0438\u043C\u0430\u0442"} \u0431\u043E\u044F\u0434 ${adj}${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`; + return `\u0425\u0435\u043B\u0435 \u043A\u0430\u043B\u043E\u043D: ${issue2.origin ?? "\u049B\u0438\u043C\u0430\u0442"} \u0431\u043E\u044F\u0434 ${adj}${issue2.maximum.toString()} \u0431\u043E\u0448\u0430\u0434`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0425\u0435\u043B\u0435 \u0445\u0443\u0440\u0434: ${issue2.origin} \u0431\u043E\u044F\u0434 ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + return `\u0425\u0435\u043B\u0435 \u0445\u0443\u0440\u0434: ${issue2.origin} \u0431\u043E\u044F\u0434 ${adj}${issue2.minimum.toString()} \u0431\u043E\u0448\u0430\u0434`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u0421\u0430\u0442\u0440\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: \u0431\u043E\u044F\u0434 \u0431\u043E "${_issue.prefix}" \u043E\u0493\u043E\u0437 \u0448\u0430\u0432\u0430\u0434`; + if (_issue.format === "ends_with") + return `\u0421\u0430\u0442\u0440\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: \u0431\u043E\u044F\u0434 \u0431\u043E "${_issue.suffix}" \u0430\u043D\u04B7\u043E\u043C \u0451\u0431\u0430\u0434`; + if (_issue.format === "includes") + return `\u0421\u0430\u0442\u0440\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: \u0431\u043E\u044F\u0434 "${_issue.includes}"-\u0440\u043E \u0434\u0430\u0440 \u0431\u0430\u0440 \u0433\u0438\u0440\u0430\u0434`; + if (_issue.format === "regex") + return `\u0421\u0430\u0442\u0440\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: \u0431\u043E\u044F\u0434 \u0431\u0430 \u043D\u0430\u043C\u0443\u043D\u0430\u0438 ${_issue.pattern} \u043C\u0443\u0432\u043E\u0444\u0438\u049B\u0430\u0442 \u043A\u0443\u043D\u0430\u0434`; + return `${FormatDictionary[_issue.format] ?? issue2.format}-\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442`; + } + case "not_multiple_of": + return `\u0420\u0430\u049B\u0430\u043C\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442: \u0431\u043E\u044F\u0434 \u0431\u0430 ${issue2.divisor} \u0431\u0435 \u0431\u0430\u049B\u0438\u044F \u0442\u0430\u049B\u0441\u0438\u043C \u0448\u0430\u0432\u0430\u0434`; + case "unrecognized_keys": + return `\u041A\u0430\u043B\u0438\u0434${issue2.keys.length > 1 ? "\u04B3\u043E\u0438" : "\u0438"} \u043D\u043E\u043C\u0430\u044A\u043B\u0443\u043C: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041A\u0430\u043B\u0438\u0434\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442 \u0434\u0430\u0440 ${issue2.origin}`; + case "invalid_union": + if (issue2.options && Array.isArray(issue2.options) && issue2.options.length > 0) { + const opts = issue2.options.map((o3) => `'${o3}'`).join(" | "); + return `\u049A\u0438\u043C\u0430\u0442\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442\u0438 \u0434\u0438\u0441\u043A\u0440\u0438\u043C\u0438\u043D\u0430\u0442\u043E\u0440: ${opts} \u0438\u043D\u0442\u0438\u0437\u043E\u0440 \u043C\u0435\u0440\u0430\u0444\u0442`; + } + return "\u0412\u0443\u0440\u0443\u0434\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442"; + case "invalid_element": + return `\u049A\u0438\u043C\u0430\u0442\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442 \u0434\u0430\u0440 ${issue2.origin}`; + default: + return `\u0412\u0443\u0440\u0443\u0434\u0438 \u043D\u043E\u0434\u0443\u0440\u0443\u0441\u0442`; + } + }; +}, "error"); +function tg_default() { + return { + localeError: error51() + }; +} +__name(tg_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/th.js +var error52 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + file: { unit: "\u0E44\u0E1A\u0E15\u0E4C", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + array: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + set: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" }, + map: { unit: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19", + email: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25", + url: "URL", + emoji: "\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", + date: "\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO", + time: "\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", + duration: "\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO", + ipv4: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4", + ipv6: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6", + mac: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 MAC", + cidrv4: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4", + cidrv6: "\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6", + base64: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64", + base64url: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL", + json_string: "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON", + e164: "\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)", + credit_card: "\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E1A\u0E31\u0E15\u0E23\u0E40\u0E04\u0E23\u0E14\u0E34\u0E15", + currency_code: "\u0E23\u0E2B\u0E31\u0E2A\u0E2A\u0E01\u0E38\u0E25\u0E40\u0E07\u0E34\u0E19", + iban: "IBAN", + jwt: "\u0E42\u0E17\u0E40\u0E04\u0E19 JWT", + template_literal: "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02", + array: "\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)", + null: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue2.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; + } + return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${stringifyPrimitive(issue2.values[0])}`; + return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19" : "\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`; + return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin ?? "\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? "\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22" : "\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${_issue.prefix}"`; + } + if (_issue.format === "ends_with") + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${_issue.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`; + if (_issue.format === "regex") + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`; + return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue2.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`; + case "unrecognized_keys": + return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue2.origin}`; + case "invalid_union": + return "\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49"; + case "invalid_element": + return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue2.origin}`; + default: + return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`; + } + }; +}, "error"); +function th_default() { + return { + localeError: error52() + }; +} +__name(th_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/tk.js +var error53 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "simwol", verb: "bolmaly" }, + file: { unit: "ba\xFDt", verb: "bolmaly" }, + array: { unit: "elementler", verb: "bolmaly" }, + set: { unit: "elementler", verb: "bolmaly" }, + map: { unit: "elementler", verb: "bolmaly" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "giri\u015F", + email: "e-po\xE7ta salgysy", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO sene we wagt", + date: "ISO sene", + time: "ISO wagt", + duration: "ISO wagt aralygy", + ipv4: "IPv4 salgysy", + ipv6: "IPv6 salgysy", + mac: "MAC salgysy", + cidrv4: "IPv4 aralygy", + cidrv6: "IPv6 aralygy", + base64: "base64 bilen \u015Fifrlenen setir", + base64url: "base64url bilen \u015Fifrlenen setir", + json_string: "JSON setiri", + e164: "E.164 nomeri", + credit_card: "kredit kartyny\u0148 nomeri", + currency_code: "wal\xFDuta kody", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u015Fablon" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + return `N\xE4dogry baha: gara\u015Fylan ${expected} \xFDerine ${received} alyndy`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `N\xE4dogry baha: ${stringifyPrimitive(issue2.values[0])} bolmaly`; + return `N\xE4dogry sa\xFDlaw: a\u015Fakdakylardan biri bolmaly: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Has uly: gara\u015Fyl\xFDan ${issue2.origin ?? "baha"} ${adj} ${issue2.maximum.toString()} ${sizing.unit ?? "element"}`; + return `Has uly: gara\u015Fyl\xFDan ${issue2.origin ?? "baha"} ${adj} ${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Has ki\xE7i: gara\u015Fyl\xFDan ${issue2.origin} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`; + return `Has ki\xE7i: gara\u015Fyl\xFDan ${issue2.origin} ${adj} ${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `N\xE4dogry setir: "${_issue.prefix}" bilen ba\u015Flamaly`; + if (_issue.format === "ends_with") + return `N\xE4dogry setir: "${_issue.suffix}" bilen gutarmaly`; + if (_issue.format === "includes") + return `N\xE4dogry setir: "${_issue.includes}" saklamaly`; + if (_issue.format === "regex") + return `N\xE4dogry setir: ${_issue.pattern} nusga la\xFDyk bolmaly`; + return `N\xE4dogry ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\xE4dogry san: ${issue2.divisor} bilen galyndysyz b\xF6l\xFCnmeli`; + case "unrecognized_keys": + return `Tanalma\xFDan a\xE7ar${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} i\xE7inde n\xE4dogry a\xE7ar`; + case "invalid_union": + return "N\xE4dogry baha"; + case "invalid_element": + return `${issue2.origin} i\xE7inde n\xE4dogry baha`; + default: + return `N\xE4dogry baha`; + } + }; +}, "error"); +function tk_default() { + return { + localeError: error53() + }; +} +__name(tk_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/tr.js +var error54 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "karakter", verb: "olmal\u0131" }, + file: { unit: "bayt", verb: "olmal\u0131" }, + array: { unit: "\xF6\u011Fe", verb: "olmal\u0131" }, + set: { unit: "\xF6\u011Fe", verb: "olmal\u0131" }, + map: { unit: "\xF6\u011Fe", verb: "olmal\u0131" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "girdi", + email: "e-posta adresi", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO tarih ve saat", + date: "ISO tarih", + time: "ISO saat", + duration: "ISO s\xFCre", + ipv4: "IPv4 adresi", + ipv6: "IPv6 adresi", + mac: "MAC adresi", + cidrv4: "IPv4 aral\u0131\u011F\u0131", + cidrv6: "IPv6 aral\u0131\u011F\u0131", + base64: "base64 ile \u015Fifrelenmi\u015F metin", + base64url: "base64url ile \u015Fifrelenmi\u015F metin", + json_string: "JSON dizesi", + e164: "E.164 say\u0131s\u0131", + credit_card: "kredi kart\u0131 numaras\u0131", + currency_code: "para birimi kodu", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u015Eablon dizesi" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Ge\xE7ersiz de\u011Fer: beklenen instanceof ${issue2.expected}, al\u0131nan ${received}`; + } + return `Ge\xE7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Ge\xE7ersiz de\u011Fer: beklenen ${stringifyPrimitive(issue2.values[0])}`; + return `Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ok b\xFCy\xFCk: beklenen ${issue2.origin ?? "de\u011Fer"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\xF6\u011Fe"}`; + return `\xC7ok b\xFCy\xFCk: beklenen ${issue2.origin ?? "de\u011Fer"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + return `\xC7ok k\xFC\xE7\xFCk: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Ge\xE7ersiz metin: "${_issue.prefix}" ile ba\u015Flamal\u0131`; + if (_issue.format === "ends_with") + return `Ge\xE7ersiz metin: "${_issue.suffix}" ile bitmeli`; + if (_issue.format === "includes") + return `Ge\xE7ersiz metin: "${_issue.includes}" i\xE7ermeli`; + if (_issue.format === "regex") + return `Ge\xE7ersiz metin: ${_issue.pattern} desenine uymal\u0131`; + return `Ge\xE7ersiz ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Ge\xE7ersiz say\u0131: ${issue2.divisor} ile tam b\xF6l\xFCnebilmeli`; + case "unrecognized_keys": + return `Tan\u0131nmayan anahtar${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} i\xE7inde ge\xE7ersiz anahtar`; + case "invalid_union": + return "Ge\xE7ersiz de\u011Fer"; + case "invalid_element": + return `${issue2.origin} i\xE7inde ge\xE7ersiz de\u011Fer`; + default: + return `Ge\xE7ersiz de\u011Fer`; + } + }; +}, "error"); +function tr_default() { + return { + localeError: error54() + }; +} +__name(tr_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/uk.js +var error55 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + file: { unit: "\u0431\u0430\u0439\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + array: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + set: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" }, + map: { unit: "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456", + email: "\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438", + url: "URL", + emoji: "\u0435\u043C\u043E\u0434\u0437\u0456", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO", + date: "\u0434\u0430\u0442\u0430 ISO", + time: "\u0447\u0430\u0441 ISO", + duration: "\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO", + ipv4: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv4", + ipv6: "\u0430\u0434\u0440\u0435\u0441\u0430 IPv6", + mac: "\u0430\u0434\u0440\u0435\u0441\u0430 MAC", + cidrv4: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4", + cidrv6: "\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6", + base64: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64", + base64url: "\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url", + json_string: "\u0440\u044F\u0434\u043E\u043A JSON", + e164: "\u043D\u043E\u043C\u0435\u0440 E.164", + credit_card: "\u043D\u043E\u043C\u0435\u0440 \u043A\u0440\u0435\u0434\u0438\u0442\u043D\u043E\u0457 \u043A\u0430\u0440\u0442\u043A\u0438", + currency_code: "\u043A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u0438", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0447\u0438\u0441\u043B\u043E", + array: "\u043C\u0430\u0441\u0438\u0432" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue2.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; + } + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${stringifyPrimitive(issue2.values[0])}`; + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`; + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin ?? "\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin} \u0431\u0443\u0434\u0435 ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`; + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue2.divisor}`; + case "unrecognized_keys": + return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue2.keys.length > 1 ? "\u0456" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue2.origin}`; + case "invalid_union": + return "\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"; + case "invalid_element": + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue2.origin}`; + default: + return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`; + } + }; +}, "error"); +function uk_default() { + return { + localeError: error55() + }; +} +__name(uk_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ua.js +function ua_default() { + return uk_default(); +} +__name(ua_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ur.js +var error56 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" }, + file: { unit: "\u0628\u0627\u0626\u0679\u0633", verb: "\u06C1\u0648\u0646\u0627" }, + array: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" }, + set: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" }, + map: { unit: "\u0622\u0626\u0679\u0645\u0632", verb: "\u06C1\u0648\u0646\u0627" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0627\u0646 \u067E\u0679", + email: "\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633", + url: "\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644", + emoji: "\u0627\u06CC\u0645\u0648\u062C\u06CC", + uuid: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + uuidv4: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4", + uuidv6: "\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6", + nanoid: "\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC", + guid: "\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + cuid: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + cuid2: "\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2", + ulid: "\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC", + xid: "\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC", + ksuid: "\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC", + datetime: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645", + date: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E", + time: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A", + duration: "\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A", + ipv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633", + ipv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633", + mac: "\u0627\u06CC\u0645 \u0627\u06D2 \u0633\u06CC \u0627\u06CC\u0688\u0631\u06CC\u0633", + cidrv4: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C", + cidrv6: "\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C", + base64: "\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", + base64url: "\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF", + json_string: "\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF", + e164: "\u0627\u06CC 164 \u0646\u0645\u0628\u0631", + credit_card: "\u06A9\u0631\u06CC\u0688\u0679 \u06A9\u0627\u0631\u0688 \u0646\u0645\u0628\u0631", + currency_code: "\u06A9\u0631\u0646\u0633\u06CC \u06A9\u0648\u0688", + iban: "IBAN", + jwt: "\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC", + template_literal: "\u0627\u0646 \u067E\u0679" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u0646\u0645\u0628\u0631", + array: "\u0622\u0631\u06D2", + null: "\u0646\u0644" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue2.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; + } + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${stringifyPrimitive(issue2.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${joinValues(issue2.values, "|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue2.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; + return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue2.origin ?? "\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${adj}${issue2.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue2.origin} \u06A9\u06D2 ${adj}${issue2.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`; + } + return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue2.origin} \u06A9\u0627 ${adj}${issue2.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + } + if (_issue.format === "ends_with") + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + if (_issue.format === "includes") + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + if (_issue.format === "regex") + return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue2.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`; + case "unrecognized_keys": + return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue2.keys.length > 1 ? "\u0632" : ""}: ${joinValues(issue2.keys, "\u060C ")}`; + case "invalid_key": + return `${issue2.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`; + case "invalid_union": + return "\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"; + case "invalid_element": + return `${issue2.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`; + default: + return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`; + } + }; +}, "error"); +function ur_default() { + return { + localeError: error56() + }; +} +__name(ur_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/uz.js +var error57 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "belgi", verb: "bo\u2018lishi kerak" }, + file: { unit: "bayt", verb: "bo\u2018lishi kerak" }, + array: { unit: "element", verb: "bo\u2018lishi kerak" }, + set: { unit: "element", verb: "bo\u2018lishi kerak" }, + map: { unit: "yozuv", verb: "bo\u2018lishi kerak" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "kirish", + email: "elektron pochta manzili", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO sana va vaqti", + date: "ISO sana", + time: "ISO vaqt", + duration: "ISO davomiylik", + ipv4: "IPv4 manzil", + ipv6: "IPv6 manzil", + mac: "MAC manzil", + cidrv4: "IPv4 diapazon", + cidrv6: "IPv6 diapazon", + base64: "base64 kodlangan satr", + base64url: "base64url kodlangan satr", + json_string: "JSON satr", + e164: "E.164 raqam", + credit_card: "kredit karta raqami", + currency_code: "valyuta kodi", + iban: "IBAN", + jwt: "JWT", + template_literal: "kirish" + }; + const TypeDictionary = { + nan: "NaN", + number: "raqam", + array: "massiv" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue2.expected}, qabul qilingan ${received}`; + } + return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `Noto\u2018g\u2018ri kirish: kutilgan ${stringifyPrimitive(issue2.values[0])}`; + return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Juda katta: kutilgan ${issue2.origin ?? "qiymat"} ${adj}${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`; + return `Juda katta: kutilgan ${issue2.origin ?? "qiymat"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`; + } + return `Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Noto\u2018g\u2018ri satr: "${_issue.prefix}" bilan boshlanishi kerak`; + if (_issue.format === "ends_with") + return `Noto\u2018g\u2018ri satr: "${_issue.suffix}" bilan tugashi kerak`; + if (_issue.format === "includes") + return `Noto\u2018g\u2018ri satr: "${_issue.includes}" ni o\u2018z ichiga olishi kerak`; + if (_issue.format === "regex") + return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`; + return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `Noto\u2018g\u2018ri raqam: ${issue2.divisor} ning karralisi bo\u2018lishi kerak`; + case "unrecognized_keys": + return `Noma\u2019lum kalit${issue2.keys.length > 1 ? "lar" : ""}: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} dagi kalit noto\u2018g\u2018ri`; + case "invalid_union": + return "Noto\u2018g\u2018ri kirish"; + case "invalid_element": + return `${issue2.origin} da noto\u2018g\u2018ri qiymat`; + default: + return `Noto\u2018g\u2018ri kirish`; + } + }; +}, "error"); +function uz_default() { + return { + localeError: error57() + }; +} +__name(uz_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/vi.js +var error58 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" }, + file: { unit: "byte", verb: "c\xF3" }, + array: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" }, + set: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" }, + map: { unit: "ph\u1EA7n t\u1EED", verb: "c\xF3" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u0111\u1EA7u v\xE0o", + email: "\u0111\u1ECBa ch\u1EC9 email", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ng\xE0y gi\u1EDD ISO", + date: "ng\xE0y ISO", + time: "gi\u1EDD ISO", + duration: "kho\u1EA3ng th\u1EDDi gian ISO", + ipv4: "\u0111\u1ECBa ch\u1EC9 IPv4", + ipv6: "\u0111\u1ECBa ch\u1EC9 IPv6", + mac: "\u0111\u1ECBa ch\u1EC9 MAC", + cidrv4: "d\u1EA3i IPv4", + cidrv6: "d\u1EA3i IPv6", + base64: "chu\u1ED7i m\xE3 h\xF3a base64", + base64url: "chu\u1ED7i m\xE3 h\xF3a base64url", + json_string: "chu\u1ED7i JSON", + e164: "s\u1ED1 E.164", + credit_card: "s\u1ED1 th\u1EBB t\xEDn d\u1EE5ng", + currency_code: "m\xE3 ti\u1EC1n t\u1EC7", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u0111\u1EA7u v\xE0o" + }; + const TypeDictionary = { + nan: "NaN", + number: "s\u1ED1", + array: "m\u1EA3ng" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue2.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; + } + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${stringifyPrimitive(issue2.values[0])}`; + return `T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue2.origin ?? "gi\xE1 tr\u1ECB"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "ph\u1EA7n t\u1EED"}`; + return `Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue2.origin ?? "gi\xE1 tr\u1ECB"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${_issue.suffix}"`; + if (_issue.format === "includes") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${_issue.includes}"`; + if (_issue.format === "regex") + return `Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`; + return `${FormatDictionary[_issue.format] ?? issue2.format} kh\xF4ng h\u1EE3p l\u1EC7`; + } + case "not_multiple_of": + return `S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue2.divisor}`; + case "unrecognized_keys": + return `Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue2.origin}`; + case "invalid_union": + return "\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"; + case "invalid_element": + return `Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue2.origin}`; + default: + return `\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7`; + } + }; +}, "error"); +function vi_default() { + return { + localeError: error58() + }; +} +__name(vi_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/zh-CN.js +var error59 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" }, + file: { unit: "\u5B57\u8282", verb: "\u5305\u542B" }, + array: { unit: "\u9879", verb: "\u5305\u542B" }, + set: { unit: "\u9879", verb: "\u5305\u542B" }, + map: { unit: "\u9879", verb: "\u5305\u542B" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u8F93\u5165", + email: "\u7535\u5B50\u90AE\u4EF6", + url: "URL", + emoji: "\u8868\u60C5\u7B26\u53F7", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO\u65E5\u671F\u65F6\u95F4", + date: "ISO\u65E5\u671F", + time: "ISO\u65F6\u95F4", + duration: "ISO\u65F6\u957F", + ipv4: "IPv4\u5730\u5740", + ipv6: "IPv6\u5730\u5740", + mac: "MAC\u5730\u5740", + cidrv4: "IPv4\u7F51\u6BB5", + cidrv6: "IPv6\u7F51\u6BB5", + base64: "base64\u7F16\u7801\u5B57\u7B26\u4E32", + base64url: "base64url\u7F16\u7801\u5B57\u7B26\u4E32", + json_string: "JSON\u5B57\u7B26\u4E32", + e164: "E.164\u53F7\u7801", + credit_card: "\u4FE1\u7528\u5361\u53F7", + currency_code: "\u8D27\u5E01\u4EE3\u7801", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u8F93\u5165" + }; + const TypeDictionary = { + nan: "NaN", + number: "\u6570\u5B57", + array: "\u6570\u7EC4", + null: "\u7A7A\u503C(null)" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue2.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; + } + return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${stringifyPrimitive(issue2.values[0])}`; + return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue2.origin ?? "\u503C"} ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u4E2A\u5143\u7D20"}`; + return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue2.origin ?? "\u503C"} ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue2.origin} ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.prefix}" \u5F00\u5934`; + if (_issue.format === "ends_with") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.suffix}" \u7ED3\u5C3E`; + if (_issue.format === "includes") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`; + return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue2.divisor} \u7684\u500D\u6570`; + case "unrecognized_keys": + return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `${issue2.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`; + case "invalid_union": + return "\u65E0\u6548\u8F93\u5165"; + case "invalid_element": + return `${issue2.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`; + default: + return `\u65E0\u6548\u8F93\u5165`; + } + }; +}, "error"); +function zh_CN_default() { + return { + localeError: error59() + }; +} +__name(zh_CN_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/zh-TW.js +var error60 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" }, + file: { unit: "\u4F4D\u5143\u7D44", verb: "\u64C1\u6709" }, + array: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" }, + set: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" }, + map: { unit: "\u9805\u76EE", verb: "\u64C1\u6709" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u8F38\u5165", + email: "\u90F5\u4EF6\u5730\u5740", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "ISO \u65E5\u671F\u6642\u9593", + date: "ISO \u65E5\u671F", + time: "ISO \u6642\u9593", + duration: "ISO \u671F\u9593", + ipv4: "IPv4 \u4F4D\u5740", + ipv6: "IPv6 \u4F4D\u5740", + mac: "MAC \u4F4D\u5740", + cidrv4: "IPv4 \u7BC4\u570D", + cidrv6: "IPv6 \u7BC4\u570D", + base64: "base64 \u7DE8\u78BC\u5B57\u4E32", + base64url: "base64url \u7DE8\u78BC\u5B57\u4E32", + json_string: "JSON \u5B57\u4E32", + e164: "E.164 \u6578\u503C", + credit_card: "\u4FE1\u7528\u5361\u865F", + currency_code: "\u8CA8\u5E63\u4EE3\u78BC", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u8F38\u5165" + }; + const TypeDictionary = { + nan: "NaN" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue2.expected}\uFF0C\u4F46\u6536\u5230 ${received}`; + } + return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${stringifyPrimitive(issue2.values[0])}`; + return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue2.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue2.maximum.toString()} ${sizing.unit ?? "\u500B\u5143\u7D20"}`; + return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue2.origin ?? "\u503C"} \u61C9\u70BA ${adj}${issue2.maximum.toString()}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) { + return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue2.origin} \u61C9\u70BA ${adj}${issue2.minimum.toString()} ${sizing.unit}`; + } + return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue2.origin} \u61C9\u70BA ${adj}${issue2.minimum.toString()}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") { + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.prefix}" \u958B\u982D`; + } + if (_issue.format === "ends_with") + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.suffix}" \u7D50\u5C3E`; + if (_issue.format === "includes") + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`; + return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue2.divisor} \u7684\u500D\u6578`; + case "unrecognized_keys": + return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue2.keys.length > 1 ? "\u5011" : ""}\uFF1A${joinValues(issue2.keys, "\u3001")}`; + case "invalid_key": + return `${issue2.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`; + case "invalid_union": + return "\u7121\u6548\u7684\u8F38\u5165\u503C"; + case "invalid_element": + return `${issue2.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`; + default: + return `\u7121\u6548\u7684\u8F38\u5165\u503C`; + } + }; +}, "error"); +function zh_TW_default() { + return { + localeError: error60() + }; +} +__name(zh_TW_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/yo.js +var error61 = /* @__PURE__ */ __name(() => { + const Sizable = { + string: { unit: "\xE0mi", verb: "n\xED" }, + file: { unit: "bytes", verb: "n\xED" }, + array: { unit: "nkan", verb: "n\xED" }, + set: { unit: "nkan", verb: "n\xED" }, + map: { unit: "nkan", verb: "n\xED" } + }; + function getSizing(origin) { + return Sizable[origin] ?? null; + } + __name(getSizing, "getSizing"); + const FormatDictionary = { + regex: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9", + email: "\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC", + url: "URL", + emoji: "emoji", + uuid: "UUID", + uuidv4: "UUIDv4", + uuidv6: "UUIDv6", + nanoid: "nanoid", + guid: "GUID", + cuid: "cuid", + cuid2: "cuid2", + ulid: "ULID", + xid: "XID", + ksuid: "KSUID", + datetime: "\xE0k\xF3k\xF2 ISO", + date: "\u1ECDj\u1ECD\u0301 ISO", + time: "\xE0k\xF3k\xF2 ISO", + duration: "\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO", + ipv4: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv4", + ipv6: "\xE0d\xEDr\u1EB9\u0301s\xEC IPv6", + mac: "\xE0d\xEDr\u1EB9\u0301s\xEC MAC", + cidrv4: "\xE0gb\xE8gb\xE8 IPv4", + cidrv6: "\xE0gb\xE8gb\xE8 IPv6", + base64: "\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64", + base64url: "\u1ECD\u0300r\u1ECD\u0300 base64url", + json_string: "\u1ECD\u0300r\u1ECD\u0300 JSON", + e164: "n\u1ECD\u0301mb\xE0 E.164", + credit_card: "n\u1ECDmba kaadi gbese", + currency_code: "koodu ow\xF3", + iban: "IBAN", + jwt: "JWT", + template_literal: "\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9" + }; + const TypeDictionary = { + nan: "NaN", + number: "n\u1ECD\u0301mb\xE0", + array: "akop\u1ECD" + }; + return (issue2) => { + switch (issue2.code) { + case "invalid_type": { + const expected = TypeDictionary[issue2.expected] ?? issue2.expected; + const receivedType = parsedType(issue2.input); + const received = TypeDictionary[receivedType] ?? receivedType; + if (/^[A-Z]/.test(issue2.expected)) { + return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${issue2.expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; + } + return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`; + } + case "invalid_value": + if (issue2.values.length === 1) + return `\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${stringifyPrimitive(issue2.values[0])}`; + return `\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${joinValues(issue2.values, "|")}`; + case "too_big": { + const adj = issue2.inclusive ? "<=" : "<"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue2.origin ?? "iye"} ${sizing.verb} ${adj}${issue2.maximum} ${sizing.unit}`; + return `T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue2.maximum}`; + } + case "too_small": { + const adj = issue2.inclusive ? ">=" : ">"; + const sizing = getSizing(issue2.origin); + if (sizing) + return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum} ${sizing.unit}`; + return `K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue2.minimum}`; + } + case "invalid_format": { + const _issue = issue2; + if (_issue.format === "starts_with") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${_issue.prefix}"`; + if (_issue.format === "ends_with") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${_issue.suffix}"`; + if (_issue.format === "includes") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${_issue.includes}"`; + if (_issue.format === "regex") + return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`; + return `A\u1E63\xEC\u1E63e: ${FormatDictionary[_issue.format] ?? issue2.format}`; + } + case "not_multiple_of": + return `N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${issue2.divisor}`; + case "unrecognized_keys": + return `B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${joinValues(issue2.keys, ", ")}`; + case "invalid_key": + return `B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue2.origin}`; + case "invalid_union": + return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; + case "invalid_element": + return `Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue2.origin}`; + default: + return "\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"; + } + }; +}, "error"); +function yo_default() { + return { + localeError: error61() + }; +} +__name(yo_default, "default"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/registries.js +var _a2; +var $output = /* @__PURE__ */ Symbol("ZodOutput"); +var $input = /* @__PURE__ */ Symbol("ZodInput"); +var $ZodRegistry = class { + static { + __name(this, "$ZodRegistry"); + } + constructor() { + this._map = /* @__PURE__ */ new WeakMap(); + this._idmap = /* @__PURE__ */ new Map(); + } + add(schema2, ..._meta) { + const meta3 = _meta[0]; + this._map.set(schema2, meta3); + if (meta3 && typeof meta3 === "object" && "id" in meta3) { + this._idmap.set(meta3.id, schema2); + } + return this; + } + clear() { + this._map = /* @__PURE__ */ new WeakMap(); + this._idmap = /* @__PURE__ */ new Map(); + return this; + } + remove(schema2) { + const meta3 = this._map.get(schema2); + if (meta3 && typeof meta3 === "object" && "id" in meta3) { + this._idmap.delete(meta3.id); + } + this._map.delete(schema2); + return this; + } + get(schema2) { + const p3 = schema2._zod.parent; + if (p3) { + const pm = { ...this.get(p3) ?? {} }; + delete pm.id; + const f5 = { ...pm, ...this._map.get(schema2) }; + return Object.keys(f5).length ? f5 : void 0; + } + return this._map.get(schema2); + } + has(schema2) { + return this._map.has(schema2); + } +}; +function registry() { + return new $ZodRegistry(); +} +__name(registry, "registry"); +(_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry()); +var globalRegistry = globalThis.__zod_globalRegistry; + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/compile.js +var INVALID = /* @__PURE__ */ Symbol.for("zod.compile.invalid"); +var FALLBACK_FLAG = /* @__PURE__ */ Symbol.for("zod.compile.fallback"); +var ZodCompileAsyncError = class extends Error { + static { + __name(this, "ZodCompileAsyncError"); + } + constructor(message = "z.compile does not support async refinements, transforms, or checks") { + super(message); + this.name = "ZodCompileAsyncError"; + } +}; +var ZodCompileUnsupportedError = class extends Error { + static { + __name(this, "ZodCompileUnsupportedError"); + } + constructor(feature, islandable = true) { + super(`z.compile does not support ${feature}; this schema must use the runtime parser`); + this.name = "ZodCompileUnsupportedError"; + this.islandable = islandable; + } +}; +function compileValidator(schema2, parser) { + try { + return compileFn(schema2, { assertOnly: true }); + } catch { + return parser; + } +} +__name(compileValidator, "compileValidator"); +function compile(schema2, options) { + try { + const parser = compileFn(schema2); + const clone2 = withParser(schema2, parser); + clone2._zod.bag.validator = compileValidator(schema2, parser); + return clone2; + } catch (err) { + if (options?.strict) + throw err; + return schema2; + } +} +__name(compile, "compile"); +function withParser(schema2, parser) { + if (isRecursiveSchema(schema2)) { + throw new ZodCompileUnsupportedError("a schema whose subtree contains a reference cycle"); + } + const clone2 = clone(schema2); + const liveRun = schema2._zod.run; + const originalRun = liveRun.__originalRun ?? liveRun; + const wrapped = /* @__PURE__ */ __name((payload, ctx) => { + if (ctx?.async || ctx?.direction === "backward" || ctx?.skipChecks || ctx?.[FALLBACK_FLAG]) { + return originalRun(payload, ctx); + } + if (ctx && isBackEdge(ctx, payload.value)) { + return originalRun(payload, ctx); + } + const out = parser(payload.value); + if (out !== INVALID) { + payload.value = out; + return payload; + } + if (ctx) + ctx[FALLBACK_FLAG] = true; + return originalRun(payload, ctx); + }, "wrapped"); + wrapped.__originalRun = originalRun; + clone2._zod.bag.fallbackRun = originalRun; + clone2._zod.bag.validator = parser; + clone2._zod.run = wrapped; + if (!liveRun.__originalRun) + installCompiledUserMethods(clone2, schema2, parser); + return clone2; +} +__name(withParser, "withParser"); +function installCompiledUserMethods(target, source, parser) { + const targetAny = target; + const sourceAny = source; + if (typeof sourceAny.safeParse === "function") { + const originalSafeParse = sourceAny.safeParse; + targetAny.safeParse = (data, params) => { + const out = parser(data); + if (out !== INVALID) { + return { success: true, data: out }; + } + return originalSafeParse(data, params); + }; + } + if (typeof sourceAny.parse === "function") { + const originalParse = sourceAny.parse; + targetAny.parse = (data, params) => { + const out = parser(data); + if (out !== INVALID) { + return out; + } + return originalParse(data, params); + }; + } +} +__name(installCompiledUserMethods, "installCompiledUserMethods"); +function compileFn(schema2, options) { + let recursive2 = true; + try { + recursive2 = isRecursiveSchema(schema2); + } catch { + } + if (recursive2) { + throw new ZodCompileUnsupportedError("a schema whose subtree contains a reference cycle"); + } + const ctx = { + constants: /* @__PURE__ */ new Map(), + constantCounter: 0, + varCounter: 0, + definite: true + }; + const doc = new Doc(["input"]); + const outputAccessor = generateCheck(doc, ctx, schema2, "input", !options?.assertOnly); + doc.write(outputAccessor === null ? `return true;` : `return ${outputAccessor};`); + const constantNames = ["INVALID", ...ctx.constants.keys()]; + const constantValues = [INVALID, ...ctx.constants.values()]; + const code = doc.content.join("\n"); + const fullCode = options?.debug ? constantNames.length > 0 ? `// Constants: ${constantNames.join(", ")} +${code}` : code : ""; + const F = Function; + const factoryCode = `return (input) => { +${code} +}`; + let fn; + try { + const factory = new F(...constantNames, factoryCode); + fn = factory(...constantValues); + } catch (err) { + throw new ZodCompileUnsupportedError(`this schema (generated code failed to evaluate: ${err.message})`); + } + if (options?.debug) { + fn.code = fullCode; + } + fn.definite = ctx.definite; + return fn; +} +__name(compileFn, "compileFn"); +function addConstant(ctx, value) { + for (const [name3, v] of ctx.constants) { + if (v === value) + return name3; + } + const name2 = `c${ctx.constantCounter++}`; + ctx.constants.set(name2, value); + return name2; +} +__name(addConstant, "addConstant"); +function addUserConstant(ctx, fn) { + ctx.definite = false; + return addConstant(ctx, fn); +} +__name(addUserConstant, "addUserConstant"); +function newVar(ctx) { + return `v${ctx.varCounter++}`; +} +__name(newVar, "newVar"); +function runtimeRun(schema2, value) { + const result = schema2._zod.run({ value, issues: [] }, {}); + if (result && typeof result.then === "function") + return INVALID; + const r5 = result; + return r5.issues.length === 0 ? r5.value : INVALID; +} +__name(runtimeRun, "runtimeRun"); +function compileChild(doc, ctx, schema2, accessor, needsValue = true) { + const contentLen = doc.content.length; + const constantCount = ctx.constants.size; + const constantCounter = ctx.constantCounter; + const varCounter = ctx.varCounter; + try { + return generateCheck(doc, ctx, schema2, accessor, needsValue); + } catch (err) { + if (!(err instanceof ZodCompileUnsupportedError) || !err.islandable) + throw err; + doc.content.length = contentLen; + if (ctx.constants.size > constantCount) { + const trailing = Array.from(ctx.constants.keys()).slice(constantCount); + for (const k5 of trailing) + ctx.constants.delete(k5); + } + ctx.constantCounter = constantCounter; + ctx.varCounter = varCounter; + return emitRuntimeIsland(doc, ctx, schema2, accessor); + } +} +__name(compileChild, "compileChild"); +function emitRuntimeIsland(doc, ctx, schema2, accessor) { + ctx.definite = false; + const schemaConst = addConstant(ctx, schema2); + const runConst = addConstant(ctx, runtimeRun); + const outVar = newVar(ctx); + doc.write(`const ${outVar} = ${runConst}(${schemaConst}, ${accessor});`); + doc.write(`if (${outVar} === INVALID) return INVALID;`); + return outVar; +} +__name(emitRuntimeIsland, "emitRuntimeIsland"); +var WHEN_DEFAULTED_CHECKS = /* @__PURE__ */ new Set([ + "max_size", + "min_size", + "size_equals", + "max_length", + "min_length", + "length_equals" +]); +function generateChecks(doc, ctx, schema2, accessor) { + const schemaChecks = schema2._zod.def.checks; + if (!schemaChecks || schemaChecks.length === 0) + return accessor; + let currentAccessor = accessor; + for (const check2 of schemaChecks) { + const def = check2._zod.def; + if (def.when && !WHEN_DEFAULTED_CHECKS.has(def.check)) { + throw new ZodCompileUnsupportedError(`check with a custom "when" condition`); + } + switch (def.check) { + case "greater_than": + generateGreaterThanCheck(doc, ctx, def, currentAccessor); + break; + case "less_than": + generateLessThanCheck(doc, ctx, def, currentAccessor); + break; + case "multiple_of": + generateMultipleOfCheck(doc, ctx, def, currentAccessor); + break; + case "number_format": + generateNumberFormatCheck(doc, def, currentAccessor); + break; + case "min_length": { + const min = numericOperand(def.minimum, "min_length"); + const len = codePointLengthVar(doc, ctx, currentAccessor, `${currentAccessor}.length >= ${min} && ${currentAccessor}.length < ${def.minimum * 2}`); + doc.write(`if (${len} < ${min}) return INVALID;`); + break; + } + case "max_length": { + const max = numericOperand(def.maximum, "max_length"); + const len = codePointLengthVar(doc, ctx, currentAccessor, `${currentAccessor}.length > ${max}`); + doc.write(`if (${len} > ${max}) return INVALID;`); + break; + } + case "length_equals": { + const exact = numericOperand(def.length, "length_equals"); + const len = codePointLengthVar(doc, ctx, currentAccessor, `${currentAccessor}.length >= ${exact} && ${currentAccessor}.length <= ${def.length * 2}`); + doc.write(`if (${len} !== ${exact}) return INVALID;`); + break; + } + case "min_size": + doc.write(`if (${currentAccessor}.size < ${numericOperand(def.minimum, "min_size")}) return INVALID;`); + break; + case "max_size": + doc.write(`if (${currentAccessor}.size > ${numericOperand(def.maximum, "max_size")}) return INVALID;`); + break; + case "size_equals": + doc.write(`if (${currentAccessor}.size !== ${numericOperand(def.size, "size_equals")}) return INVALID;`); + break; + case "string_format": + currentAccessor = generateStringFormatCheck(doc, ctx, def, currentAccessor); + break; + case "custom": + currentAccessor = generateCustomRefineCheck(doc, ctx, check2, currentAccessor); + break; + case "bigint_format": + generateBigIntFormatCheck(doc, def, currentAccessor); + break; + case "mime_type": + generateMimeTypeCheck(doc, ctx, def, currentAccessor); + break; + case "property": + generatePropertyCheck(doc, ctx, def, currentAccessor); + break; + case "properties": + generatePropertiesChecks(doc, ctx, def, currentAccessor); + break; + case "overwrite": { + const newAccessor = newVar(ctx); + generateOverwriteCheck(doc, ctx, check2, currentAccessor, newAccessor); + currentAccessor = newAccessor; + break; + } + default: { + void def; + throw new ZodCompileUnsupportedError(`check type ${def.check}`); + } + } + } + return currentAccessor; +} +__name(generateChecks, "generateChecks"); +function codePointLengthVar(doc, ctx, accessor, inDoubt) { + const cpLen = addConstant(ctx, codePointLength); + const v = newVar(ctx); + doc.write(`const ${v} = typeof ${accessor} === "string" && ${inDoubt} ? ${cpLen}(${accessor}) : ${accessor}.length;`); + return v; +} +__name(codePointLengthVar, "codePointLengthVar"); +function numericOperand(value, label) { + if (typeof value !== "number" || !Number.isFinite(value)) { + throw new ZodCompileUnsupportedError(`${label} bound of type ${typeof value}`); + } + return `${value}`; +} +__name(numericOperand, "numericOperand"); +function comparisonOperand(ctx, value) { + if (typeof value === "bigint") + return `${value}n`; + if (typeof value === "number") { + if (Number.isNaN(value)) + throw new ZodCompileUnsupportedError("comparison check with NaN bound"); + return `${value}`; + } + if (value instanceof Date) { + if (Number.isNaN(value.getTime())) { + throw new ZodCompileUnsupportedError("comparison check with Invalid Date bound"); + } + return addConstant(ctx, value); + } + throw new ZodCompileUnsupportedError(`comparison check bound of type ${typeof value}`); +} +__name(comparisonOperand, "comparisonOperand"); +function generateGreaterThanCheck(doc, ctx, def, accessor) { + const op = def.inclusive ? "<" : "<="; + doc.write(`if (${accessor} ${op} ${comparisonOperand(ctx, def.value)}) return INVALID;`); +} +__name(generateGreaterThanCheck, "generateGreaterThanCheck"); +function generateLessThanCheck(doc, ctx, def, accessor) { + const op = def.inclusive ? ">" : ">="; + doc.write(`if (${accessor} ${op} ${comparisonOperand(ctx, def.value)}) return INVALID;`); +} +__name(generateLessThanCheck, "generateLessThanCheck"); +function generateMultipleOfCheck(doc, ctx, def, accessor) { + if (typeof def.value === "bigint") { + if (def.value === BigInt(0)) + throw new ZodCompileUnsupportedError("multiple_of check with a zero divisor"); + doc.write(`if (${accessor} % ${def.value}n !== 0n) return INVALID;`); + } else { + const remainder = addConstant(ctx, floatSafeRemainder); + doc.write(`if (${remainder}(${accessor}, ${numericOperand(def.value, "multiple_of")}) !== 0) return INVALID;`); + } +} +__name(generateMultipleOfCheck, "generateMultipleOfCheck"); +function generateNumberFormatCheck(doc, def, accessor) { + const format = def.format; + switch (format) { + case "safeint": + doc.write(`if (!Number.isSafeInteger(${accessor})) return INVALID;`); + break; + case "int32": + doc.write(`if (!Number.isInteger(${accessor}) || ${accessor} < -2147483648 || ${accessor} > 2147483647) return INVALID;`); + break; + case "uint32": + doc.write(`if (!Number.isInteger(${accessor}) || ${accessor} < 0 || ${accessor} > 4294967295) return INVALID;`); + break; + case "float32": + doc.write(`if (!Number.isFinite(${accessor}) || ${accessor} < -3.4028234663852886e38 || ${accessor} > 3.4028234663852886e38) return INVALID;`); + break; + case "float64": + doc.write(`if (!Number.isFinite(${accessor})) return INVALID;`); + break; + default: { + void format; + throw new ZodCompileUnsupportedError(`number format ${format}`); + } + } +} +__name(generateNumberFormatCheck, "generateNumberFormatCheck"); +function generateBigIntFormatCheck(doc, def, accessor) { + const format = def.format; + if (!format) + return; + switch (format) { + case "int64": + doc.write(`if (${accessor} < -9223372036854775808n || ${accessor} > 9223372036854775807n) return INVALID;`); + break; + case "uint64": + doc.write(`if (${accessor} < 0n || ${accessor} > 18446744073709551615n) return INVALID;`); + break; + default: { + void format; + throw new ZodCompileUnsupportedError(`bigint format ${format}`); + } + } +} +__name(generateBigIntFormatCheck, "generateBigIntFormatCheck"); +function generateMimeTypeCheck(doc, ctx, def, accessor) { + const mimeTypes = def.mime; + if (mimeTypes && mimeTypes.length > 0) { + const mimeSet = addConstant(ctx, new Set(mimeTypes)); + doc.write(`if (!${mimeSet}.has(${accessor}.type)) return INVALID;`); + } +} +__name(generateMimeTypeCheck, "generateMimeTypeCheck"); +function generatePropertiesChecks(doc, ctx, def, accessor) { + if (def.when) { + throw new ZodCompileUnsupportedError(`check with a custom "when" condition`); + } + doc.write(`if (${accessor} == null) return INVALID;`); + const shape = def.shape; + for (const key of Reflect.ownKeys(shape)) { + const keyExpr = typeof key === "symbol" ? addConstant(ctx, key) : esc(key); + const inputVar = newVar(ctx); + doc.write(`const ${inputVar} = ${accessor}[${keyExpr}];`); + compileChild(doc, ctx, shape[key], inputVar, false); + } +} +__name(generatePropertiesChecks, "generatePropertiesChecks"); +function generatePropertyCheck(doc, ctx, def, accessor) { + const propAccessor = `${accessor}[${JSON.stringify(def.property)}]`; + generateCheck(doc, ctx, def.schema, propAccessor); +} +__name(generatePropertyCheck, "generatePropertyCheck"); +function generateOverwriteCheck(doc, ctx, check2, currentAccessor, newAccessor) { + const tx = check2._zod.def.tx; + if (!tx) { + throw new ZodCompileUnsupportedError("overwrite check without a transform function"); + } + if (isAsyncFunction(tx)) { + throw new ZodCompileAsyncError("z.compile: async overwrite transforms are not supported"); + } + const txConst = addConstant(ctx, tx); + doc.write(`const ${newAccessor} = ${txConst}(${currentAccessor});`); +} +__name(generateOverwriteCheck, "generateOverwriteCheck"); +function throwAsync() { + throw new $ZodAsyncError(); +} +__name(throwAsync, "throwAsync"); +function pushIssue(issue2) { + this.issues.push(issue2); +} +__name(pushIssue, "pushIssue"); +function generateCustomRefineCheck(doc, ctx, check2, accessor) { + const def = check2._zod.def; + if (def.fn) { + if (isAsyncFunction(def.fn)) { + throw new ZodCompileAsyncError("z.compile: async .refine() predicates are not supported"); + } + const fnConst = addUserConstant(ctx, def.fn); + const throwAsyncConst = addConstant(ctx, throwAsync); + const resVar = newVar(ctx); + doc.write(`const ${resVar} = ${fnConst}(${accessor});`); + doc.write(`if (${resVar} instanceof Promise) ${throwAsyncConst}();`); + doc.write(`if (!${resVar}) return INVALID;`); + return accessor; + } + if (check2._zod.check) { + if (isAsyncFunction(check2._zod.check)) { + throw new ZodCompileAsyncError("z.compile: async .superRefine() / check functions are not supported"); + } + const checkFn = check2._zod.check; + const helperFn = /* @__PURE__ */ __name((value) => { + const fakePayload = { value, issues: [], addIssue: pushIssue }; + const result = checkFn(fakePayload); + if (result instanceof Promise) + throwAsync(); + return fakePayload.issues.length === 0 ? fakePayload.value : INVALID; + }, "helperFn"); + const helperConst = addUserConstant(ctx, helperFn); + const outVar = newVar(ctx); + doc.write(`const ${outVar} = ${helperConst}(${accessor});`); + doc.write(`if (${outVar} === INVALID) return INVALID;`); + return outVar; + } + throw new ZodCompileUnsupportedError("custom check without a predicate or check function"); +} +__name(generateCustomRefineCheck, "generateCustomRefineCheck"); +var PATTERN_IS_COMPLETE = /* @__PURE__ */ new Set([ + "cidrv4", + "cuid", + "cuid2", + "date", + "datetime", + "duration", + "e164", + "email", + "emoji", + "ends_with", + "guid", + "includes", + "ipv4", + "ksuid", + "lowercase", + "mac", + "nanoid", + "regex", + "starts_with", + "time", + "ulid", + "uppercase", + "uuid", + "xid" +]); +function generateStringFormatCheck(doc, ctx, def, accessor, needsValue = true) { + const fmt = def.format; + if (fmt === "base64") { + const validator = addConstant(ctx, isValidBase64); + doc.write(`if (!${validator}(${accessor})) return INVALID;`); + return accessor; + } + if (fmt === "base64url") { + const validator = addConstant(ctx, isValidBase64URL); + doc.write(`if (!${validator}(${accessor})) return INVALID;`); + return accessor; + } + if (fmt === "jwt") { + const validator = addConstant(ctx, isValidJWT); + const alg = addConstant(ctx, def.alg ?? null); + doc.write(`if (!${validator}(${accessor}, ${alg})) return INVALID;`); + return accessor; + } + if (fmt === "ipv6") { + const validator = addConstant(ctx, isValidIPv6); + doc.write(`if (!${validator}(${accessor})) return INVALID;`); + return accessor; + } + if (fmt === "cidrv6") { + const validator = addConstant(ctx, isValidCIDRv6); + doc.write(`if (!${validator}(${accessor})) return INVALID;`); + return accessor; + } + if (fmt === "credit_card") { + const validator = addConstant(ctx, isValidCreditCard); + doc.write(`if (!${validator}(${accessor})) return INVALID;`); + return accessor; + } + if (fmt === "iban") { + const validator = addConstant(ctx, isValidIBAN); + doc.write(`if (!${validator}(${accessor})) return INVALID;`); + return accessor; + } + const formatDef = def; + if (fmt === "url" || fmt === "httpurl" || formatDef.normalize || formatDef.hostname !== void 0 || formatDef.protocol !== void 0) { + const parseConst = addConstant(ctx, validateURL); + const defConst = addConstant(ctx, def); + const trimVar = newVar(ctx); + const urlVar = newVar(ctx); + doc.write(`const ${trimVar} = ${accessor}.trim();`); + doc.write(`const ${urlVar} = ${parseConst}(${trimVar}, ${defConst});`); + doc.write(`if (typeof ${urlVar} === "number") return INVALID;`); + if (formatDef.hostname !== void 0) { + const hostnameConst = addConstant(ctx, urlHostnameOk); + doc.write(`if (!${hostnameConst}(${urlVar}, ${defConst}.hostname)) return INVALID;`); + } + if (formatDef.protocol !== void 0) { + const protocolConst = addConstant(ctx, urlProtocolOk); + doc.write(`if (!${protocolConst}(${urlVar}, ${defConst}.protocol)) return INVALID;`); + } + if (!needsValue) + return null; + const outputVar = newVar(ctx); + const outputExpr = formatDef.normalize ? `${urlVar}.href` : `${addConstant(ctx, stripTabAndNewline)}(${trimVar})`; + doc.write(`const ${outputVar} = ${outputExpr};`); + return outputVar; + } + const customFn = def.fn; + if (customFn) { + if (isAsyncFunction(customFn)) + throw new ZodCompileUnsupportedError(`async string format ${fmt}`); + const fnConst = addConstant(ctx, customFn); + doc.write(`if (!${fnConst}(${accessor})) return INVALID;`); + return accessor; + } + if (PATTERN_IS_COMPLETE.has(fmt) && def.pattern) { + const patternConst = addConstant(ctx, def.pattern); + doc.write(`${patternConst}.lastIndex = 0;`); + doc.write(`if (!${patternConst}.test(${accessor})) return INVALID;`); + return accessor; + } + const format = def.format; + switch (format) { + case "regex": + throw new ZodCompileUnsupportedError("regex format without a pattern"); + case "lowercase": + doc.write(`if (${accessor} !== ${accessor}.toLowerCase()) return INVALID;`); + break; + case "uppercase": + doc.write(`if (${accessor} !== ${accessor}.toUpperCase()) return INVALID;`); + break; + case "includes": + doc.write(`if (!${accessor}.includes(${esc(def.includes)})) return INVALID;`); + break; + case "starts_with": { + const prefix = def.prefix; + doc.write(`if (${accessor}.slice(0, ${prefix.length}) !== ${esc(prefix)}) return INVALID;`); + break; + } + case "ends_with": { + const suffix = def.suffix; + doc.write(`if (${accessor}.slice(-${suffix.length}) !== ${esc(suffix)}) return INVALID;`); + break; + } + default: { + void format; + throw new ZodCompileUnsupportedError(`string format ${format}`); + } + } + return accessor; +} +__name(generateStringFormatCheck, "generateStringFormatCheck"); +function generateCheck(doc, ctx, schema2, accessor, needsValue = true) { + const def = schema2._zod.def; + const type = def.type; + if (def.coerce) { + throw new ZodCompileUnsupportedError(`coercion (z.coerce.${type}())`); + } + const buildsValue = needsValue || !!def.checks?.length; + let typeAccessor; + switch (type) { + case "string": + typeAccessor = generateStringCheck(doc, ctx, schema2, accessor, buildsValue); + break; + case "number": + typeAccessor = generateNumberCheck(doc, schema2, accessor); + break; + case "boolean": + typeAccessor = generateBooleanCheck(doc, accessor); + break; + case "bigint": + typeAccessor = generateBigIntCheck(doc, schema2, accessor); + break; + case "symbol": + typeAccessor = generateSymbolCheck(doc, accessor); + break; + case "undefined": + typeAccessor = generateUndefinedCheck(doc, accessor); + break; + case "null": + typeAccessor = generateNullCheck(doc, accessor); + break; + case "any": + case "unknown": + typeAccessor = accessor; + break; + case "never": + doc.write("return INVALID;"); + typeAccessor = accessor; + break; + case "void": + typeAccessor = generateVoidCheck(doc, accessor); + break; + case "nan": + typeAccessor = generateNaNCheck(doc, accessor); + break; + case "date": + typeAccessor = generateDateCheck(doc, accessor); + break; + case "object": + typeAccessor = generateObjectCheck(doc, ctx, schema2, accessor, buildsValue); + break; + case "optional": + typeAccessor = generateOptionalCheck(doc, ctx, schema2, accessor, buildsValue); + break; + case "nullable": + typeAccessor = generateNullableCheck(doc, ctx, schema2, accessor, buildsValue); + break; + case "array": + typeAccessor = generateArrayCheck(doc, ctx, schema2, accessor, buildsValue); + break; + case "literal": + typeAccessor = generateLiteralCheck(doc, ctx, schema2, accessor); + break; + case "enum": + typeAccessor = generateEnumCheck(doc, ctx, schema2, accessor); + break; + case "readonly": { + const innerOut = generateWrapperCheck(doc, ctx, schema2, accessor); + const frozenVar = newVar(ctx); + doc.write(`const ${frozenVar} = Object.freeze(${innerOut});`); + typeAccessor = frozenVar; + break; + } + case "success": + generateWrapperCheck(doc, ctx, schema2, accessor); + typeAccessor = "true"; + break; + case "default": + case "prefault": + typeAccessor = generateDefaultCheck(doc, ctx, schema2, accessor); + break; + case "nonoptional": + typeAccessor = generateNonOptionalCheck(doc, ctx, schema2, accessor); + break; + case "tuple": + typeAccessor = generateTupleCheck(doc, ctx, schema2, accessor); + break; + case "union": + typeAccessor = generateUnionCheck(doc, ctx, schema2, accessor); + break; + case "intersection": + typeAccessor = generateIntersectionCheck(doc, ctx, schema2, accessor); + break; + case "record": + typeAccessor = generateRecordCheck(doc, ctx, schema2, accessor); + break; + case "map": + typeAccessor = generateMapCheck(doc, ctx, schema2, accessor); + break; + case "set": + typeAccessor = generateSetCheck(doc, ctx, schema2, accessor); + break; + case "file": + typeAccessor = generateFileCheck(doc, accessor); + break; + case "template_literal": + typeAccessor = generateTemplateLiteralCheck(doc, ctx, schema2, accessor); + break; + case "lazy": + typeAccessor = generateLazyCheck(doc, ctx, schema2, accessor); + break; + case "pipe": + typeAccessor = generatePipeCheck(doc, ctx, schema2, accessor); + break; + case "custom": + typeAccessor = generateCustomCheck(doc, ctx, schema2, accessor); + break; + case "transform": + typeAccessor = generateTransformCheck(doc, ctx, schema2, accessor); + break; + case "catch": + typeAccessor = generateCatchCheck(doc, ctx, schema2, accessor); + break; + default: { + void type; + throw new ZodCompileUnsupportedError(`schema type ${type}`); + } + } + if (typeAccessor === null) + return null; + return generateChecks(doc, ctx, schema2, typeAccessor); +} +__name(generateCheck, "generateCheck"); +function generateStringCheck(doc, ctx, schema2, accessor, needsValue = true) { + doc.write(`if (typeof ${accessor} !== "string") return INVALID;`); + const def = schema2._zod.def; + if (def.format === void 0) + return accessor; + return generateStringFormatCheck(doc, ctx, def, accessor, needsValue); +} +__name(generateStringCheck, "generateStringCheck"); +function generateNumberCheck(doc, schema2, accessor) { + doc.write(`if (typeof ${accessor} !== "number" || !Number.isFinite(${accessor})) return INVALID;`); + const def = schema2._zod.def; + if (def.check === "number_format" && def.format) { + generateNumberFormatCheck(doc, { format: def.format }, accessor); + } + return accessor; +} +__name(generateNumberCheck, "generateNumberCheck"); +function generateBooleanCheck(doc, accessor) { + doc.write(`if (typeof ${accessor} !== "boolean") return INVALID;`); + return accessor; +} +__name(generateBooleanCheck, "generateBooleanCheck"); +function generateBigIntCheck(doc, schema2, accessor) { + doc.write(`if (typeof ${accessor} !== "bigint") return INVALID;`); + const def = schema2._zod.def; + if (def.format) { + switch (def.format) { + case "int64": + doc.write(`if (${accessor} < -9223372036854775808n || ${accessor} > 9223372036854775807n) return INVALID;`); + break; + case "uint64": + doc.write(`if (${accessor} < 0n || ${accessor} > 18446744073709551615n) return INVALID;`); + break; + } + } + return accessor; +} +__name(generateBigIntCheck, "generateBigIntCheck"); +function generateSymbolCheck(doc, accessor) { + doc.write(`if (typeof ${accessor} !== "symbol") return INVALID;`); + return accessor; +} +__name(generateSymbolCheck, "generateSymbolCheck"); +function generateUndefinedCheck(doc, accessor) { + doc.write(`if (${accessor} !== undefined) return INVALID;`); + return accessor; +} +__name(generateUndefinedCheck, "generateUndefinedCheck"); +function generateNullCheck(doc, accessor) { + doc.write(`if (${accessor} !== null) return INVALID;`); + return accessor; +} +__name(generateNullCheck, "generateNullCheck"); +function generateVoidCheck(doc, accessor) { + doc.write(`if (${accessor} !== undefined) return INVALID;`); + return accessor; +} +__name(generateVoidCheck, "generateVoidCheck"); +function generateNaNCheck(doc, accessor) { + doc.write(`if (typeof ${accessor} !== "number" || !Number.isNaN(${accessor})) return INVALID;`); + return accessor; +} +__name(generateNaNCheck, "generateNaNCheck"); +function generateDateCheck(doc, accessor) { + doc.write(`if (!(${accessor} instanceof Date) || Number.isNaN(${accessor}.getTime())) return INVALID;`); + return accessor; +} +__name(generateDateCheck, "generateDateCheck"); +function generateObjectCheck(doc, ctx, schema2, accessor, buildsValue = true) { + const def = schema2._zod.def; + doc.write(`if (typeof ${accessor} !== "object" || ${accessor} === null || Array.isArray(${accessor})) return INVALID;`); + const shape = def.shape; + const keys = Object.keys(shape); + const symbolKeys = Object.getOwnPropertySymbols(shape); + const allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys; + const keyExpr = /* @__PURE__ */ __name((k5) => typeof k5 === "symbol" ? addConstant(ctx, k5) : esc(k5), "keyExpr"); + const propKey = /* @__PURE__ */ __name((k5) => typeof k5 === "symbol" ? `[${keyExpr(k5)}]` : esc(k5), "propKey"); + const propShape = shape; + if (keys.includes("__proto__")) { + throw new ZodCompileUnsupportedError('object shape key "__proto__"'); + } + const propOutputs = /* @__PURE__ */ new Map(); + for (const key of allKeys) { + const propSchema = propShape[key]; + const kx = keyExpr(key); + const inputVar = newVar(ctx); + doc.write(`const ${inputVar} = ${accessor}[${kx}];`); + if (propSchema._zod.optin !== void 0) { + const outputVar2 = newVar(ctx); + doc.write(`let ${outputVar2} = (() => {`); + doc.indented((d5) => { + const outputAccessor = compileChild(d5, ctx, propSchema, inputVar); + d5.write(`return ${outputAccessor};`); + }); + doc.write(`})();`); + if (propSchema._zod.optout === "optional") { + doc.write(`if (${outputVar2} === INVALID) {`); + doc.indented((d5) => { + d5.write(`if (${kx} in ${accessor}) return INVALID;`); + d5.write(`${outputVar2} = undefined;`); + }); + doc.write(`}`); + } else { + doc.write(`if (${outputVar2} === INVALID) return INVALID;`); + } + propOutputs.set(key, outputVar2); + } else { + if (requiresPresenceCheck(propSchema)) { + doc.write(`if (!(${kx} in ${accessor})) return INVALID;`); + } + const outputAccessor = compileChild(doc, ctx, propSchema, inputVar, buildsValue); + if (outputAccessor !== null) + propOutputs.set(key, outputAccessor); + } + } + const catchall = def.catchall; + let unknownKeysMode = "none"; + if (catchall) { + const catchallType = catchall._zod.def.type; + if (catchallType === "never") { + const condition = keys.map((k5) => `k !== ${esc(k5)}`).join(" && ") || "true"; + doc.write(`for (const k in ${accessor}) {`); + doc.indented((d5) => { + d5.write(`if (${condition}) return INVALID;`); + }); + doc.write(`}`); + } else if ((catchallType === "unknown" || catchallType === "any") && !catchall._zod.def.checks?.length) { + unknownKeysMode = "passthrough"; + } else { + unknownKeysMode = "schema"; + } + } + const outputVar = newVar(ctx); + const hasConditionalKeys = allKeys.some((k5) => mayOmitUndefined(propShape[k5]) || dropsWhenAbsent(propShape[k5])); + if (!buildsValue) { + if (unknownKeysMode === "schema") { + const knownSet = keys.length > 0 ? addConstant(ctx, new Set(keys)) : null; + doc.write(`for (const k in ${accessor}) {`); + doc.indented((d5) => { + d5.write(`if (k === "__proto__") continue;`); + if (knownSet) + d5.write(`if (${knownSet}.has(k)) continue;`); + const valVar = newVar(ctx); + d5.write(`const ${valVar} = ${accessor}[k];`); + compileChild(d5, ctx, catchall, valVar, false); + }); + doc.write(`}`); + } + return null; + } + if (!hasConditionalKeys) { + const propLiterals = allKeys.map((k5) => `${propKey(k5)}: ${propOutputs.get(k5)}`).join(", "); + doc.write(`const ${outputVar} = { ${propLiterals} };`); + } else { + doc.write(`const ${outputVar} = {};`); + for (const k5 of allKeys) { + const kx = keyExpr(k5); + const out = propOutputs.get(k5); + if (dropsWhenAbsent(propShape[k5])) { + doc.write(`if (${kx} in ${accessor}) ${outputVar}[${kx}] = ${out};`); + } else if (mayOmitUndefined(propShape[k5])) { + doc.write(`if (${out} !== undefined || ${kx} in ${accessor}) ${outputVar}[${kx}] = ${out};`); + } else { + doc.write(`${outputVar}[${kx}] = ${out};`); + } + } + } + if (unknownKeysMode !== "none") { + const knownSet = keys.length > 0 ? addConstant(ctx, new Set(keys)) : null; + doc.write(`for (const k in ${accessor}) {`); + doc.indented((d5) => { + d5.write(`if (k === "__proto__") continue;`); + if (knownSet) + d5.write(`if (${knownSet}.has(k)) continue;`); + if (unknownKeysMode === "passthrough") { + d5.write(`${outputVar}[k] = ${accessor}[k];`); + } else { + const valVar = newVar(ctx); + d5.write(`const ${valVar} = ${accessor}[k];`); + const catchallOut = compileChild(d5, ctx, catchall, valVar); + d5.write(`${outputVar}[k] = ${catchallOut};`); + } + }); + doc.write(`}`); + } + return outputVar; +} +__name(generateObjectCheck, "generateObjectCheck"); +function generateOptionalCheck(doc, ctx, schema2, accessor, buildsValue = true) { + const def = schema2._zod.def; + if (isExactOptional(schema2)) { + return generateCheck(doc, ctx, def.innerType, accessor, buildsValue); + } + if (def.innerType._zod.optin === "defaulted") { + const outputVar2 = newVar(ctx); + const branchVar = newVar(ctx); + doc.write(`let ${outputVar2};`); + doc.write(`if (${accessor} === undefined) {`); + doc.indented((d5) => { + d5.write(`const ${branchVar} = (() => {`); + d5.indented((d22) => { + const innerOutput = generateCheck(d22, ctx, def.innerType, accessor); + d22.write(`return ${innerOutput};`); + }); + d5.write(`})();`); + d5.write(`if (${branchVar} !== INVALID) ${outputVar2} = ${branchVar};`); + }); + doc.write(`} else {`); + doc.indented((d5) => { + const innerOutput = generateCheck(d5, ctx, def.innerType, accessor); + d5.write(`${outputVar2} = ${innerOutput};`); + }); + doc.write(`}`); + return outputVar2; + } + const outputVar = buildsValue ? newVar(ctx) : null; + if (outputVar) + doc.write(`let ${outputVar};`); + doc.write(`if (${accessor} !== undefined) {`); + doc.indented((d5) => { + const innerOutput = generateCheck(d5, ctx, def.innerType, accessor, buildsValue); + if (outputVar && innerOutput !== null) + d5.write(`${outputVar} = ${innerOutput};`); + }); + doc.write(`}`); + return outputVar; +} +__name(generateOptionalCheck, "generateOptionalCheck"); +function isExactOptional(schema2) { + return schema2._zod.traits?.has("$ZodExactOptional") === true; +} +__name(isExactOptional, "isExactOptional"); +function requiresPresenceCheck(schema2) { + return schema2._zod.optin === void 0 && fastPathAcceptsAbsence(schema2); +} +__name(requiresPresenceCheck, "requiresPresenceCheck"); +function fastPathAcceptsAbsence(schema2) { + if (schema2._zod.def.coerce) + return true; + const def = schema2._zod.def; + switch (def.type) { + case "any": + case "unknown": + case "undefined": + case "void": + case "default": + case "prefault": + case "transform": + case "custom": + case "lazy": + return true; + case "string": + case "number": + case "boolean": + case "bigint": + case "symbol": + case "null": + case "never": + case "nan": + case "date": + case "object": + case "array": + case "tuple": + case "record": + case "map": + case "set": + case "file": + case "template_literal": + return false; + case "nonoptional": + return def.innerType ? fastPathAcceptsAbsence(def.innerType) : false; + case "literal": + return !!def.values?.includes(void 0); + case "enum": + return !!schema2._zod.values?.has(void 0); + case "optional": + case "nullable": + case "readonly": + case "success": + return def.innerType ? fastPathAcceptsAbsence(def.innerType) : true; + case "catch": + return true; + case "union": + return def.options ? def.options.some(fastPathAcceptsAbsence) : true; + case "intersection": + if (!def.left || !def.right) + return true; + return fastPathAcceptsAbsence(def.left) && fastPathAcceptsAbsence(def.right); + case "pipe": + return def.in ? fastPathAcceptsAbsence(def.in) : true; + default: + return true; + } +} +__name(fastPathAcceptsAbsence, "fastPathAcceptsAbsence"); +function dropsWhenAbsent(schema2) { + return schema2._zod.optin === "optional" && schema2._zod.optout === "optional"; +} +__name(dropsWhenAbsent, "dropsWhenAbsent"); +function mayOmitUndefined(schema2) { + return (schema2._zod.optin !== "defaulted" || schema2._zod.optout === "optional") && mayOutputUndefined(schema2); +} +__name(mayOmitUndefined, "mayOmitUndefined"); +function mayOutputUndefined(schema2) { + const def = schema2._zod.def; + switch (def.type) { + case "string": + case "number": + case "boolean": + case "bigint": + case "symbol": + case "null": + case "nan": + case "date": + case "object": + case "array": + case "tuple": + case "record": + case "map": + case "set": + case "file": + case "template_literal": + case "never": + case "success": + return false; + case "literal": + return !!def.values?.includes(void 0); + case "enum": + return !!schema2._zod.values?.has(void 0); + case "optional": + return true; + case "nullable": + case "readonly": + case "nonoptional": + return def.innerType ? mayOutputUndefined(def.innerType) : true; + case "union": + return def.options ? def.options.some(mayOutputUndefined) : true; + case "intersection": + return !def.left || !def.right || mayOutputUndefined(def.left) || mayOutputUndefined(def.right); + case "pipe": + return def.out ? mayOutputUndefined(def.out) : true; + default: + return true; + } +} +__name(mayOutputUndefined, "mayOutputUndefined"); +function generateNullableCheck(doc, ctx, schema2, accessor, buildsValue = true) { + const def = schema2._zod.def; + const outputVar = buildsValue ? newVar(ctx) : null; + if (outputVar) + doc.write(`let ${outputVar} = null;`); + doc.write(`if (${accessor} !== null) {`); + doc.indented((d5) => { + const innerOutput = generateCheck(d5, ctx, def.innerType, accessor, buildsValue); + if (outputVar && innerOutput !== null) + d5.write(`${outputVar} = ${innerOutput};`); + }); + doc.write(`}`); + return outputVar; +} +__name(generateNullableCheck, "generateNullableCheck"); +function generateSizeGate(doc, schema2, size) { + for (const [max, check2] of sizeCaps(schema2._zod.def.checks)) { + doc.write(`if (${size} > ${numericOperand(max, check2._zod.def.check)}) return INVALID;`); + } +} +__name(generateSizeGate, "generateSizeGate"); +function generateArrayCheck(doc, ctx, schema2, accessor, buildsValue = true) { + const def = schema2._zod.def; + doc.write(`if (!Array.isArray(${accessor})) return INVALID;`); + generateSizeGate(doc, schema2, `${accessor}.length`); + const outputVar = buildsValue ? newVar(ctx) : null; + const iVar = newVar(ctx); + const elemVar = newVar(ctx); + if (outputVar) + doc.write(`const ${outputVar} = new Array(${accessor}.length);`); + doc.write(`for (let ${iVar} = 0; ${iVar} < ${accessor}.length; ${iVar}++) {`); + doc.indented((d5) => { + d5.write(`const ${elemVar} = ${accessor}[${iVar}];`); + const elemOutput = compileChild(d5, ctx, def.element, elemVar, buildsValue); + if (outputVar && elemOutput !== null) + d5.write(`${outputVar}[${iVar}] = ${elemOutput};`); + }); + doc.write(`}`); + return outputVar; +} +__name(generateArrayCheck, "generateArrayCheck"); +function generateLiteralCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const values = def.values; + if (values.length !== 1) { + const literalSet = addConstant(ctx, new Set(values)); + doc.write(`if (!${literalSet}.has(${accessor})) return INVALID;`); + return accessor; + } + const value = values[0]; + if (typeof value === "number" && Number.isNaN(value)) { + const literalSet = addConstant(ctx, new Set(values)); + doc.write(`if (!${literalSet}.has(${accessor})) return INVALID;`); + return accessor; + } + if (typeof value === "string") { + doc.write(`if (${accessor} !== ${esc(value)}) return INVALID;`); + } else if (typeof value === "number" || typeof value === "boolean") { + doc.write(`if (${accessor} !== ${value}) return INVALID;`); + } else if (value === null) { + doc.write(`if (${accessor} !== null) return INVALID;`); + } else if (value === void 0) { + doc.write(`if (${accessor} !== undefined) return INVALID;`); + } else if (typeof value === "bigint") { + doc.write(`if (${accessor} !== ${value}n) return INVALID;`); + } else { + throw new ZodCompileUnsupportedError(`literal type ${typeof value}`); + } + return accessor; +} +__name(generateLiteralCheck, "generateLiteralCheck"); +function generateEnumCheck(doc, ctx, schema2, accessor) { + const values = schema2._zod.values; + if (!values) { + throw new ZodCompileUnsupportedError("enum schema without enumerated values"); + } + const enumSet = addConstant(ctx, values); + doc.write(`if (!${enumSet}.has(${accessor})) return INVALID;`); + return accessor; +} +__name(generateEnumCheck, "generateEnumCheck"); +function generateWrapperCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + return generateCheck(doc, ctx, def.innerType, accessor); +} +__name(generateWrapperCheck, "generateWrapperCheck"); +function generateDefaultCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const descriptor = Object.getOwnPropertyDescriptor(schema2._zod.def, "defaultValue"); + const defaultGetter = descriptor ? () => schema2._zod.def.defaultValue : void 0; + if (schema2._zod.def.type === "prefault") { + if (!defaultGetter) { + return generateCheck(doc, ctx, def.innerType, accessor); + } + const defaultFn = addConstant(ctx, defaultGetter); + const inputVar = newVar(ctx); + doc.write(`let ${inputVar} = ${accessor};`); + doc.write(`if (${accessor} === undefined) ${inputVar} = ${defaultFn}();`); + return generateCheck(doc, ctx, def.innerType, inputVar); + } + const outputVar = newVar(ctx); + if (defaultGetter) { + const defaultFn = addConstant(ctx, defaultGetter); + const cloneFn = addConstant(ctx, shallowClone); + doc.write(`let ${outputVar};`); + doc.write(`if (${accessor} === undefined) {`); + doc.indented((d5) => { + d5.write(`${outputVar} = ${cloneFn}(${defaultFn}());`); + }); + doc.write(`} else {`); + doc.indented((d5) => { + const innerOutput = generateCheck(d5, ctx, def.innerType, accessor); + d5.write(`${outputVar} = ${innerOutput} === undefined ? ${cloneFn}(${defaultFn}()) : ${innerOutput};`); + }); + doc.write(`}`); + } else { + doc.write(`let ${outputVar};`); + doc.write(`if (${accessor} !== undefined) {`); + doc.indented((d5) => { + const innerOutput = generateCheck(d5, ctx, def.innerType, accessor); + d5.write(`${outputVar} = ${innerOutput};`); + }); + doc.write(`}`); + } + return outputVar; +} +__name(generateDefaultCheck, "generateDefaultCheck"); +function generateNonOptionalCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const innerOutput = generateCheck(doc, ctx, def.innerType, accessor); + const outputVar = newVar(ctx); + doc.write(`const ${outputVar} = ${innerOutput};`); + doc.write(`if (${outputVar} === undefined) return INVALID;`); + return outputVar; +} +__name(generateNonOptionalCheck, "generateNonOptionalCheck"); +function generateTupleCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const items = def.items; + const rest = def.rest; + doc.write(`if (!Array.isArray(${accessor})) return INVALID;`); + const optinStart = getTupleOptStart2(items, "optin"); + const optoutStart = getTupleOptStart2(items, "optout"); + if (rest) { + doc.write(`if (${accessor}.length < ${optinStart}) return INVALID;`); + } else { + doc.write(`if (${accessor}.length < ${optinStart} || ${accessor}.length > ${items.length}) return INVALID;`); + } + const outputVar = newVar(ctx); + doc.write(`const ${outputVar} = [];`); + for (let i5 = 0; i5 < items.length; i5++) { + const itemSchema = items[i5]; + if (i5 >= optoutStart) { + doc.write(`if (${outputVar}.length === ${i5}) {`); + doc.indented((d5) => { + d5.write(`if (${i5} < ${accessor}.length) {`); + d5.indented((d22) => { + const elemVar = newVar(ctx); + d22.write(`const ${elemVar} = ${accessor}[${i5}];`); + const elemOutput = compileChild(d22, ctx, itemSchema, elemVar); + d22.write(`${outputVar}[${i5}] = ${elemOutput};`); + }); + d5.write(`} else {`); + d5.indented((d22) => { + if (dropsWhenAbsent(itemSchema)) { + d22.write(`${outputVar}.length = ${i5};`); + return; + } + const elemVar = newVar(ctx); + const branchVar = newVar(ctx); + d22.write(`const ${elemVar} = undefined;`); + d22.write(`const ${branchVar} = (() => {`); + d22.indented((d32) => { + const elemOutput = compileChild(d32, ctx, itemSchema, elemVar); + d32.write(`return ${elemOutput};`); + }); + d22.write(`})();`); + d22.write(`if (${branchVar} === INVALID || ${branchVar} === undefined) ${outputVar}.length = ${i5};`); + d22.write(`else ${outputVar}[${i5}] = ${branchVar};`); + }); + d5.write(`}`); + }); + doc.write(`}`); + } else { + const elemVar = newVar(ctx); + doc.write(`const ${elemVar} = ${accessor}[${i5}];`); + const elemOutput = compileChild(doc, ctx, itemSchema, elemVar); + doc.write(`${outputVar}[${i5}] = ${elemOutput};`); + } + } + if (rest) { + const iVar = newVar(ctx); + const elemVar = newVar(ctx); + doc.write(`for (let ${iVar} = ${items.length}; ${iVar} < ${accessor}.length; ${iVar}++) {`); + doc.indented((d5) => { + d5.write(`const ${elemVar} = ${accessor}[${iVar}];`); + const elemOutput = compileChild(d5, ctx, rest, elemVar); + d5.write(`${outputVar}[${iVar}] = ${elemOutput};`); + }); + doc.write(`}`); + } + return outputVar; +} +__name(generateTupleCheck, "generateTupleCheck"); +function getTupleOptStart2(items, key) { + for (let i5 = items.length - 1; i5 >= 0; i5--) { + const omittable = key === "optin" ? items[i5]._zod.optin !== void 0 : items[i5]._zod.optout === "optional"; + if (!omittable) + return i5 + 1; + } + return 0; +} +__name(getTupleOptStart2, "getTupleOptStart"); +function generateUnionCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const options = def.options; + if (def.discriminator) { + return generateDiscriminatedUnionCheck(doc, ctx, def, accessor); + } + if (def.inclusive === false) { + throw new ZodCompileUnsupportedError("exclusive unions (z.xor)"); + } + if (options.length === 0) { + doc.write("return INVALID;"); + return accessor; + } + if (options.length === 1) { + return generateCheck(doc, ctx, options[0], accessor); + } + const allLiterals = options.every((opt) => opt._zod.def.type === "literal" && !opt._zod.def.checks?.length); + if (allLiterals) { + const values = new Set(options.flatMap((opt) => opt._zod.def.values)); + const valuesConst = addConstant(ctx, values); + doc.write(`if (!${valuesConst}.has(${accessor})) return INVALID;`); + return accessor; + } + const outputVar = newVar(ctx); + doc.write(`let ${outputVar};`); + for (let i5 = 0; i5 < options.length; i5++) { + const opt = options[i5]; + if (i5 === 0) { + doc.write(`${outputVar} = (() => {`); + } else { + doc.write(`if (${outputVar} === INVALID) ${outputVar} = (() => {`); + } + doc.indented((d5) => { + const branchOutput = generateCheck(d5, ctx, opt, accessor); + d5.write(`return ${branchOutput};`); + }); + doc.write(`})();`); + } + doc.write(`if (${outputVar} === INVALID) return INVALID;`); + return outputVar; +} +__name(generateUnionCheck, "generateUnionCheck"); +function generateDiscriminatedUnionCheck(doc, ctx, def, accessor) { + if (def.unionFallback) { + throw new ZodCompileUnsupportedError("discriminated union with unionFallback"); + } + if (def.options.length === 0) { + doc.write("return INVALID;"); + return accessor; + } + const discVar = newVar(ctx); + const outputVar = newVar(ctx); + doc.write(`const ${discVar} = ${accessor}?.[${esc(def.discriminator)}];`); + doc.write(`let ${outputVar};`); + let firstBranch = true; + const claimed = /* @__PURE__ */ new Set(); + for (const option of def.options) { + const values = option._zod.propValues?.[def.discriminator]; + if (!values || values.size === 0) { + throw new ZodCompileUnsupportedError("discriminated union option without static discriminator values"); + } + for (const value of values) { + if (claimed.has(value)) { + throw new ZodCompileUnsupportedError(`duplicate discriminator value ${String(value)}`); + } + claimed.add(value); + } + const conditions = Array.from(values, (value) => literalEquality(ctx, discVar, value)); + const prefix = firstBranch ? "if" : "else if"; + doc.write(`${prefix} (${conditions.join(" || ")}) {`); + doc.indented((d5) => { + const branchOutput = generateCheck(d5, ctx, option, accessor); + d5.write(`${outputVar} = ${branchOutput};`); + }); + doc.write(`}`); + firstBranch = false; + } + doc.write(`else { return INVALID; }`); + return outputVar; +} +__name(generateDiscriminatedUnionCheck, "generateDiscriminatedUnionCheck"); +function literalEquality(ctx, accessor, value) { + if (typeof value === "string") + return `${accessor} === ${esc(value)}`; + if (typeof value === "number") { + if (Number.isNaN(value)) + return `Number.isNaN(${accessor})`; + return `${accessor} === ${value}`; + } + if (typeof value === "boolean") + return `${accessor} === ${value}`; + if (value === null) + return `${accessor} === null`; + if (value === void 0) + return `${accessor} === undefined`; + if (typeof value === "bigint") + return `${accessor} === ${value}n`; + if (typeof value === "symbol") { + const symbolConst = addConstant(ctx, value); + return `${accessor} === ${symbolConst}`; + } + throw new ZodCompileUnsupportedError(`literal discriminator value ${String(value)}`); +} +__name(literalEquality, "literalEquality"); +function generateIntersectionCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + ctx.definite = false; + const leftOutput = compileChild(doc, ctx, def.left, accessor); + const rightOutput = compileChild(doc, ctx, def.right, accessor); + const mergeConst = addConstant(ctx, mergeValues); + const mergedVar = newVar(ctx); + doc.write(`const ${mergedVar} = ${mergeConst}(${leftOutput}, ${rightOutput});`); + doc.write(`if (!${mergedVar}.valid) return INVALID;`); + return `${mergedVar}.data`; +} +__name(generateIntersectionCheck, "generateIntersectionCheck"); +function generateRecordCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const isPlainObjectConst = addConstant(ctx, isPlainObject); + doc.write(`if (!${isPlainObjectConst}(${accessor})) return INVALID;`); + const outputVar = newVar(ctx); + const kVar = newVar(ctx); + const valVar = newVar(ctx); + doc.write(`const ${outputVar} = {};`); + const recordDef = def; + const keyValues = recordDef.partial ? void 0 : def.keyType._zod.values; + if (keyValues) { + const inputKeys = []; + for (const key of keyValues) { + if (!(typeof key === "string" || typeof key === "number" || typeof key === "symbol")) { + throw new ZodCompileUnsupportedError(`record key value ${String(key)}`); + } + const inputKey = typeof key === "number" ? key.toString() : key; + if (inputKey === "__proto__") { + throw new ZodCompileUnsupportedError('record key "__proto__"'); + } + inputKeys.push(inputKey); + const keyConst = addConstant(ctx, key); + const outKey = generateCheck(doc, ctx, def.keyType, keyConst); + const valueVar = newVar(ctx); + doc.write(`const ${valueVar} = ${accessor}[${literalPropertyKey(ctx, inputKey)}];`); + const valOutput = compileChild(doc, ctx, def.valueType, valueVar); + doc.write(`${outputVar}[${outKey}] = ${valOutput};`); + } + const knownKeysConst = addConstant(ctx, new Set(inputKeys)); + doc.write(`for (const ${kVar} in ${accessor}) {`); + doc.indented((d5) => { + d5.write(`if (${knownKeysConst}.has(${kVar})) continue;`); + if (recordDef.mode === "loose") { + d5.write(`if (${kVar} !== "__proto__") ${outputVar}[${kVar}] = ${accessor}[${kVar}];`); + } else { + d5.write(`return INVALID;`); + } + }); + doc.write(`}`); + return outputVar; + } + const keyDef = def.keyType._zod.def; + const keyIsBareString = keyDef.type === "string" && keyDef.format === void 0 && !keyDef.coerce && (keyDef.checks?.length ?? 0) === 0; + if (!keyIsBareString) { + const isLoose = def.mode === "loose"; + const keyFn = compileFn(def.keyType); + if (keyFn.definite === false) + ctx.definite = false; + const keyFast = addConstant(ctx, keyFn); + const numericConst = addConstant(ctx, number); + const outKeyVar = newVar(ctx); + emitOwnKeys(doc, ctx, accessor, kVar, (d5) => { + d5.write(`let ${outKeyVar} = ${keyFast}(${kVar});`); + d5.write(`if (${outKeyVar} === INVALID && typeof ${kVar} === "string" && ${numericConst}.test(${kVar})) ${outKeyVar} = ${keyFast}(Number(${kVar}));`); + if (isLoose) { + d5.write(`if (${outKeyVar} === INVALID) { ${outputVar}[${kVar}] = ${accessor}[${kVar}]; continue; }`); + } else { + d5.write(`if (${outKeyVar} === INVALID) return INVALID;`); + } + d5.write(`if (${outKeyVar} === "__proto__") continue;`); + const valueVar = newVar(ctx); + d5.write(`const ${valueVar} = ${accessor}[${kVar}];`); + const valOutput = compileChild(d5, ctx, def.valueType, valueVar); + d5.write(`${outputVar}[${outKeyVar}] = ${valOutput};`); + }); + return outputVar; + } + emitOwnKeys(doc, ctx, accessor, kVar, (d5) => { + d5.write(`const ${valVar} = ${accessor}[${kVar}];`); + const valOutput = compileChild(d5, ctx, def.valueType, valVar); + d5.write(`${outputVar}[${kVar}] = ${valOutput};`); + }, `return INVALID;`); + return outputVar; +} +__name(generateRecordCheck, "generateRecordCheck"); +function emitOwnKeys(doc, ctx, accessor, kVar, body, onSymbol) { + const propIsEnumerableConst = addConstant(ctx, Object.prototype.propertyIsEnumerable); + const symsVar = newVar(ctx); + const keysVar = newVar(ctx); + const iVar = newVar(ctx); + doc.write(`const ${symsVar} = Object.getOwnPropertySymbols(${accessor});`); + doc.write(`const ${keysVar} = Object.getOwnPropertyNames(${accessor});`); + doc.write(`for (let ${iVar} = 0; ${iVar} < ${keysVar}.length; ${iVar}++) {`); + doc.indented((d5) => { + d5.write(`const ${kVar} = ${keysVar}[${iVar}];`); + d5.write(`if (${kVar} === "__proto__" || !${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`); + body(d5); + }); + doc.write(`}`); + doc.write(`for (let ${iVar} = 0; ${iVar} < ${symsVar}.length; ${iVar}++) {`); + doc.indented((d5) => { + d5.write(`const ${kVar} = ${symsVar}[${iVar}];`); + d5.write(`if (!${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`); + if (onSymbol) + d5.write(onSymbol); + else + body(d5); + }); + doc.write(`}`); +} +__name(emitOwnKeys, "emitOwnKeys"); +function literalPropertyKey(ctx, key) { + if (typeof key === "string") + return esc(key); + return addConstant(ctx, key); +} +__name(literalPropertyKey, "literalPropertyKey"); +function generateMapCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + doc.write(`if (!(${accessor} instanceof Map)) return INVALID;`); + generateSizeGate(doc, schema2, `${accessor}.size`); + const outputVar = newVar(ctx); + const kVar = newVar(ctx); + const valVar = newVar(ctx); + doc.write(`const ${outputVar} = new Map();`); + doc.write(`for (const [${kVar}, ${valVar}] of ${accessor}) {`); + doc.indented((d5) => { + const keyOutput = generateCheck(d5, ctx, def.keyType, kVar); + const valOutput = generateCheck(d5, ctx, def.valueType, valVar); + d5.write(`${outputVar}.set(${keyOutput}, ${valOutput});`); + }); + doc.write(`}`); + return outputVar; +} +__name(generateMapCheck, "generateMapCheck"); +function generateSetCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + doc.write(`if (!(${accessor} instanceof Set)) return INVALID;`); + generateSizeGate(doc, schema2, `${accessor}.size`); + const outputVar = newVar(ctx); + const valVar = newVar(ctx); + doc.write(`const ${outputVar} = new Set();`); + doc.write(`for (const ${valVar} of ${accessor}) {`); + doc.indented((d5) => { + const valOutput = generateCheck(d5, ctx, def.valueType, valVar); + d5.write(`${outputVar}.add(${valOutput});`); + }); + doc.write(`}`); + return outputVar; +} +__name(generateSetCheck, "generateSetCheck"); +function generateFileCheck(doc, accessor) { + doc.write(`if (!(${accessor} instanceof File)) return INVALID;`); + return accessor; +} +__name(generateFileCheck, "generateFileCheck"); +function generateTemplateLiteralCheck(doc, ctx, schema2, accessor) { + doc.write(`if (typeof ${accessor} !== "string") return INVALID;`); + const pattern = schema2._zod.pattern; + if (pattern) { + const patternConst = addConstant(ctx, pattern); + doc.write(`${patternConst}.lastIndex = 0;`); + doc.write(`if (!${patternConst}.test(${accessor})) return INVALID;`); + } + return accessor; +} +__name(generateTemplateLiteralCheck, "generateTemplateLiteralCheck"); +function generateLazyCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const getterConst = addUserConstant(ctx, def.getter); + const cacheConst = addConstant(ctx, { parser: null }); + doc.write(`if (!${cacheConst}.parser) {`); + doc.indented((d5) => { + d5.write(`const inner = ${getterConst}();`); + d5.write(`${cacheConst}.parser = function(input) {`); + d5.indented((d22) => { + d22.write(`const result = inner._zod.run({ value: input, issues: [] }, {});`); + d22.write(`return result.issues.length === 0 ? result.value : INVALID;`); + }); + d5.write(`};`); + }); + doc.write(`}`); + const outputVar = newVar(ctx); + doc.write(`const ${outputVar} = ${cacheConst}.parser(${accessor});`); + doc.write(`if (${outputVar} === INVALID) return INVALID;`); + return outputVar; +} +__name(generateLazyCheck, "generateLazyCheck"); +function generatePipeCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + const inputOutput = generateCheck(doc, ctx, def.in, accessor); + if (def.transform) { + if (isAsyncFunction(def.transform)) { + throw new ZodCompileAsyncError("z.compile: async transforms in pipes are not supported"); + } + const transformFn = def.transform; + const helperFn = /* @__PURE__ */ __name((value) => { + const fakePayload = { value, issues: [], addIssue: pushIssue }; + const result = transformFn(value, fakePayload); + if (result instanceof Promise) + return INVALID; + return fakePayload.issues.length === 0 ? result : INVALID; + }, "helperFn"); + const helperConst = addUserConstant(ctx, helperFn); + const transformedVar = newVar(ctx); + doc.write(`const ${transformedVar} = ${helperConst}(${inputOutput});`); + doc.write(`if (${transformedVar} === INVALID) return INVALID;`); + return generateCheck(doc, ctx, def.out, transformedVar); + } else { + return generateCheck(doc, ctx, def.out, inputOutput); + } +} +__name(generatePipeCheck, "generatePipeCheck"); +function isAsyncFunction(fn) { + return typeof fn === "function" && (fn.constructor.name === "AsyncFunction" || fn[Symbol.toStringTag] === "AsyncFunction"); +} +__name(isAsyncFunction, "isAsyncFunction"); +function generateCustomCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + if (def.fn) { + if (isAsyncFunction(def.fn)) { + throw new ZodCompileAsyncError("z.compile: async custom predicates are not supported"); + } + const fnConst = addUserConstant(ctx, def.fn); + const throwAsyncConst = addConstant(ctx, throwAsync); + const resVar = newVar(ctx); + doc.write(`const ${resVar} = ${fnConst}(${accessor});`); + doc.write(`if (${resVar} instanceof Promise) ${throwAsyncConst}();`); + doc.write(`if (!${resVar}) return INVALID;`); + } else { + throw new ZodCompileUnsupportedError("custom schema without a predicate function"); + } + return accessor; +} +__name(generateCustomCheck, "generateCustomCheck"); +function runtimeCatch(innerSchema, catchValue, value) { + const result = innerSchema._zod.run({ value, issues: [] }, {}); + if (result && typeof result.then === "function") + return INVALID; + const r5 = result; + if (r5.issues.length === 0) + return r5.value; + return catchValue(); +} +__name(runtimeCatch, "runtimeCatch"); +function generateCatchCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + if (!def.catchValue[CONSTANT_CATCH]) { + throw new ZodCompileUnsupportedError("catch with a callback (only a constant catch value compiles)", false); + } + const outputVar = newVar(ctx); + doc.write(`let ${outputVar} = (() => {`); + doc.indented((d5) => { + const innerOut = compileChild(d5, ctx, def.innerType, accessor); + d5.write(`return ${innerOut};`); + }); + doc.write(`})();`); + const innerConst = addConstant(ctx, def.innerType); + const catchConst = addUserConstant(ctx, def.catchValue); + const catchHelperConst = addConstant(ctx, runtimeCatch); + doc.write(`if (${outputVar} === INVALID) {`); + doc.indented((d5) => { + d5.write(`${outputVar} = ${catchHelperConst}(${innerConst}, ${catchConst}, ${accessor});`); + d5.write(`if (${outputVar} === INVALID) return INVALID;`); + }); + doc.write(`}`); + return outputVar; +} +__name(generateCatchCheck, "generateCatchCheck"); +function generateTransformCheck(doc, ctx, schema2, accessor) { + const def = schema2._zod.def; + if (def.transform) { + if (isAsyncFunction(def.transform)) { + throw new ZodCompileAsyncError("z.compile: async transforms are not supported"); + } + const transformFn = def.transform; + const helperFn = /* @__PURE__ */ __name((value) => { + const fakePayload = { value, issues: [], addIssue: pushIssue }; + const result = transformFn(value, fakePayload); + if (result instanceof Promise) + return INVALID; + return fakePayload.issues.length === 0 ? result : INVALID; + }, "helperFn"); + const helperConst = addUserConstant(ctx, helperFn); + const outputVar = newVar(ctx); + doc.write(`const ${outputVar} = ${helperConst}(${accessor});`); + doc.write(`if (${outputVar} === INVALID) return INVALID;`); + return outputVar; + } + return accessor; +} +__name(generateTransformCheck, "generateTransformCheck"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/api.js +function snapshotChecks(def) { + if (def.checks) + def.checks = [...def.checks]; + return def; +} +__name(snapshotChecks, "snapshotChecks"); +// @__NO_SIDE_EFFECTS__ +function _string(Class2, params) { + return new Class2(snapshotChecks({ type: "string", ...normalizeParams(params) })); +} +__name(_string, "_string"); +// @__NO_SIDE_EFFECTS__ +function _coercedString(Class2, params) { + return new Class2(snapshotChecks({ type: "string", coerce: true, ...normalizeParams(params) })); +} +__name(_coercedString, "_coercedString"); +// @__NO_SIDE_EFFECTS__ +function _email(Class2, params) { + return new Class2({ + type: "string", + format: "email", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_email, "_email"); +// @__NO_SIDE_EFFECTS__ +function _guid(Class2, params) { + return new Class2({ + type: "string", + format: "guid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_guid, "_guid"); +// @__NO_SIDE_EFFECTS__ +function _uuid(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_uuid, "_uuid"); +// @__NO_SIDE_EFFECTS__ +function _uuidv4(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v4", + ...normalizeParams(params) + }); +} +__name(_uuidv4, "_uuidv4"); +// @__NO_SIDE_EFFECTS__ +function _uuidv6(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v6", + ...normalizeParams(params) + }); +} +__name(_uuidv6, "_uuidv6"); +// @__NO_SIDE_EFFECTS__ +function _uuidv7(Class2, params) { + return new Class2({ + type: "string", + format: "uuid", + check: "string_format", + abort: false, + version: "v7", + ...normalizeParams(params) + }); +} +__name(_uuidv7, "_uuidv7"); +// @__NO_SIDE_EFFECTS__ +function _url(Class2, params) { + return new Class2({ + type: "string", + format: "url", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_url, "_url"); +// @__NO_SIDE_EFFECTS__ +function _emoji2(Class2, params) { + return new Class2({ + type: "string", + format: "emoji", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_emoji2, "_emoji"); +// @__NO_SIDE_EFFECTS__ +function _nanoid(Class2, params) { + return new Class2({ + type: "string", + format: "nanoid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_nanoid, "_nanoid"); +// @__NO_SIDE_EFFECTS__ +function _cuid(Class2, params) { + return new Class2({ + type: "string", + format: "cuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_cuid, "_cuid"); +// @__NO_SIDE_EFFECTS__ +function _cuid2(Class2, params) { + return new Class2({ + type: "string", + format: "cuid2", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_cuid2, "_cuid2"); +// @__NO_SIDE_EFFECTS__ +function _ulid(Class2, params) { + return new Class2({ + type: "string", + format: "ulid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_ulid, "_ulid"); +// @__NO_SIDE_EFFECTS__ +function _xid(Class2, params) { + return new Class2({ + type: "string", + format: "xid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_xid, "_xid"); +// @__NO_SIDE_EFFECTS__ +function _ksuid(Class2, params) { + return new Class2({ + type: "string", + format: "ksuid", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_ksuid, "_ksuid"); +// @__NO_SIDE_EFFECTS__ +function _ipv4(Class2, params) { + return new Class2({ + type: "string", + format: "ipv4", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_ipv4, "_ipv4"); +// @__NO_SIDE_EFFECTS__ +function _ipv6(Class2, params) { + return new Class2({ + type: "string", + format: "ipv6", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_ipv6, "_ipv6"); +// @__NO_SIDE_EFFECTS__ +function _mac(Class2, params) { + return new Class2({ + type: "string", + format: "mac", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_mac, "_mac"); +// @__NO_SIDE_EFFECTS__ +function _cidrv4(Class2, params) { + return new Class2({ + type: "string", + format: "cidrv4", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_cidrv4, "_cidrv4"); +// @__NO_SIDE_EFFECTS__ +function _cidrv6(Class2, params) { + return new Class2({ + type: "string", + format: "cidrv6", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_cidrv6, "_cidrv6"); +// @__NO_SIDE_EFFECTS__ +function _base64(Class2, params) { + return new Class2({ + type: "string", + format: "base64", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_base64, "_base64"); +// @__NO_SIDE_EFFECTS__ +function _base64url(Class2, params) { + return new Class2({ + type: "string", + format: "base64url", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_base64url, "_base64url"); +// @__NO_SIDE_EFFECTS__ +function _e164(Class2, params) { + return new Class2({ + type: "string", + format: "e164", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_e164, "_e164"); +// @__NO_SIDE_EFFECTS__ +function _creditCard(Class2, params) { + return new Class2({ + type: "string", + format: "credit_card", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_creditCard, "_creditCard"); +// @__NO_SIDE_EFFECTS__ +function _iban(Class2, params) { + return new Class2({ + type: "string", + format: "iban", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_iban, "_iban"); +// @__NO_SIDE_EFFECTS__ +function _jwt(Class2, params) { + return new Class2({ + type: "string", + format: "jwt", + check: "string_format", + abort: false, + ...normalizeParams(params) + }); +} +__name(_jwt, "_jwt"); +var TimePrecision = { + Any: null, + Minute: -1, + Second: 0, + Millisecond: 3, + Microsecond: 6 +}; +// @__NO_SIDE_EFFECTS__ +function _isoDateTime(Class2, params) { + return new Class2({ + type: "string", + format: "datetime", + check: "string_format", + offset: false, + local: false, + precision: null, + ...normalizeParams(params) + }); +} +__name(_isoDateTime, "_isoDateTime"); +// @__NO_SIDE_EFFECTS__ +function _isoDate(Class2, params) { + return new Class2({ + type: "string", + format: "date", + check: "string_format", + ...normalizeParams(params) + }); +} +__name(_isoDate, "_isoDate"); +// @__NO_SIDE_EFFECTS__ +function _isoTime(Class2, params) { + return new Class2({ + type: "string", + format: "time", + check: "string_format", + precision: null, + ...normalizeParams(params) + }); +} +__name(_isoTime, "_isoTime"); +// @__NO_SIDE_EFFECTS__ +function _isoDuration(Class2, params) { + return new Class2({ + type: "string", + format: "duration", + check: "string_format", + ...normalizeParams(params) + }); +} +__name(_isoDuration, "_isoDuration"); +// @__NO_SIDE_EFFECTS__ +function _number(Class2, params) { + return new Class2(snapshotChecks({ type: "number", checks: [], ...normalizeParams(params) })); +} +__name(_number, "_number"); +// @__NO_SIDE_EFFECTS__ +function _coercedNumber(Class2, params) { + return new Class2(snapshotChecks({ type: "number", coerce: true, checks: [], ...normalizeParams(params) })); +} +__name(_coercedNumber, "_coercedNumber"); +// @__NO_SIDE_EFFECTS__ +function _int(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "safeint", + ...normalizeParams(params) + }); +} +__name(_int, "_int"); +// @__NO_SIDE_EFFECTS__ +function _float32(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "float32", + ...normalizeParams(params) + }); +} +__name(_float32, "_float32"); +// @__NO_SIDE_EFFECTS__ +function _float64(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "float64", + ...normalizeParams(params) + }); +} +__name(_float64, "_float64"); +// @__NO_SIDE_EFFECTS__ +function _int32(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "int32", + ...normalizeParams(params) + }); +} +__name(_int32, "_int32"); +// @__NO_SIDE_EFFECTS__ +function _uint32(Class2, params) { + return new Class2({ + type: "number", + check: "number_format", + abort: false, + format: "uint32", + ...normalizeParams(params) + }); +} +__name(_uint32, "_uint32"); +// @__NO_SIDE_EFFECTS__ +function _boolean(Class2, params) { + return new Class2({ + type: "boolean", + ...normalizeParams(params) + }); +} +__name(_boolean, "_boolean"); +// @__NO_SIDE_EFFECTS__ +function _coercedBoolean(Class2, params) { + return new Class2({ + type: "boolean", + coerce: true, + ...normalizeParams(params) + }); +} +__name(_coercedBoolean, "_coercedBoolean"); +// @__NO_SIDE_EFFECTS__ +function _bigint(Class2, params) { + return new Class2({ + type: "bigint", + ...normalizeParams(params) + }); +} +__name(_bigint, "_bigint"); +// @__NO_SIDE_EFFECTS__ +function _coercedBigint(Class2, params) { + return new Class2({ + type: "bigint", + coerce: true, + ...normalizeParams(params) + }); +} +__name(_coercedBigint, "_coercedBigint"); +// @__NO_SIDE_EFFECTS__ +function _int64(Class2, params) { + return new Class2({ + type: "bigint", + check: "bigint_format", + abort: false, + format: "int64", + ...normalizeParams(params) + }); +} +__name(_int64, "_int64"); +// @__NO_SIDE_EFFECTS__ +function _uint64(Class2, params) { + return new Class2({ + type: "bigint", + check: "bigint_format", + abort: false, + format: "uint64", + ...normalizeParams(params) + }); +} +__name(_uint64, "_uint64"); +// @__NO_SIDE_EFFECTS__ +function _symbol(Class2, params) { + return new Class2({ + type: "symbol", + ...normalizeParams(params) + }); +} +__name(_symbol, "_symbol"); +// @__NO_SIDE_EFFECTS__ +function _undefined2(Class2, params) { + return new Class2({ + type: "undefined", + ...normalizeParams(params) + }); +} +__name(_undefined2, "_undefined"); +// @__NO_SIDE_EFFECTS__ +function _null2(Class2, params) { + return new Class2({ + type: "null", + ...normalizeParams(params) + }); +} +__name(_null2, "_null"); +// @__NO_SIDE_EFFECTS__ +function _any(Class2) { + return new Class2({ + type: "any" + }); +} +__name(_any, "_any"); +// @__NO_SIDE_EFFECTS__ +function _unknown(Class2) { + return new Class2({ + type: "unknown" + }); +} +__name(_unknown, "_unknown"); +// @__NO_SIDE_EFFECTS__ +function _never(Class2, params) { + return new Class2({ + type: "never", + ...normalizeParams(params) + }); +} +__name(_never, "_never"); +// @__NO_SIDE_EFFECTS__ +function _void(Class2, params) { + return new Class2({ + type: "void", + ...normalizeParams(params) + }); +} +__name(_void, "_void"); +// @__NO_SIDE_EFFECTS__ +function _date(Class2, params) { + return new Class2({ + type: "date", + ...normalizeParams(params) + }); +} +__name(_date, "_date"); +// @__NO_SIDE_EFFECTS__ +function _coercedDate(Class2, params) { + return new Class2({ + type: "date", + coerce: true, + ...normalizeParams(params) + }); +} +__name(_coercedDate, "_coercedDate"); +// @__NO_SIDE_EFFECTS__ +function _nan(Class2, params) { + return new Class2({ + type: "nan", + ...normalizeParams(params) + }); +} +__name(_nan, "_nan"); +// @__NO_SIDE_EFFECTS__ +function _lt(value, params) { + return new $ZodCheckLessThan({ + check: "less_than", + ...normalizeParams(params), + value, + inclusive: false + }); +} +__name(_lt, "_lt"); +// @__NO_SIDE_EFFECTS__ +function _lte(value, params) { + return new $ZodCheckLessThan({ + check: "less_than", + ...normalizeParams(params), + value, + inclusive: true + }); +} +__name(_lte, "_lte"); +// @__NO_SIDE_EFFECTS__ +function _gt(value, params) { + return new $ZodCheckGreaterThan({ + check: "greater_than", + ...normalizeParams(params), + value, + inclusive: false + }); +} +__name(_gt, "_gt"); +// @__NO_SIDE_EFFECTS__ +function _gte(value, params) { + return new $ZodCheckGreaterThan({ + check: "greater_than", + ...normalizeParams(params), + value, + inclusive: true + }); +} +__name(_gte, "_gte"); +// @__NO_SIDE_EFFECTS__ +function _positive(params) { + return /* @__PURE__ */ _gt(0, params); +} +__name(_positive, "_positive"); +// @__NO_SIDE_EFFECTS__ +function _negative(params) { + return /* @__PURE__ */ _lt(0, params); +} +__name(_negative, "_negative"); +// @__NO_SIDE_EFFECTS__ +function _nonpositive(params) { + return /* @__PURE__ */ _lte(0, params); +} +__name(_nonpositive, "_nonpositive"); +// @__NO_SIDE_EFFECTS__ +function _nonnegative(params) { + return /* @__PURE__ */ _gte(0, params); +} +__name(_nonnegative, "_nonnegative"); +// @__NO_SIDE_EFFECTS__ +function _multipleOf(value, params) { + return new $ZodCheckMultipleOf({ + check: "multiple_of", + ...normalizeParams(params), + value + }); +} +__name(_multipleOf, "_multipleOf"); +// @__NO_SIDE_EFFECTS__ +function _maxSize(maximum, params) { + return new $ZodCheckMaxSize({ + check: "max_size", + ...normalizeParams(params), + maximum + }); +} +__name(_maxSize, "_maxSize"); +// @__NO_SIDE_EFFECTS__ +function _minSize(minimum, params) { + return new $ZodCheckMinSize({ + check: "min_size", + ...normalizeParams(params), + minimum + }); +} +__name(_minSize, "_minSize"); +// @__NO_SIDE_EFFECTS__ +function _size(size, params) { + return new $ZodCheckSizeEquals({ + check: "size_equals", + ...normalizeParams(params), + size + }); +} +__name(_size, "_size"); +// @__NO_SIDE_EFFECTS__ +function _maxLength(maximum, params) { + const ch = new $ZodCheckMaxLength({ + check: "max_length", + ...normalizeParams(params), + maximum + }); + return ch; +} +__name(_maxLength, "_maxLength"); +// @__NO_SIDE_EFFECTS__ +function _minLength(minimum, params) { + return new $ZodCheckMinLength({ + check: "min_length", + ...normalizeParams(params), + minimum + }); +} +__name(_minLength, "_minLength"); +// @__NO_SIDE_EFFECTS__ +function _length(length, params) { + return new $ZodCheckLengthEquals({ + check: "length_equals", + ...normalizeParams(params), + length + }); +} +__name(_length, "_length"); +// @__NO_SIDE_EFFECTS__ +function _regex(pattern, params) { + return new $ZodCheckRegex({ + check: "string_format", + format: "regex", + ...normalizeParams(params), + pattern + }); +} +__name(_regex, "_regex"); +// @__NO_SIDE_EFFECTS__ +function _lowercase(params) { + return new $ZodCheckLowerCase({ + check: "string_format", + format: "lowercase", + ...normalizeParams(params) + }); +} +__name(_lowercase, "_lowercase"); +// @__NO_SIDE_EFFECTS__ +function _uppercase(params) { + return new $ZodCheckUpperCase({ + check: "string_format", + format: "uppercase", + ...normalizeParams(params) + }); +} +__name(_uppercase, "_uppercase"); +// @__NO_SIDE_EFFECTS__ +function _includes(includes, params) { + return new $ZodCheckIncludes({ + check: "string_format", + format: "includes", + ...normalizeParams(params), + includes + }); +} +__name(_includes, "_includes"); +// @__NO_SIDE_EFFECTS__ +function _startsWith(prefix, params) { + return new $ZodCheckStartsWith({ + check: "string_format", + format: "starts_with", + ...normalizeParams(params), + prefix + }); +} +__name(_startsWith, "_startsWith"); +// @__NO_SIDE_EFFECTS__ +function _endsWith(suffix, params) { + return new $ZodCheckEndsWith({ + check: "string_format", + format: "ends_with", + ...normalizeParams(params), + suffix + }); +} +__name(_endsWith, "_endsWith"); +// @__NO_SIDE_EFFECTS__ +function _property(property, schema2, params) { + return new $ZodCheckProperty({ + check: "property", + property, + schema: schema2, + ...normalizeParams(params) + }); +} +__name(_property, "_property"); +// @__NO_SIDE_EFFECTS__ +function _properties(shape, params) { + return new $ZodCheckProperties({ + check: "properties", + shape, + ...normalizeParams(params) + }); +} +__name(_properties, "_properties"); +// @__NO_SIDE_EFFECTS__ +function _mime(types3, params) { + return new $ZodCheckMimeType({ + check: "mime_type", + mime: types3, + ...normalizeParams(params) + }); +} +__name(_mime, "_mime"); +// @__NO_SIDE_EFFECTS__ +function _overwrite(tx) { + return new $ZodCheckOverwrite({ + check: "overwrite", + tx + }); +} +__name(_overwrite, "_overwrite"); +// @__NO_SIDE_EFFECTS__ +function _normalize(form) { + return /* @__PURE__ */ _overwrite((input2) => input2.normalize(form)); +} +__name(_normalize, "_normalize"); +// @__NO_SIDE_EFFECTS__ +function _trim() { + return /* @__PURE__ */ _overwrite((input2) => input2.trim()); +} +__name(_trim, "_trim"); +// @__NO_SIDE_EFFECTS__ +function _toLowerCase() { + return /* @__PURE__ */ _overwrite((input2) => input2.toLowerCase()); +} +__name(_toLowerCase, "_toLowerCase"); +// @__NO_SIDE_EFFECTS__ +function _toUpperCase() { + return /* @__PURE__ */ _overwrite((input2) => input2.toUpperCase()); +} +__name(_toUpperCase, "_toUpperCase"); +// @__NO_SIDE_EFFECTS__ +function _slugify() { + return /* @__PURE__ */ _overwrite((input2) => slugify(input2)); +} +__name(_slugify, "_slugify"); +// @__NO_SIDE_EFFECTS__ +function _array(Class2, element, params) { + return new Class2({ + type: "array", + element, + // get element() { + // return element; + // }, + ...normalizeParams(params) + }); +} +__name(_array, "_array"); +// @__NO_SIDE_EFFECTS__ +function _union(Class2, options, params) { + return new Class2({ + type: "union", + options, + ...normalizeParams(params) + }); +} +__name(_union, "_union"); +function _xor(Class2, options, params) { + return new Class2({ + type: "union", + options, + inclusive: false, + ...normalizeParams(params) + }); +} +__name(_xor, "_xor"); +// @__NO_SIDE_EFFECTS__ +function _discriminatedUnion(Class2, discriminator, options, params) { + return new Class2({ + type: "union", + options, + discriminator, + ...normalizeParams(params) + }); +} +__name(_discriminatedUnion, "_discriminatedUnion"); +// @__NO_SIDE_EFFECTS__ +function _intersection(Class2, left, right) { + return new Class2({ + type: "intersection", + left, + right + }); +} +__name(_intersection, "_intersection"); +// @__NO_SIDE_EFFECTS__ +function _tuple(Class2, items, _paramsOrRest, _params) { + const hasRest = _paramsOrRest instanceof $ZodType; + const params = hasRest ? _params : _paramsOrRest; + const rest = hasRest ? _paramsOrRest : null; + return new Class2({ + type: "tuple", + items, + rest, + ...normalizeParams(params) + }); +} +__name(_tuple, "_tuple"); +// @__NO_SIDE_EFFECTS__ +function _record(Class2, keyType, valueType, params) { + return new Class2({ + type: "record", + keyType, + valueType, + ...normalizeParams(params) + }); +} +__name(_record, "_record"); +// @__NO_SIDE_EFFECTS__ +function _map(Class2, keyType, valueType, params) { + return new Class2({ + type: "map", + keyType, + valueType, + ...normalizeParams(params) + }); +} +__name(_map, "_map"); +// @__NO_SIDE_EFFECTS__ +function _set(Class2, valueType, params) { + return new Class2({ + type: "set", + valueType, + ...normalizeParams(params) + }); +} +__name(_set, "_set"); +// @__NO_SIDE_EFFECTS__ +function _enum(Class2, values, params) { + const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; + return new Class2({ + type: "enum", + entries, + ...normalizeParams(params) + }); +} +__name(_enum, "_enum"); +// @__NO_SIDE_EFFECTS__ +function _nativeEnum(Class2, entries, params) { + return new Class2({ + type: "enum", + entries, + ...normalizeParams(params) + }); +} +__name(_nativeEnum, "_nativeEnum"); +// @__NO_SIDE_EFFECTS__ +function _literal(Class2, value, params) { + return new Class2({ + type: "literal", + values: Array.isArray(value) ? value : [value], + ...normalizeParams(params) + }); +} +__name(_literal, "_literal"); +// @__NO_SIDE_EFFECTS__ +function _file(Class2, params) { + return new Class2({ + type: "file", + ...normalizeParams(params) + }); +} +__name(_file, "_file"); +// @__NO_SIDE_EFFECTS__ +function _transform(Class2, fn) { + return new Class2({ + type: "transform", + transform: fn + }); +} +__name(_transform, "_transform"); +// @__NO_SIDE_EFFECTS__ +function _optional(Class2, innerType) { + return new Class2({ + type: "optional", + innerType + }); +} +__name(_optional, "_optional"); +// @__NO_SIDE_EFFECTS__ +function _nullable(Class2, innerType) { + return new Class2({ + type: "nullable", + innerType + }); +} +__name(_nullable, "_nullable"); +// @__NO_SIDE_EFFECTS__ +function _default(Class2, innerType, defaultValue) { + return new Class2({ + type: "default", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : shallowClone(defaultValue); + } + }); +} +__name(_default, "_default"); +// @__NO_SIDE_EFFECTS__ +function _nonoptional(Class2, innerType, params) { + return new Class2({ + type: "nonoptional", + innerType, + ...normalizeParams(params) + }); +} +__name(_nonoptional, "_nonoptional"); +// @__NO_SIDE_EFFECTS__ +function _success(Class2, innerType) { + return new Class2({ + type: "success", + innerType + }); +} +__name(_success, "_success"); +// @__NO_SIDE_EFFECTS__ +function _catch(Class2, innerType, catchValue) { + return new Class2({ + type: "catch", + innerType, + catchValue: typeof catchValue === "function" ? catchValue : constantCatch(catchValue) + }); +} +__name(_catch, "_catch"); +// @__NO_SIDE_EFFECTS__ +function _pipe(Class2, in_, out) { + return new Class2({ + type: "pipe", + in: in_, + out + }); +} +__name(_pipe, "_pipe"); +// @__NO_SIDE_EFFECTS__ +function _readonly(Class2, innerType) { + return new Class2({ + type: "readonly", + innerType + }); +} +__name(_readonly, "_readonly"); +// @__NO_SIDE_EFFECTS__ +function _templateLiteral(Class2, parts, params) { + return new Class2({ + type: "template_literal", + parts, + ...normalizeParams(params) + }); +} +__name(_templateLiteral, "_templateLiteral"); +// @__NO_SIDE_EFFECTS__ +function _lazy(Class2, getter) { + return new Class2({ + type: "lazy", + getter + }); +} +__name(_lazy, "_lazy"); +// @__NO_SIDE_EFFECTS__ +function _promise(Class2, innerType) { + return new Class2({ + type: "promise", + innerType + }); +} +__name(_promise, "_promise"); +// @__NO_SIDE_EFFECTS__ +function _custom(Class2, fn, _params) { + const norm = normalizeParams(_params); + norm.abort ?? (norm.abort = true); + const schema2 = new Class2({ + type: "custom", + check: "custom", + fn, + ...norm + }); + return schema2; +} +__name(_custom, "_custom"); +// @__NO_SIDE_EFFECTS__ +function _refine(Class2, fn, _params) { + const schema2 = new Class2({ + type: "custom", + check: "custom", + fn, + ...normalizeParams(_params) + }); + return schema2; +} +__name(_refine, "_refine"); +// @__NO_SIDE_EFFECTS__ +function _superRefine(fn, params) { + const ch = /* @__PURE__ */ _check((payload) => { + payload.addIssue = (issue2) => { + if (typeof issue2 === "string") { + payload.issues.push(issue(issue2, payload.value, ch._zod.def)); + } else { + const _issue = issue2; + if (_issue.fatal) + _issue.continue = false; + _issue.code ?? (_issue.code = "custom"); + if (!("input" in _issue)) + _issue.input = payload.value; + _issue.inst ?? (_issue.inst = ch); + _issue.continue ?? (_issue.continue = !ch._zod.def.abort); + payload.issues.push(issue(_issue)); + } + }; + return fn(payload.value, payload); + }, params); + return ch; +} +__name(_superRefine, "_superRefine"); +// @__NO_SIDE_EFFECTS__ +function _check(fn, params) { + const ch = new $ZodCheck({ + check: "custom", + ...normalizeParams(params) + }); + ch._zod.check = fn; + return ch; +} +__name(_check, "_check"); +// @__NO_SIDE_EFFECTS__ +function describe(description) { + const ch = new $ZodCheck({ check: "describe" }); + ch._zod.onattach = [ + (inst) => { + const existing = globalRegistry.get(inst) ?? {}; + globalRegistry.add(inst, { ...existing, description }); + } + ]; + ch._zod.check = () => { + }; + return ch; +} +__name(describe, "describe"); +// @__NO_SIDE_EFFECTS__ +function meta(metadata) { + const ch = new $ZodCheck({ check: "meta" }); + ch._zod.onattach = [ + (inst) => { + const existing = globalRegistry.get(inst) ?? {}; + globalRegistry.add(inst, { ...existing, ...metadata }); + } + ]; + ch._zod.check = () => { + }; + return ch; +} +__name(meta, "meta"); +// @__NO_SIDE_EFFECTS__ +function _stringbool(Classes, _params) { + const params = normalizeParams(_params); + let truthyArray = params.truthy ?? ["true", "1", "yes", "on", "y", "enabled"]; + let falsyArray = params.falsy ?? ["false", "0", "no", "off", "n", "disabled"]; + if (params.case !== "sensitive") { + truthyArray = truthyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); + falsyArray = falsyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v); + } + const truthySet = new Set(truthyArray); + const falsySet = new Set(falsyArray); + const _Codec = Classes.Codec ?? $ZodCodec; + const _Boolean = Classes.Boolean ?? $ZodBoolean; + const _String = Classes.String ?? $ZodString; + const stringSchema = new _String({ type: "string", error: params.error }); + const booleanSchema = new _Boolean({ type: "boolean", error: params.error }); + const codec2 = new _Codec({ + type: "pipe", + in: stringSchema, + out: booleanSchema, + transform: /* @__PURE__ */ __name(((input2, payload) => { + let data = input2; + if (params.case !== "sensitive") + data = data.toLowerCase(); + if (truthySet.has(data)) { + return true; + } else if (falsySet.has(data)) { + return false; + } else { + payload.issues.push({ + code: "invalid_value", + expected: "stringbool", + values: [...truthySet, ...falsySet], + input: payload.value, + inst: codec2, + continue: false + }); + return {}; + } + }), "transform"), + reverseTransform: /* @__PURE__ */ __name(((input2, _payload) => { + if (input2 === true) { + return truthyArray[0] || "true"; + } else { + return falsyArray[0] || "false"; + } + }), "reverseTransform"), + error: params.error + }); + codec2._zod.bag.truthy = truthyArray; + codec2._zod.bag.falsy = falsyArray; + codec2._zod.bag.case = params.case ?? "insensitive"; + return codec2; +} +__name(_stringbool, "_stringbool"); +// @__NO_SIDE_EFFECTS__ +function _stringFormat(Class2, format, fnOrRegex, _params = {}) { + const params = normalizeParams(_params); + const def = { + check: "string_format", + type: "string", + format, + fn: typeof fnOrRegex === "function" ? fnOrRegex : (val) => fnOrRegex.test(val), + ...params + }; + if (fnOrRegex instanceof RegExp) { + def.pattern = fnOrRegex; + } + const inst = new Class2(def); + return inst; +} +__name(_stringFormat, "_stringFormat"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js +function assignProps(target, ...sources) { + for (const source of sources) { + for (const key of Reflect.ownKeys(source)) { + if (Object.prototype.propertyIsEnumerable.call(source, key)) { + assignProp(target, key, source[key]); + } + } + } + return target; +} +__name(assignProps, "assignProps"); +function initializeContext(params) { + let target = params?.target ?? "draft-2020-12"; + if (target === "draft-4") + target = "draft-04"; + if (target === "draft-7") + target = "draft-07"; + return { + processors: params.processors ?? {}, + metadataRegistry: params?.metadata ?? globalRegistry, + target, + unrepresentable: params?.unrepresentable ?? "throw", + override: params?.override ?? (() => { + }), + io: params?.io ?? "output", + counter: 0, + seen: /* @__PURE__ */ new Map(), + sharedDefsExtractedFor: void 0, + sharedEmitDoneFor: void 0, + cycles: params?.cycles ?? "ref", + reused: params?.reused ?? "inline", + intersections: [], + deferred: [], + external: params?.external ?? void 0 + }; +} +__name(initializeContext, "initializeContext"); +function handleUnrepresentable(schema2, ctx, json2, params, message) { + const result = typeof ctx.unrepresentable === "function" ? ctx.unrepresentable({ zodSchema: schema2, path: params.path, message }) : ctx.unrepresentable; + if (result === "any") + return false; + if (result === void 0 || result === "throw") + throw new Error(message); + Object.assign(json2, result); + return true; +} +__name(handleUnrepresentable, "handleUnrepresentable"); +function processSchema(schema2, ctx, _params = { path: [], schemaPath: [] }) { + var _a4; + const def = schema2._zod.def; + const seen = ctx.seen.get(schema2); + if (seen) { + seen.count++; + const isCycle = _params.schemaPath.includes(schema2); + if (isCycle) { + seen.cycle = _params.path; + } + return seen.schema; + } + const result = { schema: {}, count: 1, cycle: void 0, path: _params.path }; + ctx.seen.set(schema2, result); + ctx.sharedDefsExtractedFor = void 0; + ctx.sharedEmitDoneFor = void 0; + const overrideSchema = schema2._zod.toJSONSchema?.(); + if (overrideSchema) { + result.schema = overrideSchema; + } else { + const params = { + ..._params, + schemaPath: [..._params.schemaPath, schema2], + path: _params.path + }; + if (schema2._zod.processJSONSchema) { + schema2._zod.processJSONSchema(ctx, result.schema, params); + } else { + const _json = result.schema; + const processor = ctx.processors[def.type]; + if (!processor) { + throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`); + } + processor(schema2, ctx, _json, params); + } + const parent = schema2._zod.parent; + if (parent) { + if (!result.ref) + result.ref = parent; + processSchema(parent, ctx, params); + ctx.seen.get(parent).isParent = true; + } + } + const meta3 = ctx.metadataRegistry.get(schema2); + if (meta3) + assignProps(result.schema, meta3); + if (ctx.io === "input" && isTransforming(schema2)) { + delete result.schema.examples; + delete result.schema.default; + } + if (ctx.io === "input" && "_prefault" in result.schema) + (_a4 = result.schema).default ?? (_a4.default = result.schema._prefault); + delete result.schema._prefault; + const _result = ctx.seen.get(schema2); + return _result.schema; +} +__name(processSchema, "processSchema"); +function encodeJSONPointerSegment(segment) { + return segment.replace(/~/g, "~0").replace(/\//g, "~1"); +} +__name(encodeJSONPointerSegment, "encodeJSONPointerSegment"); +function extractDefs(ctx, schema2) { + const root5 = ctx.seen.get(schema2); + if (!root5) + throw new Error("Unprocessed schema. This is a bug in Zod."); + if (ctx.external && ctx.sharedDefsExtractedFor === ctx.external) + return; + const idToSchema = /* @__PURE__ */ new Map(); + for (const entry of ctx.seen.entries()) { + const id = ctx.metadataRegistry.get(entry[0])?.id; + if (id) { + const existing = idToSchema.get(id); + if (existing && existing !== entry[0]) { + throw new Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`); + } + idToSchema.set(id, entry[0]); + } + } + const makeURI = /* @__PURE__ */ __name((entry) => { + const defsSegment = ctx.target === "draft-2020-12" ? "$defs" : "definitions"; + if (ctx.external) { + const externalId = ctx.external.registry.get(entry[0])?.id; + const uriGenerator = ctx.external.uri ?? ((id2) => id2); + if (externalId) { + return { ref: uriGenerator(externalId) }; + } + const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`; + entry[1].defId = id; + return { defId: id, ref: `${uriGenerator("__shared")}#/${defsSegment}/${encodeJSONPointerSegment(id)}` }; + } + const uriPrefix = `#`; + const defUriPrefix = `${uriPrefix}/${defsSegment}/`; + if (entry[1] === root5 && !entry[1].schema.id) { + return { ref: uriPrefix }; + } + const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`; + return { defId, ref: defUriPrefix + encodeJSONPointerSegment(defId) }; + }, "makeURI"); + const extractToDef = /* @__PURE__ */ __name((entry) => { + if (entry[1].schema.$ref) { + return; + } + const seen = entry[1]; + const { ref, defId } = makeURI(entry); + seen.def = { ...seen.schema }; + if (defId) + seen.defId = defId; + const schema3 = seen.schema; + for (const key in schema3) { + delete schema3[key]; + } + schema3.$ref = ref; + }, "extractToDef"); + if (ctx.cycles === "throw") { + for (const entry of ctx.seen.entries()) { + const seen = entry[1]; + if (seen.cycle) { + throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`); + } + } + } + for (const entry of ctx.seen.entries()) { + const seen = entry[1]; + if (schema2 === entry[0]) { + extractToDef(entry); + continue; + } + if (ctx.external) { + const ext = ctx.external.registry.get(entry[0])?.id; + if (schema2 !== entry[0] && ext) { + extractToDef(entry); + continue; + } + } + const id = ctx.metadataRegistry.get(entry[0])?.id; + if (id) { + extractToDef(entry); + continue; + } + if (seen.cycle) { + extractToDef(entry); + continue; + } + if (seen.count > 1) { + if (ctx.reused === "ref") { + extractToDef(entry); + } + } + } + if (ctx.external) + ctx.sharedDefsExtractedFor = ctx.external; +} +__name(extractDefs, "extractDefs"); +function compactTypeUnion(schema2) { + const options = schema2.anyOf; + if (!Array.isArray(options) || options.length === 0 || schema2.type !== void 0) + return; + const types3 = []; + for (const option of options) { + if (!option || typeof option !== "object") + return; + compactTypeUnion(option); + const keys = Object.keys(option); + if (keys.length !== 1 || keys[0] !== "type") + return; + const type = option.type; + for (const member of Array.isArray(type) ? type : [type]) { + if (typeof member !== "string") + return; + if (!types3.includes(member)) + types3.push(member); + } + } + delete schema2.anyOf; + schema2.type = types3.length === 1 ? types3[0] : types3; +} +__name(compactTypeUnion, "compactTypeUnion"); +var FOLDABLE_KEYS = /* @__PURE__ */ new Set(["type", "properties", "required", "additionalProperties"]); +var UNION_KEYS = ["oneOf", "anyOf"]; +function undeclaredConstraint(member) { + const extra = member.additionalProperties; + if (extra === void 0 || extra === false || typeof extra !== "object" || extra === null) + return null; + return Object.keys(extra).length ? extra : null; +} +__name(undeclaredConstraint, "undeclaredConstraint"); +function foldObjects(members2) { + const objects = []; + for (const member of members2) { + if (typeof member !== "object" || member.type !== "object") + return null; + for (const key in member) { + if (!FOLDABLE_KEYS.has(key)) + return null; + } + objects.push(member); + } + const properties = {}; + const required2 = /* @__PURE__ */ new Set(); + for (const object2 of objects) { + for (const key in object2.properties) { + if (Object.prototype.hasOwnProperty.call(properties, key)) + continue; + const parts = []; + for (const other of objects) { + const part = other.properties?.[key] ?? undeclaredConstraint(other); + if (part === null || part === void 0) + continue; + if (!parts.some((seen) => JSON.stringify(seen) === JSON.stringify(part))) + parts.push(part); + } + const merged = parts.length === 1 ? parts[0] : foldObjects(parts) ?? { allOf: parts }; + assignProp(properties, key, merged); + } + for (const key of object2.required ?? []) + required2.add(key); + } + const folded = { type: "object", properties }; + if (required2.size) + folded.required = [...required2]; + if (objects.every((object2) => object2.additionalProperties === false)) { + folded.additionalProperties = false; + } else { + const constraints = []; + for (const object2 of objects) { + const constraint = undeclaredConstraint(object2); + if (constraint && !constraints.some((seen) => JSON.stringify(seen) === JSON.stringify(constraint))) + constraints.push(constraint); + } + if (constraints.length === 1) + folded.additionalProperties = constraints[0]; + else if (constraints.length > 1) + folded.additionalProperties = { allOf: constraints }; + } + return folded; +} +__name(foldObjects, "foldObjects"); +function foldIntersection(json2) { + const allOf = json2.allOf; + if (!Array.isArray(allOf) || allOf.length < 2) + return; + for (const key of FOLDABLE_KEYS) + if (key in json2) + return; + const unions = allOf.filter((m3) => UNION_KEYS.some((k5) => Array.isArray(m3[k5]))); + let folded = null; + if (!unions.length) { + folded = foldObjects(allOf); + } else { + const union2 = unions[0]; + const keyword = UNION_KEYS.find((k5) => Array.isArray(union2[k5])); + if (Object.keys(union2).length !== 1) + return; + const rest = allOf.filter((m3) => m3 !== union2); + const branches = union2[keyword].map((branch) => foldObjects([...rest, branch])); + if (branches.some((b5) => !b5)) + return; + folded = { [keyword]: branches }; + } + if (!folded) + return; + delete json2.allOf; + assignProps(json2, folded); +} +__name(foldIntersection, "foldIntersection"); +function finalize(ctx, schema2) { + const root5 = ctx.seen.get(schema2); + if (!root5) + throw new Error("Unprocessed schema. This is a bug in Zod."); + const flattenRef = /* @__PURE__ */ __name((zodSchema) => { + const seen = ctx.seen.get(zodSchema); + if (seen.ref === null) + return; + const schema3 = seen.def ?? seen.schema; + const _cached = { ...schema3 }; + const ref = seen.ref; + seen.ref = null; + if (ref) { + flattenRef(ref); + const refSeen = ctx.seen.get(ref); + const refSchema = refSeen.schema; + if (refSchema.$ref && (ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0")) { + schema3.allOf = schema3.allOf ?? []; + schema3.allOf.push(refSchema); + } else { + assignProps(schema3, refSchema); + } + assignProps(schema3, _cached); + const isParentRef = zodSchema._zod.parent === ref; + if (isParentRef) { + for (const key in schema3) { + if (key === "$ref" || key === "allOf") + continue; + if (!(key in _cached)) { + delete schema3[key]; + } + } + } + if (refSchema.$ref && refSeen.def) { + for (const key in schema3) { + if (key === "$ref" || key === "allOf") + continue; + if (key in refSeen.def && JSON.stringify(schema3[key]) === JSON.stringify(refSeen.def[key])) { + delete schema3[key]; + } + } + } + } + const parent = zodSchema._zod.parent; + if (parent && parent !== ref) { + flattenRef(parent); + const parentSeen = ctx.seen.get(parent); + if (parentSeen?.schema.$ref) { + schema3.$ref = parentSeen.schema.$ref; + if (parentSeen.def) { + for (const key in schema3) { + if (key === "$ref" || key === "allOf") + continue; + if (key in parentSeen.def && JSON.stringify(schema3[key]) === JSON.stringify(parentSeen.def[key])) { + delete schema3[key]; + } + } + } + } + } + ctx.override({ + zodSchema, + jsonSchema: schema3, + path: seen.path ?? [] + }); + }, "flattenRef"); + if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) { + for (const entry of [...ctx.seen.entries()].reverse()) { + flattenRef(entry[0]); + } + if (ctx.target !== "openapi-3.0") { + for (const entry of ctx.seen.entries()) { + compactTypeUnion(entry[1].def ?? entry[1].schema); + } + } + for (const rewrite of ctx.deferred) + rewrite(); + if (ctx.intersections.length) { + const carriers = /* @__PURE__ */ new Map(); + for (const seen of ctx.seen.values()) { + for (const json2 of [seen.schema, seen.def]) { + const allOf = json2?.allOf; + if (!Array.isArray(allOf)) + continue; + const existing = carriers.get(allOf); + if (existing) + existing.push(json2); + else + carriers.set(allOf, [json2]); + } + } + for (const allOf of ctx.intersections) { + for (const json2 of carriers.get(allOf) ?? []) + foldIntersection(json2); + } + } + } + const result = {}; + if (ctx.target === "draft-2020-12") { + result.$schema = "https://json-schema.org/draft/2020-12/schema"; + } else if (ctx.target === "draft-07") { + result.$schema = "http://json-schema.org/draft-07/schema#"; + } else if (ctx.target === "draft-04") { + result.$schema = "http://json-schema.org/draft-04/schema#"; + } else if (ctx.target === "openapi-3.0") { + } else { + } + if (ctx.external?.uri) { + const id = ctx.external.registry.get(schema2)?.id; + if (!id) + throw new Error("Schema is missing an `id` property"); + result.$id = ctx.external.uri(id); + } + assignProps(result, root5.defId ? root5.schema : root5.def ?? root5.schema); + const rootMetaId = ctx.metadataRegistry.get(schema2)?.id; + if (rootMetaId !== void 0 && result.id === rootMetaId) + delete result.id; + const defs = ctx.external?.defs ?? {}; + if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) { + for (const entry of ctx.seen.entries()) { + const seen = entry[1]; + if (seen.def && seen.defId) { + if (seen.def.id === seen.defId) + delete seen.def.id; + assignProp(defs, seen.defId, seen.def); + } + } + } + if (ctx.external) + ctx.sharedEmitDoneFor = ctx.external; + if (ctx.external) { + } else { + if (Object.keys(defs).length > 0) { + if (ctx.target === "draft-2020-12") { + result.$defs = defs; + } else { + result.definitions = defs; + } + } + } + try { + const finalized = JSON.parse(JSON.stringify(result)); + Object.defineProperty(finalized, "~standard", { + value: { + ...schema2["~standard"], + jsonSchema: { + input: createStandardJSONSchemaMethod(schema2, "input", ctx.processors), + output: createStandardJSONSchemaMethod(schema2, "output", ctx.processors) + } + }, + enumerable: false, + writable: false + }); + return finalized; + } catch (_err) { + throw new Error("Error converting schema to JSON."); + } +} +__name(finalize, "finalize"); +function isTransforming(_schema, _ctx) { + const ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() }; + if (ctx.seen.has(_schema)) + return false; + ctx.seen.add(_schema); + const def = _schema._zod.def; + if (def.type === "transform") + return true; + if (def.type === "array") + return isTransforming(def.element, ctx); + if (def.type === "set") + return isTransforming(def.valueType, ctx); + if (def.type === "lazy") + return isTransforming(def.getter(), ctx); + if (def.type === "promise" || def.type === "optional" || def.type === "nonoptional" || def.type === "nullable" || def.type === "readonly" || def.type === "default" || def.type === "prefault" || def.type === "catch") { + return isTransforming(def.innerType, ctx); + } + if (def.type === "intersection") { + return isTransforming(def.left, ctx) || isTransforming(def.right, ctx); + } + if (def.type === "record" || def.type === "map") { + return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); + } + if (def.type === "pipe") { + if (_schema._zod.traits.has("$ZodCodec")) + return true; + return isTransforming(def.in, ctx) || isTransforming(def.out, ctx); + } + if (def.type === "object") { + for (const key in def.shape) { + if (isTransforming(def.shape[key], ctx)) + return true; + } + return false; + } + if (def.type === "union") { + for (const option of def.options) { + if (isTransforming(option, ctx)) + return true; + } + return false; + } + if (def.type === "tuple") { + for (const item of def.items) { + if (isTransforming(item, ctx)) + return true; + } + if (def.rest && isTransforming(def.rest, ctx)) + return true; + return false; + } + return false; +} +__name(isTransforming, "isTransforming"); +var createToJSONSchemaMethod = /* @__PURE__ */ __name((schema2, processors = {}) => (params) => { + const ctx = initializeContext({ ...params, processors }); + processSchema(schema2, ctx); + extractDefs(ctx, schema2); + return finalize(ctx, schema2); +}, "createToJSONSchemaMethod"); +var createStandardJSONSchemaMethod = /* @__PURE__ */ __name((schema2, io, processors = {}) => (params) => { + const { libraryOptions, target } = params ?? {}; + const ctx = initializeContext({ ...libraryOptions ?? {}, target, io, processors }); + processSchema(schema2, ctx); + extractDefs(ctx, schema2); + return finalize(ctx, schema2); +}, "createStandardJSONSchemaMethod"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js +var narrowMin = /* @__PURE__ */ __name((agg, key, value) => { + if (agg[key] === void 0 || value > agg[key]) + agg[key] = value; +}, "narrowMin"); +var narrowMax = /* @__PURE__ */ __name((agg, key, value) => { + if (agg[key] === void 0 || value < agg[key]) + agg[key] = value; +}, "narrowMax"); +var narrowBoth = /* @__PURE__ */ __name((agg, value) => { + narrowMin(agg, "minimum", value); + narrowMax(agg, "maximum", value); +}, "narrowBoth"); +var addDivisor = /* @__PURE__ */ __name((agg, value) => { + agg.multipleOf ?? (agg.multipleOf = []); + if (!agg.multipleOf.includes(value)) + agg.multipleOf.push(value); +}, "addDivisor"); +var addPattern = /* @__PURE__ */ __name((agg, pattern) => { + agg.patterns ?? (agg.patterns = /* @__PURE__ */ new Set()); + agg.patterns.add(pattern); +}, "addPattern"); +var intersectMime = /* @__PURE__ */ __name((agg, mime) => { + agg.mime = agg.mime ? agg.mime.filter((m3) => mime.includes(m3)) : [...mime]; +}, "intersectMime"); +var setFormat = /* @__PURE__ */ __name((agg, format) => { + agg.format = format; + if (format.includes("int")) + agg.isInt = true; +}, "setFormat"); +var minContributor = /* @__PURE__ */ __name((agg, def) => narrowMin(agg, "minimum", def.minimum), "minContributor"); +var maxContributor = /* @__PURE__ */ __name((agg, def) => narrowMax(agg, "maximum", def.maximum), "maxContributor"); +var formatContributor = /* @__PURE__ */ __name((ranges) => (agg, def) => { + setFormat(agg, def.format); + const [minimum, maximum] = ranges[def.format]; + narrowMin(agg, "minimum", minimum); + narrowMax(agg, "maximum", maximum); +}, "formatContributor"); +var contributors = { + greater_than: /* @__PURE__ */ __name((agg, def) => narrowMin(agg, def.inclusive ? "minimum" : "exclusiveMinimum", def.value), "greater_than"), + less_than: /* @__PURE__ */ __name((agg, def) => narrowMax(agg, def.inclusive ? "maximum" : "exclusiveMaximum", def.value), "less_than"), + multiple_of: /* @__PURE__ */ __name((agg, def) => addDivisor(agg, def.value), "multiple_of"), + number_format: formatContributor(NUMBER_FORMAT_RANGES), + bigint_format: formatContributor(BIGINT_FORMAT_RANGES), + min_length: minContributor, + max_length: maxContributor, + length_equals: /* @__PURE__ */ __name((agg, def) => narrowBoth(agg, def.length), "length_equals"), + min_size: minContributor, + max_size: maxContributor, + size_equals: /* @__PURE__ */ __name((agg, def) => narrowBoth(agg, def.size), "size_equals"), + string_format: /* @__PURE__ */ __name((agg, def) => { + setFormat(agg, def.format); + if (def.pattern) + addPattern(agg, def.pattern); + if (def.format === "base64" || def.format === "base64url") + agg.contentEncoding = def.format; + if (def.local || def.precision === -1) + agg.laxFormat = true; + }, "string_format"), + mime_type: /* @__PURE__ */ __name((agg, def) => intersectMime(agg, def.mime), "mime_type") +}; +function aggregateChecks(schema2) { + const agg = {}; + const def = schema2._zod.def; + const list = schema2._zod.traits.has("$ZodCheck") ? [schema2, ...def.checks ?? []] : def.checks ?? []; + for (const ch of list) + contributors[ch._zod.def.check]?.(agg, ch._zod.def); + const bag = schema2._zod.bag; + if (bag.minimum !== void 0) + narrowMin(agg, "minimum", bag.minimum); + if (bag.exclusiveMinimum !== void 0) + narrowMin(agg, "exclusiveMinimum", bag.exclusiveMinimum); + if (bag.maximum !== void 0) + narrowMax(agg, "maximum", bag.maximum); + if (bag.exclusiveMaximum !== void 0) + narrowMax(agg, "exclusiveMaximum", bag.exclusiveMaximum); + if (bag.multipleOf !== void 0) + addDivisor(agg, bag.multipleOf); + if (bag.format !== void 0) { + agg.format ?? (agg.format = bag.format); + if (bag.format.includes("int")) + agg.isInt = true; + } + if (bag.mime) + intersectMime(agg, bag.mime); + for (const pattern of bag.patterns ?? []) + addPattern(agg, pattern); + return agg; +} +__name(aggregateChecks, "aggregateChecks"); +var formatMap = { + guid: "uuid", + url: "uri", + datetime: "date-time", + json_string: "json-string", + regex: "" + // do not set +}; +var exactPatterns = /* @__PURE__ */ new Map([ + [base64Charset, base64], + [base64urlCharset, base64url] +]); +var exactPattern = /* @__PURE__ */ __name((p3) => exactPatterns.get(p3) ?? p3, "exactPattern"); +var stringProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, _params) => { + const json2 = _json; + json2.type = "string"; + const { minimum, maximum, format, patterns, contentEncoding, laxFormat } = aggregateChecks(schema2); + if (typeof minimum === "number") + json2.minLength = minimum; + if (typeof maximum === "number") + json2.maxLength = maximum; + if (format) { + json2.format = formatMap[format] ?? format; + if (json2.format === "") + delete json2.format; + if (format === "time" || laxFormat) { + delete json2.format; + } + } + if (contentEncoding) + json2.contentEncoding = contentEncoding; + if (patterns && patterns.size > 0) { + const patternList = [...patterns].map(exactPattern); + if (patternList.length === 1) + json2.pattern = patternList[0].source; + else if (patternList.length > 1) { + json2.allOf = [ + ...patternList.map((regex) => ({ + ...ctx.target === "draft-07" || ctx.target === "draft-04" || ctx.target === "openapi-3.0" ? { type: "string" } : {}, + pattern: regex.source + })) + ]; + } + } +}, "stringProcessor"); +var numberProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const json2 = _json; + const { minimum, maximum, multipleOf, exclusiveMaximum, exclusiveMinimum, isInt } = aggregateChecks(schema2); + json2.type = isInt ? "integer" : "number"; + const exMin = typeof exclusiveMinimum === "number" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY); + const exMax = typeof exclusiveMaximum === "number" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY); + const legacy = ctx.target === "draft-04" || ctx.target === "openapi-3.0"; + if (exMin) { + if (legacy) { + json2.minimum = exclusiveMinimum; + json2.exclusiveMinimum = true; + } else { + json2.exclusiveMinimum = exclusiveMinimum; + } + } else if (typeof minimum === "number") { + json2.minimum = minimum; + } + if (exMax) { + if (legacy) { + json2.maximum = exclusiveMaximum; + json2.exclusiveMaximum = true; + } else { + json2.exclusiveMaximum = exclusiveMaximum; + } + } else if (typeof maximum === "number") { + json2.maximum = maximum; + } + if (multipleOf) { + const divisors = /* @__PURE__ */ new Set(); + for (const divisor of multipleOf) { + if (Number.isFinite(divisor) && divisor !== 0) + divisors.add(Math.abs(divisor)); + else + handleUnrepresentable(schema2, ctx, json2, params, `A multipleOf divisor of ${divisor} cannot be represented in JSON Schema`); + } + const [first, ...rest] = divisors; + if (first !== void 0) + json2.multipleOf = first; + if (rest.length) + json2.allOf = [...json2.allOf ?? [], ...rest.map((m3) => ({ multipleOf: m3 }))]; + } +}, "numberProcessor"); +var booleanProcessor = /* @__PURE__ */ __name((_schema, _ctx, json2, _params) => { + json2.type = "boolean"; +}, "booleanProcessor"); +var bigintProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "BigInt cannot be represented in JSON Schema"); +}, "bigintProcessor"); +var symbolProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Symbols cannot be represented in JSON Schema"); +}, "symbolProcessor"); +var nullProcessor = /* @__PURE__ */ __name((_schema, ctx, json2, _params) => { + if (ctx.target === "openapi-3.0") { + json2.type = "string"; + json2.nullable = true; + json2.enum = [null]; + } else { + json2.type = "null"; + } +}, "nullProcessor"); +var undefinedProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Undefined cannot be represented in JSON Schema"); +}, "undefinedProcessor"); +var voidProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Void cannot be represented in JSON Schema"); +}, "voidProcessor"); +var neverProcessor = /* @__PURE__ */ __name((_schema, _ctx, json2, _params) => { + json2.not = {}; +}, "neverProcessor"); +var anyProcessor = /* @__PURE__ */ __name((_schema, _ctx, _json, _params) => { +}, "anyProcessor"); +var unknownProcessor = /* @__PURE__ */ __name((_schema, _ctx, _json, _params) => { +}, "unknownProcessor"); +var dateProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Date cannot be represented in JSON Schema"); +}, "dateProcessor"); +var enumProcessor = /* @__PURE__ */ __name((schema2, _ctx, json2, _params) => { + const def = schema2._zod.def; + const values = getEnumValues(def.entries); + if (values.length === 0) { + json2.not = {}; + return; + } + if (values.every((v) => typeof v === "number")) + json2.type = "number"; + if (values.every((v) => typeof v === "string")) + json2.type = "string"; + json2.enum = values; +}, "enumProcessor"); +var literalProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + if (def.values.length === 0) { + json2.not = {}; + return; + } + const vals = []; + for (const val of def.values) { + if (val === void 0) { + if (handleUnrepresentable(schema2, ctx, json2, params, "Literal `undefined` cannot be represented in JSON Schema")) + return; + } else if (typeof val === "bigint") { + if (handleUnrepresentable(schema2, ctx, json2, params, "BigInt literals cannot be represented in JSON Schema")) + return; + vals.push(Number(val)); + } else { + vals.push(val); + } + } + if (vals.length === 0) { + } else if (vals.length === 1) { + const val = vals[0]; + json2.type = val === null ? "null" : typeof val; + if (ctx.target === "draft-04" || ctx.target === "openapi-3.0") { + json2.enum = [val]; + } else { + json2.const = val; + } + } else { + if (vals.every((v) => typeof v === "number")) + json2.type = "number"; + if (vals.every((v) => typeof v === "string")) + json2.type = "string"; + if (vals.every((v) => typeof v === "boolean")) + json2.type = "boolean"; + if (vals.every((v) => v === null)) + json2.type = "null"; + json2.enum = vals; + } +}, "literalProcessor"); +var nanProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "NaN cannot be represented in JSON Schema"); +}, "nanProcessor"); +var templateLiteralProcessor = /* @__PURE__ */ __name((schema2, _ctx, json2, _params) => { + const _json = json2; + const pattern = schema2._zod.pattern; + if (!pattern) + throw new Error("Pattern not found in template literal"); + _json.type = "string"; + _json.pattern = pattern.source; +}, "templateLiteralProcessor"); +var fileProcessor = /* @__PURE__ */ __name((schema2, _ctx, json2, _params) => { + const _json = json2; + _json.type = "string"; + _json.format = "binary"; + _json.contentEncoding = "binary"; + const { minimum, maximum, mime } = aggregateChecks(schema2); + if (minimum !== void 0) + _json.minLength = minimum; + if (maximum !== void 0) + _json.maxLength = maximum; + if (!mime) + return; + if (mime.length === 0) + _json.not = {}; + else if (mime.length === 1) + _json.contentMediaType = mime[0]; + else + _json.anyOf = mime.map((m3) => ({ contentMediaType: m3 })); +}, "fileProcessor"); +var successProcessor = /* @__PURE__ */ __name((_schema, _ctx, json2, _params) => { + json2.type = "boolean"; +}, "successProcessor"); +var customProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Custom types cannot be represented in JSON Schema"); +}, "customProcessor"); +var functionProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Function types cannot be represented in JSON Schema"); +}, "functionProcessor"); +var transformProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Transforms cannot be represented in JSON Schema"); +}, "transformProcessor"); +var mapProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Map cannot be represented in JSON Schema"); +}, "mapProcessor"); +var setProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + handleUnrepresentable(schema2, ctx, json2, params, "Set cannot be represented in JSON Schema"); +}, "setProcessor"); +var arrayProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const json2 = _json; + const def = schema2._zod.def; + const { minimum, maximum } = aggregateChecks(schema2); + if (typeof minimum === "number") + json2.minItems = minimum; + if (typeof maximum === "number") + json2.maxItems = maximum; + json2.type = "array"; + json2.items = processSchema(def.element, ctx, { + ...params, + path: [...params.path, "items"] + }); +}, "arrayProcessor"); +function inputOptin(schema2) { + const def = schema2._zod.def; + if (def.type === "pipe" && def.in._zod.traits.has("$ZodTransform")) { + return inputOptin(def.out); + } + if (def.type === "catch") { + return inputOptin(def.innerType); + } + return schema2._zod.optin; +} +__name(inputOptin, "inputOptin"); +var objectProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const json2 = _json; + const def = schema2._zod.def; + const shape = def.shape; + const symbolKeys = Object.getOwnPropertySymbols(shape); + if (symbolKeys.length && handleUnrepresentable(schema2, ctx, json2, params, "Symbol keys cannot be represented in JSON Schema")) { + return; + } + json2.type = "object"; + json2.properties = {}; + for (const key in shape) { + assignProp(json2.properties, key, processSchema(shape[key], ctx, { + ...params, + path: [...params.path, "properties", key] + })); + } + const requiredKeys = []; + for (const key of Object.keys(shape)) { + const field = def.shape[key]; + if (ctx.io === "input" ? inputOptin(field) === void 0 : field._zod.optout === void 0) { + requiredKeys.push(key); + } + } + if (requiredKeys.length > 0) { + json2.required = requiredKeys; + } + if (def.catchall?._zod.def.type === "never") { + json2.additionalProperties = false; + } else if (!def.catchall) { + if (ctx.io === "output") + json2.additionalProperties = false; + } else if (def.catchall) { + json2.additionalProperties = processSchema(def.catchall, ctx, { + ...params, + path: [...params.path, "additionalProperties"] + }); + } +}, "objectProcessor"); +var unionProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + const isExclusive = def.inclusive === false; + const options = def.options.map((x, i5) => processSchema(x, ctx, { + ...params, + path: [...params.path, isExclusive ? "oneOf" : "anyOf", i5] + })); + if (isExclusive) { + json2.oneOf = options; + } else { + json2.anyOf = options; + } +}, "unionProcessor"); +var intersectionProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + const a5 = processSchema(def.left, ctx, { + ...params, + path: [...params.path, "allOf", 0] + }); + const b5 = processSchema(def.right, ctx, { + ...params, + path: [...params.path, "allOf", 1] + }); + const isSimpleIntersection = /* @__PURE__ */ __name((val) => "allOf" in val && Object.keys(val).length === 1, "isSimpleIntersection"); + const allOf = [ + ...isSimpleIntersection(a5) ? a5.allOf : [a5], + ...isSimpleIntersection(b5) ? b5.allOf : [b5] + ]; + json2.allOf = allOf; + ctx.intersections.push(allOf); +}, "intersectionProcessor"); +var tupleProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const json2 = _json; + const def = schema2._zod.def; + json2.type = "array"; + const prefixPath = ctx.target === "draft-2020-12" ? "prefixItems" : "items"; + const restPath = ctx.target === "draft-2020-12" ? "items" : ctx.target === "openapi-3.0" ? "items" : "additionalItems"; + const prefixItems = def.items.map((x, i5) => processSchema(x, ctx, { + ...params, + path: [...params.path, prefixPath, i5] + })); + const rest = def.rest ? processSchema(def.rest, ctx, { + ...params, + path: [...params.path, restPath, ...ctx.target === "openapi-3.0" ? [def.items.length] : []] + }) : null; + let minItems = def.items.length; + while (minItems > 0) { + const item = def.items[minItems - 1]; + const optional2 = ctx.io === "input" ? inputOptin(item) !== void 0 : item._zod.optout === "optional"; + if (!optional2) + break; + minItems--; + } + const maxItems = def.items.length; + const isClosed = !def.rest; + if (ctx.target === "draft-2020-12") { + json2.prefixItems = prefixItems; + if (isClosed) { + json2.items = false; + } else if (rest) { + json2.items = rest; + } + if (minItems > 0) + json2.minItems = minItems; + if (isClosed) + json2.maxItems = maxItems; + } else if (ctx.target === "openapi-3.0") { + json2.items = { + anyOf: prefixItems + }; + if (rest) { + json2.items.anyOf.push(rest); + } + if (minItems > 0) + json2.minItems = minItems; + if (isClosed) + json2.maxItems = maxItems; + } else { + json2.items = prefixItems; + if (isClosed) { + json2.additionalItems = false; + } else if (rest) { + json2.additionalItems = rest; + } + if (minItems > 0) + json2.minItems = minItems; + if (isClosed) + json2.maxItems = maxItems; + } + const { minimum, maximum } = aggregateChecks(schema2); + if (typeof minimum === "number") + json2.minItems = minimum; + if (typeof maximum === "number") + json2.maxItems = maximum; +}, "tupleProcessor"); +function stringifyKeyNames(bySchema, json2, visited) { + if (json2.$ref) { + if (visited.has(json2)) + return json2; + visited.add(json2); + const def = bySchema.get(json2)?.def; + if (!def) + return json2; + const inlined = stringifyKeyNames(bySchema, def, visited); + return inlined === def ? json2 : inlined; + } + for (const keyword of ["anyOf", "oneOf"]) { + const branches = json2[keyword]; + if (!Array.isArray(branches)) + continue; + const mapped = branches.map((branch) => stringifyKeyNames(bySchema, branch, visited)); + if (mapped.some((branch, i5) => branch !== branches[i5])) + json2 = { ...json2, [keyword]: mapped }; + } + const types3 = Array.isArray(json2.type) ? json2.type : [json2.type]; + const numericType = !types3.includes("string") && types3.some((t) => t === "number" || t === "integer"); + const values = json2.enum ?? (json2.const !== void 0 ? [json2.const] : void 0); + if (!numericType && !values?.some((v) => typeof v === "number")) + return json2; + const { minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, format, id, ...rest } = json2; + if (rest.enum) + rest.enum = rest.enum.map((v) => typeof v === "number" ? String(v) : v); + else if (typeof rest.const === "number") + rest.const = String(rest.const); + if (!numericType) + return rest; + rest.type = "string"; + if (!values) + rest.pattern = (types3.includes("number") ? number : integer).source; + return rest; +} +__name(stringifyKeyNames, "stringifyKeyNames"); +var pendingRecords = /* @__PURE__ */ new WeakMap(); +function rewriteKeyNames(ctx) { + const bySchema = /* @__PURE__ */ new Map(); + for (const entry of ctx.seen.values()) { + if (entry.def && !bySchema.has(entry.schema)) + bySchema.set(entry.schema, entry); + } + const rewrites = /* @__PURE__ */ new Map(); + for (const record2 of pendingRecords.get(ctx) ?? []) { + const seen = ctx.seen.get(record2); + const names = (seen?.def ?? seen?.schema)?.propertyNames; + if (!names || names === true || rewrites.has(names)) + continue; + const rewritten = stringifyKeyNames(bySchema, names, /* @__PURE__ */ new Set()); + if (rewritten !== names) + rewrites.set(names, rewritten); + } + if (!rewrites.size) + return; + for (const entry of ctx.seen.values()) { + for (const carrier of [entry.schema, entry.def]) { + const rewritten = carrier && rewrites.get(carrier.propertyNames); + if (rewritten) + carrier.propertyNames = rewritten; + } + } +} +__name(rewriteKeyNames, "rewriteKeyNames"); +var recordProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const json2 = _json; + const def = schema2._zod.def; + json2.type = "object"; + const keyType = def.keyType; + const patterns = aggregateChecks(keyType).patterns; + if (def.mode === "loose" && patterns && patterns.size > 0) { + const valueSchema = processSchema(def.valueType, ctx, { + ...params, + path: [...params.path, "patternProperties", "*"] + }); + json2.patternProperties = {}; + for (const pattern of patterns) { + assignProp(json2.patternProperties, exactPattern(pattern).source, valueSchema); + } + } else { + if (ctx.target === "draft-07" || ctx.target === "draft-2020-12") { + json2.propertyNames = processSchema(def.keyType, ctx, { + ...params, + path: [...params.path, "propertyNames"] + }); + let pending = pendingRecords.get(ctx); + if (!pending) { + pending = []; + pendingRecords.set(ctx, pending); + ctx.deferred.push(() => rewriteKeyNames(ctx)); + } + pending.push(schema2); + } + json2.additionalProperties = processSchema(def.valueType, ctx, { + ...params, + path: [...params.path, "additionalProperties"] + }); + } + const keyValues = keyType._zod.values; + const omittableOnInput = ctx.io === "input" && inputOptin(def.valueType) !== void 0; + if (keyValues && !def.partial && !omittableOnInput) { + const validKeyValues = [...keyValues].filter((v) => typeof v === "string" || typeof v === "number"); + if (validKeyValues.length > 0) { + json2.required = validKeyValues.map(String); + } + } +}, "recordProcessor"); +var nullableProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + const inner = processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + if (ctx.target === "openapi-3.0") { + seen.ref = def.innerType; + json2.nullable = true; + } else { + json2.anyOf = [inner, { type: "null" }]; + } +}, "nullableProcessor"); +var nonoptionalProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; +}, "nonoptionalProcessor"); +var UNREPRESENTABLE_DEFAULT = /* @__PURE__ */ Symbol(); +function serializeDefaultValue(value, schema2, ctx, json2, params) { + let unrepresentable = false; + const serialized = JSON.stringify(value, (_, val) => { + if (typeof val !== "bigint") + return val; + unrepresentable = true; + return null; + }); + if (!unrepresentable) + return JSON.parse(serialized); + handleUnrepresentable(schema2, ctx, json2, params, "BigInt defaults cannot be represented in JSON Schema"); + return UNREPRESENTABLE_DEFAULT; +} +__name(serializeDefaultValue, "serializeDefaultValue"); +var defaultProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; + const value = serializeDefaultValue(def.defaultValue, schema2, ctx, json2, params); + if (value !== UNREPRESENTABLE_DEFAULT) + json2.default = value; +}, "defaultProcessor"); +var prefaultProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; + if (ctx.io !== "input") + return; + const value = serializeDefaultValue(def.defaultValue, schema2, ctx, json2, params); + if (value !== UNREPRESENTABLE_DEFAULT) + json2._prefault = value; +}, "prefaultProcessor"); +var catchProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; + let catchValue; + try { + catchValue = def.catchValue(void 0); + } catch { + handleUnrepresentable(schema2, ctx, json2, params, "Dynamic catch values are not supported in JSON Schema"); + return; + } + json2.default = catchValue; +}, "catchProcessor"); +var pipeProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const def = schema2._zod.def; + const inIsTransform = def.in._zod.traits.has("$ZodTransform"); + const innerType = ctx.io === "input" ? inIsTransform ? def.out : def.in : def.out; + processSchema(innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = innerType; +}, "pipeProcessor"); +var readonlyProcessor = /* @__PURE__ */ __name((schema2, ctx, json2, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; + json2.readOnly = true; +}, "readonlyProcessor"); +var promiseProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; +}, "promiseProcessor"); +var optionalProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const def = schema2._zod.def; + processSchema(def.innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = def.innerType; +}, "optionalProcessor"); +var lazyProcessor = /* @__PURE__ */ __name((schema2, ctx, _json, params) => { + const innerType = schema2._zod.innerType; + processSchema(innerType, ctx, params); + const seen = ctx.seen.get(schema2); + seen.ref = innerType; +}, "lazyProcessor"); +var allProcessors = { + string: stringProcessor, + number: numberProcessor, + boolean: booleanProcessor, + bigint: bigintProcessor, + symbol: symbolProcessor, + null: nullProcessor, + undefined: undefinedProcessor, + void: voidProcessor, + never: neverProcessor, + any: anyProcessor, + unknown: unknownProcessor, + date: dateProcessor, + enum: enumProcessor, + literal: literalProcessor, + nan: nanProcessor, + template_literal: templateLiteralProcessor, + file: fileProcessor, + success: successProcessor, + custom: customProcessor, + function: functionProcessor, + transform: transformProcessor, + map: mapProcessor, + set: setProcessor, + array: arrayProcessor, + object: objectProcessor, + union: unionProcessor, + intersection: intersectionProcessor, + tuple: tupleProcessor, + record: recordProcessor, + nullable: nullableProcessor, + nonoptional: nonoptionalProcessor, + default: defaultProcessor, + prefault: prefaultProcessor, + catch: catchProcessor, + pipe: pipeProcessor, + readonly: readonlyProcessor, + promise: promiseProcessor, + optional: optionalProcessor, + lazy: lazyProcessor +}; +function toJSONSchema(input2, params) { + if ("_idmap" in input2) { + const registry2 = input2; + const ctx2 = initializeContext({ ...params, processors: allProcessors }); + const defs = {}; + for (const entry of registry2._idmap.entries()) { + const [_, schema2] = entry; + processSchema(schema2, ctx2); + } + const schemas = {}; + const external = { + registry: registry2, + uri: params?.uri, + defs + }; + ctx2.external = external; + for (const entry of registry2._idmap.entries()) { + const [key, schema2] = entry; + extractDefs(ctx2, schema2); + assignProp(schemas, key, finalize(ctx2, schema2)); + } + if (Object.keys(defs).length > 0) { + const defsSegment = ctx2.target === "draft-2020-12" ? "$defs" : "definitions"; + schemas.__shared = { + [defsSegment]: defs + }; + } + return { schemas }; + } + const ctx = initializeContext({ ...params, processors: allProcessors }); + processSchema(input2, ctx); + extractDefs(ctx, input2); + return finalize(ctx, input2); +} +__name(toJSONSchema, "toJSONSchema"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/json-schema-generator.js +var JSONSchemaGenerator = class { + static { + __name(this, "JSONSchemaGenerator"); + } + /** @deprecated Access via ctx instead */ + get metadataRegistry() { + return this.ctx.metadataRegistry; + } + /** @deprecated Access via ctx instead */ + get target() { + return this.ctx.target; + } + // annotated so the .d.cts emits an indexed access rather than an inline `import()` of an ESM path + /** @deprecated Access via ctx instead */ + get unrepresentable() { + return this.ctx.unrepresentable; + } + /** @deprecated Access via ctx instead */ + get override() { + return this.ctx.override; + } + /** @deprecated Access via ctx instead */ + get io() { + return this.ctx.io; + } + /** @deprecated Access via ctx instead */ + get counter() { + return this.ctx.counter; + } + set counter(value) { + this.ctx.counter = value; + } + /** @deprecated Access via ctx instead */ + get seen() { + return this.ctx.seen; + } + constructor(params) { + let normalizedTarget = params?.target ?? "draft-2020-12"; + if (normalizedTarget === "draft-4") + normalizedTarget = "draft-04"; + if (normalizedTarget === "draft-7") + normalizedTarget = "draft-07"; + this.ctx = initializeContext({ + processors: allProcessors, + target: normalizedTarget, + ...params?.metadata && { metadata: params.metadata }, + ...params?.unrepresentable && { unrepresentable: params.unrepresentable }, + ...params?.override && { override: params.override }, + ...params?.io && { io: params.io } + }); + } + /** + * Process a schema to prepare it for JSON Schema generation. + * This must be called before emit(). + */ + process(schema2, _params = { path: [], schemaPath: [] }) { + return processSchema(schema2, this.ctx, _params); + } + /** + * Emit the final JSON Schema after processing. + * Must call process() first. + */ + emit(schema2, _params) { + if (_params) { + if (_params.cycles) + this.ctx.cycles = _params.cycles; + if (_params.reused) + this.ctx.reused = _params.reused; + if (_params.external) + this.ctx.external = _params.external; + } + this.ctx.sharedDefsExtractedFor = void 0; + this.ctx.sharedEmitDoneFor = void 0; + extractDefs(this.ctx, schema2); + const result = finalize(this.ctx, schema2); + const { "~standard": _, ...plainResult } = result; + return plainResult; + } +}; + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/json-schema.js +var json_schema_exports = {}; + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/schemas.js +var schemas_exports2 = {}; +__export(schemas_exports2, { + ZodAny: () => ZodAny, + ZodArray: () => ZodArray, + ZodBase64: () => ZodBase64, + ZodBase64URL: () => ZodBase64URL, + ZodBigInt: () => ZodBigInt, + ZodBigIntFormat: () => ZodBigIntFormat, + ZodBoolean: () => ZodBoolean, + ZodCIDRv4: () => ZodCIDRv4, + ZodCIDRv6: () => ZodCIDRv6, + ZodCUID: () => ZodCUID, + ZodCUID2: () => ZodCUID2, + ZodCatch: () => ZodCatch, + ZodCodec: () => ZodCodec, + ZodCreditCard: () => ZodCreditCard, + ZodCustom: () => ZodCustom, + ZodCustomStringFormat: () => ZodCustomStringFormat, + ZodDate: () => ZodDate, + ZodDefault: () => ZodDefault, + ZodDiscriminatedUnion: () => ZodDiscriminatedUnion, + ZodE164: () => ZodE164, + ZodEmail: () => ZodEmail, + ZodEmoji: () => ZodEmoji, + ZodEnum: () => ZodEnum, + ZodExactOptional: () => ZodExactOptional, + ZodFile: () => ZodFile, + ZodFunction: () => ZodFunction, + ZodGUID: () => ZodGUID, + ZodIBAN: () => ZodIBAN, + ZodIPv4: () => ZodIPv4, + ZodIPv6: () => ZodIPv6, + ZodISODate: () => ZodISODate, + ZodISODateTime: () => ZodISODateTime, + ZodISODuration: () => ZodISODuration, + ZodISOTime: () => ZodISOTime, + ZodInstanceOf: () => ZodInstanceOf, + ZodIntersection: () => ZodIntersection, + ZodJWT: () => ZodJWT, + ZodKSUID: () => ZodKSUID, + ZodLazy: () => ZodLazy, + ZodLiteral: () => ZodLiteral, + ZodMAC: () => ZodMAC, + ZodMap: () => ZodMap, + ZodNaN: () => ZodNaN, + ZodNanoID: () => ZodNanoID, + ZodNever: () => ZodNever, + ZodNonOptional: () => ZodNonOptional, + ZodNull: () => ZodNull, + ZodNullable: () => ZodNullable, + ZodNumber: () => ZodNumber, + ZodNumberFormat: () => ZodNumberFormat, + ZodObject: () => ZodObject, + ZodOptional: () => ZodOptional, + ZodPipe: () => ZodPipe, + ZodPrefault: () => ZodPrefault, + ZodPreprocess: () => ZodPreprocess, + ZodPromise: () => ZodPromise, + ZodReadonly: () => ZodReadonly, + ZodRecord: () => ZodRecord, + ZodSet: () => ZodSet, + ZodString: () => ZodString, + ZodStringFormat: () => ZodStringFormat, + ZodSuccess: () => ZodSuccess, + ZodSymbol: () => ZodSymbol, + ZodTemplateLiteral: () => ZodTemplateLiteral, + ZodTransform: () => ZodTransform, + ZodTuple: () => ZodTuple, + ZodType: () => ZodType, + ZodULID: () => ZodULID, + ZodURL: () => ZodURL, + ZodUUID: () => ZodUUID, + ZodUndefined: () => ZodUndefined, + ZodUnion: () => ZodUnion, + ZodUnknown: () => ZodUnknown, + ZodVoid: () => ZodVoid, + ZodXID: () => ZodXID, + ZodXor: () => ZodXor, + _ZodString: () => _ZodString, + _default: () => _default2, + _function: () => _function, + any: () => any, + array: () => array, + base64: () => base642, + base64url: () => base64url2, + bigint: () => bigint2, + boolean: () => boolean2, + catch: () => _catch2, + check: () => check, + cidrv4: () => cidrv42, + cidrv6: () => cidrv62, + codec: () => codec, + creditCard: () => creditCard2, + cuid: () => cuid3, + cuid2: () => cuid22, + currencyCode: () => currencyCode2, + custom: () => custom, + date: () => date2, + describe: () => describe2, + discriminatedUnion: () => discriminatedUnion, + e164: () => e1642, + email: () => email2, + emoji: () => emoji2, + enum: () => _enum2, + exactOptional: () => exactOptional, + file: () => file, + float32: () => float32, + float64: () => float64, + function: () => _function, + guid: () => guid2, + hash: () => hash, + hex: () => hex2, + hostname: () => hostname2, + httpUrl: () => httpUrl, + iban: () => iban2, + instanceof: () => _instanceof, + int: () => int, + int32: () => int32, + int64: () => int64, + intersection: () => intersection, + invertCodec: () => invertCodec, + ipv4: () => ipv42, + ipv6: () => ipv62, + json: () => json, + jwt: () => jwt, + keyof: () => keyof, + ksuid: () => ksuid2, + lazy: () => lazy, + literal: () => literal, + looseObject: () => looseObject, + looseRecord: () => looseRecord, + mac: () => mac2, + map: () => map, + meta: () => meta2, + nan: () => nan, + nanoid: () => nanoid2, + nativeEnum: () => nativeEnum, + never: () => never, + nonoptional: () => nonoptional, + null: () => _null3, + nullable: () => nullable, + nullish: () => nullish2, + number: () => number2, + object: () => object, + optional: () => optional, + partialRecord: () => partialRecord, + pipe: () => pipe, + prefault: () => prefault, + preprocess: () => preprocess, + promise: () => promise, + readonly: () => readonly, + record: () => record, + refine: () => refine, + set: () => set, + strictObject: () => strictObject, + string: () => string2, + stringFormat: () => stringFormat, + stringbool: () => stringbool, + success: () => success, + superRefine: () => superRefine, + symbol: () => symbol, + templateLiteral: () => templateLiteral, + transform: () => transform, + tuple: () => tuple, + uint32: () => uint32, + uint64: () => uint64, + ulid: () => ulid2, + undefined: () => _undefined3, + union: () => union, + unknown: () => unknown, + url: () => url, + uuid: () => uuid2, + uuidv4: () => uuidv4, + uuidv6: () => uuidv6, + uuidv7: () => uuidv7, + void: () => _void2, + xid: () => xid2, + xor: () => xor +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/checks.js +var checks_exports2 = {}; +__export(checks_exports2, { + endsWith: () => _endsWith, + gt: () => _gt, + gte: () => _gte, + includes: () => _includes, + length: () => _length, + lowercase: () => _lowercase, + lt: () => _lt, + lte: () => _lte, + maxLength: () => _maxLength, + maxSize: () => _maxSize, + mime: () => _mime, + minLength: () => _minLength, + minSize: () => _minSize, + multipleOf: () => _multipleOf, + negative: () => _negative, + nonnegative: () => _nonnegative, + nonpositive: () => _nonpositive, + normalize: () => _normalize, + overwrite: () => _overwrite, + positive: () => _positive, + properties: () => _properties, + property: () => _property, + regex: () => _regex, + size: () => _size, + slugify: () => _slugify, + startsWith: () => _startsWith, + toLowerCase: () => _toLowerCase, + toUpperCase: () => _toUpperCase, + trim: () => _trim, + uppercase: () => _uppercase +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/errors.js +var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]); +function _lazyMethod(proto, key, make) { + Object.defineProperty(proto, key, { + configurable: true, + enumerable: false, + get() { + const value = make(this); + Object.defineProperty(this, key, { value, configurable: true, writable: true }); + return value; + }, + set(value) { + Object.defineProperty(this, key, { value, configurable: true, writable: true }); + } + }); +} +__name(_lazyMethod, "_lazyMethod"); +var initializer2 = /* @__PURE__ */ __name((inst, issues) => { + $ZodError.init(inst, issues); + inst.name = "ZodError"; + const proto = Object.getPrototypeOf(inst); + if (_installedErrorProtos.has(proto)) + return; + _installedErrorProtos.add(proto); + _lazyMethod(proto, "format", (self2) => (mapper) => formatError(self2, mapper)); + _lazyMethod(proto, "flatten", (self2) => (mapper) => flattenError(self2, mapper)); + _lazyMethod(proto, "addIssue", (self2) => (issue2) => { + self2.issues.push(issue2); + self2.message = JSON.stringify(self2.issues, jsonStringifyReplacer, 2); + }); + _lazyMethod(proto, "addIssues", (self2) => (issues2) => { + self2.issues.push(...issues2); + self2.message = JSON.stringify(self2.issues, jsonStringifyReplacer, 2); + }); + Object.defineProperty(proto, "isEmpty", { + configurable: true, + enumerable: false, + get() { + return this.issues.length === 0; + } + }); +}, "initializer"); +var ZodError = /* @__PURE__ */ $constructor("ZodError", initializer2); +var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, void 0, { + Parent: Error +}); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/parse.js +var parse2 = /* @__PURE__ */ _parse(ZodRealError); +var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError); +var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError); +var safeParseAsync2 = /* @__PURE__ */ _safeParseAsync(ZodRealError); +var encode2 = /* @__PURE__ */ _encode(ZodRealError); +var decode2 = /* @__PURE__ */ _decode(ZodRealError); +var encodeAsync2 = /* @__PURE__ */ _encodeAsync(ZodRealError); +var decodeAsync2 = /* @__PURE__ */ _decodeAsync(ZodRealError); +var safeEncode2 = /* @__PURE__ */ _safeEncode(ZodRealError); +var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError); +var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError); +var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/schemas.js +function _ensureDefaultLocale() { + if (!globalConfig.localeError) + config(en_default()); +} +__name(_ensureDefaultLocale, "_ensureDefaultLocale"); +function _ensureDefaultMemoizer() { + if (!globalConfig.memoizer) + config({ memoizer: memoizer() }); +} +__name(_ensureDefaultMemoizer, "_ensureDefaultMemoizer"); +var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => { + _ensureDefaultLocale(); + $ZodType.init(inst, def); + inst.def = def; + inst.type = def.type; + return inst; +}, { + check(...chks) { + const def = this.def; + return this.clone(util_exports.mergeDefs(def, { + checks: [ + ...def.checks ?? [], + ...chks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch) + ] + }), { parent: true }); + }, + with(...chks) { + return this.check(...chks); + }, + clone(def, params) { + return clone(this, def, params); + }, + brand() { + return this; + }, + register(reg, meta3) { + reg.add(this, meta3); + return this; + }, + refine(check2, params) { + return this.check(refine(check2, params)); + }, + superRefine(refinement, params) { + return this.check(superRefine(refinement, params)); + }, + overwrite(fn) { + return this.check(_overwrite(fn)); + }, + optional() { + return optional(this); + }, + exactOptional() { + return exactOptional(this); + }, + nullable() { + return nullable(this); + }, + nullish() { + return optional(nullable(this)); + }, + nonoptional(params) { + return nonoptional(this, params); + }, + array() { + return array(this); + }, + or(arg) { + return union([this, arg]); + }, + and(arg) { + return intersection(this, arg); + }, + transform(tx) { + return pipe(this, transform(tx)); + }, + default(d5) { + return _default2(this, d5); + }, + prefault(d5) { + return prefault(this, d5); + }, + catch(params) { + return _catch2(this, params); + }, + pipe(target) { + return pipe(this, target); + }, + readonly() { + return readonly(this); + }, + describe(description) { + const cl = this.clone(); + globalRegistry.add(cl, { description }); + return cl; + }, + meta(...args) { + if (args.length === 0) + return globalRegistry.get(this); + const cl = this.clone(); + globalRegistry.add(cl, args[0]); + return cl; + }, + isOptional() { + return this.safeParse(void 0).success; + }, + isNullable() { + return this.safeParse(null).success; + }, + apply(fn, ...args) { + return args.length === 0 ? fn(this) : fn(this, ...args); + }, + // Overrides core's `~standard` to add `jsonSchema`. Must stay a prototype entry: redefining it per instance demotes instances to dictionary mode. + get "~standard"() { + return util_exports.hide(this, "~standard", { + ...standardProps(this), + jsonSchema: { + input: createStandardJSONSchemaMethod(this, "input"), + output: createStandardJSONSchemaMethod(this, "output") + } + }); + }, + set "~standard"(value) { + util_exports.own(this, "~standard", value); + }, + parse: /* @__PURE__ */ __name(function _parse2(data, params) { + return parse2(this, data, params, { callee: _parse2 }); + }, "_parse"), + parseAsync: /* @__PURE__ */ __name(async function _parseAsync2(data, params) { + return await parseAsync2(this, data, params, { callee: _parseAsync2 }); + }, "_parseAsync"), + safeParse(data, params) { + return safeParse2(this, data, params); + }, + async safeParseAsync(data, params) { + return safeParseAsync2(this, data, params); + }, + // `spa` is an alias: same function object as `safeParseAsync`, as before. + get spa() { + return this?.safeParseAsync; + }, + set spa(value) { + util_exports.own(this, "spa", value); + }, + validate(data, params) { + return validate(this, data, params); + }, + validateAsync(data, params) { + return validateAsync(this, data, params); + }, + encode: /* @__PURE__ */ __name(function _encode2(data, params) { + return encode2(this, data, params, { callee: _encode2 }); + }, "_encode"), + decode: /* @__PURE__ */ __name(function _decode2(data, params) { + return decode2(this, data, params, { callee: _decode2 }); + }, "_decode"), + encodeAsync: /* @__PURE__ */ __name(async function _encodeAsync2(data, params) { + return await encodeAsync2(this, data, params, { callee: _encodeAsync2 }); + }, "_encodeAsync"), + decodeAsync: /* @__PURE__ */ __name(async function _decodeAsync2(data, params) { + return await decodeAsync2(this, data, params, { callee: _decodeAsync2 }); + }, "_decodeAsync"), + safeEncode(data, params) { + return safeEncode2(this, data, params); + }, + safeDecode(data, params) { + return safeDecode2(this, data, params); + }, + async safeEncodeAsync(data, params) { + return safeEncodeAsync2(this, data, params); + }, + async safeDecodeAsync(data, params) { + return safeDecodeAsync2(this, data, params); + }, + toJSONSchema(params) { + return createToJSONSchemaMethod(this, {})(params); + }, + // Reads through to the registry on every access, so it must not cache. + get description() { + return globalRegistry.get(this)?.description; + }, + // No setter: `schema._def = x` throws, as it did when `_def` was a non-writable own property. + get _def() { + return this._zod.def; + } +}); +var _ZodString = /* @__PURE__ */ $constructor( + "_ZodString", + (inst, def) => { + $ZodString.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => stringProcessor(inst, ctx, json2, params); + }, + /* @__PURE__ */ util_exports.derived({ + format: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).format ?? null, "format"), + minLength: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).minimum ?? null, "minLength"), + maxLength: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).maximum ?? null, "maxLength") + }, { + regex(...args) { + return this.check(_regex(...args)); + }, + includes(...args) { + return this.check(_includes(...args)); + }, + startsWith(...args) { + return this.check(_startsWith(...args)); + }, + endsWith(...args) { + return this.check(_endsWith(...args)); + }, + min(...args) { + return this.check(_minLength(...args)); + }, + max(...args) { + return this.check(_maxLength(...args)); + }, + length(...args) { + return this.check(_length(...args)); + }, + nonempty(...args) { + return this.check(_minLength(1, ...args)); + }, + lowercase(params) { + return this.check(_lowercase(params)); + }, + uppercase(params) { + return this.check(_uppercase(params)); + }, + trim() { + return this.check(_trim()); + }, + normalize(...args) { + return this.check(_normalize(...args)); + }, + toLowerCase() { + return this.check(_toLowerCase()); + }, + toUpperCase() { + return this.check(_toUpperCase()); + }, + slugify() { + return this.check(_slugify()); + } + }) +); +var ZodString = /* @__PURE__ */ $constructor("ZodString", (inst, def) => { + $ZodString.init(inst, def); + _ZodString.init(inst, def); +}, { + email(params) { + return this.check(_email(ZodEmail, params)); + }, + url(params) { + return this.check(_url(ZodURL, params)); + }, + jwt(params) { + return this.check(_jwt(ZodJWT, params)); + }, + emoji(params) { + return this.check(_emoji2(ZodEmoji, params)); + }, + guid(params) { + return this.check(_guid(ZodGUID, params)); + }, + uuid(params) { + return this.check(_uuid(ZodUUID, params)); + }, + uuidv4(params) { + return this.check(_uuidv4(ZodUUID, params)); + }, + uuidv6(params) { + return this.check(_uuidv6(ZodUUID, params)); + }, + uuidv7(params) { + return this.check(_uuidv7(ZodUUID, params)); + }, + nanoid(params) { + return this.check(_nanoid(ZodNanoID, params)); + }, + cuid(params) { + return this.check(_cuid(ZodCUID, params)); + }, + cuid2(params) { + return this.check(_cuid2(ZodCUID2, params)); + }, + ulid(params) { + return this.check(_ulid(ZodULID, params)); + }, + base64(params) { + return this.check(_base64(ZodBase64, params)); + }, + base64url(params) { + return this.check(_base64url(ZodBase64URL, params)); + }, + xid(params) { + return this.check(_xid(ZodXID, params)); + }, + ksuid(params) { + return this.check(_ksuid(ZodKSUID, params)); + }, + ipv4(params) { + return this.check(_ipv4(ZodIPv4, params)); + }, + ipv6(params) { + return this.check(_ipv6(ZodIPv6, params)); + }, + cidrv4(params) { + return this.check(_cidrv4(ZodCIDRv4, params)); + }, + cidrv6(params) { + return this.check(_cidrv6(ZodCIDRv6, params)); + }, + e164(params) { + return this.check(_e164(ZodE164, params)); + }, + datetime(params) { + return this.check(_isoDateTime(ZodISODateTime, params)); + }, + date(params) { + return this.check(_isoDate(ZodISODate, params)); + }, + time(params) { + return this.check(_isoTime(ZodISOTime, params)); + }, + duration(params) { + return this.check(_isoDuration(ZodISODuration, params)); + } +}); +function string2(params) { + return _string(ZodString, params); +} +__name(string2, "string"); +var ZodStringFormat = /* @__PURE__ */ $constructor("ZodStringFormat", (inst, def) => { + $ZodStringFormat.init(inst, def); + _ZodString.init(inst, def); +}); +var ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => { + $ZodISODateTime.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodISODate = /* @__PURE__ */ $constructor("ZodISODate", (inst, def) => { + $ZodISODate.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodISOTime = /* @__PURE__ */ $constructor("ZodISOTime", (inst, def) => { + $ZodISOTime.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodISODuration = /* @__PURE__ */ $constructor("ZodISODuration", (inst, def) => { + $ZodISODuration.init(inst, def); + ZodStringFormat.init(inst, def); +}); +var ZodEmail = /* @__PURE__ */ $constructor("ZodEmail", (inst, def) => { + $ZodEmail.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function email2(params) { + return _email(ZodEmail, params); +} +__name(email2, "email"); +var ZodGUID = /* @__PURE__ */ $constructor("ZodGUID", (inst, def) => { + $ZodGUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function guid2(params) { + return _guid(ZodGUID, params); +} +__name(guid2, "guid"); +var ZodUUID = /* @__PURE__ */ $constructor("ZodUUID", (inst, def) => { + $ZodUUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function uuid2(params) { + return _uuid(ZodUUID, params); +} +__name(uuid2, "uuid"); +function uuidv4(params) { + return _uuidv4(ZodUUID, params); +} +__name(uuidv4, "uuidv4"); +function uuidv6(params) { + return _uuidv6(ZodUUID, params); +} +__name(uuidv6, "uuidv6"); +function uuidv7(params) { + return _uuidv7(ZodUUID, params); +} +__name(uuidv7, "uuidv7"); +var ZodURL = /* @__PURE__ */ $constructor("ZodURL", (inst, def) => { + $ZodURL.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function url(params) { + return _url(ZodURL, params); +} +__name(url, "url"); +function httpUrl(params) { + return _url(ZodURL, { + protocol: httpProtocol, + hostname: domain, + ...util_exports.normalizeParams(params) + }); +} +__name(httpUrl, "httpUrl"); +var ZodEmoji = /* @__PURE__ */ $constructor("ZodEmoji", (inst, def) => { + $ZodEmoji.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function emoji2(params) { + return _emoji2(ZodEmoji, params); +} +__name(emoji2, "emoji"); +var ZodNanoID = /* @__PURE__ */ $constructor("ZodNanoID", (inst, def) => { + $ZodNanoID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function nanoid2(params) { + return _nanoid(ZodNanoID, params); +} +__name(nanoid2, "nanoid"); +var ZodCUID = /* @__PURE__ */ $constructor("ZodCUID", (inst, def) => { + $ZodCUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cuid3(params) { + return _cuid(ZodCUID, params); +} +__name(cuid3, "cuid"); +var ZodCUID2 = /* @__PURE__ */ $constructor("ZodCUID2", (inst, def) => { + $ZodCUID2.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cuid22(params) { + return _cuid2(ZodCUID2, params); +} +__name(cuid22, "cuid2"); +var ZodULID = /* @__PURE__ */ $constructor("ZodULID", (inst, def) => { + $ZodULID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ulid2(params) { + return _ulid(ZodULID, params); +} +__name(ulid2, "ulid"); +var ZodXID = /* @__PURE__ */ $constructor("ZodXID", (inst, def) => { + $ZodXID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function xid2(params) { + return _xid(ZodXID, params); +} +__name(xid2, "xid"); +var ZodKSUID = /* @__PURE__ */ $constructor("ZodKSUID", (inst, def) => { + $ZodKSUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ksuid2(params) { + return _ksuid(ZodKSUID, params); +} +__name(ksuid2, "ksuid"); +var ZodIPv4 = /* @__PURE__ */ $constructor("ZodIPv4", (inst, def) => { + $ZodIPv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ipv42(params) { + return _ipv4(ZodIPv4, params); +} +__name(ipv42, "ipv4"); +var ZodMAC = /* @__PURE__ */ $constructor("ZodMAC", (inst, def) => { + $ZodMAC.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function mac2(params) { + return _mac(ZodMAC, params); +} +__name(mac2, "mac"); +var ZodIPv6 = /* @__PURE__ */ $constructor("ZodIPv6", (inst, def) => { + $ZodIPv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function ipv62(params) { + return _ipv6(ZodIPv6, params); +} +__name(ipv62, "ipv6"); +var ZodCIDRv4 = /* @__PURE__ */ $constructor("ZodCIDRv4", (inst, def) => { + $ZodCIDRv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cidrv42(params) { + return _cidrv4(ZodCIDRv4, params); +} +__name(cidrv42, "cidrv4"); +var ZodCIDRv6 = /* @__PURE__ */ $constructor("ZodCIDRv6", (inst, def) => { + $ZodCIDRv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function cidrv62(params) { + return _cidrv6(ZodCIDRv6, params); +} +__name(cidrv62, "cidrv6"); +var ZodBase64 = /* @__PURE__ */ $constructor("ZodBase64", (inst, def) => { + $ZodBase64.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function base642(params) { + return _base64(ZodBase64, params); +} +__name(base642, "base64"); +var ZodBase64URL = /* @__PURE__ */ $constructor("ZodBase64URL", (inst, def) => { + $ZodBase64URL.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function base64url2(params) { + return _base64url(ZodBase64URL, params); +} +__name(base64url2, "base64url"); +var ZodE164 = /* @__PURE__ */ $constructor("ZodE164", (inst, def) => { + $ZodE164.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function e1642(params) { + return _e164(ZodE164, params); +} +__name(e1642, "e164"); +var ZodCreditCard = /* @__PURE__ */ $constructor("ZodCreditCard", (inst, def) => { + $ZodCreditCard.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function creditCard2(params) { + return _creditCard(ZodCreditCard, params); +} +__name(creditCard2, "creditCard"); +var ZodIBAN = /* @__PURE__ */ $constructor("ZodIBAN", (inst, def) => { + $ZodIBAN.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function iban2(params) { + return _iban(ZodIBAN, params); +} +__name(iban2, "iban"); +var ZodJWT = /* @__PURE__ */ $constructor("ZodJWT", (inst, def) => { + $ZodJWT.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function jwt(params) { + return _jwt(ZodJWT, params); +} +__name(jwt, "jwt"); +var ZodCustomStringFormat = /* @__PURE__ */ $constructor("ZodCustomStringFormat", (inst, def) => { + $ZodCustomStringFormat.init(inst, def); + ZodStringFormat.init(inst, def); +}); +function stringFormat(format, fnOrRegex, _params = {}) { + return _stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params); +} +__name(stringFormat, "stringFormat"); +function hostname2(_params) { + return _stringFormat(ZodCustomStringFormat, "hostname", hostname, _params); +} +__name(hostname2, "hostname"); +function hex2(_params) { + return _stringFormat(ZodCustomStringFormat, "hex", hex, _params); +} +__name(hex2, "hex"); +function currencyCode2(_params) { + return _stringFormat(ZodCustomStringFormat, "currency_code", currencyCode, _params); +} +__name(currencyCode2, "currencyCode"); +function hash(alg, params) { + const enc = params?.enc ?? "hex"; + const format = `${alg}_${enc}`; + const regex = regexes_exports[format]; + if (!regex) + throw new Error(`Unrecognized hash format: ${format}`); + return _stringFormat(ZodCustomStringFormat, format, regex, params); +} +__name(hash, "hash"); +var ZodNumber = /* @__PURE__ */ $constructor( + "ZodNumber", + (inst, def) => { + $ZodNumber.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => numberProcessor(inst, ctx, json2, params); + inst.isFinite = true; + }, + /* @__PURE__ */ util_exports.derived({ + minValue: /* @__PURE__ */ __name((inst) => { + const { minimum, exclusiveMinimum } = aggregateChecks(inst); + return Math.max(minimum ?? Number.NEGATIVE_INFINITY, exclusiveMinimum ?? Number.NEGATIVE_INFINITY); + }, "minValue"), + maxValue: /* @__PURE__ */ __name((inst) => { + const { maximum, exclusiveMaximum } = aggregateChecks(inst); + return Math.min(maximum ?? Number.POSITIVE_INFINITY, exclusiveMaximum ?? Number.POSITIVE_INFINITY); + }, "maxValue"), + isInt: /* @__PURE__ */ __name((inst) => { + const { isInt, multipleOf } = aggregateChecks(inst); + return !!isInt || !!multipleOf?.some(Number.isSafeInteger); + }, "isInt"), + format: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).format ?? null, "format") + }, { + gt(value, params) { + return this.check(_gt(value, params)); + }, + gte(value, params) { + return this.check(_gte(value, params)); + }, + min(value, params) { + return this.check(_gte(value, params)); + }, + lt(value, params) { + return this.check(_lt(value, params)); + }, + lte(value, params) { + return this.check(_lte(value, params)); + }, + max(value, params) { + return this.check(_lte(value, params)); + }, + int(params) { + return this.check(int(params)); + }, + safe(params) { + return this.check(int(params)); + }, + positive(params) { + return this.check(_gt(0, params)); + }, + nonnegative(params) { + return this.check(_gte(0, params)); + }, + negative(params) { + return this.check(_lt(0, params)); + }, + nonpositive(params) { + return this.check(_lte(0, params)); + }, + multipleOf(value, params) { + return this.check(_multipleOf(value, params)); + }, + step(value, params) { + return this.check(_multipleOf(value, params)); + }, + finite() { + return this; + } + }) +); +function number2(params) { + return _number(ZodNumber, params); +} +__name(number2, "number"); +var ZodNumberFormat = /* @__PURE__ */ $constructor("ZodNumberFormat", (inst, def) => { + $ZodNumberFormat.init(inst, def); + ZodNumber.init(inst, def); +}); +function int(params) { + return _int(ZodNumberFormat, params); +} +__name(int, "int"); +function float32(params) { + return _float32(ZodNumberFormat, params); +} +__name(float32, "float32"); +function float64(params) { + return _float64(ZodNumberFormat, params); +} +__name(float64, "float64"); +function int32(params) { + return _int32(ZodNumberFormat, params); +} +__name(int32, "int32"); +function uint32(params) { + return _uint32(ZodNumberFormat, params); +} +__name(uint32, "uint32"); +var ZodBoolean = /* @__PURE__ */ $constructor("ZodBoolean", (inst, def) => { + $ZodBoolean.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => booleanProcessor(inst, ctx, json2, params); +}); +function boolean2(params) { + return _boolean(ZodBoolean, params); +} +__name(boolean2, "boolean"); +var ZodBigInt = /* @__PURE__ */ $constructor( + "ZodBigInt", + (inst, def) => { + $ZodBigInt.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => bigintProcessor(inst, ctx, json2, params); + }, + /* @__PURE__ */ util_exports.derived({ + minValue: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).minimum ?? null, "minValue"), + maxValue: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).maximum ?? null, "maxValue"), + format: /* @__PURE__ */ __name((inst) => aggregateChecks(inst).format ?? null, "format") + }, { + gte(value, params) { + return this.check(_gte(value, params)); + }, + min(value, params) { + return this.check(_gte(value, params)); + }, + gt(value, params) { + return this.check(_gt(value, params)); + }, + lt(value, params) { + return this.check(_lt(value, params)); + }, + lte(value, params) { + return this.check(_lte(value, params)); + }, + max(value, params) { + return this.check(_lte(value, params)); + }, + positive(params) { + return this.check(_gt(BigInt(0), params)); + }, + negative(params) { + return this.check(_lt(BigInt(0), params)); + }, + nonpositive(params) { + return this.check(_lte(BigInt(0), params)); + }, + nonnegative(params) { + return this.check(_gte(BigInt(0), params)); + }, + multipleOf(value, params) { + return this.check(_multipleOf(value, params)); + } + }) +); +function bigint2(params) { + return _bigint(ZodBigInt, params); +} +__name(bigint2, "bigint"); +var ZodBigIntFormat = /* @__PURE__ */ $constructor("ZodBigIntFormat", (inst, def) => { + $ZodBigIntFormat.init(inst, def); + ZodBigInt.init(inst, def); +}); +function int64(params) { + return _int64(ZodBigIntFormat, params); +} +__name(int64, "int64"); +function uint64(params) { + return _uint64(ZodBigIntFormat, params); +} +__name(uint64, "uint64"); +var ZodSymbol = /* @__PURE__ */ $constructor("ZodSymbol", (inst, def) => { + $ZodSymbol.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => symbolProcessor(inst, ctx, json2, params); +}); +function symbol(params) { + return _symbol(ZodSymbol, params); +} +__name(symbol, "symbol"); +var ZodUndefined = /* @__PURE__ */ $constructor("ZodUndefined", (inst, def) => { + $ZodUndefined.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => undefinedProcessor(inst, ctx, json2, params); +}); +function _undefined3(params) { + return _undefined2(ZodUndefined, params); +} +__name(_undefined3, "_undefined"); +var ZodNull = /* @__PURE__ */ $constructor("ZodNull", (inst, def) => { + $ZodNull.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nullProcessor(inst, ctx, json2, params); +}); +function _null3(params) { + return _null2(ZodNull, params); +} +__name(_null3, "_null"); +var ZodAny = /* @__PURE__ */ $constructor("ZodAny", (inst, def) => { + $ZodAny.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => anyProcessor(inst, ctx, json2, params); +}); +function any() { + return _any(ZodAny); +} +__name(any, "any"); +var ZodUnknown = /* @__PURE__ */ $constructor("ZodUnknown", (inst, def) => { + $ZodUnknown.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => unknownProcessor(inst, ctx, json2, params); +}); +function unknown() { + return _unknown(ZodUnknown); +} +__name(unknown, "unknown"); +var ZodNever = /* @__PURE__ */ $constructor("ZodNever", (inst, def) => { + $ZodNever.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => neverProcessor(inst, ctx, json2, params); +}); +function never(params) { + return _never(ZodNever, params); +} +__name(never, "never"); +var ZodVoid = /* @__PURE__ */ $constructor("ZodVoid", (inst, def) => { + $ZodVoid.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => voidProcessor(inst, ctx, json2, params); +}); +function _void2(params) { + return _void(ZodVoid, params); +} +__name(_void2, "_void"); +var ZodDate = /* @__PURE__ */ $constructor( + "ZodDate", + (inst, def) => { + $ZodDate.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => dateProcessor(inst, ctx, json2, params); + inst.min = (value, params) => inst.check(_gte(value, params)); + inst.max = (value, params) => inst.check(_lte(value, params)); + }, + /* @__PURE__ */ util_exports.derived({ + minDate: /* @__PURE__ */ __name((inst) => { + const { minimum } = aggregateChecks(inst); + return minimum ? new Date(minimum) : null; + }, "minDate"), + maxDate: /* @__PURE__ */ __name((inst) => { + const { maximum } = aggregateChecks(inst); + return maximum ? new Date(maximum) : null; + }, "maxDate") + }, {}) +); +function date2(params) { + return _date(ZodDate, params); +} +__name(date2, "date"); +var ZodArray = /* @__PURE__ */ $constructor("ZodArray", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodArray.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => arrayProcessor(inst, ctx, json2, params); + inst.element = def.element; +}, { + min(n3, params) { + return this.check(_minLength(n3, params)); + }, + nonempty(params) { + return this.check(_minLength(1, params)); + }, + max(n3, params) { + return this.check(_maxLength(n3, params)); + }, + length(n3, params) { + return this.check(_length(n3, params)); + }, + unwrap() { + return this.element; + } +}); +function array(element, params) { + return _array(ZodArray, element, params); +} +__name(array, "array"); +function keyof(schema2) { + const shape = schema2._zod.def.shape; + return _enum2(Object.keys(shape)); +} +__name(keyof, "keyof"); +var ZodObject = /* @__PURE__ */ $constructor("ZodObject", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodObjectJIT.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => objectProcessor(inst, ctx, json2, params); + util_exports.installLazyProp(inst, "shape", (self2) => self2._zod.def.shape, false); +}, { + keyof() { + return _enum2(Object.keys(this._zod.def.shape)); + }, + catchall(catchall) { + return this.clone(util_exports.mergeDefs(this._zod.def, { catchall })); + }, + passthrough() { + return this.clone(util_exports.mergeDefs(this._zod.def, { catchall: unknown() })); + }, + loose() { + return this.clone(util_exports.mergeDefs(this._zod.def, { catchall: unknown() })); + }, + strict() { + return this.clone(util_exports.mergeDefs(this._zod.def, { catchall: never() })); + }, + strip() { + return this.clone(util_exports.mergeDefs(this._zod.def, { catchall: void 0 })); + }, + extend(incoming) { + return util_exports.extend(this, incoming); + }, + safeExtend(incoming) { + return util_exports.safeExtend(this, incoming); + }, + merge(other) { + return util_exports.merge(this, other); + }, + pick(mask) { + return util_exports.pick(this, mask); + }, + omit(mask) { + return util_exports.omit(this, mask); + }, + partial(...args) { + return util_exports.partial(ZodOptional, this, args[0]); + }, + exactPartial(...args) { + return util_exports.partial(ZodExactOptional, this, args[0], "exactPartial"); + }, + required(...args) { + return util_exports.required(ZodNonOptional, this, args[0]); + } +}); +function object(shape, params) { + const def = { + type: "object", + shape: shape ?? {}, + ...util_exports.normalizeParams(params) + }; + return new ZodObject(def); +} +__name(object, "object"); +function strictObject(shape, params) { + return new ZodObject({ + type: "object", + shape, + catchall: never(), + ...util_exports.normalizeParams(params) + }); +} +__name(strictObject, "strictObject"); +function looseObject(shape, params) { + return new ZodObject({ + type: "object", + shape, + catchall: unknown(), + ...util_exports.normalizeParams(params) + }); +} +__name(looseObject, "looseObject"); +var ZodUnion = /* @__PURE__ */ $constructor("ZodUnion", (inst, def) => { + $ZodUnion.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => unionProcessor(inst, ctx, json2, params); + inst.options = def.options; +}); +function union(options, params) { + return new ZodUnion({ + type: "union", + options, + ...util_exports.normalizeParams(params) + }); +} +__name(union, "union"); +var ZodXor = /* @__PURE__ */ $constructor("ZodXor", (inst, def) => { + ZodUnion.init(inst, def); + $ZodXor.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => unionProcessor(inst, ctx, json2, params); + inst.options = def.options; +}); +function xor(options, params) { + return new ZodXor({ + type: "union", + options, + inclusive: false, + ...util_exports.normalizeParams(params) + }); +} +__name(xor, "xor"); +var ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("ZodDiscriminatedUnion", (inst, def) => { + ZodUnion.init(inst, def); + $ZodDiscriminatedUnion.init(inst, def); +}); +function discriminatedUnion(discriminator, options, params) { + return new ZodDiscriminatedUnion({ + type: "union", + options, + discriminator, + ...util_exports.normalizeParams(params) + }); +} +__name(discriminatedUnion, "discriminatedUnion"); +var ZodIntersection = /* @__PURE__ */ $constructor("ZodIntersection", (inst, def) => { + $ZodIntersection.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => intersectionProcessor(inst, ctx, json2, params); +}); +function intersection(left, right) { + return new ZodIntersection({ + type: "intersection", + left, + right + }); +} +__name(intersection, "intersection"); +var ZodTuple = /* @__PURE__ */ $constructor("ZodTuple", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodTuple.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => tupleProcessor(inst, ctx, json2, params); +}, { + rest(rest) { + return this.clone({ + ...this._zod.def, + rest + }); + }, + partial() { + const def = this._zod.def; + if (def.checks?.length) + throw new Error(".partial() cannot be used on tuple schemas containing refinements"); + return this.clone({ + ...def, + items: def.items.map((item) => new ZodOptional({ type: "optional", innerType: item })) + }); + } +}); +function tuple(items, _paramsOrRest, _params) { + const hasRest = _paramsOrRest instanceof $ZodType; + const params = hasRest ? _params : _paramsOrRest; + const rest = hasRest ? _paramsOrRest : null; + return new ZodTuple({ + type: "tuple", + items, + rest, + ...util_exports.normalizeParams(params) + }); +} +__name(tuple, "tuple"); +var ZodRecord = /* @__PURE__ */ $constructor("ZodRecord", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodRecord.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => recordProcessor(inst, ctx, json2, params); + inst.keyType = def.keyType; + inst.valueType = def.valueType; +}); +function record(keyType, valueType, params) { + if (!valueType || !valueType._zod) { + return new ZodRecord({ + type: "record", + keyType: string2(), + valueType: keyType, + ...util_exports.normalizeParams(valueType) + }); + } + return new ZodRecord({ + type: "record", + keyType, + valueType, + ...util_exports.normalizeParams(params) + }); +} +__name(record, "record"); +function partialRecord(keyType, valueType, params) { + return new ZodRecord({ + type: "record", + keyType, + valueType, + ...util_exports.normalizeParams(params), + partial: true + }); +} +__name(partialRecord, "partialRecord"); +function looseRecord(keyType, valueType, params) { + return new ZodRecord({ + type: "record", + keyType, + valueType, + mode: "loose", + ...util_exports.normalizeParams(params) + }); +} +__name(looseRecord, "looseRecord"); +var ZodMap = /* @__PURE__ */ $constructor("ZodMap", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodMap.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => mapProcessor(inst, ctx, json2, params); + inst.keyType = def.keyType; + inst.valueType = def.valueType; + inst.min = (...args) => inst.check(_minSize(...args)); + inst.nonempty = (params) => inst.check(_minSize(1, params)); + inst.max = (...args) => inst.check(_maxSize(...args)); + inst.size = (...args) => inst.check(_size(...args)); +}); +function map(keyType, valueType, params) { + return new ZodMap({ + type: "map", + keyType, + valueType, + ...util_exports.normalizeParams(params) + }); +} +__name(map, "map"); +var ZodSet = /* @__PURE__ */ $constructor("ZodSet", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodSet.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => setProcessor(inst, ctx, json2, params); + inst.min = (...args) => inst.check(_minSize(...args)); + inst.nonempty = (params) => inst.check(_minSize(1, params)); + inst.max = (...args) => inst.check(_maxSize(...args)); + inst.size = (...args) => inst.check(_size(...args)); +}); +function set(valueType, params) { + return new ZodSet({ + type: "set", + valueType, + ...util_exports.normalizeParams(params) + }); +} +__name(set, "set"); +var ZodEnum = /* @__PURE__ */ $constructor("ZodEnum", (inst, def) => { + $ZodEnum.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => enumProcessor(inst, ctx, json2, params); + inst.enum = def.entries; + inst.options = [...inst._zod.values]; + const keys = new Set(Object.keys(def.entries)); + inst.extract = (values, params) => { + const newEntries = {}; + for (const value of values) { + if (keys.has(value)) { + newEntries[value] = def.entries[value]; + } else + throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum({ + ...def, + checks: [], + ...util_exports.normalizeParams(params), + entries: newEntries + }); + }; + inst.exclude = (values, params) => { + const newEntries = { ...def.entries }; + for (const value of values) { + if (keys.has(value)) { + delete newEntries[value]; + } else + throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum({ + ...def, + checks: [], + ...util_exports.normalizeParams(params), + entries: newEntries + }); + }; +}); +function _enum2(values, params) { + const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; + return new ZodEnum({ + type: "enum", + entries, + ...util_exports.normalizeParams(params) + }); +} +__name(_enum2, "_enum"); +function nativeEnum(entries, params) { + return new ZodEnum({ + type: "enum", + entries, + ...util_exports.normalizeParams(params) + }); +} +__name(nativeEnum, "nativeEnum"); +var ZodLiteral = /* @__PURE__ */ $constructor("ZodLiteral", (inst, def) => { + $ZodLiteral.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => literalProcessor(inst, ctx, json2, params); + inst.values = new Set(def.values); + Object.defineProperty(inst, "value", { + get() { + if (def.values.length > 1) { + throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); + } + return def.values[0]; + } + }); +}); +function literal(value, params) { + return new ZodLiteral({ + type: "literal", + values: Array.isArray(value) ? value : [value], + ...util_exports.normalizeParams(params) + }); +} +__name(literal, "literal"); +var ZodFile = /* @__PURE__ */ $constructor("ZodFile", (inst, def) => { + $ZodFile.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => fileProcessor(inst, ctx, json2, params); + inst.min = (size, params) => inst.check(_minSize(size, params)); + inst.max = (size, params) => inst.check(_maxSize(size, params)); + inst.mime = (types3, params) => inst.check(_mime(Array.isArray(types3) ? types3 : [types3], params)); +}); +function file(params) { + return _file(ZodFile, params); +} +__name(file, "file"); +var ZodTransform = /* @__PURE__ */ $constructor("ZodTransform", (inst, def) => { + _ensureDefaultMemoizer(); + $ZodTransform.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => transformProcessor(inst, ctx, json2, params); + inst._zod.parse = (payload, _ctx) => { + if (_ctx.direction === "backward") { + throw new $ZodEncodeError(inst.constructor.name); + } + payload.addIssue = (issue2) => { + if (typeof issue2 === "string") { + payload.issues.push(util_exports.issue(issue2, payload.value, def)); + } else { + const _issue = issue2; + if (_issue.fatal) + _issue.continue = false; + _issue.code ?? (_issue.code = "custom"); + if (!("input" in _issue)) + _issue.input = payload.value; + _issue.inst ?? (_issue.inst = inst); + payload.issues.push(util_exports.issue(_issue)); + } + }; + const output2 = def.transform(payload.value, payload); + if (output2 instanceof Promise) { + return output2.then((output3) => { + payload.value = output3; + return payload; + }); + } + payload.value = output2; + return payload; + }; +}); +function transform(fn) { + return new ZodTransform({ + type: "transform", + transform: fn + }); +} +__name(transform, "transform"); +var ZodOptional = /* @__PURE__ */ $constructor("ZodOptional", (inst, def) => { + $ZodOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => optionalProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function optional(innerType) { + return new ZodOptional({ + type: "optional", + innerType + }); +} +__name(optional, "optional"); +var ZodExactOptional = /* @__PURE__ */ $constructor("ZodExactOptional", (inst, def) => { + $ZodExactOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => optionalProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function exactOptional(innerType) { + return new ZodExactOptional({ + type: "optional", + innerType + }); +} +__name(exactOptional, "exactOptional"); +var ZodNullable = /* @__PURE__ */ $constructor("ZodNullable", (inst, def) => { + $ZodNullable.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nullableProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function nullable(innerType) { + return new ZodNullable({ + type: "nullable", + innerType + }); +} +__name(nullable, "nullable"); +function nullish2(innerType) { + return optional(nullable(innerType)); +} +__name(nullish2, "nullish"); +var ZodDefault = /* @__PURE__ */ $constructor("ZodDefault", (inst, def) => { + $ZodDefault.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => defaultProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; + inst.removeDefault = inst.unwrap; +}); +function _default2(innerType, defaultValue) { + return new ZodDefault({ + type: "default", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : util_exports.shallowClone(defaultValue); + } + }); +} +__name(_default2, "_default"); +var ZodPrefault = /* @__PURE__ */ $constructor("ZodPrefault", (inst, def) => { + $ZodPrefault.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => prefaultProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function prefault(innerType, defaultValue) { + return new ZodPrefault({ + type: "prefault", + innerType, + get defaultValue() { + return typeof defaultValue === "function" ? defaultValue() : util_exports.shallowClone(defaultValue); + } + }); +} +__name(prefault, "prefault"); +var ZodNonOptional = /* @__PURE__ */ $constructor("ZodNonOptional", (inst, def) => { + $ZodNonOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nonoptionalProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function nonoptional(innerType, params) { + return new ZodNonOptional({ + type: "nonoptional", + innerType, + ...util_exports.normalizeParams(params) + }); +} +__name(nonoptional, "nonoptional"); +var ZodSuccess = /* @__PURE__ */ $constructor("ZodSuccess", (inst, def) => { + $ZodSuccess.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => successProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function success(innerType) { + return new ZodSuccess({ + type: "success", + innerType + }); +} +__name(success, "success"); +var ZodCatch = /* @__PURE__ */ $constructor("ZodCatch", (inst, def) => { + $ZodCatch.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => catchProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; + inst.removeCatch = inst.unwrap; +}); +function _catch2(innerType, catchValue) { + return new ZodCatch({ + type: "catch", + innerType, + catchValue: typeof catchValue === "function" ? catchValue : util_exports.constantCatch(catchValue) + }); +} +__name(_catch2, "_catch"); +var ZodNaN = /* @__PURE__ */ $constructor("ZodNaN", (inst, def) => { + $ZodNaN.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => nanProcessor(inst, ctx, json2, params); +}); +function nan(params) { + return _nan(ZodNaN, params); +} +__name(nan, "nan"); +var ZodPipe = /* @__PURE__ */ $constructor("ZodPipe", (inst, def) => { + $ZodPipe.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => pipeProcessor(inst, ctx, json2, params); + inst.in = def.in; + inst.out = def.out; +}); +function pipe(in_, out) { + return new ZodPipe({ + type: "pipe", + in: in_, + out + // ...util.normalizeParams(params), + }); +} +__name(pipe, "pipe"); +var ZodCodec = /* @__PURE__ */ $constructor("ZodCodec", (inst, def) => { + ZodPipe.init(inst, def); + $ZodCodec.init(inst, def); +}); +function codec(in_, out, params) { + return new ZodCodec({ + type: "pipe", + in: in_, + out, + transform: params.decode, + reverseTransform: params.encode + }); +} +__name(codec, "codec"); +function invertCodec(codec2) { + const def = codec2._zod.def; + return new ZodCodec({ + type: "pipe", + in: def.out, + out: def.in, + transform: def.reverseTransform, + reverseTransform: def.transform + }); +} +__name(invertCodec, "invertCodec"); +var ZodPreprocess = /* @__PURE__ */ $constructor("ZodPreprocess", (inst, def) => { + ZodPipe.init(inst, def); + $ZodPreprocess.init(inst, def); +}); +var ZodReadonly = /* @__PURE__ */ $constructor("ZodReadonly", (inst, def) => { + $ZodReadonly.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => readonlyProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function readonly(innerType) { + return new ZodReadonly({ + type: "readonly", + innerType + }); +} +__name(readonly, "readonly"); +var ZodTemplateLiteral = /* @__PURE__ */ $constructor("ZodTemplateLiteral", (inst, def) => { + $ZodTemplateLiteral.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => templateLiteralProcessor(inst, ctx, json2, params); +}); +function templateLiteral(parts, params) { + return new ZodTemplateLiteral({ + type: "template_literal", + parts, + ...util_exports.normalizeParams(params) + }); +} +__name(templateLiteral, "templateLiteral"); +var ZodLazy = /* @__PURE__ */ $constructor("ZodLazy", (inst, def) => { + $ZodLazy.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => lazyProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.getter(); +}); +function lazy(getter) { + return new ZodLazy({ + type: "lazy", + getter + }); +} +__name(lazy, "lazy"); +var ZodPromise = /* @__PURE__ */ $constructor("ZodPromise", (inst, def) => { + $ZodPromise.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => promiseProcessor(inst, ctx, json2, params); + inst.unwrap = () => inst._zod.def.innerType; +}); +function promise(innerType) { + return new ZodPromise({ + type: "promise", + innerType + }); +} +__name(promise, "promise"); +var ZodFunction = /* @__PURE__ */ $constructor("ZodFunction", (inst, def) => { + $ZodFunction.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => functionProcessor(inst, ctx, json2, params); +}); +function _function(params) { + return new ZodFunction({ + type: "function", + input: Array.isArray(params?.input) ? tuple(params?.input) : params?.input ?? array(unknown()), + output: params?.output ?? unknown() + }); +} +__name(_function, "_function"); +var ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => { + $ZodCustom.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json2, params) => customProcessor(inst, ctx, json2, params); +}); +function check(fn) { + const ch = new $ZodCheck({ + check: "custom" + // ...util.normalizeParams(params), + }); + ch._zod.check = fn; + return ch; +} +__name(check, "check"); +function custom(fn, _params) { + return _custom(ZodCustom, fn ?? (() => true), _params); +} +__name(custom, "custom"); +function refine(fn, _params = {}) { + return _refine(ZodCustom, fn, _params); +} +__name(refine, "refine"); +function superRefine(fn, params) { + return _superRefine(fn, params); +} +__name(superRefine, "superRefine"); +var describe2 = describe; +var meta2 = meta; +var ZodInstanceOf = /* @__PURE__ */ $constructor("ZodInstanceOf", (inst, def) => { + ZodCustom.init(inst, def); +}, { + properties(shape, params) { + return this.check(_properties(shape, params)); + } +}); +function _instanceof(cls, params = {}) { + const inst = new ZodInstanceOf({ + type: "custom", + check: "custom", + fn: /* @__PURE__ */ __name((data) => data instanceof cls, "fn"), + abort: true, + ...util_exports.normalizeParams(params) + }); + inst._zod.bag.Class = cls; + inst._zod.check = (payload) => { + if (!(payload.value instanceof cls)) { + payload.issues.push({ + code: "invalid_type", + expected: cls.name, + input: payload.value, + inst, + path: [...inst._zod.def.path ?? []] + }); + } + }; + return inst; +} +__name(_instanceof, "_instanceof"); +var stringbool = /* @__PURE__ */ __name((...args) => _stringbool({ + Codec: ZodCodec, + Boolean: ZodBoolean, + String: ZodString +}, ...args), "stringbool"); +function json(params) { + const jsonSchema = lazy(() => { + return union([string2(params), number2(), boolean2(), _null3(), array(jsonSchema), record(string2(), jsonSchema)]); + }); + return jsonSchema; +} +__name(json, "json"); +function preprocess(fn, schema2) { + return new ZodPreprocess({ + type: "pipe", + in: transform(fn), + out: schema2 + }); +} +__name(preprocess, "preprocess"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/compat.js +var ZodIssueCode = { + invalid_type: "invalid_type", + too_big: "too_big", + too_small: "too_small", + invalid_format: "invalid_format", + not_multiple_of: "not_multiple_of", + unrecognized_keys: "unrecognized_keys", + invalid_union: "invalid_union", + invalid_key: "invalid_key", + invalid_element: "invalid_element", + invalid_value: "invalid_value", + custom: "custom" +}; +function setErrorMap(map2) { + config({ + customError: map2 + }); +} +__name(setErrorMap, "setErrorMap"); +function getErrorMap() { + return config().customError; +} +__name(getErrorMap, "getErrorMap"); +var ZodFirstPartyTypeKind; +/* @__PURE__ */ (function(ZodFirstPartyTypeKind2) { +})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/iso.js +var iso_exports = {}; +__export(iso_exports, { + ZodISODate: () => ZodISODate, + ZodISODateTime: () => ZodISODateTime, + ZodISODuration: () => ZodISODuration, + ZodISOTime: () => ZodISOTime, + date: () => date3, + datetime: () => datetime2, + duration: () => duration2, + time: () => time2 +}); +function datetime2(params) { + return _isoDateTime(ZodISODateTime, params); +} +__name(datetime2, "datetime"); +function date3(params) { + return _isoDate(ZodISODate, params); +} +__name(date3, "date"); +function time2(params) { + return _isoTime(ZodISOTime, params); +} +__name(time2, "time"); +function duration2(params) { + return _isoDuration(ZodISODuration, params); +} +__name(duration2, "duration"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/from-json-schema.js +var z = { + ...schemas_exports2, + ...checks_exports2, + iso: iso_exports +}; +var RECOGNIZED_KEYS = /* @__PURE__ */ new Set([ + // Schema identification + "$schema", + "$ref", + "$defs", + "definitions", + // Core schema keywords + "$id", + "id", + "$comment", + "$anchor", + "$vocabulary", + "$dynamicRef", + "$dynamicAnchor", + // Type + "type", + "enum", + "const", + // Composition + "anyOf", + "oneOf", + "allOf", + "not", + // Object + "properties", + "required", + "additionalProperties", + "patternProperties", + "propertyNames", + "minProperties", + "maxProperties", + // Array + "items", + "prefixItems", + "additionalItems", + "minItems", + "maxItems", + "uniqueItems", + "contains", + "minContains", + "maxContains", + // String + "minLength", + "maxLength", + "pattern", + "format", + // Number + "minimum", + "maximum", + "exclusiveMinimum", + "exclusiveMaximum", + "multipleOf", + // Already handled metadata + "description", + "default", + // Content + "contentEncoding", + "contentMediaType", + "contentSchema", + // Unsupported (error-throwing) + "unevaluatedItems", + "unevaluatedProperties", + "if", + "then", + "else", + "dependentSchemas", + "dependentRequired", + // OpenAPI + "nullable", + "readOnly" +]); +function detectVersion(schema2, defaultTarget) { + const $schema = schema2.$schema; + if ($schema === "https://json-schema.org/draft/2020-12/schema") { + return "draft-2020-12"; + } + if ($schema === "http://json-schema.org/draft-07/schema#") { + return "draft-7"; + } + if ($schema === "http://json-schema.org/draft-04/schema#") { + return "draft-4"; + } + return defaultTarget ?? "draft-2020-12"; +} +__name(detectVersion, "detectVersion"); +function applyMinItems(items, minItems) { + return items.map((item, index) => index < minItems ? item : item.optional()); +} +__name(applyMinItems, "applyMinItems"); +function decodeJSONPointerSegment(segment) { + return segment.replace(/~1/g, "/").replace(/~0/g, "~"); +} +__name(decodeJSONPointerSegment, "decodeJSONPointerSegment"); +function resolveRef(ref, ctx) { + if (!ref.startsWith("#")) { + throw new Error("External $ref is not supported, only local refs (#/...) are allowed"); + } + const path2 = ref.slice(1).split("/").filter(Boolean); + if (path2.length === 0) { + return ctx.rootSchema; + } + const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions"; + if (path2[0] === defsKey) { + const key = path2[1] === void 0 ? void 0 : decodeJSONPointerSegment(path2[1]); + if (!key || !ctx.defs[key]) { + throw new Error(`Reference not found: ${ref}`); + } + return ctx.defs[key]; + } + throw new Error(`Reference not found: ${ref}`); +} +__name(resolveRef, "resolveRef"); +function checkObjectGuards(objectSchema, guards) { + const guard = z.transform((value) => value).check((payload) => { + const value = payload.value; + if (typeof value !== "object" || value === null || Array.isArray(value)) + return; + const keys = Object.getOwnPropertyNames(value); + if (guards.minProperties !== void 0 && keys.length < guards.minProperties) { + payload.issues.push({ + origin: "object", + code: "too_small", + minimum: guards.minProperties, + inclusive: true, + message: `Too small: expected object to have >=${guards.minProperties} properties`, + input: value, + inst: objectSchema, + continue: true + }); + } + if (guards.maxProperties !== void 0 && keys.length > guards.maxProperties) { + payload.issues.push({ + origin: "object", + code: "too_big", + maximum: guards.maxProperties, + inclusive: true, + message: `Too big: expected object to have <=${guards.maxProperties} properties`, + input: value, + inst: objectSchema, + continue: true + }); + } + if (guards.keySchema) { + for (const key of keys) { + const result = guards.keySchema.safeParse(key); + if (result.success) + continue; + payload.issues.push({ + code: "invalid_key", + origin: "record", + issues: result.error.issues, + input: key, + path: [key], + continue: true + }); + } + } + }); + return guard.pipe(objectSchema); +} +__name(checkObjectGuards, "checkObjectGuards"); +function canonicalKey(value, seen) { + if (value === null) + return "z"; + const type = typeof value; + if (type !== "object") { + if (type === "number" && Number.isNaN(value)) + return null; + const raw4 = String(value); + return `${type[0]}${raw4.length}:${raw4}`; + } + if (seen.has(value)) + return null; + seen.add(value); + try { + if (Array.isArray(value)) { + const parts2 = []; + for (const item of value) { + const key = canonicalKey(item, seen); + if (key === null) + return null; + parts2.push(key); + } + return `a${parts2.length}:[${parts2.join(",")}]`; + } + const keys = Object.keys(value).sort(); + const parts = []; + for (const k5 of keys) { + const key = canonicalKey(value[k5], seen); + if (key === null) + return null; + parts.push(`${k5.length}:${k5}=${key}`); + } + return `o${parts.length}:{${parts.join(",")}}`; + } finally { + seen.delete(value); + } +} +__name(canonicalKey, "canonicalKey"); +var SCHEMA_KEYWORDS = /* @__PURE__ */ new Set([ + "items", + "prefixItems", + "additionalItems", + "additionalProperties", + "contains", + "propertyNames", + "not", + "if", + "then", + "else", + "allOf", + "anyOf", + "oneOf", + "unevaluatedItems", + "unevaluatedProperties", + "contentSchema" +]); +var SCHEMA_MAP_KEYWORDS = /* @__PURE__ */ new Set([ + "properties", + "patternProperties", + "dependentSchemas", + "dependencies", + "$defs", + "definitions" +]); +function containsRef(value) { + if (typeof value !== "object" || value === null) + return false; + if (Array.isArray(value)) + return value.some(containsRef); + if (typeof value.$ref === "string") + return true; + return Object.entries(value).some(([key, sub]) => { + if (SCHEMA_KEYWORDS.has(key)) + return containsRef(sub); + if (!SCHEMA_MAP_KEYWORDS.has(key) || typeof sub !== "object" || sub === null) + return false; + return Object.values(sub).some(containsRef); + }); +} +__name(containsRef, "containsRef"); +function plural(n3) { + return n3 === 1 ? "element" : "elements"; +} +__name(plural, "plural"); +function checkArrayGuards(arraySchema, guards) { + const guard = z.transform((value) => value).check((payload) => { + const items = payload.value; + if (!Array.isArray(items)) + return; + if (guards.uniqueItems === true) { + const firstSeen = /* @__PURE__ */ new Map(); + for (let i5 = 0; i5 < items.length; i5++) { + const key = canonicalKey(items[i5], /* @__PURE__ */ new Set()); + if (key === null) + continue; + const first = firstSeen.get(key); + if (first === void 0) { + firstSeen.set(key, i5); + continue; + } + payload.issues.push({ + code: "custom", + message: `Array items must be unique: element at index ${i5} duplicates the one at index ${first}`, + input: items, + path: [i5], + continue: true + }); + } + } + if (guards.containsSchema) { + const minContains = guards.minContains ?? 1; + const ceiling = guards.maxContains !== void 0 ? guards.maxContains + 1 : Number.POSITIVE_INFINITY; + let matches = 0; + for (const item of items) { + if (guards.containsSchema.safeParse(item).success && ++matches >= ceiling) + break; + } + if (matches < minContains) { + payload.issues.push({ + code: "custom", + message: `Array must contain at least ${minContains} matching ${plural(minContains)}; found ${matches}`, + input: items, + continue: true + }); + } + if (guards.maxContains !== void 0 && matches > guards.maxContains) { + payload.issues.push({ + code: "custom", + message: `Array must contain at most ${guards.maxContains} matching ${plural(guards.maxContains)}`, + input: items, + continue: true + }); + } + } + }); + return guard.pipe(arraySchema); +} +__name(checkArrayGuards, "checkArrayGuards"); +function getTupleRest(restSchema, ctx) { + if (restSchema === false) { + return void 0; + } + if (restSchema === void 0 || restSchema === true) { + return z.any(); + } + return convertSchema(restSchema, ctx); +} +__name(getTupleRest, "getTupleRest"); +var fullTime = /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/; +function convertBaseSchema(schema2, ctx) { + if (schema2.not !== void 0) { + if (typeof schema2.not === "object" && Object.keys(schema2.not).length === 0) { + return z.never(); + } + throw new Error("not is not supported in Zod (except { not: {} } for never)"); + } + if (schema2.unevaluatedItems !== void 0) { + throw new Error("unevaluatedItems is not supported"); + } + if (schema2.unevaluatedProperties !== void 0) { + throw new Error("unevaluatedProperties is not supported"); + } + if (schema2.if !== void 0 || schema2.then !== void 0 || schema2.else !== void 0) { + throw new Error("Conditional schemas (if/then/else) are not supported"); + } + if (schema2.dependentSchemas !== void 0 || schema2.dependentRequired !== void 0) { + throw new Error("dependentSchemas and dependentRequired are not supported"); + } + if (schema2.$ref) { + const refPath = schema2.$ref; + if (ctx.refs.has(refPath)) { + return ctx.refs.get(refPath); + } + if (ctx.processing.has(refPath)) { + return z.lazy(() => { + if (!ctx.refs.has(refPath)) { + throw new Error(`Circular reference not resolved: ${refPath}`); + } + return ctx.refs.get(refPath); + }); + } + ctx.processing.add(refPath); + const resolved = resolveRef(refPath, ctx); + const zodSchema2 = convertSchema(resolved, ctx); + ctx.refs.set(refPath, zodSchema2); + ctx.processing.delete(refPath); + return zodSchema2; + } + if (schema2.enum !== void 0) { + const enumValues = schema2.enum; + if (ctx.version === "openapi-3.0" && schema2.nullable === true && enumValues.length === 1 && enumValues[0] === null) { + return z.null(); + } + if (enumValues.length === 0) { + return z.never(); + } + if (enumValues.length === 1) { + return z.literal(enumValues[0]); + } + if (enumValues.every((v) => typeof v === "string")) { + return z.enum(enumValues); + } + const literalSchemas = enumValues.map((v) => z.literal(v)); + if (literalSchemas.length < 2) { + return literalSchemas[0]; + } + return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]); + } + if (schema2.const !== void 0) { + return z.literal(schema2.const); + } + const type = schema2.type; + if (Array.isArray(type)) { + const typeSchemas = type.map((t) => { + const typeSchema = { ...schema2, type: t }; + return convertBaseSchema(typeSchema, ctx); + }); + if (typeSchemas.length === 0) { + return z.never(); + } + if (typeSchemas.length === 1) { + return typeSchemas[0]; + } + return z.union(typeSchemas); + } + if (!type) { + return z.any(); + } + let zodSchema; + switch (type) { + case "string": { + let stringSchema = z.string(); + if (schema2.format) { + const format = schema2.format; + if (format === "email") { + stringSchema = stringSchema.check(z.email()); + } else if (format === "uri" || format === "uri-reference") { + stringSchema = stringSchema.check(z.url()); + } else if (format === "uuid" || format === "guid") { + stringSchema = stringSchema.check(z.uuid()); + } else if (format === "date-time") { + stringSchema = stringSchema.check(z.iso.datetime({ offset: true })); + } else if (format === "date") { + stringSchema = stringSchema.check(z.iso.date()); + } else if (format === "time") { + stringSchema = stringSchema.check(z.regex(fullTime)); + } else if (format === "duration") { + stringSchema = stringSchema.check(z.iso.duration()); + } else if (format === "hostname") { + stringSchema = stringSchema.check(z.hostname()); + } else if (format === "ipv4") { + stringSchema = stringSchema.check(z.ipv4()); + } else if (format === "ipv6") { + stringSchema = stringSchema.check(z.ipv6()); + } else if (format === "mac") { + stringSchema = stringSchema.check(z.mac()); + } else if (format === "cidr") { + stringSchema = stringSchema.check(z.cidrv4()); + } else if (format === "cidr-v6") { + stringSchema = stringSchema.check(z.cidrv6()); + } else if (format === "base64") { + stringSchema = stringSchema.check(z.base64()); + } else if (format === "base64url") { + stringSchema = stringSchema.check(z.base64url()); + } else if (format === "e164") { + stringSchema = stringSchema.check(z.e164()); + } else if (format === "credit_card") { + stringSchema = stringSchema.check(z.creditCard()); + } else if (format === "iban") { + stringSchema = stringSchema.check(z.iban()); + } else if (format === "jwt") { + stringSchema = stringSchema.check(z.jwt()); + } else if (format === "emoji") { + stringSchema = stringSchema.check(z.emoji()); + } else if (format === "nanoid") { + stringSchema = stringSchema.check(z.nanoid()); + } else if (format === "cuid") { + stringSchema = stringSchema.check(z.cuid()); + } else if (format === "cuid2") { + stringSchema = stringSchema.check(z.cuid2()); + } else if (format === "ulid") { + stringSchema = stringSchema.check(z.ulid()); + } else if (format === "xid") { + stringSchema = stringSchema.check(z.xid()); + } else if (format === "ksuid") { + stringSchema = stringSchema.check(z.ksuid()); + } + } + if (typeof schema2.minLength === "number") { + stringSchema = stringSchema.min(schema2.minLength); + } + if (typeof schema2.maxLength === "number") { + stringSchema = stringSchema.max(schema2.maxLength); + } + if (schema2.pattern) { + stringSchema = stringSchema.regex(new RegExp(schema2.pattern)); + } + zodSchema = stringSchema; + break; + } + case "number": + case "integer": { + let numberSchema = type === "integer" ? z.number().int() : z.number(); + if (typeof schema2.minimum === "number" && schema2.exclusiveMinimum !== true) { + numberSchema = numberSchema.min(schema2.minimum); + } + if (typeof schema2.maximum === "number" && schema2.exclusiveMaximum !== true) { + numberSchema = numberSchema.max(schema2.maximum); + } + if (typeof schema2.exclusiveMinimum === "number") { + numberSchema = numberSchema.gt(schema2.exclusiveMinimum); + } else if (schema2.exclusiveMinimum === true && typeof schema2.minimum === "number") { + numberSchema = numberSchema.gt(schema2.minimum); + } + if (typeof schema2.exclusiveMaximum === "number") { + numberSchema = numberSchema.lt(schema2.exclusiveMaximum); + } else if (schema2.exclusiveMaximum === true && typeof schema2.maximum === "number") { + numberSchema = numberSchema.lt(schema2.maximum); + } + if (typeof schema2.multipleOf === "number") { + numberSchema = numberSchema.multipleOf(schema2.multipleOf); + } + zodSchema = numberSchema; + break; + } + case "boolean": { + zodSchema = z.boolean(); + break; + } + case "null": { + zodSchema = z.null(); + break; + } + case "object": { + const shape = {}; + const properties = schema2.properties || {}; + const requiredSet = new Set(schema2.required || []); + const additionalSchema = typeof schema2.additionalProperties === "object" ? convertSchema(schema2.additionalProperties, ctx) : void 0; + for (const [key, propSchema] of Object.entries(properties)) { + const propZodSchema = convertSchema(propSchema, ctx); + assignProp(shape, key, requiredSet.has(key) ? propZodSchema : propZodSchema.optional()); + } + if (schema2.patternProperties) { + const patternProps = schema2.patternProperties; + const patternKeys = Object.keys(patternProps); + const looseRecords = []; + for (const pattern of patternKeys) { + const patternValue = convertSchema(patternProps[pattern], ctx); + const keySchema = z.string().regex(new RegExp(pattern)); + looseRecords.push(z.looseRecord(keySchema, patternValue)); + } + const schemasToIntersect = []; + if (Object.keys(shape).length > 0) { + schemasToIntersect.push(z.object(shape).passthrough()); + } + schemasToIntersect.push(...looseRecords); + if (schemasToIntersect.length === 0) { + zodSchema = z.object({}).passthrough(); + } else if (schemasToIntersect.length === 1) { + zodSchema = schemasToIntersect[0]; + } else { + let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]); + for (let i5 = 2; i5 < schemasToIntersect.length; i5++) { + result = z.intersection(result, schemasToIntersect[i5]); + } + zodSchema = result; + } + if (schema2.additionalProperties === false) { + const propertyKeys = Object.keys(shape); + const patterns = patternKeys.map((p3) => new RegExp(p3)); + const basePatternSchema = zodSchema; + zodSchema = zodSchema.check((payload) => { + if (!isPlainObject(payload.value)) + return; + const unrecognized = []; + for (const key of Object.keys(payload.value)) { + if (propertyKeys.includes(key)) + continue; + if (patterns.some((regex) => regex.test(key))) + continue; + unrecognized.push(key); + } + if (unrecognized.length) { + payload.issues.push({ + code: "unrecognized_keys", + keys: unrecognized, + input: payload.value, + inst: basePatternSchema + }); + } + }); + } + } else { + const objectSchema = z.object(shape); + if (schema2.additionalProperties === false) { + zodSchema = objectSchema.strict(); + } else if (additionalSchema) { + zodSchema = objectSchema.catchall(additionalSchema); + } else { + zodSchema = objectSchema.passthrough(); + } + } + const hasKeyGuard = schema2.propertyNames !== void 0 && schema2.propertyNames !== true; + const minProperties = typeof schema2.minProperties === "number" ? schema2.minProperties : void 0; + const maxProperties = typeof schema2.maxProperties === "number" ? schema2.maxProperties : void 0; + if (hasKeyGuard || minProperties !== void 0 || maxProperties !== void 0) { + let keySchema; + if (hasKeyGuard) { + const keyJSONSchema = typeof schema2.propertyNames === "object" && schema2.propertyNames.type === void 0 ? { type: "string", ...schema2.propertyNames } : schema2.propertyNames; + keySchema = convertSchema(keyJSONSchema, ctx); + } + zodSchema = checkObjectGuards(zodSchema, { keySchema, minProperties, maxProperties }); + } + break; + } + case "array": { + const prefixItems = schema2.prefixItems; + const items = schema2.items; + if (prefixItems && Array.isArray(prefixItems)) { + const minItems = typeof schema2.minItems === "number" ? schema2.minItems : 0; + const tupleItems = prefixItems.map((item) => convertSchema(item, ctx)); + const positionalItems = applyMinItems(tupleItems, minItems); + const rest = !Array.isArray(items) ? getTupleRest(items, ctx) : void 0; + const tupleSchema = z.tuple(positionalItems); + zodSchema = rest ? tupleSchema.rest(rest) : tupleSchema; + if (typeof schema2.minItems === "number") { + zodSchema = zodSchema.check(z.minLength(schema2.minItems)); + } + if (typeof schema2.maxItems === "number") { + zodSchema = zodSchema.check(z.maxLength(schema2.maxItems)); + } + } else if (Array.isArray(items)) { + const minItems = typeof schema2.minItems === "number" ? schema2.minItems : 0; + const tupleItems = items.map((item) => convertSchema(item, ctx)); + const positionalItems = applyMinItems(tupleItems, minItems); + const rest = getTupleRest(schema2.additionalItems, ctx); + const tupleSchema = z.tuple(positionalItems); + zodSchema = rest ? tupleSchema.rest(rest) : tupleSchema; + if (typeof schema2.minItems === "number") { + zodSchema = zodSchema.check(z.minLength(schema2.minItems)); + } + if (typeof schema2.maxItems === "number") { + zodSchema = zodSchema.check(z.maxLength(schema2.maxItems)); + } + } else if (items !== void 0) { + const element = convertSchema(items, ctx); + let arraySchema = z.array(element); + if (typeof schema2.minItems === "number") { + arraySchema = arraySchema.min(schema2.minItems); + } + if (typeof schema2.maxItems === "number") { + arraySchema = arraySchema.max(schema2.maxItems); + } + zodSchema = arraySchema; + } else { + zodSchema = z.array(z.any()); + } + if (schema2.uniqueItems === true || schema2.contains !== void 0) { + zodSchema = checkArrayGuards(zodSchema, { + uniqueItems: schema2.uniqueItems === true, + containsSchema: schema2.contains !== void 0 ? convertSchema(schema2.contains, ctx) : void 0, + minContains: typeof schema2.minContains === "number" ? schema2.minContains : void 0, + maxContains: typeof schema2.maxContains === "number" ? schema2.maxContains : void 0 + }); + } + break; + } + default: + throw new Error(`Unsupported type: ${type}`); + } + return zodSchema; +} +__name(convertBaseSchema, "convertBaseSchema"); +function convertSchema(schema2, ctx) { + if (typeof schema2 === "boolean") { + return schema2 ? z.any() : z.never(); + } + let baseSchema = convertBaseSchema(schema2, ctx); + const hasExplicitType = schema2.type || schema2.enum !== void 0 || schema2.const !== void 0; + if (schema2.anyOf && Array.isArray(schema2.anyOf)) { + const options = schema2.anyOf.map((s2) => convertSchema(s2, ctx)); + const anyOfUnion = z.union(options); + baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion; + } + if (schema2.oneOf && Array.isArray(schema2.oneOf)) { + const options = schema2.oneOf.map((s2) => convertSchema(s2, ctx)); + const oneOfUnion = z.xor(options); + baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion; + } + if (schema2.allOf && Array.isArray(schema2.allOf)) { + if (schema2.allOf.length === 0) { + baseSchema = hasExplicitType ? baseSchema : z.any(); + } else { + let result = hasExplicitType ? baseSchema : convertSchema(schema2.allOf[0], ctx); + const startIdx = hasExplicitType ? 0 : 1; + for (let i5 = startIdx; i5 < schema2.allOf.length; i5++) { + result = z.intersection(result, convertSchema(schema2.allOf[i5], ctx)); + } + baseSchema = result; + } + } + if (schema2.nullable === true && ctx.version === "openapi-3.0") { + baseSchema = z.nullable(baseSchema); + } + if (schema2.readOnly === true) { + baseSchema = z.readonly(baseSchema); + } + if (schema2.default !== void 0) { + baseSchema = baseSchema.default(schema2.default); + } + const extraMeta = {}; + const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"]; + for (const key of coreMetadataKeys) { + if (key in schema2) { + extraMeta[key] = schema2[key]; + } + } + const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"]; + for (const key of contentMetadataKeys) { + if (key in schema2) { + extraMeta[key] = schema2[key]; + } + } + if (schema2.type === "object" && schema2.$ref === void 0) { + if (schema2.propertyNames !== void 0 && !containsRef(schema2.propertyNames)) { + extraMeta.propertyNames = schema2.propertyNames; + } + for (const key of ["minProperties", "maxProperties"]) { + if (schema2[key] !== void 0) + extraMeta[key] = schema2[key]; + } + } + if (schema2.type === "array" && schema2.$ref === void 0) { + if (schema2.contains !== void 0 && !containsRef(schema2.contains)) { + extraMeta.contains = schema2.contains; + } + for (const key of ["uniqueItems", "minContains", "maxContains"]) { + if (schema2[key] !== void 0) + extraMeta[key] = schema2[key]; + } + } + for (const key of Object.keys(schema2)) { + if (!RECOGNIZED_KEYS.has(key)) { + assignProp(extraMeta, key, schema2[key]); + } + } + if (Object.keys(extraMeta).length > 0) { + ctx.registry.add(baseSchema, extraMeta); + } + if (schema2.description) { + baseSchema = baseSchema.describe(schema2.description); + } + return baseSchema; +} +__name(convertSchema, "convertSchema"); +function fromJSONSchema(schema2, params) { + if (typeof schema2 === "boolean") { + return schema2 ? z.any() : z.never(); + } + let normalized; + try { + normalized = JSON.parse(JSON.stringify(schema2)); + } catch { + throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas"); + } + const version2 = detectVersion(normalized, params?.defaultTarget); + const defs = normalized.$defs || normalized.definitions || {}; + const ctx = { + version: version2, + defs, + refs: /* @__PURE__ */ new Map(), + processing: /* @__PURE__ */ new Set(), + rootSchema: normalized, + registry: params?.registry ?? globalRegistry + }; + return convertSchema(normalized, ctx); +} +__name(fromJSONSchema, "fromJSONSchema"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/visit.js +var RESOLVING = /* @__PURE__ */ Symbol("z.visit/resolving"); +function visit(schema2, fnOrHandlers) { + const fn = typeof fnOrHandlers === "function" ? fnOrHandlers : (node2, rewritten) => { + const h5 = fnOrHandlers[node2._zod.def.type]; + return h5 ? h5(node2, rewritten) : node2; + }; + const cache5 = /* @__PURE__ */ new Map(); + function run(s2) { + const cached2 = cache5.get(s2); + if (cached2 === RESOLVING) { + return new $ZodLazy({ + type: "lazy", + getter: /* @__PURE__ */ __name(() => cache5.get(s2), "getter") + }); + } + if (cached2 !== void 0) + return cached2; + cache5.set(s2, RESOLVING); + const inner = mapInner(s2); + const mapped = fn(inner, inner !== s2); + cache5.set(s2, mapped); + return mapped; + } + __name(run, "run"); + function mapInner(s2) { + const def = s2._zod.def; + const kind = def.type; + switch (kind) { + case "object": { + const oldShape = def.shape; + const keys = Object.keys(oldShape); + let changed = false; + const newShape = {}; + for (const k5 of keys) { + const mapped = run(oldShape[k5]); + if (mapped !== oldShape[k5]) + changed = true; + newShape[k5] = mapped; + } + let newCatchall = def.catchall; + if (def.catchall) { + newCatchall = run(def.catchall); + if (newCatchall !== def.catchall) + changed = true; + } + return changed ? clone(s2, { ...def, shape: newShape, catchall: newCatchall }) : s2; + } + case "array": { + const mapped = run(def.element); + return mapped === def.element ? s2 : clone(s2, { ...def, element: mapped }); + } + case "tuple": { + const oldItems = def.items; + let changed = false; + const newItems = []; + for (const item of oldItems) { + const mapped = run(item); + if (mapped !== item) + changed = true; + newItems.push(mapped); + } + let newRest = def.rest; + if (def.rest) { + newRest = run(def.rest); + if (newRest !== def.rest) + changed = true; + } + return changed ? clone(s2, { ...def, items: newItems, rest: newRest }) : s2; + } + case "record": + case "map": { + const newKey = run(def.keyType); + const newVal = run(def.valueType); + return newKey === def.keyType && newVal === def.valueType ? s2 : clone(s2, { ...def, keyType: newKey, valueType: newVal }); + } + case "set": { + const newVal = run(def.valueType); + return newVal === def.valueType ? s2 : clone(s2, { ...def, valueType: newVal }); + } + case "union": { + const oldOptions = def.options; + let changed = false; + const newOptions = []; + for (const opt of oldOptions) { + const mapped = run(opt); + if (mapped !== opt) + changed = true; + newOptions.push(mapped); + } + return changed ? clone(s2, { ...def, options: newOptions }) : s2; + } + case "intersection": { + const newLeft = run(def.left); + const newRight = run(def.right); + return newLeft === def.left && newRight === def.right ? s2 : clone(s2, { ...def, left: newLeft, right: newRight }); + } + case "optional": + case "nullable": + case "default": + case "prefault": + case "catch": + case "readonly": + case "nonoptional": + case "promise": + case "success": { + const newInner = run(def.innerType); + return newInner === def.innerType ? s2 : clone(s2, { ...def, innerType: newInner }); + } + case "pipe": { + const newIn = run(def.in); + const newOut = run(def.out); + return newIn === def.in && newOut === def.out ? s2 : clone(s2, { ...def, in: newIn, out: newOut }); + } + case "function": { + const newInput = run(def.input); + const newOutput = run(def.output); + return newInput === def.input && newOutput === def.output ? s2 : clone(s2, { ...def, input: newInput, output: newOutput }); + } + case "lazy": { + const original = def.getter; + const { _cachedInner, ...rest } = def; + return clone(s2, { ...rest, getter: /* @__PURE__ */ __name(() => run(original()), "getter") }); + } + // A leaf by choice: `parts` are regex fragments, not data positions. + case "template_literal": + // Leaves. + case "string": + case "number": + case "int": + case "boolean": + case "bigint": + case "symbol": + case "undefined": + case "null": + case "void": + case "never": + case "any": + case "unknown": + case "date": + case "nan": + case "enum": + case "literal": + case "file": + case "transform": + case "custom": + return s2; + default: { + kind; + return s2; + } + } + } + __name(mapInner, "mapInner"); + return run(schema2); +} +__name(visit, "visit"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/deep-partial.js +function deepPartial(schema2) { + return visit(schema2, { + object: /* @__PURE__ */ __name((s2) => s2.partial(), "object"), + // Every partialed option now admits `undefined`, which the constructor rejects as a duplicate. + union: /* @__PURE__ */ __name((s2) => { + const def = s2._zod.def; + return def.discriminator === void 0 ? s2 : union(def.options); + }, "union") + }); +} +__name(deepPartial, "deepPartial"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/in-out.js +function withChecks(side, checks) { + if (!checks?.length) + return side; + const def = side._zod.def; + return clone(side, mergeDefs(def, { checks: [...def.checks ?? [], ...checks] }), { parent: true }); +} +__name(withChecks, "withChecks"); +function outSide(def) { + return withChecks(def.out, def.checks); +} +__name(outSide, "outSide"); +function inSide(def) { + return def.in._zod.traits.has("$ZodTransform") ? outSide(def) : def.in; +} +__name(inSide, "inSide"); +function input(schema2) { + return visit(schema2, { + pipe: /* @__PURE__ */ __name((s2) => inSide(s2._zod.def), "pipe"), + // A default value belongs to the output side, so a rewritten inner type leaves it stranded. `.default()` widens the declared input type with `undefined`, and `optional` is what carries that across. + default: /* @__PURE__ */ __name((s2, rewritten) => rewritten ? optional(s2._zod.def.innerType) : s2, "default"), + // A catch value is output-side too, but `.catch()` leaves the declared input type alone, so the inner schema stands on its own. + catch: /* @__PURE__ */ __name((s2, rewritten) => rewritten ? s2._zod.def.innerType : s2, "catch") + }); +} +__name(input, "input"); +function output(schema2) { + return visit(schema2, { + pipe: /* @__PURE__ */ __name((s2) => outSide(s2._zod.def), "pipe"), + // A prefault value is fed through the schema, which makes it input-side, so a rewritten inner type leaves it stranded. + prefault: /* @__PURE__ */ __name((s2, rewritten) => rewritten ? s2._zod.def.innerType : s2, "prefault") + }); +} +__name(output, "output"); + +// ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/coerce.js +var coerce_exports = {}; +__export(coerce_exports, { + bigint: () => bigint3, + boolean: () => boolean3, + date: () => date4, + number: () => number3, + string: () => string3 +}); +function string3(params) { + return _coercedString(ZodString, params); +} +__name(string3, "string"); +function number3(params) { + return _coercedNumber(ZodNumber, params); +} +__name(number3, "number"); +function boolean3(params) { + return _coercedBoolean(ZodBoolean, params); +} +__name(boolean3, "boolean"); +function bigint3(params) { + return _coercedBigint(ZodBigInt, params); +} +__name(bigint3, "bigint"); +function date4(params) { + return _coercedDate(ZodDate, params); +} +__name(date4, "date"); + +// dist/config/env.js +if (existsSync(".env")) + process.loadEnvFile(".env"); +var bool = /* @__PURE__ */ __name((fallback2) => external_exports.enum(["true", "false", "1", "0"]).optional().transform((v) => v === void 0 ? fallback2 : v === "true" || v === "1"), "bool"); +var schema = external_exports.object({ + NODE_ENV: external_exports.enum(["development", "production", "test"]).default("development"), + PORT: external_exports.coerce.number().int().default(4e3), + CORS_ORIGINS: external_exports.string().default(""), + TRUST_PROXY: external_exports.coerce.number().int().min(0).default(1), + DATABASE_URL: external_exports.string().min(1), + JWT_SECRET: external_exports.string().min(32, "JWT_SECRET must be at least 32 characters"), + JWT_ACCESS_TTL: external_exports.string().default("15m"), + REFRESH_TTL_DAYS: external_exports.coerce.number().int().positive().default(30), + COOKIE_SECURE: bool(true), + S3_ENDPOINT: external_exports.string().optional(), + S3_REGION: external_exports.string().default("us-east-1"), + S3_BUCKET: external_exports.string().default("imen-media"), + S3_ACCESS_KEY: external_exports.string().default(""), + S3_SECRET_KEY: external_exports.string().default(""), + S3_FORCE_PATH_STYLE: bool(true), + S3_ENSURE_BUCKET: bool(false), + MEDIA_PUBLIC_URL: external_exports.string().default("/media").transform((v) => v.replace(/\/+$/, "")), + WEB_REVALIDATE_URL: external_exports.string().optional(), + REVALIDATE_SECRET: external_exports.string().optional(), + ADMIN_PHONE: external_exports.string().optional(), + ADMIN_PASSWORD: external_exports.string().optional(), + ADMIN_NAME: external_exports.string().default("\u0645\u062F\u06CC\u0631 \u0633\u0627\u06CC\u062A") +}); +var parsed = schema.safeParse(process.env); +if (!parsed.success) { + console.error("Invalid environment variables:\n" + external_exports.prettifyError(parsed.error)); + process.exit(1); +} +var env = parsed.data; +var isProd = env.NODE_ENV === "production"; + +// ../../packages/shared/dist/common.js +var req = /* @__PURE__ */ __name((max = 300) => external_exports.string().trim().min(1, "\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A").max(max), "req"); +var text = /* @__PURE__ */ __name((max = 300) => external_exports.string().trim().max(max).default(""), "text"); +var idSchema = external_exports.coerce.number().int().positive(); +var slugSchema = external_exports.string().trim().min(1, "\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A").max(80).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "\u0641\u0642\u0637 \u062D\u0631\u0648\u0641 \u06A9\u0648\u0686\u06A9 \u0627\u0646\u06AF\u0644\u06CC\u0633\u06CC\u060C \u0639\u062F\u062F \u0648 \u062E\u0637 \u062A\u06CC\u0631\u0647 (\u0645\u062B\u0644\u0627\u064B safety-shoes)"); +var iconNameSchema = external_exports.string().trim().min(1).max(80); +var imageRefSchema = external_exports.object({ + url: req(500), + alt: text(200) +}); +var linkSchema = external_exports.object({ + label: req(60), + href: req(300) +}); +var toIssues = /* @__PURE__ */ __name((error62) => error62.issues.map((i5) => ({ path: i5.path.map(String).join("."), message: i5.message })), "toIssues"); + +// ../../packages/shared/dist/sections.js +var WEEK_DAYS = [ + "Saturday", + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday" +]; +var SOCIAL_TYPES = [ + "website", + "telegram", + "instagram", + "linkedin", + "whatsapp", + "bale", + "eitaa", + "aparat", + "youtube", + "email", + "phone" +]; +var iconLabel = external_exports.object({ icon: iconNameSchema, label: req(80) }); +var iconCard = external_exports.object({ icon: iconNameSchema, title: req(80), desc: text(300) }); +var sectionHeadSchema = external_exports.object({ + tag: req(80), + title: req(200), + /** optional accented last line of the title */ + highlight: text(120), + desc: text(500) +}); +var settingsSectionSchema = external_exports.object({ + name: req(80), + nameEn: req(120), + /** default and og:title */ + title: req(120), + /** default meta description */ + description: req(400), + /** machine-readable phone for tel: links and schema.org, e.g. +98-21-91008800 */ + phone: req(30), + phoneDisplay: req(40), + email: external_exports.email("\u0627\u06CC\u0645\u06CC\u0644 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"), + address: external_exports.object({ + street: req(200), + locality: req(80), + country: external_exports.string().trim().length(2).default("IR") + }), + /** human-readable working hours, e.g. «شنبه تا پنجشنبه — ۸:۰۰ تا ۱۷:۰۰» */ + workingHours: req(120), + openingHours: external_exports.object({ + days: external_exports.array(external_exports.enum(WEEK_DAYS)).max(7), + opens: external_exports.string().regex(/^\d{2}:\d{2}$/, "\u0642\u0627\u0644\u0628 \u0633\u0627\u0639\u062A \u0628\u0627\u06CC\u062F HH:MM \u0628\u0627\u0634\u062F"), + closes: external_exports.string().regex(/^\d{2}:\d{2}$/, "\u0642\u0627\u0644\u0628 \u0633\u0627\u0639\u062A \u0628\u0627\u06CC\u062F HH:MM \u0628\u0627\u0634\u062F") + }), + foundingDate: external_exports.string().regex(/^\d{4}$/, "\u0633\u0627\u0644 \u0645\u06CC\u0644\u0627\u062F\u06CC \u0686\u0647\u0627\u0631\u0631\u0642\u0645\u06CC"), + socials: external_exports.array(external_exports.object({ type: external_exports.enum(SOCIAL_TYPES), url: req(300) })).max(12), + ogImage: imageRefSchema.extend({ + width: external_exports.number().int().positive().nullable().default(null), + height: external_exports.number().int().positive().nullable().default(null) + }) +}); +var heroSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + badge: req(120), + title: req(80), + titleHighlight: req(80), + intro: req(600), + primaryCta: linkSchema, + secondaryCta: linkSchema, + chips: external_exports.array(iconLabel).max(6), + miniStats: external_exports.array(external_exports.object({ value: req(20), label: req(80) })).max(4), + image: imageRefSchema, + /** «آخرین بازرسی» date shown on the status card */ + lastInspection: text(20) +}); +var tapeSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + items: external_exports.array(req(80)).min(1).max(20) +}); +var statsSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + items: external_exports.array(external_exports.object({ + end: external_exports.number().int().min(0).max(1e9), + suffix: text(5), + label: req(80), + note: text(40) + })).max(8) +}); +var productsIntroSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + ctaLabel: req(60), + trust: external_exports.array(iconCard).max(6) +}); +var aboutSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + body: req(2e3), + image: imageRefSchema, + badge: external_exports.object({ value: req(20), label: req(80) }), + timeline: external_exports.array(external_exports.object({ year: req(10), text: req(200) })).max(12), + features: external_exports.array(iconLabel).max(6) +}); +var servicesSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + items: external_exports.array(external_exports.object({ + icon: iconNameSchema, + title: req(80), + desc: req(600), + items: external_exports.array(req(120)).max(8) + })).max(10) +}); +var standardsSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + note: text(500), + ctaLabel: req(80), + items: external_exports.array(external_exports.object({ code: req(30), label: req(80) })).max(12) +}); +var industriesSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + items: external_exports.array(external_exports.object({ + name: req(60), + nameEn: text(60), + count: text(20), + image: imageRefSchema + })).max(12) +}); +var testimonialsSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + items: external_exports.array(external_exports.object({ text: req(600), name: req(80), role: text(160) })).max(12) +}); +var contactSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + head: sectionHeadSchema, + emergencyTitle: req(80), + emergencyText: req(400), + formTag: text(80), + formTitle: req(160), + successTitle: req(80), + successText: req(300) +}); +var footerSectionSchema = external_exports.object({ + enabled: external_exports.boolean().default(true), + about: req(500), + copyright: req(160), + certLine: text(160), + emergencyNote: text(80) +}); +var sectionSchemas = { + settings: settingsSectionSchema, + hero: heroSectionSchema, + tape: tapeSectionSchema, + stats: statsSectionSchema, + productsIntro: productsIntroSectionSchema, + about: aboutSectionSchema, + services: servicesSectionSchema, + standards: standardsSectionSchema, + industries: industriesSectionSchema, + testimonials: testimonialsSectionSchema, + contact: contactSectionSchema, + footer: footerSectionSchema +}; +var SECTION_KEYS = Object.keys(sectionSchemas); +var isSectionKey = /* @__PURE__ */ __name((key) => key in sectionSchemas, "isSectionKey"); + +// ../../packages/shared/dist/admin.js +var ROLES = ["ADMIN", "EDITOR"]; +var password = external_exports.string().min(8, "\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0627\u06CC\u062F \u062D\u062F\u0627\u0642\u0644 \u06F8 \u06A9\u0627\u0631\u0627\u06A9\u062A\u0631 \u0628\u0627\u0634\u062F").max(128); +var FA_DIGITS = "\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7\u06F8\u06F9"; +var AR_DIGITS = "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669"; +function normalizeIrMobile(raw4) { + let s2 = raw4.trim().replace(/[\s\-()]/g, ""); + s2 = s2.replace(/[۰-۹٠-٩]/g, (d5) => { + const fa = FA_DIGITS.indexOf(d5); + if (fa >= 0) + return String(fa); + const ar = AR_DIGITS.indexOf(d5); + return ar >= 0 ? String(ar) : d5; + }); + if (s2.startsWith("+98")) + s2 = `0${s2.slice(3)}`; + else if (s2.startsWith("0098")) + s2 = `0${s2.slice(4)}`; + else if (s2.startsWith("98") && s2.length === 12) + s2 = `0${s2.slice(2)}`; + return s2; +} +__name(normalizeIrMobile, "normalizeIrMobile"); +var irMobileSchema = external_exports.string().trim().min(1, "\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F").transform(normalizeIrMobile).pipe(external_exports.string().regex(/^09\d{9}$/, "\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A (\u0645\u062B\u0644\u0627\u064B \u06F0\u06F9\u06F1\u06F2\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7)")); +var loginSchema = external_exports.object({ + phone: irMobileSchema, + password: external_exports.string().min(1, "\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F").max(128) +}); +var changePasswordSchema = external_exports.object({ + currentPassword: external_exports.string().min(1, "\u0631\u0645\u0632 \u0641\u0639\u0644\u06CC \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F").max(128), + newPassword: password +}); +var userCreateSchema = external_exports.object({ + phone: irMobileSchema, + name: req(80), + role: external_exports.enum(ROLES), + password +}); +var userUpdateSchema = external_exports.object({ + name: req(80), + role: external_exports.enum(ROLES), + isActive: external_exports.boolean(), + /** set only when resetting the password */ + password: password.optional() +}); +var MESSAGE_STATUSES = ["NEW", "READ", "ARCHIVED"]; +var contactInputSchema = external_exports.object({ + name: req(80), + org: req(120), + phone: external_exports.string().trim().min(1, "\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u0627\u0644\u0632\u0627\u0645\u06CC \u0627\u0633\u062A").max(30).regex(/^[0-9۰-۹+\-\s()]{5,30}$/, "\u0634\u0645\u0627\u0631\u0647 \u062A\u0645\u0627\u0633 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"), + message: text(2e3), + /** honeypot — real visitors never fill it */ + website: external_exports.string().max(200).optional() +}); +var messageUpdateSchema = external_exports.object({ + status: external_exports.enum(MESSAGE_STATUSES) +}); +var mediaUpdateSchema = external_exports.object({ alt: text(200) }); + +// ../../packages/shared/dist/icons.js +var ICON_ALIASES = { + // Navigation & Actions + ArrowLeft: "arrow-left", + ArrowRight: "arrow-right", + ArrowUp: "arrow-up", + ArrowDown: "arrow-down", + ChevronDown: "arrow-down-1", + ChevronUp: "arrow-up-1", + ChevronLeft: "arrow-left-1", + ChevronRight: "arrow-right-1", + Menu: "menu", + X: "close-circle", + Plus: "add", + Trash: "trash", + Edit: "edit-2", + Copy: "copy", + Check: "tick-circle", + Search: "search-normal", + Filter: "filter", + Eye: "eye", + EyeOff: "eye-slash", + ImageOff: "gallery-slash", + Quote: "quote-up", + // Contact & Social + Phone: "call", + Mail: "sms", + MapPin: "location", + Clock: "clock", + Globe: "global", + Send: "send-2", + Instagram: "instagram", + Linkedin: "link", + MessageCircle: "messages-2", + Youtube: "video-play", + AtSign: "sms", + // Equipment & Safety Categories + HardHat: "security-safe", + Glasses: "glass", + Shirt: "tag", + Footprints: "routing-2", + Hand: "shield-tick", + Ear: "volume-high", + Wind: "wind-2", + TriangleAlert: "danger", + Siren: "lamp-on", + TrafficCone: "danger", + Construction: "setting-2", + Factory: "building-4", + Building2: "buildings-2", + Fuel: "gas-station", + Pickaxe: "hierarchy", + Flame: "flash", + Zap: "flash-circle", + Leaf: "tree", + HeartPulse: "heart-tick", + Star: "star", + ThumbsUp: "like-1", + Target: "radar-2", + Lock: "lock", + // Trust, Certifications & Standards + ShieldCheck: "shield-tick", + ShieldPlus: "shield-security", + ShieldAlert: "shield-cross", + BadgeCheck: "verify", + Award: "award", + Medal: "medal-star", + PackageCheck: "box-tick", + Package: "box", + Truck: "truck-time", + Warehouse: "buildings", + Users: "people", + Handshake: "user-tag", + Headset: "24-support", + ClipboardCheck: "clipboard-tick", + FileCheck: "document-text", + FileSearch: "document-filter", + GraduationCap: "teacher", + Gauge: "status", + Microscope: "search-status", + Wrench: "setting-4" +}; +var RECOMMENDED_ICONS = [ + "shield-tick", + "shield-security", + "shield-cross", + "security-safe", + "security-user", + "verify", + "award", + "medal-star", + "box-tick", + "box", + "truck-time", + "buildings", + "building-4", + "buildings-2", + "global", + "people", + "user-tag", + "24-support", + "call", + "sms", + "location", + "clock", + "clipboard-tick", + "document-text", + "document-filter", + "teacher", + "status", + "search-status", + "setting-2", + "setting-4", + "glass", + "tag", + "routing-2", + "volume-high", + "wind-2", + "danger", + "lamp-on", + "gas-station", + "hierarchy", + "flash", + "flash-circle", + "tree", + "heart-tick", + "star", + "like-1", + "radar-2", + "lock", + "eye", + "gallery", + "video-play" +]; +var ICON_NAMES = [ + ...RECOMMENDED_ICONS, + ...Object.keys(ICON_ALIASES) +]; + +// ../../packages/shared/dist/catalog.js +var shortList = external_exports.array(external_exports.string().trim().min(1).max(120)).max(20).default([]); +var productAttributeSchema = external_exports.object({ + name: req(80), + value: req(300) +}); +var productGroupInputSchema = external_exports.object({ + /** present when editing an existing group */ + id: idSchema.optional(), + slug: slugSchema, + name: req(120), + desc: text(1e3) +}); +var categoryInputSchema = external_exports.object({ + slug: slugSchema, + code: req(20), + name: req(120), + nameEn: text(120), + shortDesc: text(500), + fullDesc: text(3e3), + icon: text(40), + coverImageId: idSchema.nullable().default(null), + isPublished: external_exports.boolean().default(true), + seoTitle: text(120), + seoDescription: text(300), + groups: external_exports.array(productGroupInputSchema).max(30).default([]) +}); +var productInputSchema = external_exports.object({ + categoryId: idSchema, + groupId: idSchema.nullable().default(null), + code: req(30), + slug: slugSchema, + name: req(160), + nameEn: text(160), + desc: text(2e3), + specs: shortList, + variants: shortList, + details: text(8e3), + brand: text(80), + origin: text(80), + sizes: shortList, + standards: shortList, + features: external_exports.array(external_exports.string().trim().min(1).max(300)).max(30).default([]), + applications: shortList, + attributes: external_exports.array(productAttributeSchema).max(40).default([]), + packaging: text(200), + minOrder: text(120), + seoTitle: text(120), + seoDescription: text(300), + imageId: idSchema.nullable().default(null), + galleryIds: external_exports.array(idSchema).max(12).default([]), + isPublished: external_exports.boolean().default(true) +}); +var reorderSchema = external_exports.object({ + ids: external_exports.array(idSchema).min(1).max(1e3) +}); +var productListQuerySchema = external_exports.object({ + categoryId: idSchema.optional(), + groupId: idSchema.optional(), + q: external_exports.string().trim().max(100).optional(), + status: external_exports.enum(["published", "draft"]).optional(), + page: external_exports.coerce.number().int().min(1).default(1), + pageSize: external_exports.coerce.number().int().min(1).max(200).default(50) +}); + +// dist/prisma/prisma.service.js +init_common(); + +// ../../node_modules/.pnpm/@prisma+debug@7.10.1/node_modules/@prisma/debug/dist/index.mjs +var __defProp = Object.defineProperty; +var __export2 = /* @__PURE__ */ __name((target, all) => { + for (var name2 in all) + __defProp(target, name2, { get: all[name2], enumerable: true }); +}, "__export"); +var colors_exports = {}; +__export2(colors_exports, { + $: /* @__PURE__ */ __name(() => $, "$"), + bgBlack: /* @__PURE__ */ __name(() => bgBlack, "bgBlack"), + bgBlue: /* @__PURE__ */ __name(() => bgBlue, "bgBlue"), + bgCyan: /* @__PURE__ */ __name(() => bgCyan, "bgCyan"), + bgGreen: /* @__PURE__ */ __name(() => bgGreen, "bgGreen"), + bgMagenta: /* @__PURE__ */ __name(() => bgMagenta, "bgMagenta"), + bgRed: /* @__PURE__ */ __name(() => bgRed, "bgRed"), + bgWhite: /* @__PURE__ */ __name(() => bgWhite, "bgWhite"), + bgYellow: /* @__PURE__ */ __name(() => bgYellow, "bgYellow"), + black: /* @__PURE__ */ __name(() => black, "black"), + blue: /* @__PURE__ */ __name(() => blue, "blue"), + bold: /* @__PURE__ */ __name(() => bold, "bold"), + cyan: /* @__PURE__ */ __name(() => cyan, "cyan"), + dim: /* @__PURE__ */ __name(() => dim, "dim"), + gray: /* @__PURE__ */ __name(() => gray, "gray"), + green: /* @__PURE__ */ __name(() => green, "green"), + grey: /* @__PURE__ */ __name(() => grey, "grey"), + hidden: /* @__PURE__ */ __name(() => hidden, "hidden"), + inverse: /* @__PURE__ */ __name(() => inverse, "inverse"), + italic: /* @__PURE__ */ __name(() => italic, "italic"), + magenta: /* @__PURE__ */ __name(() => magenta, "magenta"), + red: /* @__PURE__ */ __name(() => red, "red"), + reset: /* @__PURE__ */ __name(() => reset, "reset"), + strikethrough: /* @__PURE__ */ __name(() => strikethrough, "strikethrough"), + underline: /* @__PURE__ */ __name(() => underline, "underline"), + white: /* @__PURE__ */ __name(() => white, "white"), + yellow: /* @__PURE__ */ __name(() => yellow, "yellow") +}); +var FORCE_COLOR; +var NODE_DISABLE_COLORS; +var NO_COLOR; +var TERM; +var isTTY = true; +if (typeof process !== "undefined") { + ({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {}); + isTTY = process.stdout && process.stdout.isTTY; +} +var $ = { + enabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== "dumb" && (FORCE_COLOR != null && FORCE_COLOR !== "0" || isTTY) +}; +function init(x, y) { + let rgx = new RegExp(`\\x1b\\[${y}m`, "g"); + let open2 = `\x1B[${x}m`, close = `\x1B[${y}m`; + return function(txt) { + if (!$.enabled || txt == null) return txt; + return open2 + (!!~("" + txt).indexOf(close) ? txt.replace(rgx, close + open2) : txt) + close; + }; +} +__name(init, "init"); +var reset = init(0, 0); +var bold = init(1, 22); +var dim = init(2, 22); +var italic = init(3, 23); +var underline = init(4, 24); +var inverse = init(7, 27); +var hidden = init(8, 28); +var strikethrough = init(9, 29); +var black = init(30, 39); +var red = init(31, 39); +var green = init(32, 39); +var yellow = init(33, 39); +var blue = init(34, 39); +var magenta = init(35, 39); +var cyan = init(36, 39); +var white = init(37, 39); +var gray = init(90, 39); +var grey = init(90, 39); +var bgBlack = init(40, 49); +var bgRed = init(41, 49); +var bgGreen = init(42, 49); +var bgYellow = init(43, 49); +var bgBlue = init(44, 49); +var bgMagenta = init(45, 49); +var bgCyan = init(46, 49); +var bgWhite = init(47, 49); +var MAX_ARGS_HISTORY = 100; +var COLORS = ["green", "yellow", "blue", "magenta", "cyan", "red"]; +var argsHistory = []; +var lastTimestamp = Date.now(); +var lastColor = 0; +var processEnv = typeof process !== "undefined" ? process.env : {}; +globalThis.DEBUG ??= processEnv.DEBUG ?? ""; +globalThis.DEBUG_COLORS ??= processEnv.DEBUG_COLORS ? processEnv.DEBUG_COLORS === "true" : true; +var topProps = { + enable(namespace) { + if (typeof namespace === "string") { + globalThis.DEBUG = namespace; + } + }, + disable() { + const prev = globalThis.DEBUG; + globalThis.DEBUG = ""; + return prev; + }, + // this is the core logic to check if logging should happen or not + enabled(namespace) { + const listenedNamespaces = globalThis.DEBUG.split(",").map((s2) => { + return s2.replace(/[.+?^${}()|[\]\\]/g, "\\$&"); + }); + const isListened = listenedNamespaces.some((listenedNamespace) => { + if (listenedNamespace === "" || listenedNamespace[0] === "-") return false; + return namespace.match(RegExp(listenedNamespace.split("*").join(".*") + "$")); + }); + const isExcluded = listenedNamespaces.some((listenedNamespace) => { + if (listenedNamespace === "" || listenedNamespace[0] !== "-") return false; + return namespace.match(RegExp(listenedNamespace.slice(1).split("*").join(".*") + "$")); + }); + return isListened && !isExcluded; + }, + log: /* @__PURE__ */ __name((...args) => { + const [namespace, format, ...rest] = args; + const logWithFormatting = console.warn ?? console.log; + logWithFormatting(`${namespace} ${format}`, ...rest); + }, "log"), + formatters: {} + // not implemented +}; +function debugCreate(namespace) { + const instanceProps = { + color: COLORS[lastColor++ % COLORS.length], + enabled: topProps.enabled(namespace), + namespace, + log: topProps.log, + extend: /* @__PURE__ */ __name(() => { + }, "extend") + // not implemented + }; + const debugCall = /* @__PURE__ */ __name((...args) => { + const { enabled, namespace: namespace2, color, log } = instanceProps; + if (args.length !== 0) { + argsHistory.push([namespace2, ...args]); + } + if (argsHistory.length > MAX_ARGS_HISTORY) { + argsHistory.shift(); + } + if (topProps.enabled(namespace2) || enabled) { + const stringArgs = args.map((arg) => { + if (typeof arg === "string") { + return arg; + } + return safeStringify(arg); + }); + const ms = `+${Date.now() - lastTimestamp}ms`; + lastTimestamp = Date.now(); + if (globalThis.DEBUG_COLORS) { + log(colors_exports[color](bold(namespace2)), ...stringArgs, colors_exports[color](ms)); + } else { + log(namespace2, ...stringArgs, ms); + } + } + }, "debugCall"); + return new Proxy(debugCall, { + get: /* @__PURE__ */ __name((_, prop) => instanceProps[prop], "get"), + set: /* @__PURE__ */ __name((_, prop, value) => instanceProps[prop] = value, "set") + }); +} +__name(debugCreate, "debugCreate"); +var Debug2 = new Proxy(debugCreate, { + get: /* @__PURE__ */ __name((_, prop) => topProps[prop], "get"), + set: /* @__PURE__ */ __name((_, prop, value) => topProps[prop] = value, "set") +}); +function safeStringify(value, indent = 2) { + const cache5 = /* @__PURE__ */ new Set(); + return JSON.stringify( + value, + (key, value2) => { + if (typeof value2 === "object" && value2 !== null) { + if (cache5.has(value2)) { + return `[Circular *]`; + } + cache5.add(value2); + } else if (typeof value2 === "bigint") { + return value2.toString(); + } + return value2; + }, + indent + ); +} +__name(safeStringify, "safeStringify"); + +// ../../node_modules/.pnpm/@prisma+driver-adapter-utils@7.10.1/node_modules/@prisma/driver-adapter-utils/dist/index.mjs +var DriverAdapterError = class extends Error { + static { + __name(this, "DriverAdapterError"); + } + name = "DriverAdapterError"; + cause; + constructor(payload) { + super(typeof payload["message"] === "string" ? payload["message"] : payload.kind); + this.cause = payload; + } +}; +var debug = Debug2("driver-adapter-utils"); +var ColumnTypeEnum = { + // Scalars + Int32: 0, + Int64: 1, + Float: 2, + Double: 3, + Numeric: 4, + Boolean: 5, + Character: 6, + Text: 7, + Date: 8, + Time: 9, + DateTime: 10, + Json: 11, + Enum: 12, + Bytes: 13, + Set: 14, + Uuid: 15, + // Arrays + Int32Array: 64, + Int64Array: 65, + FloatArray: 66, + DoubleArray: 67, + NumericArray: 68, + BooleanArray: 69, + CharacterArray: 70, + TextArray: 71, + DateArray: 72, + TimeArray: 73, + DateTimeArray: 74, + JsonArray: 75, + EnumArray: 76, + BytesArray: 77, + UuidArray: 78, + // Custom + UnknownNumber: 128 +}; +var mockAdapterErrors = { + queryRaw: new Error("Not implemented: queryRaw"), + executeRaw: new Error("Not implemented: executeRaw"), + startTransaction: new Error("Not implemented: startTransaction"), + executeScript: new Error("Not implemented: executeScript"), + dispose: new Error("Not implemented: dispose") +}; + +// ../../node_modules/.pnpm/@prisma+adapter-pg@7.10.1/node_modules/@prisma/adapter-pg/dist/index.mjs +var import_postgres_array = __toESM(require_postgres_array(), 1); +var name = "@prisma/adapter-pg"; +var FIRST_NORMAL_OBJECT_ID = 16384; +var { types } = esm_default; +var { builtins: ScalarColumnType, getTypeParser } = types; +var AdditionalScalarColumnType = { + NAME: 19 +}; +var ArrayColumnType = { + BIT_ARRAY: 1561, + BOOL_ARRAY: 1e3, + BYTEA_ARRAY: 1001, + BPCHAR_ARRAY: 1014, + CHAR_ARRAY: 1002, + CIDR_ARRAY: 651, + DATE_ARRAY: 1182, + FLOAT4_ARRAY: 1021, + FLOAT8_ARRAY: 1022, + INET_ARRAY: 1041, + INT2_ARRAY: 1005, + INT4_ARRAY: 1007, + INT8_ARRAY: 1016, + JSONB_ARRAY: 3807, + JSON_ARRAY: 199, + MONEY_ARRAY: 791, + NUMERIC_ARRAY: 1231, + OID_ARRAY: 1028, + TEXT_ARRAY: 1009, + TIMESTAMP_ARRAY: 1115, + TIMESTAMPTZ_ARRAY: 1185, + TIME_ARRAY: 1183, + UUID_ARRAY: 2951, + VARBIT_ARRAY: 1563, + VARCHAR_ARRAY: 1015, + XML_ARRAY: 143 +}; +var UnsupportedNativeDataType = class _UnsupportedNativeDataType extends Error { + static { + __name(this, "_UnsupportedNativeDataType"); + } + // map of type codes to type names + static typeNames = { + 16: "bool", + 17: "bytea", + 18: "char", + 19: "name", + 20: "int8", + 21: "int2", + 22: "int2vector", + 23: "int4", + 24: "regproc", + 25: "text", + 26: "oid", + 27: "tid", + 28: "xid", + 29: "cid", + 30: "oidvector", + 32: "pg_ddl_command", + 71: "pg_type", + 75: "pg_attribute", + 81: "pg_proc", + 83: "pg_class", + 114: "json", + 142: "xml", + 194: "pg_node_tree", + 269: "table_am_handler", + 325: "index_am_handler", + 600: "point", + 601: "lseg", + 602: "path", + 603: "box", + 604: "polygon", + 628: "line", + 650: "cidr", + 700: "float4", + 701: "float8", + 705: "unknown", + 718: "circle", + 774: "macaddr8", + 790: "money", + 829: "macaddr", + 869: "inet", + 1033: "aclitem", + 1042: "bpchar", + 1043: "varchar", + 1082: "date", + 1083: "time", + 1114: "timestamp", + 1184: "timestamptz", + 1186: "interval", + 1266: "timetz", + 1560: "bit", + 1562: "varbit", + 1700: "numeric", + 1790: "refcursor", + 2202: "regprocedure", + 2203: "regoper", + 2204: "regoperator", + 2205: "regclass", + 2206: "regtype", + 2249: "record", + 2275: "cstring", + 2276: "any", + 2277: "anyarray", + 2278: "void", + 2279: "trigger", + 2280: "language_handler", + 2281: "internal", + 2283: "anyelement", + 2287: "_record", + 2776: "anynonarray", + 2950: "uuid", + 2970: "txid_snapshot", + 3115: "fdw_handler", + 3220: "pg_lsn", + 3310: "tsm_handler", + 3361: "pg_ndistinct", + 3402: "pg_dependencies", + 3500: "anyenum", + 3614: "tsvector", + 3615: "tsquery", + 3642: "gtsvector", + 3734: "regconfig", + 3769: "regdictionary", + 3802: "jsonb", + 3831: "anyrange", + 3838: "event_trigger", + 3904: "int4range", + 3906: "numrange", + 3908: "tsrange", + 3910: "tstzrange", + 3912: "daterange", + 3926: "int8range", + 4072: "jsonpath", + 4089: "regnamespace", + 4096: "regrole", + 4191: "regcollation", + 4451: "int4multirange", + 4532: "nummultirange", + 4533: "tsmultirange", + 4534: "tstzmultirange", + 4535: "datemultirange", + 4536: "int8multirange", + 4537: "anymultirange", + 4538: "anycompatiblemultirange", + 4600: "pg_brin_bloom_summary", + 4601: "pg_brin_minmax_multi_summary", + 5017: "pg_mcv_list", + 5038: "pg_snapshot", + 5069: "xid8", + 5077: "anycompatible", + 5078: "anycompatiblearray", + 5079: "anycompatiblenonarray", + 5080: "anycompatiblerange" + }; + type; + constructor(code) { + super(); + this.type = _UnsupportedNativeDataType.typeNames[code] || "Unknown"; + this.message = `Unsupported column type ${this.type}`; + } +}; +function fieldToColumnType(fieldTypeId) { + switch (fieldTypeId) { + case ScalarColumnType.INT2: + case ScalarColumnType.INT4: + return ColumnTypeEnum.Int32; + case ScalarColumnType.INT8: + return ColumnTypeEnum.Int64; + case ScalarColumnType.FLOAT4: + return ColumnTypeEnum.Float; + case ScalarColumnType.FLOAT8: + return ColumnTypeEnum.Double; + case ScalarColumnType.BOOL: + return ColumnTypeEnum.Boolean; + case ScalarColumnType.DATE: + return ColumnTypeEnum.Date; + case ScalarColumnType.TIME: + case ScalarColumnType.TIMETZ: + return ColumnTypeEnum.Time; + case ScalarColumnType.TIMESTAMP: + case ScalarColumnType.TIMESTAMPTZ: + return ColumnTypeEnum.DateTime; + case ScalarColumnType.NUMERIC: + case ScalarColumnType.MONEY: + return ColumnTypeEnum.Numeric; + case ScalarColumnType.JSON: + case ScalarColumnType.JSONB: + return ColumnTypeEnum.Json; + case ScalarColumnType.UUID: + return ColumnTypeEnum.Uuid; + case ScalarColumnType.OID: + return ColumnTypeEnum.Int64; + case ScalarColumnType.BPCHAR: + case ScalarColumnType.TEXT: + case ScalarColumnType.VARCHAR: + case ScalarColumnType.BIT: + case ScalarColumnType.VARBIT: + case ScalarColumnType.INET: + case ScalarColumnType.CIDR: + case ScalarColumnType.XML: + case AdditionalScalarColumnType.NAME: + return ColumnTypeEnum.Text; + case ScalarColumnType.BYTEA: + return ColumnTypeEnum.Bytes; + case ArrayColumnType.INT2_ARRAY: + case ArrayColumnType.INT4_ARRAY: + return ColumnTypeEnum.Int32Array; + case ArrayColumnType.FLOAT4_ARRAY: + return ColumnTypeEnum.FloatArray; + case ArrayColumnType.FLOAT8_ARRAY: + return ColumnTypeEnum.DoubleArray; + case ArrayColumnType.NUMERIC_ARRAY: + case ArrayColumnType.MONEY_ARRAY: + return ColumnTypeEnum.NumericArray; + case ArrayColumnType.BOOL_ARRAY: + return ColumnTypeEnum.BooleanArray; + case ArrayColumnType.CHAR_ARRAY: + return ColumnTypeEnum.CharacterArray; + case ArrayColumnType.BPCHAR_ARRAY: + case ArrayColumnType.TEXT_ARRAY: + case ArrayColumnType.VARCHAR_ARRAY: + case ArrayColumnType.VARBIT_ARRAY: + case ArrayColumnType.BIT_ARRAY: + case ArrayColumnType.INET_ARRAY: + case ArrayColumnType.CIDR_ARRAY: + case ArrayColumnType.XML_ARRAY: + return ColumnTypeEnum.TextArray; + case ArrayColumnType.DATE_ARRAY: + return ColumnTypeEnum.DateArray; + case ArrayColumnType.TIME_ARRAY: + return ColumnTypeEnum.TimeArray; + case ArrayColumnType.TIMESTAMP_ARRAY: + return ColumnTypeEnum.DateTimeArray; + case ArrayColumnType.TIMESTAMPTZ_ARRAY: + return ColumnTypeEnum.DateTimeArray; + case ArrayColumnType.JSON_ARRAY: + case ArrayColumnType.JSONB_ARRAY: + return ColumnTypeEnum.JsonArray; + case ArrayColumnType.BYTEA_ARRAY: + return ColumnTypeEnum.BytesArray; + case ArrayColumnType.UUID_ARRAY: + return ColumnTypeEnum.UuidArray; + case ArrayColumnType.INT8_ARRAY: + case ArrayColumnType.OID_ARRAY: + return ColumnTypeEnum.Int64Array; + default: + if (fieldTypeId >= FIRST_NORMAL_OBJECT_ID) { + return ColumnTypeEnum.Text; + } + throw new UnsupportedNativeDataType(fieldTypeId); + } +} +__name(fieldToColumnType, "fieldToColumnType"); +function normalize_array(element_normalizer) { + return (str) => (0, import_postgres_array.parse)(str, element_normalizer); +} +__name(normalize_array, "normalize_array"); +function normalize_numeric(numeric) { + return numeric; +} +__name(normalize_numeric, "normalize_numeric"); +function normalize_date(date5) { + return date5; +} +__name(normalize_date, "normalize_date"); +function normalize_timestamp(time3) { + return `${time3.replace(" ", "T")}+00:00`; +} +__name(normalize_timestamp, "normalize_timestamp"); +function normalize_timestamptz(time3) { + return time3.replace(" ", "T").replace(/[+-]\d{2}(:\d{2})?$/, "+00:00"); +} +__name(normalize_timestamptz, "normalize_timestamptz"); +function normalize_time(time3) { + return time3; +} +__name(normalize_time, "normalize_time"); +function normalize_timez(time3) { + return time3.replace(/[+-]\d{2}(:\d{2})?$/, ""); +} +__name(normalize_timez, "normalize_timez"); +function normalize_money(money) { + return money.slice(1); +} +__name(normalize_money, "normalize_money"); +function normalize_xml(xml) { + return xml; +} +__name(normalize_xml, "normalize_xml"); +function toJson(json2) { + return json2; +} +__name(toJson, "toJson"); +var parsePgBytes = getTypeParser(ScalarColumnType.BYTEA); +var normalizeByteaArray = getTypeParser(ArrayColumnType.BYTEA_ARRAY); +function convertBytes(serializedBytes) { + return parsePgBytes(serializedBytes); +} +__name(convertBytes, "convertBytes"); +function normalizeBit(bit) { + return bit; +} +__name(normalizeBit, "normalizeBit"); +var customParsers = { + [ScalarColumnType.NUMERIC]: normalize_numeric, + [ArrayColumnType.NUMERIC_ARRAY]: normalize_array(normalize_numeric), + [ScalarColumnType.TIME]: normalize_time, + [ArrayColumnType.TIME_ARRAY]: normalize_array(normalize_time), + [ScalarColumnType.TIMETZ]: normalize_timez, + [ScalarColumnType.DATE]: normalize_date, + [ArrayColumnType.DATE_ARRAY]: normalize_array(normalize_date), + [ScalarColumnType.TIMESTAMP]: normalize_timestamp, + [ArrayColumnType.TIMESTAMP_ARRAY]: normalize_array(normalize_timestamp), + [ScalarColumnType.TIMESTAMPTZ]: normalize_timestamptz, + [ArrayColumnType.TIMESTAMPTZ_ARRAY]: normalize_array(normalize_timestamptz), + [ScalarColumnType.MONEY]: normalize_money, + [ArrayColumnType.MONEY_ARRAY]: normalize_array(normalize_money), + [ScalarColumnType.JSON]: toJson, + [ArrayColumnType.JSON_ARRAY]: normalize_array(toJson), + [ScalarColumnType.JSONB]: toJson, + [ArrayColumnType.JSONB_ARRAY]: normalize_array(toJson), + [ScalarColumnType.BYTEA]: convertBytes, + [ArrayColumnType.BYTEA_ARRAY]: normalizeByteaArray, + [ArrayColumnType.BIT_ARRAY]: normalize_array(normalizeBit), + [ArrayColumnType.VARBIT_ARRAY]: normalize_array(normalizeBit), + [ArrayColumnType.XML_ARRAY]: normalize_array(normalize_xml) +}; +function mapArg(arg, argType) { + if (arg === null) { + return null; + } + if (Array.isArray(arg) && argType.arity === "list") { + return arg.map((value) => mapArg(value, argType)); + } + if (typeof arg === "string" && argType.scalarType === "datetime") { + arg = new Date(arg); + } + if (arg instanceof Date) { + switch (argType.dbType) { + case "TIME": + case "TIMETZ": + return formatTime(arg); + case "DATE": + return formatDate(arg); + default: + return formatDateTime(arg); + } + } + if (typeof arg === "string" && argType.scalarType === "bytes") { + return Buffer.from(arg, "base64"); + } + if (ArrayBuffer.isView(arg)) { + return new Uint8Array(arg.buffer, arg.byteOffset, arg.byteLength); + } + return arg; +} +__name(mapArg, "mapArg"); +function formatDateTime(date5) { + const pad = /* @__PURE__ */ __name((n3, z2 = 2) => String(n3).padStart(z2, "0"), "pad"); + const ms = date5.getUTCMilliseconds(); + return pad(date5.getUTCFullYear(), 4) + "-" + pad(date5.getUTCMonth() + 1) + "-" + pad(date5.getUTCDate()) + " " + pad(date5.getUTCHours()) + ":" + pad(date5.getUTCMinutes()) + ":" + pad(date5.getUTCSeconds()) + (ms ? "." + String(ms).padStart(3, "0") : ""); +} +__name(formatDateTime, "formatDateTime"); +function formatDate(date5) { + const pad = /* @__PURE__ */ __name((n3, z2 = 2) => String(n3).padStart(z2, "0"), "pad"); + return pad(date5.getUTCFullYear(), 4) + "-" + pad(date5.getUTCMonth() + 1) + "-" + pad(date5.getUTCDate()); +} +__name(formatDate, "formatDate"); +function formatTime(date5) { + const pad = /* @__PURE__ */ __name((n3, z2 = 2) => String(n3).padStart(z2, "0"), "pad"); + const ms = date5.getUTCMilliseconds(); + return pad(date5.getUTCHours()) + ":" + pad(date5.getUTCMinutes()) + ":" + pad(date5.getUTCSeconds()) + (ms ? "." + String(ms).padStart(3, "0") : ""); +} +__name(formatTime, "formatTime"); +var TLS_ERRORS = /* @__PURE__ */ new Set([ + "UNABLE_TO_GET_ISSUER_CERT", + "UNABLE_TO_GET_CRL", + "UNABLE_TO_DECRYPT_CERT_SIGNATURE", + "UNABLE_TO_DECRYPT_CRL_SIGNATURE", + "UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY", + "CERT_SIGNATURE_FAILURE", + "CRL_SIGNATURE_FAILURE", + "CERT_NOT_YET_VALID", + "CERT_HAS_EXPIRED", + "CRL_NOT_YET_VALID", + "CRL_HAS_EXPIRED", + "ERROR_IN_CERT_NOT_BEFORE_FIELD", + "ERROR_IN_CERT_NOT_AFTER_FIELD", + "ERROR_IN_CRL_LAST_UPDATE_FIELD", + "ERROR_IN_CRL_NEXT_UPDATE_FIELD", + "DEPTH_ZERO_SELF_SIGNED_CERT", + "SELF_SIGNED_CERT_IN_CHAIN", + "UNABLE_TO_GET_ISSUER_CERT_LOCALLY", + "UNABLE_TO_VERIFY_LEAF_SIGNATURE", + "CERT_CHAIN_TOO_LONG", + "CERT_REVOKED", + "INVALID_CA", + "INVALID_PURPOSE", + "CERT_UNTRUSTED", + "CERT_REJECTED", + "HOSTNAME_MISMATCH", + "ERR_TLS_CERT_ALTNAME_FORMAT", + "ERR_TLS_CERT_ALTNAME_INVALID" +]); +var SOCKET_ERRORS = /* @__PURE__ */ new Set(["ENOTFOUND", "ECONNREFUSED", "ECONNRESET", "ETIMEDOUT"]); +function convertDriverError(error62) { + if (isSocketError(error62)) { + return mapSocketError(error62); + } + if (isTlsError(error62)) { + return { + kind: "TlsConnectionError", + reason: error62.message + }; + } + if (isDriverError(error62)) { + return { + originalCode: error62.code, + originalMessage: error62.message, + ...mapDriverError(error62) + }; + } + throw error62; +} +__name(convertDriverError, "convertDriverError"); +function mapDriverError(error62) { + switch (error62.code) { + case "22001": + return { + kind: "LengthMismatch", + column: error62.column + }; + case "22003": + return { + kind: "ValueOutOfRange", + cause: error62.message + }; + case "22P02": + return { + kind: "InvalidInputValue", + message: error62.message + }; + case "23505": { + const fields = error62.detail?.match(/Key \(([^)]+)\)/)?.at(1)?.split(", "); + let constraint; + if (error62.constraint) { + constraint = { index: error62.constraint }; + } else if (fields !== void 0) { + constraint = { fields }; + } + let table = error62.table; + if (table === void 0 && fields !== void 0 && fields.length > 0) { + const suffix = `_${fields.join("_")}_key`; + if (error62.constraint?.endsWith(suffix)) { + table = error62.constraint.slice(0, -suffix.length); + } + } + return { + kind: "UniqueConstraintViolation", + constraint, + table + }; + } + case "23502": { + const fields = error62.detail?.match(/Key \(([^)]+)\)/)?.at(1)?.split(", "); + return { + kind: "NullConstraintViolation", + constraint: fields !== void 0 ? { fields } : void 0 + }; + } + case "23503": { + let constraint; + if (error62.column) { + constraint = { fields: [error62.column] }; + } else if (error62.constraint) { + constraint = { index: error62.constraint }; + } + return { + kind: "ForeignKeyConstraintViolation", + constraint + }; + } + case "23001": { + let constraint; + if (error62.column) { + constraint = { fields: [error62.column] }; + } else if (error62.constraint) { + constraint = { index: error62.constraint }; + } + return { + kind: "RestrictViolation", + constraint + }; + } + case "3D000": + return { + kind: "DatabaseDoesNotExist", + db: error62.message.split(" ").at(1)?.split('"').at(1) + }; + case "28000": + return { + kind: "DatabaseAccessDenied", + db: error62.message.split(",").find((s2) => s2.startsWith(" database"))?.split('"').at(1) + }; + case "28P01": + return { + kind: "AuthenticationFailed", + user: error62.message.split(" ").pop()?.split('"').at(1) + }; + case "40001": + case "40P01": + return { + kind: "TransactionWriteConflict" + }; + case "42P01": + return { + kind: "TableDoesNotExist", + table: error62.message.split(" ").at(1)?.split('"').at(1) + }; + case "42703": { + const rawColumn = error62.message.match(/^column (.+) does not exist$/)?.at(1); + return { + kind: "ColumnNotFound", + column: rawColumn?.replace(/"((?:""|[^"])*)"/g, (_, id) => id.replaceAll('""', '"')) + }; + } + case "42P04": + return { + kind: "DatabaseAlreadyExists", + db: error62.message.split(" ").at(1)?.split('"').at(1) + }; + case "53300": + return { + kind: "TooManyConnections", + cause: error62.message + }; + default: + return { + kind: "postgres", + code: error62.code ?? "N/A", + severity: error62.severity ?? "N/A", + message: error62.message, + detail: error62.detail, + column: error62.column, + hint: error62.hint + }; + } +} +__name(mapDriverError, "mapDriverError"); +function isDriverError(error62) { + return typeof error62.code === "string" && typeof error62.message === "string" && typeof error62.severity === "string" && (typeof error62.detail === "string" || error62.detail === void 0) && (typeof error62.column === "string" || error62.column === void 0) && (typeof error62.hint === "string" || error62.hint === void 0); +} +__name(isDriverError, "isDriverError"); +function mapSocketError(error62) { + switch (error62.code) { + case "ENOTFOUND": + case "ECONNREFUSED": + return { + kind: "DatabaseNotReachable", + host: error62.address ?? error62.hostname, + port: error62.port + }; + case "ECONNRESET": + return { + kind: "ConnectionClosed" + }; + case "ETIMEDOUT": + return { + kind: "SocketTimeout" + }; + } +} +__name(mapSocketError, "mapSocketError"); +function isSocketError(error62) { + return typeof error62.code === "string" && typeof error62.syscall === "string" && typeof error62.errno === "number" && SOCKET_ERRORS.has(error62.code); +} +__name(isSocketError, "isSocketError"); +function isTlsError(error62) { + if (typeof error62.code === "string") { + return TLS_ERRORS.has(error62.code); + } + switch (error62.message) { + case "The server does not support SSL connections": + case "There was an error establishing an SSL connection": + return true; + } + return false; +} +__name(isTlsError, "isTlsError"); +var types2 = esm_default.types; +var debug2 = Debug2("prisma:driver-adapter:pg"); +var PgQueryable = class { + static { + __name(this, "PgQueryable"); + } + constructor(client, pgOptions) { + this.client = client; + this.pgOptions = pgOptions; + } + provider = "postgres"; + adapterName = name; + /** + * Execute a query given as SQL, interpolating the given parameters. + */ + async queryRaw(query) { + const tag = "[js::query_raw]"; + debug2(`${tag} %O`, query); + const { fields, rows } = await this.performIO(query); + const columnNames = fields.map((field) => field.name); + let columnTypes = []; + try { + columnTypes = fields.map((field) => fieldToColumnType(field.dataTypeID)); + } catch (e5) { + if (e5 instanceof UnsupportedNativeDataType) { + throw new DriverAdapterError({ + kind: "UnsupportedNativeDataType", + type: e5.type + }); + } + throw e5; + } + const udtParser = this.pgOptions?.userDefinedTypeParser; + if (udtParser) { + for (let i5 = 0; i5 < fields.length; i5++) { + const field = fields[i5]; + if (field.dataTypeID >= FIRST_NORMAL_OBJECT_ID && !Object.hasOwn(customParsers, field.dataTypeID)) { + for (let j5 = 0; j5 < rows.length; j5++) { + rows[j5][i5] = await udtParser(field.dataTypeID, rows[j5][i5], this); + } + } + } + } + return { + columnNames, + columnTypes, + rows + }; + } + /** + * Execute a query given as SQL, interpolating the given parameters and + * returning the number of affected rows. + * Note: Queryable expects a u64, but napi.rs only supports u32. + */ + async executeRaw(query) { + const tag = "[js::execute_raw]"; + debug2(`${tag} %O`, query); + return (await this.performIO(query)).rowCount ?? 0; + } + /** + * Run a query against the database, returning the result set. + * Should the query fail due to a connection error, the connection is + * marked as unhealthy. + */ + async performIO(query) { + const { sql: sql2, args } = query; + const values = args.map((arg, i5) => mapArg(arg, query.argTypes[i5])); + try { + const result = await this.client.query({ + name: this.pgOptions?.statementNameGenerator?.(query), + text: sql2, + values, + rowMode: "array", + types: { + getTypeParser: /* @__PURE__ */ __name((oid, format) => { + if (format === "text" && customParsers[oid]) { + return customParsers[oid]; + } + return types2.getTypeParser(oid, format); + }, "getTypeParser") + } + }); + return result; + } catch (e5) { + this.onError(e5); + } + } + onError(error62) { + debug2("Error in performIO: %O", error62); + throw new DriverAdapterError(convertDriverError(error62)); + } +}; +var PgTransaction = class extends PgQueryable { + static { + __name(this, "PgTransaction"); + } + constructor(client, options, pgOptions, cleanup) { + super(client, pgOptions); + this.options = options; + this.pgOptions = pgOptions; + this.cleanup = cleanup; + } + async commit() { + debug2(`[js::commit]`); + this.cleanup?.(); + this.client.release(); + } + async rollback() { + debug2(`[js::rollback]`); + this.cleanup?.(); + this.client.release(); + } + async createSavepoint(name2) { + await this.executeRaw({ sql: `SAVEPOINT ${name2}`, args: [], argTypes: [] }); + } + async rollbackToSavepoint(name2) { + await this.executeRaw({ sql: `ROLLBACK TO SAVEPOINT ${name2}`, args: [], argTypes: [] }); + } + async releaseSavepoint(name2) { + await this.executeRaw({ sql: `RELEASE SAVEPOINT ${name2}`, args: [], argTypes: [] }); + } +}; +var PrismaPgAdapter = class extends PgQueryable { + static { + __name(this, "PrismaPgAdapter"); + } + constructor(client, pgOptions, release2) { + super(client); + this.pgOptions = pgOptions; + this.release = release2; + } + async startTransaction(isolationLevel) { + const options = { + usePhantomQuery: false + }; + const tag = "[js::startTransaction]"; + debug2("%s options: %O", tag, options); + const conn = await this.client.connect().catch((error62) => this.onError(error62)); + const onError = /* @__PURE__ */ __name((err) => { + debug2(`Error from pool connection: ${err.message} %O`, err); + this.pgOptions?.onConnectionError?.(err); + }, "onError"); + conn.on("error", onError); + const cleanup = /* @__PURE__ */ __name(() => { + conn.removeListener("error", onError); + }, "cleanup"); + try { + const tx = new PgTransaction(conn, options, this.pgOptions, cleanup); + await tx.executeRaw({ sql: "BEGIN", args: [], argTypes: [] }); + if (isolationLevel) { + await tx.executeRaw({ + sql: `SET TRANSACTION ISOLATION LEVEL ${isolationLevel}`, + args: [], + argTypes: [] + }); + } + return tx; + } catch (error62) { + cleanup(); + conn.release(error62); + this.onError(error62); + } + } + async executeScript(script) { + const statements = script.split(";").map((stmt) => stmt.trim()).filter((stmt) => stmt.length > 0); + for (const stmt of statements) { + try { + await this.client.query(stmt); + } catch (error62) { + this.onError(error62); + } + } + } + getConnectionInfo() { + return { + schemaName: this.pgOptions?.schema, + supportsRelationJoins: true + }; + } + async dispose() { + return this.release?.(); + } + underlyingDriver() { + return this.client; + } +}; +var PrismaPgAdapterFactory = class { + static { + __name(this, "PrismaPgAdapterFactory"); + } + constructor(poolOrConfig, options) { + this.options = options; + if (poolOrConfig instanceof esm_default.Pool) { + this.externalPool = poolOrConfig; + this.config = poolOrConfig.options; + } else if (typeof poolOrConfig === "string") { + this.externalPool = null; + this.config = { connectionString: poolOrConfig }; + } else { + this.externalPool = null; + this.config = poolOrConfig; + } + } + provider = "postgres"; + adapterName = name; + config; + externalPool; + async connect() { + const client = this.externalPool ?? new esm_default.Pool(this.config); + const onIdleClientError = /* @__PURE__ */ __name((err) => { + debug2(`Error from idle pool client: ${err.message} %O`, err); + this.options?.onPoolError?.(err); + }, "onIdleClientError"); + client.on("error", onIdleClientError); + return new PrismaPgAdapter(client, this.options, async () => { + if (this.externalPool) { + if (this.options?.disposeExternalPool) { + await this.externalPool.end(); + this.externalPool = null; + } else { + this.externalPool.removeListener("error", onIdleClientError); + } + } else { + await client.end(); + } + }); + } + async connectToShadowDb() { + const conn = await this.connect(); + const database = `prisma_migrate_shadow_db_${globalThis.crypto.randomUUID()}`; + await conn.executeScript(`CREATE DATABASE "${database}"`); + const client = new esm_default.Pool({ ...this.config, database }); + return new PrismaPgAdapter(client, void 0, async () => { + await conn.executeScript(`DROP DATABASE "${database}"`); + await client.end(); + }); + } +}; + +// dist/generated/prisma/client.js +import * as path from "node:path"; +import { fileURLToPath } from "node:url"; + +// dist/generated/prisma/internal/class.js +var runtime = __toESM(require_client(), 1); +var config2 = { + "previewFeatures": [], + "clientVersion": "7.10.1", + "engineVersion": "d1b3f377ca835d73fd50954a5e22128b9ebdd6b8", + "activeProvider": "postgresql", + "inlineSchema": 'generator client {\n provider = "prisma-client"\n output = "../src/generated/prisma"\n moduleFormat = "esm"\n importFileExtension = "js"\n}\n\ndatasource db {\n provider = "postgresql"\n}\n\nenum Role {\n ADMIN\n EDITOR\n}\n\nenum MessageStatus {\n NEW\n READ\n ARCHIVED\n}\n\nmodel AdminUser {\n id Int @id @default(autoincrement())\n phone String @unique\n name String\n passwordHash String\n role Role @default(EDITOR)\n isActive Boolean @default(true)\n lastLoginAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n refreshTokens RefreshToken[]\n auditLogs AuditLog[]\n}\n\nmodel RefreshToken {\n id Int @id @default(autoincrement())\n userId Int\n user AdminUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n /// sha256 of the opaque token stored in the httpOnly cookie\n tokenHash String @unique\n expiresAt DateTime\n revokedAt DateTime?\n userAgent String @default("")\n createdAt DateTime @default(now())\n\n @@index([userId])\n}\n\nmodel Media {\n id Int @id @default(autoincrement())\n /// object key in the S3 bucket; the public URL is MEDIA_PUBLIC_URL + "/" + key\n key String @unique\n mime String\n size Int\n width Int?\n height Int?\n alt String @default("")\n originalName String @default("")\n createdAt DateTime @default(now())\n categoryCovers Category[] @relation("CategoryCover")\n productImages Product[] @relation("ProductImage")\n productGallery ProductImage[]\n}\n\nmodel Category {\n id Int @id @default(autoincrement())\n slug String @unique\n code String\n name String\n nameEn String @default("")\n shortDesc String @default("")\n fullDesc String @default("")\n /// Lucide icon name\n icon String @default("")\n coverImageId Int?\n coverImage Media? @relation("CategoryCover", fields: [coverImageId], references: [id], onDelete: SetNull)\n sortOrder Int @default(0)\n isPublished Boolean @default(true)\n seoTitle String @default("")\n seoDescription String @default("")\n groups ProductGroup[]\n products Product[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([sortOrder])\n}\n\nmodel ProductGroup {\n id Int @id @default(autoincrement())\n categoryId Int\n category Category @relation(fields: [categoryId], references: [id], onDelete: Cascade)\n slug String\n name String\n desc String @default("")\n sortOrder Int @default(0)\n products Product[]\n\n @@unique([categoryId, slug])\n}\n\nmodel Product {\n id Int @id @default(autoincrement())\n categoryId Int\n category Category @relation(fields: [categoryId], references: [id], onDelete: Restrict)\n groupId Int?\n group ProductGroup? @relation(fields: [groupId], references: [id], onDelete: SetNull)\n code String @unique\n slug String @unique\n name String\n nameEn String @default("")\n desc String @default("")\n specs String[]\n variants String[]\n /// long description for the product page; a blank line starts a new paragraph\n details String @default("")\n brand String @default("")\n /// country of manufacture\n origin String @default("")\n sizes String[] @default([])\n standards String[] @default([])\n features String[] @default([])\n applications String[] @default([])\n /// technical specification table: [{ "name": "...", "value": "..." }]\n attributes Json @default("[]")\n packaging String @default("")\n minOrder String @default("")\n seoTitle String @default("")\n seoDescription String @default("")\n imageId Int?\n image Media? @relation("ProductImage", fields: [imageId], references: [id], onDelete: SetNull)\n gallery ProductImage[]\n sortOrder Int @default(0)\n isPublished Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([categoryId, sortOrder])\n}\n\nmodel ProductImage {\n productId Int\n mediaId Int\n sortOrder Int @default(0)\n product Product @relation(fields: [productId], references: [id], onDelete: Cascade)\n media Media @relation(fields: [mediaId], references: [id], onDelete: Cascade)\n\n @@id([productId, mediaId])\n}\n\n/// One row per editable website section; `data` is validated by the zod schema for `key` (@imen/shared)\nmodel SiteSection {\n key String @id\n data Json\n updatedById Int?\n updatedAt DateTime @updatedAt\n}\n\nmodel ContactMessage {\n id Int @id @default(autoincrement())\n name String\n org String\n phone String\n message String @default("")\n status MessageStatus @default(NEW)\n ip String @default("")\n userAgent String @default("")\n createdAt DateTime @default(now())\n\n @@index([status, createdAt])\n}\n\nmodel AuditLog {\n id Int @id @default(autoincrement())\n userId Int?\n user AdminUser? @relation(fields: [userId], references: [id], onDelete: SetNull)\n /// create | update | delete | login ...\n action String\n /// product | category | section | media | user | message\n entity String\n entityId String @default("")\n summary String @default("")\n createdAt DateTime @default(now())\n\n @@index([createdAt])\n}\n', + "runtimeDataModel": { + "models": {}, + "enums": {}, + "types": {} + }, + "parameterizationSchema": { + "strings": [], + "graph": "" + } +}; +config2.runtimeDataModel = JSON.parse('{"models":{"AdminUser":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"phone","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"passwordHash","kind":"scalar","type":"String"},{"name":"role","kind":"enum","type":"Role"},{"name":"isActive","kind":"scalar","type":"Boolean"},{"name":"lastLoginAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"refreshTokens","kind":"object","type":"RefreshToken","relationName":"AdminUserToRefreshToken"},{"name":"auditLogs","kind":"object","type":"AuditLog","relationName":"AdminUserToAuditLog"}],"dbName":null,"schema":null},"RefreshToken":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"user","kind":"object","type":"AdminUser","relationName":"AdminUserToRefreshToken"},{"name":"tokenHash","kind":"scalar","type":"String"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"revokedAt","kind":"scalar","type":"DateTime"},{"name":"userAgent","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"}],"dbName":null,"schema":null},"Media":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"key","kind":"scalar","type":"String"},{"name":"mime","kind":"scalar","type":"String"},{"name":"size","kind":"scalar","type":"Int"},{"name":"width","kind":"scalar","type":"Int"},{"name":"height","kind":"scalar","type":"Int"},{"name":"alt","kind":"scalar","type":"String"},{"name":"originalName","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"categoryCovers","kind":"object","type":"Category","relationName":"CategoryCover"},{"name":"productImages","kind":"object","type":"Product","relationName":"ProductImage"},{"name":"productGallery","kind":"object","type":"ProductImage","relationName":"MediaToProductImage"}],"dbName":null,"schema":null},"Category":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"slug","kind":"scalar","type":"String"},{"name":"code","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"nameEn","kind":"scalar","type":"String"},{"name":"shortDesc","kind":"scalar","type":"String"},{"name":"fullDesc","kind":"scalar","type":"String"},{"name":"icon","kind":"scalar","type":"String"},{"name":"coverImageId","kind":"scalar","type":"Int"},{"name":"coverImage","kind":"object","type":"Media","relationName":"CategoryCover"},{"name":"sortOrder","kind":"scalar","type":"Int"},{"name":"isPublished","kind":"scalar","type":"Boolean"},{"name":"seoTitle","kind":"scalar","type":"String"},{"name":"seoDescription","kind":"scalar","type":"String"},{"name":"groups","kind":"object","type":"ProductGroup","relationName":"CategoryToProductGroup"},{"name":"products","kind":"object","type":"Product","relationName":"CategoryToProduct"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null,"schema":null},"ProductGroup":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"categoryId","kind":"scalar","type":"Int"},{"name":"category","kind":"object","type":"Category","relationName":"CategoryToProductGroup"},{"name":"slug","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"desc","kind":"scalar","type":"String"},{"name":"sortOrder","kind":"scalar","type":"Int"},{"name":"products","kind":"object","type":"Product","relationName":"ProductToProductGroup"}],"dbName":null,"schema":null},"Product":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"categoryId","kind":"scalar","type":"Int"},{"name":"category","kind":"object","type":"Category","relationName":"CategoryToProduct"},{"name":"groupId","kind":"scalar","type":"Int"},{"name":"group","kind":"object","type":"ProductGroup","relationName":"ProductToProductGroup"},{"name":"code","kind":"scalar","type":"String"},{"name":"slug","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"nameEn","kind":"scalar","type":"String"},{"name":"desc","kind":"scalar","type":"String"},{"name":"specs","kind":"scalar","type":"String"},{"name":"variants","kind":"scalar","type":"String"},{"name":"details","kind":"scalar","type":"String"},{"name":"brand","kind":"scalar","type":"String"},{"name":"origin","kind":"scalar","type":"String"},{"name":"sizes","kind":"scalar","type":"String"},{"name":"standards","kind":"scalar","type":"String"},{"name":"features","kind":"scalar","type":"String"},{"name":"applications","kind":"scalar","type":"String"},{"name":"attributes","kind":"scalar","type":"Json"},{"name":"packaging","kind":"scalar","type":"String"},{"name":"minOrder","kind":"scalar","type":"String"},{"name":"seoTitle","kind":"scalar","type":"String"},{"name":"seoDescription","kind":"scalar","type":"String"},{"name":"imageId","kind":"scalar","type":"Int"},{"name":"image","kind":"object","type":"Media","relationName":"ProductImage"},{"name":"gallery","kind":"object","type":"ProductImage","relationName":"ProductToProductImage"},{"name":"sortOrder","kind":"scalar","type":"Int"},{"name":"isPublished","kind":"scalar","type":"Boolean"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null,"schema":null},"ProductImage":{"fields":[{"name":"productId","kind":"scalar","type":"Int"},{"name":"mediaId","kind":"scalar","type":"Int"},{"name":"sortOrder","kind":"scalar","type":"Int"},{"name":"product","kind":"object","type":"Product","relationName":"ProductToProductImage"},{"name":"media","kind":"object","type":"Media","relationName":"MediaToProductImage"}],"dbName":null,"schema":null},"SiteSection":{"fields":[{"name":"key","kind":"scalar","type":"String"},{"name":"data","kind":"scalar","type":"Json"},{"name":"updatedById","kind":"scalar","type":"Int"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null,"schema":null},"ContactMessage":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"name","kind":"scalar","type":"String"},{"name":"org","kind":"scalar","type":"String"},{"name":"phone","kind":"scalar","type":"String"},{"name":"message","kind":"scalar","type":"String"},{"name":"status","kind":"enum","type":"MessageStatus"},{"name":"ip","kind":"scalar","type":"String"},{"name":"userAgent","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"}],"dbName":null,"schema":null},"AuditLog":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"user","kind":"object","type":"AdminUser","relationName":"AdminUserToAuditLog"},{"name":"action","kind":"scalar","type":"String"},{"name":"entity","kind":"scalar","type":"String"},{"name":"entityId","kind":"scalar","type":"String"},{"name":"summary","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"}],"dbName":null,"schema":null}},"enums":{},"types":{}}'); +config2.parameterizationSchema = { + strings: JSON.parse('["where","orderBy","cursor","user","refreshTokens","auditLogs","_count","AdminUser.findUnique","AdminUser.findUniqueOrThrow","AdminUser.findFirst","AdminUser.findFirstOrThrow","AdminUser.findMany","data","AdminUser.createOne","AdminUser.createMany","AdminUser.createManyAndReturn","AdminUser.updateOne","AdminUser.updateMany","AdminUser.updateManyAndReturn","create","update","AdminUser.upsertOne","AdminUser.deleteOne","AdminUser.deleteMany","having","_avg","_sum","_min","_max","AdminUser.groupBy","AdminUser.aggregate","RefreshToken.findUnique","RefreshToken.findUniqueOrThrow","RefreshToken.findFirst","RefreshToken.findFirstOrThrow","RefreshToken.findMany","RefreshToken.createOne","RefreshToken.createMany","RefreshToken.createManyAndReturn","RefreshToken.updateOne","RefreshToken.updateMany","RefreshToken.updateManyAndReturn","RefreshToken.upsertOne","RefreshToken.deleteOne","RefreshToken.deleteMany","RefreshToken.groupBy","RefreshToken.aggregate","coverImage","category","group","image","product","media","gallery","products","groups","categoryCovers","productImages","productGallery","Media.findUnique","Media.findUniqueOrThrow","Media.findFirst","Media.findFirstOrThrow","Media.findMany","Media.createOne","Media.createMany","Media.createManyAndReturn","Media.updateOne","Media.updateMany","Media.updateManyAndReturn","Media.upsertOne","Media.deleteOne","Media.deleteMany","Media.groupBy","Media.aggregate","Category.findUnique","Category.findUniqueOrThrow","Category.findFirst","Category.findFirstOrThrow","Category.findMany","Category.createOne","Category.createMany","Category.createManyAndReturn","Category.updateOne","Category.updateMany","Category.updateManyAndReturn","Category.upsertOne","Category.deleteOne","Category.deleteMany","Category.groupBy","Category.aggregate","ProductGroup.findUnique","ProductGroup.findUniqueOrThrow","ProductGroup.findFirst","ProductGroup.findFirstOrThrow","ProductGroup.findMany","ProductGroup.createOne","ProductGroup.createMany","ProductGroup.createManyAndReturn","ProductGroup.updateOne","ProductGroup.updateMany","ProductGroup.updateManyAndReturn","ProductGroup.upsertOne","ProductGroup.deleteOne","ProductGroup.deleteMany","ProductGroup.groupBy","ProductGroup.aggregate","Product.findUnique","Product.findUniqueOrThrow","Product.findFirst","Product.findFirstOrThrow","Product.findMany","Product.createOne","Product.createMany","Product.createManyAndReturn","Product.updateOne","Product.updateMany","Product.updateManyAndReturn","Product.upsertOne","Product.deleteOne","Product.deleteMany","Product.groupBy","Product.aggregate","ProductImage.findUnique","ProductImage.findUniqueOrThrow","ProductImage.findFirst","ProductImage.findFirstOrThrow","ProductImage.findMany","ProductImage.createOne","ProductImage.createMany","ProductImage.createManyAndReturn","ProductImage.updateOne","ProductImage.updateMany","ProductImage.updateManyAndReturn","ProductImage.upsertOne","ProductImage.deleteOne","ProductImage.deleteMany","ProductImage.groupBy","ProductImage.aggregate","SiteSection.findUnique","SiteSection.findUniqueOrThrow","SiteSection.findFirst","SiteSection.findFirstOrThrow","SiteSection.findMany","SiteSection.createOne","SiteSection.createMany","SiteSection.createManyAndReturn","SiteSection.updateOne","SiteSection.updateMany","SiteSection.updateManyAndReturn","SiteSection.upsertOne","SiteSection.deleteOne","SiteSection.deleteMany","SiteSection.groupBy","SiteSection.aggregate","ContactMessage.findUnique","ContactMessage.findUniqueOrThrow","ContactMessage.findFirst","ContactMessage.findFirstOrThrow","ContactMessage.findMany","ContactMessage.createOne","ContactMessage.createMany","ContactMessage.createManyAndReturn","ContactMessage.updateOne","ContactMessage.updateMany","ContactMessage.updateManyAndReturn","ContactMessage.upsertOne","ContactMessage.deleteOne","ContactMessage.deleteMany","ContactMessage.groupBy","ContactMessage.aggregate","AuditLog.findUnique","AuditLog.findUniqueOrThrow","AuditLog.findFirst","AuditLog.findFirstOrThrow","AuditLog.findMany","AuditLog.createOne","AuditLog.createMany","AuditLog.createManyAndReturn","AuditLog.updateOne","AuditLog.updateMany","AuditLog.updateManyAndReturn","AuditLog.upsertOne","AuditLog.deleteOne","AuditLog.deleteMany","AuditLog.groupBy","AuditLog.aggregate","AND","OR","NOT","id","userId","action","entity","entityId","summary","createdAt","equals","in","notIn","lt","lte","gt","gte","not","contains","startsWith","endsWith","name","org","phone","message","MessageStatus","status","ip","userAgent","key","updatedById","updatedAt","string_contains","string_starts_with","string_ends_with","array_starts_with","array_ends_with","array_contains","productId","mediaId","sortOrder","categoryId","groupId","code","slug","nameEn","desc","specs","variants","details","brand","origin","sizes","standards","features","applications","attributes","packaging","minOrder","seoTitle","seoDescription","imageId","isPublished","has","hasEvery","hasSome","shortDesc","fullDesc","icon","coverImageId","mime","size","width","height","alt","originalName","productId_mediaId","every","some","none","categoryId_slug","tokenHash","expiresAt","revokedAt","passwordHash","Role","role","isActive","lastLoginAt","is","isNot","connectOrCreate","upsert","createMany","set","disconnect","delete","connect","updateMany","deleteMany","push","increment","decrement","multiply","divide"]'), + graph: "8ARqoAEOBAAA3AIAIAUAAN0CACC7AQAA2QIAMLwBAAALABC9AQAA2QIAML4BAgAAAAHEAUAAsAIAIdABAQCuAgAh0gEBAAAAAdoBQACwAgAhjwIBAK4CACGRAgAA2gKRAiKSAiAAxQIAIZMCQADbAgAhAQAAAAEAIAsDAADhAgAguwEAAOACADC8AQAAAwAQvQEAAOACADC-AQIArQIAIb8BAgCtAgAhxAFAALACACHXAQEArgIAIYwCAQCuAgAhjQJAALACACGOAkAA2wIAIQIDAAC6BAAgjgIAAOICACALAwAA4QIAILsBAADgAgAwvAEAAAMAEL0BAADgAgAwvgECAAAAAb8BAgCtAgAhxAFAALACACHXAQEArgIAIYwCAQAAAAGNAkAAsAIAIY4CQADbAgAhAwAAAAMAIAEAAAQAMAIAAAUAIAsDAADfAgAguwEAAN4CADC8AQAABwAQvQEAAN4CADC-AQIArQIAIb8BAgC2AgAhwAEBAK4CACHBAQEArgIAIcIBAQCuAgAhwwEBAK4CACHEAUAAsAIAIQIDAAC6BAAgvwEAAOICACALAwAA3wIAILsBAADeAgAwvAEAAAcAEL0BAADeAgAwvgECAAAAAb8BAgC2AgAhwAEBAK4CACHBAQEArgIAIcIBAQCuAgAhwwEBAK4CACHEAUAAsAIAIQMAAAAHACABAAAIADACAAAJACAOBAAA3AIAIAUAAN0CACC7AQAA2QIAMLwBAAALABC9AQAA2QIAML4BAgCtAgAhxAFAALACACHQAQEArgIAIdIBAQCuAgAh2gFAALACACGPAgEArgIAIZECAADaApECIpICIADFAgAhkwJAANsCACEBAAAACwAgAQAAAAMAIAEAAAAHACABAAAAAQAgAwQAALgEACAFAAC5BAAgkwIAAOICACADAAAACwAgAQAAEAAwAgAAAQAgAwAAAAsAIAEAABAAMAIAAAEAIAMAAAALACABAAAQADACAAABACALBAAAtgQAIAUAALcEACC-AQIAAAABxAFAAAAAAdABAQAAAAHSAQEAAAAB2gFAAAAAAY8CAQAAAAGRAgAAAJECApICIAAAAAGTAkAAAAABAQwAABQAIAm-AQIAAAABxAFAAAAAAdABAQAAAAHSAQEAAAAB2gFAAAAAAY8CAQAAAAGRAgAAAJECApICIAAAAAGTAkAAAAABAQwAABYAMAEMAAAWADALBAAAnAQAIAUAAJ0EACC-AQIA6gIAIcQBQADpAgAh0AEBAOgCACHSAQEA6AIAIdoBQADpAgAhjwIBAOgCACGRAgAAmwSRAiKSAiAAjQMAIZMCQACTBAAhAgAAAAEAIAwAABkAIAm-AQIA6gIAIcQBQADpAgAh0AEBAOgCACHSAQEA6AIAIdoBQADpAgAhjwIBAOgCACGRAgAAmwSRAiKSAiAAjQMAIZMCQACTBAAhAgAAAAsAIAwAABsAIAIAAAALACAMAAAbACADAAAAAQAgEwAAFAAgFAAAGQAgAQAAAAEAIAEAAAALACAGBgAAlgQAIBkAAJcEACAaAACaBAAgGwAAmQQAIBwAAJgEACCTAgAA4gIAIAy7AQAA1QIAMLwBAAAiABC9AQAA1QIAML4BAgCaAgAhxAFAAJ0CACHQAQEAnAIAIdIBAQCcAgAh2gFAAJ0CACGPAgEAnAIAIZECAADWApECIpICIAC6AgAhkwJAANICACEDAAAACwAgAQAAIQAwGAAAIgAgAwAAAAsAIAEAABAAMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgCAMAAJUEACC-AQIAAAABvwECAAAAAcQBQAAAAAHXAQEAAAABjAIBAAAAAY0CQAAAAAGOAkAAAAABAQwAACoAIAe-AQIAAAABvwECAAAAAcQBQAAAAAHXAQEAAAABjAIBAAAAAY0CQAAAAAGOAkAAAAABAQwAACwAMAEMAAAsADAIAwAAlAQAIL4BAgDqAgAhvwECAOoCACHEAUAA6QIAIdcBAQDoAgAhjAIBAOgCACGNAkAA6QIAIY4CQACTBAAhAgAAAAUAIAwAAC8AIAe-AQIA6gIAIb8BAgDqAgAhxAFAAOkCACHXAQEA6AIAIYwCAQDoAgAhjQJAAOkCACGOAkAAkwQAIQIAAAADACAMAAAxACACAAAAAwAgDAAAMQAgAwAAAAUAIBMAACoAIBQAAC8AIAEAAAAFACABAAAAAwAgBgYAAI4EACAZAACPBAAgGgAAkgQAIBsAAJEEACAcAACQBAAgjgIAAOICACAKuwEAANECADC8AQAAOAAQvQEAANECADC-AQIAmgIAIb8BAgCaAgAhxAFAAJ0CACHXAQEAnAIAIYwCAQCcAgAhjQJAAJ0CACGOAkAA0gIAIQMAAAADACABAAA3ADAYAAA4ACADAAAAAwAgAQAABAAwAgAABQAgDzgAAM4CACA5AADMAgAgOgAAyQIAILsBAADNAgAwvAEAAEEAEL0BAADNAgAwvgECAAAAAcQBQACwAgAh2AEBAAAAAYECAQCuAgAhggICAK0CACGDAgIAtgIAIYQCAgC2AgAhhQIBAK4CACGGAgEArgIAIQEAAAA7ACAVLwAAyAIAIDYAAMwCACA3AADQAgAguwEAAM8CADC8AQAAPQAQvQEAAM8CADC-AQIArQIAIcQBQACwAgAh0AEBAK4CACHaAUAAsAIAIeMBAgCtAgAh5gEBAK4CACHnAQEArgIAIegBAQCuAgAh9gEBAK4CACH3AQEArgIAIfkBIADFAgAh_QEBAK4CACH-AQEArgIAIf8BAQCuAgAhgAICALYCACEELwAAigQAIDYAAIcEACA3AACNBAAggAIAAOICACAVLwAAyAIAIDYAAMwCACA3AADQAgAguwEAAM8CADC8AQAAPQAQvQEAAM8CADC-AQIAAAABxAFAALACACHQAQEArgIAIdoBQACwAgAh4wECAK0CACHmAQEArgIAIecBAQAAAAHoAQEArgIAIfYBAQCuAgAh9wEBAK4CACH5ASAAxQIAIf0BAQCuAgAh_gEBAK4CACH_AQEArgIAIYACAgC2AgAhAwAAAD0AIAEAAD4AMAIAAD8AIA84AADOAgAgOQAAzAIAIDoAAMkCACC7AQAAzQIAMLwBAABBABC9AQAAzQIAML4BAgCtAgAhxAFAALACACHYAQEArgIAIYECAQCuAgAhggICAK0CACGDAgIAtgIAIYQCAgC2AgAhhQIBAK4CACGGAgEArgIAIQEAAABBACALMAAAxgIAIDYAAMwCACC7AQAAywIAMLwBAABDABC9AQAAywIAML4BAgCtAgAh0AEBAK4CACHjAQIArQIAIeQBAgCtAgAh5wEBAK4CACHpAQEArgIAIQIwAACLBAAgNgAAhwQAIAwwAADGAgAgNgAAzAIAILsBAADLAgAwvAEAAEMAEL0BAADLAgAwvgECAAAAAdABAQCuAgAh4wECAK0CACHkAQIArQIAIecBAQCuAgAh6QEBAK4CACGLAgAAygIAIAMAAABDACABAABEADACAABFACAiMAAAxgIAIDEAAMcCACAyAADIAgAgNQAAyQIAILsBAADEAgAwvAEAAEcAEL0BAADEAgAwvgECAK0CACHEAUAAsAIAIdABAQCuAgAh2gFAALACACHjAQIArQIAIeQBAgCtAgAh5QECALYCACHmAQEArgIAIecBAQCuAgAh6AEBAK4CACHpAQEArgIAIeoBAAC5AgAg6wEAALkCACDsAQEArgIAIe0BAQCuAgAh7gEBAK4CACHvAQAAuQIAIPABAAC5AgAg8QEAALkCACDyAQAAuQIAIPMBAAC1AgAg9AEBAK4CACH1AQEArgIAIfYBAQCuAgAh9wEBAK4CACH4AQIAtgIAIfkBIADFAgAhBjAAAIsEACAxAACMBAAgMgAAigQAIDUAAIgEACDlAQAA4gIAIPgBAADiAgAgIjAAAMYCACAxAADHAgAgMgAAyAIAIDUAAMkCACC7AQAAxAIAMLwBAABHABC9AQAAxAIAML4BAgAAAAHEAUAAsAIAIdABAQCuAgAh2gFAALACACHjAQIArQIAIeQBAgCtAgAh5QECALYCACHmAQEAAAAB5wEBAAAAAegBAQCuAgAh6QEBAK4CACHqAQAAuQIAIOsBAAC5AgAg7AEBAK4CACHtAQEArgIAIe4BAQCuAgAh7wEAALkCACDwAQAAuQIAIPEBAAC5AgAg8gEAALkCACDzAQAAtQIAIPQBAQCuAgAh9QEBAK4CACH2AQEArgIAIfcBAQCuAgAh-AECALYCACH5ASAAxQIAIQMAAABHACABAABIADACAABJACABAAAAQwAgAQAAAEEAIAgzAADCAgAgNAAAwwIAILsBAADBAgAwvAEAAE0AEL0BAADBAgAw4QECAK0CACHiAQIArQIAIeMBAgCtAgAhAjMAAIkEACA0AACKBAAgCTMAAMICACA0AADDAgAguwEAAMECADC8AQAATQAQvQEAAMECADDhAQIArQIAIeIBAgCtAgAh4wECAK0CACGHAgAAwAIAIAMAAABNACABAABOADACAABPACABAAAATQAgAQAAAEcAIAMAAABHACABAABIADACAABJACABAAAAQwAgAQAAAEcAIAMAAABHACABAABIADACAABJACADAAAATQAgAQAATgAwAgAATwAgAQAAAD0AIAEAAABHACABAAAATQAgAQAAADsAIAU4AACGBAAgOQAAhwQAIDoAAIgEACCDAgAA4gIAIIQCAADiAgAgAwAAAEEAIAEAAFwAMAIAADsAIAMAAABBACABAABcADACAAA7ACADAAAAQQAgAQAAXAAwAgAAOwAgDDgAAIMEACA5AACEBAAgOgAAhQQAIL4BAgAAAAHEAUAAAAAB2AEBAAAAAYECAQAAAAGCAgIAAAABgwICAAAAAYQCAgAAAAGFAgEAAAABhgIBAAAAAQEMAABgACAJvgECAAAAAcQBQAAAAAHYAQEAAAABgQIBAAAAAYICAgAAAAGDAgIAAAABhAICAAAAAYUCAQAAAAGGAgEAAAABAQwAAGIAMAEMAABiADAMOAAA4gMAIDkAAOMDACA6AADkAwAgvgECAOoCACHEAUAA6QIAIdgBAQDoAgAhgQIBAOgCACGCAgIA6gIAIYMCAgDrAgAhhAICAOsCACGFAgEA6AIAIYYCAQDoAgAhAgAAADsAIAwAAGUAIAm-AQIA6gIAIcQBQADpAgAh2AEBAOgCACGBAgEA6AIAIYICAgDqAgAhgwICAOsCACGEAgIA6wIAIYUCAQDoAgAhhgIBAOgCACECAAAAQQAgDAAAZwAgAgAAAEEAIAwAAGcAIAMAAAA7ACATAABgACAUAABlACABAAAAOwAgAQAAAEEAIAcGAADdAwAgGQAA3gMAIBoAAOEDACAbAADgAwAgHAAA3wMAIIMCAADiAgAghAIAAOICACAMuwEAAL8CADC8AQAAbgAQvQEAAL8CADC-AQIAmgIAIcQBQACdAgAh2AEBAJwCACGBAgEAnAIAIYICAgCaAgAhgwICAJsCACGEAgIAmwIAIYUCAQCcAgAhhgIBAJwCACEDAAAAQQAgAQAAbQAwGAAAbgAgAwAAAEEAIAEAAFwAMAIAADsAIAEAAAA_ACABAAAAPwAgAwAAAD0AIAEAAD4AMAIAAD8AIAMAAAA9ACABAAA-ADACAAA_ACADAAAAPQAgAQAAPgAwAgAAPwAgEi8AANoDACA2AADcAwAgNwAA2wMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5gEBAAAAAecBAQAAAAHoAQEAAAAB9gEBAAAAAfcBAQAAAAH5ASAAAAAB_QEBAAAAAf4BAQAAAAH_AQEAAAABgAICAAAAAQEMAAB2ACAPvgECAAAAAcQBQAAAAAHQAQEAAAAB2gFAAAAAAeMBAgAAAAHmAQEAAAAB5wEBAAAAAegBAQAAAAH2AQEAAAAB9wEBAAAAAfkBIAAAAAH9AQEAAAAB_gEBAAAAAf8BAQAAAAGAAgIAAAABAQwAAHgAMAEMAAB4ADABAAAAQQAgEi8AAMIDACA2AADEAwAgNwAAwwMAIL4BAgDqAgAhxAFAAOkCACHQAQEA6AIAIdoBQADpAgAh4wECAOoCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-QEgAI0DACH9AQEA6AIAIf4BAQDoAgAh_wEBAOgCACGAAgIA6wIAIQIAAAA_ACAMAAB8ACAPvgECAOoCACHEAUAA6QIAIdABAQDoAgAh2gFAAOkCACHjAQIA6gIAIeYBAQDoAgAh5wEBAOgCACHoAQEA6AIAIfYBAQDoAgAh9wEBAOgCACH5ASAAjQMAIf0BAQDoAgAh_gEBAOgCACH_AQEA6AIAIYACAgDrAgAhAgAAAD0AIAwAAH4AIAIAAAA9ACAMAAB-ACABAAAAQQAgAwAAAD8AIBMAAHYAIBQAAHwAIAEAAAA_ACABAAAAPQAgBgYAAL0DACAZAAC-AwAgGgAAwQMAIBsAAMADACAcAAC_AwAggAIAAOICACASuwEAAL4CADC8AQAAhgEAEL0BAAC-AgAwvgECAJoCACHEAUAAnQIAIdABAQCcAgAh2gFAAJ0CACHjAQIAmgIAIeYBAQCcAgAh5wEBAJwCACHoAQEAnAIAIfYBAQCcAgAh9wEBAJwCACH5ASAAugIAIf0BAQCcAgAh_gEBAJwCACH_AQEAnAIAIYACAgCbAgAhAwAAAD0AIAEAAIUBADAYAACGAQAgAwAAAD0AIAEAAD4AMAIAAD8AIAEAAABFACABAAAARQAgAwAAAEMAIAEAAEQAMAIAAEUAIAMAAABDACABAABEADACAABFACADAAAAQwAgAQAARAAwAgAARQAgCDAAALsDACA2AAC8AwAgvgECAAAAAdABAQAAAAHjAQIAAAAB5AECAAAAAecBAQAAAAHpAQEAAAABAQwAAI4BACAGvgECAAAAAdABAQAAAAHjAQIAAAAB5AECAAAAAecBAQAAAAHpAQEAAAABAQwAAJABADABDAAAkAEAMAgwAACtAwAgNgAArgMAIL4BAgDqAgAh0AEBAOgCACHjAQIA6gIAIeQBAgDqAgAh5wEBAOgCACHpAQEA6AIAIQIAAABFACAMAACTAQAgBr4BAgDqAgAh0AEBAOgCACHjAQIA6gIAIeQBAgDqAgAh5wEBAOgCACHpAQEA6AIAIQIAAABDACAMAACVAQAgAgAAAEMAIAwAAJUBACADAAAARQAgEwAAjgEAIBQAAJMBACABAAAARQAgAQAAAEMAIAUGAACoAwAgGQAAqQMAIBoAAKwDACAbAACrAwAgHAAAqgMAIAm7AQAAvQIAMLwBAACcAQAQvQEAAL0CADC-AQIAmgIAIdABAQCcAgAh4wECAJoCACHkAQIAmgIAIecBAQCcAgAh6QEBAJwCACEDAAAAQwAgAQAAmwEAMBgAAJwBACADAAAAQwAgAQAARAAwAgAARQAgAQAAAEkAIAEAAABJACADAAAARwAgAQAASAAwAgAASQAgAwAAAEcAIAEAAEgAMAIAAEkAIAMAAABHACABAABIADACAABJACAfMAAApAMAIDEAAKUDACAyAACmAwAgNQAApwMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5AECAAAAAeUBAgAAAAHmAQEAAAAB5wEBAAAAAegBAQAAAAHpAQEAAAAB6gEAAJ4DACDrAQAAnwMAIOwBAQAAAAHtAQEAAAAB7gEBAAAAAe8BAACgAwAg8AEAAKEDACDxAQAAogMAIPIBAACjAwAg8wGAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQIAAAAB-QEgAAAAAQEMAACkAQAgG74BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5AECAAAAAeUBAgAAAAHmAQEAAAAB5wEBAAAAAegBAQAAAAHpAQEAAAAB6gEAAJ4DACDrAQAAnwMAIOwBAQAAAAHtAQEAAAAB7gEBAAAAAe8BAACgAwAg8AEAAKEDACDxAQAAogMAIPIBAACjAwAg8wGAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQIAAAAB-QEgAAAAAQEMAACmAQAwAQwAAKYBADABAAAAQwAgAQAAAEEAIB8wAACOAwAgMQAAjwMAIDIAAJADACA1AACRAwAgvgECAOoCACHEAUAA6QIAIdABAQDoAgAh2gFAAOkCACHjAQIA6gIAIeQBAgDqAgAh5QECAOsCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACHpAQEA6AIAIeoBAACHAwAg6wEAAIgDACDsAQEA6AIAIe0BAQDoAgAh7gEBAOgCACHvAQAAiQMAIPABAACKAwAg8QEAAIsDACDyAQAAjAMAIPMBgAAAAAH0AQEA6AIAIfUBAQDoAgAh9gEBAOgCACH3AQEA6AIAIfgBAgDrAgAh-QEgAI0DACECAAAASQAgDAAAqwEAIBu-AQIA6gIAIcQBQADpAgAh0AEBAOgCACHaAUAA6QIAIeMBAgDqAgAh5AECAOoCACHlAQIA6wIAIeYBAQDoAgAh5wEBAOgCACHoAQEA6AIAIekBAQDoAgAh6gEAAIcDACDrAQAAiAMAIOwBAQDoAgAh7QEBAOgCACHuAQEA6AIAIe8BAACJAwAg8AEAAIoDACDxAQAAiwMAIPIBAACMAwAg8wGAAAAAAfQBAQDoAgAh9QEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-AECAOsCACH5ASAAjQMAIQIAAABHACAMAACtAQAgAgAAAEcAIAwAAK0BACABAAAAQwAgAQAAAEEAIAMAAABJACATAACkAQAgFAAAqwEAIAEAAABJACABAAAARwAgBwYAAIIDACAZAACDAwAgGgAAhgMAIBsAAIUDACAcAACEAwAg5QEAAOICACD4AQAA4gIAIB67AQAAuAIAMLwBAAC2AQAQvQEAALgCADC-AQIAmgIAIcQBQACdAgAh0AEBAJwCACHaAUAAnQIAIeMBAgCaAgAh5AECAJoCACHlAQIAmwIAIeYBAQCcAgAh5wEBAJwCACHoAQEAnAIAIekBAQCcAgAh6gEAALkCACDrAQAAuQIAIOwBAQCcAgAh7QEBAJwCACHuAQEAnAIAIe8BAAC5AgAg8AEAALkCACDxAQAAuQIAIPIBAAC5AgAg8wEAALICACD0AQEAnAIAIfUBAQCcAgAh9gEBAJwCACH3AQEAnAIAIfgBAgCbAgAh-QEgALoCACEDAAAARwAgAQAAtQEAMBgAALYBACADAAAARwAgAQAASAAwAgAASQAgAQAAAE8AIAEAAABPACADAAAATQAgAQAATgAwAgAATwAgAwAAAE0AIAEAAE4AMAIAAE8AIAMAAABNACABAABOADACAABPACAFMwAAgAMAIDQAAIEDACDhAQIAAAAB4gECAAAAAeMBAgAAAAEBDAAAvgEAIAPhAQIAAAAB4gECAAAAAeMBAgAAAAEBDAAAwAEAMAEMAADAAQAwBTMAAP4CACA0AAD_AgAg4QECAOoCACHiAQIA6gIAIeMBAgDqAgAhAgAAAE8AIAwAAMMBACAD4QECAOoCACHiAQIA6gIAIeMBAgDqAgAhAgAAAE0AIAwAAMUBACACAAAATQAgDAAAxQEAIAMAAABPACATAAC-AQAgFAAAwwEAIAEAAABPACABAAAATQAgBQYAAPkCACAZAAD6AgAgGgAA_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_gEAEL0BAACoAgAwvgECAJoCACHEAUAAnQIAIdABAQCcAgAh0QEBAJwCACHSAQEAnAIAIdMBAQCcAgAh1QEAAKkC1QEi1gEBAJwCACHXAQEAnAIAIQcGAACfAgAgGwAAqwIAIBwAAKsCACDFAQAAANUBAsYBAAAA1QEIxwEAAADVAQjMAQAAqgLVASIHBgAAnwIAIBsAAKsCACAcAACrAgAgxQEAAADVAQLGAQAAANUBCMcBAAAA1QEIzAEAAKoC1QEiBMUBAAAA1QECxgEAAADVAQjHAQAAANUBCMwBAACrAtUBIgy7AQAArAIAMLwBAADrAQAQvQEAAKwCADC-AQIArQIAIcQBQACwAgAh0AEBAK4CACHRAQEArgIAIdIBAQCuAgAh0wEBAK4CACHVAQAArwLVASLWAQEArgIAIdcBAQCuAgAhCMUBAgAAAAHGAQIAAAAExwECAAAABMgBAgAAAAHJAQIAAAABygECAAAAAcsBAgAAAAHMAQIAnwIAIQvFAQEAAAABxgEBAAAABMcBAQAAAATIAQEAAAAByQEBAAAAAcoBAQAAAAHLAQEAAAABzAEBAKICACHNAQEAAAABzgEBAAAAAc8BAQAAAAEExQEAAADVAQLGAQAAANUBCMcBAAAA1QEIzAEAAKsC1QEiCMUBQAAAAAHGAUAAAAAExwFAAAAABMgBQAAAAAHJAUAAAAABygFAAAAAAcsBQAAAAAHMAUAAoAIAIQcMAACyAgAguwEAALECADC8AQAA5QEAEL0BAACxAgAw2AEBAJwCACHZAQIAmwIAIdoBQACdAgAhDwYAAJ8CACAbAACzAgAgHAAAswIAIMUBgAAAAAHIAYAAAAAByQGAAAAAAcoBgAAAAAHLAYAAAAABzAGAAAAAAdsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BgAAAAAHfAYAAAAAB4AGAAAAAAQzFAYAAAAAByAGAAAAAAckBgAAAAAHKAYAAAAABywGAAAAAAcwBgAAAAAHbAQEAAAAB3AEBAAAAAd0BAQAAAAHeAYAAAAAB3wGAAAAAAeABgAAAAAEHDAAAtQIAILsBAAC0AgAwvAEAANIBABC9AQAAtAIAMNgBAQCuAgAh2QECALYCACHaAUAAsAIAIQzFAYAAAAAByAGAAAAAAckBgAAAAAHKAYAAAAABywGAAAAAAcwBgAAAAAHbAQEAAAAB3AEBAAAAAd0BAQAAAAHeAYAAAAAB3wGAAAAAAeABgAAAAAEIxQECAAAAAcYBAgAAAAXHAQIAAAAFyAECAAAAAckBAgAAAAHKAQIAAAABywECAAAAAcwBAgCkAgAhBrsBAAC3AgAwvAEAAMwBABC9AQAAtwIAMOEBAgCaAgAh4gECAJoCACHjAQIAmgIAIR67AQAAuAIAMLwBAAC2AQAQvQEAALgCADC-AQIAmgIAIcQBQACdAgAh0AEBAJwCACHaAUAAnQIAIeMBAgCaAgAh5AECAJoCACHlAQIAmwIAIeYBAQCcAgAh5wEBAJwCACHoAQEAnAIAIekBAQCcAgAh6gEAALkCACDrAQAAuQIAIOwBAQCcAgAh7QEBAJwCACHuAQEAnAIAIe8BAAC5AgAg8AEAALkCACDxAQAAuQIAIPIBAAC5AgAg8wEAALICACD0AQEAnAIAIfUBAQCcAgAh9gEBAJwCACH3AQEAnAIAIfgBAgCbAgAh-QEgALoCACEExQEBAAAABfoBAQAAAAH7AQEAAAAE_AEBAAAABAUGAACfAgAgGwAAvAIAIBwAALwCACDFASAAAAABzAEgALsCACEFBgAAnwIAIBsAALwCACAcAAC8AgAgxQEgAAAAAcwBIAC7AgAhAsUBIAAAAAHMASAAvAIAIQm7AQAAvQIAMLwBAACcAQAQvQEAAL0CADC-AQIAmgIAIdABAQCcAgAh4wECAJoCACHkAQIAmgIAIecBAQCcAgAh6QEBAJwCACESuwEAAL4CADC8AQAAhgEAEL0BAAC-AgAwvgECAJoCACHEAUAAnQIAIdABAQCcAgAh2gFAAJ0CACHjAQIAmgIAIeYBAQCcAgAh5wEBAJwCACHoAQEAnAIAIfYBAQCcAgAh9wEBAJwCACH5ASAAugIAIf0BAQCcAgAh_gEBAJwCACH_AQEAnAIAIYACAgCbAgAhDLsBAAC_AgAwvAEAAG4AEL0BAAC_AgAwvgECAJoCACHEAUAAnQIAIdgBAQCcAgAhgQIBAJwCACGCAgIAmgIAIYMCAgCbAgAhhAICAJsCACGFAgEAnAIAIYYCAQCcAgAhAuEBAgAAAAHiAQIAAAABCDMAAMICACA0AADDAgAguwEAAMECADC8AQAATQAQvQEAAMECADDhAQIArQIAIeIBAgCtAgAh4wECAK0CACEkMAAAxgIAIDEAAMcCACAyAADIAgAgNQAAyQIAILsBAADEAgAwvAEAAEcAEL0BAADEAgAwvgECAK0CACHEAUAAsAIAIdABAQCuAgAh2gFAALACACHjAQIArQIAIeQBAgCtAgAh5QECALYCACHmAQEArgIAIecBAQCuAgAh6AEBAK4CACHpAQEArgIAIeoBAAC5AgAg6wEAALkCACDsAQEArgIAIe0BAQCuAgAh7gEBAK4CACHvAQAAuQIAIPABAAC5AgAg8QEAALkCACDyAQAAuQIAIPMBAAC1AgAg9AEBAK4CACH1AQEArgIAIfYBAQCuAgAh9wEBAK4CACH4AQIAtgIAIfkBIADFAgAhlAIAAEcAIJUCAABHACAROAAAzgIAIDkAAMwCACA6AADJAgAguwEAAM0CADC8AQAAQQAQvQEAAM0CADC-AQIArQIAIcQBQACwAgAh2AEBAK4CACGBAgEArgIAIYICAgCtAgAhgwICALYCACGEAgIAtgIAIYUCAQCuAgAhhgIBAK4CACGUAgAAQQAglQIAAEEAICIwAADGAgAgMQAAxwIAIDIAAMgCACA1AADJAgAguwEAAMQCADC8AQAARwAQvQEAAMQCADC-AQIArQIAIcQBQACwAgAh0AEBAK4CACHaAUAAsAIAIeMBAgCtAgAh5AECAK0CACHlAQIAtgIAIeYBAQCuAgAh5wEBAK4CACHoAQEArgIAIekBAQCuAgAh6gEAALkCACDrAQAAuQIAIOwBAQCuAgAh7QEBAK4CACHuAQEArgIAIe8BAAC5AgAg8AEAALkCACDxAQAAuQIAIPIBAAC5AgAg8wEAALUCACD0AQEArgIAIfUBAQCuAgAh9gEBAK4CACH3AQEArgIAIfgBAgC2AgAh-QEgAMUCACECxQEgAAAAAcwBIAC8AgAhFy8AAMgCACA2AADMAgAgNwAA0AIAILsBAADPAgAwvAEAAD0AEL0BAADPAgAwvgECAK0CACHEAUAAsAIAIdABAQCuAgAh2gFAALACACHjAQIArQIAIeYBAQCuAgAh5wEBAK4CACHoAQEArgIAIfYBAQCuAgAh9wEBAK4CACH5ASAAxQIAIf0BAQCuAgAh_gEBAK4CACH_AQEArgIAIYACAgC2AgAhlAIAAD0AIJUCAAA9ACANMAAAxgIAIDYAAMwCACC7AQAAywIAMLwBAABDABC9AQAAywIAML4BAgCtAgAh0AEBAK4CACHjAQIArQIAIeQBAgCtAgAh5wEBAK4CACHpAQEArgIAIZQCAABDACCVAgAAQwAgETgAAM4CACA5AADMAgAgOgAAyQIAILsBAADNAgAwvAEAAEEAEL0BAADNAgAwvgECAK0CACHEAUAAsAIAIdgBAQCuAgAhgQIBAK4CACGCAgIArQIAIYMCAgC2AgAhhAICALYCACGFAgEArgIAIYYCAQCuAgAhlAIAAEEAIJUCAABBACADiAIAAE0AIIkCAABNACCKAgAATQAgAuQBAgAAAAHnAQEAAAABCzAAAMYCACA2AADMAgAguwEAAMsCADC8AQAAQwAQvQEAAMsCADC-AQIArQIAIdABAQCuAgAh4wECAK0CACHkAQIArQIAIecBAQCuAgAh6QEBAK4CACEDiAIAAEcAIIkCAABHACCKAgAARwAgDzgAAM4CACA5AADMAgAgOgAAyQIAILsBAADNAgAwvAEAAEEAEL0BAADNAgAwvgECAK0CACHEAUAAsAIAIdgBAQCuAgAhgQIBAK4CACGCAgIArQIAIYMCAgC2AgAhhAICALYCACGFAgEArgIAIYYCAQCuAgAhA4gCAAA9ACCJAgAAPQAgigIAAD0AIBUvAADIAgAgNgAAzAIAIDcAANACACC7AQAAzwIAMLwBAAA9ABC9AQAAzwIAML4BAgCtAgAhxAFAALACACHQAQEArgIAIdoBQACwAgAh4wECAK0CACHmAQEArgIAIecBAQCuAgAh6AEBAK4CACH2AQEArgIAIfcBAQCuAgAh-QEgAMUCACH9AQEArgIAIf4BAQCuAgAh_wEBAK4CACGAAgIAtgIAIQOIAgAAQwAgiQIAAEMAIIoCAABDACAKuwEAANECADC8AQAAOAAQvQEAANECADC-AQIAmgIAIb8BAgCaAgAhxAFAAJ0CACHXAQEAnAIAIYwCAQCcAgAhjQJAAJ0CACGOAkAA0gIAIQsGAACkAgAgGwAA1AIAIBwAANQCACDFAUAAAAABxgFAAAAABccBQAAAAAXIAUAAAAAByQFAAAAAAcoBQAAAAAHLAUAAAAABzAFAANMCACELBgAApAIAIBsAANQCACAcAADUAgAgxQFAAAAAAcYBQAAAAAXHAUAAAAAFyAFAAAAAAckBQAAAAAHKAUAAAAABywFAAAAAAcwBQADTAgAhCMUBQAAAAAHGAUAAAAAFxwFAAAAABcgBQAAAAAHJAUAAAAABygFAAAAAAcsBQAAAAAHMAUAA1AIAIQy7AQAA1QIAMLwBAAAiABC9AQAA1QIAML4BAgCaAgAhxAFAAJ0CACHQAQEAnAIAIdIBAQCcAgAh2gFAAJ0CACGPAgEAnAIAIZECAADWApECIpICIAC6AgAhkwJAANICACEHBgAAnwIAIBsAANgCACAcAADYAgAgxQEAAACRAgLGAQAAAJECCMcBAAAAkQIIzAEAANcCkQIiBwYAAJ8CACAbAADYAgAgHAAA2AIAIMUBAAAAkQICxgEAAACRAgjHAQAAAJECCMwBAADXApECIgTFAQAAAJECAsYBAAAAkQIIxwEAAACRAgjMAQAA2AKRAiIOBAAA3AIAIAUAAN0CACC7AQAA2QIAMLwBAAALABC9AQAA2QIAML4BAgCtAgAhxAFAALACACHQAQEArgIAIdIBAQCuAgAh2gFAALACACGPAgEArgIAIZECAADaApECIpICIADFAgAhkwJAANsCACEExQEAAACRAgLGAQAAAJECCMcBAAAAkQIIzAEAANgCkQIiCMUBQAAAAAHGAUAAAAAFxwFAAAAABcgBQAAAAAHJAUAAAAABygFAAAAAAcsBQAAAAAHMAUAA1AIAIQOIAgAAAwAgiQIAAAMAIIoCAAADACADiAIAAAcAIIkCAAAHACCKAgAABwAgCwMAAN8CACC7AQAA3gIAMLwBAAAHABC9AQAA3gIAML4BAgCtAgAhvwECALYCACHAAQEArgIAIcEBAQCuAgAhwgEBAK4CACHDAQEArgIAIcQBQACwAgAhEAQAANwCACAFAADdAgAguwEAANkCADC8AQAACwAQvQEAANkCADC-AQIArQIAIcQBQACwAgAh0AEBAK4CACHSAQEArgIAIdoBQACwAgAhjwIBAK4CACGRAgAA2gKRAiKSAiAAxQIAIZMCQADbAgAhlAIAAAsAIJUCAAALACALAwAA4QIAILsBAADgAgAwvAEAAAMAEL0BAADgAgAwvgECAK0CACG_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-AECALYCACH5ASAAxQIAIRq-AQIA6gIAIcQBQADpAgAh0AEBAOgCACHaAUAA6QIAIeMBAgDqAgAh5AECAOoCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACHpAQEA6AIAIeoBAACHAwAg6wEAAIgDACDsAQEA6AIAIe0BAQDoAgAh7gEBAOgCACHvAQAAiQMAIPABAACKAwAg8QEAAIsDACDyAQAAjAMAIPMBgAAAAAH0AQEA6AIAIfUBAQDoAgAh9gEBAOgCACH3AQEA6AIAIfgBAgDrAgAh-QEgAI0DACEdMAAAjgMAIDIAAJADACA1AACRAwAgvgECAOoCACHEAUAA6QIAIdABAQDoAgAh2gFAAOkCACHjAQIA6gIAIeQBAgDqAgAh5gEBAOgCACHnAQEA6AIAIegBAQDoAgAh6QEBAOgCACHqAQAAhwMAIOsBAACIAwAg7AEBAOgCACHtAQEA6AIAIe4BAQDoAgAh7wEAAIkDACDwAQAAigMAIPEBAACLAwAg8gEAAIwDACDzAYAAAAAB9AEBAOgCACH1AQEA6AIAIfYBAQDoAgAh9wEBAOgCACH4AQIA6wIAIfkBIACNAwAhHTAAAKQDACAyAACmAwAgNQAApwMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5AECAAAAAeYBAQAAAAHnAQEAAAAB6AEBAAAAAekBAQAAAAHqAQAAngMAIOsBAACfAwAg7AEBAAAAAe0BAQAAAAHuAQEAAAAB7wEAAKADACDwAQAAoQMAIPEBAACiAwAg8gEAAKMDACDzAYAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAgAAAAH5ASAAAAABAxMAAMwEACCWAgAAzQQAIJwCAAA_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-AMAMJcCAAD5AwAwmAIAAPoDACCZAgAA-wMAMJoCAAD7AwAwmwIAAPsDADCcAgAA-wMAMJ0CAAD9AwAwngIAAP4DADALEwAA7gMAMBQAAPIDADCWAgAA7wMAMJcCAADwAwAwmAIAAPEDACCZAgAAswMAMJoCAACzAwAwmwIAALMDADCcAgAAswMAMJ0CAADzAwAwngIAALYDADALEwAA5QMAMBQAAOkDADCWAgAA5gMAMJcCAADnAwAwmAIAAOgDACCZAgAAlgMAMJoCAACWAwAwmwIAAJYDADCcAgAAlgMAMJ0CAADqAwAwngIAAJkDADADMwAAgAMAIOEBAgAAAAHjAQIAAAABAgAAAE8AIBMAAO0DACADAAAATwAgEwAA7QMAIBQAAOwDACABDAAAxAQAMAIAAABPACAMAADsAwAgAgAAAJoDACAMAADrAwAgAuEBAgDqAgAh4wECAOoCACEDMwAA_gIAIOEBAgDqAgAh4wECAOoCACEDMwAAgAMAIOEBAgAAAAHjAQIAAAABHTAAAKQDACAxAAClAwAgNQAApwMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5AECAAAAAeUBAgAAAAHmAQEAAAAB5wEBAAAAAegBAQAAAAHpAQEAAAAB6gEAAJ4DACDrAQAAnwMAIOwBAQAAAAHtAQEAAAAB7gEBAAAAAe8BAACgAwAg8AEAAKEDACDxAQAAogMAIPIBAACjAwAg8wGAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH5ASAAAAABAgAAAEkAIBMAAPYDACADAAAASQAgEwAA9gMAIBQAAPUDACABDAAAwwQAMAIAAABJACAMAAD1AwAgAgAAALcDACAMAAD0AwAgGr4BAgDqAgAhxAFAAOkCACHQAQEA6AIAIdoBQADpAgAh4wECAOoCACHkAQIA6gIAIeUBAgDrAgAh5gEBAOgCACHnAQEA6AIAIegBAQDoAgAh6QEBAOgCACHqAQAAhwMAIOsBAACIAwAg7AEBAOgCACHtAQEA6AIAIe4BAQDoAgAh7wEAAIkDACDwAQAAigMAIPEBAACLAwAg8gEAAIwDACDzAYAAAAAB9AEBAOgCACH1AQEA6AIAIfYBAQDoAgAh9wEBAOgCACH5ASAAjQMAIR0wAACOAwAgMQAAjwMAIDUAAJEDACC-AQIA6gIAIcQBQADpAgAh0AEBAOgCACHaAUAA6QIAIeMBAgDqAgAh5AECAOoCACHlAQIA6wIAIeYBAQDoAgAh5wEBAOgCACHoAQEA6AIAIekBAQDoAgAh6gEAAIcDACDrAQAAiAMAIOwBAQDoAgAh7QEBAOgCACHuAQEA6AIAIe8BAACJAwAg8AEAAIoDACDxAQAAiwMAIPIBAACMAwAg8wGAAAAAAfQBAQDoAgAh9QEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-QEgAI0DACEdMAAApAMAIDEAAKUDACA1AACnAwAgvgECAAAAAcQBQAAAAAHQAQEAAAAB2gFAAAAAAeMBAgAAAAHkAQIAAAAB5QECAAAAAeYBAQAAAAHnAQEAAAAB6AEBAAAAAekBAQAAAAHqAQAAngMAIOsBAACfAwAg7AEBAAAAAe0BAQAAAAHuAQEAAAAB7wEAAKADACDwAQAAoQMAIPEBAACiAwAg8gEAAKMDACDzAYAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfkBIAAAAAEQNgAA3AMAIDcAANsDACC-AQIAAAABxAFAAAAAAdABAQAAAAHaAUAAAAAB4wECAAAAAeYBAQAAAAHnAQEAAAAB6AEBAAAAAfYBAQAAAAH3AQEAAAAB-QEgAAAAAf0BAQAAAAH-AQEAAAAB_wEBAAAAAQIAAAA_ACATAACCBAAgAwAAAD8AIBMAAIIEACAUAACBBAAgAQwAAMIEADAVLwAAyAIAIDYAAMwCACA3AADQAgAguwEAAM8CADC8AQAAPQAQvQEAAM8CADC-AQIAAAABxAFAALACACHQAQEArgIAIdoBQACwAgAh4wECAK0CACHmAQEArgIAIecBAQAAAAHoAQEArgIAIfYBAQCuAgAh9wEBAK4CACH5ASAAxQIAIf0BAQCuAgAh_gEBAK4CACH_AQEArgIAIYACAgC2AgAhAgAAAD8AIAwAAIEEACACAAAA_wMAIAwAAIAEACASuwEAAP4DADC8AQAA_wMAEL0BAAD-AwAwvgECAK0CACHEAUAAsAIAIdABAQCuAgAh2gFAALACACHjAQIArQIAIeYBAQCuAgAh5wEBAK4CACHoAQEArgIAIfYBAQCuAgAh9wEBAK4CACH5ASAAxQIAIf0BAQCuAgAh_gEBAK4CACH_AQEArgIAIYACAgC2AgAhErsBAAD-AwAwvAEAAP8DABC9AQAA_gMAML4BAgCtAgAhxAFAALACACHQAQEArgIAIdoBQACwAgAh4wECAK0CACHmAQEArgIAIecBAQCuAgAh6AEBAK4CACH2AQEArgIAIfcBAQCuAgAh-QEgAMUCACH9AQEArgIAIf4BAQCuAgAh_wEBAK4CACGAAgIAtgIAIQ6-AQIA6gIAIcQBQADpAgAh0AEBAOgCACHaAUAA6QIAIeMBAgDqAgAh5gEBAOgCACHnAQEA6AIAIegBAQDoAgAh9gEBAOgCACH3AQEA6AIAIfkBIACNAwAh_QEBAOgCACH-AQEA6AIAIf8BAQDoAgAhEDYAAMQDACA3AADDAwAgvgECAOoCACHEAUAA6QIAIdABAQDoAgAh2gFAAOkCACHjAQIA6gIAIeYBAQDoAgAh5wEBAOgCACHoAQEA6AIAIfYBAQDoAgAh9wEBAOgCACH5ASAAjQMAIf0BAQDoAgAh_gEBAOgCACH_AQEA6AIAIRA2AADcAwAgNwAA2wMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5gEBAAAAAecBAQAAAAHoAQEAAAAB9gEBAAAAAfcBAQAAAAH5ASAAAAAB_QEBAAAAAf4BAQAAAAH_AQEAAAABBBMAAPcDADCWAgAA-AMAMJgCAAD6AwAgnAIAAPsDADAEEwAA7gMAMJYCAADvAwAwmAIAAPEDACCcAgAAswMAMAQTAADlAwAwlgIAAOYDADCYAgAA6AMAIJwCAACWAwAwAAAABjAAAIsEACAxAACMBAAgMgAAigQAIDUAAIgEACDlAQAA4gIAIPgBAADiAgAgBTgAAIYEACA5AACHBAAgOgAAiAQAIIMCAADiAgAghAIAAOICACAELwAAigQAIDYAAIcEACA3AACNBAAggAIAAOICACACMAAAiwQAIDYAAIcEACAAAAAAAAABmQJAAAAAAQUTAAC9BAAgFAAAwAQAIJYCAAC-BAAglwIAAL8EACCcAgAAAQAgAxMAAL0EACCWAgAAvgQAIJwCAAABACAAAAAAAAGZAgAAAJECAgsTAACqBAAwFAAArwQAMJYCAACrBAAwlwIAAKwEADCYAgAArQQAIJkCAACuBAAwmgIAAK4EADCbAgAArgQAMJwCAACuBAAwnQIAALAEADCeAgAAsQQAMAsTAACeBAAwFAAAowQAMJYCAACfBAAwlwIAAKAEADCYAgAAoQQAIJkCAACiBAAwmgIAAKIEADCbAgAAogQAMJwCAACiBAAwnQIAAKQEADCeAgAApQQAMAa-AQIAAAABwAEBAAAAAcEBAQAAAAHCAQEAAAABwwEBAAAAAcQBQAAAAAECAAAACQAgEwAAqQQAIAMAAAAJACATAACpBAAgFAAAqAQAIAEMAAC8BAAwCwMAAN8CACC7AQAA3gIAMLwBAAAHABC9AQAA3gIAML4BAgAAAAG_AQIAtgIAIcABAQCuAgAhwQEBAK4CACHCAQEArgIAIcMBAQCuAgAhxAFAALACACECAAAACQAgDAAAqAQAIAIAAACmBAAgDAAApwQAIAq7AQAApQQAMLwBAACmBAAQvQEAAKUEADC-AQIArQIAIb8BAgC2AgAhwAEBAK4CACHBAQEArgIAIcIBAQCuAgAhwwEBAK4CACHEAUAAsAIAIQq7AQAApQQAMLwBAACmBAAQvQEAAKUEADC-AQIArQIAIb8BAgC2AgAhwAEBAK4CACHBAQEArgIAIcIBAQCuAgAhwwEBAK4CACHEAUAAsAIAIQa-AQIA6gIAIcABAQDoAgAhwQEBAOgCACHCAQEA6AIAIcMBAQDoAgAhxAFAAOkCACEGvgECAOoCACHAAQEA6AIAIcEBAQDoAgAhwgEBAOgCACHDAQEA6AIAIcQBQADpAgAhBr4BAgAAAAHAAQEAAAABwQEBAAAAAcIBAQAAAAHDAQEAAAABxAFAAAAAAQa-AQIAAAABxAFAAAAAAdcBAQAAAAGMAgEAAAABjQJAAAAAAY4CQAAAAAECAAAABQAgEwAAtQQAIAMAAAAFACATAAC1BAAgFAAAtAQAIAEMAAC7BAAwCwMAAOECACC7AQAA4AIAMLwBAAADABC9AQAA4AIAML4BAgAAAAG_AQIArQIAIcQBQACwAgAh1wEBAK4CACGMAgEAAAABjQJAALACACGOAkAA2wIAIQIAAAAFACAMAAC0BAAgAgAAALIEACAMAACzBAAgCrsBAACxBAAwvAEAALIEABC9AQAAsQQAML4BAgCtAgAhvwECAK0CACHEAUAAsAIAIdcBAQCuAgAhjAIBAK4CACGNAkAAsAIAIY4CQADbAgAhCrsBAACxBAAwvAEAALIEABC9AQAAsQQAML4BAgCtAgAhvwECAK0CACHEAUAAsAIAIdcBAQCuAgAhjAIBAK4CACGNAkAAsAIAIY4CQADbAgAhBr4BAgDqAgAhxAFAAOkCACHXAQEA6AIAIYwCAQDoAgAhjQJAAOkCACGOAkAAkwQAIQa-AQIA6gIAIcQBQADpAgAh1wEBAOgCACGMAgEA6AIAIY0CQADpAgAhjgJAAJMEACEGvgECAAAAAcQBQAAAAAHXAQEAAAABjAIBAAAAAY0CQAAAAAGOAkAAAAABBBMAAKoEADCWAgAAqwQAMJgCAACtBAAgnAIAAK4EADAEEwAAngQAMJYCAACfBAAwmAIAAKEEACCcAgAAogQAMAAAAwQAALgEACAFAAC5BAAgkwIAAOICACAGvgECAAAAAcQBQAAAAAHXAQEAAAABjAIBAAAAAY0CQAAAAAGOAkAAAAABBr4BAgAAAAHAAQEAAAABwQEBAAAAAcIBAQAAAAHDAQEAAAABxAFAAAAAAQoFAAC3BAAgvgECAAAAAcQBQAAAAAHQAQEAAAAB0gEBAAAAAdoBQAAAAAGPAgEAAAABkQIAAACRAgKSAiAAAAABkwJAAAAAAQIAAAABACATAAC9BAAgAwAAAAsAIBMAAL0EACAUAADBBAAgDAAAAAsAIAUAAJ0EACAMAADBBAAgvgECAOoCACHEAUAA6QIAIdABAQDoAgAh0gEBAOgCACHaAUAA6QIAIY8CAQDoAgAhkQIAAJsEkQIikgIgAI0DACGTAkAAkwQAIQoFAACdBAAgvgECAOoCACHEAUAA6QIAIdABAQDoAgAh0gEBAOgCACHaAUAA6QIAIY8CAQDoAgAhkQIAAJsEkQIikgIgAI0DACGTAkAAkwQAIQ6-AQIAAAABxAFAAAAAAdABAQAAAAHaAUAAAAAB4wECAAAAAeYBAQAAAAHnAQEAAAAB6AEBAAAAAfYBAQAAAAH3AQEAAAAB-QEgAAAAAf0BAQAAAAH-AQEAAAAB_wEBAAAAARq-AQIAAAABxAFAAAAAAdABAQAAAAHaAUAAAAAB4wECAAAAAeQBAgAAAAHlAQIAAAAB5gEBAAAAAecBAQAAAAHoAQEAAAAB6QEBAAAAAeoBAACeAwAg6wEAAJ8DACDsAQEAAAAB7QEBAAAAAe4BAQAAAAHvAQAAoAMAIPABAAChAwAg8QEAAKIDACDyAQAAowMAIPMBgAAAAAH0AQEAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-QEgAAAAAQLhAQIAAAAB4wECAAAAAQs5AACEBAAgOgAAhQQAIL4BAgAAAAHEAUAAAAAB2AEBAAAAAYECAQAAAAGCAgIAAAABgwICAAAAAYQCAgAAAAGFAgEAAAABhgIBAAAAAQIAAAA7ACATAADFBAAgBb4BAgAAAAHQAQEAAAAB4wECAAAAAecBAQAAAAHpAQEAAAABGr4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5QECAAAAAeYBAQAAAAHnAQEAAAAB6AEBAAAAAekBAQAAAAHqAQAAngMAIOsBAACfAwAg7AEBAAAAAe0BAQAAAAHuAQEAAAAB7wEAAKADACDwAQAAoQMAIPEBAACiAwAg8gEAAKMDACDzAYAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAgAAAAH5ASAAAAABAwAAAEEAIBMAAMUEACAUAADLBAAgDQAAAEEAIAwAAMsEACA5AADjAwAgOgAA5AMAIL4BAgDqAgAhxAFAAOkCACHYAQEA6AIAIYECAQDoAgAhggICAOoCACGDAgIA6wIAIYQCAgDrAgAhhQIBAOgCACGGAgEA6AIAIQs5AADjAwAgOgAA5AMAIL4BAgDqAgAhxAFAAOkCACHYAQEA6AIAIYECAQDoAgAhggICAOoCACGDAgIA6wIAIYQCAgDrAgAhhQIBAOgCACGGAgEA6AIAIREvAADaAwAgNgAA3AMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5gEBAAAAAecBAQAAAAHoAQEAAAAB9gEBAAAAAfcBAQAAAAH5ASAAAAAB_QEBAAAAAf4BAQAAAAH_AQEAAAABgAICAAAAAQIAAAA_ACATAADMBAAgGr4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5AECAAAAAeYBAQAAAAHnAQEAAAAB6AEBAAAAAekBAQAAAAHqAQAAngMAIOsBAACfAwAg7AEBAAAAAe0BAQAAAAHuAQEAAAAB7wEAAKADACDwAQAAoQMAIPEBAACiAwAg8gEAAKMDACDzAYAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAgAAAAH5ASAAAAABAwAAAD0AIBMAAMwEACAUAADRBAAgEwAAAD0AIAwAANEEACAvAADCAwAgNgAAxAMAIL4BAgDqAgAhxAFAAOkCACHQAQEA6AIAIdoBQADpAgAh4wECAOoCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-QEgAI0DACH9AQEA6AIAIf4BAQDoAgAh_wEBAOgCACGAAgIA6wIAIREvAADCAwAgNgAAxAMAIL4BAgDqAgAhxAFAAOkCACHQAQEA6AIAIdoBQADpAgAh4wECAOoCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-QEgAI0DACH9AQEA6AIAIf4BAQDoAgAh_wEBAOgCACGAAgIA6wIAIQs4AACDBAAgOgAAhQQAIL4BAgAAAAHEAUAAAAAB2AEBAAAAAYECAQAAAAGCAgIAAAABgwICAAAAAYQCAgAAAAGFAgEAAAABhgIBAAAAAQIAAAA7ACATAADSBAAgBzAAALsDACC-AQIAAAAB0AEBAAAAAeMBAgAAAAHkAQIAAAAB5wEBAAAAAekBAQAAAAECAAAARQAgEwAA1AQAIBEvAADaAwAgNwAA2wMAIL4BAgAAAAHEAUAAAAAB0AEBAAAAAdoBQAAAAAHjAQIAAAAB5gEBAAAAAecBAQAAAAHoAQEAAAAB9gEBAAAAAfcBAQAAAAH5ASAAAAAB_QEBAAAAAf4BAQAAAAH_AQEAAAABgAICAAAAAQIAAAA_ACATAADWBAAgAuIBAgAAAAHjAQIAAAABAwAAAEEAIBMAANIEACAUAADbBAAgDQAAAEEAIAwAANsEACA4AADiAwAgOgAA5AMAIL4BAgDqAgAhxAFAAOkCACHYAQEA6AIAIYECAQDoAgAhggICAOoCACGDAgIA6wIAIYQCAgDrAgAhhQIBAOgCACGGAgEA6AIAIQs4AADiAwAgOgAA5AMAIL4BAgDqAgAhxAFAAOkCACHYAQEA6AIAIYECAQDoAgAhggICAOoCACGDAgIA6wIAIYQCAgDrAgAhhQIBAOgCACGGAgEA6AIAIQMAAABDACATAADUBAAgFAAA3gQAIAkAAABDACAMAADeBAAgMAAArQMAIL4BAgDqAgAh0AEBAOgCACHjAQIA6gIAIeQBAgDqAgAh5wEBAOgCACHpAQEA6AIAIQcwAACtAwAgvgECAOoCACHQAQEA6AIAIeMBAgDqAgAh5AECAOoCACHnAQEA6AIAIekBAQDoAgAhAwAAAD0AIBMAANYEACAUAADhBAAgEwAAAD0AIAwAAOEEACAvAADCAwAgNwAAwwMAIL4BAgDqAgAhxAFAAOkCACHQAQEA6AIAIdoBQADpAgAh4wECAOoCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-QEgAI0DACH9AQEA6AIAIf4BAQDoAgAh_wEBAOgCACGAAgIA6wIAIREvAADCAwAgNwAAwwMAIL4BAgDqAgAhxAFAAOkCACHQAQEA6AIAIdoBQADpAgAh4wECAOoCACHmAQEA6AIAIecBAQDoAgAh6AEBAOgCACH2AQEA6AIAIfcBAQDoAgAh-QEgAI0DACH9AQEA6AIAIf4BAQDoAgAh_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_GQBAGgBBGwBCHABDAAAAAAAFBgA_GQBAGgBBGwBCHABDAjMAGzQAGAIzABs0ABgFBgBIGQBJGgBKGwBLHABMAAAAAAAFBgBIGQBJGgBKGwBLHABMAAAABQYAUhkAUxoAVBsAVRwAVgAAAAAABQYAUhkAUxoAVBsAVRwAVgAAAAUGAFwZAF0aAF4bAF8cAGAAAAAAAAUGAFwZAF0aAF4bAF8cAGABA4sCAQEDkQIBBQYAZRkAZhoAZxsAaBwAaQAAAAAABQYAZRkAZhoAZxsAaBwAaQcCAQgPAQkRAQoSAQsTAQ0VAQ4XBQ8YBhAaAREcBRIdBxUeARYfARcgBR0jCB4kDh8lAiAmAiEnAiIoAiMpAiQrAiUtBSYuDycwAigyBSkzECo0Ais1Aiw2BS05ES46Fzs8GDxbGD1dGD5eGD9fGEBhGEFjBUJkIUNmGERoBUVpIkZqGEdrGEhsBUlvI0pwKUtxGUxyGU1zGU50GU91GVB3GVF5BVJ6KlN9GVR_BVWAAStWggEZV4MBGViEAQVZhwEsWogBMluJARpcigEaXYsBGl6MARpfjQEaYI8BGmGRAQVikgEzY5QBGmSWAQVllwE0ZpgBGmeZARpomgEFaZ0BNWqeATtrnwEbbKABG22hARtuogEbb6MBG3ClARtxpwEFcqgBPHOsARt0rgEFda8BPXayARt3swEbeLQBBXm3AT56uAFEe7kBHHy6ARx9uwEcfrwBHH-9ARyAAb8BHIEBwQEFggHCAUWDAcQBHIQBxgEFhQHHAUaGAcgBHIcByQEciAHKAQWJAc0BR4oBzgFNiwHQAU6MAdEBTo0B1AFOjgHVAU6PAdYBTpAB2AFOkQHaAQWSAdsBT5MB3QFOlAHfAQWVAeABUJYB4QFOlwHiAU6YAeMBBZkB5gFRmgHnAVebAekBWJwB6gFYnQHtAVieAe4BWJ8B7wFYoAHxAVihAfMBBaIB9AFZowH2AVikAfgBBaUB-QFapgH6AVinAfsBWKgB_AEFqQH_AVuqAYACYasBgQIDrAGCAgOtAYMCA64BhAIDrwGFAgOwAYcCA7EBiQIFsgGKAmKzAY0CA7QBjwIFtQGQAmO2AZICA7cBkwIDuAGUAgW5AZcCZLoBmAJq" +}; +async function decodeBase64AsWasm(wasmBase64) { + const { Buffer: Buffer2 } = await import("node:buffer"); + const wasmArray = Buffer2.from(wasmBase64, "base64"); + return new WebAssembly.Module(wasmArray); +} +__name(decodeBase64AsWasm, "decodeBase64AsWasm"); +config2.compilerWasm = { + getRuntime: /* @__PURE__ */ __name(async () => await import("./query_compiler_fast_bg.postgresql-RWS5SSGB.js"), "getRuntime"), + getQueryCompilerWasmModule: /* @__PURE__ */ __name(async () => { + const { wasm } = await import("./query_compiler_fast_bg.postgresql.wasm-base64-5YP3ZLAU.js"); + return await decodeBase64AsWasm(wasm); + }, "getQueryCompilerWasmModule"), + importName: "./query_compiler_fast_bg.js" +}; +function getPrismaClientClass() { + return runtime.getPrismaClient(config2); +} +__name(getPrismaClientClass, "getPrismaClientClass"); + +// dist/generated/prisma/internal/prismaNamespace.js +var prismaNamespace_exports = {}; +__export(prismaNamespace_exports, { + AdminUserScalarFieldEnum: () => AdminUserScalarFieldEnum, + AnyNull: () => AnyNull3, + AuditLogScalarFieldEnum: () => AuditLogScalarFieldEnum, + CategoryScalarFieldEnum: () => CategoryScalarFieldEnum, + ContactMessageScalarFieldEnum: () => ContactMessageScalarFieldEnum, + DbNull: () => DbNull3, + Decimal: () => Decimal3, + JsonNull: () => JsonNull3, + JsonNullValueFilter: () => JsonNullValueFilter, + JsonNullValueInput: () => JsonNullValueInput, + MediaScalarFieldEnum: () => MediaScalarFieldEnum, + ModelName: () => ModelName, + NullTypes: () => NullTypes3, + NullsOrder: () => NullsOrder, + PrismaClientInitializationError: () => PrismaClientInitializationError3, + PrismaClientKnownRequestError: () => PrismaClientKnownRequestError3, + PrismaClientRustPanicError: () => PrismaClientRustPanicError3, + PrismaClientUnknownRequestError: () => PrismaClientUnknownRequestError3, + PrismaClientValidationError: () => PrismaClientValidationError3, + ProductGroupScalarFieldEnum: () => ProductGroupScalarFieldEnum, + ProductImageScalarFieldEnum: () => ProductImageScalarFieldEnum, + ProductScalarFieldEnum: () => ProductScalarFieldEnum, + QueryMode: () => QueryMode, + RefreshTokenScalarFieldEnum: () => RefreshTokenScalarFieldEnum, + SiteSectionScalarFieldEnum: () => SiteSectionScalarFieldEnum, + SortOrder: () => SortOrder, + Sql: () => Sql3, + TransactionIsolationLevel: () => TransactionIsolationLevel, + defineExtension: () => defineExtension, + empty: () => empty3, + getExtensionContext: () => getExtensionContext, + join: () => join3, + prismaVersion: () => prismaVersion, + raw: () => raw3, + sql: () => sql +}); +var runtime2 = __toESM(require_client(), 1); +var PrismaClientKnownRequestError3 = runtime2.PrismaClientKnownRequestError; +var PrismaClientUnknownRequestError3 = runtime2.PrismaClientUnknownRequestError; +var PrismaClientRustPanicError3 = runtime2.PrismaClientRustPanicError; +var PrismaClientInitializationError3 = runtime2.PrismaClientInitializationError; +var PrismaClientValidationError3 = runtime2.PrismaClientValidationError; +var sql = runtime2.sqltag; +var empty3 = runtime2.empty; +var join3 = runtime2.join; +var raw3 = runtime2.raw; +var Sql3 = runtime2.Sql; +var Decimal3 = runtime2.Decimal; +var getExtensionContext = runtime2.Extensions.getExtensionContext; +var prismaVersion = { + client: "7.10.1", + engine: "d1b3f377ca835d73fd50954a5e22128b9ebdd6b8" +}; +var NullTypes3 = { + DbNull: runtime2.NullTypes.DbNull, + JsonNull: runtime2.NullTypes.JsonNull, + AnyNull: runtime2.NullTypes.AnyNull +}; +var DbNull3 = runtime2.DbNull; +var JsonNull3 = runtime2.JsonNull; +var AnyNull3 = runtime2.AnyNull; +var ModelName = { + AdminUser: "AdminUser", + RefreshToken: "RefreshToken", + Media: "Media", + Category: "Category", + ProductGroup: "ProductGroup", + Product: "Product", + ProductImage: "ProductImage", + SiteSection: "SiteSection", + ContactMessage: "ContactMessage", + AuditLog: "AuditLog" +}; +var TransactionIsolationLevel = runtime2.makeStrictEnum({ + ReadUncommitted: "ReadUncommitted", + ReadCommitted: "ReadCommitted", + RepeatableRead: "RepeatableRead", + Serializable: "Serializable" +}); +var AdminUserScalarFieldEnum = { + id: "id", + phone: "phone", + name: "name", + passwordHash: "passwordHash", + role: "role", + isActive: "isActive", + lastLoginAt: "lastLoginAt", + createdAt: "createdAt", + updatedAt: "updatedAt" +}; +var RefreshTokenScalarFieldEnum = { + id: "id", + userId: "userId", + tokenHash: "tokenHash", + expiresAt: "expiresAt", + revokedAt: "revokedAt", + userAgent: "userAgent", + createdAt: "createdAt" +}; +var MediaScalarFieldEnum = { + id: "id", + key: "key", + mime: "mime", + size: "size", + width: "width", + height: "height", + alt: "alt", + originalName: "originalName", + createdAt: "createdAt" +}; +var CategoryScalarFieldEnum = { + id: "id", + slug: "slug", + code: "code", + name: "name", + nameEn: "nameEn", + shortDesc: "shortDesc", + fullDesc: "fullDesc", + icon: "icon", + coverImageId: "coverImageId", + sortOrder: "sortOrder", + isPublished: "isPublished", + seoTitle: "seoTitle", + seoDescription: "seoDescription", + createdAt: "createdAt", + updatedAt: "updatedAt" +}; +var ProductGroupScalarFieldEnum = { + id: "id", + categoryId: "categoryId", + slug: "slug", + name: "name", + desc: "desc", + sortOrder: "sortOrder" +}; +var ProductScalarFieldEnum = { + id: "id", + categoryId: "categoryId", + groupId: "groupId", + code: "code", + slug: "slug", + name: "name", + nameEn: "nameEn", + desc: "desc", + specs: "specs", + variants: "variants", + details: "details", + brand: "brand", + origin: "origin", + sizes: "sizes", + standards: "standards", + features: "features", + applications: "applications", + attributes: "attributes", + packaging: "packaging", + minOrder: "minOrder", + seoTitle: "seoTitle", + seoDescription: "seoDescription", + imageId: "imageId", + sortOrder: "sortOrder", + isPublished: "isPublished", + createdAt: "createdAt", + updatedAt: "updatedAt" +}; +var ProductImageScalarFieldEnum = { + productId: "productId", + mediaId: "mediaId", + sortOrder: "sortOrder" +}; +var SiteSectionScalarFieldEnum = { + key: "key", + data: "data", + updatedById: "updatedById", + updatedAt: "updatedAt" +}; +var ContactMessageScalarFieldEnum = { + id: "id", + name: "name", + org: "org", + phone: "phone", + message: "message", + status: "status", + ip: "ip", + userAgent: "userAgent", + createdAt: "createdAt" +}; +var AuditLogScalarFieldEnum = { + id: "id", + userId: "userId", + action: "action", + entity: "entity", + entityId: "entityId", + summary: "summary", + createdAt: "createdAt" +}; +var SortOrder = { + asc: "asc", + desc: "desc" +}; +var JsonNullValueInput = { + JsonNull: JsonNull3 +}; +var QueryMode = { + default: "default", + insensitive: "insensitive" +}; +var NullsOrder = { + first: "first", + last: "last" +}; +var JsonNullValueFilter = { + DbNull: DbNull3, + JsonNull: JsonNull3, + AnyNull: AnyNull3 +}; +var defineExtension = runtime2.Extensions.defineExtension; + +// dist/generated/prisma/client.js +globalThis["__dirname"] = path.dirname(fileURLToPath(import.meta.url)); +var PrismaClient = getPrismaClientClass(); + +// dist/prisma/prisma.service.js +var __decorate = function(decorators, target, key, desc) { + var c5 = arguments.length, r5 = c5 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r5 = Reflect.decorate(decorators, target, key, desc); + else for (var i5 = decorators.length - 1; i5 >= 0; i5--) if (d5 = decorators[i5]) r5 = (c5 < 3 ? d5(r5) : c5 > 3 ? d5(target, key, r5) : d5(target, key)) || r5; + return c5 > 3 && r5 && Object.defineProperty(target, key, r5), r5; +}; +var __metadata = function(k5, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k5, v); +}; +var createPrismaClient = /* @__PURE__ */ __name(() => new PrismaClient({ adapter: new PrismaPgAdapterFactory({ connectionString: env.DATABASE_URL }) }), "createPrismaClient"); +var PrismaService = class PrismaService2 extends PrismaClient { + static { + __name(this, "PrismaService"); + } + constructor() { + super({ adapter: new PrismaPgAdapterFactory({ connectionString: env.DATABASE_URL }) }); + } + async onModuleDestroy() { + await this.$disconnect(); + } +}; +PrismaService = __decorate([ + Injectable(), + __metadata("design:paramtypes", []) +], PrismaService); +var PrismaModule = class PrismaModule2 { + static { + __name(this, "PrismaModule"); + } +}; +PrismaModule = __decorate([ + Global(), + Module({ providers: [PrismaService], exports: [PrismaService] }) +], PrismaModule); + +// dist/auth/auth.service.js +init_common(); +import { createHash, randomBytes } from "node:crypto"; + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/index.js +var import_jsonwebtoken2 = __toESM(require_jsonwebtoken(), 1); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/interfaces/jwt-module-options.interface.js +var JwtSecretRequestType; +(function(JwtSecretRequestType2) { + JwtSecretRequestType2[JwtSecretRequestType2["SIGN"] = 0] = "SIGN"; + JwtSecretRequestType2[JwtSecretRequestType2["VERIFY"] = 1] = "VERIFY"; +})(JwtSecretRequestType || (JwtSecretRequestType = {})); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/jwt.errors.js +var WrongSecretProviderError = class extends Error { + static { + __name(this, "WrongSecretProviderError"); + } +}; + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/jwt.module.js +init_common(); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/jwt.constants.js +var JWT_MODULE_OPTIONS = "JWT_MODULE_OPTIONS"; + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/jwt.providers.js +function createJwtProvider(options) { + return [{ provide: JWT_MODULE_OPTIONS, useValue: options || {} }]; +} +__name(createJwtProvider, "createJwtProvider"); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/jwt.service.js +init_common(); +var import_jsonwebtoken = __toESM(require_jsonwebtoken(), 1); +var __decorate2 = function(decorators, target, key, desc) { + var c5 = arguments.length, r5 = c5 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r5 = Reflect.decorate(decorators, target, key, desc); + else for (var i5 = decorators.length - 1; i5 >= 0; i5--) if (d5 = decorators[i5]) r5 = (c5 < 3 ? d5(r5) : c5 > 3 ? d5(target, key, r5) : d5(target, key)) || r5; + return c5 > 3 && r5 && Object.defineProperty(target, key, r5), r5; +}; +var __metadata2 = function(k5, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k5, v); +}; +var __param = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var JwtService = class JwtService2 { + static { + __name(this, "JwtService"); + } + constructor(options = {}) { + this.options = options; + this.logger = new Logger("JwtService"); + } + sign(payload, options) { + const signOptions = this.mergeJwtOptions({ ...options }, "signOptions"); + const secret = this.getSecretKey(payload, options, "privateKey", JwtSecretRequestType.SIGN); + if (secret instanceof Promise) { + secret.catch(() => { + }); + this.logger.warn('For async version of "secretOrKeyProvider", please use "signAsync".'); + throw new WrongSecretProviderError(); + } + const allowedSignOptKeys = ["secret", "privateKey"]; + const signOptKeys = Object.keys(signOptions); + if (typeof payload === "string" && signOptKeys.some((k5) => !allowedSignOptKeys.includes(k5))) { + throw new Error("Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")); + } + return import_jsonwebtoken.default.sign(payload, secret, signOptions); + } + signAsync(payload, options) { + const signOptions = this.mergeJwtOptions({ ...options }, "signOptions"); + const secret = this.getSecretKey(payload, options, "privateKey", JwtSecretRequestType.SIGN); + const allowedSignOptKeys = ["secret", "privateKey"]; + const signOptKeys = Object.keys(signOptions); + if (typeof payload === "string" && signOptKeys.some((k5) => !allowedSignOptKeys.includes(k5))) { + if (secret instanceof Promise) { + secret.catch(() => { + }); + } + throw new Error("Payload as string is not allowed with the following sign options: " + signOptKeys.join(", ")); + } + return new Promise((resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => { + import_jsonwebtoken.default.sign(payload, scrt, signOptions, (err, encoded) => err ? reject(err) : resolve(encoded)); + }).catch(reject)); + } + verify(token, options) { + const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions"); + const secret = this.getSecretKey(token, options, "publicKey", JwtSecretRequestType.VERIFY); + if (secret instanceof Promise) { + secret.catch(() => { + }); + this.logger.warn('For async version of "secretOrKeyProvider", please use "verifyAsync".'); + throw new WrongSecretProviderError(); + } + return import_jsonwebtoken.default.verify(token, secret, verifyOptions); + } + verifyAsync(token, options) { + const verifyOptions = this.mergeJwtOptions({ ...options }, "verifyOptions"); + const secret = this.getSecretKey(token, options, "publicKey", JwtSecretRequestType.VERIFY); + return new Promise((resolve, reject) => Promise.resolve().then(() => secret).then((scrt) => { + import_jsonwebtoken.default.verify(token, scrt, verifyOptions, (err, decoded) => err ? reject(err) : resolve(decoded)); + }).catch(reject)); + } + decode(token, options) { + return import_jsonwebtoken.default.decode(token, options); + } + mergeJwtOptions(options, key) { + delete options.secret; + if (key === "signOptions") { + delete options.privateKey; + } else { + delete options.publicKey; + } + return options ? { ...this.options[key] || {}, ...options } : this.options[key]; + } + overrideSecretFromOptions(secret) { + if (this.options.secretOrPrivateKey) { + this.logger.warn(`"secretOrPrivateKey" has been deprecated, please use the new explicit "secret" or use "secretOrKeyProvider" or "privateKey"/"publicKey" exclusively.`); + secret = this.options.secretOrPrivateKey; + } + return secret; + } + getSecretKey(token, options, key, secretRequestType) { + const secret = this.options.secretOrKeyProvider ? this.options.secretOrKeyProvider(secretRequestType, token, options) : options?.secret || this.options.secret || (key === "privateKey" ? options?.privateKey || this.options.privateKey : options?.publicKey || this.options.publicKey) || this.options[key]; + return secret instanceof Promise ? secret.then((sec) => this.overrideSecretFromOptions(sec)) : this.overrideSecretFromOptions(secret); + } +}; +JwtService = __decorate2([ + Injectable(), + __param(0, Optional()), + __param(0, Inject(JWT_MODULE_OPTIONS)), + __metadata2("design:paramtypes", [Object]) +], JwtService); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/jwt.module.js +var __decorate3 = function(decorators, target, key, desc) { + var c5 = arguments.length, r5 = c5 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r5 = Reflect.decorate(decorators, target, key, desc); + else for (var i5 = decorators.length - 1; i5 >= 0; i5--) if (d5 = decorators[i5]) r5 = (c5 < 3 ? d5(r5) : c5 > 3 ? d5(target, key, r5) : d5(target, key)) || r5; + return c5 > 3 && r5 && Object.defineProperty(target, key, r5), r5; +}; +var JwtModule_1; +var JwtModule = JwtModule_1 = class JwtModule2 { + static { + __name(this, "JwtModule"); + } + static register(options) { + return { + module: JwtModule_1, + global: options.global, + providers: createJwtProvider(options) + }; + } + static registerAsync(options) { + return { + module: JwtModule_1, + global: options.global, + imports: options.imports || [], + providers: [ + ...this.createAsyncProviders(options), + ...options.extraProviders ?? [] + ] + }; + } + static createAsyncProviders(options) { + if (options.useExisting || options.useFactory) { + return [this.createAsyncOptionsProvider(options)]; + } + return [ + this.createAsyncOptionsProvider(options), + { + provide: options.useClass, + useClass: options.useClass + } + ]; + } + static createAsyncOptionsProvider(options) { + if (options.useFactory) { + return { + provide: JWT_MODULE_OPTIONS, + useFactory: options.useFactory, + inject: options.inject || [] + }; + } + return { + provide: JWT_MODULE_OPTIONS, + useFactory: /* @__PURE__ */ __name(async (optionsFactory) => await optionsFactory.createJwtOptions(), "useFactory"), + inject: [options.useExisting || options.useClass] + }; + } +}; +JwtModule = JwtModule_1 = __decorate3([ + Module({ + providers: [JwtService], + exports: [JwtService] + }) +], JwtModule); + +// ../../node_modules/.pnpm/@nestjs+jwt@12.0.3_@nestjs+_facab28c43df169ee1a851fa7198ecfe/node_modules/@nestjs/jwt/dist/index.js +var TokenExpiredError = import_jsonwebtoken2.default.TokenExpiredError; +var NotBeforeError = import_jsonwebtoken2.default.NotBeforeError; +var JsonWebTokenError = import_jsonwebtoken2.default.JsonWebTokenError; + +// dist/auth/auth.service.js +import { hash as hash2, verify } from "@node-rs/argon2"; + +// dist/common/common.module.js +init_common(); +var __decorate4 = function(decorators, target, key, desc) { + var c5 = arguments.length, r5 = c5 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r5 = Reflect.decorate(decorators, target, key, desc); + else for (var i5 = decorators.length - 1; i5 >= 0; i5--) if (d5 = decorators[i5]) r5 = (c5 < 3 ? d5(r5) : c5 > 3 ? d5(target, key, r5) : d5(target, key)) || r5; + return c5 > 3 && r5 && Object.defineProperty(target, key, r5), r5; +}; +var __metadata3 = function(k5, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k5, v); +}; +var AuditService_1; +var RevalidateService_1; +var AuditService = AuditService_1 = class AuditService2 { + static { + __name(this, "AuditService"); + } + prisma; + logger = new Logger(AuditService_1.name); + constructor(prisma) { + this.prisma = prisma; + } + log(userId, action, entity, entityId = "", summary = "") { + this.prisma.auditLog.create({ data: { userId, action, entity, entityId: String(entityId), summary } }).catch((e5) => this.logger.warn(`audit log failed: ${String(e5)}`)); + } +}; +AuditService = AuditService_1 = __decorate4([ + Injectable(), + __metadata3("design:paramtypes", [PrismaService]) +], AuditService); +var RevalidateService = RevalidateService_1 = class RevalidateService2 { + static { + __name(this, "RevalidateService"); + } + logger = new Logger(RevalidateService_1.name); + timer; + trigger() { + if (!env.WEB_REVALIDATE_URL) + return; + clearTimeout(this.timer); + this.timer = setTimeout(() => void this.run(), 1500); + this.timer.unref(); + } + async run() { + try { + const res = await fetch(env.WEB_REVALIDATE_URL, { + method: "POST", + headers: { "x-revalidate-secret": env.REVALIDATE_SECRET ?? "" }, + signal: AbortSignal.timeout(5e3) + }); + if (!res.ok) + this.logger.warn(`site revalidation returned ${res.status}`); + } catch (e5) { + this.logger.warn(`site revalidation failed: ${String(e5)}`); + } + } +}; +RevalidateService = RevalidateService_1 = __decorate4([ + Injectable() +], RevalidateService); +var CommonModule = class CommonModule2 { + static { + __name(this, "CommonModule"); + } +}; +CommonModule = __decorate4([ + Global(), + Module({ + providers: [AuditService, RevalidateService], + exports: [AuditService, RevalidateService] + }) +], CommonModule); + +// dist/auth/auth.service.js +var __decorate5 = function(decorators, target, key, desc) { + var c5 = arguments.length, r5 = c5 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d5; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r5 = Reflect.decorate(decorators, target, key, desc); + else for (var i5 = decorators.length - 1; i5 >= 0; i5--) if (d5 = decorators[i5]) r5 = (c5 < 3 ? d5(r5) : c5 > 3 ? d5(target, key, r5) : d5(target, key)) || r5; + return c5 > 3 && r5 && Object.defineProperty(target, key, r5), r5; +}; +var __metadata4 = function(k5, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k5, v); +}; +var hashPassword = /* @__PURE__ */ __name((password2) => hash2(password2), "hashPassword"); +var sha256 = /* @__PURE__ */ __name((v) => createHash("sha256").update(v).digest("hex"), "sha256"); +var toUserDto = /* @__PURE__ */ __name((u) => ({ + id: u.id, + phone: u.phone, + name: u.name, + role: u.role, + isActive: u.isActive, + lastLoginAt: u.lastLoginAt?.toISOString() ?? null, + createdAt: u.createdAt.toISOString() +}), "toUserDto"); +var INVALID_LOGIN = "\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u06CC\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0634\u062A\u0628\u0627\u0647 \u0627\u0633\u062A"; +var DUMMY_HASH = hashPassword(randomBytes(16).toString("hex")); +var AuthService = class AuthService2 { + static { + __name(this, "AuthService"); + } + prisma; + jwt; + audit; + constructor(prisma, jwt2, audit) { + this.prisma = prisma; + this.jwt = jwt2; + this.audit = audit; + } + async login(input2, userAgent) { + const user = await this.prisma.adminUser.findUnique({ where: { phone: input2.phone } }); + const ok = await verify(user?.passwordHash ?? await DUMMY_HASH, input2.password).catch(() => false); + if (!user || !ok || !user.isActive) + throw new UnauthorizedException(INVALID_LOGIN); + const updated = await this.prisma.adminUser.update({ + where: { id: user.id }, + data: { lastLoginAt: /* @__PURE__ */ new Date() } + }); + this.audit.log(user.id, "login", "user", user.id, user.phone); + return this.issue(updated, userAgent); + } + async refresh(token, userAgent) { + if (!token) + throw new UnauthorizedException("\u0646\u0634\u0633\u062A \u0634\u0645\u0627 \u0645\u0646\u0642\u0636\u06CC \u0634\u062F\u0647 \u0627\u0633\u062A"); + const stored = await this.prisma.refreshToken.findUnique({ + where: { tokenHash: sha256(token) }, + include: { user: true } + }); + if (!stored) + throw new UnauthorizedException("\u0646\u0634\u0633\u062A \u0634\u0645\u0627 \u0645\u0646\u0642\u0636\u06CC \u0634\u062F\u0647 \u0627\u0633\u062A"); + if (stored.revokedAt) { + await this.revokeAll(stored.userId); + throw new UnauthorizedException("\u0646\u0634\u0633\u062A \u0634\u0645\u0627 \u0645\u0646\u0642\u0636\u06CC \u0634\u062F\u0647 \u0627\u0633\u062A"); + } + if (stored.expiresAt < /* @__PURE__ */ new Date() || !stored.user.isActive) { + throw new UnauthorizedException("\u0646\u0634\u0633\u062A \u0634\u0645\u0627 \u0645\u0646\u0642\u0636\u06CC \u0634\u062F\u0647 \u0627\u0633\u062A"); + } + await this.prisma.refreshToken.update({ + where: { id: stored.id }, + data: { revokedAt: /* @__PURE__ */ new Date() } + }); + return this.issue(stored.user, userAgent); + } + async logout(token) { + if (!token) + return; + await this.prisma.refreshToken.updateMany({ + where: { tokenHash: sha256(token), revokedAt: null }, + data: { revokedAt: /* @__PURE__ */ new Date() } + }); + } + async changePassword(userId, input2) { + const user = await this.prisma.adminUser.findUniqueOrThrow({ where: { id: userId } }); + if (!await verify(user.passwordHash, input2.currentPassword).catch(() => false)) { + throw new BadRequestException("\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0641\u0639\u0644\u06CC \u0627\u0634\u062A\u0628\u0627\u0647 \u0627\u0633\u062A"); + } + await this.prisma.adminUser.update({ + where: { id: userId }, + data: { passwordHash: await hashPassword(input2.newPassword) } + }); + this.audit.log(userId, "change-password", "user", userId, user.phone); + } + async me(userId) { + return toUserDto(await this.prisma.adminUser.findUniqueOrThrow({ where: { id: userId } })); + } + revokeAll(userId) { + return this.prisma.refreshToken.updateMany({ + where: { userId, revokedAt: null }, + data: { revokedAt: /* @__PURE__ */ new Date() } + }); + } + async issue(user, userAgent) { + const payload = { sub: user.id, role: user.role }; + const accessToken = await this.jwt.signAsync(payload); + const refreshToken = randomBytes(48).toString("base64url"); + const refreshExpiresAt = new Date(Date.now() + env.REFRESH_TTL_DAYS * 864e5); + await this.prisma.refreshToken.create({ + data: { + userId: user.id, + tokenHash: sha256(refreshToken), + expiresAt: refreshExpiresAt, + userAgent: userAgent.slice(0, 300) + } + }); + void this.prisma.refreshToken.deleteMany({ where: { expiresAt: { lt: new Date(Date.now() - 864e5) } } }).catch(() => void 0); + return { accessToken, refreshToken, refreshExpiresAt, user: toUserDto(user) }; + } +}; +AuthService = __decorate5([ + Injectable(), + __metadata4("design:paramtypes", [ + PrismaService, + JwtService, + AuditService + ]) +], AuthService); + +// dist/media/s3-storage.js +var import_client_s3 = __toESM(require_dist_cjs16(), 1); +import sharp from "sharp"; +var S3Storage = class { + static { + __name(this, "S3Storage"); + } + client = new import_client_s3.S3Client({ + endpoint: env.S3_ENDPOINT, + region: env.S3_REGION, + forcePathStyle: env.S3_FORCE_PATH_STYLE, + credentials: { accessKeyId: env.S3_ACCESS_KEY, secretAccessKey: env.S3_SECRET_KEY } + }); + bucket = env.S3_BUCKET; + publicUrl(key) { + return `${env.MEDIA_PUBLIC_URL}/${key}`; + } + async put(key, body, contentType) { + await this.client.send(new import_client_s3.PutObjectCommand({ + Bucket: this.bucket, + Key: key, + Body: body, + ContentType: contentType, + CacheControl: "public, max-age=31536000, immutable" + })); + } + async remove(key) { + await this.client.send(new import_client_s3.DeleteObjectCommand({ Bucket: this.bucket, Key: key })); + } + async ensureBucket() { + try { + await this.client.send(new import_client_s3.HeadBucketCommand({ Bucket: this.bucket })); + } catch { + await this.client.send(new import_client_s3.CreateBucketCommand({ Bucket: this.bucket })); + } + try { + await this.client.send(new import_client_s3.PutBucketPolicyCommand({ + Bucket: this.bucket, + Policy: JSON.stringify({ + Version: "2012-10-17", + Statement: [ + { + Effect: "Allow", + Principal: { AWS: ["*"] }, + Action: ["s3:GetObject"], + Resource: [`arn:aws:s3:::${this.bucket}/*`] + } + ] + }) + })); + } catch { + } + } +}; +var ACCEPTED_IMAGE_TYPES = [ + "image/jpeg", + "image/png", + "image/webp", + "image/avif", + "image/gif" +]; +async function toWebp(input2) { + const { data, info } = await sharp(input2).rotate().resize({ width: 2e3, height: 2e3, fit: "inside", withoutEnlargement: true }).webp({ quality: 82 }).toBuffer({ resolveWithObject: true }); + return { data, width: info.width, height: info.height, size: info.size }; +} +__name(toWebp, "toWebp"); + +export { + external_exports, + env, + isProd, + JwtService, + JwtModule, + toIssues, + categoryInputSchema, + productInputSchema, + reorderSchema, + productListQuerySchema, + sectionSchemas, + SECTION_KEYS, + isSectionKey, + normalizeIrMobile, + loginSchema, + changePasswordSchema, + userCreateSchema, + userUpdateSchema, + MESSAGE_STATUSES, + contactInputSchema, + messageUpdateSchema, + mediaUpdateSchema, + prismaNamespace_exports, + createPrismaClient, + PrismaService, + PrismaModule, + AuditService, + RevalidateService, + CommonModule, + hashPassword, + toUserDto, + AuthService, + S3Storage, + ACCEPTED_IMAGE_TYPES, + toWebp +}; diff --git a/apps/api/.output/dist/chunks/chunk-XSOBN2CI.js b/apps/api/.output/dist/chunks/chunk-XSOBN2CI.js new file mode 100644 index 0000000..5526423 --- /dev/null +++ b/apps/api/.output/dist/chunks/chunk-XSOBN2CI.js @@ -0,0 +1,53629 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + BadRequestException, + CATCH_WATERMARK, + CONTROLLER_WATERMARK, + CUSTOM_ROUTE_ARGS_METADATA, + ConsoleLogger, + ENHANCER_KEY_TO_SUBTYPE_MAP, + ENTRY_PROVIDER_WATERMARK, + EXCEPTION_FILTERS_METADATA, + FILTER_CATCH_EXCEPTIONS, + ForbiddenException, + GLOBAL_MODULE_METADATA, + GUARDS_METADATA, + Global, + HEADERS_METADATA, + HOST_METADATA, + HTTP_CODE_METADATA, + HttpException, + HttpStatus, + INJECTABLE_WATERMARK, + INTERCEPTORS_METADATA, + Inject, + Injectable, + InternalServerErrorException, + IntrinsicException, + Logger, + METHOD_METADATA, + MODULE_METADATA, + MODULE_PATH, + Module, + NotFoundException, + OPTIONAL_DEPS_METADATA, + OPTIONAL_PROPERTY_DEPS_METADATA, + Optional, + PARAMTYPES_METADATA, + PATH_METADATA, + PIPES_METADATA, + PROPERTY_DEPS_METADATA, + PayloadTooLargeException, + REDIRECT_METADATA, + RENDER_METADATA, + RESPONSE_PASSTHROUGH_METADATA, + ROUTE_ARGS_METADATA, + RequestMethod, + RouteParamtypes, + SCOPE_OPTIONS_METADATA, + SELF_DECLARED_DEPS_METADATA, + SSE_ABORT_CONTROLLER, + SSE_METADATA, + SSE_OPTIONS_METADATA, + Scope, + SetMetadata, + ShutdownSignal, + StreamableFile, + VERSION_METADATA, + VERSION_NEUTRAL, + VersioningType, + __decorate, + __metadata, + __param, + addLeadingSlash, + clc, + flatten, + init_cli_colors_util, + init_common, + init_constants, + init_dist, + init_load_package_util, + init_parameter_decorator_options_util, + init_random_string_generator_util, + init_route_params_decorator, + init_route_paramtypes_enum, + init_shared_utils, + init_tslib_es6, + isConstructor, + isEmpty, + isEmptyArray, + isFunction, + isNil, + isObject, + isPlainObject, + isString, + isSymbol, + isUndefined, + loadPackage, + loadPackageCached, + mixin, + normalizePath, + randomStringGenerator, + require_ArgumentOutOfRangeError, + require_AsyncAction, + require_AsyncScheduler, + require_AsyncSubject, + require_BehaviorSubject, + require_ConnectableObservable, + require_EmptyError, + require_NotFoundError, + require_Notification, + require_ObjectUnsubscribedError, + require_Observable, + require_OperatorSubscriber, + require_Reflect, + require_ReplaySubject, + require_Scheduler, + require_SequenceError, + require_Subject, + require_Subscriber, + require_Subscription, + require_UnsubscriptionError, + require_args, + require_argsArgArrayOrObject, + require_async, + require_audit, + require_auditTime, + require_buffer, + require_bufferCount, + require_bufferTime, + require_bufferToggle, + require_bufferWhen, + require_catchError, + require_combineAll, + require_combineLatest, + require_combineLatestAll, + require_combineLatestWith, + require_concat, + require_concatAll, + require_concatMap, + require_concatMapTo, + require_concatWith, + require_config, + require_connect, + require_count, + require_createObject, + require_debounce, + require_debounceTime, + require_defaultIfEmpty, + require_delay, + require_delayWhen, + require_dematerialize, + require_distinct, + require_distinctUntilChanged, + require_distinctUntilKeyChanged, + require_elementAt, + require_empty, + require_endWith, + require_every, + require_exhaust, + require_exhaustAll, + require_exhaustMap, + require_expand, + require_filter, + require_finalize, + require_find, + require_findIndex, + require_first, + require_flatMap, + require_from, + require_groupBy, + require_identity, + require_ignoreElements, + require_innerFrom, + require_interval, + require_isArrayLike, + require_isEmpty, + require_isFunction, + require_isScheduler, + require_last, + require_lib, + require_map, + require_mapOneOrManyArgs, + require_mapTo, + require_materialize, + require_max, + require_mergeAll, + require_mergeMap, + require_mergeMapTo, + require_mergeScan, + require_mergeWith, + require_min, + require_multicast, + require_noop, + require_not, + require_observable, + require_observeOn, + require_of, + require_onErrorResumeNext, + require_onErrorResumeNextWith, + require_operators, + require_pairwise, + require_pipe, + require_pluck, + require_publish, + require_publishBehavior, + require_publishLast, + require_publishReplay, + require_race, + require_raceWith, + require_reduce, + require_refCount, + require_repeat, + require_repeatWhen, + require_retry, + require_retryWhen, + require_sample, + require_sampleTime, + require_scan, + require_scheduleIterable, + require_scheduled, + require_sequenceEqual, + require_share, + require_shareReplay, + require_single, + require_skip, + require_skipLast, + require_skipUntil, + require_skipWhile, + require_startWith, + require_subscribeOn, + require_switchAll, + require_switchMap, + require_switchMapTo, + require_switchScan, + require_take, + require_takeLast, + require_takeUntil, + require_takeWhile, + require_tap, + require_throttle, + require_throttleTime, + require_throwError, + require_throwIfEmpty, + require_timeInterval, + require_timeout, + require_timeoutWith, + require_timer, + require_timestamp, + require_toArray, + require_window, + require_windowCount, + require_windowTime, + require_windowToggle, + require_windowWhen, + require_withLatestFrom, + require_zip, + require_zipAll, + require_zipWith, + stripEndSlash, + tryLoadPackage, + uid +} from "./chunk-BX2ML7LW.js"; +import { + require_src +} from "./chunk-C4DYPKAN.js"; +import { + require_ms +} from "./chunk-A34KYKJP.js"; +import { + __commonJS, + __esm, + __export, + __name, + __require, + __toESM +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js +var require_object_assign = __commonJS({ + "../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js"(exports, module) { + "use strict"; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + function toObject(val) { + if (val === null || val === void 0) { + throw new TypeError("Object.assign cannot be called with null or undefined"); + } + return Object(val); + } + __name(toObject, "toObject"); + function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + var test1 = new String("abc"); + test1[5] = "de"; + if (Object.getOwnPropertyNames(test1)[0] === "5") { + return false; + } + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2["_" + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function(n) { + return test2[n]; + }); + if (order2.join("") !== "0123456789") { + return false; + } + var test3 = {}; + "abcdefghijklmnopqrst".split("").forEach(function(letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { + return false; + } + return true; + } catch (err) { + return false; + } + } + __name(shouldUseNative, "shouldUseNative"); + module.exports = shouldUseNative() ? Object.assign : function(target, source) { + var from2; + var to = toObject(target); + var symbols; + for (var s = 1; s < arguments.length; s++) { + from2 = Object(arguments[s]); + for (var key in from2) { + if (hasOwnProperty.call(from2, key)) { + to[key] = from2[key]; + } + } + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from2); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from2, symbols[i])) { + to[symbols[i]] = from2[symbols[i]]; + } + } + } + } + return to; + }; + } +}); + +// ../../node_modules/.pnpm/vary@1.1.2/node_modules/vary/index.js +var require_vary = __commonJS({ + "../../node_modules/.pnpm/vary@1.1.2/node_modules/vary/index.js"(exports, module) { + "use strict"; + module.exports = vary; + module.exports.append = append; + var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + function append(header, field) { + if (typeof header !== "string") { + throw new TypeError("header argument is required"); + } + if (!field) { + throw new TypeError("field argument is required"); + } + var fields = !Array.isArray(field) ? parse(String(field)) : field; + for (var j = 0; j < fields.length; j++) { + if (!FIELD_NAME_REGEXP.test(fields[j])) { + throw new TypeError("field argument contains an invalid header name"); + } + } + if (header === "*") { + return header; + } + var val = header; + var vals = parse(header.toLowerCase()); + if (fields.indexOf("*") !== -1 || vals.indexOf("*") !== -1) { + return "*"; + } + for (var i = 0; i < fields.length; i++) { + var fld = fields[i].toLowerCase(); + if (vals.indexOf(fld) === -1) { + vals.push(fld); + val = val ? val + ", " + fields[i] : fields[i]; + } + } + return val; + } + __name(append, "append"); + function parse(header) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = header.length; i < len; i++) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(header.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(header.substring(start, end)); + return list; + } + __name(parse, "parse"); + function vary(res, field) { + if (!res || !res.getHeader || !res.setHeader) { + throw new TypeError("res argument is required"); + } + var val = res.getHeader("Vary") || ""; + var header = Array.isArray(val) ? val.join(", ") : String(val); + if (val = append(header, field)) { + res.setHeader("Vary", val); + } + } + __name(vary, "vary"); + } +}); + +// ../../node_modules/.pnpm/cors@2.8.6/node_modules/cors/lib/index.js +var require_lib2 = __commonJS({ + "../../node_modules/.pnpm/cors@2.8.6/node_modules/cors/lib/index.js"(exports, module) { + (function() { + "use strict"; + var assign = require_object_assign(); + var vary = require_vary(); + var defaults = { + origin: "*", + methods: "GET,HEAD,PUT,PATCH,POST,DELETE", + preflightContinue: false, + optionsSuccessStatus: 204 + }; + function isString2(s) { + return typeof s === "string" || s instanceof String; + } + __name(isString2, "isString"); + function isOriginAllowed(origin, allowedOrigin) { + if (Array.isArray(allowedOrigin)) { + for (var i = 0; i < allowedOrigin.length; ++i) { + if (isOriginAllowed(origin, allowedOrigin[i])) { + return true; + } + } + return false; + } else if (isString2(allowedOrigin)) { + return origin === allowedOrigin; + } else if (allowedOrigin instanceof RegExp) { + return allowedOrigin.test(origin); + } else { + return !!allowedOrigin; + } + } + __name(isOriginAllowed, "isOriginAllowed"); + function configureOrigin(options, req) { + var requestOrigin = req.headers.origin, headers = [], isAllowed; + if (!options.origin || options.origin === "*") { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: "*" + }]); + } else if (isString2(options.origin)) { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: options.origin + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } else { + isAllowed = isOriginAllowed(requestOrigin, options.origin); + headers.push([{ + key: "Access-Control-Allow-Origin", + value: isAllowed ? requestOrigin : false + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } + return headers; + } + __name(configureOrigin, "configureOrigin"); + function configureMethods(options) { + var methods = options.methods; + if (methods.join) { + methods = options.methods.join(","); + } + return { + key: "Access-Control-Allow-Methods", + value: methods + }; + } + __name(configureMethods, "configureMethods"); + function configureCredentials(options) { + if (options.credentials === true) { + return { + key: "Access-Control-Allow-Credentials", + value: "true" + }; + } + return null; + } + __name(configureCredentials, "configureCredentials"); + function configureAllowedHeaders(options, req) { + var allowedHeaders = options.allowedHeaders || options.headers; + var headers = []; + if (!allowedHeaders) { + allowedHeaders = req.headers["access-control-request-headers"]; + headers.push([{ + key: "Vary", + value: "Access-Control-Request-Headers" + }]); + } else if (allowedHeaders.join) { + allowedHeaders = allowedHeaders.join(","); + } + if (allowedHeaders && allowedHeaders.length) { + headers.push([{ + key: "Access-Control-Allow-Headers", + value: allowedHeaders + }]); + } + return headers; + } + __name(configureAllowedHeaders, "configureAllowedHeaders"); + function configureExposedHeaders(options) { + var headers = options.exposedHeaders; + if (!headers) { + return null; + } else if (headers.join) { + headers = headers.join(","); + } + if (headers && headers.length) { + return { + key: "Access-Control-Expose-Headers", + value: headers + }; + } + return null; + } + __name(configureExposedHeaders, "configureExposedHeaders"); + function configureMaxAge(options) { + var maxAge = (typeof options.maxAge === "number" || options.maxAge) && options.maxAge.toString(); + if (maxAge && maxAge.length) { + return { + key: "Access-Control-Max-Age", + value: maxAge + }; + } + return null; + } + __name(configureMaxAge, "configureMaxAge"); + function applyHeaders(headers, res) { + for (var i = 0, n = headers.length; i < n; i++) { + var header = headers[i]; + if (header) { + if (Array.isArray(header)) { + applyHeaders(header, res); + } else if (header.key === "Vary" && header.value) { + vary(res, header.value); + } else if (header.value) { + res.setHeader(header.key, header.value); + } + } + } + } + __name(applyHeaders, "applyHeaders"); + function cors2(options, req, res, next) { + var headers = [], method = req.method && req.method.toUpperCase && req.method.toUpperCase(); + if (method === "OPTIONS") { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options)); + headers.push(configureMethods(options)); + headers.push(configureAllowedHeaders(options, req)); + headers.push(configureMaxAge(options)); + headers.push(configureExposedHeaders(options)); + applyHeaders(headers, res); + if (options.preflightContinue) { + next(); + } else { + res.statusCode = options.optionsSuccessStatus; + res.setHeader("Content-Length", "0"); + res.end(); + } + } else { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options)); + headers.push(configureExposedHeaders(options)); + applyHeaders(headers, res); + next(); + } + } + __name(cors2, "cors"); + function middlewareWrapper(o) { + var optionsCallback = null; + if (typeof o === "function") { + optionsCallback = o; + } else { + optionsCallback = /* @__PURE__ */ __name(function(req, cb) { + cb(null, o); + }, "optionsCallback"); + } + return /* @__PURE__ */ __name(function corsMiddleware(req, res, next) { + optionsCallback(req, function(err, options) { + if (err) { + next(err); + } else { + var corsOptions = assign({}, defaults, options); + var originCallback = null; + if (corsOptions.origin && typeof corsOptions.origin === "function") { + originCallback = corsOptions.origin; + } else if (corsOptions.origin) { + originCallback = /* @__PURE__ */ __name(function(origin, cb) { + cb(null, corsOptions.origin); + }, "originCallback"); + } + if (originCallback) { + originCallback(req.headers.origin, function(err2, origin) { + if (err2 || !origin) { + next(err2); + } else { + corsOptions.origin = origin; + cors2(corsOptions, req, res, next); + } + }); + } else { + next(); + } + } + }); + }, "corsMiddleware"); + } + __name(middlewareWrapper, "middlewareWrapper"); + module.exports = middlewareWrapper; + })(); + } +}); + +// ../../node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js +var require_depd = __commonJS({ + "../../node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js"(exports, module) { + var relative = __require("path").relative; + module.exports = depd; + var basePath = process.cwd(); + function containsNamespace(str, namespace) { + var vals = str.split(/[ ,]+/); + var ns = String(namespace).toLowerCase(); + for (var i = 0; i < vals.length; i++) { + var val = vals[i]; + if (val && (val === "*" || val.toLowerCase() === ns)) { + return true; + } + } + return false; + } + __name(containsNamespace, "containsNamespace"); + function convertDataDescriptorToAccessor(obj, prop, message) { + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + var value = descriptor.value; + descriptor.get = /* @__PURE__ */ __name(function getter() { + return value; + }, "getter"); + if (descriptor.writable) { + descriptor.set = /* @__PURE__ */ __name(function setter(val) { + return value = val; + }, "setter"); + } + delete descriptor.value; + delete descriptor.writable; + Object.defineProperty(obj, prop, descriptor); + return descriptor; + } + __name(convertDataDescriptorToAccessor, "convertDataDescriptorToAccessor"); + function createArgumentsString(arity) { + var str = ""; + for (var i = 0; i < arity; i++) { + str += ", arg" + i; + } + return str.substr(2); + } + __name(createArgumentsString, "createArgumentsString"); + function createStackString(stack) { + var str = this.name + ": " + this.namespace; + if (this.message) { + str += " deprecated " + this.message; + } + for (var i = 0; i < stack.length; i++) { + str += "\n at " + stack[i].toString(); + } + return str; + } + __name(createStackString, "createStackString"); + function depd(namespace) { + if (!namespace) { + throw new TypeError("argument namespace is required"); + } + var stack = getStack(); + var site = callSiteLocation(stack[1]); + var file = site[0]; + function deprecate(message) { + log.call(deprecate, message); + } + __name(deprecate, "deprecate"); + deprecate._file = file; + deprecate._ignored = isignored(namespace); + deprecate._namespace = namespace; + deprecate._traced = istraced(namespace); + deprecate._warned = /* @__PURE__ */ Object.create(null); + deprecate.function = wrapfunction; + deprecate.property = wrapproperty; + return deprecate; + } + __name(depd, "depd"); + function eehaslisteners(emitter, type) { + var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); + return count > 0; + } + __name(eehaslisteners, "eehaslisteners"); + function isignored(namespace) { + if (process.noDeprecation) { + return true; + } + var str = process.env.NO_DEPRECATION || ""; + return containsNamespace(str, namespace); + } + __name(isignored, "isignored"); + function istraced(namespace) { + if (process.traceDeprecation) { + return true; + } + var str = process.env.TRACE_DEPRECATION || ""; + return containsNamespace(str, namespace); + } + __name(istraced, "istraced"); + function log(message, site) { + var haslisteners = eehaslisteners(process, "deprecation"); + if (!haslisteners && this._ignored) { + return; + } + var caller; + var callFile; + var callSite; + var depSite; + var i = 0; + var seen = false; + var stack = getStack(); + var file = this._file; + if (site) { + depSite = site; + callSite = callSiteLocation(stack[1]); + callSite.name = depSite.name; + file = callSite[0]; + } else { + i = 2; + depSite = callSiteLocation(stack[i]); + callSite = depSite; + } + for (; i < stack.length; i++) { + caller = callSiteLocation(stack[i]); + callFile = caller[0]; + if (callFile === file) { + seen = true; + } else if (callFile === this._file) { + file = this._file; + } else if (seen) { + break; + } + } + var key = caller ? depSite.join(":") + "__" + caller.join(":") : void 0; + if (key !== void 0 && key in this._warned) { + return; + } + this._warned[key] = true; + var msg = message; + if (!msg) { + msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite); + } + if (haslisteners) { + var err = DeprecationError(this._namespace, msg, stack.slice(i)); + process.emit("deprecation", err); + return; + } + var format = process.stderr.isTTY ? formatColor : formatPlain; + var output = format.call(this, msg, caller, stack.slice(i)); + process.stderr.write(output + "\n", "utf8"); + } + __name(log, "log"); + function callSiteLocation(callSite) { + var file = callSite.getFileName() || "<anonymous>"; + var line = callSite.getLineNumber(); + var colm = callSite.getColumnNumber(); + if (callSite.isEval()) { + file = callSite.getEvalOrigin() + ", " + file; + } + var site = [file, line, colm]; + site.callSite = callSite; + site.name = callSite.getFunctionName(); + return site; + } + __name(callSiteLocation, "callSiteLocation"); + function defaultMessage(site) { + var callSite = site.callSite; + var funcName = site.name; + if (!funcName) { + funcName = "<anonymous@" + formatLocation(site) + ">"; + } + var context = callSite.getThis(); + var typeName = context && callSite.getTypeName(); + if (typeName === "Object") { + typeName = void 0; + } + if (typeName === "Function") { + typeName = context.name || typeName; + } + return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName; + } + __name(defaultMessage, "defaultMessage"); + function formatPlain(msg, caller, stack) { + var timestamp = (/* @__PURE__ */ new Date()).toUTCString(); + var formatted = timestamp + " " + this._namespace + " deprecated " + msg; + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += "\n at " + stack[i].toString(); + } + return formatted; + } + if (caller) { + formatted += " at " + formatLocation(caller); + } + return formatted; + } + __name(formatPlain, "formatPlain"); + function formatColor(msg, caller, stack) { + var formatted = "\x1B[36;1m" + this._namespace + "\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m" + msg + "\x1B[39m"; + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += "\n \x1B[36mat " + stack[i].toString() + "\x1B[39m"; + } + return formatted; + } + if (caller) { + formatted += " \x1B[36m" + formatLocation(caller) + "\x1B[39m"; + } + return formatted; + } + __name(formatColor, "formatColor"); + function formatLocation(callSite) { + return relative(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2]; + } + __name(formatLocation, "formatLocation"); + function getStack() { + var limit = Error.stackTraceLimit; + var obj = {}; + var prep = Error.prepareStackTrace; + Error.prepareStackTrace = prepareObjectStackTrace; + Error.stackTraceLimit = Math.max(10, limit); + Error.captureStackTrace(obj); + var stack = obj.stack.slice(1); + Error.prepareStackTrace = prep; + Error.stackTraceLimit = limit; + return stack; + } + __name(getStack, "getStack"); + function prepareObjectStackTrace(obj, stack) { + return stack; + } + __name(prepareObjectStackTrace, "prepareObjectStackTrace"); + function wrapfunction(fn, message) { + if (typeof fn !== "function") { + throw new TypeError("argument fn must be a function"); + } + var args = createArgumentsString(fn.length); + var stack = getStack(); + var site = callSiteLocation(stack[1]); + site.name = fn.name; + var deprecatedfn = new Function( + "fn", + "log", + "deprecate", + "message", + "site", + '"use strict"\nreturn function (' + args + ") {log.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n}" + )(fn, log, this, message, site); + return deprecatedfn; + } + __name(wrapfunction, "wrapfunction"); + function wrapproperty(obj, prop, message) { + if (!obj || typeof obj !== "object" && typeof obj !== "function") { + throw new TypeError("argument obj must be object"); + } + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + if (!descriptor) { + throw new TypeError("must call property on owner object"); + } + if (!descriptor.configurable) { + throw new TypeError("property must be configurable"); + } + var deprecate = this; + var stack = getStack(); + var site = callSiteLocation(stack[1]); + site.name = prop; + if ("value" in descriptor) { + descriptor = convertDataDescriptorToAccessor(obj, prop, message); + } + var get = descriptor.get; + var set = descriptor.set; + if (typeof get === "function") { + descriptor.get = /* @__PURE__ */ __name(function getter() { + log.call(deprecate, message, site); + return get.apply(this, arguments); + }, "getter"); + } + if (typeof set === "function") { + descriptor.set = /* @__PURE__ */ __name(function setter() { + log.call(deprecate, message, site); + return set.apply(this, arguments); + }, "setter"); + } + Object.defineProperty(obj, prop, descriptor); + } + __name(wrapproperty, "wrapproperty"); + function DeprecationError(namespace, message, stack) { + var error = new Error(); + var stackString; + Object.defineProperty(error, "constructor", { + value: DeprecationError + }); + Object.defineProperty(error, "message", { + configurable: true, + enumerable: false, + value: message, + writable: true + }); + Object.defineProperty(error, "name", { + enumerable: false, + configurable: true, + value: "DeprecationError", + writable: true + }); + Object.defineProperty(error, "namespace", { + configurable: true, + enumerable: false, + value: namespace, + writable: true + }); + Object.defineProperty(error, "stack", { + configurable: true, + enumerable: false, + get: /* @__PURE__ */ __name(function() { + if (stackString !== void 0) { + return stackString; + } + return stackString = createStackString.call(this, stack); + }, "get"), + set: /* @__PURE__ */ __name(function setter(val) { + stackString = val; + }, "setter") + }); + return error; + } + __name(DeprecationError, "DeprecationError"); + } +}); + +// ../../node_modules/.pnpm/setprototypeof@1.2.0/node_modules/setprototypeof/index.js +var require_setprototypeof = __commonJS({ + "../../node_modules/.pnpm/setprototypeof@1.2.0/node_modules/setprototypeof/index.js"(exports, module) { + "use strict"; + module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); + function setProtoOf(obj, proto) { + obj.__proto__ = proto; + return obj; + } + __name(setProtoOf, "setProtoOf"); + function mixinProperties(obj, proto) { + for (var prop in proto) { + if (!Object.prototype.hasOwnProperty.call(obj, prop)) { + obj[prop] = proto[prop]; + } + } + return obj; + } + __name(mixinProperties, "mixinProperties"); + } +}); + +// ../../node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json +var require_codes = __commonJS({ + "../../node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json"(exports, module) { + module.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "103": "Early Hints", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a Teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Too Early", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" + }; + } +}); + +// ../../node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js +var require_statuses = __commonJS({ + "../../node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js"(exports, module) { + "use strict"; + var codes = require_codes(); + module.exports = status; + status.message = codes; + status.code = createMessageToStatusCodeMap(codes); + status.codes = createStatusCodeList(codes); + status.redirect = { + 300: true, + 301: true, + 302: true, + 303: true, + 305: true, + 307: true, + 308: true + }; + status.empty = { + 204: true, + 205: true, + 304: true + }; + status.retry = { + 502: true, + 503: true, + 504: true + }; + function createMessageToStatusCodeMap(codes2) { + var map2 = {}; + Object.keys(codes2).forEach(/* @__PURE__ */ __name(function forEachCode(code) { + var message = codes2[code]; + var status2 = Number(code); + map2[message.toLowerCase()] = status2; + }, "forEachCode")); + return map2; + } + __name(createMessageToStatusCodeMap, "createMessageToStatusCodeMap"); + function createStatusCodeList(codes2) { + return Object.keys(codes2).map(/* @__PURE__ */ __name(function mapCode(code) { + return Number(code); + }, "mapCode")); + } + __name(createStatusCodeList, "createStatusCodeList"); + function getStatusCode(message) { + var msg = message.toLowerCase(); + if (!Object.prototype.hasOwnProperty.call(status.code, msg)) { + throw new Error('invalid status message: "' + message + '"'); + } + return status.code[msg]; + } + __name(getStatusCode, "getStatusCode"); + function getStatusMessage(code) { + if (!Object.prototype.hasOwnProperty.call(status.message, code)) { + throw new Error("invalid status code: " + code); + } + return status.message[code]; + } + __name(getStatusMessage, "getStatusMessage"); + function status(code) { + if (typeof code === "number") { + return getStatusMessage(code); + } + if (typeof code !== "string") { + throw new TypeError("code must be a number or string"); + } + var n = parseInt(code, 10); + if (!isNaN(n)) { + return getStatusMessage(n); + } + return getStatusCode(code); + } + __name(status, "status"); + } +}); + +// ../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS({ + "../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js"(exports, module) { + if (typeof Object.create === "function") { + module.exports = /* @__PURE__ */ __name(function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }, "inherits"); + } else { + module.exports = /* @__PURE__ */ __name(function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = /* @__PURE__ */ __name(function() { + }, "TempCtor"); + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }, "inherits"); + } + } +}); + +// ../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js +var require_inherits = __commonJS({ + "../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js"(exports, module) { + try { + util = __require("util"); + if (typeof util.inherits !== "function") throw ""; + module.exports = util.inherits; + } catch (e) { + module.exports = require_inherits_browser(); + } + var util; + } +}); + +// ../../node_modules/.pnpm/toidentifier@1.0.1/node_modules/toidentifier/index.js +var require_toidentifier = __commonJS({ + "../../node_modules/.pnpm/toidentifier@1.0.1/node_modules/toidentifier/index.js"(exports, module) { + "use strict"; + module.exports = toIdentifier; + function toIdentifier(str) { + return str.split(" ").map(function(token) { + return token.slice(0, 1).toUpperCase() + token.slice(1); + }).join("").replace(/[^ _0-9a-z]/gi, ""); + } + __name(toIdentifier, "toIdentifier"); + } +}); + +// ../../node_modules/.pnpm/http-errors@2.0.1/node_modules/http-errors/index.js +var require_http_errors = __commonJS({ + "../../node_modules/.pnpm/http-errors@2.0.1/node_modules/http-errors/index.js"(exports, module) { + "use strict"; + var deprecate = require_depd()("http-errors"); + var setPrototypeOf = require_setprototypeof(); + var statuses = require_statuses(); + var inherits = require_inherits(); + var toIdentifier = require_toidentifier(); + module.exports = createError; + module.exports.HttpError = createHttpErrorConstructor(); + module.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError); + populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError); + function codeClass(status) { + return Number(String(status).charAt(0) + "00"); + } + __name(codeClass, "codeClass"); + function createError() { + var err; + var msg; + var status = 500; + var props = {}; + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + var type = typeof arg; + if (type === "object" && arg instanceof Error) { + err = arg; + status = err.status || err.statusCode || status; + } else if (type === "number" && i === 0) { + status = arg; + } else if (type === "string") { + msg = arg; + } else if (type === "object") { + props = arg; + } else { + throw new TypeError("argument #" + (i + 1) + " unsupported type " + type); + } + } + if (typeof status === "number" && (status < 400 || status >= 600)) { + deprecate("non-error status code; use only 4xx or 5xx status codes"); + } + if (typeof status !== "number" || !statuses.message[status] && (status < 400 || status >= 600)) { + status = 500; + } + var HttpError = createError[status] || createError[codeClass(status)]; + if (!err) { + err = HttpError ? new HttpError(msg) : new Error(msg || statuses.message[status]); + Error.captureStackTrace(err, createError); + } + if (!HttpError || !(err instanceof HttpError) || err.status !== status) { + err.expose = status < 500; + err.status = err.statusCode = status; + } + for (var key in props) { + if (key !== "status" && key !== "statusCode") { + err[key] = props[key]; + } + } + return err; + } + __name(createError, "createError"); + function createHttpErrorConstructor() { + function HttpError() { + throw new TypeError("cannot construct abstract class"); + } + __name(HttpError, "HttpError"); + inherits(HttpError, Error); + return HttpError; + } + __name(createHttpErrorConstructor, "createHttpErrorConstructor"); + function createClientErrorConstructor(HttpError, name, code) { + var className = toClassName(name); + function ClientError(message) { + var msg = message != null ? message : statuses.message[code]; + var err = new Error(msg); + Error.captureStackTrace(err, ClientError); + setPrototypeOf(err, ClientError.prototype); + Object.defineProperty(err, "message", { + enumerable: true, + configurable: true, + value: msg, + writable: true + }); + Object.defineProperty(err, "name", { + enumerable: false, + configurable: true, + value: className, + writable: true + }); + return err; + } + __name(ClientError, "ClientError"); + inherits(ClientError, HttpError); + nameFunc(ClientError, className); + ClientError.prototype.status = code; + ClientError.prototype.statusCode = code; + ClientError.prototype.expose = true; + return ClientError; + } + __name(createClientErrorConstructor, "createClientErrorConstructor"); + function createIsHttpErrorFunction(HttpError) { + return /* @__PURE__ */ __name(function isHttpError(val) { + if (!val || typeof val !== "object") { + return false; + } + if (val instanceof HttpError) { + return true; + } + return val instanceof Error && typeof val.expose === "boolean" && typeof val.statusCode === "number" && val.status === val.statusCode; + }, "isHttpError"); + } + __name(createIsHttpErrorFunction, "createIsHttpErrorFunction"); + function createServerErrorConstructor(HttpError, name, code) { + var className = toClassName(name); + function ServerError(message) { + var msg = message != null ? message : statuses.message[code]; + var err = new Error(msg); + Error.captureStackTrace(err, ServerError); + setPrototypeOf(err, ServerError.prototype); + Object.defineProperty(err, "message", { + enumerable: true, + configurable: true, + value: msg, + writable: true + }); + Object.defineProperty(err, "name", { + enumerable: false, + configurable: true, + value: className, + writable: true + }); + return err; + } + __name(ServerError, "ServerError"); + inherits(ServerError, HttpError); + nameFunc(ServerError, className); + ServerError.prototype.status = code; + ServerError.prototype.statusCode = code; + ServerError.prototype.expose = false; + return ServerError; + } + __name(createServerErrorConstructor, "createServerErrorConstructor"); + function nameFunc(func, name) { + var desc = Object.getOwnPropertyDescriptor(func, "name"); + if (desc && desc.configurable) { + desc.value = name; + Object.defineProperty(func, "name", desc); + } + } + __name(nameFunc, "nameFunc"); + function populateConstructorExports(exports2, codes, HttpError) { + codes.forEach(/* @__PURE__ */ __name(function forEachCode(code) { + var CodeError; + var name = toIdentifier(statuses.message[code]); + switch (codeClass(code)) { + case 400: + CodeError = createClientErrorConstructor(HttpError, name, code); + break; + case 500: + CodeError = createServerErrorConstructor(HttpError, name, code); + break; + } + if (CodeError) { + exports2[code] = CodeError; + exports2[name] = CodeError; + } + }, "forEachCode")); + } + __name(populateConstructorExports, "populateConstructorExports"); + function toClassName(name) { + return name.slice(-5) === "Error" ? name : name + "Error"; + } + __name(toClassName, "toClassName"); + } +}); + +// ../../node_modules/.pnpm/bytes@3.1.2/node_modules/bytes/index.js +var require_bytes = __commonJS({ + "../../node_modules/.pnpm/bytes@3.1.2/node_modules/bytes/index.js"(exports, module) { + "use strict"; + module.exports = bytes; + module.exports.format = format; + module.exports.parse = parse; + var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + var map2 = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5) + }; + var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + function bytes(value, options) { + if (typeof value === "string") { + return parse(value); + } + if (typeof value === "number") { + return format(value, options); + } + return null; + } + __name(bytes, "bytes"); + function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + var mag = Math.abs(value); + var thousandsSeparator = options && options.thousandsSeparator || ""; + var unitSeparator = options && options.unitSeparator || ""; + var decimalPlaces = options && options.decimalPlaces !== void 0 ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = options && options.unit || ""; + if (!unit || !map2[unit.toLowerCase()]) { + if (mag >= map2.pb) { + unit = "PB"; + } else if (mag >= map2.tb) { + unit = "TB"; + } else if (mag >= map2.gb) { + unit = "GB"; + } else if (mag >= map2.mb) { + unit = "MB"; + } else if (mag >= map2.kb) { + unit = "KB"; + } else { + unit = "B"; + } + } + var val = value / map2[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, "$1"); + } + if (thousandsSeparator) { + str = str.split(".").map(function(s, i) { + return i === 0 ? s.replace(formatThousandsRegExp, thousandsSeparator) : s; + }).join("."); + } + return str + unitSeparator + unit; + } + __name(format, "format"); + function parse(val) { + if (typeof val === "number" && !isNaN(val)) { + return val; + } + if (typeof val !== "string") { + return null; + } + var results = parseRegExp.exec(val); + var floatValue; + var unit = "b"; + if (!results) { + floatValue = parseInt(val, 10); + unit = "b"; + } else { + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + if (isNaN(floatValue)) { + return null; + } + return Math.floor(map2[unit] * floatValue); + } + __name(parse, "parse"); + } +}); + +// ../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js +var require_safer = __commonJS({ + "../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js"(exports, module) { + "use strict"; + var buffer = __require("buffer"); + var Buffer2 = buffer.Buffer; + var safer = {}; + var key; + for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue; + if (key === "SlowBuffer" || key === "Buffer") continue; + safer[key] = buffer[key]; + } + var Safer = safer.Buffer = {}; + for (key in Buffer2) { + if (!Buffer2.hasOwnProperty(key)) continue; + if (key === "allocUnsafe" || key === "allocUnsafeSlow") continue; + Safer[key] = Buffer2[key]; + } + safer.Buffer.prototype = Buffer2.prototype; + if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function(value, encodingOrOffset, length) { + if (typeof value === "number") { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); + } + if (value && typeof value.length === "undefined") { + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + return Buffer2(value, encodingOrOffset, length); + }; + } + if (!Safer.alloc) { + Safer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + var buf = Buffer2(size); + if (!fill || fill.length === 0) { + buf.fill(0); + } else if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + return buf; + }; + } + if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding("buffer").kStringMaxLength; + } catch (e) { + } + } + if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + }; + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; + } + } + module.exports = safer; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/bom-handling.js +var require_bom_handling = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/bom-handling.js"(exports) { + "use strict"; + var BOMChar = "\uFEFF"; + exports.PrependBOM = PrependBOMWrapper; + function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; + } + __name(PrependBOMWrapper, "PrependBOMWrapper"); + PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + return this.encoder.write(str); + }; + PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); + }; + exports.StripBOM = StripBOMWrapper; + function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; + } + __name(StripBOMWrapper, "StripBOMWrapper"); + StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) { + return res; + } + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === "function") { + this.options.stripBOM(); + } + } + this.pass = true; + return res; + }; + StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/helpers/merge-exports.js +var require_merge_exports = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/helpers/merge-exports.js"(exports, module) { + "use strict"; + var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn; + function mergeModules(target, module2) { + for (var key in module2) { + if (hasOwn(module2, key)) { + target[key] = module2[key]; + } + } + } + __name(mergeModules, "mergeModules"); + module.exports = mergeModules; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/internal.js +var require_internal = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/internal.js"(exports, module) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true }, + cesu8: { type: "_internal", bomAware: true }, + unicode11utf8: "utf8", + ucs2: { type: "_internal", bomAware: true }, + utf16le: "ucs2", + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + // Codec. + _internal: InternalCodec + }; + function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + if (this.enc === "base64") { + this.encoder = InternalEncoderBase64; + } else if (this.enc === "utf8") { + this.encoder = InternalEncoderUtf8; + } else if (this.enc === "cesu8") { + this.enc = "utf8"; + this.encoder = InternalEncoderCesu8; + if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } + } + __name(InternalCodec, "InternalCodec"); + InternalCodec.prototype.encoder = InternalEncoder; + InternalCodec.prototype.decoder = InternalDecoder; + var StringDecoder = __require("string_decoder").StringDecoder; + function InternalDecoder(options, codec) { + this.decoder = new StringDecoder(codec.enc); + } + __name(InternalDecoder, "InternalDecoder"); + InternalDecoder.prototype.write = function(buf) { + if (!Buffer2.isBuffer(buf)) { + buf = Buffer2.from(buf); + } + return this.decoder.write(buf); + }; + InternalDecoder.prototype.end = function() { + return this.decoder.end(); + }; + function InternalEncoder(options, codec) { + this.enc = codec.enc; + } + __name(InternalEncoder, "InternalEncoder"); + InternalEncoder.prototype.write = function(str) { + return Buffer2.from(str, this.enc); + }; + InternalEncoder.prototype.end = function() { + }; + function InternalEncoderBase64(options, codec) { + this.prevStr = ""; + } + __name(InternalEncoderBase64, "InternalEncoderBase64"); + InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - str.length % 4; + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + return Buffer2.from(str, "base64"); + }; + InternalEncoderBase64.prototype.end = function() { + return Buffer2.from(this.prevStr, "base64"); + }; + function InternalEncoderCesu8(options, codec) { + } + __name(InternalEncoderCesu8, "InternalEncoderCesu8"); + InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length * 3); + var bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + if (charCode < 128) { + buf[bufIdx++] = charCode; + } else if (charCode < 2048) { + buf[bufIdx++] = 192 + (charCode >>> 6); + buf[bufIdx++] = 128 + (charCode & 63); + } else { + buf[bufIdx++] = 224 + (charCode >>> 12); + buf[bufIdx++] = 128 + (charCode >>> 6 & 63); + buf[bufIdx++] = 128 + (charCode & 63); + } + } + return buf.slice(0, bufIdx); + }; + InternalEncoderCesu8.prototype.end = function() { + }; + function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; + } + __name(InternalDecoderCesu8, "InternalDecoderCesu8"); + InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc; + var contBytes = this.contBytes; + var accBytes = this.accBytes; + var res = ""; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 192) !== 128) { + if (contBytes > 0) { + res += this.defaultCharUnicode; + contBytes = 0; + } + if (curByte < 128) { + res += String.fromCharCode(curByte); + } else if (curByte < 224) { + acc = curByte & 31; + contBytes = 1; + accBytes = 1; + } else if (curByte < 240) { + acc = curByte & 15; + contBytes = 2; + accBytes = 1; + } else { + res += this.defaultCharUnicode; + } + } else { + if (contBytes > 0) { + acc = acc << 6 | curByte & 63; + contBytes--; + accBytes++; + if (contBytes === 0) { + if (accBytes === 2 && acc < 128 && acc > 0) { + res += this.defaultCharUnicode; + } else if (accBytes === 3 && acc < 2048) { + res += this.defaultCharUnicode; + } else { + res += String.fromCharCode(acc); + } + } + } else { + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; + this.contBytes = contBytes; + this.accBytes = accBytes; + return res; + }; + InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) { + res += this.defaultCharUnicode; + } + return res; + }; + function InternalEncoderUtf8(options, codec) { + this.highSurrogate = ""; + } + __name(InternalEncoderUtf8, "InternalEncoderUtf8"); + InternalEncoderUtf8.prototype.write = function(str) { + if (this.highSurrogate) { + str = this.highSurrogate + str; + this.highSurrogate = ""; + } + if (str.length > 0) { + var charCode = str.charCodeAt(str.length - 1); + if (charCode >= 55296 && charCode < 56320) { + this.highSurrogate = str[str.length - 1]; + str = str.slice(0, str.length - 1); + } + } + return Buffer2.from(str, this.enc); + }; + InternalEncoderUtf8.prototype.end = function() { + if (this.highSurrogate) { + var str = this.highSurrogate; + this.highSurrogate = ""; + return Buffer2.from(str, this.enc); + } + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/utf32.js +var require_utf32 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/utf32.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._utf32 = Utf32Codec; + function Utf32Codec(codecOptions, iconv) { + this.iconv = iconv; + this.bomAware = true; + this.isLE = codecOptions.isLE; + } + __name(Utf32Codec, "Utf32Codec"); + exports.utf32le = { type: "_utf32", isLE: true }; + exports.utf32be = { type: "_utf32", isLE: false }; + exports.ucs4le = "utf32le"; + exports.ucs4be = "utf32be"; + Utf32Codec.prototype.encoder = Utf32Encoder; + Utf32Codec.prototype.decoder = Utf32Decoder; + function Utf32Encoder(options, codec) { + this.isLE = codec.isLE; + this.highSurrogate = 0; + } + __name(Utf32Encoder, "Utf32Encoder"); + Utf32Encoder.prototype.write = function(str) { + var src = Buffer2.from(str, "ucs2"); + var dst = Buffer2.alloc(src.length * 2 + 4); + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; + var offset = 0; + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i); + var isHighSurrogate = code >= 55296 && code < 56320; + var isLowSurrogate = code >= 56320 && code < 57344; + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + write32.call(dst, this.highSurrogate, offset); + offset += 4; + } else { + var codepoint = (this.highSurrogate - 55296 << 10 | code - 56320) + 65536; + write32.call(dst, codepoint, offset); + offset += 4; + this.highSurrogate = 0; + continue; + } + } + if (isHighSurrogate) { + this.highSurrogate = code; + } else { + write32.call(dst, code, offset); + offset += 4; + this.highSurrogate = 0; + } + } + if (offset < dst.length) { + dst = dst.slice(0, offset); + } + return dst; + }; + Utf32Encoder.prototype.end = function() { + if (!this.highSurrogate) { + return; + } + var buf = Buffer2.alloc(4); + if (this.isLE) { + buf.writeUInt32LE(this.highSurrogate, 0); + } else { + buf.writeUInt32BE(this.highSurrogate, 0); + } + this.highSurrogate = 0; + return buf; + }; + function Utf32Decoder(options, codec) { + this.isLE = codec.isLE; + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); + this.overflow = []; + } + __name(Utf32Decoder, "Utf32Decoder"); + Utf32Decoder.prototype.write = function(src) { + if (src.length === 0) { + return ""; + } + var i = 0; + var codepoint = 0; + var dst = Buffer2.alloc(src.length + 4); + var offset = 0; + var isLE = this.isLE; + var overflow = this.overflow; + var badChar = this.badChar; + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) { + overflow.push(src[i]); + } + if (overflow.length === 4) { + if (isLE) { + codepoint = overflow[0] | overflow[1] << 8 | overflow[2] << 16 | overflow[3] << 24; + } else { + codepoint = overflow[3] | overflow[2] << 8 | overflow[1] << 16 | overflow[0] << 24; + } + overflow.length = 0; + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + } + for (; i < src.length - 3; i += 4) { + if (isLE) { + codepoint = src[i] | src[i + 1] << 8 | src[i + 2] << 16 | src[i + 3] << 24; + } else { + codepoint = src[i + 3] | src[i + 2] << 8 | src[i + 1] << 16 | src[i] << 24; + } + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + for (; i < src.length; i++) { + overflow.push(src[i]); + } + return dst.slice(0, offset).toString("ucs2"); + }; + function _writeCodepoint(dst, offset, codepoint, badChar) { + if (codepoint < 0 || codepoint > 1114111) { + codepoint = badChar; + } + if (codepoint >= 65536) { + codepoint -= 65536; + var high = 55296 | codepoint >> 10; + dst[offset++] = high & 255; + dst[offset++] = high >> 8; + var codepoint = 56320 | codepoint & 1023; + } + dst[offset++] = codepoint & 255; + dst[offset++] = codepoint >> 8; + return offset; + } + __name(_writeCodepoint, "_writeCodepoint"); + Utf32Decoder.prototype.end = function() { + if (this.overflow.length === 0) { + return; + } + this.overflow.length = 0; + return String.fromCharCode(this.badChar); + }; + exports.utf32 = Utf32AutoCodec; + exports.ucs4 = "utf32"; + function Utf32AutoCodec(options, iconv) { + this.iconv = iconv; + } + __name(Utf32AutoCodec, "Utf32AutoCodec"); + Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; + Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; + function Utf32AutoEncoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) { + options.addBOM = true; + } + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options); + } + __name(Utf32AutoEncoder, "Utf32AutoEncoder"); + Utf32AutoEncoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf32AutoEncoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf32AutoDecoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + __name(Utf32AutoDecoder, "Utf32AutoDecoder"); + Utf32AutoDecoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 32) { + return ""; + } + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf32AutoDecoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + var trail = this.decoder.end(); + if (trail) { + resStr += trail; + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var invalidLE = 0; + var invalidBE = 0; + var bmpCharsLE = 0; + var bmpCharsBE = 0; + outerLoop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 4) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254 && b[2] === 0 && b[3] === 0) { + return "utf-32le"; + } + if (b[0] === 0 && b[1] === 0 && b[2] === 254 && b[3] === 255) { + return "utf-32be"; + } + } + if (b[0] !== 0 || b[1] > 16) invalidBE++; + if (b[3] !== 0 || b[2] > 16) invalidLE++; + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outerLoop; + } + } + } + } + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be"; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le"; + return defaultEncoding || "utf-32le"; + } + __name(detectEncoding, "detectEncoding"); + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/utf16.js +var require_utf16 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/utf16.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports.utf16be = Utf16BECodec; + function Utf16BECodec() { + } + __name(Utf16BECodec, "Utf16BECodec"); + Utf16BECodec.prototype.encoder = Utf16BEEncoder; + Utf16BECodec.prototype.decoder = Utf16BEDecoder; + Utf16BECodec.prototype.bomAware = true; + function Utf16BEEncoder() { + } + __name(Utf16BEEncoder, "Utf16BEEncoder"); + Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer2.from(str, "ucs2"); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; + buf[i] = buf[i + 1]; + buf[i + 1] = tmp; + } + return buf; + }; + Utf16BEEncoder.prototype.end = function() { + }; + function Utf16BEDecoder() { + this.overflowByte = -1; + } + __name(Utf16BEDecoder, "Utf16BEDecoder"); + Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) { + return ""; + } + var buf2 = Buffer2.alloc(buf.length + 1); + var i = 0; + var j = 0; + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; + j = 2; + } + for (; i < buf.length - 1; i += 2, j += 2) { + buf2[j] = buf[i + 1]; + buf2[j + 1] = buf[i]; + } + this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; + return buf2.slice(0, j).toString("ucs2"); + }; + Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; + }; + exports.utf16 = Utf16Codec; + function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; + } + __name(Utf16Codec, "Utf16Codec"); + Utf16Codec.prototype.encoder = Utf16Encoder; + Utf16Codec.prototype.decoder = Utf16Decoder; + function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) { + options.addBOM = true; + } + this.encoder = codec.iconv.getEncoder("utf-16le", options); + } + __name(Utf16Encoder, "Utf16Encoder"); + Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf16Encoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + __name(Utf16Decoder, "Utf16Decoder"); + Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 16) { + return ""; + } + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) { + resStr += this.decoder.write(this.initialBufs[i]); + } + var trail = this.decoder.end(); + if (trail) { + resStr += trail; + } + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0; + var asciiCharsBE = 0; + outerLoop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254) return "utf-16le"; + if (b[0] === 254 && b[1] === 255) return "utf-16be"; + } + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outerLoop; + } + } + } + } + if (asciiCharsBE > asciiCharsLE) return "utf-16be"; + if (asciiCharsBE < asciiCharsLE) return "utf-16le"; + return defaultEncoding || "utf-16le"; + } + __name(detectEncoding, "detectEncoding"); + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/utf7.js +var require_utf7 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/utf7.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports.utf7 = Utf7Codec; + exports.unicode11utf7 = "utf7"; + function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; + } + __name(Utf7Codec, "Utf7Codec"); + Utf7Codec.prototype.encoder = Utf7Encoder; + Utf7Codec.prototype.decoder = Utf7Decoder; + Utf7Codec.prototype.bomAware = true; + var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; + } + __name(Utf7Encoder, "Utf7Encoder"); + Utf7Encoder.prototype.write = function(str) { + return Buffer2.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; + }.bind(this))); + }; + Utf7Encoder.prototype.end = function() { + }; + function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + __name(Utf7Decoder, "Utf7Decoder"); + var base64Regex = /[A-Za-z0-9\/+]/; + var base64Chars = []; + for (i = 0; i < 256; i++) { + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + } + var i; + var plusChar = "+".charCodeAt(0); + var minusChar = "-".charCodeAt(0); + var andChar = "&".charCodeAt(0); + Utf7Decoder.prototype.write = function(buf) { + var res = ""; + var lastI = 0; + var inBase64 = this.inBase64; + var base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64Chars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "+"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) { + i2--; + } + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) { + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + } + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + exports.utf7imap = Utf7IMAPCodec; + function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; + } + __name(Utf7IMAPCodec, "Utf7IMAPCodec"); + Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; + Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; + Utf7IMAPCodec.prototype.bomAware = true; + function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer2.alloc(6); + this.base64AccumIdx = 0; + } + __name(Utf7IMAPEncoder, "Utf7IMAPEncoder"); + Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64; + var base64Accum = this.base64Accum; + var base64AccumIdx = this.base64AccumIdx; + var buf = Buffer2.alloc(str.length * 5 + 10); + var bufIdx = 0; + for (var i2 = 0; i2 < str.length; i2++) { + var uChar = str.charCodeAt(i2); + if (uChar >= 32 && uChar <= 126) { + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + inBase64 = false; + } + if (!inBase64) { + buf[bufIdx++] = uChar; + if (uChar === andChar) { + buf[bufIdx++] = minusChar; + } + } + } else { + if (!inBase64) { + buf[bufIdx++] = andChar; + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 255; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); + base64AccumIdx = 0; + } + } + } + } + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + return buf.slice(0, bufIdx); + }; + Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer2.alloc(10); + var bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + this.base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + this.inBase64 = false; + } + return buf.slice(0, bufIdx); + }; + function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + __name(Utf7IMAPDecoder, "Utf7IMAPDecoder"); + var base64IMAPChars = base64Chars.slice(); + base64IMAPChars[",".charCodeAt(0)] = true; + Utf7IMAPDecoder.prototype.write = function(buf) { + var res = ""; + var lastI = 0; + var inBase64 = this.inBase64; + var base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64IMAPChars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "&"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii").replace(/,/g, "/"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) { + i2--; + } + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) { + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + } + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/sbcs-codec.js +var require_sbcs_codec = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._sbcs = SBCSCodec; + function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) { + throw new Error("SBCS codec is called without the data."); + } + if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) { + throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); + } + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) { + asciiString += String.fromCharCode(i); + } + codecOptions.chars = asciiString + codecOptions.chars; + } + this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2"); + var encodeBuf = Buffer2.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + for (var i = 0; i < codecOptions.chars.length; i++) { + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + } + this.encodeBuf = encodeBuf; + } + __name(SBCSCodec, "SBCSCodec"); + SBCSCodec.prototype.encoder = SBCSEncoder; + SBCSCodec.prototype.decoder = SBCSDecoder; + function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; + } + __name(SBCSEncoder, "SBCSEncoder"); + SBCSEncoder.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length); + for (var i = 0; i < str.length; i++) { + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + } + return buf; + }; + SBCSEncoder.prototype.end = function() { + }; + function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; + } + __name(SBCSDecoder, "SBCSDecoder"); + SBCSDecoder.prototype.write = function(buf) { + var decodeBuf = this.decodeBuf; + var newBuf = Buffer2.alloc(buf.length * 2); + var idx1 = 0; + var idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i] * 2; + idx2 = i * 2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; + } + return newBuf.toString("ucs2"); + }; + SBCSDecoder.prototype.end = function() { + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/sbcs-data.js +var require_sbcs_data = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/sbcs-data.js"(exports, module) { + "use strict"; + module.exports = { + // Not supported by iconv, not sure why. + 10029: "maccenteuro", + maccenteuro: { + type: "_sbcs", + chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" + }, + 808: "cp808", + ibm808: "cp808", + cp808: { + type: "_sbcs", + chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" + }, + mik: { + type: "_sbcs", + chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + cp720: { + type: "_sbcs", + chars: "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + // Aliases of generated encodings. + ascii8bit: "ascii", + usascii: "ascii", + ansix34: "ascii", + ansix341968: "ascii", + ansix341986: "ascii", + csascii: "ascii", + cp367: "ascii", + ibm367: "ascii", + isoir6: "ascii", + iso646us: "ascii", + iso646irv: "ascii", + us: "ascii", + latin1: "iso88591", + latin2: "iso88592", + latin3: "iso88593", + latin4: "iso88594", + latin5: "iso88599", + latin6: "iso885910", + latin7: "iso885913", + latin8: "iso885914", + latin9: "iso885915", + latin10: "iso885916", + csisolatin1: "iso88591", + csisolatin2: "iso88592", + csisolatin3: "iso88593", + csisolatin4: "iso88594", + csisolatincyrillic: "iso88595", + csisolatinarabic: "iso88596", + csisolatingreek: "iso88597", + csisolatinhebrew: "iso88598", + csisolatin5: "iso88599", + csisolatin6: "iso885910", + l1: "iso88591", + l2: "iso88592", + l3: "iso88593", + l4: "iso88594", + l5: "iso88599", + l6: "iso885910", + l7: "iso885913", + l8: "iso885914", + l9: "iso885915", + l10: "iso885916", + isoir14: "iso646jp", + isoir57: "iso646cn", + isoir100: "iso88591", + isoir101: "iso88592", + isoir109: "iso88593", + isoir110: "iso88594", + isoir144: "iso88595", + isoir127: "iso88596", + isoir126: "iso88597", + isoir138: "iso88598", + isoir148: "iso88599", + isoir157: "iso885910", + isoir166: "tis620", + isoir179: "iso885913", + isoir199: "iso885914", + isoir203: "iso885915", + isoir226: "iso885916", + cp819: "iso88591", + ibm819: "iso88591", + cyrillic: "iso88595", + arabic: "iso88596", + arabic8: "iso88596", + ecma114: "iso88596", + asmo708: "iso88596", + greek: "iso88597", + greek8: "iso88597", + ecma118: "iso88597", + elot928: "iso88597", + hebrew: "iso88598", + hebrew8: "iso88598", + iso88598i: "iso88598", + iso88598e: "iso88598", + turkish: "iso88599", + turkish8: "iso88599", + thai: "iso885911", + thai8: "iso885911", + celtic: "iso885914", + celtic8: "iso885914", + isoceltic: "iso885914", + tis6200: "tis620", + tis62025291: "tis620", + tis62025330: "tis620", + 1e4: "macroman", + 10006: "macgreek", + 10007: "maccyrillic", + 10079: "maciceland", + 10081: "macturkish", + cspc8codepage437: "cp437", + cspc775baltic: "cp775", + cspc850multilingual: "cp850", + cspcp852: "cp852", + cspc862latinhebrew: "cp862", + cpgr: "cp869", + msee: "cp1250", + mscyrl: "cp1251", + msansi: "cp1252", + msgreek: "cp1253", + msturk: "cp1254", + mshebr: "cp1255", + msarab: "cp1256", + winbaltrim: "cp1257", + cp20866: "koi8r", + 20866: "koi8r", + ibm878: "koi8r", + cskoi8r: "koi8r", + cp21866: "koi8u", + 21866: "koi8u", + ibm1168: "koi8u", + strk10482002: "rk1048", + tcvn5712: "tcvn", + tcvn57121: "tcvn", + gb198880: "iso646cn", + cn: "iso646cn", + csiso14jisc6220ro: "iso646jp", + jisc62201969ro: "iso646jp", + jp: "iso646jp", + cshproman8: "hproman8", + r8: "hproman8", + roman8: "hproman8", + xroman8: "hproman8", + ibm1051: "hproman8", + mac: "macintosh", + csmacintosh: "macintosh" + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/sbcs-data-generated.js +var require_sbcs_data_generated = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports, module) { + "use strict"; + module.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "macgreek": { + "type": "_sbcs", + "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" + }, + "maciceland": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macroman": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macromania": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macthai": { + "type": "_sbcs", + "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "macturkish": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macukraine": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "koi8r": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8u": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8t": { + "type": "_sbcs", + "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "armscii8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" + }, + "rk1048": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "georgianps": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "pt154": { + "type": "_sbcs", + "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "viscii": { + "type": "_sbcs", + "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "hproman8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" + }, + "macintosh": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "ascii": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "tis620": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + } + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/dbcs-codec.js +var require_dbcs_codec = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._dbcs = DBCSCodec; + var UNASSIGNED = -1; + var GB18030_CODE = -2; + var SEQ_START = -10; + var NODE_START = -1e3; + var UNASSIGNED_NODE = new Array(256); + var DEF_CHAR = -1; + for (i = 0; i < 256; i++) { + UNASSIGNED_NODE[i] = UNASSIGNED; + } + var i; + function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) { + throw new Error("DBCS codec is called without the data."); + } + if (!codecOptions.table) { + throw new Error("Encoding '" + this.encodingName + "' has no data."); + } + var mappingTable = codecOptions.table(); + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); + this.decodeTableSeq = []; + for (var i2 = 0; i2 < mappingTable.length; i2++) { + this._addDecodeChunk(mappingTable[i2]); + } + if (typeof codecOptions.gb18030 === "function") { + this.gb18030 = codecOptions.gb18030(); + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var firstByteNode = this.decodeTables[0]; + for (var i2 = 129; i2 <= 254; i2++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i2]]; + for (var j = 48; j <= 57; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 129; k <= 254; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 48; l <= 57; l++) { + if (fourthByteNode[l] === UNASSIGNED) { + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + } + this.defaultCharUnicode = iconv.defaultCharUnicode; + this.encodeTable = []; + this.encodeTableSeq = []; + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) { + for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { + var val = codecOptions.encodeSkipVals[i2]; + if (typeof val === "number") { + skipEncodeChars[val] = true; + } else { + for (var j = val.from; j <= val.to; j++) { + skipEncodeChars[j] = true; + } + } + } + } + this._fillEncodeTable(0, 0, skipEncodeChars); + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) { + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + } + } + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); + } + __name(DBCSCodec, "DBCSCodec"); + DBCSCodec.prototype.encoder = DBCSEncoder; + DBCSCodec.prototype.decoder = DBCSDecoder; + DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>>= 8) { + bytes.push(addr & 255); + } + if (bytes.length == 0) { + bytes.push(0); + } + var node = this.decodeTables[0]; + for (var i2 = bytes.length - 1; i2 > 0; i2--) { + var val = node[bytes[i2]]; + if (val == UNASSIGNED) { + node[bytes[i2]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } else if (val <= NODE_START) { + node = this.decodeTables[NODE_START - val]; + } else { + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + } + return node; + }; + DBCSCodec.prototype._addDecodeChunk = function(chunk) { + var curAddr = parseInt(chunk[0], 16); + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 255; + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { + for (var l = 0; l < part.length; ) { + var code = part.charCodeAt(l++); + if (code >= 55296 && code < 56320) { + var codeTrail = part.charCodeAt(l++); + if (codeTrail >= 56320 && codeTrail < 57344) { + writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); + } else { + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } + } else if (code > 4080 && code <= 4095) { + var len = 4095 - code + 2; + var seq = []; + for (var m = 0; m < len; m++) { + seq.push(part.charCodeAt(l++)); + } + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } else { + writeTable[curAddr++] = code; + } + } + } else if (typeof part === "number") { + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) { + writeTable[curAddr++] = charCode++; + } + } else { + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + } + if (curAddr > 255) { + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); + } + }; + DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; + if (this.encodeTable[high] === void 0) { + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); + } + return this.encodeTable[high]; + }; + DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + if (bucket[low] <= SEQ_START) { + this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; + } else if (bucket[low] == UNASSIGNED) { + bucket[low] = dbcsCode; + } + }; + DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + var node; + if (bucket[low] <= SEQ_START) { + node = this.encodeTableSeq[SEQ_START - bucket[low]]; + } else { + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + for (var j = 1; j < seq.length - 1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === "object") { + node = oldVal; + } else { + node = node[uCode] = {}; + if (oldVal !== void 0) { + node[DEF_CHAR] = oldVal; + } + } + } + uCode = seq[seq.length - 1]; + node[uCode] = dbcsCode; + }; + DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; + for (var i2 = 0; i2 < 256; i2++) { + var uCode = node[i2]; + var mbCode = prefix + i2; + if (skipEncodeChars[mbCode]) { + continue; + } + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode); + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { + var newPrefix = mbCode << 8 >>> 0; + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { + hasValues = true; + } else { + subNodeEmpty[subNodeIdx] = true; + } + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } + } + return hasValues; + }; + function DBCSEncoder(options, codec) { + this.leadSurrogate = -1; + this.seqObj = void 0; + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; + } + __name(DBCSEncoder, "DBCSEncoder"); + DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3)); + var leadSurrogate = this.leadSurrogate; + var seqObj = this.seqObj; + var nextChar = -1; + var i2 = 0; + var j = 0; + while (true) { + if (nextChar === -1) { + if (i2 == str.length) break; + var uCode = str.charCodeAt(i2++); + } else { + var uCode = nextChar; + nextChar = -1; + } + if (uCode >= 55296 && uCode < 57344) { + if (uCode < 56320) { + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + uCode = UNASSIGNED; + } + } else { + if (leadSurrogate !== -1) { + uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); + leadSurrogate = -1; + } else { + uCode = UNASSIGNED; + } + } + } else if (leadSurrogate !== -1) { + nextChar = uCode; + uCode = UNASSIGNED; + leadSurrogate = -1; + } + var dbcsCode = UNASSIGNED; + if (seqObj !== void 0 && uCode != UNASSIGNED) { + var resCode = seqObj[uCode]; + if (typeof resCode === "object") { + seqObj = resCode; + continue; + } else if (typeof resCode === "number") { + dbcsCode = resCode; + } else if (resCode == void 0) { + resCode = seqObj[DEF_CHAR]; + if (resCode !== void 0) { + dbcsCode = resCode; + nextChar = uCode; + } else { + } + } + seqObj = void 0; + } else if (uCode >= 0) { + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== void 0) { + dbcsCode = subtable[uCode & 255]; + } + if (dbcsCode <= SEQ_START) { + seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; + continue; + } + if (dbcsCode == UNASSIGNED && this.gb18030) { + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); + dbcsCode = dbcsCode % 12600; + newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); + dbcsCode = dbcsCode % 1260; + newBuf[j++] = 129 + Math.floor(dbcsCode / 10); + dbcsCode = dbcsCode % 10; + newBuf[j++] = 48 + dbcsCode; + continue; + } + } + } + if (dbcsCode === UNASSIGNED) { + dbcsCode = this.defaultCharSingleByte; + } + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else if (dbcsCode < 65536) { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } else if (dbcsCode < 16777216) { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = dbcsCode >> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = dbcsCode >>> 16 & 255; + newBuf[j++] = dbcsCode >>> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } + } + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === void 0) { + return; + } + var newBuf = Buffer2.alloc(10); + var j = 0; + if (this.seqObj) { + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== void 0) { + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } + } else { + } + this.seqObj = void 0; + } + if (this.leadSurrogate !== -1) { + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.findIdx = findIdx; + function DBCSDecoder(options, codec) { + this.nodeIdx = 0; + this.prevBytes = []; + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; + } + __name(DBCSDecoder, "DBCSDecoder"); + DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer2.alloc(buf.length * 2); + var nodeIdx = this.nodeIdx; + var prevBytes = this.prevBytes; + var prevOffset = this.prevBytes.length; + var seqStart = -this.prevBytes.length; + var uCode; + for (var i2 = 0, j = 0; i2 < buf.length; i2++) { + var curByte = i2 >= 0 ? buf[i2] : prevBytes[i2 + prevOffset]; + var uCode = this.decodeTables[nodeIdx][curByte]; + if (uCode >= 0) { + } else if (uCode === UNASSIGNED) { + uCode = this.defaultCharUnicode.charCodeAt(0); + i2 = seqStart; + } else if (uCode === GB18030_CODE) { + if (i2 >= 3) { + var ptr = (buf[i2 - 3] - 129) * 12600 + (buf[i2 - 2] - 48) * 1260 + (buf[i2 - 1] - 129) * 10 + (curByte - 48); + } else { + var ptr = (prevBytes[i2 - 3 + prevOffset] - 129) * 12600 + ((i2 - 2 >= 0 ? buf[i2 - 2] : prevBytes[i2 - 2 + prevOffset]) - 48) * 1260 + ((i2 - 1 >= 0 ? buf[i2 - 1] : prevBytes[i2 - 1 + prevOffset]) - 129) * 10 + (curByte - 48); + } + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } else if (uCode <= NODE_START) { + nodeIdx = NODE_START - uCode; + continue; + } else if (uCode <= SEQ_START) { + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length - 1]; + } else { + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + } + if (uCode >= 65536) { + uCode -= 65536; + var uCodeLead = 55296 | uCode >> 10; + newBuf[j++] = uCodeLead & 255; + newBuf[j++] = uCodeLead >> 8; + uCode = 56320 | uCode & 1023; + } + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + nodeIdx = 0; + seqStart = i2 + 1; + } + this.nodeIdx = nodeIdx; + this.prevBytes = seqStart >= 0 ? Array.prototype.slice.call(buf, seqStart) : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + return newBuf.slice(0, j).toString("ucs2"); + }; + DBCSDecoder.prototype.end = function() { + var ret = ""; + while (this.prevBytes.length > 0) { + ret += this.defaultCharUnicode; + var bytesArr = this.prevBytes.slice(1); + this.prevBytes = []; + this.nodeIdx = 0; + if (bytesArr.length > 0) { + ret += this.write(bytesArr); + } + } + this.prevBytes = []; + this.nodeIdx = 0; + return ret; + }; + function findIdx(table, val) { + if (table[0] > val) { + return -1; + } + var l = 0; + var r = table.length; + while (l < r - 1) { + var mid = l + (r - l + 1 >> 1); + if (table[mid] <= val) { + l = mid; + } else { + r = mid; + } + } + return l; + } + __name(findIdx, "findIdx"); + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/shiftjis.json +var require_shiftjis = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports, module) { + module.exports = [ + ["0", "\0", 128], + ["a1", "\uFF61", 62], + ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], + ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["81fc", "\u25EF"], + ["824f", "\uFF10", 9], + ["8260", "\uFF21", 25], + ["8281", "\uFF41", 25], + ["829f", "\u3041", 82], + ["8340", "\u30A1", 62], + ["8380", "\u30E0", 22], + ["839f", "\u0391", 16, "\u03A3", 6], + ["83bf", "\u03B1", 16, "\u03C3", 6], + ["8440", "\u0410", 5, "\u0401\u0416", 25], + ["8470", "\u0430", 5, "\u0451\u0436", 7], + ["8480", "\u043E", 17], + ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["8740", "\u2460", 19, "\u2160", 9], + ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["877e", "\u337B"], + ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], + ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], + ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], + ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], + ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], + ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], + ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], + ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], + ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], + ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], + ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], + ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], + ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], + ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], + ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], + ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], + ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], + ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], + ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], + ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], + ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], + ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], + ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], + ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], + ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], + ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], + ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], + ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], + ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], + ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], + ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], + ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], + ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], + ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], + ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], + ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["f040", "\uE000", 62], + ["f080", "\uE03F", 124], + ["f140", "\uE0BC", 62], + ["f180", "\uE0FB", 124], + ["f240", "\uE178", 62], + ["f280", "\uE1B7", 124], + ["f340", "\uE234", 62], + ["f380", "\uE273", 124], + ["f440", "\uE2F0", 62], + ["f480", "\uE32F", 124], + ["f540", "\uE3AC", 62], + ["f580", "\uE3EB", 124], + ["f640", "\uE468", 62], + ["f680", "\uE4A7", 124], + ["f740", "\uE524", 62], + ["f780", "\uE563", 124], + ["f840", "\uE5E0", 62], + ["f880", "\uE61F", 124], + ["f940", "\uE69C"], + ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], + ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], + ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], + ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], + ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/eucjp.json +var require_eucjp = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/eucjp.json"(exports, module) { + module.exports = [ + ["0", "\0", 127], + ["8ea1", "\uFF61", 62], + ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], + ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["a2fe", "\u25EF"], + ["a3b0", "\uFF10", 9], + ["a3c1", "\uFF21", 25], + ["a3e1", "\uFF41", 25], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["ada1", "\u2460", 19, "\u2160", 9], + ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], + ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], + ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], + ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], + ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], + ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], + ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], + ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], + ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], + ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], + ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], + ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], + ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], + ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], + ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], + ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], + ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], + ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], + ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], + ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], + ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], + ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], + ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], + ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], + ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], + ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], + ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], + ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], + ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], + ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], + ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], + ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], + ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], + ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], + ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], + ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], + ["8fa2c2", "\xA1\xA6\xBF"], + ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], + ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], + ["8fa6e7", "\u038C"], + ["8fa6e9", "\u038E\u03AB"], + ["8fa6ec", "\u038F"], + ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], + ["8fa7c2", "\u0402", 10, "\u040E\u040F"], + ["8fa7f2", "\u0452", 10, "\u045E\u045F"], + ["8fa9a1", "\xC6\u0110"], + ["8fa9a4", "\u0126"], + ["8fa9a6", "\u0132"], + ["8fa9a8", "\u0141\u013F"], + ["8fa9ab", "\u014A\xD8\u0152"], + ["8fa9af", "\u0166\xDE"], + ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], + ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], + ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], + ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], + ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], + ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], + ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], + ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], + ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], + ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], + ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], + ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], + ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], + ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], + ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], + ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], + ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], + ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], + ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], + ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], + ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], + ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], + ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], + ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], + ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], + ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], + ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], + ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], + ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], + ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], + ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], + ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], + ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], + ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], + ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], + ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], + ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], + ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], + ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], + ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], + ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], + ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], + ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], + ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], + ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], + ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], + ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], + ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], + ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], + ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], + ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], + ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], + ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], + ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], + ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], + ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], + ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], + ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], + ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], + ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], + ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], + ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], + ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], + ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], + ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], + ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], + ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], + ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/cp936.json +var require_cp936 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/cp936.json"(exports, module) { + module.exports = [ + ["0", "\0", 127, "\u20AC"], + ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], + ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], + ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], + ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], + ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], + ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], + ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], + ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], + ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], + ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], + ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], + ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], + ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], + ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], + ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], + ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], + ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], + ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], + ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], + ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], + ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], + ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], + ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], + ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], + ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], + ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], + ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], + ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], + ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], + ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], + ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], + ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], + ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], + ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], + ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], + ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], + ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], + ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], + ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], + ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], + ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], + ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], + ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], + ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], + ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], + ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], + ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], + ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], + ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], + ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], + ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], + ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], + ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], + ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], + ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], + ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], + ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], + ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], + ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], + ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], + ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], + ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], + ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], + ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], + ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], + ["a2a1", "\u2170", 9], + ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], + ["a2e5", "\u3220", 9], + ["a2f1", "\u2160", 11], + ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], + ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], + ["a6f4", "\uFE33\uFE34"], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], + ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], + ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], + ["a8bd", "\u0144\u0148"], + ["a8c0", "\u0261"], + ["a8c5", "\u3105", 36], + ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], + ["a959", "\u2121\u3231"], + ["a95c", "\u2010"], + ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], + ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], + ["a996", "\u3007"], + ["a9a4", "\u2500", 75], + ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], + ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], + ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], + ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], + ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], + ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], + ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], + ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], + ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], + ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], + ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], + ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], + ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], + ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], + ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], + ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], + ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], + ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], + ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], + ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], + ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], + ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], + ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], + ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], + ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], + ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], + ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], + ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], + ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], + ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], + ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], + ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], + ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], + ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], + ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], + ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], + ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], + ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], + ["bd40", "\u7D37", 54, "\u7D6F", 7], + ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], + ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], + ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], + ["bf40", "\u7DFB", 62], + ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], + ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], + ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], + ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], + ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], + ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], + ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], + ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], + ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], + ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], + ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], + ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], + ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], + ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], + ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], + ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], + ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], + ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], + ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], + ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], + ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], + ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], + ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], + ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], + ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], + ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], + ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], + ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], + ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], + ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], + ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], + ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], + ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], + ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], + ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], + ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], + ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], + ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], + ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], + ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], + ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], + ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], + ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], + ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], + ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], + ["d640", "\u8AE4", 34, "\u8B08", 27], + ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], + ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], + ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], + ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], + ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], + ["d940", "\u8CAE", 62], + ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], + ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], + ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], + ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], + ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], + ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], + ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], + ["dd40", "\u8EE5", 62], + ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], + ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], + ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], + ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], + ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], + ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], + ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], + ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], + ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], + ["e240", "\u91E6", 62], + ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], + ["e340", "\u9246", 45, "\u9275", 16], + ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], + ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], + ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], + ["e540", "\u930A", 51, "\u933F", 10], + ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], + ["e640", "\u936C", 34, "\u9390", 27], + ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], + ["e740", "\u93CE", 7, "\u93D7", 54], + ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], + ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], + ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], + ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], + ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], + ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], + ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], + ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], + ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], + ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], + ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], + ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], + ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], + ["ee40", "\u980F", 62], + ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], + ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], + ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], + ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], + ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], + ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], + ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], + ["f240", "\u99FA", 62], + ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], + ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], + ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], + ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], + ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], + ["f540", "\u9B7C", 62], + ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], + ["f640", "\u9BDC", 62], + ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], + ["f740", "\u9C3C", 62], + ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], + ["f840", "\u9CE3", 62], + ["f880", "\u9D22", 32], + ["f940", "\u9D43", 62], + ["f980", "\u9D82", 32], + ["fa40", "\u9DA3", 62], + ["fa80", "\u9DE2", 32], + ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], + ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], + ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], + ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], + ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], + ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], + ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/gbk-added.json +var require_gbk_added = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports, module) { + module.exports = [ + ["a140", "\uE4C6", 62], + ["a180", "\uE505", 32], + ["a240", "\uE526", 62], + ["a280", "\uE565", 32], + ["a2ab", "\uE766", 5], + ["a2e3", "\u20AC\uE76D"], + ["a2ef", "\uE76E\uE76F"], + ["a2fd", "\uE770\uE771"], + ["a340", "\uE586", 62], + ["a380", "\uE5C5", 31, "\u3000"], + ["a440", "\uE5E6", 62], + ["a480", "\uE625", 32], + ["a4f4", "\uE772", 10], + ["a540", "\uE646", 62], + ["a580", "\uE685", 32], + ["a5f7", "\uE77D", 7], + ["a640", "\uE6A6", 62], + ["a680", "\uE6E5", 32], + ["a6b9", "\uE785", 7], + ["a6d9", "\uE78D", 6], + ["a6ec", "\uE794\uE795"], + ["a6f3", "\uE796"], + ["a6f6", "\uE797", 8], + ["a740", "\uE706", 62], + ["a780", "\uE745", 32], + ["a7c2", "\uE7A0", 14], + ["a7f2", "\uE7AF", 12], + ["a896", "\uE7BC", 10], + ["a8bc", "\u1E3F"], + ["a8bf", "\u01F9"], + ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], + ["a8ea", "\uE7CD", 20], + ["a958", "\uE7E2"], + ["a95b", "\uE7E3"], + ["a95d", "\uE7E4\uE7E5\uE7E6"], + ["a989", "\u303E\u2FF0", 11], + ["a997", "\uE7F4", 12], + ["a9f0", "\uE801", 14], + ["aaa1", "\uE000", 93], + ["aba1", "\uE05E", 93], + ["aca1", "\uE0BC", 93], + ["ada1", "\uE11A", 93], + ["aea1", "\uE178", 93], + ["afa1", "\uE1D6", 93], + ["d7fa", "\uE810", 4], + ["f8a1", "\uE234", 93], + ["f9a1", "\uE292", 93], + ["faa1", "\uE2F0", 93], + ["fba1", "\uE34E", 93], + ["fca1", "\uE3AC", 93], + ["fda1", "\uE40A", 93], + ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], + ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93], + ["8135f437", "\uE7C7"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +var require_gb18030_ranges = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports, module) { + module.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/cp949.json +var require_cp949 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/cp949.json"(exports, module) { + module.exports = [ + ["0", "\0", 127], + ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], + ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], + ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], + ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], + ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], + ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], + ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], + ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], + ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], + ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], + ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], + ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], + ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], + ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], + ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], + ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], + ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], + ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], + ["8741", "\uB19E", 9, "\uB1A9", 15], + ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], + ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], + ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], + ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], + ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], + ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], + ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], + ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], + ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], + ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], + ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], + ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], + ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], + ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], + ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], + ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], + ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], + ["8d41", "\uB6C3", 16, "\uB6D5", 8], + ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], + ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], + ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], + ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], + ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], + ["8f41", "\uB885", 7, "\uB88E", 17], + ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], + ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], + ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], + ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], + ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], + ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], + ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], + ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], + ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], + ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], + ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], + ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], + ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], + ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], + ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], + ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], + ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], + ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], + ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], + ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], + ["9641", "\uBEB8", 23, "\uBED2\uBED3"], + ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], + ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], + ["9741", "\uBF83", 16, "\uBF95", 8], + ["9761", "\uBF9E", 17, "\uBFB1", 7], + ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], + ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], + ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], + ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], + ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], + ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], + ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], + ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], + ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], + ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], + ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], + ["9b61", "\uC333", 17, "\uC346", 7], + ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], + ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], + ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], + ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], + ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], + ["9d61", "\uC4C6", 25], + ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], + ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], + ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], + ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], + ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], + ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], + ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], + ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], + ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], + ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], + ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], + ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], + ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], + ["a241", "\uC910\uC912", 5, "\uC919", 18], + ["a261", "\uC92D", 6, "\uC935", 18], + ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], + ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], + ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], + ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], + ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], + ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], + ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], + ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], + ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], + ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], + ["a5b0", "\u2160", 9], + ["a5c1", "\u0391", 16, "\u03A3", 6], + ["a5e1", "\u03B1", 16, "\u03C3", 6], + ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], + ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], + ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], + ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], + ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], + ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], + ["a841", "\uCB6D", 10, "\uCB7A", 14], + ["a861", "\uCB89", 18, "\uCB9D", 6], + ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], + ["a8a6", "\u0132"], + ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], + ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], + ["a941", "\uCBC5", 14, "\uCBD5", 10], + ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], + ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], + ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], + ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], + ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], + ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], + ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], + ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], + ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], + ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], + ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], + ["acd1", "\u0430", 5, "\u0451\u0436", 25], + ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], + ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], + ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], + ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], + ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], + ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], + ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], + ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], + ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], + ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], + ["b061", "\uCEBB", 5, "\uCEC2", 19], + ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], + ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], + ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], + ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], + ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], + ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], + ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], + ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], + ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], + ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], + ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], + ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], + ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], + ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], + ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], + ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], + ["b641", "\uD105", 7, "\uD10E", 17], + ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], + ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], + ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], + ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], + ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], + ["b841", "\uD1D0", 7, "\uD1D9", 17], + ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], + ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], + ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], + ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], + ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], + ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], + ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], + ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], + ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], + ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], + ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], + ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], + ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], + ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], + ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], + ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], + ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], + ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], + ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], + ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], + ["bf41", "\uD49E", 10, "\uD4AA", 14], + ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], + ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], + ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], + ["c061", "\uD51E", 25], + ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], + ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], + ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], + ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], + ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], + ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], + ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], + ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], + ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], + ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], + ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], + ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], + ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], + ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], + ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], + ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], + ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], + ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], + ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], + ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], + ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], + ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], + ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], + ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], + ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], + ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], + ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], + ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], + ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], + ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], + ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], + ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], + ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], + ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], + ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], + ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], + ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], + ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], + ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], + ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], + ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], + ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], + ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], + ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], + ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], + ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], + ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], + ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], + ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], + ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], + ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], + ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], + ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], + ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], + ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], + ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], + ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], + ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], + ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], + ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], + ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], + ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], + ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], + ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], + ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], + ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], + ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], + ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], + ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], + ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], + ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], + ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/cp950.json +var require_cp950 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/cp950.json"(exports, module) { + module.exports = [ + ["0", "\0", 127], + ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], + ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], + ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], + ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], + ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], + ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], + ["a3e1", "\u20AC"], + ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], + ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], + ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], + ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], + ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], + ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], + ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], + ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], + ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], + ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], + ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], + ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], + ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], + ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], + ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], + ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], + ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], + ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], + ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], + ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], + ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], + ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], + ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], + ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], + ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], + ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], + ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], + ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], + ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], + ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], + ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], + ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], + ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], + ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], + ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], + ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], + ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], + ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], + ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], + ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], + ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], + ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], + ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], + ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], + ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], + ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], + ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], + ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], + ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], + ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], + ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], + ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], + ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], + ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], + ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], + ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], + ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], + ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], + ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], + ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], + ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], + ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], + ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], + ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], + ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], + ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], + ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], + ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], + ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], + ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], + ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], + ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], + ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], + ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], + ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], + ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], + ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], + ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], + ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], + ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], + ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], + ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], + ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], + ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], + ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], + ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], + ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], + ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], + ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], + ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], + ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], + ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], + ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], + ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], + ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], + ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], + ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], + ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], + ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], + ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], + ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], + ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], + ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], + ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], + ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], + ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], + ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], + ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], + ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], + ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], + ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], + ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], + ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], + ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], + ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], + ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], + ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], + ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], + ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], + ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], + ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], + ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], + ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], + ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], + ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], + ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], + ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], + ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], + ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], + ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], + ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], + ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], + ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], + ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], + ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], + ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], + ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], + ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], + ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], + ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], + ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], + ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], + ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], + ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], + ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], + ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], + ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], + ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], + ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], + ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], + ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], + ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], + ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], + ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], + ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], + ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], + ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], + ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], + ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], + ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], + ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], + ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], + ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], + ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], + ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], + ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], + ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/big5-added.json +var require_big5_added = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/tables/big5-added.json"(exports, module) { + module.exports = [ + ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], + ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], + ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], + ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], + ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], + ["8940", "\u{2A3A9}\u{21145}"], + ["8943", "\u650A"], + ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], + ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], + ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], + ["89ab", "\u918C\u78B8\u915E\u80BC"], + ["89b0", "\u8D0B\u80F6\u{209E7}"], + ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], + ["89c1", "\u6E9A\u823E\u7519"], + ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], + ["8a40", "\u{27D84}\u5525"], + ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], + ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], + ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], + ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], + ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], + ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], + ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], + ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], + ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], + ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], + ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], + ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], + ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], + ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], + ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], + ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], + ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], + ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], + ["8cc9", "\u9868\u676B\u4276\u573D"], + ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], + ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], + ["8d40", "\u{20B9F}"], + ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], + ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], + ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], + ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], + ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], + ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], + ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], + ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], + ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], + ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], + ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], + ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], + ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], + ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], + ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], + ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], + ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], + ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], + ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], + ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], + ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], + ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], + ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], + ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], + ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], + ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], + ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], + ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], + ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], + ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], + ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], + ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], + ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], + ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], + ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], + ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], + ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], + ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], + ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], + ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], + ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], + ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], + ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], + ["9fae", "\u9159\u9681\u915C"], + ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], + ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], + ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], + ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], + ["9fe7", "\u6BFA\u8818\u7F78"], + ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], + ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], + ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], + ["a055", "\u{2183B}\u{26E05}"], + ["a058", "\u8A7E\u{2251B}"], + ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], + ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], + ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], + ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], + ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], + ["a0ae", "\u77FE"], + ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], + ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], + ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], + ["a3c0", "\u2400", 31, "\u2421"], + ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], + ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], + ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], + ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], + ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], + ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], + ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], + ["f9fe", "\uFFED"], + ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], + ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], + ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], + ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], + ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], + ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], + ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], + ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], + ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], + ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] + ]; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/dbcs-data.js +var require_dbcs_data = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/dbcs-data.js"(exports, module) { + "use strict"; + module.exports = { + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + shiftjis: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_shiftjis(); + }, "table"), + encodeAdd: { "\xA5": 92, "\u203E": 126 }, + encodeSkipVals: [{ from: 60736, to: 63808 }] + }, + csshiftjis: "shiftjis", + mskanji: "shiftjis", + sjis: "shiftjis", + windows31j: "shiftjis", + ms31j: "shiftjis", + xsjis: "shiftjis", + windows932: "shiftjis", + ms932: "shiftjis", + 932: "shiftjis", + cp932: "shiftjis", + eucjp: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_eucjp(); + }, "table"), + encodeAdd: { "\xA5": 92, "\u203E": 126 } + }, + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + gb2312: "cp936", + gb231280: "cp936", + gb23121980: "cp936", + csgb2312: "cp936", + csiso58gb231280: "cp936", + euccn: "cp936", + // Microsoft's CP936 is a subset and approximation of GBK. + windows936: "cp936", + ms936: "cp936", + 936: "cp936", + cp936: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_cp936(); + }, "table") + }, + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + gbk: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_cp936().concat(require_gbk_added()); + }, "table") + }, + xgbk: "gbk", + isoir58: "gbk", + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + gb18030: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_cp936().concat(require_gbk_added()); + }, "table"), + gb18030: /* @__PURE__ */ __name(function() { + return require_gb18030_ranges(); + }, "gb18030"), + encodeSkipVals: [128], + encodeAdd: { "\u20AC": 41699 } + }, + chinese: "gb18030", + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + windows949: "cp949", + ms949: "cp949", + 949: "cp949", + cp949: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_cp949(); + }, "table") + }, + cseuckr: "cp949", + csksc56011987: "cp949", + euckr: "cp949", + isoir149: "cp949", + korean: "cp949", + ksc56011987: "cp949", + ksc56011989: "cp949", + ksc5601: "cp949", + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + windows950: "cp950", + ms950: "cp950", + 950: "cp950", + cp950: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_cp950(); + }, "table") + }, + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + big5: "big5hkscs", + big5hkscs: { + type: "_dbcs", + table: /* @__PURE__ */ __name(function() { + return require_cp950().concat(require_big5_added()); + }, "table"), + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 36457, + 36463, + 36478, + 36523, + 36532, + 36557, + 36560, + 36695, + 36713, + 36718, + 36811, + 36862, + 36973, + 36986, + 37060, + 37084, + 37105, + 37311, + 37551, + 37552, + 37553, + 37554, + 37585, + 37959, + 38090, + 38361, + 38652, + 39285, + 39798, + 39800, + 39803, + 39878, + 39902, + 39916, + 39926, + 40002, + 40019, + 40034, + 40040, + 40043, + 40055, + 40124, + 40125, + 40144, + 40279, + 40282, + 40388, + 40431, + 40443, + 40617, + 40687, + 40701, + 40800, + 40907, + 41079, + 41180, + 41183, + 36812, + 37576, + 38468, + 38637, + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 41636, + 41637, + 41639, + 41638, + 41676, + 41678 + ] + }, + cnbig5: "big5hkscs", + csbig5: "big5hkscs", + xxbig5: "big5hkscs" + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/index.js +var require_encodings = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/encodings/index.js"(exports, module) { + "use strict"; + var mergeModules = require_merge_exports(); + var modules = [ + require_internal(), + require_utf32(), + require_utf16(), + require_utf7(), + require_sbcs_codec(), + require_sbcs_data(), + require_sbcs_data_generated(), + require_dbcs_codec(), + require_dbcs_data() + ]; + for (i = 0; i < modules.length; i++) { + module = modules[i]; + mergeModules(exports, module); + } + var module; + var i; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/streams.js +var require_streams = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/streams.js"(exports, module) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module.exports = function(streamModule) { + var Transform2 = streamModule.Transform; + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; + Transform2.call(this, options); + } + __name(IconvLiteEncoderStream, "IconvLiteEncoderStream"); + IconvLiteEncoderStream.prototype = Object.create(Transform2.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk !== "string") { + return done(new Error("Iconv encoding stream needs strings as its input.")); + } + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on("error", cb); + this.on("data", function(chunk) { + chunks.push(chunk); + }); + this.on("end", function() { + cb(null, Buffer2.concat(chunks)); + }); + return this; + }; + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = "utf8"; + Transform2.call(this, options); + } + __name(IconvLiteDecoderStream, "IconvLiteDecoderStream"); + IconvLiteDecoderStream.prototype = Object.create(Transform2.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer2.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { + return done(new Error("Iconv decoding stream needs buffers as its input.")); + } + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ""; + this.on("error", cb); + this.on("data", function(chunk) { + res += chunk; + }); + this.on("end", function() { + cb(null, res); + }); + return this; + }; + return { + IconvLiteEncoderStream, + IconvLiteDecoderStream + }; + }; + } +}); + +// ../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/index.js +var require_lib3 = __commonJS({ + "../../node_modules/.pnpm/iconv-lite@0.7.3/node_modules/iconv-lite/lib/index.js"(exports, module) { + "use strict"; + var Buffer2 = require_safer().Buffer; + var bomHandling = require_bom_handling(); + var mergeModules = require_merge_exports(); + module.exports.encodings = null; + module.exports.defaultCharUnicode = "\uFFFD"; + module.exports.defaultCharSingleByte = "?"; + module.exports.encode = /* @__PURE__ */ __name(function encode(str, encoding, options) { + str = "" + (str || ""); + var encoder = module.exports.getEncoder(encoding, options); + var res = encoder.write(str); + var trail = encoder.end(); + return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res; + }, "encode"); + module.exports.decode = /* @__PURE__ */ __name(function decode(buf, encoding, options) { + if (typeof buf === "string") { + if (!module.exports.skipDecodeWarning) { + console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); + module.exports.skipDecodeWarning = true; + } + buf = Buffer2.from("" + (buf || ""), "binary"); + } + var decoder = module.exports.getDecoder(encoding, options); + var res = decoder.write(buf); + var trail = decoder.end(); + return trail ? res + trail : res; + }, "decode"); + module.exports.encodingExists = /* @__PURE__ */ __name(function encodingExists(enc) { + try { + module.exports.getCodec(enc); + return true; + } catch (e) { + return false; + } + }, "encodingExists"); + module.exports.toEncoding = module.exports.encode; + module.exports.fromEncoding = module.exports.decode; + module.exports._codecDataCache = { __proto__: null }; + module.exports.getCodec = /* @__PURE__ */ __name(function getCodec(encoding) { + if (!module.exports.encodings) { + var raw = require_encodings(); + module.exports.encodings = { __proto__: null }; + mergeModules(module.exports.encodings, raw); + } + var enc = module.exports._canonicalizeEncoding(encoding); + var codecOptions = {}; + while (true) { + var codec = module.exports._codecDataCache[enc]; + if (codec) { + return codec; + } + var codecDef = module.exports.encodings[enc]; + switch (typeof codecDef) { + case "string": + enc = codecDef; + break; + case "object": + for (var key in codecDef) { + codecOptions[key] = codecDef[key]; + } + if (!codecOptions.encodingName) { + codecOptions.encodingName = enc; + } + enc = codecDef.type; + break; + case "function": + if (!codecOptions.encodingName) { + codecOptions.encodingName = enc; + } + codec = new codecDef(codecOptions, module.exports); + module.exports._codecDataCache[codecOptions.encodingName] = codec; + return codec; + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); + } + } + }, "getCodec"); + module.exports._canonicalizeEncoding = function(encoding) { + return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); + }; + module.exports.getEncoder = /* @__PURE__ */ __name(function getEncoder(encoding, options) { + var codec = module.exports.getCodec(encoding); + var encoder = new codec.encoder(options, codec); + if (codec.bomAware && options && options.addBOM) { + encoder = new bomHandling.PrependBOM(encoder, options); + } + return encoder; + }, "getEncoder"); + module.exports.getDecoder = /* @__PURE__ */ __name(function getDecoder(encoding, options) { + var codec = module.exports.getCodec(encoding); + var decoder = new codec.decoder(options, codec); + if (codec.bomAware && !(options && options.stripBOM === false)) { + decoder = new bomHandling.StripBOM(decoder, options); + } + return decoder; + }, "getDecoder"); + module.exports.enableStreamingAPI = /* @__PURE__ */ __name(function enableStreamingAPI(streamModule2) { + if (module.exports.supportsStreams) { + return; + } + var streams = require_streams()(streamModule2); + module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + module.exports.encodeStream = /* @__PURE__ */ __name(function encodeStream(encoding, options) { + return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options); + }, "encodeStream"); + module.exports.decodeStream = /* @__PURE__ */ __name(function decodeStream(encoding, options) { + return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options); + }, "decodeStream"); + module.exports.supportsStreams = true; + }, "enableStreamingAPI"); + var streamModule; + try { + streamModule = __require("stream"); + } catch (e) { + } + if (streamModule && streamModule.Transform) { + module.exports.enableStreamingAPI(streamModule); + } else { + module.exports.encodeStream = module.exports.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; + } + if (false) { + console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); + } + } +}); + +// ../../node_modules/.pnpm/unpipe@1.0.0/node_modules/unpipe/index.js +var require_unpipe = __commonJS({ + "../../node_modules/.pnpm/unpipe@1.0.0/node_modules/unpipe/index.js"(exports, module) { + "use strict"; + module.exports = unpipe; + function hasPipeDataListeners(stream) { + var listeners = stream.listeners("data"); + for (var i = 0; i < listeners.length; i++) { + if (listeners[i].name === "ondata") { + return true; + } + } + return false; + } + __name(hasPipeDataListeners, "hasPipeDataListeners"); + function unpipe(stream) { + if (!stream) { + throw new TypeError("argument stream is required"); + } + if (typeof stream.unpipe === "function") { + stream.unpipe(); + return; + } + if (!hasPipeDataListeners(stream)) { + return; + } + var listener; + var listeners = stream.listeners("close"); + for (var i = 0; i < listeners.length; i++) { + listener = listeners[i]; + if (listener.name !== "cleanup" && listener.name !== "onclose") { + continue; + } + listener.call(stream); + } + } + __name(unpipe, "unpipe"); + } +}); + +// ../../node_modules/.pnpm/raw-body@3.0.2/node_modules/raw-body/index.js +var require_raw_body = __commonJS({ + "../../node_modules/.pnpm/raw-body@3.0.2/node_modules/raw-body/index.js"(exports, module) { + "use strict"; + var asyncHooks = tryRequireAsyncHooks(); + var bytes = require_bytes(); + var createError = require_http_errors(); + var iconv = require_lib3(); + var unpipe = require_unpipe(); + module.exports = getRawBody; + var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /; + function getDecoder(encoding) { + if (!encoding) return null; + try { + return iconv.getDecoder(encoding); + } catch (e) { + if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e; + throw createError(415, "specified encoding unsupported", { + encoding, + type: "encoding.unsupported" + }); + } + } + __name(getDecoder, "getDecoder"); + function getRawBody(stream, options, callback) { + var done = callback; + var opts = options || {}; + if (stream === void 0) { + throw new TypeError("argument stream is required"); + } else if (typeof stream !== "object" || stream === null || typeof stream.on !== "function") { + throw new TypeError("argument stream must be a stream"); + } + if (options === true || typeof options === "string") { + opts = { + encoding: options + }; + } + if (typeof options === "function") { + done = options; + opts = {}; + } + if (done !== void 0 && typeof done !== "function") { + throw new TypeError("argument callback must be a function"); + } + if (!done && !global.Promise) { + throw new TypeError("argument callback is required"); + } + var encoding = opts.encoding !== true ? opts.encoding : "utf-8"; + var limit = bytes.parse(opts.limit); + var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null; + if (done) { + return readStream(stream, encoding, length, limit, wrap(done)); + } + return new Promise(/* @__PURE__ */ __name(function executor(resolve, reject) { + readStream(stream, encoding, length, limit, /* @__PURE__ */ __name(function onRead(err, buf) { + if (err) return reject(err); + resolve(buf); + }, "onRead")); + }, "executor")); + } + __name(getRawBody, "getRawBody"); + function halt(stream) { + unpipe(stream); + if (typeof stream.pause === "function") { + stream.pause(); + } + } + __name(halt, "halt"); + function readStream(stream, encoding, length, limit, callback) { + var complete = false; + var sync = true; + if (limit !== null && length !== null && length > limit) { + return done(createError(413, "request entity too large", { + expected: length, + length, + limit, + type: "entity.too.large" + })); + } + var state = stream._readableState; + if (stream._decoder || state && (state.encoding || state.decoder)) { + return done(createError(500, "stream encoding should not be set", { + type: "stream.encoding.set" + })); + } + if (typeof stream.readable !== "undefined" && !stream.readable) { + return done(createError(500, "stream is not readable", { + type: "stream.not.readable" + })); + } + var received = 0; + var decoder; + try { + decoder = getDecoder(encoding); + } catch (err) { + return done(err); + } + var buffer = decoder ? "" : []; + stream.on("aborted", onAborted); + stream.on("close", cleanup); + stream.on("data", onData); + stream.on("end", onEnd); + stream.on("error", onEnd); + sync = false; + function done() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + complete = true; + if (sync) { + process.nextTick(invokeCallback); + } else { + invokeCallback(); + } + function invokeCallback() { + cleanup(); + if (args[0]) { + halt(stream); + } + callback.apply(null, args); + } + __name(invokeCallback, "invokeCallback"); + } + __name(done, "done"); + function onAborted() { + if (complete) return; + done(createError(400, "request aborted", { + code: "ECONNABORTED", + expected: length, + length, + received, + type: "request.aborted" + })); + } + __name(onAborted, "onAborted"); + function onData(chunk) { + if (complete) return; + received += chunk.length; + if (limit !== null && received > limit) { + done(createError(413, "request entity too large", { + limit, + received, + type: "entity.too.large" + })); + } else if (decoder) { + buffer += decoder.write(chunk); + } else { + buffer.push(chunk); + } + } + __name(onData, "onData"); + function onEnd(err) { + if (complete) return; + if (err) return done(err); + if (length !== null && received !== length) { + done(createError(400, "request size did not match content length", { + expected: length, + length, + received, + type: "request.size.invalid" + })); + } else { + var string = decoder ? buffer + (decoder.end() || "") : Buffer.concat(buffer); + done(null, string); + } + } + __name(onEnd, "onEnd"); + function cleanup() { + buffer = null; + stream.removeListener("aborted", onAborted); + stream.removeListener("data", onData); + stream.removeListener("end", onEnd); + stream.removeListener("error", onEnd); + stream.removeListener("close", cleanup); + } + __name(cleanup, "cleanup"); + } + __name(readStream, "readStream"); + function tryRequireAsyncHooks() { + try { + return __require("async_hooks"); + } catch (e) { + return {}; + } + } + __name(tryRequireAsyncHooks, "tryRequireAsyncHooks"); + function wrap(fn) { + var res; + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); + } + if (!res || !res.runInAsyncScope) { + return fn; + } + return res.runInAsyncScope.bind(res, fn, null); + } + __name(wrap, "wrap"); + } +}); + +// ../../node_modules/.pnpm/ee-first@1.1.1/node_modules/ee-first/index.js +var require_ee_first = __commonJS({ + "../../node_modules/.pnpm/ee-first@1.1.1/node_modules/ee-first/index.js"(exports, module) { + "use strict"; + module.exports = first; + function first(stuff, done) { + if (!Array.isArray(stuff)) + throw new TypeError("arg must be an array of [ee, events...] arrays"); + var cleanups = []; + for (var i = 0; i < stuff.length; i++) { + var arr = stuff[i]; + if (!Array.isArray(arr) || arr.length < 2) + throw new TypeError("each array member must be [ee, events...]"); + var ee = arr[0]; + for (var j = 1; j < arr.length; j++) { + var event = arr[j]; + var fn = listener(event, callback); + ee.on(event, fn); + cleanups.push({ + ee, + event, + fn + }); + } + } + function callback() { + cleanup(); + done.apply(null, arguments); + } + __name(callback, "callback"); + function cleanup() { + var x; + for (var i2 = 0; i2 < cleanups.length; i2++) { + x = cleanups[i2]; + x.ee.removeListener(x.event, x.fn); + } + } + __name(cleanup, "cleanup"); + function thunk(fn2) { + done = fn2; + } + __name(thunk, "thunk"); + thunk.cancel = cleanup; + return thunk; + } + __name(first, "first"); + function listener(event, done) { + return /* @__PURE__ */ __name(function onevent(arg1) { + var args = new Array(arguments.length); + var ee = this; + var err = event === "error" ? arg1 : null; + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + done(err, ee, event, args); + }, "onevent"); + } + __name(listener, "listener"); + } +}); + +// ../../node_modules/.pnpm/on-finished@2.4.1/node_modules/on-finished/index.js +var require_on_finished = __commonJS({ + "../../node_modules/.pnpm/on-finished@2.4.1/node_modules/on-finished/index.js"(exports, module) { + "use strict"; + module.exports = onFinished; + module.exports.isFinished = isFinished; + var asyncHooks = tryRequireAsyncHooks(); + var first = require_ee_first(); + var defer2 = typeof setImmediate === "function" ? setImmediate : function(fn) { + process.nextTick(fn.bind.apply(fn, arguments)); + }; + function onFinished(msg, listener) { + if (isFinished(msg) !== false) { + defer2(listener, null, msg); + return msg; + } + attachListener(msg, wrap(listener)); + return msg; + } + __name(onFinished, "onFinished"); + function isFinished(msg) { + var socket = msg.socket; + if (typeof msg.finished === "boolean") { + return Boolean(msg.finished || socket && !socket.writable); + } + if (typeof msg.complete === "boolean") { + return Boolean(msg.upgrade || !socket || !socket.readable || msg.complete && !msg.readable); + } + return void 0; + } + __name(isFinished, "isFinished"); + function attachFinishedListener(msg, callback) { + var eeMsg; + var eeSocket; + var finished3 = false; + function onFinish(error) { + eeMsg.cancel(); + eeSocket.cancel(); + finished3 = true; + callback(error); + } + __name(onFinish, "onFinish"); + eeMsg = eeSocket = first([[msg, "end", "finish"]], onFinish); + function onSocket(socket) { + msg.removeListener("socket", onSocket); + if (finished3) return; + if (eeMsg !== eeSocket) return; + eeSocket = first([[socket, "error", "close"]], onFinish); + } + __name(onSocket, "onSocket"); + if (msg.socket) { + onSocket(msg.socket); + return; + } + msg.on("socket", onSocket); + if (msg.socket === void 0) { + patchAssignSocket(msg, onSocket); + } + } + __name(attachFinishedListener, "attachFinishedListener"); + function attachListener(msg, listener) { + var attached = msg.__onFinished; + if (!attached || !attached.queue) { + attached = msg.__onFinished = createListener(msg); + attachFinishedListener(msg, attached); + } + attached.queue.push(listener); + } + __name(attachListener, "attachListener"); + function createListener(msg) { + function listener(err) { + if (msg.__onFinished === listener) msg.__onFinished = null; + if (!listener.queue) return; + var queue = listener.queue; + listener.queue = null; + for (var i = 0; i < queue.length; i++) { + queue[i](err, msg); + } + } + __name(listener, "listener"); + listener.queue = []; + return listener; + } + __name(createListener, "createListener"); + function patchAssignSocket(res, callback) { + var assignSocket = res.assignSocket; + if (typeof assignSocket !== "function") return; + res.assignSocket = /* @__PURE__ */ __name(function _assignSocket(socket) { + assignSocket.call(this, socket); + callback(socket); + }, "_assignSocket"); + } + __name(patchAssignSocket, "patchAssignSocket"); + function tryRequireAsyncHooks() { + try { + return __require("async_hooks"); + } catch (e) { + return {}; + } + } + __name(tryRequireAsyncHooks, "tryRequireAsyncHooks"); + function wrap(fn) { + var res; + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); + } + if (!res || !res.runInAsyncScope) { + return fn; + } + return res.runInAsyncScope.bind(res, fn, null); + } + __name(wrap, "wrap"); + } +}); + +// ../../node_modules/.pnpm/content-type@2.1.0/node_modules/content-type/dist/index.js +var require_dist = __commonJS({ + "../../node_modules/.pnpm/content-type@2.1.0/node_modules/content-type/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.format = format; + exports.parse = parse; + var TEXT_REGEXP = /^[\u0009\u0020-\u007e\u0080-\u00ff]*$/; + var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + var QUOTE_REGEXP = /[\\"]/g; + var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + var NullObject = /* @__PURE__ */ (() => { + const C = /* @__PURE__ */ __name(function() { + }, "C"); + C.prototype = /* @__PURE__ */ Object.create(null); + return C; + })(); + function format(obj) { + const { type, parameters } = obj; + if (!type || !TYPE_REGEXP.test(type)) { + throw new TypeError(`Invalid type: ${type}`); + } + let result = type; + if (parameters) { + for (const param of Object.keys(parameters)) { + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError(`Invalid parameter name: ${param}`); + } + result += `; ${param}=${qstring(parameters[param])}`; + } + } + return result; + } + __name(format, "format"); + function parse(header, options) { + const stopChar = options?.comma === true ? COMMA : 65536; + const len = header.length; + let index = skipOWS(header, options?.start ?? 0, len); + const valueStart = index; + index = skipValue(header, index, len, stopChar); + const valueEnd = trailingOWS(header, valueStart, index); + const type = header.slice(valueStart, valueEnd).toLowerCase(); + if (options?.parameters === false) { + return { type, index, parameters: new NullObject() }; + } + return parseParameters(header, type, index, len, stopChar); + } + __name(parse, "parse"); + var SP = 32; + var HTAB = 9; + var SEMI = 59; + var EQ = 61; + var DQUOTE = 34; + var BSLASH = 92; + var COMMA = 44; + function parseParameters(header, type, index, len, stopChar) { + const parameters = new NullObject(); + parameter: while (index < len) { + if (header.charCodeAt(index) === stopChar) + break; + index = skipOWS(header, index + 1, len); + const keyStart = index; + while (index < len) { + const code = header.charCodeAt(index); + if (code === stopChar) + break parameter; + if (code === SEMI) + continue parameter; + if (code === EQ) { + const keyEnd = trailingOWS(header, keyStart, index); + const key = header.slice(keyStart, keyEnd).toLowerCase(); + index = skipOWS(header, index + 1, len); + if (index < len && header.charCodeAt(index) === DQUOTE) { + index++; + let value = ""; + while (index < len) { + const code2 = header.charCodeAt(index++); + if (code2 === DQUOTE) { + index = skipValue(header, index, len, stopChar); + if (parameters[key] === void 0) + parameters[key] = value; + break; + } + if (code2 === BSLASH && index < len) { + value += header[index++]; + continue; + } + value += String.fromCharCode(code2); + } + continue parameter; + } + const valueStart = index; + index = skipValue(header, index, len, stopChar); + if (parameters[key] === void 0) { + const valueEnd = trailingOWS(header, valueStart, index); + parameters[key] = header.slice(valueStart, valueEnd); + } + continue parameter; + } + index++; + } + } + return { type, index, parameters }; + } + __name(parseParameters, "parseParameters"); + function skipValue(str, index, len, stopChar) { + while (index < len) { + const code = str.charCodeAt(index); + if (code === SEMI || code === stopChar) + break; + index++; + } + return index; + } + __name(skipValue, "skipValue"); + function skipOWS(header, index, len) { + while (index < len) { + const char = header.charCodeAt(index); + if (char !== SP && char !== HTAB) + break; + index++; + } + return index; + } + __name(skipOWS, "skipOWS"); + function trailingOWS(header, start, end) { + while (end > start) { + const char = header.charCodeAt(end - 1); + if (char !== SP && char !== HTAB) + break; + end--; + } + return end; + } + __name(trailingOWS, "trailingOWS"); + function qstring(str) { + if (TOKEN_REGEXP.test(str)) + return str; + if (TEXT_REGEXP.test(str)) + return `"${str.replace(QUOTE_REGEXP, "\\$&")}"`; + throw new TypeError(`Invalid parameter value: ${str}`); + } + __name(qstring, "qstring"); + } +}); + +// ../../node_modules/.pnpm/mime-db@1.54.0/node_modules/mime-db/db.json +var require_db = __commonJS({ + "../../node_modules/.pnpm/mime-db@1.54.0/node_modules/mime-db/db.json"(exports, module) { + module.exports = { + "application/1d-interleaved-parityfec": { + source: "iana" + }, + "application/3gpdash-qoe-report+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/3gpp-ims+xml": { + source: "iana", + compressible: true + }, + "application/3gpphal+json": { + source: "iana", + compressible: true + }, + "application/3gpphalforms+json": { + source: "iana", + compressible: true + }, + "application/a2l": { + source: "iana" + }, + "application/ace+cbor": { + source: "iana" + }, + "application/ace+json": { + source: "iana", + compressible: true + }, + "application/ace-groupcomm+cbor": { + source: "iana" + }, + "application/ace-trl+cbor": { + source: "iana" + }, + "application/activemessage": { + source: "iana" + }, + "application/activity+json": { + source: "iana", + compressible: true + }, + "application/aif+cbor": { + source: "iana" + }, + "application/aif+json": { + source: "iana", + compressible: true + }, + "application/alto-cdni+json": { + source: "iana", + compressible: true + }, + "application/alto-cdnifilter+json": { + source: "iana", + compressible: true + }, + "application/alto-costmap+json": { + source: "iana", + compressible: true + }, + "application/alto-costmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-directory+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcost+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcostparams+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointprop+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointpropparams+json": { + source: "iana", + compressible: true + }, + "application/alto-error+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmap+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-propmap+json": { + source: "iana", + compressible: true + }, + "application/alto-propmapparams+json": { + source: "iana", + compressible: true + }, + "application/alto-tips+json": { + source: "iana", + compressible: true + }, + "application/alto-tipsparams+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamcontrol+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamparams+json": { + source: "iana", + compressible: true + }, + "application/aml": { + source: "iana" + }, + "application/andrew-inset": { + source: "iana", + extensions: ["ez"] + }, + "application/appinstaller": { + compressible: false, + extensions: ["appinstaller"] + }, + "application/applefile": { + source: "iana" + }, + "application/applixware": { + source: "apache", + extensions: ["aw"] + }, + "application/appx": { + compressible: false, + extensions: ["appx"] + }, + "application/appxbundle": { + compressible: false, + extensions: ["appxbundle"] + }, + "application/at+jwt": { + source: "iana" + }, + "application/atf": { + source: "iana" + }, + "application/atfx": { + source: "iana" + }, + "application/atom+xml": { + source: "iana", + compressible: true, + extensions: ["atom"] + }, + "application/atomcat+xml": { + source: "iana", + compressible: true, + extensions: ["atomcat"] + }, + "application/atomdeleted+xml": { + source: "iana", + compressible: true, + extensions: ["atomdeleted"] + }, + "application/atomicmail": { + source: "iana" + }, + "application/atomsvc+xml": { + source: "iana", + compressible: true, + extensions: ["atomsvc"] + }, + "application/atsc-dwd+xml": { + source: "iana", + compressible: true, + extensions: ["dwd"] + }, + "application/atsc-dynamic-event-message": { + source: "iana" + }, + "application/atsc-held+xml": { + source: "iana", + compressible: true, + extensions: ["held"] + }, + "application/atsc-rdt+json": { + source: "iana", + compressible: true + }, + "application/atsc-rsat+xml": { + source: "iana", + compressible: true, + extensions: ["rsat"] + }, + "application/atxml": { + source: "iana" + }, + "application/auth-policy+xml": { + source: "iana", + compressible: true + }, + "application/automationml-aml+xml": { + source: "iana", + compressible: true, + extensions: ["aml"] + }, + "application/automationml-amlx+zip": { + source: "iana", + compressible: false, + extensions: ["amlx"] + }, + "application/bacnet-xdd+zip": { + source: "iana", + compressible: false + }, + "application/batch-smtp": { + source: "iana" + }, + "application/bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/beep+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/bufr": { + source: "iana" + }, + "application/c2pa": { + source: "iana" + }, + "application/calendar+json": { + source: "iana", + compressible: true + }, + "application/calendar+xml": { + source: "iana", + compressible: true, + extensions: ["xcs"] + }, + "application/call-completion": { + source: "iana" + }, + "application/cals-1840": { + source: "iana" + }, + "application/captive+json": { + source: "iana", + compressible: true + }, + "application/cbor": { + source: "iana" + }, + "application/cbor-seq": { + source: "iana" + }, + "application/cccex": { + source: "iana" + }, + "application/ccmp+xml": { + source: "iana", + compressible: true + }, + "application/ccxml+xml": { + source: "iana", + compressible: true, + extensions: ["ccxml"] + }, + "application/cda+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/cdfx+xml": { + source: "iana", + compressible: true, + extensions: ["cdfx"] + }, + "application/cdmi-capability": { + source: "iana", + extensions: ["cdmia"] + }, + "application/cdmi-container": { + source: "iana", + extensions: ["cdmic"] + }, + "application/cdmi-domain": { + source: "iana", + extensions: ["cdmid"] + }, + "application/cdmi-object": { + source: "iana", + extensions: ["cdmio"] + }, + "application/cdmi-queue": { + source: "iana", + extensions: ["cdmiq"] + }, + "application/cdni": { + source: "iana" + }, + "application/ce+cbor": { + source: "iana" + }, + "application/cea": { + source: "iana" + }, + "application/cea-2018+xml": { + source: "iana", + compressible: true + }, + "application/cellml+xml": { + source: "iana", + compressible: true + }, + "application/cfw": { + source: "iana" + }, + "application/cid-edhoc+cbor-seq": { + source: "iana" + }, + "application/city+json": { + source: "iana", + compressible: true + }, + "application/city+json-seq": { + source: "iana" + }, + "application/clr": { + source: "iana" + }, + "application/clue+xml": { + source: "iana", + compressible: true + }, + "application/clue_info+xml": { + source: "iana", + compressible: true + }, + "application/cms": { + source: "iana" + }, + "application/cnrp+xml": { + source: "iana", + compressible: true + }, + "application/coap-eap": { + source: "iana" + }, + "application/coap-group+json": { + source: "iana", + compressible: true + }, + "application/coap-payload": { + source: "iana" + }, + "application/commonground": { + source: "iana" + }, + "application/concise-problem-details+cbor": { + source: "iana" + }, + "application/conference-info+xml": { + source: "iana", + compressible: true + }, + "application/cose": { + source: "iana" + }, + "application/cose-key": { + source: "iana" + }, + "application/cose-key-set": { + source: "iana" + }, + "application/cose-x509": { + source: "iana" + }, + "application/cpl+xml": { + source: "iana", + compressible: true, + extensions: ["cpl"] + }, + "application/csrattrs": { + source: "iana" + }, + "application/csta+xml": { + source: "iana", + compressible: true + }, + "application/cstadata+xml": { + source: "iana", + compressible: true + }, + "application/csvm+json": { + source: "iana", + compressible: true + }, + "application/cu-seeme": { + source: "apache", + extensions: ["cu"] + }, + "application/cwl": { + source: "iana", + extensions: ["cwl"] + }, + "application/cwl+json": { + source: "iana", + compressible: true + }, + "application/cwl+yaml": { + source: "iana" + }, + "application/cwt": { + source: "iana" + }, + "application/cybercash": { + source: "iana" + }, + "application/dart": { + compressible: true + }, + "application/dash+xml": { + source: "iana", + compressible: true, + extensions: ["mpd"] + }, + "application/dash-patch+xml": { + source: "iana", + compressible: true, + extensions: ["mpp"] + }, + "application/dashdelta": { + source: "iana" + }, + "application/davmount+xml": { + source: "iana", + compressible: true, + extensions: ["davmount"] + }, + "application/dca-rft": { + source: "iana" + }, + "application/dcd": { + source: "iana" + }, + "application/dec-dx": { + source: "iana" + }, + "application/dialog-info+xml": { + source: "iana", + compressible: true + }, + "application/dicom": { + source: "iana", + extensions: ["dcm"] + }, + "application/dicom+json": { + source: "iana", + compressible: true + }, + "application/dicom+xml": { + source: "iana", + compressible: true + }, + "application/dii": { + source: "iana" + }, + "application/dit": { + source: "iana" + }, + "application/dns": { + source: "iana" + }, + "application/dns+json": { + source: "iana", + compressible: true + }, + "application/dns-message": { + source: "iana" + }, + "application/docbook+xml": { + source: "apache", + compressible: true, + extensions: ["dbk"] + }, + "application/dots+cbor": { + source: "iana" + }, + "application/dpop+jwt": { + source: "iana" + }, + "application/dskpp+xml": { + source: "iana", + compressible: true + }, + "application/dssc+der": { + source: "iana", + extensions: ["dssc"] + }, + "application/dssc+xml": { + source: "iana", + compressible: true, + extensions: ["xdssc"] + }, + "application/dvcs": { + source: "iana" + }, + "application/eat+cwt": { + source: "iana" + }, + "application/eat+jwt": { + source: "iana" + }, + "application/eat-bun+cbor": { + source: "iana" + }, + "application/eat-bun+json": { + source: "iana", + compressible: true + }, + "application/eat-ucs+cbor": { + source: "iana" + }, + "application/eat-ucs+json": { + source: "iana", + compressible: true + }, + "application/ecmascript": { + source: "apache", + compressible: true, + extensions: ["ecma"] + }, + "application/edhoc+cbor-seq": { + source: "iana" + }, + "application/edi-consent": { + source: "iana" + }, + "application/edi-x12": { + source: "iana", + compressible: false + }, + "application/edifact": { + source: "iana", + compressible: false + }, + "application/efi": { + source: "iana" + }, + "application/elm+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/elm+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.cap+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/emergencycalldata.comment+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.control+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.deviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.ecall.msd": { + source: "iana" + }, + "application/emergencycalldata.legacyesn+json": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.providerinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.serviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.subscriberinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.veds+xml": { + source: "iana", + compressible: true + }, + "application/emma+xml": { + source: "iana", + compressible: true, + extensions: ["emma"] + }, + "application/emotionml+xml": { + source: "iana", + compressible: true, + extensions: ["emotionml"] + }, + "application/encaprtp": { + source: "iana" + }, + "application/entity-statement+jwt": { + source: "iana" + }, + "application/epp+xml": { + source: "iana", + compressible: true + }, + "application/epub+zip": { + source: "iana", + compressible: false, + extensions: ["epub"] + }, + "application/eshop": { + source: "iana" + }, + "application/exi": { + source: "iana", + extensions: ["exi"] + }, + "application/expect-ct-report+json": { + source: "iana", + compressible: true + }, + "application/express": { + source: "iana", + extensions: ["exp"] + }, + "application/fastinfoset": { + source: "iana" + }, + "application/fastsoap": { + source: "iana" + }, + "application/fdf": { + source: "iana", + extensions: ["fdf"] + }, + "application/fdt+xml": { + source: "iana", + compressible: true, + extensions: ["fdt"] + }, + "application/fhir+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fhir+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fido.trusted-apps+json": { + compressible: true + }, + "application/fits": { + source: "iana" + }, + "application/flexfec": { + source: "iana" + }, + "application/font-sfnt": { + source: "iana" + }, + "application/font-tdpfr": { + source: "iana", + extensions: ["pfr"] + }, + "application/font-woff": { + source: "iana", + compressible: false + }, + "application/framework-attributes+xml": { + source: "iana", + compressible: true + }, + "application/geo+json": { + source: "iana", + compressible: true, + extensions: ["geojson"] + }, + "application/geo+json-seq": { + source: "iana" + }, + "application/geopackage+sqlite3": { + source: "iana" + }, + "application/geopose+json": { + source: "iana", + compressible: true + }, + "application/geoxacml+json": { + source: "iana", + compressible: true + }, + "application/geoxacml+xml": { + source: "iana", + compressible: true + }, + "application/gltf-buffer": { + source: "iana" + }, + "application/gml+xml": { + source: "iana", + compressible: true, + extensions: ["gml"] + }, + "application/gnap-binding-jws": { + source: "iana" + }, + "application/gnap-binding-jwsd": { + source: "iana" + }, + "application/gnap-binding-rotation-jws": { + source: "iana" + }, + "application/gnap-binding-rotation-jwsd": { + source: "iana" + }, + "application/gpx+xml": { + source: "apache", + compressible: true, + extensions: ["gpx"] + }, + "application/grib": { + source: "iana" + }, + "application/gxf": { + source: "apache", + extensions: ["gxf"] + }, + "application/gzip": { + source: "iana", + compressible: false, + extensions: ["gz"] + }, + "application/h224": { + source: "iana" + }, + "application/held+xml": { + source: "iana", + compressible: true + }, + "application/hjson": { + extensions: ["hjson"] + }, + "application/hl7v2+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/http": { + source: "iana" + }, + "application/hyperstudio": { + source: "iana", + extensions: ["stk"] + }, + "application/ibe-key-request+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pkg-reply+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pp-data": { + source: "iana" + }, + "application/iges": { + source: "iana" + }, + "application/im-iscomposing+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/index": { + source: "iana" + }, + "application/index.cmd": { + source: "iana" + }, + "application/index.obj": { + source: "iana" + }, + "application/index.response": { + source: "iana" + }, + "application/index.vnd": { + source: "iana" + }, + "application/inkml+xml": { + source: "iana", + compressible: true, + extensions: ["ink", "inkml"] + }, + "application/iotp": { + source: "iana" + }, + "application/ipfix": { + source: "iana", + extensions: ["ipfix"] + }, + "application/ipp": { + source: "iana" + }, + "application/isup": { + source: "iana" + }, + "application/its+xml": { + source: "iana", + compressible: true, + extensions: ["its"] + }, + "application/java-archive": { + source: "iana", + compressible: false, + extensions: ["jar", "war", "ear"] + }, + "application/java-serialized-object": { + source: "apache", + compressible: false, + extensions: ["ser"] + }, + "application/java-vm": { + source: "apache", + compressible: false, + extensions: ["class"] + }, + "application/javascript": { + source: "apache", + charset: "UTF-8", + compressible: true, + extensions: ["js"] + }, + "application/jf2feed+json": { + source: "iana", + compressible: true + }, + "application/jose": { + source: "iana" + }, + "application/jose+json": { + source: "iana", + compressible: true + }, + "application/jrd+json": { + source: "iana", + compressible: true + }, + "application/jscalendar+json": { + source: "iana", + compressible: true + }, + "application/jscontact+json": { + source: "iana", + compressible: true + }, + "application/json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["json", "map"] + }, + "application/json-patch+json": { + source: "iana", + compressible: true + }, + "application/json-seq": { + source: "iana" + }, + "application/json5": { + extensions: ["json5"] + }, + "application/jsonml+json": { + source: "apache", + compressible: true, + extensions: ["jsonml"] + }, + "application/jsonpath": { + source: "iana" + }, + "application/jwk+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+jwt": { + source: "iana" + }, + "application/jwt": { + source: "iana" + }, + "application/kpml-request+xml": { + source: "iana", + compressible: true + }, + "application/kpml-response+xml": { + source: "iana", + compressible: true + }, + "application/ld+json": { + source: "iana", + compressible: true, + extensions: ["jsonld"] + }, + "application/lgr+xml": { + source: "iana", + compressible: true, + extensions: ["lgr"] + }, + "application/link-format": { + source: "iana" + }, + "application/linkset": { + source: "iana" + }, + "application/linkset+json": { + source: "iana", + compressible: true + }, + "application/load-control+xml": { + source: "iana", + compressible: true + }, + "application/logout+jwt": { + source: "iana" + }, + "application/lost+xml": { + source: "iana", + compressible: true, + extensions: ["lostxml"] + }, + "application/lostsync+xml": { + source: "iana", + compressible: true + }, + "application/lpf+zip": { + source: "iana", + compressible: false + }, + "application/lxf": { + source: "iana" + }, + "application/mac-binhex40": { + source: "iana", + extensions: ["hqx"] + }, + "application/mac-compactpro": { + source: "apache", + extensions: ["cpt"] + }, + "application/macwriteii": { + source: "iana" + }, + "application/mads+xml": { + source: "iana", + compressible: true, + extensions: ["mads"] + }, + "application/manifest+json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["webmanifest"] + }, + "application/marc": { + source: "iana", + extensions: ["mrc"] + }, + "application/marcxml+xml": { + source: "iana", + compressible: true, + extensions: ["mrcx"] + }, + "application/mathematica": { + source: "iana", + extensions: ["ma", "nb", "mb"] + }, + "application/mathml+xml": { + source: "iana", + compressible: true, + extensions: ["mathml"] + }, + "application/mathml-content+xml": { + source: "iana", + compressible: true + }, + "application/mathml-presentation+xml": { + source: "iana", + compressible: true + }, + "application/mbms-associated-procedure-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-deregister+xml": { + source: "iana", + compressible: true + }, + "application/mbms-envelope+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-protection-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-reception-report+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-schedule+xml": { + source: "iana", + compressible: true + }, + "application/mbms-user-service-description+xml": { + source: "iana", + compressible: true + }, + "application/mbox": { + source: "iana", + extensions: ["mbox"] + }, + "application/media-policy-dataset+xml": { + source: "iana", + compressible: true, + extensions: ["mpf"] + }, + "application/media_control+xml": { + source: "iana", + compressible: true + }, + "application/mediaservercontrol+xml": { + source: "iana", + compressible: true, + extensions: ["mscml"] + }, + "application/merge-patch+json": { + source: "iana", + compressible: true + }, + "application/metalink+xml": { + source: "apache", + compressible: true, + extensions: ["metalink"] + }, + "application/metalink4+xml": { + source: "iana", + compressible: true, + extensions: ["meta4"] + }, + "application/mets+xml": { + source: "iana", + compressible: true, + extensions: ["mets"] + }, + "application/mf4": { + source: "iana" + }, + "application/mikey": { + source: "iana" + }, + "application/mipc": { + source: "iana" + }, + "application/missing-blocks+cbor-seq": { + source: "iana" + }, + "application/mmt-aei+xml": { + source: "iana", + compressible: true, + extensions: ["maei"] + }, + "application/mmt-usd+xml": { + source: "iana", + compressible: true, + extensions: ["musd"] + }, + "application/mods+xml": { + source: "iana", + compressible: true, + extensions: ["mods"] + }, + "application/moss-keys": { + source: "iana" + }, + "application/moss-signature": { + source: "iana" + }, + "application/mosskey-data": { + source: "iana" + }, + "application/mosskey-request": { + source: "iana" + }, + "application/mp21": { + source: "iana", + extensions: ["m21", "mp21"] + }, + "application/mp4": { + source: "iana", + extensions: ["mp4", "mpg4", "mp4s", "m4p"] + }, + "application/mpeg4-generic": { + source: "iana" + }, + "application/mpeg4-iod": { + source: "iana" + }, + "application/mpeg4-iod-xmt": { + source: "iana" + }, + "application/mrb-consumer+xml": { + source: "iana", + compressible: true + }, + "application/mrb-publish+xml": { + source: "iana", + compressible: true + }, + "application/msc-ivr+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msc-mixer+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msix": { + compressible: false, + extensions: ["msix"] + }, + "application/msixbundle": { + compressible: false, + extensions: ["msixbundle"] + }, + "application/msword": { + source: "iana", + compressible: false, + extensions: ["doc", "dot"] + }, + "application/mud+json": { + source: "iana", + compressible: true + }, + "application/multipart-core": { + source: "iana" + }, + "application/mxf": { + source: "iana", + extensions: ["mxf"] + }, + "application/n-quads": { + source: "iana", + extensions: ["nq"] + }, + "application/n-triples": { + source: "iana", + extensions: ["nt"] + }, + "application/nasdata": { + source: "iana" + }, + "application/news-checkgroups": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-groupinfo": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-transmission": { + source: "iana" + }, + "application/nlsml+xml": { + source: "iana", + compressible: true + }, + "application/node": { + source: "iana", + extensions: ["cjs"] + }, + "application/nss": { + source: "iana" + }, + "application/oauth-authz-req+jwt": { + source: "iana" + }, + "application/oblivious-dns-message": { + source: "iana" + }, + "application/ocsp-request": { + source: "iana" + }, + "application/ocsp-response": { + source: "iana" + }, + "application/octet-stream": { + source: "iana", + compressible: true, + extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] + }, + "application/oda": { + source: "iana", + extensions: ["oda"] + }, + "application/odm+xml": { + source: "iana", + compressible: true + }, + "application/odx": { + source: "iana" + }, + "application/oebps-package+xml": { + source: "iana", + compressible: true, + extensions: ["opf"] + }, + "application/ogg": { + source: "iana", + compressible: false, + extensions: ["ogx"] + }, + "application/ohttp-keys": { + source: "iana" + }, + "application/omdoc+xml": { + source: "apache", + compressible: true, + extensions: ["omdoc"] + }, + "application/onenote": { + source: "apache", + extensions: ["onetoc", "onetoc2", "onetmp", "onepkg", "one", "onea"] + }, + "application/opc-nodeset+xml": { + source: "iana", + compressible: true + }, + "application/oscore": { + source: "iana" + }, + "application/oxps": { + source: "iana", + extensions: ["oxps"] + }, + "application/p21": { + source: "iana" + }, + "application/p21+zip": { + source: "iana", + compressible: false + }, + "application/p2p-overlay+xml": { + source: "iana", + compressible: true, + extensions: ["relo"] + }, + "application/parityfec": { + source: "iana" + }, + "application/passport": { + source: "iana" + }, + "application/patch-ops-error+xml": { + source: "iana", + compressible: true, + extensions: ["xer"] + }, + "application/pdf": { + source: "iana", + compressible: false, + extensions: ["pdf"] + }, + "application/pdx": { + source: "iana" + }, + "application/pem-certificate-chain": { + source: "iana" + }, + "application/pgp-encrypted": { + source: "iana", + compressible: false, + extensions: ["pgp"] + }, + "application/pgp-keys": { + source: "iana", + extensions: ["asc"] + }, + "application/pgp-signature": { + source: "iana", + extensions: ["sig", "asc"] + }, + "application/pics-rules": { + source: "apache", + extensions: ["prf"] + }, + "application/pidf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pidf-diff+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pkcs10": { + source: "iana", + extensions: ["p10"] + }, + "application/pkcs12": { + source: "iana" + }, + "application/pkcs7-mime": { + source: "iana", + extensions: ["p7m", "p7c"] + }, + "application/pkcs7-signature": { + source: "iana", + extensions: ["p7s"] + }, + "application/pkcs8": { + source: "iana", + extensions: ["p8"] + }, + "application/pkcs8-encrypted": { + source: "iana" + }, + "application/pkix-attr-cert": { + source: "iana", + extensions: ["ac"] + }, + "application/pkix-cert": { + source: "iana", + extensions: ["cer"] + }, + "application/pkix-crl": { + source: "iana", + extensions: ["crl"] + }, + "application/pkix-pkipath": { + source: "iana", + extensions: ["pkipath"] + }, + "application/pkixcmp": { + source: "iana", + extensions: ["pki"] + }, + "application/pls+xml": { + source: "iana", + compressible: true, + extensions: ["pls"] + }, + "application/poc-settings+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/postscript": { + source: "iana", + compressible: true, + extensions: ["ai", "eps", "ps"] + }, + "application/ppsp-tracker+json": { + source: "iana", + compressible: true + }, + "application/private-token-issuer-directory": { + source: "iana" + }, + "application/private-token-request": { + source: "iana" + }, + "application/private-token-response": { + source: "iana" + }, + "application/problem+json": { + source: "iana", + compressible: true + }, + "application/problem+xml": { + source: "iana", + compressible: true + }, + "application/provenance+xml": { + source: "iana", + compressible: true, + extensions: ["provx"] + }, + "application/provided-claims+jwt": { + source: "iana" + }, + "application/prs.alvestrand.titrax-sheet": { + source: "iana" + }, + "application/prs.cww": { + source: "iana", + extensions: ["cww"] + }, + "application/prs.cyn": { + source: "iana", + charset: "7-BIT" + }, + "application/prs.hpub+zip": { + source: "iana", + compressible: false + }, + "application/prs.implied-document+xml": { + source: "iana", + compressible: true + }, + "application/prs.implied-executable": { + source: "iana" + }, + "application/prs.implied-object+json": { + source: "iana", + compressible: true + }, + "application/prs.implied-object+json-seq": { + source: "iana" + }, + "application/prs.implied-object+yaml": { + source: "iana" + }, + "application/prs.implied-structure": { + source: "iana" + }, + "application/prs.mayfile": { + source: "iana" + }, + "application/prs.nprend": { + source: "iana" + }, + "application/prs.plucker": { + source: "iana" + }, + "application/prs.rdf-xml-crypt": { + source: "iana" + }, + "application/prs.vcfbzip2": { + source: "iana" + }, + "application/prs.xsf+xml": { + source: "iana", + compressible: true, + extensions: ["xsf"] + }, + "application/pskc+xml": { + source: "iana", + compressible: true, + extensions: ["pskcxml"] + }, + "application/pvd+json": { + source: "iana", + compressible: true + }, + "application/qsig": { + source: "iana" + }, + "application/raml+yaml": { + compressible: true, + extensions: ["raml"] + }, + "application/raptorfec": { + source: "iana" + }, + "application/rdap+json": { + source: "iana", + compressible: true + }, + "application/rdf+xml": { + source: "iana", + compressible: true, + extensions: ["rdf", "owl"] + }, + "application/reginfo+xml": { + source: "iana", + compressible: true, + extensions: ["rif"] + }, + "application/relax-ng-compact-syntax": { + source: "iana", + extensions: ["rnc"] + }, + "application/remote-printing": { + source: "apache" + }, + "application/reputon+json": { + source: "iana", + compressible: true + }, + "application/resolve-response+jwt": { + source: "iana" + }, + "application/resource-lists+xml": { + source: "iana", + compressible: true, + extensions: ["rl"] + }, + "application/resource-lists-diff+xml": { + source: "iana", + compressible: true, + extensions: ["rld"] + }, + "application/rfc+xml": { + source: "iana", + compressible: true + }, + "application/riscos": { + source: "iana" + }, + "application/rlmi+xml": { + source: "iana", + compressible: true + }, + "application/rls-services+xml": { + source: "iana", + compressible: true, + extensions: ["rs"] + }, + "application/route-apd+xml": { + source: "iana", + compressible: true, + extensions: ["rapd"] + }, + "application/route-s-tsid+xml": { + source: "iana", + compressible: true, + extensions: ["sls"] + }, + "application/route-usd+xml": { + source: "iana", + compressible: true, + extensions: ["rusd"] + }, + "application/rpki-checklist": { + source: "iana" + }, + "application/rpki-ghostbusters": { + source: "iana", + extensions: ["gbr"] + }, + "application/rpki-manifest": { + source: "iana", + extensions: ["mft"] + }, + "application/rpki-publication": { + source: "iana" + }, + "application/rpki-roa": { + source: "iana", + extensions: ["roa"] + }, + "application/rpki-signed-tal": { + source: "iana" + }, + "application/rpki-updown": { + source: "iana" + }, + "application/rsd+xml": { + source: "apache", + compressible: true, + extensions: ["rsd"] + }, + "application/rss+xml": { + source: "apache", + compressible: true, + extensions: ["rss"] + }, + "application/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "application/rtploopback": { + source: "iana" + }, + "application/rtx": { + source: "iana" + }, + "application/samlassertion+xml": { + source: "iana", + compressible: true + }, + "application/samlmetadata+xml": { + source: "iana", + compressible: true + }, + "application/sarif+json": { + source: "iana", + compressible: true + }, + "application/sarif-external-properties+json": { + source: "iana", + compressible: true + }, + "application/sbe": { + source: "iana" + }, + "application/sbml+xml": { + source: "iana", + compressible: true, + extensions: ["sbml"] + }, + "application/scaip+xml": { + source: "iana", + compressible: true + }, + "application/scim+json": { + source: "iana", + compressible: true + }, + "application/scvp-cv-request": { + source: "iana", + extensions: ["scq"] + }, + "application/scvp-cv-response": { + source: "iana", + extensions: ["scs"] + }, + "application/scvp-vp-request": { + source: "iana", + extensions: ["spq"] + }, + "application/scvp-vp-response": { + source: "iana", + extensions: ["spp"] + }, + "application/sdp": { + source: "iana", + extensions: ["sdp"] + }, + "application/secevent+jwt": { + source: "iana" + }, + "application/senml+cbor": { + source: "iana" + }, + "application/senml+json": { + source: "iana", + compressible: true + }, + "application/senml+xml": { + source: "iana", + compressible: true, + extensions: ["senmlx"] + }, + "application/senml-etch+cbor": { + source: "iana" + }, + "application/senml-etch+json": { + source: "iana", + compressible: true + }, + "application/senml-exi": { + source: "iana" + }, + "application/sensml+cbor": { + source: "iana" + }, + "application/sensml+json": { + source: "iana", + compressible: true + }, + "application/sensml+xml": { + source: "iana", + compressible: true, + extensions: ["sensmlx"] + }, + "application/sensml-exi": { + source: "iana" + }, + "application/sep+xml": { + source: "iana", + compressible: true + }, + "application/sep-exi": { + source: "iana" + }, + "application/session-info": { + source: "iana" + }, + "application/set-payment": { + source: "iana" + }, + "application/set-payment-initiation": { + source: "iana", + extensions: ["setpay"] + }, + "application/set-registration": { + source: "iana" + }, + "application/set-registration-initiation": { + source: "iana", + extensions: ["setreg"] + }, + "application/sgml": { + source: "iana" + }, + "application/sgml-open-catalog": { + source: "iana" + }, + "application/shf+xml": { + source: "iana", + compressible: true, + extensions: ["shf"] + }, + "application/sieve": { + source: "iana", + extensions: ["siv", "sieve"] + }, + "application/simple-filter+xml": { + source: "iana", + compressible: true + }, + "application/simple-message-summary": { + source: "iana" + }, + "application/simplesymbolcontainer": { + source: "iana" + }, + "application/sipc": { + source: "iana" + }, + "application/slate": { + source: "iana" + }, + "application/smil": { + source: "apache" + }, + "application/smil+xml": { + source: "iana", + compressible: true, + extensions: ["smi", "smil"] + }, + "application/smpte336m": { + source: "iana" + }, + "application/soap+fastinfoset": { + source: "iana" + }, + "application/soap+xml": { + source: "iana", + compressible: true + }, + "application/sparql-query": { + source: "iana", + extensions: ["rq"] + }, + "application/sparql-results+xml": { + source: "iana", + compressible: true, + extensions: ["srx"] + }, + "application/spdx+json": { + source: "iana", + compressible: true + }, + "application/spirits-event+xml": { + source: "iana", + compressible: true + }, + "application/sql": { + source: "iana", + extensions: ["sql"] + }, + "application/srgs": { + source: "iana", + extensions: ["gram"] + }, + "application/srgs+xml": { + source: "iana", + compressible: true, + extensions: ["grxml"] + }, + "application/sru+xml": { + source: "iana", + compressible: true, + extensions: ["sru"] + }, + "application/ssdl+xml": { + source: "apache", + compressible: true, + extensions: ["ssdl"] + }, + "application/sslkeylogfile": { + source: "iana" + }, + "application/ssml+xml": { + source: "iana", + compressible: true, + extensions: ["ssml"] + }, + "application/st2110-41": { + source: "iana" + }, + "application/stix+json": { + source: "iana", + compressible: true + }, + "application/stratum": { + source: "iana" + }, + "application/swid+cbor": { + source: "iana" + }, + "application/swid+xml": { + source: "iana", + compressible: true, + extensions: ["swidtag"] + }, + "application/tamp-apex-update": { + source: "iana" + }, + "application/tamp-apex-update-confirm": { + source: "iana" + }, + "application/tamp-community-update": { + source: "iana" + }, + "application/tamp-community-update-confirm": { + source: "iana" + }, + "application/tamp-error": { + source: "iana" + }, + "application/tamp-sequence-adjust": { + source: "iana" + }, + "application/tamp-sequence-adjust-confirm": { + source: "iana" + }, + "application/tamp-status-query": { + source: "iana" + }, + "application/tamp-status-response": { + source: "iana" + }, + "application/tamp-update": { + source: "iana" + }, + "application/tamp-update-confirm": { + source: "iana" + }, + "application/tar": { + compressible: true + }, + "application/taxii+json": { + source: "iana", + compressible: true + }, + "application/td+json": { + source: "iana", + compressible: true + }, + "application/tei+xml": { + source: "iana", + compressible: true, + extensions: ["tei", "teicorpus"] + }, + "application/tetra_isi": { + source: "iana" + }, + "application/thraud+xml": { + source: "iana", + compressible: true, + extensions: ["tfi"] + }, + "application/timestamp-query": { + source: "iana" + }, + "application/timestamp-reply": { + source: "iana" + }, + "application/timestamped-data": { + source: "iana", + extensions: ["tsd"] + }, + "application/tlsrpt+gzip": { + source: "iana" + }, + "application/tlsrpt+json": { + source: "iana", + compressible: true + }, + "application/tm+json": { + source: "iana", + compressible: true + }, + "application/tnauthlist": { + source: "iana" + }, + "application/toc+cbor": { + source: "iana" + }, + "application/token-introspection+jwt": { + source: "iana" + }, + "application/toml": { + source: "iana", + compressible: true, + extensions: ["toml"] + }, + "application/trickle-ice-sdpfrag": { + source: "iana" + }, + "application/trig": { + source: "iana", + extensions: ["trig"] + }, + "application/trust-chain+json": { + source: "iana", + compressible: true + }, + "application/trust-mark+jwt": { + source: "iana" + }, + "application/trust-mark-delegation+jwt": { + source: "iana" + }, + "application/ttml+xml": { + source: "iana", + compressible: true, + extensions: ["ttml"] + }, + "application/tve-trigger": { + source: "iana" + }, + "application/tzif": { + source: "iana" + }, + "application/tzif-leap": { + source: "iana" + }, + "application/ubjson": { + compressible: false, + extensions: ["ubj"] + }, + "application/uccs+cbor": { + source: "iana" + }, + "application/ujcs+json": { + source: "iana", + compressible: true + }, + "application/ulpfec": { + source: "iana" + }, + "application/urc-grpsheet+xml": { + source: "iana", + compressible: true + }, + "application/urc-ressheet+xml": { + source: "iana", + compressible: true, + extensions: ["rsheet"] + }, + "application/urc-targetdesc+xml": { + source: "iana", + compressible: true, + extensions: ["td"] + }, + "application/urc-uisocketdesc+xml": { + source: "iana", + compressible: true + }, + "application/vc": { + source: "iana" + }, + "application/vc+cose": { + source: "iana" + }, + "application/vc+jwt": { + source: "iana" + }, + "application/vcard+json": { + source: "iana", + compressible: true + }, + "application/vcard+xml": { + source: "iana", + compressible: true + }, + "application/vemmi": { + source: "iana" + }, + "application/vividence.scriptfile": { + source: "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + source: "iana", + compressible: true, + extensions: ["1km"] + }, + "application/vnd.1ob": { + source: "iana" + }, + "application/vnd.3gpp-prose+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3a+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ach+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc8+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-v2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gnas": { + source: "iana" + }, + "application/vnd.3gpp.5gsa2x": { + source: "iana" + }, + "application/vnd.3gpp.5gsa2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gsv2x": { + source: "iana" + }, + "application/vnd.3gpp.5gsv2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.bsf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.crs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.current-location-discovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gmop+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gtpc": { + source: "iana" + }, + "application/vnd.3gpp.interworking-data": { + source: "iana" + }, + "application/vnd.3gpp.lpp": { + source: "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-payload": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-regroup+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-signalling": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-regroup+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-regroup+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mid-call+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ngap": { + source: "iana" + }, + "application/vnd.3gpp.pfcp": { + source: "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + source: "iana", + extensions: ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + source: "iana", + extensions: ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + source: "iana", + extensions: ["pvb"] + }, + "application/vnd.3gpp.pinapp-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.s1ap": { + source: "iana" + }, + "application/vnd.3gpp.seal-group-doc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-network-qos-management-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-ue-config-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-unicast-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.seal-user-profile-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.sms": { + source: "iana" + }, + "application/vnd.3gpp.sms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ussd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.v2x": { + source: "iana" + }, + "application/vnd.3gpp.vae-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.sms": { + source: "iana" + }, + "application/vnd.3gpp2.tcap": { + source: "iana", + extensions: ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + source: "iana" + }, + "application/vnd.3m.post-it-notes": { + source: "iana", + extensions: ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + source: "iana", + extensions: ["aso"] + }, + "application/vnd.accpac.simply.imp": { + source: "iana", + extensions: ["imp"] + }, + "application/vnd.acm.addressxfer+json": { + source: "iana", + compressible: true + }, + "application/vnd.acm.chatbot+json": { + source: "iana", + compressible: true + }, + "application/vnd.acucobol": { + source: "iana", + extensions: ["acu"] + }, + "application/vnd.acucorp": { + source: "iana", + extensions: ["atc", "acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + source: "apache", + compressible: false, + extensions: ["air"] + }, + "application/vnd.adobe.flash.movie": { + source: "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + source: "iana", + extensions: ["fcdt"] + }, + "application/vnd.adobe.fxp": { + source: "iana", + extensions: ["fxp", "fxpl"] + }, + "application/vnd.adobe.partial-upload": { + source: "iana" + }, + "application/vnd.adobe.xdp+xml": { + source: "iana", + compressible: true, + extensions: ["xdp"] + }, + "application/vnd.adobe.xfdf": { + source: "apache", + extensions: ["xfdf"] + }, + "application/vnd.aether.imp": { + source: "iana" + }, + "application/vnd.afpc.afplinedata": { + source: "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + source: "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + source: "iana" + }, + "application/vnd.afpc.foca-charset": { + source: "iana" + }, + "application/vnd.afpc.foca-codedfont": { + source: "iana" + }, + "application/vnd.afpc.foca-codepage": { + source: "iana" + }, + "application/vnd.afpc.modca": { + source: "iana" + }, + "application/vnd.afpc.modca-cmtable": { + source: "iana" + }, + "application/vnd.afpc.modca-formdef": { + source: "iana" + }, + "application/vnd.afpc.modca-mediummap": { + source: "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + source: "iana" + }, + "application/vnd.afpc.modca-overlay": { + source: "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + source: "iana" + }, + "application/vnd.age": { + source: "iana", + extensions: ["age"] + }, + "application/vnd.ah-barcode": { + source: "apache" + }, + "application/vnd.ahead.space": { + source: "iana", + extensions: ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + source: "iana", + extensions: ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + source: "iana", + extensions: ["azs"] + }, + "application/vnd.amadeus+json": { + source: "iana", + compressible: true + }, + "application/vnd.amazon.ebook": { + source: "apache", + extensions: ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + source: "iana" + }, + "application/vnd.americandynamics.acc": { + source: "iana", + extensions: ["acc"] + }, + "application/vnd.amiga.ami": { + source: "iana", + extensions: ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + source: "iana", + compressible: true + }, + "application/vnd.android.ota": { + source: "iana" + }, + "application/vnd.android.package-archive": { + source: "apache", + compressible: false, + extensions: ["apk"] + }, + "application/vnd.anki": { + source: "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + source: "iana", + extensions: ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + source: "apache", + extensions: ["fti"] + }, + "application/vnd.antix.game-component": { + source: "iana", + extensions: ["atx"] + }, + "application/vnd.apache.arrow.file": { + source: "iana" + }, + "application/vnd.apache.arrow.stream": { + source: "iana" + }, + "application/vnd.apache.parquet": { + source: "iana" + }, + "application/vnd.apache.thrift.binary": { + source: "iana" + }, + "application/vnd.apache.thrift.compact": { + source: "iana" + }, + "application/vnd.apache.thrift.json": { + source: "iana" + }, + "application/vnd.apexlang": { + source: "iana" + }, + "application/vnd.api+json": { + source: "iana", + compressible: true + }, + "application/vnd.aplextor.warrp+json": { + source: "iana", + compressible: true + }, + "application/vnd.apothekende.reservation+json": { + source: "iana", + compressible: true + }, + "application/vnd.apple.installer+xml": { + source: "iana", + compressible: true, + extensions: ["mpkg"] + }, + "application/vnd.apple.keynote": { + source: "iana", + extensions: ["key"] + }, + "application/vnd.apple.mpegurl": { + source: "iana", + extensions: ["m3u8"] + }, + "application/vnd.apple.numbers": { + source: "iana", + extensions: ["numbers"] + }, + "application/vnd.apple.pages": { + source: "iana", + extensions: ["pages"] + }, + "application/vnd.apple.pkpass": { + compressible: false, + extensions: ["pkpass"] + }, + "application/vnd.arastra.swi": { + source: "apache" + }, + "application/vnd.aristanetworks.swi": { + source: "iana", + extensions: ["swi"] + }, + "application/vnd.artisan+json": { + source: "iana", + compressible: true + }, + "application/vnd.artsquare": { + source: "iana" + }, + "application/vnd.astraea-software.iota": { + source: "iana", + extensions: ["iota"] + }, + "application/vnd.audiograph": { + source: "iana", + extensions: ["aep"] + }, + "application/vnd.autodesk.fbx": { + extensions: ["fbx"] + }, + "application/vnd.autopackage": { + source: "iana" + }, + "application/vnd.avalon+json": { + source: "iana", + compressible: true + }, + "application/vnd.avistar+xml": { + source: "iana", + compressible: true + }, + "application/vnd.balsamiq.bmml+xml": { + source: "iana", + compressible: true, + extensions: ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + source: "iana" + }, + "application/vnd.banana-accounting": { + source: "iana" + }, + "application/vnd.bbf.usp.error": { + source: "iana" + }, + "application/vnd.bbf.usp.msg": { + source: "iana" + }, + "application/vnd.bbf.usp.msg+json": { + source: "iana", + compressible: true + }, + "application/vnd.bekitzur-stech+json": { + source: "iana", + compressible: true + }, + "application/vnd.belightsoft.lhzd+zip": { + source: "iana", + compressible: false + }, + "application/vnd.belightsoft.lhzl+zip": { + source: "iana", + compressible: false + }, + "application/vnd.bint.med-content": { + source: "iana" + }, + "application/vnd.biopax.rdf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.blink-idb-value-wrapper": { + source: "iana" + }, + "application/vnd.blueice.multipass": { + source: "iana", + extensions: ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + source: "iana" + }, + "application/vnd.bluetooth.le.oob": { + source: "iana" + }, + "application/vnd.bmi": { + source: "iana", + extensions: ["bmi"] + }, + "application/vnd.bpf": { + source: "iana" + }, + "application/vnd.bpf3": { + source: "iana" + }, + "application/vnd.businessobjects": { + source: "iana", + extensions: ["rep"] + }, + "application/vnd.byu.uapi+json": { + source: "iana", + compressible: true + }, + "application/vnd.bzip3": { + source: "iana" + }, + "application/vnd.c3voc.schedule+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cab-jscript": { + source: "iana" + }, + "application/vnd.canon-cpdl": { + source: "iana" + }, + "application/vnd.canon-lips": { + source: "iana" + }, + "application/vnd.capasystems-pg+json": { + source: "iana", + compressible: true + }, + "application/vnd.cendio.thinlinc.clientconf": { + source: "iana" + }, + "application/vnd.century-systems.tcp_stream": { + source: "iana" + }, + "application/vnd.chemdraw+xml": { + source: "iana", + compressible: true, + extensions: ["cdxml"] + }, + "application/vnd.chess-pgn": { + source: "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + source: "iana", + extensions: ["mmd"] + }, + "application/vnd.ciedi": { + source: "iana" + }, + "application/vnd.cinderella": { + source: "iana", + extensions: ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + source: "iana" + }, + "application/vnd.citationstyles.style+xml": { + source: "iana", + compressible: true, + extensions: ["csl"] + }, + "application/vnd.claymore": { + source: "iana", + extensions: ["cla"] + }, + "application/vnd.cloanto.rp9": { + source: "iana", + extensions: ["rp9"] + }, + "application/vnd.clonk.c4group": { + source: "iana", + extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + source: "iana", + extensions: ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + source: "iana", + extensions: ["c11amz"] + }, + "application/vnd.cncf.helm.chart.content.v1.tar+gzip": { + source: "iana" + }, + "application/vnd.cncf.helm.chart.provenance.v1.prov": { + source: "iana" + }, + "application/vnd.cncf.helm.config.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.coffeescript": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + source: "iana" + }, + "application/vnd.collection+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.doc+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.next+json": { + source: "iana", + compressible: true + }, + "application/vnd.comicbook+zip": { + source: "iana", + compressible: false + }, + "application/vnd.comicbook-rar": { + source: "iana" + }, + "application/vnd.commerce-battelle": { + source: "iana" + }, + "application/vnd.commonspace": { + source: "iana", + extensions: ["csp"] + }, + "application/vnd.contact.cmsg": { + source: "iana", + extensions: ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + source: "iana", + compressible: true + }, + "application/vnd.cosmocaller": { + source: "iana", + extensions: ["cmc"] + }, + "application/vnd.crick.clicker": { + source: "iana", + extensions: ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + source: "iana", + extensions: ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + source: "iana", + extensions: ["clkp"] + }, + "application/vnd.crick.clicker.template": { + source: "iana", + extensions: ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + source: "iana", + extensions: ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + source: "iana", + compressible: true, + extensions: ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + source: "iana", + compressible: true + }, + "application/vnd.crypto-shade-file": { + source: "iana" + }, + "application/vnd.cryptomator.encrypted": { + source: "iana" + }, + "application/vnd.cryptomator.vault": { + source: "iana" + }, + "application/vnd.ctc-posml": { + source: "iana", + extensions: ["pml"] + }, + "application/vnd.ctct.ws+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cups-pdf": { + source: "iana" + }, + "application/vnd.cups-postscript": { + source: "iana" + }, + "application/vnd.cups-ppd": { + source: "iana", + extensions: ["ppd"] + }, + "application/vnd.cups-raster": { + source: "iana" + }, + "application/vnd.cups-raw": { + source: "iana" + }, + "application/vnd.curl": { + source: "iana" + }, + "application/vnd.curl.car": { + source: "apache", + extensions: ["car"] + }, + "application/vnd.curl.pcurl": { + source: "apache", + extensions: ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cybank": { + source: "iana" + }, + "application/vnd.cyclonedx+json": { + source: "iana", + compressible: true + }, + "application/vnd.cyclonedx+xml": { + source: "iana", + compressible: true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + source: "iana", + compressible: false + }, + "application/vnd.d3m-dataset": { + source: "iana" + }, + "application/vnd.d3m-problem": { + source: "iana" + }, + "application/vnd.dart": { + source: "iana", + compressible: true, + extensions: ["dart"] + }, + "application/vnd.data-vision.rdz": { + source: "iana", + extensions: ["rdz"] + }, + "application/vnd.datalog": { + source: "iana" + }, + "application/vnd.datapackage+json": { + source: "iana", + compressible: true + }, + "application/vnd.dataresource+json": { + source: "iana", + compressible: true + }, + "application/vnd.dbf": { + source: "iana", + extensions: ["dbf"] + }, + "application/vnd.dcmp+xml": { + source: "iana", + compressible: true, + extensions: ["dcmp"] + }, + "application/vnd.debian.binary-package": { + source: "iana" + }, + "application/vnd.dece.data": { + source: "iana", + extensions: ["uvf", "uvvf", "uvd", "uvvd"] + }, + "application/vnd.dece.ttml+xml": { + source: "iana", + compressible: true, + extensions: ["uvt", "uvvt"] + }, + "application/vnd.dece.unspecified": { + source: "iana", + extensions: ["uvx", "uvvx"] + }, + "application/vnd.dece.zip": { + source: "iana", + extensions: ["uvz", "uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + source: "iana", + extensions: ["fe_launch"] + }, + "application/vnd.desmume.movie": { + source: "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + source: "iana" + }, + "application/vnd.dm.delegation+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dna": { + source: "iana", + extensions: ["dna"] + }, + "application/vnd.document+json": { + source: "iana", + compressible: true + }, + "application/vnd.dolby.mlp": { + source: "apache", + extensions: ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + source: "iana" + }, + "application/vnd.dolby.mobile.2": { + source: "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + source: "iana" + }, + "application/vnd.dpgraph": { + source: "iana", + extensions: ["dpg"] + }, + "application/vnd.dreamfactory": { + source: "iana", + extensions: ["dfac"] + }, + "application/vnd.drive+json": { + source: "iana", + compressible: true + }, + "application/vnd.ds-keypoint": { + source: "apache", + extensions: ["kpxx"] + }, + "application/vnd.dtg.local": { + source: "iana" + }, + "application/vnd.dtg.local.flash": { + source: "iana" + }, + "application/vnd.dtg.local.html": { + source: "iana" + }, + "application/vnd.dvb.ait": { + source: "iana", + extensions: ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.dvbj": { + source: "iana" + }, + "application/vnd.dvb.esgcontainer": { + source: "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + source: "iana" + }, + "application/vnd.dvb.ipdcroaming": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + source: "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-container+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-generic+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-init+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.pfr": { + source: "iana" + }, + "application/vnd.dvb.service": { + source: "iana", + extensions: ["svc"] + }, + "application/vnd.dxr": { + source: "iana" + }, + "application/vnd.dynageo": { + source: "iana", + extensions: ["geo"] + }, + "application/vnd.dzr": { + source: "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + source: "iana" + }, + "application/vnd.ecdis-update": { + source: "iana" + }, + "application/vnd.ecip.rlp": { + source: "iana" + }, + "application/vnd.eclipse.ditto+json": { + source: "iana", + compressible: true + }, + "application/vnd.ecowin.chart": { + source: "iana", + extensions: ["mag"] + }, + "application/vnd.ecowin.filerequest": { + source: "iana" + }, + "application/vnd.ecowin.fileupdate": { + source: "iana" + }, + "application/vnd.ecowin.series": { + source: "iana" + }, + "application/vnd.ecowin.seriesrequest": { + source: "iana" + }, + "application/vnd.ecowin.seriesupdate": { + source: "iana" + }, + "application/vnd.efi.img": { + source: "iana" + }, + "application/vnd.efi.iso": { + source: "iana" + }, + "application/vnd.eln+zip": { + source: "iana", + compressible: false + }, + "application/vnd.emclient.accessrequest+xml": { + source: "iana", + compressible: true + }, + "application/vnd.enliven": { + source: "iana", + extensions: ["nml"] + }, + "application/vnd.enphase.envoy": { + source: "iana" + }, + "application/vnd.eprints.data+xml": { + source: "iana", + compressible: true + }, + "application/vnd.epson.esf": { + source: "iana", + extensions: ["esf"] + }, + "application/vnd.epson.msf": { + source: "iana", + extensions: ["msf"] + }, + "application/vnd.epson.quickanime": { + source: "iana", + extensions: ["qam"] + }, + "application/vnd.epson.salt": { + source: "iana", + extensions: ["slt"] + }, + "application/vnd.epson.ssf": { + source: "iana", + extensions: ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + source: "iana" + }, + "application/vnd.erofs": { + source: "iana" + }, + "application/vnd.espass-espass+zip": { + source: "iana", + compressible: false + }, + "application/vnd.eszigno3+xml": { + source: "iana", + compressible: true, + extensions: ["es3", "et3"] + }, + "application/vnd.etsi.aoc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.asic-e+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.asic-s+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.cug+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvcommand+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvservice+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsync+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mcid+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mheg5": { + source: "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.pstn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.sci+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.simservs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.timestamp-token": { + source: "iana" + }, + "application/vnd.etsi.tsl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.tsl.der": { + source: "iana" + }, + "application/vnd.eu.kasparian.car+json": { + source: "iana", + compressible: true + }, + "application/vnd.eudora.data": { + source: "iana" + }, + "application/vnd.evolv.ecig.profile": { + source: "iana" + }, + "application/vnd.evolv.ecig.settings": { + source: "iana" + }, + "application/vnd.evolv.ecig.theme": { + source: "iana" + }, + "application/vnd.exstream-empower+zip": { + source: "iana", + compressible: false + }, + "application/vnd.exstream-package": { + source: "iana" + }, + "application/vnd.ezpix-album": { + source: "iana", + extensions: ["ez2"] + }, + "application/vnd.ezpix-package": { + source: "iana", + extensions: ["ez3"] + }, + "application/vnd.f-secure.mobile": { + source: "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + source: "iana", + compressible: false + }, + "application/vnd.fastcopy-disk-image": { + source: "iana" + }, + "application/vnd.fdf": { + source: "apache", + extensions: ["fdf"] + }, + "application/vnd.fdsn.mseed": { + source: "iana", + extensions: ["mseed"] + }, + "application/vnd.fdsn.seed": { + source: "iana", + extensions: ["seed", "dataless"] + }, + "application/vnd.fdsn.stationxml+xml": { + source: "iana", + charset: "XML-BASED", + compressible: true + }, + "application/vnd.ffsns": { + source: "iana" + }, + "application/vnd.ficlab.flb+zip": { + source: "iana", + compressible: false + }, + "application/vnd.filmit.zfc": { + source: "iana" + }, + "application/vnd.fints": { + source: "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + source: "iana" + }, + "application/vnd.flographit": { + source: "iana", + extensions: ["gph"] + }, + "application/vnd.fluxtime.clip": { + source: "iana", + extensions: ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + source: "iana" + }, + "application/vnd.framemaker": { + source: "iana", + extensions: ["fm", "frame", "maker", "book"] + }, + "application/vnd.freelog.comic": { + source: "iana" + }, + "application/vnd.frogans.fnc": { + source: "apache", + extensions: ["fnc"] + }, + "application/vnd.frogans.ltf": { + source: "apache", + extensions: ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + source: "iana", + extensions: ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + source: "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.fujitsu.oasys": { + source: "iana", + extensions: ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + source: "iana", + extensions: ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + source: "iana", + extensions: ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + source: "iana", + extensions: ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + source: "iana", + extensions: ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + source: "iana" + }, + "application/vnd.fujixerox.art4": { + source: "iana" + }, + "application/vnd.fujixerox.ddd": { + source: "iana", + extensions: ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + source: "iana", + extensions: ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + source: "iana", + extensions: ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + source: "iana" + }, + "application/vnd.fujixerox.hbpl": { + source: "iana" + }, + "application/vnd.fut-misnet": { + source: "iana" + }, + "application/vnd.futoin+cbor": { + source: "iana" + }, + "application/vnd.futoin+json": { + source: "iana", + compressible: true + }, + "application/vnd.fuzzysheet": { + source: "iana", + extensions: ["fzs"] + }, + "application/vnd.ga4gh.passport+jwt": { + source: "iana" + }, + "application/vnd.genomatix.tuxedo": { + source: "iana", + extensions: ["txd"] + }, + "application/vnd.genozip": { + source: "iana" + }, + "application/vnd.gentics.grd+json": { + source: "iana", + compressible: true + }, + "application/vnd.gentoo.catmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gentoo.ebuild": { + source: "iana" + }, + "application/vnd.gentoo.eclass": { + source: "iana" + }, + "application/vnd.gentoo.gpkg": { + source: "iana" + }, + "application/vnd.gentoo.manifest": { + source: "iana" + }, + "application/vnd.gentoo.pkgmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gentoo.xpak": { + source: "iana" + }, + "application/vnd.geo+json": { + source: "apache", + compressible: true + }, + "application/vnd.geocube+xml": { + source: "apache", + compressible: true + }, + "application/vnd.geogebra.file": { + source: "iana", + extensions: ["ggb"] + }, + "application/vnd.geogebra.pinboard": { + source: "iana" + }, + "application/vnd.geogebra.slides": { + source: "iana", + extensions: ["ggs"] + }, + "application/vnd.geogebra.tool": { + source: "iana", + extensions: ["ggt"] + }, + "application/vnd.geometry-explorer": { + source: "iana", + extensions: ["gex", "gre"] + }, + "application/vnd.geonext": { + source: "iana", + extensions: ["gxt"] + }, + "application/vnd.geoplan": { + source: "iana", + extensions: ["g2w"] + }, + "application/vnd.geospace": { + source: "iana", + extensions: ["g3w"] + }, + "application/vnd.gerber": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + source: "iana" + }, + "application/vnd.gmx": { + source: "iana", + extensions: ["gmx"] + }, + "application/vnd.gnu.taler.exchange+json": { + source: "iana", + compressible: true + }, + "application/vnd.gnu.taler.merchant+json": { + source: "iana", + compressible: true + }, + "application/vnd.google-apps.audio": {}, + "application/vnd.google-apps.document": { + compressible: false, + extensions: ["gdoc"] + }, + "application/vnd.google-apps.drawing": { + compressible: false, + extensions: ["gdraw"] + }, + "application/vnd.google-apps.drive-sdk": { + compressible: false + }, + "application/vnd.google-apps.file": {}, + "application/vnd.google-apps.folder": { + compressible: false + }, + "application/vnd.google-apps.form": { + compressible: false, + extensions: ["gform"] + }, + "application/vnd.google-apps.fusiontable": {}, + "application/vnd.google-apps.jam": { + compressible: false, + extensions: ["gjam"] + }, + "application/vnd.google-apps.mail-layout": {}, + "application/vnd.google-apps.map": { + compressible: false, + extensions: ["gmap"] + }, + "application/vnd.google-apps.photo": {}, + "application/vnd.google-apps.presentation": { + compressible: false, + extensions: ["gslides"] + }, + "application/vnd.google-apps.script": { + compressible: false, + extensions: ["gscript"] + }, + "application/vnd.google-apps.shortcut": {}, + "application/vnd.google-apps.site": { + compressible: false, + extensions: ["gsite"] + }, + "application/vnd.google-apps.spreadsheet": { + compressible: false, + extensions: ["gsheet"] + }, + "application/vnd.google-apps.unknown": {}, + "application/vnd.google-apps.video": {}, + "application/vnd.google-earth.kml+xml": { + source: "iana", + compressible: true, + extensions: ["kml"] + }, + "application/vnd.google-earth.kmz": { + source: "iana", + compressible: false, + extensions: ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + source: "apache", + compressible: true + }, + "application/vnd.gov.sk.e-form+zip": { + source: "iana", + compressible: false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + source: "iana", + compressible: true, + extensions: ["xdcf"] + }, + "application/vnd.gpxsee.map+xml": { + source: "iana", + compressible: true + }, + "application/vnd.grafeq": { + source: "iana", + extensions: ["gqf", "gqs"] + }, + "application/vnd.gridmp": { + source: "iana" + }, + "application/vnd.groove-account": { + source: "iana", + extensions: ["gac"] + }, + "application/vnd.groove-help": { + source: "iana", + extensions: ["ghf"] + }, + "application/vnd.groove-identity-message": { + source: "iana", + extensions: ["gim"] + }, + "application/vnd.groove-injector": { + source: "iana", + extensions: ["grv"] + }, + "application/vnd.groove-tool-message": { + source: "iana", + extensions: ["gtm"] + }, + "application/vnd.groove-tool-template": { + source: "iana", + extensions: ["tpl"] + }, + "application/vnd.groove-vcard": { + source: "iana", + extensions: ["vcg"] + }, + "application/vnd.hal+json": { + source: "iana", + compressible: true + }, + "application/vnd.hal+xml": { + source: "iana", + compressible: true, + extensions: ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + source: "iana", + compressible: true, + extensions: ["zmm"] + }, + "application/vnd.hbci": { + source: "iana", + extensions: ["hbci"] + }, + "application/vnd.hc+json": { + source: "iana", + compressible: true + }, + "application/vnd.hcl-bireports": { + source: "iana" + }, + "application/vnd.hdt": { + source: "iana" + }, + "application/vnd.heroku+json": { + source: "iana", + compressible: true + }, + "application/vnd.hhe.lesson-player": { + source: "iana", + extensions: ["les"] + }, + "application/vnd.hp-hpgl": { + source: "iana", + extensions: ["hpgl"] + }, + "application/vnd.hp-hpid": { + source: "iana", + extensions: ["hpid"] + }, + "application/vnd.hp-hps": { + source: "iana", + extensions: ["hps"] + }, + "application/vnd.hp-jlyt": { + source: "iana", + extensions: ["jlt"] + }, + "application/vnd.hp-pcl": { + source: "iana", + extensions: ["pcl"] + }, + "application/vnd.hp-pclxl": { + source: "iana", + extensions: ["pclxl"] + }, + "application/vnd.hsl": { + source: "iana" + }, + "application/vnd.httphone": { + source: "iana" + }, + "application/vnd.hydrostatix.sof-data": { + source: "iana", + extensions: ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyper-item+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyperdrive+json": { + source: "iana", + compressible: true + }, + "application/vnd.hzn-3d-crossword": { + source: "iana" + }, + "application/vnd.ibm.afplinedata": { + source: "apache" + }, + "application/vnd.ibm.electronic-media": { + source: "iana" + }, + "application/vnd.ibm.minipay": { + source: "iana", + extensions: ["mpy"] + }, + "application/vnd.ibm.modcap": { + source: "apache", + extensions: ["afp", "listafp", "list3820"] + }, + "application/vnd.ibm.rights-management": { + source: "iana", + extensions: ["irm"] + }, + "application/vnd.ibm.secure-container": { + source: "iana", + extensions: ["sc"] + }, + "application/vnd.iccprofile": { + source: "iana", + extensions: ["icc", "icm"] + }, + "application/vnd.ieee.1905": { + source: "iana" + }, + "application/vnd.igloader": { + source: "iana", + extensions: ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + source: "iana", + compressible: false + }, + "application/vnd.imagemeter.image+zip": { + source: "iana", + compressible: false + }, + "application/vnd.immervision-ivp": { + source: "iana", + extensions: ["ivp"] + }, + "application/vnd.immervision-ivu": { + source: "iana", + extensions: ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + source: "iana" + }, + "application/vnd.ims.imsccv1p2": { + source: "iana" + }, + "application/vnd.ims.imsccv1p3": { + source: "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + source: "iana", + compressible: true + }, + "application/vnd.informedcontrol.rms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.informix-visionary": { + source: "apache" + }, + "application/vnd.infotech.project": { + source: "iana" + }, + "application/vnd.infotech.project+xml": { + source: "iana", + compressible: true + }, + "application/vnd.innopath.wamp.notification": { + source: "iana" + }, + "application/vnd.insors.igm": { + source: "iana", + extensions: ["igm"] + }, + "application/vnd.intercon.formnet": { + source: "iana", + extensions: ["xpw", "xpx"] + }, + "application/vnd.intergeo": { + source: "iana", + extensions: ["i2g"] + }, + "application/vnd.intertrust.digibox": { + source: "iana" + }, + "application/vnd.intertrust.nncp": { + source: "iana" + }, + "application/vnd.intu.qbo": { + source: "iana", + extensions: ["qbo"] + }, + "application/vnd.intu.qfx": { + source: "iana", + extensions: ["qfx"] + }, + "application/vnd.ipfs.ipns-record": { + source: "iana" + }, + "application/vnd.ipld.car": { + source: "iana" + }, + "application/vnd.ipld.dag-cbor": { + source: "iana" + }, + "application/vnd.ipld.dag-json": { + source: "iana" + }, + "application/vnd.ipld.raw": { + source: "iana" + }, + "application/vnd.iptc.g2.catalogitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.packageitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.planningitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ipunplugged.rcprofile": { + source: "iana", + extensions: ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + source: "iana", + compressible: true, + extensions: ["irp"] + }, + "application/vnd.is-xpr": { + source: "iana", + extensions: ["xpr"] + }, + "application/vnd.isac.fcs": { + source: "iana", + extensions: ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + source: "iana", + compressible: false + }, + "application/vnd.jam": { + source: "iana", + extensions: ["jam"] + }, + "application/vnd.japannet-directory-service": { + source: "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-payment-wakeup": { + source: "iana" + }, + "application/vnd.japannet-registration": { + source: "iana" + }, + "application/vnd.japannet-registration-wakeup": { + source: "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-verification": { + source: "iana" + }, + "application/vnd.japannet-verification-wakeup": { + source: "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + source: "iana", + extensions: ["rms"] + }, + "application/vnd.jisp": { + source: "iana", + extensions: ["jisp"] + }, + "application/vnd.joost.joda-archive": { + source: "iana", + extensions: ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + source: "iana" + }, + "application/vnd.kahootz": { + source: "iana", + extensions: ["ktz", "ktr"] + }, + "application/vnd.kde.karbon": { + source: "iana", + extensions: ["karbon"] + }, + "application/vnd.kde.kchart": { + source: "iana", + extensions: ["chrt"] + }, + "application/vnd.kde.kformula": { + source: "iana", + extensions: ["kfo"] + }, + "application/vnd.kde.kivio": { + source: "iana", + extensions: ["flw"] + }, + "application/vnd.kde.kontour": { + source: "iana", + extensions: ["kon"] + }, + "application/vnd.kde.kpresenter": { + source: "iana", + extensions: ["kpr", "kpt"] + }, + "application/vnd.kde.kspread": { + source: "iana", + extensions: ["ksp"] + }, + "application/vnd.kde.kword": { + source: "iana", + extensions: ["kwd", "kwt"] + }, + "application/vnd.kdl": { + source: "iana" + }, + "application/vnd.kenameaapp": { + source: "iana", + extensions: ["htke"] + }, + "application/vnd.keyman.kmp+zip": { + source: "iana", + compressible: false + }, + "application/vnd.keyman.kmx": { + source: "iana" + }, + "application/vnd.kidspiration": { + source: "iana", + extensions: ["kia"] + }, + "application/vnd.kinar": { + source: "iana", + extensions: ["kne", "knp"] + }, + "application/vnd.koan": { + source: "iana", + extensions: ["skp", "skd", "skt", "skm"] + }, + "application/vnd.kodak-descriptor": { + source: "iana", + extensions: ["sse"] + }, + "application/vnd.las": { + source: "iana" + }, + "application/vnd.las.las+json": { + source: "iana", + compressible: true + }, + "application/vnd.las.las+xml": { + source: "iana", + compressible: true, + extensions: ["lasxml"] + }, + "application/vnd.laszip": { + source: "iana" + }, + "application/vnd.ldev.productlicensing": { + source: "iana" + }, + "application/vnd.leap+json": { + source: "iana", + compressible: true + }, + "application/vnd.liberty-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + source: "iana", + extensions: ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + source: "iana", + compressible: true, + extensions: ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + source: "iana", + compressible: false + }, + "application/vnd.loom": { + source: "iana" + }, + "application/vnd.lotus-1-2-3": { + source: "iana", + extensions: ["123"] + }, + "application/vnd.lotus-approach": { + source: "iana", + extensions: ["apr"] + }, + "application/vnd.lotus-freelance": { + source: "iana", + extensions: ["pre"] + }, + "application/vnd.lotus-notes": { + source: "iana", + extensions: ["nsf"] + }, + "application/vnd.lotus-organizer": { + source: "iana", + extensions: ["org"] + }, + "application/vnd.lotus-screencam": { + source: "iana", + extensions: ["scm"] + }, + "application/vnd.lotus-wordpro": { + source: "iana", + extensions: ["lwp"] + }, + "application/vnd.macports.portpkg": { + source: "iana", + extensions: ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + source: "iana", + extensions: ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.conftoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.license+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.mdcf": { + source: "iana" + }, + "application/vnd.mason+json": { + source: "iana", + compressible: true + }, + "application/vnd.maxar.archive.3tz+zip": { + source: "iana", + compressible: false + }, + "application/vnd.maxmind.maxmind-db": { + source: "iana" + }, + "application/vnd.mcd": { + source: "iana", + extensions: ["mcd"] + }, + "application/vnd.mdl": { + source: "iana" + }, + "application/vnd.mdl-mbsdf": { + source: "iana" + }, + "application/vnd.medcalcdata": { + source: "iana", + extensions: ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + source: "iana", + extensions: ["cdkey"] + }, + "application/vnd.medicalholodeck.recordxr": { + source: "iana" + }, + "application/vnd.meridian-slingshot": { + source: "iana" + }, + "application/vnd.mermaid": { + source: "iana" + }, + "application/vnd.mfer": { + source: "iana", + extensions: ["mwf"] + }, + "application/vnd.mfmp": { + source: "iana", + extensions: ["mfm"] + }, + "application/vnd.micro+json": { + source: "iana", + compressible: true + }, + "application/vnd.micrografx.flo": { + source: "iana", + extensions: ["flo"] + }, + "application/vnd.micrografx.igx": { + source: "iana", + extensions: ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + source: "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + source: "iana" + }, + "application/vnd.miele+json": { + source: "iana", + compressible: true + }, + "application/vnd.mif": { + source: "iana", + extensions: ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + source: "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + source: "iana" + }, + "application/vnd.mobius.daf": { + source: "iana", + extensions: ["daf"] + }, + "application/vnd.mobius.dis": { + source: "iana", + extensions: ["dis"] + }, + "application/vnd.mobius.mbk": { + source: "iana", + extensions: ["mbk"] + }, + "application/vnd.mobius.mqy": { + source: "iana", + extensions: ["mqy"] + }, + "application/vnd.mobius.msl": { + source: "iana", + extensions: ["msl"] + }, + "application/vnd.mobius.plc": { + source: "iana", + extensions: ["plc"] + }, + "application/vnd.mobius.txf": { + source: "iana", + extensions: ["txf"] + }, + "application/vnd.modl": { + source: "iana" + }, + "application/vnd.mophun.application": { + source: "iana", + extensions: ["mpn"] + }, + "application/vnd.mophun.certificate": { + source: "iana", + extensions: ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + source: "iana" + }, + "application/vnd.motorola.iprm": { + source: "iana" + }, + "application/vnd.mozilla.xul+xml": { + source: "iana", + compressible: true, + extensions: ["xul"] + }, + "application/vnd.ms-3mfdocument": { + source: "iana" + }, + "application/vnd.ms-artgalry": { + source: "iana", + extensions: ["cil"] + }, + "application/vnd.ms-asf": { + source: "iana" + }, + "application/vnd.ms-cab-compressed": { + source: "iana", + extensions: ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + source: "apache" + }, + "application/vnd.ms-excel": { + source: "iana", + compressible: false, + extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + source: "iana", + extensions: ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + source: "iana", + extensions: ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + source: "iana", + extensions: ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + source: "iana", + extensions: ["xltm"] + }, + "application/vnd.ms-fontobject": { + source: "iana", + compressible: true, + extensions: ["eot"] + }, + "application/vnd.ms-htmlhelp": { + source: "iana", + extensions: ["chm"] + }, + "application/vnd.ms-ims": { + source: "iana", + extensions: ["ims"] + }, + "application/vnd.ms-lrm": { + source: "iana", + extensions: ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-officetheme": { + source: "iana", + extensions: ["thmx"] + }, + "application/vnd.ms-opentype": { + source: "apache", + compressible: true + }, + "application/vnd.ms-outlook": { + compressible: false, + extensions: ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + source: "apache" + }, + "application/vnd.ms-pki.seccat": { + source: "apache", + extensions: ["cat"] + }, + "application/vnd.ms-pki.stl": { + source: "apache", + extensions: ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-powerpoint": { + source: "iana", + compressible: false, + extensions: ["ppt", "pps", "pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + source: "iana", + extensions: ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + source: "iana", + extensions: ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + source: "iana", + extensions: ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + source: "iana", + extensions: ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + source: "iana", + extensions: ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-printing.printticket+xml": { + source: "apache", + compressible: true + }, + "application/vnd.ms-printschematicket+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-project": { + source: "iana", + extensions: ["mpp", "mpt"] + }, + "application/vnd.ms-tnef": { + source: "iana" + }, + "application/vnd.ms-visio.viewer": { + extensions: ["vdx"] + }, + "application/vnd.ms-windows.devicepairing": { + source: "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + source: "iana" + }, + "application/vnd.ms-windows.printerpairing": { + source: "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + source: "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + source: "iana", + extensions: ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + source: "iana", + extensions: ["dotm"] + }, + "application/vnd.ms-works": { + source: "iana", + extensions: ["wps", "wks", "wcm", "wdb"] + }, + "application/vnd.ms-wpl": { + source: "iana", + extensions: ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + source: "iana", + compressible: false, + extensions: ["xps"] + }, + "application/vnd.msa-disk-image": { + source: "iana" + }, + "application/vnd.mseq": { + source: "iana", + extensions: ["mseq"] + }, + "application/vnd.msgpack": { + source: "iana" + }, + "application/vnd.msign": { + source: "iana" + }, + "application/vnd.multiad.creator": { + source: "iana" + }, + "application/vnd.multiad.creator.cif": { + source: "iana" + }, + "application/vnd.music-niff": { + source: "iana" + }, + "application/vnd.musician": { + source: "iana", + extensions: ["mus"] + }, + "application/vnd.muvee.style": { + source: "iana", + extensions: ["msty"] + }, + "application/vnd.mynfc": { + source: "iana", + extensions: ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + source: "iana", + compressible: true + }, + "application/vnd.nato.bindingdataobject+cbor": { + source: "iana" + }, + "application/vnd.nato.bindingdataobject+json": { + source: "iana", + compressible: true + }, + "application/vnd.nato.bindingdataobject+xml": { + source: "iana", + compressible: true, + extensions: ["bdo"] + }, + "application/vnd.nato.openxmlformats-package.iepd+zip": { + source: "iana", + compressible: false + }, + "application/vnd.ncd.control": { + source: "iana" + }, + "application/vnd.ncd.reference": { + source: "iana" + }, + "application/vnd.nearst.inv+json": { + source: "iana", + compressible: true + }, + "application/vnd.nebumind.line": { + source: "iana" + }, + "application/vnd.nervana": { + source: "iana" + }, + "application/vnd.netfpx": { + source: "iana" + }, + "application/vnd.neurolanguage.nlu": { + source: "iana", + extensions: ["nlu"] + }, + "application/vnd.nimn": { + source: "iana" + }, + "application/vnd.nintendo.nitro.rom": { + source: "iana" + }, + "application/vnd.nintendo.snes.rom": { + source: "iana" + }, + "application/vnd.nitf": { + source: "iana", + extensions: ["ntf", "nitf"] + }, + "application/vnd.noblenet-directory": { + source: "iana", + extensions: ["nnd"] + }, + "application/vnd.noblenet-sealer": { + source: "iana", + extensions: ["nns"] + }, + "application/vnd.noblenet-web": { + source: "iana", + extensions: ["nnw"] + }, + "application/vnd.nokia.catalogs": { + source: "iana" + }, + "application/vnd.nokia.conml+wbxml": { + source: "iana" + }, + "application/vnd.nokia.conml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.iptv.config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.isds-radio-presets": { + source: "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + source: "iana" + }, + "application/vnd.nokia.landmark+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.landmarkcollection+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.n-gage.ac+xml": { + source: "iana", + compressible: true, + extensions: ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + source: "iana", + extensions: ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + source: "apache", + extensions: ["n-gage"] + }, + "application/vnd.nokia.ncd": { + source: "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + source: "iana" + }, + "application/vnd.nokia.pcd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.radio-preset": { + source: "iana", + extensions: ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + source: "iana", + extensions: ["rpss"] + }, + "application/vnd.novadigm.edm": { + source: "iana", + extensions: ["edm"] + }, + "application/vnd.novadigm.edx": { + source: "iana", + extensions: ["edx"] + }, + "application/vnd.novadigm.ext": { + source: "iana", + extensions: ["ext"] + }, + "application/vnd.ntt-local.content-share": { + source: "iana" + }, + "application/vnd.ntt-local.file-transfer": { + source: "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + source: "iana" + }, + "application/vnd.oai.workflows": { + source: "iana" + }, + "application/vnd.oai.workflows+json": { + source: "iana", + compressible: true + }, + "application/vnd.oai.workflows+yaml": { + source: "iana" + }, + "application/vnd.oasis.opendocument.base": { + source: "iana" + }, + "application/vnd.oasis.opendocument.chart": { + source: "iana", + extensions: ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + source: "iana", + extensions: ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + source: "apache", + extensions: ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + source: "iana", + extensions: ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + source: "iana", + extensions: ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + source: "iana", + compressible: false, + extensions: ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + source: "iana", + extensions: ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + source: "iana", + extensions: ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + source: "iana", + extensions: ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + source: "iana", + compressible: false, + extensions: ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + source: "iana", + extensions: ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + source: "iana", + compressible: false, + extensions: ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + source: "iana", + extensions: ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + source: "iana", + compressible: false, + extensions: ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + source: "iana", + extensions: ["odm"] + }, + "application/vnd.oasis.opendocument.text-master-template": { + source: "iana" + }, + "application/vnd.oasis.opendocument.text-template": { + source: "iana", + extensions: ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + source: "iana", + extensions: ["oth"] + }, + "application/vnd.obn": { + source: "iana" + }, + "application/vnd.ocf+cbor": { + source: "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.oftn.l10n+json": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.cspg-hexbinary": { + source: "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.dae.xhtml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.pae.gem": { + source: "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.spdlist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.ueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.userprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.olpc-sugar": { + source: "iana", + extensions: ["xo"] + }, + "application/vnd.oma-scws-config": { + source: "iana" + }, + "application/vnd.oma-scws-http-request": { + source: "iana" + }, + "application/vnd.oma-scws-http-response": { + source: "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + source: "apache", + compressible: true + }, + "application/vnd.oma.bcast.imd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.ltkm": { + source: "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + source: "iana" + }, + "application/vnd.oma.bcast.sgboot": { + source: "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sgdu": { + source: "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + source: "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + source: "apache", + compressible: true + }, + "application/vnd.oma.bcast.sprov+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.stkm": { + source: "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-feature-handler+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-pcc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-subs-invite+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-user-prefs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.dcd": { + source: "iana" + }, + "application/vnd.oma.dcdc": { + source: "iana" + }, + "application/vnd.oma.dd2+xml": { + source: "iana", + compressible: true, + extensions: ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.group-usage-list+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+cbor": { + source: "iana" + }, + "application/vnd.oma.lwm2m+json": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+tlv": { + source: "iana" + }, + "application/vnd.oma.pal+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.final-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.groups+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.push": { + source: "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.xcap-directory+xml": { + source: "iana", + compressible: true + }, + "application/vnd.omads-email+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-file+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-folder+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omaloc-supl-init": { + source: "iana" + }, + "application/vnd.onepager": { + source: "iana" + }, + "application/vnd.onepagertamp": { + source: "iana" + }, + "application/vnd.onepagertamx": { + source: "iana" + }, + "application/vnd.onepagertat": { + source: "iana" + }, + "application/vnd.onepagertatp": { + source: "iana" + }, + "application/vnd.onepagertatx": { + source: "iana" + }, + "application/vnd.onvif.metadata": { + source: "iana" + }, + "application/vnd.openblox.game+xml": { + source: "iana", + compressible: true, + extensions: ["obgx"] + }, + "application/vnd.openblox.game-binary": { + source: "iana" + }, + "application/vnd.openeye.oeb": { + source: "iana" + }, + "application/vnd.openofficeorg.extension": { + source: "apache", + extensions: ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + source: "iana", + compressible: true, + extensions: ["osm"] + }, + "application/vnd.opentimestamps.ots": { + source: "iana" + }, + "application/vnd.openvpi.dspx+json": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + source: "iana", + compressible: false, + extensions: ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + source: "iana", + extensions: ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + source: "iana", + extensions: ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + source: "iana", + extensions: ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + source: "iana", + compressible: false, + extensions: ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + source: "iana", + extensions: ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + source: "iana", + compressible: false, + extensions: ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + source: "iana", + extensions: ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oracle.resource+json": { + source: "iana", + compressible: true + }, + "application/vnd.orange.indata": { + source: "iana" + }, + "application/vnd.osa.netdeploy": { + source: "iana" + }, + "application/vnd.osgeo.mapguide.package": { + source: "iana", + extensions: ["mgp"] + }, + "application/vnd.osgi.bundle": { + source: "iana" + }, + "application/vnd.osgi.dp": { + source: "iana", + extensions: ["dp"] + }, + "application/vnd.osgi.subsystem": { + source: "iana", + extensions: ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oxli.countgraph": { + source: "iana" + }, + "application/vnd.pagerduty+json": { + source: "iana", + compressible: true + }, + "application/vnd.palm": { + source: "iana", + extensions: ["pdb", "pqa", "oprc"] + }, + "application/vnd.panoply": { + source: "iana" + }, + "application/vnd.paos.xml": { + source: "iana" + }, + "application/vnd.patentdive": { + source: "iana" + }, + "application/vnd.patientecommsdoc": { + source: "iana" + }, + "application/vnd.pawaafile": { + source: "iana", + extensions: ["paw"] + }, + "application/vnd.pcos": { + source: "iana" + }, + "application/vnd.pg.format": { + source: "iana", + extensions: ["str"] + }, + "application/vnd.pg.osasli": { + source: "iana", + extensions: ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + source: "iana" + }, + "application/vnd.picsel": { + source: "iana", + extensions: ["efif"] + }, + "application/vnd.pmi.widget": { + source: "iana", + extensions: ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + source: "iana", + compressible: true + }, + "application/vnd.pocketlearn": { + source: "iana", + extensions: ["plf"] + }, + "application/vnd.powerbuilder6": { + source: "iana", + extensions: ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + source: "iana" + }, + "application/vnd.powerbuilder7": { + source: "iana" + }, + "application/vnd.powerbuilder7-s": { + source: "iana" + }, + "application/vnd.powerbuilder75": { + source: "iana" + }, + "application/vnd.powerbuilder75-s": { + source: "iana" + }, + "application/vnd.preminet": { + source: "iana" + }, + "application/vnd.previewsystems.box": { + source: "iana", + extensions: ["box"] + }, + "application/vnd.procrate.brushset": { + extensions: ["brushset"] + }, + "application/vnd.procreate.brush": { + extensions: ["brush"] + }, + "application/vnd.procreate.dream": { + extensions: ["drm"] + }, + "application/vnd.proteus.magazine": { + source: "iana", + extensions: ["mgz"] + }, + "application/vnd.psfs": { + source: "iana" + }, + "application/vnd.pt.mundusmundi": { + source: "iana" + }, + "application/vnd.publishare-delta-tree": { + source: "iana", + extensions: ["qps"] + }, + "application/vnd.pvi.ptid1": { + source: "iana", + extensions: ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + source: "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + source: "iana", + compressible: true, + extensions: ["xhtm"] + }, + "application/vnd.qualcomm.brew-app-res": { + source: "iana" + }, + "application/vnd.quarantainenet": { + source: "iana" + }, + "application/vnd.quark.quarkxpress": { + source: "iana", + extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] + }, + "application/vnd.quobject-quoxdocument": { + source: "iana" + }, + "application/vnd.radisys.moml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + source: "iana", + compressible: true + }, + "application/vnd.rainstor.data": { + source: "iana" + }, + "application/vnd.rapid": { + source: "iana" + }, + "application/vnd.rar": { + source: "iana", + extensions: ["rar"] + }, + "application/vnd.realvnc.bed": { + source: "iana", + extensions: ["bed"] + }, + "application/vnd.recordare.musicxml": { + source: "iana", + extensions: ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + source: "iana", + compressible: true, + extensions: ["musicxml"] + }, + "application/vnd.relpipe": { + source: "iana" + }, + "application/vnd.renlearn.rlprint": { + source: "iana" + }, + "application/vnd.resilient.logic": { + source: "iana" + }, + "application/vnd.restful+json": { + source: "iana", + compressible: true + }, + "application/vnd.rig.cryptonote": { + source: "iana", + extensions: ["cryptonote"] + }, + "application/vnd.rim.cod": { + source: "apache", + extensions: ["cod"] + }, + "application/vnd.rn-realmedia": { + source: "apache", + extensions: ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + source: "apache", + extensions: ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + source: "iana", + compressible: true, + extensions: ["link66"] + }, + "application/vnd.rs-274x": { + source: "iana" + }, + "application/vnd.ruckus.download": { + source: "iana" + }, + "application/vnd.s3sms": { + source: "iana" + }, + "application/vnd.sailingtracker.track": { + source: "iana", + extensions: ["st"] + }, + "application/vnd.sar": { + source: "iana" + }, + "application/vnd.sbm.cid": { + source: "iana" + }, + "application/vnd.sbm.mid2": { + source: "iana" + }, + "application/vnd.scribus": { + source: "iana" + }, + "application/vnd.sealed.3df": { + source: "iana" + }, + "application/vnd.sealed.csf": { + source: "iana" + }, + "application/vnd.sealed.doc": { + source: "iana" + }, + "application/vnd.sealed.eml": { + source: "iana" + }, + "application/vnd.sealed.mht": { + source: "iana" + }, + "application/vnd.sealed.net": { + source: "iana" + }, + "application/vnd.sealed.ppt": { + source: "iana" + }, + "application/vnd.sealed.tiff": { + source: "iana" + }, + "application/vnd.sealed.xls": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + source: "iana" + }, + "application/vnd.seemail": { + source: "iana", + extensions: ["see"] + }, + "application/vnd.seis+json": { + source: "iana", + compressible: true + }, + "application/vnd.sema": { + source: "iana", + extensions: ["sema"] + }, + "application/vnd.semd": { + source: "iana", + extensions: ["semd"] + }, + "application/vnd.semf": { + source: "iana", + extensions: ["semf"] + }, + "application/vnd.shade-save-file": { + source: "iana" + }, + "application/vnd.shana.informed.formdata": { + source: "iana", + extensions: ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + source: "iana", + extensions: ["itp"] + }, + "application/vnd.shana.informed.interchange": { + source: "iana", + extensions: ["iif"] + }, + "application/vnd.shana.informed.package": { + source: "iana", + extensions: ["ipk"] + }, + "application/vnd.shootproof+json": { + source: "iana", + compressible: true + }, + "application/vnd.shopkick+json": { + source: "iana", + compressible: true + }, + "application/vnd.shp": { + source: "iana" + }, + "application/vnd.shx": { + source: "iana" + }, + "application/vnd.sigrok.session": { + source: "iana" + }, + "application/vnd.simtech-mindmapper": { + source: "iana", + extensions: ["twd", "twds"] + }, + "application/vnd.siren+json": { + source: "iana", + compressible: true + }, + "application/vnd.sketchometry": { + source: "iana" + }, + "application/vnd.smaf": { + source: "iana", + extensions: ["mmf"] + }, + "application/vnd.smart.notebook": { + source: "iana" + }, + "application/vnd.smart.teacher": { + source: "iana", + extensions: ["teacher"] + }, + "application/vnd.smintio.portals.archive": { + source: "iana" + }, + "application/vnd.snesdev-page-table": { + source: "iana" + }, + "application/vnd.software602.filler.form+xml": { + source: "iana", + compressible: true, + extensions: ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + source: "iana" + }, + "application/vnd.solent.sdkm+xml": { + source: "iana", + compressible: true, + extensions: ["sdkm", "sdkd"] + }, + "application/vnd.spotfire.dxp": { + source: "iana", + extensions: ["dxp"] + }, + "application/vnd.spotfire.sfs": { + source: "iana", + extensions: ["sfs"] + }, + "application/vnd.sqlite3": { + source: "iana" + }, + "application/vnd.sss-cod": { + source: "iana" + }, + "application/vnd.sss-dtf": { + source: "iana" + }, + "application/vnd.sss-ntf": { + source: "iana" + }, + "application/vnd.stardivision.calc": { + source: "apache", + extensions: ["sdc"] + }, + "application/vnd.stardivision.draw": { + source: "apache", + extensions: ["sda"] + }, + "application/vnd.stardivision.impress": { + source: "apache", + extensions: ["sdd"] + }, + "application/vnd.stardivision.math": { + source: "apache", + extensions: ["smf"] + }, + "application/vnd.stardivision.writer": { + source: "apache", + extensions: ["sdw", "vor"] + }, + "application/vnd.stardivision.writer-global": { + source: "apache", + extensions: ["sgl"] + }, + "application/vnd.stepmania.package": { + source: "iana", + extensions: ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + source: "iana", + extensions: ["sm"] + }, + "application/vnd.street-stream": { + source: "iana" + }, + "application/vnd.sun.wadl+xml": { + source: "iana", + compressible: true, + extensions: ["wadl"] + }, + "application/vnd.sun.xml.calc": { + source: "apache", + extensions: ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + source: "apache", + extensions: ["stc"] + }, + "application/vnd.sun.xml.draw": { + source: "apache", + extensions: ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + source: "apache", + extensions: ["std"] + }, + "application/vnd.sun.xml.impress": { + source: "apache", + extensions: ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + source: "apache", + extensions: ["sti"] + }, + "application/vnd.sun.xml.math": { + source: "apache", + extensions: ["sxm"] + }, + "application/vnd.sun.xml.writer": { + source: "apache", + extensions: ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + source: "apache", + extensions: ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + source: "apache", + extensions: ["stw"] + }, + "application/vnd.sus-calendar": { + source: "iana", + extensions: ["sus", "susp"] + }, + "application/vnd.svd": { + source: "iana", + extensions: ["svd"] + }, + "application/vnd.swiftview-ics": { + source: "iana" + }, + "application/vnd.sybyl.mol2": { + source: "iana" + }, + "application/vnd.sycle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.syft+json": { + source: "iana", + compressible: true + }, + "application/vnd.symbian.install": { + source: "apache", + extensions: ["sis", "sisx"] + }, + "application/vnd.syncml+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + source: "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmddf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.syncml.ds.notification": { + source: "iana" + }, + "application/vnd.tableschema+json": { + source: "iana", + compressible: true + }, + "application/vnd.tao.intent-module-archive": { + source: "iana", + extensions: ["tao"] + }, + "application/vnd.tcpdump.pcap": { + source: "iana", + extensions: ["pcap", "cap", "dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + source: "iana", + compressible: true + }, + "application/vnd.tmd.mediaflex.api+xml": { + source: "iana", + compressible: true + }, + "application/vnd.tml": { + source: "iana" + }, + "application/vnd.tmobile-livetv": { + source: "iana", + extensions: ["tmo"] + }, + "application/vnd.tri.onesource": { + source: "iana" + }, + "application/vnd.trid.tpt": { + source: "iana", + extensions: ["tpt"] + }, + "application/vnd.triscape.mxs": { + source: "iana", + extensions: ["mxs"] + }, + "application/vnd.trueapp": { + source: "iana", + extensions: ["tra"] + }, + "application/vnd.truedoc": { + source: "iana" + }, + "application/vnd.ubisoft.webplayer": { + source: "iana" + }, + "application/vnd.ufdl": { + source: "iana", + extensions: ["ufd", "ufdl"] + }, + "application/vnd.uic.osdm+json": { + source: "iana", + compressible: true + }, + "application/vnd.uiq.theme": { + source: "iana", + extensions: ["utz"] + }, + "application/vnd.umajin": { + source: "iana", + extensions: ["umj"] + }, + "application/vnd.unity": { + source: "iana", + extensions: ["unityweb"] + }, + "application/vnd.uoml+xml": { + source: "iana", + compressible: true, + extensions: ["uoml", "uo"] + }, + "application/vnd.uplanet.alert": { + source: "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.cacheop": { + source: "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.channel": { + source: "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.list": { + source: "iana" + }, + "application/vnd.uplanet.list-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.listcmd": { + source: "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.signal": { + source: "iana" + }, + "application/vnd.uri-map": { + source: "iana" + }, + "application/vnd.valve.source.material": { + source: "iana" + }, + "application/vnd.vcx": { + source: "iana", + extensions: ["vcx"] + }, + "application/vnd.vd-study": { + source: "iana" + }, + "application/vnd.vectorworks": { + source: "iana" + }, + "application/vnd.vel+json": { + source: "iana", + compressible: true + }, + "application/vnd.veraison.tsm-report+cbor": { + source: "iana" + }, + "application/vnd.veraison.tsm-report+json": { + source: "iana", + compressible: true + }, + "application/vnd.verimatrix.vcas": { + source: "iana" + }, + "application/vnd.veritone.aion+json": { + source: "iana", + compressible: true + }, + "application/vnd.veryant.thin": { + source: "iana" + }, + "application/vnd.ves.encrypted": { + source: "iana" + }, + "application/vnd.vidsoft.vidconference": { + source: "iana" + }, + "application/vnd.visio": { + source: "iana", + extensions: ["vsd", "vst", "vss", "vsw", "vsdx", "vtx"] + }, + "application/vnd.visionary": { + source: "iana", + extensions: ["vis"] + }, + "application/vnd.vividence.scriptfile": { + source: "iana" + }, + "application/vnd.vocalshaper.vsp4": { + source: "iana" + }, + "application/vnd.vsf": { + source: "iana", + extensions: ["vsf"] + }, + "application/vnd.wap.sic": { + source: "iana" + }, + "application/vnd.wap.slc": { + source: "iana" + }, + "application/vnd.wap.wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["wbxml"] + }, + "application/vnd.wap.wmlc": { + source: "iana", + extensions: ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + source: "iana", + extensions: ["wmlsc"] + }, + "application/vnd.wasmflow.wafl": { + source: "iana" + }, + "application/vnd.webturbo": { + source: "iana", + extensions: ["wtb"] + }, + "application/vnd.wfa.dpp": { + source: "iana" + }, + "application/vnd.wfa.p2p": { + source: "iana" + }, + "application/vnd.wfa.wsc": { + source: "iana" + }, + "application/vnd.windows.devicepairing": { + source: "iana" + }, + "application/vnd.wmc": { + source: "iana" + }, + "application/vnd.wmf.bootstrap": { + source: "iana" + }, + "application/vnd.wolfram.mathematica": { + source: "iana" + }, + "application/vnd.wolfram.mathematica.package": { + source: "iana" + }, + "application/vnd.wolfram.player": { + source: "iana", + extensions: ["nbp"] + }, + "application/vnd.wordlift": { + source: "iana" + }, + "application/vnd.wordperfect": { + source: "iana", + extensions: ["wpd"] + }, + "application/vnd.wqd": { + source: "iana", + extensions: ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + source: "iana" + }, + "application/vnd.wt.stf": { + source: "iana", + extensions: ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + source: "iana" + }, + "application/vnd.wv.csp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.wv.ssp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xacml+json": { + source: "iana", + compressible: true + }, + "application/vnd.xara": { + source: "iana", + extensions: ["xar"] + }, + "application/vnd.xarin.cpj": { + source: "iana" + }, + "application/vnd.xecrets-encrypted": { + source: "iana" + }, + "application/vnd.xfdl": { + source: "iana", + extensions: ["xfdl"] + }, + "application/vnd.xfdl.webform": { + source: "iana" + }, + "application/vnd.xmi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xmpie.cpkg": { + source: "iana" + }, + "application/vnd.xmpie.dpkg": { + source: "iana" + }, + "application/vnd.xmpie.plan": { + source: "iana" + }, + "application/vnd.xmpie.ppkg": { + source: "iana" + }, + "application/vnd.xmpie.xlim": { + source: "iana" + }, + "application/vnd.yamaha.hv-dic": { + source: "iana", + extensions: ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + source: "iana", + extensions: ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + source: "iana", + extensions: ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + source: "iana", + extensions: ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + source: "iana", + compressible: true, + extensions: ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + source: "iana" + }, + "application/vnd.yamaha.smaf-audio": { + source: "iana", + extensions: ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + source: "iana", + extensions: ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + source: "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + source: "iana" + }, + "application/vnd.yaoweme": { + source: "iana" + }, + "application/vnd.yellowriver-custom-menu": { + source: "iana", + extensions: ["cmp"] + }, + "application/vnd.zul": { + source: "iana", + extensions: ["zir", "zirz"] + }, + "application/vnd.zzazz.deck+xml": { + source: "iana", + compressible: true, + extensions: ["zaz"] + }, + "application/voicexml+xml": { + source: "iana", + compressible: true, + extensions: ["vxml"] + }, + "application/voucher-cms+json": { + source: "iana", + compressible: true + }, + "application/voucher-jws+json": { + source: "iana", + compressible: true + }, + "application/vp": { + source: "iana" + }, + "application/vp+cose": { + source: "iana" + }, + "application/vp+jwt": { + source: "iana" + }, + "application/vq-rtcpxr": { + source: "iana" + }, + "application/wasm": { + source: "iana", + compressible: true, + extensions: ["wasm"] + }, + "application/watcherinfo+xml": { + source: "iana", + compressible: true, + extensions: ["wif"] + }, + "application/webpush-options+json": { + source: "iana", + compressible: true + }, + "application/whoispp-query": { + source: "iana" + }, + "application/whoispp-response": { + source: "iana" + }, + "application/widget": { + source: "iana", + extensions: ["wgt"] + }, + "application/winhlp": { + source: "apache", + extensions: ["hlp"] + }, + "application/wita": { + source: "iana" + }, + "application/wordperfect5.1": { + source: "iana" + }, + "application/wsdl+xml": { + source: "iana", + compressible: true, + extensions: ["wsdl"] + }, + "application/wspolicy+xml": { + source: "iana", + compressible: true, + extensions: ["wspolicy"] + }, + "application/x-7z-compressed": { + source: "apache", + compressible: false, + extensions: ["7z"] + }, + "application/x-abiword": { + source: "apache", + extensions: ["abw"] + }, + "application/x-ace-compressed": { + source: "apache", + extensions: ["ace"] + }, + "application/x-amf": { + source: "apache" + }, + "application/x-apple-diskimage": { + source: "apache", + extensions: ["dmg"] + }, + "application/x-arj": { + compressible: false, + extensions: ["arj"] + }, + "application/x-authorware-bin": { + source: "apache", + extensions: ["aab", "x32", "u32", "vox"] + }, + "application/x-authorware-map": { + source: "apache", + extensions: ["aam"] + }, + "application/x-authorware-seg": { + source: "apache", + extensions: ["aas"] + }, + "application/x-bcpio": { + source: "apache", + extensions: ["bcpio"] + }, + "application/x-bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/x-bittorrent": { + source: "apache", + extensions: ["torrent"] + }, + "application/x-blender": { + extensions: ["blend"] + }, + "application/x-blorb": { + source: "apache", + extensions: ["blb", "blorb"] + }, + "application/x-bzip": { + source: "apache", + compressible: false, + extensions: ["bz"] + }, + "application/x-bzip2": { + source: "apache", + compressible: false, + extensions: ["bz2", "boz"] + }, + "application/x-cbr": { + source: "apache", + extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] + }, + "application/x-cdlink": { + source: "apache", + extensions: ["vcd"] + }, + "application/x-cfs-compressed": { + source: "apache", + extensions: ["cfs"] + }, + "application/x-chat": { + source: "apache", + extensions: ["chat"] + }, + "application/x-chess-pgn": { + source: "apache", + extensions: ["pgn"] + }, + "application/x-chrome-extension": { + extensions: ["crx"] + }, + "application/x-cocoa": { + source: "nginx", + extensions: ["cco"] + }, + "application/x-compress": { + source: "apache" + }, + "application/x-compressed": { + extensions: ["rar"] + }, + "application/x-conference": { + source: "apache", + extensions: ["nsc"] + }, + "application/x-cpio": { + source: "apache", + extensions: ["cpio"] + }, + "application/x-csh": { + source: "apache", + extensions: ["csh"] + }, + "application/x-deb": { + compressible: false + }, + "application/x-debian-package": { + source: "apache", + extensions: ["deb", "udeb"] + }, + "application/x-dgc-compressed": { + source: "apache", + extensions: ["dgc"] + }, + "application/x-director": { + source: "apache", + extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] + }, + "application/x-doom": { + source: "apache", + extensions: ["wad"] + }, + "application/x-dtbncx+xml": { + source: "apache", + compressible: true, + extensions: ["ncx"] + }, + "application/x-dtbook+xml": { + source: "apache", + compressible: true, + extensions: ["dtb"] + }, + "application/x-dtbresource+xml": { + source: "apache", + compressible: true, + extensions: ["res"] + }, + "application/x-dvi": { + source: "apache", + compressible: false, + extensions: ["dvi"] + }, + "application/x-envoy": { + source: "apache", + extensions: ["evy"] + }, + "application/x-eva": { + source: "apache", + extensions: ["eva"] + }, + "application/x-font-bdf": { + source: "apache", + extensions: ["bdf"] + }, + "application/x-font-dos": { + source: "apache" + }, + "application/x-font-framemaker": { + source: "apache" + }, + "application/x-font-ghostscript": { + source: "apache", + extensions: ["gsf"] + }, + "application/x-font-libgrx": { + source: "apache" + }, + "application/x-font-linux-psf": { + source: "apache", + extensions: ["psf"] + }, + "application/x-font-pcf": { + source: "apache", + extensions: ["pcf"] + }, + "application/x-font-snf": { + source: "apache", + extensions: ["snf"] + }, + "application/x-font-speedo": { + source: "apache" + }, + "application/x-font-sunos-news": { + source: "apache" + }, + "application/x-font-type1": { + source: "apache", + extensions: ["pfa", "pfb", "pfm", "afm"] + }, + "application/x-font-vfont": { + source: "apache" + }, + "application/x-freearc": { + source: "apache", + extensions: ["arc"] + }, + "application/x-futuresplash": { + source: "apache", + extensions: ["spl"] + }, + "application/x-gca-compressed": { + source: "apache", + extensions: ["gca"] + }, + "application/x-glulx": { + source: "apache", + extensions: ["ulx"] + }, + "application/x-gnumeric": { + source: "apache", + extensions: ["gnumeric"] + }, + "application/x-gramps-xml": { + source: "apache", + extensions: ["gramps"] + }, + "application/x-gtar": { + source: "apache", + extensions: ["gtar"] + }, + "application/x-gzip": { + source: "apache" + }, + "application/x-hdf": { + source: "apache", + extensions: ["hdf"] + }, + "application/x-httpd-php": { + compressible: true, + extensions: ["php"] + }, + "application/x-install-instructions": { + source: "apache", + extensions: ["install"] + }, + "application/x-ipynb+json": { + compressible: true, + extensions: ["ipynb"] + }, + "application/x-iso9660-image": { + source: "apache", + extensions: ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + extensions: ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + extensions: ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + extensions: ["pages"] + }, + "application/x-java-archive-diff": { + source: "nginx", + extensions: ["jardiff"] + }, + "application/x-java-jnlp-file": { + source: "apache", + compressible: false, + extensions: ["jnlp"] + }, + "application/x-javascript": { + compressible: true + }, + "application/x-keepass2": { + extensions: ["kdbx"] + }, + "application/x-latex": { + source: "apache", + compressible: false, + extensions: ["latex"] + }, + "application/x-lua-bytecode": { + extensions: ["luac"] + }, + "application/x-lzh-compressed": { + source: "apache", + extensions: ["lzh", "lha"] + }, + "application/x-makeself": { + source: "nginx", + extensions: ["run"] + }, + "application/x-mie": { + source: "apache", + extensions: ["mie"] + }, + "application/x-mobipocket-ebook": { + source: "apache", + extensions: ["prc", "mobi"] + }, + "application/x-mpegurl": { + compressible: false + }, + "application/x-ms-application": { + source: "apache", + extensions: ["application"] + }, + "application/x-ms-shortcut": { + source: "apache", + extensions: ["lnk"] + }, + "application/x-ms-wmd": { + source: "apache", + extensions: ["wmd"] + }, + "application/x-ms-wmz": { + source: "apache", + extensions: ["wmz"] + }, + "application/x-ms-xbap": { + source: "apache", + extensions: ["xbap"] + }, + "application/x-msaccess": { + source: "apache", + extensions: ["mdb"] + }, + "application/x-msbinder": { + source: "apache", + extensions: ["obd"] + }, + "application/x-mscardfile": { + source: "apache", + extensions: ["crd"] + }, + "application/x-msclip": { + source: "apache", + extensions: ["clp"] + }, + "application/x-msdos-program": { + extensions: ["exe"] + }, + "application/x-msdownload": { + source: "apache", + extensions: ["exe", "dll", "com", "bat", "msi"] + }, + "application/x-msmediaview": { + source: "apache", + extensions: ["mvb", "m13", "m14"] + }, + "application/x-msmetafile": { + source: "apache", + extensions: ["wmf", "wmz", "emf", "emz"] + }, + "application/x-msmoney": { + source: "apache", + extensions: ["mny"] + }, + "application/x-mspublisher": { + source: "apache", + extensions: ["pub"] + }, + "application/x-msschedule": { + source: "apache", + extensions: ["scd"] + }, + "application/x-msterminal": { + source: "apache", + extensions: ["trm"] + }, + "application/x-mswrite": { + source: "apache", + extensions: ["wri"] + }, + "application/x-netcdf": { + source: "apache", + extensions: ["nc", "cdf"] + }, + "application/x-ns-proxy-autoconfig": { + compressible: true, + extensions: ["pac"] + }, + "application/x-nzb": { + source: "apache", + extensions: ["nzb"] + }, + "application/x-perl": { + source: "nginx", + extensions: ["pl", "pm"] + }, + "application/x-pilot": { + source: "nginx", + extensions: ["prc", "pdb"] + }, + "application/x-pkcs12": { + source: "apache", + compressible: false, + extensions: ["p12", "pfx"] + }, + "application/x-pkcs7-certificates": { + source: "apache", + extensions: ["p7b", "spc"] + }, + "application/x-pkcs7-certreqresp": { + source: "apache", + extensions: ["p7r"] + }, + "application/x-pki-message": { + source: "iana" + }, + "application/x-rar-compressed": { + source: "apache", + compressible: false, + extensions: ["rar"] + }, + "application/x-redhat-package-manager": { + source: "nginx", + extensions: ["rpm"] + }, + "application/x-research-info-systems": { + source: "apache", + extensions: ["ris"] + }, + "application/x-sea": { + source: "nginx", + extensions: ["sea"] + }, + "application/x-sh": { + source: "apache", + compressible: true, + extensions: ["sh"] + }, + "application/x-shar": { + source: "apache", + extensions: ["shar"] + }, + "application/x-shockwave-flash": { + source: "apache", + compressible: false, + extensions: ["swf"] + }, + "application/x-silverlight-app": { + source: "apache", + extensions: ["xap"] + }, + "application/x-sql": { + source: "apache", + extensions: ["sql"] + }, + "application/x-stuffit": { + source: "apache", + compressible: false, + extensions: ["sit"] + }, + "application/x-stuffitx": { + source: "apache", + extensions: ["sitx"] + }, + "application/x-subrip": { + source: "apache", + extensions: ["srt"] + }, + "application/x-sv4cpio": { + source: "apache", + extensions: ["sv4cpio"] + }, + "application/x-sv4crc": { + source: "apache", + extensions: ["sv4crc"] + }, + "application/x-t3vm-image": { + source: "apache", + extensions: ["t3"] + }, + "application/x-tads": { + source: "apache", + extensions: ["gam"] + }, + "application/x-tar": { + source: "apache", + compressible: true, + extensions: ["tar"] + }, + "application/x-tcl": { + source: "apache", + extensions: ["tcl", "tk"] + }, + "application/x-tex": { + source: "apache", + extensions: ["tex"] + }, + "application/x-tex-tfm": { + source: "apache", + extensions: ["tfm"] + }, + "application/x-texinfo": { + source: "apache", + extensions: ["texinfo", "texi"] + }, + "application/x-tgif": { + source: "apache", + extensions: ["obj"] + }, + "application/x-ustar": { + source: "apache", + extensions: ["ustar"] + }, + "application/x-virtualbox-hdd": { + compressible: true, + extensions: ["hdd"] + }, + "application/x-virtualbox-ova": { + compressible: true, + extensions: ["ova"] + }, + "application/x-virtualbox-ovf": { + compressible: true, + extensions: ["ovf"] + }, + "application/x-virtualbox-vbox": { + compressible: true, + extensions: ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + compressible: false, + extensions: ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + compressible: true, + extensions: ["vdi"] + }, + "application/x-virtualbox-vhd": { + compressible: true, + extensions: ["vhd"] + }, + "application/x-virtualbox-vmdk": { + compressible: true, + extensions: ["vmdk"] + }, + "application/x-wais-source": { + source: "apache", + extensions: ["src"] + }, + "application/x-web-app-manifest+json": { + compressible: true, + extensions: ["webapp"] + }, + "application/x-www-form-urlencoded": { + source: "iana", + compressible: true + }, + "application/x-x509-ca-cert": { + source: "iana", + extensions: ["der", "crt", "pem"] + }, + "application/x-x509-ca-ra-cert": { + source: "iana" + }, + "application/x-x509-next-ca-cert": { + source: "iana" + }, + "application/x-xfig": { + source: "apache", + extensions: ["fig"] + }, + "application/x-xliff+xml": { + source: "apache", + compressible: true, + extensions: ["xlf"] + }, + "application/x-xpinstall": { + source: "apache", + compressible: false, + extensions: ["xpi"] + }, + "application/x-xz": { + source: "apache", + extensions: ["xz"] + }, + "application/x-zip-compressed": { + extensions: ["zip"] + }, + "application/x-zmachine": { + source: "apache", + extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] + }, + "application/x400-bp": { + source: "iana" + }, + "application/xacml+xml": { + source: "iana", + compressible: true + }, + "application/xaml+xml": { + source: "apache", + compressible: true, + extensions: ["xaml"] + }, + "application/xcap-att+xml": { + source: "iana", + compressible: true, + extensions: ["xav"] + }, + "application/xcap-caps+xml": { + source: "iana", + compressible: true, + extensions: ["xca"] + }, + "application/xcap-diff+xml": { + source: "iana", + compressible: true, + extensions: ["xdf"] + }, + "application/xcap-el+xml": { + source: "iana", + compressible: true, + extensions: ["xel"] + }, + "application/xcap-error+xml": { + source: "iana", + compressible: true + }, + "application/xcap-ns+xml": { + source: "iana", + compressible: true, + extensions: ["xns"] + }, + "application/xcon-conference-info+xml": { + source: "iana", + compressible: true + }, + "application/xcon-conference-info-diff+xml": { + source: "iana", + compressible: true + }, + "application/xenc+xml": { + source: "iana", + compressible: true, + extensions: ["xenc"] + }, + "application/xfdf": { + source: "iana", + extensions: ["xfdf"] + }, + "application/xhtml+xml": { + source: "iana", + compressible: true, + extensions: ["xhtml", "xht"] + }, + "application/xhtml-voice+xml": { + source: "apache", + compressible: true + }, + "application/xliff+xml": { + source: "iana", + compressible: true, + extensions: ["xlf"] + }, + "application/xml": { + source: "iana", + compressible: true, + extensions: ["xml", "xsl", "xsd", "rng"] + }, + "application/xml-dtd": { + source: "iana", + compressible: true, + extensions: ["dtd"] + }, + "application/xml-external-parsed-entity": { + source: "iana" + }, + "application/xml-patch+xml": { + source: "iana", + compressible: true + }, + "application/xmpp+xml": { + source: "iana", + compressible: true + }, + "application/xop+xml": { + source: "iana", + compressible: true, + extensions: ["xop"] + }, + "application/xproc+xml": { + source: "apache", + compressible: true, + extensions: ["xpl"] + }, + "application/xslt+xml": { + source: "iana", + compressible: true, + extensions: ["xsl", "xslt"] + }, + "application/xspf+xml": { + source: "apache", + compressible: true, + extensions: ["xspf"] + }, + "application/xv+xml": { + source: "iana", + compressible: true, + extensions: ["mxml", "xhvml", "xvml", "xvm"] + }, + "application/yaml": { + source: "iana" + }, + "application/yang": { + source: "iana", + extensions: ["yang"] + }, + "application/yang-data+cbor": { + source: "iana" + }, + "application/yang-data+json": { + source: "iana", + compressible: true + }, + "application/yang-data+xml": { + source: "iana", + compressible: true + }, + "application/yang-patch+json": { + source: "iana", + compressible: true + }, + "application/yang-patch+xml": { + source: "iana", + compressible: true + }, + "application/yang-sid+json": { + source: "iana", + compressible: true + }, + "application/yin+xml": { + source: "iana", + compressible: true, + extensions: ["yin"] + }, + "application/zip": { + source: "iana", + compressible: false, + extensions: ["zip"] + }, + "application/zip+dotlottie": { + extensions: ["lottie"] + }, + "application/zlib": { + source: "iana" + }, + "application/zstd": { + source: "iana" + }, + "audio/1d-interleaved-parityfec": { + source: "iana" + }, + "audio/32kadpcm": { + source: "iana" + }, + "audio/3gpp": { + source: "iana", + compressible: false, + extensions: ["3gpp"] + }, + "audio/3gpp2": { + source: "iana" + }, + "audio/aac": { + source: "iana", + extensions: ["adts", "aac"] + }, + "audio/ac3": { + source: "iana" + }, + "audio/adpcm": { + source: "apache", + extensions: ["adp"] + }, + "audio/amr": { + source: "iana", + extensions: ["amr"] + }, + "audio/amr-wb": { + source: "iana" + }, + "audio/amr-wb+": { + source: "iana" + }, + "audio/aptx": { + source: "iana" + }, + "audio/asc": { + source: "iana" + }, + "audio/atrac-advanced-lossless": { + source: "iana" + }, + "audio/atrac-x": { + source: "iana" + }, + "audio/atrac3": { + source: "iana" + }, + "audio/basic": { + source: "iana", + compressible: false, + extensions: ["au", "snd"] + }, + "audio/bv16": { + source: "iana" + }, + "audio/bv32": { + source: "iana" + }, + "audio/clearmode": { + source: "iana" + }, + "audio/cn": { + source: "iana" + }, + "audio/dat12": { + source: "iana" + }, + "audio/dls": { + source: "iana" + }, + "audio/dsr-es201108": { + source: "iana" + }, + "audio/dsr-es202050": { + source: "iana" + }, + "audio/dsr-es202211": { + source: "iana" + }, + "audio/dsr-es202212": { + source: "iana" + }, + "audio/dv": { + source: "iana" + }, + "audio/dvi4": { + source: "iana" + }, + "audio/eac3": { + source: "iana" + }, + "audio/encaprtp": { + source: "iana" + }, + "audio/evrc": { + source: "iana" + }, + "audio/evrc-qcp": { + source: "iana" + }, + "audio/evrc0": { + source: "iana" + }, + "audio/evrc1": { + source: "iana" + }, + "audio/evrcb": { + source: "iana" + }, + "audio/evrcb0": { + source: "iana" + }, + "audio/evrcb1": { + source: "iana" + }, + "audio/evrcnw": { + source: "iana" + }, + "audio/evrcnw0": { + source: "iana" + }, + "audio/evrcnw1": { + source: "iana" + }, + "audio/evrcwb": { + source: "iana" + }, + "audio/evrcwb0": { + source: "iana" + }, + "audio/evrcwb1": { + source: "iana" + }, + "audio/evs": { + source: "iana" + }, + "audio/flac": { + source: "iana" + }, + "audio/flexfec": { + source: "iana" + }, + "audio/fwdred": { + source: "iana" + }, + "audio/g711-0": { + source: "iana" + }, + "audio/g719": { + source: "iana" + }, + "audio/g722": { + source: "iana" + }, + "audio/g7221": { + source: "iana" + }, + "audio/g723": { + source: "iana" + }, + "audio/g726-16": { + source: "iana" + }, + "audio/g726-24": { + source: "iana" + }, + "audio/g726-32": { + source: "iana" + }, + "audio/g726-40": { + source: "iana" + }, + "audio/g728": { + source: "iana" + }, + "audio/g729": { + source: "iana" + }, + "audio/g7291": { + source: "iana" + }, + "audio/g729d": { + source: "iana" + }, + "audio/g729e": { + source: "iana" + }, + "audio/gsm": { + source: "iana" + }, + "audio/gsm-efr": { + source: "iana" + }, + "audio/gsm-hr-08": { + source: "iana" + }, + "audio/ilbc": { + source: "iana" + }, + "audio/ip-mr_v2.5": { + source: "iana" + }, + "audio/isac": { + source: "apache" + }, + "audio/l16": { + source: "iana" + }, + "audio/l20": { + source: "iana" + }, + "audio/l24": { + source: "iana", + compressible: false + }, + "audio/l8": { + source: "iana" + }, + "audio/lpc": { + source: "iana" + }, + "audio/matroska": { + source: "iana" + }, + "audio/melp": { + source: "iana" + }, + "audio/melp1200": { + source: "iana" + }, + "audio/melp2400": { + source: "iana" + }, + "audio/melp600": { + source: "iana" + }, + "audio/mhas": { + source: "iana" + }, + "audio/midi": { + source: "apache", + extensions: ["mid", "midi", "kar", "rmi"] + }, + "audio/midi-clip": { + source: "iana" + }, + "audio/mobile-xmf": { + source: "iana", + extensions: ["mxmf"] + }, + "audio/mp3": { + compressible: false, + extensions: ["mp3"] + }, + "audio/mp4": { + source: "iana", + compressible: false, + extensions: ["m4a", "mp4a", "m4b"] + }, + "audio/mp4a-latm": { + source: "iana" + }, + "audio/mpa": { + source: "iana" + }, + "audio/mpa-robust": { + source: "iana" + }, + "audio/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] + }, + "audio/mpeg4-generic": { + source: "iana" + }, + "audio/musepack": { + source: "apache" + }, + "audio/ogg": { + source: "iana", + compressible: false, + extensions: ["oga", "ogg", "spx", "opus"] + }, + "audio/opus": { + source: "iana" + }, + "audio/parityfec": { + source: "iana" + }, + "audio/pcma": { + source: "iana" + }, + "audio/pcma-wb": { + source: "iana" + }, + "audio/pcmu": { + source: "iana" + }, + "audio/pcmu-wb": { + source: "iana" + }, + "audio/prs.sid": { + source: "iana" + }, + "audio/qcelp": { + source: "iana" + }, + "audio/raptorfec": { + source: "iana" + }, + "audio/red": { + source: "iana" + }, + "audio/rtp-enc-aescm128": { + source: "iana" + }, + "audio/rtp-midi": { + source: "iana" + }, + "audio/rtploopback": { + source: "iana" + }, + "audio/rtx": { + source: "iana" + }, + "audio/s3m": { + source: "apache", + extensions: ["s3m"] + }, + "audio/scip": { + source: "iana" + }, + "audio/silk": { + source: "apache", + extensions: ["sil"] + }, + "audio/smv": { + source: "iana" + }, + "audio/smv-qcp": { + source: "iana" + }, + "audio/smv0": { + source: "iana" + }, + "audio/sofa": { + source: "iana" + }, + "audio/sp-midi": { + source: "iana" + }, + "audio/speex": { + source: "iana" + }, + "audio/t140c": { + source: "iana" + }, + "audio/t38": { + source: "iana" + }, + "audio/telephone-event": { + source: "iana" + }, + "audio/tetra_acelp": { + source: "iana" + }, + "audio/tetra_acelp_bb": { + source: "iana" + }, + "audio/tone": { + source: "iana" + }, + "audio/tsvcis": { + source: "iana" + }, + "audio/uemclip": { + source: "iana" + }, + "audio/ulpfec": { + source: "iana" + }, + "audio/usac": { + source: "iana" + }, + "audio/vdvi": { + source: "iana" + }, + "audio/vmr-wb": { + source: "iana" + }, + "audio/vnd.3gpp.iufp": { + source: "iana" + }, + "audio/vnd.4sb": { + source: "iana" + }, + "audio/vnd.audiokoz": { + source: "iana" + }, + "audio/vnd.celp": { + source: "iana" + }, + "audio/vnd.cisco.nse": { + source: "iana" + }, + "audio/vnd.cmles.radio-events": { + source: "iana" + }, + "audio/vnd.cns.anp1": { + source: "iana" + }, + "audio/vnd.cns.inf1": { + source: "iana" + }, + "audio/vnd.dece.audio": { + source: "iana", + extensions: ["uva", "uvva"] + }, + "audio/vnd.digital-winds": { + source: "iana", + extensions: ["eol"] + }, + "audio/vnd.dlna.adts": { + source: "iana" + }, + "audio/vnd.dolby.heaac.1": { + source: "iana" + }, + "audio/vnd.dolby.heaac.2": { + source: "iana" + }, + "audio/vnd.dolby.mlp": { + source: "iana" + }, + "audio/vnd.dolby.mps": { + source: "iana" + }, + "audio/vnd.dolby.pl2": { + source: "iana" + }, + "audio/vnd.dolby.pl2x": { + source: "iana" + }, + "audio/vnd.dolby.pl2z": { + source: "iana" + }, + "audio/vnd.dolby.pulse.1": { + source: "iana" + }, + "audio/vnd.dra": { + source: "iana", + extensions: ["dra"] + }, + "audio/vnd.dts": { + source: "iana", + extensions: ["dts"] + }, + "audio/vnd.dts.hd": { + source: "iana", + extensions: ["dtshd"] + }, + "audio/vnd.dts.uhd": { + source: "iana" + }, + "audio/vnd.dvb.file": { + source: "iana" + }, + "audio/vnd.everad.plj": { + source: "iana" + }, + "audio/vnd.hns.audio": { + source: "iana" + }, + "audio/vnd.lucent.voice": { + source: "iana", + extensions: ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + source: "iana", + extensions: ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + source: "iana" + }, + "audio/vnd.nortel.vbk": { + source: "iana" + }, + "audio/vnd.nuera.ecelp4800": { + source: "iana", + extensions: ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + source: "iana", + extensions: ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + source: "iana", + extensions: ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + source: "iana" + }, + "audio/vnd.presonus.multitrack": { + source: "iana" + }, + "audio/vnd.qcelp": { + source: "apache" + }, + "audio/vnd.rhetorex.32kadpcm": { + source: "iana" + }, + "audio/vnd.rip": { + source: "iana", + extensions: ["rip"] + }, + "audio/vnd.rn-realaudio": { + compressible: false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + source: "iana" + }, + "audio/vnd.vmx.cvsd": { + source: "iana" + }, + "audio/vnd.wave": { + compressible: false + }, + "audio/vorbis": { + source: "iana", + compressible: false + }, + "audio/vorbis-config": { + source: "iana" + }, + "audio/wav": { + compressible: false, + extensions: ["wav"] + }, + "audio/wave": { + compressible: false, + extensions: ["wav"] + }, + "audio/webm": { + source: "apache", + compressible: false, + extensions: ["weba"] + }, + "audio/x-aac": { + source: "apache", + compressible: false, + extensions: ["aac"] + }, + "audio/x-aiff": { + source: "apache", + extensions: ["aif", "aiff", "aifc"] + }, + "audio/x-caf": { + source: "apache", + compressible: false, + extensions: ["caf"] + }, + "audio/x-flac": { + source: "apache", + extensions: ["flac"] + }, + "audio/x-m4a": { + source: "nginx", + extensions: ["m4a"] + }, + "audio/x-matroska": { + source: "apache", + extensions: ["mka"] + }, + "audio/x-mpegurl": { + source: "apache", + extensions: ["m3u"] + }, + "audio/x-ms-wax": { + source: "apache", + extensions: ["wax"] + }, + "audio/x-ms-wma": { + source: "apache", + extensions: ["wma"] + }, + "audio/x-pn-realaudio": { + source: "apache", + extensions: ["ram", "ra"] + }, + "audio/x-pn-realaudio-plugin": { + source: "apache", + extensions: ["rmp"] + }, + "audio/x-realaudio": { + source: "nginx", + extensions: ["ra"] + }, + "audio/x-tta": { + source: "apache" + }, + "audio/x-wav": { + source: "apache", + extensions: ["wav"] + }, + "audio/xm": { + source: "apache", + extensions: ["xm"] + }, + "chemical/x-cdx": { + source: "apache", + extensions: ["cdx"] + }, + "chemical/x-cif": { + source: "apache", + extensions: ["cif"] + }, + "chemical/x-cmdf": { + source: "apache", + extensions: ["cmdf"] + }, + "chemical/x-cml": { + source: "apache", + extensions: ["cml"] + }, + "chemical/x-csml": { + source: "apache", + extensions: ["csml"] + }, + "chemical/x-pdb": { + source: "apache" + }, + "chemical/x-xyz": { + source: "apache", + extensions: ["xyz"] + }, + "font/collection": { + source: "iana", + extensions: ["ttc"] + }, + "font/otf": { + source: "iana", + compressible: true, + extensions: ["otf"] + }, + "font/sfnt": { + source: "iana" + }, + "font/ttf": { + source: "iana", + compressible: true, + extensions: ["ttf"] + }, + "font/woff": { + source: "iana", + extensions: ["woff"] + }, + "font/woff2": { + source: "iana", + extensions: ["woff2"] + }, + "image/aces": { + source: "iana", + extensions: ["exr"] + }, + "image/apng": { + source: "iana", + compressible: false, + extensions: ["apng"] + }, + "image/avci": { + source: "iana", + extensions: ["avci"] + }, + "image/avcs": { + source: "iana", + extensions: ["avcs"] + }, + "image/avif": { + source: "iana", + compressible: false, + extensions: ["avif"] + }, + "image/bmp": { + source: "iana", + compressible: true, + extensions: ["bmp", "dib"] + }, + "image/cgm": { + source: "iana", + extensions: ["cgm"] + }, + "image/dicom-rle": { + source: "iana", + extensions: ["drle"] + }, + "image/dpx": { + source: "iana", + extensions: ["dpx"] + }, + "image/emf": { + source: "iana", + extensions: ["emf"] + }, + "image/fits": { + source: "iana", + extensions: ["fits"] + }, + "image/g3fax": { + source: "iana", + extensions: ["g3"] + }, + "image/gif": { + source: "iana", + compressible: false, + extensions: ["gif"] + }, + "image/heic": { + source: "iana", + extensions: ["heic"] + }, + "image/heic-sequence": { + source: "iana", + extensions: ["heics"] + }, + "image/heif": { + source: "iana", + extensions: ["heif"] + }, + "image/heif-sequence": { + source: "iana", + extensions: ["heifs"] + }, + "image/hej2k": { + source: "iana", + extensions: ["hej2"] + }, + "image/ief": { + source: "iana", + extensions: ["ief"] + }, + "image/j2c": { + source: "iana" + }, + "image/jaii": { + source: "iana", + extensions: ["jaii"] + }, + "image/jais": { + source: "iana", + extensions: ["jais"] + }, + "image/jls": { + source: "iana", + extensions: ["jls"] + }, + "image/jp2": { + source: "iana", + compressible: false, + extensions: ["jp2", "jpg2"] + }, + "image/jpeg": { + source: "iana", + compressible: false, + extensions: ["jpg", "jpeg", "jpe"] + }, + "image/jph": { + source: "iana", + extensions: ["jph"] + }, + "image/jphc": { + source: "iana", + extensions: ["jhc"] + }, + "image/jpm": { + source: "iana", + compressible: false, + extensions: ["jpm", "jpgm"] + }, + "image/jpx": { + source: "iana", + compressible: false, + extensions: ["jpx", "jpf"] + }, + "image/jxl": { + source: "iana", + extensions: ["jxl"] + }, + "image/jxr": { + source: "iana", + extensions: ["jxr"] + }, + "image/jxra": { + source: "iana", + extensions: ["jxra"] + }, + "image/jxrs": { + source: "iana", + extensions: ["jxrs"] + }, + "image/jxs": { + source: "iana", + extensions: ["jxs"] + }, + "image/jxsc": { + source: "iana", + extensions: ["jxsc"] + }, + "image/jxsi": { + source: "iana", + extensions: ["jxsi"] + }, + "image/jxss": { + source: "iana", + extensions: ["jxss"] + }, + "image/ktx": { + source: "iana", + extensions: ["ktx"] + }, + "image/ktx2": { + source: "iana", + extensions: ["ktx2"] + }, + "image/naplps": { + source: "iana" + }, + "image/pjpeg": { + compressible: false, + extensions: ["jfif"] + }, + "image/png": { + source: "iana", + compressible: false, + extensions: ["png"] + }, + "image/prs.btif": { + source: "iana", + extensions: ["btif", "btf"] + }, + "image/prs.pti": { + source: "iana", + extensions: ["pti"] + }, + "image/pwg-raster": { + source: "iana" + }, + "image/sgi": { + source: "apache", + extensions: ["sgi"] + }, + "image/svg+xml": { + source: "iana", + compressible: true, + extensions: ["svg", "svgz"] + }, + "image/t38": { + source: "iana", + extensions: ["t38"] + }, + "image/tiff": { + source: "iana", + compressible: false, + extensions: ["tif", "tiff"] + }, + "image/tiff-fx": { + source: "iana", + extensions: ["tfx"] + }, + "image/vnd.adobe.photoshop": { + source: "iana", + compressible: true, + extensions: ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + source: "iana", + extensions: ["azv"] + }, + "image/vnd.clip": { + source: "iana" + }, + "image/vnd.cns.inf2": { + source: "iana" + }, + "image/vnd.dece.graphic": { + source: "iana", + extensions: ["uvi", "uvvi", "uvg", "uvvg"] + }, + "image/vnd.djvu": { + source: "iana", + extensions: ["djvu", "djv"] + }, + "image/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "image/vnd.dwg": { + source: "iana", + extensions: ["dwg"] + }, + "image/vnd.dxf": { + source: "iana", + extensions: ["dxf"] + }, + "image/vnd.fastbidsheet": { + source: "iana", + extensions: ["fbs"] + }, + "image/vnd.fpx": { + source: "iana", + extensions: ["fpx"] + }, + "image/vnd.fst": { + source: "iana", + extensions: ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + source: "iana", + extensions: ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + source: "iana", + extensions: ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + source: "iana" + }, + "image/vnd.microsoft.icon": { + source: "iana", + compressible: true, + extensions: ["ico"] + }, + "image/vnd.mix": { + source: "iana" + }, + "image/vnd.mozilla.apng": { + source: "iana" + }, + "image/vnd.ms-dds": { + compressible: true, + extensions: ["dds"] + }, + "image/vnd.ms-modi": { + source: "iana", + extensions: ["mdi"] + }, + "image/vnd.ms-photo": { + source: "apache", + extensions: ["wdp"] + }, + "image/vnd.net-fpx": { + source: "iana", + extensions: ["npx"] + }, + "image/vnd.pco.b16": { + source: "iana", + extensions: ["b16"] + }, + "image/vnd.radiance": { + source: "iana" + }, + "image/vnd.sealed.png": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + source: "iana" + }, + "image/vnd.svf": { + source: "iana" + }, + "image/vnd.tencent.tap": { + source: "iana", + extensions: ["tap"] + }, + "image/vnd.valve.source.texture": { + source: "iana", + extensions: ["vtf"] + }, + "image/vnd.wap.wbmp": { + source: "iana", + extensions: ["wbmp"] + }, + "image/vnd.xiff": { + source: "iana", + extensions: ["xif"] + }, + "image/vnd.zbrush.pcx": { + source: "iana", + extensions: ["pcx"] + }, + "image/webp": { + source: "iana", + extensions: ["webp"] + }, + "image/wmf": { + source: "iana", + extensions: ["wmf"] + }, + "image/x-3ds": { + source: "apache", + extensions: ["3ds"] + }, + "image/x-adobe-dng": { + extensions: ["dng"] + }, + "image/x-cmu-raster": { + source: "apache", + extensions: ["ras"] + }, + "image/x-cmx": { + source: "apache", + extensions: ["cmx"] + }, + "image/x-emf": { + source: "iana" + }, + "image/x-freehand": { + source: "apache", + extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] + }, + "image/x-icon": { + source: "apache", + compressible: true, + extensions: ["ico"] + }, + "image/x-jng": { + source: "nginx", + extensions: ["jng"] + }, + "image/x-mrsid-image": { + source: "apache", + extensions: ["sid"] + }, + "image/x-ms-bmp": { + source: "nginx", + compressible: true, + extensions: ["bmp"] + }, + "image/x-pcx": { + source: "apache", + extensions: ["pcx"] + }, + "image/x-pict": { + source: "apache", + extensions: ["pic", "pct"] + }, + "image/x-portable-anymap": { + source: "apache", + extensions: ["pnm"] + }, + "image/x-portable-bitmap": { + source: "apache", + extensions: ["pbm"] + }, + "image/x-portable-graymap": { + source: "apache", + extensions: ["pgm"] + }, + "image/x-portable-pixmap": { + source: "apache", + extensions: ["ppm"] + }, + "image/x-rgb": { + source: "apache", + extensions: ["rgb"] + }, + "image/x-tga": { + source: "apache", + extensions: ["tga"] + }, + "image/x-wmf": { + source: "iana" + }, + "image/x-xbitmap": { + source: "apache", + extensions: ["xbm"] + }, + "image/x-xcf": { + compressible: false + }, + "image/x-xpixmap": { + source: "apache", + extensions: ["xpm"] + }, + "image/x-xwindowdump": { + source: "apache", + extensions: ["xwd"] + }, + "message/bhttp": { + source: "iana" + }, + "message/cpim": { + source: "iana" + }, + "message/delivery-status": { + source: "iana" + }, + "message/disposition-notification": { + source: "iana", + extensions: [ + "disposition-notification" + ] + }, + "message/external-body": { + source: "iana" + }, + "message/feedback-report": { + source: "iana" + }, + "message/global": { + source: "iana", + extensions: ["u8msg"] + }, + "message/global-delivery-status": { + source: "iana", + extensions: ["u8dsn"] + }, + "message/global-disposition-notification": { + source: "iana", + extensions: ["u8mdn"] + }, + "message/global-headers": { + source: "iana", + extensions: ["u8hdr"] + }, + "message/http": { + source: "iana", + compressible: false + }, + "message/imdn+xml": { + source: "iana", + compressible: true + }, + "message/mls": { + source: "iana" + }, + "message/news": { + source: "apache" + }, + "message/ohttp-req": { + source: "iana" + }, + "message/ohttp-res": { + source: "iana" + }, + "message/partial": { + source: "iana", + compressible: false + }, + "message/rfc822": { + source: "iana", + compressible: true, + extensions: ["eml", "mime", "mht", "mhtml"] + }, + "message/s-http": { + source: "apache" + }, + "message/sip": { + source: "iana" + }, + "message/sipfrag": { + source: "iana" + }, + "message/tracking-status": { + source: "iana" + }, + "message/vnd.si.simp": { + source: "apache" + }, + "message/vnd.wfa.wsc": { + source: "iana", + extensions: ["wsc"] + }, + "model/3mf": { + source: "iana", + extensions: ["3mf"] + }, + "model/e57": { + source: "iana" + }, + "model/gltf+json": { + source: "iana", + compressible: true, + extensions: ["gltf"] + }, + "model/gltf-binary": { + source: "iana", + compressible: true, + extensions: ["glb"] + }, + "model/iges": { + source: "iana", + compressible: false, + extensions: ["igs", "iges"] + }, + "model/jt": { + source: "iana", + extensions: ["jt"] + }, + "model/mesh": { + source: "iana", + compressible: false, + extensions: ["msh", "mesh", "silo"] + }, + "model/mtl": { + source: "iana", + extensions: ["mtl"] + }, + "model/obj": { + source: "iana", + extensions: ["obj"] + }, + "model/prc": { + source: "iana", + extensions: ["prc"] + }, + "model/step": { + source: "iana", + extensions: ["step", "stp", "stpnc", "p21", "210"] + }, + "model/step+xml": { + source: "iana", + compressible: true, + extensions: ["stpx"] + }, + "model/step+zip": { + source: "iana", + compressible: false, + extensions: ["stpz"] + }, + "model/step-xml+zip": { + source: "iana", + compressible: false, + extensions: ["stpxz"] + }, + "model/stl": { + source: "iana", + extensions: ["stl"] + }, + "model/u3d": { + source: "iana", + extensions: ["u3d"] + }, + "model/vnd.bary": { + source: "iana", + extensions: ["bary"] + }, + "model/vnd.cld": { + source: "iana", + extensions: ["cld"] + }, + "model/vnd.collada+xml": { + source: "iana", + compressible: true, + extensions: ["dae"] + }, + "model/vnd.dwf": { + source: "iana", + extensions: ["dwf"] + }, + "model/vnd.flatland.3dml": { + source: "iana" + }, + "model/vnd.gdl": { + source: "iana", + extensions: ["gdl"] + }, + "model/vnd.gs-gdl": { + source: "apache" + }, + "model/vnd.gs.gdl": { + source: "iana" + }, + "model/vnd.gtw": { + source: "iana", + extensions: ["gtw"] + }, + "model/vnd.moml+xml": { + source: "iana", + compressible: true + }, + "model/vnd.mts": { + source: "iana", + extensions: ["mts"] + }, + "model/vnd.opengex": { + source: "iana", + extensions: ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + source: "iana", + extensions: ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + source: "iana", + extensions: ["x_t"] + }, + "model/vnd.pytha.pyox": { + source: "iana", + extensions: ["pyo", "pyox"] + }, + "model/vnd.rosette.annotated-data-model": { + source: "iana" + }, + "model/vnd.sap.vds": { + source: "iana", + extensions: ["vds"] + }, + "model/vnd.usda": { + source: "iana", + extensions: ["usda"] + }, + "model/vnd.usdz+zip": { + source: "iana", + compressible: false, + extensions: ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + source: "iana", + extensions: ["bsp"] + }, + "model/vnd.vtu": { + source: "iana", + extensions: ["vtu"] + }, + "model/vrml": { + source: "iana", + compressible: false, + extensions: ["wrl", "vrml"] + }, + "model/x3d+binary": { + source: "apache", + compressible: false, + extensions: ["x3db", "x3dbz"] + }, + "model/x3d+fastinfoset": { + source: "iana", + extensions: ["x3db"] + }, + "model/x3d+vrml": { + source: "apache", + compressible: false, + extensions: ["x3dv", "x3dvz"] + }, + "model/x3d+xml": { + source: "iana", + compressible: true, + extensions: ["x3d", "x3dz"] + }, + "model/x3d-vrml": { + source: "iana", + extensions: ["x3dv"] + }, + "multipart/alternative": { + source: "iana", + compressible: false + }, + "multipart/appledouble": { + source: "iana" + }, + "multipart/byteranges": { + source: "iana" + }, + "multipart/digest": { + source: "iana" + }, + "multipart/encrypted": { + source: "iana", + compressible: false + }, + "multipart/form-data": { + source: "iana", + compressible: false + }, + "multipart/header-set": { + source: "iana" + }, + "multipart/mixed": { + source: "iana" + }, + "multipart/multilingual": { + source: "iana" + }, + "multipart/parallel": { + source: "iana" + }, + "multipart/related": { + source: "iana", + compressible: false + }, + "multipart/report": { + source: "iana" + }, + "multipart/signed": { + source: "iana", + compressible: false + }, + "multipart/vnd.bint.med-plus": { + source: "iana" + }, + "multipart/voice-message": { + source: "iana" + }, + "multipart/x-mixed-replace": { + source: "iana" + }, + "text/1d-interleaved-parityfec": { + source: "iana" + }, + "text/cache-manifest": { + source: "iana", + compressible: true, + extensions: ["appcache", "manifest"] + }, + "text/calendar": { + source: "iana", + extensions: ["ics", "ifb"] + }, + "text/calender": { + compressible: true + }, + "text/cmd": { + compressible: true + }, + "text/coffeescript": { + extensions: ["coffee", "litcoffee"] + }, + "text/cql": { + source: "iana" + }, + "text/cql-expression": { + source: "iana" + }, + "text/cql-identifier": { + source: "iana" + }, + "text/css": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["css"] + }, + "text/csv": { + source: "iana", + compressible: true, + extensions: ["csv"] + }, + "text/csv-schema": { + source: "iana" + }, + "text/directory": { + source: "iana" + }, + "text/dns": { + source: "iana" + }, + "text/ecmascript": { + source: "apache" + }, + "text/encaprtp": { + source: "iana" + }, + "text/enriched": { + source: "iana" + }, + "text/fhirpath": { + source: "iana" + }, + "text/flexfec": { + source: "iana" + }, + "text/fwdred": { + source: "iana" + }, + "text/gff3": { + source: "iana" + }, + "text/grammar-ref-list": { + source: "iana" + }, + "text/hl7v2": { + source: "iana" + }, + "text/html": { + source: "iana", + compressible: true, + extensions: ["html", "htm", "shtml"] + }, + "text/jade": { + extensions: ["jade"] + }, + "text/javascript": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["js", "mjs"] + }, + "text/jcr-cnd": { + source: "iana" + }, + "text/jsx": { + compressible: true, + extensions: ["jsx"] + }, + "text/less": { + compressible: true, + extensions: ["less"] + }, + "text/markdown": { + source: "iana", + compressible: true, + extensions: ["md", "markdown"] + }, + "text/mathml": { + source: "nginx", + extensions: ["mml"] + }, + "text/mdx": { + compressible: true, + extensions: ["mdx"] + }, + "text/mizar": { + source: "iana" + }, + "text/n3": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["n3"] + }, + "text/parameters": { + source: "iana", + charset: "UTF-8" + }, + "text/parityfec": { + source: "iana" + }, + "text/plain": { + source: "iana", + compressible: true, + extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] + }, + "text/provenance-notation": { + source: "iana", + charset: "UTF-8" + }, + "text/prs.fallenstein.rst": { + source: "iana" + }, + "text/prs.lines.tag": { + source: "iana", + extensions: ["dsc"] + }, + "text/prs.prop.logic": { + source: "iana" + }, + "text/prs.texi": { + source: "iana" + }, + "text/raptorfec": { + source: "iana" + }, + "text/red": { + source: "iana" + }, + "text/rfc822-headers": { + source: "iana" + }, + "text/richtext": { + source: "iana", + compressible: true, + extensions: ["rtx"] + }, + "text/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "text/rtp-enc-aescm128": { + source: "iana" + }, + "text/rtploopback": { + source: "iana" + }, + "text/rtx": { + source: "iana" + }, + "text/sgml": { + source: "iana", + extensions: ["sgml", "sgm"] + }, + "text/shaclc": { + source: "iana" + }, + "text/shex": { + source: "iana", + extensions: ["shex"] + }, + "text/slim": { + extensions: ["slim", "slm"] + }, + "text/spdx": { + source: "iana", + extensions: ["spdx"] + }, + "text/strings": { + source: "iana" + }, + "text/stylus": { + extensions: ["stylus", "styl"] + }, + "text/t140": { + source: "iana" + }, + "text/tab-separated-values": { + source: "iana", + compressible: true, + extensions: ["tsv"] + }, + "text/troff": { + source: "iana", + extensions: ["t", "tr", "roff", "man", "me", "ms"] + }, + "text/turtle": { + source: "iana", + charset: "UTF-8", + extensions: ["ttl"] + }, + "text/ulpfec": { + source: "iana" + }, + "text/uri-list": { + source: "iana", + compressible: true, + extensions: ["uri", "uris", "urls"] + }, + "text/vcard": { + source: "iana", + compressible: true, + extensions: ["vcard"] + }, + "text/vnd.a": { + source: "iana" + }, + "text/vnd.abc": { + source: "iana" + }, + "text/vnd.ascii-art": { + source: "iana" + }, + "text/vnd.curl": { + source: "iana", + extensions: ["curl"] + }, + "text/vnd.curl.dcurl": { + source: "apache", + extensions: ["dcurl"] + }, + "text/vnd.curl.mcurl": { + source: "apache", + extensions: ["mcurl"] + }, + "text/vnd.curl.scurl": { + source: "apache", + extensions: ["scurl"] + }, + "text/vnd.debian.copyright": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.dmclientscript": { + source: "iana" + }, + "text/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.exchangeable": { + source: "iana" + }, + "text/vnd.familysearch.gedcom": { + source: "iana", + extensions: ["ged"] + }, + "text/vnd.ficlab.flt": { + source: "iana" + }, + "text/vnd.fly": { + source: "iana", + extensions: ["fly"] + }, + "text/vnd.fmi.flexstor": { + source: "iana", + extensions: ["flx"] + }, + "text/vnd.gml": { + source: "iana" + }, + "text/vnd.graphviz": { + source: "iana", + extensions: ["gv"] + }, + "text/vnd.hans": { + source: "iana" + }, + "text/vnd.hgl": { + source: "iana" + }, + "text/vnd.in3d.3dml": { + source: "iana", + extensions: ["3dml"] + }, + "text/vnd.in3d.spot": { + source: "iana", + extensions: ["spot"] + }, + "text/vnd.iptc.newsml": { + source: "iana" + }, + "text/vnd.iptc.nitf": { + source: "iana" + }, + "text/vnd.latex-z": { + source: "iana" + }, + "text/vnd.motorola.reflex": { + source: "iana" + }, + "text/vnd.ms-mediapackage": { + source: "iana" + }, + "text/vnd.net2phone.commcenter.command": { + source: "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + source: "iana" + }, + "text/vnd.senx.warpscript": { + source: "iana" + }, + "text/vnd.si.uricatalogue": { + source: "apache" + }, + "text/vnd.sosi": { + source: "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + source: "iana", + charset: "UTF-8", + extensions: ["jad"] + }, + "text/vnd.trolltech.linguist": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.vcf": { + source: "iana" + }, + "text/vnd.wap.si": { + source: "iana" + }, + "text/vnd.wap.sl": { + source: "iana" + }, + "text/vnd.wap.wml": { + source: "iana", + extensions: ["wml"] + }, + "text/vnd.wap.wmlscript": { + source: "iana", + extensions: ["wmls"] + }, + "text/vnd.zoo.kcl": { + source: "iana" + }, + "text/vtt": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["vtt"] + }, + "text/wgsl": { + source: "iana", + extensions: ["wgsl"] + }, + "text/x-asm": { + source: "apache", + extensions: ["s", "asm"] + }, + "text/x-c": { + source: "apache", + extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] + }, + "text/x-component": { + source: "nginx", + extensions: ["htc"] + }, + "text/x-fortran": { + source: "apache", + extensions: ["f", "for", "f77", "f90"] + }, + "text/x-gwt-rpc": { + compressible: true + }, + "text/x-handlebars-template": { + extensions: ["hbs"] + }, + "text/x-java-source": { + source: "apache", + extensions: ["java"] + }, + "text/x-jquery-tmpl": { + compressible: true + }, + "text/x-lua": { + extensions: ["lua"] + }, + "text/x-markdown": { + compressible: true, + extensions: ["mkd"] + }, + "text/x-nfo": { + source: "apache", + extensions: ["nfo"] + }, + "text/x-opml": { + source: "apache", + extensions: ["opml"] + }, + "text/x-org": { + compressible: true, + extensions: ["org"] + }, + "text/x-pascal": { + source: "apache", + extensions: ["p", "pas"] + }, + "text/x-processing": { + compressible: true, + extensions: ["pde"] + }, + "text/x-sass": { + extensions: ["sass"] + }, + "text/x-scss": { + extensions: ["scss"] + }, + "text/x-setext": { + source: "apache", + extensions: ["etx"] + }, + "text/x-sfv": { + source: "apache", + extensions: ["sfv"] + }, + "text/x-suse-ymp": { + compressible: true, + extensions: ["ymp"] + }, + "text/x-uuencode": { + source: "apache", + extensions: ["uu"] + }, + "text/x-vcalendar": { + source: "apache", + extensions: ["vcs"] + }, + "text/x-vcard": { + source: "apache", + extensions: ["vcf"] + }, + "text/xml": { + source: "iana", + compressible: true, + extensions: ["xml"] + }, + "text/xml-external-parsed-entity": { + source: "iana" + }, + "text/yaml": { + compressible: true, + extensions: ["yaml", "yml"] + }, + "video/1d-interleaved-parityfec": { + source: "iana" + }, + "video/3gpp": { + source: "iana", + extensions: ["3gp", "3gpp"] + }, + "video/3gpp-tt": { + source: "iana" + }, + "video/3gpp2": { + source: "iana", + extensions: ["3g2"] + }, + "video/av1": { + source: "iana" + }, + "video/bmpeg": { + source: "iana" + }, + "video/bt656": { + source: "iana" + }, + "video/celb": { + source: "iana" + }, + "video/dv": { + source: "iana" + }, + "video/encaprtp": { + source: "iana" + }, + "video/evc": { + source: "iana" + }, + "video/ffv1": { + source: "iana" + }, + "video/flexfec": { + source: "iana" + }, + "video/h261": { + source: "iana", + extensions: ["h261"] + }, + "video/h263": { + source: "iana", + extensions: ["h263"] + }, + "video/h263-1998": { + source: "iana" + }, + "video/h263-2000": { + source: "iana" + }, + "video/h264": { + source: "iana", + extensions: ["h264"] + }, + "video/h264-rcdo": { + source: "iana" + }, + "video/h264-svc": { + source: "iana" + }, + "video/h265": { + source: "iana" + }, + "video/h266": { + source: "iana" + }, + "video/iso.segment": { + source: "iana", + extensions: ["m4s"] + }, + "video/jpeg": { + source: "iana", + extensions: ["jpgv"] + }, + "video/jpeg2000": { + source: "iana" + }, + "video/jpm": { + source: "apache", + extensions: ["jpm", "jpgm"] + }, + "video/jxsv": { + source: "iana" + }, + "video/lottie+json": { + source: "iana", + compressible: true + }, + "video/matroska": { + source: "iana" + }, + "video/matroska-3d": { + source: "iana" + }, + "video/mj2": { + source: "iana", + extensions: ["mj2", "mjp2"] + }, + "video/mp1s": { + source: "iana" + }, + "video/mp2p": { + source: "iana" + }, + "video/mp2t": { + source: "iana", + extensions: ["ts", "m2t", "m2ts", "mts"] + }, + "video/mp4": { + source: "iana", + compressible: false, + extensions: ["mp4", "mp4v", "mpg4"] + }, + "video/mp4v-es": { + source: "iana" + }, + "video/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] + }, + "video/mpeg4-generic": { + source: "iana" + }, + "video/mpv": { + source: "iana" + }, + "video/nv": { + source: "iana" + }, + "video/ogg": { + source: "iana", + compressible: false, + extensions: ["ogv"] + }, + "video/parityfec": { + source: "iana" + }, + "video/pointer": { + source: "iana" + }, + "video/quicktime": { + source: "iana", + compressible: false, + extensions: ["qt", "mov"] + }, + "video/raptorfec": { + source: "iana" + }, + "video/raw": { + source: "iana" + }, + "video/rtp-enc-aescm128": { + source: "iana" + }, + "video/rtploopback": { + source: "iana" + }, + "video/rtx": { + source: "iana" + }, + "video/scip": { + source: "iana" + }, + "video/smpte291": { + source: "iana" + }, + "video/smpte292m": { + source: "iana" + }, + "video/ulpfec": { + source: "iana" + }, + "video/vc1": { + source: "iana" + }, + "video/vc2": { + source: "iana" + }, + "video/vnd.cctv": { + source: "iana" + }, + "video/vnd.dece.hd": { + source: "iana", + extensions: ["uvh", "uvvh"] + }, + "video/vnd.dece.mobile": { + source: "iana", + extensions: ["uvm", "uvvm"] + }, + "video/vnd.dece.mp4": { + source: "iana" + }, + "video/vnd.dece.pd": { + source: "iana", + extensions: ["uvp", "uvvp"] + }, + "video/vnd.dece.sd": { + source: "iana", + extensions: ["uvs", "uvvs"] + }, + "video/vnd.dece.video": { + source: "iana", + extensions: ["uvv", "uvvv"] + }, + "video/vnd.directv.mpeg": { + source: "iana" + }, + "video/vnd.directv.mpeg-tts": { + source: "iana" + }, + "video/vnd.dlna.mpeg-tts": { + source: "iana" + }, + "video/vnd.dvb.file": { + source: "iana", + extensions: ["dvb"] + }, + "video/vnd.fvt": { + source: "iana", + extensions: ["fvt"] + }, + "video/vnd.hns.video": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.ttsavc": { + source: "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + source: "iana" + }, + "video/vnd.motorola.video": { + source: "iana" + }, + "video/vnd.motorola.videop": { + source: "iana" + }, + "video/vnd.mpegurl": { + source: "iana", + extensions: ["mxu", "m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + source: "iana", + extensions: ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + source: "iana" + }, + "video/vnd.nokia.mp4vr": { + source: "iana" + }, + "video/vnd.nokia.videovoip": { + source: "iana" + }, + "video/vnd.objectvideo": { + source: "iana" + }, + "video/vnd.planar": { + source: "iana" + }, + "video/vnd.radgamettools.bink": { + source: "iana" + }, + "video/vnd.radgamettools.smacker": { + source: "apache" + }, + "video/vnd.sealed.mpeg1": { + source: "iana" + }, + "video/vnd.sealed.mpeg4": { + source: "iana" + }, + "video/vnd.sealed.swf": { + source: "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + source: "iana" + }, + "video/vnd.uvvu.mp4": { + source: "iana", + extensions: ["uvu", "uvvu"] + }, + "video/vnd.vivo": { + source: "iana", + extensions: ["viv"] + }, + "video/vnd.youtube.yt": { + source: "iana" + }, + "video/vp8": { + source: "iana" + }, + "video/vp9": { + source: "iana" + }, + "video/webm": { + source: "apache", + compressible: false, + extensions: ["webm"] + }, + "video/x-f4v": { + source: "apache", + extensions: ["f4v"] + }, + "video/x-fli": { + source: "apache", + extensions: ["fli"] + }, + "video/x-flv": { + source: "apache", + compressible: false, + extensions: ["flv"] + }, + "video/x-m4v": { + source: "apache", + extensions: ["m4v"] + }, + "video/x-matroska": { + source: "apache", + compressible: false, + extensions: ["mkv", "mk3d", "mks"] + }, + "video/x-mng": { + source: "apache", + extensions: ["mng"] + }, + "video/x-ms-asf": { + source: "apache", + extensions: ["asf", "asx"] + }, + "video/x-ms-vob": { + source: "apache", + extensions: ["vob"] + }, + "video/x-ms-wm": { + source: "apache", + extensions: ["wm"] + }, + "video/x-ms-wmv": { + source: "apache", + compressible: false, + extensions: ["wmv"] + }, + "video/x-ms-wmx": { + source: "apache", + extensions: ["wmx"] + }, + "video/x-ms-wvx": { + source: "apache", + extensions: ["wvx"] + }, + "video/x-msvideo": { + source: "apache", + extensions: ["avi"] + }, + "video/x-sgi-movie": { + source: "apache", + extensions: ["movie"] + }, + "video/x-smv": { + source: "apache", + extensions: ["smv"] + }, + "x-conference/x-cooltalk": { + source: "apache", + extensions: ["ice"] + }, + "x-shader/x-fragment": { + compressible: true + }, + "x-shader/x-vertex": { + compressible: true + } + }; + } +}); + +// ../../node_modules/.pnpm/mime-db@1.54.0/node_modules/mime-db/index.js +var require_mime_db = __commonJS({ + "../../node_modules/.pnpm/mime-db@1.54.0/node_modules/mime-db/index.js"(exports, module) { + module.exports = require_db(); + } +}); + +// ../../node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/mimeScore.js +var require_mimeScore = __commonJS({ + "../../node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/mimeScore.js"(exports, module) { + var FACET_SCORES = { + "prs.": 100, + "x-": 200, + "x.": 300, + "vnd.": 400, + default: 900 + }; + var SOURCE_SCORES = { + nginx: 10, + apache: 20, + iana: 40, + default: 30 + // definitions added by `jshttp/mime-db` project? + }; + var TYPE_SCORES = { + // prefer application/xml over text/xml + // prefer application/rtf over text/rtf + application: 1, + // prefer font/woff over application/font-woff + font: 2, + // prefer video/mp4 over audio/mp4 over application/mp4 + // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2 + audio: 2, + video: 3, + default: 0 + }; + module.exports = /* @__PURE__ */ __name(function mimeScore(mimeType, source = "default") { + if (mimeType === "application/octet-stream") { + return 0; + } + const [type, subtype] = mimeType.split("/"); + const facet = subtype.replace(/(\.|x-).*/, "$1"); + const facetScore = FACET_SCORES[facet] || FACET_SCORES.default; + const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default; + const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default; + const lengthScore = 1 - mimeType.length / 100; + return facetScore + sourceScore + typeScore + lengthScore; + }, "mimeScore"); + } +}); + +// ../../node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/index.js +var require_mime_types = __commonJS({ + "../../node_modules/.pnpm/mime-types@3.0.2/node_modules/mime-types/index.js"(exports) { + "use strict"; + var db = require_mime_db(); + var extname = __require("path").extname; + var mimeScore = require_mimeScore(); + var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; + var TEXT_TYPE_REGEXP = /^text\//i; + exports.charset = charset; + exports.charsets = { lookup: charset }; + exports.contentType = contentType; + exports.extension = extension; + exports.extensions = /* @__PURE__ */ Object.create(null); + exports.lookup = lookup; + exports.types = /* @__PURE__ */ Object.create(null); + exports._extensionConflicts = []; + populateMaps(exports.extensions, exports.types); + function charset(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var mime = match && db[match[1].toLowerCase()]; + if (mime && mime.charset) { + return mime.charset; + } + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return "UTF-8"; + } + return false; + } + __name(charset, "charset"); + function contentType(str) { + if (!str || typeof str !== "string") { + return false; + } + var mime = str.indexOf("/") === -1 ? exports.lookup(str) : str; + if (!mime) { + return false; + } + if (mime.indexOf("charset") === -1) { + var charset2 = exports.charset(mime); + if (charset2) mime += "; charset=" + charset2.toLowerCase(); + } + return mime; + } + __name(contentType, "contentType"); + function extension(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var exts = match && exports.extensions[match[1].toLowerCase()]; + if (!exts || !exts.length) { + return false; + } + return exts[0]; + } + __name(extension, "extension"); + function lookup(path) { + if (!path || typeof path !== "string") { + return false; + } + var extension2 = extname("x." + path).toLowerCase().slice(1); + if (!extension2) { + return false; + } + return exports.types[extension2] || false; + } + __name(lookup, "lookup"); + function populateMaps(extensions, types) { + Object.keys(db).forEach(/* @__PURE__ */ __name(function forEachMimeType(type) { + var mime = db[type]; + var exts = mime.extensions; + if (!exts || !exts.length) { + return; + } + extensions[type] = exts; + for (var i = 0; i < exts.length; i++) { + var extension2 = exts[i]; + types[extension2] = _preferredType(extension2, types[extension2], type); + const legacyType = _preferredTypeLegacy( + extension2, + types[extension2], + type + ); + if (legacyType !== types[extension2]) { + exports._extensionConflicts.push([extension2, legacyType, types[extension2]]); + } + } + }, "forEachMimeType")); + } + __name(populateMaps, "populateMaps"); + function _preferredType(ext, type0, type1) { + var score0 = type0 ? mimeScore(type0, db[type0].source) : 0; + var score1 = type1 ? mimeScore(type1, db[type1].source) : 0; + return score0 > score1 ? type0 : type1; + } + __name(_preferredType, "_preferredType"); + function _preferredTypeLegacy(ext, type0, type1) { + var SOURCE_RANK = ["nginx", "apache", void 0, "iana"]; + var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0; + var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0; + if (exports.types[extension] !== "application/octet-stream" && (score0 > score1 || score0 === score1 && exports.types[extension]?.slice(0, 12) === "application/")) { + return type0; + } + return score0 > score1 ? type0 : type1; + } + __name(_preferredTypeLegacy, "_preferredTypeLegacy"); + } +}); + +// ../../node_modules/.pnpm/media-typer@1.1.1/node_modules/media-typer/index.js +var require_media_typer = __commonJS({ + "../../node_modules/.pnpm/media-typer@1.1.1/node_modules/media-typer/index.js"(exports) { + "use strict"; + var SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; + var TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; + var TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + exports.format = format; + exports.parse = parse; + exports.test = test; + function format(obj) { + if (!obj || typeof obj !== "object") { + throw new TypeError("argument obj is required"); + } + var subtype = obj.subtype; + var suffix = obj.suffix; + var type = obj.type; + if (!type || !TYPE_NAME_REGEXP.test(type)) { + throw new TypeError("invalid type"); + } + if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) { + throw new TypeError("invalid subtype"); + } + var string = type + "/" + subtype; + if (suffix) { + if (!TYPE_NAME_REGEXP.test(suffix)) { + throw new TypeError("invalid suffix"); + } + string += "+" + suffix; + } + return string; + } + __name(format, "format"); + function test(string) { + if (typeof string !== "string") { + throw new TypeError("argument string is required to be a string"); + } + return TYPE_REGEXP.test(string.toLowerCase()); + } + __name(test, "test"); + function parse(string) { + if (typeof string !== "string") { + throw new TypeError("argument string is required to be a string"); + } + var match = TYPE_REGEXP.exec(string.toLowerCase()); + if (!match) { + throw new TypeError("invalid media type"); + } + var type = match[1]; + var subtype = match[2]; + var suffix; + var index = subtype.lastIndexOf("+"); + if (index !== -1) { + suffix = subtype.substr(index + 1); + subtype = subtype.substr(0, index); + } + return new MediaType(type, subtype, suffix); + } + __name(parse, "parse"); + function MediaType(type, subtype, suffix) { + this.type = type; + this.subtype = subtype; + this.suffix = suffix; + } + __name(MediaType, "MediaType"); + } +}); + +// ../../node_modules/.pnpm/type-is@2.1.0/node_modules/type-is/index.js +var require_type_is = __commonJS({ + "../../node_modules/.pnpm/type-is@2.1.0/node_modules/type-is/index.js"(exports, module) { + "use strict"; + var contentType = require_dist(); + var mime = require_mime_types(); + var typer = require_media_typer(); + module.exports = typeofrequest; + module.exports.is = typeis; + module.exports.hasBody = hasbody; + module.exports.normalize = normalize; + module.exports.match = mimeMatch; + function typeis(value, types_) { + if (value && typeof value === "object") { + value = value.headers["content-type"]; + } + var i; + var types = types_; + var val = normalizeType(value); + if (!val) { + return false; + } + if (types && !Array.isArray(types)) { + types = new Array(arguments.length - 1); + for (i = 0; i < types.length; i++) { + types[i] = arguments[i + 1]; + } + } + if (!types || !types.length) { + return val; + } + var type; + for (i = 0; i < types.length; i++) { + if (mimeMatch(normalize(type = types[i]), val)) { + return type[0] === "+" || type.indexOf("*") !== -1 ? val : type; + } + } + return false; + } + __name(typeis, "typeis"); + function hasbody(req) { + return req.headers["transfer-encoding"] !== void 0 || !isNaN(req.headers["content-length"]); + } + __name(hasbody, "hasbody"); + function typeofrequest(req, types_) { + if (!hasbody(req)) return null; + var types = arguments.length > 2 ? Array.prototype.slice.call(arguments, 1) : types_; + var value = req.headers["content-type"]; + return typeis(value, types); + } + __name(typeofrequest, "typeofrequest"); + function normalize(type) { + if (typeof type !== "string") { + return false; + } + switch (type) { + case "urlencoded": + return "application/x-www-form-urlencoded"; + case "multipart": + return "multipart/*"; + } + if (type[0] === "+") { + return "*/*" + type; + } + return type.indexOf("/") === -1 ? mime.lookup(type) : type; + } + __name(normalize, "normalize"); + function mimeMatch(expected, actual) { + if (expected === false) { + return false; + } + var actualParts = actual.split("/"); + var expectedParts = expected.split("/"); + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false; + } + if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) { + return false; + } + if (expectedParts[1].slice(0, 2) === "*+") { + return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length); + } + if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) { + return false; + } + return true; + } + __name(mimeMatch, "mimeMatch"); + function normalizeType(value) { + if (!value) return null; + var type = contentType.parse(value, { parameters: false }).type; + return typer.test(type) ? type : null; + } + __name(normalizeType, "normalizeType"); + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/utils.js +var require_utils = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/utils.js"(exports, module) { + "use strict"; + var bytes = require_bytes(); + var contentType = require_dist(); + var typeis = require_type_is(); + module.exports = { + getCharset, + normalizeOptions, + passthrough + }; + function getCharset(req) { + const header = req.headers["content-type"]; + if (!header) return void 0; + return contentType.parse(header).parameters.charset?.toLowerCase(); + } + __name(getCharset, "getCharset"); + function typeChecker(type) { + return /* @__PURE__ */ __name(function checkType(req) { + return Boolean(typeis(req, type)); + }, "checkType"); + } + __name(typeChecker, "typeChecker"); + function normalizeOptions(options, defaultType) { + if (!defaultType) { + throw new TypeError("defaultType must be provided"); + } + const inflate = options?.inflate !== false; + const limit = typeof options?.limit === "undefined" || options?.limit === null ? 102400 : bytes.parse(options.limit); + const type = options?.type || defaultType; + const verify = options?.verify || false; + const defaultCharset = options?.defaultCharset || "utf-8"; + if (limit === null) { + throw new TypeError(`option limit "${String(options.limit)}" is invalid`); + } + if (verify !== false && typeof verify !== "function") { + throw new TypeError("option verify must be function"); + } + const shouldParse = typeof type !== "function" ? typeChecker(type) : type; + return { + inflate, + limit, + verify, + defaultCharset, + shouldParse + }; + } + __name(normalizeOptions, "normalizeOptions"); + function passthrough(value) { + return value; + } + __name(passthrough, "passthrough"); + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/read.js +var require_read = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/read.js"(exports, module) { + "use strict"; + var createError = require_http_errors(); + var getBody = require_raw_body(); + var iconv = require_lib3(); + var onFinished = require_on_finished(); + var zlib = __require("node:zlib"); + var hasBody = require_type_is().hasBody; + var { getCharset } = require_utils(); + module.exports = read; + function read(req, res, next, parse, debug, options) { + if (onFinished.isFinished(req)) { + debug("body already parsed"); + next(); + return; + } + if (!("body" in req)) { + req.body = void 0; + } + if (!hasBody(req)) { + debug("skip empty body"); + next(); + return; + } + debug("content-type %j", req.headers["content-type"]); + if (!options.shouldParse(req)) { + debug("skip parsing"); + next(); + return; + } + let encoding = null; + if (options?.skipCharset !== true) { + encoding = getCharset(req) || options.defaultCharset; + if (!!options?.isValidCharset && !options.isValidCharset(encoding)) { + debug("invalid charset"); + next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding, + type: "charset.unsupported" + })); + return; + } + } + let length; + const opts = options; + let stream; + const verify = opts.verify; + try { + stream = contentstream(req, debug, opts.inflate); + length = stream.length; + stream.length = void 0; + } catch (err) { + return next(err); + } + opts.length = length; + opts.encoding = verify ? null : encoding; + if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { + return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: "charset.unsupported" + })); + } + debug("read body"); + getBody(stream, opts, function(error, body) { + if (error) { + let _error; + if (error.type === "encoding.unsupported") { + _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: "charset.unsupported" + }); + } else { + _error = createError(400, error); + } + if (stream !== req) { + req.unpipe(); + stream.destroy(); + } + dump(req, /* @__PURE__ */ __name(function onfinished() { + next(createError(400, _error)); + }, "onfinished")); + return; + } + if (verify) { + try { + debug("verify body"); + verify(req, res, body, encoding); + } catch (err) { + next(createError(403, err, { + body, + type: err.type || "entity.verify.failed" + })); + return; + } + } + let str = body; + try { + debug("parse body"); + str = typeof body !== "string" && encoding !== null ? iconv.decode(body, encoding) : body; + req.body = parse(str, encoding); + } catch (err) { + next(createError(400, err, { + body: str, + type: err.type || "entity.parse.failed" + })); + return; + } + next(); + }); + } + __name(read, "read"); + function contentstream(req, debug, inflate) { + const encoding = (req.headers["content-encoding"] || "identity").toLowerCase(); + const length = req.headers["content-length"]; + debug('content-encoding "%s"', encoding); + if (inflate === false && encoding !== "identity") { + throw createError(415, "content encoding unsupported", { + encoding, + type: "encoding.unsupported" + }); + } + if (encoding === "identity") { + req.length = length; + return req; + } + const stream = createDecompressionStream(encoding, debug); + req.pipe(stream); + return stream; + } + __name(contentstream, "contentstream"); + function createDecompressionStream(encoding, debug) { + switch (encoding) { + case "deflate": + debug("inflate body"); + return zlib.createInflate(); + case "gzip": + debug("gunzip body"); + return zlib.createGunzip(); + case "br": + debug("brotli decompress body"); + return zlib.createBrotliDecompress(); + default: + throw createError(415, 'unsupported content encoding "' + encoding + '"', { + encoding, + type: "encoding.unsupported" + }); + } + } + __name(createDecompressionStream, "createDecompressionStream"); + function dump(req, callback) { + if (onFinished.isFinished(req)) { + callback(null); + } else { + onFinished(req, callback); + req.resume(); + } + } + __name(dump, "dump"); + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/json.js +var require_json = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/json.js"(exports, module) { + "use strict"; + var debug = require_src()("body-parser:json"); + var read = require_read(); + var { normalizeOptions } = require_utils(); + module.exports = json; + var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/; + var JSON_SYNTAX_CHAR = "#"; + var JSON_SYNTAX_REGEXP = /#+/g; + function json(options) { + const normalizedOptions = normalizeOptions(options, "application/json"); + const parse = createJsonParser(options); + const readOptions = { + ...normalizedOptions, + // assert charset per RFC 7159 sec 8.1 + isValidCharset: /* @__PURE__ */ __name((charset) => charset.slice(0, 4) === "utf-", "isValidCharset") + }; + return /* @__PURE__ */ __name(function jsonParser(req, res, next) { + read(req, res, next, parse, debug, readOptions); + }, "jsonParser"); + } + __name(json, "json"); + function createJsonParser(options) { + const reviver = options?.reviver; + const strict = options?.strict !== false; + if (strict) { + return /* @__PURE__ */ __name(function parse(body) { + if (body.length === 0) { + return {}; + } + const first = firstchar(body); + if (first !== "{" && first !== "[") { + debug("strict violation"); + throw createStrictSyntaxError(body, first); + } + try { + debug("parse json"); + return JSON.parse(body, reviver); + } catch (e) { + throw normalizeJsonSyntaxError(e, { + message: e.message, + stack: e.stack + }); + } + }, "parse"); + } + return /* @__PURE__ */ __name(function parse(body) { + if (body.length === 0) { + return {}; + } + try { + debug("parse json"); + return JSON.parse(body, reviver); + } catch (e) { + throw normalizeJsonSyntaxError(e, { + message: e.message, + stack: e.stack + }); + } + }, "parse"); + } + __name(createJsonParser, "createJsonParser"); + function createStrictSyntaxError(str, char) { + const index = str.indexOf(char); + let partial = ""; + if (index !== -1) { + partial = str.substring(0, index) + JSON_SYNTAX_CHAR.repeat(str.length - index); + } + try { + JSON.parse(partial); + throw new SyntaxError("strict violation"); + } catch (e) { + return normalizeJsonSyntaxError(e, { + message: e.message.replace(JSON_SYNTAX_REGEXP, function(placeholder) { + return str.substring(index, index + placeholder.length); + }), + stack: e.stack + }); + } + } + __name(createStrictSyntaxError, "createStrictSyntaxError"); + function firstchar(str) { + const match = FIRST_CHAR_REGEXP.exec(str); + return match ? match[1] : void 0; + } + __name(firstchar, "firstchar"); + function normalizeJsonSyntaxError(error, obj) { + const keys = Object.getOwnPropertyNames(error); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== "stack" && key !== "message") { + delete error[key]; + } + } + error.stack = obj.stack.replace(error.message, obj.message); + error.message = obj.message; + return error; + } + __name(normalizeJsonSyntaxError, "normalizeJsonSyntaxError"); + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/raw.js +var require_raw = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/raw.js"(exports, module) { + "use strict"; + var debug = require_src()("body-parser:raw"); + var read = require_read(); + var { normalizeOptions, passthrough } = require_utils(); + module.exports = raw; + function raw(options) { + const normalizedOptions = normalizeOptions(options, "application/octet-stream"); + const readOptions = { + ...normalizedOptions, + // Skip charset validation and parse the body as is + skipCharset: true + }; + return /* @__PURE__ */ __name(function rawParser(req, res, next) { + read(req, res, next, passthrough, debug, readOptions); + }, "rawParser"); + } + __name(raw, "raw"); + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/text.js +var require_text = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/text.js"(exports, module) { + "use strict"; + var debug = require_src()("body-parser:text"); + var read = require_read(); + var { normalizeOptions, passthrough } = require_utils(); + module.exports = text; + function text(options) { + const normalizedOptions = normalizeOptions(options, "text/plain"); + return /* @__PURE__ */ __name(function textParser(req, res, next) { + read(req, res, next, passthrough, debug, normalizedOptions); + }, "textParser"); + } + __name(text, "text"); + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js +var require_type = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js"(exports, module) { + "use strict"; + module.exports = TypeError; + } +}); + +// ../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/util.inspect.js +var require_util_inspect = __commonJS({ + "../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/util.inspect.js"(exports, module) { + module.exports = __require("util").inspect; + } +}); + +// ../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/index.js +var require_object_inspect = __commonJS({ + "../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/index.js"(exports, module) { + var hasMap = typeof Map === "function" && Map.prototype; + var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; + var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; + var mapForEach = hasMap && Map.prototype.forEach; + var hasSet = typeof Set === "function" && Set.prototype; + var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; + var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; + var setForEach = hasSet && Set.prototype.forEach; + var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; + var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; + var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; + var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; + var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; + var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; + var booleanValueOf = Boolean.prototype.valueOf; + var objectToString = Object.prototype.toString; + var functionToString = Function.prototype.toString; + var $match = String.prototype.match; + var $slice = String.prototype.slice; + var $replace = String.prototype.replace; + var $toUpperCase = String.prototype.toUpperCase; + var $toLowerCase = String.prototype.toLowerCase; + var $test = RegExp.prototype.test; + var $concat = Array.prototype.concat; + var $join = Array.prototype.join; + var $arrSlice = Array.prototype.slice; + var $floor = Math.floor; + var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; + var gOPS = Object.getOwnPropertySymbols; + var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; + var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; + var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; + var isEnumerable = Object.prototype.propertyIsEnumerable; + var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { + return O.__proto__; + } : null); + function addNumericSeparator(num, str) { + if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str)) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === "number") { + var int = num < 0 ? -$floor(-num) : $floor(num); + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); + } + } + return $replace.call(str, sepRegex, "$&_"); + } + __name(addNumericSeparator, "addNumericSeparator"); + var utilInspect = require_util_inspect(); + var inspectCustom = utilInspect.custom; + var inspectSymbol = isSymbol2(inspectCustom) ? inspectCustom : null; + var quotes = { + __proto__: null, + "double": '"', + single: "'" + }; + var quoteREs = { + __proto__: null, + "double": /(["\\])/g, + single: /(['\\])/g + }; + module.exports = /* @__PURE__ */ __name(function inspect_(obj, options, depth, seen) { + var opts = options || {}; + if (has(opts, "quoteStyle") && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, "customInspect") ? opts.customInspect : true; + if (typeof customInspect !== "boolean" && customInspect !== "symbol") { + throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); + } + if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + if (typeof obj === "undefined") { + return "undefined"; + } + if (obj === null) { + return "null"; + } + if (typeof obj === "boolean") { + return obj ? "true" : "false"; + } + if (typeof obj === "string") { + return inspectString(obj, opts); + } + if (typeof obj === "number") { + if (obj === 0) { + return Infinity / obj > 0 ? "0" : "-0"; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === "bigint") { + var bigIntStr = String(obj) + "n"; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; + if (typeof depth === "undefined") { + depth = 0; + } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { + return isArray(obj) ? "[Array]" : "[Object]"; + } + var indent = getIndent(opts, depth); + if (typeof seen === "undefined") { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return "[Circular]"; + } + function inspect(value, from2, noIndent) { + if (from2) { + seen = $arrSlice.call(seen); + seen.push(from2); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, "quoteStyle")) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + __name(inspect, "inspect"); + if (typeof obj === "function" && !isRegExp(obj)) { + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); + } + if (isSymbol2(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); + return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = "<" + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); + } + s += ">"; + if (obj.childNodes && obj.childNodes.length) { + s += "..."; + } + s += "</" + $toLowerCase.call(String(obj.nodeName)) + ">"; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { + return "[]"; + } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return "[" + indentedJoin(xs, indent) + "]"; + } + return "[ " + $join.call(xs, ", ") + " ]"; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { + return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }"; + } + if (parts.length === 0) { + return "[" + String(obj) + "]"; + } + return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; + } + if (typeof obj === "object" && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== "symbol" && typeof obj.inspect === "function") { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function(value, key) { + mapParts.push(inspect(key, obj, true) + " => " + inspect(value, obj)); + }); + } + return collectionOf("Map", mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function(value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf("Set", setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf("WeakMap"); + } + if (isWeakSet(obj)) { + return weakCollectionOf("WeakSet"); + } + if (isWeakRef(obj)) { + return weakCollectionOf("WeakRef"); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString2(obj)) { + return markBoxed(inspect(String(obj))); + } + if (typeof window !== "undefined" && obj === window) { + return "{ [object Window] }"; + } + if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) { + return "{ [object globalThis] }"; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject2 = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? "" : "null prototype"; + var stringTag = !isPlainObject2 && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; + var constructorTag = isPlainObject2 || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; + var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); + if (ys.length === 0) { + return tag + "{}"; + } + if (indent) { + return tag + "{" + indentedJoin(ys, indent) + "}"; + } + return tag + "{ " + $join.call(ys, ", ") + " }"; + } + return String(obj); + }, "inspect_"); + function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; + } + __name(wrapQuotes, "wrapQuotes"); + function quote(s) { + return $replace.call(String(s), /"/g, """); + } + __name(quote, "quote"); + function canTrustToString(obj) { + return !toStringTag || !(typeof obj === "object" && (toStringTag in obj || typeof obj[toStringTag] !== "undefined")); + } + __name(canTrustToString, "canTrustToString"); + function isArray(obj) { + return toStr(obj) === "[object Array]" && canTrustToString(obj); + } + __name(isArray, "isArray"); + function isDate(obj) { + return toStr(obj) === "[object Date]" && canTrustToString(obj); + } + __name(isDate, "isDate"); + function isRegExp(obj) { + return toStr(obj) === "[object RegExp]" && canTrustToString(obj); + } + __name(isRegExp, "isRegExp"); + function isError(obj) { + return toStr(obj) === "[object Error]" && canTrustToString(obj); + } + __name(isError, "isError"); + function isString2(obj) { + return toStr(obj) === "[object String]" && canTrustToString(obj); + } + __name(isString2, "isString"); + function isNumber(obj) { + return toStr(obj) === "[object Number]" && canTrustToString(obj); + } + __name(isNumber, "isNumber"); + function isBoolean(obj) { + return toStr(obj) === "[object Boolean]" && canTrustToString(obj); + } + __name(isBoolean, "isBoolean"); + function isSymbol2(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === "object" && obj instanceof Symbol; + } + if (typeof obj === "symbol") { + return true; + } + if (!obj || typeof obj !== "object" || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) { + } + return false; + } + __name(isSymbol2, "isSymbol"); + function isBigInt(obj) { + if (!obj || typeof obj !== "object" || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) { + } + return false; + } + __name(isBigInt, "isBigInt"); + var hasOwn = Object.prototype.hasOwnProperty || function(key) { + return key in this; + }; + function has(obj, key) { + return hasOwn.call(obj, key); + } + __name(has, "has"); + function toStr(obj) { + return objectToString.call(obj); + } + __name(toStr, "toStr"); + function nameOf(f) { + if (f.name) { + return f.name; + } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { + return m[1]; + } + return null; + } + __name(nameOf, "nameOf"); + function indexOf(xs, x) { + if (xs.indexOf) { + return xs.indexOf(x); + } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { + return i; + } + } + return -1; + } + __name(indexOf, "indexOf"); + function isMap(x) { + if (!mapSize || !x || typeof x !== "object") { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; + } catch (e) { + } + return false; + } + __name(isMap, "isMap"); + function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== "object") { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; + } catch (e) { + } + return false; + } + __name(isWeakMap, "isWeakMap"); + function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== "object") { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) { + } + return false; + } + __name(isWeakRef, "isWeakRef"); + function isSet(x) { + if (!setSize || !x || typeof x !== "object") { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; + } catch (e) { + } + return false; + } + __name(isSet, "isSet"); + function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== "object") { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; + } catch (e) { + } + return false; + } + __name(isWeakSet, "isWeakSet"); + function isElement(x) { + if (!x || typeof x !== "object") { + return false; + } + if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; + } + __name(isElement, "isElement"); + function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || "single"]; + quoteRE.lastIndex = 0; + var s = $replace.call($replace.call(str, quoteRE, "\\$1"), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, "single", opts); + } + __name(inspectString, "inspectString"); + function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: "b", + 9: "t", + 10: "n", + 12: "f", + 13: "r" + }[n]; + if (x) { + return "\\" + x; + } + return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); + } + __name(lowbyte, "lowbyte"); + function markBoxed(str) { + return "Object(" + str + ")"; + } + __name(markBoxed, "markBoxed"); + function weakCollectionOf(type) { + return type + " { ? }"; + } + __name(weakCollectionOf, "weakCollectionOf"); + function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ", "); + return type + " (" + size + ") {" + joinedEntries + "}"; + } + __name(collectionOf, "collectionOf"); + function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], "\n") >= 0) { + return false; + } + } + return true; + } + __name(singleLineValues, "singleLineValues"); + function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === " ") { + baseIndent = " "; + } else if (typeof opts.indent === "number" && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), " "); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; + } + __name(getIndent, "getIndent"); + function indentedJoin(xs, indent) { + if (xs.length === 0) { + return ""; + } + var lineJoiner = "\n" + indent.prev + indent.base; + return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent.prev; + } + __name(indentedJoin, "indentedJoin"); + function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ""; + } + } + var syms = typeof gOPS === "function" ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap["$" + syms[k]] = syms[k]; + } + } + for (var key in obj) { + if (!has(obj, key)) { + continue; + } + if (isArr && String(Number(key)) === key && key < obj.length) { + continue; + } + if (hasShammedSymbols && symMap["$" + key] instanceof Symbol) { + continue; + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ": " + inspect(obj[key], obj)); + } else { + xs.push(key + ": " + inspect(obj[key], obj)); + } + } + if (typeof gOPS === "function") { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj)); + } + } + } + return xs; + } + __name(arrObjKeys, "arrObjKeys"); + } +}); + +// ../../node_modules/.pnpm/side-channel-list@1.0.1/node_modules/side-channel-list/index.js +var require_side_channel_list = __commonJS({ + "../../node_modules/.pnpm/side-channel-list@1.0.1/node_modules/side-channel-list/index.js"(exports, module) { + "use strict"; + var inspect = require_object_inspect(); + var $TypeError = require_type(); + var listGetNode = /* @__PURE__ */ __name(function(list, key, isDelete) { + var prev = list; + var curr; + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + curr.next = /** @type {NonNullable<typeof list.next>} */ + list.next; + list.next = curr; + } + return curr; + } + } + }, "listGetNode"); + var listGet = /* @__PURE__ */ __name(function(objects, key) { + if (!objects) { + return void 0; + } + var node = listGetNode(objects, key); + return node && node.value; + }, "listGet"); + var listSet = /* @__PURE__ */ __name(function(objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + objects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ + { + // eslint-disable-line no-param-reassign, no-extra-parens + key, + next: objects.next, + value + }; + } + }, "listSet"); + var listHas = /* @__PURE__ */ __name(function(objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); + }, "listHas"); + var listDelete = /* @__PURE__ */ __name(function(objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } + }, "listDelete"); + module.exports = /* @__PURE__ */ __name(function getSideChannelList() { + var $o; + var channel = { + assert: /* @__PURE__ */ __name(function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, "assert"), + "delete": /* @__PURE__ */ __name(function(key) { + var deletedNode = listDelete($o, key); + if (deletedNode && $o && !$o.next) { + $o = void 0; + } + return !!deletedNode; + }, "delete"), + get: /* @__PURE__ */ __name(function(key) { + return listGet($o, key); + }, "get"), + has: /* @__PURE__ */ __name(function(key) { + return listHas($o, key); + }, "has"), + set: /* @__PURE__ */ __name(function(key, value) { + if (!$o) { + $o = { + next: void 0 + }; + } + listSet( + /** @type {NonNullable<typeof $o>} */ + $o, + key, + value + ); + }, "set") + }; + return channel; + }, "getSideChannelList"); + } +}); + +// ../../node_modules/.pnpm/es-object-atoms@1.1.2/node_modules/es-object-atoms/index.js +var require_es_object_atoms = __commonJS({ + "../../node_modules/.pnpm/es-object-atoms@1.1.2/node_modules/es-object-atoms/index.js"(exports, module) { + "use strict"; + module.exports = Object; + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js +var require_es_errors = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js"(exports, module) { + "use strict"; + module.exports = Error; + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js +var require_eval = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js"(exports, module) { + "use strict"; + module.exports = EvalError; + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js +var require_range = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js"(exports, module) { + "use strict"; + module.exports = RangeError; + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js +var require_ref = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js"(exports, module) { + "use strict"; + module.exports = ReferenceError; + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js +var require_syntax = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js"(exports, module) { + "use strict"; + module.exports = SyntaxError; + } +}); + +// ../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js +var require_uri = __commonJS({ + "../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js"(exports, module) { + "use strict"; + module.exports = URIError; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js +var require_abs = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js"(exports, module) { + "use strict"; + module.exports = Math.abs; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js +var require_floor = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js"(exports, module) { + "use strict"; + module.exports = Math.floor; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js +var require_max2 = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js"(exports, module) { + "use strict"; + module.exports = Math.max; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js +var require_min2 = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js"(exports, module) { + "use strict"; + module.exports = Math.min; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js +var require_pow = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js"(exports, module) { + "use strict"; + module.exports = Math.pow; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js +var require_round = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js"(exports, module) { + "use strict"; + module.exports = Math.round; + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js +var require_isNaN = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js"(exports, module) { + "use strict"; + module.exports = Number.isNaN || /* @__PURE__ */ __name(function isNaN2(a) { + return a !== a; + }, "isNaN"); + } +}); + +// ../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js +var require_sign = __commonJS({ + "../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js"(exports, module) { + "use strict"; + var $isNaN = require_isNaN(); + module.exports = /* @__PURE__ */ __name(function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : 1; + }, "sign"); + } +}); + +// ../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js +var require_gOPD = __commonJS({ + "../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js"(exports, module) { + "use strict"; + module.exports = Object.getOwnPropertyDescriptor; + } +}); + +// ../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js +var require_gopd = __commonJS({ + "../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js"(exports, module) { + "use strict"; + var $gOPD = require_gOPD(); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module.exports = $gOPD; + } +}); + +// ../../node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js +var require_es_define_property = __commonJS({ + "../../node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js"(exports, module) { + "use strict"; + var $defineProperty = Object.defineProperty || false; + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = false; + } + } + module.exports = $defineProperty; + } +}); + +// ../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js +var require_shams = __commonJS({ + "../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js"(exports, module) { + "use strict"; + module.exports = /* @__PURE__ */ __name(function hasSymbols() { + if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { + return false; + } + if (typeof Symbol.iterator === "symbol") { + return true; + } + var obj = {}; + var sym = /* @__PURE__ */ Symbol("test"); + var symObj = Object(sym); + if (typeof sym === "string") { + return false; + } + if (Object.prototype.toString.call(sym) !== "[object Symbol]") { + return false; + } + if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { + return false; + } + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { + return false; + } + if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { + return false; + } + if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { + return false; + } + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { + return false; + } + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { + return false; + } + if (typeof Object.getOwnPropertyDescriptor === "function") { + var descriptor = ( + /** @type {PropertyDescriptor} */ + Object.getOwnPropertyDescriptor(obj, sym) + ); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { + return false; + } + } + return true; + }, "hasSymbols"); + } +}); + +// ../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js +var require_has_symbols = __commonJS({ + "../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js"(exports, module) { + "use strict"; + var origSymbol = typeof Symbol !== "undefined" && Symbol; + var hasSymbolSham = require_shams(); + module.exports = /* @__PURE__ */ __name(function hasNativeSymbols() { + if (typeof origSymbol !== "function") { + return false; + } + if (typeof Symbol !== "function") { + return false; + } + if (typeof origSymbol("foo") !== "symbol") { + return false; + } + if (typeof /* @__PURE__ */ Symbol("bar") !== "symbol") { + return false; + } + return hasSymbolSham(); + }, "hasNativeSymbols"); + } +}); + +// ../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js +var require_Reflect_getPrototypeOf = __commonJS({ + "../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js"(exports, module) { + "use strict"; + module.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; + } +}); + +// ../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js +var require_Object_getPrototypeOf = __commonJS({ + "../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js"(exports, module) { + "use strict"; + var $Object = require_es_object_atoms(); + module.exports = $Object.getPrototypeOf || null; + } +}); + +// ../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js +var require_implementation = __commonJS({ + "../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js"(exports, module) { + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var toStr = Object.prototype.toString; + var max = Math.max; + var funcType = "[object Function]"; + var concatty = /* @__PURE__ */ __name(function concatty2(a, b) { + var arr = []; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + return arr; + }, "concatty"); + var slicy = /* @__PURE__ */ __name(function slicy2(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }, "slicy"); + var joiny = /* @__PURE__ */ __name(function(arr, joiner) { + var str = ""; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }, "joiny"); + module.exports = /* @__PURE__ */ __name(function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + var bound; + var binder = /* @__PURE__ */ __name(function() { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + }, "binder"); + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = "$" + i; + } + bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = /* @__PURE__ */ __name(function Empty2() { + }, "Empty"); + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }, "bind"); + } +}); + +// ../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js +var require_function_bind = __commonJS({ + "../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js"(exports, module) { + "use strict"; + var implementation = require_implementation(); + module.exports = Function.prototype.bind || implementation; + } +}); + +// ../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js +var require_functionCall = __commonJS({ + "../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js"(exports, module) { + "use strict"; + module.exports = Function.prototype.call; + } +}); + +// ../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js +var require_functionApply = __commonJS({ + "../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js"(exports, module) { + "use strict"; + module.exports = Function.prototype.apply; + } +}); + +// ../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js +var require_reflectApply = __commonJS({ + "../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js"(exports, module) { + "use strict"; + module.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; + } +}); + +// ../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js +var require_actualApply = __commonJS({ + "../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js"(exports, module) { + "use strict"; + var bind = require_function_bind(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var $reflectApply = require_reflectApply(); + module.exports = $reflectApply || bind.call($call, $apply); + } +}); + +// ../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js +var require_call_bind_apply_helpers = __commonJS({ + "../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js"(exports, module) { + "use strict"; + var bind = require_function_bind(); + var $TypeError = require_type(); + var $call = require_functionCall(); + var $actualApply = require_actualApply(); + module.exports = /* @__PURE__ */ __name(function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== "function") { + throw new $TypeError("a function is required"); + } + return $actualApply(bind, $call, args); + }, "callBindBasic"); + } +}); + +// ../../node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js +var require_get = __commonJS({ + "../../node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js"(exports, module) { + "use strict"; + var callBind = require_call_bind_apply_helpers(); + var gOPD = require_gopd(); + var hasProtoAccessor; + try { + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ + [].__proto__ === Array.prototype; + } catch (e) { + if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") { + throw e; + } + } + var desc = !!hasProtoAccessor && gOPD && gOPD( + Object.prototype, + /** @type {keyof typeof Object.prototype} */ + "__proto__" + ); + var $Object = Object; + var $getPrototypeOf = $Object.getPrototypeOf; + module.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? ( + /** @type {import('./get')} */ + /* @__PURE__ */ __name(function getDunder(value) { + return $getPrototypeOf(value == null ? value : $Object(value)); + }, "getDunder") + ) : false; + } +}); + +// ../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js +var require_get_proto = __commonJS({ + "../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js"(exports, module) { + "use strict"; + var reflectGetProto = require_Reflect_getPrototypeOf(); + var originalGetProto = require_Object_getPrototypeOf(); + var getDunderProto = require_get(); + module.exports = reflectGetProto ? /* @__PURE__ */ __name(function getProto(O) { + return reflectGetProto(O); + }, "getProto") : originalGetProto ? /* @__PURE__ */ __name(function getProto(O) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new TypeError("getProto: not an object"); + } + return originalGetProto(O); + }, "getProto") : getDunderProto ? /* @__PURE__ */ __name(function getProto(O) { + return getDunderProto(O); + }, "getProto") : null; + } +}); + +// ../../node_modules/.pnpm/hasown@2.0.4/node_modules/hasown/index.js +var require_hasown = __commonJS({ + "../../node_modules/.pnpm/hasown@2.0.4/node_modules/hasown/index.js"(exports, module) { + "use strict"; + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; + var bind = require_function_bind(); + module.exports = bind.call(call, $hasOwn); + } +}); + +// ../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js +var require_get_intrinsic = __commonJS({ + "../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js"(exports, module) { + "use strict"; + var undefined2; + var $Object = require_es_object_atoms(); + var $Error = require_es_errors(); + var $EvalError = require_eval(); + var $RangeError = require_range(); + var $ReferenceError = require_ref(); + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var $URIError = require_uri(); + var abs = require_abs(); + var floor = require_floor(); + var max = require_max2(); + var min = require_min2(); + var pow = require_pow(); + var round = require_round(); + var sign = require_sign(); + var $Function = Function; + var getEvalledConstructor = /* @__PURE__ */ __name(function(expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); + } catch (e) { + } + }, "getEvalledConstructor"); + var $gOPD = require_gopd(); + var $defineProperty = require_es_define_property(); + var throwTypeError = /* @__PURE__ */ __name(function() { + throw new $TypeError(); + }, "throwTypeError"); + var ThrowTypeError = $gOPD ? (function() { + try { + arguments.callee; + return throwTypeError; + } catch (calleeThrows) { + try { + return $gOPD(arguments, "callee").get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + })() : throwTypeError; + var hasSymbols = require_has_symbols()(); + var getProto = require_get_proto(); + var $ObjectGPO = require_Object_getPrototypeOf(); + var $ReflectGPO = require_Reflect_getPrototypeOf(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var needsEval = {}; + var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); + var INTRINSICS = { + __proto__: null, + "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, + "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, + "%AsyncFromSyncIteratorPrototype%": undefined2, + "%AsyncFunction%": needsEval, + "%AsyncGenerator%": needsEval, + "%AsyncGeneratorFunction%": needsEval, + "%AsyncIteratorPrototype%": needsEval, + "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, + "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, + "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, + "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, + "%Boolean%": Boolean, + "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": $Error, + "%eval%": eval, + // eslint-disable-line no-eval + "%EvalError%": $EvalError, + "%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array, + "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, + "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, + "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, + "%Function%": $Function, + "%GeneratorFunction%": needsEval, + "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, + "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, + "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%JSON%": typeof JSON === "object" ? JSON : undefined2, + "%Map%": typeof Map === "undefined" ? undefined2 : Map, + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), + "%Math%": Math, + "%Number%": Number, + "%Object%": $Object, + "%Object.getOwnPropertyDescriptor%": $gOPD, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, + "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, + "%RangeError%": $RangeError, + "%ReferenceError%": $ReferenceError, + "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, + "%RegExp%": RegExp, + "%Set%": typeof Set === "undefined" ? undefined2 : Set, + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), + "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, + "%Symbol%": hasSymbols ? Symbol : undefined2, + "%SyntaxError%": $SyntaxError, + "%ThrowTypeError%": ThrowTypeError, + "%TypedArray%": TypedArray, + "%TypeError%": $TypeError, + "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, + "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, + "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, + "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, + "%URIError%": $URIError, + "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, + "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, + "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet, + "%Function.prototype.call%": $call, + "%Function.prototype.apply%": $apply, + "%Object.defineProperty%": $defineProperty, + "%Object.getPrototypeOf%": $ObjectGPO, + "%Math.abs%": abs, + "%Math.floor%": floor, + "%Math.max%": max, + "%Math.min%": min, + "%Math.pow%": pow, + "%Math.round%": round, + "%Math.sign%": sign, + "%Reflect.getPrototypeOf%": $ReflectGPO + }; + if (getProto) { + try { + null.error; + } catch (e) { + errorProto = getProto(getProto(e)); + INTRINSICS["%Error.prototype%"] = errorProto; + } + } + var errorProto; + var doEval = /* @__PURE__ */ __name(function doEval2(name) { + var value; + if (name === "%AsyncFunction%") { + value = getEvalledConstructor("async function () {}"); + } else if (name === "%GeneratorFunction%") { + value = getEvalledConstructor("function* () {}"); + } else if (name === "%AsyncGeneratorFunction%") { + value = getEvalledConstructor("async function* () {}"); + } else if (name === "%AsyncGenerator%") { + var fn = doEval2("%AsyncGeneratorFunction%"); + if (fn) { + value = fn.prototype; + } + } else if (name === "%AsyncIteratorPrototype%") { + var gen = doEval2("%AsyncGenerator%"); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + INTRINSICS[name] = value; + return value; + }, "doEval"); + var LEGACY_ALIASES = { + __proto__: null, + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }; + var bind = require_function_bind(); + var hasOwn = require_hasown(); + var $concat = bind.call($call, Array.prototype.concat); + var $spliceApply = bind.call($apply, Array.prototype.splice); + var $replace = bind.call($call, String.prototype.replace); + var $strSlice = bind.call($call, String.prototype.slice); + var $exec = bind.call($call, RegExp.prototype.exec); + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = /* @__PURE__ */ __name(function stringToPath2(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === "%" && last !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); + } else if (last === "%" && first !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); + } + var result = []; + $replace(string, rePropName, function(match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; + }); + return result; + }, "stringToPath"); + var getBaseIntrinsic = /* @__PURE__ */ __name(function getBaseIntrinsic2(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = "%" + alias[0] + "%"; + } + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === "undefined" && !allowMissing) { + throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); + } + return { + alias, + name: intrinsicName, + value + }; + } + throw new $SyntaxError("intrinsic " + name + " does not exist!"); + }, "getBaseIntrinsic"); + module.exports = /* @__PURE__ */ __name(function GetIntrinsic(name, allowMissing) { + if (typeof name !== "string" || name.length === 0) { + throw new $TypeError("intrinsic name must be a non-empty string"); + } + if (arguments.length > 1 && typeof allowMissing !== "boolean") { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; + var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { + throw new $SyntaxError("property names with quotes must have matching quotes"); + } + if (part === "constructor" || !isOwn) { + skipFurtherCaching = true; + } + intrinsicBaseName += "." + part; + intrinsicRealName = "%" + intrinsicBaseName + "%"; + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); + } + return void undefined2; + } + if ($gOPD && i + 1 >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + if (isOwn && "get" in desc && !("originalValue" in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; + }, "GetIntrinsic"); + } +}); + +// ../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js +var require_call_bound = __commonJS({ + "../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js"(exports, module) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBindBasic = require_call_bind_apply_helpers(); + var $indexOf = callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]); + module.exports = /* @__PURE__ */ __name(function callBoundIntrinsic(name, allowMissing) { + var intrinsic = ( + /** @type {(this: unknown, ...args: unknown[]) => unknown} */ + GetIntrinsic(name, !!allowMissing) + ); + if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { + return callBindBasic( + /** @type {const} */ + [intrinsic] + ); + } + return intrinsic; + }, "callBoundIntrinsic"); + } +}); + +// ../../node_modules/.pnpm/side-channel-map@1.0.1/node_modules/side-channel-map/index.js +var require_side_channel_map = __commonJS({ + "../../node_modules/.pnpm/side-channel-map@1.0.1/node_modules/side-channel-map/index.js"(exports, module) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_call_bound(); + var inspect = require_object_inspect(); + var $TypeError = require_type(); + var $Map = GetIntrinsic("%Map%", true); + var $mapGet = callBound("Map.prototype.get", true); + var $mapSet = callBound("Map.prototype.set", true); + var $mapHas = callBound("Map.prototype.has", true); + var $mapDelete = callBound("Map.prototype.delete", true); + var $mapSize = callBound("Map.prototype.size", true); + module.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ + /* @__PURE__ */ __name(function getSideChannelMap() { + var $m; + var channel = { + assert: /* @__PURE__ */ __name(function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, "assert"), + "delete": /* @__PURE__ */ __name(function(key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void 0; + } + return result; + } + return false; + }, "delete"), + get: /* @__PURE__ */ __name(function(key) { + if ($m) { + return $mapGet($m, key); + } + }, "get"), + has: /* @__PURE__ */ __name(function(key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, "has"), + set: /* @__PURE__ */ __name(function(key, value) { + if (!$m) { + $m = new $Map(); + } + $mapSet($m, key, value); + }, "set") + }; + return channel; + }, "getSideChannelMap"); + } +}); + +// ../../node_modules/.pnpm/side-channel-weakmap@1.0.2/node_modules/side-channel-weakmap/index.js +var require_side_channel_weakmap = __commonJS({ + "../../node_modules/.pnpm/side-channel-weakmap@1.0.2/node_modules/side-channel-weakmap/index.js"(exports, module) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_call_bound(); + var inspect = require_object_inspect(); + var getSideChannelMap = require_side_channel_map(); + var $TypeError = require_type(); + var $WeakMap = GetIntrinsic("%WeakMap%", true); + var $weakMapGet = callBound("WeakMap.prototype.get", true); + var $weakMapSet = callBound("WeakMap.prototype.set", true); + var $weakMapHas = callBound("WeakMap.prototype.has", true); + var $weakMapDelete = callBound("WeakMap.prototype.delete", true); + module.exports = $WeakMap ? ( + /** @type {Exclude<import('.'), false>} */ + /* @__PURE__ */ __name(function getSideChannelWeakMap() { + var $wm; + var $m; + var channel = { + assert: /* @__PURE__ */ __name(function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, "assert"), + "delete": /* @__PURE__ */ __name(function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m["delete"](key); + } + } + return false; + }, "delete"), + get: /* @__PURE__ */ __name(function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, "get"), + has: /* @__PURE__ */ __name(function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, "has"), + set: /* @__PURE__ */ __name(function(key, value) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + $m.set(key, value); + } + }, "set") + }; + return channel; + }, "getSideChannelWeakMap") + ) : getSideChannelMap; + } +}); + +// ../../node_modules/.pnpm/side-channel@1.1.1/node_modules/side-channel/index.js +var require_side_channel = __commonJS({ + "../../node_modules/.pnpm/side-channel@1.1.1/node_modules/side-channel/index.js"(exports, module) { + "use strict"; + var $TypeError = require_type(); + var inspect = require_object_inspect(); + var getSideChannelList = require_side_channel_list(); + var getSideChannelMap = require_side_channel_map(); + var getSideChannelWeakMap = require_side_channel_weakmap(); + var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; + module.exports = /* @__PURE__ */ __name(function getSideChannel() { + var $channelData; + var channel = { + assert: /* @__PURE__ */ __name(function(key) { + if (!channel.has(key)) { + var keyDesc = key && Object(key) === key ? "the given object key" : inspect(key); + throw new $TypeError("Side channel does not contain " + keyDesc); + } + }, "assert"), + "delete": /* @__PURE__ */ __name(function(key) { + return !!$channelData && $channelData["delete"](key); + }, "delete"), + get: /* @__PURE__ */ __name(function(key) { + return $channelData && $channelData.get(key); + }, "get"), + has: /* @__PURE__ */ __name(function(key) { + return !!$channelData && $channelData.has(key); + }, "has"), + set: /* @__PURE__ */ __name(function(key, value) { + if (!$channelData) { + $channelData = makeChannel(); + } + $channelData.set(key, value); + }, "set") + }; + return channel; + }, "getSideChannel"); + } +}); + +// ../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/formats.js +var require_formats = __commonJS({ + "../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/formats.js"(exports, module) { + "use strict"; + var replace = String.prototype.replace; + var percentTwenties = /%20/g; + var Format = { + RFC1738: "RFC1738", + RFC3986: "RFC3986" + }; + module.exports = { + "default": Format.RFC3986, + formatters: { + RFC1738: /* @__PURE__ */ __name(function(value) { + return replace.call(value, percentTwenties, "+"); + }, "RFC1738"), + RFC3986: /* @__PURE__ */ __name(function(value) { + return String(value); + }, "RFC3986") + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 + }; + } +}); + +// ../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/utils.js +var require_utils2 = __commonJS({ + "../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/utils.js"(exports, module) { + "use strict"; + var formats = require_formats(); + var getSideChannel = require_side_channel(); + var defineProperty = require_es_define_property(); + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + var overflowChannel = getSideChannel(); + var markOverflow = /* @__PURE__ */ __name(function markOverflow2(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + return obj; + }, "markOverflow"); + var isOverflow = /* @__PURE__ */ __name(function isOverflow2(obj) { + return overflowChannel.has(obj); + }, "isOverflow"); + var getMaxIndex = /* @__PURE__ */ __name(function getMaxIndex2(obj) { + return overflowChannel.get(obj); + }, "getMaxIndex"); + var setMaxIndex = /* @__PURE__ */ __name(function setMaxIndex2(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + }, "setMaxIndex"); + var conflictChannel = getSideChannel(); + var markConflict = /* @__PURE__ */ __name(function markConflict2(obj, maxIndex) { + conflictChannel.set(obj, maxIndex); + return obj; + }, "markConflict"); + var isConflict = /* @__PURE__ */ __name(function isConflict2(obj) { + return conflictChannel.has(obj); + }, "isConflict"); + var getConflictIndex = /* @__PURE__ */ __name(function getConflictIndex2(obj) { + return conflictChannel.get(obj); + }, "getConflictIndex"); + var hexTable = (function() { + var array = []; + for (var i = 0; i < 256; ++i) { + array[array.length] = "%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase(); + } + return array; + })(); + var compactQueue = /* @__PURE__ */ __name(function compactQueue2(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + if (isArray(obj)) { + var compacted = []; + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== "undefined") { + compacted[compacted.length] = obj[j]; + } + } + item.obj[item.prop] = compacted; + } + } + }, "compactQueue"); + var arrayToObject = /* @__PURE__ */ __name(function arrayToObject2(source, options) { + var obj = options && options.plainObjects ? { __proto__: null } : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== "undefined") { + obj[i] = source[i]; + } + } + return obj; + }, "arrayToObject"); + var setProperty = /* @__PURE__ */ __name(function setProperty2(obj, key, value) { + if (key === "__proto__" && defineProperty) { + defineProperty(obj, key, { + configurable: true, + enumerable: true, + value, + writable: true + }); + } else { + obj[key] = value; + } + }, "setProperty"); + var maxNumericIndex = /* @__PURE__ */ __name(function maxNumericIndex2(obj, min) { + var max = min; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; ++i) { + var num = parseInt(keys[i], 10); + if (String(num) === keys[i] && num > max) { + max = num; + } + } + return max; + }, "maxNumericIndex"); + var limitedPair = /* @__PURE__ */ __name(function limitedPair2(first, second, options) { + var pair = [first, second]; + if (options && typeof options.arrayLimit === "number" && pair.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return markOverflow(arrayToObject(pair, options), 1); + } + return pair; + }, "limitedPair"); + var merge = /* @__PURE__ */ __name(function merge2(target, source, options) { + if (!source) { + return target; + } + if (typeof source !== "object" && typeof source !== "function") { + if (isArray(target)) { + var nextIndex = target.length; + if (options && typeof options.arrayLimit === "number" && nextIndex >= options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return markOverflow(arrayToObject(target.concat(source), options), nextIndex); + } + target[nextIndex] = source; + } else if (target && typeof target === "object") { + if (isOverflow(target)) { + var newIndex = getMaxIndex(target) + 1; + target[newIndex] = source; + setMaxIndex(target, newIndex); + } else if (options && options.strictMerge && isConflict(target)) { + var nextConflict = getConflictIndex(target) + 1; + if (options.throwOnLimitExceeded && typeof options.arrayLimit === "number" && nextConflict >= options.arrayLimit) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + target[nextConflict] = source; + markConflict(target, nextConflict); + } else if (options && options.strictMerge) { + var conflict = limitedPair(target, source, options); + return isArray(conflict) ? markConflict(conflict, 1) : conflict; + } else if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return limitedPair(target, source, options); + } + return target; + } + if (!target || typeof target !== "object") { + if (isOverflow(source)) { + var sourceKeys = Object.keys(source); + var result = options && options.plainObjects ? { __proto__: null, 0: target } : { 0: target }; + for (var m = 0; m < sourceKeys.length; m++) { + var oldKey = parseInt(sourceKeys[m], 10); + result[oldKey + 1] = source[sourceKeys[m]]; + } + return markOverflow(result, getMaxIndex(source) + 1); + } + var combined = [target].concat(source); + if (options && typeof options.arrayLimit === "number" && combined.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return markOverflow(arrayToObject(combined, options), combined.length - 1); + } + return combined; + } + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + if (isConflict(target)) { + markConflict(mergeTarget, target.length - 1); + } + } + if (isArray(target) && isArray(source)) { + source.forEach(function(item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === "object" && item && typeof item === "object") { + target[i] = merge2(targetItem, item, options); + } else { + target[target.length] = item; + } + } else { + target[i] = item; + } + }); + if (options && typeof options.arrayLimit === "number" && target.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return markOverflow(arrayToObject(target, options), target.length - 1); + } + return target; + } + return Object.keys(source).reduce(function(acc, key) { + var value = source[key]; + if (has.call(acc, key)) { + setProperty(acc, key, merge2(acc[key], value, options)); + } else { + setProperty(acc, key, value); + } + if (isOverflow(source) && !isOverflow(acc)) { + markOverflow(acc, maxNumericIndex(acc, getMaxIndex(source))); + } + if (isOverflow(acc)) { + var keyNum = parseInt(key, 10); + if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { + setMaxIndex(acc, keyNum); + } + } + if (isConflict(acc)) { + var conflictKey = parseInt(key, 10); + if (String(conflictKey) === key && conflictKey > getConflictIndex(acc)) { + markConflict(acc, conflictKey); + } + } + return acc; + }, mergeTarget); + }, "merge"); + var assign = /* @__PURE__ */ __name(function assignSingleSource(target, source) { + return Object.keys(source).reduce(function(acc, key) { + setProperty(acc, key, source[key]); + return acc; + }, target); + }, "assignSingleSource"); + var decode = /* @__PURE__ */ __name(function(str, defaultDecoder, charset) { + if (typeof str === "string" && str.indexOf("%") === -1) { + return str.indexOf("+") === -1 ? str : str.replace(/\+/g, " "); + } + var strWithoutPlus = str.replace(/\+/g, " "); + if (charset === "iso-8859-1") { + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } + }, "decode"); + var hasToPrimitive = typeof Symbol === "function" && typeof Symbol.toPrimitive === "symbol"; + var arrayJoin = Array.prototype.join; + var arrayToString = Array.prototype.toString; + var objectToString = Object.prototype.toString; + var toCoercible = /* @__PURE__ */ __name(function toCoercible2(value, joining) { + if (!value || typeof value !== "object" && typeof value !== "function") { + return value; + } + if (hasToPrimitive && value[Symbol.toPrimitive] != null) { + return value; + } + if (isArray(value) && value.toString === arrayToString && value.join === arrayJoin) { + var ancestors = joining || getSideChannel(); + if (ancestors.has(value)) { + return ""; + } + ancestors.set(value, true); + var copy; + for (var i = 0; i < value.length; i += 1) { + var item = value[i]; + var coerced = toCoercible2(item, ancestors); + if (!copy && coerced !== item) { + copy = []; + for (var j = 0; j < i; j += 1) { + copy[j] = value[j]; + } + } + if (copy) { + copy[i] = coerced; + } + } + ancestors["delete"](value); + return copy || value; + } + if (typeof value.toString === "function") { + return value; + } + var valueOf = value.valueOf; + if (typeof valueOf === "function") { + var primitive = valueOf.call(value); + if (!primitive || typeof primitive !== "object" && typeof primitive !== "function") { + return String(primitive); + } + } + return objectToString.call(value); + }, "toCoercible"); + var limit = 1024; + var encode = /* @__PURE__ */ __name(function encode2(str, defaultEncoder, charset, kind, format) { + if (str.length === 0) { + return str; + } + var string = str; + if (typeof str === "symbol") { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== "string") { + string = String(toCoercible(str)); + } + if (charset === "iso-8859-1") { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) { + return "%26%23" + parseInt($0.slice(2), 16) + "%3B"; + }).replace(/\+/g, "%2B"); + } + var out = ""; + for (var j = 0; j < string.length; j += limit) { + var segment = string.length >= limit ? string.slice(j, j + limit) : string; + if (j + limit < string.length) { + var last = segment.charCodeAt(segment.length - 1); + if (last >= 55296 && last <= 56319) { + segment = segment.slice(0, -1); + j -= 1; + } + } + var arr = []; + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) { + arr[arr.length] = segment.charAt(i); + continue; + } + if (c < 128) { + arr[arr.length] = hexTable[c]; + continue; + } + if (c < 2048) { + arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63]; + continue; + } + if (c < 55296 || c >= 57344) { + arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; + continue; + } + i += 1; + c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i) & 1023); + arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; + } + out += arr.join(""); + } + return out; + }, "encode"); + var compact = /* @__PURE__ */ __name(function compact2(value) { + var queue = [{ obj: { o: value }, prop: "o" }]; + var refs = getSideChannel(); + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === "object" && val !== null && !refs.has(val)) { + queue[queue.length] = { obj, prop: key }; + refs.set(val, true); + } + } + } + compactQueue(queue); + return value; + }, "compact"); + var isRegExp = /* @__PURE__ */ __name(function isRegExp2(obj) { + return Object.prototype.toString.call(obj) === "[object RegExp]"; + }, "isRegExp"); + var isBuffer = /* @__PURE__ */ __name(function isBuffer2(obj) { + if (!obj || typeof obj !== "object") { + return false; + } + return !!(obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj)); + }, "isBuffer"); + var combine = /* @__PURE__ */ __name(function combine2(a, b, arrayLimit, plainObjects, throwOnLimitExceeded) { + if (isOverflow(a)) { + if (throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + arrayLimit + " element" + (arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + var bValues = isArray(b) ? b : [b]; + var newIndex = getMaxIndex(a); + for (var i = 0; i < bValues.length; ++i) { + newIndex += 1; + a[newIndex] = bValues[i]; + } + setMaxIndex(a, newIndex); + return a; + } + var result = [].concat(a, b); + if (result.length > arrayLimit) { + if (throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + arrayLimit + " element" + (arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return markOverflow(arrayToObject(result, { plainObjects }), result.length - 1); + } + return result; + }, "combine"); + var maybeMap = /* @__PURE__ */ __name(function maybeMap2(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped[mapped.length] = fn(val[i]); + } + return mapped; + } + return fn(val); + }, "maybeMap"); + module.exports = { + arrayToObject, + assign, + combine, + compact, + decode, + encode, + isBuffer, + isOverflow, + isRegExp, + markOverflow, + maybeMap, + merge, + toCoercible + }; + } +}); + +// ../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/stringify.js +var require_stringify = __commonJS({ + "../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/stringify.js"(exports, module) { + "use strict"; + var getSideChannel = require_side_channel(); + var utils = require_utils2(); + var formats = require_formats(); + var has = Object.prototype.hasOwnProperty; + var arrayPrefixGenerators = { + brackets: /* @__PURE__ */ __name(function brackets(prefix) { + return prefix + "[]"; + }, "brackets"), + comma: "comma", + indices: /* @__PURE__ */ __name(function indices(prefix, key) { + return prefix + "[" + key + "]"; + }, "indices"), + repeat: /* @__PURE__ */ __name(function repeat(prefix) { + return prefix; + }, "repeat") + }; + var isArray = Array.isArray; + var push = Array.prototype.push; + var pushToArray = /* @__PURE__ */ __name(function(arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); + }, "pushToArray"); + var toISO = Date.prototype.toISOString; + var defaultFormat = formats["default"]; + var defaults = { + addQueryPrefix: false, + allowDots: false, + allowEmptyArrays: false, + arrayFormat: "indices", + charset: "utf-8", + charsetSentinel: false, + commaRoundTrip: false, + delimiter: "&", + depth: Infinity, + encode: true, + encodeDotInKeys: false, + encoder: utils.encode, + encodeValuesOnly: false, + filter: void 0, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: /* @__PURE__ */ __name(function serializeDate(date) { + return toISO.call(date); + }, "serializeDate"), + skipNulls: false, + strictNullHandling: false + }; + var isNonNullishPrimitive = /* @__PURE__ */ __name(function isNonNullishPrimitive2(v) { + return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint"; + }, "isNonNullishPrimitive"); + var sentinel = {}; + var stringify2 = /* @__PURE__ */ __name(function stringify3(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel, depth, currentDepth) { + var obj = object; + if (currentDepth > depth) { + throw new RangeError("Input depth exceeded depth option of " + depth); + } + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) { + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== "undefined") { + if (pos === step) { + throw new RangeError("Cyclic object value"); + } else { + findFlag = true; + } + } + if (typeof tmpSc.get(sentinel) === "undefined") { + step = 0; + } + } + obj = typeof filter === "function" ? filter(prefix, obj) : obj; + if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === "comma" && isArray(obj)) { + obj = utils.maybeMap(obj, function(value2) { + if (value2 instanceof Date) { + return serializeDate(value2); + } + return value2; + }); + } + if (obj === null) { + if (strictNullHandling) { + return formatter(encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, "key", format) : prefix); + } + obj = ""; + } + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, "key", format); + return [formatter(keyValue) + "=" + formatter(encoder(obj, defaults.encoder, charset, "value", format))]; + } + return [formatter(prefix) + "=" + formatter(String(obj))]; + } + var values = []; + if (typeof obj === "undefined") { + return values; + } + var objKeys; + if (generateArrayPrefix === "comma" && isArray(obj)) { + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, function(v) { + return v == null ? v : encoder(v, defaults.encoder, charset, "value", format); + }); + } + objKeys = [{ value: obj.length > 0 ? utils.toCoercible(obj).join(",") || null : void 0 }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + var encodedPrefix = String(prefix); + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix; + if (allowEmptyArrays && isArray(obj) && obj.length === 0 && Object.keys(obj).length === 0) { + return adjustedPrefix + "[]"; + } + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === "object" && key && typeof key.value !== "undefined" ? key.value : obj[key]; + if (skipNulls && value === null) { + continue; + } + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key); + var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]"); + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify3( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + generateArrayPrefix === "comma" && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel, + depth, + currentDepth + 1 + )); + } + return values; + }, "stringify"); + var normalizeStringifyOptions = /* @__PURE__ */ __name(function normalizeStringifyOptions2(opts) { + if (!opts) { + return defaults; + } + if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { + throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + } + if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") { + throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided"); + } + if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") { + throw new TypeError("Encoder has to be a function."); + } + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { + throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + } + var format = formats["default"]; + if (typeof opts.format !== "undefined") { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError("Unknown format option provided."); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + var filter = defaults.filter; + if (typeof opts.filter === "function" || isArray(opts.filter)) { + filter = opts.filter; + } + var arrayFormat; + if (has.call(arrayPrefixGenerators, opts.arrayFormat)) { + arrayFormat = opts.arrayFormat; + } else if ("indices" in opts) { + arrayFormat = opts.indices ? "indices" : "repeat"; + } else { + arrayFormat = defaults.arrayFormat; + } + if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") { + throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); + } + var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { + addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat, + charset, + charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: !!opts.commaRoundTrip, + delimiter: typeof opts.delimiter === "undefined" ? defaults.delimiter : opts.delimiter, + depth: typeof opts.depth === "number" ? opts.depth : defaults.depth, + encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults.encodeDotInKeys, + encoder: typeof opts.encoder === "function" ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter, + format, + formatter, + serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === "function" ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling + }; + }, "normalizeStringifyOptions"); + module.exports = function(object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + var objKeys; + var filter; + if (typeof options.filter === "function") { + filter = options.filter; + obj = filter("", obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + var keys = []; + if (typeof obj !== "object" || obj === null) { + return ""; + } + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip; + if (!objKeys) { + objKeys = Object.keys(obj); + } + if (options.sort) { + objKeys.sort(options.sort); + } + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + if (typeof key === "undefined" || key === null) { + continue; + } + var value = obj[key]; + if (options.skipNulls && value === null) { + continue; + } + var encodedKey = options.encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key); + pushToArray(keys, stringify2( + value, + encodedKey, + generateArrayPrefix, + commaRoundTrip, + options.allowEmptyArrays, + options.strictNullHandling, + options.skipNulls, + options.encodeDotInKeys, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel, + options.depth, + 0 + )); + } + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? "?" : ""; + if (options.charsetSentinel) { + if (options.charset === "iso-8859-1") { + prefix += "utf8=%26%2310003%3B" + options.delimiter; + } else { + prefix += "utf8=%E2%9C%93" + options.delimiter; + } + } + return joined.length > 0 ? prefix + joined : ""; + }; + } +}); + +// ../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/parse.js +var require_parse = __commonJS({ + "../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/parse.js"(exports, module) { + "use strict"; + var getSideChannel = require_side_channel(); + var utils = require_utils2(); + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + var getPrototypeOf = Object.getPrototypeOf; + var isPlainContainer = /* @__PURE__ */ __name(function isPlainContainer2(value) { + if (!value || typeof value !== "object") { + return false; + } + if (isArray(value)) { + return true; + } + var proto = getPrototypeOf(value); + return proto === Object.prototype || proto === null; + }, "isPlainContainer"); + var emptyCopyOf = /* @__PURE__ */ __name(function emptyCopyOf2(value) { + if (isArray(value)) { + var arr = []; + arr.length = value.length; + return arr; + } + return getPrototypeOf(value) === null ? { __proto__: null } : {}; + }, "emptyCopyOf"); + var copyInput = /* @__PURE__ */ __name(function copyInput2(input) { + var copies = getSideChannel(); + var result = {}; + var queue = [{ source: input, target: result }]; + for (var i = 0; i < queue.length; ++i) { + var source = queue[i].source; + var target = queue[i].target; + var keys = Object.keys(source); + for (var j = 0; j < keys.length; ++j) { + var value = source[keys[j]]; + if (isPlainContainer(value)) { + if (!copies.has(value)) { + var copy = emptyCopyOf(value); + copies.set(value, copy); + queue[queue.length] = { source: value, target: copy }; + } + target[keys[j]] = copies.get(value); + } else { + target[keys[j]] = value; + } + } + } + return result; + }, "copyInput"); + var defaults = { + allowDots: false, + allowEmptyArrays: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: "utf-8", + charsetSentinel: false, + comma: false, + decodeDotInKeys: false, + decoder: utils.decode, + delimiter: "&", + depth: 5, + duplicates: "combine", + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1e3, + parseArrays: true, + plainObjects: false, + strictDepth: false, + strictMerge: true, + strictNullHandling: false, + throwOnLimitExceeded: false + }; + var interpretNumericEntities = /* @__PURE__ */ __name(function(str) { + return str.replace(/&#(\d+);/g, function($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); + }, "interpretNumericEntities"); + var parseArrayValue = /* @__PURE__ */ __name(function(val, options, currentArrayLength) { + if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) { + if (options.throwOnLimitExceeded) { + var commaCount = 0; + var commaIndex = val.indexOf(","); + while (commaIndex > -1) { + commaCount += 1; + if (commaCount >= options.arrayLimit) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + commaIndex = val.indexOf(",", commaIndex + 1); + } + } + return val.split(","); + } + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } + return val; + }, "parseArrayValue"); + var isoSentinel = "utf8=%26%2310003%3B"; + var charsetSentinel = "utf8=%E2%9C%93"; + var parseValues = /* @__PURE__ */ __name(function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str; + cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]"); + var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit; + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded && typeof limit !== "undefined" ? limit + 1 : limit + ); + if (options.throwOnLimitExceeded && typeof limit !== "undefined" && parts.length > limit) { + throw new RangeError("Parameter limit exceeded. Only " + limit + " parameter" + (limit === 1 ? "" : "s") + " allowed."); + } + var skipIndex = -1; + var i; + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf("utf8=") === 0) { + if (parts[i] === charsetSentinel) { + charset = "utf-8"; + } else if (parts[i] === isoSentinel) { + charset = "iso-8859-1"; + } + skipIndex = i; + i = parts.length; + } + } + } + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + var bracketEqualsPos = part.indexOf("]="); + var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1; + var isEmptyBracketKey = pos > 1 && part.slice(pos - 2, pos) === "[]"; + var key; + var val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, "key"); + val = options.strictNullHandling ? null : ""; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, "key"); + if (key !== null) { + val = utils.maybeMap( + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), + function(encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, "value"); + } + ); + } + } + if (val && options.interpretNumericEntities && charset === "iso-8859-1") { + val = interpretNumericEntities(String(val)); + } + if (isEmptyBracketKey) { + val = isArray(val) ? [val] : val; + } + if (options.comma && isArray(val) && val.length > options.arrayLimit) { + val = utils.combine([], val, options.arrayLimit, options.plainObjects, options.throwOnLimitExceeded); + } + if (key !== null) { + var existing = has.call(obj, key); + if (existing && (options.duplicates === "combine" || isEmptyBracketKey)) { + obj[key] = utils.combine( + obj[key], + val, + options.arrayLimit, + options.plainObjects, + options.throwOnLimitExceeded + ); + } else if (!existing || options.duplicates === "last") { + obj[key] = val; + } + } + } + return obj; + }, "parseQueryStringValues"); + var parseObject = /* @__PURE__ */ __name(function(chain, val, options, valuesParsed) { + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === "[]") { + var parentKey = chain.slice(0, -1).join(""); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + if (root === "[]" && options.parseArrays) { + if (utils.isOverflow(leaf)) { + obj = leaf; + } else { + obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : utils.combine( + [], + leaf, + options.arrayLimit, + options.plainObjects, + options.throwOnLimitExceeded + ); + } + } else { + obj = options.plainObjects ? { __proto__: null } : {}; + var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root; + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot; + var index = parseInt(decodedRoot, 10); + var isValidArrayIndex = !isNaN(index) && root !== decodedRoot && String(index) === decodedRoot && index >= 0 && options.parseArrays; + if (!options.parseArrays && decodedRoot === "") { + obj = { 0: leaf }; + } else if (isValidArrayIndex && index < options.arrayLimit) { + obj = []; + obj[index] = leaf; + } else if (isValidArrayIndex && options.throwOnLimitExceeded) { + throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); + } else if (isValidArrayIndex) { + obj[index] = leaf; + utils.markOverflow(obj, index); + } else if (decodedRoot !== "__proto__") { + obj[decodedRoot] = leaf; + } + } + leaf = obj; + } + return leaf; + }, "parseObject"); + var topLevelDotsToBrackets = /* @__PURE__ */ __name(function topLevelDotsToBrackets2(key) { + var result = ""; + var depth = 0; + for (var i = 0; i < key.length; i += 1) { + var cu = key.charCodeAt(i); + if (cu === 91) { + depth += 1; + result += "["; + } else if (cu === 93) { + if (depth > 0) { + depth -= 1; + } + result += "]"; + } else if (cu === 46 && depth === 0 && i + 1 < key.length && key.charCodeAt(i + 1) !== 46 && key.charCodeAt(i + 1) !== 91) { + var start = i + 1; + var j = start; + while (j < key.length && key.charCodeAt(j) !== 46 && key.charCodeAt(j) !== 91) { + j += 1; + } + result += "[" + key.slice(start, j) + "]"; + i = j - 1; + } else { + result += key.charAt(i); + } + } + return result; + }, "topLevelDotsToBrackets"); + var splitKeyIntoSegments = /* @__PURE__ */ __name(function splitKeyIntoSegments2(originalKey, options) { + var key = options.allowDots ? topLevelDotsToBrackets(originalKey) : originalKey; + if (options.depth <= 0) { + if (!options.plainObjects && has.call(Object.prototype, key)) { + if (!options.allowPrototypes) { + return; + } + } + return [key]; + } + var segments = []; + var first = key.indexOf("["); + var parent = first >= 0 ? key.slice(0, first) : key; + if (parent) { + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + segments[segments.length] = parent; + } + var n = key.length; + var open = first; + var collected = 0; + while (open >= 0 && collected < options.depth) { + var level = 1; + var i = open + 1; + var close = -1; + while (i < n && close < 0) { + var cu = key.charCodeAt(i); + if (cu === 91) { + level += 1; + } else if (cu === 93) { + level -= 1; + if (level === 0) { + close = i; + } + } + i += 1; + } + if (close < 0) { + segments[segments.length] = "[" + key.slice(open) + "]"; + return segments; + } + var seg = key.slice(open, close + 1); + var content = seg.slice(1, -1); + if (!options.plainObjects && has.call(Object.prototype, content) && !options.allowPrototypes) { + return; + } + segments[segments.length] = seg; + collected += 1; + open = key.indexOf("[", close + 1); + } + if (open >= 0) { + if (options.strictDepth === true) { + throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true"); + } + segments[segments.length] = "[" + key.slice(open) + "]"; + } + return segments; + }, "splitKeyIntoSegments"); + var parseKeys = /* @__PURE__ */ __name(function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + var keys = splitKeyIntoSegments(givenKey, options); + if (!keys) { + return; + } + return parseObject(keys, val, options, valuesParsed); + }, "parseQueryStringKeys"); + var normalizeParseOptions = /* @__PURE__ */ __name(function normalizeParseOptions2(opts) { + if (!opts) { + return defaults; + } + if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { + throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + } + if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") { + throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided"); + } + if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") { + throw new TypeError("Decoder has to be a function."); + } + if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { + throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + } + if (typeof opts.throwOnLimitExceeded !== "undefined" && typeof opts.throwOnLimitExceeded !== "boolean") { + throw new TypeError("`throwOnLimitExceeded` option must be a boolean"); + } + var charset = typeof opts.charset === "undefined" ? defaults.charset : opts.charset; + var duplicates = typeof opts.duplicates === "undefined" ? defaults.duplicates : opts.duplicates; + if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") { + throw new TypeError("The duplicates option must be either combine, first, or last"); + } + var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { + allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults.arrayLimit, + charset, + charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === "boolean" ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults.decodeDotInKeys, + decoder: typeof opts.decoder === "function" ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults.depth, + duplicates, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults.plainObjects, + strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults.strictDepth, + strictMerge: typeof opts.strictMerge === "boolean" ? !!opts.strictMerge : defaults.strictMerge, + strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === "boolean" ? opts.throwOnLimitExceeded : false + }; + }, "normalizeParseOptions"); + module.exports = function(str, opts) { + var options = normalizeParseOptions(opts); + if (str === "" || str === null || typeof str === "undefined") { + return options.plainObjects ? { __proto__: null } : {}; + } + var tempObj = typeof str === "string" ? parseValues(str, options) : copyInput(str); + var obj = options.plainObjects ? { __proto__: null } : {}; + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === "string"); + obj = utils.merge(obj, newObj, options); + } + if (options.allowSparse === true) { + return obj; + } + return utils.compact(obj); + }; + } +}); + +// ../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/index.js +var require_lib4 = __commonJS({ + "../../node_modules/.pnpm/qs@6.16.1/node_modules/qs/lib/index.js"(exports, module) { + "use strict"; + var stringify2 = require_stringify(); + var parse = require_parse(); + var formats = require_formats(); + module.exports = { + formats, + parse, + stringify: stringify2 + }; + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/lib/types/urlencoded.js"(exports, module) { + "use strict"; + var createError = require_http_errors(); + var debug = require_src()("body-parser:urlencoded"); + var read = require_read(); + var qs = require_lib4(); + var { normalizeOptions } = require_utils(); + module.exports = urlencoded; + function urlencoded(options) { + const normalizedOptions = normalizeOptions(options, "application/x-www-form-urlencoded"); + if (normalizedOptions.defaultCharset !== "utf-8" && normalizedOptions.defaultCharset !== "iso-8859-1") { + throw new TypeError("option defaultCharset must be either utf-8 or iso-8859-1"); + } + const parse = createQueryParser(options); + const readOptions = { + ...normalizedOptions, + // assert charset + isValidCharset: /* @__PURE__ */ __name((charset) => charset === "utf-8" || charset === "iso-8859-1", "isValidCharset") + }; + return /* @__PURE__ */ __name(function urlencodedParser(req, res, next) { + read(req, res, next, parse, debug, readOptions); + }, "urlencodedParser"); + } + __name(urlencoded, "urlencoded"); + function createQueryParser(options) { + const extended = Boolean(options?.extended); + let parameterLimit = options?.parameterLimit !== void 0 ? options?.parameterLimit : 1e3; + const charsetSentinel = options?.charsetSentinel; + const interpretNumericEntities = options?.interpretNumericEntities; + const depth = extended ? options?.depth !== void 0 ? options?.depth : 32 : 0; + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError("option parameterLimit must be a positive number"); + } + if (isNaN(depth) || depth < 0) { + throw new TypeError("option depth must be a zero or a positive number"); + } + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0; + } + return /* @__PURE__ */ __name(function parse(body, encoding) { + if (!body.length) return {}; + const paramCount = parameterCount(body, parameterLimit); + if (paramCount === void 0) { + debug("too many parameters"); + throw createError(413, "too many parameters", { + type: "parameters.too.many" + }); + } + const arrayLimit = extended ? Math.max(100, paramCount) : paramCount; + debug("parse " + (extended ? "extended " : "") + "urlencoding"); + try { + return qs.parse(body, { + allowPrototypes: true, + arrayLimit, + depth, + charsetSentinel, + interpretNumericEntities, + charset: encoding, + parameterLimit, + strictDepth: true + }); + } catch (err) { + if (err instanceof RangeError) { + throw createError(400, "The input exceeded the depth", { + type: "querystring.parse.rangeError" + }); + } else { + throw err; + } + } + }, "parse"); + } + __name(createQueryParser, "createQueryParser"); + function parameterCount(body, limit) { + let count = 0; + let index = -1; + do { + count++; + if (count > limit) return void 0; + index = body.indexOf("&", index + 1); + } while (index !== -1); + return count; + } + __name(parameterCount, "parameterCount"); + } +}); + +// ../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/index.js +var require_body_parser = __commonJS({ + "../../node_modules/.pnpm/body-parser@2.3.0/node_modules/body-parser/index.js"(exports, module) { + "use strict"; + exports = module.exports = bodyParser; + exports.json = require_json(); + exports.raw = require_raw(); + exports.text = require_text(); + exports.urlencoded = require_urlencoded(); + function bodyParser() { + throw new Error("The bodyParser() generic has been split into individual middleware to use instead."); + } + __name(bodyParser, "bodyParser"); + } +}); + +// ../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.js +var require_merge_descriptors = __commonJS({ + "../../node_modules/.pnpm/merge-descriptors@2.0.0/node_modules/merge-descriptors/index.js"(exports, module) { + "use strict"; + function mergeDescriptors(destination, source, overwrite = true) { + if (!destination) { + throw new TypeError("The `destination` argument is required."); + } + if (!source) { + throw new TypeError("The `source` argument is required."); + } + for (const name of Object.getOwnPropertyNames(source)) { + if (!overwrite && Object.hasOwn(destination, name)) { + continue; + } + const descriptor = Object.getOwnPropertyDescriptor(source, name); + Object.defineProperty(destination, name, descriptor); + } + return destination; + } + __name(mergeDescriptors, "mergeDescriptors"); + module.exports = mergeDescriptors; + } +}); + +// ../../node_modules/.pnpm/encodeurl@2.0.0/node_modules/encodeurl/index.js +var require_encodeurl = __commonJS({ + "../../node_modules/.pnpm/encodeurl@2.0.0/node_modules/encodeurl/index.js"(exports, module) { + "use strict"; + module.exports = encodeUrl; + var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; + var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; + var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; + function encodeUrl(url) { + return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI); + } + __name(encodeUrl, "encodeUrl"); + } +}); + +// ../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js +var require_escape_html = __commonJS({ + "../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js"(exports, module) { + "use strict"; + var matchHtmlRegExp = /["'&<>]/; + module.exports = escapeHtml; + function escapeHtml(string) { + var str = "" + string; + var match = matchHtmlRegExp.exec(str); + if (!match) { + return str; + } + var escape2; + var html = ""; + var index = 0; + var lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escape2 = """; + break; + case 38: + escape2 = "&"; + break; + case 39: + escape2 = "'"; + break; + case 60: + escape2 = "<"; + break; + case 62: + escape2 = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + lastIndex = index + 1; + html += escape2; + } + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; + } + __name(escapeHtml, "escapeHtml"); + } +}); + +// ../../node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js +var require_parseurl = __commonJS({ + "../../node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js"(exports, module) { + "use strict"; + var url = __require("url"); + var parse = url.parse; + var Url = url.Url; + module.exports = parseurl; + module.exports.original = originalurl; + function parseurl(req) { + var url2 = req.url; + if (url2 === void 0) { + return void 0; + } + var parsed = req._parsedUrl; + if (fresh(url2, parsed)) { + return parsed; + } + parsed = fastparse(url2); + parsed._raw = url2; + return req._parsedUrl = parsed; + } + __name(parseurl, "parseurl"); + function originalurl(req) { + var url2 = req.originalUrl; + if (typeof url2 !== "string") { + return parseurl(req); + } + var parsed = req._parsedOriginalUrl; + if (fresh(url2, parsed)) { + return parsed; + } + parsed = fastparse(url2); + parsed._raw = url2; + return req._parsedOriginalUrl = parsed; + } + __name(originalurl, "originalurl"); + function fastparse(str) { + if (typeof str !== "string" || str.charCodeAt(0) !== 47) { + return parse(str); + } + var pathname = str; + var query = null; + var search = null; + for (var i = 1; i < str.length; i++) { + switch (str.charCodeAt(i)) { + case 63: + if (search === null) { + pathname = str.substring(0, i); + query = str.substring(i + 1); + search = str.substring(i); + } + break; + case 9: + /* \t */ + case 10: + /* \n */ + case 12: + /* \f */ + case 13: + /* \r */ + case 32: + /* */ + case 35: + /* # */ + case 160: + case 65279: + return parse(str); + } + } + var url2 = Url !== void 0 ? new Url() : {}; + url2.path = str; + url2.href = str; + url2.pathname = pathname; + if (search !== null) { + url2.query = query; + url2.search = search; + } + return url2; + } + __name(fastparse, "fastparse"); + function fresh(url2, parsedUrl) { + return typeof parsedUrl === "object" && parsedUrl !== null && (Url === void 0 || parsedUrl instanceof Url) && parsedUrl._raw === url2; + } + __name(fresh, "fresh"); + } +}); + +// ../../node_modules/.pnpm/finalhandler@2.1.1/node_modules/finalhandler/index.js +var require_finalhandler = __commonJS({ + "../../node_modules/.pnpm/finalhandler@2.1.1/node_modules/finalhandler/index.js"(exports, module) { + "use strict"; + var debug = require_src()("finalhandler"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var onFinished = require_on_finished(); + var parseUrl = require_parseurl(); + var statuses = require_statuses(); + var isFinished = onFinished.isFinished; + function createHtmlDocument(message) { + var body = escapeHtml(message).replaceAll("\n", "<br>").replaceAll(" ", "  "); + return '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error\n\n\n
' + body + "
\n\n\n"; + } + __name(createHtmlDocument, "createHtmlDocument"); + module.exports = finalhandler; + function finalhandler(req, res, options) { + var opts = options || {}; + var env = opts.env || process.env.NODE_ENV || "development"; + var onerror = opts.onerror; + return function(err) { + var headers; + var msg; + var status; + if (!err && res.headersSent) { + debug("cannot 404 after headers sent"); + return; + } + if (err) { + status = getErrorStatusCode(err); + if (status === void 0) { + status = getResponseStatusCode(res); + } else { + headers = getErrorHeaders(err); + } + msg = getErrorMessage(err, status, env); + } else { + status = 404; + msg = "Cannot " + req.method + " " + encodeUrl(getResourceName(req)); + } + debug("default %s", status); + if (err && onerror) { + setImmediate(onerror, err, req, res); + } + if (res.headersSent) { + debug("cannot %d after headers sent", status); + if (req.socket) { + req.socket.destroy(); + } + return; + } + send(req, res, status, headers, msg); + }; + } + __name(finalhandler, "finalhandler"); + function getErrorHeaders(err) { + if (!err.headers || typeof err.headers !== "object") { + return void 0; + } + return { ...err.headers }; + } + __name(getErrorHeaders, "getErrorHeaders"); + function getErrorMessage(err, status, env) { + var msg; + if (env !== "production") { + msg = err.stack; + if (!msg && typeof err.toString === "function") { + msg = err.toString(); + } + } + return msg || statuses.message[status]; + } + __name(getErrorMessage, "getErrorMessage"); + function getErrorStatusCode(err) { + if (typeof err.status === "number" && err.status >= 400 && err.status < 600) { + return err.status; + } + if (typeof err.statusCode === "number" && err.statusCode >= 400 && err.statusCode < 600) { + return err.statusCode; + } + return void 0; + } + __name(getErrorStatusCode, "getErrorStatusCode"); + function getResourceName(req) { + try { + return parseUrl.original(req).pathname; + } catch (e) { + return "resource"; + } + } + __name(getResourceName, "getResourceName"); + function getResponseStatusCode(res) { + var status = res.statusCode; + if (typeof status !== "number" || status < 400 || status > 599) { + status = 500; + } + return status; + } + __name(getResponseStatusCode, "getResponseStatusCode"); + function send(req, res, status, headers, message) { + function write() { + var body = createHtmlDocument(message); + res.statusCode = status; + if (req.httpVersionMajor < 2) { + res.statusMessage = statuses.message[status]; + } + res.removeHeader("Content-Encoding"); + res.removeHeader("Content-Language"); + res.removeHeader("Content-Range"); + for (const [key, value] of Object.entries(headers ?? {})) { + res.setHeader(key, value); + } + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Content-Type", "text/html; charset=utf-8"); + res.setHeader("Content-Length", Buffer.byteLength(body, "utf8")); + if (req.method === "HEAD") { + res.end(); + return; + } + res.end(body, "utf8"); + } + __name(write, "write"); + if (isFinished(req)) { + write(); + return; + } + req.unpipe(); + onFinished(req, write); + req.resume(); + } + __name(send, "send"); + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/view.js +var require_view = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/view.js"(exports, module) { + "use strict"; + var debug = require_src()("express:view"); + var path = __require("node:path"); + var fs = __require("node:fs"); + var dirname = path.dirname; + var basename = path.basename; + var extname = path.extname; + var join = path.join; + var resolve = path.resolve; + module.exports = View; + function View(name, options) { + var opts = options || {}; + this.defaultEngine = opts.defaultEngine; + this.ext = extname(name); + this.name = name; + this.root = opts.root; + if (!this.ext && !this.defaultEngine) { + throw new Error("No default engine was specified and no extension was provided."); + } + var fileName = name; + if (!this.ext) { + this.ext = this.defaultEngine[0] !== "." ? "." + this.defaultEngine : this.defaultEngine; + fileName += this.ext; + } + if (!opts.engines[this.ext]) { + var mod = this.ext.slice(1); + debug('require "%s"', mod); + var fn = __require(mod).__express; + if (typeof fn !== "function") { + throw new Error('Module "' + mod + '" does not provide a view engine.'); + } + opts.engines[this.ext] = fn; + } + this.engine = opts.engines[this.ext]; + this.path = this.lookup(fileName); + } + __name(View, "View"); + View.prototype.lookup = /* @__PURE__ */ __name(function lookup(name) { + var path2; + var roots = [].concat(this.root); + debug('lookup "%s"', name); + for (var i = 0; i < roots.length && !path2; i++) { + var root = roots[i]; + var loc = resolve(root, name); + var dir = dirname(loc); + var file = basename(loc); + path2 = this.resolve(dir, file); + } + return path2; + }, "lookup"); + View.prototype.render = /* @__PURE__ */ __name(function render(options, callback) { + var sync = true; + debug('render "%s"', this.path); + this.engine(this.path, options, /* @__PURE__ */ __name(function onRender() { + if (!sync) { + return callback.apply(this, arguments); + } + var args = new Array(arguments.length); + var cntx = this; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + return process.nextTick(/* @__PURE__ */ __name(function renderTick() { + return callback.apply(cntx, args); + }, "renderTick")); + }, "onRender")); + sync = false; + }, "render"); + View.prototype.resolve = /* @__PURE__ */ __name(function resolve2(dir, file) { + var ext = this.ext; + var path2 = join(dir, file); + var stat = tryStat(path2); + if (stat && stat.isFile()) { + return path2; + } + path2 = join(dir, basename(file, ext), "index" + ext); + stat = tryStat(path2); + if (stat && stat.isFile()) { + return path2; + } + }, "resolve"); + function tryStat(path2) { + debug('stat "%s"', path2); + try { + return fs.statSync(path2); + } catch (e) { + return void 0; + } + } + __name(tryStat, "tryStat"); + } +}); + +// ../../node_modules/.pnpm/etag@1.8.1/node_modules/etag/index.js +var require_etag = __commonJS({ + "../../node_modules/.pnpm/etag@1.8.1/node_modules/etag/index.js"(exports, module) { + "use strict"; + module.exports = etag; + var crypto = __require("crypto"); + var Stats = __require("fs").Stats; + var toString = Object.prototype.toString; + function entitytag(entity) { + if (entity.length === 0) { + return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"'; + } + var hash = crypto.createHash("sha1").update(entity, "utf8").digest("base64").substring(0, 27); + var len = typeof entity === "string" ? Buffer.byteLength(entity, "utf8") : entity.length; + return '"' + len.toString(16) + "-" + hash + '"'; + } + __name(entitytag, "entitytag"); + function etag(entity, options) { + if (entity == null) { + throw new TypeError("argument entity is required"); + } + var isStats = isstats(entity); + var weak = options && typeof options.weak === "boolean" ? options.weak : isStats; + if (!isStats && typeof entity !== "string" && !Buffer.isBuffer(entity)) { + throw new TypeError("argument entity must be string, Buffer, or fs.Stats"); + } + var tag = isStats ? stattag(entity) : entitytag(entity); + return weak ? "W/" + tag : tag; + } + __name(etag, "etag"); + function isstats(obj) { + if (typeof Stats === "function" && obj instanceof Stats) { + return true; + } + return obj && typeof obj === "object" && "ctime" in obj && toString.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number"; + } + __name(isstats, "isstats"); + function stattag(stat) { + var mtime = stat.mtime.getTime().toString(16); + var size = stat.size.toString(16); + return '"' + size + "-" + mtime + '"'; + } + __name(stattag, "stattag"); + } +}); + +// ../../node_modules/.pnpm/forwarded@0.2.0/node_modules/forwarded/index.js +var require_forwarded = __commonJS({ + "../../node_modules/.pnpm/forwarded@0.2.0/node_modules/forwarded/index.js"(exports, module) { + "use strict"; + module.exports = forwarded; + function forwarded(req) { + if (!req) { + throw new TypeError("argument req is required"); + } + var proxyAddrs = parse(req.headers["x-forwarded-for"] || ""); + var socketAddr = getSocketAddr(req); + var addrs = [socketAddr].concat(proxyAddrs); + return addrs; + } + __name(forwarded, "forwarded"); + function getSocketAddr(req) { + return req.socket ? req.socket.remoteAddress : req.connection.remoteAddress; + } + __name(getSocketAddr, "getSocketAddr"); + function parse(header) { + var end = header.length; + var list = []; + var start = header.length; + for (var i = header.length - 1; i >= 0; i--) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i; + } + break; + case 44: + if (start !== end) { + list.push(header.substring(start, end)); + } + start = end = i; + break; + default: + start = i; + break; + } + } + if (start !== end) { + list.push(header.substring(start, end)); + } + return list; + } + __name(parse, "parse"); + } +}); + +// ../../node_modules/.pnpm/ipaddr.js@1.9.1/node_modules/ipaddr.js/lib/ipaddr.js +var require_ipaddr = __commonJS({ + "../../node_modules/.pnpm/ipaddr.js@1.9.1/node_modules/ipaddr.js/lib/ipaddr.js"(exports, module) { + (function() { + var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex; + ipaddr = {}; + root = this; + if (typeof module !== "undefined" && module !== null && module.exports) { + module.exports = ipaddr; + } else { + root["ipaddr"] = ipaddr; + } + matchCIDR = /* @__PURE__ */ __name(function(first, second, partSize, cidrBits) { + var part, shift; + if (first.length !== second.length) { + throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); + } + part = 0; + while (cidrBits > 0) { + shift = partSize - cidrBits; + if (shift < 0) { + shift = 0; + } + if (first[part] >> shift !== second[part] >> shift) { + return false; + } + cidrBits -= partSize; + part += 1; + } + return true; + }, "matchCIDR"); + ipaddr.subnetMatch = function(address, rangeList, defaultName) { + var k, len, rangeName, rangeSubnets, subnet; + if (defaultName == null) { + defaultName = "unicast"; + } + for (rangeName in rangeList) { + rangeSubnets = rangeList[rangeName]; + if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) { + rangeSubnets = [rangeSubnets]; + } + for (k = 0, len = rangeSubnets.length; k < len; k++) { + subnet = rangeSubnets[k]; + if (address.kind() === subnet[0].kind()) { + if (address.match.apply(address, subnet)) { + return rangeName; + } + } + } + } + return defaultName; + }; + ipaddr.IPv4 = (function() { + function IPv4(octets) { + var k, len, octet; + if (octets.length !== 4) { + throw new Error("ipaddr: ipv4 octet count should be 4"); + } + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!(0 <= octet && octet <= 255)) { + throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); + } + } + this.octets = octets; + } + __name(IPv4, "IPv4"); + IPv4.prototype.kind = function() { + return "ipv4"; + }; + IPv4.prototype.toString = function() { + return this.octets.join("."); + }; + IPv4.prototype.toNormalizedString = function() { + return this.toString(); + }; + IPv4.prototype.toByteArray = function() { + return this.octets.slice(0); + }; + IPv4.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== "ipv4") { + throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); + } + return matchCIDR(this.octets, other.octets, 8, cidrRange); + }; + IPv4.prototype.SpecialRanges = { + unspecified: [[new IPv4([0, 0, 0, 0]), 8]], + broadcast: [[new IPv4([255, 255, 255, 255]), 32]], + multicast: [[new IPv4([224, 0, 0, 0]), 4]], + linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], + loopback: [[new IPv4([127, 0, 0, 0]), 8]], + carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]], + "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], + reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] + }; + IPv4.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + IPv4.prototype.toIPv4MappedAddress = function() { + return ipaddr.IPv6.parse("::ffff:" + this.toString()); + }; + IPv4.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, octet, stop, zeros, zerotable; + zerotable = { + 0: 8, + 128: 7, + 192: 6, + 224: 5, + 240: 4, + 248: 3, + 252: 2, + 254: 1, + 255: 0 + }; + cidr = 0; + stop = false; + for (i = k = 3; k >= 0; i = k += -1) { + octet = this.octets[i]; + if (octet in zerotable) { + zeros = zerotable[octet]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 8) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 32 - cidr; + }; + return IPv4; + })(); + ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; + ipv4Regexes = { + fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", "i"), + longValue: new RegExp("^" + ipv4Part + "$", "i") + }; + ipaddr.IPv4.parser = function(string) { + var match, parseIntAuto, part, shift, value; + parseIntAuto = /* @__PURE__ */ __name(function(string2) { + if (string2[0] === "0" && string2[1] !== "x") { + return parseInt(string2, 8); + } else { + return parseInt(string2); + } + }, "parseIntAuto"); + if (match = string.match(ipv4Regexes.fourOctet)) { + return (function() { + var k, len, ref, results; + ref = match.slice(1, 6); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseIntAuto(part)); + } + return results; + })(); + } else if (match = string.match(ipv4Regexes.longValue)) { + value = parseIntAuto(match[1]); + if (value > 4294967295 || value < 0) { + throw new Error("ipaddr: address outside defined range"); + } + return (function() { + var k, results; + results = []; + for (shift = k = 0; k <= 24; shift = k += 8) { + results.push(value >> shift & 255); + } + return results; + })().reverse(); + } else { + return null; + } + }; + ipaddr.IPv6 = (function() { + function IPv6(parts, zoneId) { + var i, k, l, len, part, ref; + if (parts.length === 16) { + this.parts = []; + for (i = k = 0; k <= 14; i = k += 2) { + this.parts.push(parts[i] << 8 | parts[i + 1]); + } + } else if (parts.length === 8) { + this.parts = parts; + } else { + throw new Error("ipaddr: ipv6 part count should be 8 or 16"); + } + ref = this.parts; + for (l = 0, len = ref.length; l < len; l++) { + part = ref[l]; + if (!(0 <= part && part <= 65535)) { + throw new Error("ipaddr: ipv6 part should fit in 16 bits"); + } + } + if (zoneId) { + this.zoneId = zoneId; + } + } + __name(IPv6, "IPv6"); + IPv6.prototype.kind = function() { + return "ipv6"; + }; + IPv6.prototype.toString = function() { + return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, "::"); + }; + IPv6.prototype.toRFC5952String = function() { + var bestMatchIndex, bestMatchLength, match, regex, string; + regex = /((^|:)(0(:|$)){2,})/g; + string = this.toNormalizedString(); + bestMatchIndex = 0; + bestMatchLength = -1; + while (match = regex.exec(string)) { + if (match[0].length > bestMatchLength) { + bestMatchIndex = match.index; + bestMatchLength = match[0].length; + } + } + if (bestMatchLength < 0) { + return string; + } + return string.substring(0, bestMatchIndex) + "::" + string.substring(bestMatchIndex + bestMatchLength); + }; + IPv6.prototype.toByteArray = function() { + var bytes, k, len, part, ref; + bytes = []; + ref = this.parts; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + bytes.push(part >> 8); + bytes.push(part & 255); + } + return bytes; + }; + IPv6.prototype.toNormalizedString = function() { + var addr, part, suffix; + addr = (function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16)); + } + return results; + }).call(this).join(":"); + suffix = ""; + if (this.zoneId) { + suffix = "%" + this.zoneId; + } + return addr + suffix; + }; + IPv6.prototype.toFixedLengthString = function() { + var addr, part, suffix; + addr = (function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16).padStart(4, "0")); + } + return results; + }).call(this).join(":"); + suffix = ""; + if (this.zoneId) { + suffix = "%" + this.zoneId; + } + return addr + suffix; + }; + IPv6.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== "ipv6") { + throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); + } + return matchCIDR(this.parts, other.parts, 16, cidrRange); + }; + IPv6.prototype.SpecialRanges = { + unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], + linkLocal: [new IPv6([65152, 0, 0, 0, 0, 0, 0, 0]), 10], + multicast: [new IPv6([65280, 0, 0, 0, 0, 0, 0, 0]), 8], + loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], + uniqueLocal: [new IPv6([64512, 0, 0, 0, 0, 0, 0, 0]), 7], + ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 65535, 0, 0]), 96], + rfc6145: [new IPv6([0, 0, 0, 0, 65535, 0, 0, 0]), 96], + rfc6052: [new IPv6([100, 65435, 0, 0, 0, 0, 0, 0]), 96], + "6to4": [new IPv6([8194, 0, 0, 0, 0, 0, 0, 0]), 16], + teredo: [new IPv6([8193, 0, 0, 0, 0, 0, 0, 0]), 32], + reserved: [[new IPv6([8193, 3512, 0, 0, 0, 0, 0, 0]), 32]] + }; + IPv6.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + IPv6.prototype.isIPv4MappedAddress = function() { + return this.range() === "ipv4Mapped"; + }; + IPv6.prototype.toIPv4Address = function() { + var high, low, ref; + if (!this.isIPv4MappedAddress()) { + throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); + } + ref = this.parts.slice(-2), high = ref[0], low = ref[1]; + return new ipaddr.IPv4([high >> 8, high & 255, low >> 8, low & 255]); + }; + IPv6.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, part, stop, zeros, zerotable; + zerotable = { + 0: 16, + 32768: 15, + 49152: 14, + 57344: 13, + 61440: 12, + 63488: 11, + 64512: 10, + 65024: 9, + 65280: 8, + 65408: 7, + 65472: 6, + 65504: 5, + 65520: 4, + 65528: 3, + 65532: 2, + 65534: 1, + 65535: 0 + }; + cidr = 0; + stop = false; + for (i = k = 7; k >= 0; i = k += -1) { + part = this.parts[i]; + if (part in zerotable) { + zeros = zerotable[part]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 16) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 128 - cidr; + }; + return IPv6; + })(); + ipv6Part = "(?:[0-9a-f]+::?)+"; + zoneIndex = "%[0-9a-z]{1,}"; + ipv6Regexes = { + zoneIndex: new RegExp(zoneIndex, "i"), + "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", "i"), + transitional: new RegExp("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)" + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), "i") + }; + expandIPv6 = /* @__PURE__ */ __name(function(string, parts) { + var colonCount, lastColon, part, replacement, replacementCount, zoneId; + if (string.indexOf("::") !== string.lastIndexOf("::")) { + return null; + } + zoneId = (string.match(ipv6Regexes["zoneIndex"]) || [])[0]; + if (zoneId) { + zoneId = zoneId.substring(1); + string = string.replace(/%.+$/, ""); + } + colonCount = 0; + lastColon = -1; + while ((lastColon = string.indexOf(":", lastColon + 1)) >= 0) { + colonCount++; + } + if (string.substr(0, 2) === "::") { + colonCount--; + } + if (string.substr(-2, 2) === "::") { + colonCount--; + } + if (colonCount > parts) { + return null; + } + replacementCount = parts - colonCount; + replacement = ":"; + while (replacementCount--) { + replacement += "0:"; + } + string = string.replace("::", replacement); + if (string[0] === ":") { + string = string.slice(1); + } + if (string[string.length - 1] === ":") { + string = string.slice(0, -1); + } + parts = (function() { + var k, len, ref, results; + ref = string.split(":"); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseInt(part, 16)); + } + return results; + })(); + return { + parts, + zoneId + }; + }, "expandIPv6"); + ipaddr.IPv6.parser = function(string) { + var addr, k, len, match, octet, octets, zoneId; + if (ipv6Regexes["native"].test(string)) { + return expandIPv6(string, 8); + } else if (match = string.match(ipv6Regexes["transitional"])) { + zoneId = match[6] || ""; + addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6); + if (addr.parts) { + octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])]; + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!(0 <= octet && octet <= 255)) { + return null; + } + } + addr.parts.push(octets[0] << 8 | octets[1]); + addr.parts.push(octets[2] << 8 | octets[3]); + return { + parts: addr.parts, + zoneId: addr.zoneId + }; + } + } + return null; + }; + ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) { + return this.parser(string) !== null; + }; + ipaddr.IPv4.isValid = function(string) { + var e; + try { + new this(this.parser(string)); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + ipaddr.IPv4.isValidFourPartDecimal = function(string) { + if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) { + return true; + } else { + return false; + } + }; + ipaddr.IPv6.isValid = function(string) { + var addr, e; + if (typeof string === "string" && string.indexOf(":") === -1) { + return false; + } + try { + addr = this.parser(string); + new this(addr.parts, addr.zoneId); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + ipaddr.IPv4.parse = function(string) { + var parts; + parts = this.parser(string); + if (parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(parts); + }; + ipaddr.IPv6.parse = function(string) { + var addr; + addr = this.parser(string); + if (addr.parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(addr.parts, addr.zoneId); + }; + ipaddr.IPv4.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 32) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, "toString", { + value: /* @__PURE__ */ __name(function() { + return this.join("/"); + }, "value") + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); + }; + ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) { + var filledOctetCount, j, octets; + prefix = parseInt(prefix); + if (prefix < 0 || prefix > 32) { + throw new Error("ipaddr: invalid IPv4 prefix length"); + } + octets = [0, 0, 0, 0]; + j = 0; + filledOctetCount = Math.floor(prefix / 8); + while (j < filledOctetCount) { + octets[j] = 255; + j++; + } + if (filledOctetCount < 4) { + octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - prefix % 8; + } + return new this(octets); + }; + ipaddr.IPv4.broadcastAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }; + ipaddr.IPv4.networkAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10)); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }; + ipaddr.IPv6.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 128) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, "toString", { + value: /* @__PURE__ */ __name(function() { + return this.join("/"); + }, "value") + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); + }; + ipaddr.isValid = function(string) { + return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string); + }; + ipaddr.parse = function(string) { + if (ipaddr.IPv6.isValid(string)) { + return ipaddr.IPv6.parse(string); + } else if (ipaddr.IPv4.isValid(string)) { + return ipaddr.IPv4.parse(string); + } else { + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); + } + }; + ipaddr.parseCIDR = function(string) { + var e; + try { + return ipaddr.IPv6.parseCIDR(string); + } catch (error1) { + e = error1; + try { + return ipaddr.IPv4.parseCIDR(string); + } catch (error12) { + e = error12; + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); + } + } + }; + ipaddr.fromByteArray = function(bytes) { + var length; + length = bytes.length; + if (length === 4) { + return new ipaddr.IPv4(bytes); + } else if (length === 16) { + return new ipaddr.IPv6(bytes); + } else { + throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); + } + }; + ipaddr.process = function(string) { + var addr; + addr = this.parse(string); + if (addr.kind() === "ipv6" && addr.isIPv4MappedAddress()) { + return addr.toIPv4Address(); + } else { + return addr; + } + }; + }).call(exports); + } +}); + +// ../../node_modules/.pnpm/proxy-addr@2.0.8/node_modules/proxy-addr/index.js +var require_proxy_addr = __commonJS({ + "../../node_modules/.pnpm/proxy-addr@2.0.8/node_modules/proxy-addr/index.js"(exports, module) { + "use strict"; + module.exports = proxyaddr; + module.exports.all = alladdrs; + module.exports.compile = compile; + var forwarded = require_forwarded(); + var ipaddr = require_ipaddr(); + var DIGIT_REGEXP = /^[0-9]+$/; + var isip = ipaddr.isValid; + var parseip = ipaddr.parse; + var IP_RANGES = { + linklocal: ["169.254.0.0/16", "fe80::/10"], + loopback: ["127.0.0.1/8", "::1/128"], + uniquelocal: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fc00::/7"] + }; + function alladdrs(req, trust) { + var addrs = forwarded(req); + if (!trust) { + return addrs; + } + if (typeof trust !== "function") { + trust = compile(trust); + } + for (var i = 0; i < addrs.length - 1; i++) { + if (trust(addrs[i], i)) continue; + addrs.length = i + 1; + } + return addrs; + } + __name(alladdrs, "alladdrs"); + function compile(val) { + if (!val) { + throw new TypeError("argument is required"); + } + var trust; + if (typeof val === "string") { + trust = [val]; + } else if (Array.isArray(val)) { + trust = val.slice(); + } else { + throw new TypeError("unsupported trust argument"); + } + for (var i = 0; i < trust.length; i++) { + val = trust[i]; + if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) { + continue; + } + val = IP_RANGES[val]; + trust.splice.apply(trust, [i, 1].concat(val)); + i += val.length - 1; + } + return compileTrust(compileRangeSubnets(trust)); + } + __name(compile, "compile"); + function compileRangeSubnets(arr) { + var rangeSubnets = new Array(arr.length); + for (var i = 0; i < arr.length; i++) { + rangeSubnets[i] = parseipNotation(arr[i]); + } + return rangeSubnets; + } + __name(compileRangeSubnets, "compileRangeSubnets"); + function compileTrust(rangeSubnets) { + var len = rangeSubnets.length; + return len === 0 ? trustNone : len === 1 ? trustSingle(rangeSubnets[0]) : trustMulti(rangeSubnets); + } + __name(compileTrust, "compileTrust"); + function parseipNotation(note) { + var pos = note.lastIndexOf("/"); + var str = pos !== -1 ? note.substring(0, pos) : note; + if (!isip(str)) { + throw new TypeError("invalid IP address: " + str); + } + var ip = parseip(str); + if (pos === -1 && ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { + ip = ip.toIPv4Address(); + } + var max = ip.kind() === "ipv6" ? 128 : 32; + var range = pos !== -1 ? note.substring(pos + 1, note.length) : null; + if (range === null) { + range = max; + } else if (DIGIT_REGEXP.test(range)) { + range = parseInt(range, 10); + } else if (ip.kind() === "ipv4" && isip(range)) { + range = parseNetmask(range); + } else { + range = null; + } + if (range <= 0 || range > max) { + throw new TypeError("invalid range on address: " + note); + } + return [ip, range]; + } + __name(parseipNotation, "parseipNotation"); + function parseNetmask(netmask) { + var ip = parseip(netmask); + var kind = ip.kind(); + return kind === "ipv4" ? ip.prefixLengthFromSubnetMask() : null; + } + __name(parseNetmask, "parseNetmask"); + function proxyaddr(req, trust) { + if (!req) { + throw new TypeError("req argument is required"); + } + if (!trust) { + throw new TypeError("trust argument is required"); + } + var addrs = alladdrs(req, trust); + var addr = addrs[addrs.length - 1]; + return addr; + } + __name(proxyaddr, "proxyaddr"); + function trustNone() { + return false; + } + __name(trustNone, "trustNone"); + function trustMulti(subnets) { + return /* @__PURE__ */ __name(function trust(addr) { + if (!isip(addr)) return false; + var ip = parseip(addr); + if (ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { + ip = ip.toIPv4Address(); + } + var ipconv; + var kind = ip.kind(); + for (var i = 0; i < subnets.length; i++) { + var subnet = subnets[i]; + var subnetip = subnet[0]; + var subnetkind = subnetip.kind(); + var subnetrange = subnet[1]; + var trusted = ip; + if (kind !== subnetkind) { + if (subnetkind === "ipv4" && !ip.isIPv4MappedAddress()) { + continue; + } + if (subnetkind !== "ipv4" && !(subnetrange >= 96 && subnetip.isIPv4MappedAddress())) { + continue; + } + if (!ipconv) { + ipconv = subnetkind === "ipv4" ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); + } + trusted = ipconv; + } else if (kind === "ipv6" && subnetip.isIPv4MappedAddress()) { + continue; + } + if (trusted.match(subnetip, subnetrange)) { + return true; + } + } + return false; + }, "trust"); + } + __name(trustMulti, "trustMulti"); + function trustSingle(subnet) { + var subnetip = subnet[0]; + var subnetkind = subnetip.kind(); + var subnetisipv4 = subnetkind === "ipv4"; + var subnetrange = subnet[1]; + return /* @__PURE__ */ __name(function trust(addr) { + if (!isip(addr)) return false; + var ip = parseip(addr); + if (ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { + ip = ip.toIPv4Address(); + } + var kind = ip.kind(); + if (kind !== subnetkind) { + if (subnetisipv4 && !ip.isIPv4MappedAddress()) { + return false; + } + if (!subnetisipv4 && !(subnetrange >= 96 && subnetip.isIPv4MappedAddress())) { + return false; + } + ip = subnetisipv4 ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); + } else if (kind === "ipv6" && subnetip.isIPv4MappedAddress()) { + return false; + } + return ip.match(subnetip, subnetrange); + }, "trust"); + } + __name(trustSingle, "trustSingle"); + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/utils.js +var require_utils3 = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/utils.js"(exports) { + "use strict"; + var { METHODS } = __require("node:http"); + var contentType = require_dist(); + var etag = require_etag(); + var mime = require_mime_types(); + var proxyaddr = require_proxy_addr(); + var qs = require_lib4(); + var querystring = __require("node:querystring"); + var { Buffer: Buffer2 } = __require("node:buffer"); + exports.methods = METHODS.map((method) => method.toLowerCase()); + exports.etag = createETagGenerator({ weak: false }); + exports.wetag = createETagGenerator({ weak: true }); + exports.normalizeType = function(type) { + return ~type.indexOf("/") ? acceptParams(type) : { value: mime.lookup(type) || "application/octet-stream", params: {} }; + }; + exports.normalizeTypes = function(types) { + return types.map(exports.normalizeType); + }; + function acceptParams(str) { + var length = str.length; + var colonIndex = str.indexOf(";"); + var index = colonIndex === -1 ? length : colonIndex; + var ret = { value: str.slice(0, index).trim(), quality: 1, params: {} }; + while (index < length) { + var splitIndex = str.indexOf("=", index); + if (splitIndex === -1) break; + var colonIndex = str.indexOf(";", index); + var endIndex = colonIndex === -1 ? length : colonIndex; + if (splitIndex > endIndex) { + index = str.lastIndexOf(";", splitIndex - 1) + 1; + continue; + } + var key = str.slice(index, splitIndex).trim(); + var value = str.slice(splitIndex + 1, endIndex).trim(); + if (key === "q") { + ret.quality = parseFloat(value); + } else { + ret.params[key] = value; + } + index = endIndex + 1; + } + return ret; + } + __name(acceptParams, "acceptParams"); + exports.compileETag = function(val) { + var fn; + if (typeof val === "function") { + return val; + } + switch (val) { + case true: + case "weak": + fn = exports.wetag; + break; + case false: + break; + case "strong": + fn = exports.etag; + break; + default: + throw new TypeError("unknown value for etag function: " + val); + } + return fn; + }; + exports.compileQueryParser = /* @__PURE__ */ __name(function compileQueryParser(val) { + var fn; + if (typeof val === "function") { + return val; + } + switch (val) { + case true: + case "simple": + fn = querystring.parse; + break; + case false: + break; + case "extended": + fn = parseExtendedQueryString; + break; + default: + throw new TypeError("unknown value for query parser function: " + val); + } + return fn; + }, "compileQueryParser"); + exports.compileTrust = function(val) { + if (typeof val === "function") return val; + if (val === true) { + return function() { + return true; + }; + } + if (typeof val === "number") { + return function(a, i) { + return i < val; + }; + } + if (typeof val === "string") { + val = val.split(",").map(function(v) { + return v.trim(); + }); + } + return proxyaddr.compile(val || []); + }; + exports.setCharset = /* @__PURE__ */ __name(function setCharset(type, charset) { + if (!type || !charset) { + return type; + } + var parsed = contentType.parse(type); + parsed.parameters.charset = charset; + return contentType.format(parsed); + }, "setCharset"); + function createETagGenerator(options) { + return /* @__PURE__ */ __name(function generateETag(body, encoding) { + var buf = !Buffer2.isBuffer(body) ? Buffer2.from(body, encoding) : body; + return etag(buf, options); + }, "generateETag"); + } + __name(createETagGenerator, "createETagGenerator"); + function parseExtendedQueryString(str) { + return qs.parse(str, { + allowPrototypes: true + }); + } + __name(parseExtendedQueryString, "parseExtendedQueryString"); + } +}); + +// ../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js +var require_wrappy = __commonJS({ + "../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js"(exports, module) { + module.exports = wrappy; + function wrappy(fn, cb) { + if (fn && cb) return wrappy(fn)(cb); + if (typeof fn !== "function") + throw new TypeError("need wrapper function"); + Object.keys(fn).forEach(function(k) { + wrapper[k] = fn[k]; + }); + return wrapper; + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb2 = args[args.length - 1]; + if (typeof ret === "function" && ret !== cb2) { + Object.keys(cb2).forEach(function(k) { + ret[k] = cb2[k]; + }); + } + return ret; + } + __name(wrapper, "wrapper"); + } + __name(wrappy, "wrappy"); + } +}); + +// ../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js +var require_once = __commonJS({ + "../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js"(exports, module) { + var wrappy = require_wrappy(); + module.exports = wrappy(once); + module.exports.strict = wrappy(onceStrict); + once.proto = once(function() { + Object.defineProperty(Function.prototype, "once", { + value: /* @__PURE__ */ __name(function() { + return once(this); + }, "value"), + configurable: true + }); + Object.defineProperty(Function.prototype, "onceStrict", { + value: /* @__PURE__ */ __name(function() { + return onceStrict(this); + }, "value"), + configurable: true + }); + }); + function once(fn) { + var f = /* @__PURE__ */ __name(function() { + if (f.called) return f.value; + f.called = true; + return f.value = fn.apply(this, arguments); + }, "f"); + f.called = false; + return f; + } + __name(once, "once"); + function onceStrict(fn) { + var f = /* @__PURE__ */ __name(function() { + if (f.called) + throw new Error(f.onceError); + f.called = true; + return f.value = fn.apply(this, arguments); + }, "f"); + var name = fn.name || "Function wrapped with `once`"; + f.onceError = name + " shouldn't be called more than once"; + f.called = false; + return f; + } + __name(onceStrict, "onceStrict"); + } +}); + +// ../../node_modules/.pnpm/is-promise@4.0.0/node_modules/is-promise/index.js +var require_is_promise = __commonJS({ + "../../node_modules/.pnpm/is-promise@4.0.0/node_modules/is-promise/index.js"(exports, module) { + module.exports = isPromise; + module.exports.default = isPromise; + function isPromise(obj) { + return !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"; + } + __name(isPromise, "isPromise"); + } +}); + +// ../../node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js +var require_dist2 = __commonJS({ + "../../node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.PathError = exports.TokenData = void 0; + exports.parse = parse; + exports.compile = compile; + exports.match = match; + exports.pathToRegexp = pathToRegexp7; + exports.stringify = stringify2; + var DEFAULT_DELIMITER = "/"; + var NOOP_VALUE = /* @__PURE__ */ __name((value) => value, "NOOP_VALUE"); + var ID_START = /^[$_\p{ID_Start}]$/u; + var ID_CONTINUE = /^[$\u200c\u200d\p{ID_Continue}]$/u; + var ID = /^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u; + function escapeText(str) { + return str.replace(/[{}()\[\]+?!:*\\]/g, "\\$&"); + } + __name(escapeText, "escapeText"); + function escape2(str) { + return str.replace(/[.+*?^${}()[\]|/\\]/g, "\\$&"); + } + __name(escape2, "escape"); + var TokenData = class { + static { + __name(this, "TokenData"); + } + constructor(tokens, originalPath) { + this.tokens = tokens; + this.originalPath = originalPath; + } + }; + exports.TokenData = TokenData; + var PathError = class extends TypeError { + static { + __name(this, "PathError"); + } + constructor(message, originalPath) { + let text = message; + if (originalPath) + text += `: ${originalPath}`; + text += `; visit https://git.new/pathToRegexpError for info`; + super(text); + this.originalPath = originalPath; + } + }; + exports.PathError = PathError; + function parse(str, options = {}) { + const { encodePath = NOOP_VALUE } = options; + const chars = [...str]; + let index = 0; + function consumeUntil(end) { + const output = []; + let path = ""; + function writePath() { + if (!path) + return; + output.push({ + type: "text", + value: encodePath(path) + }); + path = ""; + } + __name(writePath, "writePath"); + while (index < chars.length) { + const value = chars[index++]; + if (value === end) { + writePath(); + return output; + } + if (value === "\\") { + if (index === chars.length) { + throw new PathError(`Unexpected end after \\ at index ${index}`, str); + } + path += chars[index++]; + continue; + } + if (value === ":" || value === "*") { + const type = value === ":" ? "param" : "wildcard"; + let name = ""; + if (ID_START.test(chars[index])) { + do { + name += chars[index++]; + } while (ID_CONTINUE.test(chars[index])); + } else if (chars[index] === '"') { + let quoteStart = index; + while (index < chars.length) { + if (chars[++index] === '"') { + index++; + quoteStart = 0; + break; + } + if (chars[index] === "\\") + index++; + name += chars[index]; + } + if (quoteStart) { + throw new PathError(`Unterminated quote at index ${quoteStart}`, str); + } + } + if (!name) { + throw new PathError(`Missing parameter name at index ${index}`, str); + } + writePath(); + output.push({ type, name }); + continue; + } + if (value === "{") { + writePath(); + output.push({ + type: "group", + tokens: consumeUntil("}") + }); + continue; + } + if (value === "}" || value === "(" || value === ")" || value === "[" || value === "]" || value === "+" || value === "?" || value === "!") { + throw new PathError(`Unexpected ${value} at index ${index - 1}`, str); + } + path += value; + } + if (end) { + throw new PathError(`Unexpected end at index ${index}, expected ${end}`, str); + } + writePath(); + return output; + } + __name(consumeUntil, "consumeUntil"); + return new TokenData(consumeUntil(""), str); + } + __name(parse, "parse"); + function compile(path, options = {}) { + const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } = options; + const data = typeof path === "object" ? path : parse(path, options); + const fn = tokensToFunction(data.tokens, delimiter, encode); + return /* @__PURE__ */ __name(function path2(params = {}) { + const missing = []; + const path3 = fn(params, missing); + if (missing.length) { + throw new TypeError(`Missing parameters: ${missing.join(", ")}`); + } + return path3; + }, "path"); + } + __name(compile, "compile"); + function tokensToFunction(tokens, delimiter, encode) { + const encoders = tokens.map((token) => tokenToFunction(token, delimiter, encode)); + return (data, missing) => { + let result = ""; + for (const encoder of encoders) { + result += encoder(data, missing); + } + return result; + }; + } + __name(tokensToFunction, "tokensToFunction"); + function tokenToFunction(token, delimiter, encode) { + if (token.type === "text") + return () => token.value; + if (token.type === "group") { + const fn = tokensToFunction(token.tokens, delimiter, encode); + return (data, missing) => { + const len = missing.length; + const value = fn(data, missing); + if (missing.length === len) + return value; + missing.length = len; + return ""; + }; + } + const encodeValue = encode || NOOP_VALUE; + if (token.type === "wildcard" && encode !== false) { + return (data, missing) => { + const value = data[token.name]; + if (value == null) { + missing.push(token.name); + return ""; + } + if (!Array.isArray(value) || value.length === 0) { + throw new TypeError(`Expected "${token.name}" to be a non-empty array`); + } + let result = ""; + for (let i = 0; i < value.length; i++) { + if (typeof value[i] !== "string") { + throw new TypeError(`Expected "${token.name}/${i}" to be a string`); + } + if (i > 0) + result += delimiter; + result += encodeValue(value[i]); + } + return result; + }; + } + return (data, missing) => { + const value = data[token.name]; + if (value == null) { + missing.push(token.name); + return ""; + } + if (typeof value !== "string") { + throw new TypeError(`Expected "${token.name}" to be a string`); + } + return encodeValue(value); + }; + } + __name(tokenToFunction, "tokenToFunction"); + function match(path, options = {}) { + const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } = options; + const { regexp, keys } = pathToRegexp7(path, options); + const decoders = keys.map((key) => { + if (decode === false) + return NOOP_VALUE; + if (key.type === "param") + return decode; + return (value) => value.split(delimiter).map(decode); + }); + return /* @__PURE__ */ __name(function match2(input) { + const m = regexp.exec(input); + if (!m) + return false; + const path2 = m[0]; + const params = /* @__PURE__ */ Object.create(null); + for (let i = 1; i < m.length; i++) { + if (m[i] === void 0) + continue; + const key = keys[i - 1]; + const decoder = decoders[i - 1]; + params[key.name] = decoder(m[i]); + } + return { path: path2, params }; + }, "match"); + } + __name(match, "match"); + function pathToRegexp7(path, options = {}) { + const { delimiter = DEFAULT_DELIMITER, end = true, sensitive = false, trailing = true } = options; + const keys = []; + let source = ""; + let combinations = 0; + function process2(path2) { + if (Array.isArray(path2)) { + for (const p of path2) + process2(p); + return; + } + const data = typeof path2 === "object" ? path2 : parse(path2, options); + flatten2(data.tokens, 0, [], (tokens) => { + if (combinations >= 256) { + throw new PathError("Too many path combinations", data.originalPath); + } + if (combinations > 0) + source += "|"; + source += toRegExpSource(tokens, delimiter, keys, data.originalPath); + combinations++; + }); + } + __name(process2, "process"); + process2(path); + let pattern = `^(?:${source})`; + if (trailing) + pattern += "(?:" + escape2(delimiter) + "$)?"; + pattern += end ? "$" : "(?=" + escape2(delimiter) + "|$)"; + return { regexp: new RegExp(pattern, sensitive ? "" : "i"), keys }; + } + __name(pathToRegexp7, "pathToRegexp"); + function flatten2(tokens, index, result, callback) { + while (index < tokens.length) { + const token = tokens[index++]; + if (token.type === "group") { + const len = result.length; + flatten2(token.tokens, 0, result, (seq) => flatten2(tokens, index, seq, callback)); + result.length = len; + continue; + } + result.push(token); + } + callback(result); + } + __name(flatten2, "flatten"); + function toRegExpSource(tokens, delimiter, keys, originalPath) { + let result = ""; + let backtrack = ""; + let wildcardBacktrack = ""; + let prevCaptureType = 0; + let hasSegmentCapture = 0; + let index = 0; + function hasInSegment(index2, type) { + while (index2 < tokens.length) { + const token = tokens[index2++]; + if (token.type === type) + return true; + if (token.type === "text") { + if (token.value.includes(delimiter)) + break; + } + } + return false; + } + __name(hasInSegment, "hasInSegment"); + function peekText(index2) { + let result2 = ""; + while (index2 < tokens.length) { + const token = tokens[index2++]; + if (token.type !== "text") + break; + result2 += token.value; + } + return result2; + } + __name(peekText, "peekText"); + while (index < tokens.length) { + const token = tokens[index++]; + if (token.type === "text") { + result += escape2(token.value); + backtrack += token.value; + if (prevCaptureType === 2) + wildcardBacktrack += token.value; + if (token.value.includes(delimiter)) + hasSegmentCapture = 0; + continue; + } + if (token.type === "param" || token.type === "wildcard") { + if (prevCaptureType && !backtrack) { + throw new PathError(`Missing text before "${token.name}" ${token.type}`, originalPath); + } + if (token.type === "param") { + result += hasSegmentCapture & 2 ? `(${negate(delimiter, backtrack)}+)` : hasInSegment(index, "wildcard") ? `(${negate(delimiter, peekText(index))}+)` : hasSegmentCapture & 1 ? `(${negate(delimiter, backtrack)}+|${escape2(backtrack)})` : `(${negate(delimiter, "")}+)`; + hasSegmentCapture |= prevCaptureType = 1; + } else { + result += hasSegmentCapture & 2 ? `(${negate(backtrack, "")}+)` : wildcardBacktrack ? `(${negate(wildcardBacktrack, "")}+|${negate(delimiter, "")}+)` : `([^]+)`; + wildcardBacktrack = ""; + hasSegmentCapture |= prevCaptureType = 2; + } + keys.push(token); + backtrack = ""; + continue; + } + throw new TypeError(`Unknown token type: ${token.type}`); + } + return result; + } + __name(toRegExpSource, "toRegExpSource"); + function negate(a, b) { + if (b.length > a.length) + return negate(b, a); + if (a === b) + b = ""; + if (b.length > 1) + return `(?:(?!${escape2(a)}|${escape2(b)})[^])`; + if (a.length > 1) + return `(?:(?!${escape2(a)})[^${escape2(b)}])`; + return `[^${escape2(a + b)}]`; + } + __name(negate, "negate"); + function stringifyTokens(tokens, index) { + let value = ""; + while (index < tokens.length) { + const token = tokens[index++]; + if (token.type === "text") { + value += escapeText(token.value); + continue; + } + if (token.type === "group") { + value += "{" + stringifyTokens(token.tokens, 0) + "}"; + continue; + } + if (token.type === "param") { + value += ":" + stringifyName(token.name, tokens[index]); + continue; + } + if (token.type === "wildcard") { + value += "*" + stringifyName(token.name, tokens[index]); + continue; + } + throw new TypeError(`Unknown token type: ${token.type}`); + } + return value; + } + __name(stringifyTokens, "stringifyTokens"); + function stringify2(data) { + return stringifyTokens(data.tokens, 0); + } + __name(stringify2, "stringify"); + function stringifyName(name, next) { + if (!ID.test(name)) + return JSON.stringify(name); + if ((next === null || next === void 0 ? void 0 : next.type) === "text" && ID_CONTINUE.test(next.value[0])) { + return JSON.stringify(name); + } + return name; + } + __name(stringifyName, "stringifyName"); + } +}); + +// ../../node_modules/.pnpm/router@2.2.0/node_modules/router/lib/layer.js +var require_layer = __commonJS({ + "../../node_modules/.pnpm/router@2.2.0/node_modules/router/lib/layer.js"(exports, module) { + "use strict"; + var isPromise = require_is_promise(); + var pathRegexp = require_dist2(); + var debug = require_src()("router:layer"); + var deprecate = require_depd()("router"); + var TRAILING_SLASH_REGEXP = /\/+$/; + var MATCHING_GROUP_REGEXP = /\((?:\?<(.*?)>)?(?!\?)/g; + module.exports = Layer; + function Layer(path, options, fn) { + if (!(this instanceof Layer)) { + return new Layer(path, options, fn); + } + debug("new %o", path); + const opts = options || {}; + this.handle = fn; + this.keys = []; + this.name = fn.name || ""; + this.params = void 0; + this.path = void 0; + this.slash = path === "/" && opts.end === false; + function matcher(_path) { + if (_path instanceof RegExp) { + const keys = []; + let name = 0; + let m; + while (m = MATCHING_GROUP_REGEXP.exec(_path.source)) { + keys.push({ + name: m[1] || name++, + offset: m.index + }); + } + return /* @__PURE__ */ __name(function regexpMatcher(p) { + const match = _path.exec(p); + if (!match) { + return false; + } + const params = {}; + for (let i = 1; i < match.length; i++) { + const key = keys[i - 1]; + const prop = key.name; + const val = decodeParam(match[i]); + if (val !== void 0) { + params[prop] = val; + } + } + return { + params, + path: match[0] + }; + }, "regexpMatcher"); + } + return pathRegexp.match(opts.strict ? _path : loosen(_path), { + sensitive: opts.sensitive, + end: opts.end, + trailing: !opts.strict, + decode: decodeParam + }); + } + __name(matcher, "matcher"); + this.matchers = Array.isArray(path) ? path.map(matcher) : [matcher(path)]; + } + __name(Layer, "Layer"); + Layer.prototype.handleError = /* @__PURE__ */ __name(function handleError(error, req, res, next) { + const fn = this.handle; + if (fn.length !== 4) { + return next(error); + } + try { + const ret = fn(error, req, res, next); + if (isPromise(ret)) { + if (!(ret instanceof Promise)) { + deprecate("handlers that are Promise-like are deprecated, use a native Promise instead"); + } + ret.then(null, function(error2) { + next(error2 || new Error("Rejected promise")); + }); + } + } catch (err) { + next(err); + } + }, "handleError"); + Layer.prototype.handleRequest = /* @__PURE__ */ __name(function handleRequest(req, res, next) { + const fn = this.handle; + if (fn.length > 3) { + return next(); + } + try { + const ret = fn(req, res, next); + if (isPromise(ret)) { + if (!(ret instanceof Promise)) { + deprecate("handlers that are Promise-like are deprecated, use a native Promise instead"); + } + ret.then(null, function(error) { + next(error || new Error("Rejected promise")); + }); + } + } catch (err) { + next(err); + } + }, "handleRequest"); + Layer.prototype.match = /* @__PURE__ */ __name(function match(path) { + let match2; + if (path != null) { + if (this.slash) { + this.params = {}; + this.path = ""; + return true; + } + let i = 0; + while (!match2 && i < this.matchers.length) { + match2 = this.matchers[i](path); + i++; + } + } + if (!match2) { + this.params = void 0; + this.path = void 0; + return false; + } + this.params = match2.params; + this.path = match2.path; + this.keys = Object.keys(match2.params); + return true; + }, "match"); + function decodeParam(val) { + if (typeof val !== "string" || val.length === 0) { + return val; + } + try { + return decodeURIComponent(val); + } catch (err) { + if (err instanceof URIError) { + err.message = "Failed to decode param '" + val + "'"; + err.status = 400; + } + throw err; + } + } + __name(decodeParam, "decodeParam"); + function loosen(path) { + if (path instanceof RegExp || path === "/") { + return path; + } + return Array.isArray(path) ? path.map(function(p) { + return loosen(p); + }) : String(path).replace(TRAILING_SLASH_REGEXP, ""); + } + __name(loosen, "loosen"); + } +}); + +// ../../node_modules/.pnpm/router@2.2.0/node_modules/router/lib/route.js +var require_route = __commonJS({ + "../../node_modules/.pnpm/router@2.2.0/node_modules/router/lib/route.js"(exports, module) { + "use strict"; + var debug = require_src()("router:route"); + var Layer = require_layer(); + var { METHODS } = __require("node:http"); + var slice = Array.prototype.slice; + var flatten2 = Array.prototype.flat; + var methods = METHODS.map((method) => method.toLowerCase()); + module.exports = Route; + function Route(path) { + debug("new %o", path); + this.path = path; + this.stack = []; + this.methods = /* @__PURE__ */ Object.create(null); + } + __name(Route, "Route"); + Route.prototype._handlesMethod = /* @__PURE__ */ __name(function _handlesMethod(method) { + if (this.methods._all) { + return true; + } + let name = typeof method === "string" ? method.toLowerCase() : method; + if (name === "head" && !this.methods.head) { + name = "get"; + } + return Boolean(this.methods[name]); + }, "_handlesMethod"); + Route.prototype._methods = /* @__PURE__ */ __name(function _methods() { + const methods2 = Object.keys(this.methods); + if (this.methods.get && !this.methods.head) { + methods2.push("head"); + } + for (let i = 0; i < methods2.length; i++) { + methods2[i] = methods2[i].toUpperCase(); + } + return methods2; + }, "_methods"); + Route.prototype.dispatch = /* @__PURE__ */ __name(function dispatch(req, res, done) { + let idx = 0; + const stack = this.stack; + let sync = 0; + if (stack.length === 0) { + return done(); + } + let method = typeof req.method === "string" ? req.method.toLowerCase() : req.method; + if (method === "head" && !this.methods.head) { + method = "get"; + } + req.route = this; + next(); + function next(err) { + if (err && err === "route") { + return done(); + } + if (err && err === "router") { + return done(err); + } + if (idx >= stack.length) { + return done(err); + } + if (++sync > 100) { + return setImmediate(next, err); + } + let layer; + let match; + while (match !== true && idx < stack.length) { + layer = stack[idx++]; + match = !layer.method || layer.method === method; + } + if (match !== true) { + return done(err); + } + if (err) { + layer.handleError(err, req, res, next); + } else { + layer.handleRequest(req, res, next); + } + sync = 0; + } + __name(next, "next"); + }, "dispatch"); + Route.prototype.all = /* @__PURE__ */ __name(function all(handler) { + const callbacks = flatten2.call(slice.call(arguments), Infinity); + if (callbacks.length === 0) { + throw new TypeError("argument handler is required"); + } + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("argument handler must be a function"); + } + const layer = Layer("/", {}, fn); + layer.method = void 0; + this.methods._all = true; + this.stack.push(layer); + } + return this; + }, "all"); + methods.forEach(function(method) { + Route.prototype[method] = function(handler) { + const callbacks = flatten2.call(slice.call(arguments), Infinity); + if (callbacks.length === 0) { + throw new TypeError("argument handler is required"); + } + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("argument handler must be a function"); + } + debug("%s %s", method, this.path); + const layer = Layer("/", {}, fn); + layer.method = method; + this.methods[method] = true; + this.stack.push(layer); + } + return this; + }; + }); + } +}); + +// ../../node_modules/.pnpm/router@2.2.0/node_modules/router/index.js +var require_router = __commonJS({ + "../../node_modules/.pnpm/router@2.2.0/node_modules/router/index.js"(exports, module) { + "use strict"; + var isPromise = require_is_promise(); + var Layer = require_layer(); + var { METHODS } = __require("node:http"); + var parseUrl = require_parseurl(); + var Route = require_route(); + var debug = require_src()("router"); + var deprecate = require_depd()("router"); + var slice = Array.prototype.slice; + var flatten2 = Array.prototype.flat; + var methods = METHODS.map((method) => method.toLowerCase()); + module.exports = Router; + module.exports.Route = Route; + function Router(options) { + if (!(this instanceof Router)) { + return new Router(options); + } + const opts = options || {}; + function router(req, res, next) { + router.handle(req, res, next); + } + __name(router, "router"); + Object.setPrototypeOf(router, this); + router.caseSensitive = opts.caseSensitive; + router.mergeParams = opts.mergeParams; + router.params = {}; + router.strict = opts.strict; + router.stack = []; + return router; + } + __name(Router, "Router"); + Router.prototype = function() { + }; + Router.prototype.param = /* @__PURE__ */ __name(function param(name, fn) { + if (!name) { + throw new TypeError("argument name is required"); + } + if (typeof name !== "string") { + throw new TypeError("argument name must be a string"); + } + if (!fn) { + throw new TypeError("argument fn is required"); + } + if (typeof fn !== "function") { + throw new TypeError("argument fn must be a function"); + } + let params = this.params[name]; + if (!params) { + params = this.params[name] = []; + } + params.push(fn); + return this; + }, "param"); + Router.prototype.handle = /* @__PURE__ */ __name(function handle(req, res, callback) { + if (!callback) { + throw new TypeError("argument callback is required"); + } + debug("dispatching %s %s", req.method, req.url); + let idx = 0; + let methods2; + const protohost = getProtohost(req.url) || ""; + let removed = ""; + const self = this; + let slashAdded = false; + let sync = 0; + const paramcalled = {}; + const stack = this.stack; + const parentParams = req.params; + const parentUrl = req.baseUrl || ""; + let done = restore(callback, req, "baseUrl", "next", "params"); + req.next = next; + if (req.method === "OPTIONS") { + methods2 = []; + done = wrap(done, generateOptionsResponder(res, methods2)); + } + req.baseUrl = parentUrl; + req.originalUrl = req.originalUrl || req.url; + next(); + function next(err) { + let layerError = err === "route" ? null : err; + if (slashAdded) { + req.url = req.url.slice(1); + slashAdded = false; + } + if (removed.length !== 0) { + req.baseUrl = parentUrl; + req.url = protohost + removed + req.url.slice(protohost.length); + removed = ""; + } + if (layerError === "router") { + setImmediate(done, null); + return; + } + if (idx >= stack.length) { + setImmediate(done, layerError); + return; + } + if (++sync > 100) { + return setImmediate(next, err); + } + const path = getPathname(req); + if (path == null) { + return done(layerError); + } + let layer; + let match; + let route; + while (match !== true && idx < stack.length) { + layer = stack[idx++]; + match = matchLayer(layer, path); + route = layer.route; + if (typeof match !== "boolean") { + layerError = layerError || match; + } + if (match !== true) { + continue; + } + if (!route) { + continue; + } + if (layerError) { + match = false; + continue; + } + const method = req.method; + const hasMethod = route._handlesMethod(method); + if (!hasMethod && method === "OPTIONS" && methods2) { + methods2.push.apply(methods2, route._methods()); + } + if (!hasMethod && method !== "HEAD") { + match = false; + } + } + if (match !== true) { + return done(layerError); + } + if (route) { + req.route = route; + } + req.params = self.mergeParams ? mergeParams(layer.params, parentParams) : layer.params; + const layerPath = layer.path; + processParams(self.params, layer, paramcalled, req, res, function(err2) { + if (err2) { + next(layerError || err2); + } else if (route) { + layer.handleRequest(req, res, next); + } else { + trimPrefix(layer, layerError, layerPath, path); + } + sync = 0; + }); + } + __name(next, "next"); + function trimPrefix(layer, layerError, layerPath, path) { + if (layerPath.length !== 0) { + if (layerPath !== path.substring(0, layerPath.length)) { + next(layerError); + return; + } + const c = path[layerPath.length]; + if (c && c !== "/") { + next(layerError); + return; + } + debug("trim prefix (%s) from url %s", layerPath, req.url); + removed = layerPath; + req.url = protohost + req.url.slice(protohost.length + removed.length); + if (!protohost && req.url[0] !== "/") { + req.url = "/" + req.url; + slashAdded = true; + } + req.baseUrl = parentUrl + (removed[removed.length - 1] === "/" ? removed.substring(0, removed.length - 1) : removed); + } + debug("%s %s : %s", layer.name, layerPath, req.originalUrl); + if (layerError) { + layer.handleError(layerError, req, res, next); + } else { + layer.handleRequest(req, res, next); + } + } + __name(trimPrefix, "trimPrefix"); + }, "handle"); + Router.prototype.use = /* @__PURE__ */ __name(function use(handler) { + let offset = 0; + let path = "/"; + if (typeof handler !== "function") { + let arg = handler; + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + if (typeof arg !== "function") { + offset = 1; + path = handler; + } + } + const callbacks = flatten2.call(slice.call(arguments, offset), Infinity); + if (callbacks.length === 0) { + throw new TypeError("argument handler is required"); + } + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("argument handler must be a function"); + } + debug("use %o %s", path, fn.name || ""); + const layer = new Layer(path, { + sensitive: this.caseSensitive, + strict: false, + end: false + }, fn); + layer.route = void 0; + this.stack.push(layer); + } + return this; + }, "use"); + Router.prototype.route = /* @__PURE__ */ __name(function route(path) { + const route2 = new Route(path); + const layer = new Layer(path, { + sensitive: this.caseSensitive, + strict: this.strict, + end: true + }, handle); + function handle(req, res, next) { + route2.dispatch(req, res, next); + } + __name(handle, "handle"); + layer.route = route2; + this.stack.push(layer); + return route2; + }, "route"); + methods.concat("all").forEach(function(method) { + Router.prototype[method] = function(path) { + const route = this.route(path); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; + }); + function generateOptionsResponder(res, methods2) { + return /* @__PURE__ */ __name(function onDone(fn, err) { + if (err || methods2.length === 0) { + return fn(err); + } + trySendOptionsResponse(res, methods2, fn); + }, "onDone"); + } + __name(generateOptionsResponder, "generateOptionsResponder"); + function getPathname(req) { + try { + return parseUrl(req).pathname; + } catch (err) { + return void 0; + } + } + __name(getPathname, "getPathname"); + function getProtohost(url) { + if (typeof url !== "string" || url.length === 0 || url[0] === "/") { + return void 0; + } + const searchIndex = url.indexOf("?"); + const pathLength = searchIndex !== -1 ? searchIndex : url.length; + const fqdnIndex = url.substring(0, pathLength).indexOf("://"); + return fqdnIndex !== -1 ? url.substring(0, url.indexOf("/", 3 + fqdnIndex)) : void 0; + } + __name(getProtohost, "getProtohost"); + function matchLayer(layer, path) { + try { + return layer.match(path); + } catch (err) { + return err; + } + } + __name(matchLayer, "matchLayer"); + function mergeParams(params, parent) { + if (typeof parent !== "object" || !parent) { + return params; + } + const obj = Object.assign({}, parent); + if (!(0 in params) || !(0 in parent)) { + return Object.assign(obj, params); + } + let i = 0; + let o = 0; + while (i in params) { + i++; + } + while (o in parent) { + o++; + } + for (i--; i >= 0; i--) { + params[i + o] = params[i]; + if (i < o) { + delete params[i]; + } + } + return Object.assign(obj, params); + } + __name(mergeParams, "mergeParams"); + function processParams(params, layer, called, req, res, done) { + const keys = layer.keys; + if (!keys || keys.length === 0) { + return done(); + } + let i = 0; + let paramIndex = 0; + let key; + let paramVal; + let paramCallbacks; + let paramCalled; + function param(err) { + if (err) { + return done(err); + } + if (i >= keys.length) { + return done(); + } + paramIndex = 0; + key = keys[i++]; + paramVal = req.params[key]; + paramCallbacks = params[key]; + paramCalled = called[key]; + if (paramVal === void 0 || !paramCallbacks) { + return param(); + } + if (paramCalled && (paramCalled.match === paramVal || paramCalled.error && paramCalled.error !== "route")) { + req.params[key] = paramCalled.value; + return param(paramCalled.error); + } + called[key] = paramCalled = { + error: null, + match: paramVal, + value: paramVal + }; + paramCallback(); + } + __name(param, "param"); + function paramCallback(err) { + const fn = paramCallbacks[paramIndex++]; + paramCalled.value = req.params[key]; + if (err) { + paramCalled.error = err; + param(err); + return; + } + if (!fn) return param(); + try { + const ret = fn(req, res, paramCallback, paramVal, key); + if (isPromise(ret)) { + if (!(ret instanceof Promise)) { + deprecate("parameters that are Promise-like are deprecated, use a native Promise instead"); + } + ret.then(null, function(error) { + paramCallback(error || new Error("Rejected promise")); + }); + } + } catch (e) { + paramCallback(e); + } + } + __name(paramCallback, "paramCallback"); + param(); + } + __name(processParams, "processParams"); + function restore(fn, obj) { + const props = new Array(arguments.length - 2); + const vals = new Array(arguments.length - 2); + for (let i = 0; i < props.length; i++) { + props[i] = arguments[i + 2]; + vals[i] = obj[props[i]]; + } + return function() { + for (let i = 0; i < props.length; i++) { + obj[props[i]] = vals[i]; + } + return fn.apply(this, arguments); + }; + } + __name(restore, "restore"); + function sendOptionsResponse(res, methods2) { + const options = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < methods2.length; i++) { + options[methods2[i]] = true; + } + const allow = Object.keys(options).sort().join(", "); + res.setHeader("Allow", allow); + res.setHeader("Content-Length", Buffer.byteLength(allow)); + res.setHeader("Content-Type", "text/plain"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.end(allow); + } + __name(sendOptionsResponse, "sendOptionsResponse"); + function trySendOptionsResponse(res, methods2, next) { + try { + sendOptionsResponse(res, methods2); + } catch (err) { + next(err); + } + } + __name(trySendOptionsResponse, "trySendOptionsResponse"); + function wrap(old, fn) { + return /* @__PURE__ */ __name(function proxy() { + const args = new Array(arguments.length + 1); + args[0] = old; + for (let i = 0, len = arguments.length; i < len; i++) { + args[i + 1] = arguments[i]; + } + fn.apply(this, args); + }, "proxy"); + } + __name(wrap, "wrap"); + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/application.js +var require_application = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/application.js"(exports, module) { + "use strict"; + var finalhandler = require_finalhandler(); + var debug = require_src()("express:application"); + var View = require_view(); + var http2 = __require("node:http"); + var methods = require_utils3().methods; + var compileETag = require_utils3().compileETag; + var compileQueryParser = require_utils3().compileQueryParser; + var compileTrust = require_utils3().compileTrust; + var resolve = __require("node:path").resolve; + var once = require_once(); + var Router = require_router(); + var slice = Array.prototype.slice; + var flatten2 = Array.prototype.flat; + var app = exports = module.exports = {}; + var trustProxyDefaultSymbol = "@@symbol:trust_proxy_default"; + app.init = /* @__PURE__ */ __name(function init() { + var router = null; + this.cache = /* @__PURE__ */ Object.create(null); + this.engines = /* @__PURE__ */ Object.create(null); + this.settings = /* @__PURE__ */ Object.create(null); + this.defaultConfiguration(); + Object.defineProperty(this, "router", { + configurable: true, + enumerable: true, + get: /* @__PURE__ */ __name(function getrouter() { + if (router === null) { + router = new Router({ + caseSensitive: this.enabled("case sensitive routing"), + strict: this.enabled("strict routing") + }); + } + return router; + }, "getrouter") + }); + }, "init"); + app.defaultConfiguration = /* @__PURE__ */ __name(function defaultConfiguration() { + var env = process.env.NODE_ENV || "development"; + this.enable("x-powered-by"); + this.set("etag", "weak"); + this.set("env", env); + this.set("query parser", "simple"); + this.set("subdomain offset", 2); + this.set("trust proxy", false); + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: true + }); + debug("booting in %s mode", env); + this.on("mount", /* @__PURE__ */ __name(function onmount(parent) { + if (this.settings[trustProxyDefaultSymbol] === true && typeof parent.settings["trust proxy fn"] === "function") { + delete this.settings["trust proxy"]; + delete this.settings["trust proxy fn"]; + } + Object.setPrototypeOf(this.request, parent.request); + Object.setPrototypeOf(this.response, parent.response); + Object.setPrototypeOf(this.engines, parent.engines); + Object.setPrototypeOf(this.settings, parent.settings); + }, "onmount")); + this.locals = /* @__PURE__ */ Object.create(null); + this.mountpath = "/"; + this.locals.settings = this.settings; + this.set("view", View); + this.set("views", resolve("views")); + this.set("jsonp callback name", "callback"); + if (env === "production") { + this.enable("view cache"); + } + }, "defaultConfiguration"); + app.handle = /* @__PURE__ */ __name(function handle(req, res, callback) { + var done = callback || finalhandler(req, res, { + env: this.get("env"), + onerror: logerror.bind(this) + }); + if (this.enabled("x-powered-by")) { + res.setHeader("X-Powered-By", "Express"); + } + req.res = res; + res.req = req; + Object.setPrototypeOf(req, this.request); + Object.setPrototypeOf(res, this.response); + if (!res.locals) { + res.locals = /* @__PURE__ */ Object.create(null); + } + this.router.handle(req, res, done); + }, "handle"); + app.use = /* @__PURE__ */ __name(function use(fn) { + var offset = 0; + var path = "/"; + if (typeof fn !== "function") { + var arg = fn; + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + if (typeof arg !== "function") { + offset = 1; + path = fn; + } + } + var fns = flatten2.call(slice.call(arguments, offset), Infinity); + if (fns.length === 0) { + throw new TypeError("app.use() requires a middleware function"); + } + var router = this.router; + fns.forEach(function(fn2) { + if (!fn2 || !fn2.handle || !fn2.set) { + return router.use(path, fn2); + } + debug(".use app under %s", path); + fn2.mountpath = path; + fn2.parent = this; + router.use(path, /* @__PURE__ */ __name(function mounted_app(req, res, next) { + var orig = req.app; + fn2.handle(req, res, function(err) { + Object.setPrototypeOf(req, orig.request); + Object.setPrototypeOf(res, orig.response); + next(err); + }); + }, "mounted_app")); + fn2.emit("mount", this); + }, this); + return this; + }, "use"); + app.route = /* @__PURE__ */ __name(function route(path) { + return this.router.route(path); + }, "route"); + app.engine = /* @__PURE__ */ __name(function engine(ext, fn) { + if (typeof fn !== "function") { + throw new Error("callback function required"); + } + var extension = ext[0] !== "." ? "." + ext : ext; + this.engines[extension] = fn; + return this; + }, "engine"); + app.param = /* @__PURE__ */ __name(function param(name, fn) { + if (Array.isArray(name)) { + for (var i = 0; i < name.length; i++) { + this.param(name[i], fn); + } + return this; + } + this.router.param(name, fn); + return this; + }, "param"); + app.set = /* @__PURE__ */ __name(function set(setting, val) { + if (arguments.length === 1) { + return this.settings[setting]; + } + debug('set "%s" to %o', setting, val); + this.settings[setting] = val; + switch (setting) { + case "etag": + this.set("etag fn", compileETag(val)); + break; + case "query parser": + this.set("query parser fn", compileQueryParser(val)); + break; + case "trust proxy": + this.set("trust proxy fn", compileTrust(val)); + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: false + }); + break; + } + return this; + }, "set"); + app.path = /* @__PURE__ */ __name(function path() { + return this.parent ? this.parent.path() + this.mountpath : ""; + }, "path"); + app.enabled = /* @__PURE__ */ __name(function enabled(setting) { + return Boolean(this.set(setting)); + }, "enabled"); + app.disabled = /* @__PURE__ */ __name(function disabled(setting) { + return !this.set(setting); + }, "disabled"); + app.enable = /* @__PURE__ */ __name(function enable(setting) { + return this.set(setting, true); + }, "enable"); + app.disable = /* @__PURE__ */ __name(function disable(setting) { + return this.set(setting, false); + }, "disable"); + methods.forEach(function(method) { + app[method] = function(path) { + if (method === "get" && arguments.length === 1) { + return this.set(path); + } + var route = this.route(path); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; + }); + app.all = /* @__PURE__ */ __name(function all(path) { + var route = this.route(path); + var args = slice.call(arguments, 1); + for (var i = 0; i < methods.length; i++) { + route[methods[i]].apply(route, args); + } + return this; + }, "all"); + app.render = /* @__PURE__ */ __name(function render(name, options, callback) { + var cache = this.cache; + var done = callback; + var engines = this.engines; + var opts = options || {}; + var view; + if (typeof options === "function") { + done = options; + opts = {}; + } + var renderOptions = { ...this.locals, ...opts._locals, ...opts }; + if (renderOptions.cache == null) { + renderOptions.cache = this.enabled("view cache"); + } + if (renderOptions.cache) { + view = cache[name]; + } + if (!view) { + var View2 = this.get("view"); + view = new View2(name, { + defaultEngine: this.get("view engine"), + root: this.get("views"), + engines + }); + if (!view.path) { + var dirs = Array.isArray(view.root) && view.root.length > 1 ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' : 'directory "' + view.root + '"'; + var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); + err.view = view; + return done(err); + } + if (renderOptions.cache) { + cache[name] = view; + } + } + tryRender(view, renderOptions, done); + }, "render"); + app.listen = /* @__PURE__ */ __name(function listen() { + var server = http2.createServer(this); + var args = slice.call(arguments); + if (typeof args[args.length - 1] === "function") { + var done = args[args.length - 1] = once(args[args.length - 1]); + server.once("error", done); + } + return server.listen.apply(server, args); + }, "listen"); + function logerror(err) { + if (this.get("env") !== "test") console.error(err); + } + __name(logerror, "logerror"); + function tryRender(view, options, callback) { + try { + view.render(options, callback); + } catch (err) { + callback(err); + } + } + __name(tryRender, "tryRender"); + } +}); + +// ../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/accept.js +var require_accept = __commonJS({ + "../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/accept.js"(exports, module) { + "use strict"; + var contentType = require_dist(); + module.exports = parseAccept; + function parseAccept(header) { + var values = []; + var index = 0; + while (index < header.length) { + var start = skipOptionalWhitespace(header, index); + var parsed = contentType.parse(header, { comma: true, start }); + parsed.type = header.slice(start, start + parsed.type.length); + values.push(parsed); + index = parsed.index + 1; + } + return values; + } + __name(parseAccept, "parseAccept"); + function skipOptionalWhitespace(header, index) { + var cursor = index; + while (header.charCodeAt(cursor) === 32 || header.charCodeAt(cursor) === 9) { + cursor++; + } + return cursor; + } + __name(skipOptionalWhitespace, "skipOptionalWhitespace"); + } +}); + +// ../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/charset.js +var require_charset = __commonJS({ + "../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/charset.js"(exports, module) { + "use strict"; + var parseAccept = require_accept(); + module.exports = preferredCharsets; + module.exports.preferredCharsets = preferredCharsets; + function parseAcceptCharset(accept) { + var accepts = parseAccept(accept); + for (var i = 0, j = 0; i < accepts.length; i++) { + var charset = formatCharset(accepts[i], i); + if (charset) accepts[j++] = charset; + } + accepts.length = j; + return accepts; + } + __name(parseAcceptCharset, "parseAcceptCharset"); + function formatCharset(parsed, i) { + if (!parsed.type) return null; + return { + charset: parsed.type, + q: parsed.parameters.q ? parseFloat(parsed.parameters.q) : 1, + i + }; + } + __name(formatCharset, "formatCharset"); + function getCharsetPriority(charset, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(charset, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + __name(getCharsetPriority, "getCharsetPriority"); + function specify(charset, spec, index) { + var s = 0; + if (spec.charset.toLowerCase() === charset.toLowerCase()) { + s |= 1; + } else if (spec.charset !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + __name(specify, "specify"); + function preferredCharsets(accept, provided) { + var accepts = parseAcceptCharset(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset); + } + var priorities = provided.map(/* @__PURE__ */ __name(function getPriority(type, index) { + return getCharsetPriority(type, accepts, index); + }, "getPriority")); + return priorities.filter(isQuality).sort(compareSpecs).map(/* @__PURE__ */ __name(function getCharset(priority) { + return provided[priorities.indexOf(priority)]; + }, "getCharset")); + } + __name(preferredCharsets, "preferredCharsets"); + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + __name(compareSpecs, "compareSpecs"); + function getFullCharset(spec) { + return spec.charset; + } + __name(getFullCharset, "getFullCharset"); + function isQuality(spec) { + return spec.q > 0; + } + __name(isQuality, "isQuality"); + } +}); + +// ../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/encoding.js +var require_encoding = __commonJS({ + "../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/encoding.js"(exports, module) { + "use strict"; + var parseAccept = require_accept(); + module.exports = preferredEncodings; + module.exports.preferredEncodings = preferredEncodings; + function parseAcceptEncoding(accept) { + var accepts = parseAccept(accept); + var hasIdentity = false; + var minQuality = 1; + for (var i = 0, j = 0; i < accepts.length; i++) { + var encoding = formatEncoding(accepts[i], i); + if (encoding) { + accepts[j++] = encoding; + hasIdentity = hasIdentity || specify("identity", encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + if (!hasIdentity) { + accepts[j++] = { + encoding: "identity", + q: minQuality, + i + }; + } + accepts.length = j; + return accepts; + } + __name(parseAcceptEncoding, "parseAcceptEncoding"); + function formatEncoding(parsed, i) { + if (!parsed.type) return null; + return { + encoding: parsed.type, + q: parsed.parameters.q ? parseFloat(parsed.parameters.q) : 1, + i + }; + } + __name(formatEncoding, "formatEncoding"); + function getEncodingPriority(encoding, accepted, index) { + var priority = { encoding, o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(encoding, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + __name(getEncodingPriority, "getEncodingPriority"); + function specify(encoding, spec, index) { + var s = 0; + if (spec.encoding.toLowerCase() === encoding.toLowerCase()) { + s |= 1; + } else if (spec.encoding !== "*") { + return null; + } + return { + encoding, + i: index, + o: spec.i, + q: spec.q, + s + }; + } + __name(specify, "specify"); + function preferredEncodings(accept, provided, preferred) { + var accepts = parseAcceptEncoding(accept || ""); + var comparator = preferred ? /* @__PURE__ */ __name(function comparator2(a, b) { + if (a.q !== b.q) { + return b.q - a.q; + } + var aPreferred = preferred.indexOf(a.encoding); + var bPreferred = preferred.indexOf(b.encoding); + if (aPreferred === -1 && bPreferred === -1) { + return b.s - a.s || a.o - b.o || a.i - b.i; + } + if (aPreferred !== -1 && bPreferred !== -1) { + return aPreferred - bPreferred; + } + return aPreferred === -1 ? 1 : -1; + }, "comparator") : compareSpecs; + if (!provided) { + return accepts.filter(isQuality).sort(comparator).map(getFullEncoding); + } + var priorities = provided.map(/* @__PURE__ */ __name(function getPriority(type, index) { + return getEncodingPriority(type, accepts, index); + }, "getPriority")); + return priorities.filter(isQuality).sort(comparator).map(/* @__PURE__ */ __name(function getEncoding(priority) { + return provided[priorities.indexOf(priority)]; + }, "getEncoding")); + } + __name(preferredEncodings, "preferredEncodings"); + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i; + } + __name(compareSpecs, "compareSpecs"); + function getFullEncoding(spec) { + return spec.encoding; + } + __name(getFullEncoding, "getFullEncoding"); + function isQuality(spec) { + return spec.q > 0; + } + __name(isQuality, "isQuality"); + } +}); + +// ../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/language.js +var require_language = __commonJS({ + "../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/language.js"(exports, module) { + "use strict"; + var contentType = require_dist(); + var parseAccept = require_accept(); + module.exports = preferredLanguages; + module.exports.preferredLanguages = preferredLanguages; + function parseAcceptLanguage(accept) { + var accepts = parseAccept(accept); + for (var i = 0, j = 0; i < accepts.length; i++) { + var language = formatLanguage(accepts[i], i); + if (language) accepts[j++] = language; + } + accepts.length = j; + return accepts; + } + __name(parseAcceptLanguage, "parseAcceptLanguage"); + function formatLanguage(parsed, i) { + if (!parsed.type) return null; + var hyphen = parsed.type.indexOf("-"); + var prefix = hyphen === -1 ? parsed.type : parsed.type.slice(0, hyphen); + var suffix = hyphen === -1 ? void 0 : parsed.type.slice(hyphen + 1); + return { + prefix, + suffix, + q: parsed.parameters.q ? parseFloat(parsed.parameters.q) : 1, + i, + full: parsed.type + }; + } + __name(formatLanguage, "formatLanguage"); + function getLanguagePriority(language, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(language, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + __name(getLanguagePriority, "getLanguagePriority"); + function specify(language, spec, index) { + var p = formatLanguage(contentType.parse(language), 0); + if (!p) return null; + var s = 0; + if (spec.full.toLowerCase() === p.full.toLowerCase()) { + s |= 4; + } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + __name(specify, "specify"); + function preferredLanguages(accept, provided) { + var accepts = parseAcceptLanguage(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage); + } + var priorities = provided.map(/* @__PURE__ */ __name(function getPriority(type, index) { + return getLanguagePriority(type, accepts, index); + }, "getPriority")); + return priorities.filter(isQuality).sort(compareSpecs).map(/* @__PURE__ */ __name(function getLanguage(priority) { + return provided[priorities.indexOf(priority)]; + }, "getLanguage")); + } + __name(preferredLanguages, "preferredLanguages"); + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + __name(compareSpecs, "compareSpecs"); + function getFullLanguage(spec) { + return spec.full; + } + __name(getFullLanguage, "getFullLanguage"); + function isQuality(spec) { + return spec.q > 0; + } + __name(isQuality, "isQuality"); + } +}); + +// ../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/mediaType.js +var require_mediaType = __commonJS({ + "../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/lib/mediaType.js"(exports, module) { + "use strict"; + var contentType = require_dist(); + var parseAcceptHeader = require_accept(); + module.exports = preferredMediaTypes; + module.exports.preferredMediaTypes = preferredMediaTypes; + function parseAccept(accept) { + var accepts = parseAcceptHeader(accept); + for (var i = 0, j = 0; i < accepts.length; i++) { + var mediaType = formatMediaType(accepts[i], i); + if (mediaType) accepts[j++] = mediaType; + } + accepts.length = j; + return accepts; + } + __name(parseAccept, "parseAccept"); + function formatMediaType(parsed, i) { + var slash = parsed.type.indexOf("/"); + if (slash === -1) return null; + var q = parsed.parameters.q ? parseFloat(parsed.parameters.q) : 1; + delete parsed.parameters.q; + return { + type: parsed.type.slice(0, slash), + subtype: parsed.type.slice(slash + 1), + params: parsed.parameters, + q, + i + }; + } + __name(formatMediaType, "formatMediaType"); + function getMediaTypePriority(type, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(type, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + __name(getMediaTypePriority, "getMediaTypePriority"); + function specify(type, spec, index) { + var p = formatMediaType(contentType.parse(type), 0); + var s = 0; + if (!p) { + return null; + } + if (spec.type.toLowerCase() == p.type.toLowerCase()) { + s |= 4; + } else if (spec.type != "*") { + return null; + } + if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { + s |= 2; + } else if (spec.subtype != "*") { + return null; + } + var keys = Object.keys(spec.params); + if (keys.length > 0) { + if (keys.every(function(k) { + return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p.params[k] || "").toLowerCase(); + })) { + s |= 1; + } else { + return null; + } + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + __name(specify, "specify"); + function preferredMediaTypes(accept, provided) { + var accepts = parseAccept(accept === void 0 ? "*/*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullType); + } + var priorities = provided.map(/* @__PURE__ */ __name(function getPriority(type, index) { + return getMediaTypePriority(type, accepts, index); + }, "getPriority")); + return priorities.filter(isQuality).sort(compareSpecs).map(/* @__PURE__ */ __name(function getType(priority) { + return provided[priorities.indexOf(priority)]; + }, "getType")); + } + __name(preferredMediaTypes, "preferredMediaTypes"); + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + __name(compareSpecs, "compareSpecs"); + function getFullType(spec) { + return spec.type + "/" + spec.subtype; + } + __name(getFullType, "getFullType"); + function isQuality(spec) { + return spec.q > 0; + } + __name(isQuality, "isQuality"); + } +}); + +// ../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/index.js +var require_negotiator = __commonJS({ + "../../node_modules/.pnpm/negotiator@1.1.0/node_modules/negotiator/index.js"(exports, module) { + "use strict"; + var preferredCharsets = require_charset(); + var preferredEncodings = require_encoding(); + var preferredLanguages = require_language(); + var preferredMediaTypes = require_mediaType(); + module.exports = Negotiator; + module.exports.Negotiator = Negotiator; + function Negotiator(request) { + if (!(this instanceof Negotiator)) { + return new Negotiator(request); + } + this.request = request; + } + __name(Negotiator, "Negotiator"); + Negotiator.prototype.charset = /* @__PURE__ */ __name(function charset(available) { + var set = this.charsets(available); + return set && set[0]; + }, "charset"); + Negotiator.prototype.charsets = /* @__PURE__ */ __name(function charsets(available) { + return preferredCharsets(this.request.headers["accept-charset"], available); + }, "charsets"); + Negotiator.prototype.encoding = /* @__PURE__ */ __name(function encoding(available, opts) { + var set = this.encodings(available, opts); + return set && set[0]; + }, "encoding"); + Negotiator.prototype.encodings = /* @__PURE__ */ __name(function encodings(available, options) { + var opts = options || {}; + return preferredEncodings(this.request.headers["accept-encoding"], available, opts.preferred); + }, "encodings"); + Negotiator.prototype.language = /* @__PURE__ */ __name(function language(available) { + var set = this.languages(available); + return set && set[0]; + }, "language"); + Negotiator.prototype.languages = /* @__PURE__ */ __name(function languages(available) { + return preferredLanguages(this.request.headers["accept-language"], available); + }, "languages"); + Negotiator.prototype.mediaType = /* @__PURE__ */ __name(function mediaType(available) { + var set = this.mediaTypes(available); + return set && set[0]; + }, "mediaType"); + Negotiator.prototype.mediaTypes = /* @__PURE__ */ __name(function mediaTypes(available) { + return preferredMediaTypes(this.request.headers.accept, available); + }, "mediaTypes"); + Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; + Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; + Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; + Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; + Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; + Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; + Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; + Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; + } +}); + +// ../../node_modules/.pnpm/accepts@2.0.0/node_modules/accepts/index.js +var require_accepts = __commonJS({ + "../../node_modules/.pnpm/accepts@2.0.0/node_modules/accepts/index.js"(exports, module) { + "use strict"; + var Negotiator = require_negotiator(); + var mime = require_mime_types(); + module.exports = Accepts; + function Accepts(req) { + if (!(this instanceof Accepts)) { + return new Accepts(req); + } + this.headers = req.headers; + this.negotiator = new Negotiator(req); + } + __name(Accepts, "Accepts"); + Accepts.prototype.type = Accepts.prototype.types = function(types_) { + var types = types_; + if (types && !Array.isArray(types)) { + types = new Array(arguments.length); + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i]; + } + } + if (!types || types.length === 0) { + return this.negotiator.mediaTypes(); + } + if (!this.headers.accept) { + return types[0]; + } + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + return first ? types[mimes.indexOf(first)] : false; + }; + Accepts.prototype.encoding = Accepts.prototype.encodings = function(encodings_) { + var encodings = encodings_; + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length); + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i]; + } + } + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings(); + } + return this.negotiator.encodings(encodings)[0] || false; + }; + Accepts.prototype.charset = Accepts.prototype.charsets = function(charsets_) { + var charsets = charsets_; + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length); + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i]; + } + } + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets(); + } + return this.negotiator.charsets(charsets)[0] || false; + }; + Accepts.prototype.lang = Accepts.prototype.langs = Accepts.prototype.language = Accepts.prototype.languages = function(languages_) { + var languages = languages_; + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length); + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i]; + } + } + if (!languages || languages.length === 0) { + return this.negotiator.languages(); + } + return this.negotiator.languages(languages)[0] || false; + }; + function extToMime(type) { + return type.indexOf("/") === -1 ? mime.lookup(type) : type; + } + __name(extToMime, "extToMime"); + function validMime(type) { + return typeof type === "string"; + } + __name(validMime, "validMime"); + } +}); + +// ../../node_modules/.pnpm/fresh@2.0.0/node_modules/fresh/index.js +var require_fresh = __commonJS({ + "../../node_modules/.pnpm/fresh@2.0.0/node_modules/fresh/index.js"(exports, module) { + "use strict"; + var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/; + module.exports = fresh; + function fresh(reqHeaders, resHeaders) { + var modifiedSince = reqHeaders["if-modified-since"]; + var noneMatch = reqHeaders["if-none-match"]; + if (!modifiedSince && !noneMatch) { + return false; + } + var cacheControl = reqHeaders["cache-control"]; + if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) { + return false; + } + if (noneMatch) { + if (noneMatch === "*") { + return true; + } + var etag = resHeaders.etag; + if (!etag) { + return false; + } + var matches = parseTokenList(noneMatch); + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + if (match === etag || match === "W/" + etag || "W/" + match === etag) { + return true; + } + } + return false; + } + if (modifiedSince) { + var lastModified = resHeaders["last-modified"]; + var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince)); + if (modifiedStale) { + return false; + } + } + return true; + } + __name(fresh, "fresh"); + function parseHttpDate(date) { + var timestamp = date && Date.parse(date); + return typeof timestamp === "number" ? timestamp : NaN; + } + __name(parseHttpDate, "parseHttpDate"); + function parseTokenList(str) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(str.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(str.substring(start, end)); + return list; + } + __name(parseTokenList, "parseTokenList"); + } +}); + +// ../../node_modules/.pnpm/range-parser@1.3.0/node_modules/range-parser/index.js +var require_range_parser = __commonJS({ + "../../node_modules/.pnpm/range-parser@1.3.0/node_modules/range-parser/index.js"(exports, module) { + "use strict"; + module.exports = rangeParser; + function rangeParser(size, str, options) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var index = str.indexOf("="); + if (index === -1) { + return -2; + } + var arr = str.slice(index + 1).split(","); + var ranges = []; + ranges.type = str.slice(0, index); + for (var i = 0; i < arr.length; i++) { + var indexOf = arr[i].indexOf("-"); + if (indexOf === -1) { + return -2; + } + var startStr = arr[i].slice(0, indexOf).trim(); + var endStr = arr[i].slice(indexOf + 1).trim(); + var start = parsePos(startStr); + var end = parsePos(endStr); + if (startStr.length === 0) { + start = size - end; + end = size - 1; + } else if (endStr.length === 0) { + end = size - 1; + } + if (end > size - 1) { + end = size - 1; + } + if (isNaN(start) || isNaN(end)) { + return -2; + } + if (start > end || start < 0) { + continue; + } + ranges.push({ + start, + end + }); + } + if (ranges.length < 1) { + return -1; + } + return options && options.combine ? combineRanges(ranges) : ranges; + } + __name(rangeParser, "rangeParser"); + function parsePos(str) { + if (/^\d+$/.test(str)) return Number(str); + return NaN; + } + __name(parsePos, "parsePos"); + function combineRanges(ranges) { + var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart); + for (var j = 0, i = 1; i < ordered.length; i++) { + var range = ordered[i]; + var current = ordered[j]; + if (range.start > current.end + 1) { + ordered[++j] = range; + } else if (range.end > current.end) { + current.end = range.end; + current.index = Math.min(current.index, range.index); + } + } + ordered.length = j + 1; + var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex); + combined.type = ranges.type; + return combined; + } + __name(combineRanges, "combineRanges"); + function mapWithIndex(range, index) { + return { + start: range.start, + end: range.end, + index + }; + } + __name(mapWithIndex, "mapWithIndex"); + function mapWithoutIndex(range) { + return { + start: range.start, + end: range.end + }; + } + __name(mapWithoutIndex, "mapWithoutIndex"); + function sortByRangeIndex(a, b) { + return a.index - b.index; + } + __name(sortByRangeIndex, "sortByRangeIndex"); + function sortByRangeStart(a, b) { + return a.start - b.start; + } + __name(sortByRangeStart, "sortByRangeStart"); + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/request.js +var require_request = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/request.js"(exports, module) { + "use strict"; + var accepts = require_accepts(); + var isIP = __require("node:net").isIP; + var typeis = require_type_is(); + var http2 = __require("node:http"); + var fresh = require_fresh(); + var parseRange = require_range_parser(); + var parse = require_parseurl(); + var proxyaddr = require_proxy_addr(); + var req = Object.create(http2.IncomingMessage.prototype); + module.exports = req; + req.get = req.header = /* @__PURE__ */ __name(function header(name) { + if (!name) { + throw new TypeError("name argument is required to req.get"); + } + if (typeof name !== "string") { + throw new TypeError("name must be a string to req.get"); + } + var lc = name.toLowerCase(); + switch (lc) { + case "referer": + case "referrer": + return this.headers.referrer || this.headers.referer; + default: + return this.headers[lc]; + } + }, "header"); + req.accepts = function() { + var accept = accepts(this); + return accept.types.apply(accept, arguments); + }; + req.acceptsEncodings = function() { + var accept = accepts(this); + return accept.encodings.apply(accept, arguments); + }; + req.acceptsCharsets = function(...charsets) { + const accept = accepts(this); + return accept.charsets(...charsets); + }; + req.acceptsLanguages = function(...languages) { + return accepts(this).languages(...languages); + }; + req.range = /* @__PURE__ */ __name(function range(size, options) { + var range2 = this.get("Range"); + if (!range2) return; + return parseRange(size, range2, options); + }, "range"); + defineGetter(req, "query", /* @__PURE__ */ __name(function query() { + var queryparse = this.app.get("query parser fn"); + if (!queryparse) { + return /* @__PURE__ */ Object.create(null); + } + var querystring = parse(this).query; + return queryparse(querystring); + }, "query")); + req.is = /* @__PURE__ */ __name(function is(types) { + var arr = types; + if (!Array.isArray(types)) { + arr = new Array(arguments.length); + for (var i = 0; i < arr.length; i++) { + arr[i] = arguments[i]; + } + } + return typeis(this, arr); + }, "is"); + defineGetter(req, "protocol", /* @__PURE__ */ __name(function protocol() { + var proto = this.socket.encrypted ? "https" : "http"; + var trust = this.app.get("trust proxy fn"); + if (!trust(this.socket.remoteAddress, 0)) { + return proto; + } + var header = this.get("X-Forwarded-Proto") || proto; + var index = header.indexOf(","); + return index !== -1 ? header.substring(0, index).trim() : header.trim(); + }, "protocol")); + defineGetter(req, "secure", /* @__PURE__ */ __name(function secure() { + return this.protocol === "https"; + }, "secure")); + defineGetter(req, "ip", /* @__PURE__ */ __name(function ip() { + var trust = this.app.get("trust proxy fn"); + return proxyaddr(this, trust); + }, "ip")); + defineGetter(req, "ips", /* @__PURE__ */ __name(function ips() { + var trust = this.app.get("trust proxy fn"); + var addrs = proxyaddr.all(this, trust); + addrs.reverse().pop(); + return addrs; + }, "ips")); + defineGetter(req, "subdomains", /* @__PURE__ */ __name(function subdomains() { + var hostname = this.hostname; + if (!hostname) return []; + var offset = this.app.get("subdomain offset"); + var subdomains2 = !isIP(hostname) ? hostname.split(".").reverse() : [hostname]; + return subdomains2.slice(offset); + }, "subdomains")); + defineGetter(req, "path", /* @__PURE__ */ __name(function path() { + return parse(this).pathname; + }, "path")); + defineGetter(req, "host", /* @__PURE__ */ __name(function host() { + var trust = this.app.get("trust proxy fn"); + var val = this.get("X-Forwarded-Host"); + if (!val || !trust(this.socket.remoteAddress, 0)) { + val = this.get("Host"); + } else if (val.indexOf(",") !== -1) { + val = val.substring(0, val.indexOf(",")).trimEnd(); + } + return val || void 0; + }, "host")); + defineGetter(req, "hostname", /* @__PURE__ */ __name(function hostname() { + var host = this.host; + if (!host) return; + var offset = host[0] === "[" ? host.indexOf("]") + 1 : 0; + var index = host.indexOf(":", offset); + return index !== -1 ? host.substring(0, index) : host; + }, "hostname")); + defineGetter(req, "fresh", function() { + var method = this.method; + var res = this.res; + var status = res.statusCode; + if ("GET" !== method && "HEAD" !== method && "QUERY" !== method) return false; + if (status >= 200 && status < 300 || 304 === status) { + return fresh(this.headers, { + "etag": res.get("ETag"), + "last-modified": res.get("Last-Modified") + }); + } + return false; + }); + defineGetter(req, "stale", /* @__PURE__ */ __name(function stale() { + return !this.fresh; + }, "stale")); + defineGetter(req, "xhr", /* @__PURE__ */ __name(function xhr() { + var val = this.get("X-Requested-With") || ""; + return val.toLowerCase() === "xmlhttprequest"; + }, "xhr")); + function defineGetter(obj, name, getter) { + Object.defineProperty(obj, name, { + configurable: true, + enumerable: true, + get: getter + }); + } + __name(defineGetter, "defineGetter"); + } +}); + +// ../../node_modules/.pnpm/content-disposition@2.0.1/node_modules/content-disposition/dist/index.js +var require_dist3 = __commonJS({ + "../../node_modules/.pnpm/content-disposition@2.0.1/node_modules/content-disposition/dist/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.create = create; + exports.parse = parse; + exports.decodeExtended = decodeExtended; + exports.format = format; + exports.encodeExtended = encodeExtended; + var NullObject = /* @__PURE__ */ (() => { + const C = /* @__PURE__ */ __name(function() { + }, "C"); + C.prototype = /* @__PURE__ */ Object.create(null); + return C; + })(); + function create(filename, options) { + const type = options?.type || "attachment"; + const parameters = createParameters(filename, options?.fallback); + return format({ type, parameters }, { extended: false }); + } + __name(create, "create"); + var SP = 32; + var HTAB = 9; + var SEMI = 59; + var EQ = 61; + var DQUOTE = 34; + var BSLASH = 92; + var ASTERISK = 42; + function parse(header, options) { + const len = header.length; + const multipart = options?.multipart === true; + const extended = options?.extended !== false; + let index = skipOWS(header, 0, header.length); + const typeStart = index; + index = parseToken(header, index, len); + const typeEnd = trailingOWS(header, typeStart, index); + const type = header.slice(typeStart, typeEnd).toLowerCase(); + const parameters = new NullObject(); + parameter: while (index < len) { + index = skipOWS(header, index + 1, len); + const keyStart = index; + while (index < len) { + const char = header.charCodeAt(index); + if (char === SEMI) + continue parameter; + if (char === EQ) { + const keyEnd = trailingOWS(header, keyStart, index); + const key = header.slice(keyStart, keyEnd).toLowerCase(); + index = skipOWS(header, index + 1, len); + if (index < len && header.charCodeAt(index) === DQUOTE) { + index++; + let value2 = ""; + if (multipart) { + while (index < len) { + const code = header.charCodeAt(index++); + if (code === DQUOTE) { + index = parseToken(header, index, len); + if (parameters[key] === void 0) + parameters[key] = value2; + break; + } + if (code === /* % */ + 37 && index + 1 < len) { + const code2 = header.charCodeAt(index); + const code3 = header.charCodeAt(index + 1); + if (code2 === 50 && code3 === 50) { + value2 += '"'; + index += 2; + continue; + } + if (code2 === 48) { + if (code3 === 100 || code3 === 68) { + value2 += "\r"; + index += 2; + continue; + } + if (code3 === 97 || code3 === 65) { + value2 += "\n"; + index += 2; + continue; + } + } + } + value2 += String.fromCharCode(code); + } + } else { + while (index < len) { + const code = header.charCodeAt(index++); + if (code === DQUOTE) { + index = parseToken(header, index, len); + if (parameters[key] === void 0) + parameters[key] = value2; + break; + } + if (code === BSLASH && index < len) { + value2 += header[index++]; + continue; + } + value2 += String.fromCharCode(code); + } + } + continue parameter; + } + const valueStart = index; + index = parseToken(header, index, len); + const valueEnd = trailingOWS(header, valueStart, index); + const value = header.slice(valueStart, valueEnd); + if (parameters[key] === void 0) { + parameters[key] = value; + if (extended && key.charCodeAt(key.length - 1) === ASTERISK) { + const normalizedKey = key.slice(0, -1); + const decoded = decodeExtended(value); + if (decoded !== void 0) + parameters[normalizedKey] = decoded; + } + } + continue parameter; + } + index++; + } + } + return { type, parameters }; + } + __name(parse, "parse"); + var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g; + var NON_ASCII_REGEXP = /[^\x20-\x7e]/g; + var QUOTE_REGEXP = /[\\"]/g; + var INVALID_FILENAME_REGEXP = /%[0-9A-Fa-f]{2}/; + var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]*$/; + var ASCII_TEXT_REGEXP = /^[\x20-\x7e]*$/; + var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/; + function createParameters(filename, fallback = true) { + if (filename === void 0) + return; + if (typeof fallback === "string") { + if (!ASCII_TEXT_REGEXP.test(fallback)) { + throw new TypeError("Fallback must be valid US-ASCII: " + fallback); + } + if (fallback === filename) + return { filename }; + return { filename: fallback, "filename*": encodeExtended(filename) }; + } + if (ASCII_TEXT_REGEXP.test(filename) && !INVALID_FILENAME_REGEXP.test(filename)) { + return { filename }; + } + if (fallback === false) { + return { "filename*": encodeExtended(filename) }; + } + return { + filename: getAscii(filename), + "filename*": encodeExtended(filename) + }; + } + __name(createParameters, "createParameters"); + function decodeExtended(str) { + const charsetEnd = str.indexOf("'"); + if (charsetEnd <= 0) { + return void 0; + } + const languageEnd = str.indexOf("'", charsetEnd + 1); + if (languageEnd === -1) { + return void 0; + } + const charset = str.slice(0, charsetEnd).toLowerCase(); + const encoded = str.slice(languageEnd + 1); + switch (charset) { + case "iso-8859-1": { + return decodeHexEscapes(encoded); + } + case "utf-8": + case "utf8": { + return tryDecodeURIComponent(encoded); + } + } + return void 0; + } + __name(decodeExtended, "decodeExtended"); + function tryDecodeURIComponent(str) { + try { + return decodeURIComponent(str); + } catch { + return void 0; + } + } + __name(tryDecodeURIComponent, "tryDecodeURIComponent"); + function parseToken(str, index, len) { + while (index < len) { + const char = str.charCodeAt(index); + if (char === SEMI) + break; + index++; + } + return index; + } + __name(parseToken, "parseToken"); + function skipOWS(str, index, len) { + while (index < len) { + const char = str.charCodeAt(index); + if (char !== SP && char !== HTAB) + break; + index++; + } + return index; + } + __name(skipOWS, "skipOWS"); + function trailingOWS(str, start, end) { + while (end > start) { + const char = str.charCodeAt(end - 1); + if (char !== SP && char !== HTAB) + break; + end--; + } + return end; + } + __name(trailingOWS, "trailingOWS"); + function format(obj, options) { + const { type, parameters } = obj; + const multipart = options?.multipart === true; + const extended = options?.extended !== false; + if (!type || !TOKEN_REGEXP.test(type)) { + throw new TypeError("Invalid type: " + type); + } + let result = type; + if (parameters) { + for (const param of Object.keys(parameters)) { + const value = parameters[param]; + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError("Invalid parameter name: " + param); + } + if (multipart) { + result += "; " + param + "=" + qmultipart(value); + continue; + } + if (TOKEN_REGEXP.test(value)) { + result += "; " + param + "=" + value; + continue; + } + if (TEXT_REGEXP.test(value)) { + result += "; " + param + "=" + qstring(value); + continue; + } + if (!extended) { + throw new TypeError("Invalid parameter value: " + value); + } + result += "; " + param + "*=" + encodeExtended(value); + } + } + return result; + } + __name(format, "format"); + function getAscii(val) { + return val.replace(NON_ASCII_REGEXP, "?"); + } + __name(getAscii, "getAscii"); + function pencode(char) { + return "%" + char.charCodeAt(0).toString(16).toUpperCase(); + } + __name(pencode, "pencode"); + function qstring(str) { + return '"' + str.replace(QUOTE_REGEXP, "\\$&") + '"'; + } + __name(qstring, "qstring"); + function qmultipart(str) { + return '"' + str.replace(/[\n\r"]/g, multipartEscape) + '"'; + } + __name(qmultipart, "qmultipart"); + function multipartEscape(char) { + if (char === "\n") + return "%0A"; + if (char === "\r") + return "%0D"; + return "%22"; + } + __name(multipartEscape, "multipartEscape"); + function encodeExtended(str) { + const encoded = encodeURIComponent(str).replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode); + return "UTF-8''" + encoded; + } + __name(encodeExtended, "encodeExtended"); + function isHexDigit(char) { + const code = char.charCodeAt(0); + return code >= 48 && code <= 57 || // 0-9 + code >= 65 && code <= 70 || // A-F + code >= 97 && code <= 102; + } + __name(isHexDigit, "isHexDigit"); + function decodeHexEscapes(str) { + const firstEscape = str.indexOf("%"); + if (firstEscape === -1) + return str; + let result = str.slice(0, firstEscape); + for (let idx = firstEscape; idx < str.length; idx++) { + if (str[idx] === "%" && idx + 2 < str.length && isHexDigit(str[idx + 1]) && isHexDigit(str[idx + 2])) { + result += String.fromCharCode(Number.parseInt(str[idx + 1] + str[idx + 2], 16)); + idx += 2; + } else { + result += str[idx]; + } + } + return result; + } + __name(decodeHexEscapes, "decodeHexEscapes"); + } +}); + +// ../../node_modules/.pnpm/cookie-signature@1.2.2/node_modules/cookie-signature/index.js +var require_cookie_signature = __commonJS({ + "../../node_modules/.pnpm/cookie-signature@1.2.2/node_modules/cookie-signature/index.js"(exports) { + var crypto = __require("crypto"); + exports.sign = function(val, secret) { + if ("string" != typeof val) throw new TypeError("Cookie value must be provided as a string."); + if (null == secret) throw new TypeError("Secret key must be provided."); + return val + "." + crypto.createHmac("sha256", secret).update(val).digest("base64").replace(/\=+$/, ""); + }; + exports.unsign = function(input, secret) { + if ("string" != typeof input) throw new TypeError("Signed cookie string must be provided."); + if (null == secret) throw new TypeError("Secret key must be provided."); + var tentativeValue = input.slice(0, input.lastIndexOf(".")), expectedInput = exports.sign(tentativeValue, secret), expectedBuffer = Buffer.from(expectedInput), inputBuffer = Buffer.from(input); + return expectedBuffer.length === inputBuffer.length && crypto.timingSafeEqual(expectedBuffer, inputBuffer) ? tentativeValue : false; + }; + } +}); + +// ../../node_modules/.pnpm/cookie@0.7.2/node_modules/cookie/index.js +var require_cookie = __commonJS({ + "../../node_modules/.pnpm/cookie@0.7.2/node_modules/cookie/index.js"(exports) { + "use strict"; + exports.parse = parse; + exports.serialize = serialize; + var __toString = Object.prototype.toString; + var __hasOwnProperty = Object.prototype.hasOwnProperty; + var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/; + var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i; + var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/; + function parse(str, opt) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var obj = {}; + var len = str.length; + if (len < 2) return obj; + var dec = opt && opt.decode || decode; + var index = 0; + var eqIdx = 0; + var endIdx = 0; + do { + eqIdx = str.indexOf("=", index); + if (eqIdx === -1) break; + endIdx = str.indexOf(";", index); + if (endIdx === -1) { + endIdx = len; + } else if (eqIdx > endIdx) { + index = str.lastIndexOf(";", eqIdx - 1) + 1; + continue; + } + var keyStartIdx = startIndex(str, index, eqIdx); + var keyEndIdx = endIndex(str, eqIdx, keyStartIdx); + var key = str.slice(keyStartIdx, keyEndIdx); + if (!__hasOwnProperty.call(obj, key)) { + var valStartIdx = startIndex(str, eqIdx + 1, endIdx); + var valEndIdx = endIndex(str, endIdx, valStartIdx); + if (str.charCodeAt(valStartIdx) === 34 && str.charCodeAt(valEndIdx - 1) === 34) { + valStartIdx++; + valEndIdx--; + } + var val = str.slice(valStartIdx, valEndIdx); + obj[key] = tryDecode(val, dec); + } + index = endIdx + 1; + } while (index < len); + return obj; + } + __name(parse, "parse"); + function startIndex(str, index, max) { + do { + var code = str.charCodeAt(index); + if (code !== 32 && code !== 9) return index; + } while (++index < max); + return max; + } + __name(startIndex, "startIndex"); + function endIndex(str, index, min) { + while (index > min) { + var code = str.charCodeAt(--index); + if (code !== 32 && code !== 9) return index + 1; + } + return min; + } + __name(endIndex, "endIndex"); + function serialize(name, val, opt) { + var enc = opt && opt.encode || encodeURIComponent; + if (typeof enc !== "function") { + throw new TypeError("option encode is invalid"); + } + if (!cookieNameRegExp.test(name)) { + throw new TypeError("argument name is invalid"); + } + var value = enc(val); + if (!cookieValueRegExp.test(value)) { + throw new TypeError("argument val is invalid"); + } + var str = name + "=" + value; + if (!opt) return str; + if (null != opt.maxAge) { + var maxAge = Math.floor(opt.maxAge); + if (!isFinite(maxAge)) { + throw new TypeError("option maxAge is invalid"); + } + str += "; Max-Age=" + maxAge; + } + if (opt.domain) { + if (!domainValueRegExp.test(opt.domain)) { + throw new TypeError("option domain is invalid"); + } + str += "; Domain=" + opt.domain; + } + if (opt.path) { + if (!pathValueRegExp.test(opt.path)) { + throw new TypeError("option path is invalid"); + } + str += "; Path=" + opt.path; + } + if (opt.expires) { + var expires = opt.expires; + if (!isDate(expires) || isNaN(expires.valueOf())) { + throw new TypeError("option expires is invalid"); + } + str += "; Expires=" + expires.toUTCString(); + } + if (opt.httpOnly) { + str += "; HttpOnly"; + } + if (opt.secure) { + str += "; Secure"; + } + if (opt.partitioned) { + str += "; Partitioned"; + } + if (opt.priority) { + var priority = typeof opt.priority === "string" ? opt.priority.toLowerCase() : opt.priority; + switch (priority) { + case "low": + str += "; Priority=Low"; + break; + case "medium": + str += "; Priority=Medium"; + break; + case "high": + str += "; Priority=High"; + break; + default: + throw new TypeError("option priority is invalid"); + } + } + if (opt.sameSite) { + var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite; + switch (sameSite) { + case true: + str += "; SameSite=Strict"; + break; + case "lax": + str += "; SameSite=Lax"; + break; + case "strict": + str += "; SameSite=Strict"; + break; + case "none": + str += "; SameSite=None"; + break; + default: + throw new TypeError("option sameSite is invalid"); + } + } + return str; + } + __name(serialize, "serialize"); + function decode(str) { + return str.indexOf("%") !== -1 ? decodeURIComponent(str) : str; + } + __name(decode, "decode"); + function isDate(val) { + return __toString.call(val) === "[object Date]"; + } + __name(isDate, "isDate"); + function tryDecode(str, decode2) { + try { + return decode2(str); + } catch (e) { + return str; + } + } + __name(tryDecode, "tryDecode"); + } +}); + +// ../../node_modules/.pnpm/send@1.2.1/node_modules/send/index.js +var require_send = __commonJS({ + "../../node_modules/.pnpm/send@1.2.1/node_modules/send/index.js"(exports, module) { + "use strict"; + var createError = require_http_errors(); + var debug = require_src()("send"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var etag = require_etag(); + var fresh = require_fresh(); + var fs = __require("fs"); + var mime = require_mime_types(); + var ms = require_ms(); + var onFinished = require_on_finished(); + var parseRange = require_range_parser(); + var path = __require("path"); + var statuses = require_statuses(); + var Stream = __require("stream"); + var util = __require("util"); + var extname = path.extname; + var join = path.join; + var normalize = path.normalize; + var resolve = path.resolve; + var sep = path.sep; + var BYTES_RANGE_REGEXP = /^ *bytes=/; + var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3; + var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; + module.exports = send; + function send(req, path2, options) { + return new SendStream(req, path2, options); + } + __name(send, "send"); + function SendStream(req, path2, options) { + Stream.call(this); + var opts = options || {}; + this.options = opts; + this.path = path2; + this.req = req; + this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true; + this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true; + this._etag = opts.etag !== void 0 ? Boolean(opts.etag) : true; + this._dotfiles = opts.dotfiles !== void 0 ? opts.dotfiles : "ignore"; + if (this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") { + throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"'); + } + this._extensions = opts.extensions !== void 0 ? normalizeList(opts.extensions, "extensions option") : []; + this._immutable = opts.immutable !== void 0 ? Boolean(opts.immutable) : false; + this._index = opts.index !== void 0 ? normalizeList(opts.index, "index option") : ["index.html"]; + this._lastModified = opts.lastModified !== void 0 ? Boolean(opts.lastModified) : true; + this._maxage = opts.maxAge || opts.maxage; + this._maxage = typeof this._maxage === "string" ? ms(this._maxage) : Number(this._maxage); + this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0; + this._root = opts.root ? resolve(opts.root) : null; + } + __name(SendStream, "SendStream"); + util.inherits(SendStream, Stream); + SendStream.prototype.error = /* @__PURE__ */ __name(function error(status, err) { + if (hasListeners(this, "error")) { + return this.emit("error", createHttpError(status, err)); + } + var res = this.res; + var msg = statuses.message[status] || String(status); + var doc = createHtmlDocument("Error", escapeHtml(msg)); + clearHeaders(res); + if (err && err.headers) { + setHeaders(res, err.headers); + } + res.statusCode = status; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.end(doc); + }, "error"); + SendStream.prototype.hasTrailingSlash = /* @__PURE__ */ __name(function hasTrailingSlash() { + return this.path[this.path.length - 1] === "/"; + }, "hasTrailingSlash"); + SendStream.prototype.isConditionalGET = /* @__PURE__ */ __name(function isConditionalGET() { + return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"]; + }, "isConditionalGET"); + SendStream.prototype.isPreconditionFailure = /* @__PURE__ */ __name(function isPreconditionFailure() { + var req = this.req; + var res = this.res; + var match = req.headers["if-match"]; + if (match) { + var etag2 = res.getHeader("ETag"); + return !etag2 || match !== "*" && parseTokenList(match).every(function(match2) { + return match2 !== etag2 && match2 !== "W/" + etag2 && "W/" + match2 !== etag2; + }); + } + var unmodifiedSince = parseHttpDate(req.headers["if-unmodified-since"]); + if (!isNaN(unmodifiedSince)) { + var lastModified = parseHttpDate(res.getHeader("Last-Modified")); + return isNaN(lastModified) || lastModified > unmodifiedSince; + } + return false; + }, "isPreconditionFailure"); + SendStream.prototype.removeContentHeaderFields = /* @__PURE__ */ __name(function removeContentHeaderFields() { + var res = this.res; + res.removeHeader("Content-Encoding"); + res.removeHeader("Content-Language"); + res.removeHeader("Content-Length"); + res.removeHeader("Content-Range"); + res.removeHeader("Content-Type"); + }, "removeContentHeaderFields"); + SendStream.prototype.notModified = /* @__PURE__ */ __name(function notModified() { + var res = this.res; + debug("not modified"); + this.removeContentHeaderFields(); + res.statusCode = 304; + res.end(); + }, "notModified"); + SendStream.prototype.headersAlreadySent = /* @__PURE__ */ __name(function headersAlreadySent() { + var err = new Error("Can't set headers after they are sent."); + debug("headers already sent"); + this.error(500, err); + }, "headersAlreadySent"); + SendStream.prototype.isCachable = /* @__PURE__ */ __name(function isCachable() { + var statusCode = this.res.statusCode; + return statusCode >= 200 && statusCode < 300 || statusCode === 304; + }, "isCachable"); + SendStream.prototype.onStatError = /* @__PURE__ */ __name(function onStatError(error) { + switch (error.code) { + case "ENAMETOOLONG": + case "ENOENT": + case "ENOTDIR": + this.error(404, error); + break; + default: + this.error(500, error); + break; + } + }, "onStatError"); + SendStream.prototype.isFresh = /* @__PURE__ */ __name(function isFresh() { + return fresh(this.req.headers, { + etag: this.res.getHeader("ETag"), + "last-modified": this.res.getHeader("Last-Modified") + }); + }, "isFresh"); + SendStream.prototype.isRangeFresh = /* @__PURE__ */ __name(function isRangeFresh() { + var ifRange = this.req.headers["if-range"]; + if (!ifRange) { + return true; + } + if (ifRange.indexOf('"') !== -1) { + var etag2 = this.res.getHeader("ETag"); + return Boolean(etag2 && ifRange.indexOf(etag2) !== -1); + } + var lastModified = this.res.getHeader("Last-Modified"); + return parseHttpDate(lastModified) <= parseHttpDate(ifRange); + }, "isRangeFresh"); + SendStream.prototype.redirect = /* @__PURE__ */ __name(function redirect(path2) { + var res = this.res; + if (hasListeners(this, "directory")) { + this.emit("directory", res, path2); + return; + } + if (this.hasTrailingSlash()) { + this.error(403); + return; + } + var loc = encodeUrl(collapseLeadingSlashes(this.path + "/")); + var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); + res.statusCode = 301; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Location", loc); + res.end(doc); + }, "redirect"); + SendStream.prototype.pipe = /* @__PURE__ */ __name(function pipe(res) { + var root = this._root; + this.res = res; + var path2 = decode(this.path); + if (path2 === -1) { + this.error(400); + return res; + } + if (~path2.indexOf("\0")) { + this.error(400); + return res; + } + var parts; + if (root !== null) { + if (path2) { + path2 = normalize("." + sep + path2); + } + if (UP_PATH_REGEXP.test(path2)) { + debug('malicious path "%s"', path2); + this.error(403); + return res; + } + parts = path2.split(sep); + path2 = normalize(join(root, path2)); + } else { + if (UP_PATH_REGEXP.test(path2)) { + debug('malicious path "%s"', path2); + this.error(403); + return res; + } + parts = normalize(path2).split(sep); + path2 = resolve(path2); + } + if (containsDotFile(parts)) { + debug('%s dotfile "%s"', this._dotfiles, path2); + switch (this._dotfiles) { + case "allow": + break; + case "deny": + this.error(403); + return res; + case "ignore": + default: + this.error(404); + return res; + } + } + if (this._index.length && this.hasTrailingSlash()) { + this.sendIndex(path2); + return res; + } + this.sendFile(path2); + return res; + }, "pipe"); + SendStream.prototype.send = /* @__PURE__ */ __name(function send2(path2, stat) { + var len = stat.size; + var options = this.options; + var opts = {}; + var res = this.res; + var req = this.req; + var ranges = req.headers.range; + var offset = options.start || 0; + if (res.headersSent) { + this.headersAlreadySent(); + return; + } + debug('pipe "%s"', path2); + this.setHeader(path2, stat); + this.type(path2); + if (this.isConditionalGET()) { + if (this.isPreconditionFailure()) { + this.error(412); + return; + } + if (this.isCachable() && this.isFresh()) { + this.notModified(); + return; + } + } + len = Math.max(0, len - offset); + if (options.end !== void 0) { + var bytes = options.end - offset + 1; + if (len > bytes) len = bytes; + } + if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { + ranges = parseRange(len, ranges, { + combine: true + }); + if (!this.isRangeFresh()) { + debug("range stale"); + ranges = -2; + } + if (ranges === -1) { + debug("range unsatisfiable"); + res.setHeader("Content-Range", contentRange("bytes", len)); + return this.error(416, { + headers: { "Content-Range": res.getHeader("Content-Range") } + }); + } + if (ranges !== -2 && ranges.length === 1) { + debug("range %j", ranges); + res.statusCode = 206; + res.setHeader("Content-Range", contentRange("bytes", len, ranges[0])); + offset += ranges[0].start; + len = ranges[0].end - ranges[0].start + 1; + } + } + for (var prop in options) { + opts[prop] = options[prop]; + } + opts.start = offset; + opts.end = Math.max(offset, offset + len - 1); + res.setHeader("Content-Length", len); + if (req.method === "HEAD") { + res.end(); + return; + } + this.stream(path2, opts); + }, "send"); + SendStream.prototype.sendFile = /* @__PURE__ */ __name(function sendFile(path2) { + var i = 0; + var self = this; + debug('stat "%s"', path2); + fs.stat(path2, /* @__PURE__ */ __name(function onstat(err, stat) { + var pathEndsWithSep = path2[path2.length - 1] === sep; + if (err && err.code === "ENOENT" && !extname(path2) && !pathEndsWithSep) { + return next(err); + } + if (err) return self.onStatError(err); + if (stat.isDirectory()) return self.redirect(path2); + if (pathEndsWithSep) return self.error(404); + self.emit("file", path2, stat); + self.send(path2, stat); + }, "onstat")); + function next(err) { + if (self._extensions.length <= i) { + return err ? self.onStatError(err) : self.error(404); + } + var p = path2 + "." + self._extensions[i++]; + debug('stat "%s"', p); + fs.stat(p, function(err2, stat) { + if (err2) return next(err2); + if (stat.isDirectory()) return next(); + self.emit("file", p, stat); + self.send(p, stat); + }); + } + __name(next, "next"); + }, "sendFile"); + SendStream.prototype.sendIndex = /* @__PURE__ */ __name(function sendIndex(path2) { + var i = -1; + var self = this; + function next(err) { + if (++i >= self._index.length) { + if (err) return self.onStatError(err); + return self.error(404); + } + var p = join(path2, self._index[i]); + debug('stat "%s"', p); + fs.stat(p, function(err2, stat) { + if (err2) return next(err2); + if (stat.isDirectory()) return next(); + self.emit("file", p, stat); + self.send(p, stat); + }); + } + __name(next, "next"); + next(); + }, "sendIndex"); + SendStream.prototype.stream = /* @__PURE__ */ __name(function stream(path2, options) { + var self = this; + var res = this.res; + var stream2 = fs.createReadStream(path2, options); + this.emit("stream", stream2); + stream2.pipe(res); + function cleanup() { + stream2.destroy(); + } + __name(cleanup, "cleanup"); + onFinished(res, cleanup); + stream2.on("error", /* @__PURE__ */ __name(function onerror(err) { + cleanup(); + self.onStatError(err); + }, "onerror")); + stream2.on("end", /* @__PURE__ */ __name(function onend() { + self.emit("end"); + }, "onend")); + }, "stream"); + SendStream.prototype.type = /* @__PURE__ */ __name(function type(path2) { + var res = this.res; + if (res.getHeader("Content-Type")) return; + var ext = extname(path2); + var type2 = mime.contentType(ext) || "application/octet-stream"; + debug("content-type %s", type2); + res.setHeader("Content-Type", type2); + }, "type"); + SendStream.prototype.setHeader = /* @__PURE__ */ __name(function setHeader(path2, stat) { + var res = this.res; + this.emit("headers", res, path2, stat); + if (this._acceptRanges && !res.getHeader("Accept-Ranges")) { + debug("accept ranges"); + res.setHeader("Accept-Ranges", "bytes"); + } + if (this._cacheControl && !res.getHeader("Cache-Control")) { + var cacheControl = "public, max-age=" + Math.floor(this._maxage / 1e3); + if (this._immutable) { + cacheControl += ", immutable"; + } + debug("cache-control %s", cacheControl); + res.setHeader("Cache-Control", cacheControl); + } + if (this._lastModified && !res.getHeader("Last-Modified")) { + var modified = stat.mtime.toUTCString(); + debug("modified %s", modified); + res.setHeader("Last-Modified", modified); + } + if (this._etag && !res.getHeader("ETag")) { + var val = etag(stat); + debug("etag %s", val); + res.setHeader("ETag", val); + } + }, "setHeader"); + function clearHeaders(res) { + for (const header of res.getHeaderNames()) { + res.removeHeader(header); + } + } + __name(clearHeaders, "clearHeaders"); + function collapseLeadingSlashes(str) { + for (var i = 0; i < str.length; i++) { + if (str[i] !== "/") { + break; + } + } + return i > 1 ? "/" + str.substr(i) : str; + } + __name(collapseLeadingSlashes, "collapseLeadingSlashes"); + function containsDotFile(parts) { + for (var i = 0; i < parts.length; i++) { + var part = parts[i]; + if (part.length > 1 && part[0] === ".") { + return true; + } + } + return false; + } + __name(containsDotFile, "containsDotFile"); + function contentRange(type, size, range) { + return type + " " + (range ? range.start + "-" + range.end : "*") + "/" + size; + } + __name(contentRange, "contentRange"); + function createHtmlDocument(title, body) { + return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; + } + __name(createHtmlDocument, "createHtmlDocument"); + function createHttpError(status, err) { + if (!err) { + return createError(status); + } + return err instanceof Error ? createError(status, err, { expose: false }) : createError(status, err); + } + __name(createHttpError, "createHttpError"); + function decode(path2) { + try { + return decodeURIComponent(path2); + } catch (err) { + return -1; + } + } + __name(decode, "decode"); + function hasListeners(emitter, type) { + var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); + return count > 0; + } + __name(hasListeners, "hasListeners"); + function normalizeList(val, name) { + var list = [].concat(val || []); + for (var i = 0; i < list.length; i++) { + if (typeof list[i] !== "string") { + throw new TypeError(name + " must be array of strings or false"); + } + } + return list; + } + __name(normalizeList, "normalizeList"); + function parseHttpDate(date) { + var timestamp = date && Date.parse(date); + return typeof timestamp === "number" ? timestamp : NaN; + } + __name(parseHttpDate, "parseHttpDate"); + function parseTokenList(str) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + if (start !== end) { + list.push(str.substring(start, end)); + } + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + if (start !== end) { + list.push(str.substring(start, end)); + } + return list; + } + __name(parseTokenList, "parseTokenList"); + function setHeaders(res, headers) { + var keys = Object.keys(headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + res.setHeader(key, headers[key]); + } + } + __name(setHeaders, "setHeaders"); + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/response.js +var require_response = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/response.js"(exports, module) { + "use strict"; + var contentDisposition = require_dist3(); + var createError = require_http_errors(); + var deprecate = require_depd()("express"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var http2 = __require("node:http"); + var onFinished = require_on_finished(); + var mime = require_mime_types(); + var path = __require("node:path"); + var pathIsAbsolute = __require("node:path").isAbsolute; + var statuses = require_statuses(); + var sign = require_cookie_signature().sign; + var normalizeType = require_utils3().normalizeType; + var normalizeTypes = require_utils3().normalizeTypes; + var setCharset = require_utils3().setCharset; + var cookie = require_cookie(); + var send = require_send(); + var extname = path.extname; + var resolve = path.resolve; + var basename = path.basename; + var vary = require_vary(); + var { Buffer: Buffer2 } = __require("node:buffer"); + var res = Object.create(http2.ServerResponse.prototype); + module.exports = res; + res.status = /* @__PURE__ */ __name(function status(code) { + if (!Number.isInteger(code)) { + throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); + } + if (code < 100 || code > 999) { + throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`); + } + this.statusCode = code; + return this; + }, "status"); + res.links = function(links) { + var link = this.get("Link") || ""; + if (link) link += ", "; + return this.set("Link", link + Object.keys(links).map(function(rel) { + if (Array.isArray(links[rel])) { + return links[rel].map(function(singleLink) { + return `<${singleLink}>; rel="${rel}"`; + }).join(", "); + } else { + return `<${links[rel]}>; rel="${rel}"`; + } + }).join(", ")); + }; + res.send = /* @__PURE__ */ __name(function send2(body) { + var chunk = body; + var encoding; + var req = this.req; + var app = this.app; + switch (typeof chunk) { + // string defaulting to html + case "string": + encoding = "utf8"; + const type = this.get("Content-Type"); + if (typeof type === "string") { + this.set("Content-Type", setCharset(type, "utf-8")); + } else { + this.type("html"); + } + break; + case "boolean": + case "number": + case "object": + if (chunk === null) { + chunk = ""; + } else if (ArrayBuffer.isView(chunk)) { + if (!this.get("Content-Type")) { + this.type("bin"); + } + } else { + return this.json(chunk); + } + break; + } + var etagFn = app.get("etag fn"); + var generateETag = !this.get("ETag") && typeof etagFn === "function"; + var len; + if (chunk !== void 0) { + if (Buffer2.isBuffer(chunk)) { + len = chunk.length; + } else if (!generateETag && chunk.length < 1e3) { + len = Buffer2.byteLength(chunk, encoding); + } else { + chunk = Buffer2.from(chunk, encoding); + encoding = void 0; + len = chunk.length; + } + if (!this.get("Transfer-Encoding")) { + this.set("Content-Length", len); + } + } + var etag; + if (generateETag && len !== void 0) { + if (etag = etagFn(chunk, encoding)) { + this.set("ETag", etag); + } + } + if (req.fresh) this.status(304); + if (204 === this.statusCode || 304 === this.statusCode) { + this.removeHeader("Content-Type"); + this.removeHeader("Content-Length"); + this.removeHeader("Transfer-Encoding"); + chunk = ""; + } + if (this.statusCode === 205) { + this.set("Content-Length", "0"); + this.removeHeader("Transfer-Encoding"); + chunk = ""; + } + if (req.method === "HEAD") { + this.end(); + } else { + this.end(chunk, encoding); + } + return this; + }, "send"); + res.json = /* @__PURE__ */ __name(function json(obj) { + var app = this.app; + var escape2 = app.get("json escape"); + var replacer = app.get("json replacer"); + var spaces = app.get("json spaces"); + var body = stringify2(obj, replacer, spaces, escape2); + if (!this.get("Content-Type")) { + this.set("Content-Type", "application/json"); + } + return this.send(body); + }, "json"); + res.jsonp = /* @__PURE__ */ __name(function jsonp(obj) { + var app = this.app; + var escape2 = app.get("json escape"); + var replacer = app.get("json replacer"); + var spaces = app.get("json spaces"); + var body = stringify2(obj, replacer, spaces, escape2); + var callback = this.req.query[app.get("jsonp callback name")]; + if (!this.get("Content-Type")) { + this.set("X-Content-Type-Options", "nosniff"); + this.set("Content-Type", "application/json"); + } + if (Array.isArray(callback)) { + callback = callback[0]; + } + if (typeof callback === "string" && callback.length !== 0) { + this.set("X-Content-Type-Options", "nosniff"); + this.set("Content-Type", "text/javascript"); + callback = callback.replace(/[^\[\]\w$.]/g, ""); + if (body === void 0) { + body = ""; + } else if (typeof body === "string") { + body = body.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + body = "/**/ typeof " + callback + " === 'function' && " + callback + "(" + body + ");"; + } + return this.send(body); + }, "jsonp"); + res.sendStatus = /* @__PURE__ */ __name(function sendStatus(statusCode) { + var body = statuses.message[statusCode] || String(statusCode); + this.status(statusCode); + this.type("txt"); + return this.send(body); + }, "sendStatus"); + res.sendFile = /* @__PURE__ */ __name(function sendFile(path2, options, callback) { + var done = callback; + var req = this.req; + var res2 = this; + var next = req.next; + var opts = options || {}; + if (!path2) { + throw new TypeError("path argument is required to res.sendFile"); + } + if (typeof path2 !== "string") { + throw new TypeError("path must be a string to res.sendFile"); + } + if (typeof options === "function") { + done = options; + opts = {}; + } + if (!opts.root && !pathIsAbsolute(path2)) { + throw new TypeError("path must be absolute or specify root to res.sendFile"); + } + var pathname = encodeURI(path2); + opts.etag = this.app.enabled("etag"); + var file = send(req, pathname, opts); + sendfile(res2, file, opts, function(err) { + if (done) return done(err); + if (err && err.code === "EISDIR") return next(); + if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") { + next(err); + } + }); + }, "sendFile"); + res.download = /* @__PURE__ */ __name(function download(path2, filename, options, callback) { + var done = callback; + var name = filename; + var opts = options || null; + if (typeof filename === "function") { + done = filename; + name = null; + opts = null; + } else if (typeof options === "function") { + done = options; + opts = null; + } + if (typeof filename === "object" && (typeof options === "function" || options === void 0)) { + name = null; + opts = filename; + } + var headers = { + "Content-Disposition": contentDisposition.create(basename(name || path2)) + }; + if (opts && opts.headers) { + var keys = Object.keys(opts.headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key.toLowerCase() !== "content-disposition") { + headers[key] = opts.headers[key]; + } + } + } + opts = Object.create(opts); + opts.headers = headers; + var fullPath = !opts.root ? resolve(path2) : path2; + return this.sendFile(fullPath, opts, done); + }, "download"); + res.contentType = res.type = /* @__PURE__ */ __name(function contentType(type) { + var ct = type.indexOf("/") === -1 ? mime.contentType(type) || "application/octet-stream" : type; + return this.set("Content-Type", ct); + }, "contentType"); + res.format = function(obj) { + var req = this.req; + var next = req.next; + var keys = Object.keys(obj).filter(function(v) { + return v !== "default"; + }); + var key = keys.length > 0 ? req.accepts(keys) : false; + this.vary("Accept"); + if (key) { + this.set("Content-Type", normalizeType(key).value); + obj[key](req, this, next); + } else if (obj.default) { + obj.default(req, this, next); + } else { + next(createError(406, { + types: normalizeTypes(keys).map(function(o) { + return o.value; + }) + })); + } + return this; + }; + res.attachment = /* @__PURE__ */ __name(function attachment(filename) { + const name = filename !== void 0 ? basename(filename) : void 0; + if (name) { + this.type(extname(name)); + } + this.set("Content-Disposition", contentDisposition.create(name)); + return this; + }, "attachment"); + res.append = /* @__PURE__ */ __name(function append(field, val) { + var prev = this.get(field); + var value = val; + if (prev) { + value = Array.isArray(prev) ? prev.concat(val) : Array.isArray(val) ? [prev].concat(val) : [prev, val]; + } + return this.set(field, value); + }, "append"); + res.set = res.header = /* @__PURE__ */ __name(function header(field, val) { + if (arguments.length === 2) { + var value = Array.isArray(val) ? val.map(String) : String(val); + if (field.toLowerCase() === "content-type") { + if (Array.isArray(value)) { + throw new TypeError("Content-Type cannot be set to an Array"); + } + value = mime.contentType(value); + } + this.setHeader(field, value); + } else { + for (var key in field) { + this.set(key, field[key]); + } + } + return this; + }, "header"); + res.get = function(field) { + return this.getHeader(field); + }; + res.clearCookie = /* @__PURE__ */ __name(function clearCookie(name, options) { + const opts = { path: "/", ...options, expires: /* @__PURE__ */ new Date(1) }; + delete opts.maxAge; + return this.cookie(name, "", opts); + }, "clearCookie"); + res.cookie = function(name, value, options) { + var opts = { ...options }; + var secret = this.req.secret; + var signed = opts.signed; + if (signed && !secret) { + throw new Error('cookieParser("secret") required for signed cookies'); + } + var val = typeof value === "object" ? "j:" + JSON.stringify(value) : String(value); + if (signed) { + val = "s:" + sign(val, secret); + } + if (opts.maxAge != null) { + var maxAge = opts.maxAge - 0; + if (!isNaN(maxAge)) { + opts.expires = new Date(Date.now() + maxAge); + opts.maxAge = Math.floor(maxAge / 1e3); + } + } + if (opts.path == null) { + opts.path = "/"; + } + this.append("Set-Cookie", cookie.serialize(name, String(val), opts)); + return this; + }; + res.location = /* @__PURE__ */ __name(function location(url) { + return this.set("Location", encodeUrl(url)); + }, "location"); + res.redirect = /* @__PURE__ */ __name(function redirect(url) { + var address = url; + var body; + var status = 302; + if (arguments.length === 2) { + status = arguments[0]; + address = arguments[1]; + } + if (!address) { + deprecate("Provide a url argument"); + } + if (typeof address !== "string") { + deprecate("Url must be a string"); + } + if (typeof status !== "number") { + deprecate("Status must be a number"); + } + address = this.location(address).get("Location"); + this.format({ + text: /* @__PURE__ */ __name(function() { + body = statuses.message[status] + ". Redirecting to " + address; + }, "text"), + html: /* @__PURE__ */ __name(function() { + var u = escapeHtml(address); + body = "" + statuses.message[status] + "

" + statuses.message[status] + ". Redirecting to " + u + "

"; + }, "html"), + default: /* @__PURE__ */ __name(function() { + body = ""; + }, "default") + }); + this.status(status); + this.set("Content-Length", Buffer2.byteLength(body)); + if (this.req.method === "HEAD") { + this.end(); + } else { + this.end(body); + } + }, "redirect"); + res.vary = function(field) { + vary(this, field); + return this; + }; + res.render = /* @__PURE__ */ __name(function render(view, options, callback) { + var app = this.req.app; + var done = callback; + var opts = options || {}; + var req = this.req; + var self = this; + if (typeof options === "function") { + done = options; + opts = {}; + } + opts._locals = self.locals; + done = done || function(err, str) { + if (err) return req.next(err); + self.send(str); + }; + app.render(view, opts, done); + }, "render"); + function sendfile(res2, file, options, callback) { + var done = false; + var streaming; + function onaborted() { + if (done) return; + done = true; + var err = new Error("Request aborted"); + err.code = "ECONNABORTED"; + callback(err); + } + __name(onaborted, "onaborted"); + function ondirectory() { + if (done) return; + done = true; + var err = new Error("EISDIR, read"); + err.code = "EISDIR"; + callback(err); + } + __name(ondirectory, "ondirectory"); + function onerror(err) { + if (done) return; + done = true; + callback(err); + } + __name(onerror, "onerror"); + function onend() { + if (done) return; + done = true; + callback(); + } + __name(onend, "onend"); + function onfile() { + streaming = false; + } + __name(onfile, "onfile"); + function onfinish(err) { + if (err && err.code === "ECONNRESET") return onaborted(); + if (err) return onerror(err); + if (done) return; + setImmediate(function() { + if (streaming !== false && !done) { + onaborted(); + return; + } + if (done) return; + done = true; + callback(); + }); + } + __name(onfinish, "onfinish"); + function onstream() { + streaming = true; + } + __name(onstream, "onstream"); + file.on("directory", ondirectory); + file.on("end", onend); + file.on("error", onerror); + file.on("file", onfile); + file.on("stream", onstream); + onFinished(res2, onfinish); + if (options.headers) { + file.on("headers", /* @__PURE__ */ __name(function headers(res3) { + var obj = options.headers; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + res3.setHeader(k, obj[k]); + } + }, "headers")); + } + file.pipe(res2); + } + __name(sendfile, "sendfile"); + function stringify2(value, replacer, spaces, escape2) { + var json = replacer || spaces ? JSON.stringify(value, replacer, spaces) : JSON.stringify(value); + if (escape2 && typeof json === "string") { + json = json.replace(/[<>&]/g, function(c) { + switch (c.charCodeAt(0)) { + case 60: + return "\\u003c"; + case 62: + return "\\u003e"; + case 38: + return "\\u0026"; + /* istanbul ignore next: unreachable default */ + default: + return c; + } + }); + } + return json; + } + __name(stringify2, "stringify"); + } +}); + +// ../../node_modules/.pnpm/serve-static@2.2.1/node_modules/serve-static/index.js +var require_serve_static = __commonJS({ + "../../node_modules/.pnpm/serve-static@2.2.1/node_modules/serve-static/index.js"(exports, module) { + "use strict"; + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var parseUrl = require_parseurl(); + var resolve = __require("path").resolve; + var send = require_send(); + var url = __require("url"); + module.exports = serveStatic; + function serveStatic(root, options) { + if (!root) { + throw new TypeError("root path required"); + } + if (typeof root !== "string") { + throw new TypeError("root path must be a string"); + } + var opts = Object.create(options || null); + var fallthrough = opts.fallthrough !== false; + var redirect = opts.redirect !== false; + var setHeaders = opts.setHeaders; + if (setHeaders && typeof setHeaders !== "function") { + throw new TypeError("option setHeaders must be function"); + } + opts.maxage = opts.maxage || opts.maxAge || 0; + opts.root = resolve(root); + var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener(); + return /* @__PURE__ */ __name(function serveStatic2(req, res, next) { + if (req.method !== "GET" && req.method !== "HEAD") { + if (fallthrough) { + return next(); + } + res.statusCode = 405; + res.setHeader("Allow", "GET, HEAD"); + res.setHeader("Content-Length", "0"); + res.end(); + return; + } + var forwardError = !fallthrough; + var originalUrl = parseUrl.original(req); + var path = parseUrl(req).pathname; + if (path === "/" && originalUrl.pathname.substr(-1) !== "/") { + path = ""; + } + var stream = send(req, path, opts); + stream.on("directory", onDirectory); + if (setHeaders) { + stream.on("headers", setHeaders); + } + if (fallthrough) { + stream.on("file", /* @__PURE__ */ __name(function onFile() { + forwardError = true; + }, "onFile")); + } + stream.on("error", /* @__PURE__ */ __name(function error(err) { + if (forwardError || !(err.statusCode < 500)) { + next(err); + return; + } + next(); + }, "error")); + stream.pipe(res); + }, "serveStatic"); + } + __name(serveStatic, "serveStatic"); + function collapseLeadingSlashes(str) { + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) !== 47) { + break; + } + } + return i > 1 ? "/" + str.substr(i) : str; + } + __name(collapseLeadingSlashes, "collapseLeadingSlashes"); + function createHtmlDocument(title, body) { + return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; + } + __name(createHtmlDocument, "createHtmlDocument"); + function createNotFoundDirectoryListener() { + return /* @__PURE__ */ __name(function notFound() { + this.error(404); + }, "notFound"); + } + __name(createNotFoundDirectoryListener, "createNotFoundDirectoryListener"); + function createRedirectDirectoryListener() { + return /* @__PURE__ */ __name(function redirect(res) { + if (this.hasTrailingSlash()) { + this.error(404); + return; + } + var originalUrl = parseUrl.original(this.req); + originalUrl.path = null; + originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + "/"); + var loc = encodeUrl(url.format(originalUrl)); + var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); + res.statusCode = 301; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Location", loc); + res.end(doc); + }, "redirect"); + } + __name(createRedirectDirectoryListener, "createRedirectDirectoryListener"); + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/express.js +var require_express = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/lib/express.js"(exports, module) { + "use strict"; + var bodyParser = require_body_parser(); + var EventEmitter = __require("node:events").EventEmitter; + var mixin2 = require_merge_descriptors(); + var proto = require_application(); + var Router = require_router(); + var req = require_request(); + var res = require_response(); + exports = module.exports = createApplication; + function createApplication() { + var app = /* @__PURE__ */ __name(function(req2, res2, next) { + app.handle(req2, res2, next); + }, "app"); + mixin2(app, EventEmitter.prototype, false); + mixin2(app, proto, false); + app.request = Object.create(req, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }); + app.response = Object.create(res, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }); + app.init(); + return app; + } + __name(createApplication, "createApplication"); + exports.application = proto; + exports.request = req; + exports.response = res; + exports.Route = Router.Route; + exports.Router = Router; + exports.json = bodyParser.json; + exports.raw = bodyParser.raw; + exports.static = require_serve_static(); + exports.text = bodyParser.text; + exports.urlencoded = bodyParser.urlencoded; + } +}); + +// ../../node_modules/.pnpm/express@5.3.0/node_modules/express/index.js +var require_express2 = __commonJS({ + "../../node_modules/.pnpm/express@5.3.0/node_modules/express/index.js"(exports, module) { + "use strict"; + module.exports = require_express(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/utils/get-body-parser-options.util.js +function getBodyParserOptions(parser, rawBody, options) { + if (rawBody === true) { + return { + ...options, + verify: rawBodyParser + }; + } + return options || {}; +} +var rawBodyParser; +var init_get_body_parser_options_util = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/utils/get-body-parser-options.util.js"() { + rawBodyParser = /* @__PURE__ */ __name((req, _res, buffer) => { + if (Buffer.isBuffer(buffer)) { + req.rawBody = buffer; + } + return true; + }, "rawBodyParser"); + __name(getBodyParserOptions, "getBodyParserOptions"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/utils/get-media-type-version.util.js +function getMediaTypeVersion(acceptHeader, key) { + const mediaRanges = [].concat(acceptHeader ?? []).flatMap((value) => splitOutsideQuotes(value, ",")); + for (const mediaRange of mediaRanges) { + const [, ...parameters] = splitOutsideQuotes(mediaRange, ";"); + for (const parameter of parameters) { + const trimmedParameter = parameter.trim(); + if (trimmedParameter.startsWith(key)) { + const version = trimmedParameter.slice(key.length); + if (version.startsWith('"') && version.endsWith('"')) { + return version.slice(1, -1).replace(/\\([\s\S])/g, "$1"); + } + return version; + } + } + } + return void 0; +} +var splitOutsideQuotes; +var init_get_media_type_version_util = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/utils/get-media-type-version.util.js"() { + splitOutsideQuotes = /* @__PURE__ */ __name((value, separator) => { + const parts = []; + let start = 0; + let isQuoted = false; + const len = value.length; + for (let index = 0; index < len; index++) { + const character = value[index]; + if (isQuoted && character === "\\") { + index++; + } else if (character === '"') { + isQuoted = !isQuoted; + } else if (character === separator && !isQuoted) { + parts.push(value.slice(start, index)); + start = index + 1; + } + } + parts.push(value.slice(start)); + return parts; + }, "splitOutsideQuotes"); + __name(getMediaTypeVersion, "getMediaTypeVersion"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/select-exception-filter-metadata.util.js +var selectExceptionFilterMetadata; +var init_select_exception_filter_metadata_util = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/select-exception-filter-metadata.util.js"() { + selectExceptionFilterMetadata = /* @__PURE__ */ __name((filters, exception) => filters.find(({ exceptionMetatypes }) => !exceptionMetatypes.length || exceptionMetatypes.some((ExceptionMetaType) => exception instanceof ExceptionMetaType)), "selectExceptionFilterMetadata"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/internal.js +var init_internal = __esm({ + "../../node_modules/.pnpm/@nestjs+common@12.2.0_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/internal.js"() { + init_constants(); + init_route_paramtypes_enum(); + init_shared_utils(); + init_parameter_decorator_options_util(); + init_load_package_util(); + init_cli_colors_util(); + init_random_string_generator_util(); + init_select_exception_filter_metadata_util(); + init_route_params_decorator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/serialize-cookie.js +function serializeCookie(name, value, options = {}) { + if (typeof name !== "string" || !COOKIE_NAME_REGEXP.test(name)) { + throw new TypeError(`Invalid cookie name: ${JSON.stringify(name)}`); + } + if (typeof value !== "string") { + throw new TypeError(`Invalid value for cookie "${name}": expected a string, received ${typeof value}`); + } + let encodedValue; + try { + encodedValue = encodeURIComponent(value); + } catch { + throw new TypeError(`Invalid value for cookie "${name}": not a well-formed string`); + } + let header = `${name}=${encodedValue}`; + const path = options.path ?? "/"; + if (typeof path !== "string" || !COOKIE_PATH_REGEXP.test(path)) { + throw new TypeError(`Invalid path for cookie "${name}"`); + } + header += `; Path=${path}`; + if (options.domain !== void 0) { + if (typeof options.domain !== "string" || !COOKIE_DOMAIN_REGEXP.test(options.domain)) { + throw new TypeError(`Invalid domain for cookie "${name}"`); + } + header += `; Domain=${options.domain}`; + } + if (options.maxAge !== void 0) { + if (!Number.isSafeInteger(options.maxAge)) { + throw new TypeError(`Invalid maxAge for cookie "${name}": expected an integer number of seconds`); + } + header += `; Max-Age=${options.maxAge}`; + } + if (options.expires !== void 0) { + if (!(options.expires instanceof Date) || Number.isNaN(options.expires.getTime())) { + throw new TypeError(`Invalid expires date for cookie "${name}"`); + } + header += `; Expires=${options.expires.toUTCString()}`; + } + if (options.httpOnly) { + header += "; HttpOnly"; + } + if (options.secure) { + header += "; Secure"; + } + if (options.partitioned) { + if (!options.secure) { + throw new TypeError(`Invalid options for cookie "${name}": "partitioned" requires "secure: true"`); + } + header += "; Partitioned"; + } + if (options.priority !== void 0) { + const priority = PRIORITY_VALUES.get(String(options.priority).toLowerCase()); + if (!priority) { + throw new TypeError(`Invalid priority for cookie "${name}"`); + } + header += `; Priority=${priority}`; + } + if (options.sameSite !== void 0) { + const sameSite = SAME_SITE_VALUES.get(String(options.sameSite).toLowerCase()); + if (!sameSite) { + throw new TypeError(`Invalid sameSite for cookie "${name}"`); + } + if (sameSite === "None" && !options.secure) { + throw new TypeError(`Invalid options for cookie "${name}": "sameSite: 'none'" requires "secure: true"`); + } + header += `; SameSite=${sameSite}`; + } + return header; +} +var COOKIE_NAME_REGEXP, COOKIE_DOMAIN_REGEXP, COOKIE_PATH_REGEXP, SAME_SITE_VALUES, PRIORITY_VALUES; +var init_serialize_cookie = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/serialize-cookie.js"() { + COOKIE_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + COOKIE_DOMAIN_REGEXP = /^\.?[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i; + COOKIE_PATH_REGEXP = /^[ -:<-~]*$/; + SAME_SITE_VALUES = /* @__PURE__ */ new Map([ + ["strict", "Strict"], + ["lax", "Lax"], + ["none", "None"] + ]); + PRIORITY_VALUES = /* @__PURE__ */ new Map([ + ["low", "Low"], + ["medium", "Medium"], + ["high", "High"] + ]); + __name(serializeCookie, "serializeCookie"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/adapters/http-adapter.js +var AbstractHttpAdapter; +var init_http_adapter = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/adapters/http-adapter.js"() { + init_serialize_cookie(); + AbstractHttpAdapter = class { + static { + __name(this, "AbstractHttpAdapter"); + } + instance; + /** + * Native HTTP server created by {@link AbstractHttpAdapter.initHttpServer} + * and returned by {@link AbstractHttpAdapter.getHttpServer}. + */ + httpServer; + /** + * Callback registered through + * {@link AbstractHttpAdapter.setOnRouteTriggered}, if any. + */ + onRouteTriggered; + /** + * Signer built from the `cookies.secret` application option, used by + * {@link AbstractHttpAdapter.setCookie} for `signed` cookies. + */ + cookieSigner; + /** + * @param instance The framework application instance to delegate to (e.g. + * an Express `Application`). Subclasses typically create a default one + * when none is given. + */ + constructor(instance) { + this.instance = instance; + } + /** + * Asynchronous setup hook, awaited by `NestFactory.create()` and again by + * `app.init()`, so overrides must be idempotent. No-op by default. + * + * @see {@link HttpServer.init} + */ + async init() { + } + /** + * Registers a global middleware by delegating to `instance.use(...args)`. + * + * @see {@link HttpServer.use} + */ + use(...args) { + return this.instance.use(...args); + } + get(...args) { + return this.instance.get(...args); + } + post(...args) { + return this.instance.post(...args); + } + head(...args) { + return this.instance.head(...args); + } + delete(...args) { + return this.instance.delete(...args); + } + put(...args) { + return this.instance.put(...args); + } + patch(...args) { + return this.instance.patch(...args); + } + propfind(...args) { + return this.instance.propfind(...args); + } + proppatch(...args) { + return this.instance.proppatch(...args); + } + mkcol(...args) { + return this.instance.mkcol(...args); + } + copy(...args) { + return this.instance.copy(...args); + } + move(...args) { + return this.instance.move(...args); + } + lock(...args) { + return this.instance.lock(...args); + } + unlock(...args) { + return this.instance.unlock(...args); + } + all(...args) { + return this.instance.all(...args); + } + search(...args) { + return this.instance.search(...args); + } + query(...args) { + return this.instance.query(...args); + } + options(...args) { + return this.instance.options(...args); + } + listen(port, hostname, callback) { + return this.instance.listen(port, hostname, callback); + } + /** + * Returns the native HTTP server stored by + * {@link AbstractHttpAdapter.initHttpServer} (or + * {@link AbstractHttpAdapter.setHttpServer}). + * + * @see {@link HttpServer.getHttpServer} + */ + getHttpServer() { + return this.httpServer; + } + /** + * Replaces the native HTTP server returned by + * {@link AbstractHttpAdapter.getHttpServer}. Mostly useful for tests and + * for adapters that obtain the server from elsewhere. + */ + setHttpServer(httpServer) { + this.httpServer = httpServer; + } + /** + * Replaces the framework application instance that the default method + * implementations delegate to. + */ + setInstance(instance) { + this.instance = instance; + } + /** + * Returns the framework application instance passed to the constructor + * (or set through {@link AbstractHttpAdapter.setInstance}). + * + * @see {@link HttpServer.getInstance} + */ + getInstance() { + return this.instance; + } + /** + * Converts and validates a route path before registration. Returns the + * path unchanged by default; override to translate Nest's path syntax to + * the router's and to throw on invalid paths. + * + * @see {@link HttpServer.normalizePath} + */ + normalizePath(path) { + return path; + } + /** + * Registers a callback that the router invokes right before each route + * handler runs, with the resolved `RequestMethod` and the route path as + * declared (before {@link AbstractHttpAdapter.normalizePath}). The router + * wraps every handler at registration time, so the callback must be set + * before `app.init()` to take effect. Intended for instrumentation and + * devtools; there is no need to override it. + */ + setOnRouteTriggered(onRouteTriggered) { + this.onRouteTriggered = onRouteTriggered; + } + /** + * Returns the callback registered through + * {@link AbstractHttpAdapter.setOnRouteTriggered}, if any. Read by the + * router when registering routes. + */ + getOnRouteTriggered() { + return this.onRouteTriggered; + } + /** + * Registers a hook to run at the start of every request. No-op by default; + * the built-in adapters accept a `(req, res, done) => void | Promise` + * function and call `done()` to continue processing. Intended for + * instrumentation and devtools. + */ + setOnRequestHook(onRequestHook) { + } + /** + * Registers a hook to run once a response has been sent. No-op by default; + * the built-in adapters accept a `(req, res) => void | Promise` + * function. Intended for instrumentation and devtools. + */ + setOnResponseHook(onResponseHook) { + } + /** + * Called by `app.close()` before the shutdown hooks run. No-op by default; + * override to enter a "shutting down" state. + * + * @see {@link HttpServer.beforeClose} + */ + beforeClose() { + } + /** + * Translates a framework-native error into something the exception filters + * understand. Invoked by the global exception layer with every error it + * receives, before it reaches the filters; the returned value is what the + * filters see. Returns the error unchanged by default. The built-in + * adapters map, for instance, body-parser `SyntaxError`s to + * `BadRequestException`. + */ + mapException(error) { + return error; + } + /** + * Installs the request hook of the built-in HTTP security features as a + * global middleware (`use()`), which fits Express-like frameworks: the hook + * gets the request and the response, and a rejection is handed to + * `next(error)`, i.e. to the exception layer. Override when the framework + * offers an earlier request hook (the Fastify adapter uses `onRequest`). + * + * @see {@link HttpServer.registerSecurityHook} + */ + registerSecurityHook(hook) { + return this.use((request, response, next) => { + const error = hook(request, response); + return error ? next(error) : next(); + }); + } + /** + * Appends a `Set-Cookie` header through {@link AbstractHttpAdapter.appendHeader}, + * so every cookie set during a request is sent, on every platform. The + * value is percent-encoded, `path` defaults to `/` and `maxAge` is in + * seconds (not milliseconds, unlike Express' `res.cookie()`); with + * `signed: true`, the value is signed with the first `cookies.secret`. + * + * Throws a `TypeError` when the name, the value or an attribute is not + * valid per RFC 6265 (which rules out header injection through `;`, CR or + * LF) or when `sameSite: 'none'` or `partitioned` is set without `secure`, + * and an `Error` when `signed` is set but no secret is configured. + * + * @see {@link HttpServer.setCookie} + */ + setCookie(response, name, value, options = {}) { + let cookieValue = value; + if (options.signed) { + if (!this.cookieSigner) { + throw new Error(`Cannot sign cookie "${name}": no cookie secret is configured. Pass "cookies: { secret }" to NestFactory.create().`); + } + if (typeof value !== "string") { + throw new TypeError(`Invalid value for cookie "${name}": expected a string, received ${typeof value}`); + } + cookieValue = this.cookieSigner.sign(value); + } + return this.appendHeader(response, "Set-Cookie", serializeCookie(name, cookieValue, options)); + } + /** + * Appends a `Set-Cookie` header that expires the cookie immediately. + * `path` and `domain` must match the ones the cookie was set with; `maxAge`, + * `expires` and `signed` are ignored. + * + * @see {@link HttpServer.clearCookie} + */ + clearCookie(response, name, options = {}) { + return this.appendHeader(response, "Set-Cookie", serializeCookie(name, "", { + ...options, + maxAge: 0, + expires: /* @__PURE__ */ new Date(0) + })); + } + /** + * Sets the signer used for `signed` cookies. Called by `NestApplication` + * with the signer it builds from the `cookies.secret` application option; + * configure that option instead of calling this method. + * + * @internal + */ + setCookieSigner(signer) { + this.cookieSigner = signer; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/adapters/index.js +var init_adapters = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/adapters/index.js"() { + init_http_adapter(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/application-config.js +var ApplicationConfig; +var init_application_config = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/application-config.js"() { + ApplicationConfig = class { + static { + __name(this, "ApplicationConfig"); + } + ioAdapter; + globalPrefix = ""; + globalPrefixOptions = {}; + globalPipes = []; + globalFilters = []; + globalInterceptors = []; + globalGuards = []; + globalPreRequestHooks = []; + versioningOptions; + routeConflictPolicy; + routeResolutionStrategy; + cookieSigner; + globalRequestPipes = []; + globalRequestFilters = []; + globalRequestInterceptors = []; + globalRequestGuards = []; + constructor(ioAdapter = null) { + this.ioAdapter = ioAdapter; + } + setGlobalPrefix(prefix) { + this.globalPrefix = prefix; + } + getGlobalPrefix() { + return this.globalPrefix; + } + setGlobalPrefixOptions(options) { + this.globalPrefixOptions = options; + } + getGlobalPrefixOptions() { + return this.globalPrefixOptions; + } + setIoAdapter(ioAdapter) { + this.ioAdapter = ioAdapter; + } + getIoAdapter() { + return this.ioAdapter; + } + addGlobalPipe(pipe) { + this.globalPipes.push(pipe); + } + useGlobalPipes(...pipes) { + this.globalPipes = this.globalPipes.concat(pipes); + } + getGlobalFilters() { + return this.globalFilters; + } + addGlobalFilter(filter) { + this.globalFilters.push(filter); + } + useGlobalFilters(...filters) { + this.globalFilters = this.globalFilters.concat(filters); + } + getGlobalPipes() { + return this.globalPipes; + } + getGlobalInterceptors() { + return this.globalInterceptors; + } + addGlobalInterceptor(interceptor) { + this.globalInterceptors.push(interceptor); + } + useGlobalInterceptors(...interceptors) { + this.globalInterceptors = this.globalInterceptors.concat(interceptors); + } + getGlobalGuards() { + return this.globalGuards; + } + addGlobalGuard(guard) { + this.globalGuards.push(guard); + } + useGlobalGuards(...guards) { + this.globalGuards = this.globalGuards.concat(guards); + } + addGlobalRequestInterceptor(wrapper) { + this.globalRequestInterceptors.push(wrapper); + } + getGlobalRequestInterceptors() { + return this.globalRequestInterceptors; + } + addGlobalRequestPipe(wrapper) { + this.globalRequestPipes.push(wrapper); + } + getGlobalRequestPipes() { + return this.globalRequestPipes; + } + addGlobalRequestFilter(wrapper) { + this.globalRequestFilters.push(wrapper); + } + getGlobalRequestFilters() { + return this.globalRequestFilters; + } + addGlobalRequestGuard(wrapper) { + this.globalRequestGuards.push(wrapper); + } + getGlobalRequestGuards() { + return this.globalRequestGuards; + } + registerPreRequestHook(...hooks) { + this.globalPreRequestHooks = this.globalPreRequestHooks.concat(hooks); + } + getGlobalPreRequestHooks() { + return this.globalPreRequestHooks; + } + enableVersioning(options) { + if (Array.isArray(options.defaultVersion)) { + options.defaultVersion = Array.from(new Set(options.defaultVersion)); + } + this.versioningOptions = options; + } + getVersioning() { + return this.versioningOptions; + } + setRouteConflictPolicy(policy) { + this.routeConflictPolicy = policy; + } + getRouteConflictPolicy() { + return this.routeConflictPolicy; + } + setRouteResolutionStrategy(strategy) { + this.routeResolutionStrategy = strategy; + } + getRouteResolutionStrategy() { + return this.routeResolutionStrategy; + } + setCookieSigner(signer) { + this.cookieSigner = signer; + } + getCookieSigner() { + return this.cookieSigner; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/constants.js +var MESSAGES, APP_INTERCEPTOR, APP_PIPE, APP_GUARD, APP_FILTER, ENHANCER_TOKEN_TO_SUBTYPE_MAP; +var init_constants2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/constants.js"() { + MESSAGES = { + APPLICATION_START: `Starting Nest application...`, + APPLICATION_READY: `Nest application successfully started`, + MICROSERVICE_READY: `Nest microservice successfully started`, + UNKNOWN_EXCEPTION_MESSAGE: "Internal server error", + ERROR_DURING_SHUTDOWN: "Error happened during shutdown", + CALL_LISTEN_FIRST: "app.listen() needs to be called before calling app.getUrl()" + }; + APP_INTERCEPTOR = "APP_INTERCEPTOR"; + APP_PIPE = "APP_PIPE"; + APP_GUARD = "APP_GUARD"; + APP_FILTER = "APP_FILTER"; + ENHANCER_TOKEN_TO_SUBTYPE_MAP = { + [APP_GUARD]: "guard", + [APP_INTERCEPTOR]: "interceptor", + [APP_PIPE]: "pipe", + [APP_FILTER]: "filter" + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/metadata-scanner.js +var MetadataScanner; +var init_metadata_scanner = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/metadata-scanner.js"() { + init_internal(); + MetadataScanner = class { + static { + __name(this, "MetadataScanner"); + } + cachedScannedPrototypes = /* @__PURE__ */ new Map(); + /** + * @deprecated + * @see {@link getAllMethodNames} + * @see getAllMethodNames + */ + scanFromPrototype(instance, prototype, callback) { + if (!prototype) { + return []; + } + const visitedNames = /* @__PURE__ */ new Map(); + const result = []; + do { + for (const property of Object.getOwnPropertyNames(prototype)) { + if (visitedNames.has(property)) { + continue; + } + visitedNames.set(property, true); + const descriptor = Object.getOwnPropertyDescriptor(prototype, property); + if (descriptor.set || descriptor.get || isConstructor(property) || !isFunction(prototype[property])) { + continue; + } + const value = callback(property); + if (isNil(value)) { + continue; + } + result.push(value); + } + } while ((prototype = Reflect.getPrototypeOf(prototype)) && prototype !== Object.prototype); + return result; + } + /** + * @deprecated + * @see {@link getAllMethodNames} + * @see getAllMethodNames + */ + *getAllFilteredMethodNames(prototype) { + yield* this.getAllMethodNames(prototype); + } + getAllMethodNames(prototype) { + if (!prototype) { + return []; + } + if (this.cachedScannedPrototypes.has(prototype)) { + return this.cachedScannedPrototypes.get(prototype); + } + const visitedNames = /* @__PURE__ */ new Map(); + const result = []; + this.cachedScannedPrototypes.set(prototype, result); + do { + for (const property of Object.getOwnPropertyNames(prototype)) { + if (visitedNames.has(property)) { + continue; + } + visitedNames.set(property, true); + const descriptor = Object.getOwnPropertyDescriptor(prototype, property); + if (descriptor.set || descriptor.get || isConstructor(property) || !isFunction(prototype[property])) { + continue; + } + result.push(property); + } + } while ((prototype = Reflect.getPrototypeOf(prototype)) && prototype !== Object.prototype); + return result; + } + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js +var require_performanceTimestampProvider = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.performanceTimestampProvider = void 0; + exports.performanceTimestampProvider = { + now: /* @__PURE__ */ __name(function() { + return (exports.performanceTimestampProvider.delegate || performance).now(); + }, "now"), + delegate: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js +var require_animationFrameProvider = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from2) { + for (var i = 0, il = from2.length, j = to.length; i < il; i++, j++) + to[j] = from2[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.animationFrameProvider = void 0; + var Subscription_1 = require_Subscription(); + exports.animationFrameProvider = { + schedule: /* @__PURE__ */ __name(function(callback) { + var request = requestAnimationFrame; + var cancel = cancelAnimationFrame; + var delegate = exports.animationFrameProvider.delegate; + if (delegate) { + request = delegate.requestAnimationFrame; + cancel = delegate.cancelAnimationFrame; + } + var handle = request(function(timestamp) { + cancel = void 0; + callback(timestamp); + }); + return new Subscription_1.Subscription(function() { + return cancel === null || cancel === void 0 ? void 0 : cancel(handle); + }); + }, "schedule"), + requestAnimationFrame: /* @__PURE__ */ __name(function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var delegate = exports.animationFrameProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args))); + }, "requestAnimationFrame"), + cancelAnimationFrame: /* @__PURE__ */ __name(function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var delegate = exports.animationFrameProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args))); + }, "cancelAnimationFrame"), + delegate: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js +var require_animationFrames = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.animationFrames = void 0; + var Observable_1 = require_Observable(); + var performanceTimestampProvider_1 = require_performanceTimestampProvider(); + var animationFrameProvider_1 = require_animationFrameProvider(); + function animationFrames(timestampProvider) { + return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES; + } + __name(animationFrames, "animationFrames"); + exports.animationFrames = animationFrames; + function animationFramesFactory(timestampProvider) { + return new Observable_1.Observable(function(subscriber) { + var provider = timestampProvider || performanceTimestampProvider_1.performanceTimestampProvider; + var start = provider.now(); + var id = 0; + var run = /* @__PURE__ */ __name(function() { + if (!subscriber.closed) { + id = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function(timestamp) { + id = 0; + var now = provider.now(); + subscriber.next({ + timestamp: timestampProvider ? now : timestamp, + elapsed: now - start + }); + run(); + }); + } + }, "run"); + run(); + return function() { + if (id) { + animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id); + } + }; + }); + } + __name(animationFramesFactory, "animationFramesFactory"); + var DEFAULT_ANIMATION_FRAMES = animationFramesFactory(); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/Immediate.js +var require_Immediate = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/Immediate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.TestTools = exports.Immediate = void 0; + var nextHandle = 1; + var resolved; + var activeHandles = {}; + function findAndClearHandle(handle) { + if (handle in activeHandles) { + delete activeHandles[handle]; + return true; + } + return false; + } + __name(findAndClearHandle, "findAndClearHandle"); + exports.Immediate = { + setImmediate: /* @__PURE__ */ __name(function(cb) { + var handle = nextHandle++; + activeHandles[handle] = true; + if (!resolved) { + resolved = Promise.resolve(); + } + resolved.then(function() { + return findAndClearHandle(handle) && cb(); + }); + return handle; + }, "setImmediate"), + clearImmediate: /* @__PURE__ */ __name(function(handle) { + findAndClearHandle(handle); + }, "clearImmediate") + }; + exports.TestTools = { + pending: /* @__PURE__ */ __name(function() { + return Object.keys(activeHandles).length; + }, "pending") + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js +var require_immediateProvider = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from2) { + for (var i = 0, il = from2.length, j = to.length; i < il; i++, j++) + to[j] = from2[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.immediateProvider = void 0; + var Immediate_1 = require_Immediate(); + var setImmediate2 = Immediate_1.Immediate.setImmediate; + var clearImmediate = Immediate_1.Immediate.clearImmediate; + exports.immediateProvider = { + setImmediate: /* @__PURE__ */ __name(function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var delegate = exports.immediateProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate2).apply(void 0, __spreadArray([], __read(args))); + }, "setImmediate"), + clearImmediate: /* @__PURE__ */ __name(function(handle) { + var delegate = exports.immediateProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle); + }, "clearImmediate"), + delegate: void 0 + }; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js +var require_AsapAction = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsapAction = void 0; + var AsyncAction_1 = require_AsyncAction(); + var immediateProvider_1 = require_immediateProvider(); + var AsapAction = (function(_super) { + __extends(AsapAction2, _super); + function AsapAction2(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + __name(AsapAction2, "AsapAction"); + AsapAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay !== null && delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.actions.push(this); + return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0))); + }; + AsapAction2.prototype.recycleAsyncId = function(scheduler, id, delay) { + var _a; + if (delay === void 0) { + delay = 0; + } + if (delay != null ? delay > 0 : this.delay > 0) { + return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + } + var actions = scheduler.actions; + if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { + immediateProvider_1.immediateProvider.clearImmediate(id); + if (scheduler._scheduled === id) { + scheduler._scheduled = void 0; + } + } + return void 0; + }; + return AsapAction2; + })(AsyncAction_1.AsyncAction); + exports.AsapAction = AsapAction; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js +var require_AsapScheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsapScheduler = void 0; + var AsyncScheduler_1 = require_AsyncScheduler(); + var AsapScheduler = (function(_super) { + __extends(AsapScheduler2, _super); + function AsapScheduler2() { + return _super !== null && _super.apply(this, arguments) || this; + } + __name(AsapScheduler2, "AsapScheduler"); + AsapScheduler2.prototype.flush = function(action) { + this._active = true; + var flushId = this._scheduled; + this._scheduled = void 0; + var actions = this.actions; + var error; + action = action || actions.shift(); + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while ((action = actions[0]) && action.id === flushId && actions.shift()); + this._active = false; + if (error) { + while ((action = actions[0]) && action.id === flushId && actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AsapScheduler2; + })(AsyncScheduler_1.AsyncScheduler); + exports.AsapScheduler = AsapScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/asap.js +var require_asap = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/asap.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.asap = exports.asapScheduler = void 0; + var AsapAction_1 = require_AsapAction(); + var AsapScheduler_1 = require_AsapScheduler(); + exports.asapScheduler = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction); + exports.asap = exports.asapScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js +var require_QueueAction = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.QueueAction = void 0; + var AsyncAction_1 = require_AsyncAction(); + var QueueAction = (function(_super) { + __extends(QueueAction2, _super); + function QueueAction2(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + __name(QueueAction2, "QueueAction"); + QueueAction2.prototype.schedule = function(state, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay > 0) { + return _super.prototype.schedule.call(this, state, delay); + } + this.delay = delay; + this.state = state; + this.scheduler.flush(this); + return this; + }; + QueueAction2.prototype.execute = function(state, delay) { + return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay); + }; + QueueAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay != null && delay > 0 || delay == null && this.delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.flush(this); + return 0; + }; + return QueueAction2; + })(AsyncAction_1.AsyncAction); + exports.QueueAction = QueueAction; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js +var require_QueueScheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.QueueScheduler = void 0; + var AsyncScheduler_1 = require_AsyncScheduler(); + var QueueScheduler = (function(_super) { + __extends(QueueScheduler2, _super); + function QueueScheduler2() { + return _super !== null && _super.apply(this, arguments) || this; + } + __name(QueueScheduler2, "QueueScheduler"); + return QueueScheduler2; + })(AsyncScheduler_1.AsyncScheduler); + exports.QueueScheduler = QueueScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/queue.js +var require_queue = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/queue.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.queue = exports.queueScheduler = void 0; + var QueueAction_1 = require_QueueAction(); + var QueueScheduler_1 = require_QueueScheduler(); + exports.queueScheduler = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction); + exports.queue = exports.queueScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js +var require_AnimationFrameAction = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AnimationFrameAction = void 0; + var AsyncAction_1 = require_AsyncAction(); + var animationFrameProvider_1 = require_animationFrameProvider(); + var AnimationFrameAction = (function(_super) { + __extends(AnimationFrameAction2, _super); + function AnimationFrameAction2(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + __name(AnimationFrameAction2, "AnimationFrameAction"); + AnimationFrameAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay !== null && delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.actions.push(this); + return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function() { + return scheduler.flush(void 0); + })); + }; + AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler, id, delay) { + var _a; + if (delay === void 0) { + delay = 0; + } + if (delay != null ? delay > 0 : this.delay > 0) { + return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + } + var actions = scheduler.actions; + if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { + animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id); + scheduler._scheduled = void 0; + } + return void 0; + }; + return AnimationFrameAction2; + })(AsyncAction_1.AsyncAction); + exports.AnimationFrameAction = AnimationFrameAction; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js +var require_AnimationFrameScheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AnimationFrameScheduler = void 0; + var AsyncScheduler_1 = require_AsyncScheduler(); + var AnimationFrameScheduler = (function(_super) { + __extends(AnimationFrameScheduler2, _super); + function AnimationFrameScheduler2() { + return _super !== null && _super.apply(this, arguments) || this; + } + __name(AnimationFrameScheduler2, "AnimationFrameScheduler"); + AnimationFrameScheduler2.prototype.flush = function(action) { + this._active = true; + var flushId; + if (action) { + flushId = action.id; + } else { + flushId = this._scheduled; + this._scheduled = void 0; + } + var actions = this.actions; + var error; + action = action || actions.shift(); + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while ((action = actions[0]) && action.id === flushId && actions.shift()); + this._active = false; + if (error) { + while ((action = actions[0]) && action.id === flushId && actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AnimationFrameScheduler2; + })(AsyncScheduler_1.AsyncScheduler); + exports.AnimationFrameScheduler = AnimationFrameScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js +var require_animationFrame = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.animationFrame = exports.animationFrameScheduler = void 0; + var AnimationFrameAction_1 = require_AnimationFrameAction(); + var AnimationFrameScheduler_1 = require_AnimationFrameScheduler(); + exports.animationFrameScheduler = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction); + exports.animationFrame = exports.animationFrameScheduler; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js +var require_VirtualTimeScheduler = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js"(exports) { + "use strict"; + var __extends = exports && exports.__extends || /* @__PURE__ */ (function() { + var extendStatics = /* @__PURE__ */ __name(function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }, "extendStatics"); + return function(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { + this.constructor = d; + } + __name(__, "__"); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.VirtualAction = exports.VirtualTimeScheduler = void 0; + var AsyncAction_1 = require_AsyncAction(); + var Subscription_1 = require_Subscription(); + var AsyncScheduler_1 = require_AsyncScheduler(); + var VirtualTimeScheduler = (function(_super) { + __extends(VirtualTimeScheduler2, _super); + function VirtualTimeScheduler2(schedulerActionCtor, maxFrames) { + if (schedulerActionCtor === void 0) { + schedulerActionCtor = VirtualAction; + } + if (maxFrames === void 0) { + maxFrames = Infinity; + } + var _this = _super.call(this, schedulerActionCtor, function() { + return _this.frame; + }) || this; + _this.maxFrames = maxFrames; + _this.frame = 0; + _this.index = -1; + return _this; + } + __name(VirtualTimeScheduler2, "VirtualTimeScheduler"); + VirtualTimeScheduler2.prototype.flush = function() { + var _a = this, actions = _a.actions, maxFrames = _a.maxFrames; + var error; + var action; + while ((action = actions[0]) && action.delay <= maxFrames) { + actions.shift(); + this.frame = action.delay; + if (error = action.execute(action.state, action.delay)) { + break; + } + } + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + VirtualTimeScheduler2.frameTimeFactor = 10; + return VirtualTimeScheduler2; + })(AsyncScheduler_1.AsyncScheduler); + exports.VirtualTimeScheduler = VirtualTimeScheduler; + var VirtualAction = (function(_super) { + __extends(VirtualAction2, _super); + function VirtualAction2(scheduler, work, index) { + if (index === void 0) { + index = scheduler.index += 1; + } + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.index = index; + _this.active = true; + _this.index = scheduler.index = index; + return _this; + } + __name(VirtualAction2, "VirtualAction"); + VirtualAction2.prototype.schedule = function(state, delay) { + if (delay === void 0) { + delay = 0; + } + if (Number.isFinite(delay)) { + if (!this.id) { + return _super.prototype.schedule.call(this, state, delay); + } + this.active = false; + var action = new VirtualAction2(this.scheduler, this.work); + this.add(action); + return action.schedule(state, delay); + } else { + return Subscription_1.Subscription.EMPTY; + } + }; + VirtualAction2.prototype.requestAsyncId = function(scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + this.delay = scheduler.frame + delay; + var actions = scheduler.actions; + actions.push(this); + actions.sort(VirtualAction2.sortActions); + return 1; + }; + VirtualAction2.prototype.recycleAsyncId = function(scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + return void 0; + }; + VirtualAction2.prototype._execute = function(state, delay) { + if (this.active === true) { + return _super.prototype._execute.call(this, state, delay); + } + }; + VirtualAction2.sortActions = function(a, b) { + if (a.delay === b.delay) { + if (a.index === b.index) { + return 0; + } else if (a.index > b.index) { + return 1; + } else { + return -1; + } + } else if (a.delay > b.delay) { + return 1; + } else { + return -1; + } + }; + return VirtualAction2; + })(AsyncAction_1.AsyncAction); + exports.VirtualAction = VirtualAction; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isObservable.js +var require_isObservable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/util/isObservable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isObservable = void 0; + var Observable_1 = require_Observable(); + var isFunction_1 = require_isFunction(); + function isObservable6(obj) { + return !!obj && (obj instanceof Observable_1.Observable || isFunction_1.isFunction(obj.lift) && isFunction_1.isFunction(obj.subscribe)); + } + __name(isObservable6, "isObservable"); + exports.isObservable = isObservable6; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/lastValueFrom.js +var require_lastValueFrom = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/lastValueFrom.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.lastValueFrom = void 0; + var EmptyError_1 = require_EmptyError(); + function lastValueFrom4(source, config) { + var hasConfig = typeof config === "object"; + return new Promise(function(resolve, reject) { + var _hasValue = false; + var _value; + source.subscribe({ + next: /* @__PURE__ */ __name(function(value) { + _value = value; + _hasValue = true; + }, "next"), + error: reject, + complete: /* @__PURE__ */ __name(function() { + if (_hasValue) { + resolve(_value); + } else if (hasConfig) { + resolve(config.defaultValue); + } else { + reject(new EmptyError_1.EmptyError()); + } + }, "complete") + }); + }); + } + __name(lastValueFrom4, "lastValueFrom"); + exports.lastValueFrom = lastValueFrom4; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/firstValueFrom.js +var require_firstValueFrom = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/firstValueFrom.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.firstValueFrom = void 0; + var EmptyError_1 = require_EmptyError(); + var Subscriber_1 = require_Subscriber(); + function firstValueFrom(source, config) { + var hasConfig = typeof config === "object"; + return new Promise(function(resolve, reject) { + var subscriber = new Subscriber_1.SafeSubscriber({ + next: /* @__PURE__ */ __name(function(value) { + resolve(value); + subscriber.unsubscribe(); + }, "next"), + error: reject, + complete: /* @__PURE__ */ __name(function() { + if (hasConfig) { + resolve(config.defaultValue); + } else { + reject(new EmptyError_1.EmptyError()); + } + }, "complete") + }); + source.subscribe(subscriber); + }); + } + __name(firstValueFrom, "firstValueFrom"); + exports.firstValueFrom = firstValueFrom; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js +var require_bindCallbackInternals = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + var __spreadArray = exports && exports.__spreadArray || function(to, from2) { + for (var i = 0, il = from2.length, j = to.length; i < il; i++, j++) + to[j] = from2[i]; + return to; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bindCallbackInternals = void 0; + var isScheduler_1 = require_isScheduler(); + var Observable_1 = require_Observable(); + var subscribeOn_1 = require_subscribeOn(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + var observeOn_1 = require_observeOn(); + var AsyncSubject_1 = require_AsyncSubject(); + function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) { + if (resultSelector) { + if (isScheduler_1.isScheduler(resultSelector)) { + scheduler = resultSelector; + } else { + return function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler).apply(this, args).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)); + }; + } + } + if (scheduler) { + return function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler)); + }; + } + return function() { + var _this = this; + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var subject = new AsyncSubject_1.AsyncSubject(); + var uninitialized = true; + return new Observable_1.Observable(function(subscriber) { + var subs = subject.subscribe(subscriber); + if (uninitialized) { + uninitialized = false; + var isAsync_1 = false; + var isComplete_1 = false; + callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [ + function() { + var results = []; + for (var _i2 = 0; _i2 < arguments.length; _i2++) { + results[_i2] = arguments[_i2]; + } + if (isNodeStyle) { + var err = results.shift(); + if (err != null) { + subject.error(err); + return; + } + } + subject.next(1 < results.length ? results : results[0]); + isComplete_1 = true; + if (isAsync_1) { + subject.complete(); + } + } + ])); + if (isComplete_1) { + subject.complete(); + } + isAsync_1 = true; + } + return subs; + }); + }; + } + __name(bindCallbackInternals, "bindCallbackInternals"); + exports.bindCallbackInternals = bindCallbackInternals; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js +var require_bindCallback = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bindCallback = void 0; + var bindCallbackInternals_1 = require_bindCallbackInternals(); + function bindCallback(callbackFunc, resultSelector, scheduler) { + return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler); + } + __name(bindCallback, "bindCallback"); + exports.bindCallback = bindCallback; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js +var require_bindNodeCallback = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bindNodeCallback = void 0; + var bindCallbackInternals_1 = require_bindCallbackInternals(); + function bindNodeCallback(callbackFunc, resultSelector, scheduler) { + return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler); + } + __name(bindNodeCallback, "bindNodeCallback"); + exports.bindNodeCallback = bindNodeCallback; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/defer.js +var require_defer = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/defer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defer = void 0; + var Observable_1 = require_Observable(); + var innerFrom_1 = require_innerFrom(); + function defer2(observableFactory) { + return new Observable_1.Observable(function(subscriber) { + innerFrom_1.innerFrom(observableFactory()).subscribe(subscriber); + }); + } + __name(defer2, "defer"); + exports.defer = defer2; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/connectable.js +var require_connectable = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/connectable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.connectable = void 0; + var Subject_1 = require_Subject(); + var Observable_1 = require_Observable(); + var defer_1 = require_defer(); + var DEFAULT_CONFIG = { + connector: /* @__PURE__ */ __name(function() { + return new Subject_1.Subject(); + }, "connector"), + resetOnDisconnect: true + }; + function connectable(source, config) { + if (config === void 0) { + config = DEFAULT_CONFIG; + } + var connection = null; + var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a; + var subject = connector(); + var result = new Observable_1.Observable(function(subscriber) { + return subject.subscribe(subscriber); + }); + result.connect = function() { + if (!connection || connection.closed) { + connection = defer_1.defer(function() { + return source; + }).subscribe(subject); + if (resetOnDisconnect) { + connection.add(function() { + return subject = connector(); + }); + } + } + return connection; + }; + return result; + } + __name(connectable, "connectable"); + exports.connectable = connectable; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js +var require_forkJoin = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.forkJoin = void 0; + var Observable_1 = require_Observable(); + var argsArgArrayOrObject_1 = require_argsArgArrayOrObject(); + var innerFrom_1 = require_innerFrom(); + var args_1 = require_args(); + var OperatorSubscriber_1 = require_OperatorSubscriber(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + var createObject_1 = require_createObject(); + function forkJoin() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var resultSelector = args_1.popResultSelector(args); + var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys; + var result = new Observable_1.Observable(function(subscriber) { + var length = sources.length; + if (!length) { + subscriber.complete(); + return; + } + var values = new Array(length); + var remainingCompletions = length; + var remainingEmissions = length; + var _loop_1 = /* @__PURE__ */ __name(function(sourceIndex2) { + var hasValue = false; + innerFrom_1.innerFrom(sources[sourceIndex2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) { + if (!hasValue) { + hasValue = true; + remainingEmissions--; + } + values[sourceIndex2] = value; + }, function() { + return remainingCompletions--; + }, void 0, function() { + if (!remainingCompletions || !hasValue) { + if (!remainingEmissions) { + subscriber.next(keys ? createObject_1.createObject(keys, values) : values); + } + subscriber.complete(); + } + })); + }, "_loop_1"); + for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) { + _loop_1(sourceIndex); + } + }); + return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result; + } + __name(forkJoin, "forkJoin"); + exports.forkJoin = forkJoin; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js +var require_fromEvent = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js"(exports) { + "use strict"; + var __read = exports && exports.__read || function(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromEvent = void 0; + var innerFrom_1 = require_innerFrom(); + var Observable_1 = require_Observable(); + var mergeMap_1 = require_mergeMap(); + var isArrayLike_1 = require_isArrayLike(); + var isFunction_1 = require_isFunction(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + var nodeEventEmitterMethods = ["addListener", "removeListener"]; + var eventTargetMethods = ["addEventListener", "removeEventListener"]; + var jqueryMethods = ["on", "off"]; + function fromEvent(target, eventName, options, resultSelector) { + if (isFunction_1.isFunction(options)) { + resultSelector = options; + options = void 0; + } + if (resultSelector) { + return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)); + } + var _a = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) { + return function(handler) { + return target[methodName](eventName, handler, options); + }; + }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add = _a[0], remove = _a[1]; + if (!add) { + if (isArrayLike_1.isArrayLike(target)) { + return mergeMap_1.mergeMap(function(subTarget) { + return fromEvent(subTarget, eventName, options); + })(innerFrom_1.innerFrom(target)); + } + } + if (!add) { + throw new TypeError("Invalid event target"); + } + return new Observable_1.Observable(function(subscriber) { + var handler = /* @__PURE__ */ __name(function() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return subscriber.next(1 < args.length ? args : args[0]); + }, "handler"); + add(handler); + return function() { + return remove(handler); + }; + }); + } + __name(fromEvent, "fromEvent"); + exports.fromEvent = fromEvent; + function toCommonHandlerRegistry(target, eventName) { + return function(methodName) { + return function(handler) { + return target[methodName](eventName, handler); + }; + }; + } + __name(toCommonHandlerRegistry, "toCommonHandlerRegistry"); + function isNodeStyleEventEmitter(target) { + return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener); + } + __name(isNodeStyleEventEmitter, "isNodeStyleEventEmitter"); + function isJQueryStyleEventEmitter(target) { + return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off); + } + __name(isJQueryStyleEventEmitter, "isJQueryStyleEventEmitter"); + function isEventTarget(target) { + return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener); + } + __name(isEventTarget, "isEventTarget"); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js +var require_fromEventPattern = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromEventPattern = void 0; + var Observable_1 = require_Observable(); + var isFunction_1 = require_isFunction(); + var mapOneOrManyArgs_1 = require_mapOneOrManyArgs(); + function fromEventPattern(addHandler, removeHandler, resultSelector) { + if (resultSelector) { + return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)); + } + return new Observable_1.Observable(function(subscriber) { + var handler = /* @__PURE__ */ __name(function() { + var e = []; + for (var _i = 0; _i < arguments.length; _i++) { + e[_i] = arguments[_i]; + } + return subscriber.next(e.length === 1 ? e[0] : e); + }, "handler"); + var retValue = addHandler(handler); + return isFunction_1.isFunction(removeHandler) ? function() { + return removeHandler(handler, retValue); + } : void 0; + }); + } + __name(fromEventPattern, "fromEventPattern"); + exports.fromEventPattern = fromEventPattern; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/generate.js +var require_generate = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/generate.js"(exports) { + "use strict"; + var __generator = exports && exports.__generator || function(thisArg, body) { + var _ = { label: 0, sent: /* @__PURE__ */ __name(function() { + if (t[0] & 1) throw t[1]; + return t[1]; + }, "sent"), trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + __name(verb, "verb"); + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + __name(step, "step"); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.generate = void 0; + var identity_1 = require_identity(); + var isScheduler_1 = require_isScheduler(); + var defer_1 = require_defer(); + var scheduleIterable_1 = require_scheduleIterable(); + function generate(initialStateOrOptions, condition, iterate20, resultSelectorOrScheduler, scheduler) { + var _a, _b; + var resultSelector; + var initialState; + if (arguments.length === 1) { + _a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate20 = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a.scheduler; + } else { + initialState = initialStateOrOptions; + if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) { + resultSelector = identity_1.identity; + scheduler = resultSelectorOrScheduler; + } else { + resultSelector = resultSelectorOrScheduler; + } + } + function gen() { + var state; + return __generator(this, function(_a2) { + switch (_a2.label) { + case 0: + state = initialState; + _a2.label = 1; + case 1: + if (!(!condition || condition(state))) return [3, 4]; + return [4, resultSelector(state)]; + case 2: + _a2.sent(); + _a2.label = 3; + case 3: + state = iterate20(state); + return [3, 1]; + case 4: + return [2]; + } + }); + } + __name(gen, "gen"); + return defer_1.defer(scheduler ? function() { + return scheduleIterable_1.scheduleIterable(gen(), scheduler); + } : gen); + } + __name(generate, "generate"); + exports.generate = generate; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/iif.js +var require_iif = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/iif.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.iif = void 0; + var defer_1 = require_defer(); + function iif(condition, trueResult, falseResult) { + return defer_1.defer(function() { + return condition() ? trueResult : falseResult; + }); + } + __name(iif, "iif"); + exports.iif = iif; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/merge.js +var require_merge = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/merge.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.merge = void 0; + var mergeAll_1 = require_mergeAll(); + var innerFrom_1 = require_innerFrom(); + var empty_1 = require_empty(); + var args_1 = require_args(); + var from_1 = require_from(); + function merge() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = args_1.popScheduler(args); + var concurrent = args_1.popNumber(args, Infinity); + var sources = args; + return !sources.length ? empty_1.EMPTY : sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler)); + } + __name(merge, "merge"); + exports.merge = merge; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/never.js +var require_never = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/never.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.never = exports.NEVER = void 0; + var Observable_1 = require_Observable(); + var noop_1 = require_noop(); + exports.NEVER = new Observable_1.Observable(noop_1.noop); + function never() { + return exports.NEVER; + } + __name(never, "never"); + exports.never = never; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/pairs.js +var require_pairs = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/pairs.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.pairs = void 0; + var from_1 = require_from(); + function pairs(obj, scheduler) { + return from_1.from(Object.entries(obj), scheduler); + } + __name(pairs, "pairs"); + exports.pairs = pairs; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/partition.js +var require_partition = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/partition.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.partition = void 0; + var not_1 = require_not(); + var filter_1 = require_filter(); + var innerFrom_1 = require_innerFrom(); + function partition(source, predicate, thisArg) { + return [filter_1.filter(predicate, thisArg)(innerFrom_1.innerFrom(source)), filter_1.filter(not_1.not(predicate, thisArg))(innerFrom_1.innerFrom(source))]; + } + __name(partition, "partition"); + exports.partition = partition; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/range.js +var require_range2 = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/range.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.range = void 0; + var Observable_1 = require_Observable(); + var empty_1 = require_empty(); + function range(start, count, scheduler) { + if (count == null) { + count = start; + start = 0; + } + if (count <= 0) { + return empty_1.EMPTY; + } + var end = count + start; + return new Observable_1.Observable(scheduler ? function(subscriber) { + var n = start; + return scheduler.schedule(function() { + if (n < end) { + subscriber.next(n++); + this.schedule(); + } else { + subscriber.complete(); + } + }); + } : function(subscriber) { + var n = start; + while (n < end && !subscriber.closed) { + subscriber.next(n++); + } + subscriber.complete(); + }); + } + __name(range, "range"); + exports.range = range; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/using.js +var require_using = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/observable/using.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.using = void 0; + var Observable_1 = require_Observable(); + var innerFrom_1 = require_innerFrom(); + var empty_1 = require_empty(); + function using(resourceFactory, observableFactory) { + return new Observable_1.Observable(function(subscriber) { + var resource = resourceFactory(); + var result = observableFactory(resource); + var source = result ? innerFrom_1.innerFrom(result) : empty_1.EMPTY; + source.subscribe(subscriber); + return function() { + if (resource) { + resource.unsubscribe(); + } + }; + }); + } + __name(using, "using"); + exports.using = using; + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/types.js +var require_types = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/index.js +var require_cjs = __commonJS({ + "../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: /* @__PURE__ */ __name(function() { + return m[k]; + }, "get") }); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.interval = exports.iif = exports.generate = exports.fromEventPattern = exports.fromEvent = exports.from = exports.forkJoin = exports.empty = exports.defer = exports.connectable = exports.concat = exports.combineLatest = exports.bindNodeCallback = exports.bindCallback = exports.UnsubscriptionError = exports.TimeoutError = exports.SequenceError = exports.ObjectUnsubscribedError = exports.NotFoundError = exports.EmptyError = exports.ArgumentOutOfRangeError = exports.firstValueFrom = exports.lastValueFrom = exports.isObservable = exports.identity = exports.noop = exports.pipe = exports.NotificationKind = exports.Notification = exports.Subscriber = exports.Subscription = exports.Scheduler = exports.VirtualAction = exports.VirtualTimeScheduler = exports.animationFrameScheduler = exports.animationFrame = exports.queueScheduler = exports.queue = exports.asyncScheduler = exports.async = exports.asapScheduler = exports.asap = exports.AsyncSubject = exports.ReplaySubject = exports.BehaviorSubject = exports.Subject = exports.animationFrames = exports.observable = exports.ConnectableObservable = exports.Observable = void 0; + exports.filter = exports.expand = exports.exhaustMap = exports.exhaustAll = exports.exhaust = exports.every = exports.endWith = exports.elementAt = exports.distinctUntilKeyChanged = exports.distinctUntilChanged = exports.distinct = exports.dematerialize = exports.delayWhen = exports.delay = exports.defaultIfEmpty = exports.debounceTime = exports.debounce = exports.count = exports.connect = exports.concatWith = exports.concatMapTo = exports.concatMap = exports.concatAll = exports.combineLatestWith = exports.combineLatestAll = exports.combineAll = exports.catchError = exports.bufferWhen = exports.bufferToggle = exports.bufferTime = exports.bufferCount = exports.buffer = exports.auditTime = exports.audit = exports.config = exports.NEVER = exports.EMPTY = exports.scheduled = exports.zip = exports.using = exports.timer = exports.throwError = exports.range = exports.race = exports.partition = exports.pairs = exports.onErrorResumeNext = exports.of = exports.never = exports.merge = void 0; + exports.switchMap = exports.switchAll = exports.subscribeOn = exports.startWith = exports.skipWhile = exports.skipUntil = exports.skipLast = exports.skip = exports.single = exports.shareReplay = exports.share = exports.sequenceEqual = exports.scan = exports.sampleTime = exports.sample = exports.refCount = exports.retryWhen = exports.retry = exports.repeatWhen = exports.repeat = exports.reduce = exports.raceWith = exports.publishReplay = exports.publishLast = exports.publishBehavior = exports.publish = exports.pluck = exports.pairwise = exports.onErrorResumeNextWith = exports.observeOn = exports.multicast = exports.min = exports.mergeWith = exports.mergeScan = exports.mergeMapTo = exports.mergeMap = exports.flatMap = exports.mergeAll = exports.max = exports.materialize = exports.mapTo = exports.map = exports.last = exports.isEmpty = exports.ignoreElements = exports.groupBy = exports.first = exports.findIndex = exports.find = exports.finalize = void 0; + exports.zipWith = exports.zipAll = exports.withLatestFrom = exports.windowWhen = exports.windowToggle = exports.windowTime = exports.windowCount = exports.window = exports.toArray = exports.timestamp = exports.timeoutWith = exports.timeout = exports.timeInterval = exports.throwIfEmpty = exports.throttleTime = exports.throttle = exports.tap = exports.takeWhile = exports.takeUntil = exports.takeLast = exports.take = exports.switchScan = exports.switchMapTo = void 0; + var Observable_1 = require_Observable(); + Object.defineProperty(exports, "Observable", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Observable_1.Observable; + }, "get") }); + var ConnectableObservable_1 = require_ConnectableObservable(); + Object.defineProperty(exports, "ConnectableObservable", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return ConnectableObservable_1.ConnectableObservable; + }, "get") }); + var observable_1 = require_observable(); + Object.defineProperty(exports, "observable", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return observable_1.observable; + }, "get") }); + var animationFrames_1 = require_animationFrames(); + Object.defineProperty(exports, "animationFrames", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return animationFrames_1.animationFrames; + }, "get") }); + var Subject_1 = require_Subject(); + Object.defineProperty(exports, "Subject", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Subject_1.Subject; + }, "get") }); + var BehaviorSubject_1 = require_BehaviorSubject(); + Object.defineProperty(exports, "BehaviorSubject", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return BehaviorSubject_1.BehaviorSubject; + }, "get") }); + var ReplaySubject_1 = require_ReplaySubject(); + Object.defineProperty(exports, "ReplaySubject", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return ReplaySubject_1.ReplaySubject; + }, "get") }); + var AsyncSubject_1 = require_AsyncSubject(); + Object.defineProperty(exports, "AsyncSubject", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return AsyncSubject_1.AsyncSubject; + }, "get") }); + var asap_1 = require_asap(); + Object.defineProperty(exports, "asap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return asap_1.asap; + }, "get") }); + Object.defineProperty(exports, "asapScheduler", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return asap_1.asapScheduler; + }, "get") }); + var async_1 = require_async(); + Object.defineProperty(exports, "async", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return async_1.async; + }, "get") }); + Object.defineProperty(exports, "asyncScheduler", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return async_1.asyncScheduler; + }, "get") }); + var queue_1 = require_queue(); + Object.defineProperty(exports, "queue", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return queue_1.queue; + }, "get") }); + Object.defineProperty(exports, "queueScheduler", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return queue_1.queueScheduler; + }, "get") }); + var animationFrame_1 = require_animationFrame(); + Object.defineProperty(exports, "animationFrame", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return animationFrame_1.animationFrame; + }, "get") }); + Object.defineProperty(exports, "animationFrameScheduler", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return animationFrame_1.animationFrameScheduler; + }, "get") }); + var VirtualTimeScheduler_1 = require_VirtualTimeScheduler(); + Object.defineProperty(exports, "VirtualTimeScheduler", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return VirtualTimeScheduler_1.VirtualTimeScheduler; + }, "get") }); + Object.defineProperty(exports, "VirtualAction", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return VirtualTimeScheduler_1.VirtualAction; + }, "get") }); + var Scheduler_1 = require_Scheduler(); + Object.defineProperty(exports, "Scheduler", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Scheduler_1.Scheduler; + }, "get") }); + var Subscription_1 = require_Subscription(); + Object.defineProperty(exports, "Subscription", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Subscription_1.Subscription; + }, "get") }); + var Subscriber_1 = require_Subscriber(); + Object.defineProperty(exports, "Subscriber", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Subscriber_1.Subscriber; + }, "get") }); + var Notification_1 = require_Notification(); + Object.defineProperty(exports, "Notification", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Notification_1.Notification; + }, "get") }); + Object.defineProperty(exports, "NotificationKind", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return Notification_1.NotificationKind; + }, "get") }); + var pipe_1 = require_pipe(); + Object.defineProperty(exports, "pipe", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return pipe_1.pipe; + }, "get") }); + var noop_1 = require_noop(); + Object.defineProperty(exports, "noop", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return noop_1.noop; + }, "get") }); + var identity_1 = require_identity(); + Object.defineProperty(exports, "identity", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return identity_1.identity; + }, "get") }); + var isObservable_1 = require_isObservable(); + Object.defineProperty(exports, "isObservable", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return isObservable_1.isObservable; + }, "get") }); + var lastValueFrom_1 = require_lastValueFrom(); + Object.defineProperty(exports, "lastValueFrom", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return lastValueFrom_1.lastValueFrom; + }, "get") }); + var firstValueFrom_1 = require_firstValueFrom(); + Object.defineProperty(exports, "firstValueFrom", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return firstValueFrom_1.firstValueFrom; + }, "get") }); + var ArgumentOutOfRangeError_1 = require_ArgumentOutOfRangeError(); + Object.defineProperty(exports, "ArgumentOutOfRangeError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return ArgumentOutOfRangeError_1.ArgumentOutOfRangeError; + }, "get") }); + var EmptyError_1 = require_EmptyError(); + Object.defineProperty(exports, "EmptyError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return EmptyError_1.EmptyError; + }, "get") }); + var NotFoundError_1 = require_NotFoundError(); + Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return NotFoundError_1.NotFoundError; + }, "get") }); + var ObjectUnsubscribedError_1 = require_ObjectUnsubscribedError(); + Object.defineProperty(exports, "ObjectUnsubscribedError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return ObjectUnsubscribedError_1.ObjectUnsubscribedError; + }, "get") }); + var SequenceError_1 = require_SequenceError(); + Object.defineProperty(exports, "SequenceError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return SequenceError_1.SequenceError; + }, "get") }); + var timeout_1 = require_timeout(); + Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeout_1.TimeoutError; + }, "get") }); + var UnsubscriptionError_1 = require_UnsubscriptionError(); + Object.defineProperty(exports, "UnsubscriptionError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return UnsubscriptionError_1.UnsubscriptionError; + }, "get") }); + var bindCallback_1 = require_bindCallback(); + Object.defineProperty(exports, "bindCallback", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bindCallback_1.bindCallback; + }, "get") }); + var bindNodeCallback_1 = require_bindNodeCallback(); + Object.defineProperty(exports, "bindNodeCallback", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bindNodeCallback_1.bindNodeCallback; + }, "get") }); + var combineLatest_1 = require_combineLatest(); + Object.defineProperty(exports, "combineLatest", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineLatest_1.combineLatest; + }, "get") }); + var concat_1 = require_concat(); + Object.defineProperty(exports, "concat", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concat_1.concat; + }, "get") }); + var connectable_1 = require_connectable(); + Object.defineProperty(exports, "connectable", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return connectable_1.connectable; + }, "get") }); + var defer_1 = require_defer(); + Object.defineProperty(exports, "defer", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return defer_1.defer; + }, "get") }); + var empty_1 = require_empty(); + Object.defineProperty(exports, "empty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return empty_1.empty; + }, "get") }); + var forkJoin_1 = require_forkJoin(); + Object.defineProperty(exports, "forkJoin", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return forkJoin_1.forkJoin; + }, "get") }); + var from_1 = require_from(); + Object.defineProperty(exports, "from", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return from_1.from; + }, "get") }); + var fromEvent_1 = require_fromEvent(); + Object.defineProperty(exports, "fromEvent", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return fromEvent_1.fromEvent; + }, "get") }); + var fromEventPattern_1 = require_fromEventPattern(); + Object.defineProperty(exports, "fromEventPattern", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return fromEventPattern_1.fromEventPattern; + }, "get") }); + var generate_1 = require_generate(); + Object.defineProperty(exports, "generate", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return generate_1.generate; + }, "get") }); + var iif_1 = require_iif(); + Object.defineProperty(exports, "iif", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return iif_1.iif; + }, "get") }); + var interval_1 = require_interval(); + Object.defineProperty(exports, "interval", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return interval_1.interval; + }, "get") }); + var merge_1 = require_merge(); + Object.defineProperty(exports, "merge", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return merge_1.merge; + }, "get") }); + var never_1 = require_never(); + Object.defineProperty(exports, "never", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return never_1.never; + }, "get") }); + var of_1 = require_of(); + Object.defineProperty(exports, "of", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return of_1.of; + }, "get") }); + var onErrorResumeNext_1 = require_onErrorResumeNext(); + Object.defineProperty(exports, "onErrorResumeNext", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return onErrorResumeNext_1.onErrorResumeNext; + }, "get") }); + var pairs_1 = require_pairs(); + Object.defineProperty(exports, "pairs", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return pairs_1.pairs; + }, "get") }); + var partition_1 = require_partition(); + Object.defineProperty(exports, "partition", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return partition_1.partition; + }, "get") }); + var race_1 = require_race(); + Object.defineProperty(exports, "race", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return race_1.race; + }, "get") }); + var range_1 = require_range2(); + Object.defineProperty(exports, "range", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return range_1.range; + }, "get") }); + var throwError_1 = require_throwError(); + Object.defineProperty(exports, "throwError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throwError_1.throwError; + }, "get") }); + var timer_1 = require_timer(); + Object.defineProperty(exports, "timer", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timer_1.timer; + }, "get") }); + var using_1 = require_using(); + Object.defineProperty(exports, "using", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return using_1.using; + }, "get") }); + var zip_1 = require_zip(); + Object.defineProperty(exports, "zip", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return zip_1.zip; + }, "get") }); + var scheduled_1 = require_scheduled(); + Object.defineProperty(exports, "scheduled", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return scheduled_1.scheduled; + }, "get") }); + var empty_2 = require_empty(); + Object.defineProperty(exports, "EMPTY", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return empty_2.EMPTY; + }, "get") }); + var never_2 = require_never(); + Object.defineProperty(exports, "NEVER", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return never_2.NEVER; + }, "get") }); + __exportStar(require_types(), exports); + var config_1 = require_config(); + Object.defineProperty(exports, "config", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return config_1.config; + }, "get") }); + var audit_1 = require_audit(); + Object.defineProperty(exports, "audit", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return audit_1.audit; + }, "get") }); + var auditTime_1 = require_auditTime(); + Object.defineProperty(exports, "auditTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return auditTime_1.auditTime; + }, "get") }); + var buffer_1 = require_buffer(); + Object.defineProperty(exports, "buffer", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return buffer_1.buffer; + }, "get") }); + var bufferCount_1 = require_bufferCount(); + Object.defineProperty(exports, "bufferCount", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferCount_1.bufferCount; + }, "get") }); + var bufferTime_1 = require_bufferTime(); + Object.defineProperty(exports, "bufferTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferTime_1.bufferTime; + }, "get") }); + var bufferToggle_1 = require_bufferToggle(); + Object.defineProperty(exports, "bufferToggle", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferToggle_1.bufferToggle; + }, "get") }); + var bufferWhen_1 = require_bufferWhen(); + Object.defineProperty(exports, "bufferWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return bufferWhen_1.bufferWhen; + }, "get") }); + var catchError_1 = require_catchError(); + Object.defineProperty(exports, "catchError", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return catchError_1.catchError; + }, "get") }); + var combineAll_1 = require_combineAll(); + Object.defineProperty(exports, "combineAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineAll_1.combineAll; + }, "get") }); + var combineLatestAll_1 = require_combineLatestAll(); + Object.defineProperty(exports, "combineLatestAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineLatestAll_1.combineLatestAll; + }, "get") }); + var combineLatestWith_1 = require_combineLatestWith(); + Object.defineProperty(exports, "combineLatestWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return combineLatestWith_1.combineLatestWith; + }, "get") }); + var concatAll_1 = require_concatAll(); + Object.defineProperty(exports, "concatAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatAll_1.concatAll; + }, "get") }); + var concatMap_1 = require_concatMap(); + Object.defineProperty(exports, "concatMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatMap_1.concatMap; + }, "get") }); + var concatMapTo_1 = require_concatMapTo(); + Object.defineProperty(exports, "concatMapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatMapTo_1.concatMapTo; + }, "get") }); + var concatWith_1 = require_concatWith(); + Object.defineProperty(exports, "concatWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return concatWith_1.concatWith; + }, "get") }); + var connect_1 = require_connect(); + Object.defineProperty(exports, "connect", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return connect_1.connect; + }, "get") }); + var count_1 = require_count(); + Object.defineProperty(exports, "count", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return count_1.count; + }, "get") }); + var debounce_1 = require_debounce(); + Object.defineProperty(exports, "debounce", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return debounce_1.debounce; + }, "get") }); + var debounceTime_1 = require_debounceTime(); + Object.defineProperty(exports, "debounceTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return debounceTime_1.debounceTime; + }, "get") }); + var defaultIfEmpty_1 = require_defaultIfEmpty(); + Object.defineProperty(exports, "defaultIfEmpty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return defaultIfEmpty_1.defaultIfEmpty; + }, "get") }); + var delay_1 = require_delay(); + Object.defineProperty(exports, "delay", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return delay_1.delay; + }, "get") }); + var delayWhen_1 = require_delayWhen(); + Object.defineProperty(exports, "delayWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return delayWhen_1.delayWhen; + }, "get") }); + var dematerialize_1 = require_dematerialize(); + Object.defineProperty(exports, "dematerialize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return dematerialize_1.dematerialize; + }, "get") }); + var distinct_1 = require_distinct(); + Object.defineProperty(exports, "distinct", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return distinct_1.distinct; + }, "get") }); + var distinctUntilChanged_1 = require_distinctUntilChanged(); + Object.defineProperty(exports, "distinctUntilChanged", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return distinctUntilChanged_1.distinctUntilChanged; + }, "get") }); + var distinctUntilKeyChanged_1 = require_distinctUntilKeyChanged(); + Object.defineProperty(exports, "distinctUntilKeyChanged", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return distinctUntilKeyChanged_1.distinctUntilKeyChanged; + }, "get") }); + var elementAt_1 = require_elementAt(); + Object.defineProperty(exports, "elementAt", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return elementAt_1.elementAt; + }, "get") }); + var endWith_1 = require_endWith(); + Object.defineProperty(exports, "endWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return endWith_1.endWith; + }, "get") }); + var every_1 = require_every(); + Object.defineProperty(exports, "every", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return every_1.every; + }, "get") }); + var exhaust_1 = require_exhaust(); + Object.defineProperty(exports, "exhaust", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return exhaust_1.exhaust; + }, "get") }); + var exhaustAll_1 = require_exhaustAll(); + Object.defineProperty(exports, "exhaustAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return exhaustAll_1.exhaustAll; + }, "get") }); + var exhaustMap_1 = require_exhaustMap(); + Object.defineProperty(exports, "exhaustMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return exhaustMap_1.exhaustMap; + }, "get") }); + var expand_1 = require_expand(); + Object.defineProperty(exports, "expand", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return expand_1.expand; + }, "get") }); + var filter_1 = require_filter(); + Object.defineProperty(exports, "filter", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return filter_1.filter; + }, "get") }); + var finalize_1 = require_finalize(); + Object.defineProperty(exports, "finalize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return finalize_1.finalize; + }, "get") }); + var find_1 = require_find(); + Object.defineProperty(exports, "find", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return find_1.find; + }, "get") }); + var findIndex_1 = require_findIndex(); + Object.defineProperty(exports, "findIndex", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return findIndex_1.findIndex; + }, "get") }); + var first_1 = require_first(); + Object.defineProperty(exports, "first", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return first_1.first; + }, "get") }); + var groupBy_1 = require_groupBy(); + Object.defineProperty(exports, "groupBy", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return groupBy_1.groupBy; + }, "get") }); + var ignoreElements_1 = require_ignoreElements(); + Object.defineProperty(exports, "ignoreElements", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return ignoreElements_1.ignoreElements; + }, "get") }); + var isEmpty_1 = require_isEmpty(); + Object.defineProperty(exports, "isEmpty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return isEmpty_1.isEmpty; + }, "get") }); + var last_1 = require_last(); + Object.defineProperty(exports, "last", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return last_1.last; + }, "get") }); + var map_1 = require_map(); + Object.defineProperty(exports, "map", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return map_1.map; + }, "get") }); + var mapTo_1 = require_mapTo(); + Object.defineProperty(exports, "mapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mapTo_1.mapTo; + }, "get") }); + var materialize_1 = require_materialize(); + Object.defineProperty(exports, "materialize", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return materialize_1.materialize; + }, "get") }); + var max_1 = require_max(); + Object.defineProperty(exports, "max", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return max_1.max; + }, "get") }); + var mergeAll_1 = require_mergeAll(); + Object.defineProperty(exports, "mergeAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeAll_1.mergeAll; + }, "get") }); + var flatMap_1 = require_flatMap(); + Object.defineProperty(exports, "flatMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return flatMap_1.flatMap; + }, "get") }); + var mergeMap_1 = require_mergeMap(); + Object.defineProperty(exports, "mergeMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeMap_1.mergeMap; + }, "get") }); + var mergeMapTo_1 = require_mergeMapTo(); + Object.defineProperty(exports, "mergeMapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeMapTo_1.mergeMapTo; + }, "get") }); + var mergeScan_1 = require_mergeScan(); + Object.defineProperty(exports, "mergeScan", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeScan_1.mergeScan; + }, "get") }); + var mergeWith_1 = require_mergeWith(); + Object.defineProperty(exports, "mergeWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return mergeWith_1.mergeWith; + }, "get") }); + var min_1 = require_min(); + Object.defineProperty(exports, "min", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return min_1.min; + }, "get") }); + var multicast_1 = require_multicast(); + Object.defineProperty(exports, "multicast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return multicast_1.multicast; + }, "get") }); + var observeOn_1 = require_observeOn(); + Object.defineProperty(exports, "observeOn", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return observeOn_1.observeOn; + }, "get") }); + var onErrorResumeNextWith_1 = require_onErrorResumeNextWith(); + Object.defineProperty(exports, "onErrorResumeNextWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return onErrorResumeNextWith_1.onErrorResumeNextWith; + }, "get") }); + var pairwise_1 = require_pairwise(); + Object.defineProperty(exports, "pairwise", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return pairwise_1.pairwise; + }, "get") }); + var pluck_1 = require_pluck(); + Object.defineProperty(exports, "pluck", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return pluck_1.pluck; + }, "get") }); + var publish_1 = require_publish(); + Object.defineProperty(exports, "publish", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publish_1.publish; + }, "get") }); + var publishBehavior_1 = require_publishBehavior(); + Object.defineProperty(exports, "publishBehavior", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publishBehavior_1.publishBehavior; + }, "get") }); + var publishLast_1 = require_publishLast(); + Object.defineProperty(exports, "publishLast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publishLast_1.publishLast; + }, "get") }); + var publishReplay_1 = require_publishReplay(); + Object.defineProperty(exports, "publishReplay", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return publishReplay_1.publishReplay; + }, "get") }); + var raceWith_1 = require_raceWith(); + Object.defineProperty(exports, "raceWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return raceWith_1.raceWith; + }, "get") }); + var reduce_1 = require_reduce(); + Object.defineProperty(exports, "reduce", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return reduce_1.reduce; + }, "get") }); + var repeat_1 = require_repeat(); + Object.defineProperty(exports, "repeat", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return repeat_1.repeat; + }, "get") }); + var repeatWhen_1 = require_repeatWhen(); + Object.defineProperty(exports, "repeatWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return repeatWhen_1.repeatWhen; + }, "get") }); + var retry_1 = require_retry(); + Object.defineProperty(exports, "retry", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return retry_1.retry; + }, "get") }); + var retryWhen_1 = require_retryWhen(); + Object.defineProperty(exports, "retryWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return retryWhen_1.retryWhen; + }, "get") }); + var refCount_1 = require_refCount(); + Object.defineProperty(exports, "refCount", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return refCount_1.refCount; + }, "get") }); + var sample_1 = require_sample(); + Object.defineProperty(exports, "sample", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return sample_1.sample; + }, "get") }); + var sampleTime_1 = require_sampleTime(); + Object.defineProperty(exports, "sampleTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return sampleTime_1.sampleTime; + }, "get") }); + var scan_1 = require_scan(); + Object.defineProperty(exports, "scan", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return scan_1.scan; + }, "get") }); + var sequenceEqual_1 = require_sequenceEqual(); + Object.defineProperty(exports, "sequenceEqual", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return sequenceEqual_1.sequenceEqual; + }, "get") }); + var share_1 = require_share(); + Object.defineProperty(exports, "share", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return share_1.share; + }, "get") }); + var shareReplay_1 = require_shareReplay(); + Object.defineProperty(exports, "shareReplay", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return shareReplay_1.shareReplay; + }, "get") }); + var single_1 = require_single(); + Object.defineProperty(exports, "single", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return single_1.single; + }, "get") }); + var skip_1 = require_skip(); + Object.defineProperty(exports, "skip", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skip_1.skip; + }, "get") }); + var skipLast_1 = require_skipLast(); + Object.defineProperty(exports, "skipLast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skipLast_1.skipLast; + }, "get") }); + var skipUntil_1 = require_skipUntil(); + Object.defineProperty(exports, "skipUntil", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skipUntil_1.skipUntil; + }, "get") }); + var skipWhile_1 = require_skipWhile(); + Object.defineProperty(exports, "skipWhile", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return skipWhile_1.skipWhile; + }, "get") }); + var startWith_1 = require_startWith(); + Object.defineProperty(exports, "startWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return startWith_1.startWith; + }, "get") }); + var subscribeOn_1 = require_subscribeOn(); + Object.defineProperty(exports, "subscribeOn", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return subscribeOn_1.subscribeOn; + }, "get") }); + var switchAll_1 = require_switchAll(); + Object.defineProperty(exports, "switchAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchAll_1.switchAll; + }, "get") }); + var switchMap_1 = require_switchMap(); + Object.defineProperty(exports, "switchMap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchMap_1.switchMap; + }, "get") }); + var switchMapTo_1 = require_switchMapTo(); + Object.defineProperty(exports, "switchMapTo", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchMapTo_1.switchMapTo; + }, "get") }); + var switchScan_1 = require_switchScan(); + Object.defineProperty(exports, "switchScan", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return switchScan_1.switchScan; + }, "get") }); + var take_1 = require_take(); + Object.defineProperty(exports, "take", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return take_1.take; + }, "get") }); + var takeLast_1 = require_takeLast(); + Object.defineProperty(exports, "takeLast", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return takeLast_1.takeLast; + }, "get") }); + var takeUntil_1 = require_takeUntil(); + Object.defineProperty(exports, "takeUntil", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return takeUntil_1.takeUntil; + }, "get") }); + var takeWhile_1 = require_takeWhile(); + Object.defineProperty(exports, "takeWhile", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return takeWhile_1.takeWhile; + }, "get") }); + var tap_1 = require_tap(); + Object.defineProperty(exports, "tap", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return tap_1.tap; + }, "get") }); + var throttle_1 = require_throttle(); + Object.defineProperty(exports, "throttle", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throttle_1.throttle; + }, "get") }); + var throttleTime_1 = require_throttleTime(); + Object.defineProperty(exports, "throttleTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throttleTime_1.throttleTime; + }, "get") }); + var throwIfEmpty_1 = require_throwIfEmpty(); + Object.defineProperty(exports, "throwIfEmpty", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throwIfEmpty_1.throwIfEmpty; + }, "get") }); + var timeInterval_1 = require_timeInterval(); + Object.defineProperty(exports, "timeInterval", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeInterval_1.timeInterval; + }, "get") }); + var timeout_2 = require_timeout(); + Object.defineProperty(exports, "timeout", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeout_2.timeout; + }, "get") }); + var timeoutWith_1 = require_timeoutWith(); + Object.defineProperty(exports, "timeoutWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timeoutWith_1.timeoutWith; + }, "get") }); + var timestamp_1 = require_timestamp(); + Object.defineProperty(exports, "timestamp", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return timestamp_1.timestamp; + }, "get") }); + var toArray_1 = require_toArray(); + Object.defineProperty(exports, "toArray", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return toArray_1.toArray; + }, "get") }); + var window_1 = require_window(); + Object.defineProperty(exports, "window", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return window_1.window; + }, "get") }); + var windowCount_1 = require_windowCount(); + Object.defineProperty(exports, "windowCount", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowCount_1.windowCount; + }, "get") }); + var windowTime_1 = require_windowTime(); + Object.defineProperty(exports, "windowTime", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowTime_1.windowTime; + }, "get") }); + var windowToggle_1 = require_windowToggle(); + Object.defineProperty(exports, "windowToggle", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowToggle_1.windowToggle; + }, "get") }); + var windowWhen_1 = require_windowWhen(); + Object.defineProperty(exports, "windowWhen", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return windowWhen_1.windowWhen; + }, "get") }); + var withLatestFrom_1 = require_withLatestFrom(); + Object.defineProperty(exports, "withLatestFrom", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return withLatestFrom_1.withLatestFrom; + }, "get") }); + var zipAll_1 = require_zipAll(); + Object.defineProperty(exports, "zipAll", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return zipAll_1.zipAll; + }, "get") }); + var zipWith_1 = require_zipWith(); + Object.defineProperty(exports, "zipWith", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return zipWith_1.zipWith; + }, "get") }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/modules-container.js +var import_rxjs, ModulesContainer; +var init_modules_container = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/modules-container.js"() { + import_rxjs = __toESM(require_cjs(), 1); + init_dist(); + ModulesContainer = class extends Map { + static { + __name(this, "ModulesContainer"); + } + _applicationId = uid(21); + _rpcTargetRegistry$ = new import_rxjs.ReplaySubject(); + /** + * Unique identifier of the application instance. + */ + get applicationId() { + return this._applicationId; + } + /** + * Retrieves a module by its identifier. + * @param id The identifier of the module to retrieve. + * @returns The module instance if found, otherwise undefined. + */ + getById(id) { + return Array.from(this.values()).find((moduleRef) => moduleRef.id === id); + } + /** + * Returns the RPC target registry as an observable. + * This registry contains all RPC targets registered in the application. + * @returns An observable that emits the RPC target registry. + */ + getRpcTargetRegistry() { + return this._rpcTargetRegistry$.asObservable(); + } + /** + * Adds an RPC target to the registry. + * @param target The RPC target to add. + */ + addRpcTarget(target) { + this._rpcTargetRegistry$.next(target); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/discoverable-meta-host-collection.js +var DiscoverableMetaHostCollection; +var init_discoverable_meta_host_collection = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/discoverable-meta-host-collection.js"() { + DiscoverableMetaHostCollection = class _DiscoverableMetaHostCollection { + static { + __name(this, "DiscoverableMetaHostCollection"); + } + /** + * A map of class references to metadata keys. + */ + static metaHostLinks = /* @__PURE__ */ new Map(); + /** + * A map of metadata keys to instance wrappers (providers) with the corresponding metadata key. + * The map is weakly referenced by the modules container (unique per application). + */ + static providersByMetaKey = /* @__PURE__ */ new WeakMap(); + /** + * A map of metadata keys to instance wrappers (controllers) with the corresponding metadata key. + * The map is weakly referenced by the modules container (unique per application). + */ + static controllersByMetaKey = /* @__PURE__ */ new WeakMap(); + /** + * Adds a link between a class reference and a metadata key. + * @param target The class reference. + * @param metadataKey The metadata key. + */ + static addClassMetaHostLink(target, metadataKey) { + this.metaHostLinks.set(target, metadataKey); + } + /** + * Inspects a provider instance wrapper and adds it to the collection of providers + * if it has a metadata key. + * @param hostContainerRef A reference to the modules container. + * @param instanceWrapper A provider instance wrapper. + * @returns void + */ + static inspectProvider(hostContainerRef, instanceWrapper) { + return this.inspectInstanceWrapper(hostContainerRef, instanceWrapper, this.providersByMetaKey); + } + /** + * Inspects a controller instance wrapper and adds it to the collection of controllers + * if it has a metadata key. + * @param hostContainerRef A reference to the modules container. + * @param instanceWrapper A controller's instance wrapper. + * @returns void + */ + static inspectController(hostContainerRef, instanceWrapper) { + return this.inspectInstanceWrapper(hostContainerRef, instanceWrapper, this.controllersByMetaKey); + } + static insertByMetaKey(metaKey, instanceWrapper, collection) { + if (collection.has(metaKey)) { + const wrappers = collection.get(metaKey); + for (const existing of wrappers) { + if (existing.id === instanceWrapper.id) { + wrappers.delete(existing); + break; + } + } + wrappers.add(instanceWrapper); + } else { + const wrappers = /* @__PURE__ */ new Set(); + wrappers.add(instanceWrapper); + collection.set(metaKey, wrappers); + } + } + static getProvidersByMetaKey(hostContainerRef, metaKey) { + const wrappersByMetaKey = this.providersByMetaKey.get(hostContainerRef); + return wrappersByMetaKey?.get(metaKey) ?? /* @__PURE__ */ new Set(); + } + static getControllersByMetaKey(hostContainerRef, metaKey) { + const wrappersByMetaKey = this.controllersByMetaKey.get(hostContainerRef); + return wrappersByMetaKey?.get(metaKey) ?? /* @__PURE__ */ new Set(); + } + static inspectInstanceWrapper(hostContainerRef, instanceWrapper, wrapperByMetaKeyMap) { + const metaKey = _DiscoverableMetaHostCollection.getMetaKeyByInstanceWrapper(instanceWrapper); + if (!metaKey) { + return; + } + let collection; + if (wrapperByMetaKeyMap.has(hostContainerRef)) { + collection = wrapperByMetaKeyMap.get(hostContainerRef); + } else { + collection = /* @__PURE__ */ new Map(); + wrapperByMetaKeyMap.set(hostContainerRef, collection); + } + this.insertByMetaKey(metaKey, instanceWrapper, collection); + } + static getMetaKeyByInstanceWrapper(instanceWrapper) { + return this.metaHostLinks.get( + // NOTE: Regarding the ternary statement below, + // - The condition `!wrapper.metatype` is needed because when we use `useValue` + // the value of `wrapper.metatype` will be `null`. + // - The condition `wrapper.inject` is needed here because when we use + // `useFactory`, the value of `wrapper.metatype` will be the supplied + // factory function. + // For both cases, we should use `wrapper.instance.constructor` instead + // of `wrapper.metatype` to resolve processor's class properly. + // But since calling `wrapper.instance` could degrade overall performance + // we must defer it as much we can. + !instanceWrapper.metatype || instanceWrapper.inject ? instanceWrapper.instance?.constructor ?? instanceWrapper.metatype : instanceWrapper.metatype + ); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/discovery-service.js +var DiscoveryService; +var init_discovery_service = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/discovery-service.js"() { + init_tslib_es6(); + init_common(); + init_dist(); + init_modules_container(); + init_discoverable_meta_host_collection(); + DiscoveryService = class DiscoveryService2 { + static { + __name(this, "DiscoveryService"); + } + modulesContainer; + constructor(modulesContainer) { + this.modulesContainer = modulesContainer; + } + /** + * Creates a decorator that can be used to decorate classes and methods with metadata. + * The decorator will also add the class to the collection of discoverable classes (by metadata key). + * Decorated classes can be discovered using the `getProviders` and `getControllers` methods. + * @returns A decorator function. + */ + static createDecorator() { + const metadataKey = uid(21); + const decoratorFn = /* @__PURE__ */ __name((opts) => (target, key, descriptor) => { + if (!descriptor) { + DiscoverableMetaHostCollection.addClassMetaHostLink(target, metadataKey); + } + SetMetadata(metadataKey, opts ?? {})(target, key, descriptor); + }, "decoratorFn"); + decoratorFn.KEY = metadataKey; + return decoratorFn; + } + /** + * Returns an array of instance wrappers (providers). + * Depending on the options, the array will contain either all providers or only providers with the specified metadata key. + * @param options Discovery options. + * @param modules A list of modules to filter by. + * @returns An array of instance wrappers (providers). + */ + getProviders(options = {}, modules = this.getModules(options)) { + if ("metadataKey" in options) { + const providers2 = DiscoverableMetaHostCollection.getProvidersByMetaKey(this.modulesContainer, options.metadataKey); + return Array.from(providers2); + } + const providers = modules.map((item) => [...item.providers.values()]); + return flatten(providers); + } + /** + * Returns an array of instance wrappers (controllers). + * Depending on the options, the array will contain either all controllers or only controllers with the specified metadata key. + * @param options Discovery options. + * @param modules A list of modules to filter by. + * @returns An array of instance wrappers (controllers). + */ + getControllers(options = {}, modules = this.getModules(options)) { + if ("metadataKey" in options) { + const controllers2 = DiscoverableMetaHostCollection.getControllersByMetaKey(this.modulesContainer, options.metadataKey); + return Array.from(controllers2); + } + const controllers = modules.map((item) => [...item.controllers.values()]); + return flatten(controllers); + } + /** + * Retrieves metadata from the specified instance wrapper. + * @param decorator The decorator to retrieve metadata of. + * @param instanceWrapper Reference to the instance wrapper. + * @param methodKey An optional method key to retrieve metadata from. + * @returns Discovered metadata. + */ + getMetadataByDecorator(decorator, instanceWrapper, methodKey) { + if (methodKey) { + return Reflect.getMetadata(decorator.KEY, instanceWrapper.instance[methodKey]); + } + const clsRef = instanceWrapper.instance?.constructor ?? instanceWrapper.metatype; + return Reflect.getMetadata(decorator.KEY, clsRef); + } + /** + * Returns a list of modules to be used for discovery. + */ + getModules(options = {}) { + const includeInOpts = "include" in options; + if (!includeInOpts) { + const moduleRefs = [...this.modulesContainer.values()]; + return moduleRefs; + } + const whitelisted = this.includeWhitelisted(options.include); + return whitelisted; + } + includeWhitelisted(include) { + const moduleRefs = [...this.modulesContainer.values()]; + return moduleRefs.filter(({ metatype }) => include.some((item) => item === metatype)); + } + }; + DiscoveryService = __decorate([ + Injectable(), + __metadata("design:paramtypes", [ModulesContainer]) + ], DiscoveryService); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/discovery-module.js +var DiscoveryModule; +var init_discovery_module = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/discovery-module.js"() { + init_tslib_es6(); + init_common(); + init_metadata_scanner(); + init_discovery_service(); + DiscoveryModule = class DiscoveryModule2 { + static { + __name(this, "DiscoveryModule"); + } + }; + DiscoveryModule = __decorate([ + Module({ + providers: [MetadataScanner, DiscoveryService], + exports: [MetadataScanner, DiscoveryService] + }) + ], DiscoveryModule); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/index.js +var init_discovery = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/discovery/index.js"() { + init_discovery_module(); + init_discovery_service(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/http-adapter-host.js +var import_rxjs2, HttpAdapterHost; +var init_http_adapter_host = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/http-adapter-host.js"() { + import_rxjs2 = __toESM(require_cjs(), 1); + HttpAdapterHost = class { + static { + __name(this, "HttpAdapterHost"); + } + _httpAdapter; + _listen$ = new import_rxjs2.Subject(); + _init$ = new import_rxjs2.ReplaySubject(); + isListening = false; + /** + * Accessor for the underlying `HttpAdapter` + * + * @param httpAdapter reference to the `HttpAdapter` to be set + */ + set httpAdapter(httpAdapter) { + this._httpAdapter = httpAdapter; + this._init$.next(); + this._init$.complete(); + } + /** + * Accessor for the underlying `HttpAdapter` + * + * @example + * `const httpAdapter = adapterHost.httpAdapter;` + */ + get httpAdapter() { + return this._httpAdapter; + } + /** + * Observable that allows to subscribe to the `listen` event. + * This event is emitted when the HTTP application is listening for incoming requests. + */ + get listen$() { + return this._listen$.asObservable(); + } + /** + * Observable that allows to subscribe to the `init` event. + * This event is emitted when the HTTP application is initialized. + */ + get init$() { + return this._init$.asObservable(); + } + /** + * Sets the listening state of the application. + */ + set listening(listening) { + this.isListening = listening; + if (listening) { + this._listen$.next(); + this._listen$.complete(); + } + } + /** + * Returns a boolean indicating whether the application is listening for incoming requests. + */ + get listening() { + return this.isListening; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/base-exception-filter.js +import { STATUS_CODES } from "http"; +var BaseExceptionFilter; +var init_base_exception_filter = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/base-exception-filter.js"() { + init_tslib_es6(); + init_common(); + init_constants2(); + init_http_adapter_host(); + init_internal(); + BaseExceptionFilter = class _BaseExceptionFilter { + static { + __name(this, "BaseExceptionFilter"); + } + applicationRef; + static logger = new Logger("ExceptionsHandler"); + httpAdapterHost; + constructor(applicationRef) { + this.applicationRef = applicationRef; + } + catch(exception, host) { + const applicationRef = this.applicationRef || this.httpAdapterHost && this.httpAdapterHost.httpAdapter; + if (!(exception instanceof HttpException)) { + return this.handleUnknownError(exception, host, applicationRef); + } + const res = exception.getResponse(); + const message = isObject(res) ? res : { + statusCode: exception.getStatus(), + message: res, + ...exception.errorCode !== void 0 && { + errorCode: exception.errorCode + } + }; + const response = host.getArgByIndex(1); + if (!applicationRef.isHeadersSent(response)) { + applicationRef.reply(response, message, exception.getStatus()); + } else { + applicationRef.end(response); + } + } + handleUnknownError(exception, host, applicationRef) { + const body = this.isHttpError(exception) ? { + statusCode: exception.statusCode, + // "http-errors" sets "expose" to false when the message must not + // reach the client (5xx errors, file system errors from "send") + message: exception.expose === false ? STATUS_CODES[exception.statusCode] ?? MESSAGES.UNKNOWN_EXCEPTION_MESSAGE : exception.message + } : { + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + message: MESSAGES.UNKNOWN_EXCEPTION_MESSAGE + }; + const response = host.getArgByIndex(1); + if (!applicationRef.isHeadersSent(response)) { + applicationRef.reply(response, body, body.statusCode); + } else { + applicationRef.end(response); + } + if (!(exception instanceof IntrinsicException)) { + _BaseExceptionFilter.logger.error(exception); + } + } + isExceptionObject(err) { + return isObject(err) && !!err.message; + } + /** + * Checks if the thrown error is a FastifyError or comes from the "http-errors" library. + * @param err error object + */ + isHttpError(err) { + if (!err || typeof err !== "object") { + return false; + } + if ( + // Fastify's schema validation errors are plain errors with this code + (err.constructor?.name === "FastifyError" || err.code === "FST_ERR_VALIDATION") && typeof err.code === "string" && typeof err.statusCode === "number" + ) { + return true; + } + if (typeof err.expose === "boolean" && typeof err.statusCode === "number" && err.status === err.statusCode && err instanceof Error) { + return true; + } + return !(err instanceof Error) && Number.isInteger(err.statusCode) && err.statusCode >= 400 && err.statusCode < 600 && typeof err.message === "string" && err.message !== ""; + } + }; + __decorate([ + Optional(), + Inject(), + __metadata("design:type", HttpAdapterHost) + ], BaseExceptionFilter.prototype, "httpAdapterHost", void 0); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/index.js +var init_exceptions = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/index.js"() { + init_base_exception_filter(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/request/request-constants.js +var REQUEST, REQUEST_CONTEXT_ID; +var init_request_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/request/request-constants.js"() { + REQUEST = "REQUEST"; + REQUEST_CONTEXT_ID = /* @__PURE__ */ Symbol("REQUEST_CONTEXT_ID"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/context-id-factory.js +function createContextId() { + return { id: Math.random() }; +} +var ContextIdFactory; +var init_context_id_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/context-id-factory.js"() { + init_request_constants(); + init_internal(); + __name(createContextId, "createContextId"); + ContextIdFactory = class _ContextIdFactory { + static { + __name(this, "ContextIdFactory"); + } + static strategy; + /** + * Generates a context identifier based on the request object. + */ + static create() { + return createContextId(); + } + /** + * Generates a random identifier to track asynchronous execution context. + * @param request request object + */ + static getByRequest(request, propsToInspect = ["raw"]) { + if (!request) { + return _ContextIdFactory.create(); + } + if (request[REQUEST_CONTEXT_ID]) { + return request[REQUEST_CONTEXT_ID]; + } + for (const key of propsToInspect) { + if (request[key]?.[REQUEST_CONTEXT_ID]) { + return request[key][REQUEST_CONTEXT_ID]; + } + } + if (!this.strategy) { + return _ContextIdFactory.create(); + } + const contextId = createContextId(); + const resolverObjectOrFunction = this.strategy.attach(contextId, request); + if (this.isContextIdResolverWithPayload(resolverObjectOrFunction)) { + contextId.getParent = resolverObjectOrFunction.resolve; + contextId.payload = resolverObjectOrFunction.payload; + } else { + contextId.getParent = resolverObjectOrFunction; + } + return contextId; + } + /** + * Registers a custom context id strategy that lets you attach + * a parent context id to the existing context id object. + * @param strategy strategy instance + */ + static apply(strategy) { + this.strategy = strategy; + } + static isContextIdResolverWithPayload(resolverOrResolverFn) { + return isObject(resolverOrResolverFn); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/constants.js +var CONTROLLER_ID_KEY, STATIC_CONTEXT_ID, STATIC_CONTEXT; +var init_constants3 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/constants.js"() { + CONTROLLER_ID_KEY = "CONTROLLER_ID"; + STATIC_CONTEXT_ID = 1; + STATIC_CONTEXT = Object.freeze({ + id: STATIC_CONTEXT_ID + }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/class-ref-registry.js +function registerClassRef(classRef) { + if (classRef.prototype) { + classRefsByPrototype.set(classRef.prototype, classRef); + } +} +function getClassRef(instance) { + return classRefsByPrototype.get(Object.getPrototypeOf(instance)) ?? instance.constructor; +} +var classRefsByPrototype; +var init_class_ref_registry = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/class-ref-registry.js"() { + classRefsByPrototype = /* @__PURE__ */ new WeakMap(); + __name(registerClassRef, "registerClassRef"); + __name(getClassRef, "getClassRef"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/context-creator.js +var ContextCreator; +var init_context_creator = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/context-creator.js"() { + init_constants3(); + init_class_ref_registry(); + ContextCreator = class { + static { + __name(this, "ContextCreator"); + } + createContext(instance, callback, metadataKey, contextId = STATIC_CONTEXT, inquirerId) { + const globalMetadata = this.getGlobalMetadata && this.getGlobalMetadata(contextId, inquirerId); + const classMetadata = this.reflectClassMetadata(instance, metadataKey); + const methodMetadata = this.reflectMethodMetadata(callback, metadataKey); + return [ + ...this.createConcreteContext(globalMetadata || [], contextId, inquirerId), + ...this.createConcreteContext(classMetadata, contextId, inquirerId), + ...this.createConcreteContext(methodMetadata, contextId, inquirerId) + ]; + } + reflectClassMetadata(instance, metadataKey) { + return Reflect.getMetadata(metadataKey, getClassRef(instance)); + } + reflectMethodMetadata(callback, metadataKey) { + return Reflect.getMetadata(metadataKey, callback); + } + getContextId(contextId, instanceWrapper) { + return contextId.getParent ? contextId.getParent({ + token: instanceWrapper.token, + isTreeDurable: instanceWrapper.isDependencyTreeDurable() + }) : contextId; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/base-exception-filter-context.js +var import_iterare, BaseExceptionFilterContext; +var init_base_exception_filter_context = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/base-exception-filter-context.js"() { + import_iterare = __toESM(require_lib(), 1); + init_context_creator(); + init_constants3(); + init_internal(); + BaseExceptionFilterContext = class extends ContextCreator { + static { + __name(this, "BaseExceptionFilterContext"); + } + container; + moduleContext; + constructor(container) { + super(); + this.container = container; + } + createConcreteContext(metadata, contextId = STATIC_CONTEXT, inquirerId) { + if (isEmpty(metadata)) { + return []; + } + return (0, import_iterare.iterate)(metadata).filter((instance) => instance && (isFunction(instance.catch) || isFunction(instance))).map((filter) => this.getFilterInstance(filter, contextId, inquirerId)).filter((item) => !!item).map((instance) => ({ + func: instance.catch.bind(instance), + exceptionMetatypes: this.reflectCatchExceptions(instance) + })).toArray(); + } + getFilterInstance(filter, contextId = STATIC_CONTEXT, inquirerId) { + const isObject2 = !!filter.catch; + if (isObject2) { + return filter; + } + const instanceWrapper = this.getInstanceByMetatype(filter); + if (!instanceWrapper) { + return null; + } + const instanceHost = instanceWrapper.getInstanceByContextId(this.getContextId(contextId, instanceWrapper), inquirerId); + return instanceHost && instanceHost.instance; + } + getInstanceByMetatype(metatype) { + if (!this.moduleContext) { + return; + } + const collection = this.container.getModules(); + const moduleRef = collection.get(this.moduleContext); + if (!moduleRef) { + return; + } + return moduleRef.injectables.get(metatype); + } + reflectCatchExceptions(instance) { + const prototype = Object.getPrototypeOf(instance); + return Reflect.getMetadata(FILTER_CATCH_EXCEPTIONS, prototype.constructor) || []; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/runtime.exception.js +var RuntimeException; +var init_runtime_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/runtime.exception.js"() { + RuntimeException = class extends Error { + static { + __name(this, "RuntimeException"); + } + constructor(message = ``) { + super(message); + } + what() { + return this.message; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/messages.js +var getInstanceName, getDependencyName, getModuleName, stringifyScope, UNKNOWN_DEPENDENCIES_MESSAGE, INVALID_MIDDLEWARE_MESSAGE, UNDEFINED_FORWARDREF_MESSAGE, INVALID_MODULE_MESSAGE, USING_INVALID_CLASS_AS_A_MODULE_MESSAGE, UNDEFINED_MODULE_MESSAGE, INVALID_PROVIDER_MESSAGE, UNKNOWN_EXPORT_MESSAGE, INVALID_CLASS_MESSAGE, INVALID_CLASS_SCOPE_MESSAGE, REQUEST_SCOPED_CREATE_MESSAGE, REQUEST_SCOPED_GLOBAL_ENHANCER_MESSAGE, UNINSTANTIATED_GLOBAL_ENHANCER_MESSAGE, UNKNOWN_REQUEST_MAPPING, ROUTE_CONFLICT_MESSAGE, DUPLICATE_ROUTE_MESSAGE, SHADOWED_ROUTE_MESSAGE, INVALID_EXCEPTION_FILTER; +var init_messages = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/messages.js"() { + init_internal(); + getInstanceName = /* @__PURE__ */ __name((instance) => { + if (instance?.forwardRef) { + return instance.forwardRef()?.name; + } + if (instance?.module) { + return instance.module?.name; + } + return instance?.name; + }, "getInstanceName"); + getDependencyName = /* @__PURE__ */ __name((dependency, fallbackValue, disambiguated = true) => ( + // use class name + getInstanceName(dependency) || // use injection token (symbol) + isSymbol(dependency) && dependency.toString() || // use string directly + (dependency ? disambiguated ? `"${dependency}"` : dependency : void 0) || // otherwise + fallbackValue + ), "getDependencyName"); + getModuleName = /* @__PURE__ */ __name((module) => module && getInstanceName(module.metatype) || "current", "getModuleName"); + stringifyScope = /* @__PURE__ */ __name((scope) => (scope || []).map(getInstanceName).join(" -> "), "stringifyScope"); + UNKNOWN_DEPENDENCIES_MESSAGE = /* @__PURE__ */ __name((type, unknownDependencyContext, moduleRef) => { + const { index, name, dependencies, key } = unknownDependencyContext; + const moduleName = getModuleName(moduleRef); + const dependencyName = getDependencyName(name, "dependency"); + const isImportTypeIssue = !isNil(index) && dependencies && (dependencies[index] === void 0 || dependencies[index] === Object || typeof dependencies[index] === "function" && dependencies[index].name === "Object"); + let potentialSolutions; + if (isImportTypeIssue) { + potentialSolutions = ` + +Potential solutions: +- The dependency at index [${index}] appears to be undefined at runtime +- This commonly occurs when using 'import type' instead of 'import' for injectable classes +- Check your imports and change: + \u274C import type { SomeService } from './some.service'; + \u2705 import { SomeService } from './some.service'; +- Ensure the imported class is decorated with @Injectable() or is a valid provider +- If using dynamic imports, ensure the class is available at runtime, not just for type checking + +For more common dependency resolution issues, see: https://docs.nestjs.com/faq/common-errors`; + } else { + potentialSolutions = // If module's name is well defined + moduleName !== "current" ? ` + +Potential solutions: +- Is ${moduleName} a valid NestJS module? +- If ${dependencyName} is a provider, is it part of the current ${moduleName}? +- If ${dependencyName} is exported from a separate @Module, is that module imported within ${moduleName}? + @Module({ + imports: [ /* the Module containing ${dependencyName} */ ] + }) + +For more common dependency resolution issues, see: https://docs.nestjs.com/faq/common-errors` : ` + +Potential solutions: +- If ${dependencyName} is a provider, is it part of the current Module? +- If ${dependencyName} is exported from a separate @Module, is that module imported within Module? + @Module({ + imports: [ /* the Module containing ${dependencyName} */ ] + }) + +For more common dependency resolution issues, see: https://docs.nestjs.com/faq/common-errors`; + } + let message = `Nest can't resolve dependencies of the ${type.toString()}`; + if (isNil(index)) { + message += `. Please make sure that the "${key.toString()}" property is available in the current context.${potentialSolutions}`; + return message; + } + const dependenciesName = (dependencies || []).map((dependencyName2) => getDependencyName(dependencyName2, "+", false)); + dependenciesName[index] = "?"; + const tokenFragment = !isImportTypeIssue && name !== void 0 ? ` ${dependencyName}` : ""; + const contextLabel = isImportTypeIssue ? "current" : moduleName; + message += ` (`; + message += dependenciesName.join(", "); + message += `). Please make sure that the argument${tokenFragment} at index [${index}]`; + message += ` is available in the ${contextLabel} module.`; + message += potentialSolutions; + return message; + }, "UNKNOWN_DEPENDENCIES_MESSAGE"); + INVALID_MIDDLEWARE_MESSAGE = /* @__PURE__ */ __name((text, name) => `The middleware doesn't provide the 'use' method (${name})`, "INVALID_MIDDLEWARE_MESSAGE"); + UNDEFINED_FORWARDREF_MESSAGE = /* @__PURE__ */ __name((scope) => `Nest cannot create the module instance. Often, this is because of a circular dependency between modules. Use forwardRef() to avoid it. + +(Read more: https://docs.nestjs.com/fundamentals/circular-dependency) +Scope [${stringifyScope(scope)}] +`, "UNDEFINED_FORWARDREF_MESSAGE"); + INVALID_MODULE_MESSAGE = /* @__PURE__ */ __name((parentModule, index, scope, receivedValue) => { + const parentModuleName = getInstanceName(parentModule) || "module"; + let formattedValue; + let receivedType; + if (receivedValue === null) { + formattedValue = "null"; + receivedType = "null"; + } else if (typeof receivedValue === "string") { + formattedValue = `"${receivedValue}"`; + receivedType = "string"; + } else { + formattedValue = String(receivedValue); + receivedType = typeof receivedValue; + } + return `Nest cannot create the ${parentModuleName} instance. +Received an unexpected value at index [${index}] of the ${parentModuleName} "imports" array. +The received value \`${formattedValue}\` is of type "${receivedType}". + +Scope [${stringifyScope(scope)}]`; + }, "INVALID_MODULE_MESSAGE"); + USING_INVALID_CLASS_AS_A_MODULE_MESSAGE = /* @__PURE__ */ __name((metatypeUsedAsAModule, scope, classKind) => { + const metatypeNameQuote = `"${getInstanceName(metatypeUsedAsAModule)}"`; + let hint; + switch (classKind) { + case "controller": + hint = `${metatypeNameQuote} is decorated with @Controller() and cannot appear in the "imports" array of a module. Please move ${metatypeNameQuote} to the "controllers" array of the importing module instead.`; + break; + case "provider": + hint = `${metatypeNameQuote} is decorated with @Injectable() and cannot appear in the "imports" array of a module. Please move ${metatypeNameQuote} to the "providers" array of the importing module instead.`; + break; + case "filter": + hint = `${metatypeNameQuote} is decorated with @Catch() and cannot appear in the "imports" array of a module. Please move ${metatypeNameQuote} to the "providers" array (using the APP_FILTER token to apply it globally) or apply it via @UseFilters() instead.`; + break; + } + return `${hint} + +Scope [${stringifyScope(scope)}] +`; + }, "USING_INVALID_CLASS_AS_A_MODULE_MESSAGE"); + UNDEFINED_MODULE_MESSAGE = /* @__PURE__ */ __name((parentModule, index, scope) => { + const parentModuleName = getInstanceName(parentModule) || "module"; + return `Nest cannot create the ${parentModuleName} instance. +The module at index [${index}] of the ${parentModuleName} "imports" array is undefined. + +Potential causes: +- A circular dependency between modules. Use forwardRef() to avoid it. Read more: https://docs.nestjs.com/fundamentals/circular-dependency +- The module at index [${index}] is of type "undefined". Check your import statements and the type of the module. + +Scope [${stringifyScope(scope)}]`; + }, "UNDEFINED_MODULE_MESSAGE"); + INVALID_PROVIDER_MESSAGE = /* @__PURE__ */ __name((token, moduleName) => `Nest cannot create the ${moduleName} instance. +The provider ${getDependencyName(token, "provider")} in the ${moduleName} "providers" array does not define a valid "useClass", "useValue", "useFactory" or "useExisting" property. + +Potential causes: +- The value of "useClass", "useFactory" or "useExisting" is undefined at runtime, often because of a circular import between files. Check your import statements. +- None of these properties is set, or the one that is set is null.`, "INVALID_PROVIDER_MESSAGE"); + UNKNOWN_EXPORT_MESSAGE = /* @__PURE__ */ __name((token = "item", module) => { + token = isSymbol(token) ? token.toString() : token; + return `Nest cannot export a provider/module that is not a part of the currently processed module (${module}). Please verify whether the exported ${token} is available in this particular context. + +Possible Solutions: +- Is ${token} part of the relevant providers/imports within ${module}? + +For more common dependency resolution issues, see: https://docs.nestjs.com/faq/common-errors +`; + }, "UNKNOWN_EXPORT_MESSAGE"); + INVALID_CLASS_MESSAGE = /* @__PURE__ */ __name((text, value) => `ModuleRef cannot instantiate class (${value} is not constructable).`, "INVALID_CLASS_MESSAGE"); + INVALID_CLASS_SCOPE_MESSAGE = /* @__PURE__ */ __name((text, name) => `${name || "This class"} is marked as a scoped provider. Request and transient-scoped providers can't be used in combination with "get()" method. Please, use "resolve()" instead.`, "INVALID_CLASS_SCOPE_MESSAGE"); + REQUEST_SCOPED_CREATE_MESSAGE = /* @__PURE__ */ __name((name) => `${name} depends on a request-scoped provider, so it can't be created without a context id. Please, use "create(type, contextId)" instead.`, "REQUEST_SCOPED_CREATE_MESSAGE"); + REQUEST_SCOPED_GLOBAL_ENHANCER_MESSAGE = /* @__PURE__ */ __name((enhancerToken, provider, kind) => `The ${enhancerToken} provider (${provider}) depends on a request-scoped provider, ${{ + useClass: `so it would run with its dependencies undefined. Mark the class with @Injectable({ scope: Scope.REQUEST }), or set "scope: Scope.REQUEST" on the provider.`, + useExisting: `so it would never run. Point "useExisting" at a class marked with @Injectable({ scope: Scope.REQUEST }), or use a factory provider with "scope: Scope.REQUEST".`, + useFactory: `so it would never run. Set "scope: Scope.REQUEST" on the factory provider.` + }[kind]}`, "REQUEST_SCOPED_GLOBAL_ENHANCER_MESSAGE"); + UNINSTANTIATED_GLOBAL_ENHANCER_MESSAGE = /* @__PURE__ */ __name((enhancerToken, provider) => `The ${enhancerToken} provider (${provider}) was not instantiated, as one of its dependencies was not, so it can't be applied.`, "UNINSTANTIATED_GLOBAL_ENHANCER_MESSAGE"); + UNKNOWN_REQUEST_MAPPING = /* @__PURE__ */ __name((metatype) => { + const className = metatype.name; + return className ? `An invalid controller has been detected. "${className}" does not have the @Controller() decorator but it is being listed in the "controllers" array of some module.` : `An invalid controller has been detected. Perhaps, one of your controllers is missing the @Controller() decorator.`; + }, "UNKNOWN_REQUEST_MAPPING"); + ROUTE_CONFLICT_MESSAGE = /* @__PURE__ */ __name((messages) => [ + "Conflicting HTTP routes detected:", + ...messages.map((message) => ` - ${message}`), + `Adjust route declarations or relax the 'routeConflictPolicy' option passed to NestFactory.create() to allow the application to start.` + ].join("\n"), "ROUTE_CONFLICT_MESSAGE"); + DUPLICATE_ROUTE_MESSAGE = /* @__PURE__ */ __name((method, path, firstHandlerLabel, secondHandlerLabel) => `Duplicate route: ${method} ${path} is registered by both ${firstHandlerLabel} and ${secondHandlerLabel}.`, "DUPLICATE_ROUTE_MESSAGE"); + SHADOWED_ROUTE_MESSAGE = /* @__PURE__ */ __name((method, shadowedPath, shadowedHandlerLabel, winnerPath, winnerHandlerLabel) => `Route ${method} ${shadowedPath} (${shadowedHandlerLabel}) is shadowed by ${method} ${winnerPath} (${winnerHandlerLabel}). The first-registered route will match all matching requests on order-sensitive adapters.`, "SHADOWED_ROUTE_MESSAGE"); + INVALID_EXCEPTION_FILTER = `Invalid exception filters (@UseFilters()).`; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-exception-filter.exception.js +var InvalidExceptionFilterException; +var init_invalid_exception_filter_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-exception-filter.exception.js"() { + init_runtime_exception(); + init_messages(); + InvalidExceptionFilterException = class extends RuntimeException { + static { + __name(this, "InvalidExceptionFilterException"); + } + constructor() { + super(INVALID_EXCEPTION_FILTER); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/external-exception-filter.js +var ExternalExceptionFilter; +var init_external_exception_filter = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/external-exception-filter.js"() { + init_common(); + ExternalExceptionFilter = class _ExternalExceptionFilter { + static { + __name(this, "ExternalExceptionFilter"); + } + static logger = new Logger("ExceptionsHandler"); + catch(exception, host) { + if (exception instanceof Error && !(exception instanceof IntrinsicException)) { + _ExternalExceptionFilter.logger.error(exception); + } + throw exception; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/external-exceptions-handler.js +var ExternalExceptionsHandler; +var init_external_exceptions_handler = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/external-exceptions-handler.js"() { + init_invalid_exception_filter_exception(); + init_external_exception_filter(); + init_internal(); + ExternalExceptionsHandler = class extends ExternalExceptionFilter { + static { + __name(this, "ExternalExceptionsHandler"); + } + filters = []; + next(exception, host) { + const result = this.invokeCustomFilters(exception, host); + if (!isUndefined(result)) { + return result; + } + return super.catch(exception, host); + } + setCustomFilters(filters) { + if (!Array.isArray(filters)) { + throw new InvalidExceptionFilterException(); + } + this.filters = filters; + } + invokeCustomFilters(exception, host) { + if (isEmptyArray(this.filters)) { + return; + } + const filter = selectExceptionFilterMetadata(this.filters, exception); + return filter ? filter.func(exception, host) : void 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/external-exception-filter-context.js +var import_iterare2, ExternalExceptionFilterContext; +var init_external_exception_filter_context = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/external-exception-filter-context.js"() { + import_iterare2 = __toESM(require_lib(), 1); + init_constants3(); + init_base_exception_filter_context(); + init_external_exceptions_handler(); + init_internal(); + ExternalExceptionFilterContext = class extends BaseExceptionFilterContext { + static { + __name(this, "ExternalExceptionFilterContext"); + } + config; + constructor(container, config) { + super(container); + this.config = config; + } + create(instance, callback, module, contextId = STATIC_CONTEXT, inquirerId) { + this.moduleContext = module; + const exceptionHandler = new ExternalExceptionsHandler(); + const filters = this.createContext(instance, callback, EXCEPTION_FILTERS_METADATA, contextId, inquirerId); + if (isEmptyArray(filters)) { + return exceptionHandler; + } + exceptionHandler.setCustomFilters(filters.reverse()); + return exceptionHandler; + } + getGlobalMetadata(contextId = STATIC_CONTEXT, inquirerId) { + if (!this.config) { + return []; + } + const globalFilters = this.config.getGlobalFilters(); + if (contextId === STATIC_CONTEXT && !inquirerId) { + return globalFilters; + } + const scopedFilterWrappers = this.config.getGlobalRequestFilters(); + const scopedFilters = (0, import_iterare2.iterate)(scopedFilterWrappers).map((wrapper) => wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId)).filter((host) => !!host).map((host) => host.instance).toArray(); + return globalFilters.concat(scopedFilters); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/constants.js +var FORBIDDEN_MESSAGE; +var init_constants4 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/constants.js"() { + FORBIDDEN_MESSAGE = "Forbidden resource"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/execution-context-host.js +var ExecutionContextHost; +var init_execution_context_host = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/execution-context-host.js"() { + ExecutionContextHost = class { + static { + __name(this, "ExecutionContextHost"); + } + args; + constructorRef; + handler; + contextType = "http"; + constructor(args, constructorRef = null, handler = null) { + this.args = args; + this.constructorRef = constructorRef; + this.handler = handler; + } + setType(type) { + type && (this.contextType = type); + } + getType() { + return this.contextType; + } + getClass() { + return this.constructorRef; + } + getHandler() { + return this.handler; + } + getArgs() { + return this.args; + } + getArgByIndex(index) { + return this.args[index]; + } + switchToRpc() { + return Object.assign(this, { + getData: /* @__PURE__ */ __name(() => this.getArgByIndex(0), "getData"), + getContext: /* @__PURE__ */ __name(() => this.getArgByIndex(1), "getContext") + }); + } + switchToHttp() { + return Object.assign(this, { + getRequest: /* @__PURE__ */ __name(() => this.getArgByIndex(0), "getRequest"), + getResponse: /* @__PURE__ */ __name(() => this.getArgByIndex(1), "getResponse"), + getNext: /* @__PURE__ */ __name(() => this.getArgByIndex(2), "getNext") + }); + } + switchToWs() { + return Object.assign(this, { + getClient: /* @__PURE__ */ __name(() => this.getArgByIndex(0), "getClient"), + getData: /* @__PURE__ */ __name(() => this.getArgByIndex(1), "getData"), + getPattern: /* @__PURE__ */ __name(() => this.getArgByIndex(this.getArgs().length - 1), "getPattern") + }); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/guards-consumer.js +var import_rxjs3, GuardsConsumer; +var init_guards_consumer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/guards-consumer.js"() { + import_rxjs3 = __toESM(require_cjs(), 1); + init_execution_context_host(); + init_internal(); + GuardsConsumer = class { + static { + __name(this, "GuardsConsumer"); + } + async tryActivate(guards, args, instance, callback, type) { + if (!guards || isEmptyArray(guards)) { + return true; + } + const context = this.createContext(args, instance, callback); + context.setType(type); + for (const guard of guards) { + const result = guard.canActivate(context); + if (typeof result === "boolean") { + if (!result) { + return false; + } + continue; + } + if (await this.pickResult(result)) { + continue; + } + return false; + } + return true; + } + createContext(args, instance, callback) { + return new ExecutionContextHost(args, instance.constructor, callback); + } + async pickResult(result) { + const value = await result; + if ((0, import_rxjs3.isObservable)(value)) { + return (0, import_rxjs3.lastValueFrom)(value); + } + return value; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/guards-context-creator.js +var import_iterare3, GuardsContextCreator; +var init_guards_context_creator = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/guards-context-creator.js"() { + import_iterare3 = __toESM(require_lib(), 1); + init_context_creator(); + init_constants3(); + init_internal(); + GuardsContextCreator = class extends ContextCreator { + static { + __name(this, "GuardsContextCreator"); + } + container; + config; + moduleContext; + constructor(container, config) { + super(); + this.container = container; + this.config = config; + } + create(instance, callback, module, contextId = STATIC_CONTEXT, inquirerId) { + this.moduleContext = module; + return this.createContext(instance, callback, GUARDS_METADATA, contextId, inquirerId); + } + createConcreteContext(metadata, contextId = STATIC_CONTEXT, inquirerId) { + if (isEmpty(metadata)) { + return []; + } + return (0, import_iterare3.iterate)(metadata).filter((guard) => guard && (isFunction(guard) || isFunction(guard.canActivate))).map((guard) => this.getGuardInstance(guard, contextId, inquirerId)).filter((guard) => !!guard && isFunction(guard.canActivate)).toArray(); + } + getGuardInstance(metatype, contextId = STATIC_CONTEXT, inquirerId) { + const isObject2 = !!metatype.canActivate; + if (isObject2) { + return metatype; + } + const instanceWrapper = this.getInstanceByMetatype(metatype); + if (!instanceWrapper) { + return null; + } + const instanceHost = instanceWrapper.getInstanceByContextId(this.getContextId(contextId, instanceWrapper), inquirerId); + return instanceHost && instanceHost.instance; + } + getInstanceByMetatype(metatype) { + if (!this.moduleContext) { + return; + } + const collection = this.container.getModules(); + const moduleRef = collection.get(this.moduleContext); + if (!moduleRef) { + return; + } + const injectables = moduleRef.injectables; + return injectables.get(metatype); + } + getGlobalMetadata(contextId = STATIC_CONTEXT, inquirerId) { + if (!this.config) { + return []; + } + const globalGuards = this.config.getGlobalGuards(); + if (contextId === STATIC_CONTEXT && !inquirerId) { + return globalGuards; + } + const scopedGuardWrappers = this.config.getGlobalRequestGuards(); + const scopedGuards = (0, import_iterare3.iterate)(scopedGuardWrappers).map((wrapper) => wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId)).filter((host) => !!host).map((host) => host.instance).toArray(); + return globalGuards.concat(scopedGuards); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/index.js +var init_guards = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/guards/index.js"() { + init_constants4(); + init_guards_consumer(); + init_guards_context_creator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/destroy-streamable-file.js +function destroyStreamableFile(value) { + if (!(value instanceof StreamableFile)) { + return; + } + const stream = value.getStream(); + if (isFunction(stream?.destroy)) { + stream.destroy(); + } +} +var init_destroy_streamable_file = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/destroy-streamable-file.js"() { + init_common(); + init_internal(); + __name(destroyStreamableFile, "destroyStreamableFile"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/interceptors/interceptors-consumer.js +import { AsyncResource } from "async_hooks"; +function bindAsyncScope(fn) { + const resource = new AsyncResource(fn.name || "bound-anonymous-fn"); + return () => resource.runInAsyncScope(fn); +} +var import_rxjs4, import_operators, InterceptorsConsumer; +var init_interceptors_consumer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/interceptors/interceptors-consumer.js"() { + import_rxjs4 = __toESM(require_cjs(), 1); + import_operators = __toESM(require_operators(), 1); + init_destroy_streamable_file(); + init_execution_context_host(); + init_internal(); + InterceptorsConsumer = class { + static { + __name(this, "InterceptorsConsumer"); + } + async intercept(interceptors, args, instance, callback, next, type) { + if (!interceptors || isEmptyArray(interceptors)) { + return next(); + } + const context = this.createContext(args, instance, callback); + context.setType(type); + const nextFn = /* @__PURE__ */ __name(async (i = 0) => { + if (i >= interceptors.length) { + return (0, import_rxjs4.defer)(bindAsyncScope(() => this.transformDeferred(next))); + } + const handler = { + handle: /* @__PURE__ */ __name(() => (0, import_rxjs4.defer)(bindAsyncScope(() => nextFn(i + 1))).pipe((0, import_operators.mergeAll)()), "handle") + }; + return interceptors[i].intercept(context, handler); + }, "nextFn"); + return (0, import_rxjs4.defer)(() => nextFn()).pipe((0, import_operators.mergeAll)()); + } + createContext(args, instance, callback) { + return new ExecutionContextHost(args, instance.constructor, callback); + } + transformDeferred(next) { + const nextPromise = next(); + return new import_rxjs4.Observable((subscriber) => { + let innerSub; + nextPromise.then((res) => { + if (subscriber.closed) { + destroyStreamableFile(res); + return; + } + const isDeferred = res instanceof Promise || res instanceof import_rxjs4.Observable; + innerSub = (0, import_rxjs4.from)(isDeferred ? res : Promise.resolve(res)).subscribe(subscriber); + }).catch((err) => { + if (!subscriber.closed) { + subscriber.error(err); + } + }); + return () => { + innerSub?.unsubscribe(); + }; + }); + } + }; + __name(bindAsyncScope, "bindAsyncScope"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/interceptors/interceptors-context-creator.js +var import_iterare4, InterceptorsContextCreator; +var init_interceptors_context_creator = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/interceptors/interceptors-context-creator.js"() { + import_iterare4 = __toESM(require_lib(), 1); + init_context_creator(); + init_constants3(); + init_internal(); + InterceptorsContextCreator = class extends ContextCreator { + static { + __name(this, "InterceptorsContextCreator"); + } + container; + config; + moduleContext; + constructor(container, config) { + super(); + this.container = container; + this.config = config; + } + create(instance, callback, module, contextId = STATIC_CONTEXT, inquirerId) { + this.moduleContext = module; + return this.createContext(instance, callback, INTERCEPTORS_METADATA, contextId, inquirerId); + } + createConcreteContext(metadata, contextId = STATIC_CONTEXT, inquirerId) { + if (isEmpty(metadata)) { + return []; + } + return (0, import_iterare4.iterate)(metadata).filter((interceptor) => interceptor && (isFunction(interceptor) || isFunction(interceptor.intercept))).map((interceptor) => this.getInterceptorInstance(interceptor, contextId, inquirerId)).filter((interceptor) => interceptor ? isFunction(interceptor.intercept) : false).toArray(); + } + getInterceptorInstance(metatype, contextId = STATIC_CONTEXT, inquirerId) { + const isObject2 = !!metatype.intercept; + if (isObject2) { + return metatype; + } + const instanceWrapper = this.getInstanceByMetatype(metatype); + if (!instanceWrapper) { + return null; + } + const instanceHost = instanceWrapper.getInstanceByContextId(this.getContextId(contextId, instanceWrapper), inquirerId); + return instanceHost && instanceHost.instance; + } + getInstanceByMetatype(metatype) { + if (!this.moduleContext) { + return; + } + const collection = this.container.getModules(); + const moduleRef = collection.get(this.moduleContext); + if (!moduleRef) { + return; + } + return moduleRef.injectables.get(metatype); + } + getGlobalMetadata(contextId = STATIC_CONTEXT, inquirerId) { + if (!this.config) { + return []; + } + const globalInterceptors = this.config.getGlobalInterceptors(); + if (contextId === STATIC_CONTEXT && !inquirerId) { + return globalInterceptors; + } + const scopedInterceptorWrappers = this.config.getGlobalRequestInterceptors(); + const scopedInterceptors = (0, import_iterare4.iterate)(scopedInterceptorWrappers).map((wrapper) => wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId)).filter((host) => !!host).map((host) => host.instance).toArray(); + return globalInterceptors.concat(scopedInterceptors); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/interceptors/index.js +var init_interceptors = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/interceptors/index.js"() { + init_interceptors_consumer(); + init_interceptors_context_creator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/params-token-factory.js +var ParamsTokenFactory; +var init_params_token_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/params-token-factory.js"() { + init_internal(); + ParamsTokenFactory = class { + static { + __name(this, "ParamsTokenFactory"); + } + exchangeEnumForString(type) { + switch (type) { + case RouteParamtypes.BODY: + return "body"; + case RouteParamtypes.PARAM: + return "param"; + case RouteParamtypes.QUERY: + return "query"; + default: + return "custom"; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/pipes-consumer.js +var isThenable, PipesConsumer; +var init_pipes_consumer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/pipes-consumer.js"() { + init_params_token_factory(); + isThenable = /* @__PURE__ */ __name((value) => value !== null && (typeof value === "object" || typeof value === "function") && typeof value.then === "function", "isThenable"); + PipesConsumer = class { + static { + __name(this, "PipesConsumer"); + } + paramsTokenFactory = new ParamsTokenFactory(); + async apply(value, metadata, pipes) { + const token = this.paramsTokenFactory.exchangeEnumForString(metadata.type); + return this.applyPipes(value, { + metatype: metadata.metatype, + type: token, + data: metadata.data, + schema: metadata.schema + }, pipes); + } + async applyPipes(value, { metatype, type, data, schema }, transforms) { + let result = isThenable(value) ? await value : value; + for (const pipe of transforms) { + result = await pipe.transform(result, { metatype, type, data, schema }); + } + return result; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/pipes-context-creator.js +var import_iterare5, PipesContextCreator; +var init_pipes_context_creator = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/pipes-context-creator.js"() { + import_iterare5 = __toESM(require_lib(), 1); + init_context_creator(); + init_constants3(); + init_internal(); + PipesContextCreator = class extends ContextCreator { + static { + __name(this, "PipesContextCreator"); + } + container; + config; + moduleContext; + constructor(container, config) { + super(); + this.container = container; + this.config = config; + } + create(instance, callback, moduleKey, contextId = STATIC_CONTEXT, inquirerId) { + this.moduleContext = moduleKey; + return this.createContext(instance, callback, PIPES_METADATA, contextId, inquirerId); + } + createConcreteContext(metadata, contextId = STATIC_CONTEXT, inquirerId) { + if (isEmpty(metadata)) { + return []; + } + return (0, import_iterare5.iterate)(metadata).filter((pipe) => pipe && (isFunction(pipe) || isFunction(pipe.transform))).map((pipe) => this.getPipeInstance(pipe, contextId, inquirerId)).filter((pipe) => !!pipe && pipe.transform && isFunction(pipe.transform)).toArray(); + } + getPipeInstance(pipe, contextId = STATIC_CONTEXT, inquirerId) { + const isObject2 = !!pipe.transform; + if (isObject2) { + return pipe; + } + const instanceWrapper = this.getInstanceByMetatype(pipe); + if (!instanceWrapper) { + return null; + } + const instanceHost = instanceWrapper.getInstanceByContextId(this.getContextId(contextId, instanceWrapper), inquirerId); + return instanceHost && instanceHost.instance; + } + getInstanceByMetatype(metatype) { + if (!this.moduleContext) { + return; + } + const collection = this.container.getModules(); + const moduleRef = collection.get(this.moduleContext); + if (!moduleRef) { + return; + } + return moduleRef.injectables.get(metatype); + } + getGlobalMetadata(contextId = STATIC_CONTEXT, inquirerId) { + if (!this.config) { + return []; + } + const globalPipes = this.config.getGlobalPipes(); + if (contextId === STATIC_CONTEXT && !inquirerId) { + return globalPipes; + } + const scopedPipeWrappers = this.config.getGlobalRequestPipes(); + const scopedPipes = (0, import_iterare5.iterate)(scopedPipeWrappers).map((wrapper) => wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId)).filter((host) => !!host).map((host) => host.instance).toArray(); + return globalPipes.concat(scopedPipes); + } + setModuleContext(context) { + this.moduleContext = context; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/index.js +var init_pipes = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/pipes/index.js"() { + init_params_token_factory(); + init_pipes_consumer(); + init_pipes_context_creator(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/context-utils.js +var ContextUtils; +var init_context_utils = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/context-utils.js"() { + init_execution_context_host(); + init_internal(); + ContextUtils = class { + static { + __name(this, "ContextUtils"); + } + mapParamType(key) { + const keyPair = key.split(":"); + return keyPair[0]; + } + reflectCallbackParamtypes(instance, methodName) { + return Reflect.getMetadata(PARAMTYPES_METADATA, instance, methodName); + } + reflectCallbackMetadata(instance, methodName, metadataKey) { + return Reflect.getMetadata(metadataKey, instance.constructor, methodName); + } + reflectPassthrough(instance, methodName) { + return Reflect.getMetadata(RESPONSE_PASSTHROUGH_METADATA, instance.constructor, methodName); + } + getArgumentsLength(keys, metadata) { + return keys.length ? Math.max(...keys.map((key) => metadata[key].index)) + 1 : 0; + } + createNullArray(length) { + const a = new Array(length); + for (let i = 0; i < length; ++i) + a[i] = void 0; + return a; + } + mergeParamsMetatypes(paramsProperties, paramtypes) { + if (!paramtypes) { + return paramsProperties; + } + return paramsProperties.map((param) => ({ + ...param, + metatype: paramtypes[param.index] + })); + } + getCustomFactory(factory, data, contextFactory) { + return isFunction(factory) ? (...args) => factory(data, contextFactory(args)) : () => null; + } + getContextFactory(contextType, instance, callback) { + const type = instance && instance.constructor; + return (args) => { + const ctx = new ExecutionContextHost(args, type, callback); + ctx.setType(contextType); + return ctx; + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/external-proxy.js +var ExternalErrorProxy; +var init_external_proxy = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/external-proxy.js"() { + init_execution_context_host(); + ExternalErrorProxy = class { + static { + __name(this, "ExternalErrorProxy"); + } + createProxy(targetCallback, exceptionsHandler, type) { + return async (...args) => { + try { + return await targetCallback(...args); + } catch (e) { + const host = new ExecutionContextHost(args); + host.setType(type); + return exceptionsHandler.next(e, host); + } + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/handler-metadata-storage.js +var HANDLER_METADATA_SYMBOL, HandlerMetadataStorage; +var init_handler_metadata_storage = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/handler-metadata-storage.js"() { + HANDLER_METADATA_SYMBOL = /* @__PURE__ */ Symbol.for("handler_metadata:cache"); + HandlerMetadataStorage = class { + static { + __name(this, "HandlerMetadataStorage"); + } + // Keyed by class: same-named classes must not share an entry. + [HANDLER_METADATA_SYMBOL] = /* @__PURE__ */ new WeakMap(); + set(controller, methodName, metadata) { + const ctor = controller.constructor; + if (!ctor) { + return; + } + let handlers = this[HANDLER_METADATA_SYMBOL].get(ctor); + if (!handlers) { + handlers = /* @__PURE__ */ new Map(); + this[HANDLER_METADATA_SYMBOL].set(ctor, handlers); + } + handlers.set(methodName, metadata); + } + get(controller, methodName) { + const handlers = this[HANDLER_METADATA_SYMBOL].get(controller.constructor); + return handlers?.get(methodName); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/external-context-creator.js +var import_rxjs5, ExternalContextCreator; +var init_external_context_creator = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/external-context-creator.js"() { + init_common(); + init_internal(); + import_rxjs5 = __toESM(require_cjs(), 1); + init_external_exception_filter_context(); + init_constants4(); + init_guards(); + init_constants3(); + init_interceptors(); + init_pipes(); + init_class_ref_registry(); + init_context_utils(); + init_external_proxy(); + init_handler_metadata_storage(); + ExternalContextCreator = class _ExternalContextCreator { + static { + __name(this, "ExternalContextCreator"); + } + guardsContextCreator; + guardsConsumer; + interceptorsContextCreator; + interceptorsConsumer; + modulesContainer; + pipesContextCreator; + pipesConsumer; + filtersContextCreator; + contextUtils = new ContextUtils(); + externalErrorProxy = new ExternalErrorProxy(); + handlerMetadataStorage = new HandlerMetadataStorage(); + container; + constructor(guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, modulesContainer, pipesContextCreator, pipesConsumer, filtersContextCreator) { + this.guardsContextCreator = guardsContextCreator; + this.guardsConsumer = guardsConsumer; + this.interceptorsContextCreator = interceptorsContextCreator; + this.interceptorsConsumer = interceptorsConsumer; + this.modulesContainer = modulesContainer; + this.pipesContextCreator = pipesContextCreator; + this.pipesConsumer = pipesConsumer; + this.filtersContextCreator = filtersContextCreator; + } + static fromContainer(container) { + const guardsContextCreator = new GuardsContextCreator(container, container.applicationConfig); + const guardsConsumer = new GuardsConsumer(); + const interceptorsContextCreator = new InterceptorsContextCreator(container, container.applicationConfig); + const interceptorsConsumer = new InterceptorsConsumer(); + const pipesContextCreator = new PipesContextCreator(container, container.applicationConfig); + const pipesConsumer = new PipesConsumer(); + const filtersContextCreator = new ExternalExceptionFilterContext(container, container.applicationConfig); + const externalContextCreator = new _ExternalContextCreator(guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, container.getModules(), pipesContextCreator, pipesConsumer, filtersContextCreator); + externalContextCreator.container = container; + return externalContextCreator; + } + create(instance, callback, methodName, metadataKey, paramsFactory, contextId = STATIC_CONTEXT, inquirerId, options = { + interceptors: true, + guards: true, + filters: true + }, contextType = "http") { + const classRef = getClassRef(instance); + const moduleKey = this.getContextModuleKey(classRef) || this.getHostModuleKey(instance, inquirerId); + inquirerId ??= this.modulesContainer.get(moduleKey)?.entryProviders.find((item) => item.token === classRef || item.instance === instance)?.id; + const { argsLength, paramtypes, getParamsMetadata } = this.getMetadata(instance, methodName, metadataKey, paramsFactory, contextType); + const pipes = this.pipesContextCreator.create(instance, callback, moduleKey, contextId, inquirerId); + const guards = this.guardsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId); + const exceptionFilter = this.filtersContextCreator.create(instance, callback, moduleKey, contextId, inquirerId); + const interceptors = options.interceptors ? this.interceptorsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId) : []; + const paramsMetadata = getParamsMetadata(moduleKey, contextId, inquirerId); + const paramsOptions = paramsMetadata ? this.contextUtils.mergeParamsMetatypes(paramsMetadata, paramtypes) : []; + const fnCanActivate = options.guards ? this.createGuardsFn(guards, instance, callback, contextType) : null; + const fnApplyPipes = this.createPipesFn(pipes, paramsOptions); + const handler = /* @__PURE__ */ __name((initialArgs, ...args) => async () => { + if (fnApplyPipes) { + await fnApplyPipes(initialArgs, ...args); + return callback.apply(instance, initialArgs); + } + return callback.apply(instance, args); + }, "handler"); + const target = /* @__PURE__ */ __name(async (...args) => { + const initialArgs = this.contextUtils.createNullArray(argsLength); + fnCanActivate && await fnCanActivate(args); + const result = await this.interceptorsConsumer.intercept(interceptors, args, instance, callback, handler(initialArgs, ...args), contextType); + return this.transformToResult(result); + }, "target"); + return options.filters ? this.externalErrorProxy.createProxy(target, exceptionFilter, contextType) : target; + } + getMetadata(instance, methodName, metadataKey, paramsFactory, contextType) { + const cacheMetadata = this.handlerMetadataStorage.get(instance, methodName); + if (cacheMetadata) { + return cacheMetadata; + } + const metadata = this.contextUtils.reflectCallbackMetadata(instance, methodName, metadataKey || "") || {}; + const keys = Object.keys(metadata); + const argsLength = this.contextUtils.getArgumentsLength(keys, metadata); + const paramtypes = this.contextUtils.reflectCallbackParamtypes(instance, methodName); + const contextFactory = this.contextUtils.getContextFactory(contextType, instance, instance[methodName]); + const getParamsMetadata = /* @__PURE__ */ __name((moduleKey, contextId = STATIC_CONTEXT, inquirerId) => paramsFactory ? this.exchangeKeysForValues(keys, metadata, moduleKey, paramsFactory, contextId, inquirerId, contextFactory) : null, "getParamsMetadata"); + const handlerMetadata = { + argsLength, + paramtypes, + getParamsMetadata + }; + this.handlerMetadataStorage.set(instance, methodName, handlerMetadata); + return handlerMetadata; + } + getContextModuleKey(moduleCtor) { + const emptyModuleKey = ""; + if (!moduleCtor) { + return emptyModuleKey; + } + const moduleContainerEntries = this.modulesContainer.entries(); + for (const [key, moduleRef] of moduleContainerEntries) { + if (moduleRef.hasProvider(moduleCtor)) { + return key; + } + } + return emptyModuleKey; + } + /** + * Returns the key of the module of a host registered under a token other + * than its class (e.g., `{ provide: 'TOKEN', useClass: Resolver }`): the + * module whose providers include the given inquirer or, without one, the + * given instance. + */ + getHostModuleKey(instance, inquirerId) { + for (const [key, moduleRef] of this.modulesContainer.entries()) { + const host = inquirerId ? moduleRef.getProviderById(inquirerId) : [...moduleRef.providers.values()].find((wrapper) => !wrapper.isAlias && wrapper.instance === instance); + if (host) { + return key; + } + } + return ""; + } + exchangeKeysForValues(keys, metadata, moduleContext, paramsFactory, contextId = STATIC_CONTEXT, inquirerId, contextFactory = this.contextUtils.getContextFactory("http")) { + this.pipesContextCreator.setModuleContext(moduleContext); + return keys.map((key) => { + const { index, data, pipes: pipesCollection, schema } = metadata[key]; + const pipes = this.pipesContextCreator.createConcreteContext(pipesCollection, contextId, inquirerId); + const type = this.contextUtils.mapParamType(key); + if (key.includes(CUSTOM_ROUTE_ARGS_METADATA)) { + const { factory } = metadata[key]; + const customExtractValue = this.contextUtils.getCustomFactory(factory, data, contextFactory); + return { + index, + extractValue: customExtractValue, + type, + data, + pipes, + schema + }; + } + const numericType = Number(type); + const extractValue = /* @__PURE__ */ __name((...args) => paramsFactory.exchangeKeyForValue(numericType, data, args), "extractValue"); + return { index, extractValue, type: numericType, data, pipes, schema }; + }); + } + createPipesFn(pipes, paramsOptions) { + const pipesFn = /* @__PURE__ */ __name(async (args, ...params) => { + const resolveParamValue = /* @__PURE__ */ __name(async (param) => { + const { index, extractValue, type, data, metatype, pipes: paramPipes, schema } = param; + const value = extractValue(...params); + args[index] = await this.getParamValue(value, { metatype, type, data, schema }, pipes.concat(paramPipes)); + }, "resolveParamValue"); + await Promise.all(paramsOptions.map(resolveParamValue)); + }, "pipesFn"); + return paramsOptions.length ? pipesFn : null; + } + async getParamValue(value, metadata, pipes) { + return isEmptyArray(pipes) ? value : this.pipesConsumer.apply(value, metadata, pipes); + } + async transformToResult(resultOrDeferred) { + if ((0, import_rxjs5.isObservable)(resultOrDeferred)) { + return (0, import_rxjs5.lastValueFrom)(resultOrDeferred); + } + return resultOrDeferred; + } + createGuardsFn(guards, instance, callback, contextType) { + const canActivateFn = /* @__PURE__ */ __name(async (args) => { + const canActivate = await this.guardsConsumer.tryActivate(guards, args, instance, callback, contextType); + if (!canActivate) { + throw new ForbiddenException(FORBIDDEN_MESSAGE); + } + }, "canActivateFn"); + return guards.length ? canActivateFn : null; + } + registerRequestProvider(request, contextId) { + this.container.registerRequestProvider(request, contextId); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/index.js +var init_helpers = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/index.js"() { + init_context_id_factory(); + init_external_context_creator(); + init_http_adapter_host(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/circular-dependency.exception.js +var CircularDependencyException; +var init_circular_dependency_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/circular-dependency.exception.js"() { + init_runtime_exception(); + CircularDependencyException = class extends RuntimeException { + static { + __name(this, "CircularDependencyException"); + } + constructor(context) { + const ctx = context ? ` inside ${context}` : ``; + super(`A circular dependency has been detected${ctx}. Please, make sure that each side of a bidirectional relationships are decorated with "forwardRef()". Note that circular relationships between custom providers (e.g., factories) are not supported since functions cannot be called more than once.`); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-element.exception.js +var UnknownElementException; +var init_unknown_element_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-element.exception.js"() { + init_runtime_exception(); + UnknownElementException = class extends RuntimeException { + static { + __name(this, "UnknownElementException"); + } + constructor(name) { + name = name && name.toString(); + super(`Nest could not find ${name || "given"} element (this provider does not exist in the current context)`); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-class-scope.exception.js +var InvalidClassScopeException; +var init_invalid_class_scope_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-class-scope.exception.js"() { + init_messages(); + init_runtime_exception(); + init_internal(); + InvalidClassScopeException = class extends RuntimeException { + static { + __name(this, "InvalidClassScopeException"); + } + constructor(metatypeOrToken) { + let name = isFunction(metatypeOrToken) ? metatypeOrToken.name : metatypeOrToken; + name = name && name.toString(); + super(INVALID_CLASS_SCOPE_MESSAGE`${name}`); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-class.exception.js +var InvalidClassException; +var init_invalid_class_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-class.exception.js"() { + init_messages(); + init_runtime_exception(); + InvalidClassException = class extends RuntimeException { + static { + __name(this, "InvalidClassException"); + } + constructor(value) { + super(INVALID_CLASS_MESSAGE`${value}`); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/route-conflict.exception.js +var RouteConflictException; +var init_route_conflict_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/route-conflict.exception.js"() { + init_messages(); + init_runtime_exception(); + RouteConflictException = class extends RuntimeException { + static { + __name(this, "RouteConflictException"); + } + constructor(messages) { + super(ROUTE_CONFLICT_MESSAGE(messages)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-export.exception.js +var UnknownExportException; +var init_unknown_export_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-export.exception.js"() { + init_messages(); + init_runtime_exception(); + UnknownExportException = class extends RuntimeException { + static { + __name(this, "UnknownExportException"); + } + constructor(token, moduleName) { + super(UNKNOWN_EXPORT_MESSAGE(token, moduleName)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-module.exception.js +var UnknownModuleException; +var init_unknown_module_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-module.exception.js"() { + init_runtime_exception(); + UnknownModuleException = class extends RuntimeException { + static { + __name(this, "UnknownModuleException"); + } + constructor(moduleName) { + super(`Nest could not select the given module (${moduleName ? `"${moduleName}"` : "it"} does not exist in current context).`); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/undefined-forwardref.exception.js +var UndefinedForwardRefException; +var init_undefined_forwardref_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/undefined-forwardref.exception.js"() { + init_messages(); + init_runtime_exception(); + UndefinedForwardRefException = class extends RuntimeException { + static { + __name(this, "UndefinedForwardRefException"); + } + constructor(scope) { + super(UNDEFINED_FORWARDREF_MESSAGE(scope)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/index.js +var init_exceptions2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/index.js"() { + init_circular_dependency_exception(); + init_runtime_exception(); + init_unknown_element_exception(); + init_invalid_class_scope_exception(); + init_invalid_class_exception(); + init_route_conflict_exception(); + init_unknown_export_exception(); + init_unknown_module_exception(); + init_undefined_forwardref_exception(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.js +var InitializeOnPreviewAllowlist; +var init_initialize_on_preview_allowlist = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.js"() { + InitializeOnPreviewAllowlist = class { + static { + __name(this, "InitializeOnPreviewAllowlist"); + } + static allowlist = /* @__PURE__ */ new WeakMap(); + static add(type) { + this.allowlist.set(type, true); + } + static has(type) { + return this.allowlist.has(type); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/inquirer/inquirer-constants.js +var INQUIRER; +var init_inquirer_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/inquirer/inquirer-constants.js"() { + INQUIRER = "INQUIRER"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/helpers/silent-logger.js +var noop, SilentLogger; +var init_silent_logger = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/helpers/silent-logger.js"() { + init_common(); + noop = /* @__PURE__ */ __name(() => { + }, "noop"); + SilentLogger = class extends Logger { + static { + __name(this, "SilentLogger"); + } + log = noop; + error = noop; + warn = noop; + debug = noop; + verbose = noop; + fatal = noop; + setLogLevels = noop; + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/request-scoped-create.exception.js +var RequestScopedCreateException; +var init_request_scoped_create_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/request-scoped-create.exception.js"() { + init_messages(); + init_runtime_exception(); + RequestScopedCreateException = class extends RuntimeException { + static { + __name(this, "RequestScopedCreateException"); + } + constructor(name) { + super(REQUEST_SCOPED_CREATE_MESSAGE(name)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/get-class-scope.js +function getClassScope(provider) { + const metadata = Reflect.getMetadata(SCOPE_OPTIONS_METADATA, provider); + return metadata && metadata.scope; +} +var init_get_class_scope = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/get-class-scope.js"() { + init_internal(); + __name(getClassScope, "getClassScope"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/is-durable.js +function isDurable(provider) { + const metadata = Reflect.getMetadata(SCOPE_OPTIONS_METADATA, provider); + return metadata && metadata.durable; +} +var init_is_durable = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/is-durable.js"() { + init_internal(); + __name(isDurable, "isDurable"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/abstract-instance-resolver.js +var AbstractInstanceResolver; +var init_abstract_instance_resolver = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/abstract-instance-resolver.js"() { + init_common(); + init_exceptions2(); + AbstractInstanceResolver = class { + static { + __name(this, "AbstractInstanceResolver"); + } + find(typeOrToken, options) { + const instanceLinkOrArray = this.instanceLinksHost.get(typeOrToken, options); + const pluckInstance = /* @__PURE__ */ __name(({ wrapperRef }) => { + if (wrapperRef.scope === Scope.REQUEST || wrapperRef.scope === Scope.TRANSIENT || !wrapperRef.isDependencyTreeStatic()) { + throw new InvalidClassScopeException(typeOrToken); + } + return wrapperRef.instance; + }, "pluckInstance"); + if (Array.isArray(instanceLinkOrArray)) { + return instanceLinkOrArray.map(pluckInstance); + } + return pluckInstance(instanceLinkOrArray); + } + async resolvePerContext(typeOrToken, contextModule, contextId, options) { + const instanceLinkOrArray = options?.strict ? this.instanceLinksHost.get(typeOrToken, { + moduleId: contextModule.id, + each: options.each + }) : this.instanceLinksHost.get(typeOrToken, { + each: options?.each + }); + const pluckInstance = /* @__PURE__ */ __name(async (instanceLink) => { + const { wrapperRef, collection } = instanceLink; + if (wrapperRef.isDependencyTreeStatic() && !wrapperRef.isTransient) { + return wrapperRef.instance; + } + const ctorHost = wrapperRef.instance || { constructor: typeOrToken }; + const instance = await this.injector.loadPerContext(ctorHost, wrapperRef.host, collection, contextId, wrapperRef); + if (!instance) { + throw new UnknownElementException(); + } + return instance; + }, "pluckInstance"); + if (Array.isArray(instanceLinkOrArray)) { + return Promise.all(instanceLinkOrArray.map((instanceLink) => pluckInstance(instanceLink))); + } + return pluckInstance(instanceLinkOrArray); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/undefined-dependency.exception.js +var UndefinedDependencyException; +var init_undefined_dependency_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/undefined-dependency.exception.js"() { + init_messages(); + init_runtime_exception(); + UndefinedDependencyException = class extends RuntimeException { + static { + __name(this, "UndefinedDependencyException"); + } + constructor(type, undefinedDependencyContext, moduleRef) { + super(UNKNOWN_DEPENDENCIES_MESSAGE(type, undefinedDependencyContext, moduleRef)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-dependencies.exception.js +var UnknownDependenciesException; +var init_unknown_dependencies_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-dependencies.exception.js"() { + init_messages(); + init_runtime_exception(); + UnknownDependenciesException = class extends RuntimeException { + static { + __name(this, "UnknownDependenciesException"); + } + type; + context; + metadata; + moduleRef; + constructor(type, context, moduleRef, metadata) { + super(UNKNOWN_DEPENDENCIES_MESSAGE(type, context, moduleRef)); + this.type = type; + this.context = context; + this.metadata = metadata; + this.moduleRef = moduleRef && { id: moduleRef.id }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/barrier.js +var Barrier; +var init_barrier = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/barrier.js"() { + Barrier = class { + static { + __name(this, "Barrier"); + } + currentCount; + targetCount; + promise; + resolve; + constructor(targetCount) { + this.currentCount = 0; + this.targetCount = targetCount; + this.promise = new Promise((resolve) => { + this.resolve = resolve; + }); + if (targetCount === 0) { + this.resolve(); + } + } + /** + * Signal that a participant has reached the barrier. + * + * The barrier will be resolved once `targetCount` participants have reached it. + */ + signal() { + this.currentCount += 1; + if (this.currentCount >= this.targetCount) { + this.resolve(); + } + } + /** + * Wait for the barrier to be resolved. + * + * @returns A promise that resolves when the barrier is resolved. + */ + async wait() { + return this.promise; + } + /** + * Signal that a participant has reached the barrier and wait for the barrier to be resolved. + * + * The barrier will be resolved once `targetCount` participants have reached it. + * + * @returns A promise that resolves when the barrier is resolved. + */ + async signalAndWait() { + this.signal(); + return this.wait(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/safe-instance-decorator.js +function makeSafeInstanceDecorator(decorator) { + return (target) => { + try { + return decorator(target); + } catch (err) { + logger.warn(`The "instanceDecorator" function threw an error while decorating an instance (${err?.message ?? err}). The undecorated instance will be used instead.`); + return target; + } + }; +} +var logger; +var init_safe_instance_decorator = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/safe-instance-decorator.js"() { + init_common(); + logger = new Logger("InstrumentLogger"); + __name(makeSafeInstanceDecorator, "makeSafeInstanceDecorator"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/helpers/is-debug-mode.util.js +function isDebugMode() { + return !!process.env.NEST_DEBUG; +} +var init_is_debug_mode_util = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/helpers/is-debug-mode.util.js"() { + __name(isDebugMode, "isDebugMode"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/inquirer/index.js +var init_inquirer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/inquirer/index.js"() { + init_inquirer_constants(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/settlement-signal.js +var SettlementSignal; +var init_settlement_signal = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/settlement-signal.js"() { + SettlementSignal = class { + static { + __name(this, "SettlementSignal"); + } + _refs = /* @__PURE__ */ new Map(); + settledPromise; + settleFn; + completed = false; + constructor() { + this.settledPromise = new Promise((resolve) => { + this.settleFn = resolve; + }); + } + /** + * Resolves the promise returned by `asPromise`. + */ + complete() { + this.completed = true; + this.settleFn(); + } + /** + * Rejects the promise returned by `asPromise` with the given error. + * @param err Error to reject the promise returned by `asPromise` with. + */ + error(err) { + this.completed = true; + this.settleFn(err); + } + /** + * Returns a promise that will be resolved when `complete` or `error` is called. + * @returns Promise that will be resolved when `complete` or `error` is called. + */ + asPromise() { + return this.settledPromise; + } + /** + * Inserts a wrapper that the host of this signal depends on. + * @param ref Wrapper to insert. + */ + insertRef(ref) { + this._refs.set(ref.id, ref); + } + /** + * Check if relationship is circular, i.e. whether the host of this signal + * is still waiting, directly or through other pending dependencies, on the + * given wrapper. + * @param wrapperId Wrapper id to check. + * @returns True if relationship is circular, false otherwise. + */ + isCycle(wrapperId) { + return this.waitsOn(wrapperId, /* @__PURE__ */ new Set()); + } + waitsOn(wrapperId, visited) { + if (this.completed || visited.has(this)) { + return false; + } + visited.add(this); + for (const [refId, ref] of this._refs) { + if (refId === wrapperId || ref.settlementSignal?.waitsOn(wrapperId, visited)) { + return true; + } + } + return false; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/injector.js +import { performance as performance2 } from "perf_hooks"; +var import_iterare6, Injector; +var init_injector = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/injector.js"() { + init_common(); + init_internal(); + import_iterare6 = __toESM(require_lib(), 1); + init_exceptions2(); + init_runtime_exception(); + init_undefined_dependency_exception(); + init_unknown_dependencies_exception(); + init_barrier(); + init_safe_instance_decorator(); + init_constants3(); + init_is_debug_mode_util(); + init_inquirer(); + init_settlement_signal(); + Injector = class { + static { + __name(this, "Injector"); + } + options; + logger = new Logger("InjectorLogger"); + instanceDecorator = /* @__PURE__ */ __name((target) => target, "instanceDecorator"); + /** + * Per-context loads that the provider which started them could not wait + * for (see `resolveComponentHost`), awaited by `waitForDeferredLoads`. + */ + deferredLoads = /* @__PURE__ */ new WeakMap(); + /** + * Deferred loads that are still running, per durable dependent of the + * provider being loaded and per context of that dependent (see + * `trackDurableDeferredLoad`). + */ + durableDeferredLoads = /* @__PURE__ */ new WeakMap(); + /** + * Durable instances that may reference the placeholder of a provider whose + * deferred load failed, with the error (see `trackDurableDeferredLoad`). + */ + failedInstances = /* @__PURE__ */ new WeakMap(); + constructor(options) { + this.options = options; + if (options?.instanceDecorator) { + this.instanceDecorator = makeSafeInstanceDecorator(options.instanceDecorator); + } + } + loadPrototype({ token }, collection, contextId = STATIC_CONTEXT) { + if (!collection) { + return; + } + const target = collection.get(token); + const instance = target.createPrototype(contextId); + if (instance) { + target.setInstanceByContextId(contextId, { instance }); + } + } + async loadInstance(wrapper, collection, moduleRef, resolutionContext = { contextId: STATIC_CONTEXT }) { + const inquirerId = this.getContextInquirerId(resolutionContext); + const hostContextId = this.getContextId(resolutionContext.contextId, wrapper); + const instanceHost = this.getInstanceHost(wrapper, hostContextId, inquirerId); + if (instanceHost.isPending) { + const settlementSignal2 = wrapper.settlementSignal; + if (resolutionContext.inquirer && settlementSignal2?.isCycle(resolutionContext.inquirer.id)) { + throw new CircularDependencyException(`"${wrapper.name}"`); + } + return instanceHost.donePromise.then((err) => { + if (err) { + throw err; + } + if (this.failedInstances.has(instanceHost)) { + throw this.failedInstances.get(instanceHost); + } + this.linkDurableDeferredLoads(wrapper, resolutionContext.contextId, hostContextId); + }); + } + const settlementSignal = this.applySettlementSignal(instanceHost, wrapper); + const token = wrapper.token || wrapper.name; + const { inject } = wrapper; + const targetWrapper = collection.get(token); + if (isUndefined(targetWrapper)) { + throw new RuntimeException(); + } + if (instanceHost.isResolved) { + return settlementSignal.complete(); + } + try { + const t0 = this.getNowTimestamp(); + const localResolutionContext = this.createResolutionContext(resolutionContext.contextId, wrapper, inquirerId); + const callback = /* @__PURE__ */ __name(async (instances, depth = 0) => { + const properties = await this.resolveProperties(wrapper, moduleRef, inject, localResolutionContext, resolutionContext.inquirer); + const instance = await this.instantiateClass(instances, wrapper, targetWrapper, wrapper.isTransient ? localResolutionContext : resolutionContext); + this.applyProperties(instance, properties); + wrapper.hierarchyLevel = depth + 1; + wrapper.initTime = this.getNowTimestamp() - t0; + settlementSignal.complete(); + }, "callback"); + await this.resolveConstructorParams(wrapper, moduleRef, inject, callback, localResolutionContext, resolutionContext.inquirer); + if (!instanceHost.isResolved) { + settlementSignal.complete(); + } + } catch (err) { + wrapper.removeInstanceByContextId(this.getContextId(resolutionContext.contextId, wrapper), inquirerId); + settlementSignal.error(err); + throw err; + } + } + async loadMiddleware(wrapper, collection, moduleRef, contextId = STATIC_CONTEXT, inquirer) { + const { metatype, token } = wrapper; + const targetWrapper = collection.get(token); + if (!isUndefined(targetWrapper.instance)) { + return; + } + targetWrapper.instance = Object.create(metatype.prototype); + await this.loadInstance(wrapper, collection, moduleRef, this.createResolutionContext(contextId, inquirer || wrapper)); + } + async loadController(wrapper, moduleRef, contextId = STATIC_CONTEXT) { + const controllers = moduleRef.controllers; + await this.loadInstance(wrapper, controllers, moduleRef, this.createResolutionContext(contextId, wrapper)); + if (wrapper.isDependencyTreeStatic()) { + return this.loadEnhancers(contextId, wrapper, wrapper.getEnhancersMetadata() || []); + } + await this.loadEnhancersPerContext(wrapper, contextId, wrapper); + } + async loadInjectable(wrapper, moduleRef, contextId = STATIC_CONTEXT, inquirer) { + const injectables = moduleRef.injectables; + await this.loadInstance(wrapper, injectables, moduleRef, this.createResolutionContext(contextId, inquirer)); + } + async loadProvider(wrapper, moduleRef, resolutionContext = { contextId: STATIC_CONTEXT }) { + if (this.shouldSkipProviderLoading(wrapper, resolutionContext)) { + if (!resolutionContext.inquirer) { + await this.lookupSkippedProviderDependencies(wrapper, moduleRef); + } + return; + } + const providers = moduleRef.providers; + await this.loadInstance(wrapper, providers, moduleRef, resolutionContext); + if (resolutionContext.contextId === STATIC_CONTEXT && !resolutionContext.inquirer && wrapper.isDependencyTreeStatic()) { + const enhancers = wrapper.getEnhancersMetadata() || []; + return this.loadEnhancers(STATIC_CONTEXT, wrapper, enhancers.filter((item) => item.isTransient)); + } + await this.loadEnhancersPerContext(wrapper, resolutionContext.contextId, wrapper); + } + applySettlementSignal(instancePerContext, host) { + const settlementSignal = new SettlementSignal(); + instancePerContext.donePromise = settlementSignal.asPromise(); + instancePerContext.isPending = true; + host.settlementSignal = settlementSignal; + return settlementSignal; + } + async resolveConstructorParams(wrapper, moduleRef, inject, callback, resolutionContext = { contextId: STATIC_CONTEXT }, parentInquirer) { + const metadata = wrapper.getCtorMetadata(); + if (resolutionContext.contextId !== STATIC_CONTEXT && this.hasDenseCtorMetadata(wrapper, inject, metadata)) { + const deps = await this.loadCtorMetadata(metadata, resolutionContext.contextId, resolutionContext.inquirer, parentInquirer); + return callback(deps); + } + const isFactoryProvider2 = !isNil(inject); + const [dependencies, optionalDependenciesIds] = isFactoryProvider2 ? this.getFactoryProviderDependencies(wrapper) : this.getClassDependencies(wrapper); + const paramBarrier = new Barrier(dependencies.length); + let isResolved = true; + let depth = 0; + const resolveParam = /* @__PURE__ */ __name(async (param, index) => { + try { + if (this.isInquirer(param, parentInquirer)) { + paramBarrier.signal(); + return parentInquirer && parentInquirer.instance; + } + if (resolutionContext.inquirer?.isTransient && parentInquirer) { + resolutionContext.rootInquirer = parentInquirer; + } + const nestedResolutionContext = this.getStaticTransientResolutionContext(resolutionContext, parentInquirer); + const paramWrapper = await this.resolveSingleParam(wrapper, param, { index, dependencies }, moduleRef, nestedResolutionContext, index); + await paramBarrier.signalAndWait(); + const effectiveResolutionContext = this.getEffectiveResolutionContext(paramWrapper, resolutionContext, parentInquirer); + const paramWrapperWithInstance = await this.resolveComponentHost(moduleRef, paramWrapper, effectiveResolutionContext); + if (paramWrapperWithInstance.hierarchyLevel > depth) { + depth = paramWrapperWithInstance.hierarchyLevel; + } + const instanceHost = paramWrapperWithInstance.getInstanceByContextId(this.getContextId(effectiveResolutionContext.contextId, paramWrapperWithInstance), effectiveResolutionContext.effectiveInquirerId); + if (!instanceHost.isResolved && !paramWrapperWithInstance.forwardRef) { + isResolved = false; + } + return instanceHost?.instance; + } catch (err) { + paramBarrier.signal(); + const isOptional = optionalDependenciesIds.includes(index); + if (!isOptional) { + throw err; + } + return void 0; + } + }, "resolveParam"); + const instances = await Promise.all(dependencies.map(resolveParam)); + isResolved && await callback(instances, depth); + } + getClassDependencies(wrapper) { + const ctorRef = wrapper.metatype; + return [ + this.reflectConstructorParams(ctorRef), + this.reflectOptionalParams(ctorRef) + ]; + } + getFactoryProviderDependencies(wrapper) { + const optionalDependenciesIds = []; + function isOptionalFactoryDependency(value) { + const token = value?.token; + if (isNil(token)) { + return false; + } + return !isUndefined(value.optional) && !value.prototype; + } + __name(isOptionalFactoryDependency, "isOptionalFactoryDependency"); + const mapFactoryProviderInjectArray = /* @__PURE__ */ __name((item, index) => { + const isWrappedDependency = !isNil(item) && typeof item === "object" && "token" in item; + const token = isWrappedDependency ? item.token : item; + if (isNil(token)) { + throw new UndefinedDependencyException(wrapper.name, { + index, + dependencies: wrapper.inject ?? void 0 + }); + } + if (typeof item !== "object") { + return item; + } + if (isOptionalFactoryDependency(item)) { + if (item.optional) { + optionalDependenciesIds.push(index); + } + return item?.token; + } + return item; + }, "mapFactoryProviderInjectArray"); + const inject = wrapper.inject ?? []; + const dependencies = Array.from(inject, mapFactoryProviderInjectArray); + return [dependencies, optionalDependenciesIds]; + } + reflectConstructorParams(type) { + const paramtypes = [ + ...Reflect.getMetadata(PARAMTYPES_METADATA, type) || [] + ]; + const selfParams = this.reflectSelfParams(type); + selfParams.forEach(({ index, param }) => paramtypes[index] = param); + return Array.from(paramtypes); + } + reflectOptionalParams(type) { + const ctorOwner = this.getConstructorOwner(type); + return Reflect.getOwnMetadata(OPTIONAL_DEPS_METADATA, ctorOwner) || []; + } + /** + * Returns the class in the prototype chain that declares the constructor + * `type` is instantiated with. A subclass without its own constructor + * inherits both the parent's parameter types and its `@Optional()` flags, + * while a subclass that redeclares the constructor must not inherit the + * parent's flags, as its parameters are unrelated to the parent's. + */ + getConstructorOwner(type) { + let current = type; + while (isFunction(current) && current !== Function.prototype) { + if (Reflect.hasOwnMetadata(PARAMTYPES_METADATA, current) || Reflect.hasOwnMetadata(OPTIONAL_DEPS_METADATA, current) || Reflect.hasOwnMetadata(SELF_DECLARED_DEPS_METADATA, current)) { + return current; + } + current = Object.getPrototypeOf(current); + } + return type; + } + reflectSelfParams(type) { + return Reflect.getMetadata(SELF_DECLARED_DEPS_METADATA, type) || []; + } + async resolveSingleParam(wrapper, param, dependencyContext, moduleRef, resolutionContext = { contextId: STATIC_CONTEXT }, keyOrIndex) { + if (isUndefined(param)) { + this.logger.log("Nest encountered an undefined dependency. This may be due to a circular import or a missing dependency declaration."); + throw new UndefinedDependencyException(wrapper.name, dependencyContext, moduleRef); + } + const token = this.resolveParamToken(wrapper, param); + return this.resolveComponentWrapper(moduleRef, token, dependencyContext, wrapper, resolutionContext, keyOrIndex); + } + resolveParamToken(wrapper, param) { + if (typeof param === "object" && "forwardRef" in param) { + wrapper.forwardRef = true; + return param.forwardRef(); + } + return param; + } + async resolveComponentWrapper(moduleRef, token, dependencyContext, wrapper, resolutionContext = { contextId: STATIC_CONTEXT }, keyOrIndex) { + this.printResolvingDependenciesLog(token, resolutionContext.inquirer); + this.printLookingForProviderLog(token, moduleRef); + const providers = moduleRef.providers; + return this.lookupComponent(providers, moduleRef, { ...dependencyContext, name: token }, wrapper, resolutionContext, keyOrIndex); + } + async resolveComponentHost(moduleRef, instanceWrapper, resolutionContext = { contextId: STATIC_CONTEXT }) { + const inquirerId = this.getContextInquirerId(resolutionContext); + const instanceHost = this.getInstanceHost(instanceWrapper, this.getContextId(resolutionContext.contextId, instanceWrapper), inquirerId); + if (!instanceHost.isResolved && !instanceWrapper.forwardRef) { + resolutionContext.inquirer?.settlementSignal?.insertRef(instanceWrapper); + await this.loadProvider(instanceWrapper, instanceWrapper.host ?? moduleRef, resolutionContext); + } else if (!instanceHost.isResolved && instanceWrapper.forwardRef && (resolutionContext.contextId !== STATIC_CONTEXT || !!inquirerId)) { + if (instanceHost.donePromise) { + const deferredLoad = instanceHost.donePromise.then((err) => { + if (err) { + throw err; + } + return this.loadProvider(instanceWrapper, instanceWrapper.host ?? moduleRef, resolutionContext); + }); + void deferredLoad.catch((err) => { + instanceWrapper.settlementSignal?.error(err); + }); + this.addDeferredLoad(resolutionContext.contextId, deferredLoad); + this.trackDurableDeferredLoad(instanceWrapper, resolutionContext.contextId, deferredLoad); + } else { + resolutionContext.inquirer?.settlementSignal?.insertRef(instanceWrapper); + await this.loadProvider(instanceWrapper, instanceWrapper.host ?? moduleRef, resolutionContext); + } + } + if (instanceWrapper.async) { + const host = instanceWrapper.getInstanceByContextId(this.getContextId(resolutionContext.contextId, instanceWrapper), inquirerId); + host.instance = await host.instance; + instanceWrapper.setInstanceByContextId(resolutionContext.contextId, host, inquirerId); + } + this.linkDurableDeferredLoads(instanceWrapper, resolutionContext.contextId, this.getContextId(resolutionContext.contextId, instanceWrapper)); + return instanceWrapper; + } + async lookupComponent(providers, moduleRef, dependencyContext, wrapper, resolutionContext = { contextId: STATIC_CONTEXT }, keyOrIndex) { + const token = wrapper.token || wrapper.name; + const { name } = dependencyContext; + if (wrapper && token === name) { + throw new UnknownDependenciesException(wrapper.name, dependencyContext, moduleRef, { id: wrapper.id }); + } + if (name && providers.has(name)) { + const instanceWrapper = providers.get(name); + this.printFoundInModuleLog(name, moduleRef); + this.addDependencyMetadata(keyOrIndex, wrapper, instanceWrapper); + return instanceWrapper; + } + return this.lookupComponentInParentModules(dependencyContext, moduleRef, wrapper, resolutionContext, keyOrIndex); + } + async lookupComponentInParentModules(dependencyContext, moduleRef, wrapper, resolutionContext = { contextId: STATIC_CONTEXT }, keyOrIndex) { + const instanceWrapper = await this.lookupComponentInImports(moduleRef, dependencyContext.name, wrapper, /* @__PURE__ */ new Set(), resolutionContext, keyOrIndex); + if (isNil(instanceWrapper)) { + throw new UnknownDependenciesException(wrapper.name, dependencyContext, moduleRef, { id: wrapper.id }); + } + return instanceWrapper; + } + async lookupComponentInImports(moduleRef, name, wrapper, moduleRegistry = /* @__PURE__ */ new Set(), resolutionContext = { contextId: STATIC_CONTEXT }, keyOrIndex, isTraversing) { + let instanceWrapperRef = null; + const imports = moduleRef.imports || /* @__PURE__ */ new Set(); + const identity = /* @__PURE__ */ __name((item) => item, "identity"); + let children = [...imports.values()].filter(identity); + if (isTraversing) { + const contextModuleExports = moduleRef.exports; + children = children.filter((child) => contextModuleExports.has(child.metatype)); + } + for (const relatedModule of children) { + if (moduleRegistry.has(relatedModule.id)) { + continue; + } + this.printLookingForProviderLog(name, relatedModule); + moduleRegistry.add(relatedModule.id); + const { providers, exports } = relatedModule; + if (!exports.has(name) || !providers.has(name)) { + const instanceRef = await this.lookupComponentInImports(relatedModule, name, wrapper, moduleRegistry, resolutionContext, keyOrIndex, true); + if (instanceRef) { + this.addDependencyMetadata(keyOrIndex, wrapper, instanceRef); + return instanceRef; + } + continue; + } + this.printFoundInModuleLog(name, relatedModule); + instanceWrapperRef = providers.get(name); + this.addDependencyMetadata(keyOrIndex, wrapper, instanceWrapperRef); + break; + } + return instanceWrapperRef; + } + async resolveProperties(wrapper, moduleRef, inject, resolutionContext = { contextId: STATIC_CONTEXT }, parentInquirer) { + if (!isNil(inject)) { + return []; + } + const metadata = wrapper.getPropertiesMetadata(); + if (resolutionContext.contextId !== STATIC_CONTEXT && this.hasCompletePropertiesMetadata(wrapper, metadata)) { + return this.loadPropertiesMetadata(metadata, resolutionContext.contextId, resolutionContext.inquirer, parentInquirer); + } + const properties = this.reflectProperties(wrapper.metatype); + const propertyBarrier = new Barrier(properties.length); + const instances = await Promise.all(properties.map(async (item) => { + try { + const dependencyContext = { + key: item.key, + name: item.name + }; + if (this.isInquirer(item.name, parentInquirer)) { + propertyBarrier.signal(); + return parentInquirer && parentInquirer.instance; + } + const nestedResolutionContext = this.getStaticTransientResolutionContext(resolutionContext, parentInquirer); + const paramWrapper = await this.resolveSingleParam(wrapper, item.name, dependencyContext, moduleRef, nestedResolutionContext, item.key); + await propertyBarrier.signalAndWait(); + const effectivePropertyResolutionContext = this.getEffectiveResolutionContext(paramWrapper, resolutionContext, parentInquirer); + const paramWrapperWithInstance = await this.resolveComponentHost(moduleRef, paramWrapper, effectivePropertyResolutionContext); + if (!paramWrapperWithInstance) { + return void 0; + } + const instanceHost = paramWrapperWithInstance.getInstanceByContextId(this.getContextId(effectivePropertyResolutionContext.contextId, paramWrapperWithInstance), effectivePropertyResolutionContext.effectiveInquirerId); + return instanceHost.instance; + } catch (err) { + propertyBarrier.signal(); + if (!item.isOptional) { + throw err; + } + return void 0; + } + })); + return properties.map((item, index) => ({ + ...item, + instance: instances[index] + })); + } + reflectProperties(type) { + const properties = Reflect.getMetadata(PROPERTY_DEPS_METADATA, type) || []; + const optionalKeys = Reflect.getMetadata(OPTIONAL_PROPERTY_DEPS_METADATA, type) || []; + return properties.map((item) => ({ + ...item, + name: item.type, + isOptional: optionalKeys.includes(item.key) + })); + } + applyProperties(instance, properties) { + if (!isObject(instance)) { + return; + } + (0, import_iterare6.iterate)(properties).filter((item) => !isNil(item.instance)).forEach((item) => instance[item.key] = item.instance); + } + async instantiateClass(instances, wrapper, targetMetatype, resolutionContext = { contextId: STATIC_CONTEXT }) { + const { metatype, inject } = wrapper; + const inquirerId = this.getContextInquirerId(resolutionContext); + const instanceHost = targetMetatype.getInstanceByContextId(this.getContextId(resolutionContext.contextId, targetMetatype), inquirerId); + const isInContext = this.isInContext(wrapper, resolutionContext); + if (this.options?.preview && !wrapper.host?.initOnPreview) { + instanceHost.isResolved = true; + return instanceHost.instance; + } + if (isNil(inject) && isInContext) { + instanceHost.instance = wrapper.forwardRef ? Object.assign(instanceHost.instance, new metatype(...instances)) : new metatype(...instances); + instanceHost.instance = this.instanceDecorator(instanceHost.instance); + instanceHost.isConstructorCalled = true; + } else if (isInContext) { + const factoryReturnValue = targetMetatype.metatype(...instances); + instanceHost.instance = await factoryReturnValue; + instanceHost.instance = this.instanceDecorator(instanceHost.instance); + instanceHost.isConstructorCalled = true; + } + instanceHost.isResolved = true; + return instanceHost.instance; + } + async loadPerContext(instance, moduleRef, collection, ctx, wrapper) { + if (!wrapper) { + const injectionToken = instance.constructor; + wrapper = collection.get(injectionToken) ?? // A class provider registered under a token other than its class + (0, import_iterare6.iterate)(collection.values()).find((item) => !item.isAlias && item.instance === instance); + } else { + wrapper = collection.get(wrapper.token) ?? wrapper; + } + await this.loadInstance(wrapper, collection, moduleRef, this.createResolutionContext(ctx, wrapper)); + await this.loadEnhancersPerContext(wrapper, ctx, wrapper); + await this.waitForDeferredLoads(ctx); + const host = wrapper.getInstanceByContextId(this.getContextId(ctx, wrapper), wrapper.id); + return host && host.instance; + } + /** + * Waits for the loads deferred while resolving the given context (see + * `resolveComponentHost`), including those that the durable instances it + * uses were built with (see `trackDurableDeferredLoad`), and throws if one + * of them failed. A failed load is kept, as instances of the context already + * reference the provider that it failed to instantiate. + */ + async waitForDeferredLoads(contextId) { + const deferredLoads = this.deferredLoads.get(contextId); + if (!deferredLoads) { + return; + } + for (const deferredLoad of deferredLoads) { + await deferredLoad; + deferredLoads.delete(deferredLoad); + } + } + async loadEnhancersPerContext(wrapper, ctx, inquirer, enhancers = wrapper.getEnhancersMetadata() || []) { + if (ctx === STATIC_CONTEXT) { + return; + } + await this.loadEnhancers(ctx, inquirer, enhancers); + } + async loadEnhancers(ctx, inquirer, enhancers) { + const loadEnhancer = /* @__PURE__ */ __name((item) => { + const hostModule = item.host; + return this.loadInstance(item, hostModule.injectables, hostModule, this.createResolutionContext(ctx, inquirer)); + }, "loadEnhancer"); + await Promise.all(enhancers.map(loadEnhancer)); + } + async loadCtorMetadata(metadata, contextId, inquirer, parentInquirer) { + const hosts = await Promise.all(metadata.map(async (item) => this.resolveScopedComponentHost(item, contextId, inquirer, parentInquirer))); + return hosts.map((item, index) => { + const dependency = metadata[index]; + const effectiveInquirerId = this.getEffectiveInquirerId(dependency, this.createResolutionContext(contextId, inquirer), parentInquirer); + return item?.getInstanceByContextId(this.getContextId(contextId, item), effectiveInquirerId).instance; + }); + } + async loadPropertiesMetadata(metadata, contextId, inquirer, parentInquirer) { + const dependenciesHosts = await Promise.all(metadata.map(async ({ wrapper: item, key }) => ({ + key, + host: await this.resolveScopedComponentHost(item, contextId, inquirer, parentInquirer) + }))); + return dependenciesHosts.map(({ key, host }, index) => { + const effectiveInquirerId = this.getEffectiveInquirerId(metadata[index].wrapper, this.createResolutionContext(contextId, inquirer), parentInquirer); + return { + key, + name: key, + instance: host?.getInstanceByContextId(this.getContextId(contextId, host), effectiveInquirerId).instance + }; + }); + } + addDeferredLoad(contextId, deferredLoad) { + if (contextId === STATIC_CONTEXT) { + return; + } + let deferredLoads = this.deferredLoads.get(contextId); + if (!deferredLoads) { + deferredLoads = /* @__PURE__ */ new Set(); + this.deferredLoads.set(contextId, deferredLoads); + } + deferredLoads.add(deferredLoad); + } + /** + * In a durable context (see `ContextIdStrategy`), the dependents built with + * the placeholder of a provider whose load is deferred are shared with the + * next contexts mapped to it, which do not wait for that load. Until it + * settles, the contexts that use them wait for it as well (see + * `linkDurableDeferredLoads`); if it fails, the contexts still waiting for + * one of them fail, and the next one that uses them builds them again (see + * `getInstanceHost`). + */ + trackDurableDeferredLoad(wrapper, contextId, deferredLoad) { + if (this.getContextId(contextId, wrapper) === contextId) { + return; + } + const untrackers = []; + this.forEachDurableDependent(wrapper, contextId, (dependent, hostId) => { + const loadsPerContext = this.durableDeferredLoads.get(dependent) ?? /* @__PURE__ */ new WeakMap(); + const loads = loadsPerContext.get(hostId) ?? /* @__PURE__ */ new Set(); + loads.add(deferredLoad); + loadsPerContext.set(hostId, loads); + this.durableDeferredLoads.set(dependent, loadsPerContext); + untrackers.push(() => { + loads.delete(deferredLoad); + if (loads.size === 0) { + loadsPerContext.delete(hostId); + } + }); + }); + const untrack = /* @__PURE__ */ __name(() => untrackers.forEach((untrackLoad) => untrackLoad()), "untrack"); + deferredLoad.then(untrack, (err) => { + this.forEachDurableDependent(wrapper, contextId, (dependent, hostId) => dependent.getExistingInstancesByContextId(hostId).filter((host) => host.isResolved || host.isPending).forEach((host) => this.failedInstances.set(host, err))); + untrack(); + }); + } + /** + * Adds the running loads that the instance of the wrapper in a durable + * context was built with (see `trackDurableDeferredLoad`) to the loads of + * the given context. + */ + linkDurableDeferredLoads(wrapper, contextId, hostContextId) { + if (hostContextId === contextId) { + return; + } + this.durableDeferredLoads.get(wrapper)?.get(hostContextId)?.forEach((deferredLoad) => this.addDeferredLoad(contextId, deferredLoad)); + } + forEachDurableDependent(wrapper, contextId, callback) { + for (const dependent of wrapper.getDependents()) { + const hostContextId = this.getContextId(contextId, dependent); + if (hostContextId !== contextId) { + callback(dependent, hostContextId); + } + } + } + /** + * Returns the instance of the wrapper for the given context, or a new one + * when it was built with a provider whose deferred load failed (see + * `trackDurableDeferredLoad`), so that it is built again. + */ + getInstanceHost(wrapper, contextId, inquirerId) { + const instanceHost = wrapper.getInstanceByContextId(contextId, inquirerId); + if (!instanceHost.isResolved || !this.failedInstances.has(instanceHost)) { + return instanceHost; + } + wrapper.removeInstanceByContextId(contextId, inquirerId); + return wrapper.getInstanceByContextId(contextId, inquirerId); + } + getInquirerId(inquirer) { + return inquirer ? inquirer.id : void 0; + } + createResolutionContext(contextId, inquirer, effectiveInquirerId, rootInquirer) { + return { + contextId, + inquirer, + effectiveInquirerId, + rootInquirer + }; + } + getContextInquirerId({ inquirer, effectiveInquirerId }) { + return effectiveInquirerId ?? this.getInquirerId(inquirer); + } + isInContext(wrapper, resolutionContext) { + return wrapper.isStatic(resolutionContext.contextId, resolutionContext.inquirer, resolutionContext.rootInquirer) || wrapper.isInRequestScope(resolutionContext.contextId, resolutionContext.inquirer) || wrapper.isLazyTransient(resolutionContext.contextId, resolutionContext.inquirer) || wrapper.isExplicitlyRequested(resolutionContext.contextId, resolutionContext.inquirer); + } + /** + * Request-scoped and transient providers are not created at bootstrap, so + * their dependencies are only looked up here, without creating anything. + * A missing dependency then fails at bootstrap rather than on first use. + * Every lookup is awaited before the first failure is thrown. + */ + async lookupSkippedProviderDependencies(wrapper, moduleRef) { + const isFactoryProvider2 = !isNil(wrapper.inject); + if (!isFactoryProvider2 && !isFunction(wrapper.metatype)) { + return; + } + const [dependencies, optionalDependenciesIds] = isFactoryProvider2 ? this.getFactoryProviderDependencies(wrapper) : this.getClassDependencies(wrapper); + const properties = isFactoryProvider2 ? [] : this.reflectProperties(wrapper.metatype); + const lookup = /* @__PURE__ */ __name(async (param, dependencyContext, keyOrIndex, isOptional) => { + try { + await this.resolveSingleParam(wrapper, param, dependencyContext, moduleRef, { contextId: STATIC_CONTEXT }, keyOrIndex); + } catch (err) { + if (!isOptional) { + throw err; + } + } + }, "lookup"); + const results = await Promise.allSettled([ + ...dependencies.map((param, index) => lookup(param, { index, dependencies }, index, optionalDependenciesIds.includes(index))), + ...properties.map(({ key, name, isOptional }) => lookup(name, { key, name }, key, !!isOptional)) + ]); + const failure = results.find((result) => result.status === "rejected"); + if (failure) { + throw failure.reason; + } + } + shouldSkipProviderLoading(wrapper, resolutionContext) { + const isStaticContext = resolutionContext.contextId === STATIC_CONTEXT; + const hasNoInquirer = !resolutionContext.inquirer; + const isTopLevelStaticTransientOrRequestProvider = hasNoInquirer && (wrapper.isTransient || wrapper.scope === Scope.REQUEST); + const isStaticInquirerOutsideResolutionContext = !!resolutionContext.inquirer && !this.isInContext(resolutionContext.inquirer, this.createResolutionContext(resolutionContext.contextId, resolutionContext.inquirer, void 0, resolutionContext.rootInquirer)); + const shouldSkipForStaticBootstrap = isStaticContext && (isTopLevelStaticTransientOrRequestProvider || isStaticInquirerOutsideResolutionContext); + return shouldSkipForStaticBootstrap; + } + /** + * For nested TRANSIENT dependencies (TRANSIENT -> TRANSIENT) in non-static contexts, + * returns parentInquirer to ensure each parent TRANSIENT gets its own instance. + * This is necessary because in REQUEST/DURABLE scopes, the same TRANSIENT wrapper + * can be used by multiple parents, causing nested TRANSIENTs to be shared incorrectly. + * For non-TRANSIENT -> TRANSIENT, returns inquirer (current wrapper being created). + */ + getEffectiveInquirer(dependency, resolutionContext, parentInquirer) { + const { inquirer, contextId, rootInquirer } = resolutionContext; + if (dependency?.isTransient && inquirer?.isTransient && parentInquirer) { + if (contextId === STATIC_CONTEXT) { + return rootInquirer ?? parentInquirer; + } + return parentInquirer; + } + return inquirer; + } + getEffectiveInquirerId(dependency, resolutionContext, parentInquirer) { + const { contextId, inquirer, effectiveInquirerId } = resolutionContext; + if (contextId === STATIC_CONTEXT && dependency?.isTransient && inquirer?.isTransient && parentInquirer) { + const baseInquirerId = effectiveInquirerId ?? this.getInquirerId(parentInquirer); + return `${baseInquirerId}:${inquirer.id}`; + } + const effectiveInquirer = this.getEffectiveInquirer(dependency, resolutionContext, parentInquirer); + return this.getInquirerId(effectiveInquirer); + } + getStaticTransientResolutionContext(resolutionContext, parentInquirer) { + const { contextId, inquirer, effectiveInquirerId } = resolutionContext; + if (contextId === STATIC_CONTEXT && inquirer?.isTransient && parentInquirer) { + const baseInquirerId = effectiveInquirerId ?? this.getInquirerId(parentInquirer); + return this.createResolutionContext(contextId, inquirer, `${baseInquirerId}:${inquirer.id}`); + } + return resolutionContext; + } + getEffectiveResolutionContext(dependency, resolutionContext, parentInquirer) { + const effectiveInquirer = this.getEffectiveInquirer(dependency, resolutionContext, parentInquirer); + return this.createResolutionContext( + resolutionContext.contextId, + effectiveInquirer, + this.getEffectiveInquirerId(dependency, resolutionContext, parentInquirer), + // The root inquirer is the one of `inquirer` + effectiveInquirer === resolutionContext.inquirer ? resolutionContext.rootInquirer : void 0 + ); + } + hasDenseCtorMetadata(wrapper, inject, metadata) { + if (!metadata) { + return false; + } + const expectedDepsLength = !isNil(inject) ? inject.length : wrapper.metatype ? this.reflectConstructorParams(wrapper.metatype).length : 0; + if (metadata.length !== expectedDepsLength) { + return false; + } + for (let index = 0; index < expectedDepsLength; index++) { + if (metadata[index] === void 0) { + return false; + } + } + return true; + } + hasCompletePropertiesMetadata(wrapper, metadata) { + if (!metadata) { + return false; + } + const properties = wrapper.metatype ? this.reflectProperties(wrapper.metatype) : []; + return properties.every(({ key }) => metadata.some((item) => item.key === key)); + } + resolveScopedComponentHost(item, contextId, inquirer, parentInquirer) { + return this.isInquirerRequest(item, parentInquirer) ? parentInquirer : this.resolveComponentHost(item.host, item, this.getEffectiveResolutionContext(item, this.createResolutionContext(contextId, inquirer), parentInquirer)); + } + isInquirerRequest(item, parentInquirer) { + return item.isTransient && item.name === INQUIRER && parentInquirer; + } + isInquirer(param, parentInquirer) { + return param === INQUIRER && parentInquirer; + } + addDependencyMetadata(keyOrIndex, hostWrapper, instanceWrapper) { + if (isSymbol(keyOrIndex) || isString(keyOrIndex)) { + hostWrapper.addPropertiesMetadata(keyOrIndex, instanceWrapper); + } else { + hostWrapper.addCtorMetadata(keyOrIndex, instanceWrapper); + } + } + getTokenName(token) { + return isFunction(token) ? token.name : token.toString(); + } + printResolvingDependenciesLog(token, inquirer) { + if (!isDebugMode()) { + return; + } + const tokenName = this.getTokenName(token); + const dependentName = (inquirer?.name && inquirer.name.toString?.()) ?? "unknown"; + const isAlias = dependentName === tokenName; + const messageToPrint = `Resolving dependency ${clc.cyanBright(tokenName)}${clc.green(" in the ")}${clc.yellow(dependentName)}${clc.green(` provider ${isAlias ? "(alias)" : ""}`)}`; + this.logger.log(messageToPrint); + } + printLookingForProviderLog(token, moduleRef) { + if (!isDebugMode()) { + return; + } + const tokenName = this.getTokenName(token); + const moduleRefName = moduleRef?.metatype?.name ?? "unknown"; + this.logger.log(`Looking for ${clc.cyanBright(tokenName)}${clc.green(" in ")}${clc.magentaBright(moduleRefName)}`); + } + printFoundInModuleLog(token, moduleRef) { + if (!isDebugMode()) { + return; + } + const tokenName = this.getTokenName(token); + const moduleRefName = moduleRef?.metatype?.name ?? "unknown"; + this.logger.log(`Found ${clc.cyanBright(tokenName)}${clc.green(" in ")}${clc.magentaBright(moduleRefName)}`); + } + getContextId(contextId, instanceWrapper) { + return contextId.getParent ? contextId.getParent({ + token: instanceWrapper.token, + isTreeDurable: instanceWrapper.isDependencyTreeDurable() + }) : contextId; + } + getNowTimestamp() { + return performance2.now(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/instance-links-host.js +var InstanceLinksHost; +var init_instance_links_host = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/instance-links-host.js"() { + init_unknown_element_exception(); + init_internal(); + InstanceLinksHost = class { + static { + __name(this, "InstanceLinksHost"); + } + container; + instanceLinks = /* @__PURE__ */ new Map(); + constructor(container) { + this.container = container; + this.initialize(); + } + get(token, options = {}) { + const instanceLinksForGivenToken = this.instanceLinks.get(token); + if (!instanceLinksForGivenToken) { + throw new UnknownElementException(this.getInstanceNameByToken(token)); + } + if (options.each) { + return instanceLinksForGivenToken; + } + const instanceLink = options.moduleId ? instanceLinksForGivenToken.find((item) => item.moduleId === options.moduleId) : instanceLinksForGivenToken[instanceLinksForGivenToken.length - 1]; + if (!instanceLink) { + throw new UnknownElementException(this.getInstanceNameByToken(token)); + } + return instanceLink; + } + initialize() { + const modules = this.container.getModules(); + modules.forEach((moduleRef) => { + const { providers, injectables, controllers } = moduleRef; + providers.forEach((wrapper, token) => this.addLink(wrapper, token, moduleRef, "providers")); + injectables.forEach((wrapper, token) => this.addLink(wrapper, token, moduleRef, "injectables")); + controllers.forEach((wrapper, token) => this.addLink(wrapper, token, moduleRef, "controllers")); + }); + } + addLink(wrapper, token, moduleRef, collectionName) { + const instanceLink = { + moduleId: moduleRef.id, + wrapperRef: wrapper, + collection: moduleRef[collectionName], + token + }; + const existingLinks = this.instanceLinks.get(token); + if (!existingLinks) { + this.instanceLinks.set(token, [instanceLink]); + } else { + existingLinks.push(instanceLink); + } + } + getInstanceNameByToken(token) { + return isFunction(token) ? token?.name : token; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/deterministic-uuid-registry.js +var DeterministicUuidRegistry; +var init_deterministic_uuid_registry = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/deterministic-uuid-registry.js"() { + DeterministicUuidRegistry = class { + static { + __name(this, "DeterministicUuidRegistry"); + } + static registry = /* @__PURE__ */ new Map(); + static get(str, inc = 0) { + const id = inc ? this.hashCode(`${str}_${inc}`) : this.hashCode(str); + if (this.registry.has(id)) { + return this.get(str, inc + 1); + } + this.registry.set(id, true); + return id; + } + static clear() { + this.registry.clear(); + } + static hashCode(s) { + let h = 0; + for (let i = 0; i < s.length; i++) + h = Math.imul(31, h) + s.charCodeAt(i) | 0; + return h.toString(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/uuid-factory.js +var UuidFactoryMode, UuidFactory; +var init_uuid_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/uuid-factory.js"() { + init_deterministic_uuid_registry(); + init_internal(); + (function(UuidFactoryMode2) { + UuidFactoryMode2["Random"] = "random"; + UuidFactoryMode2["Deterministic"] = "deterministic"; + })(UuidFactoryMode || (UuidFactoryMode = {})); + UuidFactory = class { + static { + __name(this, "UuidFactory"); + } + static _mode = UuidFactoryMode.Random; + static set mode(value) { + this._mode = value; + } + static get(key = "") { + return this._mode === UuidFactoryMode.Deterministic ? DeterministicUuidRegistry.get(key) : randomStringGenerator(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/helpers/provider-classifier.js +function isClassProvider(provider) { + return Boolean(provider?.useClass); +} +function isValueProvider(provider) { + const providerValue = provider?.useValue; + return !isUndefined(providerValue); +} +function isFactoryProvider(provider) { + return Boolean(provider.useFactory); +} +var init_provider_classifier = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/helpers/provider-classifier.js"() { + init_internal(); + __name(isClassProvider, "isClassProvider"); + __name(isValueProvider, "isValueProvider"); + __name(isFactoryProvider, "isFactoryProvider"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/instance-wrapper.js +var import_iterare7, INSTANCE_METADATA_SYMBOL, INSTANCE_ID_SYMBOL, dependencyTreeParents, InstanceWrapper; +var init_instance_wrapper = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/instance-wrapper.js"() { + init_common(); + init_internal(); + import_iterare7 = __toESM(require_lib(), 1); + init_class_ref_registry(); + init_get_class_scope(); + init_is_durable(); + init_uuid_factory(); + init_constants3(); + init_is_debug_mode_util(); + init_provider_classifier(); + INSTANCE_METADATA_SYMBOL = /* @__PURE__ */ Symbol.for("instance_metadata:cache"); + INSTANCE_ID_SYMBOL = /* @__PURE__ */ Symbol.for("instance_metadata:id"); + dependencyTreeParents = /* @__PURE__ */ new WeakMap(); + InstanceWrapper = class _InstanceWrapper { + static { + __name(this, "InstanceWrapper"); + } + name; + token; + async; + host; + isAlias = false; + subtype; + scope = Scope.DEFAULT; + metatype; + inject; + forwardRef; + durable; + initTime; + settlementSignal; + static logger = new Logger(_InstanceWrapper.name); + values = /* @__PURE__ */ new WeakMap(); + [INSTANCE_METADATA_SYMBOL] = {}; + [INSTANCE_ID_SYMBOL]; + transientMap; + isTreeStatic; + isTreeDurable; + _hierarchyLevel = 0; + get hierarchyLevel() { + return this._hierarchyLevel; + } + set hierarchyLevel(level) { + this._hierarchyLevel = level; + } + /** + * The root inquirer reference. Present only if child instance wrapper + * is transient and has a parent inquirer. + */ + rootInquirer; + constructor(metadata = {}) { + this.initialize(metadata); + if (this.isNewable()) { + registerClassRef(this.metatype); + } + this[INSTANCE_ID_SYMBOL] = metadata[INSTANCE_ID_SYMBOL] ?? this.generateUuid(); + } + get id() { + return this[INSTANCE_ID_SYMBOL]; + } + set instance(value) { + this.values.set(STATIC_CONTEXT, { instance: value }); + } + get instance() { + const instancePerContext = this.getInstanceByContextId(STATIC_CONTEXT); + return instancePerContext.instance; + } + get isNotMetatype() { + return !this.metatype || this.isFactory; + } + get isFactory() { + return !!this.metatype && !isNil(this.inject); + } + get isTransient() { + return this.scope === Scope.TRANSIENT; + } + getInstanceByContextId(contextId, inquirerId) { + if (this.scope === Scope.TRANSIENT && inquirerId) { + return this.getInstanceByInquirerId(contextId, inquirerId); + } + const instancePerContext = this.values.get(contextId); + return instancePerContext ? instancePerContext : contextId !== STATIC_CONTEXT ? this.cloneStaticInstance(contextId) : { + instance: null, + isResolved: true, + isPending: false + }; + } + getInstanceByInquirerId(contextId, inquirerId) { + let collectionPerContext = this.transientMap.get(inquirerId); + if (!collectionPerContext) { + collectionPerContext = /* @__PURE__ */ new WeakMap(); + this.transientMap.set(inquirerId, collectionPerContext); + } + const instancePerContext = collectionPerContext.get(contextId); + return instancePerContext ? instancePerContext : this.cloneTransientInstance(contextId, inquirerId); + } + setInstanceByContextId(contextId, value, inquirerId) { + if (this.scope === Scope.TRANSIENT && inquirerId) { + return this.setInstanceByInquirerId(contextId, inquirerId, value); + } + this.values.set(contextId, value); + } + setInstanceByInquirerId(contextId, inquirerId, value) { + let collection = this.transientMap.get(inquirerId); + if (!collection) { + collection = /* @__PURE__ */ new WeakMap(); + this.transientMap.set(inquirerId, collection); + } + collection.set(contextId, value); + } + removeInstanceByContextId(contextId, inquirerId) { + if (this.scope === Scope.TRANSIENT && inquirerId) { + return this.removeInstanceByInquirerId(contextId, inquirerId); + } + this.values.delete(contextId); + } + removeInstanceByInquirerId(contextId, inquirerId) { + const collection = this.transientMap.get(inquirerId); + if (!collection) { + return; + } + collection.delete(contextId); + } + /** + * Returns the instances that exist for the given context, including those + * of every inquirer of a transient provider. Unlike `getInstanceByContextId`, + * it does not create one. + */ + getExistingInstancesByContextId(contextId) { + const collections = [this.values, ...this.transientMap?.values() ?? []]; + return collections.map((collection) => collection.get(contextId)).filter((instancePerContext) => !isUndefined(instancePerContext)); + } + addCtorMetadata(index, wrapper) { + if (!this[INSTANCE_METADATA_SYMBOL].dependencies) { + this[INSTANCE_METADATA_SYMBOL].dependencies = []; + } + this[INSTANCE_METADATA_SYMBOL].dependencies[index] = wrapper; + this.registerDependencyTreeParent(wrapper); + this.resetDependencyTreeState(); + } + getCtorMetadata() { + return this[INSTANCE_METADATA_SYMBOL].dependencies; + } + addPropertiesMetadata(key, wrapper) { + if (!this[INSTANCE_METADATA_SYMBOL].properties) { + this[INSTANCE_METADATA_SYMBOL].properties = []; + } + const properties = this[INSTANCE_METADATA_SYMBOL].properties; + const index = properties.findIndex((item) => item.key === key); + if (index === -1) { + properties.push({ key, wrapper }); + } else { + properties[index] = { key, wrapper }; + } + this.registerDependencyTreeParent(wrapper); + this.resetDependencyTreeState(); + } + getPropertiesMetadata() { + return this[INSTANCE_METADATA_SYMBOL].properties; + } + addEnhancerMetadata(wrapper) { + if (!this[INSTANCE_METADATA_SYMBOL].enhancers) { + this[INSTANCE_METADATA_SYMBOL].enhancers = []; + } + this[INSTANCE_METADATA_SYMBOL].enhancers.push(wrapper); + this.registerDependencyTreeParent(wrapper); + this.resetDependencyTreeState(); + } + getEnhancersMetadata() { + return this[INSTANCE_METADATA_SYMBOL].enhancers; + } + isDependencyTreeDurable(lookupRegistry = []) { + if (!isUndefined(this.isTreeDurable)) { + return this.isTreeDurable; + } + if (this.scope === Scope.REQUEST) { + this.isTreeDurable = this.durable === void 0 ? false : this.durable; + if (this.isTreeDurable) { + this.printIntrospectedAsDurable(); + } + return this.isTreeDurable; + } + const isStatic = this.isDependencyTreeStatic(); + if (isStatic) { + return false; + } + const isTreeNonDurable = this.introspectDepsAttribute((collection, registry) => collection.some((item) => !item.isDependencyTreeStatic() && !item.isDependencyTreeDurable(registry)), lookupRegistry); + this.isTreeDurable = !isTreeNonDurable; + if (this.isTreeDurable) { + this.printIntrospectedAsDurable(); + } else { + this.invalidateDependencyTreeParents("isTreeDurable"); + } + return this.isTreeDurable; + } + introspectDepsAttribute(callback, lookupRegistry = []) { + if (lookupRegistry.includes(this[INSTANCE_ID_SYMBOL])) { + return false; + } + lookupRegistry = lookupRegistry.concat(this[INSTANCE_ID_SYMBOL]); + const { dependencies, properties, enhancers } = this[INSTANCE_METADATA_SYMBOL]; + let introspectionResult = dependencies ? callback(dependencies, lookupRegistry) : false; + if (introspectionResult || !(properties || enhancers)) { + return introspectionResult; + } + introspectionResult = properties ? callback(properties.map((item) => item.wrapper), lookupRegistry) : false; + if (introspectionResult || !enhancers) { + return introspectionResult; + } + return enhancers ? callback(enhancers, lookupRegistry) : false; + } + isDependencyTreeStatic(lookupRegistry = []) { + if (!isUndefined(this.isTreeStatic)) { + return this.isTreeStatic; + } + if (this.scope === Scope.REQUEST) { + this.isTreeStatic = false; + this.printIntrospectedAsRequestScoped(); + return this.isTreeStatic; + } + this.isTreeStatic = !this.introspectDepsAttribute((collection, registry) => collection.some((item) => !item.isDependencyTreeStatic(registry)), lookupRegistry); + if (!this.isTreeStatic) { + this.printIntrospectedAsRequestScoped(); + this.invalidateDependencyTreeParents("isTreeStatic"); + } + return this.isTreeStatic; + } + cloneStaticInstance(contextId) { + const staticInstance = this.getInstanceByContextId(STATIC_CONTEXT); + if (this.isDependencyTreeStatic()) { + return staticInstance; + } + const instancePerContext = { + ...staticInstance, + instance: void 0, + isResolved: false, + isPending: false + }; + if (this.isNewable()) { + instancePerContext.instance = Object.create(this.metatype.prototype); + } + this.setInstanceByContextId(contextId, instancePerContext); + return instancePerContext; + } + cloneTransientInstance(contextId, inquirerId) { + const staticInstance = this.getInstanceByContextId(STATIC_CONTEXT); + const instancePerContext = { + ...staticInstance, + instance: void 0, + isResolved: false, + isPending: false + }; + if (this.isNewable()) { + instancePerContext.instance = Object.create(this.metatype.prototype); + } + this.setInstanceByInquirerId(contextId, inquirerId, instancePerContext); + return instancePerContext; + } + createPrototype(contextId) { + const host = this.getInstanceByContextId(contextId); + if (!this.isNewable() || host.isResolved) { + return; + } + return Object.create(this.metatype.prototype); + } + isInRequestScope(contextId, inquirer) { + const isDependencyTreeStatic = this.isDependencyTreeStatic(); + return !isDependencyTreeStatic && contextId !== STATIC_CONTEXT && (!this.isTransient || this.isTransient && !!inquirer); + } + isLazyTransient(contextId, inquirer) { + const isInquirerRequestScoped = !!(inquirer && !inquirer.isDependencyTreeStatic()); + return this.isDependencyTreeStatic() && contextId !== STATIC_CONTEXT && this.isTransient && isInquirerRequestScoped; + } + isExplicitlyRequested(contextId, inquirer) { + const isSelfRequested = inquirer === this; + return this.isDependencyTreeStatic() && contextId !== STATIC_CONTEXT && (isSelfRequested || !!(inquirer && inquirer.scope === Scope.TRANSIENT)); + } + isStatic(contextId, inquirer, rootInquirer) { + if (!this.isDependencyTreeStatic() || contextId !== STATIC_CONTEXT) { + return false; + } + if (!this.isTransient) { + return true; + } + const isInquirerRequestScoped = inquirer && !inquirer.isDependencyTreeStatic(); + const isStaticTransient = this.isTransient && !isInquirerRequestScoped; + if (isStaticTransient && inquirer && !inquirer.isTransient) { + return true; + } + if (isStaticTransient && rootInquirer && !rootInquirer.isTransient) { + return true; + } + if (isStaticTransient && inquirer?.isTransient && !rootInquirer) { + return true; + } + return false; + } + detachFromDependencies() { + this.getDependencyWrappers().forEach((dependency) => { + dependencyTreeParents.get(dependency)?.delete(this); + dependency.removeTransientInstancesOf(this); + }); + } + /** + * Returns the wrappers that depend on this one, directly or through other + * wrappers (as a constructor, property or enhancer dependency). + */ + getDependents() { + const dependents = /* @__PURE__ */ new Set(); + const wrappers = [this]; + while (wrappers.length > 0) { + dependencyTreeParents.get(wrappers.pop())?.forEach((parent) => { + if (!dependents.has(parent)) { + dependents.add(parent); + wrappers.push(parent); + } + }); + } + return dependents; + } + /** + * @deprecated The injector no longer reads the root inquirer from the + * wrapper (see `isStatic`), as it may be overwritten by a concurrent + * resolution for another consumer. + */ + attachRootInquirer(inquirer) { + if (!this.isTransient) { + return; + } + this.rootInquirer = inquirer.getRootInquirer() ?? inquirer; + } + /** + * @deprecated The injector no longer reads the root inquirer from the + * wrapper (see `isStatic`), as it may be overwritten by a concurrent + * resolution for another consumer. + */ + getRootInquirer() { + return this.rootInquirer; + } + getStaticTransientInstances() { + if (!this.transientMap) { + return []; + } + const instances = [...this.transientMap.values()]; + return (0, import_iterare7.iterate)(instances).map((item) => item.get(STATIC_CONTEXT)).filter((item) => { + return !!(item && item.isConstructorCalled); + }).toArray(); + } + mergeWith(provider) { + if (isValueProvider(provider)) { + this.metatype = null; + this.inject = null; + this.scope = Scope.DEFAULT; + this.setInstanceByContextId(STATIC_CONTEXT, { + instance: provider.useValue, + isResolved: true, + isPending: false + }); + } else if (isClassProvider(provider)) { + this.inject = null; + this.metatype = provider.useClass; + registerClassRef(provider.useClass); + this.scope = getClassScope(provider.useClass) ?? Scope.DEFAULT; + this.durable = isDurable(provider.useClass); + if (this.scope === Scope.TRANSIENT && !this.transientMap) { + this.transientMap = /* @__PURE__ */ new Map(); + } + this.resetStaticInstance(); + } else if (isFactoryProvider(provider)) { + this.metatype = provider.useFactory; + this.inject = provider.inject || []; + this.resetStaticInstance(); + } + this.resetDependencyTreeState(); + } + resetStaticInstance() { + this.setInstanceByContextId(STATIC_CONTEXT, { + instance: null, + isResolved: false, + isPending: false + }); + } + isNewable() { + return isNil(this.inject) && this.metatype && this.metatype.prototype; + } + registerDependencyTreeParent(wrapper) { + if (wrapper instanceof _InstanceWrapper) { + const parents = dependencyTreeParents.get(wrapper) ?? /* @__PURE__ */ new Set(); + parents.add(this); + dependencyTreeParents.set(wrapper, parents); + } + } + getDependencyWrappers() { + const { dependencies = [], properties = [] } = this[INSTANCE_METADATA_SYMBOL]; + return [ + ...dependencies, + ...properties.map(({ wrapper }) => wrapper) + ].filter((dependency) => dependency instanceof _InstanceWrapper); + } + removeTransientInstancesOf(inquirer) { + if (!this.transientMap) { + return; + } + for (const inquirerId of this.transientMap.keys()) { + if (inquirerId === inquirer.id || inquirerId.startsWith(`${inquirer.id}:`)) { + this.transientMap.delete(inquirerId); + } + } + this.getDependencyWrappers().forEach((dependency) => dependency.removeTransientInstancesOf(inquirer)); + } + resetDependencyTreeState(lookupRegistry = /* @__PURE__ */ new Set()) { + if (lookupRegistry.has(this[INSTANCE_ID_SYMBOL])) { + return; + } + lookupRegistry.add(this[INSTANCE_ID_SYMBOL]); + this.isTreeStatic = void 0; + this.isTreeDurable = void 0; + dependencyTreeParents.get(this)?.forEach((parent) => parent.resetDependencyTreeState(lookupRegistry)); + } + /** + * In a circular dependency, the introspection skips a wrapper that is + * already being introspected, so the parents in between may cache `true` + * before that wrapper turns out not to be static (or durable). Clears what + * they cached, so it is computed again with the final answer. + */ + invalidateDependencyTreeParents(attribute) { + dependencyTreeParents.get(this)?.forEach((parent) => { + if (parent[attribute]) { + parent[attribute] = void 0; + parent.invalidateDependencyTreeParents(attribute); + } + }); + } + initialize(metadata) { + const { instance, isResolved, ...wrapperPartial } = metadata; + Object.assign(this, wrapperPartial); + this.setInstanceByContextId(STATIC_CONTEXT, { + instance, + isResolved + }); + this.scope === Scope.TRANSIENT && (this.transientMap = /* @__PURE__ */ new Map()); + } + printIntrospectedAsRequestScoped() { + if (!isDebugMode() || this.name === "REQUEST") { + return; + } + if (isString(this.name)) { + _InstanceWrapper.logger.log(`${clc.cyanBright(this.name)}${clc.green(" introspected as ")}${clc.magentaBright("request-scoped")}`); + } + } + printIntrospectedAsDurable() { + if (!isDebugMode()) { + return; + } + if (isString(this.name)) { + _InstanceWrapper.logger.log(`${clc.cyanBright(this.name)}${clc.green(" introspected as ")}${clc.magentaBright("durable")}`); + } + } + generateUuid() { + let key = this.name?.toString() ?? this.token?.toString(); + key += this.host?.name ?? ""; + return key ? UuidFactory.get(key) : randomStringGenerator(); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/module-ref.js +var ModuleRef; +var init_module_ref = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/module-ref.js"() { + init_common(); + init_request_scoped_create_exception(); + init_get_class_scope(); + init_is_durable(); + init_abstract_instance_resolver(); + init_constants3(); + init_injector(); + init_instance_links_host(); + init_instance_wrapper(); + ModuleRef = class extends AbstractInstanceResolver { + static { + __name(this, "ModuleRef"); + } + container; + injector; + _instanceLinksHost; + get instanceLinksHost() { + if (!this._instanceLinksHost) { + this._instanceLinksHost = new InstanceLinksHost(this.container); + } + return this._instanceLinksHost; + } + constructor(container) { + super(); + this.container = container; + const contextOptions = container.contextOptions; + this.injector = new Injector({ + preview: contextOptions?.preview ?? false, + snapshot: contextOptions?.snapshot, + instanceDecorator: contextOptions?.instrument?.instanceDecorator + }); + } + introspect(token) { + const { wrapperRef } = this.instanceLinksHost.get(token); + let scope = Scope.DEFAULT; + if (!wrapperRef.isDependencyTreeStatic()) { + scope = Scope.REQUEST; + } else if (wrapperRef.isTransient) { + scope = Scope.TRANSIENT; + } + return { scope }; + } + registerRequestByContextId(request, contextId) { + this.container.registerRequestProvider(request, contextId); + } + async instantiateClass(type, moduleRef, contextId) { + const wrapper = new InstanceWrapper({ + name: type && type.name, + metatype: type, + isResolved: false, + scope: getClassScope(type), + durable: isDurable(type), + host: moduleRef + }); + if (type?.prototype) { + wrapper.setInstanceByContextId(contextId ?? STATIC_CONTEXT, { + instance: Object.create(type.prototype), + isResolved: false, + isPending: false + }); + } + return new Promise((resolve, reject) => { + let isCreated = false; + const loadInstance = /* @__PURE__ */ __name(async () => { + const callback = /* @__PURE__ */ __name(async (instances) => { + const properties = await this.injector.resolveProperties(wrapper, moduleRef, void 0, { + contextId: contextId ?? STATIC_CONTEXT, + inquirer: wrapper + }); + await this.injector.waitForDeferredLoads(contextId ?? STATIC_CONTEXT); + const instance = new type(...instances); + this.injector.applyProperties(instance, properties); + isCreated = true; + resolve(instance); + }, "callback"); + await this.injector.resolveConstructorParams(wrapper, moduleRef, void 0, callback, { + contextId: contextId ?? STATIC_CONTEXT, + inquirer: wrapper + }); + if (!isCreated) { + reject(new RequestScopedCreateException(type.name)); + } + }, "loadInstance"); + void loadInstance().catch(reject); + }).finally(() => wrapper.detachFromDependencies()); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.js +var LazyModuleLoader; +var init_lazy_module_loader = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.js"() { + init_silent_logger(); + init_module_ref(); + LazyModuleLoader = class { + static { + __name(this, "LazyModuleLoader"); + } + dependenciesScanner; + instanceLoader; + moduleCompiler; + modulesContainer; + moduleOverrides; + constructor(dependenciesScanner, instanceLoader, moduleCompiler, modulesContainer, moduleOverrides) { + this.dependenciesScanner = dependenciesScanner; + this.instanceLoader = instanceLoader; + this.moduleCompiler = moduleCompiler; + this.modulesContainer = modulesContainer; + this.moduleOverrides = moduleOverrides; + } + async load(loaderFn, loadOpts) { + const originalLogger = this.instanceLoader.logger; + try { + this.registerLoggerConfiguration(loadOpts); + const moduleClassOrDynamicDefinition = await loaderFn(); + const moduleInstances = await this.dependenciesScanner.scanForModules({ + moduleDefinition: moduleClassOrDynamicDefinition, + overrides: this.moduleOverrides, + lazy: true + }); + if (moduleInstances.length === 0) { + const { token } = await this.moduleCompiler.compile(moduleClassOrDynamicDefinition); + const moduleInstance = this.modulesContainer.get(token); + return moduleInstance && this.getTargetModuleRef(moduleInstance); + } + const lazyModulesContainer = this.createLazyModulesContainer(moduleInstances); + await this.dependenciesScanner.scanModulesForDependencies(lazyModulesContainer); + await this.instanceLoader.createInstancesOfDependencies(lazyModulesContainer); + const [targetModule] = moduleInstances; + return this.getTargetModuleRef(targetModule); + } finally { + if (loadOpts?.logger === false) { + this.instanceLoader.setLogger(originalLogger); + } + } + } + registerLoggerConfiguration(loadOpts) { + if (loadOpts?.logger === false) { + this.instanceLoader.setLogger(new SilentLogger()); + } + } + createLazyModulesContainer(moduleInstances) { + moduleInstances = Array.from(new Set(moduleInstances)); + return new Map(moduleInstances.map((ref) => [ref.token, ref])); + } + getTargetModuleRef(moduleInstance) { + const moduleRefInstanceWrapper = moduleInstance.getProviderByKey(ModuleRef); + return moduleRefInstanceWrapper.instance; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/services/reflector.service.js +var Reflector; +var init_reflector_service = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/services/reflector.service.js"() { + init_common(); + init_dist(); + init_internal(); + Reflector = class { + static { + __name(this, "Reflector"); + } + static createDecorator(options = {}) { + const metadataKey = options.key ?? uid(21); + const decoratorFn = /* @__PURE__ */ __name((metadataValue) => (target, key, descriptor) => { + const value = options.transform ? options.transform(metadataValue) : metadataValue; + SetMetadata(metadataKey, value === void 0 ? {} : value)(target, key, descriptor); + }, "decoratorFn"); + decoratorFn.KEY = metadataKey; + return decoratorFn; + } + /** + * Retrieve metadata for a specified key or decorator for a specified target. + * + * @example + * `const roles = this.reflector.get('roles', context.getHandler());` + * + * @param metadataKey lookup key or decorator for metadata to retrieve + * @param target context (decorated object) to retrieve metadata from + * + */ + get(metadataKeyOrDecorator, target) { + const metadataKey = metadataKeyOrDecorator.KEY ?? metadataKeyOrDecorator; + return Reflect.getMetadata(metadataKey, target); + } + /** + * Retrieve metadata for a specified key or decorator for a specified set of targets. + * + * @param metadataKeyOrDecorator lookup key or decorator for metadata to retrieve + * @param targets context (decorated objects) to retrieve metadata from + * + */ + getAll(metadataKeyOrDecorator, targets) { + return (targets || []).map((target) => this.get(metadataKeyOrDecorator, target)); + } + /** + * Retrieve metadata for a specified key or decorator for a specified set of targets and merge results. + * + * @param metadataKeyOrDecorator lookup key for metadata to retrieve + * @param targets context (decorated objects) to retrieve metadata from + * + */ + getAllAndMerge(metadataKeyOrDecorator, targets) { + const metadataCollection = this.getAll(metadataKeyOrDecorator, targets).filter((item) => item !== void 0); + if (isEmptyArray(metadataCollection)) { + return metadataCollection; + } + if (metadataCollection.length === 1) { + const value = metadataCollection[0]; + if (isObject(value)) { + return value; + } + return metadataCollection; + } + return metadataCollection.reduce((a, b) => { + if (Array.isArray(a)) { + return a.concat(b); + } + if (isObject(a) && isObject(b)) { + return { + ...a, + ...b + }; + } + return [a, b]; + }); + } + /** + * Retrieve metadata for a specified key or decorator for a specified set of targets and return a first not undefined value. + * + * @param metadataKeyOrDecorator lookup key or metadata for metadata to retrieve + * @param targets context (decorated objects) to retrieve metadata from + * + */ + getAllAndOverride(metadataKeyOrDecorator, targets) { + for (const target of targets) { + const result = this.get(metadataKeyOrDecorator, target); + if (result !== void 0) { + return result; + } + } + return void 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/serialized-graph.js +var SerializedGraph; +var init_serialized_graph = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/serialized-graph.js"() { + init_application_config(); + init_external_context_creator(); + init_http_adapter_host(); + init_inquirer_constants(); + init_lazy_module_loader(); + init_module_ref(); + init_modules_container(); + init_request_constants(); + init_reflector_service(); + init_deterministic_uuid_registry(); + SerializedGraph = class _SerializedGraph { + static { + __name(this, "SerializedGraph"); + } + nodes = /* @__PURE__ */ new Map(); + edges = /* @__PURE__ */ new Map(); + entrypoints = /* @__PURE__ */ new Map(); + extras = { + orphanedEnhancers: [], + attachedEnhancers: [] + }; + _status = "complete"; + _metadata; + static INTERNAL_PROVIDERS = [ + ApplicationConfig, + ModuleRef, + HttpAdapterHost, + LazyModuleLoader, + ExternalContextCreator, + ModulesContainer, + Reflector, + _SerializedGraph, + HttpAdapterHost.name, + Reflector.name, + REQUEST, + INQUIRER + ]; + set status(status) { + this._status = status; + } + set metadata(metadata) { + this._metadata = metadata; + } + insertNode(nodeDefinition) { + if (nodeDefinition.metadata.type === "provider" && _SerializedGraph.INTERNAL_PROVIDERS.includes(nodeDefinition.metadata.token)) { + nodeDefinition.metadata = { + ...nodeDefinition.metadata, + internal: true + }; + } + if (this.nodes.has(nodeDefinition.id)) { + return this.nodes.get(nodeDefinition.id); + } + this.nodes.set(nodeDefinition.id, nodeDefinition); + return nodeDefinition; + } + insertEdge(edgeDefinition) { + if (edgeDefinition.metadata.type === "class-to-class" && (_SerializedGraph.INTERNAL_PROVIDERS.includes(edgeDefinition.metadata.sourceClassToken) || _SerializedGraph.INTERNAL_PROVIDERS.includes(edgeDefinition.metadata.targetClassToken))) { + edgeDefinition.metadata = { + ...edgeDefinition.metadata, + internal: true + }; + } + const id = edgeDefinition.id ?? this.generateUuidByEdgeDefinition(edgeDefinition); + const edge = { + ...edgeDefinition, + id + }; + this.edges.set(id, edge); + return edge; + } + insertEntrypoint(definition, parentId) { + if (this.entrypoints.has(parentId)) { + const existingCollection = this.entrypoints.get(parentId); + existingCollection.push(definition); + } else { + this.entrypoints.set(parentId, [definition]); + } + } + insertOrphanedEnhancer(entry) { + this.extras.orphanedEnhancers.push(entry); + } + insertAttachedEnhancer(nodeId) { + this.extras.attachedEnhancers.push({ + nodeId + }); + } + getNodeById(id) { + return this.nodes.get(id); + } + toJSON() { + const json = { + nodes: Object.fromEntries(this.nodes), + edges: Object.fromEntries(this.edges), + entrypoints: Object.fromEntries(this.entrypoints), + extras: this.extras + }; + if (this._status) { + json["status"] = this._status; + } + if (this._metadata) { + json["metadata"] = this._metadata; + } + return json; + } + toString() { + const replacer = /* @__PURE__ */ __name((key, value) => { + if (typeof value === "symbol") { + return value.toString(); + } + return typeof value === "function" ? value.name ?? "Function" : value; + }, "replacer"); + return JSON.stringify(this.toJSON(), replacer, 2); + } + generateUuidByEdgeDefinition(edgeDefinition) { + return DeterministicUuidRegistry.get(JSON.stringify(edgeDefinition)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/compiler.js +var ModuleCompiler; +var init_compiler = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/compiler.js"() { + ModuleCompiler = class { + static { + __name(this, "ModuleCompiler"); + } + _moduleOpaqueKeyFactory; + constructor(_moduleOpaqueKeyFactory) { + this._moduleOpaqueKeyFactory = _moduleOpaqueKeyFactory; + } + get moduleOpaqueKeyFactory() { + return this._moduleOpaqueKeyFactory; + } + async compile(moduleClsOrDynamic) { + moduleClsOrDynamic = await moduleClsOrDynamic; + const { type, dynamicMetadata } = this.extractMetadata(moduleClsOrDynamic); + const token = dynamicMetadata ? this._moduleOpaqueKeyFactory.createForDynamic(type, dynamicMetadata, moduleClsOrDynamic) : this._moduleOpaqueKeyFactory.createForStatic(type, moduleClsOrDynamic); + return { type, dynamicMetadata, token }; + } + extractMetadata(moduleClsOrDynamic) { + if (!this.isDynamicModule(moduleClsOrDynamic)) { + return { + type: moduleClsOrDynamic?.forwardRef ? moduleClsOrDynamic.forwardRef() : moduleClsOrDynamic, + dynamicMetadata: void 0 + }; + } + const { module: type, ...dynamicMetadata } = moduleClsOrDynamic; + return { type, dynamicMetadata }; + } + isDynamicModule(moduleClsOrDynamic) { + return !!moduleClsOrDynamic.module; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/request/request-providers.js +var noop2, requestProvider; +var init_request_providers = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/request/request-providers.js"() { + init_common(); + init_request_constants(); + noop2 = /* @__PURE__ */ __name(() => { + }, "noop"); + requestProvider = { + provide: REQUEST, + scope: Scope.REQUEST, + useFactory: noop2 + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/services/index.js +var init_services = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/services/index.js"() { + init_reflector_service(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/inquirer/inquirer-providers.js +var noop3, inquirerProvider; +var init_inquirer_providers = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/inquirer/inquirer-providers.js"() { + init_common(); + init_inquirer_constants(); + noop3 = /* @__PURE__ */ __name(() => { + }, "noop"); + inquirerProvider = { + provide: INQUIRER, + scope: Scope.TRANSIENT, + useFactory: noop3 + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-core-module/internal-core-module.js +var InternalCoreModule_1, ReflectorAliasProvider, InternalCoreModule; +var init_internal_core_module = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-core-module/internal-core-module.js"() { + init_tslib_es6(); + init_common(); + init_request_providers(); + init_services(); + init_inquirer_providers(); + ReflectorAliasProvider = { + provide: Reflector.name, + useExisting: Reflector + }; + InternalCoreModule = InternalCoreModule_1 = class InternalCoreModule2 { + static { + __name(this, "InternalCoreModule"); + } + static register(providers) { + return { + module: InternalCoreModule_1, + providers: [...providers], + exports: [...providers.map((item) => item.provide)] + }; + } + }; + InternalCoreModule = InternalCoreModule_1 = __decorate([ + Global(), + Module({ + providers: [ + Reflector, + ReflectorAliasProvider, + requestProvider, + inquirerProvider + ], + exports: [ + Reflector, + ReflectorAliasProvider, + requestProvider, + inquirerProvider + ] + }) + ], InternalCoreModule); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-providers-storage.js +var InternalProvidersStorage; +var init_internal_providers_storage = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-providers-storage.js"() { + init_http_adapter_host(); + InternalProvidersStorage = class { + static { + __name(this, "InternalProvidersStorage"); + } + _httpAdapterHost = new HttpAdapterHost(); + _httpAdapter; + get httpAdapterHost() { + return this._httpAdapterHost; + } + get httpAdapter() { + return this._httpAdapter; + } + set httpAdapter(httpAdapter) { + this._httpAdapter = httpAdapter; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-provider.exception.js +var InvalidProviderException; +var init_invalid_provider_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-provider.exception.js"() { + init_messages(); + init_runtime_exception(); + InvalidProviderException = class extends RuntimeException { + static { + __name(this, "InvalidProviderException"); + } + constructor(token, moduleName) { + super(INVALID_PROVIDER_MESSAGE(token, moduleName)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/module.js +var import_iterare8, Module2; +var init_module = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/module.js"() { + import_iterare8 = __toESM(require_lib(), 1); + init_application_config(); + init_exceptions2(); + init_invalid_provider_exception(); + init_context_id_factory(); + init_get_class_scope(); + init_is_durable(); + init_safe_instance_decorator(); + init_uuid_factory(); + init_constants3(); + init_instance_wrapper(); + init_module_ref(); + init_internal(); + init_common(); + Module2 = class { + static { + __name(this, "Module"); + } + _metatype; + container; + _id; + _imports = /* @__PURE__ */ new Set(); + _providers = /* @__PURE__ */ new Map(); + _injectables = /* @__PURE__ */ new Map(); + _middlewares = /* @__PURE__ */ new Map(); + _controllers = /* @__PURE__ */ new Map(); + _entryProviderKeys = /* @__PURE__ */ new Set(); + _exports = /* @__PURE__ */ new Set(); + _distance = 0; + _initOnPreview = false; + _isGlobal = false; + _token; + constructor(_metatype, container) { + this._metatype = _metatype; + this.container = container; + this.addCoreProviders(); + this._id = this.generateUuid(); + } + get id() { + return this._id; + } + get token() { + return this._token; + } + set token(token) { + this._token = token; + } + get name() { + return this.metatype.name; + } + get isGlobal() { + return this._isGlobal; + } + set isGlobal(global2) { + this._isGlobal = global2; + } + get initOnPreview() { + return this._initOnPreview; + } + set initOnPreview(initOnPreview) { + this._initOnPreview = initOnPreview; + } + get providers() { + return this._providers; + } + get middlewares() { + return this._middlewares; + } + get imports() { + return this._imports; + } + get injectables() { + return this._injectables; + } + get controllers() { + return this._controllers; + } + get entryProviders() { + return Array.from(this._entryProviderKeys).map((token) => this.providers.get(token)); + } + get exports() { + return this._exports; + } + get instance() { + if (!this._providers.has(this._metatype)) { + throw new RuntimeException(); + } + const moduleRef = this._providers.get(this._metatype); + return moduleRef.instance; + } + /** + * Modules are registered in the container before they are scanned (dynamic + * `imports` are pre-registered by `NestContainer#addDynamicMetadata`), so + * registration alone does not imply the module was ever instantiated. + */ + get isInstantiated() { + return !isNil(this._providers.get(this._metatype)?.instance); + } + get metatype() { + return this._metatype; + } + get distance() { + return this._distance; + } + set distance(value) { + this._distance = value; + } + addCoreProviders() { + this.addModuleAsProvider(); + this.addModuleRef(); + this.addApplicationConfig(); + } + addModuleRef() { + const moduleRef = this.createModuleReferenceType(); + this._providers.set(ModuleRef, new InstanceWrapper({ + token: ModuleRef, + name: ModuleRef.name, + metatype: ModuleRef, + isResolved: true, + instance: new moduleRef(), + host: this + })); + } + addModuleAsProvider() { + this._providers.set(this._metatype, new InstanceWrapper({ + token: this._metatype, + name: this._metatype.name, + metatype: this._metatype, + isResolved: false, + instance: null, + host: this + })); + } + addApplicationConfig() { + this._providers.set(ApplicationConfig, new InstanceWrapper({ + token: ApplicationConfig, + name: ApplicationConfig.name, + isResolved: true, + instance: this.container.applicationConfig, + host: this + })); + } + addInjectable(injectable, enhancerSubtype, host) { + if (this.isCustomProvider(injectable)) { + return this.addCustomProvider(injectable, this._injectables, enhancerSubtype); + } + let instanceWrapper = this.injectables.get(injectable); + if (!instanceWrapper) { + instanceWrapper = new InstanceWrapper({ + token: injectable, + name: injectable.name, + metatype: injectable, + instance: null, + isResolved: false, + scope: getClassScope(injectable), + durable: isDurable(injectable), + subtype: enhancerSubtype, + host: this + }); + this._injectables.set(injectable, instanceWrapper); + } + if (host) { + const hostWrapper = this._controllers.get(host) || this._providers.get(host); + hostWrapper && hostWrapper.addEnhancerMetadata(instanceWrapper); + } + return instanceWrapper; + } + addProvider(provider, enhancerSubtype) { + if (this.isCustomProvider(provider)) { + if (this.isEntryProvider(provider.provide) || this.isEntryProvider(provider.useClass)) { + this._entryProviderKeys.add(provider.provide); + } + return this.addCustomProvider(provider, this._providers, enhancerSubtype); + } + const isAlreadyDeclared = this._providers.has(provider); + if ((this.isTransientProvider(provider) || this.isRequestScopeProvider(provider)) && isAlreadyDeclared) { + return provider; + } + this._providers.set(provider, new InstanceWrapper({ + token: provider, + name: provider.name, + metatype: provider, + instance: null, + isResolved: false, + scope: getClassScope(provider), + durable: isDurable(provider), + host: this + })); + if (this.isEntryProvider(provider)) { + this._entryProviderKeys.add(provider); + } + return provider; + } + isCustomProvider(provider) { + return !isNil(provider.provide); + } + addCustomProvider(provider, collection, enhancerSubtype) { + if (this.isCustomClass(provider)) { + this.addCustomClass(provider, collection, enhancerSubtype); + } else if (this.isCustomValue(provider)) { + this.addCustomValue(provider, collection, enhancerSubtype); + } else if (this.isCustomFactory(provider)) { + this.addCustomFactory(provider, collection, enhancerSubtype); + } else if (this.isCustomUseExisting(provider)) { + this.addCustomUseExisting(provider, collection, enhancerSubtype); + } else { + throw new InvalidProviderException(provider.provide, this.name); + } + return provider.provide; + } + isCustomClass(provider) { + return !isNil(provider.useClass); + } + isCustomValue(provider) { + return isObject(provider) && Object.hasOwn(provider, "useValue"); + } + isCustomFactory(provider) { + return !isNil(provider.useFactory); + } + isCustomUseExisting(provider) { + return !isNil(provider.useExisting); + } + isDynamicModule(exported) { + return exported && exported.module; + } + addCustomClass(provider, collection, enhancerSubtype) { + let { scope, durable } = provider; + const { useClass } = provider; + if (isUndefined(scope)) { + scope = getClassScope(useClass); + } + if (isUndefined(durable)) { + durable = isDurable(useClass); + } + const token = provider.provide; + collection.set(token, new InstanceWrapper({ + token, + name: useClass?.name || useClass, + metatype: useClass, + instance: null, + isResolved: false, + scope, + durable, + host: this, + subtype: enhancerSubtype + })); + } + addCustomValue(provider, collection, enhancerSubtype) { + const { useValue: value, provide: providerToken } = provider; + const instanceDecorator = this.container.contextOptions?.instrument?.instanceDecorator; + collection.set(providerToken, new InstanceWrapper({ + token: providerToken, + name: providerToken?.name || providerToken, + metatype: null, + instance: instanceDecorator ? makeSafeInstanceDecorator(instanceDecorator)(value) : value, + isResolved: true, + async: value instanceof Promise, + host: this, + subtype: enhancerSubtype + })); + } + addCustomFactory(provider, collection, enhancerSubtype) { + const { useFactory: factory, inject, scope, durable, provide: providerToken } = provider; + collection.set(providerToken, new InstanceWrapper({ + token: providerToken, + name: providerToken?.name || providerToken, + metatype: factory, + instance: null, + isResolved: false, + inject: inject || [], + scope, + durable, + host: this, + subtype: enhancerSubtype + })); + } + addCustomUseExisting(provider, collection, enhancerSubtype) { + const { useExisting, provide: providerToken } = provider; + collection.set(providerToken, new InstanceWrapper({ + token: providerToken, + name: providerToken?.name || providerToken, + metatype: /* @__PURE__ */ __name(((instance) => instance), "metatype"), + instance: null, + isResolved: false, + inject: [useExisting], + host: this, + isAlias: true, + subtype: enhancerSubtype + })); + } + addExportedProviderOrModule(toExport) { + const addExportedUnit = /* @__PURE__ */ __name((token) => this._exports.add(this.validateExportedProvider(token)), "addExportedUnit"); + if (this.isCustomProvider(toExport)) { + return this.addCustomExportedProvider(toExport); + } else if (isString(toExport) || isSymbol(toExport)) { + return addExportedUnit(toExport); + } else if (this.isDynamicModule(toExport)) { + const { module: moduleClassRef } = toExport; + return addExportedUnit(moduleClassRef); + } + addExportedUnit(toExport); + } + addCustomExportedProvider(provider) { + const provide = provider.provide; + if (isString(provide) || isSymbol(provide)) { + return this._exports.add(this.validateExportedProvider(provide)); + } + this._exports.add(this.validateExportedProvider(provide)); + } + validateExportedProvider(token) { + if (this._providers.has(token)) { + return token; + } + const imports = (0, import_iterare8.iterate)(this._imports.values()).filter((item) => !!item).map(({ metatype }) => metatype).filter((metatype) => !!metatype).toArray(); + if (!imports.includes(token)) { + const { name } = this.metatype; + const providerName = isFunction(token) ? token.name : token; + throw new UnknownExportException(providerName, name); + } + return token; + } + addController(controller) { + this._controllers.set(controller, new InstanceWrapper({ + token: controller, + name: controller.name, + metatype: controller, + instance: null, + isResolved: false, + scope: getClassScope(controller), + durable: isDurable(controller), + host: this + })); + this.assignControllerUniqueId(controller); + } + assignControllerUniqueId(controller) { + Object.defineProperty(controller, CONTROLLER_ID_KEY, { + enumerable: false, + writable: false, + configurable: true, + value: randomStringGenerator() + }); + } + addImport(moduleRef) { + this._imports.add(moduleRef); + } + replace(toReplace, options) { + if (options.isProvider && this.hasProvider(toReplace)) { + const originalProvider = this._providers.get(toReplace); + return originalProvider.mergeWith({ provide: toReplace, ...options }); + } else if (!options.isProvider && this.hasInjectable(toReplace)) { + const originalInjectable = this._injectables.get(toReplace); + return originalInjectable.mergeWith({ + provide: toReplace, + ...options + }); + } + } + hasProvider(token) { + return this._providers.has(token); + } + hasInjectable(token) { + return this._injectables.has(token); + } + getProviderByKey(name) { + return this._providers.get(name); + } + getProviderById(id) { + for (const item of this._providers.values()) { + if (item.id === id) + return item; + } + return void 0; + } + getControllerById(id) { + for (const item of this._controllers.values()) { + if (item.id === id) + return item; + } + return void 0; + } + getInjectableById(id) { + for (const item of this._injectables.values()) { + if (item.id === id) + return item; + } + return void 0; + } + getMiddlewareById(id) { + for (const item of this._middlewares.values()) { + if (item.id === id) + return item; + } + return void 0; + } + getNonAliasProviders() { + return [...this._providers].filter(([_, wrapper]) => !wrapper.isAlias); + } + createModuleReferenceType() { + const self = this; + return class extends ModuleRef { + constructor() { + super(self.container); + } + get(typeOrToken, options = {}) { + options.strict ??= true; + options.each ??= false; + return this.find(typeOrToken, options.strict ? { + moduleId: self.id, + each: options.each + } : options); + } + resolve(typeOrToken, contextId = createContextId(), options = {}) { + options.strict ??= true; + options.each ??= false; + return this.resolvePerContext(typeOrToken, self, contextId, options); + } + async create(type, contextId) { + if (!(type && isFunction(type) && type.prototype)) { + throw new InvalidClassException(type); + } + return this.instantiateClass(type, self, contextId); + } + }; + } + isEntryProvider(metatype) { + return typeof metatype === "function" ? !!Reflect.getMetadata(ENTRY_PROVIDER_WATERMARK, metatype) : false; + } + generateUuid() { + const prefix = "M_"; + const key = this.token ? this.token.includes(":") ? this.token.split(":")[1] : this.token : this.name; + return key ? UuidFactory.get(`${prefix}_${key}`) : randomStringGenerator(); + } + isTransientProvider(provider) { + return getClassScope(provider) === Scope.TRANSIENT; + } + isRequestScopeProvider(provider) { + return getClassScope(provider) === Scope.REQUEST; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/opaque-key-factory/by-reference-module-opaque-key-factory.js +import { createHash } from "crypto"; +var K_MODULE_ID, ByReferenceModuleOpaqueKeyFactory; +var init_by_reference_module_opaque_key_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/opaque-key-factory/by-reference-module-opaque-key-factory.js"() { + init_internal(); + K_MODULE_ID = /* @__PURE__ */ Symbol("K_MODULE_ID"); + ByReferenceModuleOpaqueKeyFactory = class { + static { + __name(this, "ByReferenceModuleOpaqueKeyFactory"); + } + keyGenerationStrategy; + constructor(options) { + this.keyGenerationStrategy = options?.keyGenerationStrategy ?? "random"; + } + createForStatic(moduleCls, originalRef = moduleCls) { + return this.getOrCreateModuleId(moduleCls, void 0, originalRef); + } + createForDynamic(moduleCls, dynamicMetadata, originalRef) { + return this.getOrCreateModuleId(moduleCls, dynamicMetadata, originalRef); + } + getOrCreateModuleId(moduleCls, dynamicMetadata, originalRef) { + if (Object.prototype.hasOwnProperty.call(originalRef, K_MODULE_ID)) { + return originalRef[K_MODULE_ID]; + } + let moduleId; + if (this.keyGenerationStrategy === "random") { + moduleId = this.generateRandomString(); + } else { + const delimiter = ":"; + moduleId = dynamicMetadata ? `${this.generateRandomString()}${delimiter}${this.hashString(moduleCls.name + JSON.stringify(dynamicMetadata))}` : `${this.generateRandomString()}${delimiter}${this.hashString(moduleCls.toString())}`; + } + originalRef[K_MODULE_ID] = moduleId; + return moduleId; + } + hashString(value) { + return createHash("sha256").update(value).digest("hex"); + } + generateRandomString() { + return randomStringGenerator(); + } + }; + } +}); + +// ../../node_modules/.pnpm/fast-safe-stringify@2.1.1/node_modules/fast-safe-stringify/index.js +var require_fast_safe_stringify = __commonJS({ + "../../node_modules/.pnpm/fast-safe-stringify@2.1.1/node_modules/fast-safe-stringify/index.js"(exports, module) { + module.exports = stringify2; + stringify2.default = stringify2; + stringify2.stable = deterministicStringify; + stringify2.stableStringify = deterministicStringify; + var LIMIT_REPLACE_NODE = "[...]"; + var CIRCULAR_REPLACE_NODE = "[Circular]"; + var arr = []; + var replacerStack = []; + function defaultOptions() { + return { + depthLimit: Number.MAX_SAFE_INTEGER, + edgesLimit: Number.MAX_SAFE_INTEGER + }; + } + __name(defaultOptions, "defaultOptions"); + function stringify2(obj, replacer, spacer, options) { + if (typeof options === "undefined") { + options = defaultOptions(); + } + decirc(obj, "", 0, [], void 0, 0, options); + var res; + try { + if (replacerStack.length === 0) { + res = JSON.stringify(obj, replacer, spacer); + } else { + res = JSON.stringify(obj, replaceGetterValues(replacer), spacer); + } + } catch (_) { + return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]"); + } finally { + while (arr.length !== 0) { + var part = arr.pop(); + if (part.length === 4) { + Object.defineProperty(part[0], part[1], part[3]); + } else { + part[0][part[1]] = part[2]; + } + } + } + return res; + } + __name(stringify2, "stringify"); + function setReplace(replace, val, k, parent) { + var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k); + if (propertyDescriptor.get !== void 0) { + if (propertyDescriptor.configurable) { + Object.defineProperty(parent, k, { value: replace }); + arr.push([parent, k, val, propertyDescriptor]); + } else { + replacerStack.push([val, k, replace]); + } + } else { + parent[k] = replace; + arr.push([parent, k, val]); + } + } + __name(setReplace, "setReplace"); + function decirc(val, k, edgeIndex, stack, parent, depth, options) { + depth += 1; + var i; + if (typeof val === "object" && val !== null) { + for (i = 0; i < stack.length; i++) { + if (stack[i] === val) { + setReplace(CIRCULAR_REPLACE_NODE, val, k, parent); + return; + } + } + if (typeof options.depthLimit !== "undefined" && depth > options.depthLimit) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent); + return; + } + if (typeof options.edgesLimit !== "undefined" && edgeIndex + 1 > options.edgesLimit) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent); + return; + } + stack.push(val); + if (Array.isArray(val)) { + for (i = 0; i < val.length; i++) { + decirc(val[i], i, i, stack, val, depth, options); + } + } else { + var keys = Object.keys(val); + for (i = 0; i < keys.length; i++) { + var key = keys[i]; + decirc(val[key], key, i, stack, val, depth, options); + } + } + stack.pop(); + } + } + __name(decirc, "decirc"); + function compareFunction(a, b) { + if (a < b) { + return -1; + } + if (a > b) { + return 1; + } + return 0; + } + __name(compareFunction, "compareFunction"); + function deterministicStringify(obj, replacer, spacer, options) { + if (typeof options === "undefined") { + options = defaultOptions(); + } + var tmp = deterministicDecirc(obj, "", 0, [], void 0, 0, options) || obj; + var res; + try { + if (replacerStack.length === 0) { + res = JSON.stringify(tmp, replacer, spacer); + } else { + res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer); + } + } catch (_) { + return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]"); + } finally { + while (arr.length !== 0) { + var part = arr.pop(); + if (part.length === 4) { + Object.defineProperty(part[0], part[1], part[3]); + } else { + part[0][part[1]] = part[2]; + } + } + } + return res; + } + __name(deterministicStringify, "deterministicStringify"); + function deterministicDecirc(val, k, edgeIndex, stack, parent, depth, options) { + depth += 1; + var i; + if (typeof val === "object" && val !== null) { + for (i = 0; i < stack.length; i++) { + if (stack[i] === val) { + setReplace(CIRCULAR_REPLACE_NODE, val, k, parent); + return; + } + } + try { + if (typeof val.toJSON === "function") { + return; + } + } catch (_) { + return; + } + if (typeof options.depthLimit !== "undefined" && depth > options.depthLimit) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent); + return; + } + if (typeof options.edgesLimit !== "undefined" && edgeIndex + 1 > options.edgesLimit) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent); + return; + } + stack.push(val); + if (Array.isArray(val)) { + for (i = 0; i < val.length; i++) { + deterministicDecirc(val[i], i, i, stack, val, depth, options); + } + } else { + var tmp = {}; + var keys = Object.keys(val).sort(compareFunction); + for (i = 0; i < keys.length; i++) { + var key = keys[i]; + deterministicDecirc(val[key], key, i, stack, val, depth, options); + tmp[key] = val[key]; + } + if (typeof parent !== "undefined") { + arr.push([parent, k, val]); + parent[k] = tmp; + } else { + return tmp; + } + } + stack.pop(); + } + } + __name(deterministicDecirc, "deterministicDecirc"); + function replaceGetterValues(replacer) { + replacer = typeof replacer !== "undefined" ? replacer : function(k, v) { + return v; + }; + return function(key, val) { + if (replacerStack.length > 0) { + for (var i = 0; i < replacerStack.length; i++) { + var part = replacerStack[i]; + if (part[1] === key && part[0] === val) { + val = part[2]; + replacerStack.splice(i, 1); + break; + } + } + } + return replacer.call(this, key, val); + }; + } + __name(replaceGetterValues, "replaceGetterValues"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js +import { createHash as createHash2 } from "crypto"; +var import_fast_safe_stringify, stringify, UNSERIALIZABLE, CLASS_STR, CLASS_STR_LEN, DeepHashedModuleOpaqueKeyFactory; +var init_deep_hashed_module_opaque_key_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js"() { + import_fast_safe_stringify = __toESM(require_fast_safe_stringify(), 1); + init_common(); + init_internal(); + stringify = import_fast_safe_stringify.default.default ?? import_fast_safe_stringify.default; + UNSERIALIZABLE = JSON.stringify("[unable to serialize, circular reference is too complex to analyze]"); + CLASS_STR = "class "; + CLASS_STR_LEN = CLASS_STR.length; + DeepHashedModuleOpaqueKeyFactory = class _DeepHashedModuleOpaqueKeyFactory { + static { + __name(this, "DeepHashedModuleOpaqueKeyFactory"); + } + moduleIdsCache = /* @__PURE__ */ new WeakMap(); + moduleTokenCache = /* @__PURE__ */ new Map(); + logger = new Logger(_DeepHashedModuleOpaqueKeyFactory.name, { + timestamp: true + }); + createForStatic(moduleCls) { + const moduleId = this.getModuleId(moduleCls); + const moduleName = this.getModuleName(moduleCls); + const key = `${moduleId}_${moduleName}`; + if (this.moduleTokenCache.has(key)) { + return this.moduleTokenCache.get(key); + } + const hash = this.hashString(key); + this.moduleTokenCache.set(key, hash); + return hash; + } + createForDynamic(moduleCls, dynamicMetadata) { + const moduleId = this.getModuleId(moduleCls); + const moduleName = this.getModuleName(moduleCls); + const opaqueToken = { + id: moduleId, + module: moduleName, + dynamic: dynamicMetadata + }; + const start = performance.now(); + const opaqueTokenString = this.getStringifiedOpaqueToken(opaqueToken); + const timeSpentInMs = performance.now() - start; + if (timeSpentInMs > 10) { + const formattedTimeSpent = timeSpentInMs.toFixed(2); + this.logger.warn(`The module "${opaqueToken.module}" is taking ${formattedTimeSpent}ms to serialize, this may be caused by larger objects statically assigned to the module. Consider changing the "moduleIdGeneratorAlgorithm" option to "reference" to improve the performance.`); + } + return this.hashString(opaqueTokenString); + } + getStringifiedOpaqueToken(opaqueToken) { + if (!opaqueToken) { + return ""; + } + const tokenString = stringify(opaqueToken, this.replacer); + if (tokenString !== UNSERIALIZABLE) { + return tokenString; + } + return stringify(opaqueToken, (key, value) => value instanceof Map || value instanceof Set ? {} : this.replacer(key, value)); + } + getModuleId(metatype) { + let moduleId = this.moduleIdsCache.get(metatype); + if (moduleId) { + return moduleId; + } + moduleId = randomStringGenerator(); + this.moduleIdsCache.set(metatype, moduleId); + return moduleId; + } + getModuleName(metatype) { + return metatype.name; + } + hashString(value) { + return createHash2("sha256").update(value).digest("hex"); + } + replacer(key, value) { + if (isFunction(value)) { + const funcAsString = value.toString(); + const isClass = funcAsString.slice(0, CLASS_STR_LEN) === CLASS_STR; + if (isClass) { + return value.name; + } + return funcAsString; + } + if (isSymbol(value)) { + return value.toString(); + } + if (value instanceof Map) { + return { Map: [...value] }; + } + if (value instanceof Set) { + return { Set: [...value] }; + } + if (value instanceof RegExp) { + return { RegExp: value.toString() }; + } + return value; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/container.js +var NestContainer; +var init_container = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/container.js"() { + init_discoverable_meta_host_collection(); + init_exceptions2(); + init_initialize_on_preview_allowlist(); + init_serialized_graph(); + init_request_constants(); + init_compiler(); + init_internal_core_module(); + init_internal_providers_storage(); + init_module(); + init_modules_container(); + init_by_reference_module_opaque_key_factory(); + init_deep_hashed_module_opaque_key_factory(); + init_internal(); + NestContainer = class { + static { + __name(this, "NestContainer"); + } + _applicationConfig; + _contextOptions; + globalModules = /* @__PURE__ */ new Set(); + modules = new ModulesContainer(); + dynamicModulesMetadata = /* @__PURE__ */ new Map(); + internalProvidersStorage = new InternalProvidersStorage(); + _serializedGraph = new SerializedGraph(); + moduleCompiler; + internalCoreModule; + constructor(_applicationConfig = void 0, _contextOptions = void 0) { + this._applicationConfig = _applicationConfig; + this._contextOptions = _contextOptions; + const moduleOpaqueKeyFactory = this._contextOptions?.moduleIdGeneratorAlgorithm === "deep-hash" ? new DeepHashedModuleOpaqueKeyFactory() : new ByReferenceModuleOpaqueKeyFactory({ + keyGenerationStrategy: this._contextOptions?.snapshot ? "shallow" : "random" + }); + this.moduleCompiler = new ModuleCompiler(moduleOpaqueKeyFactory); + } + get serializedGraph() { + return this._serializedGraph; + } + get applicationConfig() { + return this._applicationConfig; + } + get contextOptions() { + return this._contextOptions; + } + setHttpAdapter(httpAdapter) { + this.internalProvidersStorage.httpAdapter = httpAdapter; + if (!this.internalProvidersStorage.httpAdapterHost) { + return; + } + const host = this.internalProvidersStorage.httpAdapterHost; + host.httpAdapter = httpAdapter; + } + getHttpAdapterRef() { + return this.internalProvidersStorage.httpAdapter; + } + getHttpAdapterHostRef() { + return this.internalProvidersStorage.httpAdapterHost; + } + async addModule(metatype, scope) { + if (!metatype) { + throw new UndefinedForwardRefException(scope); + } + const { type, dynamicMetadata, token } = await this.moduleCompiler.compile(metatype); + if (this.modules.has(token)) { + return { + moduleRef: this.modules.get(token), + inserted: false + }; + } + return { + moduleRef: await this.setModule({ + token, + type, + dynamicMetadata + }, scope), + inserted: true + }; + } + async replaceModule(metatypeToReplace, newMetatype, scope) { + if (!metatypeToReplace || !newMetatype) { + throw new UndefinedForwardRefException(scope); + } + const { token } = await this.moduleCompiler.compile(metatypeToReplace); + const { type, dynamicMetadata } = await this.moduleCompiler.compile(newMetatype); + return { + moduleRef: await this.setModule({ + token, + type, + dynamicMetadata + }, scope), + inserted: true + }; + } + async setModule({ token, dynamicMetadata, type }, scope) { + const moduleRef = new Module2(type, this); + moduleRef.token = token; + moduleRef.initOnPreview = this.shouldInitOnPreview(type); + this.modules.set(token, moduleRef); + const updatedScope = [].concat(scope, type); + await this.addDynamicMetadata(token, dynamicMetadata, updatedScope); + if (this.isGlobalModule(type, dynamicMetadata)) { + moduleRef.isGlobal = true; + moduleRef.distance = Number.MAX_VALUE; + this.addGlobalModule(moduleRef); + } + return moduleRef; + } + async addDynamicMetadata(token, dynamicModuleMetadata, scope) { + if (!dynamicModuleMetadata) { + return; + } + this.dynamicModulesMetadata.set(token, dynamicModuleMetadata); + const { imports } = dynamicModuleMetadata; + await this.addDynamicModules(imports, scope); + } + async addDynamicModules(modules, scope) { + if (!modules) { + return; + } + await Promise.all(modules.map((module) => this.addModule(module, scope))); + } + isGlobalModule(metatype, dynamicMetadata) { + if (dynamicMetadata && dynamicMetadata.global) { + return true; + } + return !!Reflect.getMetadata(GLOBAL_MODULE_METADATA, metatype); + } + addGlobalModule(module) { + this.globalModules.add(module); + } + getModules() { + return this.modules; + } + getModuleCompiler() { + return this.moduleCompiler; + } + getModuleByKey(moduleKey) { + return this.modules.get(moduleKey); + } + getInternalCoreModuleRef() { + return this.internalCoreModule; + } + async addImport(relatedModule, token) { + if (!this.modules.has(token)) { + return; + } + const moduleRef = this.modules.get(token); + const { token: relatedModuleToken } = await this.moduleCompiler.compile(relatedModule); + const related = this.modules.get(relatedModuleToken); + moduleRef.addImport(related); + } + addProvider(provider, token, enhancerSubtype) { + const moduleRef = this.modules.get(token); + if (!provider) { + throw new CircularDependencyException(moduleRef?.metatype.name); + } + if (!moduleRef) { + throw new UnknownModuleException(); + } + const providerKey = moduleRef.addProvider(provider, enhancerSubtype); + const providerRef = moduleRef.getProviderByKey(providerKey); + DiscoverableMetaHostCollection.inspectProvider(this.modules, providerRef); + return providerKey; + } + addInjectable(injectable, token, enhancerSubtype, host) { + if (!this.modules.has(token)) { + throw new UnknownModuleException(); + } + const moduleRef = this.modules.get(token); + return moduleRef.addInjectable(injectable, enhancerSubtype, host); + } + addExportedProviderOrModule(toExport, token) { + if (!this.modules.has(token)) { + throw new UnknownModuleException(); + } + const moduleRef = this.modules.get(token); + if (isNil(toExport)) { + throw new CircularDependencyException(moduleRef.metatype.name); + } + moduleRef.addExportedProviderOrModule(toExport); + } + addController(controller, token) { + if (!this.modules.has(token)) { + throw new UnknownModuleException(); + } + const moduleRef = this.modules.get(token); + if (isNil(controller)) { + throw new CircularDependencyException(moduleRef.metatype.name); + } + moduleRef.addController(controller); + const controllerRef = moduleRef.controllers.get(controller); + DiscoverableMetaHostCollection.inspectController(this.modules, controllerRef); + } + clear() { + this.modules.clear(); + } + replace(toReplace, options) { + this.modules.forEach((moduleRef) => moduleRef.replace(toReplace, options)); + } + bindGlobalScope() { + this.modules.forEach((moduleRef) => this.bindGlobalsToImports(moduleRef)); + } + bindGlobalsToImports(moduleRef) { + this.globalModules.forEach((globalModule) => this.bindGlobalModuleToModule(moduleRef, globalModule)); + } + bindGlobalModuleToModule(target, globalModule) { + if (target === globalModule || target === this.internalCoreModule) { + return; + } + target.addImport(globalModule); + } + getDynamicMetadataByToken(token, metadataKey) { + const metadata = this.dynamicModulesMetadata.get(token); + return metadataKey ? metadata?.[metadataKey] ?? [] : metadata; + } + registerCoreModuleRef(moduleRef) { + this.internalCoreModule = moduleRef; + this.modules[InternalCoreModule.name] = moduleRef; + } + getModuleTokenFactory() { + return this.moduleCompiler.moduleOpaqueKeyFactory; + } + registerRequestProvider(request, contextId) { + const wrapper = this.internalCoreModule.getProviderByKey(REQUEST); + wrapper.setInstanceByContextId(contextId, { + instance: request, + isResolved: true + }); + } + shouldInitOnPreview(type) { + return InitializeOnPreviewAllowlist.has(type); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/index.js +var init_injector2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/index.js"() { + init_container(); + init_inquirer(); + init_lazy_module_loader(); + init_module_ref(); + init_modules_container(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/partial-graph.host.js +var PartialGraphHost; +var init_partial_graph_host = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/partial-graph.host.js"() { + PartialGraphHost = class { + static { + __name(this, "PartialGraphHost"); + } + static partialGraph; + static toJSON() { + return this.partialGraph?.toJSON(); + } + static toString() { + return this.partialGraph?.toString(); + } + static register(partialGraph) { + this.partialGraph = partialGraph; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/graph-inspector.js +var GraphInspector; +var init_graph_inspector = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/graph-inspector.js"() { + init_unknown_dependencies_exception(); + init_deterministic_uuid_registry(); + init_partial_graph_host(); + GraphInspector = class { + static { + __name(this, "GraphInspector"); + } + container; + graph; + enhancersMetadataCache = new Array(); + constructor(container) { + this.container = container; + this.graph = container.serializedGraph; + } + inspectModules(modules = this.container.getModules()) { + for (const moduleRef of modules.values()) { + this.insertModuleNode(moduleRef); + this.insertClassNodes(moduleRef); + this.insertModuleToModuleEdges(moduleRef); + } + this.enhancersMetadataCache.forEach((entry) => this.insertEnhancerEdge(entry)); + DeterministicUuidRegistry.clear(); + } + registerPartial(error) { + this.graph.status = "partial"; + if (error instanceof UnknownDependenciesException) { + this.graph.metadata = { + cause: { + type: "unknown-dependencies", + context: error.context, + moduleId: error.moduleRef?.id, + nodeId: error.metadata?.id + } + }; + } else { + this.graph.metadata = { + cause: { + type: "unknown", + error + } + }; + } + PartialGraphHost.register(this.graph); + } + inspectInstanceWrapper(source, moduleRef) { + const ctorMetadata = source.getCtorMetadata(); + ctorMetadata?.forEach((target, index) => this.insertClassToClassEdge(source, target, moduleRef, index, "constructor")); + const propertiesMetadata = source.getPropertiesMetadata(); + propertiesMetadata?.forEach(({ key, wrapper: target }) => this.insertClassToClassEdge(source, target, moduleRef, key, "property")); + } + insertEnhancerMetadataCache(entry) { + this.enhancersMetadataCache.push(entry); + } + insertOrphanedEnhancer(entry) { + this.graph.insertOrphanedEnhancer({ + ...entry, + ref: entry.ref?.constructor?.name ?? "Object" + }); + } + insertAttachedEnhancer(wrapper) { + const existingNode = this.graph.getNodeById(wrapper.id); + existingNode.metadata.global = true; + this.graph.insertAttachedEnhancer(existingNode.id); + } + insertEntrypointDefinition(definition, parentId) { + definition = { + ...definition, + id: `${definition.classNodeId}_${definition.methodName}` + }; + this.graph.insertEntrypoint(definition, parentId); + } + insertClassNode(moduleRef, wrapper, type) { + this.graph.insertNode({ + id: wrapper.id, + label: wrapper.name, + parent: moduleRef.id, + metadata: { + type, + internal: wrapper.metatype === moduleRef.metatype, + sourceModuleName: moduleRef.name, + durable: wrapper.isDependencyTreeDurable(), + static: wrapper.isDependencyTreeStatic(), + scope: wrapper.scope, + transient: wrapper.isTransient, + exported: moduleRef.exports.has(wrapper.token), + token: wrapper.token, + subtype: wrapper.subtype, + initTime: wrapper.initTime + } + }); + } + insertModuleNode(moduleRef) { + const dynamicMetadata = this.container.getDynamicMetadataByToken(moduleRef.token); + const node = { + id: moduleRef.id, + label: moduleRef.name, + metadata: { + type: "module", + global: moduleRef.isGlobal, + dynamic: !!dynamicMetadata, + internal: moduleRef.name === "InternalCoreModule" + } + }; + this.graph.insertNode(node); + } + insertModuleToModuleEdges(moduleRef) { + for (const targetModuleRef of moduleRef.imports) { + this.graph.insertEdge({ + source: moduleRef.id, + target: targetModuleRef.id, + metadata: { + type: "module-to-module", + sourceModuleName: moduleRef.name, + targetModuleName: targetModuleRef.name + } + }); + } + } + insertEnhancerEdge(entry) { + const moduleRef = this.container.getModuleByKey(entry.moduleToken); + const sourceInstanceWrapper = moduleRef.controllers.get(entry.classRef) ?? moduleRef.providers.get(entry.classRef); + const existingSourceNode = this.graph.getNodeById(sourceInstanceWrapper.id); + const enhancers = existingSourceNode.metadata.enhancers ?? []; + if (entry.enhancerInstanceWrapper) { + this.insertClassToClassEdge(sourceInstanceWrapper, entry.enhancerInstanceWrapper, moduleRef, void 0, "decorator"); + enhancers.push({ + id: entry.enhancerInstanceWrapper.id, + methodKey: entry.methodKey, + subtype: entry.subtype + }); + } else { + const name = entry.enhancerRef.constructor?.name ?? entry.enhancerRef.name; + enhancers.push({ + name, + methodKey: entry.methodKey, + subtype: entry.subtype + }); + } + existingSourceNode.metadata.enhancers = enhancers; + } + insertClassToClassEdge(source, target, moduleRef, keyOrIndex, injectionType) { + this.graph.insertEdge({ + source: source.id, + target: target.id, + metadata: { + type: "class-to-class", + sourceModuleName: moduleRef.name, + sourceClassName: source.name, + targetClassName: target.name, + sourceClassToken: source.token, + targetClassToken: target.token, + targetModuleName: target.host?.name, + keyOrIndex, + injectionType + } + }); + } + insertClassNodes(moduleRef) { + moduleRef.providers.forEach((value) => this.insertClassNode(moduleRef, value, "provider")); + moduleRef.injectables.forEach((value) => this.insertClassNode(moduleRef, value, "injectable")); + moduleRef.controllers.forEach((value) => this.insertClassNode(moduleRef, value, "controller")); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/index.js +var init_inspector = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/index.js"() { + init_graph_inspector(); + init_initialize_on_preview_allowlist(); + init_partial_graph_host(); + init_serialized_graph(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/legacy-route-converter.js +var UNSUPPORTED_PATH_MESSAGE, LegacyRouteConverter; +var init_legacy_route_converter = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/legacy-route-converter.js"() { + init_common(); + UNSUPPORTED_PATH_MESSAGE = /* @__PURE__ */ __name((text, route) => `Unsupported route path: "${route}". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of "path-to-regexp" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with "/users", you should use /users/{*path}. The braces keep the wildcard optional, so it covers the same paths as /users/* did, while /users/*path is narrower and requires at least one extra segment. For more details, refer to the migration guide.`, "UNSUPPORTED_PATH_MESSAGE"); + LegacyRouteConverter = class _LegacyRouteConverter { + static { + __name(this, "LegacyRouteConverter"); + } + static logger = new Logger(_LegacyRouteConverter.name); + /** + * Convert legacy routes to the new format (syntax). + * path-to-regexp used by Express>=v5 and @fastify/middie>=v9 no longer support unnamed wildcards. + * This method attempts to convert the old syntax to the new one, and logs an error if it fails. + * @param route The route to convert. + * @param options Options object. + * @returns The converted route, or the original route if it cannot be converted. + */ + static tryConvert(route, options) { + const routeWithLeadingSlash = route.startsWith("/") ? route : `/${route}`; + const normalizedRoute = route.endsWith("/") ? routeWithLeadingSlash : `${routeWithLeadingSlash}/`; + const loggingEnabled = options?.logs ?? true; + const printWarning = loggingEnabled ? this.printWarning.bind(this) : () => { + }; + if (normalizedRoute.endsWith("/(.*)/")) { + const convertedRoute = route.replace("(.*)", "{*path}"); + if (normalizedRoute !== "/(.*)/") { + printWarning(route, convertedRoute); + } + return convertedRoute; + } + if (normalizedRoute.endsWith("/*/")) { + const convertedRoute = route.replace("*", "{*path}"); + if (normalizedRoute !== "/*/") { + printWarning(route, convertedRoute); + } + return convertedRoute; + } + if (normalizedRoute.endsWith("/+/")) { + const convertedRoute = route.replace("/+", "/*path"); + printWarning(route, convertedRoute); + return convertedRoute; + } + if (normalizedRoute.includes("/*/")) { + const convertedRoute = route.replaceAll(/\/\*(?=\/)/g, (match, offset) => `/*path${offset}`); + printWarning(route, convertedRoute); + return convertedRoute; + } + return route; + } + static printError(route) { + this.logger.error(UNSUPPORTED_PATH_MESSAGE`${route}`); + } + static printWarning(route, convertedRoute) { + const autoConvertMessage = convertedRoute ? ` Attempting to auto-convert to "${convertedRoute}"...` : " Attempting to auto-convert..."; + this.logger.warn(UNSUPPORTED_PATH_MESSAGE`${route}` + autoConvertMessage); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/utils/exclude-route.util.js +function isRouteExcluded(excludedRoutes, path, requestMethod) { + return excludedRoutes.some((route) => { + if (isRequestMethodAll(route.requestMethod) || route.requestMethod === requestMethod) { + return route.pathRegex.exec(addLeadingSlash(path)); + } + return false; + }); +} +var isRequestMethodAll; +var init_exclude_route_util = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/utils/exclude-route.util.js"() { + init_common(); + init_internal(); + isRequestMethodAll = /* @__PURE__ */ __name((method) => { + return RequestMethod.ALL === method || method === -1; + }, "isRequestMethodAll"); + __name(isRouteExcluded, "isRouteExcluded"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/utils/flatten-route-paths.util.js +function flattenRoutePaths(routes) { + const result = []; + routes.forEach((item) => { + if (item.module && item.path) { + result.push({ module: item.module, path: item.path }); + } + if (item.children) { + const childrenRef = item.children; + childrenRef.forEach((child) => { + if (!isString(child) && isString(child.path)) { + child.path = normalizePath(normalizePath(item.path) + normalizePath(child.path)); + } else { + result.push({ path: item.path, module: child }); + } + }); + result.push(...flattenRoutePaths(childrenRef)); + } + }); + return result; +} +var init_flatten_route_paths_util = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/utils/flatten-route-paths.util.js"() { + init_internal(); + __name(flattenRoutePaths, "flattenRoutePaths"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/utils/index.js +var init_utils = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/utils/index.js"() { + init_exclude_route_util(); + init_flatten_route_paths_util(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/utils.js +function compileExcludedPath(path, matchingOptions) { + if (!matchingOptions) { + return (0, import_path_to_regexp.pathToRegexp)(addLeadingSlash(path)).regexp; + } + const routePath = path.length > 1 ? path.replace(/\/+$/, "") : path; + return (0, import_path_to_regexp.pathToRegexp)(addLeadingSlash(routePath) || "/", { + sensitive: matchingOptions.caseSensitive, + trailing: matchingOptions.ignoreTrailingSlash + }).regexp; +} +function isStaticPath(path) { + return !ROUTE_PATTERN_CHARS.test(path); +} +function isMiddlewareClass(middleware) { + const middlewareStr = middleware.toString(); + if (middlewareStr.substring(0, 5) === "class") { + return true; + } + const middlewareArr = middlewareStr.split(" "); + return middlewareArr[0] === "function" && /[A-Z]/.test(middlewareArr[1]?.[0]) && isFunction(middleware.prototype?.use); +} +function assignToken(metatype, token = uid(21)) { + Object.defineProperty(metatype, "name", { value: token }); + return metatype; +} +function isMiddlewareRouteExcluded(req, excludedRoutes, httpAdapter, ignoreTrailingSlash = false, versioningOptions) { + if (excludedRoutes.length <= 0) { + return false; + } + const reqMethod = httpAdapter.getRequestMethod(req); + const originalUrl = httpAdapter.getRequestUrl(req); + if (!originalUrl?.startsWith("/") || originalUrl.includes("#")) { + return false; + } + const queryParamsIndex = originalUrl.indexOf("?"); + const pathname = queryParamsIndex >= 0 ? originalUrl.slice(0, queryParamsIndex) : originalUrl; + const isRequestForRoute = /* @__PURE__ */ __name((route, path) => isRouteExcluded([route], path, RequestMethod[reqMethod]) || reqMethod === RequestMethod[RequestMethod.HEAD] && isRouteExcluded([route], path, RequestMethod.GET), "isRequestForRoute"); + const isVersionRequested = createRequestedVersionMatcher(req, versioningOptions); + const isExcluded = /* @__PURE__ */ __name((path) => excludedRoutes.some((route) => isRequestForRoute(route, path) && isVersionRequested(route)), "isExcluded"); + if (ignoreTrailingSlash && pathname.length > 1 && pathname.endsWith("/")) { + return isExcluded(pathname) && isExcluded(pathname.replace(/\/+$/, "")); + } + return isExcluded(pathname); +} +function createRequestedVersionMatcher(request, versioningOptions) { + let requestedVersions; + return ({ version }) => { + if (!version || version === VERSION_NEUTRAL || !versioningOptions || versioningOptions.type === VersioningType.URI) { + return true; + } + if (requestedVersions === void 0) { + requestedVersions = getRequestedVersions(request, versioningOptions); + } + if (!requestedVersions) { + return false; + } + const versions = Array.isArray(version) ? version : [version]; + return requestedVersions.length > 0 ? requestedVersions.every((requested) => versions.includes(requested)) : versions.includes(VERSION_NEUTRAL); + }; +} +function getRequestedVersions(request, versioningOptions) { + const headers = request.headers ?? {}; + let version; + switch (versioningOptions.type) { + case VersioningType.HEADER: + version = headers[versioningOptions.header] || headers[versioningOptions.header.toLowerCase()]; + break; + case VersioningType.MEDIA_TYPE: + version = getMediaTypeVersion2(headers["Accept"] || headers["accept"], versioningOptions.key); + break; + case VersioningType.CUSTOM: + try { + version = versioningOptions.extractor(request); + } catch { + return null; + } + break; + } + return isUndefined(version) ? [] : [].concat(version); +} +function getMediaTypeVersion2(acceptHeader, key) { + const mediaRanges = [].concat(acceptHeader ?? []).flatMap((value) => value.split(",")); + for (const mediaRange of mediaRanges) { + const [, ...parameters] = mediaRange.split(";"); + for (const parameter of parameters) { + const trimmedParameter = parameter.trim(); + if (trimmedParameter.startsWith(key)) { + return trimmedParameter.slice(key.length); + } + } + } + return void 0; +} +var import_iterare9, import_path_to_regexp, mapToExcludeRoute, EXACT_ROUTE_MATCHING, ROUTE_PATTERN_CHARS, filterMiddleware, mapToClass; +var init_utils2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/utils.js"() { + init_common(); + import_iterare9 = __toESM(require_lib(), 1); + import_path_to_regexp = __toESM(require_dist2(), 1); + init_dist(); + init_legacy_route_converter(); + init_utils(); + init_internal(); + mapToExcludeRoute = /* @__PURE__ */ __name((routes, matchingOptions) => { + return routes.map((route) => { + const originalPath = isString(route) ? route : route.path; + const path = LegacyRouteConverter.tryConvert(originalPath); + try { + const pathRegex = compileExcludedPath(path, matchingOptions); + if (isString(route)) { + return { + path, + requestMethod: RequestMethod.ALL, + pathRegex + }; + } + const excludedRoute = { + path, + requestMethod: route.method, + pathRegex + }; + if (route.version) { + excludedRoute.version = route.version; + } + return excludedRoute; + } catch (e) { + if (e instanceof TypeError) { + LegacyRouteConverter.printError(originalPath); + } + throw e; + } + }); + }, "mapToExcludeRoute"); + __name(compileExcludedPath, "compileExcludedPath"); + EXACT_ROUTE_MATCHING = { + caseSensitive: true, + ignoreTrailingSlash: false + }; + ROUTE_PATTERN_CHARS = /[:*?+()[\]{}!\\$]/; + __name(isStaticPath, "isStaticPath"); + filterMiddleware = /* @__PURE__ */ __name((middleware, routes, httpAdapter, versioningOptions) => { + const matchingOptions = httpAdapter.getRouteMatchingOptions?.() ?? EXACT_ROUTE_MATCHING; + const excludedRoutes = mapToExcludeRoute(routes, matchingOptions); + return (0, import_iterare9.iterate)([]).concat(middleware).filter(isFunction).map((item) => mapToClass(item, excludedRoutes, httpAdapter, matchingOptions.ignoreTrailingSlash, versioningOptions)).toArray(); + }, "filterMiddleware"); + mapToClass = /* @__PURE__ */ __name((middleware, excludedRoutes, httpAdapter, ignoreTrailingSlash = false, versioningOptions) => { + if (isMiddlewareClass(middleware)) { + if (excludedRoutes.length <= 0) { + return middleware; + } + const MiddlewareHost = class extends middleware { + static { + __name(this, "MiddlewareHost"); + } + use(...params) { + const [req, _, next] = params; + const isExcluded = isMiddlewareRouteExcluded(req, excludedRoutes, httpAdapter, ignoreTrailingSlash, versioningOptions); + if (isExcluded) { + return next(); + } + return super.use(...params); + } + }; + return assignToken(MiddlewareHost, middleware.name); + } + return assignToken(class { + use = /* @__PURE__ */ __name((...params) => { + const [req, _, next] = params; + const isExcluded = isMiddlewareRouteExcluded(req, excludedRoutes, httpAdapter, ignoreTrailingSlash, versioningOptions); + if (isExcluded) { + return next(); + } + return middleware(...params); + }, "use"); + }); + }, "mapToClass"); + __name(isMiddlewareClass, "isMiddlewareClass"); + __name(assignToken, "assignToken"); + __name(isMiddlewareRouteExcluded, "isMiddlewareRouteExcluded"); + __name(createRequestedVersionMatcher, "createRequestedVersionMatcher"); + __name(getRequestedVersions, "getRequestedVersions"); + __name(getMediaTypeVersion2, "getMediaTypeVersion"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/builder.js +var import_iterare10, import_path_to_regexp2, MiddlewareBuilder; +var init_builder = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/builder.js"() { + import_iterare10 = __toESM(require_lib(), 1); + import_path_to_regexp2 = __toESM(require_dist2(), 1); + init_legacy_route_converter(); + init_utils2(); + MiddlewareBuilder = class _MiddlewareBuilder { + static { + __name(this, "MiddlewareBuilder"); + } + routesMapper; + httpAdapter; + routeInfoPathExtractor; + middlewareCollection = /* @__PURE__ */ new Set(); + constructor(routesMapper, httpAdapter, routeInfoPathExtractor) { + this.routesMapper = routesMapper; + this.httpAdapter = httpAdapter; + this.routeInfoPathExtractor = routeInfoPathExtractor; + } + apply(...middleware) { + return new _MiddlewareBuilder.ConfigProxy(this, middleware.flat(), this.routeInfoPathExtractor); + } + build() { + return [...this.middlewareCollection]; + } + getHttpAdapter() { + return this.httpAdapter; + } + static ConfigProxy = class { + static { + __name(this, "ConfigProxy"); + } + builder; + middleware; + routeInfoPathExtractor; + excludedRoutes = []; + constructor(builder, middleware, routeInfoPathExtractor) { + this.builder = builder; + this.middleware = middleware; + this.routeInfoPathExtractor = routeInfoPathExtractor; + } + getExcludedRoutes() { + return this.excludedRoutes; + } + exclude(...routes) { + this.excludedRoutes = [ + ...this.excludedRoutes, + ...this.getRoutesFlatList(routes).reduce((excludedRoutes, route) => { + for (const routePath of this.routeInfoPathExtractor.extractPathFrom(route)) { + excludedRoutes.push({ + ...route, + path: routePath + }); + } + return excludedRoutes; + }, []) + ]; + return this; + } + forRoutes(...routes) { + const { middlewareCollection } = this.builder; + const flattedRoutes = this.getRoutesFlatList(routes); + const forRoutes = this.removeOverlappedRoutes(this.addCoveredExcludedRoutes(flattedRoutes)); + const configuration = { + middleware: filterMiddleware(this.middleware, this.excludedRoutes, this.builder.getHttpAdapter(), this.routeInfoPathExtractor.getVersioningOptions()), + forRoutes + }; + middlewareCollection.add(configuration); + return this.builder; + } + getRoutesFlatList(routes) { + const { routesMapper } = this.builder; + return (0, import_iterare10.iterate)(routes).map((route) => routesMapper.mapRouteToRouteInfo(route)).flatten().toArray(); + } + /** + * Adds the routes excluded from the global prefix that a route covers + * without being excluded itself (e.g. "users/me" for "users/:id"): the + * router serves them outside of the prefix the route is mounted under. + */ + addCoveredExcludedRoutes(routes) { + const allRoutes = [...routes]; + for (const route of routes) { + for (const excludedRoute of this.routeInfoPathExtractor.extractExcludedRoutesCoveredBy(route)) { + const isListed = allRoutes.some((item) => item.path === excludedRoute.path && item.method === excludedRoute.method && item.version === excludedRoute.version); + if (!isListed) { + allRoutes.push(excludedRoute); + } + } + } + return allRoutes; + } + /** + * Removes the routes that a parameterized route of the same method is + * mounted on as well (e.g. "/users/me" next to "/users/:id"), so that + * the middleware runs once for them. Only a route without parameters or + * wildcards is removed, and only when the parameterized route matches + * every path it would be mounted on (global prefix and version included). + */ + removeOverlappedRoutes(routes) { + const routesWithRegex = routes.filter((route) => route.path.includes(":")).map((route) => ({ + method: route.method, + regexes: this.compileMountPaths(route) + })); + return routes.filter((route) => { + const mountPaths = this.routeInfoPathExtractor.extractPathsFrom(route); + if (!mountPaths.every(isStaticPath)) { + return true; + } + const isOverlapped = /* @__PURE__ */ __name((item) => route.method === item.method && mountPaths.every((path) => item.regexes.some((regex) => regex.test(path))), "isOverlapped"); + return !routesWithRegex.some(isOverlapped); + }); + } + compileMountPaths(route) { + try { + return this.routeInfoPathExtractor.extractPathsFrom(route).map((path) => (0, import_path_to_regexp2.pathToRegexp)(LegacyRouteConverter.tryConvert(path.replace(/\$$/, ""), { + logs: false + }), { sensitive: true }).regexp); + } catch { + return []; + } + } + }; + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/index.js +var init_middleware = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/index.js"() { + init_builder(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/cookie-signer.js +import { createHmac, timingSafeEqual } from "crypto"; +var SIGNED_COOKIE_PREFIX, CookieSigner; +var init_cookie_signer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/cookie-signer.js"() { + SIGNED_COOKIE_PREFIX = "s:"; + CookieSigner = class { + static { + __name(this, "CookieSigner"); + } + secrets; + constructor(secret) { + const secrets = Array.isArray(secret) ? secret : [secret]; + if (secrets.length === 0 || secrets.some((item) => typeof item !== "string" || item.length === 0)) { + throw new TypeError('The "cookies.secret" option must be a non-empty string or a non-empty array of non-empty strings.'); + } + this.secrets = [...secrets]; + } + /** + * Returns `s:.`, signed with the first secret. + */ + sign(value) { + return `${SIGNED_COOKIE_PREFIX}${value}.${this.digest(value, this.secrets[0])}`; + } + /** + * Returns the original value when `input` carries a valid signature for + * any of the secrets, `undefined` otherwise. The `s:` prefix is optional. + */ + unsign(input) { + if (typeof input !== "string") { + return void 0; + } + const signed = input.startsWith(SIGNED_COOKIE_PREFIX) ? input.slice(SIGNED_COOKIE_PREFIX.length) : input; + const dotIndex = signed.lastIndexOf("."); + if (dotIndex === -1) { + return void 0; + } + const value = signed.slice(0, dotIndex); + const signature = Buffer.from(signed.slice(dotIndex + 1)); + let valid = false; + for (const secret of this.secrets) { + const expected = Buffer.from(this.digest(value, secret)); + if (expected.length === signature.length && timingSafeEqual(expected, signature)) { + valid = true; + } + } + return valid ? value : void 0; + } + digest(value, secret) { + return createHmac("sha256", secret).update(value).digest("base64").replace(/=+$/, ""); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/optional-require.js +async function optionalRequire(packageName, loaderFn) { + try { + return loaderFn ? await loaderFn() : await import(packageName); + } catch (e) { + return {}; + } +} +var init_optional_require = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/optional-require.js"() { + __name(optionalRequire, "optionalRequire"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/container.js +var MiddlewareContainer; +var init_container2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/container.js"() { + init_get_class_scope(); + init_is_durable(); + init_instance_wrapper(); + MiddlewareContainer = class { + static { + __name(this, "MiddlewareContainer"); + } + container; + middleware = /* @__PURE__ */ new Map(); + configurationSets = /* @__PURE__ */ new Map(); + constructor(container) { + this.container = container; + } + getMiddlewareCollection(moduleKey) { + if (!this.middleware.has(moduleKey)) { + const moduleRef = this.container.getModuleByKey(moduleKey); + this.middleware.set(moduleKey, moduleRef.middlewares); + } + return this.middleware.get(moduleKey); + } + getConfigurations() { + return this.configurationSets; + } + insertConfig(configList, moduleKey) { + const middleware = this.getMiddlewareCollection(moduleKey); + const targetConfig = this.getTargetConfig(moduleKey); + const configurations = configList || []; + const insertMiddleware = /* @__PURE__ */ __name((metatype) => { + const token = metatype; + middleware.set(token, new InstanceWrapper({ + scope: getClassScope(metatype), + durable: isDurable(metatype), + name: token?.name ?? token, + metatype, + token + })); + }, "insertMiddleware"); + configurations.forEach((config) => { + [].concat(config.middleware).map(insertMiddleware); + targetConfig.add(config); + }); + } + getTargetConfig(moduleName) { + if (!this.configurationSets.has(moduleName)) { + this.configurationSets.set(moduleName, /* @__PURE__ */ new Set()); + } + return this.configurationSets.get(moduleName); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-middleware.exception.js +var InvalidMiddlewareException; +var init_invalid_middleware_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-middleware.exception.js"() { + init_messages(); + init_runtime_exception(); + InvalidMiddlewareException = class extends RuntimeException { + static { + __name(this, "InvalidMiddlewareException"); + } + constructor(name) { + super(INVALID_MIDDLEWARE_MESSAGE`${name}`); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/exceptions-handler.js +var import_rxjs6, ExceptionsHandler; +var init_exceptions_handler = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/exceptions/exceptions-handler.js"() { + import_rxjs6 = __toESM(require_cjs(), 1); + init_invalid_exception_filter_exception(); + init_base_exception_filter(); + init_internal(); + ExceptionsHandler = class extends BaseExceptionFilter { + static { + __name(this, "ExceptionsHandler"); + } + filters = []; + next(exception, ctx) { + if (this.invokeCustomFilters(exception, ctx)) { + return; + } + super.catch(exception, ctx); + } + setCustomFilters(filters) { + if (!Array.isArray(filters)) { + throw new InvalidExceptionFilterException(); + } + this.filters = filters; + } + invokeCustomFilters(exception, ctx) { + if (isEmptyArray(this.filters)) { + return false; + } + const filter = selectExceptionFilterMetadata(this.filters, exception); + if (!filter) { + return false; + } + const result = filter.func(exception, ctx); + if ((0, import_rxjs6.isObservable)(result)) { + return !!this.applicationRef?.isHeadersSent(ctx.getArgByIndex(1)); + } + return true; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-exception-filters.js +var import_iterare11, RouterExceptionFilters; +var init_router_exception_filters = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-exception-filters.js"() { + init_common(); + import_iterare11 = __toESM(require_lib(), 1); + init_base_exception_filter_context(); + init_exceptions_handler(); + init_constants3(); + init_internal(); + RouterExceptionFilters = class _RouterExceptionFilters extends BaseExceptionFilterContext { + static { + __name(this, "RouterExceptionFilters"); + } + config; + applicationRef; + static logger = new Logger(_RouterExceptionFilters.name); + // Applications already warned about their request-scoped or transient + // global filters (see "getGlobalMetadata()") + static warnedConfigs = /* @__PURE__ */ new WeakSet(); + constructor(container, config, applicationRef) { + super(container); + this.config = config; + this.applicationRef = applicationRef; + } + create(instance, callback, moduleKey, contextId = STATIC_CONTEXT, inquirerId) { + this.moduleContext = moduleKey; + const exceptionHandler = new ExceptionsHandler(this.applicationRef); + const filters = this.createContext(instance, callback, EXCEPTION_FILTERS_METADATA, contextId, inquirerId); + if (isEmptyArray(filters)) { + return exceptionHandler; + } + exceptionHandler.setCustomFilters(filters.reverse()); + return exceptionHandler; + } + getGlobalMetadata(contextId = STATIC_CONTEXT, inquirerId) { + const globalFilters = this.config.getGlobalFilters(); + if (contextId === STATIC_CONTEXT && !inquirerId) { + this.warnAboutScopedGlobalFilters(); + return globalFilters; + } + const scopedFilterWrappers = this.config.getGlobalRequestFilters(); + const scopedFilters = (0, import_iterare11.iterate)(scopedFilterWrappers).map((wrapper) => wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId)).filter((host) => !!host).map((host) => host.instance).toArray(); + return globalFilters.concat(scopedFilters); + } + /** + * Handlers that are not built for a controller (middleware, the "not found" + * handler, the exception layer) have no request to resolve request-scoped + * or transient global filters for, so these filters are left out. + */ + warnAboutScopedGlobalFilters() { + if (isEmptyArray(this.config.getGlobalRequestFilters()) || _RouterExceptionFilters.warnedConfigs.has(this.config)) { + return; + } + _RouterExceptionFilters.warnedConfigs.add(this.config); + _RouterExceptionFilters.logger.warn("Global exception filters (APP_FILTER) with request or transient scope are not applied to exceptions thrown outside of controllers, e.g. in middleware, for unknown routes or while parsing the request body. Register a global filter without a scope as well to handle them."); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-proxy.js +var RouterProxy; +var init_router_proxy = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-proxy.js"() { + init_execution_context_host(); + RouterProxy = class { + static { + __name(this, "RouterProxy"); + } + createProxy(targetCallback, exceptionsHandler) { + return async (req, res, next) => { + try { + await targetCallback(req, res, next); + } catch (e) { + const host = new ExecutionContextHost([req, res, next]); + exceptionsHandler.next(e, host); + return res; + } + }; + } + createExceptionLayerProxy(targetCallback, exceptionsHandler) { + return async (err, req, res, next) => { + try { + await targetCallback(err, req, res, next); + } catch (e) { + const host = new ExecutionContextHost([req, res, next]); + exceptionsHandler.next(e, host); + return res; + } + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/resolver.js +var MiddlewareResolver; +var init_resolver = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/resolver.js"() { + MiddlewareResolver = class { + static { + __name(this, "MiddlewareResolver"); + } + middlewareContainer; + injector; + constructor(middlewareContainer, injector) { + this.middlewareContainer = middlewareContainer; + this.injector = injector; + } + async resolveInstances(moduleRef, moduleName) { + const middlewareMap = this.middlewareContainer.getMiddlewareCollection(moduleName); + const resolveInstance = /* @__PURE__ */ __name(async (wrapper) => this.resolveMiddlewareInstance(wrapper, middlewareMap, moduleRef), "resolveInstance"); + await Promise.all([...middlewareMap.values()].map(resolveInstance)); + } + async resolveMiddlewareInstance(wrapper, middlewareMap, moduleRef) { + await this.injector.loadMiddleware(wrapper, middlewareMap, moduleRef); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-path-factory.js +var RoutePathFactory; +var init_route_path_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-path-factory.js"() { + init_common(); + init_utils(); + init_internal(); + RoutePathFactory = class { + static { + __name(this, "RoutePathFactory"); + } + applicationConfig; + /** + * URI version prefixes (`/v1`, or `''` for an unversioned route) under + * which each global prefix exclusion was matched by a created route. + */ + excludedRouteVersionPrefixes = /* @__PURE__ */ new Map(); + constructor(applicationConfig) { + this.applicationConfig = applicationConfig; + } + create(metadata, requestMethod) { + let paths = [""]; + const versionOrVersions = this.getVersion(metadata); + if (versionOrVersions && metadata.versioningOptions?.type === VersioningType.URI) { + const versionPrefix = this.getVersionPrefix(metadata.versioningOptions); + if (Array.isArray(versionOrVersions)) { + paths = flatten(paths.map((path) => versionOrVersions.map((version) => ( + // Version Neutral - Do not include version in URL + version === VERSION_NEUTRAL ? path : `${path}/${versionPrefix}${version}` + )))); + } else { + if (versionOrVersions !== VERSION_NEUTRAL) { + paths = paths.map((path) => `${path}/${versionPrefix}${versionOrVersions}`); + } + } + } + paths = this.appendToAllIfDefined(paths, metadata.modulePath); + paths = this.appendToAllIfDefined(paths, metadata.ctrlPath); + paths = this.appendToAllIfDefined(paths, metadata.methodPath); + if (metadata.globalPrefix) { + paths = paths.map((path) => { + if (this.isExcludedFromGlobalPrefix(path, requestMethod, versionOrVersions, metadata.versioningOptions)) { + this.trackExcludedRoute(path, requestMethod, versionOrVersions, metadata.versioningOptions); + return path; + } + return stripEndSlash(metadata.globalPrefix || "") + path; + }); + } + return paths.map((path) => addLeadingSlash(path || "/")).map((path) => path !== "/" ? stripEndSlash(path) : path); + } + getVersion(metadata) { + return metadata.methodVersion || metadata.controllerVersion; + } + getVersionPrefix(versioningOptions) { + const defaultPrefix = "v"; + if (versioningOptions.type === VersioningType.URI) { + if (versioningOptions.prefix === false) { + return ""; + } else if (versioningOptions.prefix !== void 0) { + return versioningOptions.prefix; + } + } + return defaultPrefix; + } + appendToAllIfDefined(paths, fragmentToAppend) { + if (!fragmentToAppend) { + return paths; + } + const concatPaths = /* @__PURE__ */ __name((a, b) => stripEndSlash(a) + addLeadingSlash(b), "concatPaths"); + if (Array.isArray(fragmentToAppend)) { + const paths2dArray = paths.map((path) => fragmentToAppend.map((fragment) => concatPaths(path, fragment))); + return flatten(paths2dArray); + } + return paths.map((path) => concatPaths(path, fragmentToAppend)); + } + isExcludedFromGlobalPrefix(path, requestMethod, versionOrVersions, versioningOptions) { + if (isUndefined(requestMethod)) { + return false; + } + const options = this.applicationConfig.getGlobalPrefixOptions(); + const excludedRoutes = options.exclude; + const versionPrefix = this.getUriVersionPrefixOfPath(path, versionOrVersions, versioningOptions); + return Array.isArray(excludedRoutes) && isRouteExcluded(excludedRoutes, path.slice(versionPrefix.length), requestMethod); + } + /** + * Returns the global prefix exclusions as the paths routes are actually + * served at. Under URI versioning an exclusion such as `hello` matches the + * unversioned path, while the route lives at `/v1/hello`, so every version + * prefix a matching route was created under is prepended. An exclusion no + * created route matched (e.g. a raw route registered by a library) is kept + * as configured. + */ + getExcludedRoutePaths() { + const excludedRoutes = this.applicationConfig.getGlobalPrefixOptions().exclude ?? []; + return excludedRoutes.flatMap((route) => { + const versionPrefixes = this.excludedRouteVersionPrefixes.get(route) ?? [ + "" + ]; + return [...versionPrefixes].map((versionPrefix) => ({ + path: versionPrefix ? versionPrefix + addLeadingSlash(route.path) : route.path, + method: route.requestMethod + })); + }); + } + trackExcludedRoute(path, requestMethod, versionOrVersions, versioningOptions) { + if (!versioningOptions && this.applicationConfig.getVersioning()) { + return; + } + const versionPrefix = this.getUriVersionPrefixOfPath(path, versionOrVersions, versioningOptions); + const unversionedPath = path.slice(versionPrefix.length); + const excludedRoutes = this.applicationConfig.getGlobalPrefixOptions().exclude ?? []; + excludedRoutes.filter((route) => isRouteExcluded([route], unversionedPath, requestMethod)).forEach((route) => { + const versionPrefixes = this.excludedRouteVersionPrefixes.get(route) ?? /* @__PURE__ */ new Set(); + versionPrefixes.add(versionPrefix); + this.excludedRouteVersionPrefixes.set(route, versionPrefixes); + }); + } + getUriVersionPrefixOfPath(path, versionOrVersions, versioningOptions) { + if (!versionOrVersions || versionOrVersions === VERSION_NEUTRAL || versioningOptions?.type !== VersioningType.URI) { + return ""; + } + const versions = Array.isArray(versionOrVersions) ? versionOrVersions : [versionOrVersions]; + const versionPrefix = this.getVersionPrefix(versioningOptions); + for (const version of versions) { + if (typeof version !== "string") { + continue; + } + const prefix = `/${versionPrefix}${version}`; + if (path === prefix || path.startsWith(`${prefix}/`)) { + return prefix; + } + } + return ""; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/route-info-path-extractor.js +var import_path_to_regexp3, RouteInfoPathExtractor; +var init_route_info_path_extractor = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/route-info-path-extractor.js"() { + init_common(); + import_path_to_regexp3 = __toESM(require_dist2(), 1); + init_legacy_route_converter(); + init_utils(); + init_route_path_factory(); + init_utils2(); + init_internal(); + RouteInfoPathExtractor = class { + static { + __name(this, "RouteInfoPathExtractor"); + } + applicationConfig; + routePathFactory; + prefixPath; + excludedGlobalPrefixRoutes; + versioningConfig; + constructor(applicationConfig) { + this.applicationConfig = applicationConfig; + this.routePathFactory = new RoutePathFactory(applicationConfig); + this.prefixPath = stripEndSlash(addLeadingSlash(this.applicationConfig.getGlobalPrefix())); + this.excludedGlobalPrefixRoutes = this.applicationConfig.getGlobalPrefixOptions().exclude; + this.versioningConfig = this.applicationConfig.getVersioning(); + } + extractPathsFrom({ path, method, version = this.getVersionOfUnversionedRoutes() }) { + const versionPaths = this.extractVersionPathFrom(version); + if (this.isAWildcard(path)) { + const wildcardVersionPaths = versionPaths.includes("") ? [] : versionPaths; + const entries = wildcardVersionPaths.length > 0 ? wildcardVersionPaths.map((versionPath) => [ + this.prefixPath + versionPath + "$", + this.prefixPath + versionPath + addLeadingSlash(path) + ]).flat() : this.prefixPath ? [this.prefixPath + "$", this.prefixPath + addLeadingSlash(path)] : [addLeadingSlash(path)]; + return Array.isArray(this.excludedGlobalPrefixRoutes) ? [ + ...entries, + ...this.excludedGlobalPrefixRoutes.flatMap((route) => this.getPathsOfExcludedRoute(route)).flatMap((excludedPath) => versionPaths.length > 0 ? versionPaths.map((v) => v + excludedPath) : [excludedPath]) + ] : entries; + } + return this.extractNonWildcardPathsFrom({ path, method, version }); + } + /** + * Returns the routes excluded from the global prefix that the route covers + * without being excluded itself: the router serves them without the + * prefix, out of the reach of the paths the route is mounted on. These are + * the excluded routes without parameters or wildcards that the route + * matches, such as "users/me" for "users/:id" (or a `GET` exclusion for a + * route of every method), and the root route of a controller at the + * route's own path, which an exclusion ending in an optional segment such + * as "reports/{*path}" takes out of the prefix (see + * `isExcludedWithTrailingSlash()`). + */ + extractExcludedRoutesCoveredBy({ path, method, version }) { + if (!Array.isArray(this.excludedGlobalPrefixRoutes) || this.isAWildcard(path) || isRouteExcluded(this.excludedGlobalPrefixRoutes, path, method)) { + return []; + } + let routeRegex; + try { + routeRegex = (0, import_path_to_regexp3.pathToRegexp)(LegacyRouteConverter.tryConvert(addLeadingSlash(path), { logs: false })).regexp; + } catch { + return []; + } + return this.excludedGlobalPrefixRoutes.flatMap((excludedRoute) => { + const excludedPath = addLeadingSlash(excludedRoute.path); + const excludedMethod = isRequestMethodAll(excludedRoute.requestMethod) ? method : excludedRoute.requestMethod; + if (!(isRequestMethodAll(method) || method === excludedMethod)) { + return []; + } + const coveredPath = isStaticPath(excludedPath) && routeRegex.test(excludedPath) ? excludedPath : this.isExcludedWithTrailingSlash(excludedRoute, path) ? stripEndSlash(addLeadingSlash(path)) + "/" : void 0; + if (!coveredPath) { + return []; + } + const routeInfo = { + path: coveredPath, + method: excludedMethod + }; + if (version) { + routeInfo.version = version; + } + return [routeInfo]; + }); + } + /** + * Returns the paths the router serves a route excluded from the global + * prefix at: those of its pattern and, for a pattern ending in an optional + * segment such as "reports/{*path}", the parent path ("/reports") (see + * `isExcludedWithTrailingSlash()`). + */ + getPathsOfExcludedRoute(route) { + const excludedPath = addLeadingSlash(route.path); + const parentPath = excludedPath.slice(0, excludedPath.lastIndexOf("/")); + return this.isExcludedWithTrailingSlash(route, parentPath) ? [excludedPath, parentPath] : [excludedPath]; + } + /** + * Tells whether the exclusion takes a route at the path out of the global + * prefix only through a trailing slash: the router tests the root route of + * a controller with one ("/reports/"), which an exclusion ending in an + * optional segment matches ("reports/{*path}"), and serves it at + * "/reports", which the exclusion does not match. + */ + isExcludedWithTrailingSlash({ pathRegex }, path) { + const pathWithoutSlash = stripEndSlash(addLeadingSlash(path)); + return pathWithoutSlash !== "" && pathRegex.test(pathWithoutSlash + "/") && !pathRegex.test(pathWithoutSlash); + } + getVersioningOptions() { + return this.versioningConfig; + } + extractPathFrom(route) { + if (this.isAWildcard(route.path) && !route.version) { + return [addLeadingSlash(route.path)]; + } + return this.extractNonWildcardPathsFrom(route); + } + isAWildcard(path) { + const isSimpleWildcard = ["*", "/*", "/*/", "(.*)", "/(.*)"]; + if (isSimpleWildcard.includes(path)) { + return true; + } + const wildcardRegexp = /^\/\{.*\}.*|^\/\*.*$/; + return wildcardRegexp.test(path); + } + extractNonWildcardPathsFrom({ path, method, version }) { + const versionPaths = this.extractVersionPathFrom(version); + if (Array.isArray(this.excludedGlobalPrefixRoutes) && isRouteExcluded(this.excludedGlobalPrefixRoutes, path, method)) { + if (!versionPaths.length) { + return [addLeadingSlash(path)]; + } + return versionPaths.map((versionPath) => versionPath + addLeadingSlash(path)); + } + if (!versionPaths.length) { + return [this.prefixPath + addLeadingSlash(path)]; + } + return versionPaths.map((versionPath) => this.prefixPath + versionPath + addLeadingSlash(path)); + } + /** + * Returns the versions a route given without a version (e.g. + * `forRoutes('cats')`) may be served under: no version, as for a + * version-neutral controller, and the default version, under which + * controllers without a version are served. + */ + getVersionOfUnversionedRoutes() { + if (this.versioningConfig?.type !== VersioningType.URI) { + return; + } + const { defaultVersion } = this.versioningConfig; + if (!defaultVersion) { + return; + } + const versions = /* @__PURE__ */ new Set([ + VERSION_NEUTRAL + ]); + if (Array.isArray(defaultVersion)) { + defaultVersion.forEach((version) => versions.add(version)); + } else { + versions.add(defaultVersion); + } + return [...versions]; + } + extractVersionPathFrom(versionValue) { + if (!versionValue || this.versioningConfig?.type !== VersioningType.URI) + return []; + const versionPrefix = this.routePathFactory.getVersionPrefix(this.versioningConfig); + const toVersionPath = /* @__PURE__ */ __name((version) => version === VERSION_NEUTRAL ? "" : addLeadingSlash(versionPrefix + version), "toVersionPath"); + if (Array.isArray(versionValue)) { + return versionValue.map(toVersionPath); + } + return [toVersionPath(versionValue)]; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/paths-explorer.js +var PathsExplorer; +var init_paths_explorer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/paths-explorer.js"() { + init_internal(); + PathsExplorer = class { + static { + __name(this, "PathsExplorer"); + } + metadataScanner; + constructor(metadataScanner) { + this.metadataScanner = metadataScanner; + } + scanForPaths(instance, prototype) { + const instancePrototype = isUndefined(prototype) ? Object.getPrototypeOf(instance) : prototype; + return this.metadataScanner.getAllMethodNames(instancePrototype).reduce((acc, method) => { + const route = this.exploreMethodMetadata(instance, instancePrototype, method); + if (route) { + acc.push(route); + } + return acc; + }, []); + } + exploreMethodMetadata(instance, prototype, methodName) { + const instanceCallback = instance[methodName]; + const prototypeCallback = prototype[methodName]; + const routePath = Reflect.getMetadata(PATH_METADATA, prototypeCallback); + if (isUndefined(routePath)) { + return null; + } + const requestMethod = Reflect.getMetadata(METHOD_METADATA, prototypeCallback); + const version = Reflect.getMetadata(VERSION_METADATA, prototypeCallback); + const path = isString(routePath) ? [addLeadingSlash(routePath)] : routePath.map((p) => addLeadingSlash(p)); + return { + path, + requestMethod, + targetCallback: instanceCallback, + methodName, + version + }; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/routes-mapper.js +var RoutesMapper; +var init_routes_mapper = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/routes-mapper.js"() { + init_metadata_scanner(); + init_paths_explorer(); + init_internal(); + RoutesMapper = class { + static { + __name(this, "RoutesMapper"); + } + container; + applicationConfig; + pathsExplorer; + constructor(container, applicationConfig) { + this.container = container; + this.applicationConfig = applicationConfig; + this.pathsExplorer = new PathsExplorer(new MetadataScanner()); + } + mapRouteToRouteInfo(controllerOrRoute) { + if (isString(controllerOrRoute)) { + return this.getRouteInfoFromPath(controllerOrRoute); + } + const routePathOrPaths = this.getRoutePath(controllerOrRoute); + if (this.isRouteInfo(routePathOrPaths, controllerOrRoute)) { + return this.getRouteInfoFromObject(controllerOrRoute); + } + return this.getRouteInfoFromController(controllerOrRoute, routePathOrPaths); + } + getRouteInfoFromPath(routePath) { + const defaultRequestMethod = -1; + return [ + { + path: addLeadingSlash(routePath), + method: defaultRequestMethod + } + ]; + } + getRouteInfoFromObject(routeInfoObject) { + const routeInfo = { + path: addLeadingSlash(routeInfoObject.path), + method: routeInfoObject.method + }; + if (routeInfoObject.version) { + routeInfo.version = routeInfoObject.version; + } + return [routeInfo]; + } + getRouteInfoFromController(controller, routePath) { + const controllerPaths = this.pathsExplorer.scanForPaths(Object.create(controller), controller.prototype); + const controllerVersion = this.getVersionMetadata(controller); + const versioningConfig = this.applicationConfig.getVersioning(); + const modulePaths = this.getModulePathsOfController(controller); + const concatPaths = /* @__PURE__ */ __name((acc, currentValue) => acc.concat(currentValue), "concatPaths"); + const toRouteInfo2 = /* @__PURE__ */ __name((item, prefix, modulePath) => item.path?.flatMap((p) => { + const endpointPath = modulePath + stripEndSlash(this.normalizeGlobalPath(prefix)) + addLeadingSlash(p); + const routeInfo = { + path: endpointPath, + method: item.requestMethod + }; + const version = item.version ?? controllerVersion; + if (version && versioningConfig) { + if (typeof version !== "string" && Array.isArray(version)) { + return version.map((v) => ({ + ...routeInfo, + version: v + })); + } + routeInfo.version = version; + } + return routeInfo; + }), "toRouteInfo"); + return [].concat(routePath).flatMap((routePath2) => modulePaths.map((modulePath) => controllerPaths.map((item) => toRouteInfo2(item, routePath2, modulePath)).reduce(concatPaths, []))).reduce(concatPaths, []); + } + isRouteInfo(path, objectOrClass) { + return isUndefined(path); + } + normalizeGlobalPath(path) { + const prefix = addLeadingSlash(path); + return prefix === "/" ? "" : prefix; + } + getRoutePath(route) { + return Reflect.getMetadata(PATH_METADATA, route); + } + /** + * Returns the paths the controller is served under: the router registers it + * once for each module that declares it, under the path of that module. + */ + getModulePathsOfController(metatype) { + const modulePaths = this.getHostModulesOfController(metatype).map((moduleRef) => stripEndSlash(this.getModulePath(moduleRef.metatype) ?? "")); + return modulePaths.length > 0 ? [...new Set(modulePaths)] : [""]; + } + getHostModulesOfController(metatype) { + if (!metatype) { + return []; + } + const modulesContainer = this.container.getModules(); + return Array.from(modulesContainer.values()).filter(({ controllers }) => controllers.has(metatype)); + } + getModulePath(metatype) { + if (!metatype) { + return; + } + const modulesContainer = this.container.getModules(); + const modulePath = Reflect.getMetadata(MODULE_PATH + modulesContainer.applicationId, metatype); + return modulePath ?? Reflect.getMetadata(MODULE_PATH, metatype); + } + getVersionMetadata(metatype) { + const versioningConfig = this.applicationConfig.getVersioning(); + if (versioningConfig) { + return Reflect.getMetadata(VERSION_METADATA, metatype) ?? versioningConfig.defaultVersion; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/middleware-module.js +var MiddlewareModule; +var init_middleware_module = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/middleware/middleware-module.js"() { + init_common(); + init_invalid_middleware_exception(); + init_runtime_exception(); + init_context_id_factory(); + init_execution_context_host(); + init_constants3(); + init_request_constants(); + init_router_exception_filters(); + init_router_proxy(); + init_utils(); + init_builder(); + init_resolver(); + init_route_info_path_extractor(); + init_routes_mapper(); + init_common(); + init_internal(); + MiddlewareModule = class _MiddlewareModule { + static { + __name(this, "MiddlewareModule"); + } + routerProxy = new RouterProxy(); + logger = new Logger(_MiddlewareModule.name); + injector; + routerExceptionFilter; + routesMapper; + resolver; + container; + httpAdapter; + graphInspector; + appOptions; + routeInfoPathExtractor; + async register(middlewareContainer, container, config, injector, httpAdapter, graphInspector, options) { + this.appOptions = options; + const appRef = container.getHttpAdapterRef(); + this.routerExceptionFilter = new RouterExceptionFilters(container, config, appRef); + this.routesMapper = new RoutesMapper(container, config); + this.resolver = new MiddlewareResolver(middlewareContainer, injector); + this.routeInfoPathExtractor = new RouteInfoPathExtractor(config); + this.injector = injector; + this.container = container; + this.httpAdapter = httpAdapter; + this.graphInspector = graphInspector; + const modules = container.getModules(); + await this.resolveMiddleware(middlewareContainer, modules); + } + async resolveMiddleware(middlewareContainer, modules) { + const moduleEntries = [...modules.entries()]; + const loadMiddlewareConfiguration = /* @__PURE__ */ __name(async ([moduleName, moduleRef]) => { + await this.loadConfiguration(middlewareContainer, moduleRef, moduleName); + await this.resolver.resolveInstances(moduleRef, moduleName); + }, "loadMiddlewareConfiguration"); + await Promise.all(moduleEntries.map(loadMiddlewareConfiguration)); + } + async loadConfiguration(middlewareContainer, moduleRef, moduleKey) { + const { instance } = moduleRef; + if (!instance.configure) { + return; + } + const middlewareBuilder = new MiddlewareBuilder(this.routesMapper, this.httpAdapter, this.routeInfoPathExtractor); + try { + await instance.configure(middlewareBuilder); + } catch (err) { + if (!this.appOptions.preview) { + throw err; + } + const warningMessage = `Warning! "${moduleRef.name}" module exposes a "configure" method that throws an exception in the preview mode (possibly due to missing dependencies). Note: you can ignore this message, just be aware that some of those conditional middlewares will not be reflected in your graph.`; + this.logger.warn(warningMessage); + } + if (!(middlewareBuilder instanceof MiddlewareBuilder)) { + return; + } + const config = middlewareBuilder.build(); + middlewareContainer.insertConfig(config, moduleKey); + } + async registerMiddleware(middlewareContainer, applicationRef) { + const configs = middlewareContainer.getConfigurations(); + const registerAllConfigs = /* @__PURE__ */ __name(async (moduleKey, middlewareConfig) => { + for (const config of middlewareConfig) { + await this.registerMiddlewareConfig(middlewareContainer, config, moduleKey, applicationRef); + } + }, "registerAllConfigs"); + const entriesSortedByDistance = [...configs.entries()].sort(([moduleA], [moduleB]) => { + const moduleARef = this.container.getModuleByKey(moduleA); + const moduleBRef = this.container.getModuleByKey(moduleB); + const isModuleAGlobal = moduleARef.distance === Number.MAX_VALUE; + const isModuleBGlobal = moduleBRef.distance === Number.MAX_VALUE; + if (isModuleAGlobal && isModuleBGlobal) { + return 0; + } + if (isModuleAGlobal) { + return -1; + } + if (isModuleBGlobal) { + return 1; + } + return moduleARef.distance - moduleBRef.distance; + }); + for (const [moduleRef, moduleConfigurations] of entriesSortedByDistance) { + await registerAllConfigs(moduleRef, [...moduleConfigurations]); + } + } + async registerMiddlewareConfig(middlewareContainer, config, moduleKey, applicationRef) { + const { forRoutes } = config; + for (const routeInfo of forRoutes) { + await this.registerRouteMiddleware(middlewareContainer, routeInfo, config, moduleKey, applicationRef); + } + } + async registerRouteMiddleware(middlewareContainer, routeInfo, config, moduleKey, applicationRef) { + const middlewareCollection = [].concat(config.middleware); + const moduleRef = this.container.getModuleByKey(moduleKey); + for (const metatype of middlewareCollection) { + const collection = middlewareContainer.getMiddlewareCollection(moduleKey); + const instanceWrapper = collection.get(metatype); + if (isUndefined(instanceWrapper)) { + throw new RuntimeException(); + } + this.graphInspector.insertClassNode(moduleRef, instanceWrapper, "middleware"); + const middlewareDefinition = { + type: "middleware", + methodName: "use", + className: instanceWrapper.name, + classNodeId: instanceWrapper.id, + metadata: { + key: routeInfo.path, + path: routeInfo.path, + requestMethod: RequestMethod[routeInfo.method] ?? "ALL", + version: routeInfo.version + } + }; + this.graphInspector.insertEntrypointDefinition(middlewareDefinition, instanceWrapper.id); + await this.bindHandler(instanceWrapper, applicationRef, routeInfo, moduleRef, collection); + } + } + async bindHandler(wrapper, applicationRef, routeInfo, moduleRef, collection) { + const { instance, metatype } = wrapper; + if (isUndefined(instance?.use)) { + throw new InvalidMiddlewareException(metatype.name); + } + const isStatic = wrapper.isDependencyTreeStatic() && !wrapper.isTransient; + if (isStatic) { + const proxy = await this.createProxy(instance); + return this.registerHandler(applicationRef, routeInfo, proxy); + } + const isTreeDurable = wrapper.isDependencyTreeDurable(); + let exceptionsHandler; + await this.registerHandler(applicationRef, routeInfo, async (req, res, next) => { + try { + const contextId = this.getContextId(req, isTreeDurable); + const contextInstance = await this.injector.loadPerContext(instance, moduleRef, collection, contextId); + const proxy = await this.createProxy(contextInstance, contextId); + return proxy(req, res, next); + } catch (err) { + exceptionsHandler ??= this.routerExceptionFilter.create(instance, instance.use, void 0); + const host = new ExecutionContextHost([req, res, next]); + exceptionsHandler.next(err, host); + } + }); + } + async createProxy(instance, contextId = STATIC_CONTEXT) { + const exceptionsHandler = this.routerExceptionFilter.create(instance, instance.use, void 0, contextId); + const middleware = instance.use.bind(instance); + return this.routerProxy.createProxy(middleware, exceptionsHandler); + } + async registerHandler(applicationRef, routeInfo, proxy) { + const { method } = routeInfo; + const paths = this.routeInfoPathExtractor.extractPathsFrom(routeInfo); + const isMethodAll = isRequestMethodAll(method); + const requestMethod = RequestMethod[method]; + const router = await applicationRef.createMiddlewareFactory(method); + const middlewareFunction = isMethodAll ? proxy : (req, res, next) => { + const actualRequestMethod = applicationRef.getRequestMethod?.(req); + if (actualRequestMethod === requestMethod || actualRequestMethod === RequestMethod[RequestMethod.HEAD] && requestMethod === RequestMethod[RequestMethod.GET]) { + return proxy(req, res, next); + } + return next(); + }; + const handledRequests = /* @__PURE__ */ new WeakSet(); + const handler = /* @__PURE__ */ __name((req, res, next) => { + if (handledRequests.has(req)) { + return next(); + } + handledRequests.add(req); + return middlewareFunction(req, res, next); + }, "handler"); + const pathsToApplyMiddleware = paths.map((path) => path || "/").sort((a, b) => Number(b === "/") - Number(a === "/")); + pathsToApplyMiddleware.forEach((path) => router(path, handler)); + } + getContextId(request, isTreeDurable) { + const contextId = ContextIdFactory.getByRequest(request); + if (!request[REQUEST_CONTEXT_ID]) { + Object.defineProperty(request, REQUEST_CONTEXT_ID, { + value: contextId, + enumerable: false, + writable: false, + configurable: false + }); + const requestProviderValue = isTreeDurable ? contextId.payload : Object.assign(request, contextId.payload); + this.container.registerRequestProvider(requestProviderValue, contextId); + } + return contextId; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/utils/get-instances-grouped-by-hierarchy-level.js +function getInstancesGroupedByHierarchyLevel(...collections) { + const groupedByHierarchyLevel = /* @__PURE__ */ new Map(); + for (const collection of collections) { + for (const [_, wrapper] of collection) { + if (!wrapper.isDependencyTreeStatic()) { + continue; + } + const level = wrapper.hierarchyLevel; + if (!groupedByHierarchyLevel.has(level)) { + groupedByHierarchyLevel.set(level, []); + } + const byHierarchyLevelGroup = groupedByHierarchyLevel.get(level); + if (wrapper.isTransient) { + const staticTransientInstances = wrapper.getStaticTransientInstances().filter((i) => !!i).map((i) => i.instance); + byHierarchyLevelGroup.push(...staticTransientInstances); + continue; + } + if (wrapper.instance) { + byHierarchyLevelGroup.push(wrapper.instance); + } + } + } + return groupedByHierarchyLevel; +} +var init_get_instances_grouped_by_hierarchy_level = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/utils/get-instances-grouped-by-hierarchy-level.js"() { + __name(getInstancesGroupedByHierarchyLevel, "getInstancesGroupedByHierarchyLevel"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/utils/get-sorted-hierarchy-levels.js +function getSortedHierarchyLevels(groups, order = "ASC") { + const comparator = order === "ASC" ? (a, b) => a - b : (a, b) => b - a; + const levels = Array.from(groups.keys()).sort(comparator); + return levels; +} +var init_get_sorted_hierarchy_levels = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/utils/get-sorted-hierarchy-levels.js"() { + __name(getSortedHierarchyLevels, "getSortedHierarchyLevels"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js +function hasOnAppBootstrapHook(instance) { + return isFunction(instance.onApplicationBootstrap); +} +function callOperator(instances) { + return (0, import_iterare12.iterate)(instances).filter((instance) => !isNil(instance)).filter(hasOnAppBootstrapHook).map(async (instance) => instance.onApplicationBootstrap()).toArray(); +} +async function callModuleBootstrapHook(moduleRef) { + const providers = moduleRef.getNonAliasProviders(); + const [_, moduleClassHost] = providers.shift(); + const groupedInstances = getInstancesGroupedByHierarchyLevel(moduleRef.controllers, moduleRef.injectables, moduleRef.middlewares, providers); + const levels = getSortedHierarchyLevels(groupedInstances); + for (const level of levels) { + await Promise.all(callOperator(groupedInstances.get(level))); + } + const moduleClassInstance = moduleClassHost.instance; + if (moduleClassInstance && hasOnAppBootstrapHook(moduleClassInstance) && moduleClassHost.isDependencyTreeStatic()) { + await moduleClassInstance.onApplicationBootstrap(); + } +} +var import_iterare12; +var init_on_app_bootstrap_hook = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js"() { + init_internal(); + import_iterare12 = __toESM(require_lib(), 1); + init_get_instances_grouped_by_hierarchy_level(); + init_get_sorted_hierarchy_levels(); + __name(hasOnAppBootstrapHook, "hasOnAppBootstrapHook"); + __name(callOperator, "callOperator"); + __name(callModuleBootstrapHook, "callModuleBootstrapHook"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-app-shutdown.hook.js +function hasOnAppShutdownHook(instance) { + return isFunction(instance.onApplicationShutdown); +} +function callOperator2(instances, signal) { + return (0, import_iterare13.iterate)(instances).filter((instance) => !isNil(instance)).filter(hasOnAppShutdownHook).map(async (instance) => instance.onApplicationShutdown(signal)).toArray(); +} +async function callAppShutdownHook(moduleRef, signal) { + const providers = moduleRef.getNonAliasProviders(); + const [_, moduleClassHost] = providers.shift(); + const groupedInstances = getInstancesGroupedByHierarchyLevel(moduleRef.controllers, moduleRef.injectables, moduleRef.middlewares, providers); + const levels = getSortedHierarchyLevels(groupedInstances, "DESC"); + for (const level of levels) { + const results = await Promise.allSettled(callOperator2(groupedInstances.get(level), signal)); + results.filter((result) => result.status === "rejected").forEach((result) => Logger.error(result.reason, result.reason?.stack)); + } + const moduleClassInstance = moduleClassHost.instance; + if (moduleClassInstance && hasOnAppShutdownHook(moduleClassInstance) && moduleClassHost.isDependencyTreeStatic()) { + try { + await moduleClassInstance.onApplicationShutdown(signal); + } catch (err) { + Logger.error(err, err?.stack); + } + } +} +var import_iterare13; +var init_on_app_shutdown_hook = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-app-shutdown.hook.js"() { + init_common(); + init_internal(); + import_iterare13 = __toESM(require_lib(), 1); + init_get_instances_grouped_by_hierarchy_level(); + init_get_sorted_hierarchy_levels(); + __name(hasOnAppShutdownHook, "hasOnAppShutdownHook"); + __name(callOperator2, "callOperator"); + __name(callAppShutdownHook, "callAppShutdownHook"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-module-destroy.hook.js +function hasOnModuleDestroyHook(instance) { + return isFunction(instance.onModuleDestroy); +} +function callOperator3(instances) { + return (0, import_iterare14.iterate)(instances).filter((instance) => !isNil(instance)).filter(hasOnModuleDestroyHook).map(async (instance) => instance.onModuleDestroy()).toArray(); +} +async function callModuleDestroyHook(moduleRef) { + const providers = moduleRef.getNonAliasProviders(); + const [_, moduleClassHost] = providers.shift(); + const groupedInstances = getInstancesGroupedByHierarchyLevel(moduleRef.controllers, moduleRef.injectables, moduleRef.middlewares, providers); + const levels = getSortedHierarchyLevels(groupedInstances, "DESC"); + for (const level of levels) { + const results = await Promise.allSettled(callOperator3(groupedInstances.get(level))); + results.filter((result) => result.status === "rejected").forEach((result) => Logger.error(result.reason, result.reason?.stack)); + } + const moduleClassInstance = moduleClassHost.instance; + if (moduleClassInstance && hasOnModuleDestroyHook(moduleClassInstance) && moduleClassHost.isDependencyTreeStatic()) { + try { + await moduleClassInstance.onModuleDestroy(); + } catch (err) { + Logger.error(err, err?.stack); + } + } +} +var import_iterare14; +var init_on_module_destroy_hook = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-module-destroy.hook.js"() { + init_common(); + init_internal(); + import_iterare14 = __toESM(require_lib(), 1); + init_get_instances_grouped_by_hierarchy_level(); + init_get_sorted_hierarchy_levels(); + __name(hasOnModuleDestroyHook, "hasOnModuleDestroyHook"); + __name(callOperator3, "callOperator"); + __name(callModuleDestroyHook, "callModuleDestroyHook"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-module-init.hook.js +function hasOnModuleInitHook(instance) { + return isFunction(instance.onModuleInit); +} +function callOperator4(instances) { + return (0, import_iterare15.iterate)(instances).filter((instance) => !isNil(instance)).filter(hasOnModuleInitHook).map(async (instance) => instance.onModuleInit()).toArray(); +} +async function callModuleInitHook(moduleRef) { + const providers = moduleRef.getNonAliasProviders(); + const [_, moduleClassHost] = providers.shift(); + const groupedInstances = getInstancesGroupedByHierarchyLevel(moduleRef.controllers, moduleRef.injectables, moduleRef.middlewares, providers); + const levels = getSortedHierarchyLevels(groupedInstances); + for (const level of levels) { + await Promise.all(callOperator4(groupedInstances.get(level))); + } + const moduleClassInstance = moduleClassHost.instance; + if (moduleClassInstance && hasOnModuleInitHook(moduleClassInstance) && moduleClassHost.isDependencyTreeStatic()) { + await moduleClassInstance.onModuleInit(); + } +} +var import_iterare15; +var init_on_module_init_hook = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/on-module-init.hook.js"() { + init_internal(); + import_iterare15 = __toESM(require_lib(), 1); + init_get_instances_grouped_by_hierarchy_level(); + init_get_sorted_hierarchy_levels(); + __name(hasOnModuleInitHook, "hasOnModuleInitHook"); + __name(callOperator4, "callOperator"); + __name(callModuleInitHook, "callModuleInitHook"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/before-app-shutdown.hook.js +function hasBeforeApplicationShutdownHook(instance) { + return isFunction(instance.beforeApplicationShutdown); +} +function callOperator5(instances, signal) { + return (0, import_iterare16.iterate)(instances).filter((instance) => !isNil(instance)).filter(hasBeforeApplicationShutdownHook).map(async (instance) => instance.beforeApplicationShutdown(signal)).toArray(); +} +async function callBeforeAppShutdownHook(moduleRef, signal) { + const providers = moduleRef.getNonAliasProviders(); + const [_, moduleClassHost] = providers.shift(); + const groupedInstances = getInstancesGroupedByHierarchyLevel(moduleRef.controllers, moduleRef.injectables, moduleRef.middlewares, providers); + const levels = getSortedHierarchyLevels(groupedInstances, "DESC"); + for (const level of levels) { + const results = await Promise.allSettled(callOperator5(groupedInstances.get(level), signal)); + results.filter((result) => result.status === "rejected").forEach((result) => Logger.error(result.reason, result.reason?.stack)); + } + const moduleClassInstance = moduleClassHost.instance; + if (moduleClassInstance && hasBeforeApplicationShutdownHook(moduleClassInstance) && moduleClassHost.isDependencyTreeStatic()) { + try { + await moduleClassInstance.beforeApplicationShutdown(signal); + } catch (err) { + Logger.error(err, err?.stack); + } + } +} +var import_iterare16; +var init_before_app_shutdown_hook = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/before-app-shutdown.hook.js"() { + init_common(); + init_internal(); + import_iterare16 = __toESM(require_lib(), 1); + init_get_instances_grouped_by_hierarchy_level(); + init_get_sorted_hierarchy_levels(); + __name(hasBeforeApplicationShutdownHook, "hasBeforeApplicationShutdownHook"); + __name(callOperator5, "callOperator"); + __name(callBeforeAppShutdownHook, "callBeforeAppShutdownHook"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/index.js +var init_hooks = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/hooks/index.js"() { + init_on_app_bootstrap_hook(); + init_on_app_shutdown_hook(); + init_on_module_destroy_hook(); + init_on_module_init_hook(); + init_before_app_shutdown_hook(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/nest-application-context.js +var NestApplicationContext; +var init_nest_application_context = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/nest-application-context.js"() { + init_common(); + init_constants2(); + init_exceptions2(); + init_context_id_factory(); + init_hooks(); + init_abstract_instance_resolver(); + init_injector(); + init_instance_links_host(); + init_internal(); + NestApplicationContext = class _NestApplicationContext extends AbstractInstanceResolver { + static { + __name(this, "NestApplicationContext"); + } + container; + appOptions; + contextModule; + scope; + isInitialized = false; + injector; + logger = new Logger(_NestApplicationContext.name, { + timestamp: true + }); + shouldFlushLogsOnOverride = false; + shutdownCleanupRefs = /* @__PURE__ */ new Map(); + moduleCompiler; + shutdownPromise; + receivedSignal = false; + _instanceLinksHost; + _moduleRefsForHooksByDistance; + initializationPromise; + get instanceLinksHost() { + if (!this._instanceLinksHost) { + this._instanceLinksHost = new InstanceLinksHost(this.container); + } + return this._instanceLinksHost; + } + constructor(container, appOptions = {}, contextModule = null, scope = new Array()) { + super(); + this.container = container; + this.appOptions = appOptions; + this.contextModule = contextModule; + this.scope = scope; + this.injector = new Injector(); + this.moduleCompiler = container.getModuleCompiler(); + if (this.appOptions.preview) { + this.printInPreviewModeWarning(); + } + } + selectContextModule() { + const modules = this.container.getModules().values(); + this.contextModule = modules.next().value; + } + /** + * Allows navigating through the modules tree, for example, to pull out a specific instance from the selected module. + * @returns {INestApplicationContext} + */ + select(moduleType, selectOptions) { + const modulesContainer = this.container.getModules(); + const contextModuleCtor = this.contextModule.metatype; + const scope = this.scope.concat(contextModuleCtor); + const moduleTokenFactory = this.container.getModuleTokenFactory(); + const { type, dynamicMetadata } = this.moduleCompiler.extractMetadata(moduleType); + const token = dynamicMetadata ? moduleTokenFactory.createForDynamic(type, dynamicMetadata, moduleType) : moduleTokenFactory.createForStatic(type, moduleType); + const selectedModule = modulesContainer.get(token); + if (!selectedModule) { + throw new UnknownModuleException(type.name); + } + const options = typeof selectOptions?.abortOnError !== "undefined" ? { + ...this.appOptions, + ...selectOptions + } : this.appOptions; + return new _NestApplicationContext(this.container, options, selectedModule, scope); + } + /** + * Retrieves an instance (or a list of instances) of either injectable or controller, otherwise, throws exception. + * @returns {TResult | Array} + */ + get(typeOrToken, options = { strict: false }) { + return !(options && options.strict) ? this.find(typeOrToken, options) : this.find(typeOrToken, { + moduleId: this.contextModule?.id, + each: options.each + }); + } + /** + * Resolves transient or request-scoped instance (or a list of instances) of either injectable or controller, otherwise, throws exception. + * @returns {Promise>} + */ + resolve(typeOrToken, contextId = createContextId(), options = { strict: false }) { + return this.resolvePerContext(typeOrToken, this.contextModule, contextId, options); + } + /** + * Registers the request/context object for a given context ID (DI container sub-tree). + * @returns {void} + */ + registerRequestByContextId(request, contextId) { + this.container.registerRequestProvider(request, contextId); + } + /** + * Initializes the Nest application. + * Calls the Nest lifecycle events. + * + * @returns {Promise} The NestApplicationContext instance as Promise + */ + async init() { + if (this.isInitialized) { + return this; + } + this.initializationPromise = this.callInitHook().then(() => this.callBootstrapHook()); + try { + await this.initializationPromise; + } catch (err) { + this.flushLogsIfAutoFlushEnabled(); + throw err; + } + this.isInitialized = true; + return this; + } + /** + * Terminates the application + * @returns {Promise} + */ + async close(signal) { + await this.shutdown(signal); + } + /** + * Runs the shutdown sequence, at most once per cycle. Callers that arrive + * while a shutdown is already in flight - a process signal delivered during + * an explicit `close()`, or the other way round - await the very same + * promise instead of starting a second, concurrent teardown. + * + * @param {string} [signal] The system signal that triggered the shutdown + * @returns {Promise} + */ + shutdown(signal) { + this.shutdownPromise ??= this.runShutdownSequence(signal).finally(() => { + this.shutdownPromise = void 0; + }); + return this.shutdownPromise; + } + async runShutdownSequence(signal) { + await this.initializationPromise?.catch(() => void 0); + await this.prepareClose(); + await this.callDestroyHook(); + await this.callBeforeShutdownHook(signal); + await this.dispose(); + await this.callShutdownHook(signal); + this.unsubscribeFromProcessSignals(); + } + /** + * Sets custom logger service. + * Flushes buffered logs if auto flush is on. + * @returns {void} + */ + useLogger(logger3) { + Logger.overrideLogger(logger3); + if (this.shouldFlushLogsOnOverride) { + this.flushLogs(); + } + } + /** + * Prints buffered logs and detaches buffer. + * @returns {void} + */ + flushLogs() { + Logger.flush(); + } + flushLogsIfAutoFlushEnabled() { + if (this.appOptions?.autoFlushLogs ?? true) { + this.flushLogs(); + } + } + /** + * Define that it must flush logs right after defining a custom logger. + */ + flushLogsOnOverride() { + this.shouldFlushLogsOnOverride = true; + } + /** + * Enables the usage of shutdown hooks. Will call the + * `onApplicationShutdown` function of a provider if the + * process receives a shutdown signal. + * + * Repeated calls are idempotent per signal. Shutdown hooks can be + * re-enabled after the application context has been closed. + * + * @param {ShutdownSignal[]} [signals=[]] The system signals it should listen to + * @param {ShutdownHooksOptions} [options={}] Options for configuring shutdown hooks behavior + * + * @returns {this} The Nest application context instance + */ + enableShutdownHooks(signals = [], options = {}) { + if (!signals || isEmptyArray(signals)) { + signals = Object.values(ShutdownSignal); + } + signals = Array.from(new Set(signals.map((signal) => signal.toString().toUpperCase().trim()))).filter((signal) => !this.shutdownCleanupRefs.has(signal)); + this.listenToShutdownSignals(signals, options); + return this; + } + async prepareClose() { + return Promise.resolve(); + } + async dispose() { + return Promise.resolve(); + } + /** + * Listens to shutdown signals by listening to + * process events + * + * @param {string[]} signals The system signals it should listen to + * @param {ShutdownHooksOptions} options Options for configuring shutdown hooks behavior + */ + listenToShutdownSignals(signals, options = {}) { + const cleanup = /* @__PURE__ */ __name(async (signal) => { + try { + if (this.receivedSignal) { + return; + } + this.receivedSignal = true; + await this.shutdown(signal).finally(() => { + this.receivedSignal = false; + }); + if (options.useProcessExit) { + process.exit(0); + } else { + process.kill(process.pid, signal); + } + } catch (err) { + Logger.error(MESSAGES.ERROR_DURING_SHUTDOWN, err?.stack, _NestApplicationContext.name); + process.exit(1); + } + }, "cleanup"); + signals.forEach((signal) => { + this.shutdownCleanupRefs.set(signal, cleanup); + process.on(signal, cleanup); + }); + } + /** + * Unsubscribes from shutdown signals (process events) + */ + unsubscribeFromProcessSignals() { + this.shutdownCleanupRefs.forEach((cleanup, signal) => { + process.removeListener(signal, cleanup); + }); + this.shutdownCleanupRefs.clear(); + } + /** + * Calls the `onModuleInit` function on the registered + * modules and its children. + */ + async callInitHook() { + const modulesSortedByDistance = this.getModulesToTriggerHooksOn(); + for (const module of modulesSortedByDistance) { + await callModuleInitHook(module); + } + } + /** + * Calls the `onModuleDestroy` function on the registered + * modules and its children. + */ + async callDestroyHook() { + const modulesSortedByDistance = [ + ...this.getModulesToTriggerHooksOn() + ].reverse(); + for (const module of modulesSortedByDistance) { + await callModuleDestroyHook(module); + } + } + /** + * Calls the `onApplicationBootstrap` function on the registered + * modules and its children. + */ + async callBootstrapHook() { + const modulesSortedByDistance = this.getModulesToTriggerHooksOn(); + for (const module of modulesSortedByDistance) { + await callModuleBootstrapHook(module); + } + } + /** + * Calls the `onApplicationShutdown` function on the registered + * modules and children. + */ + async callShutdownHook(signal) { + const modulesSortedByDistance = [ + ...this.getModulesToTriggerHooksOn() + ].reverse(); + for (const module of modulesSortedByDistance) { + await callAppShutdownHook(module, signal); + } + } + /** + * Calls the `beforeApplicationShutdown` function on the registered + * modules and children. + */ + async callBeforeShutdownHook(signal) { + const modulesSortedByDistance = [ + ...this.getModulesToTriggerHooksOn() + ].reverse(); + for (const module of modulesSortedByDistance) { + await callBeforeAppShutdownHook(module, signal); + } + } + assertNotInPreviewMode(methodName) { + if (this.appOptions.preview) { + const error = `Calling the "${methodName}" in the preview mode is not supported.`; + this.logger.error(error); + throw new Error(error); + } + } + getModulesToTriggerHooksOn() { + if (this._moduleRefsForHooksByDistance) { + return this._moduleRefsForHooksByDistance; + } + const modulesContainer = this.container.getModules(); + const compareFn = /* @__PURE__ */ __name((a, b) => b.distance - a.distance, "compareFn"); + const modulesSortedByDistance = Array.from(modulesContainer.values()).sort(compareFn); + this._moduleRefsForHooksByDistance = this.appOptions?.preview ? modulesSortedByDistance.filter((moduleRef) => moduleRef.initOnPreview) : modulesSortedByDistance; + return this._moduleRefsForHooksByDistance; + } + printInPreviewModeWarning() { + this.logger.warn("------------------------------------------------"); + this.logger.warn("Application is running in the PREVIEW mode!"); + this.logger.warn("Providers/controllers will not be instantiated."); + this.logger.warn("------------------------------------------------"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/messages.js +var MODULE_INIT_MESSAGE, ROUTE_MAPPED_MESSAGE, VERSIONED_ROUTE_MAPPED_MESSAGE, CONTROLLER_MAPPING_MESSAGE, VERSIONED_CONTROLLER_MAPPING_MESSAGE; +var init_messages2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/messages.js"() { + init_common(); + MODULE_INIT_MESSAGE = /* @__PURE__ */ __name((text, module) => `${module} dependencies initialized`, "MODULE_INIT_MESSAGE"); + ROUTE_MAPPED_MESSAGE = /* @__PURE__ */ __name((path, method) => `Mapped {${path}, ${RequestMethod[method]}} route`, "ROUTE_MAPPED_MESSAGE"); + VERSIONED_ROUTE_MAPPED_MESSAGE = /* @__PURE__ */ __name((path, method, version) => { + const controllerVersions = Array.isArray(version) ? version : [version]; + const versions = controllerVersions.map((version2) => version2 === VERSION_NEUTRAL ? "Neutral" : version2).join(","); + return `Mapped {${path}, ${RequestMethod[method]}} (version: ${versions}) route`; + }, "VERSIONED_ROUTE_MAPPED_MESSAGE"); + CONTROLLER_MAPPING_MESSAGE = /* @__PURE__ */ __name((name, path) => `${name} {${path}}:`, "CONTROLLER_MAPPING_MESSAGE"); + VERSIONED_CONTROLLER_MAPPING_MESSAGE = /* @__PURE__ */ __name((name, path, version) => { + const controllerVersions = Array.isArray(version) ? version : [version]; + const versions = controllerVersions.map((version2) => version2 === VERSION_NEUTRAL ? "Neutral" : version2).join(","); + return `${name} {${path}} (version: ${versions}):`; + }, "VERSIONED_CONTROLLER_MAPPING_MESSAGE"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-request-mapping.exception.js +var UnknownRequestMappingException; +var init_unknown_request_mapping_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/unknown-request-mapping.exception.js"() { + init_runtime_exception(); + init_messages(); + UnknownRequestMappingException = class extends RuntimeException { + static { + __name(this, "UnknownRequestMappingException"); + } + constructor(metatype) { + super(UNKNOWN_REQUEST_MAPPING(metatype)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/router-method-factory.js +var REQUEST_METHOD_MAP, RouterMethodFactory; +var init_router_method_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/router-method-factory.js"() { + init_common(); + REQUEST_METHOD_MAP = { + [RequestMethod.GET]: "get", + [RequestMethod.POST]: "post", + [RequestMethod.PUT]: "put", + [RequestMethod.DELETE]: "delete", + [RequestMethod.PATCH]: "patch", + [RequestMethod.ALL]: "all", + [RequestMethod.OPTIONS]: "options", + [RequestMethod.HEAD]: "head", + [RequestMethod.SEARCH]: "search", + [RequestMethod.PROPFIND]: "propfind", + [RequestMethod.PROPPATCH]: "proppatch", + [RequestMethod.MKCOL]: "mkcol", + [RequestMethod.COPY]: "copy", + [RequestMethod.MOVE]: "move", + [RequestMethod.LOCK]: "lock", + [RequestMethod.UNLOCK]: "unlock", + [RequestMethod.QUERY]: "query" + }; + RouterMethodFactory = class { + static { + __name(this, "RouterMethodFactory"); + } + get(target, requestMethod) { + const methodName = REQUEST_METHOD_MAP[requestMethod]; + const method = target[methodName]; + if (!method) { + return target.use; + } + return method; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/parse-cookie-header.js +function parseCookieHeader(header) { + const cookies = /* @__PURE__ */ Object.create(null); + if (!header) { + return cookies; + } + const source = Array.isArray(header) ? header.join("; ") : String(header); + for (const pair of source.split(";")) { + const eqIndex = pair.indexOf("="); + if (eqIndex === -1) { + continue; + } + const name = trimWhitespace(pair.slice(0, eqIndex)); + if (!name || name in cookies) { + continue; + } + let value = trimWhitespace(pair.slice(eqIndex + 1)); + if (value.length >= 2 && value[0] === '"' && value.endsWith('"')) { + value = value.slice(1, -1); + } + cookies[name] = safeDecode(value); + } + return cookies; +} +function trimWhitespace(input) { + let start = 0; + let end = input.length; + while (start < end && isWhitespace(input.charCodeAt(start))) { + start++; + } + while (end > start && isWhitespace(input.charCodeAt(end - 1))) { + end--; + } + return input.slice(start, end); +} +function isWhitespace(charCode) { + return charCode === 32 || charCode === 9; +} +function safeDecode(value) { + if (!value.includes("%")) { + return value; + } + try { + return decodeURIComponent(value); + } catch { + return value; + } +} +var init_parse_cookie_header = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/parse-cookie-header.js"() { + __name(parseCookieHeader, "parseCookieHeader"); + __name(trimWhitespace, "trimWhitespace"); + __name(isWhitespace, "isWhitespace"); + __name(safeDecode, "safeDecode"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/request-cookies.js +function getParsedCookieHeader(req) { + let cookies = parsedCookiesCache.get(req); + if (!cookies) { + cookies = parseCookieHeader(req.headers?.cookie); + parsedCookiesCache.set(req, cookies); + } + return cookies; +} +function getRequestCookies(req) { + if (isObject(req.cookies)) { + return req.cookies; + } + return getParsedCookieHeader(req); +} +function getRequestCookie(req, name) { + const cookies = getRequestCookies(req); + return Object.prototype.hasOwnProperty.call(cookies, name) ? cookies[name] : void 0; +} +function getRequestSignedCookies(req, signer) { + const signedCookies = /* @__PURE__ */ Object.create(null); + if (signer) { + const cookies = getParsedCookieHeader(req); + for (const name of Object.keys(cookies)) { + const value = signer.unsign(cookies[name]); + if (value !== void 0) { + signedCookies[name] = value; + } + } + return signedCookies; + } + if (isObject(req.signedCookies)) { + for (const [name, value] of Object.entries(req.signedCookies)) { + if (value !== false) { + signedCookies[name] = value; + } + } + return signedCookies; + } + throw new Error('Cannot read signed cookies: no cookie secret is configured. Pass "cookies: { secret }" to NestFactory.create().'); +} +function getRequestSignedCookie(req, name, signer) { + if (signer) { + const value = getParsedCookieHeader(req)[name]; + return value === void 0 ? void 0 : signer.unsign(value); + } + return getRequestSignedCookies(req, signer)[name]; +} +var parsedCookiesCache; +var init_request_cookies = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/cookies/request-cookies.js"() { + init_internal(); + init_parse_cookie_header(); + parsedCookiesCache = /* @__PURE__ */ new WeakMap(); + __name(getParsedCookieHeader, "getParsedCookieHeader"); + __name(getRequestCookies, "getRequestCookies"); + __name(getRequestCookie, "getRequestCookie"); + __name(getRequestSignedCookies, "getRequestSignedCookies"); + __name(getRequestSignedCookie, "getRequestSignedCookie"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-params-factory.js +var getBodyProperty, RouteParamsFactory; +var init_route_params_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-params-factory.js"() { + init_internal(); + init_request_cookies(); + getBodyProperty = /* @__PURE__ */ __name((body, key) => isObject(body) && !Array.isArray(body) && !ArrayBuffer.isView(body) || !isNil(body) && Object.hasOwn(Object(body), key) ? body[key] : void 0, "getBodyProperty"); + RouteParamsFactory = class { + static { + __name(this, "RouteParamsFactory"); + } + config; + constructor(config) { + this.config = config; + } + exchangeKeyForValue(key, data, { req, res, next }) { + switch (key) { + case RouteParamtypes.NEXT: + return next; + case RouteParamtypes.REQUEST: + return req; + case RouteParamtypes.RESPONSE: + return res; + case RouteParamtypes.BODY: + return data && req.body ? getBodyProperty(req.body, data) : req.body; + case RouteParamtypes.RAW_BODY: + return req.rawBody; + case RouteParamtypes.PARAM: + return data ? req.params[data] : req.params; + case RouteParamtypes.HOST: + const hosts = req.hosts || {}; + return data ? hosts[data] : hosts; + case RouteParamtypes.QUERY: + return data ? req.query[data] : req.query; + case RouteParamtypes.HEADERS: + return data ? req.headers[data.toLowerCase()] : req.headers; + case RouteParamtypes.SESSION: + return req.session; + case RouteParamtypes.FILE: + return req[data || "file"]; + case RouteParamtypes.FILES: + return req.files; + case RouteParamtypes.IP: + return req.ip; + case RouteParamtypes.COOKIES: + return data ? getRequestCookie(req, data) : getRequestCookies(req); + case RouteParamtypes.SIGNED_COOKIES: { + const signer = this.config?.getCookieSigner(); + return data ? getRequestSignedCookie(req, data, signer) : getRequestSignedCookies(req, signer); + } + default: + return null; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/rejected-by-pipes.js +function markRejectedByPipes(request) { + if (typeof request === "object" && request !== null) { + rejectedRequests.add(request); + } +} +function isRejectedByPipes(request) { + return rejectedRequests.has(request); +} +var rejectedRequests; +var init_rejected_by_pipes = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/rejected-by-pipes.js"() { + rejectedRequests = /* @__PURE__ */ new WeakSet(); + __name(markRejectedByPipes, "markRejectedByPipes"); + __name(isRejectedByPipes, "isRejectedByPipes"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/sse-stream.js +import { Transform } from "stream"; +function serializeSseLines(value, prefix) { + return value.split(/\r\n|\r|\n/).map((line) => `${prefix}${line} +`).join(""); +} +function toDataString(data) { + if (isObject(data)) { + return toDataString(JSON.stringify(data)); + } + return serializeSseLines(data, "data: "); +} +function toCommentString(comment) { + return serializeSseLines(comment, ": "); +} +function omitHeaders(headers, names) { + const omitted = new Set(names.map((name) => name.toLowerCase())); + return Object.fromEntries(Object.entries(headers ?? {}).filter(([name]) => !omitted.has(name.toLowerCase()))); +} +function formatMessage(message) { + const sanitize = /* @__PURE__ */ __name((val) => String(val).replace(/[\r\n]/g, ""), "sanitize"); + let data = message.type ? `event: ${sanitize(message.type)} +` : ""; + data += !isNil(message.id) ? `id: ${sanitize(message.id)} +` : ""; + data += !isNil(message.retry) ? `retry: ${sanitize(message.retry)} +` : ""; + data += !isNil(message.comment) ? toCommentString(message.comment) : ""; + data += !isNil(message.data) ? toDataString(message.data) : ""; + return data + "\n"; +} +function isCommentOnly(message) { + return !isNil(message.comment) && isUndefined(message.data) && isUndefined(message.type) && isUndefined(message.retry); +} +var SseStream; +var init_sse_stream = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/sse-stream.js"() { + init_internal(); + __name(serializeSseLines, "serializeSseLines"); + __name(toDataString, "toDataString"); + __name(toCommentString, "toCommentString"); + __name(omitHeaders, "omitHeaders"); + __name(formatMessage, "formatMessage"); + __name(isCommentOnly, "isCommentOnly"); + SseStream = class extends Transform { + static { + __name(this, "SseStream"); + } + lastEventId = null; + _headersCommitted = false; + _destination = null; + _statusCode; + _additionalHeaders; + _isHttp2; + constructor(req) { + super({ objectMode: true }); + this._isHttp2 = (req?.httpVersionMajor ?? 1) > 1; + if (req && req.socket && !this._isHttp2) { + req.socket.setKeepAlive(true); + req.socket.setNoDelay(true); + req.socket.setTimeout(0); + } + } + get headersCommitted() { + return this._headersCommitted; + } + pipe(destination, options) { + this._destination = destination; + this._statusCode = options?.statusCode; + this._additionalHeaders = options?.additionalHeaders; + return super.pipe(destination, options); + } + /** + * Writes SSE headers to the destination if they have not been sent yet. + * The sources are read here, not in `pipe()`, to pick up the values that + * interceptors and handlers set after piping. + */ + commitHeaders() { + if (this._headersCommitted || !this._destination || this._destination.writableEnded) { + return; + } + const statusCode = this.readStatusCode(); + const additionalHeaders = this.readAdditionalHeaders(); + if (this._destination.writeHead) { + const sseHeaders = { + // See https://github.com/dunglas/mercure/blob/main/subscribe.go#L347-L362 + "Content-Type": "text/event-stream", + // Hop-by-hop header, forbidden in HTTP/2 + // https://www.rfc-editor.org/rfc/rfc9113#section-8.2.2 + ...!this._isHttp2 && { Connection: "keep-alive" }, + // Disable cache, even for old browsers and proxies + "Cache-Control": "private, no-cache, no-store, must-revalidate, max-age=0, no-transform", + Pragma: "no-cache", + Expires: "0", + // NGINX support https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/#x-accel-buffering + "X-Accel-Buffering": "no" + }; + this._destination.writeHead(statusCode, { + ...omitHeaders(additionalHeaders, Object.keys(sseHeaders)), + ...sseHeaders + }); + this._destination.flushHeaders?.(); + } + this._headersCommitted = true; + this._destination.write("\n"); + } + readStatusCode() { + const source = this._statusCode; + return (isFunction(source) ? source() : source) ?? 200; + } + readAdditionalHeaders() { + const source = this._additionalHeaders; + return isFunction(source) ? source() : source; + } + _transform(message, encoding, callback) { + this.commitHeaders(); + this.push(isString(message) ? message : formatMessage(message)); + callback(); + } + /** + * Calls `.write` but handles the drain if needed + */ + writeMessage(message, cb) { + let event = message; + if (isNil(message.id) && !isCommentOnly(message)) { + this.lastEventId++; + event = { + type: message.type, + id: this.lastEventId.toString(), + retry: message.retry, + comment: message.comment, + data: message.data + }; + } + let chunk; + try { + chunk = formatMessage(event); + } catch (err) { + process.nextTick(cb, err); + return; + } + if (!this.write(chunk, "utf-8")) { + this.once("drain", cb); + } else { + process.nextTick(cb); + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-response-controller.js +function getDataLength(message) { + return (isString(message.data) ? message.data.length : 0) + (isString(message.comment) ? message.comment.length : 0); +} +var import_rxjs7, import_operators2, DEFAULT_MAX_PENDING_DATA_LENGTH, RouterResponseController; +var init_router_response_controller = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-response-controller.js"() { + init_common(); + import_rxjs7 = __toESM(require_cjs(), 1); + import_operators2 = __toESM(require_operators(), 1); + init_constants2(); + init_base_exception_filter(); + init_sse_stream(); + init_internal(); + DEFAULT_MAX_PENDING_DATA_LENGTH = 4 * 1024 * 1024; + __name(getDataLength, "getDataLength"); + RouterResponseController = class _RouterResponseController { + static { + __name(this, "RouterResponseController"); + } + applicationRef; + logger = new Logger(_RouterResponseController.name); + exceptionFilter = new BaseExceptionFilter(); + constructor(applicationRef) { + this.applicationRef = applicationRef; + } + async apply(result, response, httpStatusCode) { + return this.applicationRef.reply(response, result, httpStatusCode); + } + async redirect(resultOrDeferred, response, redirectResponse) { + const result = await this.transformToResult(resultOrDeferred); + const statusCode = result && result.statusCode ? result.statusCode : redirectResponse.statusCode ? redirectResponse.statusCode : HttpStatus.FOUND; + const url = result && result.url ? result.url : redirectResponse.url; + return this.applicationRef.redirect(response, statusCode, url); + } + async render(resultOrDeferred, response, template) { + const result = await this.transformToResult(resultOrDeferred); + return this.applicationRef.render(response, template, result); + } + async transformToResult(resultOrDeferred) { + if ((0, import_rxjs7.isObservable)(resultOrDeferred)) { + return (0, import_rxjs7.lastValueFrom)(resultOrDeferred); + } + return resultOrDeferred; + } + getStatusByMethod(requestMethod) { + switch (requestMethod) { + case RequestMethod.POST: + return HttpStatus.CREATED; + default: + return HttpStatus.OK; + } + } + setHeaders(response, headers) { + headers.forEach(({ name, value }) => this.applicationRef.setHeader(response, name, typeof value === "function" ? value() : value)); + } + setStatus(response, statusCode) { + this.applicationRef.status(response, statusCode); + } + async sse(result, response, request, options) { + if (response.writableEnded) { + this.getOrCreateAbortController(request).abort(); + Promise.resolve(result).catch((err) => this.logger.error(err)); + return; + } + const stream = new SseStream(request); + const abortController = this.getOrCreateAbortController(request); + return new Promise((resolve, reject) => { + let settled = false; + let subscription; + const disconnectSource = request.socket ?? response; + const finalize = /* @__PURE__ */ __name(() => { + disconnectSource.removeListener("close", onClose); + abortController.abort(); + }, "finalize"); + const endStream = /* @__PURE__ */ __name(() => { + if (!stream.writableEnded) { + stream.end(); + } + }, "endStream"); + const fail2 = /* @__PURE__ */ __name((err) => { + settled = true; + finalize(); + subscription?.unsubscribe(); + stream.unpipe(response); + endStream(); + reject(err); + }, "fail"); + const commitHeaders = /* @__PURE__ */ __name(() => { + try { + stream.commitHeaders(); + return true; + } catch (err) { + fail2(err); + return false; + } + }, "commitHeaders"); + const onClose = /* @__PURE__ */ __name(() => { + if (settled) { + return; + } + settled = true; + finalize(); + subscription?.unsubscribe(); + endStream(); + response.end(); + resolve(); + }, "onClose"); + disconnectSource.once("close", onClose); + if (disconnectSource.destroyed) { + onClose(); + } + Promise.resolve(result).then((observableResult) => { + if (settled) { + return; + } + this.assertObservable(observableResult); + stream.pipe(response, { + additionalHeaders: options?.additionalHeaders, + statusCode: options?.statusCode ?? (() => response.statusCode) + }); + let pendingDataLength = 0; + const maxPendingDataLength = options?.maxPendingDataLength ?? DEFAULT_MAX_PENDING_DATA_LENGTH; + subscription = observableResult.pipe( + (0, import_operators2.map)((message) => { + const event = isObject(message) ? message : { data: message }; + return isNil(event.data) || isString(event.data) ? event : { + type: event.type, + id: event.id, + retry: event.retry, + comment: event.comment, + data: JSON.stringify(event.data) + }; + }), + // Events wait in concatMap() while the client is not reading. + // Past a limit, the connection is dropped as if the client had + // disconnected, rather than holding events for a client that may + // never read them. An EventSource then reconnects, and sends the + // id of the last event it received. A limit of 0, like Infinity, + // keeps every event. + (0, import_operators2.tap)((message) => { + pendingDataLength += getDataLength(message); + if (maxPendingDataLength && pendingDataLength > maxPendingDataLength && stream.writableNeedDrain) { + this.logger.warn(`The client is not reading its events: ${pendingDataLength} character(s) of event data are queued for it, which exceeds the maximum allowed ${maxPendingDataLength}`); + response.destroy?.(); + onClose(); + } + }), + (0, import_operators2.concatMap)((message) => new Promise((resolve2, reject2) => stream.writeMessage(message, (err) => { + pendingDataLength -= getDataLength(message); + return err ? reject2(err) : resolve2(); + }))), + (0, import_operators2.catchError)((err) => { + if (!stream.headersCommitted) { + throw err; + } + const data = err instanceof HttpException || this.exceptionFilter.isHttpError(err) ? err.message : MESSAGES.UNKNOWN_EXCEPTION_MESSAGE; + if (!(err instanceof IntrinsicException)) { + this.logger.error(err); + } + stream.writeMessage({ type: "error", data }, (writeError) => { + if (writeError) { + this.logger.error(writeError); + } + }); + return import_rxjs7.EMPTY; + }) + ).subscribe({ + error: /* @__PURE__ */ __name((err) => { + if (settled) { + return; + } + fail2(err); + }, "error"), + complete: /* @__PURE__ */ __name(() => { + if (settled) { + return; + } + if (!commitHeaders()) { + return; + } + settled = true; + finalize(); + endStream(); + resolve(); + }, "complete") + }); + if (settled) { + subscription.unsubscribe(); + } + setTimeout(() => { + if (settled || !commitHeaders()) { + return; + } + if (request.method === "HEAD") { + settled = true; + finalize(); + subscription?.unsubscribe(); + endStream(); + resolve(); + } + }, 0); + }).catch((err) => { + if (settled) { + return; + } + fail2(err); + }); + }); + } + assertObservable(value) { + if (!(0, import_rxjs7.isObservable)(value)) { + throw new ReferenceError("You must return an Observable stream to use Server-Sent Events (SSE)."); + } + } + getOrCreateAbortController(request) { + const carrier = request; + if (!carrier[SSE_ABORT_CONTROLLER]) { + carrier[SSE_ABORT_CONTROLLER] = new AbortController(); + } + return carrier[SSE_ABORT_CONTROLLER]; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-execution-context.js +var import_rxjs8, import_operators3, isThenable2, RouterExecutionContext; +var init_router_execution_context = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-execution-context.js"() { + init_common(); + init_internal(); + import_rxjs8 = __toESM(require_cjs(), 1); + import_operators3 = __toESM(require_operators(), 1); + init_guards(); + init_context_utils(); + init_destroy_streamable_file(); + init_handler_metadata_storage(); + init_constants3(); + init_rejected_by_pipes(); + init_router_response_controller(); + isThenable2 = /* @__PURE__ */ __name((value) => value !== null && (typeof value === "object" || typeof value === "function") && typeof value.then === "function", "isThenable"); + RouterExecutionContext = class { + static { + __name(this, "RouterExecutionContext"); + } + paramsFactory; + pipesContextCreator; + pipesConsumer; + guardsContextCreator; + guardsConsumer; + interceptorsContextCreator; + interceptorsConsumer; + applicationRef; + handlerMetadataStorage = new HandlerMetadataStorage(); + contextUtils = new ContextUtils(); + responseController; + constructor(paramsFactory, pipesContextCreator, pipesConsumer, guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, applicationRef) { + this.paramsFactory = paramsFactory; + this.pipesContextCreator = pipesContextCreator; + this.pipesConsumer = pipesConsumer; + this.guardsContextCreator = guardsContextCreator; + this.guardsConsumer = guardsConsumer; + this.interceptorsContextCreator = interceptorsContextCreator; + this.interceptorsConsumer = interceptorsConsumer; + this.applicationRef = applicationRef; + this.responseController = new RouterResponseController(applicationRef); + } + create(instance, callback, methodName, moduleKey, requestMethod, contextId = STATIC_CONTEXT, inquirerId) { + const contextType = "http"; + const { argsLength, fnHandleResponse, isSseHandler, paramtypes, getParamsMetadata, httpStatusCode, responseHeaders, hasCustomHeaders } = this.getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType); + const paramsOptions = this.contextUtils.mergeParamsMetatypes(getParamsMetadata(moduleKey, contextId, inquirerId), paramtypes); + const pipes = this.pipesContextCreator.create(instance, callback, moduleKey, contextId, inquirerId); + const guards = this.guardsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId); + const interceptors = this.interceptorsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId); + const fnCanActivate = this.createGuardsFn(guards, instance, callback, contextType); + const fnApplyPipes = this.createPipesFn(pipes, paramsOptions); + const handler = /* @__PURE__ */ __name((args, req, res, next, handlerObservable$, handlerFiles = []) => async () => { + try { + const pendingPipes = fnApplyPipes && fnApplyPipes(args, req, res, next); + pendingPipes && await pendingPipes; + } catch (err) { + markRejectedByPipes(req); + throw err; + } + const result = callback.apply(instance, args); + if (!handlerObservable$) { + return result; + } + this.notifyIfObservable(result, handlerObservable$); + return (0, import_rxjs8.isObservable)(result) ? result.pipe((0, import_operators3.tap)((value) => value instanceof StreamableFile && handlerFiles.push(value))) : result; + }, "handler"); + return async (req, res, next) => { + const args = this.contextUtils.createNullArray(argsLength); + fnCanActivate && await fnCanActivate([req, res, next]); + this.responseController.setStatus(res, httpStatusCode); + hasCustomHeaders && this.responseController.setHeaders(res, responseHeaders); + if (isSseHandler) { + this.attachSseAbortSignal(req); + } + const handlerObservable$ = isSseHandler || isEmptyArray(interceptors) ? void 0 : new import_rxjs8.ReplaySubject(1); + const handlerFiles = []; + const resultOrDeferred = this.interceptorsConsumer.intercept(interceptors, [req, res, next], instance, callback, handler(args, req, res, next, handlerObservable$, handlerFiles), contextType); + const result = isSseHandler ? resultOrDeferred : await resultOrDeferred; + await fnHandleResponse(result, res, req, handlerObservable$, handlerFiles); + }; + } + getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType) { + const cacheMetadata = this.handlerMetadataStorage.get(instance, methodName); + if (cacheMetadata) { + return cacheMetadata; + } + const metadata = this.contextUtils.reflectCallbackMetadata(instance, methodName, ROUTE_ARGS_METADATA) || {}; + const keys = Object.keys(metadata); + const argsLength = this.contextUtils.getArgumentsLength(keys, metadata); + const paramtypes = this.contextUtils.reflectCallbackParamtypes(instance, methodName); + const contextFactory = this.contextUtils.getContextFactory(contextType, instance, callback); + const getParamsMetadata = /* @__PURE__ */ __name((moduleKey2, contextId = STATIC_CONTEXT, inquirerId) => this.exchangeKeysForValues(keys, metadata, moduleKey2, contextId, inquirerId, contextFactory), "getParamsMetadata"); + const paramsMetadata = getParamsMetadata(moduleKey); + const isResponseHandled = this.isResponseHandled(instance, methodName, paramsMetadata); + const httpRedirectResponse = this.reflectRedirect(callback); + const fnHandleResponse = this.createHandleResponseFn(callback, isResponseHandled, httpRedirectResponse); + const isSseHandler = !!this.reflectSse(callback); + const httpCode = this.reflectHttpStatusCode(callback); + const httpStatusCode = httpCode ?? this.responseController.getStatusByMethod(requestMethod); + const responseHeaders = this.reflectResponseHeaders(callback); + const hasCustomHeaders = !isEmptyArray(responseHeaders); + const handlerMetadata = { + argsLength, + fnHandleResponse, + isSseHandler, + paramtypes, + getParamsMetadata, + httpStatusCode, + hasCustomHeaders, + responseHeaders + }; + this.handlerMetadataStorage.set(instance, methodName, handlerMetadata); + return handlerMetadata; + } + reflectRedirect(callback) { + return Reflect.getMetadata(REDIRECT_METADATA, callback); + } + reflectHttpStatusCode(callback) { + return Reflect.getMetadata(HTTP_CODE_METADATA, callback); + } + reflectRenderTemplate(callback) { + return Reflect.getMetadata(RENDER_METADATA, callback); + } + reflectResponseHeaders(callback) { + return Reflect.getMetadata(HEADERS_METADATA, callback) || []; + } + reflectSse(callback) { + return Reflect.getMetadata(SSE_METADATA, callback); + } + reflectSseOptions(callback) { + return Reflect.getMetadata(SSE_OPTIONS_METADATA, callback); + } + exchangeKeysForValues(keys, metadata, moduleContext, contextId = STATIC_CONTEXT, inquirerId, contextFactory) { + this.pipesContextCreator.setModuleContext(moduleContext); + return keys.map((key) => { + const { index, data, pipes: pipesCollection, schema } = metadata[key]; + const pipes = this.pipesContextCreator.createConcreteContext(pipesCollection, contextId, inquirerId); + const type = this.contextUtils.mapParamType(key); + if (key.includes(CUSTOM_ROUTE_ARGS_METADATA)) { + const { factory } = metadata[key]; + const customExtractValue = this.contextUtils.getCustomFactory(factory, data, contextFactory); + return { + index, + extractValue: customExtractValue, + type, + data, + pipes, + schema + }; + } + const numericType = Number(type); + const extractValue = /* @__PURE__ */ __name((req, res, next) => this.paramsFactory.exchangeKeyForValue(numericType, data, { + req, + res, + next + }), "extractValue"); + return { index, extractValue, type: numericType, data, pipes, schema }; + }); + } + async getParamValue(value, metadata, pipes) { + if (!isEmptyArray(pipes)) { + return this.pipesConsumer.apply(value, metadata, pipes); + } + return value; + } + isPipeable(type) { + return type === RouteParamtypes.BODY || type === RouteParamtypes.RAW_BODY || type === RouteParamtypes.QUERY || type === RouteParamtypes.PARAM || type === RouteParamtypes.FILE || type === RouteParamtypes.FILES || type === RouteParamtypes.COOKIES || type === RouteParamtypes.SIGNED_COOKIES || isString(type); + } + createGuardsFn(guards, instance, callback, contextType) { + const canActivateFn = /* @__PURE__ */ __name(async (args) => { + const canActivate = await this.guardsConsumer.tryActivate(guards, args, instance, callback, contextType); + if (!canActivate) { + throw new ForbiddenException(FORBIDDEN_MESSAGE); + } + }, "canActivateFn"); + return guards.length ? canActivateFn : null; + } + createPipesFn(pipes, paramsOptions) { + if (!paramsOptions.length) { + return null; + } + const params = paramsOptions.map(({ index, extractValue, type, data, metatype, pipes: paramPipes, schema }) => { + const isPipeable = this.isPipeable(type); + return { + index, + extractValue, + isPipeable, + metadata: { metatype, type, data, schema }, + pipes: isPipeable ? pipes.concat(paramPipes) : [] + }; + }); + const applyPipes = /* @__PURE__ */ __name(async (args, param, value) => { + args[param.index] = await this.getParamValue(value, param.metadata, param.pipes); + }, "applyPipes"); + return (args, req, res, next) => { + let pending; + for (let i = 0; i < params.length; i++) { + const param = params[i]; + try { + const value = param.extractValue(req, res, next); + if (param.isPipeable && (param.pipes.length > 0 || isThenable2(value))) { + (pending ??= []).push(applyPipes(args, param, value)); + } else { + args[param.index] = value; + } + } catch (err) { + (pending ??= []).push(Promise.reject(err)); + } + } + return pending && Promise.all(pending); + }; + } + createHandleResponseFn(callback, isResponseHandled, redirectResponse, httpStatusCode) { + const renderTemplate = this.reflectRenderTemplate(callback); + if (renderTemplate) { + return async (result, res) => { + return await this.responseController.render(result, res, renderTemplate); + }; + } + if (redirectResponse && isString(redirectResponse.url)) { + return async (result, res) => { + await this.responseController.redirect(result, res, redirectResponse); + }; + } + const isSseHandler = !!this.reflectSse(callback); + if (isSseHandler) { + const maxPendingDataLength = this.reflectSseOptions(callback)?.maxPendingDataLength; + return async (result, res, req) => { + const rawResponse = res.raw ?? res; + await this.responseController.sse(result, rawResponse, req.raw || req, { + additionalHeaders: /* @__PURE__ */ __name(() => res.getHeaders?.(), "additionalHeaders"), + statusCode: /* @__PURE__ */ __name(() => res.statusCode ?? rawResponse.statusCode, "statusCode"), + maxPendingDataLength + }); + }; + } + return async (result, res, req, handlerObservable$, handlerFiles = []) => { + let disconnected = false; + if ((0, import_rxjs8.isObservable)(result)) { + const disconnect$ = (handlerObservable$ ?? (0, import_rxjs8.of)(null)).pipe((0, import_operators3.switchMap)(() => this.fromClientDisconnect(req, res)), (0, import_operators3.tap)(() => disconnected = true)); + result = result.pipe((0, import_operators3.takeUntil)(disconnect$)); + } + try { + result = await this.responseController.transformToResult(result); + } catch (err) { + if (!disconnected || !(err instanceof import_rxjs8.EmptyError)) { + throw err; + } + } + if (disconnected) { + [result, ...handlerFiles].forEach(destroyStreamableFile); + return res; + } + if (!isResponseHandled) { + try { + await this.responseController.apply(result, res, httpStatusCode); + } catch (err) { + destroyStreamableFile(result); + throw err; + } + } + return res; + }; + } + notifyIfObservable(result, handlerObservable$) { + if ((0, import_rxjs8.isObservable)(result)) { + handlerObservable$.next(); + } else if (result instanceof Promise) { + result.then((value) => (0, import_rxjs8.isObservable)(value) && handlerObservable$.next(), () => void 0); + } + } + /** + * Emits once the client connection closes, or right away if it already has. + * Watches the request socket, like `RouterResponseController#sse()` does. + */ + fromClientDisconnect(req, res) { + return new import_rxjs8.Observable((subscriber) => { + const source = (req?.raw ?? req)?.socket ?? res?.raw ?? res; + if (typeof source?.once !== "function") { + return; + } + if (source.destroyed) { + subscriber.next(); + return; + } + const onClose = /* @__PURE__ */ __name(() => subscriber.next(), "onClose"); + source.once("close", onClose); + return () => source.removeListener("close", onClose); + }); + } + isResponseHandled(instance, methodName, paramsMetadata) { + const hasResponseOrNextDecorator = paramsMetadata.some(({ type }) => type === RouteParamtypes.RESPONSE || type === RouteParamtypes.NEXT); + const isPassthroughEnabled = this.contextUtils.reflectPassthrough(instance, methodName); + return hasResponseOrNextDecorator && !isPassthroughEnabled; + } + attachSseAbortSignal(req) { + const carrier = req; + if (!carrier[SSE_ABORT_CONTROLLER]) { + carrier[SSE_ABORT_CONTROLLER] = new AbortController(); + } + if (carrier.raw && !carrier.raw[SSE_ABORT_CONTROLLER]) { + carrier.raw[SSE_ABORT_CONTROLLER] = carrier[SSE_ABORT_CONTROLLER]; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-explorer.js +var import_path_to_regexp4, RouterExplorer; +var init_router_explorer = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-explorer.js"() { + import_path_to_regexp4 = __toESM(require_dist2(), 1); + init_unknown_request_mapping_exception(); + init_guards(); + init_context_id_factory(); + init_execution_context_host(); + init_messages2(); + init_router_method_factory(); + init_constants3(); + init_interceptors(); + init_pipes(); + init_paths_explorer(); + init_request_constants(); + init_route_params_factory(); + init_router_execution_context(); + init_internal(); + init_common(); + RouterExplorer = class _RouterExplorer { + static { + __name(this, "RouterExplorer"); + } + container; + injector; + routerProxy; + exceptionsFilter; + routePathFactory; + graphInspector; + executionContextCreator; + pathsExplorer; + routerMethodFactory = new RouterMethodFactory(); + logger = new Logger(_RouterExplorer.name, { + timestamp: true + }); + constructor(metadataScanner, container, injector, routerProxy, exceptionsFilter, config, routePathFactory, graphInspector) { + this.container = container; + this.injector = injector; + this.routerProxy = routerProxy; + this.exceptionsFilter = exceptionsFilter; + this.routePathFactory = routePathFactory; + this.graphInspector = graphInspector; + this.pathsExplorer = new PathsExplorer(metadataScanner); + const routeParamsFactory = new RouteParamsFactory(config); + const pipesContextCreator = new PipesContextCreator(container, config); + const pipesConsumer = new PipesConsumer(); + const guardsContextCreator = new GuardsContextCreator(container, config); + const guardsConsumer = new GuardsConsumer(); + const interceptorsContextCreator = new InterceptorsContextCreator(container, config); + const interceptorsConsumer = new InterceptorsConsumer(); + this.executionContextCreator = new RouterExecutionContext(routeParamsFactory, pipesContextCreator, pipesConsumer, guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, container.getHttpAdapterRef()); + } + explore(instanceWrapper, moduleKey, httpAdapterRef, host, routePathMetadata, options = {}) { + const { instance } = instanceWrapper; + const routerPaths = this.pathsExplorer.scanForPaths(instance); + this.applyPathsToRouterProxy(httpAdapterRef, routerPaths, instanceWrapper, moduleKey, routePathMetadata, host, options); + } + extractRouterPath(metatype) { + const path = Reflect.getMetadata(PATH_METADATA, metatype); + if (isUndefined(path)) { + throw new UnknownRequestMappingException(metatype); + } + if (Array.isArray(path)) { + return path.map((p) => addLeadingSlash(p)); + } + return [addLeadingSlash(path)]; + } + applyPathsToRouterProxy(router, routeDefinitions, instanceWrapper, moduleKey, routePathMetadata, host, options = {}) { + (routeDefinitions || []).forEach((routeDefinition) => { + const { version: methodVersion } = routeDefinition; + routePathMetadata.methodVersion = methodVersion; + this.applyCallbackToRouter(router, routeDefinition, instanceWrapper, moduleKey, routePathMetadata, host, options); + }); + } + applyCallbackToRouter(router, routeDefinition, instanceWrapper, moduleKey, routePathMetadata, host, options = {}) { + const { onRouteResolved, deferRegistration = false } = options; + const { path: paths, requestMethod, targetCallback, methodName } = routeDefinition; + const { instance } = instanceWrapper; + const routerMethodRef = this.routerMethodFactory.get(router, requestMethod).bind(router); + const isRequestScoped = !instanceWrapper.isDependencyTreeStatic(); + const proxy = isRequestScoped ? this.createRequestScopedHandler(instanceWrapper, requestMethod, this.container.getModuleByKey(moduleKey), moduleKey, methodName) : this.createCallbackProxy(instance, targetCallback, methodName, moduleKey, requestMethod, STATIC_CONTEXT, instanceWrapper.id); + const isVersioned = (routePathMetadata.methodVersion || routePathMetadata.controllerVersion) && routePathMetadata.versioningOptions; + let routeHandler = this.applyHostFilter(host, proxy); + paths.forEach((path) => { + if (isVersioned && routePathMetadata.versioningOptions.type !== VersioningType.URI) { + routeHandler = this.applyVersionFilter(router, routePathMetadata, routeHandler); + } + routePathMetadata.methodPath = path; + const pathsToRegister = this.routePathFactory.create(routePathMetadata, requestMethod); + pathsToRegister.forEach((path2) => { + const normalizedPath = router.normalizePath ? router.normalizePath(path2) : path2; + const entrypointDefinition = { + type: "http-endpoint", + methodName, + className: instanceWrapper.name, + classNodeId: instanceWrapper.id, + metadata: { + key: path2, + path: path2, + requestMethod: RequestMethod[requestMethod], + methodVersion: routePathMetadata.methodVersion, + controllerVersion: routePathMetadata.controllerVersion + } + }; + if (!deferRegistration) { + this.copyMetadataToCallback(targetCallback, routeHandler); + const httpAdapter = this.container.getHttpAdapterRef(); + const onRouteTriggered = httpAdapter.getOnRouteTriggered?.(); + let handler = routeHandler; + if (onRouteTriggered) { + handler = Object.assign((...args) => { + onRouteTriggered(requestMethod, path2); + return routeHandler(...args); + }, routeHandler); + this.copyMetadataToCallback(targetCallback, handler); + } + Object.defineProperty(handler, "name", { + configurable: true, + value: `${instanceWrapper.name}.${methodName}` + }); + routerMethodRef(normalizedPath, handler); + } + onRouteResolved?.({ + method: requestMethod, + path: normalizedPath, + rawPath: path2, + host, + version: routePathMetadata.methodVersion ?? routePathMetadata.controllerVersion, + methodVersion: routePathMetadata.methodVersion, + controllerVersion: routePathMetadata.controllerVersion, + handler: routeHandler, + targetCallback, + methodName, + instanceWrapper + }); + this.graphInspector.insertEntrypointDefinition(entrypointDefinition, instanceWrapper.id); + }); + const pathsToLog = this.routePathFactory.create({ + ...routePathMetadata, + versioningOptions: void 0 + }, requestMethod); + pathsToLog.forEach((path2) => { + if (isVersioned) { + const version = this.routePathFactory.getVersion(routePathMetadata); + this.logger.log(VERSIONED_ROUTE_MAPPED_MESSAGE(path2, requestMethod, version)); + } else { + this.logger.log(ROUTE_MAPPED_MESSAGE(path2, requestMethod)); + } + }); + }); + } + /** + * Registers a previously resolved route on the underlying HTTP adapter. + * Used when route registration has been deferred (e.g. when sorting + * routes by specificity) so the caller can choose the order in which + * routes are installed on the adapter. + */ + registerResolvedRoute(router, route) { + const routerMethodRef = this.routerMethodFactory.get(router, route.method).bind(router); + this.copyMetadataToCallback(route.targetCallback, route.handler); + const normalizedPath = route.path; + const rawPath = route.rawPath ?? route.path; + const httpAdapter = this.container.getHttpAdapterRef(); + const onRouteTriggered = httpAdapter.getOnRouteTriggered?.(); + if (onRouteTriggered) { + const handler = Object.assign((...args) => { + onRouteTriggered(route.method, rawPath); + return route.handler(...args); + }, route.handler); + this.copyMetadataToCallback(route.targetCallback, handler); + routerMethodRef(normalizedPath, handler); + } else { + routerMethodRef(normalizedPath, route.handler); + } + } + applyHostFilter(host, handler) { + if (!host) { + return handler; + } + const httpAdapterRef = this.container.getHttpAdapterRef(); + const hosts = Array.isArray(host) ? host : [host]; + const hostRegExps = hosts.map((host2) => { + if (typeof host2 === "string") { + try { + return (0, import_path_to_regexp4.pathToRegexp)(host2); + } catch (e) { + if (e instanceof TypeError) { + this.logger.error(`Unsupported host "${host2}" syntax. In past releases, ?, *, and + were used to denote optional or repeating path parameters. The latest version of "path-to-regexp" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with "/users", you should use /users/*path. Please see the migration guide for more information.`); + } + throw e; + } + } + return { regexp: host2, keys: [] }; + }); + const unsupportedFilteringMessage = Array.isArray(host) ? `HTTP adapter does not support filtering on hosts: ["${host.join('", "')}"]` : `HTTP adapter does not support filtering on host: "${host}"`; + let hasWarnedOfUnsupportedFiltering = false; + return (req, res, next) => { + req.hosts = {}; + const hostname = httpAdapterRef.getRequestHostname(req) || ""; + for (const exp of hostRegExps) { + const match = hostname.match(exp.regexp); + if (match) { + if (exp.keys.length > 0) { + exp.keys.forEach((key, i) => req.hosts[key.name] = match[i + 1]); + } else if (exp.regexp && match.groups) { + for (const groupName in match.groups) { + req.hosts[groupName] = match.groups[groupName]; + } + } + return handler(req, res, next); + } + } + if (!next) { + if (!hasWarnedOfUnsupportedFiltering) { + hasWarnedOfUnsupportedFiltering = true; + this.logger.warn(`${unsupportedFilteringMessage}. Requests for other hosts are answered with 404 instead of being passed on to other routes.`); + } + const method = httpAdapterRef.getRequestMethod(req); + const url = httpAdapterRef.getRequestUrl(req); + throw new NotFoundException(`Cannot ${method} ${url}`); + } + return next(); + }; + } + applyVersionFilter(router, routePathMetadata, handler) { + const version = this.routePathFactory.getVersion(routePathMetadata); + return router.applyVersionFilter(handler, version, routePathMetadata.versioningOptions); + } + createCallbackProxy(instance, callback, methodName, moduleRef, requestMethod, contextId = STATIC_CONTEXT, inquirerId) { + const executionContext = this.executionContextCreator.create(instance, callback, methodName, moduleRef, requestMethod, contextId, inquirerId); + const exceptionFilter = this.exceptionsFilter.create(instance, callback, moduleRef, contextId, inquirerId); + return this.routerProxy.createProxy(executionContext, exceptionFilter); + } + createRequestScopedHandler(instanceWrapper, requestMethod, moduleRef, moduleKey, methodName) { + const { instance } = instanceWrapper; + const collection = moduleRef.controllers; + const isTreeDurable = instanceWrapper.isDependencyTreeDurable(); + let exceptionFilter; + return async (req, res, next) => { + try { + const contextId = this.getContextId(req, isTreeDurable); + const contextInstance = await this.injector.loadPerContext(instance, moduleRef, collection, contextId); + await this.createCallbackProxy(contextInstance, contextInstance[methodName], methodName, moduleKey, requestMethod, contextId, instanceWrapper.id)(req, res, next); + } catch (err) { + exceptionFilter ??= this.exceptionsFilter.create(instance, instance[methodName], moduleKey); + const host = new ExecutionContextHost([req, res, next]); + exceptionFilter.next(err, host); + } + }; + } + getContextId(request, isTreeDurable) { + const contextId = ContextIdFactory.getByRequest(request); + if (!request[REQUEST_CONTEXT_ID]) { + Object.defineProperty(request, REQUEST_CONTEXT_ID, { + value: contextId, + enumerable: false, + writable: false, + configurable: false + }); + const requestProviderValue = isTreeDurable ? contextId.payload : Object.assign(request, contextId.payload); + this.container.registerRequestProvider(requestProviderValue, contextId); + } + return contextId; + } + copyMetadataToCallback(originalCallback, targetCallback) { + for (const key of Reflect.getMetadataKeys(originalCallback)) { + Reflect.defineMetadata(key, Reflect.getMetadata(key, originalCallback), targetCallback); + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/routes-resolver.js +var RoutesResolver; +var init_routes_resolver = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/routes-resolver.js"() { + init_common(); + init_internal(); + init_messages2(); + init_metadata_scanner(); + init_route_path_factory(); + init_router_exception_filters(); + init_router_explorer(); + init_router_proxy(); + RoutesResolver = class _RoutesResolver { + static { + __name(this, "RoutesResolver"); + } + container; + applicationConfig; + injector; + logger = new Logger(_RoutesResolver.name, { + timestamp: true + }); + routerProxy = new RouterProxy(); + routePathFactory; + routerExceptionsFilter; + routerExplorer; + constructor(container, applicationConfig, injector, graphInspector) { + this.container = container; + this.applicationConfig = applicationConfig; + this.injector = injector; + const httpAdapterRef = container.getHttpAdapterRef(); + this.routerExceptionsFilter = new RouterExceptionFilters(container, applicationConfig, httpAdapterRef); + this.routePathFactory = new RoutePathFactory(this.applicationConfig); + const metadataScanner = new MetadataScanner(); + this.routerExplorer = new RouterExplorer(metadataScanner, this.container, this.injector, this.routerProxy, this.routerExceptionsFilter, this.applicationConfig, this.routePathFactory, graphInspector); + } + resolve(applicationRef, globalPrefix, options = {}) { + const modules = this.container.getModules(); + modules.forEach(({ controllers, metatype }, moduleName) => { + const modulePath = this.getModulePathMetadata(metatype); + this.registerRouters(controllers, moduleName, globalPrefix, modulePath, applicationRef, options); + }); + } + registerResolvedRoute(applicationRef, route) { + this.routerExplorer.registerResolvedRoute(applicationRef, route); + } + registerRouters(routes, moduleName, globalPrefix, modulePath, applicationRef, options = {}) { + routes.forEach((instanceWrapper) => { + const { metatype } = instanceWrapper; + const host = this.getHostMetadata(metatype); + const routerPaths = this.routerExplorer.extractRouterPath(metatype); + const controllerVersion = this.getVersionMetadata(metatype); + const controllerName = metatype.name; + routerPaths.forEach((path) => { + const pathsToLog = this.routePathFactory.create({ + ctrlPath: path, + modulePath, + globalPrefix + }); + if (!controllerVersion) { + pathsToLog.forEach((path2) => { + const logMessage = CONTROLLER_MAPPING_MESSAGE(controllerName, path2); + this.logger.log(logMessage); + }); + } else { + pathsToLog.forEach((path2) => { + const logMessage = VERSIONED_CONTROLLER_MAPPING_MESSAGE(controllerName, path2, controllerVersion); + this.logger.log(logMessage); + }); + } + const versioningOptions = this.applicationConfig.getVersioning(); + const routePathMetadata = { + ctrlPath: path, + modulePath, + globalPrefix, + controllerVersion, + versioningOptions + }; + this.routerExplorer.explore(instanceWrapper, moduleName, applicationRef, host, routePathMetadata, options); + }); + }); + } + registerNotFoundHandler() { + const applicationRef = this.container.getHttpAdapterRef(); + const callback = /* @__PURE__ */ __name((req, res) => { + const method = applicationRef.getRequestMethod(req); + const url = applicationRef.getRequestUrl(req); + throw new NotFoundException(`Cannot ${method} ${url}`); + }, "callback"); + const handler = this.routerExceptionsFilter.create({}, callback, void 0); + const proxy = this.routerProxy.createProxy(callback, handler); + const prefix = this.applicationConfig.getGlobalPrefix(); + const excludedRoutes = this.routePathFactory.getExcludedRoutePaths(); + applicationRef.setNotFoundHandler && applicationRef.setNotFoundHandler(proxy, prefix, excludedRoutes); + } + registerExceptionHandler() { + const callback = /* @__PURE__ */ __name((err, req, res, next) => { + throw this.container.getHttpAdapterRef().mapException(err); + }, "callback"); + const handler = this.routerExceptionsFilter.create({}, callback, void 0); + const proxy = this.routerProxy.createExceptionLayerProxy(callback, handler); + const applicationRef = this.container.getHttpAdapterRef(); + const prefix = this.applicationConfig.getGlobalPrefix(); + applicationRef.setErrorHandler && applicationRef.setErrorHandler(proxy, prefix); + } + getModulePathMetadata(metatype) { + const modulesContainer = this.container.getModules(); + const modulePath = Reflect.getMetadata(MODULE_PATH + modulesContainer.applicationId, metatype); + return modulePath ?? Reflect.getMetadata(MODULE_PATH, metatype); + } + getHostMetadata(metatype) { + return Reflect.getMetadata(HOST_METADATA, metatype); + } + getVersionMetadata(metatype) { + const versioningConfig = this.applicationConfig.getVersioning(); + if (versioningConfig) { + return Reflect.getMetadata(VERSION_METADATA, metatype) ?? versioningConfig.defaultVersion; + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-conflict-detector.js +var RouteConflictDetector; +var init_route_conflict_detector = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-conflict-detector.js"() { + init_common(); + init_route_conflict_exception(); + init_messages(); + RouteConflictDetector = class _RouteConflictDetector { + static { + __name(this, "RouteConflictDetector"); + } + /** + * Strips the leading `:` / `*` marker (if present) and tags each + * segment as a literal, named param, or named wildcard. Supports both + * bare named wildcards (`*path`) and adapter-normalized path-to-regexp + * wildcard groups (`{*path}`). + */ + static tokenizePath(rawPath) { + const segments = []; + rawPath.split("/").filter((rawSegment) => rawSegment.length > 0).forEach((rawSegment) => { + if (rawSegment.startsWith("*")) { + segments.push({ kind: "wildcard", value: rawSegment.slice(1) }); + return; + } + if (rawSegment.startsWith("{*") && rawSegment.endsWith("}")) { + segments.push({ + kind: "wildcard", + value: rawSegment.slice(2, -1) + }); + return; + } + if (rawSegment.startsWith(":")) { + segments.push({ kind: "param", value: rawSegment.slice(1) }); + return; + } + segments.push({ kind: "literal", value: rawSegment }); + }); + return segments; + } + /** + * Decides whether two paths can match the same incoming request, given + * only their declared patterns (no host/method/version considered). + */ + static pathsCanOverlap(leftPath, rightPath) { + const leftSegments = _RouteConflictDetector.tokenizePath(leftPath); + const rightSegments = _RouteConflictDetector.tokenizePath(rightPath); + const leftEndsInWildcard = leftSegments[leftSegments.length - 1]?.kind === "wildcard"; + const rightEndsInWildcard = rightSegments[rightSegments.length - 1]?.kind === "wildcard"; + if (leftSegments.length !== rightSegments.length) { + const shorterEndsInWildcard = leftSegments.length < rightSegments.length ? leftEndsInWildcard : rightEndsInWildcard; + if (!shorterEndsInWildcard) { + return false; + } + } + const sharedLength = Math.min(leftSegments.length, rightSegments.length); + let canOverlap = true; + leftSegments.slice(0, sharedLength).forEach((leftSegment, segmentIndex) => { + if (!canOverlap) + return; + if (!_RouteConflictDetector.segmentsCanOverlap(leftSegment, rightSegments[segmentIndex])) { + canOverlap = false; + } + }); + return canOverlap; + } + /** + * Walks every unique pair of resolved routes and produces a conflict + * record for each pair whose (method, host, version, path) tuples can + * collide at runtime. + */ + static detect(routes, versioningOptions) { + const conflicts = []; + _RouteConflictDetector.forEachUniquePair(routes, (earlierRoute, laterRoute) => { + if (!_RouteConflictDetector.methodsCanOverlap(earlierRoute.method, laterRoute.method)) { + return; + } + if (!_RouteConflictDetector.versionsCanOverlap(earlierRoute.version, laterRoute.version, versioningOptions)) { + return; + } + if (!_RouteConflictDetector.hostsCanOverlap(earlierRoute.host, laterRoute.host)) { + return; + } + if (!_RouteConflictDetector.pathsCanOverlap(earlierRoute.path, laterRoute.path)) { + return; + } + const isIdentical = _RouteConflictDetector.routesAreIdentical(earlierRoute, laterRoute, versioningOptions); + conflicts.push({ + winner: earlierRoute, + shadowed: laterRoute, + kind: isIdentical ? "duplicate" : "shadow" + }); + }); + return conflicts; + } + /** + * Applies the per-kind policy to a set of conflicts: silences `'off'`, + * logs `'warn'` once per conflict, and aggregates every `'error'`-level + * conflict into a single `RouteConflictException`. + */ + static handle(conflicts, policy, logger3) { + if (conflicts.length === 0 || policy === void 0) + return; + const errorMessages = []; + conflicts.forEach((conflict) => { + const policyForKind = policy[conflict.kind] ?? "off"; + if (policyForKind === "off") + return; + const message = _RouteConflictDetector.describeConflict(conflict); + if (policyForKind === "warn") { + logger3.warn(message); + return; + } + errorMessages.push(message); + }); + if (errorMessages.length > 0) { + throw new RouteConflictException(errorMessages); + } + } + /** + * Removes shadow conflicts that specificity sorting has already resolved. + * + * When `routeResolutionStrategy: 'specificity'` is active, the sort + * promotes more-specific routes ahead of less-specific ones. A shadow + * where the sort promoted the winner (it was declared *later* but sorted + * *first*) is handled correctly at runtime — the more-specific route is + * registered first and handles its requests while the less-specific route + * handles the rest. Retaining such a conflict would cause `shadow: 'error'` + * to abort an application whose routes actually work as intended. + * + * Shadows where the winner was already first in declaration order (the + * sort did not swap them) are genuine and are kept unchanged. Duplicate + * conflicts are always kept. + * + * @param conflicts Conflicts detected on the sorted route list. + * @param declarationOrder Routes in their original declaration order + * (i.e. before specificity sorting was applied). + */ + static filterSortResolvedShadows(conflicts, declarationOrder) { + const declarationIndex = new Map(declarationOrder.map((route, idx) => [route, idx])); + return conflicts.filter((conflict) => { + if (conflict.kind !== "shadow") + return true; + const winnerDeclIdx = declarationIndex.get(conflict.winner) ?? -1; + const shadowedDeclIdx = declarationIndex.get(conflict.shadowed) ?? -1; + return winnerDeclIdx < shadowedDeclIdx; + }); + } + static segmentsCanOverlap(leftSegment, rightSegment) { + if (leftSegment.kind === "wildcard" || rightSegment.kind === "wildcard") { + return true; + } + if (leftSegment.kind === "param" || rightSegment.kind === "param") { + return true; + } + return leftSegment.value === rightSegment.value; + } + static methodsCanOverlap(leftMethod, rightMethod) { + if (leftMethod === RequestMethod.ALL || rightMethod === RequestMethod.ALL) { + return true; + } + return leftMethod === rightMethod; + } + static versionsCanOverlap(leftVersion, rightVersion, versioningOptions) { + if (!versioningOptions) + return true; + if (versioningOptions.type === VersioningType.URI) + return true; + const leftMatchesAnyVersion = leftVersion === void 0 || leftVersion === VERSION_NEUTRAL; + const rightMatchesAnyVersion = rightVersion === void 0 || rightVersion === VERSION_NEUTRAL; + if (leftMatchesAnyVersion || rightMatchesAnyVersion) + return true; + const leftValues = Array.isArray(leftVersion) ? leftVersion : [leftVersion]; + const rightValues = Array.isArray(rightVersion) ? rightVersion : [rightVersion]; + return leftValues.some((versionValue) => rightValues.includes(versionValue)); + } + static hostsCanOverlap(leftHost, rightHost) { + if (leftHost === void 0 || rightHost === void 0) + return true; + const leftHosts = Array.isArray(leftHost) ? leftHost : [leftHost]; + const rightHosts = Array.isArray(rightHost) ? rightHost : [rightHost]; + return leftHosts.some((leftValue) => rightHosts.some((rightValue) => _RouteConflictDetector.hostValuesCanMatchSameRequest(leftValue, rightValue))); + } + static hostValuesCanMatchSameRequest(leftValue, rightValue) { + const leftIsRegExp = leftValue instanceof RegExp; + const rightIsRegExp = rightValue instanceof RegExp; + if (leftIsRegExp && rightIsRegExp) + return true; + if (leftIsRegExp) { + leftValue.lastIndex = 0; + return leftValue.test(rightValue); + } + if (rightIsRegExp) { + rightValue.lastIndex = 0; + return rightValue.test(leftValue); + } + return leftValue === rightValue; + } + static routesAreIdentical(leftRoute, rightRoute, versioningOptions) { + return leftRoute.method === rightRoute.method && leftRoute.path === rightRoute.path && _RouteConflictDetector.hostsAreIdentical(leftRoute.host, rightRoute.host) && _RouteConflictDetector.versionsAreIdentical(leftRoute.version, rightRoute.version, versioningOptions); + } + static hostsAreIdentical(leftHost, rightHost) { + if (leftHost === void 0 && rightHost === void 0) + return true; + if (leftHost === void 0 || rightHost === void 0) + return false; + const leftHosts = Array.isArray(leftHost) ? leftHost : [leftHost]; + const rightHosts = Array.isArray(rightHost) ? rightHost : [rightHost]; + if (leftHosts.length !== rightHosts.length) + return false; + return leftHosts.every((leftValue) => rightHosts.some((rightValue) => _RouteConflictDetector.hostValuesAreIdentical(leftValue, rightValue))); + } + static hostValuesAreIdentical(leftValue, rightValue) { + if (leftValue instanceof RegExp && rightValue instanceof RegExp) { + return leftValue.source === rightValue.source && leftValue.flags === rightValue.flags; + } + return leftValue === rightValue; + } + static versionsAreIdentical(leftVersion, rightVersion, versioningOptions) { + if (!versioningOptions || versioningOptions.type === VersioningType.URI) { + return true; + } + if (leftVersion === rightVersion) + return true; + const leftValues = Array.isArray(leftVersion) ? leftVersion : [leftVersion]; + const rightValues = Array.isArray(rightVersion) ? rightVersion : [rightVersion]; + if (leftValues.length !== rightValues.length) + return false; + return leftValues.every((value) => rightValues.includes(value)); + } + static forEachUniquePair(items, visit) { + items.forEach((leftItem, leftIndex) => { + items.slice(leftIndex + 1).forEach((rightItem) => { + visit(leftItem, rightItem); + }); + }); + } + static describeConflict(conflict) { + const method = RequestMethod[conflict.winner.method]; + const winnerLabel = `${conflict.winner.instanceWrapper.name}#${conflict.winner.methodName}`; + const shadowedLabel = `${conflict.shadowed.instanceWrapper.name}#${conflict.shadowed.methodName}`; + if (conflict.kind === "duplicate") { + return DUPLICATE_ROUTE_MESSAGE(method, conflict.winner.path, winnerLabel, shadowedLabel); + } + return SHADOWED_ROUTE_MESSAGE(method, conflict.shadowed.path, shadowedLabel, conflict.winner.path, winnerLabel); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-specificity-sorter.js +var RouteSpecificitySorter; +var init_route_specificity_sorter = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/route-specificity-sorter.js"() { + init_route_conflict_detector(); + RouteSpecificitySorter = class _RouteSpecificitySorter { + static { + __name(this, "RouteSpecificitySorter"); + } + /** + * Lower rank means more specific. A literal segment beats a named + * param, which beats a named wildcard. A position that is absent on + * one side means the path is shorter at that point. A shorter path + * with a wildcard is the least specific of all (`missing`), as the + * wildcard can absorb the extra segments. Without one, it ranks after + * a literal but before a param or wildcard (`end`): those can sit in + * an optional group (`/users{/:id}`, `/{*path}`) and then also match + * the shorter path. + */ + static SEGMENT_KIND_RANK = { + literal: 0, + end: 1, + param: 2, + wildcard: 3, + missing: 4 + }; + /** + * Returns a new array of routes sorted from most-specific to + * least-specific. Routes that tie on specificity keep their original + * declaration order. + */ + static sort(routes) { + const decoratedRoutes = routes.map((route, declarationIndex) => ({ + route, + declarationIndex + })); + decoratedRoutes.sort((leftEntry, rightEntry) => { + const specificityDelta = _RouteSpecificitySorter.comparePathSpecificity(leftEntry.route.path, rightEntry.route.path); + if (specificityDelta !== 0) + return specificityDelta; + return leftEntry.declarationIndex - rightEntry.declarationIndex; + }); + return decoratedRoutes.map((decoratedEntry) => decoratedEntry.route); + } + static comparePathSpecificity(leftPath, rightPath) { + const leftSegments = RouteConflictDetector.tokenizePath(leftPath); + const rightSegments = RouteConflictDetector.tokenizePath(rightPath); + const longestPathLength = Math.max(leftSegments.length, rightSegments.length); + const leftEndKind = _RouteSpecificitySorter.getEndKind(leftSegments); + const rightEndKind = _RouteSpecificitySorter.getEndKind(rightSegments); + let specificityDelta = 0; + Array.from({ length: longestPathLength }).forEach((_, segmentIndex) => { + if (specificityDelta !== 0) + return; + const leftKind = leftSegments[segmentIndex]?.kind ?? leftEndKind; + const rightKind = rightSegments[segmentIndex]?.kind ?? rightEndKind; + const leftRank = _RouteSpecificitySorter.rankSegmentByKind(leftKind); + const rightRank = _RouteSpecificitySorter.rankSegmentByKind(rightKind); + if (leftRank !== rightRank) { + specificityDelta = leftRank - rightRank; + } + }); + return specificityDelta; + } + static getEndKind(segments) { + return segments.some((segment) => segment.kind === "wildcard") ? "missing" : "end"; + } + static rankSegmentByKind(kind) { + return _RouteSpecificitySorter.SEGMENT_KIND_RANK[kind]; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/security/cross-origin-protection.js +function evaluateCrossOriginRequest(request, exemptions = {}) { + if (SAFE_METHODS.has(request.method)) { + return { allowed: true, reason: "safe-method" }; + } + const secFetchSite = request.secFetchSite; + if (secFetchSite) { + if (secFetchSite === "same-origin" || secFetchSite === "none") { + return { allowed: true, reason: "same-origin" }; + } + return exemptOr(request, exemptions, "cross-origin-sec-fetch-site"); + } + const origin = request.origin; + if (!origin) { + return { allowed: true, reason: "no-browser-headers" }; + } + if (request.host !== void 0 && originMatchesHost(origin, request.host)) { + return { allowed: true, reason: "origin-matches-host" }; + } + return exemptOr(request, exemptions, "cross-origin-origin-header"); +} +function exemptOr(request, exemptions, reason) { + if (exemptions.isExcluded?.()) { + return { allowed: true, reason: "excluded" }; + } + if (request.origin !== void 0 && exemptions.trustedOrigins?.has(request.origin)) { + return { allowed: true, reason: "trusted-origin" }; + } + return { allowed: false, reason }; +} +function originMatchesHost(origin, host) { + let url; + try { + url = new URL(origin); + } catch { + return false; + } + if (!url.host) { + return false; + } + const authority = host.toLowerCase(); + if (url.host === authority) { + return true; + } + const defaultPort = DEFAULT_PORTS[url.protocol]; + return !url.port && defaultPort !== void 0 && `${url.hostname}:${defaultPort}` === authority; +} +function normalizeTrustedOrigin(origin) { + const fail2 = /* @__PURE__ */ __name((reason) => { + throw new Error(`Invalid trusted origin "${origin}": ${reason}.`); + }, "fail"); + if (!isString(origin) || origin.length === 0) { + return fail2("expected a non-empty string"); + } + if (!/^[a-z][a-z0-9+.-]*:\/\/[^/?#\\]+$/i.test(origin)) { + return fail2('expected "scheme://host[:port]", without a path, query string or fragment'); + } + let url; + try { + url = new URL(origin); + } catch { + return fail2('expected "scheme://host[:port]"'); + } + if (!url.host) { + fail2("a host is required"); + } + if (url.username || url.password) { + fail2("credentials are not allowed"); + } + if (url.host.includes("*")) { + fail2("wildcards are not supported, list each origin"); + } + return `${url.protocol}//${url.host}`; +} +function toRouteInfo(route) { + if (isString(route)) { + return { path: addLeadingSlash(route), method: RequestMethod.ALL }; + } + if (!route || !isString(route.path) || typeof route.method !== "number" || RequestMethod[route.method] === void 0) { + throw new Error(`Invalid CSRF protection exclusion ${JSON.stringify(route)}: expected a path, or a { path, method } object where method is a RequestMethod.`); + } + return { ...route, path: addLeadingSlash(route.path) }; +} +function compileExclusion(path, requestMethod, logs) { + const converted = LegacyRouteConverter.tryConvert(path, { logs }); + const normalized = converted.length > 1 ? converted.replace(/\/+$/, "") : converted; + return { + path: normalized, + requestMethod, + pathRegex: (0, import_path_to_regexp5.pathToRegexp)(addLeadingSlash(normalized) || "/", { + sensitive: true, + trailing: false + }).regexp + }; +} +function readHeader(headers, name) { + const value = headers[name]; + if (value === void 0) { + return void 0; + } + return Array.isArray(value) ? value.join(", ") : value; +} +var import_path_to_regexp5, SAFE_METHODS, DEFAULT_PORTS, DENIED_MESSAGES, NON_CANONICAL_PATH, CrossOriginProtection; +var init_cross_origin_protection = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/security/cross-origin-protection.js"() { + init_common(); + init_internal(); + import_path_to_regexp5 = __toESM(require_dist2(), 1); + init_utils2(); + init_legacy_route_converter(); + init_utils(); + SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD", "OPTIONS"]); + DEFAULT_PORTS = { + "http:": "80", + "https:": "443" + }; + __name(evaluateCrossOriginRequest, "evaluateCrossOriginRequest"); + __name(exemptOr, "exemptOr"); + __name(originMatchesHost, "originMatchesHost"); + __name(normalizeTrustedOrigin, "normalizeTrustedOrigin"); + DENIED_MESSAGES = { + "cross-origin-sec-fetch-site": "Cross-origin request detected from Sec-Fetch-Site header", + "cross-origin-origin-header": "Cross-origin request detected, and/or browser is out of date: Sec-Fetch-Site is missing, and Origin does not match Host" + }; + NON_CANONICAL_PATH = /[#;\\]|\/\/|%2e|%2f|%5c|\/\.\.?(?:\/|$)/i; + CrossOriginProtection = class { + static { + __name(this, "CrossOriginProtection"); + } + httpAdapter; + trustedOrigins; + excludedRoutes = []; + excludePredicate; + resolvedExclusions = []; + ignoreTrailingSlash = false; + versioningOptions; + /** + * Validates the options, so that a bad configuration fails as soon as + * `app.enableCsrfProtection()` is called. + */ + constructor(httpAdapter, options = {}) { + this.httpAdapter = httpAdapter; + if (!isPlainObject(options)) { + throw new Error("Invalid CSRF protection options: expected an options object."); + } + for (const key of Object.keys(options)) { + if (key !== "trustedOrigins" && key !== "exclude") { + throw new Error(`Invalid CSRF protection options: unknown option "${key}" (expected "trustedOrigins", "exclude").`); + } + } + const { trustedOrigins = [] } = options; + if (!Array.isArray(trustedOrigins)) { + throw new Error('Invalid CSRF protection "trustedOrigins" option: expected a list of origins.'); + } + this.trustedOrigins = new Set(trustedOrigins.map(normalizeTrustedOrigin)); + const { exclude } = options; + if (isFunction(exclude)) { + this.excludePredicate = exclude; + } else if (Array.isArray(exclude)) { + this.excludedRoutes = exclude.map(toRouteInfo); + for (const route of this.excludedRoutes) { + compileExclusion(route.path, route.method, false); + } + } else if (exclude !== void 0) { + throw new Error('Invalid CSRF protection "exclude" option: expected a list of routes or a function.'); + } + } + /** + * Resolves the excluded routes to the paths they are served at, like + * `MiddlewareConsumer.exclude()` does: with the global prefix (unless the + * route is excluded from it) and, with URI versioning, the version segment + * of `RouteInfo.version` (with another versioning type, only the requests + * for that version are excluded). Called by `app.init()`, once the global + * prefix and versioning are final; until then nothing is excluded. + */ + resolveExclusions(pathExtractor) { + this.resolvedExclusions = this.excludedRoutes.flatMap((route) => pathExtractor.extractPathFrom(route).map((path) => { + const exclusion = compileExclusion(path, route.method, true); + if (route.version) { + exclusion.version = route.version; + } + return exclusion; + })); + this.ignoreTrailingSlash = !!this.httpAdapter.getRouteMatchingOptions?.()?.ignoreTrailingSlash; + this.versioningOptions = pathExtractor.getVersioningOptions(); + } + /** + * Returns a `ForbiddenException` when the request must be rejected, and + * `undefined` otherwise. + */ + check(request) { + const headers = request.headers ?? {}; + const decision = evaluateCrossOriginRequest({ + method: this.httpAdapter.getRequestMethod(request), + secFetchSite: readHeader(headers, "sec-fetch-site"), + origin: readHeader(headers, "origin"), + // On HTTP/2, ":authority" identifies the target and takes precedence + // over a "Host" header (RFC 9113, section 8.3.1). + host: readHeader(headers, ":authority") ?? readHeader(headers, "host") + }, { + trustedOrigins: this.trustedOrigins, + isExcluded: /* @__PURE__ */ __name(() => this.isExcluded(request), "isExcluded") + }); + if (decision.allowed) { + return void 0; + } + return new ForbiddenException(DENIED_MESSAGES[decision.reason]); + } + isExcluded(request) { + if (this.excludePredicate) { + return !!this.excludePredicate(request); + } + if (this.resolvedExclusions.length === 0) { + return false; + } + const url = this.httpAdapter.getRequestUrl(request) ?? ""; + const queryIndex = url.indexOf("?"); + const pathname = queryIndex >= 0 ? url.slice(0, queryIndex) : url; + if (!pathname.startsWith("/") || NON_CANONICAL_PATH.test(pathname)) { + return false; + } + const method = this.httpAdapter.getRequestMethod(request); + const isVersionRequested = createRequestedVersionMatcher(request, this.versioningOptions); + const isPathExcluded = /* @__PURE__ */ __name((path) => this.resolvedExclusions.some((exclusion) => isRouteExcluded([exclusion], path, RequestMethod[method]) && isVersionRequested(exclusion)), "isPathExcluded"); + if (this.ignoreTrailingSlash && pathname.length > 1 && pathname.endsWith("/")) { + return isPathExcluded(pathname) && isPathExcluded(pathname.replace(/\/+$/, "")); + } + return isPathExcluded(pathname); + } + }; + __name(toRouteInfo, "toRouteInfo"); + __name(compileExclusion, "compileExclusion"); + __name(readHeader, "readHeader"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/security/http-security-hook.js +var HttpSecurityHook; +var init_http_security_hook = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/security/http-security-hook.js"() { + init_route_info_path_extractor(); + HttpSecurityHook = class { + static { + __name(this, "HttpSecurityHook"); + } + headers; + crossOriginProtection; + setHeaders(headers) { + this.headers = headers; + } + setCrossOriginProtection(protection) { + this.crossOriginProtection = protection; + } + /** + * Called by `app.init()`, once the global prefix and versioning are final. + */ + init(config) { + this.crossOriginProtection?.resolveExclusions(new RouteInfoPathExtractor(config)); + } + /** + * Runs the enabled features for one request. Returns the error to hand to + * the exception layer when the request must be rejected. + */ + handle(request, response) { + if (this.headers) { + for (const [name, value] of this.headers.headers) { + response.setHeader(name, value); + } + for (const name of this.headers.removeHeaders) { + response.removeHeader(name); + } + } + return this.crossOriginProtection?.check(request); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/security/security-headers.js +function serializeContentSecurityPolicy(options = {}) { + const { useDefaults = true, directives = {} } = options; + if (typeof useDefaults !== "boolean") { + fail("contentSecurityPolicy.useDefaults must be a boolean."); + } + if (!isObject(directives) || Array.isArray(directives)) { + fail("contentSecurityPolicy.directives must be an object."); + } + const result = /* @__PURE__ */ new Map(); + if (useDefaults) { + for (const [name, value] of Object.entries(DEFAULT_CONTENT_SECURITY_POLICY_DIRECTIVES)) { + result.set(name, value); + } + } + const seen = /* @__PURE__ */ new Set(); + const removed = /* @__PURE__ */ new Set(); + for (const [rawName, rawValue] of Object.entries(directives)) { + const name = normalizeDirectiveName(rawName); + if (seen.has(name)) { + fail(`Content-Security-Policy directive "${name}" is set twice.`); + } + seen.add(name); + const values = normalizeDirectiveValue(name, rawValue); + if (values === null) { + removed.add(name); + result.delete(name); + } else { + result.set(name, values); + } + } + if (!result.has("default-src") && !removed.has("default-src")) { + fail('Content-Security-Policy needs a "default-src" directive. Set "defaultSrc: null" to omit it deliberately.'); + } + if (result.size === 0) { + fail("Content-Security-Policy has no directives."); + } + return Array.from(result, ([name, values]) => values.length > 0 ? `${name} ${values.join(" ")}` : name).join(";"); +} +function normalizeDirectiveName(rawName) { + const name = DIRECTIVE_NAME.test(rawName) ? rawName.replace(/[A-Z]/g, (letter) => `-${letter}`).toLowerCase() : ""; + if (!NORMALIZED_DIRECTIVE_NAME.test(name)) { + fail(`"${rawName}" is not a valid Content-Security-Policy directive name (expected camelCase, e.g. "scriptSrc", or lower-case kebab-case, e.g. "script-src").`); + } + return name; +} +function normalizeDirectiveValue(name, value) { + if (value === null || value === false || value === void 0) { + return null; + } + if (value === true) { + return []; + } + const values = isString(value) ? [value] : value; + if (!Array.isArray(values)) { + return fail(`Content-Security-Policy directive "${name}" must be a string, a list of strings, a boolean or null.`); + } + return values.map((item) => { + if (!isString(item) || item.trim().length === 0) { + return fail(`Content-Security-Policy directive "${name}" contains an empty or non-string value.`); + } + if (FORBIDDEN_VALUE_CHARACTERS.test(item)) { + return fail(`Content-Security-Policy directive "${name}" contains an invalid value ${JSON.stringify(item)}: ";", "," and control or non-ASCII characters are not allowed.`); + } + if (item.split(/\s+/).some((token) => MUST_BE_QUOTED.test(token))) { + return fail(`Content-Security-Policy directive "${name}" contains ${JSON.stringify(item)}: keywords, nonces and hashes must be single-quoted (e.g. "'self'").`); + } + return item.trim(); + }); +} +function resolveSecurityHeaders(options = {}) { + if (!isPlainObject(options)) { + fail("expected an options object."); + } + for (const name of Object.keys(options)) { + if (!Object.hasOwn(OPTION_KEYS, name)) { + const current = HELMET_LEGACY_OPTION_NAMES[name]; + fail(`unknown option "${name}"` + (current ? ` (helmet's legacy name, use "${current}").` : ".")); + } + } + const headers = []; + const add = /* @__PURE__ */ __name((name, value) => headers.push([name, value]), "add"); + const csp = readOption(options, "contentSecurityPolicy", true); + if (csp) { + add(readBoolean(csp, "contentSecurityPolicy", "reportOnly", false) ? "Content-Security-Policy-Report-Only" : "Content-Security-Policy", serializeContentSecurityPolicy(csp)); + } + const coep = readOption(options, "crossOriginEmbedderPolicy", false); + if (coep) { + add("Cross-Origin-Embedder-Policy", pick("crossOriginEmbedderPolicy.policy", coep.policy, COEP_POLICIES, "require-corp")); + } + const coop = readOption(options, "crossOriginOpenerPolicy", true); + if (coop) { + add("Cross-Origin-Opener-Policy", pick("crossOriginOpenerPolicy.policy", coop.policy, COOP_POLICIES, "same-origin")); + } + const corp = readOption(options, "crossOriginResourcePolicy", true); + if (corp) { + add("Cross-Origin-Resource-Policy", pick("crossOriginResourcePolicy.policy", corp.policy, CORP_POLICIES, "same-origin")); + } + if (readOption(options, "originAgentCluster", true)) { + add("Origin-Agent-Cluster", "?1"); + } + const referrer = readOption(options, "referrerPolicy", true); + if (referrer) { + add("Referrer-Policy", resolveReferrerPolicy(referrer.policy)); + } + const hsts = readOption(options, "strictTransportSecurity", true); + if (hsts) { + add("Strict-Transport-Security", resolveHsts(hsts)); + } + if (readOption(options, "xContentTypeOptions", true)) { + add("X-Content-Type-Options", "nosniff"); + } + const dnsPrefetch = readOption(options, "xDnsPrefetchControl", true); + if (dnsPrefetch) { + const allow = readBoolean(dnsPrefetch, "xDnsPrefetchControl", "allow"); + add("X-DNS-Prefetch-Control", allow ? "on" : "off"); + } + if (readOption(options, "xDownloadOptions", true)) { + add("X-Download-Options", "noopen"); + } + const frameOptions = readOption(options, "xFrameOptions", true); + if (frameOptions) { + const { action } = frameOptions; + add("X-Frame-Options", pick("xFrameOptions.action", isString(action) ? action.toLowerCase() : action, X_FRAME_OPTIONS_ACTIONS, "sameorigin").toUpperCase()); + } + const crossDomain = readOption(options, "xPermittedCrossDomainPolicies", true); + if (crossDomain) { + add("X-Permitted-Cross-Domain-Policies", pick("xPermittedCrossDomainPolicies.permittedPolicies", crossDomain.permittedPolicies, X_PERMITTED_CROSS_DOMAIN_POLICIES, "none")); + } + if (readOption(options, "xXssProtection", true)) { + add("X-XSS-Protection", "0"); + } + const removeHeaders = readOption(options, "xPoweredBy", true) ? ["X-Powered-By"] : []; + return { headers, removeHeaders }; +} +function readOption(options, name, enabledByDefault) { + const value = options[name]; + if (value === void 0) { + return enabledByDefault ? {} : void 0; + } + if (typeof value === "boolean") { + return value ? {} : void 0; + } + const keys = OPTION_KEYS[name]; + if (keys.length === 0 || !isPlainObject(value)) { + return fail(`${name} must be a boolean${keys.length > 0 ? " or an object" : ""}, received ${JSON.stringify(value)}.`); + } + for (const key of Object.keys(value)) { + if (!keys.includes(key)) { + fail(`unknown option "${name}.${key}" (expected ${keys.map((k) => `"${k}"`).join(", ")}).`); + } + } + return value; +} +function readBoolean(object, option, key, fallback = false) { + const value = object[key]; + if (value === void 0) { + return fallback; + } + if (typeof value !== "boolean") { + fail(`${option}.${key} must be a boolean, received ${JSON.stringify(value)}.`); + } + return value; +} +function pick(option, value, allowed, fallback) { + if (value === void 0) { + return fallback; + } + if (!isString(value) || !allowed.includes(value)) { + fail(`${option} must be one of ${allowed.map((v) => `"${v}"`).join(", ")}, received ${JSON.stringify(value)}.`); + } + return value; +} +function resolveReferrerPolicy(policy) { + if (policy === void 0) { + return "no-referrer"; + } + const tokens = isString(policy) ? [policy] : policy; + if (!Array.isArray(tokens) || tokens.length === 0) { + fail("referrerPolicy.policy must be a token or a non-empty list."); + } + const unique = /* @__PURE__ */ new Set(); + for (const token of tokens) { + pick("referrerPolicy.policy", token, REFERRER_POLICIES, "no-referrer"); + if (unique.has(token)) { + fail(`referrerPolicy.policy contains "${token}" more than once.`); + } + unique.add(token); + } + return tokens.join(","); +} +function resolveHsts(option) { + const maxAge = option.maxAge ?? DEFAULT_HSTS_MAX_AGE; + if (typeof maxAge !== "number" || !Number.isFinite(maxAge) || maxAge < 0) { + fail(`strictTransportSecurity.maxAge must be a non-negative number of seconds, received ${JSON.stringify(maxAge)}.`); + } + let value = `max-age=${Math.floor(maxAge)}`; + if (readBoolean(option, "strictTransportSecurity", "includeSubDomains", true)) { + value += "; includeSubDomains"; + } + if (readBoolean(option, "strictTransportSecurity", "preload")) { + value += "; preload"; + } + return value; +} +var DEFAULT_CONTENT_SECURITY_POLICY_DIRECTIVES, DEFAULT_HSTS_MAX_AGE, COEP_POLICIES, COOP_POLICIES, CORP_POLICIES, REFERRER_POLICIES, X_FRAME_OPTIONS_ACTIONS, X_PERMITTED_CROSS_DOMAIN_POLICIES, OPTION_KEYS, HELMET_LEGACY_OPTION_NAMES, MUST_BE_QUOTED, FORBIDDEN_VALUE_CHARACTERS, DIRECTIVE_NAME, NORMALIZED_DIRECTIVE_NAME, SecurityHeadersConfigurationError, fail; +var init_security_headers = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/security/security-headers.js"() { + init_internal(); + DEFAULT_CONTENT_SECURITY_POLICY_DIRECTIVES = Object.freeze({ + "default-src": ["'self'"], + "base-uri": ["'self'"], + "font-src": ["'self'", "https:", "data:"], + "form-action": ["'self'"], + "frame-ancestors": ["'self'"], + "img-src": ["'self'", "data:"], + "object-src": ["'none'"], + "script-src": ["'self'"], + "script-src-attr": ["'none'"], + "style-src": ["'self'", "https:", "'unsafe-inline'"], + "upgrade-insecure-requests": [] + }); + DEFAULT_HSTS_MAX_AGE = 365 * 24 * 60 * 60; + COEP_POLICIES = ["require-corp", "credentialless", "unsafe-none"]; + COOP_POLICIES = [ + "same-origin", + "same-origin-allow-popups", + "noopener-allow-popups", + "unsafe-none" + ]; + CORP_POLICIES = ["same-origin", "same-site", "cross-origin"]; + REFERRER_POLICIES = [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ]; + X_FRAME_OPTIONS_ACTIONS = ["deny", "sameorigin"]; + X_PERMITTED_CROSS_DOMAIN_POLICIES = [ + "none", + "master-only", + "by-content-type", + "all" + ]; + OPTION_KEYS = { + contentSecurityPolicy: ["directives", "reportOnly", "useDefaults"], + crossOriginEmbedderPolicy: ["policy"], + crossOriginOpenerPolicy: ["policy"], + crossOriginResourcePolicy: ["policy"], + originAgentCluster: [], + referrerPolicy: ["policy"], + strictTransportSecurity: ["includeSubDomains", "maxAge", "preload"], + xContentTypeOptions: [], + xDnsPrefetchControl: ["allow"], + xDownloadOptions: [], + xFrameOptions: ["action"], + xPermittedCrossDomainPolicies: ["permittedPolicies"], + xPoweredBy: [], + xXssProtection: [] + }; + HELMET_LEGACY_OPTION_NAMES = { + dnsPrefetchControl: "xDnsPrefetchControl", + frameguard: "xFrameOptions", + hidePoweredBy: "xPoweredBy", + hsts: "strictTransportSecurity", + ieNoOpen: "xDownloadOptions", + noSniff: "xContentTypeOptions", + permittedCrossDomainPolicies: "xPermittedCrossDomainPolicies", + xssFilter: "xXssProtection" + }; + MUST_BE_QUOTED = /^(?:self|none|strict-dynamic|report-sample|inline-speculation-rules|unsafe-inline|unsafe-eval|unsafe-hashes|wasm-unsafe-eval|unsafe-allow-redirects)$|^(?:nonce|sha256|sha384|sha512)-[A-Za-z0-9+/_=-]+$/i; + FORBIDDEN_VALUE_CHARACTERS = /[;,]|[^\x20-\x7e]/; + DIRECTIVE_NAME = /^[a-zA-Z0-9-]+$/; + NORMALIZED_DIRECTIVE_NAME = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/; + SecurityHeadersConfigurationError = class extends Error { + static { + __name(this, "SecurityHeadersConfigurationError"); + } + constructor(message) { + super(`Invalid security headers configuration: ${message}`); + this.name = "SecurityHeadersConfigurationError"; + } + }; + fail = /* @__PURE__ */ __name((message) => { + throw new SecurityHeadersConfigurationError(message); + }, "fail"); + __name(serializeContentSecurityPolicy, "serializeContentSecurityPolicy"); + __name(normalizeDirectiveName, "normalizeDirectiveName"); + __name(normalizeDirectiveValue, "normalizeDirectiveValue"); + __name(resolveSecurityHeaders, "resolveSecurityHeaders"); + __name(readOption, "readOption"); + __name(readBoolean, "readBoolean"); + __name(pick, "pick"); + __name(resolveReferrerPolicy, "resolveReferrerPolicy"); + __name(resolveHsts, "resolveHsts"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/nest-application.js +import { platform } from "os"; +var import_iterare17, NestApplication; +var init_nest_application = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/nest-application.js"() { + init_common(); + import_iterare17 = __toESM(require_lib(), 1); + init_application_config(); + init_constants2(); + init_cookie_signer(); + init_optional_require(); + init_safe_instance_decorator(); + init_injector(); + init_container2(); + init_middleware_module(); + init_utils2(); + init_nest_application_context(); + init_routes_resolver(); + init_common(); + init_internal(); + init_route_conflict_detector(); + init_route_specificity_sorter(); + init_cross_origin_protection(); + init_http_security_hook(); + init_security_headers(); + NestApplication = class _NestApplication extends NestApplicationContext { + static { + __name(this, "NestApplication"); + } + httpAdapter; + config; + graphInspector; + logger = new Logger(_NestApplication.name, { + timestamp: true + }); + middlewareModule; + middlewareContainer = new MiddlewareContainer(this.container); + microservicesModule = null; + socketModule = null; + routesResolver; + microservices = []; + httpServer; + isListening = false; + isWsModuleRegistered = false; + enabledSecurityFeatures = /* @__PURE__ */ new Set(); + securityHook; + constructor(container, httpAdapter, config, graphInspector, appOptions = {}) { + super(container, appOptions); + this.httpAdapter = httpAdapter; + this.config = config; + this.graphInspector = graphInspector; + this.config.setRouteConflictPolicy(appOptions.routeConflictPolicy); + this.config.setRouteResolutionStrategy(appOptions.routeResolutionStrategy); + this.applyCookiesOptions(appOptions); + this.selectContextModule(); + this.registerHttpServer(); + this.injector = new Injector({ + preview: this.appOptions.preview, + instanceDecorator: appOptions.instrument?.instanceDecorator + }); + this.middlewareModule = new MiddlewareModule(); + this.routesResolver = new RoutesResolver(this.container, this.config, this.injector, this.graphInspector); + } + async prepareClose() { + this.httpAdapter && await this.httpAdapter.beforeClose?.(); + } + async dispose() { + await this.socketModule?.close(); + await this.microservicesModule?.close(); + await this.httpAdapter?.close(); + this.isListening = false; + this.container.getHttpAdapterHostRef().listening = false; + await Promise.all((0, import_iterare17.iterate)(this.microservices).map(async (microservice) => { + microservice.setIsTerminated(true); + await microservice.close(); + })); + } + getHttpAdapter() { + return this.httpAdapter; + } + registerHttpServer() { + this.httpServer = this.createServer(); + } + getUnderlyingHttpServer() { + return this.httpAdapter.getHttpServer(); + } + applyOptions() { + if (!this.appOptions || !this.appOptions.cors) { + return void 0; + } + const passCustomOptions = isObject(this.appOptions.cors) || isFunction(this.appOptions.cors); + if (!passCustomOptions) { + return this.enableCors(); + } + return this.enableCors(this.appOptions.cors); + } + createServer() { + this.httpAdapter.initHttpServer(this.appOptions); + return this.httpAdapter.getHttpServer(); + } + async registerModules() { + await this.registerWsModule(); + if (this.microservicesModule) { + this.microservicesModule.register(this.container, this.graphInspector, this.config, this.appOptions); + this.microservicesModule.setupClients(this.container); + } + await this.middlewareModule.register(this.middlewareContainer, this.container, this.config, this.injector, this.httpAdapter, this.graphInspector, this.appOptions); + } + async registerWsModule() { + if (!this.socketModule) { + return; + } + await this.socketModule.register(this.container, this.config, this.graphInspector, this.appOptions, this.httpServer); + this.isWsModuleRegistered = true; + } + async init() { + if (this.isInitialized) { + return this; + } + try { + await Promise.all([ + this.loadSocketModule(), + this.loadMicroservicesModule() + ]); + this.applyOptions(); + this.securityHook?.init(this.config); + await this.httpAdapter?.init?.(); + const useBodyParser = this.appOptions && this.appOptions.bodyParser !== false; + useBodyParser && this.registerParserMiddleware(); + await this.registerModules(); + await this.registerRouter(); + await this.callInitHook(); + await this.registerRouterHooks(); + await this.callBootstrapHook(); + this.isInitialized = true; + this.logger.log(MESSAGES.APPLICATION_READY); + } finally { + this.flushLogsIfAutoFlushEnabled(); + } + return this; + } + registerParserMiddleware() { + const prefix = this.config.getGlobalPrefix(); + const rawBody = !!this.appOptions?.rawBody; + this.httpAdapter.registerParserMiddleware(prefix, rawBody); + } + async registerRouter() { + await this.registerMiddleware(this.httpAdapter); + const prefix = this.config.getGlobalPrefix(); + const basePath = addLeadingSlash(prefix); + const conflictPolicy = this.config.getRouteConflictPolicy(); + const resolutionStrategy = this.config.getRouteResolutionStrategy(); + const adapterIsOrderSensitive = this.httpAdapter.isRouteOrderSensitive?.() ?? true; + const shouldSortBySpecificity = resolutionStrategy === "specificity" && adapterIsOrderSensitive; + const adapterRejectsDuplicates = !adapterIsOrderSensitive; + if (!conflictPolicy && !shouldSortBySpecificity) { + this.routesResolver.resolve(this.httpAdapter, basePath); + return; + } + const resolvedRoutes = []; + this.routesResolver.resolve(this.httpAdapter, basePath, { + onRouteResolved: /* @__PURE__ */ __name((route) => resolvedRoutes.push(route), "onRouteResolved"), + deferRegistration: true + }); + const orderedRoutes = shouldSortBySpecificity ? RouteSpecificitySorter.sort(resolvedRoutes) : resolvedRoutes; + const routesToSkip = /* @__PURE__ */ new Set(); + if (conflictPolicy) { + const filteredPolicy = adapterIsOrderSensitive ? conflictPolicy : { duplicate: conflictPolicy.duplicate }; + const conflicts = RouteConflictDetector.detect(orderedRoutes, this.config.getVersioning()); + if (adapterRejectsDuplicates) { + conflicts.forEach((conflict) => { + if (conflict.kind === "duplicate") { + routesToSkip.add(conflict.shadowed); + } + }); + } + const effectiveConflicts = shouldSortBySpecificity ? RouteConflictDetector.filterSortResolvedShadows(conflicts, resolvedRoutes) : conflicts; + RouteConflictDetector.handle(effectiveConflicts, filteredPolicy, this.logger); + } + orderedRoutes.forEach((route) => { + if (routesToSkip.has(route)) + return; + this.routesResolver.registerResolvedRoute(this.httpAdapter, route); + }); + } + async registerRouterHooks() { + this.routesResolver.registerNotFoundHandler(); + this.routesResolver.registerExceptionHandler(); + } + connectMicroservice(microserviceOptions, hybridAppOptions = {}) { + const { NestMicroservice } = loadPackageCached("@nestjs/microservices", "NestFactory"); + const { inheritAppConfig } = hybridAppOptions; + const applicationConfig = inheritAppConfig ? this.config : new ApplicationConfig(); + const instance = new NestMicroservice(this.container, microserviceOptions, this.graphInspector, applicationConfig); + instance.setIsConnectedToApplication?.(true); + if (!hybridAppOptions.deferInitialization) { + instance.registerListeners(); + instance.setIsInitialized(true); + instance.setIsInitHookCalled(true); + } + this.microservices.push(instance); + return instance; + } + getMicroservices() { + return this.microservices; + } + getHttpServer() { + return this.httpServer; + } + async startAllMicroservices() { + this.assertNotInPreviewMode("startAllMicroservices"); + await Promise.all(this.microservices.map((msvc) => msvc.listen())); + return this; + } + use(...args) { + this.httpAdapter.use(...this.applyFunctionDecoratorIfRegistered(args)); + return this; + } + useBodyParser(...args) { + if (!("useBodyParser" in this.httpAdapter)) { + this.logger.warn("Your HTTP Adapter does not support `.useBodyParser`."); + return this; + } + const [parserType, ...otherArgs] = args; + const rawBody = !!this.appOptions.rawBody; + this.httpAdapter.useBodyParser?.(...[parserType, rawBody, ...otherArgs]); + return this; + } + enableCors(options) { + this.httpAdapter.enableCors(options); + } + enableCsrfProtection(options) { + this.assertSecurityFeatureCanBeEnabled("enableCsrfProtection"); + const protection = new CrossOriginProtection(this.httpAdapter, options); + this.getSecurityHook().setCrossOriginProtection(protection); + this.enabledSecurityFeatures.add("enableCsrfProtection"); + return this; + } + useSecurityHeaders(options) { + this.assertSecurityFeatureCanBeEnabled("useSecurityHeaders"); + const headers = resolveSecurityHeaders(options); + this.getSecurityHook().setHeaders(headers); + if (headers.removeHeaders.includes("X-Powered-By")) { + this.httpAdapter.disable?.("x-powered-by"); + } + this.enabledSecurityFeatures.add("useSecurityHeaders"); + return this; + } + enableVersioning(options = { type: VersioningType.URI }) { + this.config.enableVersioning(options); + return this; + } + async listen(port, ...args) { + this.assertNotInPreviewMode("listen"); + if (!this.isInitialized) { + await this.init(); + } + const httpAdapterHost = this.container.getHttpAdapterHostRef(); + return new Promise((resolve, reject) => { + const errorHandler = /* @__PURE__ */ __name((e) => { + this.logger.error(e?.toString?.()); + reject(e); + }, "errorHandler"); + this.httpServer.once("error", errorHandler); + const isCallbackInOriginalArgs = isFunction(args[args.length - 1]); + const listenFnArgs = isCallbackInOriginalArgs ? args.slice(0, args.length - 1) : args; + this.httpAdapter.listen(port, ...listenFnArgs, (...originalCallbackArgs) => { + this.flushLogsIfAutoFlushEnabled(); + if (originalCallbackArgs[0] instanceof Error) { + return reject(originalCallbackArgs[0]); + } + const address = this.httpServer.address(); + if (address) { + this.httpServer.removeListener("error", errorHandler); + this.isListening = true; + httpAdapterHost.listening = true; + resolve(this.httpServer); + } + if (isCallbackInOriginalArgs) { + args[args.length - 1](...originalCallbackArgs); + } + }); + }); + } + async getUrl() { + return new Promise((resolve, reject) => { + if (!this.isListening) { + this.logger.error(MESSAGES.CALL_LISTEN_FIRST); + reject(MESSAGES.CALL_LISTEN_FIRST); + return; + } + const address = this.httpServer.address(); + resolve(this.formatAddress(address)); + }); + } + formatAddress(address) { + if (isString(address)) { + if (platform() === "win32") { + return address; + } + const basePath = encodeURIComponent(address); + return `${this.getProtocol()}+unix://${basePath}`; + } + let host = this.host(); + if (address && address.family === "IPv6") { + if (host === "::") { + host = "[::1]"; + } else { + host = `[${host}]`; + } + } else if (host === "0.0.0.0") { + host = "127.0.0.1"; + } + return `${this.getProtocol()}://${host}:${address.port}`; + } + setGlobalPrefix(prefix, options) { + this.config.setGlobalPrefix(prefix); + if (options) { + const exclude = options?.exclude ? mapToExcludeRoute(options.exclude) : []; + this.config.setGlobalPrefixOptions({ + ...options, + exclude + }); + } + return this; + } + useWebSocketAdapter(adapter) { + if (this.isWsModuleRegistered) { + this.logger.warn("useWebSocketAdapter() was called after WebSocket gateways were already initialized. The provided adapter will be stored but will NOT be applied to existing gateways \u2014 they remain bound to the previously installed adapter. To install a custom adapter, call app.useWebSocketAdapter(...) BEFORE app.init() (or app.listen())."); + } + this.config.setIoAdapter(adapter); + return this; + } + useGlobalFilters(...filters) { + filters = this.applyInstanceDecoratorIfRegistered(...filters); + this.config.useGlobalFilters(...filters); + filters.forEach((item) => this.graphInspector.insertOrphanedEnhancer({ + subtype: "filter", + ref: item + })); + return this; + } + useGlobalPipes(...pipes) { + pipes = this.applyInstanceDecoratorIfRegistered(...pipes); + this.config.useGlobalPipes(...pipes); + pipes.forEach((item) => this.graphInspector.insertOrphanedEnhancer({ + subtype: "pipe", + ref: item + })); + return this; + } + useGlobalInterceptors(...interceptors) { + interceptors = this.applyInstanceDecoratorIfRegistered(...interceptors); + this.config.useGlobalInterceptors(...interceptors); + interceptors.forEach((item) => this.graphInspector.insertOrphanedEnhancer({ + subtype: "interceptor", + ref: item + })); + return this; + } + useGlobalGuards(...guards) { + guards = this.applyInstanceDecoratorIfRegistered(...guards); + this.config.useGlobalGuards(...guards); + guards.forEach((item) => this.graphInspector.insertOrphanedEnhancer({ + subtype: "guard", + ref: item + })); + return this; + } + useStaticAssets(pathOrOptions, options) { + this.httpAdapter.useStaticAssets?.(pathOrOptions, options); + return this; + } + setBaseViewsDir(path) { + this.httpAdapter.setBaseViewsDir?.(path); + return this; + } + setViewEngine(engineOrOptions) { + this.httpAdapter.setViewEngine?.(engineOrOptions); + return this; + } + /** + * Pre-load optional packages so that createNestApplication, + * createNestMicroservice and createHttpAdapter can stay synchronous. + */ + async preloadLazyPackages() { + await tryLoadPackage("@nestjs/platform-express", () => import("./platform-express-MGQH3ALM.js")); + await tryLoadPackage("@nestjs/microservices", () => import("@nestjs/microservices")); + } + /** + * Builds the cookie signer from the `cookies.secret` option and shares it + * between the route params factory (through the config), which verifies + * signed cookies, and the HTTP adapter, which signs them in `setCookie()`. + */ + applyCookiesOptions(appOptions) { + const secret = appOptions.cookies?.secret; + if (secret === void 0) { + return; + } + const signer = new CookieSigner(secret); + this.config.setCookieSigner(signer); + this.httpAdapter.setCookieSigner?.(signer); + } + host() { + const address = this.httpServer.address(); + if (isString(address)) { + return void 0; + } + return address && address.address; + } + getProtocol() { + return this.appOptions && this.appOptions.httpsOptions ? "https" : "http"; + } + /** + * Request-level security features are installed as a framework middleware + * or hook. After `init()` it would land behind the routes (Express) or be + * rejected by the framework (Fastify), leaving routes silently unprotected, + * so they fail loudly instead. A second call is rejected as well, as it + * would silently replace the first configuration. + */ + assertSecurityFeatureCanBeEnabled(methodName) { + if (!this.httpAdapter.registerSecurityHook) { + throw new Error(`Your HTTP Adapter does not support \`.${methodName}()\`.`); + } + if (this.isInitialized) { + throw new Error(`app.${methodName}() must be called before app.init() / app.listen().`); + } + if (this.enabledSecurityFeatures.has(methodName)) { + throw new Error(`app.${methodName}() can only be called once.`); + } + } + /** + * Both security features share one request hook, so that they run in a + * fixed order (headers, then the CSRF check) whichever is enabled first. + * It is registered with the adapter the first time either is enabled, + * i.e. at that position in the middleware chain. + */ + getSecurityHook() { + if (!this.securityHook) { + const hook = new HttpSecurityHook(); + this.httpAdapter.registerSecurityHook((request, response) => hook.handle(request, response)); + this.securityHook = hook; + } + return this.securityHook; + } + async registerMiddleware(instance) { + await this.middlewareModule.registerMiddleware(this.middlewareContainer, instance); + } + applyInstanceDecoratorIfRegistered(...instances) { + if (this.appOptions.instrument?.instanceDecorator) { + const decorate = makeSafeInstanceDecorator(this.appOptions.instrument.instanceDecorator); + return instances.map((instance) => decorate(instance)); + } + return instances; + } + applyFunctionDecoratorIfRegistered(args) { + if (!this.appOptions.instrument?.instanceDecorator) { + return args; + } + const decorate = makeSafeInstanceDecorator(this.appOptions.instrument.instanceDecorator); + const decorateFunction = /* @__PURE__ */ __name((arg) => { + if (!isFunction(arg)) { + return arg; + } + const decorated = decorate(arg); + return isFunction(decorated) ? decorated : arg; + }, "decorateFunction"); + return args.map(decorateFunction); + } + async loadSocketModule() { + if (!this.socketModule) { + const socketModule = await optionalRequire("@nestjs/websockets/socket-module", () => import("@nestjs/websockets/socket-module.js")); + if (socketModule?.SocketModule) { + this.socketModule = new socketModule.SocketModule(); + } + } + } + async loadMicroservicesModule() { + if (!this.microservicesModule) { + const msModule = await optionalRequire("@nestjs/microservices/microservices-module", () => import("@nestjs/microservices/microservices-module.js")); + if (msModule?.MicroservicesModule) { + this.microservicesModule = new msModule.MicroservicesModule(); + await loadPackage("@nestjs/microservices", "NestFactory", () => import("@nestjs/microservices")); + } + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exception-handler.js +var ExceptionHandler; +var init_exception_handler = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exception-handler.js"() { + init_common(); + ExceptionHandler = class _ExceptionHandler { + static { + __name(this, "ExceptionHandler"); + } + static logger = new Logger(_ExceptionHandler.name); + handle(exception) { + _ExceptionHandler.logger.error(exception); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions-zone.js +var DEFAULT_TEARDOWN, ExceptionsZone; +var init_exceptions_zone = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions-zone.js"() { + init_common(); + init_exception_handler(); + DEFAULT_TEARDOWN = /* @__PURE__ */ __name(() => process.exit(1), "DEFAULT_TEARDOWN"); + ExceptionsZone = class { + static { + __name(this, "ExceptionsZone"); + } + static exceptionHandler = new ExceptionHandler(); + static run(callback, teardown = DEFAULT_TEARDOWN, autoFlushLogs) { + try { + callback(); + } catch (e) { + this.exceptionHandler.handle(e); + if (autoFlushLogs) { + Logger.flush(); + } + teardown(e); + } + } + static async asyncRun(callback, teardown = DEFAULT_TEARDOWN, autoFlushLogs) { + try { + await callback(); + } catch (e) { + this.exceptionHandler.handle(e); + if (autoFlushLogs) { + Logger.flush(); + } + teardown(e); + } + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/load-adapter.js +async function loadAdapter(defaultPlatform, transport, loaderFn) { + try { + return loaderFn ? await loaderFn() : await import(defaultPlatform); + } catch (e) { + logger2.error(MISSING_REQUIRED_DEPENDENCY(defaultPlatform, transport)); + process.exit(1); + } +} +var MISSING_REQUIRED_DEPENDENCY, logger2; +var init_load_adapter = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/load-adapter.js"() { + init_common(); + MISSING_REQUIRED_DEPENDENCY = /* @__PURE__ */ __name((defaultPlatform, transport) => `No driver (${transport}) has been selected. In order to use the default driver, please, install the "${defaultPlatform}" package ($ npm install ${defaultPlatform}).`, "MISSING_REQUIRED_DEPENDENCY"); + logger2 = new Logger("PackageLoader"); + __name(loadAdapter, "loadAdapter"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/rethrow.js +var rethrow; +var init_rethrow = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/helpers/rethrow.js"() { + rethrow = /* @__PURE__ */ __name((err) => { + throw err; + }, "rethrow"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/instance-loader.js +var InstanceLoader; +var init_instance_loader = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/instance-loader.js"() { + init_common(); + init_discoverable_meta_host_collection(); + init_messages2(); + init_internal_core_module(); + InstanceLoader = class _InstanceLoader { + static { + __name(this, "InstanceLoader"); + } + container; + injector; + graphInspector; + logger; + constructor(container, injector, graphInspector, logger3 = new Logger(_InstanceLoader.name, { + timestamp: true + })) { + this.container = container; + this.injector = injector; + this.graphInspector = graphInspector; + this.logger = logger3; + } + setLogger(logger3) { + this.logger = logger3; + } + async createInstancesOfDependencies(modules = this.container.getModules()) { + this.createPrototypes(modules); + try { + await this.createInstances(modules); + } catch (err) { + this.graphInspector.inspectModules(modules); + this.graphInspector.registerPartial(err); + throw err; + } + this.graphInspector.inspectModules(modules); + } + createPrototypes(modules) { + modules.forEach((moduleRef) => { + this.createPrototypesOfProviders(moduleRef); + this.createPrototypesOfInjectables(moduleRef); + this.createPrototypesOfControllers(moduleRef); + }); + } + async createInstances(modules) { + await Promise.all([...modules.values()].map(async (moduleRef) => { + await this.createInstancesOfProviders(moduleRef); + await this.createInstancesOfInjectables(moduleRef); + await this.createInstancesOfControllers(moduleRef); + const { name } = moduleRef; + this.isModuleWhitelisted(name) && this.logger.log(MODULE_INIT_MESSAGE`${name}`); + })); + } + createPrototypesOfProviders(moduleRef) { + const { providers } = moduleRef; + providers.forEach((wrapper) => this.injector.loadPrototype(wrapper, providers)); + } + async createInstancesOfProviders(moduleRef) { + const { providers } = moduleRef; + const wrappers = [...providers.values()]; + await Promise.all(wrappers.map(async (item) => { + await this.injector.loadProvider(item, moduleRef); + this.graphInspector.inspectInstanceWrapper(item, moduleRef); + if (!item.isAlias) { + DiscoverableMetaHostCollection.inspectProvider(this.container.getModules(), item); + } + })); + } + createPrototypesOfControllers(moduleRef) { + const { controllers } = moduleRef; + controllers.forEach((wrapper) => this.injector.loadPrototype(wrapper, controllers)); + } + async createInstancesOfControllers(moduleRef) { + const { controllers } = moduleRef; + const wrappers = [...controllers.values()]; + await Promise.all(wrappers.map(async (item) => { + await this.injector.loadController(item, moduleRef); + this.graphInspector.inspectInstanceWrapper(item, moduleRef); + })); + } + createPrototypesOfInjectables(moduleRef) { + const { injectables } = moduleRef; + injectables.forEach((wrapper) => this.injector.loadPrototype(wrapper, injectables)); + } + async createInstancesOfInjectables(moduleRef) { + const { injectables } = moduleRef; + const wrappers = [...injectables.values()]; + await Promise.all(wrappers.map(async (item) => { + await this.injector.loadInjectable(item, moduleRef); + this.graphInspector.inspectInstanceWrapper(item, moduleRef); + })); + } + isModuleWhitelisted(name) { + return name !== InternalCoreModule.name; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/noop-graph-inspector.js +var noop4, NoopGraphInspector; +var init_noop_graph_inspector = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/inspector/noop-graph-inspector.js"() { + init_graph_inspector(); + noop4 = /* @__PURE__ */ __name(() => { + }, "noop"); + NoopGraphInspector = new Proxy(GraphInspector.prototype, { + get: /* @__PURE__ */ __name(() => noop4, "get") + }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-class-module.exception.js +var InvalidClassModuleException; +var init_invalid_class_module_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-class-module.exception.js"() { + init_messages(); + init_runtime_exception(); + InvalidClassModuleException = class extends RuntimeException { + static { + __name(this, "InvalidClassModuleException"); + } + constructor(metatypeUsedAsAModule, scope, classKind) { + super(USING_INVALID_CLASS_AS_A_MODULE_MESSAGE(metatypeUsedAsAModule, scope, classKind)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-module.exception.js +var InvalidModuleException; +var init_invalid_module_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/invalid-module.exception.js"() { + init_messages(); + init_runtime_exception(); + InvalidModuleException = class extends RuntimeException { + static { + __name(this, "InvalidModuleException"); + } + constructor(parentModule, index, scope, receivedValue) { + super(INVALID_MODULE_MESSAGE(parentModule, index, scope, receivedValue)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/request-scoped-global-enhancer.exception.js +var RequestScopedGlobalEnhancerException; +var init_request_scoped_global_enhancer_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/request-scoped-global-enhancer.exception.js"() { + init_messages(); + init_runtime_exception(); + RequestScopedGlobalEnhancerException = class extends RuntimeException { + static { + __name(this, "RequestScopedGlobalEnhancerException"); + } + constructor(enhancerToken, provider, kind) { + super(REQUEST_SCOPED_GLOBAL_ENHANCER_MESSAGE(enhancerToken, provider, kind)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/undefined-module.exception.js +var UndefinedModuleException; +var init_undefined_module_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/undefined-module.exception.js"() { + init_runtime_exception(); + init_messages(); + UndefinedModuleException = class extends RuntimeException { + static { + __name(this, "UndefinedModuleException"); + } + constructor(parentModule, index, scope) { + super(UNDEFINED_MODULE_MESSAGE(parentModule, index, scope)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/uninstantiated-global-enhancer.exception.js +var UninstantiatedGlobalEnhancerException; +var init_uninstantiated_global_enhancer_exception = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/errors/exceptions/uninstantiated-global-enhancer.exception.js"() { + init_messages(); + init_runtime_exception(); + UninstantiatedGlobalEnhancerException = class extends RuntimeException { + static { + __name(this, "UninstantiatedGlobalEnhancerException"); + } + constructor(enhancerToken, provider) { + super(UNINSTANTIATED_GLOBAL_ENHANCER_MESSAGE(enhancerToken, provider)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-core-module/internal-core-module-factory.js +var InternalCoreModuleFactory; +var init_internal_core_module_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-core-module/internal-core-module-factory.js"() { + init_common(); + init_external_context_creator(); + init_http_adapter_host(); + init_initialize_on_preview_allowlist(); + init_serialized_graph(); + init_injector(); + init_instance_loader(); + init_lazy_module_loader(); + init_modules_container(); + init_internal_core_module(); + InternalCoreModuleFactory = class { + static { + __name(this, "InternalCoreModuleFactory"); + } + static create(container, scanner, moduleCompiler, httpAdapterHost, graphInspector, moduleOverrides) { + const lazyModuleLoaderFactory = /* @__PURE__ */ __name(() => { + const logger3 = new Logger(LazyModuleLoader.name, { + timestamp: false + }); + const injector = new Injector({ + preview: container.contextOptions?.preview ?? false, + instanceDecorator: container.contextOptions?.instrument?.instanceDecorator + }); + const instanceLoader = new InstanceLoader(container, injector, graphInspector, logger3); + return new LazyModuleLoader(scanner, instanceLoader, moduleCompiler, container.getModules(), moduleOverrides); + }, "lazyModuleLoaderFactory"); + InitializeOnPreviewAllowlist.add(InternalCoreModule); + return InternalCoreModule.register([ + { + provide: ExternalContextCreator, + useFactory: /* @__PURE__ */ __name(() => ExternalContextCreator.fromContainer(container), "useFactory") + }, + { + provide: ModulesContainer, + useFactory: /* @__PURE__ */ __name(() => container.getModules(), "useFactory") + }, + { + provide: HttpAdapterHost, + useFactory: /* @__PURE__ */ __name(() => httpAdapterHost, "useFactory") + }, + { + provide: LazyModuleLoader, + useFactory: lazyModuleLoaderFactory + }, + { + provide: SerializedGraph, + useFactory: /* @__PURE__ */ __name(() => container.serializedGraph, "useFactory") + } + ]); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/topology-tree/tree-node.js +var TreeNode; +var init_tree_node = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/topology-tree/tree-node.js"() { + TreeNode = class { + static { + __name(this, "TreeNode"); + } + value; + children = /* @__PURE__ */ new Set(); + parent; + constructor({ value, parent }) { + this.value = value; + this.parent = parent; + } + addChild(child) { + this.children.add(child); + } + removeChild(child) { + this.children.delete(child); + } + relink(parent) { + this.parent?.removeChild(this); + this.parent = parent; + this.parent.addChild(this); + } + getDepth() { + const visited = /* @__PURE__ */ new Set(); + let depth = 0; + let current = this; + while (current) { + depth++; + current = current.parent; + if (visited.has(current)) { + return -1; + } + visited.add(current); + } + return depth; + } + hasCycleWith(target) { + const visited = /* @__PURE__ */ new Set(); + let current = this; + while (current) { + if (current.value === target) { + return true; + } + current = current.parent; + if (visited.has(current)) { + return false; + } + visited.add(current); + } + return false; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/topology-tree/topology-tree.js +var TopologyTree; +var init_topology_tree = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/topology-tree/topology-tree.js"() { + init_tree_node(); + TopologyTree = class { + static { + __name(this, "TopologyTree"); + } + root; + links = /* @__PURE__ */ new Map(); + constructor(moduleRef) { + this.root = new TreeNode({ + value: moduleRef, + parent: null + }); + this.links.set(moduleRef, this.root); + this.traverseAndMapToTree(this.root); + } + walk(callback) { + function walkNode(node, depth = 1) { + callback(node.value, depth); + node.children.forEach((child) => walkNode(child, depth + 1)); + } + __name(walkNode, "walkNode"); + walkNode(this.root); + } + traverseAndMapToTree(node, depth = 1) { + if (!node.value.imports) { + return; + } + node.value.imports.forEach((child) => { + if (!child) { + return; + } + if (this.links.has(child)) { + const existingSubtree = this.links.get(child); + if (node.hasCycleWith(child)) { + return; + } + const existingDepth = existingSubtree.getDepth(); + if (existingDepth < depth) { + existingSubtree.relink(node); + } + return; + } + const childNode = new TreeNode({ + value: child, + parent: node + }); + node.addChild(childNode); + this.links.set(child, childNode); + this.traverseAndMapToTree(childNode, depth + 1); + }); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/scanner.js +var import_iterare18, DependenciesScanner; +var init_scanner = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/scanner.js"() { + import_iterare18 = __toESM(require_lib(), 1); + init_application_config(); + init_constants2(); + init_circular_dependency_exception(); + init_invalid_class_module_exception(); + init_invalid_module_exception(); + init_request_scoped_global_enhancer_exception(); + init_undefined_module_exception(); + init_uninstantiated_global_enhancer_exception(); + init_get_class_scope(); + init_constants3(); + init_internal_core_module_factory(); + init_topology_tree(); + init_uuid_factory(); + init_internal(); + init_common(); + DependenciesScanner = class { + static { + __name(this, "DependenciesScanner"); + } + container; + metadataScanner; + graphInspector; + applicationConfig; + applicationProvidersApplyMap = []; + constructor(container, metadataScanner, graphInspector, applicationConfig = new ApplicationConfig()) { + this.container = container; + this.metadataScanner = metadataScanner; + this.graphInspector = graphInspector; + this.applicationConfig = applicationConfig; + } + async scan(module, options) { + await this.registerCoreModule(options?.overrides); + await this.scanForModules({ + moduleDefinition: module, + overrides: options?.overrides + }); + await this.scanModulesForDependencies(); + this.addScopedEnhancersMetadata(); + this.calculateModulesDistance(); + this.container.bindGlobalScope(); + } + async scanForModules({ moduleDefinition, lazy, scope = [], ctxRegistry = [], overrides = [] }) { + const { moduleRef: moduleInstance, inserted: moduleInserted } = await this.insertOrOverrideModule(moduleDefinition, overrides, scope) ?? {}; + if (lazy && !moduleInserted && moduleInstance?.isInstantiated) { + return []; + } + moduleDefinition = this.getOverrideModuleByModule(moduleDefinition, overrides)?.newModule ?? moduleDefinition; + moduleDefinition = moduleDefinition instanceof Promise ? await moduleDefinition : moduleDefinition; + ctxRegistry.push(moduleDefinition); + if (this.isForwardReference(moduleDefinition)) { + moduleDefinition = moduleDefinition.forwardRef(); + } + const modules = !this.isDynamicModule(moduleDefinition) ? this.reflectMetadata(MODULE_METADATA.IMPORTS, moduleDefinition) : [ + ...this.reflectMetadata(MODULE_METADATA.IMPORTS, moduleDefinition.module), + ...moduleDefinition.imports || [] + ]; + let registeredModuleRefs = []; + for (const [index, innerModule] of modules.entries()) { + if (innerModule === void 0) { + throw new UndefinedModuleException(moduleDefinition, index, scope); + } + if (!innerModule) { + throw new InvalidModuleException(moduleDefinition, index, scope, innerModule); + } + if (ctxRegistry.includes(innerModule)) { + continue; + } + const moduleRefs = await this.scanForModules({ + moduleDefinition: innerModule, + scope: [].concat(scope, moduleDefinition), + ctxRegistry, + overrides, + lazy + }); + registeredModuleRefs = registeredModuleRefs.concat(moduleRefs); + } + if (!moduleInstance) { + return registeredModuleRefs; + } + if (lazy) { + this.container.bindGlobalsToImports(moduleInstance); + } + return [moduleInstance].concat(registeredModuleRefs); + } + async insertModule(moduleDefinition, scope) { + const moduleToAdd = this.isForwardReference(moduleDefinition) ? moduleDefinition.forwardRef() : moduleDefinition; + if (this.isInjectable(moduleToAdd)) { + throw new InvalidClassModuleException(moduleDefinition, scope, "provider"); + } + if (this.isController(moduleToAdd)) { + throw new InvalidClassModuleException(moduleDefinition, scope, "controller"); + } + if (this.isExceptionFilter(moduleToAdd)) { + throw new InvalidClassModuleException(moduleDefinition, scope, "filter"); + } + return this.container.addModule(moduleToAdd, scope); + } + async scanModulesForDependencies(modules = this.container.getModules()) { + for (const [token, { metatype }] of modules) { + await this.reflectImports(metatype, token, metatype.name); + this.reflectProviders(metatype, token); + this.reflectControllers(metatype, token); + this.reflectExports(metatype, token); + } + } + async reflectImports(module, token, context) { + const modules = [ + ...this.reflectMetadata(MODULE_METADATA.IMPORTS, module), + ...this.container.getDynamicMetadataByToken(token, MODULE_METADATA.IMPORTS) + ]; + for (const related of modules) { + await this.insertImport(related, token, context); + } + } + reflectProviders(module, token) { + const providers = [ + ...this.reflectMetadata(MODULE_METADATA.PROVIDERS, module), + ...this.container.getDynamicMetadataByToken(token, MODULE_METADATA.PROVIDERS) + ]; + const applyProvidersKeys = Object.keys(this.getApplyProvidersMap()); + providers.forEach((provider) => { + this.insertProvider(provider, token); + if (!this.isCustomProvider(provider)) { + return this.reflectDynamicMetadata(provider, token); + } + const { provide, useClass } = provider; + if (!applyProvidersKeys.includes(provide)) { + this.reflectDynamicMetadata(useClass, token, provide); + } + }); + } + reflectControllers(module, token) { + const controllers = [ + ...this.reflectMetadata(MODULE_METADATA.CONTROLLERS, module), + ...this.container.getDynamicMetadataByToken(token, MODULE_METADATA.CONTROLLERS) + ]; + controllers.forEach((item) => { + this.insertController(item, token); + this.reflectDynamicMetadata(item, token); + }); + } + reflectDynamicMetadata(cls, token, hostToken = cls) { + if (!cls || !cls.prototype) { + return; + } + this.reflectInjectables(cls, token, GUARDS_METADATA, hostToken); + this.reflectInjectables(cls, token, INTERCEPTORS_METADATA, hostToken); + this.reflectInjectables(cls, token, EXCEPTION_FILTERS_METADATA, hostToken); + this.reflectInjectables(cls, token, PIPES_METADATA, hostToken); + this.reflectParamInjectables(cls, token, ROUTE_ARGS_METADATA, hostToken); + } + reflectExports(module, token) { + const exports = [ + ...this.reflectMetadata(MODULE_METADATA.EXPORTS, module), + ...this.container.getDynamicMetadataByToken(token, MODULE_METADATA.EXPORTS) + ]; + exports.forEach((exportedProvider) => this.insertExportedProviderOrModule(exportedProvider, token)); + } + reflectInjectables(component, token, metadataKey, hostToken = component) { + const controllerInjectables = this.reflectMetadata(metadataKey, component); + const methodInjectables = this.metadataScanner.getAllMethodNames(component.prototype).reduce((acc, method) => { + const methodInjectable = this.reflectKeyMetadata(component, metadataKey, method); + if (methodInjectable) { + acc.push(methodInjectable); + } + return acc; + }, []); + controllerInjectables.forEach((injectable) => this.insertInjectable(injectable, token, hostToken, ENHANCER_KEY_TO_SUBTYPE_MAP[metadataKey])); + methodInjectables.forEach((methodInjectable) => { + methodInjectable.metadata.forEach((injectable) => this.insertInjectable(injectable, token, hostToken, ENHANCER_KEY_TO_SUBTYPE_MAP[metadataKey], methodInjectable.methodKey)); + }); + } + reflectParamInjectables(component, token, metadataKey, hostToken = component) { + const paramsMethods = this.metadataScanner.getAllMethodNames(component.prototype); + paramsMethods.forEach((methodKey) => { + const metadata = Reflect.getMetadata(metadataKey, component, methodKey); + if (!metadata) { + return; + } + const params = Object.values(metadata); + params.map((item) => item.pipes).flat(1).forEach((injectable) => this.insertInjectable(injectable, token, hostToken, "pipe", methodKey)); + }); + } + reflectKeyMetadata(component, key, methodKey) { + let prototype = component.prototype; + do { + const descriptor = Reflect.getOwnPropertyDescriptor(prototype, methodKey); + if (!descriptor) { + continue; + } + const metadata = Reflect.getMetadata(key, descriptor.value); + if (!metadata) { + return; + } + return { methodKey, metadata }; + } while ((prototype = Reflect.getPrototypeOf(prototype)) && prototype !== Object.prototype && prototype); + return void 0; + } + calculateModulesDistance() { + const modulesGenerator = this.container.getModules().values(); + modulesGenerator.next(); + const rootModule = modulesGenerator.next().value; + if (!rootModule) { + return; + } + const tree = new TopologyTree(rootModule); + tree.walk((moduleRef, depth) => { + if (moduleRef.isGlobal) { + return; + } + moduleRef.distance = depth; + }); + } + async insertImport(related, token, context) { + if (isUndefined(related)) { + throw new CircularDependencyException(context); + } + if (this.isForwardReference(related)) { + return this.container.addImport(related.forwardRef(), token); + } + await this.container.addImport(related, token); + } + isCustomProvider(provider) { + return provider && !isNil(provider.provide); + } + insertProvider(provider, token) { + const isCustomProvider = this.isCustomProvider(provider); + if (!isCustomProvider) { + return this.container.addProvider(provider, token); + } + const applyProvidersMap = this.getApplyProvidersMap(); + const providersKeys = Object.keys(applyProvidersMap); + const type = provider.provide; + if (!providersKeys.includes(type)) { + return this.container.addProvider(provider, token); + } + const uuid = UuidFactory.get(type.toString()); + const providerToken = `${type} (UUID: ${uuid})`; + let scope = provider.scope; + if (isNil(scope) && provider.useClass) { + scope = getClassScope(provider.useClass); + } + const existing = provider.useExisting; + if (isNil(scope) && isFunction(existing)) { + scope = getClassScope(existing); + } + this.applicationProvidersApplyMap.push({ + type, + moduleKey: token, + providerKey: providerToken, + scope + }); + const newProvider = { + ...provider, + provide: providerToken, + scope + }; + const enhancerSubtype = ENHANCER_TOKEN_TO_SUBTYPE_MAP[type]; + const factoryOrClassProvider = newProvider; + if (this.isRequestOrTransient(factoryOrClassProvider.scope)) { + return this.container.addInjectable(newProvider, token, enhancerSubtype); + } + this.container.addProvider(newProvider, token, enhancerSubtype); + } + insertInjectable(injectable, token, host, subtype, methodKey) { + if (isFunction(injectable)) { + const instanceWrapper = this.container.addInjectable(injectable, token, subtype, host); + this.graphInspector.insertEnhancerMetadataCache({ + moduleToken: token, + classRef: host, + enhancerInstanceWrapper: instanceWrapper, + targetNodeId: instanceWrapper.id, + subtype, + methodKey + }); + return instanceWrapper; + } else { + this.graphInspector.insertEnhancerMetadataCache({ + moduleToken: token, + classRef: host, + enhancerRef: injectable, + methodKey, + subtype + }); + } + } + insertExportedProviderOrModule(toExport, token) { + const fulfilledProvider = this.isForwardReference(toExport) ? toExport.forwardRef() : toExport; + this.container.addExportedProviderOrModule(fulfilledProvider, token); + } + insertController(controller, token) { + this.container.addController(controller, token); + } + insertOrOverrideModule(moduleDefinition, overrides, scope) { + const overrideModule = this.getOverrideModuleByModule(moduleDefinition, overrides); + if (overrideModule !== void 0) { + return this.overrideModule(moduleDefinition, overrideModule.newModule, scope); + } + return this.insertModule(moduleDefinition, scope); + } + getOverrideModuleByModule(module, overrides) { + if (this.isForwardReference(module)) { + return overrides.find((moduleToOverride) => { + return moduleToOverride.moduleToReplace === module.forwardRef() || moduleToOverride.moduleToReplace.forwardRef?.() === module.forwardRef(); + }); + } + return overrides.find((moduleToOverride) => moduleToOverride.moduleToReplace === module); + } + async overrideModule(moduleToOverride, newModule, scope) { + return this.container.replaceModule(this.isForwardReference(moduleToOverride) ? moduleToOverride.forwardRef() : moduleToOverride, this.isForwardReference(newModule) ? newModule.forwardRef() : newModule, scope); + } + reflectMetadata(metadataKey, metatype) { + return Reflect.getMetadata(metadataKey, metatype) || []; + } + async registerCoreModule(overrides) { + const moduleDefinition = InternalCoreModuleFactory.create(this.container, this, this.container.getModuleCompiler(), this.container.getHttpAdapterHostRef(), this.graphInspector, overrides); + const [instance] = await this.scanForModules({ + moduleDefinition, + overrides + }); + this.container.registerCoreModuleRef(instance); + } + /** + * Add either request or transient globally scoped enhancers + * to all controllers metadata storage + */ + addScopedEnhancersMetadata() { + (0, import_iterare18.iterate)(this.applicationProvidersApplyMap).filter((wrapper) => this.isRequestOrTransient(wrapper.scope)).forEach(({ moduleKey, providerKey }) => { + const modulesContainer = this.container.getModules(); + const { injectables } = modulesContainer.get(moduleKey); + const instanceWrapper = injectables.get(providerKey); + const iterableIterator = modulesContainer.values(); + (0, import_iterare18.iterate)(iterableIterator).map((moduleRef) => Array.from(moduleRef.controllers.values()).concat(moduleRef.entryProviders)).flatten().forEach((controllerOrEntryProvider) => controllerOrEntryProvider.addEnhancerMetadata(instanceWrapper)); + }); + } + applyApplicationProviders() { + const applyProvidersMap = this.getApplyProvidersMap(); + const applyRequestProvidersMap = this.getApplyRequestProvidersMap(); + const getInstanceWrapper = /* @__PURE__ */ __name((moduleKey, providerKey, collectionKey) => { + const modules = this.container.getModules(); + const collection = modules.get(moduleKey)[collectionKey]; + return collection.get(providerKey); + }, "getInstanceWrapper"); + this.applicationProvidersApplyMap.forEach(({ moduleKey, providerKey, type, scope }) => { + let instanceWrapper; + if (this.isRequestOrTransient(scope)) { + instanceWrapper = getInstanceWrapper(moduleKey, providerKey, "injectables"); + this.graphInspector.insertAttachedEnhancer(instanceWrapper); + return applyRequestProvidersMap[type](instanceWrapper); + } + instanceWrapper = getInstanceWrapper(moduleKey, providerKey, "providers"); + this.graphInspector.insertAttachedEnhancer(instanceWrapper); + if (!instanceWrapper.isDependencyTreeStatic()) { + const [kind, provider] = this.describeEnhancerProvider(instanceWrapper); + throw new RequestScopedGlobalEnhancerException(type, provider, kind); + } + if (!instanceWrapper.getInstanceByContextId(STATIC_CONTEXT).isResolved) { + const [, provider] = this.describeEnhancerProvider(instanceWrapper); + throw new UninstantiatedGlobalEnhancerException(type, provider); + } + applyProvidersMap[type](instanceWrapper.instance); + }); + } + describeEnhancerProvider(wrapper) { + if (wrapper.isAlias) { + const [target] = wrapper.inject ?? []; + const name = isFunction(target) ? target.name : String(target); + return ["useExisting", `useExisting: ${name}`]; + } + if (isNil(wrapper.inject)) { + return ["useClass", `useClass: ${wrapper.metatype.name}`]; + } + return ["useFactory", "useFactory"]; + } + getApplyProvidersMap() { + return { + [APP_INTERCEPTOR]: (interceptor) => this.applicationConfig.addGlobalInterceptor(interceptor), + [APP_PIPE]: (pipe) => this.applicationConfig.addGlobalPipe(pipe), + [APP_GUARD]: (guard) => this.applicationConfig.addGlobalGuard(guard), + [APP_FILTER]: (filter) => this.applicationConfig.addGlobalFilter(filter) + }; + } + getApplyRequestProvidersMap() { + return { + [APP_INTERCEPTOR]: (interceptor) => this.applicationConfig.addGlobalRequestInterceptor(interceptor), + [APP_PIPE]: (pipe) => this.applicationConfig.addGlobalRequestPipe(pipe), + [APP_GUARD]: (guard) => this.applicationConfig.addGlobalRequestGuard(guard), + [APP_FILTER]: (filter) => this.applicationConfig.addGlobalRequestFilter(filter) + }; + } + isDynamicModule(module) { + return module && !!module.module; + } + /** + * @param metatype + * @returns `true` if `metatype` is annotated with the `@Injectable()` decorator. + */ + isInjectable(metatype) { + return !!Reflect.getMetadata(INJECTABLE_WATERMARK, metatype); + } + /** + * @param metatype + * @returns `true` if `metatype` is annotated with the `@Controller()` decorator. + */ + isController(metatype) { + return !!Reflect.getMetadata(CONTROLLER_WATERMARK, metatype); + } + /** + * @param metatype + * @returns `true` if `metatype` is annotated with the `@Catch()` decorator. + */ + isExceptionFilter(metatype) { + return !!Reflect.getMetadata(CATCH_WATERMARK, metatype); + } + isForwardReference(module) { + return module && !!module.forwardRef; + } + isRequestOrTransient(scope) { + return scope === Scope.REQUEST || scope === Scope.TRANSIENT; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/nest-factory.js +var NestFactoryStatic, NestFactory; +var init_nest_factory = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/nest-factory.js"() { + init_application_config(); + init_constants2(); + init_exceptions_zone(); + init_load_adapter(); + init_rethrow(); + init_container(); + init_injector(); + init_instance_loader(); + init_graph_inspector(); + init_noop_graph_inspector(); + init_uuid_factory(); + init_metadata_scanner(); + init_nest_application_context(); + init_nest_application(); + init_scanner(); + init_internal(); + init_common(); + NestFactoryStatic = class { + static { + __name(this, "NestFactoryStatic"); + } + logger = new Logger("NestFactory", { + timestamp: true + }); + abortOnError = true; + autoFlushLogs = false; + async create(moduleCls, serverOrOptions, options) { + const [httpServer, appOptions] = this.isHttpServer(serverOrOptions) ? [serverOrOptions, options] : [await this.createHttpAdapter(), serverOrOptions]; + const applicationConfig = new ApplicationConfig(); + const container = new NestContainer(applicationConfig, appOptions); + const graphInspector = this.createGraphInspector(appOptions, container); + this.setAbortOnError(serverOrOptions, options); + this.registerLoggerConfiguration(appOptions); + await this.initialize(moduleCls, container, graphInspector, applicationConfig, appOptions, httpServer); + const instance = new NestApplication(container, httpServer, applicationConfig, graphInspector, appOptions); + await instance.preloadLazyPackages(); + const target = this.createNestInstance(instance); + return this.createAdapterProxy(target, httpServer); + } + /** + * Creates an instance of NestMicroservice. + * + * @param moduleCls Entry (root) application module class + * @param options Optional microservice configuration + * + * @returns A promise that, when resolved, + * contains a reference to the NestMicroservice instance. + */ + async createMicroservice(moduleCls, options) { + const { NestMicroservice } = await loadPackage("@nestjs/microservices", "NestFactory", () => import("@nestjs/microservices")); + const applicationConfig = new ApplicationConfig(); + const container = new NestContainer(applicationConfig, options); + const graphInspector = this.createGraphInspector(options, container); + this.setAbortOnError(options); + this.registerLoggerConfiguration(options); + await this.initialize(moduleCls, container, graphInspector, applicationConfig, options); + return this.createNestInstance(new NestMicroservice(container, options, graphInspector, applicationConfig)); + } + /** + * Creates an instance of NestApplicationContext. + * + * @param moduleCls Entry (root) application module class + * @param options Optional Nest application configuration + * + * @returns A promise that, when resolved, + * contains a reference to the NestApplicationContext instance. + */ + async createApplicationContext(moduleCls, options) { + const applicationConfig = new ApplicationConfig(); + const container = new NestContainer(applicationConfig, options); + const graphInspector = this.createGraphInspector(options, container); + this.setAbortOnError(options); + this.registerLoggerConfiguration(options); + await this.initialize(moduleCls, container, graphInspector, applicationConfig, options); + const modules = container.getModules().values(); + const root = modules.next().value; + const context = this.createNestInstance(new NestApplicationContext(container, options, root)); + if (this.autoFlushLogs) { + context.flushLogsOnOverride(); + } + return context.init(); + } + createNestInstance(instance) { + return this.createProxy(instance); + } + async initialize(module, container, graphInspector, config = new ApplicationConfig(), options = {}, httpServer = null) { + UuidFactory.mode = options.snapshot ? UuidFactoryMode.Deterministic : UuidFactoryMode.Random; + const injector = new Injector({ + preview: options.preview, + snapshot: options.snapshot, + instanceDecorator: options.instrument?.instanceDecorator + }); + const instanceLoader = new InstanceLoader(container, injector, graphInspector); + const metadataScanner = new MetadataScanner(); + const dependenciesScanner = new DependenciesScanner(container, metadataScanner, graphInspector, config); + container.setHttpAdapter(httpServer); + const teardown = this.abortOnError === false ? rethrow : void 0; + await httpServer?.init?.(); + try { + this.logger.log(MESSAGES.APPLICATION_START); + await ExceptionsZone.asyncRun(async () => { + await dependenciesScanner.scan(module); + await instanceLoader.createInstancesOfDependencies(); + dependenciesScanner.applyApplicationProviders(); + }, teardown, this.autoFlushLogs); + } catch (e) { + this.handleInitializationError(e); + } + } + handleInitializationError(err) { + if (this.abortOnError) { + process.abort(); + } + rethrow(err); + } + createProxy(target) { + const proxy = this.createExceptionProxy(); + return new Proxy(target, { + get: proxy, + set: proxy + }); + } + createExceptionProxy() { + return (receiver, prop) => { + if (!(prop in receiver)) { + return; + } + if (isFunction(receiver[prop])) { + return this.createExceptionZone(receiver, prop); + } + return receiver[prop]; + }; + } + createExceptionZone(receiver, prop) { + const teardown = this.abortOnError === false ? rethrow : void 0; + return (...args) => { + let result; + ExceptionsZone.run(() => { + result = receiver[prop](...args); + }, teardown, this.autoFlushLogs); + return result; + }; + } + registerLoggerConfiguration(options) { + if (!options) { + return; + } + const { logger: logger3, bufferLogs, autoFlushLogs, forceConsole } = options; + if (logger3 !== true && !isNil(logger3)) { + Logger.overrideLogger(logger3); + } else if (forceConsole) { + const consoleLogger = new ConsoleLogger({ forceConsole: true }); + Logger.overrideLogger(consoleLogger); + } + if (bufferLogs) { + Logger.attachBuffer(); + } + this.autoFlushLogs = autoFlushLogs ?? true; + } + async createHttpAdapter(httpServer) { + const { ExpressAdapter: ExpressAdapter2 } = await loadAdapter("@nestjs/platform-express", "HTTP", () => import("./platform-express-MGQH3ALM.js")); + return new ExpressAdapter2(httpServer); + } + isHttpServer(serverOrOptions) { + return !!(serverOrOptions && serverOrOptions.patch); + } + setAbortOnError(serverOrOptions, options) { + this.abortOnError = this.isHttpServer(serverOrOptions) ? !(options && options.abortOnError === false) : !(serverOrOptions && serverOrOptions.abortOnError === false); + } + createAdapterProxy(app, adapter) { + const proxy = new Proxy(app, { + get: /* @__PURE__ */ __name((receiver, prop) => { + const mapToProxy = /* @__PURE__ */ __name((result) => { + return result instanceof Promise ? result.then(mapToProxy) : result instanceof NestApplication ? proxy : result; + }, "mapToProxy"); + if (!(prop in receiver) && prop in adapter) { + return (...args) => { + const result = this.createExceptionZone(adapter, prop)(...args); + return mapToProxy(result); + }; + } + if (isFunction(receiver[prop])) { + return (...args) => { + const result = receiver[prop](...args); + return mapToProxy(result); + }; + } + return receiver[prop]; + }, "get") + }); + return proxy; + } + createGraphInspector(appOptions, container) { + return appOptions?.snapshot ? new GraphInspector(container) : NoopGraphInspector; + } + }; + NestFactory = new NestFactoryStatic(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/assign-to-object.util.js +function assignToObject(target, source) { + Object.defineProperties(target, Object.keys(source).reduce((descriptors, key) => { + descriptors[key] = Object.getOwnPropertyDescriptor(source, key); + return descriptors; + }, /* @__PURE__ */ Object.create(null))); + return target; +} +var init_assign_to_object_util = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/assign-to-object.util.js"() { + __name(assignToObject, "assignToObject"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/constants.js +var REPL_INITIALIZED_MESSAGE; +var init_constants5 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/constants.js"() { + REPL_INITIALIZED_MESSAGE = "REPL initialized"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-function.js +var ReplFunction; +var init_repl_function = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-function.js"() { + init_internal(); + ReplFunction = class { + static { + __name(this, "ReplFunction"); + } + ctx; + logger; + constructor(ctx) { + this.ctx = ctx; + this.logger = ctx.logger; + } + /** + * @returns A message displayed by calling `.help` + */ + makeHelpMessage() { + const { description, name, signature } = this.fnDefinition; + const fnSignatureWithName = `${name}${signature}`; + return `${clc.yellow(description)} +${clc.magentaBright("Interface:")} ${clc.bold(fnSignatureWithName)} +`; + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/help-repl-fn.js +var import_iterare19, HelpReplFn; +var init_help_repl_fn = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/help-repl-fn.js"() { + import_iterare19 = __toESM(require_lib(), 1); + init_repl_function(); + init_internal(); + HelpReplFn = class _HelpReplFn extends ReplFunction { + static { + __name(this, "HelpReplFn"); + } + fnDefinition = { + name: "help", + signature: "() => void", + description: "Display all available REPL native functions." + }; + static buildHelpMessage = /* @__PURE__ */ __name(({ name, description }) => clc.cyanBright(name) + (description ? ` ${clc.bold("-")} ${description}` : ""), "buildHelpMessage"); + action() { + const sortedNativeFunctions = (0, import_iterare19.iterate)(this.ctx.nativeFunctions).map(([, nativeFunction]) => nativeFunction.fnDefinition).toArray().sort((a, b) => a.name < b.name ? -1 : 1); + this.ctx.writeToStdout(`You can call ${clc.bold(".help")} on any function listed below (e.g.: ${clc.bold("help.help")}): + +` + sortedNativeFunctions.map(_HelpReplFn.buildHelpMessage).join("\n") + // Without the following LF the last item won't be displayed + "\n"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/get-repl-fn.js +var GetReplFn; +var init_get_repl_fn = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/get-repl-fn.js"() { + init_repl_function(); + GetReplFn = class extends ReplFunction { + static { + __name(this, "GetReplFn"); + } + fnDefinition = { + name: "get", + signature: "(token: InjectionToken) => any", + description: "Retrieves an instance of either injectable or controller, otherwise, throws exception.", + aliases: ["$"] + }; + action(token) { + return this.ctx.app.get(token); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/resolve-repl-fn.js +var ResolveReplFn; +var init_resolve_repl_fn = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/resolve-repl-fn.js"() { + init_repl_function(); + ResolveReplFn = class extends ReplFunction { + static { + __name(this, "ResolveReplFn"); + } + fnDefinition = { + name: "resolve", + description: "Resolves transient or request-scoped instance of either injectable or controller, otherwise, throws exception.", + signature: "(token: InjectionToken, contextId: any) => Promise" + }; + action(token, contextId) { + return this.ctx.app.resolve(token, contextId); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/select-relp-fn.js +var SelectReplFn; +var init_select_relp_fn = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/select-relp-fn.js"() { + init_repl_function(); + SelectReplFn = class extends ReplFunction { + static { + __name(this, "SelectReplFn"); + } + fnDefinition = { + name: "select", + description: "Allows navigating through the modules tree, for example, to pull out a specific instance from the selected module.", + signature: "(token: DynamicModule | ClassRef) => INestApplicationContext" + }; + action(token) { + return this.ctx.app.select(token); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/debug-repl-fn.js +var DebugReplFn; +var init_debug_repl_fn = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/debug-repl-fn.js"() { + init_repl_function(); + init_internal(); + DebugReplFn = class extends ReplFunction { + static { + __name(this, "DebugReplFn"); + } + fnDefinition = { + name: "debug", + description: 'Print all registered modules as a list together with their controllers and providers.\nIf the argument is passed in, for example, "debug(MyModule)" then it will only print components of this specific module.', + signature: "(moduleCls?: ClassRef | string) => void" + }; + action(moduleCls) { + this.ctx.writeToStdout("\n"); + if (moduleCls) { + const token = typeof moduleCls === "function" ? moduleCls.name : moduleCls; + const moduleEntry = this.ctx.debugRegistry[token]; + if (!moduleEntry) { + return this.logger.error(`"${token}" has not been found in the modules registry`); + } + this.printCtrlsAndProviders(token, moduleEntry); + } else { + for (const [moduleKey, entry] of Object.entries(this.ctx.debugRegistry)) { + this.printCtrlsAndProviders(moduleKey, entry); + } + } + this.ctx.writeToStdout("\n"); + } + printCtrlsAndProviders(moduleName, moduleDebugEntry) { + this.ctx.writeToStdout(`${clc.green(moduleName)}: +`); + this.printCollection("controllers", moduleDebugEntry["controllers"]); + this.printCollection("providers", moduleDebugEntry["providers"]); + } + printCollection(title, collectionValue) { + const collectionEntries = Object.keys(collectionValue); + if (collectionEntries.length <= 0) { + return; + } + this.ctx.writeToStdout(` ${clc.yellow(`- ${title}`)}: +`); + collectionEntries.forEach((provider) => this.ctx.writeToStdout(` ${clc.green("\u25FB")} ${provider} +`)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/methods-repl-fn.js +var MethodsReplFn; +var init_methods_repl_fn = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/methods-repl-fn.js"() { + init_metadata_scanner(); + init_repl_function(); + init_internal(); + MethodsReplFn = class extends ReplFunction { + static { + __name(this, "MethodsReplFn"); + } + fnDefinition = { + name: "methods", + description: "Display all public methods available on a given provider or controller.", + signature: "(token: ClassRef | string) => void" + }; + metadataScanner = new MetadataScanner(); + action(token) { + const proto = typeof token !== "function" ? Object.getPrototypeOf(this.ctx.app.get(token)) : token?.prototype; + const methods = this.metadataScanner.getAllMethodNames(proto); + this.ctx.writeToStdout("\n"); + this.ctx.writeToStdout(`${clc.green("Methods")}: +`); + methods.forEach((methodName) => this.ctx.writeToStdout(` ${clc.yellow("\u25FB")} ${methodName} +`)); + this.ctx.writeToStdout("\n"); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/index.js +var init_native_functions = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/native-functions/index.js"() { + init_help_repl_fn(); + init_get_repl_fn(); + init_resolve_repl_fn(); + init_select_relp_fn(); + init_debug_repl_fn(); + init_methods_repl_fn(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-context.js +var ReplContext; +var init_repl_context = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-context.js"() { + init_common(); + init_application_config(); + init_injector2(); + init_internal_core_module(); + init_native_functions(); + ReplContext = class _ReplContext { + static { + __name(this, "ReplContext"); + } + app; + logger = new Logger(_ReplContext.name); + debugRegistry = {}; + globalScope = /* @__PURE__ */ Object.create(null); + nativeFunctions = /* @__PURE__ */ new Map(); + container; + constructor(app, nativeFunctionsClassRefs) { + this.app = app; + this.container = app.container; + this.initializeContext(); + this.initializeNativeFunctions(nativeFunctionsClassRefs || []); + } + writeToStdout(text) { + process.stdout.write(text); + } + initializeContext() { + const modules = this.container.getModules(); + modules.forEach((moduleRef) => { + let moduleName = moduleRef.metatype.name; + if (moduleName === InternalCoreModule.name) { + return; + } + if (this.globalScope[moduleName]) { + moduleName += ` (${moduleRef.token})`; + } + this.introspectCollection(moduleRef, moduleName, "providers"); + this.introspectCollection(moduleRef, moduleName, "controllers"); + Object.defineProperty(this.globalScope, moduleName, { + value: moduleRef.metatype, + configurable: false, + enumerable: true + }); + }); + } + introspectCollection(moduleRef, moduleKey, collection) { + const moduleDebugEntry = {}; + moduleRef[collection].forEach(({ token }) => { + const stringifiedToken = this.stringifyToken(token); + if (stringifiedToken === ApplicationConfig.name || stringifiedToken === moduleRef.metatype.name) { + return; + } + if (!this.globalScope[stringifiedToken]) { + Object.defineProperty(this.globalScope, stringifiedToken, { + value: token, + configurable: false, + enumerable: true + }); + } + if (stringifiedToken === ModuleRef.name) { + return; + } + moduleDebugEntry[stringifiedToken] = token; + }); + this.debugRegistry[moduleKey] = { + ...this.debugRegistry?.[moduleKey], + [collection]: moduleDebugEntry + }; + } + stringifyToken(token) { + return typeof token !== "string" ? typeof token === "function" ? token.name : token?.toString() : `"${token}"`; + } + addNativeFunction(NativeFunctionRef) { + const nativeFunction = new NativeFunctionRef(this); + const nativeFunctions = [nativeFunction]; + this.nativeFunctions.set(nativeFunction.fnDefinition.name, nativeFunction); + nativeFunction.fnDefinition.aliases?.forEach((aliasName) => { + const aliasNativeFunction = Object.create(nativeFunction); + aliasNativeFunction.fnDefinition = { + name: aliasName, + description: aliasNativeFunction.fnDefinition.description, + signature: aliasNativeFunction.fnDefinition.signature + }; + this.nativeFunctions.set(aliasName, aliasNativeFunction); + nativeFunctions.push(aliasNativeFunction); + }); + return nativeFunctions; + } + registerFunctionIntoGlobalScope(nativeFunction) { + this.globalScope[nativeFunction.fnDefinition.name] = nativeFunction.action.bind(nativeFunction); + const functionBoundRef = this.globalScope[nativeFunction.fnDefinition.name]; + Object.defineProperty(functionBoundRef, "help", { + enumerable: false, + configurable: false, + get: /* @__PURE__ */ __name(() => ( + // Dynamically builds the help message as will unlikely to be called + // several times. + this.writeToStdout(nativeFunction.makeHelpMessage()) + ), "get") + }); + } + initializeNativeFunctions(nativeFunctionsClassRefs) { + const builtInFunctionsClassRefs = [ + HelpReplFn, + GetReplFn, + ResolveReplFn, + SelectReplFn, + DebugReplFn, + MethodsReplFn + ]; + builtInFunctionsClassRefs.concat(nativeFunctionsClassRefs).forEach((NativeFunction) => { + const nativeFunctions = this.addNativeFunction(NativeFunction); + nativeFunctions.forEach((nativeFunction) => { + this.registerFunctionIntoGlobalScope(nativeFunction); + }); + }); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-logger.js +var ReplLogger; +var init_repl_logger = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-logger.js"() { + init_common(); + init_nest_application(); + init_router_explorer(); + init_routes_resolver(); + ReplLogger = class _ReplLogger extends ConsoleLogger { + static { + __name(this, "ReplLogger"); + } + static ignoredContexts = [ + RoutesResolver.name, + RouterExplorer.name, + NestApplication.name + ]; + log(_message, context) { + if (_ReplLogger.ignoredContexts.includes(context)) { + return; + } + return super.log.apply(this, Array.from(arguments)); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-native-commands.js +function listAllCommands(replServer) { + Object.keys(replServer.commands).sort().forEach((name) => { + const cmd = replServer.commands[name]; + if (cmd) { + replServer.output.write(`${name} ${cmd.help || ""} +`); + } + }); +} +function defineDefaultCommandsOnRepl(replServer) { + replServer.defineCommand("help", { + help: "Show REPL options", + action(name) { + this.clearBufferedCommand(); + if (name) { + const nativeCommandOrFunction = this.commands[name] || this.context[name]; + const helpMessage = nativeCommandOrFunction?.help; + if (helpMessage) { + this.output.write(`${helpMessage} +`); + } + } else { + listAllCommands(this); + this.output.write("\n\n"); + this.context.help(); + this.output.write("\nPress Ctrl+C to abort current expression, Ctrl+D to exit the REPL\n"); + } + this.displayPrompt(); + } + }); +} +var init_repl_native_commands = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl-native-commands.js"() { + __name(listAllCommands, "listAllCommands"); + __name(defineDefaultCommandsOnRepl, "defineDefaultCommandsOnRepl"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl.js +async function repl(module, replOptions = {}) { + const app = await NestFactory.createApplicationContext(module, { + abortOnError: false, + logger: new ReplLogger() + }); + await app.init(); + const replContext = new ReplContext(app); + Logger.log(REPL_INITIALIZED_MESSAGE); + const _repl = await import("repl"); + const replServer = _repl.start({ + prompt: clc.green("> "), + ignoreUndefined: true, + ...replOptions + }); + assignToObject(replServer.context, replContext.globalScope); + defineDefaultCommandsOnRepl(replServer); + replServer.on("exit", async () => { + await app.close(); + }); + return replServer; +} +var init_repl = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/repl.js"() { + init_common(); + init_nest_factory(); + init_assign_to_object_util(); + init_constants5(); + init_repl_context(); + init_repl_logger(); + init_repl_native_commands(); + init_internal(); + __name(repl, "repl"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/index.js +var init_repl2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/repl/index.js"() { + init_repl(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/resolved-route.interface.js +var init_resolved_route_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/resolved-route.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/route-conflict.interface.js +var init_route_conflict_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/route-conflict.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/route-resolution-options.interface.js +var init_route_resolution_options_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/route-resolution-options.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/routes.interface.js +var init_routes_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/routes.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/index.js +var init_interfaces = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/interfaces/index.js"() { + init_resolved_route_interface(); + init_route_conflict_interface(); + init_route_resolution_options_interface(); + init_routes_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/request/index.js +var init_request = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/request/index.js"() { + init_request_constants(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-module.js +var RouterModule_1, ROUTES, targetModulesByContainer, RouterModule; +var init_router_module = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/router-module.js"() { + init_tslib_es6(); + init_common(); + init_modules_container(); + init_utils(); + init_internal(); + ROUTES = /* @__PURE__ */ Symbol("ROUTES"); + targetModulesByContainer = /* @__PURE__ */ new WeakMap(); + RouterModule = RouterModule_1 = class RouterModule2 { + static { + __name(this, "RouterModule"); + } + modulesContainer; + routes; + constructor(modulesContainer, routes) { + this.modulesContainer = modulesContainer; + this.routes = routes; + this.routes = this.deepCloneRoutes(routes); + this.initialize(); + } + static register(routes) { + return { + module: RouterModule_1, + providers: [ + { + provide: ROUTES, + useValue: routes + } + ] + }; + } + deepCloneRoutes(routes) { + return routes.map((routeOrType) => { + if (typeof routeOrType === "function") { + return routeOrType; + } + if (routeOrType.children) { + return { + ...routeOrType, + children: this.deepCloneRoutes(routeOrType.children) + }; + } + return { ...routeOrType }; + }); + } + initialize() { + const flattenedRoutes = flattenRoutePaths(this.routes); + flattenedRoutes.forEach((route) => { + const modulePath = normalizePath(route.path); + this.registerModulePathMetadata(route.module, modulePath); + this.updateTargetModulesCache(route.module); + }); + } + registerModulePathMetadata(moduleCtor, modulePath) { + Reflect.defineMetadata(MODULE_PATH + this.modulesContainer.applicationId, modulePath, moduleCtor); + } + updateTargetModulesCache(moduleCtor) { + let moduleClassSet; + if (targetModulesByContainer.has(this.modulesContainer)) { + moduleClassSet = targetModulesByContainer.get(this.modulesContainer); + } else { + moduleClassSet = /* @__PURE__ */ new WeakSet(); + targetModulesByContainer.set(this.modulesContainer, moduleClassSet); + } + const moduleRef = Array.from(this.modulesContainer.values()).find((item) => item?.metatype === moduleCtor); + if (!moduleRef) { + return; + } + moduleClassSet.add(moduleRef); + } + }; + RouterModule = RouterModule_1 = __decorate([ + Module({}), + __param(1, Inject(ROUTES)), + __metadata("design:paramtypes", [ModulesContainer, Array]) + ], RouterModule); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/index.js +var init_router = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/router/index.js"() { + init_interfaces(); + init_request(); + init_router_module(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/index.js +var core_exports = {}; +__export(core_exports, { + APP_FILTER: () => APP_FILTER, + APP_GUARD: () => APP_GUARD, + APP_INTERCEPTOR: () => APP_INTERCEPTOR, + APP_PIPE: () => APP_PIPE, + AbstractHttpAdapter: () => AbstractHttpAdapter, + ApplicationConfig: () => ApplicationConfig, + BaseExceptionFilter: () => BaseExceptionFilter, + ContextIdFactory: () => ContextIdFactory, + DiscoveryModule: () => DiscoveryModule, + DiscoveryService: () => DiscoveryService, + ExternalContextCreator: () => ExternalContextCreator, + GraphInspector: () => GraphInspector, + HttpAdapterHost: () => HttpAdapterHost, + INQUIRER: () => INQUIRER, + InitializeOnPreviewAllowlist: () => InitializeOnPreviewAllowlist, + LazyModuleLoader: () => LazyModuleLoader, + MetadataScanner: () => MetadataScanner, + MiddlewareBuilder: () => MiddlewareBuilder, + ModuleRef: () => ModuleRef, + ModulesContainer: () => ModulesContainer, + NestApplication: () => NestApplication, + NestApplicationContext: () => NestApplicationContext, + NestContainer: () => NestContainer, + NestFactory: () => NestFactory, + PartialGraphHost: () => PartialGraphHost, + REQUEST: () => REQUEST, + Reflector: () => Reflector, + RouterModule: () => RouterModule, + SerializedGraph: () => SerializedGraph, + createContextId: () => createContextId, + repl: () => repl +}); +var import_reflect_metadata; +var init_core = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/index.js"() { + import_reflect_metadata = __toESM(require_Reflect(), 1); + init_adapters(); + init_application_config(); + init_constants2(); + init_discovery(); + init_exceptions(); + init_helpers(); + init_injector2(); + init_inspector(); + init_metadata_scanner(); + init_middleware(); + init_nest_application(); + init_nest_application_context(); + init_nest_factory(); + init_repl2(); + init_router(); + init_services(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-core-module/index.js +var init_internal_core_module2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/injector/internal-core-module/index.js"() { + init_internal_core_module(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/internal.js +var init_internal2 = __esm({ + "../../node_modules/.pnpm/@nestjs+core@12.2.0_@nestjs_74b3aa22af8a41de6299655ec5713214/node_modules/@nestjs/core/internal.js"() { + init_exceptions2(); + init_invalid_exception_filter_exception(); + init_runtime_exception(); + init_constants2(); + init_scanner(); + init_constants3(); + init_injector(); + init_instance_loader(); + init_instance_wrapper(); + init_internal_core_module2(); + init_module(); + init_inspector(); + init_context_utils(); + init_execution_context_host(); + init_handler_metadata_storage(); + init_load_adapter(); + init_optional_require(); + init_router_method_factory(); + init_safe_instance_decorator(); + init_constants4(); + init_guards_consumer(); + init_guards_context_creator(); + init_params_token_factory(); + init_pipes_consumer(); + init_pipes_context_creator(); + init_interceptors_consumer(); + init_interceptors_context_creator(); + init_base_exception_filter_context(); + init_legacy_route_converter(); + init_rejected_by_pipes(); + init_request_constants(); + init_noop_graph_inspector(); + init_uuid_factory(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/express-adapter.js +import * as http from "http"; +import * as https from "https"; +import { finished } from "stream"; +function isJsonContentType(contentType) { + const mediaType = contentType.split(";")[0].trim().toLowerCase(); + return mediaType.startsWith("application/json") || mediaType.endsWith("+json"); +} +var import_cors, import_express, import_path_to_regexp6, ExpressAdapter; +var init_express_adapter = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/express-adapter.js"() { + init_common(); + import_cors = __toESM(require_lib2(), 1); + import_express = __toESM(require_express2(), 1); + import_path_to_regexp6 = __toESM(require_dist2(), 1); + init_get_body_parser_options_util(); + init_get_media_type_version_util(); + init_internal(); + init_core(); + init_internal2(); + __name(isJsonContentType, "isJsonContentType"); + ExpressAdapter = class _ExpressAdapter extends AbstractHttpAdapter { + static { + __name(this, "ExpressAdapter"); + } + routerMethodFactory = new RouterMethodFactory(); + logger = new Logger(_ExpressAdapter.name); + openConnections = /* @__PURE__ */ new Set(); + registeredPrefixes = /* @__PURE__ */ new Set(); + isShuttingDown = false; + onRequestHook; + onResponseHook; + constructor(instance) { + super(instance || (0, import_express.default)()); + this.instance.use((req, res, next) => { + if (this.onResponseHook) { + res.on("finish", async () => { + try { + await this.onResponseHook.apply(this, [req, res]); + } catch (err) { + this.logger.error(err); + } + }); + } + if (this.onRequestHook) { + this.runRequestHook(req, res, next); + } else { + next(); + } + }); + } + runRequestHook(req, res, next) { + let completed = false; + const doneOnce = /* @__PURE__ */ __name((err) => { + if (completed) { + if (err) { + this.logger.error(err); + } + return; + } + completed = true; + next(err); + }, "doneOnce"); + try { + const result = this.onRequestHook.call(this, req, res, doneOnce); + if (result && typeof result.then === "function") { + result.then(void 0, (err) => doneOnce(err || new Error("Request hook failed"))); + } + } catch (err) { + doneOnce(err || new Error("Request hook failed")); + } + } + /** + * Registers a request hook. Call `done()` to continue processing the request; + * resolving the returned promise does not continue it. Only the first + * completion is forwarded to Express. Errors after `done()` are logged + * without advancing the request again. + */ + setOnRequestHook(onRequestHook) { + this.onRequestHook = onRequestHook; + } + /** + * Registers a hook to run after the response has been sent. + * Thrown errors and rejected promises are logged. + */ + setOnResponseHook(onResponseHook) { + this.onResponseHook = onResponseHook; + } + reply(response, body, statusCode) { + if (!isNil(statusCode)) { + response.status(statusCode); + } + if (isNil(body)) { + return response.send(); + } + if (body instanceof StreamableFile) { + const { errored } = body.getStream(); + if (errored) { + return body.errorHandler(errored, response); + } + this.applyStreamHeaders(response, body); + const stream = body.getStream(); + stream.once("error", (err) => { + body.errorHandler(err, response); + }); + finished(response, () => { + if (!stream.readableEnded) { + stream.destroy(); + } + }); + if (response.req?.method === "HEAD") { + stream.once("readable", () => response.end()); + return response.on("error", (err) => body.errorLogger(err)); + } + return stream.pipe(response).on("error", (err) => body.errorLogger(err)); + } + const responseContentType = response.getHeader("Content-Type"); + if (typeof responseContentType === "string" && !isJsonContentType(responseContentType) && (body?.statusCode >= HttpStatus.BAD_REQUEST || // A custom error body (e.g. "new HttpException({ ... }, 404)") need + // not have a "statusCode" of its own + isObject(body) && !isNil(statusCode) && statusCode >= HttpStatus.BAD_REQUEST)) { + this.logger.warn("Content-Type doesn't match Reply body, you might need a custom ExceptionFilter for non-JSON responses"); + response.setHeader("Content-Type", "application/json"); + } + return isObject(body) ? response.json(body) : response.send(String(body)); + } + status(response, statusCode) { + return response.status(statusCode); + } + end(response, message) { + return response.end(message); + } + render(response, view, options) { + return response.render(view, options); + } + redirect(response, statusCode, url) { + return response.redirect(statusCode, url); + } + setErrorHandler(handler, prefix) { + const normalizedPrefix = this.normalizePrefix(prefix); + if (normalizedPrefix) { + const router = import_express.default.Router(); + router.use(handler); + this.use(normalizedPrefix, router); + } + return this.use(handler); + } + setNotFoundHandler(handler, prefix, excludedRoutes) { + const normalizedPrefix = this.normalizePrefix(prefix); + if (normalizedPrefix) { + this.registeredPrefixes.add(normalizedPrefix); + const router = import_express.default.Router(); + router.all("*path", handler); + this.use(normalizedPrefix, router); + for (const route of excludedRoutes ?? []) { + this.instance.all(addLeadingSlash(route.path), handler); + } + return; + } + return this.use((req, res, next) => { + const path = req.originalUrl.split(/[?#]/)[0]; + for (const registeredPrefix of this.registeredPrefixes) { + if (path === registeredPrefix || path.startsWith(`${registeredPrefix}/`)) { + return next(); + } + } + return handler(req, res, next); + }); + } + isHeadersSent(response) { + return response.headersSent; + } + getHeader(response, name) { + return response.get(name); + } + setHeader(response, name, value) { + return response.set(name, value); + } + appendHeader(response, name, value) { + return response.append(name, value); + } + normalizePath(path) { + try { + const convertedPath = LegacyRouteConverter.tryConvert(path); + (0, import_path_to_regexp6.pathToRegexp)(convertedPath); + return convertedPath; + } catch (e) { + if (e instanceof TypeError) { + LegacyRouteConverter.printError(path); + } + throw e; + } + } + listen(port, ...args) { + return this.httpServer.listen(port, ...args); + } + beforeClose() { + this.isShuttingDown = true; + } + close() { + this.isShuttingDown = true; + this.closeOpenConnections(); + if (!this.httpServer) { + return void 0; + } + return new Promise((resolve) => this.httpServer.close(resolve)); + } + set(...args) { + return this.instance.set(...args); + } + enable(...args) { + return this.instance.enable(...args); + } + disable(...args) { + return this.instance.disable(...args); + } + engine(...args) { + return this.instance.engine(...args); + } + useStaticAssets(path, options) { + if (options && options.prefix) { + return this.use(options.prefix, import_express.default.static(path, options)); + } + return this.use(import_express.default.static(path, options)); + } + setBaseViewsDir(path) { + return this.set("views", path); + } + setViewEngine(engine) { + return this.set("view engine", engine); + } + getRequestHostname(request) { + return request.hostname; + } + getRequestMethod(request) { + return request.method; + } + getRequestUrl(request) { + return request.originalUrl; + } + enableCors(options) { + return this.use((0, import_cors.default)(options)); + } + createMiddlewareFactory(requestMethod) { + return (path, callback) => { + try { + const isExactPath = path.endsWith("$"); + const convertedPath = LegacyRouteConverter.tryConvert(isExactPath ? path.slice(0, -1) : path); + let router = this.routerMethodFactory.get(this.instance, requestMethod); + if (isExactPath && router === this.instance.use) { + router = this.instance.all; + } + return router.call(this.instance, convertedPath, callback); + } catch (e) { + if (e instanceof TypeError) { + LegacyRouteConverter.printError(path); + } + throw e; + } + }; + } + initHttpServer(options) { + const isHttpsEnabled = options && options.httpsOptions; + if (isHttpsEnabled) { + this.httpServer = https.createServer(options.httpsOptions, this.getInstance()); + } else { + this.httpServer = http.createServer(this.getInstance()); + } + if (options?.return503OnClosing) { + this.instance.use((req, res, next) => { + if (this.isShuttingDown) { + res.set("Connection", "close"); + res.status(503).send("Service Unavailable"); + } else { + next(); + } + }); + } + if (options?.forceCloseConnections) { + this.trackOpenConnections(); + } + } + registerParserMiddleware(prefix, rawBody) { + const bodyParserJsonOptions = getBodyParserOptions("json", rawBody); + const bodyParserUrlencodedOptions = getBodyParserOptions("urlencoded", rawBody, { extended: true }); + const parserMiddleware = { + jsonParser: import_express.default.json(bodyParserJsonOptions), + urlencodedParser: import_express.default.urlencoded(bodyParserUrlencodedOptions) + }; + Object.keys(parserMiddleware).filter((parser) => !this.isMiddlewareApplied(parser)).forEach((parserKey) => this.use(parserMiddleware[parserKey])); + } + useBodyParser(type, rawBody, options) { + const parserOptions = getBodyParserOptions(type, rawBody, options); + const parser = import_express.default[type](parserOptions); + this.use(parser); + return this; + } + setLocal(key, value) { + this.instance.locals[key] = value; + return this; + } + getType() { + return "express"; + } + isRouteOrderSensitive() { + return true; + } + // The return type is spelled out (rather than "RouteMatchingOptions") so + // that the declarations still compile against an older "@nestjs/common" + getRouteMatchingOptions() { + const router = this.getInstance().router; + return { + caseSensitive: !!router?.caseSensitive, + ignoreTrailingSlash: !router?.strict + }; + } + applyVersionFilter(handler, version, versioningOptions) { + const callNextHandler = /* @__PURE__ */ __name((req, res, next) => { + if (!next) { + throw new InternalServerErrorException("HTTP adapter does not support filtering on version"); + } + return next(); + }, "callNextHandler"); + if (version === VERSION_NEUTRAL || // URL Versioning is done via the path, so the filter continues forward + versioningOptions.type === VersioningType.URI) { + const handlerForNoVersioning = /* @__PURE__ */ __name((req, res, next) => handler(req, res, next), "handlerForNoVersioning"); + return handlerForNoVersioning; + } + if (versioningOptions.type === VersioningType.CUSTOM) { + const handlerForCustomVersioning = /* @__PURE__ */ __name((req, res, next) => { + const extractedVersion = versioningOptions.extractor(req); + if (Array.isArray(version)) { + if (Array.isArray(extractedVersion) && version.filter((v) => extractedVersion.includes(v)).length) { + return handler(req, res, next); + } + if (isString(extractedVersion) && version.includes(extractedVersion)) { + return handler(req, res, next); + } + } else if (isString(version)) { + if (Array.isArray(extractedVersion) && extractedVersion.includes(version)) { + return handler(req, res, next); + } + if (isString(extractedVersion) && version === extractedVersion) { + return handler(req, res, next); + } + } + return callNextHandler(req, res, next); + }, "handlerForCustomVersioning"); + return handlerForCustomVersioning; + } + if (versioningOptions.type === VersioningType.MEDIA_TYPE) { + const handlerForMediaTypeVersioning = /* @__PURE__ */ __name((req, res, next) => { + const MEDIA_TYPE_HEADER = "Accept"; + const acceptHeaderValue = req.headers?.[MEDIA_TYPE_HEADER] || req.headers?.[MEDIA_TYPE_HEADER.toLowerCase()]; + const headerVersion = getMediaTypeVersion(acceptHeaderValue, versioningOptions.key); + if (isUndefined(headerVersion)) { + if (Array.isArray(version)) { + if (version.includes(VERSION_NEUTRAL)) { + return handler(req, res, next); + } + } + } else { + if (Array.isArray(version)) { + if (version.includes(headerVersion)) { + return handler(req, res, next); + } + } else if (isString(version)) { + if (version === headerVersion) { + return handler(req, res, next); + } + } + } + return callNextHandler(req, res, next); + }, "handlerForMediaTypeVersioning"); + return handlerForMediaTypeVersioning; + } + if (versioningOptions.type === VersioningType.HEADER) { + const handlerForHeaderVersioning = /* @__PURE__ */ __name((req, res, next) => { + const customHeaderVersionParameter = req.headers?.[versioningOptions.header] || req.headers?.[versioningOptions.header.toLowerCase()]; + if (isUndefined(customHeaderVersionParameter)) { + if (Array.isArray(version)) { + if (version.includes(VERSION_NEUTRAL)) { + return handler(req, res, next); + } + } + } else { + if (Array.isArray(version)) { + if (version.includes(customHeaderVersionParameter)) { + return handler(req, res, next); + } + } else if (isString(version)) { + if (version === customHeaderVersionParameter) { + return handler(req, res, next); + } + } + } + return callNextHandler(req, res, next); + }, "handlerForHeaderVersioning"); + return handlerForHeaderVersioning; + } + throw new Error("Unsupported versioning options"); + } + mapException(error) { + switch (true) { + // SyntaxError is thrown by Express body-parser when given invalid JSON (#422, #430) + // URIError is thrown by Express when given a path parameter with an invalid percentage + // encoding, e.g. '%FF' (#8915) + case (error instanceof SyntaxError || error instanceof URIError): + return new BadRequestException(error.message); + default: + return error; + } + } + normalizePrefix(prefix) { + return stripEndSlash(addLeadingSlash(prefix)); + } + trackOpenConnections() { + this.httpServer.on("connection", (socket) => { + this.openConnections.add(socket); + socket.on("close", () => this.openConnections.delete(socket)); + }); + } + closeOpenConnections() { + for (const socket of this.openConnections) { + socket.destroy(); + this.openConnections.delete(socket); + } + } + isMiddlewareApplied(name) { + const app = this.getInstance(); + return !!app.router && !!app.router.stack && isFunction(app.router.stack.filter) && app.router.stack.some((layer) => layer && layer.handle && layer.handle.name === name); + } + setHeaderIfNotExists(response, name, value) { + if (value !== void 0 && response.getHeader(name) === void 0) { + const headerValue = Array.isArray(value) ? value.join(",") : value; + response.setHeader(name, headerValue); + } + } + applyStreamHeaders(response, streamable) { + const headers = streamable.getHeaders(); + this.setHeaderIfNotExists(response, "Content-Type", headers.type); + this.setHeaderIfNotExists(response, "Content-Disposition", headers.disposition); + this.setHeaderIfNotExists(response, "Content-Length", headers.length); + } + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/index.js +var init_adapters2 = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/adapters/index.js"() { + init_express_adapter(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/interfaces/nest-express-application.interface.js +var init_nest_express_application_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/interfaces/nest-express-application.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/interfaces/nest-express-body-parser.interface.js +var init_nest_express_body_parser_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/interfaces/nest-express-body-parser.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/interfaces/index.js +var init_interfaces2 = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/interfaces/index.js"() { + init_nest_express_application_interface(); + init_nest_express_body_parser_interface(); + } +}); + +// ../../node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js +var require_media_typer2 = __commonJS({ + "../../node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js"(exports) { + var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; + var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/; + var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/; + var qescRegExp = /\\([\u0000-\u007f])/g; + var quoteRegExp = /([\\"])/g; + var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; + var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; + var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + exports.format = format; + exports.parse = parse; + function format(obj) { + if (!obj || typeof obj !== "object") { + throw new TypeError("argument obj is required"); + } + var parameters = obj.parameters; + var subtype = obj.subtype; + var suffix = obj.suffix; + var type = obj.type; + if (!type || !typeNameRegExp.test(type)) { + throw new TypeError("invalid type"); + } + if (!subtype || !subtypeNameRegExp.test(subtype)) { + throw new TypeError("invalid subtype"); + } + var string = type + "/" + subtype; + if (suffix) { + if (!typeNameRegExp.test(suffix)) { + throw new TypeError("invalid suffix"); + } + string += "+" + suffix; + } + if (parameters && typeof parameters === "object") { + var param; + var params = Object.keys(parameters).sort(); + for (var i = 0; i < params.length; i++) { + param = params[i]; + if (!tokenRegExp.test(param)) { + throw new TypeError("invalid parameter name"); + } + string += "; " + param + "=" + qstring(parameters[param]); + } + } + return string; + } + __name(format, "format"); + function parse(string) { + if (!string) { + throw new TypeError("argument string is required"); + } + if (typeof string === "object") { + string = getcontenttype(string); + } + if (typeof string !== "string") { + throw new TypeError("argument string is required to be a string"); + } + var index = string.indexOf(";"); + var type = index !== -1 ? string.substr(0, index) : string; + var key; + var match; + var obj = splitType(type); + var params = {}; + var value; + paramRegExp.lastIndex = index; + while (match = paramRegExp.exec(string)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value[0] === '"') { + value = value.substr(1, value.length - 2).replace(qescRegExp, "$1"); + } + params[key] = value; + } + if (index !== -1 && index !== string.length) { + throw new TypeError("invalid parameter format"); + } + obj.parameters = params; + return obj; + } + __name(parse, "parse"); + function getcontenttype(obj) { + if (typeof obj.getHeader === "function") { + return obj.getHeader("content-type"); + } + if (typeof obj.headers === "object") { + return obj.headers && obj.headers["content-type"]; + } + } + __name(getcontenttype, "getcontenttype"); + function qstring(val) { + var str = String(val); + if (tokenRegExp.test(str)) { + return str; + } + if (str.length > 0 && !textRegExp.test(str)) { + throw new TypeError("invalid parameter value"); + } + return '"' + str.replace(quoteRegExp, "\\$1") + '"'; + } + __name(qstring, "qstring"); + function splitType(string) { + var match = typeRegExp.exec(string.toLowerCase()); + if (!match) { + throw new TypeError("invalid media type"); + } + var type = match[1]; + var subtype = match[2]; + var suffix; + var index = subtype.lastIndexOf("+"); + if (index !== -1) { + suffix = subtype.substr(index + 1); + subtype = subtype.substr(0, index); + } + var obj = { + type, + subtype, + suffix + }; + return obj; + } + __name(splitType, "splitType"); + } +}); + +// ../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json +var require_db2 = __commonJS({ + "../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json"(exports, module) { + module.exports = { + "application/1d-interleaved-parityfec": { + source: "iana" + }, + "application/3gpdash-qoe-report+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/3gpp-ims+xml": { + source: "iana", + compressible: true + }, + "application/3gpphal+json": { + source: "iana", + compressible: true + }, + "application/3gpphalforms+json": { + source: "iana", + compressible: true + }, + "application/a2l": { + source: "iana" + }, + "application/ace+cbor": { + source: "iana" + }, + "application/activemessage": { + source: "iana" + }, + "application/activity+json": { + source: "iana", + compressible: true + }, + "application/alto-costmap+json": { + source: "iana", + compressible: true + }, + "application/alto-costmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-directory+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcost+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcostparams+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointprop+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointpropparams+json": { + source: "iana", + compressible: true + }, + "application/alto-error+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmap+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamcontrol+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamparams+json": { + source: "iana", + compressible: true + }, + "application/aml": { + source: "iana" + }, + "application/andrew-inset": { + source: "iana", + extensions: ["ez"] + }, + "application/applefile": { + source: "iana" + }, + "application/applixware": { + source: "apache", + extensions: ["aw"] + }, + "application/at+jwt": { + source: "iana" + }, + "application/atf": { + source: "iana" + }, + "application/atfx": { + source: "iana" + }, + "application/atom+xml": { + source: "iana", + compressible: true, + extensions: ["atom"] + }, + "application/atomcat+xml": { + source: "iana", + compressible: true, + extensions: ["atomcat"] + }, + "application/atomdeleted+xml": { + source: "iana", + compressible: true, + extensions: ["atomdeleted"] + }, + "application/atomicmail": { + source: "iana" + }, + "application/atomsvc+xml": { + source: "iana", + compressible: true, + extensions: ["atomsvc"] + }, + "application/atsc-dwd+xml": { + source: "iana", + compressible: true, + extensions: ["dwd"] + }, + "application/atsc-dynamic-event-message": { + source: "iana" + }, + "application/atsc-held+xml": { + source: "iana", + compressible: true, + extensions: ["held"] + }, + "application/atsc-rdt+json": { + source: "iana", + compressible: true + }, + "application/atsc-rsat+xml": { + source: "iana", + compressible: true, + extensions: ["rsat"] + }, + "application/atxml": { + source: "iana" + }, + "application/auth-policy+xml": { + source: "iana", + compressible: true + }, + "application/bacnet-xdd+zip": { + source: "iana", + compressible: false + }, + "application/batch-smtp": { + source: "iana" + }, + "application/bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/beep+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/calendar+json": { + source: "iana", + compressible: true + }, + "application/calendar+xml": { + source: "iana", + compressible: true, + extensions: ["xcs"] + }, + "application/call-completion": { + source: "iana" + }, + "application/cals-1840": { + source: "iana" + }, + "application/captive+json": { + source: "iana", + compressible: true + }, + "application/cbor": { + source: "iana" + }, + "application/cbor-seq": { + source: "iana" + }, + "application/cccex": { + source: "iana" + }, + "application/ccmp+xml": { + source: "iana", + compressible: true + }, + "application/ccxml+xml": { + source: "iana", + compressible: true, + extensions: ["ccxml"] + }, + "application/cdfx+xml": { + source: "iana", + compressible: true, + extensions: ["cdfx"] + }, + "application/cdmi-capability": { + source: "iana", + extensions: ["cdmia"] + }, + "application/cdmi-container": { + source: "iana", + extensions: ["cdmic"] + }, + "application/cdmi-domain": { + source: "iana", + extensions: ["cdmid"] + }, + "application/cdmi-object": { + source: "iana", + extensions: ["cdmio"] + }, + "application/cdmi-queue": { + source: "iana", + extensions: ["cdmiq"] + }, + "application/cdni": { + source: "iana" + }, + "application/cea": { + source: "iana" + }, + "application/cea-2018+xml": { + source: "iana", + compressible: true + }, + "application/cellml+xml": { + source: "iana", + compressible: true + }, + "application/cfw": { + source: "iana" + }, + "application/city+json": { + source: "iana", + compressible: true + }, + "application/clr": { + source: "iana" + }, + "application/clue+xml": { + source: "iana", + compressible: true + }, + "application/clue_info+xml": { + source: "iana", + compressible: true + }, + "application/cms": { + source: "iana" + }, + "application/cnrp+xml": { + source: "iana", + compressible: true + }, + "application/coap-group+json": { + source: "iana", + compressible: true + }, + "application/coap-payload": { + source: "iana" + }, + "application/commonground": { + source: "iana" + }, + "application/conference-info+xml": { + source: "iana", + compressible: true + }, + "application/cose": { + source: "iana" + }, + "application/cose-key": { + source: "iana" + }, + "application/cose-key-set": { + source: "iana" + }, + "application/cpl+xml": { + source: "iana", + compressible: true, + extensions: ["cpl"] + }, + "application/csrattrs": { + source: "iana" + }, + "application/csta+xml": { + source: "iana", + compressible: true + }, + "application/cstadata+xml": { + source: "iana", + compressible: true + }, + "application/csvm+json": { + source: "iana", + compressible: true + }, + "application/cu-seeme": { + source: "apache", + extensions: ["cu"] + }, + "application/cwt": { + source: "iana" + }, + "application/cybercash": { + source: "iana" + }, + "application/dart": { + compressible: true + }, + "application/dash+xml": { + source: "iana", + compressible: true, + extensions: ["mpd"] + }, + "application/dash-patch+xml": { + source: "iana", + compressible: true, + extensions: ["mpp"] + }, + "application/dashdelta": { + source: "iana" + }, + "application/davmount+xml": { + source: "iana", + compressible: true, + extensions: ["davmount"] + }, + "application/dca-rft": { + source: "iana" + }, + "application/dcd": { + source: "iana" + }, + "application/dec-dx": { + source: "iana" + }, + "application/dialog-info+xml": { + source: "iana", + compressible: true + }, + "application/dicom": { + source: "iana" + }, + "application/dicom+json": { + source: "iana", + compressible: true + }, + "application/dicom+xml": { + source: "iana", + compressible: true + }, + "application/dii": { + source: "iana" + }, + "application/dit": { + source: "iana" + }, + "application/dns": { + source: "iana" + }, + "application/dns+json": { + source: "iana", + compressible: true + }, + "application/dns-message": { + source: "iana" + }, + "application/docbook+xml": { + source: "apache", + compressible: true, + extensions: ["dbk"] + }, + "application/dots+cbor": { + source: "iana" + }, + "application/dskpp+xml": { + source: "iana", + compressible: true + }, + "application/dssc+der": { + source: "iana", + extensions: ["dssc"] + }, + "application/dssc+xml": { + source: "iana", + compressible: true, + extensions: ["xdssc"] + }, + "application/dvcs": { + source: "iana" + }, + "application/ecmascript": { + source: "iana", + compressible: true, + extensions: ["es", "ecma"] + }, + "application/edi-consent": { + source: "iana" + }, + "application/edi-x12": { + source: "iana", + compressible: false + }, + "application/edifact": { + source: "iana", + compressible: false + }, + "application/efi": { + source: "iana" + }, + "application/elm+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/elm+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.cap+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/emergencycalldata.comment+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.control+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.deviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.ecall.msd": { + source: "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.serviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.subscriberinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.veds+xml": { + source: "iana", + compressible: true + }, + "application/emma+xml": { + source: "iana", + compressible: true, + extensions: ["emma"] + }, + "application/emotionml+xml": { + source: "iana", + compressible: true, + extensions: ["emotionml"] + }, + "application/encaprtp": { + source: "iana" + }, + "application/epp+xml": { + source: "iana", + compressible: true + }, + "application/epub+zip": { + source: "iana", + compressible: false, + extensions: ["epub"] + }, + "application/eshop": { + source: "iana" + }, + "application/exi": { + source: "iana", + extensions: ["exi"] + }, + "application/expect-ct-report+json": { + source: "iana", + compressible: true + }, + "application/express": { + source: "iana", + extensions: ["exp"] + }, + "application/fastinfoset": { + source: "iana" + }, + "application/fastsoap": { + source: "iana" + }, + "application/fdt+xml": { + source: "iana", + compressible: true, + extensions: ["fdt"] + }, + "application/fhir+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fhir+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fido.trusted-apps+json": { + compressible: true + }, + "application/fits": { + source: "iana" + }, + "application/flexfec": { + source: "iana" + }, + "application/font-sfnt": { + source: "iana" + }, + "application/font-tdpfr": { + source: "iana", + extensions: ["pfr"] + }, + "application/font-woff": { + source: "iana", + compressible: false + }, + "application/framework-attributes+xml": { + source: "iana", + compressible: true + }, + "application/geo+json": { + source: "iana", + compressible: true, + extensions: ["geojson"] + }, + "application/geo+json-seq": { + source: "iana" + }, + "application/geopackage+sqlite3": { + source: "iana" + }, + "application/geoxacml+xml": { + source: "iana", + compressible: true + }, + "application/gltf-buffer": { + source: "iana" + }, + "application/gml+xml": { + source: "iana", + compressible: true, + extensions: ["gml"] + }, + "application/gpx+xml": { + source: "apache", + compressible: true, + extensions: ["gpx"] + }, + "application/gxf": { + source: "apache", + extensions: ["gxf"] + }, + "application/gzip": { + source: "iana", + compressible: false, + extensions: ["gz"] + }, + "application/h224": { + source: "iana" + }, + "application/held+xml": { + source: "iana", + compressible: true + }, + "application/hjson": { + extensions: ["hjson"] + }, + "application/http": { + source: "iana" + }, + "application/hyperstudio": { + source: "iana", + extensions: ["stk"] + }, + "application/ibe-key-request+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pkg-reply+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pp-data": { + source: "iana" + }, + "application/iges": { + source: "iana" + }, + "application/im-iscomposing+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/index": { + source: "iana" + }, + "application/index.cmd": { + source: "iana" + }, + "application/index.obj": { + source: "iana" + }, + "application/index.response": { + source: "iana" + }, + "application/index.vnd": { + source: "iana" + }, + "application/inkml+xml": { + source: "iana", + compressible: true, + extensions: ["ink", "inkml"] + }, + "application/iotp": { + source: "iana" + }, + "application/ipfix": { + source: "iana", + extensions: ["ipfix"] + }, + "application/ipp": { + source: "iana" + }, + "application/isup": { + source: "iana" + }, + "application/its+xml": { + source: "iana", + compressible: true, + extensions: ["its"] + }, + "application/java-archive": { + source: "apache", + compressible: false, + extensions: ["jar", "war", "ear"] + }, + "application/java-serialized-object": { + source: "apache", + compressible: false, + extensions: ["ser"] + }, + "application/java-vm": { + source: "apache", + compressible: false, + extensions: ["class"] + }, + "application/javascript": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["js", "mjs"] + }, + "application/jf2feed+json": { + source: "iana", + compressible: true + }, + "application/jose": { + source: "iana" + }, + "application/jose+json": { + source: "iana", + compressible: true + }, + "application/jrd+json": { + source: "iana", + compressible: true + }, + "application/jscalendar+json": { + source: "iana", + compressible: true + }, + "application/json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["json", "map"] + }, + "application/json-patch+json": { + source: "iana", + compressible: true + }, + "application/json-seq": { + source: "iana" + }, + "application/json5": { + extensions: ["json5"] + }, + "application/jsonml+json": { + source: "apache", + compressible: true, + extensions: ["jsonml"] + }, + "application/jwk+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+json": { + source: "iana", + compressible: true + }, + "application/jwt": { + source: "iana" + }, + "application/kpml-request+xml": { + source: "iana", + compressible: true + }, + "application/kpml-response+xml": { + source: "iana", + compressible: true + }, + "application/ld+json": { + source: "iana", + compressible: true, + extensions: ["jsonld"] + }, + "application/lgr+xml": { + source: "iana", + compressible: true, + extensions: ["lgr"] + }, + "application/link-format": { + source: "iana" + }, + "application/load-control+xml": { + source: "iana", + compressible: true + }, + "application/lost+xml": { + source: "iana", + compressible: true, + extensions: ["lostxml"] + }, + "application/lostsync+xml": { + source: "iana", + compressible: true + }, + "application/lpf+zip": { + source: "iana", + compressible: false + }, + "application/lxf": { + source: "iana" + }, + "application/mac-binhex40": { + source: "iana", + extensions: ["hqx"] + }, + "application/mac-compactpro": { + source: "apache", + extensions: ["cpt"] + }, + "application/macwriteii": { + source: "iana" + }, + "application/mads+xml": { + source: "iana", + compressible: true, + extensions: ["mads"] + }, + "application/manifest+json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["webmanifest"] + }, + "application/marc": { + source: "iana", + extensions: ["mrc"] + }, + "application/marcxml+xml": { + source: "iana", + compressible: true, + extensions: ["mrcx"] + }, + "application/mathematica": { + source: "iana", + extensions: ["ma", "nb", "mb"] + }, + "application/mathml+xml": { + source: "iana", + compressible: true, + extensions: ["mathml"] + }, + "application/mathml-content+xml": { + source: "iana", + compressible: true + }, + "application/mathml-presentation+xml": { + source: "iana", + compressible: true + }, + "application/mbms-associated-procedure-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-deregister+xml": { + source: "iana", + compressible: true + }, + "application/mbms-envelope+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-protection-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-reception-report+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-schedule+xml": { + source: "iana", + compressible: true + }, + "application/mbms-user-service-description+xml": { + source: "iana", + compressible: true + }, + "application/mbox": { + source: "iana", + extensions: ["mbox"] + }, + "application/media-policy-dataset+xml": { + source: "iana", + compressible: true, + extensions: ["mpf"] + }, + "application/media_control+xml": { + source: "iana", + compressible: true + }, + "application/mediaservercontrol+xml": { + source: "iana", + compressible: true, + extensions: ["mscml"] + }, + "application/merge-patch+json": { + source: "iana", + compressible: true + }, + "application/metalink+xml": { + source: "apache", + compressible: true, + extensions: ["metalink"] + }, + "application/metalink4+xml": { + source: "iana", + compressible: true, + extensions: ["meta4"] + }, + "application/mets+xml": { + source: "iana", + compressible: true, + extensions: ["mets"] + }, + "application/mf4": { + source: "iana" + }, + "application/mikey": { + source: "iana" + }, + "application/mipc": { + source: "iana" + }, + "application/missing-blocks+cbor-seq": { + source: "iana" + }, + "application/mmt-aei+xml": { + source: "iana", + compressible: true, + extensions: ["maei"] + }, + "application/mmt-usd+xml": { + source: "iana", + compressible: true, + extensions: ["musd"] + }, + "application/mods+xml": { + source: "iana", + compressible: true, + extensions: ["mods"] + }, + "application/moss-keys": { + source: "iana" + }, + "application/moss-signature": { + source: "iana" + }, + "application/mosskey-data": { + source: "iana" + }, + "application/mosskey-request": { + source: "iana" + }, + "application/mp21": { + source: "iana", + extensions: ["m21", "mp21"] + }, + "application/mp4": { + source: "iana", + extensions: ["mp4s", "m4p"] + }, + "application/mpeg4-generic": { + source: "iana" + }, + "application/mpeg4-iod": { + source: "iana" + }, + "application/mpeg4-iod-xmt": { + source: "iana" + }, + "application/mrb-consumer+xml": { + source: "iana", + compressible: true + }, + "application/mrb-publish+xml": { + source: "iana", + compressible: true + }, + "application/msc-ivr+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msc-mixer+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msword": { + source: "iana", + compressible: false, + extensions: ["doc", "dot"] + }, + "application/mud+json": { + source: "iana", + compressible: true + }, + "application/multipart-core": { + source: "iana" + }, + "application/mxf": { + source: "iana", + extensions: ["mxf"] + }, + "application/n-quads": { + source: "iana", + extensions: ["nq"] + }, + "application/n-triples": { + source: "iana", + extensions: ["nt"] + }, + "application/nasdata": { + source: "iana" + }, + "application/news-checkgroups": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-groupinfo": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-transmission": { + source: "iana" + }, + "application/nlsml+xml": { + source: "iana", + compressible: true + }, + "application/node": { + source: "iana", + extensions: ["cjs"] + }, + "application/nss": { + source: "iana" + }, + "application/oauth-authz-req+jwt": { + source: "iana" + }, + "application/oblivious-dns-message": { + source: "iana" + }, + "application/ocsp-request": { + source: "iana" + }, + "application/ocsp-response": { + source: "iana" + }, + "application/octet-stream": { + source: "iana", + compressible: false, + extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] + }, + "application/oda": { + source: "iana", + extensions: ["oda"] + }, + "application/odm+xml": { + source: "iana", + compressible: true + }, + "application/odx": { + source: "iana" + }, + "application/oebps-package+xml": { + source: "iana", + compressible: true, + extensions: ["opf"] + }, + "application/ogg": { + source: "iana", + compressible: false, + extensions: ["ogx"] + }, + "application/omdoc+xml": { + source: "apache", + compressible: true, + extensions: ["omdoc"] + }, + "application/onenote": { + source: "apache", + extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] + }, + "application/opc-nodeset+xml": { + source: "iana", + compressible: true + }, + "application/oscore": { + source: "iana" + }, + "application/oxps": { + source: "iana", + extensions: ["oxps"] + }, + "application/p21": { + source: "iana" + }, + "application/p21+zip": { + source: "iana", + compressible: false + }, + "application/p2p-overlay+xml": { + source: "iana", + compressible: true, + extensions: ["relo"] + }, + "application/parityfec": { + source: "iana" + }, + "application/passport": { + source: "iana" + }, + "application/patch-ops-error+xml": { + source: "iana", + compressible: true, + extensions: ["xer"] + }, + "application/pdf": { + source: "iana", + compressible: false, + extensions: ["pdf"] + }, + "application/pdx": { + source: "iana" + }, + "application/pem-certificate-chain": { + source: "iana" + }, + "application/pgp-encrypted": { + source: "iana", + compressible: false, + extensions: ["pgp"] + }, + "application/pgp-keys": { + source: "iana", + extensions: ["asc"] + }, + "application/pgp-signature": { + source: "iana", + extensions: ["asc", "sig"] + }, + "application/pics-rules": { + source: "apache", + extensions: ["prf"] + }, + "application/pidf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pidf-diff+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pkcs10": { + source: "iana", + extensions: ["p10"] + }, + "application/pkcs12": { + source: "iana" + }, + "application/pkcs7-mime": { + source: "iana", + extensions: ["p7m", "p7c"] + }, + "application/pkcs7-signature": { + source: "iana", + extensions: ["p7s"] + }, + "application/pkcs8": { + source: "iana", + extensions: ["p8"] + }, + "application/pkcs8-encrypted": { + source: "iana" + }, + "application/pkix-attr-cert": { + source: "iana", + extensions: ["ac"] + }, + "application/pkix-cert": { + source: "iana", + extensions: ["cer"] + }, + "application/pkix-crl": { + source: "iana", + extensions: ["crl"] + }, + "application/pkix-pkipath": { + source: "iana", + extensions: ["pkipath"] + }, + "application/pkixcmp": { + source: "iana", + extensions: ["pki"] + }, + "application/pls+xml": { + source: "iana", + compressible: true, + extensions: ["pls"] + }, + "application/poc-settings+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/postscript": { + source: "iana", + compressible: true, + extensions: ["ai", "eps", "ps"] + }, + "application/ppsp-tracker+json": { + source: "iana", + compressible: true + }, + "application/problem+json": { + source: "iana", + compressible: true + }, + "application/problem+xml": { + source: "iana", + compressible: true + }, + "application/provenance+xml": { + source: "iana", + compressible: true, + extensions: ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + source: "iana" + }, + "application/prs.cww": { + source: "iana", + extensions: ["cww"] + }, + "application/prs.cyn": { + source: "iana", + charset: "7-BIT" + }, + "application/prs.hpub+zip": { + source: "iana", + compressible: false + }, + "application/prs.nprend": { + source: "iana" + }, + "application/prs.plucker": { + source: "iana" + }, + "application/prs.rdf-xml-crypt": { + source: "iana" + }, + "application/prs.xsf+xml": { + source: "iana", + compressible: true + }, + "application/pskc+xml": { + source: "iana", + compressible: true, + extensions: ["pskcxml"] + }, + "application/pvd+json": { + source: "iana", + compressible: true + }, + "application/qsig": { + source: "iana" + }, + "application/raml+yaml": { + compressible: true, + extensions: ["raml"] + }, + "application/raptorfec": { + source: "iana" + }, + "application/rdap+json": { + source: "iana", + compressible: true + }, + "application/rdf+xml": { + source: "iana", + compressible: true, + extensions: ["rdf", "owl"] + }, + "application/reginfo+xml": { + source: "iana", + compressible: true, + extensions: ["rif"] + }, + "application/relax-ng-compact-syntax": { + source: "iana", + extensions: ["rnc"] + }, + "application/remote-printing": { + source: "iana" + }, + "application/reputon+json": { + source: "iana", + compressible: true + }, + "application/resource-lists+xml": { + source: "iana", + compressible: true, + extensions: ["rl"] + }, + "application/resource-lists-diff+xml": { + source: "iana", + compressible: true, + extensions: ["rld"] + }, + "application/rfc+xml": { + source: "iana", + compressible: true + }, + "application/riscos": { + source: "iana" + }, + "application/rlmi+xml": { + source: "iana", + compressible: true + }, + "application/rls-services+xml": { + source: "iana", + compressible: true, + extensions: ["rs"] + }, + "application/route-apd+xml": { + source: "iana", + compressible: true, + extensions: ["rapd"] + }, + "application/route-s-tsid+xml": { + source: "iana", + compressible: true, + extensions: ["sls"] + }, + "application/route-usd+xml": { + source: "iana", + compressible: true, + extensions: ["rusd"] + }, + "application/rpki-ghostbusters": { + source: "iana", + extensions: ["gbr"] + }, + "application/rpki-manifest": { + source: "iana", + extensions: ["mft"] + }, + "application/rpki-publication": { + source: "iana" + }, + "application/rpki-roa": { + source: "iana", + extensions: ["roa"] + }, + "application/rpki-updown": { + source: "iana" + }, + "application/rsd+xml": { + source: "apache", + compressible: true, + extensions: ["rsd"] + }, + "application/rss+xml": { + source: "apache", + compressible: true, + extensions: ["rss"] + }, + "application/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "application/rtploopback": { + source: "iana" + }, + "application/rtx": { + source: "iana" + }, + "application/samlassertion+xml": { + source: "iana", + compressible: true + }, + "application/samlmetadata+xml": { + source: "iana", + compressible: true + }, + "application/sarif+json": { + source: "iana", + compressible: true + }, + "application/sarif-external-properties+json": { + source: "iana", + compressible: true + }, + "application/sbe": { + source: "iana" + }, + "application/sbml+xml": { + source: "iana", + compressible: true, + extensions: ["sbml"] + }, + "application/scaip+xml": { + source: "iana", + compressible: true + }, + "application/scim+json": { + source: "iana", + compressible: true + }, + "application/scvp-cv-request": { + source: "iana", + extensions: ["scq"] + }, + "application/scvp-cv-response": { + source: "iana", + extensions: ["scs"] + }, + "application/scvp-vp-request": { + source: "iana", + extensions: ["spq"] + }, + "application/scvp-vp-response": { + source: "iana", + extensions: ["spp"] + }, + "application/sdp": { + source: "iana", + extensions: ["sdp"] + }, + "application/secevent+jwt": { + source: "iana" + }, + "application/senml+cbor": { + source: "iana" + }, + "application/senml+json": { + source: "iana", + compressible: true + }, + "application/senml+xml": { + source: "iana", + compressible: true, + extensions: ["senmlx"] + }, + "application/senml-etch+cbor": { + source: "iana" + }, + "application/senml-etch+json": { + source: "iana", + compressible: true + }, + "application/senml-exi": { + source: "iana" + }, + "application/sensml+cbor": { + source: "iana" + }, + "application/sensml+json": { + source: "iana", + compressible: true + }, + "application/sensml+xml": { + source: "iana", + compressible: true, + extensions: ["sensmlx"] + }, + "application/sensml-exi": { + source: "iana" + }, + "application/sep+xml": { + source: "iana", + compressible: true + }, + "application/sep-exi": { + source: "iana" + }, + "application/session-info": { + source: "iana" + }, + "application/set-payment": { + source: "iana" + }, + "application/set-payment-initiation": { + source: "iana", + extensions: ["setpay"] + }, + "application/set-registration": { + source: "iana" + }, + "application/set-registration-initiation": { + source: "iana", + extensions: ["setreg"] + }, + "application/sgml": { + source: "iana" + }, + "application/sgml-open-catalog": { + source: "iana" + }, + "application/shf+xml": { + source: "iana", + compressible: true, + extensions: ["shf"] + }, + "application/sieve": { + source: "iana", + extensions: ["siv", "sieve"] + }, + "application/simple-filter+xml": { + source: "iana", + compressible: true + }, + "application/simple-message-summary": { + source: "iana" + }, + "application/simplesymbolcontainer": { + source: "iana" + }, + "application/sipc": { + source: "iana" + }, + "application/slate": { + source: "iana" + }, + "application/smil": { + source: "iana" + }, + "application/smil+xml": { + source: "iana", + compressible: true, + extensions: ["smi", "smil"] + }, + "application/smpte336m": { + source: "iana" + }, + "application/soap+fastinfoset": { + source: "iana" + }, + "application/soap+xml": { + source: "iana", + compressible: true + }, + "application/sparql-query": { + source: "iana", + extensions: ["rq"] + }, + "application/sparql-results+xml": { + source: "iana", + compressible: true, + extensions: ["srx"] + }, + "application/spdx+json": { + source: "iana", + compressible: true + }, + "application/spirits-event+xml": { + source: "iana", + compressible: true + }, + "application/sql": { + source: "iana" + }, + "application/srgs": { + source: "iana", + extensions: ["gram"] + }, + "application/srgs+xml": { + source: "iana", + compressible: true, + extensions: ["grxml"] + }, + "application/sru+xml": { + source: "iana", + compressible: true, + extensions: ["sru"] + }, + "application/ssdl+xml": { + source: "apache", + compressible: true, + extensions: ["ssdl"] + }, + "application/ssml+xml": { + source: "iana", + compressible: true, + extensions: ["ssml"] + }, + "application/stix+json": { + source: "iana", + compressible: true + }, + "application/swid+xml": { + source: "iana", + compressible: true, + extensions: ["swidtag"] + }, + "application/tamp-apex-update": { + source: "iana" + }, + "application/tamp-apex-update-confirm": { + source: "iana" + }, + "application/tamp-community-update": { + source: "iana" + }, + "application/tamp-community-update-confirm": { + source: "iana" + }, + "application/tamp-error": { + source: "iana" + }, + "application/tamp-sequence-adjust": { + source: "iana" + }, + "application/tamp-sequence-adjust-confirm": { + source: "iana" + }, + "application/tamp-status-query": { + source: "iana" + }, + "application/tamp-status-response": { + source: "iana" + }, + "application/tamp-update": { + source: "iana" + }, + "application/tamp-update-confirm": { + source: "iana" + }, + "application/tar": { + compressible: true + }, + "application/taxii+json": { + source: "iana", + compressible: true + }, + "application/td+json": { + source: "iana", + compressible: true + }, + "application/tei+xml": { + source: "iana", + compressible: true, + extensions: ["tei", "teicorpus"] + }, + "application/tetra_isi": { + source: "iana" + }, + "application/thraud+xml": { + source: "iana", + compressible: true, + extensions: ["tfi"] + }, + "application/timestamp-query": { + source: "iana" + }, + "application/timestamp-reply": { + source: "iana" + }, + "application/timestamped-data": { + source: "iana", + extensions: ["tsd"] + }, + "application/tlsrpt+gzip": { + source: "iana" + }, + "application/tlsrpt+json": { + source: "iana", + compressible: true + }, + "application/tnauthlist": { + source: "iana" + }, + "application/token-introspection+jwt": { + source: "iana" + }, + "application/toml": { + compressible: true, + extensions: ["toml"] + }, + "application/trickle-ice-sdpfrag": { + source: "iana" + }, + "application/trig": { + source: "iana", + extensions: ["trig"] + }, + "application/ttml+xml": { + source: "iana", + compressible: true, + extensions: ["ttml"] + }, + "application/tve-trigger": { + source: "iana" + }, + "application/tzif": { + source: "iana" + }, + "application/tzif-leap": { + source: "iana" + }, + "application/ubjson": { + compressible: false, + extensions: ["ubj"] + }, + "application/ulpfec": { + source: "iana" + }, + "application/urc-grpsheet+xml": { + source: "iana", + compressible: true + }, + "application/urc-ressheet+xml": { + source: "iana", + compressible: true, + extensions: ["rsheet"] + }, + "application/urc-targetdesc+xml": { + source: "iana", + compressible: true, + extensions: ["td"] + }, + "application/urc-uisocketdesc+xml": { + source: "iana", + compressible: true + }, + "application/vcard+json": { + source: "iana", + compressible: true + }, + "application/vcard+xml": { + source: "iana", + compressible: true + }, + "application/vemmi": { + source: "iana" + }, + "application/vividence.scriptfile": { + source: "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + source: "iana", + compressible: true, + extensions: ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-v2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gnas": { + source: "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.bsf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gmop+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gtpc": { + source: "iana" + }, + "application/vnd.3gpp.interworking-data": { + source: "iana" + }, + "application/vnd.3gpp.lpp": { + source: "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-payload": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-signalling": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mid-call+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ngap": { + source: "iana" + }, + "application/vnd.3gpp.pfcp": { + source: "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + source: "iana", + extensions: ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + source: "iana", + extensions: ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + source: "iana", + extensions: ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + source: "iana" + }, + "application/vnd.3gpp.sms": { + source: "iana" + }, + "application/vnd.3gpp.sms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ussd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.sms": { + source: "iana" + }, + "application/vnd.3gpp2.tcap": { + source: "iana", + extensions: ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + source: "iana" + }, + "application/vnd.3m.post-it-notes": { + source: "iana", + extensions: ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + source: "iana", + extensions: ["aso"] + }, + "application/vnd.accpac.simply.imp": { + source: "iana", + extensions: ["imp"] + }, + "application/vnd.acucobol": { + source: "iana", + extensions: ["acu"] + }, + "application/vnd.acucorp": { + source: "iana", + extensions: ["atc", "acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + source: "apache", + compressible: false, + extensions: ["air"] + }, + "application/vnd.adobe.flash.movie": { + source: "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + source: "iana", + extensions: ["fcdt"] + }, + "application/vnd.adobe.fxp": { + source: "iana", + extensions: ["fxp", "fxpl"] + }, + "application/vnd.adobe.partial-upload": { + source: "iana" + }, + "application/vnd.adobe.xdp+xml": { + source: "iana", + compressible: true, + extensions: ["xdp"] + }, + "application/vnd.adobe.xfdf": { + source: "iana", + extensions: ["xfdf"] + }, + "application/vnd.aether.imp": { + source: "iana" + }, + "application/vnd.afpc.afplinedata": { + source: "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + source: "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + source: "iana" + }, + "application/vnd.afpc.foca-charset": { + source: "iana" + }, + "application/vnd.afpc.foca-codedfont": { + source: "iana" + }, + "application/vnd.afpc.foca-codepage": { + source: "iana" + }, + "application/vnd.afpc.modca": { + source: "iana" + }, + "application/vnd.afpc.modca-cmtable": { + source: "iana" + }, + "application/vnd.afpc.modca-formdef": { + source: "iana" + }, + "application/vnd.afpc.modca-mediummap": { + source: "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + source: "iana" + }, + "application/vnd.afpc.modca-overlay": { + source: "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + source: "iana" + }, + "application/vnd.age": { + source: "iana", + extensions: ["age"] + }, + "application/vnd.ah-barcode": { + source: "iana" + }, + "application/vnd.ahead.space": { + source: "iana", + extensions: ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + source: "iana", + extensions: ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + source: "iana", + extensions: ["azs"] + }, + "application/vnd.amadeus+json": { + source: "iana", + compressible: true + }, + "application/vnd.amazon.ebook": { + source: "apache", + extensions: ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + source: "iana" + }, + "application/vnd.americandynamics.acc": { + source: "iana", + extensions: ["acc"] + }, + "application/vnd.amiga.ami": { + source: "iana", + extensions: ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + source: "iana", + compressible: true + }, + "application/vnd.android.ota": { + source: "iana" + }, + "application/vnd.android.package-archive": { + source: "apache", + compressible: false, + extensions: ["apk"] + }, + "application/vnd.anki": { + source: "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + source: "iana", + extensions: ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + source: "apache", + extensions: ["fti"] + }, + "application/vnd.antix.game-component": { + source: "iana", + extensions: ["atx"] + }, + "application/vnd.apache.arrow.file": { + source: "iana" + }, + "application/vnd.apache.arrow.stream": { + source: "iana" + }, + "application/vnd.apache.thrift.binary": { + source: "iana" + }, + "application/vnd.apache.thrift.compact": { + source: "iana" + }, + "application/vnd.apache.thrift.json": { + source: "iana" + }, + "application/vnd.api+json": { + source: "iana", + compressible: true + }, + "application/vnd.aplextor.warrp+json": { + source: "iana", + compressible: true + }, + "application/vnd.apothekende.reservation+json": { + source: "iana", + compressible: true + }, + "application/vnd.apple.installer+xml": { + source: "iana", + compressible: true, + extensions: ["mpkg"] + }, + "application/vnd.apple.keynote": { + source: "iana", + extensions: ["key"] + }, + "application/vnd.apple.mpegurl": { + source: "iana", + extensions: ["m3u8"] + }, + "application/vnd.apple.numbers": { + source: "iana", + extensions: ["numbers"] + }, + "application/vnd.apple.pages": { + source: "iana", + extensions: ["pages"] + }, + "application/vnd.apple.pkpass": { + compressible: false, + extensions: ["pkpass"] + }, + "application/vnd.arastra.swi": { + source: "iana" + }, + "application/vnd.aristanetworks.swi": { + source: "iana", + extensions: ["swi"] + }, + "application/vnd.artisan+json": { + source: "iana", + compressible: true + }, + "application/vnd.artsquare": { + source: "iana" + }, + "application/vnd.astraea-software.iota": { + source: "iana", + extensions: ["iota"] + }, + "application/vnd.audiograph": { + source: "iana", + extensions: ["aep"] + }, + "application/vnd.autopackage": { + source: "iana" + }, + "application/vnd.avalon+json": { + source: "iana", + compressible: true + }, + "application/vnd.avistar+xml": { + source: "iana", + compressible: true + }, + "application/vnd.balsamiq.bmml+xml": { + source: "iana", + compressible: true, + extensions: ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + source: "iana" + }, + "application/vnd.banana-accounting": { + source: "iana" + }, + "application/vnd.bbf.usp.error": { + source: "iana" + }, + "application/vnd.bbf.usp.msg": { + source: "iana" + }, + "application/vnd.bbf.usp.msg+json": { + source: "iana", + compressible: true + }, + "application/vnd.bekitzur-stech+json": { + source: "iana", + compressible: true + }, + "application/vnd.bint.med-content": { + source: "iana" + }, + "application/vnd.biopax.rdf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.blink-idb-value-wrapper": { + source: "iana" + }, + "application/vnd.blueice.multipass": { + source: "iana", + extensions: ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + source: "iana" + }, + "application/vnd.bluetooth.le.oob": { + source: "iana" + }, + "application/vnd.bmi": { + source: "iana", + extensions: ["bmi"] + }, + "application/vnd.bpf": { + source: "iana" + }, + "application/vnd.bpf3": { + source: "iana" + }, + "application/vnd.businessobjects": { + source: "iana", + extensions: ["rep"] + }, + "application/vnd.byu.uapi+json": { + source: "iana", + compressible: true + }, + "application/vnd.cab-jscript": { + source: "iana" + }, + "application/vnd.canon-cpdl": { + source: "iana" + }, + "application/vnd.canon-lips": { + source: "iana" + }, + "application/vnd.capasystems-pg+json": { + source: "iana", + compressible: true + }, + "application/vnd.cendio.thinlinc.clientconf": { + source: "iana" + }, + "application/vnd.century-systems.tcp_stream": { + source: "iana" + }, + "application/vnd.chemdraw+xml": { + source: "iana", + compressible: true, + extensions: ["cdxml"] + }, + "application/vnd.chess-pgn": { + source: "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + source: "iana", + extensions: ["mmd"] + }, + "application/vnd.ciedi": { + source: "iana" + }, + "application/vnd.cinderella": { + source: "iana", + extensions: ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + source: "iana" + }, + "application/vnd.citationstyles.style+xml": { + source: "iana", + compressible: true, + extensions: ["csl"] + }, + "application/vnd.claymore": { + source: "iana", + extensions: ["cla"] + }, + "application/vnd.cloanto.rp9": { + source: "iana", + extensions: ["rp9"] + }, + "application/vnd.clonk.c4group": { + source: "iana", + extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + source: "iana", + extensions: ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + source: "iana", + extensions: ["c11amz"] + }, + "application/vnd.coffeescript": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + source: "iana" + }, + "application/vnd.collection+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.doc+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.next+json": { + source: "iana", + compressible: true + }, + "application/vnd.comicbook+zip": { + source: "iana", + compressible: false + }, + "application/vnd.comicbook-rar": { + source: "iana" + }, + "application/vnd.commerce-battelle": { + source: "iana" + }, + "application/vnd.commonspace": { + source: "iana", + extensions: ["csp"] + }, + "application/vnd.contact.cmsg": { + source: "iana", + extensions: ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + source: "iana", + compressible: true + }, + "application/vnd.cosmocaller": { + source: "iana", + extensions: ["cmc"] + }, + "application/vnd.crick.clicker": { + source: "iana", + extensions: ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + source: "iana", + extensions: ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + source: "iana", + extensions: ["clkp"] + }, + "application/vnd.crick.clicker.template": { + source: "iana", + extensions: ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + source: "iana", + extensions: ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + source: "iana", + compressible: true, + extensions: ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + source: "iana", + compressible: true + }, + "application/vnd.crypto-shade-file": { + source: "iana" + }, + "application/vnd.cryptomator.encrypted": { + source: "iana" + }, + "application/vnd.cryptomator.vault": { + source: "iana" + }, + "application/vnd.ctc-posml": { + source: "iana", + extensions: ["pml"] + }, + "application/vnd.ctct.ws+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cups-pdf": { + source: "iana" + }, + "application/vnd.cups-postscript": { + source: "iana" + }, + "application/vnd.cups-ppd": { + source: "iana", + extensions: ["ppd"] + }, + "application/vnd.cups-raster": { + source: "iana" + }, + "application/vnd.cups-raw": { + source: "iana" + }, + "application/vnd.curl": { + source: "iana" + }, + "application/vnd.curl.car": { + source: "apache", + extensions: ["car"] + }, + "application/vnd.curl.pcurl": { + source: "apache", + extensions: ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cybank": { + source: "iana" + }, + "application/vnd.cyclonedx+json": { + source: "iana", + compressible: true + }, + "application/vnd.cyclonedx+xml": { + source: "iana", + compressible: true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + source: "iana", + compressible: false + }, + "application/vnd.d3m-dataset": { + source: "iana" + }, + "application/vnd.d3m-problem": { + source: "iana" + }, + "application/vnd.dart": { + source: "iana", + compressible: true, + extensions: ["dart"] + }, + "application/vnd.data-vision.rdz": { + source: "iana", + extensions: ["rdz"] + }, + "application/vnd.datapackage+json": { + source: "iana", + compressible: true + }, + "application/vnd.dataresource+json": { + source: "iana", + compressible: true + }, + "application/vnd.dbf": { + source: "iana", + extensions: ["dbf"] + }, + "application/vnd.debian.binary-package": { + source: "iana" + }, + "application/vnd.dece.data": { + source: "iana", + extensions: ["uvf", "uvvf", "uvd", "uvvd"] + }, + "application/vnd.dece.ttml+xml": { + source: "iana", + compressible: true, + extensions: ["uvt", "uvvt"] + }, + "application/vnd.dece.unspecified": { + source: "iana", + extensions: ["uvx", "uvvx"] + }, + "application/vnd.dece.zip": { + source: "iana", + extensions: ["uvz", "uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + source: "iana", + extensions: ["fe_launch"] + }, + "application/vnd.desmume.movie": { + source: "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + source: "iana" + }, + "application/vnd.dm.delegation+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dna": { + source: "iana", + extensions: ["dna"] + }, + "application/vnd.document+json": { + source: "iana", + compressible: true + }, + "application/vnd.dolby.mlp": { + source: "apache", + extensions: ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + source: "iana" + }, + "application/vnd.dolby.mobile.2": { + source: "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + source: "iana" + }, + "application/vnd.dpgraph": { + source: "iana", + extensions: ["dpg"] + }, + "application/vnd.dreamfactory": { + source: "iana", + extensions: ["dfac"] + }, + "application/vnd.drive+json": { + source: "iana", + compressible: true + }, + "application/vnd.ds-keypoint": { + source: "apache", + extensions: ["kpxx"] + }, + "application/vnd.dtg.local": { + source: "iana" + }, + "application/vnd.dtg.local.flash": { + source: "iana" + }, + "application/vnd.dtg.local.html": { + source: "iana" + }, + "application/vnd.dvb.ait": { + source: "iana", + extensions: ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.dvbj": { + source: "iana" + }, + "application/vnd.dvb.esgcontainer": { + source: "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + source: "iana" + }, + "application/vnd.dvb.ipdcroaming": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + source: "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-container+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-generic+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-init+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.pfr": { + source: "iana" + }, + "application/vnd.dvb.service": { + source: "iana", + extensions: ["svc"] + }, + "application/vnd.dxr": { + source: "iana" + }, + "application/vnd.dynageo": { + source: "iana", + extensions: ["geo"] + }, + "application/vnd.dzr": { + source: "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + source: "iana" + }, + "application/vnd.ecdis-update": { + source: "iana" + }, + "application/vnd.ecip.rlp": { + source: "iana" + }, + "application/vnd.eclipse.ditto+json": { + source: "iana", + compressible: true + }, + "application/vnd.ecowin.chart": { + source: "iana", + extensions: ["mag"] + }, + "application/vnd.ecowin.filerequest": { + source: "iana" + }, + "application/vnd.ecowin.fileupdate": { + source: "iana" + }, + "application/vnd.ecowin.series": { + source: "iana" + }, + "application/vnd.ecowin.seriesrequest": { + source: "iana" + }, + "application/vnd.ecowin.seriesupdate": { + source: "iana" + }, + "application/vnd.efi.img": { + source: "iana" + }, + "application/vnd.efi.iso": { + source: "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + source: "iana", + compressible: true + }, + "application/vnd.enliven": { + source: "iana", + extensions: ["nml"] + }, + "application/vnd.enphase.envoy": { + source: "iana" + }, + "application/vnd.eprints.data+xml": { + source: "iana", + compressible: true + }, + "application/vnd.epson.esf": { + source: "iana", + extensions: ["esf"] + }, + "application/vnd.epson.msf": { + source: "iana", + extensions: ["msf"] + }, + "application/vnd.epson.quickanime": { + source: "iana", + extensions: ["qam"] + }, + "application/vnd.epson.salt": { + source: "iana", + extensions: ["slt"] + }, + "application/vnd.epson.ssf": { + source: "iana", + extensions: ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + source: "iana" + }, + "application/vnd.espass-espass+zip": { + source: "iana", + compressible: false + }, + "application/vnd.eszigno3+xml": { + source: "iana", + compressible: true, + extensions: ["es3", "et3"] + }, + "application/vnd.etsi.aoc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.asic-e+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.asic-s+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.cug+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvcommand+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvservice+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsync+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mcid+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mheg5": { + source: "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.pstn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.sci+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.simservs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.timestamp-token": { + source: "iana" + }, + "application/vnd.etsi.tsl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.tsl.der": { + source: "iana" + }, + "application/vnd.eu.kasparian.car+json": { + source: "iana", + compressible: true + }, + "application/vnd.eudora.data": { + source: "iana" + }, + "application/vnd.evolv.ecig.profile": { + source: "iana" + }, + "application/vnd.evolv.ecig.settings": { + source: "iana" + }, + "application/vnd.evolv.ecig.theme": { + source: "iana" + }, + "application/vnd.exstream-empower+zip": { + source: "iana", + compressible: false + }, + "application/vnd.exstream-package": { + source: "iana" + }, + "application/vnd.ezpix-album": { + source: "iana", + extensions: ["ez2"] + }, + "application/vnd.ezpix-package": { + source: "iana", + extensions: ["ez3"] + }, + "application/vnd.f-secure.mobile": { + source: "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + source: "iana", + compressible: false + }, + "application/vnd.fastcopy-disk-image": { + source: "iana" + }, + "application/vnd.fdf": { + source: "iana", + extensions: ["fdf"] + }, + "application/vnd.fdsn.mseed": { + source: "iana", + extensions: ["mseed"] + }, + "application/vnd.fdsn.seed": { + source: "iana", + extensions: ["seed", "dataless"] + }, + "application/vnd.ffsns": { + source: "iana" + }, + "application/vnd.ficlab.flb+zip": { + source: "iana", + compressible: false + }, + "application/vnd.filmit.zfc": { + source: "iana" + }, + "application/vnd.fints": { + source: "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + source: "iana" + }, + "application/vnd.flographit": { + source: "iana", + extensions: ["gph"] + }, + "application/vnd.fluxtime.clip": { + source: "iana", + extensions: ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + source: "iana" + }, + "application/vnd.framemaker": { + source: "iana", + extensions: ["fm", "frame", "maker", "book"] + }, + "application/vnd.frogans.fnc": { + source: "iana", + extensions: ["fnc"] + }, + "application/vnd.frogans.ltf": { + source: "iana", + extensions: ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + source: "iana", + extensions: ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + source: "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.fujitsu.oasys": { + source: "iana", + extensions: ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + source: "iana", + extensions: ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + source: "iana", + extensions: ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + source: "iana", + extensions: ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + source: "iana", + extensions: ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + source: "iana" + }, + "application/vnd.fujixerox.art4": { + source: "iana" + }, + "application/vnd.fujixerox.ddd": { + source: "iana", + extensions: ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + source: "iana", + extensions: ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + source: "iana", + extensions: ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + source: "iana" + }, + "application/vnd.fujixerox.hbpl": { + source: "iana" + }, + "application/vnd.fut-misnet": { + source: "iana" + }, + "application/vnd.futoin+cbor": { + source: "iana" + }, + "application/vnd.futoin+json": { + source: "iana", + compressible: true + }, + "application/vnd.fuzzysheet": { + source: "iana", + extensions: ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + source: "iana", + extensions: ["txd"] + }, + "application/vnd.gentics.grd+json": { + source: "iana", + compressible: true + }, + "application/vnd.geo+json": { + source: "iana", + compressible: true + }, + "application/vnd.geocube+xml": { + source: "iana", + compressible: true + }, + "application/vnd.geogebra.file": { + source: "iana", + extensions: ["ggb"] + }, + "application/vnd.geogebra.slides": { + source: "iana" + }, + "application/vnd.geogebra.tool": { + source: "iana", + extensions: ["ggt"] + }, + "application/vnd.geometry-explorer": { + source: "iana", + extensions: ["gex", "gre"] + }, + "application/vnd.geonext": { + source: "iana", + extensions: ["gxt"] + }, + "application/vnd.geoplan": { + source: "iana", + extensions: ["g2w"] + }, + "application/vnd.geospace": { + source: "iana", + extensions: ["g3w"] + }, + "application/vnd.gerber": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + source: "iana" + }, + "application/vnd.gmx": { + source: "iana", + extensions: ["gmx"] + }, + "application/vnd.google-apps.document": { + compressible: false, + extensions: ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + compressible: false, + extensions: ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + compressible: false, + extensions: ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + source: "iana", + compressible: true, + extensions: ["kml"] + }, + "application/vnd.google-earth.kmz": { + source: "iana", + compressible: false, + extensions: ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gov.sk.e-form+zip": { + source: "iana", + compressible: false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.grafeq": { + source: "iana", + extensions: ["gqf", "gqs"] + }, + "application/vnd.gridmp": { + source: "iana" + }, + "application/vnd.groove-account": { + source: "iana", + extensions: ["gac"] + }, + "application/vnd.groove-help": { + source: "iana", + extensions: ["ghf"] + }, + "application/vnd.groove-identity-message": { + source: "iana", + extensions: ["gim"] + }, + "application/vnd.groove-injector": { + source: "iana", + extensions: ["grv"] + }, + "application/vnd.groove-tool-message": { + source: "iana", + extensions: ["gtm"] + }, + "application/vnd.groove-tool-template": { + source: "iana", + extensions: ["tpl"] + }, + "application/vnd.groove-vcard": { + source: "iana", + extensions: ["vcg"] + }, + "application/vnd.hal+json": { + source: "iana", + compressible: true + }, + "application/vnd.hal+xml": { + source: "iana", + compressible: true, + extensions: ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + source: "iana", + compressible: true, + extensions: ["zmm"] + }, + "application/vnd.hbci": { + source: "iana", + extensions: ["hbci"] + }, + "application/vnd.hc+json": { + source: "iana", + compressible: true + }, + "application/vnd.hcl-bireports": { + source: "iana" + }, + "application/vnd.hdt": { + source: "iana" + }, + "application/vnd.heroku+json": { + source: "iana", + compressible: true + }, + "application/vnd.hhe.lesson-player": { + source: "iana", + extensions: ["les"] + }, + "application/vnd.hl7cda+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hl7v2+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hp-hpgl": { + source: "iana", + extensions: ["hpgl"] + }, + "application/vnd.hp-hpid": { + source: "iana", + extensions: ["hpid"] + }, + "application/vnd.hp-hps": { + source: "iana", + extensions: ["hps"] + }, + "application/vnd.hp-jlyt": { + source: "iana", + extensions: ["jlt"] + }, + "application/vnd.hp-pcl": { + source: "iana", + extensions: ["pcl"] + }, + "application/vnd.hp-pclxl": { + source: "iana", + extensions: ["pclxl"] + }, + "application/vnd.httphone": { + source: "iana" + }, + "application/vnd.hydrostatix.sof-data": { + source: "iana", + extensions: ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyper-item+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyperdrive+json": { + source: "iana", + compressible: true + }, + "application/vnd.hzn-3d-crossword": { + source: "iana" + }, + "application/vnd.ibm.afplinedata": { + source: "iana" + }, + "application/vnd.ibm.electronic-media": { + source: "iana" + }, + "application/vnd.ibm.minipay": { + source: "iana", + extensions: ["mpy"] + }, + "application/vnd.ibm.modcap": { + source: "iana", + extensions: ["afp", "listafp", "list3820"] + }, + "application/vnd.ibm.rights-management": { + source: "iana", + extensions: ["irm"] + }, + "application/vnd.ibm.secure-container": { + source: "iana", + extensions: ["sc"] + }, + "application/vnd.iccprofile": { + source: "iana", + extensions: ["icc", "icm"] + }, + "application/vnd.ieee.1905": { + source: "iana" + }, + "application/vnd.igloader": { + source: "iana", + extensions: ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + source: "iana", + compressible: false + }, + "application/vnd.imagemeter.image+zip": { + source: "iana", + compressible: false + }, + "application/vnd.immervision-ivp": { + source: "iana", + extensions: ["ivp"] + }, + "application/vnd.immervision-ivu": { + source: "iana", + extensions: ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + source: "iana" + }, + "application/vnd.ims.imsccv1p2": { + source: "iana" + }, + "application/vnd.ims.imsccv1p3": { + source: "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + source: "iana", + compressible: true + }, + "application/vnd.informedcontrol.rms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.informix-visionary": { + source: "iana" + }, + "application/vnd.infotech.project": { + source: "iana" + }, + "application/vnd.infotech.project+xml": { + source: "iana", + compressible: true + }, + "application/vnd.innopath.wamp.notification": { + source: "iana" + }, + "application/vnd.insors.igm": { + source: "iana", + extensions: ["igm"] + }, + "application/vnd.intercon.formnet": { + source: "iana", + extensions: ["xpw", "xpx"] + }, + "application/vnd.intergeo": { + source: "iana", + extensions: ["i2g"] + }, + "application/vnd.intertrust.digibox": { + source: "iana" + }, + "application/vnd.intertrust.nncp": { + source: "iana" + }, + "application/vnd.intu.qbo": { + source: "iana", + extensions: ["qbo"] + }, + "application/vnd.intu.qfx": { + source: "iana", + extensions: ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.packageitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.planningitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ipunplugged.rcprofile": { + source: "iana", + extensions: ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + source: "iana", + compressible: true, + extensions: ["irp"] + }, + "application/vnd.is-xpr": { + source: "iana", + extensions: ["xpr"] + }, + "application/vnd.isac.fcs": { + source: "iana", + extensions: ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + source: "iana", + compressible: false + }, + "application/vnd.jam": { + source: "iana", + extensions: ["jam"] + }, + "application/vnd.japannet-directory-service": { + source: "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-payment-wakeup": { + source: "iana" + }, + "application/vnd.japannet-registration": { + source: "iana" + }, + "application/vnd.japannet-registration-wakeup": { + source: "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-verification": { + source: "iana" + }, + "application/vnd.japannet-verification-wakeup": { + source: "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + source: "iana", + extensions: ["rms"] + }, + "application/vnd.jisp": { + source: "iana", + extensions: ["jisp"] + }, + "application/vnd.joost.joda-archive": { + source: "iana", + extensions: ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + source: "iana" + }, + "application/vnd.kahootz": { + source: "iana", + extensions: ["ktz", "ktr"] + }, + "application/vnd.kde.karbon": { + source: "iana", + extensions: ["karbon"] + }, + "application/vnd.kde.kchart": { + source: "iana", + extensions: ["chrt"] + }, + "application/vnd.kde.kformula": { + source: "iana", + extensions: ["kfo"] + }, + "application/vnd.kde.kivio": { + source: "iana", + extensions: ["flw"] + }, + "application/vnd.kde.kontour": { + source: "iana", + extensions: ["kon"] + }, + "application/vnd.kde.kpresenter": { + source: "iana", + extensions: ["kpr", "kpt"] + }, + "application/vnd.kde.kspread": { + source: "iana", + extensions: ["ksp"] + }, + "application/vnd.kde.kword": { + source: "iana", + extensions: ["kwd", "kwt"] + }, + "application/vnd.kenameaapp": { + source: "iana", + extensions: ["htke"] + }, + "application/vnd.kidspiration": { + source: "iana", + extensions: ["kia"] + }, + "application/vnd.kinar": { + source: "iana", + extensions: ["kne", "knp"] + }, + "application/vnd.koan": { + source: "iana", + extensions: ["skp", "skd", "skt", "skm"] + }, + "application/vnd.kodak-descriptor": { + source: "iana", + extensions: ["sse"] + }, + "application/vnd.las": { + source: "iana" + }, + "application/vnd.las.las+json": { + source: "iana", + compressible: true + }, + "application/vnd.las.las+xml": { + source: "iana", + compressible: true, + extensions: ["lasxml"] + }, + "application/vnd.laszip": { + source: "iana" + }, + "application/vnd.leap+json": { + source: "iana", + compressible: true + }, + "application/vnd.liberty-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + source: "iana", + extensions: ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + source: "iana", + compressible: true, + extensions: ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + source: "iana", + compressible: false + }, + "application/vnd.loom": { + source: "iana" + }, + "application/vnd.lotus-1-2-3": { + source: "iana", + extensions: ["123"] + }, + "application/vnd.lotus-approach": { + source: "iana", + extensions: ["apr"] + }, + "application/vnd.lotus-freelance": { + source: "iana", + extensions: ["pre"] + }, + "application/vnd.lotus-notes": { + source: "iana", + extensions: ["nsf"] + }, + "application/vnd.lotus-organizer": { + source: "iana", + extensions: ["org"] + }, + "application/vnd.lotus-screencam": { + source: "iana", + extensions: ["scm"] + }, + "application/vnd.lotus-wordpro": { + source: "iana", + extensions: ["lwp"] + }, + "application/vnd.macports.portpkg": { + source: "iana", + extensions: ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + source: "iana", + extensions: ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.conftoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.license+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.mdcf": { + source: "iana" + }, + "application/vnd.mason+json": { + source: "iana", + compressible: true + }, + "application/vnd.maxar.archive.3tz+zip": { + source: "iana", + compressible: false + }, + "application/vnd.maxmind.maxmind-db": { + source: "iana" + }, + "application/vnd.mcd": { + source: "iana", + extensions: ["mcd"] + }, + "application/vnd.medcalcdata": { + source: "iana", + extensions: ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + source: "iana", + extensions: ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + source: "iana" + }, + "application/vnd.mfer": { + source: "iana", + extensions: ["mwf"] + }, + "application/vnd.mfmp": { + source: "iana", + extensions: ["mfm"] + }, + "application/vnd.micro+json": { + source: "iana", + compressible: true + }, + "application/vnd.micrografx.flo": { + source: "iana", + extensions: ["flo"] + }, + "application/vnd.micrografx.igx": { + source: "iana", + extensions: ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + source: "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + source: "iana" + }, + "application/vnd.miele+json": { + source: "iana", + compressible: true + }, + "application/vnd.mif": { + source: "iana", + extensions: ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + source: "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + source: "iana" + }, + "application/vnd.mobius.daf": { + source: "iana", + extensions: ["daf"] + }, + "application/vnd.mobius.dis": { + source: "iana", + extensions: ["dis"] + }, + "application/vnd.mobius.mbk": { + source: "iana", + extensions: ["mbk"] + }, + "application/vnd.mobius.mqy": { + source: "iana", + extensions: ["mqy"] + }, + "application/vnd.mobius.msl": { + source: "iana", + extensions: ["msl"] + }, + "application/vnd.mobius.plc": { + source: "iana", + extensions: ["plc"] + }, + "application/vnd.mobius.txf": { + source: "iana", + extensions: ["txf"] + }, + "application/vnd.mophun.application": { + source: "iana", + extensions: ["mpn"] + }, + "application/vnd.mophun.certificate": { + source: "iana", + extensions: ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + source: "iana" + }, + "application/vnd.motorola.iprm": { + source: "iana" + }, + "application/vnd.mozilla.xul+xml": { + source: "iana", + compressible: true, + extensions: ["xul"] + }, + "application/vnd.ms-3mfdocument": { + source: "iana" + }, + "application/vnd.ms-artgalry": { + source: "iana", + extensions: ["cil"] + }, + "application/vnd.ms-asf": { + source: "iana" + }, + "application/vnd.ms-cab-compressed": { + source: "iana", + extensions: ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + source: "apache" + }, + "application/vnd.ms-excel": { + source: "iana", + compressible: false, + extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + source: "iana", + extensions: ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + source: "iana", + extensions: ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + source: "iana", + extensions: ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + source: "iana", + extensions: ["xltm"] + }, + "application/vnd.ms-fontobject": { + source: "iana", + compressible: true, + extensions: ["eot"] + }, + "application/vnd.ms-htmlhelp": { + source: "iana", + extensions: ["chm"] + }, + "application/vnd.ms-ims": { + source: "iana", + extensions: ["ims"] + }, + "application/vnd.ms-lrm": { + source: "iana", + extensions: ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-officetheme": { + source: "iana", + extensions: ["thmx"] + }, + "application/vnd.ms-opentype": { + source: "apache", + compressible: true + }, + "application/vnd.ms-outlook": { + compressible: false, + extensions: ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + source: "apache" + }, + "application/vnd.ms-pki.seccat": { + source: "apache", + extensions: ["cat"] + }, + "application/vnd.ms-pki.stl": { + source: "apache", + extensions: ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-powerpoint": { + source: "iana", + compressible: false, + extensions: ["ppt", "pps", "pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + source: "iana", + extensions: ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + source: "iana", + extensions: ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + source: "iana", + extensions: ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + source: "iana", + extensions: ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + source: "iana", + extensions: ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-printing.printticket+xml": { + source: "apache", + compressible: true + }, + "application/vnd.ms-printschematicket+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-project": { + source: "iana", + extensions: ["mpp", "mpt"] + }, + "application/vnd.ms-tnef": { + source: "iana" + }, + "application/vnd.ms-windows.devicepairing": { + source: "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + source: "iana" + }, + "application/vnd.ms-windows.printerpairing": { + source: "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + source: "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + source: "iana", + extensions: ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + source: "iana", + extensions: ["dotm"] + }, + "application/vnd.ms-works": { + source: "iana", + extensions: ["wps", "wks", "wcm", "wdb"] + }, + "application/vnd.ms-wpl": { + source: "iana", + extensions: ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + source: "iana", + compressible: false, + extensions: ["xps"] + }, + "application/vnd.msa-disk-image": { + source: "iana" + }, + "application/vnd.mseq": { + source: "iana", + extensions: ["mseq"] + }, + "application/vnd.msign": { + source: "iana" + }, + "application/vnd.multiad.creator": { + source: "iana" + }, + "application/vnd.multiad.creator.cif": { + source: "iana" + }, + "application/vnd.music-niff": { + source: "iana" + }, + "application/vnd.musician": { + source: "iana", + extensions: ["mus"] + }, + "application/vnd.muvee.style": { + source: "iana", + extensions: ["msty"] + }, + "application/vnd.mynfc": { + source: "iana", + extensions: ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + source: "iana", + compressible: true + }, + "application/vnd.ncd.control": { + source: "iana" + }, + "application/vnd.ncd.reference": { + source: "iana" + }, + "application/vnd.nearst.inv+json": { + source: "iana", + compressible: true + }, + "application/vnd.nebumind.line": { + source: "iana" + }, + "application/vnd.nervana": { + source: "iana" + }, + "application/vnd.netfpx": { + source: "iana" + }, + "application/vnd.neurolanguage.nlu": { + source: "iana", + extensions: ["nlu"] + }, + "application/vnd.nimn": { + source: "iana" + }, + "application/vnd.nintendo.nitro.rom": { + source: "iana" + }, + "application/vnd.nintendo.snes.rom": { + source: "iana" + }, + "application/vnd.nitf": { + source: "iana", + extensions: ["ntf", "nitf"] + }, + "application/vnd.noblenet-directory": { + source: "iana", + extensions: ["nnd"] + }, + "application/vnd.noblenet-sealer": { + source: "iana", + extensions: ["nns"] + }, + "application/vnd.noblenet-web": { + source: "iana", + extensions: ["nnw"] + }, + "application/vnd.nokia.catalogs": { + source: "iana" + }, + "application/vnd.nokia.conml+wbxml": { + source: "iana" + }, + "application/vnd.nokia.conml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.iptv.config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.isds-radio-presets": { + source: "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + source: "iana" + }, + "application/vnd.nokia.landmark+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.landmarkcollection+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.n-gage.ac+xml": { + source: "iana", + compressible: true, + extensions: ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + source: "iana", + extensions: ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + source: "iana", + extensions: ["n-gage"] + }, + "application/vnd.nokia.ncd": { + source: "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + source: "iana" + }, + "application/vnd.nokia.pcd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.radio-preset": { + source: "iana", + extensions: ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + source: "iana", + extensions: ["rpss"] + }, + "application/vnd.novadigm.edm": { + source: "iana", + extensions: ["edm"] + }, + "application/vnd.novadigm.edx": { + source: "iana", + extensions: ["edx"] + }, + "application/vnd.novadigm.ext": { + source: "iana", + extensions: ["ext"] + }, + "application/vnd.ntt-local.content-share": { + source: "iana" + }, + "application/vnd.ntt-local.file-transfer": { + source: "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + source: "iana" + }, + "application/vnd.oasis.opendocument.chart": { + source: "iana", + extensions: ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + source: "iana", + extensions: ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + source: "iana", + extensions: ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + source: "iana", + extensions: ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + source: "iana", + extensions: ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + source: "iana", + compressible: false, + extensions: ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + source: "iana", + extensions: ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + source: "iana", + extensions: ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + source: "iana", + extensions: ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + source: "iana", + compressible: false, + extensions: ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + source: "iana", + extensions: ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + source: "iana", + compressible: false, + extensions: ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + source: "iana", + extensions: ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + source: "iana", + compressible: false, + extensions: ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + source: "iana", + extensions: ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + source: "iana", + extensions: ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + source: "iana", + extensions: ["oth"] + }, + "application/vnd.obn": { + source: "iana" + }, + "application/vnd.ocf+cbor": { + source: "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.oftn.l10n+json": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.cspg-hexbinary": { + source: "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.dae.xhtml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.pae.gem": { + source: "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.spdlist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.ueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.userprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.olpc-sugar": { + source: "iana", + extensions: ["xo"] + }, + "application/vnd.oma-scws-config": { + source: "iana" + }, + "application/vnd.oma-scws-http-request": { + source: "iana" + }, + "application/vnd.oma-scws-http-response": { + source: "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.imd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.ltkm": { + source: "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + source: "iana" + }, + "application/vnd.oma.bcast.sgboot": { + source: "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sgdu": { + source: "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + source: "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sprov+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.stkm": { + source: "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-feature-handler+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-pcc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-subs-invite+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-user-prefs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.dcd": { + source: "iana" + }, + "application/vnd.oma.dcdc": { + source: "iana" + }, + "application/vnd.oma.dd2+xml": { + source: "iana", + compressible: true, + extensions: ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.group-usage-list+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+cbor": { + source: "iana" + }, + "application/vnd.oma.lwm2m+json": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+tlv": { + source: "iana" + }, + "application/vnd.oma.pal+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.final-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.groups+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.push": { + source: "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.xcap-directory+xml": { + source: "iana", + compressible: true + }, + "application/vnd.omads-email+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-file+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-folder+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omaloc-supl-init": { + source: "iana" + }, + "application/vnd.onepager": { + source: "iana" + }, + "application/vnd.onepagertamp": { + source: "iana" + }, + "application/vnd.onepagertamx": { + source: "iana" + }, + "application/vnd.onepagertat": { + source: "iana" + }, + "application/vnd.onepagertatp": { + source: "iana" + }, + "application/vnd.onepagertatx": { + source: "iana" + }, + "application/vnd.openblox.game+xml": { + source: "iana", + compressible: true, + extensions: ["obgx"] + }, + "application/vnd.openblox.game-binary": { + source: "iana" + }, + "application/vnd.openeye.oeb": { + source: "iana" + }, + "application/vnd.openofficeorg.extension": { + source: "apache", + extensions: ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + source: "iana", + compressible: true, + extensions: ["osm"] + }, + "application/vnd.opentimestamps.ots": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + source: "iana", + compressible: false, + extensions: ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + source: "iana", + extensions: ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + source: "iana", + extensions: ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + source: "iana", + extensions: ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + source: "iana", + compressible: false, + extensions: ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + source: "iana", + extensions: ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + source: "iana", + compressible: false, + extensions: ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + source: "iana", + extensions: ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oracle.resource+json": { + source: "iana", + compressible: true + }, + "application/vnd.orange.indata": { + source: "iana" + }, + "application/vnd.osa.netdeploy": { + source: "iana" + }, + "application/vnd.osgeo.mapguide.package": { + source: "iana", + extensions: ["mgp"] + }, + "application/vnd.osgi.bundle": { + source: "iana" + }, + "application/vnd.osgi.dp": { + source: "iana", + extensions: ["dp"] + }, + "application/vnd.osgi.subsystem": { + source: "iana", + extensions: ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oxli.countgraph": { + source: "iana" + }, + "application/vnd.pagerduty+json": { + source: "iana", + compressible: true + }, + "application/vnd.palm": { + source: "iana", + extensions: ["pdb", "pqa", "oprc"] + }, + "application/vnd.panoply": { + source: "iana" + }, + "application/vnd.paos.xml": { + source: "iana" + }, + "application/vnd.patentdive": { + source: "iana" + }, + "application/vnd.patientecommsdoc": { + source: "iana" + }, + "application/vnd.pawaafile": { + source: "iana", + extensions: ["paw"] + }, + "application/vnd.pcos": { + source: "iana" + }, + "application/vnd.pg.format": { + source: "iana", + extensions: ["str"] + }, + "application/vnd.pg.osasli": { + source: "iana", + extensions: ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + source: "iana" + }, + "application/vnd.picsel": { + source: "iana", + extensions: ["efif"] + }, + "application/vnd.pmi.widget": { + source: "iana", + extensions: ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + source: "iana", + compressible: true + }, + "application/vnd.pocketlearn": { + source: "iana", + extensions: ["plf"] + }, + "application/vnd.powerbuilder6": { + source: "iana", + extensions: ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + source: "iana" + }, + "application/vnd.powerbuilder7": { + source: "iana" + }, + "application/vnd.powerbuilder7-s": { + source: "iana" + }, + "application/vnd.powerbuilder75": { + source: "iana" + }, + "application/vnd.powerbuilder75-s": { + source: "iana" + }, + "application/vnd.preminet": { + source: "iana" + }, + "application/vnd.previewsystems.box": { + source: "iana", + extensions: ["box"] + }, + "application/vnd.proteus.magazine": { + source: "iana", + extensions: ["mgz"] + }, + "application/vnd.psfs": { + source: "iana" + }, + "application/vnd.publishare-delta-tree": { + source: "iana", + extensions: ["qps"] + }, + "application/vnd.pvi.ptid1": { + source: "iana", + extensions: ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + source: "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + source: "iana", + compressible: true + }, + "application/vnd.qualcomm.brew-app-res": { + source: "iana" + }, + "application/vnd.quarantainenet": { + source: "iana" + }, + "application/vnd.quark.quarkxpress": { + source: "iana", + extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] + }, + "application/vnd.quobject-quoxdocument": { + source: "iana" + }, + "application/vnd.radisys.moml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + source: "iana", + compressible: true + }, + "application/vnd.rainstor.data": { + source: "iana" + }, + "application/vnd.rapid": { + source: "iana" + }, + "application/vnd.rar": { + source: "iana", + extensions: ["rar"] + }, + "application/vnd.realvnc.bed": { + source: "iana", + extensions: ["bed"] + }, + "application/vnd.recordare.musicxml": { + source: "iana", + extensions: ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + source: "iana", + compressible: true, + extensions: ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + source: "iana" + }, + "application/vnd.resilient.logic": { + source: "iana" + }, + "application/vnd.restful+json": { + source: "iana", + compressible: true + }, + "application/vnd.rig.cryptonote": { + source: "iana", + extensions: ["cryptonote"] + }, + "application/vnd.rim.cod": { + source: "apache", + extensions: ["cod"] + }, + "application/vnd.rn-realmedia": { + source: "apache", + extensions: ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + source: "apache", + extensions: ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + source: "iana", + compressible: true, + extensions: ["link66"] + }, + "application/vnd.rs-274x": { + source: "iana" + }, + "application/vnd.ruckus.download": { + source: "iana" + }, + "application/vnd.s3sms": { + source: "iana" + }, + "application/vnd.sailingtracker.track": { + source: "iana", + extensions: ["st"] + }, + "application/vnd.sar": { + source: "iana" + }, + "application/vnd.sbm.cid": { + source: "iana" + }, + "application/vnd.sbm.mid2": { + source: "iana" + }, + "application/vnd.scribus": { + source: "iana" + }, + "application/vnd.sealed.3df": { + source: "iana" + }, + "application/vnd.sealed.csf": { + source: "iana" + }, + "application/vnd.sealed.doc": { + source: "iana" + }, + "application/vnd.sealed.eml": { + source: "iana" + }, + "application/vnd.sealed.mht": { + source: "iana" + }, + "application/vnd.sealed.net": { + source: "iana" + }, + "application/vnd.sealed.ppt": { + source: "iana" + }, + "application/vnd.sealed.tiff": { + source: "iana" + }, + "application/vnd.sealed.xls": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + source: "iana" + }, + "application/vnd.seemail": { + source: "iana", + extensions: ["see"] + }, + "application/vnd.seis+json": { + source: "iana", + compressible: true + }, + "application/vnd.sema": { + source: "iana", + extensions: ["sema"] + }, + "application/vnd.semd": { + source: "iana", + extensions: ["semd"] + }, + "application/vnd.semf": { + source: "iana", + extensions: ["semf"] + }, + "application/vnd.shade-save-file": { + source: "iana" + }, + "application/vnd.shana.informed.formdata": { + source: "iana", + extensions: ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + source: "iana", + extensions: ["itp"] + }, + "application/vnd.shana.informed.interchange": { + source: "iana", + extensions: ["iif"] + }, + "application/vnd.shana.informed.package": { + source: "iana", + extensions: ["ipk"] + }, + "application/vnd.shootproof+json": { + source: "iana", + compressible: true + }, + "application/vnd.shopkick+json": { + source: "iana", + compressible: true + }, + "application/vnd.shp": { + source: "iana" + }, + "application/vnd.shx": { + source: "iana" + }, + "application/vnd.sigrok.session": { + source: "iana" + }, + "application/vnd.simtech-mindmapper": { + source: "iana", + extensions: ["twd", "twds"] + }, + "application/vnd.siren+json": { + source: "iana", + compressible: true + }, + "application/vnd.smaf": { + source: "iana", + extensions: ["mmf"] + }, + "application/vnd.smart.notebook": { + source: "iana" + }, + "application/vnd.smart.teacher": { + source: "iana", + extensions: ["teacher"] + }, + "application/vnd.snesdev-page-table": { + source: "iana" + }, + "application/vnd.software602.filler.form+xml": { + source: "iana", + compressible: true, + extensions: ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + source: "iana" + }, + "application/vnd.solent.sdkm+xml": { + source: "iana", + compressible: true, + extensions: ["sdkm", "sdkd"] + }, + "application/vnd.spotfire.dxp": { + source: "iana", + extensions: ["dxp"] + }, + "application/vnd.spotfire.sfs": { + source: "iana", + extensions: ["sfs"] + }, + "application/vnd.sqlite3": { + source: "iana" + }, + "application/vnd.sss-cod": { + source: "iana" + }, + "application/vnd.sss-dtf": { + source: "iana" + }, + "application/vnd.sss-ntf": { + source: "iana" + }, + "application/vnd.stardivision.calc": { + source: "apache", + extensions: ["sdc"] + }, + "application/vnd.stardivision.draw": { + source: "apache", + extensions: ["sda"] + }, + "application/vnd.stardivision.impress": { + source: "apache", + extensions: ["sdd"] + }, + "application/vnd.stardivision.math": { + source: "apache", + extensions: ["smf"] + }, + "application/vnd.stardivision.writer": { + source: "apache", + extensions: ["sdw", "vor"] + }, + "application/vnd.stardivision.writer-global": { + source: "apache", + extensions: ["sgl"] + }, + "application/vnd.stepmania.package": { + source: "iana", + extensions: ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + source: "iana", + extensions: ["sm"] + }, + "application/vnd.street-stream": { + source: "iana" + }, + "application/vnd.sun.wadl+xml": { + source: "iana", + compressible: true, + extensions: ["wadl"] + }, + "application/vnd.sun.xml.calc": { + source: "apache", + extensions: ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + source: "apache", + extensions: ["stc"] + }, + "application/vnd.sun.xml.draw": { + source: "apache", + extensions: ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + source: "apache", + extensions: ["std"] + }, + "application/vnd.sun.xml.impress": { + source: "apache", + extensions: ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + source: "apache", + extensions: ["sti"] + }, + "application/vnd.sun.xml.math": { + source: "apache", + extensions: ["sxm"] + }, + "application/vnd.sun.xml.writer": { + source: "apache", + extensions: ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + source: "apache", + extensions: ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + source: "apache", + extensions: ["stw"] + }, + "application/vnd.sus-calendar": { + source: "iana", + extensions: ["sus", "susp"] + }, + "application/vnd.svd": { + source: "iana", + extensions: ["svd"] + }, + "application/vnd.swiftview-ics": { + source: "iana" + }, + "application/vnd.sycle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.syft+json": { + source: "iana", + compressible: true + }, + "application/vnd.symbian.install": { + source: "apache", + extensions: ["sis", "sisx"] + }, + "application/vnd.syncml+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + source: "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmddf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.syncml.ds.notification": { + source: "iana" + }, + "application/vnd.tableschema+json": { + source: "iana", + compressible: true + }, + "application/vnd.tao.intent-module-archive": { + source: "iana", + extensions: ["tao"] + }, + "application/vnd.tcpdump.pcap": { + source: "iana", + extensions: ["pcap", "cap", "dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + source: "iana", + compressible: true + }, + "application/vnd.tmd.mediaflex.api+xml": { + source: "iana", + compressible: true + }, + "application/vnd.tml": { + source: "iana" + }, + "application/vnd.tmobile-livetv": { + source: "iana", + extensions: ["tmo"] + }, + "application/vnd.tri.onesource": { + source: "iana" + }, + "application/vnd.trid.tpt": { + source: "iana", + extensions: ["tpt"] + }, + "application/vnd.triscape.mxs": { + source: "iana", + extensions: ["mxs"] + }, + "application/vnd.trueapp": { + source: "iana", + extensions: ["tra"] + }, + "application/vnd.truedoc": { + source: "iana" + }, + "application/vnd.ubisoft.webplayer": { + source: "iana" + }, + "application/vnd.ufdl": { + source: "iana", + extensions: ["ufd", "ufdl"] + }, + "application/vnd.uiq.theme": { + source: "iana", + extensions: ["utz"] + }, + "application/vnd.umajin": { + source: "iana", + extensions: ["umj"] + }, + "application/vnd.unity": { + source: "iana", + extensions: ["unityweb"] + }, + "application/vnd.uoml+xml": { + source: "iana", + compressible: true, + extensions: ["uoml"] + }, + "application/vnd.uplanet.alert": { + source: "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.cacheop": { + source: "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.channel": { + source: "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.list": { + source: "iana" + }, + "application/vnd.uplanet.list-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.listcmd": { + source: "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.signal": { + source: "iana" + }, + "application/vnd.uri-map": { + source: "iana" + }, + "application/vnd.valve.source.material": { + source: "iana" + }, + "application/vnd.vcx": { + source: "iana", + extensions: ["vcx"] + }, + "application/vnd.vd-study": { + source: "iana" + }, + "application/vnd.vectorworks": { + source: "iana" + }, + "application/vnd.vel+json": { + source: "iana", + compressible: true + }, + "application/vnd.verimatrix.vcas": { + source: "iana" + }, + "application/vnd.veritone.aion+json": { + source: "iana", + compressible: true + }, + "application/vnd.veryant.thin": { + source: "iana" + }, + "application/vnd.ves.encrypted": { + source: "iana" + }, + "application/vnd.vidsoft.vidconference": { + source: "iana" + }, + "application/vnd.visio": { + source: "iana", + extensions: ["vsd", "vst", "vss", "vsw"] + }, + "application/vnd.visionary": { + source: "iana", + extensions: ["vis"] + }, + "application/vnd.vividence.scriptfile": { + source: "iana" + }, + "application/vnd.vsf": { + source: "iana", + extensions: ["vsf"] + }, + "application/vnd.wap.sic": { + source: "iana" + }, + "application/vnd.wap.slc": { + source: "iana" + }, + "application/vnd.wap.wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["wbxml"] + }, + "application/vnd.wap.wmlc": { + source: "iana", + extensions: ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + source: "iana", + extensions: ["wmlsc"] + }, + "application/vnd.webturbo": { + source: "iana", + extensions: ["wtb"] + }, + "application/vnd.wfa.dpp": { + source: "iana" + }, + "application/vnd.wfa.p2p": { + source: "iana" + }, + "application/vnd.wfa.wsc": { + source: "iana" + }, + "application/vnd.windows.devicepairing": { + source: "iana" + }, + "application/vnd.wmc": { + source: "iana" + }, + "application/vnd.wmf.bootstrap": { + source: "iana" + }, + "application/vnd.wolfram.mathematica": { + source: "iana" + }, + "application/vnd.wolfram.mathematica.package": { + source: "iana" + }, + "application/vnd.wolfram.player": { + source: "iana", + extensions: ["nbp"] + }, + "application/vnd.wordperfect": { + source: "iana", + extensions: ["wpd"] + }, + "application/vnd.wqd": { + source: "iana", + extensions: ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + source: "iana" + }, + "application/vnd.wt.stf": { + source: "iana", + extensions: ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + source: "iana" + }, + "application/vnd.wv.csp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.wv.ssp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xacml+json": { + source: "iana", + compressible: true + }, + "application/vnd.xara": { + source: "iana", + extensions: ["xar"] + }, + "application/vnd.xfdl": { + source: "iana", + extensions: ["xfdl"] + }, + "application/vnd.xfdl.webform": { + source: "iana" + }, + "application/vnd.xmi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xmpie.cpkg": { + source: "iana" + }, + "application/vnd.xmpie.dpkg": { + source: "iana" + }, + "application/vnd.xmpie.plan": { + source: "iana" + }, + "application/vnd.xmpie.ppkg": { + source: "iana" + }, + "application/vnd.xmpie.xlim": { + source: "iana" + }, + "application/vnd.yamaha.hv-dic": { + source: "iana", + extensions: ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + source: "iana", + extensions: ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + source: "iana", + extensions: ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + source: "iana", + extensions: ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + source: "iana", + compressible: true, + extensions: ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + source: "iana" + }, + "application/vnd.yamaha.smaf-audio": { + source: "iana", + extensions: ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + source: "iana", + extensions: ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + source: "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + source: "iana" + }, + "application/vnd.yaoweme": { + source: "iana" + }, + "application/vnd.yellowriver-custom-menu": { + source: "iana", + extensions: ["cmp"] + }, + "application/vnd.youtube.yt": { + source: "iana" + }, + "application/vnd.zul": { + source: "iana", + extensions: ["zir", "zirz"] + }, + "application/vnd.zzazz.deck+xml": { + source: "iana", + compressible: true, + extensions: ["zaz"] + }, + "application/voicexml+xml": { + source: "iana", + compressible: true, + extensions: ["vxml"] + }, + "application/voucher-cms+json": { + source: "iana", + compressible: true + }, + "application/vq-rtcpxr": { + source: "iana" + }, + "application/wasm": { + source: "iana", + compressible: true, + extensions: ["wasm"] + }, + "application/watcherinfo+xml": { + source: "iana", + compressible: true, + extensions: ["wif"] + }, + "application/webpush-options+json": { + source: "iana", + compressible: true + }, + "application/whoispp-query": { + source: "iana" + }, + "application/whoispp-response": { + source: "iana" + }, + "application/widget": { + source: "iana", + extensions: ["wgt"] + }, + "application/winhlp": { + source: "apache", + extensions: ["hlp"] + }, + "application/wita": { + source: "iana" + }, + "application/wordperfect5.1": { + source: "iana" + }, + "application/wsdl+xml": { + source: "iana", + compressible: true, + extensions: ["wsdl"] + }, + "application/wspolicy+xml": { + source: "iana", + compressible: true, + extensions: ["wspolicy"] + }, + "application/x-7z-compressed": { + source: "apache", + compressible: false, + extensions: ["7z"] + }, + "application/x-abiword": { + source: "apache", + extensions: ["abw"] + }, + "application/x-ace-compressed": { + source: "apache", + extensions: ["ace"] + }, + "application/x-amf": { + source: "apache" + }, + "application/x-apple-diskimage": { + source: "apache", + extensions: ["dmg"] + }, + "application/x-arj": { + compressible: false, + extensions: ["arj"] + }, + "application/x-authorware-bin": { + source: "apache", + extensions: ["aab", "x32", "u32", "vox"] + }, + "application/x-authorware-map": { + source: "apache", + extensions: ["aam"] + }, + "application/x-authorware-seg": { + source: "apache", + extensions: ["aas"] + }, + "application/x-bcpio": { + source: "apache", + extensions: ["bcpio"] + }, + "application/x-bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/x-bittorrent": { + source: "apache", + extensions: ["torrent"] + }, + "application/x-blorb": { + source: "apache", + extensions: ["blb", "blorb"] + }, + "application/x-bzip": { + source: "apache", + compressible: false, + extensions: ["bz"] + }, + "application/x-bzip2": { + source: "apache", + compressible: false, + extensions: ["bz2", "boz"] + }, + "application/x-cbr": { + source: "apache", + extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] + }, + "application/x-cdlink": { + source: "apache", + extensions: ["vcd"] + }, + "application/x-cfs-compressed": { + source: "apache", + extensions: ["cfs"] + }, + "application/x-chat": { + source: "apache", + extensions: ["chat"] + }, + "application/x-chess-pgn": { + source: "apache", + extensions: ["pgn"] + }, + "application/x-chrome-extension": { + extensions: ["crx"] + }, + "application/x-cocoa": { + source: "nginx", + extensions: ["cco"] + }, + "application/x-compress": { + source: "apache" + }, + "application/x-conference": { + source: "apache", + extensions: ["nsc"] + }, + "application/x-cpio": { + source: "apache", + extensions: ["cpio"] + }, + "application/x-csh": { + source: "apache", + extensions: ["csh"] + }, + "application/x-deb": { + compressible: false + }, + "application/x-debian-package": { + source: "apache", + extensions: ["deb", "udeb"] + }, + "application/x-dgc-compressed": { + source: "apache", + extensions: ["dgc"] + }, + "application/x-director": { + source: "apache", + extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] + }, + "application/x-doom": { + source: "apache", + extensions: ["wad"] + }, + "application/x-dtbncx+xml": { + source: "apache", + compressible: true, + extensions: ["ncx"] + }, + "application/x-dtbook+xml": { + source: "apache", + compressible: true, + extensions: ["dtb"] + }, + "application/x-dtbresource+xml": { + source: "apache", + compressible: true, + extensions: ["res"] + }, + "application/x-dvi": { + source: "apache", + compressible: false, + extensions: ["dvi"] + }, + "application/x-envoy": { + source: "apache", + extensions: ["evy"] + }, + "application/x-eva": { + source: "apache", + extensions: ["eva"] + }, + "application/x-font-bdf": { + source: "apache", + extensions: ["bdf"] + }, + "application/x-font-dos": { + source: "apache" + }, + "application/x-font-framemaker": { + source: "apache" + }, + "application/x-font-ghostscript": { + source: "apache", + extensions: ["gsf"] + }, + "application/x-font-libgrx": { + source: "apache" + }, + "application/x-font-linux-psf": { + source: "apache", + extensions: ["psf"] + }, + "application/x-font-pcf": { + source: "apache", + extensions: ["pcf"] + }, + "application/x-font-snf": { + source: "apache", + extensions: ["snf"] + }, + "application/x-font-speedo": { + source: "apache" + }, + "application/x-font-sunos-news": { + source: "apache" + }, + "application/x-font-type1": { + source: "apache", + extensions: ["pfa", "pfb", "pfm", "afm"] + }, + "application/x-font-vfont": { + source: "apache" + }, + "application/x-freearc": { + source: "apache", + extensions: ["arc"] + }, + "application/x-futuresplash": { + source: "apache", + extensions: ["spl"] + }, + "application/x-gca-compressed": { + source: "apache", + extensions: ["gca"] + }, + "application/x-glulx": { + source: "apache", + extensions: ["ulx"] + }, + "application/x-gnumeric": { + source: "apache", + extensions: ["gnumeric"] + }, + "application/x-gramps-xml": { + source: "apache", + extensions: ["gramps"] + }, + "application/x-gtar": { + source: "apache", + extensions: ["gtar"] + }, + "application/x-gzip": { + source: "apache" + }, + "application/x-hdf": { + source: "apache", + extensions: ["hdf"] + }, + "application/x-httpd-php": { + compressible: true, + extensions: ["php"] + }, + "application/x-install-instructions": { + source: "apache", + extensions: ["install"] + }, + "application/x-iso9660-image": { + source: "apache", + extensions: ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + extensions: ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + extensions: ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + extensions: ["pages"] + }, + "application/x-java-archive-diff": { + source: "nginx", + extensions: ["jardiff"] + }, + "application/x-java-jnlp-file": { + source: "apache", + compressible: false, + extensions: ["jnlp"] + }, + "application/x-javascript": { + compressible: true + }, + "application/x-keepass2": { + extensions: ["kdbx"] + }, + "application/x-latex": { + source: "apache", + compressible: false, + extensions: ["latex"] + }, + "application/x-lua-bytecode": { + extensions: ["luac"] + }, + "application/x-lzh-compressed": { + source: "apache", + extensions: ["lzh", "lha"] + }, + "application/x-makeself": { + source: "nginx", + extensions: ["run"] + }, + "application/x-mie": { + source: "apache", + extensions: ["mie"] + }, + "application/x-mobipocket-ebook": { + source: "apache", + extensions: ["prc", "mobi"] + }, + "application/x-mpegurl": { + compressible: false + }, + "application/x-ms-application": { + source: "apache", + extensions: ["application"] + }, + "application/x-ms-shortcut": { + source: "apache", + extensions: ["lnk"] + }, + "application/x-ms-wmd": { + source: "apache", + extensions: ["wmd"] + }, + "application/x-ms-wmz": { + source: "apache", + extensions: ["wmz"] + }, + "application/x-ms-xbap": { + source: "apache", + extensions: ["xbap"] + }, + "application/x-msaccess": { + source: "apache", + extensions: ["mdb"] + }, + "application/x-msbinder": { + source: "apache", + extensions: ["obd"] + }, + "application/x-mscardfile": { + source: "apache", + extensions: ["crd"] + }, + "application/x-msclip": { + source: "apache", + extensions: ["clp"] + }, + "application/x-msdos-program": { + extensions: ["exe"] + }, + "application/x-msdownload": { + source: "apache", + extensions: ["exe", "dll", "com", "bat", "msi"] + }, + "application/x-msmediaview": { + source: "apache", + extensions: ["mvb", "m13", "m14"] + }, + "application/x-msmetafile": { + source: "apache", + extensions: ["wmf", "wmz", "emf", "emz"] + }, + "application/x-msmoney": { + source: "apache", + extensions: ["mny"] + }, + "application/x-mspublisher": { + source: "apache", + extensions: ["pub"] + }, + "application/x-msschedule": { + source: "apache", + extensions: ["scd"] + }, + "application/x-msterminal": { + source: "apache", + extensions: ["trm"] + }, + "application/x-mswrite": { + source: "apache", + extensions: ["wri"] + }, + "application/x-netcdf": { + source: "apache", + extensions: ["nc", "cdf"] + }, + "application/x-ns-proxy-autoconfig": { + compressible: true, + extensions: ["pac"] + }, + "application/x-nzb": { + source: "apache", + extensions: ["nzb"] + }, + "application/x-perl": { + source: "nginx", + extensions: ["pl", "pm"] + }, + "application/x-pilot": { + source: "nginx", + extensions: ["prc", "pdb"] + }, + "application/x-pkcs12": { + source: "apache", + compressible: false, + extensions: ["p12", "pfx"] + }, + "application/x-pkcs7-certificates": { + source: "apache", + extensions: ["p7b", "spc"] + }, + "application/x-pkcs7-certreqresp": { + source: "apache", + extensions: ["p7r"] + }, + "application/x-pki-message": { + source: "iana" + }, + "application/x-rar-compressed": { + source: "apache", + compressible: false, + extensions: ["rar"] + }, + "application/x-redhat-package-manager": { + source: "nginx", + extensions: ["rpm"] + }, + "application/x-research-info-systems": { + source: "apache", + extensions: ["ris"] + }, + "application/x-sea": { + source: "nginx", + extensions: ["sea"] + }, + "application/x-sh": { + source: "apache", + compressible: true, + extensions: ["sh"] + }, + "application/x-shar": { + source: "apache", + extensions: ["shar"] + }, + "application/x-shockwave-flash": { + source: "apache", + compressible: false, + extensions: ["swf"] + }, + "application/x-silverlight-app": { + source: "apache", + extensions: ["xap"] + }, + "application/x-sql": { + source: "apache", + extensions: ["sql"] + }, + "application/x-stuffit": { + source: "apache", + compressible: false, + extensions: ["sit"] + }, + "application/x-stuffitx": { + source: "apache", + extensions: ["sitx"] + }, + "application/x-subrip": { + source: "apache", + extensions: ["srt"] + }, + "application/x-sv4cpio": { + source: "apache", + extensions: ["sv4cpio"] + }, + "application/x-sv4crc": { + source: "apache", + extensions: ["sv4crc"] + }, + "application/x-t3vm-image": { + source: "apache", + extensions: ["t3"] + }, + "application/x-tads": { + source: "apache", + extensions: ["gam"] + }, + "application/x-tar": { + source: "apache", + compressible: true, + extensions: ["tar"] + }, + "application/x-tcl": { + source: "apache", + extensions: ["tcl", "tk"] + }, + "application/x-tex": { + source: "apache", + extensions: ["tex"] + }, + "application/x-tex-tfm": { + source: "apache", + extensions: ["tfm"] + }, + "application/x-texinfo": { + source: "apache", + extensions: ["texinfo", "texi"] + }, + "application/x-tgif": { + source: "apache", + extensions: ["obj"] + }, + "application/x-ustar": { + source: "apache", + extensions: ["ustar"] + }, + "application/x-virtualbox-hdd": { + compressible: true, + extensions: ["hdd"] + }, + "application/x-virtualbox-ova": { + compressible: true, + extensions: ["ova"] + }, + "application/x-virtualbox-ovf": { + compressible: true, + extensions: ["ovf"] + }, + "application/x-virtualbox-vbox": { + compressible: true, + extensions: ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + compressible: false, + extensions: ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + compressible: true, + extensions: ["vdi"] + }, + "application/x-virtualbox-vhd": { + compressible: true, + extensions: ["vhd"] + }, + "application/x-virtualbox-vmdk": { + compressible: true, + extensions: ["vmdk"] + }, + "application/x-wais-source": { + source: "apache", + extensions: ["src"] + }, + "application/x-web-app-manifest+json": { + compressible: true, + extensions: ["webapp"] + }, + "application/x-www-form-urlencoded": { + source: "iana", + compressible: true + }, + "application/x-x509-ca-cert": { + source: "iana", + extensions: ["der", "crt", "pem"] + }, + "application/x-x509-ca-ra-cert": { + source: "iana" + }, + "application/x-x509-next-ca-cert": { + source: "iana" + }, + "application/x-xfig": { + source: "apache", + extensions: ["fig"] + }, + "application/x-xliff+xml": { + source: "apache", + compressible: true, + extensions: ["xlf"] + }, + "application/x-xpinstall": { + source: "apache", + compressible: false, + extensions: ["xpi"] + }, + "application/x-xz": { + source: "apache", + extensions: ["xz"] + }, + "application/x-zmachine": { + source: "apache", + extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] + }, + "application/x400-bp": { + source: "iana" + }, + "application/xacml+xml": { + source: "iana", + compressible: true + }, + "application/xaml+xml": { + source: "apache", + compressible: true, + extensions: ["xaml"] + }, + "application/xcap-att+xml": { + source: "iana", + compressible: true, + extensions: ["xav"] + }, + "application/xcap-caps+xml": { + source: "iana", + compressible: true, + extensions: ["xca"] + }, + "application/xcap-diff+xml": { + source: "iana", + compressible: true, + extensions: ["xdf"] + }, + "application/xcap-el+xml": { + source: "iana", + compressible: true, + extensions: ["xel"] + }, + "application/xcap-error+xml": { + source: "iana", + compressible: true + }, + "application/xcap-ns+xml": { + source: "iana", + compressible: true, + extensions: ["xns"] + }, + "application/xcon-conference-info+xml": { + source: "iana", + compressible: true + }, + "application/xcon-conference-info-diff+xml": { + source: "iana", + compressible: true + }, + "application/xenc+xml": { + source: "iana", + compressible: true, + extensions: ["xenc"] + }, + "application/xhtml+xml": { + source: "iana", + compressible: true, + extensions: ["xhtml", "xht"] + }, + "application/xhtml-voice+xml": { + source: "apache", + compressible: true + }, + "application/xliff+xml": { + source: "iana", + compressible: true, + extensions: ["xlf"] + }, + "application/xml": { + source: "iana", + compressible: true, + extensions: ["xml", "xsl", "xsd", "rng"] + }, + "application/xml-dtd": { + source: "iana", + compressible: true, + extensions: ["dtd"] + }, + "application/xml-external-parsed-entity": { + source: "iana" + }, + "application/xml-patch+xml": { + source: "iana", + compressible: true + }, + "application/xmpp+xml": { + source: "iana", + compressible: true + }, + "application/xop+xml": { + source: "iana", + compressible: true, + extensions: ["xop"] + }, + "application/xproc+xml": { + source: "apache", + compressible: true, + extensions: ["xpl"] + }, + "application/xslt+xml": { + source: "iana", + compressible: true, + extensions: ["xsl", "xslt"] + }, + "application/xspf+xml": { + source: "apache", + compressible: true, + extensions: ["xspf"] + }, + "application/xv+xml": { + source: "iana", + compressible: true, + extensions: ["mxml", "xhvml", "xvml", "xvm"] + }, + "application/yang": { + source: "iana", + extensions: ["yang"] + }, + "application/yang-data+json": { + source: "iana", + compressible: true + }, + "application/yang-data+xml": { + source: "iana", + compressible: true + }, + "application/yang-patch+json": { + source: "iana", + compressible: true + }, + "application/yang-patch+xml": { + source: "iana", + compressible: true + }, + "application/yin+xml": { + source: "iana", + compressible: true, + extensions: ["yin"] + }, + "application/zip": { + source: "iana", + compressible: false, + extensions: ["zip"] + }, + "application/zlib": { + source: "iana" + }, + "application/zstd": { + source: "iana" + }, + "audio/1d-interleaved-parityfec": { + source: "iana" + }, + "audio/32kadpcm": { + source: "iana" + }, + "audio/3gpp": { + source: "iana", + compressible: false, + extensions: ["3gpp"] + }, + "audio/3gpp2": { + source: "iana" + }, + "audio/aac": { + source: "iana" + }, + "audio/ac3": { + source: "iana" + }, + "audio/adpcm": { + source: "apache", + extensions: ["adp"] + }, + "audio/amr": { + source: "iana", + extensions: ["amr"] + }, + "audio/amr-wb": { + source: "iana" + }, + "audio/amr-wb+": { + source: "iana" + }, + "audio/aptx": { + source: "iana" + }, + "audio/asc": { + source: "iana" + }, + "audio/atrac-advanced-lossless": { + source: "iana" + }, + "audio/atrac-x": { + source: "iana" + }, + "audio/atrac3": { + source: "iana" + }, + "audio/basic": { + source: "iana", + compressible: false, + extensions: ["au", "snd"] + }, + "audio/bv16": { + source: "iana" + }, + "audio/bv32": { + source: "iana" + }, + "audio/clearmode": { + source: "iana" + }, + "audio/cn": { + source: "iana" + }, + "audio/dat12": { + source: "iana" + }, + "audio/dls": { + source: "iana" + }, + "audio/dsr-es201108": { + source: "iana" + }, + "audio/dsr-es202050": { + source: "iana" + }, + "audio/dsr-es202211": { + source: "iana" + }, + "audio/dsr-es202212": { + source: "iana" + }, + "audio/dv": { + source: "iana" + }, + "audio/dvi4": { + source: "iana" + }, + "audio/eac3": { + source: "iana" + }, + "audio/encaprtp": { + source: "iana" + }, + "audio/evrc": { + source: "iana" + }, + "audio/evrc-qcp": { + source: "iana" + }, + "audio/evrc0": { + source: "iana" + }, + "audio/evrc1": { + source: "iana" + }, + "audio/evrcb": { + source: "iana" + }, + "audio/evrcb0": { + source: "iana" + }, + "audio/evrcb1": { + source: "iana" + }, + "audio/evrcnw": { + source: "iana" + }, + "audio/evrcnw0": { + source: "iana" + }, + "audio/evrcnw1": { + source: "iana" + }, + "audio/evrcwb": { + source: "iana" + }, + "audio/evrcwb0": { + source: "iana" + }, + "audio/evrcwb1": { + source: "iana" + }, + "audio/evs": { + source: "iana" + }, + "audio/flexfec": { + source: "iana" + }, + "audio/fwdred": { + source: "iana" + }, + "audio/g711-0": { + source: "iana" + }, + "audio/g719": { + source: "iana" + }, + "audio/g722": { + source: "iana" + }, + "audio/g7221": { + source: "iana" + }, + "audio/g723": { + source: "iana" + }, + "audio/g726-16": { + source: "iana" + }, + "audio/g726-24": { + source: "iana" + }, + "audio/g726-32": { + source: "iana" + }, + "audio/g726-40": { + source: "iana" + }, + "audio/g728": { + source: "iana" + }, + "audio/g729": { + source: "iana" + }, + "audio/g7291": { + source: "iana" + }, + "audio/g729d": { + source: "iana" + }, + "audio/g729e": { + source: "iana" + }, + "audio/gsm": { + source: "iana" + }, + "audio/gsm-efr": { + source: "iana" + }, + "audio/gsm-hr-08": { + source: "iana" + }, + "audio/ilbc": { + source: "iana" + }, + "audio/ip-mr_v2.5": { + source: "iana" + }, + "audio/isac": { + source: "apache" + }, + "audio/l16": { + source: "iana" + }, + "audio/l20": { + source: "iana" + }, + "audio/l24": { + source: "iana", + compressible: false + }, + "audio/l8": { + source: "iana" + }, + "audio/lpc": { + source: "iana" + }, + "audio/melp": { + source: "iana" + }, + "audio/melp1200": { + source: "iana" + }, + "audio/melp2400": { + source: "iana" + }, + "audio/melp600": { + source: "iana" + }, + "audio/mhas": { + source: "iana" + }, + "audio/midi": { + source: "apache", + extensions: ["mid", "midi", "kar", "rmi"] + }, + "audio/mobile-xmf": { + source: "iana", + extensions: ["mxmf"] + }, + "audio/mp3": { + compressible: false, + extensions: ["mp3"] + }, + "audio/mp4": { + source: "iana", + compressible: false, + extensions: ["m4a", "mp4a"] + }, + "audio/mp4a-latm": { + source: "iana" + }, + "audio/mpa": { + source: "iana" + }, + "audio/mpa-robust": { + source: "iana" + }, + "audio/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] + }, + "audio/mpeg4-generic": { + source: "iana" + }, + "audio/musepack": { + source: "apache" + }, + "audio/ogg": { + source: "iana", + compressible: false, + extensions: ["oga", "ogg", "spx", "opus"] + }, + "audio/opus": { + source: "iana" + }, + "audio/parityfec": { + source: "iana" + }, + "audio/pcma": { + source: "iana" + }, + "audio/pcma-wb": { + source: "iana" + }, + "audio/pcmu": { + source: "iana" + }, + "audio/pcmu-wb": { + source: "iana" + }, + "audio/prs.sid": { + source: "iana" + }, + "audio/qcelp": { + source: "iana" + }, + "audio/raptorfec": { + source: "iana" + }, + "audio/red": { + source: "iana" + }, + "audio/rtp-enc-aescm128": { + source: "iana" + }, + "audio/rtp-midi": { + source: "iana" + }, + "audio/rtploopback": { + source: "iana" + }, + "audio/rtx": { + source: "iana" + }, + "audio/s3m": { + source: "apache", + extensions: ["s3m"] + }, + "audio/scip": { + source: "iana" + }, + "audio/silk": { + source: "apache", + extensions: ["sil"] + }, + "audio/smv": { + source: "iana" + }, + "audio/smv-qcp": { + source: "iana" + }, + "audio/smv0": { + source: "iana" + }, + "audio/sofa": { + source: "iana" + }, + "audio/sp-midi": { + source: "iana" + }, + "audio/speex": { + source: "iana" + }, + "audio/t140c": { + source: "iana" + }, + "audio/t38": { + source: "iana" + }, + "audio/telephone-event": { + source: "iana" + }, + "audio/tetra_acelp": { + source: "iana" + }, + "audio/tetra_acelp_bb": { + source: "iana" + }, + "audio/tone": { + source: "iana" + }, + "audio/tsvcis": { + source: "iana" + }, + "audio/uemclip": { + source: "iana" + }, + "audio/ulpfec": { + source: "iana" + }, + "audio/usac": { + source: "iana" + }, + "audio/vdvi": { + source: "iana" + }, + "audio/vmr-wb": { + source: "iana" + }, + "audio/vnd.3gpp.iufp": { + source: "iana" + }, + "audio/vnd.4sb": { + source: "iana" + }, + "audio/vnd.audiokoz": { + source: "iana" + }, + "audio/vnd.celp": { + source: "iana" + }, + "audio/vnd.cisco.nse": { + source: "iana" + }, + "audio/vnd.cmles.radio-events": { + source: "iana" + }, + "audio/vnd.cns.anp1": { + source: "iana" + }, + "audio/vnd.cns.inf1": { + source: "iana" + }, + "audio/vnd.dece.audio": { + source: "iana", + extensions: ["uva", "uvva"] + }, + "audio/vnd.digital-winds": { + source: "iana", + extensions: ["eol"] + }, + "audio/vnd.dlna.adts": { + source: "iana" + }, + "audio/vnd.dolby.heaac.1": { + source: "iana" + }, + "audio/vnd.dolby.heaac.2": { + source: "iana" + }, + "audio/vnd.dolby.mlp": { + source: "iana" + }, + "audio/vnd.dolby.mps": { + source: "iana" + }, + "audio/vnd.dolby.pl2": { + source: "iana" + }, + "audio/vnd.dolby.pl2x": { + source: "iana" + }, + "audio/vnd.dolby.pl2z": { + source: "iana" + }, + "audio/vnd.dolby.pulse.1": { + source: "iana" + }, + "audio/vnd.dra": { + source: "iana", + extensions: ["dra"] + }, + "audio/vnd.dts": { + source: "iana", + extensions: ["dts"] + }, + "audio/vnd.dts.hd": { + source: "iana", + extensions: ["dtshd"] + }, + "audio/vnd.dts.uhd": { + source: "iana" + }, + "audio/vnd.dvb.file": { + source: "iana" + }, + "audio/vnd.everad.plj": { + source: "iana" + }, + "audio/vnd.hns.audio": { + source: "iana" + }, + "audio/vnd.lucent.voice": { + source: "iana", + extensions: ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + source: "iana", + extensions: ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + source: "iana" + }, + "audio/vnd.nortel.vbk": { + source: "iana" + }, + "audio/vnd.nuera.ecelp4800": { + source: "iana", + extensions: ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + source: "iana", + extensions: ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + source: "iana", + extensions: ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + source: "iana" + }, + "audio/vnd.presonus.multitrack": { + source: "iana" + }, + "audio/vnd.qcelp": { + source: "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + source: "iana" + }, + "audio/vnd.rip": { + source: "iana", + extensions: ["rip"] + }, + "audio/vnd.rn-realaudio": { + compressible: false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + source: "iana" + }, + "audio/vnd.vmx.cvsd": { + source: "iana" + }, + "audio/vnd.wave": { + compressible: false + }, + "audio/vorbis": { + source: "iana", + compressible: false + }, + "audio/vorbis-config": { + source: "iana" + }, + "audio/wav": { + compressible: false, + extensions: ["wav"] + }, + "audio/wave": { + compressible: false, + extensions: ["wav"] + }, + "audio/webm": { + source: "apache", + compressible: false, + extensions: ["weba"] + }, + "audio/x-aac": { + source: "apache", + compressible: false, + extensions: ["aac"] + }, + "audio/x-aiff": { + source: "apache", + extensions: ["aif", "aiff", "aifc"] + }, + "audio/x-caf": { + source: "apache", + compressible: false, + extensions: ["caf"] + }, + "audio/x-flac": { + source: "apache", + extensions: ["flac"] + }, + "audio/x-m4a": { + source: "nginx", + extensions: ["m4a"] + }, + "audio/x-matroska": { + source: "apache", + extensions: ["mka"] + }, + "audio/x-mpegurl": { + source: "apache", + extensions: ["m3u"] + }, + "audio/x-ms-wax": { + source: "apache", + extensions: ["wax"] + }, + "audio/x-ms-wma": { + source: "apache", + extensions: ["wma"] + }, + "audio/x-pn-realaudio": { + source: "apache", + extensions: ["ram", "ra"] + }, + "audio/x-pn-realaudio-plugin": { + source: "apache", + extensions: ["rmp"] + }, + "audio/x-realaudio": { + source: "nginx", + extensions: ["ra"] + }, + "audio/x-tta": { + source: "apache" + }, + "audio/x-wav": { + source: "apache", + extensions: ["wav"] + }, + "audio/xm": { + source: "apache", + extensions: ["xm"] + }, + "chemical/x-cdx": { + source: "apache", + extensions: ["cdx"] + }, + "chemical/x-cif": { + source: "apache", + extensions: ["cif"] + }, + "chemical/x-cmdf": { + source: "apache", + extensions: ["cmdf"] + }, + "chemical/x-cml": { + source: "apache", + extensions: ["cml"] + }, + "chemical/x-csml": { + source: "apache", + extensions: ["csml"] + }, + "chemical/x-pdb": { + source: "apache" + }, + "chemical/x-xyz": { + source: "apache", + extensions: ["xyz"] + }, + "font/collection": { + source: "iana", + extensions: ["ttc"] + }, + "font/otf": { + source: "iana", + compressible: true, + extensions: ["otf"] + }, + "font/sfnt": { + source: "iana" + }, + "font/ttf": { + source: "iana", + compressible: true, + extensions: ["ttf"] + }, + "font/woff": { + source: "iana", + extensions: ["woff"] + }, + "font/woff2": { + source: "iana", + extensions: ["woff2"] + }, + "image/aces": { + source: "iana", + extensions: ["exr"] + }, + "image/apng": { + compressible: false, + extensions: ["apng"] + }, + "image/avci": { + source: "iana", + extensions: ["avci"] + }, + "image/avcs": { + source: "iana", + extensions: ["avcs"] + }, + "image/avif": { + source: "iana", + compressible: false, + extensions: ["avif"] + }, + "image/bmp": { + source: "iana", + compressible: true, + extensions: ["bmp"] + }, + "image/cgm": { + source: "iana", + extensions: ["cgm"] + }, + "image/dicom-rle": { + source: "iana", + extensions: ["drle"] + }, + "image/emf": { + source: "iana", + extensions: ["emf"] + }, + "image/fits": { + source: "iana", + extensions: ["fits"] + }, + "image/g3fax": { + source: "iana", + extensions: ["g3"] + }, + "image/gif": { + source: "iana", + compressible: false, + extensions: ["gif"] + }, + "image/heic": { + source: "iana", + extensions: ["heic"] + }, + "image/heic-sequence": { + source: "iana", + extensions: ["heics"] + }, + "image/heif": { + source: "iana", + extensions: ["heif"] + }, + "image/heif-sequence": { + source: "iana", + extensions: ["heifs"] + }, + "image/hej2k": { + source: "iana", + extensions: ["hej2"] + }, + "image/hsj2": { + source: "iana", + extensions: ["hsj2"] + }, + "image/ief": { + source: "iana", + extensions: ["ief"] + }, + "image/jls": { + source: "iana", + extensions: ["jls"] + }, + "image/jp2": { + source: "iana", + compressible: false, + extensions: ["jp2", "jpg2"] + }, + "image/jpeg": { + source: "iana", + compressible: false, + extensions: ["jpeg", "jpg", "jpe"] + }, + "image/jph": { + source: "iana", + extensions: ["jph"] + }, + "image/jphc": { + source: "iana", + extensions: ["jhc"] + }, + "image/jpm": { + source: "iana", + compressible: false, + extensions: ["jpm"] + }, + "image/jpx": { + source: "iana", + compressible: false, + extensions: ["jpx", "jpf"] + }, + "image/jxr": { + source: "iana", + extensions: ["jxr"] + }, + "image/jxra": { + source: "iana", + extensions: ["jxra"] + }, + "image/jxrs": { + source: "iana", + extensions: ["jxrs"] + }, + "image/jxs": { + source: "iana", + extensions: ["jxs"] + }, + "image/jxsc": { + source: "iana", + extensions: ["jxsc"] + }, + "image/jxsi": { + source: "iana", + extensions: ["jxsi"] + }, + "image/jxss": { + source: "iana", + extensions: ["jxss"] + }, + "image/ktx": { + source: "iana", + extensions: ["ktx"] + }, + "image/ktx2": { + source: "iana", + extensions: ["ktx2"] + }, + "image/naplps": { + source: "iana" + }, + "image/pjpeg": { + compressible: false + }, + "image/png": { + source: "iana", + compressible: false, + extensions: ["png"] + }, + "image/prs.btif": { + source: "iana", + extensions: ["btif"] + }, + "image/prs.pti": { + source: "iana", + extensions: ["pti"] + }, + "image/pwg-raster": { + source: "iana" + }, + "image/sgi": { + source: "apache", + extensions: ["sgi"] + }, + "image/svg+xml": { + source: "iana", + compressible: true, + extensions: ["svg", "svgz"] + }, + "image/t38": { + source: "iana", + extensions: ["t38"] + }, + "image/tiff": { + source: "iana", + compressible: false, + extensions: ["tif", "tiff"] + }, + "image/tiff-fx": { + source: "iana", + extensions: ["tfx"] + }, + "image/vnd.adobe.photoshop": { + source: "iana", + compressible: true, + extensions: ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + source: "iana", + extensions: ["azv"] + }, + "image/vnd.cns.inf2": { + source: "iana" + }, + "image/vnd.dece.graphic": { + source: "iana", + extensions: ["uvi", "uvvi", "uvg", "uvvg"] + }, + "image/vnd.djvu": { + source: "iana", + extensions: ["djvu", "djv"] + }, + "image/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "image/vnd.dwg": { + source: "iana", + extensions: ["dwg"] + }, + "image/vnd.dxf": { + source: "iana", + extensions: ["dxf"] + }, + "image/vnd.fastbidsheet": { + source: "iana", + extensions: ["fbs"] + }, + "image/vnd.fpx": { + source: "iana", + extensions: ["fpx"] + }, + "image/vnd.fst": { + source: "iana", + extensions: ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + source: "iana", + extensions: ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + source: "iana", + extensions: ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + source: "iana" + }, + "image/vnd.microsoft.icon": { + source: "iana", + compressible: true, + extensions: ["ico"] + }, + "image/vnd.mix": { + source: "iana" + }, + "image/vnd.mozilla.apng": { + source: "iana" + }, + "image/vnd.ms-dds": { + compressible: true, + extensions: ["dds"] + }, + "image/vnd.ms-modi": { + source: "iana", + extensions: ["mdi"] + }, + "image/vnd.ms-photo": { + source: "apache", + extensions: ["wdp"] + }, + "image/vnd.net-fpx": { + source: "iana", + extensions: ["npx"] + }, + "image/vnd.pco.b16": { + source: "iana", + extensions: ["b16"] + }, + "image/vnd.radiance": { + source: "iana" + }, + "image/vnd.sealed.png": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + source: "iana" + }, + "image/vnd.svf": { + source: "iana" + }, + "image/vnd.tencent.tap": { + source: "iana", + extensions: ["tap"] + }, + "image/vnd.valve.source.texture": { + source: "iana", + extensions: ["vtf"] + }, + "image/vnd.wap.wbmp": { + source: "iana", + extensions: ["wbmp"] + }, + "image/vnd.xiff": { + source: "iana", + extensions: ["xif"] + }, + "image/vnd.zbrush.pcx": { + source: "iana", + extensions: ["pcx"] + }, + "image/webp": { + source: "apache", + extensions: ["webp"] + }, + "image/wmf": { + source: "iana", + extensions: ["wmf"] + }, + "image/x-3ds": { + source: "apache", + extensions: ["3ds"] + }, + "image/x-cmu-raster": { + source: "apache", + extensions: ["ras"] + }, + "image/x-cmx": { + source: "apache", + extensions: ["cmx"] + }, + "image/x-freehand": { + source: "apache", + extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] + }, + "image/x-icon": { + source: "apache", + compressible: true, + extensions: ["ico"] + }, + "image/x-jng": { + source: "nginx", + extensions: ["jng"] + }, + "image/x-mrsid-image": { + source: "apache", + extensions: ["sid"] + }, + "image/x-ms-bmp": { + source: "nginx", + compressible: true, + extensions: ["bmp"] + }, + "image/x-pcx": { + source: "apache", + extensions: ["pcx"] + }, + "image/x-pict": { + source: "apache", + extensions: ["pic", "pct"] + }, + "image/x-portable-anymap": { + source: "apache", + extensions: ["pnm"] + }, + "image/x-portable-bitmap": { + source: "apache", + extensions: ["pbm"] + }, + "image/x-portable-graymap": { + source: "apache", + extensions: ["pgm"] + }, + "image/x-portable-pixmap": { + source: "apache", + extensions: ["ppm"] + }, + "image/x-rgb": { + source: "apache", + extensions: ["rgb"] + }, + "image/x-tga": { + source: "apache", + extensions: ["tga"] + }, + "image/x-xbitmap": { + source: "apache", + extensions: ["xbm"] + }, + "image/x-xcf": { + compressible: false + }, + "image/x-xpixmap": { + source: "apache", + extensions: ["xpm"] + }, + "image/x-xwindowdump": { + source: "apache", + extensions: ["xwd"] + }, + "message/cpim": { + source: "iana" + }, + "message/delivery-status": { + source: "iana" + }, + "message/disposition-notification": { + source: "iana", + extensions: [ + "disposition-notification" + ] + }, + "message/external-body": { + source: "iana" + }, + "message/feedback-report": { + source: "iana" + }, + "message/global": { + source: "iana", + extensions: ["u8msg"] + }, + "message/global-delivery-status": { + source: "iana", + extensions: ["u8dsn"] + }, + "message/global-disposition-notification": { + source: "iana", + extensions: ["u8mdn"] + }, + "message/global-headers": { + source: "iana", + extensions: ["u8hdr"] + }, + "message/http": { + source: "iana", + compressible: false + }, + "message/imdn+xml": { + source: "iana", + compressible: true + }, + "message/news": { + source: "iana" + }, + "message/partial": { + source: "iana", + compressible: false + }, + "message/rfc822": { + source: "iana", + compressible: true, + extensions: ["eml", "mime"] + }, + "message/s-http": { + source: "iana" + }, + "message/sip": { + source: "iana" + }, + "message/sipfrag": { + source: "iana" + }, + "message/tracking-status": { + source: "iana" + }, + "message/vnd.si.simp": { + source: "iana" + }, + "message/vnd.wfa.wsc": { + source: "iana", + extensions: ["wsc"] + }, + "model/3mf": { + source: "iana", + extensions: ["3mf"] + }, + "model/e57": { + source: "iana" + }, + "model/gltf+json": { + source: "iana", + compressible: true, + extensions: ["gltf"] + }, + "model/gltf-binary": { + source: "iana", + compressible: true, + extensions: ["glb"] + }, + "model/iges": { + source: "iana", + compressible: false, + extensions: ["igs", "iges"] + }, + "model/mesh": { + source: "iana", + compressible: false, + extensions: ["msh", "mesh", "silo"] + }, + "model/mtl": { + source: "iana", + extensions: ["mtl"] + }, + "model/obj": { + source: "iana", + extensions: ["obj"] + }, + "model/step": { + source: "iana" + }, + "model/step+xml": { + source: "iana", + compressible: true, + extensions: ["stpx"] + }, + "model/step+zip": { + source: "iana", + compressible: false, + extensions: ["stpz"] + }, + "model/step-xml+zip": { + source: "iana", + compressible: false, + extensions: ["stpxz"] + }, + "model/stl": { + source: "iana", + extensions: ["stl"] + }, + "model/vnd.collada+xml": { + source: "iana", + compressible: true, + extensions: ["dae"] + }, + "model/vnd.dwf": { + source: "iana", + extensions: ["dwf"] + }, + "model/vnd.flatland.3dml": { + source: "iana" + }, + "model/vnd.gdl": { + source: "iana", + extensions: ["gdl"] + }, + "model/vnd.gs-gdl": { + source: "apache" + }, + "model/vnd.gs.gdl": { + source: "iana" + }, + "model/vnd.gtw": { + source: "iana", + extensions: ["gtw"] + }, + "model/vnd.moml+xml": { + source: "iana", + compressible: true + }, + "model/vnd.mts": { + source: "iana", + extensions: ["mts"] + }, + "model/vnd.opengex": { + source: "iana", + extensions: ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + source: "iana", + extensions: ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + source: "iana", + extensions: ["x_t"] + }, + "model/vnd.pytha.pyox": { + source: "iana" + }, + "model/vnd.rosette.annotated-data-model": { + source: "iana" + }, + "model/vnd.sap.vds": { + source: "iana", + extensions: ["vds"] + }, + "model/vnd.usdz+zip": { + source: "iana", + compressible: false, + extensions: ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + source: "iana", + extensions: ["bsp"] + }, + "model/vnd.vtu": { + source: "iana", + extensions: ["vtu"] + }, + "model/vrml": { + source: "iana", + compressible: false, + extensions: ["wrl", "vrml"] + }, + "model/x3d+binary": { + source: "apache", + compressible: false, + extensions: ["x3db", "x3dbz"] + }, + "model/x3d+fastinfoset": { + source: "iana", + extensions: ["x3db"] + }, + "model/x3d+vrml": { + source: "apache", + compressible: false, + extensions: ["x3dv", "x3dvz"] + }, + "model/x3d+xml": { + source: "iana", + compressible: true, + extensions: ["x3d", "x3dz"] + }, + "model/x3d-vrml": { + source: "iana", + extensions: ["x3dv"] + }, + "multipart/alternative": { + source: "iana", + compressible: false + }, + "multipart/appledouble": { + source: "iana" + }, + "multipart/byteranges": { + source: "iana" + }, + "multipart/digest": { + source: "iana" + }, + "multipart/encrypted": { + source: "iana", + compressible: false + }, + "multipart/form-data": { + source: "iana", + compressible: false + }, + "multipart/header-set": { + source: "iana" + }, + "multipart/mixed": { + source: "iana" + }, + "multipart/multilingual": { + source: "iana" + }, + "multipart/parallel": { + source: "iana" + }, + "multipart/related": { + source: "iana", + compressible: false + }, + "multipart/report": { + source: "iana" + }, + "multipart/signed": { + source: "iana", + compressible: false + }, + "multipart/vnd.bint.med-plus": { + source: "iana" + }, + "multipart/voice-message": { + source: "iana" + }, + "multipart/x-mixed-replace": { + source: "iana" + }, + "text/1d-interleaved-parityfec": { + source: "iana" + }, + "text/cache-manifest": { + source: "iana", + compressible: true, + extensions: ["appcache", "manifest"] + }, + "text/calendar": { + source: "iana", + extensions: ["ics", "ifb"] + }, + "text/calender": { + compressible: true + }, + "text/cmd": { + compressible: true + }, + "text/coffeescript": { + extensions: ["coffee", "litcoffee"] + }, + "text/cql": { + source: "iana" + }, + "text/cql-expression": { + source: "iana" + }, + "text/cql-identifier": { + source: "iana" + }, + "text/css": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["css"] + }, + "text/csv": { + source: "iana", + compressible: true, + extensions: ["csv"] + }, + "text/csv-schema": { + source: "iana" + }, + "text/directory": { + source: "iana" + }, + "text/dns": { + source: "iana" + }, + "text/ecmascript": { + source: "iana" + }, + "text/encaprtp": { + source: "iana" + }, + "text/enriched": { + source: "iana" + }, + "text/fhirpath": { + source: "iana" + }, + "text/flexfec": { + source: "iana" + }, + "text/fwdred": { + source: "iana" + }, + "text/gff3": { + source: "iana" + }, + "text/grammar-ref-list": { + source: "iana" + }, + "text/html": { + source: "iana", + compressible: true, + extensions: ["html", "htm", "shtml"] + }, + "text/jade": { + extensions: ["jade"] + }, + "text/javascript": { + source: "iana", + compressible: true + }, + "text/jcr-cnd": { + source: "iana" + }, + "text/jsx": { + compressible: true, + extensions: ["jsx"] + }, + "text/less": { + compressible: true, + extensions: ["less"] + }, + "text/markdown": { + source: "iana", + compressible: true, + extensions: ["markdown", "md"] + }, + "text/mathml": { + source: "nginx", + extensions: ["mml"] + }, + "text/mdx": { + compressible: true, + extensions: ["mdx"] + }, + "text/mizar": { + source: "iana" + }, + "text/n3": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["n3"] + }, + "text/parameters": { + source: "iana", + charset: "UTF-8" + }, + "text/parityfec": { + source: "iana" + }, + "text/plain": { + source: "iana", + compressible: true, + extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] + }, + "text/provenance-notation": { + source: "iana", + charset: "UTF-8" + }, + "text/prs.fallenstein.rst": { + source: "iana" + }, + "text/prs.lines.tag": { + source: "iana", + extensions: ["dsc"] + }, + "text/prs.prop.logic": { + source: "iana" + }, + "text/raptorfec": { + source: "iana" + }, + "text/red": { + source: "iana" + }, + "text/rfc822-headers": { + source: "iana" + }, + "text/richtext": { + source: "iana", + compressible: true, + extensions: ["rtx"] + }, + "text/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "text/rtp-enc-aescm128": { + source: "iana" + }, + "text/rtploopback": { + source: "iana" + }, + "text/rtx": { + source: "iana" + }, + "text/sgml": { + source: "iana", + extensions: ["sgml", "sgm"] + }, + "text/shaclc": { + source: "iana" + }, + "text/shex": { + source: "iana", + extensions: ["shex"] + }, + "text/slim": { + extensions: ["slim", "slm"] + }, + "text/spdx": { + source: "iana", + extensions: ["spdx"] + }, + "text/strings": { + source: "iana" + }, + "text/stylus": { + extensions: ["stylus", "styl"] + }, + "text/t140": { + source: "iana" + }, + "text/tab-separated-values": { + source: "iana", + compressible: true, + extensions: ["tsv"] + }, + "text/troff": { + source: "iana", + extensions: ["t", "tr", "roff", "man", "me", "ms"] + }, + "text/turtle": { + source: "iana", + charset: "UTF-8", + extensions: ["ttl"] + }, + "text/ulpfec": { + source: "iana" + }, + "text/uri-list": { + source: "iana", + compressible: true, + extensions: ["uri", "uris", "urls"] + }, + "text/vcard": { + source: "iana", + compressible: true, + extensions: ["vcard"] + }, + "text/vnd.a": { + source: "iana" + }, + "text/vnd.abc": { + source: "iana" + }, + "text/vnd.ascii-art": { + source: "iana" + }, + "text/vnd.curl": { + source: "iana", + extensions: ["curl"] + }, + "text/vnd.curl.dcurl": { + source: "apache", + extensions: ["dcurl"] + }, + "text/vnd.curl.mcurl": { + source: "apache", + extensions: ["mcurl"] + }, + "text/vnd.curl.scurl": { + source: "apache", + extensions: ["scurl"] + }, + "text/vnd.debian.copyright": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.dmclientscript": { + source: "iana" + }, + "text/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + source: "iana", + extensions: ["ged"] + }, + "text/vnd.ficlab.flt": { + source: "iana" + }, + "text/vnd.fly": { + source: "iana", + extensions: ["fly"] + }, + "text/vnd.fmi.flexstor": { + source: "iana", + extensions: ["flx"] + }, + "text/vnd.gml": { + source: "iana" + }, + "text/vnd.graphviz": { + source: "iana", + extensions: ["gv"] + }, + "text/vnd.hans": { + source: "iana" + }, + "text/vnd.hgl": { + source: "iana" + }, + "text/vnd.in3d.3dml": { + source: "iana", + extensions: ["3dml"] + }, + "text/vnd.in3d.spot": { + source: "iana", + extensions: ["spot"] + }, + "text/vnd.iptc.newsml": { + source: "iana" + }, + "text/vnd.iptc.nitf": { + source: "iana" + }, + "text/vnd.latex-z": { + source: "iana" + }, + "text/vnd.motorola.reflex": { + source: "iana" + }, + "text/vnd.ms-mediapackage": { + source: "iana" + }, + "text/vnd.net2phone.commcenter.command": { + source: "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + source: "iana" + }, + "text/vnd.senx.warpscript": { + source: "iana" + }, + "text/vnd.si.uricatalogue": { + source: "iana" + }, + "text/vnd.sosi": { + source: "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + source: "iana", + charset: "UTF-8", + extensions: ["jad"] + }, + "text/vnd.trolltech.linguist": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.wap.si": { + source: "iana" + }, + "text/vnd.wap.sl": { + source: "iana" + }, + "text/vnd.wap.wml": { + source: "iana", + extensions: ["wml"] + }, + "text/vnd.wap.wmlscript": { + source: "iana", + extensions: ["wmls"] + }, + "text/vtt": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["vtt"] + }, + "text/x-asm": { + source: "apache", + extensions: ["s", "asm"] + }, + "text/x-c": { + source: "apache", + extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] + }, + "text/x-component": { + source: "nginx", + extensions: ["htc"] + }, + "text/x-fortran": { + source: "apache", + extensions: ["f", "for", "f77", "f90"] + }, + "text/x-gwt-rpc": { + compressible: true + }, + "text/x-handlebars-template": { + extensions: ["hbs"] + }, + "text/x-java-source": { + source: "apache", + extensions: ["java"] + }, + "text/x-jquery-tmpl": { + compressible: true + }, + "text/x-lua": { + extensions: ["lua"] + }, + "text/x-markdown": { + compressible: true, + extensions: ["mkd"] + }, + "text/x-nfo": { + source: "apache", + extensions: ["nfo"] + }, + "text/x-opml": { + source: "apache", + extensions: ["opml"] + }, + "text/x-org": { + compressible: true, + extensions: ["org"] + }, + "text/x-pascal": { + source: "apache", + extensions: ["p", "pas"] + }, + "text/x-processing": { + compressible: true, + extensions: ["pde"] + }, + "text/x-sass": { + extensions: ["sass"] + }, + "text/x-scss": { + extensions: ["scss"] + }, + "text/x-setext": { + source: "apache", + extensions: ["etx"] + }, + "text/x-sfv": { + source: "apache", + extensions: ["sfv"] + }, + "text/x-suse-ymp": { + compressible: true, + extensions: ["ymp"] + }, + "text/x-uuencode": { + source: "apache", + extensions: ["uu"] + }, + "text/x-vcalendar": { + source: "apache", + extensions: ["vcs"] + }, + "text/x-vcard": { + source: "apache", + extensions: ["vcf"] + }, + "text/xml": { + source: "iana", + compressible: true, + extensions: ["xml"] + }, + "text/xml-external-parsed-entity": { + source: "iana" + }, + "text/yaml": { + compressible: true, + extensions: ["yaml", "yml"] + }, + "video/1d-interleaved-parityfec": { + source: "iana" + }, + "video/3gpp": { + source: "iana", + extensions: ["3gp", "3gpp"] + }, + "video/3gpp-tt": { + source: "iana" + }, + "video/3gpp2": { + source: "iana", + extensions: ["3g2"] + }, + "video/av1": { + source: "iana" + }, + "video/bmpeg": { + source: "iana" + }, + "video/bt656": { + source: "iana" + }, + "video/celb": { + source: "iana" + }, + "video/dv": { + source: "iana" + }, + "video/encaprtp": { + source: "iana" + }, + "video/ffv1": { + source: "iana" + }, + "video/flexfec": { + source: "iana" + }, + "video/h261": { + source: "iana", + extensions: ["h261"] + }, + "video/h263": { + source: "iana", + extensions: ["h263"] + }, + "video/h263-1998": { + source: "iana" + }, + "video/h263-2000": { + source: "iana" + }, + "video/h264": { + source: "iana", + extensions: ["h264"] + }, + "video/h264-rcdo": { + source: "iana" + }, + "video/h264-svc": { + source: "iana" + }, + "video/h265": { + source: "iana" + }, + "video/iso.segment": { + source: "iana", + extensions: ["m4s"] + }, + "video/jpeg": { + source: "iana", + extensions: ["jpgv"] + }, + "video/jpeg2000": { + source: "iana" + }, + "video/jpm": { + source: "apache", + extensions: ["jpm", "jpgm"] + }, + "video/jxsv": { + source: "iana" + }, + "video/mj2": { + source: "iana", + extensions: ["mj2", "mjp2"] + }, + "video/mp1s": { + source: "iana" + }, + "video/mp2p": { + source: "iana" + }, + "video/mp2t": { + source: "iana", + extensions: ["ts"] + }, + "video/mp4": { + source: "iana", + compressible: false, + extensions: ["mp4", "mp4v", "mpg4"] + }, + "video/mp4v-es": { + source: "iana" + }, + "video/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] + }, + "video/mpeg4-generic": { + source: "iana" + }, + "video/mpv": { + source: "iana" + }, + "video/nv": { + source: "iana" + }, + "video/ogg": { + source: "iana", + compressible: false, + extensions: ["ogv"] + }, + "video/parityfec": { + source: "iana" + }, + "video/pointer": { + source: "iana" + }, + "video/quicktime": { + source: "iana", + compressible: false, + extensions: ["qt", "mov"] + }, + "video/raptorfec": { + source: "iana" + }, + "video/raw": { + source: "iana" + }, + "video/rtp-enc-aescm128": { + source: "iana" + }, + "video/rtploopback": { + source: "iana" + }, + "video/rtx": { + source: "iana" + }, + "video/scip": { + source: "iana" + }, + "video/smpte291": { + source: "iana" + }, + "video/smpte292m": { + source: "iana" + }, + "video/ulpfec": { + source: "iana" + }, + "video/vc1": { + source: "iana" + }, + "video/vc2": { + source: "iana" + }, + "video/vnd.cctv": { + source: "iana" + }, + "video/vnd.dece.hd": { + source: "iana", + extensions: ["uvh", "uvvh"] + }, + "video/vnd.dece.mobile": { + source: "iana", + extensions: ["uvm", "uvvm"] + }, + "video/vnd.dece.mp4": { + source: "iana" + }, + "video/vnd.dece.pd": { + source: "iana", + extensions: ["uvp", "uvvp"] + }, + "video/vnd.dece.sd": { + source: "iana", + extensions: ["uvs", "uvvs"] + }, + "video/vnd.dece.video": { + source: "iana", + extensions: ["uvv", "uvvv"] + }, + "video/vnd.directv.mpeg": { + source: "iana" + }, + "video/vnd.directv.mpeg-tts": { + source: "iana" + }, + "video/vnd.dlna.mpeg-tts": { + source: "iana" + }, + "video/vnd.dvb.file": { + source: "iana", + extensions: ["dvb"] + }, + "video/vnd.fvt": { + source: "iana", + extensions: ["fvt"] + }, + "video/vnd.hns.video": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.ttsavc": { + source: "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + source: "iana" + }, + "video/vnd.motorola.video": { + source: "iana" + }, + "video/vnd.motorola.videop": { + source: "iana" + }, + "video/vnd.mpegurl": { + source: "iana", + extensions: ["mxu", "m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + source: "iana", + extensions: ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + source: "iana" + }, + "video/vnd.nokia.mp4vr": { + source: "iana" + }, + "video/vnd.nokia.videovoip": { + source: "iana" + }, + "video/vnd.objectvideo": { + source: "iana" + }, + "video/vnd.radgamettools.bink": { + source: "iana" + }, + "video/vnd.radgamettools.smacker": { + source: "iana" + }, + "video/vnd.sealed.mpeg1": { + source: "iana" + }, + "video/vnd.sealed.mpeg4": { + source: "iana" + }, + "video/vnd.sealed.swf": { + source: "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + source: "iana" + }, + "video/vnd.uvvu.mp4": { + source: "iana", + extensions: ["uvu", "uvvu"] + }, + "video/vnd.vivo": { + source: "iana", + extensions: ["viv"] + }, + "video/vnd.youtube.yt": { + source: "iana" + }, + "video/vp8": { + source: "iana" + }, + "video/vp9": { + source: "iana" + }, + "video/webm": { + source: "apache", + compressible: false, + extensions: ["webm"] + }, + "video/x-f4v": { + source: "apache", + extensions: ["f4v"] + }, + "video/x-fli": { + source: "apache", + extensions: ["fli"] + }, + "video/x-flv": { + source: "apache", + compressible: false, + extensions: ["flv"] + }, + "video/x-m4v": { + source: "apache", + extensions: ["m4v"] + }, + "video/x-matroska": { + source: "apache", + compressible: false, + extensions: ["mkv", "mk3d", "mks"] + }, + "video/x-mng": { + source: "apache", + extensions: ["mng"] + }, + "video/x-ms-asf": { + source: "apache", + extensions: ["asf", "asx"] + }, + "video/x-ms-vob": { + source: "apache", + extensions: ["vob"] + }, + "video/x-ms-wm": { + source: "apache", + extensions: ["wm"] + }, + "video/x-ms-wmv": { + source: "apache", + compressible: false, + extensions: ["wmv"] + }, + "video/x-ms-wmx": { + source: "apache", + extensions: ["wmx"] + }, + "video/x-ms-wvx": { + source: "apache", + extensions: ["wvx"] + }, + "video/x-msvideo": { + source: "apache", + extensions: ["avi"] + }, + "video/x-sgi-movie": { + source: "apache", + extensions: ["movie"] + }, + "video/x-smv": { + source: "apache", + extensions: ["smv"] + }, + "x-conference/x-cooltalk": { + source: "apache", + extensions: ["ice"] + }, + "x-shader/x-fragment": { + compressible: true + }, + "x-shader/x-vertex": { + compressible: true + } + }; + } +}); + +// ../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js +var require_mime_db2 = __commonJS({ + "../../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js"(exports, module) { + module.exports = require_db2(); + } +}); + +// ../../node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js +var require_mime_types2 = __commonJS({ + "../../node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js"(exports) { + "use strict"; + var db = require_mime_db2(); + var extname = __require("path").extname; + var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; + var TEXT_TYPE_REGEXP = /^text\//i; + exports.charset = charset; + exports.charsets = { lookup: charset }; + exports.contentType = contentType; + exports.extension = extension; + exports.extensions = /* @__PURE__ */ Object.create(null); + exports.lookup = lookup; + exports.types = /* @__PURE__ */ Object.create(null); + populateMaps(exports.extensions, exports.types); + function charset(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var mime = match && db[match[1].toLowerCase()]; + if (mime && mime.charset) { + return mime.charset; + } + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return "UTF-8"; + } + return false; + } + __name(charset, "charset"); + function contentType(str) { + if (!str || typeof str !== "string") { + return false; + } + var mime = str.indexOf("/") === -1 ? exports.lookup(str) : str; + if (!mime) { + return false; + } + if (mime.indexOf("charset") === -1) { + var charset2 = exports.charset(mime); + if (charset2) mime += "; charset=" + charset2.toLowerCase(); + } + return mime; + } + __name(contentType, "contentType"); + function extension(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var exts = match && exports.extensions[match[1].toLowerCase()]; + if (!exts || !exts.length) { + return false; + } + return exts[0]; + } + __name(extension, "extension"); + function lookup(path) { + if (!path || typeof path !== "string") { + return false; + } + var extension2 = extname("x." + path).toLowerCase().substr(1); + if (!extension2) { + return false; + } + return exports.types[extension2] || false; + } + __name(lookup, "lookup"); + function populateMaps(extensions, types) { + var preference = ["nginx", "apache", void 0, "iana"]; + Object.keys(db).forEach(/* @__PURE__ */ __name(function forEachMimeType(type) { + var mime = db[type]; + var exts = mime.extensions; + if (!exts || !exts.length) { + return; + } + extensions[type] = exts; + for (var i = 0; i < exts.length; i++) { + var extension2 = exts[i]; + if (types[extension2]) { + var from2 = preference.indexOf(db[types[extension2]].source); + var to = preference.indexOf(mime.source); + if (types[extension2] !== "application/octet-stream" && (from2 > to || from2 === to && types[extension2].substr(0, 12) === "application/")) { + continue; + } + } + types[extension2] = type; + } + }, "forEachMimeType")); + } + __name(populateMaps, "populateMaps"); + } +}); + +// ../../node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js +var require_type_is2 = __commonJS({ + "../../node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js"(exports, module) { + "use strict"; + var typer = require_media_typer2(); + var mime = require_mime_types2(); + module.exports = typeofrequest; + module.exports.is = typeis; + module.exports.hasBody = hasbody; + module.exports.normalize = normalize; + module.exports.match = mimeMatch; + function typeis(value, types_) { + var i; + var types = types_; + var val = tryNormalizeType(value); + if (!val) { + return false; + } + if (types && !Array.isArray(types)) { + types = new Array(arguments.length - 1); + for (i = 0; i < types.length; i++) { + types[i] = arguments[i + 1]; + } + } + if (!types || !types.length) { + return val; + } + var type; + for (i = 0; i < types.length; i++) { + if (mimeMatch(normalize(type = types[i]), val)) { + return type[0] === "+" || type.indexOf("*") !== -1 ? val : type; + } + } + return false; + } + __name(typeis, "typeis"); + function hasbody(req) { + return req.headers["transfer-encoding"] !== void 0 || !isNaN(req.headers["content-length"]); + } + __name(hasbody, "hasbody"); + function typeofrequest(req, types_) { + var types = types_; + if (!hasbody(req)) { + return null; + } + if (arguments.length > 2) { + types = new Array(arguments.length - 1); + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i + 1]; + } + } + var value = req.headers["content-type"]; + return typeis(value, types); + } + __name(typeofrequest, "typeofrequest"); + function normalize(type) { + if (typeof type !== "string") { + return false; + } + switch (type) { + case "urlencoded": + return "application/x-www-form-urlencoded"; + case "multipart": + return "multipart/*"; + } + if (type[0] === "+") { + return "*/*" + type; + } + return type.indexOf("/") === -1 ? mime.lookup(type) : type; + } + __name(normalize, "normalize"); + function mimeMatch(expected, actual) { + if (expected === false) { + return false; + } + var actualParts = actual.split("/"); + var expectedParts = expected.split("/"); + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false; + } + if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) { + return false; + } + if (expectedParts[1].substr(0, 2) === "*+") { + return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length); + } + if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) { + return false; + } + return true; + } + __name(mimeMatch, "mimeMatch"); + function normalizeType(value) { + var type = typer.parse(value); + type.parameters = void 0; + return typer.format(type); + } + __name(normalizeType, "normalizeType"); + function tryNormalizeType(value) { + if (!value) { + return null; + } + try { + return normalizeType(value); + } catch (err) { + return null; + } + } + __name(tryNormalizeType, "tryNormalizeType"); + } +}); + +// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/utils.js +var require_utils4 = __commonJS({ + "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/utils.js"(exports, module) { + "use strict"; + function parseContentType(str) { + if (str.length === 0) + return; + const params = /* @__PURE__ */ Object.create(null); + let i = 0; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 47 || i === 0) + return; + break; + } + } + if (i === str.length) + return; + const type = str.slice(0, i).toLowerCase(); + const subtypeStart = ++i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (i === subtypeStart) + return; + if (parseContentTypeParams(str, i, params) === void 0) + return; + break; + } + } + if (i === subtypeStart) + return; + const subtype = str.slice(subtypeStart, i).toLowerCase(); + return { type, subtype, params }; + } + __name(parseContentType, "parseContentType"); + function parseContentTypeParams(str, i, params) { + while (i < str.length) { + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32 && code !== 9) + break; + } + if (i === str.length) + break; + if (str.charCodeAt(i++) !== 59) + return; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32 && code !== 9) + break; + } + if (i === str.length) + return; + let name; + const nameStart = i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 61) + return; + break; + } + } + if (i === str.length) + return; + name = str.slice(nameStart, i); + ++i; + if (i === str.length) + return; + let value = ""; + let valueStart; + if (str.charCodeAt(i) === 34) { + valueStart = ++i; + let escaping = false; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + if (QDTEXT[code] !== 1) + return; + } + if (i === str.length) + return; + ++i; + } else { + valueStart = i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + name = name.toLowerCase(); + if (params[name] === void 0) + params[name] = value; + } + return params; + } + __name(parseContentTypeParams, "parseContentTypeParams"); + function parseDisposition(str, defDecoder) { + if (str.length === 0) + return; + const params = /* @__PURE__ */ Object.create(null); + let i = 0; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (parseDispositionParams(str, i, params, defDecoder) === void 0) + return; + break; + } + } + const type = str.slice(0, i).toLowerCase(); + return { type, params }; + } + __name(parseDisposition, "parseDisposition"); + function parseDispositionParams(str, i, params, defDecoder) { + while (i < str.length) { + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32 && code !== 9) + break; + } + if (i === str.length) + break; + if (str.charCodeAt(i++) !== 59) + return; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32 && code !== 9) + break; + } + if (i === str.length) + return; + let name; + const nameStart = i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code === 61) + break; + return; + } + } + if (i === str.length) + return; + let value = ""; + let valueStart; + let charset; + name = str.slice(nameStart, i); + if (name.charCodeAt(name.length - 1) === 42) { + const charsetStart = ++i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (CHARSET[code] !== 1) { + if (code !== 39) + return; + break; + } + } + if (i === str.length) + return; + charset = str.slice(charsetStart, i); + ++i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 39) + break; + } + if (i === str.length) + return; + ++i; + if (i === str.length) + return; + valueStart = i; + let encode = 0; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (EXTENDED_VALUE[code] !== 1) { + if (code === 37) { + let hexUpper; + let hexLower; + if (i + 2 < str.length && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1 && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) { + const byteVal = (hexUpper << 4) + hexLower; + value += str.slice(valueStart, i); + value += String.fromCharCode(byteVal); + i += 2; + valueStart = i + 1; + if (byteVal >= 128) + encode = 2; + else if (encode === 0) + encode = 1; + continue; + } + return; + } + break; + } + } + value += str.slice(valueStart, i); + value = convertToUTF8(value, charset, encode); + if (value === void 0) + return; + } else { + ++i; + if (i === str.length) + return; + if (str.charCodeAt(i) === 34) { + valueStart = ++i; + let escaping = false; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + if (QDTEXT[code] !== 1) + return; + } + if (i === str.length) + return; + ++i; + } else { + valueStart = i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + value = defDecoder(value, 2); + if (value === void 0) + return; + } + name = name.toLowerCase(); + if (params[name] === void 0) + params[name] = value; + } + return params; + } + __name(parseDispositionParams, "parseDispositionParams"); + function getDecoder(charset) { + let lc; + while (true) { + switch (charset) { + case "utf-8": + case "utf8": + return decoders.utf8; + case "latin1": + case "ascii": + // TODO: Make these a separate, strict decoder? + case "us-ascii": + case "iso-8859-1": + case "iso8859-1": + case "iso88591": + case "iso_8859-1": + case "windows-1252": + case "iso_8859-1:1987": + case "cp1252": + case "x-cp1252": + return decoders.latin1; + case "utf16le": + case "utf-16le": + case "ucs2": + case "ucs-2": + return decoders.utf16le; + case "base64": + return decoders.base64; + default: + if (lc === void 0) { + lc = true; + charset = charset.toLowerCase(); + continue; + } + return decoders.other.bind(charset); + } + } + } + __name(getDecoder, "getDecoder"); + var decoders = { + utf8: /* @__PURE__ */ __name((data, hint) => { + if (data.length === 0) + return ""; + if (typeof data === "string") { + if (hint < 2) + return data; + data = Buffer.from(data, "latin1"); + } + return data.utf8Slice(0, data.length); + }, "utf8"), + latin1: /* @__PURE__ */ __name((data, hint) => { + if (data.length === 0) + return ""; + if (typeof data === "string") + return data; + return data.latin1Slice(0, data.length); + }, "latin1"), + utf16le: /* @__PURE__ */ __name((data, hint) => { + if (data.length === 0) + return ""; + if (typeof data === "string") + data = Buffer.from(data, "latin1"); + return data.ucs2Slice(0, data.length); + }, "utf16le"), + base64: /* @__PURE__ */ __name((data, hint) => { + if (data.length === 0) + return ""; + if (typeof data === "string") + data = Buffer.from(data, "latin1"); + return data.base64Slice(0, data.length); + }, "base64"), + other: /* @__PURE__ */ __name((data, hint) => { + if (data.length === 0) + return ""; + if (typeof data === "string") + data = Buffer.from(data, "latin1"); + try { + const decoder = new TextDecoder(exports); + return decoder.decode(data); + } catch { + } + }, "other") + }; + function convertToUTF8(data, charset, hint) { + const decode = getDecoder(charset); + if (decode) + return decode(data, hint); + } + __name(convertToUTF8, "convertToUTF8"); + function basename(path) { + if (typeof path !== "string") + return ""; + for (let i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 47: + // '/' + case 92: + path = path.slice(i + 1); + return path === ".." || path === "." ? "" : path; + } + } + return path === ".." || path === "." ? "" : path; + } + __name(basename, "basename"); + var TOKEN = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + var QDTEXT = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ]; + var CHARSET = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + var EXTENDED_VALUE = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + var HEX_VALUES = [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 10, + 11, + 12, + 13, + 14, + 15, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 10, + 11, + 12, + 13, + 14, + 15, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ]; + module.exports = { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition + }; + } +}); + +// ../../node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch/lib/sbmh.js +var require_sbmh = __commonJS({ + "../../node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch/lib/sbmh.js"(exports, module) { + "use strict"; + function memcmp(buf1, pos1, buf2, pos2, num) { + for (let i = 0; i < num; ++i) { + if (buf1[pos1 + i] !== buf2[pos2 + i]) + return false; + } + return true; + } + __name(memcmp, "memcmp"); + var SBMH = class { + static { + __name(this, "SBMH"); + } + constructor(needle, cb) { + if (typeof cb !== "function") + throw new Error("Missing match callback"); + if (typeof needle === "string") + needle = Buffer.from(needle); + else if (!Buffer.isBuffer(needle)) + throw new Error(`Expected Buffer for needle, got ${typeof needle}`); + const needleLen = needle.length; + this.maxMatches = Infinity; + this.matches = 0; + this._cb = cb; + this._lookbehindSize = 0; + this._needle = needle; + this._bufPos = 0; + this._lookbehind = Buffer.allocUnsafe(needleLen); + this._occ = [ + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen, + needleLen + ]; + if (needleLen > 1) { + for (let i = 0; i < needleLen - 1; ++i) + this._occ[needle[i]] = needleLen - 1 - i; + } + } + reset() { + this.matches = 0; + this._lookbehindSize = 0; + this._bufPos = 0; + } + push(chunk, pos) { + let result; + if (!Buffer.isBuffer(chunk)) + chunk = Buffer.from(chunk, "latin1"); + const chunkLen = chunk.length; + this._bufPos = pos || 0; + while (result !== chunkLen && this.matches < this.maxMatches) + result = feed(this, chunk); + return result; + } + destroy() { + const lbSize = this._lookbehindSize; + if (lbSize) + this._cb(false, this._lookbehind, 0, lbSize, false); + this.reset(); + } + }; + function feed(self, data) { + const len = data.length; + const needle = self._needle; + const needleLen = needle.length; + let pos = -self._lookbehindSize; + const lastNeedleCharPos = needleLen - 1; + const lastNeedleChar = needle[lastNeedleCharPos]; + const end = len - needleLen; + const occ = self._occ; + const lookbehind = self._lookbehind; + if (pos < 0) { + while (pos < 0 && pos <= end) { + const nextPos = pos + lastNeedleCharPos; + const ch = nextPos < 0 ? lookbehind[self._lookbehindSize + nextPos] : data[nextPos]; + if (ch === lastNeedleChar && matchNeedle(self, data, pos, lastNeedleCharPos)) { + self._lookbehindSize = 0; + ++self.matches; + if (pos > -self._lookbehindSize) + self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false); + else + self._cb(true, void 0, 0, 0, true); + return self._bufPos = pos + needleLen; + } + pos += occ[ch]; + } + while (pos < 0 && !matchNeedle(self, data, pos, len - pos)) + ++pos; + if (pos < 0) { + const bytesToCutOff = self._lookbehindSize + pos; + if (bytesToCutOff > 0) { + self._cb(false, lookbehind, 0, bytesToCutOff, false); + } + self._lookbehindSize -= bytesToCutOff; + lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize); + lookbehind.set(data, self._lookbehindSize); + self._lookbehindSize += len; + self._bufPos = len; + return len; + } + self._cb(false, lookbehind, 0, self._lookbehindSize, false); + self._lookbehindSize = 0; + } + pos += self._bufPos; + const firstNeedleChar = needle[0]; + while (pos <= end) { + const ch = data[pos + lastNeedleCharPos]; + if (ch === lastNeedleChar && data[pos] === firstNeedleChar && memcmp(needle, 0, data, pos, lastNeedleCharPos)) { + ++self.matches; + if (pos > 0) + self._cb(true, data, self._bufPos, pos, true); + else + self._cb(true, void 0, 0, 0, true); + return self._bufPos = pos + needleLen; + } + pos += occ[ch]; + } + while (pos < len) { + if (data[pos] !== firstNeedleChar || !memcmp(data, pos, needle, 0, len - pos)) { + ++pos; + continue; + } + data.copy(lookbehind, 0, pos, len); + self._lookbehindSize = len - pos; + break; + } + if (pos > 0) + self._cb(false, data, self._bufPos, pos < len ? pos : len, true); + self._bufPos = len; + return len; + } + __name(feed, "feed"); + function matchNeedle(self, data, pos, len) { + const lb = self._lookbehind; + const lbSize = self._lookbehindSize; + const needle = self._needle; + for (let i = 0; i < len; ++i, ++pos) { + const ch = pos < 0 ? lb[lbSize + pos] : data[pos]; + if (ch !== needle[i]) + return false; + } + return true; + } + __name(matchNeedle, "matchNeedle"); + module.exports = SBMH; + } +}); + +// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/multipart.js +var require_multipart = __commonJS({ + "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/multipart.js"(exports, module) { + "use strict"; + var { Readable, Writable } = __require("stream"); + var StreamSearch = require_sbmh(); + var { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition + } = require_utils4(); + var BUF_CRLF = Buffer.from("\r\n"); + var BUF_CR = Buffer.from("\r"); + var BUF_DASH = Buffer.from("-"); + function noop5() { + } + __name(noop5, "noop"); + var MAX_HEADER_PAIRS = 2e3; + var MAX_HEADER_SIZE = 16 * 1024; + var HPARSER_NAME = 0; + var HPARSER_PRE_OWS = 1; + var HPARSER_VALUE = 2; + var HeaderParser = class { + static { + __name(this, "HeaderParser"); + } + constructor(cb) { + this.header = /* @__PURE__ */ Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ""; + this.value = ""; + this.crlf = 0; + this.cb = cb; + } + reset() { + this.header = /* @__PURE__ */ Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ""; + this.value = ""; + this.crlf = 0; + } + push(chunk, pos, end) { + let start = pos; + while (pos < end) { + switch (this.state) { + case HPARSER_NAME: { + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (TOKEN[code] !== 1) { + if (code !== 58) + return -1; + this.name += chunk.latin1Slice(start, pos); + if (this.name.length === 0) + return -1; + ++pos; + done = true; + this.state = HPARSER_PRE_OWS; + break; + } + } + if (!done) { + this.name += chunk.latin1Slice(start, pos); + break; + } + } + case HPARSER_PRE_OWS: { + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code !== 32 && code !== 9) { + start = pos; + done = true; + this.state = HPARSER_VALUE; + break; + } + } + if (!done) + break; + } + case HPARSER_VALUE: + switch (this.crlf) { + case 0: + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (FIELD_VCHAR[code] !== 1) { + if (code !== 13) + return -1; + ++this.crlf; + break; + } + } + this.value += chunk.latin1Slice(start, pos++); + break; + case 1: + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10) + return -1; + ++this.crlf; + break; + case 2: { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code === 32 || code === 9) { + start = pos; + this.crlf = 0; + } else { + if (++this.pairCount < MAX_HEADER_PAIRS) { + this.name = this.name.toLowerCase(); + if (this.header[this.name] === void 0) + this.header[this.name] = [this.value]; + else + this.header[this.name].push(this.value); + } + if (code === 13) { + ++this.crlf; + ++pos; + } else { + start = pos; + this.crlf = 0; + this.state = HPARSER_NAME; + this.name = ""; + this.value = ""; + } + } + break; + } + case 3: { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10) + return -1; + const header = this.header; + this.reset(); + this.cb(header); + return pos; + } + } + break; + } + } + return pos; + } + }; + var FileStream = class extends Readable { + static { + __name(this, "FileStream"); + } + constructor(opts, owner) { + super(opts); + this.truncated = false; + this._readcb = null; + this.once("end", () => { + this._read(); + if (--owner._fileEndsLeft === 0 && owner._finalcb) { + const cb = owner._finalcb; + owner._finalcb = null; + process.nextTick(cb); + } + }); + } + _read(n) { + const cb = this._readcb; + if (cb) { + this._readcb = null; + cb(); + } + } + }; + var ignoreData = { + push: /* @__PURE__ */ __name((chunk, pos) => { + }, "push"), + destroy: /* @__PURE__ */ __name(() => { + }, "destroy") + }; + function callAndUnsetCb(self, err) { + const cb = self._writecb; + self._writecb = null; + if (err) + self.destroy(err); + else if (cb) + cb(); + } + __name(callAndUnsetCb, "callAndUnsetCb"); + function nullDecoder(val, hint) { + return val; + } + __name(nullDecoder, "nullDecoder"); + var Multipart = class extends Writable { + static { + __name(this, "Multipart"); + } + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: typeof cfg.highWaterMark === "number" ? cfg.highWaterMark : void 0 + }; + super(streamOpts); + if (!cfg.conType.params || typeof cfg.conType.params.boundary !== "string") + throw new Error("Multipart: Boundary not found"); + const boundary = cfg.conType.params.boundary; + const paramDecoder = typeof cfg.defParamCharset === "string" && cfg.defParamCharset ? getDecoder(cfg.defParamCharset) : nullDecoder; + const defCharset = cfg.defCharset || "utf8"; + const preservePath = cfg.preservePath; + const fileOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: typeof cfg.fileHwm === "number" ? cfg.fileHwm : void 0 + }; + const limits = cfg.limits; + const fieldSizeLimit = limits && typeof limits.fieldSize === "number" ? limits.fieldSize : 1 * 1024 * 1024; + const fileSizeLimit = limits && typeof limits.fileSize === "number" ? limits.fileSize : Infinity; + const filesLimit = limits && typeof limits.files === "number" ? limits.files : Infinity; + const fieldsLimit = limits && typeof limits.fields === "number" ? limits.fields : Infinity; + const partsLimit = limits && typeof limits.parts === "number" ? limits.parts : Infinity; + let parts = -1; + let fields = 0; + let files = 0; + let skipPart = false; + this._fileEndsLeft = 0; + this._fileStream = void 0; + this._complete = false; + let fileSize = 0; + let field; + let fieldSize = 0; + let partCharset; + let partEncoding; + let partType; + let partName; + let partTruncated = false; + let hitFilesLimit = false; + let hitFieldsLimit = false; + this._hparser = null; + const hparser = new HeaderParser((header) => { + this._hparser = null; + skipPart = false; + partType = "text/plain"; + partCharset = defCharset; + partEncoding = "7bit"; + partName = void 0; + partTruncated = false; + let filename; + if (!header["content-disposition"]) { + skipPart = true; + return; + } + const disp = parseDisposition( + header["content-disposition"][0], + paramDecoder + ); + if (!disp || disp.type !== "form-data") { + skipPart = true; + return; + } + if (disp.params) { + if (disp.params.name) + partName = disp.params.name; + if (disp.params["filename*"]) + filename = disp.params["filename*"]; + else if (disp.params.filename) + filename = disp.params.filename; + if (filename !== void 0 && !preservePath) + filename = basename(filename); + } + if (header["content-type"]) { + const conType = parseContentType(header["content-type"][0]); + if (conType) { + partType = `${conType.type}/${conType.subtype}`; + if (conType.params && typeof conType.params.charset === "string") + partCharset = conType.params.charset.toLowerCase(); + } + } + if (header["content-transfer-encoding"]) + partEncoding = header["content-transfer-encoding"][0].toLowerCase(); + if (partType === "application/octet-stream" || filename !== void 0) { + if (files === filesLimit) { + if (!hitFilesLimit) { + hitFilesLimit = true; + this.emit("filesLimit"); + } + skipPart = true; + return; + } + ++files; + if (this.listenerCount("file") === 0) { + skipPart = true; + return; + } + fileSize = 0; + this._fileStream = new FileStream(fileOpts, this); + ++this._fileEndsLeft; + this.emit( + "file", + partName, + this._fileStream, + { + filename, + encoding: partEncoding, + mimeType: partType + } + ); + } else { + if (fields === fieldsLimit) { + if (!hitFieldsLimit) { + hitFieldsLimit = true; + this.emit("fieldsLimit"); + } + skipPart = true; + return; + } + ++fields; + if (this.listenerCount("field") === 0) { + skipPart = true; + return; + } + field = []; + fieldSize = 0; + } + }); + let matchPostBoundary = 0; + const ssCb = /* @__PURE__ */ __name((isMatch, data, start, end, isDataSafe) => { + retrydata: + while (data) { + if (this._hparser !== null) { + const ret = this._hparser.push(data, start, end); + if (ret === -1) { + this._hparser = null; + hparser.reset(); + this.emit("error", new Error("Malformed part header")); + break; + } + start = ret; + } + if (start === end) + break; + if (matchPostBoundary !== 0) { + if (matchPostBoundary === 1) { + switch (data[start]) { + case 45: + matchPostBoundary = 2; + ++start; + break; + case 13: + matchPostBoundary = 3; + ++start; + break; + default: + matchPostBoundary = 0; + } + if (start === end) + return; + } + if (matchPostBoundary === 2) { + matchPostBoundary = 0; + if (data[start] === 45) { + this._complete = true; + this._bparser = ignoreData; + return; + } + const writecb = this._writecb; + this._writecb = noop5; + ssCb(false, BUF_DASH, 0, 1, false); + this._writecb = writecb; + } else if (matchPostBoundary === 3) { + matchPostBoundary = 0; + if (data[start] === 10) { + ++start; + if (parts >= partsLimit) + break; + this._hparser = hparser; + if (start === end) + break; + continue retrydata; + } else { + const writecb = this._writecb; + this._writecb = noop5; + ssCb(false, BUF_CR, 0, 1, false); + this._writecb = writecb; + } + } + } + if (!skipPart) { + if (this._fileStream) { + let chunk; + const actualLen = Math.min(end - start, fileSizeLimit - fileSize); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + fileSize += chunk.length; + if (fileSize === fileSizeLimit) { + if (chunk.length > 0) + this._fileStream.push(chunk); + this._fileStream.emit("limit"); + this._fileStream.truncated = true; + skipPart = true; + } else if (!this._fileStream.push(chunk)) { + if (this._writecb) + this._fileStream._readcb = this._writecb; + this._writecb = null; + } + } else if (field !== void 0) { + let chunk; + const actualLen = Math.min( + end - start, + fieldSizeLimit - fieldSize + ); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + fieldSize += actualLen; + field.push(chunk); + if (fieldSize === fieldSizeLimit) { + skipPart = true; + partTruncated = true; + } + } + } + break; + } + if (isMatch) { + matchPostBoundary = 1; + if (this._fileStream) { + this._fileStream.push(null); + this._fileStream = null; + } else if (field !== void 0) { + let data2; + switch (field.length) { + case 0: + data2 = ""; + break; + case 1: + data2 = convertToUTF8(field[0], partCharset, 0); + break; + default: + data2 = convertToUTF8( + Buffer.concat(field, fieldSize), + partCharset, + 0 + ); + } + field = void 0; + fieldSize = 0; + this.emit( + "field", + partName, + data2, + { + nameTruncated: false, + valueTruncated: partTruncated, + encoding: partEncoding, + mimeType: partType + } + ); + } + if (++parts === partsLimit) + this.emit("partsLimit"); + } + }, "ssCb"); + this._bparser = new StreamSearch(`\r +--${boundary}`, ssCb); + this._writecb = null; + this._finalcb = null; + this.write(BUF_CRLF); + } + static detect(conType) { + return conType.type === "multipart" && conType.subtype === "form-data"; + } + _write(chunk, enc, cb) { + this._writecb = cb; + this._bparser.push(chunk, 0); + if (this._writecb) + callAndUnsetCb(this); + } + _destroy(err, cb) { + this._hparser = null; + this._bparser = ignoreData; + if (!err) + err = checkEndState(this); + const fileStream = this._fileStream; + if (fileStream) { + this._fileStream = null; + fileStream.destroy(err); + } + cb(err); + } + _final(cb) { + this._bparser.destroy(); + if (!this._complete) + return cb(new Error("Unexpected end of form")); + if (this._fileEndsLeft) + this._finalcb = finalcb.bind(null, this, cb); + else + finalcb(this, cb); + } + }; + function finalcb(self, cb, err) { + if (err) + return cb(err); + err = checkEndState(self); + cb(err); + } + __name(finalcb, "finalcb"); + function checkEndState(self) { + if (self._hparser) + return new Error("Malformed part header"); + const fileStream = self._fileStream; + if (fileStream) { + self._fileStream = null; + fileStream.destroy(new Error("Unexpected end of file")); + } + if (!self._complete) + return new Error("Unexpected end of form"); + } + __name(checkEndState, "checkEndState"); + var TOKEN = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + var FIELD_VCHAR = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ]; + module.exports = Multipart; + } +}); + +// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/urlencoded.js +var require_urlencoded2 = __commonJS({ + "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/urlencoded.js"(exports, module) { + "use strict"; + var { Writable } = __require("stream"); + var { getDecoder } = require_utils4(); + var URLEncoded = class extends Writable { + static { + __name(this, "URLEncoded"); + } + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: typeof cfg.highWaterMark === "number" ? cfg.highWaterMark : void 0 + }; + super(streamOpts); + let charset = cfg.defCharset || "utf8"; + if (cfg.conType.params && typeof cfg.conType.params.charset === "string") + charset = cfg.conType.params.charset; + this.charset = charset; + const limits = cfg.limits; + this.fieldSizeLimit = limits && typeof limits.fieldSize === "number" ? limits.fieldSize : 1 * 1024 * 1024; + this.fieldsLimit = limits && typeof limits.fields === "number" ? limits.fields : Infinity; + this.fieldNameSizeLimit = limits && typeof limits.fieldNameSize === "number" ? limits.fieldNameSize : 100; + this._inKey = true; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + this._fields = 0; + this._key = ""; + this._val = ""; + this._byte = -2; + this._lastPos = 0; + this._encode = 0; + this._decoder = getDecoder(charset); + } + static detect(conType) { + return conType.type === "application" && conType.subtype === "x-www-form-urlencoded"; + } + _write(chunk, enc, cb) { + if (this._fields >= this.fieldsLimit) + return cb(); + let i = 0; + const len = chunk.length; + this._lastPos = 0; + if (this._byte !== -2) { + i = readPctEnc(this, chunk, i, len); + if (i === -1) + return cb(new Error("Malformed urlencoded form")); + if (i >= len) + return cb(); + if (this._inKey) + ++this._bytesKey; + else + ++this._bytesVal; + } + main: + while (i < len) { + if (this._inKey) { + i = skipKeyBytes(this, chunk, i, len); + while (i < len) { + switch (chunk[i]) { + case 61: + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + this._inKey = false; + continue main; + case 38: + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + if (this._bytesKey > 0) { + this.emit( + "field", + this._key, + "", + { + nameTruncated: this._keyTrunc, + valueTruncated: false, + encoding: this.charset, + mimeType: "text/plain" + } + ); + } + this._key = ""; + this._val = ""; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit("fieldsLimit"); + return cb(); + } + continue; + case 43: + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._key += " "; + this._lastPos = i + 1; + break; + case 37: + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error("Malformed urlencoded form")); + if (i >= len) + return cb(); + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + } else { + i = skipValBytes(this, chunk, i, len); + while (i < len) { + switch (chunk[i]) { + case 38: + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._inKey = true; + this._val = this._decoder(this._val, this._encode); + this._encode = 0; + if (this._bytesKey > 0 || this._bytesVal > 0) { + this.emit( + "field", + this._key, + this._val, + { + nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: "text/plain" + } + ); + } + this._key = ""; + this._val = ""; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit("fieldsLimit"); + return cb(); + } + continue main; + case 43: + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._val += " "; + this._lastPos = i + 1; + break; + case 37: + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error("Malformed urlencoded form")); + if (i >= len) + return cb(); + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + } + } + cb(); + } + _final(cb) { + if (this._byte !== -2) + return cb(new Error("Malformed urlencoded form")); + if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) { + if (this._inKey) + this._key = this._decoder(this._key, this._encode); + else + this._val = this._decoder(this._val, this._encode); + this.emit( + "field", + this._key, + this._val, + { + nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: "text/plain" + } + ); + } + cb(); + } + }; + function readPctEnc(self, chunk, pos, len) { + if (pos >= len) + return len; + if (self._byte === -1) { + const hexUpper = HEX_VALUES[chunk[pos++]]; + if (hexUpper === -1) + return -1; + if (hexUpper >= 8) + self._encode = 2; + if (pos < len) { + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + if (self._inKey) + self._key += String.fromCharCode((hexUpper << 4) + hexLower); + else + self._val += String.fromCharCode((hexUpper << 4) + hexLower); + self._byte = -2; + self._lastPos = pos; + } else { + self._byte = hexUpper; + } + } else { + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + if (self._inKey) + self._key += String.fromCharCode((self._byte << 4) + hexLower); + else + self._val += String.fromCharCode((self._byte << 4) + hexLower); + self._byte = -2; + self._lastPos = pos; + } + return pos; + } + __name(readPctEnc, "readPctEnc"); + function skipKeyBytes(self, chunk, pos, len) { + if (self._bytesKey > self.fieldNameSizeLimit) { + if (!self._keyTrunc) { + if (self._lastPos < pos) + self._key += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._keyTrunc = true; + for (; pos < len; ++pos) { + const code = chunk[pos]; + if (code === 61 || code === 38) + break; + ++self._bytesKey; + } + self._lastPos = pos; + } + return pos; + } + __name(skipKeyBytes, "skipKeyBytes"); + function skipValBytes(self, chunk, pos, len) { + if (self._bytesVal > self.fieldSizeLimit) { + if (!self._valTrunc) { + if (self._lastPos < pos) + self._val += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._valTrunc = true; + for (; pos < len; ++pos) { + if (chunk[pos] === 38) + break; + ++self._bytesVal; + } + self._lastPos = pos; + } + return pos; + } + __name(skipValBytes, "skipValBytes"); + var HEX_VALUES = [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 10, + 11, + 12, + 13, + 14, + 15, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + 10, + 11, + 12, + 13, + 14, + 15, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ]; + module.exports = URLEncoded; + } +}); + +// ../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/index.js +var require_lib5 = __commonJS({ + "../../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/index.js"(exports, module) { + "use strict"; + var { parseContentType } = require_utils4(); + function getInstance(cfg) { + const headers = cfg.headers; + const conType = parseContentType(headers["content-type"]); + if (!conType) + throw new Error("Malformed content type"); + for (const type of TYPES) { + const matched = type.detect(conType); + if (!matched) + continue; + const instanceCfg = { + limits: cfg.limits, + headers, + conType, + highWaterMark: void 0, + fileHwm: void 0, + defCharset: void 0, + defParamCharset: void 0, + preservePath: false + }; + if (cfg.highWaterMark) + instanceCfg.highWaterMark = cfg.highWaterMark; + if (cfg.fileHwm) + instanceCfg.fileHwm = cfg.fileHwm; + instanceCfg.defCharset = cfg.defCharset; + instanceCfg.defParamCharset = cfg.defParamCharset; + instanceCfg.preservePath = cfg.preservePath; + return new type(instanceCfg); + } + throw new Error(`Unsupported content type: ${headers["content-type"]}`); + } + __name(getInstance, "getInstance"); + var TYPES = [ + require_multipart(), + require_urlencoded2() + ].filter(function(typemod) { + return typeof typemod.detect === "function"; + }); + module.exports = (cfg) => { + if (typeof cfg !== "object" || cfg === null) + cfg = {}; + if (typeof cfg.headers !== "object" || cfg.headers === null || typeof cfg.headers["content-type"] !== "string") { + throw new Error("Missing Content-Type"); + } + return getInstance(cfg); + }; + } +}); + +// ../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/parse-path.js +var require_parse_path = __commonJS({ + "../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/parse-path.js"(exports, module) { + var reFirstKey = /^[^\[]*/; + var reDigitPath = /^\[(\d+)\]/; + var reNormalPath = /^\[([^\]]+)\]/; + function parsePath(key) { + function failure() { + return [{ type: "object", key, last: true }]; + } + __name(failure, "failure"); + var firstKey = reFirstKey.exec(key)[0]; + if (!firstKey) return failure(); + var len = key.length; + var pos = firstKey.length; + var tail = { type: "object", key: firstKey }; + var steps = [tail]; + while (pos < len) { + var m; + if (key[pos] === "[" && key[pos + 1] === "]") { + pos += 2; + tail.append = true; + if (pos !== len) return failure(); + continue; + } + m = reDigitPath.exec(key.substring(pos)); + if (m !== null) { + pos += m[0].length; + tail.nextType = "array"; + tail = { type: "array", key: parseInt(m[1], 10) }; + steps.push(tail); + continue; + } + m = reNormalPath.exec(key.substring(pos)); + if (m !== null) { + pos += m[0].length; + tail.nextType = "object"; + tail = { type: "object", key: m[1] }; + steps.push(tail); + continue; + } + return failure(); + } + tail.last = true; + return steps; + } + __name(parsePath, "parsePath"); + module.exports = parsePath; + } +}); + +// ../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/set-value.js +var require_set_value = __commonJS({ + "../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/set-value.js"(exports, module) { + function valueType(value) { + if (value === void 0) return "undefined"; + if (Array.isArray(value)) return "array"; + if (typeof value === "object") return "object"; + return "scalar"; + } + __name(valueType, "valueType"); + function setLastValue(context, step, currentValue, entryValue) { + switch (valueType(currentValue)) { + case "undefined": + if (step.append) { + context[step.key] = [entryValue]; + } else { + context[step.key] = entryValue; + } + break; + case "array": + context[step.key].push(entryValue); + break; + case "object": + return setLastValue(currentValue, { type: "object", key: "", last: true }, currentValue[""], entryValue); + case "scalar": + context[step.key] = [context[step.key], entryValue]; + break; + } + return context; + } + __name(setLastValue, "setLastValue"); + function setValue(context, step, currentValue, entryValue) { + if (step.last) return setLastValue(context, step, currentValue, entryValue); + var obj; + switch (valueType(currentValue)) { + case "undefined": + if (step.nextType === "array") { + context[step.key] = []; + } else { + context[step.key] = /* @__PURE__ */ Object.create(null); + } + return context[step.key]; + case "object": + return context[step.key]; + case "array": + if (step.nextType === "array") { + return currentValue; + } + obj = /* @__PURE__ */ Object.create(null); + context[step.key] = obj; + currentValue.forEach(function(item, i) { + if (item !== void 0) obj["" + i] = item; + }); + return obj; + case "scalar": + obj = /* @__PURE__ */ Object.create(null); + obj[""] = currentValue; + context[step.key] = obj; + return obj; + } + } + __name(setValue, "setValue"); + module.exports = setValue; + } +}); + +// ../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/index.js +var require_append_field = __commonJS({ + "../../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/index.js"(exports, module) { + var parsePath = require_parse_path(); + var setValue = require_set_value(); + function appendField(store, key, value) { + var steps = parsePath(key); + steps.reduce(function(context, step) { + return setValue(context, step, context[step.key], value); + }, store); + } + __name(appendField, "appendField"); + module.exports = appendField; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/counter.js +var require_counter = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/counter.js"(exports, module) { + var EventEmitter = __require("events").EventEmitter; + function Counter() { + EventEmitter.call(this); + this.value = 0; + } + __name(Counter, "Counter"); + Counter.prototype = Object.create(EventEmitter.prototype); + Counter.prototype.increment = /* @__PURE__ */ __name(function increment() { + this.value++; + }, "increment"); + Counter.prototype.decrement = /* @__PURE__ */ __name(function decrement() { + if (--this.value === 0) this.emit("zero"); + }, "decrement"); + Counter.prototype.isZero = /* @__PURE__ */ __name(function isZero() { + return this.value === 0; + }, "isZero"); + Counter.prototype.onceZero = /* @__PURE__ */ __name(function onceZero(fn) { + if (this.isZero()) return fn(); + this.once("zero", fn); + }, "onceZero"); + module.exports = Counter; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/multer-error.js +var require_multer_error = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/multer-error.js"(exports, module) { + var util = __require("util"); + var errorMessages = { + LIMIT_PART_COUNT: "Too many parts", + LIMIT_FILE_SIZE: "File too large", + LIMIT_FILE_COUNT: "Too many files", + LIMIT_FIELD_KEY: "Field name too long", + LIMIT_FIELD_VALUE: "Field value too long", + LIMIT_FIELD_COUNT: "Too many fields", + LIMIT_UNEXPECTED_FILE: "Unexpected file field", + MISSING_FIELD_NAME: "Field name missing", + LIMIT_FIELD_NESTING: "Field name nesting too deep", + LIMIT_FIELD_ARRAY_INDEX: "Field name array index too large", + STREAM_DESTROYED: "File stream was destroyed", + INVALID_FIELD_NAME: "Invalid field name" + }; + function MulterError(code, field, filename) { + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + this.message = errorMessages[code] || `Unknown error: ${code}`; + this.code = code; + if (field) this.field = field; + if (filename) this.filename = filename; + } + __name(MulterError, "MulterError"); + util.inherits(MulterError, Error); + module.exports = MulterError; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/file-appender.js +var require_file_appender = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/file-appender.js"(exports, module) { + function arrayRemove(arr, item) { + var idx = arr.indexOf(item); + if (~idx) arr.splice(idx, 1); + } + __name(arrayRemove, "arrayRemove"); + function FileAppender(strategy, req) { + this.strategy = strategy; + this.req = req; + switch (strategy) { + case "NONE": + break; + case "VALUE": + break; + case "ARRAY": + req.files = []; + break; + case "OBJECT": + req.files = /* @__PURE__ */ Object.create(null); + break; + default: + throw new Error("Unknown file strategy: " + strategy); + } + } + __name(FileAppender, "FileAppender"); + FileAppender.prototype.insertPlaceholder = function(file) { + var placeholder = { + fieldname: file.fieldname + }; + switch (this.strategy) { + case "NONE": + break; + case "VALUE": + break; + case "ARRAY": + this.req.files.push(placeholder); + break; + case "OBJECT": + if (this.req.files[file.fieldname]) { + this.req.files[file.fieldname].push(placeholder); + } else { + this.req.files[file.fieldname] = [placeholder]; + } + break; + } + return placeholder; + }; + FileAppender.prototype.removePlaceholder = function(placeholder) { + switch (this.strategy) { + case "NONE": + break; + case "VALUE": + break; + case "ARRAY": + arrayRemove(this.req.files, placeholder); + break; + case "OBJECT": { + var files = this.req.files[placeholder.fieldname]; + if (!files) break; + arrayRemove(files, placeholder); + if (files.length === 0) delete this.req.files[placeholder.fieldname]; + break; + } + } + }; + FileAppender.prototype.replacePlaceholder = function(placeholder, file) { + if (this.strategy === "VALUE") { + this.req.file = file; + return; + } + delete placeholder.fieldname; + Object.assign(placeholder, file); + }; + module.exports = FileAppender; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/remove-uploaded-files.js +var require_remove_uploaded_files = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/remove-uploaded-files.js"(exports, module) { + function removeUploadedFiles(uploadedFiles, remove, cb) { + var length = uploadedFiles.length; + var errors = []; + if (length === 0) return cb(null, errors); + function handleFile(idx) { + var file = uploadedFiles[idx]; + remove(file, function(err) { + if (err) { + err.file = file; + err.field = file.fieldname; + errors.push(err); + } + if (idx < length - 1) { + setImmediate(function() { + handleFile(idx + 1); + }); + } else { + cb(null, errors); + } + }); + } + __name(handleFile, "handleFile"); + handleFile(0); + } + __name(removeUploadedFiles, "removeUploadedFiles"); + module.exports = removeUploadedFiles; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/validate-limits.js +var require_validate_limits = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/validate-limits.js"(exports, module) { + function validateLimits(limits) { + Object.keys(limits).forEach(function(key) { + var value = limits[key]; + if (value == null) return; + if (Number.isInteger(value) && value >= 0 || value === Infinity) return; + throw new TypeError("Expected limits." + key + " to be a non-negative integer or Infinity"); + }); + } + __name(validateLimits, "validateLimits"); + module.exports = validateLimits; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/make-middleware.js +var require_make_middleware = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/lib/make-middleware.js"(exports, module) { + var is = require_type_is2(); + var AsyncResource2 = __require("async_hooks").AsyncResource; + var Busboy = require_lib5(); + var appendField = require_append_field(); + var Counter = require_counter(); + var MulterError = require_multer_error(); + var FileAppender = require_file_appender(); + var removeUploadedFiles = require_remove_uploaded_files(); + var validateLimits = require_validate_limits(); + function exceedsArrayIndexLimit(fieldname, limit) { + if (!/^[^[]+(?:\[[^\]]+\])*(?:\[\])?$/.test(fieldname)) return false; + var pattern = /\[(\d+)\]/g; + var match; + while ((match = pattern.exec(fieldname)) !== null) { + if (Number(match[1]) > limit) return true; + } + return false; + } + __name(exceedsArrayIndexLimit, "exceedsArrayIndexLimit"); + function drainStream(stream) { + stream.on("readable", () => { + while (stream.read() !== null) { + } + }); + } + __name(drainStream, "drainStream"); + function decodeFormDataName(str) { + return str.replace(/%0A|%0D|%22/gi, function(match) { + switch (match.toUpperCase()) { + case "%0A": + return "\n"; + case "%0D": + return "\r"; + default: + return '"'; + } + }); + } + __name(decodeFormDataName, "decodeFormDataName"); + function defaultStreamHandler(req, busboy) { + req.pipe(busboy); + } + __name(defaultStreamHandler, "defaultStreamHandler"); + function makeMiddleware(setup) { + return /* @__PURE__ */ __name(function multerMiddleware(req, res, next) { + var resource = new AsyncResource2("multer"); + var originalNext = next; + next = /* @__PURE__ */ __name(function(err) { + resource.runInAsyncScope(originalNext, null, err); + }, "next"); + if (!is(req, ["multipart"])) return next(); + var options = setup(); + var limits = options.limits; + if (typeof limits === "function") { + try { + limits = limits(req); + if (limits) validateLimits(limits); + } catch (err) { + return next(err); + } + } + var busboyLimits = limits; + if (limits && (Object.prototype.hasOwnProperty.call(limits, "fileSize") || Object.prototype.hasOwnProperty.call(limits, "parts"))) { + busboyLimits = {}; + var key; + for (key in limits) { + busboyLimits[key] = limits[key]; + } + if (typeof limits.fileSize === "number" && isFinite(limits.fileSize)) { + busboyLimits.fileSize = limits.fileSize + 1; + } + if (typeof limits.parts === "number" && isFinite(limits.parts)) { + busboyLimits.parts = limits.parts + 1; + } + } + var storage = options.storage; + var fileFilter = options.fileFilter; + var fileStrategy = options.fileStrategy; + var preservePath = options.preservePath; + var defParamCharset = options.defParamCharset; + var defCharset = options.defCharset; + var highWaterMark = options.highWaterMark; + var fileHwm = options.fileHwm; + var streamHandler = options.streamHandler || defaultStreamHandler; + req.body = /* @__PURE__ */ Object.create(null); + var busboy; + var appender = null; + var isDone = false; + var readFinished = false; + var errorOccured = false; + var abortCleanupDone = false; + var abortRemovedFiles = /* @__PURE__ */ new Set(); + var pendingWrites = new Counter(); + var uploadedFiles = []; + var pendingFiles = []; + function done(err) { + var called = false; + function onFinished() { + if (called) return; + called = true; + next(err); + } + __name(onFinished, "onFinished"); + if (isDone) return; + isDone = true; + if (busboy) { + req.unpipe(busboy); + setImmediate(() => { + busboy.removeAllListeners(); + }); + } + drainStream(req); + req.resume(); + if (err && req.readable && !req.destroyed) { + req.once("end", onFinished); + req.once("error", onFinished); + req.once("close", onFinished); + return; + } + next(err); + } + __name(done, "done"); + function indicateDone() { + if (readFinished && pendingWrites.isZero() && !errorOccured) done(); + } + __name(indicateDone, "indicateDone"); + function abortWithError(uploadError, skipPendingWait) { + if (errorOccured) return; + errorOccured = true; + function finishAbort() { + abortCleanupDone = true; + function remove(file, cb) { + storage._removeFile(req, file, cb); + } + __name(remove, "remove"); + var pendingToRemove = pendingFiles.filter(function(f) { + return f.path; + }); + pendingToRemove.forEach(function(f) { + abortRemovedFiles.add(f); + }); + var filesToRemove = uploadedFiles.concat(pendingToRemove); + pendingFiles = []; + removeUploadedFiles(filesToRemove, remove, function(err, storageErrors) { + if (err) return done(err); + uploadError.storageErrors = storageErrors; + done(uploadError); + }); + } + __name(finishAbort, "finishAbort"); + if (skipPendingWait) { + finishAbort(); + } else { + pendingWrites.onceZero(finishAbort); + } + } + __name(abortWithError, "abortWithError"); + function abortWithCode(code, optionalField, optionalFilename) { + abortWithError(new MulterError(code, optionalField, optionalFilename)); + } + __name(abortWithCode, "abortWithCode"); + function handleRequestFailure(err) { + if (isDone) return; + if (busboy) { + req.unpipe(busboy); + busboy.destroy(err); + } + abortWithError(err, true); + } + __name(handleRequestFailure, "handleRequestFailure"); + req.on("error", function(err) { + handleRequestFailure(err || new Error("Request error")); + }); + req.on("aborted", function() { + handleRequestFailure(new Error("Request aborted")); + }); + req.on("close", function() { + if (req.readableEnded) return; + handleRequestFailure(new Error("Request closed")); + }); + try { + busboy = Busboy({ + headers: req.headers, + limits: busboyLimits, + preservePath, + defParamCharset, + defCharset, + highWaterMark, + fileHwm + }); + } catch (err) { + return next(err); + } + appender = new FileAppender(fileStrategy, req); + busboy.on("field", function(fieldname, value, { nameTruncated, valueTruncated }) { + if (fieldname == null) return abortWithCode("MISSING_FIELD_NAME"); + var rawFieldname = fieldname; + fieldname = decodeFormDataName(fieldname); + if (nameTruncated) return abortWithCode("LIMIT_FIELD_KEY"); + if (valueTruncated) return abortWithCode("LIMIT_FIELD_VALUE", fieldname); + if (limits && Object.prototype.hasOwnProperty.call(limits, "fieldNameSize")) { + if (rawFieldname.length > limits.fieldNameSize) return abortWithCode("LIMIT_FIELD_KEY"); + } + if (limits && Object.prototype.hasOwnProperty.call(limits, "fieldNestingDepth")) { + if (fieldname.split("[").length - 1 > limits.fieldNestingDepth) return abortWithCode("LIMIT_FIELD_NESTING", fieldname); + } + if (limits && Object.prototype.hasOwnProperty.call(limits, "fieldArrayIndexLimit")) { + if (exceedsArrayIndexLimit(fieldname, limits.fieldArrayIndexLimit)) { + return abortWithCode("LIMIT_FIELD_ARRAY_INDEX", fieldname); + } + } + try { + appendField(req.body, fieldname, value); + } catch { + return abortWithCode("INVALID_FIELD_NAME", fieldname); + } + }); + busboy.on("file", function(fieldname, fileStream, { filename, encoding, mimeType }) { + var pendingWritesIncremented = false; + var aborting = false; + var accepted = false; + var fileSizeLimitReached = false; + var originalname = filename && decodeFormDataName(filename); + function decrementPendingWrites() { + if (!pendingWritesIncremented) return; + pendingWritesIncremented = false; + pendingWrites.decrement(); + } + __name(decrementPendingWrites, "decrementPendingWrites"); + fileStream.on("error", function(err) { + decrementPendingWrites(); + abortWithError(err); + }); + fileStream.on("limit", function() { + fileSizeLimitReached = true; + if (accepted) { + aborting = true; + abortWithCode("LIMIT_FILE_SIZE", fieldname, originalname); + } + }); + if (fieldname == null) return abortWithCode("MISSING_FIELD_NAME"); + var rawFieldname = fieldname; + fieldname = decodeFormDataName(fieldname); + if (!filename) return fileStream.resume(); + if (limits && Object.prototype.hasOwnProperty.call(limits, "fieldNameSize")) { + if (rawFieldname.length > limits.fieldNameSize) return abortWithCode("LIMIT_FIELD_KEY"); + } + var file = { + fieldname, + originalname, + encoding, + mimetype: mimeType + }; + var placeholder = appender.insertPlaceholder(file); + fileFilter(req, file, function(err, includeFile) { + if (errorOccured) { + appender.removePlaceholder(placeholder); + return fileStream.resume(); + } + if (err) { + appender.removePlaceholder(placeholder); + return abortWithError(err); + } + if (!includeFile) { + appender.removePlaceholder(placeholder); + return fileStream.resume(); + } + if (fileSizeLimitReached) { + appender.removePlaceholder(placeholder); + return abortWithCode("LIMIT_FILE_SIZE", fieldname, originalname); + } + accepted = true; + pendingWritesIncremented = true; + pendingWrites.increment(); + Object.defineProperty(file, "stream", { + configurable: true, + enumerable: false, + value: fileStream + }); + pendingFiles.push(file); + storage._handleFile(req, file, function(err2, info) { + var idx = pendingFiles.indexOf(file); + if (idx !== -1) pendingFiles.splice(idx, 1); + if (aborting) { + appender.removePlaceholder(placeholder); + uploadedFiles.push({ ...file, ...info }); + return decrementPendingWrites(); + } + if (err2) { + appender.removePlaceholder(placeholder); + decrementPendingWrites(); + return abortWithError(err2); + } + var fileInfo = { ...file, ...info }; + if (abortCleanupDone) { + if (abortRemovedFiles.has(file)) { + appender.removePlaceholder(placeholder); + decrementPendingWrites(); + return; + } + return storage._removeFile(req, fileInfo, function() { + appender.removePlaceholder(placeholder); + decrementPendingWrites(); + }); + } + appender.replacePlaceholder(placeholder, fileInfo); + uploadedFiles.push(fileInfo); + decrementPendingWrites(); + indicateDone(); + }); + }); + }); + busboy.on("error", function(err) { + abortWithError(err); + }); + busboy.on("partsLimit", function() { + abortWithCode("LIMIT_PART_COUNT"); + }); + busboy.on("filesLimit", function() { + abortWithCode("LIMIT_FILE_COUNT"); + }); + busboy.on("fieldsLimit", function() { + abortWithCode("LIMIT_FIELD_COUNT"); + }); + busboy.on("close", function() { + readFinished = true; + indicateDone(); + }); + streamHandler(req, busboy); + }, "multerMiddleware"); + } + __name(makeMiddleware, "makeMiddleware"); + module.exports = makeMiddleware; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/storage/disk.js +var require_disk = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/storage/disk.js"(exports, module) { + var fs = __require("fs"); + var os = __require("os"); + var path = __require("path"); + var crypto = __require("crypto"); + var pipeline = __require("stream").pipeline; + var MulterError = require_multer_error(); + var openStreams = /* @__PURE__ */ new WeakMap(); + var flushingFiles = /* @__PURE__ */ new WeakMap(); + function endFlush(file) { + var flush = flushingFiles.get(file); + if (!flush) return; + flushingFiles.delete(file); + if (flush.onClosed) flush.onClosed(); + } + __name(endFlush, "endFlush"); + function getFilename(req, file, cb) { + crypto.randomBytes(16, function(err, raw) { + cb(err, err ? void 0 : raw.toString("hex")); + }); + } + __name(getFilename, "getFilename"); + function getDestination(req, file, cb) { + cb(null, os.tmpdir()); + } + __name(getDestination, "getDestination"); + function DiskStorage(opts) { + opts = opts || {}; + this.getFilename = opts.filename || getFilename; + this.flush = opts.flush; + if (typeof opts.destination === "string") { + fs.mkdirSync(opts.destination, { recursive: true }); + this.getDestination = function($0, $1, cb) { + cb(null, opts.destination); + }; + } else { + this.getDestination = opts.destination || getDestination; + } + } + __name(DiskStorage, "DiskStorage"); + DiskStorage.prototype._handleFile = /* @__PURE__ */ __name(function _handleFile(req, file, cb) { + var that = this; + that.getDestination(req, file, function(err, destination) { + if (err) return cb(err); + that.getFilename(req, file, function(err2, filename) { + if (err2) return cb(err2); + var finalPath = path.join(destination, filename); + if (file.stream.destroyed) return cb(new MulterError("STREAM_DESTROYED")); + var outStream = fs.createWriteStream(finalPath); + file.path = finalPath; + openStreams.set(file, outStream); + outStream.once("close", function() { + openStreams.delete(file); + }); + if (that.flush) flushingFiles.set(file, {}); + pipeline(file.stream, outStream, function(err3) { + if (err3) { + endFlush(file); + return cb(err3); + } + var done = /* @__PURE__ */ __name(function(err4) { + if (err4) return cb(err4); + cb(null, { + destination, + filename, + path: finalPath, + size: outStream.bytesWritten + }); + }, "done"); + if (!that.flush) return done(); + fs.open(finalPath, "r+", function(err4, fd) { + if (err4) { + endFlush(file); + return done(err4); + } + fs.fsync(fd, function(syncErr) { + fs.close(fd, function(closeErr) { + endFlush(file); + done(syncErr || closeErr); + }); + }); + }); + }); + }); + }); + }, "_handleFile"); + DiskStorage.prototype._removeFile = /* @__PURE__ */ __name(function _removeFile(req, file, cb) { + var path2 = file.path; + delete file.destination; + delete file.filename; + delete file.path; + function unlink() { + var flush = flushingFiles.get(file); + if (!flush) return fs.unlink(path2, cb); + flush.onClosed = function() { + fs.unlink(path2, cb); + }; + } + __name(unlink, "unlink"); + var outStream = openStreams.get(file); + if (!outStream) return unlink(); + if (outStream.closed) return unlink(); + function onReleased() { + outStream.removeListener("close", onReleased); + outStream.removeListener("error", onReleased); + unlink(); + } + __name(onReleased, "onReleased"); + outStream.once("close", onReleased); + outStream.once("error", onReleased); + outStream.destroy(); + }, "_removeFile"); + module.exports = function(opts) { + return new DiskStorage(opts); + }; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/storage/memory.js +var require_memory = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/storage/memory.js"(exports, module) { + function MemoryStorage(opts) { + } + __name(MemoryStorage, "MemoryStorage"); + MemoryStorage.prototype._handleFile = /* @__PURE__ */ __name(function _handleFile(req, file, cb) { + var chunks = []; + file.stream.on("data", function(chunk) { + chunks.push(chunk); + }); + file.stream.on("end", function() { + var buffer = Buffer.concat(chunks); + cb(null, { + buffer, + size: buffer.length + }); + }); + }, "_handleFile"); + MemoryStorage.prototype._removeFile = /* @__PURE__ */ __name(function _removeFile(req, file, cb) { + delete file.buffer; + cb(null); + }, "_removeFile"); + module.exports = function(opts) { + return new MemoryStorage(opts); + }; + } +}); + +// ../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/index.js +var require_multer = __commonJS({ + "../../node_modules/.pnpm/multer@2.4.0/node_modules/multer/index.js"(exports, module) { + var makeMiddleware = require_make_middleware(); + var diskStorage = require_disk(); + var memoryStorage = require_memory(); + var MulterError = require_multer_error(); + var validateLimits = require_validate_limits(); + function allowAll(req, file, cb) { + cb(null, true); + } + __name(allowAll, "allowAll"); + function Multer(options) { + if (options.storage) { + this.storage = options.storage; + } else if (options.dest) { + this.storage = diskStorage({ destination: options.dest }); + } else { + this.storage = memoryStorage(); + } + if (options.limits && typeof options.limits !== "function") validateLimits(options.limits); + this.limits = options.limits; + this.preservePath = options.preservePath; + this.defParamCharset = options.defParamCharset || "latin1"; + this.defCharset = options.defCharset; + this.highWaterMark = options.highWaterMark; + this.fileHwm = options.fileHwm; + this.fileFilter = options.fileFilter || allowAll; + if (options.streamHandler !== void 0 && typeof options.streamHandler !== "function") { + throw new TypeError("Expected streamHandler to be a function"); + } + this.streamHandler = options.streamHandler; + } + __name(Multer, "Multer"); + Multer.prototype._makeMiddleware = function(fields, fileStrategy) { + function setup() { + var fileFilter = this.fileFilter; + var filesLeft = /* @__PURE__ */ Object.create(null); + fields.forEach(function(field) { + if (typeof field.maxCount === "number") { + filesLeft[field.name] = field.maxCount; + } else { + filesLeft[field.name] = Infinity; + } + }); + function wrappedFileFilter(req, file, cb) { + if ((filesLeft[file.fieldname] || 0) <= 0) { + return cb(new MulterError("LIMIT_UNEXPECTED_FILE", file.fieldname, file.originalname)); + } + filesLeft[file.fieldname] -= 1; + var settled = false; + fileFilter(req, file, function(err, includeFile) { + if (!settled) { + settled = true; + if (err || !includeFile) filesLeft[file.fieldname] += 1; + } + cb(err, includeFile); + }); + } + __name(wrappedFileFilter, "wrappedFileFilter"); + return { + limits: this.limits, + preservePath: this.preservePath, + defParamCharset: this.defParamCharset, + defCharset: this.defCharset, + highWaterMark: this.highWaterMark, + fileHwm: this.fileHwm, + streamHandler: this.streamHandler, + storage: this.storage, + fileFilter: wrappedFileFilter, + fileStrategy + }; + } + __name(setup, "setup"); + return makeMiddleware(setup.bind(this)); + }; + Multer.prototype.single = function(name) { + return this._makeMiddleware([{ name, maxCount: 1 }], "VALUE"); + }; + Multer.prototype.array = function(name, maxCount) { + return this._makeMiddleware([{ name, maxCount }], "ARRAY"); + }; + Multer.prototype.fields = function(fields) { + return this._makeMiddleware(fields, "OBJECT"); + }; + Multer.prototype.none = function() { + return this._makeMiddleware([], "NONE"); + }; + Multer.prototype.any = function() { + function setup() { + return { + limits: this.limits, + preservePath: this.preservePath, + defParamCharset: this.defParamCharset, + defCharset: this.defCharset, + highWaterMark: this.highWaterMark, + fileHwm: this.fileHwm, + streamHandler: this.streamHandler, + storage: this.storage, + fileFilter: this.fileFilter, + fileStrategy: "ARRAY" + }; + } + __name(setup, "setup"); + return makeMiddleware(setup.bind(this)); + }; + function multer6(options) { + if (options === void 0) { + return new Multer({}); + } + if (typeof options === "object" && options !== null) { + return new Multer(options); + } + throw new TypeError("Expected object for argument options"); + } + __name(multer6, "multer"); + module.exports = multer6; + module.exports.diskStorage = diskStorage; + module.exports.memoryStorage = memoryStorage; + module.exports.MulterError = MulterError; + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/files.constants.js +var MULTER_MODULE_OPTIONS; +var init_files_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/files.constants.js"() { + MULTER_MODULE_OPTIONS = "MULTER_MODULE_OPTIONS"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer/multer.constants.js +var multerExceptions, DEFAULT_FIELD_NAME_LIMITS, busboyExceptions; +var init_multer_constants = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer/multer.constants.js"() { + multerExceptions = { + // from https://github.com/expressjs/multer/blob/master/lib/multer-error.js + LIMIT_PART_COUNT: "Too many parts", + LIMIT_FILE_SIZE: "File too large", + LIMIT_FILE_COUNT: "Too many files", + LIMIT_FIELD_KEY: "Field name too long", + LIMIT_FIELD_VALUE: "Field value too long", + LIMIT_FIELD_COUNT: "Too many fields", + LIMIT_UNEXPECTED_FILE: "Unexpected file field", + MISSING_FIELD_NAME: "Field name missing", + LIMIT_FIELD_NESTING: "Field name nesting too deep", + LIMIT_FIELD_ARRAY_INDEX: "Field name array index too large", + INVALID_FIELD_NAME: "Invalid field name" + // STREAM_DESTROYED is left out on purpose: it is raised by the storage + // engine after the file stream was destroyed, not by the request, so it + // stays a 500. + }; + DEFAULT_FIELD_NAME_LIMITS = { + fieldNestingDepth: 32, + fieldArrayIndexLimit: 1e3 + }; + busboyExceptions = { + // from https://github.com/mscdex/busboy/blob/master/lib/types/multipart.js + MULTIPART_BOUNDARY_NOT_FOUND: "Multipart: Boundary not found", + MULTIPART_MALFORMED_PART_HEADER: "Malformed part header", + MULTIPART_UNEXPECTED_END_OF_FORM: "Unexpected end of form", + MULTIPART_UNEXPECTED_END_OF_FILE: "Unexpected end of file" + }; + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer/multer.utils.js +import { finished as finished2 } from "stream"; +function mergeMulterOptions(options = {}, localOptions = {}) { + const merged = { ...options, ...localOptions }; + if (isPlainObject(options.limits) && isPlainObject(localOptions.limits)) { + merged.limits = { ...options.limits, ...localOptions.limits }; + } + if (localOptions.dest && !localOptions.storage) { + delete merged.storage; + } + return merged; +} +function applyDefaultLimits(options) { + const { limits } = options; + return { + ...options, + limits: typeof limits === "function" ? (req) => withDefaultLimits(limits(req)) : withDefaultLimits(limits) + }; +} +function withDefaultLimits(limits) { + return { + ...limits, + fieldNestingDepth: limits?.fieldNestingDepth ?? DEFAULT_FIELD_NAME_LIMITS.fieldNestingDepth, + fieldArrayIndexLimit: limits?.fieldArrayIndexLimit ?? DEFAULT_FIELD_NAME_LIMITS.fieldArrayIndexLimit + }; +} +function removeFilesOnPipeRejection(storage, req, res) { + return (0, import_rxjs9.catchError)((err) => { + if (isRejectedByPipes(req)) { + finished2(res, () => { + for (const file of storedFiles(req)) { + try { + storage._removeFile(req, file, () => void 0); + } catch { + } + } + }); + } + return (0, import_rxjs9.throwError)(() => err); + }); +} +function storedFiles(req) { + const { file, files } = req; + if (file) { + return [file]; + } + return Array.isArray(files) ? files : Object.values(files ?? {}).flat(); +} +function transformException(error) { + if (!error || error instanceof HttpException) { + return error; + } + const exception = isMulterExceptionCode(error.code) ? multerExceptions[error.code] : error.message; + switch (exception) { + case multerExceptions.LIMIT_FILE_SIZE: + return new PayloadTooLargeException(error.message); + case multerExceptions.LIMIT_FILE_COUNT: + case multerExceptions.LIMIT_FIELD_KEY: + case multerExceptions.LIMIT_FIELD_VALUE: + case multerExceptions.LIMIT_FIELD_COUNT: + case multerExceptions.LIMIT_FIELD_NESTING: + case multerExceptions.LIMIT_FIELD_ARRAY_INDEX: + case multerExceptions.INVALID_FIELD_NAME: + case multerExceptions.LIMIT_UNEXPECTED_FILE: + case multerExceptions.LIMIT_PART_COUNT: + case multerExceptions.MISSING_FIELD_NAME: + if (error.field) { + return new BadRequestException(`${error.message} - ${error.field}`); + } + return new BadRequestException(error.message); + case busboyExceptions.MULTIPART_BOUNDARY_NOT_FOUND: + return new BadRequestException(error.message); + case busboyExceptions.MULTIPART_MALFORMED_PART_HEADER: + case busboyExceptions.MULTIPART_UNEXPECTED_END_OF_FORM: + case busboyExceptions.MULTIPART_UNEXPECTED_END_OF_FILE: + return new BadRequestException(`Multipart: ${error.message}`); + } + return error; +} +function isMulterExceptionCode(code) { + return typeof code === "string" && Object.hasOwn(multerExceptions, code); +} +var import_rxjs9; +var init_multer_utils = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer/multer.utils.js"() { + init_common(); + init_internal(); + init_internal2(); + import_rxjs9 = __toESM(require_cjs(), 1); + init_multer_constants(); + __name(mergeMulterOptions, "mergeMulterOptions"); + __name(applyDefaultLimits, "applyDefaultLimits"); + __name(withDefaultLimits, "withDefaultLimits"); + __name(removeFilesOnPipeRejection, "removeFilesOnPipeRejection"); + __name(storedFiles, "storedFiles"); + __name(transformException, "transformException"); + __name(isMulterExceptionCode, "isMulterExceptionCode"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/any-files.interceptor.js +function AnyFilesInterceptor(localOptions) { + let MixinInterceptor = class MixinInterceptor { + static { + __name(this, "MixinInterceptor"); + } + multer; + constructor(options = {}) { + this.multer = (0, import_multer.default)(applyDefaultLimits(mergeMulterOptions(options, localOptions))); + } + async intercept(context, next) { + const ctx = context.switchToHttp(); + await new Promise((resolve, reject) => this.multer.any()(ctx.getRequest(), ctx.getResponse(), (err) => { + if (err) { + const error = transformException(err); + return reject(error); + } + resolve(); + })); + return next.handle().pipe(removeFilesOnPipeRejection(this.multer.storage, ctx.getRequest(), ctx.getResponse())); + } + }; + MixinInterceptor = __decorate([ + __param(0, Optional()), + __param(0, Inject(MULTER_MODULE_OPTIONS)), + __metadata("design:paramtypes", [Object]) + ], MixinInterceptor); + const Interceptor = mixin(MixinInterceptor); + return Interceptor; +} +var import_multer; +var init_any_files_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/any-files.interceptor.js"() { + init_tslib_es6(); + init_common(); + import_multer = __toESM(require_multer(), 1); + init_files_constants(); + init_multer_utils(); + __name(AnyFilesInterceptor, "AnyFilesInterceptor"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/file-fields.interceptor.js +function FileFieldsInterceptor(uploadFields, localOptions) { + let MixinInterceptor = class MixinInterceptor { + static { + __name(this, "MixinInterceptor"); + } + multer; + constructor(options = {}) { + this.multer = (0, import_multer2.default)(applyDefaultLimits(mergeMulterOptions(options, localOptions))); + } + async intercept(context, next) { + const ctx = context.switchToHttp(); + await new Promise((resolve, reject) => this.multer.fields(uploadFields)(ctx.getRequest(), ctx.getResponse(), (err) => { + if (err) { + const error = transformException(err); + return reject(error); + } + resolve(); + })); + return next.handle().pipe(removeFilesOnPipeRejection(this.multer.storage, ctx.getRequest(), ctx.getResponse())); + } + }; + MixinInterceptor = __decorate([ + __param(0, Optional()), + __param(0, Inject(MULTER_MODULE_OPTIONS)), + __metadata("design:paramtypes", [Object]) + ], MixinInterceptor); + const Interceptor = mixin(MixinInterceptor); + return Interceptor; +} +var import_multer2; +var init_file_fields_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/file-fields.interceptor.js"() { + init_tslib_es6(); + init_common(); + import_multer2 = __toESM(require_multer(), 1); + init_files_constants(); + init_multer_utils(); + __name(FileFieldsInterceptor, "FileFieldsInterceptor"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/file.interceptor.js +function FileInterceptor(fieldName, localOptions) { + let MixinInterceptor = class MixinInterceptor { + static { + __name(this, "MixinInterceptor"); + } + multer; + constructor(options = {}) { + this.multer = (0, import_multer3.default)(applyDefaultLimits(mergeMulterOptions(options, localOptions))); + } + async intercept(context, next) { + const ctx = context.switchToHttp(); + await new Promise((resolve, reject) => this.multer.single(fieldName)(ctx.getRequest(), ctx.getResponse(), (err) => { + if (err) { + const error = transformException(err); + return reject(error); + } + resolve(); + })); + return next.handle().pipe(removeFilesOnPipeRejection(this.multer.storage, ctx.getRequest(), ctx.getResponse())); + } + }; + MixinInterceptor = __decorate([ + __param(0, Optional()), + __param(0, Inject(MULTER_MODULE_OPTIONS)), + __metadata("design:paramtypes", [Object]) + ], MixinInterceptor); + const Interceptor = mixin(MixinInterceptor); + return Interceptor; +} +var import_multer3; +var init_file_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/file.interceptor.js"() { + init_tslib_es6(); + init_common(); + import_multer3 = __toESM(require_multer(), 1); + init_files_constants(); + init_multer_utils(); + __name(FileInterceptor, "FileInterceptor"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/files.interceptor.js +function FilesInterceptor(fieldName, maxCount, localOptions) { + let MixinInterceptor = class MixinInterceptor { + static { + __name(this, "MixinInterceptor"); + } + multer; + constructor(options = {}) { + this.multer = (0, import_multer4.default)(applyDefaultLimits(mergeMulterOptions(options, localOptions))); + } + async intercept(context, next) { + const ctx = context.switchToHttp(); + await new Promise((resolve, reject) => this.multer.array(fieldName, maxCount)(ctx.getRequest(), ctx.getResponse(), (err) => { + if (err) { + const error = transformException(err); + return reject(error); + } + resolve(); + })); + return next.handle().pipe(removeFilesOnPipeRejection(this.multer.storage, ctx.getRequest(), ctx.getResponse())); + } + }; + MixinInterceptor = __decorate([ + __param(0, Optional()), + __param(0, Inject(MULTER_MODULE_OPTIONS)), + __metadata("design:paramtypes", [Object]) + ], MixinInterceptor); + const Interceptor = mixin(MixinInterceptor); + return Interceptor; +} +var import_multer4; +var init_files_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/files.interceptor.js"() { + init_tslib_es6(); + init_common(); + import_multer4 = __toESM(require_multer(), 1); + init_files_constants(); + init_multer_utils(); + __name(FilesInterceptor, "FilesInterceptor"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/no-files.interceptor.js +function NoFilesInterceptor(localOptions) { + let MixinInterceptor = class MixinInterceptor { + static { + __name(this, "MixinInterceptor"); + } + multer; + constructor(options = {}) { + this.multer = (0, import_multer5.default)(applyDefaultLimits(mergeMulterOptions(options, localOptions))); + } + async intercept(context, next) { + const ctx = context.switchToHttp(); + await new Promise((resolve, reject) => this.multer.none()(ctx.getRequest(), ctx.getResponse(), (err) => { + if (err) { + const error = transformException(err); + return reject(error); + } + resolve(); + })); + return next.handle(); + } + }; + MixinInterceptor = __decorate([ + __param(0, Optional()), + __param(0, Inject(MULTER_MODULE_OPTIONS)), + __metadata("design:paramtypes", [Object]) + ], MixinInterceptor); + const Interceptor = mixin(MixinInterceptor); + return Interceptor; +} +var import_multer5; +var init_no_files_interceptor = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/no-files.interceptor.js"() { + init_tslib_es6(); + init_common(); + import_multer5 = __toESM(require_multer(), 1); + init_files_constants(); + init_multer_utils(); + __name(NoFilesInterceptor, "NoFilesInterceptor"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/index.js +var init_interceptors2 = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interceptors/index.js"() { + init_any_files_interceptor(); + init_file_fields_interceptor(); + init_file_interceptor(); + init_files_interceptor(); + init_no_files_interceptor(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interfaces/files-upload-module.interface.js +var init_files_upload_module_interface = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interfaces/files-upload-module.interface.js"() { + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interfaces/index.js +var init_interfaces3 = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/interfaces/index.js"() { + init_files_upload_module_interface(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer.constants.js +var MULTER_MODULE_ID; +var init_multer_constants2 = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer.constants.js"() { + MULTER_MODULE_ID = "MULTER_MODULE_ID"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer.module.js +var MulterModule_1, MulterModule; +var init_multer_module = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/multer.module.js"() { + init_tslib_es6(); + init_common(); + init_files_constants(); + init_multer_constants2(); + init_internal(); + MulterModule = MulterModule_1 = class MulterModule2 { + static { + __name(this, "MulterModule"); + } + static register(options = {}) { + return { + module: MulterModule_1, + providers: [ + { provide: MULTER_MODULE_OPTIONS, useFactory: /* @__PURE__ */ __name(() => options, "useFactory") }, + { + provide: MULTER_MODULE_ID, + useValue: randomStringGenerator() + } + ], + exports: [MULTER_MODULE_OPTIONS] + }; + } + static registerAsync(options) { + return { + module: MulterModule_1, + imports: options.imports, + providers: [ + ...this.createAsyncProviders(options), + { + provide: MULTER_MODULE_ID, + useValue: randomStringGenerator() + } + ], + exports: [MULTER_MODULE_OPTIONS] + }; + } + static createAsyncProviders(options) { + if (options.useExisting || options.useFactory) { + return [this.createAsyncOptionsProvider(options)]; + } + return [ + this.createAsyncOptionsProvider(options), + { + provide: options.useClass, + useClass: options.useClass + } + ]; + } + static createAsyncOptionsProvider(options) { + if (options.useFactory) { + return { + provide: MULTER_MODULE_OPTIONS, + useFactory: options.useFactory, + inject: options.inject || [] + }; + } + return { + provide: MULTER_MODULE_OPTIONS, + useFactory: /* @__PURE__ */ __name(async (optionsFactory) => optionsFactory.createMulterOptions(), "useFactory"), + inject: [options.useExisting || options.useClass] + }; + } + }; + MulterModule = MulterModule_1 = __decorate([ + Module({}) + ], MulterModule); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/index.js +var init_multer = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/multer/index.js"() { + init_interceptors2(); + init_interfaces3(); + init_multer_module(); + } +}); + +// ../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/index.js +var init_platform_express = __esm({ + "../../node_modules/.pnpm/@nestjs+platform-express@12_3e713911c21b6500374058e65a37060a/node_modules/@nestjs/platform-express/index.js"() { + init_adapters2(); + init_interfaces2(); + init_multer(); + } +}); + +export { + APP_GUARD, + APP_FILTER, + Reflector, + require_cookie, + ExpressAdapter, + AnyFilesInterceptor, + FileFieldsInterceptor, + FileInterceptor, + FilesInterceptor, + NoFilesInterceptor, + MulterModule, + init_platform_express, + NestFactory, + core_exports, + init_core +}; diff --git a/apps/api/.output/dist/chunks/es5-NIUGVEY6.js b/apps/api/.output/dist/chunks/es5-NIUGVEY6.js new file mode 100644 index 0000000..86339a3 --- /dev/null +++ b/apps/api/.output/dist/chunks/es5-NIUGVEY6.js @@ -0,0 +1,828 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + __commonJS, + __name +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/bowser@2.14.1/node_modules/bowser/es5.js +var require_es5 = __commonJS({ + "../../node_modules/.pnpm/bowser@2.14.1/node_modules/bowser/es5.js"(exports, module) { + !(function(e, t) { + "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.bowser = t() : e.bowser = t(); + })(exports, (function() { + return (function(e) { + var t = {}; + function r(i) { + if (t[i]) return t[i].exports; + var n = t[i] = { i, l: false, exports: {} }; + return e[i].call(n.exports, n, n.exports, r), n.l = true, n.exports; + } + __name(r, "r"); + return r.m = e, r.c = t, r.d = function(e2, t2, i) { + r.o(e2, t2) || Object.defineProperty(e2, t2, { enumerable: true, get: i }); + }, r.r = function(e2) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e2, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e2, "__esModule", { value: true }); + }, r.t = function(e2, t2) { + if (1 & t2 && (e2 = r(e2)), 8 & t2) return e2; + if (4 & t2 && "object" == typeof e2 && e2 && e2.__esModule) return e2; + var i = /* @__PURE__ */ Object.create(null); + if (r.r(i), Object.defineProperty(i, "default", { enumerable: true, value: e2 }), 2 & t2 && "string" != typeof e2) for (var n in e2) r.d(i, n, function(t3) { + return e2[t3]; + }.bind(null, n)); + return i; + }, r.n = function(e2) { + var t2 = e2 && e2.__esModule ? function() { + return e2.default; + } : function() { + return e2; + }; + return r.d(t2, "a", t2), t2; + }, r.o = function(e2, t2) { + return Object.prototype.hasOwnProperty.call(e2, t2); + }, r.p = "", r(r.s = 90); + })({ 17: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i = r(18), n = (function() { + function e2() { + } + __name(e2, "e"); + return e2.getFirstMatch = function(e3, t2) { + var r2 = t2.match(e3); + return r2 && r2.length > 0 && r2[1] || ""; + }, e2.getSecondMatch = function(e3, t2) { + var r2 = t2.match(e3); + return r2 && r2.length > 1 && r2[2] || ""; + }, e2.matchAndReturnConst = function(e3, t2, r2) { + if (e3.test(t2)) return r2; + }, e2.getWindowsVersionName = function(e3) { + switch (e3) { + case "NT": + return "NT"; + case "XP": + return "XP"; + case "NT 5.0": + return "2000"; + case "NT 5.1": + return "XP"; + case "NT 5.2": + return "2003"; + case "NT 6.0": + return "Vista"; + case "NT 6.1": + return "7"; + case "NT 6.2": + return "8"; + case "NT 6.3": + return "8.1"; + case "NT 10.0": + return "10"; + default: + return; + } + }, e2.getMacOSVersionName = function(e3) { + var t2 = e3.split(".").splice(0, 2).map((function(e4) { + return parseInt(e4, 10) || 0; + })); + t2.push(0); + var r2 = t2[0], i2 = t2[1]; + if (10 === r2) switch (i2) { + case 5: + return "Leopard"; + case 6: + return "Snow Leopard"; + case 7: + return "Lion"; + case 8: + return "Mountain Lion"; + case 9: + return "Mavericks"; + case 10: + return "Yosemite"; + case 11: + return "El Capitan"; + case 12: + return "Sierra"; + case 13: + return "High Sierra"; + case 14: + return "Mojave"; + case 15: + return "Catalina"; + default: + return; + } + switch (r2) { + case 11: + return "Big Sur"; + case 12: + return "Monterey"; + case 13: + return "Ventura"; + case 14: + return "Sonoma"; + case 15: + return "Sequoia"; + default: + return; + } + }, e2.getAndroidVersionName = function(e3) { + var t2 = e3.split(".").splice(0, 2).map((function(e4) { + return parseInt(e4, 10) || 0; + })); + if (t2.push(0), !(1 === t2[0] && t2[1] < 5)) return 1 === t2[0] && t2[1] < 6 ? "Cupcake" : 1 === t2[0] && t2[1] >= 6 ? "Donut" : 2 === t2[0] && t2[1] < 2 ? "Eclair" : 2 === t2[0] && 2 === t2[1] ? "Froyo" : 2 === t2[0] && t2[1] > 2 ? "Gingerbread" : 3 === t2[0] ? "Honeycomb" : 4 === t2[0] && t2[1] < 1 ? "Ice Cream Sandwich" : 4 === t2[0] && t2[1] < 4 ? "Jelly Bean" : 4 === t2[0] && t2[1] >= 4 ? "KitKat" : 5 === t2[0] ? "Lollipop" : 6 === t2[0] ? "Marshmallow" : 7 === t2[0] ? "Nougat" : 8 === t2[0] ? "Oreo" : 9 === t2[0] ? "Pie" : void 0; + }, e2.getVersionPrecision = function(e3) { + return e3.split(".").length; + }, e2.compareVersions = function(t2, r2, i2) { + void 0 === i2 && (i2 = false); + var n2 = e2.getVersionPrecision(t2), a = e2.getVersionPrecision(r2), o = Math.max(n2, a), s = 0, u = e2.map([t2, r2], (function(t3) { + var r3 = o - e2.getVersionPrecision(t3), i3 = t3 + new Array(r3 + 1).join(".0"); + return e2.map(i3.split("."), (function(e3) { + return new Array(20 - e3.length).join("0") + e3; + })).reverse(); + })); + for (i2 && (s = o - Math.min(n2, a)), o -= 1; o >= s; ) { + if (u[0][o] > u[1][o]) return 1; + if (u[0][o] === u[1][o]) { + if (o === s) return 0; + o -= 1; + } else if (u[0][o] < u[1][o]) return -1; + } + }, e2.map = function(e3, t2) { + var r2, i2 = []; + if (Array.prototype.map) return Array.prototype.map.call(e3, t2); + for (r2 = 0; r2 < e3.length; r2 += 1) i2.push(t2(e3[r2])); + return i2; + }, e2.find = function(e3, t2) { + var r2, i2; + if (Array.prototype.find) return Array.prototype.find.call(e3, t2); + for (r2 = 0, i2 = e3.length; r2 < i2; r2 += 1) { + var n2 = e3[r2]; + if (t2(n2, r2)) return n2; + } + }, e2.assign = function(e3) { + for (var t2, r2, i2 = e3, n2 = arguments.length, a = new Array(n2 > 1 ? n2 - 1 : 0), o = 1; o < n2; o++) a[o - 1] = arguments[o]; + if (Object.assign) return Object.assign.apply(Object, [e3].concat(a)); + var s = /* @__PURE__ */ __name(function() { + var e4 = a[t2]; + "object" == typeof e4 && null !== e4 && Object.keys(e4).forEach((function(t3) { + i2[t3] = e4[t3]; + })); + }, "s"); + for (t2 = 0, r2 = a.length; t2 < r2; t2 += 1) s(); + return e3; + }, e2.getBrowserAlias = function(e3) { + return i.BROWSER_ALIASES_MAP[e3]; + }, e2.getBrowserTypeByAlias = function(e3) { + return i.BROWSER_MAP[e3] || ""; + }, e2; + })(); + t.default = n, e.exports = t.default; + }, 18: function(e, t, r) { + "use strict"; + t.__esModule = true, t.ENGINE_MAP = t.OS_MAP = t.PLATFORMS_MAP = t.BROWSER_MAP = t.BROWSER_ALIASES_MAP = void 0; + t.BROWSER_ALIASES_MAP = { AmazonBot: "amazonbot", "Amazon Silk": "amazon_silk", "Android Browser": "android", BaiduSpider: "baiduspider", Bada: "bada", BingCrawler: "bingcrawler", Brave: "brave", BlackBerry: "blackberry", "ChatGPT-User": "chatgpt_user", Chrome: "chrome", ClaudeBot: "claudebot", Chromium: "chromium", Diffbot: "diffbot", DuckDuckBot: "duckduckbot", DuckDuckGo: "duckduckgo", Electron: "electron", Epiphany: "epiphany", FacebookExternalHit: "facebookexternalhit", Firefox: "firefox", Focus: "focus", Generic: "generic", "Google Search": "google_search", Googlebot: "googlebot", GPTBot: "gptbot", "Internet Explorer": "ie", InternetArchiveCrawler: "internetarchivecrawler", "K-Meleon": "k_meleon", LibreWolf: "librewolf", Linespider: "linespider", Maxthon: "maxthon", "Meta-ExternalAds": "meta_externalads", "Meta-ExternalAgent": "meta_externalagent", "Meta-ExternalFetcher": "meta_externalfetcher", "Meta-WebIndexer": "meta_webindexer", "Microsoft Edge": "edge", "MZ Browser": "mz", "NAVER Whale Browser": "naver", "OAI-SearchBot": "oai_searchbot", Omgilibot: "omgilibot", Opera: "opera", "Opera Coast": "opera_coast", "Pale Moon": "pale_moon", PerplexityBot: "perplexitybot", "Perplexity-User": "perplexity_user", PhantomJS: "phantomjs", PingdomBot: "pingdombot", Puffin: "puffin", QQ: "qq", QQLite: "qqlite", QupZilla: "qupzilla", Roku: "roku", Safari: "safari", Sailfish: "sailfish", "Samsung Internet for Android": "samsung_internet", SlackBot: "slackbot", SeaMonkey: "seamonkey", Sleipnir: "sleipnir", "Sogou Browser": "sogou", Swing: "swing", Tizen: "tizen", "UC Browser": "uc", Vivaldi: "vivaldi", "WebOS Browser": "webos", WeChat: "wechat", YahooSlurp: "yahooslurp", "Yandex Browser": "yandex", YandexBot: "yandexbot", YouBot: "youbot" }; + t.BROWSER_MAP = { amazonbot: "AmazonBot", amazon_silk: "Amazon Silk", android: "Android Browser", baiduspider: "BaiduSpider", bada: "Bada", bingcrawler: "BingCrawler", blackberry: "BlackBerry", brave: "Brave", chatgpt_user: "ChatGPT-User", chrome: "Chrome", claudebot: "ClaudeBot", chromium: "Chromium", diffbot: "Diffbot", duckduckbot: "DuckDuckBot", duckduckgo: "DuckDuckGo", edge: "Microsoft Edge", electron: "Electron", epiphany: "Epiphany", facebookexternalhit: "FacebookExternalHit", firefox: "Firefox", focus: "Focus", generic: "Generic", google_search: "Google Search", googlebot: "Googlebot", gptbot: "GPTBot", ie: "Internet Explorer", internetarchivecrawler: "InternetArchiveCrawler", k_meleon: "K-Meleon", librewolf: "LibreWolf", linespider: "Linespider", maxthon: "Maxthon", meta_externalads: "Meta-ExternalAds", meta_externalagent: "Meta-ExternalAgent", meta_externalfetcher: "Meta-ExternalFetcher", meta_webindexer: "Meta-WebIndexer", mz: "MZ Browser", naver: "NAVER Whale Browser", oai_searchbot: "OAI-SearchBot", omgilibot: "Omgilibot", opera: "Opera", opera_coast: "Opera Coast", pale_moon: "Pale Moon", perplexitybot: "PerplexityBot", perplexity_user: "Perplexity-User", phantomjs: "PhantomJS", pingdombot: "PingdomBot", puffin: "Puffin", qq: "QQ Browser", qqlite: "QQ Browser Lite", qupzilla: "QupZilla", roku: "Roku", safari: "Safari", sailfish: "Sailfish", samsung_internet: "Samsung Internet for Android", seamonkey: "SeaMonkey", slackbot: "SlackBot", sleipnir: "Sleipnir", sogou: "Sogou Browser", swing: "Swing", tizen: "Tizen", uc: "UC Browser", vivaldi: "Vivaldi", webos: "WebOS Browser", wechat: "WeChat", yahooslurp: "YahooSlurp", yandex: "Yandex Browser", yandexbot: "YandexBot", youbot: "YouBot" }; + t.PLATFORMS_MAP = { bot: "bot", desktop: "desktop", mobile: "mobile", tablet: "tablet", tv: "tv" }; + t.OS_MAP = { Android: "Android", Bada: "Bada", BlackBerry: "BlackBerry", ChromeOS: "Chrome OS", HarmonyOS: "HarmonyOS", iOS: "iOS", Linux: "Linux", MacOS: "macOS", PlayStation4: "PlayStation 4", Roku: "Roku", Tizen: "Tizen", WebOS: "WebOS", Windows: "Windows", WindowsPhone: "Windows Phone" }; + t.ENGINE_MAP = { Blink: "Blink", EdgeHTML: "EdgeHTML", Gecko: "Gecko", Presto: "Presto", Trident: "Trident", WebKit: "WebKit" }; + }, 90: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i, n = (i = r(91)) && i.__esModule ? i : { default: i }, a = r(18); + function o(e2, t2) { + for (var r2 = 0; r2 < t2.length; r2++) { + var i2 = t2[r2]; + i2.enumerable = i2.enumerable || false, i2.configurable = true, "value" in i2 && (i2.writable = true), Object.defineProperty(e2, i2.key, i2); + } + } + __name(o, "o"); + var s = (function() { + function e2() { + } + __name(e2, "e"); + var t2, r2, i2; + return e2.getParser = function(e3, t3, r3) { + if (void 0 === t3 && (t3 = false), void 0 === r3 && (r3 = null), "string" != typeof e3) throw new Error("UserAgent should be a string"); + return new n.default(e3, t3, r3); + }, e2.parse = function(e3, t3) { + return void 0 === t3 && (t3 = null), new n.default(e3, t3).getResult(); + }, t2 = e2, i2 = [{ key: "BROWSER_MAP", get: /* @__PURE__ */ __name(function() { + return a.BROWSER_MAP; + }, "get") }, { key: "ENGINE_MAP", get: /* @__PURE__ */ __name(function() { + return a.ENGINE_MAP; + }, "get") }, { key: "OS_MAP", get: /* @__PURE__ */ __name(function() { + return a.OS_MAP; + }, "get") }, { key: "PLATFORMS_MAP", get: /* @__PURE__ */ __name(function() { + return a.PLATFORMS_MAP; + }, "get") }], (r2 = null) && o(t2.prototype, r2), i2 && o(t2, i2), e2; + })(); + t.default = s, e.exports = t.default; + }, 91: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i = u(r(92)), n = u(r(93)), a = u(r(94)), o = u(r(95)), s = u(r(17)); + function u(e2) { + return e2 && e2.__esModule ? e2 : { default: e2 }; + } + __name(u, "u"); + var d = (function() { + function e2(e3, t3, r2) { + if (void 0 === t3 && (t3 = false), void 0 === r2 && (r2 = null), null == e3 || "" === e3) throw new Error("UserAgent parameter can't be empty"); + this._ua = e3; + var i2 = false; + "boolean" == typeof t3 ? (i2 = t3, this._hints = r2) : this._hints = null != t3 && "object" == typeof t3 ? t3 : null, this.parsedResult = {}, true !== i2 && this.parse(); + } + __name(e2, "e"); + var t2 = e2.prototype; + return t2.getHints = function() { + return this._hints; + }, t2.hasBrand = function(e3) { + if (!this._hints || !Array.isArray(this._hints.brands)) return false; + var t3 = e3.toLowerCase(); + return this._hints.brands.some((function(e4) { + return e4.brand && e4.brand.toLowerCase() === t3; + })); + }, t2.getBrandVersion = function(e3) { + if (this._hints && Array.isArray(this._hints.brands)) { + var t3 = e3.toLowerCase(), r2 = this._hints.brands.find((function(e4) { + return e4.brand && e4.brand.toLowerCase() === t3; + })); + return r2 ? r2.version : void 0; + } + }, t2.getUA = function() { + return this._ua; + }, t2.test = function(e3) { + return e3.test(this._ua); + }, t2.parseBrowser = function() { + var e3 = this; + this.parsedResult.browser = {}; + var t3 = s.default.find(i.default, (function(t4) { + if ("function" == typeof t4.test) return t4.test(e3); + if (Array.isArray(t4.test)) return t4.test.some((function(t5) { + return e3.test(t5); + })); + throw new Error("Browser's test function is not valid"); + })); + return t3 && (this.parsedResult.browser = t3.describe(this.getUA(), this)), this.parsedResult.browser; + }, t2.getBrowser = function() { + return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser(); + }, t2.getBrowserName = function(e3) { + return e3 ? String(this.getBrowser().name).toLowerCase() || "" : this.getBrowser().name || ""; + }, t2.getBrowserVersion = function() { + return this.getBrowser().version; + }, t2.getOS = function() { + return this.parsedResult.os ? this.parsedResult.os : this.parseOS(); + }, t2.parseOS = function() { + var e3 = this; + this.parsedResult.os = {}; + var t3 = s.default.find(n.default, (function(t4) { + if ("function" == typeof t4.test) return t4.test(e3); + if (Array.isArray(t4.test)) return t4.test.some((function(t5) { + return e3.test(t5); + })); + throw new Error("Browser's test function is not valid"); + })); + return t3 && (this.parsedResult.os = t3.describe(this.getUA())), this.parsedResult.os; + }, t2.getOSName = function(e3) { + var t3 = this.getOS().name; + return e3 ? String(t3).toLowerCase() || "" : t3 || ""; + }, t2.getOSVersion = function() { + return this.getOS().version; + }, t2.getPlatform = function() { + return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform(); + }, t2.getPlatformType = function(e3) { + void 0 === e3 && (e3 = false); + var t3 = this.getPlatform().type; + return e3 ? String(t3).toLowerCase() || "" : t3 || ""; + }, t2.parsePlatform = function() { + var e3 = this; + this.parsedResult.platform = {}; + var t3 = s.default.find(a.default, (function(t4) { + if ("function" == typeof t4.test) return t4.test(e3); + if (Array.isArray(t4.test)) return t4.test.some((function(t5) { + return e3.test(t5); + })); + throw new Error("Browser's test function is not valid"); + })); + return t3 && (this.parsedResult.platform = t3.describe(this.getUA())), this.parsedResult.platform; + }, t2.getEngine = function() { + return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine(); + }, t2.getEngineName = function(e3) { + return e3 ? String(this.getEngine().name).toLowerCase() || "" : this.getEngine().name || ""; + }, t2.parseEngine = function() { + var e3 = this; + this.parsedResult.engine = {}; + var t3 = s.default.find(o.default, (function(t4) { + if ("function" == typeof t4.test) return t4.test(e3); + if (Array.isArray(t4.test)) return t4.test.some((function(t5) { + return e3.test(t5); + })); + throw new Error("Browser's test function is not valid"); + })); + return t3 && (this.parsedResult.engine = t3.describe(this.getUA())), this.parsedResult.engine; + }, t2.parse = function() { + return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this; + }, t2.getResult = function() { + return s.default.assign({}, this.parsedResult); + }, t2.satisfies = function(e3) { + var t3 = this, r2 = {}, i2 = 0, n2 = {}, a2 = 0; + if (Object.keys(e3).forEach((function(t4) { + var o3 = e3[t4]; + "string" == typeof o3 ? (n2[t4] = o3, a2 += 1) : "object" == typeof o3 && (r2[t4] = o3, i2 += 1); + })), i2 > 0) { + var o2 = Object.keys(r2), u2 = s.default.find(o2, (function(e4) { + return t3.isOS(e4); + })); + if (u2) { + var d2 = this.satisfies(r2[u2]); + if (void 0 !== d2) return d2; + } + var c = s.default.find(o2, (function(e4) { + return t3.isPlatform(e4); + })); + if (c) { + var f = this.satisfies(r2[c]); + if (void 0 !== f) return f; + } + } + if (a2 > 0) { + var l = Object.keys(n2), b = s.default.find(l, (function(e4) { + return t3.isBrowser(e4, true); + })); + if (void 0 !== b) return this.compareVersion(n2[b]); + } + }, t2.isBrowser = function(e3, t3) { + void 0 === t3 && (t3 = false); + var r2 = this.getBrowserName().toLowerCase(), i2 = e3.toLowerCase(), n2 = s.default.getBrowserTypeByAlias(i2); + return t3 && n2 && (i2 = n2.toLowerCase()), i2 === r2; + }, t2.compareVersion = function(e3) { + var t3 = [0], r2 = e3, i2 = false, n2 = this.getBrowserVersion(); + if ("string" == typeof n2) return ">" === e3[0] || "<" === e3[0] ? (r2 = e3.substr(1), "=" === e3[1] ? (i2 = true, r2 = e3.substr(2)) : t3 = [], ">" === e3[0] ? t3.push(1) : t3.push(-1)) : "=" === e3[0] ? r2 = e3.substr(1) : "~" === e3[0] && (i2 = true, r2 = e3.substr(1)), t3.indexOf(s.default.compareVersions(n2, r2, i2)) > -1; + }, t2.isOS = function(e3) { + return this.getOSName(true) === String(e3).toLowerCase(); + }, t2.isPlatform = function(e3) { + return this.getPlatformType(true) === String(e3).toLowerCase(); + }, t2.isEngine = function(e3) { + return this.getEngineName(true) === String(e3).toLowerCase(); + }, t2.is = function(e3, t3) { + return void 0 === t3 && (t3 = false), this.isBrowser(e3, t3) || this.isOS(e3) || this.isPlatform(e3); + }, t2.some = function(e3) { + var t3 = this; + return void 0 === e3 && (e3 = []), e3.some((function(e4) { + return t3.is(e4); + })); + }, e2; + })(); + t.default = d, e.exports = t.default; + }, 92: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i, n = (i = r(17)) && i.__esModule ? i : { default: i }; + var a = /version\/(\d+(\.?_?\d+)+)/i, o = [{ test: [/gptbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "GPTBot" }, r2 = n.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/chatgpt-user/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "ChatGPT-User" }, r2 = n.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/oai-searchbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "OAI-SearchBot" }, r2 = n.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "ClaudeBot" }, r2 = n.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/omgilibot/i, /webzio-extended/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Omgilibot" }, r2 = n.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/diffbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Diffbot" }, r2 = n.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/perplexitybot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "PerplexityBot" }, r2 = n.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/perplexity-user/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Perplexity-User" }, r2 = n.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/youbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "YouBot" }, r2 = n.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/meta-webindexer/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Meta-WebIndexer" }, r2 = n.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/meta-externalads/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Meta-ExternalAds" }, r2 = n.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/meta-externalagent/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Meta-ExternalAgent" }, r2 = n.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/meta-externalfetcher/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Meta-ExternalFetcher" }, r2 = n.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/googlebot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Googlebot" }, r2 = n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/linespider/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Linespider" }, r2 = n.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/amazonbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "AmazonBot" }, r2 = n.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/bingbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "BingCrawler" }, r2 = n.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/baiduspider/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "BaiduSpider" }, r2 = n.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/duckduckbot/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "DuckDuckBot" }, r2 = n.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/ia_archiver/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "InternetArchiveCrawler" }, r2 = n.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/facebookexternalhit/i, /facebookcatalog/i], describe: /* @__PURE__ */ __name(function() { + return { name: "FacebookExternalHit" }; + }, "describe") }, { test: [/slackbot/i, /slack-imgProxy/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "SlackBot" }, r2 = n.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/yahoo!?[\s/]*slurp/i], describe: /* @__PURE__ */ __name(function() { + return { name: "YahooSlurp" }; + }, "describe") }, { test: [/yandexbot/i, /yandexmobilebot/i], describe: /* @__PURE__ */ __name(function() { + return { name: "YandexBot" }; + }, "describe") }, { test: [/pingdom/i], describe: /* @__PURE__ */ __name(function() { + return { name: "PingdomBot" }; + }, "describe") }, { test: [/opera/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Opera" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/opr\/|opios/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Opera" }, r2 = n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/SamsungBrowser/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Samsung Internet for Android" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/Whale/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "NAVER Whale Browser" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/PaleMoon/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Pale Moon" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/MZBrowser/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "MZ Browser" }, r2 = n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/focus/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Focus" }, r2 = n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/swing/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Swing" }, r2 = n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/coast/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Opera Coast" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/opt\/\d+(?:.?_?\d+)+/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Opera Touch" }, r2 = n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/yabrowser/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Yandex Browser" }, r2 = n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/ucbrowser/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "UC Browser" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/Maxthon|mxios/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Maxthon" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/epiphany/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Epiphany" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/puffin/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Puffin" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/sleipnir/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Sleipnir" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/k-meleon/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "K-Meleon" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/micromessenger/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "WeChat" }, r2 = n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/qqbrowser/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: /qqbrowserlite/i.test(e2) ? "QQ Browser Lite" : "QQ Browser" }, r2 = n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/msie|trident/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Internet Explorer" }, r2 = n.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/\sedg\//i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Microsoft Edge" }, r2 = n.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/edg([ea]|ios)/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Microsoft Edge" }, r2 = n.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/vivaldi/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Vivaldi" }, r2 = n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/seamonkey/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "SeaMonkey" }, r2 = n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/sailfish/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Sailfish" }, r2 = n.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/silk/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Amazon Silk" }, r2 = n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/phantom/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "PhantomJS" }, r2 = n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/slimerjs/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "SlimerJS" }, r2 = n.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "BlackBerry" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/(web|hpw)[o0]s/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "WebOS Browser" }, r2 = n.default.getFirstMatch(a, e2) || n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/bada/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Bada" }, r2 = n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/tizen/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Tizen" }, r2 = n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/qupzilla/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "QupZilla" }, r2 = n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/librewolf/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "LibreWolf" }, r2 = n.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/firefox|iceweasel|fxios/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Firefox" }, r2 = n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/electron/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Electron" }, r2 = n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/sogoumobilebrowser/i, /metasr/i, /se 2\.[x]/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Sogou Browser" }, r2 = n.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i, e2), i2 = n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e2), a2 = n.default.getFirstMatch(/se ([\d.]+)x/i, e2), o2 = r2 || i2 || a2; + return o2 && (t2.version = o2), t2; + }, "describe") }, { test: [/MiuiBrowser/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Miui" }, r2 = n.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return !!e2.hasBrand("DuckDuckGo") || e2.test(/\sDdg\/[\d.]+$/i); + }, "test"), describe: /* @__PURE__ */ __name(function(e2, t2) { + var r2 = { name: "DuckDuckGo" }; + if (t2) { + var i2 = t2.getBrandVersion("DuckDuckGo"); + if (i2) return r2.version = i2, r2; + } + var a2 = n.default.getFirstMatch(/\sDdg\/([\d.]+)$/i, e2); + return a2 && (r2.version = a2), r2; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return e2.hasBrand("Brave"); + }, "test"), describe: /* @__PURE__ */ __name(function(e2, t2) { + var r2 = { name: "Brave" }; + if (t2) { + var i2 = t2.getBrandVersion("Brave"); + if (i2) return r2.version = i2, r2; + } + return r2; + }, "describe") }, { test: [/chromium/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Chromium" }, r2 = n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, e2) || n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/chrome|crios|crmo/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Chrome" }, r2 = n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/GSA/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Google Search" }, r2 = n.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + var t2 = !e2.test(/like android/i), r2 = e2.test(/android/i); + return t2 && r2; + }, "test"), describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Android Browser" }, r2 = n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/playstation 4/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "PlayStation 4" }, r2 = n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/safari|applewebkit/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: "Safari" }, r2 = n.default.getFirstMatch(a, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/.*/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = -1 !== e2.search("\\(") ? /^(.*)\/(.*)[ \t]\((.*)/ : /^(.*)\/(.*) /; + return { name: n.default.getFirstMatch(t2, e2), version: n.default.getSecondMatch(t2, e2) }; + }, "describe") }]; + t.default = o, e.exports = t.default; + }, 93: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i, n = (i = r(17)) && i.__esModule ? i : { default: i }, a = r(18); + var o = [{ test: [/Roku\/DVP/], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, e2); + return { name: a.OS_MAP.Roku, version: t2 }; + }, "describe") }, { test: [/windows phone/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, e2); + return { name: a.OS_MAP.WindowsPhone, version: t2 }; + }, "describe") }, { test: [/windows /i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, e2), r2 = n.default.getWindowsVersionName(t2); + return { name: a.OS_MAP.Windows, version: t2, versionName: r2 }; + }, "describe") }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: a.OS_MAP.iOS }, r2 = n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/macintosh/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, e2).replace(/[_\s]/g, "."), r2 = n.default.getMacOSVersionName(t2), i2 = { name: a.OS_MAP.MacOS, version: t2 }; + return r2 && (i2.versionName = r2), i2; + }, "describe") }, { test: [/(ipod|iphone|ipad)/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, e2).replace(/[_\s]/g, "."); + return { name: a.OS_MAP.iOS, version: t2 }; + }, "describe") }, { test: [/OpenHarmony/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i, e2); + return { name: a.OS_MAP.HarmonyOS, version: t2 }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + var t2 = !e2.test(/like android/i), r2 = e2.test(/android/i); + return t2 && r2; + }, "test"), describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, e2), r2 = n.default.getAndroidVersionName(t2), i2 = { name: a.OS_MAP.Android, version: t2 }; + return r2 && (i2.versionName = r2), i2; + }, "describe") }, { test: [/(web|hpw)[o0]s/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, e2), r2 = { name: a.OS_MAP.WebOS }; + return t2 && t2.length && (r2.version = t2), r2; + }, "describe") }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, e2) || n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, e2) || n.default.getFirstMatch(/\bbb(\d+)/i, e2); + return { name: a.OS_MAP.BlackBerry, version: t2 }; + }, "describe") }, { test: [/bada/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, e2); + return { name: a.OS_MAP.Bada, version: t2 }; + }, "describe") }, { test: [/tizen/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, e2); + return { name: a.OS_MAP.Tizen, version: t2 }; + }, "describe") }, { test: [/linux/i], describe: /* @__PURE__ */ __name(function() { + return { name: a.OS_MAP.Linux }; + }, "describe") }, { test: [/CrOS/], describe: /* @__PURE__ */ __name(function() { + return { name: a.OS_MAP.ChromeOS }; + }, "describe") }, { test: [/PlayStation 4/], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, e2); + return { name: a.OS_MAP.PlayStation4, version: t2 }; + }, "describe") }]; + t.default = o, e.exports = t.default; + }, 94: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i, n = (i = r(17)) && i.__esModule ? i : { default: i }, a = r(18); + var o = [{ test: [/googlebot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Google" }; + }, "describe") }, { test: [/linespider/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Line" }; + }, "describe") }, { test: [/amazonbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Amazon" }; + }, "describe") }, { test: [/gptbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "OpenAI" }; + }, "describe") }, { test: [/chatgpt-user/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "OpenAI" }; + }, "describe") }, { test: [/oai-searchbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "OpenAI" }; + }, "describe") }, { test: [/baiduspider/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Baidu" }; + }, "describe") }, { test: [/bingbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Bing" }; + }, "describe") }, { test: [/duckduckbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "DuckDuckGo" }; + }, "describe") }, { test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Anthropic" }; + }, "describe") }, { test: [/omgilibot/i, /webzio-extended/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Webz.io" }; + }, "describe") }, { test: [/diffbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Diffbot" }; + }, "describe") }, { test: [/perplexitybot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Perplexity AI" }; + }, "describe") }, { test: [/perplexity-user/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Perplexity AI" }; + }, "describe") }, { test: [/youbot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "You.com" }; + }, "describe") }, { test: [/ia_archiver/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Internet Archive" }; + }, "describe") }, { test: [/meta-webindexer/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Meta" }; + }, "describe") }, { test: [/meta-externalads/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Meta" }; + }, "describe") }, { test: [/meta-externalagent/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Meta" }; + }, "describe") }, { test: [/meta-externalfetcher/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Meta" }; + }, "describe") }, { test: [/facebookexternalhit/i, /facebookcatalog/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Meta" }; + }, "describe") }, { test: [/slackbot/i, /slack-imgProxy/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Slack" }; + }, "describe") }, { test: [/yahoo/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Yahoo" }; + }, "describe") }, { test: [/yandexbot/i, /yandexmobilebot/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Yandex" }; + }, "describe") }, { test: [/pingdom/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.bot, vendor: "Pingdom" }; + }, "describe") }, { test: [/huawei/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/(can-l01)/i, e2) && "Nova", r2 = { type: a.PLATFORMS_MAP.mobile, vendor: "Huawei" }; + return t2 && (r2.model = t2), r2; + }, "describe") }, { test: [/nexus\s*(?:7|8|9|10).*/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet, vendor: "Nexus" }; + }, "describe") }, { test: [/ipad/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet, vendor: "Apple", model: "iPad" }; + }, "describe") }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet, vendor: "Apple", model: "iPad" }; + }, "describe") }, { test: [/kftt build/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet, vendor: "Amazon", model: "Kindle Fire HD 7" }; + }, "describe") }, { test: [/silk/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet, vendor: "Amazon" }; + }, "describe") }, { test: [/tablet(?! pc)/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + var t2 = e2.test(/ipod|iphone/i), r2 = e2.test(/like (ipod|iphone)/i); + return t2 && !r2; + }, "test"), describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/(ipod|iphone)/i, e2); + return { type: a.PLATFORMS_MAP.mobile, vendor: "Apple", model: t2 }; + }, "describe") }, { test: [/nexus\s*[0-6].*/i, /galaxy nexus/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.mobile, vendor: "Nexus" }; + }, "describe") }, { test: [/Nokia/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = n.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i, e2), r2 = { type: a.PLATFORMS_MAP.mobile, vendor: "Nokia" }; + return t2 && (r2.model = t2), r2; + }, "describe") }, { test: [/[^-]mobi/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.mobile }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "blackberry" === e2.getBrowserName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.mobile, vendor: "BlackBerry" }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "bada" === e2.getBrowserName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.mobile }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "windows phone" === e2.getBrowserName(); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.mobile, vendor: "Microsoft" }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + var t2 = Number(String(e2.getOSVersion()).split(".")[0]); + return "android" === e2.getOSName(true) && t2 >= 3; + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tablet }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "android" === e2.getOSName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.mobile }; + }, "describe") }, { test: [/smart-?tv|smarttv/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tv }; + }, "describe") }, { test: [/netcast/i], describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tv }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "macos" === e2.getOSName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.desktop, vendor: "Apple" }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "windows" === e2.getOSName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.desktop }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "linux" === e2.getOSName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.desktop }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "playstation 4" === e2.getOSName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tv }; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return "roku" === e2.getOSName(true); + }, "test"), describe: /* @__PURE__ */ __name(function() { + return { type: a.PLATFORMS_MAP.tv }; + }, "describe") }]; + t.default = o, e.exports = t.default; + }, 95: function(e, t, r) { + "use strict"; + t.__esModule = true, t.default = void 0; + var i, n = (i = r(17)) && i.__esModule ? i : { default: i }, a = r(18); + var o = [{ test: /* @__PURE__ */ __name(function(e2) { + return "microsoft edge" === e2.getBrowserName(true); + }, "test"), describe: /* @__PURE__ */ __name(function(e2) { + if (/\sedg\//i.test(e2)) return { name: a.ENGINE_MAP.Blink }; + var t2 = n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, e2); + return { name: a.ENGINE_MAP.EdgeHTML, version: t2 }; + }, "describe") }, { test: [/trident/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: a.ENGINE_MAP.Trident }, r2 = n.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + return e2.test(/presto/i); + }, "test"), describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: a.ENGINE_MAP.Presto }, r2 = n.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: /* @__PURE__ */ __name(function(e2) { + var t2 = e2.test(/gecko/i), r2 = e2.test(/like gecko/i); + return t2 && !r2; + }, "test"), describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: a.ENGINE_MAP.Gecko }, r2 = n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }, { test: [/(apple)?webkit\/537\.36/i], describe: /* @__PURE__ */ __name(function() { + return { name: a.ENGINE_MAP.Blink }; + }, "describe") }, { test: [/(apple)?webkit/i], describe: /* @__PURE__ */ __name(function(e2) { + var t2 = { name: a.ENGINE_MAP.WebKit }, r2 = n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, e2); + return r2 && (t2.version = r2), t2; + }, "describe") }]; + t.default = o, e.exports = t.default; + } }); + })); + } +}); +export default require_es5(); diff --git a/apps/api/.output/dist/chunks/event-streams-IPK6VS6T.js b/apps/api/.output/dist/chunks/event-streams-IPK6VS6T.js new file mode 100644 index 0000000..9f9d6ba --- /dev/null +++ b/apps/api/.output/dist/chunks/event-streams-IPK6VS6T.js @@ -0,0 +1,44 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + EventStreamCodec, + EventStreamMarshaller, + EventStreamMarshaller2, + EventStreamSerde, + HeaderMarshaller, + Int64, + MessageDecoderStream, + MessageEncoderStream, + SmithyMessageDecoderStream, + SmithyMessageEncoderStream, + eventStreamSerdeProvider, + eventStreamSerdeProvider2, + getChunkedStream, + getMessageUnmarshaller, + getUnmarshalledStream, + init_event_streams, + iterableToReadableStream, + readableStreamToIterable, + resolveEventStreamSerdeConfig +} from "./chunk-6UPY3HEI.js"; +import "./chunk-T6GW54FI.js"; +init_event_streams(); +export { + EventStreamCodec, + EventStreamMarshaller2 as EventStreamMarshaller, + EventStreamSerde, + HeaderMarshaller, + Int64, + MessageDecoderStream, + MessageEncoderStream, + SmithyMessageDecoderStream, + SmithyMessageEncoderStream, + EventStreamMarshaller as UniversalEventStreamMarshaller, + eventStreamSerdeProvider2 as eventStreamSerdeProvider, + getChunkedStream, + getMessageUnmarshaller, + getUnmarshalledStream, + iterableToReadableStream, + readableStreamToIterable, + resolveEventStreamSerdeConfig, + eventStreamSerdeProvider as universalEventStreamSerdeProvider +}; diff --git a/apps/api/.output/dist/chunks/platform-express-MGQH3ALM.js b/apps/api/.output/dist/chunks/platform-express-MGQH3ALM.js new file mode 100644 index 0000000..18f9d42 --- /dev/null +++ b/apps/api/.output/dist/chunks/platform-express-MGQH3ALM.js @@ -0,0 +1,25 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + AnyFilesInterceptor, + ExpressAdapter, + FileFieldsInterceptor, + FileInterceptor, + FilesInterceptor, + MulterModule, + NoFilesInterceptor, + init_platform_express +} from "./chunk-XSOBN2CI.js"; +import "./chunk-BX2ML7LW.js"; +import "./chunk-C4DYPKAN.js"; +import "./chunk-A34KYKJP.js"; +import "./chunk-T6GW54FI.js"; +init_platform_express(); +export { + AnyFilesInterceptor, + ExpressAdapter, + FileFieldsInterceptor, + FileInterceptor, + FilesInterceptor, + MulterModule, + NoFilesInterceptor +}; diff --git a/apps/api/.output/dist/chunks/query_compiler_fast_bg.postgresql-RWS5SSGB.js b/apps/api/.output/dist/chunks/query_compiler_fast_bg.postgresql-RWS5SSGB.js new file mode 100644 index 0000000..c03be5b --- /dev/null +++ b/apps/api/.output/dist/chunks/query_compiler_fast_bg.postgresql-RWS5SSGB.js @@ -0,0 +1,349 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + __name +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/@prisma+client@7.10.1_prism_1fac53bcaa5c7503395b340f2e6f2cd9/node_modules/@prisma/client/runtime/query_compiler_fast_bg.postgresql.mjs +var h = /* @__PURE__ */ __name(() => { +}, "h"); +h.prototype = h; +var o; +function D(e) { + o = e; +} +__name(D, "D"); +var p = null; +function a() { + return (p === null || p.byteLength === 0) && (p = new Uint8Array(o.memory.buffer)), p; +} +__name(a, "a"); +var y = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }); +y.decode(); +var E = 2146435072; +var A = 0; +function T(e, t) { + return A += t, A >= E && (y = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }), y.decode(), A = t), y.decode(a().subarray(e, e + t)); +} +__name(T, "T"); +function m(e, t) { + return e = e >>> 0, T(e, t); +} +__name(m, "m"); +var f = 0; +var g = new TextEncoder(); +"encodeInto" in g || (g.encodeInto = function(e, t) { + const n = g.encode(e); + return t.set(n), { read: e.length, written: n.length }; +}); +function l(e, t, n) { + if (n === void 0) { + const i = g.encode(e), d = t(i.length, 1) >>> 0; + return a().subarray(d, d + i.length).set(i), f = i.length, d; + } + let _ = e.length, r = t(_, 1) >>> 0; + const s = a(); + let c = 0; + for (; c < _; c++) { + const i = e.charCodeAt(c); + if (i > 127) break; + s[r + c] = i; + } + if (c !== _) { + c !== 0 && (e = e.slice(c)), r = n(r, _, _ = c + e.length * 3, 1) >>> 0; + const i = a().subarray(r + c, r + _), d = g.encodeInto(e, i); + c += d.written, r = n(r, _, c, 1) >>> 0; + } + return f = c, r; +} +__name(l, "l"); +var b = null; +function u() { + return (b === null || b.buffer.detached === true || b.buffer.detached === void 0 && b.buffer !== o.memory.buffer) && (b = new DataView(o.memory.buffer)), b; +} +__name(u, "u"); +function x(e) { + return e == null; +} +__name(x, "x"); +function S(e) { + const t = typeof e; + if (t == "number" || t == "boolean" || e == null) return `${e}`; + if (t == "string") return `"${e}"`; + if (t == "symbol") { + const r = e.description; + return r == null ? "Symbol" : `Symbol(${r})`; + } + if (t == "function") { + const r = e.name; + return typeof r == "string" && r.length > 0 ? `Function(${r})` : "Function"; + } + if (Array.isArray(e)) { + const r = e.length; + let s = "["; + r > 0 && (s += S(e[0])); + for (let c = 1; c < r; c++) s += ", " + S(e[c]); + return s += "]", s; + } + const n = /\[object ([^\]]+)\]/.exec(toString.call(e)); + let _; + if (n && n.length > 1) _ = n[1]; + else return toString.call(e); + if (_ == "Object") try { + return "Object(" + JSON.stringify(e) + ")"; + } catch { + return "Object"; + } + return e instanceof Error ? `${e.name}: ${e.message} +${e.stack}` : _; +} +__name(S, "S"); +function M(e, t) { + return e = e >>> 0, a().subarray(e / 1, e / 1 + t); +} +__name(M, "M"); +function w(e) { + const t = o.__wbindgen_externrefs.get(e); + return o.__externref_table_dealloc(e), t; +} +__name(w, "w"); +var I = typeof FinalizationRegistry > "u" ? { register: /* @__PURE__ */ __name(() => { +}, "register"), unregister: /* @__PURE__ */ __name(() => { +}, "unregister") } : new FinalizationRegistry((e) => o.__wbg_querycompiler_free(e >>> 0, 1)); +var F = class { + static { + __name(this, "F"); + } + __destroy_into_raw() { + const t = this.__wbg_ptr; + return this.__wbg_ptr = 0, I.unregister(this), t; + } + free() { + const t = this.__destroy_into_raw(); + o.__wbg_querycompiler_free(t, 0); + } + compileBatch(t) { + const n = l(t, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = f, r = o.querycompiler_compileBatch(this.__wbg_ptr, n, _); + if (r[2]) throw w(r[1]); + return w(r[0]); + } + constructor(t) { + const n = o.querycompiler_new(t); + if (n[2]) throw w(n[1]); + return this.__wbg_ptr = n[0] >>> 0, I.register(this, this.__wbg_ptr, this), this; + } + compile(t) { + const n = l(t, o.__wbindgen_malloc, o.__wbindgen_realloc), _ = f, r = o.querycompiler_compile(this.__wbg_ptr, n, _); + if (r[2]) throw w(r[1]); + return w(r[0]); + } +}; +Symbol.dispose && (F.prototype[Symbol.dispose] = F.prototype.free); +function O(e, t) { + return Error(m(e, t)); +} +__name(O, "O"); +function B(e) { + return Number(e); +} +__name(B, "B"); +function N(e, t) { + const n = String(t), _ = l(n, o.__wbindgen_malloc, o.__wbindgen_realloc), r = f; + u().setInt32(e + 4 * 1, r, true), u().setInt32(e + 4 * 0, _, true); +} +__name(N, "N"); +function U(e) { + const t = e, n = typeof t == "boolean" ? t : void 0; + return x(n) ? 16777215 : n ? 1 : 0; +} +__name(U, "U"); +function R(e, t) { + const n = S(t), _ = l(n, o.__wbindgen_malloc, o.__wbindgen_realloc), r = f; + u().setInt32(e + 4 * 1, r, true), u().setInt32(e + 4 * 0, _, true); +} +__name(R, "R"); +function $(e, t) { + return e in t; +} +__name($, "$"); +function q(e) { + const t = e; + return typeof t == "object" && t !== null; +} +__name(q, "q"); +function C(e) { + return typeof e == "string"; +} +__name(C, "C"); +function k(e) { + return e === void 0; +} +__name(k, "k"); +function W(e, t) { + return e == t; +} +__name(W, "W"); +function V(e, t) { + const n = t, _ = typeof n == "number" ? n : void 0; + u().setFloat64(e + 8 * 1, x(_) ? 0 : _, true), u().setInt32(e + 4 * 0, !x(_), true); +} +__name(V, "V"); +function z(e, t) { + const n = t, _ = typeof n == "string" ? n : void 0; + var r = x(_) ? 0 : l(_, o.__wbindgen_malloc, o.__wbindgen_realloc), s = f; + u().setInt32(e + 4 * 1, s, true), u().setInt32(e + 4 * 0, r, true); +} +__name(z, "z"); +function L(e, t) { + throw new Error(m(e, t)); +} +__name(L, "L"); +function P(e) { + return Object.entries(e); +} +__name(P, "P"); +function Q(e) { + return e.getTime(); +} +__name(Q, "Q"); +function Y(e, t) { + return e[t >>> 0]; +} +__name(Y, "Y"); +function G(e, t) { + return e[t]; +} +__name(G, "G"); +function J(e) { + let t; + try { + t = e instanceof ArrayBuffer; + } catch { + t = false; + } + return t; +} +__name(J, "J"); +function X(e) { + let t; + try { + t = e instanceof Uint8Array; + } catch { + t = false; + } + return t; +} +__name(X, "X"); +function H(e) { + return Number.isSafeInteger(e); +} +__name(H, "H"); +function K(e) { + return e.length; +} +__name(K, "K"); +function Z(e) { + return e.length; +} +__name(Z, "Z"); +function v() { + return /* @__PURE__ */ new Date(); +} +__name(v, "v"); +function ee() { + return new Object(); +} +__name(ee, "ee"); +function te(e) { + return new Uint8Array(e); +} +__name(te, "te"); +function ne() { + return /* @__PURE__ */ new Map(); +} +__name(ne, "ne"); +function re() { + return new Array(); +} +__name(re, "re"); +function _e(e, t, n) { + Uint8Array.prototype.set.call(M(e, t), n); +} +__name(_e, "_e"); +function oe(e, t, n) { + e[t] = n; +} +__name(oe, "oe"); +function ce(e, t, n) { + return e.set(t, n); +} +__name(ce, "ce"); +function ie(e, t, n) { + e[t >>> 0] = n; +} +__name(ie, "ie"); +function se(e, t) { + global.PRISMA_WASM_PANIC_REGISTRY.set_message(m(e, t)); +} +__name(se, "se"); +function ue(e, t) { + return m(e, t); +} +__name(ue, "ue"); +function fe(e) { + return BigInt.asUintN(64, e); +} +__name(fe, "fe"); +function be(e) { + return e; +} +__name(be, "be"); +function de(e) { + return e; +} +__name(de, "de"); +function ae() { + const e = o.__wbindgen_externrefs, t = e.grow(4); + e.set(0, void 0), e.set(t + 0, void 0), e.set(t + 1, null), e.set(t + 2, true), e.set(t + 3, false); +} +__name(ae, "ae"); +export { + F as QueryCompiler, + O as __wbg_Error_e83987f665cf5504, + B as __wbg_Number_bb48ca12f395cd08, + N as __wbg_String_8f0eb39a4a4c2f66, + U as __wbg___wbindgen_boolean_get_6d5a1ee65bab5f68, + R as __wbg___wbindgen_debug_string_df47ffb5e35e6763, + $ as __wbg___wbindgen_in_bb933bd9e1b3bc0f, + q as __wbg___wbindgen_is_object_c818261d21f283a4, + C as __wbg___wbindgen_is_string_fbb76cb2940daafd, + k as __wbg___wbindgen_is_undefined_2d472862bd29a478, + W as __wbg___wbindgen_jsval_loose_eq_b664b38a2f582147, + V as __wbg___wbindgen_number_get_a20bf9b85341449d, + z as __wbg___wbindgen_string_get_e4f06c90489ad01b, + L as __wbg___wbindgen_throw_b855445ff6a94295, + P as __wbg_entries_e171b586f8f6bdbf, + Q as __wbg_getTime_14776bfb48a1bff9, + Y as __wbg_get_7bed016f185add81, + G as __wbg_get_with_ref_key_1dc361bd10053bfe, + J as __wbg_instanceof_ArrayBuffer_70beb1189ca63b38, + X as __wbg_instanceof_Uint8Array_20c8e73002f7af98, + H as __wbg_isSafeInteger_d216eda7911dde36, + K as __wbg_length_69bca3cb64fc8748, + Z as __wbg_length_cdd215e10d9dd507, + v as __wbg_new_0_f9740686d739025c, + ee as __wbg_new_1acc0b6eea89d040, + te as __wbg_new_5a79be3ab53b8aa5, + ne as __wbg_new_68651c719dcda04e, + re as __wbg_new_e17d9f43105b08be, + _e as __wbg_prototypesetcall_2a6620b6922694b2, + oe as __wbg_set_3f1d0b984ed272ed, + ce as __wbg_set_907fb406c34a251d, + ie as __wbg_set_c213c871859d6500, + se as __wbg_set_message_82ae475bb413aa5c, + D as __wbg_set_wasm, + ue as __wbindgen_cast_2241b6af4c4b2941, + fe as __wbindgen_cast_4625c577ab2ec9ee, + be as __wbindgen_cast_9ae0607507abb057, + de as __wbindgen_cast_d6cd19b81560fd6e, + ae as __wbindgen_init_externref_table +}; diff --git a/apps/api/.output/dist/chunks/query_compiler_fast_bg.postgresql.wasm-base64-5YP3ZLAU.js b/apps/api/.output/dist/chunks/query_compiler_fast_bg.postgresql.wasm-base64-5YP3ZLAU.js new file mode 100644 index 0000000..5e7e9b5 --- /dev/null +++ b/apps/api/.output/dist/chunks/query_compiler_fast_bg.postgresql.wasm-base64-5YP3ZLAU.js @@ -0,0 +1,8 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/@prisma+client@7.10.1_prism_1fac53bcaa5c7503395b340f2e6f2cd9/node_modules/@prisma/client/runtime/query_compiler_fast_bg.postgresql.wasm-base64.mjs +var wasm = "AGFzbQEAAAABtgRLYAN/f38Bf2ACf38Bf2ACf38AYAF/AGADf39/AGAEf39/fwBgBX9/f39/AGABfwF/YAZ/f39/f38AYAR/f39/AX9gAn9+AX9gB39/f39/f38AYAh/f39/f39/fwBgA35+fwF+YAF/AX5gAW8Bf2AFf39/f38Bf2AAAGACf34AYAABf2AJf39/f39/f39/AGAAA39/f2AAAW9gAn9vAGAFf39/fn8AYAR/f39+AGAHf39/f39/fwF/YAR+fn9/AX5gAX4Bf2ACf38Bb2ACb28Bf2ABbwFvYAFvAXxgAX4Bb2AEf3x/fwF/YAR/fX9/AX9gCX9/f39/f39/fwF/YAZ/f39/f38Bf2ADfn5/AX9gA39/fwN/f39gA29/bwBgA29vbwBgA29vbwFvYAJvbwFvYAJvfwFvYAN/f28AYAF8AW9gC39/f39/f39/f39/AGAKf39/f39/f39/fwBgDH9/f39/f39/f39/fgBgAn5/AXxgAn5/AX1gDH9/f39/f39/f39/fwBgAnx/AX9gBH9/f34Bf2AHf39/f39/fgBgBH9+f38AYAZ/fn9/f38AYAN/fH8Bf2ADf31/AX9gA39/fgBgBH5+f38Bf2ADf35+AGACfn8AYAl/f39/f39+fn4AYAJ/fwF+YBN/f39/f39/f39/f39/f39/f39/AX9gBX9+fn5+AGACf3wAYAR/fn5/AGABbwN/f39gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAXwBfwLyEiUbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzGl9fd2JnX25ld19lMTdkOWY0MzEwNWIwOGJlABYbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzGl9fd2JnX3NldF9jMjEzYzg3MTg1OWQ2NTAwACgbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzGl9fd2JnX25ld182ODY1MWM3MTlkY2RhMDRlABYbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzGl9fd2JnX25ld18xYWNjMGI2ZWVhODlkMDQwABYbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzGl9fd2JnX3NldF8zZjFkMGI5ODRlZDI3MmVkACkbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzK19fd2JnX19fd2JpbmRnZW5faXNfc3RyaW5nX2ZiYjc2Y2IyOTQwZGFhZmQADxsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMaX193Ymdfc2V0XzkwN2ZiNDA2YzM0YTI1MWQAKhsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMcX193YmdfRXJyb3JfZTgzOTg3ZjY2NWNmNTUwNAAdGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcyxfX3diZ19fX3diaW5kZ2VuX3N0cmluZ19nZXRfZTRmMDZjOTA0ODlhZDAxYgAXGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qczBfX3diZ19fX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2VxX2I2NjRiMzhhMmY1ODIxNDcAHhsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMiX193Ymdfc2V0X21lc3NhZ2VfODJhZTQ3NWJiNDEzYWE1YwACGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF9jODE4MjYxZDIxZjI4M2E0AA8bLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzJ19fd2JnX2dldF93aXRoX3JlZl9rZXlfMWRjMzYxYmQxMDA1M2JmZQArGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2lzX3VuZGVmaW5lZF8yZDQ3Mjg2MmJkMjlhNDc4AA8bLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzJF9fd2JnX19fd2JpbmRnZW5faW5fYmI5MzNiZDllMWIzYmMwZgAeGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcx5fX3diZ19lbnRyaWVzX2UxNzFiNTg2ZjhmNmJkYmYAHxsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMdX193YmdfbGVuZ3RoX2NkZDIxNWUxMGQ5ZGQ1MDcADxsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMaX193YmdfZ2V0XzdiZWQwMTZmMTg1YWRkODEALBsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMkX193YmdfaXNTYWZlSW50ZWdlcl9kMjE2ZWRhNzkxMWRkZTM2AA8bLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzHV9fd2JnX051bWJlcl9iYjQ4Y2ExMmYzOTVjZDA4ACAbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzLV9fd2JnX19fd2JpbmRnZW5fYm9vbGVhbl9nZXRfNmQ1YTFlZTY1YmFiNWY2OAAPGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcxxfX3diZ19uZXdfMF9mOTc0MDY4NmQ3MzkwMjVjABYbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzHl9fd2JnX2dldFRpbWVfMTQ3NzZiZmI0OGExYmZmOQAgGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcx1fX3diZ19sZW5ndGhfNjliY2EzY2I2NGZjODc0OAAPGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcydfX3diZ19wcm90b3R5cGVzZXRjYWxsXzJhNjYyMGI2OTIyNjk0YjIALRsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMsX193YmdfX193YmluZGdlbl9udW1iZXJfZ2V0X2EyMGJmOWI4NTM0MTQ0OWQAFxsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzIwYzhlNzMwMDJmN2FmOTgADxsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMtX193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl83MGJlYjExODljYTYzYjM4AA8bLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzGl9fd2JnX25ld181YTc5YmUzYWI1M2I4YWE1AB8bLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzHV9fd2JnX1N0cmluZ184ZjBlYjM5YTRhNGMyZjY2ABcbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfYjg1NTQ0NWZmNmE5NDI5NQACGy4vcXVlcnlfY29tcGlsZXJfZmFzdF9iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2RlYnVnX3N0cmluZ19kZjQ3ZmZiNWUzNWU2NzYzABcbLi9xdWVyeV9jb21waWxlcl9mYXN0X2JnLmpzH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUAERsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMgX193YmluZGdlbl9jYXN0XzIyNDFiNmFmNGM0YjI5NDEAHRsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMgX193YmluZGdlbl9jYXN0XzlhZTA2MDc1MDdhYmIwNTcAIRsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMgX193YmluZGdlbl9jYXN0XzQ2MjVjNTc3YWIyZWM5ZWUAIRsuL3F1ZXJ5X2NvbXBpbGVyX2Zhc3RfYmcuanMgX193YmluZGdlbl9jYXN0X2Q2Y2QxOWI4MTU2MGZkNmUALgPeFdwVCxQCBQUIBAIFBC8DBggEBBgCBggCBAQwBAEUAgQCBQgDCAQLBgAGBAEMMQYBBjIzAgIIARQEBgUCBQIIAwICAgIFBQICBQEIAQYFCAICBQILBAQDAwUMCwgCAggECAQCDAIECwEEBgYIAgYHBAYGBAUMCAQDAwIEDAgEBAUIAgUDDAgEBAECBQMFCAELBwgFBAgIAgYFAgYDAQEBAQQBCQIGBQQEAwQEAwYINAEIAgMBAQEBAwIIBAUCAwgGAgICBQQIAgIIBQIIBQICCAQFBgQ1AQECAQQFAgIGAQICCwISAhISBQICEgICBAMCBAgEAgYIBgQLAQICBAIEBAMEAwYUAgICAQQCAgYCCAgCAgQBBQEEAgICAQsEAQICAwMCAQgFAQMCAQEBAQEBAQQEAgECAgYCAgICAgYCBAMDAQQEAgICAgYDAwYGAgMEBgQEBAcCAgQEAQEEAgMEAgICAQIEAgkBAgIDAwQEAgUBBQQEAgIEAgYEAQUCAwQEAgIBCAIEAwQGAQgBAgUEAQIEBQUGBAQEBAIBAQQBAQIGAQMCAwUFBQUEAwQEBAICBQECAgUEAggDAAEGAQgCBggHBwIEAgICAQUIAgUGAQQEAgQCBAQEBAIEBAEABQYCAgUCAQMDAwYCAgICBQMDNgEBAQICAwMDAwIEAAEBAQUCNwEDAgICBQUCAwMDAwMEBAIEAggDBgEBAwIBAggCBAMDAwEEAgICAwMCAgIBAggCAgILAgEDAwMCBQMDAgMDAwMCAgIGAwMDAgICOAICBAIEAwEBBAICAgIFAggBBQMDAwEBBQEIAQIDAQEBBQIBAQQDAgIGAgMEAQQCAQUCAgICAQQCAQEBAgYEBAEBBAQCAgEEAQEEAgIEAwQCAgQDAwIDAQMGAgICAgMBAgYBAQEBBgMHAwIEAgECBAULBAQCAgICAgMEAgQCAwQCAwMEAgMDAwIDAwQEAgQEAgQCAgQEAggCAwICBQMCAgIBAQIBAgICAgECAgQBBAMDAwQEAgMCAgMIAQICAgMJAwEBAgEBBAQFBQICAgEiBAIJAAsIBCMFAggCAwECBQQCAAQDBQEEAgUCAQIBAQMFAgQCAgEFCAICBgUIAgYCAgQFBAQCAQIEJDkDAgEDGAICAToAAAcBAQU7AAMEAgUCAgQCAgMFAQEEBAUCAwEMAQQCAgQBBDwCAwMEAwMDBAIDAgQDBQMCBgQEAwEBAQMEAgUDAwIBBAIFBAIDBgECAQEEBAIYAg0CAwQDAQQCAgQFAwIGBgACIgQCAgEEAgEGIwEaBQUEAgMBAQIZAgIFAgEGAgEBBgYDFAQDCQEBAxkCAgIECAIEAgQEAwMDBAIDAgMGAgECAgQEAQICCAYCBAMBAgEEDAMEAwUIBAIBAgICAQYCAgQEAQMGAQIEAQMBAQQCAwMDAwMDAQIDBAEDAwMBAwIDAwMHAwQEAgQDBAEBBQEEAgQEBAQEAgUECAIAAgICAhkFAQMFAgICAwMGAQYDBwMDAQMDAgMZAwMBAQICAQIBAgIABAIEBQIFAQMCDQsCCQICBAQEBAIEAwICAwQEBAQEBAMBAQABJQICAQMmAgIEBgICBAkEBAECAgQDAgIbBAEDAwQHAQMEAg0DAwsFBgECAxgBBQECAwMDAwMDAwMDAgEDAgMkDQEBAQECBAECBAECAgISAAILBwIDBAACAQ0EBAQEBAEBAgIBBwUGBwQBAwEbAQECBwEBBwICCAABAwEBBQIBAgECAgsEAwQAAQIHBAICBQICAgICAgQEPQQmAxsGAwYEBAICAQIFBAMFAgEBAQEBAQEBCQECDQEDAQMBAwQCAQEBAQIBAQEBAgEBBAIBPgMBAQEBAQEBAQEBAQEBBQEBAwUCBAUBAQICAwMBAQMFAQ0NBw0HDQ0EAQQHAQMAAAAAAwIEBAMEAQQHAwEEEgQBAgMAAwEBAQIEAwYGAgMEBQUFAQEBAgIBAwMBAwEEARABAQEBBgYBAgMBAQEIBQMDAwQDAwEBAwMQBQIQAAMHAQEBBgMBAAIEAgMDAgIEAQIDBAMBAAIBPwECAQEBBQICAAQDAgcDBwIEAgECBwIAAwUDAAcCAQEBBQUBBAIBAgQSQAMDBAIBAQIBAwUQAQEBCEECAgIEAgMIBQQaAgQBAgAEBAACCQECAQcHAgQBBAQEAgICAgIDAgcEBAEICAMCBAQFBAUCBAkCBwQGBQUCBAMJAwEDBAIEBAEEBQgBBQQFAQgCBAQCBAQECwMBAQEEAwQBAgcCAgEGAgIFAQEEAQMDAgMEAAEEBAECBAQDAwMCAgIBAgIEBAEEBAMGAQEBAwICAwECAgMBAgECAgIBEwUBEAQDAgEBAQEEBAACAgEBAgQDAgACAwQBAQQDAwILBAQCBQIEAgICAgQBAgEGAwIEAQEBAgMBAQQDAQMCCAEBBgIBAgIOBAEDAQMBCQkJCQkDCQQBAQIBAgIBAQADAQEBAwQIAwMEAQIEAQEBAQICAQEBAgkBAQEBAQEBAQEAAQQBAQIDAQECAgsBAQEBAgEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAgEIAQECBQUFBQIGAQEBBAIHAgECAQEFAQQCAQEBAQEBAQEBAQEFAQEBAQEBAQEGAQMEBAIBAAcEAQEFAQEBAQEDAQEEAgMCAwMBAQEEAgECAgEDCBABAQMDAgICAwEBAgEBAQECAQIBAgUGBQYBCQEHBAIDAQEBAQEBBAEBBgcHAgEDAwMCBwIGBwABQgQHBwEDBwEDAgEBAQEBAQMEBAcEBAQBAQEBAQEBAQMBAQEBAwEBAQEBAQEBAQIECQEDBAMCAQACAAEBAQEBBAMBAQYBAQIBAgEDAQEBAQEDAwMDAQIEGgEBBAMDAgMDBwIEAwcFAQMBAggBDAMDAAUDAwMDAwMEBgEBAQYCAQEDAQEEAwEBAgEEAQMIAgQECQkJBAEKBAMDAAEHAQQBBwMBBQIDAwcBAgYBAwEDAwMEBANDAgEBAwMDAwQEBAQEAgIHAwMFAwkBAQEFAgIDAQEBAwQBAQECAAMDAwYDAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMDAwACAwMDAwMEAwgDAwMDAwMAAEQBAgEEBAQCAgQBAQIAAQMEAQEFAgIGBAEBAQYCAgEBAgMDAQEBAQACAAICAAQDAwIBAwMBAQEBAQEBRQAK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AARAQcjwyQApAwAhcUHA8MkAKQMADAELIApBuAFqELsRQdDwyQBBAToAAEHI8MkAIAopA8ABInE3AwAgCikDuAELIm03AxhBwPDJACBtQgF8NwMAIApBADYCMCAKQoCAgICAATcDKCAKIHE3AyAgCkGQqckAKQMANwI0IApBmKnJACkDADcCPEEJEJABIhBFDTwgEEHcsskALQAAOgAIIBBB1LLJACkAADcAACAKQQk2AoQBIAogEDYCgAEgCkEJNgJ8IApBuAFqIhAgEhD1AwJAAkAgCigCyAFBf0YNACAKIAopA+ABNwOwASAKIAopA9gBNwOoASAKIAopA9ABNwOgASAKIAopA8gBNwOYASAKIAopA8ABNwOQASAKIAopA7gBNwOIASAQIApBGGogCkH8AGogCkGIAWoQ0gMgCiAKKQPoATcDcCAKIAopA+ABNwNoIAogCikD2AE3A2AgCiAKKQPQASJtNwNYIAogCikDyAE3A1AgCiAKKQPAATcDSCBtp0F/RwRAIApByABqEP4JC0EMEJABIhBFDT4gEEH6sckAKAAANgAIIBBB8rHJACkAADcAACAKQQw2AoQBIAogEDYCgAEgCkEMNgJ8IApBuAFqIhAgEyBHEN8NIAooAsgBQX9GDQAgCiAKKQPgATcDsAEgCiAKKQPYATcDqAEgCiAKKQPQATcDoAEgCiAKKQPIATcDmAEgCiAKKQPAATcDkAEgCiAKKQO4ATcDiAEgECAKQRhqIApB/ABqIApBiAFqENIDIAogCikD6AE3A3AgCiAKKQPgATcDaCAKIAopA9gBNwNgIAogCikD0AEibTcDWCAKIAopA8gBNwNQIAogCikDwAE3A0ggbadBf0cEQCAKQcgAahD+CQtBDRCQASIQBEAgEEGOsckAKQAANwAFIBBBibHJACkAADcAACAKQQ02AoQBIAogEDYCgAEgCkENNgJ8IApBuAFqIhAgDiBGEN8NIAooAsgBQX9GDQEgCiAKKQPgATcDsAEgCiAKKQPYATcDqAEgCiAKKQPQATcDoAEgCiAKKQPIATcDmAEgCiAKKQPAATcDkAEgCiAKKQO4ATcDiAEgECAKQRhqIApB/ABqIApBiAFqENIDIAogCikD6AE3A3AgCiAKKQPgATcDaCAKIAopA9gBNwNgIAogCikD0AEibTcDWCAKIAopA8gB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EyADKQPACiFoIAMoArgKIQggAyADKAKoDDYC8AIgAyADKACrDDYA8wIgAyADKAKIBTYC6AIgAyADKACLBTYA6wIgCEEIdiEBIGhCIIinIREgaKchDQwWCyAQIC4pAzg3AzggECAuKQMwNwMwIBAgLikDKDcDKCAQIC4pAyA3AyAgECAuKQMYNwMYIBAgLikDEDcDECAQIC4pAwg3AwggECAuKQMANwMAIAMoArgKDAELIANB8AFqEK4HQX4LIQEgAyBJKAAANgKoDCADIEkoAAM2AKsMIAMgSCgAADYCiAUgAyBIKAADNgCLBSADLQDQCiEFIAMpA8gKIWYgAykDwAohZyADKAK8CiEEIAMoAtgKIQYgAygC3AohByADKQPgCiFrIAMoAugKIQogAygC7AohEyADLQDwCiEIIAMgAygCqAw2AoAFIAMgAygAqww2AIMFIAMgAygCiAU2AvgEIAMgAygAiwU2APsEIAFBfkcEQCBYIAMoAoAFNgAAIFggAygAgwU2AAMgVyADKAL4BDYAACBXIAMoAPsENgADIAMgBToAoAUgAyBmNwOYBSADIGc3A5AFIAMgBDYCjAUgAyABNgKIBSADIAg6AMAFIAMgEzYCvAUgAyAKNgK4BSADIGs3A7AFIAMgBzYCrAUgAyAGNgKoBSAvIC8oAgAiAUEBajYCACABQQBIDRcgAyBNNgKECiADIEw2AoAKIAMgLzYC/AkgA0EANgL4CSADQbAKaiADQYgFaiADQfgJakEAELYCAkACQCADLQCwCiIBQf8BRgRAIBsgECkAODcAOCAbIBApADA3ADAgGyAQKQAoNwAoIBsgECkAIDcAICAbIBApABg3ABggGyAQKQAQNwAQIBsgECkACDcACCAbIBApAAA3AAAgFSAbKQA4NwA4IBUgGykAMDcAMCAVIBspACg3ACggFSAbKQAgNwAgIBUgGykAGDcAGCAVIBspABA3ABAgFSAbKQAINwAIIBUgGykAADcAACADQf8BOgDIBSAvIC8oAgAiAUEBazYCACABQQFGDQEMAgsgA0GoDGoiBSBdQccA/AoAACADIAE6APgHIAMpA/gKIWYgXCAFQccA/AoAACADIGY3A8AIIANByAVqIANB+AdqEIYGIC8gLygCACIBQQFrNgIAIAFBAUcNAQsgLxAwCyADLQDIBSIWQf8BRgRAIAMgMygAADYC0AcgAyAzKAADNgDTByADIDIoAAA2ApAHIAMgMigAAzYAkwcgAy0A6AUhFiADKQPgBSFnIAMoAtQFIQwgAygC8AUhBSADKAL0BSEHIAMpA/gFIWYgAygCgAYhDiADKAKEBiEKIAMtAIgGIRMgAykD2AUhaCADKALQBSEIIAMgAygA0wc2APMCIAMgAygC0Ac2AvACIAMgAygAkwc2AOsCIAMgAygCkAc2AugCIAhBCHYhASBoQiCIpyERIGinIQ0MFQsgAyBWKAADNgDzAiADIFYoAAA2AvACIAMgMygAADYC0AcgAyAzKAADNgDTByADKALQBSEsIAMoAtQFISsgAykD2AUhayADLQDoBSEpIAMoAvAFITkgAygC9AUhOCADKQP4BSFsIAMoAoAGITcgAygChAYhNiADLQCIBiE1IAMpA+AFIWYgAyAyKAADNgCTByADIDIoAAA2ApAHIAMgAygA0wc2AOsCIAMgAygC0Ac2AugCIAMgAygAkwc2AOMCIAMgAygCkAc2AuACIGZCIIinISogAykDkAYhaSADLQCYBCE6IAMtAJkEISUgAy0AmgQhIyADKAKIAyEfIAMoAogEIQkgAygChAQhCyADKAKABCEhIAMoAvADIQ0gAygC7AMhDyADKALoAyEIIAMoAoQDISggAygCgAMhBiADKQP4AiFqIAMpA5ADIWcgAygC/AMhJiADKAL4AyEMIAMoAvQDIRIgAygClAQhFyADKAKQBCEkIAMoAowEIRggZqchDkEAIRFBACEFQQAhAUEBDAsLIAMgHigAADYC8AIgAyAeKAADNgDzAiADIB0oAAM2AOsCIAMgHSgAADYC6AIgAy0AmAMhFiADKQOQAyFnIAMoAoQDISggAygCgAMhBiADKQP4AiFqIAMoAqADISwgAygCpAMhKyADKQOoAyFrIAMoArADIQ4gAygCtAMhKiADLQC4AyEpIAMpA4gDIWYgAyAcKAADNgDjAiADIBwoAAA2AuACIAMtANgDITUgAygC1AMhNiADKALQAyE3IAMpA8gDIWwgAygCxAMhOCADKALAAyE5IAMtAJgEITogAy0AmQQhJSADLQCaBCEjIAMoApQEIRcgAygCkAQhJCADKAKMBCEYIAMoAogEIQkgAygChAQhCyADKAKABCEhIAMoAvwDISYgAygC+AMh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AyAcKAAANgLgAiADLQCaBCEjIAMtAJkEISUgAy0AmAQhOiADKAKIBCEJIAMoAoQEIQsgAygCgAQhISADKQPgAyFpICAgICgCACIBQQFrNgIAIAFBAUYEQCAgEDALQQAhESAKIS0gEyEUIAUhMCAHISIgZiFoQQAhBUEBDAoLIAMgAygAuwY2APMCIAMgAygCuAY2AvACIAMgAygCnAY2AugCIAMgAygAnwY2AOsCICAgICgCACICQQFrNgIAIAhBCHYhASACQQFHDRMgIBAwDBMLQQgQpxQACwwZCyABKAAAQfTCrasGRgRAIANB+AdqIANB8AFqEPsMIAMoAqgIIg5Bf0YNAyADIAMoAJEINgLwAiADIAMoAJQINgDzAiADIAMoALEINgLoAiADIAMoALQINgDrAiADKAL4ByIIQQh2IQEgAykDgAgiaEIgiKchESADLQCQCCEWIAMpA4gIIWcgAygC/AchDCADKAKYCCEFIAMoApwIIQcgAykDoAghZiADKAKsCCEKIAMtALAIIRMgaKchDQwRCyABKAAAQfPWpYMHRw0AIANB+AdqIANB8AFqEPsMIAMpA4AIIWkgAykD+AchaiADKAKoCCIOQX9HBEAgRSBGKQMYNwMYIEUgRikDEDcDECBFIEYpAwg3AwggRSBGKQMANwMAIFMgPSkCADcCACBTID0oAgg2AgggAyBqNwOwCiBqQiCIpyEMIGqnIQgMCQsgakIBUg0BIGlCAFkNASADIGk3A8gFIAMgcTcD+AcgA0GwCmpBi6XAACADQfgHahC4DEGFgICAeCEOIAMpA7gKIWkgAygCtAohDCADKAKwCiEIDAgLIAMgAygAQzYA8wIgAyADKABANgLwAiADIAMoADg2AugCIAMgAygAOzYA6wIgAyADKAAwNgLgAiADIAMoADM2AOMCIAMgAygAKDYC2AIgAyADLQAsOgDcAiADKALoBCIFBEAgAUEEaygCACIHQXhxIQQgBEEEQQggB0EDcSIHGyAFakkNFiAHQQBHIAQgBUEnaktxDRcgARC8BQsgZkIgiKchESBZEK4HDAsLIAMgHigAADYC8AIgAyAeKAADNgDzAiADKAKMBCEYIAMoApAEISQgAygClAQhFyADKAL0AyESIAMoAvgDIQwgAygC/AMhJiADKQOQAyFnIAMtAJgDIRYgAygCiAMhHyADKAKgAyEsIAMoAqQDISsgAykDqAMhayADKAKwAyEOIAMoArQDISogAy0AuAMhKSADIB0oAAM2AOsCIAMgHSgAADYC6AIgAyAcKAADNgDjAiADIBwoAAA2AuACIGlCIIinISggaachBkEAIREgAy0AmgQhIwwBCyADKQOACCFnIAMoAvgHIQEgAyAeKAAANgLwAiADIB4oAAM2APMCIAMoAowEIRggAygCkAQhJCADKAKUBCEXIAMoAvQDIRIgAygC+AMhDCADKAL8AyEmIAMpA/gCIWogAygCgAMhBiADKAKEAyEoIAMtAJgDIRYgAy0AuAMhKSADKAK0AyEqIAMoArADIQ4gAykDqAMhayADKAKkAyErIAMoAqADISwgAyAdKAADNgDrAiADIB0oAAA2AugCIAMtANgDITUgAygC1AMhNiADKALQAyE3IAMpA8gDIWwgAygCxAMhOCADKALAAyE5IAMgHCgAAzYA4wIgAyAcKAAANgLgAkEAIRFBA0EAIAEbIR8gAy0AmgQhIyADLQCZBCElIAMtAJgEITogAygCiAQhCSADKAKEBCELIAMoAoAEISEgAygC8AMhDSADKALsAyEPIAMoAugDIQggAykD4AMhaQwBCyADLQCZBCElIAMtAJgEITogAygCiAQhCSADKAKEBCELIAMoAoAEISEgAygC8AMhDSADKALsAyEPIAMoAugDIQggAykD4AMhaSADLQDYAyE1IAMoAtQDITYgAygC0AMhNyADKQPIAyFsIAMoAsQDITggAygCwAMhOQtBAAshBUEACyEBQQALIQQCQAJAAkAgAygC6AQiBwRAIAMoAuwEIhNBBGsoAgAiTkF4cSEKIApBBEEIIE5BA3EiThsgB2pJDQEgTkEARyAKIAdBJ2pLcQ0TIBMQvAULAkAgBEUEQCABRQ0BDAMLIAMtAJgDQf8BRwRAIGEQrwQLIAENAgsMAgtB0JzJAEEuQYCdyQAQrxQACyADKALsAyEHIAMoAvADIgQEQCAHIQEDQCABEIsFIAFBQGshASAEQQFrIgQNAAsLIAMoAugDIgQEQCAHQQRrKAIAIgpBeHEhASABIARBBnQiBEEEQQggCkEDcSIKG3JJDRAgCkEARyABIARBJ3JLcQ0RIAcQvAULCwJAAkAgBUUNACADKAKABCIBQX9GDQAgYBClBCABRQ0A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ARDAEiACQbgLahDAEiACIAQ2AhAgAiAFNgIMIAIgCTYCCCACQeARaiIDIAggAkGICWogARDWCiAAIANB8AD8CgAAIAJBgBFqEPMRAkAgAikDyAYiF0IFUw0AIBdC/////w+DQgZSDQAgAigC0AYNGiAHENIRDBoLIAJByAZqEOsCDBkLQeDbxQBB4wBBlNzFABC/EwALIAJBgBFqEPMRAkAgAikDyAYiF0IFUw0AIBdC/////w+DQgZSDQAgAigC0AYNASAHENIRDAELIAJByAZqEOsCCyAEBEAgBSEDA0AgAxClASADQfAAaiEDIARBAWsiBA0ACwsgCUUNFiAFIAlB8ABsENkSDBYLIAMoAghBf0cEQCACQeARaiAGIAgQgAMgAigC5BEhBSACKALgESENAkAgAigC6BEiA0UNACAFIANBA3RqIRAgAkHkEWohDCAGQRRqIREgBkEQaiESIAUhBAJAAkACQANAIAQoAgAiAyARKAIATw0BAkACQCASKAIAIANByABsaiIKKAIAIg5Bf0YNACAEQQRqKAIAIQMCQAJAQQIgDkEDayAOQQJNG0EDaw4CAAECCyAPRQRAIApBfzYCACAMIAopAgQ3AgAgDCAKKQIMNwIIIAwgCikCFDcCECAMIAopAhw3AhggDCAKKQIkNwIgIAwgCikCLDcCKCAMIAooAjQ2AjAgAiAONgLgESACQeARahCnB0EBIQ8gAyEJDAILQSIQkAEiA0UNBiADQbzZxQAvAAA7ACAgA0G02cUAKQAANwAYIANBrNnFACkAADcAECADQaTZxQApAAA3AAggA0Gc2cUAKQAANwAADAULIAsNASAKQX82AgAgDCAKKQIENwIAIAwgCikCDDcCCCAMIAopAhQ3AhAgDCAKKQIcNwIYIAwgCikCJDcCICAMIAopAiw3AiggDCAKKAI0NgIwIAIgDjYC4BEgAkHgEWoQpwdBASELIAMhBwsgECAEQQhqIgRGDQUMAQsLQSIQkAEiA0UNHyADQd7ZxQAvAAA7ACAgA0HW2cUAKQAANwAYIANBztnFACkAADcAECADQcbZxQApAAA3AAggA0G+2cUAKQAANwAADAELQbygxgAQnRUACyAAQYmAgIB4NgI4IABBIjYCFCAAIAM2AhAgAEL/////rwQ3AwggAEJ/NwMAIA1FDRggBSANQQN0ENkS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QAJAAkACQCADKALwDkECaw4CAQADCyAELwAAQeHcAXMgBEECaiIILQAAQeQAc3INASADQQA6AFAMBAsgBC8AAEHv5AFHDQEgA0EBOgBQDAMLIAQvAABB7t4BcyAILQAAQfQAc3JFDQELIAMgA0GIC2qtQoCAgIDQAYQ3A8APIANB0ABqQY++wQAgA0HAD2oQuAxBgYCAgHgMAgsgA0ECOgBQC0EBIQdBfws2AoABAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACfyADKALoDiIIBEAgBEEEaygCACIJQXhxIQogCkEEQQggCUEDcSIJGyAIakkNGCAJQQBHIAogCEEnaktxDRkgBBC8BQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAHRQRAIANB6A5qIAEoAgAgDyAGEJEDIAMoAugOIgZBf0YNASADIAMpAvQONwPYAiADIAMoAvwONgLgAiADKALwDiEEIAMoAuwOIQEgBkEBaw4CAwQCCyADLQBQIRACQAJAAkAgAygCCEEDaw4CAQIAC0Ggq8kAQShB3JXGABCvFAALIAEoAgQhCSABKAIAIRMgAygCDCENIAMoAhAhByADKAIUIQEgA0F/NgLABSAHIAFByABsaiEGIAchBCABRQ0bIANB6A5qQQFyIQUgA0GQC2ohASAEIQIDQCACKAIAIQggA0HQB2oiCiACQQRqQcQA/AoAACACQcgAaiEEAkACQCAIQQRHBEAgAyAINgLADyADQcAPaiICQQRyIApBxAD8CgAAIAMgAq1CgICAgPAghDcDoAggA0HAC2pBoe/BACADQaAIahC4DCADQQA6AMwLIANBfzYCoAsgAhCuByADIAEpAwA3A/AOIAMgASkDCDcD+A4gAyABKQMQNwOADyADIAEpAxg3A4gPIAMgASkDIDcDkA8gAyABKQMoNwOYDyADIAEpAzA3A6APIAMgASkDODcDqA8gA0G4CmogBUHHAPwKAAAMAQsgAyACQQhqKQIANwPABiADIAJBEGopAgA3A8gGIAMgAkEYaikCADcD0AYgAyACQSBqKQIANwPYBiADIAJBKGopAgA3A+AGIAMgAkEwaikCADcD6AYgAyACQThqKQIANwPwBiADIAJBQGsp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ACADQcAPahC4DCADQYGAgIB4NgLIAiABEK4HDAILQdAAEJABIgFFDS4gAygCuAkiBCgCACEFIAQgBUEBajYCACAFQQBIDQMgAykCsAkhFyADKQKoCSEYIAFBAzoAACABQQA6AAggASACQRhqIgIpABgiGTcAKCADIAIpAAA3AO8OIAEgAykA6A43AAkgAyACKQAINwD3DiABIAMpAPAONwARIAMgAikAEDcA/w4gASADKQD4DjcAGSADIBk3AIcPIAEgAykAgA83ACEgAyAYNwPIDyADIBc3A9APIAEgBDYCSCABQQA6AEwgASADKQPQDzcDQCABIAMpA8gPNwM4IAEgAykDwA83AzAgA0EBNgKYAiADIAE2ApwCIANBATYCoAIgA0F/NgLIAgwBCyADIAIpA1A3A8ALIAMgAikDSDcDuAsgAyACKQNANwOwCyADIAIpAzg3A6gLIAMgAikDMDcDoAsgAyACKQMoNwOYCyADIAIpAyA3A5ALIAMgAikDGDcDiAsgA0HIA2oiASADQZgLakG2k8kAQQQQqQRBACEFAkACQCADKALIA0F/Rg0AIANB6A5qIgIgARDaASACQQFyIQEgAy0A6A4hAiADKAKYDyIEQX9HDQEgAyABKQAXNwDXDyADIAEpABA3A9APIAMgAjoAuAogAyABKQAANwC5CiADIAEpAAg3AMEKIAMgAykD0A83AMkKIAMgAykA1w83ANAKAkACQEEOIAMoArgKIgFBDWsgAUEMTRsiBA4DAQABAAtBoKvJAEEoQaynxgAQrxQACyADKALACiEBIAMoArwKIQICfwJAAkAgAygCxApBB2sOBQAPDw8BDwsgASgAAEHkypmLBnMgAUEDaigAAEHh6rGjB3NyDQ5BAAwBCyABKQAAQunczavm7dy09ACFIAFBA2opAABC5dzNy8aumrvlAIWEQgBSDQ1BAQshBSACBEAgASACENkSCwJAIAQOAwEAAQALIANBuApqEIgECyADQQA7AbwKIAMgA0GoCWo2ArgKIAMgAykDwAs3A6APIAMgAykDuAs3A5gPIAMgAykDsAs3A5APIAMgAykDqAs3A4gPIAMgAykDoAs3A4APIAMgAykDmAs3A/gOIAMgAykDkAs3A/AOIAMgAykDiAs3A+gOIANBwA9qIANBuApqIANB6A5qEMIBIAMoAsgPIQcgAygCxA8hASADKALADyEGAkAgAygC8A8iAkF/RwRAIAMgAygC7A82AsQCIAMgAykC5A83ArwCIAMgAykC3A83ArQCIAMgAykC1A83AqwCIAMgAykCzA83AqQCIAMgAykC9A83AswCIAMgAygC/A82AtQCIAMgAjYCyAIMAQsgBwRAIAdB0ABsIQQgASECA0AgAiAFEIERIAJB0ABqIQIgBEHQAGsiBA0ACwsgA0F/NgLIAgsgAyAHNgKgAiADIAE2ApwCIAMgBjYCmAIMAQsgAyABKQAnNwDnDyADIAEpACA3A+APIAMgAykCnA83AswCIAMgAygCpA82AtQCIAMgASkAGCIXNwPYDyADIAEpABAiGDcD0A8gAyABKQAIIhk3A8gPIAMgFzcAsQIgAyAYNwCpAiADIBk3AKECIAMgASkAADcAmQIgAyADKQDnDzcAwAIgAyADKQPgDzcAuQIgAyAENgLIAiADIAI6AJgCIANBiAtqEOMJCyADKAK4CSICKAIAIQEgAiABQQFrNgIAIAFBAUcNFSADKAK4CRAwDBULIAMgBDYC6AIgAyABNgLkAiADIAMpA9gCNwLsAiADIAMoAuACNgL0AgJAAkAgAygCCA4FAQAABAUACyADQegOaiIBIAVByAD8CgAAIAMgAa1CgICAgPAghDcDiAsgA0HAD2pB5ZDAACADQYgLahC4DCADQYGAgIB4NgLIAiADIAMpA8APNwOYAiADIAMpA8gPNwOgAiADIAMpA9APNwOoAiADIAMpA9gPNwOwAiADIAMpA+APNwO4AiADIAMpA+gPNwPAAiABEK4HDBELQdAAEJABIgFFDSsgAygC9AIiBCgCACEFIAQgBUEBajYCACAFQQBIDQAgAyACQRhqIgIpABg3AIcPIAMgAikAEDcA/w4gAyACKQAINwD3DiADIAIpAAA3AO8OQdgAEJABIgINAUG48MkAQQE6AAAACwALIAJBBDoAACACIAMpAOgONwABIAIgAykA8A43AAkgAiADKQD4DjcAESACIAMpAIAPNwAZIAIgAykAhw83ACAgAUEHOgAAIAMgAykC5AI3AOsOIAEgAykA6A43AAEgAyADKQLsAjcA8w4gASADKQDwDjcACSABIAI2AhggASAENgIUIAEgAygA9w42ABAgA0F/NgLIAiADQQE2AqACIAMgATYCnAIg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DyADIAMpA+gLNwLUDyADIAMpA/ALNwLcDyADIAMpA/gLNwLkDyADIAMpA4AMNwLsDyADIAMoAogMNgL0DyADKQOwDyEXIAMgBDYC+A8gAyADKALgCzYChBAgAyADKQPYCzcC/A8gAyAXNwOIECADQYgLaiECIANBwA9qIQkjAEHgAGsiBSQAIANB5AJqIgcoAhAiBigCACEEIAYgBEEBajYCAAJAIARBAE4EQCAFQQlqIghBB2ogCUHQAPwKAABB2AAQkAEiBEUNMiAEQQY6AAAgBEEBaiAIQdcA/AoAACACIAQ2AhggAiAGNgIUIAJBBzoAACACIAcpAgg3AgwgAiAHKQIANwIEIAVB4ABqJAAMAQsACwwQCyADQRU2AogLIANB6A5qIANB5AJqIANBiAtqEPoQIAMgAy8A6Q47AfwEIAMgAy0A6w46AP4EIAMgAykC/A43A9gEIAMgAykChA83A+AEIAMgAykCjA83A+gEIAMgAykClA83A/AEIAMgAygCnA82AvgEIAMtAOgOIQIgAygC7A4hCSADKALwDiEEIAMoAvQOIQYgAygC+A4hBSADIAMoAqwPNgLQBCADIAMpAqQPNwPIBCADKAKgDyEHIAMpA7APIRcgCBCuBwwQCyADIAU2AoAKIAMgBjYC/AkgAyAENgL4CSADIAMpA6AINwKECiADIAMpA6gINwKMCiADIAMpA7AINwKUCiADIAMpA7gINwKcCiADIAMoAsAINgKkCiADIAc2AqgKIAMgAykDkAw3AqwKIAMgAygCmAw2ArQKIANB2A1qIgIgA0HkAmoQ8QogA0HoDmogA0H4CWogAhCsDSADLQDoDiICQf8BRgRAIAMgAykC/A43A+gLIAMgAykChA83A/ALIAMgAykCjA83A/gLIAMgAykClA83A4AMIAMgAygCnA82AogMIAMgAykCpA83A9gLIAMgAygCrA82AuALIAMoAvgOIQUgAygC9A4hBiADKALwDiEEIAMoAqAPIQcgAyADKAKIDDYC+AQgAyADKQOADDcD8AQgAyADKQP4CzcD6AQgAyADKQPwCzcD4AQgAyADKQPoCzcD2AQgAyADKALgCzYC0AQgAyADKQPYCzcDyAQMEgsgAyADKADsDjYAvAogAyADKADpDjYAuQogAyADKQL8DjcD6AsgAyADKQKEDzcD8AsgAyADKQKMDzcD+AsgAyADKQKUDzcDgAwgAyADKAKcDzYCiAwgAygCoA8hBCADKAL4DiEFIAMpA/AOIRcgAyADKAKsDzYC4AsgAyADKQKkDzcD2AsgAyAXNwPACiADIAI6ALgKIAMgBTYCyAogAyADKQPoCzcCzAogAyADKQPwCzcC1AogAyADKQP4CzcC3AogAyADKQOADDcC5AogAyADKAKIDDYC7AogAykDsA8hFyADIAQ2AvAKIAMgAygC4As2AvwKIAMgAykD2As3AvQKIAMgFzcDgAsgA0GIC2ohAiADQbgKaiEJIwBB4ABrIgUkACADQeQCaiIHKAIQIgYoAgAhBCAGIARBAWo2AgACQCAEQQBOBEAgBUEJaiIIQQdqIAlB0AD8CgAAQdgAEJABIgRFDTAgBEEFOgAAIARBAWogCEHXAPwKAAAgAiAENgIYIAIgBjYCFCACQQc6AAAgAiAHKQIINwIMIAIgBykCADcCBCAFQeAAaiQADAELAAsMDgsgA0HoDmohAiADLQCICyEGIANB5AJqIgUoAhAiBygCACEEIAcgBEEBajYCAAJAIARBAE4EQEHYABCQASIERQ0vIAQgBjoAASAEQQM6AAAgAiAENgIYIAIgBzYCFCACQQc6AAAgAiAFKQIANwIEIAIgBSkCCDcCDAwBCwALDAwLIAMgAykCmA03A+gIIAMgAykCoA0+AvAIIAMgAykCpA03AvQIIAMgAykCrA03AvwIIAMgAykCtA03AoQJIAMgAykCvA03AowJIAMgAygCxA02ApQJIAMgAykCyA0+ApgJIAMgAygC1A02AqQJIAMgAykCzA03ApwJIANB2A1qIgIgA0HkAmoQ8QogA0HoDmogA0HoCGogAhCsDSADLQDoDiICQf8BRgRAIAMgAykC/A43A+gLIAMgAykChA83A/ALIAMgAykCjA83A/gLIAMgAykClA83A4AMIAMgAygCnA82AogMIAMgAykCpA83A5AMIAMgAygCrA82ApgMIAMoAvgOIQUgAygC9A4hBiADKALwDiEEIAMoAqAPIQcgAyADKAKIDDYC+AQgAyADKQOADDcD8AQgAyADKQP4CzcD6AQgAyADKQPwCzcD4AQgAyADKQPoCzcD2AQgAyADKAKYDDYC0AQgAyADKQOQDDcDyAQMEAsgAyADKADsDjYArAkgAyADKADpDjYAqQkgAyADKQL8DjcD6AsgAyADKQKEDzcD8AsgAyADKQKMDzcD+AsgAyADKQKUDzcDgAwgAyADKAKcDzYCiAwgAygCoA8hBCADKAL4DiEFIAMpA/AOIRcgAyADKAKsDzYCmAwgAyADKQKkDzcDkAwgAyAXNwOwCSADIAI6AKgJIAMgBTYCuAkgAyADKQPoCzcCvAkgAyADKQPwCzcCxAkgAyADKQP4CzcCzAkgAyADKQOADDcC1AkgAyADKAKIDDYC3AkgAykDsA8hFyADIAQ2AuAJIAMgAygCmAw2AuwJIAMgAykDkAw3AuQJIAMgFzcD8AkgA0GIC2ohAiADQagJaiEJIwBB4ABrIgUkACADQeQCaiIHKAIQIgYoAgAhBCAGIARBAWo2AgACQCAEQQBOBEAgBUEJaiIIQQdqIAlB0AD8CgAAQdgAEJABIgRFDS4gBEECOgAAIARBAWogCEHXAPwKAAAgAiAENgIYIAIgBjYCFCACQQc6AAAgAiAHKQIINwIMIAIgBykCADcCBCAFQeAAaiQADAELAAsMDAsgAyADKQKYDTcDkAcgAyADKQKgDT4CmAcgAyADKQKkDTcCnAcgAyADKQKsDTcCpAcgAyADKQK0DTcCrAcgAyADKQK8DTcCtAcgAyADKALEDTYCvAcgAyADKQLIDT4CwAcgAyADKALUDTYCzAcgAyADKQLMDTcCxAcgA0HYDWoiAiADQeQCahDxCiADQegOaiADQZAHaiACEKwNIAMtAOgOIgJB/wFGBEAgAyADKQL8DjcD6AsgAyADKQKEDzcD8AsgAyADKQKMDzcD+AsgAyADKQKUDzcDgAwgAyADKAKcDzYCiAwgAyADKQKkDzcDkAwgAyADKAKsDzYCmAwgAygC+A4hBSADKAL0DiEGIAMoAvAOIQQgAygCoA8hByADIAMoAogMNgL4BCADIAMpA4AMNwPwBCADIAMpA/gLNwPoBCADIAMpA/ALNwPgBCADIAMpA+gLNwPYBCADIAMoApgMNgLQBCADIAMpA5AMNwPIBAwPCyADIAMoAOwONgDUByADIAMoAOkONgDRByADIAMpAvwONwPoCyADIAMpAoQPNwPwCyADIAMpAowPNwP4CyADIAMpApQPNwOADCADIAMoApwPNgKIDCADKAKgDyEEIAMoAvgOIQUgAykD8A4hFyADIAMoAqwPNgKYDCADIAMpAqQPNwOQDCADIBc3A9gHIAMgAjoA0AcgAyAFNgLgByADIAMpA+gLNwLkByADIAMpA/ALNwLsByADIAMpA/gLNwL0ByADIAMpA4AMNwL8ByADIAMoAogMNgKECCADKQOwDyEXIAMgBDYCiAggAyADKAKYDDYClAggAyADKQOQDDcCjAggAyAXNwOYCCADQYgLaiECIANB0AdqIQkjAEHgAGsiBSQAIANB5AJqIgcoAhAiBigCACEEIAYgBEEBajYCAAJAIARBAE4EQCAFQQlqIghBB2ogCUHQAPwKAABB2AAQkAEiBEUNLSAEQQE6AAAgBEEBaiAIQdcA/AoAACACIAQ2AhggAiAGNgIUIAJBBzoAACACIAcpAgg3AgwgAiAHKQIANwIEIAVB4ABqJAAMAQsACwwLCyADIAMpApgNNwOABiADIAMpAqANPgKIBiADIAMpAqQNNwKMBiADIAMpAqwNNwKUBiADIAMpArQNNwKcBiADIAMpArwNNwKkBiADIAMoAsQNNgKsBiADIAMpAsgNPgKwBiADIAMoAtQNNgK8BiADIAMpAswNNwK0BiADQdgNaiICIANB5AJqEPEKIANB6A5qIANBgAZqIAIQrA0gAy0A6A4iAkH/AUYEQCADIAMpAvwONwPoCyADIAMpAoQPNwPwCyADIAMpAowPNwP4CyADIAMpApQPNwOADCADIAMoApwPNgKIDCADIAMpAqQPNwOQDCADIAMoAqwPNgKYDCADKAL4DiEFIAMoAvQOIQYgAygC8A4hBCADKAKgDyEHIAMgAygCiAw2AvgEIAMgAykDgAw3A/AEIAMgAykD+As3A+gEIAMgAykD8As3A+AEIAMgAykD6As3A9gEIAMgAygCmAw2AtAEIAMgAykDkAw3A8gEDA4LIAMgAygA7A42AMQGIAMgAygA6Q42AMEGIAMgAykC/A43A+gLIAMgAykChA83A/ALIAMgAykCjA83A/gLIAMgAykClA83A4AMIAMgAygCnA82AogMIAMoAqAPIQQgAygC+A4hBSADKQPwDiEXIAMgAygCrA82ApgMIAMgAykCpA83A5AMIAMgFzcDyAYgAyACOgDABiADIAU2AtAGIAMgAykD6As3AtQGIAMgAykD8As3AtwGIAMgAykD+As3AuQGIAMgAykDgAw3AuwGIAMgAygCiAw2AvQGIAMpA7APIRcgAyAENgL4BiADIAMoApgMNgKEByADIAMpA5AMNwL8BiADIBc3A4gHIANBiAtqIQIgA0HABmohCSMAQeAAayIFJAAgA0HkAmoiBygCECIGKAIAIQQgBiAEQQFqNgIAAkAgBEEATgRAIAVBCWoiCEEHaiAJQdAA/AoAAEHYABCQASIERQ0sIARBADoAACAEQQFqIAhB1wD8CgAAIAIgBDYCGCACIAY2AhQgAkEHOgAAIAIgBykCCDcCDCACIAcpAgA3AgQgBUHgAGokAAwBCwALDAoLIANB6A5qIQIgAy0AiAshBiADQeQCaiIFKAIQIgcoAgAhBCAHIARBAWo2AgACQCAEQQBOBEBB2AAQkAEiBEUNKyAEIAY6AAEgBEEHOgAAIAIgBDYCGCACIAc2AhQgAkEHOgAAIAIgBSkCADcCBCACIAUpAgg3AgwMAQsACwwICyADIAIoAhAiBzYC6A0gAyACKQIIIhc3A+ANIAMgAikCACIYNwPYDSADIAU2AugFIAMgBjYC5AUgAyAENgLgBSADIBg3AuwFIAMgFzcC9AUgAyAHNgL8BSADQegOaiADQeQCaiADQeAFahD6EAwHCyADIAIoAhAiBzYC6A0gAyACKQIIIhc3A+ANIAMgAikCACIYNwPYDSADIAU2AvgMIAMgBjYC9AwgAyAENgLwDCADIBg3AvwMIAMgFzcChA0gAyAHNgKMDSADQegOaiADQeQCaiADQfAMahD6ECADIAMvAOkOOwH8BCADIAMtAOsOOgD+BCADIAMpAvwONwPYBCADIAMpAoQPNwPgBCADIAMpAowPNwPoBCADIAMpApQPNwPwBCADIAMoApwPNgL4BCADLQDoDiECIAMoAuwOIQkgAygC8A4hBCADKAL0DiEGIAMoAvgOIQUgAyADKAKsDzYC0AQgAyADKQKkDzcDyAQgAygCoA8hByADKQOwDyEXDAkLIAMgAykD6A8iFzcDsAsgAyADKQPgDyIYNwOoCyADIAMpA9gPIhk3A6ALIAMgAykD0A8iGjcDmAsgAyADKQPIDyIbNwOQCyADIAMpA8APIhw3A4gLIAMgAykC9A83AswCIAMgAygC/A82AtQCIAMgHDcDmAIgAyAbNwOgAiADIBo3A6gCIAMgGTcDsAIgAyAYNwO4AiADIBc3A8ACIAMgAjYCyAIgAUEEaygCACICQQNxIQQgAkF4cUHUAEHYACAEG0kNJCAEQQBHIAJB+ABPcQ0lIAEQvAUMCwtBCBCnFAALIAQgBUHk/sgAEIUTAAtBCBCnFAALQaCryQBBKEGcp8YAEK8UAAtB0AAQrBQhBCADQRU2AogLIANB6A5qIgIgA0HkAmogA0GIC2oQ+hAgBCACQdAA/AoAAEEBIQlBAiECQQEhBiAIEK4HDAILIAMgAy8A6Q47AfwEIAMgAy0A6w46AP4EIAMgAykC/A43A9gEIAMgAykChA83A+AEIAMgAykCjA83A+gEIAMgAykClA83A/AEIAMgAygCnA82AvgEIAMtAOgOIQIgAygC7A4hCSADKALwDiEEIAMoAvQOIQYgAygC+A4hBSADIAMoAqwPNgLQBCADIAMpAqQPNwPIBCADKAKgDyEHIAMpA7APIRcMAQsgAyADLwCJCzsB/AQgAyADLQCLCzoA/gQgAyADKQKcCzcD2AQgAyADKQKkCzcD4AQgAyADKQKsCzcD6AQgAyADKQK0CzcD8AQgAyADKAK8CzYC+AQgAy0AiAshAiADKAKMCyEJIAMoApALIQQgAygClAshBiADKAKYCyEFIAMgAygCzAs2AtAEIAMgAykCxAs3A8gEIAMoAsALIQcgAykD0AshFwsgAygCgAUiCEF/Rg0AIAhFDQAgAygChAUgCBDZEgsgAkH/AXFB/wFGDQEgASADLQD+BDoAAyABIAMvAfwEOwABIAMgAykD2AQ3A6AEIAMgAykD4AQ3A6gEIAMgAykD6AQ3A7AEIAMgAykD8AQ3A7gEIAMgAygC+AQ2AsAEIAMgAykDyAQ3A5AEIAMgAygC0AQ2ApgEIAEgAygCwAQ2AjQgASADKQO4BDcCLCABIAMpA7AENwIkIAEgAykDqAQ3AhwgASADKQOgBDcCFCABIAMpA5AENwI8IAEgAygCmAQ2AkQgASAXNwNIIAEgBzYCOCABIAU2AhAgASAGNgIMIAEgBDYCCCABIAk2AgQgASACOgAAIANBfzYCyAIgA0EBNgKgAiADIAE2ApwCIANBATYCmAIMAgsgAygCgAUiAkF/Rg0AIAJFDQAgAygChAUgAhDZEgsgAyADKAL4BCICNgLABCADIAMpA/AEIhc3A7gEIAMgAykD6AQiGDcDsAQgAyADKQPgBCIZNwOoBCADIAMpA9gEIho3A6AEIAMgAykDyAQ3A5AEIAMgAygC0AQ2ApgEIAMgGjcCpAIgAyAZNwKsAiADIBg3ArQCIAMgFzcCvAIgAyACNgLEAiADIAMoApgENgLUAiADIAMpA5AENwLMAiADIAc2AsgCIAMgBTYCoAIgAyAGNgKcAiADIAQ2ApgCIAFBBGsoAgAiAkEDcSEEIAJBeHFB1ABB2AAgBBtJDRkgBEEARyACQfgAT3ENGiABELwFCyADKAL0AiICKAIAIQEgAiABQQFrNgIAIAFBAUcNAyADKAL0AhAwDAMLIAQgAmtB2ABuIQUgAiAERwRAA0ACQCACQcgAaigCACIBQX9GDQAgAUUNACACQcwAaigCACIHQQRrKAIAIgZBeHEhBCAEQQRBCCAGQQNxIgYbIAFqSQ0aIAZBAEcgBCABQSdqS3ENGyAHELwFCyACEK4HIAJB2ABqIQIgBUEBayIFDQALC0EAIQVBACEEIAMoArAJIgEEQCADKAKoCSABQdgAbBDZEgtBCAshASADKALoCkF/RwRAIAMgAykD8Ao3A9ACIAMgAykD6Ao3A8gCIAMgAykD4Ao3A8ACIAMgAykD2Ao3A7gCIAMgAykD0Ao3A7ACIAMgAykDyAo3A6gCIAMgAykDwAo3A6ACIAMgAykDuAo3A5gCIAQEQCABIQIDQCACEK8EIAJB0ABqIQIgBEEBayIEDQALCyAFRQ0BIAEgBUHQAGwQ2RIMAQsgA0F/NgLIAiADIAQ2AqACIAMgATYCnAIgAyAFNgKYAgsgAygCwAYiAigCACEBIAIgAUEBazYCACABQQFHDQAgAygCwAYQMAsgAygCoAIhASADKAKcAiECIAMoApgCIQcgAygCyAIiBEF/RwRAIAAgAygCxAI2AjQgACADKQK8AjcCLCAAIAMpArQCNwIkIAAgAykCrAI3AhwgACADKQKkAjcCFCAAIAMpAswCNwI8IAAgAygC1AI2AkQgACAENgI4IAAgATYCECAAIAI2AgwgACAHNgIIIABB/wE6AAAgAygCgAFBf0YNCCADQdAAahCNAwwICwJAAkACQAJAAkAgAUUNACABQdAAbCEGIANB8A5qIQFBACEEQQAhBQNAIAMgAjYC6A4gAyACIAVqIgk2AuwOIAEgAiAEaiIIQdAA/AoAAAJAIAMtAPAOQQpGBEAgARCvBAwBCyAJIAhB0AD8CgAAIAVB0ABqIQULIAYgBEHQAGoiBEcNAAsgBUHQAG4iAQ4CAAECCyAAQQo6AAAgB0UNAiACQQRrKAIAIgFBeHEhACAAIAdB0ABsIgRBBEEIIAFBA3EiARtySQ0YIAFBAEcgACAEQSdqS3ENGSACELwFDAILIAVFDQIgAi0AACIBQf8BRg0CIABBAWogAkEBakHPAPwKAAAgACABOgAAIAVB0ABrQdAAbiEBIAVB0ABHBEAgAkHQAGohBANAIAQQrwQgBEHQAGohBCABQQFrIgENAAsLIAdFDQEgAkEEaygCACIBQXhxIQAgACAHQdAAbCIEQQRBCCABQQNxIgEbckkNFyABQQBHIAAgBEEnaktxDRggAhC8BQwBCyAAIAE2AgwgACACNgIIIAAgBzYCBCAAQQA6AAALIAMoAoABQX9GDRIgA0HQAGoQjQMMEgtBnJbGABCdFQALIAAgAykC3AE3AhQgACADKQLkATcCHCAAIAMpAuwBNwIkIAAgAykC9AE3AiwgACADKAL8ATYCNCAAIAMpAoQCNwI8IAAgAygCjAI2AkQgAykD0AEhFyADKALYASEBIAAgAygCgAI2AjggACABNgIQIAAgFzcDCCAAQf8BOgAADAULIAYgBGtByABuIQIgBCAGRg0AA0AgBBCuByAEQcgAaiEEIAJBAWsiAg0ACwtBACEGIA0EQCAHQQRrKAIAIgJBeHEhASABIA1ByABsIgRBBEEIIAJBA3EiAhtqSQ0SIAJBAEcgASAEQSdqS3ENEyAHELwFC0EAIQVBCAshBCADKALABSIHQX9HBEAgAyADKQKcBTcDoAEgAyADKQKkBTcDqAEgAyADKQKsBTcDsAEgAyADKQK0BTcDuAEgAyADKAK8BTYCwAEgAyADKQLEBTcDkAEgAyADKALMBTYCmAEgAygCmAUhCSADKAKUBSEIIAMoApAFIQogBQRAIAQhAgNAIAIQrwQgAkHQAGohAiAFQQFrIgUNAAsLIAYEQCAEQQRrKAIAIgJBeHEhASABIAZB0ABsIgVBBEEIIAJBA3EiAhtySQ0SIAJBAEcgASAFQSdqS3ENEyAEELwFCyAAIAk2AhAgACAINgIMIAAgCjYCCCAAIAMpA6ABNwIUIAAgAykDqAE3AhwgACADKQOwATcCJCAAIAMpA7gBNwIsIAAgAygCwAE2AjQgACAHNgI4IAAgAykDkAE3AjwgACADKAKYATYCRCAAQf8BOgAAIAMoAoABQX9GDQMgA0HQAGoQjQMMAwsgBCAFQdAAbGohByAFDQBBACEFIAQhAgwBCyADQfAOaiEBQQAhBSAEIQIDQCADQcAPaiACQdAA/AoAACADIAQ2AugOIAMgBCAFaiIINgLsDiABIAJB0AD8CgAAAkAgAy0A8A5BCkYEQCABEK8EDAELIAggA0HAD2pB0AD8CgAAIAVB0ABqIQULIAcgAkHQAGoiAkcNAAsLIAcgAmtB0ABuIQEgAiAHRwRAA0AgAhCvBCACQdAAaiECIAFBAWsiAQ0ACwsgBUHQAG4iAQ4CAwQCCyADKAIIQQJLDQAgA0EIahCuBwsgEUEBa0F+SQ0KDAsLIBBBAWsOAgMEAgsgCSgCAEUNBSAAQQo6AAAgBkUNBiAEQQRrKAIAIgFBeHEhACAAIAZB0ABsIgJBBEEIIAFBA3EiARtySQ0KIAFBAEcgACACQSdqS3ENCyAEELwFDAYLIBBBAkYNAwJAIAVFDQAgBC0AACIBQf8BRg0AIANB6A5qIgIgBEEBakHPAPwKAAAgACABOgAAIABBAWogAkHPAPwKAAAgBUHQAGtB0ABuIQEgBUHQAEcEQCAEQdAAaiECA0AgAhCvBCACQdAAaiECIAFBAWsiAQ0ACwsgBkUNBiAEIAZB0ABsENkSDAYLQcyVxgAQnRUACyAAIAE2AgwgACAENgIIIAAgBjYCBCAAQQA6AAAMBAsgACABNgIMIAAgBDYCCCAAIAY2AgQgAEEBOgAADAMLIAAgATYCDCAAIAQ2AgggACAGNgIEIABBAjoAAAwCCyAAQQE2AgwgACAENgIIIAAgBjYCBCAAQQI6AAAMAQsCQAJAAkAgEEEBaw4CAQIACyAAQQA2AgwgACAENgIIIAAgBjYCBCAAQQA6AAAMAgsgAEEANgIMIAAgBDYCCCAAIAY2AgQgAEEBOgAADAELIABBADYCDCAAIAQ2AgggACAGNgIEIABBAjoAAAsgAygCgAFBf0cEQCADQdAAahCNAwsgAygCCEECSw0AIANBCGoQrgcLIBFBAWtBfk8NAQsgD0EEaygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyARakkNASABQQBHIAAgEUEnaktxDQIgDxC8BQsgA0GQEGokAA8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0G48MkAQQE6AAAAC+t0Agx/AX4jAEHwCGsiCyQAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AAEEORgRAIAZFDQEgAi0AGCEPIAIoAhQhDSACKAIQIQ4gAigCDCESIAIoAgghFgJAAkACQCACKAIEDgMAAQIBCyALQcAHaiABEIYCQX4hAiABKAJQIgZBfkcEQEF/IQIgASgCWCEJIAEoAlQhDAJAIAZBf0YEQCAMIQYMAQsgCUUEQEEBIQZBACECDAELIAkQkAEiBkUNDSAJBEAgBiAMIAn8CgAACyAJIQILIAatIAmtQiCGhCEXCyALQZAGaiALQcAHakHQAPwKAAACQCAORQRAQQEhBgwBCyAOEJABIgZFDQwgDkUNACAGIBIgDvwKAAALQeAAEJABIglFDQwgCSALQZAGakHQAPwKAAAgCSAXNwJUIAkgAjYCUEHIARCQASICRQ0MIAJBfjYCuAEgAkEAOgAYIAIgCTYCFCACIA42AhAgAiAGNgIMIAIgDjYCCCACQgw3AwAgC0F+NgKYAiALIAI2AswBIAtBBjYCyAFB4AAQkAEiBkUNDCAGIAFB4AD8CgAAQcgBEJABIgJFDQxBfiEJIAJBfjYCuAEgAkEBOgAYIAIgBjYCFCACIA42AhAgAiASNgIMIAIgFjYCCCACQgw3AwAMBgsgC0HAB2ogARCGAkF+IRMgASgCUCIJQX5HBEBBfyETIAEoAlghAiABKAJUIQYCQCAJQX9GBEAgBiEJDAELIAJFBEBBASEJQQAhEwwBCyACEJABIglFDQwgAgRAIAkgBiAC/AoAAAsgAiETCyAJrSACrUIghoQhFwsgC0GQBmogC0HAB2pB0AD8CgAAIA5BDGwhFAJ/IA5FBEBBBCEQQQQMAQsgFBCQASIQRQ0EQQAhCSASIQYgDiECA0AgCSAURwRAAkAgBkEIaigCACIRRQRAQQEhDAwBCyAGQQRqKAIAIRUgERCQASIMRQ0OIBFFDQAgDCAVIBH8CgAACyAGQQxqIQYgCSAQaiIVIBE2AgAgFUEIaiARNgIAIBVBBGogDDYCACAJQQxqIQkgAkEBayICDQELCyAQIBRqCyEJQeAAEJABIgZFDQsgBiALQZAGakHQAPwKAAAgBiAXNwJUIAYgEzYCUEHIARCQASICRQ0LIAJBfjYCuAEgAkEAOgAYIAIgBjYCFCACIBA2AgwgAiAONgIIIAJCjICAgBA3AwAgAiAJIBBrQQxuNgIQIAtBfjYCmAIgCyACNgLMASALQQY2AsgBQeAAEJABIgZFDQsgBiABQeAA/AoAAEHIARCQASICRQ0LQX4hCSACQX42ArgBIAJBAToAGCACIAY2AhQgAiASNgIMIAIgFjYCCCACQoyAgIAQNwMAIAIgFEEMbjYCEAwFCyALQcAHaiABEIYCQX4hCUF+IQIgASgCUCIOQX5HBEBBfyEJIAEoAlghBiABKAJUIQICfyAOQX9GBEAgAiEMQX8MAQsgBkUEQEEBIQwgDiEJQQAMAQsgBhCQASIMRQ0LIAYEQCAMIAIgBvwKAAALIAEoAlAhCSAGCyECIAytIAatQiCGhCEXCyALQcgBaiALQcAHakHQAPwKAAAgCyAXNwKcAiALIAI2ApgCIAEoAgQhAiABKAIAIQYgC0G4AmogAUEIakHIAPwKAAAgCyABKAJcNgKwAiALIAEpAlQ3A6gCDAULIAQNAiALIAIpAyg3A+gHIAsgAikDIDcD4AcgCyACKQMYNwPYByALIAIpAxA3A9AHIAsgAikDCDcDyAcgCyACKQMANwPAByAAIAEgC0HAB2ogBSAGIAcgCCAKEE4MBQtBlIjJABCdFQALQQQQpxQACyALIAIpAyg3A+gHIAsgAikDIDcD4AcgCyACKQMYNwPYByALIAIpAxA3A9AHIAsgAikDCDcDyAcgCyACKQMANwPAByAAIAEgC0HAB2ogBSAGIAcgCCAJIAoQPwwCC0EGIQYLIAtBCGogC0HIAWpB4AD8CgAAIAsgAjYCbCALIAY2AmggC0HwAGogC0G4AmpByAD8CgAAIAsgCTYCuAEgCyALKAKwAjYCxAEgCyALKQOoAjcCvAFBfiEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0tAABBAmsOCgMABAEFAgYHCAkNC0Ggq8kAQShBxIfJABCvFAALQaCryQBBKEHkh8kAEK8UAAtBoKvJAEEoQYSIyQAQrxQACyALIA0pAyA3A9gFIAsgDSkDGDcD0AUgCyANKQMQNwPIBSALIA0pAwg3A8AFIA9BAkcEQCALQYAEaiIBIAtByAFqQeAA/AoAACALIAI2AuQEIAsgBjYC4AQgC0HoBGogC0G4AmpByAD8CgAAIAsgCTYCsAUgCyALKQOoAjcCtAUgCyALKAKwAjYCvAUCQAJAAkACQCALKALABUF/RgRAIAtBwAVqQQRyIQwgCygC1AUhBSAPQQFxRQ0BIAtBwAdqIAEQhgJBfiECIAsoAtAEIgZBfkYNBEF/IQIgCygC2AQhASALKALUBCEEIAZBf0cNAiAEIQkMAwsCQAJAAkAgD0EBcQRAIAtBwAdqIAtBgARqEIYCQX4hAiALKALQBCIGQX5GDQNBfyECIAsoAtgEIQEgCygC1AQhBCAGQX9HDQEgBCEGDAILAkAgBARAQeAAEJABIgFFDR8gASACNgIEIAEgBjYCACABQQhqIAtBuAJqQcgA/AoAACABIAk2AlAgASALKQOoAjcCVCABIAsoArACNgJcQcgBEJABIgJFDR8gAkF+NgK4ASACIAE2AgQgAkEGNgIAIAtBwAdqIgEgC0HABWoQ2gpB4AAQkAEiBEUNHyAEIAFB4AD8CgAAQeAAEJABIgFFDR8gAUF+NgJQIAEgAjYCBCABQQY2AgBByAEQkAEiAkUNHyACQX42ArgBIAIgBDYCBCACQQY2AgBB4AAQkAEiCUUNHyAJQX42AlAgCSACNgIEIAlBBjYCAAwBCyALQcAHaiIEIAtBwAVqENoKQeAAEJABIgFFDR4gASACNgIEIAEgBjYCACABQQhqIAtBuAJqQcgA/AoAACABIAk2AlAgASALKQOoAjcCVCABIAsoArACNgJcQeAAEJABIglFDR4gCSAEQeAA/AoAAAtB4AAQkAEhBCADRQRAIARFDR4gBCALQcgBakHgAPwKAABBwAEQkAEiAkUNHiACQX42ArABIAJBAjYCcCACIAQ2AmwgAkECNgJoIAJCi4CAgPCBgICAfzcDYCACQX42AlAgAiAJNgIMIAIgATYCCCACQouAgICAgYCAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgAjYCzAcgC0ECNgLIByALQgo3A8AHDBcLIARFDR0gBCALQcgBakHgAPwKAABBwAEQkAEiAkUNHSACQX42ArABIAJBAjYCcCACIAQ2AmwgAkEDNgJoIAJCi4CAgPCBgICAfzcDYCACQX42AlAgAiAJNgIMIAIgATYCCCACQouAgICAgYCAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgAjYCzAcgC0ECNgLIByALQoqAgIAQNwPABwwWCyABRQRAQQEhBkEAIQIMAQsgARCQASIGRQ0bIAEEQCAGIAQgAfwKAAALIAEhAgsgBq0gAa1CIIaEIRcLIAtBkAZqIgYgC0HAB2oiAUHQAPwKAAAgASAFIAtBwAVqIAoQoQEgC0GkA2ogAUHIAPwKAABB4AAQkAEiBEUNGiAEIAZB0AD8CgAAIAQgFzcCVCAEIAI2AlBB4AAQkAEiBUUNGiAFQQA2AgAgBUEEaiALQaADakHMAPwKAAAgBUF+NgJQQeAAEJABIQIgA0UEQCACRQ0bIAIgC0HIAWpB4AD8CgAAQcABEJABIgFFDRsgAUF+NgKwASABQQA2AnAgASACNgJsIAFBAjYCaCABQouAgIDwgYCAgH83A2AgAUF+NgJQIAEgBTYCECABIAQ2AgwgAUEANgIIIAFCi4CAgPCBgICAfzcDACALQX42ApAIIAtBAjYC0AcgCyABNgLMByALQQI2AsgHIAtCCjcDwAcMEwsgAkUNGiACIAtByAFqQeAA/AoAAEHAARCQASIBRQ0aIAFBfjYCsAEgAUEANgJwIAEgAjYCbCABQQM2AmggAUKLgICA8IGAgIB/NwNgIAFBfjYCUCABIAU2AhAgASAENgIMIAFBADYCCCABQouAgIDwgYCAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgATYCzAcgC0ECNgLIByALQoqAgIAQNwPABwwSCwJAIAQEQEHgABCQASIBRQ0bIAEgAjYCBCABIAY2AgAgAUEIaiALQbgCakHIAPwKAAAgASAJNgJQIAEgCykDqAI3AlQgASALKAKwAjYCXEHIARCQASIERQ0bIARBfjYCuAEgBCABNgIEIARBBjYCAEGgAhCQASIBRQ0bIAtBwAdqIgIgDCAKQQAQiQIgC0GQBmoiBiACIAcgCBCqDkGwARCQASICRQ0bIAIgBkGwAfwKAAAgAUF+NgKwASABIAI2AmQgAUEDNgJgIAFBfjYCkAIgAUEBNgLkASABQaSIyQA2AuABIAFBfzYC3AEgAUEEOgDYASABQX42AsgBIAFBAjYCwAEgAUF+NgJQIAFBATYCJCABQaSIyQA2AiAgAUF/NgIcIAFBBDoAGCABQX42AgggAUECNgIAQcgBEJABIgJFDRsgAkF+NgK4ASACQQM2AgwgAiABNgIIIAJCi4CAgDA3AwBB4AAQkAEiAUUNGyABQX42AlAgASACNgIEIAFBBjYCAEHgABCQASIMRQ0bIAxBfjYCUCAMIAQ2AgQgDEEGNgIAQcgBEJABIgJFDRsgAkF+NgK4ASACIAE2AgQgAkEGNgIAQeAAEJABIgENAQwbC0GgAhCQASIBRQ0aIAtBwAdqIgQgDCAKQQAQiQIgC0GQBmoiCiAEIAcgCBCqDkGwARCQASIERQ0aIAQgCkGwAfwKAAAgAUF+NgKwASABIAQ2AmQgAUEDNgJgIAFBfjYCkAIgAUEBNgLkASABQaSIyQA2AuABIAFBfzYC3AEgAUEEOgDYASABQX42AsgBIAFBAjYCwAEgAUF+NgJQIAFBATYCJCABQaSIyQA2AiAgAUF/NgIcIAFBBDoAGCABQX42AgggAUECNgIAQeAAEJABIgxFDRogDCACNgIEIAwgBjYCACAMQQhqIAtBuAJqQcgA/AoAACAMIAk2AlAgDCALKQOoAjcCVCAMIAsoArACNgJcQcgBEJABIgJFDRogAkF+NgK4ASACQQM2AgwgAiABNgIIIAJCi4CAgDA3AwBB4AAQkAEiAUUNGgsgAUF+NgJQIAEgAjYCBCABQQY2AgBB4AAQkAEhBAJ/IANFBEAgBEUNGyAEIAtBgARqQeAA/AoAAEHAARCQASICBEBBAiEKQQAMAgsMGwsgBEUNGiAEIAtBgARqQeAA/AoAAEHAARCQASICRQ0aQQMhCkEBCyEDIAJBfjYCsAEgAkECNgJwIAIgBDYCbCACIAo2AmggAkKLgICA8IGAgIB/NwNgIAJBfjYCUCACIAE2AgwgAiAMNgIIIAJCi4CAgICBgICAfzcDACALQX42ApAIIAtBAjYC0AcgCyACNgLMByALQQI2AsgHIAsgAzYCxAcgC0EKNgLAByAFIAUoAgAiAUEBazYCACABQQFHDRIgBRAwDBILIAFFBEBBASEJQQAhAgwBCyABEJABIglFDRcgAQRAIAkgBCAB/AoAAAsgASECCyAJrSABrUIghoQhFwsgC0GgA2oiBiALQcAHaiIBQdAA/AoAACABIAwgCkEAEIkCIAtBkAZqIgkgASAHIAgQqg5B4AAQkAEiBEUNFiAEIAZB0AD8CgAAIAQgFzcCVCAEIAI2AlBBsAEQkAEiAUUNFiABIAlBsAH8CgAAQeAAEJABIgZFDRYgBkF+NgJQIAYgATYCBCAGQQM2AgBB4AAQkAEhAQJ/IANFBEAgAUUNGCABIAtByAFqQeAA/AoAAEHAARCQASICBEBBACEMQQIMAgsMGAsgAUUNFyABIAtByAFqQeAA/AoAAEHAARCQASICRQ0XQQEhDEEDCyEDIAJBfjYCsAEgAkEANgJwIAIgATYCbCACIAM2AmggAkKLgICA8IGAgIB/NwNgIAJBfjYCUCACIAY2AhAgAiAENgIMIAJBADYCCCACQouAgIDwgYCAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgAjYCzAcgC0ECNgLIByALIAw2AsQHIAtBCjYCwAcgBSAFKAIAIgFBAWs2AgAgAUEBRgRAIAUQMAsgCygCsAUhCQwOC0G0h8kAEJ0VAAsgCyANKQMgNwOYAyALIA0pAxg3A5ADIAsgDSkDEDcDiAMgCyANKQMINwOAAyALQaADaiALQcgBaiIBQeAA/AoAACAPQQJHBEAgC0GABGoiDCABQeAA/AoAACALIAI2AuQEIAsgBjYC4AQgC0HoBGogC0G4AmpByAD8CgAAIAsgCTYCsAUgCyALKQOoAjcCtAUgCyALKAKwAjYCvAUCQAJAAkACQCALKAKAA0F/RgRAIAtBgANqQQRyIQUgCygClAMhDiAPQQFxRQ0BIAtBwAdqIAwQhgJBfiEJIAsoAtAEIgRBfkYNBEF/IQkgCygC2AQhASALKALUBCECIARBf0cNAiACIQYMAwsCQAJAAkAgD0EBcQRAIAtBwAdqIAtBgARqEIYCQX4hASALKALQBCIGQX5GDQNBfyEBIAsoAtgEIQIgCygC1AQhBCAGQX9HDQEgBCEGDAILAkAgBARAQeAAEJABIgFFDR4gASACNgIEIAEgBjYCACABQQhqIAtBuAJqQcgA/AoAACABIAk2AlAgASALKQOoAjcCVCABIAsoArACNgJcQcgBEJABIgJFDR4gAkF+NgK4ASACIAE2AgQgAkEGNgIAIAtBwAdqIgEgC0GAA2oQ3gtB4AAQkAEiBEUNHiAEIAFB4AD8CgAAQeAAEJABIgFFDR4gAUF+NgJQIAEgAjYCBCABQQY2AgBByAEQkAEiAkUNHiACQX42ArgBIAIgBDYCBCACQQY2AgBB4AAQkAEiCUUNHiAJQX42AlAgCSACNgIEIAlBBjYCAAwBCyALQcAHaiIEIAtBgANqEN4LQeAAEJABIgFFDR0gASACNgIEIAEgBjYCACABQQhqIAtBuAJqQcgA/AoAACABIAk2AlAgASALKQOoAjcCVCABIAsoArACNgJcQeAAEJABIglFDR0gCSAEQeAA/AoAAAtB4AAQkAEhBCADRQRAIARFDR0gBCALQcgBakHgAPwKAABBwAEQkAEiAkUNHSACQX42ArABIAJBAjYCcCACIAQ2AmwgAkECNgJoIAJCi4CAgPCBgICAfzcDYCACQX42AlAgAiAJNgIMIAIgATYCCCACQouAgICAgYCAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgAjYCzAcgC0ECNgLIByALQgo3A8AHDBYLIARFDRwgBCALQcgBakHgAPwKAABBwAEQkAEiAkUNHCACQX42ArABIAJBAjYCcCACIAQ2AmwgAkEDNgJoIAJCi4CAgPCBgICAfzcDYCACQX42AlAgAiAJNgIMIAIgATYCCCACQouAgICAgYCAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgAjYCzAcgC0ECNgLIByALQoqAgIAQNwPABwwVCyACRQRAQQEhBkEAIQEMAQsgAhCQASIGRQ0aIAIEQCAGIAQgAvwKAAALIAIhAQsgBq0gAq1CIIaEIRcLIAtBkAZqIgQgC0HAB2oiAkHQAPwKAAAgAiAFIAtBgANqIAoQoQEgC0HEBWogAkHIAPwKAABB4AAQkAEiAkUNGSACIARB0AD8CgAAIAIgFzcCVCACIAE2AlBByAEQkAEiAUUNGSABQX42ArgBIAEgAjYCBCABQQ42AgBB4AAQkAEiBEUNGSAEQX42AlAgBCABNgIEIARBBjYCAEHgABCQASIFRQ0ZIAVBADYCACAFQQRqIAtBwAVqQcwA/AoAACAFQX42AlBB4AAQkAEhAiADRQRAIAJFDRogAiALQcgBakHgAPwKAABBwAEQkAEiAUUNGiABQX42ArABIAFBADYCcCABIAI2AmwgAUECNgJoIAFCi4CAgPCBgICAfzcDYCABQX42AlAgASAFNgIMIAEgBDYCCCABQouAgICAgICAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgATYCzAcgC0ECNgLIByALQgo3A8AHDBELIAJFDRkgAiALQcgBakHgAPwKAABBwAEQkAEiAUUNGSABQX42ArABIAFBADYCcCABIAI2AmwgAUEDNgJoIAFCi4CAgPCBgICAfzcDYCABQX42AlAgASAFNgIMIAEgBDYCCCABQouAgICAgICAgH83AwAgC0F+NgKQCCALQQI2AtAHIAsgATYCzAcgC0ECNgLIByALQoqAgIAQNwPABwwQCwJAIAQEQEHgABCQASIBRQ0aIAEgAjYCBCABIAY2AgAgAUEIaiALQbgCakHIAPwKAAAgASAJNgJQIAEgCykDqAI3AlQgASALKAKwAjYCXEHIARCQASIERQ0aIARBfjYCuAEgBCABNgIEIARBBjYCAEHAARCQASIBRQ0aIAtBwAdqIgIgBSAKQQAQiQIgC0GQBmoiBSACIAcgCBCqDkGwARCQASICRQ0aIAIgBUGwAfwKAAAgAUF+NgJQIAEgAjYCBCABQQM2AgAgAUF+NgKwASABQQE2AoQBIAFBpIjJADYCgAEgAUF/NgJ8IAFBBDoAeCABQX42AmggAUECNgJgQcgBEJABIgJFDRogAkF+NgK4ASACQQI2AgwgAiABNgIIIAJCi4CAgCA3AwBB4AAQkAEiAUUNGiABQX42AlAgASACNgIEIAFBBjYCAEHgABCQASIFRQ0aIAVBfjYCUCAFIAQ2AgQgBUEGNgIAQcgBEJABIgJFDRogAkF+NgK4ASACIAE2AgQgAkEGNgIAQeAAEJABIgkNAQwaC0HAARCQASIBRQ0ZIAtBwAdqIgQgBSAKQQAQiQIgC0GQBmoiBSAEIAcgCBCqDkGwARCQASIERQ0ZIAQgBUGwAfwKAAAgAUF+NgJQIAEgBDYCBCABQQM2AgAgAUF+NgKwASABQQE2AoQBIAFBpIjJADYCgAEgAUF/NgJ8IAFBBDoAeCABQX42AmggAUECNgJgQeAAEJABIgVFDRkgBSACNgIEIAUgBjYCACAFQQhqIAtBuAJqQcgA/AoAACAFIAk2AlAgBSALKQOoAjcCVCAFIAsoArACNgJcQcgBEJABIgJFDRkgAkF+NgK4ASACQQI2AgwgAiABNgIIIAJCi4CAgCA3AwBB4AAQkAEiCUUNGQsgCUF+NgJQIAkgAjYCBCAJQQY2AgBB4AAQkAEhAQJ/IANFBEAgAUUNGiABIAtBoANqQeAA/AoAAEHAARCQASICBEBBACEMQQIMAgsMGgsgAUUNGSABIAtBoANqQeAA/AoAAEHAARCQASICRQ0ZQQEhDEEDCyEDIAJBfjYCsAEgAkECNgJwIAIgATYCbCACIAM2AmggAkKLgICA8IGAgIB/NwNgIAJBfjYCUCACIAk2AgwgAiAFNgIIIAJCi4CAgICBgICAfzcDACALQX42ApAIIAtBAjYC0AcgCyACNgLMByALQQI2AsgHIAsgDDYCxAcgC0EKNgLAByAOIA4oAgAiAUEBazYCACABQQFHDREgDhAwDBELIAFFBEBBASEGQQAhCQwBCyABEJABIgZFDRYgAQRAIAYgAiAB/AoAAAsgASEJCyAGrSABrUIghoQhFwsgC0HABWoiAiALQcAHaiIBQdAA/AoAACABIAUgCkEAEIkCIAtBkAZqIgUgASAHIAgQqg5B4AAQkAEiAUUNFSABIAJB0AD8CgAAIAEgFzcCVCABIAk2AlBByAEQkAEiAkUNFSACQX42ArgBIAIgATYCBCACQQ42AgBB4AAQkAEiBEUNFSAEQX42AlAgBCACNgIEIARBBjYCAEGwARCQASIBRQ0VIAEgBUGwAfwKAABB4AAQkAEiBUUNFSAFQX42AlAgBSABNgIEIAVBAzYCAEHgABCQASEBAn8gA0UEQCABRQ0XIAEgC0HIAWpB4AD8CgAAQcABEJABIgIEQEEAIQxBAgwCCwwXCyABRQ0WIAEgC0HIAWpB4AD8CgAAQcABEJABIgJFDRZBASEMQQMLIQMgAkF+NgKwASACQQA2AnAgAiABNgJsIAIgAzYCaCACQouAgIDwgYCAgH83A2AgAkF+NgJQIAIgBTYCDCACIAQ2AgggAkKLgICAgICAgIB/NwMAIAtBfjYCkAggC0ECNgLQByALIAI2AswHIAtBAjYCyAcgCyAMNgLEByALQQo2AsAHIA4gDigCACIBQQFrNgIAIAFBAUYEQCAOEDALIAsoArAFIQkMDAtB1IfJABCdFQALIAsgDSkDIDcDmAMgCyANKQMYNwOQAyALIA0pAxA3A4gDIAsgDSkDCDcDgAMgC0GgA2ogC0HIAWoiAUHgAPwKAAAgD0ECRwRAIAtBgARqIgwgAUHgAPwKAAAgCyACNgLkBCALIAY2AuAEIAtB6ARqIAtBuAJqQcgA/AoAACALIAk2ArAFIAsgCykDqAI3ArQFIAsgCygCsAI2ArwFAkACQAJAAkAgCygCgANBf0YEQCALQYADakEEciEFIAsoApQDIQ4gD0EBcUUNASALQcAHaiAMEIYCQX4hCSALKALQBCIEQX5GDQRBfyEJIAsoAtgEIQEgCygC1AQhAiAEQX9HDQIgAiEGDAMLAkACQAJAIA9BAXEEQCALQcAHaiALQYAEahCGAkF+IQEgCygC0AQiBkF+Rg0DQX8hASALKALYBCECIAsoAtQEIQQgBkF/Rw0BIAQhBgwCCwJAIAQEQEHgABCQASIBRQ0dIAEgAjYCBCABIAY2AgAgAUEIaiALQbgCakHIAPwKAAAgASAJNgJQIAEgCykDqAI3AlQgASALKAKwAjYCXEHIARCQASICRQ0dIAJBfjYCuAEgAiABNgIEIAJBBjYCACALQcAHaiIBIAtBgANqENcLQeAAEJABIgRFDR0gBCABQeAA/AoAAEHgABCQASIBRQ0dIAFBfjYCUCABIAI2AgQgAUEGNgIAQcgBEJABIgJFDR0gAkF+NgK4ASACIAQ2AgQgAkEGNgIAQeAAEJABIglFDR0gCUF+NgJQIAkgAjYCBCAJQQY2AgAMAQsgC0HAB2oiBCALQYADahDXC0HgABCQASIBRQ0cIAEgAjYCBCABIAY2AgAgAUEIaiALQbgCakHIAPwKAAAgASAJNgJQIAEgCykDqAI3AlQgASALKAKwAjYCXEHgABCQASIJRQ0cIAkgBEHgAPwKAAALQeAAEJABIQQgA0UEQCAERQ0cIAQgC0HIAWpB4AD8CgAAQcABEJABIgJFDRwgAkF+NgKwASACQQI2AnAgAiAENgJsIAJBAjYCaCACQouAgIDwgYCAgH83A2AgAkF+NgJQIAIgCTYCDCACIAE2AgggAkKLgICAgIGAgIB/NwMAIAtBfjYCkAggC0ECNgLQByALIAI2AswHIAtBAjYCyAcgC0IKNwPABwwVCyAERQ0bIAQgC0HIAWpB4AD8CgAAQcABEJABIgJFDRsgAkF+NgKwASACQQI2AnAgAiAENgJsIAJBAzYCaCACQouAgIDwgYCAgH83A2AgAkF+NgJQIAIgCTYCDCACIAE2AgggAkKLgICAgIGAgIB/NwMAIAtBfjYCkAggC0ECNgLQByALIAI2AswHIAtBAjYCyAcgC0KKgICAEDcDwAcMFAsgAkUEQEEBIQZBACEBDAELIAIQkAEiBkUNGSACBEAgBiAEIAL8CgAACyACIQELIAatIAKtQiCGhCEXCyALQZAGaiIEIAtBwAdqIgJB0AD8CgAAIAIgBSALQYADaiAKEKEBIAtBxAVqIAJByAD8CgAAQeAAEJABIgJFDRggAiAEQdAA/AoAACACIBc3AlQgAiABNgJQQcgBEJABIgFFDRggAUF+NgK4ASABIAI2AgQgAUENNgIAQeAAEJABIgRFDRggBEF+NgJQIAQgATYCBCAEQQY2AgBB4AAQkAEiBUUNGCAFQQA2AgAgBUEEaiALQcAFakHMAPwKAAAgBUF+NgJQQeAAEJABIQIgA0UEQCACRQ0ZIAIgC0HIAWpB4AD8CgAAQcABEJABIgFFDRkgAUF+NgKwASABQQA2AnAgASACNgJsIAFBAjYCaCABQouAgIDwgYCAgH83A2AgAUF+NgJQIAEgBTYCDCABIAQ2AgggAUKLgICAgICAgIB/NwMAIAtBfjYCkAggC0ECNgLQByALIAE2AswHIAtBAjYCyAcgC0IKNwPABwwPCyACRQ0YIAIgC0HIAWpB4AD8CgAAQcABEJABIgFFDRggAUF+NgKwASABQQA2AnAgASACNgJsIAFBAzYCaCABQouAgIDwgYCAgH83A2AgAUF+NgJQIAEgBTYCDCABIAQ2AgggAUKLgICAgICAgIB/NwMAIAtBfjYCkAggC0ECNgLQByALIAE2AswHIAtBAjYCyAcgC0KKgICAEDcDwAcMDgsCQCAEBEBB4AAQkAEiAUUNGSABIAI2AgQgASAGNgIAIAFBCGogC0G4AmpByAD8CgAAIAEgCTYCUCABIAspA6gCNwJUIAEgCygCsAI2AlxByAEQkAEiBEUNGSAEQX42ArgBIAQgATYCBCAEQQY2AgBBwAEQkAEiAUUNGSALQcAHaiICIAUgCkEAEIkCIAtBkAZqIgUgAiAHIAgQqg5BsAEQkAEiAkUNGSACIAVBsAH8CgAAIAFBfjYCsAEgASACNgJkIAFBAzYCYCABQX42AlAgAUEBNgIkIAFBpIjJADYCICABQX82AhwgAUEEOgAYIAFBfjYCCCABQQI2AgBByAEQkAEiAkUNGSACQX42ArgBIAJBAjYCDCACIAE2AgggAkKLgICAIDcDAEHgABCQASIBRQ0ZIAFBfjYCUCABIAI2AgQgAUEGNgIAQeAAEJABIgVFDRkgBUF+NgJQIAUgBDYCBCAFQQY2AgBByAEQkAEiAkUNGSACQX42ArgBIAIgATYCBCACQQY2AgBB4AAQkAEiCQ0BDBkLQcABEJABIgFFDRggC0HAB2oiBCAFIApBABCJAiALQZAGaiIFIAQgByAIEKoOQbABEJABIgRFDRggBCAFQbAB/AoAACABQX42ArABIAEgBDYCZCABQQM2AmAgAUF+NgJQIAFBATYCJCABQaSIyQA2AiAgAUF/NgIcIAFBBDoAGCABQX42AgggAUECNgIAQeAAEJABIgVFDRggBSACNgIEIAUgBjYCACAFQQhqIAtBuAJqQcgA/AoAACAFIAk2AlAgBSALKQOoAjcCVCAFIAsoArACNgJcQcgBEJABIgJFDRggAkF+NgK4ASACQQI2AgwgAiABNgIIIAJCi4CAgCA3AwBB4AAQkAEiCUUNGAsgCUF+NgJQIAkgAjYCBCAJQQY2AgBB4AAQkAEhAQJ/IANFBEAgAUUNGSABIAtBoANqQeAA/AoAAEHAARCQASICBEBBACEMQQIMAgsMGQsgAUUNGCABIAtBoANqQeAA/AoAAEHAARCQASICRQ0YQQEhDEEDCyEDIAJBfjYCsAEgAkECNgJwIAIgATYCbCACIAM2AmggAkKLgICA8IGAgIB/NwNgIAJBfjYCUCACIAk2AgwgAiAFNgIIIAJCi4CAgICBgICAfzcDACALQX42ApAIIAtBAjYC0AcgCyACNgLMByALQQI2AsgHIAsgDDYCxAcgC0EKNgLAByAOIA4oAgAiAUEBazYCACABQQFHDRAgDhAwDBALIAFFBEBBASEGQQAhCQwBCyABEJABIgZFDRUgAQRAIAYgAiAB/AoAAAsgASEJCyAGrSABrUIghoQhFwsgC0HABWoiAiALQcAHaiIBQdAA/AoAACABIAUgCkEAEIkCIAtBkAZqIgUgASAHIAgQqg5B4AAQkAEiAUUNFCABIAJB0AD8CgAAIAEgFzcCVCABIAk2AlBByAEQkAEiAkUNFCACQX42ArgBIAIgATYCBCACQQ02AgBB4AAQkAEiBEUNFCAEQX42AlAgBCACNgIEIARBBjYCAEGwARCQASIBRQ0UIAEgBUGwAfwKAABB4AAQkAEiBUUNFCAFQX42AlAgBSABNgIEIAVBAzYCAEHgABCQASEBAn8gA0UEQCABRQ0WIAEgC0HIAWpB4AD8CgAAQcABEJABIgIEQEEAIQxBAgwCCwwWCyABRQ0VIAEgC0HIAWpB4AD8CgAAQcABEJABIgJFDRVBASEMQQMLIQMgAkF+NgKwASACQQA2AnAgAiABNgJsIAIgAzYCaCACQouAgIDwgYCAgH83A2AgAkF+NgJQIAIgBTYCDCACIAQ2AgggAkKLgICAgICAgIB/NwMAIAtBfjYCkAggC0ECNgLQByALIAI2AswHIAtBAjYCyAcgCyAMNgLEByALQQo2AsAHIA4gDigCACIBQQFrNgIAIAFBAUYEQCAOEDALIAsoArAFIQkMCgtB9IfJABCdFQALIAsgDSkDIDcDmAQgCyANKQMYNwOQBCALIA0pAxA3A4gEIAsgDSkDCDcDgAQgC0HAB2ogC0EIahCGAiALKAJYIgZBfkcEQEF/IQEgCygCYCECIAsoAlwhBAJAIAZBf0YEQCAEIQkMAQsgAkUEQEEBIQlBACEBDAELIAIQkAEiCUUNEyACBEAgCSAEIAL8CgAACyACIQELIAmtIAKtQiCGhCEXCyALQZAGaiALQcAHakHQAPwKAAACQCALKAKABEF/RgRAIAsoApQEIgIoAgAhBCACIARBAWo2AgAgBEEASA0FIAsgCykCjAQ3AuwEIAsgCykChAQ3AuQEIAsgAjYC9AQgC0F/NgLgBAwBCyALQeAEaiALQYAEahCQAwsgC0HAB2oiBCAFIAtB4ARqIgIgByAIIAoQxQ5B4AAQkAEiBUUNEiAFIAtBkAZqQdAA/AoAACAFIBc3AlQgBSABNgJQQeAAEJABIgFFDRIgASAEQeAA/AoAACALIAE2AugEIAsgBTYC5AQgC0GCgICAeDYC4AQMBwsgCyANKQMgNwOYBCALIA0pAxg3A5AEIAsgDSkDEDcDiAQgCyANKQMINwOABCALQcAHaiALQQhqEIYCIAsoAlgiBkF+RwRAQX8hASALKAJgIQIgCygCXCEEAkAgBkF/RgRAIAQhCQwBCyACRQRAQQEhCUEAIQEMAQsgAhCQASIJRQ0SIAIEQCAJIAQgAvwKAAALIAIhAQsgCa0gAq1CIIaEIRcLIAtBkAZqIAtBwAdqQdAA/AoAAAJAIAsoAoAEQX9GBEAgCygClAQiAigCACEEIAIgBEEBajYCACAEQQBIDQQgCyALKQKMBDcC7AQgCyALKQKEBDcC5AQgCyACNgL0BCALQX82AuAEDAELIAtB4ARqIAtBgARqEJADCyALQcAHaiIEIAUgC0HgBGoiAiAHIAggChDFDkHgABCQASIFRQ0RIAUgC0GQBmpB0AD8CgAAIAUgFzcCVCAFIAE2AlBB4AAQkAEiAUUNESABIARB4AD8CgAAIAsgATYC6AQgCyAFNgLkBCALQYOAgIB4NgLgBAwGCyALIA0pAyA3A5gEIAsgDSkDGDcDkAQgCyANKQMQNwOIBCALIA0pAwg3A4AEIAtBwAdqIAtBCGoQhgIgCygCWCIGQX5HBEBBfyEBIAsoAmAhAiALKAJcIQQCQCAGQX9GBEAgBCEJDAELIAJFBEBBASEJQQAhAQwBCyACEJABIglFDREgAgRAIAkgBCAC/AoAAAsgAiEBCyAJrSACrUIghoQhFwsgC0GQBmogC0HAB2pB0AD8CgAAAkAgCygCgARBf0YEQCALKAKUBCICKAIAIQQgAiAEQQFqNgIAIARBAEgNAyALIAspAowENwLsBCALIAspAoQENwLkBCALIAI2AvQEIAtBfzYC4AQMAQsgC0HgBGogC0GABGoQkAMLIAtBwAdqIgQgBSALQeAEaiICIAcgCCAKEMUOQeAAEJABIgVFDRAgBSALQZAGakHQAPwKAAAgBSAXNwJUIAUgATYCUEHgABCQASIBRQ0QIAEgBEHgAPwKAAAgCyABNgLoBCALIAU2AuQEIAtBhICAgHg2AuAEDAULIAsgDSkDIDcDmAQgCyANKQMYNwOQBCALIA0pAxA3A4gEIAsgDSkDCDcDgAQgC0HAB2ogC0EIahCGAiALKAJYIgZBfkcEQEF/IQEgCygCYCECIAsoAlwhBAJAIAZBf0YEQCAEIQkMAQsgAkUEQEEBIQlBACEBDAELIAIQkAEiCUUNECACBEAgCSAEIAL8CgAACyACIQELIAmtIAKtQiCGhCEXCyALQZAGaiALQcAHakHQAPwKAAAgCygCgARBf0cNASALKAKUBCICKAIAIQQgAiAEQQFqNgIAIARBAEgNACALIAspAowENwLsBCALIAspAoQENwLkBCALIAI2AvQEIAtBfzYC4AQMAgsACyALQeAEaiALQYAEahCQAwsgC0HAB2oiBCAFIAtB4ARqIgIgByAIIAoQxQ5B4AAQkAEiBUUNDCAFIAtBkAZqQdAA/AoAACAFIBc3AlQgBSABNgJQQeAAEJABIgFFDQwgASAEQeAA/AoAACALIAE2AugEIAsgBTYC5AQgC0GFgICAeDYC4AQMAQsgCyANKQMoNwO4BiALIA0pAyA3A7AGIAsgDSkDGDcDqAYgCyANKQMQNwOgBiALIA0pAwg3A5gGIAsgDSkDADcDkAYCQCAERQRAIAtB4ARqIAtByAFqIAtBkAZqIAVBASAHIAggChBODAELQeAAEJABIgJFDQwgAiALQcgBakHgAPwKAABByAEQkAEiAUUNDCABQX42ArgBIAEgAjYCBCABQRc2AgAgC0F+NgKQCCALIAE2AsQHIAtBBjYCwAcgC0HgBGogC0HAB2ogC0GQBmogBUEBIAcgCEEAIAoQPwsgC0EKNgLAByALIAspAuAENwLEByALIAspAugENwLMByALQX42ApAIQeAAEJABIgFFDQsgASALQcAHakHgAPwKAAAgAEEDNgIAIAAgATYCBCALQegAahDUASALKAK4ASIAQQBMDQYgCygCvAEiAkEEaygCACIDQXhxIQEgAUEEQQggA0EDcSIDGyAAakkNCCADQQBHIAEgAEEnaktxDQkgAhC8BQwGCyALQQhqIQYjAEHwAmsiASQAAkACQAJAAkACQAJAAkAgC0GABGoiBSgCACIJQX9HBEAgCUETRw0BIAUoAgQhCiAFKAIIIQcgASAFKAIMIgU2AiQgASAHNgIgIAFCADcCGCABIAU2AhQgASAHNgIQIAFBwAFqIAFBEGoQpAggASgC0AFBf0YNAiABIAEpA+gBNwM4IAEgASkD4AE3AzAgASABKQPYATcDKCABIAEpA9ABIhc3AyAgASABKQPIATcDGCABIAEpA8ABNwMQAkACQAJAQQUgF6ciBUGAgICAeHMgBUEAThtBAmsOAgECAAsgASABKQM4NwPoASABIAEpAzA3A+ABIAEgASkDKDcD2AEgASABKQMgNwPQASABIAEpAxg3A8gBIAEgASkDEDcDwAEgASABQcABaq1CgICAgIAvhDcDCEHPpMAAIAFBCGpBzInJABC/EwALQeAAEJABIQUgA0UEQCAFRQ0UIAUgBkHgAPwKAABBwAEQkAEiAwRAQQAhBkEDIQhBAiEJDAYLDBQLIAVFDRMgBSAGQeAA/AoAAEHAARCQASIDRQ0TQQEhBkEDIQlBAyEIDAQLQeAAEJABIQUgA0UEQCAFRQ0TIAUgBkHgAPwKAABBwAEQkAEiAwRAQQAhBkECIQlBAiEIDAULDBMLIAVFDRIgBSAGQeAA/AoAAEHAARCQASIDBEBBASEGQQIhCEEDIQkMBAsMEgsgBUEEaiEJIAUoAhQhBSADRQRAIAFBwAFqIgMgCSAKQQAQiQIgAUEQaiIJIAMgByAIEKoOQeAAEJABIgdFDRIgByAGQeAA/AoAAEGwARCQASIGRQ0SIAYgCUGwAfwKAABBwAEQkAEiA0UNEiADQQs2AgAgA0F+NgKwASADIAY2AnQgA0EGNgJwIAMgBzYCbCADQQI2AmggA0KLgICA8IGAgIB/NwNgIANBfjYCUCADIAIpAgA3AgQgAyACKQIINwIMIAMgAigCEDYCFCAEQX42AlAgBEECNgIQIAQgAzYCDCAEQQI2AgggBEIKNwMAIAUgBSgCACICQQFrNgIAIAJBAUcNBCAFEDAMBAsgAUHAAWoiAyAJIApBABCJAiABQRBqIgkgAyAHIAgQqg5B4AAQkAEiB0UNESAHIAZB4AD8CgAAQbABEJABIgZFDREgBiAJQbAB/AoAAEHAARCQASIDRQ0RIANBCzYCACADQX42ArABIAMgBjYCdCADQQY2AnAgAyAHNgJsIANBAzYCaCADQouAgIDwgYCAgH83A2AgA0F+NgJQIAMgAikCADcCBCADIAIpAgg3AgwgAyACKAIQNgIUIARBfjYCUCAEQQI2AhAgBCADNgIMIARBAjYCCCAEQoqAgIAQNwMAIAUgBSgCACICQQFrNgIAIAJBAUcNAyAFEDAMAwtBoKvJAEEoQfyJyQAQrxQACyABIAEoAsABNgIQQYiwyQBBKyABQRBqQdyJyQBB7InJABDaEgALIANBCzYCACADQX42ArABIAMgCDYCcCADIAU2AmwgAyAJNgJoIANCi4CAgPCBgICAfzcDYCADQX42AlAgBEF+NgJQIARBAjYCECAEIAM2AgwgBEECNgIIIAQgBjYCBCAEQQo2AgAgAyACKQIANwIEIAMgAikCCDcCDCADIAIoAhA2AhQgAUEQahCBCiAKRQ0AIAdBBGsoAgAiA0F4cSECIAJBBEEIIANBA3EiAxsgCmpJDQEgA0EARyACIApBJ2pLcQ0CIAcQvAULIAFB8AJqJAAMAgtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALAkBB4AAQkAEiAQRAIAEgC0HAB2pB4AD8CgAAIABBAzYCACAAIAE2AgQgC0HoAGoQ1AEgCygCuAEiAEEATA0GIAsoArwBIgJBBGsoAgAiA0F4cSEBIAFBBEEIIANBA3EiAxsgAGpJDQkgA0EARyABIABBJ2pLcQ0BIAIQvAUMBgsMCwsMCAsgC0HgBGoQ1AEgCUEATA0CIAsoArQFIgJBBGsoAgAiA0F4cSEBIAFBBEEIIANBA3EiAxsgCWpJDQYgA0EARyABIAlBJ2pLcUUEQCACELwFDAMLDAcLIAtB4ARqENQBIAlBAEwNASALKAK0BSICQQRrKAIAIgNBeHEhASABQQRBCCADQQNxIgMbIAlqSQ0FIANBAEcgASAJQSdqS3FFBEAgAhC8BQwCCwwGCyALQeAEahDUASAJQQBMDQAgCygCtAUiAkEEaygCACIDQXhxIQEgAUEEQQggA0EDcSIDGyAJakkNBCADQQBHIAEgCUEnaktxRQRAIAIQvAUMAQsMBQtB4AAQkAEiAUUNBiABIAtBwAdqQeAA/AoAACAAQQM2AgAgACABNgIECyANLQAAIgBBC01BAEEBIAB0QdQecRsNACANEOMECyANQQRrKAIAIgBBA3EhASAAQXhxQTRBOCABG0kNASABQQBHIABB2ABPcQ0CIA0QvAULIAtB8AhqJAAPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtBARCnFAALQbjwyQBBAToAAAAL51ICF38BfiAAKAL8AiEHAkACQAJAAkACfwJAIAAoAoADIg0EQANAIAcgDkGQAWxqIgQoAmAiAQRAIAQoAmQiA0EEaygCACIFQXhxIQIgAkEEQQggBUEDcSIFGyABakkNCCAFQQBHIAIgAUEnaktxDQcgAxC8BQsgBCgCECIBQQBKBEAgBCgCFCIDQQRrKAIAIgVBeHEhAiACQQRBCCAFQQNxIgUbIAFqSQ0IIAVBAEcgAiABQSdqS3ENByADELwFCyAEKAIcIgFBAEoEQCAEKAIgIgNBBGsoAgAiBUF4cSECIAJBBEEIIAVBA3EiBRsgAWpJDQggBUEARyACIAFBJ2pLcQ0HIAMQvAULAkAgBCgCKCIBQX5GDQAgAUEASgRAIAQoAiwiA0EEaygCACIFQXhxIQIgAkEEQQggBUEDcSIFGyABakkNCSAFQQBHIAIgAUEnaktxDQggAxC8BQsgBCgCNCIBQQBMDQAgBCgCOCIDQQRrKAIAIgVBeHEhAiACQQRBCCAFQQNxIgUbIAFqSQ0IIAVBAEcgAiABQSdqS3ENByADELwFCwJAIAQoAkQiCEUNACAEKAJMIgYEQCAEKAJAIgFBCGohAiABKQMAQn+FQoCBgoSIkKDAgH+DIRgDQCAYUARAA0AgAiIDQQhqIQIgAUHgAWshASADKQMAQoCBgoSIkKDAgH+DIhhCgIGChIiQoMCAf1ENAAsgGEKAgYKEiJCgwIB/hSEYCyABIBh6p0EDdkFkbGoiA0EcaygCACIFBEAgA0EYaygCACIMQQRrKAIAIglBeHEhCiAKQQRBCCAJQQNxIgkbIAVqSQ0LIAlBAEcgCiAFQSdqS3ENCiAMELwFCyADQQxrIQUCQAJAAkACQAJAIANBEGsoAgAOAgECAAsgBSgCACIFRQ0DIANBCGsoAgAiA0EEaygCACIMQXhxIQogCkEEQQggDEEDcSIMGyAFakkNDiAMRQ0CIAogBUEnak0NAgwNCyAFKAIAIgVFDQIgA0EIaygCACIDQQRrKAIAIgxBeHEhCiAKQQRBCCAMQQNxIgwbIAVqSQ0NIAxFDQEgCiAFQSdqTQ0BDAwLIAUQ2QwgBSgCACIKRQ0BIANBCGsoAgAiA0EEaygCACIMQXhxIQUgBSAKQQR0IgpBBEEIIAxBA3EiDBtySQ0MIAxFDQAgBSAKQSdqSw0LCyADELwFCyAYQgF9IBiDIRggBkEBayIGDQALCyAIQRxsQSNqQXhxIgIgCGpBCWoiAUUNACAEKAJAIAJrIgNBBGsoAgAiBUF4cSECIAJBBEEIIAVBA3EiBRsgAWpJDQggBUEARyACIAFBJ2pLcQ0HIAMQvAULIAQoAnAhAyAEKAJ0IgIEQCADIQEDQCABKAIAIgVBAEoEQCABQQRqKAIAIghBBGsoAgAiCkF4cSEGIAZBBEEIIApBA3EiChsgBWpJDQogCkEARyAGIAVBJ2pLcQ0JIAgQvAULIAFBDGooAgAiBUEASgRAIAFBEGooAgAiCEEEaygCACIKQXhxIQYgBkEEQQggCkEDcSIKGyAFakkNCiAKQQBHIAYgBUEnaktxDQkgCBC8BQsgAUEYaiEBIAJBAWsiAg0ACwsgBCgCbCICBEAgA0EEaygCACIFQXhxIQEgASACQRhsIgJBBEEIIAVBA3EiBRtqSQ0IIAVBAEcgASACQSdqS3ENByADELwFCyAEKAJ4IgFBAEoEQCAEKAJ8IgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQggBEEARyACIAFBJ2pLcQ0HIAMQvAULIA0gDkEBaiIORw0ACwsCQCAAKAL4AiICBEAgB0EEaygCACIDQXhxIQEgASACQZABbCICQQRBCCADQQNxIgMbckkNASADQQBHIAEgAkEnaktxDQYgBxC8BQsgACgCiAMhBwJAIAAoAowDIg4EQEEAIQQDQCAHIARB9ABsaiIFKAIQIgEEQCAFKAIUIgNBBGsoAgAiBkF4cSECIAJBBEEIIAZBA3EiBhsgAWpJDQMgBkEARyACIAFBJ2pLcQ0JIAMQvAULIAUoAhwiAQRAIAUoAiAiA0EEaygCACIGQXhxIQIgAkEEQQggBkEDcSIGGyABakkNCiAGQQBHIAIgAUEnaktxDQkgAxC8BQsgBSgCNCIBQQBKBEAgBSgCOCIDQQRrKAIAIgZBeHEhAiACQQRBCCAGQQNxIgYbIAFqSQ0KIAZBAEcgAiABQSdqS3ENCSADELwFCyAFKAIsIQMgBSgCMCICBEAgAyEBA0AgASgCACIGBEAgAUEEaigCACIKQQRrKAIAIg1BeHEhCCAIQQRBCCANQQNxIg0bIAZqSQ0MIA1BAEcgCCAGQSdqS3ENCyAKELwFCyABQRhqIQEgAkEBayICDQALCyAFKAIoIgIEQCADQQRrKAIAIgZBeHEhASABIAJBGGwiAkEEQQggBkEDcSIGG2pJDQogBkEARyABIAJBJ2pLcQ0JIAMQvAULAkAgBSgCaCIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUcNACAFKAJoIAVB7ABqKAIAELYQCyAOIARBAWoiBEcNAAsLAkAgACgChAMiAgRAIAdBBGsoAgAiA0F4cSEBIAEgAkH0AGwiAkEEQQggA0EDcSIDG2pJDQEgA0EARyABIAJBJ2pLcQ0IIAcQvAULIAAoApQDIQMCQCAAKAKYAyICBEAgAyEBA0AgASgCACIEBEAgAUEEaigCACIHQQRrKAIAIgZBeHEhBSAFQQRBCCAGQQNxIgYbIARqSQ0DIAZBAEcgBSAEQSdqS3ENCyAHELwFCyABQRhqIQEgAkEBayICDQALCwJAIAAoApADIgIEQCADQQRrKAIAIgRBeHEhASABIAJBGGwiAkEEQQggBEEDcSIEG2pJDQEgBEEARyABIAJBJ2pLcQ0KIAMQvAULIAAoApwCIQ4CQCAAKAKgAiIUBEBBACEKA0AgDiAKQSRsaiIHKAIMIgEEQCAHKAIQIgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQMgBEEARyACIAFBJ2pLcQ0NIAMQvAULAkAgBygCAEUNACAHKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRw0AIAcoAgQgB0EIaigCABDIEQsgBygCHCENIAcoAiAiFQRAQQAhDANAAkACfwJAAkACQAJAAkACQEEBIA0gDEHUAGxqIgUoAgAiAUGAgICAeHMgAUEAThsOBAECAwQACyAFKAIEIgEEQCAFKAIIIgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDRcgBEEARyACIAFBJ2pLcQ0WIAMQvAULIAUoAiAhAyAFKAIkIgIEQCADIQEDQCABQUBrKAIAIgQEQCABQcQAaigCACIIQQRrKAIAIglBeHEhBiAGQQRBCCAJQQNxIgkbIARqSQ0ZIAlBAEcgBiAEQSdqS3ENGCAIELwFCyABKAIAQX9HBEAgARCYBAsgAUHkAGohASACQQFrIgINAAsLIAUoAhwiAgRAIANBBGsoAgAiBEF4cSEBIAEgAkHkAGwiAkEEQQggBEEDcSIEG2pJDRcgBEEARyABIAJBJ2pLcQ0WIAMQvAULIAUoAigiAUEASg0EDAYLIAUoAgQiAQRAIAUoAggiA0EEaygCACIEQXhxIQIgAkEEQQggBEEDcSIEGyABakkNFiAEQQBHIAIgAUEnaktxDRUgAxC8BQsgBUEcahC7BCAFKAIoIgFBAEoNAwwFCyABBEAgBSgCBCIDQQRrKAIAIgRBeHEhAiACQQRBCCAEQQNxIgQbIAFqSQ0VIARBAEcgAiABQSdqS3ENFCADELwFCyAFKAIcIQkgBSgCICIWBEBBACEQA0AgCSAQQTxsaiIIKAIAIgEEQCAIKAIEIgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDRcgBEEARyACIAFBJ2pLcQ0WIAMQvAULIAgoAhwhESAIKAIgIhcEQEEAIQQDQCARIARBzABsaiIGKAIoIgEEQCAGKAIsIgNBBGsoAgAiC0F4cSECIAJBBEEIIAtBA3EiCxsgAWpJDRkgC0EARyACIAFBJ2pLcQ0YIAMQvAULIAYoAhQhAyAGKAIYIgIEQCADIQEDQCABQUBrKAIAIgtBAEoEQCABQcQAaigCACITQQRrKAIAIhJBeHEhDyAPQQRBCCASQQNxIhIbIAtqSQ0bIBJBAEcgDyALQSdqS3ENGiATELwFCyABEJgEIAFB5ABqIQEgAkEBayICDQALCyAGKAIQIgIEQCADQQRrKAIAIgtBeHEhASABIAJB5ABsIgJBBEEIIAtBA3EiCxtqSQ0ZIAtBAEcgASACQSdqS3ENGCADELwFCyAGKAIgIQMgBigCJCICBEAgAyEBA0AgASgCACILBEAgAUEEaigCACITQQRrKAIAIhJBeHEhDyAPQQRBCCASQQNxIhIbIAtqSQ0bIBJBAEcgDyALQSdqS3ENGiATELwFCyABQRhqIQEgAkEBayICDQALCyAGKAIcIgIEQCADQQRrKAIAIgZBeHEhASABIAJBGGwiAkEEQQggBkEDcSIGG2pJDRkgBkEARyABIAJBJ2pLcQ0YIAMQvAULIBcgBEEBaiIERw0ACwsgCCgCGCICBEAgEUEEaygCACIDQXhxIQEgASACQcwAbCICQQRBCCADQQNxIgMbakkNFyADQQBHIAEgAkEnaktxDRYgERC8BQsgCCgCJCIBQQBKBEAgCCgCKCIDQQRrKAIAIgRBeHEhAiACQQRBCCAEQQNxIgQbIAFqSQ0XIARBAEcgAiABQSdqS3ENFiADELwFCyAQQQFqIhAgFkcNAAsLIAUoAhgiAgRAIAlBBGsoAgAiA0F4cSEBIAEgAkE8bCICQQRBCCADQQNxIgMbakkNFSADQQBHIAEgAkEnaktxDRQgCRC8BQsgBSgCKCEIIAUoAiwiEQRAQQAhBANAIAggBEHMAGxqIgYoAigiAQRAIAYoAiwiA0EEaygCACIJQXhxIQIgAkEEQQggCUEDcSIJGyABakkNFyAJQQBHIAIgAUEnaktxDRYgAxC8BQsgBigCFCEDIAYoAhgiAgRAIAMhAQNAIAFBQGsoAgAiCUEASgRAIAFBxABqKAIAIgtBBGsoAgAiD0F4cSEQIBBBBEEIIA9BA3EiDxsgCWpJDRkgD0EARyAQIAlBJ2pLcQ0YIAsQvAULIAEQmAQgAUHkAGohASACQQFrIgINAAsLIAYoAhAiAgRAIANBBGsoAgAiCUF4cSEBIAEgAkHkAGwiAkEEQQggCUEDcSIJG2pJDRcgCUEARyABIAJBJ2pLcQ0WIAMQvAULIAYoAiAhAyAGKAIkIgIEQCADIQEDQCABKAIAIgkEQCABQQRqKAIAIgtBBGsoAgAiD0F4cSEQIBBBBEEIIA9BA3EiDxsgCWpJDRkgD0EARyAQIAlBJ2pLcQ0YIAsQvAULIAFBGGohASACQQFrIgINAAsLIAYoAhwiAgRAIANBBGsoAgAiBkF4cSEBIAEgAkEYbCICQQRBCCAGQQNxIgYbakkNFyAGQQBHIAEgAkEnaktxDRYgAxC8BQsgESAEQQFqIgRHDQALCyAFKAIkIgIEQCAIQQRrKAIAIgNBeHEhASABIAJBzABsIgJBBEEIIANBA3EiAxtqSQ0VIANBAEcgASACQSdqS3ENFCAIELwFCyAFKAIwIgFBAEwNBEE0DAMLIAUoAgQiAQRAIAUoAggiA0EEaygCACIEQXhxIQIgAkEEQQggBEEDcSIEGyABakkNFCAEQQBHIAIgAUEnaktxDRMgAxC8BQsgBUEcahC7BCAFKAIsIQggBSgCMCIRBEBBACEEA0AgCCAEQcwAbGoiBigCKCIBBEAgBigCLCIDQQRrKAIAIglBeHEhAiACQQRBCCAJQQNxIgkbIAFqSQ0WIAlBAEcgAiABQSdqS3ENFSADELwFCyAGKAIUIQMgBigCGCICBEAgAyEBA0AgAUFAaygCACIJQQBKBEAgAUHEAGooAgAiC0EEaygCACIPQXhxIRAgEEEEQQggD0EDcSIPGyAJakkNGCAPQQBHIBAgCUEnaktxDRcgCxC8BQsgARCYBCABQeQAaiEBIAJBAWsiAg0ACwsgBigCECICBEAgA0EEaygCACIJQXhxIQEgASACQeQAbCICQQRBCCAJQQNxIgkbakkNFiAJQQBHIAEgAkEnaktxDRUgAxC8BQsgBigCICEDIAYoAiQiAgRAIAMhAQNAIAEoAgAiCQRAIAFBBGooAgAiC0EEaygCACIPQXhxIRAgEEEEQQggD0EDcSIPGyAJakkNGCAPQQBHIBAgCUEnaktxDRcgCxC8BQsgAUEYaiEBIAJBAWsiAg0ACwsgBigCHCICBEAgA0EEaygCACIGQXhxIQEgASACQRhsIgJBBEEIIAZBA3EiBhtqSQ0WIAZBAEcgASACQSdqS3ENFSADELwFCyARIARBAWoiBEcNAAsLIAUoAigiAgRAIAhBBGsoAgAiA0F4cSEBIAEgAkHMAGwiAkEEQQggA0EDcSIDG2pJDRQgA0EARyABIAJBJ2pLcQ0TIAgQvAULIAUoAjQiAUEATA0DQTgMAgsgBSgCBCIBBEAgBSgCCCIDQQRrKAIAIgRBeHEhAiACQQRBCCAEQQNxIgQbIAFqSQ0TIARBAEcgAiABQSdqS3ENEiADELwFCyAFKAIgIQMgBSgCJCICBEAgAyEBA0AgAUFAaygCACIEBEAgAUHEAGooAgAiCEEEaygCACIJQXhxIQYgBkEEQQggCUEDcSIJGyAEakkNFSAJQQBHIAYgBEEnaktxDRQgCBC8BQsgASgCAEF/RwRAIAEQmAQLIAFB5ABqIQEgAkEBayICDQALCyAFKAIcIgIEQCADQQRrKAIAIgRBeHEhASABIAJB5ABsIgJBBEEIIARBA3EiBBtqSQ0TIARBAEcgASACQSdqS3ENEiADELwFCyAFKAIoIgFBAEwNAgtBLAsgBWooAgAiA0EEaygCACIEQXhxIQIgAkEEQQggBEEDcSIEGyABakkNECAEQQBHIAIgAUEnaktxDQ8gAxC8BQsgFSAMQQFqIgxHDQALCyAHKAIYIgIEQCANQQRrKAIAIgNBeHEhASABIAJB1ABsIgJBBEEIIANBA3EiAxtqSQ0OIANBAEcgASACQSdqS3ENDSANELwFCyAKQQFqIgogFEcNAAsLAkAgACgCmAIiAgRAIA5BBGsoAgAiA0F4cSEBIAEgAkEkbCICQQRBCCADQQNxIgMbakkNASADQQBHIAEgAkEnaktxDQwgDhC8BQsCQAJAIAAoAngiAUUNACABQQJ0QQtqQXhxIgIgAWpBCWoiAUUNACAAKAJ0IAJrIgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQEgBEEARyACIAFBJ2pLcQ0NIAMQvAULIAAoAmwhAwJAIAAoAnAiAgRAIAMhAQNAIAEoAgAiBARAIAFBBGooAgAiB0EEaygCACIGQXhxIQUgBUEEQQggBkEDcSIGGyAEakkNAyAGQQBHIAUgBEEnaktxDRAgBxC8BQsgAUEQaiEBIAJBAWsiAg0ACwsCQCAAKAJoIgIEQCADQQRrKAIAIgRBeHEhASABIAJBBHQiAkEEQQggBEEDcSIEG3JJDQEgBEEARyABIAJBJ2pLcQ0PIAMQvAULAkACQCAAKAKMASIBRQ0AIAFBBHQiAiABakEZaiIBRQ0AIAAoAogBIAJrIgNBFGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQEgBEEARyACIAFBJ2pLcQ0QIANBEGsQvAULAkACQCAAKAKcASIBRQ0AIAFBBHQiAiABakEZaiIBRQ0AIAAoApgBIAJrIgNBFGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQEgBEEARyACIAFBJ2pLcQ0RIANBEGsQvAULAkACQCAAKAKsASIBRQ0AIAFBBHQiAiABakEZaiIBRQ0AIAAoAqgBIAJrIgNBFGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQEgBEEARyACIAFBJ2pLcQ0SIANBEGsQvAULAkACQCAAKAK8ASIBRQ0AIAFBBHQiAiABakEZaiIBRQ0AIAAoArgBIAJrIgNBFGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQEgBEEARyACIAFBJ2pLcQ0TIANBEGsQvAULAkACQCAAKALMASIBRQ0AIAFBBHQiAiABakEZaiIBRQ0AIAAoAsgBIAJrIgNBFGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQEgBEEARyACIAFBJ2pLcQ0UIANBEGsQvAULIAAoAkwiAUUNEiAAKAJQIQQgASAAKAJUIghFDRAaQQAhBQJAA0ACQCAFBEAgASECIAUhAQwBC0EAIQICQCAERQ0AIAQiA0EHcSIHBEADQCADQQFrIQMgASgCqAghASAHQQFrIgcNAAsLIARBCEkNAANAIAEoAqgIKAKoCCgCqAgoAqgIKAKoCCgCqAgoAqgIKAKoCCEBIANBCGsiAw0ACwtBACEECwJAIAEvAaYIIARLBEAgBCEGIAEhAwwBCwJAA0AgASgCACIDBEAgAUEEaygCACIEQXhxIQUgBUHYCEGoCCACGyIHQQRBCCAEQQNxIgQbakkNGiABLwGkCCEGIARBAEcgBSAHQSdqS3ENAiABELwFIAJBAWohAiADIgEvAaYIIAZNDQEMAwsLIAFB2AhBqAggAhsQ2RJBrOrIABCdFQALDBYLAkAgAkUEQCAGQQFqIQQgAyEFDAELIAMgBkECdGpBrAhqIQECQCACQQdxIgRFBEAgAiEHDAELIAIhBwNAIAdBAWshByABKAIAIgVBqAhqIQEgBEEBayIEDQALC0EAIQQgAkEISQ0AA0AgASgCACgCqAgoAqgIKAKoCCgCqAgoAqgIKAKoCCgCqAgiBUGoCGohASAHQQhrIgcNAAsLAkACQCADIAZB1ABsaiIBKAKwASIHQX9GDQAgAUGIAWoiASgCLCEDIAEoAjAiAgRAIAMhAQNAIAEoAgAiBgRAIAFBBGooAgAiCkEEaygCACINQXhxIQ4gDkEEQQggDUEDcSINGyAGakkNBCANQQBHIA4gBkEnaktxDRogChC8BQsgAUEMaiEBIAJBAWsiAg0ACwsgB0UNACADQQRrKAIAIgJBeHEhASABIAdBDGwiB0EEQQggAkEDcSICG2pJDRggAkEARyABIAdBJ2pLcQ0DIAMQvAULQQAhASAIQQFrIghFDRIMAQsLDBULDBMLDBMLDBILDBELDBALDA8LDA4LDA0LDAwLDAsLDAoLDAkLDAgLDAcLDAYLDAULIAUNAUEACyEFIARFDQACQCAEQQdxIgJFBEAgBCEBDAELIAQhAQNAIAFBAWshASAFKAKoCCEFIAJBAWsiAg0ACwsgBEEISQ0AA0AgBSgCqAgoAqgIKAKoCCgCqAgoAqgIKAKoCCgCqAgoAqgIIQUgAUEIayIBDQALCyAFKAIAIgMEf0EAIQEDQCAFQQRrKAIAIgRBeHEhAiACQdgIQagIIAEbIgdBBEEIIARBA3EiBBtqSQ0EIARBAEcgAiAHQSdqS3ENAyAFELwFIAFBAWohASADIgUoAgAiAw0AC0HYCEGoCCABGwVBqAgLIQEgBUEEaygCACIDQXhxIQIgAkEEQQggA0EDcSIDGyABakkNAiADQQBHIAIgAUEnaktxDQEgBRC8BQsgACgCDCEFAkAgACgCECIOBEBBACEEA0ACQCAFIARB5ABsaiIBKAIoIgdBf0YNACABKAIsIQMgASgCMCICBEAgAyEBA0AgASgCACIGBEAgAUEEaigCACIKQQRrKAIAIg1BeHEhCCAIQQRBCCANQQNxIg0bIAZqSQ0GIA1BAEcgCCAGQSdqS3ENByAKELwFCyABQQxqIQEgAkEBayICDQALCyAHRQ0AIANBBGsoAgAiAkF4cSEBIAEgB0EMbCIHQQRBCCACQQNxIgIbakkNBSACQQBHIAEgB0EnaktxDQQgAxC8BQsgDiAEQQFqIgRHDQALCwJAIAAoAggiAgRAIAVBBGsoAgAiA0F4cSEBIAEgAkHkAGwiAkEEQQggA0EDcSIDG2pJDQEgA0EARyABIAJBJ2pLcQ0DIAUQvAULIAAoAhghAwJAIAAoAhwiAgRAIANBMGohAQNAIAFBEGsoAgAiBUEASgRAIAFBDGsoAgAiB0EEaygCACIGQXhxIQQgBCAFQQJ0IgVBBEEIIAZBA3EiBhtqSQ0DIAZBAEcgBCAFQSdqS3ENBiAHELwFCyABQQRrKAIAIgVBAEoEQCABKAIAIgdBBGsoAgAiBkF4cSEEIAQgBUECdCIFQQRBCCAGQQNxIgYbakkNByAGQQBHIAQgBUEnaktxDQYgBxC8BQsgAUHwAGohASACQQFrIgINAAsLAkAgACgCFCICBEAgA0EEaygCACIEQXhxIQEgASACQfAAbCICQQRBCCAEQQNxIgQbckkNASAEQQBHIAEgAkEnaktxDQUgAxC8BQsCQAJAIAAoAjAiBEUNACAAKAI4IgcEQCAAKAIsIgFBCGohAiABKQMAQn+FQoCBgoSIkKDAgH+DIRgDQCAYUARAA0AgAiIDQQhqIQIgAUGgA2shASADKQMAQoCBgoSIkKDAgH+DIhhCgIGChIiQoMCAf1ENAAsgGEKAgYKEiJCgwIB/hSEYCwJAIAEgGHqnQQN2QUxsaiIFQQxrKAIAIgNFDQAgA0EDdCIGIANqQRFqIgNFDQAgBUEQaygCACAGayIGQQxrKAIAIghBeHEhBSAFQQRBCCAIQQNxIggbIANqSQ0EIAhBAEcgBSADQSdqS3ENCSAGQQhrELwFCyAYQgF9IBiDIRggB0EBayIHDQALCyAEQTRsQTtqQXhxIgIgBGpBCWoiAUUNACAAKAIsIAJrIgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQcgBEEARyACIAFBJ2pLcQ0GIAMQvAULAkACQCAAKAJAIg1FDQAgACgCSCIMBEAgACgCPCIOQQhqIQUgDikDAEJ/hUKAgYKEiJCgwIB/gyEYA0AgGFAEQANAIAUiAUEIaiEFIA5BwAlrIQ4gASkDAEKAgYKEiJCgwIB/gyIYQoCBgoSIkKDAgH9RDQALIBhCgIGChIiQoMCAf4UhGAsCQCAOIBh6p0EDdkHofmxqIgdB9ABrKAIAQQJGDQAgB0HEAGsoAgAhAyAHQUBqKAIAIgIEQCADQQxqIQEDQCABQQRrKAIAIgYEQCABKAIAIghBBGsoAgAiCkF4cSEEIAQgBkEMbCIGQQRBCCAKQQNxIgobakkNByAKQQBHIAQgBkEnaktxDQ0gCBC8BQsgAUEkaiEBIAJBAWsiAg0ACwsgB0HIAGsoAgAiAkUNACADQQRrKAIAIgRBeHEhASABIAJBJGwiAkEEQQggBEEDcSIEG2pJDQsgBEEARyABIAJBJ2pLcQ0KIAMQvAULIAdBDGsoAgAhCiAHQQhrKAIAIhAEQEEAIQQDQCAKIARByABsaiIGKAI8IQMgBigCQCICBEAgA0EMaiEBA0AgAUEEaygCACIJBEAgASgCACIRQQRrKAIAIgtBeHEhCCAIIAlBDGwiCUEEQQggC0EDcSILG2pJDQ8gC0EARyAIIAlBJ2pLcQ0OIBEQvAULIAFBJGohASACQQFrIgINAAsLIAYoAjgiAgRAIANBBGsoAgAiCEF4cSEBIAEgAkEkbCICQQRBCCAIQQNxIggbakkNDSAIQQBHIAEgAkEnaktxDQwgAxC8BQsCQCAGKAIoIgFBAkYNAAJAIAFFBEAgBigCLCIBRQ0CIAYoAjAiCEEEaygCACIDQXhxIQIgAkEEQQggA0EDcSIDGyABakkNDyADRQ0BIAIgAUEnak0NAQwOCyAGKAIwIQggBigCNCICBEAgCCEBA0ACQAJAAkACQCABKAIAQQJrDgIBAAMLAkACQCABQQRqLQAADgIAAQQLIAFBCGooAgAiAw0CDAMLIAFBCGooAgAiA0UNAgwBCwJAAkAgAUEEai0AAA4CAAEDCyABQQhqKAIAIgMNAQwCCyABQQhqKAIAIgNFDQELIAFBDGooAgAiEUEEaygCACILQXhxIQkgCUEEQQggC0EDcSILGyADakkNESALQQBHIAkgA0EnaktxDRAgERC8BQsgAUEYaiEBIAJBAWsiAg0ACwsgBigCLCICRQ0BIAhBBGsoAgAiA0F4cSEBIAEgAkEYbCICQQRBCCADQQNxIgMbakkNDiADRQ0AIAEgAkEnaksNDQsgCBC8BQsgECAEQQFqIgRHDQALCyAHQRBrKAIAIgIEQCAKQQRrKAIAIgNBeHEhASABIAJByABsIgJBBEEIIANBA3EiAxtqSQ0LIANBAEcgASACQSdqS3ENCiAKELwFCwJAIAdBOGsoAgBBAkYNACAHQRxrKAIAIgJFDQAgB0EYaygCACIDQQRrKAIAIgRBeHEhASABIAJBAnQiAkEEQQggBEEDcSIEG2pJDQsgBEEARyABIAJBJ2pLcQ0KIAMQvAULIBhCAX0gGIMhGCAMQQFrIgwNAAsLIA1BmAFsIgIgDWpBoQFqIgFFDQAgACgCPCACayIDQZwBaygCACIEQXhxIQIgAkEEQQggBEEDcSIEGyABakkNCCAEQQBHIAIgAUEnaktxDQcgA0GYAWsQvAULIAAoAiAiAgRAIAAoAiQiA0EEaygCACIEQXhxIQEgASACQQJ0IgJBBEEIIARBA3EiBBtqSQ0IIARBAEcgASACQSdqS3ENByADELwFCyAAKAKkAiICBEAgACgCqAIiA0EEaygCACIEQXhxIQEgASACQShsIgJBBEEIIARBA3EiBBtqSQ0IIARBAEcgASACQSdqS3ENByADELwFCwJAIAAoArQCIgFFDQAgAUEDdCICIAFqQRFqIgFFDQAgACgCsAIgAmsiA0EMaygCACIEQXhxIQIgAkEEQQggBEEDcSIEGyABakkNCCAEQQBHIAIgAUEnaktxDQcgA0EIaxC8BQsgAEHAAmoQ0QYgAEHMAmoQ0QYCQCAAKALcASIBRQ0AIAFBA3QiAiABakERaiIBRQ0AIAAoAtgBIAJrIgNBDGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQggBEEARyACIAFBJ2pLcQ0HIANBCGsQvAULAkAgACgC/AEiBkUNACAAKAKEAiIFBEAgACgC+AEiB0EIaiEEIAcpAwBCf4VCgIGChIiQoMCAf4MhGANAIBhQBEADQCAEIgFBCGohBCAHQaABayEHIAEpAwBCgIGChIiQoMCAf4MiGEKAgYKEiJCgwIB/UQ0ACyAYQoCBgoSIkKDAgH+FIRgLIAcgGHqnQQN2QWxsaiIIQQhrKAIAIQMgCEEEaygCACICBEAgAyEBA0AgASgCACIOBEAgAUEEaigCACINQQRrKAIAIgxBeHEhCiAKQQRBCCAMQQNxIgwbIA5qSQ0NIAxBAEcgCiAOQSdqS3ENDCANELwFCyABQQxqIQEgAkEBayICDQALCyAIQQxrKAIAIgIEQCADQQRrKAIAIghBeHEhASABIAJBDGwiAkEEQQggCEEDcSIIG2pJDQsgCEEARyABIAJBJ2pLcQ0KIAMQvAULIBhCAX0gGIMhGCAFQQFrIgUNAAsLIAZBFGxBG2pBeHEiAiAGakEJaiIBRQ0AIAAoAvgBIAJrIgNBBGsoAgAiBEF4cSECIAJBBEEIIARBA3EiBBsgAWpJDQggBEEARyACIAFBJ2pLcQ0HIAMQvAULIABB2AJqEPkJAkAgAEF/Rg0AIAAgACgCBCIBQQFrNgIEIAFBAUcNACAAQQRrKAIAIgFBA3EhAiABQXhxQaQDQagDIAIbSQ0IIAJBAEcgAUHIA09xDQcgABC8BQsPCwwGCwwFCwwECwwDCwwCCwwBC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAv5XgQQfwZ+AXwBfSMAQfAAayIHJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADIAEoAggiBU0EQCABKAIEIgwgA2ohDiABLQAkRQRAQQAgA2shBgJAA0AgBSAGaiIJRQ0BIAwgBUEBayIFai0AAEEwRg0ACyAFIANrQQFqIQ0LIA0gDmohCiAOIQYgDCEFQf////8HAn8CfwNAIBUhFgJ/AkAgBUUNACAFIA5GDQAgBUEBaiELIAYMAQtBACAGIApGDQIaQQAhCyAGIgVBAWoLIQggBS0AAEEwayIQQQpPDQUgB0EwaiAWQgBCCkIAEO4RIAcpAzhQBEAgCCEGIAshBSAHKQMwIhcgEK18IhUgF1oNAQsLIAogCGsgDiALa0EAIAsbakEBagsiBSANTwRAQf////8HQf////8HIAUgDWsiBSAFQf////8HTxsiBSAEaiIGIAVBAEggBCAGSnMbDAELQYCAgIB4IARB/////wcgDSAFayIFIAVB/////wdPGyIFayIGIAVBAEogBCAGSnMbCyIFQd4CaiIGIAUgBkobIghBCm0hBkEAIQUCQCAIQQBIBEBCACEVQQAhBgwBCyAGQcEASwRAQf8PIQZCgICAgICAgICAfyEVDAELIAggBkEKbGsiBUEASA0EIAdBIGogFkIAIAVBA3QiCCkDmPNIQgAQ7hECfyAHKQMoUARAQQBBACAHKQMgIhV5pyAVUBsiBWshCyAVIAWthiEVQQkMAQsgCCkDiOxIIhdC/////w+DIhggFkEAIBZ5pyAWUBsiCK2GIhZCIIgiGX4hFSAXQiCIIhcgFkL/////D4MiGn4hFiAXIBl+IBVCIIh8IBZCIIh8IBZC/////w+DIBVC/////w+DfCAYIBp+QiCIfEKAgICACHxCIIh8IRUgBUECdCgC2OxIIAhrQUBrIQtBDQshCCAVQiCIIhcgBkEDdCkDgO1IIhhC/////w+DIhl+IRYgGEIgiCIYIBVC/////w+DIhp+IRVBACAXIBh+IBZCIIh8IBVCIIh8IBVC/////w+DIBZC/////w+DfCAZIBp+QiCIfEKAgICACHxCIIh8IhV5pyAVUBshBSAVIAWthiEVIAZBAnQoApDxSCALaiAFayIKQUBrIQYCQEELQY53IAprIAZBw3dOGyIKQcEASw0AIAqtIRggCCAFdK0hFyAVIRYCQAJAAkAgCkFAag4CAQIACyAVQn8gGIZCf4WDIRYLQgEgGEIBfYYiGCAXfSAWWg0BIBYgFyAYfFoNAQwPCyAXIBVCf4VWDQ4LQQAgFXmnIBVQGyEFCyAVIAWthiEWIAYgBWsiA0ELaiIGQc53TgRAIBZCC4ghFSAWQv8Pg0KACFYNCyAWQv8fg0KAGFINDAwLCyADQY13TQ0NIANBjndGBEAgFkKAgICAgICAgIB/WA0OQgAhFUHOdyEGDAsLIBZBzncgA2utIheIIRUgFkJ/IBeGQn+FgyIWQgEgF0IBfYYiF1YEQEHOdyEGDAsLQc53IQYgFUIBg1ANCyAWIBdRDQoMCwtBACADayEGAkADQCAFIAZqIglFDQEgDCAFQQFrIgVqLQAAQTBGDQALIAUgA2tBAWohDQsgDSAOaiEKIA4hBiAMIQVB/////wcCfwJ/A0AgFSEWAn8CQCAFRQ0AIAUgDkYNACAFQQFqIQsgBgwBC0EAIAYgCkYNAhpBACELIAYiBUEBagshCCAFLQAAQTBrIhBBCk8NBiAHQRBqIBZCAEIKQgAQ7hEgBykDGFAEQCAIIQYgCyEFIAcpAxAiFyAQrXwiFSAXWg0BCwsgCiAIayAOIAtrQQAgCxtqQQFqCyIFIA1PBEBB/////wdB/////wcgBSANayIFIAVB/////wdPGyIFIARqIgYgBUEASCAEIAZKcxsMAQtBgICAgHggBEH/////ByANIAVrIgUgBUH/////B08bIgVrIgYgBUEASiAEIAZKcxsLIgVB3gJqIgYgBSAGShsiCEEKbSEGQQAhBQJAIAhBAEgEQEIAIRVBACEGDAELIAZBwQBLBEBB/w8hBkKAgICAgICAgIB/IRUMAQsgCCAGQQpsayIFQQBIDQUgByAWQgAgBUEDdCIIKQOY80hCABDuEQJ/IAcpAwhQBEBBAEEAIAcpAwAiFXmnIBVQGyIFayELIBUgBa2GIRVBCQwBCyAIKQOI7EgiF0L/////D4MiGCAWQQAgFnmnIBZQGyIIrYYiFkIgiCIZfiEVIBdCIIgiFyAWQv////8PgyIafiEWIBcgGX4gFUIgiHwgFkIgiHwgFkL/////D4MgFUL/////D4N8IBggGn5CIIh8QoCAgIAIfEIgiHwhFSAFQQJ0KALY7EggCGtBQGshC0ENCyEIIBVCIIgiFyAGQQN0KQOA7UgiGEL/////D4MiGX4hFiAYQiCIIhggFUL/////D4MiGn4hFUEAIBcgGH4gFkIgiHwgFUIgiHwgFUL/////D4MgFkL/////D4N8IBkgGn5CIIh8QoCAgIAIfEIgiHwiFXmnIBVQGyEFIBUgBa2GIRUgBkECdCgCkPFIIAtqIAVrIgpBQGshBgJAQShBq34gCmsgBkHDfk4bIgpBwQBLDQAgCq0hGCAIIAV0rSEXIBUhFgJAAkACQCAKQUBqDgIBAgALIBVCfyAYhkJ/hYMhFgtCASAYQgF9hiIYIBd9IBZaDQEgFiAXIBh8Wg0BDAoLIBcgFUJ/hVYNCQtBACAVeacgFVAbIQULIBUgBa2GIRYgBiAFayIDQShqIgZB635OBEAgFkIoiCEVIBZC//////8fg0KAgICAgBBWDQYgFkL//////z+DQoCAgICAMFINBwwGCyADQap+TQ0IIANBq35GBEAgFkKAgICAgICAgIB/WA0JQgAhFUHrfiEGDAYLIBZB634gA2utIheIIRUgFkJ/IBeGQn+FgyIWQgEgF0IBfYYiF1YEQEHrfiEGDAYLQet+IQYgFUIBg1ANBiAWIBdRDQUMBgtBACADIAVBiLPIABCHDgALQfCxyAAQnRUACyAFQQpB6PPIABCFEwALQfCxyAAQnRUACyAFQQpB6PPIABCFEwALIBVCAXwhFQsgFUKAgIAEIBVCgICACIMiFlAbIRUCQAJAAkAgBiAWQhiIp2oiBUHpAGtBGEkEQEJ/QhggBUHoAGutIhZ9hkKAgIB4hSAVg1ANAQsgFVANBCAFQet+SA0EIAVB6ABMDQFDAACAfyEcDAQLIBVQDQEgFSAWhiEVQegAIQULIBVC////A4MgBUEXdEGAgIDYBGqtIhYgFUIohkI/h4MgFiAFQet+RhuEp74hHAwCCwwBCyAVQQAgFXmnIBVQGyIFrYYhFQJAIAYgBWsiBUEoaiIGQet+TgR+IBVCKIgFIAVBqn5NBEAMAgtB634hBiAVQSsgBWutiEIAIAVBq35HGwsiFSAVQhiIQgGDIhaIIRUCQAJAIAYgFqdqIgVB6QBrQRhJBEBCf0IYIAVB6ABrrSIWfYZCgICAeIUgFYNQDQELIBVQDQIgBUHrfkgNAiAFQegATA0BQwAAgH8hHAwCC0HoACEFIBUgFoYiFUIAUg0ADAELIBVC////A4MgBUEXdEGAgIDYBGqtIhYgFUIohkI/h4MgFiAFQet+RhuEp74hHAsgHLwiEUH/////B3FB////+wdLDQACQCADRQRAIA4hBkEAIRBBACEFAkAgDQRAAkACQANAIAUgDmotAABBMEcNASAJIAVBAWoiBUcNAAsgDSEFDAELIAUgDUsNAgsgDSAFayEQIAUgDmohBgtBgICAgHggBCAFayIIQR91QYCAgIB4cyAIIAVBAEogBCAISnMbIgRBAWsiCCAEIAhMGyELDAILDAcLQQAhBSADQQFrIgggBGoiBkEfdUGAgICAeHMgBiAIQQBIIAQgBkpzGyELIA4hBiANIRALAkBB0AAQkAEiCgRAIAtB8gAgAyANaiAFayIEIARB8gBPG2tBAWohEkEAIQkgB0EANgJoIAcgCjYCZCAHQRQ2AmAgBiAQaiETQQAhBEEAIQUDQAJ/AkAgDEUNACAMIA5GDQAgDEEBaiENIAYMAQsgBiATRgRAIAQhCwwEC0EAIQ0gBiEMIAZBAWoLIQggDC0AACAFQQhGBEACQAJAAkACQCAJRQ0AIAlBAWtB/////wNxIgxBAWoiC0EDcSEGQgAhFSAKIQUCQCAMQQNPBEAgC0H8////B3EhCwNAIAUgBTUCAEKAwtcvfiAVfCIVPgIAIAVBBGoiDDUCAEKAwtcvfiAVQiCIfCEVIAwgFT4CACAFQQhqIgw1AgBCgMLXL34gFUIgiHwhFSAMIBU+AgAgBUEMaiIMNQIAQoDC1y9+IBVCIIh8IRUgDCAVPgIAIBVCIIghFSAFQRBqIQUgC0EEayILDQALIAZFDQELA0AgBSAFNQIAQoDC1y9+IBV8IhU+AgAgBUEEaiEFIBVCIIghFSAGQQFrIgYNAAsLAkAgFUIAUgRAIBWnIQUgBygCYCAJRgR/IAdB4ABqEJsSIAcoAmQFIAoLIAlBAnRqIAU2AgAgByAJQQFqIgk2AmgMAQsgBygCaCEJCyAJRQ0AIAcoAmQiCigCACIGIA9qIQUgCiAFNgIAIAUgBk8NAyAJQQJ0IQtBACEFA0AgCyAFQQRqIgZGBEBBASEPIAkgBygCYEcNBCAHQeAAahCbEgwDCyAFIApqQQRqIgUoAgBBAWohDCAFIAw2AgAgBiEFIAxFDQALDAMLIAcoAmBFBEAgB0HgAGoQmxILQQAhCQsgBygCZCEKCyAKIAlBAnRqIA82AgAgByAJQQFqIgk2AmgLQQAhD0EAIQULQTBrIgZBCU0EQCAFQQFqIQUgD0EKbCAGaiEPQfEAIQsgCCEGIA0hDCAEQQFqIgRB8QBHDQEMAwsLQeTryAAQnRUACwwHCwJAIAVFDQACQAJAIAVBCkkEQAJAIAlFDQAgBUECdDUCvOtIIRYgCUEBa0H/////A3EiBEEBaiIIQQNxIQZCACEVIAohBQJAIARBA08EQCAIQfz///8HcSEIA0AgBSAFNQIAIBZ+IBV8IhU+AgAgBUEEaiIENQIAIBZ+IBVCIIh8IRUgBCAVPgIAIAVBCGoiBDUCACAWfiAVQiCIfCEVIAQgFT4CACAFQQxqIgQ1AgAgFn4gFUIgiHwhFSAEIBU+AgAgFUIgiCEVIAVBEGohBSAIQQRrIggNAAsgBkUNAQsDQCAFIAU1AgAgFn4gFXwiFT4CACAFQQRqIQUgFUIgiCEVIAZBAWsiBg0ACwsCQCAVQgBSBEAgFachBCAHKAJgIAlGBH8gB0HgAGoQmxIgBygCZAUgCgsgCUECdGogBDYCACAHIAlBAWoiCTYCaAwBCyAHKAJoIQkLIAlFDQAgBygCZCIKKAIAIgUgD2ohBCAKIAQ2AgAgBCAFTw0EIAlBAnQhCEEAIQUDQCAIIAVBBGoiBEYEQEEBIQ8gCSAHKAJgRw0FIAdB4ABqEJsSDAQLIAUgCmpBBGoiBSgCAEEBaiEGIAUgBjYCACAEIQUgBkUNAAsMBAsgBygCYEUEQCAHQeAAahCbEgtBACEJDAELIAVBCkH068gAEIUTAAsgBygCZCEKCyAKIAlBAnRqIA82AgAgByAJQQFqIgk2AmgLAkAgCyADIBBqTw0AAkACQAJAIAlFDQAgCUEBa0H/////A3EiA0EBaiIEQQNxIQZCACEVIAohBQJAIANBA08EQCAEQfz///8HcSELA0AgBSAFNQIAQgp+IBV8IhU+AgAgBUEEaiIDNQIAQgp+IBVCIIh8IRUgAyAVPgIAIAVBCGoiAzUCAEIKfiAVQiCIfCEVIAMgFT4CACAFQQxqIgM1AgBCCn4gFUIgiHwhFSADIBU+AgAgFUIgiCEVIAVBEGohBSALQQRrIgsNAAsgBkUNAQsDQCAFIAU1AgBCCn4gFXwiFT4CACAFQQRqIQUgFUIgiCEVIAZBAWsiBg0ACwsCQCAVQgBSBEAgFachAyAHKAJgIAlGBH8gB0HgAGoQmxIgBygCZAUgCgsgCUECdGogAzYCACAHIAlBAWoiCTYCaAwBCyAHKAJoIQkLIAlFDQAgBygCZCIIKAIAQQFqIQMgCCADNgIAIAMNAyAJQQJ0IQZBACEFA0AgBiAFQQRqIgNGBEAgCSAHKAJgRw0EIAdB4ABqEJsSDAMLIAUgCGpBBGoiBSgCAEEBaiEEIAUgBDYCACADIQUgBEUNAAsMAwsgBygCYEUEQCAHQeAAahCbEgtBACEJCyAHKAJkIQgLIAggCUECdGpBATYCACAHIAlBAWo2AmgLIAcgBygCaDYCSCAHIAcpAmA3A0ACQAJAIBJBAEgEQCAHIAcoAkg2AlggByAHKQNANwNQQdAAEJABIgNFDQkgB0EBNgJoIAMgEUEBdEH+//8HcUGBgIAIQQEgEUGAgID8B3EiBBtyrTcCACAHIAM2AmQgB0EUNgJgIAdB4ABqQQAgEmsQgQQCQCASQX9zIBFBF3ZB/wFxQZYBa0HrfiAEG2oiA0EATARAIANBAE4NAUEAIQhBACADayIDQQV2IQ4CQCADQR9xIgZFDQBBICAGayEKIAcoAlQhAwJAIAcoAlgiDUUNACANQQFrQf////8DcSIEQQFqIgxBA3EhCSADIQUgBEEDTwRAIAxB/P///wdxIQQDQCAFIAUoAgAiDCAGdCAIIAp2cjYCACAFQQRqIgsoAgAhCCALIAggBnQgDCAKdnI2AgAgBUEIaiILKAIAIQwgCyAMIAZ0IAggCnZyNgIAIAVBDGoiCygCACEIIAsgCCAGdCAMIAp2cjYCACAFQRBqIQUgBEEEayIEDQALIAlFDQELA0AgCCAKdiEEIAUgBCAFKAIAIgggBnRyNgIAIAVBBGohBSAJQQFrIgkNAAsLIAggCnYiBEUNACAHKAJQIA1GBH8gB0HQAGoQmxIgBygCVAUgAwsgDUECdGogBDYCACAHIA1BAWo2AlgLIA5FDQEgB0HQAGogDhDsBgwBCyADQQV2IQ4CQCADQR9xIgZFDQBBICAGayEKIAcoAmQhAwJAIAcoAmgiDUUEQEEAIQgMAQsgDUEBa0H/////A3EiBEEBaiIMQQNxIQlBACEIIAMhBSAEQQNPBEAgDEH8////B3EhBANAIAUgBSgCACIMIAZ0IAggCnZyNgIAIAVBBGoiCygCACEIIAsgCCAGdCAMIAp2cjYCACAFQQhqIgsoAgAhDCALIAwgBnQgCCAKdnI2AgAgBUEMaiILKAIAIQggCyAIIAZ0IAwgCnZyNgIAIAVBEGohBSAEQQRrIgQNAAsgCUUNAQsDQCAIIAp2IQQgBSAEIAUoAgAiCCAGdHI2AgAgBUEEaiEFIAlBAWsiCQ0ACwsgCCAKdiIERQ0AIAcoAmAgDUYEfyAHQeAAahCbEiAHKAJkBSADCyANQQJ0aiAENgIAIAcgDUEBajYCaAsgDkUNACAHQeAAaiAOEOwGCyAHKAJkIQMgBygCVCEEAkACQCAHKAJYIgUgBygCaCIGSw0AIAUgBkkNASAGQQJ0IQYgA0EEayEIIAVBAnQhBSAEQQRrIQoDQAJAIAVFDQAgBkUNACAFIApqKAIAIg0gBiAIaigCACIOSw0CIAZBBGshBiAFQQRrIQUgDSAOTw0BDAMLCyARQQFqviAcIBFBAXEbIRwMAQsgEUEBar4hHAsgBygCYCIGBEAgA0EEaygCACIIQXhxIQUgBSAGQQJ0IgZBBEEIIAhBA3EiCBtqSQ0LIAhBAEcgBSAGQSdqS3ENDCADELwFCyAHKAJQIgVFDQMgBEEEaygCACIGQXhxIQMgAyAFQQJ0IgVBBEEIIAZBA3EiBhtqSQ0KIAZBAEcgAyAFQSdqS3ENCyAEELwFDAMLIAcgBygCSDYCaCAHIAcpA0A3A2AgB0HgAGogEhCBBCASQQV2IQ4CQCASQR9xIgZFDQBBICAGayEKIAcoAmQhAwJAIAcoAmgiDUUEQEEAIQgMAQsgDUEBa0H/////A3EiBEEBaiIMQQNxIQlBACEIIAMhBSAEQQNPBEAgDEH8////B3EhBANAIAUgBSgCACIMIAZ0IAggCnZyNgIAIAVBBGoiCygCACEIIAsgCCAGdCAMIAp2cjYCACAFQQhqIgsoAgAhDCALIAwgBnQgCCAKdnI2AgAgBUEMaiILKAIAIQggCyAIIAZ0IAwgCnZyNgIAIAVBEGohBSAEQQRrIgQNAAsgCUUNAQsDQCAIIAp2IQQgBSAEIAUoAgAiCCAGdHI2AgAgBUEEaiEFIAlBAWsiCQ0ACwsgCCAKdiIERQ0AIAcoAmAgDUYEfyAHQeAAahCbEiAHKAJkBSADCyANQQJ0aiAENgIAIAcgDUEBajYCaAsgDg0ADAELIAdB4ABqIA4Q7AYLQgAhFSAHKAJkIQRBACEIAkACfwJAAkACQAJAIAcoAmgiBSILDgMFAQIACyAEIAVBAnQiCGoiA0EMaykCACIVIANBBGsoAgAiBmciCkEgc60iFoZCAFINAiAEQRBrIQ0DQCAIIgNBDEcEQCADQQRrIQggAyANaigCAEUNAQsLIAatIBaGIBVBICAKa62IhCEVIANBDEciCCAFDQMaQQAhCwwECyAEKAIAIgOtIANnQSBzrYYhFUEADAILIAQpAgAiFSAVeYYhFUEADAELIAatIBaGIBVBICAKa62IhCEVQQELIQggBCAFQQJ0akEEaygCAGchCwsgFUEAIBV5pyAVUBsiA62GIRYCQAJAAkACQAJAAkACQAJAQb9/IAVBBXQgC2tBQGogBUH///8/SxsgA2siA0EoaiIFQet+TgRAIBZCKIghFSAWQv//////H4MiF0KAgICAgBBRDQEgF0KAgICAgBBWDQUMBgsgA0Gqfk0NBiADQat+Rw0BIBZCgICAgICAgICAf1YhC0IAIRUgFkKAgICAgICAgIB/Ug0CDAMLIAggFkKAgICAgCCDQiiIp3JFDQQMAwsgFkJ/Qet+IANrrSIVhkJ/hYMiF0IBIBVCAX2GIhhWIQsgFiAViCEVIBcgGFENAQtB634hBSALDQEMAgtB634hBSAIDQAgCyAVp3JBAXFFDQELIBVCAXwhFQsgFUKAgIAEIBVCgICACIMiFlAbIRUCQAJAIAUgFkIYiKdqIgVB6QBrQRhJBEBCf0IYIAVB6ABrrSIWfYZCgICAeIUgFYNQDQELQwAAAAAhHCAVUA0DIAVB635IDQMgBUHoAEwNAUMAAIB/IRwMAwsgFVANASAVIBaGIRVB6AAhBQsgFUL///8DgyAFQRd0QYCAgNgEaq0iFiAVQiiGQj+HgyAWIAVB635GG4SnviEcDAELQwAAAAAhHAsgBygCYCIFRQ0AIARBBGsoAgAiBkF4cSEDIAMgBUECdCIFQQRBCCAGQQNxIgYbakkNByAGQQBHIAMgBUEnaktxDQggBBC8BQsgHLshGwwDCyAVQgF8IRULIBVCgICAgICAgAggFUKAgICAgICAEIMiFlAbIRUCQAJAIAYgFkI1iKdqIgVBzAdrQTVJBEBCf0I1IAVBywdrrSIWfYZCgICAgICAgHCFIBWDUA0BCyAVUA0DIAVBzndIDQMgBUHLB0wNAUQAAAAAAADwfyEbDAMLQcsHIQUgFSAWhiIVQgBSDQAMAgsgFUL/////////B4MgBUGzCGqtQjSGIhYgFUILhkI/h4MgFiAFQc53RhuEvyEbDAELIBVBACAVeacgFVAbIgWthiEVAkAgBiAFayIFQQtqIgZBzndOBH4gFUILiAUgBUGNd00EQAwCC0HOdyEGIBVBDiAFa62IQgAgBUGOd0cbCyIVIBVCNYhCAYMiFoghFQJAAkAgBiAWp2oiBUHMB2tBNUkEQEJ/QjUgBUHLB2utIhZ9hkKAgICAgICAcIUgFYNQDQELIBVQDQIgBUHOd0gNAiAFQcsHTA0BRAAAAAAAAPB/IRsMAgtBywchBSAVIBaGIhVCAFINAAwBCyAVQv////////8HgyAFQbMIaq1CNIYiFiAVQguGQj+HgyAWIAVBzndGG4S/IRsLIBu9IhZC////////////AINC//////////f/AFYNAAJAIANFBEAgDiEGQQAhEEEAIQUCQCANBEACQAJAA0AgBSAOai0AAEEwRw0BIAkgBUEBaiIFRw0ACyANIQUMAQsgBSANSw0CCyANIAVrIRAgBSAOaiEGC0GAgICAeCAEIAVrIghBH3VBgICAgHhzIAggBUEASiAEIAhKcxsiBEEBayIIIAQgCEwbIQsMAgsMAwtBACEFIANBAWsiCCAEaiIGQR91QYCAgIB4cyAGIAhBAEggBCAGSnMbIQsgDiEGIA0hEAsCQEHQABCQASIKBEAgC0GBBiADIA1qIAVrIgQgBEGBBk8ba0EBaiERQQAhCSAHQQA2AmggByAKNgJkIAdBFDYCYCAGIBBqIRJBACEEQQAhBQNAAn8CQCAMRQ0AIAwgDkYNACAMQQFqIQ0gBgwBCyAGIBJGBEAgBCELDAQLQQAhDSAGIQwgBkEBagshCCAMLQAAIAVBCEYEQAJAAkACQAJAIAlFDQAgCUEBa0H/////A3EiDEEBaiILQQNxIQZCACEVIAohBQJAIAxBA08EQCALQfz///8HcSELA0AgBSAFNQIAQoDC1y9+IBV8IhU+AgAgBUEEaiIMNQIAQoDC1y9+IBVCIIh8IRUgDCAVPgIAIAVBCGoiDDUCAEKAwtcvfiAVQiCIfCEVIAwgFT4CACAFQQxqIgw1AgBCgMLXL34gFUIgiHwhFSAMIBU+AgAgFUIgiCEVIAVBEGohBSALQQRrIgsNAAsgBkUNAQsDQCAFIAU1AgBCgMLXL34gFXwiFT4CACAFQQRqIQUgFUIgiCEVIAZBAWsiBg0ACwsCQCAVQgBSBEAgFachBSAHKAJgIAlGBH8gB0HgAGoQmxIgBygCZAUgCgsgCUECdGogBTYCACAHIAlBAWoiCTYCaAwBCyAHKAJoIQkLIAlFDQAgBygCZCIKKAIAIgYgD2ohBSAKIAU2AgAgBSAGTw0DIAlBAnQhC0EAIQUDQCALIAVBBGoiBkYEQEEBIQ8gCSAHKAJgRw0EIAdB4ABqEJsSDAMLIAUgCmpBBGoiBSgCAEEBaiEMIAUgDDYCACAGIQUgDEUNAAsMAwsgBygCYEUEQCAHQeAAahCbEgtBACEJCyAHKAJkIQoLIAogCUECdGogDzYCACAHIAlBAWoiCTYCaAtBACEPQQAhBQtBMGsiBkEJTQRAIAVBAWohBSAPQQpsIAZqIQ9BgAYhCyAIIQYgDSEMIARBAWoiBEGABkcNAQwDCwtB5OvIABCdFQALDAMLAkAgBUUNAAJAAkAgBUEKSQRAAkAgCUUNACAFQQJ0NQK860ghFyAJQQFrQf////8DcSIEQQFqIghBA3EhBkIAIRUgCiEFAkAgBEEDTwRAIAhB/P///wdxIQgDQCAFIAU1AgAgF34gFXwiFT4CACAFQQRqIgQ1AgAgF34gFUIgiHwhFSAEIBU+AgAgBUEIaiIENQIAIBd+IBVCIIh8IRUgBCAVPgIAIAVBDGoiBDUCACAXfiAVQiCIfCEVIAQgFT4CACAVQiCIIRUgBUEQaiEFIAhBBGsiCA0ACyAGRQ0BCwNAIAUgBTUCACAXfiAVfCIVPgIAIAVBBGohBSAVQiCIIRUgBkEBayIGDQALCwJAIBVCAFIEQCAVpyEEIAcoAmAgCUYEfyAHQeAAahCbEiAHKAJkBSAKCyAJQQJ0aiAENgIAIAcgCUEBaiIJNgJoDAELIAcoAmghCQsgCUUNACAHKAJkIgooAgAiBSAPaiEEIAogBDYCACAEIAVPDQQgCUECdCEIQQAhBQNAIAggBUEEaiIERgRAQQEhDyAJIAcoAmBHDQUgB0HgAGoQmxIMBAsgBSAKakEEaiIFKAIAQQFqIQYgBSAGNgIAIAQhBSAGRQ0ACwwECyAHKAJgRQRAIAdB4ABqEJsSC0EAIQkMAQsgBUEKQfTryAAQhRMACyAHKAJkIQoLIAogCUECdGogDzYCACAHIAlBAWoiCTYCaAsCQCALIAMgEGpPDQACQAJAAkAgCUUNACAJQQFrQf////8DcSIDQQFqIgRBA3EhBkIAIRUgCiEFAkAgA0EDTwRAIARB/P///wdxIQsDQCAFIAU1AgBCCn4gFXwiFT4CACAFQQRqIgM1AgBCCn4gFUIgiHwhFSADIBU+AgAgBUEIaiIDNQIAQgp+IBVCIIh8IRUgAyAVPgIAIAVBDGoiAzUCAEIKfiAVQiCIfCEVIAMgFT4CACAVQiCIIRUgBUEQaiEFIAtBBGsiCw0ACyAGRQ0BCwNAIAUgBTUCAEIKfiAVfCIVPgIAIAVBBGohBSAVQiCIIRUgBkEBayIGDQALCwJAIBVCAFIEQCAVpyEDIAcoAmAgCUYEfyAHQeAAahCbEiAHKAJkBSAKCyAJQQJ0aiADNgIAIAcgCUEBaiIJNgJoDAELIAcoAmghCQsgCUUNACAHKAJkIggoAgBBAWohAyAIIAM2AgAgAw0DIAlBAnQhBkEAIQUDQCAGIAVBBGoiA0YEQCAJIAcoAmBHDQQgB0HgAGoQmxIMAwsgBSAIakEEaiIFKAIAQQFqIQQgBSAENgIAIAMhBSAERQ0ACwwDCyAHKAJgRQRAIAdB4ABqEJsSC0EAIQkLIAcoAmQhCAsgCCAJQQJ0akEBNgIAIAcgCUEBajYCaAsgByAHKAJoNgJIIAcgBykCYDcDQAJAAkAgEUEASARAIAcgBygCSDYCWCAHIAcpA0A3A1BB0AAQkAEiA0UNBSADIBZCAYZC/v///////w+DIhUgFUKAgICAgICAEIQgFkKAgICAgICA+P8Ag1AiBBsiFUIBhDcCACAHIAM2AmQgB0EUNgJgIAdBAUECIBVCgICAgBBUGzYCaCAHQeAAakEAIBFrEIEEAkAgEUF/c0HOdyAWQjSIp0H/D3FBswhrIAQbaiIDQQBMBEAgA0EATg0BQQAhCEEAIANrIgNBBXYhDgJAIANBH3EiBkUNAEEgIAZrIQogBygCVCEDAkAgBygCWCINRQ0AIA1BAWtB/////wNxIgRBAWoiDEEDcSEJIAMhBSAEQQNPBEAgDEH8////B3EhBANAIAUgBSgCACIMIAZ0IAggCnZyNgIAIAVBBGoiCygCACEIIAsgCCAGdCAMIAp2cjYCACAFQQhqIgsoAgAhDCALIAwgBnQgCCAKdnI2AgAgBUEMaiILKAIAIQggCyAIIAZ0IAwgCnZyNgIAIAVBEGohBSAEQQRrIgQNAAsgCUUNAQsDQCAIIAp2IQQgBSAEIAUoAgAiCCAGdHI2AgAgBUEEaiEFIAlBAWsiCQ0ACwsgCCAKdiIERQ0AIAcoAlAgDUYEfyAHQdAAahCbEiAHKAJUBSADCyANQQJ0aiAENgIAIAcgDUEBajYCWAsgDkUNASAHQdAAaiAOEOwGDAELIANBBXYhDgJAIANBH3EiBkUNAEEgIAZrIQogBygCZCEDAkAgBygCaCINRQRAQQAhCAwBCyANQQFrQf////8DcSIEQQFqIgxBA3EhCUEAIQggAyEFIARBA08EQCAMQfz///8HcSEEA0AgBSAFKAIAIgwgBnQgCCAKdnI2AgAgBUEEaiILKAIAIQggCyAIIAZ0IAwgCnZyNgIAIAVBCGoiCygCACEMIAsgDCAGdCAIIAp2cjYCACAFQQxqIgsoAgAhCCALIAggBnQgDCAKdnI2AgAgBUEQaiEFIARBBGsiBA0ACyAJRQ0BCwNAIAggCnYhBCAFIAQgBSgCACIIIAZ0cjYCACAFQQRqIQUgCUEBayIJDQALCyAIIAp2IgRFDQAgBygCYCANRgR/IAdB4ABqEJsSIAcoAmQFIAMLIA1BAnRqIAQ2AgAgByANQQFqNgJoCyAORQ0AIAdB4ABqIA4Q7AYLIAcoAmQhAyAHKAJUIQQCQAJAIAcoAlgiBSAHKAJoIgZLDQAgBSAGSQ0BIAZBAnQhBiADQQRrIQggBUECdCEFIARBBGshCgNAAkAgBUUNACAGRQ0AIAUgCmooAgAiDSAGIAhqKAIAIg5LDQIgBkEEayEGIAVBBGshBSANIA5PDQEMAwsLIBsgFkIBfL8gFkIBg1AbIRsMAQsgFkIBfL8hGwsgBygCYCIGBEAgA0EEaygCACIIQXhxIQUgBSAGQQJ0IgZBBEEIIAhBA3EiCBtqSQ0HIAhBAEcgBSAGQSdqS3ENCCADELwFCyAHKAJQIgVFDQMgBEEEaygCACIGQXhxIQMgAyAFQQJ0IgVBBEEIIAZBA3EiBhtqSQ0GIAZBAEcgAyAFQSdqS3ENByAEELwFDAMLIAcgBygCSDYCaCAHIAcpA0A3A2AgB0HgAGogERCBBCARQQV2IQ4CQCARQR9xIgZFDQBBICAGayEKIAcoAmQhAwJAIAcoAmgiDUUEQEEAIQgMAQsgDUEBa0H/////A3EiBEEBaiIMQQNxIQlBACEIIAMhBSAEQQNPBEAgDEH8////B3EhBANAIAUgBSgCACIMIAZ0IAggCnZyNgIAIAVBBGoiCygCACEIIAsgCCAGdCAMIAp2cjYCACAFQQhqIgsoAgAhDCALIAwgBnQgCCAKdnI2AgAgBUEMaiILKAIAIQggCyAIIAZ0IAwgCnZyNgIAIAVBEGohBSAEQQRrIgQNAAsgCUUNAQsDQCAIIAp2IQQgBSAEIAUoAgAiCCAGdHI2AgAgBUEEaiEFIAlBAWsiCQ0ACwsgCCAKdiIERQ0AIAcoAmAgDUYEfyAHQeAAahCbEiAHKAJkBSADCyANQQJ0aiAENgIAIAcgDUEBajYCaAsgDg0ADAELIAdB4ABqIA4Q7AYLQgAhFSAHKAJkIQRBACEIAkACfwJAAkACQAJAIAcoAmgiBSILDgMFAQIACyAEIAVBAnQiCGoiA0EMaykCACIVIANBBGsoAgAiBmciCkEgc60iFoZCAFINAiAEQRBrIQ0DQCAIIgNBDEcEQCADQQRrIQggAyANaigCAEUNAQsLIAatIBaGIBVBICAKa62IhCEVIANBDEciCCAFDQMaQQAhCwwECyAEKAIAIgOtIANnQSBzrYYhFUEADAILIAQpAgAiFSAVeYYhFUEADAELIAatIBaGIBVBICAKa62IhCEVQQELIQggBCAFQQJ0akEEaygCAGchCwsgFUEAIBV5pyAVUBsiA62GIRYCQAJAAkACQAJAQb9/IAVBBXQgC2tBQGogBUH///8/SxsgA2siA0ELaiIFQc53TgRAIBZCC4ghFSAWQv8PgyIXQoAIUQ0BIBdCgAhWDQMMBAsgA0GNd0sNAUQAAAAAAAAAACEbDAQLIAggFkKAEINCC4inckUNAgwBCwJAAkAgA0GOd0YEQCAWQoCAgICAgICAgH9WIQtCACEVIBZCgICAgICAgICAf1INAQwCCyAWQn9BzncgA2utIhWGQn+FgyIXQgEgFUIBfYYiGFYhCyAWIBWIIRUgFyAYUQ0BC0HOdyEFIAsNAQwCC0HOdyEFIAgNACALIBWnckEBcUUNAQsgFUIBfCEVCyAVQoCAgICAgIAIIBVCgICAgICAgBCDIhZQGyEVAkACQCAFIBZCNYinaiIFQcwHa0E1SQRAQn9CNSAFQcsHa60iFn2GQoCAgICAgIBwhSAVg1ANAQtEAAAAAAAAAAAhGyAVUA0CIAVBzndIDQIgBUHLB0wNAUQAAAAAAADwfyEbDAILQcsHIQUgFSAWhiIVQgBSDQBEAAAAAAAAAAAhGwwBCyAVQv////////8HgyAFQbMIaq1CNIYiFiAVQguGQj+HgyAWIAVBzndGG4S/IRsLIAcoAmAiBUUNACAEQQRrKAIAIgZBeHEhAyADIAVBAnQiBUEEQQggBkEDcSIGG2pJDQMgBkEARyADIAVBJ2pLcQ0EIAQQvAULIAACfyAbmUQAAAAAAADwf2IEQCAAIBsgG5ogAhs5AwhBAAwBCyAHQQ42AmAgACABIAdB4ABqEKAONgIEQQELNgIAIAdB8ABqJAAPCyAFIA0gDUGAssgAEIcOAAtBBBCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC7tcAhV/A34jAEHgAmsiBiQAAkACQAJAAkACQAJAAkAgA0UEQEEAIQMMAQsgAigCAA0AIAJBBGohCCADQQJ0QQRrIQdBfyEJA0AgCSEMIAdFDQIgCUEBaiEJIAdBBGshByAIKAIAIAhBBGohCEUNAAsgDEECaiEIIAEgCUsEQCABIAhrIQEgAyAIayEDIAhBAnQiCCAAaiEAIAIgCGohAgwBCyAIIAEgAUGQosQAEIcOAAsCQCAFRQRAQQAhBQwBCyAEKAIADQAgBEEEaiEIIAVBAnRBBGshB0F/IQkDQCAJIQwgB0UNAiAJQQFqIQkgB0EEayEHIAgoAgAgCEEEaiEIRQ0ACyAMQQJqIQggASAJSwRAIAEgCGshASAFIAhrIQUgCEECdCIIIABqIQAgBCAIaiEEDAELIAggASABQaCixAAQhw4ACwJAIAMgBUkEQCAFIQsgBCEMIAMhBSACIQQMAQsgAyELIAIhDAsCQAJAIAVBIU8EQCAFQYECSQ0CIAZBCGogBCALQQNuQQFqIhIgBSAFIBJLGyIIEO4KIBIgBSAIayICIAIgEksbIgIgCGoiAyAFTQ0BIAggAyAFQfCixAAQhw4ACyAFRQ0CIAQgBUECdGohEyABQQJ0IQogC0F+cSEQIAtBAXEhDyALQQJ0Ig5BBGohA0EAIQIgACEFAkACQANAIAEgAk8EQAJAIAQoAgAiCEUNACABIAJrIhQgC0kNAyAAIAJBAnRqIRYCQCALRQRAQgAhHAwBCyAIrSEdQQAhCUIAIRwgC0EBRwRAIAwhCCAFIQcDQCAHIBwgBzUCAHwgCDUCACAdfnwiGz4CACAHQQRqIg01AgAgG0IgiHwgCEEEajUCACAdfnwhGyANIBs+AgAgG0IgiCEcIAhBCGohCCAHQQhqIQcgECAJQQJqIglHDQALIA9FDQELIBwgCUECdCIHIBZqIgg1AgB8IAcgDGo1AgAgHX58IRsgCCAbPgIAIBtCIIghHAsgCyAURg0IIBwgDiAWaiIINQIAfCEbIAggGz4CACAbQoCAgIAQVA0AIAMhByAUIAtrQQFGDQQDQCAFIAdqIggoAgBBAWohCSAIIAk2AgAgCQ0BIAogB0EEaiIHRw0ACwwECyACQQFqIQIgCkEEayEKIAVBBGohBSATIARBBGoiBEcNAQwGCwsgAiABIAFBsKPEABCHDgALQcSwyQBBE0Hgo8QAEL8TAAsgBkEBNgK4AiMAQRBrIgAkACAAQfCjxAA2AgwgACAGQbgCajYCCCAAQQhqQcygxAAgAEEMakHMoMQAQfSjxABBywBBnKTEABCRDwALIAZBGGoiCSAEIAhBAnRqIAIQ7gogBkEoaiIHIAQgA0ECdGogBSADaxDuCgJAAkACQCALBEAgBkE4aiIIIAwgEhDuCiASIAsgEmsiAiACIBJLGyICIBJqIgMgC0sNASAGQcgAaiIFIAwgEkECdGogAhDuCiAGQdgAaiIEIAwgA0ECdGogCyADaxDuCiAGQegAaiIDIAZBCGogBxDdBSAGQfgAaiICIAggBBDdBSAGQYgBaiADIAkQ8wQgBkGYAWogAiAFEPMEQQEhByAGLQAUIgJBAUYNAgJ/AkACQAJAIAYtAERBAWsOAgYBAAsgAg0BQQIMAgsgAkUNAEECDAELQQALIAZBuAJqIAZBCGogBkE4ahClCEEBIAYoAsACGyEHDAMLQQAgEkEAQeCixAAQhw4ACyASIAMgC0HQosQAEIcOAAsgBkG4AmogBkEIaiAGQThqEKUIIAZBADYCwAIgBigCuAIiBUEESQ0AIAYoArwCIgRBBGsoAgAiAkF4cSEIIAhBBEEIIAJBA3EiAxsgBUECdCICakkNBCADQQBHIAggAkEnaktxDQUgBBC8BSAGQoCAgIDAADcCuAILIAYgBigCwAI2ArABIAYgBikCuAI3A6gBIAYgBzoAtAFBASEHAkACQCAGLQA0IgJBAUYNAAJ/AkACQAJAIAYtAGRBAWsOAgQBAAsgAg0BQQIMAgsgAkUNAEECDAELQQALIAZBuAJqIAZBKGogBkHYAGoQpQhBASAGKALAAhshBwwBCyAGQbgCaiAGQShqIAZB2ABqEKUIIAZBADYCwAIgBigCuAIiBUEESQ0AIAYoArwCIgRBBGsoAgAiAkF4cSEIIAhBBEEIIAJBA3EiAxsgBUECdCICakkNBCADQQBHIAggAkEnaktxDQUgBBC8BSAGQoCAgIDAADcCuAILIAYgBigCwAI2AsABIAYgBikCuAI3A7gBIAYgBzoAxAEgBkHQAmogBkHoAGogBkEYahD0AyAGQbgCaiAGQfgAaiAGQcgAahD0AwJAAkAgBi0A3AIiAkEBRg0AAn8CQAJAAkAgBi0AxAJBAWsOAgQBAAsgAg0BQQIMAgsgAkUNAEECDAELQQALIAYoArwCIQMgBigC1AIhBwJAAkACQAJAAkAgBigC2AIiBQRAIAYoAsACIgQNAQsgBkEANgKgAiAGQoCAgIDAADcDmAIMAQsCQCAEQQFHBEAgBUEBRw0BIAcoAgAhAyAGIAYoAsACNgKwAiAGIAYpArgCNwOoAiAGQagCaiADENEKIAYgBigCsAI2AqACIAYgBikDqAI3A5gCDAMLIAMoAgAhBCAGIAYoAtgCNgKwAiAGIAYpAtACNwOoAiAGQagCaiAEENEKIAYgBigCsAI2AqACIAYgBikDqAI3A5gCIAMhByAGKAK4AiIIRQ0EDAMLIAZBmAJqIAcgBSADIAQQ/AsLIAYoArgCIghFDQAgA0EEaygCACIEQXhxIQkgCUEEQQggBEEDcSIFGyAIQQJ0IgRqSQ0IIAVBAEcgCSAEQSdqS3ENCSADELwFCyAGKALQAiIIRQ0BCyAHQQRrKAIAIgNBeHEhBSAFQQRBCCADQQNxIgQbIAhBAnQiA2pJDQYgBEEARyAFIANBJ2pLcQ0HIAcQvAULQQEgBigCoAIbIQcMAQsgBigCvAIhAiAGKALUAiEHAkACQAJAAkACQCAGKALYAiIEBEAgBigCwAIiAw0BCyAGQoCAgIDAADcDmAIMAQsCQCADQQFHBEAgBEEBRw0BIAcoAgAhAiAGIAYoAsACNgKwAiAGIAYpArgCNwOoAiAGQagCaiACENEKIAYgBigCsAI2AqACIAYgBikDqAI3A5gCDAMLIAIoAgAhAyAGIAYoAtgCNgKwAiAGIAYpAtACNwOoAiAGQagCaiADENEKIAYgBigCsAI2AqACIAYgBikDqAI3A5gCIAIhByAGKAK4AiIIRQ0EDAMLIAZBmAJqIAcgBCACIAMQ/AsLIAYoArgCIgVFDQAgAkEEaygCACIDQXhxIQggCEEEQQggA0EDcSIEGyAFQQJ0IgNqSQ0HIARBAEcgCCADQSdqS3ENCCACELwFCyAGKALQAiIIRQ0BCyAHQQRrKAIAIgJBeHEhBCAEQQRBCCACQQNxIgMbIAhBAnQiAmpJDQUgA0EARyAEIAJBJ2pLcQ0GIAcQvAULIAZBADYCoAJBASEHIAYoApgCIgVBBEkNACAGKAKcAiIEQQRrKAIAIgJBeHEhCCAIQQRBCCACQQNxIgMbIAVBAnQiAmpJDQQgA0EARyAIIAJBJ2pLcQ0FIAQQvAUgBkKAgICAwAA3A5gCCyAGIAYoAqACNgLQASAGIAYpA5gCNwPIASAGIAc6ANQBQQEhBwJAAkAgBi0AlAEiAkEBRg0AAn8CQAJAAkAgBi0ApAFBAWsOAgQBAAsgAg0BQQIMAgsgAkUNAEECDAELQQALIAZBuAJqIAZBiAFqIAZBmAFqEKUIQQEgBigCwAIbIQcMAQsgBkG4AmogBkGIAWogBkGYAWoQpQggBkEANgLAAiAGKAK4AiIFQQRJDQAgBigCvAIiBEEEaygCACICQXhxIQggCEEEQQggAkEDcSIDGyAFQQJ0IgJqSQ0EIANBAEcgCCACQSdqS3ENBSAEELwFIAZCgICAgMAANwK4AgsgBiAGKALAAjYC4AEgBiAGKQK4AjcD2AEgBiAHOgDkASAGQbgCaiAGQYgBaiAGQShqEPQDIAYtAMQCIQUgBigCuAIhBCAGKAK8AiEDIAYgBigCwAIiAjYC2AIgBiADNgLUAiAGIAQ2AtACAkACQAJAAkACQAJAIARBf0cEQCACDQEgBiAGKALYAjYCsAIgBiAGKQLQAjcDqAIMAgsgAygCCEUNAgsgBkGoAmogBkHQAmpBAEEBEK8DC0EBIQkgBigCqAIhByAGKAKsAiEIIAVBAUcNAkEAIQUgB0EESQ0DIAhBBGsoAgAiAkF4cSEEIARBBEEIIAJBA3EiAxsgB0ECdCICakkNByADQQBHIAQgAkEnaktxDQggCBC8BQwBC0EBIQkLQQQhCEEAIQVBACEHDAELIAVBASAGKAKwAiIFGyEJCyAGIAU2AtgCIAYgCDYC1AIgBiAHNgLQAiAGIAk6ANwCIAZBqAJqIAZB0AJqIAZBCGoQ1wMgBkG4AmogBkGYAWogBkHYAGoQ9AMgBi0AxAIhBSAGKAK4AiEEIAYoArwCIQMgBiAGKALAAiICNgLYAiAGIAM2AtQCIAYgBDYC0AICQAJAAkACQAJAAkAgBEF/RwRAIAINASAGIAYoAtgCNgKgAiAGIAYpAtACNwOYAgwCCyADKAIIRQ0CCyAGQZgCaiAGQdACakEAQQEQrwMLQQEhCSAGKAKYAiEHIAYoApwCIQggBUEBRw0CQQAhBSAHQQRJDQMgCEEEaygCACICQXhxIQQgBEEEQQggAkEDcSIDGyAHQQJ0IgJqSQ0HIANBAEcgBCACQSdqS3ENCCAIELwFDAELQQEhCQtBBCEIQQAhBUEAIQcMAQsgBUEBIAYoAqACIgUbIQkLIAYgBTYC2AIgBiAINgLUAiAGIAc2AtACIAYgCToA3AIgBkG4AmogBkHQAmogBkE4ahDXAwJAAkAgBi0AtAIiAkEBRg0AAn8CQAJAAkAgBi0AxAJBAWsOAgQBAAsgAg0BQQIMAgsgAkUNAEECDAELQQALIAYoArwCIQMgBigCrAIhBwJAAkACQAJAAkAgBigCsAIiBQRAIAYoAsACIgQNAQsgBkEANgKgAiAGQoCAgIDAADcDmAIMAQsCQCAEQQFHBEAgBUEBRw0BIAcoAgAhAyAGIAYoAsACNgLYAiAGIAYpArgCNwPQAiAGQdACaiADENEKIAYgBigC2AI2AqACIAYgBikD0AI3A5gCDAMLIAMoAgAhBCAGIAYoArACNgLYAiAGIAYpAqgCNwPQAiAGQdACaiAEENEKIAYgBigC2AI2AqACIAYgBikD0AI3A5gCIAMhByAGKAK4AiIIRQ0EDAMLIAZBmAJqIAcgBSADIAQQ/AsLIAYoArgCIghFDQAgA0EEaygCACIEQXhxIQkgCUEEQQggBEEDcSIFGyAIQQJ0IgRqSQ0IIAVBAEcgCSAEQSdqS3ENCSADELwFCyAGKAKoAiIIRQ0BCyAHQQRrKAIAIgNBeHEhBSAFQQRBCCADQQNxIgQbIAhBAnQiA2pJDQYgBEEARyAFIANBJ2pLcQ0HIAcQvAULQQEgBigCoAIbIQcMAQsgBigCvAIhAiAGKAKsAiEHAkACQAJAAkACQCAGKAKwAiIEBEAgBigCwAIiAw0BCyAGQoCAgIDAADcDmAIMAQsCQCADQQFHBEAgBEEBRw0BIAcoAgAhAiAGIAYoAsACNgLYAiAGIAYpArgCNwPQAiAGQdACaiACENEKIAYgBigC2AI2AqACIAYgBikD0AI3A5gCDAMLIAIoAgAhAyAGIAYoArACNgLYAiAGIAYpAqgCNwPQAiAGQdACaiADENEKIAYgBigC2AI2AqACIAYgBikD0AI3A5gCIAIhByAGKAK4AiIIRQ0EDAMLIAZBmAJqIAcgBCACIAMQ/AsLIAYoArgCIgVFDQAgAkEEaygCACIDQXhxIQggCEEEQQggA0EDcSIEGyAFQQJ0IgNqSQ0HIARBAEcgCCADQSdqS3ENCCACELwFCyAGKAKoAiIIRQ0BCyAHQQRrKAIAIgJBeHEhBCAEQQRBCCACQQNxIgMbIAhBAnQiAmpJDQUgA0EARyAEIAJBJ2pLcQ0GIAcQvAULIAZBADYCoAJBASEHIAYoApgCIgVBBEkNACAGKAKcAiIEQQRrKAIAIgJBeHEhCCAIQQRBCCACQQNxIgMbIAVBAnQiAmpJDQQgA0EARyAIIAJBJ2pLcQ0FIAQQvAUgBkKAgICAwAA3A5gCCyAGIAYoAqACNgLwASAGIAYpA5gCNwPoASAGIAc6APQBIAZB0AJqIgIgBkHoAWogBkHIAWoQ3wYgBi0A3AIhAyAGQbgCaiACQQMQoQdBASECIAYoArwCIQggBigCuAIhBwJAIANBAUYEQEEAIQUgB0EESQ0BIAhBBGsoAgAiA0F4cSEFIAVBBEEIIANBA3EiBBsgB0ECdCIDakkNBSAEQQBHIAUgA0EnaktxDQYgCBC8BUEEIQhBACEFQQAhBwwBCyADQQEgBigCwAIiBRshAgsgBiAFNgKAAiAGIAg2AvwBIAYgBzYC+AEgBiACOgCEAiAGQbgCaiIDIAZByAFqIAZB2AFqIgIQ3wYgBkGIAmogAxDQCCAGQZgCaiACIAZBqAFqEN8GIAYoAvgBIQsgBigC/AEhDiAGLQCkAiECAkACQCAGLQCEAiIDQQFGBEACQAJAIAYoAqACIgdFBEBBBCEIQQAhBwwBCyAGKAKcAiEDIAdBAnQiBBCQASIIRQ0BIARFDQAgCCADIAT8CgAACyACIQkMAgsMCQsgBigCgAIhCgJAAkACQAJAAkACQAJAIAJBAWsOAgYBAAsgA0UNAQwCCyADRQ0BCyAGKAKcAiEMAn8gBigCoAIiDSAKRwRAIAogDUkgCiANS2sMAQsgDEEEayEIIApBAnQhByAOQQRrIQUDQCAHRQRAQQQhCEEAIQdBASEJDAcLIAUgB2ohBCAHIAhqIAdBBGshBygCACIJIAQoAgAiA0YNAAsgAyAJSSADIAlLawtBASEJQQQhCEH/AXEiBw4CBAIBCyAGIAo2AtgCIAYgDjYC1AIgBiALNgLQAiAGQagCaiAGQdACaiAGKAKcAiAGKAKgAhDFBiAGIAYpAqgCNwO4AiAGIAYoArACIgM2AsACIAYgAkEBIAMbOgDEAgwEC0ECIQcCQAJAAkACQCACQQFrDgIAAQILIAYgCjYCwAIgBiAONgK8AiAGIAs2ArgCIAZBuAJqIAwgDRDdByAGKAK8AiEDQQEhAkEAIQkgBigCuAIiB0EESQRAIAMhCAwDCyADIAdBAnQQ2RJBACEHDAILQQAhBwsgBiAKNgLAAiAGIA42ArwCIAYgCzYCuAIgBkG4AmogDCANEN0HIAdBASAGKALAAiIJGyECIAYoArwCIQggBigCuAIhBwsgBiAJNgLAAiAGIAg2ArwCIAYgBzYCuAIgBiACOgDEAgwDCyAGIAo2AsACIAYgDjYCvAIgBiALNgK4AiAGQdACaiAMIA0gBkG4AmoQgAVBASEHAkAgAkEBRwRAIAJBASAGKALYAhshBwwBCyAGQQA2AtgCIAYoAtACIgJBBEkNACAGKALUAiACQQJ0ENkSIAZCgICAgMAANwLQAgsgBiAHOgDEAiAGIAYpAtACNwO4AiAGIAYoAtgCNgLAAgwCCyAGIAo2AsACIAYgDjYCvAIgBiALNgK4AiAGIAZBhQJqIgIvAAA7AMUCIAYgAi0AAjoAxwIgBkECIANrOgDEAgwBCyAGIAc2AsACIAYgCDYCvAIgBiAHNgK4AiAGIAk6AMQCIAtFDQAgDkEEaygCACICQXhxIQQgBEEEQQggAkEDcSIDGyALQQJ0IgJqSQ0EIANBAEcgBCACQSdqS3ENBSAOELwFCyAGQdACaiAGQbgCahDQCCAGLQDEASECIAZBfzYCuAIgBiAGQbgBajYCvAICQCAGKALAAUUEQCAGQQA2ArACIAZCgICAgMAANwKoAgwBCyAGQagCaiAGQbgCakEAQQEQrwMLQQEhCAJAIAJBAUYEQCAGQQA2ArACIAYoAqgCIgVBBEkNASAGKAKsAiIEQQRrKAIAIgJBeHEhByAHQQRBCCACQQNxIgMbIAVBAnQiAmpJDQUgA0EARyAHIAJBJ2pLcQ0GIAQQvAUgBkKAgICAwAA3AqgCDAELIAJBASAGKAKwAhshCAsgBiAIOgDEAiAGIAYpAqgCNwO4AiAGIAYoArACNgLAAiAGQagCaiAGQdACaiAGQbgCaiICEPQDIAYgBikCqAI3A/gBIAYgBikCsAI3A4ACIAIgBkGIAmogBkG4AWoQ8wQgBi0ApAIhBCAGKAKgAiEJIAYoApwCIQwgBigCmAIhCCAGQaUCaiEQAkAgBi0AxAIiA0EBRgRAIAYgEC0AAjoA0gIgBiAQLwAAOwHQAiAIIQcgDCECIAQhBQwBCwJAAkACQAJAAkACQAJAIARBAWsOAgABAgsgBigCwAIiB0UEQEEEIQJBACEHIAMhBQwGCyAGKAK8AiEEIAdBAnQiBRCQASICRQ0NIAUEQCACIAQgBfwKAAALIAMhBQwFCyADDQEMAgsgAw0BCyAGIAk2AtgCIAYgDDYC1AIgBiAINgLQAiAGQagCaiAGQdACaiAGKAK8AiAGKALAAhDFBiAEQQEgBigCsAIiCRshBQwBCyAGKAK8AiEKAn8gBigCwAIiDyAJRwRAIAkgD0sgCSAPSWsMAQsgDEEEayELIAlBAnQhByAKQQRrIQ0DQCAHRQRAQQQhAkEAIQdBASEFDAQLIAcgDWohBSAHIAtqIAdBBGshBygCACIOIAUoAgAiAkYNAAsgAiAOSSACIA5LawshB0EBIQVBBCECAkACQCAHQf8BcSIHDgIDAQALIAYgCTYC2AIgBiAMNgLUAiAGIAg2AtACIAZBqAJqIAogDyAGQdACahCABSADQQEgBigCsAIiCRshBQwBCyAGIAk2AtgCIAYgDDYC1AIgBiAINgLQAiAGQdACaiAKIA8Q3QcgBigC1AIhAyAGKALQAiEHIARBAUYEQEEAIQkgB0EESQRAIAMhAgwECyADIAdBAnQQ2RJBACEHDAMLIARBASAGKALYAiIJGyEFIAMhAgwCCyAGKAKsAiECIAYoAqgCIQcMAQsgCEUEQCAHIQkMAQsgDEEEaygCACIDQXhxIQkgCUEEQQggA0EDcSIEGyAIQQJ0IgNqSQ0EIARBAEcgCSADQSdqS3ENBSAMELwFIAchCQsgECAGLwHQAjsAACAQIAYtANICOgACIAYgBToApAIgBiAJNgKgAiAGIAI2ApwCIAYgBzYCmAIgBigCuAIiBQRAIAYoArwCIgRBBGsoAgAiAkF4cSEIIAhBBEEIIAJBA3EiAxsgBUECdCICakkNBCADQQBHIAggAkEnaktxDQUgBBC8BQsgBikCiAIhGyAGQoCAgIDAADcCiAIgBiAGKQKQAjcD2AIgBiAbNwPQAiAGQbgCaiAGQdACaiAGQfgBahDfBiAGKAKIAiIFBEAgBigCjAIiBEEEaygCACICQXhxIQggCEEEQQggAkEDcSIDGyAFQQJ0IgJqSQ0EIANBAEcgCCACQSdqS3ENBSAEELwFCyAGIAYpAsACNwOQAiAGIAYpArgCNwOIAiASQQJ0IQ8gAUECdCIKQQRrIQ4gBiAGQbgBajYCyAIgBiAGQfgBajYCxAIgBiAGQZgCajYCwAIgBiAGQYgCajYCvAIgBiAGQagBajYCuAIgBkHMAmohBUEQIQMCQANAAkAgA0ECdiICIA9sIRYgBUEEayIFIAZBuAJqa0ECdiEEAkACQAJAIAUoAgAiBy0ADEEBaw4CAgEACyAEIBJsIgggAU0EQCABIAIgEmxrIRQgBygCCCIVIAEgCGsiEyATIBVLGyIEQQJ0IRAgBygCBCECAkACQCAERQ0AIAAgCEECdGohCwJAAkAgBEEBRgRAQQAhCUIAIRwMAQsgACAWaiEHIARBAXEgFSAUIBQgFUsbQX5xIQxBACEJQgAhHCACIQgDQCAHIAc1AgAgHCAINQIAfH0iGz4CACAHQQRqIgQ1AgAgCEEEajUCACAbQj+IfH0hGyAEIBs+AgAgG0I/iCEcIAhBCGohCCAHQQhqIQcgDCAJQQJqIglHDQALRQ0BCyAJQQJ0IgggC2oiBDUCACAcIAIgCGo1AgB8fSEbIAQgGz4CAAsgG0IAWQ0AIBMgFU0NASALIBBqIQcgFiAKayAVIBQgFCAVSxtBAnRqIQkDQCAHIAcoAgAiBEEBazYCACAEDQEgB0EEaiEHIAlBBGoiCQ0ACwwBCyACIBBqIQggFUECdCAVIBQgFCAVSxtBAnRrIQcDQCAHRQ0EIAdBBGshByAIKAIAIAhBBGohCEUNAAsLQbyhxABBNEHwocQAEOsTAAsgCCABIAFBsKLEABCHDgALIAQgEmwiAiABSw0BIAcoAggiEyABIAJrIgtLDQYgE0UNACAAIAJBAnRqIRAgBygCBCECAkACQCATQQFGBEBBACEJQgAhHAwBCyAAIBZqIQcgE0EBcSATQX5xIQxBACEJQgAhHCACIQgDQCAHIAg1AgAgHCAHNQIAfHwiGz4CACAIQQRqNQIAIAdBBGoiBDUCACAbQiCIfHwhGyAEIBs+AgAgG0IgiCEcIAhBCGohCCAHQQhqIQcgDCAJQQJqIglHDQALRQ0BCyAJQQJ0IgggEGoiBCACIAhqNQIAIBwgBDUCAHx8Ihs+AgAgG0IgiCEcCyAcUA0AIAsgE0YNACATQQJ0IgIgEGohByAOIBZrIAJrIQgDQCAHIAcoAgAiAkEBajYCACACQX9HDQEgB0EEaiEHIAgiAkEEayEIIAINAAsLIANBBGshAyAFIAZBuAJqRw0BDAILCyACIAEgAUHAosQAEIcOAAsgBigCmAIiAwRAIAYoApwCIgJBBGsoAgAiAEF4cSEEIARBBEEIIABBA3EiARsgA0ECdCIAakkNBCABQQBHIAQgAEEnaktxDQUgAhC8BQsgBigCiAIiAwRAIAYoAowCIgJBBGsoAgAiAEF4cSEEIARBBEEIIABBA3EiARsgA0ECdCIAakkNBCABQQBHIAQgAEEnaktxDQUgAhC8BQsgBigC+AEiAwRAIAYoAvwBIgJBBGsoAgAiAEF4cSEEIARBBEEIIABBA3EiARsgA0ECdCIAakkNBCABQQBHIAQgAEEnaktxDQUgAhC8BQsgBigCuAEiAwRAIAYoArwBIgJBBGsoAgAiAEF4cSEEIARBBEEIIABBA3EiARsgA0ECdCIAakkNBCABQQBHIAQgAEEnaktxDQUgAhC8BQsgBigCqAEiA0UNASAGKAKsASICQQRrKAIAIgBBeHEhBCAEQQRBCCAAQQNxIgEbIANBAnQiAGpJDQMgAUEARyAEIABBJ2pLcUUEQCACELwFDAILDAQLAkACQAJAAkAgBUEBdiIRIAtNBEAgBSARayISIAsgEWsiFWoiF0H/////AU8NASAXQQFqIg5BAnQiGRCQASICRQ0KIBFBAnQiAyAEaiEUIAMgDGohFgJAIAJBBGstAABBA3FFDQAgGUUNACACQQAgGfwLAAsgBiAONgLYAiAGIAI2AtQCIAYgDjYC0AIgAiAOIBQgEiAWIBUQMiACIA5BAnRqQQRrKAIADQMgBSALaiIDIBFBAXRrQQJqIQogA0ECdCARQQN0ayEHA0AgB0F8RgRAQQAhCgwECyAKQQFrIQogAiAHaiAHQQRrIQcoAgBFDQALIAogDksNAwwCC0HEsMkAQRNBgKPEABC/EwALEJ4VAAsgBiAKNgLYAiAOQQJ2IApNBEAgAiEDDAILAkAgCiAOTQRAIApFBEBBBCEDIAIgGRDZEgwCCyACIBlBBCAKQQJ0EK0GIgMNAQwJCwwHCyAGIAo2AtACIAYgAzYC1AIMAQsgDiEKIAIhAwsgASARSQRAIBEgASABQaCjxAAQhw4ACwJAAkAgASARayIYIApPBEAgACARQQJ0aiENAkAgCkUNAAJAAkAgCkEBRgRAQQAhCQwBCyAKQQFxIApBfnEhD0EAIQkgAyEIIA0hBwNAIAcgCDUCACAcIAc1AgB8fCIbPgIAIAhBBGo1AgAgB0EEaiICNQIAIBtCIIh8fCEbIAIgGz4CACAbQiCIIRwgCEEIaiEIIAdBCGohByAPIAlBAmoiCUcNAAtFDQELIAlBAnQiCCANaiICIAMgCGo1AgAgHCACNQIAfHwiGz4CACAbQiCIIRwLIBxQDQAgCiAYRg0AIApBAnQiAiANaiEHIAFBAnQgAmsgEUECdGtBBGshCANAIAcgBygCACICQQFqNgIAIAJBf0cNASAHQQRqIQcgCCICQQRrIQggAg0ACwsgBUH+A3EiAiABSw0BIAEgAmsiEyAGKALYAiIaSQ0EAkAgGkUNACAAIAJBAnRqIQMgBigC1AIhAgJAAkAgGkEBRgRAQQAhCUIAIRwMAQsgGkEBcSAaQX5xIQ9BACEJQgAhHCACIQggAyEHA0AgByAINQIAIBwgBzUCAHx8Ihs+AgAgCEEEajUCACAHQQRqIgo1AgAgG0IgiHx8IRsgCiAbPgIAIBtCIIghHCAIQQhqIQggB0EIaiEHIA8gCUECaiIJRw0AC0UNAQsgCUECdCIHIANqIgggAiAHajUCACAcIAg1AgB8fCIbPgIAIBtCIIghHAsgHFANACATIBpGDQAgGkECdCICIANqIQcgAUECdCACayARQf8BcUEDdGtBBGshCANAIAcgBygCACICQQFqNgIAIAJBf0cNASAHQQRqIQcgCCICQQRrIQggAg0ACwtBACEHIAZBADYC2AIgBigC0AIgF00EQCAGQdACakEAIA4Q0REgBigC2AIhBwsgBigC1AIiCSAHQQJ0aiEIIBcEfyAZQQRrIgIEQCAIQQAgAvwLAAsgCSAHIA5qQQJ0akEEayEIIAcgF2oFIAcLIQIgCEEANgIAIAYgAkEBaiICNgLYAiAJIAIgBCARIAwgERAyIAkgAkECdGpBBGsoAgANAiAFIAdqIAtqIgMgEUEBdGtBAmohCCADQQJ0IBFBA3RrIQcCQANAIAdBfEYEQEEAIQgMAgsgCEEBayEIIAcgCWogB0EEayEHKAIARQ0ACyACIAhJDQMLIAYgCDYC2AIgCCECDAILDAMLIAIgASABQZCjxAAQhw4ACwJAIAYoAtACIgNBAnYgAk0EQCAJIQMMAQsCQCACIANNBEAgA0UEQCAJIQMMAwsgA0ECdCEIIAJFBEBBBCEDIAkgCBDZEgwCCyAJIAhBBCACQQJ0EK0GIgMNAQwICwwGCyAGIAI2AtACIAYgAzYC1AILAkACQCABIAJPBEACQCACRQ0AAkACQCACQQFGBEBBACEJQgAhHAwBCyACQQFxIAJB/v///wFxIQ9BACEJQgAhHCADIQggACEHA0AgByAINQIAIBwgBzUCAHx8Ihs+AgAgCEEEajUCACAHQQRqIgo1AgAgG0IgiHx8IRsgCiAbPgIAIBtCIIghHCAIQQhqIQggB0EIaiEHIA8gCUECaiIJRw0AC0UNAQsgCUECdCIHIABqIgggAyAHajUCACAcIAg1AgB8fCIbPgIAIBtCIIghHAsgHFANACABIAJGDQAgACACQQJ0IgBqIQcgAUECdCAAa0EEayEIA0AgByAHKAIAIgBBAWo2AgAgAEF/Rw0BIAdBBGohByAIIgBBBGshCCAADQALCyAGKALYAiIPIBhLDQQCQCAPRQ0AIAYoAtQCIQACQAJAIA9BAUYEQEEAIQlCACEcDAELIA9BAXEgD0F+cSEDQQAhCUIAIRwgACEIIA0hBwNAIAcgCDUCACAcIAc1AgB8fCIbPgIAIAhBBGo1AgAgB0EEaiICNQIAIBtCIIh8fCEbIAIgGz4CACAbQiCIIRwgCEEIaiEIIAdBCGohByADIAlBAmoiCUcNAAtFDQELIAlBAnQiAyANaiICIAAgA2o1AgAgHCACNQIAfHwiGz4CACAbQiCIIRwLIBxQDQAgDyAYRg0AIA9BAnQiACANaiEHIAFBAnQgAGsgEUECdGtBBGshCANAIAcgBygCACIAQQFqNgIAIABBf0cNASAHQQRqIQcgCCIAQQRrIQggAA0ACwsgBkG4AmoiACAUIBIgBCAREPICIAYoAsQCIQggBigCwAIhEyAGKAK8AiEPIAYtALgCIQIgACAWIBUgDCAREPICIAYoAsACIRAgBigCvAIhCiACQQFGDQIgBigCxAIhBAJAAkACQCAGLQC4AkEBaw4CBQABCyACRQ0BDAMLIAJFDQILIA0gGCATIAggECAEEDIMAgsMAwtBACEHIAZBADYC2AIgBigC0AIgF00EQCAGQdACakEAIA4Q0REgBigC2AIhBwsgBigC1AIiAiAHQQJ0aiEDIBcEfyAZQQRrIgAEQCADQQAgAPwLAAsgAiAHIA5qQQJ0akEEayEDIAcgF2oFIAcLIQAgA0EANgIAIAYgAEEBaiIDNgLYAiACIAMgEyAIIBAgBBAyAkAgAiADQQJ0akEEaygCAA0AIAUgB2ogC2oiACARQQF0a0ECaiEIIABBAnQgEUEDdGshBwJAA0AgB0F8RgRAQQAhCAwCCyAIQQFrIQggAiAHaiAHQQRrIQcoAgBFDQALIAMgCEkNAQsgBiAINgLYAiAIIQMLAkAgBigC0AIiAEECdiADTQRAIAIhAAwBCwJAIAAgA08EQCAARQRAIAIhAAwDCyAAQQJ0IQQgA0UEQEEEIQAgAiAEENkSDAILIAIgBEEEIANBAnQQrQYiAA0BDAkLDAcLIAYgAzYC0AIgBiAANgLUAgsgAyAYIAMgGEkbIgtBAnQhDAJAAkAgC0UNAAJAAkAgC0EBRgRAQQAhCUIAIRwMAQsgC0EBcSALQf7///8BcSEEQQAhCUIAIRwgACEIIA0hBwNAIAcgBzUCACAcIAg1AgB8fSIbPgIAIAdBBGoiAjUCACAIQQRqNQIAIBtCP4h8fSEbIAIgGz4CACAbQj+IIRwgCEEIaiEIIAdBCGohByAEIAlBAmoiCUcNAAtFDQELIAlBAnQiBCANaiICNQIAIBwgACAEajUCAHx9IRsgAiAbPgIACyAbQgBZDQAgAyAYTw0BIAwgDWohByABQQJ0IAtBAnRrIBFBAnRrIQkDQCAHIAcoAgAiAUEBazYCACABDQEgB0EEaiEHIAlBBGsiCQ0ACwwBCyAAIAxqIQggA0ECdCALQQJ0ayEHA0AgB0UNAiAHQQRrIQcgCCgCACAIQQRqIQhFDQALC0G8ocQAQTRB8KHEABDrEwALIAoEQCAQQQRrKAIAIgBBeHEhAiACQQRBCCAAQQNxIgEbIApBAnQiAGpJDQMgAUEARyACIABBJ2pLcQ0EIBAQvAULIA8EQCATQQRrKAIAIgBBeHEhAiACQQRBCCAAQQNxIgEbIA9BAnQiAGpJDQMgAUEARyACIABBJ2pLcQ0EIBMQvAULIAYoAtACIgNFDQAgBigC1AIiAkEEaygCACIAQXhxIQQgBEEEQQggAEEDcSIBGyADQQJ0IgBqSQ0CIAFBAEcgBCAAQSdqS3FFBEAgAhC8BQwBCwwDCyAGQeACaiQADwtBxLDJAEETQdykxAAQvxMAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtBiKHEAEHJAEGsocQAEL8TAAtBBBCnFAAL/F4BGH8jAEGABWsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEOIAIoAgAiBkGAgICAeHMiBCAEQRZPG0EBaw4VAQIDBAUGBwgJIyQlJicKCwwNDg8QAAsgAigCCCEEIANBkAJqIgUgAigCBCICQeAA/AoAACADQfACaiIGIARB4AD8CgAAIAAgASAFIAYQxwwgBEEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNYiABQQBHIABBiAFPcQ1hIAQQvAUgAkEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNYiABQQBHIABBiAFPcQ1hIAIQvAUMXwsgAigCCCEEIANBkAJqIgUgAigCBCICQeAA/AoAACADQfACaiIGIARB4AD8CgAAIAAgASAFIAYQ4gwgBEEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNYSABQQBHIABBiAFPcQ1gIAQQvAUgAkEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNYSABQQBHIABBiAFPcQ1gIAIQvAUMXgsgAigCCCEEIANBkAJqIgYgAigCBCIFQeAA/AoAACADQfACaiIHIARB4AD8CgAAIANBgAFqIgggASAGEMgBAkAgAygCgAFBfkYEQEEDEJABIgJFDWAgAkHFhcYALQAAOgACIAJBw4XGAC8AADsAACADQQM2AogBIAMgAjYChAEgA0EDNgKAASABIAgQ/A0gACABIAcQyAEMAQsgACADKQKoATcCKCAAIAMpAqABNwIgIAAgAykCmAE3AhggACADKQKQATcCECAAIAMpAogB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IANB8AJqIgYgBEHgAPwKAAAgACABIAUgBkEAEIwJIARBBGsoAgAiAEEDcSEBIABBeHFB5ABB6AAgARtJDVcgAUEARyAAQYgBT3ENViAEELwFIAJBBGsoAgAiAEEDcSEBIABBeHFB5ABB6AAgARtJDVcgAUEARyAAQYgBT3ENViACELwFDFQLIAIoAgghBCADQZACaiIFIAIoAgQiAkHgAPwKAAAgA0HwAmoiBiAEQeAA/AoAACAAIAEgBSAGQQEQjAkgBEEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNViABQQBHIABBiAFPcQ1VIAQQvAUgAkEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNViABQQBHIABBiAFPcQ1VIAIQvAUMUwsgAigCBCECQQMQkAEiBA0eDFMLIAIoAgQhAkEDEJABIgQNHgxSCyACKAIEIQRBBhCQASICDR5BARCnFAALIAIoAgQhBEEKEJABIgINHkEBEKcUAAsgAygC8AJBBEYNBAxKCyADQZACaiICIANB8AJqQeAA/AoAACADQYABaiADQdgDakHIAPwKAAAgA0HgAWogASACEMgBAkAgAygC4AFBfkcEQAwBCyADQeABaiABQbCCxgBBAxDXEiADKALgAUF+Rg0HCyAAIAMpAogCNwIoIAAgAykCgAI3AiAgACADKQL4ATcCGCAAIAMpAvABNwIQIAAgAykC6AE3AgggACADKQLgATcCACADQYABahD0EQxECwJAAkACQCADKALwAkEERgRAIAMoAvwCQQFGDQELIANBkAJqIgIgA0HwAmpB4AD8CgAAIANBgAFqIANB2ANqQcgA/AoAACADQeABaiABIAIQyAEgAygC4AFBfkYNAQwCCyADIAMoAvwCIgI2AugBIAMgAykC9AI3A+ABIAJFDSAgAyACQQFrIgI2AugBIAMoAuQBIAJB4ABsaiICKAIAIgRBf0YNICADQZACaiIHIAJBBGpB3AD8CgAAQeAAEKwUIgIgBDYCACACQQRqIAdB3AD8CgAAQeAAEKwUIgQgBkHgAPwKAAAgAyAENgKIASADIAI2AoQBIANBhoCAgHg2AoABIAAgASADQYABahAzIANB4AFqEKMOQQAhAgxGCyADQeABaiABQcyCxgBBBBDXEiADKALgAUF+Rg0gCyAAIAMpAogCNwIoIAAgAykCgAI3AiAgACADKQL4ATcCGCAAIAMpAvABNwIQIAAgAykC6AE3AgggACADKQLgATcCACADQYABahD0EQxDCyADKALcAw1HIAAgAUHQgsYAQQMQ1xJBASECQQEhASADKALwAkEERg0CDEQLIANBGGogAygC1AMiAhDkEiADKAIcQQFHDUYgAygCGCgCAEEBRw1GIANBkAJqIgQgA0HwAmpB4AD8CgAAIANBgAFqIAEgBBDIASADKAKAAUF+RwRAIAAgAykCqAE3AiggACADKQKgATcCICAAIAMpApgBNwIYIAAgAykCkAE3AhAgACADKQKIATcCCCAAIAMpAoABNwIAIAIQshAMQgsgA0GAAWogAUHMgsYAQQQQ1xIgAygCgAFBfkcEQCAAIAMpAqgBNwIoIAAgAykCoAE3AiAgACADKQKYATcCGCAAIAMpApABNwIQIAAgAykCiAE3AgggACADKQKAATcCACACELIQDEILIANBEGogAhDkEiADKAIURQ0eIAMoAhAiBCgCAEEBRw0eIANBCGogAigCABCIEiADIAMoAgw2AlQgAyADKAIIIgc2AlAgBwRAIAMgA0HQAGo2AnAgA0GAAWoiByAEQQhqEIsCIAMgA0HwAGqtQoCAgICgAoQ3A+ABIANBxABqIgQgA0HgAWoQzBIgACABIAcgBBCrESACELIQDEALQdOCxgBB9wBBkIPGABC/EwALIAMoAtQDIgRBCGooAgAEQCAEQQRqKAIAKAIIIgkNAgsgACABQdCCxgBBAxDXEgsgA0HwAmpBBHIQow5BASECQQEhAQxCC0EBIQIgA0HwAmpBBHIhBwJAIAlBAUcNACADKAL8AkEBRw0AIAMgBygCCCICNgJYIAMgBykCADcDUCACRQ0dIAMgAkEBayICNgJYIAMoAlQgAkHgAGxqIgIoAgAiB0F/Rg0dIAMgBzYCkAIgA0GQAmoiB0EEciACQQRqQdwA/AoAACADIAQoAgg2AogBIAMgBCkCADcDgAEgA0HgAWogA0GAAWoiAhDlBSADKALgAUF/Rg0eIAMgAygC6AE2AkAgAyADKQLgATcDOCACIAEgBxDIAQJAIAMoAoABQX5HBEAMAQsgA0GAAWogAUHMgsYAQQQQ1xIgAygCgAFBfkYNIAsgACADKQKoATcCKCAAIAMpAqABNwIgIAAgAykCmAE3AhggACADKQKQATcCECAAIAMpAogBNwIIIAAgAykCgAE3AgAgA0E4ahCjDiAEQQwQ2RIgA0HQAGoQow4gAygC8AJBBEYNPiADQfACahDNAQw+CyADIAcoAgg2AogBIAMgBykCADcDgAEgAyAEKAIINgKYAiADIAQpAgA3A5ACIAAgASADQYABaiADQZACakEAEJsQIARBDBDZEgw/CyAAIAEgA0GAAWoQzgoMOwsgAygC8AJBBEYNBAw2CyADQZACaiICIANB8AJqQeAA/AoAACADQYABaiADQdgDakHIAPwKAAAgA0HgAWogASACEMgBAkAgAygC4AFBfkcEQAwBCyADQeABaiABQdCDxgBBBBDXEiADKALgAUF+Rg0HCyAAIAMpAogCNwIoIAAgAykCgAI3AiAgACADKQL4ATcCGCAAIAMpAvABNwIQIAAgAykC6AE3AgggACADKQLgATcCACADQYABahD0EQwwCwJAAkACQCADKALwAkEERgRAIAMoAvwCQQFGDQELIANBkAJqIgIgA0HwAmpB4AD8CgAAIANBgAFqIANB2ANqQcgA/AoAACADQeABaiABIAIQyAEgAygC4AFBfkYNAQwCCyADIAMoAvwCIgI2AugBIAMgAykC9AI3A+ABIAJFDR0gAyACQQFrIgI2AugBIAMoAuQBIAJB4ABsaiICKAIAIgRBf0YNHSADQZACaiIHIAJBBGpB3AD8CgAAQeAAEKwUIgIgBDYCACACQQRqIAdB3AD8CgAAQeAAEKwUIgQgBkHgAPwKAAAgAyAENgKIASADIAI2AoQBIANBh4CAgHg2AoABIAAgASADQYABahAzIANB4AFqEKMOQQAhAgwyCyADQeABaiABQeSDxgBBCBDXEiADKALgAUF+Rg0dCyAAIAMpAogCNwIoIAAgAykCgAI3AiAgACADKQL4ATcCGCAAIAMpAvABNwIQIAAgAykC6AE3AgggACADKQLgATcCACADQYABahD0EQwvCyADKALcAw0zIAAgAUHsg8YAQQMQ1xJBASECQQEhASADKALwAkEERg0CDDALIANBMGogAygC1AMiAhDkEiADKAI0QQFHDTIgAygCMCgCAEEBRw0yIANBkAJqIgQgA0HwAmpB4AD8CgAAIANBgAFqIAEgBBDIASADKAKAAUF+RwRAIAAgAykCqAE3Aigg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AiggACADKQKQAzcCICAAIAMpAogDNwIYIAAgAykCgAM3AhAgACADKQL4AjcCCCAAIAMpAvACNwIACyADQYABahCiEAsgBEEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNGyABQQBHIABBiAFPcQ0aIAQQvAUgBUEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNGyABQQBHIABBiAFPcQ0aIAUQvAUMGAtBARCnFAALIANB8AJqIgYgAkHgAPwKAAAgACABIAYQyAEgAkHgABDZEiAEQeAAENkSIAVB4AAQ2RIMFgtBASEBDAULIAMoAsADIgBBfkYNACAAQX9GDQAgAEUNACADKALEAyAAENkSCyADKALQAyIAQQlNQQBBASAAdEHDBHEbRQRAIAYQzQELIAMoAqAEIgBBfkYNByAAQX9GDQcgAEUNByADKAKkBCAAENkSDAcLQQAhASADKALwAkEERg0BCyADQfACahDNAQsCQCADKALAAyIAQX5GDQAgAEF/Rg0AIABFDQAgAygCxAMgABDZEgsgAkUNAgsCQAJAAkAgAygC0AMOCgICAQEBAQIBAQABCyABRQ0BIAMoAtQDEOYSDAELIAYQzQELIAMoAqAEIgBBfkYNASAAQX9GDQEgAEUNASADKAKkBCAAENkSDAELIANBgAFqIgIgA0HwAmpB4AD8CgAAIANBkAJqIAZB4AD8CgAAIANB4AFqIAEgAhDIASADKALgAUF+RwRADAILIANB4AFqIAFB5IPGAEEIENcSIAMoAuABQX5HBEAMAgsgACABIANBkAJqEMgBCyAIQeAAENkSIAVB4AAQ2RIMDQsgACADKQKIAjcCKCAAIAMpAoACNwIgIAAgAykC+AE3AhggACADKQLwATcCECAAIAMpAugBNwIIIAAgAykC4AE3AgAgA0GQAmoQ5hELIAhBBGsoAgAiAEEDcSEBAkAgAEF4cUHkAEHoACABG0kNDyABQQBHIABBiAFPcQ0OIAgQvAUgBUEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNDyABQQBHIABBiAFPcQ0AIAUQvAUMDAsMDQtBASEBDAULIAMoAsADIgBBfkYNACAAQX9GDQAgAEUNACADKALEAyAAENkSCyADKALQAyIAQQlNQQBBASAAdEHDBHEbRQRAIAYQzQELIAMo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fkYNBwsgACADKQLIAzcCKCAAIAMpAsADNwIgIAAgAykCuAM3AhggACADKQKwAzcCECAAIAMpAqgDNwIIIAAgAykCoAM3AgAgA0FAaxDyEQxECwJAAkACQCADKAKQBUEERgRAIAMoApwFQQFGDQELIANBsARqIgIgA0GQBWpB4AD8CgAAIANBiAFqIANB+AVqQcgA/AoAACADQaADaiABIAIQyQEgAygCoANBfkYNAQwCCyADIAMoApwFIgI2AogEIAMgAykClAU3A4AEIAJFDSAgAyACQQFrIgI2AogEIAMoAoQEIAJB4ABsaiICKAIAIgRBf0YNICADQbAEaiIHIAJBBGpB3AD8CgAAEKsUIgIgBDYCACACQQRqIAdB3AD8CgAAEKsUIgQgBkHgAPwKAAAgAyAENgKoAyADIAI2AqQDIANBhoCAgHg2AqADIAAgASADQaADahA0IANBgARqEMEOQQAhAgxGCyADQaADaiABQcyCxgBBBBDXEiADKAKgA0F+Rg0gCyAAIAMpAsgDNwIoIAAgAykCwAM3AiAgACADKQK4AzcCGCAAIAMpArADNwIQIAAgAykCqAM3AgggACADKQKgAzcCACADQYgBahDyEQxDCyADKAL8BQ1HIAAgAUHQgsYAQQMQ1xJBASECQQEhACADKAKQBUEERg0CDEQLIANBEGogAygC9AUiAhDkEiADKAIUQQFHDUYgAygCECgCAEEBRw1GIANBsARqIgQgA0GQBWpB4AD8CgAAIANBoANqIAEgBBDJASADKAKgA0F+RwRAIAAgAykCyAM3AiggACADKQLAAzcCICAAIAMpArgDNwIYIAAgAykCsAM3AhAgACADKQKoAzcCCCAAIAMpAqADNwIAIAIQ8hIMQgsgA0GgA2ogAUHMgsYAQQQQ1xIgAygCoANBfkcEQCAAIAMpAsgDNwIoIAAgAykCwAM3AiAgACADKQK4AzcCGCAAIAMpArADNwIQIAAgAykCqAM3AgggACADKQKgAzcCACACEPISDEILIANBCGogAhDkEiADKAIMRQ0eIAMoAggiBCgCAEEBRw0eIAMgAigCABCIEiADIAMoAgQ2AuQBIAMgAygCACIHNgLgASAHBEAgAyADQeABajYCkAMgA0GgA2oiByAEQQhqEIoCIAMgA0GQA2qtQoCAgICgAoQ3A4AEIANB1AFqIgQgA0GABGoQzBIgACABIAcgBBCrESACEPISDEALQdOCxgBB9wBBkIPGABC/EwALIAMoAvQFIgRBCGooAgAEQCAEQQRqKAIAKAIIIgkNAgsgACABQdCCxgBBAxDXEgsgA0GQBWpBBHIQwQ5BASECQQEhAAxCC0EBIQIgA0GQBWpBBHIhBwJAIAlBAUcNACADKAKcBUEBRw0AIAMgBygCCCICNgLoASADIAcpAgA3A+ABIAJFDR0gAyACQQFrIgI2AugBIAMoAuQBIAJB4ABsaiICKAIAIgdBf0YNHSADIAc2ArAEIANBsARqIgdBBHIgAkEEakHcAPwKAAAgAyAEKAIINgKoAyADIAQpAgA3A6ADIANBgARqIANBoANqIgIQ5QUgAygCgARBf0YNHiADIAMoAogENgI4IAMgAykCgAQ3AzAgAiABIAcQyQECQCADKAKgA0F+RwRADAELIANBoANqIAFBzILGAEEEENcSIAMoAqADQX5GDSALIAAgAykCyAM3AiggACADKQLAAzcCICAAIAMpArgDNwIYIAAgAykCsAM3AhAgACADKQKoAzcCCCAAIAMpAqADNwIAIANBMGoQwQ4gBEEMENkSIANB4AFqEMEOIAMoApAFQQRGDT4gA0GQBWoQrQEMPgsgAyAHKAIINgKoAyADIAcpAgA3A6ADIAMgBCgCCDYCuAQgAyAEKQIANwOwBCAAIAEgA0GgA2ogA0GwBGpBABCZECAEQQwQ2RIMPwsgACABIANBQGsQzgoMOwsgAygCkAVBBEYNBAw2CyADQbAEaiICIANBkAVqQeAA/AoAACADQYACaiADQfgFakHIAPwKAAAgA0GgA2ogASACEMkBAkAgAygCoANBfkcEQAwBCyADQaADaiABQdCDxgBBBBDXEiADKAKgA0F+Rg0HCyAAIAMpAsgDNwIoIAAgAykCwAM3AiAgACADKQK4AzcCGCAAIAMpArADNwIQIAAgAykCqAM3AgggACADKQKgAzcCACADQYACahDyEQwwCwJAAkACQCADKAKQBUEERgRAIAMoApwFQQFGDQELIANBsARqIgIgA0GQBWpB4AD8CgAAIANByAJqIANB+AVqQcgA/AoAACADQaADaiABIAIQyQEgAygCoANBfkYNAQwCCyADIAMoApwFIgI2AogEIAMgAykClAU3A4AEIAJFDR0g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G0kNHyABQQBHIABBiAFPcQ0eIAQQvAUgBUEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNHyABQQBHIABBiAFPcQ0eIAUQvAUMHAtBARCnFAALIANBkAVqIgYgAkHgAPwKAAAgACABIAYQyQEgAkHgABDZEiAEQeAAENkSIAVB4AAQ2RIMGgtBCRCQASIGRQ0BIAZBxITGAC0AADoACCAGQbyExgApAAA3AAAgA0EJNgKYBSADIAY2ApQFIANBCTYCkAUgASADQZAFaiIGEPwNIAYgBEHgAPwKAAAgA0GwBGogASAGEMkBAkAgAygCsARBfkcEQCAAIAMpAtgENwIoIAAgAykC0AQ3AiAgACADKQLIBDcCGCAAIAMpAsAENwIQIAAgAykCuAQ3AgggACADKQKwBDcCAAwBCyADQZAFaiABQYfYxQBBBRDXEiADKAKQBUF+Rg0DIAAgAykCuAU3AiggACADKQKwBTcCICAAIAMpAqgFNwIYIAAgAykCoAU3AhAgACADKQKYBTcCCCAAIAMpApAFNwIACyADQaADahDDEAsgBEEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNGyABQQBHIABBiAFPcQ0aIAQQvAUgBUEEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNGyABQQBHIABBiAFPcQ0aIAUQvAUMGAtBARCnFAALIANBkAVqIgYgAkHgAPwKAAAgACABIAYQyQEgAkHgABDZEiAEQeAAENkSIAVB4AAQ2RIMFgtBASEADAULIAMoAuAFIgBBAEwNACADKALkBSAAENkSCyADKALwBSIAQQlNQQBBASAAdEHDBHEbRQRAIAYQrQELIAMoAsAGIgBBAEwNByADKALEBiAAENkSDAcLQQAhACADKAKQBUEERg0BCyADQZAFahCtAQsgAygC4AUiAUEASgRAIAMoAuQFIAEQ2RILIAJFDQILAkACQAJAIAMoAvAFDgoCAgEBAQECAQEAAQsgAEUNASADKAL0BRDlEgwBCyAGEK0BCyADKALABiIAQQBMDQEgAygCxAYgABDZEgwBCyADQaADaiICIANBkAVqQeAA/AoAACADQbAEaiAGQeAA/AoAACADQYAEaiABIAIQyQEgAygCgARBfkcEQAwCCyADQYAEaiABQeSDxgBBCBDXEiADKAKABEF+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ACEEIAJBAUcEQCACQQFxIAJB/v///wdxIQ5BACEIA0AgBSAJakEIayICKQIAISEgAiAIIAlqIgIpAgA3AgAgAiAhNwIAIAJBCGoiBykCACEhIAcgCiAEQf7///8Bc0EDdGoiAikCADcCACACICE3AgAgBUEQayEFIAhBEGohCCAOIARBAmoiBEcNAAtFDQELIAkgBEEDdGoiAikCACEhIAIgCiAEQX9zQQN0aiICKQIANwIAIAIgITcCAAsgAygCwAQhBSADIANBtARqrUKAgICAwAKENwPABCADQYQFakH/lMIAIANBwARqELgMIAMCfkHQ8MkALQAABEBByPDJACkDACEhQcDwyQApAwAMAQsgA0HABGoQuxFB0PDJAEEBOgAAQcjwyQAgAykDyAQiITcDACADKQPABAsiIjcDkAVBwPDJACAiQgF8NwMAIANBADYCqAUgA0KAgICAgAE3A6AFIAMgITcDmAUgA0GQqckAKQMANwKsBSADQZipyQApAwA3ArQFQQkQkAEiAkUNDCACQbC0yQAtAAA6AAggAkGotMkAKQAANwAAIANBCTYCyAUgAyACNgLEBSADQQk2AsAFIAMoArwEIgJBAEgNACACRQRAQQEhCAwCCyADKAK4BCEHIAIQkAEiCEUNDCACRQ0BIAggByAC/AoAAAwBCxCeFQALIANBg4CAgHg2AsAGIAMgAjYCuAYgAyAINgK0BiADIAI2ArAGIANBwARqIANBkAVqIANBwAVqIANBsAZqENIDIAMgAykD8AQ3A6gGIAMgAykD6AQ3A6AGIAMgAykD4AQ3A5gGIAMgAykD2AQiIjcDkAYgAyADKQPQBDcDiAYgAyADKQPIBDcDgAYgIqdBf0cEQCADQYAGahD+CQtBDRCQASICRQRADAsLIAJBjrHJACkAADcABSACQYmxyQApAAA3AAAgA0ENNgL8BSADIAI2AvgFIANBDTYC9AUgA0HABGoiAiAJIAYQ3w0gAygC0ARBf0YNBCADIAMpA+gENwOoBiADIAMpA+AENwOgBiADIAMpA9gENwOYBiADIAMpA9AENwOQBiADIAMpA8gENwOIBiADIAMpA8AENwOABiACIANBkAVqIANB9AVqIANBgAZqENIDIAMgAykD8AQ3A+gFIAMgAykD6AQ3A+AFIAMgAykD4AQ3A9gFIAMgAykD2AQi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IAopApQTITEgCigCkBMhHSAKKAKMEyEuIAooAogTISUgCigChBMhLyAKKAL4EiESIAooAvQSITAgCigC8BIhJCAKKALsEiEeIAooAugSIR8gCigC5BIhCCAKKALgEiEQIAooAtwSISMgCigC2BIhDyAKKALUEiEiIAooAtASIRkgCigCzBIhEyAKKAKAEiEcIAooArgRIRsgCigCqBEhFyAKKAKYESEVIAooAvwSIREgCigCyBIhBQsgAiARaiAtQcwA/AoAACAKIAZBAWoiBjYCgBMgCiAoKQIANwOgBiAKICgoAgg2AqgGIAogJykCADcDkAYgCiAnKAIINgKYBiAKQcwFaiAsQcQA/AoAACAKQYgFaiArQcQA/AoAACAKKAL0EyIgBEAgCigC+BMiFEEEaygCACIaQXhxISEgIUEEQQggGkEDcSIaGyAgakkNECAaQQBHICEgIEEnaktxDREgFBC8BQsgC0HYAGohCyACQcwAaiECIA1B2ABrIg0NAAsLIAcEQCAWQQRrKAIAIgJBeHEhDSANQQRBCCACQQNxIgsbIAdB2ABsIgJqSQ0OIAtBAEcgDSACQSdqS3ENDyAWELwFCyAKIBU2ArAGIAogCikDoAY3ArQGIAogCigCqAY2ArwGIAogFzYCwAYgCiAKKQOQBjcCxAYgCiAKKAKYBjYCzAYgCiAbNgLQBiAKQdQGaiAKQcwFakHEAPwKAAAgCiAcNgKYByAKQZwHaiAKQYgFakHEAPwKAAAgCiAyNwO4CCAKICY2ArQIIAogMTcCrAggCiAdNgKoCCAKIC42AqQIIAogJTYCoAggCiAvNgKcCCAKIAY2ApgIIAogETYClAggCiASNgKQCCAKIDA2AowIIAogJDYCiAggCiAeNgKECCAKIB82AoAIIAogCDYC/AcgCiAQNgL4ByAKICM2AvQHIAogDzYC8AcgCiAiNgLsByAKIBk2AugHIAogEzYC5AcgCiAFNgLgBwwBCyAKIBU2ArAGIAogCikDiBE3ArQGIAogCigCkBE2ArwGIApBfjYCtAggCkKAgICAYDcCpAggCkKAgICAwAA3ApwIIApCBDcClAggCkIANwKMCCAKQoCAgICAATcChAggCkIINwL8ByAKQgE3AvQHIAogDzYC8AcgCkKBgICAEDcD6AcgCiATNgLkByAKQQE2AuAHIApB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AWoiBTYCFCABKAKMASEHC0EAIQogByANRgRAIAEoAiwgASgCIGohCgsgASgCeCEOIAEoAlwhEQJAAkACQAJAAkACQAJAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NASABIAJBAWo2AgQLIAMgASgCiAEiCDYCuAIgAyABKQKAATcDsAJBACEGAkAgCCABKAKEAU8NACABQYABaigCACAIai0AAEHbAEcNACABIAhBAWo2AogBQQEhBgsCQAJAAkACQAJAIAEtAHxBAUYEQEEBEJABIgJFDRQgAkHbADoAACADQQE2AuwCIAMgAjYC6AIgA0KAgICAEDcC4AIgASAIIANB4AJqIAYQ+QgLIAZFDQQCQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgggASgCCCIGTw0GIAEgCEEBaiICNgIEIAIgBk8NASABIAhBAmo2AgQLIAFBADoAkQEgA0GAAmogARCUCiADKAKAAiADKAKEAiIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgJFBEAgA0HwAWogARCUCiADKAL0ASEBIAMoAvABIQcMAQsgAUEAOgCRASADQfgBaiABEJQKIAMoAvgBIQcgAygC/AEiASACOgCRAQsgB0EBRw0ACwsgASgCAEEBRgRAIAEoAgQiCCABKAIIIgZPDQUgASAIQQFqIgI2AgQgAiAGTw0EIAEgCEECajYCBAsgASgCFCELIAMgASgCiAE2AsgCIAMgASkCgAE3A8ACIANB6AFqIAEQQCADKALsASEBAkAgAygC6AFBAXENAAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiCCABKAIIIgZPDQIgASAIQQFqIgI2AgQgAiAGTw0BIAEgCEECajYCBAsgAUEAOgCRASADQeABaiABEJQKIAMoAuABIAMoAuQBIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiAkUEQCADQdABaiABEJQKIAMoAtQBIQEgAygC0AEhBwwBCyABQQA6AJEBIANB2AFqIAEQlAogAygC2AEhByADKALcASIBIAI6AJEBCyAHQQFHDQALCyABKAIAQQFHDQEgASgCBCICIAEoAghPDQAgASACQQFqIgg2AgQgASgCCCIGIAhNDQAgASgCFCELIAEgCEEBaiICNgIEIAIgBk8EQEEBIQcMBAsgASAIQQJqNgIEDAILIAEgAygCyAI2AogBIAEgAykDwAI3AoABIAsgASgCFEsNAyABIAs2AhQMAwsgASgCFCELCyADIAFBgAFqIgcoAgg2AtgCIAMgBykCADcD0AJBACEHAkAgASgCiAEiBiABKAKEAU8NACABKAKAASAGai0AAEEsRw0AIAEgBkEBajYCiAFBASEHCyABLQB8QQFGBEBBARCQASICRQ0SIAJBLDoAACADQQE2AuwCIAMgAjYC6AIgA0KAgICAEDcC4AIgASAGIANB4AJqIAcQ+QgLAn8CQCAHBEAgA0HIAWogARC8DiADKALMASEBIAMoAsgBQQFHDQELQQEMAQsgA0HAAWogARBAIAMoAsQBIQEgAygCwAELIgdBAUcNACABIAMoAtgCNgKIASABIAMpA9ACNwKAASALIAEoAhRLDQAgASALNgIUCyAHQQFxDQAgASgCAEEBRgRAIAEoAgQiAiABKAIITw0BIAEgAkEBajYCBAsgA0G4AWogARCTBiADKAK8ASEBIAMoArgBQQFxDQADQCADQbABaiABEJMGIAMoArQBIQEgAygCsAFBAUcNAAsLAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCIIIAEoAggiBk8NAiABIAhBAWoiAjYCBCACIAZPDQEgASAIQQJqNgIECyABQQA6AJEBIANBqAFqIAEQlAogAygCqAEgAygCrAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASICRQRAIANBmAFqIAEQlAogAygCnAEhASADKAKYASEHDAELIAFBADoAkQEgA0GgAWogARCUCiADKAKgASEHIAMoAqQBIgEgAjoAkQELIAdBAUcNAAsLQQAhBwJAIAEoAogBIgYgASgChAFPDQAgASgCgAEgBmotAABB3QBHDQAgASAGQQFqNgKIAUEBIQcLIAEtAHxBAUYEQEEBEJABIgJFDRAgAkHdADoAACADQQE2AuwCIAMgAjYC6AIgA0KAgICAEDcC4AIgASAGIANB4AJqIAcQ+QgLIAcNAgsgASADKAK4AjYCiAEgASADKQOwAjcCgAEgBSABKAIUSw0AIAEgBTYCFAsgAS0AkAFBAUYNBiABLQCRAUUNAyABKAKMASICIA1HDQEgCiABKAIgIgIgASgCLCIGaiIFSSAFIAprQQFGcQ0DIAIgDE8EQCABIAw2AiAgDCECCyAGIAlJDQIgASAJNgIsDAILIAEtAJABIgdBAUYEfyABLQCRAUUNBwJAIA0gASgCjAEiAkYEQCAKIAEoAiwiAiABKAIgIgZqIgVJIAUgCmtBAUZxDQkgBiAMTwRAIAEgDDYCIAsgAiAJSQ0BIAEgCTYCLCAJIQIMAQsgAiANTw0IIAEgDTYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAiQgAkYEQCABQSRqEKMSCyABKAIoIAJqQTQ6AAAgASACQQFqNgIsIAEtAJABBSAHC0H/AXFBAkcNBiABLQCRAUUNBiABKAIUIgUgBE0NAyABKAIQIARBFGxqIgItAAANCyACIAU2AgQgASgCiAEhAiABKAIUIgUgASgCDEYEQCABQQxqEJoSCyABKAIQIAVBFGxqIgkgAjYCECAJQQA2AgggCSAENgIEIAlBgegAOwEAIAEgBUEBajYCFAwGCyACIA1PDQEgASANNgKMAUEAIQIgAUEANgIsIAFBADYCIAsgASgCGCACRgRAIAFBGGoQoxILIAEgAkEBajYCICABKAIcIAJqQTQ6AAALIAEtAHxBAUcNASABLQCRAUUNASABQdQAakE0IBFBACABKAJ4IA5NGxCTBQwBCyAEIAVBnIrIABCFEwALIAEtAJABQQJHDQAgAS0AkQFFDQAgBCABKAIUSw0AIAEgBDYCFAsCQAJAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NASABIAJBAWo2AgQLQQAhCUEAIQwgASgCjAEiByABKAKIASINRgRAIAEoAiAhDCABKAIsIQkLIAEoAhQhBAJAIAEtAJABQQJHBEAgBCEFDAELIAQhBSABLQCRAUUNACABKAIMIARGBEAgAUEMahCaEgsgASgCECAEQRRsaiICIA02AgggAkEANgIEIAJBADoAACABIARBAWoiBTYCFCABKAKMASEHC0EAIQogByANRgRAIAEoAiwgASgCIGohCgsgASgCeCEOIAEoAlwhEQJAAkACQAJAAkACQAJAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NASABIAJBAWo2AgQLIAMgASgCiAEiCDYCuAIgAyABKQKAATcDsAJBACEGAkAgCCABKAKEAU8NACABQYABaigCACAIai0AAEH7AEcNACABIAhBAWo2AogBQQEhBgsCQAJAAkACQAJAIAEtAHxBAUYEQEEBEJABIgJFDRUgAkH7ADoAACADQQE2AuwCIAMgAjYC6AIgA0KAgICAEDcC4AIgASAIIANB4AJqIAYQ+QgLIAZFDQQCQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgggASgCCCIGTw0GIAEgCEEBaiICNgIEIAIgBk8NASABIAhBAmo2AgQLIAFBADoAkQEgA0GQAWogARCUCiADKAKQASADKAKUASIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgJFBEAgA0GAAWogARCUCiADKAKEASEBIAMoAoABIQcMAQsgAUEAOgCRASADQYgBaiABEJQKIAMoAogBIQcgAygCjAEiASACOgCRAQsgB0EBRw0ACwsgASgCAEEBRgRAIAEoAgQiCCABKAIIIgZPDQUgASAIQQFqIgI2AgQgAiAGTw0EIAEgCEECajYCBAsgASgCFCELIAMgASgCiAE2AsgCIAMgASkCgAE3A8ACIANB+ABqIAEQlwMgAygCfCEBAkAgAygCeEEBcQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCIIIAEoAggiBk8NAiABIAhBAWoiAjYCBCACIAZPDQEgASAIQQJqNgIECyABQQA6AJEBIANB8ABqIAEQlAogAygCcCADKAJ0IgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiAkUEQCADQeAAaiABEJQKIAMoAmQhASADKAJgIQcMAQsgAUEAOgCRASADQegAaiABEJQKIAMoAmghByADKAJsIgEgAjoAkQELIAdBAUcNAAsLIAEoAgBBAUcNASABKAIEIgIgASgCCE8NACABIAJBAWoiCDYCBCABKAIIIgYgCE0NACABKAIUIQsgASAIQQFqIgI2AgQgAiAGTwRAQQEhBwwECyABIAhBAmo2AgQMAgsgASADKALIAjYCiAEg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QCADLQDRASIMQQJHBEAgDEEBaw0GDAELIAMoApgBIQwgA0F/NgKYASAMQX9GDQIgCyAHKAIINgIIIAsgBykCADcCACADIAw2AmggA0HoAGoQiAggBCAFRg0LDAELC0Hj48gAQQUQshMMBAtB1IrHAEEQEOISCyEBIANByAFqEMASDAYLIAMgBTYCqAEMBgtB/ZrJAEEEELITCyEBIANByAFqEMASQX8hCQwECyADIAQ2AqgBIAMoApgBIQEgA0F/NgKYASABQX9HDQELQdSKxwBBEBDiEiEBDAULIAMgAykDoAE3A8ABIAMgAygCnAE2ArwBIAMgATYCuAECfwJAAn8CQAJAAkAgBCAFRg0AIANB6ABqQQRyIQEgA0H4AGohCwNAIANB6ABqIAQQyA8gBEEgaiEEIAMoAmhBf0cEQCADIAQ2AqgBIAMoApgBQX9HBEAgA0GYAWoQiAgLIAMgCykDCDcDoAEgAyALKQMANwOYASADQQU2AuQBIANB4+PIADYC4AEgA0EENgLcASADQf2ayQA2AtgBIANB0AFqIANB2AFqIANB6ABqEMcHIAMtANABBEAgAygC1AEMCAsCQAJAIAMtANEBQQFrDgIGAAELIAMoApgBIQogA0F/NgKYASAKQX9GDQcgASAHKAIINgIIIAEgBykCADcCACADIAo2AmggA0HoAGoQiAggBCAFRw0CDAMLIAMoApgBIQEgA0F/NgKYASABQX9GBEBB1IrHAEEQEOISDAgLIAMgATYCaCADIAcoAgg2AnQgAyAHKQIANwJsIANB2AFqIANB6ABqEPoHIAMtANgBQQFHDQMgAygC3AEMBwsgBCAFRw0ACyADIAU2AqgBC0H9mskAQQQQsxMMAgsgA0HoAGoiCiADLQDZASADQbgBahCHASADKAJsIQEgAygCaCIJQX9GDQQgAyABNgLMASADIAk2AsgBIAQgBUYNBSADQfgAaiELIApBBHIhCgJ/AkADQCADQegAaiAEEMgPIARBIGohBCADKAJoQX9HBEAgAyAENgKoASADKAKYAUF/RwRAIANBmAFqEIgICyADIAspAwg3A6ABIAMgCykDADcDmAEgA0EFNgLkASADQePjyAA2AuABIANBBDYC3AEgA0H9mskANgLYASADQdABaiADQdgBaiADQegAahDHBwJAAkACfyADLQDQAQRA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AgA3AgAgASABKAJgNgLoASABIAEpAlg3A+ABIAEgASkCUDcD2AEgASABKQJINwPQASABIAEpAkA3A8gBIAEgASkCODcDwAEgASABKQIwNwO4ASABIAwpAig3A6gBIAEgDCkCIDcDoAEgASAMKQIYNwOYASABIAwpAhA3A5ABIAEgDCkCCDcDiAEgASAMKQIANwOAASABQfgBaiABQYABahBCICKnIQUCQCABKQP4AUIBUQRAIAEpA7gCIiJCIIinIRQgASkDsAIiJEIgiKchEyABKAKsAiEJIAEoAqgCIRogASgCpAIhDiABKAKgAiELIAEoApwCIRsgASgCmAIhHCABKAKUAiEdIAEoApACIRggASgCjAIhHiABKAKIAiEZIAEoAoQCIQMgASgCgAIhBCAipyEVICSnIRBCASEiIAZFDQEgBUEEaygCACIhQXhxIR8gH0EEQQggIUEDcSIhGyAGakkNGyAhQQBHIB8gBkEnaktxDRwgBRC8BQwBCyAiQiCIpyEZIAEpA7ACISMgASgCrAIhFCABKAKoAiEVIAEoAqQCIRMgASgCoAIhECABKAKcAiEJIAEoApgCIRogASgClAIhDiABKAKQAiELIAEoAowCIRsgASgCiAIhHCABKAKEAiEdIAEoAoACIRhCACEiIAYhBCAFIQMLIAdBQGshBiABICM3A3ggASAUNgJ0IAEgFTYCcCABIBM2AmwgASAQNgJoIAEgCTYCZCABIBo2AmAgASAONgJcIAEgCzYCWCABIBs2AlQgASAcNgJQIAEgHTYCTCABIBg2AkggASAeNgJEIAEgGTYCQCABIAM2AjwgASAENgI4IAEgIjcDMCAipw0DIAFB+AFqIA1ByAD8CgAAIAFBuAFqIAEgDSAgEJMDIAEgCikDMDcDsAEgASAKKQMoNwOoASABIAopAyA3A6ABIAEgCikDGDcDmAEgASAKKQMQNwOQASABIAopAwg3A4gBIAEgCikDACIiNwOAASAip0F/RwRAIAFBgAFqEPMFCyAGIBFHDQELCyAHQUBrIQYLQX8hEAwBCyABIA0pAyg3A6ACIAEgDSkDIDcDmAIgASANKQMYNwOQAiABIA0pAxA3A4gCIAEgDSkDCDcDgAIgASANKQMANwP4ASABIBcpAgA3A7gBIAEgFygCCDYCwAELIAYgEUcEQCARIAZrQQZ2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gAFGDQEgB0HAAUcNAiADQdCrwgA2AmwgA0KggICABjcCcCADQdgAaiAIQQN0aigCBCECIAMgA0HIAGo2AmggCiADQegAaiACEQEADRcgCEEBaiEIIAUhBAwDCyACQf8BcSICIAMoAkggAygCUCIGa0sEQCADQcgAaiAGIAIQzhEgAygCUCEGCyACBEAgAygCTCAGaiAFIAL8CgAACyACIAVqIQQgAyACIAZqNgJQDAILIARBA2ohBwJAAkAgBC8AASICIAMoAkggAygCUCIFa0sEQCADQcgAaiAFIAIQzhEgAygCUCEFDAELIAJFDQELIAJFDQAgAygCTCAFaiAHIAL8CgAACyACIAdqIQQgAyACIAVqNgJQDAELQaCAgIAGIQYgAkEBcQRAIAQoAAEhBiAEQQVqIQULQQAhBwJ/IAJBAnFFBEBBACENIAUMAQsgBS8AACENIAVBAmoLIQQgAkEEcQR/IAQvAAAhByAEQQJqBSAECyEFIAJBCHEEfyAFLwAAIQggBUECagUgBQshBCADIAc7AXYgAyANOwF0IAMgBjYCcCADQdCrwgA2AmwgA0HYAGogCEEDdGooAgQhAiADIANByABqNgJoIAogA0HoAGogAhEBAA0UIAhBAWohCAsgBC0AACICDQALIAMoAlAhIiADKAJMIRsgAygCSCEcIAMgGDYCFCADIBk2AhAgAyAjNwNYQQAhBUECIQJBkoLAACEEQQAhBgNAIARBAWohBAJAIALAQQBIBEAgAkH/AXFBgAFGBEAgBC8AACICIAVqIQUgAiAEakECaiEEDAILIAQgAkEDcUEIeCIHQQV0QYCAgIAEcSAHQQd0ckEddmogAkEBdkECcWogAkECdkECcWohBCAFRSAGciEGDAELIAJB/wFxIgIgBGohBCACIAVqIQULIAQtAAAiAg0ACyAGIAVBEElxDQAgBUEBdCICQQBIDQ0gAkUNACACEJABIgQNAQwRC0EBIQRBACECC0EAIQggA0EANgJQIAMgBDYCTCADIAI2AkhBkoLAACEEQQIhAgJAAkADQCAEQQFqIQUCQAJAAkAgAsBBAEgEQCACQf8BcSIHQYABRg0BIAdBwAFHDQIgA0HQq8IANgJsIANCoICAgAY3AnAgA0HYAGogCEEDdGooAgQhAiADIANByABqNgJoIANBEGogA0HoAGogAhEB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9QUgBSgCvAIiASgCACEAIAEgAEEBazYCACAAQQFGBEAgBSgCvAIQMAsgBSgCMCIBKAIAIQAgASAAQQFrNgIAIABBAUcNACAFKAIwEDALIAVBoBFqJAAPC0EBEKcUAAsgBiAHQeT+yAAQhRMACxCeFQALQQgQpxQACwALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HwtckAQTcgBUGfEWpBuPHFAEGotskAENoSAAtBuPDJAEEBOgAAAAvCLwMNfwd+AXwjAEGQAWsiAiQAAkACQAJAIABQDQACQAJAAkACQAJAAkACQAJAAkAgAEL/////////D1YNACABRQRAIAC6IRYMCgsgAUEWakEtTwRAIAFBJk8NASACQRBqIABCACABQQN0QcjyyABqKQMAQgAQ7hEgAikDGEIAUg0BIAIpAxAiD0L/////////D1YNASAPukSS1U0Gz/CARKIhFgwKCyAAuiEWIAFBAEoNASAWQYiOyQAgAUEDdGsrAwCjIRYMCQtB/////wcgAUHeAmoiBCABIARKGyIGQQptIQQgBkEASARAQgAhDwwECyAEQcEASwRAQf8PIQdCgICAgICAgICAfyEPDAQLIAYgBEEKbGsiBkEASA0EIAIgAEIAIAZBA3QiAykDmPNIQgAQ7hECfiACKQMIUARAQQBBACACKQMAIg95pyAPUBsiBmshA0EEIQogDyAGrYYMAQsgAykDiOxIIhBC/////w+DIhIgACAAeSIRhiITQiCIIhR+IQ8gEEIgiCIVIBNC/////w+DIhN+IRAgBkECdCgC2OxIIBGna0FAayEDQQkhCiAUIBV+IA9CIIh8IBBCIIh8IBBC/////w+DIA9C/////w+DfCASIBN+QiCIfEKAgICACHxCIIh8CyIPQiCIIhIgBEEDdCkDgO1IIhFC/////w+DIhN+IRAgEUIgiCIRIA9C/////w+DIhR+IQ9BACARIBJ+IBBCIIh8IA9CIIh8IA9C/////w+DIBBC/////w+DfCATIBR+QiCIfEKAgICACHxCIIh8Ig95pyAPUBshBiAPIAathiEPIARBAnQoApDxSCADaiAGayIEQUBrIQdBC0GOdyAEayAHQcN3ThsiBEHBAEsNAiAErSERIAogBnStIRIgDyEQAkACQCAEQUBqDgIBAwALIA9CfyAR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AkACQAJAIABQDQACQAJAAkACQAJAAkACQAJAAkAgAEL///8HVg0AIAFFBEAgALUhFwwKCyABQQpqQRVPBEAgAUESTw0BIAJBEGogAEIAIAFBA3RBqPPIAGopAwBCABDuESACKQMYQgBSDQEgAikDECIQQv///wdWDQEgELVD+QIVUJQhFwwKCyAAtSEXIAFBAEoNASAXQYyWyQAgAUECdGsqAgCVIRcMCQtB/////wcgAUHeAmoiBCABIARKGyIGQQptIQQgBkEASARAQgAhEAwECyAEQcEASwRAQf8PIQdCgICAgICAgICAfyEQDAQLIAYgBEEKbGsiBkEASA0EIAIgAEIAIAZBA3QiAykDmPNIQgAQ7hECfiACKQMIUARAQQBBACACKQMAIhB5pyAQUBsiBmshA0EEIQogECAGrYYMAQsgAykDiOxIIhFC/////w+DIhMgACAAeSIShiIUQiCIIhV+IRAgEUIgiCIWIBRC/////w+DIhR+IREgBkECdCgC2OxIIBKna0FAayEDQQkhCiAVIBZ+IBBCIIh8IBFCIIh8IBFC/////w+DIBBC/////w+DfCATIBR+QiCIfEKAgICACHxCIIh8CyIQQiCIIhMgBEEDdCkDgO1IIhJC/////w+DIhR+IREgEkIgiCISIBBC/////w+DIhV+IRBBACASIBN+IBFCIIh8IBBCIIh8IBBC/////w+DIBFC/////w+DfCAUIBV+QiCIfEKAgICACHxCIIh8IhB5pyAQUBshBiAQIAathiEQIARBAnQoApDxSCADaiAGayIEQUBrIQdBKEGrfiAEayAHQcN+ThsiBEHBAEsNAiAErSESIAogBnStIRMgECERAkACQCAEQUBqDgIBAwALIBBCfyAShkJ/hYMhEQtCASASQgF9hiISIBN9IBFaDQIgESASIBN8Wg0CDAcLIAFBAnQqAoyWSSAXlCEXDAcLIBMgEEJ/hVYNBQtBACAQeacgEFAbIQULIBAgBa2GIRAgByAFayIBQShqIgVB635OBEAgEEIoiCEAIBBC//////8fg0KAgICAgBBWDQIgEEL//////z+DQoCAgICAMFINAwwCCyABQap+TQ0EIAFBq35GBEAgEEKAgICAgICAgIB/WA0FQgAhAEHrfiEFDAILIBBB634gAWutIhGIIQAgEEJ/IBGGQn+FgyIQ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aiEMIAJB8AVqIQ0gAkGwBWohA0GIASEEA0AgAkGoBWogASAIKAIAIhAQmAEgAiADKQMANwOABCACIAMpAwg3A4gEIAIgAykDEDcDkAQgAiADKQMYNwOYBCACIAMpAyA3A6AEIAIgAykDKDcDqAQgAiADKQMwNwOwBCACIAMpAzg3A7gEIAIpA6gFIhZCf1EEQCACIAIpA4AENwPoBCACIAIpA4gENwPwBCACIAIpA5AENwP4BCACIAIpA5gENwOABSACIAIpA6AENwOIBSACIAIpA6gENwOQBSACIAIpA7AENwOYBSACIAIpA7gENwOgBSACQcABahD0BSACIAIpA6AFNwP4ASACIAIpA5gFNwPwASACIAIpA5AFNwPoASACIAIpA4gFNwPgASACIAIpA4AFNwPYASACIAIpA/gENwPQASACIAIpA/AENwPIASACIAIpA+gENwPAAQwCCyACIA0pAyA3A7gGIAIgDSkDGDcDsAYgAiANKQMQNwOoBiACIA0pAwg3A6AGIAIgDSkDADcDmAYgAiACKQOABDcD6AQgAiACKQOIBDcD8AQgAiACKQOQBDcD+AQgAiACKQOYBDcDgAUgAiACKQOgBDcDiAUgAiACKQOoBDcDkAUgAiACKQOwBDcDmAUgAiACKQO4BDcDoAUgEiAQEIINIAIgAikDuAYiFzcD4AYgAiACKQOwBiIYNwPYBiACIAIpA6gGIhk3A9AGIAIgAikDoAYiGjcDyAYgAiACKQOYBiIbNwPABiAMIAIpA/AGNwMwIAwgAikD6AY3AyggDCAXNwMgIAwgGDcDGCAMIBk3AxAgDCAaNwMIIAwgGzcDACACIAIpA6AFNwOwByACIAIpA5gFNwOoByACIAIpA5AFNwOgByACIAIpA4gFNwOYByACIAIpA4AFNwOQByACIAIpA/gENwOIByACIAIpA/AENwOAByACIAIpA+gENwP4BiACQYgDaiACQfgGakH4APwKAAAgAigChAIgBUYEQCACQYQCaiAFQQFBCEGAARCzESACKAKIAiEKCyAEIApqIhBBCGsgFjcDACAQIAJBiANqQfgA/AoAACACIAVBAWoiBTYCjAIgBEGAAWohBCAIQQhqIQggCUEIayIJDQALCyAOBEAgC0EEaygCACIDQXhxIQEgASAOQQN0IgRBBEEIIANBA3EiAxtqSQ0M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AUUNASABQdQAakECIBVBACABKAJ4IBRNGxCTBQwBCyANIAJBnIrIABCFEwALIAEtAJABQQJHDQEgAS0AkQFFDQEgDSABKAIUSw0BIAEgDTYCFAwBC0EAIQIgAS0AfEUNACABLQCRAUUNACABQdQAakECIBVBACABKAJ4IBRNGxCTBQsgACABNgIEIAAgAjYCACADQYACaiQADwtBoKvJAEEoQayKyAAQrxQAC9QuARV/IwBB8AFrIgMkAEEBIQICQAJAIAEoAgBBAUYEQCABKAIEIgUgASgCCE8NASABIAVBAWo2AgQLIAEoAowBIgIgASgCiAEiDkYEQCABKAIgIREgASgCLCEQCyABKAIUIQ0CQCABLQCQAUECRwRAIA0hCwwBCyANIQsgAS0AkQFFDQAgASgCDCALRgRAIAFBDGoQmhILIAEoAhAgDUEUbGoiAiAONgIIIAJBADYCBCACQQA6AAAgASANQQFqIgs2AhQgASgCjAEhAgsgAiAORgRAIAEoAiwgASgCIGohEgsgASgCeCEUIAEoAlwhFQJAAn8CQAJAAkACQAJAAkAgASgCAEEBRgRAIAEoAgQiBSABKAIISQ0BQQEhBAwICyADIAEoAogBNgLYASADIAEpAoABNwPQASABQYABaiEHDAELIAEgBUEBajYCBCADIAEoAogBNgLYASADIAEpAoABNwPQASABQYABaiEHIAEoAgQiBSABKAIITw0BIAEgBUEBajYCBAtBACEFIAIgASgCiAEiBEYEQCABKAIgIQggASgCLCEFCwJAIAEtAJABQQJHDQAgAS0AkQFFDQAgASgCDCALRgRAIAFBDGoQmhILIAEoAhAgC0EUbGoiAiAENgIIIAJBADYCBCACQQA6AAAgASALQQFqNgIUIAEoAowBIQILIAIgBEYEQCABKAIsIAEoAiBqIQoLAkAgASgCiAEiAkF1Sw0AIAJBCmoiCSABKAKEAUsNACAHKAIAIAJqIgwpAABC5MLRi7bu27ryAIUgDEEIajMAAELjygGFhEIAUg0AIAEgCTYCiAFBASEGCyABKAJ4IQwgASgCXCEPAkACQAJAIAEtAHxBAUYEQEEKEJABIglFDQEgCUGoi8gALwAAOwAIIAlBoIvIACkAADcAACADQQo2AuwBIAMgCTYC6AEgA0KAgICAoAE3AuABIAEgAiADQeAB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AiABIAJBAWoiBDYCBCAEIAVPDQEgASACQQJqNgIECyABQQA6AJEBIANByAFqIAEQlAogAygCyAEgAygCzAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIFRQRAIANBuAFqIAEQlAogAygCvAEhASADKAK4ASECDAELIAFBADoAkQEgA0HAAWogARCUCiADKALAASECIAMoAsQBIgEgBToAkQELIAJBAUcNAAsLIANBsAFqIAEQ5wMgAygCtAEhASADKAKwAUEBcQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBU8NAiABIAJBAWoiBDYCBCAEIAVPDQEgASACQQJqNgIECyABQQA6AJEBIANBqAFqIAEQlAogAygCqAEgAygCrAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIFRQRAIANBmAFqIAEQlAogAygCnAEhASADKAKYASECDAELIAFBADoAkQEgA0GgAWogARCUCiADKAKgASECIAMoAqQBIgEgBToAkQELIAJBAUcNAAsLIANBkAFqIAEQgQIgAygClAEhASADKAKQAUEBcQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBU8NAiABIAJBAWoiBDYCBCAEIAVPDQEgASACQQJqNgIECyABQQA6AJEBIANBiAFqIAEQlAogAygCiAEgAygCjAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIFRQRAIANB+ABqIAEQlAogAygCfCEBIAMoAnghAgwBCyABQQA6AJEBIANBgAFqIAEQlAogAygCgAEhAiADKAKEASIBIAU6AJEBCyACQQFHDQALCyABKAIAQQFGBEAgASgCBCICIAEoAghPDQEgASACQQFqNgIEC0EAIQpBACEFIAEoAowBIgYgASgCiAEiBEYEQCABKAIsIQogASgCICEFCyABKAIUIQICQCABLQCQAUECRwRAIAIhBwwBCyACIQcgAS0AkQFFDQAgASgCDCACRgRAIAFBDGoQmhILIAEoAhAg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BEAgASgCBCICIAEoAghPDQEgASACQQFqNgIECyADIAEoAogBIgI2AvgBIAMgASkCgAE3A/ABQQAhBAJAIAIgASgChAFPDQAgAUGAAWooAgAgAmotAABBKEcNACABIAJBAWo2AogBQQEhBAsCQAJAAkACQAJAAkAgAS0AfEEBRgRAQQEQkAEiBUUNASAFQSg6AAAgA0EBNgKsAiADIAU2AqgCIANCgICAgBA3AqACIAEgAiADQaACaiAEEPkICyAERQ0FAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NByABIAJBAWoiBTYCBCAEIAVNDQEgASACQQJqNgIECyABQQA6AJEBIANB6AFqIAEQlAogAygC6AEgAygC7AEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIANB2AFqIAEQlAogAygC3AEhASADKALYASECDAELIAFBADoAkQEgA0HgAWogARCUCiADKALgASECIAMoAuQBIgEgBDoAkQELIAJBAUcNAAsLIAEoAgBBAUYEQCABKAIEIgIgASgCCCIETw0GIAEgAkEBaiIFNgIEIAQgBU0NBSABIAJBAmo2AgQLIAEoAhQhBSADIAEoAogBNgKIAiADIAEpAoABNwOAAiADQdABaiABEJYDIAMoAtQBIQECQAJ/AkAgAygC0AFBAUcNACADQcgBaiABEPoDIAMoAswBIQEgAygCyAFBAUcNACADQcABaiABEEAgAygCxAEhASADKALAAQwBC0EAC0EBcQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiBjYCBCAEIAZNDQEgASACQQJqNgIECyABQQA6AJEBIANBuAFqIAEQlAogAygCuAEgAygCvAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIANBqAFqIAEQlAogAygCrAEhASADKAKoASECDAELIAFBADoAkQEgA0GwAWogARCUCiADKAKwASECIAMoArQBIgEgBDoAkQELIAJBAUcNAAsLIAEoAgBBAUcNAiABKAIEIgIgASgCCE8NACABIAJBAWoiBDYCBCABKAIIIgIgBE0NACABKAIUIQYgASAEQQFqIgU2AgQgAiAFTQRAQQEhAgwFCyABIARBAmo2AgQMAwsgASADKAKIAjYCiAEgASADKQOAAjcCgAEgBSABKAIUSw0EIAEgBTYCFAwEC0EBEKcUAAsgASgCFCEGCyADIAFBgAFqIgIoAgg2ApgCIAMgAikCADcDkAJBACECAkAgASgCiAEiBCABKAKEAU8NACABKAKAASAEai0AAEEsRw0AIAEgBEEBajYCiAFBASECCwJ/AkAgAS0AfEEBRgRAQQEQkAEiBUUNECAFQSw6AAAgA0EBNgKsAiADIAU2AqgCIANCgICAgBA3AqACIAEgBCADQaACaiACEPkICyACRQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiBTYCBCAEIAVNDQEgASACQQJqNgIECyABQQA6AJEBIANBoAFqIAEQlAogAygCoAEgAygCpAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIANBkAFqIAEQlAogAygClAEhASADKAKQASECDAELIAFBADoAkQEgA0GYAWogARCUCiADKAKYASECIAMoApwBIgEgBDoAkQELIAJBAXFFDQALCyADQYgBaiABEJYDIAMoAowBIQECQCADKAKIAUEBRw0AIANBgAFqIAEQ+gMgAygChAEhASADKAKAAUEBRw0AIANB+ABqIAEQQCADKAJ8IQEgAygCeAwCC0EADAELQQELIgJBAUcNACABIAMoApgCNgKIASABIAMpA5ACNwKAASAGIAEoAhRLDQAgASAGNgIUCyACQQFxDQACQAJAAkACQCABKAIAQQFGBEAgASgCBCIEIAEoAggiBU8NBUEBIQIgASAEQQFqIgY2AgQgBSAGTQ0EIAEgBEECaiICNgIEIAEoAhQhBiADIAEoAogBNgKoAiADIAEpAoABNwOgAiABLQCRAUECRw0CIAIgBUkEQCABIARBA2oiAjYCBCACIAVPDQMgASAEQQRqNgIEDAILIAEgAygCqAI2AogBIAEgAykDoAI3AoABQQEhAgwDCyABKAIUIQYgAyABKAKIATYCqAIgAyABKQKA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C0EUIQRBFBCQASIDRQ0PIANBkq7JACgAADYAECADQYquyQApAAA3AAggA0GCrskAKQAANwAADAYLQRchBEEXEJABIgNFDQ8gA0GlrskAKQAANwAPIANBnq7JACkAADcACCADQZauyQApAAA3AAAMBQtBBSEEQQUQkAEiA0UNICADQbGuyQAtAAA6AAQgA0GtrskAKAAANgAADAQLQQ8hBEEPEJABIgNFDQ4gA0G5rskAKQAANwAHIANBsq7JACkAADcAAAwDC0ERIQRBERCQASIDRQ0OIANB0a7JAC0AADoAECADQcmuyQApAAA3AAggA0HBrskAKQAANwAADAILQRUhBEEVEJABIgNFDQ4gA0HfrskAKQAANwANIANB2q7JACkAADcACCADQdKuyQApAAA3AAAMAQtBDSEEQQ0QkAEiA0UNDiADQeyuyQApAAA3AAUgA0HnrskAKQAANwAACyACQYOAgIB4NgLQAyACIAQ2AsgDIAIgAzYCxAMgAiAENgLAAyACQfADaiACQdACaiACQbADaiACQcADahDSAyACIAIpA6AENwOoAyACIAIpA5gENwOgAyACIAIpA5AENwOYAyACIAIpA4gEIgs3A5ADIAIgAikDgAQ3A4gDIAIgAikD+AM3A4ADIAunQX9HBEAgAkGAA2oQ+wkLAkAgAigCUCIDQX9GDQACQAJAAkACQAJAAkBBBSADQYCAgIB4cyADQQBOG0EBaw4FAAECAwQGCyACQQA6AMADIAIgAkHAA2qtQoCAgIDQAoQ3A/ADIAJB8ANqENoRIQUMBAsCQAJAAkAgAigCQEEBaw4CAQIACyACQQE6AMADIAIgAkHAA2qtQoCAgIDQAoQ3A/ADIAJB8ANqENoRIQUMBQsgAkEBOgDAAyACIAJBwANqrUKAgICA0AKENwPwAyACQfADahDaESEFDAQLIAJBAjoAwAMgAiACQcADaq1CgICAgNAChDcD8AMgAkHwA2oQ2hEhBQwDCyACQQQ6AMADIAIgAkHAA2qtQoCAgIDQAoQ3A/ADIAJB8ANqENoRIQUMAgsgAkEHOgDAAyACIAJBwANqrUKAgICA0AKENwPwAyACQfADahDaESEFDAELIAIoAlhBBnQhBCACKAJUIQMDQCAERQ0CIARBQGohBCACQcACaiADQTRqIAMQ5A8hBSADQUBrIQMgBUUN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IAZBFGxqIgIgBDYCCCACQQA2AgQgAkEAOgAAIAEgBkEBajYCFCABKAKMASECCyACIARGBEAgASgCLCABKAIgaiEKCwJAIAEoAogBIgJBe0sNACACQQRqIg8gASgChAFLDQAgDigCACACaigAAEHl3NXrBkcNACABIA82AogBQQEhCAsgASgCeCEOIAEoAlwhDwJAAkACQAJAIAEtAHxBAUYEQEEEEJABIglFDQEgCUHl3NXrBjYAACADQQQ2AvwBIAMgCTYC+AEgA0KAgICAwAA3AvABIAEgAiADQfABaiAIEPkICyABLQCQASECAkACQAJAIAhFBEAgAkH/AXFBAUYNCCABLQCRAUUNAyABKAKMASICIARHDQEgCiABKAIgIgIgASgCLCIEaiIISSAIIAprQQFGcQ0DIAIgB08EQCABIAc2AiAgByECCyAEIAVJDQIgASAFNgIsDAILIAJB/wFxQQFGBH8gAS0AkQFFDQcCQCAEIAEoAowBIgJGBEAgCiABKAIsIgIgASgCICIEaiIISSAIIAprQQFGcQ0JIAQgB08EQCABIAc2AiALIAIgBUkNASABIAU2AiwgBSECDAELIAIgBE8NCCABIAQ2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIkIAJGBEAgAUEkahCjEgsgASgCKCACakEqOgAAIAEgAkEBajYCLCABLQCQAQUgAgtB/wFxQQJHDQYgAS0AkQFFDQYgASgCFCICIAZNDQQgASgCECAGQRRsaiIFLQAADQsgBSACNgIEIAEoAogBIQcgASgCFCIFIAEoAgxGBEAgAUEMahCaEgsgASgCECAFQRRsaiICIAc2AhAgAkEANgIIIAIgBjYCBCACQYHUADsBACABIAVBAWo2AhQMBgsgAiAETw0BIAEgBDYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAhggAkYEQCABQRhqEKMSCyABIAJBAWo2AiAgASgCHCACakEqOgAACyABLQB8QQFHDQIgAS0AkQFFDQIgAUHUAGpBKiAPQQAgASgCeCAOTRsQkwUMAgtBARCnFAALIAYgAkGcisgAEIUTAAsgAS0AkAFBAkcNASABLQCRAUUNASAGIAEoAhRLDQEgASAGNgIUDAELAkAgAS0AfEUNACABLQCRAUUNACABQdQAakEqIA9BACABKAJ4IA5NGxCTBQsCQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIFTw0CIAEgAkEBaiIHNgIEIAUgB00NASABIAJBAmo2AgQLIAFBADoAkQEgA0HYAWogARCUCiADKALYASADKALcASIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0HIAWogARCUCiADKALMASEBIAMoAsgBIQIMAQsgAUEAOgCRASADQdABaiABEJQKIAMoAtABIQIgAygC1AEiASAFOgCRAQsgAkEBRw0ACwsgA0HAAWogARDnAyADKALEASEBIAMoAsABQQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIFTw0CIAEgAkEBaiIHNgIEIAUgB00NASABIAJBAmo2AgQLIAFBADoAkQEgA0G4AWogARCUCiADKAK4ASADKAK8ASIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0GoAWogARCUCiADKAKsASEBIAMoAqgBIQIMAQsgAUEAOgCRASADQbABaiABEJQKIAMoArABIQIgAygCtAEiASAFOgCRAQsgAkEBRw0ACwsgA0GgAWogARCBAiADKAKkASEBIAMoAqABQQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIFTw0CIAEgAkEBaiIHNgIEIAUgB00NASABIAJBAmo2AgQLIAFBADoAkQEgA0GYAWogARCUCiADKAKYASADKAKcASIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0GIAWogARCUCiADKAKMASEBIAMoAogBIQIMAQsgAUEAOgCRASADQZABaiABEJQKIAMoApABIQIgAygClAEiASAFOgCRAQsgAkEBRw0ACwsgASgCAEEBRgRAIAEoAgQiAiABKAIITw0BIAEgAkEBajYCBAtBACEFQQAhByABKAKMASIEIAEoAogBIgJGBEAgASgCICEHIAEoAiwhBQsgASgCFCEIAkAgAS0AkAFBAkcNACABLQCRAUUNACABKAIMIAhGBEAgAUEMahCaEgsgASgCECAIQRRsaiIEIAI2AgggBEEANgIEIARBADoAACABIAhBAWo2AhQgASgCjAEhBAtBACEKIAIgBEYEQCABKAIsIAEoAiBqIQoLIAEoAnghDiABKAJcIQ8CQAJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCIJIAEoAggiEk8NASABIAlBAWoiEzYCBCASIBNNDQEgASAJQQJqNgIECyADQYABaiABENYCIAMoAoQBIQEgAygCgAFBAUcNBSABKAIAQQFGBEAgASgCBCIEIAEoAghPBEBBASEEDAYLIAEgBEEBajYCBAsgASgCFCEJIAMgASgCiAE2AvgBIAMgASkCgAE3A/ABIANB+ABqIAEQ2wIgAygCfCEBIAMoAnhBAXENAQJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiBCABKAIIIhJPDQMgASAEQQFqIhM2AgQgEiATTQ0BIAEgBEECajYCBAsgAUEAOgCRASADQfAAaiABEJQKIAMoAnAgAygCdCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCIEIAEoAghPDQIgASAEQQFqNgIECwJAIAEtAJEBIhJFBEAgA0HgAGogARCUCiADKAJkIQEgAygCYCEEDAELIAFBADoAkQEgA0HoAGogARCUCiADKAJoIQQgAygCbCIBIBI6AJEBCyAEQQFxRQ0ACwsgA0HYAGogARCuCyADKAJcIQEgAygCWCEEDAMLIAEtAJABQQFGDQYCQCABLQCRAUUNAAJAIAIgBEYEQCAKIAEoAiAiAiABKAIsIgRqIglJIAkgCmtBAUZxDQIgAiAHTwRAIAEgBzYCICAHIQILIAQgBUkNASABIAU2AiwMAQsgAiAETQ0BIAEgAjYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAhggAkYEQCABQRhqEKMSCyABIAJBAWo2AiAgASgCHCACakEUOgAACyABLQB8QQFHDQEgAS0AkQFFDQEgAUHUAGpBFCAPQQAgASgCeCAOTRsQkwUMAQtBASEEDAELIAEtAJABQQJHDQQgAS0AkQFFDQQgCCABKAIUSw0EIAEgCDYCFEEBDAULIARBAUcNACABIAMoAvgBNgKIASABIAMpA/ABNwKAASAJIAEoAhRLDQAgASAJNgIUCyAEQQFHDQACQCABKAIAQQFGBEAgASgCBCIEIAEoAghPDQEgASAEQQFqNgIECwJAIAEtAJEBIglBAUYEQCADQcgAaiABEIEDIAMoAkwhASADKAJIIQQMAQsgAUEBOgCRASADQdAAaiABEIEDIAMoAlAhBCADKAJUIgEgCToAkQELIARBAXFFDQELIANBQGsgARC6BSADKAJEIQEgAygCQEEBRw0AIANBOGogARDRAyADKAI8IQEgAygCOEEBcQ0BCyABKAIAQQFGBEAgASgCBCIEIAEoAghPDQEgASAEQQFqNgIECyADQTBqIAEQyQUgAygCNCEBIAMoAjBBAXENAANAIANBKGogARDJBSADKAIsIQEgAygCKEEBcUUNAAsLAkAgAS0AkAEiBEEBRgR/IAEtAJEBRQ0BAkAgAiABKAKMASIERgRAIAogASgCLCICIAEoAiAiBGoiCUkgCSAKa0EBRnENAyAEIAdPBEAgASAHNgIgCyACIAVJDQEgASAFNgIsIAUhAgwBCyACIARNDQIgASACNgKMAUEAIQIgAUEANgIsIAFBADYCIAsgASgCJCACRgRAIAFBJGoQoxILIAEoAiggAmpBFDoAACABIAJBAWo2AiwgAS0AkAEFIAQLQf8BcUECRw0AIAEtAJEBRQ0AAkAgCCABKAIUIgJJBEAgASgCECAIQRRsaiIFLQAADQEgBSACNgIEIAEoAogBIQcgASgCFCIFIAEoAgxGBEAgAUEMahCaEgsgASgCECAFQRRsaiICIAc2AhAgAkEANgIIIAIgCDYCBCACQYEoOwEAIAEgBUEBajYCFAwCCyAIIAJBnIrIABCFEwALDAULAkAgAS0AfEUNACABLQCRAUUNACABQdQAakEUIA9BACABKAJ4IA5NGxCTBQsCQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIFTw0CIAEgAkEBaiIHNgIEIAUgB00NASABIAJBAmo2AgQLIAFBADoAkQEgA0EgaiABEJQKIAMoAiAgAygCJCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0EQaiABEJQKIAMoAhQhASADKAIQIQIMAQsgAUEAOgCRASADQRhqIAEQlAog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A8AGIAMgAykCrAE3A8gGIAMgAykCtAE3A9AGIAMgAygCvAE2AtgGIAMoAqABIgdBfUsNASADIAMoAtgGNgK8ASADIAMpA9AGNwK0ASADIAMpA8gGNwKsASADIAMpA8AGNwKkAQwCCxDTEwALIANBoAFqQQRyEJYRIANBADYCsAFBFiEHCyADIAc2AqABQcDwyQACfkHQ8MkALQAABEBByPDJACkDACEmQcDwyQApAwAMAQsgA0HABmoQuxFB0PDJAEEBOgAAQcjwyQAgAykDyAYiJjcDACADKQPABgsiJ0IBfDcDACADIAMpAqQBNwMgIAMgAykCrAE3AyggAyADKQK0ATcDMCADIAMoArwBNgI4IANBkKnJACkDADcDECADQZipyQAoAgA2AhgCQAJAAkACQCADKAIEIgIgAygCDCIMRgRAQQghCUEIIQ4MAQsgA0G4A2oiBUE8aiEcIANBwAZqIgRBPGohDyADQZAEaiIGQTxqIR0gA0GQBWoiCUE8aiEeIANBoAFqIgpBPGohFCAKQQRyIQggA0GYAmohCyAEQQhqIRogBUEBciEVIAVByABqIR8gBEHIAGohECAEQQFyIQQgBkEBciEWIAZByABqISAgA0HAAWohFyAJQQFyIRggCUHIAGohISADQaQDaiENIANB7AVqIRsgA0GUAmohIiADQZACaiEZIANBgAJqISMgA0HwAWohJUEAIQZBCCEJQQAhCkEAIQVBCCEOA0ACQCADIAJB2ABqNgIEAkACQAJAAkACQAJAIAIoAgAiEUF/RwRAICMgAigCUDYCCCAjIAIpAkg3AgAgIiACQQRqQcQA/AoAACAIIAMpAyA3AgAgCCADKQMoNwIIIAggAykDMDcCECAIIAMoAjg2AhggFCADKQMQNwIAIBQgAygCGDYCCCADIAc2AqABIAMgBjYC2AEgAyAJNgLUASADIAo2AtABIAMgJjcDyAEgAyAnNwPAASADIBE2ApACIAMgJDYC/AEgAyAFNgL4ASADIA42AvQBIAMgEzYC8AEgAyAoNwPoASADKAKAAiEMIAMoAoQCIREgAygCiAIhAiADQdgCaiAZQcgA/AoAACADQegFaiABIBEgAhDcBCADKALoBUF/Rw0BIAMgGykCEDcDsAMgAyAbKQIINwOoAyADIBspAgAiKTcDoAMCQAJAAkAgKadBAWsOAgECAAsCQAJAAkAgAygC2AIiAkUEQCADKALgAkEVRg0BCyADKAKkAyIHKAIAIQYgByAGQQFqNgIAIAZBAEgNASACQQRGDQIgAyACNgLABiADQcAGaiIBQQRyICJBxAD8CgAAIAMgAa1CgICAgPAghDcDgAUgA0GgBmpBoe/BACADQYAFahC4DCADQQA6AKwGIANBfzYCgAYgARCuByADIAMpA4AGIig3A/gEIAMgAykD+AUiKTcD8AQgAyADKQPwBSIqNwPoBCADIAMpAqQGNwNwIAMgAygCrAY2AnggAykDiAYhJyADKQOQBiEmIAMoApgGIQogAygCnAYhCSADKAKgBiEGIAcgBygCACIBQQFrNgIAIAMgKjcChAEgAyApNwKMASADICg3ApQBIAFBAUcNCSAHEDAMCQsgAygCpAMiEigCACECIBIgAkEBazYCACADIAMoAjg2ApgBIAMgAykDMDcDkAEgAyADKQMoNwOIASADIAMpAyA3A4ABIAMgAykDEDcDcCADIAMoAhg2AnggAkEBRgRAIAMoAqQDEDALIANB2AJqEK4HDAoLAAsgAygCqAMhBiAFIBNGBH8gJRCpEiADKAL0AQUgDgsgBUHIAGxqIgIgBjYCBCACIAc2AgAgAiALKQMANwMIIAIgCykDCDcDECACIAspAxA3AxggAiALKQMYNwMgIAIgCykDIDcDKCACIAspAyg3AzAgAiALKQMwNwM4IAIgCykDODcDQCADIAVBAWo2AvgBDAcLIA0QrRAgAygCtAMhAkUEQCADQcAGaiANIBkQqQMgAy0AwAYiBUH+AUYEQCADIAMpA9gGIic3AP8FIAMgAykD0AYiJjcA9wUgAyADKQPIBiIoNwDvBSADIAMpAvwGNwPoBCADIAMoAoQHNgLwBCADICg3AoQBIAMgJjcCjAEgAyAnNwKUASADKQPgBiEnIAMpA+gGISYgAygC8AYhCiADKAL0BiEJIAMoAvgGIQYgAyADKALwBDYCeCADIAMpA+gENwNwIAIgAigCACIBQQFrNgIAIAFBAUcNByACEDAMBwsgICAQKQMINwMIICAgECkDADcDACADIAQpABc3AP8FIAMgBCkAEDcD+AUgAyAEKQAINwPwBSADIAQpAAA3A+gFIAMgDykAADcD6AQgAyAPKAAINgLwBCADKQPgBiEnIAMpA+gG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QeACaiAGEH8gAigC8AJBf0YNAiAGQSBqIQYgAigCgAEgAUYEQCACQYABahCUEiACKAKEASEECyADIARqIgUgAikD4AI3AwAgBSACKQOIAzcDKCAFIAIpA4ADNwMgIAUgAikD+AI3AxggBSACKQPwAjcDECAFIAIpA+gCNwMIIAIgAUEBaiIBNgKIASADQTBqIQMgB0EgayIHDQALCyAAIAIoAogBNgIIIAAgAikCgAE3AgAgAEGEgICAeDYCEAwSCyAAQX82AhAgACACKALgAjYCACACQYABahCPCSACKAKAASIARQ0RIAQgAEEwbBDZEgwRCwJAIAEoAgwiA0UEQEEBIQEMAQsgASgCCCEEIAMQkAEiAUUNEiADRQ0AIAEgBCAD/AoAAAsgAEGDgICAeDYCECAAIAM2AgggACABNgIEIAAgAzYCAAwQCyABKAIMIQMgASgCCCACAn5B0PDJAC0AAARAQcjwyQApAwAhDUHA8MkAKQMADAELIAJB8ANqELsRQdDwyQBBAToAAEHI8MkAIAIpA/gDIg03AwAgAikD8AMLIgw3A5ABQcDwyQAgDEIBfDcDACACQQA2AqgBIAJCgICAgIABNwOgASACIA03A5gBIAJCgICAgHA3A4ABIAJBkKnJACkDADcCrAEgAkGYqckAKQMANwK0ASADRQRAIAAgAikDuAE3AyggACACKQOwATcDICAAIAIpA6gBNwMYIAAgAikDoAE3AxAgACACKQOYATcDCCAAIAIpA5ABNwMADBALIANBMGwhByACQZABaiEKQQhqIQMgAkH4A2ohBQNAIAIoAoABQQFGDQsCQAJAAkAgAygCACIERQRAQQEhAQwBCyADQQRrKAIAIQYgBBCQASIBRQ0VIAQEQCABIAYgBPwKAAALIARBf0YNAQsgAigChAEiBkEASgRAIAIoAogBIgtBBGsoAgAiCEF4cSEJIAlBBEEIIAhBA3EiCBsgBmpJDRYgCEEARyAJIAZBJ2pLcQ0XIAsQvAULIAIgBDYCjAEgAiABNgKIASACQX82AoQBIAIgAikDiAEiDDcCtAIgAiAENgKwAiACQcADaiADQQhqEH8gAigC0ANBf0cNASACKALAAyEBIARFDQAgDKcgBBDZEgsgAEF/NgIQIAAgATYCACACQYABahDDCwwRCyACQfADaiAKIAJBsAJqIAJB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AAsLIAYgETYCBCAGIBI2AgAgBiAVNgIMIAYgFDYCCCAGIA8pAwA3AhAgBiAPKQMINwIYCyADQSBrIQMgBEEgaiEEIBYgBUEBaiIFRw0ACwsgCUEgayEGIApBBXRBIGsiASACaiELIAAgAWohBwNAAkAgCSgCACIBIAIoAgAiA0cEQCABIANrIQwMAQtBBCEMIAEEQCAJKAIIIgEgAigCCCIDSyABIANJayAJKAIEIgEgAigCBCIDSyABIANJayABIANGGyIMQf8BcQ0BQQwhDAsgCSAMaigCACIBIAIgDGooAgAiA0sgASADSWshDAsgACAJIAIgDEF/RiIDGyIBKQIYNwIYIAAgASkCEDcCECAAIAEpAgg3AgggACABKQIANwIAIAxBf0dBBXQhBCADQQV0AkAgCygCACIBIAYoAgAiA0cEQCABIANrIQwMAQtBBCENIAEEQCALKAIIIgEgBigCCCIDSyABIANJayALKAIEIgEgBigCBCIDSyABIANJayABIANGGyIMQf8BcQ0BQQwhDQsgCyANaigCACIBIAYgDWooAgAiA0sgASADSWshDAsgAEEgaiEAIAIgBGohAiAJaiEJIAcgBiALIAxBf0YiAxsiASkCGDcCGCAHIAEpAhA3AhAgByABKQIINwIIIAcgASkCADcCACAHQSBrIQcgBkFgQQAgAxtqIQYgC0FgQQAgDEF/RxtqIQsgE0EBayITDQALIAZBIGohASAKQQFxBH8gACACIAkgASACSyIEGyIDKQIYNwIYIAAgAykCEDcCECAAIAMpAgg3AgggACADKQIANwIAIAkgASACTUEFdGohCSACIARBBXRqBSACCyABRiAJIAtBIGpGcQ0AEKQVAAsgD0EgaiQAC40kAh1/Bn4jAEHgA2siAyQAAkACQAJAAkAgASgCCCIIBEAgASgCBCIWIAhBAnRqIRsgAkEIaiEXIANBwANqIQUgA0HMAWohGCABKAIAIgFBFGohGSABQRBqIRoDQAJAAkACQAJAIBYoAgAiASAZKAIASQRAIBooAgAgAUHIAGxqIgEpAgAhICABQX82AgAgAyAgNwMIIAMgASkCCDcDECADIAEpAhA3AxggAyABKQIYNwMgIAMgASkCIDcDKCADIAEpAig3AzAgAyABKQIwNwM4ICCnIglBf0YNBAJAAkBBAiAJQQNrIAlB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BCAFSWsgASADSSABIANLayABIANGGyIBQf8BcQ0DIAgoAgwiASACKAIMIgNLIAEgA0lrIQEMAwsgBEEBRw0BCyAFIARrIQEMAQsgASADSSABIANLayEBCyAAIAIgCCABwEEATiIEGyIDKAIQNgIQIAAgAykCCDcCCCAAIAMpAgA3AgAgBEEUbCEFIAFBgAFxQQd2QRRsIQ4gBigCBCEBIAYoAgAhBCAJKAIEIQMCQAJAAkAgCSgCACILQQFGBEAgBEEBcUUNASAJKAIIIgQgBigCCCILSyAEIAtJayABIANJIAEgA0trIAEgA0YbIgFB/wFxDQMgCSgCDCIBIAYoAgwiA0sgASADSWshAQwDCyAEQQFHDQELIAsgBGshAQwBCyABIANJIAEgA0trIQELIABBFGohACACIAVqIQIgCCAOaiEIIAcgCSAGIAHAIgNBAE4bIgEoAhA2AhAgByABKQIINwIIIAcgASkCADcCACAHQRRrIQcgBiADQQd1IgFBFGxqIQYgCSABQX9zQRRsaiEJIA1BAWsiDQ0ACyAGQRRqIQEgCkEBcQR/IAAgAiAIIAEgAksiBBsiAygCEDYCECAAIAMpAgg3AgggACADKQIANwIAIAggASACTUEUbGohCCACIARBFGxqBSACCyABRiAIIAlBFGpGcQ0AEKQVAAsgFUEgaiQAC54jAhd/An4jAEEgayIJJAACQAJAIAJBAE4EQAJAAkACQAJAIAJFBEBBASEGDAELIAIQkAEiBkUNAyAGIQQgASEDAkAgAiIFQRBJDQAgBUHw////B3EhDwNAIAYgB2ohBCABIAdqIgNBAWosAAAiDEF/c0GAAXFBB3YgAywAACINQX9zQYABcUEHdmogA0ECaiwAACIKQX9zQYABcUEHdmogA0EDaiwAACIIQX9zQYABcUEHdmogA0EEaiwAACILQX9zQYABcUEHdmogA0EFaiwAACIOQX9zQYABcUEHdmogA0EGaiwAACIQQX9zQYABcUEHdmogA0EHaiwAACIRQX9zQYABcUEHdmogA0EIaiwAACISQX9zQYABcUEHdmogA0EJaiwAACITQX9zQYABcUEHdmogA0EKaiwAACIUQX9zQYABcUEHdmogA0ELaiwAACIVQX9zQYABcUEHdmogA0EMaiwAACIWQX9zQYABcUEHdmogA0ENaiwAACIX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IAcgETYCCCAHIAs2AgQgByAPNgIAQRgQkAEiA0UNBSADQQA6ABQgA0H05scANgIMIAMgBzYCCCADQoGAgIAQNwIAQeQAEJABIgRFDQUgBCADNgJgIARBADoAXCAEIBA2AkwgBCARNgJIIAQgCzYCRCAEIAg2AkAgBEEaOgA8IARBfzYCLCAEIBA2AiggBCARNgIkIAQgCzYCICAEIAg2AhwgBEF/NgIQIARBADYCCCAEQQA2AgAgAigCCCIGIAIoAgBGBEAgAiAGQQFBCEHIABCzESACKAIIIQYLIAIoAgQgBkHIAGxqIgNBADsBRCADQQo2AkAgA0H4/McANgI8IANBfzYCOCADQgQ3AzAgA0IBNwMoIAMgBDYCJCADQQE2AiAgA0F+NgIAIAIgBkEBajYCCAwCCyALIAsoAgAiA0EBazYCACADQQFGBEAgCxAwCyACIAIoAgg2AggMAQsACyAAIAIoAgg2AgggACACKQMANwIAAkACQCABKAIARQRAIAEoAgQiACgCACEDIAAgA0EBazYCACADQQFGDQEMAgsgASgCBCIAKAIAIQMgACADQQFrNgIAIANBAUcNAQsgASgCBBAwCyACQeALaiQADwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQbjwyQBBAToAAAALkCQCDn8BfiMAQZABayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAiBQJ/AkACQAJAAkACQAJAAkACQAJAAkACQCABQf8BcUEBaw4MAQIODwMEBRMGBwgJAAsgA0EGNgIUIANB1ZDJADYCECADQQ82AgwgA0H4hccANgIIIAIgA0EIahDFCCIADQlBAAwKCyADQQc2AhQgA0HkmckANgIQIANBDzYCDCADQfiFxwA2AgggAiADQQhqEMUIIgANCiAFQQE2AgAMHwsgA0EENgIUIANB65nJADYCECADQQ82AgwgA0H4hccANgIIIAIgA0EIahDFCCIADQogBUECNgIADB4LAkACQEEVIAIoAgAiEEGAgICAeHMgEEEAThtBFGsOAgABDgsgAigCDCIJQQR0IQYgAigCBCEHIAIoAggiCCECAn8CQAJAIAlFDQAgAkEQaiECIAgoAgAiAEF/Rg0AIAMgCCgCDDYCFCAD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EgwhCyADLQBhIgdBAkcEQCAHQQFrDQUMAgsgAygCCCEHIANBfzYCCCAHQX9GDSggDSALKAIINgIIIA0gCykCADcCACADIAc2AnggBkEBaiEGIANB+ABqEIgIIAlBIGsiCQ0ACyAADAILQePjyABBBRCyEwwDCyABQSBqCyEGIAFBIGohAgwbC0H9mskAQQQQshMLIQQgA0HIAGoQwBJBfyEKDBgLIAMgAykDEDcDQCADIAMoAgw2AjwgAyABNgI4An8CQAJAAn8gACAAIAJGDQAaIARBAmohDCAOIA1rQUBrIQcgA0H4AGpBBHIhCUEAIQQCQAJ/AkADQCADIAQgCGoiCkFAayICNgIcIApBIGooAgAiBkF/Rg0DIAMgDDYCKCADIApBLGooAgAiATYCWCADIApBJGopAgAiETcDUCADIApBMGopAgA3AwggAyAKQThqKQIANwMQIANBBTYCdCADQePjyAA2AnAgA0EENgJsIANB/ZrJADYCaCAJIBE3AgAgCSABNgIIIAMgBjYCeCADQeAAaiADQegAaiADQfgAahDHByADLQBgQQFGBEAgAygCZAwDCwJAIAMtAGFBAWsOAgcAAgsgAygCCCEBIANBfzYCCCABQX9GDSkgCSALKAIINgIIIAkgCykCADcCACADIAE2AnggDEEBaiEMIAQgB2ogA0H4AGoQiAggBEEgaiEEDQALIAAMAwsgAygCCCEBIANBfzYCCCABQX9GDScgAyABNgJ4IAMgCygCCDYChAEgAyALKQIANwJ8IANB6ABqIANB+ABqEPoHIAMtAGhFDQMgAygCbAshBCADQThqEIgIDB4LIApBQGsLIQJB/ZrJAEEEELMTDAILIANB+ABqIAMtAGkgA0E4ahCHASADKAJ8IQQgAygCeCIKQX9GDRsgAyAENgJMIAMgCjYCSCAAIAJGBEAgACECDBoLIANB+ABqQQRyIQYCfwJAAkADQCADIAJBIGo2AhwgAigCACIBQX9GDQEgAyADKAIoQQFqNgIoIAMgAigCDDYCWCADIAIpAgQ3A1AgAyACKQIYNwOAASADIAIpAhA3A3ggAygCCEF/RwRAIANBCGoQiAgLIAMgAykDgAE3AxAgAyADKQN4NwMIIANBBTYCdCADQePjyAA2AnAgA0EENgJsIANB/ZrJADYCaCAGIAMpA1A3AgAgBiADKAJYNgIIIAMgATYCeCADQeAAaiADQegAaiADQfgAahDHByADLQBgQQFGBEAgAkEgaiECIAMoAmQhBCADQcgAahDAEgwgCwJAIAMtAGEiAUECRwRAIAFBAWsNBAwBCyMAQRBrIgIkACADQQhqIgEoAgAhACABQX82AgAgAEF/RgRAQbSMxwBBLEHYjccAEMATAAsgAiAANgIAIAIgASgCDDYCDCACIAEpAgQ3AgQgAhCICCACQRBqJAAgAygCJCIAIAMoAhwiAkcNAQweCwtB4+PIAEEFELITDAILIAJBIGohAgwbC0H9mskAQQQQshMLIQQgAkEgaiECIANByABqEMASQX8hCgwZC0Hj48gAQQUQshMLIQQgA0E4ahCICAwZC0H9mskAQQQQshMhBAwYC0EBCyEKQQEhBgwXCyADQQQ2AhQgA0H2mckANgIQIANBDzYCDCADQfiFxwA2AgggAiADQQhqEMUIIgANDCAFQQY2AgAMHAsgA0EGNgIUIANB+pnJADYCECADQQ82AgwgA0H4hccANgIIIAIgA0EIahDFCCIADQwgBUEHNgIADBsLIANBBTYCFCADQYyayQA2AhAgA0EPNgIMIANB+IXHADYCCCACIANBCGoQxQgiAA0NIAVBCTYCAAwaCyADQQY2AhQgA0HssckANgIQIANBDzYCDCADQfiFxwA2AgggAiADQQhqEMUIIgANDSAFQQo2AgAMGQsgA0EFNgIUIANBkZrJADYCECADQQ82AgwgA0H4hccANgIIIAIgA0EIahDFCCIADQ0gBUELNgIADBgLIANBAzYCFCADQaGayQA2AhAgA0EPNgIMIANB+IXHADYCCCACIANBCGoQxQgiAA0NIAVBDDYCAAwXCyAFIAA2AgRBfws2AgAMFQsgBSAANgIEIAVBfzYCAAwUCyAFIAA2AgQgBUF/NgIADBMLIANBAzYCFCADQe+ZyQA2AhAgA0EPNgIMIANB+IXHADYCCCAFIAIgA0EIahDFCCIABH8gBSAANgIEQX8FQQMLNgIADBILIANBBDYCFCADQfKZyQA2AhAgA0EPNgIMIANB+IXHADYCCCAFIAIgA0EIahDFCCIABH8gBSAANgIEQX8FQQQLNgIADBELIAIgA0GPAWpBtIrHABDoEyEEDAwLIAUgADYCBCAFQX82AgAMDwsgBSAANgIEIAVB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AAsgCEHQAWokAA8LQZS+xAAQnRUAC9IjAwd/An4BfCMAQfABayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBDiAAKAIAIgNBDWsgA0EMTRtBAWsODgECAwQFBgcICQoLDA0OAAsgASgCACAAKAIIIAAoAgwQngcMFgsgASgCACEBIAAtAARFBEAgASgCACABKAIIIgBrQQRNBEAgASAAQQVBAUEBELMRIAEoAgghAAsgASgCBCAAaiIDQaqyyAAoAAA2AAAgA0GussgALQAAOgAEIAEgAEEFajYCCAwWCyABKAIAIAEoAggiAGtBA00EQCABIABBBEEBQQEQsxEgASgCCCEACyABKAIEIABqQfTk1asGNgAAIAEgAEEEajYCCAwVCyABKAIAIAAoAgggACgCDBCeBwwUCyABKAIAIAApAwgQ1AsMEwsgAkEAOgDcASACQgA3ANQBIABBBGogAkGwAWoQsQohACABKAIAIABBJBCeBwwSCyAAKAIMIQMgACgCCCEGIAEoAgAiACgCCCIFIAAoAgBGBEAgACAFQQFBAUEBELMRIAAoAgghBQsgACAFQQFqIgQ2AgggACgCBCAFakHbADoAACADBEAgBiABEI4BIANBAUcEQCAGQSBqIQUgA0EFdEEgayEEA0AgASgCACIAKAIIIgMgACgCAEYEQCAAIANBAUEBQQEQsxEgACgCCCEDCyAAIANBAWo2AgggACgCBCADakEsOgAAIAUgARCOASAFQSBqIQUgBEEgayIEDQALCyABKAIAIgEoAggiACABKAIARgRAIAEgAEEBQQFBARCzESABKAIIIQALIAEgAEEBajYCCCABKAIEIABqQd0AOgAADBILIAQgACgCAEYEQCAAIARBAUEBQQEQsxEgACgCCCEECyAAIARBAWo2AgggACgCBCAEakHdADoAAAwRCyABKAIAIAAoAgggACgCDBCeBwwQCyAAKAIMIQYgACgCCCEFIAEoAgAiACgCCCIDIAAoAgBGBEAgACADQQFBAUEBELMRIAAoAgghAwsgACADQQFqIgQ2AgggACgCBCADakH7ADoAACAGRQRAIAQgACgCAEYEQCAAIARBAUEBQQEQsxEgACgCCCEECyAAIARBAWo2AgggACgCBCAEakH9ADoAAAwQCyAGQTBsIAEoAgAgBUEEaigCACAFQQhqKAIAEJ4HIAEoAgAiAygCCCIEIAMoAgBGBEAgAyAEQQFBAUEBELMRIAMoAgghBAsgBWohBiAFQRBqIQAgAyAEQQFqNgIIIAMoAgQgBGpBOjoAAANAIAAgARCOASAAQSBqIgQgBkZFBEAgASgCACIAKAIIIgMgACgCAEYEQCAAIANBAUEBQQEQsxEgACgCCCEDCyAAIANBAWo2AgggACgCBCADakEsOgAAIAEoAgAgBEEEaigCACAEQQhqKAIAEJ4HIAEoAgAiACgCCCIDIAAoAgBGBEAgACADQQFBAUEBELMRIAAoAgghAwsgACADQQFqNgIIIAAoAgQgA2pBOjoAACAEQRBqIQAMAQsLIAEoAgAiASgCCCIAIAEoAgBGBEAgASAAQQFBAUEBELMRIAEoAgghAAsgASAAQQFqNgIIIAEoAgQgAGpB/QA6AAAMDwsgASgCACIBKAIIIQAgASgCACAAa0EDTQRAIAEgAEEEQQFBARCzESABKAIIIQALIAEgAEEEajYCCCABKAIEIABqQe7qseMGNgAADA4LIAEoAgAgAkGwAWogAEEEahCtAiACKAK0ASIAIAIoArgBEJ4HIAIoArABIgFFDQ0gAEEEaygCACIEQXhxIQMgA0EEQQggBEEDcSIEGyABakkNDyAEQQBHIAMgAUEnaktxDRAgABC8BQwNCyABKAIAIQECQCAAQQhqIgAQ5ANFDQAgAkGwAWogABCODSACKQOwAUIBUg0AIAIpA7gBIglC/////////w9WDQAgASAJENcMDA0LIAJBADYCiAEgAkKAgICAEDcCgAEgAkHclsYANgK0ASACQqCAgIAGNwK4ASACIAJBgAFqNgKwASAAIAJBsAFqIgAQ9wENECACKAKAASEFIAAgAigChAEiBiACKAKIARCcASACLQCwAUEBRg0EAkAgAisDuAEiC71C////////////AINCgICAgICAgPj/AFoEQCABKAIAIAEoAggiA2tBA00EQCABIANBBEEBQQEQsxEgASgCCCEDCyABIANBBGo2AgggASgCBCADakHu6rHjBjYAAAwBCyALIAJBsAFqEPYBIQACQAJAIAEoAgAgASgCCCIEayAASQRAIAEgBCAAQQFBARCzESABKAIIIQQMAQsg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IAJB/wFxIgBB/wFGDRIgAEEDRw0WIAEoAgghACABKAIMQQRrDgITFBcLIAEoAiwhBSABKAIwQQNrDgsdGDUcNRo1NRc1GTULAn8gASgCDCIGRQRAQQghAEEADAELIAEoAgghBSAGQQV0EJABIgBFDSQgACEBIAYhBwNAIANB6ABqIAUgAhCRASADKAJoQX9GDSYgAyADKQOAASIRNwNgIAMgAykDeCISNwNYIAMgAykDcCIQNwNQIAMgAykDaCIPNwNIIAEgETcDGCABIBI3AxAgASAQNwMIIAEgDzcDACAFQUBrIQUgAUEgaiEBIAdBAWsiBw0ACyAGCyEBIAQgBjYCDCAEIAA2AgggBCABNgIEIARBEjYCAAwyCyADIAI6AEggAyADQcgAaq1CgICAgNAphDcDaEHxo8AAIANB6ABqQdD3xgAQvxMACyADQegAaiABKAIIIAEoAgwQ8wggAy0AaA0xIAQgAykDcDcDCCAEQRA2AgAMMAsgA0HoAGogASgCCCABKAIMEPMIIAMtAGgNLiAEIAMpA3A3AwggBEEYNgIADC8LIANByABqIAEoAgggASgCDBDxAiADKAJIQX9GDSwgAyADKQNYIhA3A0AgAyADKQNQIg83AzggAyADKQNINwJsIAMgEDcCfCADIA83AnQgBEEXNgIAIAQgAykCaDcCBCAEIAMpAnA3AgwgBCADKQJ4NwIUIAQgAygCgAE2AhwMLgsgA0HIAGogASgCCCABKAIMEPECIAMoAkhBf0YNKiADIAMpA1giEDcDQCADIAMpA1AiDzcDOCADIAMpA0g3AmwgAyAQNwJ8IAMgDzcCdCAEQRc2AgAgBCADKQJoNwIEIAQgAykCcDcCDCAEIAMpAng3AhQgBCADKAKAATYCHAwtCyADIAI6AEggAyADQcgAaq1CgICAgNAphDcDaEHxo8AAIANB6ABqQbD4xgAQvxMACyABKAIMIgJBAEgNHiACRQRAQQEhAQwFCyABKAIIIQAgAhCQASIBDQMMLgsgASgCDCECIAEoAgghACADQf8BOgCQAiADQQA2AsgBIANBADYCwAEgA0EANgK4ASADQQA2ArABIANBADYCqAEgA0EANgKgASADQQA2ApgBIANBADYCkAEgA0EANgKIASADQQA2AoABIANBADYCeCADQQA2AoACIANBADYC+AEgA0EANgLwASADQQA2AugBIANBADYC4AEgA0EANgLYASADQQA2AtABIANBADYCiAIgA0IANwNoIANByABqIANB6ABqIAAgAhCoCSADKAJIIgBFBEAgAy0ATAwnCyADQQhqIAAgAygCTBDxDEEFIAMoAgwNJhogAygCiAJBAUYEQCADKAKMAiEBDCYLQQAhASADKQNoQgFRDSVBAgwmCyABKAIMIgJBAEgNHCACRQRAQQEhAQwFCyABKAIIIQAgAhCQASIBDQMMLAsgASgCDCIGQQNqQQJ2IgJBA2whBSABKAIIIQACQCACRQRAQQEhAQwBCyAFEJABIgFFDSwgAUEEay0AAEEDcUUNACAFRQ0AIAFBACAF/AsACyADQegAaiAAIAYgASAFIAZBA3EQlwEgAygCaEECRw0EIAMtAGxB/wFGDRwgAgRAIAEgBRDZEgsgA0ESNgJ8IANB0oTHADYCeCADQpSAgIBwNwJwIANBvoTHADYCbCADQX82AmhBiLDJAEErIANB6ABqQYD4xgBBkPjGABDaEgALIAJFDQAgASAAIAL8CgAACyAEIAI2AgwgBCABNgIIIAQgAjYCBCAEQQ02AgAMJgsgAkUNACABIAAgAvwKAAALIAQgAjYCDCAEIAE2AgggBCACNgIEIARBEzYCAAwkCyADKAJwIQAgBCABNgIIIAQgBTYCBCAEQRk2AgAgBCAFIAAgACAFSxs2AgwMIwsgA0HIAGogASgCCCABKAIMEPECIAMoAkhBf0YNHCADIAMpA1giEDcDQCADIAMpA1AiDzcDOCADIAMpA0g3AmwgAyAQNwJ8IAMgDzcCdCAEQRc2AgAgBCADKQJoNwIEIAQgAykCcDcCDCAEIAMpAng3AhQgBCADKAKAATYCHAwiCwJAIAEoAgwiAkUEQEEBIQEMAQsgASgCCCEAIAIQkAEiAUUNJSACRQ0AIAEgACAC/AoAAAsgBCACNgIMIAQgATYCCCAEIAI2AgQgBEEPNgIADCELIAAoAABB9OTVqwZHDQNBAQwBCyAAKAAAQebCsZsHcyAAQQRqLQAAQeUAc3INAkEACyEAIAYgADoABCAEQQ42AgAMHgsgAyACOgBIIAMgA0HIAGqtQoCAgIDQKYQ3A2hB8aPAACADQegAakHg+MYAEL8TAAtBiLDJAEErIANBnwJqQcD4xgBB0PjGABDaEgALIAUpAABC5MSdq+atmbnhAIUgBUEDaikAAELl3JWTl4zdsuQAhYRCAFINHSABKAIYBEAgASgCFCIBKAIAQQNGDQsLIANBADYCLCADQoCAgIAQNwIkDAsLIAUoAABB4erR+wZHDQIgBEEEaiEBIwBBQGoiAiQAAkACQEEEEJABIgAEQCAAQeHq0fsGNgAAIAJBBDYCLCACIAA2AiggAkEENgIkIAJBADYCOCACQoCAgICAATcCMCACQQhqIAJBJGogAkEwahDwBiACKAIIQX9GDQEgASACKAIgNgIYIAEgAikCGDcCECABIAIpAhA3AgggASACKQIINwIAIAJBQGskAAwCCwwfCyACIAIoAhQ2AjggAiACKQIMNwMwQYiwyQBBKyACQTBqQfzxxgBBgPPGABDaEgALIARBfzYCAAwaCyAFKQAAQuHq0fuWzdux8gCFIAVBBWopAABC7sbJq9atmbf0AIWEQgBSDRtBDRCQASIARQ0cIABB2fDGACkAADcABSAAQdTwxgApAAA3AAAgA0ENNgI4IAMgADYCNCADQQ02AjAgA0EANgJQIANCgICAgIABNwJIIANB6ABqIANBMGogA0HIAGoQ8AYgAygCaEF/Rg0OIARBBGoiACADKAKAATYCGCAAIAMpAng3AhAgACADKQJwNwIIIAAgAykCaDcCACAEQX82AgAMGQsgBSkAAELzysWr18zbseUAUg0aIANBADYCOCADQoCAgICAATcCMEEIEJABIgBFDRsgAELzysWr18zbseUANwAAIANBCDYCUCADIAA2AkwgA0EINgJIIANB6ABqIANByABqIANBMGoQ8AYgAygCaEF/Rg0OIAQgAygCgAE2AhwgBCADKQJ4NwIUIAQgAykCcDcCDCAEIAMpAmg3AgQgBEF/NgIADBgLIAUoAABB9eqlowZGBEBBBCEFIAEoAhhFDQYgASgCFCIAKAIAQQJHDQYgA0EQaiAAKAIIIAAoAgwQyA0gAy0AESEFIAMtABBFDQYgAyAFOgBoQYiwyQBBKyADQegAakHw9sYAQZD5xgAQ2hIACyAFKAAAQePqpaMGRgRAQQEhBSABKAIYRQ0FIAEoAhQiACgCAEECRw0FIANBGGogACgCCCAAKAIMEMgNIAMtABkhBSADLQAYRQ0FIAMgBToAaEGIsMkAQSsgA0HoAGpB8PbGAEGA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IAEoAgAiA0GAgICAeHMgA0EAThtBAWsOFQECAwQFBgcICQoLDA0ODxAREhQVFgALIAEtAAQhASAAQYGAgIB4NgIQIAAgAToAAAweCyABMQAEIQ4gAEGCgICAeDYCECAAIA43AwggAEIANwMADB0LIAEzAQQhDiAAQYKAgIB4NgIQIAAgDjcDCCAAQgA3AwAMHAsgATUCBCEOIABBgoCAgHg2AhAgACAONwMIIABCADcDAAwbCyABKQMIIQ4gAEGCgICAeDYCECAAIA43AwggAEIANwMADBoLIAEwAAQhDiAAQYKAgIB4NgIQIAAgDjcDCCAAIA5CP4g3AwAMGQsgATIBBCEOIABBgoCAgHg2AhAgACAONwMIIAAgDkI/iDcDAAwYCyABNAIEIQ4gAEGCgICAeDYCECAAIA43AwggACAOQj+INwMADBcLIAEpAwghDiAAQYKAgIB4NgIQIAAgDjcDCCAAIA5CP4g3AwAMFgsgACABKgIEuyIUvUL///////////8Ag0L/////////9/8AWAR/IAJBgICAgHg2AuABIAJB0AFqEP8JQYKAgIB4BUGAgICAeAs2AhAgACAUOQMIIABCAjcDAAwVCyAAIAErAwgiFL1C////////////AINC//////////f/AFgEfyACQYCAgIB4NgLgASACQdABahD/CUGCgICAeAVBgICAgHgLNgIQIAAgFDkDCCAAQgI3AwAMFAsgASgCBCEBIAJBADYC0AEgAUGAAUkNCyABQT9xQYB/ciEDIAFBBnYhBCABQYAQSQRAIAIgAzoA0QEgAiAEQcABcjoA0AFBAiEBDBMLIAFBDHYhBSAEQT9xQYB/ciEEIAFB//8DTQRAIAIgAzoA0gEgAiAEOgDRASACIAVB4AFyOgDQAUEDIQEMEwsgAiADOgDTASACIAQ6ANIBIAIgBUE/cUGAf3I6ANEBIAIgAUESdkFwcjoA0AFBBCEBDBILIAEoAgwiA0EASA0LAkAgA0UEQEEBIQEMAQsgASgCCCEEIAMQkAEiAUUNFCADRQ0AIAEgBCAD/AoAAAsgAEGDgICAeDYCECAAIAM2AgggACABNgIEIAAgAzYCAAwSCyABKAIIIgNBAEgNCgJAIANFBEBBASEBDAELIAEoAgQhBCADEJABIgFFDRMgA0UNACABIAQgA/wKAAALIABBg4CA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AgwXCyABKAIMIQMgASgCCCEEIAEoAgQiASgCACECIAEgAkEBajYCACACQQBIDRQgACADNgIMIAAgBDYCCCAAIAE2AgRBEiECDBYLIAEoAgwhAyABKAIIIQQgASgCBCIBKAIAIQIgASACQQFqNgIAIAJBAEgNEyAAIAM2AgwgACAENgIIIAAgATYCBEEUIQIMFQsgASgCCCEDIAEoAgQiASgCACECIAEgAkEBajYCACACQQBIDRIgACADNgIIIAAgATYCBEEVIQIMFAsgASgCCCEDIAEoAgQiASgCACECIAEgAkEBajYCACACQQBIDREgACADNgIIIAAgATYCBEEWIQIMEwsgASgCCCEFIAEoAgQiAigCACEDIAIgA0EBajYCACADQQBIDRAgASgCECEGIAEoAgwiAygCACEEIAMgBEEBajYCACAEQQBIDRAgACAGNgIQIAAgAzYCDCAAIAU2AgggACACNgIEIAAgAS0AAToAAUEcIQIMEgsgASgCCCEFIAEoAgQiAigCACEDIAIgA0EBajYCACADQQBIDQ8gASgCECEGIAEoAgwiAygCACEEIAMgBEEBajYCACAEQQBIDQ8gACAGNgIQIAAgAzYCDCAAIAU2AgggACACNgIEIAAgAS0AAToAAUEeIQIMEQsgASgCDCEDIAEoAgghBCABKAIEIgEoAgAhAiABIAJBAWo2AgAgAkEASA0OIAAgAzYCDCAAIAQ2AgggACABNgIEQR8hAgwQCyABKAIMIQQgASgCCCEFIAEoAgQiAigCACEDIAIgA0EBajYCACADQQBIDQ0gACAENgIMIAAgBTYCCCAAIAI2AgQgACABLQABOgABQSAhAgwPCyABKQIEIQkgASgCDCEEIAEoAhAiAigCACEDIAIgA0EBajYCACAHIAQ2AgggByAJNwMAIANBAEgNDCAAIAcoAgg2AgwgACAHKQMANwIEIAAgAjYCECAAIAEtAAE6AAFBISECDA4LIAEpAgQhCSABKQIMIQogASgCFCIBKAIAIQIgASACQQFqNgIAIAcgCjcDCCAHIAk3AwAgAkEASA0LIAAgBykDCDcCDCAAIAcpAwA3AgQgACABNgIUQSIhAgwNCyABKAIMIQMgASgCCCEEIAEoAgQiASgCACECIAEgAkEBajYCACACQQBIDQogACADNgIMIAAgBDYCCCAAIAE2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QCADQbTPxQBBASAFEQAADQsgACABENQMRQ0BDAsLIANBnePCAEECIAURAAANCiACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGoiAzYCICAAIAJBIGoQ1AwNCiADQaSyyABBAhD9CA0KCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMCQtBASEEIAEoAgAiA0HbkMkAQQUgASgCBCIGKAIMIgURAAANCCAAQQRqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQogACABEJIFRQ0BDAoLIANBnePCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEJIFDQkgAigCIEGkssgAQQIgAigCJCgCDBEAAA0JCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMCAtBASEEIAEoAgAiA0Hl8cUAQQcgASgCBCIGKAIMIgURAAANByAAQQhqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQkgACABEL8ORQ0BDAkLIANBnePCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGoiAzYCICAAIAJBIGoQvw4NCCADQaSyyABBAhD9CA0ICyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMBwtBASEEIAEoAgAiA0H2mckAQQQgASgCBCIGKAIMIgURAAANBiAAQQhqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQggACABEKIPRQ0BDAgLIANBnePCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEKIPDQcgAigCIEGkssgAQQIgAigCJCgCDBEAAA0HCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMBgsgAiAAQQRqNgIMQQEhBCABKAIAIgBB7PHFAEEDIAEoAgQiBSgCDCIDEQAADQUCQCABLQAKQYABcUUEQCAAQbTPxQBBASADEQAADQcgAkEMaiABEPoPRQ0BDAcLIABBnePCAEECIAMRAAANBiACQQE6ABMgAiAFNgIYIAIgADYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGoiADYCICACQQxqIAJBIGoQ+g8NBiAAQaSyyABBAhD9CA0GCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMBQtBASEEIAEoAgAiA0HymckAQQQgASgCBCIGKAIMIgURAAANBCAAQQFqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQYgACABEPoORQ0BDAYLIANBnePCAEECIAURAAANBSACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGoiAzYCICAAIAJBIGoQ+g4NBSADQaSyyABBAhD9CA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMBAtBASEEIAEoAgAiA0GEmskAQQggASgCBCIGKAIMIgURAAANAyAAQQRqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQUgACABEKoNRQ0BDAULIANBnePCAEECIAURAAANBCACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGoiAzYCICAAIAJBIGoQqg0NBCADQaSyyABBAhD9CA0ECyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMAwtBASEEIAEoAgAiA0Hv8cUAQQQgASgCBCIGKAIMIgURAAANAiAAQQRqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQQgACABEKQQRQ0BDAQLIANBnePCAEECIAURAAANAyACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGoiAzYCICAAIAJBIGoQpBANAyADQaSyyABBAhD9CA0DCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQQMAgtBASEEIAEoAgAiA0Hz8cUAQQQgASgCBCIGKAIMIgURAAANASAAQQRqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQMgACAB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AWo2AgQLIAEoAowBIgIgASgCiAEiDEYEQCABKAIgIQsgASgCLCEJCyABKAIUIQgCQCABLQCQAUECRwRAIAghBQwBCyAIIQUgAS0AkQFFDQAgASgCDCAFRgRAIAFBDGoQmhILIAEoAhAgCEEUbGoiBSAMNgIIIAVBADYCBCAFQQA6AAAgASAIQQFqIgU2AhQgASgCjAEhAgsgAiAMRgRAIAEoAiwgASgCIGohDQsgASgCeCEPIAEoAlwhEAJAAkACQAJAAkAgASgCAEEBRgRAIAEoAgQiBCABKAIIIgZPDQUgASAEQQFqIgI2AgQgAyABKAKIATYCmAEgAyABKQKAATcDkAEgAiAGTw0EIAEgBEECaiIHNgIEIAMgAUGAAWoiAigCCDYCqAEgAyACKQIANwOgASAGIAdNDQMgASAEQQNqIgc2AgQgAyACKAIINgK4ASADIAIpAgA3A7ABIAYgB00NAiABIARBBGo2AgQMAQsgAyABKAKIATYCmAEgAyABKQKAATcDkAEgAyABKAKIATYCqAEgAyABKQKAATcDoAEgAyABKAKIATYCuAEgAyABKQKAATcDsAEgAUGAAWohAgsgASABLQCQASIGQQFHOgCQASADIAIoAgg2AsgBIAMgAikCADcDwAEgASgCOCECIAEoAlAiBCABKAJIRgRAIAFByABqEJYSCyABIARBAWo2AlAgASgCTCAEQQN0aiIEIAI2AgQgBCACNgIAIANBiAFqIAEQrgsgAygCiAEgAygCjAEiASADKALIATYCiAEgASADKQPAATcCgAEgASAGOgCQASABQTBqEIYKQQFHDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIETw0CIAEgAkEBaiIGNgIEIAQgBk0NASABIAJBAmo2AgQLIAFBADoAkQEgA0GAAWogARCUCiADKAKAASADKAKEASIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgRFBEAgA0HwAGogARCUCiADKAJ0IQEgAygCcCECDAELIAFBADoAkQEgA0H4AGogARCUCiADKAJ4IQIgAygCfCIBIAQ6AJEBCyACQQFHDQALCyABKAKEASECIAEoAoABIQQCQCABKAKIASIGRQ0AIAIgBk0E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SQ0EIAZBAEcgASACQSdqS3ENAyAEELwFCyADEOcFIAsgB0EBaiIHRw0ACwsgACgC7AEiBARAIAVBBGsoAgAiAkF4cSEBIAEgBEEFdCIEQQRBCCACQQNxIgIbckkNAiACQQBHIAEgBEEnaktxDQEgBRC8BQsCQCAAKAKEAiIBQX5GDQAgAUF/Rg0AIAFFDQAgACgCiAIiBEEEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNAiACQQBHIAAgAUEnaktxDQEgBBC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAv2HQEFfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAABBAWsOEQECAwQFBgcICQoLDA0ODxARAAtBASEDIAEoAgAiBEHvkckAQQYgASgCBCIGKAIMIgURAAANESAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADRMgACABELILRQ0BDBMLIARBnePCAEECIAURAAANEiACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDRIgAigCIEGkssgAQQIgAigCJCgCDBEAAA0SCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMEQtBASEDIAEoAgAiBEHIlskAQQkgASgCBCIGKAIMIgURAAANECAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADRIgACABELILRQ0BDBILIARBnePCAEECIAURAAANESACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDREgAigCIEGkssgAQQIgAigCJCgCDBEAAA0RCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMEAtBASEDIAEoAgAiBEGhkskAQQggASgCBCIGKAIMIgURAAANDyAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADREgACABELILRQ0BDBELIARBnePCAEECIAURAAANECACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDRAgAigCIEGkssgAQQIgAigCJCgCDBEAAA0QCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDwtBASEDIAEoAgAiBEHRlskAQQsgASgCBCIGKAIMIgURAAANDiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADRAgACABELILRQ0BDBALIARBnePCAEECIAURAAANDyACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQ8gAigCIEGkssgAQQIgAigCJCgCDBEAAA0PCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDgtBASEDIAEoAgAiBEHclskAQQogASgCBCIGKAIMIgURAAANDSAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ8gACABELILRQ0BDA8LIARBnePCAEECIAURAAANDiACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQ4gAigCIEGkssgAQQIgAigCJCgCDBEAAA0OCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDQtBASEDIAEoAgAiBEHmlskAQQ0gASgCBCIGKAIMIgURAAANDCAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ4gACABELILRQ0BDA4LIARBnePCAEECIAURAAANDSACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQ0gAigCIEGkssgAQQIgAigCJCgCDBEAAA0NCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDAtBASEDIAEoAgAiBEHzlskAQQggASgCBCIGKAIMIgURAAANCyAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ0gACABELILRQ0BDA0LIARBnePCAEECIAURAAANDCACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQwgAigCIEGkssgAQQIgAigCJCgCDBEAAA0MCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCwtBASEDIAEoAgAiBEH7lskAQQsgASgCBCIGKAIMIgURAAANCiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQwgACABELILRQ0BDAwLIARBnePCAEECIAURAAANCyACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQsgAigCIEGkssgAQQIgAigCJCgCDBEAAA0LCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCgtBASEDIAEoAgAiBEGGl8kAQQggASgCBCIGKAIMIgURAAANCSAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQsgACABELILRQ0BDAsLIARBnePCAEECIAURAAANCiACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQogAigCIEGkssgAQQIgAigCJCgCDBEAAA0KCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEGOl8kAQRAgASgCBCIGKAIMIgURAAANCCAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQogACABELILRQ0BDAoLIARBnePCAEECIAURAAANCSACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQkgAigCIEGkssgAQQIgAigCJCgCDBEAAA0JCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEGel8kAQQsgASgCBCIGKAIMIgURAAANByAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQkgACABELILRQ0BDAkLIARBnePCAEECIAURAAANCCACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQggAigCIEGkssgAQQIgAigCJCgCDBEAAA0ICyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEGpl8kAQRMgASgCBCIGKAIMIgURAAANBiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQggACABELILRQ0BDAgLIARBnePCAEECIAURAAANByACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqELILDQcgAigCIEGkssgAQQIgAigCJCgCDBEAAA0HCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEG8l8kAQQIgASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQcgACABEMgIRQ0BDAcLIARBnePCAEECIAURAAANBiACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqEMgIDQYgAigCIEGkssgAQQIgAigCJCgCDBEAAA0GCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEG+l8kAQQUgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQYgACABEMgIRQ0BDAYLIARBnePCAEECIAURAAANBSACQQE6AAwgAiAGNgIUIAIgBDYCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCGCACIAJBEGo2AiAgACACQSBqEMgIDQUgAigCIEGkssgAQQIgAigCJCgCDBEAAA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBAsgAiAAQQRqNgIMQQEhAyABKAIAIgBBw5fJAEELIAEoAgQiBSgCDCIEEQAADQMCQCABLQAKQYABcUUEQCAAQbTPxQBBASAEEQAADQUgAkEMaiABEI4L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IAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNEiACKAIgQaSyyABBAiACKAIkKAIMEQAADRILIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwRC0EBIQMgASgCACIEQciWyQBBCSABKAIEIgYoAgwiBREAAA0QIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANEiAAIAEQggxFDQEMEgsgBEGd48IAQQIgBREAAA0RIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNESACKAIgQaSyyABBAiACKAIkKAIMEQAADRELIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwQC0EBIQMgASgCACIEQaGSyQBBCCABKAIEIgYoAgwiBREAAA0PIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANESAAIAEQggxFDQEMEQsgBEGd48IAQQIgBREAAA0QIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNECACKAIgQaSyyABBAiACKAIkKAIMEQAADRALIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwPC0EBIQMgASgCACIEQdGWyQBBCyABKAIEIgYoAgwiBREAAA0OIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANECAAIAEQggxFDQEMEAsgBEGd48IAQQIgBREAAA0PIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNDyACKAIgQaSyyABBAiACKAIkKAIMEQAADQ8LIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwOC0EBIQMgASgCACIEQdyWyQBBCiABKAIEIgYoAgwiBREAAA0NIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANDyAAIAEQggxFDQEMDwsgBEGd48IAQQIgBREAAA0OIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNDiACKAIgQaSyyABBAiACKAIkKAIMEQAADQ4LIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwNC0EBIQMgASgCACIEQeaWyQBBDSABKAIEIgYoAgwiBREAAA0MIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANDiAAIAEQggxFDQEMDgsgBEGd48IAQQIgBREAAA0NIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNDSACKAIgQaSyyABBAiACKAIkKAIMEQAADQ0LIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwMC0EBIQMgASgCACIEQfOWyQBBCCABKAIEIgYoAgwiBREAAA0LIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANDSAAIAEQggxFDQEMDQsgBEGd48IAQQIgBREAAA0MIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNDCACKAIgQaSyyABBAiACKAIkKAIMEQAADQwLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwLC0EBIQMgASgCACIEQfuWyQBBCyABKAIEIgYoAgwiBREAAA0KIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANDCAAIAEQggxFDQEMDAsgBEGd48IAQQIgBREAAA0LIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNCyACKAIgQaSyyABBAiACKAIkKAIMEQAADQsLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwKC0EBIQMgASgCACIEQYaXyQBBCCABKAIEIgYoAgwiBREAAA0JIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANCyAAIAEQggxFDQEMCwsgBEGd48IAQQIgBREAAA0KIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNCiACKAIgQaSyyABBAiACKAIkKAIMEQAADQoLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwJC0EBIQMgASgCACIEQY6XyQBBECABKAIEIgYoAgwiBREAAA0IIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANCiAAIAEQggxFDQEMCgsgBEGd48IAQQIgBREAAA0JIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNCSACKAIgQaSyyABBAiACKAIkKAIMEQAADQkLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwIC0EBIQMgASgCACIEQZ6XyQBBCyABKAIEIgYoAgwiBREAAA0HIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANCSAAIAEQggxFDQEMCQsgBEGd48IAQQIgBREAAA0IIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNCCACKAIgQaSyyABBAiACKAIkKAIMEQAADQgLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwHC0EBIQMgASgCACIEQamXyQBBEyABKAIEIgYoAgwiBREAAA0GIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANCCAAIAEQggxFDQEMCAsgBEGd48IAQQIgBREAAA0HIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQggwNByACKAIgQaSyyABBAiACKAIkKAIMEQAADQcLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwGC0EBIQMgASgCACIEQbyXyQBBAiABKAIEIgYoAgwiBREAAA0FIABBBGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANByAAIAEQzQhFDQEMBwsgBEGd48IAQQIgBREAAA0GIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQzQgNBiACKAIgQaSyyABBAiACKAIkKAIMEQAADQYLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwFC0EBIQMgASgCACIEQb6XyQBBBSABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANBiAAIAEQzQhFDQEMBgsgBEGd48IAQQIgBREAAA0FIAJBAToADCACIAY2AhggAiAENgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAAIAJBIGoQzQgNBSACKAIgQaSyyABBAiACKAIkKAIMEQAADQULIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwECyACIABBBGo2AgxBASEDIAEoAgAiAEHDl8kAQQsgASgCBCIFKAIMIgQRAAANAwJAIAEtAApBgAFxRQRAIABBtM/FAEEBIAQRAAANBSACQQxqIAEQkQtFDQEMBQsgAEGd48IAQQIgBBEAAA0EIAJBAToAEyACIAU2AhggAiAANgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQRNqNgIcIAIgAkEUajYCICACQQxqIAJBIGoQkQsNBCACKAIgQaSyyABBAiACKAIkKAIMEQAADQQLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwDCyACIABBBGo2AiAgAUHOl8kAQQYgAEEQakHeAiACQSBqQbcBEPIMIQMMAgsgAiAAQQRqNgIgIAFB1JfJAEEJIABBEGpB3gIgAkEgakG3ARDyDCEDDAELQQEhAyABKAIAIgRB/JHJAEEFIAEoAgQiBigCDCIFEQAADQAgAEEBaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0CIAAgARCYFEUNAQwCCyAEQZ3jwgBBAiAFEQAADQEgAkEBOgAMIAIgBjYCGCACIAQ2AhQgAkGg68IANgIkIAIgASkCCDcCKCACIAJBDGo2AhwgAiACQRRqIgQ2AiAgACACQSBqEJgUDQEgBEGkssgAQQIQ/QgNAQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDCyACQTBqJAAgAwvtHQEFfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAABBAWsOEQECAwQFBgcICQoLDA0ODxARAAtBASEDIAEoAgAiBEHvkckAQQYgASgCBCIGKAIMIgURAAANESAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADRMgACABELYLRQ0BDBMLIARBnePCAEECIAURAAANEiACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDRIgAigCIEGkssgAQQIgAigCJCgCDBEAAA0SCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMEQtBASEDIAEoAgAiBEHIlskAQQkgASgCBCIGKAIMIgURAAANECAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADRIgACABELYLRQ0BDBILIARBnePCAEECIAURAAANESACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDREgAigCIEGkssgAQQIgAigCJCgCDBEAAA0RCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMEAtBASEDIAEoAgAiBEGhkskAQQggASgCBCIGKAIMIgURAAANDyAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADREgACABELYLRQ0BDBELIARBnePCAEECIAURAAANECACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDRAgAigCIEGkssgAQQIgAigCJCgCDBEAAA0QCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDwtBASEDIAEoAgAiBEHRlskAQQsgASgCBCIGKAIMIgURAAANDiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADRAgACABELYLRQ0BDBALIARBnePCAEECIAURAAANDyACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQ8gAigCIEGkssgAQQIgAigCJCgCDBEAAA0PCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDgtBASEDIAEoAgAiBEHclskAQQogASgCBCIGKAIMIgURAAANDSAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ8gACABELYLRQ0BDA8LIARBnePCAEECIAURAAANDiACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQ4gAigCIEGkssgAQQIgAigCJCgCDBEAAA0OCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDQtBASEDIAEoAgAiBEHmlskAQQ0gASgCBCIGKAIMIgURAAANDCAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ4gACABELYLRQ0BDA4LIARBnePCAEECIAURAAANDSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQ0gAigCIEGkssgAQQIgAigCJCgCDBEAAA0NCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDAtBASEDIAEoAgAiBEHzlskAQQggASgCBCIGKAIMIgURAAANCyAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ0gACABELYLRQ0BDA0LIARBnePCAEECIAURAAANDCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQwgAigCIEGkssgAQQIgAigCJCgCDBEAAA0MCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCwtBASEDIAEoAgAiBEH7lskAQQsgASgCBCIGKAIMIgURAAANCiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQwgACABELYLRQ0BDAwLIARBnePCAEECIAURAAANCyACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQsgAigCIEGkssgAQQIgAigCJCgCDBEAAA0LCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCgtBASEDIAEoAgAiBEGGl8kAQQggASgCBCIGKAIMIgURAAANCSAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQsgACABELYLRQ0BDAsLIARBnePCAEECIAURAAANCiACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQogAigCIEGkssgAQQIgAigCJCgCDBEAAA0KCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCQtBASEDIAEoAgAiBEGOl8kAQRAgASgCBCIGKAIMIgURAAANCCAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQogACABELYLRQ0BDAoLIARBnePCAEECIAURAAANCSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQkgAigCIEGkssgAQQIgAigCJCgCDBEAAA0JCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEGel8kAQQsgASgCBCIGKAIMIgURAAANByAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQkgACABELYLRQ0BDAkLIARBnePCAEECIAURAAANCCACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQggAigCIEGkssgAQQIgAigCJCgCDBEAAA0ICyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEGpl8kAQRMgASgCBCIGKAIMIgURAAANBiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQggACABELYLRQ0BDAgLIARBnePCAEECIAURAAANByACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqELYLDQcgAigCIEGkssgAQQIgAigCJCgCDBEAAA0HCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEG8l8kAQQIgASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQcgACABEM4IRQ0BDAcLIARBnePCAEECIAURAAANBiACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEM4IDQYgAigCIEGkssgAQQIgAigCJCgCDBEAAA0GCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEG+l8kAQQUgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQYgACABEM4IRQ0BDAYLIARBnePCAEECIAURAAANBSACQQE6AAwgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgACACQSBqEM4IDQUgAigCIEGkssgAQQIgAigCJCgCDBEAAA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBAsgAiAAQQRqNgIMQQEhAyABKAIAIgBBw5fJAEELIAEoAgQiBSgCDCIEEQAADQMCQCABLQAKQYABcUUEQCAAQbTPxQBBASAEEQAADQUgAkEMaiABEJQLRQ0BDAULIABBnePCAEECIAQRAAANBCACQQE6ABMgAiAFNgIYIAIgADYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAkEMaiACQSBqEJQLDQQgAigCIEGkssgAQQIgAigCJCgCDBEAAA0ECyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMAwsgAiAAQQRqNgIgIAFBzpfJAEEGIABBEGpBgAMgAkEgakG3ARDyDCEDDAILIAIgAEEEajYCICABQdSXyQBBCSAAQRBqQYAD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aiABEJUKIAMoAnwhASADKAJ4QQFxDQADQCADQfAAaiABEJUKIAMoAnQhASADKAJwQQFHDQALCwJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgRPDQIgASACQQFqIgU2AgQgBCAFTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQegAaiABEJQKIAMoAmggAygCbCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgRFBEAgA0HYAGogARCUCiADKAJcIQEgAygCWCECDAELIAFBADoAkQEgA0HgAGogARCUCiADKAJgIQIgAygCZCIBIAQ6AJEBCyACQQFHDQALC0EAIQICQCABKAKIASIEQX1LDQAgBEECaiIFIAEoAoQBSw0AIAEoAoABIARqLwAAQa/UAEcNACABIAU2AogBQQEhAgsCQAJAAkACQCABLQB8QQFGBEBBAhCQASIFRQ0RIAVBr9QAOwAAIANBAjYCzAEgAyAFNgLIASADQoCAgIAgNwLAASABIAQgA0HAAWogAhD5CAsgAkUNBAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgRPDQYgASACQQFqIgU2AgQgBCAFTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQdAAaiABEJQKIAMoAlAgAygCVCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgRFBEAgA0FAayABEJQKIAMoAkQhASADKAJAIQIMAQsgAUEAOgCRASADQcgAaiABEJQKIAMoAkghAiADKAJMIgEgBDoAkQELIAJBAUcNAAsLIAEoAgBBAUcNACABKAIEIgQgASgCCCIFTw0EIAEgBEEBaiICNgIEIAIgBU8NBCABKAIUIQsgASAEQQJqIgI2AgQgAiAFTw0DIAEgBEEDaiIINgIEIAMgAUGAAWoiAigCCDYCqAEgAyACKQIANwOgASAFIAhNDQIgASAEQQRqNgIEDAELIAEoAhQhCyADIAEoAogBNgKoASADIAEpAoABNwOgASABQYABaiECCyABIAEtAJABIhBBAUc6AJABIAMgAigCCDYCuAEgAyACKQIANwOwASABKAI4IQQgASgCUCIFIAEoAkhGBEAgAUHIAGoQlhILIAEgBUEBajYCUCABKAJMIAVBA3RqIgUgBDYCBCAFIAQ2AgBBACEEAkAgASgCiAEiBUF9Sw0AIAVBAmoiCCABKAKEAUsNACACKAIAIAVqLwAAQareAEcNACABIAg2AogBQQEhBAsgAS0AfEEBRgRAQQIQkAEiCEUNDyAIQareADsAACADQQI2AswBIAMgCDYCyAEgA0KAgICAIDcCwAEgASAFIANBwAFqIAQQ+QgLIAIgAygCuAE2AgggAiADKQOwATcCACABIBA6AJABIAFBMGoQhgogBA0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiBTYCBCAEIAVNDQEgASACQQJqNgIECyABQQA6AJEBIANBOGogARCUCiADKAI4IAMoAjwiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIANBKGogARCUCiADKAIsIQEgAygCKCECDAELIAFBADoAkQEgA0EwaiABEJQKIAMoAjAhAiADKAI0IgEgBDoAkQELIAJBAUcNAAsLIAEoAoQBIQIgASgCgAEhBAJAIAEoAogBIgVFDQAgAiAFTQRAIAIgBUYNAQwPCyAEIAVqLAAAQUBIDQ4LIAIgBUYNACABAn9BASAEIAVqIgQsAAAiC0EATg0AGiAELQABQT9xIQggC0EfcSECAn8gAkEGdCAIciALQWBJDQAaIAQtAAJBP3EgCEEGdHIhCCAIIAJBDHRyIAtBcEkNABogAkESdEGAgPAAcSAELQADQT9xIAhBBnRycgshBEEBIARBgAFJDQAaQQIgBEGAEEkNABpBA0EEIARBgIAESRsLIAVqNgKIASABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECyADQSBqIAEQogQgAygCJCEBIAMoAiBBAXENAQNAIANBGGogARCiBCADKAIcIQEgAygCGEEBRw0ACwwBCyABIAMoAqgBNgKIASABIAMpA6ABNwKAASALIAEoAhRLDQAgASALNgIUCwJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgRPDQIgASACQQFqIgU2AgQgBCAFTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQRBqIAEQlAogAygCECADKAIUIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiBEUEQCADIAEQlAogAygCBCEBIAMoAgAhAgwBCyABQQA6AJEBIANBCGogARCUCiADKAIIIQIgAygCDCIBIAQ6AJEBCyACQQFHDQALC0EAIQICQCABKAKIASIEQX1LDQAgBEECaiIFIAEoAoQBSw0AIAEoAoABIARqLwAAQareAEcNACABIAU2AogBQQEhAgsgAS0AfEEBRgRAQQIQkAEiBUUNDSAFQareADsAACADQQI2AswBIAMgBTYCyAEgA0KAgICAIDcCwAEgASAEIANBwAFqIAIQ+QgLIAINAgsgASADKAKYATYCiAEgASADKQOQATcCgAEgByABKAIUSw0AIAEgBzYCFAtBASECIAEtAJABQQFGDQggAS0AkQFFDQMgASgCjAEiAiAKRw0BIA0gASgCICICIAEoAiwiB2oiBEkgBCANa0EBRnENAyACIAxPBEAgASAMNgIgIAwhAgsgByAJSQ0CIAEgCTYCLAwCCyABLQCQASICQQFGBH8gAS0AkQFFDQcCQCAKIAEoAowBIgJGBEAgDSABKAIsIgIgASgCICIHaiIESSAEIA1rQQFGcQ0JIAcgDE8EQCABIAw2AiALIAIgCUkNASABIAk2AiwgCSECDAELIAIgCk8NCCABIAo2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIkIAJGBEAgAUEkahCjEgsgASgCKCACakEhOgAAIAEgAkEBajYCLCABLQCQAQUgAgtB/wFxQQJHDQYgAS0AkQFFDQYgASgCFCICIAZNDQMgASgCECAGQRRsaiIHLQAADQQgByACNgIEIAEoAogBIQkgASgCFCIHIAEoAgxGBEAgAUEMahCaEgsgASgCECAHQRRsaiICIAk2AhAgAkEANgIIIAIgBjYCBCACQYHCADsBACABIAdBAWo2AhQMBgsgAiAKTw0BIAEgCjYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAhggAkYEQCABQRhqEKMSCyABIAJBAWo2AiAgASgCHCACakEhOgAAC0EBIQIgAS0AfEEBRw0CIAEt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DCABIANBBBCWCAwMCyACIAU2AgwgASACQQxqQQQQlggMCwsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwLCyACIAU2AgwgASACQQxqQQQQlggMCgsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwKCyACIAU2AgwgASACQQxqQQQQlggMCQsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwJCyACIAU2AgwgASACQQxqQQQQlggMCAsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwICyACIAU2AgwgASACQQxqQQQQlggMBwsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwHCyACIAU2AgwgASACQQxqQQQQlggMBgsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwGCyACIAU2AgwgASACQQxqQQQQlggMBQsgAiAAKAIMIgQ2AgwgASACQQxqIgNBBBCWCCAAKAIQIQUgBEEBRgRAIAAoAhQhBCACIAU2AgwgASADQQQQlgggAiAENgIMIAEgA0EEEJYIIAIgACgCGDYCDCABIANBBBCWCAwFCyACIAU2AgwgASACQQxqQQQQlggMBAsgAiAA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AiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAiA2AgwgASADQQQQlggMAQsgAiAFNgIMIAEgAkEMakEEEJYICyAAKAIIIQMgAiAAKAIMIgA2AgwgASACQQxqQQQQlgggAEUNDCAAQRRsIQADQCADIAEQkxAgA0EUaiEDIABBFGsiAA0ACwwMCyACIAAoAgwiBDYCDCABIAJBDGoiA0EEEJYIIAAoAhAhBSAEQQFGBEAgACgCFCEEIAIgBTYCDCABIANBBBCWCCACIAQ2AgwgASADQQQQlgggAiAAKAIYNgIMIAEgA0EEEJYIDAwLIAIgBTYCDCABIAJBDGpBBBCWCAwLCyACIAAoAgwiBDYCDCABIAJBDGoiA0EEEJYIIAAoAhAhBSAEQQFGBEAgACgCFCEEIAIgBTYCDCABIANBBBCWCCACIAQ2AgwgASADQQQQlgggAiAAKAIYNgIMIAEgA0EEEJYIDAsLIAIgBTYCDCABIAJBDGpBBBCWCAwKCyACIAAoAgwiBDYCDCABIAJBDGoiA0EEEJYIIAAoAhAhBSAEQQFGBEAgACgCFCEEIAIgBTYCDCABIANBBBCWCCACIAQ2AgwgASADQQQQlgggAiAAKAIYNgIMIAEgA0EEEJYIDAoLIAIgBTYCDCABIAJBDGpBBBCWCAwJCyACIAAoAgwiBDYCDCABIAJBDGoiA0EEEJYIIAAoAhAhBSAEQQFGBEAgACgCFCEEIAIgBTYCDCABIANBBBCWCCACIAQ2AgwgASADQQQQlgggAiAAKAIYNgIMIAEgA0EEEJYIDAkLIAIgBTYCDCABIAJBDGpBBBCWCAwICyACIAAoAgwiBDYCDCABIAJBDGoiA0EEEJYIIAAoAhAhBSAEQQFGBEAgACgCFCEEIAIgBTYCDCABIANBBBCWCCACIAQ2AgwgASADQQQQlgggAiAAKAIYNgIMIAEgA0EEEJYIDAgLIAIgBTYCDCABIAJBDGpBBBCWCAwHCyACIAAoAgwiBDYCDCABIAJBDGoiA0EEEJYIIAAoAhAhBSAEQQFGBEAgACgCFCEEIAIgBTYCDCABIANBBBCWCCACIAQ2AgwgASADQQQQlgggAiAAKAIYNgIMIAEgA0EEEJYIDAcLIAIgBTYCDCABIAJBDGpBBBCWCAwGCyACIAAoAgwiBDYCDCABIAJB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ECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMCAsgAiAFNgIMIAEgAkEMakEEEJYIDAcLIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMBwsgAiAFNgIMIAEgAkEMakEEEJYIDAYLIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMBgsgAiAFNgIMIAEgAkEMakEEEJYIDAULIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMBQsgAiAFNgIMIAEgAkEMakEEEJYIDAQLIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMBAsgAiAFNgIMIAEgAkEMakEEEJYIDAMLIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMAwsgAiAFNgIMIAEgAkEMakEEEJYIDAILIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMAgsgAiAFNgIMIAEgAkEMakEEEJYIDAELIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYC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QQA2AgQgAkEAOgAAIAEgCEEBaiIGNgIUIAEoAowBIQILIAIgCkYEQCABKAIsIAEoAiBqIQwLIAEoAnghDyABKAJcIRACQCABKAIAQQFGBEAgASgCBCICIAEoAghPBEBBASEEDAILIAEgAkEBajYCBAsgAyABKAKIATYCqAEgAyABKQKAATcDoAEgA0GYAWogARDnAyADKAKcASEBAn8CQCADKAKYAUEBcQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBU8NAiABIAJBAWoiBDYCBCAEIAVPDQEgASACQQJqNgIECyABQQA6AJEBIANBkAFqIAEQlAogAygCkAEgAygClAEiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIFRQRAIANBgAFqIAEQlAogAygChAEhASADKAKAASECDAELIAFBADoAkQEgA0GIAWogARCUCiADKAKIASECIAMoAowBIgEgBToAkQELIAJBAUcNAAsLIANB+ABqIAEQgQIgAygCfCEBIAMoAnhBAXENAAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgVPDQIgASACQQFqIgQ2AgQgBCAFTw0BIAEgAkECajYCBAsgAUEAOgCRASADQfAAaiABEJQKIAMoAnAgAygCdCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0HgAGogARCUCiADKAJkIQEgAygCYCECDAELIAFBADoAkQEgA0HoAGogARCUCiADKAJoIQIgAygCbCIBIAU6AJEBCyACQQFHDQALCwJAAkACQAJAAkAgASgCAEEBRgRAIAEoAgQiBCABKAIIIgdPDQYgASAEQQFqIgI2AgQgAiAHTw0GIAEoAhQhBSABIARBAmoiAjYCBCACIAdPDQMgASAEQQNqIg02AgQgAyABQYABaiICKAIINgK4ASADIAIpAgA3A7ABIAcgDU0NAiABIARBBGo2AgQMAQsgASgCFCEFIAMgASgCiAE2ArgBIAMgASkCgAE3A7ABIAFBgAFqIQILIAEgAS0AkAEiB0EBRzoAkAEgAyACKAIINgLIASADIAIp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DCAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ4gACABENYQRQ0BDA4LIARBnePCAEECIAURAAANDSACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqENYQDQ0gAigCHEGkssgAQQIgAigCICgCDBEAAA0NCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMDAtBASEDIAEoAgAiBEHO9sUAQQggASgCBCIGKAIMIgURAAANCyAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQ0gACABEI0QRQ0BDA0LIARBnePCAEECIAURAAANDCACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqEI0QDQwgAigCHEGkssgAQQIgAigCICgCDBEAAA0MCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCwtBASEDIAEoAgAiBEHW9sUAQQYgASgCBCIGKAIMIgURAAANCiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQwgACABELoQRQ0BDAwLIARBnePCAEECIAURAAANCyACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqELoQDQsgAigCHEGkssgAQQIgAigCICgCDBEAAA0LCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCgtBASEDIAEoAgAiBEGc8MUAQQMgASgCBCIGKAIMIgURAAANCSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQsgACABEIQRRQ0BDAsLIARBnePCAEECIAURAAANCiACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqEIQRDQogAigCHEGkssgAQQIgAigCICgCDBEAAA0KCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCQsgAiAAQQRqNgIsQQEhAyABKAIAIgBB3PbFAEEJIAEoAgQiBSgCDCIEEQAADQgCQCABLQAKQYABcUUEQCAAQbTPxQBBASAEEQAADQogAkEsaiABEMUERQ0BDAoLIABBnePCAEECIAQRAAANCSACQQE6ABsgAiAFNgIQIAIgADYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEbajYCFCACIAJBDGo2AhwgAkEsaiACQRxqEMUEDQkgAigCHEGkssgAQQIgAigCICgCDBEAAA0JCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMCAtBASEDIAEoAgAiBEGD/cYAQQggASgCBCIGKAIMIgURAAANByAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQkgACABEMcQRQ0BDAkLIARBnePCAEECIAURAAANCCACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqEMcQDQggAigCHEGkssgAQQIgAigCICgCDBEAAA0ICyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHl9sUAQQggASgCBCIGKAIMIgURAAANBiAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQggACABEN0MRQ0BDAgLIARBnePCAEECIAURAAANByACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqEN0MDQcgAigCHEGkssgAQQIgAigCICgCDBEAAA0HCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEHt9sUAQQIgASgCBCIGKAIMIgURAAANBSAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQcgACABEKoBRQ0BDAcLIARBnePCAEECIAURAAANBiACQQE6ACwgAiAGNgIQIAIgBDYCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEsajYCFCACIAJBDGo2AhwgACACQRxqEKoBDQYgAigCHEGkssgAQQIgAigCICgCDBEAAA0GCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBQtB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IAQoAnQhAyAEKAJwIRACQCAEKAKAASICRQ0AIAIgAkECdEELakF4cSICakEJaiIGRQ0AIAQoAnwgAmsiBUEEaygCACICQXhxIQcgB0EEQQggAkEDcSICGyAGakkNDyACQQBHIAcgBkEnaktxDRAgBRC8BQsgAyEFAkAgC0UNACALQcgAbCEFIAMhAiALQQFxBEAgCCADKQMANwMAIAggAykDCDcDCCAIIAMpAxA3AxAgCCADKQMYNwMYIAggAykDIDcDICAIIAMpAyg3AyggCCADKQMwNwMwIAQgAygCQDYC0AEgBCADKQM4NwPIASADIARByAFqQcgA/AoAACADQcgAaiECCyADIAVqIQUgC0EBRg0AA0AgCCACKQMANwMAIAggAikDCDcDCCAIIAIpAxA3AxAgCCACKQMYNwMYIAggAikDIDcDICAIIAIpAyg3AyggCCACKQMwNwMwIAQgAkFAaygCADYC0AEgBCACQThqKQMANwPIASACIARByAFqIgZByAD8CgAAIAggAkHIAGoiBykDADcDACAIIAJB0ABqKQMANwMIIAggAkHYAGopAwA3AxAgCCACQeAAaikDADcDGCAIIAJB6ABqKQMANwMgIAggAkHwAGopAwA3AyggCCACQfgAaikDADcDMCAEIAJBiAFqKAIANgLQASAEIAJBgAFqKQMANwPIASAHIAZByAD8CgAAIAUgAkGQAWoiAkcNAAsLIAQoAlhBAUcNAgwJC0HIABCQASIDRQ0FIAkgCikCMDcCMCAJIAopAig3AiggCSAKKQIgNwIgIAkgCikCGDcCGCAJIAopAhA3AhAgCSAKKQIINwIIIAkgCikCADcCACADIAY2AgggAyAONgIEIAMgDTYCACADIAQpAsgBNwIMIAMgBCkC0AE3AhQgAyAEKQLYATcCHCADIAQpAuABNwIkIAMgBCkC6AE3AiwgAyAEKQLwATcCNCADIAQpAvgBNwI8IAMgBCgCgAI2AkQMAwsgBCgCPCECIAQoAkAhAyAEQQhqIBEQogYgBCgCCEEBRw0GIAQoAgwiBSADSQ0BIAUgA0HkhMcAEIUTAAsgBEHYAGoQ8AUMBgtByAAQkAEiA0UNAyAEQZABaiACIAVByABsahCOByAJIAQpA8ABNwIwIAkgBCkDuAE3AiggCSAEKQOwATcCICAJIAQpA6gBNwIY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DAQLIAAoAgwiACABKAIMIgFLIAAgAUlrIQIMAwtBf0EBIAsgDFYbIQILIAJBAEogAkEASGshAgwBCyACIAZIIAIgBkprIQILIARBMGokACACC5EVAQ5/IwBBoAFrIgMkAEEBIQICQAJAIAEoAgBBAUYEQCABKAIEIgggASgCCE8NASABIAhBAWo2AgQLIAEoAowBIgIgASgCiAEiCkYEQCABKAIgIQwgASgCLCEJCyABKAIUIQgCQCABLQCQAUECRwRAIAghBgwBCyAIIQYgAS0AkQFFDQAgASgCDCAIRgRAIAFBDGoQmhILIAEoAhAgCEEUbGoiAiAKNgIIIAJBADYCBCACQQA6AAAgASAIQQFqIgY2AhQgASgCjAEhAgsgAiAKRgRAIAEoAiwgASgCIGohDQsgASgCeCEOIAEoAlwhDwJAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8EQEEBIQQMAgsgASACQQFqNgIECyADIAEoAogBIgI2AnggAyABKQKAATcDcAJAIAIgASgChAFPDQAgAUGAAWooAgAgAmotAABB+wBHDQAgASACQQFqNgKIAUEBIQQLAn8CQAJAAkACQAJAAkAgAS0AfEEBRgRAQQEQkAEiBUUNASAFQfsAOgAAIANBATYCjAEgAyAFNgKIASADQoCAgIAQNwKAASABIAIgA0GAAWogBBD5CAsgBEUNBQJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgRPDQcgASACQQFqIgU2AgQgBCAFTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQegAaiABEJQKIAMoAmggAygCbCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgRFBEAgA0HYAGogARCUCiADKAJcIQEgAygCWCECDAELIAFBADoAkQEgA0HgAGogARCUCiADKAJgIQIgAygCZCIBIAQ6AJEBCyACQQFHDQALCyABKAIAQQFHDQEgASgCBCIEIAEoAggiB08NBSABIARBAWoiAjYCBCACIAdPDQUgASgCFCEFIAEgBEECaiICNgIEIAIgB08NBCABIARBA2oiCzYCBCADIAFBgAFqIgIoAgg2ApgBIAMgAikCADcDkAEgByALTQ0DIAEgBEEEajYC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EJABIgdFDQkgB0EAOgAUIAdBxObHADYCDCAHIAE2AgggB0KBgICAEDcCACACIAIoAgAiAUEBazYCACABQQFGBEAgAhAwCyADQRBqIAYQ8A4gAygCFCICQQBIDQMgAg0BQQEhBAwGCyADQawBaiAGEPEKIANBATYCqAEgAygCrAEiAigCACEBIAIgAUEBajYCACABQQBIDQQgAygCtAEhByADKAKwASEIIAIgAigCACIBQQFqNgIAIAFBAEgNBEEYEJABIgVFDQggBUEAOgAUIAVBhOfHADYCDCAFQQE2AgggBUKBgICAEDcCACACIAIoAgAiAUEBazYCACABQQFGBEAgAygCrAEQMAsgA0EIaiAGEPAOIAMoAgwiBEEASA0CIARFBEBBASEGDAQLIAMoAgghASAEEJABIgYNAQwJCyADKAIQIQEgAhCQASIERQRADAkLIAJFDQQgBCABIAL8CgAADAQLIARFDQEgBiABIAT8CgAADAELEJ4VAAtB5AAQkAEiAQRAIAEgBTYCYCABQQA6AFwgASAHNgJMIAEgCDYCSCABIAI2AkQgAUEBNgJAIAFBGzoAPCABQX82AiwgASAHNgIoIAEgCDYCJCABIAI2AiAgAUEBNgIcIAFBfzYCECABQoGAgIAQNwIIIAFCgYCAgBA3AgAgAEEAOwFEIAAgBDYCQCAAIAY2AjwgACAENgI4IABCBDcDMCAAQgE3AyggACABNgIkIABBATYCICAAQX42AgAMAwsMAwsAC0HkABCQASIBRQ0BIAEgBzYCYCABQQA6AFwgASAINgJYIAEgCTYCVCABIAU2AlAgAUKAgICAEDcCSCABQoCAgIAQNwJAIAFBGDoAPCABQX82AiwgASAINgIoIAEgCTYCJCABIAU2AiAgAUEBNgIcIAFBfzYCECABQoGAgIAQNwIIIAFCATcCACAAQgQ3AzAgAEIBNwMoIABBADsBRCAAIAI2AkAgACAENgI8IAAgAjYCOCAAIAE2AiQgAEEBNgIgIABBfjYCAAsgA0HQAWokAA8LQbjwyQBBAToAAAALQbjwyQBBAToAAAALQQEQpxQAC/cWARZ/IwBBsAdrIgMkACACKAIIIQYgA0IANwOoASADQoCAgICgBjcDoAEgA0KAgICAwAA3A5gBQX8hCSADQX82AiggA0EANgIQIANCADcDsAEgA0EAOgDAASADQoCAgIBwNwO4ASADIAIoAgA2ApABIAMgAigCBCICNgKMASADIAI2AogBIAMgAiAGQfAAbGo2ApQBIANBATYCyAEgBkEybiICIAYgAkEybEZrIRUgA0GoBGohCiADQcAGaiICQRRqIQ8gAkEIaiELIANB0QZqIRAgA0HjBWohESADQaQEaiESIANBoARqIRYgA0H0AmohFyADQeACaiEMIANB/AFqIQ0gA0HUAWohEyACQQRqIRQgA0EQaiEOQQAhAkEAIQYCQAJAAkADQCADQX82AggCQAJAIAIgAygCtAFJDQACQAJAIAMoArABIgcgAksNACACIAdGBEAgAygCoAEgAiADKAK4AWtLDQEgAy0AwAENAyADQcAGaiAOEKkJDAILIAMtAMABDQIgA0HABmogDhDpAQwBCyADQcAGaiAOIAIQkQoLIAMoAgghByADKALQBiIEQX9HDQEgByEJCyADIAlBAWo2AgggA0EIahCaDCAAQX42AgAMBAsgAyADKQPIBjcD2AMgAyADKQPABjcD0AMgDSAPQdwA/AoAACADIAdBAWo2AgggFCADKQPYAzcCCCAUIAMpA9ADNwIAIAMgAykCwAY3A9ABIAMgAykCyAY3A9gBIAMgAygC0AY2AuABIAMgEykCADcD6AEgAyATKQIINwPwASADQX42AvACIAMgAjYC3AIgAyAENgL4ASADIANBCGo2AtgCQRIQkAEiAkUNASACQd3RxQAvAAA7ABAgAkHV0cUAKQAANwAIIAJBzdHFACkAADcAACADQRI2AsgGIAMgAjYCxAYgA0ESNgLABiABIANBwAZqIgQQ/A1BARCQASICRQ0CIAZBAWohByACQSg6AAAgA0EBNgLIBiADIAI2AsQGIANBATYCwAYgASAEEPwNIAMoAvACIQIgAygC+AEhBANAIANBfjYC8AICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkF+RwRAIAMgAjYCoAQgAyAMKQMINwOYBCADIAwpAwA3A5AEIBIgF0HcAPwKAAAMAQsgAygC+AEhAiADQX82AvgBIAJBf0cEQCADIAMpA/ABNwOYBCADIAMpA+gBNwOQBCADIAI2AqAEIBIgDUHcAPwKAABBfyEEDAILAkACQCADKALYAiICKAIARQRAIAMoAtwCIQQgAkF/NgIA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ACADQdQAbGoiASgCAEGCgICAeEcNBiACIAEpAgg3AgggAiAAQeAAajYCECACIABBEGo2AhQgAkF/NgIYCyACIAJBGGqtQoCAgIDwGoQ3A2AgAiACQRRqrUKAgICA4CaENwNYIAIgAkEQaq1CgICAgPAmhDcDUCACIAJBCGqtQoCAgIDQAYQ3A0ggBSAGQcyQwgAgAkHIAGoQsQkhASACKAIYIgBBf0YNACAARQ0AIAIoAhwiBkEEaygCACIFQXhxIQMgA0EEQQggBUEDcSIFGyAAakkNASAFQQBHIAMgAEEnaktxDQIgBhC8BQsgAkGgAmokACABDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAEgA0HMu8QAEIUTAAsgAyAEQcy7xAAQhRMAC0HMu8QAEJ0VAAtB8LXJAEE3IAJBnwJqQfSWxgBBqLbJABDaEgALsBMBFX8jAEFAaiIDJABBASECAkAgASgCAEEBRgRAIAEoAgQiBiABKAIITw0BIAEgBkEBajYCBAsgASgCjAEiAiABKAKIASIMRgRAIAEoAiAhDiABKAIsIQoLIAEoAhQhBgJAIAEtAJABQQJHBEAgBiEHDAELIAYhByABLQCRAUUNACABKAIMIAZGBEAgAUEMahCaEgsgASgCECAGQRRsaiICIAw2AgggAkEANgIEIAJBADoAACABIAZBAWoiBzYCFCABKAKMASECCyACIAxGBEAgASgCLCABKAIgaiEPCyABKAJ4IREgASgCXCESAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NASABIAJBAWo2AgQLIAMgASgCiAEiAjYCKCADIAEpAoABNwMgAkAgAiABKAKEAU8NACABQYABaigCACACai0AAEEiRw0AIAEgAkEBajYCiAFBASEECwJAAkACQCABLQB8QQFGBEBBARCQASIFRQ0BIAVBIjoAACADQQE2AjwgAyAFNgI4IANCgICAgBA3AjAgASACIANBMGogBBD5CAsgBEUNAiABKAIAQQFGBEAgASgCBCICIAEoAghPDQMgASACQQFqNgIEC0EAIQRBACEFIAEoAowBIgggASgCiAEiAkYEQCABKAIgIQUgASgCLCEECyABKAIUIQkgAS0AkAFBAkcNASABLQCRAUUNASABKAIMIAlGBEAgAUEMahCaEiABKAKMASEICyABIAlBAWo2AhQgASgCECAJQRRsaiILIAI2AgggC0EANgIEIAtBADoAAAwBC0EBEKcUAAtBACELIAIgCEYEQCABKAIsIAEoAiBqIQsLIAEoAnghEyABKAJcIRQCQAJAAkACQAJAAkAgASgCAEEBRgRAIAEoAgQiDSABKAIIIhVPDQQgASANQQFqIhY2AgQgAS0AkQEiEA0BIBUgFk0NBCABIA1BAmo2AgQMBQsgAS0AkQEiEEUNBCABQQA6AJEBDAELIAFBADoAkQEgFSAWTQ0BIAEgDUECajYCBAsgA0EYaiABENgDIAMoAhwhASADKAIYQQFxRQRAA0AgA0EQaiABENgDIAMoAhQhASADKAIQQQFxRQ0ACwsgASAQOgCRAQwDCyABIBA6AJEBCyABLQCQAUEBRg0CAkAgAS0AkQFFDQACQCACIAhGBEAgCyABKAIgIgIgASgCLCIIaiINSSANIAtrQQFGcQ0CIAIgBU8EQCABIAU2AiAgBSECCyAEIAhLDQEgASAENgIsDAELIAIgCE0NASABIAI2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIYIAJGBEAgAUEYahCjEgsgASACQQFqNgIgIAEoAhwgAmpBOzoAAAsCQCABLQB8QQFHDQAgAS0AkQFFDQAgAUHUAGpBOyAUQQAgASgCeCATTRsQkwULIAEtAJABQQJHDQIgAS0AkQFFDQIgCSABKAIUSw0CIAEgCTYCFAwCCyADQQhqIAEQ2AMgAygCDCEBIAMoAghBAXENAANAIAMgARDYAyADKAIEIQEgAygCAEEBcUUNAAsLAkAgAS0AkAEiCEEBRgR/IAEtAJEBRQ0BAkAgAiABKAKMASIIRgRAIAsgASgCLCICIAEoAiAiCGoiDUkgDSALa0EBRnENAyAFIAhNBEAgASAFNgIgCyACIARJDQEgASAENgIsIAQhAgwBCyACIAhNDQIgASACNgKMAUEAIQIgAUEANgIsIAFBADYCIAsgASgCJCACRgRAIAFBJGoQoxILIAEoAiggAmpBOzoAACABIAJBAWo2AiwgAS0AkAEFIAgLQf8BcUECRw0AIAEtAJEBRQ0AAkAgCSABKAIUIgJJBEAgASgCECAJQRRsaiIELQAADQEgBCACNgIEIAEoAogBIQUgASgCFCIEIAEoAgxGBEAgAUEMahCaEgsgASgCECAEQRRsaiICIAU2AhAgAkEANgIIIAIgCTYCBCACQYH2ADsBACABIARBAWo2AhQMAgsgCSACQZyKyAAQhRMAC0Ggq8kAQShBrIrIABCvFAALIAFB1ABqIQUCQCABLQB8RQ0AIAEtAJEBRQ0AIAVBOyAUQQAgASgCeCATTRsQkwULQQAhAgJAIAEoAogBIgQgASgChAFPDQAgASgCgAEgBGotAABBIkcNACABIARBAWo2AogBQQEhAgsgAS0AfEEBRgRAQQEQkAEiCUUNCSAJQSI6AAAgA0EBNgI8IAMgCTYCOCADQoCAgIAQNwIwIAEgBCADQTBqIAIQ+QgLIAJFDQAgAS0AkAEiAkEBRw0EIAEtAJEBRQ0MIAEoAowBIgIgDEcNAiAPIAEoAiwiAiABKAIgIgdqIgRJIAQgD2tBAUZxDQwgByAOTwRAIAEgDjYCIAsgAiAKSQ0DIAEgCjYCLCAKIQIMAwsgASADKAIoNgKIASABIAMpAyA3AoABIAcgASgCFEsNACABIAc2AhQLQQEhAiABLQCQAUEBRg0LIAEtAJEBRQ0FIAEoAowBIgIgDEcNAyAPIAEoAiAiAiABKAIsIgdqIgRJIAQgD2tBAUZxDQUgAiAOTwRAIAEgDjYCICAOIQILIAcgCkkNBCABIAo2AiwMBAsgAiAMTw0JIAEgDDYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAiQgAkYEQCABQSRqEKMSCyABKAIoIAJqQTw6AAAgASACQQFqNgIsIAEtAJABIQILIAJB/wFxQQJHDQcgAS0AkQFFDQcgASgCFCICIAZNDQQgASgCECAGQRRsaiIHLQAADQUgByACNgIEIAEoAogBIQogASgCFCIHIAEoAgxGBEAgAUEMahCaEgsgASgCECAHQRRsaiICIAo2AhAgAkEANgIIIAIgBjYCBCACQYH4ADsBACABIAdBAWo2AhQMBwsgAiAMTw0BIAEgDDYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAhggAkYEQCABQRhqEKMSCyABIAJBAWo2AiAgASgCHCACakE8OgAAC0EBIQIgAS0AfEEBRw0DIAEtAJEBRQ0DIAFB1ABqQTwgEkEAIAEoAnggEU0bEJMFDAMLQQEQpxQACyAGIAJBnIrIABCFEwALQaCryQBBKEGsisgAEK8UAAsgAS0AkAFBAkcNASABLQCRAUUNASAGIAEoAhRLDQEgASAGNgIUDAELQQAhAiABLQB8RQ0AIAEtAJEBRQ0AIAVBPCASQQAgASgCeCARTRsQkwULIAAgATYCBCAAIAI2AgAgA0FAayQAC8MTAhF/BH4jAEGwAWsiAyQAAkACQAJAQfADEJABIgcEQCAHQQA7AeoDIAdBADYC4AIgASgCCCEEIAEoAgQhAiADIAEoAgA2AjggAyACNgI0IAMgAjYCMCADQX02AhAgAyACIARBMGxqIgw2AjwgA0GEAWohCiADQYABaiEPIANBFGohC0F9IQYgByEEA0ACQAJAAn8gBkF9RwRAIAMgAykDCDcDqAEgAyADKQMANwOgASACIQEgBiENIAsMAQsgAiAMRg0BIAMgAkEwaiIBNgI0IAMgAikDADcDoAEgAyACKQMINwOoASACKAIQIQ0gAkEUagshAiANQX5HDQEgASECCyADQX02AhAgDCACa0EwbiEEAkAgAiAMRwRAIAJBEGohAQNAIAFBEGsoAgAiCARAIAFBDGsoAgAiBUEEaygCACICQXhxIQYgBkEEQQggAkEDcSICGyAIakkNAyACQQBHIAYgCEEnaktxDQcgBRC8BQsgASgCAEF/RwRAIAEQhwQLIAFBMGohASAEQQFrIgQNAAsLAkAgAygCOCIFBEAgAygCMCIEQQRrKAIAIgFBeHEhBiAGQQRBCCABQQNxIgIbIAVBMGwiAXJJDQEgAkEARyAGIAFBJ2pLcQ0GIAQQvAULAkAgEEUNACAHIQQgECEJA0ACQAJAIAQvAeoDIgEEQCAEIAFBAWsiDkECdGoiAigC9AMiAS8B6gMiCkEFTw0CQQUgCmtB//8DcSIMIAIoAvADIhEvAeoDIgVLDQEgESAFIAxrIgs7AeoDIAFBBTsB6gMgAUHkAmohDyAKQQxsIgIEQCAPIAxBDGxqIA8gAvwKAAALIApBBXQiAgRAIAEgDEEFdGogASAC/AoAAAsgESALQQxsaiENIAUgC0EBaiIIayICQQxsIgYEQCAPIA1B8AJqIAb8CgAACyACQQV0IgUEQCABIBEgCEEFdGogBfwKAAALIAMgESALQQV0aiICKQMYNwOIASADIAIpAxA3A4ABIAMgAikDCDcDeCADIAIpAwA3A3AgAyAEIA5BDGxqIgsoAuwCNgJIIAMgCykC5AI3A0AgDUHsAmooAgAhAiALIA1B5AJqKQIANwLkAiALIAI2AuwCIAMgBCAOQQV0aiICKQMYNwMYIAMgAikDEDcDECADIAIpAwg3AwggAyACKQMANwMAIAIgAykDcDcDACACIAMpA4ABNwMQIAIgAykDiAE3AxggAiADKQN4NwMIIAYgD2oiAiADKQNANwIAIAIgAygCSDYCCCABIAVqIgIgAykDGDcDGCACIAMpAxA3AxAgAiADKQMINwMIIAIgAykDADcDACAJQQFGDQQgDEECdCEFIAFB8ANqIQQgCkECdEEEaiICBEAgBCAFaiAEIAL8CgAACyAFBEAgBCARIAhBAnRqQfADaiAF/AoAAAsgASgC8AMiAkEAOwHoAyACIAE2AuACIAEoAvQDIgJBATsB6AMgAiABNgLgAiABKAL4AyICQQI7AegDIAIgATYC4AIgASgC/AMiAkEDOwHoAyACIAE2AuACIAEoAoAEIgJBBDsB6AMgAiABNgLgAiABKAKEBCICQQU7AegDIAIgATYC4AIMAgtB/PPGAEEZQZj0xgAQrxQAC0Go9MYAQSdB0PTGABCvFAALIAEhBCAJQQFrIgkNAAsLIAAgEjYCCCAAIBA2AgQgACAHNgIAIANBsAFqJAAPCwwFCwwECyAKIAIpAgA3AgAgCiACKQIINwIIIAogAikCEDcCECAKIAIoAhg2AhggAyADKQOoATcDeCADIAMpA6ABNwNwIAMgDTYCgAECQCABIAxGBEBBfiEODAELIAMgAUEwaiICNgI0IAEoAhAhBiABKQMAIRYgASkDCCEUIAEpAhwhFSABKQIkIRMgASgCLCEFIAsgASkCFDcCACALIAU2AhggCyATNwIQIAsgFTcCCCADIBQ3AwggAyAWNwMAQX4hDiAGQX5GBEAgAiEBDAELAkAgAygCeCIBIAMoAghHDQAgAygCdCIOIAMoAgQgARCPEw0AAkAgAygCcCIIBEAgDkEEaygCACIBQXhxIQUgBUEEQQggAUEDcSIBGyAIakkNByABQQBHIAUgCEEnaktxDQEgDhC8BQsgDUF/Rg0DIA8QhwQMAwsMBAsgAiEBIAYhDgsgAyAONgIQIAMgAykDcDcDYCADIAMpA3g3A2ggAyAKKQIAIhQ3A0AgAyAKKQIIIhU3A0ggAyAKKQIQIhM3A1AgAyAKKAIYIgI2AlggAyACNgKIASADIBM3A4ABIAMgFTcDeCADIBQ3A3ACQAJAIAQvAeoDIgJBC08EQEEAIQgCQANAIAQoAuACIgRFBEBBoAQQkAEiBUUNCiAFIAc2AvADIAVBADsB6gMgBUEANgLgAiAQQQFqIhBFDQQgB0EAOwHoAyAHIAU2AuACIAUhBCAQIQgMAgsgCEEBaiEIIAQvAeoDQQpLDQALIAchBQtB8AMQkAEiCUUNByAJQQA7AeoDIAlBADYC4AIgCEEBayIGRQ0CA0BBoAQQkAEiAkUNCCACIAk2AvADIAJBADsB6gMgAkEANgLgAiAJQQA7AegDIAkgAjYC4AIgAiEJIAZBAWsiBg0ACwwCCyAEIAJBAWo7AeoDIAMpA2AhEyAEIAJBDGxqIgEgAygCaDYC7AIgASATNwLkAiAEIAJBBXRqIgEgDTYCACABIAMoAogBNgIcIAEgAykDgAE3AhQgASADKQN4NwIMIAEgAykDcDcCBCADKAI0IQIgAygCPCEMIAMoAhAhBiASQQFqIRIMAgtBkOTIABCdFQALAkAgBC8B6gMiBkELSQRAIAQgBkEBaiIHOwHqAyAEIAZBDGxqIgIgAygCaDYC7AIgAiADKQNgNwLkAiAEIAZBBXRqIgIgDTYCACACIAMpA0A3AgQgAiADKQNINwIMIAIgAykDUDcCFCACIAMoAlg2AhwgBCAHQQJ0aiAJNgLwAyAJIAc7AegDIAkgBDYC4AIgCEUNAQJAIAhBA3EiCUUEQCAIIQIMAQsgCCECA0AgAkEBayECIAQgBC8B6gNBAnRqKALwAyEEIAlBAWsiCQ0ACwsgCEEESQ0BA0AgBCAELwHqA0ECdGooAvADIgcgBy8B6gNBAnRqKALwAyIHIAcvAeoDQQJ0aigC8AMiByAHLwHqA0ECdGooAvADIQQgAkEEayICDQALDAELQcD2xgBBIEHg9sYAEK8UAAsgASECIA4hBiAFIQcgEkEBaiESDAALAAsMAgtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQbjwyQBBAToAAAALjRMCCH8CfiMAQdABayIDJAAgAyACNgIEIAMgASkDACIMNwMIIAMgASkDCDcDECADIAEpAxA3AxggAyABKQMYNwMgIAMgAikCBDcCLCADIAIoAgAiCDYCKEEVIQQCQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBDiAMpyIFQQ1rIAVBDE0bDg4AAQIDBAUOGSIPBgcTFBkLIAgOAh8HGAsgCA4GBxcXFxceFwsgCA4HBxYWFhYWHRYLIAgOAwccCBULIAgOCQgUFBQUFBQUGxQLIAMoAhQiBkEFdCEIIAMoAhAhCSADKAIMIQcCfyAGRQRAIAkiASEFQX8MAQsgA0GIAWohCiAIIQQgCSEBA0ACQCADIAEpAxg3A8ABIAMgASkDEDcDuAEgAyABKQMINwOwASADIAEpAwA3A6gBIANBgAFqIANBqAFqIAIQngIgAUEgaiEFIAMoAoABQQFxDQAgASAKKQMYNwMYIAEgCikDEDcDECABIAopAwg3AwggASAKKQMANwMAIAUhASAEQSBrIgQNAQweCwsgAyADKQKUATcDaCADIAMpApwBNwNwIAMgAygCpAE2AnggAykCjAEhCyADKAKIASEEIAMoAoQBCyEKIAEgCWsgCCAJaiICIAVHBEAgAiAFa0EFdiECA0AgBRCIBCAFQSBqIQUgAkEBayICDQALC0EFdiEGIApBf0YNGyADIAMoAng2AmAgAyADKQNwNwNYIAMgAykDaDcDUCABIAlHBEAgCSEBA0AgARCIBCABQSBqIQEgBkEBayIGDQALCyAHBEAgCUEEaygCACICQXhxIQEgASAHQQV0IgVBBEEIIAJBA3EiAhtySQ0QIAJBAEcgASAFQSdqS3ENESAJELwFCyAAIAs3AgwgACAENgIIIAAgCjYCBCAAIAMpA1A3AhQgACADKQNYNwIcIAAgAygCYDYCJCAAQQE2AgAMGQsgCA4FCQoSGRkSCyAIQQFrDgIKGBELIAMgASgCDCICNgKwASADIAEpAgQ3A6gBIANBgAFqIAMoAqwBIgEgAhDzCCADLQCAAQ0VIAMpA4gBIgtCIIghDCADKAKoASICBEAgASACENkSCyAMpyEGIAunDBQLIAMgAy0ADDoAqAEgAyADQagBaq1CgICAgLADhDcDgAEgA0HEAGpBz63AACADQYABahC4DCADKQJIIgtCIIinIQYgAygCRCEHIAunIQlBDSEEDBgLIAMpAxAiC0IgiKchBiALpyEJQQ0hBCADKAIMIQcMFwsgAyADKQMQNwOoASADIANBqAFqrUKAgICAIIQ3A4ABIANBOGogA0GAAWoQ0BIgAykCPCILQiCIpyEGIAMoAjghByALpyEJQQ0hBAwWCyADKQMQIgtCIIinIQYgC6chCUEYIQQMFQsgA0EANgKwASADQoCAgIAQNwKoASADQYABaiICIAFBBGoQ+AkgA0GoAWogAkEkEPASGkEADQkgAykCrAEiC0IgiKchBiADKAKoASEHIAunIQlBDSEEDBQLIAhBCUcNCgwRCyAIQQpHDQkMEAsgASgCDCABKAIIIQUgA0GAAWohBCMAQSBrIgIkACACQQA2AgggAkKAgICAEDcCACACQeTtxgA2AhAgAkKggICABjcCFCACIAI2AgwgAUEIaiACQQxqEPcBBEBB8LXJAEE3IAJBH2pB/O3GAEGotskAENoSAAsgBCACKAIINgIIIAQgAikCADcCACACQSBqJAAgAykChAEiC0IgiKchBiADKAKAASEHIAunIQlBDSEEIAVFDREgBUECdBDZEgwRCyADIAEpAxg3A5ABIAMgASkDEDcDiAEgAyABKQMINwOAASADQagBaiADQYABahDKCSADKAKoAQ0KQdD5xgAQnRUACyADKQMQIgtCIIinIQYgC6cMCgsgCEELRw0FDAwLIAMgCEECdEGk0MkAaigCACIBNgKAASADKAIMIQIgA0GAAWoQwBIgASACRw0DDAULQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HwtckAQTcgA0HPAWpB/O3GAEGotskAENoSAAsgAygCDCIBQQVGBEAgAygCECADIAhBAnRB2NDJAGooAgAiAjYCgAEoAgAgA0GAAWoQwBIgAkYNAiADKAIMIQELIAFBDEYNAgsgAyADKQMgNwOYASADIAMpAxg3A5ABIAMgAykDEDcDiAEgAyADKQMINwOAASADIANBKGoiASgCCDYCsAEgAyABKQIANwOoASADIANBgAFqIgGtQoCAgICQKYQ3A2ggAEEIakHPrcAAIANB6ABqIgIQuAwgAyADQagBaq1CgICAgKAphDcDaCAAQRRqQc+twAAgAhC4DCAAQoGAgIDgADcDACABEIgEDAwLQRohBSADKAIQIQkgAygC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gAEgAkGQqckAKQMANwKsASACQZipyQApAwA3ArQBIAJBgAFqIgNB65nJAEEEELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBgLIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcD0AFBwPDJACALQgF8NwMAIAJBADYC6AEgAkKAgICAgAE3A+ABIAIgCjcD2AEgAkKAgICAcDcDwAEgAkGQqckAKQMANwLsASACQZipyQApAwA3AvQBIAJBwAFqIgNB75nJAEEDELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBcLIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcDkAJBwPDJACALQgF8NwMAIAJBADYCqAIgAkKAgICAgAE3A6ACIAIgCjcDmAIgAkKAgICAcDcDgAIgAkGQqckAKQMANwKsAiACQZipyQApAwA3ArQCIAJBgAJqIgNB8pnJAEEEELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBYLIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcD0AJBwPDJACALQgF8NwMAIAJBADYC6AIgAkKAgICAgAE3A+ACIAIgCjcD2AIgAkKAgICAcDcDwAIgAkGQqckAKQMANwLsAiACQZipyQApAwA3AvQCIAJBwAJqQfCXyQBBBBC3DCIDRQ0MDBQLIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcDkANBwPDJACALQgF8NwMAIAJBADYCqAMgAkKAgICAgAE3A6ADIAIgCjcDmAMgAkKAgICAcDcDgAMgAkGQqckAKQMANwKsAyACQZipyQApAwA3ArQDIAJBgANqIgNB9pnJAEEEELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBQLIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcD0ANBwPDJACALQgF8NwMAIAJBADYC6AMgAkKAgICAgAE3A+ADIAIgCjcD2AMgAkKAgICAcDcDwAMgAkGQqckAKQMANwLsAyACQZipyQApAwA3AvQDIAJBwANqIgNB+pnJAEEGELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBMLIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcDkARBwPDJACALQgF8NwMAIAJBADYCqAQgAkKAgICAgAE3A6AEIAIgCjcDmAQgAkKAgICAcDcDgAQgAkGQqckAKQMANwKsBCACQZipyQApAwA3ArQEIAJBgARqIgNBhJrJAEEIELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBILIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcD0ARBwPDJACALQgF8NwMAIAJBADYC6AQgAkKAgICAgAE3A+AEIAIgCjcD2AQgAkKAgICAcDcDwAQgAkGQqckAKQMANwLsBCACQZipyQApAwA3AvQEIAJBwARqIgNBjJrJAEEFELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBELIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcDkAVBwPDJACALQgF8NwMAIAJBADYCqAUgAkKAgICAgAE3A6AFIAIgCjcDmAUgAkKAgICAcDcDgAUgAkGQqckAKQMANwKsBSACQZipyQApAwA3ArQFIAJBgAVqIgNB7LHJAEEGELcMIgFFDQwgAEF/NgIQIAAgATYCACADEMMLDBALIAICfiADQQFxBEBByPDJACkDACEKQcDwyQApAwAMAQsgAkHABmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDyAYiCjcDACACKQPABgsiCzcD0AVBwPDJACALQgF8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AQsgAUEAOgCRASADQdgAaiABEJQKIAMoAlghAiADKAJcIgEgBDoAkQELIAJBAUcNAAsLQQAhAgJAIAEoAogBIgQgASgChAFPDQAgASgCgAEgBGotAABBPUcNACABIARBAWo2AogBQQEhAgsgAS0AfEEBRgRAQQEQkAEiCEUNCSAIQT06AAAgA0EBNgKsASADIAg2AqgBIANCgICAgBA3AqABIAEgBCADQaABaiACEPkICyACRQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiCDYCBCAEIAhNDQEgASACQQJqNgIECyABQQA6AJEBIANByABqIAEQlAogAygCSCADKAJMIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiBEUEQCADQThqIAEQlAogAygCPCEBIAMoAjghAgwBCyABQQA6AJEBIANBQGsgARCUCiADKAJAIQIgAygCRCIBIAQ6AJEBCyACQQFHDQALCyADQTBqIAEQ8AEgAygCNCEBIAMoAjBBAXENAAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgRPDQIgASACQQFqIgg2AgQgBCAITQ0BIAEgAkECajYCBAsgAUEAOgCRASADQShqIAEQlAogAygCKCADKAIsIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiBEUEQCADQRhqIAEQlAogAygCHCEBIAMoAhghAgwBCyABQQA6AJEBIANBIGogARCUCiADKAIgIQIgAygCJCIBIAQ6AJEBCyACQQFHDQALCyABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NASABIAJBAWoiCDYCBCAEIAhNDQEgASACQQJqNgIECyADQRBqIAEQngMgAygCFCEBAkAgAygCEEEBcQ0AIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NASABIAJBAWo2AgQLIANBCGogARDtCyADKAIMIQEgAygCCEEBcQ0AA0AgAyABEO0LIAMoAgQhASADKAIAQQFxRQ0ACwsgAS0AkAEiAkEBRw0EIAEtAJEBRQ0MIAEoAowBIgIgB0cNAiAL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BDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEIajYCHCACIAJBFGo2AiAgACACQSBqENcBDQggAigCIEGkssgAQQIgAigCJCgCDBEAAA0ICyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBwtBASEDIAEoAgAiBEHKmskAQQQgASgCBCIGKAIMIgURAAANBiAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQggACABENcBRQ0BDAgLIARBnePCAEECIAURAAANByACQQE6AAggAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEIajYCHCACIAJBFGo2AiAgACACQSBqENcBDQcgAigCIEGkssgAQQIgAigCJCgCDBEAAA0HCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBgtBASEDIAEoAgAiBEGsmskAQQUgASgCBCIGKAIMIgURAAANBSAAQQFqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQcgACABEJgURQ0BDAcLIARBnePCAEECIAURAAANBiACQQE6AAggAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEIajYCHCACIAJBFGoiBDYCICAAIAJBIGoQmBQNBiAEQaSyyABBAhD9CA0GCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBQtBASEDIAEoAgAiBEHOmskAQQYgASgCBCIGKAIMIgURAAANBCAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQYgAiAANgIgIAFBgZvJAEELQYybyQBBBiACQSBqQa0CEJIRRQ0BDAYLIARBnePCAEECIAURAAANBSACQQE6ABMgAiAGNgIYIAIgBDYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkETajYCHCACIAJBFGo2AiAgAiAANgIIIAJBIGpBgZvJAEELQYybyQBBBiACQQhqQa0CEJIRDQUgAigCIEGkssgAQQIgAigCJCgCDBEAAA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBAsgASgCAEHUmskAQQYgASgCBCgCDBEAAARAQQEhAwwECwJAIAEtAApBgAFxRQRAIAEoAgBBl+PCAEEDIAEo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IAFBAUcNFAsMFgsCQCAAKAIERQRAIAAoAggiAigCACEBIAIgAUEBazYCACABQQFGDQEMFAsgACgCCCICKAIAIQEgAiABQQFrNgIAIAFBAUcNEwsMFQsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUYEQCAAKAIEEDALIAAoAgwiAigCACEBIAIgAUEBazYCACABQQFHDREgACgCDBAwDwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUYEQCAAKAIEEDALIAAoAgwiAigCACEBIAIgAUEBazYCACABQQFHDRAgACgCDBAwDwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUcNDwwRCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRw0ODBALIAAoAhAiAigCACEBIAIgAUEBazYCACABQQFHDQ0gACgCEBAwDwsgACgCFCICKAIAIQEgAiABQQFrNgIAIAFBAUcNDCAAKAIUEDAPCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRw0LDA0LIAAoAgQiAigCACEBIAIgAUEBazYCACABQQFHDQoMDAsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUcNCQwLCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRw0IDAoLIAAoAgwiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCDBAwCyAAKAIEIgFFDQcgASABKAIAIgFBAWs2AgAgAUEBRw0HDAkLIAAoAgwiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCDBAwCyAAKAIEIgFFDQYgASABKAIAIgFBAWs2AgAgAUEBRw0GDAgLIAAoAgQiAigCACEBIAIgAUEBazYCACABQQFHDQUMBwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUcNBAwGCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRw0DDAULIAAoAgQiAigCACEBIAIgAUEBazYCACABQQFHDQIMBAsCQCAAKAIERQRAIAAoAggiAigCACEBIAIgAUEBazYCACABQQFGDQEMAwsgACgCCCICKAIAIQEgAiABQQFrNgIAIAFBAUcNAgsMBAsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUcNACAAKAIEEDALDwsgACgCCCABENkS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AkBBFCABayIAIAIoAgAgAigCCCIDa0sEQCACIAMgABDEESACKAIIIQMMAQsgAUEURg0BCyAARQ0AIAIoAgQgA2ogBUEIaiABaiAA/AoAAAsgAiAAIANqNgIIDAgLQRQhASAAKQMIIgtCP4chCSAJIAuFIAl9IglCkM4AWgRAA0AgBUEIaiABaiIAQQRrIAkiCiAJQpDOAIAiCUKQzgB+faciA0H//wNxQeQAbiIEQQF0LwCcmEk7AAAgAEECayADIARB5ABsa0H//wNxQQF0LwCcmEk7AAAgAUEEayEBIApC/8HXL1YNAAsLAkAgCULjAFgEQCAJpyEADAELIAmnIgNB//8DcUHkAG4hACABQQJrIgEgBUEIamogAyAAQeQAbGtB//8DcUEBdC8AnJhJOwAACwJAIABBCk8EQCABQQJrIgEgBUEIamogAEEBdC8AnJhJOwAADAELIAFBAWsiASAFQQhqaiAAQTByOgAACyALQgBTBEAgAUEBayIBIAVBCGpqQS06AAALAkACQEEUIAFrIgAgAigCACACKAIIIgNrSwRAIAIgAyAAEMQRIAIoAgghAwwBCyABQRRGDQELIABFDQAgAigCBCADaiAFQQhqIAFqIAD8CgAACyACIAAgA2o2AggMBwsgACsDCCIMvUL///////////8Ag0KAgICAgICA+P8AWgRAIAIoAgAgAigCCCIBa0EDTQRAIAIgAUEEEMQRIAIoAgghAQsgAiABQQRqNgIIIAIoAgQgAWpB7uqx4wY2AAAMBwsgDCAFQQhqEPYBIQECQAJAIAIoAgAgAigCCCIAayABSQRAIAIgACABEMQRIAIoAgghAAwBCyABRQ0BCyABRQ0AIAIoAgQgAGogBUEIaiAB/AoAAAsgAiAAIAFqNgIIDAYLIAAoAgghAiAAKAIEIQYgASgCACIAKAIIIgMgACgCAEYEQCAAIANBARDEESAAKAIIIQMLIAAgA0EBaiIENgIIIAAoAgQgA2pB2wA6AAAgAgRAIAYgARDKAiACQQFHBEAgBkEwaiEDIAJBMGxBMGshBANAIAEoAgAiACgCCCICIAAoAgBGBEAgACACQQEQxBEgACgCCCECCyAAIAJBAWo2AgggACgCBCACakEsOgAAIAMgARDKAiADQTBqIQMgBEEwayIEDQALCyABKAIAIgEoAggiACABKAIA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BUEBRgRAIAAoAhAhBSACIAQ2AgggASADQQQQlgggAiAFNgIIIAEgA0EEEJYIIAIgACgCFDYCCCABIANBBBCWCAwECyACIAQ2AgggASACQQhqQQQQlggMAwsgAiAAKAIIIgU2AgggASACQQhqIgNBBBCWCCAAKAIMIQQCQCAFQQFGBEAgACgCECEFIAIgBDYCCCABIANBBBCWCCACIAU2AgggASADQQQQlgggAiAAKAIUNgIIIAEgA0EEEJYIDAELIAIgBDYCCCABIAJBCGpBBBCWCAsgACgCICEDIAIgACgCJCIANgIIIAEgAkEIakEEEJYIIABFDQIgAEHIAWwhBANAIAMgARDaAiADQcgBaiEDIARByAFrIgQNAAsMAgsgAiAAKAKsATYCCCABIAJBCGoiBEEEEJYIIAIgACgCmAE2AgggASAEQQQQlgggAiAAKAKcATYCCCABIARBBBCWCCACIAAoAnwiA0F/RzYCCCABIARBBBCWCAJAIANBf0YNACAAKAKAASEDIAIgACgChAEiBTYCCCABIARBBBCWCCAFRQ0AIAMgBUHoAWxqIQQDQCADIAEQ2gIgA0HIAWogARC7AiAEIANB6AFqIgNHDQALCyACIAApAxAiCz4CCCABIAJBCGoiA0EEEJYIIAtCA1EEQCACIAApAxg3AwggASADQQgQlggLIAIgBjYCCCABIAJBCGoiA0EEEJYIIApCAVEEQCACIAApAwg3AwggASADQQgQlggLIAIgAC0AICIDQf8BRzYCCCABIAJBCGpBBBCWCCADQf8BRwRAIABBIGogARCiBQsgACgCdCEEIAIgACgCeCIDNgIIIAEgAkEIakEEEJYIIAMEQCAEIANBBnRqIQgDQCACQQMgBCgCACIDQRtrIANBGk0bIgM2AgggASACQQhqQQQQlggCQAJAAkACQAJAIANBAWsOAwECAwALIAIgBCgCBCIGNgIIIAEgAkEIaiIDQQQQlgggBCgCCCEFAkAgBkEBRgRAIAQoAgwhBiACIAU2AgggASADQQQQlgggAiAGNgIIIAEgA0EEEJYIIAIgBCgCEDYCCCABIANBBBCWCAwBCyACIAU2AgggASACQQhqQQQQlggLIAQoAhwgAiAEKAIgIgY2AgggASACQQhqIgNBBBCWCCAGIAEQiA8gAiAELQAkNgIIIAEgA0EEEJYIIAIgBC0AJSIFQQJHNgIIIAEgA0EEEJYIIAVBAkYNAyACIAU2AgggASADQQQQlggMAwsgAiAEKAIEIgY2AgggASACQQhqIgNBBBCWCCAEKAIIIQUCQCAGQQFGBEAgBCgCDCEGIAIgBTYCCCABIANBBBCWCCACIAY2AgggASADQQQQlgggAiAEKAIQNgIIIAEgA0EEEJYIDAELIAIgBTYCCCABIAJBCGpBBBCWCAsgAiAELQAYNgIIIAEgAkEIaiIDQQQQlgggAiAELQAZNgIIIAEgA0EEEJYIDAILIAQoAgggAiAEKAIMIgY2AgggASACQQhqIgNBBBCWCCAGIAEQiA8gAiAELQAQNgIIIAEgA0EEEJYIIAIgBC0AETYCCCABIANBBBCWCAwBCyAEKAIkIQMgAiAEKAIoIgU2AgggASACQQhqQQQQlgggBQRAIAMgBUEUbGohCQNAIAIgAygCACIHNgIIIAEgAkEIaiIFQQQQlgggA0EEaigCACEGAkAgB0EBRgRAIANBCGooAgAhByACIAY2AgggASAFQQQQlgggAiAHNgIIIAEgBUEEEJYIIAIgA0EMaigCADYCCCABIAVBBBCWCAwBCyACIAY2AgggASACQQhqQQQQlggLIAkgA0EUaiIDRw0ACwsgAiAELQA4NgIIIAEgAkEIaiIDQQQQlgggBCABELsCIAQoAjAgAiAEKAI0IgY2AgggASADQQQQlgggBiABEIgPCyAIIARBQGsiBEcNAAsLIAIgACgCiAEiA0F/RzYCCCABIAJBCGoiBUEEEJYIAkAgA0F/Rg0AIAAoAowBIQMgAiAAKAKQASIENgIIIAEgBUEEEJYIIARFDQAgBEHIAWwhBANAIAMgARDaAiADQcgBaiEDIARByAFrIgQNAAsLIAIgAC0AoAE6AAggASACQQhqIgNBARCWCCACIAAtAKEBOgAIIAEgA0EBEJYIIAIgAC0AogEiBEECRzYCCCABIANBBBCWCCAEQQJHBEAgAiAENgIIIAEgA0EEEJYICyAAKAK0ASEFIAIgACgCuAEiAzYCCCABIAJBCGpBBBCWCCADBEAgA0EMbCEEIAVBCGohAwNAIAEgA0EEaygCACADKAIAEJYIIAJB/wE6AAggASACQQhqQQEQlgggA0EMaiEDIARBDGsiBA0ACwsgACgCwAEhAyACIAAoAsQBIgA2AgggASACQQhqQQQQlgggAEUNASAAQcgBbCEEA0AgAyABENoCIANByAFqIQMgBEHIAWsiBA0ACwwBCyACIAAoAlw2AgggASACQQhqIgNBBBCWCCACIAAtAAhB/wFHIgQ2AgggASADQQQQlgggBEUNACAAQQhqIAEQogULIAJBEGokAAuwEAEMfyMAQYABayIDJABBASECAkAgASgCAEEBRgRAIAEoAgQiBiABKAIITw0BIAEgBkEBajYCBAsgASgCjAEiAiABKAKIASIHRgRAIAEoAiAhCiABKAIsIQkLIAEoAhQhBgJAIAEtAJABQQJHBEAgBiEFDAELIAYhBSABLQCRAUUNACABKAIMIAZGBEAgAUEMahCaEgsgASgCECAGQRRsaiICIAc2AgggAkEANgIEIAJBADoAACABIAZBAWoiBTYCFCABKAKMASECCyACIAdGBEAgASgCLCABKAIgaiELCyABKAJ4IQwgASgCXCENAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQEgASACQQFqNgIECyADIAEoAogBIgI2AmggAyABKQKAATcDYAJAIAJBfUsNACACQQJqIgggASgChAFLDQAgAUGAAWooAgAgAmovAABBwIABRw0AIAEgCDYCiAFBASEECyABLQB8QQFGBEBBAhCQASIIRQ0HIAhBwIABOwAAIANBAjYCfCADIAg2AnggA0KAgICAIDcCcCABIAIgA0HwAGogBBD5CAsCQCAERQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiCDYCBCAEIAhNDQEgASACQQJqNgIECyABQQA6AJEBIANB2ABqIAEQlAogAygCWCADKAJcIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiBEUEQCADQcgAaiABEJQKIAMoAkwhASADKAJIIQIMAQsgAUEAOgCRASADQdAAaiABEJQKIAMoAlAhAiADKAJUIgEgBDoAkQELIAJBAUcNAAsLIANBQGsgARDpAyADKAJEIQEgAygCQEEBcQ0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiAB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IAZBAWoiBTYCFCABKAKMASECCyACIAdGBEAgASgCLCABKAIgaiELCyABKAJ4IQwgASgCXCENAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQEgASACQQFqNgIECyADIAEoAogBNgJoIAMgASkCgAE3A2AgA0HYAGogARDnAyADKAJcIQECQCADKAJYQQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIETw0CIAEgAkEBaiIJNgIEIAQgCU0NASABIAJBAmo2AgQLIAFBADoAkQEgA0HQAGogARCUCiADKAJQIAMoAlQiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIANBQGsgARCUCiADKAJEIQEgAygCQCECDAELIAFBADoAkQEgA0HIAGogARCUCiADKAJIIQIgAygCTCIBIAQ6AJEBCyACQQFHDQALC0EAIQICQCABKAKIASIEIAEoAoQBTw0AIAEoAoABIARqLQAAQT1HDQAgASAEQQFqNgKIAUEBIQILIAEtAHxBAUYEQEEBEJABIglFDQggCUE9OgAAIANBATYCfCADIAk2AnggA0KAgICAEDcCcCABIAQgA0HwAGogAhD5CAsgAkUNAAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgRPDQIgASACQQFqIgk2AgQgBCAJTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQThqIAEQlAogAygCOCADKAI8IgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiBEUEQCADQShqIAEQlAogAygCLCEBIAMoAighAgwBCyABQQA6AJEBIANBMGogARCUCiADKAIwIQIgAygCNCIBIAQ6AJEBCyACQQFHDQALCyABKAIAQQFGBEAgASgCBCICIAEoAghPDQEgASACQQFqNgIECyADQSBqIAEQQAJAIAMoAiQiAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiCTYCBCAEIAlNDQEgASACQQJqNgIECyABQQA6AJEBIANB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lgggAiAAKAKcATYCCCABIAVBBBCWCCACIAAoAnwiA0F/RzYCCCABIAVBBBCWCAJAIANBf0YNACAAKAKAASEDIAIgACgChAEiBDYCCCABIAVBBBCWCCAERQ0AIAMgBEHoAWxqIQUDQCADIAEQ5wIgA0HIAWogARC6AiAFIANB6AFqIgNHDQALCyACIAApAxAiCz4CCCABIAJBCGoiA0EEEJYIIAtCA1EEQCACIAApAxg3AwggASADQQgQlggLIAIgBjYCCCABIAJBCGoiA0EEEJYIIApCAVEEQCACIAApAwg3AwggASADQQgQlggLIAIgAC0AICIDQf8BRzYCCCABIAJBCGpBBBCWCCADQf8BRwRAIABBIGogARChBQsgACgCdCEIIAIgACgCeCIDNgIIIAEgAkEIakEEEJYIIAMEQCADQQZ0IQlBACEFA0AgAkEDIAUgCGoiAygCACIEQRtrIARBGk0bIgQ2AgggASACQQhqQQQQlggCQAJAAkACQAJAIARBAWsOAwECAwALIAIgA0EEaigCACIHNgIIIAEgAkEIaiIEQQQQlgggA0EIaigCACEGAkAgB0EBRgRAIANBDGooAgAhByACIAY2AgggASAEQQQQlgggAiAHNgIIIAEgBEEEEJYIIAIgA0EQaigCADYCCCABIARBBBCWCAwBCyACIAY2AgggASACQQhqQQQQlggLIANBHGooAgAgAiADQSBqKAIAIgc2AgggASACQQhqIgRBBBCWCCAHIAEQiA8gAiADQSRqLQAANgIIIAEgBEEEEJYIIAIgA0Elai0AACIDQQJHNgIIIAEgBEEEEJYIIANBAkYNAyACIAM2AgggASAEQQQQlggMAwsgAiADQQRqKAIAIgc2AgggASACQQhqIgRBBBCWCCADQQhqKAIAIQYCQCAHQQFGBEAgA0EMaigCACEHIAIgBjYCCCABIARBBBCWCCACIAc2AgggASAEQQQQlgggAiADQRBqKAIANgIIIAEgBEEEEJYIDAELIAIgBjYCCCABIAJBCGpBBBCWCAsgAiADQRhqLQAANgIIIAEgAkEIaiIEQQQQlgggAiADQRlqLQAANgIIIAEgBEEEEJYIDAILIANBCGooAgAgAiADQQxqKAIAIgc2AgggASACQQhqIgRBBBCWCCAHIAEQiA8gAiADQRBqLQAANgIIIAEgBEEE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AWohBSAGQRRrIgYNAAsMCAsgBkEUayICQRRuQQFqIgNBA3EhBkEAIQUgCSEBIAJBPE8EQCADQfz///8BcSEDQQAhBANAIAEpAgAhDiABKQIIIQ8gBCAIaiICIAEoAhA2AhAgAiAPNwIIIAIgDjcCACACQRRqQX82AgAgAUEUaikCACEOIAFBHGopAgAhDyACQTBqIAFBJGooAgA2AgAgAkEoaiAPNwIAIAJBIGogDjcCACACQTRqQX82AgAgAUEoaikCACEOIAFBMGopAgAhDyACQdAAaiABQThqKAIANgIAIAJByABqIA83AgAgAkFAayAONwIAIAJB1ABqQX82AgAgAUE8aikCACEOIAFBxABqKQIAIQ8gAkHwAGogAUHMAGooAgA2AgAgAkHoAGogDzcCACACQeAAaiAONwIAIAJB9ABqQX82AgAgAUHQAGohASAEQYABaiEEIAMgBUEEaiIFRw0ACyAGRQ0ICyAFIAZqIAZBBXQhBCAIIAVBBXRqIQIDQCABKQIAIQ4gASkCCCEPIAIgASgCEDYCECACIA83AgggAiAONwIAIAJBFGpBfzYCACACQSBqIQIgAUEUaiEBIARBIGsiBA0ACyEFDAcLIAUNACAGQRRrIgJBFG5BAWoiA0EDcSEGQQAhBSAJIQEgAkE8TwRAIANB/P///wFxIQNBACEEA0AgASkCACEOIAEpAgghDyAEIAhqIgIgASgCEDYCECACIA83AgggAiAONwIAIAJBFGpBfzYCACABQRRqKQIAIQ4gAUEcaikCACEPIAJBMGogAUEkaigCADYCACACQShqIA83AgAgAkEgaiAONwIAIAJBNGpBfzYCACABQShqKQIAIQ4gAUEwaikCACEPIAJB0ABqIAFBOGooAgA2AgAgAkHIAGogDzcCACACQUBrIA43AgAgAkHUAGpBfzYCACABQTxqKQIAIQ4gAUHEAGopAgAhDyACQfAAaiABQcwAaigCADYCACACQegAaiAPNwIAIAJB4ABqIA43AgAgAkH0AGpBfzYCACABQdAAaiEBIARBgAFqIQQgAyAFQQRqIgVHDQALIAZFDQcLIAUgBmogBkEFdCEEIAggBUEFdGohAgNAIAEpAgAhDiABKQIIIQ8gAiABKAIQNgIQIAIgDzcCCCACIA43AgAgAkEUakF/NgIAIAJBIGohAiABQRRq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RQ0AIAQiAkEHcSIFBEADQCACQQFrIQIgASgCiAohASAFQQFrIgUNAAsLIARBCEkNAANAIAEoAogKKAKICigCiAooAogKKAKICigCiAooAogKKAKICiEBIAJBCGsiAg0ACwtBACECCwJAIAEvAYIKIAdLBEAgASEFDAELAkADQCABKAL4CCIFBEAgAUEEaygCACIEQXhxIQMgA0G4CkGICiACGyIGQQRBCCAEQQNxIgQbakkNCiABLwGACiEHIARBAEcgAyAGQSdqS3ENAiABELwFIAJBAWohAiAFIgEvAYIKIAdNDQEMAwsLIAFBuApBiAogAhsQ2RJBrOrIABCdFQALDAgLAkAgAkUEQCAHQQFqIQQgBSEDDAELIAUgB0ECdGpBjApqIQECQCACQQdxIgRFBEAgAiEGDAELIAIhBgNAIAZBAWshBiABKAIAIgNBiApqIQEgBEEBayIEDQALC0EAIQQgAkEISQ0AA0AgASgCACgCiAooAogKKAKICigCiAooAogKKAKICigCiAoiA0GICmohASAGQQhrIgYNAAsLAkAgBSAHQQxsaiICKAL8CCIBBEAgAkH8CGooAgQiBkEEaygCACIJQXhxIQIgAkEEQQggCUEDcSIJGyABakkNASAJQQBHIAIgAUEnaktxDQMgBhC8BQsgBSAHQegAbGoQ7AJBACEBIAhBAWsiCA0BDAULCwwFCwwFCwwDCyABRQ0BIARFBEAgASEDDAELIARBAWsgASEDIARBB3EiAQRAA0AgBEEBayEEIAMoAogKIQMgAUEBayIBDQALC0EHSQ0AA0AgAygCiAooAogKKAKICigCiAooAogKKAKICigCiAooAogKIQMgBEEIayIEDQALCyADKAL4CCIFBH9BACEBA0AgA0EEaygCACIEQXhxIQIgAkG4CkGICiABGyIGQQRBCCAEQQNxIgQbakkNAyAEQQBHIAIgBkEnaktxDQQgAxC8BSABQQFqIQEgBSIDKAL4CCIFDQALQbgKQYgKIAEbBUGICgshASADQQRrKAIAIgVBeHEhAiACQQRBCCAFQQNxIgUbIAFqSQ0BIAVBAEcgAiABQSdqS3ENAiADELwFCwJAIAAoAkwiBUF/Rg0AIAAoAlAhAyAAKAJUIgIEQCADIQEDQCABKAIAIgAEQCABQQRqKAIAIgZBBGsoAgAiB0F4cSEE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QQJqNgIECyABKAIUIQIgAyABKAKIATYCeCADIAEpAoABNwNwIANBOGogARDmAiADKAI8IQECQAJAAkAgAygCOEEBRw0AIANBMGogARCRAiADKAI0IQEgAygCMEEBRw0AIANBKGogARDFASADKAIsIQEgAygCKEEBcQ0BCyABKAIAQQFGBEAgASgCBCIHIAEoAghPDQEgASAHQQFqNgIECyADQSBqIAEQrgsgAygCJCEBA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0EIAEgAkEBajYCBAsgASgCFCECIAMgASgCiAE2AnggAyABKQKAATcDcCADQRhqIAEQ5gIgAygCHCEBAkAgAygCGEEBRw0AIANBEGogARCRAiADKAIUIQEgAygCEEEBRw0AIANBCGogARDFASADKAIMIQEgAygCCEEBcQ0DCyABKAIAQQFGBEAgASgCBCIHIAEoAghPDQMgASAHQQFqNgIECyADIAEQrgsgAygCBCEBDAALAAsgASADKAJ4NgKIASABIAMpA3A3AoABIAIgASgCFEsNASABIAI2AhQMAQsgASADKAJ4NgKIASABIAMpA3A3AoABIAIgASgCFEsNACABIAI2AhQLQQAhAgsgAkEBRw0BIAEgAygCaDYCiAEgASADKQNgNwKAASAEIAEoAhRLDQAgASAENgIUC0EBIQIgAS0AkAFBAUYNCCABLQCRAUUNAyABKAKMASICIAZHDQEgCiABKAIgIgIgASgCLCIEaiIGSSAGIAprQQFGcQ0DIAIgCU8EQCABIAk2AiAgCSECCyAEIAhJDQIgASAINgIsDAILIAEtAJABIgJBAUYEfyABLQCRAUUNBwJAIAYgASgCjAEiAkYEQCAKIAEoAiwiAiABKAIgIgRqIgZJIAYgCmtBAUZxDQkgBCAJTwRAIAEgCTYCIAsgAiAISQ0BIAEgCDYCLCAIIQIMAQsgAiAGTw0IIAEgBjYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAiQgAkYEQCABQSRqEKMSCyABKAIoIAJqQRw6AAAgASACQQFqNgIsIAEtAJABBSACC0H/AXFBAkcNBiABLQCRAUUNBiABKAIUIgIgBU0NAyABKAIQIAVBFGxqIgQtAAANBCAEIAI2AgQgASgCiAEhCCABKAIUIgQgASgCDEYEQCABQQxqEJoSCyABKAIQIARBFGxqIgIgCDYCECACQQA2AgggAiAFNgIEIAJBgTg7AQAgASAEQQFqNgIUDAYLIAIgBk8NASABIAY2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIYIAJGBEAgAUEYahCjEgsgASACQQFqNgIgIAEoAhwgAmpBHDoAAAtBASECIAEtAHxBAUcNAiABLQCRAUUNAiABQdQAakEcIA1BACABKAJ4IAxNGxCTBQwCCyAFIAJBnIrIABCFEwALQaCryQBBKEGsisgAEK8UAAsgAS0AkAFBAkcNASABLQCRAUUNASAFIAEoAhRLDQEgASAFNgIUDAELQQAhAiABLQB8RQ0AIAEtAJEBRQ0AIAFB1ABqQRwgDUEAIAEoAnggDE0bEJMFCyAAIAE2AgQgACACNgIAIANBgAFqJAALvg8CEH8CfiMAQfABayICJAAgAgJ+QdDwyQAtAAAEQEHI8MkAKQMAIRNBwPDJACkDAAwBCyACQbABahC7EUHQ8MkAQQE6AABByPDJACACKQO4ASITNwMAIAIpA7ABCyISNwMQQcDwyQAgEkIBfDcDACACQQA2AiggAkKAgICAgAE3AyAgAiATNwMYIAJCgICAgHA3AwAgAkGQqckAKQMANwIsIAJBmKnJACkDADcCNAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkGSi8gAQQUgASgCFCABKAIYEPYLIgMNACACQYmOyABBCCABKAIgIAEoAiQQ9gsiAw0AIAIgAS0AKBDsByIDDQAgAiABLQApEN8IIgMNACACKAIARQRAQQkQkAEiA0UNBCADQdaLxgAtAAA6AAggA0HOi8YAKQAANwAAAkAgAigCBCIEQX9GDQAgBEUNACACKAIIIghBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQsgBUEARyAGIARBJ2pLcQ0MIAgQvAULIAJBCTYCDCACIAM2AgggAkF/NgIEIAIgAikDCDcCeCACQQk2AnQCQCABKAIAIgNBf0YEQEGAgICAeCEEDAELIANBAk8EQAJAIAEoAgwiBEUEQEEBIQEMAQsgASgCCCEGIAQQkAEiAUUNCCAERQ0AIAEgBiAE/AoAAAsgAiAENgK8ASACIAE2ArgBIAIgBDYCtAELIAIgAzYCsAEgAkEANgKIASACQoCAgIAQNwKAAQJAAkACQAJAAkACQAJAAkACQCADQQFrDgYEBgABAgUDCyACIAJBtAFqNgLoASACIAJB6AFqrUKAgICAkAKENwNAIAJBgAFqQdyWxgBB+IvCACACQUBrELEJDRIMBgsgAiACQbQBajYC6AEgAiACQegBaq1CgICAgJAChDcDQCACQYABakHclsYAQcyLwgAgAkFAaxCxCQ0RDAULIAIgAkG0AWo2AugBIAIgAkHoAWqtQoCAgICQAoQ3A0AgAkGAAWpB3JbGAEGgi8IAIAJBQGsQsQkNEAwECyACQYABakEAQRdBAUEBELMRIAIoAogBIgMgAigChAFqIgFBkt7GACkAADcAACABQZrexgApAAA3AAggAUGh3sYAKQAANwAPIAIgA0EXaiIBNgKIAQwECyACQYABakEAQSFBAUEBELMRIAIoAogBIgMgAigChAFqIgFBqd7GACkAADcAACABQbHexgApAAA3AAggAUG53sYAKQAANwAQIAFBwd7GACkAADcAGCABQcnexgAtAAA6ACAgAiADQSFqIgE2AogBDAMLIAIgAkG0AWo2AugBIAIgAkHoAWqtQoCAgICQAoQ3A0AgAkGAAWpB3JbGAEHpisIAIAJBQGsQsQlFDQEMDQsgAiACQbQBajYC6AEgAiACQegBaq1CgICAgJAChDcDQCACQYABakHclsYAQZ+MwgAgAkFAaxCxCQ0MCyACKAKIASEBCyACKAKEASEGIAIoAoABIQgCQAJAIAIoArABDgIBAQALIAIoArQBIgNFDQAgAigCuAEiBUEEaygCACIHQXhxIQQgBEEEQQggB0EDcSIHGyADakkNDCAHQQBHIAQgA0EnaktxDQ0gBRC8BQsCQCABRQRAQQEhAwwBCyABEJABIgNFDQggAUUNACADIAYgAfwKAAALQYOAgIB4IQQgCEUNACAGQQRrKAIAIgdBeHEhBSAFQQRBCCAHQQNxIgcbIAhqSQ0LIAdBAEcgBSAIQSdqS3ENDCAGELwFCyACIAQ2ApABIAIgATYCiAEgAiADNgKEASACIAE2AoABIAJBsAFqIAJBEGogAkH0AGogAkGAAWoQnwUgAiACKQPgATcDaCACIAIpA9gBNwNgIAIgAikD0AE3A1ggAiACKQPIASISNwNQIAIgAikDwAE3A0ggAiACKQO4ATcDQCASp0F/RwRAIAJBQGsQ/QkLIAIoAjQhBCACKAIwIQYgAigCLCEIIAIoAighBSACKAIkIQcgAigCICEOIAIoAhwhDyACKAIYIQEgAigCFCEMIAIoAhAhAyACKAIIIQkgAigCAEEBRw0CIAFBf0YNByADIAkhAyABIQkgDCEKIQEgAigCDCEMIAQhCyAGIRAgCCEEIAUhBiAHIQggDiEFIA8hBwwDCyACQQo2ArABIAJBsAFqQQBBABDHEyEDCyACELQLDAYLIAIoAjwhCyACKAI4IRAgAigCBCIKQQBKBEAgCUEEaygCACINQXhxIREgEUEEQQggDUEDcSINGyAKakkNCCANQQBHIBEgCkEnaktxDQkgCRC8BQsgDyEKIA4iCUF/Rg0FCyAAIAs2AiwgACAQNgIoIAAgBDYCJCAAIAY2AiAgACAINgIcIAAgBTYCGCAAIAc2AhQgACAJNgIQIAAgCjYCDCAAIAE2AgggACAMNgIEIAAgAzYCACACQfABaiQADwtBARCnFAALQQEQpxQAC0EBEKcUAAtB3ODIAEEZQfjgyAAQwBMACyACIAM2AgBBiLDJAEErIAJBqIbGAEHg0sYAENoSAAtB8LXJAEE3IAJB7wFqQfSWxgBBqLbJABDaEgALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC9oNAhd/BH4jAEGAAmsiBSQAIAEoAmwhDSABKAJoIQICQAJAAkACQAJAAkACfyABKAJkQX9GBEAgAiEPQX8MAQsgDUUEQEEBIQ9BAAwBCyANEJABIg9FDQUgDQRAIA8gAiAN/AoAAAsgDQshFSABKAJwIhNBf0cEQAJAAkACQAJAAkAgE0EBaw4DAQIDAAtBfyEIIAEoAnwhCyABKAJ4IQMgASgCdEF/RwRAIAtFBEBBASEGQQAhCAwFCyALEJABIgZFDQogCwRAIAYgAyAL/AoAAAsgCyEIDAQLIAMhBgwDC0EYEJABIghFDQkgASgCdCICKAIIIQMgAigCBCEEAkAgAigCAEF/RwRAAkAgA0UEQEEBIQwMAQsgAxCQASIMRQ0LIANFDQAgDCAEIAP8CgAACyAFIAM2AlggBSAMNgJUIAUgAzYCUAwBCyAFIAM2AlggBSAENgJUIAVBfzYCUAsgBUHcAGogAkEMahCpCCAIIAUpAmA3AhAgCCAFKQJYNwIIIAggBSkCUDcCAAwCC0GQAhCQASIIRQ0IIAggASgCdBC4BgwBCyABKAJ8IghBq9Wq1QBPDQICQCAIQQxsIgJFBEBBBCEGDAELIAEoAnghCyACEJABIgZFDQQgCEUNACAIIQMDQCACIARGDQEgBUHQAGogBCALahDpDCAEIAZqIgcgBSgCWDYCCCAHIAUpAlA3AgAgBEEMaiEEIANBAWsiAw0ACwsgCCELC0F+IQxBfiEQIAEoAowBIgNBfkcEQEF/IRAgASgClAEhAiABKAKQASEEAkAgA0F/RgRAIAQhAwwBCyACRQRAQQEhA0EAIRAMAQsgAhCQASIDRQ0HIAIEQCADIAQgAvwKAAALIAIhEAsgA60gAq1CIIaEIRkLIAEoApgBIgNBfkcEQEF/IQwgASgCoAEhAiABKAKcASEEAkAgA0F/RgRAIAQhAwwBCyACRQRAQQEhA0EAIQwMAQsgAhCQASIDRQ0HIAIEQCADIAQgAvwKAAALIAIhDAsgA60gAq1CIIaEIRoLIAEoAogBIgNBq9Wq1QBPDQECQCADQQxsIgJFBEBBBCESDAELIAEoAoQBIQcgAhCQASISRQ0EIANFDQAgByADQQxsaiEWQQAhBCADIRQDQCAHIBZGDQEgBCEOAkAgBygCAEF/RwRAIAcoAggiCUGM3egFTw0FQQAhAiAJQbABbCIRRQRAQQghCkEAIQkMAgsgBygCBCEXIBEQkAEiCkUNCCAJRQRAQQAhCQwCC0EAIQQgCSECA0AgBCARRgRAIAkhAgwDCyAFQdAAaiIYIAQgF2oQgwMgBCAKaiAYQbAB/AoAACAEQbABaiEEIAJBAWsiAg0ACyAJIQIMAQtBsAEQkAEiCkUNCSAFQdAAaiICIAcoAgQQgwMgCiACQbAB/AoAAEF/IQILIA5BAWohBCAHQQxqIQcgEiAOQQxsaiIOIAk2AgggDiAKNgIEIA4gAjYCACAUQQFrIhQNAAsLIAatIAutQiCGhCEbC0F+IQcgASgCWCIGQX5HBEBBfyEHIAEoAmAhAiABKAJcIQQCQCAGQX9GBEAgBCEGDAELIAJFBEBBACEHQQEhBgwBCyACEJABIgZFDQYgAgRAIAYgBCAC/AoAAAsgAiEHCyAGrSACrUIghoQhHAtBfCECIAEoAhAiBEF8RwRAQX0hAiAEQX1HBEAgBUHQAGogAUEQahCKAiAFKAJQIQILIAVBDGogBUHQAGpBBHJBxAD8CgAACyABLQCkASILQf8BRwRAIAUgAS0AqQE6AFQgBSABKAClATYCUAtBfiEGIAEoAgAiCkF+RwRAQX8hBiABKAIIIQQgASgCBCEJAkAgCkF/RgRAIAkhCgwBCyAERQRAQQAhBkEBIQoMAQsgBBCQASIKRQ0GIAQEQCAKIAkgBPwKAAALIAQhBgsgAS8BDCERIAEvAQ4hCQsgACAaNwKcASAAIAw2ApgBIAAgGTcDkAEgACAQNgKMASAAIAM2AogBIAAgEjYChAEgACADNgKAASAAIBs3A3ggACAINgJ0IAAgEzYCcCAAIA02AmwgACAPNgJoIAAgFTYCZCAAIBw3AlwgACAHNgJYIAAgAjYCECABLwGqASEDIAEtAKwBIQEgAEEUaiAFQQxqQcQA/AoAACAAIAs6AKQBIAAgAToArAEgACADOwGqASAAIAk7AQ4gACAROwEMIAAgBDYCCCAAIAo2AgQgACAGNgIAIAAgBSgCUDYApQEgACAFLQBUOgCpASAFQYACaiQADwsQnhUAC0EEEKcUAAtBBBCnFAALQQgQpxQAC0EBEKcUAAtBuPDJAEEBOgAAAAuSDgEDfyMAQSBrIgIkACABKAIEIQMgASgCACEBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIYIgRB/////wdrIARBH3VxQQFrDiQBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQACyACIABBGGo2AgQgAiAAQSRqNgIcIAIgAkEcaq1CgICAgJAChDcDECACIAJBBGqtQoCAgICQAoQ3AwggASADQf6owAAgAkEIahCxCQwkCyACIABBHGo2AhwgAiACQRxqrUKAgICA8AKENwMIIAEgA0Gko8AAIAJBCGoQsQkMIwsgAUGb0sUAQR4gAygCDBEAAAwiCyACIABBHGo2AhwgAiACQRxqrUKAgICAkAKENwMIIAEgA0HJj8AAIAJBCGoQsQkMIQsgAiAAQRxqNgIcIAIgAkEcaq1CgICAgMAQhDcDCCABIANB1qPAACACQQhqELEJDCALIAIgAEEcajYCHCACIAJBHGqtQoCAgIDQEIQ3AwggASADQYiRwAAgAkEIahCxCQwfCyACIABBHGo2AhwgAiACQRxqrUKAgICA0BCENwMIIAEgA0G0jMAAIAJBCGoQsQkMHgsgAiAAQRxqNgIcIAIgAkEcaq1CgICAgNAQhDcDCCABIANBkojAACACQQhqELEJDB0LIAIgAEEcajYCHCACIAJBHGqtQoCAgICQAoQ3AwggASADQeWYwAAgAkEIahCxCQwcCyABQbnSxQBBISADKAIMEQAADBsLIAIgAEEcajYCHCACIAJBHGqtQoCAgIDQEIQ3AwggASADQfSIwAAgAkEIahCxCQwaCyABQdrSxQBBFyADKAIMEQAADBkLIAIgAEEcajYCHCACIAJBHGqtQoCAgIDQEIQ3AwggASADQcSjwAAgAkEIahCxCQwYCyACIABBHGo2AhwgAiACQRxqrUKAgICA4BCENwMIIAEgA0G2p8AAIAJBCGoQsQkMFwsgAiAAQRxqNgIcIAIgAkEcaq1CgICAgOAQhDcDCCABIANBm6fAACACQQhqELEJDBYLIAIgAEEcajYCHCACIAJBHGqtQoCAgIDgEIQ3AwggASADQfmmwAAgAkEIahCxCQwVCyACIABBHGo2AhwgAiACQRxqrUKAgICA8AKENwMIIAEgA0HMosAAIAJBCGoQsQkMFAsgAiAAQRxqNgIcIAIgAkEcaq1CgICAgPAQhDcDCCABIANBsZPAACACQQhqELEJDBMLIAIgAEEcajYCHCACIAJBHGqtQoCAgIDQEIQ3AwggASADQZ6kwAAgAkEIahCxCQwSCyACIABBHGo2AhwgAiACQRxqrUKAgICAoAKENwMIIAEgA0GepsAAIAJBCGoQsQkMEQsgAiAAQRxqNgIcIAIgAkEcaq1CgICAgJAChDcDCCABIANBsaHAACACQQhqELEJDBALIAIgAEEcajYCHCACIAJBHGqtQoCAgICQAoQ3AwggASADQdOnwAAgAkEIahCxCQwPCyACIABBHGo2AhwgAiACQRxqrUKAgICAgBGENwMIIAEgA0H/28EAIAJBCGoQsQkMDgsgAUHx0sUAQSggAygCDBEAAAwNCyABQZnTxQBBISADKAIMEQAADAwLIAIgAEEcajYCHCACIAJBHGqtQoCAgICQAoQ3AwggASADQeOqwAAgAkEIahCxCQwLCyACIABBHGo2AgQgAiAAQSBqNgIcIAIgAkEcaq1CgICAgPAQhDcDECACIAJBBGqtQoCAgIDwEIQ3AwggASADQb2IwgAgAkEIahCxCQwKCyACIABBHGo2AhwgAiACQRxqrUKAgICAkAKENwMIIAEgA0HWpsAAIAJBCGoQsQkMCQsgAUG608UAQRogAygCDBEAAAwICyABQdTTxQBBNyADKAIMEQAADAcLIAIgAEEcajYCHCACIAJBHGqtQoCAgICQAoQ3AwggASADQe6ZwAAgAkEIahCxCQwGCyACIABBHGo2AhwgAiACQRxqrUKAgICAkAKENwMIIAEgA0Gcq8AAIAJBCGoQsQkMBQsgAUGL1MUAQTIgAygCDBEAAAwECyACIABBHGo2AhwgAiACQRxqrUKAgICAkAKENwMIIAEgA0HW3sEAIAJBCGoQsQkMAwsgAiAAQRxqNgIcIAIgAkEcaq1CgICAgJARhDcDCCABIANBvoXAACACQQhqELEJDAILIAIgAEEcajYCHCACIAJBHGqtQoCAgICQAoQ3AwggASADQcHQwQAgAkEIahCxCQwBCyACIABBHGo2AhwgAiACQRxqrUKAgICAkAKENwMIIAEgA0GL+sEAIAJBCGoQsQkLIAJBIGokAAuKDgIXfwJ+IwBB4ABrIgIkACABQQAgASgCBEF/RxshBSABQRBqIRQgAkHQAGqtQoCAgIDQAYQhGSACQUBrIRIgAkEcaiETIAEoAvABIhVBBGohFkF/IQ4CQANAAn8CQAJAAkACQAJAIAtFDQAgCyAPRg0AIAkoAgQhECAEIQwgCyEHA0AgB0HMAGohCyAHKAIsIQgCfwJAAkAgBygCMCIGQQdNBEAgBkUNASAILQAAQS5GDQIgBkEBRg0BIAgtAAFBLkYNAiAGQQJGDQEgCC0AAkEuRg0CIAZBA0YNASAILQADQS5GDQIgBkEERg0BIAgtAARBLkYNAiAGQQVGDQEgCC0ABUEuRg0CIAZBBkYNASAILQAGQS5HDQEMAgsCQAJAIAggCEEDakF8cSIDRwRAIAMgCGshBCAIIANrIQogCCEDA0AgAy0AAEEuRg0FIANBAWohAyAKQQFqIgoNAAsgBkEIayIDIARJDQIMAQsgBkEIayEDQQAhBAsDQCAEIAhqIgooAgAiDUGAgoQIIA1Brty48QJza3IgCkEEaigCACIKQYCChAggCkGu3LjxAnNrcnFBgIGChHhxQYCBgoR4Rw0BIAMgBEEIaiIETw0ACwsgBCAGRg0AIAYgBGshAyAEIAhqIQQDQCAELQAAQS5GDQIgBEEBaiEEIANBAWsiAw0ACwsgDEEBagwBCyAMQQFqIQQgEEF/Rw0DIAQLIQwgCyIHIA9HDQALCyAFRQ0CIAUoAgAiCCAVQQhqKAIAIgNJBEAgAiAWKAIAIAhBJGxqIgNBHGooAgAgA0EgaigCACAFQQRqIgNBkKjEABDhCyACKAIEIgdFDQMgAigCACILIAdBzABsaiEPIAMoAgAiEEF/Rg0CQQAhDANAIAsiB0HMAGohCyAHKAIsIQkCQCAHKAIwIgZBB00EQCAGRQ0BIAktAABBLkYNByAGQQFGDQEgCS0AAUEuRg0HIAZBAkYNASAJLQACQS5GDQcgBkEDRg0BIAktAANBLkYNByAGQQRGDQEgCS0ABEEuRg0HIAZBBUYNASAJLQAFQS5GDQcgBkEGRg0BIAktAAZBLkcNAQwHCwJAAkAgCSAJQQNqQXxxIgNHBEAgAyAJayEEIAkgA2shCiAJIQMDQCADLQAAQS5GDQogA0EBaiEDIApBAWoiCg0ACyAGQQhrIgMgBEkNAgwBCyAGQQhrIQNBACEECwNAIAQgCWoiCigCACINQYCChAggDUGu3LjxAnNrciAKQQRqKAIAIgpBgIKECCAKQa7cuPECc2tycUGAgYKEeHFBgIGChHhHDQEgAyAEQQhqIgRPDQALCyAEIAZGDQAgBiAEayEDIAQgCWohBANAIAQtAABBLkYNByAEQQFqIQQgA0EBayIDDQALCyAMQQFqIQwgCyAPRw0ACwwDCyAIIANBkKjEABCFEwALIAkoAgAhCCAFDAMLA0ACQCALKAIwIgdBCEkNACALKAIsIgFBA2pBfHEhBQJAIAEgBUcEQCAFIAFrIQQgASAFayEKIAEhAwNAIAMtAABBLkYNAyADQQFqIQMgCkEBaiIKDQALIAdBCGsiByAESQ0CDAELIAdBCGshB0EAIQQLA0AgASAEaiIFKAIAIgNBgIKECCADQa7cuPECc2tyIAVBBGooAgAiBUGAgoQIIAVBrty48QJza3JxQYCBgoR4cUGAgYKEeEcNASAHIARBCGoiBE8NAAsLIA8gC0HMAGoiC0cNAAsLIA5Bf0cEQCAAIAIoAhA2AhggACACKQMINwIQIAAgETYCCCAAIBc2AgQgACAYNgIACyAAIA42AgwgAkHgAGokAA8LIAxBAWohBCAFIQlBAAshAyAJKQIIIRogAiAMNgIkIAIgGjcCHCACIBA2AhggAiAINgIUIBQgAkEUahD3CQRAIAcoAiwhDCACIAcoAjAiBTYCRCACQQA2AkAgAiAFNgI8IAIgDDYCOCACQQE6AEwgAkEuNgI0IAJBLjYCSCACQShqIAJBNGoiBhC/BSACKAIoRQ0CIAIoAjAhESABKAL0ASIKIAwgAigCLCINEP4DIRggCiAMIBFqIAUgEWsQ/gMhFyACIBMoAgg2AhAgAiATKQIANwMIIA5Bf0cEQCABKAKEAiEFIAIgBygCSDYCMCACIAcpAkA3AyggAiANNgJUIAIgDDYCUCACIBk3A1ggBkHx5sEAIAJB2ABqELgMIBIgAigCMDYCCCASIAIpAyg3AgAgBSgCCCIHIAUoAgBGBEAgBRC9EgsgBSAHQQFqNgIIIAUoAgQgB0EYbGoiBSACKQI0NwIAIAUgAikCPDcCCCAFIAIpAkQ3AhALIAMhBSAQIQ4gCCERDAELC0Hcs8QAQcUAQaS0xAAQrxQAC0Ggq8kAQShBzLPEABCvFAAL7Q0CC38EfiAAKAIMIgsgAWohBwJAIAcgC0kNACAAKAIEIghBAWoiBkEDdiIFQQdsIQkCQAJAAkAgCCAJIAhBCEkbIgFBAXYgB0kEQAJ/IAFBAWoiASAHIAEgB0sbIgFBD08EQCABQf////8BSw0GQX8gAUEDdEEHbkEBa2d2QQFqDAELQQQgAUEIcUEIaiABQQRJGwsiAa1CMH4iDkIgiKcNBCAOpyIDIAFBCGoiB2ohBSADIAVLDQQgBUH4////B0sNBCAFEJABIgVFBEBBuPDJAEEBOgAAAAsgAyAFaiEEIAcEQCAEQf8BIAf8CwALIAFBAWsiCSABQQN2QQdsIAFBCUkbIQwgACgCACEHAkAgC0UEQEEAIQsMAQsgBykDAEJ/hUKAgYKEiJCgwIB/gyEPIAIpAwghECACKQMAIRFBACEBIAshAiAHIQUDQCAPUARAA0AgAUEIaiEBIAVBCGoiBSkDAEKAgYKEiJCgwIB/gyIOQoCBgoSIkKDAgH9RDQALIA5CgIGChIiQoMCAf4UhDwsgBCARIBAgByAPeqdBA3YgAWoiDUFQbGoiA0EsaygCACADQShrKAIAEOMKpyIGIAlxIgNqKQAAQoCBgoSIkKDAgH+DIg5QBEBBCCEKA0AgAyAKaiEDIApBCGohCiAEIAMgCXEiA2opAABCgIGChIiQoMCAf4MiDlANAAsLIA9CAX0gD4MhDyAEIA56p0EDdiADaiAJcSIDaiwAAEEATgRAIAQpAwBCgIGChIiQoMCAf4N6p0EDdiEDCyADIARqIAZBGXYiBjoAACAEIANBCGsgCXFqQQhqIAY6AAAgBCADQX9zQTBsaiIGIAcgDUF/c0EwbGoiAykAKDcAKCAGIAMpACA3ACAgBiADKQAYNwAYIAYgAykAEDcAECAGIAMpAAg3AAggBiADKQAANwAAIAJBAWsiAg0ACwsgACAJNgIEIAAgBDYCACAAIAwgC2s2AgggCEUNASAIQTBsQTdqQXBxIgAgCGpBCWoiBUUNASAHIABrIgFBBGsoAgAiAEF4cSECIAJBBEEIIABBA3EiABsgBWpJDQIgAEEARyACIAVBJ2pLcQ0DIAEQvAUPCyAAIAYEfyAAKAIAIQBBACEBAkAgBSAGQQdxQQBHaiIFQQFHBEAgBUEBcSAFQf7///8DcSEDA0AgACABaiIFKQMAIQ4gBSAOQn+FQgeIQoGChIiQoMCAAYMgDkL//v379+/fv/8AhHw3AwAgBUEIaiIFKQMAIQ4gBSAOQn+FQgeIQoGChIiQoMCAAYMgDkL//v379+/fv/8AhHw3AwAgAUEQaiEBIANBAmsiAw0AC0UNAQsgACABaiIBKQMAIQ4gASAOQn+FQgeIQoGChIiQoMCAAYMgDkL//v379+/fv/8AhHw3AwALAkAgBkEITwRAIAAgBmogACkAADcAAAwBCyAGRQ0AIABBCGogACAG/AoAAAsgAikDCCEQIAIpAwAhEUEAIQMDQAJAIAAgAyIBaiIMLQAAQYABRw0AIAAgAUF/c0EwbGohBCAAIAFBUGxqIgJBKGshBiACQSxrIQcDQCAAIBEgECAHKAIAIAYoAgAQ4wqnIg0gCHEiBSIDaikAAEKAgYKEiJCgwIB/gyIPUARAQQghCgNAIAMgCmohAiAKQQhqIQogACACIAhxIgNqKQAAQoCBgoSIkKDAgH+DIg9QDQALCyAAIA96p0EDdiADaiAIcSIDaiwAAEEATgRAIAApAwBCgIGChIiQoMCAf4N6p0EDdiEDCyADIAVrIAEgBWtzIAhxQQhPBEAgACADaiICLQAAIAIgDUEZdiICOgAAIAAgA0EIayAIcWpBCGogAjoAACAAIANBf3NBMGxqIQJB/wFGBEAgDEH/AToAACAAIAggAUEIa3FqQQhqQf8BOgAAIAIgBCkAKDcAKCACIAQpACA3ACAgAiAEKQAYNwAYIAIgBCkAEDcAECACIAQpAAg3AAggAiAEKQAANwAADAMLIAQpAAghDiAEIAIpAAg3AAggAiAONwAIIAQpAAAhDiAEIAIpAAA3AAAgAiAONwAAIAIpABghDiACIAQpABg3ABggBCAONwAYIAIpABAhDiACIAQpABA3ABAgBCAONwAQIAQpACghDiAEIAIpACg3ACggAiAONwAoIAQpACAhDiAEIAIpACA3ACAgAiAONwAgDAELCyAMIA1BGXYiAjoAACAAIAggAUEIa3FqQQhqIAI6AAALIAFBAWohAyABIAhHDQALIAggCSAIQQhJGwVBAAsgC2s2AggLDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQfjoyABBOUH4n8QAEL8TAAvGDgIKfwZ+IwBB0AFrIgIkAAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEBaw4KAQIDCQoEBQYHCAALAkAgASgCDCIERQRAQQghBQwBCyABKAIIIQYgBEHQAGwiBxCQASIFRQ0SQQAhASAEIQMDQCABIAdGDQEgAkEoaiIIIAEgBmoQhwMgASAFaiAIQdAA/AoAACABQdAAaiEBIANBAWsiAw0ACwsgACAENgIMIAAgBTYCCCAAIAQ2AgQgAEEAOgAADBALAkAgASgCDCIERQRAQQghBQwBCyABKAIIIQYgBEHQAGwiBxCQASIFRQ0RQQAhASAEIQMDQCABIAdGDQEgAkEoaiIIIAEgBmoQhwMgASAFaiAIQdAA/AoAACABQdAAaiEBIANBAWsiAw0ACwsgACAENgIMIAAgBTYCCCAAIAQ2AgQgAEEBOgAADA8LAkAgASgCDCIERQRAQQghBQwBCyABKAIIIQYgBEHQAGwiBxCQASIFRQ0QQQAhASAEIQMDQCABIAdGDQEgAkEoaiIIIAEgBmoQhwMgASAFaiAIQdAA/AoAACABQdAAaiEBIANBAWsiAw0ACwsgACAENgIMIAAgBTYCCCAAIAQ2AgQgAEECOgAADA4LQQIhByABKAI4IgZBAkYEQCABKAJEIgRFBEBBBCEIQQAhBEEADA4LIAEoAkAhAyAEQRRsIgsQkAEiCEUNCCAEIQYDQCAFIAtGDQ0gAygCECIKKAIAIQkgCiAJQQFqNgIAIAlBAEgNCiAFIAhqIgkgAykCCDcCCCAJIAMpAgA3AgAgCUEQaiAKNgIAIAVBFGohBSADQRRqIQMgBkEBayIGDQALDAwLIAEoAkgiAygCACEEIAMgBEEBajYCACAEQQBIDQggASgCQCEIIAEoAjwhBCAGIQcgASgCRAwMCyABKAIIIQYgASgCBCIDKAIAIQQgAyAEQQFqNgIAIARBAEgNB0HQABCQASIERQ0OIAQgASgCDBCHAyAAIAQ2AgwgACAGNgIIIAAgAzYCBCAAQQY6AAAgACABLQAQOgAQDAwLIAEoAhQiBCgCACEDIAQgA0EBajYCACADQQBIDQZB2AAQkAEiA0UNDSABQQRqIQYCQAJAAkACQAJAAkACQAJAAkAgASgCGCIBLQAAIgdBAWsOBwECAwQFBgcACyACQYABaiIFIAFBCGoQhwMgAkEvaiAFQdAA/AoAAAwHCyACQYABaiIFIAFBCGoQhwMgAkEvaiAFQdAA/AoAAAwGCyACQYABaiIFIAFBCGoQhwMgAkEvaiAFQdAA/AoAAAwFCyACQShqIAFBAWpB1wD8CgAADAQLIAJBgAFqIAFBCGoQkAMgAiACKQOYATcARyACIAIpA5ABNwA/IAIgAikDiAE3ADcgAiACKQOAATcALwwDCyACQYABaiIFIAFBCGoQhwMgAkEvaiAFQdAA/AoAAAwCCyACQYABaiIFIAFBCGoQhwMgAkEvaiAFQdAA/AoAAAwBCyACQShqIAFBAWpB1wD8CgAACyADIAc6AAAgA0EBaiACQShqQdcA/AoAACAAIAM2AhggACAENgIUIABBBzoAACAAIAYpAgg3AgwgACAGKQIANwIEDAsLIAAgAUHQAPwKAAAMCgsgASgCBCEEQdAAEJABIgNFDQsgAyABKAIIEIcDIAAgAzYCCCAAIAQ2AgQgAEEJOgAADAkLIABBCjoAAAwICyABKAI4IgQoAgAhAyAEIANBAWo2AgAgA0EASA0CIAFBCGohAwJAAkACQAJAQRogASgCCCIGIAZBGkwbQRtrDgMBAgMACyAGQX9HDQYgASgCHCIDKAIAIQYgAyAGQQFqNgIAIAZBAEgNBSACIAM2AhwgAkF/NgIIIAIgASkCFDcCFCACIAEpAgw3AgwMBwsgAkEIakEEciABQQxqEPwKIAJBGzYCCAwGCyACQQhqQQRyIAFBDGoQ/AogAkEcNgIIDAULIAIgAykDGDcDICACIAMpAxA3AxggAiADKQMINwMQIAIgAykDADcDCAwECyABKAIIIQQgASgCBCIBKAIAIQMgASADQQFqNgIAIANBAEgNASAAIAQ2AgggACABNgIEIABBBToAAAwGC0EEEKcUCwALIAJBCGogAxCQAwwACyAAIAIpAwgiDDcDCCAAIAIpAxAiDTcDECAAIAIpAxgiDjcDGCAAIAIpAyAiDzcDICAAIAFBKGoiASkDACIQNwMoIAAgASkDCCIRNwMwIAIgDDcDKCACIA03AzAgAiAONwM4IAIgDzcDQCACIBE3A1AgAiAQNwNIIABBBDoAACAAIAQ2AjgMAgsgBAshBiAAQQhqIAFBCGoQ2QIgACADNgJIIAAgBjYCRCAAIAg2AkAgACAENgI8IAAgBzYCOCAAQQM6AAAgACABLQBMOgBMCyACQdABaiQADwtBCBCnFAALQbjwyQBBAToAAAALwQ0CCH8HfgJAIAFBG0kEQAwBCyABQRprIgZBACABIAZPGyEJA0AgASAFQRpqSQRAIAUgAUECayIAIABBGHBrQRpqIAFBmK/CABCHDgALIAMgB0EgaiIGTwRAIAIgB2oiBCAAIAVqIgcpAAAiDEI4hiIOQjqIpy0A/oFHOgAAIARBBGogDEKAgID4D4NCCIYiD0IiiKctAP6BRzoAACAEQQhqIAdBBmopAAAiDUI4hiIQQjqIpy0A/oFHOgAAIARBDGogDUKAgID4D4NCCIYiEUIiiKctAP6BRzoAACAEQQFqIA4gDEKA/gODQiiGhCIOQjSIp0E/cS0A/oFHOgAAIARBB2ogDEIIiEKAgID4D4MgDEIYiEKAgPwHg4QgDEIoiEKA/gODIAxCOIiEhCISpyIIQRB2QT9xLQD+gUc6AAAgBEEGaiAIQRZ2QT9xLQD+gUc6AAAgBEEDaiAOIAxCgID8B4NCGIYgD4SEIgxCKIinQT9xLQD+gUc6AAAgBEECaiAMQi6Ip0E/cS0A/oFHOgAAIARBCWogECANQoD+A4NCKIaEIg5CNIinQT9xLQD+gUc6AAAgBEEFaiAMIBKEQhyIp0E/cS0A/oFHOgAAIARBD2ogDUIIiEKAgID4D4MgDUIYiEKAgPwHg4QgDUIoiEKA/gODIA1COIiEhCIPpyIIQRB2QT9xLQD+gUc6AAAgBEEOaiAIQRZ2QT9xLQD+gUc6AAAgBEELaiAOIA1CgID8B4NCGIYgEYSEIgxCKIinQT9xLQD+gUc6AAAgBEEKaiAMQi6Ip0E/cS0A/oFHOgAAIARBDWogDCAPhEIciKdBP3EtAP6BRzoAACAEQRdqIAdBDGopAAAiDEIIiEKAgID4D4MgDEIYiEKAgPwHg4QgDEIoiEKA/gODIAxCOIiEhCINpyIIQRB2QT9xLQD+gUc6AAAgBEEWaiAIQRZ2QT9xLQD+gUc6AAAgBEEVaiANIAxCOIYiDiAMQoD+A4NCKIaEIg8gDEKAgID4D4NCCIYiDSAMQoCA/AeDQhiGhIQiDIRCHIinQT9xLQD+gUc6AAAgBEEUaiANQiKIpy0A/oFHOgAAIARBE2ogDEIoiKdBP3EtAP6BRzoAACAEQRJqIAxCLoinQT9xLQD+gUc6AAAgBEERaiAPQjSIp0E/cS0A/oFHOgAAIARBEGogDkI6iKctAP6BRzoAACAEQRhqIAdBEmopAAAiDEI4hiINQjqIpy0A/oFHOgAAIARBHGogDEKAgID4D4NCCIYiDkIiiKctAP6BRzoAACAEQRlqIA0gDEKA/gODQiiGhCINQjSIp0E/cS0A/oFHOgAAIARBH2ogDEIIiEKAgID4D4MgDEIYiEKAgPwHg4QgDEIoiEKA/gODIAxCOIiEhCIPpyIHQRB2QT9xLQD+gUc6AAAgBEEeaiAHQRZ2QT9xLQD+gUc6AAAgBEEbaiANIAxCgID8B4NCGIYgDoSEIgxCKIinQT9xLQD+gUc6AAAgBEEaaiAMQi6Ip0E/cS0A/oFHOgAAIARBHWogDCAPhEIciKdBP3EtAP6BRzoAACAGIQcgCSAFQRhqIgVJDQIMAQsLIAcgBiADQYivwgAQhw4ACwJAAkACQAJAAn8CQAJAAkACQCAFIAEgAUEDcCIIayIJTwRAIAYhBAwBCwNAIAEgBUEDaiIHSQRAIAUgByABQfiuwgAQhw4ACyAGQQRqIgQgA0sNAiACIAZqIgYgACAFaiIFLQAAIgpBAnYtAP6BRzoAACAGQQNqIAVBAmotAAAiC0E/cUH+gccAai0AADoAACAGQQJqIAVBAWotAAAiBUECdCALQQZ2ckE/cUH+gccAai0AADoAACAGQQFqIApBBHQgBUEEdnJBP3FB/oHHAGotAAA6AAAgBCEGIAkgByIFSw0ACwsgCEEBaw4CAQIECyAGIAQgA0HorsIAEIcOAAsgAyAESwRAQQIhBSACIARqIAAgCWotAAAiAEECdi0A/oFHOgAAIABBBHRBMHEgAyAEQQFqIgdLDQIaIAcgA0HYrsIAEIUTAAsgBCADQciuwgAQhRMACyADIARNDQIgAiAEaiAAIAlqIgEtAAAiBkECdi0A/oFHOgAAIARBAWoiACADTw0DIAAgAmogBkEEdCABLQABIgBBBHZyQT9xQf6BxwBqLQAAOgAAIARBAmoiByADTw0EQQMhBSAAQQJ0QTxxCyEGIAIgB2ogBi0A/oFHOgAAIAQgBWohBAsgBA8LIAQgA0GYrsIAEIUTAAsgACADQaiuwgAQhRMACyAHIANBuK7CABCFEwALkBACB38CfiMAQdAAayICJAAgASgCACIGQfX7xgBBDiABKAIEKAIMIgQRAAAhByACIAE2AgQCQAJAAkACQAJAAkAgACgCmAEiAyAAKAKUASIIQaACaigCACIFSQRAIAAoApwBIgUgCEGcAmooAgAgA0EkbGoiA0EgaigCACIITw0BIANBHGooAgAgBUHUAGxqIgUoAgBBgoCAgHhHDQJBASEDAkAgBw0AIAUoAgwhByAFKAIIIQUgAS0ACkGAAXFFBEAgBkGX48IAQQMgBBEAAA0BIAEoAgBBkovIAEEFIAEoAgQoAgwRAAANASABKAIAQaayyABBAiABKAIEKAIMEQAADQEgBSAHIAEoAgAgASgCBBC/BiEDDAELIAZBmuPCAEEDIAQRAAANACACIAEpAgA3AjwgAkEBOgAcIAIgAkEcajYCRCACQTxqIgFBkovIAEEFEP0IDQAgAUGmssgAQQIQ/QgNACAFIAcgAUGg68IAEL8GBEAMAQsgAkE8akGkssgAQQIQ/QghAwsgAkEBOgAJIAIgAzoACCACQQRqQeTvxwBBBiAAQfwAakGnARCJDkGj/McAQQQgAEEQakGoARCJDkGf/McAQQQgAEGpARCJDkHtmskAQQYgAEEgakGqARCJDkGD/MYAQQggAEHwAGpBqwEQiQ4hBiACLQAIDQQgAEGIAWohAyACLQAJIQQCQCAGKAIAIgEtAApBgAFxRQRAIAEoAgBBiLPJAEGX48IAIARBAXEiBBtBAkEDIAQbIAEoAgQoAgwRAAANBiABKAIAQczyxwBBCCABKAIEKAIMEQAADQYgASgCAEGmssgAQQIgASgCBCgCDBEAAA0GIAMoAgBBf0YNASACIAM2AjwgAUHnkckAQQQgAkE8akGsARCDECEBIAJBAToACSACIAE6AAggAUUNBQwHCyAEQQFxRQRAIAEoAgBBmuPCAEEDIAEoAgQoAgwRAAANBgsgAkEBOgAbIAJBoOvCADYCICACIAEpAgA3AgwgAiABKQIINwIkIAIgAkEbajYCFCACIAJBDGoiATYCHCABQczyxwBBCBD9CA0FIAFBprLIAEECEP0IDQUCQCADKAIAQX9HBEAgAigCHCIBQeeRyQBBBCACKAIgIgUoAgwiBBEAAA0HAkAgAi0AJkGAAXFFBEAgAUG0z8UAQQEgBBEAAA0JIAIgAzYCPCACQRxqQc//xgBBDkGr/sYAQQogAkE8akGtARCSEUUNAQwJCyABQZ3jwgBBAiAEEQAADQggAkEBOgA7IAIgBTYCMCACIAE2AiwgAiACKQIkNwJEIAJBoOvCADYCQCACIAJBO2o2AjQgAiACQSxqNgI8IAIgAzYCTCACQTxqQc//xgBBDkGr/sYAQQogAkHMAGpBrQEQkhENCCACKAI8QaSyyABBAiACKAJAKAIMEQAADQgLIAIoAhxBiJDJAEEBIAIoAiAoAgwRAABFDQEMBwsgAigCHEHrkckAQQQgAigCICgCDBEAAA0GCyACKAIcQaSyyABBAiACKAIgKAIMEQAAIQEgAkEBOgAJIAIgAToACCABDQYMBAsgASgCAEHrkckAQQQgASgCBCgCDBEAACEBIAJBAToACSACIAE6AAggAUUNAwwFCyADIAVBzLvEABCFEwALIAUgCEHMu8QAEIUTAAtBzLvEABCdFQALAkACQCAGKAIAIgEtAApBgAFxRQRAIAEoAgBBiLPJAEECIAEoAgQoAgwRAAANBCABKAIAQYv8xgBBCyABKAIEKAIMEQAADQQgASgCAEGmssgAQQIgASgCBCgCDBEAAA0EIABBoQFqIQRBASEDIAAtAKABQQFHDQEgAUGvssgAQQQQnQRFDQIMBQsgASkCCCEJIAEpAgAhCiACQQE6ACwgAiAKNwIcIAIgCTcCRCACQaDrwgA2AkAgAiACQSxqNgIkIAIgAkEcaiIBNgI8IAFBi/zGAEELEP0IDQMgAUGmssgAQQIQ/QgNAwJAIAAtAKABQQFGBEAgAkE8akGvssgAQQQQnQRFDQEMBQsgAkE8akGqssgAQQUQnQQNBAtBASEDIAJBHGpBpLLIAEECEP0IDQQgAEGhAWohBAwBCyABQaqyyABBBRCdBA0DCyAGKAIAIgEtAApBgAFxRQRAIAEoAgBBiLPJAEECIAEoAgQoAgwRAAANAyABKAIAQZb8xgBBCyABKAIEKAIMEQAADQMgASgCAEGmssgAQQIgASgCBCgCDBEAAA0DIAQtAABFBEAgAUGqssgAQQUQnQQhAwwECyABQa+yyABBBBCdBCEDDAMLIAEpAgghCSABKQIAIQogAkEBOgAsIAIgCjcCHCACIAk3AkQgAkGg68IANgJAIAIgAkEsajYCJCACIAJBHGoiATYCPCABQZb8xgBBCxD9CA0CIAFBprLIAEECEP0IDQICQCAELQAAQQFGBEAgAkE8akGvssgAQQQQnQRFDQEMAwsgAkE8akGqssgAQQUQnQQNAgsgAkEcakGkssgAQQIQ/QghAwwCCyACQYECOwEIC0EBIQMLIAIgAzoACCACQQE6AAkgBkGh/MYAQRYgAEGiAWpBrgEQiQ4hASACLQAJIgMgAi0ACCIGciEAAkAgA0EBRw0AIAZBAXENACABKAIAIgAtAApBgAFxRQRAIAAoAgBB7erCAEECIAAoAgQoAgwRAAAhAAwBCyAAKAIAQaGyyABBASAAKAIEKAIMEQAAIQALIAJB0ABqJAAgAEEBcQu5DgIZfwN+IwBBwAJrIgMkACABKAIMIQcgASgCCCEFIAEoAgAhBiABKAIEIgIoAgAhBCACIARBAWo2AgACQAJAIARBAEgNACABLQAQIQggAiACKAIAIgRBAWo2AgAgBEEASA0AIAIgAigCACIEQQFqNgIAIARBAEgNACACIAIoAgAiBEEBajYCACAEQQBIDQACQEEUEJABIgQEQCAEIAg6ABAgBCAHNgIMIAQgBTYCCCAEIAI2AgQgBCAGNgIAAkBBGBCQASIGBEAgBkGE5scANgIMIAYgBDYCCCAGQoGAgIAQNwIAIAZBADoAFCADQX82AhQgA0EANgIgIAMgAjYCJCADIAU2AiggAyAHNgIsIANBADYCMCADIAI2AjQgAyAFNgI4IAMgBzYCPCADIAI2AkQgAyAFNgJIIAMgBzYCTCADIAY2AmQgA0EAOgBgIAMgCDoAQSADQSA6AEAgA0EANgIMIANBADYCBEHYARCQASICRQ0BQcgBEJABIgZFDQUgA0H0AGoiCCADQQRqIgcQ5AUgA0HYAWoiBCAHEOQFQeQAEJABIgVFDQUgBSAEQeQA/AoAACAGIAhB5AD8CgAAIAYgBTYCaCAGQQQ2AmRB5AAQkAEiCEUNBSAEIAcQ5AVB5AAQkAEiBUUNBSAFIARB5AD8CgAAIAggBTYCBCAIQQQ2AgBByAEQkAEiBUUNBSAEIAcQ5AVB5AAQkAEiCUUNBSAJIAdB5AD8CgAAIAUgBEHkAPwKAAAgBSAJNgJoIAVBBDYCZCACQQA7AdQBIAJBAzYC0AEgAkGM8ccANgLMASACQX82AsgBIAJCBDcDwAEgAkICNwO4ASACIAU2ArQBIAJBAjYCsAEgAkF+NgKQASACQQA7AYwBIAJBAjYCiAEgAkGK8ccANgKEASACQX82AoABIAJCBDcDeCACQgE3A3AgAiAINgJsIAJBATYCaCACQX42AkggAkEAOwFEIAJBAzYCQCACQYfxxwA2AjwgAkF/NgI4IAJCBDcDMCACQgI3AyggAiAGNgIkIAJBAjYCICACQX42AgAgA0EDNgJwIAMgAjYCbCADQQM2AmggBCABQQRqIg4Q/AggAy0ArAIhESADKAKoAiESIAMoAqQCIRMgAygCoAIhDyADKAKcAiEGIAMoApgCIQkgAygClAIhFCADKAKIAiEIIAMoAoQCIRUgAy0AgAIiAkECRg0DIAJBAXENAyADKAL0ASIQIAMoAvABIgJGDQMgASgCACEWIAMoAvwBIRcgAygC+AEhGCADKALcASELIAMoAtgBIRkgBEEEciEaIAJB5ABqIQIgAygC7AEiByADKALoAWoiBEHkAGxByABqIQwDQCACQRBrKAIAIBhHDQQgAkEMaygCACAXRw0EAkAgCygCCCIFIARLBEACQAJAIAsoAgQgDGoiDUEYai0AAA0AIAsgBBDsEA0AIBkoAgAiBSgCACEKIAUgCkEBajYCACAKQQBIDQkCQCANLQAABEAgAyAFNgKIASADIAQ2AnwgA0IBNwJ0IANB2AFqIBYgA0H0AGogAS0AEBDdAQwBCyAFIAUoAgAiCkEBazYCACADQX02AtgBIApBAUcNACAFEDALIAMoAtgBIgpBfUcNAQsgAiAQRg0HDAILIANB9ABqIBpBxAD8CgAAIAMoAnAiBSADKAJoRgRAIANB6ABqIAVBAUEIQcgAELMRCyADKAJsIAVByABsaiINIAo2AgAgDUEEaiADQfQAakHEAPwKAAAgAyAFQQFqNgJwIAIgEEcNAQwGCyAEIAVB5PbIABCFEwALIAdBAWohByACQeQAaiECIAxB5ABqIQwgBEEBaiEEDAALAAsMBAsMAwsMAgsCQCARDQAgBiAPRg0AA0AgBigCWCATRw0BIAYoAlwgEkcNAQJAAkAgCCgCtAJFDQAgBkHwAGohBiAIKAKsAiIBIAkgFGoiBUHdy92eeWxBD3ciBHEhAiAEQRl2rUKBgoSIkKDAgAF+IR0gCCgCqAIhBEEAIQcDQCAdIAIgBGopAAAiHIUiG0KBgoSIkKDAgAF9IBtCf4WDQoCBgoSIkKDAgH+DIhtCAFIEQANAIAUgBCAbeqdBA3YgAmogAXFBA3RrIgtBCGsoAgBGDQQgG0IBfSAbgyIbQgBSDQALCyAcIBxCAYaDQoCBgoSIkKDAgH+DQgBSDQEgB0EIaiIHIAJqIAFxIQIMAAsAC0HUucQAQRZBlLnEABDAEwALAkAgCCALQQRrKAIAENoGDQAgFSgCACIBKAIAIQIgASACQQFqNgIAIAJBAEgNAyABIAEoAgAiAkEBazYCACACQQFHDQAgARAwCyAJQQFqIQkgBiAPRw0ACwsgACADKAJwNgIIIAAgAykCaDcCACAOKAIAIgEoAgAhACABIABBAWs2AgAgAEEBRgRAIA4oAgAQMAsgA0HAAmokAA8LAAtBuPDJAEEBOgAAAAvRDgIXfwJ+IwBBkAJrIgIkACACAn5B0PDJAC0AAARAQcjwyQApAwAhGkHA8MkAKQMADAELIAJBwAFqELsRQdDwyQBBAToAAEHI8MkAIAIpA8gBIho3AwAgAikDwAELIhk3AxBBwPDJACAZQgF8NwMAIAJBADYCKCACQoCAgICAATcDICACIBo3AxggAkKAgICAcDcDACACQZCpyQApAwA3AiwgAkGYqckAKQMANwI0AkACQAJAAkACQAJAAkACQAJAIAJBoKzJAEEEIAEoAgQgASgCCBCSDCIEDQAgAigCAEUEQCABKAIUIQQgASgCECEIQQYQkAEiAUUNAiABQaisyQAvAAA7AAQgAUGkrMkAKAAANgAAIAIoAgQiA0EASgRAIAIoAggiB0EEaygCACIJQXhxIQYgBkEEQQggCUEDcSIJGyADakkNCSAJQQBHIAYgA0EnaktxDQogBxC8BQsgAkEGNgIMIAIgATYCCCACQX82AgQgAiACKQMIIhk3AnggAkEGNgJ0IARBq9WqFU8NA0EAIQFBCCEOIARBMGwiAwRAIAMQkAEiDkUNBSAEIQELIAJBDGohEiACQQA2ArwBIAIgDjYCuAEgAiABNgK0ASAEQRxsIRAgAkHsAWohEyAZpyEUAkADQCAQRQ0BIAICfkHQ8MkALQAABEBByPDJACkDACEaQcDwyQApAwAMAQsgAkGAAmoQuxFB0PDJAEEBOgAAQcjwyQAgAikDiAIiGjcDACACKQOAAgsiGTcD0AFBwPDJACAZQgF8NwMAIBNBkKnJACkDADcCACATQZipyQApAwA3AgggAkEANgLoASACQoCAgICAATcD4AEgAiAaNwPYASACQoCAgIBwNwPAAQJAAkACQCACQcABaiIBQaCsyQBBBCAIKAIEIAgoAggQkgwiBA0AIAFBqqzJAEEIIAgoAhAgCCgCFBCSDCIEDQAgAUGyrMkAQQogCC0AGBCeDSIERQ0BCyACQcABahDICwwBCyACKAL0ASEFIAIoAvABIRUgAigC7AEhBiACKALoASEHIAIoAuQBIQkgAigC4AEhASACKALcASERIAIoAtgBIQMgAigC1AEhFiACKALQASEEIAIoAsgBIQoCQAJAIAIoAsABQQFGBEAgA0F/Rg0LIAIoAswBIQsgBCAKIQQgAyEKIBEhDSAVIRcgBSEYIQMgFiERDAELIAIoAvwBIRggAigC+AEhFyACKALEASINQQBKBEAgCkEEaygCACILQXhxIQwgDEEEQQggC0EDcSILGyANakkNDiALQQBHIAwgDUEnaktxDQ8gChC8BQsgAUF/RiABIQogCSENIAchASAGIQkgFSEHIAUhBiAWIQsNAQsgAigCtAEgD0YEQCAC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DBMLQcyLyQBBpwFB6IjIABC/EwALQbCMyQBBqwFB+IjIABC/EwALIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBODQ8MDgsgASgCUCEEIANBoAFqIgUgAhCfCiADQRxqIAQgBSACEK0QELQMDA8LIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQwgAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQe+ZyQBBAyADQaABakEBEIMMDA4LIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQsgAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQeyxyQBBBiADQaABakEBEIMMDA0LIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQogAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQYyayQBBBSADQaABakEBEIMMDAwLIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQkgAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQbiAyABBByADQaABakEBEIMMDAsLIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQggAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQeSIyABBBCADQaABakEAEIMMDAoLIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQcgAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQfKZyQBBBCADQaABakEAEIMMDAkLIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQYgAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQYSayQBBCCADQaABakEAEIMMDAgLIAIoAhAiBCgCACEFIAQgBUEBajYCACAFQQBIDQUgAyAENgKwASADIAIpAgg3A6gBIAMgAikCADcDoAEgA0EcaiABQZGayQBBBSADQaABakEAEIMMDAcLIAQgBUGcusQAEIUTAAsgBSAGQZy6xAAQhRMAC0GcusQAEJ0VAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALAAsgAyAENgKwASADIAIpAgg3A6gB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BAsgASgCjAEiAiABKAKIASIHRgRAIAEoAiAhCSABKAIsIQgLIAEoAhQhBgJAIAEtAJABQQJHBEAgBiEEDAELIAYhBCABLQCRAUUNACABKAIMIAZGBEAgAUEMahCaEgsgASgCECAGQRRsaiICIAc2AgggAkEANgIEIAJBADoAACABIAZBAWoiBDYCFCABKAKMASECCyACIAdGBEAgASgCLCABKAIgaiEKCyABKAJ4IQwgASgCXCENAkAgASgCAEEBRgRAIAEoAgQiAiABKAIITwRAQQEhBQwCCyABIAJBAWo2AgQLIAMgASgCiAE2AkggAyABKQKAATcDQCADQThqIAEQ5wMgAygCPCEBAn8CQCADKAI4QQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIFTw0CIAEgAkEBaiILNgIEIAUgC00NASABIAJBAmo2AgQLIAFBADoAkQEgA0EwaiABEJQKIAMoAjAgAygCNCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0EgaiABEJQKIAMoAiQhASADKAIgIQIMAQsgAUEAOgCRASADQShqIAEQlAogAygCKCECIAMoAiwiASAFOgCRAQsgAkEBRw0ACwtBACECAkAgASgCiAEiBSABKAKEAU8NACABKAKAASAFai0AAEE6Rw0AIAEgBUEBajYCiAFBASECCwJAIAEtAHxBAUYEQEEBEJABIgtFDQEgC0E6OgAAIANBATYCXCADIAs2AlggA0KAgICAEDcCUCABIAUgA0HQAGogAhD5CAsgAkUNAQJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgVPDQMgASACQQFqIgs2AgQgBSALTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQRhqIAEQlAogAygCGCADKAIcIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiBUUEQCADQQhqIAEQlAogAygCDCEBIAMoAgghAgwBCyABQQA6AJEBIANBEGogARCUCiADKAIQIQIgAygCFCIBIAU6AJEBCyACQQFxRQ0ACwsgAyABEEAgAygCBCEB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AgBBAUYEQCABKAIEIgQgASgCCE8NASABIARBAWo2AgQLIAEoAowBIgIgASgCiAEiBkYEQCABKAIgIQkgASgCLCEICyABKAIUIQQCQCABLQCQAUECRwRAIAQhBQwBCyAEIQUgAS0AkQFFDQAgASgCDCAERgRAIAFBDGoQmhILIAEoAhAgBEEUbGoiAiAGNgIIIAJBADYCBCACQQA6AAAgASAEQQFqIgU2AhQgASgCjAEhAgsgAiAGRgRAIAEoAiwgASgCIGohCgsgASgCeCEMIAEoAlwhDQJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQEgASACQQFqNgIECyADIAEoAogBIgI2AkggAyABKQKAATcDQAJAIAIgASgChAFPDQAgAUGAAWooAgAgAmotAABBwABHDQAgASACQQFqNgKIAUEBIQcLIAEtAHxBAUYEQEEBEJABIgtFDQggC0HAADoAACADQQE2AlwgAyALNgJYIANCgICAgBA3AlAgASACIANB0ABqIAcQ+QgLAkAgB0UNAAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgdPDQIgASACQQFqIgs2AgQgByALTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQThqIAEQlAogAygCOCADKAI8IgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiB0UEQCADQShqIAEQlAogAygCLCEBIAMoAighAgwBCyABQQA6AJEBIANBMGogARCUCiADKAIwIQIgAygCNCIBIAc6AJEBCyACQQFHDQALCyADQSBqIAEQ6QMgAygCJCEBIAMoAiBBAXENAAJAIAEtAJEBQQJHDQAgASgCAEEBRgRAIAEoAgQiAiABKAIIIgdPDQIgASACQQFqIgs2AgQgByALTQ0BIAEgAkECajYCBAsgAUEAOgCRASADQRhqIAEQlAogAygCGCADKAIcIgFBAjoAkQFBAXENAANAIAEoAgBBAUYEQCABKAIEIgIgASgCCE8NAiABIAJBAWo2AgQLAkAgAS0AkQEiB0UEQCADQQhqIAEQlAogAygCDCEBIAMoAgghAgwBCyABQQA6AJEBIANBEGogARCUCiADKAIQIQIgAygCFCIBIAc6AJEBCyACQQFHDQALCyABKAIAQQFGBEAgASgCBCICIAEoAghPDQEgASACQQFqNgIECyADIAEQaSADKAIEIgEtAJABIgJBAUcNBCABLQCRAUUNDCABKAKMASICIAZHDQIgCiABKAIsIgIgASgCICIFaiIGSSAGIAprQQFGcQ0MIAUgCU8EQCABIAk2AiALIAIgCEkNAyABIAg2AiwgCCECDAMLIAEgAygCSDYCiAEgASADKQNANwKAASAFIAEoAhRLDQAgASAFNgIUC0EBIQIgAS0AkAFBAUYNCyABLQCRAUUNBSABKAKMASICIAZHDQMgCiABKAIgIgIgASgCLCIFaiIGSSAGIAprQQFGcQ0FIAIgCU8EQCABIAk2AiAgCSECCyAFIAhJDQQgASAINgIsDAQLIAIgBk8NCSABIAY2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIkIAJGBEAgAUEkahCjEgsgASgCKCACakEWOgAAIAEgAkEBajYCLCABLQCQASECCyACQf8BcUECRw0HIAEtAJEBRQ0HIAEoAhQiAiAETQ0EIAEoAhAgBEEUbGoiBS0AAA0FIAUgAjYCBCABKAKIASEIIAEoAhQiBSABKAIMRgRAIAFBDGoQmhILIAEoAhAgBUEUbGoiAiAINgIQIAJBADYCCCACIAQ2AgQgAkGBLDsBACABIAVBAWo2AhQMBwsgAiAGTw0BIAEgBjYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAhggAkYEQCABQRhqEKMSCyABIAJBAWo2AiAgASgCHCACakEWOgAAC0EBIQIgAS0AfEEBRw0DIAEtAJEBRQ0DIAFB1ABqQRYgDUEAIAEoAnggDE0bEJMFDAMLQQEQpxQACyAEIAJBnIrIABCFEwALQaCryQBBKEGsisgAEK8UAAsgAS0AkAFBAkcNASABLQCRAUUNASAEIAEoAhRLDQEgASAENgIUDAELQQAhAiABLQB8RQ0AIAEtAJEBRQ0AIAFB1ABqQRYgDUEAIAEoAnggDE0bEJMFCyAAIAE2AgQgACACNgIAIANB4ABqJAALyQoBBH8CQAJAAkACQAJAAkACQAJAAkACQAJAQQYgACgCACIBQYCAgIB4cyIDIANBBk8bDgYBAgMEBQYACyABQX9GDQcgAUUNByAAKAIEIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQkgAkUNBiAAIAFBJ2pNDQYMCAsgACgCBCIDEL0BIANBBGsoAgAiAEEDcSEBIABBeHFBlAJBmAIgARtJDQggAUUNBSAAQbgCSQ0FDAcLIAAoAgQiAxCpByADQQRrKAIAIgBBA3EhASAAQXhxQbwCQcACIAEbSQ0HIAFFDQQgAEHgAkkNBAwGCyAAKAIEIgMQvAcgA0EEaygCACIBQXhxIQAgAEH4AEH8ACABQQNxIgEbSQ0GIAFFDQMgAEGcAUkNAwwFCyAAKAIEIgMQyQIgAygCNEF/RwRAIANBNGoQ9QULAkAgAygCRCIEQX9GDQAgAygCSCEBIAMoAkwiAgRAIAEhAANAIAAQsgogAEGwAWohACACQQFrIgINAAsLIARFDQAgAUEEaygCACICQXhxIQAgACAEQbABbCIEQQRBCCACQQNxIgIbckkNBiACQQBHIAAgBEEnaktxDQUgARC8BQsCQCADKAJQIgBBfkYNACAAQX9GDQAgAEUNACADKAJUIgJBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgAGpJDQYgBEEARyABIABBJ2pLcQ0FIAIQvAULIANBBGsoAgAiAUF4cSEAIABB4ABB5AAgAUEDcSIBG0kNBSABRQ0CIABBhAFJDQIMBAsgACgCBCIDKAIEIQEgAygCCCICBEAgASEAA0AgABC9ASAAQZACaiEAIAJBAWsiAg0ACwsgAygCACICBEAgAUEEaygCACIEQXhxIQAgACACQZACbCICQQRBCCAEQQNxIgQbckkNBSAEQQBHIAAgAkEnaktxDQQgARC8BQsgAygCDCIABEAgAygCECICQQRrKAIAIgRBeHEhASABQQRBCCAEQQNxIgQbIABqSQ0FIARBAEcgASAAQSdqS3ENBCACELwFCyADKAIcIQEgAygCICICBEAgASEAA0AgABCaBCAAQSBqIQAgAkEBayICDQALCyADKAIYIgIEQCABQQRrKAIAIgRBeHEhACAAIAJBBXQiAkEEQQggBEEDcSIEG3JJDQUgBEEARyAAIAJBJ2pLcQ0EIAEQvAULIANBBGsoAgAiAUF4cSEAIABBKEEsIAFBA3EiARtJDQQgAUUNASAAQcwASQ0BDAMLIAAoAgQiAxDJAiADQYQBahCfAyADKAJ8IQEgAygCgAEiAgRAIAEhAANAIAAQsgogAEGwAWohACACQQFrIgINAAsLIAMoAngiAgRAIAFBBGsoAgAiBEF4cSEAIAAgAkGwAWwiAkEEQQggBEEDcSIEG3JJDQQgBEEARyAAIAJBJ2pLcQ0DIAEQvAULIANBNGoQyQIgA0HoAGoQ9QUgAygCnAFBfkcEQCADQZwBahCfAwsCQCADKAKQASIEQX9GDQAgAygClAEhASADKAKYASICBEAgASEAA0AgABCyCiAAQbABaiEAIAJBAWsiAg0ACwsgBEUNACABQQRrKAIAIgJBeHEhACAAIARBsAFsIgRBBEEIIAJBA3EiAhtySQ0EIAJBAEcgACAEQSdqS3ENAyABELwFCyADQQRrKAIAIgBBA3EhASAAQXhxQawBQbABIAEbSQ0DIAFFDQAgAEHQAU8NAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAvkDAIMfwR+IAAoAgwiCyABaiEGAkAgBiALSQ0AIAAoAgQiB0EBaiIEQQN2IgNBB2whCQJAAkACQCAHIAkgB0EISRsiAUEBdiAGSQRAAn8gAUEBaiIBIAYgASAGSxsiAUEPTwRAIAFB/////wFLDQZBfyABQQN0QQduQQFrZ3ZBAWoMAQtBBCABQQhxQQhqIAFBBEkbCyIBrUIMfiIPQiCIpw0EIA+nIgNBeEsNBCADQQdqQXhxIgQgAUEIaiIGaiEDIAMgBEkNBCADQfj///8HSw0EIAMQkAEiA0UEQEG48MkAQQE6AAAACyADIARqIQUgBgRAIAVB/wEgBvwLAAsgAUEBayIJIAFBA3ZBB2wgAUEJSRshDSAAKAIAIQYCQCALRQRAQQAhCwwBCyAGKQMAQn+FQoCBgoSIkKDAgH+DIRAgAikDCCESIAIpAwAhEUEAIQEgCyECIAYhAwNAIBBQBEADQCABQQhqIQEgA0EIaiIDKQMAQoCBgoSIkKDAgH+DIg9CgIGChIiQoMCAf1ENAAsgD0KAgYKEiJCgwIB/hSEQCyAFIBEgEiAGIBB6p0EDdiABaiIOQXRsaiIEQQxrKAIAIARBCGsoAgAQtAqnIgwgCXEiCGopAABCgIGChIiQoMCAf4MiD1AEQEEIIQoDQCAIIApqIQQgCkEIaiEKIAUgBCAJcSIIaikAAEKAgYKEiJCgwIB/gyIPUA0ACwsgEEIBfSAQgyEQIAUgD3qnQQN2IAhqIAlxIghqLAAAQQBOBEAgBSkDAEKAgYKEiJCgwIB/g3qnQQN2IQgLIAUgCGogDEEZdiIEOgAAIAUgCEEIayAJcWpBCGogBDoAACAFIAhBf3NBDGxqIgwgBiAOQX9zQQxsaiIEKAAINgAIIAwgBCkAADcAACACQQFrIgINAAsLIAAgCTYCBCAAIAU2AgAgACANIAtrNgIIIAdFDQEgB0EMbEETakF4cSIAIAdqQQlqIgNFDQEgBiAAayIBQQRrKAIAIgBBeHEhAiACQQRBCCAAQQNxIgAbIANqSQ0CIABBAEcgAiADQSdqS3ENAyABELwFDwsgACAEBH8gACgCACEAQQAhAQJAIAMgBEEHcUEAR2oiA0EBRwRAIANBAXEgA0H+////A3EhCANAIAAgAWoiAykDACEPIAMgD0J/hUIHiEKBgoSIkKDAgAGDIA9C//79+/fv37//AIR8NwMAIANBCGoiAykDACEPIAMgD0J/hUIHiEKBgoSIkKDAgAGDIA9C//79+/fv37//AIR8NwMAIAFBEGohASAIQQJrIggNAAtFDQELIAAgAWoiASkDACEPIAEgD0J/hUIHiEKBgoSIkKDAgAGDIA9C//79+/fv37//AIR8NwMACwJAIARBCE8EQCAAIARqIAApAAA3AAAMAQsgBEUNACAAQQhqIAAgBPwKAAALIAIpAwghESACKQMAIQ9BACECA0ACQCAAIAIiAWoiDS0AAEGAAUcNACAAIAFBf3NBDGxqIQUgACABQXRsaiICQQhrIQwgAkEMayEEA0AgACAPIBEgBCgCACAMKAIAELQKpyIOIAdxIgMiAmopAABCgIGChIiQoMCAf4MiEFAEQEEIIQoDQCACIApqIQIgCkEIaiEKIAAgAiAHcSICaikAAEKAgYKEiJCgwIB/gyIQUA0ACwsgACAQeqdBA3YgAmogB3EiAmosAABBAE4EQCAAKQMAQoCBgoSIkKDAgH+DeqdBA3YhAgsgAiADayABIANrcyAHcUEITwRAIAAgAmoiAy0AACADIA5BGXYiAzoAACAAIAJBCGsgB3FqQQhqIAM6AAAgACACQX9zQQxsaiEDQf8BRgRAIA1B/wE6AAAgACAHIAFBCGtxakEIakH/AToAACADIAUoAAg2AAggAyAFKQAANwAADAMLIAUoAAAhAiAFIAMoAAA2AAAgAyACNgAAIAMoAAQhAiADIAUoAAQ2AAQgBSACNgAEIAUoAAghAiAFIAMoAAg2AAggAyACNgAIDAELCyANIA5BGXYiAjoAACAAIAcgAUEIa3FqQQhqIAI6AAALIAFBAWohAiABIAdHDQALIAcgCSAHQQhJGwVBAAsgC2s2AggLDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQfjoyABBOUH4n8QAEL8TAAvkDAIMfwR+IAAoAgwiCyABaiEGAkAgBiALSQ0AIAAoAgQiB0EBaiIEQQN2IgNBB2whCQJAAkACQCAHIAkgB0EISRsiAUEBdiAGSQRAAn8gAUEBaiIBIAYgASAGSxsiAUEPTwRAIAFB/////wFLDQZBfyABQQN0QQduQQFrZ3ZBAWoMAQtBBCABQQhxQQhqIAFBBEkbCyIBrUIMfiIPQiCIpw0EIA+nIgNBeEsNBCADQQdqQXhxIgQgAUEIaiIGaiEDIAMgBEkNBCADQfj///8HSw0EIAMQkAEiA0UEQEG48MkAQQE6AAAACyADIARqIQUgBgRAIAVB/wEgBvwLAAsgAUEBayIJIAFBA3ZBB2wgAUEJSRshDSAAKAIAIQYCQCALRQRAQQAhCwwBCyAGKQMAQn+FQoCBgoSIkKDAgH+DIRAgAikDCCESIAIpAwAhEUEAIQEgCyECIAYhAwNAIBBQBEADQCABQQhqIQEgA0EIaiIDKQMAQoCBgoSIkKDAgH+DIg9CgIGChIiQoMCAf1ENAAsgD0KAgYKEiJCgwIB/hSEQCyAFIBEgEiAGIBB6p0EDdiABaiIOQXRsaiIEQQxrKAIAIARBCGsoAgAQ4wqnIgwgCXEiCGopAABCgIGChIiQoMCAf4MiD1AEQEEIIQoDQCAIIApqIQQgCkEIaiEKIAUgBCAJcSIIaikAAEKAgYKEiJCgwIB/gyIPUA0ACwsgEEIBfSAQgyEQIAUgD3qnQQN2IAhqIAlxIghqLAAAQQBOBEAgBSkDAEKAgYKEiJCgwIB/g3qnQQN2IQgLIAUgCGogDEEZdiIEOgAAIAUgCEEIayAJcWpBCGogBDoAACAFIAhBf3NBDGxqIgwgBiAOQX9zQQxsaiIEKAAINgAIIAwgBCkAADcAACACQQFrIgINAAsLIAAgCTYCBCAAIAU2AgAgACANIAtrNgIIIAdFDQEgB0EMbEETakF4cSIAIAdqQQlqIgNFDQEgBiAAayIBQQRrKAIAIgBBeHEhAiACQQRBCCAAQQNxIgAbIANqSQ0CIABBAEcgAiADQSdqS3ENAyABELwFDwsgACAEBH8gACgCACEAQQAhAQJAIAMgBEEHcUEAR2oiA0EBRwRAIANBAXEgA0H+////A3EhCANAIAAgAWoiAykDACEPIAMgD0J/hUIHiEKBgoSIkKDAgAGDIA9C//79+/fv37//AIR8NwMAIANBCGoiAykDACEPIAMgD0J/hUIHiEKBgoSIkKDAgAGDIA9C//79+/fv37//AIR8NwMAIAFBEGohASAIQQJrIggNAAtFDQELIAAgAWoiASkDACEPIAEgD0J/hUIHiEKBgoSIkKDAgAGDIA9C//79+/fv37//AIR8NwMACwJAIARBCE8EQCAAIARqIAApAAA3AAAMAQsgBEUNACAAQQhqIAAgBPwKAAALIAIpAwghESACKQMAIQ9BACECA0ACQCAAIAIiAWoiDS0AAEGAAUcNACAAIAFBf3NBDGxqIQUgACABQXRsaiICQQhrIQwgAkEMayEEA0AgACAPIBEgBCgCACAMKAIAEOMKpyIOIAdxIgMiAmopAABCgIGChIiQoMCAf4MiEFAEQEEIIQoDQCACIApqIQIgCkEIaiEKIAAgAiAHcSICaikAAEKAgYKEiJCgwIB/gyIQUA0ACwsgACAQeqdBA3YgAmogB3EiAmosAABBAE4EQCAAKQMAQoCBgoSIkKDAgH+DeqdBA3YhAgsgAiADayABIANrcyAHcUEITwRAIAAgAmoiAy0AACADIA5BGXYiAzoAACAAIAJBCGsgB3FqQQhqIAM6AAAgACACQX9zQQxsaiEDQf8BRgRAIA1B/wE6AAAgACAHIAFBCGtxakEIakH/AToAACADIAUoAAg2AAggAyAFKQAANwAADAMLIAUoAAAhAiAFIAMoAAA2AAAgAyACNgAAIAMoAAQhAiADIAUoAAQ2AAQgBSACNgAEIAUoAAghAiAFIAMoAAg2AAggAyACNgAIDAELCyANIA5BGXYiAjoAACAAIAcgAUEIa3FqQQhqIAI6AAALIAFBAWohAiABIAdHDQALIAcgCSAHQQhJGwVBAAsgC2s2AggLDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQfjoyABBOUH4n8QAEL8TAAvaDAINfwR+AkACQAJAIAAoAgwiCkEBaiIEBEAgACgCBCIFQQFqIgZBA3YiA0EHbCEIAkAgBSAIIAVBCEkbIgJBAXYgBEkEQAJ/IAJBAWoiAiAEIAIgBEsbIgJBD08EQCACQf////8BSw0HQX8gAkEDdEEHbkEBa2d2QQFqDAELQQQgAkEIcUEIaiACQQRJGwsiAq1CDH4iD0IgiKcNBSAPpyIDQXhLDQUgA0EHakF4cSIGIAJBCGoiBGohAyADIAZJDQUgA0H4////B0sNBSADEJABIgNFBEBBuPDJAEEBOgAAAAsgAyAGaiEIIAQEQCAIQf8BIAT8CwALIAJBAWsiCyACQQN2QQdsIAJBCUkbIQ0gACgCACEDAkAgCkUEQEEAIQoMAQsgAykDAEJ/hUKAgYKEiJCgwIB/gyEQIAEpAwghEiABKQMAIREgCiEBIAMhAgNAIBBQBEADQCAHQQhqIQcgAkEIaiICKQMAQoCBgoSIkKDAgH+DIg9CgIGChIiQoMCAf1ENAAsgD0KAgYKEiJCgwIB/hSEQCyAIIBEgEiADIBB6p0EDdiAHaiIOQXRsaiIEQQhrKAIAIARBBGsoAgAQ4wqnIgYgC3EiCWopAABCgIGChIiQoMCAf4MiD1AEQEEIIQwDQCAJIAxqIQQgDEEIaiEMIAggBCALcSIJaikAAEKAgYKEiJCgwIB/gyIPUA0ACwsgEEIBfSAQgyEQIAggD3qnQQN2IAlqIAtxIglqLAAAQQBOBEAgCCkDAEKAgYKEiJCgwIB/g3qnQQN2IQkLIAggCWogBkEZdiIEOgAAIAggCUEIayALcWpBCGogBDoAACAIIAlBf3NBDGxqIgYgAyAOQX9zQQxsaiIEKAAINgAIIAYgBCkAADcAACABQQFrIgENAAsLIAAgCzYCBCAAIAg2AgAgACANIAprNgIIIAVFDQEgBUEMbEETakF4cSIAIAVqQQlqIgpFDQEgAyAAayIBQQRrKAIAIgBBeHEhAiACQQRBCCAAQQNxIgAbIApqSQ0DIABBAEcgAiAKQSdqS3ENBCABELwFDwsgACAGBH8gACgCACEAAkAgAyAGQQdxQQBHaiICQQFHBEAgAkEBcSACQf7///8DcSEJA0AgACAHaiICKQMAIQ8gAiAPQn+FQgeIQoGChIiQoMCAAYMgD0L//v379+/fv/8AhHw3AwAgAkEIaiICKQMAIQ8gAiAPQn+FQgeIQoGChIiQoMCAAYMgD0L//v379+/fv/8AhHw3AwAgB0EQaiEHIAlBAmsiCQ0AC0UNAQsgACAHaiICKQMAIQ8gAiAPQn+FQgeIQoGChIiQoMCAAYMgD0L//v379+/fv/8AhHw3AwALAkAgBkEITwRAIAAgBmogACkAADcAAAwBCyAGRQ0AIABBCGogACAG/AoAAAsgASkDCCERIAEpAwAhD0EAIQIDQAJAIAAgAiIBaiILLQAAQYABRw0AIAAgAkF/c0EMbGohByAAIAJBdGxqIgJBBGshDiACQQhrIQYDQCAAIA8gESAGKAIAIA4oAgAQ4wqnIg0gBXEiAyICaikAAEKAgYKEiJCgwIB/gyIQUARAQQghDANAIAIgDGohAiAMQQhqIQwgACACIAVxIgJqKQAAQoCBgoSIkKDAgH+DIhBQDQALCyAAIBB6p0EDdiACaiAFcSICaiwAAEEATgRAIAApAwBCgIGChIiQoMCAf4N6p0EDdiECCyACIANrIAEgA2tzIAVxQQhPBEAgACACaiIDLQAAIAMgDUEZdiIDOgAAIAAgAkEIayAFcWpBCGogAzoAACAAIAJBf3NBDGxqIQNB/wFGBEAgC0H/AToAACAAIAUgAUEIa3FqQQhqQf8BOgAAIAMgBygACDYACCADIAcpAAA3AAAMAwsgBygAACECIAcgAygAADYAACADIAI2AAAgAygABCECIAMgBygABDYABCAHIAI2AAQgBygACCECIAcgAygACDYACCADIAI2AAgMAQsLIAsgDUEZdiICOgAAIAAgBSABQQhrcWpBCGogAjoAAAsgAUEBaiECIAEgBUcNAAsgBSAIIAVBCEkbBUEACyAKazYCCAsPCwwCC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB+OjIAEE5QfifxAAQvxMAC6kNAhF/A34jAEHwAWsiAiQAIAEoAgAiCEEMaigCACEFIAEoAgghCiABKAIEIQwgCEEQaigCACIGIQkCQAJAAkAgBg4CAgEACyAGIQMDQAJ/IAwgBSADQQF2IgkgBGoiC0HkAGxqIgdB1ABqKAIAIg1HBEAgDCANSwwBCyAHQdgAaigCACAKSQshByALIAQgBxshBCADIAlrIgNBAUsNAAsLAn8gDCAFIARB5ABsaiIDQdQAaigCACIHRwRAIAcgDEkMAQsgA0HYAGooAgAgCkkLIARqIQkLAkACQAJAIAYgCUYNACAGQeQAbCIHIAVqIQsgASgCDCENIAlB5ABsIQ4gBiAJayEPQQAhAwJAAkACQANAIAUgDmoiBEHUAGooAgAgDEcNBCAEQdgAaigCACAKRw0EIAMgD0YNAQJAIARB4ABqLQAARQRAIARByABqLQAAQfsBcQ0BCyAFQeQAaiEFIANBAWohAyAOIAdB5ABrIgdHDQEMBQsLIAggCCgCACIGQQFqNgIAIAZBAEgNBSACIAg2AowBIAIgAyAJajYCgAEgAkIBNwJ4IAJBGGoiBiANIAJB+ABqELcDIAIoAhhBf0YNA0GAAxCQASIHRQ0BIAcgBkHgAPwKAAAgAkEBNgIUIAIgBzYCECACQQQ2AgwCQCALIARB5ABqIgRGDQAgCEEQaiEPIAhBDGohEEEBIQYDQCADIAlqQeQAbCESQQAhBSADQQFqIQMDQCAEIAVqIghB1ABqKAIAIAxHDQIgCEHYAGooAgAgCkcNAiADIAlqIg4gDygCACIRTw0FAkAgECgCACASaiAFaiIRQcQBai0AAEUEQCARQawBai0AAEH7AXENAQsgA0EBaiEDIAQgBUHkAGoiBWogC0cNAQwDCwsgASgCACIEKAIAIQUgBCAFQQFqNgIAIAVBAEgNByACIAQ2AuwBIAIgDjYC4AEgAkIBNwLYASACQfgAaiANIAJB2AFqELcDIAIoAnhBf0YNASACKAIMIAZGBEAgAkEMaiAGQQFBBEHgABCzESACKAIQIQcLIAcgBkHgAGxqIAJB+ABqQeAA/AoAACACIAZBAWoiBjYCFCALIAhB5ABqIgRHDQALCyACIAIpAgw3A9gBIAIgAigCFDYC4AEMBAsgBiAGQeT2yAAQhRMMBAtBBBCnFAALIA4gEUHk9sgAEIUTAAsgAkEANgLgASACQoCAgIDAADcD2AELIAEoAgAiBkEYaigCACEIIAEoAgghDCABKAIEIQlBACEFAkACQAJAIAZBHGooAgAiAyIHDgICAQALIAMhBANAAn8gCSAIIARBAXYiCiAFaiILQfAAbGoiB0HYAGooAgAiDUcEQCAJIA1LDAELIAdB3ABqKAIAIAxJCyEHIAsgBSAHGyEFIAQgCmsiBEEBSw0ACwsCfyAJIAggBUHwAGxqIgRB2ABqKAIAIgdHBEAgByAJSQwBCyAEQdwAaigCACAMSQsgBWohBwsgBkEIaiEOIAggB0HwAGxqIQUgCCADQfAAbGohD0EAIQQDQAJAAkAgBSAPRg0AIAUoAlggCUcNACAFKAJcIAxHDQACQAJAIAYoArwCRQ0AIAVB8ABqIQUgBigCtAIiCiAEIAdqIghB3cvdnnlsQQ93IgtxIQMgC0EZdq1CgYKEiJCgwIABfiEVIAYoArACIQtBACENA0AgAyALaikAACIUIBWFIhNCgYKEiJCgwIABfSATQn+Fg0KAgYKEiJCgwIB/gyITQgBSBEADQCAIIAsgE3qnQQN2IANqIApxQQN0ayIQQQhrKAIARg0EIBNCAX0gE4MiE0IAUg0ACwsgFCAUQgGGg0KAgYKEiJCgwIB/g0IAUg0BIA1BCGoiDSADaiAKcSEDDAALAAtB1LnEAEEWQZS5xAAQwBMACyAEQQFqIQQgDiAQQQRrKAIAENoGDQIgASgCACIDKAIAIQogAyAKQQFqNgIAIApBAEgNAyADIAgQ4A0NASADIAMoAgAiCEEBazYCACAIQQFHDQIgAxAwDAILIAAgAikD2AE3AgAgACACKALgATYCCCABKAIAIgQoAgAhACAEIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsgAkHwAWokAA8LIAEoAgwhCiACIAg2AiAgAiADNgIcIAJBADYCGCACQfgAaiAKIAJBGGoQtwMgAigC4AEiAyACKALYAUYEQCACQdgBahC1EgsgAigC3AEgA0HgAGxqIAJB+ABqQeAA/AoAACACIANBAWo2AuABDAALAAsAC+oOAQV/IwBBMGsiAiQAAkACQAJAAkACQAJAAkACQAJAIAAoAgAoAgAiAy0AAEEBaw4HAQIDBAUGBwALQQEhACABKAIAIgRB4pHJAEEFIAEoAgQiBigCDCIFEQAADQcgA0EIaiEDAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0JIAMgARDOAkUNAQwJCyAEQZ3jwgBBAiAFEQAADQggAkEBOgAMIAIgBjYCFCACIAQ2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBDGo2AhggAiACQRBqNgIgIAMgAkEgahDOAg0IIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANCAsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAcLQQEhACABKAIAIgRB55HJAEEEIAEoAgQiBigCDCIFEQAADQYgA0EIaiEDAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0IIAMgARDOAkUNAQwICyAEQZ3jwgBBAiAFEQAADQcgAkEBOgAMIAIgBjYCFCACIAQ2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBDGo2AhggAiACQRBqNgIgIAMgAkEgahDOAg0HIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANBwsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAYLQQEhACABKAIAIgRB65HJAEEEIAEoAgQiBigCDCIFEQAADQUgA0EIaiEDAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0HIAMgARDOAkUNAQwHCyAEQZ3jwgBBAiAFEQAADQYgAkEBOgAMIAIgBjYCFCACIAQ2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBDGo2AhggAiACQRBqNgIgIAMgAkEgahDOAg0GIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANBgsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAULQQEhACACIANBAWo2AgwgASgCACIDQd2RyQBBBSABKAIEIgUoAgwiBBEAAA0EAkAgAS0ACkGAAXFFBEAgA0G0z8UAQQEgBBEAAA0GIAJBDGogARCTFEUNAQwGCyADQZ3jwgBBAiAEEQAADQUgAkEBOgAfIAIgBTYCFCACIAM2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqIgM2AiAgAkEMaiACQSBqEJMUDQUgA0GkssgAQQIQ/QgNBQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAQLIAIgA0EIajYCDEEBIQAgASgCACIDQe+RyQBBBiABKAIEIgUoAgwiBBEAAA0DAkAgAS0ACkGAAXFFBEAgA0G0z8UAQQEgBBEAAA0FIAJBDGogARDVAUUNAQwFCyADQZ3jwgBBAiAEEQAADQQgAkEBOgAfIAIgBTYCFCACIAM2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahDVAQ0EIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANBAsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAMLQQEhACABKAIAIgRB9ZHJAEECIAEoAgQiBigCDCIFEQAADQIgA0EIaiEDAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0EIAMgARDOAkUNAQwECyAEQZ3jwgBBAiAFEQAADQMgAkEBOgAMIAIgBjYCFCACIAQ2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBDGo2AhggAiACQRBqNgIgIAMgAkEgahDOAg0DIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANAwsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAILQQEhACABKAIAIgRB95HJAEEFIAEoAgQiBigCDCIFEQAADQEgA0EIaiEDAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0DIAMgARDOAkUNAQwDCyAEQZ3jwgBBAiAFEQAADQIgAkEBOgAMIAIgBjYCFCACIAQ2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBDGo2AhggAiACQRBqNgIgIAMgAkEgahDOAg0CIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANAgsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAELQQEhACACIANBAWo2AgwgASgCACIDQfyRyQBBBSABKAIEIgUoAgwiBBEAAA0AAkAgAS0ACkGAAXFFBEAgA0G0z8UAQQEgBBEAAA0CIAJBDGogARCTFEUNAQwCCyADQZ3jwgBBAiAEEQAADQEgAkEBOgAfIAIgBTYCFCACIAM2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqIgM2AiAgAkEMaiACQSBqEJMUDQEgA0GkssgAQQIQ/QgNAQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEACyACQTBqJAAgAAuWDgIHfwF+IwBB8AFrIgYkAAJAAkACQAJAAkACQCAEBEAgBkEgaiAEIAUoAghBAWtBeHFqIgdBCGoiCCAFKAIMEQIAIAYpAyBCw6iz3snLh/HjAIUgBikDKELhra6h9OfG3lKFhEIAUg0CIAgoAgBBf0YNAQtBIBCQASIHDQJBuPDJAEEBOgAAAAsCQAJAAkACQAJAAkBBAyAHKAIMIgFBAmsgAUEBTRtBDmsOBQECAwQFAAtBoKvJAEEoQdS7xQAQrxQACyAGQf8BOgDIASAGQQA2AoABIAZBADYCeCAGQQA2AnAgBkEANgJoIAZBADYCYCAGQQA2AlggBkEANgJQIAZBADYCSCAGQQA2AkAgBkEANgI4IAZBADYCMCAGQQA2ArgBIAZBADYCsAEgBkEANgKoASAGQQA2AqABIAZBADYCmAEgBkEANgKQASAGQQA2AogBIAZBADYCwAEgBkIANwMgIAZBADoA7AEgBkEANgLoASAGQpSAgIDAADcC4AEgBkGouMUANgLcASAGQRhqIAZBIGoiASACIAMgBkHcAWoQNwJAAkACQCAGKAIYRQ0AIAYoAhwNACAGQQxqIAFBABCPAyAGKAIMIgENAQsgBkEgaiACIAMQ9gMgBi0AJCEHIAYoAiAiAQ0BIABBADYCACAAIAc6AAQMCQsgBiAGKAARNgIEIAYgBigAFDYAByAGLQAQIQcMBwsgBiAGKAAoNgAHIAYgBigAJTYCBAwGCyAAIAIgAxD2AwwGCyAGQf8BOgDIASAGQQA2AoABIAZBADYCeCAGQQA2AnAgBkEANgJoIAZBADYCYCAGQQA2AlggBkEANgJQIAZBADYCSCAGQQA2AkAgBkEANgI4IAZBADYCMCAGQQA2ArgBIAZBADYCsAEgBkEANgKoASAGQQA2AqABIAZBADYCmAEgBkEANgKQASAGQQA2AogBIAZBADYCwAEgBkIANwMgIAZBADoA7AEgBkEANgLoASAGQoiAgIDAADcC4AEgBkGCuMUANgLcASAGQQxqIAZBIGogAiADIAZB3AFqEDcgBi0AECEBAn8CQAJAIAYoAhAiAkUgBigCDCIDQQBHcUUEQCAGQQE6ABggBkEFQX8gAhsgASADGzoAGQwBCyAGQRhqIAZBIGoQigQgBi0AGEEBRw0BC0EAIQEgBi0AGQwBCyAGKAIcIQEgAEEHakEAOgAAIABBADsABSAAQgA3AghBAAshAiAAIAE2AgAgACACOgAEDAULIAZBIGogAiADEPEIIAYtACBBAUYEQCAGLQAhIQEgAEEANgIAIAAgAToABAwFCyAGKQIkIQ0gAEEANgIMIAAgDTcCBCAAQZqA2Qc2AgAMBAsgBiADNgJAIAZBADYCPCAGQQE6ADggBkErNgI0IAYgAzYCMCAGIAM2AiggBiACNgIkIAZBKzYCIANAAkAgAiAKaiEIAkACQAJAAkAgAyAKayIJQQhPBEAgCEEDakF8cSIBIAhGDQEgASAIayEHQQAhAQNAIAEgCGotAABBK0YNBSAHIAFBAWoiAUcNAAsgByAJQQhrIgFLDQMMAgsgAyAKRg0EIAgtAABBK0YEQEEAIQEMBAsgCUEBRg0EIAgtAAFBK0YEQEEBIQEMBAsgCUECRg0EIAgtAAJBK0YEQEECIQEMBAsgCUEDRg0EIAgtAANBK0YEQEEDIQEMBAsgCUEERg0EIAgtAARBK0YEQEEEIQEMBAsgCUEFRg0EIAgtAAVBK0YEQEEFIQEMBAsgCUEGRg0EIAgtAAZBK0cNBEEGIQEMAwsgCUEIayEBQQAhBwsDQEGAgoQIIAcgCGoiCygCACIMQavWrNkCc2sgDHJBgIKECCALQQRqKAIAIgtBq9as2QJzayALcnFBgIGChHhxQYCBgoR4Rw0BIAdBCGoiByABTQ0ACwsgByAJRg0BIAcgCGohCCADIAdrIAprIQlBACEBA0AgASAIai0AAEErRwRAIAkgAUEBaiIBRw0BDAMLCyABIAdqIQELIAEgCmoiAUEBaiEKIAEgA0kEQCABIAJqLQAAQStGIgdFIAMgCk9xDQIgASADIAcbIQMMAQsgAyAKTw0BCwsgBkEgaiACIAMQ8QggBi0AIEEBRgRAIAYtACEhASAAQQA2AgAgACABOgAEDAQLIAYpAiQhDSAAQQA2AgwgACANNwIEIABBmoDZBzYCAAwDC0HEu8UAEJ0VAAsgB0F/NgIIIAdCgYCAgBA3AgAgB0Hku8UAKQIANwIMIAdB7LvFACgCADYCFCAAIAEgAiADIAdBsLvFABClAyAERQ0CDAELIAAgBzoABCAAIAE2AgAgACAGKAIENgAFIAAgBigABzYACCAAQQA2AgwLIAQgBCgCACIAQQFrNgIAIABBAUcNACAEIAUQthALIAZB8AFqJAALow4CCn8JfiMAQdABayICJAACQAJAAkACQAJAAkACQAJAIAEoAhgiBA4CBAABCyABKAIUIgRBPGooAgBBBUcNAyAEQThqIgUoAgAiAygAAEH2wrGrB3MgA0EEai0AAEHlAHNyDQMgAUEANgIYIAIgBCkDKDcDwAEgAiAEKQMgNwO4ASACIAQpAxg3A7ABIAIgBCkDEDcDqAEgAiAEKQMINwOgASACIAQpAwA3A5gBIAEoAiAiCCAEKAIwIgdxIQMgB0EZdq1CgYKEiJCgwIABfiEOIAUpAwAhDyABKAIcIQUgBCgCNCEEA0AgAyAFaikAACINIA6FIgxCgYKEiJCgwIABfSAMQn+Fg0KAgYKEiJCgwIB/gyEMAkADQCAMUA0BIAx6IRAgDEIBfSAMgyEMIAUgEKdBA3YgA2ogCHFBAnQiB2tBBGsoAgANAAtBgAEhAyAHQQJ1IgYgBWoiBykAACIMQgGGIAyDQoCBgoSIkKDAgH+DeqdBA3YgBSAGQQhrIAhxaiIFKQAAIgxCAYYgDINCgIGChIiQoMCAf4N5p0EDdmpBB00EQCABIAEoAiRBAWo2AiRB/wEhAwsgByADOgAAIAVBCGogAzoAACABIAEoAihBAWs2AigMAwsgDSANQgGGg0KAgYKEiJCgwIB/g0IAUg0CIAMgBkEIaiIGaiAIcSEDDAALAAsgASkDACABKQMIQZ2OxwAQ4QoiBSABKAIgIghxIQMgBUEZdq1CgYKEiJCgwIABfiENIAEoAhwhBSABKAIUIQcCQAJAAkADQAJAIAMgBWopAAAiDyANhSIMQoGChIiQoMCAAX0gDEJ/hYNCgIGChIiQoMCAf4MiDEIAUgRAA0AgBSAMeqdBA3YgA2ogCHEiCUECdGtBBGsiCygCACIKIARPDQQgByAKQQZ0aiIKQTxqKAIAQQVGBEAgCkE4aigCACIKKAAAQfbCsasHcyAKQQRqLQAAQeUAc3JFDQMLIAxCAX0gDIMiDEIAUg0ACwsgDyAPQgGGg0KAgYKEiJCgwIB/g0IAUg0HIAZBCGoiBiADaiAIcSEDDAELC0GAASEDIAUgCWoiBikAACIMQgGGIAyDQoCBgoSIkKDAgH+DeqdBA3YgBSAJQQhrIAhxaiIJKQAAIgxCAYYgDINCgIGChIiQoMCAf4N5p0EDdmpBB00EQCABIAEoAiRBAWo2AiRB/wEhAwsgBiADOgAAIAlBCGogAzoAACABIAEoAihBAWs2AiggCygCACIGIARPDQEgByAGQQZ0aiIDKQM4IQ8gByAEQQFrIglBBnRqIgQpAwghDCAEKQMQIQ0gBCkDGCEOIAQpAyAhECAEKQMoIREgBCkDMCESIAQpAwAhEyADIAQpAzg3AzggAykDACEUIAMgEzcDACACIAMoAjA2AsgBIAIgAykDKDcDwAEgAiADKQMgNwO4ASACIAMpAxg3A7ABIAIgAykDEDcDqAEgAiADKQMINwOgASACIBQ3A5gBIAMoAjQhBCADIBI3AzAgAyARNwMoIAMgEDcDICADIA43AxggAyANNwMQIAMgDDcDCCABIAk2AhggBiAJTw0CIAMoAjAiA0EZdq1CgYKEiJCgwIABfiEOQQAhAQNAIAMgCHEiAyAFaikAACINIA6FIgxCgYKEiJCgwIABfSAMQn+Fg0KAgYKEiJCgwIB/gyEMAkADQCAMUA0BIAx6IRAgDEIBfSAMgyEMIAUgEKdBA3YgA2ogCHFBAnRrQQRrIgcoAgAgCUcNAAsgByAGNgIADAQLIA0gDUIBhoNCgIGChIiQoMCAf4NQBEAgAyABQQhqIgFqIQMMAQsLQaSPxwBBD0G0j8cAEMATAAsgCiAEQdCvyQAQhRMACyAGIAQQhhMACyACIAIpA8ABIgw3ApABIAIgAikDuAEiDTcCiAEgAiACKQOYATcDACACIAIpA6ABNwMIIAIgAikDqAE3AxAgAiACKQOwATcDGCACIA03AyAgAiAMNwMoIARBf0cNAQwCCyACIAIpA8ABNwJcIAIgAikDuAE3AlQgAiACKQOwATcCTCACIAIpA6gBNwJEIAIgAikDoAE3AjwgAiACKQOYATcCNCAEQX9GDQEgAiACQTRqIgEpAig3AyggAiABKQIgNwMgIAIgASkCGDcDGCACIAEpAhA3AxAgAiABKQIINwMIIAIgASkCADcDAAsgBARAIA+nIgNBBGsoAgAiBUF4cSEBIAFBBEEIIAVBA3EiBRsgBGpJDQIgBUEARyABIARBJ2pLcQ0DIAMQvAULIAAgAikDKDcDKCAAIAIpAyA3AyAgACACKQMYNwMYIAAgAikDEDcDECAAIAIpAwg3AwggACACKQMANwMADAMLIABBfzYCEAwCC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgAkHQAWokAAuEDgIMfwN+IwBBQGoiBCQAEIUVIQsCQAJAAkACQAJAIAEpAwAiEEICUgRAEIUVIQcCfwJAAkACQCABKAIgIgMEQCABKAIsIQggAykDAAJ/IAItAAFFBEAQhBUhBUEADAELEIUVIQVBAQshBiAEIAI2AjAgBEEANgIoIAQgBTYCJCAEIAY2AiAgA0EIaiEGQn+FQoCBgoSIkKDAgH+DIQ8CQANAIAhFDQEgD1AEQANAIAYiBUEIaiEGIANBgANrIQMgBSkDAEKAgYKEiJCgwIB/gyIPQoCBgoSIkKDAgH9RDQALIA9CgIGChIiQoMCAf4UhDwsgAyAPeqdBA3ZBUGxqIgVBKGsoAgAhCSAFQSxrKAIAIAQgBUEgazYCOCAPQgF9IREgCRC5FCEFAkAgBCgCKEUNACAEKAIsIglBhAFJDQAgCRDTEgsgCEEBayEIIA8gEYMhDyAEIAU2AiwgBEEBNgIoIARBGGogBEEgaiAEQThqEMsLIAQoAhhBAUcNAAsgBCgCHCEFIAQoAiQiAUGEAU8EQCABENMSCyAEKAIoRQ0DIAQoAiwiAUGEAUkNAyABENMSDAMLIAQoAiQhAyAEKAIoRQ0BIAQoAiwiBkGEAUkNASAGENMSDAELQYEBQYABIAItAAAbIQMLIAdB5O/HAEEGEMUJIAMQpRQCfwJAAkAgEEIBUQRAIAItAAIgBCABKQMIIg83AzgNAiAPQv////////8PfEL/////////H1oNASAPuRD7FAwDC0GBAUGAASACLQAAGwwCCyAEIARBOGqtQoCAgIAghDcDIEH1vMEAIARBIGoQyg8hBQwCCyAPEPkUCyEDIAdBo/zHAEEEEMUJIAMQpRQCQCABKQMQQgFRBEAgAi0AAiAEIAEpAxgiDzcDOA0DIA9C/////////w98Qv////////8fWg0BIA+5EPsUDAQLQYEBQYABIAItAAAbDAMLIAQgBEE4aq1CgICAgCCENwMgQfW8wQAgBEEgahDKDyEFCyAHQYQBSQ0EIAcQ0xIMBAsgDxD5FAshAyAHQZ/8xwBBBBDFCSADEKUUDAELQYEBQYABIAItAAAbIQcLIAtB55jCAEEKEMUJIAcQpRQgBEEQaiACIAtBzPLHAEEIIAFBQGsQxxEgBCgCEEEBcQRAIAQoAhQhBQwBCyABLQBkIQMgC0HxmMIAQQcQxQlBggFBgwEgAxsQpRQgASgCYCENIAEoAlghAyABKAJcIQoCfyACLQABIg5FBEAQhBUMAQsQhRULIQwCQAJAAkACQAJAIANFDQAgDUUNAEEAIQcDQAJAIAcEQCAKIQggAyEJIAchAwwBC0EAIQgCQCAKRQ0AIAoiBkEHcSIFBEADQCAGQQFrIQYgAygCiAohAyAFQQFrIgUNAAsLIApBCEkNAANAIAMoAogKKAKICigCiAooAogKKAKICigCiAooAogKKAKICiEDIAZBCGsiBg0ACwtBACEJCwJAIAMvAYIKIAhLBEAgAyEGDAELA0AgAygC+AgiBkUNCiAJQQFqIQkgAy8BgAohCCAIIAYiAy8BggpPDQALCwJAIAlFBEAgCEEBaiEKIAYhBwwBCyAGIAhBAnRqQYwKaiEDAkAgCUEHcSIKRQRAIAkhBQwBCyAJIQUDQCAFQQFrIQUgAygCACIHQYgKaiEDIApBAWsiCg0ACwtBACEKIAlBCEkNAANAIAMoAgAoAogKKAKICigCiAooAogKKAKICigCiAooAogKIgdBiApqIQMgBUEIayIFDQALCyAGIAhBDGxqIgNBgAlqKAIAIANBhAlqKAIAELkUIQMgBEEIaiAGIAhB6ABsaiACEKcDIAQoAgwhBiAEKAIIQQFGBEAgBiEFIANBgwFLDQQMBQsCQCAOBEAgAxDgFUUNBCAMIAMgBhClFAwBCyAMIAMgBhCeFCIFQYQBTwRAIAUQ0xILIAZBhAFPBEAgBhDTEgsgA0GEAUkNACADENMSC0EAIQMgDUEBayINDQALCyALQffTxgBBBhDFCSAMEKUUIAQgAiALQfiYwgBBDSABQcwAahDHEUEAIQMgBCgCAEEBcQ0DIAshBQwFC0EzEJABIgFFDQYgAUGbnsIAKAAANgAvIAFBlJ7CACkAADcAKCABQYyewgApAAA3ACAgAUGEnsIAKQAANwAYIAFB/J3CACkAADcAECABQfSdwgApAAA3AAggAUHsncIAKQAANwAAIAFBMxC4FCEFIAFBMxDZEiADQYQBTwRAIAMQ0xILIAYiA0GDAU0NAQsgAxDTEgsgDEGEAUkNASAMENMSDAELIAQoAgQhBQtBASEDIAtBhAFJDQAgCxDTEgsgACAFNgIEIAAgAzYCACAEQUBrJAAPC0Ho1cUAEJ0VAAtBARCnFAAL3AwCDX8CfgJAAkACQAJAAn8CQCAAKAIMIgpBAWoiBARAIAAoAgQiBkEBaiIBQQN2IgJBB2whCSAGIAkgBkEISRsiA0EBdiAESQRAIANBAWoiASAEIAEgBEsbIgFBD0kNAiABQf////8BTQRAQX8gAUEDdEEHbkEBa2d2IgFB/v///wBLDQggAUEBagwECwwHCyAAIAEEfyAAKAIAIQMCQCACIAFBB3FBAEdqIgBBAUcEQCAAQQFxIABB/v///wNxIQIDQCADIAhqIgApAwAhDiAAIA5Cf4VCB4hCgYKEiJCgwIABgyAOQv/+/fv379+//wCEfDcDACAAQQhqIgApAwAhDiAAIA5Cf4VCB4hCgYKEiJCgwIABgyAOQv/+/fv379+//wCEfDcDACAIQRBqIQggAkECayICDQALRQ0BCyADIAhqIgApAwAhDiAAIA5Cf4VCB4hCgYKEiJCgwIABgyAOQv/+/fv379+//wCEfDcDAAsCQCABQQhPBEAgASADaiADKQAANwAADAELIAFFDQAgA0EIaiADIAH8CgAAC0EAIQEDQAJAIAMgASIAaiIILQAAQYABRw0AIAMgAUEEdGsiAUEMayELIAFBCGshDCABQRBrIQ0gAyAAQX9zQQR0aiEFA0AgAyAMKAIAIAsoAgAgDSgCAEHdy92eeWxqQd3L3Z55bGpB3cvdnnlsQQ93IgQgBnEiByIBaikAAEKAgYKEiJCgwIB/gyIOUARAQQghAgNAIAEgAmohASACQQhqIQIgAyABIAZxIgFqKQAAQoCBgoSIkKDAgH+DIg5QDQALCyADIA56p0EDdiABaiAGcSIBaiwAAEEATgRAIAMpAwBCgIGChIiQoMCAf4N6p0EDdiEBCyAErSEOIAEgB2sgACAHa3MgBnFBCE8EQCABIANqIgItAAAgAiAOQhmIpyICOgAAIAMgAUEIayAGcWpBCGogAjoAACADIAFBf3NBBHRqIQFB/wFGBEAgCEH/AToAACADIAYgAEEIa3FqQQhqQf8BOgAAIAEgBSkACDcACCABIAUpAAA3AAAMAwsgBSkAACEOIAUgASkAADcAACABIA43AAAgBSkACCEOIAUgASkACDcACCABIA43AAgMAQsLIAggDkIZiKciAToAACADIAYgAEEIa3FqQQhqIAE6AAALIABBAWohASAAIAZHDQALIAYgCSAGQQhJGwVBAAsgCms2AggMAwsMBQtBBCABQQhxQQhqIAFBBEkbCyIBQQhqIgQgAUEEdCICIARqIgNLDQMgA0H4////B0sN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QQFGBEAgASgCBCIFIAEoAggiAkkNAUEBIQUMBQsgAyABKAKIATYCOCADIAEpAoABNwMwDAELIAEgBUEBaiILNgIEIAMgASgCiAE2AjggAyABKQKAATcDMCACIAtNDQEgASAFQQJqNgIECyABQYABaiECIAEgAS0AkAEiC0EBRzoAkAEgAyACKAIINgJIIAMgAikCADcDQCABKAI4IQIgASgCUCIFIAEoAkhGBEAgAUHIAGoQlhILIAEgBUEBajYCUCABKAJMIAVBA3RqIgUgAjYCBCAFIAI2AgAgA0EoaiABELIFIAMoAiggAygCLCIBIAMoAkg2AogBIAEgAykDQDcCgAEgASALOgCQASABQTBqEIYKQQFHDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIFTw0CIAEgAkEBaiILNgIEIAUgC00NASABIAJBAmo2AgQLIAFBADoAkQEgA0EgaiABEJQKIAMoAiAgAygCJCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgVFBEAgA0EQaiABEJQKIAMoAhQhASADKAIQIQIMAQsgAUEAOgCRASADQRhqIAEQlAogAygCGCECIAMoAhwiASAFOgCRAQsgAkEBcUUNAAsLIANBCGogARC7ASADKAIMIQEgAygCCAwBC0EBCyIFQQFHDQAgASADKAI4NgKIASABIAMpAzA3AoABIAQgASgCFEsNACABIAQ2AhQLQQEhAiABLQCQASEEAkACQAJAAkACQAJAAkAgBUEBRgRAIARB/wFxQQFGDQggAS0AkQFFDQMgASgCjAEiAiAHRw0BIAogASgCICICIAEoAiwiBGoiB0kgByAKa0EBRnENAyACIAlPBEAgASAJNgIgIAkhAgsgBCAISQ0CIAEgCDYCLAwCCyAEQf8BcUEBRgR/IAEtAJEBRQ0HAkAgByABKAKMASICRgRAIAogASgCLCICIAEoAiAiBGoiB0kgByAKa0EBRnENCSAEIAlPBEAgASAJNgIgCyACIAhJDQEgASAINgIsIAghAgwBCyACIAdPDQggASAHNgKMAUEAIQIgAUEANgIsIAFBADYCIAsgASgCJCACRgRAIAFBJGoQoxILIAEoAiggAmpBMjoAACABIAJBAWo2AiwgAS0AkAEFIAQLQf8BcUECRw0GIAEtAJEBRQ0GIAEoAhQiAiAGTQ0DIAEoAhAgBkEUbGoiBC0AAA0EIAQgAjYCBCABKAKIASEIIAEoAhQiBCABKAIMRgRAIAFBDGoQmhILIAEoAhAgBEEUbGoiAiAINgIQIAJBADYCCCACIAY2AgQgAkGB5AA7AQAgASAEQQFqNgIUDAYLIAIgB08NASABIAc2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIYIAJGBEAgAUEYahCjEgsgASACQQFqNgIgIAEoAhwgAmpBMjoAAAtBASECIAEtAHxBAUcNAiABLQCRAUUNAiABQdQAakEyIA1BACABKAJ4IAxNGxCTBQwCCyAGIAJBnIrIABCFEwALQaCryQBBKEGsisgAEK8UAAsgAS0AkAFBAkcNASABLQCRAUUNASAGIAEoAhRLDQEgASAGNgIUDAELQQAhAiABLQB8RQ0AIAEtAJEBRQ0AIAFB1ABqQTIgDUEAIAEoAnggDE0bEJMFCyAAIAE2AgQgACACNgIAIANB0ABqJAALpAwCBn4RfyMAQdAAayIKJAAgAigCCCEQIAIoAgQhDiABKQMAIQQgASkDCCEFIApCADcDOCAKIAU3AzAgCiAENwMoIAogBULzytHLp4zZsvQAhTcDICAKIAVC7d6R85bM3LfkAIU3AxggCiAEQuHklfPW7Nm87ACFNwMQIAogBEL1ys2D16zbt/MAhTcDCCAKQgA3A0AgCkEIaiIMIA4gEBCWCCAKQf8BOgBPIAwgCkHPAGpBARCWCCAKKQM4IAo1AkBCOIaEIgggCikDIIUiBCAKKQMQfCIHIARCEImFIgQgCikDGCIFIAopAwh8IgZCIIl8IgkgBEIViYUhBCAEIAVCDYkgBoUiBSAHfCIGQiCJQv8BhXwiByAEQhCJhSEEIAQgBiAFQhGJhSIFIAggCYV8IgZCIIl8IgggBEIViYUhBCAEIAYgBUINiYUiBSAHfCIGQiCJfCIHIARCEImFIQQgBCAGIAVCEYmFIgUgCHwiBkIgiXwiCCAEQhWJhSEEIAQgBUINiSAGhSIFIAd8IgZCIIl8IgcgBUIRiSAGhSIFIAh8IAVCDYmFIgV8IgYgBEIQiSAHhUIViSAFQhGJhSAGQiCIhYWnIRMgASgCGCEUIAEoAhQhFSACKAIAIREgASgCJEUEQCABQRxqIBUgFBDLAwsgASgCICISIBNxIQsgE0EZdiIWrUKBgoSIkKDAgAF+IQYgASgCHCENQQAhDAJAAkADQAJAAkACQAJAAkACQAJAIAsgDWopAAAiBSAGhSIEQoGChIiQoMCAAX0gBEJ/hYNCgIGChIiQoMCAf4MiBEIAUgRAA0AgDSAEeqdBA3YgC2ogEnFBAnRrQQRrKAIAIgIgFE8NAyAVIAJBBnRqIhhBPGooAgAgEEYEQCAOIBhBOGooAgAgEBCPE0UNAwsgBEIBfSAEgyIEQgBSDQALCyAFQoCBgoSIkKDAgH+DIQRBASECIAxBAUYNBiAEQgBSDQJBACECDAYLIAEoAhgiDCACTQ0EIAEoAhQgAkEGdGoiASkDACEEIAEgAykDADcDACAAIAQ3AwggASkDCCEEIAEgAykDCDcDCCAAIAQ3AxAgASkDECEEIAEgAykDEDcDECAAIAQ3AxggASkDGCEEIAEgAykDGDcDGCAAIAQ3AyAgASkDICEEIAEgAykDIDcDICAAIAQ3AyggASkDKCEEIAEgAykDKDcDKCAAIAQ3AzAgACACNgIAIBFFDQcgDkEEaygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyARakkNAiABQQBHIAAgEUEnaktxDQMgDhC8BQwHCyACIBRB0K/JABCFEwALIAR6p0EDdiALaiAScSEPDAMLQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyACIAxB4LXJABCFEwALIAQgBUIBhoNQBEAgF0EIaiIXIAtqIBJxIQsgAiEMDAELCyANIA9qLAAAIgJBAE4EQCANIA0pAwBCgIGChIiQoMCAf4N6p0EDdiIPai0AACECCyANIA9qIBY6AAAgDSAPQQhrIBJxakEIaiAWOgAAIAEgASgCJCACQQFxayIMNgIkIAEgASgCKEEBaiILNgIoIA0gD0ECdGtBBGsgASgCGCICNgIAAkAgAiABKAIQRw0AAkBB////DyALIAxqIg0gDUH///8PTxsiDCACa0EBTQRAIAEoAhQhCwwBCyABKAIUIQsgAiANSw0AIApBCGogAiALIAxBCEHAABClESAKKAIIQQFGDQAgCigCDCELIAEgDDYCECABIAs2AhQgAiAMRw0BIAFBEGoQlRIMAQsgCkEIaiACIAsgAkEBaiIMQQhBwAAQpREgCigCCEEBRg0CIAooAgwhCyABIAw2AhAgASALNgIUCyABIAJBAWo2AhggASgCFCACQQZ0aiIBIAMpAwA3AwAgASADKQMINwMIIAEgAykDEDcDECABIAMpAxg3AxggASADKQMgNwMgIAEgAykDKDcDKCABIBA2AjwgASAONgI4IAEgETYCNCABIBM2AjAgAEF/NgIYIAAgAjYCAAsgCkHQAGokAA8LIAooAgwgCigCECEaEKcUAAuHDQEFfyMAQTBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkBBBSAAKAIQIgRBgICAgHhzIARBAE4bQQFrDgUBAgMEBQALIAEoAgBBgJrJAEEEIAEoAgQoAgwRAAAMCQsgAiAANgIUIAIgAkEUaq1CgICAgMAZhDcDICABKAIAIAEoAgRBqI7CACACQSBqELEJDAgLIAIgADYCFCACIAJBFGqtQoCAgICgHoQ3AyAgASgCACABKAIEQZyOwgAgAkEgahCxCQwHCyACIAA2AhQgAiACQRRqrUKAgICA8BmENwMgIAEoAgAgASgCBEGyjsIAIAJBIGoQsQkMBgsgASgCAEHN28gAQQYgASgCBCgCDBEAAA0EIAAoAgghAyAAKAIEIQVBASEEIAEoAgBBorLIAEEBIAEoAgQoAgwRAAAhACADDQEgACEEDAILIAEoAgBB09vIAEEHIAEoAgQoAgwRAABFDQIMAwsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgAkEBOgAMIAJBoOvCADYCJCACIAEpAgA3AhQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiAgBSACQSBqENMDDQEgAigCIEGkssgAQQIgAigCJCgCDBEAACEEDAELIAUgARDTAyEECyADQQFGDQAgBUEwaiEAIANBMGxBMGshAwNAAn9BASAEQQFxDQAaIAEtAApBgAFxBEAgAkEBOgAMIAJBoOvCADYCJCACIAEpAgA3AhQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGo2AiBBASAAIAJBIGoQ0wMNARogAigCIEGkssgAQQIgAigCJCgCDBEAAAwBC0EBIAEoAgBBiLPJAEECIAEoAgQoAgwRAAANABogACABENMDCyEEIABBMGohACADQTBrIgMNAAsLIAQNASABKAIAQaiyyABBASABKAIEKAIMEQAADAILIAAoAhQhAyAAKAIYIQZBASEAIAEoAgBBo7LIAEEBIAEoAgQoAgwRAAAhBCACQQE6ABMgAkEAOwARIAIgBDoAECACIAE2AgwCQAJAIAZFBEAgBCEADAELIAJBE2ohBQJAIAQNACACLQASDQICQCACKAIMIgEtAApBgAFxBEAgASgCAEGgssgAQQEgASgCBCgCDBEAAA0CIAJBAToAEyACIAU2AiggAiABKQIANwIgIAMoAjggAygCPCACQSBqIgFBoOvCABC/Bg0CIAFBprLIAEECEP0IRQ0BDAILIAMoAjggAygCPCABKAIAIAEoAgQQvwYNASABKAIAQaayyABBAiABKAIEKAIMEQAADQELIAJBADoAECACQQE6ABICQCACKAIMIgEtAApBgAFxBEAgAiAFNgIcIAJBoOvCADYCJCACIAEpAgA3AhQgAiABKQIINwIoIAIgAkEUajYCICADIAJBIGoQ0wNFBEAgAigCIEGkssgAQQIgAigCJCgCDBEAAEUNAgsMAgsgAyABENMDDQELQQAhACACQQA6ABILIAIgADoAECACQQE6ABEgBkEBRg0AIAZBBnRBQGohBCADQfwAaiEBA0ACfwJAAkAgAEEBcQ0AIAItABINBQJAIAIoAgwiAC0ACkGAAXFFBEAgACgCAEGIs8kAQQIgACgCBCgCDBEAAA0CIAFBBGsoAgAgASgCACAAKAIAIAAoAgQQvwYNAiAAKAIAQaayyABBAiAAKAIEKAIMEQAARQ0BDAILIAJBAToAEyACIAU2AiggAiAAKQIANwIgIAFBBGsoAgAgASgCACACQSBqIgBBoOvCABC/Bg0BIABBprLIAEECEP0IDQELIAFBPGshBiACQQA6ABAgAkEBOgASIAIoAgwiAy0ACkGAAXFFBEBBASAGIAMQ0wMNAxoMAgsgAiAFNgIcIAJBoOvCADYCJCACIAMpAgA3AhQgAiADKQIINwIoIAIgAkEUajYCICAGIAJBIGoQ0wMNACACKAIgQaSyyABBAiACKAIkKAIMEQAARQ0BC0EBDAELIAJBADoAEkEACyEAIAJBAToAESACIAA6ABAgAUFAayEBIARBQGoiBA0ACwtBASAADQIaIAItABJBAUcEQCACKAIMIgAoAgBB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rUKAgICA0AGENwMYIAYgBq1CgICAgNABhDcDECAAQbWtwAAgBkEQahC4DCAGKAJAIgAEQCAGKAJEIgJBBGsoAgAiA0F4cSEBIAFBBEEIIANBA3EiAxsgAGpJDQMgA0EARyABIABBJ2pLcQ0EIAIQvAULIAZB4ABqJAAPCxCeFQALQQQQpxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAueDAIHfwF8IwBBIGsiBiQAAkACQAJAAkACQAJAAkACQAJAAkACQEEFIAAoAhAiA0GAgICAeHMgA0EAThtBAWsOBQECAwQFAAsgASgCACIBKAIIIQAgASgCACAAa0EDTQRAIAEgAEEEQQFBARCzESABKAIIIQALIAEgAEEEajYCCCABKAIEIABqQe7qseMGNgAADAkLIAEoAgAhASAALQAARQRAIAEoAgAgASgCCCIAa0EETQRAIAEgAEEFQQFBARCzESABKAIIIQALIAEoAgQgAGoiA0GqssgAKAAANgAAIANBrrLIAC0AADoABCABIABBBWo2AggMCQsgASgCACABKAIIIgBrQQNNBEAgASAAQQRBAUEBELMRIAEoAgghAAsgASgCBCAAakH05NWrBjYAACABIABBBGo2AggMCAsgASgCACEBAkACQCAAKAIAQQFrDgIAAQULIAEgACkDCBDUCwwICyAAKwMIIgm9Qv///////////wCDQoCAgICAgID4/wBaBEAgASgCACABKAIIIgBrQQNNBEAgASAAQQRBAUEBELMRIAEoAgghAAsgASAAQQRqNgIIIAEoAgQgAGpB7uqx4wY2AAAMCAsgCSAGQQhqEPYBIQACQAJAIAEoAgAgASgCCCICayAASQRAIAEgAiAAQQFBARCzESABKAIIIQIMAQsgAEUNAQsgAEUNACABKAIEIAJqIAZBCGogAPwKAAALIAEgACACajYCCAwHCyABKAIAIAAoAgQgACgCCBCeBwwGCyAAKAIIIQMgACgCBCEFIAEoAgAiACgCCCICIAAoAgBGBEAgACACQQFBAUEBELMRIAAoAgghAgsgACACQQFqIgQ2AgggACgCBCACakHbADoAACADBEAgBSABEO0DIANBAUcEQCAFQTBqIQIgA0EwbEEwayEEA0AgASgCACIAKAIIIgMgACgCAEYEQCAAIANBAUEBQQEQsxEgACgCCCEDCyAAIANBAWo2AgggACgCBCADakEsOgAAIAIgARDtAyACQTBqIQIgBEEwayIEDQALCyABKAIAIgEoAggiACABKAIARgRAIAEgAEEBQQFBARCzESABKAIIIQALIAEgAEEBajYCCCABKAIEIABqQd0AOgAADAYLIAQgACgCAEYEQCAAIARBAUEBQQEQsxEgACgCCCEECyAAIARBAWo2AgggACgCBCAEakHdADoAAAwFCyAAKAIoIQUgASgCACICKAIIIgMgAigCAEYEQCACIANBAUEBQQEQsxEgAigCCCEDCyACIANBAWoiBDYCCCACKAIEIANqQfsAOgAAQYACIQMgBUUEQCAEIAIoAgBGBEAgAiAEQQFBAUEBELMRIAIoAgghBAsgAiAEQQFqNgIIIAIoAgQgBGpB/QA6AABBACEDCyAAKAIYIgdFDQEgACgCFCIAQTxqKAIAIQMgAEE4aigCACEIIAEoAgAhAiAFRQRAIAIoAggiBCACKAIARgRAIAIgBEEBQQFBARCzESACKAIIIQQLIAIgBEEBajYCCCACKAIEIARqQSw6AAAgASgCACECCyAHQQZ0IQQgAiAIIAMQngcgASgCACICKAIIIgMgAigCAEYEQCACIANBAUEBQQEQsxEgAigCCCEDCyAAIARqIQQgAiADQQFqNgIIIAIoAgQgA2pBOjoAAANAIAAgARDtAyAEIABBQGsiAEYNAyAAQTxqKAIAIQUgAEE4aigCACEHIAEoAgAiAigCCCIDIAIoAgBGBEAgAiADQQFBAUEBELMRIAIoAgghAwsgAiADQQFqNgIIIAIoAgQgA2pBLDoAACABKAIAIAcgBRCeByABKAIAIgIoAggiAyACKAIARgRAIAIgA0EBQQFBARCzESACKAIIIQMLIAIgA0EBajYCCCACKAIEIANqQTo6AAAMAAsACyABIAApAwgQ1wwMAwsgA0EBcQ0BIANBgAJxRQ0CCyABKAIAIgEoAggiACABKAIARgRAIAEgAEEBQQFBARCzESABKAIIIQALIAEgAEEBajYCCCABKAIEIABqQf0AOgAADAELQaCryQBBKEHM4MgAEK8UAAsgBkEgaiQAC58MAhR/AX4jAEGQBmsiBCQAAkACQAJAAkACQAJAAkAgAiADKAIIIgZGBEAgAygCBCIHIAJB6AFsIhNqIQog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CiAKQj+HQgpCABDuESADKQMIIAMpAwAiC0I/h1INAyAELQAAQTBrIgZBCUsNAyAGrSIMIAt8IgogC1MNAyAEQQFqIQQgBUEBayIFDQALDAELIAVFDQADQCAELQAAQTBrIgZBCUsNAiAEQQFqIQQgBq0gCkIKfnwhCiAFQQFrIgUNAAsLIAAgCjcDCEIBIQoMAQsgAEIANwMAAn8CfwJ/AkACQAJAAkACQAJAQQMgB0ECayAHQQFNG0EBaw4FAQIDBAUACyADQQA2AiggA0KAgICAEDcCICADQczsxAA2AlQgA0KggICABjcCWCADIANBIGo2AlAgASADQdAAahDIAg0LIAMoAighByADKAIkIQQgAygCICEFQdXOxQAhBkEHDAYLIANBADYCKCADQoCAgIAQNwIgIANBzOzEADYCVCADQqCAgIAGNwJYIAMgA0EgajYCUCABIANB0ABqEMgCDQogAygCKCEHIAMoAiAhBUGz0cUAIQYgAygCJAwECyADQQA2AiggA0KAgICAEDcCICADQczsxAA2AlQgA0KggICABjcCWCADIANBIGo2AlAgASADQdAAahDIAg0JIAMoAighByADKAIkIQQgAygCICEFQbClxQAhBkEHDAQLIANBADYCKCADQoCAgIAQNwIgIANBzOzEADYCVCADQqCAgIAGNwJYIAMgA0EgajYCUCABIANB0ABqEMgCDQggAygCKCEHIAMoAiQhBCADKAIgIQVBt6XFACEGQQohCEE0DAQLIANBADYCKCADQoCAgIAQNwIgIANBzOzEADYCVCADQqCAgIAGNwJYIAMgA0EgajYCUCABIANB0ABqEMgCDQcgAygCKCEHIAMoAiQhBCADKAIgIQVBvJzIACEGQQUMAgsgA0EANgIoIANCgICAgBA3AiAgA0HM7MQANgJUIANCoICAgAY3AlggAyADQSBqNgJQIAEgA0HQAGoQyAINBiADKAIoIQcgAygCICEFQbysyQAhBiADKAIkCyEEQQYLIQhBEAshCSADIAc2AkwgAyAENgJIIAMgCDYCRCADIAY2AkAgA0EHNgI8IANB1c7FADYCOCADIANByABqrUKAgICA0AGENwNgIAMgA0FAa61CgICAgNABhDcDWCADIANBOGqtQoCAgIDQAYQ3A1AgA0EgakH+9sEAIANB0ABqELgMIAMgASAJ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jPvCABCdFQALIAUgA2siBUEASA0BIAdBAXMhByACQaQCRw0ACwsgB0EBcUUNAQsgBiABNgIAQYABIQJBgQEMAgsgBEEAOgAYIARBADsBFiAEIAFBFHYtAOS2SToAGSAEIAFBBHZBD3EtAOS2SToAHSAEIAFBCHZBD3EtAOS2SToAHCAEIAFBDHZBD3EtAOS2SToAGyAEIAFBEHZBD3EtAOS2SToAGiABQQFyZ0ECdiICIARBFmoiBWoiAEH7ADoAACAAQQFrQfUAOgAAIAUgAkECayICakHcADoAACAGIAQpARY3AAAgBEH9ADoAHyAEIAFBD3EtAOS2SToAHiAGIAQvAR47AAgLQQoLOgANIAYgAjoADCAEQSBqJAALqwsBDH8jAEFAaiIDJABBASECAkAgASgCAEEBRgRAIAEoAgQiBCABKAIITw0BIAEgBEEBajYCBAsgASgCjAEiAiABKAKIASIGRgRAIAEoAiAhCSABKAIsIQcLIAEoAhQhBAJAIAEtAJABQQJHBEAgBCEFDAELIAQhBSABLQCRAUUNACABKAIMIARGBEAgAUEMahCaEgsgASgCECAEQRRsaiICIAY2AgggAkEANgIEIAJBADoAACABIARBAWoiBTYCFCABKAKMASECCyACIAZGBEAgASgCLCABKAIgaiEKCyABKAJ4IQwgASgCXCENAkACQAJAAkACQAJAAkACQAJAAkAgASgCAEEBRgRAIAEoAgQiAiABKAIITw0BIAEgAkEBajYCBAsgAyABKAKIATYCKCADIAEpAoABNwMgIANBGGogARDnAyADKAIcIQECQCADKAIYQQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIEIgIgASgCCCIITw0CIAEgAkEBaiILNgIEIAggC00NASABIAJBAmo2AgQLIAFBADoAkQEgA0EQaiABEJQKIAMoAhAgAygCFCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIghFBEAgAyABEJQKIAMoAgQhASADKAIAIQIMAQsgAUEAOgCRASADQQhqIAEQlAogAygCCCECIAMoAgwiASAIOgCRAQsgAkEBRw0ACwtBACECAkAgASgCiAEiCCABKAKEAU8NACABKAKAASAIai0AAEE6Rw0AIAEgCEEBajYCiAFBASECCyABLQB8QQFGBEBBARCQASILRQ0HIAtBOjoAACADQQE2AjwgAyALNgI4IANCgICAgBA3AjAgASAIIANBMGogAhD5CAsgAg0CCyABIAMoAig2AogBIAEgAykDIDcCgAEgBSABKAIUSw0AIAEgBTYCFAtBASECIAEtAJABQQFGDQkgAS0AkQFFDQMgASgCjAEiAiAGRw0BIAogASgCICICIAEoAiwiBWoiBkkgBiAKa0EBRnENAyACIAlPBEAgASAJNgIgIAkhAgsgBSAHSQ0CIAEgBzYCLAwCCyABLQCQASICQQFGBH8gAS0AkQFFDQgCQCAGIAEoAowBIgJGBEAgCiABKAIsIgIgASgCICIFaiIGSSAGIAprQQFGcQ0KIAUgCU8EQCABIAk2AiALIAIgB0kNASABIAc2AiwgByECDAELIAIgBk8NCSABIAY2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIkIAJGBEAgAUEkahCjEgsgASgCKCACakEZOgAAIAEgAkEBajYCLCABLQCQAQUgAgtB/wFxQQJHDQcgAS0AkQFFDQcgASgCFCICIARNDQQgASgCECAEQRRsaiIFLQAADQUgBSACNgIEIAEoAogBIQcgASgCFCIFIAEoAgxGBEAgAUEMahCaEgsgASgCECAFQRRsaiICIAc2AhAgAkEANgIIIAIgBDYCBCACQYEyOwEAIAEgBUEBajYCFAwHCyACIAZPDQEgASAGNgKMAUEAIQIgAUEANgIsIAFBADYCIAsgASgCGCACRgRAIAFBGGoQoxILIAEgAkEBajYCICABKAIcIAJqQRk6AAALQQEhAiABLQB8QQFHDQMgAS0AkQFFDQMgAUHUAGpBGSANQQAgASgCeCAMTRsQkwUMAwtBARCnFAALIAQgAkGcisgAEIUTAAtBoKvJAEEoQayKyAAQrxQACyABLQCQAUECRw0BIAEtAJEBRQ0BIAQgASgCFEsNASABIAQ2AhQMAQtBACECIAEtAHxFDQAgAS0AkQFFDQAgAUHUAGpBGSANQQAgASgCeCAMTRsQkwULIAAgATYCBCAAIAI2AgAgA0FAayQAC+YJAgZ/AX4jAEGQBGsiAyQAAkACQAJAIAEoAiQiBEF/RwRAIAEpAighCSADQX82AjAgAyACNgJUIAMgBDYCTCADIAmnIgI2AkggAyACNgJEIAMgAiAJQiCIp0GQAWxqNgJQIAMgAzYCWCADQegAaiICIANBxABqELICAn8gAykDaEJ/UgRAQaAGEJABIgVFDQMgBSACQcgB/AoAACADQQE2AmQgAyAFNgJgIANBBDYCXCADIAMpAlQ3A8ACIAMgAykCTDcDuAIgAyADKQJENwOwAkHIASEEQQEhAgNAIANByAJqIANBsAJqELICIAMpA8gCQn9RRQRAIAMoAlwgAkYEQCADQdwAaiACQQFBCEHIARCzESADKAJgIQULIAQgBWogA0HIAmpByAH8CgAAIAMgAkEBaiICNgJkIARByAFqIQQMAQsLIAMoArwCIgcgAygCtAIiBGtBkAFuIQYgBCAHRwRAA0AgBBCuCCAEQZABaiEEIAZBAWsiBg0ACwsgAygCuAIiBgRAIAMoArACIgdBBGsoAgAiCEF4cSEEIAQgBkGQAWwiBkEEQQggCEEDcSIIG3JJDQUgCEEARyAEIAZBJ2pLcQ0GIAcQvAULIAMoAlwMAQsgAygCUCIFIAMoAkgiAmtBkAFuIQQgAiAFRwRAA0AgAhCuCCACQZABaiECIARBAWsiBA0ACwtBACECIAMoAkwiBQRAIAMoAkQiBkEEaygCACIHQXhxIQQgBCAFQZABbCIFQQRBCCAHQQNxIgcbckkNBCAHQQBHIAQgBUEnaktxDQUgBhC8BQtBCCEFQQALIQYCQCADKAIwQX9HBEAgACADKQM4NwM4IAAgAykDMDcDMCAAIAMpAyg3AyggACADKQMgNwMgIAAgAykDGDcDGCAAIAMpAxA3AxAgACADKQMINwMIIAAgAykDADcDACACBEAgBSEEA0AgBBCmByAEQcgBaiEEIAJBAWsiAg0ACwsgBkUNASAFQQRrKAIAIgJBeHEhACAAIAZByAFsIgRBBEEIIAJBA3EiAhtqSQ0EIAJBAEcgACAEQSdqS3ENBSAFELwFDAELIABBfzYCMCAAIAI2AgggACAFNgIEIAAgBjYCAAsgASgCACIABEAgASgCBCIEQQRrKAIAIgVBeHEhAiACQQRBCCAFQQNxIgUbIABqSQ0DIAVBAEcgAiAAQSdqS3ENBCAEELwFCwJAIAEoAhgiAEF/Rg0AIABFDQAgASgCHCIEQQRrKAIAIgVBeHEhAiACQQRBCCAFQQNxIgUbIABqSQ0DIAVBAEcgAiAAQSdqS3ENBCAEELwFCyABKAIQIQAgASgCFCIEBEAgACECA0AgAkHIAGooAgAiBQRAIAJBzABqKAIAIgdBBGsoAgAiCEF4cSEGIAZBBEEIIAhBA3EiCBsgBWpJDQUgCEEARyAGIAVBJ2pLcQ0GIAcQvAULIAIQrgcgAkHYAGohAiAEQQFrIgQNAAsLIAEoAgwiAgRAIABBBGsoAgAiBEF4cSEBIAEgAkHYAGwiAkEEQQggBEEDcSIEG2pJDQMgBEEARyABIAJBJ2pLcQ0EIAAQvAULIANBkARqJAAPC0Gcq8YAQeAAQfyrxgAQwBMAC0EIEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL1gsBB38jAEHgAmsiAyQAIAIoAhAiBSgCACEEIAUgBEEBajYCAAJAAkACQAJAAkACQCAEQQBIDQAgAyAFNgKIAiADIAIpAgg3A4ACIAMgAikCADcD+AEgA0EIaiABIANB+AFqIgkQ7AwgBSAFKAIAIgRBAWo2AgAgBEEASA0AIAMgBTYC4AEgAyACKQIINwPYASADIAIpAgA3A9ABIAkgA0HQAWoiBxDxCiAHEM4QIQYgAyADKAKAAjYB9AEgAyADKQL4ATcB7AEgBxCtECEIIAcQtRAhBCADIAY6ALUCIANBCDoAtAIgAyADKQHqATcBtgIgAyADKQHwATcBvAIgA0EAOgDUAiADQX82AogCIANBmAJqIAcQ8QogA0KBgICAEDcCgAIgA0EBNgKUAiADQQI2AqQCIANCgYCAgBA3AvgBAkBBHBCQASIGBEAgBiADKALgATYCECAGIAMpA9gBNwIIIAYgAykD0AE3AgAgBiAEOgAZIAYgCDoAGCAGIAE2AhRBGBCQASIBRQ0HIAFBADoAFCABQaToxwA2AgwgASAGNgIIIAFCgYCAgBA3AgAgAyABNgLYAiADQewAaiAJQeQA/AoAACADAn8CQAJAAkACQAJAIAIoAgAiCUEBRgRAIAUgBSgCACIBQQFqNgIAIAFBAEgNCSAFIAUoAgAiAUEBazYCACABQQFGBEAgBRAwC0HkABCQASIERQ0OQQMgAygCCCIBQQJrIAFBAU0bQQFrDgMCAwQBCyACKAIEIgQgBSgCECIBTw0HIAUgBSgCACIBQQFqNgIAIAFBAEgNCCAFIAUoAgAiAUEBajYCACABQQBIDQggBSAFKAIAIgFBAWs2AgAgAUEBRgRAIAUQMAsgBSAFKAIAIgFBAWs2AgAgAUEBRgRAIAUQMAtByAEQkAEiBEUNDQJAAkACQAJAAkBBAyADKAIIIgFBAmsgAUEBTRtBAWsOAwECAwALIANB+AFqIANBCGpB5AD8CgAADAMLIANB/AFqIANBDGoQoAcgA0EDNgL4AQwCC0HkABCQASIBRQ0PIAMoAgwgARC4DyADQQQ2AvgBIAMgATYC/AEMAQsgA0H4AWogA0EIahDkBQsgBCADQewAakHkAPwKAAAgBEHkAGogA0H4AWpB5AD8CgAAQQIMBQsgA0H4AWogA0EIakHkAPwKAAAMAwsgA0H8AWogA0EMahCgByADQQM2AvgBDAILQeQAEJABIgFFDQogAygCDCABELgPIANBBDYC+AEgAyABNgL8AQwBCyADQfgBaiADQQhqEOQFCyAEIANB+AFqQeQA/AoAAEEBCyIBNgLYASADIAQ2AtQBIAMgATYC0AEgAhCtECIGBEAgA0H4AWoiBCADQQhqQeQA/AoAAEHkABCQASIIRQ0IIAggBEHkAPwKAAAgA0HQAWoQmBIgAygC1AEgAUHkAGxqIgQgCDYCBCAEQQQ2AgAgAyABQQFqNgLYAQsgAyACEPAOIAMoAgQiB0EASA0DQQEhAQJAIAdFIggNACADKAIAIQQgBxCQASIBRQ0GIAgNACABIAQgB/wKAAALIAMgAygC2AE2AqACIAMgAykC0AE3A5gCIAMgBzYCuAIgAyABNgK0AiADIAc2ArACIANBfjYC+AEgA0EBOwG8AiADQQA2AqwCIANCgICAgMAANwKkAgJAIAIQtRANACACEK0QDQAgAygCoAIiBCADKAKYAkYEQCADQZgCahCYEgsgAygCnAIgBEHkAGxqIgFBADoABCABQQI2AgAgAyAEQQFqNgKgAgsgACADQfgBakHIAPwKAAAgAhC1EEUEQCAAQQA6AEQLIAkNBAwGCwwGCyAEIAFB5PbIABCFEwsACxCeFQALIANB7ABqEMAHDAELQQEQpxQACyAGRQRAIANBCGoQwAcLIAIoAhAiACgCACEBIAAgAUEBazYCACABQQFGBEAgAigCEBAwCyADQeACaiQADwtBuPDJAEEBOgAAAAvQDAEFfyMAQSBrIgIkAAJAAkACQAJAAkACQAJAAkAgACgCAEGAgICAeHMOBgABAgMEBQYLQQEhAyABKAIAIgRBvO3FAEEGIAEoAgQiBigCDCIFEQAADQYgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0IIAAgARCAD0UNAQwICyAEQZ3jwgBBAiAFEQAADQcgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahCADw0HIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANBwsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAYLQQEhAyABKAIAIgRBhe7FAEEGIAEoAgQiBigCDCIFEQAADQUgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0HIAAgARC1EUUNAQwHCyAEQZ3jwgBBAiAFEQAADQYgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahC1EQ0GIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANBgsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAULQQEhAyABKAIAIgRBzprJAEEGIAEoAgQiBigCDCIFEQAADQQgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0GIAAgARC2EUUNAQwGCyAEQZ3jwgBBAiAFEQAADQUgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahC2EQ0FIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANBQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRBoOjFAEEGIAEoAgQiBigCDCIFEQAADQMgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0FIAAgARDcEkUNAQwFCyAEQZ3jwgBBAiAFEQAADQQgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDcEg0EIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANBAsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAMLQQEhAyABKAIAIgRBra7JAEEFIAEoAgQiBigCDCIFEQAADQIgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0EIAAgARCcEEUNAQwECyAEQZ3jwgBBAiAFEQAADQMgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahCcEA0DIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANAwsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAILQQEhAyABKAIAIgRBoOvFAEEFIAEoAgQiBigCDCIFEQAADQEgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0DIAAgARDdEkUNAQwDCyAEQZ3jwgBBAiAFEQAADQIgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDdEg0CIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANAgsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAELQQEhAyABKAIAIgRByYfIAEEDIAEoAgQiBigCDCIFEQAADQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQIgACgCBCAAKAIIIAEoAgAgASgCBBC/BkUNAQwCCyAEQZ3jwgBBAiAFEQAADQEgAiAGNgIUIAIgBDYCECACQQE6AAAgAiACNgIYIAAoAgQgACgCCCACQRBqIgBBoOvCABC/Bg0BIABBpLLIAEECEP0IDQELIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwsgAkEgaiQAIAML5xYCB34XfyMAQdAAayILJAAgCyAAIAEgAhCTBwJAAkAgCygCAEEBRgRAIAsoAgQhAQwBCwJAIAJBAE4EQEEBIRUgAkUNASACEJABIhVFBEBBARCnFAALIAJFDQEgFSABIAL8CgAADAELEJ4VAAsgACkDACEFIAApAwghAyALQgA3AzggCyADNwMwIAsgBTcDKCALIANC88rRy6eM2bL0AIU3AyAgCyADQu3ekfOWzNy35ACFNwMYIAsgBULh5JXz1uzZvOwAhTcDECALIAVC9crNg9es27fzAIU3AwggC0IANwNAIAtBCGoiASAVIAIQlgggC0H/AToATyABIAtBzwBqQQEQlgggCykDOCALNQJAQjiGhCIHIAspAyCFIgMgCykDEHwhBCAEIANCEImFIgMgCykDGCIGIAspAwh8IgVCIIl8IQkgCSADQhWJhSIDIAZCDYkgBYUiBiAEfCIFQiCJQv8BhXwhCCAIIANCEImFIgQgBSAGQhGJhSIFIAcgCYV8IgNCIIl8IQcgAyAFQg2JhSIGIAh8IgVCIIkgByAEQhWJhSIDfCEIIAggA0IQiYUiAyAFIAZCEYmFIgYgB3wiBUIgiXwhByAHIANCFYmFIgQgBkINiSAFhSIGIAh8IgNCIIl8IgUgBkIRiSADhSIDIAd8IANCDYmFIgN8IQYgBiAEQhCJIAWFQhWJIANCEYmFIAZCIIiFhachHiAAKAIYIRYgACgCFCEfIAAoAiRFBEACQAJAAkAgAEEcaiIXKAIMIhFBAWoiDARAIBcoAgQiEkEBaiIYQQN2IQoCQCASIApBB2wgEkEISRsiE0EBdiAMSQRAIBNBAWoiASAMIAEgDEsbIgFBCEkNASABQf////8BTQRAQX8gAUEDdEEHbkEBa2d2IgFB/f///wNLDQUgAUEBaiENDAQLDAQLIBgEQCAXKAIAIQ1BACEBAkAgCiAYQQdxQQBHaiIKQQFHBEAgCkEBcSAKQf7///8DcSEOA0AgASANaiIKKQMAIQMgCiADQn+FQgeIQoGChIiQoMCAAYMgA0L//v379+/fv/8AhHw3AwAgCkEIaiIKKQMAIQMgCiADQn+FQgeIQoGChIiQoMCAAYMgA0L//v379+/fv/8AhHw3AwAgAUEQaiEBIA5BAmsiDg0AC0UNAQsgASANaiIBKQMAIQMgASADQn+FQgeIQoGChIiQoMCAAYMgA0L//v379+/fv/8AhHw3AwALAkAgGEEITwRAIA0gGGogDSkAADcAAAwBCyAYRQ0AIA1BCGogDSAY/AoAAAtBACEBA0ACQCANIAEiCmoiHC0AAEGAAUcNAAJAAkAgFiANIAFBAnRrQQRrIg8oAgAiAUsEQCANIApBf3NBAnRqIRoDQCANIB8gAUEEdGooAgwiHSAScSIOIhlqKQAAQoCBgoSIkKDAgH+DIgNQBEBBCCEBA0AgASAZaiEMIAFBCGohASANIAwgEnEiGWopAABCgIGChIiQoMCAf4MiA1ANAAsLIA0gA3qnQQN2IBlqIBJxIgFqLAAAQQBOBEAgDSkDAEKAgYKEiJCgwIB/g3qnQQN2IQELIAEgDmsgCiAOa3MgEnFBCEkNAiABIA1qIgwtAAAgDCAdQRl2Igw6AAAgDSABQQhrIBJxakEIaiAMOgAAIA0gAUECdGtBBGshDEH/AUYNAyAaKAAAIQEgGiAMKAAANgAAIAwgATYAACAWIA8oAgAiAUsNAAsLIAEgFkHIssgAEIUTAAsgHCAdQRl2IgE6AAAgDSAKQQhrIBJxakEIaiABOgAADAELIBxB/wE6AAAgDSAKQQhrIBJxakEIakH/AToAACAMIBooAAA2AAALIApBAWohASAKIBJHDQALCyAXIBMgEWs2AggMBAsgAUEEcUEEaiENDAELDAELIA1BAnRBB2pBeHEiDCANQQhqIgpqIQEgASAMSQ0AIAFB+P///wdLDQAgARCQASIBRQRAQbjwyQBBAToAAAALIAEgDGohFCAKBEAgFEH/ASAK/AsACyANQQFrIRMgFygCACEMAkACQAJAIBEEQCAMKQMAQn+FQoCBgoSIkKDAgH+DIQQgDCEOIBEhCgNAIARQBEADQCAaQQhqIRogDkEIaiIOKQMAQoCBgoSIkKDAgH+DIgNCgIGChIiQoMCAf1ENAAsgA0KAgYKEiJCgwIB/hSEECyAMIAR6p0EDdiAaakECdGtBBGsiHCgCACIBIBZPDQIgFCATIB8gAUEEdGooAgwiHXEiGWopAABCgIGChIiQoMCAf4MiA1AEQEEIIQEDQCABIBlqIQ8gAUEIaiEBIBQgDyATcSIZaikAAEKAgYKEiJCgwIB/gyIDUA0ACwsgBEIBfSAEgyEEIBQgA3qnQQN2IBlqIBNxIgFqLAAAQQBOBEAgFCkDAEKAgYKEiJCgwIB/g3qnQQN2IQELIAEgFGogHUEZdiIPOgAAIBQgAUEIayATcWpBCGogDzoAACAUIAFBAnRrQQRrIBwoAAA2AAAgCkEBayIKDQALCyAXIBM2AgQgFyAUNgIAIBcgEyANQQN2QQdsIA1BCUkbIBFrNgIIIBJFDQQgGEECdEEHakF4cSIBIBJqQQlqIhFFDQQgDCABayIKQQRrKAIAIgFBeHEhDCAMQQRBCCABQQNxIgEbIBFqSQ0BIAFBAEcgDCARQSdqS3ENAiAKELwFDAQLIAEgFkHIssgAEIUTAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQfjoyABBOUGU6cgAEL8TAAsLIAAoAiAiESAecSEOIB5BGXYiDK1CgYKEiJCgwIABfiEFIAAoAhwhDwNAAkACQAJAAkACQAJAIA4gD2opAAAiBiAFhSIDQoGChIiQoMCAAX0gA0J/hYNCgIGChIiQoMCAf4MiBEIAUgRAA0AgFiAPIAR6p0EDdiAOaiARcUECdGtBBGsoAgAiAU0NAyAfIAFBBHRqIgpBCGooAgAgAkYEQCAVIApBBGooAgAgAhCPE0UNAwsgBEIBfSAEgyIEQgBSDQALCyAGQoCBgoSIkKDAgH+DIQNBASEBIBBBAUYNBSADQgBSDQJBACEBDAULIAAoAhgiACABSwRAIAJFDQcgFUEEaygCACIAQXhxIRAgEEEEQQggAEEDcSIAGyACakkNAyAAQQBHIBAgAkEnaktxDQQgFRC8BQwHCyABIABB4LXJABCFEwALIAEgFkHQr8kAEIUTAAsgA3qnQQN2IA5qIBFxIRsMAgtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAMgBkIBhoNQBEAgIEEIaiIgIA5qIBFxIQ4gASEQDAELCyAPIBtqLAAAIgFBAE4EQCAPIA8pAwBCgIGChIiQoMCAf4N6p0EDdiIbai0AACEBCyAPIBtqIAw6AAAgDyAbQQhrIBFxakEIaiAMOgAAIAAgACgCJCABQQFxayIKNgIkIAAgACgCKEEBaiIQNgIoIA8gG0ECdGtBBGsgACgCGCIBNgIAAkAgASAAKAIQRw0AAkBB////PyAKIBBqIhAgEEH///8/TxsiCiABa0EBTQRAIAAoAhQhDgwBCyAAKAIUIQ4gASAQSw0AIAtBCGogASAOIApBBEEQEKURIAsoAghBAUYNACALKAIMIRAgACAKNgIQIAAgEDYCFCABIApHDQEgAEEQahCZEgwBCyALQQhqIAEgDiABQQFqIgpBBEEQEKURIAsoAghBAUYNAiALKAIMIRAgACAKNgIQIAAgEDYCFAsgACABQQFqNgIYIAAoAhQgAUEEdGoiACAeNgIMIAAgAjYCCCAAIBU2AgQgACACNgIACyALQdAAaiQAIAEPCyALKAIQGiALKAIMEKcUAAuNDAEHfyMAQfAAayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAKsAiIFIAJLBEACQAJAAkACQAJAAkACQEECQQAgASgCqAIgAkEobGoiBSgCCCIGQQFGG0EBIAYbQQFrDgIAAQILIAYNByAFKAIMIgUgASgCHCIGTw0IAn8gASgCGCAFQfAAbGoiBSgCAARAIAUoAgQiBSABKAJwTw0LIARBfzYCRCAEIAEoAmwgBUEEdGoiBSgCBCIHNgJIIAUoAggMAQsgBSgCWCIHIAEoAqACIgZPDQsgASgCnAIiCSAHQSRsaiIIQSBqKAIAIgogBSgCXCIHTQ0MIAhBHGooAgAgB0HUAGxqIgcoAgBBgoCAgHhHDQ0gBSgCZCIIIAZPDQ4gBSgCaCIFIAkgCEEkbGoiBkEgaigCACIITw0PIAZBHGooAgAgBUHUAGxqIgYoAgBBgoCAgHhHDRAgBygCCCEIIAcoAgwhBSAGKAIIIQcgBCAGKAIMIgY2AlwgBCAHNgJYIAQgCDYCUCAEIAU2AlQCQCAIIAcgBSAGIAUgBkkbEI8TIgcgBSAGayAHG0EATgRAIAQgBEHQAGqtQoCAgIDQAYQ3A2ggBCAEQdgAaq1CgICAgNABhDcDYAwBCyAEIARB2ABqrUKAgICA0AGENwNoIAQgBEHQAGqtQoCAgIDQAYQ3A2ALIARBxABqQYaBwAAgBEHgAGoQuAwgBCgCSCEHIAQoAkwLIQUgBEEANgJoIARCgICAgBA3AmAgBEHgAGoiCUEAQQFBAUEBELMRIAQoAmQiCCAEKAJoIgZqQd8AOgAAIAQgBkEBaiIGNgJoAkACQCAEKAJgIAZrIAVJBEAgCSAGIAVBAUEBELMRIAQoAmQhCCAEKAJoIQYMAQsgBUUNAQsgBUUNACAGIAhqIAcgBfwKAAALIAQgBCkCYDcCFCAEIAUgBmo2AhwgBEF+NgI4IARBADYCECAEQoCAgIBgNwIoIARCgICAgMAANwIgIAQoAkQiBUEASgRAIAQoAkgiB0EEaygCACIIQXhxIQYgBkEEQQggCEEDcSIIGyAFakkNESAIQQBHIAYgBUEnaktxDRIgBxC8BQsgASgCrAIiBSACTQ0CIAQgAUEIajYCYCAEIAEoAqgCIAJBKGxqKQIYNwJkIARBCGogBEHgAGoQpQ0gBCgCCCICRQ0DIAQoAgwhAQwEC0Hck8kAQcUBQcCUyQAQvxMACyAFKAIcIQIgBSgCGCEFIAEgASgCACIGQQFqNgIAIAZBAEgNECAEIAI2AmggBCAFNgJkIAQgATYCYCAAIARB4ABqIAMQnAQgASABKAIAIgBBAWs2AgAgAEEBRw0UIAEQMAwUCyACIAVBzJPJABCFEwALIAMoAkAiAigCCEF/Rg0BIAIoAhAhASACKAIMIQILIAFBAEgNDgJAIAFFBEBBASEDDAELIAEQkAEiA0UNESABRQ0AIAMgAiAB/AoAAAsgBCABNgJAIAQgAzYCPCAEIAE2AjgLQeACEJABIgFFDQ4gAUKBgICAcDcCbCABQeiNyQA2AmggAUF/NgJkIAFBfjYCWCABQf8BOgCkASABQXw2AhAgAUKBgICAcDcCnAIgAUHpjckANgKYAiABQX82ApQCIAFBADoArAEgAUEAOwGqASABQX42AgAgAUF+NgKIAiABQf8BOgDUAiABQXw2AsABIAFBADoA3AIgAUEAOwHaAiABQX42ArABIARBAjYCaCAEIAE2AmQgBEECNgJgIAAgBEEQaiAEQeAAahC1CAwQCyACIAVB9P7IABCFEwALQaCryQBBKEGMvMQAEK8UAAsgBSAGQeT+yAAQhRMAC0GEucQAEJ0VAAsgByAGQcy7xAAQhRMACyAHIApBzLvEABCFEwALQcy7xAAQnRUACyAIIAZBzLvEABCFEwALIAUgCEHMu8QAEIUTAAtBzLvEABCdFQALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQLAAsQnhUAC0G48MkAQQE6AAAAC0EBEKcUAAsgBEHwAGokAAvPCgEJfyMAQcABayIFJAAgAyADKAIAIgZBAWo2AgACQAJAAkACQAJAAkAgBkEASA0AIAVBEGogAyAEEOEJIAUoAhQhBiAFKAIQIQcgAyADKAIAIghBAWo2AgAgCEEASA0AIAVBADoAdCAFIAc2AmAgBSABOgBVIAVBHDoAVCAFQQA2AnggBUF/NgIoIAVBADYCICAFQQA2AhggBUF/NgJEIAVBAjYCNCAFIAY2AmQgBSAENgJcIAUgAzYCWAJAIAMoAhwiASAESwRAIAMoAhggBEHwAGxqIgEoAmghBiABKAJkIQEgAyADKAIAIgdBAWo2AgAgB0EASA0CIAUgBjYCQCAFIAE2AjwgBSADNgI4IAVBADYCNEEMEJABIgZFDQcgBiACNgIIIAYgBDYCBCAGIAM2AgBBGBCQASIBRQ0BIAFBADoAFCABQZTpxwA2AgwgASAGNgIIIAFCgYCAgBA3AgAgBSABNgJ4IAVB/ABqIAMgBBDXCSAFQaABaiAFKAKAASAFKAKEARCHCAJAIAUoAqABIgtBf0cEQCAFKAKkASIHIAUoAqgBIgxBFGxqIQogByECAkACQCAMRQ0AA0AgBSACKAIQNgKYASAFIAIpAgg3A5ABIAUgAikCADcDiAEgBUGgAWoiASAFQYgBahCNBAJAIAUoAqABIgZBfkYiDQ0AIAZBf0cEQCABEIYEDAELIAUoAqQBIgEEQCAFKAKoASIIQQRrKAIAIglBeHEhBiAGQQRBCCAJQQNxIgkbIAFqSQ0MIAlBAEcgBiABQSdqS3ENDSAIELwFCyAFKAK0ASEIIAUoArgBIgEEQCAIIQYDQCAGEIYEIAZBIGohBiABQQFrIgENAAsLIAUoArABIgZFDQAgCEEEaygCACIJQXhxIQEgASAGQQV0IgZBBEEIIAlBA3EiCRtySQ0LIAlBAEcgASAGQSdqS3ENDCAIELwFCyAFKAKYASIGKAIAIQEgBiABQQFrNgIAIAFBAUYEQCAFKAKYARAwCyACQRRqIQIgDQ0BIAIgCkcNAAtBACEIDAELIAxBAEchCCAKIAJrQRRuIQEgAiAKRg0AIAJBEGohBgNAIAYoAgAiCigCACECIAogAkEBazYCACACQQFGBEAgBigCABAwCyAGQRRqIQYgAUEBayIBDQALCyALBEAgB0EEaygCACICQXhxIQEgASALQRRsIgZBBEEIIAJBA3EiAhtqSQ0IIAJBAEcgASAGQSdqS3ENCSAHELwFCyAFQfwAahDqBCAFKAJ8IgIEQCAFKAKAASIGQQRrKAIAIgdBeHEhASABIAJByAFsIgJBBEEIIAdBA3EiBxtqSQ0IIAdBAEcgASACQSdqS3ENCSAGELwFCyAFQQhqIANBCGoiByAEENEQIAUoAgwiAUEASA0FIAFFBEBBASECDAcLIAUoAgghBiABEJABIgINAUEBEKcUAAtBxPjHAEElQdSIyAAQwBMACyABRQ0EIAIgBiAB/AoAAAwECyAEIAFB5P7IABCFEwALDAULAAsQnhUAC0HkABCQASIGBEAgBiAFQRhqQeQA/AoAACAAIAE2AkAgACACNgI8IAAgATYCOCAAQQE2AiggACAGNgIkIABBATYCICAAQX42AgAgAEEBOwFEIABBADYCNCAAQoCAgIDAADcCLCAIIAcgBBD3EC0AWEVxRQRAIABBADoARAsgAyADKAIAIgBBAWs2AgAgAEEBRgRAIAMQMAsgBUHAAWokAA8LDAILQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0G48MkAQQE6AAAAC9UKAgJ+CX8jAEEQayILJAACQCABRQ0AAkAgAWdBH3MiBkEOSQRAIAAoAggiCCAGQQN0KAKo2khqQcAASQ0BQQAhCEEBIQYDQAJAIAEgBnFFDQAgCEEOTwRAIAhBDkGk28gAEIUTAAsgCEEDdCIEKAKk2kghBwJAAkACQAJAAkAgCEEETwRAIAAoAgQhCSAAKAIIIgUgBCgCqNpIIgRJDQEgC0EEaiAHIAQgCSAFEJgCDAILIAAoAggiDEUNAiAHNQIAIQMgDEEBa0H/////A3EiB0EBaiIFQQNxIQpCACECIAAoAgQiCSEEAkAgB0EDTwRAIAVB/P///wdxIQcDQCAEIAQ1AgAgA34gAnwiAj4CACAEQQRqIgU1AgAgA34gAkIgiHwhAiAFIAI+AgAgBEEIaiIFNQIAIAN+IAJCIIh8IQIgBSACPgIAIARBDGoiBTUCACADfiACQiCIfCECIAUgAj4CACACQiCIIQIgBEEQaiEEIAdBBGsiBw0ACyAKRQ0BCwNAIAQgBDUCACADfiACfCICPgIAIARBBGohBCACQiCIIQIgCkEBayIKDQALCyACUA0CIAKnIQQgACgCACAMRgRAIAAQmxIgACgCBCEJCyAAIAxBAWo2AgggCSAMQQJ0aiAENgIAIAEgBnMhAQwFCyALQQRqIAkgBSAHIAQQmAILIAAoAgAiBQRAIAlBBGsoAgAiBEF4cSEHIAcgBUECdCIFQQRBCCAEQQNxIgQbakkNAiAEQQBHIAcgBUEnaktxDQMgCRC8BQsgACALKAIMNgIIIAAgCykCBDcCAAsgASAGcyEBDAILQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyAGQQF0IQYgCEEBaiEIIAENAAsMAgsgBkEOQZTbyAAQhRMACyABQQ1PBEAgCEUNASAAKAIEIQYDQAJAIAAoAggiCUUNACAJQQFrQf////8DcSIHQQFqIgVBA3EhCkIAIQIgBiEEAkAgB0EDTwRAIAVB/P///wdxIQcDQCAEIAQ1AgBCleeJxgR+IAJ8IgI+AgAgBEEEaiIFNQIAQpXnicYEfiACQiCIfCECIAUgAj4CACAEQQhqIgU1AgBCleeJxgR+IAJCIIh8IQIgBSACPgIAIARBDGoiBTUCAEKV54nGBH4gAkIgiHwhAiAFIAI+AgAgAkIgiCECIARBEGohBCAHQQRrIgcNAAsgCkUNAQsDQCAEIAQ1AgBCleeJxgR+IAJ8IgI+AgAgBEEEaiEEIAJCIIghAiAKQQFrIgoNAAsLIAJQDQAgAqchBCAAKAIAIAlGBEAgABCbEiAAKAIEIQYLIAAgCUEBajYCCCAGIAlBAnRqIAQ2AgALIAFBDWsiAUEMSw0ACyAAKAIIIQgLIAhFDQAgAUECdDUCtLRIIQMgCEEBa0H/////A3EiBUEBaiIGQQNxIQpCACECIAAoAgQiASEEAkAgBUEDTwRAIAZB/P///wdxIQcDQCAEIAQ1AgAgA34gAnwiAj4CACAEQQRqIgY1AgAgA34gAkIgiHwhAiAGIAI+AgAgBEEIaiIGNQIAIAN+IAJCIIh8IQIgBiACPgIAIARBDGoiBjUCACADfiACQiCIfCECIAYgAj4CACACQiCIIQIgBEEQaiEEIAdBBGsiBw0ACyAKRQ0BCwNAIAQgBDUCACADfiACfCICPgIAIARBBGohBCACQiCIIQIgCkEBayIKDQALCyACUA0AIAKnIQYgACgCACAIRgRAIAAQmxIgACgCBCEBCyAAIAhBAWo2AgggASAIQQJ0aiAGNgIACyALQRBqJAALlwsBGH8jAEHwAWsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIIIgggASgCBCILQaACaigCACICSQRAIAEoAgwiCiALQZwCaigCACAIQSRsaiICQSBqKAIAIgRPDQEgAkEcaigCACAKQdQAbGoiBCgCAEGAgICAeEcNAiAEKAIkIgJFDQogASgCACETIAQoAiAiBCACQdwAbCIHaiERA0AgAiAGRg0EIARB3ABqIQ8gBCgCAARAIAZBAWohBiAPIQQgB0HcAGsiBw0BDAwLCyALIAsoAgAiAkEBajYCACACQQBIDQQCQAJAIAsoAkwiCUUNACALQdAAaigCACEMA0AgCUEMaiENIAlBBGohBCAJLwGmCCIOQQxsIQdBfyECAkADQCAHRQRAIA4hAgwCCyAEKAIEIgUgCkkgBSAKS2sgBCgCACIFIAhJIAUgCEtrIAUgCEYbIgVB/wFxRQRAIA0oAgAiBSAGSSAFIAZLayEFCyAEQQxqIQQgB0EMayEHIA1BDGohDSACQQFqIQIgBUEBRg0ACyAFQf8BcUUNAwsgDEUNASAMQQFrIQwgCSACQQJ0aigCqAghCQwACwALQdS5xABBFkGEvsQAEMATAAsgCSACQdQAbGotANABIQIgAyALNgKMASADIAY2AogBIAMgCjYChAEgAyAINgKAASADQQE2AnwgA0EBQQIgAhs2AnggA0EYaiICIBMgA0H4AGoQtwMgAygCGEF/Rg0KQYADEJABIhBFDQUgECACQeAA/AoAACADQQE2AhQgAyAQNgIQIANBBDYCDAJAIA8gEUYNACALQaACaiEVIAhBJGwhFiALQZwCaiEXIApB1ABsIRggC0HQAGohGUEBIQwDQCAGQdwAbEHcAGohByAVKAIAIQIgBkEBaiEGA0AgAiAITQ0JIBcoAgAgFmoiBEEgaigCACIOIApNDQogBEEcaigCACAYaiIEKAIAQYCAgIB4Rw0LIAQoAiQiDiAGTQ0MIA9B3ABqIQ8gBCgCICAHaigCAARAIAdB3ABqIQcgBkEBaiEGIA8gEUcNAQwDCwsgASgCBCIUKAIAIQIgFCACQQFqNgIAIAJBAEgNBgJAAkAgCygCTCIJRQ0AIBkoAgAhEgNAIAlBDGohDSAJQQRqIQQgCS8BpggiDkEMbCEHQX8hAgJAA0AgB0UEQCAOIQIMAgsgBCgCBCIFIApJIAUgCktrIAQoAgAiBSAISSAFIAhLayAFIAhGGyIFQf8BcUUEQCANKAIAIgUgBkkgBSAGS2shBQsgBEEMaiEEIAdBDGshByANQQxqIQ0gAkEBaiECIAVBAUYNAAsgBUH/AXFFDQMLIBJFDQEgEkEBayESIAkgAkECdGooAqgIIQkMAAsAC0HUucQAQRZBhL7EABDAEwALIAkgAkHUAGxqLQDQASECIAMgFDYC7AEgAyAGNgLoASADIAo2AuQBIAMgCDYC4AEgA0EBNgLcASADQQFBAiACGzYC2AEgA0H4AGogEyADQdgBahC3AyADKAJ4QX9GDQEgAygCDCAMRgRAIANBDGogDEEBQQRB4AAQsxEgAygCECEQCyAQIAxB4ABsaiADQfgAakHgAPwKAAAgAyAMQQFqIgw2AhQgDyARRw0ACwsgACADKAIUNgIIIAAgAykCDDcCAAwLCyAIIAJB9LjEABCFEwALIAogBEH0uMQAEIUTAAtB9LjEABCdFQALIAIgAkGkvsQAEIUTCwALQQQQpxQACyAIIAJBlL7EABCFEwALIAogDkGUvsQAEIUTAAtBlL7EABCdFQALIAYgDkGkvsQAEIUTAAsgAEEANgIIIABCgICAgMAANwIACyABKAIEIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgQQMAsgA0HwAWokAAuRCwIGfhB/IwBBsANrIgokACAKQQhqIg0gAiADKAIMIhcRAgACQAJAIAooAngiE0F+Rg0AIApBmANqIRUgCkGsAmohDiANQfQAaiEMIAFBEGohGANAAkAgCkG4AWogCkEIakHwAPwKAAAgDiAMKQIANwIAIA4gDCkCCDcCCCAOIAwpAhA3AhAgDiAMKQIYNwIYIA4gDCkCIDcCICAOIAwpAig3AiggDiAMKQIwNwIwIA4gDCgCODYCOCAKIBM2AqgCQX8hDyAKKAKkAiEDIAooAqACIQsCQCAKKAKcAkF/RgRAIAshDQwBCyADRQRAQQAhD0EBIQ0MAQsgAxCQASINRQ0BIAMEQCANIAsgA/wKAAALIAMhDwsgASkDECEEIAEpAxghBSAVQgA3AwAgFUIANwMIIAogBTcDkAMgCiAENwOIAyAKIAVC88rRy6eM2bL0AIU3A4ADIAogBULt3pHzlszct+QAhTcD+AIgCiAEQuHklfPW7Nm87ACFNwPwAiAKIARC9crNg9es27fzAIU3A+gCIApB6AJqIgsgDSADEJYIIApB/wE6AK8DIAsgCkGvA2pBARCWCCAKKQOYAyAKNQKgA0I4hoQiByAKKQOAA4UiBCAKKQPwAnwiCCAEQhCJhSIEIAopA/gCIgUgCikD6AJ8IgZCIIl8IgkgBEIViYUhBCAEIAVCDYkgBoUiBSAIfCIGQiCJQv8BhXwiCCAEQhCJhSEEIAQgBiAFQhGJhSIFIAcgCYV8IgZCIIl8IgcgBEIViYUhBCAEIAYgBUINiYUiBSAIfCIGQiCJfCIIIARCEImFIQQgBCAGIAVCEYmFIgUgB3wiBkIgiXwiByAEQhWJhSEEIAQgBUINiSAGhSIFIAh8IgZCIIl8IgggBUIRiSAGhSIFIAd8IAVCDYmFIgV8IgYgBEIQiSAIhUIViSAFQhGJhSAGQiCIhYUhBCABKAIIRQRAIAEgGBCiAwsgASgCBCISIASncSERIARCGYgiBkL/AINCgYKEiJCgwIABfiEHIAEoAgAhC0EAIRRBACEWA0ACQAJAAkACQAJAIAsgEWopAAAiBSAHhSIEQoGChIiQoMCAAX0gBEJ/hYNCgIGChIiQoMCAf4MiBEIAUgRAA0AgCyAEeqdBA3YgEWogEnFBdGxqIhlBBGsoAgAgA0YEQCANIBlBCGsoAgAgAxCPE0UNAwsgBEIBfSAEgyIEQgBSDQALCyAFQoCBgoSIkKDAgH+DIQQgFEUEQCAEUA0CIAR6p0EDdiARaiAScSEQCyAEIAVCAYaDUARAQQEhFAwFCyALIBBqLAAAIgJBAE4EQCALIAspAwBCgIGChIiQoMCAf4N6p0EDdiIQai0AACECCyALIBBqIAanQf8AcSIOOgAAIAsgEEEIayAScWpBCGogDjoAACABIAEoAgggAkEBcWs2AgggASABKAIMQQFqNgIMIAsgEEF0bGoiAUEMayAPNgIAIAFBCGsgDTYCACABQQRrIAM2AgAgACAKQQhqQfAA/AoAACAAIAwoAjg2AqwBIAAgDCkCMDcCpAEgACAMKQIoNwKcASAAIAwpAiA3ApQBIAAgDCkCGDcCjAEgACAMKQIQNwKEASAAIAwpAgg3AnwgACAMKQIANwJ0IAAgEzYCcAwJCyAPQQBKBEAgDUEEaygCACILQXhxIQMgA0EEQQggC0EDcSILGyAPakkNAiALQQBHIAMgD0EnaktxDQMgDRC8BQsgCkG4AWoQlwQgCkEIaiACIBcRAgAgCigCeCITQX5HDQYMBwtBACEUDAILQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyAWQQhqIhYgEWogEnEhEQwACwALC0EBEKcUAAsgAEF+NgJwCyAKQbADaiQAC6MMAQl/IwBB8AJrIgMkACABKAIUIQIgA0HAAWogARCfCkEBIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCwAFBAWsODAsAAQIDBAUGBwgJCgwLQQMhBAwLC0EEIQQMCgtBBSEEDAkLQQYhBAwICyACQdAAaigCACIEKAIAIQIgBCACQQFqNgIAIAJBAE4EQCADKALIASECIAMoAsQBIQUgBCAEKAIAIgZBAWo2AgAgBkEATg0JCwALQcyLyQBBpwFB7PPHABC/EwALQQohBAwFC0EIIQQMBAtBByEEDAMLQQshBAwCC0GwjMkAQasBQfzzxwAQvxMAC0ECIQQLIANBE2pBADoAACADQQA7ABEgA0EBOgBAIANBEjoAICADIAQ6ABAgA0ECNgIMIANBwAFqIANBDGpB5AD8CgAADAELIANBE2pBADoAACADQQA7ABEgA0EBOgBAIAMgAjYCLCADIAU2AiggAyAENgIkIANBEjoAICADIAI2AhwgAyAFNgIYIAMgBDYCFCADQQE6ABAgA0EDNgIMIANBxAFqIANBEGoQoAcgA0EDNgLAAQsCQAJAQeQAEJABIgYEQCAGIANBwAFqIgJB5AD8CgAAQeQAEJABIgRFDQIgBiAEELgPIANBBDYCwAEgAyAENgLEASABELUQIQUgA0HIAmogAhC1DCADQQA7AewCIANBBjYC6AIgA0GB8ccANgLkAiADQoCAgIBwNwLcAiADQoCAgIDAADcC1AJBfiEEIANBfjYCqAIgAyICAn8CQCAFBEAgAkH8AGogAkGoAmpBBHJBwQD8CgAADAELIAIoAtACIgMgAigCyAJGBEAgAkHIAmoQmBIgAi8B7gIhByACKAKoAiEECyACKALMAiADQeQAbGoiBUEAOgAEIAVBAjYCACACIANBAWo2AtACIAJB/ABqIAJBqAJqQQRyQcEA/AoAAEEIIQVBACAEQX1GDQEaC0HIABCQASIFRQ0CIAUgBDYCACAFQQRqIAJB/ABqQcEA/AoAACAFIAc7AUYgBUEBOgBFQQELIgM2AnggAiAFNgJ0IAIgAzYCcCACQcABaiIEIAJBDGpB5AD8CgAAIAJByAJqIgUgBBC1DCACQQA7AewCIAJBAzYC6AIgAkHU8McANgLkAiACQoCAgIBwNwLcAiACQoCAgIDAADcC1AIgAkF+NgKoAiABELUQRQRAIAIoAtACIgQgAigCyAJGBEAgBRCYEiACLwHuAiEHCyACKALMAiAEQeQAbGoiBUEAOgAEIAVBAjYCACACIARBAWo2AtACCyACQcABaiIFIAJBqAJqIglBxQD8CgAAIAJB8ABqIgoQqRIgAigCdCIEIANByABsaiIIIAVBxQD8CgAAIAggBzsBRiAIQQE6AEUgAiADQQFqIgc2AnggAiAGNgLEASACQQQ2AsABIAkgBRC1DCAFIAIoAqwCIAIoArACEKgOIAcgAigCcCIGRgRAIAoQqRIgAigCcCEGIAIoAnQhBAsgBCAHQcgAbGoiBUF+NgIAIAUgAikDwAE3AyAgBSACKALIATYCKCAFQYACOwFEIAVBCDYCQCAFQdfwxwA2AjwgBUKAgICAcDcCNCAFQoCAgIDAADcCLCACIANBAnIiBTYCeCAFIAZGBEAgAkHwAGoQqRIgAigCdCEECyAEIAVByABsaiIEQX42AgAgBCACKQOoAjcDICAEIAIoArACNgIoIARBgAI7AUQgBEEHNgJAIARB3/DHADYCPCAEQoCAgIBwNwI0IARCgICAgMAANwIsIAIgA0EDaiIFNgJ4QeQAEJABIgRFDQIgBEEGOgAEIARBAjYCACACKAJwIAVGBEAgAkHwAGoQqRILIAAgAikCcDcCACAAIANBBHI2AgggAigCdCAFQcgAbGoiAEEAOwFEIABBBzYCQCAAQebwxwA2AjwgAEF/NgI4IABCBDcDMCAAQgE3AyggACAENgIkIABBATYCICAAQX42AgAgASgCECIDKAIAIQAgAyAAQQFrNgIAIABBAUYEQCABKAIQEDALIAJB8AJqJAAPCwwBC0EIEKcUAAtBuPDJAEEBOgAAAAvNCQEJfwJAAkBBAyABKAIAIgJBG2sgAkEaTRtBAyAAKAIAIgJBG2sgAkEaTRsiAkcNAAJAAkACQAJAAkACQCACQQFrDgMBAgMACyAAKAIEIgQgASgCBEcNBSABKAIIIQIgACgCCCEDAkAgBARAIAIgA0cNByAAKAIMIAEoAgxHDQcgACgCECABKAIQRg0BDAcLIAIgA0cNBgsgACgCICIDIAEoAiBHDQUCQCADRQ0AIAAoAhwhCSABKAIcIQpBACECA0AgAiAKaiIEKAIAIghBAkYgAiAJaiIFKAIAIgZBAkdGDQgCQAJAAkAgBkECRwRAIAYgCEYNAQwMCyAFQQhqKAIAIARBCGooAgBGDQEMCwsCQCAFQQRqKAIAIARBBGooAgBHIggNACAGQQFxRQ0AIAVBCGooAgAgBEEIaigCAEcNCyAFQQxqKAIAIARBDGooAgBGDQEMCwsgCA0KIAZBAXENAQsgAkEUaiECIANBAWsiA0UNAgwBCwsMBwsgAC0AJCABLQAkRw0FIAEtACUhASAALQAlIgBBAkcEQCAAIAFGDwsgAUECRg8LIAAoAgQiBCABKAIERw0EIAEoAgghAiAAKAIIIQMCQCAEBEAgAiADRw0GIAAoAgwgASgCDEcNBiAAKAIQIAEoAhBGDQEMBgsgAiADRw0FCyAALQAYIAEtABhHDQQgAC0AGSABLQAZRg8LIAAoAgwiAyABKAIMRw0DIANFDQIgACgCCCEJIAEoAgghCkEAIQIMAQsgACgCKCIFIAEoAihHDQICQCAFRQ0AIAAoAiQhBiABKAIkIQlBACECA0AgAiAGaiIEKAIAIgogAiAJaiIDKAIARw0FAkACQCAKBEAgBEEEaigCACADQQRqKAIARw0IIARBCGooAgAgA0EIaigCAEcNCCAEQQxqKAIAIANBDGooAgBGDQEMCAsgBEEEaigCACADQQRqKAIARw0BCyACQRRqIQIgBUEBayIFRQ0CDAELCwwECyAALQA4IAEtADhHDQIgACABEMADRQ0CIAAoAjQiBCABKAI0Rw0CIARFBEBBAQ8LIAAoAjAhBSABKAIwIQZBACEBA0AgASAGaiIAKAIAIgdBAkYgASAFaiICKAIAIgNBAkdGDQQCQAJAAkAgA0ECRwRAIAMgB0YNAQwICyACQQhqKAIAIABBCGooAgBGDQEMBwsCQCACQQRqKAIAIABBBGooAgBHIgcNACADQQFxRQ0AIAJBCGooAgAgAEEIaigCAEcNByACQQxqKAIAIABBDGooAgBGDQEMBwsgBw0GIANBAXENAQsgAUEUaiEBQQEhByAEQQFrIgRFDQQMAQsLDAMLA0AgAiAKaiIEKAIAIghBAkYgAiAJaiIFKAIAIgZBAkdGDQMCQAJAAkAgBkECRwRAIAYgCEYNAQwHCyAFQQhqKAIAIARBCGooAgBGDQEMBgsCQCAFQQRqKAIAIARBBGooAgBHIggNACAGQQFxRQ0AIAVBCGooAgAgBEEIaigCAEcNBiAFQQxqKAIAIARBDGooAgBGDQEMBgsgCA0FIAZBAXENAQsgAkEUaiECIANBAWsiA0UNAgwBCwsMAgsgAC0AECABLQAQRw0AIAAtABEgAS0AEUYhBwsgBw8LQQALpggBB38CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEOIAAoAgAiAUENayABQQxNGw4OAQkCCQkDBAUJCQYJBwgACwJAIAAoAhQiAUF/Rg0AIAFFDQAgACgCGCICQQRrKAIAIgRBeHEhAyADQQRBCCAEQQNxIgQbIAFqSQ0KIARBAEcgAyABQSdqS3ENCyACELwFCyAAKAIMIQMgACgCECICBEAgAyEBA0AgARCGBCABQSBqIQEgAkEBayICDQALCyAAKAIIIgIEQCADQQRrKAIAIgRBeHEhASABIAJBBXQiAkEEQQggBEEDcSIEG3JJDQogBEEARyABIAJBJ2pLcQ0LIAMQvAULIAAQwBIPCyAAKAIEIgFFDQcgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0IIAJBAEcgACABQSdqS3ENCSADELwFDAcLIAAoAgQiAUUNBiAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQcgAkEARyAAIAFBJ2pLcQ0IDAkLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABEIYEIAFBIGohASACQQFrIgINAAsLIAAoAgQiAUUNBSADQQRrKAIAIgJBeHEhACAAIAFBBXQiAUEEQQggAkEDcSICG3JJDQYgAkEARyAAIAFBJ2pLcQ0HDAgLIAAoAgQiAUUNBCAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQUgAkEARyAAIAFBJ2pLcQ0GDAcLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABKAIAIgQEQCABQQRqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQcgBUEARyAGIARBJ2pLcQ0IIAcQvAULIAFBEGoQhgQgAUEwaiEBIAJBAWsiAg0ACwsgACgCBCIBRQ0DIANBBGsoAgAiAkF4cSEAIAAgAUEwbCIBQQRBCCACQQNxIgIbckkNBCACQQBHIAAgAUEnaktxDQUMBgsgACgCCCIBRQ0CIAAoAgwiA0EEaygCACICQXhxIQAgACABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0DIAJBAEcgACABQSdqS3ENBAwFCyAAKAIEIgFFDQEgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0CIAJBAEcgACABQSdqS3ENAwwECwJAIAAoAgwiAUF/Rg0AIAFFDQAgACgCECICQQRrKAIAIgRBeHEhAyADQQRBCCAEQQNxIgQbIAFqSQ0CIARBAEcgAyABQSdqS3ENAyACELwFCyAAQQRqEMASDwsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgAxC8BQumCAEHfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQ4gACgCACIBQQ1rIAFBDE0bDg4BCQIJCQMEBQkJBgkHCAALAkAgACgCFCIBQX9GDQAgAUUNACAAKAIYIgJBBGsoAgAiBEF4cSEDIANBBEEIIARBA3EiBBsgAWpJDQogBEEARyADIAFBJ2pLcQ0LIAIQvAULIAAoAgwhAyAAKAIQIgIEQCADIQEDQCABEIcEIAFBIGohASACQQFrIgINAAsLIAAoAggiAgRAIANBBGsoAgAiBEF4cSEBIAEgAkEFdCICQQRBCCAEQQNxIgQbckkNCiAEQQBHIAEgAkEnaktxDQsgAxC8BQsgABDAEg8LIAAoAgQiAUUNByAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQggAkEARyAAIAFBJ2pLcQ0JIAMQvAUMBwsgACgCBCIBRQ0GIAAoAggiA0EEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNByACQQBHIAAgAUEnaktxDQgMCQsgACgCCCEDIAAoAgwiAgRAIAMhAQNAIAEQhwQgAUEgaiEBIAJBAWsiAg0ACwsgACgCBCIBRQ0FIANBBGsoAgAiAkF4cSEAIAAgAUEFdCIBQQRBCCACQQNxIgIbckkNBiACQQBHIAAgAUEnaktxDQcMCAsgACgCBCIBRQ0EIAAoAggiA0EEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNBSACQQBHIAAgAUEnaktxDQYMBwsgACgCCCEDIAAoAgwiAgRAIAMhAQNAIAEoAgAiBARAIAFBBGooAgAiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyAEakkNByAFQQBHIAYgBEEnaktxDQggBxC8BQsgAUEQahCHBCABQTBqIQEgAkEBayICDQALCyAAKAIEIgFFDQMgA0EEaygCACICQXhxIQAgACABQTBsIgFBBEEIIAJBA3EiAhtySQ0EIAJBAEcgACABQSdqS3ENBQwGCyAAKAIIIgFFDQIgACgCDCIDQQRrKAIAIgJBeHEhACAAIAFBAnQiAUEEQQggAkEDcSICG2pJDQMgAkEARyAAIAFBJ2pLcQ0EDAULIAAoAgQiAUUNASAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQIgAkEARyAAIAFBJ2pLcQ0DDAQLAkAgACgCDCIBQX9GDQAgAUUNACAAKAIQIgJBBGsoAgAiBEF4cSEDIANBBEEIIARBA3EiBBsgAWpJDQIgBEEARyADIAFBJ2pLcQ0DIAIQvAULIABBBGoQwBIPCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyADELwFC6YIAQd/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBDiAAKAIAIgFBDWsgAUEMTRsODgEJAgkJAwQFCQkGCQcIAAsCQCAAKAIUIgFBf0YNACABRQ0AIAAoAhgiAkEEaygCACIEQXhxIQMgA0EEQQggBEEDcSIEGyABakkNCiAEQQBHIAMgAUEnaktxDQsgAhC8BQsgACgCDCEDIAAoAhAiAgRAIAMhAQNAIAEQiAQgAUEgaiEBIAJBAWsiAg0ACwsgACgCCCICBEAgA0EEaygCACIEQXhxIQEgASACQQV0IgJBBEEIIARBA3EiBBtySQ0KIARBAEcgASACQSdqS3ENCyADELwFCyAAEMASDwsgACgCBCIBRQ0HIAAoAggiA0EEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNCCACQQBHIAAgAUEnaktxDQkgAxC8BQwHCyAAKAIEIgFFDQYgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0HIAJBAEcgACABQSdqS3ENCAwJCyAAKAIIIQMgACgCDCICBEAgAyEBA0AgARCIBCABQSBqIQEgAkEBayICDQALCyAAKAIEIgFFDQUgA0EEaygCACICQXhxIQAgACABQQV0IgFBBEEIIAJBA3EiAhtySQ0GIAJBAEcgACABQSdqS3ENBwwICyAAKAIEIgFFDQQgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0FIAJBAEcgACABQSdqS3ENBgwHCyAAKAIIIQMgACgCDCICBEAgAyEBA0AgASgCACIEBEAgAUEEaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIARqSQ0HIAVBAEcgBiAEQSdqS3ENCCAHELwFCyABQRBqEIgEIAFBMGohASACQQFrIgINAAsLIAAoAgQiAUUNAyADQQRrKAIAIgJBeHEhACAAIAFBMGwiAUEEQQggAkEDcSICG3JJDQQgAkEARyAAIAFBJ2pLcQ0FDAYLIAAoAggiAUUNAiAAKAIMIgNBBGsoAgAiAkF4cSEAIAAgAUECdCIBQQRBCCACQQNxIgIbakkNAyACQQBHIAAgAUEnaktxDQQMBQsgACgCBCIBRQ0BIAAoAggiA0EEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNAiACQQBHIAAgAUEnaktxDQMMBAsCQCAAKAIMIgFBf0YNACABRQ0AIAAoAhAiAkEEaygCACIEQXhxIQMgA0EEQQggBEEDcSIEGyABakkNAiAEQQBHIAMgAUEnaktxDQMgAhC8BQsgAEEEahDAEg8LDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAMQvAULzAkCEn8CfiMAQdACayIQJABCgICAgICAgIDAACABrSIXgCEYIBcgGH5CgICAgICAgIDAAFKtAn8gAUGBIE8EQEEBIAFBAXJnQR9zIgVBAXEgBUEBdmoiBXQgASAFdmpBAXYMAQtBwAAgASABQQF2ayIFIAVBwABPGwshEiAYfCEYIABBAWshFEEBIQcDQEEAIQ1BASEJIAEgDksiFQRAIAAgDmohCSAOrSIXAn8CQCABIA5rIgYgEkkNAAJAIAZBAkkEQCAGIQUMAQsCQAJAAkACQCAJLQABIgwgCS0AAEkiCkUEQEECIQUgBkECRg0FA0AgDEH/AXEgBSAJai0AACIMSw0DIAYgBUEBaiIFRw0ACwwBCyAGQQJGDQJBAiEFA0AgDEH/AXEgBSAJai0AACIMTQ0CIAYgBUEBaiIFRw0ACwsgBiEFCyAFIBJJDQMgCkUNAiAFQQF2IgpFDQIgBSAJaiENQQAhBiAKQQFGDQEgCkEBcSAFQQFrIQwgCkH+////B3EhCwNAIAkgDGoiCi0AACEPIAogBiAJaiIKLQAAOgAAIAogDzoAACANIAZBfnNqIg8tAAAhEyAPIApBAWoiCi0AADoAACAKIBM6AAAgDEECayEMIAsgBkECaiIGRw0AC0UNAgwBC0ECIQUgCUECaiENQQAhBgsgBiAJaiIJLQAAIQwgCSANIAZBf3NqIgYtAAA6AAAgBiAMOgAACyAFQQF0QQFyDAELIAYgEiAGIBJJG0EBdCAERQ0AGiAJQSAgBiAGQSBPGyIFIAIgA0EAQQAQ2wEgBUEBdEEBcgsiCUEBdiAOaq18IBh+IA4gB0EBdmutIBd8IBh+hXmnIQ0LAkACQCAIQQJJDQAgDiAUaiEKIAAgDmohFgNAIAhBAWsiDCAQQY4CamotAAAgDUkNAQJ/AkACQCADIBBBBGogDEECdGooAgAiC0EBdiIFIAdBAXYiBmoiEU8gByALckEBcUVxRQRAIAAgDiARa2ohCCALQQFxRQ0BDAILIBFBAXQMAgsgCCAFIAIgAyAFQQFyZ0EBdEE+c0EAENsBCyAHQQFxRQRAIAUgCGogBiACIAMgBkEBcmdBAXRBPnNBABDbAQsCQCAGRQ0AIAVFDQAgBiAFIAUgBksiCxsiBiADSw0AIAUgCGohByAGBEAgAiAHIAggCxsgBvwKAAALIAIgBmohBQJAIAtFBEAgAiEGA0AgBy0AACILIAYtAAAiD0khEyAIIAsgDyATGzoAACAIQQFqIQggBSAGIAsgD09qIgZGDQIgFiAHIBNqIgdHDQALDAELIAohBgNAAkAgBiAFQQFrIgUtAAAiCyAHQQFrIg8tAAAiByAHIAtJGzoAACAFIAcgC0tqIQUgCCAPIAcgC01qIgdGDQAgBkEBayEGIAIgBUcNAQsLIAchCCACIQYLIAUgBmsiBUUNACAIIAYgBfwKAAALIBFBAXRBAXILIQdBASEFIAwiCEEBSw0ACwwBCyAIIQULIBBBjgJqIAVqIA06AAAgEEEEaiAFQQJ0aiAHNgIAIBUEQCAFQQFqIQggCUEBdiAOaiEOIAkhBwwBCwsgB0EBcUUEQCAAIAEgAiADIAFBAXJnQQF0QT5zQQAQ2wELIBBB0AJqJAALyQwCCX8BfiMAQRBrIgokACABKAIkIQYgASgCICECIAEoAhwhAyABKAIUIQkgASgCECEFAkACQAJAAkACQAJAAkACQAJAIAEoAhgiBEEBRgRAIAUNASACDQNBAiEFDAULIAJFDQdBASECIAVFDQELIAJFDQIgBkHjAE0NAkEAIQUMAwsgBkHjAE0NA0EAIQUMAgtBACEFIAZB4wBLDQEgA0EASARAQQEhBQwCCyADrELkAH4iC6chAiALQiCIpyACQR91Rw0BIAZBAEggAiACIAZqIglKcw0BDAMLQQEhBSAJQQBIDQAgBEEBcyAJQeQAbiIEIANGckEBRw0AIAJBAXMgBiAJIARB5ABsa0ZyDQMLIAAgBToAAUEBIQUMAwtB0A9B7A4gBkHGAEkbIAZqIQkLQQEhBQsgASgCPCEIIAEoAjghByABKAI0IQYgASgCLCEEIAEoAighAgJAAkACQAJAAkACQAJAAkAgASgCMCIDQQFGBEAgAg0BIAcNA0ECIQIMBQsgB0UNB0EBIQcgAkUNAQsgB0UNAiAIQeMATQ0CQQAhAgwDCyAIQeMATQ0DQQAhAgwCC0EAIQIgCEHjAEsNASAGQQBIBEBBASECDAILIAasQuQAfiILpyEDIAtCIIinIANBH3VHDQEgCEEASCADIAMgCGoiBEpzDQEMAwtBASECIARBAEgNACADQQFzIARB5ABuIgMgBkZyQQFHDQAgB0EBcyAIIAQgA0HkAGxrRnINAwsgACACOgABQQEhBQwDC0HQD0HsDiAIQcYASRsgCGohBAtBASECCwJAAkACQAJAAkACQAJAIAVFDQACQAJAAkACQCABKAJIQQFGBEAgASgCcA0BCyABKAJoRQ0CIAlB//8Pa0GCgGBJDQEgASgCbCIEQe8Ca0GSfUkNASAJQZADbyICQR91QZADcSACakH8tMIAai0AACAEQQR0IAlBDXRyciICQfg/cUHhLU8NASABIAIQxw5FDQUgASACEIALRQ0FIAEgAhC0EQ0HDAULIAEoAkwiA0EMSw0CIAEoAnQiBEEfSw0CIAlB//8Pa0GCgGBJDQIgCUGQA28iAkEfdUGQA3EgAmpB/LTCAGotAAAgBEEEdCADQQl0cnIiBEEDdiwArbtCIgJFDQIgASAEIAJBA3RrIAlBDXRyIgIQgAtFDQQgASACELQRDQYMBAsgAEEAOgABQQEhBQwJCwJAAkAgASgCUARAIAEtAKgBIgNB/wFHDQELIAEoAlgNAQwDCyAKQQhqIAkgASgCVCADQQYQyA5BASEFIAotAAhBAUYEQCAAIAotAAk6AAEMCgsgASAKKAIMIgIQxw5FDQMgASACEIALRQ0DIAEgAhC0EUUNAwwFCyABLQCoASIDQf8BRg0BIApBCGogCSABKAJcIANBABDIDkEBIQUgCi0ACEEBRgRAIAAgCi0ACToAAQwJCyABIAooAgwiAhDHDkUNAiABIAIQgAtFDQIgASACELQRDQQMAgsgAEEAOgABQQEhBQwHCyACRQ0FIAEoAmBFDQUgAS0AqAEiB0H/AUYNBUEAIQICQCABKAJkIgZBAWtBhgggBEGQA28iA0EfdUGQA3EgA2pB/LTCAGotAAAiCHZBAXFBNHJPDQACQCAGQQdsIAdqIgcgCEEHcSIDQQdqIAMgA0EDSRsiBksEQCAHIAZrIgdB7gIgCEEDdmsiBk0NASAEQQFqIgRBkANvIgNBH3VBkANxIANqQfy0wgBqLQAAIQggByAGayEHDAELIAcgBiAEQQFrIgRBkANvIgNBH3VBkANxIANqQfy0wgBqLQAAIghBA3Zqa0HuAmohBwsgB0HvAmtBkn1JDQAgBEH//w9rQYKAYEkNACAEQQ10IAdBBHRyIAhyIgJBACACQfg/cUHhLUkbIQILIAJFDQEgASACEMcORQ0AIAEgAhC0EQ0CC0EBIQUMAgsgAEEAOgABQQEhBQwECyABKAJAQQFGBEAgAkEDdkH/B3EiBEHdBU8NAkEBIQUgASgCRCAEIAQtAKTFRWpBBnZBAWtBA25BAWpHDQELIAAgAjYCBEEAIQUMAwsgAEEBOgABDAILIARB3QVBhMvFABCFEwALIABBAjoAAUEBIQULIAAgBToAACAKQRBqJAALvAoCDX8BfiMAQeABayIFJAAgASgCACEGIAEoAgQhAyABKAIIIQEgBUEANgIcIAVCgICAgIABNwIUIAVBADYCECAFQoCAgICAATcCCCABBEAgAyABQcgBbGohBEEIIQtBCCEIIAMhAQNAIAEpAwAhDyAFQSBqIAFBCGpBwAH8CgAAAkAgD0IFUgRAIAUoAhQgAkYEQCAFQRRqELASIAUoAhghCAsgCCACQcgBbGoiCSAPNwMAIAlBCGogBUEgakHAAfwKAAAgBSACQQFqIgI2AhwMAQsgBSgCCCAHRgRAIAVBCGoQsBIgBSgCDCELCyALIAdByAFsaiIJQgU3AwAgCUEIaiAFQSBqQcAB/AoAACAFIAdBAWoiBzYCEAsgBCABQcgBaiIBRw0ACwsCQAJAAkACQCAGBEAgA0EEaygCACIBQXhxIQQgBCAGQcgBbCIJQQRBCCABQQNxIgEbakkNAyABQQBHIAQgCUEnaktxDQQgAxC8BQsgBSgCHCIDIAUoAhAiCmoiDUGLro8FTw0AIAUoAgwhCSAFKAIYIQggBSgCFCEGIAUoAgghDgJAIA1FBEBBCCELDAELIA1ByAFsIgEQkAEiC0UNAgsCQCADRQRAQQAhAwwBCyADQcgBbEHIAWsiAkHIAW5BAWoiBEEHcSEHQQAhAyAIIQEgAkH4Ck8EQCAEQfj//x9xIQFBACECA0AgAiALaiIMIAIgCGoiBEHIAfwKAAAgDEHIAWogBEHIAWpByAH8CgAAIAxBkANqIARBkANqQcgB/AoAACAMQdgEaiAEQdgEakHIAfwKAAAgDEGgBmogBEGgBmpByAH8CgAAIAxB6AdqIARB6AdqQcgB/AoAACAMQbAJaiAEQbAJakHIAfwKAAAgDEH4CmogBEH4CmpByAH8CgAAIAJBwAxqIQIgASADQQhqIgNHDQALIAdFDQEgAiAIaiEBCyADIAdqIAdByAFsIQIgCyADQcgBbGohBwNAIAcgAUHIAfwKAAAgB0HIAWohByABQcgBaiEBIAJByAFrIgINAAshAwsgBgRAIAhBBGsoAgAiAUF4cSECIAIgBkHIAWwiBEEEQQggAUEDcSIBG2pJDQMgAUEARyACIARBJ2pLcQ0EIAgQvAULAkAgCkUEQCADIQQMAQsCQCAKQcgBbCIGQcgBayIIQcgBbiIBQQdxQQdGBEAgAyEEIAkhAgwBCyABQQFqQQdxIgEgA2ohBEEAIAFrIQcgCyADQcgBbGohASAJIQIDQCABIAJByAH8CgAAIAFByAFqIQEgAkHIAWohAiAHQQFqIgcNAAsLIAhB+ApJDQAgBiAJaiEIIAsgBEHIAWxqIQFBACEDA0AgASADaiIGIAIgA2oiCkHIAfwKAAAgBkHIAWogCkHIAWpByAH8CgAAIAZBkANqIApBkANqQcgB/AoAACAGQdgEaiAKQdgEakHIAfwKAAAgBkGgBmogCkGgBmpByAH8CgAAIAZB6AdqIApB6AdqQcgB/AoAACAGQbAJaiAKQbAJakHIAfwKAAAgBkH4CmogCkH4CmpByAH8CgAAIANBwAxqIQMgBEEIaiEEIApBwAxqIAhHDQALCyAOBEAgCUEEaygCACIBQXhxIQIgAiAOQcgBbCIDQQRBCCABQQNxIgEbakkNAyABQQBHIAIgA0EnaktxDQQgCRC8BQsgACAENgIIIAAgCzYCBCAAIA02AgAgBUHgAWokAA8LEJ4VAAtBCBCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6kLAQl/IwBBwAJrIgIkACABKAIQIQlBASEHIAEoAgwhBSABKAIIIQYgASgCACEIIAEoAgQiBCgCACEDIAQgA0EBajYCAAJAAkACQCAIQQFGBEAgA0EATg0BDAILQQAhByADQQBIDQELIAIgBTYCfCACIAY2AnggAiAENgJ0IAIgBzYCcCACQdgBaiIDIAkgAkHwAGoQ+AwgAiADQeQA/AoAAAJAAkBB2AEQkAEiAwRAQcgBEJABIgdFDQQCQAJAAkACQAJAAkBBAyACKAIAIgRBAmsgBEEBTRsiBUEBaw4DAgAEAQtB5AAQkAEiBA0CDAkLIAJB8ABqIAJB5AD8CgAAIAJB2AFqIAJB5AD8CgAADAMLIAJB9ABqIAJBBGoiBBCgByACQQM2AnAgAkHcAWogBBCgByACQQM2AtgBDAILIAIoAgQiBiAEELgPIAJBBDYCcCACIAQ2AnRB5AAQkAEiBEUNBiAGIAQQuA8gAkEENgLYASACIAQ2AtwBDAELIAJB8ABqIAIQ5AUgAkHYAWogAhDkBQtB5AAQkAEiBEUNBCAEIAJB2AFqQeQA/AoAACAHIAJB8ABqQeQA/AoAACAHIAQ2AmggB0EENgJkQeQAEJABIgZFDQQCQAJAAkACQAJAIAVBAWsOAwECAwALIAJB2AFqIAJB5AD8CgAADAMLIAJB3AFqIAJBBGoQoAcgAkEDNgLYAQwCC0HkABCQASIERQ0GIAIoAgQgBBC4DyACQQQ2AtgBIAIgBDYC3AEMAQsgAkHYAWogAhDkBQtB5AAQkAEiBEUNBCAEIAJB2AFqQeQA/AoAACAGIAQ2AgQgBkEENgIAQcgBEJABIgRFDQQCQAJAAkACQAJAIAVBAWsOAwECAwALIAJB2AFqIAJB5AD8CgAADAMLIAJB3AFqIAJBBGoQoAcgAkEDNgLYAQwCC0HkABCQASIFRQ0GIAIoAgQgBRC4DyACQQQ2AtgBIAIgBTYC3AEMAQsgAkHYAWogAhDkBQtB5AAQkAEiBUUNBCAFIAJB5AD8CgAAIAQgAkHYAWoiCEHkAPwKAAAgBCAFNgJoIARBBDYCZCADQQA7AdQBQQMhBSADQQM2AtABIANBjPHHADYCzAEgA0F/NgLIASADQgQ3A8ABIANCAjcDuAEgAyAENgK0ASADQQI2ArABIANBfjYCkAEgA0EAOwGMASADQQI2AogBIANBivHHADYChAEgA0F/NgKAASADQgQ3A3ggA0IBNwNwIAMgBjYCbCADQQE2AmggA0F+NgJIIANBADsBRCADQQM2AkAgA0GH8ccANgI8IANBfzYCOCADQgQ3AzAgA0ICNwMoIAMgBzYCJCADQQI2AiAgA0F+NgIAIAJBAzYCbCACIAM2AmggAkEDNgJkIAggARDEAiACKALYASEGIAIoAtwBIQcgAigC4AEiAwRAIANBGGwhCCACQeQAakEDIANBCEHIABCzESACKAJoIAIoAmwiBUHIAGxqIQQgByEDA0AgAiADKQIQNwOAASACIAMpAgg3A3ggAiADKQIANwNwIAJB2AFqIgogCSACQfAAakEAEN0BIAQgCkHIAPwKAAAgBEHIAGohBCAFQQFqIQUgA0EYaiEDIAhBGGsiCA0ACwsgBgRAIAdBBGsoAgAiBEF4cSEDIAMgBkEYbCIGQQRBCCAEQQNxIgQbakkNAiAEQQBHIAMgBkEnaktxDQMgBxC8BQsgACACKQJkNwIAIAAgBTYCCAJAAkAgASgCAEUEQCABKAIEIgMoAgAhACADIABBAWs2AgAgAEEBRg0BDAILIAEoAgQiAygCACEAIAMgAEEBazYCACAAQQFHDQELIAEoAgQQMAsgAkHAAmokAA8LDAMLQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACwALQbjwyQBBAToAAAALzAoCDn8BfiMAQTBrIgYkACABKAIEIQUCQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgBBAUYEQAJAIAEoAhAiDSgCTCIHRQ0MIAEoAgwhCyABKAIIIQwgDUHQAGooAgAiDiEPIAchBANAIARBDGohCCAEQQRqIQEgBC8BpggiCkEMbCEJQX8hAgJAA0AgCUUEQCAKIQIMAgsgASgCBCIDIAxJIAMgDEtrIAEoAgAiAyAFSSADIAVLayADIAVGGyIDQf8BcUUEQCAIKAIAIgMgC0kgAyALS2shAwsgAUEMaiEBIAlBDGshCSAIQQxqIQggAkEBaiECIANBAUYNAAsgA0H/AXFFDQILIA9FDQ0gD0EBayEPIAQgAkECdGooAqgIIQQMAAsACyAEIAJB1ABsaiIBKAKQAUECRg0CIAFBiAFqKAIkIQoCQANAIAdBDGohCCAHQQRqIQEgBy8BpggiBEEMbCEJQX8hAgJAA0AgCUUEQCAEIQIMAgsgASgCBCIDIAxJIAMgDEtrIAEoAgAiAyAFSSADIAVLayADIAVGGyIDQf8BcUUEQCAIKAIAIgMgC0kgAyALS2shAwsgAUEMaiEBIAlBDGshCSAIQQxqIQggAkEBaiECIANBAUYNAAsgA0H/AXFFDQILIA4EQCAOQQFrIQ4gByACQQJ0aigCqAghBwwBCwsMDAsgByACQdQAbGoiASgCkAFBAkYNAiAGIAFBiAFqIgEpAhw3AiQgBiABKQIUNwIcIA1BoAJqKAIAIQEgBiAFNgIYIAEgBU0NAyAGQQhqIA1BnAJqKAIAIAVBJGxqIgFBHGooAgAgAUEgaigCACAGQRxqQfS9xAAQ4QsgBigCKCIBIAYoAgwiAk8NBCAGKAIIIgJFDQIgAiABQcwAbGoiASgCGCICIApLDQEgCiACQcS9xAAQhRMACyABKAIQIgEoAhAiAiAFTQ0EIAEoAgwgBUHkAGxqIgIoAghBAkcEQCAGIAIoAiA2AiggBiACKQIYNwMgIAYgAikCECIQNwMYIBCnIgIgAUGgAmooAgAiBE8NBiAGQRBqIAFBnAJqKAIAIAJBJGxqIgJBHGooAgAgAkEgaigCACAGQRhqQQRyQdC8xAAQ4QsgBigCKCICIAYoAhQiBE8NByAGKAIQIAJBzABsaiICKAIYRQ0IIAEoAhAiBCAFTQ0JIAIoAhQhBEH/ASECIAAgBCABKAIMIAVB5ABsaiIBLQBIQQNGBH8gAS0ASQVB/wELEJEBDAoLIABBfjYCAAwJCwJAIA0oAkwiBEUNCiABKAIUIApB5ABsaiEOIA1B0ABqKAIAIQcDQCAEQQxqIQggBEEEaiEBIAQvAaYIIgpBDGwhCUF/IQICQANAIAlFBEAgCiECDAILIAEoAgQiAyAMSSADIAxLayABKAIAIgMgBUkgAyAFS2sgAyAFRhsiA0H/AXFFBEAgCCgCACIDIAtJIAMgC0trIQMLIAFBDGohASAJQQxrIQkgCEEMaiEIIAJBAWohAiADQQFGDQALIANB/wFxRQ0CCyAHRQ0LIAdBAWshByAEIAJBAnRqKAKoCCEEDAALAAsgACAOQX8gBCACQdQAbGoiAC0A0QEgAC0A0AFBA0cbEJEBDAgLIABBfjYCAAwHCyAFIAFB9L3EABCFEwALIAEgAkH0vcQAEIUTAAsgBSACQeT2yAAQhRMACyACIARB0LzEABCFEwALIAIgBEHQvMQAEIUTAAtBAEEAQajsxgAQhRMACyAFIARB5PbIABCFEwALIAZBMGokAA8LQdS5xABBFkGEvsQAEMATAAv5CgIGfhF/IwBB0ABrIgokACACKAIIIRAgAigCBCEOIAEpAwAhBCABKQMIIQUgCkIANwM4IAogBTcDMCAKIAQ3AyggCiAFQvPK0cunjNmy9ACFNwMgIAogBULt3pHzlszct+QAhTcDGCAKIARC4eSV89bs2bzsAIU3AxAgCiAEQvXKzYPXrNu38wCFNwMIIApCADcDQCAKQQhqIgsgDiAQEJYIIApB/wE6AE8gCyAKQc8AakEBEJYIIAopAzggCjUCQEI4hoQiCCAKKQMghSIEIAopAxB8IgcgBEIQiYUiBCAKKQMYIgUgCikDCHwiBkIgiXwiCSAEQhWJhSEEIAQgBUINiSAGhSIFIAd8IgZCIIlC/wGFfCIHIARCEImFIQQgBCAGIAVCEYmFIgUgCCAJhXwiBkIgiXwiCCAEQhWJhSEEIAQgBiAFQg2JhSIFIAd8IgZCIIl8IgcgBEIQiYUhBCAEIAYgBUIRiYUiBSAIfCIGQiCJfCIIIARCFYmFIQQgBCAFQg2JIAaFIgUgB3wiBkIgiXwiByAFQhGJIAaFIgUgCHwgBUINiYUiBXwiBiAEQhCJIAeFQhWJIAVCEYmFIAZCIIiFhachEyABKAIYIRQgASgCFCEVIAIoAgAhESABKAIkRQRAIAFBHGpBASAVIBQQygMLIAEoAiAiEiATcSENIBNBGXYiFq1CgYKEiJCgwIABfiEGIAEoAhwhDEEAIQsCQAJAA0ACQAJAAkACQAJAAkACQCAMIA1qKQAAIgUgBoUiBEKBgoSIkKDAgAF9IARCf4WDQoCBgoSIkKDAgH+DIgRCAFIEQANAIAwgBHqnQQN2IA1qIBJxQQJ0a0EEaygCACICIBRPDQMgFSACQegAbGoiGEHkAGooAgAgEEYEQCAOIBhB4ABqKAIAIBAQjxNFDQMLIARCAX0gBIMiBEIAUg0ACwsgBUKAgYKEiJCgwIB/gyEEQQEhAiALQQFGDQYgBEIAUg0CQQAhAgwGCyABKAIYIgsgAk0NBCAAQQhqIAEoAhQgAkHoAGxqIgFB2AD8CgAAIAEgA0HYAPwKAAAgACACNgIAIBFFDQcgDkEEaygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyARakkNAiABQQBHIAAgEUEnaktxDQMgDhC8BQwHCyACIBRB0K/JABCFEwALIAR6p0EDdiANaiAScSEPDAMLQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyACIAtB4LXJABCFEwALIAQgBUIBhoNQBEAgF0EIaiIXIA1qIBJxIQ0gAiELDAELCyAMIA9qLAAAIgJBAE4EQCAMKQMAQoCBgoSIkKDAgH+DeqdBA3YiDyAMai0AACECCyAMIA9qIBY6AAAgDCAPQQhrIBJxakEIaiAWOgAAIAEgASgCJCACQQFxayILNgIkIAEgASgCKEEBaiINNgIoIAwgD0ECdGtBBGsgASgCGCICNgIAAkAgAiABKAIQRw0AAkBBsafsCSALIA1qIgwgDEGxp+wJTxsiCyACa0EBTQ0AIAIgDEsNACAKQQhqIAIgASgCFCALQQhB6AAQpREgCigCCEEBRg0AIAooAgwhDCABIAs2AhAgASAMNgIUIAIgC0cNASABQRBqEKYSDAELIApBCGogAiABKAIUIAJBAWoiC0EIQegAEKURIAooAghBAUYNAiAKKAIMIQwgASALNgIQIAEgDDYCFAsgASgCFCACQegAbGoiCyADQdgA/AoAACALIBA2AmQgCyAONgJgIAsgETYCXCALIBM2AlggASACQQFqNgIYIABB/gE6AAggACACNgIACyAKQdAAaiQADwsgCigCDCAKKAIQIRoQpxQAC5gIAQd/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBDiAAKAIAIgFBDWsgAUEMTRsODgEJAgkJAwQFCQkGCQcIAAsgACgCFCIBQQBKBEAgACgCGCICQQRrKAIAIgRBeHEhAyADQQRBCCAEQQNxIgQbIAFqSQ0KIARBAEcgAyABQSdqS3ENCyACELwFCyAAKAIMIQMgACgCECICBEAgAyEBA0AgARCPBCABQSBqIQEgAkEBayICDQALCyAAKAIIIgIEQCADQQRrKAIAIgRBeHEhASABIAJBBXQiAkEEQQggBEEDcSIEG3JJDQogBEEARyABIAJBJ2pLcQ0LIAMQvAULIAAQwBIPCyAAKAIEIgFFDQcgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0IIAJBAEcgACABQSdqS3ENCSADELwFDAcLIAAoAgQiAUUNBiAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQcgAkEARyAAIAFBJ2pLcQ0IDAkLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABEI8EIAFBIGohASACQQFrIgINAAsLIAAoAgQiAUUNBSADQQRrKAIAIgJBeHEhACAAIAFBBXQiAUEEQQggAkEDcSICG3JJDQYgAkEARyAAIAFBJ2pLcQ0HDAgLIAAoAgQiAUUNBCAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQUgAkEARyAAIAFBJ2pLcQ0GDAcLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABKAIAIgQEQCABQQRqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQcgBUEARyAGIARBJ2pLcQ0IIAcQvAULIAFBEGoQjwQgAUEwaiEBIAJBAWsiAg0ACwsgACgCBCIBRQ0DIANBBGsoAgAiAkF4cSEAIAAgAUEwbCIBQQRBCCACQQNxIgIbckkNBCACQQBHIAAgAUEnaktxDQUMBgsgACgCCCIBRQ0CIAAoAgwiA0EEaygCACICQXhxIQAgACABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0DIAJBAEcgACABQSdqS3ENBAwFCyAAKAIEIgFFDQEgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0CIAJBAEcgACABQSdqS3ENAwwECyAAKAIMIgFBAEoEQCAAKAIQIgJBBGsoAgAiBEF4cSEDIANBBEEIIARBA3EiBBsgAWpJDQIgBEEARyADIAFBJ2pLcQ0DIAIQvAULIABBBGoQwBIPCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyADELwFC5gIAQd/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBDiAAKAIAIgFBDWsgAUEMTRsODgEJAgkJAwQFCQkGCQcIAAsgACgCFCIBQQBKBEAgACgCGCICQQRrKAIAIgRBeHEhAyADQQRBCCAEQQNxIgQbIAFqSQ0KIARBAEcgAyABQSdqS3ENCyACELwFCyAAKAIMIQMgACgCECICBEAgAyEBA0AgARCQBCABQSBqIQEgAkEBayICDQALCyAAKAIIIgIEQCADQQRrKAIAIgRBeHEhASABIAJBBXQiAkEEQQggBEEDcSIEG3JJDQogBEEARyABIAJBJ2pLcQ0LIAMQvAULIAAQwBIPCyAAKAIEIgFFDQcgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0IIAJBAEcgACABQSdqS3ENCSADELwFDAcLIAAoAgQiAUUNBiAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQcgAkEARyAAIAFBJ2pLcQ0IDAkLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABEJAEIAFBIGohASACQQFrIgINAAsLIAAoAgQiAUUNBSADQQRrKAIAIgJBeHEhACAAIAFBBXQiAUEEQQggAkEDcSICG3JJDQYgAkEARyAAIAFBJ2pLcQ0HDAgLIAAoAgQiAUUNBCAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQUgAkEARyAAIAFBJ2pLcQ0GDAcLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABKAIAIgQEQCABQQRqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQcgBUEARyAGIARBJ2pLcQ0IIAcQvAULIAFBEGoQkAQgAUEwaiEBIAJBAWsiAg0ACwsgACgCBCIBRQ0DIANBBGsoAgAiAkF4cSEAIAAgAUEwbCIBQQRBCCACQQNxIgIbckkNBCACQQBHIAAgAUEnaktxDQUMBgsgACgCCCIBRQ0CIAAoAgwiA0EEaygCACICQXhxIQAgACABQQJ0IgFBBEEIIAJBA3EiAhtqSQ0DIAJBAEcgACABQSdqS3ENBAwFCyAAKAIEIgFFDQEgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0CIAJBAEcgACABQSdqS3ENAwwECyAAKAIMIgFBAEoEQCAAKAIQIgJBBGsoAgAiBEF4cSEDIANBBEEIIARBA3EiBBsgAWpJDQIgBEEARyADIAFBJ2pLcQ0DIAIQvAULIABBBGoQwBIPCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyADELwFC6wLAg1/A34jAEFAaiIEJAAgACkDACAAKQMIIAEoAgQiBSABKAIIIgwQ3woiDSAAKAIgIgdxIQggDUEZdq1CgYKEiJCgwIABfiETIABBHGohCSAAQRBqIQYgACgCHCELIAAoAhghDiAAKAIUIRAgASgCACEPAkACQAJAAkACQAJAAn8DQAJAIAggC2opAAAiEiAThSIRQoGChIiQoMCAAX0gEUJ/hYNCgIGChIiQoMCAf4MiEUIAUgRAA0AgCyAReqdBA3YgCGogB3FBAnRrIgFBBGsoAgAiACAOTw0FIBAgAEHQAGxqIgBBzABqKAIAIAxGBEAgBSAAQcgAaigCACAMEI8TRQ0DCyARQgF9IBGDIhFCAFINAAsLIBIgEkIBhoNCgIGChIiQoMCAf4NCAFIEQCAJIQEgDSEHIAYhCSAFIQ1BAQwDBSAKQQhqIgogCGogB3EhCAwCCwALCyAPQQFrQX1LBEBBACEMIAYhB0EADAELIAVBBGsoAgAiB0F4cSEAIABBBEEIIAdBA3EiBxsgD2pJDQIgB0EARyAAIA9BJ2pLcQ0DIAUQvAVBACEMIAYhB0EACyEAIAQCfkHQ8MkALQAABEBByPDJACkDACESQcDwyQApAwAMAQsgBBC7EUHQ8MkAQQE6AABByPDJACAEKQMIIhI3AwAgBCkDAAsiETcDAEHA8MkAIBFCAXw3AwAgBEEANgIYIARCgICAgIABNwMQIAQgEjcDCCAEQQA6ADwgBCADNwI0IAQgAjYCMCAEQZCpyQApAwA3AhwgBEGYqckAKQMANwIkAkAgAARAIAEoAgQiCiAHcSIIIAEoAgAiBmopAABCgIGChIiQoMCAf4MiEVAEQEEIIQADQCAAIAhqIQIgAEEIaiEAIAYgAiAKcSIIaikAAEKAgYKEiJCgwIB/gyIRUA0ACwsgBiAReqdBA3YgCGogCnEiAGosAAAiC0EATgRAIAYgBikDAEKAgYKEiJCgwIB/g3qnQQN2IgBqLQAAIQsLIAkoAgghCCABKAIMIQIgASgCCCEFAn8gC0EBcSIOIAVFcUUEQCAAIAZqIAdBGXYiCzoAACABIAUgDms2AgggBiAAQQhrIApxaiEFIAIMAQsgASAJKAIEIAgQzQMgASgCBCIKIAdxIgUgASgCACIGaikAAEKAgYKEiJCgwIB/gyIRUARAQQghAANAIAAgBWohBSAAQQhqIQAgBiAFIApxIgVqKQAAQoCBgoSIkKDAgH+DIhFQDQALCyAGIBF6p0EDdiAFaiAKcSIAaiwAACIFQQBOBEAgBiAGKQMAQoCBgoSIkKDAgH+DeqdBA3YiAGotAAAhBQsgACAGaiAHQRl2Igs6AAAgASABKAIIIAVBAXFrNgIIIAYgAEEIayAKcWohBSABKAIMCyEKIAVBCGogCzoAACABIApBAWo2AgwgBiAAQQJ0a0EEayIBIAI2AgACQCAIIAkoAgBHDQAgCSAIQQF0EMQQIAkoAggiCCAJKAIARw0AIAkQqhILIAkoAgQgCEHQAGxqIgAgBCkDADcDACAAIAQpAwg3AwggACAEKQMQNwMQIAAgBCkDGDcDGCAAIAQpAyA3AyAgACAEKQMoNwMoIAAgBCkDMDcDMCAAIAQpAzg3AzggACAMNgJMIAAgDTYCSCAAIA82AkQgACAHNgJAIAkgCEEBaiIANgIIIAEoAgAiASAATw0FIAkoAgQgAUHQAGxqIQAMAQsgAUEEaygCACIAIAcoAggiAU8NBSAHKAIEIABB0ABsaiEAIAQQmgcLIAAoAhBBAE4NBUGk3MUAQcMBQYjdxQAQvxMACyAAIA5B0K/JABCFEwALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyABIABBmN3FABCFEwALIAAgAUGY3cUAEIUTAAsgBEFAayQAIAALpwwCBn8BfiMAQTBrIgIkAAJAAkACQAJAAkACQEECIAApAwAiCKdBAmsgCEIBWBtBAWsOAwECAwALQQEhAyABKAIAIgRBlpHJAEEGIAEoAgQiBigCDCIFEQAADQQgAEEIaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0GIAAgARCPBkUNAQwGCyAEQZ3jwgBBAiAFEQAADQUgAkEBOgAoIAIgBjYCDCACIAQ2AgggAkGg68IANgIYIAIgASkCCDcCHCACIAJBKGo2AhAgAiACQQhqIgQ2AhQgACACQRRqEI8GDQUgBEGkssgAQQIQ/QgNBQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRBv5HJAEEJIAEoAgQiBygCDCIFEQAADQMgAEEIaiEGAkACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQYgAiAAQRxqNgIIIAEoAgBBmf7GAEESIAEoAgQoAgwRAAAhACACQQA6ABkgAiAAOgAYIAIgATYCFCACQRRqQZmQyQBBBSAGQZ8BEIkOQav+xgBBCiACQQhqQaABEIkOIQQgAi0AGCEAAkAgAi0AGSIFQQFHDQAgAEEBcQ0AIAQoAgAiAC0ACkGAAXENAiAAKAIAQe3qwgBBAiAAKAIEKAIMEQAARQ0DDAcLIAUNBiAAQQFxRQ0CDAYLIARBnePCAEECIAURAAANBSACIAc2AgwgAiAENgIIIAJBAToAByACQaDrwgA2AhggAiABKQIINwIcIAIgAkEHajYCECACIAJBCGoiAzYCFCACIABBHGo2AiQgA0GZ/sYAQRIQ/QghACACQQA6AC0gAiAAOgAsIAIgAkEUajYCKCACQShqQZmQyQBBBSAGQZ8BEIkOQav+xgBBCiACQSRqQaABEIkOIQMgAi0ALCEAAkACQAJAIAItAC0iBEEBRw0AIABBAXENACADKAIAIgAtAApBgAFxDQEgACgCAEHt6sIAQQIgACgCBCgCDBEAAA0HDAILIAQNBiAAQQFxRQ0BDAYLIAAoAgBBobLIAEEBIAAoAgQoAgwRAAANBQsgAigCFEGkssgAQQIgAigCGCgCDBEAAEUNAUEBIQMMBQsgACgCAEGhssgAQQEgACgCBCgCDBEAAA0ECyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMAwtBASEDIAEoAgAiBEG3kckAQQggASgCBCIGKAIMIgURAAANAgJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANBCACIABBvAFqNgIUIAFBpYHHAEERQZmQyQBBBSAAQagBakGhAUHRkMkAQQQgAEGiAUG2gccAQQ0gAEGwAWpBowFBq/7GAEEKIAJBFGpBoAEQuxBFDQEMBAsgBEGd48IAQQIgBREAAA0DIAJBAToAJCACIAY2AgwgAiAENgIIIAJBoOvCADYCGCACIAEpAgg3AhwgAiACQSRqNgIQIAIgAkEIajYCFCACIABBvAFqNgIoIAJBFGpBpYHHAEERQZmQyQBBBSAAQagBakGhAUHRkMkAQQQgAEGiAUG2gccAQQ0gAEGwAWpBowFBq/7GAEEKIAJBKGpBoAEQuxANAyACKAIUQaSyyABBAiACKAIYKAIMEQAADQMLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwCC0EBIQMgASgCACIEQemAxwBBByABKAIEIgcoAgwiBREAAA0BIABBCGohBgJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANAyACIAY2AhQgAUHDgccAQQ0gAEHYAGpBoQEgAkEUakGkARDyDEUNAQwDCyAEQZ3jwgBBAiAFEQAADQIgAkEBOgAkIAIgBzYCDCACIAQ2AgggAkGg68IANgIYIAIgASkCCDcCHCACIAJBJGo2AhAgAiACQQhqNgIUIAIgBjYCKCACQRRqQcOBxwBBDSAAQdgAakGhASACQShqQaQBEPIMDQIgAigCFEGkssgAQQIgAigCGCgCDBEAAA0CCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMAQtBASEDCyACQTBqJAAgAwunDAIGfwF+IwBBMGsiAiQAAkACQAJAAkACQAJAQQIgACkDACIIp0ECayAIQgFYG0EBaw4DAQIDAAtBASEDIAEoAgAiBEGWkckAQQYgASgCBCIGKAIMIgURAAANBCAAQQhqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQYgACABEI8GRQ0BDAYLIARBnePCAEECIAURAAANBSACQQE6ACggAiAGNgIMIAIgBDYCCCACQaDrwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGoiBDYCFCAAIAJBFGoQjwYNBSAEQaSyyABBAhD9CA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBAtBASEDIAEoAgAiBEG/kckAQQkgASgCBCIHKAIMIgURAAANAyAAQQhqIQYCQAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANBiACIABBHGo2AgggASgCAEGZ/sYAQRIgASgCBCgCDBEAACEAIAJBADoAGSACIAA6ABggAiABNgIUIAJBFGpBmZDJAEEFIAZBnwEQiQ5Bq/7GAEEKIAJBCGpBlAIQiQ4hBCACLQAYIQACQCACLQAZIgVBAUcNACAAQQFxDQAgBCgCACIALQAKQYABcQ0CIAAoAgBB7erCAEECIAAoAgQoAgwRAABFDQMMBwsgBQ0GIABBAXFFDQIMBgsgBEGd48IAQQIgBREAAA0FIAIgBzYCDCACIAQ2AgggAkEBOgAHIAJBoOvCADYCGCACIAEpAgg3AhwgAiACQQdqNgIQIAIgAkEIaiIDNgIUIAIgAEEcajYCJCADQZn+xgBBEhD9CCEAIAJBADoALSACIAA6ACwgAiACQRRqNgIoIAJBKGpBmZDJAEEFIAZBnwEQiQ5Bq/7GAEEKIAJBJGpBlAIQiQ4hAyACLQAsIQACQAJAAkAgAi0ALSIEQQFHDQAgAEEBcQ0AIAMoAgAiAC0ACkGAAXENASAAKAIAQe3qwgBBAiAAKAIEKAIMEQAADQcMAgsgBA0GIABBAXFFDQEMBgsgACgCAEGhssgAQQEgACgCBCgCDBEAAA0FCyACKAIUQaSyyABBAiACKAIYKAIMEQAARQ0BQQEhAwwFCyAAKAIAQaGyyABBASAAKAIEKAIMEQAADQQLIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwDC0EBIQMgASgCACIEQbeRyQBBCCABKAIEIgYoAgwiBREAAA0CAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0EIAIgAEG8AWo2AhQgAUGlgccAQRFBmZDJAEEFIABBqAFqQaEBQdGQyQBBBCAAQaIBQbaBxwBBDSAAQbABakGjAUGr/sYAQQogAkEUakGUAhC7EEUNAQwECyAEQZ3jwgBBAiAFEQAADQMgAkEBOgAkIAIgBjYCDCACIAQ2AgggAkGg68IANgIYIAIgASkCCDcCHCACIAJBJGo2AhAgAiACQQhqNgIUIAIgAEG8AWo2AiggAkEUakGlgccAQRFBmZDJAEEFIABBqAFqQaEBQdGQyQBBBCAAQaIBQbaBxwBBDSAAQbABakGjAUGr/sYAQQogAkEoakGUAhC7EA0DIAIoAhRBpLLIAEECIAIoAhgoAgwRAAANAwsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAILQQEhAyABKAIAIgRB6YDHAEEHIAEoAgQiBygCDCIFEQAADQEgAEEIaiEGAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0DIAIgBjYCFCABQcOBxwBBDSAAQdgAakGhASACQRRqQZUCEPIMRQ0BDAMLIARBnePCAEECIAURAAANAiACQQE6ACQgAiAHNgIMIAIgBDYCCCACQaDrwgA2AhggAiABKQIINwIcIAIgAkEkajYCECACIAJBCGo2AhQgAiAGNgIoIAJBFGpBw4HHAEENIABB2ABqQaEBIAJBKGpBlQIQ8gwNAiACKAIUQaSyyABBAiACKAIYKAIMEQAADQILIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwBC0EBIQMLIAJBMGokACADC6cMAgZ/AX4jAEEwayICJAACQAJAAkACQAJAAkBBAiAAKQMAIginQQJrIAhCAVgbQQFrDgMBAgMAC0EBIQMgASgCACIEQZaRyQBBBiABKAIEIgYoAgwiBREAAA0EIABBCGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANBiAAIAEQjwZFDQEMBgsgBEGd48IAQQIgBREAAA0FIAJBAToAKCACIAY2AgwgAiAENgIIIAJBoOvCADYCGCACIAEpAgg3AhwgAiACQShqNgIQIAIgAkEIaiIENgIUIAAgAkEUahCPBg0FIARBpLLIAEECEP0IDQULIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAwwEC0EBIQMgASgCACIEQb+RyQBBCSABKAIEIgcoAgwiBREAAA0DIABBCGohBgJAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0GIAIgAEEcajYCCCABKAIAQZn+xgBBEiABKAIEKAIMEQAAIQAgAkEAOgAZIAIgADoAGCACIAE2AhQgAkEUakGZkMkAQQUgBkGfARCJDkGr/sYAQQogAkEIakGtARCJDiEEIAItABghAAJAIAItABkiBUEBRw0AIABBAXENACAEKAIAIgAtAApBgAFxDQIgACgCAEHt6sIAQQIgACgCBCgCDBEAAEUNAwwHCyAFDQYgAEEBcUUNAgwGCyAEQZ3jwgBBAiAFEQAADQUgAiAHNgIMIAIgBDYCCCACQQE6AAcgAkGg68IANgIYIAIgASkCCDcCHCACIAJBB2o2AhAgAiACQQhqIgM2AhQgAiAAQRxqNgIkIANBmf7GAEESEP0IIQAgAkEAOgAtIAIgADoALCACIAJBFGo2AiggAkEoakGZkMkAQQUgBkGfARCJDkGr/sYAQQogAkEkakGtARCJDiEDIAItACwhAAJAAkACQCACLQAtIgRBAUcNACAAQQFxDQAgAygCACIALQAKQYABcQ0BIAAoAgBB7erCAEECIAAoAgQoAgwRAAANBwwCCyAEDQYgAEEBcUUNAQwGCyAAKAIAQaGyyABBASAAKAIEKAIMEQAADQULIAIoAhRBpLLIAEECIAIoAhgoAgwRAABFDQFBASEDDAULIAAoAgBBobLIAEEBIAAoAgQoAgwRAAANBAsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAMLQQEhAyABKAIAIgRBt5HJAEEIIAEoAgQiBigCDCIFEQAADQICQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQQgAiAAQbwBajYCFCABQaWBxwBBEUGZkMkAQQUgAEGoAWpBoQFB0ZDJAEEEIABBogFBtoHHAEENIABBsAFqQaMBQav+xgBBCiACQRRqQa0BELsQRQ0BDAQLIARBnePCAEECIAURAAANAyACQQE6ACQgAiAGNgIMIAIgBDYCCCACQaDrwgA2AhggAiABKQIINwIcIAIgAkEkajYCECACIAJBCGo2AhQgAiAAQbwBajYCKCACQRRqQaWBxwBBEUGZkMkAQQUgAEGoAWpBoQFB0ZDJAEEEIABBogFBtoHHAEENIABBsAFqQaMBQav+xgBBCiACQShqQa0BELsQDQMgAigCFEGkssgAQQIgAigCGCgCDBEAAA0DCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMAgtBASEDIAEoAgAiBEHpgMcAQQcgASgCBCIHKAIMIgURAAANASAAQQhqIQYCQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQMgAiAGNgIUIAFBw4HHAEENIABB2ABqQaEBIAJBFGpB3wIQ8gxFDQEMAwsgBEGd48IAQQIgBREAAA0CIAJBAToAJCACIAc2AgwgAiAENgIIIAJBoOvCADYCGCACIAEpAgg3AhwgAiACQSRqNgIQIAIgAkEIajYCFCACIAY2AiggAkEUakHDgccAQQ0gAEHYAGpBoQEgAkEoakHfAhDyDA0CIAIoAhRBpLLIAEECIAIoAhgoAgwRAAANAgsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAELQQEhAwsgAkEwaiQAIAMLiQkBDH8jAEHwAmsiAiQAAkACQAJAAkACQAJAAkACQCABKAIgIgRFBEAgASgCJCEHDAELIAJBwAFqIAEgBCABKAIkIgcQgwQgAigCsAIiA0F+Rw0BIAcoAgAiAwRAIAQgAxEDAAsgBygCBCIDRQ0AIARBBGsoAgAiCEF4cSEFIAVBBEEIIAhBA3EiCBsgA2pJDQYgCEEARyAFIANBJ2pLcQ0HIAQQvAULAkAgASgCMCIDRQ0AIAEoAjQiDCADRg0AIAEoAjghC0EAIQUDQCABIANBGGoiCDYCMAJAAkACQCADKAIAQQFrDgIBCQALIAJB0ABqIAMoAgQgAygCCBDnCiACQQhqIAIoAlQiBiACKAJYIgkgCxCaECACKAIIIQQgCQRAIAZBEGohAwNAIAMoAgAiDSgCACEKIA0gCkEBazYCACAKQQFGBEAgAygCABAwCyADQRRqIQMgCUEBayIJDQALCyACKAJQIglFDQEgBkEEaygCACIKQXhxIQMgAyAJQRRsIglBBEEIIApBA3EiChtqSQ0JIApBAEcgAyAJQSdqS3ENCiAGELwFDAELQbABEJABIgZFDQUgBiADQQRqIAtBABCJAkEQEJABIgRFDQYgBEEBNgIIIAQgBjYCBCAEIAY2AgAgBCAGQbABajYCDAsCQCAFRQ0AIAcoAgAiAwRAIAUgAxEDAAsgBygCBCIDRQ0AIAVBBGsoAgAiBkF4cSEHIAdBBEEIIAZBA3EiBhsgA2pJDQggBkEARyAHIANBJ2pLcQ0JIAUQvAULIAFB7I3JADYCJCABIAQ2AiAgAkHAAWogASAEQeyNyQAQgwQgAigCsAIiA0F+Rw0CQeyNyQAhByAEIQUgDCAIIgNHDQALIAQQmhEgBEEEaygCACIDQQNxIQQgA0F4cUEUQRggBBtJDQYgBEEARyADQThPcQ0HIAUQvAULIAFBADYCIAJAIAEoAigiBEUNACACQcABaiABIAQgASgCLCIFEIMEIAIoArACIgNBfkcNASAFKAIAIgMEQCAEIAMRAwALIAUoAgQiA0UNACAEQQRrKAIAIghBeHEhBSAFQQRBCCAIQQNxIggbIANqSQ0GIAhBAEcgBSADQSdqS3ENByAEELwFCyAAQX42AnAgAUEANgIoDAELIAJB0ABqIgEgAkHAAWpB8AD8CgAAIAIgAigC7AI2AkggAiACKQLkAjcDQCACIAIpAtwCNwM4IAIgAikC1AI3AzAgAiACKQLMAjcDKCACIAIpAsQCNwMgIAIgAikCvAI3AxggAiACKQK0AjcDECAAIAFB8AD8CgAAIAAgAzYCcCAAIAIpAxA3AnQgACACKQMYNwJ8IAAgAikDIDcChAEgACACKQMoNwKMASAAIAIpAzA3ApQBIAAgAikDODcCnAEgACACKQNANwKkASAAIAIoAkg2AqwBCyACQfACaiQADwtBuPDJAEEBOgAAAAtBuPDJAEEBOgAAAAtBiPvIAEEPQbSQyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAvgCQETfyMAQYABayIEJAAgASgCBCEHAkACQAJAAkACQAJAAkACQAJAAkACfyABKAIIIgNBAUYEQCAEQRRqIAdBBGooAgAgB0EIaigCABDgCiAEKAIUIg9Bf0YEQCABKAIAIQZB0AAMAgsgBCgCHCICQZqz5gxPDQIgBCgCGCEMAkAgAkHQAGwiA0UEQEEIIQ0MAQsgAiEFIAMQkAEiDUUNBAsgAgRAIAwgAkEDdGohEyAEQcQAaiEQIA0hAiAMIQoDQAJAIApBBGooAgAiCCgCAEEaRgRAIAooAgAhDkF/IQsgCCgCFCEJIAgoAhAhBgJAIAgoAgxBf0YEQCAGIQMMAQsgCUUEQEEAIQtBASEDDAELIAkQkAEiA0UNCSAJBEAgAyAGIAn8CgAACyAJIQsLIAgoAgQiFEEFRgRAIAgoAgghCEEIEJABIgZFDQogBEEIaiAIEOASIAYgBCkDCDcCAAsgDigCECIIKAIAIREgCCARQQFqNgIAIBFBAE4NAQALQfTsxgBBwQFB1O3GABC/EwALIBAgDikCADcCACAQIA4pAgg3AgggAkEgaiAJNgIAIAJBHGogAzYCACACQRhqIAs2AgAgAkEUaiAGNgIAIAJBEGogFDYCACACQQxqQQI2AgAgAkEIakEMOgAAIAJBAzoAACACQSRqIAQpAjA3AgAgAkEsaiAEKQI4NwIAIAJBNGogBCkCQDcCACACQTxqIAQpAkg3AgAgAkHEAGogBCgCUDYCACACQcwAakEAOgAAIAJByABqIAg2AgAgAkHQAGohAiASQQFqIRIgEyAKQQhqIgpHDQALCyAPBEAgDEEEaygCACIDQXhxIQIgAiAPQQN0IgZBBEEIIANBA3EiAxtqSQ0LIANBAEcgAiAGQSdqS3ENDCAMELwFCyAAIBI2AgwgACANNgIIIAAgBTYCBCAAQQA6AAAgB0EEaigCACEAIAdBCGooAgAiBQRAIAAhAgNAIAIQ9AQgAkHIAWoQiAQgAkHoAWohAiAFQQFrIgUNAAsLIAcoAgAiBQRAIABBBGsoAgAiA0F4cSECIAIgBUHoAWwiBUEEQQggA0EDcSIDG2pJDQsgA0EARyACIAVBJ2pLcQ0MIAAQvAULIAEoAgAiAUUNCSAHQQRrKAIAIgJBeHEhACAAIAFBDGwiAUEEQQggAkEDcSICG2pJDQogAkEARyAAIAFBJ2pLcQ0LIAcQvAUMCQsgA0Gas+YMTw0BIAEoAgAhBiADRQ0FIANB0ABsCxCQASIBRQ0FIANBDGwhCiADQQJ0QQRrQQJ2QQFqIQsgASEFIAchAgNAIAQgAigCCDYCKCAEIAIpAgA3AyAgBEEwaiIJIARBIGoQ4AcgBSAJQdAA/AoAACAFQdAAaiEFIAJBDGohAiAKQQxrIgoNAAsMBgsQnhUAC0EIEKcUAAtBARCnFAALQbjwyQBBAToAAAALQQAhA0EIIQEMAQtBCBCnFAALIAYEQCAHQQRrKAIAIgVBeHEhAiACIAZBDGwiBkEEQQggBUEDcSIFG2pJDQIgBUEARyACIAZBJ2pLcQ0DIAcQvAULIAAgCzYCDCAAIAE2AgggACADNgIEIABBAToAAAsgBEGAAWokAA8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC5sIAQp/AkACQAJAIAAoAmQiAUF/Rg0AIAFFDQAgACgCaCIFQQRrKAIAIgNBeHEhAiACQQRBCCADQQNxIgMbIAFqSQ0CIANBAEcgAiABQSdqS3ENASAFELwFCwJAIAAoAnBBf0YNACAAQfAAahB5IAAoAowBIgFBAEoEQCAAKAKQASIFQQRrKAIAIgNBeHEhAiACQQRBCCADQQNxIgMbIAFqSQ0DIANBAEcgAiABQSdqS3ENAiAFELwFCyAAKAKYASIBQQBKBEAgACgCnAEiBUEEaygCACIDQXhxIQIgAkEEQQggA0EDcSIDGyABakkNAyADQQBHIAIgAUEnaktxDQIgBRC8BQsgACgChAEhBSAAKAKIASIKBEBBACEDA0ACQAJAIAUgA0EMbGoiAigCACIBQX9GBEAgAigCBCICEJcEIAJBBGsoAgAiAUEDcSEEIAFBeHFBtAFBuAEgBBtJDQcgBEUNASABQdgBSQ0BDAYLIAIoAggiCARAIAIoAgQhAQNAAkAgAUHkAGooAgAiBEF/Rg0AIARFDQAgAUHoAGooAgAiCUEEaygCACIGQXhxIQcgB0EEQQggBkEDcSIGGyAEakkNCSAGQQBHIAcgBEEnaktxDQggCRC8BQsgAUHwAGoQ1wUgAUHYAGooAgAiBEEASgRAIAFB3ABqKAIAIglBBGsoAgAiBkF4cSEHIAdBBEEIIAZBA3EiBhsgBGpJDQkgBkEARyAHIARBJ2pLcQ0IIAkQvAULIAFBEGoiBCgCAEF+TgRAIAQQtwQLIAEoAgAiBEEASgRAIAFBBGooAgAiCUEEaygCACIGQXhxIQcgB0EEQQggBkEDcSIGGyAEakkNCSAGQQBHIAcgBEEnaktxDQggCRC8BQsgAUGwAWohASAIQQFrIggNAAsgAigCACEBCyABRQ0BIAIoAgQiAkEEaygCACIIQXhxIQQgBCABQbABbCIBQQRBCCAIQQNxIggbckkNBiAIRQ0AIAQgAUEnaksNBQsgAhC8BQsgA0EBaiIDIApHDQALCyAAKAKAASICRQ0AIAVBBGsoAgAiA0F4cSEBIAEgAkEMbCICQQRBCCADQQNxIgMbakkNAiADQQBHIAEgAkEnaktxDQEgBRC8BQsgACgCWCIBQQBKBEAgACgCXCIFQQRrKAIAIgNBeHEhAiACQQRBCCADQQNxIgMbIAFqSQ0CIANBAEcgAiABQSdqS3ENASAFELwFCyAAKAIQQX5OBEAgAEEQahC3BAsgACgCACIBQQBKBEAgACgCBCICQQRrKAIAIgVBeHEhACAAQQRBCCAFQQNxIgUbIAFqSQ0CIAVBAEcgACABQSdqS3ENASACELwFCw8LQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC5wIAQd/AkACQAJAAkACQAJAAkACQAJAAkBBAyAAKAIAIgFBAmsgAUEBTRsOBQECAwQFAAsgACgCCCEDIAAoAgwiAgRAIAMhAQNAIAFBQGsoAgAiBARAIAFBxABqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQsgBUEARyAGIARBJ2pLcQ0KIAcQvAULIAEQmAQgAUHYAGohASACQQFrIgINAAsLIAAoAgQiAUUNBiADQQRrKAIAIgJBeHEhACAAIAFB2ABsIgFBBEEIIAJBA3EiAhtqSQ0IIAJFDQUgACABQSdqTQ0FDAcLIAAoAgQiAUUNBSAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQcgAkUNBCAAIAFBJ2pNDQQMBgsgACgCBCIBRQ0EIAAoAggiA0EEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNBiACRQ0DIAAgAUEnak0NAwwFCyAAKAIEIgFFDQMgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0FIAJFDQIgACABQSdqTQ0CDAQLIAAoAigiAQRAIAAoAiwiAkEEaygCACIEQXhxIQMgA0EEQQggBEEDcSIEGyABakkNBSAEQQBHIAMgAUEnaktxDQQgAhC8BQsgACgCFCEDIAAoAhgiAgRAIAMhAQNAIAFBQGsoAgAiBEEASgRAIAFBxABqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQcgBUEARyAGIARBJ2pLcQ0GIAcQvAULIAEQmAQgAUHkAGohASACQQFrIgINAAsLIAAoAhAiAgRAIANBBGsoAgAiBEF4cSEBIAEgAkHkAGwiAkEEQQggBEEDcSIEG2pJDQUgBEEARyABIAJBJ2pLcQ0EIAMQvAULIAAoAiAhAyAAKAIkIgIEQCADIQEDQCABKAIAIgQEQCABQQRqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQcgBUEARyAGIARBJ2pLcQ0GIAcQvAULIAFBGGohASACQQFrIgINAAsLIAAoAhwiAUUNAiADQQRrKAIAIgJBeHEhACAAIAFBGGwiAUEEQQggAkEDcSICG2pJDQQgAkUNASAAIAFBJ2pNDQEMAwsgACgCCCEDIAAoAgwiAgRAIAMhAQNAIAEQmAQgAUFAayEBIAJBAWsiAg0ACwsgACgCBCIBRQ0BIANBBGsoAgAiAkF4cSEAIAAgAUEGdCIBQQRBCCACQQNxIgIbckkNAyACRQ0AIAAgAUEncksNAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAucCAEHfwJAAkACQAJAAkACQAJAAkACQAJAQQMgACgCACIBQQJrIAFBAU0bDgUBAgMEBQALIAAoAgghAyAAKAIMIgIEQCADIQEDQCABQUBrKAIAIgQEQCABQcQAaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIARqSQ0LIAVBAEcgBiAEQSdqS3ENCiAHELwFCyABEJkEIAFB2ABqIQEgAkEBayICDQALCyAAKAIEIgFFDQYgA0EEaygCACICQXhxIQAgACABQdgAbCIBQQRBCCACQQNxIgIbakkNCCACRQ0FIAAgAUEnak0NBQwHCyAAKAIEIgFFDQUgACgCCCIDQQRrKAIAIgJBeHEhACAAQQRBCCACQQNxIgIbIAFqSQ0HIAJFDQQgACABQSdqTQ0EDAYLIAAoAgQiAUUNBCAAKAIIIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQYgAkUNAyAAIAFBJ2pNDQMMBQsgACgCBCIBRQ0DIAAoAggiA0EEaygCACICQXhxIQAgAEEEQQggAkEDcSICGyABakkNBSACRQ0CIAAgAUEnak0NAgwECyAAKAIoIgEEQCAAKAIsIgJBBGsoAgAiBEF4cSEDIANBBEEIIARBA3EiBBsgAWpJDQUgBEEARyADIAFBJ2pLcQ0EIAIQvAULIAAoAhQhAyAAKAIYIgIEQCADIQEDQCABQUBrKAIAIgRBAEoEQCABQcQAaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIARqSQ0HIAVBAEcgBiAEQSdqS3ENBiAHELwFCyABEJkEIAFB5ABqIQEgAkEBayICDQALCyAAKAIQIgIEQCADQQRrKAIAIgRBeHEhASABIAJB5ABsIgJBBEEIIARBA3EiBBtqSQ0FIARBAEcgASACQSdqS3ENBCADELwFCyAAKAIgIQMgACgCJCICBEAgAyEBA0AgASgCACIEBEAgAUEEaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIARqSQ0HIAVBAEcgBiAEQSdqS3ENBiAHELwFCyABQRhqIQEgAkEBayICDQALCyAAKAIcIgFFDQIgA0EEaygCACICQXhxIQAgACABQRhsIgFBBEEIIAJBA3EiAhtqSQ0EIAJFDQEgACABQSdqTQ0BDAMLIAAoAgghAyAAKAIMIgIEQCADIQEDQCABEJkEIAFBQGshASACQQFrIgINAAsLIAAoAgQiAUUNASADQQRrKAIAIgJBeHEhACAAIAFBBnQiAUEEQQggAkEDcSICG3JJDQMgAkUNACAAIAFBJ3JLDQILIAMQvAULDwtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALhAgBC38CQAJAAkAgACgCFCIBQX9GDQAgAUUNACAAKAIYIgJBBGsoAgAiA0F4cSEEIARBBEEIIANBA3EiAxsgAWpJDQIgA0EARyAEIAFBJ2pLcQ0BIAIQvAULIAAoAgwhBCAAKAIQIgIEQCAEIQEDQAJAIAEoAgAiA0F/Rg0AIANFDQAgAUEEaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIANqSQ0EIAVBAEcgBiADQSdqS3ENAyAHELwFCyABQQxqIQEgAkEBayICDQALCyAAKAIIIgIEQCAEQQRrKAIAIgNBeHEhASABIAJBDGwiAkEEQQggA0EDcSIDG2pJDQIgA0EARyABIAJBJ2pLcQ0BIAQQvAULAkAgACgCAEUEQCAAKAIEIgQQvQEgBEEEaygCACIAQQNxIQEgAEF4cUGUAkGYAiABG0kNAyABRQ0BIABBuAJJDQEMAgsgACgCBCIEKAIEIQAgBCgCCCICBEAgACEBA0AgARC9ASABQZACaiEBIAJBAWsiAg0ACwsgBCgCACICBEAgAEEEaygCACIDQXhxIQEgASACQZACbCICQQRBCCADQQNxIgMbckkNAyADQQBHIAEgAkEnaktxDQIgABC8BQsgBCgCDCIABEAgBCgCECICQQRrKAIAIgNBeHEhASABQQRBCCADQQNxIgMbIABqSQ0DIANBAEcgASAAQSdqS3ENAiACELwFCyAEKAIcIQYgBCgCICIKBEBBACEHA0ACQCAGIAdBBXRqIgMoAhQiAEF/Rg0AIABFDQAgAygCGCICQQRrKAIAIgVBeHEhASABQQRBCCAFQQNxIgUbIABqSQ0FIAVBAEcgASAAQSdqS3ENBCACELwFCyADKAIMIQAgAygCECICBEAgACEBA0ACQCABKAIAIgVBf0YNACAFRQ0AIAFBBGooAgAiC0EEaygCACIIQXhxIQkgCUEEQQggCEEDcSIIGyAFakkNByAIQQBHIAkgBUEnaktxDQYgCxC8BQsgAUEMaiEBIAJBAWsiAg0ACwsgAygCCCICBEAgAEEEaygCACIFQXhxIQEgASACQQxsIgJBBEEIIAVBA3EiBRtqSQ0FIAVBAEcgASACQSdqS3ENBCAAELwFCyADEOcFIAogB0EBaiIHRw0ACwsgBCgCGCIBBEAgBkEEaygCACICQXhxIQAgACABQQV0IgFBBEEIIAJBA3EiAhtySQ0DIAJBAEcgACABQSdqS3ENAiAGELwFCyAEQQRrKAIAIgFBeHEhACAAQShBLCABQQNxIgEbSQ0CIAFFDQAgAEHMAE8NAQsgBBC8BQ8LQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC/0KAhB/BX4jAEHAAmsiAiQAIAEoAvgBIhFBfU0EQCACQfABaiABQfgBahDtDCACKALwASERIAIpAvQBIRMLAkACQAJAAkACQAJAIAEoArgBIg1B487YE08NAAJAIA1BNGwiD0UEQEEEIRAMAQsgASgCtAEhBiAPEJABIhBFDQIgDUUNACACQeABaiEOIAYhBSANIQcDQCAJIA9GDQEgAkHwAWogBRCjCEF+IQtBfiEKIAUoAhwiDEF+RwRAQX8hCiAGIAlqIgNBJGooAgAhBCADQSBqKAIAIQgCQCAMQX9GBEAgCCEDDAELIARFBEBBASEDQQAhCgwBCyAEEJABIgNFDQYgBARAIAMgCCAE/AoAAAsgBCEKCyADrSAErUIghoQhEgsgBSgCKCIMQX5HBEBBfyELIAYgCWoiA0EwaigCACEEIANBLGooAgAhCAJAIAxBf0YEQCAIIQMMAQsgBEUEQEEBIQNBACELDAELIAQQkAEiA0UNByAEBEAgAyAIIAT8CgAACyAEIQsLIAOtIAStQiCGhCEUCyAOIAVBEGoQtgwgAiACKQL4ASIVNwPYASACIAIpAvABIhY3A9ABIAkgEGoiAyACKALoATYCGCADIAIpA+ABNwIQIAMgFTcCCCADIBY3AgAgA0EsaiAUNwIAIANBKGogCzYCACADQSBqIBI3AgAgA0EcaiAKNgIAIAlBNGohCSAFQTRqIQUgB0EBayIHDQALCyACQQRqIAFBvAFqEO0MQX8hA0F/IQwgASgCAEF/RwRAIAJB8AFqIAEQ2QogAiACKQL0ATcDECACIAIoAvwBNgIYIAIoAvABIQwLIAJBIGogAUHIAWoQwgwgAkEsaiABQdQBahDtDCABKAIQQX9HBEAgAkHwAWogAUEQahDZCiACIAIpAvQBNwM4IAIgAigC/AE2AkAgAigC8AEhAwtBfSEEQX0hCyABKAIgQX1HBEAgAkHwAWoiBSABQSBqEI0CIAIoAvABIQsgAkHIAGogBUEEckHEAPwKAAALIAEoAmhBfUcEQCACQfABaiIFIAFB6ABqEI0CIAIoAvABIQQgAkGMAWogBUEEckHEAPwKAAALIAEoAugBIghB7NC8DU8NAAJAIAhBzABsIg5FBEBBBCEJDAELIAEoAuQBIQogDhCQASIJRQ0FIAhFDQBBACEGIAghBQNAIAYgDkYNASACQfABaiIHIAYgCmoQxA4gBiAJaiAHQcwA/AoAACAGQcwAaiEGIAVBAWsiBQ0ACwsgAkHwAWogASgC8AEgASgC9AEQ0AZBfiEGIAEoAoQCIgpBfkcEQEF/IQYgASgCjAIhByABKAKIAiEFAkAgCkF/RgRAIAUhAQwBCyAHRQRAQQAhBkEBIQEMAQsgBxCQASIBRQ0HIAcEQCABIAUgB/wKAAALIAchBgsgAa0gB61CIIaEIRILIAAgEzcC/AEgACARNgL4ASAAIA02ArgBIAAgEDYCtAEgACANNgKwASAAIAIpAgQ3ArwBIAAgAigCDDYCxAEgACAMNgIAIAAgAikDEDcCBCAAIAIoAhg2AgwgACACKQIgNwLIASAAIAIoAig2AtABIAAgAzYCECAAIAs2AiAgACACKAI0NgLcASAAIAIpAiw3AtQBIAAgAigCQDYCHCAAIAIpAzg3AhQgAEEkaiACQcgAakHEAPwKAAAgACAENgJoIABB7ABqIAJBjAFqQcQA/AoAACAAIAg2AugBIAAgCTYC5AEgACAINgLgASAAIBI3A4gCIAAgBjYChAIgACACKQLwATcC7AEgACACKAL4ATYC9AEgAkHAAmokAA8LEJ4VAAtBBBCnFAALQQEQpxQAC0EBEKcUAAtBBBCnFAALQQEQpxQAC7kKAg9/An4jAEGAAmsiAyQAIANBGGogASACEPUGIANBoAFqIAEQ0gQgA0HYAGogAygCpAEgAygCqAEQhwgCQAJAAkACQAJAIAMoAlgiBEF/RwRAIANBEGogAygCXCIJIAMoAmAiCCACEJoQIANBzABqIAMoAhAQ2wQgCARAIAlBEGohBgNAIAYoAgAiBSgCACEHIAUgB0EBazYCACAHQQFGBEAgBigCABAwCyAGQRRqIQYgCEEBayIIDQALCyAEBEAgCUEEaygCACIFQXhxIQcgByAEQRRsIgRBBEEIIAVBA3EiBRtqSQ0FIAVBAEcgByAEQSdqS3ENBiAJELwFCyADQaABahDpBCADKAKgASIEBEAgAygCpAEiB0EEaygCACIFQXhxIQkgCSAEQcgBbCIEQQRBCCAFQQNxIgUbakkNBSAFQQBHIAkgBEEnaktxDQYgBxC8BQsgA0HYAGogA0EYaiADQcwAahC1CCADQYwBaiABEPgNIAMoAowBIg4gAygCkAEiBEcEQCABKAIAIQ0gAykCmAEhEyADKAKUASEJIAQgDmtByABuIREgA0HUAWohDwNAAkAgDiAQQcgAbGoiCi0AREEBRw0AIApBEGohDCAKKAJAIgdBJGwhBiAKKAI8IgVBFGohCCAFIQQDQCAGBEACfyAEKAIQIgFFBEAgCDUCACESQQAhCyAJDAELIAhBCGsoAgAgAUEMbGoiAUEIaykCACESIAkhCyABQQxrKAIACyEBIARBJGohBCADIBI3AqgBIAMgATYCpAEgAyALNgKgASAGQSRrIQYgCEEkaiEIIANBoAFqEKwKRQ0BDAILCyAPIAopAgA3AgAgDyAKKQIINwIIIAMgAygCiAE2AtABIAMgAykCgAE3A8gBIAMgAykCeDcDwAEgAyADKQJwNwO4ASADIAMpAmg3A7ABIAMgAykCYDcDqAEgAyADKQJYNwOgASADIBM3AuwBIAMgDDYC6AEgAyAJNgLkASAHBEAgB0EUbCIKEJABIgtFDQUgBUEMaiEGQQAhBCAHIQEDQAJAIAZBBGooAgAiDEUEQCAGQQhqIQgMAQsgBigCACAMQQxsaiIFQQxrIQggBUEIaykCACESCyAIKAIAIQggDSANKAIAIgVBAWo2AgAgBUEASA0HIAQgC2oiBSAMQQBHNgIAIAVBEGogDTYCACAFQQhqIBI3AgAgBUEEaiAINgIAIAZBJGohBiAEQRRqIQQgAUEBayIBDQALIANBCGogCyAHIAIQmhAgA0H0AWoiASADKAIIENsEIAtBEGohBiADQdgAaiADQaABaiABELUIA0AgBigCACIEKAIAIQEgBCABQQFrNgIAIAFBAUYEQCAGKAIAEDALIAZBFGohBiAHQQFrIgcNAAsgC0EEaygCACIEQXhxIQEgAUEEQQggBEEDcSIEGyAKakkNCCAEQQBHIAEgCkEnaktxDQkgCxC8BQwBC0EQEJABIgFFDQYgAUKAgICAgAE3AgggAUKIgICAgAE3AgAgA0H0AWoiBCABENsEIANB2ABqIANBoAFqIAQQtQgLIBEgEEEBaiIQRw0ACwsgACADKAKIATYCMCAAIAMpAoABNwIoIAAgAykCeDcCICAAIAMpAnA3AhggACADKQJoNwIQIAAgAykCYDcCCCAAIAMpAlg3AgAgA0GAAmokAA8LQZD4yABBKUHYjckAEMATAAtBBBCnFAsAC0G48MkAQQE6AAAAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAvICQELfwJAAkAgACgCCCIMQYCAgMABcUUNAAJAAkACQAJAIAxBgICAgAFxBEAgAC8BDiIFDQFBACECDAILIAJBEE8EQCABIAFBA2pBfHEiBGsiCiACaiIHQQNxIQsgASAERwRAIApBfE0EQANAIAMgASAIaiIFLAAAQb9/SmogBUEBaiwAAEG/f0pqIAVBAmosAABBv39KaiAFQQNqLAAAQb9/SmohAyAIQQRqIggNAAsLIAEgCGohBgNAIAMgBiwAAEG/f0pqIQMgBkEBaiEGIApBAWoiCg0ACwsCQCALRQ0AIAQgB0H8////B3FqIgUsAABBv39KIQkgC0EBRg0AIAkgBSwAAUG/f0pqIQkgC0ECRg0AIAkgBSwAAkG/f0pqIQkLIAdBAnYhByADIAlqIQgDQCAEIQUgB0UNBUHAASAHIAdBwAFPGyINQQNxIQkCQCANQQJ0IgpB8AdxIgRFBEBBACEGDAELIAQgBWohC0EAIQYgBSEDA0AgAygCACIEQX9zQQd2IARBBnZyQYGChAhxIAZqIANBBGooAgAiBEF/c0EHdiAEQQZ2ckGBgoQIcWogA0EIaigCACIEQX9zQQd2IARBBnZyQYGChAhxaiADQQxqKAIAIgRBf3NBB3YgBEEGdnJBgYKECHFqIQYgCyADQRBqIgNHDQALCyAHIA1rIQcgBSAKaiEEIAZBCHZB/4H8B3EgBkH/gfwHcWpBgYAEbEEQdiAIaiEIIAlFDQALAn8gBSANQfwBcUECdGoiBCgCACIFQX9zQQd2IAVBBnZyQYGChAhxIgMgCUEBRg0AGiAEKAIEIgVBf3NBB3YgBUEGdnJBgYKECHEgA2oiAyAJQQJGDQAaIAQoAggiBUF/c0EHdiAFQQZ2ckGBgoQIcSADagsiA0EIdkH/gRxxIANB/4H8B3FqQYGABGxBEHYgCGohCAwECyACRQRADAQLIAJBA3EhBiACQQRPBEAgAkEMcSEFA0AgCCABIARqIgcsAABBv39KaiAHQQFqLAAAQb9/SmogB0ECaiwAAEG/f0pqIAdBA2osAABBv39KaiEIIAUgBEEEaiIERw0ACyAGRQ0ECyABIARqIQMDQCAIIAMsAABBv39KaiEIIANBAWohAyAGQQFrIgYNAAsMAwsgASACaiEDQQAhAiABIQYgBSEEA0AgAyAGRg0CAn8gBiIHLAAAIgZBAE4EQCAHQQFqDAELIAdBAmogBkFgSQ0AGiAHQQRBAyAGQW9LG2oLIgYgB2sgAmohAiAEQQFrIgQNAAsLQQAhBAsgBSAEayEICyAALwEMIgUgCE0NACAFIAhrIQVBACEDQQAhBwJAAkACQCAMQR12QQNxQQFrDgIAAQILIAUhBwwBCyAFQf7/A3FBAXYhBwsgDEH///8AcSEEIAAoAgQhCiAAKAIAIQsDQCADQf//A3EgB0H//wNxSQRAQQEhBiADQQFqIQMgCyAEIAooAhARAQBFDQEMAwsLQQEhBiALIAEgAiAKKAIMEQAADQEgBSAHa0H//wNxIQBBACEDA0AgACADQf//A3FNBEBBAA8LIANBAWohAyALIAQgCigCEBEBAEUNAAsMAQsgACgCACABIAIgACgCBCgCDBEAACEGCyAGC54KAQh/AkACQCAALQAAIgMgAS0AAEcNAANAAkACQAJAAkACQAJAAkACQAJAAkACQCADQf8BcSICQQlHBEBBASEDAkAgAkEBaw4KAwQFBgcICQoACwILAAsgACgCBCABKAIERg0KDAwLQQAhAyAAKAIMIgIgASgCDEcNCEEBIQMgAkUNCCAAKAIIIQAgASgCCCEBIAJBAWshAgNAIAAgARCeBCIDRQ0JIAJBAEcgAEHQAGohACABQdAAaiEBIAJBAWshAg0ACwwIC0EAIQMgACgCDCICIAEoAgxHDQdBASEDIAJFDQcgACgCCCEAIAEoAgghASACQQFrIQIDQCAAIAEQngQiA0UNCCACQQBHIABB0ABqIQAgAUHQAGohASACQQFrIQINAAsMBwtBACEDIAAoAgwiAiABKAIMRw0GQQEhAyACRQ0GIAAoAgghACABKAIIIQEgAkEBayECA0AgACABEJ4EIgNFDQcgAkEARyAAQdAAaiEAIAFB0ABqIQEgAkEBayECDQALDAYLIAAoAjgiA0ECRiICIAEoAjgiBEECRnMNCAJAAkACQCACBEAgACgCRCIGIAEoAkRGDQEMDAsgAyAERw0LIAAoAjwgASgCPEciAg0BIANBAXFFDQEgACgCQCABKAJARw0LIAAoAkQgASgCREYNAgwLCyAGRQ0BIAAoAkAhByABKAJAIQhBACEDQQAhAgNAIAIgB2oiBSgCACIJIAIgCGoiBCgCAEcNCAJAIAlFBEAgBUEEaigCACAEQQRqKAIARw0KDAELIAVBBGooAgAgBEEEaigCAEcNCSAFQQhqKAIAIARBCGooAgBHDQkgBUEMaigCACAEQQxqKAIARw0JCyACQRRqIQIgBkEBayIGDQALDAELIAINCSADQQFxRQ0ADAkLQQAhAyAAQQhqIAFBCGoQywJFDQUgAC0ATCABLQBMRg8LIAAoAigiBCABKAIoRw0HIAEoAiwhAyAAKAIsIQICQAJAIAQEQCACIANGDQEMCgsgAiADRg0BDAkLIAAoAjAgASgCMEcNCCAAKAI0IAEoAjRGDQAMCAtBGiAAQQhqIgUoAgAiAiACQRpMGyIGQRogAUEIaiIEKAIAIgMgA0EaTBtHDQcCQAJAIAZBG2sOAwoKAQALIAJBf0YiAiADQX9Gcw0IAkAgAgRAIAAoAgwiAiABKAIMRg0BDAoLIAUgBBDAAw8LIAJBAXMgACgCECIEIAEoAhAiBUZxIQMgBCAFRw0FIAJFDQVBACEDIAAoAhQgASgCFEcNBSAAKAIYIAEoAhhGDwsgAC0ADCABLQAMRg8LIAAoAgggASgCCEYPCyAAKAIIIAEoAghHDQVBACEDIAAoAgwgASgCDBCeBEUNAiAALQAQIAEtABBGDwsgACgCBCIDIAEoAgRHDQQCQCADBEAgACgCCCABKAIIRw0GIAAoAgwgASgCDEcNBkEAIQMgACgCECABKAIQRg0BDAMLQQAhAyAAKAIIIAEoAghHDQILAn8CQCAAKAIYIgAtAAAiAyABKAIYIgEtAABGBH8CQAJAAkAgA0EDaw4FAAEEBAIECyAALQABIAEtAAFGDAQLIABBCGogAUEIahDAAwwDCyAALQABIAEtAAFGBUEACwwBCyAAQQhqIAFBCGoQngQLDwsgAC0AASABLQABRiEDCyADDwsgACgCCCIALQAAIgMgASgCCCIBLQAARg0AC0EADwtBAA8LIABBDGogAUEMahDDDQueCgEIfwJAAkAgAC0AACIDIAEtAABHDQADQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0H/AXEiAkEJRwRAQQEhAwJAIAJBAWsOCgMEBQYHCAkKAAsCCwALIAAoAgQgASgCBEYNCgwMC0EAIQMgACgCDCICIAEoAgxHDQhBASEDIAJFDQggACgCCCEAIAEoAgghASACQQFrIQIDQCAAIAEQnwQiA0UNCSACQQBHIABB0ABqIQAgAUHQAGohASACQQFrIQINAAsMCAtBACEDIAAoAgwiAiABKAIMRw0HQQEhAyACRQ0HIAAoAgghACABKAIIIQEgAkEBayECA0AgACABEJ8EIgNFDQggAkEARyAAQdAAaiEAIAFB0ABqIQEgAkEBayECDQALDAcLQQAhAyAAKAIMIgIgASgCDEcNBkEBIQMgAkUNBiAAKAIIIQAgASgCCCEBIAJBAWshAgNAIAAgARCfBCIDRQ0HIAJBAEcgAEHQAGohACABQdAAaiEBIAJBAWshAg0ACwwGCyAAKAI4IgNBAkYiAiABKAI4IgRBAkZzDQgCQAJAAkAgAgRAIAAoAkQiBiABKAJERg0BDAwLIAMgBEcNCyAAKAI8IAEoAjxHIgINASADQQFxRQ0BIAAoAkAgASgCQEcNCyAAKAJEIAEoAkRGDQIMCwsgBkUNASAAKAJAIQcgASgCQCEIQQAhA0EAIQIDQCACIAdqIgUoAgAiCSACIAhqIgQoAgBHDQgCQCAJRQRAIAVBBGooAgAgBEEEaigCAEcNCgwBCyAFQQRqKAIAIARBBGooAgBHDQkgBUEIaigCACAEQQhqKAIARw0JIAVBDGooAgAgBEEMaigCAEcNCQsgAkEUaiECIAZBAWsiBg0ACwwBCyACDQkgA0EBcUUNAAwJC0EAIQMgAEEIaiABQQhqEMwCRQ0FIAAtAEwgAS0ATEYPCyAAKAIoIgQgASgCKEcNByABKAIsIQMgACgCLCECAkACQCAEBEAgAiADRg0BDAoLIAIgA0YNAQwJCyAAKAIwIAEoAjBHDQggACgCNCABKAI0Rg0ADAgLQRogAEEIaiIFKAIAIgIgAkEaTBsiBkEaIAFBCGoiBCgCACIDIANBGkwbRw0HAkACQCAGQRtrDgMKCgEACyACQX9GIgIgA0F/RnMNCAJAIAIEQCAAKAIMIgIgASgCDEYNAQwKCyAFIAQQvwMPCyACQQFzIAAoAhAiBCABKAIQIgVGcSEDIAQgBUcNBSACRQ0FQQAhAyAAKAIUIAEoAhRHDQUgACgCGCABKAIYRg8LIAAtAAwgAS0ADEYPCyAAKAIIIAEoAghGDwsgACgCCCABKAIIRw0FQQAhAyAAKAIMIAEoAgwQnwRFDQIgAC0AECABLQAQRg8LIAAoAgQiAyABKAIERw0EAkAgAwRAIAAoAgggASgCCEcNBiAAKAIMIAEoAgxHDQZBACEDIAAoAhAgASgCEEYNAQwDC0EAIQMgACgCCCABKAIIRw0CCwJ/AkAgACgCGCIALQAAIgMgASgCGCIBLQAARgR/AkACQAJAIANBA2sOBQABBAQCBAsgAC0AASABLQABRgwECyAAQQhqIAFBCGoQvwMMAwsgAC0AASABLQABRgVBAAsMAQsgAEEIaiABQQhqEJ8ECw8LIAAtAAEgAS0AAUYhAwsgAw8LIAAoAggiAC0AACIDIAEoAggiAS0AAEYNAAtBAA8LQQAPCyAAQQxqIAFBDGoQxA0LngoBCH8CQAJAIAAtAAAiAyABLQAARw0AA0ACQAJAAkACQAJAAkACQAJAAkACQAJAIANB/wFxIgJBCUcEQEEBIQMCQCACQQFrDgoDBAUGBwgJCgALAgsACyAAKAIEIAEoAgRGDQoMDAtBACEDIAAoAgwiAiABKAIMRw0IQQEhAyACRQ0IIAAoAgghACABKAIIIQEgAkEBayECA0AgACABEKAEIgNFDQkgAkEARyAAQdAAaiEAIAFB0ABqIQEgAkEBayECDQALDAgLQQAhAyAAKAIMIgIgASgCDEcNB0EBIQMgAkUNByAAKAIIIQAgASgCCCEBIAJBAWshAgNAIAAgARCgBCIDRQ0IIAJBAEcgAEHQAGohACABQdAAaiEBIAJBAWshAg0ACwwHC0EAIQMgACgCDCICIAEoAgxHDQZBASEDIAJFDQYgACgCCCEAIAEoAgghASACQQFrIQIDQCAAIAEQoAQiA0UNByACQQBHIABB0ABqIQAgAUHQAGohASACQQFrIQINAAsMBgsgACgCOCIDQQJGIgIgASgCOCIEQQJGcw0IAkACQAJAIAIEQCAAKAJEIgYgASgCREYNAQwMCyADIARHDQsgACgCPCABKAI8RyICDQEgA0EBcUUNASAAKAJAIAEoAkBHDQsgACgCRCABKAJERg0CDAsLIAZFDQEgACgCQCEHIAEoAkAhCEEAIQNBACECA0AgAiAHaiIFKAIAIgkgAiAIaiIEKAIARw0IAkAgCUUEQCAFQQRqKAIAIARBBGooAgBHDQoMAQsgBUEEaigCACAEQQRqKAIARw0JIAVBCGooAgAgBEEIaigCAEcNCSAFQQxqKAIAIARBDGooAgBHDQkLIAJBFGohAiAGQQFrIgYNAAsMAQsgAg0JIANBAXFFDQAMCQtBACEDIABBCGogAUEIahDLAkUNBSAALQBMIAEtAExGDwsgACgCKCIEIAEoAihHDQcgASgCLCEDIAAoAiwhAgJAAkAgBARAIAIgA0YNAQwKCyACIANGDQEMCQsgACgCMCABKAIwRw0IIAAoAjQgASgCNEYNAAwIC0EaIABBCGoiBSgCACICIAJBGkwbIgZBGiABQQhqIgQoAgAiAyADQRpMG0cNBwJAAkAgBkEbaw4DCgoBAAsgAkF/RiICIANBf0ZzDQgCQCACBEAgACgCDCICIAEoAgxGDQEMCgsgBSAEEMADDwsgAkEBcyAAKAIQIgQgASgCECIFRnEhAyAEIAVHDQUgAkUNBUEAIQMgACgCFCABKAIURw0FIAAoAhggASgCGEYPCyAALQAMIAEtAAxGDwsgACgCCCABKAIIRg8LIAAoAgggASgCCEcNBUEAIQMgACgCDCABKAIMEKAERQ0CIAAtABAgAS0AEEYPCyAAKAIEIgMgASgCBEcNBAJAIAMEQCAAKAIIIAEoAghHDQYgACgCDCABKAIMRw0GQQAhAyAAKAIQIAEoAhBGDQEMAwtBACEDIAAoAgggASgCCEcNAgsCfwJAIAAoAhgiAC0AACIDIAEoAhgiAS0AAEYEfwJAAkACQCADQQNrDgUAAQQEAgQLIAAtAAEgAS0AAUYMBAsgAEEIaiABQQhqEMADDAMLIAAtAAEgAS0AAUYFQQALDAELIABBCGogAUEIahCgBAsPCyAALQABIAEtAAFGIQMLIAMPCyAAKAIIIgAtAAAiAyABKAIIIgEtAABGDQALQQAPC0EADwsgAEEMaiABQQxqEMMNC8gMAQd/IwBBMGsiBCQAIAQgAjYCBCAEIAE2AgACQAJAAkAgACgCCCIBRQRAIAQgBK1CgICAgNABhDcDKCAEQQhqIgdB48/BACAEQShqIgUQuAwgBCgCCCEBIAQoAgwhAiAEIAQoAhA2AiQgBCACNgIgIAQgBEEgaq1CgICAgNABhDcDKCAHQZqcwAAgBRC4DCAEIAApAgw3AhQgBCAAKAIUNgIcIAMoAggiACADKAIARgRAIAMQvRILIAMgAEEBajYCCCADKAIEIABBGGxqIgAgBCkCCDcCACAAIAQpAhA3AgggACAEKQIYNwIQIAFFDQEgAkEEaygCACIDQXhxIQAgAEEEQQggA0EDcSIDGyABakkNAiADQQBHIAAgAUEnaktxDQMgAhC8BQwBCwJAAkACQAJAAkACfyAAKAIEIgIsAAAiBUEATgRAIAVB/wFxDAELIAItAAFBP3EiCSAFQR9xIgZBBnRyIAVBX00NABogAi0AAkE/cSAJQQZ0ciIJIAZBDHRyIAVBcEkNABogBkESdEGAgPAAcSACLQADQT9xIAlBBnRycgsiB0Ewa0EKSQ0AIAdBsgFPBEBBACEJQRVBACAHQdCoBE8bIgZBC2ohBSAGIAUgBUECdCgC2JdDQQt0IAdBC3QiBUsbIghBBWohBiAIIAYgBkECdCgC2JdDQQt0IAVLGyIIQQNqIQYgCCAGIAZBAnQoAtiXQ0ELdCAFSxsiCEEBaiEGIAggBiAGQQJ0KALYl0NBC3QgBUsbIghBAWohBiAIIAYgBkECdCgC2JdDQQt0IAVLGyIIQQJ0KALYl0NBC3QhBiAFIAZGIAUgBktqIAhqIghBAnQiBUHYl8MAaiEKIAUoAtiXQ0EVdiEFQaMCIQYCQCAIQSlNBEAgCigCBEEVdiEGIAhFDQELIApBBGsoAgBB////AHEhCQsCQCAGIAVBf3NqRQ0AIAcgCWshCSAGQQFrIQZBACEHA0AgCSAHIAVBntzCAGotAABqIgdJDQEgBiAFQQFqIgVHDQALCyAFQQFxDQELIAFBB00EQANAIAItAABBLUYNBiACQQFqIQIgAUEBayIBDQAMBwsACyACQQNqQXxxIgcgAkYNASAHIAJrIQUgAiAHayEGIAIhBwNAIActAABBLUYNBSAHQQFqIQcgBkEBaiIGDQALIAFBCGsiByAFSQ0DDAILIAQgBK1CgICAgNABhDcDKCAEQQhqIgdByNrBACAEQShqIgUQuAwgBCgCCCEBIAQoAgwhAiAEIAQoAhA2AiQgBCACNgIgIAQgBEEgaq1CgICAgNABhDcDKCAHQZqcwAAgBRC4DCAEIAApAgw3AhQgBCAAKAIUNgIcIAMoAggiACADKAIARgRAIAMQvRILIAMgAEEBajYCCCADKAIEIABBGGxqIgAgBCkCCDcCACAAIAQpAhA3AgggACAEKQIYNwIQIAFFDQQgAkEEaygCACIDQXhxIQAgAEEEQQggA0EDcSIDGyABakkNBSADQQBHIAAgAUEnaktxDQYgAhC8BQwECyABQQhrIQdBACEFCwNAQYCChAggAiAFaiIGKAIAIglBrdq06QJzayAJckGAgoQIIAZBBGooAgAiBkGt2rTpAnNrIAZycUGAgYKEeHFBgIGChHhHDQEgByAFQQhqIgVPDQALCyABIAVGDQEgASAFayEBIAIgBWohAgNAIAItAABBLUYNASACQQFqIQIgAUEBayIBDQALDAELIAQgBK1CgICAgNABhDcDKCAEQQhqIgdBjdbBACAEQShqIgUQuAwgBCgCCCEBIAQoAgwhAiAEIAQoAhA2AiQgBCACNgIgIAQgBEEgaq1CgICAgNABhDcDKCAHQZqcwAAgBRC4DCAEIAApAgw3AhQgBCAAKAIUNgIcIAMoAggiACADKAIARgRAIAMQvRILIAMgAEEBajYCCCADKAIEIABBGGxqIgAgBCkCCDcCACAAIAQpAhA3AgggACAEKQIYNwIQIAFFDQAgAkEEaygCACIDQXhxIQAgAEEEQQggA0EDcSIDGyABakkNASADQQBHIAAgAUEnaktxRQRAIAIQvAUMAQsMAgsgBEEwaiQADwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL5AoBCH8jAEHwAGsiAyQAQQEhAgJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCIEIAEoAggiBk8NBCABIARBAWoiBTYCBCABKAIUIQkgAyABKAKIATYCOCADIAEpAoABNwMwIAEtAJEBQQJHDQIgBSAGTw0DIAEgBEECaiICNgIEIAIgBk8NAiABIARBA2o2AgQMAQsgASgCFCEJIAMgASgCiAE2AjggAyABKQKAATcDMCABLQCRAUECRw0BCyABQQA6AJEBIANBKGogARCUCiADKAIoIAMoAiwiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIANBGGogARCUCiADKAIcIQEgAygCGCECDAELIAFBADoAkQEgA0EgaiABEJQKIAMoAiAhAiADKAIkIgEgBDoAkQELIAJBAUcNAAsLQQEhAgJAAkAgASgCAEEBRgRAIAEoAgQiBCABKAIIIgVPDQMgASAEQQFqIgI2AgQgASgCFCEGIAMgASgCiAE2AkggAyABKQKAATcDQCACIAVPDQIgASAEQQJqNgIEDAELIAEoAhQhBiADIAEoAogBNgJIIAMgASkCgAE3A0ALIAFBgAFqIQIgASABLQCQASIIQQFHOgCQASADIAIoAgg2AlggAyACKQIANwNQIAEoAjghBCABKAJQIgUgASgCSEYEQCABQcgAahCWEgsgASAFQQFqNgJQIAEoAkwgBUEDdGoiBSAENgIEIAUgBDYCAEEAIQQCQCABKAKIASIFQX1LDQAgBUECaiIHIAEoAoQBSw0AIAIoAgAgBWovAABBqt4ARw0AIAEgBzYCiAFBASEECyABLQB8QQFGBEBBAhCQASIHRQ0EIAdBqt4AOwAAIANBAjYCbCADIAc2AmggA0KAgICAIDcCYCABIAUgA0HgAGogBBD5CAsgAiADKAJYNgIIIAIgAykDUDcCACABIAg6AJABIAFBMGoQhgogBA0AAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCICIAEoAggiBE8NAiABIAJBAWoiBTYCBCAEIAVNDQEgASACQQJqNgIECyABQQA6AJEBIANBEGogARCUCiADKAIQIAMoAhQiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAiABKAIITw0CIAEgAkEBajYCBAsCQCABLQCRASIERQRAIAMgARCUCiADKAIEIQEgAygCACECDAELIAFBADoAkQEgA0EIaiABEJQKIAMoAgghAiADKAIMIgEgBDoAkQELIAJBAUcNAAsLIAEoAoQBIQQgASgCgAEhBQJAIAEoAogBIgJFDQAgAiAETwRAIAIgBEYNAQwGCyACIAVqLAAAQUBIDQULIAIgBEYNAEEBIQYCQCACIAVqIgQsAAAiBUEATg0AIAQtAAFBP3EhCCAFQR9xIQcCfyAHQQZ0IAhyIAVBYEkNABogBC0AAkE/cSAIQQZ0ciEIIAggB0EMdHIgBUFwSQ0AGiAHQRJ0QYCA8ABxIAQtAANBP3EgCEEGdHJyCyIEQYABSQ0AQQIhBiAEQYAQSQ0AQQNBBCAEQYCABEkbIQYLIAEgAiAGajYCiAFBACECDAELIAEgAygCSDYCiAEgASADKQNANwKAAUEBIQIgBiABKAIUSw0AIAEgBjYCFAsgAkEBRw0AIAEgAygCODYCiAEgASADKQMwNwKAASAJIAEoAhRLDQAgASAJNgIUCyAAIAE2AgQgACACNgIAIANB8ABqJAAPC0EBEKcUAAsgBSAEIAIgBEHMi8gAEP0UAAuUDAEKfyMAQdADayIHJAACQAJAAkACQAJAAkAgBCgCUCIIQX9GBEAgBEEQaiEIIARBAWohCiAEKAIMIQ4gBCgCCCEJIAQoAgQhCyAELQAAIQQMAQsgByAEKQJUNwL8ASAHIAg2AvgBIAdB2AJqIgggB0H4AWoQlgQgBy0A2AIhDCAHQQFqIAhBAXJBzwD8CgAAIARBEGohCCAEQQFqIQogBCgCDCEOIAQoAgghDSAEKAIEIQsgBC0AACEEIAxB/wFGBEAgDSEJDAELQaABEJABIglFDQEgCSAEOgAAIAkgDjYCDCAJIA02AgggCSALNgIEIAkgCi8AADsAASAJIAotAAI6AAMgCSAIKQMANwMQIAkgCCkDCDcDGCAJIAgpAxA3AyAgCSAIKQMYNwMoIAkgCCkDIDcDMCAJIAgpAyg3AzggCSAIKQMwNwNAIAkgCCkDODcDSCAJIAw6AFAgCUHRAGogB0EBakHPAPwKAABBACEEQQIhDkECIQsLIAMoAgghDyADKAIEIRAgAygCACINKAIAIQwgDSAMQQFqNgIAIAxBAEgNASAHIAotAAI6AHMgByAKLwAAOwBxIAcgCCkDADcDgAEgByAIKQMINwOIASAHIAgpAxA3A5ABIAcgCCkDGDcDmAEgByAIKQMgNwOgASAHIAgpAyg3A6gBIAcgCCkDMDcDsAEgByAIKQM4NwO4ASAHIA42AnwgByAJNgJ4IAcgCzYCdCAHQgA3A1AgB0IANwNgIAdBfzYC2AEgByANNgLkASAHIBA2AugBIAcgDzYC7AEgB0EAOwHwASAHQoCAgICAATcDwAEgB0KAgICAcDcDyAEgB0ECOgDyASAHIAQ6AHAgBkJ/UgRAIAdCATcDaCAHIAY3A2ALIAdB2AJqIAEgAyAHQdAAaiAFQQEgAhEIACAHKALcAiEBAkAgBygC2AIiA0F/RgRAIAcoAuACIQIgAEGLgICAeDYCOCAAIAI2AgwgACABNgIIIABBATYCAAwBCyABIAcoAuACIgJBNGxqIQlBfSEEIAJFBEAgASEIDAYLIAFBNGohCCABKAIAIgpBfkYNBQJAAkAgAkEBRwRAIAFB6ABqIQggASgCNCILQX5HDQELIAcgAUEEaiICKAIoNgLQAiAHIAIpAiA3A8gCIAcgAikCGDcDwAIgByACKQIQNwO4AiAHIAIpAgg3A7ACIAcgAikCADcDqAIgCSAIa0E0biEEIAEoAjAhCyAIIAlHBEADQCAIENoEIAhBNGohCCAEQQFrIgQNAAsLIANFDQEgAUEEaygCACIEQXhxIQIgAiADQTRsIgNBBEEIIARBA3EiBBtqSQ0FIARBAEcgAiADQSdqS3ENBiABELwFDAELIAcgASkCYDcDoAIgByABKQJYNwOYAiAHIAEpAlA3A5ACIAcgASkCSDcDiAIgByABKQJANwOAAiAHIAEpAjg3A/gBIAcgASkCCDcDqAIgByABKQIQNwOwAiAHIAEpAhg3A7gCIAcgASkCIDcDwAIgByABKQIoNwPIAiAHIAEoAjA2AtACIApBfEYgCiEEIAEoAgQiBSEKRQ0GCyAAIAcoAtACNgIwIAAgBykDyAI3AiggACAHKQPAAjcCICAAIAcpA7gCNwIYIAAgBykDsAI3AhAgACAHKQOoAjcCCCAAIAs2AjQgACAKNgIEIABBADYCAAsgB0HQA2okAA8LQbjwyQBBAToAAAALAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAcgBTYC3AIgByAENgLYAiAHIAcpA6gCNwLgAiAHIAcpA7ACNwLoAiAHIAcpA7gCNwLwAiAHIAcpA8ACNwL4AiAHIAcpA8gCNwKAAyAHIAcoAtACNgKIAyAHIAs2AowDIAcgBykD+AE3ApADIAcgBykDgAI3ApgDIAcgBykDiAI3AqADIAcgBykDkAI3AqgDIAcgBykDmAI3ArADIAcgBykDoAI3ArgDIAcgCTYCzAMgByADNgLIAyAHIAg2AsQDIAcgATYCwANB+OPFAEE3IAdB2AJqQejjxQBBsOTFABDaEgALzAwCBX8BfiMAQZABayICJAAgACgCCCEFIAAoAgQhA0EBIQQgASgCAEGissgAQQEgASgCBCgCDBEAACEAAkAgBUUEQCAAIQQMAQsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgASkCACEHIAJBAToAGyACIAc3AgwgAkGg68IANgIgIAIgASkCCDcCJCACIAJBG2o2AhQgAiACQQxqNgIcIAJBkOjFADYCjAEgAkGk7MUANgKEASACQZTsxQA2AnwgAkGE7MUANgJ0IAJBhOzFADYCbCACQfDnxQA2AmQgAkH068UANgJcIAJB5OvFADYCVCACQfDnxQA2AkwgAkHQ6MUANgJEIAJB1OvFADYCPCACQcTrxQA2AjQgAiADNgJIIAIgA0HsAWo2AoABIAIgA0HgAWo2AnggAiADQegAajYCcCACIANBIGo2AmggAiADQRBqNgJgIAIgA0HUAWo2AlggAiADQcgBajYCUCACIANBvAFqNgJAIAIgA0GwAWo2AjggAiADQfgBajYCMCACIANBhAJqNgIsIAIgAkEsajYCiAEgAkEcakG87cUAQQZB3OzFAEEMIAJBMGpBDBDwBw0BIAIoAhxBpLLIAEECIAIoAiAoAgwRAAAhBAwBCyACQZDoxQA2AowBIAJBpOzFADYChAEgAkGU7MUANgJ8IAJBhOzFADYCdCACQYTsxQA2AmwgAkHw58UANgJkIAJB9OvFADYCXCACQeTrxQA2AlQgAkHw58UANgJMIAJB0OjFADYCRCACQdTrxQA2AjwgAkHE68UANgI0IAIgAzYCSCACIANB7AFqNgKAASACIANB4AFqNgJ4IAIgA0HoAGo2AnAgAiADQSBqNgJoIAIgA0EQajYCYCACIANB1AFqNgJYIAIgA0HIAWo2AlAgAiADQbwBajYCQCACIANBsAFqNgI4IAIgA0H4AWo2AjAgAiADQYQCajYCHCACIAJBHGo2AogBIAFBvO3FAEEGQdzsxQBBDCACQTBqQQwQ8AchBAsgBUEBRg0AIAVBkAJsQZACayEGQQAhBQNAAn9BASAEQQFxDQAaIAMgBWoiAEGQAmohBAJAIAEtAApBgAFxBEAgASkCACEHIAJBAToAGyACIAc3AgwgAkGg68IANgIgIAIgASkCCDcCJCACIAJBG2o2AhQgAiACQQxqNgIcIAJBkOjFADYCjAEgAkGk7MUANgKEASACIABB/ANqNgKAASACQZTsxQA2AnwgAiAAQfADajYCeCACQYTsxQA2AnQgAiAAQfgCajYCcCACQYTsxQA2AmwgAiAAQbACajYCaCACQfDnxQA2AmQgAiAAQaACajYCYCACQfTrxQA2AlwgAiAAQeQDajYCWCACQeTrxQA2AlQgAiAAQdgDajYCUCACQfDnxQA2AkwgAiAENgJIIAJB0OjFADYCRCACIABBzANqNgJAIAJB1OvFADYCPCACIABBwANqNgI4IAJBxOvFADYCNCACIABBiARqNgIwIAIgAEGUBGo2AiwgAiACQSxqNgKIASACQRxqQbztxQBBBkHc7MUAQQwgAkEwakEMEPAHRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAJBkOjFADYCjAEgAkGk7MUANgKEASACQZTsxQA2AnwgAkGE7MUANgJ0IAJBhOzFADYCbCACQfDnxQA2AmQgAkH068UANgJcIAJB5OvFADYCVCACQfDnxQA2AkwgAiAENgJIIAJB0OjFADYCRCACQdTrxQA2AjwgAkHE68UANgI0IAIgAEH8A2o2AoABIAIgAEHwA2o2AnggAiAAQfgCajYCcCACIABBsAJqNgJoIAIgAEGgAmo2AmAgAiAAQeQDajYCWCACIABB2ANqNgJQIAIgAEHMA2o2AkAgAiAAQcADajYCOCACIABBiARqNgIwIAIgAEGUBGo2AhwgAiACQRxqNgKIASABQbztxQBBBkHc7MUAQQwgAkEwakEMEPAHDAELIAIoAhxBpLLIAEECIAIoAiAoAgwRAAALIQQgBiAFQZACaiIFRw0ACwtBASEAIARFBEAgASgCAEGossgAQQEgASgCBCgCDBEAACEACyACQZABaiQAIAAL/ggCCn8BfgJAAkAgACgCCCIIBEAgACgCBCEJA0ACQAJAAkACQAJAQQIgCSAFQcgBbGoiASkDACILp0ECayALQgFYGw4DAQIDAAsgASgCWCICKAIAIQAgAiAAQQFrNgIAIAFBCGohAiAAQQFGBEAgASgCWBAwCyACLQAAQf8BRg0DIAIQrwQMAwsgASgCGCICKAIAIQAgAiAAQQFrNgIAIABBAUcNAiABKAIYEDAMAgsgASgCGCICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIYEDALIAEoAiAhAiABKAIkIgMEQCACIQADQCAAEKYHIABByAFqIQAgA0EBayIDDQALCyABKAIcIgFFDQEgAkEEaygCACIDQXhxIQAgACABQcgBbCIBQQRBCCADQQNxIgMbakkNBCADQQBHIAAgAUEnaktxDQUgAhC8BQwBCyABKAKoASICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAKoARAwCyABKAKUASICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAKUARAwCwJAIAEoAnwiAEF/Rg0AIAEoAoABIQIgASgChAEiAwRAIAIhAANAIAAQpgcgAEHIAWoQiAQgAEHoAWohACADQQFrIgMNAAsgASgCfCEACyAARQ0AIAJBBGsoAgAiBEF4cSEDIAMgAEHoAWwiAEEEQQggBEEDcSIEG2pJDQQgBEEARyADIABBJ2pLcQ0FIAIQvAULIAEtACBB/wFHBEAgAUEgahCvBAsgASgCdCECIAEoAngiAwRAIAIhAANAIAAQiwUgAEFAayEAIANBAWsiAw0ACwsgASgCcCIDBEAgAkEEaygCACIEQXhxIQAgACADQQZ0IgNBBEEIIARBA3EiBBtySQ0EIARBAEcgACADQSdyS3ENBSACELwFCwJAIAEoAogBIgBBf0YNACABQYgBahClBCAARQ0AIAEoAowBIgNBBGsoAgAiBEF4cSECIAIgAEHIAWwiAEEEQQggBEEDcSIEG2pJDQQgBEEARyACIABBJ2pLcQ0FIAMQvAULIAEoArQBIQIgASgCuAEiAwRAIAIhAANAIAAoAgAiBARAIABBBGooAgAiCkEEaygCACIGQXhxIQcgB0EEQQggBkEDcSIGGyAEakkNBiAGQQBHIAcgBEEnaktxDQcgChC8BQsgAEEMaiEAIANBAWsiAw0ACwsgASgCsAEiAwRAIAJBBGsoAgAiBEF4cSEAIAAgA0EMbCIDQQRBCCAEQQNxIgQbakkNBCAEQQBHIAAgA0EnaktxDQUgAhC8BQsgASgCwAEhAiABKALEASIDBEAgAiEAA0AgABCmByAAQcgBaiEAIANBAWsiAw0ACwsgASgCvAEiAUUNACACQQRrKAIAIgNBeHEhACAAIAFByAFsIgFBBEEIIANBA3EiAxtqSQ0DIANBAEcgACABQSdqS3ENBCACELwFCyAFQQFqIgUgCEcNAAsLDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALkgoBDn8jAEEgayIJJABBASECAkACQCABKAIAQQFGBEAgASgCBCIEIAEoAghPDQEgASAEQQFqNgIEC0EAIQQgASgCjAEiAiABKAKIASIFRgRAIAEoAiAhByABKAIsIQQLIAEoAhQhBgJAIAEtAJABQQJHDQAgAS0AkQFFDQAgASgCDCAGRgRAIAFBDGoQmhILIAEoAhAgBkEUbGoiAiAFNgIIIAJBADYCBCACQQA6AAAgASAGQQFqNgIUIAEoAowBIQILIAIgBUYEQCABKAIsIAEoAiBqIQoLIAEoAoQBIQMgASgCgAEhCCABKAJ4IQ4gASgCXCEPAkAgASgCiAEiAkUNACACIANPBEAgAiADRg0BDAMLIAIgCGosAABBQEgNAgsCQCACIANGDQBB0J7FAAJ/IAIgCGoiCCwAACIDQQBOBEAgA0H/AXEMAQsgCC0AAUE/cSEMIANBH3EhDSANQQZ0IAxyIANBX00NABogCC0AAkE/cSAMQQZ0ciEMIAwgDUEMdHIgA0FwSQ0AGiANQRJ0QYCA8ABxIAgtAANBP3EgDEEGdHJyCyIDEPYNRQ0AQQEhCyABAn9BASADQYABSQ0AGkECIANBgBBJDQAaQQNBBCADQYCABEkbCyACajYCiAELIAEtAHwEQCAJQQM2AhAgASACIAlBEGogCxD5CAsCfyALRQRAIAlBCGogAUEwQTkQpA0gCSgCDCEBIAkoAggMAQtBAAshC0EBIQIgAS0AkAEhAwJAAkACQAJAAkACQAJAIAtBAUYEQCADQf8BcUEBRg0IIAEtAJEBRQ0DIAEoAowBIgIgBUcNASAKIAEoAiAiAiABKAIsIgNqIgVJIAUgCmtBAUZxDQMgAiAHTwRAIAEgBzYCICAHIQILIAMgBEkNAiABIAQ2AiwMAgsgA0H/AXFBAUYEfyABLQCRAUUNBwJAIAUgASgCjAEiAkYEQCAKIAEoAiwiAiABKAIgIgNqIgVJIAUgCmtBAUZxDQkgAyAHTwRAIAEgBzYCIAsgAiAESQ0BIAEgBDYCLCAEIQIMAQsgAiAFTw0IIAEgBTYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAiQgAkYEQCABQSRqEKMSCyABKAIoIAJqQSI6AAAgASACQQFqNgIsIAEtAJABBSADC0H/AXFBAkcNBiABLQCRAUUNBiABKAIUIgIgBk0NAyABKAIQIAZBFGxqIgQtAAANBCAEIAI2AgQgASgCiAEhByABKAIUIgQgASgCDEYEQCABQQxqEJoSCyABKAIQIARBFGxqIgIgBzYCECACQQA2AgggAiAGNgIEIAJBgcQAOwEAIAEgBEEBajYCFAwGCyACIAVPDQEgASAFNgKMAUEAIQIgAUEANgIsIAFBADYCIAsgASgCGCACRgRAIAFBGGoQoxILIAEgAkEBajYCICABKAIcIAJqQSI6AAALQQEhAiABLQB8QQFHDQIgAS0AkQFFDQIgAUHUAGpBIiAPQQAgASgCeCAOTRsQkwUMAgsgBiACQZyKyAAQhRMAC0Ggq8kAQShBrIrIABCvFAALIAEtAJABQQJHDQEgAS0AkQFFDQEgBiABKAIUSw0BIAEgBjYCFAwBC0EAIQIgAS0AfEUNACABLQCRAUUNACABQdQAakEiIA9BACABKAJ4IA5NGxCTBQsgACABNgIEIAAgAjYCACAJQSBqJAAPCyAIIAMgAiADQYyKyAAQ/RQAC9YKAhJ/An4jAEHgBGsiAiQAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQCABKQMAQntRDQAgAkHgA2ogARCLByACKQPgAyIUQn9SDQEgASkDACIUQntRDQAgFEJ8UQ0AAkACfwJAIBRCA3wiFEICWARAIBSnQQFrDgIEBAELIAEhBSABKAJwIgNBAEwNAkH0AAwBCyABKQMIQn9RDQIgAUEIaiEFIAEoAngiA0EATA0BQfwACyIEIAFqKAIAIAMQ2RILIAUQpQELIAFCezcDACABKAKgAkUNBiABKAKkAiIFIAEoAqwCIgtGDQYgAUEIaiEGIAEoArQCIQwgAkHgA2oiA0EIaiENIANB8ABqIQ4gAkGIAmohDyABKAKwAiIDQRRqIRAgA0EQaiERA0AgASAFQQRqIhI2AqQCIAUoAgAiBSAQKAIATw0KQnwhFAJAIBEoAgAgBUHIAGxqIgMoAgAiB0F/Rg0AIAdBAksNACADKAIkIQQgDyADKAJAIgUQgg0gAkIFNwOAAkHtAEEGIARBgICAgHhzIARBAE4bIgR2IARBB0lxAkAgAygCAEECRwRAIAJB8AJqIAMgAkGAAmoQrA4MAQsgAkHwAmogAkGAAmpB8AD8CgAACwRAQfAAEJABIgRFDQ0gBCACQfACakHwAPwKAAAgAkIMNwPwAiACIAQ2AvgCCyAOIAUQgg0gAkHgA2oiBCACQfACakHwAPwKAAAgDC0AAEUEQCACQYgBaiAEQfgA/AoAAEJ9IRQgAigC3AQhCiACKALYBCEEDAELIAMoAhwhBCADKAIgIQMgAikD4AMhFCACQYgBaiANQfgA/AoAACAEIANByAFsaiEKCwJAIAEpAwAiFUJ7UQ0AIBVCfFENAAJAAn8CQCAVQgN8IhVCAlgEQCAVp0EBaw4CBAQBCyABIQMgASgCcCIHQQBMDQJB9AAhCCABDAELIAYpAwBCf1ENAiAGIQMgASgCeCIHQQBMDQFB/AAhCCADCyEDIAEgCGooAgAiE0EEaygCACIJQXhxIQggCEEEQQggCUEDcSIJGyAHakkNDiAJQQBHIAggB0EnaktxDQ8gExC8BQsgAxClAQsgASAUNwMAIAYgAkGIAWpB+AD8CgAAIAEgBTYCiAEgASAKNgKEASABIAQ2AoABIAJBCGogARCLByACKQMIIhRCf1INAiALIBIiBUcNAAsgASkDACIUQntRDQYgFEJ8UQ0GIBRCA3wiFEICVg0CIBSnQQFrDgIGBgMLIAJBiAFqIAJB6ANqQfgA/AoAAAwGCyACQYgBaiACQRBqQfgA/AoAAAwFCyABIQYgASgCcCIFQQBMDQJB9AAMAQsgBikDAEJ/UQ0CIAEoAngiBUEATA0BQfwACyABaigCACAFENkSCyAGEKUBCyABQns3AwAgAUGQAWohBgJAAkAgASkDkAFCe1ENACACQeADaiAGEIsHIAIpA+ADIhRCf1INASAGKQMAIhRCe1ENACAUQnxRDQACQAJ/AkAgFEIDfCIUQgJYBEAgFKdBAWsOAgQEAQsgBiEDIAEoAoACIgFBAEwNAkH0AAwBCyABKQOYAUJ/UQ0CIAFBmAFqIQMgASgCiAIiAUEATA0BQfwACyAGaigCACABENkSCyADEKUBCyAAQn83AwAgBkJ7NwMADAILIAJBiAFqIAJB6ANqQfgA/AoAAAsgACAUNwMAIABBCGogAkGIAWpB+AD8CgAACyACQeAEaiQADwtBvKDGABCdFQALQbjwyQBBAToAAAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC5wKAQ9/IwBBIGsiECQAAkACQAJAAkACQAJAAkBBAyABKAIAIgNBG2sgA0EaTRtBAWsOAwEDAgALIAEoAhQiBSgCACEDIAUgA0EBajYCACADQQBIDQRBBCEJAkACQCABKAIgIgdFDQAgASgCHCEMIAdBFGwiCCIDEJABIglFDQEgByEDA0AgBCAIRg0BAkAgBCAMaiILKAIAIg1BAkcEQCALQRBqKAIAIgooAgAhAiAKIAJBAWo2AgAgAkEASA0JIAtBDGooAgAhDiALQQhqKAIAIQ8gC0EEaigCACEGDAELIAtBCGooAgAhDyALQQRqKAIAIgYoAgAhAiAGIAJBAWo2AgAgAkEASA0ICyAEIAlqIgIgDTYCACACQRBqIAo2AgAgAkEMaiAONgIAIAJBCGogDzYCACACQQRqIAY2AgAgBEEUaiEEIANBAWsiAw0ACwsgACAHNgIgIAAgCTYCHCAAIAc2AhggACAFNgIUIABBGzYCACAAIAFBBGoiAykCADcCBCAAIAMpAgg3AgwgACABLwEkOwEkDAQLDAULIAEoAhQiCCgCACEDIAggA0EBajYCACADQQBIDQMgACAINgIUIABBHDYCACAAIAEpAgw3AgwgACABKQIENwIEIAAgAS8BGDsBGAwCC0EEIQlBBCEOAkACQCABKAIoIgdFDQAgASgCJCEEIAdBFGwiCCIDEJABIg5FDQUgByEDA0AgAiAIRg0BIAQoAhAiDCgCACENIAwgDUEBajYCACANQQBIDQUgAiAOaiIKIAQpAgg3AgggCiAEKQIANwIAIApBEGogDDYCACACQRRqIQIgBEEUaiEEIANBAWsiAw0ACwsgAS0AOCECIBAgARCQAwJAIAEoAjQiCEUNACABKAIwIQwgCEEUbCIDIgEQkAEiCUUNAUEAIQQgCCEBA0AgAyAERg0BAkAgBCAMaiIGKAIAIg1BAkcEQCAGQRBqKAIAIgooAgAhBSAKIAVBAWo2AgAgBUEASA0HIAZBDGooAgAhDyAGQQhqKAIAIQsgBkEEaigCACEGDAELIAZBCGooAgAhCyAGQQRqKAIAIgYoAgAhBSAGIAVBAWo2AgAgBUEASA0GCyAEIAlqIgUgDTYCACAFQRBqIAo2AgAgBUEMaiAPNgIAIAVBCGogCzYCACAFQQRqIAY2AgAgBEEUaiEEIAFBAWsiAQ0ACwsgACAQKQMYNwMYIAAgECkDEDcDECAAIBApAwg3AwggACAQKQMANwMAIAAgAjoAOCAAIAg2AjQgACAJNgIwIAAgCDYCLCAAIAc2AiggACAONgIkIAAgBzYCIAwCC0EEEKcUAAsCQCABKAIMIgdFBEBBBCEJDAELIAEoAgghDCAHQRRsIggiAxCQASIJRQ0DIAchAwNAIAQgCEYNAQJAIAQgDGoiBSgCACINQQJHBEAgBUEQaigCACIKKAIAIQIgCiACQQFqNgIAIAJBAEgNBSAFQQxqKAIAIQ4gBUEIaigCACEPIAVBBGooAgAhBgwBCyAFQQhqKAIAIQ8gBUEEaigCACIGKAIAIQIgBiACQQFqNgIAIAJBAEgNBAsgBCAJaiICIA02AgAgAkEQaiAKNgIAIAJBDGogDjYCACACQQhqIA82AgAgAkEEaiAGNgIAIARBFGohBCADQQFrIgMNAAsLIAAgBzYCDCAAIAk2AgggACAHNgIEIABBHTYCACAAIAEvARA7ARALIBBBIGokAA8LAAtBBBCnFAAL6goCBH4KfyMAQdABayIMJAACQAJAAkACQAJAAkACQAJAIAEoAhgiCg4CBAABCyADIAEoAhQiCUHQAGooAgBHDQMgAiAJQcwAaigCACINIAMQjxMNAyABQQA2AhggCSgCSCECIAkoAgAhDiAJKAJUIQMgDEHIAGogCUEEakHEAPwKAAAgA0EZdq1CgYKEiJCgwIABfiEGIAEoAiAiCiADcSEDIAEoAhwhCQNAIAMgCWopAAAiBSAGhSIEQoGChIiQoMCAAX0gBEJ/hYNCgIGChIiQoMCAf4MhBAJAA0AgBFANASAEeiEHIARCAX0gBIMhBCAJIAenQQN2IANqIApxQQJ0IgtrQQRrKAIADQALQYABIQMgC0ECdSIIIAlqIgspAAAiBEIBhiAEg0KAgYKEiJCgwIB/g3qnQQN2IAkgCEEIayAKcWoiCCkAACIEQgGGIASDQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgASABKAIkQQFqNgIkQf8BIQMLIAsgAzoAACAIQQhqIAM6AAAgASABKAIoQQFrNgIoDAMLIAUgBUIBhoNCgIGChIiQoMCAf4NCAFINAiAIQQhqIgggA2ogCnEhAwwACwALIAEpAwAgASkDCCACIAMQ3woiDSABKAIgIgtxIQggDUEZdq1CgYKEiJCgwIABfiEGIAEoAhwhCSABKAIUIQ9BACENAkACQAJAA0ACQCAIIAlqKQAAIgUgBoUiBEKBgoSIkKDAgAF9IARCf4WDQoCBgoSIkKDAgH+DIgRCAFIEQANAIAkgBHqnQQN2IAhqIAtxIg5BAnRrQQRrIhEoAgAiECAKTw0EIA8gEEHYAGxqIhBB0ABqKAIAIANGBEAgAiAQQcwAaigCACADEI8TRQ0DCyAEQgF9IASDIgRCAFINAAsLIAUgBUIBhoNCgIGChIiQoMCAf4NCAFINByAIIA1BCGoiDWogC3EhCAwBCwtBgAEhAyAJIA5qIgIpAAAiBEIBhiAEg0KAgYKEiJCgwIB/g3qnQQN2IAkgDkEIayALcWoiCCkAACIEQgGGIASDQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgASABKAIkQQFqNgIkQf8BIQMLIAIgAzoAACAIQQhqIAM6AAAgASABKAIoQQFrNgIoIBEoAgAiCCAKTw0BIA8gCEHYAGxqIgMoAgAhDiAMQYwBaiADQQRqQcQA/AoAACADKAJMIQ0gAygCSCECIAMgDyAKQQFrIgpB2ABsakHYAPwKAAAgASAKNgIYIAggCk8NAiADKAJUIgNBGXatQoGChIiQoMCAAX4hBkEAIQEDQCADIAtxIgMgCWopAAAiBSAGhSIEQoGChIiQoMCAAX0gBEJ/hYNCgIGChIiQoMCAf4MhBAJAA0AgBFANASAEeiEHIARCAX0gBIMhBCAJIAenQQN2IANqIAtxQQJ0a0EEayIPKAIAIApHDQALIA8gCDYCAAwECyAFIAVCAYaDQoCBgoSIkKDAgH+DUARAIAMgAUEIaiIBaiEDDAELC0Gkj8cAQQ9BtI/HABDAEwALIBAgCkHQr8kAEIUTAAsgCCAKEIYTAAsgDEEEaiAMQYwBakHEAPwKAAAgDkF/Rw0BDAILIA5Bf0YNASAMQQRqIAxByABqQcQA/AoAAAsgAkEBa0F9TQRAIA1BBGsoAgAiA0F4cSEBIAFBBEEIIANBA3EiAxsgAmpJDQIgA0EARyABIAJBJ2pLcQ0DIA0QvAULIAAgDjYCACAAQQRqIAxBBGpBxAD8CgAADAMLIABBfzYCAAwCC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgDEHQAWokAAvvCgIFfgp/IwBBoAJrIg0kAAJAAkACQAJAAkACQAJAAkAgASgCOCIKDgIEAAELIAMgASgCNCIJQeQAaigCAEcNAyACIAlB4ABqIgwoAgAgAxCPEw0DQQAhCiABQQA2AjggDUHAAWogCUHYAPwKAAAgASgCQCILIAkoAlgiA3EhAiADQRl2rUKBgoSIkKDAgAF+IQcgDCkDACEGIAEoAjwhAyAJKAJcIQkDQCACIANqKQAAIgUgB4UiBEKBgoSIkKDAgAF9IARCf4WDQoCBgoSIkKDAgH+DIQQCQANAIARQDQEgBHohCCAEQgF9IASDIQQgAyAIp0EDdiACaiALcUECdCIMa0EEaygCAA0AC0GAASECIAxBAnUiCiADaiIMKQAAIgRCAYYgBINCgIGChIiQoMCAf4N6p0EDdiADIApBCGsgC3FqIgMpAAAiBEIBhiAEg0KAgYKEiJCgwIB/g3mnQQN2akEHTQRAIAEgASgCREEBajYCREH/ASECCyAMIAI6AAAgA0EIaiACOgAAIAEgASgCSEEBazYCSAwDCyAFIAVCAYaDQoCBgoSIkKDAgH+DQgBSDQIgAiAKQQhqIgpqIAtxIQIMAAsACyABKQMgIAEpAyggAiADEN8KIgsgASgCQCIMcSEJIAtBGXatQoGChIiQoMCAAX4hBSABKAI8IQsgASgCNCEQAkACQAJAA0ACQCAJIAtqKQAAIgYgBYUiBEKBgoSIkKDAgAF9IARCf4WDQoCBgoSIkKDAgH+DIgRCAFIEQANAIAsgBHqnQQN2IAlqIAxxIhFBAnRrQQRrIhIoAgAiDyAKTw0EIBAgD0HoAGxqIg9B5ABqKAIAIANGBEAgAiAPQeAAaigCACADEI8TRQ0DCyAEQgF9IASDIgRCAFINAAsLIAYgBkIBhoNCgIGChIiQoMCAf4NCAFINByAOQQhqIg4gCWogDHEhCQwBCwtBgAEhAiALIBFqIgMpAAAiBEIBhiAEg0KAgYKEiJCgwIB/g3qnQQN2IAsgEUEIayAMcWoiCSkAACIEQgGGIASDQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgASABKAJEQQFqNgJEQf8BIQILIAMgAjoAACAJQQhqIAI6AAAgASABKAJIQQFrNgJIIBIoAgAiAiAKTw0BIA1BwAFqIBAgAkHoAGxqIgNB3AD8CgAAIAMpA2AhBiADKAJcIQkgAyAQIApBAWsiDkHoAGxqQegA/AoAACABIA42AjggAiAOTw0CIAMoAlgiA0EZdq1CgYKEiJCgwIABfiEHQQAhCgNAIAMgDHEiASALaikAACIFIAeFIgRCgYKEiJCgwIABfSAEQn+Fg0KAgYKEiJCgwIB/gyEEAkADQCAEUA0BIAR6IQggBEIBfSAEgyEEIAsgCKdBA3YgAWogDHFBAnRrQQRrIgMoAgAgDkcNAAsgAyACNgIADAQLIAUgBUIBhoNCgIGChIiQoMCAf4NQBEAgASAKQQhqIgpqIQMMAQsLQaSPxwBBD0G0j8cAEMATAAsgDyAKQdCvyQAQhRMACyACIAoQhhMACyANQegAaiIBIA1BwAFqIgJB2AD8CgAAIAIgAUHYAPwKAAAgCUF/Rw0BDAILIA1BDGoiASANQcABaiICQdgA/AoAACAJQX9GDQEgAiABQdgA/AoAAAsgCQRAIAanIgJBBGsoAgAiA0F4cSEBIAFBBEEIIANBA3EiAxsgCWpJDQIgA0EARyABIAlBJ2pLcQ0DIAIQvAULIAAgDUHAAWpB2AD8CgAADAMLIABB/gE6AAAMAgtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIA1BoAJqJAALuQsBBH8jAEGgAmsiAiQAIAEoAhRB0ABqKAIAIQMgAkG8AWoiBCABEJ8KIAIgAyAEIAEQrRAQtAwCQAJAQcgAEJABIgMEQAJAAkACQAJAAkBBAyACKAIAIgRBAmsgBEEBTRtBAWsOAwECAwALIAJBvAFqIAJB5AD8CgAADAMLIAJBwAFqIAJBBGoQoAcgAkEDNgK8AQwCC0HkABCQASIERQ0EIAIoAgQgBBC4DyACQQQ2ArwBIAIgBDYCwAEMAQsgAkG8AWogAhDkBQtB5AAQkAEiBEUNAiAEIAJBvAFqQeQA/AoAACACQQM2ArABIAJB2prJADYCrAEgAkF/NgKoASACQQA7AbQBIAJCBDcDoAEgAkIBNwOYASACIAQ2ApQBIAJBATYCkAEgAkF+NgJwIAEQtRBFBEAgAkGQAWoQmBIgAigClAEiBEEAOgBoIARBAjYCZCACQQI2ApgBIAIvAbYBIQQLIAMgAkHwAGpBxQD8CgAAIAMgBDsBRiADQQE6AEUgAkEBNgJsIAIgAzYCaCACQQE2AmQgAS0AGEUEQCAAIAIoAmw2AgggACACKQJkNwIAIAIQwAcMAgsCQAJAAkACQAJAQQMgAigCACIDQQJrIANBAU0bQQFrDgMBAgMACyACQbwBaiACQeQA/AoAAAwDCyACQcABaiACQQRqEKAHIAJBAzYCvAEMAgtB5AAQkAEiA0UNBCACKAIEIAMQuA8gAkEENgK8ASACIAM2AsABDAELIAJBvAFqIAIQ5AULQeQAEJABIgRFDQIgBCACQbwBakHkAPwKAAAgAkHkAGoQqRIgAigCaCIDQYACOwGMASADQQk2AogBIANB6PHHADYChAEgA0F/NgKAASADQgQ3A3ggA0IBNwNwIAMgBDYCbCADQQE2AmggA0F+NgJIIAJBAjYCbAJAAkACQAJAAkBBAyACKAIAIgRBAmsgBEEBTRtBAWsOAwECAwALIAJBvAFqIAJB5AD8CgAADAMLIAJBwAFqIAJBBGoQoAcgAkEDNgK8AQwCC0HkABCQASIERQ0EIAIoAgQgBBC4DyACQQQ2ArwBIAIgBDYCwAEMAQsgAkG8AWogAhDkBQtB5AAQkAEiBEUNAiAEIAJBvAFqQeQA/AoAACACKAJkQQJGBEAgAkHkAGoQqRIgAigCaCEDCyADQYACOwHUASADQQk2AtABIANB8fHHADYCzAEgA0F/NgLIASADQgQ3A8ABIANCATcDuAEgAyAENgK0ASADQQE2ArABIANBfjYCkAEgAigCACEEIAJBAzYCbAJAAkACQAJAAkBBAyAEQQJrIARBAU0bQQFrDgMBAgMACyACQbwBaiACQeQA/AoAAAwDCyACQcABaiACQQRqEKAHIAJBAzYCvAEMAgtB5AAQkAEiBEUNBCACKAIEIAQQuA8gAkEENgK8ASACIAQ2AsABDAELIAJBvAFqIAIQ5AULQeQAEJABIgRFDQIgBCACQbwBakHkAPwKAAAgAigCZEEDRgRAIAJB5ABqEKkSIAIoAmghAwsgA0GAAjsBnAIgA0EINgKYAiADQfrxxwA2ApQCIANBfzYCkAIgA0IENwOIAiADQgE3A4ACIAMgBDYC/AEgA0EBNgL4ASADQX42AtgBIAJBBDYCbCACQbwBaiIFIAJB5AD8CgAAQeQAEJABIgRFDQIgBCAFQeQA/AoAACACKAJkQQRGBEAgAkHkAGoQqRIgAigCaCEDCyADQYACOwHkAiADQQY2AuACIANBgvLHADYC3AIgA0F/NgLYAiADQgQ3A9ACIANCATcDyAIgAyAENgLEAiADQQE2AsACIANBfjYCoAIgACACKQJkNwIAIABBBTYCCAwBC0G48MkAQQE6AAAACyABKAIQIgMoAgAhACADIABBAWs2AgAgAEEBRgRAIAEoAhAQMAsgAkGgAmokAA8LQbjwyQBBAToAAAALpwkBBX8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AAA4KAAECAwQFBgcJCAkLIAAoAgghAiAAKAIMIgMEQCACIQEDQCABEKwEIAFB0ABqIQEgA0EBayIDDQALCyAAKAIEIgFFDQggAkEEaygCACIDQXhxIQAgACABQdAAbCIBQQRBCCADQQNxIgMbckkNCSADQQBHIAAgAUEnaktxDQogAhC8BQ8LIAAoAgghAiAAKAIMIgMEQCACIQEDQCABEKwEIAFB0ABqIQEgA0EBayIDDQALCyAAKAIEIgFFDQcgAkEEaygCACIDQXhxIQAgACABQdAAbCIBQQRBCCADQQNxIgMbckkNCCADQQBHIAAgAUEnaktxDQkgAhC8BQ8LIAAoAgghAiAAKAIMIgMEQCACIQEDQCABEKwEIAFB0ABqIQEgA0EBayIDDQALCyAAKAIEIgFFDQYgAkEEaygCACIDQXhxIQAgACABQdAAbCIBQQRBCCADQQNxIgMbckkNByADQQBHIAAgAUEnaktxDQggAhC8BQ8LAkAgACgCOEECRwRAIAAoAkgiAigCACEBIAIgAUEBazYCACABQQFHDQEgACgCSBAwDAELIAAoAkAhAiAAKAJEIgMEQCACQRBqIQEDQCABKAIAIgUoAgAhBCAFIARBAWs2AgAgBEEBRgRAIAEoAgAQMAsgAUEUaiEBIANBAWsiAw0ACwsgACgCPCIDRQ0AIAJBBGsoAgAiBEF4cSEBIAEgA0EUbCIDQQRBCCAEQQNxIgQbakkNByAEQQBHIAEgA0EnaktxDQggAhC8BQsgAEEIahDeBA8LIAAoAjgiAigCACEBIAIgAUEBazYCACAAQQhqIQIgAUEBRgRAIAAoAjgQMAsCQAJAAkBBGiACKAIAIgEgAUEaTBtBGmsOAwABAgcLIAFBf0cEQCACEIcEDwsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNBiAAKAIcEDAPCyAAQQxqENcNDwsgAEEMahDXDQ8LIAAoAgQiAigCACEBIAIgAUEBazYCACABQQFHDQMgACgCBBAwDwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUYEQCAAKAIEEDALIAAoAgwiABCsBCAAQQRrKAIAIgFBA3EhAiABQXhxQdQAQdgAIAIbSQ0DIAJBAEcgAUH4AE9xDQQgABC8BQ8LIAAoAhQiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCFBAwCwJAAkACQAJAAkACQAJAIAAoAhgiAC0AAA4HAAECBgMEBQYLIABBCGoQrAQMBQsgAEEIahCsBAwECyAAQQhqEKwEDAMLIABBCGoQhwQMAgsgAEEIahCsBAwBCyAAQQhqEKwECyAAQQRrKAIAIgFBA3EhAiABQXhxQdwAQeAAIAIbSQ0CIAJBAEcgAUGAAU9xDQMgABC8BQ8LIAAoAggiABCsBCAAQQRrKAIAIgFBA3EhAiABQXhxQdQAQdgAIAIbSQ0BIAJBAEcgAUH4AE9xDQIgABC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAunCQEFfwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADgoAAQIDBAUGBwkICQsgACgCCCECIAAoAgwiAwRAIAIhAQNAIAEQrQQgAUHQAGohASADQQFrIgMNAAsLIAAoAgQiAUUNCCACQQRrKAIAIgNBeHEhACAAIAFB0ABsIgFBBEEIIANBA3EiAxtySQ0JIANBAEcgACABQSdqS3ENCiACELwFDwsgACgCCCECIAAoAgwiAwRAIAIhAQNAIAEQrQQgAUHQAGohASADQQFrIgMNAAsLIAAoAgQiAUUNByACQQRrKAIAIgNBeHEhACAAIAFB0ABsIgFBBEEIIANBA3EiAxtySQ0IIANBAEcgACABQSdqS3ENCSACELwFDwsgACgCCCECIAAoAgwiAwRAIAIhAQNAIAEQrQQgAUHQAGohASADQQFrIgMNAAsLIAAoAgQiAUUNBiACQQRrKAIAIgNBeHEhACAAIAFB0ABsIgFBBEEIIANBA3EiAxtySQ0HIANBAEcgACABQSdqS3ENCCACELwFDwsCQCAAKAI4QQJHBEAgACgCSCICKAIAIQEgAiABQQFrNgIAIAFBAUcNASAAKAJIEDAMAQsgACgCQCECIAAoAkQiAwRAIAJBEGohAQNAIAEoAgAiBSgCACEEIAUgBEEBazYCACAEQQFGBEAgASgCABAwCyABQRRqIQEgA0EBayIDDQALCyAAKAI8IgNFDQAgAkEEaygCACIEQXhxIQEgASADQRRsIgNBBEEIIARBA3EiBBtqSQ0HIARBAEcgASADQSdqS3ENCCACELwFCyAAQQhqEOEEDwsgACgCOCICKAIAIQEgAiABQQFrNgIAIABBCGohAiABQQFGBEAgACgCOBAwCwJAAkACQEEaIAIoAgAiASABQRpMG0Eaaw4DAAECBwsgAUF/RwRAIAIQiAQPCyAAKAIcIgIoAgAhASACIAFBAWs2AgAgAUEBRw0GIAAoAhwQMA8LIABBDGoQ2A0PCyAAQQxqENgNDwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUcNAyAAKAIEEDAPCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRgRAIAAoAgQQMAsgACgCDCIAEK0EIABBBGsoAgAiAUEDcSECIAFBeHFB1ABB2AAgAhtJDQMgAkEARyABQfgAT3ENBCAAELwFDwsgACgCFCICKAIAIQEgAiABQQFrNgIAIAFBAUYEQCAAKAIUEDALAkACQAJAAkACQAJAAkAgACgCGCIALQAADgcAAQIGAwQFBgsgAEEIahCtBAwFCyAAQQhqEK0EDAQLIABBCGoQrQQMAwsgAEEIahCIBAwCCyAAQQhqEK0EDAELIABBCGoQrQQLIABBBGsoAgAiAUEDcSECIAFBeHFB3ABB4AAgAhtJDQIgAkEARyABQYABT3ENAyAAELwFDwsgACgCCCIAEK0EIABBBGsoAgAiAUEDcSECIAFBeHFB1ABB2AAgAhtJDQEgAkEARyABQfgAT3ENAiAAELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6cJAQV/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAOCgABAgMEBQYHCQgJCyAAKAIIIQIgACgCDCIDBEAgAiEBA0AgARCuBCABQdAAaiEBIANBAWsiAw0ACwsgACgCBCIBRQ0IIAJBBGsoAgAiA0F4cSEAIAAgAUHQAGwiAUEEQQggA0EDcSIDG3JJDQkgA0EARyAAIAFBJ2pLcQ0KIAIQvAUPCyAAKAIIIQIgACgCDCIDBEAgAiEBA0AgARCuBCABQdAAaiEBIANBAWsiAw0ACwsgACgCBCIBRQ0HIAJBBGsoAgAiA0F4cSEAIAAgAUHQAGwiAUEEQQggA0EDcSIDG3JJDQggA0EARyAAIAFBJ2pLcQ0JIAIQvAUPCyAAKAIIIQIgACgCDCIDBEAgAiEBA0AgARCuBCABQdAAaiEBIANBAWsiAw0ACwsgACgCBCIBRQ0GIAJBBGsoAgAiA0F4cSEAIAAgAUHQAGwiAUEEQQggA0EDcSIDG3JJDQcgA0EARyAAIAFBJ2pLcQ0IIAIQvAUPCwJAIAAoAjhBAkcEQCAAKAJIIgIoAgAhASACIAFBAWs2AgAgAUEBRw0BIAAoAkgQMAwBCyAAKAJAIQIgACgCRCIDBEAgAkEQaiEBA0AgASgCACIFKAIAIQQgBSAEQQFrNgIAIARBAUYEQCABKAIAEDALIAFBFGohASADQQFrIgMNAAsLIAAoAjwiA0UNACACQQRrKAIAIgRBeHEhASABIANBFGwiA0EEQQggBEEDcSIEG2pJDQcgBEEARyABIANBJ2pLcQ0IIAIQvAULIABBCGoQ4wQPCyAAKAI4IgIoAgAhASACIAFBAWs2AgAgAEEIaiECIAFBAUYEQCAAKAI4EDALAkACQAJAQRogAigCACIBIAFBGkwbQRprDgMAAQIHCyABQX9HBEAgAhCGBA8LIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQYgACgCHBAwDwsgAEEMahDaDQ8LIABBDGoQ2g0PCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRw0DIAAoAgQQMA8LIAAoAgQiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCBBAwCyAAKAIMIgAQrgQgAEEEaygCACIBQQNxIQIgAUF4cUHUAEHYACACG0kNAyACQQBHIAFB+ABPcQ0EIAAQvAUPCyAAKAIUIgIoAgAhASACIAFBAWs2AgAgAUEBRgRAIAAoAhQQMAsCQAJAAkACQAJAAkACQCAAKAIYIgAtAAAOBwABAgYDBAUGCyAAQQhqEK4EDAULIABBCGoQrgQMBAsgAEEIahCuBAwDCyAAQQhqEIYEDAILIABBCGoQrgQMAQsgAEEIahCuBAsgAEEEaygCACIBQQNxIQIgAUF4cUHcAEHgACACG0kNAiACQQBHIAFBgAFPcQ0DIAAQvAUPCyAAKAIIIgAQrgQgAEEEaygCACIBQQNxIQIgAUF4cUHUAEHYACACG0kNASACQQBHIAFB+ABPcQ0CIAAQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALpwkBBX8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AAA4KAAECAwQFBgcJCAkLIAAoAgghAiAAKAIMIgMEQCACIQEDQCABEK8EIAFB0ABqIQEgA0EBayIDDQALCyAAKAIEIgFFDQggAkEEaygCACIDQXhxIQAgACABQdAAbCIBQQRBCCADQQNxIgMbckkNCSADQQBHIAAgAUEnaktxDQogAhC8BQ8LIAAoAgghAiAAKAIMIgMEQCACIQEDQCABEK8EIAFB0ABqIQEgA0EBayIDDQALCyAAKAIEIgFFDQcgAkEEaygCACIDQXhxIQAgACABQdAAbCIBQQRBCCADQQNxIgMbckkNCCADQQBHIAAgAUEnaktxDQkgAhC8BQ8LIAAoAgghAiAAKAIMIgMEQCACIQEDQCABEK8EIAFB0ABqIQEgA0EBayIDDQALCyAAKAIEIgFFDQYgAkEEaygCACIDQXhxIQAgACABQdAAbCIBQQRBCCADQQNxIgMbckkNByADQQBHIAAgAUEnaktxDQggAhC8BQ8LAkAgACgCOEECRwRAIAAoAkgiAigCACEBIAIgAUEBazYCACABQQFHDQEgACgCSBAwDAELIAAoAkAhAiAAKAJEIgMEQCACQRBqIQEDQCABKAIAIgUoAgAhBCAFIARBAWs2AgAgBEEBRgRAIAEoAgAQMAsgAUEUaiEBIANBAWsiAw0ACwsgACgCPCIDRQ0AIAJBBGsoAgAiBEF4cSEBIAEgA0EUbCIDQQRBCCAEQQNxIgQbakkNByAEQQBHIAEgA0EnaktxDQggAhC8BQsgAEEIahDgBA8LIAAoAjgiAigCACEBIAIgAUEBazYCACAAQQhqIQIgAUEBRgRAIAAoAjgQMAsCQAJAAkBBGiACKAIAIgEgAUEaTBtBGmsOAwABAgcLIAFBf0cEQCACEIgEDwsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNBiAAKAIcEDAPCyAAQQxqENgNDwsgAEEMahDYDQ8LIAAoAgQiAigCACEBIAIgAUEBazYCACABQQFHDQMgACgCBBAwDwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUYEQCAAKAIEEDALIAAoAgwiABCvBCAAQQRrKAIAIgFBA3EhAiABQXhxQdQAQdgAIAIbSQ0DIAJBAEcgAUH4AE9xDQQgABC8BQ8LIAAoAhQiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCFBAwCwJAAkACQAJAAkACQAJAIAAoAhgiAC0AAA4HAAECBgMEBQYLIABBCGoQrwQMBQsgAEEIahCvBAwECyAAQQhqEK8EDAMLIABBCGoQiAQMAgsgAEEIahCvBAwBCyAAQQhqEK8ECyAAQQRrKAIAIgFBA3EhAiABQXhxQdwAQeAAIAIbSQ0CIAJBAEcgAUGAAU9xDQMgABC8BQ8LIAAoAggiABCvBCAAQQRrKAIAIgFBA3EhAiABQXhxQdQAQdgAIAIbSQ0BIAJBAEcgAUH4AE9xDQIgABC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAunCQEFfwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADgoAAQIDBAUGBwkICQsgACgCCCECIAAoAgwiAwRAIAIhAQNAIAEQsAQgAUHQAGohASADQQFrIgMNAAsLIAAoAgQiAUUNCCACQQRrKAIAIgNBeHEhACAAIAFB0ABsIgFBBEEIIANBA3EiAxtySQ0JIANBAEcgACABQSdqS3ENCiACELwFDwsgACgCCCECIAAoAgwiAwRAIAIhAQNAIAEQsAQgAUHQAGohASADQQFrIgMNAAsLIAAoAgQiAUUNByACQQRrKAIAIgNBeHEhACAAIAFB0ABsIgFBBEEIIANBA3EiAxtySQ0IIANBAEcgACABQSdqS3ENCSACELwFDwsgACgCCCECIAAoAgwiAwRAIAIhAQNAIAEQsAQgAUHQAGohASADQQFrIgMNAAsLIAAoAgQiAUUNBiACQQRrKAIAIgNBeHEhACAAIAFB0ABsIgFBBEEIIANBA3EiAxtySQ0HIANBAEcgACABQSdqS3ENCCACELwFDwsCQCAAKAI4QQJHBEAgACgCSCICKAIAIQEgAiABQQFrNgIAIAFBAUcNASAAKAJIEDAMAQsgACgCQCECIAAoAkQiAwRAIAJBEGohAQNAIAEoAgAiBSgCACEEIAUgBEEBazYCACAEQQFGBEAgASgCABAwCyABQRRqIQEgA0EBayIDDQALCyAAKAI8IgNFDQAgAkEEaygCACIEQXhxIQEgASADQRRsIgNBBEEIIARBA3EiBBtqSQ0HIARBAEcgASADQSdqS3ENCCACELwFCyAAQQhqEOIEDwsgACgCOCICKAIAIQEgAiABQQFrNgIAIABBCGohAiABQQFGBEAgACgCOBAwCwJAAkACQEEaIAIoAgAiASABQRpMG0Eaaw4DAAECBwsgAUF/RwRAIAIQhgQPCyAAKAIcIgIoAgAhASACIAFBAWs2AgAgAUEBRw0GIAAoAhwQMA8LIABBDGoQ2g0PCyAAQQxqENoNDwsgACgCBCICKAIAIQEgAiABQQFrNgIAIAFBAUcNAyAAKAIEEDAPCyAAKAIEIgIoAgAhASACIAFBAWs2AgAgAUEBRgRAIAAoAgQQMAsgACgCDCIAELAEIABBBGsoAgAiAUEDcSECIAFBeHFB1ABB2AAgAhtJDQMgAkEARyABQfgAT3ENBCAAELwFDwsgACgCFCICKAIAIQEgAiABQQFrNgIAIAFBAUYEQCAAKAIUEDALAkACQAJAAkACQAJAAkAgACgCGCIALQAADgcAAQIGAwQFBgsgAEEIahCwBAwFCyAAQQhqELAEDAQLIABBCGoQsAQMAwsgAEEIahCGBAwCCyAAQQhqELAEDAELIABBCGoQsAQLIABBBGsoAgAiAUEDcSECIAFBeHFB3ABB4AAgAhtJDQIgAkEARyABQYABT3ENAyAAELwFDwsgACgCCCIAELAEIABBBGsoAgAiAUEDcSECIAFBeHFB1ABB2AAgAhtJDQEgAkEARyABQfgAT3ENAiAAELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC8UKAg5/An4jAEGgAmsiAyQAIANBAToAgAEgA0EBNgJ8IANBuOzGADYCeCADQgg3AnAgA0IANwJoIANCgICAgMAANwJgAkACQAJAQZACEJABIgQEQCAEIAFBkAL8CgAAIANBgICAgHg2AqgBIAMgBDYCrAEgA0HYAWogA0HgAGoiASADQagBahCKAQJAIAMoAtgBIghBfkcEQCADIAMoAuQBNgJAIAMgAykC3AE3AzggAyADKQL0ATcDKCADIAMoAvwBNgIwIAMoAugBIQkgAygC7AEhCiADKALwASELIAMpAoACIREgARCLBiADKAJwIQIgAygCdCIBBEAgAiEEA0AgBEEQahDZBCAEKAIAIgZBAEoEQCAEQQRqKAIAIgxBBGsoAgAiB0F4cSEFIAVBBEEIIAdBA3EiBxsgBmpJDQcgB0EARyAFIAZBJ2pLcQ0IIAwQvAULIARByABqIQQgAUEBayIBDQALCyADKAJsIgQEQCACQQRrKAIAIgZBeHEhASABIARByABsIgRBBEEIIAZBA3EiBhtqSQ0FIAZBAEcgASAEQSdqS3ENBiACELwFCyADIAMpAzg3AxggAyADKAJANgIgIAMgAykDKDcDCCADIAMoAjA2AhBBMBCQASIBRQ0DIAEgCDYCACABIAMpAxg3AgQgASADKAIgNgIMIAEgCzYCGCABIAo2AhQgASAJNgIQIAEgAykDCDcCHCABIAMoAhA2AiQgASARNwIoIABB0NTFADYCCCAAIAE2AgQgAEF+NgIADAELIAMgAykCYDcDGCADIAMoAmg2AiAgAyADQfgAaiIBKAIINgIQIAMgASkCADcDCCADKAJsIQsgAygCcCEGIAMoAnQhASADQgg3AlggA0IANwJQIANCgICAgMAANwJIIAEEQCADQcgAakEAIAFBBEEQELMRIAMoAlQgAygCXCIFayABSQRAIANB1ABqIAUgAUEIQSAQsxEgAygCXCEFCyABQcgAbCEMIAMoAkwgAygCUCIKQQR0aiEJIAMoAlggBUEFdGohBCADQbgBaiEIIANB8ABqIQ8gBiEBA0AgA0HgAGogAUHIAPwKAAAgA0HYAWoiByABQcgA/AoAACADQagBaiAHEMoKIAggDxCrASADKALYASIHQQBKBEAgAygC3AEiEEEEaygCACINQXhxIQ4gDkEEQQggDUEDcSINGyAHakkNBiANQQBHIA4gB0EnaktxDQcgEBC8BQsgAUHIAGohASAJIAMpA7ABNwIIIAkgAykDqAE3AgAgBCAIKQMANwMAIAQgCCkDCDcDCCAEIAgpAxA3AxAgBCAIKQMYNwMYIAlBEGohCSAEQSBqIQQgBUEBaiEFIApBAWohCiAMQcgAayIMDQALIAMgBTYCXCADIAo2AlALIAsEQCAGQQRrKAIAIgRBeHEhASABIAtByABsIgVBBEEIIARBA3EiBBtqSQ0EIARBAEcgASAFQSdqS3ENBSAGELwFCyADIAMpAwg3AvwBIAMgAygCUDYC+AEgAyADKQJIIhE3A/ABIAMgAygCIDYC4AEgAyADKQMYIhI3A9gBIAMgA0HUAGoiASgCCDYC7AEgAyABKQIANwLkASADIAMoAhA2AoQCIAAgAykD+AE3AiAgACARNwIYIAAgEjcCACAAIAMpA4ACNwIoIAAgAykD6AE3AhAgACADKQPgATcCCCAAIAI6ADALIANBoAJqJAAPC0G48MkAQQE6AAAAC0G48MkAQQE6AAAAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAvFCgIOfwJ+IwBBoAJrIgMkACADQQE6AIABIANBATYCfCADQbjsxgA2AnggA0IINwJwIANCADcCaCADQoCAgIDAADcCYAJAAkACQEG4AhCQASIEBEAgBCABQbgC/AoAACADQYGAgIB4NgKoASADIAQ2AqwBIANB2AFqIANB4ABqIgEgA0GoAWoQigECQCADKALYASIIQX5HBEAgAyADKALkATYCQCADIAMpAtwBNwM4IAMgAykC9AE3AyggAyADKAL8ATYCMCADKALoASEJIAMoAuwBIQogAygC8AEhCyADKQKAAiERIAEQiwYgAygCcCECIAMoAnQiAQRAIAIhBANAIARBEGoQ2QQgBCgCACIGQQBKBEAgBEEEaigCACIM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0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyAAQQhqEIgEDwsgACgCHBAwC8oIAQh/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAOEQABAgMEBQYHCAkKCwwNDg8QEQsgACgCCEF/RwRADBYLIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDRAMFgsgACgCCEF/RwRADBULIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQ8MFQsgACgCCEF/RwRADBQLIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQ4MFAsgACgCCEF/RwRADBMLIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQ0MEwsgACgCCEF/RwRADBILIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQwMEgsgACgCCEF/RwRADBELIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQsMEQsgACgCCEF/RwRADBALIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQoMEAsgACgCCEF/RwRADA8LIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQkMDwsgACgCCEF/RwRADA4LIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQgMDgsgACgCCEF/RwRADA0LIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQcMDQsgACgCCEF/RwRADAwLIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQYMDAsgACgCCEF/RwRADAsLIAAoAhwiAigCACEBIAIgAUEBazYCACABQQFHDQUMCwsgAEEEahDaDQ8LIABBBGoQ2g0PCyAAKAIUIgMQ4gQgA0EEaygCACIBQQNxIQIgAUF4cUE0QTggAhtJDQMgAkEARyABQdgAT3ENBCADELwFIAAoAgQiAkECRg0CIAJFBEAgACgCCCICRQ0DIAAoAgwgAhDZEg8LIAAoAgwhAiAAKAIQIgQEQCACIQEDQCABKAIAIgUEQCABQQRqKAIAIgdBBGsoAgAiA0F4cSEGIAZBBEEIIANBA3EiAxsgBWpJDQggA0EARyAGIAVBJ2pLcQ0JIAcQvAULIAFBDGohASAEQQFrIgQNAAsLIAAoAggiAEUNAiACIABBDGwQ2RIPCwJAIAAoAhBBf0cEQCAAQRBqEIYEDAELIAAoAiQiAigCACEBIAIgAUEBazYCACABQQFHDQAgACgCJBAwCyAAQQRqEKkMDwsCQCAAKAIQQX9HBEAgAEEQahCGBAwBCyAAKAIkIgIoAgAhASACIAFBAWs2AgAgAUEBRw0AIAAoAiQQMAsgAEEEahCpDAsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIABBCGoQhgQPCyAAKAIcEDALyggBCH8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0AAA4RAAECAwQFBgcICQoLDA0ODxARCyAAKAIIQX9HBEAMFgsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNEAwWCyAAKAIIQX9HBEAMFQsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNDwwVCyAAKAIIQX9HBEAMFAsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNDgwUCyAAKAIIQX9HBEAMEwsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNDQwTCyAAKAIIQX9HBEAMEgsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNDAwSCyAAKAIIQX9HBEAMEQsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNCwwRCyAAKAIIQX9HBEAMEAsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNCgwQCyAAKAIIQX9HBEAMDwsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNCQwPCyAAKAIIQX9HBEAMDgsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNCAwOCyAAKAIIQX9HBEAMDQsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNBwwNCyAAKAIIQX9HBEAMDAsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNBgwMCyAAKAIIQX9HBEAMCwsgACgCHCICKAIAIQEgAiABQQFrNgIAIAFBAUcNBQwLCyAAQQRqENoNDwsgAEEEahDaDQ8LIAAoAhQiAxDjBCADQQRrKAIAIgFBA3EhAiABQXhxQTRBOCACG0kNAyACQQBHIAFB2ABPcQ0EIAMQvAUgACgCBCICQQJGDQIgAkUEQCAAKAIIIgJFDQMgACgCDCACENkSDwsgACgCDCECIAAoAhAiBARAIAIhAQNAIAEoAgAiBQRAIAFBBGooAgAiB0EEaygCACIDQXhxIQYgBkEEQQggA0EDcSIDGyAFakkNCCADQQBHIAYgBUEnaktxDQkgBxC8BQsgAUEMaiEBIARBAWsiBA0ACwsgACgCCCIARQ0CIAIgAEEMbBDZEg8LAkAgACgCEEF/RwRAIABBEGoQhgQMAQsgACgCJCICKAIAIQEgAiABQQFrNgIAIAFBAUcNACAAKAIkEDALIABBBGoQqQwPCwJAIAAoAhBBf0cEQCAAQRBqEIYEDAELIAAoAiQiAigCACEBIAIgAUEBazYCACABQQFHDQAgACgCJBAwCyAAQQRqEKkMCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgAEEIahCGBA8LIAAoAhwQMAvzCQISfwV+IwBB8ABrIgIkAAJAAn8gASgCICIMRQRAQYipyQAhCUEADAELAkACQAJAIAxBAWoiBEH+////A0sNACAEQQJ0QQdqQXhxIgYgDEEJaiIFaiEEIAQgBkkNACAEQfj///8HSw0AIAQNAUEIIQQMAgtB+OjIAEE5QZTpyAAQvxMACyAEEJABIgRFDQILIAQgBmohCSABKAIcIQYgBQRAIAkgBiAF/AoAAAsgASgCKCINBEAgBkEIaiEHIAYpAwBCf4VCgIGChIiQoMCAf4MhFCANIQQgBiEDA0AgFFAEQANAIAciBUEIaiEHIANBIGshAyAFKQMAQoCBgoSIkKDAgH+DIhRCgIGChIiQoMCAf1ENAAsgFEKAgYKEiJCgwIB/hSEUCyAJIAMgFHqnQQF2QTxxayIFIAZrakEEayAFQQRrKAIANgIAIBRCAX0gFIMhFCAEQQFrIgQNAAsLIAEoAiQLIRECQAJAAkAgASgCGCIGRQRAQQghCkEAIQYMAQsCQEH///8PIA0gEWoiBCAEQf///w9PGyIOIAZLBEAgDkEGdBCQASIKDQELIAYhDiAGQQZ0EJABIgoNAEEIEKcUAAsgAkHUAGohCyABKAIUIRIgBiEHA0AgDyASaiIDQTBqKAIAIRMCQCADQTxqKAIAIghFBEBBASEQDAELIANBOGooAgAhBCAIEJABIhBFDQMgCEUNACAQIAQgCPwKAAALQYCAgIB4IQQCQAJAAkACQAJAAkBBBSADQRBqKAIAIgVBgICAgHhzIAVBAE4bQQFrDgUAAQIDBAULIAIgAykDCDcDOCACIAMpAwA3AzAgAiADQRRqKQIANwMQIAIgA0EcaikCADcDGCACIANBJGopAgA3AyAgAiADQSxqKAIANgIoIAUhBAwECyACIAMpAwg3AzggAiADKQMANwMwIAIgA0EUaikCADcDECACIANBHGopAgA3AxggAiADQSRqKQIANwMgIAIgA0EsaigCADYCKCAFIQQMAwsCQCADQQhqKAIAIgVFBEBBASEDDAELIANBBGooAgAhBCAFEJABIgNFDQcgBUUNACADIAQgBfwKAAALIAIgBTYCOCACIAM2AjQgAiAFNgIwQYOAgIB4IQQMAgsgAkEwaiADQQRqKAIAIANBCGooAgAQ9AhBhICAgHghBAwBCyACQUBrIAMQ5AQgAiACKQNINwM4IAIgAikDQDcDMCACIAspAgA3AxAgAiALKQIINwMYIAIgCykCEDcDICACIAsoAhg2AiggAigCUCEECyACIAIpAzgiFTcDCCACIAIpAzAiFjcDACACIAIpAxAiFzcDQCACIAIpAxgiGDcDSCACIAIpAyAiFDcDUCACIAIoAigiBTYCWCAKIA9qIgMgFTcDCCADIBY3AwAgA0EQaiAENgIAIANBFGogFzcCACADQRxqIBg3AgAgA0EkaiAUNwIAIANBLGogBTYCACADQTxqIAg2AgAgA0E4aiAQNgIAIANBNGogCDYCACADQTBqIBM2AgAgD0FAayEPIAdBAWsiBw0ACwsgACANNgIoIAAgETYCJCAAIAw2AiAgACAJNgIcIAAgBjYCGCAAIAo2AhQgACAONgIQIAAgASkDCDcDCCAAIAEpAwA3AwAgAkHwAGokAA8LQQEQpxQAC0EBEKcUAAtBuPDJAEEBOgAAAAvzCQISfwV+IwBB8ABrIgIkAAJAAn8gASgCICIMRQRAQYipyQAhCUEADAELAkACQAJAIAxBAWoiBEH+////A0sNACAEQQJ0QQdqQXhxIgYgDEEJaiIFaiEEIAQgBkkNACAEQfj///8HSw0AIAQNAUEIIQQMAgtB+OjIAEE5QZTpyAAQvxMACyAEEJABIgRFDQILIAQgBmohCSABKAIcIQYgBQRAIAkgBiAF/AoAAAsgASgCKCINBEAgBkEIaiEHIAYpAwBCf4VCgIGChIiQoMCAf4MhFCANIQQgBiEDA0AgFFAEQANAIAciBUEIaiEHIANBIGshAyAFKQMAQoCBgoSIkKDAgH+DIhRCgIGChIiQoMCAf1ENAAsgFEKAgYKEiJCgwIB/hSEUCyAJIAMgFHqnQQF2QTxxayIFIAZrakEEayAFQQRrKAIANgIAIBRCAX0gFIMhFCAEQQFrIgQNAAsLIAEoAiQLIRECQAJAAkAgASgCGCIGRQRAQQghCkEAIQYMAQsCQEH///8PIA0gEWoiBCAEQf///w9PGyIOIAZLBEAgDkEGdBCQASIKDQELIAYhDiAGQQZ0EJABIgoNAEEIEKcUAAsgAkHUAGohCyABKAIUIRIgBiEHA0AgDyASaiIDQTBqKAIAIRMCQCADQTxqKAIAIghFBEBBASEQDAELIANBOGooAgAhBCAIEJABIhBFDQMgCEUNACAQIAQgCPwKAAALQYCAgIB4IQQCQAJAAkACQAJAAkBBBSADQRBqKAIAIgVBgICAgHhzIAVBAE4bQQFrDgUAAQIDBAULIAIgAykDCDcDOCACIAMpAwA3AzAgAiADQRRqKQIANwMQIAIgA0EcaikCADcDGCACIANBJGopAgA3AyAgAiADQSxqKAIANgIoIAUhBAwECyACIAMpAwg3AzggAiADKQMANwMwIAIgA0EUaikCADcDECACIANBHGopAgA3AxggAiADQSRqKQIANwMgIAIgA0EsaigCADYCKCAFIQQMAwsCQCADQQhqKAIAIgVFBEBBASEDDAELIANBBGooAgAhBCAFEJABIgNFDQcgBUUNACADIAQgBfwKAAALIAIgBTYCOCACIAM2AjQgAiAFNgIwQYOAgIB4IQQMAgsgAkEwaiADQQRqKAIAIANBCGooAgAQ9whBhICAgHghBAwBCyACQUBrIAMQ5QQgAiACKQNINwM4IAIgAikDQDcDMCACIAspAgA3AxAgAiALKQIINwMYIAIgCykCEDcDICACIAsoAhg2AiggAigCUCEECyACIAIpAzgiFTcDCCACIAIpAzAiFjcDACACIAIpAxAiFzcDQCACIAIpAxgiGDcDSCACIAIpAyAiFDcDUCACIAIoAigiBTYCWCAKIA9qIgMgFTcDCCADIBY3AwAgA0EQaiAENgIAIANBFGogFzcCACADQRxqIBg3AgAgA0EkaiAUNwIAIANBLGogBTYCACADQTxqIAg2AgAgA0E4aiAQNgIAIANBNGogCDYCACADQTBqIBM2AgAgD0FAayEPIAdBAWsiBw0ACwsgACANNgIoIAAgETYCJCAAIAw2AiAgACAJNgIcIAAgBjYCGCAAIAo2AhQgACAONgIQIAAgASkDCDcDCCAAIAEpAwA3AwAgAkHwAGokAA8LQQEQpxQAC0EBEKcUAAtBuPDJAEEBOgAAAAvzCQISfwV+IwBB8ABrIgIkAAJAAn8gASgCICIMRQRAQYipyQAhCUEADAELAkACQAJAIAxBAWoiBEH+////A0sNACAEQQJ0QQdqQXhxIgYgDEEJaiIFaiEEIAQgBkkNACAEQfj///8HSw0AIAQNAUEIIQQMAgtB+OjIAEE5QZTpyAAQvxMACyAEEJABIgRFDQILIAQgBmohCSABKAIcIQYgBQRAIAkgBiAF/AoAAAsgASgCKCINBEAgBkEIaiEHIAYpAwBCf4VCgIGChIiQoMCAf4MhFCANIQQgBiEDA0AgFFAEQANAIAciBUEIaiEHIANBIGshAyAFKQMAQoCBgoSIkKDAgH+DIhRCgIGChIiQoMCAf1ENAAsgFEKAgYKEiJCgwIB/hSEUCyAJIAMgFHqnQQF2QTxxayIFIAZrakEEayAFQQRrKAIANgIAIBRCAX0gFIMhFCAEQQFrIgQNAAsLIAEoAiQLIRECQAJAAkAgASgCGCIGRQRAQQghCkEAIQYMAQsCQEH///8PIA0gEWoiBCAEQf///w9PGyIOIAZLBEAgDkEGdBCQASIKDQELIAYhDiAGQQZ0EJABIgoNAEEIEKcUAAsgAkHUAGohCyABKAIUIRIgBiEHA0AgDyASaiIDQTBqKAIAIRMCQCADQTxqKAIAIghFBEBBASEQDAELIANBOGooAgAhBCAIEJABIhBFDQMgCEUNACAQIAQgCPwKAAALQYCAgIB4IQQCQAJAAkACQAJAAkBBBSADQRBqKAIAIgVBgICAgHhzIAVBAE4bQQFrDgUAAQIDBAULIAIgAykDCDcDOCACIAMpAwA3AzAgAiADQRRqKQIANwMQIAIgA0EcaikCADcDGCACIANBJGopAgA3AyAgAiADQSxqKAIANgIoIAUhBAwECyACIAMpAwg3AzggAiADKQMANwMwIAIgA0EUaikCADcDECACIANBHGopAgA3AxggAiADQSRqKQIANwMgIAIgA0EsaigCADYCKCAFIQQMAwsCQCADQQhqKAIAIgVFBEBBASEDDAELIANBBGooAgAhBCAFEJABIgNFDQcgBUUNACADIAQgBfwKAAALIAIgBTYCOCACIAM2AjQgAiAFNgIwQYOAgIB4IQQMAgsgAkEwaiADQQRqKAIAIANBCGooAgAQ+ghBhICAgHghBAwBCyACQUBrIAMQ5gQgAiACKQNINwM4IAIgAikDQDcDMCACIAspAgA3AxAgAiALKQIINwMYIAIgCykCEDcDICACIAsoAhg2AiggAigCUCEECyACIAIpAzgiFTcDCCACIAIpAzAiFjcDACACIAIpAxAiFzcDQCACIAIpAxgiGDcDSCACIAIpAyAiFDcDUCACIAIoAigiBTYCWCAKIA9qIgMgFTcDCCADIBY3AwAgA0EQaiAENgIAIANBFGogFzcCACADQRxqIBg3AgAgA0EkaiAUNwIAIANBLGogBTYCACADQTxqIAg2AgAgA0E4aiAQNgIAIANBNGogCDYCACADQTBqIBM2AgAgD0FAayEPIAdBAWsiBw0ACwsgACANNgIoIAAgETYCJCAAIAw2AiAgACAJNgIcIAAgBjYCGCAAIAo2AhQgACAONgIQIAAgASkDCDcDCCAAIAEpAwA3AwAgAkHwAGokAA8LQQEQpxQAC0EBEKcUAAtBuPDJAEEBOgAAAAumCAILfwJ+IwBB4AVrIgUkACAFQQA2ArQCIAUgAygCCDYCsAIgBSADKQIANwKoAiAFQQxqIAVBqAJqIAIgBBBnAkACQAJAAkACQAJAIAUoAqgCIgJBAEoEQCAFKAKsAiIEQQRrKAIAIgZBeHEhAyADQQRBCCAGQQNxIgYbIAJqSQ0BIAZBAEcgAyACQSdqS3ENAiAEELwFCyAFKAIUIgoEQCAFKAIQIQsgBUHEBWohBCAFQYgEaiEOA0AgBUEYaiABQZAC/AoAACALIAlB2AFsaiICKALQASIMBEAgAigCzAEhAwNAIAVBqAJqIAVBGGpBkAL8CgAAIAUgAzYCuAQgA0E4aiECIANBBGohBiADKAIAIQ8gBUGQBWoiByAGENEHIAQgAhDZCiADQcgAai0AACEGIAVBwARqIAdBxAD8CgAAAkAgA0HUAGooAgAiAkUEQEEBIQcMAQsgA0HQAGooAgAhCCACEJABIgdFDQcgAkUNACAHIAggAvwKAAALIAUoApAEIgggBSgCiARGBEAgDhCrEgsgBSgCjAQgCEHMAGxqIg0gDzYCACANQQRqIAVBwARqQcQA/AoAACANIAY6AEggBSAIQQFqNgKQBCAFQRhqIAVBqAJqQZAC/AoAACACBEAgB0EEaygCACIIQXhxIQYgBkEEQQggCEEDcSIIGyACakkNCCAIQQBHIAYgAkEnaktxDQkgBxC8BQsgA0HYAGohAyAMQQFrIgwNAAsLIAEgBUEYaiICQZAC/AoAACAJQQFqIgkgCkcNAAsgAiABQZAC/AoAACALQcABaiEDIAJByAFqIQcgBUHwA2ohCQNAIAVBqAJqIAVBGGpBkAL8CgAAIAVBkAVqIANB4ABrEIYCQX4hBCADQRBrKAIAIgJBfkcEQEF/IQQgA0EIaygCACEBIANBDGsoAgAhBgJAIAJBf0YEQCAGIQIMAQsgAUUEQEEAIQRBASECDAELIAEQkAEiAkUNCSABBEAgAiAGIAH8CgAACyABIQQLIAKtIAGtQiCGhCEQCyAFQcAEaiAFQZAFaiICQdAA/AoAACADLQAAIQYgBSAHKAIIIgE2ApgFIAUgBykCACIRNwOQBSARpyABRgRAIAIQphILIAUoApQFIAFB6ABsaiICIAVBwARqQdAA/AoAACACIAY6AGAgAiAQNwJUIAIgBDYCUCAJIAFBAWo2AgggCSAFKQOQBTcCACAFQRhqIgEgBUGoAmpBkAL8CgAAIANB2AFqIQMgCkEBayIKDQALCyAAIAFBkAL8CgAAIAVBDGoQnwggBUHgBWokAA8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQQEQpxQAC5MIAgp/AX4CQAJAIAAoAggiCARAIAAoAgQhCQNAAkACQAJAAkACQEECIAkgBUHIAWxqIgEpAwAiC6dBAmsgC0IBWBsOAwECAwALIAEoAlgiAigCACEAIAIgAEEBazYCACABQQhqIQIgAEEBRgRAIAEoAlgQMAsgAi0AAEH/AUYNAyACEKwEDAMLIAEoAhgiAigCACEAIAIgAEEBazYCACAAQQFHDQIgASgCGBAwDAILIAEoAhgiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCGBAwCyABKAIgIQIgASgCJCIDBEAgAiEAA0AgABCBBSAAQcgBaiEAIANBAWsiAw0ACwsgASgCHCIBRQ0BIAJBBGsoAgAiA0F4cSEAIAAgAUHIAWwiAUEEQQggA0EDcSIDG2pJDQQgA0EARyAAIAFBJ2pLcQ0FIAIQvAUMAQsgASgCqAEiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCqAEQMAsgASgClAEiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgClAEQMAsCQCABKAJ8IgBBf0YNACABKAKAASECIAEoAoQBIgMEQCACIQADQCAAEIEFIABByAFqEIcEIABB6AFqIQAgA0EBayIDDQALIAEoAnwhAAsgAEUNACACQQRrKAIAIgRBeHEhAyADIABB6AFsIgBBBEEIIARBA3EiBBtqSQ0EIARBAEcgAyAAQSdqS3ENBSACELwFCyABLQAgQf8BRwRAIAFBIGoQrAQLIAFB8ABqEMIEAkAgASgCiAEiAEF/Rg0AIAFBiAFqEOgEIABFDQAgASgCjAEiA0EEaygCACIEQXhxIQIgAiAAQcgBbCIAQQRBCCAEQQNxIgQbakkNBCAEQQBHIAIgAEEnaktxDQUgAxC8BQsgASgCtAEhAiABKAK4ASIDBEAgAiEAA0AgACgCACIEBEAgAEEEaigCACIKQQRrKAIAIgZBeHEhByAHQQRBCCAGQQNxIgYbIARqSQ0GIAZBAEcgByAEQSdqS3ENByAKELwFCyAAQQxqIQAgA0EBayIDDQALCyABKAKwASIDBEAgAkEEaygCACIEQXhxIQAgACADQQxsIgNBBEEIIARBA3EiBBtqSQ0EIARBAEcgACADQSdqS3ENBSACELwFCyABKALAASECIAEoAsQBIgMEQCACIQADQCAAEIEFIABByAFqIQAgA0EBayIDDQALCyABKAK8ASIBRQ0AIAJBBGsoAgAiA0F4cSEAIAAgAUHIAWwiAUEEQQggA0EDcSIDG2pJDQMgA0EARyAAIAFBJ2pLcQ0EIAIQvAULIAVBAWoiBSAIRw0ACwsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAuTCAIKfwF+AkACQCAAKAIIIggEQCAAKAIEIQkDQAJAAkACQAJAAkBBAiAJIAVByAFsaiIBKQMAIgunQQJrIAtCAVgbDgMBAgMACyABKAJYIgIoAgAhACACIABBAWs2AgAgAUEIaiECIABBAUYEQCABKAJYEDALIAItAABB/wFGDQMgAhCuBAwDCyABKAIYIgIoAgAhACACIABBAWs2AgAgAEEBRw0CIAEoAhgQMAwCCyABKAIYIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAhgQMAsgASgCICECIAEoAiQiAwRAIAIhAANAIAAQggUgAEHIAWohACADQQFrIgMNAAsLIAEoAhwiAUUNASACQQRrKAIAIgNBeHEhACAAIAFByAFsIgFBBEEIIANBA3EiAxtqSQ0EIANBAEcgACABQSdqS3ENBSACELwFDAELIAEoAqgBIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAqgBEDALIAEoApQBIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoApQBEDALAkAgASgCfCIAQX9GDQAgASgCgAEhAiABKAKEASIDBEAgAiEAA0AgABCCBSAAQcgBahCGBCAAQegBaiEAIANBAWsiAw0ACyABKAJ8IQALIABFDQAgAkEEaygCACIEQXhxIQMgAyAAQegBbCIAQQRBCCAEQQNxIgQbakkNBCAEQQBHIAMgAEEnaktxDQUgAhC8BQsgAS0AIEH/AUcEQCABQSBqEK4ECyABQfAAahDEBAJAIAEoAogBIgBBf0YNACABQYgBahDpBCAARQ0AIAEoAowBIgNBBGsoAgAiBEF4cSECIAIgAEHIAWwiAEEEQQggBEEDcSIEG2pJDQQgBEEARyACIABBJ2pLcQ0FIAMQvAULIAEoArQBIQIgASgCuAEiAwRAIAIhAANAIAAoAgAiBARAIABBBGooAgAiCkEEaygCACIGQXhxIQcgB0EEQQggBkEDcSIGGyAEakkNBiAGQQBHIAcgBEEnaktxDQcgChC8BQsgAEEMaiEAIANBAWsiAw0ACwsgASgCsAEiAwRAIAJBBGsoAgAiBEF4cSEAIAAgA0EMbCIDQQRBCCAEQQNxIgQbakkNBCAEQQBHIAAgA0EnaktxDQUgAhC8BQsgASgCwAEhAiABKALEASIDBEAgAiEAA0AgABCCBSAAQcgBaiEAIANBAWsiAw0ACwsgASgCvAEiAUUNACACQQRrKAIAIgNBeHEhACAAIAFByAFsIgFBBEEIIANBA3EiAxtqSQ0DIANBAEcgACABQSdqS3ENBCACELwFCyAFQQFqIgUgCEcNAAsLDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALkwgCCn8BfgJAAkAgACgCCCIIBEAgACgCBCEJA0ACQAJAAkACQAJAQQIgCSAFQcgBbGoiASkDACILp0ECayALQgFYGw4DAQIDAAsgASgCWCICKAIAIQAgAiAAQQFrNgIAIAFBCGohAiAAQQFGBEAgASgCWBAwCyACLQAAQf8BRg0DIAIQsAQMAwsgASgCGCICKAIAIQAgAiAAQQFrNgIAIABBAUcNAiABKAIYEDAMAgsgASgCGCICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIYEDALIAEoAiAhAiABKAIkIgMEQCACIQADQCAAEIMFIABByAFqIQAgA0EBayIDDQALCyABKAIcIgFFDQEgAkEEaygCACIDQXhxIQAgACABQcgBbCIBQQRBCCADQQNxIgMbakkNBCADQQBHIAAgAUEnaktxDQUgAhC8BQwBCyABKAKoASICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAKoARAwCyABKAKUASICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAKUARAwCwJAIAEoAnwiAEF/Rg0AIAEoAoABIQIgASgChAEiAwRAIAIhAANAIAAQgwUgAEHIAWoQhgQgAEHoAWohACADQQFrIgMNAAsgASgCfCEACyAARQ0AIAJBBGsoAgAiBEF4cSEDIAMgAEHoAWwiAEEEQQggBEEDcSIEG2pJDQQgBEEARyADIABBJ2pLcQ0FIAIQvAULIAEtACBB/wFHBEAgAUEgahCwBAsgAUHwAGoQxAQCQCABKAKIASIAQX9GDQAgAUGIAWoQ6gQgAEUNACABKAKMASIDQQRrKAIAIgRBeHEhAiACIABByAFsIgBBBEEIIARBA3EiBBtqSQ0EIARBAEcgAiAAQSdqS3ENBSADELwFCyABKAK0ASECIAEoArgBIgMEQCACIQADQCAAKAIAIgQEQCAAQQRqKAIAIgpBBGsoAgAiBkF4cSEHIAdBBEEIIAZBA3EiBhsgBGpJDQYgBkEARyAHIARBJ2pLcQ0HIAoQvAULIABBDGohACADQQFrIgMNAAsLIAEoArABIgMEQCACQQRrKAIAIgRBeHEhACAAIANBDGwiA0EEQQggBEEDcSIEG2pJDQQgBEEARyAAIANBJ2pLcQ0FIAIQvAULIAEoAsABIQIgASgCxAEiAwRAIAIhAANAIAAQgwUgAEHIAWohACADQQFrIgMNAAsLIAEoArwBIgFFDQAgAkEEaygCACIDQXhxIQAgACABQcgBbCIBQQRBCCADQQNxIgMbakkNAyADQQBHIAAgAUEnaktxDQQgAhC8BQsgBUEBaiIFIAhHDQALCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC+YJAg1/A34jAEGQAWsiAiQAAkACQAJAAkACQAJAIAEoAgAiBC0AOCIDQQJHBEACQCADQQFxDQAgBCgCKCIDIAQoAiwiB0YNACACQSBqIQoDQCAEIANB5ABqIgU2AiggAygCVCAEKAIwRw0BIAMoAlggBCgCNEcNAQJ/AkAgBCgCJCIIIAQoAiBqIgYgBCgCFCIDKAIIIglJBEAgAygCBCAGQeQAbGoiCS0AYEUNASAFDAILIAYgCUHk9sgAEIUTAAsgBSADIAYQ7BANABogBCgCECgCACIDKAIAIQUgAyAFQQFqNgIAIAVBAEgNBSACIAM2AiwgAiAGNgIgIAJBADYCHCACQQFBAiAJLQBIIgUbIgc2AhggBCACQRhqEMwMDQQgAyADKAIAIgVBAWs2AgAgBUEBRgRAIAMQMAsgBCgCJCEIIAQoAiwhByAEKAIoCyEDIAQgCEEBajYCJCADIAdHDQALCyAEQQI6ADgLIAQtAGQiA0ECRg0EIANBAXENBCAEKAJUIgMgBCgCWCIIRg0EIAJBIGohCgNAIAQgA0HwAGoiBTYCVAJAIAMoAlggBCgCXEYEQCADKAJcIAQoAmBGDQELIARBAToAZAwGCwJAAkAgBCgCQCIGKAK0AkUNACAGKAKsAiIJIAQoAlAiByAEKAJMaiIMQd3L3Z55bEEPdyILcSEDIAtBGXatQoGChIiQoMCAAX4hESAGKAKoAiELQQAhDQNAIAMgC2opAAAiECARhSIPQoGChIiQoMCAAX0gD0J/hYNCgIGChIiQoMCAf4MiD0IAUgRAA0AgDCALIA96p0EDdiADaiAJcUEDdGsiDkEIaygCAEYNBCAPQgF9IA+DIg9CAFINAAsLIBAgEEIBhoNCgIGChIiQoMCAf4NCAFINASANQQhqIg0gA2ogCXEhAwwACwALQdS5xABBFkGUucQAEMATAAsCQCAGIA5BBGsoAgAQ2gYEfyAFBSAEKAI8KAIAIgMoAgAhBSADIAVBAWo2AgAgBUEASA0EIAIgDDYCICACIAM2AhwgAkEANgIYIAQgAkEYahDMDA0BIAMgAygCACIFQQFrNgIAIAVBAUYEQCADEDALIAQoAlAhByAEKAJYIQggBCgCVAshAyAEIAdBAWo2AlAgAyAIRw0BDAYLCyACIAooAggiBTYCECACIAopAgAiDzcDCCAEIAdBAWo2AlAgAiAFNgJ0IAIgDzcCbCACQRhqIAEoAgQtAAAgASgCCCADIA+nEIAEDAMLIAIgCigCCCIGNgIQIAIgCikCACIPNwMIIAQgCEEBajYCJCACQQA2AmggAiAHNgJkIAIgDzcCbCACIAY2AnQgAiADNgJ4IAEoAgghASAFRQ0BIAJB6ABqEK0QRQRAIAJBADYCfCACIAIpAwg3AoABIAIgAigCEDYCiAEgAiADNgKMASACQRhqIAFB0ABqKAIAIAJB/ABqELEFDAMLIAJBADYCfCACIAIpAwg3AoABIAIgAigCEDYCiAEgAiADNgKMASACQRhqIAFB0ABqKAIAIAJB/ABqEL0HDAILAAsgAkEANgJ8IAIgAikDCDcCgAEgAiACKAIQNgKIASACIAM2AowBIAJBGGogASACQfwAahD8AwsgACACQRhqQcgA/AoAAAwBCyAAQX02AgALIAJBkAFqJAAL8wkCFX8GfiMAQaADayIDJAACQAJAAkACQAJAAkACQAJAAkACQEECIAEpAwAiF6dBAmsgF0IBWBtBAWsOAwABAgMLIAEoAhgiBSgCACECIAUgAkEBajYCACACQQBIDQQgAEEcaiABKAIgIAEoAiQQlQMgACAFNgIYIABCAzcDACAAIAEpAxA3AxAgACABKQMINwMIDAMLIAEoAqwBIRIgASgCqAEiDigCACECIA4gAkEBajYCACACQQBIDQMgASgCnAEhEyABKAKYASEUIAEoApQBIg8oAgAhAiAPIAJBAWo2AgAgAkEASA0DQX8hBiABKAJ8QX9HBEAgASgChAEiAkHM+7QETw0FQQAhBgJAIAJB6AFsIgdFBEBBCCEIDAELIAEoAoABIQogBxCQASIIRQ0HIAJFDQAgA0GAA2ohBiACIQkDQCAEIAdHBEAgA0G4AWoiBSAKEOwEIAYgCkHIAWoQkAMgBCAIaiAFQegB/AoAACAEQegBaiEEIApB6AFqIQogCUEBayIJDQELCyACIQYLIAitIAKtQiCGhCEXC0H/ASEQIAEpAwghGiABKQMAIRsgASkDGCEcIAEpAxAhGCABLQAgQf8BRwRAIANBuAFqIgIgAUEgahCHAyADLQC4ASEQIANB2QBqIAJBAXJBzwD8CgAACyADQagBaiABKAJ0IAEoAngQvgNBfyERIAEoAogBQX9HBEAgA0G4AWogASgCjAEgASgCkAEQlQMgAykCvAEhGSADKAK4ASERCyABLQCiASEVIAEtAKEBIRYgAS0AoAEhCgJAIAEoArgBIghFBEBBBCEMDAELIAEoArQBIQkgCEEMbCICEJABIgxFDQdBACEEIAghBQNAIAIgBEYNAQJAIAlBCGooAgAiC0UEQEEBIQ0MAQsgCUEEaigCACEHIAsQkAEiDUUNCiALRQ0AIA0gByAL/AoAAAsgCUEMaiEJIAQgDGoiByALNgIAIAdBCGogCzYCACAHQQRqIA02AgAgBEEMaiEEIAVBAWsiBQ0ACwsgAEG8AWogASgCwAEgASgCxAEQlQMgACAQOgAgIAAgHDcDGCAAIBg3AxAgACAaNwMIIAAgGzcDACAAQSFqIANB2QBqQc8A/AoAACAAIAg2ArgBIAAgDDYCtAEgACAINgKwASAAIBI2AqwBIAAgDjYCqAEgACAVOgCiASAAIBY6AKEBIAAgCjoAoAEgACATNgKcASAAIBQ2ApgBIAAgDzYClAEgACAZNwKMASAAIBE2AogBIAAgFzcDgAEgACAGNgJ8IAAgAygCsAE2AnggACADKQOoATcDcAwCCyABKAJcIQUgASgCWCIGKAIAIQIgBiACQQFqNgIAIAJBAEgNAkH/ASEEIAFBCGoiAi0AAEH/AUcEQCADQbgBaiIBIAIQhwMgAy0AuAEhBCADQQpqIAFBAXJBzwD8CgAACyAAIAQ6AAggAEEJaiADQQpqQc8A/AoAACAAIAU2AlwgACAGNgJYIABCBTcDAAwBCyABKQIIIRggASkCECEZIAEoAhgiAigCACEBIAIgAUEBajYCACADIBk3A8ABIAMgGDcDuAEgAUEASA0BIAAgAykDwAE3AhAgACADKQO4ATcCCCAAQgI3AwAgACACNgIYCyADQaADaiQADwsACxCeFQALQQgQpxQAC0EEEKcUAAtBARCnFAAL1Q0CB38GfiMAQYAEayICJAACQAJAAkACQAJAAkACQAJAAkAgASgCAA4FAQAAAAIAC0Ggq8kAQShBzKbGABCvFAALIAJBgAJqIAFBCGoQsw8gAi0AgAIhASACKAKwAiIDQX9GDQEgACACKQCoAjcAKCAAIAIpAKECNwAhIAAgAikAmQI3ABkgACACKQCRAjcAESAAIAIpAIkCNwAJIAAgAikAgQI3AAEgACACKQK0AjcCNCAAIAIoArwCNgI8IAAgAzYCMAwCCyACIAEpA0A3A0AgAiABKQM4NwM4IAIgASkDMDcDMCACIAEpAyg3AyggAiABKQMgNwMgIAIgASkDGDcDGCACIAEpAxA3AxAgAiABKQMINwMIIAJBgAJqIgEgAkEYaiIDQcfxxwBBBBCpBCACKAKAAkF/Rg0CIAJBuAFqIgQgAUHIAPwKAAAgAkH4AGogBBDaASACKAKoASIBQX9HBEAgACACKQKsATcCNCAAIAIoArQBNgI8IAIgAikDoAEiCTcDcCACIAIpA5gBIgo3A2ggAiACKQOQASILNwNgIAIgAikDiAEiDDcDWCACIAIpA4ABIg03A1AgAiACKQN4Ig43A0ggACAJNwMoIAAgCjcDICAAIAs3AxggACAMNwMQIAAgDTcDCCAAIA43AwAgACABNgIwDAULIAIgAikDeDcDyAIgAiACKQOAATcD0AIgAiACKQOIATcD2AIgAiACKQOQATcD4AIgAkGAAmogAkHIAmoQsw8gAi0AgAIhBiACKAKwAiIBQX9HBEAgACACKQCoAjcAKCAAIAIpAKECNwAhIAAgAikAmQI3ABkgACACKQCRAjcAESAAIAIpAIkCNwAJIAAgAikAgQI3AAEgACACKQK0AjcCNCAAIAIoArwCNgI8IAAgATYCMCAAIAY6AAAMBQsgAkG4A2oiASADQcvxxwBBBRCpBAJAIAIoArgDQX9HBEAgAkGAAmogARDaASACIAIpAoQCNwN4IAIgAikCjAI3A4ABIAIgAikClAI3A4gBIAIgAigCnAI2ApABIAIgAikDoAI3A6gDIAIgAikDqAI3A7ADIAIgAikCtAI3A5gDIAIgAigCvAI2AqADIAIoAoACIQEgAigCsAIhAyACIAIpA3g3A0ggAiACKQOAATcDUCACIAIpA4gBNwNYIAIgAigCkAE2AmAgA0F/Rg0BIAAgAikDsAM3AyggACACKQOoAzcDICAAIAIpA5gDNwI0IAAgAigCoAM2AjwgAiACKQNINwP4AiACIAIpA1A3A4ADIAIgAikDWDcDiAMgAiACKAJgNgKQAyAAIAM2AjAgACABNgIAIAAgAigCkAM2AhwgACACKQOIAzcCFCAAIAIpA4ADNwIMIAAgAikD+AI3AgQMBgtBAiEBDAQLIAIgAikDSCIJNwP4AiACIAIpA1AiCjcDgAMgAiACKQNYIgs3A4gDIAIgAigCYCIDNgKQAyACIAM2ApQBIAIgCzcCjAEgAiAKNwKEASACIAk3AnwgAiABNgJ4IAJBgAJqIQcCQAJAAkACQAJ/AkACQAJAAkACQEEOIAJB+ABqIgEoAgAiA0ENayADQQxNGw4DAAEAAQsgASgCBCIEQX9GDQEgASgCCCEDIAEoAgxBBGsOAgMCBQsgARCGBAtB1KPGABCdFQALIAMoAABB5tLJmwdzIANBBGotAABB9ABzcg0CQQAMAQsgAygAAEHsws2jB0cNAUEBCyEBIAQEQCADQQRrKAIAIgVBeHEhCCAIQQRBCCAFQQNxIgUbIARqSQ0CIAVBAEcgCCAEQSdqS3ENAyADELwFCyAHQX82AjAgByABOgAADAMLQaCryQBBKEHko8YAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAIgAikAgQI3A7gBIAIgAikAiQI3A8ABIAIgAikAkQI3A8gBIAIgAikAmQI3A9ABIAIgAikAoQI3A9gBIAIgAikAqAI3AN8BIAIgAikCtAI3A+gCIAIgAigCvAI2AvACIAItAIACIQEgAigCsAIiA0F/RwRAIAAgAikA3wE3ACggACACKQPYATcAISAAIAIpA9ABNwAZIAAgAikDyAE3ABEgACACKQPAATcACSAAIAIpA7gBNwABIAAgAikD6AI3AjQgACACKALwAjYCPCAAIAM2AjAgACABOgAADAULIAFBAXEhAQwDCyAAQX82AjAgAEECOgABCyAAIAE6AAAMAwtBvKbGABCdFQALIABBfzYCMCAAIAE6AAEgACAGOgAAIAJBCGoQ4wkMAQsgAkEIahDjCQsgAkGABGokAAsDAAAL4gkCDn8DfiMAQZABayICJAACQAJAAkACQAJAAkAgASgCACIELQAwIgNBAkcEQAJAIANBAXENACAEKAIgIgMgBCgCJCIHRg0AIAJBIGohCgNAIAQgA0HkAGoiBTYCICADKAJUIAQoAihHDQEgAygCWCAEKAIsRw0BAn8CQCAEKAIcIgggBCgCGGoiBiAEKAIMIgMoAggiCUkEQCADKAIEIAZB5ABsaiIJLQBgRQ0BIAUMAgsgBiAJQeT2yAAQhRMACyAFIAMgBhDsEA0AGiAEKAIIKAIAIgMoAgAhBSADIAVBAWo2AgAgBUEASA0FIAIgAzYCLCACIAY2AiAgAkEANgIcIAJBAUECIAktAEgiBRsiBzYCGCAEKAIEIAJBGGoQygYNBCADIAMoAgAiBUEBazYCACAFQQFGBEAgAxAwCyAEKAIcIQggBCgCJCEHIAQoAiALIQMgBCAIQQFqNgIcIAMgB0cNAAsLIARBAjoAMAsgBC0AXCIDQQJGDQQgA0EBcQ0EIAQoAkwiAyAEKAJQIghGDQQgBCgCBCEOIAJBIGohCgNAIAQgA0HwAGoiBTYCTAJAIAMoAlggBCgCVEYEQCADKAJcIAQoAlhGDQELIARBAToAXAwGCwJAAkAgBCgCOCIGKAK0AkUNACAGKAKsAiIJIAQoAkgiByAEKAJEaiIMQd3L3Z55bEEPdyILcSEDIAtBGXatQoGChIiQoMCAAX4hEiAGKAKoAiELQQAhDQNAIAMgC2opAAAiESAShSIQQoGChIiQoMCAAX0gEEJ/hYNCgIGChIiQoMCAf4MiEEIAUgRAA0AgDCALIBB6p0EDdiADaiAJcUEDdGsiD0EIaygCAEYNBCAQQgF9IBCDIhBCAFINAAsLIBEgEUIBhoNCgIGChIiQoMCAf4NCAFINASANQQhqIg0gA2ogCXEhAwwACwALQdS5xABBFkGUucQAEMATAAsCQCAGIA9BBGsoAgAQ2gYEfyAFBSAEKAI0KAIAIgMoAgAhBSADIAVBAWo2AgAgBUEASA0EIAIgDDYCICACIAM2AhwgAkEANgIYIA4gAkEYahDKBg0BIAMgAygCACIFQQFrNgIAIAVBAUYEQCADEDALIAQoAkghByAEKAJQIQggBCgCTAshAyAEIAdBAWo2AkggAyAIRw0BDAYLCyACIAooAggiBTYCECACIAopAgAiEDcDCCAEIAdBAWo2AkggAiAFNgJ0IAIgEDcCbCACQRhqIAEoAgQtAAAgASgCCCADIBCnEK4KDAMLIAIgCigCCCIGNgIQIAIgCikCACIQNwMIIAQgCEEBajYCHCACQQA2AmggAiAHNgJkIAIgEDcCbCACIAY2AnQgAiADNgJ4IAEoAgghASAFRQ0BIAJB6ABqEK0QRQRAIAJBADYCfCACIAIpAwg3AoABIAIgAigCEDYCiAEgAiADNgKMASACQRhqIAEgAkH8AGoQlAMMAwsgAkEANgJ8IAIgAikDCDcCgAEgAiACKAIQNgKIASACIAM2AowBIAJBGGogASACQfwAahCKBwwCCwALIAJBADYCfCACIAIpAwg3AoABIAIgAigCEDYCiAEgAiADNgKMASACQRhqIAEgAkH8AGoQ/wULIAAgAkEYakHIAPwKAAAMAQsgAEF9NgIACyACQZABaiQAC6oJAQ1/IwBBIGsiBCQAQQEhAgJAIAEoAgBBAUYEQCABKAIEIgMgASgCCE8NASABIANBAWo2AgQLQQAhAyABKAKMASIIIAEoAogBIgVGBEAgASgCICEHIAEoAiwhAwsgASgCFCEGAkAgAS0AkAFBAkcNACABLQCRAUUNACABKAIMIAZGBEAgAUEMahCaEgsgASgCECAGQRRsaiICIAU2AgggAkEANgIEIAJBADoAACABIAZBAWo2AhQgASgCjAEhCAsgBSAIRgRAIAEoAiwgASgCIGohCQsgASgCeCELIAEoAlwhDAJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCIKIAEoAggiDU8NBCABIApBAWoiDjYCBCABLQCRASICDQEgDSAOTQ0EIAEgCkECajYCBAwFCyABLQCRASICRQ0EIAFBADoAkQEMAQsgAUEAOgCRASANIA5NDQEgASAKQQJqNgIECyAEQRhqIAEQwgggBCgCHCEBIAQoAhhBAXFFBEADQCAEQRBqIAEQwgggBCgCFCEBIAQoAhBBAXFFDQALCyABIAI6AJEBDAMLIAEgAjoAkQELQQEhAiABLQCQAUEBRg0CAkAgAS0AkQFFDQACQCAFIAhGBEAgCSABKAIgIgIgASgCLCIFaiIISSAIIAlrQQFGcQ0CIAIgB08EQCABIAc2AiAgByECCyADIAVLDQEgASADNgIsDAELIAUgCE0NASABIAU2AowBQQAhAiABQQA2AiwgAUEANgIgCyABKAIYIAJGBEAgAUEYahCjEgsgASACQQFqNgIgIAEoAhwgAmpBIDoAAAtBASECAkAgAS0AfEEBRw0AIAEtAJEBRQ0AIAFB1ABqQSAgDEEAIAEoAnggC00bEJMFCyABLQCQAUECRw0CIAEtAJEBRQ0CIAYgASgCFEsNAiABIAY2AhQMAgsgBEEIaiABEMIIIAQoAgwhASAEKAIIQQFxDQADQCAEIAEQwgggBCgCBCEBIAQoAgBBAXFFDQALCwJAIAEtAJABIgJBAUYEfyABLQCRAUUNAQJAIAUgASgCjAEiAkYEQCAJIAEoAiwiAiABKAIgIgVqIghJIAggCWtBAUZxDQMgBSAHTwRAIAEgBzYCIAsgAiADSQ0BIAEgAzYCLCADIQIMAQsgAiAFTw0CIAEgBTYCjAFBACECIAFBADYCLCABQQA2AiALIAEoAiQgAkYEQCABQSRqEKMSCyABKAIoIAJqQSA6AAAgASACQQFqNgIsIAEtAJABBSACC0H/AXFBAkcNACABLQCRAUUNAAJAIAYgASgCFCICSQRAIAEoAhAgBkEUbGoiAy0AAA0BIAMgAjYCBCABKAKIASEHIAEoAhQiAyABKAIMRgRAIAFBDGoQmhILIAEoAhAgA0EUbGoiAiAHNgIQIAJBADYCCCACIAY2AgQgAkGBwAA7AQAgASADQQFqNgIUDAILIAYgAkGcisgAEIUTAAtBoKvJAEEoQayKyAAQrxQAC0EAIQIgAS0AfEUNACABLQCRAUUNACABQdQAakEgIAxBACABKAJ4IAtNGxCTBQsgACABNgIEIAAgAjYCACAEQSBqJAALwQkCCH8DfiMAQTBrIgYkAAJAAkAgASgCvAJFDQAgASgCtAIiAyACQd3L3Z55bEEPdyIEcSEFIARBGXatQoGChIiQoMCAAX4hDSABKAKwAiEEA0AgBCAFaikAACIMIA2FIgtCgYKEiJCgwIABfSALQn+Fg0KAgYKEiJCgwIB/gyILQgBSBEADQCACIAQgC3qnQQN2IAVqIANxQQN0ayIIQQhrKAIARg0EIAtCAX0gC4MiC0IAUg0ACwsgDCAMQgGGg0KAgYKEiJCgwIB/g0IAUg0BIAdBCGoiByAFaiADcSEFDAALAAtB1LnEAEEWQZS5xAAQwBMACwJAAkACQAJAAkACQCAIQQRrKAIAIgMgASgCrAIiBEkEQAJAAkACQAJAAkACQAJAAkAgASgCqAIgA0EobGoiAygCCCIEQQJPBEAgBEEDRgRAIAMoAgxBAUYNAgsgAygCECIDIAJGDQMgASgCHCICIANNDQIgASgCGCADQfAAbGoiAigCLEF/Rg0FIAIoAjQiBEHnzJkzSQ0EDA8LIAIgASgCHCIDSQRAIAEoAhggAkHwAGxqIgIoAlwhAyACKAJYIQIgASABKAIAIgRBAWo2AgAgBEEASA0OIAYgAzYCLCAGIAI2AiggBiABNgIkIAZBGGogBkEkahDSBCAGQQxqIAYoAhwiAyAGKAIgIgUQhwggBigCDEF/Rg0IIAAgBigCFDYCCCAAIAYpAgw3AgAgBQRAIAMhAgNAIAIQ9AQgAkHIAWohAiAFQQFrIgUNAAsLIAYoAhgiAgRAIANBBGsoAgAiBEF4cSEAIAAgAkHIAWwiAkEEQQggBEEDcSIEG2pJDQ0gBEEARyAAIAJBJ2pLcQ0OIAMQvAULIAEgASgCACIAQQFrNgIAIABBAUcNByABEDAMBwsgAiADQeT+yAAQhRMMDQtB9PDGABCdFQALIAMgAkHk/sgAEIUTAAsgAiABKAIcIgNJBEAgASgCGCACQfAAbGoiAigCIEF/Rw0DQZTxxgAQnRUACyACIANB5PHGABCFEwALIAIoAjAhBQJAIARBFGwiAkUEQEEEIQNBACEHDAELIAQhByACEJABIgNFDQYLIAQEQCADIQIgBCEIA0AgBSgCACEJIAEgASgCACIKQQFqNgIAIApBAEgNCyACQQA2AgAgAkEQaiABNgIAIAJBBGogCTYCACAFQQRqIQUgAkEUaiECIAhBAWsiCA0ACwsgACAENgIIIAAgAzYCBCAAIAc2AgAMAgtBhPHGABCdFQALIAIoAigiBEHnzJkzTw0IIAIoAiQhBQJAIARBFGwiAkUEQEEEIQNBACEHDAELIAQhByACEJABIgNFDQULIAQEQCADIQIgBCEIA0AgBSgCACEJIAEgASgCACIKQQFqNgIAIApBAEgNCSACQQA2AgAgAkEQaiABNgIAIAJBBGogCTYCACAFQQRqIQUgAkEUaiECIAhBAWsiCA0ACwsgACAENgIIIAAgAzYCBCAAIAc2AgALIAZBMGokAA8LQaTxxgAQnRUACyADIARB9P7IABCFEwALQQQQpxQAC0EEEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALAAsQnhUAC9gJAg1/A34jAEGQAWsiAiQAAkACQAJAAkACQAJAIAEoAgAiBC0ATCIDQQJHBEACQCADQQFxDQAgBCgCPCIDIAQoAkAiB0YNACACQSBqIQoDQCAEIANB5ABqIgU2AjwgAygCVCAEKAJERw0BIAMoAlggBCgCSEcNAQJ/AkAgBCgCOCIIIAQoAjRqIgYgBCgCKCIDKAIIIglJBEAgAygCBCAGQeQAbGoiCS0AYEUNASAFDAILIAYgCUHk9sgAEIUTAAsgBSADIAYQ7BANABogBCgCJCgCACIDKAIAIQUgAyAFQQFqNgIAIAVBAEgNBSACIAM2AiwgAiAGNgIgIAJBADYCHCACQQFBAiAJLQBIIgUbIgc2AhggBCACQRhqEO0IDQQgAyADKAIAIgVBAWs2AgAgBUEBRgRAIAMQMAsgBCgCOCEIIAQoAkAhByAEKAI8CyEDIAQgCEEBajYCOCADIAdHDQALCyAEQQI6AEwLIAQtAHgiA0ECRg0EIANBAXENBCAEKAJoIgMgBCgCbCIIRg0EIAJBIGohCgNAIAQgA0HwAGoiBTYCaAJAIAMoAlggBCgCcEYEQCADKAJcIAQoAnRGDQELIARBAToAeAwGCwJAAkAgBCgCVCIGKAK0AkUNACAGKAKsAiIJIAQoAmQiByAEKAJgaiIMQd3L3Z55bEEPdyILcSEDIAtBGXatQoGChIiQoMCAAX4hESAGKAKoAiELQQAhDQNAIAMgC2opAAAiECARhSIPQoGChIiQoMCAAX0gD0J/hYNCgIGChIiQoMCAf4MiD0IAUgRAA0AgDCALIA96p0EDdiADaiAJcUEDdGsiDkEIaygCAEYNBCAPQgF9IA+DIg9CAFINAAsLIBAgEEIBhoNCgIGChIiQoMCAf4NCAFINASANQQhqIg0gA2ogCXEhAwwACwALQdS5xABBFkGUucQAEMATAAsCQCAGIA5BBGsoAgAQ2gYEfyAFBSAEKAJQKAIAIgMoAgAhBSADIAVBAWo2AgAgBUEASA0EIAIgDDYCICACIAM2AhwgAkEANgIYIAQgAkEYahDtCA0BIAMgAygCACIFQQFrNgIAIAVBAUYEQCADEDALIAQoAmQhByAEKAJsIQggBCgCaAshAyAEIAdBAWo2AmQgAyAIRw0BDAYLCyACIAooAggiBTYCECACIAopAgAiDzcDCCAEIAdBAWo2AmQgAiAFNgJ0IAIgDzcCbCACQRhqIAEoAgQtAAAgASgCCCADIA+nEK4KDAMLIAIgCigCCCIGNgIQIAIgCikCACIPNwMIIAQgCEEBajYCOCACQQA2AmggAiAHNgJkIAIgDzcCbCACIAY2AnQgAiADNgJ4IAEoAgghASAFRQ0BIAJB6ABqEK0QRQRAIAJBADYCfCACIAIpAwg3AoABIAIgAigCEDYCiAEgAiADNgKMASACQRhqIAEgAkH8AGoQlAMMAwsgAkEANgJ8IAIgAikDCDcCgAEgAiACKAIQNgKIASACIAM2AowBIAJBGGogASACQfwAahCKBwwCCwALIAJBADYCfCACIAIpAwg3AoABIAIgAigCEDYCiAEgAiADNgKMASACQRhqIAEgAkH8AGoQ/wULIAAgAkEYakHIAPwKAAAMAQsgAEF9NgIACyACQZABaiQAC6kJAQl/IwBBMGsiAyQAIAEtAAwhBgJAIAItAAwiBEEBRgRAAkACQCABKAIIIgJFBEBBBCEBDAELIAEoAgQhBSACQQJ0IgQQkAEiAUUNASAERQ0AIAEgBSAE/AoAAAsgACACNgIIIAAgATYCBCAAIAI2AgAgACAGOgAMDAILQQQQpxQACwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZBAWsOAhIBAAsgBEUNAQwCCyAERQ0BCyACKAIEIQUgASgCBCEIAn8gAigCCCIEIAEoAggiAkcEQCACIARLIAIgBElrDAELIAhBBGshCiACQQJ0IQEgBUEEayELA0AgAUUNBCABIAtqIQkgASAKaiABQQRrIQEoAgAiByAJKAIAIglGDQALIAcgCUsgByAJSWsLQf8BcQ4CAgMBCyACKAIEIQggASgCBCEHAkAgASgCCCIBIAIoAggiAkkEQCACQQJ0IgQQkAEiBUUNDCAEBEAgBSAIIAT8CgAACyADIAI2AiwgAyAFNgIoIAMgAjYCJCADQQxqIANBJGogByABEMUGDAELAkAgAUUEQEEEIQQMAQsgAUECdCIFEJABIgRFDQ0gBUUNACAEIAcgBfwKAAALIAMgATYCLCADIAQ2AiggAyABNgIkIANBDGogA0EkaiAIIAIQxQYLIAAgAykCDDcCACAAIAMoAhQiATYCCCAAIAZBASABGzoADAwPC0ECIQEgBkEBaw4CAgMECyAAQQA2AgggAEKAgICAwAA3AgAgAEEBOgAMDA0LAkAgAkUEQEEEIQEMAQsgAkECdCIHEJABIgFFDQogB0UNACABIAggB/wKAAALIAMgAjYCLCADIAE2AiggAyACNgIkIANBJGogBSAEEN0HQQEhAiADKAIoIQUgAygCJCEBIAZBAUcNBEEEIQRBACEGIAFBBEkNBSAFIAFBAnQQ2RJBACEBDAYLIANBJGogBSAEEPESIAMgAygCLDYCICADIAMpAiQ3AxggA0EYaiAIIAIQ3QdBBCECIAMoAhwhBUEBIQZBACEEIAMoAhgiAUEESQRAIAUhAgwDCyAFIAFBAnQQ2RJBACEBDAILQQAhAQsCQCAERQRAIANBADYCLCADQoCAgIDAADcCJAwBCyAEQQJ0IgYQkAEiB0UNCCADIAc2AiggAyAENgIkIAYEQCAHIAUgBvwKAAALIAMgBDYCLAsgAyADKAIsNgIgIAMgAykCJDcDGCADQRhqIAggAhDdByABQQEgAygCICIEGyEGIAMoAhwhAiADKAIYIQELIAAgBDYCCCAAIAI2AgQgACABNgIAIAAgBjoADAwICyAGQQEgAygCLCIGGyECCyAFIQQLIAAgBjYCCCAAIAQ2AgQgACABNgIAIAAgAjoADAwFC0EEEKcUAAtBBBCnFAALQQQQpxQAC0EEEKcUAAsCQAJAIAIoAggiAUUEQEEEIQIMAQsgAigCBCEGIAFBAnQiBRCQASICRQ0BIAVFDQAgAiAGIAX8CgAACyAAIAE2AgggACACNgIEIAAgATYCACAAQQIgBGs6AAwMAQtBBBCnFAALIANBMGokAAuBCAIHfwF+AkACQAJAAkACQAJAAkBBAiAAKQMAIginQQJrIAhCAVgbDgMBAgMACyAAKAJYIgMoAgAhASADIAFBAWs2AgAgAEEIaiEDIAFBAUYEQCAAKAJYEDALIAMtAABB/wFGDQMgAxCtBA8LIAAoAhgiAygCACEBIAMgAUEBazYCACABQQFHDQIgACgCGBAwDwsgACgCGCIDKAIAIQEgAyABQQFrNgIAIAFBAUYEQCAAKAIYEDALIAAoAiAhAyAAKAIkIgIEQCADIQEDQCABEPQEIAFByAFqIQEgAkEBayICDQALCyAAKAIcIgFFDQEgA0EEaygCACICQXhxIQAgACABQcgBbCIBQQRBCCACQQNxIgIbakkNAiACQQBHIAAgAUEnaktxDQMgAxC8BQ8LIAAoAqgBIgMoAgAhASADIAFBAWs2AgAgAUEBRgRAIAAoAqgBEDALIAAoApQBIgMoAgAhASADIAFBAWs2AgAgAUEBRgRAIAAoApQBEDALAkAgACgCfCIEQX9GDQAgACgCgAEhAyAAKAKEASICBEAgAyEBA0AgARD0BCABQcgBahCIBCABQegBaiEBIAJBAWsiAg0ACwsgBEUNACADQQRrKAIAIgJBeHEhASABIARB6AFsIgRBBEEIIAJBA3EiAhtqSQ0CIAJBAEcgASAEQSdqS3ENAyADELwFCyAALQAgQf8BRwRAIABBIGoQrQQLIABB8ABqEMMEAkAgACgCiAEiBEF/Rg0AIAAoAowBIQMgACgCkAEiAgRAIAMhAQNAIAEQ9AQgAUHIAWohASACQQFrIgINAAsLIARFDQAgA0EEaygCACICQXhxIQEgASAEQcgBbCIEQQRBCCACQQNxIgIbakkNAiACQQBHIAEgBEEnaktxDQMgAxC8BQsgACgCtAEhAyAAKAK4ASICBEAgAyEBA0AgASgCACIEBEAgAUEEaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIARqSQ0EIAVBAEcgBiAEQSdqS3ENBSAHELwFCyABQQxqIQEgAkEBayICDQALCyAAKAKwASICBEAgA0EEaygCACIEQXhxIQEgASACQQxsIgJBBEEIIARBA3EiBBtqSQ0CIARBAEcgASACQSdqS3ENAyADELwFCyAAKALAASEDIAAoAsQBIgIEQCADIQEDQCABEPQEIAFByAFqIQEgAkEBayICDQALCyAAKAK8ASIBRQ0AIANBBGsoAgAiAkF4cSEAIAAgAUHIAWwiAUEEQQggAkEDcSICG2pJDQEgAkEARyAAIAFBJ2pLcQ0CIAMQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALlgoBBX8jAEEwayICJAACQAJAAkACQAJAAkACQEEEIAAoAgAiA0GAgICAeHMgA0EAThtBAWsOBAECAwQAC0EBIQMgASgCACIEQYH7xgBBDCABKAIEIgYoAgwiBREAAA0FIABBBGohAAJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANByAAIAEQ3A5FDQEMBwsgBEGd48IAQQIgBREAAA0GIAJBAToAKCACIAY2AgwgAiAENgIIIAJBoOvCADYCGCACIAEpAgg3AhwgAiACQShqNgIQIAIgAkEIaiIBNgIUIAAgAkEUahDcDg0GIAFBpLLIAEECEP0IDQYLIARBiJDJAEEBIAURAAAhAwwFC0EBIQMgASgCACIEQY37xgBBCCABKAIEIgYoAgwiBREAAA0EIABBBGohAAJAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0HIAIgADYCCCAEQYOAxwBBDSAFEQAAIQAgAkEAOgAZIAIgADoAGCACIAE2AhQgAkEUakHKo8kAQQQgAkEIakHHAhCJDiEEIAItABghAAJAIAItABkiBUEBRw0AIABBAXENACAEKAIAIgAtAApBgAFxDQIgACgCAEHt6sIAQQIgACgCBCgCDBEAAEUNAwwICyAFDQcgAEEBcUUNAgwHCyAEQZ3jwgBBAiAFEQAADQYgAiAGNgIMIAIgBDYCCCACQQE6AAcgAkGg68IANgIYIAIgASkCCDcCHCACIAJBB2o2AhAgAiACQQhqIgM2AhQgAiAANgIkIANBg4DHAEENEP0IIQAgAkEAOgAtIAIgADoALCACIAJBFGo2AiggAkEoakHKo8kAQQQgAkEkakHHAhCJDiEDIAItACwhAAJAAkACQCACLQAtIgRBAUcNACAAQQFxDQAgAygCACIALQAKQYABcQ0BIAAoAgBB7erCAEECIAAoAgQoAgwRAAANCAwCCyAEDQcgAEEBcUUNAQwHCyAAKAIAQaGyyABBASAAKAIEKAIMEQAADQYLIAIoAhRBpLLIAEECIAIoAhgoAgwRAABFDQFBASEDDAYLIAAoAgBBobLIAEEBIAAoAgQoAgwRAAANBQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDDAQLQQEhAyABKAIAIgRBlfvGAEELIAEoAgQiBigCDCIFEQAADQMgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0FIAAgARDfDkUNAQwFCyAEQZ3jwgBBAiAFEQAADQQgAkEBOgAoIAIgBjYCDCACIAQ2AgggAkGg68IANgIYIAIgASkCCDcCHCACIAJBKGo2AhAgAiACQQhqIgE2AhQgACACQRRqEN8ODQQgAUGkssgAQQIQ/QgNBAsgBEGIkMkAQQEgBREAACEDDAMLIAEoAgBB3ZHJAEEFIAEoAgQoAgwRAAAhAwwCC0EBIQMgASgCACIEQbKjyQBBBSABKAIEIgYoAgwiBREAAA0BAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0DIAAoAgQgACgCCCAEIAYQvwZFDQEMAwsgBEGd48IAQQIgBREAAA0CIAIgBjYCGCACIAQ2AhQgAkEBOgAIIAIgAkEIajYCHCAAKAIEIAAoAgggAkEUaiIAQaDrwgAQvwYNAiAAQaSyyABBAhD9CA0CCyAEQYiQyQBBASAFEQAAIQMMAQtBASEDCyACQTBqJAAgAwuWCgEFfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAQQQgACgCACIDQYCAgIB4cyADQQBOG0EBaw4EAQIDBAALQQEhAyABKAIAIgRBgfvGAEEMIAEoAgQiBigCDCIFEQAADQUgAEEEaiEAAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0HIAAgARDcDkUNAQwHCyAEQZ3jwgBBAiAFEQAADQYgAkEBOgAoIAIgBjYCDCACIAQ2AgggAkGg68IANgIYIAIgASkCCDcCHCACIAJBKGo2AhAgAiACQQhqIgE2AhQgACACQRRqENwODQYgAUGkssgAQQIQ/QgNBgsgBEGIkMkAQQEgBREAACEDDAULQQEhAyABKAIAIgRBjfvGAEEIIAEoAgQiBigCDCIFEQAADQQgAEEEaiEAAkACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQcgAiAANgIIIARBg4DHAEENIAURAAAhACACQQA6ABkgAiAAOgAYIAIgATYCFCACQRRqQcqjyQBBBCACQQhqQdICEIkOIQQgAi0AGCEAAkAgAi0AGSIFQQFHDQAgAEEBcQ0AIAQoAgAiAC0ACkGAAXENAiAAKAIAQe3qwgBBAiAAKAIEKAIMEQAARQ0DDAgLIAUNByAAQQFxRQ0CDAcLIARBnePCAEECIAURAAANBiACIAY2AgwgAiAENgIIIAJBAToAByACQaDrwgA2AhggAiABKQIINwIcIAIgAkEHajYCECACIAJBCGoiAzYCFCACIAA2AiQgA0GDgMcAQQ0Q/QghACACQQA6AC0gAiAAOgAsIAIgAkEUajYCKCACQShqQcqjyQBBBCACQSRqQdICEIkOIQMgAi0ALCEAAkACQAJAIAItAC0iBEEBRw0AIABBAXENACADKAIAIgAtAApBgAFxDQEgACgCAEHt6sIAQQIgACgCBCgCDBEAAA0IDAILIAQNByAAQQFxRQ0BDAcLIAAoAgBBobLIAEEBIAAoAgQoAgwRAAANBgsgAigCFEGkssgAQQIgAigCGCgCDBEAAEUNAUEBIQMMBgsgACgCAEGhssgAQQEgACgCBCgCDBEAAA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMMBAtBASEDIAEoAgAiBEGV+8YAQQsgASgCBCIGKAIMIgURAAANAyAAQQRqIQACQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQUgACABEN8ORQ0BDAULIARBnePCAEECIAURAAANBCACQQE6ACggAiAGNgIMIAIgBDYCCCACQaDrwgA2AhggAiABKQIINwIcIAIgAkEoajYCECACIAJBCGoiATYCFCAAIAJBFGoQ3w4NBCABQaSyyABBAhD9CA0ECyAEQYiQyQBBASAFEQAAIQMMAwsgASgCAEHdkckAQQUgASgCBCgCDBEAACEDDAILQQEhAyABKAIAIgRBsqPJAEEFIAEoAgQiBigCDCIFEQAADQECQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQMgACgCBCAAKAIIIAQgBhC/BkUNAQwDCyAEQZ3jwgBBAiAFEQAADQIgAiAGNgIYIAIgBDYCFCACQQE6AAggAiACQQhqNgIcIAAoAgQgACgCCCACQRRqIgBBoOvCABC/Bg0CIABBpLLIAEECEP0IDQILIARBiJDJAEEBIAURAAAhAwwBC0EBIQMLIAJBMGokACADC78JAQd/IwBB4ABrIgMkAEEBIQUCQAJAAn8CQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAQQMgASgCACIEQQJrIARBAU0bIgRBAWsOAwEAAgALIARBAWsOBQIEAgUGAwsCQCABKAIMIgJFIgQNACABKAIIIQEgAhCQASIFRQ0IIAQNACAFIAEgAvwKAAALIAAgAjYCFCAAIAU2AhAgACACNgIMIABBfzYCAAwNCyABKAIwQQNHDQogASgCLCIFLwAAQeXcAXMgBUECai0AAEH2AHNyDQogA0FAayABIAIQpQUgAygCQCICQX9HBEAgAygCSCIBQQBIDQggAygCRCEFIAFFBEBBASEEDAsLIAEQkAEiBEUNCSABRQ0KIAQgBSAB/AoAAAwKCyAAQX42AgAMDAsACyADQQA2AiwgA0KAgICAEDcCJCADQYilxQA2AkQgA0KggICABjcCSCADIANBJGo2AkAgASADQUBrEMgCDQsgAygCLCEGIAMoAighBEHVzsUAIQdBByEIIAMoAiQMAwsgA0EANgIsIANCgICAgBA3AiQgA0GIpcUANgJEIANCoICAgAY3AkggAyADQSRqNgJAIAEgA0FAaxDIAg0KIAMoAiwhBiADKAIoIQRBsKXFACEHQQchCCADKAIkDAILIANBADYCLCADQoCAgIAQNwIkIANBiKXFADYCRCADQqCAgIAGNwJIIAMgA0EkajYCQCABIANBQGsQyAINCSADKAIsIQYgAygCKCEEQbycyAAhB0EFIQggAygCJAwBCyADQQA2AiwgA0KAgICAEDcCJCADQYilxQA2AkQgA0KggICABjcCSCADIANBJGo2AkAgASADQUBrEMgCDQggAygCLCEGIAMoAighBEG8rMkAIQdBBiEIIAMoAiQLIQVBEAwFC0EBEKcUAAsQnhUAC0EBEKcUAAsgAgRAIAUgAhDZEgsgAEF/NgIMIAAgATYCCCAAIAQ2AgQgACABNgIADAILIANBADYCLCADQoCAgIAQNwIkIANBiKXFADYCRCADQqCAgIAGNwJIIAMgA0EkajYCQCABIANBQGsQyAIEQAwDCyADKAIsIQYgAygCKCEEIAMoAiQhBUG3pcUAIQdBCiEIQTQLIQkgAyAGNgIoIAMgBDYCJCADIAg2AjwgAyAHNgI4IANBBjYCNCAD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A0EBIQACQCADDQAgASgCBCEDIAEoAgAhBgJAAkACQAJAAkACQCABLQAKQYABcUUEQCAEQQFxDQEMBgsgBEEBcUUEQCAGQaCyyABBASADKAIMEQAADQcgASgCACEGIAEoAgQhAwsgAkEBOgAbIAIgAzYCECACIAY2AgwgAkGg68IANgIgIAIgASkCCDcCJCACIAJBG2o2AhQgAiACQQxqIgA2AhwgAEEBQQAQ/QggAiAFNgIsDQMgAi0AJkGAAXENASACKAIcQbTPxQBBASACKAIgKAIMEQAADQMgAkEsaiACQRxqEMYQRQ0CDAMLIAZBiLPJAEECIAMoAgwRAAANBSABKAIEIQMgASgCACEGDAQLIAIoAhxBnePCAEECIAIoAiAoAgwRAAANASACQQE6AD8gAiACKQIcNwIwIAIgAikCJDcCSCACQaDrwgA2AkQgAiACQT9qNgI4IAIgAkEwajYCQCACQSxqIAJBQGsQxhANASACKAJAQaSyyABBAiACKAJEKAIMEQAADQELIAVB4ABqIQACQCACLQAmQYABcUUEQCACKAIcQYizyQBBAiACKAIgKAIMEQAADQIgACACQRxqELsPRQ0BDAILIAIpAiQhCiACKQIcIQsgAkEBOgA/IAIgCzcCMCACIAo3AkggAkGg68IANgJEIAIgAkE/ajYCOCACIAJBMGoiBDYCQCAAIAJBQGsQuw8NASAEQaSyyABBAhD9CA0BCyACKAIcQYiQyQBBASACKAIgKAIMEQAARQ0BC0EBIQAMAgsgAigCHEGkssgAQQIgAigCICgCDBEAACEADAELIAZBAUEAIAMoAgwRAAAgAiAFNgIwBEBBASEADAELAkAgAS0ACkGAAXFFBEBBASEAIAEoAgBBtM/FAEEBIAEoAgQoAgwRAAANAiACQTBqIAEQxhANAgwBCyABKAIAQZ3jwgBBAiABKAIEKAIMEQAABEBBASEADAILIAJBAToADCACQaDrwgA2AkQgAiABKQIANwIcIAIgASkCCDcCSCACIAJBDGo2AiQgAiACQRxqNgJAIAJBMGogAkFAaxDGEARAQQEhAAwCCyACKAJAQaSyyABBAiACKAJEKAIMEQAARQ0AQQEhAAwBCyAFQeAAaiEEAkACQCABLQAKQYABcUUEQCABKAIAQYizyQBBAiABKAIEKAIMEQAABEBBASEADAQLQQEhACAEIAEQuw9FDQEMAwsgASkCCCEKIAEpAgAhCyACQQE6AAwgAiALNwIcIAIgCjcCSCACQaDrwgA2AkQgAiACQQxqNgIkIAIgAkEcaiIDNgJAIAQgAkFAaxC7Dw0BQQEhACADQaSyyABBAhD9CA0CCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAQtBASEACyAFQegAaiEFIAlB6ABrIgkNAAsLIABFBEAgASgCAEGossgAQQEgASgCBCgCDBEAACEICyACQdAAaiQAIAgL9wgCA34RfyMAQRBrIgkkACABKQMAIAEpAwggAigCBCIMIAIoAggiDxDfCiEQIAEoAhghESABKAIUIRIgAigCACENIAEoAiRFBEAgAUEcaiASIBEQywMLIAEoAiAiDiAQcSEKIBBBGXYiE61CgYKEiJCgwIABfiEGIAEoAhwhBwJAAkADQAJAAkACQAJAAkACQAJAIAcgCmopAAAiBSAGhSIEQoGChIiQoMCAAX0gBEJ/hYNCgIGChIiQoMCAf4MiBEIAUgRAA0AgByAEeqdBA3YgCmogDnFBAnRrQQRrKAIAIgIgEU8NAyASIAJBBnRqIhVBPGooAgAgD0YEQCAMIBVBOGooAgAgDxCPE0UNAwsgBEIBfSAEgyIEQgBSDQALCyAFQoCBgoSIkKDAgH+DIQRBASECIAhBAUYNBiAEQgBSDQJBACECDAYLIAEoAhgiCCACTQ0EIAEoAhQgAkEGdGoiASkDACEEIAEgAykDADcDACAAIAQ3AwggASkDCCEEIAEgAykDCDcDCCAAIAQ3AxAgASkDECEEIAEgAykDEDcDECAAIAQ3AxggASkDGCEEIAEgAykDGDcDGCAAIAQ3AyAgASkDICEEIAEgAykDIDcDICAAIAQ3AyggASkDKCEEIAEgAykDKDcDKCAAIAQ3AzAgACACNgIAIA1FDQcgDEEEaygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyANakkNAiABQQBHIAAgDUEnaktxDQMgDBC8BQwHCyACIBFB0K/JABCFEwALIAR6p0EDdiAKaiAOcSELDAMLQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyACIAhB4LXJABCFEwALIAQgBUIBhoNQBEAgFEEIaiIUIApqIA5xIQogAiEIDAELCyAHIAtqLAAAIgJBAE4EQCAHKQMAQoCBgoSIkKDAgH+DeqdBA3YiCyAHai0AACECCyAHIAtqIBM6AAAgByALQQhrIA5xakEIaiATOgAAIAEgASgCJCACQQFxayIINgIkIAEgASgCKEEBaiIKNgIoIAcgC0ECdGtBBGsgASgCGCICNgIAAkAgAiABKAIQRw0AAkBB////DyAIIApqIgcgB0H///8PTxsiCCACa0EBTQ0AIAIgB0sNACAJQQRqIAIgASgCFCAIQQhBwAAQpREgCSgCBEEBRg0AIAkoAgghByABIAg2AhAgASAHNgIUIAIgCEcNASABQRBqEJUSDAELIAlBBGogAiABKAIUIAJBAWoiCEEIQcAAEKURIAkoAgRBAUYNAiAJKAIIIQcgASAINgIQIAEgBzYCFAsgASACQQFqNgIYIAEoAhQgAkEGdGoiASADKQMANwMAIAEgAykDCDcDCCABIAMpAxA3AxAgASADKQMYNwMYIAEgAykDIDcDICABIAMpAyg3AyggASAPNgI8IAEgDDYCOCABIA02AjQgASAQNgIwIABBfzYCGCAAIAI2AgALIAlBEGokAA8LIAkoAgggCSgCDCEXEKcUAAuCCQEFfyMAQRBrIgIkAAJAA0ACQCACIAAtAAAiAzYCDCABIAJBDGpBBBCWCAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOCgECAwQFBgcICQwACyAAKAIIIQMgAiAAKAIMIgA2AgwgASACQQxqQQQQlgggAEUNCyAAQdAAbCEAA0AgAyABEKAFIANB0ABqIQMgAEHQAGsiAA0ACwwLCyAAKAIIIQMgAiAAKAIMIgA2AgwgASACQQxqQQQQlgggAEUNCiAAQdAAbCEAA0AgAyABEKAFIANB0ABqIQMgAEHQAGsiAA0ACwwKCyAAKAIIIQMgAiAAKAIMIgA2AgwgASACQQxqQQQQlgggAEUNCSAAQdAAbCEAA0AgAyABEKAFIANB0ABqIQMgAEHQAGsiAA0ACwwJCyAAQThqIAEQ1QwgAEEIaiABEOIBIAIgAC0ATDYCDCABIAJBDGpBBBCWCAwICyACIAAoAigiBjYCDCABIAJBDGoiA0EEEJYIIABBCGohBSAAKAIsIQQCQCAGQQFGBEAgACgCMCEGIAIgBDYCDCABIANBBBCWCCACIAY2AgwgASADQQQQlgggAiAAKAI0NgIMIAEgA0EEEJYIDAELIAIgBDYCDCABIAJBDGpBBBCWCAsgAkEaIAUoAgAiAyADQRpMG0EaayIENgIMIAEgAkEMakEEEJYIAkACQAJAAkAgBEEBaw4DAAECAwsgAEEMaiABEIoNDAoLIABBDGogARCKDQwJCyACIAAtAAw6AAwgASACQQxqQQEQlggMCAsgAiADQX9GIgM2AgwgASACQQxqQQQQlgggAw0FIAUgARC5AgwHCyACIAAoAgg2AgwgASACQQxqQQQQlggMBgsgAiAAKAIINgIMIAEgAkEMaiIDQQQQlgggACgCDCABEKAFIAIgAC0AEDYCDCABIANBBBCWCAwFCyACIAAoAgQiBDYCDCABIAJBDGoiA0EEEJYIIAAoAgghBQJAIARBAUYEQCAAKAIMIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhA2AgwgASADQQQQlggMAQsgAiAFNgIMIAEgAkEMakEEEJYICyACIAAoAhgiAC0AACIDNgIMIAEgAkEMakEEEJYIAkACQAJAAkACQCADQQNrDgUBAgMDBAALIABBCGohAAwHCyACIAAtAAE6AAwgASACQQxqQQEQlggMBwsgAEEIaiABELkCDAYLIABBCGohAAwECyACIAAtAAE6AAwgASACQQxqQQEQlggMBAsgAiAALQABOgAMIAEgAkEMakEBEJYIDAMLIAIgACgCBDYCDCABIAJBDGpBBBCWCCAAKAIIIQAMAQsLIAIgACgCDCIENgIMIAEgAkEMaiIDQQQQlgggACgCECEFIARBAUYEQCAAKAIUIQQgAiAFNgIMIAEgA0EEEJYIIAIgBDYCDCABIANBBBCWCCACIAAoAhg2AgwgASADQQQQlggMAQsgAiAFNgIMIAEgAkEMakEEEJYICyACQRBqJAALggkBBX8jAEEQayICJAACQANAAkAgAiAALQAAIgM2AgwgASACQQxqQQQQlggCQAJAAkACQAJAAkACQAJAAkACQCADQQFrDgoBAgMEBQYHCAkMAAsgACgCCCEDIAIgACgCDCIANgIMIAEgAkEMakEEEJYIIABFDQsgAEHQAGwhAANAIAMgARChBSADQdAAaiEDIABB0ABrIgANAAsMCwsgACgCCCEDIAIgACgCDCIANgIMIAEgAkEMakEE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KAIUKAIMEQAADQMgA0EMaygCACADQQhrKAIAIAIoAhAgAigCFBC/BkUNAgwDCyAFQYizyQBBAiAEKAIMEQAADQUgASgCBCEEIAEoAgAhBQwECyACKAIQQZ3jwgBBAiACKAIUKAIMEQAADQEgAiACKQIQNwIwIAJBAToAICACIAJBIGo2AjggA0EMaygCACADQQhrKAIAIAJBMGoiAEGg68IAEL8GDQEgAEGkssgAQQIQ/QgNAQsCQCACLQAaQYABcUUEQCACKAIQQYizyQBBAiACKAIUKAIMEQAADQIgAyACQRBqENgBRQ0BDAILIAIpAhghCiACKQIQIQsgAkEBOgAvIAIgCzcCICACIAo3AjggAkGg68IANgI0IAIgAkEvajYCKCACIAJBIGo2AjAgAyACQTBqENgBDQEgAigCMEGkssgAQQIgAigCNCgCDBEAAA0BCyACKAIQQYiQyQBBASACKAIUKAIMEQAARQ0BC0EBIQAMAgsgAigCEEGkssgAQQIgAigCFCgCDBEAACEADAELIAVBAUEAIAQoAgwRAAAEQAwBCwJAIAEtAApBgAFxRQRAIAEoAgBBtM/FAEEBIAEoAgQoAgwRAAANAiADQQxrKAIAIANBCGsoAgAgASgCACABKAIEEL8GDQIMAQsgASgCAEGd48IAQQIgASgCBCgCDBEAAARADAILIAIgASkCADcCMCACQQE6ABAgAiACQRBqNgI4IANBDGsoAgAgA0EIaygCACACQTBqQaDrwgAQvwYEQAwCCyACQTBqQaSyyABBAhD9CEUNAAwBCwJAAkAgAS0ACkGAAXFFBEAgASgCAEGIs8kAQQIgASgCBCgCDBEAAARADAQLIAMgARDYAUUNAQwDCyABKQIIIQogASkCACELIAJBAToAICACIAs3AhAgAiAKNwI4IAJBoOvCADYCNCACIAJBIGo2AhggAiACQRBqNgIwIAMgAkEwahDYAQ0BIAIoAjBBpLLIAEECIAIoAjQoAgwRAAANAgsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAELCyADQTBqIQMgCUEwayIJDQALCyAARQRAIAEoAgBBqLLIAEEBIAEoAgQoAgwRAAAhCAsgAkFAayQAIAgL6wgCEH8DfiMAQYABayIDJAAgASgCACEIIAApAwAgACkDCCABKAIEIgkgASgCCCIL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IAIoAmAhAyACKAJkIgEgBDoAkQELIANBAUcNAAsLIAJB0ABqIAEQNiACKAJUIQECfwJAAkAgAigCUEEBRw0AAkAgASgCAEEBRgRAIAEoAgQiAyABKAIITwRAQQEhAwwCCyABIANBAWo2AgQLIAEoAhQhBCACIAEoAogBNgKIASACIAEpAoABNwOAASACQcgAaiABENsCQQEhAyACKAJMIQECQCACKAJIQQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIIIgcgASgCBCIFTQ0CIAEgBUEBaiIDNgIEIAMgB08NASABIAVBAmo2AgQLIAFBADoAkQEgAkFAayABEJQKIAIoAkAgAigCRCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCIDIAEoAghPDQIgASADQQFqNgIECwJAIAEtAJEBIgVFBEAgAkEwaiABEJQKIAIoAjQhASACKAIwIQMMAQsgAUEAOgCRASACQThqIAEQlAogAigCOCEDIAIoAjwiASAFOgCRAQsgA0EBcUUNAAsLIAJBKGogARCuCyACKAIsIQEgAigCKCEDCyADQQFHDQAgASACKAKIATYCiAEgASACKQOAATcCgAEgBCABKAIUSw0AIAEgBDYCFAsgA0EBRw0AAkAgASgCAEEBRgRAIAEoAgQiAyABKAIITw0BIAEgA0EBajYCBAsCQCABLQCRASIEQQFGBEAgAkEYaiABEIEDIAIoAhwhASACKAIYIQMMAQsgAUEBOgCRASACQSBqIAEQgQMgAigCICEDIAIoAiQiASAEOgCRAQsgA0EBcUUNAQsgAkEQaiABELoFIAIoAhQhASACKAIQQQFxDQELQQAMAQsgAkEIaiABENEDIAIoAgwhASACKAIICyIDQQFHDQEgASACKQNwNwKAASABIAIoAng2AogBIAYgASgCFEsNAQsgASAGNgIUCyAAIAM2AgAgACABNgIEIAJBkAFqJAALvAgBBn8jAEGQAWsiAiQAAkACQAJAAkACQCABKAIAQQFGBEAgASgCBCIDIAEoAggiBEkNAUEBIQMMBQsgASgCFCEGIAIgASgCiAE2AnggAiABKQKAATcDcCABLQCRAUECRg0BDAILIAEgA0EBaiIFNgIEIAEoAhQhBiACIAEoAogBNgJ4IAIgASkCgAE3A3AgAS0AkQFBAkcNASAEIAVNBEBBASEDDAMLIAEgA0ECaiIFNgIEIAQgBU0NASABIANBA2o2AgQLIAFBADoAkQEgAkHoAGogARCUCiACKAJoIAIoAmwiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAyABKAIITw0CIAEgA0EBajYCBAsCQCABLQCRASIERQRAIAJB2ABqIAEQlAogAigCXCEBIAIoAlghAwwBCyABQQA6AJEBIAJB4ABqIAEQlAogAigCYCEDIAIoAmQiASAEOgCRAQsgA0EBRw0ACwsgAkHQAGogARDWAiACKAJUIQECfwJAAkAgAigCUEEBRw0AAkAgASgCAEEBRgRAIAEoAgQiAyABKAIITwRAQQEhAwwCCyABIANBAWo2AgQLIAEoAhQhBCACIAEoAogBNgKIASACIAEpAoABNwOAASACQcgAaiABENsCQQEhAyACKAJMIQECQCACKAJIQQFxDQACQCABLQCRAUECRw0AIAEoAgBBAUYEQCABKAIIIgcgASgCBCIFTQ0CIAEgBUEBaiIDNgIEIAMgB08NASABIAVBAmo2AgQLIAFBADoAkQEgAkFAayABEJQKIAIoAkAgAigCRCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCIDIAEoAghPDQIgASADQQFqNgIECwJAIAEtAJEBIgVFBEAgAkEwaiABEJQKIAIoAjQhASACKAIwIQMMAQsgAUEAOgCRASACQThqIAEQlAogAigCOCEDIAIoAjwiASAFOgCRAQsgA0EBcUUNAAsLIAJBKGogARCuCyACKAIsIQEgAigCKCEDCyADQQFHDQAgASACKAKIATYCiAEgASACKQOAATcCgAEgBCABKAIUSw0AIAEgBDYCFAsgA0EBRw0AAkAgASgCAEEBRgRAIAEoAgQiAyABKAIITw0BIAEgA0EBajYCBAsCQCABLQCRASIEQQFGBEAgAkEYaiABEIEDIAIoAhwhASACKAIYIQMMAQsgAUEBOgCRASACQSBqIAEQgQMgAigCICEDIAIoAiQiASAEOgCRAQsgA0EBcUUNAQsgAkEQaiABELoFIAIoAhQhASACKAIQQQFxDQELQQAMAQsgAkEIaiABENEDIAIoAgwhASACKAIICyIDQQFHDQEgASACKQNwNwKAASABIAIoAng2AogBIAYgASgCFEsN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IAQgByACQX9GIgkbIANBf0YiChsiAigCACIIIAAgByAEIAobIAkbIgMoAgAiBUcEQCAIIAVrIQUMAQtBBCEFIAgEQCACKAIIIgUgAygCCCIISyAFIAhJayACKAIEIgUgAygCBCIISyAFIAhJayAFIAhGGyIFQf8BcQ0BQQwhBQsgAiAFaigCACIIIAMgBWooAgAiBUsgBSAIS2shBQsgASAHIAAgCRsiACkCGDcCGCABIAApAhA3AhAgASAAKQIINwIIIAEgACkCADcCACABIAIgAyAFQX9GIgcbIgApAhg3AjggASAAKQIQNwIwIAEgACkCCDcCKCABIAApAgA3AiAgASADIAIgBxsiACkCGDcCWCABIAApAhA3AlAgASAAKQIINwJIIAEgACkCADcCQCABIAQgBiAKGyIAKQIANwJgIAEgACkCCDcCaCABIAApAhA3AnAgASAAKQIYNwJ4C7IHAQh/AkACQCAAKAIAIgEEQCAAKAIEIQICQCAAKAIIIggEQAJAA0ACQCADBEAgASEAIAMhAQwBC0EAIQACQCACRQ0AIAIhBCACQQdxIgUEQANAIARBAWshBCABKALIBCEBIAVBAWsiBQ0ACwsgAkEISQ0AA0AgASgCyAQoAsgEKALIBCgCyAQoAsgEKALIBCgCyAQoAsgEIQEgBEEIayIEDQALC0EAIQILAkAgAS8BwgQgAksEQCACIQYgASEEDAELAkADQCABKAK4AyIEBEAgAUEEaygCACICQXhxIQMgA0H4BEHIBCAAGyIFQQRBCCACQQNxIgIbakkNCSABLwHABCEGIAJBAEcgAyAFQSdqS3ENAiABELwFIABBAWohACAEIgEvAcIEIAZNDQEMAwsLIAFB+ARByAQgABsQ2RJBrOrIABCdFQALDAcLAkAgAEUEQCAGQQFqIQIgBCEDDAELIAQgBkECdGpBzARqIQECQCAAQQdxIgJFBEAgACEFDAELIAAhBQNAIAVBAWshBSABKAIAIgNByARqIQEgAkEBayICDQALC0EAIQIgAEEISQ0AA0AgASgCACgCyAQoAsgEKALIBCgCyAQoAsgEKALIBCgCyAQiA0HIBGohASAFQQhrIgUNAAsLAkAgBCAGQQxsaiIBKAK8AyIABEAgAUG8A2ooAgQiBUEEaygCACIHQXhxIQEgAUEEQQggB0EDcSIHGyAA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IAEpAwg3AwggACABKQMANwMADA0LIAAgASkDCDcDCCAAIAEpAwA3AwAMDAsgACABKQMINwMIIAAgASkDADcDAAwLCyAAIAEpAwg3AwggACABKQMANwMADAoLAkAgASgCDCICRQRAQQEhAQwBCyABKAIIIQQgAhCQASIBRQ0LIAJFDQAgASAEIAL8CgAACyAAIAI2AgwgACABNgIIIAAgAjYCBCAAQYyAgIB4NgIADAkLIAAgASkDCDcDCCAAIAEpAwA3AwAMCAsCQCABKAIMIgJFBEBBASEBDAELIAEoAgghBCACEJABIgFFDQogAkUNACABIAQgAvwKAAALIAAgAjYCDCAAIAE2AgggACACNgIEIABBjoCAgHg2AgAMBwsgACABKQMINwMIIAAgASkDADcDAAwGCyAAQZCAgIB4NgIADAULIAMgASgCBBDOBUEQEJABIgFFDQcgASADKQMINwMIIAEgAykDADcDACAAQZGAgIB4NgIAIAAgATYCBAwECyAAQZKAgIB4NgIADAMLIAMgASgCBBDOBUEQEJABIgFFDQYgASADKQMINwMIIAEgAykDADcDACAAQZOAgIB4NgIAIAAgATYCBAwCCyABKAIMIgJBgICAwABPDQYCfyACRQRAQQghBUEADAELIAEoAgghBiACQQR0EJABIgVFDQhBACEBIAIhBANAIAMgASAGahDOBSABIAVqIgcgAykDCDcDCCAHIAMpAwA3AwAgAUEQaiEBIARBAWsiBA0ACyACCyEBIAAgAjYCDCAAIAU2AgggACABNgIEIABBlICAgHg2AgAMAQsgASgCCCICQYCAgCBPDQUCfyACRQRAQQghBUEADAELIAEoAgQhByACQQV0EJABIgVFDQggA0EgaiEIQQAhASACIQQDQCADQRBqIAEgB2oiBhDOBSAIIAZBEGoQzgUgASAFaiIGIAMpAyg3AxggBiADKQMgNwMQIAYgAykDGDcDCCAGIAMpAxA3AwAgAUEgaiEBIARBAWsiBA0ACyACCyEBIAAgAjYCCCAAIAU2AgQgACABNgIACyADQTBqJAAPC0EBEKcUAAtBARCnFAALQbjwyQBBAToAAAALQbjwyQBBAToAAAALEJ4VAAtBCBCnFAALQQgQpxQAC/IHAgl/AX4jAEHgAGsiBSQAIAUgBDYCRCAFIAM2AkAgBUIANwI4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IQZBBwwGCyACQQA2AgggAkKAgICAEDcCACACQczsxAA2AjQgAkKggICABjcCOCACIAI2AjAgACACQTBqEMgCDQogAigCCCEFIAIoAgAhA0Gz0cUAIQYgAigCBAwECyACQQA2AgggAkKAgICAEDcCACACQczsxAA2AjQgAkKggICABjcCOCACIAI2AjAgACACQTBqEMgCDQkgAigCCCEFIAIoAgQhBCACKAIAIQNBsKXFACEGQQcMBAsgAkEANgIIIAJCgICAgBA3AgAgAkHM7MQANgI0IAJCoICAgAY3AjggAiACNgIwIAAgAkEwahDIAg0IIAIoAgghBSACKAIEIQQgAigCACEDQbelxQAhBkEKIQdBNAwECyACQQA2AgggAkKAgICAEDcCACACQczsxAA2AjQgAkKggICABjcCOCACIAI2AjAgACACQTBqEMgCDQcgAigCCCEFIAIoAgQhBCACKAIAIQNBvJzIACEGQQUMAgsgAkEANgIIIAJCgICAgBA3AgAgAkHM7MQANgI0IAJCoICAgAY3AjggAiACNgIwIAAgAkEwahDIAg0GIAIoAgghBSACKAIAIQNBvKzJACEGIAIoAgQLIQRBBgshB0EQCyEIIAIgBTYCLCACIAQ2AiggAiAHNgIkIAIgBjYCICACQQc2AhwgAkG/0cUANgIYIAIgAkEoaq1CgICAgNABhDcDQCACIAJBIGqtQoCAgIDQAYQ3AzggAiACQRhqrUKAgICA0AGENwMwIAJB/vbBACACQTBqELgMIAIgACAIaiIAKQIANwIMIAIgACgCCDYCFCABKAIIIgAgASgCAEYEQCABEL0SCyABIABBAWo2AgggASgCBCAAQRhsaiIAIAIpAgA3AgAgACACKQIINwIIIAAgAikCEDcCEEECIQAgA0UNACAEQQRrKAIAIgVBeHEhASABQQRBCCAFQQNxIgUbIANqSQ0BIAVBAEcgASADQSdqS3ENAiAEELwFCyACQdAAaiQAIAAPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB8LXJAEE3IAJBzwBqQeTsxABBqLbJABDaEgALmAgCB38BfiMAQfAGayICJAAgAiABKAIYIgM2AiAgAiABKQIQNwMYIAIgASkCCDcDECACIAEpAgA3AwggAiADNgI4IAIgAkEYajYCMCAC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zOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINCiADKAIIIQUgAygCACEGQbPRxQAhByADKAIEDAQLIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINCSADKAIIIQUgAygCBCEEIAMoAgAhBkGwpcUAIQdBBwwECyADQQA2AgggA0KAgICAEDcCACADQczsxAA2AjQgA0KggICABjcCOCADIAM2AjAgASADQTBqEMgCDQggAygCCCEFIAMoAgQhBCADKAIAIQZBt6XFACEHQQohCEE0DAQLIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINByADKAIIIQUgAygCBCEEIAMoAgAhBkG8nMgAIQdBBQwCCyADQQA2AgggA0KAgICAEDcCACADQczsxAA2AjQgA0KggICABjcCOCADIAM2AjAgASADQTBqEMgCDQYgAygCCCEFIAMoAgAhBkG8rMkAIQcgAygCBAshBEEGCyEIQRALIQkgAyAFNgIsIAMgBDYCKCADIAg2AiQgAyAHNgIgIANBBjYCHCADQbPRxQA2AhggAyADQShqrUKAgICA0AGENwNAIAMgA0Egaq1CgICAgNABhDcDOCADIANBGGqtQoCAgIDQAYQ3AzAgA0H+9sEAIANBMGoQuAwgAyABIAlqIgEpAgA3AgwgAyABKAIINgIUIAIoAggiASACKAIARgRAIAIQvRILIAIgAUEBajYCCCACKAIEIAFBGGxqIgEgAykCADcCACABIAMpAgg3AgggASADKQIQNwIQQQAhASAGRQ0AIARBBGsoAgAiBUF4cSECIAJBBEEIIAVBA3EiBRsgBmpJDQEgBUEARyACIAZBJ2pLcQ0CIAQQvAULIAAgATYCACADQdAAaiQADwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQfC1yQBBNyADQc8AakHk7MQAQai2yQAQ2hIAC9gHAgZ/AX4jAEHQAGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAEEBaw4EAgADBAELAkACQCABKAIMIgNFDQAgAkEwaiABKAIIIgYQ8gUgAigCMCIBQX9GDQAgAiACKQI0NwIMIAIgATYCCEEBIQQgA0E4bEE4ayIFQThuQQF0IQEgBQRAIAEQkAEiBEUNBwsgAkEANgIcIAIgBDYCGCACIAE2AhQgAiACQQhqrUKAgICAwAKENwMwIAJBFGpB3JbGAEHPrcAAIAJBMGoiARCxCUUEQCADQQFHBEAgAa1CgICAgMAChCEIIAZBOGohAQNAIAJBIGogARDyBSACIAIoAig2AjggAiACKQIgNwMwIAIoAhQgAigCHCIDa0EBTQRAIAJBFGogA0ECQQFBARCzESACKAIcIQMLIAIoAhggA2pBrMAAOwAAIAIgA0ECajYCHCACIAg3A0AgAkEUakHclsYAQc+twAAgAkFAaxCxCQ0KIAIoAjAiAwRAIAIoAjQiBkEEaygCACIHQXhxIQQgBEEEQQggB0EDcSIHGyADakkNECAHQQBHIAQgA0EnaktxDREgBhC8BQsgAUE4aiEBIAVBOGsiBQ0ACwsgAiACKAIcNgI4IAIgAikCFDcDMCACKAIIIgFFDQIgAigCDCIFQQRrKAIAIgRBeHEhAyADQQRBCCAEQQNxIgQbIAFqSQ0NIARBAEcgAyABQSdqS3ENDiAFELwFDAILQYiwyQBBKyACQc8AakH0lsYAQcC2yQAQ2hIACyACQQA2AjggAkKAgICAEDcDMAsgAiACQTBqrUKAgICAwAKENwMgIABBzI7CACACQSBqELgMIAIoAjAiAEUNCSACKAI0IgNBBGsoAgAiBUF4cSEBIAFBBEEIIAVBA3EiBRsgAGpJDQogBUEARyABIABBJ2pLcQ0LIAMQvAUMCQsgACABQQhqEMUDDAgLQQYQkAEiAUUNBiAAQQY2AgggACABNgIEIABBBjYCACABQf6ZyQAvAAA7AAQgAUH6mckAKAAANgAADAcLQQQQkAEiAUUNBCAAQQQ2AgggACABNgIEIABBBDYCACABQcqmvfIENgAADAYLQQgQkAEiAUUNAiAAQQg2AgggACABNgIEIABBCDYCACABQsbSlePGzNSy5gA3AAAMBQtBARCnFAALQYiwyQBBKyACQc8AakH0lsYAQbSwyQAQ2hIAC0EBEKcUAAtBARCnFAALQQEQpxQACyACQdAAaiQADwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALgQYBB38CQAJAAkACQAJAAkACQAJAIAAoAgAOBAECAwQACwJAIAAoAigiAUUNACABQQJ0QQtqQXhxIgMgAWpBCWoiAUUNACAAKAIkIANrIgJBBGsoAgAiBEF4cSEDIANBBEEIIARBA3EiBBsgAWpJDQYgBEEARyADIAFBJ2pLcQ0HIAIQvAULIAAoAhwhAyAAKAIgIgIEQCADIQEDQCABQThqKAIAIgQEQCABQTxqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgBGpJDQggBUEARyAGIARBJ2pLcQ0JIAcQvAULIAEQ8wUgAUHIAGohASACQQFrIgINAAsLIAAoAhgiAUUNBCADQQRrKAIAIgJBeHEhACAAIAFByABsIgFBBEEIIAJBA3EiAhtqSQ0FIAJBAEcgACABQSdqS3ENBiADELwFDwsgAEEIahCPBA8LAkAgACgCKCIBRQ0AIAFBAnRBC2pBeHEiAyABakEJaiIBRQ0AIAAoAiQgA2siAkEEaygCACIEQXhxIQMgA0EEQQggBEEDcSIEGyABakkNBCAEQQBHIAMgAUEnaktxDQUgAhC8BQsgACgCHCEDIAAoAiAiAgRAIAMhAQNAIAFBOGooAgAiBARAIAFBPGooAgAiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyAEakkNBiAFQQBHIAYgBEEnaktxDQcgBxC8BQsgARDzBSABQcgAaiEBIAJBAWsiAg0ACwsgACgCGCIBRQ0CIANBBGsoAgAiAkF4cSEAIAAgAUHIAGwiAUEEQQggAkEDcSICG2pJDQMgAkEARyAAIAFBJ2pLcQ0EIAMQvAUPCyAAQQRqEMQFIAAoAgQiAUUNASAAKAIIIgNBBGsoAgAiAkF4cSEAIAAgAUE4bCIBQQRBCCACQQNxIgIbakkNAiACQQBHIAAgAUEnaktxDQMgAxC8BQ8LIABBCGoQ/wkLDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALlQcBFn8CQAJAAkACQAJAAkACQCAAKAIwIgFBf0YNAAJAAkACQEECIAFB9v///wdqIAFBiYCAgHhNGw4CAQIACwJAAkACQAJAAkACQAJAAkACQAJAQQMgAUGAgICAeHMgAUEAThsOCQECAwQFBgcICQALAn8gACgCACIBQX9GBEAgACgCBCIBRQ0NQQgMAQsgAQRAIAAoAgQgARDZEgsgACgCDCIBRQ0MQRALIABqKAIAIAEQ2RIPCyAAKAIAIgFFDQoMDwsgACgCACIBRQ0JDA4LIAAoAgAiAQRAIAAoAgQgARDZEgsgACgCDCIBBEAgACgCECABENkSCyAAKAIYIgFFDQgMDgsgAQRAIAAoAjQgARDZEgsgACgCEEF/Rg0HIAAQ/AkPCwJ/AkACQAJAAkACQAJAIAAoAgAOBgUBAgMEBQALIAAoAgQiAQRAIAAoAgggARDZEgsgACgCECIBRQ0MQRQMBQsgACgCDCIBBEAgACgCECABENkSCyAAKAIYIgFFDQtBHAwECyAAKAIMIgEEQCAAKAIQIAEQ2RILIAAoAhgiAUUNCkEcDAMLIAAoAgwiAQRAIAAoAhAgARDZEgsgACgCGCIBRQ0JQRwMAgsgACgCBCIBBEAgACgCCCABENkSCyAAKAIQIgFFDQhBFAwBCyAAKAIEIgFFDQdBCAsgAGooAgAgARDZEg8LIAAoAgAiAUUNBQwKCyAAKAIAIgEEQCAAKAIEIAEQ2RILIAAoAgwiAQRAIAAoAhAgARDZEgsgACgCGCIBRQ0EDAoLIAAoAgAiAQRAIAAoAgQgARDZEgsgACgCDCIBBEAgACgCECABENkSCyAAKAIYIgFFDQMMCQsgACgCACIBRQ0CDAcLIAAoAgAiAUUNASAAKAIEIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQIgAkEARyAAIAFBJ2pLcQ0DIAMQvAUPCyAAKAIAIQEgACgCBCIAKAIAIgMEQCABIAMRAwALIAAoAgQiAEUNACABQQRrKAIAIgJBeHEhAyADQQRBCCACQQNxIgIbIABqSQ0DIAJBAEcgAyAAQSdqS3ENBCABELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgACgCBCABENkSDwsgACgCHCABENkSC5QGAQd/AkACQAJAAkACQAJAAkACQCAAKAIADgQAAQIDBQsgACgCCCEDIAAoAgwiBgRAIAMhAQNAIAEQzQECQCABQdAAaigCACIFQX5GDQAgBUF/Rg0AIAVFDQAgAUHUAGooAgAiBEEEaygCACICQXhxIQcgB0EEQQggAkEDcSICGyAFakkNCSACQQBHIAcgBUEnaktxDQggBBC8BQsgAUHgAGohASAGQQFrIgYNAAsLIAAoAgQiAUUNBCADQQRrKAIAIgBBeHEhAiACIAFB4ABsIgFBBEEIIABBA3EiABtySQ0GIABFDQMgAiABQSdqTQ0DDAULIAAoAgghAyAAKAIMIgYEQCADIQEDQCABEM0BAkAgAUHQAGooAgAiBUF+Rg0AIAVBf0YNACAFRQ0AIAFB1ABqKAIAIgRBBGsoAgAiAkF4cSEHIAdBBEEIIAJBA3EiAhsgBWpJDQggAkEARyAHIAVBJ2pLcQ0HIAQQvAULIAFB4ABqIQEgBkEBayIGDQALCyAAKAIEIgFFDQMgA0EEaygCACIAQXhxIQIgAiABQeAAbCIBQQRBCCAAQQNxIgAbckkNBSAARQ0CIAIgAUEnak0NAgwECyAAKAIEIgMQzQECQCADKAJQIgRBfkYNACAEQX9GDQAgBEUNACADKAJUIgFBBGsoAgAiAEF4cSECIAJBBEEIIABBA3EiABsgBGpJDQUgAEEARyACIARBJ2pLcQ0EIAEQvAULIANBBGsoAgAiAUEDcSEAIAFBeHFB5ABB6AAgABtJDQQgAEUNASABQYgBSQ0BDAMLIAAoAgQiAxDNAQJAIAMoAlAiBEF+Rg0AIARBf0YNACAERQ0AIAMoAlQiAUEEaygCACIAQXhxIQIgAkEEQQggAEEDcSIAGyAEakkNBCAAQQBHIAIgBEEnaktxDQMgARC8BQsgA0EEaygCACIBQQNxIQAgAUF4cUHkAEHoACAAG0kNAyAARQ0AIAFBiAFJDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAupCAIMfwh+IwBBkAZrIgIkAAJAAkACQCABKAIEIgMgASgCDCIMRg0AIAEoAhQhBCABKAIQIQkgAkHAAmohCiACQfABaiIFQQRyIQsgBUHIAGohByACQZgDaiIFQcgAaiEIIAVBBHIhDQNAIAEgA0HIAGoiBTYCBAJAAkACQAJAIAMoAgAiBkEERwRAIAIgBjYCwAUgAkHABWoiAUEEciADQQRqQcQA/AoAACACIAGtQoCAgIDwIIQ3A4gGIAJB8ARqQaHvwQAgAkGIBmoQuAwgAkEAOgD8BCACQX82AtAEIAEQrgcgAiACKQP4BCIONwOwBCACIAIpA/AEIg83A6gEIAIgAikD6AQiEDcDoAQgAiACKQPgBCIRNwOYBCACIAIpA9gEIhI3A5AEIAIgAikD0AQiEzcDiAQgAiACKQPIBCIUNwOABCACIAIpA8AEIhU3A/gDDAELIAIgA0EIaikCADcDgAUgAiADQRBqKQIANwOIBSACIANBGGopAgA3A5AFIAIgA0EgaikCADcDmAUgAiADQShqKQIANwOgBSACIANBMGopAgA3A6gFIAIgA0E4aikCADcDsAUgAiADQUBrKQIANwO4BSACQZgDaiAJIAJBgAVqEHcgAigCmAMiA0F/Rw0BIAIgAikD2AMiDjcCkAMgAiACKQPQAyIPNwKIAyACIAIpA8gDIhA3AoADIAIgAikDwAMiETcC+AIgAiACKQO4AyISNwLwAiACIAIpA7ADIhM3AugCIAIgAikDqAMiFDcC4AIgAiACKQOgAyIVNwLYAgsgAiAVNwKwASACIBQ3ArgBIAIgEzcCwAEgAiASNwLIASACIBE3AtABIAIgEDcC2AEgAiAPNwLgASACIA43AugBIAJB6ABqIAJBrAFqQcQA/AoAAAwBCyACQdQCaiIGIA1BxAD8CgAAIAcgCCkDEDcDECAHIAgpAwg3AwggByAIKQMANwMAIAsgBkHEAPwKAAAgAiADNgLwASACQfABaiAJEIoFIAIoAvABIQMgAkGsAWoiBiALQcQA/AoAACACIAopAwA3A1ggAiAKKAIINgJgIAIpA7gCIQ4gAkHoAGogBkHEAPwKAAAgA0F/Rw0BCyAEKAIwQX9HBEAgBBCNAwsgBCACKQKkATcCOCAEIAIpApwBNwIwIAQgAikClAE3AiggBCACKQKMATcCICAEIAIpAoQBNwIYIAQgAikCfDcCECAEIAIpAnQ3AgggBCACKQJsNwIADAILIAJBFGogAkGsAWpBxAD8CgAAIAIgAigCYDYCECACIAIpA1g3AwggA0F+Rw0CIAwgBSIDRw0ACwsgAEF/NgIADAELIABBBGogAkEUakHEAPwKAAAgACACKAIQNgJYIAAgAikDCDcDUCAAIA43A0ggACADNgIACyACQZAGaiQAC+wFAQd/AkACQAJAIAAoAhQiAUF/Rg0AIAFFDQAgACgCGCIEQQRrKAIAIgJBeHEhAyADQQRBCCACQQNxIgIbIAFqSQ0CIAJBAEcgAyABQSdqS3ENASAEELwFCyAAKAIMIQMgACgCECIEBEAgAyEBA0ACQCABKAIAIgJBf0YNACACRQ0AIAFBBGooAgAiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyACakkNBCAFQQBHIAYgAkEnaktxDQMgBxC8BQsgAUEMaiEBIARBAWsiBA0ACwsgACgCCCIEBEAgA0EEaygCACICQXhxIQEgASAEQQxsIgRBBEEIIAJBA3EiAhtqSQ0CIAJBAEcgASAEQSdqS3ENASADELwFCwJAIAAoAgBFBEAgACgCBCIEEMoBIARBBGsoAgAiAEEDcSEBIABBeHFBlAJBmAIgARtJDQMgAUUNASAAQbgCSQ0BDAILIAAoAgQiBCgCBCEAIAQoAggiAwRAIAAhAQNAIAEQygEgAUGQAmohASADQQFrIgMNAAsLIAQoAgAiAwRAIABBBGsoAgAiAkF4cSEBIAEgA0GQAmwiA0EEQQggAkEDcSICG3JJDQMgAkEARyABIANBJ2pLcQ0CIAAQvAULIAQoAgwiAARAIAQoAhAiA0EEaygCACICQXhxIQEgAUEEQQggAkEDcSICGyAAakkNAyACQQBHIAEgAEEnaktxDQIgAxC8BQsgBCgCHCEAIAQoAiAiAwRAIAAhAQNAIAEQ9wUgAUEgaiEBIANBAWsiAw0ACwsgBCgCGCIDBEAgAEEEaygCACICQXhxIQEgASADQQV0IgNBBEEIIAJBA3EiAhtySQ0DIAJBAEcgASADQSdqS3ENAiAAELwFCyAEQQRrKAIAIgFBeHEhACAAQShBLCABQQNxIgEbSQ0CIAFFDQAgAEHMAE8NAQsgBBC8BQ8LQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC8gGAgh/AX4CQAJAAkAgACgCICIGRQ0AIAAoAiwiASAAKAIkIgdrQQxuIQggASAHRwRAA0AgByAEQQxsaiIFKAIEIQMgBSgCCCICBEAgAyEBA0AgARD0BCABQcgBaiEBIAJBAWsiAg0ACwsgBSgCACICBEAgA0EEaygCACIFQXhxIQEgASACQcgBbCICQQRBCCAFQQNxIgUbakkNBCAFQQBHIAEgAkEnaktxDQUgAxC8BQsgBEEBaiIEIAhHDQALCyAAKAIoIgJFDQAgBkEEaygCACIDQXhxIQEgASACQQxsIgJBBEEIIANBA3EiAxtqSQ0BIANBAEcgASACQSdqS3ENAiAGELwFCwJAIAAoAjAiA0UNACAAKAI8IgQgACgCNCIBa0HIAW4hAiABIARHBEADQCABEPQEIAFByAFqIQEgAkEBayICDQALCyAAKAI4IgJFDQAgA0EEaygCACIEQXhxIQEgASACQcgBbCICQQRBCCAEQQNxIgQbakkNASAEQQBHIAEgAkEnaktxDQIgAxC8BQsCQCAAKAJAIgNFDQAgACgCTCIEIAAoAkQiAWtByAFuIQIgASAERwRAA0AgARD0BCABQcgBaiEBIAJBAWsiAg0ACwsgACgCSCICRQ0AIANBBGsoAgAiBEF4cSEBIAEgAkHIAWwiAkEEQQggBEEDcSIEG2pJDQEgBEEARyABIAJBJ2pLcQ0CIAMQvAULAkAgACgCBCIERQ0AIAAoAgwiBgRAIAAoAgAiAUEIaiECIAEpAwBCf4VCgIGChIiQoMCAf4MhCQNAIAlQBEADQCACIgNBCGohAiABQcAMayEBIAMpAwBCgIGChIiQoMCAf4MiCUKAgYKEiJCgwIB/UQ0ACyAJQoCBgoSIkKDAgH+FIQkLIAEgCXqnQQN2Qbh+bGpByAFrEPQEIAlCAX0gCYMhCSAGQQFrIgYNAAsLIARByAFsIgIgBGpB0QFqIgFFDQAgACgCACACayICQcwBaygCACIDQXhxIQAgAEEEQQggA0EDcSIDGyABakkNASADQQBHIAAgAUEnaktxDQIgAkHIAWsQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL0QgBA38gAkEEaiEEAkACQAJAAkACQAJAAkAgAigCAEEBaw4DAQIDAAsCQAJAAkACQAJAIAEoAgBBAWsOAwQBAgALQcwAEJABIgNFDQkgA0EANgIAIANBBGogBEHIAPwKAABBGBCQASICDQIMCAtB+OTIAEHdAEGo5cgAEL8TAAtBuOXIAEHfAEHo5cgAEL8TAAsgAkEBNgIUIAIgAzYCECACQQE2AgwgAUEBNgIAIAIgAUEEaiIEKAIINgIIIAIgBCkCADcCACABIAI2AgQMBAsgASgCBCICKAIUIgMgAigCDEYEQCACQQxqEKsSCyACKAIQIANBzABsaiIFQQA2AgAgBUEEaiAEQcgA/AoAACACIANBAWo2AhQMAwsCQAJAAkACQAJAIAEoAgBBAWsOAwQBAgALQcwAEJABIgNFDQggA0EBNgIAIANBBGogBEHIAPwKAABBGBCQASICDQIMBwtB+OfIAEHbAEGo6MgAEL8TAAtBuOjIAEHdAEHo6MgAEL8TAAsgAkEBNgIUIAIgAzYCECACQQE2AgwgAUEBNgIAIAIgAUEEaiIEKAIINgIIIAIgBCkCADcCACABIAI2AgQMAwsgASgCBCICKAIUIgMgAigCDEYEQCACQQxqEKsSCyACKAIQIANBzABsaiIFQQE2AgAgBUEEaiAEQcgA/AoAACACIANBAWo2AhQMAgsCQAJAAkACQAJAIAEoAgBBAWsOAwQBAgALQcwAEJABIgNFDQcgA0ECNgIAIANBBGogBEHIAPwKAABBGBCQASICDQIMBgtB+OXIAEHdAEGo5sgAEL8TAAtBuObIAEHfAEHo5sgAEL8TAAsgAkEBNgIUIAIgAzYCECACQQE2AgwgAUEBNgIAIAIgAUEEaiIEKAIINgIIIAIgBCkCADcCACABIAI2AgQMAgsgASgCBCICKAIUIgMgAigCDEYEQCACQQxqEKsSCyACKAIQIANBzABsaiIFQQI2AgAgBUEEaiAEQcgA/AoAACACIANBAWo2AhQMAQsCQAJAAkACQAJAIAEoAgBBAWsOAwQBAgALQcwAEJABIgNFDQYgA0EDNgIAIANBBGogBEHIAPwKAABBGBCQASICDQIMBQtB+ObIAEHbAEGo58gAEL8TAAtBuOfIAEHdAEHo58gAEL8TAAsgAkEBNgIUIAIgAzYCECACQQE2AgwgAUEBNgIAIAIgAUEEaiIEKAIINgIIIAIgBCkCADcCACABIAI2AgQMAQsgASgCBCICKAIUIgMgAigCDEYEQCACQQxqEKsSCyACKAIQIANBzABsaiIFQQM2AgAgBUEEaiAEQcgA/AoAACACIANBAWo2AhQLIAAgASgCMDYCMCAAIAEpAig3AiggACABKQIgNwIgIAAgASkCGDcCGCAAIAEpAhA3AhAgACABKQIINwIIIAAgASkCADcCAA8LQbjwyQBBAToAAAALQbjwyQBBAToAAAAL0wgCBn8BfiMAQTBrIgMkAAJAAkACQAJAAkACQAJAIAEoAhRFDQAgASgCECIHKAJoIgBFDQIgA0EQaiAAIAdB7ABqKAIAIgQoAghBAWtBeHFqQQhqIgggBCgCDBECACADKQMQQt2GlbWtxJD3U4UgAykDGELCyNi24MuMgiaFhEIAUg0BAkAgASgCCCIFRQ0AIAEoAgQhACAFQQNxIQZBACEEAkAgBUEETwRAIAVBfHEhBSAAIQEDQCABQQhqKQMAQgAgASgCABsgCYQgAUGYAWopAwBCACABQZABaigCABuEIAFBqAJqKQMAQgAgAUGgAmooAgAbhCABQbgDaikDAEIAIAFBsANqKAIAG4QhCSABQcAEaiEBIAUgBEEEaiIERw0ACyAGRQ0BCyAAIARBkAFsaiEBA0AgAUEIaikDAEIAIAEoAgAbIAmEIQkgAUGQAWohASAGQQFrIgYNAAsLIAlCgICAgIABg1ANACAIKAIAQX9HDQBBChCQASIERQ0EIARB/a7FAC8AADsACCAEQfWuxQApAAA3AABBERCQASIBRQ0FIAFBj6/FAC0AADoAECABQYevxQApAAA3AAggAUH/rsUAKQAANwAAIANBADYCECADQZCvxQBBL0G/r8UAQdMAIANBEGoQ7AMgAigCCCIFIAIoAgBGBEAgAhCgEgsgAigCBCAFQagCbGoiAEF+NgIYIABBADYCECAAQoGAgIAgNwMIIABCgYCAgNAANwMAIAAgAykDADcDMCAAIAMoAgg2AjggAEGCBDsBoAIgAEF+NgL0ASAAQX82AugBIABBfzYC3AEgAEF/NgK4ASAAQpGAgIBwNwOoASAAIAE2AqQBIABBETYCoAEgAEF/NgKUASAAQX82AogBIABCioCAgHA3A3ggACAENgJ0IABBCjYCcCAAQX82AlAgAEEBOgA8IAIgBUEBajYCCAsgBygCAA0AQQcQkAEiAUUNBSABQeWixQAoAAA2AAMgAUHiosUAKAAANgAAQQ4QkAEiBEUNBiAEQfatxQApAAA3AAYgBEHwrcUAKQAANwAAIANBADYCECADQf6txQBBH0GdrsUAQdgAIANBEGoQ7AMgAigCCCIFIAIoAgBGBEAgAhCgEgsgAigCBCAFQagCbGoiAEF+NgIYIABBADYCECAAQoGAgIAgNwMIIABCgYCAgNAANwMAIAAgAykDADcDMCAAIAMoAgg2AjggAEGCBDsBoAIgAEF+NgL0ASAAQX82AugBIABBfzYC3AEgAEF/NgK4ASAAQo6AgIBwNwOoASAAIAQ2AqQBIABBDjYCoAEgAEF/NgKUASAAQX82AogBIABCh4CAgHA3A3ggACABNgJ0IABBBzYCcCAAQX82AlAgAEEBOgA8IAIgBUEBajYCCAsgA0EwaiQADwtB/KLFABCdFQALQZjBxQAQnRUAC0EBEKcUAAtBARCnFAALQQEQpxQAC0EBEKcUAAvaCAEHfyMAQYABayICJAACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQCABLQA4RQRAIAEtAABBAWsOAgIDAQsgAS0AACIIQQFrDgIEBQMLIAJBADYCYCACQoCAgIAQNwJYIAJB8IfIADYCHCACQqCAgIAGNwIgIAIgAkHYAGo2AhggAUEUaiACQRhqED4NBiAAIAIoAmA2AgggACACKQJYNwIADAsLIAJBADYCYCACQoCAgIAQNwJYIAJB8IfIADYCHCACQqCAgIAGNwIgIAIgAkHYAGo2AhggAUEQaiACQRhqED4NBiAAIAIoAmA2AgggACACKQJYNwIADAoLIAJBADYCICACQoCAgIAQNwIYIAJBGGpBACABLQABQQJ0IgMoArzNSSIBQQFBARCzESACKAIgIQQgAQRAIAIoAhwgBGogAygC7M1JIAH8CgAACyAAIAEgBGo2AgggACACKQIYNwIADAkLIAJBGGogAUEEahCgByACIAIpAiQ3A1ggAiACKQIsNwNgIAIgAikCNDcDaCACIAIpAjw3A3AgAiACLwBFOwFUIAIgAi0ARzoAViACKAIcIQUgAigCGCEGIAItAEQhByACKAJIIQQgAigCIAwCCyACQRhqIAFBEGoQowEgAS0AMCEHIAEoAjQiBCgCACEDIAQgA0EBajYCACADQQBIDQQgAiACKQIYNwNYIAIgAikCIDcDYCACIAIpAig3A2ggAiACKQIwNwNwIAEoAgQhBiABKAIIIQUgASgCDAwBCyACIAEtAAM6AH4gAiABLwABOwF8IAIgASkCEDcDWCACIAEpAhg3A2AgAiABKQIgNwNoIAIgASkCKDcDcCACIAEvADE7AVQgAiABLQAzOgBWIAEoAgQhBiABKAIIIQUgAS0AMCEHIAEoAjQhBCABKAIMCyEDIAIgCDoAGCACQQA6AFAgAiACLwF8OwAZIAIgAi0AfjoAGyACIAM2AiQgAiAFNgIgIAIgBjYCHCACIAIpA1g3AiggAiACKQNgNwIwIAIgAikDaDcCOCACIAIpA3A3AkAgAiAHOgBIIAIgBDYCTCACIAItAFY6AEsgAiACLwFUOwBJIAJBDGoiASACQRhqEPsFIAIgAa1CgICAgMAChDcDWCAAQe/KwQAgAkHYAGoQuAwgAigCDCIABEAgAigCECIEQQRrKAIAIgNBeHEhASABQQRBCCADQQNxIgMbIABqSQ0EIANBAEcgASAAQSdqS3ENBSAEELwFCwJAAkAgAi0AGA4CAAEHCyACQRxqEOIIDAYLIAJBKGoQwwIgAigCTCIBKAIAIQAgASAAQQFrNgIAIABBAUcNBSACQcwAahC2CAwFC0HwtckAQTcgAkH/AGpBiIjIAEGotskAENoSAAtB8LXJAEE3IAJB/wBqQYiIyABBqLbJABDaEgsAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgAkGAAWokAAvzBwEHfyMAQdAAayIDJAACQAJAAkACQCABKAIAIgRBA0YEQCABKAIMIQIgASgCCCEBDAELAn8CfwJ/AkACQAJAAkACQAJAQQMgBEECayAEQQFNG0EBaw4FAQIDBAUACyADQQA2AgggA0KAgICAEDcCACADQczsxAA2AjQgA0KggICABjcCOCADIAM2AjAgASADQTBqEMgCDQsgAygCCCEFIAMoAgQhBCADKAIAIQZB1c7FACEHQQcMBgsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0KIAMoAgghBSADKAIAIQZBs9HFACEHIAMoAgQMBAsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0JIAMoAgghBSADKAIEIQQgAygCACEGQbClxQAhB0EHDAQLIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINCCADKAIIIQUgAygCBCEEIAMoAgAhBkG3pcUAIQdBCiEIQTQMBAsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0HIAMoAgghBSADKAIEIQQgAygCACEGQbycyAAhB0EFDAILIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINBiADKAIIIQUgAygCACEGQbysyQAhByADKAIECyEEQQYLIQhBEAshCSADIAU2AiwgAyAENgIoIAMgCDYCJCADIAc2AiAgA0EGNgIcIANBs9HFADYCGCADIANBKGqtQoCAgIDQAYQ3A0AgAyADQSBqrUKAgICA0AGENwM4IAMgA0EYaq1CgICAgNABhDcDMCADQf72wQAgA0EwahC4DCADIAEgCWoiASkCADcCDCADIAEoAgg2AhQgAigCCCIBIAIoAgBGBEAgAhC9EgsgAiABQQFqNgIIIAIoAgQgAUEYbGoiASADKQIANwIAIAEgAykCCDcCCCABIAMpAhA3AhBBACEBIAYEQCAEQQRrKAIAIgJBeHEhBSAFQQRBCCACQQNxIgIbIAZqSQ0CIAJBAEcgBSAGQSdqS3ENAyAEELwFCwsgACACNgIEIAAgATYCACADQdAAaiQADwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQfC1yQBBNyADQc8AakHk7MQAQai2yQAQ2hIAC/MHAQd/IwBB0ABrIgMkAAJAAkACQAJAIAEoAgAiBEEERgRAIAEoAgwhAiABKAIIIQEMAQsCfwJ/An8CQAJAAkACQAJAAkBBAyAEQQJrIARBAU0bQQFrDgUBAgMEBQALIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINCyADKAIIIQUgAygCBCEEIAMoAgAhBkHVzsUAIQdBBwwGCyADQQA2AgggA0KAgICAEDcCACADQczsxAA2AjQgA0KggICABjcCOCADIAM2AjAgASADQTBqEMgCDQogAygCCCEFIAMoAgAhBkGz0cUAIQcgAygCBAwECyADQQA2AgggA0KAgICAEDcCACADQczsxAA2AjQgA0KggICABjcCOCADIAM2AjAgASADQTBqEMgCDQkgAygCCCEFIAMoAgQhBCADKAIAIQZBsKXFACEHQQcMBAsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0IIAMoAgghBSADKAIEIQQgAygCACEGQbelxQAhB0EKIQhBNAwECyADQQA2AgggA0KAgICAEDcCACADQczsxAA2AjQgA0KggICABjcCOCADIAM2AjAgASADQTBqEMgCDQcgAygCCCEFIAMoAgQhBCADKAIAIQZBvJzIACEHQQUMAgsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0GIAMoAgghBSADKAIAIQZBvKzJACEHIAMoAgQLIQRBBgshCEEQCyEJIAMgBTYCLCADIAQ2AiggAyAINgIkIAMgBzYCICADQQg2AhwgA0G85MQANgIYIAMgA0Eoaq1CgICAgNABhDcDQCADIANBIGqtQoCAgIDQAYQ3AzggAyADQRhqrUKAgICA0AGENwMwIANB/vbBACADQTBqELgMIAMgASAJaiIBKQIANwIMIAMgASgCCDYCFCACKAIIIgEgAigCAEYEQCACEL0SCyACIAFBAWo2AgggAigCBCABQRhsaiIBIAMpAgA3AgAgASADKQIINwIIIAEgAykCEDcCEEEAIQEgBgRAIARBBGsoAgAiAkF4cSEFIAVBBEEIIAJBA3EiAhsgBmpJDQIgAkEARyAFIAZBJ2pLcQ0DIAQQvAULCyAAIAI2AgQgACABNgIAIANB0ABqJAAPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB8LXJAEE3IANBzwBqQeTsxABBqLbJABDaEgAL9QgCCX8BfiMAQfACayICJAACQAJAAkACQCABKAIEIgQgASgCDEcEQCABKAIUIQMgASAEQRRqNgIEIAIgBCgCEDYCWCACIAQpAgg3A1AgAiAEKQIANwNIIAEoAhAhASACQQhqIAJByABqEPAOIAJBiAJqIgQgAUEQaiACKAIIIAIoAgwQqQQgAigCiAJBf0YNAyACQcABaiIBIARByAD8CgAAIAJBgAFqIAEQ2gEgAiACKACBATYCeCACIAIoAIQBNgB7IAIgAigAiQE2AnAgAiACKACMATYAcyACIAIoAJEBNgJoIAIgAigAlAE2AGsgAi0AgAEhBCACLQCIASEGIAItAJABIQcgAi0AmAEhCCACKAKwASEBIAIgAigAnAE2AGMgAiACKACZATYCYCABQX9GDQEgAiACKAChATYCICACIAIoAKQBNgAjIAIgAikCtAE3AxAgAiACKAK8ATYCGCACIAIoAng2AkAgAiACKAB7NgBDIAIgAigCcDYCOCACIAIoAHM2ADsgAi0AoAEhCSACKQOoASELIAIgAigAazYAMyACIAIoAmg2AjAgAiACKABjNgArIAIgAigCYDYCKCACKAJYIgooAgAhBSAKIAVBAWs2AgAgBUEBRgRAIAIoAlgQMAsgAygCMEF/RwRAIAMQjQMLIAMgBDoAACADIAIoAkA2AAEgAyACKABDNgAEIAMgBjoACCADIAIoAjg2AAkgAyACKAA7NgAMIAMgBzoAECADIAIoAjA2ABEgAyACKAAzNgAUIAMgCDoAGCADIAIoAig2ABkgAyACKAArNgAcIAMgCToAICADIAE2AjAgAyALNwMoIAMgAigCIDYAISADIAIoACM2ACQgAyACKQMQNwI0IAMgAigCGDYCPAsgAEH/AToAAAwBCyACIAIoAng2AugCIAIgAigAezYA6wIgAiACKAJwNgLgAiACIAIoAHM2AOMCIAIgAigCaDYC2AIgAiACKABrNgDbAiACIAIoAmA2AtACIAIgAigAYzYA0wIgAigCWCIBKAIAIQMgASADQQFqNgIAIANBAEgNAiACIAIoAOsCNgA7IAIgAigC6AI2AjggAiACKALgAjYCMCACIAIoAOMCNgAzIAIgAigC2AI2AiggAiACKADbAjYAKyACIAIoAtACNgIgIAIgAigA0wI2ACMgAigCSCEDIAEgASgCACIFQQFrNgIAIAIgAigCVDYCGCACIAIpAkw3AxAgBUEBRgRAIAIoAlgQMAsgACACKABDNgAMIAAgAigCQDYACSAAIAIoAjg2ABEgACACKAA7NgAUIAAgAigCMDYAGSAAIAIoADM2ABwgACACKAIoNgAhIAAgAigAKzYAJCAAIAIoAiA2ACkgACACKAAjNgAsIAAgAigCGDYCRCAAIAIpAxA3AjwgACABrTcDSCAAIAM2AjggACAIOgAoIAAgBzoAICAAIAY6ABggACAEOgAQIABBADoACCAAQQM6AAALIAJB8AJqJAAPC0Gck8YAEJ0VCwALoggBBn8jAEHgAmsiAyQAIAIoAhAiBSgCACEEIAUgBEEBajYCAAJAAkACQAJAAkAgBEEASA0AIAMgBTYCiAIgAyACKQIINwOAAiADIAIpAgA3A/gBIANBCGogASADQfgBaiIGEOwMIAUgBSgCACIEQQFqNgIAIARBAEgNACADIAU2AuABIAMgAikCCDcD2AEgAyACKQIANwPQASAGIANB0AFqIgQQ8QogBBDOECEHIAMgAygCgAI2AfQBIAMgAykC+AE3AewBIAMgBzoAtQIgA0ELOgC0AiADIAMpAeoBNwG2AiADIAMpAfABNwG8AiADQQA6ANQCIANBfzYCiAIgA0GYAmogBBDxCiADQoGAgIAQNwKAAiADQQE2ApQCIANBAjYCpAIgA0KBgICAEDcC+AECQEEYEJABIgQEQCAEIAMoAuABNgIQIAQgAykD2AE3AgggBCADKQPQATcCACAEIAE2AhRBGBCQASIBRQ0GIAFBADoAFCABQYTpxwA2AgwgASAENgIIIAFCgYCAgBA3AgAgAyABNgLYAiADQewAaiAGQeQA/AoAAEHIARCQASIBRQ0GAkACQAJAAkACQEEDIAMoAggiBEECayAEQQFNG0EBaw4DAQIDAAsgA0H4AWogA0EIakHkAPwKAAAMAwsgA0H8AWogA0EMahCgByADQQM2AvgBDAILQeQAEJABIgRFDQMgAygCDCAEELgPIANBBDYC+AEgAyAENgL8AQwBCyADQfgBaiADQQhqEOQFCyABIANB7ABqQeQA/AoAACABQeQAaiADQfgBaiIEQeQA/AoAACADQQI2AtgBIAMgATYC1AEgA0ECNgLQASACEK0QIgYEQCAEIANBCGpB5AD8CgAAQeQAEJABIgFFDQcgASAEQeQA/AoAACADQdABahCYEiADKALUASIEIAE2AswBIARBBDYCyAEgA0EDNgLYAQsgAyACEPAOIAMoAgQiAUEASA0DQQEhBAJAIAFFIgcNACADKAIAIQggARCQASIERQ0FIAcNACAEIAggAfwKAAALIAMgAygC2AE2AqACIAMgAykC0AE3A5gCIAMgATYCuAIgAyAENgK0AiADIAE2ArACIANBfjYC+AEgA0EBOwG8AiADQQA2AqwCIANCgICAgMAANwKkAgJAIAIQrhBFDQAgAhCtEA0AIAMoAqACIgEgAygCmAJGBEAgA0GYAmoQmBILIAMoApwCIAFB5ABsaiIEQQA6AAQgBEECNgIAIAMgAUEBajYCoAILIAAgA0H4AWpByAD8CgAAIABBADoARCAG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QaCryQBBKEHwisgAEK8UCwALIAUgAUGkjcgAEIUTAAtBoKvJAEEoQbSNyAAQrxQACyAHIAFBhI3IABCFEwALQaCryQBBKEGUjcgAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAYgBigCAEEBayIBNgIAIAFFBEAgBhCBEAsgCCAIKAIAQQFrIgE2AgAgAUUEQCAIEPYPCyAEQX9GBEBBkJzIABCdFQALIAAgAykDUDcCOCAAIAMpA0g3AjAgACADKQIMNwIAIAAgAykCFDcCCCAAIAMpAhw3AhAgACADKQIkNwIYIAAgAykCLDcCICAAQQA2AkggACAPNgJEIAAgDjYCQCAAIAw2AiwgACAENgIoIANB8ABqJAAL/QcBB38jAEHQAGsiAyQAAkACQAJAAkACQAJ/IAEoAgAiBEEBTQRAIAAgASkCNDcCECAAIAEoAjw2AhggASgCGCECIAEoAhQhBSABKAIwIQQgASgCLAwBC0EEIQUgBEEERw0BIAAgASkCEDcCECAAIAEoAhg2AhggASgCDCEEQQAhAiABKAIICyEBIAAgAjYCDCAAIAU2AgggACAENgIEDAELIABBADYCAAJ/An8CfwJAAkACQAJAAkACQCAEQQNrDgUCAAMEBQELAAsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0KIAMoAgghBiADKAIEIQQgAygCACEFQdXOxQAhB0EHDAULIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINCSADKAIIIQYgAygCBCEEQbPRxQAhByADKAIADAMLIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAGNwI4IAMgAzYCMCABIANBMGoQyAINCCADKAIIIQYgAygCBCEEIAMoAgAhBUG3pcUAIQdBCiEIQTQMBAsgA0EANgIIIANCgICAgBA3AgAgA0HM7MQANgI0IANCoICAgAY3AjggAyADNgIwIAEgA0EwahDIAg0HIAMoAgghBiADKAIEIQQgAygCACEFQbycyAAhB0EFDAILIANBADYCCCADQoCAgIAQNwIAIANBzOzEADYCNCADQqCAgIAG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NgJsIAIgBjYCaCACQoCAgIAQNwJgIAEgBCACQeAAaiADEPkICyADRQ0CAkAgAS0AkQFBAkcNACABKAIAQQFGBEAgASgCBCIDIAEoAggiBE8NBCABIANBAWoiBjYCBCAEIAZNDQEgASADQQJqNgIECyABQQA6AJEBIAJBIGogARCUCiACKAIgIAIoAiQiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAyABKAIITw0CIAEgA0EBajYCBAsCQCABLQCRASIDRQRAIAJBEGogARCUCiACKAIUIQEgAigCECEEDAELIAFBADoAkQEgAkEYaiABEJQKIAIoAhghBCACKAIcIgEgAzoAkQELIARBAXFFDQALCyACQQhqIAEQQCACKAIMIQEgAigCCAwDCyABIAIoAkg2AogBIAEgAikDQDcCgAFBASEEDAQLQQEQpxQAC0EBCyIEQQFHDQIgASACKAJYNgKIASABIAIpA1A3AoABIAUgASgCFCIDSw0AIAEgBTYCFCAFIQMLIAEgAigCSDYCiAEgASACKQNANwKAASADIAdJDQELIAEgBzYCFAsgACAENgIAIAAgATYCBCACQfAAaiQAC94HAQZ/IwBB8ABrIgIkAAJAAkACQAJ/AkACQAJAAkACQAJAIAEoAgBBAUYEQCABKAIEIgMgASgCCCIFSQ0BQQEhBAwKCyABKAIUIQcgAiABKAKIATYCSCACIAEpAoABNwNAIAEtAJEBQQJGDQEMAgsgASADQQFqIgQ2AgQgASgCFCEHIAIgASgCiAE2AkggAiABKQKAATcDQCABLQCRAUECRw0BIAQgBU8NAiABIANBAmoiBDYCBCAEIAVPDQEgASADQQNqNgIECyABQQA6AJEBIAJBOGogARCUCiACKAI4IAIoAjwiAUECOgCRAUEBcQ0AA0AgASgCAEEBRgRAIAEoAgQiAyABKAIITw0CIAEgA0EBajYCBAsCQCABLQCRASIDRQRAIAJBKGogARCUCiACKAIsIQEgAigCKCEEDAELIAFBADoAkQEgAkEwaiABEJQKIAIoAjAhBCACKAI0IgEgAzoAkQELIARBAXFFDQALCyABKAIAQQFGBEAgASgCBCIDIAEoAghPBEAgASgCFCEDQQEhBAwGCyABIANBAWo2AgQLIAEoAhQhBSACIAEoAogBIgQ2AlggAiAB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NwNQIAIgBEEUaikCADcDMCACIARBHGopAgA3AzggAiAEQSRqKQIANwNAIAIgBEEsaigCADYCSCADIQUMAwsCQCAEQQhqKAIAIgNFBEBBASEFDAELIARBBGooAgAhBCADEJABIgVFDQcgA0UNACAFIAQgA/wKAAALIAIgAzYCWCACIAU2AlQgAiADNgJQQYOAgIB4IQUMAgsgAkHQAGogBEEEaigCACAEQQhqKAIAEPYIQYSAgIB4IQUMAQsgAkHgAGogBBCZBiACIAIpA2g3A1ggAiACKQNgNwNQIAIgCSkCADcDMCACIAkpAgg3AzggAiAJKQIQNwNAIAIgCSgCGDYCSCACKAJwIQULIAIgAikDWCIPNwMoIAIgAikDUCIQNwMgIAIgAikDMCIRNwNgIAIgAikDOCISNwNoIAIgAikDQCITNwNwIAIgAigCSCIENgJ4IAogDGoiAyAPNwMIIAMgEDcDACADQRBqIAU2AgAgA0EUaiARNwIAIANBHGogEjcCACADQSRqIBM3AgAgA0EsaiAENgIAIANBPGogBzYCACADQThqIAs2AgAgA0E0aiAHNgIAIANBMGogDjYCACAKQUBrIQogBkEBaiEGIAhBAWsiCA0ACwsgACACKQIENwIQIAAgAikCFDcCICAAIAIoAhw2AiggAiAGNgIMIAAgAikCDDcCGCAAIAEpAwg3AwggACABKQMANwMAIAJBkAFqJAAPC0EBEKcUAAtBARCnFAALqggCBH8CfiMAQfABayIDJAACQAJAAkACQAJAIAEoAggiBgRAIAMgASgCBCIFIAZBA3RqQQhrNgKIASADIAKtQoCAgIDAAoQ3A8ABIAMgA0GIAWqtQoCAgICgAoQ3A7gBIANBDGpB0pTCACADQbgBahC4DCADAn5B0PDJAC0AAARAQcjwyQApAwAhCEHA8MkAKQMADAELIANBuAFqELsRQdDwyQBBAToAAEHI8MkAIAMpA8ABIgg3AwAgAykDuAELIgc3AxhBwPDJACAHQgF8NwMAIANBADYCMCADQoCAgICAATcDKCADIAg3AyAgA0GQqckAKQMANwI0IANBmKnJACkDADcCPEEKEJABIgRFDQEgBEGHsckALwAAOwAIIARB/7DJACkAADcAACADQQo2AoQBIAMgBDYCgAEgA0EKNgJ8IANBuAFqIgQgAhCLAyAD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CyAEKAIIIAQoAgwhEhCnFAALgAgBBX8jAEEgayICJAACQAJAAkACQAJAQRogACgCACIEKAIAIgAgAEEaTBtBG2sOAwECAwALQQEhACABKAIAIgNBoZLJAEEIIAEoAgQiBigCDCIFEQAADQMCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQUgBCABEIIMRQ0BDAULIANBnePCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqEIIMDQQgAigCEEGkssgAQQIgAigCFCgCDBEAAA0ECyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAwtBASEAIAEoAgAiA0GpkskAQQ0gASgCBCIGKAIMIgURAAANAiAEQQRqIQQCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQQgBCABEM0IRQ0BDAQLIANBnePCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqEM0IDQMgAigCEEGkssgAQQIgAigCFCgCDBEAAA0DCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAgtBASEAIAEoAgAiA0G2kskAQQwgASgCBCIGKAIMIgURAAANASAEQQRqIQQCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQMgBCABEM0IRQ0BDAMLIANBnePCAEECIAURAAANAiACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqEM0IDQIgAigCEEGkssgAQQIgAigCFCgCDBEAAA0CCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAQtBASEAIAEoAgAiA0HCkskAQQcgASgCBCIGKAIMIgURAAANAAJAIAEtAApBgAFxRQRAIANBtM/FAEEBIAURAAANAiAELQAEQQFGBEAgAUGvssgAQQQQnQRFDQIMAwsgAUGqssgAQQUQnQRFDQEMAgsgA0Gd48IAQQIgBREAAA0BIAIgBjYCBCACIAM2AgAgAkEBOgAPIAJBoOvCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAQtAAQhACACIAI2AhACQAJAIABBAUYEQCACQRBqQa+yyABBBBCdBA0BDAILIAJBEGpBqrLIAEEFEJ0ERQ0BC0EBIQAMAgtBASEAIAJBpLLIAEECEP0IDQELIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAALgAgBBX8jAEEgayICJAACQAJAAkACQAJAQRogACgCACIEKAIAIgAgAEEaTBtBG2sOAwECAwALQQEhACABKAIAIgNBoZLJAEEIIAEoAgQiBigCDCIFEQAADQMCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQUgBCABELYLRQ0BDAULIANBnePCAEECIAURAAANBCACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqELYLDQQgAigCEEGkssgAQQIgAigCFCgCDBEAAA0ECyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAwtBASEAIAEoAgAiA0GpkskAQQ0gASgCBCIGKAIMIgURAAANAiAEQQRqIQQCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQQgBCABEM4IRQ0BDAQLIANBnePCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqEM4IDQMgAigCEEGkssgAQQIgAigCFCgCDBEAAA0DCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAgtBASEAIAEoAgAiA0G2kskAQQwgASgCBCIGKAIMIgURAAANASAEQQRqIQQCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQMgBCABEM4IRQ0BDAMLIANBnePCAEECIAURAAANAiACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBCACQRBqEM4IDQIgAigCEEGkssgAQQIgAigCFCgCDBEAAA0CCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAQtBASEAIAEoAgAiA0HCkskAQQcgASgCBCIGKAIMIgURAAAN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EKMVAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQaCryQBBKEGUu8UAEK8UAAsgAEEFNgIUIABBj7vFADYCECAAQoOAgIBwNwIIIABBjLvFADYCBCAAQX82AgALAkAgBEUNACAEIAQoAgAiAEEBazYCACAAQQFHDQAgBCAFELYQCyAGQeAAaiQADwsgAiADQQIgA0GYuMUAEP0UAAutBwIOfwF+IwBBkARrIgIkACABKAIEIgcgASgCCCIDQegBbGohCCABKAIAIQogByEBAkACQCADRQ0AIABBIGohDCACQYgCaiENIAJBuANqIQ4gAkHhAmohBSACQbcDaiEEIAJB2AJqQQFyIQYgAkEQaiEPAkADQAJAAkACQCABKQMAIhBCf1IEQCACIBA3AwggDyABQQhqQcAB/AoAACACIAFB4AFqKQMANwPoASACIAFB2AFqKQMANwPgASACIAFB0AFqKQMANwPYASACIAFByAFqKQMANwPQASACQbADaiACQQhqEOEIIAIoArgDIQAgAigCtAMhCyACKAKwAyIJQX9GDQEgCyEDDAILIAFB6AFqIQEMBQsgAEEASA0BIABFBEBBASEDQQAhCUEAIQAMAQsgABCQASIDRQ0DIAAEQCADIAsgAPwKAAALIAAhCQsgAiAANgL8ASACIAM2AvgBIAIgCTYC9AECQAJAAkACQAJAQQIgAikDCCIQp0ECayAQQgFYG0EBaw4DAAECAwsgBCACKQPoATcAGCAEIAIpA+ABNwAQIAQgAikD2AE3AAggBCACKQPQATcAACAGIAIpALADNwAAIAYgAikAuAM3AAggBiACKQDAAzcAECAGIAIpAMgDNwAYIAYgAikAzwM3AB8gAkEAOgDYAgwDC0H09sgAQRNB4P3GABCvFAALQfT2yABBE0Hw/cYAEK8UAAsgBCACKQPoATcAGCAEIAIpA+ABNwAQIAQgAikD2AE3AAggBCACKQPQATcAACAFIAIpALADNwAAIAUgAikAuAM3AAggBSACKQDAAzcAECAFIAIpAMgDNwAYIAUgAikAzwM3AB8gAkEBOgDgAiACQf8BOgDYAgsgAkGwA2ogDCACQfQBaiACQdgCahCOBCACQYACaiAOQdgA/AoAAAJAAkACQCACLQCAAkH+AWsOAgIAAQsgDRCMEQwBCyACQYAC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UQRAIAEoAqwBIAEoAqgBayEBIANBfEcNAUEBIQIMBAtBASECIANBfEYNBCADQX1HIQEMAwsgASADQX1HaiIDIAFPIQJBfyADIAEgA0sbIQEMBAtBACEBQQAhAgtBfyADQX1HIgMgAWoiBCABIARLGyEBIAUgAiACIANqIgNNcSECDAILIAEhAwwBC0EAIQFBACEDCyAAIAM2AgggACACNgIEIAAgATYCAAvGCAEBfyABKAIAIQIgASgCBCgCDCEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAQQFrDjcBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3AAsgAkGAqsQAQQcgAREAAA8LIAJBh6rEAEEIIAERAAAPCyACQY+qxABBDCABEQAADwsgAkGbqsQAQQggAREAAA8LIAJBo6rEAEEHIAERAAAPCyACQaqqxABBDCABEQAADwsgAkG2qsQAQQ8gAREAAA8LIAJBxarEAEEOIAERAAAPCyACQdOqxABBDyABEQAADwsgAkHiqsQAQQ0gAREAAA8LIAJB76rEAEEOIAERAAAPCyACQf2qxABBDCABEQAADwsgAkGJq8QAQQ0gAREAAA8LIAJBlqvEAEESIAERAAAPCyACQairxABBDiABEQAADwsgAkG2q8QAQQ8gAREAAA8LIAJBxavEAEEUIAERAAAPCyACQdmrxABBDiABEQAADwsgAkHnq8QAQQ8gAREAAA8LIAJB9qvEAEEUIAERAAAPCyACQYqsxABBECABEQAADwsgAkGarMQAQQwgAREAAA8LIAJBpqzEAEENIAERAAAPCyACQbOsxABBEiABEQAADwsgAkHFrMQAQQwgAREAAA8LIAJB0azEAEENIAERAAAPCyACQd6sxABBEiABEQAADwsgAkHwrMQAQQwgAREAAA8LIAJB/KzEAEENIAERAAAPCyACQYmtxABBEiABEQAADwsgAkGbrcQAQQwgAREAAA8LIAJBp63EAEENIAERAAAPCyACQbStxABBEiABEQAADwsg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CDcCGCAAQQQ2AgAgACABKQMQNwMQIAAgASkDCDcDCAsgAkFAayQADwtBCBCnFAALQQEQpxQAC8YGAQp/IwBB0ABrIgMkACADQcgAaiACKAIAIABBQGsQ2gcgAygCTCEFIAMoAkggA0FAayACKAIAIAAQ2gcgAygCQCEEQQFGBEAgBCAFIAMoAkRJcSEECyADQThqIAIoAgAgAEHAAWoQ2gcgAygCPCEGIAMoAjghCSADQTBqIAIoAgAgAEGAAWoQ2gcgAygCMCEFIANBKGogAigCACAAQcABQYABIAlBAUYEfyAFIAYgAygCNElxBSAFC0EBcSIFG2oiBhDaByADKAIsIQcgAygCKCADQSBqIAIoAgAgACAEQQFxQQZ0aiIKENoHIABBgAFBwAEgBRtqIQkgACAEQX9zQQFxQQZ0aiEFIAMoAiAhBEEBRgRAIAQgByADKAIkSXEhBAsgA0EYaiACKAIAIAkQ2gcgAygCHCEHIAMoAhghCCADQRBqIAIoAgAgBRDaByADKAIQIQAgA0EIaiACKAIAIAkgBSAGIARBAXEiBBsgCEEBRgR/IAAgByADKAIUSXEFIAALQQFxIgcbIggQ2gcgAygCDCEAIAMoAgggAyACKAIAIAogBiAFIAcbIAQbIgsQ2gcgAygCACECQQFGBEAgAiAAIAMoAgRJcSECCyABIAYgCiAEGyIAKQI4NwI4IAEgACkCMDcCMCABIAApAig3AiggASAAKQIgNwIgIAEgACkCGDcCGCABIAApAhA3AhAgASAAKQIINwIIIAEgACkCADcCACABIAggCyACQQFxIgIbIgApAgA3AkAgASAAKQIINwJIIAEgACkCEDcCUCABIAApAhg3AlggASAAKQIgNwJgIAEgACkCKDcCaCABIAApAjA3AnAgASAAKQI4NwJ4IAEgCyAIIAIbIgApAgA3AoABIAEgACkCCDcCiAEgASAAKQIQNwKQASABIAApAhg3ApgBIAEgACkCIDcCoAEgASAAKQIoNwKoASABIAApAjA3ArABIAEgACkCODcCuAEgASAFIAkgBxsiACkCODcC+AEgASAAKQIwNwLwASABIAApAig3AugBIAEgACkCIDcC4AEgASAAKQIYNwLYASABIAApAhA3AtABIAEgACkCCDcCyAEgASAAKQIANwLAASADQdAAaiQAC/oUAhh/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KAIAIQUgCEEEaigCACALQQRqKAIAIAhBCGooAgAiBiAFIAUgBksbEI8TIgIgBiAFayACG0EASCEDIABB+ABBtAEgBBtqIgdBCGooAgAhBCAHIAkgCCADGyAHQQRqKAIAIAlBBGooAgAgBCAJQQhqKAIAIgIgAiAESxsQjxMiACAEIAJrIAAbQQBIIgQbIQogCyAIIAkgBBsgAxsiBUEIaigCACEGIApBBGooAgAgBUEEaigCACAKQQhqKAIAIgIgBiACIAZJGxCPEyEAIAEgCCALIAMbIgMoAjg2AjggASADKQIwNwIwIAEgAykCKDcCKCABIAMpAiA3AiAgASADKQIYNwIYIAEgAykCEDcCECABIAMpAgg3AgggASADKQIANwIAIAEgCiAFIAAgAiAGayAAG0EASCIAGyICKQIANwI8IAEgAikCCDcCRCABIAIpAhA3AkwgASACKQIYNwJUIAEgAikCIDcCXCABIAIpAig3AmQgASACKQIwNwJsIAEgAigCODYCdCABIAUgCiAAGyIAKQIANwJ4IAEgACgCODYCsAEgASAAKQIwNwKoASABIAApAig3AqABIAEgACkCIDcCmAEgASAAKQIYNwKQASABIAApAhA3AogBIAEgACkCCDcCgAEgASAJIAcgBBsiACkCADcCtAEgASAAKQIINwK8ASABIAApAhA3AsQBIAEgACkCGDcCzAEgASAAKQIgNwLUASABIAApAig3AtwBIAEgACgCODYC7AEgASAAKQIwNwLkAQubBgIGfwF+IwBBsAFrIgIkAAJAAkACQAJAAkACQAJAIAAoAgBFBEBBDBCQASIERQ0BIARBwYvGACgAADYACCAEQbmLxgApAAA3AAACQCAAKAIEIgNBf0YNACADRQ0AIAAoAggiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyADakkNAyAFQQBHIAYgA0EnaktxDQQgBxC8BQsgAEEMNgIMIAAgBDYCCCAAQX82AgQgAiAAKQMINwJAIAJBDDYCPCACQQA2AoABIAJCgICAgBA3AngCfwJAAkACQCABQf8BcUEBaw4CAQIACyACQfgAakEAQQpBAUEBELMRIAIoAnwiBCACKAKAASIBaiIDQbzgxgApAAA3AAAgA0HE4MYALwAAOwAIIAFBCmoMAgsgAkH4AGpBAEELQQFBARCzESACKAJ8IgQgAigCgAEiAWoiA0HG4MYAKQAANwAAIANBzeDGACgAADYAByABQQtqDAELIAJB+ABqQQBBDEEBQQEQsxEgAigCfCIEIAIoAoABIgFqIgNB0eDGACkAADcAACADQdngxgAoAAA2AAggAUEMagshASACKAJ4IQMgARCQASIGRQ0EIAEEQCAGIAQgAfwKAAALIAMEQCAEQQRrKAIAIgVBeHEhByAHQQRBCCAFQQNxIgUbIANqSQ0GIAVBAEcgByADQSdqS3ENByAEELwFCyACQYOAgIB4NgJYIAIgATYCUCACIAY2AkwgAiABNgJIIAJB+ABqIABBEGogAkE8aiACQcgAahCfBSACIAIpA6gBNwMwIAIgAikDoAE3AyggAiACKQOYATcDICACIAIpA5ABIgg3AxggAiACKQOIATcDECACIAIpA4ABNwMIIAinQX9HBEAgAkEIahD9CQtBACEADAcLIAJBCjYCeCACQfgAakEAQQAQxxMhAAwGC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQQEQpxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgAkGwAWokACAAC50FAQl/AkACQAJAAkACQAJAIAJBAWsOAwECAwALIAEvAeIBIgpBFGwgBEEUbCIGayECIAEgBmoiAUEMaiEGIAFBBGohASADKAIQIQsgAygCDCEMIAMoAgghCCADKAIEIQ0gAygCACEJQX8hBwJAA0AgAkUNAQJAIAEoAgQiBSANSSAFIA1LayABKAIAIgUgCUkgBSAJS2sgBSAJRhsiBUH/AXENACAGQQRqKAIAIgUgDEkgBSAMS2sgBigCACIFIAhJIAUgCEtrIAUgCEYbIgVB/wFxDQAgBkEIaigCACIFIAtJIAUgC0trIQULIAFBFGohASACQRRrIQIgBkEUaiEGIAdBAWohByAFQQFGDQALIAVB/wFxRQ0EIAQgB2ohCgsgACADNgIIIABBADYCBCAAIAo2AgAPCyABLwHiASIKQRRsIARBFGwiBmshAiABIAZqIgFBDGohBiABQQRqIQEgAygCECELIAMoAgwhDCADKAIIIQggAygCBCENIAMoAgAhCUF/IQcCQANAIAJFDQECQCABKAIEIgUgDUkgBSANS2sgASgCACIFIAlJIAUgCUtrIAUgCUYbIgVB/wFxDQAgBkEEaigCACIFIAxJIAUgDEtrIAYoAgAiBSAISSAFIAhLayAFIAhGGyIFQf8BcQ0AIAZBCGooAgAiBSALSSAFIAtLayEFCyABQRRqIQEgAkEUayECIAZBFGohBiAHQQFqIQcgBUEBRg0ACyAFQf8BcUUNBCAEIAdqIQoLIAAgAzYCCCAAQQE2AgQgACAKNgIADwsgAEECNgIEIAAgAS8B4gE2AgAPCyAAQQM2AgQgACAENgIADwsgAEEDNgIEIAAgBCAHakEBajYCAA8LIABBAjYCBCAAIAQgB2o2AgAL1gUCB38DfiMAQYABayIEJAAgAbwiCEH///8DcSIHQYCAgARyIAhBAXRB/v//B3EgCEEXdkH/AXEiCRsiCq0iC0IBgyEMQQIhBQJAAkACQAJAAkAgB0VBBEEDQQIgBxsgCEGAgID8B3EiBxsgB0GAgID8B0YbQQFrDgQAAQIDBAtBAyEFDAMLQQQhBQwCCyAJQZYBayEGIAxQIQVCASENDAELQoCAgBAgC0IBhiAKQYCAgARGIgYbIQtCAkIBIAYbIQ0gDFAhBUHofkHpfiAGGyAJaiEGCyAEIAY7AXggBCANNwNwIARCATcDaCAEIAs3A2AgBCAFOgB6An8CQAJAAkACQAJAIAVB/wFxQQFNBEAgA0H//wNxIQNBgOLCAEEBIAhBAEgiBRshBkGA4sIAQYHiwgAgBRshBSAIQR92IQggBEEgaiAEQeAAaiAEQQ9qELMDIAQoAiBFDQEgBCAEKAIoNgJYIAQgBCkCIDcDUAwCCyAFQQJrQf8BcSIGRQ0CQQEhBUGA4sIAQYHiwgAgCEEASCIHG0GA4sIAQQEgBxsgAhshB0EBIAhBH3YgAhshAiAGQQJHDQMgBEECOwEgIANB//8DcQ0EIARBATYCKCAEQYjiwgA2AiQgBEEgagwFCyAEQdAAaiAEQeAAaiAEQQ9qEFoLIAUgBiACGyEHQQEgCCACGyECIAQgBCgCUCAEKAJUIAQvAVggAyAEQSBqELkNIAQoAgQhBSAEKAIADAMLIARBAzYCKCAEQYLiwgA2AiQgBEECOwEgQQEhB0EAIQJBASEFIARBIGoMAgsgBEEDNgIoIARBheLCADYCJCAEQQI7ASAgBEEgagwBCyAEQQE2AjAgBEEAOwEsQQIhBSAEQQI2AiggBEGJ4sIANgIkIARBIGoLIQYgBCAFNgJcIAQgBjYCWCAEIAI2AlQgBCAHNgJQIAAgBEHQAGoQjQkgBEGAAWokAAusBQIKfwF+IwBBEGsiCCQAAn9BASABKAIAIgVBqbLIAEEBIAEoAgQiCigCDCIGEQAADQAaIAAoAgQiBwRAIAAoAgAiCSAHaiELIAhBB2qtQoCAgIDALoQhDCAJIQEDQAJ/IAEiAywAACIAQQBOBEAgAEH/AXEhACADQQFqDAELIAMtAAFBP3EhAiAAQR9xIQEgAEFfTQRAIAFBBnQgAnIhACADQQJqDAELIAMtAAJBP3EgAkEGdHIhAiAAQXBJBEAgAiABQQx0ciEAIANBA2oMAQsgAUESdEGAgPAAcSADLQADQT9xIAJBBnRyciEAIANBBGoLIQECQAJAAn8CQAJAAkACQAJAAkACQAJAAkAgAEEJaw4aAgMBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQQACyAAQdwARg0FCyAAQSBJDQUgAEH/AEYNBSAAQYABTw0GQQEMBwsgBUHDssgAQQIgBhEAAEUNCEEBDAsLIAVBv7LIAEECIAYRAABFDQdBAQwKCyAFQbeyyABBAiAGEQAARQ0GQQEMCQsgBUHBssgAQQIgBhEAAEUNBUEBDAgLIAVBubLIAEECIAYRAABFDQRBAQwHCyAIIAA6AAcgCCAMNwMIIAUgCkG4pcgAIAhBCGoQsQlFDQNBAQwGC0ECIABBgBBJDQAaQQNBBCAAQYCABEkbCyIAIAAgBGoiAksNAAJAIARFDQAgBCAHTwRAIAQgB0cNAgwBCyAEIAlqLAAAQb9/TA0BCwJAIAJFDQAgAiAHTwRAIAIgB0YNAQwCCyACIAlqLAAAQUBIDQELIAUgBCAJaiAAIAYRAABFDQFBAQwECyAJIAcgBCACQailyAAQ/RQACyAEIANrIAFqIQQgASALRw0ACwsgBUGpssgAQQEgBhEAAAsgCEEQaiQAC4AGAgJ/AX4jAEEgayIHJAAgByAENgIAIAcgBjYCECAEIAZGBEBBASEIAkAgACgCACABIAIgACgCBCgCDBEAAA0AIAMoAgQhASADKAIAIQIgAC0ACkGAAXEEQCAAKAIAQZrjwgBBAyAAKAIEKAIMEQAADQEgACkCACEJIAdBAToADyAHIAk3AgAgB0Gg68IANgIUIAcgACkCCDcCGCAHIAdBD2o2AgggByAHNgIQIAcgAiABEP0IDQEgB0GmssgAQQIQ/QgNASAFKAIAIAdBEGogBSgCBCgCDBEBAEUEQCAHKAIQQaSyyABBAiAHKAIUKAIMEQAAIQgMAgsMAQsgACgCAEGX48IAQQMgACgCBCgCDBEAAA0AIAAoAgAgAiABIAAoAgQoAgwRAAANACAAKAIAQaayyABBAiAAKAIEKAIMEQAADQAgBSgCACAAIAUoAgQoAgwRAQAhCAsgBEEBayECIANBDGohBCAFQQxqIQYDQAJ/AkAgCEEBcQ0AIAZBBGshASAEQQRrKAIAIQMgBCgCACEFIAAtAApBgAFxRQRAIAAoAgBBiLPJAEECIAAoAgQoAgwRAAANASAAKAIAIAMgBSAAKAIEKAIMEQAADQFBASAAKAIAQaayyABBAiAAKAIEKAIMEQAADQIaIAEoAgAgACAGKAIAKAIMEQEADAILIAApAgAhCSAHQQE6AA8gByAJNwIAIAdBoOvCADYCFCAHIAApAgg3AhggByAHQQ9qNgIIIAcgBzYCECAHIAMgBRD9CA0AIAdBprLIAEECEP0IDQAgASgCACAHQRBqIAYoAgAoAgwRAQANACAHKAIQQaSyyABBAiAHKAIUKAIMEQAADAELQQELIQggBEEIaiEEIAZBCGohBiACQQFrIgINAAsCf0EBIAgNABogAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAAAwBCyAAKAIAQaGyyABBASAAKAIEKAIMEQAACyAHQSBqJAAPCyAHIAdBEGpBuOzCABDEEwALxQUBD38jAEHwAWsiBCQAIAQgAzYCBCAEQQA2AgACQAJAIAIoAogBQX9GIgwNACACKAJ4IglFDQAgAigCkAEiCEHIAWwhDSACKAJ0IgUgCUEGdCIDaiEOIANBQGpBBnZBAWohDyACKAKMASEQAkADQCAFKAIAQRtHDQEgBSgCIA0BIAhFBEBBACEIQQAhBwwCCyAFKAIIIQogDSEGIBAhAwJAIAUoAgQiC0EBcQRAIAUoAhAhESAFKAIMIRIDQAJAIAMpAwBCAlINACADQQhqKAIAIAtHDQAgA0EMaigCACAKRw0AIANBEGooAgAgEkcNACADQRRqKAIAIBFGDQMLIANByAFqIQMgBkHIAWsiBg0ACwwDCwNAAkAgAykDAEICUg0AIANBCGooAgAgC0cNACADQQxqKAIAIApGDQILIANByAFqIQMgBkHIAWsiBg0ACwwCCyAHQQFqIQcgDiAFQUBrIgVHDQALIA8hBwsgByAJIAggCCAJSxtGDQAgACABQZAC/AoAAAwBCwJAIAxFBEAgBCACKAKMASIDNgIIIAQgAyACKAKQAUHIAWxqNgIMIAQgBDYCECAEQSBqIgMgBEEIahCoCAJAIAQoAiBBf0cEQEGAAxCQASICRQ0DIAIgA0HgAPwKAAAgBEEBNgIcIAQgAjYCGCAEQQQ2AhQgBCAEKAIQNgKIASAEIAQpAgg3A4ABQeAAIQZBASEDA0AgBEGQAWogBEGAAWoQqAggBCgCkAFBf0YNAiAEKAIUIANGBEAgBEEUaiADQQFBCEHgABCzESAEKAIYIQILIAIgBmogBEGQAWpB4AD8CgAAIAQgA0EBaiIDNgIcIAZB4ABqIQYMAAsACyAEQQA2AhwgBEKAgICAgAE3AhQLIAAgASAEQRRqEO0NDAILIAAgAUGQAvwKAAAMAQtBCBCnFAALIARB8AFqJAALigYCBH8CfiMAQYAEayIEJAAgASACQRhsaiEFIAQCfkHQ8MkALQAABEBByPDJACkDACEIQcDwyQApAwAMAQsgBEHIAmoQuxFB0PDJAEEBOgAAQcjwyQAgBCkD0AIiCDcDACAEKQPIAgsiCTcDGEEAIQJBwPDJACAJQgF8NwMAIAQgAzYCQCAEIAU2AjwgBCABNgI4IARBADYCMCAEQQA2AiggBCAINwMgIARBkKnJACkDADcDCCAEQZipyQApAwA3AxAgBEHYAGogBEEIahCVBAJAAkACfyAEKALIAUF+RwRAIAQoAjAhBSAEKAIoIQMCQAJAIAQoAjgiAQRAIARByAJqIQIgAw0CIAUNAiAEKAI8IAFGDQEMAgsgBEHIAmohAiADIAVyDQELIARBiAJqIQILIAJBADYCAEHABRCQASIDRQ0CIAMgBEHYAGpBsAH8CgAAIARBATYCVCAEIAM2AlAgBEEENgJMIAQgBCkDQDcDwAIgBCAEKQM4NwO4AiAEIAQpAzA3A7ACIAQgBCkDKDcDqAIgBCAEKQMgNwOgAiAEIAQpAxg3A5gCIAQgBCkDEDcDkAIgBCAEKQMINwOIAkGwASEBQQEhAgNAIARByAJqIARBiAJqEJUEIAQoArgDQX5HBEAgBCgCTCACRgRAIAQoArACIQYgBCgCqAIhBwJAAkAgBCgCuAIiBQRAIARB/ANqIQMgBw0CIAYNAiAEKAK8AiAFRg0BDAILIARB/ANqIQMgBiAHcg0BCyAEQfgDaiEDCyADQQA2AgAgBEHMAGogAkEBQQhBsAEQsxEgBCgCUCEDCyABIANqIARByAJqQbAB/AoAACAEIAJBAWoiAjYCVCABQbABaiEBDAELCyAEQYgCahCdCCAEKAJMDAELIARBCGoQnQhBCCEDQQALIQFBEBCQASIFRQ0BIAUgATYCCCAFIAM2AgQgBSADNgIAIAUgAyACQbABbGo2AgwgAEHsjckANgIEIAAgBTYCACAEQYAEaiQADwtBCBCnFAALQbjwyQBBAToAAAAL8wMBCH8jAEEQayIHJAACQAJAAkACQAJAIAIEQAJAIAFBCGooAgAiBCACQQxsIghBDGsiA0EMbkEBdGoiBiAETwRAIAFBDGohBSABQQRqKAIAIQoDQCADRQ0CIAVBCGogA0EMayEDIAVBDGohBSgCACIJIAZqIgYgCU8NAAsLQdiryQBBNUGQrMkAEMATAAsgBkEASA0BAkAgBkUEQEEBIQMMAQsgBhCQASIDRQ0DC0EAIQUgB0EANgIMIAcgAzYCCCAHIAY2AgQCQAJAIAQgBksEQCAHQQRqQQAgBEEBQQEQsxEgBygCCCEDIAcoAgwhBQwBCyAERQ0BCyAERQ0AIAMgBWogCiAE/AoAAAsgBiAEIAVqIgRrIQUgAyAEaiEDIAJBAUYNAyAIQQxrIQIgAUEUaiEBAkADQCAFQQJJDQcgAUEEaygCACEIIAEoAgAhBCADQYizyQAvAAA7AAAgBUECayIFIARJDQEgA0ECaiEDIAQEQCADIAggBPwKAAALIAFBDGohASAFIARrIQUgAyAEaiEDIAJBDGsiAg0ACwwECwwFCyAAQQA2AgggAEKAgICAEDcCAAwDCxCeFQALQQEQpxQACyAAIAcpAgQ3AgAgACAGIAVrNgIICyAHQRBqJAAPC0HEsMkAQRNByKvJABC/EwALvwUBDX8jAEGQAWsiAiQAQX8hDiABKAJAIQUgASgCPCEDAkACQAJAAkACQCABKAI4QX9GBEAgAyENDAELIAVFBEBBACEOQQEhDQwBCyAFEJABIg1FDQEgBQRAIA0gAyAF/AoAAAsgBSEOC0F+IQcgASgCACIDQX5HBEACfyADQX9GBEACQCABKAIMIghFBEBBASEHDAELIAEoAgghAyAIEJABIgdFDQUgCEUNACAHIAMgCPwKAAALAkAgASgCGCIGRQRAQQghCwwBCyABKAIUIQkgBkEFdCIDEJABIgtFDQYgBiEKA0AgAyAERg0BIAJBKGogBCAJahCQAyAEIAtqIgwgAikDQDcDGCAMIAIpAzg3AxAgDCACKQMwNwMIIAwgAikDKDcDACAEQSBqIQQgCkEBayIKDQALCyACIAY2AkAgAiALNgI8IAIgBjYCOCACIAg2AjQgAiAHNgIwIAIgCDYCLCACIAEvARw7AURBfwwBCyACQShqIAEQkAMgAigCKAshByACIAIoAkQ2AiAgAiACKQI8NwMYIAIgAikCNDcDECACIAIpAiw3AwgLAkAgASgCKCIJRQRAQQQhCgwBCyABKAIkIQsgCUHkAGwiAxCQASIKRQ0EQQAhBCAJIQYDQCADIARGDQEgAkEoaiIMIAQgC2oQ4QYgBCAKaiAMQeQA/AoAACAEQeQAaiEEIAZBAWsiBg0ACwsgAS0ARCEDIABBLGogASgCMCABKAI0EL0PIAAgBTYCQCAAIA02AjwgACAONgI4IAAgBzYCACAAIAM6AEQgACAJNgIoIAAgCjYCJCAAIAk2AiAgACACKQMINwIEIAAgAikDEDcCDCAAIAIpAxg3AhQgACACKAIgNgIcIAAgAS0ARToARSACQZABaiQADwtBARCnFAALQQEQpxQAC0EIEKcUAAtBBBCnFAALngQBB38CQAJAIAAoAgAiBARAIAAoAgQiAkEEaygCACIDQXhxIQEgASAEQQF0IgRBBEEIIANBA3EiAxtqSQ0BIANBAEcgASAEQSdqS3ENAiACELwFCyAAKAIQIQQCQCAAKAIUIgMEQCAEIQEDQAJAAkAgASgCAA4CAAABCyABQQRqKAIAIgJFDQAgAUEIaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIAJqSQ0DIAVBAEcgBiACQSdqS3ENBSAHELwFCyABQRBqIQEgA0EBayIDDQALCwJAIAAoAgwiAgRAIARBBGsoAgAiA0F4cSEBIAEgAkEEdCICQQRBCCADQQNxIgMbckkNASADQQBHIAEgAkEnaktxDQQgBBC8BQsgACgCHCEEAkAgACgCICIDBEAgBCEBA0ACQAJAIAEoAgAOAgAAAQsgAUEEaigCACICRQ0AIAFBCGooAgAiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyACakkNBiAFQQBHIAYgAkEnaktxDQcgBxC8BQsgAUEQaiEBIANBAWsiAw0ACwsgACgCGCIBBEAgBEEEaygCACICQXhxIQAgACABQQR0IgFBBEEIIAJBA3EiAhtySQ0EIAJBAEcgACABQSdqS3ENASAEELwFCw8LDAMLDAELDAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC+sEAgx/AX4gACgCiAFBf0YEQEEADwsCfyABBEAgACgCeEUgACgClAEiAUGAA2ooAgAiAAR/IAFB/AJqKAIAIQIgAEEDcSEBAkAgAEEETwRAIABBfHEhBiACIQADQCAAQQhqKQMAQgAgACgCABsgDoQgAEGYAWopAwBCACAAQZABaigCABuEIABBqAJqKQMAQgAgAEGgAmooAgAbhCAAQbgDaikDAEIAIABBsANqKAIAG4QhDiAAQcAEaiEAIAYgBEEEaiIERw0ACyABRQ0BCyACIARBkAFsaiEAA0AgAEEIaikDAEIAIAAoAgAbIA6EIQ4gAEGQAWohACABQQFrIgENAAsLIA5CgICAgAGDQhyIpwVBAAtxDAELQQEgACgCeCIHRQ0AGiAAKAKQASIFQcgBbCEEIAAoAnQiAyAHQQZ0IgFqIQogAUFAakEGdkEBaiELIAAoAowBIQYCQANAIAMoAgBBG0cNASADKAIgDQEgBUUEQEEAIQVBACECDAILIAMoAgghCCAEIQEgBiEAAkAgAygCBCIJQQFxBEAgAygCECEMIAMoAgwhDQNAAkAgACkDAEICUg0AIABBCGooAgAgCUcNACAAQQxqKAIAIAhHDQAgAEEQaigCACANRw0AIABBFGooAgAgDEYNAwsgAEHIAWohACABQcgBayIBDQALDAMLA0ACQCAAKQMAQgJSDQAgAEEIaigCACAJRw0AIABBDGooAgAgCEYNAgsgAEHIAWohACABQcgBayIBDQALDAILIAJBAWohAiAKIANBQGsiA0cNAAsgCyECCyACIAcgBSAFIAdLG0YLQQFzC4YGAgh/AX4jAEEwayICJABBASEHIAEoAgBBo7LIAEEBIAEoAgQoAgwRAAAhAyACQQE6ABMgAkEAOwARIAIgAzoAECACIAE2AgwgACgCDCIIBEAgAkETaiEJIAAoAgAiAUEIaiEAIAEpAwBCf4VCgIGChIiQoMCAf4MhCgNAIAYhBCAKUARAA0AgACIGQQhqIQAgAUGAA2shASAGKQMAQoCBgoSIkKDAgH+DIgpCgIGChIiQoMCAf1ENAAsgCkKAgYKEiJCgwIB/hSEKC0EBIQYgA0EBcSEDAn9BASADDQAaAkACQAJAAkACQCACLQASRQRAIAEgCnqnQQN2QVBsaiEFIAIoAgwiAy0ACkGAAXFFBEAgBEEBcQ0CDAMLIARBAXFFBEBBASADKAIAQaCyyABBASADKAIEKAIMEQAADQcaCyACQQE6ABMgAiAJNgIoIAIgAykCADcCICAFQSxrKAIAIAVBKGsoAgAgAkEgaiIEQaDrwgAQvwYNBCAEQaayyABBAhD9CA0EDAMLQZ/jwgBBjQFB6OPCABC/EwALQQEgAygCAEGIs8kAQQIgAygCBCgCDBEAAA0EGgtBASAFQSxrKAIAIAVBKGsoAgAgAygCACADKAIEEL8GDQMaQQEgAygCAEGmssgAQQIgAygCBCgCDBEAAA0DGgsgBUEgayEDIAJBADoAECACQQE6ABIgAigCDCIELQAKQYABcUUEQEEBIAMgBBDXAQ0DGgwCCyACIAk2AhwgAkGg68IANgIkIAIgBCkCADcCFCACIAQpAgg3AiggAiACQRRqNgIgIAMgAkEgahDXAQ0AIAIoAiBBpLLIAEECIAIoAiQoAgwRAABFDQELQQEMAQsgAkEAOgASQQALIQMgCkIBfSAKgyEKIAJBAToAESACIAM6ABAgCEEBayIIDQALCwJAIANFBEAgAi0AEkEBRg0BIAIoAgwiACgCAEGhssgAQQEgAEEEaigCACgCDBEAACEHCyACQTBqJAAgBw8LQfjjwgBB3QBBqOTCABC/EwALhQYCBX8BfiMAQTBrIgIkACABKAIYIQYgAiABKQIQNwMQIAIgASkCCDcDCCACIAEpAgAiBzcDAAJAAn8CQAJAAkACQAJAAkACQAJAAkACQCAHp0EBaw4CAgABCyACQQRyEK0QDQIgAEEANgIIIABCgICAgIABNwIADAgLAkACQAJAIAIoAgQiAUEIaiIEIAIoAggiAxD3EC0AWEECRwRAIAQgAxD3EC0AWA0BIABBADYCCCAAQoCAgICAATcCAAwGCyABKAIcIgQgA0sEQCABKAIYIANB8ABsaiIDKAJoIQQgAygCZCEDIAEgASgCACIFQQFqNgIAIAVBAEgNCiACIAQ2AiQgAiADNgIgIAIgATYCHCACIAY2AiggAkEBOwEsIAAgAkEcahD3AiABIAEoAgAiAEEBazYCACAAQQFGDQIMAwsgAyAEQeT+yAAQhRMMCQsgASgCHCIEIANNDQUgASgCGCADQfAAbGoiAygCaCEEIAMoAmQhAyABIAEoAgAiBUEBajYCACAFQQBIDQggAiAENgIkIAIgAzYCICACIAE2AhxByAAQkAEiA0UNBiADIAYgAkEcahDyDyAAQQE2AgggACADNgIEIABBATYCACABIAEoAgAiAEEBazYCACAAQQFGBEAgARAwCyABIAEoAgAiAEEBazYCACAAQQFHDQELIAEQMAsgAigCAEEBaw4CBQcJCyAAQQA2AgggAEKAgICAgAE3AgAMBAsgAEEANgIIIABCgICAgIABNwIAIAIoAhQiACgCACEBIAAgAUEBazYCACABQQFGBEAgABAwCwJAIAIoAgBBAWsOAgQIAAsgAigCBCEBCyABIAEoAgAiAEEBazYCACAAQQFHDQYgAkEEcgwFCyADIARB5P7IABCFEwALQbjwyQBBAToAAAALIAIoAhQiASgCACEAIAEgAEEBazYCACAAQQFHDQMgAkEUagwCCwALIAIoAhQiASgCACEAIAEgAEEBazYCACAAQQFHDQEgAkEUagsoAgAQMAsgAkEwaiQAC8AFAgV/A34jAEGQAmsiBCQAQgEhCQJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCEEEBaw4DAQEAAgsgAikDGCIKQj+HIQkgCSAKhSAJfSEJCyACQQAQ6woNACACQQAQ6woNASAJQv////8PgyEKIAI1AgghCyACKQMAIQkMBAsgAkEAEOsKRQRAIAI1AgghCyACKQMAIQlC/////w8hCiADp0EBcQ0EDAULQv///////////wAhCSADp0EBcUUNAQsgAi0AoQFFDQELIAAgAUGQAvwKAAAMAwsCQAJAIAEoAiAiAkF9Rg0AIAFBMGoQ/wIgAkEATA0AIAEoAiQi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SxsQjxMiAiAGIAVrIAIbQQBIIQMgAEHwAEGoASAEG2oiB0EIaigCACEEIAcgCSAIIAMbIAdBBGooAgAgCUEEaigCACAEIAlBCGooAgAiAiACIARLGxCPEyIAIAQgAmsgABtBAEgiBBshCiALIAggCSAEGyADGyIFQQhqKAIAIQYgCkEEaigCACAFQQRqKAIAIApBCGooAgAiAiAGIAIgBkkbEI8TIQAgASAIIAsgAxsiAykDMDcDMCABIAMpAyg3AyggASADKQMgNwMgIAEgAykDGDcDGCABIAMpAxA3AxAgASADKQMINwMIIAEgAykDADcDACABIAogBSAAIAIgBmsgABtBAEgiABsiAikDADcDOCABIAIpAwg3A0AgASACKQMQNwNIIAEgAikDGDcDUCABIAIpAyA3A1ggASACKQMoNwNgIAEgAikDMDcDaCABIAUgCiAAGyIAKQMwNwOgASABIAApAyg3A5gBIAEgACkDIDcDkAEgASAAKQMYNwOIASABIAApAxA3A4ABIAEgACkDCDcDeCABIAApAwA3A3AgASAJIAcgBBsiACkDADcDqAEgASAAKQMINwOwASABIAApAxA3A7gBIAEgACkDGDcDwAEgASAAKQMgNwPIASABIAApAyg3A9ABIAEgACkDMDcD2AEL1wUCBn8CfiMAQUBqIgMkACABQQ1qIQQgAS0ADCEHIAEoAgghCCABKAIEIQYgASgCACEFAkACQAJAAkACQAJAIAEpAxAiCiACKQMQIglVIAkgClVrQf8BcQ4CAQIACyADIAg2AiAgAyAGNgIcIAMgBTYCGCADIAo3AyggAyAELwAAOwAlIAMgBC0AAjoAJyADIAc6ACQCQCAHQQFGBEAgAyAJNwMQIANBAToADCADQQA2AgggA0KAgICAwAA3AwAgBUUNASAGQQRrKAIAIgRBeHEhASABIAVBAnQiBUEEQQggBEEDcSIEG2pJDQUgBEEARyABIAVBJ2pLcQ0GIAYQvAUgACADIAIQlAgMBAsCQAJAAkAgCSAKVSAJIApTa0H/AXEOAgECAAsgA0EwaiIBIAogCX0QiAIgA0EYaiABEIcJIAMgCTcDECADIAMpAxg3AwAgAyADKQMgNwMIIAAgAyACEJQIDAULIAMgAykDKDcDECADIAMpAyA3AwggAyADKQMYNwMAIAAgAyACEJQI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eEcNCCABKAIUIgEgAigCJCIETw0JIAIoAiAgAUHcAGxqIgIoAiQhASACKAIgDAELIAMgASgCGEEIaiACENAQIAMoAgQhASADKAIACzYCBCAAQX82AgAgACABNgIIDAMLIAEoAgwhAiAAAn8gASgCCEEBRgRAIAEoAhgiBUGgAmooAgAiBCACTQ0JIAEoAhAiBCAFQZwCaigCACACQSRsaiICQSBqKAIAIgVPDQogAkEcaigCACAEQdQAbGoiAigCAEGAgICAeEcNCyABKAIUIgEgAigCJCIETw0MIAIoAiAgAUHcAGxqIgIoAiQhASACKAIgDAELIANBCGogASgCGEEIaiACENAQIAMoAgwhASADKAIICzYCBCAAQX82AgAgACABNgIIDAILIANBEGogASgCqAFBCGogASgCrAEQ0RAgACADKQMQNwIEIABBfzYCAAwBCyADQRhqIAEoAlhBCGogASgCXBDRECADIAMpAxg3AiAgAyADQSBqrUKAgICA0AGENwMoIABB7IHAACADQShqELgMCyADQTBqJAAPCyACIARBlL7EABCFEwALIAQgBUGUvsQAEIUTAAtBlL7EABCdFQALIAEgBEGkvsQAEIUTAAsgAiAEQZS+xAAQhRMACyAEIAVBlL7EABCFEwALQZS+xAAQnRUACyABIARBpL7EABCFEwALyAUBBn8jAEGgAmsiAiQAIAEoAhQhBCABKAIQIgUoAgAhAyAFIANBAWo2AgACQAJAIANBAE4EQCACIAU2AoABIAIgASkCCDcDeCACIAEpAgA3A3AgAiAEIAJB8ABqEOwMAkBB5AAQkAEiAwRAAkACQAJAAkACQEEDIAIoAgAiBEECayAEQQFNG0EBaw4DAQIDAAsgAkHwAGogAkHkAPwKAAAMAwsgAkH0AGogAkEEahCgByACQQM2AnAMAgtB5AAQkAEiBEUNAyACKAIEIAQQuA8gAkEENgJwIAIgBDYCdAwBCyACQfAAaiACEOQFCyADIAJB8ABqIgRB5AD8CgAAIAJBATYCbCACIAM2AmggAkEBNgJkIAEtABgiBkUNAyAEIAJB5AD8CgAAQeQAEJABIgNFDQQgAyAEQeQA/AoAACACQeQAahCYEiACKAJoIgQgAzYCaCAEQQQ2AmQgAkECNgJsDAMLDAMLDAILAAsgAiACKAJsNgKYASACIAIpAmQ3A5ABIAJBAzYCsAEgAkHamskANgKsASACQX42AnAgAkEBOwG0ASACQoCAgIBwNwKkASACQoCAgIDAADcCnAEgAkG1AWohAyABLQAZIAZyRQRAIAIoApgBIgQgAigCkAFGBEAgAkGQAWoQmBILIAIoApQBIARB5ABsaiIHQQA6AAQgB0ECNgIAIAIgBEEBajYCmAELIAJB2AFqIgQgAkHwAGpBxAD8CgAAIAIgAy0AAjoA1gEgAiADLwAAOwHUAQJAQcgAEJABIgMEQCADIARBxAD8CgAAIANBADoARCAAQQE2AgggACADNgIEIABBATYCACADIAIvAdQBOwBFIAMgAi0A1gE6AEcgBg0BIAIQwAcMAQsMAQsgBSAFKAIAIgBBAWs2AgAgAEEBRgRAIAEoAhAQMAsgAkGgAmokAA8LQbjwyQBBAToAAAALlgUBCn8gAEE0aigCACAAQQRqKAIAIABBOGooAgAiAyAAQQhqKAIAIgcgAyAHSRsQjxMhBSAAQZABQeAAIABBlAFqKAIAIABB5ABqKAIAIABBmAFqKAIAIgYgAEHoAGooAgAiBCAEIAZLGxCPEyICIAYgBGsgAhtBAEgiBBtqIQggACAFIAMgB2sgBRsiAkF/c0EfdkEwbGohCSAAIAJBH3ZBMGxqIgtBCGooAgAhBSAIQQRqKAIAIAtBBGooAgAgCEEIaigCACIGIAUgBSAGSxsQjxMiAiAGIAVrIAIbQQBIIQMgAEHgAEGQASAEG2oiB0EIaigCACEEIAcgCSAIIAMbIAdBBGooAgAgCUEEaigCACAEIAlBCGooAgAiAiACIARLGxCPEyIAIAQgAmsgABtBAEgiBBshCiALIAggCSAEGyADGyIFQQhqKAIAIQYgCkEEaigCACAFQQRqKAIAIApBCGooAgAiAiAGIAIgBkkbEI8TIQAgASAIIAsgAxsiAykDKDcDKCABIAMpAyA3AyAgASADKQMYNwMYIAEgAykDEDcDECABIAMpAwg3AwggASADKQMANwMAIAEgCiAFIAAgAiAGayAAG0EASCIAGyICKQMANwMwIAEgAikDCDcDOCABIAIpAxA3A0AgASACKQMYNwNIIAEgAikDIDcDUCABIAIpAyg3A1ggASAFIAogABsiACkDADcDYCABIAApAyg3A4gBIAEgACkDIDcDgAEgASAAKQMYNwN4IAEgACkDEDcDcCABIAApAwg3A2ggASAJIAcgBBsiACkDADcDkAEgASAAKQMINwOYASABIAApAxA3A6ABIAEgACkDGDcDqAEgASAAKQMgNwOwASABIAApAyg3A7gBC60FAQZ/IwBBQGoiAiQAIAEoAgBBsPrGAEENIAEoAgQoAgwRAAAhBwJAAkACQAJAAkACQAJAAkACQCAAKAIEIgYgACgCACIAKAIcIgRJBEAgACgCGCAGQfAAbGoiAygCXCEEIAMoAlghAyAAIAAoAgAiBUEBajYCACAFQQBIDQEgAEGgAmooAgAiBSADTQ0FIABBnAJqKAIAIANBJGxqIgNBIGooAgAiBSAETQ0GIANBHGooAgAgBEHUAGxqIgQoAgBBgoCAgHhHDQcgAiAEKQIINwIgIAJBCGogAEEIaiAGENEQIAIgAikDCDcCKCACIAJBKGqtQoCAgIDQAYQ3AzggAiACQSBqrUKAgICA0AGENwMwIAJBFGpBnIXAACACQTBqELgMIAAgACgCACIEQQFrNgIAQQEhBiAEQQFGBEAgABAwCyACKAIUIQQgAigCGCEAIAcNBCACKAIcIQMgAS0ACkGAAXENAiABKAIAIgdBtM/FAEEBIAEoAgQiBSgCDBEAAA0EIAAgAyAHIAUQvwZFDQMMBAsgBiAEQeT+yAAQhRMLAAsgASgCACIHQZ3jwgBBAiABKAIEIgUoAgwRAAANASACIAU2AjQgAiAHNgIwIAJBAToAFCACIAJBFGo2AjggACADIAJBMGoiA0Gg68IAEL8GDQEgA0GkssgAQQIQ/QgNAQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEGCyAEBEAgAEEEaygCACIDQXhxIQEgAUEEQQggA0EDcSIDGyAEakkNBCADQQBHIAEgBEEnaktxDQUgABC8BQsgAkFAayQAIAYPCyADIAVBzLvEABCFEwALIAQgBUHMu8QAEIUTAAtBzLvEABCdFQALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6sFAgd/AX4jAEGABmsiBSQAAkACQAJAAkACQCACLQAAQf8BRwRAIAVBCGoiByACQdAA/AoAACAFQQA6AGYgBUEBOwFkIAUgAzYCYCAFQQA2AlwgBUGYA2oiAiAFQdwAaiAHIAQQ5QEgBSAFKQKgAzcDcCAFIAUpApgDNwNoIAUoAqgDIQQgBSkCrAMhDAJAIAEoAgBBf0cEQCAFIAEpAgg3A5ADIAUgASkCADcDiAMgAiAFQYgDaiAFQegAahD0DCABIAUpAqADNwIIIAEgBSkCmAM3AgAMAQsgASAFKQNwNwIIIAEgBSkDaDcCAAsgBUH4AGogAUGQAvwKAAACQCAEQX9GDQAgDKchAiAMQiCIIgxCAFIEQCAMp0HYAGwhAyAFQagFaiEHIAVB+ARqIQogAiEBA0AgByABQdgA/AoAACAFQZgDaiAFQfgAakGQAvwKAAAgBSgCgAUiBiAFKAL4BEYEQCAKEKsSCyAFKAL8BCAGQcwAbGogB0HMAPwKAAAgBSAGQQFqNgKABSAFQfgAaiAFQZgDakGQAvwKAAAgBSgC9AUiBgRAIAUoAvgFIgtBBGsoAgAiCEF4cSEJIAlBBEEIIAhBA3EiCBsgBmpJDQUgCEEARyAJIAZBJ2pLcQ0GIAsQvAULIAFB2ABqIQEgA0HYAGsiAw0ACwsgBEUNACACQQRrKAIAIgNBeHEhASABIARB2ABsIgRBBEEIIANBA3EiAxtqSQ0EIANBAEcgASAEQSdqS3ENBSACELwFCyAAIAVB+ABqQZAC/AoAAAwFCyAAIAFBkAL8CgAADAQLQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAsgBUGABmokAAuoBQEEfyABKAIYIQUgASgCFCECIAAoAgAiASgCCCIEIAEoAgBGBEAgASAEQQFBAUEBELMRIAEoAgghBAsgASAEQQFqIgM2AgggASgCBCAEakH7ADoAACAFRQRAIAMgASgCAEYEQCABIANBAUEBQQEQsxEgASgCCCEDCyABIANBAWo2AgggASgCBCADakH9ADoAAA8LIAAoAgAgAkE8aigCACACQUBrKAIAEJ4HIAAoAgAiASgCCCIEIAEoAgBGBEAgASAEQQFBAUEBELMRIAEoAgghBAsgBUHIAGwgASAEQQFqNgIIIAEoAgQgBGpBOjoAAAJAAkACQAJAAkACQCACKAIAQQFrDgQDAgEABAsgACACQQhqEMEIDAQLIAJBCGogABDtAwwDCyAAIAJBBGoQigsMAgsgACACQQhqEMEIDAELIAJBCGogABCOAQtByABrIQQgAkGIAWohAQNAIAQEQCAAKAIAIgMoAggiAiADKAIARgRAIAMgAkEBQQFBARCzESADKAIIIQILIAMgAkEBajYCCCADKAIEIAJqQSw6AAAgACgCACABQQRrKAIAIAEoAgAQngcgACgCACIDKAIIIgIgAygCAEYEQCADIAJBAUEBQQEQsxEgAygCCCECCyADIAJBAWo2AgggAygCBCACakE6OgAAAkACQAJAAkACQAJAIAFBQGooAgBBAWsOBAECAwQACyABQThrIAAQjgEMBAsgACABQThrEMEIDAMLIAAgAUE8axCKCwwCCyABQThrIAAQ7QMMAQsgACABQThrEMEICyAEQcgAayEEIAFByABqIQEMAQsLIAAoAgAiASgCCCIAIAEoAgBGBEAgASAAQQFBAUEBELMRIAEoAgghAAsgASAAQQFqNgIIIAEoAgQgAGpB/QA6AAAL/wQBB38jAEEwayIEJABBASECAkACQAJAAkAgASgCAEEBRgRAIAEoAgQiAyABKAIIIgVPDQMgASADQQFqIgI2AgQgASgCFCEGIAQgASgCiAE2AhggBCABKQKAATcDECACIAVPDQIgASADQQJqNgIEDAELIAEoAhQhBiAEIAEoAogBNgIYIAQgASkCgAE3AxALIAFBgAFqIQIgASABLQCQASIFQQFHOgCQASAEIAIoAgg2AiggBCACKQIANwMgIAEoAjghAiABKAJQIgMgASgCSEYEQCABQcgAahCWEgsgASADQQFqNgJQIAEoAkwgA0EDdGoiAyACNgIEIAMgAjYCACAEQQhqIAEQrgsgBCgCCCAEKAIMIgEgBCgCKDYCiAEgASAEKQMgNwKAASABIAU6AJABIAFBMGoQhgpBAUcNACABKAKEASEDIAEoAoABIQUCQCABKAKIASICRQ0AIAIgA08EQCACIANGDQEMBAsgAiAFaiwAAEFASA0DCyACIANGDQBBASEDAkAgAiAFaiIGLAAAIgVBAE4NACAGLQABQT9xIQcgBUEfcSEIAn8gCEEGdCAHciAFQWBJDQAaIAYtAAJBP3EgB0EGdHIhByAHIAhBDHRyIAVBcEkNABogCEESdEGAgPAAcSAGLQADQT9xIAdBBnRycgsiBkGAAUkNAEECIQMgBkGAEEkNAEEDQQQgBkGAgARJGyEDCyABIAIgA2o2AogBQQAhAgwBCyABIAQoAhg2AogBIAEgBCkDEDcCgAFBASECIAYgASgCFEsNACABIAY2AhQLIAAgATYCBCAAIAI2AgAgBEEwaiQADwsgBSADIAIgA0HMi8gAEP0UAAufBQEJfyMAQcABayIDJAACQAJAIAIoAgAiBkF/Rg0AIAIoAgQhBwJAAkACQAJAAkACQAJAIAIoAggiAkUEQCAGRQ0IIAdBBGsoAgAiAkF4cSEBIAEgBkGwAWwiBEEEQQggAkEDcSICG3JJDQEgAkEARyABIARBJ2pLcQ0CIAcQvAUMCAsgAkGwAWwhCiAGQbABbCIFQeAAbiEIIAchAgNAIANBEGoiCyAEIAdqQbAB/AoAAEGwARCQASIJRQ0DIAkgC0GwAfwKAAAgAkHQAGpBfjYCACACQQRqIAk2AgAgAkEDNgIAIAJB4ABqIQIgCiAEQbABaiIERw0ACyAHIQQCQCAGRQ0AIAhB4ABsIgYgBUYNACAFQd8ATQRAIAVFBEBBCCEEDAILIAdBBGsoAgAiBkF4cSEEIARBBEEIIAZBA3EiBhsgBXJJDQUgBkEARyAEIAVBJ2pLcQ0GIAcQvAVBCCEEDAELIAcgBUEIIAYQrQYiBEUNBgtBCxCQASIFRQ0GIAVBrILGACgAADYAByAFQaWCxgApAAA3AAAgA0ELNgIYIAMgBTYCFCADQQs2AhAgASADQRBqIgUQ/A0gAyACIAdrQeAAbjYCDCADIAQ2AgggAyAINgIEIAUgASADQQRqENQGIAMoAhBBfkYNByAAIAMpAjg3AiggACADKQIwNwIgIAAgAykCKDcCGCAAIAMpAiA3AhAgACADKQIYNwIIIAAgAykCEDcCAAwIC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtBuPDJAEEBOgAAAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQbjwyQBBAToAAAALQQEQpxQACyAAQX42AgALIANBwAFqJAALggUBB38jAEEwayIDJAACQAJAAkACQCABKAIIQQFGBEAgASgCDCIBIAIoAmhPDQEgAEF/NgIAIAAgAigCZCABQQR0aikCBDcCBAwECyABKAIwIQggASgCNCIEQQFGBEAgAyACIAhBFGooAgAQ0BAgACADKQMANwIEIABBfzYCAAwECyAEQQNsIQUgBEUEQCADQgE3AiggAyAFNgIkDAMLIAUQkAEiBkUNASADQQA2AiwgAyAGNgIoIAhBFGooAgAhASADIAU2AiQgA0EYaiACIAEQ0BAgAygCGCEJAkACQCAFIAMoAhwiAU8EQCABDQEMAgsgA0EkakEAIAFBAUEBELMRIAMoAiQhBSADKAIoIQYgAygCLCEHCyABRQ0AIAYgB2ogCSAB/AoAAAsgBEEkbCADIAEgB2oiBDYCLCADQRBqIAIgCEE4aigCABDQECADKAIUIQEgAygCECEHIAQgBUYEQCADQSRqIAVBAUEBQQEQsxEgAygCKCEGCyAIQcgAaiEFIAQgBmpB3wA6AABByABrIQYDQCADIARBAWoiBDYCLAJAAkAgAygCJCAEayABSQRAIANBJGogBCABQQFBARCzESADKAIsIQQMAQsgAUUNAQsgAUUNACADKAIoIARqIAcgAfwKAAALIAMgASAEaiIENgIsIAZFDQMgA0EIaiACIAVBFGooAgAQ0BAgAygCDCEBIAMoAgghByAEIAMoAiRGBEAgA0EkaiAEQQFBAUEBELMRCyAFQSRqIQUgAygCKCAEakHfADoAACAGQSRrIQYMAAsAC0H8u8QAEJ0VAAtBARCnFAALIAAgAygCLDYCCCAAIAMpAiQ3AgALIANBMGokAAuJDQQGfwF+AX0BfCMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSAAKAIAIgNBgICAgHhzIANBAE4bQQFrDhUBAgMEBQYHCAkKCwwNDg8UEBQREhMACyAALQAEIQAgAkEAOgAAIAIgADoAASACIAFB6I3HABDUESEEDBMLIAAxAAQhCCACQQE6AAAgAiAINwMIIAIgAUHojccAENQRIQQMEgsgADMBBCEIIAJBAToAACACIAg3AwggAiABQeiNxwAQ1BEhBAwRCyAANQIEIQggAkEBOgAAIAIgCDcDCCACIAFB6I3HABDUESEEDBALIAApAwghCCACQQE6AAAgAiAINwMIIAIgAUHojccAENQRIQQMDwsgADAABCEIIAJBAjoAACACIAg3AwggAiABQeiNxwAQ1BEhBAwOCyAAMgEEIQggAkECOgAAIAIgCDcDCCACIAFB6I3HABDUESEEDA0LIAA0AgQhCCACQQI6AAAgAiAINwMIIAIgAUHojccAENQRIQQMDAsgACkDCCEIIAJBAjoAACACIAg3AwggAiABQeiNxwAQ1BEhBAwLCyAAKgIEIQkgAkEDOgAAIAIgCbs5AwggAiABQeiNxwAQ1BEhBAwKCyAAKwMIIQogAkEDOgAAIAIgCjkDCCACIAFB6I3HABDUESEEDAkLIAAoAgQhBSMAQSBrIgAkACAAQQA2AgwgAAJ/IAVBgAFPBEAgBUE/cUGAf3IhBiAFQQZ2IQQgBUGAEEkEQCAAIAY6AA0gACAEQcABcjoADEECDAILIAVBDHYhAyAEQT9xQYB/ciEEIAVB//8DTQRAIAAgBjoADiAAIAQ6AA0gACADQeABcjoADEEDDAILIAAgBjoADyAAIAQ6AA4gACADQT9xQYB/cjoADSAAIAVBEnZBcHI6AAxBBAwBCyAAIAU6AAxBAQs2AhggAEEFOgAQIAAgAEEMajYCFCAAQRBqIAFB6I3HABDUESEEIABBIGokAAwICyMAQRBrIgUkACAAQQRqIgAoAgQhBiAFIAAoAgg2AgggBSAGNgIEIAVBBToAACAFIAFB6I3HABDUESEEAkAgACgCACIDBEAgBkEEaygCACIAQXhxIQEgAUEEQQggAEEDcSIAGyADakkNCiAAQQBHIAEgA0EnaktxDQsgBhC8BQsgBUEQaiQADAALDAcLIAApAgQhCCACQQU6AAAgAiAINwIEIAIgAUHojccAENQRIQQMBgsjAEEQayIFJAAgAEEEaiIAKAIEIQYgBSAAKAIINgIIIAUgBjYCBCAFQQY6AAAgBSABQeiNxwAQ1BEhBAJAIAAoAgAiAwRAIAZBBGsoAgAiAEF4cSEBIAFBBEEIIABBA3EiABsgA2pJDQggAEEARyABIANBJ2pLcQ0JIAYQvAULIAVBEGokAAwACwwFCyAAKQIEIQggAkEGOgAAIAIgCDcCBCACIAFB6I3HABDUESEEDAQLIAIgACgCBCIAKQMINwMIIAIgACkDADcDACMAQRBrIgMkACADQQg6AAAgAyABQeiNxwAQ1BEhBCACEIgIIANBEGokACAAQRAQ2RIMAwsgAiAAKAIEIgApAwg3AwggAiAAKQMANwMAIwBBEGsiAyQAIANBCToAACADIAFB6I3HABDUESEEIAIQiAggA0EQaiQAIABBEBDZEgwCCyMAQRBrIgckACAAQQRqIgAoAgghBiAAKAIAIQUgACgCBCEDIAdBCjoAACAHIAFB6I3HABDUESEEIAYEQCADIQADQCAAEIgIIABBEGohACAGQQFrIgYNAAsLAkAgBQRAIANBBGsoAgAiAEF4cSEGIAZBBEEIIABBA3EiARsgBUEEdCIAckkNBCABQQBHIAYgAEEnaktxDQUgAxC8BQsgB0EQaiQADAALDAELIwBBEGsiByQAIAAoAgghAyAAKAIAIQUgACgCBCEAIAdBCzoAACAHIAFB6I3HABDUESEEIAMEQCAAIQEDQCABEIgIIAFBEGoQiAggAUEgaiEBIANBAWsiAw0ACwsCQCAFBEAgAEEEaygCACIBQXhxIQYgBkEEQQggAUEDcSIDGyAFQQV0IgFySQ0DIANBAEcgBiABQSdqS3ENBCAAELwFCyAHQRBqJAAMAAsLIAJBEGokACAEDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL8gMBB38CQAJAIAAoAigiAQRAIAAoAiwiAkEEaygCACIDQXhxIQQgBEEEQQggA0EDcSIDGyABakkNASADQQBHIAQgAUEnaktxDQIgAhC8BQsgACgCFCEEIAAoAhgiAgRAIAQhAQNAIAFBQGsoAgAiA0EASgRAIAFBxABqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgA2pJDQMgBUEARyAGIANBJ2pLcQ0EIAcQvAULIAEQmQQgAUHkAGohASACQQFrIgINAAsLIAAoAhAiAgRAIARBBGsoAgAiA0F4cSEBIAEgAkHkAGwiAkEEQQggA0EDcSIDG2pJDQEgA0EARyABIAJBJ2pLcQ0CIAQQvAULIAAoAiAhBCAAKAIkIgIEQCAEIQEDQCABKAIAIgMEQCABQQRqKAIAIgdBBGsoAgAiBUF4cSEGIAZBBEEIIAVBA3EiBRsgA2pJDQMgBUEARyAGIANBJ2pLcQ0EIAcQvAULIAFBGGohASACQQFrIgINAAsLIAAoAhwiAQRAIARBBGsoAgAiAkF4cSEAIAAgAUEYbCIBQQRBCCACQQNxIgIbakkNASACQQBHIAAgAUEnaktxDQIgBBC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAu5BQIBfwF+IwBB0ABrIgUkAAJAAkACQCACIARLBEAgASAEQcgCbGoiASkDACIGQn5RIgINASAGQv////8Pg0IEUiAGQgVZcUUEQCAGQn9RBEBBACABIAIbIQICQAJAAkACQAJAAkACQAJAAkACQAJAQQogASgCCCIEQRtrIARBGk0bQQFrDgoBCgIDBAUGBwgJAAsgBSABQewAaiABKAJ8IAEoAoABQQhBAEEAQQBBACADQX4gBhBPDA8LIAIoAiRBf0cEQCAFIAJBJGogASgCNCABKAI4IAEoAkAgASgCREEAQQBBACADQX5CABBPDA8LIAVBfzYCEAwOCyACKAJwQX9HBEAgBSACQfAAaiABKAKAASABKAKEAUEIQQBBAEEAQQAgA0F+QgAQTwwOCyAFQX82AhAMDQsgAigC1AFBf0cEQCAFIAJB1AFqIAEoAuQBIAEoAugBIAEoAvABIAEoAvQBQQBBAEEAIANBfkIAEE8MDQsgBUF/NgIQDAwLIAVBfzYCEAwLCyAFQX82AhAMCgsgBUF/NgIQDAkLIAVBfzYCEAwICyAFQX82AhAMBwsgBSABQZQCaiABKAKkAiABKAKoAkEIQQBBAEEAQQAgA0F+IAYQTwwGCyABKAIQQX9GDQQgBSABQcwBaiABKALcASABKALgAUEIQQBBAEEAQQAgA0F+IAYQTwwFCyAFQX42AkQgBSABIAMgBUHEAGoQpAEMBAsgBUF/NgIQDAMLQcygxgAQnRUACyAFQX82AhAMAQsgBUF/NgIQCwJAIAUoAhBBf0cEQCAAIAUpAzg3AzggACAFKQMwNwMwIAAgBSkDKDcDKCAAIAUpAyA3AyAgACAFKQMYNwMYIAAgBSkDEDcDECAAIAUpAwg3AwggACAFKQMANwMADAELIABBfzYCEAsgBUHQAGokAAvMBQEFfyMAQTBrIgIkACAAQQRqIQQCQAJAAkACQCAAKAIAQQFrDgIBAgALIAIgBDYCDEEBIQAgASgCACIEQfCXyQBBBCABKAIEIgUoAgwiAxEAAA0CAkAgAS0ACkGAAXFFBEAgBEG0z8UAQQEgAxEAAA0EIAJBDGogARC2CkUNAQwECyAEQZ3jwgBBAiADEQAADQMgAkEBOgATIAIgBTYCGCACIAQ2AhQgAkGg68IANgIkIAIgASkCCDcCKCACIAJBE2o2AhwgAiACQRRqNgIgIAJBDGogAkEgahC2Cg0DIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANAwsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEADAILQQEhACABKAIAIgNBmZLJAEEIIAEoAgQiBigCDCIFEQAADQECQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQMgBCABEI8GRQ0BDAMLIANBnePCAEECIAURAAANAiACQQE6AAwgAiAGNgIYIAIgAzYCFCACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEMajYCHCACIAJBFGoiAzYCICAEIAJBIGoQjwYNAiADQaSyyABBAhD9CA0CCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAQtBASEAIAEoAgAiA0GnkMkAQQsgASgCBCIGKAIMIgURAAANAAJAIAEtAApBgAFxRQRAIANBtM/FAEEBIAURAAANAiAEIAEQ/QtFDQEMAgsgA0Gd48IAQQIgBREAAA0BIAJBAToADCACIAY2AhggAiADNgIUIAJBoOvCADYCJCACIAEpAgg3AiggAiACQQxqNgIcIAIgAkEUajYCICAEIAJBIGoQ/QsNASACKAIgQaSyyABBAiACKAIkKAIMEQAADQELIAEoAgBBiJDJAEEBIAEoAgQoAgwRAAAhAAsgAkEwaiQAIAALswUCC38BfiMAQfABayICJAACQCABKAIEIgMgASgCDCIKRgRAQQIhAwwBCyABKAIQIQQgAkGgAWoiB61CgICAgPAghCENIAJB4ABqIgVBBHIhCCAFQTBqIQsgB0EYaiEFIAdBBHIhCQJAA0AgASADQcgAaiIHNgIEIANBBGohBgJAIAMoAgAiDEECRgRAIAIgBigCEDYCcCACIAYpAgg3A2ggAiAGKQIANwNgDAELIAIgDDYCoAEgCSAGKQIANwIAIAkgBikCCDcCCCAJIAYoAhA2AhAgBSADQRhqKQMANwMAIAUgA0EgaikDADcDCCAFIANBKGopAwA3AxAgBSADQTBqKQMANwMYIAUgA0E4aikDADcDICAFIANBQGspAwA3AyggAiANNwPoASALQeTxwQAgAkHoAWoQuAwgAkEAOgCcASACQX82AnAgAkGgAWoQrgcgAigCkAEiA0F/Rg0AIAIgAikCdDcDICACIAIpAnw3AyggAiACKQKEATcDMCACIAIoAowBNgI4IAIgAikC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BEGzxcEAIAJBCGoQsQkMDgsgAiAAKAIENgIAIAIgAq1CgICAgNADhDcDCCABKAIAIAEoAgRB1sXBACACQQhqELEJDA0LIAIgACkCBDcCACACIAKtQoCAgIDgA4Q3AwggASgCACABKAIEQaSMwAAgAkEIahCxCQwMCyABKAIAQeasyABBCiABKAIEKAIMEQAADAsLIAEoAgBB8KzIAEEKIAEoAgQoAgwRAAAMCgsgASgCAEH6rMgAQQwgASgCBCgCDBEAAAwJCyABKAIAQYatyABBDiABKAIEKAIMEQAADAgLIAEoAgBBlK3IAEEIIAEoAgQoAgwRAAAMBwsgASgCAEGcrcgAQQMgASgCBCgCDBEAAAwGCyABKAIAQdesyQBBBCABKAIEKAIMEQAADAULIAEoAgBBn63IAEEMIAEoAgQoAgwRAAAMBAsgASgCAEGrrcgAQQ8gASgCBCgCDBEAAAwDCyABKAIAQbqtyABBDSABKAIEKAIMEQAADAILIAEoAgBBx63IAEEOIAEoAgQoAgwRAAAMAQsgASgCACAAKAIEIAAoAgggASgCBCgCDBEAAAsgAkEQaiQAC4AFAQh/IwBB0AFrIgMkACADQf8BOgCoASADQQA2AmAgA0EANgJYIANBADYCUCADQQA2AkggA0EANgJAIANBADYCOCADQQA2AjAgA0EANgIoIANBADYCICADQQA2AhggA0EANgIQIANBADYCmAEgA0EANgKQASADQQA2AogBIANBADYCgAEgA0EANgJ4IANBADYCcCADQQA2AmggA0EANgKgASADQgA3AwAgA0EAOgDEASADQQA2AsABIANCi4CAgMAANwK4ASADQYq4xQA2ArQBIANByAFqIAMgASACIANBtAFqEDcgAygCzAEhASADLQDMASECAkAgAUUgAygCyAEiBEEAR3FFBEAgAEEFQX8gARsgAiAEGzoAAUEBIQIMAQtBASECAkACQAJAAkAgAygCeEEBRgRAIAMoAnwiB0ECTwRAIABBADoAAQwGCyADKAKAAUEBRw0BIAMoAoQBIghBDE8EQCAAQQA6AAEMBgsgAygCiAFBAUcNAiADKAKMASIJQTxPBEAgAEEAOgABDAYLQQAhASADKAKQASIKRQ0EQTshASADKAKUASIEQTtLDQMgBCEBDAQLIABBAjoAAQwECyAAQQI6AAEM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g4CAgHghBgwCCyADQSBqIARBBGooAgAgBEEIaigCABD3CEGEgICAeCEGDAELIANBMGogBBDlBCADIAMpAzg3AyggAyADKQMwNwMgIAMgCCkCADcDACADIAgpAgg3AwggAyAIKQIQNwMQIAMgCCgCGDYCGCADKAJAIQYLIAcgCWoiBSADKQMoNwMIIAUgAykDIDcDACAFQRBqIAY2AgAgBUEUaiADKQMANwIAIAVBHGogAykDCDcCACAFQSRqIAMpAxA3AgAgBUEsaiADKAIYNgIAIAdBMGoiByAKRw0ACwwCC0EIEKcUAAtBARCnFAALIAILIQYgACACNgIIIAAgCTYCBCAAIAY2AgAgA0HgAGokAAuTBQEHfyMAQSBrIgQkAAJAAkACQCABKAIEIgIgASgCACIDKAIcIgVJBEAgAygCGCACQfAAbGoiBigCaCEFIAYoAmQhBiADIAMoAgAiB0EBajYCACAHQQBIDQEgASgCCCEIIAMgAygCACIBQQFqNgIAIAQgBTYCDCAEIAY2AgggBCADNgIEIAFBAEgNASADIAMoAgAiAUEBajYCACABQQBIDQEgAyADKAIAIgFBAWo2AgAgAUEASA0BIAMgAygCACIBQQFqNgIAIAFBAEgNAUEUEJABIgFFDQMgAUEAOgAQIAEgBTYCDCABIAY2AgggASADNgIEIAEgCDYCAEEYEJABIgcNAgwDCyACIAVB5P7IABCFEwsACyAHQQA6ABQgB0GE5scANgIMIAcgATYCCCAHQoGAgIAQNwIAIARBEGogCCAEQQRqIAMgAhCgCEGQARCQASIBRQ0AQeQAEJABIgJFBEAMAQsgAiAHNgJgIAJBADoAXCACIAU2AkggAiAGNgJEIAIgAzYCQCACQSA7ATwgAiAFNgI4IAIgBjYCNCACIAM2AjAgAkEANgIsIAIgBTYCKCACIAY2AiQgAiADNgIgIAJBADYCHCACQX82AhAgAkEANgIIIAJBADYCACABQX42AkggAUEBOwFEIAFBBTYCQCABQbzxxwA2AjwgAUF/NgI4IAFCBDcDMCABQgE3AyggASACNgIkIAFBATYCICABQX42AgAgAUEBOwGMASABQQQ2AogBIAFBlPDHADYChAEgAUKAgICAcDcCfCABQoCAgIDAADcCdCABIAQpAxA3A2ggASAEKAIYNgJwIABBAjYC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AhD9CA0BIAAoAgQgACgCCCACQaDrwgAQvwYNASACQaSyyABBAhD9CARADAILIAIgBjYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCCACQfT6xgBBAhD9CA0BIAJBprLIAEECEP0IDQEgACgCECAAKAIUIAJBoOvCABC/BgRADAILIAJBpLLIAEECEP0IBEAMAgsgA0GhssgAQQEgBBEAACEFDAELQQEhBSABKAIAIgNB08PGAEESIAEoAgQiBigCDCIEEQAADQACQCABLQAKQYABcUUEQCADQbTPxQBBASAEEQAADQIgACgCCCAAKAIMIAMgBhC/BkUNAQwCCyADQZ3jwgBBAiAEEQAADQEgAiAGNgIEIAIgAzYCACACQQE6AA8gAiACQQ9qNgIIIAAoAgggACgCDCACQaDrwgAQvwYNASACQaSyyABBAhD9CA0BCyADQYiQyQBBASAEEQAAIQULIAJBEGokACAFC+cEAQZ/IwBBsAJrIgIkACACQQhqIgQgASgCACIDIAFBBGoiBSABQRBqIgZBACABKAIQGxCkCyACQQE6AIcBIAIgAzYCkAEgAiACQYcBajYCjAEgAiAENgKIASACQaABaiIBIAJBiAFqEJUGAkACQAJAAkAgAigCoAFBfUcEQEGgAhCQASIDRQ0CIAMgAUHIAPwKAAAgAkEBNgKcASACIAM2ApgBIAJBBDYClAFByAAhBEEBIQEDQCACQegBaiACQYgBahCVBiACKALoAUF9RkUEQCACKAKUASABRgRAIAJBlAFqIAFBAUEIQcgAELMRIAIoApgBIQMLIAMgBGogAkHoAWpByAD8CgAAIAIgAUEBaiIBNgKcASAEQcgAaiEEDAELCyAAIAIoApwBNgIIIAAgAikClAE3AgAMAQsgAEEANgIIIABCgICAgIABNwIACyACKAIMIQAgAigCECIEBEAgAEEQaiEBA0AgASgCACIHKAIAIQMgByADQQFrNgIAIANBAUYEQCABKAIAEDALIAFBFGohASAEQQFrIgQNAAsLIAIoAggiBARAIABBBGsoAgAiA0F4cSEBIAEgBEEUbCIEQQRBCCADQQNxIgMbakkNAiADQQBHIAEgBEEnaktxDQMgABC8BQsgBSgCACIBKAIAIQAgASAAQQFrNgIAIABBAUYEQCAFKAIAEDALAkAgBigCACIARQ0A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AhggACACNgJYIABBADoAVCAAIAc2AlAgAEEBOgBMIAAgBDYCOCAAIAE2AjQgACAFNgIwIABBFDoALCAAIAQ2AiggACABNgIkIABBATYCICAAQQE6ABwgAEEBOgBcIABBCzoADCAAIAQ2AgggACABNgIEIABBATYCACAGQSBqJAAPCyABIANBzLvEABCFEwALIAQgB0HMu8QAEIUTAAtBzLvEABCdFQALQbjwyQBBAToAAAAL2QQBBX8jAEEgayIGJAAgASgCACIFKAIAIQQgBSAEQQFqNgIAAkACQAJAAkACQAJAIARBAEgNACABKAIIIQQgASgCBCEBIAUgBSgCACIDQQFqNgIAIANBAEgNACAFQaACaigCACIDIAFNDQIgBUGcAmooAgAgAUEkbGoiA0EgaigCACIHIARNDQMgA0EcaigCACAEQdQAbGoiAygCAEGCgICAeEcNBCAGIAMpAgg3AhAgBiAGQRBqrUKAgICA0AGENwMYIAZBBGpBvIHAACAGQRhqELgMIAUgBSgCACIDQQFqNgIAIANBAEgNAEEQEJABIgNFDQUgAyAENgIMIAMgATYCCCADIAU2AgQgAyACNgIAQRgQkAEiBw0BDAULAAsgB0EAOgAUIAdBlOvHADYCDCAHIAM2AgggB0KBgICAEDcCAEEQEJABIgNFDQMgAyAENgIMIAMgATYCCCADIAU2AgQgAyACNgIAQRgQkAEiAkUNAyACQQA6ABQgAkHg7ccANgIMIAIgAzYCCCACQoGAgIAQNwIAIAAgBikCBDcCECAAIAYoAgw2AhggAEEAOgBcIAAgAjYCWCAAQQA6AFQgACAHNgJQIABBAToATCAAIAQ2AjggACABNgI0IAAgBTYCMCAAQRQ6ACwgACAENgIoIAAgATYCJCAAQQE2AiAgAEEBOgAcIABBDToADCAAIAQ2AgggACABNgIEIABBATYCACAGQSBqJAAPCyABIANBzLvEABCFEwALIAQgB0HMu8QAEIUTAAtBzLvEABCdFQALQbjwyQBBAToAAAAL2QQBBX8jAEEgayIGJAAgASgCACIFKAIAIQQgBSAEQQFqNgIAAkACQAJAAkACQAJAIARBAEgNACABKAIIIQQgASgCBCEBIAUgBSgCACIDQQFqNgIAIANBAEgNACAFQaACaigCACIDIAFNDQIgBUGcAmooAgAg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ASgCBBCnDgJAAkAgBSgCCCICBEAgBSgCDCIBQQBIDQYgAUUEQEEBIQMMAwsgARCQASIDDQFBARCnFAALQYnqxQBBGEGk6sUAEMATAAsgAUUNACADIAIgAfwKAAALIAAgATYCDCAAIAM2AgggACABNgIEIABBBzoAAAwFCyACIARBnLrEABCFEwALIAEgBEGcusQAEIUTAAtBnLrEABCdFQALEJ4VAAsgACABNgIMIAAgAjYCCCAAIAE2AgQgAEEGOgAAIAMgAygCACIAQQFrNgIAIABBAUcNACADEDALIAVBEGokAAuSBAEKfyAAQRxqKAIAIABBBGooAgAgAEEgaigCACIHIABBCGooAgAiAyADIAdLGxCPEyEEIABByABBMCAAQcwAaigCACAAQTRqKAIAIABB0ABqKAIAIgIgAEE4aigCACIGIAIgBkkbEI8TIgUgAiAGayAFG0EASCIFG2ohAiAAIAQgByADayAEGyIDQX9zQR92QRhsaiEHIAAgA0EfdkEYbGoiA0EIaigCACEEIAJBBGooAgAgA0EEaigCACACQQhqKAIAIgYgBCAEIAZLGxCPEyIIIAYgBGsgCBtBAEghBCAAQTBByAAgBRtqIgZBCGooAgAhACAGIAcgAiAEGyAGQQRqKAIAIAdBBGooAgAgACAHQQhqKAIAIgUgACAFSRsQjxMiCCAAIAVrIAgbQQBIIgkbIQAgAyACIAcgCRsgBBsiBUEIaigCACEIIABBBGooAgAgBUEEaigCACAAQQhqKAIAIgogCCAIIApLGxCPEyELIAEgAiADIAQbIgIpAhA3AhAgASACKQIINwIIIAEgAikCADcCACABIAAgBSALIAogCGsgCxtBAEgiAxsiAikCEDcCKCABIAIpAgg3AiAgASACKQIANwIYIAEgBSAAIAMbIgApAhA3AkAgASAAKQIINwI4IAEgACkCADcCMCABIAcgBiAJGyIAKQIANwJIIAEgACkCCDcCUCABIAApAhA3AlgLjgQCAn8FfiMAQdAAayIEJAAgBEIANwM4IARCADcDQCAEIAE3AzAgBCABQvPK0cunjNmy9ACFNwMgIAQgAULt3pHzlszct+QAhTcDGCAEIAA3AyggBCAAQuHklfPW7Nm87ACFNwMQIAQgAEL1ys2D16zbt/MAhTcDCCAEIAM2AkwgBEEIaiAEQcwAakEEEJYIIAMEQCADQQxsIQUgAkEIaiEDA0AgBEEIaiICIANBBGsoAgAgAygCABCWCCAEQf8BOgBMIAIgBEHMAGpBARCWCCADQQxqIQMgBUEMayIFDQALCyAEKQMIIQEgBCkDGCEAIAQ1AkAhBiAEKQM4IQcgBCkDICEIIAQpAxAhCSAEQdAAaiQAIAAgAXwiCkIgiSAHIAZCOIaEIgYgCIUiASAJfCIHIAFCEImFIgF8IgggAUIViYUhASABIAcgAEINiSAKhSIHfCIJQiCJQv8BhXwiCiABQhCJhSEAIAAgCSAHQhGJhSIBIAYgCIV8IgZCIIl8IgcgAEIViYUhACAAIAYgAUINiYUiASAKfCIGQiCJfCIIIABCEImFIQAgACAGIAFCEYmFIgEgB3wiBkIgiXwiByAAQhWJhSEAIAAgAUINiSAGhSIBIAh8IgZCIIl8IgggAUIRiSAGhSIBIAd8IAFCDYmFIgF8IgYgAEIQiSAIhUIViSABQhGJhSAGQiCJhYULuAQCBn8DfiMAQRBrIgYkAAJAAkAgASgCvAJFDQAgASgCtAIiBCACQd3L3Z55bEEPdyIFcSEDIAVBGXatQoGChIiQoMCAAX4hCyABKAKwAiEFA0AgAyAFaikAACIKIAuFIglCgYKEiJCgwIABfSAJQn+Fg0KAgYKEiJCgwIB/gyIJQgBSBEADQCACIAUgCXqnQQN2IANqIARxQQN0ayIIQQhrKAIARg0EIAlCAX0gCYMiCUIAUg0ACwsgCiAKQgGGg0KAgYKEiJCgwIB/g0IAUg0BIAdBCGoiByADaiAEcSEDDAALAAtB1LnEAEEWQZS5xAAQwBMACwJAAkACQAJ/An8CQAJAAkAgCEEEaygCACIDIAEoAqwCIgRJBEAgASgCqAIgA0EobGoiA0EMaiEEQQghBQJAAkACQAJAIAMoAghBAmsOAgEABwsgBCgCAEEBaw4CBAIBCyAEKAIADQQLQQAhBCAGQQhqIQUgBkEMaiEHIAMoAhAMBQsMAgsgAyAEQfT+yAAQhRMAC0EBIQQgAygCEAwDCyADQRBqIQRBDCEFCyAGIAQoAgA2AgwgA0EIaiAFaigCACEEIAZBBGohBSAGQQhqIQdBAQshAyAHIAM2AgAgBSAENgIAIAYoAgwiAyACRw0BIAYoAgghBCAGKAIECyEDIARFDQEgAiADRg0BCyABIAEoAgAiAkEBajYCACACQQBODQEAC0Hk8MYAEJ0VAAsgACADNgIEIAAgATYCACAGQRBqJAAL3QQCBX8BfiMAQTBrIgIkACACIABBNGo2AgAgASgCACIEQfDlxQBBCSABKAIEKAIMIgURAAAhBiACIAE2AgRBASEDAkAgBg0AIAEtAApBgAFxRQRAIARBl+PCAEEDIAURAAANASABKAIAQfnlxQBBBCABKAIEKAIMEQAADQEgASgCAEGmssgAQQIgASgCBCgCDBEAAA0BIAIgAEEQajYCHCABQYP3xQBBBUGI8sUAQQMgAEHnAUGQxMYAQQUgAEEcakHoAUHu98UAQQggAEEoakHoAUH298UAQREgAkEcakHpARC7ECEDDAELIARBmuPCAEEDIAURAAANACABKQIAIQcgAkEBOgAbIAIgBzcCDCACQaDrwgA2AiAgAiABKQIINwIkIAIgAkEbajYCFCACIAJBDGoiATYCHCABQfnlxQBBBBD9CA0AIAFBprLIAEECEP0IDQAgAiAAQRBqNgIsIAJBHGpBg/fFAEEFQYjyxQBBAyAAQecBQZDExgBBBSAAQRxqQegBQe73xQBBCCAAQShqQegBQfb3xQBBESACQSxqQekBELsQBEAMAQsgAigCHEGkssgAQQIgAigCICgCDBEAACEDCyACIAM6AAggAkEBOgAJIAJBBGpB/eXFAEEMIAJBzAEQiQ4hACACLQAJIgMgAi0ACCIEciEBAkAgA0EBRw0AIARBAXENACAAKAIAIgAtAApBgAFxRQRAIAAoAgBB7erCAEECIAAoAgQoAgwRAAAhAQwBCyAAKAIAQaGyyABBASAAKAIEKAIMEQAAIQELIAJBMGokACABQQFxC98DAQd/AkAgACgCACIBQX9GDQACQAJAQQMgAUECayABQQFNG0ECaw4CAAECCyAAQQRqEMYRDAELAkAgAUUEQCAAKAIEIgEoAgAhAiABIAJBAWs2AgAgAkEBRg0BDAILIAAoAgQiASgCACECIAEgAkEBazYCACACQQFHDQELIAAoAgQQMAsCQAJAAkAgACgCMCIBRQ0AIAEgAUECdEELakF4cSIBakEJaiIERQ0AIAAoAiwgAWsiAkEEaygCACIBQXhxIQMgA0EEQQggAUEDcSIBGyAEakkNASABQQBHIAMgBEEnaktxDQIg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cUUEQCAEQbTPxQBBASAFEQAADQYgAyABENcPRQ0BDAYLIARBnePCAEECIAURAAANBSACQQE6AA8gAiAGNgIEIAIgBDYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgAyACQRBqENcPDQUgAigCEEGkssgAQQIgAigCFCgCDBEAAA0FCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMBAsgAiAAQQhqNgIQIAFB9OzEAEEKIANB2QAgAkEQakHaABDyDCEADAMLQQEhACABKAIAIgRB65nJAEEEIAEoAgQiBigCDCIFEQAADQICQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQQgAyABENgPRQ0BDAQLIARBnePCAEECIAURAAANAyACQQE6AA8gAiAGNgIEIAIgBDYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgAyACQRBqENgPDQMgAigCEEGkssgAQQIgAigCFCgCDBEAAA0DCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQAMAgsgAiAAQQhqNgIQIAFB/uzEAEEJIANB2wAgAkEQakHcABDyDCEADAELIAIgAEEIajYCECABQYftxABBEiADQd0AIAJBEGpB2gAQ8gwhAAsgAkEgaiQAIAALtwQBBH8jAEEgayIEJAACQAJAAkACQAJAAkACQAJAIAACfwJAAkACQCABKAIAQQFrDgIBAgALIARBCGogASgCBEEIaiABKAIIENEQIAQoAgwhASAEKAIIDAILIAEoAgghAiABKAIEQQFGBEAgASgCFCIFQaACaigCACIDIAJNDQMgASgCDCIDIAVBnAJqKAIAIAJBJGxqIgJBIGooAgAiBU8NBCACQRxqKAIAIANB1ABsaiICKAIAQYCAgIB4Rw0FIAEoAhAiASACKAIkIgNPDQYgAigCICABQdwAbGoiAigCJCEBIAIoAiAMAgsgBEEQaiABKAIUQQhqIAIQ0BAgBCgCFCEBIAQoAhAMAQsgASgCCCECIAEoAgRBAUYEQCABKAIUIgVBoAJqKAIAIgMgAk0NBiABKAIMIgMgBUGcAmooAgAgAkEkbGoiAkEgaigCACIFTw0HIAJBHGooAgAgA0HUAGxqIgIoAgBBgICAgHhHDQggASgCECIBIAIoAiQiA08NCSACKAIgIAFB3ABsaiICKAIkIQEgAigCIAwBCyAEQRhqIAEoAhRBCGogAhDQECAEKAIcIQEgBCgCGAs2AgAgACABNgIEIARBIGokAA8LIAIgA0GUvsQAEIUTAAsgAyAFQZS+xAAQhRMAC0GUvsQAEJ0VAAsgASADQaS+xAAQhRMACyACIANBlL7EABCFEwALIAMgBUGUvsQAEIUTAAtBlL7EABCdFQALIAEgA0GkvsQAEIUTAAvRAwEGfyAAKAIEIQQgACgCCCICBEAgBCEBA0ACQCABKAIADQAgAUEEaigCAA0AIAFBCGoiBSgCACIGKAIAIQMgBiADQQFrNgIAIANBAUcNACAFKAIAEIcQCyABQRBqIQEgAkEBayICDQALCwJAAkAgACgCACICBEAgBEEEaygCACIDQXhxIQEgASACQQR0IgJBBEEIIANBA3EiAxtySQ0BIANBAEcgASACQSdqS3ENAiAEELwFCyAAKAIQIQQgACgCFCICBEAgBCEBA0ACQCABKAIADQAgAUEEaigCAA0AIAFBCGoiBSgCACIGKAIAIQMgBiADQQFrNgIAIANBAUcNACAFKAIAEIcQCyABQRBqIQEgAkEBayICDQALCyAAKAIMIgIEQCAEQQRrKAIAIgNBeHEhASABIAJBBHQiAkEEQQggA0EDcSIDG3JJDQEgA0EARyABIAJBJ2pLcQ0CIAQQvAULIAAoAhgiAQRAIAAoAhwiBEEEaygCACICQXhxIQAgACABQQN0IgFBBEEIIAJBA3EiAhtqSQ0BIAJBAEcgACABQSdqS3ENAiAEELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC/8DAgd/AX4jAEEwayIIJABBGCEFA0AgBSIGIAhBCGpqIglBCGsgAyIMIANCkM4AgCIDQpDOAH59pyILQf//A3FB5ABuIgVBAXQvAJyYSTsAACAJQQZrIAsgBUHkAGxrQf//A3FBAXQvAJyYSTsAACAGQQRrIQUgDEL/wdcvVg0ACwJAIAxCv4Q9WARAIAZBCGshByADpyEFDAELIAVBBmshByADpyIGQf//A3FB5ABuIQUgCEEIaiAHaiAGIAVB5ABsa0H//wNxQQF0LwCcmEk7AAALAkAgBUEKTwRAIAdBAmsiByAIQQhqaiAFQQF0LwCcmEk7AAAMAQsgB0EBayIHIAhBCGpqIAVBMHI6AAALQQAhBSABQQA2AghBFCAHayEKIAEoAgAhCUEVIAdrIgtBACAEayIGTQRAIAECfwJAIAkgBiALa0EBaiIGSQRAIAFBACAGQQFBARCzESABKAIAIQkgASgCCCEFDAELQQAgBkUNARoLIAYEQCABKAIEIAVqQTAgBvwLAAsgBSAGagsiBTYCCAsCQAJAIAkgBWsgCkkEQCABIAUgCkEBQQEQsxEgASgCCCEFDAELIAdBFEYNAQsgCkUNACABKAIEIAVqIAhBCGogB2ogCvwKAAALIAEgBSAKaiIGNgIIIAAgASACIAQgBmoQzwwgCEEwaiQAC90DAQZ/IwBBEGsiAiQAAkACf0EAIAAoAgQiBkUNABoCfyAAKAIAIgUsAAAiAEEATgRAIABB/wFxDAELIAUtAAFBP3EhAyAAQR9xIQQgBEEGdCADciAAQV9NDQAaIAUtAAJBP3EgA0EGdHIhAyADIARBDHRyIABBcEkNABogBEESdEGAgPAAcSAFLQADQT9xIANBBnRycgsiAEHfAHEgACAAQeEAa0EaSRshAAJAIAEtAAtBGHFFBEAgASgCACAAIAEoAgQoAhARAQBFDQFBAQwCCyACQQA2AgwgASACQQxqAn8gAEGAAU8EQCAAQT9xQYB/ciEEIABBBnYhAyAAQYAQSQRAIAIgBDoADSACIANBwAFyOgAMQQIMAgsgAEEMdiEHIANBP3FBgH9yIQMgAEH//wNNBEAgAiAEOgAOIAIgAzoADSACIAdB4AFyOgAMQQMMAgsgAiAEOgAPIAIgAzoADiACIAdBP3FBgH9yOgANIAIgAEESdkFwcjoADEEEDAELIAIgADoADEEBCxCdBEUNAEEBDAELIAZBAUcEQCAFLAABQUBIDQILIAEoAgAgBUEBaiAGQQFrIAEoAgQoAgwRAAALIAJBEGokAA8LIAUgBkEBIAZBoP7HABD9FAAL3wQBAX8jAEEwayIEJAACQAJAAkACQAJAAkACQAJAAkAgAUH/AXFBAWsOAwMAAQILQQkQkAEiAUUNAyABQdTOxQAtAAA6AAggAUHMzsUAKQAANwAAIARBCTYCCCAEIAE2AgQgBEEJNgIAIAMgBBD8DSAEIAMgAhDJASAEKAIAQX5HBEAgACAEKQIoNwIoIAAgBCkCIDcCICAAIAQpAhg3AhggACAEKQIQNwIQIAAgBCkCCDcCCCAAIAQpAgA3AgAMCAtBARCQASIBRQ0EIAFBKToAACAEQQE2AgggBCABNgIEIARBATYCACADIAQQ/A0gAEF+NgIADAcLIAAgAyACEMkBDAYLIAQgAyACEMkBIAQoAgBBfkcEQCAAIAQpAig3AiggACAEKQIgNwIgIAAgBCkCGDcCGCAAIAQpAhA3AhAgACAEKQIINwIIIAAgBCkCADcCAAwGC0EHEJABIgFFDQMgAUHIzsUAKAAANgADIAFBxc7FACgAADYAACAEQQc2AgggBCABNgIEIARBBzYCACADIAQQ/A0gAEF+NgIADAULIAQgAyACEMkBIAQoAgBBfkcEQCAAIAQpAig3AiggACAEKQIgNwIgIAAgBCkCGDcCGCAAIAQpAhA3AhAgACAEKQIINwIIIAAgBCkCADcCAAwFC0EGEJABIgFFDQMgAUG8zMUALwAAOwAEIAFBuMzFACgAADYAACAEQQY2AgggBCABNgIEIARBBjYCACADIAQQ/A0gAEF+NgIADAQLQQEQpxQAC0EBEKcUAAtBARCnFAALQQEQpxQACyAEQTBqJAALlAQCA34MfyAAKQMQIAApAxggARDUByICpyAAKAIEIglxIQUgAkIZiEL/AINCgYKEiJCgwIABfiEEIAEoAgwhDCABKAIIIQYgASgCBCEKIAEoAhAhDSABKAIAIQ4gACgCACEBAn8CQANAAkAgASAFaikAACIDIASFIgJCgYKEiJCgwIABfSACQn+Fg0KAgYKEiJCgwIB/gyICQgBSBEADQAJAIA4gASACeqdBA3YgBWogCXEiD0FsbGoiB0EUaygCAEcNACANIAdBBGsoAgBHDQAgCiAHQRBrIhAoAgBHDQAgB0EMaygCACEIAkACQAJAAkACQCAKQQFrDgQCAwABAwsgBiAIRg0DDAQLIAYgCEcNAwwCCyAGIAhGDQEMAgsgBiAIRw0BDAQLIAwgB0EIaygCAEYNAwsgAkIBfSACgyICQgBSDQALCyADIANCAYaDQoCBgoSIkKDAgH+DQgBSDQIgC0EIaiILIAVqIAlxIQUMAQsLQYABIQUgD0EUbEEUbSIGIAFqIgcpAAAiAkIBhiACg0KAgYKEiJCgwIB/g3qnQQN2IAEgBkEIayAJcWoiASkAACICQgGGIAKDQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgACAAKAIIQQFqNgIIQf8BIQULIAcgBToAACABQQhqIAU6AAAgACAAKAIMQQFrNgIMQQEgECgCAEF/Rw0BGgtBAAsL+QQBAX8gAEIANwAIIABCADcAACAAQQA2ACAgAEIANwAYIABCADcAECAAQS06AAggACABLQAAIgJBD3EtAOS2SToAASAAIAJBBHYtAOS2SToAACAAIAEtAAEiAkEPcS0A5LZJOgADIAAgAkEEdi0A5LZJOgACIAAgAS0AAiICQQ9xLQDktkk6AAUgACACQQR2LQDktkk6AAQgACABLQADIgJBD3EtAOS2SToAByAAIAJBBHYtAOS2SToABiAAIAEtAAQiAkEPcS0A5LZJOgAKIAAgAkEEdi0A5LZJOgAJIAEtAAUhAiAAQS06AA0gACACQQ9xLQDktkk6AAwgACACQQR2LQDktkk6AAsgACABLQAGIgJBD3EtAOS2SToADyAAIAJBBHYtAOS2SToADiABLQAHIQIgAEEtOgASIAAgAkEPcS0A5LZJOgARIAAgAkEEdi0A5LZJOgAQIAAgAS0ACCICQQ9xLQDktkk6ABQgACACQQR2LQDktkk6ABMgAS0ACSECIABBLToAFyAAIAJBD3EtAOS2SToAFiAAIAJBBHYtAOS2SToAFSAAIAEtAAoiAkEPcS0A5LZJOgAZIAAgAkEEdi0A5LZJOgAYIAAgAS0ACyICQQ9xLQDktkk6ABsgACACQQR2LQDktkk6ABogACABLQAMIgJBD3EtAOS2SToAHSAAIAJBBHYtAOS2SToAHCAAIAEtAA0iAkEPcS0A5LZJOgAfIAAgAkEEdi0A5LZJOgAeIAAgAS0ADiICQQ9xLQDktkk6ACEgACACQQR2LQDktkk6ACAgACABLQAPIgFBD3EtAOS2SToAIyAAIAFBBHYtAOS2SToAIgugAwEHfyAAKAIEIQQCQAJAIAAoAggiAgRAIAQhAQNAIAEoAgAiA0EASgRAIAFBBGooAgAiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyADakkNAyAFQQBHIAYgA0EnaktxDQQgBxC8BQsgAUEYaiEBIAJBAWsiAg0ACwsgACgCACICBEAgBEEEaygCACIDQXhxIQEgASACQRhsIgJBBEEIIANBA3EiAxtqSQ0BIANBAEcgASACQSdqS3ENAiAEELwFCyAAKAIQIQQgACgCFCICBEAgBCEBA0AgASgCACIDBEAgAUEEaigCACIHQQRrKAIAIgVBeHEhBiAGQQRBCCAFQQNxIgUbIANqSQ0DIAVBAEcgBiADQSdqS3ENBCAHELwFCyABQRhqIQEgAkEBayICDQALCyAAKAIMIgEEQCAEQQRrKAIAIgJBeHEhACAAIAFBGGwiAUEEQQggAkEDcSICG2pJDQEgAkEARyAAIAFBJ2pLcQ0CIAQQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALoQMBBX8CQAJAAkAgACgCACIFKAIARQRAIAUoAgQiAhDZASACQQRrKAIAIgBBA3EhASAAQXhxQZQCQZgCIAEbSQ0DIAFFDQEgAEG4AkkNAQwCCyAFKAIEIgIoAgQhASACKAIIIgMEQCABIQADQCAAENkBIABBkAJqIQAgA0EBayIDDQALCyACKAIAIgMEQCABQQRrKAIAIgRBeHEhACAAIANBkAJsIgNBBEEIIARBA3EiBBtySQ0DIARBAEcgACADQSdqS3ENAiABELwFCyACKAIMIgAEQCACKAIQIgNBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgAGpJDQMgBEEARyABIABBJ2pLcQ0CIAMQvAULIAJBGGoQ2gMgAkEEaygCACIBQXhxIQAgAEEoQSwgAUEDcSIBG0kNAiABRQ0AIABBzABPDQELIAIQvAUgBUEEaygCACIAQQNxIQEgAEF4cUEMQRAgARtJDQEgAUEARyAAQTBPcQ0AIAUQvAUPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAu9AwEFfwJAAkACQAJAAkACQAJAQQUgACgCECICQYCAgIB4cyACQQBOGw4FBAQEAQIACwJAIAAoAiAiA0UNACADQQJ0QQtqQXhxIgEgA2pBCWoiA0UNACAAKAIcIAFrIgVBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgA2pJDQYgBEEARyABIANBJ2pLcQ0FIAUQvAULIAAoAhQhAyAAKAIYIgEEQCADIQADQCAAENIIIABBQGshACABQQFrIgENAAsLIAJFDQMgA0EEaygCACIBQXhxIQAgACACQQZ0IgJBBEEIIAFBA3EiARtySQ0FIAFFDQIgACACQSdySw0EDAILIAAoAgAiAkUNAiAAKAIEIgNBBGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgAmpJDQQgAUUNASAAIAJBJ2pNDQEMAwsgABCPCSAAKAIAIgJFDQEgACgCBCIDQQRrKAIAIgFBeHEhACAAIAJBMGwiAkEEQQggAUEDcSIBG3JJDQMgAUUNACAAIAJBJ2pNDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAu9AwEFfwJAAkACQAJAAkACQAJAQQUgACgCECICQYCAgIB4cyACQQBOGw4FBAQEAQIACwJAIAAoAiAiA0UNACADQQJ0QQtqQXhxIgEgA2pBCWoiA0UNACAAKAIcIAFrIgVBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgA2pJDQYgBEEARyABIANBJ2pLcQ0FIAUQvAULIAAoAhQhAyAAKAIYIgEEQCADIQADQCAAENYIIABBQGshACABQQFrIgENAAsLIAJFDQMgA0EEaygCACIBQXhxIQAgACACQQZ0IgJBBEEIIAFBA3EiARtySQ0FIAFFDQIgACACQSdySw0EDAILIAAoAgAiAkUNAiAAKAIEIgNBBGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgAmpJDQQgAUUNASAAIAJBJ2pNDQEMAwsgABCUCSAAKAIAIgJFDQEgACgCBCIDQQRrKAIAIgFBeHEhACAAIAJBMGwiAkEEQQggAUEDcSIBG3JJDQMgAUUNACAAIAJBJ2pNDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAu9AwEFfwJAAkACQAJAAkACQAJAQQUgACgCECICQYCAgIB4cyACQQBOGw4FBAQEAQIACwJAIAAoAiAiA0UNACADQQJ0QQtqQXhxIgEgA2pBCWoiA0UNACAAKAIcIAFrIgVBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgA2pJDQYgBEEARyABIANBJ2pLcQ0FIAUQvAULIAAoAhQhAyAAKAIYIgEEQCADIQADQCAAENkIIABBQGshACABQQFrIgENAAsLIAJFDQMgA0EEaygCACIBQXhxIQAgACACQQZ0IgJBBEEIIAFBA3EiARtySQ0FIAFFDQIgACACQSdySw0EDAILIAAoAgAiAkUNAiAAKAIEIgNBBGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgAmpJDQQgAUUNASAAIAJBJ2pNDQEMAwsgABCVCSAAKAIAIgJFDQEgACgCBCIDQQRrKAIAIgFBeHEhACAAIAJBMGwiAkEEQQggAUEDcSIBG3JJDQMgAUUNACAAIAJBJ2pNDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAu9AwEFfwJAAkACQAJAAkACQAJAQQUgACgCECICQYCAgIB4cyACQQBOGw4FBAQEAQIACwJAIAAoAiAiA0UNACADQQJ0QQtqQXhxIgEgA2pBCWoiA0UNACAAKAIcIAFrIgVBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgA2pJDQYgBEEARyABIANBJ2pLcQ0FIAUQvAULIAAoAhQhAyAAKAIYIgEEQCADIQADQCAAEN4IIABBQGshACABQQFrIgENAAsLIAJFDQMgA0EEaygCACIBQXhxIQAgACACQQZ0IgJBBEEIIAFBA3EiARtySQ0FIAFFDQIgACACQSdySw0EDAILIAAoAgAiAkUNAiAAKAIEIgNBBGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgAmpJDQQgAUUNASAAIAJBJ2pNDQEMAwsgABCXCSAAKAIAIgJFDQEgACgCBCIDQQRrKAIAIgFBeHEhACAAIAJBMGwiAkEEQQggAUEDcSIBG3JJDQMgAUUNACAAIAJBJ2pNDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAu9AwEFfwJAAkACQAJAAkACQAJAQQUgACgCECICQYCAgIB4cyACQQBOGw4FBAQEAQIACwJAIAAoAiAiA0UNACADQQJ0QQtqQXhxIgEgA2pBCWoiA0UNACAAKAIcIAFrIgVBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgA2pJDQYgBEEARyABIANBJ2pLcQ0FIAUQvAULIAAoAhQhAyAAKAIYIgEEQCADIQADQCAAENwIIABBQGshACABQQFrIgENAAsLIAJFDQMgA0EEaygCACIBQXhxIQAgACACQQZ0IgJBBEEIIAFBA3EiARtySQ0FIAFFDQIgACACQSdySw0EDAILIAAoAgAiAkUNAiAAKAIEIgNBBGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgAmpJDQQgAUUNASAAIAJBJ2pNDQEMAwsgABCZCSAAKAIAIgJFDQEgACgCBCIDQQRrKAIAIgFBeHEhACAAIAJBMGwiAkEEQQggAUEDcSIBG3JJDQMgAUUNACAAIAJBJ2pNDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAvMAwEEfwJAAkACQCAAKAIgIgRFDQAgACgCLCIDIAAoAiQiAWtB5ABuIQIgASADRwRAA0AgARDAByABQeQAaiEBIAJBAWsiAg0ACwsgACgCKCICRQ0AIARBBGsoAgAiA0F4cSEBIAEgAkHkAGwiAkEEQQggA0EDcSIDG2pJDQEgA0EARyABIAJBJ2pLcQ0CIAQQvAULAkAgACgCACIERQ0AIAAoAgwiAyAAKAIEIgFrQeQAbiECIAEgA0cEQANAIAEQwAcgAUHkAGohASACQQFrIgINAAsLIAAoAggiAkUNACAEQQRrKAIAIgNBeHEhASABIAJB5ABsIgJBBEEIIANBA3EiAxtqSQ0BIANBAEcgASACQSdqS3ENAiAEELwFCwJAIAAoAhAiBEUNACAAKAIcIgMgACgCFCIBa0HkAG4hAiABIANHBEADQCABEMAHIAFB5ABqIQEgAkEBayICDQALCyAAKAIYIgFFDQAgBEEEaygCACICQXhxIQAgACABQeQAbCIBQQRBCCACQQNxIgIbakkNASACQQBHIAAgAUEnaktxDQIgBBC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAu9AwEFfwJAAkACQAJAAkACQAJAQQUgACgCECICQYCAgIB4cyACQQBOGw4FBAQEAQIACwJAIAAoAiAiA0UNACADQQJ0QQtqQXhxIgEgA2pBCWoiA0UNACAAKAIcIAFrIgVBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgA2pJDQYgBEEARyABIANBJ2pLcQ0FIAUQvAULIAAoAhQhAyAAKAIYIgEEQCADIQADQCAAEN0IIABBQGshACABQQFrIgENAAsLIAJFDQMgA0EEaygCACIBQXhxIQAgACACQQZ0IgJBBEEIIAFBA3EiARtySQ0FIAFFDQIgACACQSdySw0EDAILIAAoAgAiAkUNAiAAKAIEIgNBBGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgAmpJDQQgAUUNASAAIAJBJ2pNDQEMAwsgABCaCSAAKAIAIgJFDQEgACgCBCIDQQRrKAIAIgFBeHEhACAAIAJBMGwiAkEEQQggAUEDcSIBG3JJDQMgAUUNACAAIAJBJ2pNDQAMAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAuKBAIFfwF+IwBB4ABrIgIkACACQQxqIAEQ0wcCQAJAAkAgAigCDEECRwRAIAEoAgAEQCABKAIMIAEoAgRrQRRuIQMLIAEoAhAEfyABKAIcIAEoAhRrQRRuBUEACyADaiIEQebMmTNPDQICQEEDIAQgBEEDTRtBAWoiBEEUbCIFRQRAQQAhBEEEIQMMAQsgBRCQASIDRQ0ECyADIAIoAhw2AhAgAyACKQIUNwIIIAMgAikCDDcCACACQQE2AgggAiADNgIEIAIgBDYCACACIAEpAiA3A0AgAiABKQIYNwM4IAIgASkCEDcDMCACIAEpAgg3AyggAiABKQIANwMgQRQhBEEBIQEDQCACQcwAaiACQSBqENMHIAIoAkxBAkZFBEAgAigCACABRgRAQQAhA0EAIQUgAigCIARAIAIoAiwgAigCJGtBFG4hBQsgAiABIAIoAjAEfyACKAI8IAIoAjRrQRRuBUEACyAFakEBakEEQRQQsxEgAigCBCEDCyACKQJUIQcgAigCXCEGIAMgBGoiBSACKQJMNwIAIAUgBjYCECAFIAc3AgggAiABQQFqIgE2AgggBEEUaiEEDAELCyACQSBqENoLIAAgAigCCDYCCCAAIAIpAgA3AgAMAQsgAEEANgIIIABCgICAgMAANwIAIAEQ2gsLIAJB4ABqJAAPCxCeFQALQQQQpxQAC/wDAgR+B38gACgCDEUEQEEADwsgACkDECAAKQMYIAEQ6wkiAqcgACgCBCIHcSEGIAJCGYhC/wCDQoGChIiQoMCAAX4hBCABKQMAIQUgACgCACEAAn8CQCABKAIIIgoEQCABKAIMIQEDQCAAIAZqKQAAIgMgBIUiAkKBgoSIkKDAgAF9IAJCf4WDQoCBgoSIkKDAgH+DIgJCAFIEQANAAkAgBSAAIAJ6p0EDdiAGaiAHcSILQQV0ayIJQSBrKQMAUg0AIAlBGGsoAgAiDEUNACABIAlBFGsoAgBHDQAgCiAMIAEQjxMNAEEAIAtrIQEMBQsgAkIBfSACgyICQgBSDQALC0EAIAMgA0IBhoNCgIGChIiQoMCAf4NCAFINAxogCEEIaiIIIAZqIAdxIQYMAAsAC0EAIQEDQAJAIAAgBmopAAAiAyAEhSICQoGChIiQoMCAAX0gAkJ/hYNCgIGChIiQoMCAf4MiAlANAANAAkAgACACeqdBA3YgBmogB3EiCEEFdGsiCUEgaykDACAFUQRAIAlBGGsoAgBFDQELIAJCAX0gAoMiAkIAUg0BDAILC0EAIAhrIQEMAgtBACADIANCAYaDQoCBgoSIkKDAgH+DQgBSDQIaIAFBCGoiASAGaiAHcSEGDAALAAsgACABQQV0agsiAEEQa0EAIAAbC8wDAQR/IAAoApQBIgMoAgAhASADIAFBAWs2AgAgAUEBRgRAIAAoApQBEDALAkACQAJAIAAoAnwiBEF/Rg0AIAAoAoABIQMgACgChAEiAgRAIAMhAQNAIAEQpgcgAUHIAWoQiAQgAUHoAWohASACQQFrIgINAAsLIARFDQAgA0EEaygCACICQXhxIQEgASAEQegBbCIEQQRBCCACQQNxIgIbakkNASACQQBHIAEgBEEnaktxDQIgAxC8BQsgAC0AIEH/AUcEQCAAQSBqEK8ECyAAKAJ0IQMgACgCeCICBEAgAyEBA0AgARCLBSABQUBrIQEgAkEBayICDQALCyAAKAJwIgIEQCADQQRrKAIAIgRBeHEhASABIAJBBnQiAkEEQQggBEEDcSIEG3JJDQEgBEEARyABIAJBJ3JLcQ0CIAMQvAULAkAgACgCiAFBf0YNACAAQYgBaiIBEKUEIAEoAgAiAUUNACAAKAKMASIDQQRrKAIAIgJBeHEhACAAIAFByAFsIgFBBEEIIAJBA3EiAhtqSQ0BIAJBAEcgACABQSdqS3ENAiADELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6IEAQd/IwBB0AFrIgQkAAJAAkACQCABKAIIIgIgASgCBCIFKAIcIgNJBEAgASgCACEDIAUoAhggAkHwAGxqIgIoAmghBiACKAJkIQIgBSAFKAIAIgdBAWo2AgAgB0EASA0BIAQgBjYCeCAEIAI2AnQgBCAFNgJwIARBADYCbCAEQQhqIgYgAyAEQewAaiIDEPgMQdgBEJABIgJFDQIgAyAGEOQFQeQAEJABIgdFDQMgByADQeQA/AoAACADIAYQ5AVB5AAQkAEiCEUNAyAIIANB5AD8CgAAQeQAEJABIgNFDQMgAyAGQeQA/AoAACACQQA7AdQBIAJBBDYC0AEgAkH98McANgLMASACQX82AsgBIAJCBDcDwAEgAkIBNwO4ASACIAM2ArQBIAJBATYCsAEgAkF+NgKQASACQQA7AYwBIAJBBDYCiAEgAkH58McANgKEASACQX82AoABIAJCBDcDeCACQgE3A3AgAiAINgJsIAJBATYCaCACQX42AkggAkEAOwFEIAJBBTYCQCACQfTwxwA2AjwgAkF/NgI4IAJCBDcDMCACQgE3AyggAiAHNgIkIAJBATYCICACQX42AgAgAEEDNgIIIAAgAjYCBCAAQQM2AgAgBSAFKAIAIgBBAWs2AgAgAEEBRgRAIAEoAgQQMAsgBEHQAWokAA8LIAIgA0Hk/sgAEIUTCwALQbjwyQBBAToAAAALQbjwyQBBAToAAAALgQQCB38BfgJAIAAoAiAiAUUEQCAAKAIIIQIgAEEANgIIIAJFDQEgACgCBCEBA0ACQCABKAIADQAgAUEEaigCAA0AIAFBCGoiBCgCACIDKAIAIQAgAyAAQQFrNgIAIABBAUcNACAEKAIAEIcQCyABQRBqIQEgAkEBayICDQALDAELIAAgAUEBayIBNgIgIAAoAhwgAUEDdGoiASgCACEFIAAoAggiAiABKAIEIgRLBEAgACAENgIIIAIgBGshAiAAKAIEIARBBHRqIQEDQAJAIAEoAgANACABQQRqKAIADQAgAUEIaiIGKAIAIgcoAgAhAyAHIANBAWs2AgAgA0EBRw0AIAYoAgAQhxALIAFBEGohASACQQFrIgINAAsLIAQgBU8NACAAKAIUIgEgBCAFayIDaiECIAEgAk8EQCAAIAI2AhQgAUEEdCEBIAJBBHQhAiAAKAIQIQZBACADayIHIAAoAgAgACgCCCIDa0sEQCAAIAMgB0EEQRAQsxEgACgCCCEDCyABIAJHBEAgBEEEdCAFQQR0ayEEIAEgBmpBEGshASAAKAIEIANBBHRqIQIDQCABKQIAIQggAiABKQIINwIIIAIgCDcCACABQRBrIQEgAkEQaiECIANBAWohAyAEQRBqIgQNAAsLIAAgAzYCCA8LIAIgASABQZilyAAQhw4ACwurBAECfyMAQSBrIgkkAAJAIAAoAgAiCiABIAIgACgCBCgCDCIBEQAABEBBASECDAELAkAgAC0ACkGAAXFFBEBBASECIApBtM/FAEEBIAERAAANAiADIAAgBBEBAEUNAQwCCyAKQZ3jwgBBAiABEQAABEBBASECDAILQQEhAiAJQQE6AA8gCUGg68IANgIUIAkgACkCADcCACAJIAApAgg3AhggCSAJQQ9qNgIIIAkgCTYCECADIAlBEGogBBEBAA0BIAkoAhBBpLLIAEECIAkoAhQoAgwRAAANAQsCQCAALQAKQYABcUUEQCAAKAIAQYizyQBBAiAAKAIEKAIMEQAABEAMAwsgBSAAIAYRAQBFDQEMAgsgCUEBOgAPIAlBoOvCADYCFCAJIAApAgA3AgAgCSAAKQIINwIYIAkgCUEPajYCCCAJIAk2AhAgBSAJQRBqIAYRAQANASAJKAIQQaSyyABBAiAJKAIUKAIMEQAADQELAkAgAC0ACkGAAXFFBEAgACgCAEGIs8kAQQIgACgCBCgCDBEAAARADAMLIAcgACAIEQEARQ0BDAILIAlBAToADyAJQaDrwgA2AhQgCSAAKQIANwIAIAkgACkCCDcCGCAJIAlBD2o2AgggCSAJNgIQIAcgCUEQaiAIEQEADQEgCSgCEEGkssgAQQIgCSgCFCgCDBEAAA0BCyAAKAIAQYiQyQBBASAAKAIEKAIMEQAAIQILIAlBIGokACACC+0DAgR/BX4jAEHQAGsiAyQAIANCADcDOCADQgA3A0AgAyABNwMwIAMgAULzytHLp4zZsvQAhTcDICADIAFC7d6R85bM3LfkAIU3AxggAyAANwMoIAMgAELh5JXz1uzZvOwAhTcDECADIABC9crNg9es27fzAIU3AwggAigCBCEGIAMgAigCADYCTCADQQhqIgQgA0HMAGoiBUEEEJYIIAMgBjYCTCAEIAVBBBCWCCADIAIoAgg2AkwgBCAFQQQQlgggAykDCCEBIAMpAxghACADNQJAIQcgAykDOCEIIAMpAyAhCSADKQMQIQogA0HQAGokACAAIAF8IgtCIIkgCCAHQjiGhCIHIAmFIgEgCnwiCCABQhCJhSIBfCIJIAFCFYmFIQEgASAIIABCDYkgC4UiCHwiCkIgiUL/AYV8IgsgAUIQiYUhACAAIAogCEIRiYUiASAHIAmFfCIHQiCJfCIIIABCFYmFIQAgACAHIAFCDYmFIgEgC3wiB0IgiXwiCSAAQhCJhSEAIAAgByABQhGJhSIBIAh8IgdCIIl8IgggAEIViYUhACAAIAFCDYkgB4UiASAJfCIHQiCJfCIJIAFCEYkgB4UiASAIfCABQg2JhSIBfCIHIABCEIkgCYVCFYkgAUIRiYUgB0IgiYWFC7YEAQR/IwBBIGsiAiQAIAIgAEEVajYCBCABKAIAQdf+xgBBGCABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakGZkMkAQQUgAEGxARCJDiEEQQEhAQJAIAItAAwNACACLQANIQUgBCgCACIDLQAKQYABcUUEQCADKAIAQYizyQBBl+PCACAFQQFxIgUbQQJBAyAFGyADKAIEKAIMEQAADQEgAygCAEHC/sYAQQogAygCBCgCDBEAAA0BIAMoAgBBprLIAEECIAMoAgQoAgwRAAANASADKAIAQfn/xgBB8P/GACAALQAUIgAbQQpBCSAAGyADKAIEKAIMEQAAIQEMAQsgBUEBcUUEQCADKAIAQZrjwgBBAyADKAIEKAIMEQAADQELIAJBAToAHyACIAMpAgA3AhAgAiACQR9qNgIYIAJBEGoiA0HC/sYAQQoQ/QgNACADQaayyABBAhD9CA0AIANB+f/GAEHw/8YAIAAtABQiABtBCkEJIAAbEP0IBEAMAQsgAkEQakGkssgAQQIQ/QghAQsgAiABOgAMIAJBAToADSAEQe/+xgBBECACQQRqQcACEIkOIQAgAi0ADSIDIAItAAwiBHIhAQJAIANBAUcNACAEQQFxDQAgACgCACIALQAKQYABcUUEQCAAKAIAQe3qwgBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGhssgAQQEgACgCBCgCDBEAACEBCyACQSBqJAAgAUEBcQu2BAEEfyMAQSBrIgIkACACIABBDWo2AgQgASgCAEH//sYAQRggASgCBCgCDBEAACEDIAJBADoADSACIAM6AAwgAiABNgIIIAJBCGpB/5DJAEEEIABBrgIQiQ4hBEEBIQECQCACLQAMDQAgAi0ADSEFIAQoAgAiAy0ACkGAAXFFBEAgAygCAEGIs8kAQZfjwgAgBUEBcSIFG0ECQQMgBRsgAygCBCgCDBEAAA0BIAMoAgBBwv7GAEEKIAMoAgQoAgwRAAANASADKAIAQaayyABBAiADKAIEKAIMEQAADQEgAygCAEH5/8YAQfD/xgAgAC0ADCIAG0EKQQkgABsgAygCBCgCDBEAACEBDAELIAVBAXFFBEAgAygCAEGa48IAQQMgAygCBCgCDBEAAA0BCyACQQE6AB8gAiADKQIANwIQIAIgAkEfajYCGCACQRBqIgNBwv7GAEEKEP0IDQAgA0GmssgAQQIQ/QgNACADQfn/xgBB8P/GACAALQAMIgAbQQpBCSAAGxD9CARADAELIAJBEGpBpLLIAEECEP0IIQELIAIgAToADCACQQE6AA0gBEHv/sYAQRAgAkEEakHAAhCJDiEAIAItAA0iAyACLQAMIgRyIQECQCADQQFHDQAgBEEBcQ0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBobLIAEEBIAAoAgQoAgwRAAAhAQsgAkEgaiQAIAFBAXELtgQBBH8jAEEgayICJAAgAiAAQRVqNgIEIAEoAgBB1/7GAEEYIAEoAgQoAgwRAAAhAyACQQA6AA0gAiADOgAMIAIgATYCCCACQQhqQZmQyQBBBSAAQbEBEIkOIQRBASEBAkAgAi0ADA0AIAItAA0hBSAEKAIAIgMtAApBgAFxRQRAIAMoAgBBiLPJAEGX48IAIAVBAXEiBRtBAkEDIAUbIAMoAgQoAgwRAAANASADKAIAQcL+xgBBCiADKAIEKAIMEQAADQEgAygCAEGmssgAQQIgAygCBCgCDBEAAA0BIAMoAgBB+f/GAEHw/8YAIAAtABQiABtBCkEJIAAbIAMoAgQoAgwRAAAhAQwBCyAFQQFxRQRAIAMoAgBBmuPCAEEDIAMoAgQoAgwRAAANAQsgAkEBOgAfIAIgAykCADcCECACIAJBH2o2AhggAkEQaiIDQcL+xgBBChD9CA0AIANBprLIAEECEP0IDQAgA0H5/8YAQfD/xgAgAC0AFCIAG0EKQQkgABsQ/QgEQAwBCyACQRBqQaSyyABBAhD9CCEBCyACIAE6AAwgAkEBOgANIARB7/7GAEEQIAJBBGpB4AIQiQ4hACACLQANIgMgAi0ADCIEciEBAkAgA0EBRw0AIARBAXENACAAKAIAIgAtAApBgAFxRQRAIAAoAgBB7erCAEECIAAoAgQoAgwRAAAhAQwBCyAAKAIAQaGyyABBASAAKAIEKAIMEQAAIQELIAJBIGokACABQQFxC7YEAQR/IwBBIGsiAiQAIAIgAEENajYCBCABKAIAQf/+xgBBGCABKAIEKAIMEQAAIQMgAkEAOgANIAIgAzoADCACIAE2AgggAkEIakH/kMkAQQQgAEGuAhCJDiEEQQEhAQJAIAItAAwNACACLQANIQUgBCgCACIDLQAKQYABcUUEQCADKAIAQYizyQBBl+PCACAFQQFxIgUbQQJBAyAFGyADKAIEKAIMEQAADQEgAygCAEHC/sYAQQogAygCBCgCDBEAAA0BIAMoAgBBprLIAEECIAMoAgQoAgwRAAANASADKAIAQfn/xgBB8P/GACAALQAMIgAbQQpBCSAAGyADKAIEKAIMEQAAIQEMAQsgBUEBcUUEQCADKAIAQZrjwgBBAyADKAIEKAIMEQAADQELIAJBAToAHyACIAMpAgA3AhAgAiACQR9qNgIYIAJBEGoiA0HC/sYAQQoQ/QgNACADQaayyABBAhD9CA0AIANB+f/GAEHw/8YAIAAtAAwiABtBCkEJIAAbEP0IBEAMAQsgAkEQakGkssgAQQIQ/QghAQsgAiABOgAMIAJBAToADSAEQe/+xgBBECACQQRqQeACEIkOIQAgAi0ADSIDIAItAAwiBHIhAQJAIANBAUcNACAEQQFxDQAgACgCACIALQAKQYABcUUEQCAAKAIAQe3qwgBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGhssgAQQEgACgCBCgCDBEAACEBCyACQSBqJAAgAUEBcQvmAwEKfyAAQRBqKAIAIABBBGooAgAgAEEUaigCACIHIABBCGooAgAiAyADIAdLGxCPEyEEIABBJEEYIABBKGooAgAgAEEcaigCACAAQSxqKAIAIgIgAEEgaigCACIGIAIgBkkbEI8TIgUgAiAGayAFG0EASCIFG2ohAiAAIAQgByADayAEGyIDQX9zQR92QQxsaiEHIAAgA0EfdkEMbGoiA0EIaigCACEEIAJBBGooAgAgA0EEaigCACACQQhqKAIAIgYgBCAEIAZLGxCPEyIIIAYgBGsgCBtBAEghBCAAQRhBJCAFG2oiBkEIaigCACEAIAYgByACIAQbIAZBBGooAgAgB0EEaigCACAAIAdBCGooAgAiBSAAIAVJGxCPEyIIIAAgBWsgCBtBAEgiCRshACADIAIgByAJGyAEGyIFQQhqKAIAIQggAEEEaigCACAFQQRqKAIAIABBCGooAgAiCiAIIAggCksbEI8TIQsgASACIAMgBBsiAigCCDYCCCABIAIpAgA3AgAgASAAIAUgCyAKIAhrIAsbQQBIIgIbIgMoAgg2AhQgASADKQIANwIMIAEgBSAAIAIbIgAoAgg2AiAgASAAKQIANwIYIAEgByAGIAkbIgApAgA3AiQgASAAKAIINgIsC5oEAgp/An4jAEFAaiIAJAACQAJAAkACQAJAAkAgASgCICIEBEAgBEECdCEGIAEoAhwhBCAAQTBqrUKAgICA0AGEIQ0gAEEUaiEHIABBDGohCiABKAKYAiEIIAEoApQCIQsgASgCBCEMIAEoAgghCQNAIAQoAgAiASAJTw0DIAwgAUHkAGxqIgEoAghBAkYNBCAAIAEoAiA2AhggACABKQIYNwMQIAAgASkCECIONwMIIA6nIgMgCE8NBSAAIAsgA0EkbGoiA0EcaigCACADQSBqKAIAIApB0LzEABDhCyAAKAIYIgMgACgCBCIFTw0GIAEoAiQiASAAKAIAIANBzABsaiIDKAIYIgVPDQcgAygCFCABQeQAbGoiASgCAEECTw0CIAAgASkCNDcDICAAIAEoAjw2AiggACABKQIsNwIwIAAgDTcDOCAAQQhqQfS4wQAgAEE4ahC4DCAHIAAoAig2AgggByAAKQMgNwIAIAIoAggiASACKAIARgRAIAIQvRILIARBBGohBCACIAFBAWo2AgggAigCBCABQRhsaiIBIAApAgg3AgAgASAAKQIQNwIIIAEgACkCGDcCECAGQQRrIgYNAAsLIABBQGskAA8LQejDxQAQnRUACyABIAlBrKPFABCFEwALQbyjxQAQnRUACyADIAhB0LzEABCFEwALIAMgBUHQvMQAEIUTAAsgASAFQeC8xAAQhRMAC+cDAQN/IwBBEGsiBCQAAkACQAJAIAEoAggiAkGAgIAQcUUEQCACQYCAgCBxDQEgACABEJcORQ0CQQEhAgwDCyAAKAIAIQJBCSEDA0AgAyAEakEGaiACQQ9xLQDktkk6AAAgA0EBayEDIAJBBHYiAg0AC0EBIQIgAUEBQaKWxABBAiADIARqQQdqQQkgA2sQyQlFDQEMAgsgACgCACECQQkhAwNAIAMgBGpBBmogAkEPcS0ApJZEOgAAIANBAWshAyACQQR2IgINAAtBASECIAFBAUGilsQAQQIgAyAEakEHakEJIANrEMkJDQELIAEoAgBBiJPEAEECIAEoAgQoAgwRAAAEQEEBIQIMAQsgAEEEaiEAAkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASAAIAEQlw4hAgwCCyAAKAIAIQJBCSEDA0AgAyAEakEGaiACQQ9xLQDktkk6AAAgA0EBayEDIAJBBHYiAg0ACyABQQFBopbEAEECIAMgBGpBB2pBCSADaxDJCSECDAELIAAoAgAhAkEJIQMDQCADIARqQQZqIAJBD3EtAKSWRDoAACADQQFrIQMgAkEEdiICDQALIAFBAUGilsQAQQIgAyAEakEHakEJIANrEMkJIQILIARBEGokACACC/cDAQd/IAEoAgQiBQRAIAEoAgAhBANAAkAgA0EBaiECAn8gAiADIARqLQAAIgfAIghBAE4NABoCQAJAAkACQAJAAkACQAJAAkACQAJAIActAMjtQkECaw4DAAECDAtBjpbCACACIARqIAIgBU8bLAAAQUBODQsgA0ECagwKC0GOlsIAIAIgBGogAiAFTxssAAAhBiAHQeABaw4OAQMDAwMDAwMDAwMDAwIDC0GOlsIAIAIgBGogAiAFTxssAAAhBiAHQfABaw4FBAMDAwUDCyAGQWBxQaB/Rw0IDAYLIAZBn39KDQcMBQsgCEEfakH/AXFBDE8EQCAIQX5xQW5HDQcgBkFATg0HDAULIAZBQE4NBgwECyAIQQ9qQf8BcUECSw0FIAZBQE4NBQwCCyAGQfAAakH/AXFBME8NBAwBCyAGQY9/Sg0DC0GOlsIAIANBAmoiAiAEaiACIAVPGywAAEG/f0oNAkGOlsIAIANBA2oiAiAEaiACIAVPGywAAEG/f0oNAiADQQRqDAELQY6WwgAgA0ECaiICIARqIAIgBU8bLAAAQUBODQEgA0EDagsiAyICIAVJDQELCyAAIAM2AgQgACAENgIAIAEgBSACazYCBCABIAIgBGo2AgAgACACIANrNgIMIAAgAyAEajYCCA8LIABBADYCAAvaAwEIfyACIAEoAqQBIgNPBEACQAJAIAEoApABIgUgAiABKAKoASIEayIHTQRAIABBfzYCECACIANHDQIgASgCjAEhBwwBCwJ/IAdBBHQgASgCjAEiB2oiCCgCBCEGIAgoAgwgBkcEQCAIIAZB8ABqNgIEIAAgBkHwAPwKAAAgACgCEEF/RgwBCyAAQX82AhBBAQsgAiADRw0BRQ0BCyADQQR0IARBBHRrIAdqQRxqIQIgBSADIARrQQFqIgAgACAFSRsiBiAEaiEAQQAgBGshCAJAA0AgBSADIAhqQQFqTQRAIAAhAwwCCyADQQFqIQMgAkEIayEJIAIoAgAgAkEQaiECIAkoAgBGDQALIAMgBGshBgsgASADNgKkASADIARGDQAgBiAFQQF2SQ0AAkAgBUUNAEEAIQJBcCEAA0ACQCACQQFqIQIgBg0AIABBEGshACACIAVHDQEMAgsLIAcQlAxBACEEIAIgBUkEQCAHIABrIQADQAJAIAIgBkkEQCAAEJQMDAELIAcgBEEEdGoiCCAAKQIINwIIIAggACkCADcCACAEQQFqIQQLIABBEGohACAFIAJBAWoiAkcNAAsLIAEgBDYCkAELIAEgAzYCqAELDwsgAEF/NgIQC5QEAQR/IwBBEGsiAyQAIAEtAAohAiADIAA2AgAgAC0AACEAAkACQAJAIAJBgAFxRQRAAn9BASABKAIAIgJBr8PGAEEVIAEoAgQoAgwiBBEAAA0AGkEBIAJBtM/FAEEBIAQRAAANABogAyABEMYPCyEFIAAEQEEBIQEgBQ0EIAJBiLPJAEECIAQRAAANBEEAIABrIABxIgVFDQIgAkGg4MYAQbKjyQAgBUEBRiIFG0EMQQUgBRsgBBEAAA0EIABBAWsgAHEhAANAIABB/wFxRQ0EIABBACAAa3FB/wFxRQ0EIAJBlczGAEEDIAQRAAANBSAAQQFrIABxIQAgAkGyo8kAQQUgBBEAAEUNAAsMBAtBASEBIAUNAwwCCyABKAIAQa/DxgBBFSABKAIEKAIMEQAAIQIgA0EAOgAJIAMgAjoACCADIAE2AgQgA0EEakHEw8YAQQQgA0GpAhCJDiECIAAEQCADIAA6AA8gAkHIw8YAQQUgA0EPakGqAhCJDhoLIAMtAAkiACADLQAIIgRyIQEgAEEBRw0CIARBAXENAiACKAIAIgAtAApBgAFxRQRAIAAoAgBB7erCAEECIAAoAgQoAgwRAAAhAQwDCyAAKAIAQaGyyABBASAAKAIEKAIMEQAAIQEMAgsgAkGYzMYAQQcgBBEAAA0BCyACQYiQyQBBASAEEQAAIQELIANBEGokACABQQFxC5MEAQZ/IwBBQGoiAiQAAkACQAJAAkACQAJAAkACQAJAAkAgASgCAEEBaw4EAQIDBAALIAAgAUEIahB+DAQLIAAgAUEIahCNBgwDCyABKAIMIgNBq9WqFU8NAyABKAIIIQUCfyADQTBsIgFFBEBBCCEEQQAMAQsgARCQASIERQ0FIAMLIQEgAkEANgIMIAIgBDYCCCACIAE2AgQCQCADBEAgA0E4bCEHQQAhAwNAIAJBEGogBRCTCiACKAIgQX9GDQIgBUE4aiEFIAIoAgQgBkYEQCACQQRqEJQSIAIoAgghBAsgAyAEaiIBIAIpAxA3AwAgASACKQM4NwMoIAEgAikDMDcDICABIAIpAyg3AxggASACKQMgNwMQIAEgAikDGDcDCCACIAZBAWoiBjYCDCADQTBqIQMgB0E4ayIHDQALCyAAIAIoAgw2AgggACACKQIENwIAIABBhICAgHg2AhAMAwsgAEF/NgIQIAAgAigCEDYCACACQQRqEJUJIAIoAgQiAUUNAiAEQQRrKAIAIgNBeHEhACAAIAFBMGwiAUEEQQggA0EDcSIDG3JJDQUgA0EARyAAIAFBJ2pLcQ0GIAQQvAUMAgsgACABQQhqEMwEDAELIAAgAUEIahCNBgsgAkFAayQADwsQnhUAC0EIEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL3AMBB38jAEEQayIFJAAgASgChAEhAiABKAKAASEEAkACQCABKAKIASIDRQ0AIAIgA00EQCACIANGDQEMAgsgAyAEaiwAAEFASA0BCwJAIAIgA0YNAEGw98QAAn8gAyAEaiIELAAAIgJBAE4EQCACQf8BcQwBCyAELQABQT9xIQYgAkEfcSEIIAhBBnQgBnIgAkFfTQ0AGiAELQACQT9xIAZBBnRyIQYgBiAIQQx0ciACQXBJDQAaIAhBEnRBgIDwAHEgBC0AA0E/cSAGQQZ0cnILIgIQ9g1FDQBBASEHIAECf0EBIAJBgAFJDQAaQQIgAkGAEEkNABpBA0EEIAJBgIAESRsLIANqNgKIAQsgAS0AfARAIAVBAzYCACABIAMgBSAHEPkIC0EAIQMCQCAHRQRAAkAgASgCiAEiAiABKAKEAU8NACABKAKAASACai0AAEEJRw0AIAEgAkEBajYCiAFBASEDCyABLQB8QQFGBEBBARCQASIERQ0CIARBCToAACAFQQE2AgwgBSAENgIIIAVCgICAgBA3AgAgASACIAUgAxD5CAsgA0EBcyEDCyAAIAE2AgQgACADNgIAIAVBEGokAA8LQQEQpxQACyAEIAIgAyACQYyKyAAQ/RQAC5gEAQZ/IwBBQGoiAiQAQQEhAwJAAkACQAJAIAEoAgBBAUYEQCABKAIIIgYgASgCBCIETQ0EIAEgBEEBaiIHNgIEIAEoAhQhBSACIAEoAogBNgI4IAIgASkCgAE3AzAgAS0AkQFBAkcNAiAGIAdNDQMgASAEQQJqIgM2AgQgAyAGTw0CIAEgBEEDajYCBAwBCyABKAIUIQUgAiABKAKIATYCOCACIAEpAoABNwMwIAEtAJEBQQJHDQELIAFBADoAkQEgAkEoaiABEJQKIAIoAiggAigCLCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCIDIAEoAghPDQIgASADQQFqNgIECwJAIAEtAJEBIgRFBEAgAkEYaiABEJQKIAIoAhwhASACKAIYIQMMAQsgAUEAOgCRASACQSBqIAEQlAogAigCICEDIAIoAiQiASAEOgCRAQsgA0EBRw0ACwtBASEDIAEoAgBBAUYEQCABKAIEIgQgASgCCE8NASABIARBAWo2AgQLIAEtAJEBIgRFBEAgAkEIaiABEJQKIAIoAgwhASACKAIIIQMMAQsgAUEAOgCRASACQRBqIAEQlAogAigCECEDIAIoAhQiASAEOgCRAQsgA0EBRw0AIAEgAigCODYCiAEgASACKQMwNwKAASAFIAEoAhRLDQAgASAFNgIUCyAAIAE2AgQgACADNgIAIAJBQGskAAveAwIIfwJ+IwBBIGsiAiQAAkACQAJ/IAFCAFkEQEETIQRBExCQASIFRQ0CIAJBADYCHCACIAU2AhggAkETNgIUQQAMAQtBFCEEQRQQkAEiBUUNAiAFQS06AAAgAiAFNgIYIAJBFDYCFCACQQE2AhxCACABfSEBQQELIQZBEyEDIAEiCkLoB1oEQANAIAJBAWogA2oiB0EEayAKIgsgCkKQzgCAIgpCkM4Afn2nIghB//8DcUHkAG4iCUEBdC8AnJhJOwAAIAdBAmsgCCAJQeQAbGtB//8DcUEBdC8AnJhJOwAAIANBBGshAyALQv+s4gRWDQALCyAKQglWBEAgCqciCEH//wNxQeQAbiEHIANBAmsiAyACQQFqaiAIIAdB5ABsa0H//wNxQQF0LwCcmEk7AAAgB60hCgsgClAgAUIAUnFFBEAgA0EBayIDIAJBAWpqIAqnQQF0LQCdmEk6AAALAkACQCAEIAZrQRMgA2siBEkEQCACQRRqIAZBE0EBQQEQsxEgAigCGCEFIAIoAhwhBgwBCyADQRNGDQELIARFDQAgBSAGaiACQQFqIANqIAT8CgAACyAAIAIpAhQ3AgAgACAEIAZqNgIIIAJBIGokAA8LQQEQpxQAC0EBEKcUAAvtAwEHfyMAQRBrIgUkAAJ/AkAgAigCBCIDBEAgACACKAIAIAMgASgCDBEAAA0BC0EAIAIoAgwiA0UNARogAigCCCIEIANBDGxqIQgDQAJAAkACQAJAAkACQAJAAkAgBC8BAEEBaw4CAQIACyAEKAIEIgJBwQBJDQIgAUEMaigCACEDA0AgAEH468IAQcAAIAMRAAANCSACQUBqIgJBwABLDQALDAMLIAQvAQIhAiAFQQA6AAwgBUEANgIIIAINAyAFIAJBMHI6AAhBASEDDAQLIAAgBCgCBCAEKAIIIAFBDGooAgARAABFDQQMBgsgAkUNAyABQQxqKAIAIQMLIABB+OvCACACIAMRAAANBAwCCyACQfb/F2ogAkGc/x9qcSACQZj4N2ogAkHwsR9qcXNBEXYiByAFQQhqaiIGIAIgAkEKbiIJQQpsa0EwcjoAACAHQQFqIQMgB0UNACAGQQFrIAlBCnBBMHI6AAAgA0ECRg0AIAZBAmsgAkHkAG5BCnBBMHI6AAAgA0EDRg0AIAZBA2sgAkHoB25BCnBBMHI6AAAgA0EERg0AIAZBBGsgAkGQzgBuQTByOgAACyAAIAVBCGogAyABQQxqKAIAEQAADQILIAggBEEMaiIERw0AC0EADAELQQELIAVBEGokAAvwAwEKfyAAKAIUIAAoAgAgAEEYaigCACIHIABBBGooAgAiAyADIAdLGxCPEyEEIABBPEEoIAAoAjwgACgCKCAAQUBrKAIAIgIgAEEsaigCACIGIAIgBkkbEI8TIgUgAiAGayAFG0EASCIFG2ohAiAAIAQgByADayAEGyIDQX9zQR92QRRsaiEHIAAgA0EfdkEUbGoiA0EEaigCACEEIAIoAgAgAygCACACQQRqKAIAIgYgBCAEIAZLGxCPEyIIIAYgBGsgCBtBAEghBCAAQShBPCAFG2oiBkEEaigCACEAIAYgByACIAQbIAYoAgAgBygCACAAIAdBBGooAgAiBSAAIAVJGxCPEyIIIAAgBWsgCBtBAEgiCRshACADIAIgByAJGyAEGyIFQQRqKAIAIQggACgCACAFKAIAIABBBGooAgAiCiAIIAggCksbEI8TIQsgASACIAMgBBsiAigCEDYCECABIAIpAgg3AgggASACKQIANwIAIAEgACAFIAsgCiAIayALG0EASCIDGyICKAIQNgIkIAEgAikCCDcCHCABIAIpAgA3AhQgASAFIAAgAxsiACgCEDYCOCABIAApAgg3AjAgASAAKQIANwIoIAEgByAGIAkbIgApAgA3AjwgASAAKQIINwJEIAEgACgCEDYCTAuEBAEIfyMAQTBrIgckACABIAIgBhDPBiENIAdBCGogASACEOEJIAdBIGoiASAHKAIIIgsgBygCDBDXCSAHQRBqIAEQpBEgByAHKAIUIgogBygCGCIBIAYQ8gcgBygCACEOIAEEQCAKQRRqIQZBACECA0AgCiACQRhsaiEIAkACQAJAAkACQCAGQRRrKAIADgIBAgALIAYoAgAiDCgCACEJIAwgCUEBazYCACAJQQFHDQMgCEEUaiEIDAILIAZBEGsoAgAiDCgCACEJIAwgCUEBazYCACAJQQFHDQIgCEEEaiEIDAELIAYoAgAiCCgCACEJIAggCUEBazYCACAGIQggCUEBRw0BCyAIKAIAEDALIAJBAWohAiAGQRhqIQYgAUEBayIBDQALCwJAAkAgBygCECICBEAgCkEEaygCACIGQXhxIQEgASACQRhsIgJBBEEIIAZBA3EiBhtqSQ0BIAZBAEcgASACQSdqS3ENAiAKELwFCyALIAsoAgAiAUEBazYCACABQQFGBEAgCxAwCyAHIAQ2AhwgByADNgIYIAdB7I3JADYCFCAHIA02AhAgByAFNgIsIAdBADYCKCAHQeyNyQA2AiQgByAO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AhQgACADKQIwNwIcIAAgAykCODcCJCAAIAMoAkA2AiwgAyAGNgIQIAMgBTYCBCADEJYLDAILIARBDGohBAsgAyACNgIQIAMgBDYCBCADEJYLQQEQkAEiAkUNASACQSk6AAAgA0EBNgIcIAMgAjYCGCADQQE2AhQgASADQRRqEPwNQX4hBAsgACAENgIAIANB0ABqJAAPCwtBARCnFAALhgQBAn8jAEEwayIDJAACQAJAAkBBDxCQASIEBEAgBEHr0cUAKQAANwAHIARB5NHFACkAADcAACADQQ82AgggAyAENgIEIANBDzYCACABIAMQ/A1BARCQASIERQ0DIARBKDoAACADQQE2AgggAyAENgIEIANBATYCACABIAMQ/A1BCRCQASIERQ0BIARB+9HFAC0AADoACCAEQfPRxQApAAA3AAAgA0EJNgIIIAMgBDYCBCADQQk2AgAgASADEPwNQQEQkAEiBEUNAyAEQSg6AAAgA0EBNgIIIAMgBDYCBCADQQE2AgAgASADEPwNIAMgASACEMkBAkAgAygCAEF+RwRAIAAgAykCKDcCKCAAIAMpAiA3AiAgACADKQIYNwIYIAAgAykCEDcCECAAIAMpAgg3AgggACADKQIANwIADAELQQEQkAEiAkUNBCACQSk6AAAgA0EBNgIIIAMgAjYCBCADQQE2AgAgASADEPwNQQMQkAEiAkUNAyACQf7RxQAtAAA6AAIgAkH80cUALwAAOwAAIANBAzYCCCADIAI2AgQgA0EDNgIAIAEgAxD8DUEBEJABIgJFDQQgAkEpOgAAIANBATYCCCADIAI2AgQgA0EBNgIAIAEgAxD8DSAAQX42AgALIANBMGokAA8LQQEQpxQAC0EBEKcUAAtBARCnFAALQQEQpxQAC+4DAQh/IwBB0ABrIgMkAEEBEJABIgQEQAJAIARBKDoAACADQQE2AhwgAyAENgIYIANBATYCFCABIANBFGoQ/A0gAigCCCEFIAIoAgQhBCADIAIoAgA2AgggAyAENgIAIAMgBCAFQQxsaiIHNgIMAkACQCAFRQRAQQAhAgwBCyAFQQFrIghB/////wNxQQFqIQlBACECAkACQANAIAQoAgAiBkF/Rg0CIARBDGohBSADIARBBGopAgA3AkggAyAGNgJEIANBFGoiCiABIANBxABqEK0FIAJBAWohBiAD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f0EBIANBAXENABoCQCABLQAKQYABcQRAIAEpAgAhBiACQQE6AA8gAiAGNwIAIAJBoOvCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAAIAJBEGoQzwJFDQFBAQwCC0EBIAEoAgBBiLPJAEECIAEoAgQoAgwRAAANARogACABEM8CDAELIAIoAhBBpLLIAEECIAIoAhQoAgwRAAALIQMgAEHQAGohACAEQdAAayIEDQALC0EBIQAgA0UEQCABKAIAQaiyyABBASABKAIEKAIMEQAAIQALIAJBIGokACAAC+sDAgR/AX4jAEEgayICJAAgACgCACIAQQhqKAIAIQQgAEEEaigCACEFQQEhAyABKAIAQaKyyABBASABKAIEKAIMEQAAIQACQCAERQRAIAAhAwwBCwJAIAANACABLQAKQYABcQRAIAEoAgBBoLLIAEEBIAEoAgQoAgwRAAANASABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqENACDQEgAigCEEGkssgAQQIgAigCFCgCDBEAACEDDAELIAUgARDQAiEDCyAEQQFGDQAgBUHQAGohACAEQdAAbEHQAGshBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqENACRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAAgARDQAgwBCyACKAIQQaSyyABBAiACKAIUKAIMEQAACyEDIABB0ABqIQAgBEHQAGsiBA0ACwtBASEAIANFBEAgASgCAEGossgAQQEgASgCBCgCDBEAACEACyACQSBqJAAgAAvrAwIEfwF+IwBBIGsiAiQAIAAoAgAiAEEIaigCACEEIABBBGooAgAhBUEBIQMgASgCAEGissgAQQEgASgCBCgCDBEAACEAAkAgBEUEQCAAIQMMAQsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2Aggg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AkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDYAUUNAUEBDAILQQEgASgCAEGIs8kAQQIgASgCBCgCDBEAAA0BGiAAIAEQ2AEMAQsgAigCEEGkssgAQQIgAigCFCgCDBEAAAshAyAAQSBqIQAgBEEgayIEDQALC0EBIQAgA0UEQCABKAIAQaiyyABBASABKAIEKAIMEQAAIQALIAJBIGokACAAC/MDAgV/AX4jAEEwayICJAACQCABKAIAIgRBAUEAIAEoAgQiBigCDCIFEQAABEBBASEDDAELAn8gAS0ACkGAAXFFBEBBASEDIARBtM/FAEEBIAURAAANAiAAIAEQ1Q8NAiABKAIIDAELIARBnePCAEECIAURAAAEQEEBIQMMAgtBASEDIAJBAToALCACIAY2AhAgAiAENgIMIAJBoOvCADYCICACIAEpAggiBzcCJCACIAJBLGo2AhQgAiACQQxqNgIcIAAgAkEcahDVDw0BIAIoAhxBpLLIAEECIAIoAiAoAgwRAAANASAHpwshAyAAQQRqIQQCQCADQYCAgARxRQRAIAEoAgBBiLPJAEECIAEoAgQoAgwRAAAEQEEBIQMMAwsgAiAAQRBqNgIcQQEhAyABQZntxABBCyAEQekAIAJBHGpB6AAQ8gxFDQEMAgsgASkCACEHQQEhAyACQQE6ABsgAiAHNwIMIAJBoOvCADYCICACIAEpAgg3AiQgAiACQRtqNgIUIAIgAkEMajYCHCACIABBEGo2AiwgAkEcakGZ7cQAQQsgBEHpACACQSxqQegAEPIMDQEgAigCHEGkssgAQQIgAigCICgCDBEAAA0BCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMLIAJBMGokACADC/IDAgZ/AX4jAEEgayICJABBASEFAkAgASgCACIDQaeQyQBBCyABKAIEIgcoAgwiBBEAAA0AAkACQCABKAIIIgZBgICABHFFBEAgA0GX48IAQQMgBBEAAA0DIANBoKzJAEEEIAQRAAANAyADQaayyABBAiAEEQAADQMgACgCDCAAKAIQIAMgBxC/Bg0DIANBiLPJAEECIAQRAAANAyADQf2ayQBBBCAEEQAADQMgA0GmssgAQQIgBBEAAA0DIAAgARDICkUNAQwDCyADQZrjwgBBAyAEEQAADQIgAiAHNgIUIAIgAzYCECACQQE6AAAgAiACNgIYIAJBEGoiBkGgrMkAQQQQ/QgNAiAGQaayyABBAhD9CA0CIAAoAgwgACgCECAGQaDrwgAQvwYNAiAGQaSyyABBAhD9CARADAMLIAJBAToADyACIAc2AgQgAiADNgIAIAJBoOvCADYCFCACIAEpAggiCDcCGCACIAJBD2o2AgggAiACNgIQIAJB/ZrJAEEEEP0IDQIgAkGmssgAQQIQ/QgNAiAAIAJBEGoQyAoEQAwDCyACQaSyyABBAhD9CA0BIAinIQYLIAZBgICABHFFBEAgA0Ht6sIAQQIgBBEAACEFDAILIANBobLIAEEBIAQRAAAhBQwBCwsgAkEgaiQAIAUL6gMCBX8BfiMAQTBrIgIkACACIAAoAgAiA0EUajYCBCABKAIAIgRB8pDJAEENIAEoAgQoAgwiBREAACEGIAIgATYCCEEBIQACQCAGDQAgAS0ACkGAAXFFBEAgBEGX48IAQQMgBREAAA0BIAEoAgBBnpDJAEEJIAEoAgQoAgwRAAANASABKAIAQaayyABBAiABKAIEKAIMEQAADQEgAygCECABEL4BIQAMAQsgBEGa48IAQQMgBREAAA0AIAEpAgAhByACQQE6AB8gAiAHNwIQIAJBoOvCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQaiIBNgIgIAFBnpDJAEEJEP0IDQAgAUGmssgAQQIQ/QgNACADKAIQIAJBIGoQvgEEQAwBCyACKAIgQaSyyABBAiACKAIkKAIMEQAAIQALIAIgADoADCACQQE6AA0gAkEIakH/kMkAQQQgA0G4ARCJDkGDkckAQQsgAkEEakG5ARCJDiEAIAItAA0iAyACLQAMIgRyIQECQCADQQFHDQAgBEEBcQ0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBobLIAEEBIAAoAgQoAgwRAAAhAQsgAkEwaiQAIAFBAXELzAMCBX8BfiMAQSBrIgIkAAJAAkACQAJAAkACQAJAIAEoAgAiA0F/RwRAIANFBEAgASgCCEEQRg0CCyABKAJIIgMEQCABKAJMIgZBBGsoAgAiBEF4cSEFIAVBBEEIIARBA3EiBBsgA2pJDQMgBEEARyAFIANBJ2pLcQ0EIAYQvAULIAEQrgcLIABBfzYCMCAAQQA2AgAMBgsgASkDECEHIAEoAkgiAwRAIAEoAkwiBkEEaygCACIEQXhxIQUgBUEEQQggBEEDcSIEGyADakkNAyAEQQBHIAUgA0EnaktxDQQgBhC8BQsgARCuByACIAc3AwggB0IAUw0EIAACfyAHQv////8PWARAIAAgBz4CBCAAQQE2AgBBfwwBCyACQvSwxoCAATcDGCACIAJBCGqtQoCAgIAghDcDECAAQcv5wQAgAkEQahC4DEGBgICAeAs2AjAMBQtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyACIAJBCGqtQoCAgIAghDcDECAAQZfawQAgAkEQahC4DCAAQYGAgIB4NgIwCyACQSBqJAAL6gMCBX8BfiMAQTBrIgIkACACIAAoAgAiA0EUajYCBCABKAIAIgRB8pDJAEENIAEoAgQoAgwiBREAACEGIAIgATYCCEEBIQACQCAGDQAgAS0ACkGAAXFFBEAgBEGX48IAQQMgBREAAA0BIAEoAgBBnpDJAEEJIAEoAgQoAgwRAAANASABKAIAQaayyABBAiABKAIEKAIMEQAADQEgAygCECABEL8BIQAMAQsgBEGa48IAQQMgBREAAA0AIAEpAgAhByACQQE6AB8gAiAHNwIQIAJBoOvCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQaiIBNgIgIAFBnpDJAEEJEP0IDQAgAUGmssgAQQIQ/QgNACADKAIQIAJBIGoQvwEEQAwBCyACKAIgQaSyyABBAiACKAIkKAIMEQAAIQALIAIgADoADCACQQE6AA0gAkEIakH/kMkAQQQgA0GbAhCJDkGDkckAQQsgAkEEakG5ARCJDiEAIAItAA0iAyACLQAMIgRyIQECQCADQQFHDQAgBEEBcQ0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBobLIAEEBIAAoAgQoAgwRAAAhAQsgAkEwaiQAIAFBAXEL6gMCBX8BfiMAQTBrIgIkACACIAAoAgAiA0EUajYCBCABKAIAIgRB8pDJAEENIAEoAgQoAgwiBREAACEGIAIgATYCCEEBIQACQCAGDQAgAS0ACkGAAXFFBEAgBEGX48IAQQMgBREAAA0BIAEoAgBBnpDJAEEJIAEoAgQoAgwRAAANASABKAIAQaayyABBAiABKAIEKAIMEQAADQEgAygCECABEMABIQAMAQsgBEGa48IAQQMgBREAAA0AIAEpAgAhByACQQE6AB8gAiAHNwIQIAJBoOvCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQaiIBNgIgIAFBnpDJAEEJEP0IDQAgAUGmssgAQQIQ/QgNACADKAIQIAJBIGoQwAEEQAwBCyACKAIgQaSyyABBAiACKAIkKAIMEQAAIQALIAIgADoADCACQQE6AA0gAkEIakH/kMkAQQQgA0G4ARCJDkGDkckAQQsgAkEEakG5ARCJDiEAIAItAA0iAyACLQAMIgRyIQECQCADQQFHDQAgBEEBcQ0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBobLIAEEBIAAoAgQoAgwRAAAhAQsgAkEwaiQAIAFBAXELmAQBBH8jAEGAAmsiAyQAAkBB5AAQkAEiBARAIAQgAUHkAPwKAAAgA0EENgIAIAMgBDYCBCADQeQAaiADELUMQZABEJABIgRFDQEgA0HYAWoiBSADKAJoIAMoAmwQqA4gA0EAOwH8ASADQQI2AvgBIANBjvzHADYC9AEgA0KAgICAcDcC7AEgA0KAgICAwAA3AuQBIANBfjYCuAEgAgRAIAMoAuABIgYgAygC2AFGBEAgBRCYEiADLwH+ASEBCyADKALcASAGQeQAbGoiBUEAOgAEIAVBAjYCACADIAZBAWo2AuABCyADQfAAaiADQbgBakHFAPwKAAAgAyADKAJsNgLgASADIAMpAmQ3A9gBIANBADsB/AEgA0EFNgL4ASADQZD8xwA2AvQBIANCgICAgHA3AuwBIANCgICAgMAANwLkASADQX42ArgBIAIEQCADKALgASICIAMoAtgBRgRAIANB2AFqEJgSIAMvAf4BIQYLIAMoAtwBIAJB5ABsaiIFQQA6AAQgBUECNgIAIAMgAkEBajYC4AELIARByABqIANBuAFqQcUA/AoAACAEIANB8ABqQcUA/AoAACAEIAY7AY4BIARBAToAjQEgBCABOwFGIARBAToARSAAQQI2AgggACAENgIAIAAgBEGQAWo2AgwgACAENgIEIANBgAJqJAAPC0G48MkAQQE6AAAAC0G48MkAQQE6AAAAC+YDAQV/IwBBEGsiBCQAAkACQAJAAkAgASgCECICIAEoAgwiAygCHCIFSQRAIAMoAhggAkHwAGxqIgIoAmghBSACKAJkIQIgAyADKAIAIgZBAWo2AgAgBkEASA0BIAQgBTYCDCAEIAI2AgggBCADNgIEQZABEJABIgJFDQIgAiABKAIUIARBBGoQ8g8gAkHoAGogASgCBCABKAIIEKgOIAJBATsBjAEgAkEENgKIASACQZTwxwA2AoQBIAJCgICAgHA3AnwgAkKAgICAwAA3AnQgAkF+NgJIIABBAjYCCCAAIAI2AgQgAEECNgIAIAMgAygCACIAQQFrNgIAIABBAUYEQCADEDALIAEoAgwiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCDBAwCyABKAIEIQAgASgCCCIDBEAgACECA0AgAhDAByACQeQAaiECIANBAWsiAw0ACwsgASgCACICBEAgAEEEaygCACIDQXhxIQEgASACQeQAbCICQQRBCCADQQNxIgMbakkNBCADQQBHIAEgAkEnaktxDQUgABC8BQsgBEEQaiQADwsgAiAFQeT+yAAQhRMLAAtBuPDJAEEBOgAAAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL6gMCBX8BfiMAQTBrIgIkACACIAAoAgAiA0EUajYCBCABKAIAIgRB8pDJAEENIAEoAgQoAgwiBREAACEGIAIgATYCCEEBIQACQCAGDQAgAS0ACkGAAXFFBEAgBEGX48IAQQMgBREAAA0BIAEoAgBBnpDJAEEJIAEoAgQoAgwRAAANASABKAIAQaayyABBAiABKAIEKAIMEQAADQEgAygCECABEMEBIQAMAQsgBEGa48IAQQMgBREAAA0AIAEpAgAhByACQQE6AB8gAiAHNwIQIAJBoOvCADYCJCACIAEpAgg3AiggAiACQR9qNgIYIAIgAkEQaiIBNgIgIAFBnpDJAEEJEP0IDQAgAUGmssgAQQIQ/QgNACADKAIQIAJBIGoQwQEEQAwBCyACKAIgQaSyyABBAiACKAIkKAIMEQAAIQALIAIgADoADCACQQE6AA0gAkEIakH/kMkAQQQgA0GBAxCJDkGDkckAQQsgAkEEakG5ARCJDiEAIAItAA0iAyACLQAMIgRyIQECQCADQQFHDQAgBEEBcQ0AIAAoAgAiAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAACEBDAELIAAoAgBBobLIAEEBIAAoAgQoAgwRAAAhAQsgAkEwaiQAIAFBAXELqQMCBX4DfyMAQSBrIgokACAAQf8PNgIIIABCADcDAAJAAkAgAUKqfVMNACACUA0AIAFCtAJVDQEgCkEQaiABpyIJQQR0IghBsNvDAGopAwBCACACIAJ5IgWGIgNCABDuESAKKQMQIQQgCikDGCICQv8Dg0L/A1EEQCAKIAhBuNvDAGopAwBCACADQgAQ7hEgAiAKKQMIIgIgBHwiBCACVK18IQILIAFCG3xC0wBaBEBBfyEIIARCf1ENAQsgAiACQj+IIgZCCXwiB4ghAyAAAn4gBqcgCUHqpA1sQRB1IAWna2pBP2oiCUGCeE4EQCAJQYAIQf8HIANC/P////////8AgyADIAMgB4YgAlEbIAMgA0IDg0IBURsgAyAEQgJUGyADIAFCBHxCHFQbIgEgAUIBg3wiAUL/////////H1YiCRtqIghB/g9LDQNCACABQgGIQv/////////3/wCDIAkbDAELQQAhCCAJQcN3SQ0BIANBgnggCWutiCIBIAFCAYN8IgFC/////////w9WIQggAUIBiAs3AwALIAAgCDYCCAsgCkEgaiQAC/ICAQt/IAAoAgwiAyAAKAIEIgZrQQxuIQsCQAJAIAMgBkcEQANAIAYgBUEMbGoiBygCBCEDIAcoAggiCARAIAMhAQNAIAEQrQEgAUHQAGooAgAiCUEASgRAIAFB1ABqKAIAIgRBBGsoAgAiAkF4cSEKIApBBEEIIAJBA3EiAhsgCWpJDQUgAkEARyAKIAlBJ2pLcQ0GIAQQvAULIAFB4ABqIQEgCEEBayIIDQALCyAHKAIAIgIEQCADQQRrKAIAIgFBeHEhBCAEIAJB4ABsIgJBBEEIIAFBA3EiARtySQ0DIAFBAEcgBCACQSdqS3ENBCADELwFCyAFQQFqIgUgC0cNAAsLIAAoAggiAwRAIAAoAgAiAUEEaygCACIAQXhxIQIgAiADQQxsIgNBBEEIIABBA3EiABtqSQ0BIABBAEcgAiADQSdqS3ENAiABELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC/sDAQN/IwBBIGsiAyQAIAEoAgBBoJPJAEEMIAEoAgQoAgwRAAAhAiADQQA6AA0gAyACOgAMIAMgATYCCCADQQhqQayTyQBBCiAAQTBqQa8BEIkOQZ6QyQBBCSAAQbABEIkOIQECQCADLQAMBEBBASEBDAELIAMtAA0hBAJAIAEoAgAiAi0ACkGAAXFFBEBBASEBIAIoAgBBiLPJAEGX48IAIARBAXEiBBtBAkEDIAQbIAIoAgQoAgwRAAANAiACKAIAQbaTyQBBBCACKAIEKAIMEQAADQIgAigCAEGmssgAQQIgAigCBCgCDBEAAA0CIAIoAgBB55DJAEHgkMkAIAAtAEQiABtBC0EHIAAbIAIoAgQoAgwRAAANAgwBC0EBIQEgBEEBcUUEQCACKAIAQZrjwgBBAyACKAIEKAIMEQAADQILIANBAToAHyADIAIpAgA3AhAgAyADQR9qNgIYIANBEGoiBEG2k8kAQQQQ/QgNASAEQaayyABBAhD9CA0BIARB55DJAEHgkMkAIAAtAEQiABtBC0EHIAAbEP0IDQEgBEGkssgAQQIQ/QhFDQAMAQsgAi0ACkGAAXFFBEAgAigCAEHt6sIAQQIgAigCBCgCDBEAACEBDAELIAIoAgBBobLIAEEBIAIoAgQoAgwRAAAhAQsgA0EgaiQAIAEL2wMCBH8BfiMAQSBrIgIkACAAKAIIIQQgACgCBCEFQQEhAyABKAIAQaKyyABBASABKAIEKAIMEQAAIQACQCAERQRAIAAhAwwBCwJAIAANACABLQAKQYABcQRAIAEoAgBBoLLIAEEBIAEoAgQoAgwRAAANASABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqEP8GDQEgAigCEEGkssgAQQIgAigCFCgCDBEAACEDDAELIAUgARD/BiEDCyAEQQFGDQAgBUEwaiEAIARBMGxBMGshBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEP8GRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAAgARD/BgwBCyACKAIQQaSyyABBAiACKAIUKAIMEQAACyEDIABBMGohACAEQTBrIgQNAAsLQQEhACADRQRAIAEoAgBBqLLIAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAAL2wMCBH8BfiMAQSBrIgIkACAAKAIIIQQgACgCBCEFQQEhAyABKAIAQaKyyABBASABKAIEKAIMEQAAIQACQCAERQRAIAAhAwwBCwJAIAANACABLQAKQYABcQRAIAEoAgBBoLLIAEEBIAEoAgQoAgwRAAANASABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqEJINDQEgAigCEEGkssgAQQIgAigCFCgCDBEAACEDDAELIAUgARCSDSEDCyAEQQFGDQAgBUEQaiEAIARBBHRBEGshBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEJINRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAAgARCSDQwBCyACKAIQQaSyyABBAiACKAIUKAIMEQAACyEDIABBEGohACAEQRBrIgQNAAsLQQEhACADRQRAIAEoAgBBqLLIAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAAL4AMCBH8BfiMAQSBrIgIkACAAKAIIIQQgACgCBCEFQQEhAyABKAIAQaKyyABBASABKAIEKAIMEQAAIQACQCAERQRAIAAhAwwBCwJAIAANACABLQAKQYABcQRAIAEoAgBBoLLIAEEBIAEoAgQoAgwRAAANASABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqEIkBDQEgAigCEEGkssgAQQIgAigCFCgCDBEAACEDDAELIAUgARCJASEDCyAEQQFGDQAgBUHMAGohACAEQcwAbEHMAGshBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEIkBRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAAgARCJAQwBCyACKAIQQaSyyABBAiACKAIUKAIMEQAACyEDIABBzABqIQAgBEHMAGsiBA0ACwtBASEAIANFBEAgASgCAEGossgAQQEgASgCBCgCDBEAACEACyACQSBqJAAgAAv7AwEDfyMAQSBrIgMkACABKAIAQaCTyQBBDCABKAIEKAIMEQAAIQIgA0EAOgANIAMgAjoADCADIAE2AgggA0EIakGsk8kAQQogAEEwakGvARCJDkGekMkAQQkgAEGWAhCJDiEBAkAgAy0ADARAQQEhAQwBCyADLQANIQQCQCABKAIAIgItAApBgAFxRQRAQQEhASACKAIAQYizyQBBl+PCACAEQQFxIgQbQQJBAyAEGyACKAIEKAIMEQAADQIgAigCAEG2k8kAQQQgAigCBCgCDBEAAA0CIAIoAgBBprLIAEECIAIoAgQoAgwRAAANAiACKAIAQeeQyQBB4JDJACAALQBEIgAbQQtBByAAGyACKAIEKAIMEQAADQIMAQtBASEBIARBAXFFBEAgAigCAEGa48IAQQMgAigCBCgCDBEAAA0CCyADQQE6AB8gAyACKQIANwIQIAMgA0EfajYCGCADQRBqIgRBtpPJAEEEEP0IDQEgBEGmssgAQQIQ/QgNASAEQeeQyQBB4JDJACAALQBEIgAbQQtBByAAGxD9CA0BIARBpLLIAEECEP0IRQ0ADAELIAItAApBgAFxRQRAIAIoAgBB7erCAEECIAIoAgQoAgwRAAAhAQwBCyACKAIAQaGyyABBASACKAIEKAIMEQAAIQELIANBIGokACABC9sDAgR/AX4jAEEgayICJAAgACgCCCEEIAAoAgQhBUEBIQMgASgCAEGissgAQQEgASgCBCgCDBEAACEAAkAgBEUEQCAAIQMMAQsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAUgAkEQahDXAQ0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAAhAwwBCyAFIAEQ1wEhAwsgBEEBRg0AIAVBIGohACAEQQV0QSBrIQQDQAJ/QQEgA0EBcQ0AGgJAIAEtAApBgAFxBEAgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDXAUUNAUEBDAILQQEgASgCAEGIs8kAQQIgASgCBCgCDBEAAA0BGiAAIAEQ1wEMAQsgAigCEEGkssgAQQIgAigCFCgCDBEAAAshAyAAQSBqIQAgBEEgayIEDQALC0EBIQAgA0UEQCABKAIAQaiyyABBASABKAIEKAIMEQAAIQALIAJBIGokACAAC9sDAgR/AX4jAEEgayICJAAgACgCCCEEIAAoAgQhBUEBIQMgASgCAEGissgAQQEgASgCBCgCDBEAACEAAkAgBEUEQCAAIQMMAQsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAUgAkEQahC9BA0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAAhAwwBCyAFIAEQvQQhAwsgBEEBRg0AIAVBDGohACAEQQxsQQxrIQQDQAJ/QQEgA0EBcQ0AGgJAIAEtAApBgAFxBEAgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahC9BEUNAUEBDAILQQEgASgCAEGIs8kAQQIgASgCBCgCDBEAAA0BGiAAIAEQvQQMAQsgAigCEEGkssgAQQIgAigCFCgCDBEAAAshAyAAQQxqIQAgBEEMayIEDQALC0EBIQAgA0UEQCABKAIAQaiyyABBASABKAIEKAIMEQAAIQALIAJBIGokACAAC9sDAgR/AX4jAEEgayICJAAgACgCCCEEIAAoAgQhBUEBIQMgASgCAEGissgAQQEgASgCBCgCDBEAACEAAkAgBEUEQCAAIQMMAQsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAUgAkEQahDXBA0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAAhAwwBCyAFIAEQ1wQhAwsgBEEBRg0AIAVBFGohACAEQRRsQRRrIQQDQAJ/QQEgA0EBcQ0AGgJAIAEtAApBgAFxBEAgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDXBEUNAUEBDAILQQEgASgCAEGIs8kAQQIgASgCBCgCDBEAAA0BGiAAIAEQ1wQMAQsgAigCEEGkssgAQQIgAigCFCgCDBEAAAshAyAAQRRqIQAgBEEUayIEDQALC0EBIQAgA0UEQCABKAIAQaiyyABBASABKAIEKAIMEQAAIQALIAJBIGokACAAC+ADAgR/AX4jAEEgayICJAAgACgCCCEEIAAoAgQhBUEBIQMgASgCAEGissgAQQEgASgCBCgCDBEAACEAAkAgBEUEQCAAIQMMAQsCQCAADQAgAS0ACkGAAXEEQCABKAIAQaCyyABBASABKAIEKAIMEQAADQEgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAUgAkEQahDNAg0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAAhAwwBCyAFIAEQzQIhAwsgBEEBRg0AIAVBwAJqIQAgBEHAAmxBwAJrIQQDQAJ/QQEgA0EBcQ0AGgJAIAEtAApBgAFxBEAgASkCACEGIAJBAToADyACIAY3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDNAkUNAUEBDAILQQEgASgCAEGIs8kAQQIgASgCBCgCDBEAAA0BGiAAIAEQzQIMAQsgAigCEEGkssgAQQIgAigCFCgCDBEAAAshAyAAQcACaiEAIARBwAJrIgQNAAsLQQEhACADRQRAIAEoAgBBqLLIAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAAL2wMCBH8BfiMAQSBrIgIkACAAKAIIIQQgACgCBCEFQQEhAyABKAIAQaKyyABBASABKAIEKAIMEQAAIQACQCAERQRAIAAhAwwBCwJAIAANACABLQAKQYABcQRAIAEoAgBBoLLIAEEBIAEoAgQoAgwRAAANASABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqENgBDQEgAigCEEGkssgAQQIgAigCFCgCDBEAACEDDAELIAUgARDYASEDCyAEQQFGDQAgBUEgaiEAIARBBXRBIGshBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqENgBRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAAgARDYAQwBCyACKAIQQaSyyABBAiACKAIUKAIMEQAACyEDIABBIGohACAEQSBrIgQNAAsLQQEhACADRQRAIAEoAgBBqLLIAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAAL2wMCBH8BfiMAQSBrIgIkACAAKAIIIQQgACgCBCEFQQEhAyABKAIAQaKyyABBASABKAIEKAIMEQAAIQACQCAERQRAIAAhAwwBCwJAIAANACABLQAKQYABcQRAIAEoAgBBoLLIAEEBIAEoAgQoAgwRAAANASABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgBSACQRBqEJwDDQEgAigCEEGkssgAQQIgAigCFCgCDBEAACEDDAELIAUgARCcAyEDCyAEQQFGDQAgBUFAayEAIARBBnRBQGohBANAAn9BASADQQFxDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEJwDRQ0BQQEMAgtBASABKAIAQYizyQBBAiABKAIEKAIMEQAADQEaIAAgARCcAwwBCyACKAIQQaSyyABBAiACKAIUKAIMEQAACyEDIABBQGshACAEQUBqIgQNAAsLQQEhACADRQRAIAEoAgBBqLLIAEEBIAEoAgQoAgwRAAAhAAsgAkEgaiQAIAAL+wMBA38jAEEgayIDJAAgASgCAEGgk8kAQQwgASgCBCgCDBEAACECIANB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/gcNASACQaSyyABBAhD9CCEDDAELIAYgARD+ByEDCyAEQQFGDQAgBkEUaiEAIARBFGxBFGshBANAAn9BASADQQFxDQAaIAkEQCACQQE6AA8gAiAINgIEIAIgBTYCACACIAo3AhggAkGg68IANgIUIAIgAkEPajYCCCACIAI2AhBBASAAIAJBEGoQ/gcNARogAkGkssgAQQIQ/QgMAQtBASAFQYizyQBBAiAHEQAADQAaIAAgARD+BwshAyAAQRRqIQAgBEEUayIEDQALC0EBIQAgA0UEQCAFQaiyyABBASAHEQAAIQALIAJBIGokACAAC6sDAgh/AX4jAEEgayICJAAgACgCCCEEIAAoAgQhBkEBIQMgASgCACIFQaKyyABBASABKAIEIggoAgwiBxEAACEAAkAgBEUEQCAAIQMMAQsgASgCCEGAgIAEcSEJIAEpAgghCgJAIAANACAJBEAgBUGgssgAQQEgBxEAAA0BIAJBAToADyACIAg2AgQgAiAFNgIAIAIgCjcCGCACQaDrwgA2AhQgAiACQQ9qNgIIIAIgAjYCECAGIAJBEGoQjwYNASACQaSyyABBAhD9CCEDDAELIAYgARCPBiEDCyAEQQFGDQAgBkEUaiEAIARBFGxBFGshBANAAn9BASADQQFxDQAaIAkEQCACQQE6AA8gAiAINgIEIAIgBTYCACACIAo3AhggAkGg68IANgIUIAIgAkEPajYCCCACIAI2AhBBASAAIAJBEGoQjwYNARogAkGkssgAQQIQ/QgMAQtBASAFQYizyQBBAiAHEQAADQAaIAAgARCPBgshAyAAQRRqIQAgBEEUayIEDQALC0EBIQAgA0UEQCAFQaiyyABBASAHEQAAIQALIAJBIGokACAAC8wDAgV/AX4jAEEwayICJAAgASgCACIEQQFBACABKAIEIgYoAgwiBREAACEDIAIgADYCDAJAIAMEQEEBIQMMAQsCfyABLQAKQYABcUUEQEEBIQMgBEG0z8UAQQEgBREAAA0CIAJBDGogARCAEA0CIAEoAggMAQsgBEGd48IAQQIgBREAAARAQQEhAwwCC0EBIQMgAkEBOgAfIAIgBjYCFCACIAQ2AhAgAkGg68IANgIkIAIgASkCCCIHNwIoIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqEIAQDQEgAigCIEGkssgAQQIgAigCJCgCDBEAAA0BIAenCyEDIABBBGohAAJAIANBgICABHFFBEAgASgCAEGIs8kAQQIgASgCBCgCDBEAAARAQQEhAwwDC0EBIQMgACABEJEQRQ0BDAILIAEpAgAhB0EBIQMgAkEBOgAfIAIgBzcCECACQaDrwgA2AiQgAiABKQIINwIoIAIgAkEfajYCGCACIAJBEGo2AiAgACACQSBqEJEQDQEgAigCIEGkssgAQQIgAigCJCgCDBEAAA0BCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMLIAJBMGokACADC8EDAQV/IwBBIGsiAiQAIAIgAEEMajYCBCABKAIAIgRBxJDJAEENIAEoAgQoAgwiBREAACEGIAIgATYCCEEBIQMCQCAGDQAgAS0ACkGAAXFFBEAgBEGX48IAQQMgBREAAA0BIAEoAgBBoKzJAEEEIAEoAgQoAgwRAAANASABKAIAQaayyABBAiABKAIEKAIMEQAADQEgACgCBCAAKAIIIAEoAgAgASgCBBC/BiEDDAELIARBmuPCAEEDIAURAAANACACIAEpAgA3AhAgAkEBOgAfIAIgAkEfajYCGCACQRBqIgFBoKzJAEEEEP0IDQAgAUGmssgAQQIQ/QgNACAAKAIEIAAoAgggAUGg68IAEL8GBEAMAQsgAkEQakGkssgAQQIQ/QghAwsgAiADOgAMIAJBAToADSACQQhqQdGQyQBBBCACQQRqQfkCEIkOIQAgAi0ADSIDIAItAAwiBHIhAQJAIANBAUcNACAEQQFxDQAgACgCACIALQAKQYABcUUEQCAAKAIAQe3qwgBBAiAAKAIEKAIMEQAAIQEMAQsgACgCAEGhssgAQQEgACgCBCgCDBEAACEBCyACQSBqJAAgAUEBcQurAwEEfyMAQbABayIGJAACQAJAAkACfyAEKAIQIgdFBEBBACECQQcMAQsgBiAHIAEgAkEBcRCJAkGwARCQASICRQ0DIAIgBkGwAfwKAABBAwshAUHgABCQASIIRQ0CIAhBfjYCUCAIIAI2AgQgCCABNgIAIAYgBBDYCCAGKAIIIQEgBigCBCEFAkAgBigCACIHQX9HBEAgBSECDAELIAFBAEgNASABRQRAQQEhAkEAIQdBACEBDAELIAEQkAEiAkUNAiABBEAgAiAFIAH8CgAACyABIQcLQcgBEJABIgVFDQIgBSACNgK8ASAFIAc2ArgBIAVBATYCDCAFIAg2AgggBUKCgICAEDcDACAFIAGtNwPAASADKALEASIBIAMoArwBRgRAIANBvAFqEKUSCyADIAFBAWo2AsQBIAMoAsABIAFB4ABsaiIBQX42AlAgASAFNgIEIAFBBjYCACAAIANBkAL8CgAAIAQoAgwiASgCACEAIAEgAEEBazYCACAAQQFGBEAgBCgCDBAwCyAGQbABaiQADwsQnhUAC0EBEKcUAAtBuPDJAEEBOgAAAAuTAwEFfwJAAkACQAJAAkACQAJAIAIgBGoiCEH/////AUkEQCAIQQFqIgVBAnQiBxCQASIGRQ0BAkAgBkEEayIJLQAAQQNxRQ0AIAdFDQAgBkEAIAf8CwALIAYgBSABIAIgAyAEEDIgBiAFQQJ0akEEaygCAARAIAUhBAwECyAIQQJqIQQgCEECdCECA0AgAkF8RgRAQQAhBAwECyAEQQFrIQQgAiAGaiACQQRrIQIoAgBFDQALIAQgBU0NAiAFIQQMAwsQnhUAC0EEEKcUAAsgBCAFQQJ2Tw0AIAQgBUsNASAERQRAIAkoAgAiAkF4cSEBIAFBBEEIIAJBA3EiAhsgB2pJDQMgAkEARyABIAdBJ2pLcQ0EIAYQvAVBBCEGQQAhBEEAIQUMAQsgBCEFIAYgB0EEIARBAnQiARCtBiIGRQ0ECyAAIAQ2AgggACAGNgIEIAAgBTYCAA8LQYihxABByQBBrKHEABC/EwALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0EEEKcUAAvRAwEDfyMAQTBrIgMkACABKAIAQaeQyQBBCyABKAIEKAIMEQAAIQIgA0EAOgANIAMgAjoADCADIAE2AgggA0EIakGgrMkAQQQgAEEIakGlARCJDiEBAkAgAy0ADARAQQEhAQwBCyADLQANIQQCQCABKAIAIgItAApBgAFxRQRAQQEhASACKAIAQYizyQBBl+PCACAEQQFxIgQbQQJBAyAEGyACKAIEKAIMEQAADQIgAigCAEH9mskAQQQgAigCBCgCDBEAAA0CIAIoAgBBprLIAEECIAIoAgQoAgwRAAANAiAAIAIQyAoNAgwBC0EBIQEgBEEBcUUEQCACKAIAQZrjwgBBAyACKAIEKAIMEQAADQILIANBAToAHyADQaDrwgA2AiQgAyACKQIANwIQIAMgAikCCDcCKCADIANBH2o2AhggAyADQRBqIgQ2AiAgBEH9mskAQQQQ/QgNASAEQaayyABBAhD9CA0BIAAgA0EgahDICg0BIARBpLLIAEECEP0IRQ0ADAELIAItAApBgAFxRQRAIAIoAgBB7erCAEECIAIoAgQoAgwRAAAhAQwBCyACKAIAQaGyyABBASACKAIEKAIMEQAAIQELIANBMGokACABC70DAQN/AkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAQQFGBEAgASgCCCICIAEoAgQiA0GgAmooAgAiBE8NAiABKAIMIgEgA0GcAmooAgAgAkEkbGoiAkEgaigCACIDTw0DIAJBHGooAgAgAUHUAGxqIgIoAgBBgICAgHhHDQQgAigCDCIBQQBIDQUgAUUNCiACKAIIIQMgARCQASICDQFBARCnFAALIAEoAggiAiABKAIEIgNBoAJqKAIAIgRPDQUgASgCDCIBIANBnAJqKAIAIAJBJGxqIgJBIGooAgAiA08NBiACQRxqKAIAIAFB1ABsaiICKAIAQYKAgIB4Rw0HIAIoAgwiAUEASA0EIAFFIgMNCSACKAIIIQQgARCQASICRQ0IIAMNCiACIAQgAfwKAAAMCgsgAUUNCSACIAMgAfwKAAAMCQsgAiAEQfS4xAAQhRMACyABIANB9LjEABCFEwALQfS4xAAQnRUACxCeFQALIAIgBEHMu8QAEIUTAAsgASADQcy7xAAQhRMAC0HMu8QAEJ0VAAtBARCnFAALQQEhAkEAIQELIAAgATYCCCAAIAI2AgQgACABNgIAC58DAQR/IAAoAgwiAiAAKAIEIgFrQRRuIQMgASACRwRAIAFBEGohAQNAIAEoAgAiBCgCACECIAQgAkEBazYCACACQQFGBEAgASgCABAwCyABQRRqIQEgA0EBayIDDQALCwJAAkACQAJAIAAoAggiAwRAIAAoAgAiAkEEaygCACIEQXhxIQEgASADQRRsIgNBBEEIIARBA3EiBBtqSQ0BIARBAEcgASADQSdqS3ENAiACELwFCyAAKAIcIgIgACgCFCIBa0EUbiEDIAEgAkcEQCABQRBqIQEDQCABKAIAIgQoAgAhAiAEIAJBAWs2AgAgAkEBRgRAIAEoAgAQMAsgAUEUaiEBIANBAWsiAw0ACwsgACgCGCIBBEAgACgCECIDQQRrKAIAIgJBeHEhACAAIAFBFGwiAUEEQQggAkEDcSICG2pJDQMgAkEARyAAIAFBJ2pLcQ0EIAMQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6YDAQh/IwBBEGsiAiQAIABBCGooAgAhByAAQQRqKAIAIQRBASEAIAEoAgAiA0GissgAQQEgASgCBCIGKAIMIggRAAAhBQJAIAdFBEAgBSEADAELIAEoAghBgICABHEhCQJAIAUNACAJBEAgA0GgssgAQQEgCBEAAA0BIAIgBjYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCCAEKAIEIAQoAgggAkGg68IAEL8GDQEgAkGkssgAQQIQ/QghAAwBCyAEKAIEIAQoAgggAyAGEL8GIQALIAdBAUYNACAHQQxsQQxrIQUgBEEUaiEBA0ACf0EBIABBAXENABogCQRAIAIgBjYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCEEBIAFBBGsoAgAgASgCACACQaDrwgAQvwYNARogAkGkssgAQQIQ/QgMAQtBASADQYizyQBBAiAIEQAADQAaIAFBBGsoAgAgASgCACADIAYQvwYLIQAgAUEMaiEBIAVBDGsiBQ0ACwtBASEBIABFBEAgA0GossgAQQEgCBEAACEBCyACQRBqJAAgAQvOAwEFfyMAQSBrIgIkAAJAIAAoAgBBf0YEQEEBIQQgASgCACIDQZmSyQBBCCABKAIEIgYoAgwiBREAAA0BIABBBGohAAJAIAEtAApBgAFxRQRAIANBtM/FAEEBIAURAAANAyAAIAEQjwZFDQEMAwsgA0Gd48IAQQIgBREAAA0CIAJBAToADyACIAY2AgQgAiADNgIAIAJBoOvCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAAIAJBEGoQjwYNAiACQaSyyABBAhD9CA0CCyADQYiQyQBBASAFEQAAIQQMAQtBASEEIAEoAgAiA0GUkskAQQUgASgCBCIGKAIMIgURAAANAAJAIAEtAApBgAFxRQRAIANBtM/FAEEBIAURAAANAiAAIAEQ1wENAiABKAIAIQMgASgCBCgCDCEFDAELIANBnePCAEECIAURAAANASACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqENcBDQEgAigCEEGkssgAQQIgAigCFCgCDBEAAA0BCyADQYiQyQBBASAFEQAAIQQLIAJBIGokACAEC84DAQV/IwBBIGsiAiQAAkAgACgCAEF/RgRAQQEhBCABKAIAIgNBmZLJAEEIIAEoAgQiBigCDCIFEQAADQEgAEEEaiEAAkAgAS0ACkGAAXFFBEAgA0G0z8UAQQEgBREAAA0DIAAgARCPBkUNAQwDCyADQZ3jwgBBAiAFEQAADQIgAkEBOgAPIAIgBjYCBCACIAM2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahCPBg0CIAJBpLLIAEECEP0IDQILIANBiJDJAEEBIAURAAAhBAwBC0EBIQQgASgCACIDQZSSyQBBBSABKAIEIgYoAgwiBREAAA0AAkAgAS0ACkGAAXFFBEAgA0G0z8UAQQEgBREAAA0CIAAgARDYAQ0CIAEoAgAhAyABKAIEKAIMIQUMAQsgA0Gd48IAQQIgBREAAA0BIAJBAToADyACIAY2AgQgAiADNgIAIAJBoOvCADYCFCACIAEpAgg3AhggAiACQQ9qNgIIIAIgAjYCECAAIAJBEGoQ2AENASACKAIQQaSyyABBAiACKAIUKAIMEQAADQELIANBiJDJAEEBIAURAAAhBAsgAkEgaiQAIAQLzAMBBn8gBBC1ECEKAkAgA0EATgRAQQEhCCADRQ0BIAMQkAEiCEUEQEEBEKcUAAsgA0UNASAIIAIgA/wKAAAMAQsQnhUACyAEKAIEIQcCQAJAAkACQAJAIAQoAgBBAUYEQEEBIQsgBCgCECICKAIAIQYgAiAGQQFqNgIAIAZBAEgNAyAEKAIIIQkMAQsgBCgCECICKAIQIgYgB00NASACKAIMIAdB5ABsaiIGKAJYIQkgBigCVCEHIAIgAigCACIGQQFqNgIAIAZBAEgNAgtBHBCQASIGRQ0CIAYgBToAGCAGIAE2AhQgBiAEKAIQNgIQIAYgBCkCCDcCCCAGIAQpAgA3AgBBGBCQASIBRQ0DIAFBADoAFCABQdToxwA2AgwgASAGNgIIIAFCgYCAgBA3AgAgACABNgJgIABBADoAXCAAIAM2AkggACAINgJEIAAgAzYCQCAAQRM6ADwgAEF/NgIsIAAgCTYCKCAAIAc2AiQgACACNgIgIAAgCzYCHCAAQX82AhAgAEKBgICAEDcCCCAAQoGAgIAQNwIAIAAgCkEBczoAPQ8LIAcgBkHk9sgAEIUTCwALQbjwyQBBAToAAAALQbjwyQBBAToAAAALkgMBB38jAEEQayIGJABBASEIIAEgASgCFCIFQQFqIgQ2AhQCQCABKAIQIgcgBE0NAAJAAkAgASgCDCAEai0AAEEraw4DAQIAAgtBACEICyABIAVBAmoiBDYCFAsCQAJAIAQgB0kEQCABIARBAWoiBTYCFCABKAIMIgogBGotAABBMGtB/wFxIgRBCk8EQCAGQQ02AgQgASAGQQRqEKAOIQEgAEEBNgIAIAAgATYCBAwDCyAFIAdPDQEDQCAFIApqLQAAQTBrQf8BcSIJQQpPDQIgASAFQQFqIgU2AhQCQCAEQcuZs+YASgRAIARBzJmz5gBHDQEgCUEHSw0BCyAEQQpsIAlqIQQgBSAHRw0BDAMLCyABKAIIIQQgASgCBCEFA0AgBCIDBEAgBEEBayEEIAUtAAAgBUEBaiEFQTBGDQELCyAAIAEgAiADRSAIELcRDAILIAZBBTYCBCABIAZBBGoQoA4hASAAQQE2AgAgACABNgIEDAELIAAgASACIAMgBEEAIARrIAgbEDELIAZBEGokAAvfAgEHfwJAAkACQCAAKAIAIgZFDQAgACgCDCIBIAAoAgQiAmtB8ABuIQcgASACRwRAA0ACQCACKAIAIgFBf0YNACABRQ0AIAJBBGooAgAiBUEEaygCACIDQXhxIQQgBEEEQQggA0EDcSIDGyABakkNBCADQQBHIAQgAUEnaktxDQUgBRC8BQsgAkEQahDUASACQeAAaigCACIBQQBKBEAgAkHkAGooAgAiBUEEaygCACIDQXhxIQQgBEEEQQggA0EDcSIDGyABakkNBCADQQBHIAQgAUEnaktxDQUgBRC8BQsgAkHwAGohAiAHQQFrIgcNAAsLIAAoAggiAkUNACAGQQRrKAIAIgFBeHEhACAAIAJB8ABsIgJBBEEIIAFBA3EiARtySQ0BIAFBAEcgACACQSdqS3ENAiAGELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC9MCAQd/AkACQAJAIAAoAiAiAUUNACABIAFBAnRBC2pBeHEiAWpBCWoiBEUNACAAKAIcIAFrIgJBBGsoAgAiAUF4cSEDIANBBEEIIAFBA3EiARsgBGpJDQEgAUEARyADIARBJ2pLcQ0CIAIQvAULIAAoAhQhASAAKAIYIgUEQCABIQIDQCACQThqKAIAIgYEQCACQTxqKAIAIgRBBGsoAgAiA0F4cSEHIAdBBEEIIANBA3EiAxsgBmpJDQMgA0EARyAHIAZBJ2pLcQ0EIAQQvAULIAIQ8AUgAkHIAGohAiAFQQFrIgUNAAsLIAAoAhAiAgRAIAFBBGsoAgAiAEF4cSEDIAMgAkHIAGwiAkEEQQggAEEDcSIAG2pJDQEgAEEARyADIAJBJ2pLcQ0CIAEQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL1QIBB38gACgCLCEDAkACQCAAKAIwIgIEQCADQQxqIQEDQCABQQRrKAIAIgUEQCABKAIAIgdBBGsoAgAiBkF4cSEEIAQgBUEMbCIFQQRBCCAGQQNxIgYbakkNAyAGQQBHIAQgBUEnaktxDQQgBxC8BQsgAUEkaiEBIAJBAWsiAg0ACwsgACgCKCICBEAgA0EEaygCACIEQXhxIQEgASACQSRsIgJBBEEIIARBA3EiBBtqSQ0BIARBAEcgASACQSdqS3ENAiADELwFCwJAIAAoAhgiA0ECRg0AIABBHGohASADRQRAIAEoAgAiAUUNASAAKAIgIgNBBGsoAgAiAkF4cSEAIABBBEEIIAJBA3EiAhsgAWpJDQIgAkEARyAAIAFBJ2pLcQ0DIAMQvAUPCyABEJUNCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC4sDAQ5/AkACQAJAAkAgAkUEQEEEIQoMAQsgAkEUbCIDEJABIgpFDQEgASADaiEQIAIhCwNAIAEgEEYNASAEIQUCfyABKAIAIgxBAkYEQEECIQwgASgCDCIDRQRAQQQhCEEAIQNBAAwCCyABKAIIIQYgA0EUbCINEJABIghFDQVBACEEIAMhCQNAIAMgBCANRg0CGiAGKAIQIg4oAgAhByAOIAdBAWo2AgAgB0EASA0HIAQgCGoiByAGKQIINwIIIAcgBikCADcCACAHQRBqIA42AgAgBEEUaiEEIAZBFGohBiAJQQFrIgkNAAsgAwwBCyABKAIQIg8oAgAhAyAPIANBAWo2AgAgA0EASA0FIAEoAgwhAyABKAIIIQggASgCBAshCSAFQQFqIQQgAUEUaiEBIAogBUEUbGoiBSAPNgIQIAUgAzYCDCAFIAg2AgggBSAJNgIEIAUgDDYCACALQQFrIgsNAAsLIAAgAjYCCCAAIAo2AgQgACACNgIADwtBBBCnFAALQQQQpxQLAAusAwIIfwF+IAAQrAkgAEEsahCsCQJAAkACQAJAAkAgACgCZCIGRQ0AIAAoAmwiBwRAIAAoAmAiAUEIaiEDIAEpAwBCf4VCgIGChIiQoMCAf4MhCQNAIAlQBEADQCADIgJBCGohAyABQeAAayEBIAIpAwBCgIGChIiQoMCAf4MiCUKAgYKEiJCgwIB/UQ0ACyAJQoCBgoSIkKDAgH+FIQkLIAEgCXqnQQN2QXRsaiIEQQxrKAIAIgIEQCAEQQhrKAIAIghBBGsoAgAiBUF4cSEEIARBBEEIIAVBA3EiBRsgAmpJDQQgBUEARyAEIAJBJ2pLcQ0FIAgQvAULIAlCAX0gCYMhCSAHQQFrIgcNAAsLIAZBDGxBE2pBeHEiAiAGakEJaiIDRQ0AIAAoAmAgAmsiAkEEaygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyADakkNAyABQQBHIAAgA0EnaktxDQQgAhC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL1QIBB38CQAJAAkAgACgCICIBRQ0AIAEgAUECdEELakF4cSIBakEJaiIERQ0AIAAoAhwgAWsiAkEEaygCACIBQXhxIQMgA0EEQQggAUEDcSIBGyAEakkNASABQQBHIAMgBEEnaktxDQIgAhC8BQsgACgCFCEBIAAoAhgiBQRAIAEhAgNAIAJB3ABqKAIAIgYEQCACQeAAaigCACIEQQRrKAIAIgNBeHEhByAHQQRBCCADQQNxIgMbIAZqSQ0DIANBAEcgByAGQSdqS3ENBCAEELwFCyACEN8QIAJB6ABqIQIgBUEBayIFDQALCyAAKAIQIgIEQCABQQRrKAIAIgBBeHEhAyADIAJB6ABsIgJBBEEIIABBA3EiABtqSQ0BIABBAEcgAyACQSdqS3ENAiABELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC7sDAQV/IwBBMGsiAiQAQQEhBAJAIAAoAgBBAUYEQCACIABBBGo2AgwgASgCACIAQduQyQBBBSABKAIEIgUoAgwiAxEAAA0BAkAgAS0ACkGAAXFFBEAgAEG0z8UAQQEgAxEAAA0DIAJBDGogARCMDEUNAQwDCyAAQZ3jwgBBAiADEQAADQIgAkEBOgAfIAIgBTYCFCACIAA2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqIgE2AiAgAkEMaiACQSBqEIwMDQIgAUGkssgAQQIQ/QgNAgsgAEGIkMkAQQEgAxEAACEEDAELIAEoAgAiA0HVkMkAQQYgASgCBCIGKAIMIgURAAANAAJAIAEtAApBgAFxRQRAIANBtM/FAEEBIAURAAANAiAAKAIIIAAoAgwgAyAGEL8GRQ0BDAILIANBnePCAEECIAURAAANASACIAY2AiQgAiADNgIgIAJBAToAECACIAJBEGo2AiggACgCCCAAKAIMIAJBIGoiAEGg68IAEL8GDQEgAEGkssgAQQIQ/QgNAQsgA0GIkMkAQQEgBREAACEECyACQTBqJAAgBAulAwEIfyMAQRBrIgIkACAAKAIAIgAoAgghByAAKAIEIQRBASEAIAEoAgAiA0GissgAQQEgASgCBCIGKAIMIggRAAAhBQJAIAdFBEAgBSEADAELIAEoAghBgICABHEhCQJAIAUNACAJBEAgA0GgssgAQQEgCBEAAA0BIAIgBjYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCCAEKAIEIAQoAgggAkGg68IAEL8GDQEgAkGkssgAQQIQ/QghAAwBCyAEKAIEIAQoAgggAyAGEL8GIQALIAdBAUYNACAHQQxsQQxrIQUgBEEUaiEBA0ACf0EBIABBAXENABogCQRAIAIgBjYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCEEBIAFBBGsoAgAgASgCACACQaDrwgAQvwYNARogAkGkssgAQQIQ/QgMAQtBASADQYizyQBBAiAIEQAADQAaIAFBBGsoAgAgASgCACADIAYQvwYLIQAgAUEMaiEBIAVBDGsiBQ0ACwtBASEBIABFBEAgA0GossgAQQEgCBEAACEBCyACQRBqJAAgAQvVAgEHfwJAAkACQCAAKAIQIgFFDQAgASABQQJ0QQtqQXhxIgFqQQlqIgRFDQAgACgCDCABayICQQRrKAIAIgFBeHEhAyADQQRBCCABQQNxIgEbIARqSQ0BIAFBAEcgAyAEQSdqS3ENAiACELwFCyAAKAIEIQEgACgCCCIFBEAgASECA0AgAkHkAGooAgAiBgRAIAJB6ABqKAIAIgRBBGsoAgAiA0F4cSEHIAdBBEEIIANBA3EiAxsgBmpJDQMgA0EARyAHIAZBJ2pLcQ0EIAQQvAULIAIQ2AcgAkHwAGohAiAFQQFrIgUNAAsLIAAoAgAiAgRAIAFBBGsoAgAiAEF4cSEDIAMgAkHwAGwiAkEEQQggAEEDcSIAG3JJDQEgAEEARyADIAJBJ2pLcQ0CIAEQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAAL0wIBB38CQAJAAkAgACgCICIBRQ0AIAEgAUECdEELakF4cSIBakEJaiIERQ0AIAAoAhwgAWsiAkEEaygCACIBQXhxIQMgA0EEQQggAUEDcSIBGyAEakkNASABQQBHIAMgBEEnaktxDQIgAhC8BQsgACgCFCEBIAAoAhgiBQRAIAEhAgNAIAJBOGooAgAiBgRAIAJBPGooAgAiBEEEaygCACIDQXhxIQcgB0EEQQggA0EDcSIDGyAGakkNAyADQQBHIAcgBkEnaktxDQQgBBC8BQsgAhDzBSACQcgAaiECIAVBAWsiBQ0ACwsgACgCECICBEAgAUEEaygCACIAQXhxIQMgAyACQcgAbCICQQRBCCAAQQNxIgAbakkNASAAQQBHIAMgAkEnaktxDQIgARC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAu5AwIGfwF+IwBBsAFrIgUkAAJAAkACQAJAAkAgACgCAEUEQCACEJABIgdFDQEgAgRAIAcgASAC/AoAAAtBASEBIAAoAgQiCEEASgRAIAAoAggiCkEEaygCACIGQXhxIQkgCUEEQQggBkEDcSIGGyAIakkNAyAGQQBHIAkgCEEnaktxDQQgChC8BQsgACACNgIMIAAgBzYCCCAAQX82AgQgBSAAKQMINwJAIAUgAjYCPAJAIARFIgINACAEEJABIgFFDQUgAg0AIAEgAyAE/AoAAAsgBUGDgICAeDYCWCAFIAQ2AlAgBSABNgJMIAUgBDYCSCAFQfgAaiAAQRBqIAVBPGogBUHIAGoQ0gMgBSAFKQOoATcDMCAFIAUpA6ABNwMoIAUgBSkDmAE3AyAgBSAFKQOQASILNwMYIAUgBSkDiAE3AxAgBSAFKQOAATcDCCALp0F/RwRAIAVBCGoQ+wkLQQAhAAwFCyAFQQo2AnggBUH4AGpBAEEAEMcTIQAMBAtBARCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0EBEKcUAAsgBUGwAWokACAAC5oDAQV/IwBBwAFrIgQkAAJAIAIEQCACQegBbCIFIAFqIQcDQCABQegBaiECAkAgASkDAEICUQRAIARB2ABqIgYgAUHIAWoQkAMgBEEQaiIIIAFBCGogBiADEKEBIAQoAhBBfUYNAUGgAhCQASIFBEAgBSAIQcgA/AoAACAEQQE2AgwgBCAFNgIIIARBBDYCBAJAIAIgB0YNAEEBIQYDQCACIQEDQCABQegBaiECAkAgASkDAEICUQRAIARBoAFqIgggAUHIAWoQkAMgBEHYAGogAUEIaiAIIAMQoQEgBCgCWEF9Rg0BIAQoAgQgBkYEQCAEQQRqIAZBAUEIQcgAELMRIAQoAgghBQsgBSAGQcgAbGogBEHYAGpByAD8CgAAIAQgBkEBaiIGNgIMIAIgB0cNAwwECyAEQX02AlgLIAcgAiIBRw0ACwsLIAAgBCgCDDYCCCAAIAQpAgQ3AgAMBQtBCBCnFAALIARBfTYCEAsgAiEBIAVB6AFrIgUNAAsLIABBADYCCCAAQoCAgICAATcCAAsgBEHAAWokAAuyAwEFfyMAQZACayICJAAgASgCACEDIAEoAhAhBCACQQxqIAFBBGoiBRD8CCACIAFBEGoiBkEAIAQbNgIIIAIgAzYCBCACQQA6AGcgAiABKAIANgJwIAIgAkHnAGo2AmwgAiACQQRqNgJoIAJBgAFqIgEgAkHoAGoQ7wQCQAJAIAIoAoABQX1HBEBBoAIQkAEiA0UNAiADIAFByAD8CgAAIAJBATYCfCACIAM2AnggAkEENgJ0QcgAIQRBASEBA0AgAkHIAWogAkHoAGoQ7wQgAigCyAFBfUZFBEAgAigCdCABRgRAIAJB9ABqIAFBAUEIQcgAELMRIAIoAnghAwsgAyAEaiACQcgBakHIAPwKAAAgAiABQQFqIgE2AnwgBEHIAGohBAwBCwsgACACKAJ8NgIIIAAgAikCdDcCAAwBCyAAQQA2AgggAEKAgICAgAE3AgALIAUoAgAiASgCACEAIAEgAEEBazYCACAAQQFGBEAgBSgCABAwCwJAIAYoAgAiAEUNACAAIAAoAgAiAEEBazYCACAAQQFHDQAgBigCABAwCyACQZACaiQADwtBCBCnFAALuQMCBn8BfiMAQbABayIFJAACQAJAAkACQAJAIAAoAgBFBEAgAhCQASIHRQ0BIAIEQCAHIAEgAvwKAAALQQEhASAAKAIEIghBAEoEQCAAKAIIIgpBBGsoAgAiBkF4cSEJIAlBBEEIIAZBA3EiBhsgCGpJDQMgBkEARyAJIAhBJ2pLcQ0EIAoQvAULIAAgAjYCDCAAIAc2AgggAEF/NgIEIAUgACkDCDcCQCAFIAI2AjwCQCAERSICDQAgBBCQASIBRQ0FIAINACABIAMgBPwKAAALIAVBg4CAgHg2AlggBSAENgJQIAUgATYCTCAFIAQ2AkggBUH4AGogAEEQaiAFQTxqIAVByABqENIDIAUgBSkDqAE3AzAgBSAFKQOgATcDKCAFIAUpA5gBNwMgIAUgBSkDkAEiCzcDGCAFIAUpA4gBNwMQIAUgBSkDgAE3AwggC6dBf0cEQCAFQQhqEP4JC0EAIQAMBQsgBUEKNgJ4IAVB+ABqQQBBABDHEyEADAQLQQEQpxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtBARCnFAALIAVBsAFqJAAgAAuUAwIDfgd/IAApAxAgACkDGCABIAIQ4woiA6cgACgCBCIIcSEGIANCGYhC/wCDQoGChIiQoMCAAX4hBSAAKAIAIQcCfwNAAkAgBiAHaikAACIEIAWFIgNCgYKEiJCgwIABfSADQn+Fg0KAgYKEiJCgwIB/gyIDQgBSBEADQCAHIAN6p0EDdiAGaiAIcSILQXRsaiIKQQhrKAIAIAJGBEAgASAKQQxrIgwoAgAgAhCPE0UNAwsgA0IBfSADgyIDQgBSDQALC0EAIAQgBEIBhoNCgIGChIiQoMCAf4NCAFINAhogCUEIaiIJIAZqIAhxIQYMAQsLQYABIQIgC0EMbEEMbSIBIAdqIgYpAAAiA0IBhiADg0KAgYKEiJCgwIB/g3qnQQN2IAcgAUEIayAIcWoiASkAACIDQgGGIAODQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgACAAKAIIQQFqNgIIQf8BIQILIAYgAjoAACABQQhqIAI6AAAgACAAKAIMQQFrNgIMIApBBGsoAgBBACAMKAIAGwsL1wIBBn8gACgCDCICIAAoAgQiAWtB8ABuIQQCQAJAIAEgAkcEQANAAkAgASgCACICQX9GDQAgAkUNACABQQRqKAIAIgZBBGsoAgAiA0F4cSEFIAVBBEEIIANBA3EiAxsgAmpJDQMgA0EARyAFIAJBJ2pLcQ0EIAYQvAULIAFBEGoQrQEgAUHgAGooAgAiAkEASgRAIAFB5ABqKAIAIgZBBGsoAgAiA0F4cSEFIAVBBEEIIANBA3EiAxsgAmpJDQMgA0EARyAFIAJBJ2pLcQ0EIAYQvAULIAFB8ABqIQEgBEEBayIEDQALCyAAKAIIIgEEQCAAKAIAIgJBBGsoAgAiBEF4cSEAIAAgAUHwAGwiAUEEQQggBEEDcSIEG3JJDQEgBEEARyAAIAFBJ2pLcQ0CIAIQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALuQMCA38BfgNAAkBBCCEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSAAKQMAIgSnQQNrIARCAlgbQQFrDhUKBAAEBQUKCgwMAQsGAgMHBAgMDAkECyAAKAIMIQIgACgCFBCVDCEBIAAoAhAiAEUNDANAQX8gAhCVDCABaiIDIAEgA0sbIQEgAkGAAWohAiAAQQFrIgANAAsMDAsgACgCDCECIAAoAhQQlQwhASAAKAIQIgBFDQsDQEF/IAIQlQwgAWoiAyABIANLGyEBIAJBkAFqIQIgAEEBayIADQALDAsLQcgAIQEMCQtBwAAhAQwIC0EADwtBAQ8LQX8hAQwGCyAAKAIQEJUMIQEgACgCFBCVDCECQX8gASAAKAIYEJUMIgAgAiAAIAJLG2oiACAAIAFJGw8LIAAoAhQQlQwhAUF/IAAoAhgQlQwgAWoiACAAIAFJGw8LQegAIQEMAgsgACgCECICRQRAQQAPCyAAKAIMIQBBACEBA0BBfyAAEJUMIAFqIgMgASADSxshASAAQfAAaiEAIAJBAWsiAg0ACwwCC0EUIQELIAAgAWooAgAhAAwBCwsgAQugAwEIfyMAQRBrIgIkACAAKAIIIQcgACgCBCEEQQEhACABKAIAIgNBorLIAEEBIAEoAgQiBigCDCIIEQAAIQUCQCAHRQRAIAUhAAwBCyABKAIIQYCAgARxIQkCQCAFDQAgCQRAIANBoLLIAEEBIAgRAAANASACIAY2AgQgAiADNgIAIAJBAToADyACIAJBD2o2AgggBCgCBCAEKAIIIAJBoOvCABC/Bg0BIAJBpLLIAEECEP0IIQAMAQsgBCgCBCAEKAIIIAMgBhC/BiEACyAHQQFGDQAgB0EMbEEMayEFIARBFGohAQNAAn9BASAAQQFxDQAaIAkEQCACIAY2AgQgAiADNgIAIAJBAToADyACIAJBD2o2AghBASABQQRrKAIAIAEoAgAgAkGg68IAEL8GDQEaIAJBpLLIAEECEP0IDAELQQEgA0GIs8kAQQIgCBEAAA0AGiABQQRrKAIAIAEoAgAgAyAGEL8GCyEAIAFBDGohASAFQQxrIgUNAAsLQQEhASAARQRAIANBqLLIAEEBIAgRAAAhAQsgAkEQaiQAIAELzQMBA38jAEEgayIDJAAgASgCAEHf+sYAQREgASgCBCgCDBEAACECIANBADoADSADIAI6AAwgAyABNgIIIANBCGpB8PrGAEEEIABBpQEQiQ4hAQJAIAMtAAwEQEEBIQEMAQsgAy0ADSEEAkAgASgCACICLQAKQYABcUUEQEEBIQEgAigCAEGIs8kAQZfjwgAgBEEBcSIEG0ECQQMgBBsgAigCBCgCDBEAAA0CIAIoAgBB9PrGAEECIAIoAgQoAgwRAAANAiACKAIAQaayyABBAiACKAIEKAIMEQAADQIgACgCECAAKAIUIAIoAgAgAigCBBC/Bg0CDAELQQEhASAEQQFxRQRAIAIoAgBBmuPCAEEDIAIoAgQoAgwRAAANAgsgA0EBOgAfIAMgAikCADcCECADIANBH2o2AhggA0EQaiIEQfT6xgBBAhD9CA0BIARBprLIAEECEP0IDQEgACgCECAAKAIUIARBoOvCABC/Bg0BIARBpLLIAEECEP0IRQ0ADAELIAItAApBgAFxRQRAIAIoAgBB7erCAEECIAIoAgQoAgwRAAAhAQwBCyACKAIAQaGyyABBASACKAIEKAIMEQAAIQELIANBIGokACABC+oCAQV/AkAgAUHN/3tBECAAIABBEE0bIgBrTw0AQRAgAUELakF4cSABQQtJGyIEIABqQQxqEJABIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSAAQQAgAiADakEAIABrcUEIayIAIAFrQRBNGyAAaiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACEJkHDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQmQcLIABBCGohAwsgAwuFAwIFfwN+IwBBEGsiBiQAAkACQAJAAkAgAyAETQRAIAIgA0kNAgNAIAIgBUYiCA0EIAEgBWoiBy0AAEEwayIJQf8BcUEKTwRAIAMgBUsEQCAAQQA2AgAgAEEDOgAEDAcLAkAgAiAFTQRAIAhFDQEMBQsgBywAAEG/f0oNBAsgASACIAUgAkGgyMIAEP0UAAsgBiAKIApCP4dCCkIAEO4RAkAgBikDCCAGKQMAIgtCP4dSDQAgCa1C/wGDIgwgC3wiCiALUw0AIAVBAWoiBSAERw0BDAULCyAAQQA2AgAgAEEAOgAEDAQLQeTHwgBBHEGAyMIAEK8UAAsgACAKNwMIIAAgAiAFazYCBCAAIAc2AgAMAgsgAEEANgIAIABBBDoABAwBCyACIAQgAiAESRshAwJAAkAgAiAETQ0AIANFDQAgASADaiwAAEFASA0BCyAAIAo3AwggACACIANrNgIEIAAgASADajYCAAwBCyABIAIgAyACQZDIwgAQ/RQACyAGQRBqJAAL2gIBBH8gAEGAAWoQlAwCQAJAAkAgACgCIEF/Rg0AAkAgACgCECICQX9GDQAgAkUNACAAKAIUIgNBBGsoAgAiBEF4cSEBIAFBBEEIIARBA3EiBBsgAmpJDQIgBEEARyABIAJBJ2pLcQ0DIAMQvAULIABBIGoQrQEgACgCcCICQQBMDQAgACgCdCIDQQRrKAIAIgRBeHEhASABQQRBCCAEQQNxIgQbIAJqSQ0BIARBAEcgASACQSdqS3ENAiADELwFCyAAKAKUASECIAAoApgBIgMEQCACIQEDQCABEJQMIAFBEGohASADQQFrIgMNAAsLIAAoApABIgEEQCACQQRrKAIAIgNBeHEhACAAIAFBBHQiAUEEQQggA0EDcSIDG3JJDQEgA0EARyAAIAFBJ2pLcQ0CIAIQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALtQMCBH8CfiMAQTBrIgIkACABKAIAIgRBAUEAIAEoAgQoAgwiBREAACEDIAIgAEHIAWo2AgwCQCADBEBBASEDDAELAkAgAS0ACkGAAXFFBEBBASEDIARBtM/FAEEBIAURAAANAiAAIAEQkgRFDQEMAgsgBEGd48IAQQIgBREAAARAQQEhAwwCCyABKQIAIQZBASEDIAJBAToAHyACIAY3AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAAgAkEgahCSBA0BIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANAQsCQCABLQAKQYABcUUEQCABKAIAQYizyQBBAiABKAIEKAIMEQAABEAMAwsgAkEMaiABENUBRQ0BDAILIAEpAgghBiABKQIAIQcgAkEBOgAfIAIgBzcCECACIAY3AiggAkGg68IANgIkIAIgAkEfajYCGCACIAJBEGo2AiAgAkEMaiACQSBqENUBDQEgAigCIEGkssgAQQIgAigCJCgCDBEAAA0BCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMLIAJBMGokACADC50DAgd/AX4jAEEgayIDJABBASEEIAIoAgAiBUGissgAQQEgAigCBCIHKAIMIgYRAAAhCAJAIAFFBEAgCCEEDAELIAIoAghBgICABHEhCSACKQIIIQoCQCAIDQAgCQRAIAVBoLLIAEEBIAYRAAANASADQQE6AA8gAyAHNgIEIAMgBTYCACADIAo3AhggA0Gg68IANgIUIAMgA0EPajYCCCADIAM2AhAgACADQRBqEI8GDQEgA0GkssgAQQIQ/QghBAwBCyAAIAIQjwYhBAsgAUEBRg0AIABBFGohACABQRRsQRRrIQEDQAJ/QQEgBEEBcQ0AGiAJBEAgA0EBOgAPIAMgBzYCBCADIAU2AgAgAyAKNwIYIANBoOvCADYCFCADIANBD2o2AgggAyADNgIQQQEgACADQRBqEI8GDQEaIANBpLLIAEECEP0IDAELQQEgBUGIs8kAQQIgBhEAAA0AGiAAIAIQjwYLIQQgAEEUaiEAIAFBFGsiAQ0ACwtBASEAIARFBEAgBUGossgAQQEgBhEAACEACyADQSBqJAAgAAubAwEMfyMAQRBrIgYkAAJAAkACQCABKAIEIgIgASgCDCILRwRAIAEoAhAiBygCCCIIRQ0BIAhBAnQhCCAHKAIEIQcDQCACQQRqIQkCQCACKAIAIgQoAgBFBEAgBCgCBCEFIAghAyAHIQIDQCACKAIAIgooAgBFBEAgCigCBCAFRg0DCyACQQRqIQIgA0EEayIDDQALDAULIAQoAgwhCiAEKAIIIQwgBCgCBCENIAghAyAHIQIDQAJAIAIoAgAiBSgCAEUNACAFKAIEIA1HDQAgBSgCCCAMRw0AIAUoAgwgCkYNAgsgAkEEaiECIANBBGsiAw0ACwwECyALIAkiAkcNAAsgASACNgIECyAAQX82AgAMAgsgAkEEaiEJIAIoAgAhBAsgASAJNgIEIAZBCGogBBDwDgJAAkAgBigCDCIBQQBOBEAgAUUEQEEBIQMMAwsgBigCCCECIAEQkAEiA0UNASABRQ0CIAMgAiAB/AoAAAwCCxCeFQALQQEQpxQACyAAIAE2AgggACADNgIEIAAgATYCAAsgBkEQaiQAC9oDAQF/AkACQAJAAkACQAJAAkAgASgCAEEBaw4DAgABAAtBwAEQkAEiA0UNAiADQQs2AmAgA0F+NgJQIANBCjYCACADQX42ArABIABBAjYCDCAAIAM2AgggAEECNgIEIAMgASkCCDcCDCADIAEpAgA3AgQgAyACKQIANwJkIAMgAikCCDcCbCADIAIoAhA2AnQgAEEBNgIADwsgASgCBCEDQcABEJABIgFFDQIgASADQeAA/AoAACABQQs2AmAgAUF+NgKwASABIAIoAhA2AnQgASACKQIINwJsIAEgAikCADcCZCAAQQI2AgwgACABNgIIIABCgYCAgCA3AgAgA0EEaygCACIAQQNxIQEgAEF4cUHkAEHoACABG0kNAyABQQBHIABBiAFPcQ0EIAMQvAUPCyABKAIMIgMgASgCBEYEQCABQQRqEKUSCyABIANBAWo2AgwgACABKQIANwIAIAEoAgggA0HgAGxqIgNBCzYCACADIAIpAgA3AgQgAyACKQIINwIMIAMgAigCEDYCFCADQX42AlAgACABKQIINwIIDwtBuPDJAEEBOgAAAAtBuPDJAEEBOgAAAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALgAMBCH8jAEEQayIFJAACQEEMEJABIgYEQEEKIQMgASIEQegHTwRAA0AgBUEGaiADaiIHQQRrIAQiAiACQZDOAG4iBEGQzgBsayIIQf//A3FB5ABuIglBAXQvAJyYSTsAACAHQQJrIAggCUHkAGxrQf//A3FBAXQvAJyYSTsAACADQQRrIQMgAkH/rOIESw0ACwsCQCAEQQlNBEAgBCECDAELIANBAmsiAyAFQQZqaiAEIARB//8DcUHkAG4iAkHkAGxrQf//A3FBAXQvAJyYSTsAAAsCQAJAIAJFIAFBAEdxRQRAIAMgBWpBBWoiASACQQF0LQCdmEk6AABBCyADayECDAELQQogA2shAkEBIQQgA0EKRg0BIAVBBmogA2ohAQsgAhCQASIERQ0CIAJFDQAgBCABIAL8CgAACyAGIAI2AgggBiAENgIEIAYgAjYCACAAQQE2AgggACAGNgIEIABBATYCACAFQRBqJAAPC0G48MkAQQE6AAAAC0EBEKcUAAukAwIJfwF+AkACQAJAAkACQCAAKAIEIgVFDQAgACgCDCIGBEAgACgCACIBQQhqIQMgASkDAEJ/hUKAgYKEiJCgwIB/gyEKA0AgClAEQANAIAMiAkEIaiEDIAFBgANrIQEgAikDAEKAgYKEiJCgwIB/gyIKQoCBgoSIkKDAgH9RDQALIApCgIGChIiQoMCAf4UhCgsgASAKeqdBA3ZBUGxqIgJBMGsoAgAiBwRAIAJBLGsoAgAiCUEEaygCACIEQXhxIQggCEEEQQggBEEDcSIEGyAHakkNBCAEQQBHIAggB0EnaktxDQUgCRC8BQsgCkIBfSAKgyEKIAJBIGsQhwQgBkEBayIGDQALCyAFQTBsIgIgBWpBOWoiA0UNACAAKAIAIAJrIgJBNGsoAgAiAUF4cSEAIABBBEEIIAFBA3EiARsgA2pJDQMgAUEARyAAIANBJ2pLcQ0EIAJBMGsQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6QDAgl/AX4CQAJAAkACQAJAIAAoAgQiBUUNACAAKAIMIgYEQCAAKAIAIgFBCGohAyABKQMAQn+FQoCBgoSIkKDAgH+DIQoDQCAKUARAA0AgAyICQQhqIQMgAUGAA2shASACKQMAQoCBgoSIkKDAgH+DIgpCgIGChIiQoMCAf1ENAAsgCkKAgYKEiJCgwIB/hSEKCyABIAp6p0EDdkFQbGoiAkEwaygCACIHBEAgAkEsaygCACIJQQRrKAIAIgRBeHEhCCAIQQRBCCAEQQNxIgQbIAdqSQ0EIARBAEcgCCAHQSdqS3ENBSAJELwFCyAKQgF9IAqDIQogAkEgaxCIBCAGQQFrIgYNAAsLIAVBMGwiAiAFakE5aiIDRQ0AIAAoAgAgAmsiAkE0aygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyADakkNAyABQQBHIAAgA0EnaktxDQQgAkEwaxC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALugMBBX8jAEHgAGsiAiQAIAJBIGogARDaASACIAIpAzA3AxAgAiACKQM4NwMYIAIoAiwhBCACKAIoIQEgAigCJCEDIAIoAiAhBQJAIAIoAlAiBkF/RwRAIAAgAikDSDcDKCAAIAIpA0A3AyAgACACKQJUNwI0IAAgAigCXDYCPCAAIAIpAxg3AxggACACKQMQNwMQIAAgBjYCMCAAIAQ2AgwgACABNgIIIAAgAzYCBCAAIAU2AgAMAQsgAiACKQMQNwMAIAIgAikDGDcDCAJAIAVBD0cNAAJAAkAgBEEEaw4CAAECCyABKAAAQerepfMGRw0BIABBfzYCMCAAQQA6AAAgA0UNAiABIAMQ2RIMAgsgASgAAEHx6pWTB3MgAUEEai0AAEH5AHNyDQAgAEF/NgIwIABBAToAACADRQ0BIAEgAxDZEgwBCyACIAQ2AiwgAiABNgIoIAIgAzYCJCACIAU2AiAgAiACKQMANwMwIAIgAikDCDcDOCACIAJBIGoiAa1CgICAgMAjhDcDECAAQTBqQYbxwQAgAkEQahC4DCAAQQA6ADwgAEF/NgIQIAEQiAQLIAJB4ABqJAALgwMCCH8BfiMAQRBrIgIkACACQQA2AgwgAkKAgICAwAA3AgQCQCABKAIIQX9GDQBBBCEGA0AgASgCECEFIAEoAgwhByACKAIEIANGBEAgAkEEahCWEiACKAIIIQYLIAQgBmoiCCAHNgIAIAhBBGogBTYCACACIANBAWoiAzYCDCAEQQhqIQQgASgCFCIBKAIIQX9HDQALIANBAXYiAUUNACACKAIIIgYgA0EDdGohB0EAIQUgAUEBRwRAIAFBAXEgAUH+////B3EhCSAEIAZqQQhrIQMgBiEBA0AgAykCACEKIAMgASkCADcCACABIAo3AgAgAUEIaiIEKQIAIQogBCAHIAVB/v///wFzQQN0aiIEKQIANwIAIAQgCjcCACADQRBrIQMgAUEQaiEBIAkgBUECaiIFRw0AC0UNAQsgBiAFQQN0aiIBKQIAIQogASAHIAVBf3NBA3RqIgEpAgA3AgAgASAKNwIACyAAIAIoAgw2AgggACACKQIENwIAIAJBEGokAAvYAwEBfwJAAkACQAJAAkACQAJAIAEoAgAOBAIAAAEAC0HAARCQASIDRQ0CIANBCzYCYCADQX42AlAgA0EKNgIAIANBfjYCsAEgAEECNgIMIAAgAzYCCCAAQQI2AgQgAyABKQIINwIMIAMgASkCADcCBCADIAIpAgA3AmQgAyACKQIINwJsIAMgAigCEDYCdCAAQQA2AgAPCyABKAIEIQNBwAEQkAEiAUUNAiABIANB4AD8CgAAIAFBCzYCYCABQX42ArABIAEgAigCEDYCdCABIAIpAgg3AmwgASACKQIANwJkIABBAjYCDCAAIAE2AgggAEKAgICAIDcCACADQQRrKAIAIgBBA3EhASAAQXhxQeQAQegAIAEbSQ0DIAFBAEcgAEGIAU9xDQQgAxC8BQ8LIAEoAgwiAyABKAIERgRAIAFBBGoQpRILIAEgA0EBajYCDCAAIAEpAgA3AgAgASgCCCADQeAAbGoiA0ELNgIAIAMgAikCADcCBCADIAIpAgg3AgwgAyACKAIQNgIUIANBfjYCUCAAIAEpAgg3AggPC0G48MkAQQE6AAAAC0G48MkAQQE6AAAAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAv2AgEEfyMAQRBrIgQkAAJAIAAoAgAiAyABKAIARw0AAkACQAJAAkACQCADQQFrDgQBBAIDAAsgAEEIaiABQQhqEMADIQIMBAsgACgCMCABKAIwRw0DIAAoAhwhAiAAKAIgIAQgAUEIajYCCEHIAGwhAANAIAAiAQRAIABByABrIQAgBEEIaiACQThqIAIQyQwgAkHIAGohAg0BCwsgAUUhAgwDCyAAQQhqIAFBCGoQlQchAgwCCyAAKAIwIAEoAjBHDQEgACgCHCECIAAoAiAgBCABQQhqNgIMQcgAbCEAA0AgACIBBEAgAEHIAGshACAEQQxqIAJBOGogAhDJDCACQcgAaiECDQELCyABRSECDAELIAAoAgwiAyABKAIMRw0AIANFBEBBASECDAELIAAoAgghACABKAIIIQEgA0EBayEDA0AgACABEKUMIgJFDQEgA0EARyAAQThqIQAgAUE4aiEBIANBAWshAw0ACwsgBEEQaiQAIAILrgMBCX8jAEGQAWsiAiQAIAJCgICAgIABNwIMIAJBmKnJACkDADcCICACQZCpyQApAwA3AhggAkEYaiABQRxqEIgNAkAgASgCGCIFBEACQAJAQbGn7AkgAigCICACKAIkaiIDIANBsafsCU8bIgMgBU0NACADQegAbBCQASIGRQ0AIAIgAzYCDAwBCyAFQegAbCIDEJABIgYEQCACIAU2AgwMAQtBCBCnFAALIAIgBjYCECABKAIUIQMgBSEIA0AgA0HYAGooAgAhCQJAIANB5ABqKAIAIgRFBEBBASEHDAELIANB4ABqKAIAIQogBBCQASIHRQ0DIARFDQAgByAKIAT8CgAACyACIAQ2AowBIAIgBzYCiAEgAiAENgKEASACQShqIgQgAxDTDCACIAk2AoABIAYgBEHoAPwKAAAgBkHoAGohBiADQegAaiEDIAhBAWsiCA0ACyAFIQMLIAAgAikCDDcCECAAIAIpAhw3AiAgACACKAIkNgIoIAIgAzYCFCAAIAIpAhQ3AhggACABKQMINwMIIAAgASkDADcDACACQZABaiQADwtBARCnFAALnwMCCH8BfgJAAkACQAJAAkAgACgCBCIGRQ0AIAAoAgwiBwRAIAAoAgAiAUEIaiEDIAEpAwBCf4VCgIGChIiQoMCAf4MhCQNAIAlQBEADQCADIgJBCGohAyABQeAAayEBIAIpAwBCgIGChIiQoMCAf4MiCUKAgYKEiJCgwIB/UQ0ACyAJQoCBgoSIkKDAgH+FIQkLIAEgCXqnQQN2QXRsaiIEQQxrKAIAIgIEQCAEQQhrKAIAIghBBGsoAgAiBUF4cSEEIARBBEEIIAVBA3EiBRsgAmpJDQQgBUEARyAEIAJBJ2pLcQ0FIAgQvAULIAlCAX0gCYMhCSAHQQFrIgcNAAsLIAZBDGxBE2pBeHEiAiAGakEJaiIDRQ0AIAAoAgAgAmsiAkEEaygCACIBQXhxIQAgAEEEQQggAUEDcSIBGyADakkNAyABQQBHIAAgA0EnaktxDQQgAhC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALgwMBBX8gAUGAgAhPBEAgAEF/NgIADwsgAiABQQx2QfD/P3FqIgUoAgAhBEEAIQICQAJAAkAgBSgCBCIDDgICAQALIAFB//8DcSEGA0AgAiADQQF2IgcgAmoiAiAEIAJBBmxqLwEAIAZLGyECIAMgB2siA0EBSw0ACwsgBCACQQZsaiICLwEAIgMgAUH//wNxIgRLDQAgAyACQQJqLQAAakH//wNxIARJDQAgAi0AAyABIANzcUEBcQ0AIABCADcCBCAAIAFBgIAEcSACLwEEIAFqQf//A3FyNgIADwsgBSgCCCEEQQAhAgJAAkACQAJAIAUoAgwiAw4CAgEACyABQf//A3EhBQNAIAIgA0EBdiIGIAJqIgIgBCACQQN0ai8BACAFSxshAiADIAZrIgNBAUsNAAsLIAQgAkEDdGoiAi8BACABQf//A3FGDQELIABBfzYCAA8LIAAgAUGAgARxIgEgAi8BBnI2AgggACABIAIvAQRyNgIEIAAgASACLwECcjYCAAuLAwEJfyAAKAIEIQUCQAJAAkACQCAAKAIIIggEQANAAkAgBSAGQRRsaiICKAIAQQJHBEAgAigCECIEKAIAIQEgBCABQQFrNgIAIAFBAUcNASACKAIQEDAMAQsgAigCCCEEIAIoAgwiAwRAIARBEGohAQNAIAEoAgAiCSgCACEHIAkgB0EBazYCACAHQQFGBEAgASgCABAwCyABQRRqIQEgA0EBayIDDQALCyACKAIEIgFFDQAgBEEEaygCACIDQXhxIQIgAiABQRRsIgFBBEEIIANBA3EiAxtqSQ0DIANBAEcgAiABQSdqS3ENBCAEELwFCyAGQQFqIgYgCEcNAAsLIAAoAgAiAgRAIAVBBGsoAgAiAUF4cSEAIAAgAkEUbCICQQRBCCABQQNxIgEbakkNAyABQQBHIAAgAkEnaktxDQQgBRC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALwwIBA38jAEEQayICJAAgAiAAKAIAKAIALQAAIgBBAXEtAJCVRDoADyAAQQF2IgRnQRhrIQMgAUEBQZKVxABBAgJ/IAJBD2ogBEUNABogAiAEQQFxQZCVxABqLQAAOgAOIAJBDmogA0EHRg0AGiACIABBAnZBAXFBkJXEAGotAAA6AA0gAkENaiADQQZGDQAaIAIgAEEDdkEBcUGQlcQAai0AADoADCACQQxqIANBBUYNABogAiAAQQR2QQFxQZCVxABqLQAAOgALIAJBC2ogA0EERg0AGiACIABBBXZBAXFBkJXEAGotAAA6AAogAkEKaiADQQNGDQAaIAIgAEEGdkEBcUGQlcQAai0AADoACSACQQlqIANBAkYNABogAiAAQQd2LQCQlUQ6AAggAkEIagtBCSADa0H/AXEQyQkgAkEQaiQAC68DAgZ/AX4jAEGwAWsiAyQAAkACQAJAAkACQCAAKAIARQRAQQQQkAEiBkUNASAGQfTywasGNgAAAkAgACgCBCIEQX9GDQAgBEUNACAAKAIIIghBBGsoAgAiBUF4cSEHIAdBBEEIIAVBA3EiBRsgBGpJDQMgBUEARyAHIARBJ2pLcQ0EIAgQvAULIABBBDYCDCAAIAY2AgggAEF/NgIEIAMgACkDCDcCQCADQQQ2AjwgAhCQASIERQ0EIAIEQCAEIAEgAvwKAAALIANBg4CAgHg2AlggAyACNgJQIAMgBDYCTCADIAI2AkggA0H4AGogAEEQaiADQTxqIANByABqEJ8FIAMgAykDqAE3AzAgAyADKQOgATcDKCADIAMpA5gBNwMgIAMgAykDkAEiCTcDGCADIAMpA4gBNwMQIAMgAykDgAE3AwggCadBf0cEQCADQQhqEP0JC0EAIQAMBQsgA0EKNgJ4IANB+ABqQQBBABDHEyEADAQLQQEQpxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtBARCnFAALIANBsAFqJAAgAAujAwEFfyMAQYABayICJAAgASgCACEDIAEoAgwhBCABKAIIIQYgASgCBCIFKAIAIQEgBSABQQFqNgIAAkACQCABQQBOBEAgAiAENgJ8IAIgBjYCeCACIAU2AnQgAkEANgJwIAJBDGoiASADIAJB8ABqEPgMQQUQkAEiA0UNASADQcDxxwAtAAA6AAQgA0G88ccAKAAANgAAQeQAEJABIgZFDQIgBiABQeQA/AoAAEGQARCQASIBRQ0CQeQAEJABIgRFDQIgBEECOgAEIARBAjYCACABQQA7AYwBIAFBBTYCiAEgAUG2/McANgKEASABQX82AoABIAFCBDcDeCABQgE3A3AgASAENgJsIAFBATYCaCABQX42AkggAUEAOwFEIAFBBTYCQCABIAM2AjwgAUEFNgI4IAFCBDcDMCABQgE3AyggASAGNgIkIAFBATYCICABQX42AgAgAEECNgIIIAAgATYCBCAAQQI2AgAgBSAFKAIAIgBBAWs2AgAgAEEBRgRAIAUQMAsgAkGAAWokAA8LAAtBARCnFAALQbjwyQBBAToAAAALmQMCBn8BfiMAQUBqIgIkAAJAAkACQAJAIAAoAgAiAEHUAGooAgAiBCAAQdAAaigCACIAKAIcIgNJBEAgASgCBCEGIAEoAgAgACgCGCAEQfAAbGoiAygCXCEBIAMoAlghAyAAIAAoAgAiBUEBajYCACAFQQBIDQEgAEGgAmooAgAiBSADTQ0CIABBnAJqKAIAIANBJGxqIgNBIGooAgAiBSABTQ0DIANBHGooAgAgAUHUAGxqIgEoAgBBgoCAgHhHDQQgAiABKQIINwIQIAJBCGogAEEIaiAEENEQIAIpAwghCCACQQY2AhwgAkHM9sgANgIYIAIgCDcCICACIAJBIGqtQoCAgIDQAYQ3AzggAiACQRhqrUKAgICA0AGENwMwIAIgAkEQaq1CgICAgNABhDcDKCAGQaqEwAAgAkEoahCxCSAAIAAoAgAiBEEBazYCACAEQQFGBEAgABAwCyACQUBrJAAPCyAEIANB5P7IABCFEwsACyADIAVBzLvEABCFEwALIAEgBUHMu8QAEIUTAAtBzLvEABCdFQALhQMBBX8CQCAAQoCAgIAQVARAIAEhAgwBCyABQQhrIgIgACAAQoDC1y+AIgBCgL6o0A9+fKciA0GQzgBuIgRBkM4AcCIFQeQAbiIGQQF0LwCcmEk7AAAgAUEEayADIARBkM4AbGsiA0H//wNxQeQAbiIEQQF0LwCcmEk7AAAgAUEGayAFIAZB5ABsa0H//wNxQQF0LwCcmEk7AAAgAUECayADIARB5ABsa0H//wNxQQF0LwCcmEk7AAALIACnIgFBkM4ATwRAIAJBBGshAgNAIAIgASIDQZDOAG4iAUHwsX9sIANqIgRB5ABuIgVBAXQvAJyYSTsAACACQQJqIAQgBUHkAGxrQQF0LwCcmEk7AAAgAkEEayECIANB/8HXL0sNAAsgAkEEaiECCyABQeMASwRAIAJBAmsiAiABIAFB//8DcUHkAG4iAUHkAGxrQf//A3FBAXQvAJyYSTsAAAsgAUEJTQRAIAJBAWsgAUEwcjoAAA8LIAJBAmsgAUEBdC8AnJhJOwAAC7UDAgV/AX4jAEEgayICJAACQCABKAIAIgRBAUEAIAEoAgQiBigCDCIFEQAABEBBASEDDAELAn8gAS0ACkGAAXFFBEBBASEDIARBtM/FAEEBIAURAAANAiAAIAEQ1Q8NAiABKAIIDAELIARBnePCAEECIAURAAAEQEEBIQMMAgtBASEDIAJBAToADyACIAY2AgQgAiAENgIAIAJBoOvCADYCFCACIAEpAggiBzcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDVDw0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANASAHpwshAyAAQQRqIQACQCADQYCAgARxRQRAIAEoAgBBiLPJAEECIAEoAgQoAgwRAAAEQEEBIQMMAwtBASEDIAAgARDxCUUNAQwCCyABKQIAIQdBASEDIAJBAToADyACIAc3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahDxCQ0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANAQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDCyACQSBqJAAgAwuFAwEMfyMAQbABayIFJAACQAJAAkAgASgCCCIEQavVqtUASQRAAkAgBEEMbCICRQRAQQQhCQwBCyABKAIEIQMgAhCQASIJRQ0CIARFDQAgAyAEQQxsaiEMIAQhCgNAIAMgDEYNASAIIQsCQCADKAIAQX9HBEAgAygCCCICRQRAQQAhAkEIIQZBACEHDAILIAMoAgQhByACQbABbCINEJABIgZFDQZBACEBIAIhCANAIAEgDUYEQCACIQcMAwsgBSABIAdqEOIFIAEgBmogBUGwAfwKAAAgAUGwAWohASAIQQFrIggNAAsgAiEHDAELQbABEJABIgZFDQYgBSADKAIEEOIFIAYgBUGwAfwKAABBfyECCyALQQFqIQggA0EMaiEDIAkgC0EMbGoiASAHNgIIIAEgBjYCBCABIAI2AgAgCkEBayIKDQALCyAAIAQ2AgggACAJNgIEIAAgBDYCACAFQbABaiQADwsQnhUAC0EEEKcUAAtBCBCnFAALQbjwyQBBAToAAAALtQMCBX8BfiMAQSBrIgIkAAJAIAEoAgAiBEEBQQAgASgCBCIGKAIMIgURAAAEQEEBIQMMAQsCfyABLQAKQYABcUUEQEEBIQMgBEG0z8UAQQEgBREAAA0CIAAgARDgDA0CIAEoAggMAQsgBEGd48IAQQIgBREAAARAQQEhAwwCC0EBIQMgAkEBOgAPIAIgBjYCBCACIAQ2AgAgAkGg68IANgIUIAIgASkCCCIHNwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEOAMDQEgAigCEEGkssgAQQIgAigCFCgCDBEAAA0BIAenCyEDIABBAWohAAJAIANBgICABHFFBEAgASgCAEGIs8kAQQIgASgCBCgCDBEAAARAQQEhAwwDC0EBIQMgACABEOAMRQ0BDAILIAEpAgAhB0EBIQMgAkEBOgAPIAIgBzcCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEOAMDQEgAigCEEGkssgAQQIgAigCFCgCDBEAAA0BCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMLIAJBIGokACADC7UDAgV/AX4jAEEgayICJAACQCABKAIAIgRBAUEAIAEoAgQiBigCDCIFEQAABEBBASEDDAELAn8gAS0ACkGAAXFFBEBBASEDIARBtM/FAEEBIAURAAANAiAAIAEQkBANAiABKAIIDAELIARBnePCAEECIAURAAAEQEEBIQMMAgtBASEDIAJBAToADyACIAY2AgQgAiAENgIAIAJBoOvCADYCFCACIAEpAggiBzcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahCQEA0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANASAHpwshAyAAQQRqIQACQCADQYCAgARxRQRAIAEoAgBBiLPJAEECIAEoAgQoAgwRAAAEQEEBIQMMAwtBASEDIAAgARCREEUNAQwCCyABKQIAIQdBASEDIAJBAToADyACIAc3AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahCREA0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANAQsgASgCAEGIkMkAQQEgASgCBCgCDBEAACEDCyACQSBqJAAgAwv1AgEIfyAAKAIMBEAgAA8LAkACQAJAIAEoAhQiAiABKAIQIgNNBEAgAkUEQEEBIQJBACEDDAQLIAEoAgwhASACQQNxIQUgAkEETw0BQQEhAkEAIQMMAgtBACACIANBmLPIABCHDgALIAJBfHEhBEEBIQJBACEDA0BBAEEBQQJBAyADQQRqIAEtAABBCkYiBhsgAUEBai0AAEEKRiIHGyABQQJqLQAAQQpGIggbIAFBA2otAABBCkYiCRshAyACIAZqIAdqIAhqIAlqIQIgAUEEaiEBIARBBGsiBA0ACyAFRQ0BCwNAQQAgA0EBaiABLQAAQQpGIgQbIQMgAUEBaiEBIAIgBGohAiAFQQFrIgUNAAsLIAAgAiADEMcTIQIgAEEEaygCACIDQXhxIQECQEEYQRwgA0EDcSIDGyABTQRAIANBAEcgAUE8T3ENASAAELwFIAIPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAu6AwEEf0ECIQdBASEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAEEBaw4MCwABAgMEBQYHCAkKDAtBAyEEDAsLQQQhBAwKC0EFIQQMCQtBBiEEDAgLIAEgASgCACIFQQFqNgIAIAVBAE4EQCACKAIIIQUgAigCBCEGIAEgASgCACICQQFqNgIAQQMhByACQQBODQgLAAtBzIvJAEGnAUHs88cAEL8TAAtBCiEEDAULQQghBAwEC0EHIQQMAwtBCyEEDAILQbCMyQBBqwFB/PPHABC/EwALQQIhBAsgA0UEQCAAQQA7AAUgAEEBOgA0IAAgBTYCICAAIAY2AhwgACABNgIYIABBEjoAFCAAIAU2AhAgACAGNgIMIAAgATYCCCAAIAQ6AAQgACAHNgIAIABBB2pBADoAAA8LQeQAEJABIgIEQCACQQA7AAUgAkEBOgA0IAIgBTYCICACIAY2AhwgAiABNgIYIAJBEjoAFCACIAU2AhAgAiAGNgIMIAIgATYCCCACIAQ6AAQgAiAHNgIAIAAgAjYCBCAAQQQ2AgAgAkEHakEAOgAADwtBuPDJAEEBOgAAAAumAwEDfyMAQfABayICJABByAEQkAEiAwRAAkACQAJAAkACQAJAQQMgASgCACIEQQJrIARBAU0bQQFrDgMBAgMACyACQQxqIAFB5AD8CgAADAMLIAJBEGogAUEEahCgByACQQM2AgwMAgtB5AAQkAEiBEUNAiABKAIEIAQQuA8gAkEENgIMIAIgBDYCEAwBCyACQQxqIAEQ5AULIAJB8ABqIgQgAUHkAPwKAAAgAkHUAWogBBDMByACIAIoAtwBNgDsASACIAIpAtQBNwDkAUHkABCQASIERQ0AIAQgAUHkAPwKAABBGBCQASIBRQ0AIAFBADoAFCABQeTkxwA2AgwgAUEBNgIIIAFCgYCAgBA3AgAgAyACKQDoATcAqAEgAyACKQDhATcAoQEgAyACQQxqQeQA/AoAACADIAE2AsQBIANBADoAwAEgA0EwOgCgASADIAQ2ApQBIANBBDYCkAEgA0ECNgKAASADQX82AnQgA0EANgJsIANBADYCZCAAQQI2AgggACADNgIEIABBAjYCACACQfABaiQADwsLQbjwyQBBAToAAAALhQMBDH8jAEGwAWsiBSQAAkACQAJAIAEoAggiBEGr1arVAEkEQAJAIARBDGwiAkUEQEEEIQkMAQsgASgCBCEDIAIQkAEiCUUNAiAERQ0AIAMgBEEMbGohDCAEIQoDQCADIAxGDQEgCCELAkAgAygCAEF/RwRAIAMoAggiAkUEQEEAIQJBCCEGQQAhBwwCCyADKAIEIQcgAkGwAWwiDRCQASIGRQ0GQQAhASACIQgDQCABIA1GBEAgAiEHDAMLIAUgASAHahC+ByABIAZqIAVBsAH8CgAAIAFBsAFqIQEgCEEBayIIDQALIAIhBwwBC0GwARCQASIGRQ0GIAUgAygCBBC+ByAGIAVBsAH8CgAAQX8hAgsgC0EBaiEIIANBDGohAyAJIAtBDGxqIgEgBzYCCCABIAY2AgQgASACNgIAIApBAWsiCg0ACwsgACAENgIIIAAgCTYCBCAAIAQ2AgAgBUGwAWokAA8LEJ4VAAtBBBCnFAALQQgQpxQAC0G48MkAQQE6AAAAC6gDAgZ/AX4jAEGwAWsiAyQAAkACQAJAAkACQCAAKAIARQRAQQQQkAEiBEUNASAEQfTywasGNgAAIAAoAgQiBkEASgRAIAAoAggiCEEEaygCACIFQXhxIQcgB0EEQQggBUEDcSIFGyAGakkNAyAFQQBHIAcgBkEnaktxDQQgCBC8BQsgAEEENgIMIAAgBDYCCCAAQX82AgQgAyAAKQMINwJAIANBBDYCPCACEJABIgRFDQQgAgRAIAQgASAC/AoAAAsgA0GDgICAeDYCWCADIAI2AlAgAyAENgJMIAMgAjYCSCADQfgAaiAAQRBqIANBPGogA0HIAGoQ0gMgAyADKQOoATcDMCADIAMpA6ABNwMoIAMgAykDmAE3AyAgAyADKQOQASIJNwMYIAMgAykDiAE3AxAgAyADKQOAATcDCCAJp0F/RwRAIANBCGoQ+wkLQQAhAAwFCyADQQo2AnggA0H4AGpBAEEAEMcTIQAMBAtBARCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0EBEKcUAAsgA0GwAWokACAAC+8CAQZ/IwBBEGsiBSQAAkACQAJAAkACQAJAAkAgAkEBcQRAIAJBAXYhAwwBCyABLQAAIgNFDQEgASEEA0AgBEEBaiEEAkAgA8BBAEgEQCADQf8BcUGAAUYEQCAELwAAIgMgBmohBiADIARqQQJqIQQMAgsgBCADQQNxQQh4IghBBXRBgICAgARxIAhBB3RyQR12aiADQQF2QQJxaiADQQJ2QQJxaiEEIAZFIAdyIQcMAQsgA0H/AXEiAyAEaiEEIAMgBmohBgsgBC0AACIDDQALQQAhAyAHIAZBEElxDQAgBkEBdCIDQQBIDQQLIAMNAQtBASEEQQAhAwwBCyADEJABIgRFDQILIAVBADYCCCAFIAQ2AgQgBSADNgIAIAVB0KvCACABIAIQsQlFDQJB+KvCAEHWACAFQQ9qQeirwgBB0KzCABDaEgALEJ4VAAtBARCnFAALIAAgBSgCCDYCCCAAIAUpAgA3AgAgBUEQaiQAC8wCAQd/AkACQAJAAkBBEyAAKAIAIgFBgICAgHhzIAFBAE4bIgJBEk0EQCACQQpHDQIgACgCBCICELkMIAJBBGsoAgAiAUF4cSEAIABBEEEUIAFBA3EiARtJDQQgAUUNASAAQTRJDQEMAwsgACgCBCECIAAoAggiAwRAIAIhAANAIAAQuQwgAEEMaigCACIFQQBKBEAgAEEQaigCACIHQQRrKAIAIgRBeHEhBiAGQQRBCCAEQQNxIgQbIAVqSQ0GIARBAEcgBiAFQSdqS3ENBSAHELwFCyAAQRxqIQAgA0EBayIDDQALCyABRQ0BIAJBBGsoAgAiA0F4cSEAIAAgAUEcbCIBQQRBCCADQQNxIgMbakkNAyADRQ0AIAAgAUEnaksNAgsgAhC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAv7AgILfwF+IwBBoAFrIgUkAAJAAkAgASgCCCIGQbKn7AlJBEACQCAGQegAbCIJRQRAQQghCgwBCyABKAIEIQsgCRCQASIKRQ0CIAZFDQAgCyEBIAYhDANAIAMgCUcEQCAFQdAAaiABELMCQX4hByABKAJQIgRBfkcEQEF/IQcgAyALaiIIQdgAaigCACECIAhB1ABqKAIAIQgCQCAEQX9GBEAgCCEEDAELIAJFBEBBASEEQQAhBwwBCyACEJABIgRFDQcgAgRAIAQgCCAC/AoAAAsgAiEHCyAErSACrUIghoQhDQsgBSAFQdAAakHQAPwKAAAgAS0AYCEEIAMgCmoiAiAFQdAA/AoAACACQeAAaiAEOgAAIAJB1ABqIA03AgAgAkHQAGogBzYCACADQegAaiEDIAFB6ABqIQEgDEEBayIMDQELCyAGIQMLIAAgBjYCCCAAIAo2AgQgACADNgIAIAVBoAFqJAAPCxCeFQALQQgQpxQAC0EBEKcUAAv/AgEKfyMAQZACayIGJAACQAJAAkACQEEIEJABIgcEQAJAIAAoAgAiACgCAEEBRgRAQSQQkAEiAUUNBiAAKAIEIgUoAggiBEH58OEDTw0DAkAgBEGQAmwiA0UEQEEIIQgMAQsgBSgCBCEJIAMQkAEiCEUNBSAERQ0AQQAhACAEIQIDQCAAIANGDQEgBiAAIAlqELgGIAAgCGogBkGQAvwKAAAgAEGQAmohACACQQFrIgINAAsLQQEhAEEBIQMCQCAFQRRqKAIAIgJFIgkNACAFQRBqKAIAIQogAhCQASIDRQ0GIAkNACADIAogAvwKAAALIAFBGGogBUEYahCqBiABIAI2AhQgASADNgIQIAEgAjYCDCABIAQ2AgggASAINgIEIAEgBDYCAAwBC0GQAhCQASIBRQ0FIAEgACgCBBC4BkEAIQALIAcgATYCBCAHIAA2AgAgBkGQAmokACAHDwsMAwsQnhUAC0EIEKcUAAtBARCnFAALQbjwyQBBAToAAAALzAIBB38CQAJAAkACQEETIAAoAgAiAUGAgICAeHMgAUEAThsiAkESTQRAIAJBCkcNAiAAKAIEIgIQvAwgAkEEaygCACIBQXhxIQAgAEEQQRQgAUEDcSIBG0kNBCABRQ0BIABBNEkNAQwDCyAAKAIEIQIgACgCCCIDBEAgAiEAA0AgABC8DCAAQQxqKAIAIgVBAEoEQCAAQRBqKAIAIgdBBGsoAgAiBEF4cSEGIAZBBEEIIARBA3EiBBsgBWpJDQYgBEEARyAGIAVBJ2pLcQ0FIAcQvAULIABBHGohACADQQFrIgMNAAsLIAFFDQEgAkEEaygCACIDQXhxIQAgACABQRxsIgFBBEEIIANBA3EiAxtqSQ0DIANFDQAgACABQSdqSw0CCyACELwFCw8LQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC/8CAQp/IwBBkAJrIgYkAAJAAkACQAJAQQgQkAEiBwRAAkAgACgCACIAKAIAQQFGBEBBJBCQASIBRQ0GIAAoAgQiBSgCCCIEQfnw4QNPDQMCQCAEQZACbCIDRQRAQQghCAwBCyAFKAIEIQkgAxCQASIIRQ0FIARFDQBBACEAIAQhAgNAIAAgA0YNASAGIAAgCWoQ7AEgACAIaiAGQZAC/AoAACAAQZACaiEAIAJBAWsiAg0ACwtBASEAQQEhAwJAIAVBFGooAgAiAkUiCQ0AIAVBEGooAgAhCiACEJABIgNFDQYgCQ0AIAMgCiAC/AoAAAsgAUEYaiAFQRhqEL4GIAEgAjYCFCABIAM2AhAgASACNgIMIAEgBDYCCCABIAg2AgQgASAENgIADAELQZACEJABIgFFDQUgASAAKAIEEOwBQQAhAAsgByABNgIEIAcgADYCACAGQZACaiQAIAcPCwwDCxCeFQALQQgQpxQAC0EBEKcUAAtBuPDJAEEBOgAAAAv7AgILfwF+IwBBoAFrIgUkAAJAAkAgASgCCCIGQbKn7AlJBEACQCAGQegAbCIJRQRAQQghCgwBCyABKAIEIQsgCRCQASIKRQ0CIAZFDQAgCyEBIAYhDANAIAMgCUcEQCAFQdAAaiABEN4BQX4hByABKAJQIgRBfkcEQEF/IQcgAyALaiIIQdgAaigCACECIAhB1ABqKAIAIQgCQCAEQX9GBEAgCCEEDAELIAJFBEBBASEEQQAhBwwBCyACEJABIgRFDQcgAgRAIAQgCCAC/AoAAAsgAiEHCyAErSACrUIghoQhDQsgBSAFQdAAakHQAPwKAAAgAS0AYCEEIAMgCmoiAiAFQdAA/AoAACACQeAAaiAEOgAAIAJB1ABqIA03AgAgAkHQAGogBzYCACADQegAaiEDIAFB6ABqIQEgDEEBayIMDQELCyAGIQMLIAAgBjYCCCAAIAo2AgQgACADNgIAIAVBoAFqJAAPCxCeFQALQQgQpxQAC0EBEKcUAAuuAwIGfwF+IwBBsAFrIgMkAAJAAkACQAJAIAAoAgBBAUcEQEEMEJABIgRFDQEgBEGQhsYAKAAANgAIIARBiIbGACkAADcAAAJAIAAoAgQiBUF/Rg0AIAVFDQAgACgCCCIIQQRrKAIAIgZBeHEhByAHQQRBCCAGQQNxIgYbIAVqSQ0DIAZBAEcgByAFQSdqS3ENBCAIELwFCyAAQQw2AgwgACAENgIIIABBfzYCBCADIAApAwg3AkAgA0EMNgI8IAIQkAEiBEUNBCACBEAgBCABIAL8CgAACyADQYOAgIB4NgJYIAMgAjYCUCADIAQ2AkwgAyACNgJIIANB+ABqIABBEGogA0E8aiADQcgAahCfBSADIAMpA6gBNwMwIAMgAykDoAE3AyggAyADKQOYATcDICADIAMpA5ABIgk3AxggAyADKQOIATcDECADIAMpA4ABNwMIIAmnQX9HBEAgA0EIahD9CQsgA0GwAWokAA8LQaCryQBBKEH0rskAEK8UAAtBARCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0EBEKcUAAuxAwEEfyMAQfAAayIEJAACQAJAAkBBkAEQkAEiAgRAIARBCGoiAyABEOQFQeQAEJABIgVFDQEgBSADQeQA/AoAACADIAEoAmggASgCbBCoDiACQX42AkggAkEBOwFEIAJBBTYCQCACQbzxxwA2AjwgAkF/NgI4IAJCBDcDMCACQgE3AyggAiAFNgIkIAJBATYCICACQX42AgAgAkEBOwGMASACQQQ2AogBIAJBlPDHADYChAEgAkKAgICAcDcCfCACQoCAgIDAADcCdCACIAQpAwg3A2ggAiAEKAIQNgJwIABBAjYCCCAAIAI2AgQgAEECNgIAIAEQ6wggASgCaCECIAEoAmwiAARAIAIhAwNAIAMQwAcgA0HkAGohAyAAQQFrIgANAAsLIAEoAmQiAQRAIAJBBGsoAgAiA0F4cSEAIAAgAUHkAGwiAUEEQQggA0EDcSIDG2pJDQMgA0EARyAAIAFBJ2pLcQ0EIAIQvAULIARB8ABqJAAPC0G48MkAQQE6AAAAC0G48MkAQQE6AAAAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAuzAwEDfyMAQRBrIgIkACAAQQRqIQMgAEEBaiEEAkAgAC0AAEEBRgRAIAIgAzYCBCABKAIAQfGryABBAyABKAIEKAIMEQAAIQAgAkEAOgANIAIgADoADCACIAE2AgggAkEIakHDpcgAQQQgBEH1AhCJDkHuq8gAQQMgAkEEakH2AhCJDiACLQANIgMgAi0ADCIEciEAIANBAUcNASAEQQFxDQEoAgAiAC0ACkGAAXFFBEAgACgCAEHt6sIAQQIgACgCBCgCDBEAACEADAILIAAoAgBBobLIAEEBIAAoAgQoAgwRAAAhAAwBCyACIAM2AgQgASgCAEHpq8gAQQUgASgCBCgCDBEAACEAIAJBADoADSACIAA6AAwgAiABNgIIIAJBCGpBw6XIAEEEIARB9QIQiQ5B7qvIAEEDIAJBBGpB9gIQiQ4gAi0ADSIDIAItAAwiBHIhACADQQFHDQAgBEEBcQ0AKAIAIgAtAApBgAFxRQRAIAAoAgBB7erCAEECIAAoAgQoAgwRAAAhAAwBCyAAKAIAQaGyyABBASAAKAIEKAIMEQAAIQALIAJBEGokACAAQQFxC/sCAgt/AX4jAEGgAWsiBSQAAkACQCABKAIIIgZBsqfsCUkEQAJAIAZB6ABsIglFBEBBCCEKDAELIAEoAgQhCyAJEJABIgpFDQIgBkUNACALIQEgBiEMA0AgAyAJRwRAIAVB0ABqIAEQhgJBfiEHIAEoAlAiBEF+RwRAQX8hByADIAtqIghB2ABqKAIAIQIgCEHUAGooAgAhCAJAIARBf0YEQCAIIQQMAQsgAkUEQEEBIQRBACEHDAELIAIQkAEiBEUNByACBEAgBCAIIAL8CgAACyACIQcLIAStIAKtQiCGhCENCyAFIAVB0ABqQdAA/AoAACABLQBgIQQgAyAKaiICIAVB0AD8CgAAIAJB4ABqIAQ6AAAgAkHUAGogDTcCACACQdAAaiAHNgIAIANB6ABqIQMgAUHoAGohASAMQQFrIgwNAQsLIAYhAwsgACAGNgIIIAAgCjYCBCAAIAM2AgAgBUGgAWokAA8LEJ4VAAtBCBCnFAALQQEQpxQAC/8CAQp/IwBBkAJrIgYkAAJAAkACQAJAQQgQkAEiBwRAAkAgACgCACIAKAIAQQFGBEBBJBCQASIBRQ0GIAAoAgQiBSgCCCIEQfnw4QNPDQMCQCAEQZACbCIDRQRAQQghCAwBCyAFKAIEIQkgAxCQASIIRQ0FIARFDQBBACEAIAQhAgNAIAAgA0YNASAGIAAgCWoQmwQgACAIaiAGQZAC/AoAACAAQZACaiEAIAJBAWsiAg0ACwtBASEAQQEhAwJAIAVBFGooAgAiAkUiCQ0AIAVBEGooAgAhCiACEJABIgNFDQYgCQ0AIAMgCiAC/AoAAAsgAUEYaiAFQRhqEKsGIAEgAjYCFCABIAM2AhAgASACNgIMIAEgBDYCCCABIAg2AgQgASAENgIADAELQZACEJABIgFFDQUgASAAKAIEEJsEQQAhAAsgByABNgIEIAcgADYCACAGQZACaiQAIAcPCwwDCxCeFQALQQgQpxQAC0EBEKcUAAtBuPDJAEEBOgAAAAuiAwIGfwF+IwBBMGsiAiQAAkACQCABKAIEIgUgASgCACIERwRAIAEgBEEMaiIDNgIAIAIgBDYCDEEBIQYgBSADa0EMbkEBdCEEIAMgBUYiBw0BIAQQkAEiBg0BQQEQpxQACyAAQQA2AgggAEKAgICAEDcCAAwBCyACQQA2AhggAiAGNgIUIAIgBDYCECACIAJBDGqtQoCAgICQAoQ3AyACQCACQRBqQeCvyQBBz63AACACQSBqELEJRQRAIAdFBEAgAkEcaq1CgICAgJAChCEIA0AgASADQQxqIgQ2AgAgAiADNgIcIAIoAhAgAigCGCIDa0EBTQRAIAJBEGogA0ECEMQRIAIoAhghAwsgAigCFCADakGswAA7AAAgAiADQQJqNgIYIAIgCDcDICACQRBqQeCvyQBBz63AACACQSBqELEJDQMgBCIDIAVHDQALCyAAIAIoAhg2AgggACACKQIQNwIADAILQYiwyQBBKyACQS9qQfivyQBBwLbJABDaEgALQYiwyQBBKyACQS9qQfivyQBBtLDJABDaEgALIAJBMGokAAuoAwIGfwF+IwBBsAFrIgMkAAJAAkACQAJAAkAgACgCAEUEQEEEEJABIgRFDQEgBEHr0rmjBjYAACAAKAIEIgZBAEoEQCAAKAIIIghBBGsoAgAiBUF4cSEHIAdBBEEIIAVBA3EiBRsgBmpJDQMgBUEARyAHIAZBJ2pLcQ0EIAgQvAULIABBBDYCDCAAIAQ2AgggAEF/NgIEIAMgACkDCDcCQCADQQQ2AjwgAhCQASIERQ0EIAIEQCAEIAEgAvwKAAALIANBg4CAgHg2AlggAyACNgJQIAMgBDYCTCADIAI2AkggA0H4AGogAEEQaiADQTxqIANByABqENIDIAMgAykDqAE3AzAgAyADKQOgATcDKCADIAMpA5gBNwMgIAMgAykDkAEiCTcDGCADIAMpA4gBNwMQIAMgAykDgAE3AwggCadBf0cEQCADQQhqEP4JC0EAIQAMBQsgA0EKNgJ4IANB+ABqQQBBABDHEyEADAQLQQEQpxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtBARCnFAALIANBsAFqJAAgAAvEAgEEfwJAAkACQCAAKAIAQX9GDQAgABB4IAAoAhwiBEEASgRAIAAoAiAiA0EEaygCACIBQXhxIQIgAkEEQQggAUEDcSIBGyAEakkNAiABQQBHIAIgBEEnaktxDQMgAxC8BQsgACgCKCIEQQBKBEAgACgCLCIDQQRrKAIAIgFBeHEhAiACQQRBCCABQQNxIgEbIARqSQ0CIAFBAEcgAiAEQSdqS3ENAyADELwFCyAAKAIUIQMgACgCGCICBEAgAyEBA0AgARDfByABQQxqIQEgAkEBayICDQALCyAAKAIQIgFFDQAgA0EEaygCACIAQXhxIQIgAiABQQxsIgFBBEEIIABBA3EiABtqSQ0BIABBAEcgAiABQSdqS3ENAiADELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC68DAQN/IwBBMGsiBCQAIAIoAgAgAigCBCADEOQOIQUgAygCACADKAIEIAIQ5A4hBiAEIAVB/wFxIAIgARD2CQJAAkACQAJAIAQoAgBBfkYEQEEDEJABIgJFDQEgAkGygsYALQAAOgACIAJBsILGAC8AADsAACAEQQM2AgggBCACNgIEIARBAzYCACABIAQQ/A0gBCAGQf8BcSADIAEQ9gkgBCgCAEF+RwRAIAAgBCkCKDcCKCAAIAQpAiA3AiAgACAEKQIYNwIYIAAgBCkCEDcCECAAIAQpAgg3AgggACAEKQIANwIADAULIABBfjYCAAwECyAAIAQpAig3AiggACAEKQIgNwIgIAAgBCkCGDcCGCAAIAQpAhA3AhAgACAEKQIINwIIIAAgBCkCADcCACADEK0BIAMoAlAiAEEATA0DIAMoAlQiAkEEaygCACIDQXhxIQEgAUEEQQggA0EDcSIDGyAAakkNASADQQBHIAEgAEEnaktxDQIgAhC8BQwDC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIARBMGokAAvAAgEHfwJAAkACQCAAKAIAIgFBf0YNACAAEOgEIAEEQCAAKAIEIgJBBGsoAgAiA0F4cSEEIAQgAUHIAWwiAUEEQQggA0EDcSIDG2pJDQIgA0EARyAEIAFBJ2pLcQ0DIAIQvAULIAAoAhAhAyAAKAIUIgUEQCADIQEDQCABKAIAIgYEQCABQQRqKAIAIgRBBGsoAgAiAkF4cSEHIAdBBEEIIAJBA3EiAhsgBmpJDQQgAkEARyAHIAZBJ2pLcQ0FIAQQvAULIAFBDGohASAFQQFrIgUNAAsLIAAoAgwiAUUNACADQQRrKAIAIgBBeHEhAiACIAFBDGwiAUEEQQggAEEDcSIAG2pJDQEgAEEARyACIAFBJ2pLcQ0CIAMQvAULDwtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALlQMCA34IfyABKAIIIQYgASgCBCEJQQAhAQJAAkACQAJAAkACQCAAKAIAIgAoAhgiBw4CAwEACyAAKQMAIAApAwggCSAGEN8KIQEgASAAKAIgIgpxIQggAUEZdq1CgYKEiJCgwIABfiEFIAAoAhwhCyAAKAIUIQADQCAIIAtqKQAAIgQgBYUiA0KBgoSIkKDAgAF9IANCf4WDQoCBgoSIkKDAgH+DIgNCAFIEQANAIAcgCyADeqdBA3YgCGogCnFBAnRrQQRrKAIAIgFNDQYgACABQcgAbGoiDUFAaygCACAGRgRAIAkgDUE8aigCACAGEI8TRQ0FCyADQgF9IAODIgNCAFINAAsLIAQgBEIBhoNCgIGChIiQoMCAf4NCAFIEQEEADwUgDEEIaiIMIAhqIApxIQgMAQsACwALIAYgACgCFCIAQUBrKAIARw0BIAkgAEE8aigCACAGEI8TDQELIAEgB08NAiACIAAgAUHIAGxqEKUMIQELIAEPCyABIAdB0K/JABCFEwALIAEgB0HkhMcAEIUTAAtzAAJAAkACQAJAA0ACQAJAIAAtAABBAWsOEQQEBAQEBAQEBAQEBQUAAQYDBAsgACgCFCEADAELCwwDC0EADwsgAEEMakEAIAAoAghBf0YbDwsgAEEIakEAIAAoAgRBAUYbDwsgAEEUakEAIAAoAhBBf0YbC7kDAQh/IwBBIGsiAyQAIAEoAmQhBiABKAJwIQcgASgCbCEIIAEoAmgiBSgCACECIAUgAkEBajYCAAJAIAJBAEgNACABKAJ4IQkgASgCdCICKAIAIQQgAiAEQQFqNgIAIAMgBzYCHCADIAg2AhggAyAFNgIUIARBAEgNACADQQhqIAYgA0EUaiACIAkQ4QcCQEGQARCQASICBEBB5AAQkAEiBEUNASAEIAEQ5AUgAkF+NgJIIAJBATsBRCACQQU2AkAgAkG88ccANgI8IAJBfzYCOCACQgQ3AzAgAkIBNwMoIAIgBDYCJCACQQE2AiAgAkF+NgIAIAJBATsBjAEgAkEGNgKIASACQcHxxwA2AoQBIAJCgICAgHA3AnwgAkKAgICAwAA3AnQgAiADKAIQNgJwIAIgAykDCDcDaCAAQQI2AgggACACNgIEIABBAjYCACAFIAUoAgAiAEEBazYCACAAQQFGBEAgASgCaBAwCyABKAJ0IgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAnQQMAsgARDrCCADQSBqJAAPC0G48MkAQQE6AAAAC0G48MkAQQE6AAAACwALiAMBBX8jAEEgayICJABBASEEAkACQAJAIAEoAgBBAWsOAgECAAsgASgCBCIDIAEoAggiBRDgDUEBcyEEIAAoAgwiAEUNASACQRhqIAAoAgAgAEEEaigCABDhCSACQRBqIAIoAhgiAEEIaiACKAIcENEQIAIoAhAhBiACKAIUIQEgAkEIaiADQQhqIAUQ0RAgAigCDCABRgRAIAYgAigCCCABEI8TQQBHIARxIQQLIAAgACgCACIBQQFrNgIAIAFBAUcNASAAEDAMAQsgACgCCCIDRQ0AIANBFGwhAyAAKAIEIQAgASgCCCEFIAEoAgRFBEADQAJAIAAoAgANACAAQQRqKAIAIAVHDQBBACEEDAMLIABBFGohACADQRRrIgMNAAwCCwALIAEoAgwhBiABKAIQIQEDQAJAIAAoAgBFDQAgAEEEaigCACAFRw0AIABBCGooAgAgBkcNACAAQQxqKAIAIAFHDQBBACEEDAILIABBFGohACADQRRrIgMNAAsLIAJBIGokACAEC6oDAQV/IwBBIGsiAiQAQQEhBAJAIAAoAgBBAUYEQCABKAIAIgNB25DJAEEFIAEoAgQiBigCDCIFEQAADQEgAEEEaiEAAkAgAS0ACkGAAXFFBEAgA0G0z8UAQQEgBREAAA0DIAAgARCWDEUNAQwDCyADQZ3jwgBBAiAFEQAADQIgAkEBOgAPIAIgBjYCBCACIAM2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAAgAkEQahCWDA0CIAJBpLLIAEECEP0IDQILIANBiJDJAEEBIAURAAAhBAwBCyABKAIAIgNB1ZDJAEEGIAEoAgQiBigCDCIFEQAADQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQIgACgCCCAAKAIMIAMgBhC/BkUNAQwCCyADQZ3jwgBBAiAFEQAADQEgAiAGNgIUIAIgAzYCECACQQE6AAAgAiACNgIYIAAoAgggACgCDCACQRBqIgBBoOvCABC/Bg0BIABBpLLIAEECEP0IDQELIANBiJDJAEEBIAURAAAhBAsgAkEgaiQAIAQL5QIBA38jAEEQayIDJAAgACgCACgCACEAAn8CQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BQQMhAiAALQAAIgAhBCAAQQpPBEAgAyAAIABB5ABuIgRB5ABsa0H/AXFBAXQvAJyYSTsADEEBIQILIARFIABBAEdxRQRAIAJBAWsiAiADQQtqaiAEQQF0LQCdmEk6AAALIAFBAUEBQQAgA0ELaiACakEDIAJrEMkJDAILIAAtAAAhAkEDIQADQCAAIANqQQdqIAJBD3FB5LbJAGotAAA6AAAgAEEBayEAIAJBBHZBD3EiAg0ACyABQQFBopbEAEECIAAgA2pBCGpBAyAAaxDJCQwBCyAALQAAIQJBAyEAA0AgACADakEMaiACQQ9xQaSWxABqLQAAOgAAIABBAWshACACQQR2QQ9xIgINAAsgAUEBQaKWxABBAiAAIANqQQ1qQQMgAGsQyQkLIANBEGokAAv/AgEGfyMAQRBrIgYkACABKAIIIQQCQAJAAkACQAJAAkAgASgCFCIFIAEoAhAiCUkEQCABKAIMIAVqLQAAIgdBMGtB/wFxQQlLDQEgASABKAIAIARGBH8gARC+EiABKAIQIQkgASgCFAUgBQtBAWoiCDYCFCABIARBAWoiBTYCCCAEIAEoAgQiBGogBzoAACAIIAlPDQMDQCABKAIMIAhqLQAAIgdBMGtB/wFxQQpPDQMgASgCACAFRgRAIAEQvhIgASgCBCEECyAEIAVqIAc6AAAgASAFQQFqIgU2AgggASABKAIUQQFqIgg2AhQgCCABKAIQSQ0ACwwDCyADIARJDQIgBkEFNgIEIAEgBkEEahC0DiEBIABBATYCACAAIAE2AgQMBQsgAyAETw0DCyAHQSByQeUARg0BCyAAIAEgAiADQQAQMQwCCyAAIAEgAiADEIQMDAELIAZBDTYCBCABIAZBBGoQtA4hASAAQQE2AgAgACABNgIECyAGQRBqJAAL/gIBCX8jAEHwAGsiBSQAAkACQAJAIAIoAggiBEHyuJwOSQRAIAIoAgAhCCACKAIEIQYCQCAEQcgAbCICRQRAQQghBwwBCyAEIQogAhCQASIHRQ0CCyAEBEAgBEEFdCILQSBrQQV2QQFqIQkgByEEIAYhAgNAIAUgAikDGDcDICAFIAIpAxA3AxggBSACKQMINwMQIAUgAikDADcDCCAFQShqIgwgASAFQQhqIAMQoQEgBCAMQcgA/AoAACAEQcgAaiEEIAJBIGohAiALQSBrIgsNAAsLIAgEQCAGQQRrKAIAIgJBeHEhASABIAhBBXQiA0EEQQggAkEDcSICG3JJDQMgAkEARyABIANBJ2pLcQ0EIAYQvAULIABBfjYCUCAAIAk2AiQgACAHNgIgIAAgCjYCHCAAQQo6ABggAEF+NgIIIABBADYCACAFQfAAaiQADwsQnhUAC0EIEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALqgMBBX8jAEEgayICJABBASEEAkAgACgCAEEBRgRAIAEoAgAiA0HbkMkAQQUgASgCBCIGKAIMIgURAAANASAAQQRqIQACQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQMgACABEIAMRQ0BDAMLIANBnePCAEECIAURAAANAiACQQE6AA8gAiAGNgIEIAIgAzYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEIAMDQIgAkGkssgAQQIQ/QgNAgsgA0GIkMkAQQEgBREAACEEDAELIAEoAgAiA0HVkMkAQQYgASgCBCIGKAIMIgURAAANAAJAIAEtAApBgAFxRQRAIANBtM/FAEEBIAURAAANAiAAKAIIIAAoAgwgAyAGEL8GRQ0BDAILIANBnePCAEECIAURAAANASACIAY2AhQgAiADNgIQIAJBAToAACACIAI2AhggACgCCCAAKAIMIAJBEGoiAEGg68IAEL8GDQEgAEGkssgAQQIQ/QgNAQsgA0GIkMkAQQEgBREAACEECyACQSBqJAAgBAunAwIGfwF+IwBBsAFrIgMkAAJAAkACQAJAIAAoAgBBAUcEQEEMEJABIgRFDQEgBEGQhsYAKAAANgAIIARBiIbGACkAADcAACAAKAIEIgZBAEoEQCAAKAIIIghBBGsoAgAiBUF4cSEHIAdBBEEIIAVBA3EiBRsgBmpJDQMgBUEARyAHIAZBJ2pLcQ0EIAgQvAULIABBDDYCDCAAIAQ2AgggAEF/NgIEIAMgACkDCDcCQCADQQw2AjwgAhCQASIERQ0EIAIEQCAEIAEgAvwKAAALIANBg4CAgHg2AlggAyACNgJQIAMgBDYCTCADIAI2AkggA0H4AGogAEEQaiADQTxqIANByABqENIDIAMgAykDqAE3AzAgAyADKQOgATcDKCADIAMpA5gBNwMgIAMgAykDkAEiCTcDGCADIAMpA4gBNwMQIAMgAykDgAE3AwggCadBf0cEQCADQQhqEPsJCyADQbABaiQADwtBoKvJAEEoQfSuyQAQrxQAC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALQQEQpxQAC5ADAQN/IwBBMGsiAiQAAkACQCABLQAAQf8BRwRAIAAgARDTCQwBCwJAAkACQAJAAkACQAJAAkAgAS0ACEEBaw4GAQIDBAUGAAsCQCABKAIUIgNFBEBBASEBDAELIAEoAhAhBCADEJABIgFFDQkgA0UNACABIAQgA/wKAAALIAIgAzYCFCACIAE2AhAgAiADNgIMIAJBADoACAwGCyACQRBqIAFBEGoQkAMgAkEBOgAIDAULIAIgAUEIaiIBKQMgNwMoIAIgASkDGDcDICACIAEpAxA3AxggAiABKQMINwMQIAIgASkDADcDCAwECyACQRBqIAFBEGoQkAMgAkEDOgAIDAMLIAJBEGogAUEQahCQAyACQQQ6AAgMAgsgAkEQaiABQRBqEJADIAJBBToACAwBCyACQRBqIAFBEGoQkAMgAkEGOgAICyAAIAIpAyg3AyggACACKQMgNwMgIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIABB/wE6AAALIAJBMGokAA8LQQEQpxQAC5UDAQV/IwBBIGsiAiQAAkAgACgCAEF/RwRAQQEhBCABKAIAIgNB55HJAEEEIAEoAgQiBSgCDCIGEQAADQECQCABLQAKQYABcUUEQCADQbTPxQBBASAGEQAADQMgA0EnIAUoAhAiAREBAA0DIAJBEGogACgCAEGBAhD5AwJAIAItAB0iAEGBAU8EQCADIAIoAhAgAREBAEUNAQwFCyADIAItABwiBSACQRBqaiAAIAVrIAYRAAANBAsgA0EnIAERAQBFDQEMAwsgA0Gd48IAQQIgBhEAAA0CIAIgBTYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCCACQScQnxMNAiACQRBqIAAoAgBBgQIQ+QMCQCACLQAdIgBBgQFPBEAgAiACKAIQEJ8TRQ0BDAQLIAIgAi0AHCIBIAJBEGpqIAAgAWsQ/QgNAwsgAkEnEJ8TDQIgAkGkssgAQQIQ/QgNAgsgA0GIkMkAQQEgBhEAACEEDAELIAEoAgBB65HJAEEEIAEoAgQoAgwRAAAhBAsgAkEgaiQAIAQL7wIBBX8jAEEQayICJAAgAiAAKAIAIgNBAkY2AgwgASACQQxqIgRBBBCWCAJAIANBAkYEQCAAKAIIIQMgAiAAKAIMIgA2AgwgASAEQQQQlgggAEUNASADIABBFGxqIQUDQCACIAMoAgAiBjYCDCABIAJBDGoiAEEEEJYIIANBBGooAgAhBAJAIAZBAUYEQCADQQhqKAIAIQYgAiAENgIMIAEgAEEEEJYIIAIgBjYCDCABIABBBBCWCCACIANBDGooAgA2AgwgASAAQQQQlggMAQsgAiAENgIMIAEgAkEMakEEEJYICyAFIANBFGoiA0cNAAsMAQsgAiADNgIMIAEgAkEMaiIEQQQQlgggACgCBCEFIANBAUYEQCAAKAIIIQMgAiAFNgIMIAEgBEEEEJYIIAIgAzYCDCABIARBBBCWCCACIAAoAgw2AgwgASAEQQQQlggMAQsgAiAFNgIMIAEgAkEMakEEEJYICyACQRBqJAALpQMCA38IfiMAQYACayIDJAAgAigCACIEKAIAIQUgBCAFQQFqNgIAIAVBAE4EQCACKAIEIQUgAyACKAIINgIUIAMgBTYCECADIAQ2AgwgA0EANgIIIANB4ABqIAEgA0EIakEAELYCAkACQCADLQBgIgFB/wFGBEAgAyADKQOgASIGNwBYIAMgAykDmAEiBzcAUCADIAMpA5ABIgg3AEggAyADKQOIASIJNwBAIAMgAykDgAEiCjcAOCADIAMpA3giCzcAMCADIAMpA3AiDDcAKCADIAMpA2giDTcAICAAIAY3AEAgACAHNwA4IAAgCDcAMCAAIAk3ACggACAKNwAgIAAgCzcAGCAAIAw3ABAgACANNwAIIABB/wE6AAAgBCAEKAIAIgBBAWs2AgAgAEEBRg0BDAILIANBGWoiAiADQeAAakEBckHHAPwKAAAgAyABOgCwASADKQOoASEGIANBsAFqIgFBAXIgAkHHAPwKAAAgAyAGNwP4ASAAIAEQhgYgBCAEKAIAIgBBAWs2AgAgAEEBRw0BCyAEEDALIANBgAJqJAAPCwAL9AICBX8BfiMAQTBrIgUkAEEUIQIgAUKQzgBaBEADQCAFQQhqIAJqIgNBBGsgASIHIAFCkM4AgCIBQpDOAH59pyIEQf//A3FB5ABuIgZBAXQvAJyYSTsAACADQQJrIAQgBkHkAGxrQf//A3FBAXQvAJyYSTsAACACQQRrIQIgB0L/wdcvVg0ACwsCQCABQuMAWARAIAGnIQMMAQsgAaciBEH//wNxQeQAbiEDIAJBAmsiAiAFQQhqaiAEIANB5ABsa0H//wNxQQF0LwCcmEk7AAALAkAgA0EKTwRAIAJBAmsiAiAFQQhqaiADQQF0LwCcmEk7AAAMAQsgAkEBayICIAVBCGpqIANBMHI6AAALAkACQEEUIAJrIgQgACgCACAAKAIIIgNrSwRAIAAgAyAEQQFBARCzESAAKAIIIQMMAQsgAkEURg0BCyAERQ0AIAAoAgQgA2ogBUEIaiACaiAE/AoAAAsgACADIARqNgIIIAVBMGokAAvrAgEFfwJAAkACQAJAAkACQAJAIAcgCFYEQCAHIAh9IAhYDQQgBiAHIAZ9VARAIAcgBkIBhn0gCEIBhloNBAsgBiAIWA0HIAYgCH0iBiAHIAZ9VA0HIAIgA0kNBSABIANqIQsgAyEJA0AgCSIKRQ0CIApBAWsiCSABaiIMLQAAIg1BOUYNAAsgDCANQQFqOgAAIAMgCmsiBUUNAiABIApqQTAgBfwLAAwCCyAAQQA2AgAPCwJAIANFBEBBMSEJDAELIAFBMToAAEEwIQkgA0EBayIKRQ0AIAFBAWpBMCAK/AsACyAEQQFqwSIEIAXBTA0AIAIgA00NACALIAk6AAAgA0EBaiEDCyACIANPDQNBACADIAJB2JLEABCHDgALIAIgA08NAkEAIAMgAkH4ksQAEIcOAAsgAEEANgIADwtBACADIAJB6JLEABCHDgALIAAgBDsBCCAAIAM2AgQgACABNgIADwsgAEEANgIAC80CAQV/AkACQCAAKAIIIgUEQCAAKAIEQQRqIQADQAJAAkACQAJAAkAgAEEEaygCAA4CAQIACyAAKAIAIgNFDQMgAEEEaigCACIEQQRrKAIAIgFBeHEhAiACQQRBCCABQQNxIgEbIANqSQ0HIAFFDQIgAiADQSdqTQ0CDAYLIAAoAgAiA0UNAiAAQQRqKAIAIgRBBGsoAgAiAUF4cSECIAJBBEEIIAFBA3EiARsgA2pJDQYgAUUNASACIANBJ2pNDQEMBQsgABDZDCAAKAIAIgJFDQEgAEEEaigCACIEQQRrKAIAIgFBeHEhAyADIAJBBHQiAkEEQQggAUEDcSIBG3JJDQUgAUUNACADIAJBJ2pLDQQLIAQQvAULIABBEGohACAFQQFrIgUNAAsLDwtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALhgMBBH8gACgCAARAIAAQwg0LAkACQAJAAkACQCAAKAIQIgRFDQAgACgCHCIDIAAoAhQiAWtB6AFuIQIgASADRwRAA0AgARCBBSABQcgBahCHBCABQegBaiEBIAJBAWsiAg0ACwsgACgCGCICRQ0AIARBBGsoAgAiA0F4cSEBIAEgAkHoAWwiAkEEQQggA0EDcSIDG2pJDQEgA0EARyABIAJBJ2pLcQ0CIAQQvAULAkAgACgCICIERQ0AIAAoAiwiAyAAKAIkIgFrQegBbiECIAEgA0cEQANAIAEQgQUgAUHIAWoQhwQgAUHoAWohASACQQFrIgINAAsLIAAoAigiAUUNACAEQQRrKAIAIgJBeHEhACAAIAFB6AFsIgFBBEEIIAJBA3EiAhtqSQ0DIAJBAEcgACABQSdqS3ENBCAEELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAv2AgEEfyMAQSBrIgUkAAJAAkACQAJAIAJBA24iA0ECdCIEQQRqIAQgAiADQQNsaxsiA0EATgRAIAMCfyADRQRAQQEhBCABIAJBAUEAEIgDDAELIAMQkAEiBEUNAgJAIARBBGstAABBA3FFDQAgA0UNACAEQQAgA/wLAAsgASACIAQgAxCIAwsiAkkNAgJAQQAgAmtBA3EiBkUNACADIAJrIQEgAiADRg0EIAIgBGoiAkE9OgAAIAZBAUYNACABQQFGDQQgAkE9OgABIAZBAkYNACABQQJGDQQgAkE9OgACCyAFQQxqIAQgAxCXCCAFKAIMQQFGDQQgACADNgIIIAAgBDYCBCAAIAM2AgAgBUEgaiQADwsQnhUAC0EBEKcUAAsgAiADIANBmJ/FABCHDgALIAEgAUGIn8UAEIUTAAsgBSAFKQIQNwIYIAUgAzYCFCAFIAQ2AhAgBSADNgIMQbifxQBBDCAFQQxqQaifxQBBxJ/FABDaEgAL7wIBCH8CQCABKAIEIgJFBEAMAQsgASgCECEGIAEgAiABKAIIIgQgAiACIARLGyIHazYCBCABIAcgASgCACIIajYCAAJ/AkACQAJAAkACQAJAAkAgBARAIAEoAgwiCUEBdCEEIAgtAAAiAkHBAGtB/wFxQQZJDQEgAkHhAGtB/wFxQQZPBEAgBCEFIAJBMGsiA0H/AXFBCkkNAwwECyACQdcAayEDDAILQQBBAEGMo8UAEIUTAAsgAkE3ayEDCyAHQQFGDQMgCC0AASICQcEAa0H/AXFBBkkNASACQeEAa0H/AXFBBkkNAiACQTBrIgVB/wFxQQpJDQQgBEEBciEFCyAGIAJB/wFxNgIAIAYgBUH/AXEgBEGAfnFyNgIEQQAMBAsgAkE3ayEFDAILIAJB1wBrIQUMAQtBAUEBQZyjxQAQhRMACyAFIANBBHRyIQJBAQshAyABIAlBAWo2AgwLIAAgAjoAASAAIANBAXE6AAALuQMBBX8jAEEwayICJAACQCAAKAIABEBBASEDIAEoAgAiBEHnkckAQQQgASgCBCIGKAIMIgURAAANAQJAIAEtAApBgAFxRQRAIARBtM/FAEEBIAURAAANAyACIAAoAgAiAEEQajYCHCABQYP3xQBBBUGI8sUAQQMgAEHnAUGQxMYAQQUgAEEcakHoAUHu98UAQQggAEEoakHoAUH298UAQREgAkEcakHpARC7EA0DIAEoAgAhBCABKAIEKAIMIQUMAQsgBEGd48IAQQIgBREAAA0CIAJBAToAGyACIAY2AhAgAiAENgIMIAJBoOvCADYCICACIAEpAgg3AiQgACgCACEAIAIgAkEbajYCFCACIAJBDGo2AhwgAiAAQRBqNgIsIAJBHGpBg/fFAEEFQYjyxQBBAyAAQecBQZDExgBBBSAAQRxqQegBQe73xQBBCCAAQShqQegBQfb3xQBBESACQSxqQekBELsQDQIgAigCHEGkssgAQQIgAigCICgCDBEAAA0CCyAEQYiQyQBBASAFEQAAIQMMAQsgASgCAEHrkckAQQQgASgCBCgCDBEAACEDCyACQTBqJAAgAwubAwIGfwF+IwBBIGsiAiQAAkAgASgCACIEQQFBACABKAIEIgYoAgwiBREAAARAQQEhAwwBCwJAIAEoAggiB0GAgIAEcUUEQEEBIQMgBEG0z8UAQQEgBREAAA0CIAAoAgAgARCPBkUNAQwCCyAEQZ3jwgBBAiAFEQAABEBBASEDDAILQQEhAyACQQE6AA8gAiAGNgIEIAIgBDYCACACQaDrwgA2AhQgAiABKQIIIgg3AhggAiACQQ9qNgIIIAIgAjYCECAAKAIAIAJBEGoQjwYNASACQaSyyABBAhD9CA0BIAinIQcLIABBBGohAAJAIAdBgICABHFFBEAgBEGIs8kAQQIgBREAAARADAMLIAAgARD0CkUNAQwCCyACQQE6AA8gAiAGNgIEIAIgBDYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEPQKDQEgAigCEEGkssgAQQIgAigCFCgCDBEAAA0BCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMLIAJBIGokACADC4QDAQR/IAAoAgwhAgJAAkACQCABQYACTwRAIAAoAhghAwJAAkAgACACRgRAIABBFEEQIAAoAhQiAhtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIABBFGogAEEQaiACGyEEA0AgBCEFIAEiAigCFCEBIAJBFGogAkEQaiABGyEEIAJBFEEQIAEbaigCACIBDQALIAVBADYCAAsgA0UNAgJAIAAoAhxBAnRB9OzJAGoiASgCACAARwRAIAMoAhAgAEYNASADIAI2AhQgAg0DDAQLIAEgAjYCACACRQ0EDAILIAMgAjYCECACDQEMAgsgAiAAKAIIIgBHBEAgACACNgIMIAIgADYCCA8LQYzwyQBBjPDJACgCAEF+IAFBA3Z3cTYCAA8LIAIgAzYCGCAAKAIQIgEEQCACIAE2AhAgASACNgIYCyAAKAIUIgBFDQAgAiAANgIUIAAgAjYCGA8LDwtBkPDJAEGQ8MkAKAIAQX4gACgCHHdxNgIAC9sCAQN/IwBBEGsiAyQAAn8CQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BQQMhAiAALQAAIgAhBCAAQQpPBEAgAyAAIABB5ABuIgRB5ABsa0H/AXFBAXQvAJyYSTsADEEBIQILIARFIABBAEdxRQRAIAJBAWsiAiADQQtqaiAEQQF0LQCdmEk6AAALIAFBAUEBQQAgA0ELaiACakEDIAJrEMkJDAILIAAtAAAhAkEDIQADQCAAIANqQQdqIAJBD3FB5LbJAGotAAA6AAAgAEEBayEAIAJBBHZBD3EiAg0ACyABQQFBopbEAEECIAAgA2pBCGpBAyAAaxDJCQwBCyAALQAAIQJBAyEAA0AgACADakEMaiACQQ9xQaSWxABqLQAAOgAAIABBAWshACACQQR2QQ9xIgINAAsgAUEBQaKWxABBAiAAIANqQQ1qQQMgAGsQyQkLIANBEGokAAu1AgEHfwJAAkACQCAAKAIAIgRBf0YNACAEBEAgACgCBCIBQQRrKAIAIgNBeHEhAiACQQRBCCADQQNxIgMbIARqSQ0CIANBAEcgAiAEQSdqS3ENAyABELwFCyAAKAIQIQMgACgCFCIFBEAgAyEBA0AgASgCACIGBEAgAUEEaigCACIEQQRrKAIAIgJBeHEhByAHQQRBCCACQQNxIgIbIAZqSQ0EIAJBAEcgByAGQSdqS3ENBSAEELwFCyABQQxqIQEgBUEBayIFDQALCyAAKAIMIgFFDQAgA0EEaygCACIAQXhxIQIgAiABQQxsIgFBBEEIIABBA3EiABtqSQ0BIABBAEcgAiABQSdqS3ENAiADELwFCw8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC6ADAQN/IwBBMGsiBCQAIAIoAgAgAigCBCADEOQOIQUgAygCACADKAIEIAIQ5A4hBiAEIAVB/wFxIAIgARD2CQJAAkACQAJAIAQoAgBBfkYEQEEEEJABIgJFDQEgAkGg+PiBAjYAACAEQQQ2AgggBCACNgIEIARBBDYCACABIAQQ/A0gBCAGQf8BcSADIAEQ9gkgBCgCAEF+RwRAIAAgBCkCKDcCKCAAIAQpAiA3AiAgACAEKQIYNwIYIAAgBCkCEDcCECAAIAQpAgg3AgggACAEKQIANwIADAULIABBfjYCAAwECyAAIAQpAig3AiggACAEKQIgNwIgIAAgBCkCGDcCGCAAIAQpAhA3AhAgACAEKQIINwIIIAAgBCkCADcCACADEK0BIAMoAlAiAEEATA0DIAMoAlQiAkEEaygCACIDQXhxIQEgAUEEQQggA0EDcSIDGyAAakkNASADQQBHIAEgAEEnaktxDQIgAhC8BQwDC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIARBMGokAAviAgEEfyMAQTBrIgUkACADQQhPBEAgACADQQN2IgNBCHQiBiAAaiADQcADbCIHIABqIAMgBBDjDCEAIAEgASAGaiABIAdqIAMgBBDjDCEBIAIgAiAGaiACIAdqIAMgBBDjDCECCyAFQShqIAQoAgAiAygCACAAENoHIAUoAiwhBiAFKAIoIAVBIGogAygCACABENoHIAUoAiAhA0EBRgRAIAMgBiAFKAIkSXEhAwsgBUEYaiAEKAIAIgYoAgAgABDaByAFKAIcIQcgBSgCGCAFQRBqIAYoAgAgAhDaByAFKAIQIQZBAUYEfyAGIAcgBSgCFElxBSAGCyADc0EBcUUEQCAFQQhqIAQoAgAiACgCACABENoHIAUoAgwhBCAFKAIIIQYgBSAAKAIAIAIQ2gcgBSgCACEAIAIgASAGQQFGBH8gACAEIAUoAgRJcQUgAAsgA3NBAXEbIQALIAVBMGokACAAC54DAQZ/IwBBMGsiAiQAAkACQAJAIAAoAgAiB0F+RwRAQQEhAyABKAIAIgRB55HJAEEEIAEoAgQiBigCDCIFEQAADQMgAS0ACkGAAXFFBEAgBEG0z8UAQQEgBREAAA0EIAdBf0cEQCACIAA2AhwgAUGn8MUAQQggAkEcakH0ARCDEA0FIAEoAgAhBCABKAIEKAIMIQUMBAsgBEHgkMkAQQcgBREAAEUNAwwECyAEQZ3jwgBBAiAFEQAADQMgAkEBOgAbIAIgBjYCECACIAQ2AgxBoOvCACEGIAJBoOvCADYCICACIAEpAgg3AiQgAiACQRtqNgIUIAIgAkEMajYCHAJAIAdBf0cEQCACIAA2AiwgAkEcakGn8MUAQQggAkEsakH0ARCDEA0BIAIoAiAhBiACKAIcIQEMAwsgAkEMaiIAIQEgAEHgkMkAQQcQ/QhFDQILDAMLIAEoAgBB65HJAEEEIAEoAgQoAgwRAAAhAwwCCyABQaSyyABBAiAGKAIMEQAADQELIARBiJDJAEEBIAURAAAhAwsgAkEwaiQAIAMLywMBBX8jAEEgayICJAACQAJAAkACQAJAAkACQAJAIAAoAgAiBCgCAEEBaw4GAQIDBAUGAAsgASgCAEHbkMkAQQUgASgCBCgCDBEAACEADAYLIAEoAgBB+pnJAEEGIAEoAgQoAgwRAAAhAAwFCyABKAIAQdWQyQBBBiABKAIEKAIMEQAAIQAMBAsgASgCAEH/9cUAQQYgASgCBCgCDBEAACEADAMLIAEoAgBB5JnJAEEHIAEoAgQoAgwRAAAhAAwCCyABKAIAQYCayQBBBCABKAIEKAIMEQAAIQAMAQtBASEAIAEoAgAiA0GF9sUAQQkgASgCBCIGKAIMIgURAAANACAEQQRqIQQCQCABLQAKQYABcUUEQCADQbTPxQBBASAFEQAADQIgBCABELoQDQIgASgCACEDIAEoAgQoAgwhBQwBCyADQZ3jwgBBAiAFEQAADQEgAkEBOgAPIAIgBjYCBCACIAM2AgAgAkGg68IANgIUIAIgASkCCDcCGCACIAJBD2o2AgggAiACNgIQIAQgAkEQahC6EA0BIAIoAhBBpLLIAEECIAIoAhQoAgwRAAANAQsgA0GIkMkAQQEgBREAACEACyACQSBqJAAgAAuVAwIGfwF+IwBBIGsiAiQAAkAgASgCACIEQQFBACABKAIEIgYoAgwiBREAAARAQQEhAwwBCwJAIAEoAggiB0GAgIAEcUUEQEEBIQMgBEG0z8UAQQEgBREAAA0CIAAgARCPBkUNAQwCCyAEQZ3jwgBBAiAFEQAABEBBASEDDAILQQEhAyACQQE6AA8gAiAGNgIEIAIgBDYCACACQaDrwgA2AhQgAiABKQIIIgg3AhggAiACQQ9qNgIIIAIgAjYCECAAIAJBEGoQjwYNASACQaSyyABBAhD9CA0BIAinIQcLIABBFGohAAJAIAdBgICABHFFBEAgBEGIs8kAQQIgBREAAARADAMLIAAgARD+CkUNAQwCCyACQQE6AA8gAiAGNgIEIAIgBDYCACACQaDrwgA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgACACQRBqEP4KDQEgAigCEEGkssgAQQIgAigCFCgCDBEAAA0BCyABKAIAQYiQyQBBASABKAIEKAIMEQAAIQMLIAJBIGokACADC/wCAQV/AkACQAJAIAIEQCABLQAAQTBNDQFBASEGIAVBATYCCCAFIAE2AgRBAiEHIAVBAjsBACACQQFrIgJFBEAgBEUNBEEUIQFBx+3CACEIQRAhCUEMIQoMAwsgBUEBNgIUIAVBx+3CADYCECAFQQI7AQwgAUEBaiEIQQMhB0EgIQFBHCEJQRghCiACIQYMAgtB1fvCAEEhQbj8wgAQrxQAC0GI/MIAQR9ByPzCABCvFAALIAUgCmpBAjsBACAFIAlqIAg2AgAgASAFaiAGNgIAIAIgBE8EQCAHIQYMAQsgBSAHQQxsaiIBIAQgAms2AgQgAUEAOwEAIAdBAWohBgsgBSAGQQxsaiICAn8gA8FBAEoEQCAFIAZBDGxqIgFBATYCCCABQdj8wgA2AgQgAUECOwEAIANBAWsMAQsgBSAGQQxsaiIBQQI2AgggAUHZ/MIANgIEIAFBAjsBAEEBIANrCzsBDiACQQE7AQwgACAGQQJqNgIEIAAgBTYCAAuqAwIDfgJ/IAGtAn4gAUERTwRAIAFBEGshBUEAIQFCxObBm+DF4owTIQJC05GMrYjR2p8kIQMDQCACIAAgAWoiBkEIaikAAELQ4/zMooTOhKR/hSECIAYpAAAgA4UiA0L/////D4MgAkIgiH4gAkL/////D4MgA0IgiH5CIImFIQIhAyABQRBqIgEgBUkNAAsgACAFaiIAKQAIIAKFIQIgACkAACADhQwBCyABQQdNBEACQCABQQNNBEAgAQ0BQsTmwZvgxeKMEyECQtORjK2I0dqfJAwDCyAAIAFqQQRrNQAAQsTmwZvgxeKME4UhAiAANQAAQtORjK2I0dqfJIUMAgsgACABQQF2ajEAACAAIAFqQQFrMQAAQgiGhELE5sGb4MXijBOFIQIgADEAAELTkYytiNHanySFDAELIAAgAWpBCGspAABCxObBm+DF4owThSECIAApAABC05GMrYjR2p8khQsiA0L/////D4MgAkIgiH6FIAJC/////w+DIANCIIh+QiCJhSIEQiCIpyAEp0Hdy92eeWxqQcnB+P0AbEGj7rmcBGpBD3etC+0CAgt/AX4jAEGgAWsiBiQAAkACQCABKAIIIgdB1qrVCkkEQAJAIAdB4ABsIglFBEBBCCEKDAELIAEoAgQhCyAJEJABIgpFDQIgB0UNAEEAIQEgCyECIAchDANAIAEgCUcEQCAGQdAAaiACELMCQX4hCCACKAJQIgVBfkcEQEF/IQggASALaiIDQdgAaigCACEEIANB1ABqKAIAIQMCQCAFQX9GBEAgAyEFDAELIARFBEBBASEFQQAhCAwBCyAEEJABIgVFDQcgBARAIAUgAyAE/AoAAAsgBCEICyAFrSAErUIghoQhDQsgAkHgAGohAiAGIAZB0ABqQdAA/AoAACABIApqIgMgBkHQAPwKAAAgA0HUAGogDTcCACADQdAAaiAINgIAIAFB4ABqIQEgDEEBayIMDQELCyAHIQILIAAgBzYCCCAAIAo2AgQgACACNgIAIAZBoAFqJAAPCxCeFQALQQgQpxQAC0EBEKcUAAvtAgILfwF+IwBBoAFrIgYkAAJAAkAgASgCCCIHQdaq1QpJBEACQCAHQeAAbCIJRQRAQQghCgwBCyABKAIEIQsgCRCQASIKRQ0CIAdFDQBBACEBIAshAiAHIQwDQCABIAlHBEAgBkHQAGogAhDeAUF+IQggAigCUCIFQX5HBEBBfyEIIAEgC2oiA0HYAGooAgAhBCADQdQAaigCACEDAkAgBUF/RgRAIAMhBQwBCyAERQRAQQEhBUEAIQgMAQsgBBCQASIFRQ0HIAQEQCAFIAMgBPwKAAALIAQhCAsgBa0gBK1CIIaEIQ0LIAJB4ABqIQIgBiAGQdAAakHQAPwKAAAgASAKaiIDIAZB0AD8CgAAIANB1ABqIA03AgAgA0HQAGogCDYCACABQeAAaiEBIAxBAWsiDA0BCwsgByECCyAAIAc2AgggACAKNgIEIAAgAjYCACAGQaABaiQADwsQnhUAC0EIEKcUAAtBARCnFAALogMBAn9BCCECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEVIAEoAgAiA0GAgICAeHMgA0EAThtBAWsOFQECAwQFBgcICQoLDA0ODxQUEBESEwALIAAgAS0ABDoAASAAQQA6AAAPCyAAIAExAAQ3AwgMEwsgACABMwEENwMIDBILIAAgATUCBDcDCAwRCyAAIAEpAwg3AwgMEAsgACABMAAENwMIDBALIAAgATIBBDcDCAwPCyAAIAE0AgQ3AwgMDgsgACABKQMINwMIDA0LIAAgASoCBLs5AwggAEEDOgAADwsgACABKwMIOQMIIABBAzoAAA8LIAAgASgCBDYCBCAAQQQ6AAAPCyAAIAEpAwg3AgQgAEEFOgAADwsgACABKQIENwIEIABBBToAAA8LIAAgASkDCDcCBCAAQQY6AAAPCyAAIAEpAgQ3AgQgAEEGOgAADwsgAEEHOgAADwsgAEEJOgAADwsgAEEKOgAADwtBCyECCyAAIAI6AAAPCyAAQQE6AAAPCyAAQQI6AAALowMBBn8jAEEgayIEJAAgBEEUaiACEPEKIAQgBCgCHDYAECAEIAQpAhQ3AAhBASEHIAIoAgQhBQJAAkACQAJAAkAgAigCAEEBRgRAIAIoAhAiBigCACEDIAYgA0EBajYCACADQQBIDQMgAigCCCEIDAELIAIoAhAiBigCECIDIAVNDQEgBigCDCAFQeQAbGoiBSgCWCEIIAUoAlQhBSAGIAYoAgAiA0EBajYCAEEAIQcgA0EASA0CC0EYEJABIgNFDQIgAyABNgIUIAMgAigCEDYCECADIAIpAgg3AgggAyACKQIANwIAQRgQkAEiAUUNAyABQQA6ABQgAUGU6McANgIMIAEgAzYCCCABQoGAgIAQNwIAIABBCToAPCAAQX82AiwgACAINgIoIAAgBTYCJCAAIAY2AiAgACAHNgIcIABBfzYCECAAQQA2AgggAEEANgIAIAAgBCkABTcAPSAAIAQpAAw3AEQgACABNgJgIABBADoAXCAEQSBqJAAPCyAFIANB5PbIABCFEwsAC0G48MkAQQE6AAAAC0G48MkAQQE6AAAAC+0CAgt/AX4jAEGgAWsiBiQAAkACQCABKAIIIgdB1qrVCkkEQAJAIAdB4ABsIglFBEBBCCEKDAELIAEoAgQhCyAJEJABIgpFDQIgB0UNAEEAIQEgCyECIAchDANAIAEgCUcEQCAGQdAAaiACEIYCQX4hCCACKAJQIgVBfkcEQEF/IQggASALaiIDQdgAaigCACEEIANB1ABqKAIAIQMCQCAFQX9GBEAgAyEFDAELIARFBEBBASEFQQAhCAwBCyAEEJABIgVFDQcgBARAIAUgAyAE/AoAAAsgBCEICyAFrSAErUIghoQhDQsgAkHgAGohAiAGIAZB0ABqQdAA/AoAACABIApqIgMgBkHQAPwKAAAgA0HUAGogDTcCACADQdAAaiAINgIAIAFB4ABqIQEgDEEBayIMDQELCyAHIQILIAAgBzYCCCAAIAo2AgQgACACNgIAIAZBoAFqJAAPCxCeFQALQQgQpxQAC0EBEKcUAAu5AgEHfwJAAkACQAJAIAAoAgAiAkF+RgRAIAAoAgghAyAAKAIMIgQEQCADIQEDQCABKAIAIgVBAEoEQCABQQRqKAIAIgdBBGsoAgAiAkF4cSEGIAZBBEEIIAJBA3EiAhsgBWpJDQcgAkEARyAGIAVBJ2pLcQ0GIAcQvAULIAFBEGohASAEQQFrIgQNAAsLIAAoAgQiAUUNAiADQQRrKAIAIgBBeHEhAiACIAFBBHQiAUEEQQggAEEDcSIAG3JJDQQgAEUNASACIAFBJ2pNDQEMAwsgAkEATA0BIAAoAgQiA0EEaygCACIAQXhxIQEgAUEEQQggAEEDcSIAGyACakkNAyAARQ0AIAEgAkEnaksNAgsgAxC8BQsPC0GQnckAQS5BwJ3JABCvFAALQdCcyQBBLkGAnckAEK8UAAujAwEBfyACIAMQuRQhAgJAIAEoAghFDQAgASgCDCIDQYQBSQ0AIAMQ0xILIAFBADYCCCABIAI2AgwgBCAFELkUIQMCQAJAIAEoAgBBAUYEQCACEOAVRQ0BIAEoAgQgAiADEKUUQQAhAQwCCyABKAIEIAIgAxCeFCIBQYQBTwRAIAEQ0xILIANBhAFPBEAgAxDTEgtBACEBIAJBhAFJDQEgAhDTEgwBCwJAAkBBMxCQASIBBEAgAUGbnsIAKAAANgAvIAFBlJ7CACkAADcAKCABQYyewgApAAA3ACAgAUGEnsIAKQAANwAYIAFB/J3CACkAADcAECABQfSdwgApAAA3AAggAUHsncIAKQAANwAAIAFBMxC4FCEFIAFBBGsoAgAiBkF4cSEEIARBN0E7IAZBA3EiBhtJDQEgBkEARyAEQdsAT3ENAiABELwFIAJBhAFPBEAgAhDTEgtBASEBIANBhAFJDQMgAxDTEgwDC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAAgBTYCBCAAIAE2AgALpgMBA39BoKzJAEEEELkUIQQCQCABKAIIRQ0AIAEoAgwiBUGEAUkNACAFENMSCyABQQA2AgggASAENgIMIAIgAxC5FCEDAkACQCABKAIAQQFGBEAgBBDgFUUNASABKAIEIAQgAxClFEEAIQEMAgsgASgCBCAEIAMQnhQiAUGEAU8EQCABENMSCyADQYQBTwRAIAMQ0xILQQAhASAEQYQBSQ0BIAQQ0xIMAQsCQAJAQTMQkAEiAQRAIAFBm57CACgAADYALyABQZSewgApAAA3ACggAUGMnsIAKQAANwAgIAFBhJ7CACkAADcAGCABQfydwgApAAA3ABAgAUH0ncIAKQAANwAIIAFB7J3CACkAADcAACABQTMQuBQhAiABQQRrKAIAIgZBeHEhBSAFQTdBOyAGQQNxIgYbSQ0BIAZBAEcgBUHbAE9xDQIgARC8BSAEQYQBTwRAIAQQ0xILQQEhASADQYQBSQ0DIAMQ0xIMAwtBARCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyAAIAI2AgQgACABNgIAC+kCAQZ/AkAgAkUEQAwBCyABIAJqIQggASEEA0ACfyAEIgUsAAAiA0EATgRAIANB/wFxIQMgBUEBagwBCyAFLQABQT9xIQQgA0EfcSEHIANBX00EQCAHQQZ0IARyIQMgBUECagwBCyAFLQACQT9xIARBBnRyIQQgA0FwSQRAIAQgB0EMdHIhAyAFQQNqDAELIAdBEnRBgIDwAHEgBS0AA0E/cSAEQQZ0cnIhAyAFQQRqCyEEAkAgA0EJa0EFSQ0AIANBIEYNACADQYUBSQ0CAkACQAJAAkAgA0EIdiIHQRZrDhsBBgYGBgYGBgYGAwYGBgYGBgYGBgYGBgYGBgIACyAHDQUgA0H/AXEtAPKlSUEBcQ0DDAULIANBgC1GDQIMBAsgA0GA4ABGDQEMAwsgA0H/AXEtAPKlSUECcUUNAgsgBiAFayAEaiEGIAQgCEcNAAsgAiEGCyAAIAIgBms2AgQgACABIAZqNgIAC5QDAQJ/IwBBIGsiByQAAkAgACgCACIIIAEgAiAAKAIEKAIMIgERAAAEQEEBIQIMAQsCQCAALQAKQYABcUUEQEEBIQIgCEG0z8UAQQEgAREAAA0CIAMgACAEEQEARQ0BDAILIAhBnePCAEECIAERAAAEQEEBIQIMAgtBASECIAdBAToADyAHQaDrwgA2AhQgByAAKQIANwIAIAcgACkCCDcCGCAHIAdBD2o2AgggByAHNgIQIAMgB0EQaiAEEQEADQEgBygCEEGkssgAQQIgBygCFCgCDBEAAA0BCwJAIAAtAApBgAFxRQRAIAAoAgBBiLPJAEECIAAoAgQoAgwRAAAEQAwDCyAFIAAgBhEBAEUNAQwCCyAHQQE6AA8gB0Gg68IANgIUIAcgACkCADcCACAHIAApAgg3AhggByAHQQ9qNgIIIAcgBzYCECAFIAdBEGogBhEBAA0BIAcoAhBBpLLIAEECIAcoAhQoAgwRAAANAQsgACgCAEGIkMkAQQEgACgCBCgCDBEAACECCyAHQSBqJAAgAgueAwIEfwF+IwBBEGsiBCQAAkACQAJAAkACQAJAQQMgASkDACIGp0ECayAGQgFYG0EBaw4DAgADAQsgBEEIaiABKAKwASABKAK0ARDhCSAEKAIMIgMgBCgCCCIBKAIcIgJJBEAgASgCGCADQfAAbGoiAygCXCECIAMoAlghAyABIAEoAgAiBUEBajYCACAFQQBIDQUgACACNgIIIAAgAzYCBCAAIAE2AgAgASABKAIAIgBBAWs2AgAgAEEBRw0EIAEQMAwECyADIAJB5P7IABCFEwwECyABKAJYIgMoAgAhAiADIAJBAWo2AgAgAkEASA0DIAEoAlwhAiAAIAEoAmA2AgggACACNgIEIAAgAzYCAAwCCyABKALsASIDKAIAIQIgAyACQQFqNgIAIAJBAEgNAiABKALwASECIAAgASgC9AE2AgggACACNgIEIAAgAzYCAAwBCyABKAK0AiIDKAIAIQIgAyACQQFqNgIAIAJBAEgNASABKAK4AiECIAAgASgCvAI2AgggACACNgIEIAAgAzYCAAsgBEEQaiQADwsAC7cDAQF/AkACQAJAAkACQAJAAkAgASgCAA4EAgAAAQALQcABEJABIgNFDQIgA0EKNgJgIANBfjYCUCADQQo2AgAgA0F+NgKwASAAQQI2AgwgACADNgIIIABCgICAgCA3AgAgAyABKQIINwIMIAMgASkCADcCBCADIAIpAgA3AmQgAyACKQIINwJsDwsgASgCBCEDQcABEJABIgFFDQIgASADQeAA/AoAACABQQo2AmAgAUF+NgKwASABIAIpAgg3AmwgASACKQIANwJkIABBAjYCDCAAIAE2AgggAEKAgICAIDcCACADQQRrKAIAIgBBA3EhASAAQXhxQeQAQegAIAEbSQ0DIAFBAEcgAEGIAU9xDQQgAxC8BQ8LIAEoAgwiAyABKAIERgRAIAFBBGoQpRILIAEgA0EBajYCDCAAIAEpAgA3AgAgASgCCCADQeAAbGoiA0EKNgIAIAMgAikCADcCBCADIAIpAgg3AgwgA0F+NgJQIAAgASkCCDcCCA8LQbjwyQBBAToAAAALQbjwyQBBAToAAAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC7ADAQV/IwBBMGsiAiQAAkAgACgCAEF/RwRAQQEhAyABKAIAIgRB55HJAEEEIAEoAgQiBigCDCIFEQAADQECQCABLQAKQYABcUUEQCAEQbTPxQBBASAFEQAADQMgAiAAQRBqNgIcIAFBg/fFAEEFQYjyxQBBAyAAQecBQZDExgBBBSAAQRxqQegBQe73xQBBCCAAQShqQegBQfb3xQBBESACQRxqQekBELsQDQMgASgCACEEIAEoAgQoAgwhBQwBCyAEQZ3jwgBBAiAFEQAADQIgAkEBOgAbIAIgBjYCECACIAQ2AgwgAkGg68IANgIgIAIgASkCCDcCJCACIAJBG2o2AhQgAiACQQxqNgIcIAIgAEEQajYCLCACQRxqQYP3xQBBBUGI8sUAQQMgAEHnAUGQxMYAQQUgAEEcakHoAUHu98UAQQggAEEoakHoAUH298UAQREgAkEsakHpARC7EA0CIAIoAhxBpLLIAEECIAIoAiAoAgwRAAANAgsgBEGIkMkAQQEgBREAACEDDAELIAEoAgBB65HJAEEEIAEoAgQoAgwRAAAhAwsgAkEwaiQAIAMLuAMCA38CfiMAQYACayICJABBwPDJAAJ+QdDwyQAtAAAEQEHI8MkAKQMAIQZBwPDJACkDAAwBCyACQThqELsRQdDwyQBBAToAAEHI8MkAIAIpA0AiBjcDACACKQM4CyIFQgF8NwMAAkBBHBCQASIDBEAgA0F/NgIYIANCfzcDEEHIABCQASIERQ0BIAJBADYCMCACQoOAgIAwNwMoIAIgA0EQajYCJCACQQA2AiAgAiAENgIcIAJBATYCGCACIAY3AxAgAiAFNwMIIAJCgICAgBA3AzggAkFAayIDIAFByAD8CgAAIAJBwAFqIAJBCGogAyABQRBqEI8FIAIgAikD+AE3A7gBIAIgAikD8AE3A7ABIAIgAikD6AE3A6gBIAIgAikD4AE3A6ABIAIgAikD2AE3A5gBIAIgAikD0AE3A5ABIAIgAikDyAEiBTcDiAEgBadBf0cEQCACQYgBahDwBQsgACACKQMwNwMoIAAgAikDKDcDICAAIAIpAyA3AxggACACKQMYNwMQIAAgAikDEDcDCCAAIAIpAwg3AwAgAkGAAmokAA8LQbjwyQBBAToAAAALQQgQpxQAC9wCAQl/IAJFBEBBAQ8LA0ACQAJAAkAgB0EUbCIDIABqIgQoAgAiBUECRiABIANqIgMoAgAiBkECRnMNAAJAAkAgBUECRgRAIAQoAgwiBiADKAIMRw0DIAZFDQQgBCgCCCEJIAMoAgghCkEAIQhBACEEDAELIAUgBkcNAiAEKAIEIAMoAgRHIgYNASAFQQFxRQ0BIAQoAgggAygCCEcNAiAEKAIMIAMoAgxHDQIMAwsDQCAEIAlqIgUoAgAiCyAEIApqIgMoAgBHDQQCQCALRQRAIAVBBGooAgAgA0EEaigCAEcNBgwBCyAFQQRqKAIAIANBBGooAgBHDQUgBUEIaigCACADQQhqKAIARw0FIAVBDGooAgAgA0EMaigCAEcNBQsgBEEUaiEEIAZBAWsiBg0ACwwCCyAGDQAgBUEBcUUNAQtBACEIDAELQQEhCCAHQQFqIgcgAkcNAQsLIAgLlAMBBX8gAigCBCIDKAIAIQQgAyAEQQFqNgIAIAIoAgwhBiACKAIIIQcCQAJAIAIoAgBBAUYEQCAEQQBIDQJBASEEIAMgAygCACIFQQFqNgIAIAVBAEgNAiADIAMoAgAiBUEBajYCACAFQQBODQEMAgsgBEEASA0BIAMgAygCACIEQQFqNgIAIARBAEgNASADIAMoAgAiBUEBajYCAEEAIQQgBUEASA0BCwJAQRQQkAEiBQRAIAUgATYCECAFIAIpAgg3AgggBSACKQIANwIAQRgQkAEiAUUNASABQQA6ABQgAUHU5ccANgIMIAEgBTYCCCABQoGAgIAQNwIAIAAgATYCYCAAQQA6AFwgACAGNgJMIAAgBzYCSCAAIAM2AkQgACAENgJAIABBLjoAPCAAIAY2AjggACAHNgI0IAAgAzYCMCAAIAQ2AiwgACAGNgIoIAAgBzYCJCAAIAM2AiAgACAENgIcIABBfzYCECAAQQA2AgggAEEANgIADwtBuPDJAEEBOgAAAAtBuPDJAEEBOgAAAAsAC+gCAQJ/IAJBAk0EQCAAQQQ6AAAgAEH/AToACA8LIAEtAAJBIHIhAyABLQABQSByIQQCQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBIHJB5gBrDhIDCQkJCQkJAAkJCQkJBAEJCQIJCyAEQe8ARw0IIANB7gBHDQhBACEDDAkLIARB6ABrDg4EBwcHBwcHBwcHBwcHAwcLIARB5QBHDQYgA0HkAEcNBkECIQMMBwsgBEHyAEcNBSADQekARw0FQQQhAwwGCyAEQeEARg0CIARB9QBGDQMMBAsgA0HlAEcNA0EBIQMMBAsgA0H1AEcNAkEDIQMMAwsgA0H0AEcNAUEFIQMMAgsgA0HuAEcNAEEGIQMMAQsgAEEDOgAAIABB/wE6AAgPCwJAIAJBA0cEQCABLAADQb9/TA0BCyAAIAJBA2s2AgQgACABQQNqNgIAIAAgAzoACA8LIAEgAkEDIAJBhMfCABD9FAALggMCB38DfgJAAkACQAJAAkACQCAAKAIYIgQOAgUBAAsgACkDACAAKQMIIAEgAhDfCiEDIAMgACgCICIGcSEFIANBGXatQoGChIiQoMCAAX4hDCAAKAIcIQcgACgCFCEDA0AgBSAHaikAACILIAyFIgpCgYKEiJCgwIABfSAKQn+Fg0KAgYKEiJCgwIB/gyIKQgBSBEADQCAEIAcgCnqnQQN2IAVqIAZxQQJ0a0EEaygCACIATQ0EIAMgAEHYAGxqIglB0ABqKAIAIAJGBEAgASAJQcwAaigCACACEI8TRQ0HCyAKQgF9IAqDIgpCAFINAAsLIAsgC0IBhoNCgIGChIiQoMCAf4NCAFIEQEEADwUgCEEIaiIIIAVqIAZxIQUMAQsACwALIAIgACgCFCIDQdAAaigCAEYNAQwDCyAAIARB0K/JABCFEwALQQAhACABIANBzABqKAIAIAIQjxMNAQsgACAESQRAIAMgAEHYAGxqDwsgACAEQeSExwAQhRMAC0EAC6IDAgF/Bn4jAEGQAWsiAiQAIAJB0ABqIAEQ2gECQCACKAKAASIBQX9HBEAgACACKQKEATcCNCAAIAIoAowBNgI8IAIgAikDeCIDNwNIIAIgAikDcCIENwNAIAIgAikDaCIFNwM4IAIgAikDYCIGNwMwIAIgAikDWCIHNwMoIAIgAikDUCIINwMgIAAgAzcDKCAAIAQ3AyAgACAFNwMYIAAgBjcDECAAIAc3AwggACAINwMAIAAgATYCMAwBCyACIAIpA1AiAzcDACACIAIpA1g3AwggAiACKQNgNwMQIAIgAikDaDcDGAJAAkACQAJAQQ4gA6ciAUENayABQQxNG0EDaw4GAQAAAAACAAsgAiACKQMYNwNoIAIgAikDEDcDYCACIAIpAwg3A1ggAiACKQMANwNQIAIgAkHQAGoiAa1CgICAgMAjhDcDICAAQTBqQdjuwQAgAkEgahC4DCAAQQA6ADwgAEF/NgIQIAEQiAQMAwsgACACKQMINwMIIABCATcDAAwBCyAAQgA3AwALIABBfzYCMCACEIgECyACQZABaiQAC5UDAgV/AX4jAEGwAWsiBCQAAkACQAJAAkAgACgCAEUEQEENEJABIgVFDQEgBSABKQAFNwAFIAUgASkAADcAACAAKAIEIgFBAEoEQCAAKAIIIghBBGsoAgAiBkF4cSEHIAdBBEEIIAZBA3EiBhsgAWpJDQMgBkEARyAHIAFBJ2pLcQ0EIAgQvAULIABBDTYCDCAAIAU2AgggAEF/NgIEIARBgoCAgHhBgICAgHggAkEBcRs2AlggBCADrTcDUCAEQgA3A0ggBCAAKQMINwJAIARBDTYCPCAEQfgAaiAAQRBqIARBPGogBEHIAGoQ0gMgBCAEKQOoATcDMCAEIAQpA6ABNwMoIAQgBCkDmAE3AyAgBCAEKQOQASIJNwMYIAQgBCkDiAE3AxAgBCAEKQOAATcDCCAJp0F/RwRAIARBCGoQ/gkLQQAhAAwECyAEQQo2AnggBEH4AGpBAEEAEMcTIQAMAwtBARCnFAALQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQACyAEQbABaiQAIAAL7gIBBH8jAEEQayIDJAACQAJAAn8CfwJAAkACQCABIAAoAqwCIgJJBEAgACgCqAIgAUEobGoiAUEMaiECQQghBAJAAkACQAJAIAEoAghBAmsOAgEABwsgAigCAEEBaw4CBAIBCyACKAIADQQLQQAhAiADQQhqIQQgA0EMaiEFIAEoAhAMBQsMAgsgASACQfT+yAAQhRMACyAAQRhqIQQgAEEcaiECIAEoAhAhAUEBDAMLIAFBEGohAkEMIQQLIAMgAigCADYCDCABQQhqIARqKAIAIQIgA0EEaiEEIANBCGohBUEBCyEBIAQgAjYCACAFIAE2AgAgAygCDCIBIABBHGoiAigCACIFTw0CIABBGGoiBCgCACABQfAAbGotAEgiAA0BIAMoAgQhASADKAIICwRAIAIoAgAiBSABTQ0CIAQoAgAgAUHwAGxqLQBIIgANAQtBASEACyADQRBqJAAgAA8LIAEgBUHk/sgAEIUTAAuUAwEEfyMAQbACayICJAAgASgCACEDIAJB8ABqIAFBBGoiBRD8CCACQQA2AmwgAiADNgJoIAJBCGoiAyACQegAakHgAPwKAAAgAkEAOgDPASACIAEoAgA2AtgBIAIgAkHPAWo2AtQBIAIgAzYC0AEgAkHoAWoiASACQdABahCOBgJAAkAgAigC6AFBfUcEQEGgAhCQASIDRQ0CIAMgAUHIAPwKAAAgAkEBNgLkASACIAM2AuABIAJBBDYC3AFByAAhBEEBIQEDQCACQegAaiACQdABahCOBiACKAJoQX1GRQRAIAIoAtwBIAFGBEAgAkHcAWogAUEBQQhByAAQsxEgAigC4AEhAwsgAyAEaiACQegAakHIAPwKAAAgAiABQQFqIgE2AuQBIARByABqIQQMAQsLIAAgAigC5AE2AgggACACKQLcATcCAAwBCyAAQQA2AgggAEKAgICAgAE3AgALIAUoAgAiASgCACEAIAEgAEEBazYCACAAQQFGBEAgBSgCABAwCyACQbACaiQADwtBCBCnFAAL8wICB38BfiMAQSBrIgIkACAAKAIIIQUgAEEANgIIAkACQCAFBEAgACgCECEEIAAoAhQiCCAAKAIMIgNGDQEgAiADKQIANwIIIAIgAkEIaq1CgICAgNABhDcDGAJAIAEoAgAiBiABKAIEIgdBrsjBACACQRhqELEJDQAgA0EIaiEBIAJBEGqtQoCAgIDQAYQhCQNAIAEgCEYNAyACIAEpAgA3AhAgACgCBCIDBEAgBiAAKAIAIAMgBygCDBEAAA0CCyACIAk3AxggAUEIaiEBIAYgB0GuyMEAIAJBGGoQsQlFDQALC0EBIQEMAgtBnLzEAEEiQcC8xAAQ6xMAC0EAIQELAkACQCAEBEAgBUEEaygCACIDQXhxIQAgACAEQQN0IgRBBEEIIANBA3EiAxtqSQ0BIANBAEcgACAEQSdqS3ENAiAFELwFCyACQSBqJAAgAQ8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC5EDAQN/AkACQAJAAkACQAJAAkACQAJAIAAoAgAiAQRAIAAoAgQiAiABQZgCaigCACIDTw0CIAAoAggiAyABQZQCaigCACACQSRsaiIBQSBqKAIAIgJPDQMgAUEcaigCACADQdQAbGoiASgCAEGAgICAeEcNBCAAKAIMIgAgASgCJCICSQ0BIAAgAkGkvsQAEIUTAAsgACgCCCIBIAAoAgQiACgCCCICTw0HIAAoAgQgAUHkAGxqIgIoAlQiASAAKAKYAiIDTw0EIAIoAlgiAyAAKAKUAiABQSRsaiIAQSBqKAIAIgFPDQUgAEEcaigCACADQdQAbGoiASgCAEGCgICAeEcNBiACKAJcIgAgASgCJCICTw0ICyABKAIgIABB3ABsai0AWEEBRg8LIAIgA0GUvsQAEIUTAAsgAyACQZS+xAAQhRMAC0GUvsQAEJ0VAAsgASADQdS4xAAQhRMACyADIAFB1LjEABCFEwALQdS4xAAQnRUACyABIAJB5PbIABCFEwALIAAgAkHkuMQAEIUTAAuRAwEDfwJAAkACQAJAAkACQAJAAkACQCAAKAIAIgEEQCAAKAIEIgIgAUGYAmooAgAiA08NAiAAKAIIIgMgAUGUAmooAgAgAkEkbGoiAUEgaigCACICTw0DIAFBHGooAgAgA0HUAGxqIgEoAgBBgICAgHhHDQQgACgCDCIAIAEoAiQiAkkNASAAIAJBpL7EABCFEwALIAAoAggiASAAKAIEIgAoAggiAk8NByAAKAIEIAFB5ABsaiICKAJUIgEgACgCmAIiA08NBCACKAJYIgMgACgClAIgAUEkbGoiAEEgaigCACIBTw0FIABBHGooAgAgA0HUAGxqIgEoAgBBgoCAgHhHDQYgAigCXCIAIAEoAiQiAk8NCAsgASgCICAAQdwAbGotAFhBAkYPCyACIANBlL7EABCFEwALIAMgAkGUvsQAEIUTAAtBlL7EABCdFQALIAEgA0HUuMQAEIUTAAsgAyABQdS4xAAQhRMAC0HUuMQAEJ0VAAsgASACQeT2yAAQhRMACyAAIAJB5LjEABCFEwAL1gIBB38jAEEQayIFJABBCiEDIAEiBEHoB08EQANAIAVBBmogA2oiBkEEayAEIgIgAkGQzgBuIgRBkM4AbGsiB0H//wNxQeQAbiIIQQF0LwCcmEk7AAAgBkECayAHIAhB5ABsa0H//wNxQQF0LwCcmEk7AAAgA0EEayEDIAJB/6ziBEsNAAsLAkAgBEEJTQRAIAQhAgwBCyADQQJrIgMgBUEGamogBCAEQf//A3FB5ABuIgJB5ABsa0H//wNxQQF0LwCcmEk7AAALAkACQAJAIAJFIAFBAEdxRQRAIAMgBWpBBWoiASACQQF0LQCdmEk6AABBCyADayECDAELQQogA2shAkEBIQQgA0EKRg0BIAVBBmogA2ohAQsgAhCQASIERQ0BIAJFDQAgBCABIAL8CgAACyAAIAI2AgggACAENgIEIAAgAjYCACAFQRBqJAAPC0EBEKcUAAv1AgEGfyMAQTBrIgMkACADQQA6AC4gA0EAOwEsIANBAjYCJCADQQhqIANBJGogASACEOUBIAAgAykCEDcCCCAAIAMpAgg3AgACQAJAAkACQAJAIAMoAhgiBEF/Rg0AIAMoAhwhASADKAIgIgIEQCABQdAAaiEAA0AgAEHMAGsQ8AIgAEEYaxCeBiAAQQRrKAIAIgYEQCAAKAIAIghBBGsoAgAiBUF4cSEHIAdBBEEIIAVBA3EiBRsgBmpJDQQgBUEARyAHIAZBJ2pLcQ0FIAgQvAULIABB2ABqIQAgAkEBayICDQALCyAERQ0AIAFBBGsoAgAiAkF4cSEAIAAgBEHYAGwiBEEEQQggAkEDcSICG2pJDQMgAkEARyAAIARBJ2pLcQ0EIAEQvAULIANBMGokAA8LQdCcyQBBLkGAnckAEK8UAAtBkJ3JAEEuQcCdyQAQrxQAC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAuWAwIGfwF+IwBBsAFrIgIkAAJAAkACQAJAIAAoAgBFBEBBDBCQASIDRQ0BIANB34vGACgAADYACCADQdeLxgApAAA3AAACQCAAKAIEIgRBf0YNACAERQ0AIAAoAggiB0EEaygCACIFQXhxIQYgBkEEQQggBUEDcSIFGyAEakkNAyAFQQBHIAYgBEEnaktxDQQgBxC8BQsgAEEMNgIMIAAgAzYCCCAAQX82AgQgAkGCgICAeDYCWCACIAGtNwNQIAJCADcDSCACIAApAwg3AkAgAkEMNgI8IAJB+ABqIABBEGogAkE8aiACQcgAahCfBSACIAIpA6gBNwMwIAIgAikDoAE3AyggAiACKQOYATcDICACIAIpA5ABIgg3AxggAiACKQOIATcDECACIAIpA4ABNwMIIAinQX9HBEAgAkEIahD9CQtBACEADAQLIAJBCjYCeCACQfgAakEAQQAQxxMhAAwDC0EBEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIAJBsAFqJAAgAAviAgEJf0EEIQgCQAJAIAJFDQAgAkEEdCIJEJABIghFDQEgAiEKA0AgByAJRg0BAkACQAJAAkACQAJAAkAgASAHaiIEKAIAIgtBAWsOAwECBgALIARBDGooAgAiA0UNBCAEQQhqKAIAIQUgAxCQASIGRQ0CIANFBEAgAyEFDAYLIAYgBSAD/AoAACADIQUMBQsgBEEMaigCACIDRQ0DIARBCGooAgAhBSADEJABIgZFDQIgA0UEQCADIQUMBQsgBiAFIAP8CgAAIAMhBQwECyAEQQxqKAIAIQMgBEEIaigCACEGIARBBGooAgAhBQwDC0EBEKcUAAtBARCnFAALQQEhBkEAIQNBACEFCyAHIAhqIgQgCzYCACAEQQxqIAM2AgAgBEEIaiAGNgIAIARBBGogBTYCACAHQRBqIQcgCkEBayIKDQALCyAAIAI2AgggACAINgIEIAAgAjYCAA8LQQQQpxQAC/oCAQV/IwBBkAJrIgMkACACKAIEIQYgAigCACEHIANBCGoiBSACKAIIEL4HAkACQEHgABCQASICBEAgA0EANgLAASADIAI2ArwBIANBATYCuAFBsAEQkAEiBEUNASAEIAVBsAH8CgAAIAJBfjYCUCACIAQ2AgQgAkEDNgIAIANBATYCwAEgA0EBNgKIAiADIAMpArgBNwOAAiAFIAYQkAMgA0G4AWoiAiAHIAUgARChASAFQQRqIAJByAD8CgAAQeAAEJABIgFFDQIgAUEENgIAIAEgAykDgAI3AgQgASADKAKIAjYCDCABQX42AlBB4AAQkAEiBEUNAiAEQQE2AgAgBEEEaiAFQcwA/AoAACAEQX42AlBB4AAQkAEiAkUNAiACQX42AlAgAiAENgIMIAIgATYCCCACQouAgIDggICAgH83AwAgACACNgIEIABBAzYCACADQZACaiQADwtBCBCnFAALQbjwyQBBAToAAAALQbjwyQBBAToAAAAL7wIBBH8jAEEgayIEJAAgAkEDakECdiIGQQNsIQMCQAJAAkACQAJAIAZFBEBBASEFDAELIAMQkAEiBUUNASAFQQRrLQAAQQNxRQ0AIANFDQAgBUEAIAP8CwALIARBDGogASACIAUgAyACQQNxEJcBAkAgBCgCDEECRgRAIAQtABBB/wFGDQMgBgRAIAVBBGsoAgAiAkF4cSEBIAFBBEEIIAJBA3EiAhsgA2pJDQUgAkEARyABIANBJ2pLcQ0GIAUQvAULIABBEjYCFCAAQdKExwA2AhAgAEKUgICAcDcCCCAAQb6ExwA2AgQgAEF/NgIADAELIAQoAhQhASAAIAU2AgggACADNgIEIABBfjYCACAAIAMgASABIANLGzYCDAsgBEEgaiQADwtBARCnFAALIARC4IXHgNABNwMYQfGjwAAgBEEYakHohccAEL8TAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALjwMCCH8BfiABKAIEIgVFBEAgAEGYqckAKQMANwIIIABBkKnJACkDADcCAA8LAkACQAJAAkAgBUEBaiICQf7///8DSw0AIAVBCWoiAyACQQJ0QQdqQXhxIgRqIQIgAiADSQ0AIAJB+P///wdLDQAgAg0BQQghAgwCC0H46MgAQTlBlOnIABC/EwALIAIQkAEiAkUNAQsgAiAEaiEGIAEoAgAhBCADBEAgBiAEIAP8CgAACyABKAIMIggEQCAEQQhqIQkgBCkDAEJ/hUKAgYKEiJCgwIB/gyEKIAghAiAEIQMDQCAKUARAA0AgCSIHQQhqIQkgA0EgayEDIAcpAwBCgIGChIiQoMCAf4MiCkKAgYKEiJCgwIB/UQ0ACyAKQoCBgoSIkKDAgH+FIQoLIAYgAyAKeqdBAXZBPHFrIgcgBGtqQQRrIAdBBGsoAgA2AgAgCkIBfSAKgyEKIAJBAWsiAg0ACwsgACAINgIMIAAgBTYCBCAAIAY2AgAgACABKAIINgIIDwtBuPDJAEEBOgAAAAumAwEDfwJAAkACQAJAAkACQCABRQRAQRIQkAEiA0UNBiADQa3zxwAvAAA7ABAgA0Gl88cAKQAANwAIIANBnfPHACkAADcAAEEMEJABIgFFDQNBCBCQASICDQEMBgtBGhCQASIDRQ0FIANBx/PHAC8AADsAGCADQb/zxwApAAA3ABAgA0G388cAKQAANwAIIANBr/PHACkAADcAAEEYEJABIgFFDQNBBhCQASICDQEMBQsgAkLK5r3z5qmdtuwANwAAIAFBCDYCCCABIAI2AgQgAUEINgIAQRIhAkEBIQQMAwsgAkHN88cALwAAOwAEIAJByfPHACgAADYAAEEIEJABIgRFDQMgBELK5r3z5qmdtuwANwAAIAFBCDYCFCABIAQ2AhAgAUKGgICAgAE3AgggASACNgIEIAFBBjYCAEEaIQJBAiEEDAILQbjwyQBBAToAAAALQbjwyQBBAToAAAALIABBADoAMCAAIAI2AhwgACADNgIYIAAgAjYCFCAAQTA6ABAgACAENgIMIAAgATYCCCAAIAQ2AgQgAEEANgIADwtBARCnFAAL8gIBBH8jAEEQayICJAAgAiAAKAIAIgM2AgwgASACQQxqQQQQlggCQAJAAkACQCADQQFrDgIBAgALIAAoAgghAyACIAAoAgwiADYCDCABIAJBDGpBBBCWCCAARQ0CIABBBXQhAANAIAMgARC5AiADQSBqIQMgAEEgayIADQALDAILIAIgACgCBCIFNgIMIAEgAkEMaiIDQQQQlgggACgCCCEEIAVBAUYEQCAAKAIMIQUgAiAENgIMIAEgA0EEEJYIIAIgBTYCDCABIANBBBCWCCACIAAoAhA2AgwgASADQQQQlggMAgsgAiAENgIMIAEgAkEMakEEEJYIDAELIAEgACgCECAAKAIUEJYIIAJB/wE6AAwgASACQQxqIgNBARCWCCACIAAoAgQiBDYCDCABIANBBBCWCCAEQQVHDQAgAEEEaiEDA0AgAiADKAIEIgMoAgAiADYCDCABIAJBDGpBBBCWCCAAQQVGDQALCyACQRBqJAAL8gIBBH8jAEEQayICJAAgAiAAKAIAIgM2AgwgASACQQxqQQQQlggCQAJAAkACQCADQQFrDgIBAgALIAAoAgghAyACIAAoAgwiADYCDCABIAJBDGpBBBCWCCAARQ0CIABBBXQhAANAIAMgARC6AiADQSBqIQMgAEEgayIADQALDAILIAIgACgCBCIFNgIMIAEgAkEMaiIDQQQQlgggACgCCCEEIAVBAUYEQCAAKAIMIQUgAiAENgIMIAEgA0EEEJYIIAIgBTYCDCABIANBBBCWCCACIAAoAhA2AgwgASADQQQQlggMAgsgAiAENgIMIAEgAkEMakEEEJYIDAELIAEgACgCECAAKAIUEJYIIAJB/wE6AAwgASACQQxqIgNBARCWCCACIAAoAgQiBDYCDCABIANBBBCWCCAEQQVHDQAgAEEEaiEDA0AgAiADKAIEIgMoAgAiADYCDCABIAJBDGpBBBCWCCAAQQVGDQALCyACQRBqJAAL8gIBBH8jAEEQayICJAAgAiAAKAIAIgM2AgwgASACQQxqQQQQlggCQAJAAkACQCADQQFrDgIBAgALIAAoAgghAyACIAAoAgwiADYCDCABIAJBDGpBBBCWCCAARQ0CIABBBXQhAANAIAMgARC7AiAD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KALMASACKALQARCLAQJAAkACQAJAAkACQAJAIAMpAwhCAlINACADKAJIQX9HDQAgAy0AbEEBcUUNAQsgA0HwAGogA0EIakHoAPwKAAAMAQsgAygCaCADIAJBqAFqNgLYASADQfAAaiADQQhqQegA/AoAAEUNAQsgAyACKAKoAUEIaiACKAKsARDRECADKAIEIgJBAEgNAgJAIAJFBEBBASEBDAELIAMoAgAhBCACEJABIgFFDQQgAkUNACABIAQgAvwKAAALIANB6AFqIANB8ABqQegA/AoAACAAIAI2AgggACABNgIEIAAgAjYCACAAQQxqIANB5AFqQewA/AoAAAwBCyAAQn83AxAgA0HwAGoQhQgLIANB0AJqJAAPCxCeFQALQQEQpxQAC7gCAQd/AkACQAJAAkACQCAAKAIAIgJBfkYNACACQX9GDQAgACgCBCEDIAAoAggiBQRAIAMhAANAIAAQzQECQCAAQdAAaigCACIBQX5GDQAgAUF/Rg0AIAFFDQAgAEHUAGooAgAiB0EEaygCACIEQXhxIQYgBkEEQQggBEEDcSIEGyABakkNBCAEQQBHIAYgAUEnaktxDQUgBxC8BQsgAEHgAGohACAFQQFrIgUNAAsLIAJFDQAgA0EEaygCACIBQXhxIQAgACACQeAAbCICQQRBCCABQQNxIgEbckkNAyABQQBHIAAgAkEnaktxDQQgAxC8BQsPC0HQnMkAQS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALtAIBBH8CQAJAAkACfyABQQhPBEAgAUH/////AU0EQEF/IAFBA3RBB25BAWtndiIDQf3///8DSw0DIANBAWoMAgtB+OjIAEE5QZTpyAAQvxMACyABQQRxQQRqCyIDQQJ0QQdqQXhxIgQgA0EIaiIFIARqIgJLDQAgAkH4////B0sNACACEJABIgJFBEBBuPDJAEEBOgAAAAsgAiAEaiEEIAUEQCAEQf8BIAX8CwALIAFB/////wBLDQEgAUEEdCICQf3///8HTw0BIAIQkAEiAkUNAiAAQQA2AhggACAENgIMIABBADYCCCAAIAI2AgQgACABNgIAIAAgA0EBayIBNgIQIAAgASADQQN2QQdsIANBCUkbNgIUDwtB+OjIAEE5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AAAhBQwBCyADQaGyyABBASAEEQAAIQULIAJBIGokACAFC7UCAQR/IwBBMGsiAiQAQQEhAwJAIAAoAgAiACgCAEEBRgRAIAIgAEEEajYCDCABKAIAIgBB55HJAEEEIAEoAgQiBSgCDCIEEQAADQECQCABLQAKQYABcUUEQCAAQbTPxQBBASAEEQAADQMgAkEMaiABEJ4QDQMgASgCACEAIAEoAgQoAgwhBAwBCyAAQZ3jwgBBAiAEEQAADQIgAkEBOgAfIAIgBTYCFCACIAA2AhAgAkGg68IANgIkIAIgASkCCDcCKCACIAJBH2o2AhggAiACQRBqNgIgIAJBDGogAkEgahCeEA0CIAIoAiBBpLLIAEECIAIoAiQoAgwRAAANAgsgAEGIkMkAQQEgBBEAACEDDAELIAEoAgBB65HJAEEEIAEoAgQoAgwRAAAhAwsgAkEwaiQAIAMLmgIBBH8jAEEgayIDJAACQCABLQCRAUECRw0AQQEhAgJAIAEoAgBBAUYEQCABKAIIIgUgASgCBCIETQ0CIAEgBEEBaiICNgIEIAIgBU8NASABIARBAmo2AgQLIAFBADoAkQEgA0EYaiABEJQKIAMoAhggAygCHCIBQQI6AJEBQQFxDQADQCABKAIAQQFGBEAgASgCBCICIAEoAghPDQIgASACQQFqNgIECwJAIAEtAJEBIgRFBEAgA0EIaiABEJQKIAMoAgwhASADKAIIIQIMAQsgAUEAOgCRASADQRBqIAEQlAogAygCECECIAMoAhQiASAEOgCRAQsgAkEBRw0ACwtBACECCyAAIAE2AgQgACACNgIAIANBIGokAAu7AgEDf0HAARCQASICBEACQEGwARCQASIBRQ0AIAFBADoArAEgAUEAOwGqASABQf8BOgCkASABQo+AgIBwNwJsIAFB1OPIADYCaCABQX82AmQgAUF+NgJYIAFBfDYCECABQX42AgBB4AAQkAEiA0UNACADQX42AlAgAyABNgIEIANBAzYCAEHIARCQASIBRQ0AIAFBfjYCuAEgASADNgIEIAFBEDYCACACQX42AlAgAiABNgIEIAJBBjYCACAAQQ82AsABIABB1OPIADYCvAEgAEF/NgK4ASAAQQI2AgwgACACNgIIIABCioCAgCA3AwAgAkF+NgKwASACQYSAgIB4NgKQASACQQA2AogBIAJC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ASgCKARAIANBGGogASAFELgFIAMoAhgiBA0BCwJAIAEoAiAiAkUNACABKAIkIQYDQCACIAZGDQEgASACQQxqIgQ2AiAgASACQQRqKAIAIgc2AiggASAHIAJBCGooAgBByABsajYCLCADQRBqIAEgBRC4BSAEIQIgAygCECIERQ0ACyADKAIUIQIMAgtBACEEIAFBADYCKCABQTBqIQICQCABKAIwBEAgA0EIaiABIAIQuAUgAygCCCIBDQELIAJBADYCAAwCCyADKAIMIQIgASEEDAELIAMoAhwhAgsgACACNgIEIAAgBDYCACADQSBqJAALtgIBBX8jAEEQayICJABBASEFAkAgASgCACIDQbb9xgBBECABKAIEIgYoAgwiBBEAAA0AIAEtAApBgAFxRQRAIANBl+PCAEEDIAQRAAANASADQcqjyQBBBCAEEQAADQEgA0GmssgAQQIgBBEAAA0BIANBjf7GAEHdkckAIAAtAAAiABtBDEEFIAAbIAQRAAANASADQe3qwgBBAiAEEQAAIQUMAQsgA0Ga48IAQQMgBBEAAA0AIAIgBjYCBCACIAM2AgAgAkEBOgAPIAIgAkEPajYCCCACQcqjyQBBBBD9CA0AIAJBprLIAEECEP0IDQAgAkGN/sYAQd2RyQAgAC0AACIAG0EMQQUgABsQ/QgNACACQaSyyABBAhD9CA0AIANBobLIAEEBIAQRAAAhBQsgAkEQaiQAIAUL6wEBA38CQAJAAkACQAJAAkAgAS0AAEEBaw4GAAUBBQUCBQtBASECAkAgASgCCCIDRSIEDQAgASgCBCEBIAMQkAEiAkUNAyAEDQAgAiABIAP8CgAACyAAIAM2AgggACACNgIEIABBAToAAA8LAkAgASgCCCICRQRAQQEhAQwBCyABKAIEIQMgAhCQASIBRQ0DIAJFDQAgASADIAL8CgAACyAAIAI2AgggACABNgIEIABBAzoAAA8LIABBBjoAAA8LQbjwyQBBAToAAAALQbjwyQBBAToAAAALIAAgASgCCDYCCCAAIAEpAgA3AgALoAIBBX8jAEEwayICJAAgAkEYaiABQZytyABBAxCKBgJAIAIoAhgiBEF+RwRAIAIoAiAhBSACKAIcIQYgAiACKAIsNgIQIAIgAikCJDcDCCABKAKEAiIBKAIIIQMgASgCACADRgRAIAEQvRIL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QQE6AAAACyAAIAQpAAk3AAkgACAEKQARNwARIAAgBCgAGDYAGCAAIAEpAgg3AkAgACABKQIANwI4IABBADoATCAAIAU2AkggAEECOgAgIAAgAjYCHCAAQQ46AAggAEEDOgAAIARBMGokAAubAgEDfyMAQTBrIgQkACAEIAIpABg3ACggBCACKQAQNwAgIAQgAikACDcAGCAEIAIpAAA3ABACQEEwEJABIgIEQCACQQg6AAAgAiAEKQAJNwABIAIgBCkAETcACSACIAQpABk3ABEgAiAEKQAhNwAZIAIgBCkAKDcAICABKAIQIgUoAgAhBiAFIAZBAWo2AgAgBCADKQAANwAMIAQgAykACDcAFCAGQQBODQEAC0G48MkAQQE6AAAACyAAIAQpAAk3AAkgACAEKQARNwARIAAgBCgAGDYAGCAAIAEpAgg3AkAgACABKQIANwI4IABBADoATCAAIAU2AkggAEECOgAgIAAgAjYCHCAAQQ46AAggAEEDOgAAIARBMGokAAubAgEDfyMAQTBrIgQkACAEIAIpABg3ACggBCACKQAQNwAgIAQgAikACDcAGCAEIAIpAAA3ABACQEEwEJABIgIEQCACQQk6AAAgAiAEKQAJNwABIAIgBCkAETcACSACIAQpABk3ABEgAiAEKQAhNwAZIAIgBCkAKDcAICABKAIQIgUoAgAhBiAFIAZBAWo2AgAgBCADKQAANwAMIAQgAykACDcAFCAGQQBODQEAC0G48MkAQQE6AAAACyAAIAQpAAk3AAkgACAEKQARNwARIAAgBCgAGDYAGCAAIAEpAgg3AkAgACABKQIANwI4IABBADoATCAAIAU2AkggAEECOgAgIAAgAjYCHCAAQQ46AAggAEEDOgAAIARBMGokAAubAgEDfyMAQTBrIgQkACAEIAIpABg3ACggBCACKQAQNwAgIAQgAikACDcAGCAEIAIpAAA3ABACQEEwEJABIgIEQCACQQo6AAAgAiAEKQAJNwABIAIgBCkAETcACSACIAQpABk3ABEgAiAEKQAhNwAZIAIgBCkAKDcAICABKAIQIgUoAgAhBiAFIAZBAWo2AgAgBCADKQAANwAMIAQgAykACDcAFCAGQQBODQEAC0G48MkAQQE6AAAACyAAIAQpAAk3AAkgACAEKQARNwARIAAgBCgAGDYAGCAAIAEpAgg3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gIAgcUUEQCACIAA2AgwgAiAENwMYIAIgAkEMaq1CgICAgLAlhDcDECABKAIAIAEoAgRB4s3GACACQRBqELEJDAILIAIgADYCDCACIAQ3AxggAiACQQxqrUKAgICAwCWENwMQIAEoAgAgASgCBEHqzcYAIAJBEGoQsQkMAQsgAiAANgIMIAIgBDcDGCACIAJBDGqtQoCAgIDAJYQ3AxAgASgCACABKAIEQfLNxgAgAkEQahCxCQsgAkEgaiQAC/8BAQN/IwBBEGsiBCQAIAEoAgQhAwJAAkACQAJAIAACfyABKAIAQQFGBEAgAigCmAIiBSADTQ0CIAEoAggiBSACKAKUAiADQSRsaiICQSBqKAIAIgNPDQMgAkEcaigCACAFQdQAbGoiAigCAEGAgICAeEcNBCABKAIMIgEgAigCJCIDTw0FIAIoAiAgAUHcAGxqIgIoAiQhASACKAIgDAELIARBCGogAiADENAQIAQoAgwhASAEKAIICzYCACAAIAE2AgQgBEEQaiQADwsgAyAFQZS+xAAQhRMACyAFIANBlL7EABCFEwALQZS+xAAQnRUACyABIANBpL7EABCFEwALkQIBA38jAEEQayICJAACQCABKAIAIgNBf0YNAAJAAkACQAJ/AkACQAJAAkACQEEVIANBgICAgHhzIANBAE4bQQxrDgQAAQIDCQsgASgCCCEEIAEoAgwMBAsgASgCBCEEIAEoAggMAwsgAkEEaiABKAIIIAEoAgwQlwggAigCBEUNAQwGCyACQQRqIAEoAgQgASgCCBCXCCACKAIEDQULIAIoAgghBCACKAIMCyIDQQRrDgIAAQMLIAQoAABB9PLBqwZGDQEMAgtB4+PIACAEIAMQjxMNAQsgACABKQMYNwMYIAAgASkDEDcDECAAIAEpAwg3AwggACABKQMANwMAIAEhAAsgAEF/NgIAIAJBEGokAAv1AQEEfyMAQSBrIgIkACABKAIEIQMgASgCACEBAn8CQAJAAkAgACgCACIAKAIwIgRB9////wdqIgVBACAEIAVPG0EBaw4CAQIACyACIAA2AgwgAiACQQxqrUKAgICAwCyENwMQIAEgA0G/mMAAIAJBEGoQsQkMAgsgAiAANgIMIAIgAkEMaq1CgICAgNAshDcDECABIANB6afAACACQRBqELEJDAELIAIgADYCCCACIABB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IAFBBGogAyAAKAIEIAJBBEEgEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtvAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQRBDBClESABKAIEQQFGBEAgASgCCCABKAIMIQUQpxQACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALcAEFfyMAQRBrIgEkAEEEIAAoAgAiA0EBdCICIAJBBE0bIQIgAUEEaiADIAAoAgQgAkEIQagCEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtvAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQRBHBClESABKAIEQQFGBEAgASgCCCABKAIMIQUQpxQACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALbwEFfyMAQRBrIgEkAEEEIAAoAgAiA0EBdCICIAJBBE0bIQIgAUEEaiADIAAoAgQgAkEEQTwQpREgASgCBEEBRgRAIAEoAgggASgCDCEFEKcUAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQAC28BBX8jAEEQayIBJABBCCAAKAIAIgNBAXQiAiACQQhNGyECIAFBBGogAyAAKAIEIAJBAUEBEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAttACMAQRBrIgAkACAAIAE2AgAgACACNgIEAkAgAkEGRgRAIAEoAABB0+jJywZzIAFBBGovAABB7s4Bc3JFDQELIAAgAK1CgICAgNABhDcDCEGDx8EAIABBCGpB+MPFABC/EwALIABBEGokAEEHC3ABBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiACQQRNGyECIAFBBGogAyAAKAIEIAJBCEHgABClESABKAIEQQFGBEAgASgCCCABKAIMIQUQpxQACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALcAEFfyMAQRBrIgEkAEEEIAAoAgAiA0EBdCICIAJBBE0bIQIgAUEEaiADIAAoAgQgAkEIQegAEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtwAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQhB8AAQpREgASgCBEEBRgRAIAEoAgggASgCDCEFEKcUAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQAC28BBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiACQQRNGyECIAFBBGogAyAAKAIEIAJBBEEwEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtwAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQhByAAQpREgASgCBEEBRgRAIAEoAgggASgCDCEFEKcUAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQAC3ABBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiACQQRNGyECIAFBBGogAyAAKAIEIAJBCEHQABClESABKAIEQQFGBEAgASgCCCABKAIMIQUQpxQACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALcAEFfyMAQRBrIgEkAEEEIAAoAgAiA0EBdCICIAJBBE0bIQIgAUEEaiADIAAoAgQgAkEEQcwAEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtwAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQRB2AAQpREgASgCBEEBRgRAIAEoAgggASgCDCEFEKcUAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQAC28BBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiACQQRNGyECIAFBBGogAyAAKAIEIAJBCEE4EKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtwAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQhB2AAQpREgASgCBEEBRgRAIAEoAgggASgCDCEFEKcUAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQAC3ABBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiACQQRNGyECIAFBBGogAyAAKAIEIAJBCEHIAhClESABKAIEQQFGBEAgASgCCCABKAIMIQUQpxQACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALcAEFfyMAQRBrIgEkAEEEIAAoAgAiA0EBdCICIAJBBE0bIQIgAUEEaiADIAAoAgQgAkEIQcgBEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtvAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQhBIBClESABKAIEQQFGBEAgASgCCCABKAIMIQUQpxQACyABKAIIIQMgACACNgIAIAAgAzYCBCABQRBqJAALfQMBfwF+AXwjAEEQayIDJAACQAJAAkACQCAAKAIAQQFrDgIBAgALIAArAwghBSADQQM6AAAgAyAFOQMIDAILIAApAwghBCADQQE6AAAgAyAENwMIDAELIAApAwghBCADQQI6AAAgAyAENwMICyADIAEgAhDUESADQRBqJAALaQEDfyMAQRBrIgIkAAJAIAEoAgAiBCgCAEEBRw0AIAQtAARBA0cNACACQQhqIARBCGooAgAiASgCACABKAIEKAIYEQIAIAIoAgwhASACKAIIIQMLIAAgATYCBCAAIAM2AgAgAkEQaiQAC28BBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiACQQRNGyECIAFBBGogAyAAKAIEIAJBCEEQEKURIAEoAgRBAUYEQCABKAIIIAEoAgwhBRCnFAALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtwAQV/IwBBEGsiASQAQQQgACgCACIDQQF0IgIgAkEETRshAiABQQRqIAMgACgCBCACQQRB4AAQpREgASgCBEEBRgRAIAEoAgggASgCDCEFEKcUAAsgASgCCCEDIAAgAjYCACAAIAM2AgQgAUEQaiQAC28BBX8jAEEQayIBJABBBCAAKAIAIgNBAXQiAiAC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f0EBIQICQCABQQFxBEACQCABQQF2IgFFIgMNACABEJABIgJFDQIgAw0AIAJBtZTCACAB/AoAAAsgACABNgIIIAAgAjYCBCAAIAE2AgAPCyAAQbWUwgAgARC4DA8LQQEQpxQAC2ABAn9BASEDAkAgAkEBcQRAAkAgAkEBdiICRSIEDQAgAhCQASIDRQ0CIAQNACADIAEgAvwKAAALIAAgAjYCCCAAIAM2AgQgACACNgIADwsgACABIAIQuAwPC0EBEKcUAAtiAQF+IwBBEGsiACQAAkACQCABKQMAIgJCBVMNACACQv////8Pg0IFUg0AIAEoAghBf0YNAQsgAEKI4MaA0AE3AwhBz63AACAAQQhqQZDgxgAQvxMACyAAQRBqJAAgAUEMagtiAQF+IwBBEGsiACQAAkACQCABKQMAIgJCBVMNACACQv////8Pg0IFUg0AIAEoAghBf0cNAQsgAEKM38aA0AE3AwhBz63AACAAQQhqQZTfxgAQvxMACyAAQRBqJAAgAUEQagtmAQJ/QQEhAgJAIAFBAXEEQAJAIAFBAXYiAUUiAw0AIAEQkAEiAkUNAiADDQAgAkHPrcAAIAH8CgAACyAAIAE2AgggACACNgIEIAAgATYCAA8LIABBz63AACABELgMDwtBARCnFAALXAEBfyMAQSBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADIANBCGqtQoCAgICQA4Q3AxggAyADQQRqrUKAgICAgAGENwMQQe2OwAAgA0EQahDcESADQSBqJAALXAEDfyAAIAEgACgCDCAAKAIEIgJrQbABbiIEIAEgBEkbIgNBsAFsIAJqNgIEIAMEQCADIQADQCACEJcEIAJBsAFqIQIgAEEBayIADQALCyABIANrQQAgASAESxsLfAEBfwJAAkAgAEGEAU8EQCAA0G8mAUHU8MkAKAIADQJB5PDJACgCACIBIABLDQEgACABayIAQdzwyQAoAgBPDQFBxOzJACgCACAAQQJ0akHg8MkAKAIANgIAQeDwyQAgADYCAEHU8MkAQQA2AgALDwsAC0HkvMkAENITAAtnAQJ/AkAgAiABKAIcIgNJBEAgASgCGCACQfAAbGoiAigCXCEDIAIoAlghAiABIAEoAgAiBEEBajYCACAEQQBODQEACyACIANB5P7IABCFEwALIAAgAzYCCCAA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QS5BgJ3JABCvFAALQZCdyQBBLkHAnckAEK8UAAtjAQF/IwBBEGsiAiQAIAIgAEEQajYCDCABQYP3xQBBBUGI8sUAQQMgAEHnAUGQxMYAQQUgAEEcakHoAUHu98UAQQggAEEoakHoAUH298UAQREgAkEMakHpARC7ECACQRBqJAALZQEBfyMAQRBrIgIkACACIABBNGo2AgwgAUHd7sUAQQVB4u7FAEEKIABB0ABqQdsBQYDpxQBBByAAQcQAakHqAUHs7sUAQQggAEHdAUH07sUAQQ0gAkEMakHrARC7ECACQRBqJAALUwEBfiMAQRBrIgAkACABKQMAIgJCBVkgAkL/////D4NCBlFxRQRAIABC6N3GgNABNwMIQc+twAAgAEEIakHw3cYAEL8TAAsgAEEQaiQAIAFBGGoLUwEBfiMAQRBrIgAkACABKQMAIgJCBVkgAkL/////D4NCBlFxRQRAIABC9NrGgNABNwMIQc+twAAgAEEIakH82sYAEL8TAAsgAEEQaiQAIAFBDGoLUgEBfyMAQSBrIgMkACADIAI2AgwgAyABNgIIIAMgA0EIaq1CgICAgJADhDcDGCADIACtQoCAgICgA4Q3AxBBjI/AACADQRBqENwRIANBIGokAAtqAEHgABCQASIBRQRAQbjwyQBBAToAAAALIAFBADoAXCABQQA2AlggAUEAOgBUIAFBggQ7ARwgAUEFNgIYIAFBj/DHADYCFCABQX82AhAgAUECNgIAIABBATYCCCAAIAE2AgQgAEEBNgIAC1IBAX8jAEEgayIDJAAgAyACNgIMIAMgATYCCCADIANBCGqtQoCAgICQA4Q3AxggAyAArUKAgICAoAOENwMQQauPwAAgA0EQahDKDyADQSBqJAALagEBfyMAQbABayICJAAgAiABKAIAIAEoAgQoAgwRAgACQCACKAJwQX5HBEAgACACQawB/AoAACAAQQE6AKwBIAAgAi0ArwE6AK8BIAAgAi8ArQE7AK0BDAELIABBfjYCcAsgAkGwAWokAAtpAQJ/IwBBEGsiAiQAIAJCADcCCCACQoCAgICAATcCACABKAJIIQMgAhCqEiACKAIEIAFB0AD8CgAAIAAgAikCADcCACACQQE2AgggAiADIAIoAgxqNgIMIAAgAikCCDcCCCACQRBqJAALWQEBfwJAAkAgACgCACAA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ASABQX42ApABIAFBADsBjAEgAUEFNgKIASABIAQ2AoQBIAFBBTYCgAEgAUIENwN4IAFCATcDcCABIAc2AmwgAUEBNgJoIAFBfjYCSCABQQE7AUQgAUEENgJAIAEgCDYCPCABQoCAgIDAADcCNCABQoCAgIDAADcCLCAAQQM2AgggACABNgIEIABBAzYCACAFIAUoAgAiAEEBazYCACAAQQFGBEAgAygCABAwCyACQYABaiQADAQLQQEQpxQACwwDCwALQQEQpxQACyADQRBqJAAPC0G48MkAQQE6AAAACy4AAn8gACkDAEIBUQRAQQEgACkDCCABUg0BGgsgACABNwMIIABCATcDAEH/AQsLOQAgACgCACIAKAIAQX9HBEAgASAAKAIEIAAoAggQnQQPCyABKAIAQZ/PxQBBDyABKAIEKAIMEQAACy8AAkAgA2lBAUcNACABQYCAgIB4IANrSw0AIAAgASADIAIQrQYiAEUNACAADwsACzsBAX9ByAEQkAEiAkUEQEG48MkAQQE6AAAACyACIAFByAH8CgAAIABBfjYCUCAAIAI2AgQgAEEGNgIACzsBAX9BsAEQkAEiAkUEQEG48MkAQQE6AAAACyACIAFBsAH8CgAAIABBfjYCUCAAIAI2AgQgAEEDNgIACy4BAn8CQCAAKAIwIgJBAkYNACACQQFxDQAgACgCQEEIaiAAKAI0EIQJIQELIAELPAEBf0HgABCQASICRQRAQbjwyQBBAToAAAALIAIgAUHgAPwKAAAgAEF+NgK4ASAAIAI2AgQgAEEGNgIACy0BAX8jAEEQayIBJAAgASABQQ9qrUKAgICAkASENwMAQc+twAAgASAAEL8TAAswAQF/IwBBEGsiACQAIAAgAEEPaq1CgICAgMAHhDcDAEHPrcAAIABBlIzGABC/EwALKwBBACEAIAJBBUYEfyABKAAAQeXawaMHcyABQQRqLQAAQfkAc3IFQQELRQsvAQJ/IAFBDGwiAhCQASIDRQRAQQQQpxQACyAAQQA2AgggACADNgIEIAAgATYCAAswACAAIAEgAhCiCiABKAIAIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsLMAAgACABIAIQ6gggASgCACICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIAEDALCzAAIAAgASACEKMKIAEoAgAiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCABAwCwswACAAIAEgAhC/CSABKAIAIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsLMAAgACABIAIQtAkgASgCACICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIAEDALCzAAIAAgASACEMAJIAEoAgAiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCABAwCwswACAAIAEgAhCqCyABKAIAIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsLMAAgACABIAIQtQkgASgCACICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIAEDALCzAAIAAgASACEMEJIAEoAgAiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCABAwCwswACAAIAEgAhC2CSABKAIAIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsLMAAgACABIAIQtwkgASgCACICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIAEDALCzAAIAAgASACEM8HIAEoAgAiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCABAwCwswACAAIAEgAhDQByABKAIAIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsLMAAgACABIAIQwgkgASgCACICKAIAIQAgAiAAQQFrNgIAIABBAUYEQCABKAIAEDALCzAAIAAgASACEMMJIAEoAgAiAigCACEAIAIgAEEBazYCACAAQQFGBEAgASgCABAwCwswACAAIAEgAhDsCCABKAIAIgIoAgAhACACIABBAWs2AgAgAEEBRgRAIAEoAgAQMAsLMgEBfyABKAIEIgIgASgCDEcEQCABIAJBsAFqNgIEIAAgAkGwAfwKAAAPCyAAQX42AnALKQAgAQRAA0AgABCBBSAAQcgBahCHBCAAQegBaiEAIAFBAWsiAQ0ACwsLKQEBfyMAQRBrIgMkACADIAAQ6wwgAyABIAIQ1BEgABCICCADQRBqJAALn5sBAjp/CX4jAEEQayI7JAAgASEpIAIhHyMAQbAIayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACIgBEAg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RQ0AIAMoAvgCIAMoAvACRg0AIANBiANqIQlBAAwBCyADQagEaiEJIAELIQAgCSAANgIAIAFB8bicDk8NDQJAQQMgASABQQNNG0EBaiIFQcgAbCIARQRAQQghCUEAIQUMAQsgABCQASIJRQ0mC0HIACEIIAkgA0GQAWpByAD8CgAAQQEhACADQQE2AsAFIAMgCTYCvAUgAyAFNgK4BSADIAMoAvwCNgLYBCADIAMpAvQCNwPQBCADIAMpAuwCNwPIBCADIAMpAuQCNwPABCADIAMpAtwCNwO4BCADIAMpAtQCNwOwBCADIAMpAswCNwOoBANAIANBiANqIANBqARqEPkBIAMoApgDQX9HBEAgAygCuAUgAEYEQCADKAKoBAR/IAMoArQEIAMoAqwEa0HIAG4FQQALIAMoArgEBH8gAygCxAQgAygCvARrQcgAbgVBAAtqIQICfwJAIAMoAsgERQ0AIAMoAtQEIAMoAswERg0AIANBiAVqIQ9BAAwBCyADQegEaiEPIAILIQEgDyABNgIAIANBuAVqIAAgAkEBakEIQcgAELMRIAMoArwFIQkLIAggCWogA0GIA2pByAD8CgAAIAMgAEEBaiIANgLABSAIQcgAaiEIDAELCyADQagEahDcBiADKAK4BQwBCyADQcwCahDcBkEIIQlBACEAQQALIQIgHSANQQxsaiIBIAA2AgggASAJNgIEIAEgAjYCACAaIA1BAWoiDUcNAAsgHSAmaiE5IAMCfkHQ8MkALQAABEBByPDJACkDACE+QcDwyQApAwAMAQsgA0GIA2oQuxFB0PDJAEEBOgAAQcjwyQAgAykDkAMiPjcDACADKQOIAwsiPTcDgAJBACEAQcDwyQAgPUIBfDcDACADIDk2AuwBIAMgHTYC6AEgA0EANgK8ASADQQA2ApABIAMgPjcDiAIgA0GQqckAKQMANwPwASADQZipyQApAwA3A/gBIANBzAJqIANBkAFqENANAn8gAygCzAJBf0cEQEEBIQhBASEJIAMoApABQQFGBEAgAygCtAEiAEUgAygCuAEgAEZyIQkgAygClAEEfyADKAKgASADKAKYAWtBDG4FQQALIAMoAqQBBH8gAygCsAEgAygCqAFrQQxuBUEAC2ohAAtBACENIAMoArwBQQFGBEAgAygCwAEEfyADKALMASADKALEAWtBDG4FQQALIAMoAtABBH8gAygC3AEgAygC1AFrQQxuBUEAC2pBACADKALgASIBRSADKALkASABRnIiCBshDQsCfwJAIAMoAugBIgEEQCADKALsASABRiAIcSAJcQ0BIANBiANqIQhBAAwCCyAIIAlxQQFGDQAgA0GIA2ohCEEADAELIANBqARqIQggACANagshACAIIAA2AgBBMBCQASIJRQ0jIAkgAygC1AI2AgggCSADKQLMAjcCACADQQE2AsAFIAMgCTYCvAUgA0EENgK4BSADQYgDaiADQZABakGAAfwKAABBDCEAQQEhJwNAIANBqARqIANBiANqENANIAMoAqgEQX9HBEAgAygCuAUgJ0YEQEEBIQlBACEFQQAhD0EBIQ1BACEIIAMoAogDQQFGBEAgAygCrAMiAUUgAygCsAMgAUZyIQ0gAygCjAMEfyADKAKYAyADKAKQA2tBDG4FQQALIAMoApwDBH8gAygCqAMgAygCoANrQQxuBUEAC2oiDyEICyADKAK0A0EBRgRAIAMoArgDBH8gAygCxAMgAygCvANrQQxuBUEACyADKALIAwR/IAMoAtQDIAMoAswDa0EMbgVBAAtqIgJBACADKALYAyIBRSADKALcAyABRnIiCRshBSACIAhyIQgLAn8CQCADKALgAyIBBEAgAygC5AMgAUYgCXEgDXENAUEAIQkgA0GIBWoMAgsgCSANcUEBRg0AQQAhCSADQYgFagwBCyAFIA9qIQkgA0HoBGoLIAk2AgAgA0G4BWogJ0EBQQIgAygC9AMbQQEgCBtBBEEMELMRIAMoArwFIQkLIAAgCWoiASADKAKwBDYCCCABIAMpAqgENwIAIAMgJ0EBaiInNgLABSAAQQxqIQAMAQsLIANBiANqEIkMIAMoArwFITogAygCuAUMAQsgA0GQAWoQiQxBBCE6QQALISsgA0GIA2ogECgCBCAQKAIIQeT+xwBBCBDHBSADQRhqIAMoAowDIgYgAygCkAMQtAYCQCADKAIcIgFFBEBBASEIDAELIAMoAhghACABEJABIghFDSQgAUUNACAIIAAgAfwKAAALIANBfzYC8AIgAyABNgLUAiADIAg2AtACIAMgATYCzAIgA0F/NgL8AiADQgQ3AugCIANCADcC4AIgA0KAgICAgAE3AtgCIAMoAogDIgIEQCAGQQRrKAIAIgBB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AnZBAnFqIQYgAUUgEHIhEAwBCyADIAJB/wFxIgNqIQYgASADaiEBCyAGLQAAIgINAAsgECABQRBJcQ0CAkAgAUEBdCICQQBOBEAgAkUNBCACEJABIgZFDQEMBQsQnhUACwwkCyABIANB7LbEABCFEwALIAEgA0HstsQAEIUTAAtBASEGQQAhAgtBACEDIAtBADYCmAEgCyAGNgKUASALIAI2ApABQcn7wQAhBkEXIQIDQCAGQQFqIQECQAJAAkAgAsBBAEgEQCACQf8BcSIQQYABRg0BIBBBwAFHDQIgC0HQq8IANgLUASALQqCAgIAGNwLYASALQYABaiADQQN0aigCBCEGIAsgC0GQAWo2AtABIAtB4ABqIAtB0AFqIAYRAQANCCADQQFqIQMgASEGDAMLIAJB/wFxIgIgCygCkAEgCygCmAEiEGtLBEAgC0GQAWogECACEM4RIAsoApgBIRALIAIEQCALKAKUASAQaiABIAL8CgAACyABIAJqIQYgCyACIBBqNgKYAQwCCyAGQQNqIRACQAJAIAYvAAEiAiALKAKQASALKAKYASIBa0sEQCALQZABaiABIAIQzhEgCygCmAEhAQwBCyACRQ0BCyACRQ0AIAsoApQBIAFqIBAgAvwKAAALIAIgEGohBiALIAEgAmo2ApgBDAELQaCAgIAGIRAgAkEBcQRAIAYoAAEhECAGQQVqIQELQQAhCgJAIAJBAnFFBEBBACEVDAELIAEvAAAhFSABQQJqIQELIAJBBHEEQCABLwAAIQogAUECaiEBCyACQQhxBEAgAS8AACEDIAFBAmohAQsgASEGIAsgCjsB3gEgCyAVOwHcASALIBA2AtgBIAtB0KvCADYC1AEgC0GAAWogA0EDdGooAgQhASALIAtBkAFqNgLQASALQeAAaiALQdABaiABEQEADQUgA0EBaiEDCyAGLQAAIgINAAsgCyALKAKYATYCsAEgCyALKQKQATcDqAEgJSALKAJ4NgIIICUgCykDcDcCACAaKAIIIgEgGigCAEYEQCAaEL0SCyAaIAFBAWo2AgggGigCBCABQRhsaiIBIAspA6gBNwIAIAEgCykDsAE3AgggASALKQO4ATcCECAMDQALIAhBfzYCBCAIIBsEfyAbQQlqIgEEQCASQf8BIAH8CwALIBsgG0EBakEDdkEHbCAbQQhJGwVB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ACADLQARIgJBwQBrQf8BcUEaSRsgAnJB/wFxQe8ARw0AQSBBACADLQASIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfUARw0AQSBBACADLQATIgJBwQBrQf8BcUEaSRsgAnJB/wFxQe4ARw0AQSBBACADLQAUIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfQARw0AQoCAASFNDBQLQSBBACADLQAAIgJBwQBrQf8BcUEaSRsgAnJB/wFxQe8ARw0AQSBBACADLQABIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfIARw0AQSBBACADLQACIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeQARw0AQSBBACADLQADIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeUARw0AQSBBACADLQAEIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfIARw0AQSBBACADLQAFIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeIARw0AQSBBACADLQAGIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfkARw0AQSBBACADLQAHIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeEARw0AQSBBACADLQAIIgJBwQBrQf8BcUEaSRsgAnJB/wFxQecARw0AQSBBACADLQAJIgJBwQBrQf8BcUEaSRsgAnJB/wFxQecARw0AQSBBACADLQAKIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfIARw0AQSBBACADLQALIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeUARw0AQSBBACADLQAMIgJBwQBrQf8BcUEaSRsgAnJB/wFxQecARw0AQSBBACADLQANIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeEARw0AQSBBACADLQAOIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfQARw0AQSBBACADLQAPIgJBwQBrQf8BcUEaSRsgAnJB/wFxQeUARw0AQSBBACADLQAQIgJBwQBrQf8BcUEaSRsgAnJB/wFxQecARw0AQSBBACADLQARIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfIARw0AQSBBACADLQASIgJBwQBrQf8BcUEaSRsgAnJB/wFxQe8ARw0AQSBBACADLQATIgJBwQBrQf8BcUEaSRsgAnJB/wFxQfUARw0AQSBBACADLQAUIgJBwQBrQf8BcUEaSRsgAnJB/wFx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iCFOIGCnIQ0gEUHYBmohDiARQcwGaiEKIBFBmAZqIQ8gEUEANgLUByARIAU2AtAHIBEgAzYCzAcgBygCoAIhBCAHKAKcAiEDIBFBADYCuAggESADNgKwCCARQQA2AqAIIBFBADYCkAggESAINgKMCCARQQA2AogIIBEgAzYCgAggEUEANgLwByARQQA2AuAHIBEgCDYC3AcgESARQcgGaiIINgLYByARIAMgBEEkbGoiAzYCtAggESADNgKECCARQZAIaiEMIBFB3AdqIRAgASgCwAEhEgJAA0ACQCARQcAIaiAQEPgCIBEoAsAIRQRAIBEoAowIIgFFDQEgEUGoB2ogDCABEPkCIBEoAqgHRQ0BIBEgESgCsAc2AsgIIBEgESkCqAc3A8AICyARKALYBygCACIDKAIAIQEgAyABQQFqNgIAIAFBAEgNESARKALICCEGIBEoAsQIIQIgAyADKAIAIgFBAWo2AgAgESAGNgLIByARIAI2AsQHIBEgAzYCwAcgAUEASA0RQQwQkAEiB0UNAiAHIAY2AgggByACNgIEIAcgAzYCACARKALUByIEIBEoAswHRgRAIBFBzAdqEJYSCyARKALQByIBIARBA3RqIgVBjPTHADYCBCAFIAc2AgAgAyADKAIAIgdBAWo2AgAgESAEQQFqIgU2AtQHIAdBAEgNEUEMEJABIgdFDRMgByAGNgIIIAcgAjYCBCAHIAM2AgAgESgCzAcgBUYEQCARQcwHahCWEiARKALQByEBCyABIAVBA3RqIgVBpPTHADYCBCAFIAc2AgAgAyADKAIAIgdBAWo2AgAgESAEQQJqIgU2AtQHIAdBAEgNEUEMEJABIgdFDRMgByAGNgIIIAcgAjYCBCAHIAM2AgAgESgCzAcgBUYEQCARQcwHahCWEiARKALQByEBCyABIAVBA3RqIgFBvPTHADYCBCABIAc2AgAgESgCwAciBigCACEBIAYgAUEBajYCACARIARBA2oiBTYC1AcgAUEASA0RIBEoAsgHIQIgESgCxAchA0EMEJABIgdFDRMgByACNgIIIAcgAzYCBCAHIAY2AgAgESgCzAcgBUYEQCARQcwHahCWEgsgESgC0AciASAFQQN0aiIFQdT0xwA2AgQgBSAHNgIAIAYgBigCACIHQQFqNgIAIBEgBEEEaiIFNgLUByAHQQBIDRFBDBCQASIHRQ0TIAcgAjYCCCAHIAM2AgQgByAGNgIAIBEoAswHIAVGBEAgEUHMB2oQlhIgESgC0AchAQsgASAFQQN0aiIFQez0xwA2AgQgBSAHNgIAIBEgBEEFaiIFNgLUByARQcAHahDSCgRAIAYgBigCACIHQQFqNgIAIAdBAEgNEkEMEJABIgdFDRQgByACNgIIIAcgAzYCBCAHIAY2AgAgESgCzAcgBUYEQCARQcwHahCWEiARKALQByEBCyABIAVBA3RqIgFBhPXHADYCBCABIAc2AgAgESgCwAciBigCACEBIAYgAUEBajYCACARIARBBmoiBTYC1AcgAUEASA0SIBEoAsgHIQIgESgCxAchA0EMEJABIgdFDRQgByACNgIIIAcgAzYCBCAHIAY2AgAgESgCzAcgBUYEQCARQcwHahCWEgsgESgC0AciASAFQQN0aiIFQZz1xwA2AgQgBSAHNgIAIBEgBEEHaiIFNgLUBwsgFCASEQcARQRAIAYgBigCACIBQQFrNgIAIAFBAUcNAiARKALABxAwDAILIAYgBigCACIEQQFqNgIAIARBAEgNEUEMEJABIgRFDRMgBCACNgIIIAQgAzYCBCAEIAY2AgAgESgCzAcgBUYEQCARQcwHahCWEiARKALQByEBCyABIAVBA3RqIgFBtPXHADYCBCABIAQ2AgAgESAFQQFqIgM2AtQHQQwQkAEiAUUNEyABIBEoAsgHNgIIIAEgESkCwAc3AgAgESgCzAcgA0YEQCARQcwHahCWEgsgESgC0AcgA0EDdGoiA0HM9ccANgIEIAMgATYCACARIAVBAmo2AtQHDAELCyARIBEpAswHNwOoByARIBEoAtQHNgKwByARKALQBiEBAkAgESgC1AYiBQRAIAEhBgNAIAYoAgAhAyAGQQRqKAIAIgQoAgAiAgRAIAMgAhEDAAsgBCgCBCIEBEAgA0EEaygCACIHQXhxIQIgAkEEQQggB0EDcSIHGyAEakkNAyAHQQBHIAIgBEEnaktxDRggAxC8BQsgBkEIaiEGIAVBAWsiBQ0ACwsCQCARKALMBiIEBEAgAUEEaygCACIGQXhxIQMgAyAEQQN0IgRBBEEIIAZBA3EiBhtqSQ0BIAZBAEcgAyAEQSdqS3ENFyABELwFCyAKIBEoArAHNgIIIAogESkDqAc3AgAgESgCyAYiBCgCSCIDQQF0IgFB/////wFLDQ8gA0EEdCIGQf3///8HTw0PQQAhA0EEIQICQCAGBEAgBhCQASICRQ0BIAEhAwsgEUEANgLUByARIAI2AtAHIBEgAzYCzAcgBCgCoAIhAyAEKAKcAiEBIBFBADYCuAggESABNgKwCCARQQA2AqAIIBFBADYCkAggESAEQQhqIgQ2AowIIBFBADYCiAggESABNgKACCARQQA2AvAHIBFBADYC4AcgESAENgLcByARIAg2AtgHIBEgASADQSRsaiIBNgK0CCARIAE2AoQIIBFBkAhqIQggEUHcB2ohDANAIBFBwAhqIAwQ+AICQAJAAkACQAJAAkAgESgCwAhFBEAgESgCjAgiAUUNASARQagHaiAIIAEQ+QIgESgCqAdFDQEgESARKAKwBzYCyAggESARKQKoBzcDwAgLIBEoAtgHKAIAIgMoAgAhASADIAFBAWo2AgAgAUEASA0ZIBEoAsQIIQQgESARKALICCIGNgKwByARIAM2AqgHIANBoAJqKAIAIQEgESAENgKsByABIARNDQEgA0GcAmooAgAgBEEkbGoiAUEgaigCACICIAZNDQIgAUEcaigCACAGQdQAbGoiASgCAEGCgICAeEcNAyABLQBMDQQgEUGoB2oQ5gkEQCADIAMoAgAiAUEBajYCACABQQBIDRpBDBCQASIHRQ0cIAcgBjYCCCAHIAQ2AgQgByADNgIAIBEoAtQHIgIgESgCzAdGBEAgEUHMB2oQlhILIBEoAtAHIgEgAkEDdGoiBUGs9scANgIEIAUgBzYCACADIAMoAgAiB0EBajYCACARIAJBAWoiBTYC1AcgB0EASA0aQQwQkAEiB0UNHCAHIAY2AgggByAENgIEIAcgAzYCACARKALMByAFRgRAIBFBzAdqEJYSIBEoAtAHIQELIAEgBUEDdGoiBUHE9scANgIEIAUgBzYCACADIAMoAgAiB0EBajYCACARIAJBAmoiBTYC1AcgB0EASA0aQQwQkAEiB0UNHCAHIAY2AgggByAENgIEIAcgAzYCACARKALMByAFRgRAIBFBzAdqEJYSIBEoAtAHIQELIAEgBUEDdGoiAUHc9scANgIEIAEgBzYCACADIAMoAgAiAUEBajYCACARIAJBA2oiBzYC1AcgAUEASA0aQQwQkAEiAUUNHCABIAY2AgggASAENgIEIAEgAzYCACARKALMByAHRgRAIBFBzAdqEJYSCyARKALQByAHQQN0aiIHQfT2xwA2AgQgByABNgIAIBEgAkEEajYC1AcLIAMgAygCACIBQQFqNgIAIAFBAEgNGUEMEJABIgdFDRsgByAGNgIIIAcgBDYCBCAHIAM2AgAgESgC1AciAiARKALMB0YEQCARQcwHahCWEgsgESgC0AciASACQQN0aiIFQYz3xwA2AgQgBSAHNgIAIAMgAygCACIHQQFqNgIAIBEgAkEBaiIFNgLUByAHQQBIDRlBDBCQASIHRQ0bIAcgBjYCCCAHIAQ2AgQgByADNgIAIBEoAswHIAVGBEAgEUHMB2oQlhIgESgC0AchAQsgASAFQQN0aiIFQaT3xwA2AgQgBSAHNgIAIAMgAygCACIHQQFqNgIAIBEgAkECaiIFNgLUByAHQQBIDRlBDBCQASIHRQ0bIAcgBjYCCCAHIAQ2AgQgByADNgIAIBEoAswHIAVGBEAgEUHMB2oQlhIgESgC0AchAQsgASAFQQN0aiIBQbz3xwA2AgQgASAHNgIAIAMgAygCACIBQQFqNgIAIBEgAkEDaiIFNgLUByABQQBIDRlBDBCQASIHRQ0bIAcgBjYCCCAHIAQ2AgQgByADNgIAIBEoAswHIAVGBEAgEUHMB2oQlhILIBEoAtAHIgEgBUEDdGoiBUHU98cANgIEIAUgBzYCACADIAMoAgAiB0EBajYCACARIAJBBGoiBTYC1AcgB0EASA0ZQQwQkAEiB0UNGyAHIAY2AgggByAENgIEIAcgAzYCACARKALMByAFRgRAIBFBzAdqEJYSIBEoAtAHIQELIAEgBUEDdGoiAUHs98cANgIEIAEgBzYCACADIAMoAgAiAUEBazYCACARIAJBBWo2AtQHDAULIBEtAOUGDRQMFQsgBCABQcy7xAAQhRMACyAGIAJBzLvEABCFEwALQcy7xAAQnRUACyADIAMoAgAiAUEBazYCAAsgAUEBRw0AIAMQMAwACwALDBQLDBQLDBMLDBALDBALDA4LIBFBQGtBmLHEAEGcscQAEMQTAAsMDwsMDQsMCQsMCwsMCAtBiLDJAEErIBFBzwhqQfCqwgBBoKvCABDaEgALIBEgKTYC+AUgEUFAayEDIwBBIGsiASQAIAFBADYCCCABQoCAgIAQNwIAIAFBuKrCADYCECABQqCAgIAGNwIUIAEgATYCDCARQfgFaiABQQxqELkRBEBB8LXJAEE3IAFBH2pB0KrCAEGotskAENoSAAsgAyABKAIINgIIIAMgASkCADcCACABQSBqJAAgESgCRCARKAJIEL4VAAsgESgCwAYiAiARKALEBiIHKAK8AREHAARAIBEoAswHIgMgESgC1AciBEYEQCARQcwHahCWEiARKALMByEDCyARKALQByIBIARBA3RqIgZB5PXHADYCBCAGQQE2AgAgESAEQQFqIgY2AtQHIAMgBkYEQCARQcwHahCWEiARKALQByEBCyABIAZBA3RqIgFB/PXHADYCBCABQQE2AgAgESAEQQJqNgLUBwsgAiAHKALAAREHAEUNACARKALUByIBIBEoAswHRgRAIBFBzAdqEJYSCyARKALQByABQQN0aiIDQZT2xwA2AgQgA0EBNgIAIBEgAUEBajYC1AcLIBEgESgC1Ac2AuAHIBEgESkCzAc3A9gHIBEoAtwGIQEgESgC4AYiBQRAIAEhBgNAIAYoAgAhAyAGQQRqKAIAIgQoAgAiAgRAIAMgAhEDAAsgBCgCBCIEBEAgA0EEaygCACIHQXhxIQIgAkEEQQggB0EDcSIHGyAEakkNCSAHQQBHIAIgBEEnaktxDQogAxC8BQsgBkEIaiEGIAVBAWsiBQ0ACwsgESgC2AYiBARAIAFBBGsoAgAiBkF4cSEDIAMgBEEDdCIEQQRBCCAGQQNxIgYbakkNByAGQQBHIAMgBEEnaktxDQggARC8BQsgDiARKALgBzYCCCAOIBEpA9gHNwIAIBEiAwJ+QdDwyQAtAAAEQEHI8MkAKQMAIVFBwPDJACkDAAwBCyADQdgHahC7EUHQ8MkAQQE6AABByPDJACADKQPgByJRNwMAIAMpA9gHCyJNNwP4BkHA8MkAIE1CAnw3AwAgAyBRNwOAByADIFE3A6AHIANBmKnJACkDACJPNwPwBiADQZCpyQApAwAiUTcD6AYgAyBRNwOIByADIE83A5AHIAMgTUIBfDcDmAcCQCADKALUBiIBRQ0AIAMoAtAGIgYgAUEDdGohCCADQbAIaiEMIANB+AdqIRAgA0GoCGohEiADQYQIaiEJQQAhBAJAA0AgA0HYB2ogBigCACADQfgFaiAGQQRqKAIAKAIUEQQAIAMoAtgHIgFBAkcEQCADIAMtAOQHOgC4ByADIAE2AqwHIANBADoAqAcgAyADKALgBzYCtAcgAyADKALcBzYCsAcgA0HoBmogA0GoB2ogBBDuBgsgAygC8AchBSADKALsByEHAkAgAygC6AciAkF/RwRAIAchAQwBCyAFQQBIDQQgBUUEQEEBIQFBACECQQAhBQwBCyAFEJABIgFFDQIgBQRAIAEgByAF/AoAAAsgBSECCyADIAU2ArQHIAMgATYCsAcgAyACNgKsByADQQA6AKgHIANBiAdqIANBqAdqIAQQzwgCQAJAAkAgAy0A9AcOAgABAgsgEBDgCAwBCyAJEMICIAMoAqgIIgIoAgAhASACIAFBAWs2AgAgAUEBRw0AIBIQtggLAkAgAygCsAgiAUUNACABIAEoAgAiAUEBazYCACABQQFHDQAgDBDLBAsgBEEBaiEEIAggBkEIaiIGRw0ACwwBCwwECwJAIAMoAuAGIgFFDQAgAygC3AYiBiABQQN0aiEIIANBsAhqIQwgA0H4B2ohECADQagIaiESIANBhAhqIQlBACEEA0AgA0HYB2ogBigCACADQfgFaiAGQQRqKAIAKAIUEQQAIAMoAtgHIgFBAkcEQCADIAMtAOQHOgC4ByADIAE2AqwHIANBAToAqAcgAyADKALgBzYCtAcgAyADKALcBzYCsAcgA0HoBmogA0GoB2ogBBDuBgsgAygC8AchBSADKALsByEHAkACQCADKALoByICQX9HBEAgByEBDAELIAVBAEgNBCAFRQRAQQEhAUEAIQJBACEFDAELIAUQkAEiAUUNASAFBEAgASAHIAX8CgAACyAFIQILIAMgBTYCtAcgAyABNgKwByADIAI2AqwHIANBAToAqAcgA0GIB2ogA0GoB2ogBBDPCAJAAkACQCADLQD0Bw4CAAECCyAQEOAIDAELIAkQwgIgAygCqAgiAigCACEBIAIgAUEBazYCACABQQFHDQAgEhC2CAsCQCADKAKwCCIBRQ0AIAEgASgCACIBQQFrNgIAIAFBAUcNACAMEMsECyAEQQFqIQQgCCAGQQhqIgZHDQEMAgsLDAQLAkAgAygC/AUiAUUNACABIAFBGGwiAWpBIWoiBEUNACADKAL4BSABa0EYayAEENkSCyADIAMpA4AHNwOQBiADIAMpA/gGNwOIBiADIAMpA/AGNwOABiADIAMpA+gGNwP4BQJAIAMoApwGIgdFDQAgAygCpAYiAgRAIAMoApgGIgZBCGohBCAGKQMAQn+FQoCBgoSIkKDAgH+DIVcDQCBXUARAA0AgBCIBQQhqIQQgBkGgAWshBiABKQMAQoCBgoSIkKDAgH+DIk1CgIGChIiQoMCAf1ENAAsgTUKAgYKEiJCgwIB/hSFXCyAGIFd6p0EDdkFsbGoiBUEQaygCACIBBEAgBUEMaygCACIIQQRrKAIAIgxBeHEhBSAFQQRBCCAMQQNxIgwbIAFqSQ0KIAxBAEcgBSABQSdqS3ENCyAIELwFCyBXQgF9IFeDIVcgAkEBayICDQALCyAHQRRsQRtqQXhxIgEgB2pBCWoiBEUNACADKAKYBiABayAEENkSCyAPIAMpA4gHNwMAIA8gAykDkAc3AwggDyADKQOYBzcDECAPIAMpA6AHNwMYIAMgAykD+AU3A9gHIAMgAykDgAY3A+AHIAMgAykDiAY3A+gHIAMgAykDkAY3A/AHIAMgAykDmAY3A/gHIAMgAykDoAY3A4AIIAMgAykDqAY3A4gIIAMgAykDsAY3A5AIIAMoAsgGIQYgAygCxAYhAiADKALABiEHIAMpA7gGIU0gAyAKKAIINgKwByADIAopAgA3A6gHIAMgDigCCDYCyAggAyAOKQMANwPACCADLQDmBiEOIAMtAOUGIQogAy0A5AYhBCADIAMpA/AHNwOQBiADIAMpA+gHNwOIBiADIAMpA+AHNwOABiADIAMpA9gHNwP4BSADIAMpA5AINwOwBiADIAMpA4gINwOoBiADIAMpA4AINwOgBiADIAMpA/gHNwOYBkH4ABCQASIBRQ0EIAFCgYCAgBA3AwAgASADKQP4BTcDCCABIAMpA4AGNwMQIAEgAykDiAY3AxggASADKQOQBjcDICABIAMpA5gGNwMoIAEgAykDoAY3AzAgASADKQOoBjcDOCABIAMpA7AGNwNAIAEgBjYCWCABIAI2AlQgASAHNgJQIAEgTTcDSCABIA46AHYgASAKOgB1IAEgAykDqAc3AlwgASADKAKwBzYCZCABIAMpA8AINwNoIAEgAygCyAg2AnAgASBOp0F/c0EBcSAEIARBA0YbOgB0QcjsyQAtAABBA0cEQCADQQE6ANgHIANB2AdqIQQCQAJAAkACQAJAAkBByOzJAC0AAEEBaw4DAgEFAAtByOzJAEECOgAAIAQtAAAgBEEAOgAARQ0CAkBBvPDJACgCAEH/////B3EEQEHk7MkAKAIADQELQezsyQAoAgANBEHI7MkAQQM6AABB8OzJAEEBNgIADAULQfydyQBB6QBBsJ7JABC/EwALQbTrxwBB8QBB8KDCABC/EwALQY+WwgBB1QBB8KDCABC/EwALQbyewgAQnRULAAsLQQYgDSAuQX9GIgQbIgZBAEgNAEEBIQIgBkUiBw0BIAYQkAEiAkUNAyAHDQEgAkGt58QAIDAgBBsgBvwKAAAMAQsQnhUACyAuQQBKBEAgMEEEaygCACIHQXhxIQQgBEEEQQggB0EDcSIHGyAuakkNBSAHQQBHIAQgLkEnaktxDQYgMBC8BQtBKBCQASIEBEAgBCABNgIkIAQgTjwAICAEIAY2AhwgBCACNgIYIAQgBjYCFCAEICk2AhAgBCAqNgIMIARBADYCCCAEQoGAgIAQNwIAIDZCADcCBCA2IARBCGo2AgAgA0HQCGokAAwHCwwCCwALQQEQpxQAC0G48MkAQQE6AAAAC0EEEKcUAAtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALIDYoAgAgNigCBCA2KAIIIDZBEGokAAslACAAKAIAIAAoAgQiACgCCEEBa0F4cWpBCGogASAAKAIYEQEACy4AIAEoAgBBzPnFAEHJ+cUAIAAoAgAtAAAiABtBAkEDIAAbIAEoAgQoAgwRAAALKQECfyAAKAIAIgIoAgAhASACIAFBAWs2AgAgAUEBRgRAIAAoAgAQMAsLLgAgASgCAEG4/ccAQfCAxwAgACgCAC0AACIAG0EFQQQgABsgASgCBCgCDBEAAAspAQJ/IAAoAhAiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCEBAwCwspAQJ/IAAoAgQiAigCACEBIAIgAUEBazYCACABQQFGBEAgACgCBBAwCwsuACABKAIAQfCXyQBBlpHJACAAKAIALQAAIgAbQQRBBiAAGyABKAIEKAIMEQAACycBAX8gACgCACICBEAgASgCACACIAAoAgQgASgCBCgCDBEAAA8LAAsiAEEHIQAgAkEERgR/QQdBACABKAAAQdXqpaMGRxsFQQcLCywAIABBAXEEQEGYpckAQbUBQfiewgAQvxMAC0HQpMkAQZEBQfiewgAQvxMACyMBAX8gAUUEQEEADwsgACgCACECIABBADYCACABIAJBAEdrCysAIAEoAgBB+f/GAEHw/8YAIAAtAAAiABtBCkEJIAAbIAEoAgQoAgwRAAALJwECfyAAKAIAIgIoAgAhASACIAFBAWs2AgAgAUEBRgRAIAAQtggLCyYAIABBATYCBCAAIAEoAgwgASgCBGtBsAFuIgE2AgggACABNgIACwMAAAspACABKAIAIAAtAABoQQJ0IgAoAsC/SSAAKAKsv0kgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgC2MlJIAAoAsTJSSABKAIEKAIMEQAACysAIAEoAgAgACgCAC0AAEECdCIAKAKkzUkgACgCjM1JIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoArTTSSAAKAKc00kgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgCoNRJIAAoAozUSSABKAIEKAIMEQAACysAIAEoAgAgACgCAC0AAEECdCIAKAL01UkgACgCxNVJIAEoAgQoAgwRAAALKwAgASgCACAAKAIALQAAQQJ0IgAoArDWSSAAKAKk1kkgASgCBCgCDBEAAAsrACABKAIAIAAoAgAtAABBAnQiACgCwN1JIAAoAszbSSABKAIEKAIMEQAACwMAAAsjACAARQRAQYigxABBMhC+FQALIAAgAiADIAQgASgCEBEFAAsDAAALAwAACwMAAAsnACAAKAIALQAARQRAIAFBqrLIAEEFEJ0EDwsgAUGvssgAQQQQnQQLHwEBfyAAIAAoAgAiAUEBazYCACABQQFGBEAgABAwCwsoACABKAIAIAAtAABBAnQiACgCkNdJIAAoArzWSSABKAIEKAIMEQAACyQAIABBAXFFBEAgAUGqssgAQQUQnQQPCyABQa+yyABBBBCdBAsoACABKAIAIAAtAABBAnQiACgC2NlJIAAoAuTXSSABKAIEKAIMEQAACyQAIAAtAABFBEAgAUGqssgAQQUQnQQPCyABQa+yyABBBBCdBAshACAARQRAQYigxABBMhC+FQALIAAgAiADIAEoAhARBAALHwAgAEEBNgIEIAAgASgCAEEARyIBNgIIIAAgATYCAAsnACABKAIAQb3WxgBBrtbGACAAKAIAKAIAG0EPIAEoAgQoAgwRAAALHAAgAC0AAEH/AUYEQCAAQQhqEI4RDwsgABDmCAsdACABKAIABEAgAEGgn8kANgIEIAAgATYCAA8LAAsfAQFvIAAlASABJQEgAiUBEAYhAxCGDiIAIAMmASAACx8AIABFBEBBiKDEAEEyEL4VAAsgACACIAEoAhARAQALIQAgASgCACAAKAIAIgAoAgQgACgCCCABKAIEKAIMEQAACyEAIAEoAgAgACgCACIAKAI0IAAoAjggASgCBCgCDBEAAAseAQF/IAAgACgCAEEBayIBNgIAIAFFBEAgABD2DwsLHAAgACgCACIAKAIAIAEgAEEEaigCACgCEBEBAAseACAAKAIAIgAoAgQgACgCCCABKAIAIAEoAgQQvwYLHAEDbyAAJQEgASUBIAEQ0xIgAiUBIAIQ0xIQBAsbAQFvIAAlASABJQEQDCECEIYOIgAgAiYBIAALFgAgAARAQbjwyQBBAToAAAALEJ4VAAsTAEEUQQAgAS0AAEEBRxsgAnFFCx0AIAEgAC0AAEECdCIAKAK8vUkgACgCpL1JEJ0ECxQAIAEtAABBAUYgAkH/AXFBEElyCx0BAX9B4AAQkAEiAEUEQEG48MkAQQE6AAAACyAACxoAIAAQkAEiAEUEQEG48MkAQQE6AAAACyAACxwAIAEoAgAgACgCACAAKAIEIAEoAgQoAgwRAAALGQEBbyAAJQEgARARIQIQhg4iACACJgEgAAsSACAAIAFBAXRBAXIgAhC/EwALFwAgACgCACABIAAoAgRBDGooAgARAQALGQAgACgCBCAAKAIIIAEoAgAgASgCBBC/BgsZACAAKAIAIAAoAgQgASgCACABKAIEEPoKCxkAIAEoAgAgASgCBCAAKAIAIAAoAgQQsQkLFwAgACgCAEEQaiABKAIAIAEoAgQQ2wMLFAAgAEEEQQMgASgCAEEERhs2AgALGQEBfiABKQIAIQIgAUEANgIAIAAgAjcDAAsZACAAKAIAIAAoAgQgASgCACABKAIEEL8GCxcBAW8gACABEAchAhCGDiIAIAImASAACxcBAW8gACABECEhAhCGDiIAIAImASAACxkAIAEoAgBBuLbJAEEFIAEoAgQoAgwRAAALGQAgASgCAEGAocIAQRcgASgCBCgCDBEAAAsZACABKAIAQZehwgBBFCABKAIEKAIMEQAACxkAIAEoAgBBq6HCAEEaIAEoAgQoAgwRAAALGQAgASgCAEHZrcgAQQMgASgCBCgCDBEAAAsZACABKAIAQeCswgBBCyABKAIEKAIMEQAACxwAIABB/OLIACkCADcCCCAAQfTiyAApAgA3AgALFgAgASAAKAIAIgAoAgQgACgCCBCdBAsWACABIAAoAgAiACgCACAAKAIEEJ0ECxwAIABBsKLFACkCADcCCCAAQaiixQApAgA3AgALEgAgACgCAEF/RwRAIAAQ1AgLCxwAIABB9KLFACkCADcCCCAAQeyixQApAgA3AgALFgAgACACKAIINgIIIAAgAikCADcCAAsWACAAIAEoAgg2AgggACABKQIANwIACxwAIABBvIDGACkCADcCCCAAQbSAxgApAgA3AgALEgAgACgCAEF/RwRAIAAQyQILCxIAIAAoAgBBf0cEQCAAEPUFCwsTACAALQAAQf8BRwRAIAAQrwQLCxkAIAEoAgBB+svGAEEbIAEoAgQoAgwRAAALGQAgASgCAEGo0cYAQR8gASgCBCgCDBEAAAsZACABKAIAQcvixgBBHCABKAIEKAIMEQAACxkAIAEoAgBB3eDGAEELIAEoAgQoAgwRAAALGQAgASgCAEHA38YAQQcgASgCBCgCDBEAAAsZACABKAIAQaTZxgBBHyABKAIEKAIMEQAACxkAIAEoAgBBsM7GAEEaIAEoAgQoAgwRAAALGQAgASgCAEGEyMYAQRYgASgCBCgCDBEAAAsZACABKAIAQYDexgBBEiABKAIEKAIMEQAACxkAIAEoAgBBx9zGAEERIAEoAgQoAgwRAAALGQAgASgCAEGs6MYAQRcgASgCBCgCDBEAAAsZACABKAIAQebmxgBBFSABKAIEKAIMEQAACxkAIAEoAgBB8NLGAEEaIAEoAgQoAgwRAAALGQAgASgCAEHM1sYAQRcgASgCBCgCDBEAAAsZACABKAIAQYDlxgBBFCABKAIEKAIMEQAACxkAIAEoAgBB8OPGAEESIAEoAgQoAgwRAAALHAAgAEHw6sYAKQIANwIIIABB6OrGACkCADcCAAscACAAQdDqxgApAgA3AgggAEHI6sYAKQIANwIACxwAIABB4OrGACkCADcCCCAAQdjqxgApAgA3AgALHAAgAEGw6sYAKQIANwIIIABBqOrGACkCADcCAAscACAA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EL8TAAsUACAAKAIAIAEoAgAgASgCBBDZCwsUACAAKAIAIAEgACgCBCgCDBEBAAsPAEEfQQ8gAS0AAEEBRhsLmgQBBn8gASgCACEHIwBBgAFrIgIkACABQQRqIgQoAgAiASgCACEDIAEgA0EBajYCAAJAAkACQAJAIANBAEgNACAEKAIIIQUgBCgCBCEGIAEgASgCACIDQQFqNgIAIANBAEgNAEEYEJABIgNFDQMgAyAHNgIAIANBADYCECADIAQpAgA3AgQgAyAEKAIINgIMQRgQkAEiBA0BDAMLAAsgBEEAOgAUIARBxOTHADYCDCAEIAM2AgggBEKBgICAEDcCACACIAQ2AmwgAkEAOgBoIAIgBTYCXCACIAY2AlggAiABNgJUIAJBADYCTCACQQ86AEggAkF/NgI4IAIgBTYCNCACIAY2AjAgAiABNgIsIAJBADYCKCACQX82AhwgAkEANgIUIAJBADYCDCACQfAAaiACQQxqQQEQnw5B5AAQkAEiA0UNASADQQY6AAQgA0ECNgIAQZABEJABIgFFDQEgAUF+NgIAIAEgAikDcDcDICABIAIoAng2AiggAUEAOwGMASABQQ42AogBIAFBmPDHADYChAEgAUF/NgKAASABQgQ3A3ggAUIBNwNwIAEgAzYCbCABQQE2AmggAUF+NgJIIAFBATsBRCABQQQ2AkAgAUGU8McANgI8IAFCgICAgHA3AjQgAUKAgICAwAA3AiwgAEECNgIIIAAgATYCBCAAQQI2AgAgAkGAAWokAAwACw8LQbjwyQBBAToAAAALFAAgACABKAIAIAEoAgQoAhARAgALFQIBbwF/EAAhABCGDiIBIAAmASABCxUCAW8BfxACIQAQhg4iASAAJgEgAQsVAgFvAX8QAyEAEIYOIgEgACYBIAELEwAgAEEKNgIEIABB1KXFADYCAAsTACAAQQI2AgQgAEHFocIANgIACxMAIABBGjYCBCAAQaCjwgA2AgALEwAgAEEINgIEIABB4KnCADYCAAsRACABIAAoAgAgACgCBBCdBAsRACABIAAoAgQgACgCCBCdBAsTACAAQSg2AgQgAEGM4sgANgIACxMAIABBzOvEADYCBCAAQQE2AgALFAAgAEEANgIIIABCgICAgBA3AgALEwAgAEEFNgIEIABBy7jFADYCAAsUACAAQccANgIEIABBvLnFADYCAAsTACAAQQ42AgQgAEGH0cYANgIACxAAIAAgASgCACACIAMQ7wkLEwAgAEESNgIEIABBjM7GADYCAAsTACAAQRk2AgQgAEH72MYANgIACxMAIABBFTYCBCAAQcPZxgA2AgALEwAgAEEWNgIEIABByNLGADYCAAsTACAAQRg2AgQgAEGo18YANgIACxMAIABBKTYCBCAAQZTKxgA2AgALEwAgAEEeNgIEIABBvMXGADYCAAulBAIDfgZ/AkAgASgCACEBIwBBEGsiByQAAkAgA0EATgRAQQEhCCADRQ0BIAMQkAEiCEUEQEEBEKcUAAsgA0UNASAIIAIgA/wKAAAMAQsQnhUACyAHIAM2AgwgByAINgIIIAcgAzYCBCAHQQE6AAACQAJAAkAgASgCLEUNACABKQMwIAEpAzggBxChCiEEIAEoAiQiCyAEp3EhAiAEQhmIQv8Ag0KBgoSIkKDAgAF+IQYgASgCICEMA0AgAiAMaikAACIFIAaFIgRCgYKEiJCgwIABfSAEQn+Fg0KAgYKEiJCgwIB/gyIEQgBSBEADQAJAIAwgBHqnQQN2IAJqIAtxQWxsaiIJQRRrLQAARQ0AIAMgCUEIaygCAEcNACAIIAlBDGsoAgAgAxCPE0UNBQsgBEIBfSAEgyIEQgBSDQALCyAFIAVCAYaDQoCBgoSIkKDAgH+DQgBSDQEgCkEIaiIKIAJqIAtxIQIMAAsACyAAQX82AgAMAQsgCUEEaygCACICIAEoAmgiCU8EQCACIAlBnPLHABCFEwALIAAgASgCZCACQQN0aiIAKAIAIAEgACgCBCgCFBEEAAsCQAJAIAMEQCAIQQRrKAIAIgFBeHEhACAAQQRBCCABQQNxIgEbIANqSQ0BIAFBAEcgACADQSdqS3ENAiAIELwFCyAHQRBqJAAMAgtB0JzJAEEuQYCdyQAQrxQAC0GQnckAQS5BwJ3JABCvFAALCxMAIABBoJ/JADYCBCAAIAE2AgALEQEBfxCGDiIBIAAlASYBIAELDwBBmO3CAEErIAAQrxQACxIAQezrxwBBI0Gwq8IAEL8TAAsLACABQf8BcUEBRgsQACAAQbiqwgAgASACELEJCxAAIABB0KvCACABIAIQsQkLEAAgAEGg68IAIAEgAhCxCQsPAEHqosYAQTMgABC/EwALEwBBgILEAEGZAUHMgsQAEL8TAAsQACAAQczsxAAgASACELEJCxAAIABBkKLFACABIAIQsQkLDwAgACgCACgCACABEO8OCxAAIABBiKXFACABIAIQsQkLEwBBwJ7JAEHdAEHwnskAEL8TAAsSAEGgq8kAQShBhLrFABCvFAALEwBB0LjFAEG1AUGsucUAEL8TAAsLACABQf8BcUECSQsTAEGIxMUAQeUBQYzFxQAQvxMACxMAQYjExQBB5QFB/MTFABC/EwALDwAgACgCAC8BACABEJIPCxAAIABB/M7FACABIAIQsQkLEAAgAEGg8cUAIAEgAhCxCQsQACAAQdyWxgAgASACELEJCxAAIABB5O3GACABIAIQsQkLEAAgAEGwkMcAIAEgAhCxCQsQACAAQfCHyAAgASACELEJCxAAIABBgJrIACABIAIQsQkLEAAgAEGUrsgAIAEgAhCxCQsQACAAQYjhyAAgASACELEJCxAAIABB4JLJACABIAIQsQkLEAAgAEHgm8kAIAEgAhCxCQsQACAAQeCvyQAgASACELEJCw0AIAAlAUGBASUBEAkLDAAgACUBIAElARAOCwkAIAAgARAeAAsNAEHou8kAQRsQvhUACw4AQYO8yQBBzwAQvhUACwwAIAAoAgAgARD3AQsOACABQbCXxABBGBCdBAsOACABQZCXxABBIBCdBAsMACAAKAIAIAEQyAILDAAgACgCAEEBOgAACwwAIAAoAgAgARDjAgsMACAAKAIAIAEQ7w4LCwAgAEEAIAAQvBALDAAgACgCACABEJMJCwwAIAAoAgAgARCXDgsMACAAKAIAIAEQ/w0LDAAgACgCACABELEDCwwAIAAoAgAgARDRAQsMACAAKAIAIAEQgQgLCwAgACgCACABEG0LDAAgACgCACABEJwDCwwAIAAoAgAgARDbCAsMACAAKAIAIAEQ+wILDAAgACgCACABELIOCwwAIAAgASkCADcDAAsKACAAIAElARAICwkAIABBADYCAAsJACAAQQA2AgALCQAgAEEANgIACwkAIABBADYCAAsJACAAQgE3AwALCQAgAEIENwMACwoAIABBgwg7AQALCQAgAEF/NgIACwkAIABBATYCAAsJACAAQX82AgALCAAgACUBEAULCAAgACUBEAsLCAAgACUBEA0LCAAgACUBEBALCAAgACUBEBQLCAAgACUBEBcLBwAgAhDiCgsHACAAEIsRCwcAIAAQwAcLBwAgABDrCAsNAEK//IP4v//V3/8ACwQAQT8LBABBCwsEAEEBCwYAQoCACAsEAEEECwQAQQELBABBAAsEAEEDCwQAIAELCQBCloSAgIAQCwQAQgALBABBfwsEAEEfCwQAQQ8LBABBAAsEAEEACwQAQQILBAAgAAsEAEECCwIACwIACwIACwu31QmDAgBBhIDAAAu1lgIBAAAAAQAAAIYBAACHAQAABAAAAAQAAACIAQAAUDIwMTlQMjAxNFAyMDEzwMDAAApkZWxldGVNYW55wAAKY3JlYXRlTWFuecAACnVwZGF0ZU1hbnnAAAhmaW5kTWFuecAAB2dyb3VwQnnAAAlmaW5kRmlyc3TAAARMaXN0wAABdMAAwAJUb8AABEVudW3AAAFqwAAKZmluZFVuaXF1ZcAACWFnZ3JlZ2F0ZcAACUFnZ3JlZ2F0ZcAACXVwc2VydE9uZcAACWRlbGV0ZU9uZcAACWNyZWF0ZU9uZcAACXVwZGF0ZU9uZcAADF9hZ2dyX2NvdW50X8AAD2FnZ3Jfc2VsZWN0aW9uX8AAwAFfwAACQEDAAMABQMAADzx1bmtub3duIGhvc3Q+OsAADXVuaXQgdmFyaWFudCDAAjo6wADAATrAATrAAARUaGUgwC9pbmRleCBkZWZpbml0aW9uIHJlZmVycyB0byB0aGUgcmVsYXRpb24gZmllbGRzIMA2LiBJbmRleCBkZWZpbml0aW9ucyBtdXN0IHJlZmVyZW5jZSBvbmx5IHNjYWxhciBmaWVsZHMuwAALVGhlIGZpZWxkIGDAYGAgaXMgYSByZWxhdGlvbiBmaWVsZCBhbmQgY2Fubm90IGJlIG1hcmtlZCB3aXRoIGB1bmlxdWVgLiBPbmx5IHNjYWxhciBmaWVsZHMgY2FuIGJlIG1hZGUgdW5pcXVlLsAAwAEuwAEuwAANTmF0aXZlIHR5cGUgYMAWYCBjYW5ub3QgYmUgdW5pcXVlIGluIMABLsAAN1lvdSBjYW5ub3QgZGVmaW5lIGFuIGluZGV4IG9uIGZpZWxkcyB3aXRoIG5hdGl2ZSB0eXBlIGDABWAgb2YgwAEuwAADMDAtwAEtwAEtwAABJcAABkBsaW5rJMAAASTAABJFeHRlcm5hbCBlcnJvciBpZCPAACdleHBlY3RlZCBvbmx5IG9uZSBTZWxlY3Rpb25SZXN1bHQsIGdvdCDAADFTZWxlY3Rpb25SZXN1bHQgdmFsdWUgbXVzdCBiZSBhIHBsYWNlaG9sZGVyLCBnb3QgwAAJYXJndW1lbnQgwBsgcmVxdWlyZXMgdW5rbm93biBhcmd1bWVudCDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAVYnl0ZSByYW5nZSBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwABfaW52YWxpZCBjaGFyYWN0ZXI6IGV4cGVjdGVkIGFuIG9wdGlvbmFsIHByZWZpeCBvZiBgdXJuOnV1aWQ6YCBmb2xsb3dlZCBieSBbMC05YS1mQS1GLV0sIGZvdW5kIGDABWAgYXQgwAAYRGF0YWJhc2UgYWxyZWFkeSBleGlzdHMgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhlIGluZGV4IGlzIMAAwAQgYXMgwADABCBvciDAAB9BdXRoZW50aWNhdGlvbiBmYWlsZWQgZm9yIHVzZXIgwADACSBhdCBsaW5lIMAIIGNvbHVtbiDAABhVbmFibGUgdG8gcmVzb2x2ZSBmaWVsZCDALSB0byBhIGZpZWxkIG9yIHNldCBvZiBzY2FsYXIgZmllbGRzIG9uIG1vZGVsIMAAGFVuYWJsZSB0byByZXNvbHZlIGZpZWxkIMAoIHRvIGEgZmllbGQgb3IgYSBzZXQgb2YgZmllbGRzIG9uIG1vZGVsIMAAEXN0YXJ0IGJ5dGUgaW5kZXggwCcgaXMgb3V0IG9mIGJvdW5kcyBmb3Igc3RyaW5nIG9mIGxlbmd0aCDAAA9lbmQgYnl0ZSBpbmRleCDAJyBpcyBvdXQgb2YgYm91bmRzIGZvciBzdHJpbmcgb2YgbGVuZ3RoIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAAdzdHJpbmcgwAADSWYgwAAaQWNjZXNzIGRlbmllZCB0byBkYXRhYmFzZSDAAMAJIGluIHR5cGUgwAA8aW52YWxpZCBsZW5ndGg6IGV4cGVjdGVkIGxlbmd0aCAzMiBmb3Igc2ltcGxlIGZvcm1hdCwgZm91bmQgwAApaW52YWxpZCBsZW5ndGg6IGV4cGVjdGVkIDE2IGJ5dGVzLCBmb3VuZCDAACdpbnZhbGlkIGdyb3VwIGNvdW50OiBleHBlY3RlZCA1LCBmb3VuZCDAAB5pbnZhbGlkIGdyb3VwIGxlbmd0aCBpbiBncm91cCDACzogZXhwZWN0ZWQgwAgsIGZvdW5kIMAAHWludmFsaWQgdHlwZTogbnVsbCwgZXhwZWN0ZWQgwAARdW5rbm93biB2YXJpYW50IGDADGAsIGV4cGVjdGVkIMAAD2ludmFsaWQgbGVuZ3RoIMALLCBleHBlY3RlZCDAAA9pbnZhbGlkIHZhbHVlOiDACywgZXhwZWN0ZWQgwAAOaW52YWxpZCB0eXBlOiDACywgZXhwZWN0ZWQgwAAhSW52YWxpZCBpbnB1dCBwcm92aWRlZCB0byBxdWVyeTogwAAXQWdncmVnYXRlUmVjb3Jkc1F1ZXJ5OiDAAApRdWVyeVJhdzogwAAMRXhlY3V0ZVJhdzogwAAdSW52YWxpZCBzY2FsYXIgZmlsdGVyIGlucHV0OiDAAB9JbnZhbGlkIHJlbGF0aW9uIGZpbHRlciBpbnB1dDogwAAgSW52YWxpZCBjb21wb3NpdGUgZmlsdGVyIGlucHV0OiDAABlEYXRhYmFzZSBkb2VzIG5vdCBleGlzdDogwAAtV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4gRXhwZWN0ZWQ6IDEsIGdvdDogwAAQYXNzZXJ0aW9uIGBsZWZ0IMAXIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiDACQogcmlnaHQ6IMAAEGFzc2VydGlvbiBgbGVmdCDAECByaWdodGAgZmFpbGVkOiDACQogIGxlZnQ6IMAJCiByaWdodDogwAAYSW52YWxpZCBvcGVyYXRvciBjbGFzczogwAAgSW52YWxpZCByZWxhdGlvbiBtb2RlIHNldHRpbmc6ICLAFSIuIFN1cHBvcnRlZCB2YWx1ZXM6IMAAE0RlbGV0ZU1hbnlSZWNvcmRzOiDAADFFcnJvciBhY2Nlc3NpbmcgcmVzdWx0IHNldCwgaW5kZXggb3V0IG9mIGJvdW5kczogwABrVGhlIGFyZ3VtZW50IGZpZWxkcyBtdXN0IHJlZmVyIG9ubHkgdG8gc2NhbGFyIGZpZWxkcy4gQnV0IGl0IGlzIHJlZmVyZW5jaW5nIHRoZSBmb2xsb3dpbmcgcmVsYXRpb24gZmllbGRzOiDAAFFUaGUgYXJndW1lbnQgYHJlZmVyZW5jZXNgIG11c3QgcmVmZXIgb25seSB0byBzY2FsYXIgZmllbGRzIGluIHRoZSByZWxhdGVkIG1vZGVsIGDAOGAuIEJ1dCBpdCBpcyByZWZlcmVuY2luZyB0aGUgZm9sbG93aW5nIHJlbGF0aW9uIGZpZWxkczogwABgRXZlcnkgZmllbGQgdXNlZCBmb3Igb3JkZXJCeSBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBieS1hcmd1bWVudHMgb2YgdGhlIHF1ZXJ5LiBNaXNzaW5nIGZpZWxkczogwAAVcXVlcnkgYnVpbGRlciBlcnJvcjogwAAZSW52YWxpZCBhcmd1bWVudCB2YWx1ZS4gYMASYCBpcyBub3QgYSB2YWxpZCBgwBVgLiBVbmRlcmx5aW5nIGVycm9yOiDAABlxdWVyeSBncmFwaCBidWlsZCBlcnJvcjogwAAVU2VyaWFsaXphdGlvbiBFcnJvcjogwAAMSlNPTiBFcnJvcjogwAAlSW52YWxpZCBKU09OIHZhbHVlIGZvciBMSUtFIHBhdHRlcm46IMAAIkZhaWxlZCB0byBwYXJzZSBkYXRhYmFzZSB2ZXJzaW9uOiDACi4gUmVhc29uOiDAACNFcnJvciBpbiBxdWVyeSBncmFwaCBjb25zdHJ1Y3Rpb246IMAAIEVycm9yIG9wZW5pbmcgYSBUTFMgY29ubmVjdGlvbjogwAAcVW5oYW5kbGVkIG5lc3RlZCBvcGVyYXRpb246IMAAKlVuc3VwcG9ydGVkIHJlZmVyZW50aWFsIGFjdGlvbiBlbXVsYXRpb246IMAAF1RvbyBtYW55IGZpZWxkcyBnaXZlbjogwAAZSW52YWxpZCBpc29sYXRpb24gbGV2ZWw6IMAADlVwc2VydChtb2RlbDogwABpVGhlIGFyZ3VtZW50IGZpZWxkcyBtdXN0IHJlZmVyIG9ubHkgdG8gZXhpc3RpbmcgZmllbGRzLiBUaGUgZm9sbG93aW5nIGZpZWxkcyBkbyBub3QgZXhpc3QgaW4gdGhpcyBtb2RlbDogwABTVGhlIGFyZ3VtZW50IGByZWZlcmVuY2VzYCBtdXN0IHJlZmVyIG9ubHkgdG8gZXhpc3RpbmcgZmllbGRzIGluIHRoZSByZWxhdGVkIG1vZGVsIGDAO2AuIFRoZSBmb2xsb3dpbmcgZmllbGRzIGRvIG5vdCBleGlzdCBpbiB0aGUgcmVsYXRlZCBtb2RlbDogwAASRXJyb3IgdmFsaWRhdGluZzogwABPRW5jb3VudGVyZWQgaW1wb3NzaWJsZSBlbnVtIHZhbHVlIGRlY2xhcmF0aW9uIGR1cmluZyBwYXJzaW5nLCBuYW1lIGlzIG1pc3Npbmc6IMAAGVNvbWUgZmllbGRzIGFyZSBtaXNzaW5nOiDAAFppbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBFbmNvdW50ZXJlZCBpbXBvc3NpYmxlIGZ1bmN0aW9uIGR1cmluZyBwYXJzaW5nOiDAAG1pbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBFbmNvdW50ZXJlZCBpbXBvc3NpYmxlIHNvdXJjZSBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBkdXJpbmcgcGFyc2luZzogwABZaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogRW5jb3VudGVyZWQgaW1wb3NzaWJsZSBsaXRlcmFsIGR1cmluZyBwYXJzaW5nOiDAADVFbmNvdW50ZXJlZCBpbXBvc3NpYmxlIGF0dHJpYnV0ZSBhcmcgZHVyaW5nIHBhcnNpbmc6IMAAVmludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IEVuY291bnRlcmVkIGltcG9zc2libGUgdHlwZSBkdXJpbmcgcGFyc2luZzogwABXaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogRW5jb3VudGVyZWQgaW1wb3NzaWJsZSBmaWVsZCBkdXJpbmcgcGFyc2luZzogwAAhRXJyb3IgcGFyc2luZyBjb25uZWN0aW9uIHN0cmluZzogwAATVW5rbm93biBxdWVyeSB0YWc6IMAAFVRoZSBwcmV2aWV3IGZlYXR1cmUgIsAhIiBpcyBub3Qga25vd24uIEV4cGVjdGVkIG9uZSBvZjogwAAjVW5leHBlY3RlZCB0b2tlbi4gRXhwZWN0ZWQgb25lIG9mOiDAACBFcnJvciByZWFkaW5nIHRoZSBjb2x1bW4gdmFsdWU6IMAADlVwc2VydChtb2RlbDogwAosIGZpbHRlcjogwAosIGNyZWF0ZTogwAosIHVwZGF0ZTogwAAdRXJyb3IgcXVlcnlpbmcgdGhlIGRhdGFiYXNlOiDAAA9ObyBzdWNoIHRhYmxlOiDAABhEYXRhYmFzZSBub3QgcmVhY2hhYmxlOiDAACppbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiDAAC5FcnJvciBhY2Nlc3NpbmcgcmVzdWx0IHNldCwgY29sdW1uIG5vdCBmb3VuZDogwAA5SlNPTiB0YXJnZXQgdHlwZXMgb25seSBhY2NlcHQgc3RyaW5ncyBvciBudW1iZXJzLCBmb3VuZDogwABESW52YWxpZCB2YWx1ZSBmb3Igc2tpcCBhcmd1bWVudDogVmFsdWUgY2FuIG9ubHkgYmUgcG9zaXRpdmUsIGZvdW5kOiDAAElFeHBlY3RlZCBmaWVsZCBgZmllbGRzYCB0byBiZSBvZiB0eXBlIFN0cmluZywgRW51bSBvciBMaXN0PEVudW0+LCBmb3VuZDogwAA1RXJyb3IgYWNjZXNzaW5nIHJlc3VsdCBzZXQsIHR5cGUgbWlzbWF0Y2gsIGV4cGVjdGVkOiDAACBUcmFuc2FjdGlvbiB3YXMgYWxyZWFkeSBjbG9zZWQ6IMAAH0ZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbGVkOiDAABhOdWxsIGNvbnN0cmFpbnQgZmFpbGVkOiDAABpVbmlxdWUgY29uc3RyYWludCBmYWlsZWQ6IMAAE0NvbnZlcnNpb24gZmFpbGVkOiDAABdFcnJvciBpbiBkb21haW4gbG9naWM6IMAAF0Vycm9yIHZhbGlkYXRpbmcgZW51bSBgwANgOiDAABhFcnJvciB2YWxpZGF0aW5nIGZpZWxkIGDAFWAgaW4gY29tcG9zaXRlIHR5cGUgYMADYDogwAAdRXJyb3IgdmFsaWRhdGluZyBkYXRhc291cmNlIGDAA2A6IMAAI0Vycm9yIGluIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3RvciAowAMpOiDAABlFcnJvciBwYXJzaW5nIGF0dHJpYnV0ZSAiwAMiOiDAACFFcnJvciB2YWxpZGF0aW5nIGNvbXBvc2l0ZSB0eXBlICLAAyI6IMAAEUVycm9yIHZhbGlkYXRpbmcgwAIgIsADIjogwAABIsADIjogwAAsQXJndW1lbnQgTSBpcyBvdXQgb2YgcmFuZ2UgZm9yIG5hdGl2ZSB0eXBlIGDABWAgb2YgwAI6IMAADUlucHV0IGVycm9yLiDAABpWYWx1ZSBvdXQgb2YgcmFuZ2UgZXJyb3IuIMAAFVVuc3VwcG9ydGVkIGZlYXR1cmU6IMACLiDAABVFcnJvciBjcmVhdGluZyBVVUlELCDAAF1pbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBFbmNvdW50ZXJlZCBpbXBvc3NpYmxlIGRvYyBjb21tZW50IGR1cmluZyBwYXJzaW5nOiDAAiwgwAAORGVsZXRlUmVjb3JkOiDAAiwgwAAYUHJvamVjdGVkRGF0YURlcGVuZGVuY3kowAIpIMAACV9AcGFyYW1fIMABIMAAQWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IEVuY291bnRlcmVkIGltcG9zc2libGUgwBEgZHVyaW5nIHBhcnNpbmc6IMABIMAACmBgYHByaXNtYQrACQpgYGAKX19fCsACCgrAABpGaWVsZFNlbGVjdGlvbiB7IGZpZWxkczogW8ADXSB9AMADIHsgwAIgfQACeyDAAiB9AApkaWdyYXBoIHsKwAEKwAIKfQDAAS/AAV/ACS5ncmFwaHZpegAJZmluZEZpcnN0wAdPclRocm93AApmaW5kVW5pcXVlwAdPclRocm93AAlhZ2dyZWdhdGXAA1JhdwAEZmluZMADUmF3AMATT2JqZWN0RXF1YWxpdHlJbnB1dADAD0RlbGV0ZU1hbnlJbnB1dADAD0NyZWF0ZU1hbnlJbnB1dADAGFVuY2hlY2tlZFVwZGF0ZU1hbnlJbnB1dADAD1VwZGF0ZU1hbnlJbnB1dADAC1Vwc2VydElucHV0AMDAGkZpZWxkVXBkYXRlT3BlcmF0aW9uc0lucHV0AMAXVXBkYXRlTWFueU11dGF0aW9uSW5wdXQAwA1GaWVsZFJlZklucHV0AMAQV2hlcmVVbmlxdWVJbnB1dADAwBNDb21wb3VuZFVuaXF1ZUlucHV0AMDAFU9yZGVyQnlBZ2dyZWdhdGVJbnB1dADAB09yZGVyQnnADkFnZ3JlZ2F0ZUlucHV0AMAUVW5jaGVja2VkQ3JlYXRlSW5wdXQAwAtDcmVhdGVJbnB1dADAFFVuY2hlY2tlZFVwZGF0ZUlucHV0AMALVXBkYXRlSW5wdXQAwApXaGVyZUlucHV0AMDAE0NyZWF0ZUVudmVsb3BlSW5wdXQAwMATVXBkYXRlRW52ZWxvcGVJbnB1dADAFU9yZGVyQnlSZWxldmFuY2VJbnB1dADAwAZVcGRhdGXAB1dpdGhvdXTAC05lc3RlZElucHV0AMAKQ3JlYXRlTWFuecAFSW5wdXQAwAdPcmRlckJ5wAVJbnB1dADAGlVuY2hlY2tlZFVwZGF0ZU1hbnlXaXRob3V0wAVJbnB1dADADVVwc2VydFdpdGhvdXTABUlucHV0AMAWQ3JlYXRlT3JDb25uZWN0V2l0aG91dMAFSW5wdXQAwBxVcHNlcnRXaXRoV2hlcmVVbmlxdWVXaXRob3V0wAVJbnB1dADAHFVwZGF0ZVdpdGhXaGVyZVVuaXF1ZVdpdGhvdXTABUlucHV0AMAWVW5jaGVja2VkQ3JlYXRlV2l0aG91dMAFSW5wdXQAwA1DcmVhdGVXaXRob3V0wAVJbnB1dADAFlVuY2hlY2tlZFVwZGF0ZVdpdGhvdXTABUlucHV0AMANVXBkYXRlV2l0aG91dMAFSW5wdXQAwBpVcGRhdGVNYW55V2l0aFdoZXJlV2l0aG91dMAFSW5wdXQAwBtVcGRhdGVUb09uZVdpdGhXaGVyZVdpdGhvdXTABUlucHV0AMDABkNyZWF0ZcAHV2l0aG91dMAFSW5wdXQAwAZDcmVhdGXABUlucHV0AMAGVXBkYXRlwAVJbnB1dADAC1NjYWxhcldoZXJlwAVJbnB1dAAFbm9kZSDADyBoYXMgbm8gY29udGVudAABYMAiYDogQSB2YWx1ZSBpcyByZXF1aXJlZCBidXQgbm90IHNldAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pdGVydG9vbHMtMC4xNC4wL3NyYy9ncm91cGJ5bGF6eS5ycwAvaG9tZS9ydW5uZXIvLnJ1c3R1cC90b29sY2hhaW5zLzEuOTcuMS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2luZGV4bWFwLTIuMTAuMC9zcmMvbWFwL2NvcmUvZW50cnkucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvd2Fsa2Vycy9yZWxhdGlvbi9pbXBsaWNpdF9tYW55X3RvX21hbnkucnMAcXVlcnktY29tcGlsZXIvc2NoZW1hL3NyYy9idWlsZC9tdXRhdGlvbnMvY3JlYXRlX21hbnkucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci9yZWFkL21hbnkucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvd2Fsa2Vycy9tb2RlbC9wcmltYXJ5X2tleS5ycwBwc2wvcGFyc2VyLWRhdGFiYXNlL3NyYy9hdHRyaWJ1dGVzL3NoYXJkX2tleS5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1zdHJ1Y3R1cmUvc3JjL29yZGVyX2J5LnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvcmVhZC9hZ2dyZWdhdGlvbnMvZ3JvdXBfYnkucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYmFzZTY0LTAuMjIuMS9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9kZWNvZGVfc3VmZml4LnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL3dhbGtlcnMvaW5kZXgucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnMAcXVhaW50L3NyYy9hc3Qvcm93LnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2Vfdmlldy5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE3LjEvc3JjL3Jhdy5ycwAvcnVzdGMvOGJhYjI2ZjRmNjhlMGUyNmYwYmI3OTYwYmUzMzRkNWI1MjBlYTQ1Mi9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZmx0MmRlYy9zdHJhdGVneS9ncmlzdS5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9yZXF1ZXN0X2NvbnRleHQucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvY29udGV4dC5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1zdHJ1Y3R1cmUvc3JjL3ByaXNtYV92YWx1ZV9leHQucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZG9jdW1lbnQvcGFyc2VfYXN0LnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ob21lL3J1bm5lci8ucnVzdHVwL3Rvb2xjaGFpbnMvMS45Ny4xLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC4zL3NyYy9iaWd1aW50L2NvbnZlcnQucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuMy9zcmMvYmlnaW50L2NvbnZlcnQucnMAcXVlcnktY29tcGlsZXIvcXVlcnktYnVpbGRlcnMvc3FsLXF1ZXJ5LWJ1aWxkZXIvc3JjL2NvbnZlcnQucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci93cml0ZS91cHNlcnQucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LXN0cnVjdHVyZS9zcmMvc2VsZWN0aW9uX3Jlc3VsdC5ycwBwc2wvcGFyc2VyLWRhdGFiYXNlL3NyYy9hdHRyaWJ1dGVzL2RlZmF1bHQucnMAcXVlcnktY29tcGlsZXIvcXVlcnktYnVpbGRlcnMvc3FsLXF1ZXJ5LWJ1aWxkZXIvc3JjL2xpbWl0LnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL251bS1iaWdpbnQtMC40LjMvc3JjL2JpZ3VpbnQvc2hpZnQucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuMy9zcmMvYmlnaW50L3NoaWZ0LnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvd3JpdGUvZGlzY29ubmVjdC5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3dyaXRlL2Nvbm5lY3QucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2RpeV9mbG9hdC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pdGVydG9vbHMtMC4xNC4wL3NyYy9mb3JtYXQucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci9pbnB1dHMucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWludGVnZXItMC4xLjQ1L3NyYy9yb290cy5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL2V4dHJhY3RvcnMvcXVlcnlfYXJndW1lbnRzLnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2VfYXJndW1lbnRzLnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2VfY29tbWVudHMucnMAcXVlcnktY29tcGlsZXIvc2NoZW1hL3NyYy9idWlsZC9pbnB1dF90eXBlcy9vYmplY3RzL2ZpbHRlcl9vYmplY3RzLnJzAHF1ZXJ5LWNvbXBpbGVyL3NjaGVtYS9zcmMvYnVpbGQvaW5wdXRfdHlwZXMvb2JqZWN0cy91cGRhdGVfb25lX29iamVjdHMucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGVzdC0yLjguNC9zcmMvaXRlcmF0b3JzL3BhaXJzLnJzAHBzbC9wc2wtY29yZS9zcmMvZGF0YW1vZGVsX2Nvbm5lY3Rvci9maWx0ZXJzLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL3dhbGtlcnMucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy9mbXQvYnVpbGRlcnMucnMAcHNsL3BzbC1jb3JlL3NyYy9jb25maWd1cmF0aW9uL2Vudl92YXJzLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL3JlbGF0aW9ucy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wZXN0LTIuOC40L3NyYy9pdGVyYXRvcnMvdG9rZW5zLnJzAHBzbC9wc2wtY29yZS9zcmMvYnVpbHRpbl9jb25uZWN0b3JzL3V0aWxzLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvZXh0cmFjdG9ycy91dGlscy5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3dyaXRlL3V0aWxzLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvcmVhZC91dGlscy5ycwBxdWVyeS1jb21waWxlci9zY2hlbWEvc3JjL3V0aWxzLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nocm9uby0wLjQuNDIvc3JjL25haXZlL2ludGVybmFscy5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1zdHJ1Y3R1cmUvc3JjL3dyaXRlX2FyZ3MucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvY29udGV4dC9hdHRyaWJ1dGVzLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL2F0dHJpYnV0ZXMucnMAcHNsL3BzbC1jb3JlL3NyYy9jb21tb24vcHJldmlld19mZWF0dXJlcy5ycwBxdWFpbnQvc3JjL3Zpc2l0b3IvcG9zdGdyZXMucnMAcXVlcnktY29tcGlsZXIvc2NoZW1hL3NyYy9idWlsZC9pbnB1dF90eXBlcy9maWVsZHMvZmllbGRfZmlsdGVyX3R5cGVzLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL2F0dHJpYnV0ZXMvbmF0aXZlX3R5cGVzLnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2VfdHlwZXMucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvdHlwZXMucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvbmFtZXMucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvdHlwZXMvaW5kZXhfZmllbGRzLnJzAC9ob21lL3J1bm5lci8ucnVzdHVwL3Rvb2xjaGFpbnMvMS45Ny4xLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9yd2xvY2svbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLnJ1c3R1cC90b29sY2hhaW5zLzEuOTcuMS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL29uY2Uvbm9fdGhyZWFkcy5ycwAvaG9tZS9ydW5uZXIvLnJ1c3R1cC90b29sY2hhaW5zLzEuOTcuMS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvYWxsb2Mvc3JjL3N0ci5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1idWlsZGVycy9zcWwtcXVlcnktYnVpbGRlci9zcmMvZmlsdGVyL3Zpc2l0b3IucnMAcXVhaW50L3NyYy92aXNpdG9yLnJzAHBzbC9wc2wtY29yZS9zcmMvZGF0YW1vZGVsX2Nvbm5lY3Rvci9lbXB0eV9jb25uZWN0b3IucnMAcHNsL3BzbC1jb3JlL3NyYy9idWlsdGluX2Nvbm5lY3RvcnMvcG9zdGdyZXNfZGF0YW1vZGVsX2Nvbm5lY3Rvci5ycwBwc2wvcHNsLWNvcmUvc3JjL2RhdGFtb2RlbF9jb25uZWN0b3IucnMAcHNsL3NjaGVtYS1hc3Qvc3JjL3BhcnNlci9wYXJzZV9zb3VyY2VfYW5kX2dlbmVyYXRvci5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL2Vycm9yLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvZXJyb3IucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdXVpZC0xLjEwLjAvc3JjL2Vycm9yLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3Blc3QtMi44LjQvc3JjL2l0ZXJhdG9ycy9wYWlyLnJzAHF1ZXJ5LWNvbXBpbGVyL3JlcXVlc3QtaGFuZGxlcnMvc3JjL3Byb3RvY29scy9qc29uL3Byb3RvY29sX2FkYXB0ZXIucnMAcXVlcnktY29tcGlsZXIvcXVlcnktc3RydWN0dXJlL3NyYy9maWx0ZXIvaW50b19maWx0ZXIucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3dyaXRlL3dyaXRlX2FyZ3NfcGFyc2VyLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2RvY3VtZW50L3BhcnNlci5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91dWlkLTEuMTAuMC9zcmMvcGFyc2VyLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvdmFsdWUvc2VyLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvc2VyLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWNvbXBpbGVyL3NyYy9kYXRhX21hcHBlci5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1jb21waWxlci13YXNtL3NyYy9jb21waWxlci5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL2J1aWxkZXIucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci9leHRyYWN0b3JzL2ZpbHRlcnMvc2NhbGFyLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LXN0cnVjdHVyZS9zcmMvZmllbGQvc2NhbGFyLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9kZWMyZmx0L2RlY2ltYWxfc2VxLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvbGV4aWNhbC9iaGNvbXAucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvYXR0cmlidXRlcy9tYXAucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaW5kZXhtYXAtMi4xMC4wL3NyYy9tYXAucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wZXN0LTIuOC40L3NyYy9wb3NpdGlvbi5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1idWlsZGVycy9zcWwtcXVlcnktYnVpbGRlci9zcmMvY3Vyc29yX2NvbmRpdGlvbi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9udW0tYmlnaW50LTAuNC4zL3NyYy9iaWd1aW50L2FkZGl0aW9uLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LXN0cnVjdHVyZS9zcmMvZmllbGRfc2VsZWN0aW9uLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2RvY3VtZW50L3NlbGVjdGlvbi5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1zdHJ1Y3R1cmUvc3JjL3Byb2plY3Rpb25zL21vZGVsX3Byb2plY3Rpb24ucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuMy9zcmMvYmlndWludC9zdWJ0cmFjdGlvbi5ycwBwc2wvcGFyc2VyLWRhdGFiYXNlL3NyYy93YWxrZXJzL3JlbGF0aW9uLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWJ1aWxkZXJzL3NxbC1xdWVyeS1idWlsZGVyL3NyYy9tb2RlbF9leHRlbnNpb25zL3JlbGF0aW9uLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LXN0cnVjdHVyZS9zcmMvZmllbGQvcmVsYXRpb24ucnMAcXVlcnktY29tcGlsZXIvcXVlcnktc3RydWN0dXJlL3NyYy9yZWxhdGlvbi5ycwBsaWJzL3VzZXItZmFjaW5nLWVycm9ycy9zcmMvcXVlcnlfZW5naW5lL3ZhbGlkYXRpb24ucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuMy9zcmMvYmlndWludC9tdWx0aXBsaWNhdGlvbi5ycwBwc2wvc2NoZW1hLWFzdC9zcmMvcGFyc2VyL3BhcnNlX2V4cHJlc3Npb24ucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbnVtLWJpZ2ludC0wLjQuMy9zcmMvYmlndWludC9kaXZpc2lvbi5ycwAvcnVzdGMvOGJhYjI2ZjRmNjhlMGUyNmYwYmI3OTYwYmUzMzRkNWI1MjBlYTQ1Mi9saWJyYXJ5L2NvcmUvc3JjL251bS9pbXAvZmx0MmRlYy9zdHJhdGVneS9kcmFnb24ucnMAcXVlcnktY29tcGlsZXIvcXVlcnktYnVpbGRlcnMvc3FsLXF1ZXJ5LWJ1aWxkZXIvc3JjL21vZGVsX2V4dGVuc2lvbnMvY29sdW1uLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nocm9uby0wLjQuNDIvc3JjL2Zvcm1hdC9zY2FuLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvY29yZS9zcmMvbnVtL2ltcC9iaWdudW0ucnMAcHNsL3NjaGVtYS1hc3Qvc3JjL3BhcnNlci9wYXJzZV9lbnVtLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL3dhbGtlcnMvZW51bS5ycwBwc2wvc2NoZW1hLWFzdC9zcmMvcGFyc2VyL3BhcnNlX21vZGVsLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL3dhbGtlcnMvbW9kZWwucnMAcXVlcnktY29tcGlsZXIvcXVlcnktc3RydWN0dXJlL3NyYy9tb2RlbC5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1idWlsZGVycy9zcWwtcXVlcnktYnVpbGRlci9zcmMvc2VsZWN0L2xhdGVyYWwucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvdG9raW8tMS40NS4xL3NyYy90YXNrL3Rhc2tfbG9jYWwucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvbGV4aWNhbC9tYXRoLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWNvbXBpbGVyL3NyYy90cmFuc2xhdGUvcXVlcnkvcmVhZC9pbl9tZW1vcnlfcHJvY2Vzc2luZy5ycwAvaG9tZS9ydW5uZXIvLnJ1c3R1cC90b29sY2hhaW5zLzEuOTcuMS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWJ1aWxkZXJzL3NxbC1xdWVyeS1idWlsZGVyL3NyYy9vcmRlcmluZy5ycwAvcnVzdGMvOGJhYjI2ZjRmNjhlMGUyNmYwYmI3OTYwYmUzMzRkNWI1MjBlYTQ1Mi9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA1L3NyYy9leHRlcm5yZWYucnMAcXVlcnktY29tcGlsZXIvcXVlcnktc3RydWN0dXJlL3NyYy9kZWZhdWx0X3ZhbHVlLnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2VfYXR0cmlidXRlLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvZXh0cmFjdG9ycy9maWx0ZXJzL2NvbXBvc2l0ZS5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1zdHJ1Y3R1cmUvc3JjL2ZpZWxkL2NvbXBvc2l0ZS5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1jb21waWxlci9zcmMvdHJhbnNsYXRlL3F1ZXJ5L3dyaXRlLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2FzdC93cml0ZS5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1idWlsZGVycy9zcWwtcXVlcnktYnVpbGRlci9zcmMvd3JpdGUucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci93cml0ZS9kZWxldGUucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGVzdC0yLjguNC9zcmMvcGFyc2VyX3N0YXRlLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWNvbXBpbGVyL3NyYy90cmFuc2xhdGUucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvcmVhZC9hZ2dyZWdhdGlvbnMvYWdncmVnYXRlLnJzAHF1ZXJ5LWNvbXBpbGVyL3NjaGVtYS9zcmMvYnVpbGQvaW5wdXRfdHlwZXMvZmllbGRzL2RhdGFfaW5wdXRfbWFwcGVyL2NyZWF0ZS5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3dyaXRlL2NyZWF0ZS5ycwBxdWVyeS1jb21waWxlci9zY2hlbWEvc3JjL2J1aWxkL2lucHV0X3R5cGVzL2ZpZWxkcy9kYXRhX2lucHV0X21hcHBlci91cGRhdGUucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci93cml0ZS91cGRhdGUucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2RlYzJmbHQvcGFyc2UucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY2hyb25vLTAuNC40Mi9zcmMvZm9ybWF0L3BhcnNlLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvbGV4aWNhbC9wYXJzZS5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pbmRleG1hcC0yLjEwLjAvc3JjL21hcC9jb3JlLnJzAHF1ZXJ5LWNvbXBpbGVyL3NjaGVtYS9zcmMvYnVpbGQvaW5wdXRfdHlwZXMvZmllbGRzL2ZpZWxkX3JlZl90eXBlLnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2VfY29tcG9zaXRlX3R5cGUucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvd2Fsa2Vycy9jb21wb3NpdGVfdHlwZS5ycwBxdWVyeS1jb21waWxlci9zY2hlbWEvc3JjL2J1aWxkL211dGF0aW9ucy9jcmVhdGVfb25lLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvcmVhZC9vbmUucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY2hyb25vLTAuNC40Mi9zcmMvZm9ybWF0L3N0cmZ0aW1lLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAcXVhaW50L3NyYy9hc3QvdGFibGUucnMAcXVlcnktY29tcGlsZXIvcXVlcnktYnVpbGRlcnMvc3FsLXF1ZXJ5LWJ1aWxkZXIvc3JjL21vZGVsX2V4dGVuc2lvbnMvdGFibGUucnMAcXVlcnktY29tcGlsZXIvcXVlcnktY29tcGlsZXIvc3JjL3Jlc3VsdF9ub2RlLnJzAC9ob21lL3J1bm5lci8ucnVzdHVwL3Rvb2xjaGFpbnMvMS45Ny4xLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuY29kZS5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iYXNlNjQtMC4yMi4xL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29kZS5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS0xLjAuMjI4L3NyYy9wcml2YXRlL2RlLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjEwNC9zcmMvZGUucnMAcHNsL3BzbC1jb3JlL3NyYy9jb25maWd1cmF0aW9uL2RhdGFzb3VyY2UucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9zeW5jL29uY2UucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGgvZ3VhcmQucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaGFzaGJyb3duLTAuMTUuMi9zcmMvcmF3L21vZC5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9kb2N1bWVudC9tb2QucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy9mbXQvbW9kLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWJ1aWxkZXJzL3NxbC1xdWVyeS1idWlsZGVyL3NyYy9zZWxlY3QvbW9kLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nocm9uby0wLjQuNDIvc3JjL2Zvcm1hdC9tb2QucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci9leHRyYWN0b3JzL2ZpbHRlcnMvbW9kLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvcmVhZC9hZ2dyZWdhdGlvbnMvbW9kLnJzAHF1ZXJ5LWNvbXBpbGVyL3NjaGVtYS9zcmMvYnVpbGQvaW5wdXRfdHlwZXMvbW9kLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LXN0cnVjdHVyZS9zcmMvZmlsdGVyL3NjYWxhci9tb2QucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9pby9tb2QucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGgvbW9kLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nocm9uby0wLjQuNDIvc3JjL25haXZlL2RhdGUvbW9kLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9nZW5lcmFsX3B1cnBvc2UvbW9kLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9tb2QucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY2hyb25vLTAuNC40Mi9zcmMvbmFpdmUvZGF0ZXRpbWUvbW9kLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nocm9uby0wLjQuNDIvc3JjL2RhdGV0aW1lL21vZC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9jb3JlLTEuMC4yMjgvc3JjL2RlL21vZC5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1zdHJ1Y3R1cmUvc3JjL2ZpZWxkL21vZC5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3dyaXRlL25lc3RlZC9tb2QucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ob21lL3J1bm5lci8ucnVzdHVwL3Rvb2xjaGFpbnMvMS45Ny4xLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9tb2QucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy9udW0vaW1wL2ZsdDJkZWMvbW9kLnJzAHBzbC9wYXJzZXItZGF0YWJhc2Uvc3JjL3dhbGtlcnMvc2NhbGFyX2ZpZWxkLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWJ1aWxkZXJzL3NxbC1xdWVyeS1idWlsZGVyL3NyYy9tb2RlbF9leHRlbnNpb25zL3NjYWxhcl9maWVsZC5ycwBwc2wvcGFyc2VyLWRhdGFiYXNlL3NyYy93YWxrZXJzL3JlbGF0aW9uX2ZpZWxkLnJzAHBzbC9zY2hlbWEtYXN0L3NyYy9wYXJzZXIvcGFyc2VfZmllbGQucnMAcXVlcnktY29tcGlsZXIvc2NoZW1hL3NyYy9idWlsZC9vdXRwdXRfdHlwZXMvZmllbGQucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvYXR0cmlidXRlcy9pZC5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3dyaXRlL25lc3RlZC91cHNlcnRfbmVzdGVkLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvd3JpdGUvbmVzdGVkL3NldF9uZXN0ZWQucnMAL2hvbWUvcnVubmVyLy5ydXN0dXAvdG9vbGNoYWlucy8xLjk3LjEteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci93cml0ZS9uZXN0ZWQvY29ubmVjdF9vcl9jcmVhdGVfbmVzdGVkLnJzAHF1ZXJ5LWNvbXBpbGVyL2NvcmUvc3JjL3F1ZXJ5X2dyYXBoX2J1aWxkZXIvd3JpdGUvbmVzdGVkL2NyZWF0ZV9uZXN0ZWQucnMAcXVlcnktY29tcGlsZXIvY29yZS9zcmMvcXVlcnlfZ3JhcGhfYnVpbGRlci93cml0ZS9uZXN0ZWQvdXBkYXRlX25lc3RlZC5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9ncmFwaF9idWlsZGVyL3JlYWQvcmVsYXRlZC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xMDQvc3JjL2xleGljYWwvY2FjaGVkLnJzAHF1ZXJ5LWNvbXBpbGVyL3F1ZXJ5LWNvbXBpbGVyL3NyYy90cmFuc2xhdGUvcXVlcnkvcmVhZC5ycwBxdWVyeS1jb21waWxlci9jb3JlL3NyYy9xdWVyeV9hc3QvcmVhZC5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1idWlsZGVycy9zcWwtcXVlcnktYnVpbGRlci9zcmMvcmVhZC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9qc29uLTEuMC4xMDQvc3JjL3JlYWQucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTMvc3JjL2RsbWFsbG9jLnJzAC9ydXN0Yy84YmFiMjZmNGY2OGUwZTI2ZjBiYjc5NjBiZTMzNGQ1YjUyMGVhNDUyL2xpYnJhcnkvYWxsb2Mvc3JjL3N5bmMucnMAcHNsL3NjaGVtYS1hc3Qvc3JjL2xpYi5ycwBxdWVyeS1jb21waWxlci9xdWVyeS1idWlsZGVycy9zcWwtcXVlcnktYnVpbGRlci9zcmMvbGliLnJzAGxpYnMvcHJpc21hLXZhbHVlL3NyYy9saWIucnMAcHNsL3BhcnNlci1kYXRhYmFzZS9zcmMvbGliLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3VjZC10cmllLTAuMS42L3NyYy9saWIucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaGV4LTAuNC4zL3NyYy9saWIucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy44Mi9zcmMvbGliLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2JpZ2RlY2ltYWwtMC4zLjEvc3JjL2xpYi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9pdGVydG9vbHMtMC4xNC4wL3NyYy9saWIucnMAL3J1c3RjLzhiYWIyNmY0ZjY4ZTBlMjZmMGJiNzk2MGJlMzM0ZDViNTIwZWE0NTIvbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3VuaWNvZGVfZGF0YS5ycwBxdWVyeS1jb21waWxlci9zY2hlbWEvc3JjL3F1ZXJ5X3NjaGVtYS5ycwBwc2wvc2NoZW1hLWFzdC9zcmMvcGFyc2VyL3BhcnNlX3NjaGVtYS5ycwAhVW5rbm93biBmdW5jdGlvbiBpbiBAZGVmYXVsdCgpOiBgwGZgIGlzIG5vdCBrbm93bi4gWW91IGNhbiByZWFkIGFib3V0IHRoZSBhdmFpbGFibGUgZnVuY3Rpb25zIGhlcmU6IGh0dHBzOi8vcHJpcy5seS9kL2F0dHJpYnV0ZS1mdW5jdGlvbnMABFRoZSDAByBuYW1lIGDAY2AgaXMgaW52YWxpZC4gSXQgaXMgYSByZXNlcnZlZCBuYW1lLiBQbGVhc2UgY2hhbmdlIGl0LiBSZWFkIG1vcmUgYXQgaHR0cHM6Ly9wcmlzLmx5L2QvbmFtaW5nLW1vZGVscwDAAiwgwBksIG9yIG90aGVyIGlnbm9yZWQgZmllbGRzABRJbnZhbGlkIGZpbHRlciBrZXkgYMAnYCBpbnB1dCBjb21iaW5hdGlvbiBmb3IgcmVsYXRpb24gZmlsdGVyABRJbnZhbGlkIGZpbHRlciBrZXkgYMAoYCBpbnB1dCBjb21iaW5hdGlvbiBmb3IgY29tcG9zaXRlIGZpbHRlcgDAE0NvbXBvc2l0ZUxpc3RGaWx0ZXIAwBJMaXN0UmVsYXRpb25GaWx0ZXIAwMAUU2NhbGFyUmVsYXRpb25GaWx0ZXIAwMAPQ29tcG9zaXRlRmlsdGVyAMDAwMDABkZpbHRlcgDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyAMAQIGVsZW1lbnRzIGluIG1hcAAKY3JlYXRlTWFuecAJQW5kUmV0dXJuAAp1cGRhdGVNYW55wAlBbmRSZXR1cm4AwCcgaXMgbm90IGEgdmFsaWQgc2NhbGFyIGZpbHRlciBvcGVyYXRpb24AwCkgaXMgbm90IGEgdmFsaWQgZ3JvdXBpbmcgZmlsdGVyIG9wZXJhdGlvbgDAD1NjYWxhckZpZWxkRW51bQDAGU9yZGVyQnlSZWxldmFuY2VGaWVsZEVudW0AwAFfwARfbTJtAAVUaGUgYMAjYCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwAAihuwAMpXG7AAlxsAAlQcm9wZXJ0eSDABCBpbiDAASDAHSBuZWVkcyB0byBiZSBhc3NpZ25lZCBhIHZhbHVlAMARR3JvdXBCeU91dHB1dFR5cGUAwA9Db3VudE91dHB1dFR5cGUACkNyZWF0ZU1hbnnAE0FuZFJldHVybk91dHB1dFR5cGUAClVwZGF0ZU1hbnnAE0FuZFJldHVybk91dHB1dFR5cGUAwMATQWdncmVnYXRlT3V0cHV0VHlwZQDACEVudmVsb3BlAA5UaGUgYXJndW1lbnQgYMAaYCBjYW4gb25seSBiZSBkZWZpbmVkIG9uY2UAwBUgZWxlbWVudHMgaW4gc2VxdWVuY2UABkVudW0gYMALYCBub3QgZm91bmQAD1JlbGF0aW9uRmllbGQgYMAMYCBvbiBtb2RlbCBgwAtgIG5vdCBmb3VuZAAHTW9kZWwgYMALYCBub3QgZm91bmQADVNjYWxhckZpZWxkIGDABWAgb24gwAIgYMALYCBub3QgZm91bmQAEENvbXBvc2l0ZUZpZWxkIGDABWAgb24gwAIgYMALYCBub3QgZm91bmQAB0ZpZWxkIGDABWAgb24gwAIgYMALYCBub3QgZm91bmQAMWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IEZpZWxkICfAQycgZG9lcyBub3QgZXhpc3Qgb24gZW5jbG9zaW5nIHR5cGUgYW5kIGlzIG5vdCBhIGtub3duIHZpcnR1YWwgZmllbGQAUVVuYWJsZSB0byBmaXQgZmxvYXQgdmFsdWUgKG9yIGxhcmdlIEpTIGludGVnZXIgc2VyaWFsaXplZCBpbiBleHBvbmVudCBub3RhdGlvbikgJ8AqJyBpbnRvIGEgNjQgQml0IHNpZ25lZCBpbnRlZ2VyIGZvciBmaWVsZCAnwEQnLiBJZiB5b3UncmUgdHJ5aW5nIHRvIHN0b3JlIGxhcmdlIGludGVnZXJzLCBjb25zaWRlciB1c2luZyBgQmlnSW50YAAQZmxvYXRpbmcgcG9pbnQgYMABYAABYMAGYCBvciBgwAFgAAtjaGFyYWN0ZXIgYMABYAAJaW50ZWdlciBgwAFgABhDb3VsZCBub3QgY29udmVydCBmcm9tIGDABmAgdG8gYMABYAAJYm9vbGVhbiBgwAFgAA9taXNzaW5nIGZpZWxkIGDAAWAAEWR1cGxpY2F0ZSBmaWVsZCBgwAFgABlJbnZhbGlkIGFyZ3VtZW50IHZhbHVlLiBgwBJgIGlzIG5vdCBhIHZhbGlkIGDAAWAAOVVuZXhwZWN0ZWQgc2NhbGFyIGlucHV0IG9iamVjdCBuYW1lIGZvciBzdHJpbmcgZmlsdGVyczogYMABYAAYSW52YWxpZCBhcmd1bWVudCB0eXBlLiBgwCxgIHNob3VsZCBiZSBvZiBhbnkgb2YgdGhlIGZvbGxvd2luZyB0eXBlczogYMABYAAdSW52YWxpZCByZWZlcmVudGlhbCBhY3Rpb246IGDAAWAAAWDAAWAAJGBjdHgudmlzaXRfYXR0cmlidXRlcygpIGNhbGxlZCB3aXRoIMBBIHdoaWxlIHRoZSBDb250ZXh0IGlzIHN0aWxsIHZhbGlkYXRpbmcgcHJldmlvdXMgYXR0cmlidXRlIHNldCBvbiDAAWAABCAgICDACSBbbGFiZWw9IsBCIiwgZmlsbGNvbG9yPWJsdWUsIHN0eWxlPWZpbGxlZCwgc2hhcGU9cmVjdGFuZ2xlLCBmb250Y29sb3I9d2hpdGVdAAQgICAgwAkgW2xhYmVsPSLAQSIsIGZpbGxjb2xvcj1yZWQsIHN0eWxlPWZpbGxlZCwgc2hhcGU9cmVjdGFuZ2xlLCBmb250Y29sb3I9d2hpdGVdAAQgICAgwAkgW2xhYmVsPSLAEyIsIHNoYXBlPXJlY3RhbmdsZV0AwAJbXQAEICAgIMAEIC0+IMALIFtsYWJlbD0iKGXAAikgwAIiXQBUVW5hYmxlIHRvIG1hdGNoIGlucHV0IHZhbHVlIHRvIGFueSBhbGxvd2VkIGlucHV0IHR5cGUgZm9yIHRoZSBmaWVsZC4gUGFyc2UgZXJyb3JzOiBbwAFdAAFbwAFdAGtZb3UgcHJvdmlkZWQgbXVsdGlwbGUgdW5uYW1lZCBhcmd1bWVudHMuIFRoaXMgaXMgbm90IHBvc3NpYmxlLiBEaWQgeW91IGZvcmdldCB0aGUgYnJhY2tldHM/IERpZCB5b3UgbWVhbiBgW8ADXWA/ACQgRGlkIHlvdSBtZWFuIHRvIHByb3ZpZGUgYEBAdW5pcXVlKFvABF0pYD8AESBEaWQgeW91IG1lYW4gYEBAwAIoW8AEXSlgPwAcIERpZCB5b3UgbWVhbiB0byBwdXQgaXQgb24gYMACYD8ABlR5cGUgIsBiIiBpcyBuZWl0aGVyIGEgYnVpbHQtaW4gdHlwZSwgbm9yIHJlZmVycyB0byBhbm90aGVyIG1vZGVsLCBjb21wb3NpdGUgdHlwZSwgb3IgZW51bS4gRGlkIHlvdSBtZWFuICLAAiI/AAE8wAwgYnl0ZXMgYmxvYj4ABUxpc3Q8wAE+AAxQbGFjZWhvbGRlcjzAAT4AD0ludmFsaWQgdmFsdWUgJ8BjJyBpbiB3aGVyZSBjbGF1c2UuIEV4cGVjdGVkIHRydWUsIGZhbHNlLCBudWxsLCBhIHN0cmluZywgYSBudW1iZXIsIG9yIGFuIG9iamVjdCBsaWtlIHsgbm90OiBudWxsIH0uAA5UaGUgbmFtZSBvZiBhIMATIG11c3Qgbm90IGJlIGVtcHR5LgALT3BlcmF0aW9uICfADScgZm9yIG1vZGVsICfAGycgZG9lcyBub3QgbWF0Y2ggYW55IHF1ZXJ5LgAST3BhcXVlIHBhcmFtZXRlciAnwB0nIHVzZWQgYXMgcmF3IHZhbHVlIGluIHF1ZXJ5LgA/VGhlIGdpdmVuIG9wZXJhdG9yIGNsYXNzIGBBcnJheU9wc2AgZXhwZWN0cyB0aGUgdHlwZSBvZiBmaWVsZCBgwBFgIHRvIGJlIGFuIGFycmF5LgAhVGhlIHJlZmVyZW5jZWQgc2NhbGFyIGxpc3QgZmllbGQgwAEuwBAgZG9lcyBub3QgZXhpc3QuABxUaGUgcmVmZXJlbmNlZCBzY2FsYXIgZmllbGQgwAEuwBAgZG9lcyBub3QgZXhpc3QuABhNb2RlbCBvciBjb21wb3NpdGUgdHlwZSDAFCB1c2VkIGZvciBmaWVsZCByZWYgwBAgZG9lcyBub3QgZXhpc3QuAAFgwCAoKWAgdGFrZXMgYSBzaW5nbGUgSW50IGFyZ3VtZW50LgAKQXJndW1lbnQgIsArIiBpcyBhbHJlYWR5IHNwZWNpZmllZCBhcyB1bm5hbWVkIGFyZ3VtZW50LgAEVGhlIMACICLAHiIgY2Fubm90IGJlIGRlZmluZWQgYmVjYXVzZSBhIMAfIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzLgAEVGhlIMATIGluZGV4IGZpZWxkIHR5cGUgYMAgYCBoYXMgbm8gZGVmYXVsdCBvcGVyYXRvciBjbGFzcy4AR1RoZSBjaGFuZ2UgeW91IGFyZSB0cnlpbmcgdG8gbWFrZSB3b3VsZCB2aW9sYXRlIHRoZSByZXF1aXJlZCByZWxhdGlvbiAnwA8nIGJldHdlZW4gdGhlIGDAB2AgYW5kIGDACWAgbW9kZWxzLgAwVGhlIHVuaXF1ZSBpbmRleCBkZWZpbml0aW9uIHJlZmVycyB0byB0aGUgZmllbGQgwBAgbXVsdGlwbGUgdGltZXMuACRUaGUgY2hhcmFjdGVyIGAtYCBpcyBub3QgYWxsb3dlZCBpbiDAByBuYW1lcy4AMFRoZSBzaGFyZCBrZXkgZGVmaW5pdGlvbiByZWZlcnMgdG8gdGhlIHJlbGF0aW9uIMA6LiBTaGFyZCBrZXkgZGVmaW5pdGlvbnMgbXVzdCByZWZlcmVuY2Ugb25seSBzY2FsYXIgZmllbGRzLgApVGhlIGlkIGRlZmluaXRpb24gcmVmZXJzIHRvIHRoZSByZWxhdGlvbiDAMy4gSUQgZGVmaW5pdGlvbnMgbXVzdCByZWZlcmVuY2Ugb25seSBzY2FsYXIgZmllbGRzLgAOVGhlIGZ1bmN0aW9uIGDAKSgpYCBpcyBub3Qgc3VwcG9ydGVkIG9uIGNvbXBvc2l0ZSBmaWVsZHMuADBUaGUgc2hhcmQga2V5IGRlZmluaXRpb24gcmVmZXJzIHRvIHRoZSBvcHRpb25hbCDAPC4gU2hhcmQga2V5IGRlZmluaXRpb25zIG11c3QgcmVmZXJlbmNlIG9ubHkgcmVxdWlyZWQgZmllbGRzLgApVGhlIGlkIGRlZmluaXRpb24gcmVmZXJzIHRvIHRoZSBvcHRpb25hbCDANS4gSUQgZGVmaW5pdGlvbnMgbXVzdCByZWZlcmVuY2Ugb25seSByZXF1aXJlZCBmaWVsZHMuABBQcm92aWRlZCBsaW1pdCAowB0pIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLgAOVGhlIG5hbWUgb2YgYSDAHiBtdXN0IG5vdCBzdGFydCB3aXRoIGEgbnVtYmVyLgANVGhlIGZ1bmN0aW9uIMAZIGlzIG5vdCBhIGtub3duIGZ1bmN0aW9uLgAGVHlwZSAiwFMiIGlzIG5laXRoZXIgYSBidWlsdC1pbiB0eXBlLCBub3IgcmVmZXJzIHRvIGFub3RoZXIgbW9kZWwsIGNvbXBvc2l0ZSB0eXBlLCBvciBlbnVtLgAeVGhlIHZhbHVlIHByb3ZpZGVkIGZvciBjb2x1bW4gwA0gaXMgdG9vIGxvbmcuAApBcmd1bWVudCAiwA0iIGlzIG1pc3NpbmcuAAVUaGUgYMAeYCBhcmd1bWVudCBpcyBtaXNzaW5nIGEgdmFsdWUuACFDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCB2YWx1ZSDAEiB0byBBcmd1bWVudFZhbHVlLgAWVHlwZSBtaXNtYXRjaDogZmllbGQgJ8BAJyBpcyBhbiBFbnVtIGFuZCBvbmx5IGFjY2VwdHMgU3RyaW5nIHZhbHVlcyBpbiB0aGUgd2hlcmUgY2xhdXNlLgAHRmllbGQgJ8BKJyBpcyBhIHJlbGF0aW9uIGZpZWxkLiBPbmx5IHNjYWxhciBmaWVsZHMgY2FuIGJlIHVzZWQgaW4gdGhlIHdoZXJlIGNsYXVzZS4ADUNvbHVtbiB0eXBlICfALicgY291bGQgbm90IGJlIGRlc2VyaWFsaXplZCBmcm9tIHRoZSBkYXRhYmFzZS4AEVByZXZpZXcgZmVhdHVyZSAiwFoiIGlzIGRlcHJlY2F0ZWQuIFRoZSBmdW5jdGlvbmFsaXR5IGNhbiBiZSB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyBpdCBhcyBhIHByZXZpZXcgZmVhdHVyZS4AGlRoZSBnaXZlbiBvcGVyYXRvciBjbGFzcyBgwB1gIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgYMANYCBpbmRleCB0eXBlLgAaVGhlIGdpdmVuIG9wZXJhdG9yIGNsYXNzIGDAF2AgcG9pbnRzIHRvIHRoZSBmaWVsZCBgwB1gIHRoYXQgaXMgbm90IG9mIEJpZ0ludCB0eXBlLgAaVGhlIGdpdmVuIG9wZXJhdG9yIGNsYXNzIGDAF2AgcG9pbnRzIHRvIHRoZSBmaWVsZCBgwBpgIHRoYXQgaXMgbm90IG9mIEludCB0eXBlLgAaVGhlIGdpdmVuIG9wZXJhdG9yIGNsYXNzIGDAF2AgcG9pbnRzIHRvIHRoZSBmaWVsZCBgwBxgIHRoYXQgaXMgbm90IG9mIEZsb2F0IHR5cGUuABpUaGUgZ2l2ZW4gb3BlcmF0b3IgY2xhc3MgYMAXYCBwb2ludHMgdG8gdGhlIGZpZWxkIGDAHGAgdGhhdCBpcyBub3Qgb2YgQnl0ZXMgdHlwZS4AGlRoZSBnaXZlbiBvcGVyYXRvciBjbGFzcyBgwBdgIHBvaW50cyB0byB0aGUgZmllbGQgYMAbYCB0aGF0IGlzIG5vdCBvZiBKc29uIHR5cGUuABpUaGUgZ2l2ZW4gb3BlcmF0b3IgY2xhc3MgYMAXYCBwb2ludHMgdG8gdGhlIGZpZWxkIGDAHmAgdGhhdCBpcyBub3Qgb2YgRGVjaW1hbCB0eXBlLgABYMABLsAqYDogRmllbGQgZG9lcyBub3QgZXhpc3QgaW4gZW5jbG9zaW5nIHR5cGUuABpUaGUgZ2l2ZW4gb3BlcmF0b3IgY2xhc3MgYMAXYCBwb2ludHMgdG8gdGhlIGZpZWxkIGDAHWAgdGhhdCBpcyBub3Qgb2YgU3RyaW5nIHR5cGUuABpUaGUgZ2l2ZW4gb3BlcmF0b3IgY2xhc3MgYMAVYCBleHBlY3RzIHRoZSBmaWVsZCBgwCBgIHRvIGRlZmluZSBhIHZhbGlkIG5hdGl2ZSB0eXBlLgAaVGhlIGdpdmVuIG9wZXJhdG9yIGNsYXNzIGDAF2AgcG9pbnRzIHRvIHRoZSBmaWVsZCBgwB9gIHRoYXQgaXMgbm90IG9mIERhdGVUaW1lIHR5cGUuAAxBdHRyaWJ1dGUgIkDAGyIgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbmNlLgAoSW52YWxpZCBvcmRlci1ieSByZWZlcmVuY2UgaW5wdXQ6IEZpZWxkIMAdIGlzIG5vdCBhIHZhbGlkIHNjYWxhciBmaWVsZC4AKEV4cGVjdGVkIGEgcmVmZXJlbmNlZCBzY2FsYXIgbGlzdCBmaWVsZCDAHCBidXQgZm91bmQgYSByZWxhdGlvbiBmaWVsZC4AI0V4cGVjdGVkIGEgcmVmZXJlbmNlZCBzY2FsYXIgZmllbGQgwBwgYnV0IGZvdW5kIGEgcmVsYXRpb24gZmllbGQuAChFeHBlY3RlZCBhIHJlZmVyZW5jZWQgc2NhbGFyIGxpc3QgZmllbGQgwB0gYnV0IGZvdW5kIGEgY29tcG9zaXRlIGZpZWxkLgAjRXhwZWN0ZWQgYSByZWZlcmVuY2VkIHNjYWxhciBmaWVsZCDAHSBidXQgZm91bmQgYSBjb21wb3NpdGUgZmllbGQuABtUaGUgZGVmaW5lZCBkZWZhdWx0IHZhbHVlIGDAO2AgaXMgbm90IGEgdmFsaWQgdmFsdWUgb2YgdGhlIGVudW0gc3BlY2lmaWVkIGZvciB0aGUgZmllbGQuAAtUaGUgZmllbGQgYMBgYCBpcyBhIHJlbGF0aW9uIGZpZWxkIGFuZCBjYW5ub3QgYmUgbWFya2VkIHdpdGggYEBpZGAuIE9ubHkgc2NhbGFyIGZpZWxkcyBjYW4gYmUgZGVjbGFyZWQgYXMgaWQuAAtEZWZpbmluZyBgQMA7YCBhdHRyaWJ1dGUgZm9yIGEgZmllbGQgaW4gYSBjb21wb3NpdGUgdHlwZSBpcyBub3QgYWxsb3dlZC4AwGsgcmVmZXJzIHRvIGEgbW9kZWwsIG1ha2luZyB0aGlzIGEgcmVsYXRpb24gZmllbGQuIFJlbGF0aW9uIGZpZWxkcyBpbnNpZGUgY29tcG9zaXRlIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkLgANVW5rbm93biBrZXkgJ8A5JyBpbiBuZXN0ZWQgd2hlcmUgY2xhdXNlIG9iamVjdC4gT25seSAnbm90JyBpcyBzdXBwb3J0ZWQuAAEiwDQiIGlzIGEgcmVzZXJ2ZWQgc2NhbGFyIHR5cGUgbmFtZSBhbmQgY2Fubm90IGJlIHVzZWQuADNBdHRlbXB0ZWQgY29udmVyc2lvbiBvZiBub24tbGlzdCBQYXJzZWRJbnB1dFZhbHVlICjAICkgaW50byBwcmlzbWEgdmFsdWUgbGlzdCBmYWlsZWQuADNBdHRlbXB0ZWQgY29udmVyc2lvbiBvZiBub24taW50IFByaXNtYSB2YWx1ZSB0eXBlICjAEikgaW50byBpbnQgZmFpbGVkLgAyQXR0ZW1wdGVkIGNvbnZlcnNpb24gb2Ygbm9uLW1hcCBQYXJzZWRJbnB1dFZhbHVlICjAEikgaW50byBtYXAgZmFpbGVkLgAyQXR0ZW1wdGVkIGNvbnZlcnNpb24gb2Ygbm9uLW1hcCBQYXJzZWRJbnB1dFZhbHVlICjAGSkgaW50byBPcHRpb24gbWFwIGZhaWxlZC4AN0F0dGVtcHRlZCBjb252ZXJzaW9uIG9mIG5vbi1ib29sZWFuIFByaXNtYSB2YWx1ZSB0eXBlICjAEykgaW50byBib29sIGZhaWxlZC4AKkF0dGVtcHRlZCBjb252ZXJzaW9uIG9mIFBhcnNlZElucHV0VmFsdWUgKMAwKSBpbnRvIHJlbGF0aW9uIGxvYWQgc3RyYXRlZ3kgZW51bSB2YWx1ZSBmYWlsZWQuACxBdHRlbXB0ZWQgY29udmVyc2lvbiBvZiBub24tZmllbGQtcmVmIGVudW0gKMArKSBpbnRvIHNjYWxhciBmaWVsZCByZWZlcmVuY2UgdmFsdWUgZmFpbGVkLgAqQXR0ZW1wdGVkIGNvbnZlcnNpb24gb2YgUGFyc2VkSW5wdXRWYWx1ZSAowBopIGludG8gUHJpc21hVmFsdWUgZmFpbGVkLgARQ29udmVyc2lvbiBmcm9tIGDABmAgdG8gYMAJYCBmYWlsZWQuAApBcmd1bWVudCAiwBciIGlzIGFscmVhZHkgc3BlY2lmaWVkLgABYMA8YDogQSB2YWx1ZSBpcyByZXF1aXJlZCBidXQgbm90IHNldC4gSXQgaXMgcmVxdWlyZWQgYmVjYXVzZSBgwA9gIHdhcyBwcm92aWRlZC4AB0ZpZWxkICfABScgaXMgwE4gYW5kIGNhbm5vdCBiZSB1c2VkIGluIHRoZSBvYmplY3Qgc3ludGF4IG9mIGEgd2hlcmUgY2xhdXNlLiBVc2UgcmF3KCkgaW5zdGVhZC4AEVByZXZpZXcgZmVhdHVyZSAiwEIiIGlzIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFByaXNtYS4AIFRoZSBgbmFtZWAgcHJvcGVydHkgd2l0aGluIHRoZSBgwENgIGF0dHJpYnV0ZSBvbmx5IGFsbG93cyBmb3IgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiBgX2EtekEtWjAtOWAuAB9NaXNzaW5nIHRoZSByZXF1aXJlZCBhcmd1bWVudCBgwA1gIGZvciBmaWVsZCBgwAZgIG9uIGDAAmAuAAtFeHBlY3RlZCBhIMAVIHZhbHVlLCBidXQgcmVjZWl2ZWQgwAggdmFsdWUgYMACYC4ADlRoZSBmdW5jdGlvbiBgwCYoKWAgY2Fubm90IGJlIHVzZWQgb24gZmllbGRzIG9mIHR5cGUgYMACYC4AI0V4cGVjdGVkIGFuIGVudW0gdmFsdWUsIGJ1dCBmb3VuZCBgwAJgLgALRXhwZWN0ZWQgYSDAEyB2YWx1ZSwgYnV0IGZvdW5kIGDAAmAuABpUaGUgZ2l2ZW4gb3BlcmF0b3IgY2xhc3MgYMAgYCBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZSB0eXBlIGDADGAgb2YgZmllbGQgYMACYC4ABFRoZSDANCBpbmRleCB0eXBlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIGDAAmAuABBQcm92aWRlZCBsaW1pdCAowCgpIGlzIGJleW9uZCBtYXggaW50IHZhbHVlIGZvciBwbGF0Zm9ybSAowAIpLgBAQXR0ZW1wdGVkIHRvIGV4ZWN1dGUgYSBxdWVyeSB0aGF0IGNvbnRhaW5zIGFuIG9wYXF1ZSBwYXJhbWV0ZXIgJ8ACJy4AB0ZpZWxkICfAGycgZG9lcyBub3QgZXhpc3QgaW4gbW9kZWwgJ8ACJy4APEV4cGVjdGVkIHF1ZXJ5IGluZm9ybWF0aW9uIHRvIGJlIGF0dGFjaGVkIG9uIHNjaGVtYSBvYmplY3QgJ8AKJywgZmllbGQgJ8ACJy4AF0F0dHJpYnV0ZSBub3Qga25vd246ICJAwAIiLgAHVmFsdWUgIsAeIiBpcyBhbHJlYWR5IGRlZmluZWQgb24gZW51bSAiwAIiLgAKQXJndW1lbnQgIsAhIiBpcyBtaXNzaW5nIGluIGdlbmVyYXRvciBibG9jayAiwAIiLgAKQXJndW1lbnQgIsAjIiBpcyBtaXNzaW5nIGluIGRhdGEgc291cmNlIGJsb2NrICLAAiIuAAdGaWVsZCAiwCgiIGlzIGFscmVhZHkgZGVmaW5lZCBvbiBjb21wb3NpdGUgdHlwZSAiwAIiLgAVUHJvcGVydHkgbm90IGtub3duOiAiwAIiLgAVQXJndW1lbnQgbm90IGtub3duOiAiwAIiLgAgRGF0YXNvdXJjZSBwcm92aWRlciBub3Qga25vd246ICLAAiIuAAdGaWVsZCAiwBgiIGlzIGFscmVhZHkgZGVmaW5lZCBvbiDAAiAiwAIiLgArRXhwZWN0ZWQgYSByZWZlcmVuY2VkIHNjYWxhciBmaWVsZCBvZiB0eXBlIMDACyBidXQgZm91bmQgwAkgb2YgdHlwZSDAwAEuABBPbiBgcHJvdmlkZXIgPSAiwBUiYCwgcHJldmlldyBmZWF0dXJlICLAFyIgaGFzIGJlZW4gcmVuYW1lZCB0byAiwCMiLiBMZWFybiBtb3JlIGF0IGh0dHBzOi8vcHJpcy5seS9kL8ABLgARUHJldmlldyBmZWF0dXJlICLAFyIgaGFzIGJlZW4gcmVuYW1lZCB0byAiwCMiLiBMZWFybiBtb3JlIGF0IGh0dHBzOi8vcHJpcy5seS9kL8ABLgAWRXhwZWN0ZWQgYSBtaW5pbXVtIG9mIMANIGFuZCBhdCBtb3N0IMAbIGZpZWxkcyB0byBiZSBwcmVzZW50LCBnb3QgwAEuABFFeHBlY3RlZCBhdCBtb3N0IMAbIGZpZWxkcyB0byBiZSBwcmVzZW50LCBnb3QgwAEuABZFeHBlY3RlZCBhIG1pbmltdW0gb2YgwBsgZmllbGRzIHRvIGJlIHByZXNlbnQsIGdvdCDAAS4ALkV4cGVjdGVkIGV4YWN0bHkgb25lIGZpZWxkIHRvIGJlIHByZXNlbnQsIGdvdCDAAS4AFkV4cGVjdGVkIGEgbWluaW11bSBvZiDADSBhbmQgYXQgbW9zdCDADCBmaWVsZHMgb2YgKMAVKSB0byBiZSBwcmVzZW50LCBnb3QgwAEuABFFeHBlY3RlZCBhdCBtb3N0IMAMIGZpZWxkcyBvZiAowBUpIHRvIGJlIHByZXNlbnQsIGdvdCDAAS4AFkV4cGVjdGVkIGEgbWluaW11bSBvZiDADCBmaWVsZHMgb2YgKMAVKSB0byBiZSBwcmVzZW50LCBnb3QgwAEuAB9FeHBlY3RlZCBleGFjdGx5IG9uZSBmaWVsZCBvZiAowBUpIHRvIGJlIHByZXNlbnQsIGdvdCDAAS4AJkV4cGVjdGVkIGFueSBzZWxlY3Rpb24gb2YgZmllbGRzLCBnb3QgwAEuABZUeXBlIG1pc21hdGNoOiBmaWVsZCAnwA0nIGlzIG9mIHR5cGUgwBMsIGJ1dCB0aGUgdmFsdWUgaXMgwAEuAAFgwEsoKWAgdGFrZXMgZWl0aGVyIG5vIGFyZ3VtZW50LCBvciBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50IHdoaWNoIGlzIGVpdGhlciDAAS4APFRoZSBtdWx0aSBmaWVsZCBzaGFyZCBrZXkgZGVjbGFyYXRpb24gcmVmZXJzIHRvIHRoZSB1bmtub3duIMABLgA1VGhlIG11bHRpIGZpZWxkIGlkIGRlY2xhcmF0aW9uIHJlZmVycyB0byB0aGUgdW5rbm93biDAAS4AOFRoZSBzY2FsZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiB0aGUgcHJlY2lzaW9uIGZvciB0aGUgwBAgbmF0aXZlIHR5cGUgaW4gwAEuAAVLZXkgIsAYIiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gwAEuABRJbnZhbGlkIE5hdGl2ZSB0eXBlIMABLgAJRXhwZWN0ZWQgwAwsIGJ1dCBmb3VuZCDAAS4ALVRoaXMgbGluZSBpcyBub3QgYSB2YWxpZCBkZWZpbml0aW9uIHdpdGhpbiBhIMABLgA+SW5jb3JyZWN0IG51bWJlciBvZiBwYXJhbWV0ZXJzIGdpdmVuIHRvIGEgc3RhdGVtZW50LiBFeHBlY3RlZCDABzogZ290OiDAAS4ABFRoZSDAL2luZGV4IGRlZmluaXRpb24gcmVmZXJzIHRvIHRoZSB1bmtub3duIGZpZWxkczogwAEuABRVbmtub3duIGluZGV4IHR5cGU6IMABLgA+VGhlIGBzb3J0YCBhcmd1bWVudCBjYW4gb25seSBiZSBgQXNjYCBvciBgRGVzY2AgeW91IHByb3ZpZGVkOiDAAS4AJkV4cGVjdGVkIGEgcmVmZXJlbmNlZCBzY2FsYXIgZmllbGQgb2YgwAEgwBcsIGJ1dCBmb3VuZCBhIGZpZWxkIG9mIMABIMABLgAoY3JlYXRlIG9yIGNvbm5lY3QgaW5saW5lZCByZWxhdGlvbiBmb3IgJ8ALJyByZWNvcmQocykAHWNyZWF0ZSBpbmxpbmVkIHJlbGF0aW9uIGZvciAnwAsnIHJlY29yZChzKQAddXBkYXRlIGlubGluZWQgcmVsYXRpb24gZm9yICfACycgcmVjb3JkKHMpABhpbmxpbmUgdGhlIHJlbGF0aW9uIG9uICfACycgcmVjb3JkKHMpAAZmaW5kICfACycgcmVjb3JkKHMpABFzdGFydCBieXRlIGluZGV4IMAmIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSDACCAoYnl0ZXMgwAsgb2Ygc3RyaW5nKQAPZW5kIGJ5dGUgaW5kZXggwCYgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlIMAIIChieXRlcyDACyBvZiBzdHJpbmcpAAxCaWdEZWNpbWFsKCLAAiIpABkoQ29udmVydGluZyB0eXBlIGZhaWxlZCkgwAIgKMABOsABOsABKQAHT2JqZWN0KMABKQAHTnVtYmVyKMABKQAFQm9vbCjAASkAB1N0cmluZyjAASkACEpzVmFsdWUowAEpAMABKMABKQAnY2FuIG9ubHkgZmxhdHRlbiBzdHJ1Y3RzIGFuZCBtYXBzIChnb3QgwAEpABVgYXRgIHNwbGl0IGluZGV4IChpcyDAFykgc2hvdWxkIGJlIDw9IGxlbiAoaXMgwAEpABJyZW1vdmFsIGluZGV4IChpcyDAFikgc2hvdWxkIGJlIDwgbGVuIChpcyDAASkAFnN3YXBfcmVtb3ZlIGluZGV4IChpcyDAFikgc2hvdWxkIGJlIDwgbGVuIChpcyDAASkAwAsgKG9zIGVycm9yIMABKQAZVXBkYXRlTWFueVJlY29yZHMobW9kZWw6IMAILCBhcmdzOiDAASkAFFVwZGF0ZVJlY29yZChtb2RlbDogwAosIGZpbHRlcjogwAgsIGFyZ3M6IMATLCBzZWxlY3RlZF9maWVsZHM6IMABKQAUQ3JlYXRlUmVjb3JkKG1vZGVsOiDACCwgYXJnczogwBMsIHNlbGVjdGVkX2ZpZWxkczogwAEpABhNYW55UmVjb3Jkc1F1ZXJ5KG5hbWU6ICfACycsIG1vZGVsOiAnwA4nLCBzZWxlY3Rpb246IMABKQATUmVjb3JkUXVlcnkobmFtZTogJ8AOJywgc2VsZWN0aW9uOiDAASkAG1JlbGF0ZWRSZWNvcmRzUXVlcnkobmFtZTogJ8ASJywgcGFyZW50IG1vZGVsOiAnwBsnLCBwYXJlbnQgcmVsYXRpb24gZmllbGQ6ICfADicsIHNlbGVjdGlvbjogwAEpABtSZWxhdGVkUmVjb3Jkc1F1ZXJ5KG5hbWU6ICfAEicsIHBhcmVudCBtb2RlbDogJ8AaJywgcGFyZW50IHJlbGF0aW9uIGZpZWxkOiDADSwgc2VsZWN0aW9uOiDAASkABkVycm9yKMAILCBsaW5lOiDACiwgY29sdW1uOiDAASkAGENyZWF0ZU1hbnlSZWNvcmQobW9kZWw6IMABKQAEdmFyKMACOiDAASkAwAEoAAJFJ8ABJwANdHJhY2VwYXJlbnQ9J8ABJwAHRmllbGQgJ8AfJyBub3QgZm91bmQgaW4gZW5jbG9zaW5nIHR5cGUgJ8ABJwAhQ2Fubm90IHNlbGVjdCBvdmVyIHNjYWxhciBmaWVsZCAnwAEnAAEnwAEnAAElwAElACBJbnZhbGlkIHJlbGF0aW9uIG1vZGUgc2V0dGluZzogIsAsIi4gU3VwcG9ydGVkIHZhbHVlczogInByaXNtYSIsICJmb3JlaWduS2V5cyIAwAIgIsABIgABIsABIgBPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAQcSWwgALBgEAAACJAQBB1JbCAAsGAQAAAIoBAEHklsIACwYBAAAAiwEAQfSWwgALBgEAAACMAQBBhJfCAAsGAQAAAI0BAEGUl8IACwYBAAAAjgEAQaSXwgAL4QcBAAAAjwEAAHJhd1NxbGFyZ1R5cGVzdGVtcGxhdGVTcWxwbGFjZWhvbGRlckZvcm1hdHNjYWxhclR5cGVkYlR5cGV1bmtub3dudHVwbGVzZXFnZXRnZXRGaXJzdE5vbkVtcHR5ZXhlY3V0ZWNvbmNhdG1hcEZpZWxkZGF0YU1hcHZhbGlkYXRlZGlmZmluaXRpYWxpemVSZWNvcmRtYXBSZWNvcmRwcm9jZXNzbGFzdEluc2VydElkYWRkc3VidHJhY3RwYWdpbmF0aW9ucmV2ZXJzZWxpbmtpbmdGaWVsZHNvbnBhcmVudEZpZWxkaXNSZWxhdGlvblVuaXF1ZWV4dGVuc2lvbmVuY29kaW5nYmFzZTY0b3B0aW9uYWxhZmZlY3RlZFJvd3NkYk5hbWVmaWVsZFR5cGVzZXJpYWxpemVkTmFtZXNraXBOdWxsc2hhc051bWJlcmluZ3N0cmluZ0NodW5rcGFyYW1ldGVycGFyYW1ldGVyVHVwbGVpdGVtUHJlZml4aXRlbVNlcGFyYXRvcml0ZW1TdWZmaXhwYXJhbWV0ZXJUdXBsZUxpc3Rncm91cFNlcGFyYXRvcnJvd0NvdW50RXFyb3dDb3VudE5lcWFmZmVjdGVkUm93Q291bnRFcW5ldmVyc2NoZW1hTmFtZW1heEJpbmRWYWx1ZXNzdXBwb3J0c1JlbGF0aW9uSm9pbnMAAI6NEAAKAAAAmI0QAA0AAACljRAAFQAAADRdEQAIAAAAZGF0YW1vZGVsY29ubmVjdGlvbkluZm8A3I0QAAkAAAA4UREACAAAAOWNEAAOAAAAbXVsdGlwbGFuc2NvbXBhY3RlZHBsYW5uZXN0ZWRTZWxlY3Rpb25rZXlzZXhwZWN0Tm9uRW1wdHltb2RlbF9hX25hbWVtb2RlbF9iX25hbWVkZXRhaWxzbmFtZXNjaGlsZHJlbmNhbkFzc3VtZVN0cmljdEVxdWFsaXR5Y2FsbGVkIGBPcHRpb246OnVud3JhcF90aHJvdygpYCBvbiBhIGBOb25lYCB2YWx1ZXJlY29yZHNzdHJ1Y3R1cmVlbnVtc3J1bGVzZXJyb3JJZGVudGlmaWVyY29udGV4dHRoZW5NYXAga2V5IGlzIG5vdCBhIHN0cmluZyBhbmQgY2Fubm90IGJlIGFuIG9iamVjdCBrZXkxH48QAAEAAABvcGVyYXRpb25zYmluZGluZ3MAAERLEABxAAAApgAAADIAAAABAQAAVW5leHBlY3RlZCBiYXRjaCByZXF1ZXN0/T0QAGUAAADLAAAALQAAAB0gEAAqAAAAOAAAABUAQZCfwgALDgEAAACQAQAAkQEAAJIBAEGon8IAC60CAQAAAJMBAACUAQAAlQEAAJYBAACXAQAAmAEAAJkBAACaAQAAmwEAAJwBAACdAQAAngEAAJ8BAACgAQAAoQEAAKIBAACjAQAApAEAAKUBAACkAQAApgEAAKcBAACoAQAAqQEAAKoBAACrAQAArAEAAK0BAACuAQAArwEAALABAACxAQAAsgEAALMBAAC0AQAAsQEAALUBAAC2AQAAtwEAALgBAAC5AQAAugEAALsBAAC8AQAAsQEAAL0BAAC9AQAAvQEAALEBAAA2NBAAMgAAAC8AAAAOAAAAc3RydWN0IEpzQ29ubmVjdGlvbkluZm9lbnVtIEFkYXB0ZXJQcm92aWRlcnN0cnVjdCBRdWVyeUNvbXBpbGVyUGFyYW1zAgYA/////wAAAAAAAAAAAwBB4KHCAAsO/////wAAAAAAAAAAAwEAQfihwgALDv////8AAAAAAAAAAAMIAEGQosIACw7/////AAAAAAAAAAADBABBqKLCAAsO/////wAAAAAAAAAAAwIAQcCiwgALDv////8AAAAAAAAAAAMHAEHYosIACw7/////AAAAAAAAAAADBQBB8KLCAAsO/////wAAAAAAAAAAAwMAQYijwgALDv////8AAAAAAAAAAAMGAEGgo8IACxX/////qVURAAgAAAD/////yJAQAAEAQcCjwgALFf////+xVREABwAAAP/////IkBAAAQBB4KPCAAsV/////+xYEgAGAAAA/////+CQEAABAEGApMIACzX/////OAASAAcAAAD/////+JAQAAEAAAAAAAAAAgAAAP////+4VREABQAAAP/////4kBAAAQBBwKTCAAsV/////71VEQAEAAAA/////xCREAABAEHgpMIACxX/////wVURAAMAAAD/////yJAQAAEAQYClwgALFf/////EVREABgAAAP////8QkRAAAQBBoKXCAAsV/////8pVEQAEAAAA/////yiREAABAEHApcIACxX/////zlURAA8AAAD/////KJEQAAEAQeClwgALVf/////dVREABwAAAP////8QkRAAAQAAAAAAAAABAAAA/////zyoEQAEAAAA/////xCREAABAAAAAAAAAAEAAAD/////2HgRAAQAAAD/////EJEQAAEAQcCmwgALFf/////kVREABQAAAP////9AkRAAAQBB4KbCAAtV/////+lVEQAJAAAA/////1iREAABAAAAAAAAAAEAAAD/////8lURAAsAAAD/////WJEQAAEAAAAAAAAAAQAAAP/////veBEABAAAAP////9YkRAAAQBBwKfCAAtV//////N4EQAEAAAA/////1iREAABAAAAAAAAAAEAAAD//////VURAAYAAAD/////WJEQAAEAAAAAAAAAAQAAAP/////kTBIABwAAAP////9wkRAAAQBBoKjCAAtV/////wNWEQADAAAA/////xCREAABAAAAAAAAAAEAAAD/////BlYRAAYAAAD/////EJEQAAEAAAAAAAAAAQAAAP/////yTBIABAAAAP////8QkRAAAQBBgKnCAAsV/////+x4EQADAAAA/////xCREAABAEGgqcIACxX/////9kwSAAQAAAD/////iJEQAAEAQcCpwgALFf////8MVhEABQAAAP////+IkRAAAQBB4KnCAAtuUG9zdGdyZXM2NBAAMgAAAKYAAAAVAAAAYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkAL4BAAAMAAAABAAAAL8BAADAAQAAwQEAQdiqwgALFQEAAADCAQAAUDIwMTJQMjAwOe+/vQBB+KrCAAtuAQAAAMMBAAChLhAASAAAAN8AAAA3AAAAoS4QAEgAAADgAAAAKwAAALxYEABJAAAAlQEAADIAAABEUhAAUAAAABwAAAAFAAAAB1MQAEwAAADPCAAADQAAAMQBAAAMAAAABAAAAMUBAADGAQAAxwEAQfCrwgALowYBAAAAyAEAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90AAAJIxAASAAAAI8CAAAOAAAATGF5b3V0RXJyb3IAyQEAAAwAAAAEAAAAygEAAMkBAAAMAAAABAAAAMsBAADKAQAAbJYQAMwBAADNAQAAzgEAAMwBAADPAQAAOx4QAHsAAABUAAAACQAAAOFJEAB0AAAAZQAAADgAAADhSRAAdAAAAGEAAAANAAAA4UkQAHQAAABe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QkJCQkJCQkJCQkJCQkJCQkJCQgAAAAAAAABISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISgAASkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMAAAAAE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QAABQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFIAAAAAVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFYAAFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYAABYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFoAAAAAXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF4AAF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYAAAAABiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGBOYWl2ZURhdGVUaW1lIC0gVGltZURlbHRhYCBvdmVyZmxvd2VkAC1QEABpAAAAHwcAACYAAACuRxAAZgAAALMBAAAqAAAArkcQAGYAAADYAQAAFAAAAK5HEABmAAAA4QEAAEAAAAAAAAAAZJkQAAEAAAAECAEAQfDCwgALC2SZEAABAAAABAIBAEGJw8IACwqxEAABAAAABAcBAEGhw8IACwqxEAABAAAABAgBAEG4w8IACwtGGRIAAQAAAAQRAQBB0MPCAAsLRhkSAAEAAAAEEQEAQejDwgALC0YZEgABAAAABBIBAEH8w8IA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AAAAAAAAECcAAAAAAACghgEAAAAAAEBCDwAAAAAAgJaYAAAAAAAA4fUFAAAAAADKmjsAAAAAAOQLVAIAAAAA6HZIFwAAAAAQpdToAAAAAKByThgJAAAAQHoQ81oAAACAxqR+jQMAAAAAAAQAAAAEAAAA0AEAAAAAAAAEAAAABAAAANEBAADHWxAAWAAAACsAAAAjAAAALStOYU5pbmYwMC4wZTBlMGFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBzaWdfZGlnaXRzAAAAVFMQAFcAAABDAgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBtYXhsZW4AAABUUxAAVwAAAIsCAAANAAAAAAMGCQ0QExcaHSEkJysuMTU4OyB7ICB7CigKYXR0ZW1wdGVkIHRvIGJlZ2luIGEgbmV3IG1hcCBlbnRyeSB3aXRob3V0IGNvbXBsZXRpbmcgdGhlIHByZXZpb3VzIG9uZQAAAHkoEABQAAAA2QMAAA0AAABhdHRlbXB0ZWQgdG8gZmluaXNoIGEgbWFwIHdpdGggYSBwYXJ0aWFsIGVudHJ5AAB5KBAAUAAAALEEAAANAAAAZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3Apc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWludmFsaWQgaW5wdXQgcGFyYW1ldGVyaW52YWxpZCBkYXRhdGlt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ANvniBwAAMKJihwAAP//eR0AAASKfR0AAOYOjh0AADiKAR6UAf//mx4AAMX/oR5eAf//AB8HAAgAEB8FAAgAIB8HAAgAMB8HAAgAQB8FAAgAUR8GAQgAYB8HAAgAcB8BAEoAch8DAFYAdh8BAGQAeB8BAIAAeh8BAHAAfB8BAH4AsB8BAAgAvh8AANvj0B8BAAgA4B8BAAgA5R8AAAcATiEAAOT/cCEPAPD/hCEAAP//0CQZAOb/MCwvAND/YSwAAP//ZSwAANXVZiwAANjVaCwEAf//cywAAP//diwAAP//gSxiAf//7CwCAf//8ywAAP//AC0lAKDjJy0AAKDjLS0AAKDjQaYsAf//gaYaAf//I6cMAf//M6c8Af//eqcCAf//f6cIAf//jKcAAP//kacCAf//lKcAADAAl6cSAf//tacOAf//yKcCAf//zacOAf//9qcAAP//U6sAAGD8cKtPADBoQf8ZAOD/3wBTAFMAAABJAbwCTgAAAPABSgAMAwAAkAOZAwgDAQOwA6UDCAMBA4cFNQVSBQAAlh5IADEDAACXHlQACAMAAJgeVwAKAwAAmR5ZAAoDAACaHkEAvgIAAFAfpQMTAwAAUh+lAxMDAANUH6UDEwMBA1YfpQMTA0IDgB8IH5kDAACBHwkfmQMAAIIfCh+ZAwAAgx8LH5kDAACEHwwfmQMAAIUfDR+ZAwAAhh8OH5kDAACHHw8fmQMAAIgfCB+ZAwAAiR8JH5kDAACKHwofmQMAAIsfCx+ZAwAAjB8MH5kDAACNHw0fmQMAAI4fDh+ZAwAAjx8PH5kDAACQHygfmQMAAJEfKR+ZAwAAkh8qH5kDAACTHysfmQMAAJQfLB+ZAwAAlR8tH5kDAACWHy4fmQMAAJcfLx+ZAwAAmB8oH5kDAACZHykfmQMAAJofKh+ZAwAAmx8rH5kDAACcHywfmQMAAJ0fLR+ZAwAAnh8uH5kDAACfHy8fmQMAAKAfaB+ZAwAAoR9pH5kDAACiH2ofmQMAAKMfax+ZAwAApB9sH5kDAAClH20fmQMAAKYfbh+ZAwAApx9vH5kDAACoH2gfmQMAAKkfaR+ZAwAAqh9qH5kDAACrH2sfmQMAAKwfbB+ZAwAArR9tH5kDAACuH24fmQMAAK8fbx+ZAwAAsh+6H5kDAACzH5EDmQMAALQfhgOZAwAAth+RA0IDAAC3H5EDQgOZA7wfkQOZAwAAwh/KH5kDAADDH5cDmQMAAMQfiQOZAwAAxh+XA0IDAADHH5cDQgOZA8wflwOZAwAA0h+ZAwgDAAPTH5kDCAMBA9YfmQNCAwAA1x+ZAwgDQgPiH6UDCAMAA+MfpQMIAwED5B+hAxMDAADmH6UDQgMAAOcfpQMIA0ID8h/6H5kDAADzH6kDmQMAAPQfjwOZAwAA9h+pA0IDAAD3H6kDQgOZA/wfqQOZAwAAAPtGAEYAAAAB+0YASQAAAAL7RgBMAAAAA/tGAEYASQAE+0YARgBMAAX7UwBUAAAABvtTAFQAAAAT+0QFRgUAABT7RAU1BQAAFftEBTsFAAAW+04FRgUAABf7RAU9BQAAKAQnANj/2AQjANj/lwUKANn/owUOANn/swUGANn/uwUBANn/wAwyAMD/cA0VAOD/wBgfAOD/YG4fAOD/u24YAOX/IukhAN7/AADUwhAAuQAAACrHEABmAAAAWsoQAAwAAAACAAAAAAAAALACAABdE2ABEhfgIL0fICF8LCAvBTBgMxWg4DT4pGA2DKagNh774DYA/uBC/QFhQ4AHIUcBCuFHJA2hSKsOIUovGCFLOxnhWvMeYVswNKFjHmEhZfBqoWVAbSFmT2/hZvCvYWedvKFoAM9haWfR4WkA2mFqAOCha67iIW3r5CFv0Oihb/vzYXEBAO5x8AE/cgADAACDBCAAkQVgAF0ToAASFyAfDCBgH+8sYCsqMOArb6agLAKoIC0e+yAuAP5gNp7/oDb9ASE3AQphNyQNITirDqE5LxghOvMeIUtANKFTHmHhVPBqYVVPb+FVnbxhVgDPYVdl0aFXANohWADgoVmu4iFb7OThXNDoYV0gAO5e8AF/X2AGAABmCeAAQBCgAWkT4AXuFmAGRhmgBnAgoAdgJKAJdifgCv0sYAsHMKALkjHgCyCmoAwwqCAO8KugDhD/IBAHAWEQ4QKhEFgIYRH6DOESYA6hFlAUYRdQFuEZ4BhhGvAbYRtQH+EbACQhHTBhoR1gauEdcG0hHoBuIR/0b2Ef8MyhH8DS4R/O1yEgQOHhIPDiISHw5GEhx+ihIXHsISIA8aEi8PvhI/r7MiTFAQAAiB8gAP0fMQEAQAG4AbYBswGsAagBoQGSAZABjAGIAYQCkgKQAlMDXQOTA4UEDAQGBbsGTgBByJnDAAvAA/8AAAD8//8PAqiqqqqqqqr///////8HAP/9AAAA/P//AAAAAAAAAoAAAAD/////D4Wq////////AAAAAP////8AAAAA/P///wAAAAAA////7/8AAAD8//8AAAEAAPD/////DwAAwP//////9/8D///AQwAAAAD//wAAAAAAAP//AAAAgP//f//A////AAAA/AAAAAAAAAD4AAD///////f8///3AwAA8FTVqqqqqqqqqqqqqqqqqqqqqqqqqqqqVf8A/wD/AN9APwD/AP8A/z//////YhXaPwAAAAAAAAA/IAAAAAAAijwAxAgAAIAQMgAAgP/7//sb/3/jqqqqLxm5///////9BwqlqgoAAF4HAAAAAAAEIAT//8//////Af8APwD/AP8A3ADPAP8A3ACqqqqqGlAIAP////+/IAAA//v/f+AHAAAAwN///wAAAAMAAAAfAAAAqqqqOgAAAAB/APgAAAAAAPcLAAAAAAAA/wUAAAAAAACqqqqqqqr6k6qqqqqqqv+VQFJVtaqqKaqqULqqqoKgqv////+qqqqqAAAAAKiqq6pVq6qqqqqq1CkxJE4qLVHm/P//DwAAwOsAQaWdwwALAT8AQbSdwwALAxAOOQBBxJ3DAAsBKQBB1J3DAAsBLQBB4Z3DAAsDCBM+AEHxncMACw1FLAA1MTMiAAAAAAk6AEGLnsMACwQDABA7AEGbnsMACwEUAEGnnsMACwUcAAAAQABBu57DAAsBSQBByp7DAAslIxEYNjcyMAckKwAdDCAAAC8AOTk5ABcXRxclGhkmAAVIAB4PTQBB+J7DAAsVCj0ABgAAHwAAAAAAAAAhABAbFycoAEGYn8MACwcQNAIWRgg8AEGon8MACwIQSgBBuJ/DAAuAPEMqOAtEQRINAUJOFUtMBC4AtgBKAKYAogCfAJYAlACOAIYAgwBAAUIBRgFTAQwBCAKSAowChgKCA6QDkgMUBLIEqwAAAAAAAP///////z8A/z8AAAD///8BAAAA/P//BwFUVVVVVVVV9VpVFQAAIAAAAAAA//////8DAAAA////X/wBAADw////A////wP//wAAAAAAAP//VVVVVVVV/v8AAAAAAABFgLDn3x8AAAB7VVVVVVVVBWxVVVVVVVUAapCkqkpVVdJVVShFVVV9X1VVVVVVVVVVVasqVVVVVVVVAAAAAFVVVVUAAAAAVFVUVapUVVVVVVUr1s7bsdXSrhEADwAPAB8ADwAAAAAAAAAPPwAAAP///wMDAADQZN4/AFVVVVUFKAQAIAAAAP//AAAAPwCqAP8AAEDX/v/7DwAAAAD//z8AAAD//39/AAAAAP/3NwAAAAAAelUAAAAAAAC/IAAAAAAAAFVVVVVVVVWqhDgnPlA9D8AAAAAAneolwACAHFVVVZDmAAL//////+cA////AwAA8AAAAAAAAP/3AP8APwD/AP8sLAUjLCwsLCwsLCwsLAUALCwFLCwsLCwsLCwsLCwsLCwsKCwsLCwsERFCESsdGBcsLCwgJBUWDw0iLCwsCx4nLCwsLAkILSwsLCwsLCwsLCwsLCwlHEMsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsOSwsLCwsLCwsLCwsLDE/LCwsLCwsLCwsLCwsLCxBQCwUDhAELCwsLDIsLCwsLCwsLCwsLCwsNSwsHywsLCwsLCwsLCwsLDYuLCwsLCwsLCwsLCwsMywJLywqISwsLCwsLCwsLDQTAxIKMCwsLCwsLCwsLCw0JhEbLCwsLCwsLCwsLCwsOgEaNwwHGTgpOwYCPj08RBw1EABfAAAA9gAAABUAAAAcNRAAXwAAAAEBAAAYAAAAAAAACAEIAwgGEAkQDRASGBcYHRgkICsgMyA8IEYoUChbKGcwczCAMI44nDirOLs4zEDdQO9AAkkVSSlJPlFTUWlRgFGYWbBZyVnjYf1hGGI0alBqbWqLaqpyyXLpcgp7K3tNe3CDk4O3g9yDAowojE+Md5SflMiU8pwcBRwFHAUcBQUCBQECBQYCBQMBAgUBBQYCBQcIAQIFAwkABgIFAQkFAwECBQkHBgUGAgUECAgCCAECBQIEBAEEAAYCBQECAgAHAAMBAgUGAQADBQEFBgIFAwAFAQcFBwgBAgUBBQIFCAcICQAGAgUHBgIJAwkEBQMBAgUDCAEEBgkHAgYFBgIFAQkABwMECAYDAggBAgUJBQMGBwQDAQYEAAYCBQQHBggDBwEFCAIAAwECBQIDCAQBCAUHCQEAAQUGAgUBAQkCAAkCCAkFBQAHCAECBQUJBgAEBgQEBwcFAwkABgIFAgkIAAIDAgIDCAcGCQUDAQIFAQQJAAEBBgEBCQMIBAcGBQYCBQcEBQAFCAAFCQYJAgMIAggBAgUDBwIFAgkAAgkIBAYBCQEEAAYCBQEIBgIGBAUBBAkCAwAJBQcAAwECBQkDAQMCAgUHBAYBBQQHCAUBBQYCBQQGBQYGAQIIBwMABwcDCQIFBwgBAgUCAwIIAwAGBAMGBQMIBgkGAggJAAYCBQEBBgQBBQMCAQgCBgkDBAgBBAQFAwECBQUIAgAHBgYACQEDBAYHBAAHAgIGBQYCBQIJAQADCAMABAUGBwMDBwADBgEDAggBAgUBBAUFAQkBBQICCAMGBggFAQgABgYEAAYCBQcCBwUJBQcGAQQBCAMEAgUJAAMDAgADAQIFAwYDBwkHCAgABwAJAQcBAgkFAQYGAAEFBgIFAQgBCAkICQQAAwUEBQgFBgQHBQgDAAAHCAECBQkACQQJBAcAAQcHAgkCCAIDBwkBBQADCQAGAgUEBQQHBAcDBQAICAYEBgQBAQgJBQcFAQkFAwECBQICBwMHAwYHBQQEAwIDAgAFCQQHCAcFCQcGBQYCBQEBAwYIBggDBwcCAQYBBgACCQcDCQMHCQgIAggBAgUFBggEAwQBCAgGAAgACAABBAgGCQYICQkEAQQABgIFAggEAgEHAAkEAwAEAAQAAAcEAwQIBAQJBwAHAAMBAgUBBAIBAAgFBAcBBQIAAgAAAwcBBwQCAgQIBQMFAQUGAgUHAQAFBAIHAwUHBgABAAABCAUIBwEBAgQCBgcFBwgBAgUDBQUCBwEDBgcICAAABQAACQIJAwUFBgIBAwMHCAkABgIFAQcHBgMFBggDCQQAAAIFAAQGBAYHBwgBAAYGCAkEBQMBAgUICAgBBwgEAQkHAAABAgUCAwIDAwgJAAUDAwQEBwIGBQYCBQQEBAAICQIACQgFAAAGAgYBBgEGCQQFAgYGBwIDBgMCCAECBQICAgAEBAYABAkCBQADAQMACAAIBAcCBgMDAwYBCAEGBAAGAgUBAQEAAgIDAAIEBgIFAQUGBQQABAIDBgMBBgYIAAkACAIAAwECBQUFBQEBAQUBAgMBAgUHCAIHAAIBAQgBBQgDBAAEBQQBAAEFBgIFAgcHBQUFBwUGAQUGAggJAQMFAQAFCQAHCQEHAAICBwAFAAcIAQIFAQMIBwcHCAcIAAcIAQQEBQYHBQUCCQUDCQUIBQEBAwUCBQMJAAYCBQYJAwgICQMJAAMJAAcCAggDBwcGBAcGCQcJAgUFBgcGAgYJBQMBAgUDBAYJBAQGCQUBCQUDBgEEAQgICAIDCAQICQYCBwgDCAEDBAcGBQYCBQEHAwQHAgMEBwUJBwYIAAcACQQEAQEJAgQECAEDCQEJAAYHAwgCCAECBQgGBwMGAQcDBwkICAQAAwUEBwIABQkGAgIEAAYJBQkFAwMGCQEEAAYCBQAAHDUQAF8AAABzAQAAEwAAAAtFEABZAAAArgAAABMAAABa1juS1lP07j87oQYpqj8R+GVlG2a0WJUHxSSkWcrHSna/PqJ/4a66SfYtDfC8eV1Tb86K35la6dxzeRAsLNj0lAXBtiug2JFp6EuKmxsHeflGcaQ2yE62hOLebILiSJe3mI1NRHri4yWbFggjGxv9cn94sGqMbY73IA7l9fAw/k+fllyF7wiyNalRXjMtvb0jR7yzZiuL3oIT5jWAeCytdqxVMCD7FosxzK8hUMs7TJMXazzoudytPb8bKiS+St943YVLYuhT2Q2vojStbR3Xa6ozbz1x1IdoreVAjGRyhgaVAMuMjcmpwhgfUa/9DmhIusD97/A71PLeZiUbvRICbXSY/pV2pYRXS2D3MLZLAYiRPn471M6lLV44Nb2jnkHqNc5dSolCz7l1hoKsTAZSsuGges6ViYGTCZTR6+9Dcx8aSRlC++uh+Av5xebrFBCmYJufEvpmyvZOd3fgJhrU0DiCR5e4AP20IlWVmLAgiYJjsYxecyCesDVVXV9utFVivN0vNpCoxR2DqjT3iSHreyvVu0O0EvfkI9UBdezppS07ZVWqsGuabjYlIckzskf4ib7q1JwGwQqEbmm7wJ6ZdixuJQpESPENJcpD6nAGwMrbZFeGKs2WKFdeapIGBDi8Ej7tJ3WAvPLs9QQ3CAXGa5eN6HGSoOsuaDPGREqG96N+WDGHW0STHSHg+2rus3pMnq79aHIVuGQp2LoF6mBZ30UaPQPPGua9M44phyS5b6trMAZiwdCPVuD4edS206WWhryHuvHEs2wYd5iJpEiPPKirKSkutuCH3pT+q80aMyVJC7rZ3HGMFAsdf4vA8J9vG44oEFSOr9lN5F6u8OwHSqKxMhTpcdtQYZ322SzoyW4Fr5+sMSeJ0lwiOggcMb7KxprHF/5wqwb0qkgKY71tfXiBuZ09TdYIsdXazLssCU7r8JOCRvCFpY7FCGD1uyUhJu04I1hsp07y9gq48iqvqm8oByxuR9HhrrQNZq/1GspFeYTbpMyCTe2QyJ+N2VA8l5dlEs5/o6AotboH8Q/lDH39/pbBX8zIcmKpSe1THk/cvL78sXf/eg+7E5zo6CWxCTb3Pc+qn6zpVIxhkbF3HYwDdQ2DlccXJGrvufWd1SVvRNLQ43r5Ha1EayhzBUt3xWqDYs7smzLsCkP5Z+NO1XZFJPsB6MI/p82T90GcIorUVu15AqLzDxHBeHVSQ2vWRFY0jEFFmKmqeGuJEwqDDNZrQe+RVr5T1VbGa5jMI4/LxhFrNuztqIrst4a+vyw5PxzrAqKzlKnW8zIU1/d7B0/jpYOK4LlTzLA/2cz12skiXI8krVjoaP+cjw9As9G+lZnZNmw3kaEfwrkJCBAjLfv/j0RHhbWKpzIoDArUq/n5/7MVmebibFE/Mo8MyRY7/H+QrR/QjeOSZ3/Zpz2uSvuf9JgnRLGcd0HfzxHNmR36xzF/MZXdg9UR10NWQEBS/Bx/7z59inIla2bqNShIZjvkXquOHK3P7gUAZUMy2kBKnTZWsmPYgmoHQD7UvpBoTiLidU8+h5GiBOimRHdaAuKqWlPjDak2ywWi0BUVcYOaVTEoXFHTAz6HykRbWg2RgNUemdkShMKGlP4KeVjotuCKZv+PF6VyqDm+TZduYuOYLUD/c13OjxLILSE9CvuOfxyIf2j6gJkLnbw0ZuZ8cp8jap8COaGATsTrwf8fHE6HrERHQ4fJIGK1ZrL/J6MiqdcVGRTp+6i6YgCf//FLtcmmrY+scZ2ptD1gwz93byJ8EJmzF87E0yFNOLQPVcsrm1R/oJ0B9khqYEahUyp+++CUT4QCwZltQvzLRHTaLjkZemMlQzHACFP7/lURkfqIn1i87pM98Monun6rVTV5tWO3NXV8JpbeWDQvi1XBS6I8JYOSG7C7Fm8B++2qsZ7Li+4jdyKc6tzKwXmpFV5GXxd1doqVoZLJHhnsic36CzZdEhTt+km3e2YfZ+yA+c6E9BZZqHkc5RpA54An4beC0liuNwnMMY8QiJCwuOyy0QfvmYULP/6yFaq03OanH4bJagBnzs6935rU4ZPgkadnvUJgAEGh1ovgJG1cLLvI4G1TeECRScyuGG6Ic/fp+lhIaJaQ9Vt/2p6JalB1pDmvLQFeenmZj4gDlkJSyQaEbXiB9djXf7OqgzvTpnsI5cjW4TLPzV9g1WQKiJCaSh77Js1/oeA7XIV/BlWaoO7yXG/A38nYSrOmHkjqwEiqL/SLsFf8jh1g0CbaJPHalDvxV862XXkSPIJYCLfWCD3Fdu2BJLUXF8uibspkDEuMdlRoom2i3dx9ywn9fc9dL5SpAgsJCxVUXf5MfF1DNTv50+Gm5SaNVPqer20aSgHFe8SaEJ9wsOm4xhsJoZxBtpo1wNTGjBwkZ/hiS8kD0mMBw/hE/NeRdkCbHc9dQmPe4Hk2VvtNNpQQwuRC9RL8FVmYxCt64UO5lPKdk7IXe1tvPlpb7GzK85yXQpzP7iyZBacxcicIvTCEvVODgyp4/8ZQvU4xSuw85ewoZCQ1Vr/4pDbRXq4TRg+Umb424ZV3G4eEhfaZmBcTuT9uhFl7VeIo5SZ0wH7dV+fPieUv2uoaM0+YSDhv6paQIXbvXcjS8D9jvloGC6W8tKlTa3V6B+0P+23xx03O6+GUKMYSWUno073k9pzwYDONXNm7q9ctcWTsnTTELDmAsLPPqpZNeY29Z8VB9XdHoNygg1X8oNfw7GAbSfmqLOSJRHK1ncSGFvQ5Ypu31TddrNXOIsV1KBwxxzqCJcuFdNeLgms2kzJjfbxkcfee06iGlzEDApz/Xa7rvU21hghTqPz9gwKDf/XZZi2hYqjKZ9J7/STDY99y0GC8pD2p3oCDbR73WZ7LR0J46w2NUxZhpAjmdPCFvtlSVmZRcOhbec2LH5JsJy6QZ/bfMkZx2WuAtlPbo9gcugDzl7+Xzc+GoKQo0swOpOiA8H2v/cCDqMjNsgaAEs0iYWxdGz2xpNL6gV8IIFeAa3ljGjHG7qbDnLA7BXQ2MOPL/GC9d6qQ9MOcigYRRPzbvju5rBXVtPH0RC1IFVX7ku7F84stBREXmUocTS0V3Rt1tvDueEbVXL9dY6B4WtRi0uSsKheYCjTvNHzIFnGJ+4YOrHoOn4aAlaBNPa7mNV3UElcZ0kao4LoJocxZYIN0idesn4ZY0pjpS8k/cDik0SsGzCNUd4P/kc/dJ0ajBmN7CL8sKVVkf7ZC1bEXTMg7Gsrud3NqPR/kk0qeHV+6yiA+9SqIYoaTjpzugnJ7tH5UjbI1KvtnOLJDqiNPmmGe6TEfw/T5gcbe1JTs4gD6BWR+8/k4PBE8iwTd041AvIPeXnA4R4sVC65F1EixUKsklnaMBhnu2o3ZVwmb3STWrTvJF6TP1Kj4h9blgArXpUzlvB2NAwrT9qlMHyHNTM+fXitlcITMh3TUH2dpACDDR3Y7P8bS39TIhHPgQQD02ewpCc93xxcK+6WQWFIAcRBo9MzCVbmdzHnPtO5mQI0UgnG/mdWT4h+sgTBVQEjYTPHGLwDLONsnF6J8alBaDqCtuDvA/QbS8ZzKHIXk8BEI2aZKML2IRi5E/WOmHW0WSo+QLj52FeycSp7+hzIETo5ZmrrN0xonRN3F/Sk/heHx70AowYjhMJVU93z0juZZ7ivRuXj1jD7dlJrOWBkw+HS7gufWMjCOFDrBAa8fPDZSauOhjD+8sZmI8cGaJ8vD5kTc5benFQ9g9Za5wPheOhCrKd6lEdsSuLK85/C29kjUFXRWD9aRF2bf6yGtZDRbSRsRlcklu86fa5M07L4A2Q2xyvs772nCh0a4QqfuQE9RXT36CmsEsylY5hJRKhGjpbQM3ObC4g8a94+rcrrqhefwR5Ogc9uT4PSzVg9pZWch7Vm4iFDSuBjy4CxTwz7BaWgwc1Vyg3NPl4z7EzrHGEJBHs/qTmRQI72v+pgI+Z6S0eWDpWJ9JGys2zm/SrdG90XfcqddzpbDS4mDt44yjLqLa08R9YF8tJ6rZGUyPy+pbgaiVXKim2GG1r3+/g57UwrIhXWHRQH9E4Y2X1/pLHQGvedS6ZZB/JinBDe3IzgRSCygp6P8UTt/0cUEpSyGFVr3xEjmPROF74L7Iufbc02YmvXaXw1YZqujuuvg0tBgPsGz0bcQ7j+WzKgmmQcF+Y0xH8bllOnPu/9ScH9JRnfx/dObD/3xYdWfM6bv7Yvqtv7IglN8brrKx8CPa+kupWT+e2NoGwppvfmwc8ajes79PS0+IVGmYRacTghcpgyhvga4jWnlD/obw2IK889PSW5IJvHD3pP44vP6zO/Do9uJWrd2Omtc222YHOB1WkYplvhlFAmGM1KJviNYE/GXs7v2f1mLZ8CmK+4sLljtfaBqdO8Xt0A4SNuU3BxXtE6kwqjr3eRQRhoSuhPkbGFiTfOSZhUe5deglugXHcj5uiCwd2DNMu+GJF6RLhId3HQUzgq4gP+qqK21tbpWJBOSmYEN5mC/1RIZI+NpbO2X9v/hEI+cl8Wr7/WNwWP0Hvo/jcqzg/22lmtzsbJ8sab4jzC9oOS8ZHxG0N3e213Q9rN8rOQO9r4NLKKKa6k6QnrwzWudkrMuEbdKrcZTydKYbMGGRHdgetVkndi3qHsHv8dx6ItKfGwFX2KHckmtZNccRxEtXZvHxvY6qc+b2D0N5JjVeTSCeXi0idPDwk6NEB3/Sstg8UvLEDaEujlRWCpy387+uO0e/pRDpSiIZe60TpfCPieppj16lM4y6v4pYiI9c4e4KYhmzByBX1I/Wn01BgioJjQqgP9jofcmz7DcwgfKUjDBNGD/vMm18ALdk7OJ/Gd88UE4Pyz84qxD1HggrLvA7TYpg6ebnQ1MqoRLlEvVMamE82ORAsUR39RlXnmeCn3TZfC8NUP21RZK/7UXRk0upD8WlgHqmUVOjr/RzktQOY3Pm/uBZMDW4XEvhsJe5Ihww4J6on3wTFpOuydzdl1VJrqRjIVOlm/4ENX4B2o66q8otu8m4ruLNlUK94kEieXbsqOrsNrqLoTqzHSsRStvyU9Ga67Ikp2SEgDJiws7y7vjFwbaerdENxdAu27OCb2q3J2HkFnlFQUdEGoKQsy26qnCVPpXjy0jEkqCRqmfZGVU8+n4LbP5q5bcIpiTR71+KXAkd/nf91a8kyt+eFk27xnGdur7i1q2VTzbTutXA2ugdxTl+q7xI2sLkiLm7cSFiJVZnrna7exFjjarX+mbU3X99wK0iBS06xgCy9sRgajS/LUD4aoZoSafwr1S1qJSB3yjRJnVX0nwRjNt50ulk4Qt5sp/hdstVgxApHBvjrjluJ+936ZSuWsPUM1My7ImH6cHrZfQp6dGE6QAIH4veHPIJMxegsgoDIxmANSOO1aQ+i1/9qL6Mg8vgACJcsprNHn5HrTLuf/SOqBAK0+8hoHXtyah/qi/h0nIEPbiNvSw5jK4JJ/J1/QtfcrZDUMxXaA/5u3Guw1yeRw9UJGUfXSIz1+p+CqRzpdjTKR1fM5IteHbaZu6GuE+vq+GyRsCmyLaUkTCaGGZzq1b6PuiwkGrkGfV8sO5P0KZcuL6pRkJa7pgxZca1GfJn4fN3A9gywXpuLa9IMnBu4fpAFQTOD5HI2ck7Wg7sqrpIwEpC+OGDHbANpQhZa8Kcrag+c6bqI+TcES5aT5bjQ7kCPjCwpJzuIyV5wQOsjASHQu2ubk7SPN3vZDCSG9eK/LGsSioShrw1ey08xoLNrauOB4yUt0gbAso4rDhjcNj2sYlX1OKlCMHWY0OrThafkicVzforHnsSK+wUdjG8J1agy1EIhiYJxvb3GWO+GxFMeT4axUPv/jwCIr/WBtky56OG8Xa0u42LYusPy8iPX5GcuJ3kYeqhPit1w+7aswd2A5b6rqU6lK7zIbptMKfEkfpmKXpOaUn6n+oJGKzR9eYIz8OZIiOseSf0q06oBkNf+yOiT4V+e7uo4OsJAQwaM9TGSuOWreq6oyk1y0FPELDqF+2MTFlVSWwzU15BssS9JI3Eb8+X1UXjoDQC+S+i9i74tZuDrcqnbGgxA6drq7OaluLCtJkdQTeyHVSRFpagkXyLo0GvpKFFfsSZ9Xw8OLW7j0YxLZ7c+2ca2CFltZNRlVMHnWkWtAoxIa4JjxM4Zeq32WSTXEEM/WoZjBLn9k91at/e9DG4j+ZKUD+jgOoRuWWX5qEeNuPvzPQvXIEUpjefPfApVbSc+9ARG2PhWY+lq2amCd2Y6iVqEqkeRMA591ZwX6xU3wSu1JdDVgYwGBVr3HenWgb1+mmtBBuHvC4qg0Hq2IhcSaS6HDKBBOWs8rRyFW7aQ2wtiIN/cWXe2A9BTsrKsQQXORqUHy3fZq4jOMEW5p6irmOQrKtko5g83ccxvFAGe1nstMeWTeyOPBVozcukV/oAd+IZi/F3kZsa8bivLo7MWGLFaA9O0usIyN3G2ypin05rhoIDQpel+yrVSLHU+3cx9khSpCMNb3nlnV1XFQU6hyIVC7ad0HWUH7SknNpmSQkqum50NXRC+Xdh3fQw78trdRk6ERLxk5elbRKYtqXPOyEPhEL7zvxWr1h3frQvUsnpo7VzeqKrbHsupQ5Ra0esc/ySoGl7RjeZ/T8Q0sss86B185wh5TP6oAx/BRe919Coo0CTal5gyWhPjuaNfX30sowQ6ATWORuCQ3KAIPytYf9/FOIGG6dyotIfuCRt9F0nn40Vc9kol532p1YdiUGEsaegSoD/ko2lVHF7tOuh5b3BSL1g73dgzpSO3VEzRS+mkM1eXKWapLEJ4qSlQCabcGUghcPPAW3dbEs97qAAMnxOWPdEovGJFPue9p0UKAdlwReyusW/PbT6hoRkmQI5byF9bymHLv0iKVhlbZ9Sh7s5jJs0OPpMSsHXR2Sju6Sk9CfQ2IuMv86SbSkNjKqd7jDh9T6uf6+CVvhTcS+lJXmtKmJeWi+LkzZrLA693wdkBEK9ksBN50PD9hcCTXcJLSVjPOewYSEUxMOtEtCEy7hum+wBvKlZSjLiFBvCcy8jNRFLkS3hz/5/qokywv/669J1zkVpWmP977V7b3O/ubbHE2IWg5Ec7WXpbQ2QV9wiTEwlfiICmgx/M5hhBF3zKs+fLo2Kw3C/bxCeuXVlL/WTRtpBHaQMj21aWyvBb03hhCxwcJJmj+mI4RHG0esxadUHXIz3IDPDytlGeJYF7fRqaROQBNhw9M730+Nl24Sg+omMQisHFpkCtejcD0K16OkcD0K16NwPczMzMzMzMzMzczMzMzMzMwAAAAAAAAAgABBx9vDAAsBoABB19vDAAsByABB59vDAAsB+gBB9tvDAAsCQJwAQYbcwwALAlDDAEGW3MMACwIk9ABBpdzDAAsDgJaYAEG13MMACwMgvL4AQcXcwwALAyhr7gBB1dzDAAsD+QKVAEHk3MMACwRAt0O6AEH03MMACwQQpdToAEGE3cMACwQq54SRAEGT3cMACwWA9CDmtQBBo93DAAsFoDGpX+MAQbPdwwALBQS/yRuOAEHD3cMACwXFLryisQBB0t3DAAsGQHY6awveAEHi3cMACwboiQQjx4oAQfLdwwALBmKsxet4rQBBgd7DAAsHgHoXtybX2ABBkd7DAAsHkKxuMniGhwBBod7DAAsHtFcKPxZoqQBBsd7DAAubKaHtzM4bwtMAAAAAAAAAAKCEFEBhUVmEAAAAAAAAAADIpRmQuaVvpQAAAAAAAAAAOg8g9CePy84AAAAAAAAAAIQJlPh4OT+BAAAAAAAAAEDlC7k21wePoQAAAAAAAABQ3k5nBM3J8skAAAAAAAAApJYigUVAfG/8AAAAAAAAAE2dtXArqK3FnQAAAAAAACDwBeNMNhIZN8UAAAAAAAAobMYb4MNW34T2AAAAAAAAMsdcEWw6lgsTmgAAAAAAQH88sxUHyXvOl8AAAAAAABCfSyDbSLsawr3wAAAAAADUhh70iA21UJl2lgAAAACARBQTMetQ4qQ/FLwAAAAAoFXZF/0l5RqOTxnrAAAAAAirz12+N8/QuNHvkgAAAADlyqFarQUDBSfGq7cAAABAnj1K8RnHQ8awt5blAAAA0AXNnG1vXOp7zjJ+jwAAAKIjAILki/PkGoK/XbMAAICKLICi3W4wnqFiLzXgAAAgrTcgC9VF3gKlnT0hjAAANMwi9CZF1pVDDgWNKa8AAEF/K7Fwlkx71FFG8PPaAEARX3bdDDwPzSTzK3bYiADIavtpCoilUwDu77aTDqsAekV6BA3qjmiA6aukONLVgNjWmEWQpHJB8HHrZmOjhVBHhn8r2qZHUWxOpkA8DKck2WdftpCQmWUH4s9QS8/Qbc9B9+O09P+fRO2BEo+BgqQhiXoO8fi/x5VoItfyIaMNaisZUi33rzm7AuuMb+rLkER2n6b49JsIasMlcAvl/rTVU0fQNvICRSKaFyYnT5+QZZQsQmLXAdaqgJ3v8CLH9X65t9I6TUKL1eCEK63r+LLep2WHieDSd4UMMztMk5sv64if9FXMY9Wmz/9JH3jC+yVrx3FrvzyKkMN/HCcW83rvRTlORu+LVjraz3HY7Zestcvj8It1l+zI0EOOTum9F6O+HO3uUj0n+8TUMaJj7d1L7mOoqqdM+Bz7JF9FXpRq73Q+qcrojzbkOe621nW5RCsSjlP94rNEXcipZEzT5xa2lnGovNtgSjod6r4P5JDNMf5G6VWJvN2IpKSuEx21Qb69mGOrq2sUq81Nmlhk4tEt7X48lpbG7IqgcGC3fo2iPFTP5R0e/KityIw4Zd6wy0spQ1+lJTsS2fqvhv4V3b6e8xO3Du9Jq8f8LRS/LYo3Q3hsMmk1bpb5eznZLrmsBFSWB3/Dwkn799qHj3rn1wbpe8ledDPc/drotJms8Iajce09uyigabwRIyLA16yoDM5oDeoyCMQr1qsqsA3Y0pABw5CkPwr122WrGo4Ix4P64HnaxmcmeVI/VqGxyrikOFkYkbgBcFcmz6sJXv3mzYZvXrUmAkzteGELxlpesIC0BVsxWIFPVNY5jnfxddygIcexPa5hY2lMyHHVbZMTyek4Hs0ZOrwDXzrOSkl4WPsjx2VAoEirBHvkwM4tSxeddpw/KGQN62KaHXFC+R1dxJSDTzK90KU7AGUNk3dldPV5ZON+7ESPyiBf6Ltqv2iZyx5OzxOLmX7oduJqRe/Cv36mIcPY7T+eohSbxRars+8eEOrzTunPxeXsgDvuStCVEkpyWNHxobsfKGHKqV1Eu5fcjq5FbooqJnL5PBR1Feq9kzIa1wkt9VjnG6YsaU2SVpxfcCYmPFku4aLPd8PgtmyDdwywL4tvepmLw1X0mORHZJUPnPttC+w/N5q1mN+OrF69iUG9JEfnD8UA436Xsle2LOyR7O1Y4VP2wJtePd/t4zdntmcpL2z0mVghW4aLdO6CANLgeb2HccCu6fFnrhGqo4AGWdjs6Y1wGmTuAdqVlMwgSG8O6LJYhpD+NEGI3dx/FI0FCTHe7qc0PoJRqhXUn1nwRku9lurRwc3i5dQayQdwrBiebJ4yI5nArQ+FsN0ExmvP4gNF/2u/MJlTphwVhrdGg9uEFv9G73x/6M9jmmdlGGQS5m5fjBWuT/GBfsBgP49+y09Jd++amaNtop3wOA8zXr7jHFWrAYAMCcvFLAfTv/WtXGMqFgKgT8v99vfIxy9z2XN+2k0BxBGfnvqa3dz952coHVGhATXWRsa4ARVU/eGBsmWlCULCi9j3JkIaqXxaIh9fB0ZpWVfnmlhpsOmNeHUzN4mXwy8tocGugxxksdZSAIRrfbR7eAnymqQjvV2MZ8AyY85QTetFl+BGNpa6t0D4//sBpSBmF72Y2MM7qeVQtv96Qs6oP13svs60ihMf5aPfjOmAyUe6kzcBsTZsM2/GF/Aj4bvZqLiEQV1ERwALuB3sbNkqENPm5ZF0FVnADaaSE+THGupDkC/baK03mMiHdxjdeaHkVLT7EcOYRb66KZReVNjJHWrhetbz/tZtKfQduzQnnlLijAxmWF+m5JkY5OkBsUXnGrCPfy73z13AXl1kQh0XoSHccx/69EN1cHa6fklyrgSViahTHHlKSQZqad7bDtpF+quSaGMXnduHBAPWkpJQ1/jWtkI8XYTSqUXCxZtbkoZbhrKpRbqSI4oLMreC8jZo8qceFNdod6xsjv9kI69EAu/RJtkMQ5XXBzIfH3btamE1g7gH6Em95kR/56bTqMW5AqSmCWKcbCAWX6GQCBM3aAPND4x6w4eo2zZkWuVrIiEigImXLNpUSUnC/bDeBmupKqBsvbcQqpvb8j1dlsjFUzXIx6zllJSCkm+M9Ls6t6hC+vkXH7o5I3fL13i1hHKpaZz7blMUBHYq/w3X4iXPE4TDukpoGYUT9f7RjFvvwhhl9Gldwl9mWLJ+AjiZ1Xkvv5hhetn7P3cv7wOG/0pY++6++tjP+g9V+6qEZ79dLrqq7jjPg/lTKrqVsqCX+ly0KpWDYfJ7dFqU3d+IPTl0YXW65PnumhFx+ZQX64xH0bkS6V24qgFWzTd67hK4zCK0q5E6swrBVeBirKoX5n8roRa2CWBNMWuYe1eUnd9fdkmc4wu4oP2FflrtfcLr++mtQY4Hc4S+E49YFByz5npkGdKxyI8lrtiyblnjX6CZvZ9G3rvzrtmOX8pv7jsEgNYj7IpUWA1IuXveJelKBSDMLKetaq4QmqcaVq+knQYo//cQ2QTalIBRoSsbhiIEef+aqodCCF3w0kT7kCgrRVe/QZWpU0p0rAcWOjXydRYtL5L60+hckZeJm4hCtwkufF2bfIQR2rr+NWGVaSWMOds0wpullZBpfoO5+kMu7wcSwrICz7v0A17kZ/mUffVES7mvYYH1eMK67uAbHdwyFp6nG7qhMhdzaSrZYmSTv5uFkaIoyv7czwN1j3t9eK8C5zXLsvw+1MNEUnPaXKutYbABv++dp2T6ahOICDoWGXocwq5rxdD9uEUYqooIW5+Yo3KaxvZFPSdXnlStipljP6aHIDyaS4Z49uJUrDZ/PM+PqSjLwN2nFrQbaleEnwvD89Py/fDVURyhokRtZUPnWXjEt56WJbOxpOVKZJ8UYXCWtWVGvO4f3g2fXT2HWXkM/CL/V+vqp1XRBrUMqdjLh911/xaT8ojVQiTxpwnOvulUU7/cty/rilNt7REMgS4kKijv0+X6pW2oyGgWjxCdVhp5daSPvIdEaX0BbvlVROxg15KNs6yplcPcgck3alUnOY33cOAXFHv0U+K7hWKVuEO4mkaMjuzMeHRtlZO7uqZUZkFYr7InAJfRyHo4amnQ6b9RLtueMcD8BXuZBuJBIvIX8/yIAx/4vePsH0Ra0qru3S88q8Mmdq0c6CfV8YZVatU7C9Z0sNPYI+JxilZ0dWJlBceFSU6EZ1Yth/Zs0RK7vsY4p9thZQGs+Ci0x4XXaW74BtFSur4B1zYz4ZyzJgJFW6SCczQXYUYCwOyEYLBCFnJNo5ABXfnXAvAnpXhc05vOIMz0QbT3jQPsMc6WM8hCAin/cVKhdXEEZ35BPiC9aaF5n4bThOnGYgAP0U1oLMQJWMdoCOajeHvAUkVhgjc1DC75gorfzFaacKfLfLFCoce8m5G2C0B2YKaI/ttdk4n5q8I1pA7Qk/jPav5SNfjr91bzQ00SxLj2gwXeUyF781oWmEpwi3ozenLD1qjpWbDxG75cTC5ZwBhPdAwTZHAc7qLtc995b/DeYhHniz7G0dSFlKgrrEVWy92K4S7ONwZKp7mSNhfXKz6VbZm6wcWHHBHoNwTdzLaN+sigFJnb1LEKkaIiCkCSmJwdyFl/EkpeTbVLqwzQtr4DJTowH5fctaDiHdYPhGSuRC4kfnPeqXGkjdLlidL+7OpcrV0QVhSODbFHXyyHPqgldBh1lGuZ8VDdGXf3KE4SL9EvyTzj/5ZSim+qmtlwa72Ce/sL3L8856wLVQEQTcZsY1r6DtPvCyHYTqoBVOD3Rzx4XOnjdacUh3EKgTTs+qxllrPjXFPR2agNTaFBpzkYf3ygHDSoRRDTUKAJEhFI3h5N5JEgiSvqgzIERqsK7UqTYF22aGu25KQ/hRdWTagd+Ln040IG5B3Ojmadq2ASJTbzeM7pg67SgBlgQmt8K9fBMBdC5CRaB6Ef+BKGW/ZMsvycUh2uMEnJJ7aXZ/Iz4N48RKek2Xyb+7GjfQHvQJgWpYroBgguQZ1Ohu5glSgfjk6togiKeZHE4icqubrypvGiWMuK7Ne19duxdGdprxCuZRe/1vOmkZkp76jgoW3KrD/dbsywEPa/8yrTWAoJ/ReOlIr/3JTz77D1B+9MS/zd2Zy2Hwo9+JWO+WQVEK+9Sg9EpKdMTHa78Te+GtQabZ0TVY3RX99T6u3FbSGJYciELFX44ptrdJK0m+S09Tz9MndqttuChhG3ocIdIjOMvD8VBaSSI+jV5Eozpeo/r6sPLYOmOxaxBY8OQKfyh03LKfgjkMpbHceyEhBR7+kgPnT2LDS9suR43xZUJWskqU2RGpxAtu+Oq4uOVPfCtonQGiDD0KOrcpausSm1cySshKHo88SMVg882h50opAt1+XJcRj7F5aJZYiSiGV6fKYvfo3e+Z37636qt+r+mBuQu90xVniF+qYe1WWlPn8idCpV3jVrk1woM4VfJ4ePlYg61VYDRrhz8n+mN/Fo87oqiYoshFemEO8f0IUtQ7BpdSstm7L2Z2r1E4Jz/CkOYik7nEJf9AHF8piij3u0kbrzSYMTd3FCdi8/y3OaITapcBwk19QN01P7Dv4QAaqD04wj7Qal6GMUXcmeqkBKMgQ4NvRIzuJ8WbR7xtXQ3D4FxkOx2oEb3G+hGvgKBZSOhreU3SgxkenlpBCbJoMcGbTyfMpyffVjH87UwfCjYx9hLxz9z9zyPKcBSvLsjDxnOTtjvAHKF4YIQW6XE9iF4AMFvtWCvJ2nStFJvRhOp9hEhi1LoiuFUZ1FnOyeIdEO1uf43UU781KCq+GTA7VCyeWQu8oXCrDnYhbauENikzsfdWo9nQycofubEOfUOngKZxLFDOKHAUV9YWqQxSSLZoAr+yfa6UGW3PmEtPbtLYBg9vmxUWTSu1M4puFzaTmg+HN4XrJ+Y1U04weN6OEjZHtIC9tfXrxqAdxJsGLaLD2aGs6R93VrxQFTXNz7EHjMQKFBdropYxvhs7mJnQrLf8gE6akp9Dti2SAorETNvZ/6RWNUM/HKug8pMteVQK1HeRd8qcDWvtSpWX+GXUjMzKuO7UlwjO5JFDAfqHRa/79W8mhcjC9qXBn8JtIRMf9v7C6Dc7ddwtmPXViDq37/xVP9Mcgl9TLQ83QupFVef7eofD66b7I/xDASOs3rNV/l0hvOKIXPp3peS0SAs4Fbz2PRgHlmw1EZNl5VoB9iMsO8BeHXQDSmn8O1asin+v7zK0fZjVDBj4c0Y4X6Ubn+8PaYT7HS2LnUAF6TnNMzn1aav9FuB0/oCYE1uMPIAEfsgC+GCshiYkzhQqb0+sBYJ2G7J829fb3PzOnnmJx4l7gc1TiALN2sA0DkIb/DVr3mYwpH4HgUmARQXerudKxs4PzMWBjLDN8CUnpSlcjrQwwegDcP/c+Wg+YYp7q65lSPJWAF0/2DfCQg31DpaSAq8y64xkd+0s0WdIvSkUFU+lcdM9xMHUeBHFEuR7ZS6fit5D8T4OWYoWPl+djjpiN32d0PGFiP/0ReL5xnjkh26qfqCQ9XdXNlci1wcm92aWRlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgYSB0b3RhbCBvcmRlctYgEABfAAAAVgMAAAUAAAAAAAAA30UaPQPPGubB+8z+AAAAAMrGmscX/nCr3PvU/gAAAABP3Ly+/LF3//b73P4AAAAADNZrQe+RVr4R/OT+AAAAADz8f5CtH9CNLPzs/gAAAACDmlUxKFxR00b89P4AAAAAtcmmrY+scZ1h/Pz+AAAAAMuL7iN3Ipzqe/wE/wAAAABtU3hAkUnMrpb8DP8AAAAAV862XXkSPIKx/BT/AAAAADdW+002lBDCy/wc/wAAAABPmEg4b+qWkOb8JP8AAAAAxzqCJcuFdNcA/Sz/AAAAAPSXv5fNz4agG/00/wAAAADlrCoXmAo07zX9PP8AAAAAjrI1KvtnOLJQ/UT/AAAAADs/xtLf1MiEa/1M/wAAAAC6zdMaJ0TdxYX9VP8AAAAAlsklu86fa5Og/Vz/AAAAAISlYn0kbKzbuv1k/wAAAAD22l8NWGaro9X9bP8AAAAAJvHD3pP44vPv/XT/AAAAALiA/6qorbW1Cv58/wAAAACLSnxsBV9ihyX+hP8AAAAAUzDBNGD/vMk//oz/AAAAAFUmupGMhU6WWv6U/wAAAAC9filwJHf533T+nP8AAAAAj7jluJ+936aP/qT/AAAAAJR9dIjPX6n4qf6s/wAAAADPm6iPk3BEucT+tP8AAAAAaxUPv/jwCIrf/rz/AAAAALYxMWVVJbDN+f7E/wAAAACsf3vQxuI/mRT/zP8AAAAABjsrKsQQXOQu/9T/AAAAANOSc2mZJCSqSf/c/wAAAAAOygCD8rWH/WP/5P8AAAAA6xoRkmQI5bx+/+z/AAAAAMyIUG8JzLyMmf/0/wAAAAAsZRniWBe30bP//P8AQdaHxAALBUCczv8EAEHkh8QAC+QMEKXU6Oj/DAAAAAAAAABirMXreK0DABQAAAAAAIQJlPh4OT+BHgAcAAAAAACzFQfJe86XwDgAJAAAAAAAcFzqe84yfo9TACwAAAAAAGiA6aukONLVbQA0AAAAAABFIpoXJidPn4gAPAAAAAAAJ/vE1DGiY+2iAEQAAAAAAKityIw4Zd6wvQBMAAAAAADbZasajgjHg9gAVAAAAAAAmh1xQvkdXcTyAFwAAAAAAFjnG6YsaU2SDQFkAAAAAADqjXAaZO4B2icBbAAAAAAASnfvmpmjbaJCAXQAAAAAAIVrfbR7eAnyXAF8AAAAAAB3GN15oeRUtHcBhAAAAAAAwsWbW5KGW4aSAYwAAAAAAD1dlsjFUzXIrAGUAAAAAACzoJf6XLQqlccBnAAAAAAA41+gmb2fRt7hAaQAAAAAACWMOds0wpul/AGsAAAAAABcn5ijcprG9hYCtAAAAAAAzr7pVFO/3LcxArwAAAAAAOJBIvIX8/yITALEAAAAAACleFzTm84gzGYCzAAAAAAA31Mhe/NaFpiBAtQAAAAAADowH5fctaDimwLcAAAAAACWs+NcU9HZqLYC5AAAAAAAPESnpNl8m/vQAuwAAAAAABBEpKdMTHa76wL0AAAAAAAanEC2746riwYD/AAAAAAALIRXphDvH9AgAwQBAAAAACkxkenlpBCbOwMMAQAAAACdDJyh+5sQ51UDFAEAAAAAKfQ7YtkgKKxwAxwBAAAAAIXPp3peS0SAiwMkAQAAAAAt3awDQOQhv6UDLAEAAAAAj/9EXi+cZ47AAzQBAAAAAEG4jJydFzPU2gM8AQAAAACpG+O0ktsZnvUDRAEAAAAA2Xffum6/lusPBEwBAAAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudCA+IDC6HxAAYgAAAN4BAAAFAAAAuh8QAGIAAAB/AAAAFQAAALofEABiAAAANQIAABEAAAC6HxAAYgAAADgCAAAJAAAAuh8QAGIAAABuAgAACQAAALofEABiAAAAqwAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1pbnVzID4gMAAAALofEABiAAAArAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLnBsdXMgPiAwuh8QAGIAAACtAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudCArIGQucGx1cyA8ICgxIDw8IDYxKQAAALofEABiAAAAsQAAAAUAAAC6HxAAYgAAAAwBAAARAAAAuh8QAGIAAABCAQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX3N1YihkLm1pbnVzKS5pc19zb21lKCkAuh8QAGIAAACvAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudC5jaGVja2VkX2FkZChkLnBsdXMpLmlzX3NvbWUoKQAAuh8QAGIAAACuAAAABQAAAIA7EABjAAAADQEAAAUAAACAOxAAYwAAAA4BAAAFAAAAgDsQAGMAAAAPAQAABQAAAIA7EABjAAAAdAEAACQAAACAOxAAYwAAAHkBAAAvAAAAgDsQAGMAAACGAQAAEgAAAIA7EABjAAAAaAEAAA0AAACAOxAAYwAAAE4BAAAiAAAAgDsQAGMAAAARAQAABQAAAIA7EABjAAAAEAEAAAUAAACAOxAAYwAAAHgAAAAFAAAAgDsQAGMAAAB5AAAABQAAAIA7EABjAAAAegAAAAUAAACAOxAAYwAAAMQAAAAJAAAAgDsQAGMAAAD9AAAADQAAAIA7EABjAAAABAEAABIAAACAOxAAYwAAAHwAAAAFAAAAgDsQAGMAAAB7AAAABQAAALofEABiAAAA8QIAACYAAAC6HxAAYgAAAOUCAAAmAAAAuh8QAGIAAADOAgAAJgAAAC4uICAgIAAAAAAAAAAA8D8AAAAAAAAkQAAAAAAAAFlAAAAAAABAj0AAAAAAAIjDQAAAAAAAavhAAAAAAICELkEAAAAA0BJjQQAAAACE15dBAAAAAGXNzUEAAAAgX6ACQgAAAOh2SDdCAAAAopQabUIAAEDlnDCiQgAAkB7EvNZCAAA0JvVrDEMAgOA3ecNBQwCg2IVXNHZDAMhOZ23Bq0MAPZFg5FjhQ0CMtXgdrxVEUO/i1uQaS0SS1U0Gz/CARABBkJXEAAu5VjAxMGJudW1iZXIgdG9vIGxhcmdlIHRvIGZpdCBpbiB0YXJnZXQgdHlwZW51bWJlciB0b28gc21hbGwgdG8gZml0IGluIHRhcmdldCB0eXBlbnVtYmVyIHdvdWxkIGJlIHplcm8gZm9yIG5vbi16ZXJvIHR5cGVudW1iZXIgaXMgbm90IGEgcG93ZXIgb2YgdHdvMHgwMTIzNDU2Nzg5QUJDREVGY2Fubm90IHBhcnNlIGZsb2F0IGZyb20gZW1wdHkgc3RyaW5naW52YWxpZCBmbG9hdCBsaXRlcmFsAAAAc0wQAEsAAACFCwAAJgAAAHNMEABLAAAAjgsAABoAAABSZWZDZWxsIGFscmVhZHkgbXV0YWJseSBib3Jyb3dlZFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZFRoZSBlbnYgZnVuY3Rpb24gZXhwZWN0cyBhIHNpbmd1bGFyLCB1bm5hbWVkLCBzdHJpbmcgYXJndW1lbnQuSWYgcHJvdmlkZWQsIHRoZSBzY2hlbWFzIGFycmF5IGNhbiBub3QgYmUgZW1wdHkuVGhlIGRhdGFzb3VyY2UgcHJvcGVydHkgYHVybGAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBpbiBzY2hlbWEgZmlsZXMuIE1vdmUgY29ubmVjdGlvbiBVUkxzIGZvciBNaWdyYXRlIHRvIGBwcmlzbWEuY29uZmlnLnRzYCBhbmQgcGFzcyBlaXRoZXIgYGFkYXB0ZXJgIGZvciBhIGRpcmVjdCBkYXRhYmFzZSBjb25uZWN0aW9uIG9yIGBhY2NlbGVyYXRlVXJsYCBmb3IgQWNjZWxlcmF0ZSB0byB0aGUgYFByaXNtYUNsaWVudGAgY29uc3RydWN0b3IuIFNlZSBodHRwczovL3ByaXMubHkvZC9jb25maWctZGF0YXNvdXJjZSBhbmQgaHR0cHM6Ly9wcmlzLmx5L2QvcHJpc21hNy1jbGllbnQtY29uZmlnVGhlIGRhdGFzb3VyY2UgcHJvcGVydHkgYGRpcmVjdFVybGAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBpbiBzY2hlbWEgZmlsZXMuIE1vdmUgY29ubmVjdGlvbiBVUkxzIHRvIGBwcmlzbWEuY29uZmlnLnRzYC4gU2VlIGh0dHBzOi8vcHJpcy5seS9kL2NvbmZpZy1kYXRhc291cmNlVGhlIGRhdGFzb3VyY2UgcHJvcGVydHkgYHNoYWRvd0RhdGFiYXNlVXJsYCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGluIHNjaGVtYSBmaWxlcy4gTW92ZSBjb25uZWN0aW9uIFVSTHMgdG8gYHByaXNtYS5jb25maWcudHNgLiBTZWUgaHR0cHM6Ly9wcmlzLmx5L2QvY29uZmlnLWRhdGFzb3VyY2VUaGUgYHJlZmVyZW50aWFsSW50ZWdyaXR5YCBhbmQgYHJlbGF0aW9uTW9kZWAgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBvbmx5IGByZWxhdGlvbk1vZGVgIGluc3RlYWQuVGhlIGVudiBmdW5jdGlvbiBkb2Vzbid0IGV4cGVjdCBuYW1lZCBhcmd1bWVudHNUaGUgYHJlZmVyZW50aWFsSW50ZWdyaXR5YCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBgcmVsYXRpb25Nb2RlYCBpbnN0ZWFkLiBMZWFybiBtb3JlIGF0IGh0dHBzOi8vcHJpcy5seS9kL3JlbGF0aW9uLW1vZGWTHxAAJgAAACQAAAAoAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWQAALBaEABaAAAAFBoAAAEAAAAAAAAABAAAAAQAAABoAAAAbmVnYXRpdmUgdmFsdWVzIGFyZSBub24temVyb1wkEABmAAAAZgAAACgAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHnOURAAdQAAAC4DAAAJAAAAQ2Fubm90IHN1YnRyYWN0IGIgZnJvbSBhIGJlY2F1c2UgYiBpcyBsYXJnZXIgdGhhbiBhLvA4EABtAAAARQAAAAUAAADwOBAAbQAAAGUAAAAFAAAAdjoQAHAAAABKAAAAGwAAAHY6EABwAAAAUgAAABsAAAB2OhAAcAAAAFkBAAAnAAAAdjoQAHAAAABYAQAAJgAAAHY6EABwAAAA+AAAACYAAAB2OhAAcAAAAPcAAAAmAAAAdjoQAHAAAADzAAAAJgAAAHY6EABwAAAArQAAABoAAAB2OhAAcAAAALsAAAAWAAAAdjoQAHAAAAC6AAAAFgAAAHY6EABwAAAAaQAAAB8AAAB2OhAAcAAAAH8BAAAPAAAAdjoQAHAAAACCAQAADwAAAHY6EABwAAAALgAAABwAAAAAAAAAY2Fycnkgb3ZlcmZsb3cgZHVyaW5nIG11bHRpcGxpY2F0aW9uIQAAAHY6EABwAAAAOwAAAAUAAAD0IxAAZwAAACcAAAAZAAAAuyEQAGkAAADBAgAAHAAAALshEABpAAAAeAAAABoAAADYNxAAagAAADkAAAAaAAAAFTsQAGoAAACoAAAACQAAABU7EABqAAAA6wAAABgAAAAVOxAAagAAAOwAAAAOAAAAFTsQAGoAAAD2AAAAIQAAABU7EABqAAAA9wAAABgAAAAVOxAAagAAABgBAAA8AAAAFTsQAGoAAAAtAAAACQAAAPA4EABtAAAAhwAAACUAAABjYW5ub3QgcGFyc2UgaW50ZWdlciBmcm9tIGVtcHR5IHN0cmluZ2ludmFsaWQgZGlnaXQgZm91bmQgaW4gc3RyaW5nALshEABpAAAA2gAAABoAAADYNxAAagAAAGgAAAAiAAAALSYQAGEAAACHAQAAAQAAAEggEAAiAAAAhgAAADcAAABIIBAAIgAAAH8AAAANAAAASisQACUAAACyAQAAGQAAAEorEAAlAAAAsgEAACYAAABGaWVsZHMgb24gYW4gYWxyZWFkeSBpZ25vcmVkIE1vZGVsIGRvIG5vdCBuZWVkIGFuIGBAaWdub3JlYCBhbm5vdGF0aW9uLkBpZ25vcmUAAEorEAAlAAAAXQMAADsAAABKKxAAJQAAAGIDAAAeAAAASCAQACIAAADJAQAAKAAAAMJUEAAoAAAAIgAAADMAAADCVBAAKAAAACcAAAAeAAAAwlQQACgAAABSAAAARwAAAMJUEAAoAAAAUwAAACYAAADCVBAAKAAAAFMAAAAwAAAAwlQQACgAAABcAAAAJgAAAMJUEAAoAAAAXAAAACwAAACJIxAALQAAACQAAAASAAAAiSMQAC0AAABrAAAAVgAAAJIdEAAvAAAAIAAAADMAAACSHRAALwAAACQAAAAeAAAAkh0QAC8AAABOAAAAQwAAAJIdEAAvAAAATwAAACIAAACSHRAALwAAAE8AAAAsAAAASW5ldE9wc0pzb25iT3BzSnNvbmJQYXRoT3BzQXJyYXlPcHNUZXh0T3BzQml0TWluTWF4T3BzVmFyQml0TWluTWF4T3BzQnBjaGFyQmxvb21PcHNCcGNoYXJNaW5NYXhPcHNCeXRlYUJsb29tT3BzQnl0ZWFNaW5NYXhPcHNEYXRlQmxvb21PcHNEYXRlTWluTWF4T3BzRGF0ZU1pbk1heE11bHRpT3BzRmxvYXQ0Qmxvb21PcHNGbG9hdDRNaW5NYXhPcHNGbG9hdDRNaW5NYXhNdWx0aU9wc0Zsb2F0OEJsb29tT3BzRmxvYXQ4TWluTWF4T3BzRmxvYXQ4TWluTWF4TXVsdGlPcHNJbmV0SW5jbHVzaW9uT3BzSW5ldEJsb29tT3BzSW5ldE1pbk1heE9wc0luZXRNaW5NYXhNdWx0aU9wc0ludDJCbG9vbU9wc0ludDJNaW5NYXhPcHNJbnQyTWluTWF4TXVsdGlPcHNJbnQ0Qmxvb21PcHNJbnQ0TWluTWF4T3BzSW50NE1pbk1heE11bHRpT3BzSW50OEJsb29tT3BzSW50OE1pbk1heE9wc0ludDhNaW5NYXhNdWx0aU9wc051bWVyaWNCbG9vbU9wc051bWVyaWNNaW5NYXhPcHNOdW1lcmljTWluTWF4TXVsdGlPcHNPaWRCbG9vbU9wc09pZE1pbk1heE9wc09pZE1pbk1heE11bHRpT3BzVGV4dEJsb29tT3BzVGV4dE1pbk1heE9wc1RpbWVzdGFtcEJsb29tT3BzVGltZXN0YW1wTWluTWF4T3BzVGltZXN0YW1wTWluTWF4TXVsdGlPcHNUaW1lc3RhbXBUekJsb29tT3BzVGltZXN0YW1wVHpNaW5NYXhPcHNUaW1lc3RhbXBUek1pbk1heE11bHRpT3BzVGltZUJsb29tT3BzVGltZU1pbk1heE9wc1RpbWVNaW5NYXhNdWx0aU9wc1RpbWVUekJsb29tT3BzVGltZVR6TWluTWF4T3BzVGltZVR6TWluTWF4TXVsdGlPcHNVdWlkQmxvb21PcHNVdWlkTWluTWF4T3BzAACiLBAALQAAALgAAAAWAAAASW52YWxpZCBwYXJhbWV0ZXIgdHlwZTogZXhwZWN0ZWQgc3RyaW5nb3BlcmF0b3IgY2xhc3NBc2MsIERlc2Njb25zdGFudCBsaXRlcmFsc2NoZW1hLnByaXNtYQABAAAAeFkQAB4AAAChAAAACQAAAEggEAAiAAAApgEAAFAAAABUcmFpbGluZyBjb21tYXMgYXJlIG5vdCB2YWxpZCBpbiBhdHRyaWJ1dGUgYXJndW1lbnRzLCBwbGVhc2UgcmVtb3ZlIHRoZSBjb21tYS6AhgBTdGF0ZSBlcnJvcjogd2UgY2Fubm90IHN0YXJ0IHZhbGlkYXRpbmcgbmV3IGFyZ3VtZW50cyBiZWZvcmUgYHZhbGlkYXRlX3Zpc2l0ZWRfYXJndW1lbnRzKClgIG9yIGBkaXNjYXJkX2FyZ3VtZW50cygpYCBoYXMgYmVlbiBjYWxsZWQuCsEgAIBgAAAAAEggEAAiAAAAWgEAAA0AAABIIBAAIgAAAA0BAAAUAAAASCAQACIAAAANAQAAOwAAAEggEAAiAAAAnAAAABkAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmF0dHJpYnV0ZXMudW51c2VkX2F0dHJpYnV0ZXMucmVtb3ZlKCZhdHRyX2lkeCkAAABIIBAAIgAAAJkAAAANAAAASCAQACIAAAAUAQAAFwAAAEggEAAiAAAAGwEAADAAAABObyBzdWNoIGFyZ3VtZW50LlN0YXRlIGVycm9yOiBtaXNzaW5nIGF0dHJpYnV0ZSBpbiB2YWxpZGF0ZV92aXNpdGVkX2FyZ3VtZW50cy4AAEggEAAiAAAAFgEAAA0AAABIIBAAIgAAAPwAAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5hdHRyaWJ1dGVzLnVudXNlZF9hdHRyaWJ1dGVzLnJlbW92ZSgmZmlyc3RfaWR4KQAASCAQACIA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ZGJnZW5lcmF0ZWQoKSB0YWtlcyBlaXRoZXIgbm8gYXJndW1lbnQsIG9yIGEgc2luZ2xlIG5vbmVtcHR5IHN0cmluZyBhcmd1bWVudC4AiSMQAC0AAAAXAAAAHgAAAIkjEAAtAAAAGAAAAB8AAACJIxAALQAAABsAAAAkAAAAT25seSBAZGVmYXVsdChkYmdlbmVyYXRlZCgiLi4uIikpIGNhbiBiZSB1c2VkIGZvciBleHRlbnNpb24gdHlwZXMuT25seSBAZGVmYXVsdChkYmdlbmVyYXRlZCgiLi4uIikpIGNhbiBiZSB1c2VkIGZvciBVbnN1cHBvcnRlZCB0eXBlcy5BIGJvb2xlYW4gbGl0ZXJhbCBtdXN0IGJlIGB0cnVlYCBvciBgZmFsc2VgLkBkZWZhdWx0BVRoZSBgwEpgIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50LiBDb25zaWRlciBjaGFuZ2luZyB0aGlzIGRlZmF1bHQgdG8gYMgAAAQoKWAuAAAAAIkjEAAtAAAAWwAAAB4AAACJIxAALQAAAFwAAAAfAAAAVGhlIGBtYXBgIGFyZ3VtZW50IGlzIG5vdCBhbGxvd2VkIG9uIGEgY29tcG9zaXRlIHR5cGUgZmllbGQuiSMQAC0AAABiAAAAIQAAAEZpZWxkcyBvZiBjb21wb3NpdGUgdHlwZXMgY2Fubm90IGhhdmUgYGRiZ2VuZXJhdGVkKClgIGFzIGRlZmF1bHQuQ29tcG9zaXRlIGZpZWxkIHdpdGggZXh0ZW5zaW9uIHR5cGUgY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMuQ29tcG9zaXRlIGZpZWxkIG9mIHR5cGUgYFVuc3VwcG9ydGVkYCBjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy5UaGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGxpc3QgZmllbGQgbXVzdCBiZSBhIGxpc3QuAACJIxAALQAAAFsBAAAUAAAAiSMQAC0AAABcAQAAGwAAAERlZmF1bHRzIG9uIGZpZWxkcyBvZiB0eXBlIGNvbXBvc2l0ZSBhcmUgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHJlbW92ZSB0aGUgYEBkZWZhdWx0YCBhdHRyaWJ1dGUuVGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBub24tbGlzdCBmaWVsZCBjYW5ub3QgYmUgYSBsaXN0LgAAiSMQAC0AAADCAAAAGQAAAIkjEAAtAAAAwgAAACUAAABOYW1pbmcgYW4gYXV0b2luY3JlbWVudCBkZWZhdWx0IHZhbHVlIGlzIG5vdCBhbGxvd2VkLgQHAQIAAACSHRAALwAAAJkAAAASAAAAkh0QAC8AAACZAAAAHAAAAJIdEAAvAAAAogAAABUAAABGaWVsZHMgdGhhdCBhcmUgbWFya2VkIGFzIHNoYXJkIGtleXMgbXVzdCBiZSByZXF1aXJlZC5Ac2hhcmRLZXlBdCBtb3N0IG9uZSBmaWVsZCBtdXN0IGJlIG1hcmtlZCBhcyB0aGUgc2hhcmQga2V5IHdpdGggdGhlIGBAc2hhcmRLZXlgIGF0dHJpYnV0ZS6SHRAALwAAAIAAAAAkAAAAkh0QAC8AAAAOAAAAFAAAAJIdEAAvAAAASAAAAB4AAABFYWNoIG1vZGVsIG11c3QgaGF2ZSBhdCBtb3N0IG9uZSBzaGFyZCBrZXkuIFlvdSBjYW4ndCBoYXZlIGBAc2hhcmRLZXlgIGFuZCBgQEBzaGFyZEtleWAgYXQgdGhlIHNhbWUgdGltZS4AAACSHRAALwAAAGoAAAAfAAAAkh0QAC8AAAAvAAAAHQAAAJIdEAAvAAAAPwAAAB0AAABjb25zdGFudGNvbnN0YW50IG9yIGZ1bmN0aW9uD1RoZSBlbnVtIG5hbWUgYMCAowBgIGlzIGludmFsaWQuIEl0IGlzIGEgcmVzZXJ2ZWQgbmFtZS4gUGxlYXNlIGNoYW5nZSBpdC4gUmVhZCBtb3JlIGF0IGh0dHBzOi8vd3d3LnByaXNtYS5pby9kb2NzL3JlZmVyZW5jZS90b29scy1hbmQtaW50ZXJmYWNlcy9wcmlzbWEtc2NoZW1hL2RhdGEtbW9kZWwjbmFtaW5nLWVudW1zAFByaXNtYUNsaWVudGFzeW5jYXdhaXRicmVha2Nhc2VjYXRjaGNsYXNzY29uc3Rjb250aW51ZWRlYnVnZ2VyZG9lbHNlZXhwb3J0ZXh0ZW5kc2ZpbmFsbHlmb3JpZmltcGxlbWVudHNpbXBvcnRpbnN0YW5jZW9maW50ZXJmYWNlbGV0bmV3cGFja2FnZXByaXZhdGVwcm90ZWN0ZWRwdWJsaWNyZXR1cm5zdXBlcnN3aXRjaHRoaXN0aHJvd3RyeXR5cGVvZnZhcnZvaWR3aGlsZXdpdGh5aWVsZAAQMxEADAAAABwzEQAFAAAAITMRAAUAAAAmMxEABQAAACszEQAEAAAALzMRAAUAAAA0MxEABQAAADkzEQAFAAAAPjMRAAgAAABGMxEACAAAAHn5EQAHAAAApvwRAAYAAABOMxEAAgAAAFAzEQAEAAAAV1YSAAQAAABUMxEABgAAAFozEQAHAAAAKhkSAAUAAABhMxEABwAAAGgzEQADAAAAdA4SAAgAAABrMxEAAgAAAG0zEQAKAAAAdzMRAAYAAAAO/hEAAgAAAH0zEQAKAAAAhzMRAAkAAACQMxEAAwAAAJMzEQADAAAAMxkSAAQAAACWMxEABwAAAJ0zEQAHAAAApDMRAAkAAACtMxEABgAAALMzEQAGAAAAuTMRAAUAAAC+MxEABgAAAMQzEQAEAAAAyDMRAAUAAAAvGRIABAAAAM0zEQADAAAA0DMRAAYAAACldREABQAAANYzEQADAAAA2TMRAAQAAADdMxEABQAAAOIzEQAEAAAA5jMRAAUAAABgZm9ybWF0X2ZpZWxkc19pbl9lcnJvcl93aXRoX2xlYWRpbmdfd29yZGAgcmVzdWx0IGNhbiBvbmx5IGJlIGZvcm1hdHRlZCBvbmNlSisQACUAAABdBQAAEQAAAHMAQdTrxAALjgEBAAAA1QEAANYBAADXAQAA2AEAAEF0dHJpYnV0ZXNWYWxpZGF0aW9uU3RhdGVhdHRyaWJ1dGVzdW51c2VkX2F0dHJpYnV0ZXNDb21wb3NpdGVUeXBlSWRGaWVsZElkTW9kZWxJZFN0cmluZ0lkRW51bVZhbHVlSWS+AQAADAAAAAQAAADZAQAA2gEAANsBAEHs7MQACz4BAAAAwgEAAE1vZGVsRmllbGRFbnVtVmFsdWVDb21wb3NpdGVUeXBlRmllbGRBdHRyaWJ1dGVJZOKQjeKQigBB5O3EAAsBAQBBiu7EAAsCAgMAQcruxAALAQEAQZT1xAALAQEAQaT1xAALAQEAQZj3xAALQQEAAAAAAAAA/wcAAACAAAAAAACAAAAAAJA6EQAgAAAAqjYRAOADAACQOxEABAAAAAEAAAAAAAAAAQAAAAAAAAAIAEHo98QAC1b+//8H/v//BwAAAAAABCAE//9/////f////////////////////////////////////////////////////////////////////////////8P/AwAfUABBzvjEAAvcCt+8QNf///v///////////+///////////////////////8D/P///////////////////////////v///38C//////8BAAAAAAAAAAD///+HBwAAAAAA//////8HAAAAwP7//////////////y8AYMAAnAAA/f///wAAAOD/////////////PwACAAD8////BzAEAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBcZGhscHR4fICEiIyMjIyMkJSYnKCkqKyMjIyMjIyMjLC0uLzAxMjM0NTY3ODkDOjs8Hj0+P0BBQkNEIyMjHiMjIyNFRkdIHklKHktMTR4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eIyMjTk9QUVJTHh4eHh4eHlQrVVZXI1hZHh4eHh4eHh4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjHiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNaWyMjIyNcXV5AXyNgYWIxY2RlZmdoaWprbG1uI28jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNwcR4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHiMjIyMjciNzdHV2dyMjIyN4eXp7HnwjfX5/gIH//z8EEAEAAP///wH/B/////4AAP//////AwAAAAAAAPD///////8jAAAB/wMA/v/hn/n///3FIwBAALADAAMQ4If5///9bQMAAABeAAAcAOC/+////e0jAAABAAMAAALgn/n///3tIwAAALADAAIA6Mc91hjH/wMAAAEAAAAAAODf/f///f8jAAAANwMAAADh3/3///3vIwAAAHADAAYA8N/9/////ycAQHCAAwAA/OD/f/z///svfwAAAAAAAAD+//////8NANb3//+v/w0gXwAA8AAAAAABAAAAAAAAAP/+////HwAAAB8AQbiDxQAL4wH//////wcAgAAAPzxiwOH/A0AAAP////+/IP//////9////////////z1/Pf//////Pf////89fz3/f/////////89//////////8HAAAAAP//AAD/////////////Pz/+////////////////n////v//B////////////wf+Af//A4D//wMA//8DAP/fAQD///////8PAAAAgBAAAAAAAAAAAP//////////////AZ//////Bf//////////PwD///9/AAAAAAAA////Px8A//////8P/////38A////////HwBBpIXFAAuwAYAAAADg//////8PAOAfAAAAAAAA+P///wHAAPz/////PwAAAP////8PAAAAAOAA/P///z//B///////5wAAAAAA3m8E//8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAAAACgAAA/x8AAAAAhPwvPlC9//PgQwAAAAAAABgAAAAAAAAA/////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39/AEHdhsUAC8QTgAAAYAAAAAAAPhj//3/g/v/////////////34P///////v//fwAA/////wAAAAAAAP///x8AAAAAAAAAAP//////P/8f//8ADAAA//////9/AID///8//////wAAgP/8//////n///////////8fAAD+/7v3//8HAAAA/P//////DwAAAAAAAAD8aAD8//8/AP//fwAAAP///x/w//////8HAACAAADf/wB8//////8BAAD3DwAA//9/xP///////2I+BQAAOP8HHAB+fn4Af3////////f/A////////wcAAAD/////DwD//3/4//////8P//////8///////8DAAAAAH8A+KD//X9f2/////////////////8DAAAA+P///////////////z8AAP///////////P///////wAAAAAA/w8AAAAAAADf//////////8fAAAAAP7//wf+//8HwP////////////9//Pz8HAAAAAAAAQIDBAUGBwgFCQoFCwwFBwcHBwcHBwcHBw0ODwcQEQcSBxMFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAAECAwQEBAQEBAUGBwgJCgICCwwNDg8QAgICAhESEwQUFRYXGBkaBBscHR4fICEEAiIjIyQlJgQEBCcoKSorLC0uLzAxMjM0NTY3Fjg5Ojs8PT4/BARAQT5CQwRERQQERgRHSElKS0xNTk9QBAQEUVJTVARVVldYBAQEWVoEWwQCAgICAgICAgICAgICAhkEBAQCAgJcBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBF1eAgICAgICAgICAgICAgICAj5fAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgJFBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAgICAgICAlBhYmM+ZFQEBAQEBARlBAQEAmZnAmhpagICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJrFgQCIwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEbAICAgJtbgICAgICbwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAJwcQQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAnJzdHV2AgICAnd4eXp7fAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAR9BAQEfn8EBICBBAQEBGNGBAQEBAQEBIIEBASDBAQEhAQEBIUCAgKGAocEBAQEBAQEBAQEBAQEBAQEBASIiYoEBAQEBAICAgICAgICAgICAgICAgICAgICAgICAgICAosCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgkCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAowCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICjQICAgICAgICAmAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAICAgICAgICYAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgICAgICAgICAgICAo4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICjwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAT/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////H////////wEAAAAAAP////8A4P///QP/////PwD///8//////w//AAAAAAAA////PwAA/////w//////D///////AP///////w8A//f/97f/+//7G////////w8A////////fwD//z8A/wAAAL////////0HP/3/////v5H//z8A//9/AP///38AAAAAAAAAAP//NwD//z8A////A////wMAAAAA/////////8ABAO/+//8/AAAAAAD///8f////HwAAAAD//v//HwAAAP///////z8A//8/AP//BwD//wMAAAAAAP8BAAAAAAAA////////BwD/////DwAAAAD8//8/gP//PwAAAAAAAAD//////wMDAPwAAAAAAAAA////H4AA//8/AAAAAAD//wMAAAAAAP//HwAAAP//fwD4////////AAAAAAAAACYA+P//////AAAAAP///wEAAPj///9/AAAAkAD/////RwD4//////8HAB4AABQAAAAA///7//8PAIABAAAAAAAAAH+9/7//Af//4J/5///97SMAAAHgAwAAAP9L/////78AAAAKAAAAAAD///////8fAIAHAIADAAAA////////AACwAAAAAAAAAP//////fwAAAAAADwAAAAAQAAAAAAAAAP//////BwAB////BwAAAAB/AAAAAAAAAP//////DwAAAAAAAP//////////AAAAgH/yb////wCAAgBBrJrFAAuFAf/8/////wEACgAAAAH4/////wcEAAAB8P//////AwAgAAD///////////8B/////wEAAAD//f///38AAAEAAAAAAPz///8AAAAAAAB/+/////8BAEAAAAC//f///wMAAQAA//////8PAAAAAAAAAAD//wcA9P/9////DwAAAAAAAAABAA8AQbqbxQALlwT///////////////8BAH4AAAD/////////PwAAAAD///9/AAD///////////9/AAD///8/AAAPAAAA+P//4P//////HwAAAAAAAP////n//w8AAAAAAP8HAQAAAAAAAAD4/wAAAAAAAAAACwAMAP//PwAAAACAAAAAAAAA72//////BwAEAAAAJwDwAP///////////w///////wf/H/8B/wMAAAAA///f///////////fZN7/6+//////////v+ff3////3tf/P3///////////8//////f//9/////f//9/////f//9/////f/////3////9///3DwAAAAAAAP///3/gBwAAAAAAAAAA/////////z8AAP//////H4A/AEAAAAAAAAAAAP///w8AAAAA////PwEA////f7c/H8AAAAAAf2//fx8AAAAAAAAADwgAAAAAAADv////lv73CoTqlqqW9/de//v/D+77/w//////AAAAAP//////P////////wEA////B/////////////////8D4DsRACAAAADgPBEA4AMAAMBAEQCCAAAA0EQRAAABAADQRREAAAUAANBKEQCQAAAAUG9zaXRpb26DSRAAXQAAAIoAAAAJAAAAg0kQAF0AAABQAAAAMwAAANwBAAAUAAAABAAAAN0BAABJbnZhbGlkIFVURjjLTxAAYQAAAH8AAAAkAEHcn8UAC8IFAQAAAMIBAACXUBAAYwAAAKcCAAAOAAAAdmFyaWFudCBpZGVudGlmaWVyc3RydWN0IFBsYWNlaG9sZGVyW1kQABwAAADDAAAAOAAAAGJpZ2ludGRlY2ltYWxwYXJhbSBuYW1lSlNPTiBwYXJhbSB2YWx1ZVByaXNtYVZhbHVlSlNPTiBieXRlcyB2YWx1ZUpTT04gZGVjaW1hbCB2YWx1ZUpTT04gYmlnaW50IHZhbHVlSlNPTiBkYXRlIG9iamVjdAAAAIcBAAAEAAAABAAAAIgBAABbWRAAHAAAAAMBAABHAAAAYWRqYWNlbnRseSB0YWdnZWQgZW51bSBQcmlzbWFWYWx1ZVR5cGVGcm9tVXRmOEVycm9yVXRmOEVycm9ydmFsaWRfdXBfdG9lcnJvcl9sZW6+AQAADAAAAAQAAADeAQAA3wEAAOABAABD1MybXB7iY+GWK0Q/G73ScHJvdmlkZXJvdXRwdXRiaW5hcnlUYXJnZXRzcHJldmlld0ZlYXR1cmVzc2NoZW1hcwAAAF1DpdYiQu7TQiTWBl4yBCYXSxAALAAAACwAAAA7AAAAWVoQAFYAAADHAAAAJQAAAFlaEABWAAAAxwAAAEEAAABWKBAAIgAAAMMAAAAkAAAAVigQACIAAADDAAAAOwAAAER1cGxpY2F0ZWQgc2NoZW1hIG5hbWVzIGFyZSBub3QgYWxsb3dlZFRoZSBgc2NoZW1hc2AgcHJvcGVydHkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgY3VycmVudCBjb25uZWN0b3IuVGhlIGFyZ3VtZW50IG11c3QgaGF2ZSBhIG5hbWV2ZXJzaW9uQHVuaXF1ZUBAdW5pcXVlQEBmdWxsdGV4dEBAaW5kZXisUxAALwAAAD4BAAAKAAAAvgEAAAwAAAAEAAAA4QEAAOIBAADjAQBBqKXFAAvpDgEAAADCAQAAbGl0ZXJhbGZ1bmN0aW9uYWwAAAAmKBAALwAAAB8AAAABAAAAcG9zdGdyZXNxbGZ0cy1wb3N0Z3Jlc0FnZ3JlZ2F0ZUFwaUF0b21pY051bWJlck9wZXJhdGlvbnNDbGllbnRFeHRlbnNpb25zQ29ja3JvYWNoZGJDb25uZWN0T3JDcmVhdGVDcmVhdGVNYW55RGF0YVByb3h5RGVub0RyaXZlckFkYXB0ZXJzRXh0ZW5kZWRJbmRleGVzRXh0ZW5kZWRXaGVyZVVuaXF1ZUZpZWxkUmVmZXJlbmNlRmlsdGVySnNvbkZpbHRlcmVkUmVsYXRpb25Db3VudEZ1bGxUZXh0SW5kZXhGdWxsVGV4dFNlYXJjaEZ1bGxUZXh0U2VhcmNoUG9zdGdyZXNHcm91cEJ5SW1wcm92ZWRRdWVyeVJhd0ludGVyYWN0aXZlVHJhbnNhY3Rpb25zSnNvblByb3RvY29sTWljcm9zb2Z0U3FsU2VydmVyTWlkZGxld2FyZXNNb25nb0RiTXVsdGlTY2hlbWFOQXBpTmFtZWRDb25zdHJhaW50c05hdGl2ZURpc3RpbmN0TmF0aXZlVHlwZXNPbWl0QXBpT3JkZXJCeUFnZ3JlZ2F0ZUdyb3VwT3JkZXJCeU51bGxzT3JkZXJCeVJlbGF0aW9uUGFydGlhbEluZGV4ZXNQb3N0Z3Jlc3FsRXh0ZW5zaW9uc1ByaXNtYVNjaGVtYUZvbGRlclF1ZXJ5Q29tcGlsZXJSZWFjdE5hdGl2ZVJlZmVyZW50aWFsQWN0aW9uc1JlZmVyZW50aWFsSW50ZWdyaXR5UmVsYXRpb25Kb2luc1NjaGVtYUVuZ2luZURyaXZlckFkYXB0ZXJzU2VsZWN0UmVsYXRpb25Db3VudFNoYXJkS2V5c1N0cmljdFVuZGVmaW5lZENoZWNrc1RyYWNpbmdUcmFuc2FjdGlvbkFwaVR5cGVkU3FsVW5jaGVja2VkU2NhbGFySW5wdXRzVmlld3NTbWFsbEludEludGVnZXJNb25leUluZXRPaWRDaXRleHRSZWFsRG91YmxlUHJlY2lzaW9uVmFyQ2hhckJ5dGVBVGltZXN0YW1wVGltZXN0YW1wdHpUaW1ldHpCaXRWYXJCaXRKc29uQmEgbm9ubmVnYXRpdmUgaW50ZWdlcnR3byBub25uZWdhdGl2ZSBpbnRlZ2Vyc0V4cGVjdGVkIHRoaXMgdG8gYmUgYW4gZW52IGZ1bmN0aW9uLkV4YWN0bHkgb25lIHN0cmluZyBwYXJhbWV0ZXIgbXVzdCBiZSBwYXNzZWQgdG8gdGhlIGVudiBmdW5jdGlvbi4AAMooEAAqAAAAbgAAACoAAABUaGlzIGlzIG5vdCBhIGZ1bmN0aW9uIGV4cHJlc3Npb24gYnV0IGV4cGVjdGVkIGl0IHRvIGJlIG9uZS5zY2hlbWFzID0gWyQwXXNjaGVtYXMgPSBbImZvbyIsICJiYXIiLCAiYmF6Il1UaGUgbGlzdCBvZiBkYXRhYmFzZSBzY2hlbWFzLiBbTGVhcm4gTW9yZV0oaHR0cHM6Ly9wcmlzLmx5L2QvbXVsdGktc2NoZW1hLWNvbmZpZ3VyYXRpb24pZXh0ZW5zaW9uc2V4dGVuc2lvbnMgPSBbJDBdZXh0ZW5zaW9ucyA9IFtwZ190cmdtLCBwb3N0Z2lzKHZlcnNpb246ICIyLjEiKV1FbmFibGUgUG9zdGdyZVNRTCBleHRlbnNpb25zLiBbTGVhcm4gbW9yZV0oaHR0cHM6Ly9wcmlzLmx5L2QvcG9zdGdyZXNxbC1leHRlbnNpb25zKWVuZ2luZVR5cGVBIGRhdGFzb3VyY2UgbXVzdCBub3QgdXNlIHRoZSBlbnYoKSBmdW5jdGlvbiBpbiB0aGUgcHJvdmlkZXIgYXJndW1lbnQudXJsc2hhZG93RGF0YWJhc2VVcmxkaXJlY3RVcmxUaGUgcHJvdmlkZXIgYXJndW1lbnQgaW4gYSBkYXRhc291cmNlIG11c3Qgbm90IGJlIGVtcHR5VGhlIHByb3ZpZGVyIGFyZ3VtZW50IGluIGEgZGF0YXNvdXJjZSBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWxyZWZlcmVudGlhbEludGVncml0eXJlbGF0aW9uTW9kZXByaXNtYWZvcmVpZ25LZXlzWW91IGRlZmluZWQgbW9yZSB0aGFuIG9uZSBkYXRhc291cmNlLiBUaGlzIGlzIG5vdCBhbGxvd2VkIHlldCBiZWNhdXNlIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRhdGFiYXNlcyBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgeWV0LlByZXZpZXcgZmVhdHVyZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBnZW5lcmF0b3IgYmxvY2suIFBsZWFzZSBtb3ZlIHRoaXMgZmllbGQgdG8gdGhlIGdlbmVyYXRvciBibG9jay4AQZy0xQALiQcBAAAA5QEAAOYBAADnAQAA6AEAAOkBAADqAQAA6wEAAJoBAACbAQAA7AEAAJ0BAADtAQAA7gEAAO8BAADwAQAA8QEAAPIBAACkAQAA8wEAAKQBAACmAQAA9AEAAKgBAAD1AQAA9gEAAPcBAAD4AQAA+QEAAPoBAAD7AQAA/AEAAL0BAAD9AQAA/gEAAP8BAACxAQAAAAIAAAECAAACAgAAAwIAAAQCAAAFAgAABgIAAAcCAAC9AQAAvQEAAL0BAAC9AQAAvQEAAFNwR2lzdCBkb2VzIG5vdCBzdXBwb3J0IG11bHRpLWNvbHVtbiBpbmRpY2VzLlRoZSBgZXh0ZW5zaW9uc2AgcHJvcGVydHkgaXMgb25seSBhdmFpbGFibGUgd2l0aCB0aGUgYHBvc3RncmVzcWxFeHRlbnNpb25zYCBwcmV2aWV3IGZlYXR1cmUuVGhlIG5hbWUgb2YgYW4gZXh0ZW5zaW9uIG11c3Qgbm90IGJlIGVtcHR5LlRoZSBjaGFyYWN0ZXIgYC1gIGlzIG5vdCBhbGxvd2VkIGluIGV4dGVuc2lvbiBuYW1lcy5UaGUgbmFtZSBvZiBhbiBleHRlbnNpb24gbXVzdCBub3Qgc3RhcnQgd2l0aCBhIG51bWJlci4lWS0lbS0lZCVIOiVNOiVTJS5mAAAAfykQACwAAAAzAAAAGQAAACVZLSVtLSVkVCVIOiVNOiVTJS5mPFByaXNtYSBzY2hlbWE+ZW1wdHlpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBFbXB0eURhdGFtb2RlbENvbm5lY3Rvcjo6bmF0aXZlX3R5cGVfdG9fc3RyaW5nKCkAAEYvEAA3AAAAOgAAAAkAAABwc2xfY29yZTo6ZGF0YW1vZGVsX2Nvbm5lY3Rvcjo6ZW1wdHlfY29ubmVjdG9yOjpFbXB0eURhdGFtb2RlbENvbm5lY3RvcgBGLxAANwAAAE0AAAAJAAAA9zEQAHMAAADvBQAAIgAAAHArEAArAAAAKAAAAAEAAABwb3N0Z3Jlc211c3Qgc3RhcnQgd2l0aCB0aGUgcHJvdG9jb2wgYHBvc3RncmVzcWw6Ly9gIG9yIGBwb3N0Z3JlczovL2AuAAB+LxAAQwAAAIcCAAA4AAAAaGV4Ynl0ZXN+LxAAQwAAAJECAAAWAAAADwBBsLvFAAutBwgCAAAYAAAABAAAAHYAAAAJAgAAfi8QAEMAAAB0AgAAOAAAAH4vEABDAAAAfQIAABYAAAAQAAAAAQAAAAMAAAB+LxAAQwAAAOMBAAAVAAAAQ2FuIGhhbmRsZSBlcXVhbGl0eSBhbmQgcmFuZ2UgcXVlcmllcyBvbiBkYXRhIHRoYXQgY2FuIGJlIHNvcnRlZCBpbnRvIHNvbWUgb3JkZXJpbmcgKGRlZmF1bHQpLkNhbiBoYW5kbGUgc2ltcGxlIGVxdWFsaXR5IHF1ZXJpZXMsIGJ1dCBubyBvcmRlcmluZy4gRmFzdGVyIHRoYW4gQlRyZWUsIGlmIG9yZGVyaW5nIGlzIG5vdCBuZWVkZWQuR2VuZXJhbGl6ZWQgU2VhcmNoIFRyZWUuIEEgZnJhbWV3b3JrIGZvciBidWlsZGluZyBzcGVjaWFsaXplZCBpbmRpY2VzIGZvciBjdXN0b20gZGF0YSB0eXBlcy5HZW5lcmFsaXplZCBJbnZlcnRlZCBJbmRleC4gVXNlZnVsIGZvciBpbmRleGluZyBjb21wb3NpdGUgaXRlbXMsIHN1Y2ggYXMgYXJyYXlzIG9yIHRleHQuU3BhY2UtcGFydGl0aW9uZWQgR2VuZXJhbGl6ZWQgU2VhcmNoIFRyZWUuIEZvciBpbXBsZW50aW5nIGEgd2lkZSByYW5nZSBvZiBkaWZmZXJlbnQgbm9uLWJhbGFuY2VkIGRhdGEgc3RydWN0dXJlcy5CbG9jayBSYW5nZSBJbmRleC4gSWYgdGhlIGRhdGEgaGFzIHNvbWUgbmF0dXJhbCBjb3JyZWxhdGlvbiB3aXRoIHRoZWlyIHBoeXNpY2FsIGxvY2F0aW9uIHdpdGhpbiB0aGUgdGFibGUsIGNhbiBjb21wcmVzcyB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBkYXRhIGludG8gYSBzbWFsbCBzcGFjZS5yYXdyYXcoIiQwIikAAH4vEABDAAAAUwIAAA4AAAAKAgAAGAAAAAQAAAALAgAAfi8QAEMAAAA1AQAALQAAAH4vEABDAAAAiAEAAEUAAABQcmVjaXNpb24gbXVzdCBiZSBwb3NpdGl2ZSB3aXRoIGEgbWF4aW11bSB2YWx1ZSBvZiAxMDAwLk0gY2FuIHJhbmdlIGZyb20gMCB0byA2Lk0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuAAAAfi8QAEMAAACiAQAASgAAAAAAAAADAEHowsUACwUBAAAABABB+MLFAAsFAgAAAAsAQYjDxQALFQgAAAABAAAAQQAAAB4AAAADAAAAFQBBqMPFAAsFBAAAAA4AQbjDxQALFQUAAAAQAAAAAQAAAAMAAAAHAAAADwBB2MPFAAsFBgAAABsAQejDxQAL1gjCLxAAJwAAAKgAAABAAAAAwi8QACcAAACOAAAAEgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFRoaXMgbWV0aG9kIGlzIG9ubHkgaW1wbGVtZW50ZWQgb24gY29ubmVjdG9ycyB3aXRoIGxhdGVyYWwgam9pbiBzdXBwb3J0LgAAwi8QACcAAAAmAQAACQAAAMIvEAAnAAAAHgEAAAkAAADDIAAgaQUAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSEpISkhKSExKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSkxKTEpMSlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUE5QTlBOUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQUlBSUFJQVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRWVFZUVlRYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlhWWFZYVlpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWlhaWF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cXlxeXF5cYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGJkYmRiZGIAAACEKhAAZgAAAAgBAAAbAAAAAS7DIAAAaQMAAAEuwyAAAGkGAAABLsMgAABpCQAAIEFTQyBERVNDQVNDIE5VTExTIEZJUlNUQVNDIE5VTExTIExBU1RERVNDIE5VTExTIEZJUlNUREVTQyBOVUxMUyBMQVNUJy1JbmZpbml0eSdJbmZpbml0eScnTmFOJ0FSUkFZWwAAhwEAAAQAAAAEAAAAiAEAAJwrEAAeAAAAGwEAAE8AAAA6OnRleHQAQcjMxQAL7iQBAAAAwgEAAHdyaXRpbmcgcmZjMzMzOSBkYXRldGltZSB0byBzdHJpbmcgc2hvdWxkIG5ldmVyIGZhaWyXUBAAYwAAAH8CAAAOAAAAVGhlIFJvdyBtdXN0IGhhdmUgYSBzaW5nbGUgUGFyYW1ldGVyaXplZCBpdGVtAAAAVR8QABUAAAA9AAAADgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IFRoZSBSb3cgbXVzdCBoYXZlIGEgc2luZ2xlIFBhcmFtZXRlcml6ZWQgaXRlbQBVHxAAFQAAAEUAAAASAAAAOjpudW1lcmljOjpqc29uYlRPX0pTT05CKG51bWVyaWN0ZXh0VU5JT04gQUxMVU5JT048dW5rbm93biBob3N0Pr4BAAAMAAAABAAAAAwCAAANAgAADgIAAEZPUkVJR04gS0VZKG5vdCBhdmFpbGFibGUpIExJS0UgKERFTEVURSBGUk9NIElOU0VSVCBJTlRPICBERUZBVUxUIFZBTFVFUyBPTiBDT05GTElDVCBETyBOT1RISU5HIE9OIENPTkZMSUNUIERPIChOT1QgdG9fdHNxdWVyeSggTk9UIExJS0UgdG9fdHN2ZWN0b3IoY29uY2F0X3dzKCcgJywgSlNPTiBwYXRoIHN0cmluZyBub3RhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBQb3N0Z3JlcwCcKxAAHgAAALoBAAAkAAAAIz4+XTo6dGV4dFtdIz4+QVJSQVlbXTo6dGV4dFtdSlNPTkJfQUdHSlNPTkJfVFlQRU9Gc3RyaW5nbnVtYmVyYm9vbGVhbiBMSU1JVCBKU09OQl9CVUlMRF9PQkpFQ1RDQVNUKEFSUkFZX1RPX1NUUklOR0FSUkFZX0FHRycsJyggTk9UIC0+ME1BWE1JTkFycmF5PD5UdXBsZTxUb28gbWFueSBEQiBjb25uZWN0aW9ucyBvcGVuZWRTZXJ2ZXIgaGFzIGNsb3NlZCB0aGUgY29ubmVjdGlvbi5RdWVyeSByZXR1cm5lZCBubyBkYXRhLlRoZSBwcm92aWRlZCBhcmd1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWRUaW1lZCBvdXQgZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlvbi5UcmFuc2FjdGlvbiB3cml0ZSBjb25mbGlj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ABIAAAAzAgAAAAIAAAgAAAA0AgAAcXVlcnkgY29tcGlsZXIgY29ubmVjdHMgc2hvdWxkIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZCBleHByZXNzaW9utkEQADoAAABeAQAAEgAAADUCAAAAAgAACAAAADYCAABxdWVyeSBjb21waWxlciBjb25uZWN0cyBzaG91bGQgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIHBhcmVudCBleHByZXNzaW9uAAAAtkEQADoAAABZAQAAEgAAAHNob3VsZCBoYXZlIHBhcmVudCBJRCBmb3IgZGlzY29ubmVjdLZBEAA6AAAAagEAADAAAAA3AgAAeAAAAAQAAAA4AgAAc2hvdWxkIGhhdmUgZXhhY3RseSBvbmUgcXVlcnkgZm9yIHVwZGF0ZSB3aXRoIHNlbGVjdGlvbgC2QRAAOgAAAIsBAAAKAAAAHj8QAE4AAABJAAAAKQAAAFN0cmluZ0NodW5rY2h1bmtQYXJhbWV0ZXIAAAA5AgAADAAAAAQAAAClAAAAUGFyYW1ldGVyVHVwbGVpdGVtX3ByZWZpeGl0ZW1fc2VwYXJhdG9yaXRlbV9zdWZmaXhQYXJhbWV0ZXJUdXBsZUxpc3Rncm91cF9zZXBhcmF0b3IAOgIAADQAAAAEAAAA3QAAAAAAAAAEAAAABAAAAMwAAABSb3dUb0pzb25leHBycHJldHR5X3ByaW50SnNvblVucXVvdGVKc29uQXJyYXlBZ2dKc29uQnVpbGRPYmplY3RleHByc0pzb25FeHRyYWN0TGFzdEFycmF5RWxlbUFnZ3JlZ2F0ZVRvU3RyaW5nTG93ZXJVcHBlckNvbmNhdFRleHRTZWFyY2hjb2x1bW5NYXhpbXVtTWluaW11bUNvYWxlc2NlU3RyaW5naWZ5b25seSBhIHNpbmdsZSBxdWVyeSBjYW4gYmUgY29tcGlsZWQgYXQgYSB0aW1lUGxhY2Vob2xkZXJGb3JtYXRwcmVmaXhoYXNfbnVtYmVyaW5nAAAAOwIAABAAAAAEAAAA3gAAADwCAAAMAAAABAAAAN8AAAAAAAAABAAAAAQAAADgAAAARGVsZXRldGFibGVjb25kaXRpb25zcmV0dXJuaW5nAAA9AgAADAAAAAQAAADqAAAAPgIAAAwAAAAEAAAA/wAAAD8CAAAMAAAABAAAAOgAAAAAAAAABAAAAAQAAADmAAAAY29sdW1ucwAmdBEABQAAAIB0EQAHAAAA2gMSAAYAAAArdBEACgAAAHEUEgAHAAAANXQRAAkAAABGbGF0TWFwVmFsdWVzcm93c05vQ29uZGl0aW9uTmVnYXRpdmVDb25kaXRpb25Db21wb3VuZHR5cF9BdmFpbGFibGVVbmF2YWlsYWJsZUl0ZXJleHRlbnNpb24gdHlwZSBub3QgZm91bmQAAAAFNBAAMAAAAMUBAAAWAAAARXhhY3RseU9uZUVycm9yc2Vjb25kSm9pbkRhdGFsYXRlcmFsSnNvbkV4dHJhY3RGaXJzdEFycmF5RWxlbVRleHRTZWFyY2hSZWxldmFuY2VAAgAAYAAAAAgAAABBAgAAU3ViTXVsRGl2UmVtTWVyZ2V1c2luZ3doZW5fbm90X21hdGNoZWREaXN0aW5jdAAAQgIAAAwAAAAEAAAAQwIAAEQCAAAMAAAABAAAAEUCAABGAgAADAAAAAQAAABHAgAASAIAAAwAAAAEAAAASQIAAEoCAABIAAAACAAAAEsCAABMAgAADAAAAAQAAABNAgAATgIAAAwAAAAEAAAATwIAAHRhYmxlc29yZGVyaW5nZ3JvdXBpbmdvZmZzZXRqb2luc2N0ZXMAAABM+REACAAAADR2EQAGAAAAgHQRAAcAAAArdBEACgAAADp2EQAIAAAAQnYRAAgAAAAw/hEABgAAADb+EQAFAAAASnYRAAYAAABQdhEABQAAAFV2EQAEAAAAcRQSAAcAAABTZWxlY3RMaWtlTm90TGlrZU5vdE51bGxCZXR3ZWVuTm90QmV0d2Vlbk1hdGNoZXNOb3RNYXRjaGVzRXhpc3RzTm90RXhpc3RzSW5zZXJ0Um93TnVtYmVySnNvbkV4dHJhY3RVdWlkVG9CaW5VdWlkVG9CaW5Td2FwcGVkT3JkZXJpbmdJbm5lckxlZnRSaWdodEZ1bGxFbnVtVmFyaWFudFVzaW5nYmFzZV9xdWVyeWFzX3RhYmxlb25fY29uZGl0aW9uc0dyb3VwaW5nAAAAUAIAADQAAAAEAAAAUQIAAFICAACAAAAABAAAAFMCAABvbl9jb25mbGljdAAmdBEABQAAAIB0EQAHAAAA2gMSAAYAAACsdxEACwAAADV0EQAJAAAAcRQSAAcAAABBcnJheUNvbnRhaW5zQXJyYXlOb3RDb250YWluc1R5cGVFcXVhbHNUeXBlTm90RXF1YWxzUm93Q29uc3RhbnRPbkNsYXVzZVJhd1NxbHNxbGFyZ190eXBlc1RlbXBsYXRlU3FsZnJhZ21lbnRzcGxhY2Vob2xkZXJfZm9ybWF0Y2h1bmthYmxlRXhwcmVzc2lvbnNlbGVjdHN0eXBlc3R5cGVkbmF0aXZlX2NvbHVtbl90eXBlAAAAvgEAAAwAAAAEAAAAVAIAAFUCAABWAgBBwPHFAAvWGAEAAADCAQAASW50MzJJbnQ2NERvdWJsZVRleHRFbnVtQXJyYXlOdW1lcmljWG1sRGF0ZVRpbWVPcGFxdWVPcGFxdWVWYWx1ZXR5cFVua25vd25UdXBsZUZsYXR0ZW5Db21wYXRpdGVyZnJvbnRpdGVyYmFja2l0ZXJJdGVtb3B0SW50b0l0ZXJXAgAAKAAAAAQAAABYAgAAc2hvdWxkIGdlbmVyYXRlIGV4YWN0bHkgb25lIGRlbGV0ZQAAIFkQADoAAADVAQAAEgAAAHNob3VsZCBoYXZlIHJlY29yZCBzZWxlY3RvcnMgZm9yIHVwZGF0ZQAgWRAAOgAAAFoBAAAWAAAAc2hvdWxkIGdlbmVyYXRlIGV4YWN0bHkgb25lIHVwZGF0ZSBxdWVyeSBZEAA6AAAAZQEAABIAAABwcm9kdWN0AFkCAABkAAAABAAAAFoCAABzaG91bGQgaGF2ZSBvbmUgZmllbGQgaW4gbTJtIHJlbGF0aW9uAAAAIFkQADoAAADFAAAADgAAACBZEAA6AAAA7wEAACwAAAAgWRAAOgAAAO8BAABDAAAAIFkQADoAAADwAQAAMgAAACBZEAA6AAAA8AEAAEcAAABDb21tb25UYWJsZUV4cHJlc3Npb25PdmVycGFydGl0aW9uaW5nb3ZlcmV4dHJhY3RfYXNfc3RyaW5nZWxlbWVudHNFbnVtTmFtZXNjaGVtYV9uYW1lQXJnVHlwZWFyaXR5c2NhbGFyX3R5cGVkYl90eXBlTnVtYmVyQ29sdW1uUmVmRnVzZVVuc3VwcG9ydGVkU2NhbGFyV3JpdGVPcGVyYXRpb25QYXJhbWV0ZXJpemVkUGFyYW1ldGVyaXplZFJvd1Jhd1ZhbHVlQ29sdW1uU2VsZWN0aW9uQXN0ZXJpc2tPcENvbmRpdGlvblRyZWVDb21wYXJlVGFibGVKb2luZWRUYWJsZUFzY0Rlc2NBc2NOdWxsc0ZpcnN0QXNjTnVsbHNMYXN0RGVzY051bGxzRmlyc3REZXNjTnVsbHNMYXN0RmllbGRzSW5kZXhGb3JlaWduS2V5Q2Fubm90UGFyc2VkYXRhYmFzZWluZGV4X2RlZmluaXRpb25zAFsCAABIAAAACAAAAFwCAAAAAAAABgAAAAIAAABdAgAAXgIAABAAAAAEAAAAXwIAAAAAAAABAAAAAQAAAGACAAB0eXBlX2ZhbWlseW5hdGl2ZV90eXBlaXNfZW51bWlzX2xpc3Rpc19zZWxlY3RlZAAgVhIABAAAACZ0EQAFAAAAEKIRAAUAAAB5+REABwAAAEh8EQALAAAAU3wRAAsAAABefBEABwAAAGV8EQAHAAAAbHwRAAsAAABEb05vdGhpbmdZZXNOb0RhdGFiYXNlTm90UmVhY2hhYmxlTG9jYXRpb25ob3N0cG9ydG9yaWdpbmFsX2NvZGVvcmlnaW5hbF9tZXNzYWdlUHJvdmlkZWRHZW5lcmF0ZWRSYXdDb25uZWN0b3JFcnJvcnN0YXR1c3JlYXNvblF1ZXJ5RXJyb3JUb29NYW55Q29ubmVjdGlvbnNRdWVyeUludmFsaWRJbnB1dERhdGFiYXNlTm90UmVhY2hhYmxlZGF0YWJhc2VfbG9jYXRpb25EYXRhYmFzZURvZXNOb3RFeGlzdGRiX25hbWVEYXRhYmFzZUFjY2Vzc0RlbmllZERhdGFiYXNlQWxyZWFkeUV4aXN0c1Rsc0Nvbm5lY3Rpb25FcnJvckNvbm5lY3Rpb25DbG9zZWRBdXRoZW50aWNhdGlvbkZhaWxlZHVzZXJUYWJsZURvZXNOb3RFeGlzdFVuaXF1ZUNvbnN0cmFpbnRWaW9sYXRpb25jb25zdHJhaW50TnVsbENvbnN0cmFpbnRWaW9sYXRpb25Gb3JlaWduS2V5Q29uc3RyYWludFZpb2xhdGlvbkNvbHVtblJlYWRGYWlsdXJlUmVzdWx0SW5kZXhPdXRPZkJvdW5kc0NvbHVtbk5vdEZvdW5kUmVzdWx0VHlwZU1pc21hdGNoRGF0YWJhc2VVcmxJc0ludmFsaWRDb252ZXJzaW9uRXJyb3JMZW5ndGhNaXNtYXRjaEludmFsaWRDb25uZWN0aW9uQXJndW1lbnRzU29ja2V0VGltZW91dFZhbHVlT3V0T2ZSYW5nZUluY29ycmVjdE51bWJlck9mUGFyYW1ldGVyc2V4cGVjdGVkYWN0dWFsVHJhbnNhY3Rpb25BbHJlYWR5Q2xvc2VkVHJhbnNhY3Rpb25Xcml0ZUNvbmZsaWN0Um9sbGJhY2tXaXRob3V0QmVnaW5JbnZhbGlkSXNvbGF0aW9uTGV2ZWxVVUlERXJyb3JNaXNzaW5nRnVsbFRleHRTZWFyY2hJbmRleFVuc3VwcG9ydGVkQ29sdW1uVHlwZWNvbHVtbl90eXBlRXh0ZXJuYWxFcnJvck9wYXF1ZUFzUmF3VmFsdWVSYW5RdWVyeVdpdGhPcGFxdWVQYXJhbU5hdGl2ZUNvbHVtblR5cGVsZW5ndGgAAKZKNnmPnP13bBK9yC/54sYgSU5ORVIgSk9JTiAgTEVGVCBKT0lOICBSSUdIVCBKT0lOICBGVUxMIEpPSU4gbm90IGltcGxlbWVudGVkOiBNZXJnZXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIHVuZGVybHlpbmcgZGF0YWJhc2UuMC8QABUAAAAAAgAACQAAAFdJVEggAAAAMC8QABUAAAA2AgAAKAAAAFNFTEVDVCBESVNUSU5DVCBESVNUSU5DVCBPTiAgRlJPTSAgV0hFUkUgIEdST1VQIEJZICBPUkRFUiBCWSBVUERBVEUgIFNFVCAgUkVUVVJOSU5HICA9IEFWRy8qICAqLzAvEAAVAAAAfQMAACoAAAAgSU4gMT0wZnVuY3Rpb24gY2FsbCBhZ2FpbnN0IGEgcm93IG9mIGV4cHJlc3Npb25zIG11c3QgaGF2ZSBhIG5hbWUAADAvEAAVAAAApQMAABkAAAAwLxAAFQAAAKIDAAAZAAAAMC8QABUAAABdAwAAKgAAADAvEAAVAAAAXgMAADMAAAAgPD4gMC8QABUAAAD+AwAAKgAAACBOT1QgSU4gMT0xADAvEAAVAAAAMQQAABkAAAAwLxAAFQAAAC4EAAAZAAAAMC8QABUAAADeAwAAKgAAADAvEAAVAAAA3wMAADMAAAAgSVMgTk9UIE5VTEwgQkVUV0VFTiAgTk9UIEJFVFdFRU4gQU5ZQUxMRVhJU1RTTk9UIEVYSVNUU1JPV19OVU1CRVIoKSBPVkVSUk9XX05VTUJFUigpIE9WRVIoKUNPVU5UKCopdXVpZF90b19iaW4odXVpZCgpKXV1aWRfdG9fYmluKHV1aWQoKSwgMSl1dWlkKCkgPCBERUZBVUxUID4gUEFSVElUSU9OIEJZIE9SREVSIEJZIAAAAAAAAAEAAAABAAAAhgEAAFtZEAAcAAAANAEAACwAAABwcmlzbWFfX3R5cGVwYXJhbXByaXNtYV9fdmFsdWUAAGECAAAEAAAABAAAAIgBAABnZW5lcmF0b3JDYWxscmV0dXJuVHlwZQBbWRAAHAAAAGYBAAAKAAAAJUMQAIQAAABOAAAANQAAAGICAAAkAAAABAAAAGMCAABkAgAAAAAAAAEAAAABAAAAFgIAABcCAABlAgAALAAAAAQAAABmAgAAZwIAAGICAAAkAAAABAAAAGgCAABpAgAAAAAAAAQAAAAEAAAAagIAAGsCAABsAgAAFAAAAAQAAABtAgAAbgIAAG42EAB0AAAA5wUAABQAAABuNhAAdAAAAOcFAAAhAAAAbjYQAHQAAADbBQAAIQAAAG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0YhBEAKAAAACQAAAAAAAAAAgAAAECEEQAnKhAAOQAAAHIAAAAbAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogVW5leHBlY3RlZCByZWxhdGlvbiBhZ2dyZWdhdGlvbiBzZWxlY3Rpb24gaW5zaWRlIGEgY29tcG9zaXRlIHR5cGUgcXVlcnkAAAAnKhAAOQAAAG4AAAAVAAAAcmVhZF9pZHNfaW5mYWxsaWJsZWZpbmRfY2hpbGRyZW5fYnlfcGFyZW50AEGgisYAC+EBAQAAAG8CAABwAgAAz0QQADsAAADNAAAANQAAAKA0EABIAAAATgIAABYAAABNaXNzaW5nUmVxdWlyZWRBcmd1bWVudGFyZ3VtZW50X25hbWVmaWVsZF9uYW1lb2JqZWN0X25hbWVSZWxhdGlvblZpb2xhdGlvbnJlbGF0aW9uX25hbWVJbnB1dEVycm9ybW9kZWxBbW9kZWxCcmVsYXRpb25UeXBlb3BlcmF0aW9ubmVlZGVkRm9yZXhwZWN0ZWRSb3dzUmVjb3Jkc05vdENvbm5lY3Rl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AAAAEAAAAEAAAACAiABFdmVyeSBmaWVsZCB1c2VkIGluIGBoYXZpbmdgIGZpbHRlcnMgbXVzdCBlaXRoZXIgYmUgYW4gYWdncmVnYXRpb24gZmlsdGVyIG9yIGJlIGluY2x1ZGVkIGluIHRoZSBzZWxlY3Rpb24gb2YgdGhlIHF1ZXJ5LiBNaXNzaW5nIGZpZWxkczogwABBdCBsZWFzdCBvbmUgc2VsZWN0aW9uIGlzIHJlcXVpcmVkIGZvciB0aGUgYGJ5YCBhcmd1bWVudC5FeHBlY3RlZCBwYXJzaW5nIHRvIGd1YXJhbnRlZSBlaXRoZXIgYSBzaW5nbGUgZW51bSBvciBhIGxpc3Qgb2YgZW51bXMgaXMgcHJvdmlkZWQgZm9yIGdyb3VwIGJ5IGBieWAgYXJnLoCCAEV2ZXJ5IHNlbGVjdGVkIHNjYWxhciBmaWVsZCB0aGF0IGlzIG5vdCBwYXJ0IG9mIGFuIGFnZ3JlZ2F0aW9uIG11c3QgYmUgaW5jbHVkZWQgaW4gdGhlIGJ5LWFyZ3VtZW50cyBvZiB0aGUgcXVlcnkuIE1pc3NpbmcgZmllbGRzOiDAAAAAAPEdEABJAAAAiAAAAA4AAADxHRAASQAAAJQAAAAOAAAA8R0QAEkAAAAMAAAAMwAAAPEdEABJAAAAFAAAAC0AAACqQxAASgAAAAkAAAAtAAAAVW5hYmxlIHRvIHByb2Nlc3MgY29tYmluYXRpb24gb2YgcXVlcnkgYXJndW1lbnRzIGZvciBhZ2dyZWdhdGlvbiBxdWVyeS4gUGxlYXNlIG5vdGUgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgYXQgdGhlIG1vbWVudCB0byBoYXZlIGEgbnVsbC1jdXJzb3IsIG9yIGEgY3Vyc29yIGFuZCBvcmRlckJ5IGNvbWJpbmF0aW9uIHRoYXQgbm90IHN0YWJsZSAodW5pcXVlKS5TZXQgaXMgbm90IHN1cHBvcnRlZCBvbiBvbmUtdG8tb25lIHJlbGF0aW9ucy4ANVUQAEYAAAAwAAAACQBB3LzGAAv9AQEAAAC9AgAAvgIAAFtRdWVyeSBHcmFwaF0gRXhwZWN0ZWQgb25seSBvbmUgbmVzdGVkIGNyZWF0ZSBub2RlIG9uIGEgMTptIHJlbGF0aW9uIHdpdGggaW5saW5lIElEcyBvbiB0aGUgcGFyZW50LgBVVhAASQAAALIBAAAKAAAAW1F1ZXJ5IEdyYXBoXSBFeHBlY3RlZCBvbmUgbmVzdGVkIGNyZWF0ZSBub2RlIG9uIGEgMTptIHJlbGF0aW9uIHdpdGggaW5saW5lIElEcyBvbiB0aGUgcGFyZW50LgAAVVYQAEkAAAASAQAADgAAAFVWEABJAAAAHAIAAFgAQeS+xgALli8BAAAAvwIAAMACAACfVhAASQAAAEkAAABCAAAAn1YQAEkAAAA3AAAATgAAAJ9WEABJAAAAOgAAADoAAACfVhAASQAAAH8AAAA2AAAAn1YQAEkAAACAAAAANgAAAGNyZWF0ZSBhcmd1bWVudCBpcyBtaXNzaW5nAADrVBAASQAAAG8AAAA9AAAAdXBkYXRlIGFyZ3VtZW50IGlzIG1pc3NpbmcAAOtUEABJAAAAcAAAAD0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiB3aGVyZSBhcmd1bWVudCBpcyBtaXNzaW5nAOtUEABJAAAAfAAAAB0AAAAAVhAAVAAAALcAAAAeAAAAAFYQAFQAAAC6AAAANAAAAABWEABUAAAAvQAAADYAAAAAVhAAVAAAAGgAAAA4AAAAAFYQAFQAAABrAAAAOgAAAABWEABUAAAABAEAADgAAAAAVhAAVAAAAAcBAAA6AAAAAFYQAFQAAAB6AQAAHgAAAABWEABUAAAAfQEAADQAAAAAVhAAVAAAAIABAAA2AAAAY00QAEUAAAC1AAAAMAAAAE1vZGVsTm90Rm91bmQAAAC+AQAADAAAAAQAAAA1AQAARmllbGROb3RGb3VuZGNvbnRhaW5lcl90eXBlY29udGFpbmVyX25hbWVTY2FsYXJGaWVsZE5vdEZvdW5kQ29tcG9zaXRlRmllbGROb3RGb3VuZFJlbGF0aW9uRmllbGROb3RGb3VuZEVudW1Ob3RGb3VuZEJpdEZsYWdzPFF1ZXJ5T3B0aW9uPmJpdHNmbGFnc1JldHVybkludmFyaWFudFZpb2xhdGlvbkludmFsaWROb2RlVHJhbnNmb3JtYXRpb24AADkCAAAMAAAABAAAANcAAABhbGlhc1VwZGF0ZU9yQ3JlYXRlQXJnc0lucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCB1cGRhdGUgb3IgY3JlYXRlIG5vZGVzAAAA9yUQADUAAAASAAAAFgAAAFVwZGF0ZU9yQ3JlYXRlQXJnc0lucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXcml0ZVF1ZXJ5IG5vZGVzAAD3JRAANQAAABUAAAANAAAAZmFpbGVkIHRvIHBhcnNlIGJpZ2ludC9iaWd1aW50UmVjb3JkUXVlcnlGaWx0ZXJJbnB1dCBjYW4gb25seSBiZSB1c2VkIHdpdGggTm9kZTo6UXVlcnkoUXVlcnk6OlJlYWQoUmVhZFF1ZXJ5OjpSZWNvcmRRdWVyeShycSkpKQDaohEAYQAAAPclEAA1AAAAMQAAAAEAAAATUmVjb3JkUXVlcnkobmFtZTogJ8AOJywgc2VsZWN0aW9uOiDACiwgZmlsdGVyOiDBIACAYAEpABhNYW55UmVjb3Jkc1F1ZXJ5KG5hbWU6ICfACycsIG1vZGVsOiAnwA4nLCBzZWxlY3Rpb246IMAILCBhcmdzOiDBIACAYAEpAENvbm5lY3RSZWNvcmRzRGlzY29ubmVjdFJlY29yZHMAC1sQAF0AAAD7BgAAMAAAAFJlY29yZFF1ZXJ5RmlsdGVySW5wdXQUQ3JlYXRlUmVjb3JkKG1vZGVsOiDACCwgYXJnczogwSAAgGABKQAYQ3JlYXRlTWFueVJlY29yZChtb2RlbDogwBMsIHNlbGVjdGVkX2ZpZWxkczogwSAAgGABKQAUVXBkYXRlUmVjb3JkKG1vZGVsOiDADSwgc2VsZWN0aW9uOiDBIACAYAEpAA5EZWxldGVSZWNvcmQ6IMACLCDBIACAYAIsIMEgAIBgABlVcGRhdGVNYW55UmVjb3Jkcyhtb2RlbDogwAgsIGFyZ3M6IMEgAIBgASkADEV4ZWN1dGVSYXc6IMEgAIBgAApRdWVyeVJhdzogwSAAgGAAcGFyc2VyIGVycm9yLCBzZWUgdG9fc3RyaW5nKCkgZm9yIGRldGFpbHMAAAAAAAAABAAAAAQAAAAfAQAAUmVjb3JkRmlsdGVyc2VsZWN0b3JzTWFueVJlY29yZHNRdWVyeUZpbHRlcklucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBOb2RlOjpRdWVyeShRdWVyeTo6UmVhZChSZWFkUXVlcnk6Ok1hbnlSZWNvcmRzUXVlcnkobXJxKSkpAAAAZaURAGwAAAD3JRAANQAAADcAAAABAAAAYWxsRG9tYWluRXJyb3JNYW55UmVjb3Jkc1F1ZXJ5RmlsdGVySW5wdXQgfCA8ZW1wdHk+RXhlY3V0aW9uT3JkZXJQYXJlbnRSZXN1bHRUaGVuRWxzZVVwZGF0ZVJlY29yZFNlbGVjdG9yc0lucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBOb2RlOjpRdWVyeShRdWVyeTo6V3JpdGUoV3JpdGVRdWVyeTo6VXBkYXRlUmVjb3JkKHVyKSkpAAAAQaYRAGgAAAD3JRAANQAAAD0AAAABAAAAQ291bnRBbGxBZ2dyZWdhdGlvblNlbGVjdGlvbmRt0yAAgGkBAADTIACAbQEAANMgAIBrAQAAAACiIBAAMwAAAJkAAABFAAAAUkVMQVRJT05fVklPTEFUSU9OAAAiMBAANAAAAG0AAAAkAAAAVXBkYXRlUmVjb3JkU2VsZWN0b3JzSW5wdXRDb21wb3NpdGVFbnZlbG9wZVJlbGF0aW9uRW52ZWxvcGVGaWVsZFJlZlR5cGVXaGVyZUlucHV0VHlwZU5lc3RlZFRvT25lVXBkYXRlRW52ZWxvcGVQYXJzZWRJbnB1dE1hcHRhZ1VwZGF0ZU1hbnlSZWNvcmRzU2VsZWN0b3JzSW5wdXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIE5vZGU6OlF1ZXJ5KFF1ZXJ5OjpXcml0ZShXcml0ZVF1ZXJ5OjpVcGRhdGVNYW55UmVjb3Jkcyh1cikpKQAAAK+nEQByAAAA9yUQADUAAABDAAAAAQAAAENoYXJjaGFyYWN0ZXJTaW1wbGVMZW5ndGhsZW5CeXRlTGVuZ3RoR3JvdXBDb3VudEdyb3VwTGVuZ3RoZ3JvdXBJbnZhbGlkVVRGOE1JU1NJTkdfUkVDT1JEAAAAIjAQADQAAACLAAAAJAAAAFVwZGF0ZU1hbnlSZWNvcmRzU2VsZWN0b3JzSW5wdXREZWxldGVSZWNvcmRTZWxlY3RvcnNJbnB1dCBjYW4gb25seSBiZSB1c2VkIHdpdGggTm9kZTo6UXVlcnkoUXVlcnk6OldyaXRlKFdyaXRlUXVlcnk6OkRlbGV0ZVJlY29yZChkcikpKQDHqBEAaAAAAPclEAA1AAAASQAAAAEAAABNSVNTSU5HX1JFTEFURURfUkVDT1JEAAAiMBAANAAAAMkAAAAkAAAARGVsZXRlUmVjb3JkU2VsZWN0b3JzSW5wdXQAAMICAAAIAAAABAAAAKEAAADDAgAAqAAAAAgAAACiAAAAxAIAAAwAAAAEAAAAxQIAAMYCAAAMAAAABAAAAMcCAADIAgAADAAAAAQAAACjAAAAcGFyZW50X2ZpZWxkc2VsZWN0ZWRfZmllbGRzbmVzdGVkc2VsZWN0aW9uX29yZGVycGFyZW50X3Jlc3VsdHMAACBWEgAEAAAAEKIRAAUAAADcqREADAAAAFFIEgAEAAAA6KkRAA8AAAD3qREABgAAAP2pEQAPAAAADKoRAA4AAABSZWxhdGVkUmVjb3Jkc1F1ZXJ5AMkCAAAMAAAABAAAAG8BAADKAgAADAAAAAQAAADLAgAAzAIAAAwAAAAEAAAAzQIAAM4CAAAMAAAABAAAADEBAAAAAAAABAAAAAQAAAAVAQAAZ3JvdXBfYnkgVhIABAAAABCiEQAFAAAAkgUSAAUAAAD9qREADwAAAFFIEgAEAAAAXKURAAkAAADAqhEACAAAADD+EQAGAAAAQWdncmVnYXRlUmVjb3Jkc1F1ZXJ5SW50ZXJuYWxEYXRhTW9kZWxEaWZmTGVmdFRvUmlnaHREaWZmUmlnaHRUb0xlZnRVcGRhdGVPckNyZWF0ZUFyZ3NJbnB1dADKVxAAKQAAAFwAAAASAAAAylcQACkAAABkAAAAEgAAAG42EAB0AAAAzwEAADcAAABXcml0ZUFyZ3NyZXF1ZXN0X25vd0lOQ09NUExFVEVfQ09OTkVDVF9JTlBVVCIwEAA0AAAA4QAAACQAAABEZWxldGVNYW55UmVjb3Jkc1NlbGVjdG9yc0lucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBOb2RlOjpRdWVyeShRdWVyeTo6V3JpdGUoV3JpdGVRdWVyeTo6RGVsZXRlTWFueVJlY29yZHMoZHIpKSkAANCrEQByAAAA9yUQADUAAABPAAAAAQAAAFJlY29yZFF1ZXJ5TWFueVJlY29yZHNRdWVyeWpvaW5JTkNPTVBMRVRFX0NPTk5FQ1RfT1VUUFVUIjAQADQAAAD/AAAAJAAAAERlbGV0ZU1hbnlSZWNvcmRzU2VsZWN0b3JzSW5wdXRSRUNPUkRTX05PVF9DT05ORUNURUQiMBAANAAAABwBAAAkAAAATGVmdFNpZGVEaWZmSW5wdXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIE5vZGU6OkNvbXB1dGF0aW9uKENvbXB1dGF0aW9uOjpEaWZmTGVmdFRvUmlnaHQoZGlmZl9ub2RlKSB8CkNvbXB1dGF0aW9uOjpEaWZmUmlnaHRUb0xlZnQoZGlmZl9ub2RlKSnorBEAjAAAAPclEAA1AAAAVQAAAAEAAABWYWxpZGF0aW9uRXJyb3JtZXRhYSBxdWVyeWFuIHVwZGF0ZWFuIHVwc2VydGEgZGVsZXRlYSBkaXNjb25uZWN0YSBjb25uZWN0YSBuZXN0ZWQgY3JlYXRlYSBuZXN0ZWQgdXBkYXRlYSBuZXN0ZWQgdXBzZXJ0YSBuZXN0ZWQgZGVsZXRlYSBuZXN0ZWQgc2V0YSBuZXN0ZWQgY29ubmVjdGEgbmVzdGVkIGNvbm5lY3Qgb3IgY3JlYXRlTGVmdFNpZGVEaWZmSW5wdXRSaWdodFNpZGVEaWZmSW5wdXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIE5vZGU6OkNvbXB1dGF0aW9uKENvbXB1dGF0aW9uOjpEaWZmTGVmdFRvUmlnaHQoZGlmZl9ub2RlKSB8CkNvbXB1dGF0aW9uOjpEaWZmUmlnaHRUb0xlZnQoZGlmZl9ub2RlKSkAAABYrhEAjQAAAPclEAA1AAAAWwAAAAEAAABSaWdodFNpZGVEaWZmSW5wdXRwZXJmb3JtIGEgbmVzdGVkIHVwZGF0ZWRpc2Nvbm5lY3QgZXhpc3RpbmcgY2hpbGQgcmVjb3Jkc0lmSW5wdXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIE5vZGU6OkZsb3coRmxvdzo6SWYgeyBkYXRhLCAuLiB9KQAAAEqvEQA/AAAA9yUQADUAAABhAAAAAQAAAENyZWF0ZU1hbnlSZWNvcmRzRmllbGRzb3JkZXJJZklucHV0UmV0dXJuSW5wdXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIE5vZGU6OkZsb3coRmxvdzo6UmV0dXJuKGRhdGEpKQDHrxEAQAAAAPclEAA1AAAAZwAAAAEAAABUaHJvd09uRW1wdHlTaW5nbGVPcmRlckJ5TWFwb25lLXRvLW9uZW9uZS10by1tYW55bWFueS10by1tYW55UmV0dXJuSW5wdXRSZWxhdGVkUmVjb3Jkc1NlbGVjdG9yc0lucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBOb2RlOjpRdWVyeShRdWVyeTo6UmVhZChSZWFkUXVlcnk6OlJlbGF0ZWRSZWNvcmRzUXVlcnkocnEpKSkAaLARAG8AAAD3JRAANQAAAG0AAAABAAAAU2NoZW1hRXJyb3JRdWVyeVBhcnNlckVycm9yQXNzZXJ0aW9uRXJyb3JwYXJlbnRfbmFtZWNoaWxkX25hbWVSZWNvcmROb3RGb3VuZFF1ZXJ5R3JhcGhFcnJvclJlbGF0ZWRSZWNvcmRzU2VsZWN0b3JzSW5wdXRtb2RlbF9hbW9kZWxfYkNvbm5lY3RQYXJlbnRJbnB1dCBjYW4gb25seSBiZSB1c2VkIHdpdGggTm9kZTo6UXVlcnkoUXVlcnk6OldyaXRlKFdyaXRlUXVlcnk6OkNvbm5lY3RSZWNvcmRzKGNyKSkpAHWxEQBiAAAA9yUQADUAAABzAAAAAQAAAENvbm5lY3RQYXJlbnRJbnB1dENvbm5lY3RDaGlsZHJlbklucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBOb2RlOjpRdWVyeShRdWVyeTo6V3JpdGUoV3JpdGVRdWVyeTo6Q29ubmVjdFJlY29yZHMoY3IpKSkAAAKyEQBkAAAA9yUQADUAAAB5AAAAAQAAAENvbm5lY3RDaGlsZHJlbklucHV0UXVlcnlPcHRpb25zRGlzY29ubmVjdFBhcmVudElucHV0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBOb2RlOjpRdWVyeShRdWVyeTo6V3JpdGUoV3JpdGVRdWVyeTo6RGlzY29ubmVjdFJlY29yZHMoZHIpKSmgshEAaAAAAPclEAA1AAAAfwAAAAEAAABBdE1vc3RPbmVFeGFjdGx5T25lQWxsRmlsdGVyRXhhY3RseU9uZUZpbHRlckV4YWN0bHlPbmVXcml0ZUFyZ3NEaXNjYXJkRGlzY29ubmVjdFBhcmVudElucHV0RGlzY29ubmVjdENoaWxkcmVuSW5wdXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIE5vZGU6OlF1ZXJ5KFF1ZXJ5OjpXcml0ZShXcml0ZVF1ZXJ5OjpEaXNjb25uZWN0UmVjb3JkcyhkcikpKQAAAHuzEQBqAAAA9yUQADUAAACFAAAAAQAAAFJvd0NvdW50RXFSb3dDb3VudE5lcUFmZmVjdGVkUm93Q291bnRFcU5ldmVyRGlzY29ubmVjdENoaWxkcmVuSW5wdXREZWxldGVSZWNvcmRGaWVsZHMAAABuNhAAdAAAAGsEAAAkAAAAzwIAAFAAAAAIAAAAOAEAAAAAAAABAAAAAQAAANACAAAAAAAABAAAAAQAAADRAgAAIFYSAAQAAAAQohEABQAAAJIFEgAFAAAAbU0SAAYAAADoqREADwAAAPepEQAGAAAA/akRAA8AAADq9xEABwAAACG+EQAWAAAAIFYSAAQAAAAQohEABQAAAJIFEgAFAAAAUUgSAAQAAADoqREADwAAAPepEQAGAAAA/akRAA8AAADq9xEABwAAACG+EQAWAAAAAUbStj8K2ZObBmONPV1YrnuWRCato9zF6cGgYvD1IU6S2fzMWBFPLrnfDMkRXhP4JKege2bO3h/zp9dQ8PL6zZDmGeS7GlNN0X2hRlkzByALjfd1UOZ33NnPYA+B787eRXJyb3Igc3BsaXR0aW5nIGBSZXR1cm5WYWx1ZXNgOiBgRmllbGRTZWxlY3Rpb25gIGRvZXNuJ3QgbWF0Y2guAFIjEAA2AAAAUgAAAB4AAABwcmltYXJ5IGlkZW50aWZpZXIgbXVzdCBjb25zaXN0IG9mIHNjYWxhciBmaWVsZHOLPRAAKwAAABsAAAAWAAAAEDoQAC4AAAA7AAAAFgAAAOk0EAAyAAAAigAAAFcAAAAkAAAAOLYRAAEAAAC+MRAAOAAAABQAAAAwAAAAvjEQADgAAAAVAAAALwAAAL4xEAA4AAAAFgAAAC4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBhc19wbGFjZWhvbGRlcnMgZ3VhcmFudGVlcyBhbGwgdmFsdWVzIGFyZSBwbGFjZWhvbGRlcnO+MRAAOAAAACsAAAAdAAAAvgEAAAwAAAAEAAAA0gIAANMCAADUAgBBhO7GAAvtBwEAAADCAQAAY2FsbGVkIERlZmF1bHRWYWx1ZTo6dW53cmFwX3NpbmdsZSgpIG9uIHdyb25nIHZhcmlhbnQAAADTQBAAMwAAADsAAAASAAAAZGJnZW5lcmF0ZWRmaWVsZCB2YWx1ZXNhc3NpbWlsYXRlZCBmaWVsZCB2YWx1ZXNtb2RlbCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHVuaXF1ZSBjcml0ZXJpb26LPRAAKwAAAB8AAAAVAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogVGhpcyBzaG91bGRuJ3QgYmUgcmVhY2hlZDsgY29tcG9zaXRlIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGNvbXBvdW5kIHVuaXF1ZSBpbmRpY2VzLgAA6TQQADIAAABgAAAAEQAAAGF1dG9pbmNyZW1lbnQAAADbORAANAAAAFgAAAA6AAAA2zkQADQAAAB8AAAAPAAAANs5EAA0AAAAhgAAABoAAADbORAANAAAAIAAAAAaAAAA2zkQADQAAACNAAAARgAAANs5EAA0AAAASgAAAFUAAACAQRAANQAAACIAAABrAAAAgEEQADUAAAAjAAAAaAAAADFUEAAxAAAAowAAACgAAABuYW5vaWQAAL4BAAAMAAAABAAAADUBAADTQBAAMwAAANYAAABOAAAA00AQADMAAADYAAAALwAAANNAEAAzAAAAsQAAADoAAADTQBAAMwAAALgAAAAzAAAA00AQADMAAAC6AAAATwAAANNAEAAzAAAArQAAAEEAAABub3cA00AQADMAAADDAAAANwAAANNAEAAzAAAAvwAAADwAAADTQBAAMwAAAMsAAABYAAAA00AQADMAAADHAAAAOAAAAHV1aWTTQBAAMwAAAM8AAABYAAAAZXh0ZW5zaW9uIHR5cGUgbmFtZSBzaG91bGQgYmUgcHJlc2VudAAAAF5REAAvAAAAvgAAABIAAABhc3NlcnRpb24gZmFpbGVkOiBsZW4gPiAwAAAAAkkQAIAAAABvAQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudAACSRAAgAAAAAIGAAANAAAA00AQADMAAAATAQAAFgAAANNAEAAzAAAADwEAABYAAABDOBAANQAAAPcBAAArAAAAUHJpc21hIG9iamVjdCB2YWx1ZUFuIG9yZGVyIGJ5IHJlbGF0aW9uIGFnZ3JlZ2F0aW9uIGhhcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBob3DCHRAALgAAAMIAAAAOAAAACgBBwPbGAAv9AWFzc2VydGlvbiBmYWlsZWQ6IGlkeCA8IENBUEFDSVRZAkkQAIAAAAC6AgAACQAAAAAAAAABAAAAAQAAANUCAADpNBAAMgAAACcBAABXAAAA6TQQADIAAAAoAQAAXQAAAIECAAAMAAAABAAAANYCAADpNBAAMgAAACkBAABbAAAA6TQQADIAAAAqAQAAXQAAAOk0EAAyAAAAKwEAABYAAAAAAAAAAQAAAAEAAADXAgAA6TQQADIAAAAzAQAAXwAAAHgCAAAYAAAABAAAAHkCAADpNBAAMgAAADcBAABtAAAA6TQQADIAAAA2AQAAWwAAAOk0EAAyAAAAOAEAABYAQcj4xgALiRABAAAA2AIAAOk0EAAyAAAALgEAAF0AAADpNBAAMgAAADABAAAWAAAA6TQQADIAAAAgAQAANwAAAOk0EAAyAAAAFAEAADMAAADpNBAAMgAAAAoBAAAzAAAA6TQQADIAAABCAQAAEgAAACFOEAA3AAAASQAAADIAAAAhThAANwAAAFEAAAAkAAAAayAQADYAAAAoAAAAWQAAAFJlbGF0aW9uRmlsdGVybmVzdGVkX2ZpbHRlclNpbmdsZVByb2plY3Rpb25Db21wb3VuZFByb2plY3Rpb25PYmplY3RNZW1iZXJrZXlzcGFuUmVsYXRpb25GaWVsZENvbXBvc2l0ZUZpZWxkVHlwZUlkZW50aWZpZXJGaWxlSWRDb252ZXJzaW9uRmFpbHVyZWZyb210b1NjYWxhckZpZWxkUGFyc2VEZWNpbWFsUGFyc2VJbnRQYXJzZUJpZ0ludFBhcnNlRXJyb3JPdXRPZlJhbmdlSW1wb3NzaWJsZU5vdEVub3VnaEludmFsaWRUb29TaG9ydFRvb0xvbmdCYWRGb3JtYXRfX05vbmV4aGF1c3RpdmVRdWVyeUFyZ3VtZW50c29yZGVyX2J5aWdub3JlX3NraXBpZ25vcmVfdGFrZXJlbGF0aW9uX2xvYWRfc3RyYXRlZ3lQYXJlbnRDb250YWluZXJlbnVtX3ZhcmlhbnRDb21wb3NpdGVUeXBlTnVtZXJpY1ZhbHVlU3RyaW5nVmFsdWVDb25zdGFudFZhbHVlRnVuY3Rpb25Bcmd1bWVudHNMaXN0ZW1wdHlfYXJndW1lbnRzUGFyc2VGbG9hdEVycm9yUGFyc2VCaWdJbnRFcnJvckV4dGVuc2lvblR5cGVJZEFyZ3VtZW50AAAA6yoQADAAAAA5AQAAKwAAAOsqEAAwAAAAOgEAACoAAABFbXB0eUFyZ3VtZW50SW52YWxpZERpZ2l0Q29tcG9zaXRlU2VsZWN0aW9uc2VsZWN0aW9uc09yZGVyQnlTY2FsYXJzb3J0X29yZGVybnVsbHNfb3JkZXJPcmRlckJ5U2NhbGFyQWdncmVnYXRpb25zb3J0X2FnZ3JlZ2F0aW9uT3JkZXJCeVRvTWFueUFnZ3JlZ2F0aW9uT3JkZXJCeVJlbGV2YW5jZUludGVybmFsRW51bUFsbE5lZ2F0aXZlT25lUGFyc2VCb29sRXJyb3JGaWVsZFNlbGVjdGlvblNwYW5zdGFydGVuZGZpbGVfaWRBc2NlbmRpbmdEZXNjZW5kaW5nUGFyc2VJbnRFcnJvckZpcnN0TGFzdEV2ZXJ5UmVsYXRlZFJlY29yZEF0TGVhc3RPbmVSZWxhdGVkUmVjb3JkTm9SZWxhdGVkUmVjb3JkVG9PbmVSZWxhdGVkUmVjb3JkRW51bUlkVmlydHVhbEpvaW5Qb3NPdmVyZmxvd05lZ092ZXJmbG93WmVyb05vdEFQb3dlck9mVHdvRXh0ZW5zaW9uUmVsYXRpb25TZWxlY3Rpb25yZXN1bHRfZmllbGRzUmVsYXRpb25Db3VudFNjYWxhckFnZ3JlZ2F0aW9uVG9NYW55QWdncmVnYXRpb25SZWxldmFuY2UBAAFBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsv/////////////////////////////////////////////////////////z7///8/NDU2Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf///////xobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Jhc2U2NCBlbmNvZGVkIGJ5dGVzUHJpc21hVmFsdWU6OkJ5dGVzETYQAFwAAAD6AgAAGgAAAGZld2VyIGVsZW1lbnRzIGluIGFycmF5AHTCEQAXAAAAAAAAAAgAAAAEAAAA2QIAAGZld2VyIGVsZW1lbnRzIGluIG1hcAAAAKTCEQAVAAAAVmVjIGlzIHNpemVkIGNvbnNlcnZhdGl2ZWx5AMTCEQAbAAAAy08QAGEAAAABAQAAGQAAAFByaXNtYVZhbHVlVHlwZQB9TRIABAAAAOMxEgAFAAAAbW9kZWxOYW1lYWN0aW9uYmF0Y2h0cmFuc2FjdGlvbmlzb2xhdGlvbkxldmVsc2VsZWN0aW9uZGF0YSBkaWQgbm90IG1hdGNoIGFueSB2YXJpYW50IG9mIHVudGFnZ2VkIGVudW0gU2VsZWN0aW9uU2V0VmFsdWVkYXRhIGRpZCBub3QgbWF0Y2ggYW55IHZhcmlhbnQgb2YgdW50YWdnZWQgZW51bSBKc29uQm9keQBVSBIABgAAAORMEgAHAAAA60wSAAQAAADvTBIAAwAAAPJMEgAEAAAA8EsSAAQAAAD2TBIABAAAAPpMEgAGAAAABE0SAAgAAAAMTRIABQAAAOxYEgAGAAAAEU0SAAUAAAAhTRIAAwAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgMTMAAAAwxBEAGQBB3IjHAAsGAQAAANoCAEHsiMcAC8UBAQAAAIoBAABzdHJ1Y3QgSnNvblNpbmdsZVF1ZXJ5IHdpdGggMyBlbGVtZW50cwAAdMQRACYAAABzdHJ1Y3QgSnNvbkJhdGNoUXVlcnkgd2l0aCAyIGVsZW1lbnRzAAAApMQRACUAAABzdHJ1Y3QgQmF0Y2hUcmFuc2FjdGlvbk9wdGlvbiB3aXRoIDEgZWxlbWVudNTEEQAsAAAAc3RydWN0IEZpZWxkUXVlcnkgd2l0aCAyIGVsZW1lbnRzAAAACMURACEAQbyKxwALBgEAAADbAgBBzIrHAAsmAQAAAHECAAB2YWx1ZSBpcyBtaXNzaW5nAAAAAAAAAAABAAAA3AIAQfyKxwALBgEAAADcAgBBjIvHAAsGAQAAAN0CAEGci8cACwYBAAAA3gIAQayLxwALBgEAAACJAQBBvIvHAAsGAQAAAN8CAEHMi8cACwYBAAAA4AIAQdyLxwALBgEAAADhAgBB7IvHAAsGAQAAAOICAEH8i8cACwYBAAAA4wIAQYyMxwALBgEAAADjAgBBnIzHAAsGAQAAAOMCAEGsjMcAC3kBAAAA4wIAAE1hcEFjY2Vzczo6bmV4dF92YWx1ZSBjYWxsZWQgYmVmb3JlIG5leHRfa2V5VkoQAGEAAABmCgAAHwAAAG1hcCB3aXRoIGEgc2luZ2xlIGtleQAAAHDGEQAVAAAAc3RyaW5nIG9yIG1hcAAAAJDGEQANAEGwjccACxYBAAAA5AIAAAAAAAAQAAAABAAAAOUCAEHQjccACyYBAAAAjAEAAFZKEABhAAAAtAYAAB8AAAAAAAAAEAAAAAQAAADmAgBBgI7HAAvGAgEAAADnAgAAdzEQAEYAAACmAAAAOAAAACR0eXBldmFsdWUAAHcxEABGAAAARQEAAEYAAAB3MRAARgAAAGUBAABOAAAAJGNvbXBvc2l0ZXM6IHRydWUgZG9lcyBub3Qgc3VwcG9ydCByZWN1cnNpdmUgY29tcG9zaXRlIHR5cGVzLgAAAAAAAAAEAAAABAAAAOgCAAAAAAAABAAAAAQAAADpAgAAaW5kZXggbm90IGZvdW5kADNGEABhAAAASwAAAAoAAABmaWVsZCBpZGVudGlmaWVyc3RydWN0IEpzb25TaW5nbGVRdWVyeXN0cnVjdCBKc29uQmF0Y2hRdWVyeXN0cnVjdCBCYXRjaFRyYW5zYWN0aW9uT3B0aW9uc3RydWN0IEZpZWxkUXVlcnkAAAC+AQAADAAAAAQAAADqAgAA6wIAAOwCAEHQkMcACw0BAAAAwgEAAGEgbWFwAEHvkMcACwEQAEH/kMcACwEUAEGPkccACwEZAEGekccACwJAHwBBrpHHAAsCiBMAQb6RxwALAmoYAEHNkccACwOAhB4AQd2RxwALA9ASEwBB7ZHHAAsDhNcXAEH9kccACwNlzR0AQYySxwALBCBfoBIAQZySxwALBOh2SBcAQaySxwALBKKUGh0AQbuSxwALBUDlnDASAEHLkscACwWQHsS8FgBB25LHAAsFNCb1axwAQeqSxwALBoDgN3nDEQBB+pLHAAsGoNiFVzQWAEGKk8cACwbITmdtwRsAQZqTxwALBj2RYORYEQBBqZPHAAsHQIy1eB2vFQBBuZPHAAsHUO/i1uQaGwBByZPHAAv4JZLVTQbP8BAAAAAAAAAAAID2SuHHAi0VAAAAAAAAAAAgtJ3ZeUN4GgAAAAAAAAAAlJACKCwqixAAAAAAAAAAALk0AzK39K0UAAAAAAAAAEDnAYT+5HHZGQAAAAAAAACIMIESHy/nJxAAAAAAAAAAqnwh1+b64DEUAAAAAAAAgNTb6YygOVk+GQAAAAAAAKDJUiSwCIjvjR8AAAAAAAAEvrMWbgW1tbgTAAAAAAAAha1gnMlGIuOmGAAAAAAAQObYeAN82Oqb0B4AAAAAAOiPhyuCTcdyYUITAAAAAADic2m24iB5z/kSGAAAAACA2tADZBtpV0O4Fx4AAAAAkIhigh6xoRYq084SAAAAALQq+yJmHUqc9IeCFwAAAABh9bmrv6Rcw/EpYx0AAACgXDlUy/fmGRo3+l0SAAAAyLNHKb61YKDgxHj1FgAAALqgmbMt43jIGPbWshwAAEB0BECQ/I1Lfc9Zxu8RAABQkQVQtHtxnlxD8LdrFgAApPUGZKHaDcYzVOylBhwAgIZZhN6kqMhboLSzJ4QRACDobyUWztK6csihoDHlFQAo4suum4GHaY86ygh+XhsAWW0/TQGx9KGZZH7FDhsRQK9Ij6BB3XEKwP3ddtJhFRDbGrMIklQODTB9lRRHuhrqyPBvRdv0KAg+bt1sbLQQJPvsyxYSMjOKzckUiIfhFO056H6clv6/7ED8GWrpGRo0JFHPIR7/95OoPVDiMVAQQW0lQ6rl/vW4Ek3kWj5kFJLI7tMUn34zZ1dgnfFNfRm2euoI2kZeAEFtuARuodwfsoySRUjsOqBIRPPC5OTpE94v91Zap0nIWhWw8x1e5BjW+7TsMBFcerEanHCldR0fZR3xk76KeeyukGFmh2lyE79k7Thu7Zen2vT5P+kDTxjvvSjHyeh9URFy+I/jxGIetXZ5HH6x7tJKR/s5Drv9EmLUl6PdXaqHHRl6yNEpvRd7yX0MVfWU6WSfmDpGdKwd7Z3OJ1UZ/RGfY5/kq8iLEmhFwnGqX3zWhjzH3da6LhfC1jIOlXcbjKgLOZWMafocOcbfKL0qkVdJp0Pd94EcEsi3F3NsdXWtG5GU1HWioxa6pd2Px9LSmGK1uUkTi0wclIfqubzDg59dERQO7NavEXkpZeirtGQHtRWZEafMGxbXc37i1uE9SSJb/9XQv6IbZgiPTSatxm31mL+F4rdFEYDK8uBvWDjJMn8vJ9sllxUgfS/Zi26Ge/9e+/BR7/waNK69ZxcFNK1fG502kxXeEMEZrUFdBoGYN2JEBPiaFRUyYBiS9EehfsV6VQW2AVsaHzxP2/jMJG+7bFXDEeF4ECcLIxI3AO5K6scqNFYZlxTwzavWRICp3eR5NcGr37wZtmArBivwiQovbMFYywsWEOQ4tsc1bCzNOsfxLr6OGxQdx6M5Q4d3gAk5rrptciIZ5LgMCBRpleBLx1kpCQ9rH47zB4WsYV1sjxzYuWXpohNy8EmmF7p0R7MjTii/o4sYj2zcj53oURmgrGHyroyuHtnD6XliMdMP5At9V+0XLRPPNGQYu/3HE91OXK3oXfgXA0J93in9uViUYrPYYnX2HUJJDis6PnS3nB1wx10JuhKS29G1yE1R5QMlTDm1i2gXd1JG4zqhpd5ELp+Hoq5CHYrzC87EhCcL63zDlCWtSRJt8I4B9mXxzSVc9PluGNwWiKzygXO/bUEvc3G4ih6THNWrNzGol+SI/edGsxbz2xHKloU9kr0d6/yhGGDc71IWffzmzPYs5SV8yh5406vnG85dEEAaPK+XjT4TK2TLcBFCdRTQIAub/TAO2DU9/swVkpIZBOnNAT29EU6DzD1AG5v7j6KxICFGFssQ0p8mCBGC+jML3mip19v9lMZHMEoVI/kAjhXDk81SPTq4WbycGrabwHjtWXzAU2YkE7j1oRCjwvDWaHCbsOh/7Rcmc8oUTPOsDINMwtzi3+id7w/9GQ8Y7OfRb/nJ7YuxwvUpPhATHudhxst3POnuXTNztE0UmOVg+re+lYujajUAkCFhGf4e+fhlLntuTMVCAPRpuR9fs5u7//wMxU+7KYA44tMTN6CCqj88ULYjKjSgxtrIGERII5VPS+SjrDRBSHgR+x4rDTa9Ea9u5uvAKC3r6lwTdZCDLNZaCuAm8XL4pSU0GJN0pLeL8QyYcK2Pdg8vQR7cyMZS9xYIX2bMGappvegSE3t4J7UcyvZ/P6AUxOyiF9eZVnHio3z0X0/IGfWnix0mINaGbebN+JsxHTD5SHcSMKiL6AhgAfcCfiR8NxsVFzySriILuMG0g50tWwVi2hxlG631BhP5UHKC/FhDfQgSP2IYs8hXN+UOozsvlJyKFs963t+6LYWe0osKO7lDLRzBDOvLlDwTo2OX5sRTSpwR8c/l/rkL2Is8PSC26FwDFu5Dn36oDs6ui0yo4yI0hBt1iiNPKclATdcvSc6VoDIREm3sonP7kCDNe9tBu0h/FVaIp4tQOrVowFpSEuoa3xo2tUhXckRxQbh4c0vScMsQg+Ia7Y6VzVHmVlDeBk3+FCSbYajy+kDmn2zklUjgPRr3AD2p15zo7+PDrl0trGYQNEGMkw3E4uvcdBq1OFeAFIFRb/gQddsmFBJh4gZtoBnxkkWbKilJmEyrfE0kRAQQrfcWQnVzW74f1ttgLVUFFJi1nJJSUPKtp8sSuXiqBhn/4kM3Z+RumZF+V+cWVUgf322KgsBO5f8ar5ZQLjWNE1cJLaNwot6/4Vq85HmCcBitS/jLDEvWL5px610Yo4weTC97/+fu5V0AJ7M67+UXEx/7Wf+hal91wPBfCWvf3RfneTB/SkW3kvDst8tFV9UdMEx+j06LslsW9FKfi1alEjzfXTMiLp/yG7Enhy6sThcLVzXAqvlG72Kd8Sg6VyIdZ1YhuApcjNVdApdZhHY1EgGsKWYNc+9K9cL8byXUwhYBF7S/0E+rnbLz+8suiXMcYI7Qd+IRi6JPeH0/vTXIEfmxxBVb1i2LY9ZcjyxDOhZ33jXb8Uv5bfwLNLP308gbCqsBKXfPu8R9hwDQeoRdEc0VQvNUw+o1XakAhJnltBVAmxIwKnRlg7TTAOX/HiIbCKELXppoH9JQhCDvX1P1EEqJjvXAQqcGZaXo6jeoMhWdK/IycRNRSL7OouVFUn8aQlvXvyasMu02wYWva5OPEBIyzW8wV3+ohDFnm0Z4sxSXfsCL/Cyf0uX9QEJYVuAZHk9Y1x18o6Ovnmgp9zUsEOZiLk0lW4yMW8bC83RDNxSf+3mg7nGvb/J3szBSFEUZh3qYSGpOmwvvVeC8ZlmWH5RMX20CEUFntTUMNuD3vRO6H7cIQ1URwSJDj0PYda0YqOfkypOqVXHrE3NUTtPYHskQz16citUmc+zH9BCERxP71IJ2Q+2K8I/n+TEVZRkYOoojVJSorexzYXh+Wr4fHmQ2lrRciexz6DwLj/jW0xL9w7vhs6vnkCIMzrK2zIgX/bQq2qCWITUrj4Ff5P9qHR6xWogk/jQBe/mwu+7fYhJlXXGqrT2Cwdk3nWrql/sWv7QNFRnN4jHQhUQF5X26HPeQKK0vwC0fotNKI6+O9BE1tXKYOzD5poqIHexasnEWgmKPfkp8t1Ct6iSn8R4OHJGdGY+urXJSrBJ3CFfTiBH2BOAyGlkPZ1fXlMosCOsVMwaYv2Av00AtDTr9N8plG+ADv3ec/YNIPEhE/mKeHxHYxK6VA/2kWkta1b37hWcVDnYae0Q8TjHesEqtemfBGsmJ8Myq5dDeiq5OrKzguBA7rCyAFR+Fli1aYtfXGOcUStc34NpmJvy48DrNDd8gGo7mIsxIAJidc9ZEoGiLVBAyoCv/WgD+hBAMVshCrmkUPoj2vnGAPaYUj2t60xmEGU4qtC6O4MzP2XIGWUgg5R9wmjDdWAzgIcgHpDctNO8TDcF8FG8PWCq6CY2FOAHrGFDxm9lKE+60KEzwpobBJR/SdgHIDswUcZkvVij0mHcThtQBehL/Wc1/u2syMX9VGKhJghjXfrDAX6oGf/3eah4JblFvRk9u2HsqZG9eywITi8klCxjjic4aNT0LNn7DF+477w3eWyyCYYIMjsNdtB11hbXIarlb8XzRxziaupAS0ubiesWnsi3cxfnGQOk0F4agm9m2UR85Uze4+JAjAh1URAFIEpOzA5Qic5s6ViESaZUB2tZ3oAQ5609CyaupFsP6gZDMlchFB+bjkrsWVBy6PFHan12di8Rvzjs1jrQR6Ivl0Ae1hK61C8KKwrEhFuPuHsVJ4iUao45yLTMeqhtNVTMbbq1X8CWZZ/zfUkoRoSoAosmYbWxvf4H7l+ecFUk1gAr8/ohHS99h+n0hBBtOIZCGXZ+1DI8rfbzulOIQoSk06DQH489ydpxrKjobFQo0QSICyduDD5SDBrUIYhqGwGhVoV1psok8EiRxRX0Qp/DCqgm1Ax+syxZtzZacFNGscxVMosQml35cyIC8wxkDTGiNb+U6eB7POX3QVRoQA1/CcMueSRbmQoicROsgFMT28kx+Btybn1OqwxUmKRl2tC/gHQjTgofolDSbb3MfydAdrBLlw7FUEd0AwSWoE/xEJVdX3jTeqVUUQTEvkhg7lu4s7RXCVRRrWZH9urYe5R0VPLRNmbXs4td63jQyE15lGkshof/ip9uNGRbC/he2/uCdaYm/25FS8Z+bcv4dMZ+sAuK1Vymb0/ZDoQe/Ev7GV4Nao63zgYj0lInJbhe9uC0kMQyZcKKqMfrre0oddpOctp6nX4alCl98c41OElS4Q2SGkffnTs12W9Aw4hZpplT953X1oaKAVHIEvZocAehU/rBpOaVl0HTHIrbgEQIi6j0dxIcOfwRSeavjWBaCqmSNJLUp0p6FpleWHO8bkepe2DYRWkODE8j23XF1ETaldo6ElTAUZBh6dFXO0hWDThSy5bo8GX2emNHqgUcbErFMj8/0xS8OY//CMrEMEVbdH3MDcre70Tu/c3/dTxWs1OdPhE6lKsYKr1Df1KMa6+TwsRJRp9q7Zm2SC2WmECYebV5XJVHRasAId07+zxSwZQg2rW6lhYXwyhTi/QMajj/FQSxlh3NT1v5MrX5CEHGPNlJ3PmlQ6Is+oFgeUxROM8QmFY6DZOIuTsju5WcZIkB1cJpxpP2aumF6at/BHxVISYYAx4beoBR9jKIr2RMamtunwHgoFslZnC+Lds8YoYDS0fCWsls7cIP7LVQDH2SQI4NWnk8ZJSYyvZwUYhN+dOwj7IWjX66vfuzDmToYnZHnLGdnjPeZW57nNEBJHgK7EHygwLc6QPnCECHI7RLD6RSbyLBlSZC381QpOqkXMyTawfocv1t0pTCqs4iTHaBWKLkccle5aGdeSnA1fBJIbHLno06t50IB9lzMQhsXWgdP4UyimKGTgTN0fxPiHJhk0QxwZf9E/DCgqC9MDRK+vQUQzD4/Vjs9yJI7n5AWLi0HFH8OzyuKTHp3Csc0HD18hGwPaWFb1m+simb8oBFMm6VHU8M58suLVy2AOwkWHwKPGSg0yO6+bq04YIqLG1Nh+Q+ZID1VN2VsI3w2NxGoufdTv2iMKoV+RywbBIUVEqj1KO+CL3UmXln3IUXmGguJmXnVsT0J2NqXOjXrzxBO6//XSh6NC47RPYkC5gMVIub/jd1lcI7xRY0rg99EGtXvv3iqPwb5tks4+7ELaxDK6+8Wlc9Ht6ReBnqezoUUvearXHrDGeVN9ocYRkKnGTZw63ksGjCv8PlUz2uJCBBDTGaYtyD82mw4KsPGqwoUVN9/fuUouxGIxvRzuFYNGSrXH94e8ykWKvjxkGasUB965tNK8zfaTRo7lxrAa5ITGeCIHfDFUOHgCT0hsAZ3GB8Y6yRs96QZWUyMKVzIlB4T7xKXoxoHsLev95k5/RwT2KrXfEzhCJylm3UAiDzkF46VDZyfGQsDjwKTAKpL3R15fYjBA/DmYZnhW0BKT6oS15zqsQSsYLr/2XLQHONUFw1EZd4F1/iof5CPBOQbKh2ISv+qY4abyU+62YJuUToSKh2/lfxnArzjKJAjyuXIFnTkLrv7AQOrHDN0rDwfexzJTv1UPeHh6vGfyOuF88wRe6I8qoxZmmXux7pmZzBAFhrLy9Tv7wD/6XlpQIE80BvwXv/k9ZVgPzLsQcjQJWIRrDY/XnO7OM8+Z1L6RK+6FVcEzzVQ6gaDDgHnOBZbKRu2YqEhclLkEalgkOPt2PkQZLsJqg5nXVbTeHRcKU84FT0qjFTSwPQrCJeRs/Nihhpmmtd0g/h4G2X+OlDY/ZMQAIENUqQ2V2L+vUlkTv24FEDhkGZNBO36fS1c/aE85xnIjBpgsCLUvG6cWT7lhTAQ+i8heFwrCWyKA/CNXqc8FPh7KZYzdgsHbQRsMTbRSxn22rN7wFPOSIgFx72DxZ4f2mhQTVj0gC11Y5xWcjvDExCDpGBuMeF4UnxD7E4KtBgBAEHPuccAC5MrIJqZmZmZmZmZmZmZmZmZmRkVrkfhehSuR+F6FK5H4XoU3iQGgZVDi2zn+6nx0k1iEJbUCWgibHh6pSxDHOviNhqrQ26GG/D5YYTwaOOItfgUIjZYOEnzx7Q2je21oPfGEGojjcAOUqaHV0ivvJry1xqIT9dmpUG4n985jDDijnkVB6YSH1EBLeaylNYm6AsuEaQJUcuBaK7Wt7q919nffBvqOqeiNO3x3l+VZHnhf/0Vu8iF6PbwJ38ZEeotgZmXEfgN1kC+tAxlwoF2SWjCJRyTcd4zmJBw6gGbK6GGm4QWQ8F+KeCm8yGbFVbnnq8DEjc1MQ/N14VpK7yJ2Jey0hz5kFo/1983IYmW1EZG9Q4X+nNIzEXmX+egq0PS0V1yEl2GDXo8PWalNKzStk/Jgx2xnteUY5ceUV0jQpIMoZwXwUt53YLfftp9T5sOCrTjEmisW2LRmGQqluVeFxAgOR5T8OKBp+C27kRRshJAsy0YqSZPzlJNklhqp46omcJXE0GkfrC3e1Anqth92vXQ8h40UGXAX8mmUrsTy67EQMIYkKbqmUzU6w7JDzzyNprOE4AKEcOtU3mxQRlgUL72sB9nCHQCi9wtwWdHs6b+XloZUqApNW+wJDSGn8Lr/ktIFNsZ7pDyWR2Qnn9oiWXWORBfKbC0HcP7TJcyp6jVI/YZsrpZXbE1lj2sWx+6d+nEFChi4X0nXquXVklM+5KHnRANnWjJ2Mmr8vAOevi3pZUaPhe6OnqhvFtaci4tk4REFctF+y7IGsqvro6LikKdAxFFCZKxpvfcskrkeKqd+zgbBKFBweuSffVugy1VsS/HFQO0Z2eJdWTEWJxXdycmbBHS7KXY24htbfTGJfILPeAb2yPrRhYHvorDOB4oo/1MFkm2VdIRbP5unGBLU08x1xEOiu+2TxOXsWBnRYUYgoscpaG/+HIPrCcauWo3rQHWFh5OmWDCcla54WBVLCTORBKVFsLNAx5X9TXOuxNt4zodq6sBCwMYrCor2C92ik9iF1aJNG8C4Ly7VRPzxG4MtRKJqO2x0MzHku8euNRKeu4dB7pXjkAK09vyS5MQb/vxFwbI33EA1ah89W8P2lj8JxPWDGbpM7un+rtMsimOYKYeEdeEhyn8UpXJo45UCxqFGA6s0NK6yaiqB4PYdm+unRPjrBoeXtza3aXRwFeysGIfT4pIS0uwSH5RQZqsjsAbGdmh09XVWW3L2s3hVqUzFhR7gdx3EXtXPOLX56vqwhEQKs9gWYJe8sY2JqasqgS2GbulgEdoGPVrxVHrVlWdkRSWhAAG7XkqI9GnIt/dfXQQVgc0o+GP3dGBDNExlvxTGkVs9ugac+SnND2n9ET9DxWeVvhT4igdU12XUl1ql9kQYleNuQPbYesu8lCVEL/1GuhFpMfPSE68WFva3aZlkRUga4Ns2dNxY63i4RcfHkERzRGfrSiGHJ9IBAPzZGObGwvbGL5Ta7DlBp01jx3pFRaiFUfLD4nz6mtKkXLkIKsRN7xxeEzbuERGqhuEbQFFHF9jwcbWFccDBVVJA76anRYZ6c1rRd44Njd3B2n+rhcSwUEWRqJjwVZYWHIOl7HyHM5nq9GBHAHfeRP1cRKOKBel7FVBzhY0f2HckMEO2IYSbkdWNX0kIGUCx+do5IykHSU5ePcwHYDqAWy5IB3XtheE+iz587CZuzQjYU0XrPgSOfdHKFNOXF9UOGgV8qxaHi4s07l1C31/Q2BTRFuKSBhYI9zH99Uwmc8ZqTZ8O20TJtL5coyJtI6yjw7x+SsVH7hBLo+jBypyKKYL9Me83Rj6mr6lTzm7wYYe1lwGl+QT9vcwCRnCXpzXMPD61iTUH/hfWgcUaOVJeY0mL9+Ddhlg5uEFECBRbscKUr/lz14UGoWB0QyA2vEFbw6ZhNlLEPXUaIIUAMRP1uTj9KD1Ehord+0Bqplp2RG3HPez99sUvMWKAYgU7q10krDFXPmvECwJ3mim7XxJVOqAb5Qosxok1ORTuFfKOhBVmr92IFwVg3YdQ2B5O2Jzqq7/XoAWEZ69yNFm9SuduBCxMsszVxt/ZG1BUsS8fWAN9I6iXN8VzLaKZ9tp/crmPcPYTn1/Ed+Kd3LFDy+r1y8FjuQu/xuA1ZJbBHPyiKyMaj4dv2UWZkRCSdAo9dNWPVWYSv/qEaOgA0JNQYi5V5W78xAyqxzp5gJo1805YXl3/MJAW+8WVFICIHlxYect+clozRVZEoZQnZmOtWilfFt2dBVWWx3SpkrhPpEgUf0VxfbdRHwXDh+iGv9ATafKRDeSsdDJEkrLafdkzq4LEW5YUE+0Dx47PO7FUNiLPKfxeXM/kAwYycnxN9p5CcqF9MfCMkA9E9tC6b/2wqipb7oMnrdmyB7jm7rMK89TISaVcH4sUqAYgkmVcIlyqRq43SZl8HSzE511iBoPhHX3jC8+COeHhR8XXqB7cjaRXwommAbsnzcZ3+QZllv4QBnVhEYF8H8sFEzqR6uvxgDhEDcF0YyZIxBH3T9FTKRnzuck1bRHj9IZBrHMndbpUtgft93Dn3KoFDgnCktF7tt5GSx+aRnChhBZ2KkRouNfKY9GMA+PNnEaehO7p4Ecs7qla/PY2F4nFS+pleya4yhiUYmPreBL7BAXde/g9zgOnegOTK+arBMbeSpZGpMt2LBTctYl4lapFS5VR0gPvnmN3MHet4FFVBF8uwvafpaPFZScl4zPCLobly/WFP8Rpnd2sN/Wcm0uFnmM3kP/p1H5kfOyePW9vhGOrf3S/j8cwhzst1oiY2Qc2IpkQjIzsAEX8F8VtbW2Fkaig5uOwlkBrFnm3ZDEKxKjAzlfFwT2zqzCo/wa1BIdg5wtTKxpXnK9mxzKSENCF5zjitaJVBj1/eIWCAdpmxLGBau9D1SN7i9r8QzYdMUdBWsi/nJ2176MIsFwRirRFwS8TssoxRL/1k5njWu7DROg+X14dDtRyyR+2HsSX3weTWH++SnJDQm3Ma38QX9jGAqBy5Qh1NegxSckyjTMghN3znhUz7m/Z28MbUMhrTcf+XEt3aWUzB9ZcIrPTVf5GMf0vX1R3dZ/evOhPz6s+hML7i/J6C6+/8O4nDL9efcf1iTzoCC/MWY2+hbC/ceSGXgdXBoazCe4XvurActsdRRg5Hx7rglTkxjJvGei8F0QmaCUxbBC6x70dJQ/aucvGuHmdgQnAonlXCrdMogf8xTn6yudhc6gt7DusCigf8IQ2N/fYW9KAVm0Sk50M8zQGq1M5ucl1c3gKaI+kI/WcxXx1lGGUXdxTe60y9lyeCkR6Ffp1ui+6HuwVKyPhI11GyATId9TMrr8Wd2JDGqk9xWAQucYQyjIY65KbnDu6ZIRZmrYJzgNDQYXEUoaF0MeHOshrewspD1rEnRuexKcfhZWTle98Bz+iNtcWPxB4/4RI0olYrSUlkFfYY1gNgXLHOnUHegpqqtnf+c9TfjQCBeH3RcguyFWuTK5ZNf5c20SpZWMZitpI8LqwTrywux7HR3e1h6JuoLOuzRiWwJXlhcYGN9LB2I1pfz2tOIBrN4SWfNkediciDuU8Yc3NhMxHuH1g8dGSm383FoGxpFCJxgaKwMGn25XMBevntGnm1ITkN7RPMt9JRolGDEcppLqHkDlpzA8/h1It3la44SouxgAUYbAyTFL08XHroKdU8kTzbSjzULpEVIJphfRyIWoH6SQHD4CIdt0B7jfQDqeUxlQDUrLAbQV9wVgGWf75EIUpwoICZsp3vg3s3pS/IM1ENfdDKiRQjCOWbgqt5M57xkTSwogDgKNPuH57vhCYb8UDzwIgD6bPWXnx1j6mxqZEOQsDQBk+MhupQyOkPmQjhrqI6SZ6fnTi7ejcUBh2j4VuxxQ4bqUqTz5gvSZGhX/ECths5vEunXHjtEgw127MRuJGikWapXE0gsO52ixYsEVoXu6EYh30NtvPh+HJ4JnEZuSXRxAv4As5mOYPj/Q2BtJdeRJM8wzvVG2RmX/DEcW1F1Qbo/Wj8qnXgVRzHDSEVPJs+NLVxlE2f1uTq3ngxypOvaCCXlHA+GXJaWK7M8WuvvEaNRgbM+AeYTqbvA/Eir5Bw6HNHrlmvXTEEsaMx0ilDkLbJAuUeIqQ9oIFVwXtanH1bymi9qBVc/h0xCwEocP2SIucd+QnFXlAlOB5h1sDBRPi1pM2hbeHc+omusXiqOppaJ7o654frGlIOIiE6kFqaJqX9J9J5e1opo2nh5U0SCCiH/blx+s904Vkn4Yd6eAzgZmfHlMI8bY3XSYE/ELAeQKcC2PrWujJ5ZUWh9a1gBQolkkDL7vtR94EBUZFUWa2YEUHXD+8vey+dkQFHdqexSbQxfA/lvGKC57DRDyQ5LtxAXyzMosCg59K68ZwpwOvtA3WwpvvaFxyiKMFM7jPstz+UgIjJe0J9UbcBCwn2R47FsO2qwlVAxV+UwawH9QYPCvPnu9t6nWEGEKFTNmQIDzv8uVlyzu3nMa1RBScM1mUmas71hHsGS5kO4a21mkuA6FIyZHbPO2+qaLFUmutpPY0IIebCMpX5WFPBF1sIof9Bqe/aw4qP7uCJQb91nVsimvsZe9k4aYJQcQFix7d/W6JY6sl9yeEx5sphETxVgiKwl9er8t/rjJeT0cdmqtTu+g/WHMV8tgoZSXFsXuvQtZGv7nCRMJ503dEhI6sfxFW11jptyEDtiv++ocyI0wa69KHIWw0D4T82IiF9TXJrzybuPQJtrLdcLogRKGjKTG6heftNcpRomdp5wda3BQBe/fGCpG7gShF4awF4nz2Z0ls+BUa4udTXme8xJ0UvZib+vNh3hFL3wol1IeXahegr8iC9PGar/JhhJCGOS5S2jMGzwPn4j/OtIOaBNtKXlAeixgGJjamJGD5AwfJCGUM8hWs0YT4hMONh3XGLZNQymgeI843LTcpJFK3xOKr2uoZid/WmAhYaGCqssfor/vueuFMhVNtE20m7tvGU6ZjGGJ0Y6qPZCk9uJiWRQM4dYaoafY7srZtitPgkcQRZskXptyJ34R9orfsQMMGgRJHRhJ9YX+Dfg7GVtp1hTQoEoT1F2ey6T5LxR8h6sQTQERUlPJY986XOa5+QusGnFn2nQPoRwZL7Ae+/pvVhXBUkgq2YCwrSXASy8v8xERNFENqo405xUJzRKyfutPG8QNce4+XR+rbQoPKDKJ2RWdpI2LZRcZvFcIDCAo1HoRlDp8Ejzy9CxZDeDM2bn3G0OVltv89MPw4D2zcOHHXxYDERIWl102WhrL9SaBOeYRBOgc8CT8VpCQ3iILNY+jHNDs44wdMN/ZpkuCol0/6RbaI4M9sVl/4euizk6xMlQSXDk4L7XCy2h50X3kToRTHeMtYL9dNdZTlKdkUHIDdhcci+ZlsSp4qXbstqaOz8QS+kTXb7WqJg/xE4vXfbIHHmJq378qIlI/J0NvrGQoBhhOiH+ZiE7bZR+c8olQIDgTSg3MKHRKxW9lk+oPtDPAHjukCYf2oWpZhA8ic/bCmRiWtgds+OfurTbZtPWRNa4TVlcM4PM/fkkk9boigyJ9H0Ws1kz2/2TU6ZCV6GjoMBnRiXg9+P+DQ+5zRO1TICcUdKGTl8bMnM/xjwPxD00fEFICuSWkR2F/HLMF6H+uyxkPNce36dJNzBZc0ez/8aIU2ZDSXyEPCz0SsNojM1uCEMHnUJloS6thULMqBoUrahpnuUAUuqIiTkBcVWtqvCEVU5QA3ZToTgvNSUS87snnEFHtAMiH2hcSSKnTxkp2DBvavQCgbEhG22yH3GvVkaMVr2TNTL0GBUmKn+Pv3adPEbE64nrICgioQ/845i+mshv0Luj7OaI5U2n/kx7zhCgWXfLsL/u0x3WH/w+y9QO6ES7qR+aRIdkiP/9/tiLTXBzyVAaFQYF6tWX//5HoqLAW9UM4NwEBYsS3MjPbhu0mEu6f8/EBaDY6WYTrkaQVCx2LGfYnm7le++BpvHRQETwX1npehuL6fi/nh2NdQHSWElaR/dbQ95flcdk4Ys2GvR2r2sp4DZN5hMF6Leg90soXVhVvLXFCYdCayIqGMagIEyIiGK9OamhNkdqqPU9AdB7otHnyPohTpNquiGQ/AF0Yh11hKP9s3OmuWG1QzJl9E6SVaA1lrmCp5I1IGnpcLx+DRO09t76zuoNxoK5hsPIYNp2KMSwy9i42wea+51n1E/Bhd4ITHb3kiZvXlz/27h9aTiw1qX3Kg6Gv398y+IsZFaVW9yD+oZzn8rJMwvlvFKodEvmzMRtKuSiPcJuUWRDdlbbB7LVeQ/UN5YDF7SgaSt5eAVde5TXEpB1nBIvtFNWxGAGsfrfEaR1+UtAIvhAitlqbeZcloQ8vMLezp8kagV4VSWGst03ZWPP4wh9uFZtLRAeBI8bXreD1kzXmJBErrNM+mwU9WUk0VoYiPW4bvIncyxWe/eBtwxEFgsrxFWOh428RGP6zJGlBN5s7jhHRm9J/tVljhgd1NSXFxRYcDuMOM5EU6dHSkPdQN554FgscP4/adrp0dQ3GQCwY+hF4xjHlkCT37btIo2fgWcMcLQVbt0AdLIvJ07UfTa4CFyQEfF/NfVZv1A8r5nCLaBIGbcaYSMnwfu2yET1OEnQdn72e4AahwJhXwqf9pA6QF+bKS03SgABHeZvsylCl2RKiRHlIHc4A2I7FrUSBCCkegtAtbRfYMxM/0VedmtMgGM6mJCR5RvaoZaesShV2TRN9pDqgjj29dG+leneIVuIeZFCV5j4xZF2Mt/vFBhK1GLemquvLjbZKcCyW0WsOxBNXpKoSExYkERpH8OgSF6Af3+nuDtxEg9oUbPNTQt9MGYAhv9h8nQLiQyMpQ2h/PRQzgTJ6/X1oTjYcVM+5MjEQuM5QkJXJQEq9xrlLKVHoGcYLp6Z31DMIMdLHb4fauRRrCewexnYpoI0O07/SrpQQ39usZKNXQgBJF7j/HX6HGhnjI+q13wHNoBJgmbExORWutRyIkUzOcE115q0njvoQ4lWUprWt4xqvu3BJDH0qG+h3Q4XEV+l78mKNBz2XuxWH+TUEanmHyY61CgZk32IRccK8BhCPpXXkiHfWbGXRGyc1ymumpbf36dOSq/AdQRYfxKG8Hh7GX+4PD1aNsc0RZdMCYWRjo/8Ws7GJSE98HFHcm01QHOky3yiO1AbZyRYOfUlxc+Mgj7Ig2HYFFDsSfC4PgoUFm37qzVnxO1MrHcq+pQGeN6/L7tdH9C/cVRehmIQ0S/lYCb+sbMOMFqsSMC4wAO0CAAAYAAAABAAAAO4CAADtAgAAGAAAAAQAAADvAgAA8AIAABgAAAAEAAAA8QIAAPICAABoAAAABAAAAPMCAEHs5McAC+YBAQAAAPQCAAD1AgAAMAAAAAQAAAD2AgAA9wIAABgAAAAEAAAA+AIAAPkCAAAMAAAABAAAAPoCAAD5AgAADAAAAAQAAAD7AgAA9wIAABgAAAAEAAAA/AIAAPcCAAAYAAAABAAAAP0CAAD+AgAAFAAAAAQAAAD/AgAAAAMAABAAAAAEAAAAAQMAAPcCAAAYAAAABAAAAAIDAAADAwAAFAAAAAQAAAAEAwAABQMAABAAAAAEAAAABgMAAAcDAAB8AAAABAAAAAgDAAAJAwAAJAAAAAQAAAAKAwAACwMAABgAAAAEAAAADAMAQdzmxwALJgEAAAANAwAADgMAAAwAAAAEAAAADwMAABADAAAcAAAABAAAABEDAEGM58cAC8YDAQAAABIDAADwAgAAGAAAAAQAAAATAwAA8AIAABgAAAAEAAAAFAMAABUDAABwAAAABAAAABYDAAAXAwAAGAAAAAQAAAAYAwAAGQMAABAAAAAEAAAAGgMAAPACAAAYAAAABAAAABsDAAAcAwAADAAAAAQAAAAdAwAAHgMAAHwAAAAEAAAAHwMAAPcCAAAYAAAABAAAACADAAAhAwAAHAAAAAQAAAAiAwAA9wIAABgAAAAEAAAAIwMAAPcCAAAYAAAABAAAACQDAAAhAwAAHAAAAAQAAAAlAwAA9wIAABgAAAAEAAAAJgMAAPcCAAAYAAAABAAAACcDAAD3AgAAGAAAAAQAAAAoAwAAHAMAAAwAAAAEAAAAKQMAACoDAABkAAAABAAAACsDAAAcAwAADAAAAAQAAAAsAwAALQMAAHQAAAAEAAAALgMAAC8DAAAUAAAABAAAADADAAAvAwAAFAAAAAQAAAAwAwAALwMAABQAAAAEAAAAMQMAAC8DAAAUAAAABAAAADIDAAAzAwAAEAAAAAQAAAA0AwAAAAAAAAQAAAAEAAAANQMAAAAAAAAEAAAABAAAADYDAAAAAwAAEAAAAAQAAAA3AwBB3OrHAAviAQEAAAA4AwAAAAMAABAAAAAEAAAANwMAAAADAAAQAAAABAAAADkDAAAZAwAAEAAAAAQAAAA6AwAAGQMAABAAAAAEAAAAOwMAABkDAAAQAAAABAAAADwDAABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseWNhcGFjaXR5IG92ZXJmbG93AAAAlVIQAHEAAADsDwAADQAAABkDAAAQAAAABAAAAD0DAAAZAwAAEAAAAAQAAAA9AwAAGQMAABAAAAAEAAAAPgMAQcjsxwALJgEAAAA/AwAAGQMAABAAAAAEAAAAQAMAABkDAAAQAAAABAAAAD0DAEH47McAC8YBAQAAAEEDAAAZAwAAEAAAAAQAAAA+AwAAGQMAABAAAAAEAAAAQgMAABkDAAAQAAAABAAAAD4DAAAZAwAAEAAAAAQAAABDAwAAGQMAABAAAAAEAAAARAMAABkDAAAQAAAABAAAAEUDAAAZAwAAEAAAAAQAAABGAwAAGQMAABAAAAAEAAAARQMAABkDAAAQAAAABAAAAEcDAAAZAwAAEAAAAAQAAABIAwAAGQMAABAAAAAEAAAASAMAAPkCAAAMAAAABAAAAEkDAEHI7scACwYBAAAASgMAQdjuxwALBgEAAABLAwBB6O7HAAv6BgEAAABMAwAATQMAABwAAAAEAAAATgMAAERLEABxAAAA4gAAADEAAABESxAAcQAAAOIAAAAUAAAAX2FsbDInEABFAAAAjAAAADkAAAAyJxAARQAAAJQAAAAoAAAATwMAAAQAAAAEAAAAUAMAAE8DAAAEAAAABAAAAFADAABjdXJzb3JvcHRpb25zcGlwZWxpbmVxdWVyeXBhcmFtZXRlcnNjb21tYW5kY291bnRkYXRhc2tpcER1cGxpY2F0ZXNfcmVmX2NvbnRhaW5lcrsrEABIAAAAGQEAAC0AAAC7KxAASAAAABsBAAAsAAAAaGFzaGFzRXZlcnloYXNTb21laXNFbXB0eWlzaXNOb3RldmVyeXNvbWVub25lZXF1YWxzQU5ET1JOT1R3aGVyZSBvYmplY3RzIGNhbm5vdCBiZSBlbXB0eTInEABFAAAAwgAAAAkAAAB3aGVyZWNyZWF0ZXNvcnRudWxsc3NlYXJjaAAAeCcQAEkAAABMAAAAOgAAAGluY3JlbWVudGRlY3JlbWVudG11bHRpcGx5ZGl2aWRlcHVzaCBcEAApAAAApgAAACcAAAAgXBAAKQAAAKAAAAAqAAAAIFwQACkAAAC1AAAAJwAAACBcEAApAAAAxAAAACoAAABkaXN0aW5jdE51bGxhYmxlTmVzdGVkV2l0aEFnZ3JlZ2F0ZXNRdWVyeU1vZGVkZWZhdWx0aW5zZW5zaXRpdmVhc2NOdWxsc09yZGVyZmlyc3RKc29uTnVsbFZhbHVlSW5wdXROdWxsYWJsZUpzb25OdWxsVmFsdWVJbnB1dERiTnVsbEpzb25OdWxsVmFsdWVGaWx0ZXJBbnlOdWxsAAAA7k0QADIAAAAXAAAAKQAAAO5NEAAyAAAAGgAAACgAAAAcAwAADAAAAAQAAABRAwAAUgMAAFIDAAAcAwAADAAAAAQAAABTAwAAVAMAAFQDAAAcAwAADAAAAAQAAABVAwAAVgMAAFYDAAAcAwAADAAAAAQAAABXAwAAWAMAAFgDAAAcAwAADAAAAAQAAABZAwAAWgMAAFoDAAAcAwAADAAAAAQAAABbAwAAXAMAAFwDAAAcAwAADAAAAAQAAABdAwAAXgMAAF4DAAAcAwAADAAAAAQAAABfAwAAYAMAAGADAAAcAwAADAAAAAQAAABhAwAAYgMAAGIDAEHs9ccACw4BAAAAYwMAAGQDAABkAwBBhPbHAAsOAQAAAGUDAABmAwAAZgMAQZz2xwAL6hEBAAAAZwMAAGgDAABoAwAAHAMAAAwAAAAEAAAAaQMAAGoDAABqAwAAHAMAAAwAAAAEAAAAawMAAGwDAABsAwAAHAMAAAwAAAAEAAAAbQMAAG4DAABuAwAAHAMAAAwAAAAEAAAAbwMAAHADAABwAwAAHAMAAAwAAAAEAAAAcQMAAHIDAAByAwAAHAMAAAwAAAAEAAAAcwMAAHQDAAB0AwAAHAMAAAwAAAAEAAAAdQMAAHYDAAB2AwAAHAMAAAwAAAAEAAAAdwMAAHgDAAB4AwAAHAMAAAwAAAAEAAAAeQMAAHoDAAB6AwAAcXVlcnlSYXdleGVjdXRlUmF3cnVuQ29tbWFuZFJhdwCMVBAANQAAACQAAAApAAAAjFQQADUAAAArAAAAKAAAAEV4cGVjdGVkIGxpbmtpbmcgZmllbGRzIHRvIGJlIHNjYWxhci4AAAA+RxAANwAAAJYAAAASAAAA6xwQADgAAAB3AAAAEgAAAHVwc2VydGRlbGV0ZU1hbnl1cGRhdGVNYW55ZGVsZXRlY29ubmVjdGRpc2Nvbm5lY3Rjb25uZWN0T3JDcmVhdGVjcmVhdGVNYW55aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogU2NhbGFyVHlwZTo6TnVsbCBzaG91bGQgbmV2ZXIgcmVhY2ggdGhhdCBjb2RlIHBhdGgAAJVGEABEAAAAIAAAACEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBpbnB1dCByZWYgdHlwZSBvbmx5IHN1cHBvcnQgc2NhbGFyIG9yIGVudW1zAAAAlUYQAEQAAAAlAAAADgAAAHN0cmluZ19jb250YWluc3N0cmluZ19zdGFydHNfd2l0aHN0cmluZ19lbmRzX3dpdGhhcnJheV9zdGFydHNfd2l0aGFycmF5X2VuZHNfd2l0aGFycmF5X2NvbnRhaW5zbm90aW5ub3RJbmx0bHRlZ3RndGVza2lwdGFrZW9yZGVyQnlieWhhdmluZ2xpbWl0cmVsYXRpb25Mb2FkU3RyYXRlZ3lXaXRoQWdncmVnYXRpb25XaXRoUmVsYXRpb25Tb3J0T3JkZXJJbnB1dF9yZWxldmFuY2VBdmcAAAB4JxAASQAAAHIAAAASAAAAdW5zZXRTb3J0T3JkZXJBZmZlY3RlZFJvd3NPdXRwdXRRdWVyeU11dGF0aW9uTmVzdGVkT25lTmVzdGVkTWFueVVuY2hlY2tlZFJlbGF0aW9uTG9hZFN0cmF0ZWd5T25lT25lUmVxdWlyZWRNYW55VHJhbnNhY3Rpb25Jc29sYXRpb25MZXZlbGEqEAAiAAAAFQAAACAAAABmaW5kVW5pcXVlZmluZFVuaXF1ZU9yVGhyb3dmaW5kRmlyc3RmaW5kRmlyc3RPclRocm93ZmluZE1hbnljcmVhdGVPbmVjcmVhdGVNYW55QW5kUmV0dXJudXBkYXRlT25ldXBkYXRlTWFueUFuZFJldHVybmRlbGV0ZU9uZXVwc2VydE9uZWFnZ3JlZ2F0ZWdyb3VwQnlmaW5kUmF3YWdncmVnYXRlUmF3AAAAIFwQACkAAAA+AQAAEgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGludmFsaWQgT25jZSBzdGF0ZbItEACAAAAAOgAAABIAAABEZWNpbWFsVVVJRERhdGFiYXNlQ2hlY2tlZENyZWF0ZUlucHV0Q2hlY2tlZFVwZGF0ZU1hbnlJbnB1dFVuY2hlY2tlZFVwZGF0ZU1hbnlJbnB1dENoZWNrZWRVcGRhdGVPbmVJbnB1dENvbXBvc2l0ZUNyZWF0ZUVudmVsb3BlSW5wdXRDb21wb3NpdGVDcmVhdGVJbnB1dENvbXBvc2l0ZURlbGV0ZU1hbnlJbnB1dENvbXBvc2l0ZVVwZGF0ZUVudmVsb3BlSW5wdXRDb21wb3NpdGVVcGRhdGVJbnB1dENvbXBvc2l0ZVVwZGF0ZU1hbnlJbnB1dENvbXBvc2l0ZVVwc2VydE9iamVjdElucHV0Q3JlYXRlTWFueUlucHV0Q3JlYXRlTWFueUFuZFJldHVybk91dHB1dENyZWF0ZU9uZVNjYWxhckxpc3RGaWVsZFVwZGF0ZU9wZXJhdGlvbnNJbnB1dE1vZGVsTmVzdGVkVXBzZXJ0TWFueUlucHV0TmVzdGVkVXBzZXJ0T25lSW5wdXRPcmRlckJ5QWdncmVnYXRlSW5wdXRPcmRlckJ5SW5wdXRPcmRlckJ5UmVsZXZhbmNlRmllbGRFbnVtT3JkZXJCeVJlbGV2YW5jZUlucHV0T3JkZXJCeVRvTWFueUFnZ3JlZ2F0ZUlucHV0UmVsYXRpb25DcmVhdGVJbnB1dFJlbGF0aW9uVXBkYXRlSW5wdXRTY2FsYXJGaWVsZEVudW1TY2FsYXJGaWx0ZXJJbnB1dFNjYWxhckxpc3RGaWx0ZXJJbnB1dFNjYWxhckxpc3RVcGRhdGVJbnB1dFRvTWFueUNvbXBvc2l0ZUZpbHRlcklucHV0VG9NYW55UmVsYXRpb25GaWx0ZXJJbnB1dFRvT25lQ29tcG9zaXRlRmlsdGVySW5wdXRUb09uZVJlbGF0aW9uRmlsdGVySW5wdXRVbmNoZWNrZWRDcmVhdGVJbnB1dFVuY2hlY2tlZFVwZGF0ZU9uZUlucHV0VXBkYXRlTWFueVdoZXJlQ29tYmluYXRpb25JbnB1dFVwZGF0ZU9uZVdoZXJlQ29tYmluYXRpb25JbnB1dFVwZGF0ZVRvT25lUmVsV2hlcmVDb21iaW5hdGlvbklucHV0VXBkYXRlTWFueUFuZFJldHVybk91dHB1dFdoZXJlSW5wdXRXaGVyZVVuaXF1ZUlucHV0UmF3U3RyaW5nRW51bVR5cGV2YWx1ZXNSZXF1aXJlZE9wdGlvbmFsvgEAAAwAAAAEAAAAewMAAHwDAAB9AwBBkIjIAAuGEgEAAADCAQAASW5wdXRPYmplY3RUeXBlI0lucHV0IEZpZWxkcyBDZWxsI2NvbnRhaW5lcgB8VRAAgwAAADkAAAASAAAA9UMQAE4AAABcAAAADgAAAEJvb2yARBAATgAAACkAAAAtAAAAgEQQAE4AAAAxAAAALAAAAElucHV0T2JqZWN0VHlwZUNvbnN0cmFpbnRzbWluX251bV9maWVsZHNtYXhfbnVtX2ZpZWxkc0RhdGFiYXNlRW51bVR5cGVpbnRlcm5hbF9lbnVtRmllbGRSZWZFbnVtVHlwZUlkZW50aWZpZXJuYW1lc3BhY2VQcmlzbWFKc29uTGlzdDM3EABcAAAAfgEAACQAAACVQhAAYAAAAN4CAAAqAAAAlUIQAGAAAADjAgAAHgAAAGNhbGwgbGltaXQgcmVhY2hlZAAAwicQAGMAAAA/AAAAKgAAAMInEABjAAAARgAAAB0AAADCJxAAYwAAAEoAAAASAAAAVW5zdXBwb3J0ZWQoW112aWV3bW9kZWxn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AAAA2kYQADEAAABEAAAALAAAAEEgY29tcG9zaXRlIHR5cGUgY2Fubm90IGhhdmUgYmxvY2stbGV2ZWwgYXR0cmlidXRlcy5BIGNvbXBvc2l0ZSB0eXBlIGNhbm5vdCBkZWZpbmUgYW4gaWQuQSBmdWxsdGV4dCBpbmRleCBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgbW9kZWwgY29udGFpbmluZyB0aGUgZW1iZWQuQW4gaW5kZXggc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlIG1vZGVsIGNvbnRhaW5pbmcgdGhlIGVtYmVkLkEgdW5pcXVlIGNvbnN0cmFpbnQgc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlIG1vZGVsIGNvbnRhaW5pbmcgdGhlIGVtYmVkLlRoZSBuYW1lIG9mIGEgY29tcG9zaXRlIHR5cGUgaXMgbm90IHBlcnNpc3RlZCBpbiB0aGUgZGF0YWJhc2UsIHRoZXJlZm9yZSBpdCBkb2VzIG5vdCBuZWVkIGEgbWFwcGVkIGRhdGFiYXNlIG5hbWUuY29tcG9zaXRlIHR5cGUAANpGEAAxAAAAZgAAAB4AAADaRhAAMQAAAGoAAAASAAAA6i8QADcAAABYAAAADgAAAOovEAA3AAAASwAAABIAAADqLxAANwAAADgAAAAYAAAA6i8QADcAAAAxAAAAGAAAAOovEAA3AAAANQAAACQAAADqLxAANwAAAD0AAAAOAAAAY29uZmlndXJhdGlvbiBibG9ja3NvdXJjZQAAAOovEAA3AAAAIwAAAB4AAADqLxAANwAAACsAAAASAAAA4B4QAHQAAAAHBAAANwAAAAZZEAAZAAAALwAAADoAAAACXHXDIAAAaQQAAHJ1bGVFT0lzY2hlbWFtb2RlbF9kZWNsYXJhdGlvbmZpZWxkX2RlY2xhcmF0aW9ubW9kZWxfY29udGVudHNmaWVsZF90eXBldW5zdXBwb3J0ZWRfdHlwZWJhc2VfdHlwZXVuc3VwcG9ydGVkX29wdGlvbmFsX2xpc3RfdHlwZWxpc3RfdHlwZW9wdGlvbmFsX3R5cGVsZWdhY3lfcmVxdWlyZWRfdHlwZWxlZ2FjeV9saXN0X3R5cGV0eXBlX2FsaWFzY29uZmlnX2Jsb2Nra2V5X3ZhbHVlY29uZmlnX2NvbnRlbnRzYXJiaXRyYXJ5X2Jsb2NrZW51bV9kZWNsYXJhdGlvbmVudW1fdmFsdWVfZGVjbGFyYXRpb25lbnVtX2NvbnRlbnRzYmxvY2tfYXR0cmlidXRlZmllbGRfYXR0cmlidXRlYXJndW1lbnRzX2xpc3Rhcmd1bWVudGVtcHR5X2FyZ3VtZW50bmFtZWRfYXJndW1lbnR0cmFpbGluZ19jb21tYWNvbW1lbnRfYmxvY2t0cmFpbGluZ19jb21tZW50ZG9jX2NvbW1lbnRjb21tZW50ZG9jX2NvbnRlbnRtdWx0aV9saW5lX2NvbW1lbnR1bmljb2RlX2FscGhhbnVtZXJpY2lkZW50aWZpZXJXSElURVNQQUNFTkVXTElORWVtcHR5X2xpbmVzQkxPQ0tfT1BFTkJMT0NLX0NMT1NFRU5VTV9LRVlXT1JETU9ERUxfS0VZV09SRFRZUEVfS0VZV09SRFZJRVdfS0VZV09SREdFTkVSQVRPUl9LRVlXT1JEREFUQVNPVVJDRV9LRVlXT1JETEVHQUNZX0NPTE9OQ0FUQ0hfQUxMQkxPQ0tfTEVWRUxfQ0FUQ0hfQUxMZnVuY3Rpb25fY2FsbGFycmF5X2V4cHJlc3Npb25vYmplY3RfZXhwcmVzc2lvbmV4cHJlc3Npb25udW1lcmljX2xpdGVyYWxBU0NJSV9DT05UUk9MX0NIQVJBQ1RFUnN0cmluZ19lc2NhcGVzdHJpbmdfY29udGVudHN0cmluZ19saXRlcmFsU3RhcnRwb3NFbmRhIGJ5dGUgYXJyYXlhbiBpbnRlZ2VyYSBmbG9hdGEgY2hhcmFuIG9wdGlvbmFsYSBzZXF1ZW5jZWEgdHVwbGVhIHR1cGxlIHN0cnVjdDEgZWxlbWVudCBpbiBtYXAxIGVsZW1lbnQgaW4gc2VxdWVuY2VieXRlIGFycmF5dW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXB1bml0IHZhcmlhbnRuZXd0eXBlIHZhcmlhbnR0dXBsZSB2YXJpYW50c3RydWN0IHZhcmlhbnR1bml0dTMyYSBib29sZWFuYSBzdHJpbmdleHBsaWNpdCBwYW5pYwD7UBAAYgAAACQJAAASAAAAb25lIG9mIAAAAAAACAAAAAQAAACBAwAAggMAAIMDAAAu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hNMXjCQKH4NGyOtfdOioJQAAbBoSAAEAAABwGhIAAQAAAHQaEgABAAAAeBoSAAEAAAB8GhIAAgAAAIQaEgADAAAAkBoSAAUAAACkGhIACgAAAMwaEgATAAAAGBsSACYAAACwGxIASwAAANwcEgCVAAAAMB8SACoBAADYIxIAUwIAALU+EABoAAAAmAEAABYAAAC1PhAAaAAAALMBAAAkAAAAtT4QAGgAAABBAQAALAAAAGZtdCBlcnJvckFycmF5IE9iamVjdCBhbnkgdmFsaWQgSlNPTiB2YWx1ZXJhdyB2YWx1ZUVPRiB3aGlsZSBwYXJzaW5nIGEgbGlzdEVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdEVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nRU9GIHdoaWxlIHBhcnNpbmcgYSB2YWx1ZWV4cGVjdGVkIGA6YGV4cGVjdGVkIGAsYCBvciBgXWBleHBlY3RlZCBgLGAgb3IgYH1gZXhwZWN0ZWQgaWRlbnRleHBlY3RlZCB2YWx1ZWV4cGVjdGVkIGAiYGludmFsaWQgZXNjYXBlaW52YWxpZCBudW1iZXJudW1iZXIgb3V0IG9mIHJhbmdlaW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnRjb250cm9sIGNoYXJhY3RlciAoXHUwMDAwLVx1MDAxRikgZm91bmQgd2hpbGUgcGFyc2luZyBhIHN0cmluZ2tleSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCB2YWx1ZTogZXhwZWN0ZWQga2V5IHRvIGJlIGEgbnVtYmVyIGluIHF1b3Rlc2Zsb2F0IGtleSBtdXN0IGJlIGZpbml0ZSAoZ290IE5hTiBvciArLy1pbmYpbG9uZSBsZWFkaW5nIHN1cnJvZ2F0ZSBpbiBoZXggZXNjYXBldHJhaWxpbmcgY29tbWF0cmFpbGluZyBjaGFyYWN0ZXJzdW5leHBlY3RlZCBlbmQgb2YgaGV4IGVzY2FwZXJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZAA/MxAAZQAAALkBAAAuAAAAMFgQAGAAAAA+AgAAJQAAAKUzEABfAAAAogIAACoAAAByYXcgdmFsdWUgd2FzIG5vdCBlbWl0dGVkAAAAPzMQAGUAAACoAgAAHgAAAL4BAAAMAAAABAAAAIQD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YWluc1NvbWVJc0VtcHR5T25lUmVsYXRpb25Jc051bGxGaWx0ZXK+AQAADAAAAAQAAACeAwAAnwMAAKADAEGAk8kAC/0SAQAAAMIBAABVbmV4cGVjdGVkV3JpdGVPcGVyYXRpb25TY2FsYXJGaWx0ZXJwcm9qZWN0aW9ubW9kZUNvbXBvc2l0ZUZpbHRlcgAAAKkcEABBAAAADwAAABsAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBUd29XYXlFbWJlZGRlZE1hbnlUb01hbnkgcmVsYXRpb24gaW4gc3FsLXF1ZXJ5LWNvbm5lY3RvcgAAijkQAFAAAABWAAAAEQAAAG5vdCBpbXBsZW1lbnRlZDogU1FMIGNvbm5lY3RvcnMgZG8gbm90IHN1cHBvcnQgY29tcG9zaXRlcyB5ZXQuAADqLhAARQAAAEsBAAAlAAAA6i4QAEUAAABWAQAAGgAAAEA+JiY8Pj1BbGwgdmlydHVhbCBmaWVsZHMgbXVzdCBiZSB2aXNpdGVkIGJlZm9yZSBjYWxsaW5nIGJ1aWxkX3ZpcnR1YWxfZXhwcgC3PRAARQAAAMEAAAAOAAAAAACAPwAAIEEAAMhCAAB6RABAHEYAUMNHACR0SYCWGEsgvL5MKGtuTvkCFVAlIhAAaAAAAB8AAAAaAAAATm90RXF1YWxzTm90Q29udGFpbnNTdGFydHNXaXRoTm90U3RhcnRzV2l0aEVuZHNXaXRoTm90RW5kc1dpdGhMZXNzVGhhbkxlc3NUaGFuT3JFcXVhbHNHcmVhdGVyVGhhbkdyZWF0ZXJUaGFuT3JFcXVhbHNJbk5vdEluSnNvbkNvbXBhcmVTZWFyY2hOb3RTZWFyY2gAAABVGxAAZQAAADgCAAAtAAAATGlzdENvdW50QXZlcmFnZVN1bU1pbk1heERhdGFzb3VyY2VGaWVsZE5hbWUwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OUJvb2xlYW5FbnVtSW50VXVpZEpzb25PYmplY3ROdWxsRGF0ZVRpbWVGbG9hdEJ5dGVzcmV0dXJuX3R5cGVBbnlGaWVsZFNldFVuc2V0QWRkU3VidHJhY3RNdWx0aXBseURpdmlkZVB1c2hVcGRhdGVVcHNlcnRzZXR1cGRhdGVVcGRhdGVNYW55ZmlsdGVyRGVsZXRlTWFueXR5cGVOZXN0ZWRXcml0ZXdyaXRlc3Jvb3Qgc2VsZWN0aW5uZXIgc2VsZWN0bWlkZGxlIHNlbGVjdG91dGVyIHNlbGVjdAAAAAAAAAgAAAAEAAAAoQMAAKIDAACjAwAApAMAAMQBAAAMAAAABAAAAKUDAACmAwAApwMAAAAAAAAIAAAABAAAAKgDAACpAwAAqgMAAKsDAACsAwAAEAAAAAQAAACtAwAArgMAAK8DAACkAwAAXPbpX9wC9rnxwXBs8mHBJNoHjEl4ZUzTwn2PTZafJs9hc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAACRWBAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAkVgQACoAAAC3BAAADQAAAHJ3bG9jayBvdmVyZmxvd2VkIHJlYWQgbG9ja3NULRAAXQAAABUAAAAsAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZB5AEABMAAAAkAAAAAkAAABMYXp5TG9jayBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAABjPhAAUQAAAJ8BAAAFAAAAb3BlcmF0aW9uIHN1Y2Nlc3NmdWxXb3VsZEJsb2NrAAAAAAAACAAAAAQAAACwAwAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzTm90QURpcmVjdG9yeUlzQURpcmVjdG9yeURpcmVjdG9yeU5vdEVtcHR5UmVhZE9ubHlGaWxlc3lzdGVtRmlsZXN5c3RlbUxvb3BTdGFsZU5ldHdvcmtGaWxlSGFuZGxlSW52YWxpZElucHV0SW52YWxpZERhdGFUaW1lZE91dFdyaXRlWmVyb1N0b3JhZ2VGdWxsTm90U2Vla2FibGVRdW90YUV4Y2VlZGVkRmlsZVRvb0xhcmdlUmVzb3VyY2VCdXN5RXhlY3V0YWJsZUZpbGVCdXN5RGVhZGxvY2tDcm9zc2VzRGV2aWNlc1Rvb01hbnlMaW5rc0ludmFsaWRGaWxlbmFtZUFyZ3VtZW50TGlzdFRvb0xvbmdJbnRlcnJ1cHRlZFVuc3VwcG9ydGVkVW5leHBlY3RlZEVvZk91dE9mTWVtb3J5SW5Qcm9ncmVzc090aGVyVW5jYXRlZ29yaXplZE9zY29kZWtpbmRtZXNzYWdlS2luZEN1c3RvbWVycm9ycGFuaWNrZWQgYXQgxAEAAAwAAAAEAAAAsQMAAHJ3bG9jayBoYXMgbm90IGJlZW4gbG9ja2VkIGZvciByZWFkaW5nAABULRAAXQAAAD4AAAAJAAAAwyAAAGkgAADDIAAAaRAAAMMgAABpAgAAY2Fubm90IGVudGVyIGEgdGFzay1sb2NhbCBzY29wZSB3aGlsZSB0aGUgdGFzay1sb2NhbCBzdG9yYWdlIGlzIGJvcnJvd2VkY2Fubm90IGVudGVyIGEgdGFzay1sb2NhbCBzY29wZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24gb2YgdGhlIHVuZGVybHlpbmcgdGhyZWFkLWxvY2FsAgICAgICAgICAgIAQZqmyQALCAICAAAAAAACAEHRpskACwECAEH3pskACwEBAEGSp8kACwEBAEH0p8kAC58Bl1kQAFsAAABsAAAAGAAAAJdZEABbAAAAbQAAACUAAACXWRAAWwAAAGUAAAAlAAAAl1kQAFsAAABfAAAAJQAAAEF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAADQLBAAgwAAAGsAAAANAAAAAAAAAP//////////iFQSAEGgqckACyN1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgBB/KnJAAsBXABBoKvJAAvWBGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUzLhAAbQAAAMgAAAAWAAAAYXR0ZW1wdCB0byBqb2luIGludG8gY29sbGVjdGlvbiB3aXRoIGxlbiA+IHVzaXplOjpNQVgAAAAzLhAAbQAAAK8AAAAKAAAAbmFtZWZpZWxkc3R5cGVOYW1laXNSZWxhdGlvbm9iamVjdHNjYWxhcmxpc3RlbGVtZW50VHlwZWVudW10eXBlTmFtZXNyZXF1aXJlZG1pbkZpZWxkQ291bnRtYXhGaWVsZENvdW50cmVxdWlyZWRGaWVsZHNVbmV4cGVjdGVkUnVudGltZUVycm9yRW1wdHlTZWxlY3Rpb25JbnZhbGlkQXJndW1lbnRUeXBlSW52YWxpZEFyZ3VtZW50VmFsdWVTb21lRmllbGRzTWlzc2luZ1Rvb01hbnlGaWVsZHNHaXZlblNlbGVjdGlvblNldE9uU2NhbGFyUmVxdWlyZWRBcmd1bWVudE1pc3NpbmdVbmlvblVua25vd25Bcmd1bWVudFVua25vd25JbnB1dEZpZWxkVW5rbm93blNlbGVjdGlvbkZpZWxkVmFsdWVUb29MYXJnZT8zEABlAAAAmwEAAC4AAABzZXJpYWxpemVfdmFsdWUgY2FsbGVkIGJlZm9yZSBzZXJpYWxpemVfa2V5AD8zEABlAAAAqAEAAB8AAAA/MxAAZQAAAK8BAAAuAAAAM0YQAGEAAAA7AAAAIwAAAL4BAAAMAAAABAAAALIDAACzAwAAtAMAQYCwyQAL5QMBAAAAwgEAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAaVsQAF0AAACFCQAANAAAAG1pZCA+IGxlbkV4cGVjdGVkIGEgbWluaW11bSBvZiAxIGZpZWxkIHRvIGJlIHByZXNlbnQsIGdvdCAwb3V0cHV0VHlwZXNlbGVjdGlvblBhdGgAAIcBAAAEAAAABAAAAIgBAAA/OhAANgAAAH8AAAAYAAAAQXJndW1lbnQgcGF0aCBjYW5ub3Qgbm90IGJlIGVtcHR5AAAAPzoQADYAAAD/AQAAMgAAAEJpZ0ludGFyZ3VtZW50UGF0aAAAPzoQADYAAAAHAgAAGAAAAEFyZ3VtZW50IGRvZXMgbm90IGV4aXN0IGluIGVuY2xvc2luZyB0eXBlYXJndW1lbnRzAAA/OhAANgAAAHEBAAARAAAAaW5wdXRUeXBlY29uc3RyYWludHM/OhAANgAAAPIAAAARAAAAPzoQADYAAACgAQAAEQAAACwgaW5mZXJyZWRUeXBlAAA/OhAANgAAAKcAAAARAAAAPzoQADYAAAAJAQAAEQAAAD86EAA2AAAAygAAADIAAAB1bmRlcmx5aW5nRXJyb3IAPzoQADYAAADRAAAAGABB+7PJAAsBgABBmLTJAAvTGz86EAA2AAAA1gAAABgAAABmaWVsZE5hbWUAAAA/OhAANgAAANgBAAAYAAAAU2VsZWN0aW9uIHBhdGggbXVzdCBub3QgYmUgZW1wdHk/OhAANgAAALcBAAAjAAAAPzoQADYAAAC9AQAAGAAAAGlucHV0VHlwZXMAAD86EAA2AAAAJQEAABEAAABkZXBlbmRlbnRBcmd1bWVudFBhdGgAAAA/OhAANgAAAEwBAAAYAAAAZXJyb3JzAAA/OhAANgAAAOUBAAAYAAAAM0YQAGEAAABYAQAAOAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAbT8QAHAAAABxCwAADgAAAEVycm9yAAAAaVsQAF0AAACCCQAANgAAAAAAAAAJAAAADgAAABMAAAAYAAAAMDEyMzQ1Njc4OWFiY2RlZv///////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4P//////////////////////////////////8KCwwNDg////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AECAwQFBgcICQoLDA0ODw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EQAAAA8AAAAPAAAAEgAAABEAAAAMAAAACQAAABAAAAALAAAACgAAAA0AAAAKAAAADQAAAAwAAAARAAAAEgAAAA4AAAAWAAAADAAAAAsAAAAIAAAACQAAAAsAAAALAAAADQAAAAwAAAAMAAAAEgAAAAgAAAAOAAAADAAAAA8AAAATAAAACwAAAAsAAAANAAAACwAAAAoAAAAFAAAADQAAALBPEgC4TxIAyE8SANlPEgDoTxIA908SAAlQEgAaUBIAJlASAC9QEgA/UBIASlASAFRQEgCUTxIAYVASAG5QEgB6UBIAi1ASAJ1QEgCrUBIAwVASAM1QEgDYUBIA4FASAOlQEgD0UBIA/1ASAAxREgAYURIAJFESADZREgA+URIATFESAFhREgBnURIAelESAIVREgCQURIAnVESAKhREgCyURIAt1ESAAgAAAAQAAAAEQAAAA8AAAAPAAAAEgAAABEAAAAMAAAACQAAABAAAAALAAAACgAAAA0AAAAKAAAADQAAAAwAAAARAAAAEgAAAA4AAAAWAAAADAAAAAsAAAAIAAAACQAAAAsAAAALAAAADQAAAAwAAAAMAAAAEgAAAAgAAAAOAAAADAAAAA8AAAATAAAACwAAAAsAAAANAAAACwAAAAoAAAAFAAAADQAAALBPEgC4TxIAyE8SANlPEgDoTxIA908SAAlQEgAaUBIAJlASAC9QEgA/UBIASlASAFRQEgCUTxIAYVASAG5QEgB6UBIAi1ASAJ1QEgCrUBIAwVASAM1QEgDYUBIA4FASAOlQEgD0UBIA/1ASAAxREgAYURIAJFESADZREgA+URIATFESAFhREgBnURIAelESAIVREgCQURIAnVESAKhREgCyURIAt1ESAAgAAAAQAAAAEQAAAA8AAAAPAAAAEgAAABEAAAAMAAAACQAAABAAAAALAAAACgAAAA0AAAAKAAAADQAAAAwAAAARAAAAEgAAAA4AAAAWAAAADAAAAAsAAAAIAAAACQAAAAsAAAALAAAADQAAAAwAAAAMAAAAEgAAAAgAAAAOAAAADAAAAA8AAAATAAAACwAAAAsAAAANAAAACwAAAAoAAAAFAAAADQAAALBPEgC4TxIAyE8SANlPEgDoTxIA908SAAlQEgAaUBIAJlASAC9QEgA/UBIASlASAFRQEgCUTxIAYVASAG5QEgB6UBIAi1ASAJ1QEgCrUBIAwVASAM1QEgDYUBIA4FASAOlQEgD0UBIA/1ASAAxREgAYURIAJFESADZREgA+URIATFESAFhREgBnURIAelESAIVREgCQURIAnVESAKhREgCyURIAt1ESAEGQ68kACwLkAQBBiOzJAAsE/////wBBqOzJAAsCpAIAQbjsyQALDQEAAADBAgAAAAAAAAQ="; +export { + wasm +}; diff --git a/apps/api/.output/dist/chunks/source-SMPGMLTA.js b/apps/api/.output/dist/chunks/source-SMPGMLTA.js new file mode 100644 index 0000000..9c45426 --- /dev/null +++ b/apps/api/.output/dist/chunks/source-SMPGMLTA.js @@ -0,0 +1,4507 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + require_src +} from "./chunk-C4DYPKAN.js"; +import "./chunk-A34KYKJP.js"; +import { + __commonJS, + __esm, + __name, + __toESM +} from "./chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +var require_ieee754 = __commonJS({ + "../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js"(exports) { + exports.read = function(buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? nBytes - 1 : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + i += d; + e = s & (1 << -nBits) - 1; + s >>= -nBits; + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) { + } + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) { + } + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : (s ? -1 : 1) * Infinity; + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); + }; + exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; + var i = isLE ? 0 : nBytes - 1; + var d = isLE ? 1 : -1; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + value = Math.abs(value); + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) { + } + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { + } + buffer[offset + i - d] |= s * 128; + }; + } +}); + +// ../../node_modules/.pnpm/@borewit+text-codec@0.2.2/node_modules/@borewit/text-codec/lib/index.js +function utf8Decoder() { + if (typeof globalThis.TextDecoder === "undefined") + return void 0; + return _utf8Decoder !== null && _utf8Decoder !== void 0 ? _utf8Decoder : _utf8Decoder = new globalThis.TextDecoder("utf-8"); +} +function textDecode(bytes, encoding = "utf-8") { + switch (encoding.toLowerCase()) { + case "utf-8": + case "utf8": { + const dec = utf8Decoder(); + return dec ? dec.decode(bytes) : decodeUTF8(bytes); + } + case "utf-16le": + return decodeUTF16LE(bytes); + case "us-ascii": + case "ascii": + return decodeASCII(bytes); + case "latin1": + case "iso-8859-1": + return decodeLatin1(bytes); + case "windows-1252": + return decodeWindows1252(bytes); + default: + throw new RangeError(`Encoding '${encoding}' not supported`); + } +} +function flushChunk(parts, chunk) { + if (chunk.length === 0) + return; + parts.push(String.fromCharCode.apply(null, chunk)); + chunk.length = 0; +} +function pushCodeUnit(parts, chunk, codeUnit) { + chunk.push(codeUnit); + if (chunk.length >= CHUNK) + flushChunk(parts, chunk); +} +function pushCodePoint(parts, chunk, cp) { + if (cp <= 65535) { + pushCodeUnit(parts, chunk, cp); + return; + } + cp -= 65536; + pushCodeUnit(parts, chunk, 55296 + (cp >> 10)); + pushCodeUnit(parts, chunk, 56320 + (cp & 1023)); +} +function decodeUTF8(bytes) { + const parts = []; + const chunk = []; + let i = 0; + if (bytes.length >= 3 && bytes[0] === 239 && bytes[1] === 187 && bytes[2] === 191) { + i = 3; + } + while (i < bytes.length) { + const b1 = bytes[i]; + if (b1 <= 127) { + pushCodeUnit(parts, chunk, b1); + i++; + continue; + } + if (b1 < 194 || b1 > 244) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + if (b1 <= 223) { + if (i + 1 >= bytes.length) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + const b22 = bytes[i + 1]; + if ((b22 & 192) !== 128) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + const cp2 = (b1 & 31) << 6 | b22 & 63; + pushCodeUnit(parts, chunk, cp2); + i += 2; + continue; + } + if (b1 <= 239) { + if (i + 2 >= bytes.length) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + const b22 = bytes[i + 1]; + const b32 = bytes[i + 2]; + const valid2 = (b22 & 192) === 128 && (b32 & 192) === 128 && !(b1 === 224 && b22 < 160) && // overlong + !(b1 === 237 && b22 >= 160); + if (!valid2) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + const cp2 = (b1 & 15) << 12 | (b22 & 63) << 6 | b32 & 63; + pushCodeUnit(parts, chunk, cp2); + i += 3; + continue; + } + if (i + 3 >= bytes.length) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + const b2 = bytes[i + 1]; + const b3 = bytes[i + 2]; + const b4 = bytes[i + 3]; + const valid = (b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128 && !(b1 === 240 && b2 < 144) && // overlong + !(b1 === 244 && b2 > 143); + if (!valid) { + pushCodeUnit(parts, chunk, REPLACEMENT); + i++; + continue; + } + const cp = (b1 & 7) << 18 | (b2 & 63) << 12 | (b3 & 63) << 6 | b4 & 63; + pushCodePoint(parts, chunk, cp); + i += 4; + } + flushChunk(parts, chunk); + return parts.join(""); +} +function decodeUTF16LE(bytes) { + const parts = []; + const chunk = []; + const len = bytes.length; + let i = 0; + while (i + 1 < len) { + const u1 = bytes[i] | bytes[i + 1] << 8; + i += 2; + if (u1 >= 55296 && u1 <= 56319) { + if (i + 1 < len) { + const u2 = bytes[i] | bytes[i + 1] << 8; + if (u2 >= 56320 && u2 <= 57343) { + pushCodeUnit(parts, chunk, u1); + pushCodeUnit(parts, chunk, u2); + i += 2; + } else { + pushCodeUnit(parts, chunk, REPLACEMENT); + } + } else { + pushCodeUnit(parts, chunk, REPLACEMENT); + } + continue; + } + if (u1 >= 56320 && u1 <= 57343) { + pushCodeUnit(parts, chunk, REPLACEMENT); + continue; + } + pushCodeUnit(parts, chunk, u1); + } + if (i < len) { + pushCodeUnit(parts, chunk, REPLACEMENT); + } + flushChunk(parts, chunk); + return parts.join(""); +} +function decodeASCII(bytes) { + const parts = []; + for (let i = 0; i < bytes.length; i += CHUNK) { + const end = Math.min(bytes.length, i + CHUNK); + const codes = new Array(end - i); + for (let j = i, k = 0; j < end; j++, k++) { + codes[k] = bytes[j] & 127; + } + parts.push(String.fromCharCode.apply(null, codes)); + } + return parts.join(""); +} +function decodeLatin1(bytes) { + const parts = []; + for (let i = 0; i < bytes.length; i += CHUNK) { + const end = Math.min(bytes.length, i + CHUNK); + const codes = new Array(end - i); + for (let j = i, k = 0; j < end; j++, k++) { + codes[k] = bytes[j]; + } + parts.push(String.fromCharCode.apply(null, codes)); + } + return parts.join(""); +} +function decodeWindows1252(bytes) { + const parts = []; + let out = ""; + for (let i = 0; i < bytes.length; i++) { + const b = bytes[i]; + const extra = b >= 128 && b <= 159 ? WINDOWS_1252_EXTRA[b] : void 0; + out += extra !== null && extra !== void 0 ? extra : String.fromCharCode(b); + if (out.length >= CHUNK) { + parts.push(out); + out = ""; + } + } + if (out) + parts.push(out); + return parts.join(""); +} +var WINDOWS_1252_EXTRA, WINDOWS_1252_REVERSE, _utf8Decoder, CHUNK, REPLACEMENT; +var init_lib = __esm({ + "../../node_modules/.pnpm/@borewit+text-codec@0.2.2/node_modules/@borewit/text-codec/lib/index.js"() { + WINDOWS_1252_EXTRA = { + 128: "\u20AC", + 130: "\u201A", + 131: "\u0192", + 132: "\u201E", + 133: "\u2026", + 134: "\u2020", + 135: "\u2021", + 136: "\u02C6", + 137: "\u2030", + 138: "\u0160", + 139: "\u2039", + 140: "\u0152", + 142: "\u017D", + 145: "\u2018", + 146: "\u2019", + 147: "\u201C", + 148: "\u201D", + 149: "\u2022", + 150: "\u2013", + 151: "\u2014", + 152: "\u02DC", + 153: "\u2122", + 154: "\u0161", + 155: "\u203A", + 156: "\u0153", + 158: "\u017E", + 159: "\u0178" + }; + WINDOWS_1252_REVERSE = {}; + for (const [code, char] of Object.entries(WINDOWS_1252_EXTRA)) { + WINDOWS_1252_REVERSE[char] = Number.parseInt(code, 10); + } + __name(utf8Decoder, "utf8Decoder"); + CHUNK = 32 * 1024; + REPLACEMENT = 65533; + __name(textDecode, "textDecode"); + __name(flushChunk, "flushChunk"); + __name(pushCodeUnit, "pushCodeUnit"); + __name(pushCodePoint, "pushCodePoint"); + __name(decodeUTF8, "decodeUTF8"); + __name(decodeUTF16LE, "decodeUTF16LE"); + __name(decodeASCII, "decodeASCII"); + __name(decodeLatin1, "decodeLatin1"); + __name(decodeWindows1252, "decodeWindows1252"); + } +}); + +// ../../node_modules/.pnpm/token-types@6.1.2/node_modules/token-types/lib/index.js +function dv(array) { + return new DataView(array.buffer, array.byteOffset); +} +var ieee754, UINT8, UINT16_LE, UINT16_BE, UINT32_LE, UINT32_BE, INT32_BE, UINT64_LE, StringType; +var init_lib2 = __esm({ + "../../node_modules/.pnpm/token-types@6.1.2/node_modules/token-types/lib/index.js"() { + ieee754 = __toESM(require_ieee754(), 1); + init_lib(); + __name(dv, "dv"); + UINT8 = { + len: 1, + get(array, offset) { + return dv(array).getUint8(offset); + }, + put(array, offset, value) { + dv(array).setUint8(offset, value); + return offset + 1; + } + }; + UINT16_LE = { + len: 2, + get(array, offset) { + return dv(array).getUint16(offset, true); + }, + put(array, offset, value) { + dv(array).setUint16(offset, value, true); + return offset + 2; + } + }; + UINT16_BE = { + len: 2, + get(array, offset) { + return dv(array).getUint16(offset); + }, + put(array, offset, value) { + dv(array).setUint16(offset, value); + return offset + 2; + } + }; + UINT32_LE = { + len: 4, + get(array, offset) { + return dv(array).getUint32(offset, true); + }, + put(array, offset, value) { + dv(array).setUint32(offset, value, true); + return offset + 4; + } + }; + UINT32_BE = { + len: 4, + get(array, offset) { + return dv(array).getUint32(offset); + }, + put(array, offset, value) { + dv(array).setUint32(offset, value); + return offset + 4; + } + }; + INT32_BE = { + len: 4, + get(array, offset) { + return dv(array).getInt32(offset); + }, + put(array, offset, value) { + dv(array).setInt32(offset, value); + return offset + 4; + } + }; + UINT64_LE = { + len: 8, + get(array, offset) { + return dv(array).getBigUint64(offset, true); + }, + put(array, offset, value) { + dv(array).setBigUint64(offset, value, true); + return offset + 8; + } + }; + StringType = class { + static { + __name(this, "StringType"); + } + constructor(len, encoding) { + this.len = len; + this.encoding = encoding; + } + get(data, offset = 0) { + const bytes = data.subarray(offset, offset + this.len); + return textDecode(bytes, this.encoding); + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/Errors.js +var defaultMessages, EndOfStreamError, AbortError; +var init_Errors = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/Errors.js"() { + defaultMessages = "End-Of-Stream"; + EndOfStreamError = class extends Error { + static { + __name(this, "EndOfStreamError"); + } + constructor() { + super(defaultMessages); + this.name = "EndOfStreamError"; + } + }; + AbortError = class extends Error { + static { + __name(this, "AbortError"); + } + constructor(message = "The operation was aborted") { + super(message); + this.name = "AbortError"; + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/AbortSignal.js +function throwIfAborted(signal) { + if (signal?.aborted) { + throw new AbortError(); + } +} +var init_AbortSignal = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/AbortSignal.js"() { + init_Errors(); + __name(throwIfAborted, "throwIfAborted"); + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/BufferSizeError.js +function getMaxBufferSize(options) { + const limit = options?.maxBufferSize ?? Number.POSITIVE_INFINITY; + if (limit !== Number.POSITIVE_INFINITY && (!Number.isSafeInteger(limit) || limit <= 0)) { + throw new RangeError("maxBufferSize must be a positive safe integer or Infinity"); + } + return limit; +} +var BufferSizeError; +var init_BufferSizeError = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/BufferSizeError.js"() { + BufferSizeError = class extends RangeError { + static { + __name(this, "BufferSizeError"); + } + /** + * Create an error describing an allocation that exceeds the configured limit. + * @param requestedSize - Requested buffer size in bytes + * @param maxBufferSize - Configured maximum buffer size in bytes + */ + constructor(requestedSize, maxBufferSize) { + super(`Requested buffer size ${requestedSize} exceeds maxBufferSize ${maxBufferSize}`); + this.requestedSize = requestedSize; + this.maxBufferSize = maxBufferSize; + this.name = "BufferSizeError"; + } + }; + __name(getMaxBufferSize, "getMaxBufferSize"); + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/AbstractStreamReader.js +var AbstractStreamReader; +var init_AbstractStreamReader = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/AbstractStreamReader.js"() { + init_Errors(); + AbstractStreamReader = class { + static { + __name(this, "AbstractStreamReader"); + } + constructor() { + this.endOfStream = false; + this.interrupted = false; + this.peekQueue = []; + } + async peek(uint8Array, mayBeLess = false) { + const bytesRead = await this.read(uint8Array, mayBeLess); + this.peekQueue.push(uint8Array.subarray(0, bytesRead)); + return bytesRead; + } + async read(buffer, mayBeLess = false) { + if (buffer.length === 0) { + return 0; + } + let bytesRead = this.readFromPeekBuffer(buffer); + if (!this.endOfStream) { + bytesRead += await this.readRemainderFromStream(buffer.subarray(bytesRead), mayBeLess); + } + if (bytesRead === 0 && !mayBeLess) { + throw new EndOfStreamError(); + } + return bytesRead; + } + /** + * Read chunk from stream + * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in + * @returns Number of bytes read + */ + readFromPeekBuffer(buffer) { + let remaining = buffer.length; + let bytesRead = 0; + while (this.peekQueue.length > 0 && remaining > 0) { + const peekData = this.peekQueue.pop(); + if (!peekData) { + throw new Error("peekData should be defined"); + } + const lenCopy = Math.min(peekData.length, remaining); + buffer.set(peekData.subarray(0, lenCopy), bytesRead); + bytesRead += lenCopy; + remaining -= lenCopy; + if (lenCopy < peekData.length) { + this.peekQueue.push(peekData.subarray(lenCopy)); + } + } + return bytesRead; + } + async readRemainderFromStream(buffer, mayBeLess) { + let bytesRead = 0; + while (bytesRead < buffer.length && !this.endOfStream) { + if (this.interrupted) { + throw new AbortError(); + } + const chunkLen = await this.readFromStream(buffer.subarray(bytesRead), mayBeLess); + if (chunkLen === 0) { + break; + } + bytesRead += chunkLen; + } + if (!mayBeLess && bytesRead < buffer.length) { + throw new EndOfStreamError(); + } + return bytesRead; + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/Deferred.js +var init_Deferred = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/Deferred.js"() { + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/StreamReader.js +var init_StreamReader = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/StreamReader.js"() { + init_AbstractStreamReader(); + init_Deferred(); + init_Errors(); + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamReader.js +var WebStreamReader; +var init_WebStreamReader = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamReader.js"() { + init_AbstractStreamReader(); + WebStreamReader = class extends AbstractStreamReader { + static { + __name(this, "WebStreamReader"); + } + constructor(reader) { + super(); + this.reader = reader; + } + async abort() { + return this.close(); + } + async close() { + this.reader.releaseLock(); + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamByobReader.js +var WebStreamByobReader; +var init_WebStreamByobReader = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamByobReader.js"() { + init_WebStreamReader(); + WebStreamByobReader = class extends WebStreamReader { + static { + __name(this, "WebStreamByobReader"); + } + /** + * Read from stream + * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in + * @param mayBeLess - If true, may fill the buffer partially + * @protected Bytes read + */ + async readFromStream(buffer, mayBeLess) { + if (buffer.length === 0) { + return 0; + } + const result = await this.reader.read(new Uint8Array(buffer.length), { + min: mayBeLess ? void 0 : buffer.length + }); + if (result.done) { + this.endOfStream = result.done; + } + if (result.value) { + buffer.set(result.value); + return result.value.length; + } + return 0; + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamDefaultReader.js +var WebStreamDefaultReader; +var init_WebStreamDefaultReader = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamDefaultReader.js"() { + init_AbstractStreamReader(); + init_Errors(); + WebStreamDefaultReader = class extends AbstractStreamReader { + static { + __name(this, "WebStreamDefaultReader"); + } + constructor(reader) { + super(); + this.reader = reader; + this.buffer = null; + } + /** + * Copy chunk to target, and store the remainder in this.buffer + */ + writeChunk(target, chunk) { + const written = Math.min(chunk.length, target.length); + target.set(chunk.subarray(0, written)); + if (written < chunk.length) { + this.buffer = chunk.subarray(written); + } else { + this.buffer = null; + } + return written; + } + /** + * Read from stream + * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in + * @param mayBeLess - If true, may fill the buffer partially + * @protected Bytes read + */ + async readFromStream(buffer, mayBeLess) { + if (buffer.length === 0) { + return 0; + } + let totalBytesRead = 0; + if (this.buffer) { + totalBytesRead += this.writeChunk(buffer, this.buffer); + } + while (totalBytesRead < buffer.length && !this.endOfStream) { + const result = await this.reader.read(); + if (result.done) { + this.endOfStream = true; + break; + } + if (result.value) { + totalBytesRead += this.writeChunk(buffer.subarray(totalBytesRead), result.value); + } + } + if (!mayBeLess && totalBytesRead === 0 && this.endOfStream) { + throw new EndOfStreamError(); + } + return totalBytesRead; + } + abort() { + this.interrupted = true; + return this.reader.cancel(); + } + async close() { + try { + await this.abort(); + } finally { + this.reader.releaseLock(); + } + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamReaderFactory.js +function makeWebStreamReader(stream) { + try { + const reader = stream.getReader({ mode: "byob" }); + if (reader instanceof ReadableStreamDefaultReader) { + return new WebStreamDefaultReader(reader); + } + return new WebStreamByobReader(reader); + } catch (error) { + if (error instanceof TypeError) { + return new WebStreamDefaultReader(stream.getReader()); + } + throw error; + } +} +var init_WebStreamReaderFactory = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/WebStreamReaderFactory.js"() { + init_WebStreamByobReader(); + init_WebStreamDefaultReader(); + __name(makeWebStreamReader, "makeWebStreamReader"); + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/index.js +var init_stream = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/stream/index.js"() { + init_Errors(); + init_StreamReader(); + init_WebStreamByobReader(); + init_WebStreamDefaultReader(); + init_WebStreamReaderFactory(); + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/AbstractTokenizer.js +var AbstractTokenizer; +var init_AbstractTokenizer = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/AbstractTokenizer.js"() { + init_AbortSignal(); + init_BufferSizeError(); + init_stream(); + AbstractTokenizer = class { + static { + __name(this, "AbstractTokenizer"); + } + /** + * Constructor + * @param options Tokenizer options + * @protected + */ + constructor(options) { + this.numBuffer = new Uint8Array(8); + this.position = 0; + this.maxBufferSize = getMaxBufferSize(options); + throwIfAborted(options?.abortSignal); + this.onClose = options?.onClose; + if (options?.abortSignal) { + this.addAbortListener(options.abortSignal, () => { + void this.abort().catch(() => { + }); + }); + } + } + addAbortListener(signal, listener) { + this.abortSignal = signal; + this.abortListener = listener; + signal.addEventListener("abort", listener, { once: true }); + } + removeAbortListener() { + if (this.abortListener) { + this.abortSignal?.removeEventListener("abort", this.abortListener); + } + this.abortSignal = void 0; + this.abortListener = void 0; + } + /** + * Read a token from the tokenizer-stream + * @param token - The token to read + * @param position - If provided, the desired position in the tokenizer-stream + * @returns Promise with token data + */ + async readToken(token, position = this.position) { + this.validateTokenRead(token.len, position); + const uint8Array = new Uint8Array(token.len); + const len = await this.readBuffer(uint8Array, { position }); + if (len < token.len) { + throw new EndOfStreamError(); + } + return token.get(uint8Array, 0); + } + /** + * Peek a token from the tokenizer-stream. + * @param token - Token to peek from the tokenizer-stream. + * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position. + * @returns Promise with token data + */ + async peekToken(token, position = this.position) { + const peekPosition = position ?? this.position; + this.validateTokenRead(token.len, peekPosition, true); + const uint8Array = new Uint8Array(token.len); + const len = await this.peekBuffer(uint8Array, { position: peekPosition }); + if (len < token.len) { + throw new EndOfStreamError(); + } + return token.get(uint8Array, 0); + } + /** + * Read a numeric token from the stream + * @param token - Numeric token + * @returns Promise with number + */ + async readNumber(token) { + const len = await this.readBuffer(this.numBuffer, { length: token.len }); + if (len < token.len) { + throw new EndOfStreamError(); + } + return token.get(this.numBuffer, 0); + } + /** + * Read a numeric token from the stream + * @param token - Numeric token + * @returns Promise with number + */ + async peekNumber(token) { + const len = await this.peekBuffer(this.numBuffer, { length: token.len }); + if (len < token.len) { + throw new EndOfStreamError(); + } + return token.get(this.numBuffer, 0); + } + /** + * Ignore number of bytes, advances the pointer in under tokenizer-stream. + * @param length - Number of bytes to ignore. Must be ≥ 0. + * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available + */ + async ignore(length) { + if (length < 0) { + throw new RangeError("ignore length must be \u2265 0 bytes"); + } + this.validateLength(length, "ignore length"); + this.validateLength(this.position + length, "end position"); + if (this.fileInfo.size !== void 0) { + const bytesLeft = this.fileInfo.size - this.position; + if (length > bytesLeft) { + this.position += bytesLeft; + return bytesLeft; + } + } + this.position += length; + return length; + } + async close() { + this.removeAbortListener(); + await this.abort(); + await this.onClose?.(); + } + /** + * Validate a byte length or position before using it in buffer calculations. + * @param value - Value that must be a non-negative safe integer + * @param name - Label used in the validation error + * @throws RangeError if the value is negative or not a safe integer + */ + validateLength(value, name) { + if (!Number.isSafeInteger(value) || value < 0) { + throw new RangeError(`${name} must be a non-negative safe integer`); + } + } + /** + * Validate a requested buffer size against the configured allocation limit. + * @param length - Requested buffer size in bytes + * @throws RangeError if the length is negative or not a safe integer + * @throws BufferSizeError if the length exceeds maxBufferSize + */ + validateBufferSize(length) { + this.validateLength(length, "buffer length"); + if (length > this.maxBufferSize) { + throw new BufferSizeError(length, this.maxBufferSize); + } + } + /** + * Validate a token request before allocating a buffer or consuming input. + * @param length - Token length in bytes + * @param position - Byte offset where the token starts + * @param peek - Whether to include skipped stream bytes in the lookahead limit + * @throws RangeError if a length or position is negative or not a safe integer + * @throws BufferSizeError if the token buffer or stream lookahead exceeds maxBufferSize + * @throws Error if a stream request starts before the current position + * @throws EndOfStreamError if the token extends beyond the known input size + */ + validateTokenRead(length, position, peek = false) { + this.validateBufferSize(length); + this.validateLength(position, "position"); + this.validateLength(position + length, "end position"); + if (!this.supportsRandomAccess() && position < this.position) { + throw new Error("`options.position` must be equal or greater than `tokenizer.position`"); + } + if (peek && !this.supportsRandomAccess()) { + this.validateBufferSize(length + position - this.position); + } + if (this.fileInfo.size !== void 0 && length > this.fileInfo.size - position) { + throw new EndOfStreamError(); + } + } + /** + * Apply defaults and validate buffer read or peek options. + * @param uint8Array - Target buffer whose length is the default read length + * @param options - Requested length, position and partial-read behavior + * @returns Validated options with an explicit length, position and mayBeLess flag + * @throws RangeError if a length or position is invalid, or the length exceeds the target buffer + * @throws Error if a stream request starts before the current position + */ + normalizeOptions(uint8Array, options) { + const length = options?.length ?? uint8Array.length; + const position = options?.position ?? this.position; + this.validateLength(length, "length"); + this.validateLength(position, "position"); + this.validateLength(position + length, "end position"); + if (length > uint8Array.length) { + throw new RangeError("length must not exceed the target buffer length"); + } + if (!this.supportsRandomAccess() && position < this.position) { + throw new Error("`options.position` must be equal or greater than `tokenizer.position`"); + } + return { length, position, mayBeLess: options?.mayBeLess ?? false }; + } + abort() { + this.removeAbortListener(); + return Promise.resolve(); + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/BlobTokenizer.js +var BlobTokenizer; +var init_BlobTokenizer = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/BlobTokenizer.js"() { + init_AbstractTokenizer(); + init_stream(); + BlobTokenizer = class extends AbstractTokenizer { + static { + __name(this, "BlobTokenizer"); + } + /** + * Construct BufferTokenizer + * @param blob - Uint8Array to tokenize + * @param options Tokenizer options + */ + constructor(blob, options) { + super(options); + this.blob = blob; + this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: blob.size, mimeType: blob.type } }; + } + /** + * Read buffer from tokenizer + * @param uint8Array - Uint8Array to tokenize + * @param options - Read behaviour options + * @returns {Promise} + */ + async readBuffer(uint8Array, options) { + const normOptions = this.normalizeOptions(uint8Array, options); + const bytesRead = await this.peekBuffer(uint8Array, normOptions); + this.position = normOptions.position + bytesRead; + return bytesRead; + } + /** + * Peek (read ahead) buffer from tokenizer + * @param buffer + * @param options - Read behaviour options + * @returns {Promise} + */ + async peekBuffer(buffer, options) { + const normOptions = this.normalizeOptions(buffer, options); + const bytes2read = Math.max(0, Math.min(this.blob.size - normOptions.position, normOptions.length)); + if (!normOptions.mayBeLess && bytes2read < normOptions.length) { + throw new EndOfStreamError(); + } + for (let offset = 0; offset < bytes2read; ) { + const chunkLength = Math.min(this.maxBufferSize, bytes2read - offset); + const position = normOptions.position + offset; + const arrayBuffer = await this.blob.slice(position, position + chunkLength).arrayBuffer(); + buffer.set(new Uint8Array(arrayBuffer), offset); + offset += chunkLength; + } + return bytes2read; + } + close() { + return super.close(); + } + supportsRandomAccess() { + return true; + } + setPosition(position) { + this.position = position; + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/BufferTokenizer.js +var BufferTokenizer; +var init_BufferTokenizer = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/BufferTokenizer.js"() { + init_AbstractTokenizer(); + init_stream(); + BufferTokenizer = class extends AbstractTokenizer { + static { + __name(this, "BufferTokenizer"); + } + /** + * Construct BufferTokenizer + * @param uint8Array - Uint8Array to tokenize + * @param options Tokenizer options + */ + constructor(uint8Array, options) { + super(options); + this.uint8Array = uint8Array; + this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: uint8Array.length } }; + } + /** + * Read buffer from tokenizer + * @param uint8Array - Uint8Array to tokenize + * @param options - Read behaviour options + * @returns {Promise} + */ + async readBuffer(uint8Array, options) { + const normOptions = this.normalizeOptions(uint8Array, options); + const bytesRead = await this.peekBuffer(uint8Array, normOptions); + this.position = normOptions.position + bytesRead; + return bytesRead; + } + /** + * Peek (read ahead) buffer from tokenizer + * @param uint8Array + * @param options - Read behaviour options + * @returns {Promise} + */ + async peekBuffer(uint8Array, options) { + const normOptions = this.normalizeOptions(uint8Array, options); + const bytes2read = Math.max(0, Math.min(this.uint8Array.length - normOptions.position, normOptions.length)); + if (!normOptions.mayBeLess && bytes2read < normOptions.length) { + throw new EndOfStreamError(); + } + uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read)); + return bytes2read; + } + close() { + return super.close(); + } + supportsRandomAccess() { + return true; + } + setPosition(position) { + this.position = position; + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/ReadStreamTokenizer.js +var ignoreChunkSize, ReadStreamTokenizer; +var init_ReadStreamTokenizer = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/ReadStreamTokenizer.js"() { + init_AbstractTokenizer(); + init_stream(); + ignoreChunkSize = 256e3; + ReadStreamTokenizer = class extends AbstractTokenizer { + static { + __name(this, "ReadStreamTokenizer"); + } + /** + * Constructor + * @param streamReader stream-reader to read from + * @param options Tokenizer options + */ + constructor(streamReader, options) { + super(options); + this.streamReader = streamReader; + this.fileInfo = options?.fileInfo ?? {}; + } + /** + * Read buffer from tokenizer + * @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream + * @param options - Read behaviour options + * @returns Promise with number of bytes read + */ + async readBuffer(uint8Array, options) { + const normOptions = this.normalizeOptions(uint8Array, options); + const skipBytes = normOptions.position - this.position; + if (skipBytes > 0) { + await this.ignore(skipBytes); + return this.readBuffer(uint8Array, options); + } + if (skipBytes < 0) { + throw new Error("`options.position` must be equal or greater than `tokenizer.position`"); + } + if (normOptions.length === 0) { + return 0; + } + let bytesRead = 0; + while (bytesRead < normOptions.length) { + const chunkLength = Math.min(this.maxBufferSize, normOptions.length - bytesRead); + const count = await this.streamReader.read(uint8Array.subarray(bytesRead, bytesRead + chunkLength), true); + bytesRead += count; + this.position += count; + if (count < chunkLength) { + break; + } + } + if (!normOptions.mayBeLess && bytesRead < normOptions.length) { + throw new EndOfStreamError(); + } + return bytesRead; + } + /** + * Peek (read ahead) buffer from tokenizer + * @param uint8Array - Uint8Array (or Buffer) to write data to + * @param options - Read behaviour options + * @returns Promise with number of bytes peeked + */ + async peekBuffer(uint8Array, options) { + const normOptions = this.normalizeOptions(uint8Array, options); + if (normOptions.length === 0) { + return 0; + } + const lookaheadSize = normOptions.length + normOptions.position - this.position; + this.validateBufferSize(lookaheadSize); + let bytesRead = 0; + if (normOptions.position) { + const skipBytes = normOptions.position - this.position; + if (skipBytes > 0) { + const skipBuffer = new Uint8Array(normOptions.length + skipBytes); + bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: normOptions.mayBeLess }); + const bytesPeeked = Math.max(0, bytesRead - skipBytes); + uint8Array.set(skipBuffer.subarray(skipBytes, skipBytes + bytesPeeked)); + return bytesPeeked; + } + if (skipBytes < 0) { + throw new Error("Cannot peek from a negative offset in a stream"); + } + } + if (normOptions.length > 0) { + try { + const peekBuffer = new Uint8Array(normOptions.length); + bytesRead = await this.streamReader.peek(peekBuffer, true); + uint8Array.set(peekBuffer.subarray(0, bytesRead)); + } catch (err) { + if (options?.mayBeLess && err instanceof EndOfStreamError) { + return 0; + } + throw err; + } + if (!normOptions.mayBeLess && bytesRead < normOptions.length) { + throw new EndOfStreamError(); + } + } + return bytesRead; + } + /** + * @param length Number of bytes to ignore. Must be ≥ 0. + */ + async ignore(length) { + if (length < 0) { + throw new RangeError("ignore length must be \u2265 0 bytes"); + } + this.validateLength(length, "ignore length"); + this.validateLength(this.position + length, "end position"); + const bufSize = Math.min(ignoreChunkSize, this.maxBufferSize, length); + const buf = new Uint8Array(bufSize); + let totBytesRead = 0; + while (totBytesRead < length) { + const remaining = length - totBytesRead; + const bytesRead = await this.readBuffer(buf, { length: Math.min(bufSize, remaining) }); + if (bytesRead < 0) { + return bytesRead; + } + totBytesRead += bytesRead; + } + return totBytesRead; + } + abort() { + this.removeAbortListener(); + return this.streamReader.abort(); + } + async close() { + this.removeAbortListener(); + return this.streamReader.close(); + } + supportsRandomAccess() { + return false; + } + }; + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/isRandomAccessTokenizer.js +var init_isRandomAccessTokenizer = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/isRandomAccessTokenizer.js"() { + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/TokenizerBoundaryError.js +var init_TokenizerBoundaryError = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/TokenizerBoundaryError.js"() { + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/TokenizerView.js +var init_TokenizerView = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/TokenizerView.js"() { + init_isRandomAccessTokenizer(); + init_stream(); + init_TokenizerBoundaryError(); + } +}); + +// ../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/core.js +function fromWebStream(webStream, options) { + getMaxBufferSize(options); + throwIfAborted(options?.abortSignal); + const webStreamReader = makeWebStreamReader(webStream); + return new ReadStreamTokenizer(webStreamReader, options); +} +function fromBuffer(uint8Array, options) { + return new BufferTokenizer(uint8Array, options); +} +function fromBlob(blob, options) { + return new BlobTokenizer(blob, options); +} +var init_core = __esm({ + "../../node_modules/.pnpm/strtok3@10.6.2/node_modules/strtok3/lib/core.js"() { + init_AbortSignal(); + init_BlobTokenizer(); + init_BufferSizeError(); + init_BufferTokenizer(); + init_ReadStreamTokenizer(); + init_stream(); + init_AbstractTokenizer(); + init_BufferSizeError(); + init_isRandomAccessTokenizer(); + init_stream(); + init_TokenizerBoundaryError(); + init_TokenizerView(); + __name(fromWebStream, "fromWebStream"); + __name(fromBuffer, "fromBuffer"); + __name(fromBlob, "fromBlob"); + } +}); + +// ../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipToken.js +var Signature, DataDescriptor, LocalFileHeaderToken, EndOfCentralDirectoryRecordToken, FileHeader; +var init_ZipToken = __esm({ + "../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipToken.js"() { + init_lib2(); + Signature = { + LocalFileHeader: 67324752, + DataDescriptor: 134695760, + CentralFileHeader: 33639248, + EndOfCentralDirectory: 101010256 + }; + DataDescriptor = { + get(array) { + return { + signature: UINT32_LE.get(array, 0), + compressedSize: UINT32_LE.get(array, 8), + uncompressedSize: UINT32_LE.get(array, 12) + }; + }, + len: 16 + }; + LocalFileHeaderToken = { + get(array) { + const flags = UINT16_LE.get(array, 6); + return { + signature: UINT32_LE.get(array, 0), + minVersion: UINT16_LE.get(array, 4), + dataDescriptor: !!(flags & 8), + compressedMethod: UINT16_LE.get(array, 8), + compressedSize: UINT32_LE.get(array, 18), + uncompressedSize: UINT32_LE.get(array, 22), + filenameLength: UINT16_LE.get(array, 26), + extraFieldLength: UINT16_LE.get(array, 28), + filename: null + }; + }, + len: 30 + }; + EndOfCentralDirectoryRecordToken = { + get(array) { + return { + signature: UINT32_LE.get(array, 0), + nrOfThisDisk: UINT16_LE.get(array, 4), + nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6), + nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8), + nrOfEntriesOfSize: UINT16_LE.get(array, 10), + sizeOfCd: UINT32_LE.get(array, 12), + offsetOfStartOfCd: UINT32_LE.get(array, 16), + zipFileCommentLength: UINT16_LE.get(array, 20) + }; + }, + len: 22 + }; + FileHeader = { + get(array) { + const flags = UINT16_LE.get(array, 8); + return { + signature: UINT32_LE.get(array, 0), + minVersion: UINT16_LE.get(array, 6), + dataDescriptor: !!(flags & 8), + compressedMethod: UINT16_LE.get(array, 10), + compressedSize: UINT32_LE.get(array, 20), + uncompressedSize: UINT32_LE.get(array, 24), + filenameLength: UINT16_LE.get(array, 28), + extraFieldLength: UINT16_LE.get(array, 30), + fileCommentLength: UINT16_LE.get(array, 32), + relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42), + filename: null + }; + }, + len: 46 + }; + } +}); + +// ../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js +function signatureToArray(signature) { + const signatureBytes = new Uint8Array(UINT32_LE.len); + UINT32_LE.put(signatureBytes, 0, signature); + return signatureBytes; +} +function indexOf(buffer, portion) { + const bufferLength = buffer.length; + const portionLength = portion.length; + if (portionLength > bufferLength) + return -1; + for (let i = 0; i <= bufferLength - portionLength; i++) { + let found = true; + for (let j = 0; j < portionLength; j++) { + if (buffer[i + j] !== portion[j]) { + found = false; + break; + } + } + if (found) { + return i; + } + } + return -1; +} +function mergeArrays(chunks) { + const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0); + const mergedArray = new Uint8Array(totalLength); + let offset = 0; + for (const chunk of chunks) { + mergedArray.set(chunk, offset); + offset += chunk.length; + } + return mergedArray; +} +var import_debug, debug, syncBufferSize, ddSignatureArray, eocdSignatureBytes, ZipHandler; +var init_ZipHandler = __esm({ + "../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js"() { + init_lib2(); + import_debug = __toESM(require_src(), 1); + init_ZipToken(); + __name(signatureToArray, "signatureToArray"); + debug = (0, import_debug.default)("tokenizer:inflate"); + syncBufferSize = 256 * 1024; + ddSignatureArray = signatureToArray(Signature.DataDescriptor); + eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory); + ZipHandler = class _ZipHandler { + static { + __name(this, "ZipHandler"); + } + constructor(tokenizer) { + this.tokenizer = tokenizer; + this.syncBuffer = new Uint8Array(syncBufferSize); + } + async isZip() { + return await this.peekSignature() === Signature.LocalFileHeader; + } + peekSignature() { + return this.tokenizer.peekToken(UINT32_LE); + } + async findEndOfCentralDirectoryLocator() { + const randomReadTokenizer = this.tokenizer; + const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size); + const buffer = this.syncBuffer.subarray(0, chunkLength); + await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength }); + for (let i = buffer.length - 4; i >= 0; i--) { + if (buffer[i] === eocdSignatureBytes[0] && buffer[i + 1] === eocdSignatureBytes[1] && buffer[i + 2] === eocdSignatureBytes[2] && buffer[i + 3] === eocdSignatureBytes[3]) { + return randomReadTokenizer.fileInfo.size - chunkLength + i; + } + } + return -1; + } + async readCentralDirectory() { + if (!this.tokenizer.supportsRandomAccess()) { + debug("Cannot reading central-directory without random-read support"); + return; + } + debug("Reading central-directory..."); + const pos = this.tokenizer.position; + const offset = await this.findEndOfCentralDirectoryLocator(); + if (offset > 0) { + debug("Central-directory 32-bit signature found"); + const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset); + const files = []; + this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd); + for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) { + const entry = await this.tokenizer.readToken(FileHeader); + if (entry.signature !== Signature.CentralFileHeader) { + throw new Error("Expected Central-File-Header signature"); + } + entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, "utf-8")); + await this.tokenizer.ignore(entry.extraFieldLength); + await this.tokenizer.ignore(entry.fileCommentLength); + files.push(entry); + debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`); + } + this.tokenizer.setPosition(pos); + return files; + } + this.tokenizer.setPosition(pos); + } + async unzip(fileCb) { + const entries = await this.readCentralDirectory(); + if (entries) { + return this.iterateOverCentralDirectory(entries, fileCb); + } + let stop = false; + do { + const zipHeader = await this.readLocalFileHeader(); + if (!zipHeader) + break; + const next = fileCb(zipHeader); + stop = !!next.stop; + let fileData; + await this.tokenizer.ignore(zipHeader.extraFieldLength); + if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) { + const chunks = []; + let len = syncBufferSize; + debug("Compressed-file-size unknown, scanning for next data-descriptor-signature...."); + let nextHeaderIndex = -1; + while (nextHeaderIndex < 0 && len === syncBufferSize) { + len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true }); + nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray); + const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len; + if (next.handler) { + const data = new Uint8Array(size); + await this.tokenizer.readBuffer(data); + chunks.push(data); + } else { + await this.tokenizer.ignore(size); + } + } + debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`); + if (next.handler) { + await this.inflate(zipHeader, mergeArrays(chunks), next.handler); + } + } else { + if (next.handler) { + debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`); + fileData = new Uint8Array(zipHeader.compressedSize); + await this.tokenizer.readBuffer(fileData); + await this.inflate(zipHeader, fileData, next.handler); + } else { + debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`); + await this.tokenizer.ignore(zipHeader.compressedSize); + } + } + debug(`Reading data-descriptor at pos=${this.tokenizer.position}`); + if (zipHeader.dataDescriptor) { + const dataDescriptor = await this.tokenizer.readToken(DataDescriptor); + if (dataDescriptor.signature !== 134695760) { + throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`); + } + } + } while (!stop); + } + async iterateOverCentralDirectory(entries, fileCb) { + for (const fileHeader of entries) { + const next = fileCb(fileHeader); + if (next.handler) { + this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader); + const zipHeader = await this.readLocalFileHeader(); + if (zipHeader) { + await this.tokenizer.ignore(zipHeader.extraFieldLength); + const fileData = new Uint8Array(fileHeader.compressedSize); + await this.tokenizer.readBuffer(fileData); + await this.inflate(zipHeader, fileData, next.handler); + } + } + if (next.stop) + break; + } + } + async inflate(zipHeader, fileData, cb) { + if (zipHeader.compressedMethod === 0) { + return cb(fileData); + } + if (zipHeader.compressedMethod !== 8) { + throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`); + } + debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`); + const uncompressedData = await _ZipHandler.decompressDeflateRaw(fileData); + return cb(uncompressedData); + } + static async decompressDeflateRaw(data) { + const input = new ReadableStream({ + start(controller) { + controller.enqueue(data); + controller.close(); + } + }); + const ds = new DecompressionStream("deflate-raw"); + const output = input.pipeThrough(ds); + try { + const response = new Response(output); + const buffer = await response.arrayBuffer(); + return new Uint8Array(buffer); + } catch (err) { + const message = err instanceof Error ? `Failed to deflate ZIP entry: ${err.message}` : "Unknown decompression error in ZIP entry"; + throw new TypeError(message); + } + } + async readLocalFileHeader() { + const signature = await this.tokenizer.peekToken(UINT32_LE); + if (signature === Signature.LocalFileHeader) { + const header = await this.tokenizer.readToken(LocalFileHeaderToken); + header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, "utf-8")); + return header; + } + if (signature === Signature.CentralFileHeader) { + return false; + } + if (signature === 3759263696) { + throw new Error("Encrypted ZIP"); + } + throw new Error("Unexpected signature"); + } + }; + __name(indexOf, "indexOf"); + __name(mergeArrays, "mergeArrays"); + } +}); + +// ../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/GzipHandler.js +var GzipHandler; +var init_GzipHandler = __esm({ + "../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/GzipHandler.js"() { + GzipHandler = class { + static { + __name(this, "GzipHandler"); + } + constructor(tokenizer) { + this.tokenizer = tokenizer; + } + inflate() { + const tokenizer = this.tokenizer; + return new ReadableStream({ + async pull(controller) { + const buffer = new Uint8Array(1024); + const size = await tokenizer.readBuffer(buffer, { mayBeLess: true }); + if (size === 0) { + controller.close(); + return; + } + controller.enqueue(buffer.subarray(0, size)); + } + }).pipeThrough(new DecompressionStream("gzip")); + } + }; + } +}); + +// ../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/index.js +var init_lib3 = __esm({ + "../../node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/index.js"() { + init_ZipHandler(); + init_GzipHandler(); + } +}); + +// ../../node_modules/.pnpm/uint8array-extras@1.6.0/node_modules/uint8array-extras/index.js +function isType(value, typeConstructor, typeStringified) { + if (!value) { + return false; + } + if (value.constructor === typeConstructor) { + return true; + } + return objectToString.call(value) === typeStringified; +} +function isUint8Array(value) { + return isType(value, Uint8Array, uint8ArrayStringified); +} +function isArrayBuffer(value) { + return isType(value, ArrayBuffer, arrayBufferStringified); +} +function isUint8ArrayOrArrayBuffer(value) { + return isUint8Array(value) || isArrayBuffer(value); +} +function toUint8ArrayIfArrayBuffer(value) { + return isArrayBuffer(value) ? new Uint8Array(value) : value; +} +function assertUint8ArrayOrArrayBuffer(value) { + if (!isUint8ArrayOrArrayBuffer(value)) { + throw new TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof value}\``); + } +} +function concatUint8Arrays(arrays, totalLength) { + if (arrays.length === 0) { + return new Uint8Array(0); + } + totalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.byteLength, 0); + const returnValue = new Uint8Array(totalLength); + let offset = 0; + for (let array of arrays) { + assertUint8ArrayOrArrayBuffer(array); + array = toUint8ArrayIfArrayBuffer(array); + returnValue.set(array, offset); + offset += array.length; + } + return returnValue; +} +function getUintBE(view) { + const { byteLength } = view; + if (byteLength === 6) { + return view.getUint16(0) * 2 ** 32 + view.getUint32(2); + } + if (byteLength === 5) { + return view.getUint8(0) * 2 ** 32 + view.getUint32(1); + } + if (byteLength === 4) { + return view.getUint32(0); + } + if (byteLength === 3) { + return view.getUint8(0) * 2 ** 16 + view.getUint16(1); + } + if (byteLength === 2) { + return view.getUint16(0); + } + if (byteLength === 1) { + return view.getUint8(0); + } +} +var objectToString, uint8ArrayStringified, arrayBufferStringified, cachedDecoders, cachedEncoder, byteToHexLookupTable; +var init_uint8array_extras = __esm({ + "../../node_modules/.pnpm/uint8array-extras@1.6.0/node_modules/uint8array-extras/index.js"() { + objectToString = Object.prototype.toString; + uint8ArrayStringified = "[object Uint8Array]"; + arrayBufferStringified = "[object ArrayBuffer]"; + __name(isType, "isType"); + __name(isUint8Array, "isUint8Array"); + __name(isArrayBuffer, "isArrayBuffer"); + __name(isUint8ArrayOrArrayBuffer, "isUint8ArrayOrArrayBuffer"); + __name(toUint8ArrayIfArrayBuffer, "toUint8ArrayIfArrayBuffer"); + __name(assertUint8ArrayOrArrayBuffer, "assertUint8ArrayOrArrayBuffer"); + __name(concatUint8Arrays, "concatUint8Arrays"); + cachedDecoders = { + utf8: new globalThis.TextDecoder("utf8") + }; + cachedEncoder = new globalThis.TextEncoder(); + byteToHexLookupTable = Array.from({ length: 256 }, (_, index) => index.toString(16).padStart(2, "0")); + __name(getUintBE, "getUintBE"); + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/tokens.js +function stringToBytes(string, encoding) { + if (encoding === "utf-16le") { + const bytes = []; + for (let index = 0; index < string.length; index++) { + const code = string.charCodeAt(index); + bytes.push(code & 255, code >> 8 & 255); + } + return bytes; + } + if (encoding === "utf-16be") { + const bytes = []; + for (let index = 0; index < string.length; index++) { + const code = string.charCodeAt(index); + bytes.push(code >> 8 & 255, code & 255); + } + return bytes; + } + return [...string].map((character) => character.charCodeAt(0)); +} +function tarHeaderChecksumMatches(arrayBuffer, offset = 0) { + const readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(new RegExp("\\0.*$", "v"), "").trim(), 8); + if (Number.isNaN(readSum)) { + return false; + } + let sum = 8 * 32; + for (let index = offset; index < offset + 148; index++) { + sum += arrayBuffer[index]; + } + for (let index = offset + 156; index < offset + 512; index++) { + sum += arrayBuffer[index]; + } + return readSum === sum; +} +var uint32SyncSafeToken; +var init_tokens = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/tokens.js"() { + init_lib2(); + __name(stringToBytes, "stringToBytes"); + __name(tarHeaderChecksumMatches, "tarHeaderChecksumMatches"); + uint32SyncSafeToken = { + get: /* @__PURE__ */ __name((buffer, offset) => buffer[offset + 3] & 127 | (buffer[offset + 2] & 127) << 7 | (buffer[offset + 1] & 127) << 14 | (buffer[offset] & 127) << 21, "get"), + len: 4 + }; + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/supported.js +var extensions, mimeTypes; +var init_supported = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/supported.js"() { + extensions = [ + "jpg", + "png", + "apng", + "gif", + "webp", + "flif", + "xcf", + "cr2", + "cr3", + "orf", + "arw", + "dng", + "nef", + "rw2", + "raf", + "tif", + "bmp", + "icns", + "jxr", + "psd", + "indd", + "zip", + "tar", + "rar", + "gz", + "bz2", + "7z", + "dmg", + "mp4", + "mid", + "mkv", + "webm", + "mov", + "avi", + "mpg", + "mp2", + "mp3", + "m4a", + "oga", + "ogg", + "ogv", + "opus", + "flac", + "wav", + "spx", + "amr", + "pdf", + "epub", + "elf", + "macho", + "exe", + "swf", + "rtf", + "wasm", + "woff", + "woff2", + "eot", + "ttf", + "otf", + "ttc", + "ico", + "flv", + "ps", + "xz", + "sqlite", + "nes", + "crx", + "xpi", + "cab", + "deb", + "ar", + "rpm", + "Z", + "lz", + "cfb", + "mxf", + "mts", + "blend", + "bpg", + "docx", + "pptx", + "xlsx", + "3gp", + "3g2", + "j2c", + "jp2", + "jpm", + "jpx", + "mj2", + "aif", + "qcp", + "odt", + "ods", + "odp", + "xml", + "mobi", + "heic", + "cur", + "ktx", + "ape", + "wv", + "dcm", + "ics", + "glb", + "pcap", + "dsf", + "lnk", + "alias", + "voc", + "ac3", + "m4v", + "m4p", + "m4b", + "f4v", + "f4p", + "f4b", + "f4a", + "mie", + "asf", + "ogm", + "ogx", + "mpc", + "arrow", + "shp", + "aac", + "mp1", + "it", + "s3m", + "xm", + "skp", + "avif", + "eps", + "lzh", + "pgp", + "asar", + "stl", + "chm", + "3mf", + "zst", + "jxl", + "vcf", + "jls", + "pst", + "dwg", + "parquet", + "class", + "arj", + "cpio", + "ace", + "avro", + "icc", + "fbx", + "vsdx", + "vtt", + "apk", + "drc", + "lz4", + "potx", + "xltx", + "dotx", + "xltm", + "ott", + "ots", + "otp", + "odg", + "otg", + "xlsm", + "docm", + "dotm", + "potm", + "pptm", + "jar", + "jmp", + "rm", + "sav", + "ppsm", + "ppsx", + "tar.gz", + "reg", + "dat", + "key", + "numbers", + "pages", + "iso" + ]; + mimeTypes = [ + "image/jpeg", + "image/png", + "image/gif", + "image/webp", + "image/flif", + "image/x-xcf", + "image/x-canon-cr2", + "image/x-canon-cr3", + "image/tiff", + "image/bmp", + "image/vnd.ms-photo", + "image/vnd.adobe.photoshop", + "application/x-indesign", + "application/epub+zip", + "application/x-xpinstall", + "application/vnd.ms-powerpoint.slideshow.macroenabled.12", + "application/vnd.oasis.opendocument.text", + "application/vnd.oasis.opendocument.spreadsheet", + "application/vnd.oasis.opendocument.presentation", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "application/vnd.openxmlformats-officedocument.presentationml.presentation", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "application/vnd.openxmlformats-officedocument.presentationml.slideshow", + "application/zip", + "application/x-tar", + "application/x-rar-compressed", + "application/gzip", + "application/x-bzip2", + "application/x-7z-compressed", + "application/x-apple-diskimage", + "application/vnd.apache.arrow.file", + "video/mp4", + "audio/midi", + "video/matroska", + "video/webm", + "video/quicktime", + "video/vnd.avi", + "audio/wav", + "audio/qcelp", + "audio/x-ms-asf", + "video/x-ms-asf", + "application/vnd.ms-asf", + "video/mpeg", + "video/3gpp", + "audio/mpeg", + "audio/mp4", + // RFC 4337 + "video/ogg", + "audio/ogg", + "audio/ogg; codecs=opus", + "application/ogg", + "audio/flac", + "audio/ape", + "audio/wavpack", + "audio/amr", + "application/pdf", + "application/x-elf", + "application/x-mach-binary", + "application/x-msdownload", + "application/x-shockwave-flash", + "application/rtf", + "application/wasm", + "font/woff", + "font/woff2", + "application/vnd.ms-fontobject", + "font/ttf", + "font/otf", + "font/collection", + "image/x-icon", + "video/x-flv", + "application/postscript", + "application/eps", + "application/x-xz", + "application/x-sqlite3", + "application/x-nintendo-nes-rom", + "application/x-google-chrome-extension", + "application/vnd.ms-cab-compressed", + "application/x-deb", + "application/x-unix-archive", + "application/x-rpm", + "application/x-compress", + "application/lzip", + "application/x-cfb", + "application/x-mie", + "application/mxf", + "video/mp2t", + "application/x-blender", + "image/bpg", + "image/j2c", + "image/jp2", + "image/jpx", + "image/jpm", + "image/mj2", + "audio/aiff", + "application/xml", + "application/x-mobipocket-ebook", + "image/heif", + "image/heif-sequence", + "image/heic", + "image/heic-sequence", + "image/icns", + "image/ktx", + "application/dicom", + "audio/x-musepack", + "text/calendar", + "text/vcard", + "text/vtt", + "model/gltf-binary", + "application/vnd.tcpdump.pcap", + "audio/x-dsf", + // Non-standard + "application/x-ms-shortcut", + // Informal, used by freedesktop.org shared-mime-info + "application/x-ft-apple.alias", + "audio/x-voc", + "audio/vnd.dolby.dd-raw", + "audio/x-m4a", + "image/apng", + "image/x-olympus-orf", + "image/x-sony-arw", + "image/x-adobe-dng", + "image/x-nikon-nef", + "image/x-panasonic-rw2", + "image/x-fujifilm-raf", + "video/x-m4v", + "video/3gpp2", + "application/x-esri-shape", + "audio/aac", + "audio/x-it", + "audio/x-s3m", + "audio/x-xm", + "video/MP1S", + "video/MP2P", + "application/vnd.sketchup.skp", + "image/avif", + "application/x-lzh-compressed", + "application/pgp-encrypted", + "application/x-asar", + "model/stl", + "application/vnd.ms-htmlhelp", + "model/3mf", + "image/jxl", + "application/zstd", + "image/jls", + "application/vnd.ms-outlook", + "image/vnd.dwg", + "application/vnd.apache.parquet", + "application/java-vm", + "application/x-arj", + "application/x-cpio", + "application/x-ace-compressed", + "application/avro", + "application/vnd.iccprofile", + "application/x-ft-fbx", + "application/vnd.visio", + "application/vnd.android.package-archive", + "application/x-ft-draco", + "application/x-lz4", + // Informal, used by freedesktop.org shared-mime-info + "application/vnd.openxmlformats-officedocument.presentationml.template", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template", + "application/vnd.openxmlformats-officedocument.wordprocessingml.template", + "application/vnd.ms-excel.template.macroenabled.12", + "application/vnd.oasis.opendocument.text-template", + "application/vnd.oasis.opendocument.spreadsheet-template", + "application/vnd.oasis.opendocument.presentation-template", + "application/vnd.oasis.opendocument.graphics", + "application/vnd.oasis.opendocument.graphics-template", + "application/vnd.ms-excel.sheet.macroenabled.12", + "application/vnd.ms-word.document.macroenabled.12", + "application/vnd.ms-word.template.macroenabled.12", + "application/vnd.ms-powerpoint.template.macroenabled.12", + "application/vnd.ms-powerpoint.presentation.macroenabled.12", + "application/java-archive", + "application/vnd.rn-realmedia", + "application/x-spss-sav", + "application/x-ms-regedit", + "application/x-ft-windows-registry-hive", + "application/x-jmp-data", + "application/vnd.apple.keynote", + "application/vnd.apple.numbers", + "application/vnd.apple.pages", + "application/x-iso9660-image" + ]; + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/parser.js +function getSafeBound(value, maximum, reason) { + if (!Number.isFinite(value) || value < 0 || value > maximum) { + throw new ParserHardLimitError(`${reason} has invalid size ${value} (maximum ${maximum} bytes)`); + } + return value; +} +async function safeIgnore(tokenizer, length, { maximumLength = maximumUntrustedSkipSizeInBytes, reason = "skip" } = {}) { + const safeLength = getSafeBound(length, maximumLength, reason); + await tokenizer.ignore(safeLength); +} +async function safeReadBuffer(tokenizer, buffer, options, { maximumLength = buffer.length, reason = "read" } = {}) { + const length = options?.length ?? buffer.length; + const safeLength = getSafeBound(length, maximumLength, reason); + return tokenizer.readBuffer(buffer, { + ...options, + length: safeLength + }); +} +function checkBytes(buffer, headers, options) { + options = { + offset: 0, + ...options + }; + for (const [index, header] of headers.entries()) { + if (options.mask) { + if (header !== (options.mask[index] & buffer[index + options.offset])) { + return false; + } + } else if (header !== buffer[index + options.offset]) { + return false; + } + } + return true; +} +function hasUnknownFileSize(tokenizer) { + const fileSize = tokenizer.fileInfo.size; + return !Number.isFinite(fileSize) || fileSize === Number.MAX_SAFE_INTEGER; +} +function hasExceededUnknownSizeScanBudget(tokenizer, startOffset, maximumBytes) { + return hasUnknownFileSize(tokenizer) && tokenizer.position - startOffset > maximumBytes; +} +var maximumUntrustedSkipSizeInBytes, ParserHardLimitError; +var init_parser = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/parser.js"() { + maximumUntrustedSkipSizeInBytes = 16 * 1024 * 1024; + ParserHardLimitError = class extends Error { + static { + __name(this, "ParserHardLimitError"); + } + }; + __name(getSafeBound, "getSafeBound"); + __name(safeIgnore, "safeIgnore"); + __name(safeReadBuffer, "safeReadBuffer"); + __name(checkBytes, "checkBytes"); + __name(hasUnknownFileSize, "hasUnknownFileSize"); + __name(hasExceededUnknownSizeScanBudget, "hasExceededUnknownSizeScanBudget"); + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/zip.js +async function decompressDeflateRawWithLimit(data, { maximumLength = maximumZipEntrySizeInBytes } = {}) { + const input = new ReadableStream({ + start(controller) { + controller.enqueue(data); + controller.close(); + } + }); + const output = input.pipeThrough(new DecompressionStream("deflate-raw")); + const reader = output.getReader(); + const chunks = []; + let totalLength = 0; + try { + for (; ; ) { + const { done, value } = await reader.read(); + if (done) { + break; + } + totalLength += value.length; + if (totalLength > maximumLength) { + await reader.cancel().catch(() => { + }); + throw new Error(`ZIP entry decompressed data exceeds ${maximumLength} bytes`); + } + chunks.push(value); + } + } catch (error) { + if (error.code !== "ERR_TRAILING_JUNK_AFTER_STREAM_END") { + throw error; + } + } finally { + reader.releaseLock(); + } + const uncompressedData = new Uint8Array(totalLength); + let offset = 0; + for (const chunk of chunks) { + uncompressedData.set(chunk, offset); + offset += chunk.length; + } + return uncompressedData; +} +function mergeByteChunks(chunks, totalLength) { + const merged = new Uint8Array(totalLength); + let offset = 0; + for (const chunk of chunks) { + merged.set(chunk, offset); + offset += chunk.length; + } + return merged; +} +function getMaximumZipBufferedReadLength(tokenizer) { + const fileSize = tokenizer.fileInfo.size; + const remainingBytes = Number.isFinite(fileSize) ? Math.max(0, fileSize - tokenizer.position) : Number.MAX_SAFE_INTEGER; + return Math.min(remainingBytes, maximumZipBufferedReadSizeInBytes); +} +function isRecoverableZipError(error) { + if (error instanceof EndOfStreamError) { + return true; + } + if (error instanceof ParserHardLimitError) { + return true; + } + if (!(error instanceof Error)) { + return false; + } + if (recoverableZipErrorMessages.has(error.message)) { + return true; + } + if (recoverableZipErrorCodes.has(error.code)) { + return true; + } + for (const prefix of recoverableZipErrorMessagePrefixes) { + if (error.message.startsWith(prefix)) { + return true; + } + } + return false; +} +function canReadZipEntryForDetection(zipHeader, maximumSize = maximumZipEntrySizeInBytes) { + const sizes = [zipHeader.compressedSize, zipHeader.uncompressedSize]; + for (const size of sizes) { + if (!Number.isFinite(size) || size < 0 || size > maximumSize) { + return false; + } + } + return true; +} +function createIWorkZipDetectionState() { + return { + hasDocumentEntry: false, + hasMasterSlideEntry: false, + hasTablesEntry: false, + hasCalculationEngineEntry: false + }; +} +function updateIWorkZipDetectionStateFromFilename(iWorkState, filename) { + if (filename === "Index/Document.iwa") { + iWorkState.hasDocumentEntry = true; + } + if (filename.startsWith("Index/MasterSlide")) { + iWorkState.hasMasterSlideEntry = true; + } + if (filename.startsWith("Index/Tables/")) { + iWorkState.hasTablesEntry = true; + } + if (filename === "Index/CalculationEngine.iwa") { + iWorkState.hasCalculationEngineEntry = true; + } +} +function getIWorkFileTypeFromZipEntries(iWorkState) { + if (!iWorkState.hasDocumentEntry) { + return; + } + if (iWorkState.hasMasterSlideEntry) { + return { ext: "key", mime: "application/vnd.apple.keynote" }; + } + if (iWorkState.hasTablesEntry) { + return { ext: "numbers", mime: "application/vnd.apple.numbers" }; + } + return { ext: "pages", mime: "application/vnd.apple.pages" }; +} +function getFileTypeFromMimeType(mimeType) { + mimeType = mimeType.toLowerCase(); + switch (mimeType) { + case "application/epub+zip": + return { ext: "epub", mime: mimeType }; + case "application/vnd.oasis.opendocument.text": + return { ext: "odt", mime: mimeType }; + case "application/vnd.oasis.opendocument.text-template": + return { ext: "ott", mime: mimeType }; + case "application/vnd.oasis.opendocument.spreadsheet": + return { ext: "ods", mime: mimeType }; + case "application/vnd.oasis.opendocument.spreadsheet-template": + return { ext: "ots", mime: mimeType }; + case "application/vnd.oasis.opendocument.presentation": + return { ext: "odp", mime: mimeType }; + case "application/vnd.oasis.opendocument.presentation-template": + return { ext: "otp", mime: mimeType }; + case "application/vnd.oasis.opendocument.graphics": + return { ext: "odg", mime: mimeType }; + case "application/vnd.oasis.opendocument.graphics-template": + return { ext: "otg", mime: mimeType }; + case "application/vnd.openxmlformats-officedocument.presentationml.slideshow": + return { ext: "ppsx", mime: mimeType }; + case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": + return { ext: "xlsx", mime: mimeType }; + case "application/vnd.ms-excel.sheet.macroenabled": + return { ext: "xlsm", mime: "application/vnd.ms-excel.sheet.macroenabled.12" }; + case "application/vnd.openxmlformats-officedocument.spreadsheetml.template": + return { ext: "xltx", mime: mimeType }; + case "application/vnd.ms-excel.template.macroenabled": + return { ext: "xltm", mime: "application/vnd.ms-excel.template.macroenabled.12" }; + case "application/vnd.ms-powerpoint.slideshow.macroenabled": + return { ext: "ppsm", mime: "application/vnd.ms-powerpoint.slideshow.macroenabled.12" }; + case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": + return { ext: "docx", mime: mimeType }; + case "application/vnd.ms-word.document.macroenabled": + return { ext: "docm", mime: "application/vnd.ms-word.document.macroenabled.12" }; + case "application/vnd.openxmlformats-officedocument.wordprocessingml.template": + return { ext: "dotx", mime: mimeType }; + case "application/vnd.ms-word.template.macroenabledtemplate": + return { ext: "dotm", mime: "application/vnd.ms-word.template.macroenabled.12" }; + case "application/vnd.openxmlformats-officedocument.presentationml.template": + return { ext: "potx", mime: mimeType }; + case "application/vnd.ms-powerpoint.template.macroenabled": + return { ext: "potm", mime: "application/vnd.ms-powerpoint.template.macroenabled.12" }; + case "application/vnd.openxmlformats-officedocument.presentationml.presentation": + return { ext: "pptx", mime: mimeType }; + case "application/vnd.ms-powerpoint.presentation.macroenabled": + return { ext: "pptm", mime: "application/vnd.ms-powerpoint.presentation.macroenabled.12" }; + case "application/vnd.ms-visio.drawing": + return { ext: "vsdx", mime: "application/vnd.visio" }; + case "application/vnd.ms-package.3dmanufacturing-3dmodel+xml": + return { ext: "3mf", mime: "model/3mf" }; + default: + } +} +function createOpenXmlZipDetectionState() { + return { + hasContentTypesEntry: false, + hasParsedContentTypesEntry: false, + isParsingContentTypes: false, + hasUnparseableContentTypes: false, + hasWordDirectory: false, + hasPresentationDirectory: false, + hasSpreadsheetDirectory: false, + hasThreeDimensionalModelEntry: false + }; +} +function updateOpenXmlZipDetectionStateFromFilename(openXmlState, filename) { + if (filename.startsWith("word/")) { + openXmlState.hasWordDirectory = true; + } + if (filename.startsWith("ppt/")) { + openXmlState.hasPresentationDirectory = true; + } + if (filename.startsWith("xl/")) { + openXmlState.hasSpreadsheetDirectory = true; + } + if (filename.startsWith("3D/") && filename.endsWith(".model")) { + openXmlState.hasThreeDimensionalModelEntry = true; + } +} +function getOpenXmlFileTypeFromDirectoryNames(openXmlState) { + if (openXmlState.hasWordDirectory) { + return { + ext: "docx", + mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + }; + } + if (openXmlState.hasPresentationDirectory) { + return { + ext: "pptx", + mime: "application/vnd.openxmlformats-officedocument.presentationml.presentation" + }; + } + if (openXmlState.hasSpreadsheetDirectory) { + return { + ext: "xlsx", + mime: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + }; + } + if (openXmlState.hasThreeDimensionalModelEntry) { + return { + ext: "3mf", + mime: "model/3mf" + }; + } +} +function getOpenXmlFileTypeFromZipEntries(openXmlState) { + if (!openXmlState.hasContentTypesEntry || openXmlState.hasUnparseableContentTypes || openXmlState.isParsingContentTypes || openXmlState.hasParsedContentTypesEntry) { + return; + } + return getOpenXmlFileTypeFromDirectoryNames(openXmlState); +} +function getOpenXmlMimeTypeFromContentTypesXml(xmlContent) { + const endPosition = xmlContent.indexOf('.main+xml"'); + if (endPosition === -1) { + const mimeType = "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"; + if (xmlContent.includes(`ContentType="${mimeType}"`)) { + return mimeType; + } + return; + } + const truncatedContent = xmlContent.slice(0, endPosition); + const firstQuotePosition = truncatedContent.lastIndexOf('"'); + return truncatedContent.slice(firstQuotePosition + 1); +} +function findZipDataDescriptorOffset(buffer, bytesConsumed) { + if (buffer.length < zipDataDescriptorLengthInBytes) { + return -1; + } + const lastPossibleDescriptorOffset = buffer.length - zipDataDescriptorLengthInBytes; + for (let index = 0; index <= lastPossibleDescriptorOffset; index++) { + if (UINT32_LE.get(buffer, index) === zipDataDescriptorSignature && UINT32_LE.get(buffer, index + 8) === bytesConsumed + index) { + return index; + } + } + return -1; +} +async function readZipDataDescriptorEntryWithLimit(zipHandler, { shouldBuffer, maximumLength = maximumZipEntrySizeInBytes } = {}) { + const { syncBuffer } = zipHandler; + const { length: syncBufferLength } = syncBuffer; + const chunks = []; + let bytesConsumed = 0; + for (; ; ) { + const length = await zipHandler.tokenizer.peekBuffer(syncBuffer, { mayBeLess: true }); + const dataDescriptorOffset = findZipDataDescriptorOffset(syncBuffer.subarray(0, length), bytesConsumed); + const retainedLength = dataDescriptorOffset >= 0 ? 0 : length === syncBufferLength ? Math.min(zipDataDescriptorOverlapLengthInBytes, length - 1) : 0; + const chunkLength = dataDescriptorOffset >= 0 ? dataDescriptorOffset : length - retainedLength; + if (chunkLength === 0) { + break; + } + bytesConsumed += chunkLength; + if (bytesConsumed > maximumLength) { + throw new ParserHardLimitError(`ZIP entry data descriptor not found within ${maximumLength} bytes`); + } + if (shouldBuffer) { + const data = new Uint8Array(chunkLength); + await zipHandler.tokenizer.readBuffer(data); + chunks.push(data); + } else { + await zipHandler.tokenizer.ignore(chunkLength); + } + if (dataDescriptorOffset >= 0) { + break; + } + } + if (!hasUnknownFileSize(zipHandler.tokenizer)) { + zipHandler.knownSizeDescriptorScannedBytes += bytesConsumed; + } + if (!shouldBuffer) { + return; + } + return mergeByteChunks(chunks, bytesConsumed); +} +function getRemainingZipScanBudget(zipHandler, startOffset) { + if (hasUnknownFileSize(zipHandler.tokenizer)) { + return Math.max(0, maximumUntrustedSkipSizeInBytes - (zipHandler.tokenizer.position - startOffset)); + } + return Math.max(0, maximumZipEntrySizeInBytes - zipHandler.knownSizeDescriptorScannedBytes); +} +async function readZipEntryData(zipHandler, zipHeader, { shouldBuffer, maximumDescriptorLength = maximumZipEntrySizeInBytes } = {}) { + if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) { + return readZipDataDescriptorEntryWithLimit(zipHandler, { + shouldBuffer, + maximumLength: maximumDescriptorLength + }); + } + if (!shouldBuffer) { + await safeIgnore(zipHandler.tokenizer, zipHeader.compressedSize, { + maximumLength: hasUnknownFileSize(zipHandler.tokenizer) ? maximumZipEntrySizeInBytes : zipHandler.tokenizer.fileInfo.size, + reason: "ZIP entry compressed data" + }); + return; + } + const maximumLength = getMaximumZipBufferedReadLength(zipHandler.tokenizer); + if (!Number.isFinite(zipHeader.compressedSize) || zipHeader.compressedSize < 0 || zipHeader.compressedSize > maximumLength) { + throw new Error(`ZIP entry compressed data exceeds ${maximumLength} bytes`); + } + const fileData = new Uint8Array(zipHeader.compressedSize); + await zipHandler.tokenizer.readBuffer(fileData); + return fileData; +} +async function detectZip(tokenizer) { + let fileType; + const openXmlState = createOpenXmlZipDetectionState(); + const iWorkState = createIWorkZipDetectionState(); + try { + await new ZipHandler(tokenizer).unzip((zipHeader) => { + updateOpenXmlZipDetectionStateFromFilename(openXmlState, zipHeader.filename); + updateIWorkZipDetectionStateFromFilename(iWorkState, zipHeader.filename); + if (iWorkState.hasDocumentEntry && (iWorkState.hasMasterSlideEntry || iWorkState.hasTablesEntry)) { + fileType = getIWorkFileTypeFromZipEntries(iWorkState); + return { stop: true }; + } + const isOpenXmlContentTypesEntry = zipHeader.filename === "[Content_Types].xml"; + const openXmlFileTypeFromEntries = getOpenXmlFileTypeFromZipEntries(openXmlState); + if (!isOpenXmlContentTypesEntry && openXmlFileTypeFromEntries) { + fileType = openXmlFileTypeFromEntries; + return { + stop: true + }; + } + switch (zipHeader.filename) { + case "META-INF/mozilla.rsa": + fileType = { + ext: "xpi", + mime: "application/x-xpinstall" + }; + return { + stop: true + }; + case "META-INF/MANIFEST.MF": + fileType = { + ext: "jar", + mime: "application/java-archive" + }; + return { + stop: true + }; + case "mimetype": + if (!canReadZipEntryForDetection(zipHeader, maximumZipTextEntrySizeInBytes)) { + return {}; + } + return { + async handler(fileData) { + const mimeType = new TextDecoder("utf-8").decode(fileData).trim(); + fileType = getFileTypeFromMimeType(mimeType); + }, + stop: true + }; + case "[Content_Types].xml": { + openXmlState.hasContentTypesEntry = true; + if (!canReadZipEntryForDetection(zipHeader, maximumZipTextEntrySizeInBytes)) { + openXmlState.hasUnparseableContentTypes = true; + return {}; + } + openXmlState.isParsingContentTypes = true; + return { + async handler(fileData) { + const xmlContent = new TextDecoder("utf-8").decode(fileData); + const mimeType = getOpenXmlMimeTypeFromContentTypesXml(xmlContent); + if (mimeType) { + fileType = getFileTypeFromMimeType(mimeType); + } + openXmlState.hasParsedContentTypesEntry = true; + openXmlState.isParsingContentTypes = false; + }, + stop: true + }; + } + default: + if (new RegExp("classes\\d*\\.dex", "v").test(zipHeader.filename)) { + fileType = { + ext: "apk", + mime: "application/vnd.android.package-archive" + }; + return { stop: true }; + } + return {}; + } + }); + } catch (error) { + if (!isRecoverableZipError(error)) { + throw error; + } + if (openXmlState.isParsingContentTypes) { + openXmlState.isParsingContentTypes = false; + openXmlState.hasUnparseableContentTypes = true; + } + if (!fileType && (error instanceof EndOfStreamError || error instanceof ParserHardLimitError) && !openXmlState.hasContentTypesEntry) { + fileType = getOpenXmlFileTypeFromDirectoryNames(openXmlState); + } + } + const iWorkFileType = hasUnknownFileSize(tokenizer) && iWorkState.hasDocumentEntry && !iWorkState.hasMasterSlideEntry && !iWorkState.hasTablesEntry && !iWorkState.hasCalculationEngineEntry ? void 0 : getIWorkFileTypeFromZipEntries(iWorkState); + return fileType ?? getOpenXmlFileTypeFromZipEntries(openXmlState) ?? iWorkFileType ?? { + ext: "zip", + mime: "application/zip" + }; +} +var maximumZipEntrySizeInBytes, maximumZipEntryCount, maximumZipBufferedReadSizeInBytes, maximumZipTextEntrySizeInBytes, recoverableZipErrorMessages, recoverableZipErrorMessagePrefixes, recoverableZipErrorCodes, zipDataDescriptorSignature, zipDataDescriptorLengthInBytes, zipDataDescriptorOverlapLengthInBytes; +var init_zip = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/zip.js"() { + init_lib2(); + init_core(); + init_lib3(); + init_parser(); + maximumZipEntrySizeInBytes = 1024 * 1024; + maximumZipEntryCount = 1024; + maximumZipBufferedReadSizeInBytes = 2 ** 31 - 1; + maximumZipTextEntrySizeInBytes = maximumZipEntrySizeInBytes; + recoverableZipErrorMessages = /* @__PURE__ */ new Set([ + "Unexpected signature", + "Encrypted ZIP", + "Expected Central-File-Header signature" + ]); + recoverableZipErrorMessagePrefixes = [ + "ZIP entry count exceeds ", + "Unsupported ZIP compression method:", + "ZIP entry compressed data exceeds ", + "ZIP entry decompressed data exceeds ", + "Expected data-descriptor-signature at position " + ]; + recoverableZipErrorCodes = /* @__PURE__ */ new Set([ + "Z_BUF_ERROR", + "Z_DATA_ERROR", + "ERR_INVALID_STATE" + ]); + __name(decompressDeflateRawWithLimit, "decompressDeflateRawWithLimit"); + __name(mergeByteChunks, "mergeByteChunks"); + __name(getMaximumZipBufferedReadLength, "getMaximumZipBufferedReadLength"); + __name(isRecoverableZipError, "isRecoverableZipError"); + __name(canReadZipEntryForDetection, "canReadZipEntryForDetection"); + __name(createIWorkZipDetectionState, "createIWorkZipDetectionState"); + __name(updateIWorkZipDetectionStateFromFilename, "updateIWorkZipDetectionStateFromFilename"); + __name(getIWorkFileTypeFromZipEntries, "getIWorkFileTypeFromZipEntries"); + __name(getFileTypeFromMimeType, "getFileTypeFromMimeType"); + __name(createOpenXmlZipDetectionState, "createOpenXmlZipDetectionState"); + __name(updateOpenXmlZipDetectionStateFromFilename, "updateOpenXmlZipDetectionStateFromFilename"); + __name(getOpenXmlFileTypeFromDirectoryNames, "getOpenXmlFileTypeFromDirectoryNames"); + __name(getOpenXmlFileTypeFromZipEntries, "getOpenXmlFileTypeFromZipEntries"); + __name(getOpenXmlMimeTypeFromContentTypesXml, "getOpenXmlMimeTypeFromContentTypesXml"); + zipDataDescriptorSignature = 134695760; + zipDataDescriptorLengthInBytes = 16; + zipDataDescriptorOverlapLengthInBytes = zipDataDescriptorLengthInBytes - 1; + __name(findZipDataDescriptorOffset, "findZipDataDescriptorOffset"); + __name(readZipDataDescriptorEntryWithLimit, "readZipDataDescriptorEntryWithLimit"); + __name(getRemainingZipScanBudget, "getRemainingZipScanBudget"); + __name(readZipEntryData, "readZipEntryData"); + ZipHandler.prototype.inflate = async function(zipHeader, fileData, callback) { + if (zipHeader.compressedMethod === 0) { + return callback(fileData); + } + if (zipHeader.compressedMethod !== 8) { + throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`); + } + const uncompressedData = await decompressDeflateRawWithLimit(fileData, { maximumLength: maximumZipEntrySizeInBytes }); + return callback(uncompressedData); + }; + ZipHandler.prototype.unzip = async function(fileCallback) { + let stop = false; + let zipEntryCount = 0; + const zipScanStart = this.tokenizer.position; + this.knownSizeDescriptorScannedBytes = 0; + do { + if (hasExceededUnknownSizeScanBudget(this.tokenizer, zipScanStart, maximumUntrustedSkipSizeInBytes)) { + throw new ParserHardLimitError(`ZIP stream probing exceeds ${maximumUntrustedSkipSizeInBytes} bytes`); + } + const zipHeader = await this.readLocalFileHeader(); + if (!zipHeader) { + break; + } + zipEntryCount++; + if (zipEntryCount > maximumZipEntryCount) { + throw new Error(`ZIP entry count exceeds ${maximumZipEntryCount}`); + } + const next = fileCallback(zipHeader); + stop = Boolean(next.stop); + await this.tokenizer.ignore(zipHeader.extraFieldLength); + const fileData = await readZipEntryData(this, zipHeader, { + shouldBuffer: Boolean(next.handler), + maximumDescriptorLength: Math.min(maximumZipEntrySizeInBytes, getRemainingZipScanBudget(this, zipScanStart)) + }); + if (next.handler) { + await this.inflate(zipHeader, fileData, next.handler); + } + if (zipHeader.dataDescriptor) { + const dataDescriptor = new Uint8Array(zipDataDescriptorLengthInBytes); + await this.tokenizer.readBuffer(dataDescriptor); + if (UINT32_LE.get(dataDescriptor, 0) !== zipDataDescriptorSignature) { + throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - dataDescriptor.length}`); + } + } + if (hasExceededUnknownSizeScanBudget(this.tokenizer, zipScanStart, maximumUntrustedSkipSizeInBytes)) { + throw new ParserHardLimitError(`ZIP stream probing exceeds ${maximumUntrustedSkipSizeInBytes} bytes`); + } + } while (!stop); + }; + __name(detectZip, "detectZip"); + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/ebml.js +async function detectEbml(tokenizer) { + async function readField() { + const msb = await tokenizer.peekNumber(UINT8); + let mask = 128; + let ic = 0; + while ((msb & mask) === 0 && mask !== 0) { + ++ic; + mask >>= 1; + } + const id = new Uint8Array(ic + 1); + await safeReadBuffer(tokenizer, id, void 0, { + maximumLength: id.length, + reason: "EBML field" + }); + return id; + } + __name(readField, "readField"); + async function readElement() { + const idField = await readField(); + const lengthField = await readField(); + lengthField[0] ^= 128 >> lengthField.length - 1; + const nrLength = Math.min(6, lengthField.length); + const idView = new DataView(idField.buffer); + const lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength); + return { + id: getUintBE(idView), + len: getUintBE(lengthView) + }; + } + __name(readElement, "readElement"); + async function readChildren(children) { + let ebmlElementCount = 0; + while (children > 0) { + ebmlElementCount++; + if (ebmlElementCount > maximumEbmlElementCount) { + return; + } + if (hasExceededUnknownSizeScanBudget(tokenizer, ebmlScanStart, maximumUntrustedSkipSizeInBytes)) { + return; + } + const previousPosition = tokenizer.position; + const element = await readElement(); + if (element.id === 17026) { + if (element.len > maximumEbmlDocumentTypeSizeInBytes) { + return; + } + const documentTypeLength = getSafeBound(element.len, maximumEbmlDocumentTypeSizeInBytes, "EBML DocType"); + const rawValue = await tokenizer.readToken(new StringType(documentTypeLength)); + return rawValue.replaceAll(new RegExp("\\0.*$", "gv"), ""); + } + if (hasUnknownFileSize(tokenizer) && (!Number.isFinite(element.len) || element.len < 0 || element.len > maximumEbmlElementPayloadSizeInBytes)) { + return; + } + await safeIgnore(tokenizer, element.len, { + maximumLength: hasUnknownFileSize(tokenizer) ? maximumEbmlElementPayloadSizeInBytes : tokenizer.fileInfo.size, + reason: "EBML payload" + }); + --children; + if (tokenizer.position <= previousPosition) { + return; + } + } + } + __name(readChildren, "readChildren"); + const rootElement = await readElement(); + const ebmlScanStart = tokenizer.position; + const documentType = await readChildren(rootElement.len); + switch (documentType) { + case "webm": + return { + ext: "webm", + mime: "video/webm" + }; + case "matroska": + return { + ext: "mkv", + mime: "video/matroska" + }; + default: + } +} +var maximumEbmlDocumentTypeSizeInBytes, maximumEbmlElementPayloadSizeInBytes, maximumEbmlElementCount; +var init_ebml = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/ebml.js"() { + init_lib2(); + init_uint8array_extras(); + init_parser(); + maximumEbmlDocumentTypeSizeInBytes = 64; + maximumEbmlElementPayloadSizeInBytes = 1024 * 1024; + maximumEbmlElementCount = 256; + __name(detectEbml, "detectEbml"); + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/png.js +function isPngAncillaryChunk(type) { + return (type.codePointAt(0) & 32) !== 0; +} +async function detectPng(tokenizer) { + const pngFileType = { + ext: "png", + mime: "image/png" + }; + const apngFileType = { + ext: "apng", + mime: "image/apng" + }; + await tokenizer.ignore(8); + async function readChunkHeader() { + return { + length: await tokenizer.readToken(INT32_BE), + type: await tokenizer.readToken(new StringType(4, "latin1")) + }; + } + __name(readChunkHeader, "readChunkHeader"); + const isUnknownPngStream = hasUnknownFileSize(tokenizer); + const pngScanStart = tokenizer.position; + let pngChunkCount = 0; + let hasSeenImageHeader = false; + do { + pngChunkCount++; + if (pngChunkCount > maximumPngChunkCount) { + break; + } + if (hasExceededUnknownSizeScanBudget(tokenizer, pngScanStart, maximumPngStreamScanBudgetInBytes)) { + break; + } + const previousPosition = tokenizer.position; + const chunk = await readChunkHeader(); + if (chunk.length < 0) { + return; + } + if (chunk.type === "IHDR") { + if (chunk.length !== 13) { + return; + } + hasSeenImageHeader = true; + } + switch (chunk.type) { + case "IDAT": + return pngFileType; + case "acTL": + return apngFileType; + default: + if (!hasSeenImageHeader && chunk.type !== "CgBI") { + return; + } + if (isUnknownPngStream && chunk.length > maximumPngChunkSizeInBytes) { + return hasSeenImageHeader && isPngAncillaryChunk(chunk.type) ? pngFileType : void 0; + } + try { + await safeIgnore(tokenizer, chunk.length + 4, { + maximumLength: isUnknownPngStream ? maximumPngChunkSizeInBytes + 4 : tokenizer.fileInfo.size, + reason: "PNG chunk payload" + }); + } catch (error) { + if (!isUnknownPngStream && (error instanceof ParserHardLimitError || error instanceof EndOfStreamError)) { + return pngFileType; + } + throw error; + } + } + if (tokenizer.position <= previousPosition) { + break; + } + } while (tokenizer.position + 8 < tokenizer.fileInfo.size); + return pngFileType; +} +var maximumPngChunkCount, maximumPngStreamScanBudgetInBytes, maximumPngChunkSizeInBytes; +var init_png = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/png.js"() { + init_lib2(); + init_core(); + init_parser(); + maximumPngChunkCount = 512; + maximumPngStreamScanBudgetInBytes = 16 * 1024 * 1024; + maximumPngChunkSizeInBytes = 1024 * 1024; + __name(isPngAncillaryChunk, "isPngAncillaryChunk"); + __name(detectPng, "detectPng"); + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/asf.js +async function detectAsf(tokenizer) { + let isMalformedAsf = false; + try { + async function readHeader() { + const guid = new Uint8Array(16); + await safeReadBuffer(tokenizer, guid, void 0, { + maximumLength: guid.length, + reason: "ASF header GUID" + }); + return { + id: guid, + size: Number(await tokenizer.readToken(UINT64_LE)) + }; + } + __name(readHeader, "readHeader"); + await safeIgnore(tokenizer, 30, { + maximumLength: 30, + reason: "ASF header prelude" + }); + const isUnknownFileSize = hasUnknownFileSize(tokenizer); + const asfHeaderScanStart = tokenizer.position; + let asfHeaderObjectCount = 0; + while (tokenizer.position + 24 < tokenizer.fileInfo.size) { + asfHeaderObjectCount++; + if (asfHeaderObjectCount > maximumAsfHeaderObjectCount) { + break; + } + if (hasExceededUnknownSizeScanBudget(tokenizer, asfHeaderScanStart, maximumUntrustedSkipSizeInBytes)) { + break; + } + const previousPosition = tokenizer.position; + const header = await readHeader(); + let payload = header.size - 24; + if (!Number.isFinite(payload) || payload < 0) { + isMalformedAsf = true; + break; + } + if (checkBytes(header.id, [145, 7, 220, 183, 183, 169, 207, 17, 142, 230, 0, 192, 12, 32, 83, 101])) { + const typeId = new Uint8Array(16); + payload -= await safeReadBuffer(tokenizer, typeId, void 0, { + maximumLength: typeId.length, + reason: "ASF stream type GUID" + }); + if (checkBytes(typeId, [64, 158, 105, 248, 77, 91, 207, 17, 168, 253, 0, 128, 95, 92, 68, 43])) { + return { + ext: "asf", + mime: "audio/x-ms-asf" + }; + } + if (checkBytes(typeId, [192, 239, 25, 188, 77, 91, 207, 17, 168, 253, 0, 128, 95, 92, 68, 43])) { + return { + ext: "asf", + mime: "video/x-ms-asf" + }; + } + break; + } + if (isUnknownFileSize && payload > maximumAsfHeaderPayloadSizeInBytes) { + isMalformedAsf = true; + break; + } + await safeIgnore(tokenizer, payload, { + maximumLength: isUnknownFileSize ? maximumAsfHeaderPayloadSizeInBytes : tokenizer.fileInfo.size, + reason: "ASF header payload" + }); + if (tokenizer.position <= previousPosition) { + isMalformedAsf = true; + break; + } + } + } catch (error) { + if (error instanceof EndOfStreamError || error instanceof ParserHardLimitError) { + if (hasUnknownFileSize(tokenizer)) { + isMalformedAsf = true; + } + } else { + throw error; + } + } + if (isMalformedAsf) { + return; + } + return { + ext: "asf", + mime: "application/vnd.ms-asf" + }; +} +var maximumAsfHeaderObjectCount, maximumAsfHeaderPayloadSizeInBytes; +var init_asf = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/detectors/asf.js"() { + init_lib2(); + init_core(); + init_parser(); + maximumAsfHeaderObjectCount = 512; + maximumAsfHeaderPayloadSizeInBytes = 1024 * 1024; + __name(detectAsf, "detectAsf"); + } +}); + +// ../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/index.js +function normalizeSampleSize(sampleSize) { + if (!Number.isFinite(sampleSize)) { + return reasonableDetectionSizeInBytes; + } + return Math.max(1, Math.trunc(sampleSize)); +} +function normalizeMpegOffsetTolerance(mpegOffsetTolerance) { + if (!Number.isFinite(mpegOffsetTolerance)) { + return 0; + } + return Math.max(0, Math.min(maximumMpegOffsetTolerance, Math.trunc(mpegOffsetTolerance))); +} +function getKnownFileSizeOrMaximum(fileSize) { + if (!Number.isFinite(fileSize)) { + return Number.MAX_SAFE_INTEGER; + } + return Math.max(0, fileSize); +} +function importAtRuntime(specifier) { + return import( + /* @vite-ignore */ + /* webpackIgnore: true */ + specifier + ); +} +function toDefaultStream(stream) { + return stream.pipeThrough(new TransformStream()); +} +function readWithSignal(reader, signal) { + if (signal === void 0) { + return reader.read(); + } + signal.throwIfAborted(); + return Promise.race([ + reader.read(), + new Promise((_resolve, reject) => { + signal.addEventListener("abort", () => { + reject(signal.reason); + reader.cancel(signal.reason).catch(() => { + }); + }, { once: true }); + }) + ]); +} +function createByteLimitedReadableStream(stream, maximumBytes) { + const reader = stream.getReader(); + let emittedBytes = 0; + let sourceDone = false; + let sourceCanceled = false; + const cancelSource = /* @__PURE__ */ __name(async (reason) => { + if (sourceDone || sourceCanceled) { + return; + } + sourceCanceled = true; + await reader.cancel(reason); + }, "cancelSource"); + return new ReadableStream({ + async pull(controller) { + if (emittedBytes >= maximumBytes) { + controller.close(); + await cancelSource(); + return; + } + const { done, value } = await reader.read(); + if (done || !value) { + sourceDone = true; + controller.close(); + return; + } + const remainingBytes = maximumBytes - emittedBytes; + if (value.length > remainingBytes) { + controller.enqueue(value.subarray(0, remainingBytes)); + emittedBytes += remainingBytes; + controller.close(); + await cancelSource(); + return; + } + controller.enqueue(value); + emittedBytes += value.length; + }, + async cancel(reason) { + await cancelSource(reason); + } + }); +} +async function fileTypeFromStream(stream, options) { + return new FileTypeParser(options).fromStream(stream); +} +async function fileTypeFromBuffer(input, options) { + return new FileTypeParser(options).fromBuffer(input); +} +async function fileTypeFromBlob(blob, options) { + return new FileTypeParser(options).fromBlob(blob); +} +async function fileTypeFromTokenizer(tokenizer, options) { + return new FileTypeParser(options).fromTokenizer(tokenizer); +} +async function fileTypeStream(webStream, options) { + return new FileTypeParser(options).toDetectionStream(webStream, options); +} +async function fileTypeFromFile(path, options) { + return new FileTypeParser(options).fromFile(path); +} +var reasonableDetectionSizeInBytes, maximumMpegOffsetTolerance, maximumNestedGzipDetectionSizeInBytes, maximumNestedGzipProbeDepth, unknownSizeGzipProbeTimeoutInMilliseconds, maximumId3HeaderSizeInBytes, maximumTiffTagCount, maximumDetectionReentryCount, maximumTiffStreamIfdOffsetInBytes, maximumTiffIfdOffsetInBytes, FileTypeParser, supportedExtensions, supportedMimeTypes; +var init_source = __esm({ + "../../node_modules/.pnpm/file-type@22.1.1/node_modules/file-type/source/index.js"() { + init_lib2(); + init_core(); + init_lib3(); + init_uint8array_extras(); + init_tokens(); + init_supported(); + init_parser(); + init_zip(); + init_ebml(); + init_png(); + init_asf(); + reasonableDetectionSizeInBytes = 4100; + maximumMpegOffsetTolerance = reasonableDetectionSizeInBytes - 4; + maximumNestedGzipDetectionSizeInBytes = maximumUntrustedSkipSizeInBytes; + maximumNestedGzipProbeDepth = 1; + unknownSizeGzipProbeTimeoutInMilliseconds = 100; + maximumId3HeaderSizeInBytes = maximumUntrustedSkipSizeInBytes; + maximumTiffTagCount = 512; + maximumDetectionReentryCount = 256; + maximumTiffStreamIfdOffsetInBytes = 1024 * 1024; + maximumTiffIfdOffsetInBytes = maximumUntrustedSkipSizeInBytes; + __name(normalizeSampleSize, "normalizeSampleSize"); + __name(normalizeMpegOffsetTolerance, "normalizeMpegOffsetTolerance"); + __name(getKnownFileSizeOrMaximum, "getKnownFileSizeOrMaximum"); + __name(importAtRuntime, "importAtRuntime"); + __name(toDefaultStream, "toDefaultStream"); + __name(readWithSignal, "readWithSignal"); + __name(createByteLimitedReadableStream, "createByteLimitedReadableStream"); + __name(fileTypeFromStream, "fileTypeFromStream"); + __name(fileTypeFromBuffer, "fileTypeFromBuffer"); + __name(fileTypeFromBlob, "fileTypeFromBlob"); + __name(fileTypeFromTokenizer, "fileTypeFromTokenizer"); + __name(fileTypeStream, "fileTypeStream"); + FileTypeParser = class _FileTypeParser { + static { + __name(this, "FileTypeParser"); + } + constructor(options) { + const normalizedMpegOffsetTolerance = normalizeMpegOffsetTolerance(options?.mpegOffsetTolerance); + this.options = { + ...options, + mpegOffsetTolerance: normalizedMpegOffsetTolerance + }; + this.detectors = [ + ...this.options.customDetectors ?? [], + { id: "core", detect: this.detectConfident }, + { id: "core.imprecise", detect: this.detectImprecise } + ]; + this.tokenizerOptions = { + abortSignal: this.options.signal + }; + this.gzipProbeDepth = 0; + } + getTokenizerOptions() { + return { + ...this.tokenizerOptions + }; + } + createTokenizerFromWebStream(stream) { + return fromWebStream(toDefaultStream(stream), this.getTokenizerOptions()); + } + async parseTokenizer(tokenizer, detectionReentryCount = 0) { + this.detectionReentryCount = detectionReentryCount; + const initialPosition = tokenizer.position; + for (const detector of this.detectors) { + let fileType; + try { + fileType = await detector.detect(tokenizer); + } catch (error) { + if (error instanceof EndOfStreamError) { + return; + } + if (error instanceof ParserHardLimitError) { + return; + } + throw error; + } + if (fileType) { + return fileType; + } + if (initialPosition !== tokenizer.position) { + return void 0; + } + } + } + async fromTokenizer(tokenizer) { + try { + return await this.parseTokenizer(tokenizer); + } finally { + await tokenizer.close(); + } + } + async fromBuffer(input) { + if (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) { + throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof input}\``); + } + const buffer = input instanceof Uint8Array ? input : new Uint8Array(input); + if (!(buffer?.length > 1)) { + return; + } + return this.fromTokenizer(fromBuffer(buffer, this.getTokenizerOptions())); + } + async fromBlob(blob) { + this.options.signal?.throwIfAborted(); + const tokenizer = fromBlob(blob, this.getTokenizerOptions()); + return this.fromTokenizer(tokenizer); + } + async fromStream(stream) { + this.options.signal?.throwIfAborted(); + const tokenizer = this.createTokenizerFromWebStream(stream); + return this.fromTokenizer(tokenizer); + } + async fromFile(path) { + this.options.signal?.throwIfAborted(); + const [{ default: fsPromises }, { FileTokenizer }] = await Promise.all([ + importAtRuntime("node:fs/promises"), + importAtRuntime("strtok3") + ]); + const fileHandle = await fsPromises.open(path, fsPromises.constants.O_RDONLY | fsPromises.constants.O_NONBLOCK); + const fileStat = await fileHandle.stat(); + if (!fileStat.isFile()) { + await fileHandle.close(); + return; + } + const tokenizer = new FileTokenizer(fileHandle, { + ...this.getTokenizerOptions(), + fileInfo: { path, size: fileStat.size } + }); + return this.fromTokenizer(tokenizer); + } + async toDetectionStream(stream, options) { + this.options.signal?.throwIfAborted(); + const sampleSize = normalizeSampleSize(options?.sampleSize ?? reasonableDetectionSizeInBytes); + let detectedFileType; + let streamEnded = false; + const reader = stream.getReader(); + const chunks = []; + let totalSize = 0; + try { + while (totalSize < sampleSize) { + const { value, done } = await readWithSignal(reader, this.options.signal); + if (done || !value) { + streamEnded = true; + break; + } + chunks.push(value); + totalSize += value.length; + } + if (!streamEnded && totalSize === sampleSize) { + const { value, done } = await readWithSignal(reader, this.options.signal); + if (done || !value) { + streamEnded = true; + } else { + chunks.push(value); + totalSize += value.length; + } + } + } finally { + reader.releaseLock(); + } + if (totalSize > 0) { + const sample = chunks.length === 1 ? chunks[0] : concatUint8Arrays(chunks); + try { + detectedFileType = await this.fromBuffer(sample.subarray(0, sampleSize)); + } catch (error) { + if (!(error instanceof EndOfStreamError)) { + throw error; + } + detectedFileType = void 0; + } + if (!streamEnded && detectedFileType?.ext === "pages") { + detectedFileType = { + ext: "zip", + mime: "application/zip" + }; + } + } + const transformStream = new TransformStream({ + start(controller) { + for (const chunk of chunks) { + controller.enqueue(chunk); + } + }, + transform(chunk, controller) { + controller.enqueue(chunk); + } + }); + const newStream = stream.pipeThrough(transformStream); + newStream.fileType = detectedFileType; + return newStream; + } + async detectGzip(tokenizer) { + if (this.gzipProbeDepth >= maximumNestedGzipProbeDepth) { + return { + ext: "gz", + mime: "application/gzip" + }; + } + const gzipHandler = new GzipHandler(tokenizer); + const limitedInflatedStream = createByteLimitedReadableStream(gzipHandler.inflate(), maximumNestedGzipDetectionSizeInBytes); + const hasUnknownSize = hasUnknownFileSize(tokenizer); + let timeout; + let probeSignal; + let probeParser; + let compressedFileType; + if (hasUnknownSize) { + const timeoutController = new AbortController(); + timeout = setTimeout(() => { + timeoutController.abort(new DOMException(`Operation timed out after ${unknownSizeGzipProbeTimeoutInMilliseconds} ms`, "TimeoutError")); + }, unknownSizeGzipProbeTimeoutInMilliseconds); + probeSignal = this.options.signal === void 0 ? timeoutController.signal : AbortSignal.any([this.options.signal, timeoutController.signal]); + probeParser = new _FileTypeParser({ + ...this.options, + signal: probeSignal + }); + probeParser.gzipProbeDepth = this.gzipProbeDepth + 1; + } else { + this.gzipProbeDepth++; + } + try { + compressedFileType = await (probeParser ?? this).fromStream(limitedInflatedStream); + } catch (error) { + if (error?.name === "AbortError" && probeSignal?.reason?.name !== "TimeoutError") { + throw error; + } + } finally { + clearTimeout(timeout); + if (!hasUnknownSize) { + this.gzipProbeDepth--; + } + } + if (compressedFileType?.ext === "tar") { + return { + ext: "tar.gz", + mime: "application/gzip" + }; + } + return { + ext: "gz", + mime: "application/gzip" + }; + } + check(header, options) { + return checkBytes(this.buffer, header, options); + } + checkString(header, options) { + return this.check(stringToBytes(header, options?.encoding), options); + } + // Detections with a high degree of certainty in identifying the correct file type + detectConfident = /* @__PURE__ */ __name(async (tokenizer) => { + this.buffer = new Uint8Array(reasonableDetectionSizeInBytes); + if (tokenizer.fileInfo.size === void 0) { + tokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER; + } + this.tokenizer = tokenizer; + if (hasUnknownFileSize(tokenizer)) { + await tokenizer.peekBuffer(this.buffer, { length: 3, mayBeLess: true }); + if (this.check([31, 139, 8])) { + return this.detectGzip(tokenizer); + } + } + await tokenizer.peekBuffer(this.buffer, { length: 32, mayBeLess: true }); + if (this.check([66, 77])) { + return { + ext: "bmp", + mime: "image/bmp" + }; + } + if (this.check([11, 119])) { + return { + ext: "ac3", + mime: "audio/vnd.dolby.dd-raw" + }; + } + if (this.check([120, 1])) { + return { + ext: "dmg", + mime: "application/x-apple-diskimage" + }; + } + if (this.check([77, 90])) { + return { + ext: "exe", + mime: "application/x-msdownload" + }; + } + if (this.check([37, 33])) { + await tokenizer.peekBuffer(this.buffer, { length: 24, mayBeLess: true }); + if (this.checkString("PS-Adobe-", { offset: 2 }) && this.checkString(" EPSF-", { offset: 14 })) { + return { + ext: "eps", + mime: "application/eps" + }; + } + return { + ext: "ps", + mime: "application/postscript" + }; + } + if (this.check([31, 160]) || this.check([31, 157])) { + return { + ext: "Z", + mime: "application/x-compress" + }; + } + if (this.check([199, 113])) { + return { + ext: "cpio", + mime: "application/x-cpio" + }; + } + if (this.check([96, 234])) { + return { + ext: "arj", + mime: "application/x-arj" + }; + } + if (this.check([239, 187, 191])) { + if (this.detectionReentryCount >= maximumDetectionReentryCount) { + return; + } + this.detectionReentryCount++; + await this.tokenizer.ignore(3); + return this.detectConfident(tokenizer); + } + if (this.check([71, 73, 70])) { + return { + ext: "gif", + mime: "image/gif" + }; + } + if (this.check([73, 73, 188])) { + return { + ext: "jxr", + mime: "image/vnd.ms-photo" + }; + } + if (this.check([31, 139, 8])) { + return this.detectGzip(tokenizer); + } + if (this.check([66, 90, 104])) { + return { + ext: "bz2", + mime: "application/x-bzip2" + }; + } + if (this.checkString("ID3")) { + await safeIgnore(tokenizer, 6, { + maximumLength: 6, + reason: "ID3 header prefix" + }); + const id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken); + const isUnknownFileSize = hasUnknownFileSize(tokenizer); + if (!Number.isFinite(id3HeaderLength) || id3HeaderLength < 0 || isUnknownFileSize && (id3HeaderLength > maximumId3HeaderSizeInBytes || tokenizer.position + id3HeaderLength > maximumId3HeaderSizeInBytes)) { + return; + } + if (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) { + if (isUnknownFileSize) { + return; + } + return { + ext: "mp3", + mime: "audio/mpeg" + }; + } + try { + await safeIgnore(tokenizer, id3HeaderLength, { + maximumLength: isUnknownFileSize ? maximumId3HeaderSizeInBytes : tokenizer.fileInfo.size, + reason: "ID3 payload" + }); + } catch (error) { + if (error instanceof EndOfStreamError) { + return; + } + throw error; + } + if (this.detectionReentryCount >= maximumDetectionReentryCount) { + return; + } + this.detectionReentryCount++; + return this.parseTokenizer(tokenizer, this.detectionReentryCount); + } + if (this.checkString("MP+")) { + return { + ext: "mpc", + mime: "audio/x-musepack" + }; + } + if ((this.buffer[0] === 67 || this.buffer[0] === 70) && this.check([87, 83], { offset: 1 })) { + return { + ext: "swf", + mime: "application/x-shockwave-flash" + }; + } + if (this.check([255, 216, 255])) { + if (this.check([247], { offset: 3 })) { + return { + ext: "jls", + mime: "image/jls" + }; + } + return { + ext: "jpg", + mime: "image/jpeg" + }; + } + if (this.check([79, 98, 106, 1])) { + return { + ext: "avro", + mime: "application/avro" + }; + } + if (this.checkString("FLIF")) { + return { + ext: "flif", + mime: "image/flif" + }; + } + if (this.checkString("8BPS")) { + return { + ext: "psd", + mime: "image/vnd.adobe.photoshop" + }; + } + if (this.checkString("MPCK")) { + return { + ext: "mpc", + mime: "audio/x-musepack" + }; + } + if (this.checkString("FORM")) { + return { + ext: "aif", + mime: "audio/aiff" + }; + } + if (this.checkString("icns", { offset: 0 })) { + return { + ext: "icns", + mime: "image/icns" + }; + } + if (this.check([80, 75, 3, 4])) { + return detectZip(tokenizer); + } + if (this.checkString("OggS")) { + await tokenizer.ignore(28); + const type = new Uint8Array(8); + await tokenizer.readBuffer(type); + if (checkBytes(type, [79, 112, 117, 115, 72, 101, 97, 100])) { + return { + ext: "opus", + mime: "audio/ogg; codecs=opus" + }; + } + if (checkBytes(type, [128, 116, 104, 101, 111, 114, 97])) { + return { + ext: "ogv", + mime: "video/ogg" + }; + } + if (checkBytes(type, [1, 118, 105, 100, 101, 111, 0])) { + return { + ext: "ogm", + mime: "video/ogg" + }; + } + if (checkBytes(type, [127, 70, 76, 65, 67])) { + return { + ext: "oga", + mime: "audio/ogg" + }; + } + if (checkBytes(type, [83, 112, 101, 101, 120, 32, 32])) { + return { + ext: "spx", + mime: "audio/ogg" + }; + } + if (checkBytes(type, [1, 118, 111, 114, 98, 105, 115])) { + return { + ext: "ogg", + mime: "audio/ogg" + }; + } + return { + ext: "ogx", + mime: "application/ogg" + }; + } + if (this.check([80, 75]) && (this.buffer[2] === 3 || this.buffer[2] === 5 || this.buffer[2] === 7) && (this.buffer[3] === 4 || this.buffer[3] === 6 || this.buffer[3] === 8)) { + return { + ext: "zip", + mime: "application/zip" + }; + } + if (this.checkString("MThd")) { + return { + ext: "mid", + mime: "audio/midi" + }; + } + if (this.checkString("wOFF") && (this.check([0, 1, 0, 0], { offset: 4 }) || this.checkString("OTTO", { offset: 4 }))) { + return { + ext: "woff", + mime: "font/woff" + }; + } + if (this.checkString("wOF2") && (this.check([0, 1, 0, 0], { offset: 4 }) || this.checkString("OTTO", { offset: 4 }))) { + return { + ext: "woff2", + mime: "font/woff2" + }; + } + if (this.check([212, 195, 178, 161]) || this.check([161, 178, 195, 212])) { + return { + ext: "pcap", + mime: "application/vnd.tcpdump.pcap" + }; + } + if (this.checkString("DSD ")) { + return { + ext: "dsf", + mime: "audio/x-dsf" + // Non-standard + }; + } + if (this.checkString("LZIP")) { + return { + ext: "lz", + mime: "application/lzip" + }; + } + if (this.checkString("fLaC")) { + return { + ext: "flac", + mime: "audio/flac" + }; + } + if (this.check([66, 80, 71, 251])) { + return { + ext: "bpg", + mime: "image/bpg" + }; + } + if (this.checkString("wvpk")) { + return { + ext: "wv", + mime: "audio/wavpack" + }; + } + if (this.checkString("%PDF")) { + return { + ext: "pdf", + mime: "application/pdf" + }; + } + if (this.check([0, 97, 115, 109])) { + return { + ext: "wasm", + mime: "application/wasm" + }; + } + if (this.check([73, 73])) { + const fileType = await this.readTiffHeader(false); + if (fileType) { + return fileType; + } + } + if (this.check([77, 77])) { + const fileType = await this.readTiffHeader(true); + if (fileType) { + return fileType; + } + } + if (this.checkString("MAC ")) { + return { + ext: "ape", + mime: "audio/ape" + }; + } + if (this.check([26, 69, 223, 163])) { + return detectEbml(tokenizer); + } + if (this.checkString("SQLi")) { + return { + ext: "sqlite", + mime: "application/x-sqlite3" + }; + } + if (this.check([78, 69, 83, 26])) { + return { + ext: "nes", + mime: "application/x-nintendo-nes-rom" + }; + } + if (this.checkString("Cr24")) { + return { + ext: "crx", + mime: "application/x-google-chrome-extension" + }; + } + if (this.checkString("MSCF") || this.checkString("ISc(")) { + return { + ext: "cab", + mime: "application/vnd.ms-cab-compressed" + }; + } + if (this.check([237, 171, 238, 219])) { + return { + ext: "rpm", + mime: "application/x-rpm" + }; + } + if (this.check([197, 208, 211, 198])) { + return { + ext: "eps", + mime: "application/eps" + }; + } + if (this.check([40, 181, 47, 253])) { + return { + ext: "zst", + mime: "application/zstd" + }; + } + if (this.check([127, 69, 76, 70])) { + return { + ext: "elf", + mime: "application/x-elf" + }; + } + if (this.check([33, 66, 68, 78])) { + return { + ext: "pst", + mime: "application/vnd.ms-outlook" + }; + } + if (this.checkString("PAR1") || this.checkString("PARE")) { + return { + ext: "parquet", + mime: "application/vnd.apache.parquet" + }; + } + if (this.checkString("ttcf")) { + return { + ext: "ttc", + mime: "font/collection" + }; + } + if (this.check([254, 237, 250, 206]) || this.check([254, 237, 250, 207]) || this.check([206, 250, 237, 254]) || this.check([207, 250, 237, 254])) { + return { + ext: "macho", + mime: "application/x-mach-binary" + }; + } + if (this.check([4, 34, 77, 24])) { + return { + ext: "lz4", + mime: "application/x-lz4" + // Informal, used by freedesktop.org shared-mime-info + }; + } + if (this.checkString("regf")) { + return { + ext: "dat", + mime: "application/x-ft-windows-registry-hive" + }; + } + if (this.checkString("$FL2") || this.checkString("$FL3")) { + return { + ext: "sav", + mime: "application/x-spss-sav" + }; + } + if (this.check([79, 84, 84, 79, 0])) { + return { + ext: "otf", + mime: "font/otf" + }; + } + if (this.checkString("#!AMR")) { + return { + ext: "amr", + mime: "audio/amr" + }; + } + if (this.checkString(String.raw`{\rtf`)) { + return { + ext: "rtf", + mime: "application/rtf" + }; + } + if (this.check([70, 76, 86, 1])) { + return { + ext: "flv", + mime: "video/x-flv" + }; + } + if (this.checkString("IMPM")) { + return { + ext: "it", + mime: "audio/x-it" + }; + } + if (this.checkString("-lh0-", { offset: 2 }) || this.checkString("-lh1-", { offset: 2 }) || this.checkString("-lh2-", { offset: 2 }) || this.checkString("-lh3-", { offset: 2 }) || this.checkString("-lh4-", { offset: 2 }) || this.checkString("-lh5-", { offset: 2 }) || this.checkString("-lh6-", { offset: 2 }) || this.checkString("-lh7-", { offset: 2 }) || this.checkString("-lzs-", { offset: 2 }) || this.checkString("-lz4-", { offset: 2 }) || this.checkString("-lz5-", { offset: 2 }) || this.checkString("-lhd-", { offset: 2 })) { + return { + ext: "lzh", + mime: "application/x-lzh-compressed" + }; + } + if (this.check([0, 0, 1, 186])) { + if (this.check([33], { offset: 4, mask: [241] })) { + return { + ext: "mpg", + // May also be .ps, .mpeg + mime: "video/MP1S" + }; + } + if (this.check([68], { offset: 4, mask: [196] })) { + return { + ext: "mpg", + // May also be .mpg, .m2p, .vob or .sub + mime: "video/MP2P" + }; + } + } + if (this.checkString("ITSF")) { + return { + ext: "chm", + mime: "application/vnd.ms-htmlhelp" + }; + } + if (this.check([202, 254, 186, 190])) { + const machOArchitectureCount = UINT32_BE.get(this.buffer, 4); + const javaClassFileMajorVersion = UINT16_BE.get(this.buffer, 6); + if (machOArchitectureCount > 0 && machOArchitectureCount <= 30) { + return { + ext: "macho", + mime: "application/x-mach-binary" + }; + } + if (javaClassFileMajorVersion > 30) { + return { + ext: "class", + mime: "application/java-vm" + }; + } + } + if (this.checkString(".RMF")) { + return { + ext: "rm", + mime: "application/vnd.rn-realmedia" + }; + } + if (this.checkString("DRACO")) { + return { + ext: "drc", + mime: "application/x-ft-draco" + }; + } + if (this.check([253, 55, 122, 88, 90, 0])) { + return { + ext: "xz", + mime: "application/x-xz" + }; + } + if (this.checkString("= 1e3 && version <= 1050) { + return { + ext: "dwg", + mime: "image/vnd.dwg" + }; + } + } + if (this.checkString("070707")) { + return { + ext: "cpio", + mime: "application/x-cpio" + }; + } + if (this.checkString("BLENDER")) { + return { + ext: "blend", + mime: "application/x-blender" + }; + } + if (this.checkString("!")) { + await tokenizer.ignore(8); + const string = await tokenizer.readToken(new StringType(13, "ascii")); + if (string === "debian-binary") { + return { + ext: "deb", + mime: "application/x-deb" + }; + } + return { + ext: "ar", + mime: "application/x-unix-archive" + }; + } + if (this.checkString("WEBVTT") && // One of LF, CR, tab, space, or end of file must follow "WEBVTT" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\0` gives us the same result as checking for the end of the stream. + ["\n", "\r", " ", " ", "\0"].some((char7) => this.checkString(char7, { offset: 6 }))) { + return { + ext: "vtt", + mime: "text/vtt" + }; + } + if (this.check([137, 80, 78, 71, 13, 10, 26, 10])) { + return detectPng(tokenizer); + } + if (this.check([65, 82, 82, 79, 87, 49, 0, 0])) { + return { + ext: "arrow", + mime: "application/vnd.apache.arrow.file" + }; + } + if (this.check([103, 108, 84, 70, 2, 0, 0, 0])) { + return { + ext: "glb", + mime: "model/gltf-binary" + }; + } + if (this.check([102, 114, 101, 101], { offset: 4 }) || this.check([109, 100, 97, 116], { offset: 4 }) || this.check([109, 111, 111, 118], { offset: 4 }) || this.check([119, 105, 100, 101], { offset: 4 })) { + return { + ext: "mov", + mime: "video/quicktime" + }; + } + if (this.check([73, 73, 82, 79, 8, 0, 0, 0, 24])) { + return { + ext: "orf", + mime: "image/x-olympus-orf" + }; + } + if (this.checkString("gimp xcf ")) { + return { + ext: "xcf", + mime: "image/x-xcf" + }; + } + if (this.checkString("ftyp", { offset: 4 }) && (this.buffer[8] & 96) !== 0) { + const brandMajor = new StringType(4, "latin1").get(this.buffer, 8).replace("\0", " ").trim(); + switch (brandMajor) { + case "avif": + case "avis": + return { ext: "avif", mime: "image/avif" }; + case "mif1": + return { ext: "heic", mime: "image/heif" }; + case "msf1": + return { ext: "heic", mime: "image/heif-sequence" }; + case "heic": + case "heix": + return { ext: "heic", mime: "image/heic" }; + case "hevc": + case "hevx": + return { ext: "heic", mime: "image/heic-sequence" }; + case "qt": + return { ext: "mov", mime: "video/quicktime" }; + case "M4V": + case "M4VH": + case "M4VP": + return { ext: "m4v", mime: "video/x-m4v" }; + case "M4P": + return { ext: "m4p", mime: "video/mp4" }; + case "M4B": + return { ext: "m4b", mime: "audio/mp4" }; + case "M4A": + return { ext: "m4a", mime: "audio/x-m4a" }; + case "F4V": + return { ext: "f4v", mime: "video/mp4" }; + case "F4P": + return { ext: "f4p", mime: "video/mp4" }; + case "F4A": + return { ext: "f4a", mime: "audio/mp4" }; + case "F4B": + return { ext: "f4b", mime: "audio/mp4" }; + case "crx": + return { ext: "cr3", mime: "image/x-canon-cr3" }; + default: + if (brandMajor.startsWith("3g")) { + if (brandMajor.startsWith("3g2")) { + return { ext: "3g2", mime: "video/3gpp2" }; + } + return { ext: "3gp", mime: "video/3gpp" }; + } + return { ext: "mp4", mime: "video/mp4" }; + } + } + if (this.checkString("REGEDIT4\r\n")) { + return { + ext: "reg", + mime: "application/x-ms-regedit" + }; + } + if (this.check([82, 73, 70, 70])) { + if (this.checkString("WEBP", { offset: 8 })) { + return { + ext: "webp", + mime: "image/webp" + }; + } + if (this.check([65, 86, 73], { offset: 8 })) { + return { + ext: "avi", + mime: "video/vnd.avi" + }; + } + if (this.check([87, 65, 86, 69], { offset: 8 })) { + return { + ext: "wav", + mime: "audio/wav" + }; + } + if (this.check([81, 76, 67, 77], { offset: 8 })) { + return { + ext: "qcp", + mime: "audio/qcelp" + }; + } + } + if (this.check([73, 73, 85, 0, 24, 0, 0, 0, 136, 231, 116, 216])) { + return { + ext: "rw2", + mime: "image/x-panasonic-rw2" + }; + } + if (this.check([48, 38, 178, 117, 142, 102, 207, 17, 166, 217])) { + return detectAsf(tokenizer); + } + if (this.check([171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10])) { + return { + ext: "ktx", + mime: "image/ktx" + }; + } + if ((this.check([126, 16, 4]) || this.check([126, 24, 4])) && this.check([48, 77, 73, 69], { offset: 4 })) { + return { + ext: "mie", + mime: "application/x-mie" + }; + } + if (this.check([39, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], { offset: 2 })) { + return { + ext: "shp", + mime: "application/x-esri-shape" + }; + } + if (this.check([255, 79, 255, 81])) { + return { + ext: "j2c", + mime: "image/j2c" + }; + } + if (this.check([0, 0, 0, 12, 106, 80, 32, 32, 13, 10, 135, 10])) { + await tokenizer.ignore(20); + const type = await tokenizer.readToken(new StringType(4, "ascii")); + switch (type) { + case "jp2 ": + return { + ext: "jp2", + mime: "image/jp2" + }; + case "jpx ": + return { + ext: "jpx", + mime: "image/jpx" + }; + case "jpm ": + return { + ext: "jpm", + mime: "image/jpm" + }; + case "mjp2": + return { + ext: "mj2", + mime: "image/mj2" + }; + default: + return; + } + } + if (this.check([255, 10]) || this.check([0, 0, 0, 12, 74, 88, 76, 32, 13, 10, 135, 10])) { + return { + ext: "jxl", + mime: "image/jxl" + }; + } + if (this.check([254, 255])) { + if (this.checkString("= 16) { + const jsonSize = new DataView(this.buffer.buffer).getUint32(12, true); + if (jsonSize > 12 && this.buffer.length >= jsonSize + 16) { + try { + const header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16)); + const json = JSON.parse(header); + if (json.files) { + return { + ext: "asar", + mime: "application/x-asar" + }; + } + } catch { + } + } + } + if (this.check([6, 14, 43, 52, 2, 5, 1, 1, 13, 1, 2, 1, 1, 2])) { + return { + ext: "mxf", + mime: "application/mxf" + }; + } + if (this.checkString("SCRM", { offset: 44 })) { + return { + ext: "s3m", + mime: "audio/x-s3m" + }; + } + if (this.check([71]) && this.check([71], { offset: 188 })) { + return { + ext: "mts", + mime: "video/mp2t" + }; + } + if (this.check([71], { offset: 4 }) && this.check([71], { offset: 196 })) { + return { + ext: "mts", + mime: "video/mp2t" + }; + } + if (this.check([66, 79, 79, 75, 77, 79, 66, 73], { offset: 60 })) { + return { + ext: "mobi", + mime: "application/x-mobipocket-ebook" + }; + } + if (this.check([68, 73, 67, 77], { offset: 128 })) { + return { + ext: "dcm", + mime: "application/dicom" + }; + } + if (this.check([76, 0, 0, 0, 1, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70])) { + return { + ext: "lnk", + mime: "application/x-ms-shortcut" + // Informal, used by freedesktop.org shared-mime-info + }; + } + if (this.check([98, 111, 111, 107, 0, 0, 0, 0, 109, 97, 114, 107, 0, 0, 0, 0])) { + return { + ext: "alias", + mime: "application/x-ft-apple.alias" + }; + } + if (this.checkString("Kaydara FBX Binary \0")) { + return { + ext: "fbx", + mime: "application/x-ft-fbx" + }; + } + if (this.check([76, 80], { offset: 34 }) && (this.check([0, 0, 1], { offset: 8 }) || this.check([1, 0, 2], { offset: 8 }) || this.check([2, 0, 2], { offset: 8 }))) { + return { + ext: "eot", + mime: "application/vnd.ms-fontobject" + }; + } + if (this.check([6, 6, 237, 245, 216, 29, 70, 229, 189, 49, 239, 231, 254, 116, 183, 29])) { + return { + ext: "indd", + mime: "application/x-indesign" + }; + } + if (this.check([255, 255, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 1, 0]) || this.check([0, 0, 255, 255, 0, 0, 0, 7, 0, 0, 0, 4, 0, 1, 0, 1])) { + return { + ext: "jmp", + mime: "application/x-jmp-data" + }; + } + await tokenizer.peekBuffer(this.buffer, { length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true }); + if (this.checkString("ustar", { offset: 257 }) && (this.checkString("\0", { offset: 262 }) || this.checkString(" ", { offset: 262 })) || this.check([0, 0, 0, 0, 0, 0], { offset: 257 }) && tarHeaderChecksumMatches(this.buffer)) { + return { + ext: "tar", + mime: "application/x-tar" + }; + } + if (this.check([255, 254])) { + const encoding = "utf-16le"; + if (this.checkString("= isoStandardIdentifierOffset + isoStandardIdentifierLength) { + const isoStandardIdentifier = new Uint8Array(isoStandardIdentifierLength); + await tokenizer.peekBuffer(isoStandardIdentifier, { + position: isoStandardIdentifierOffset, + length: isoStandardIdentifierLength, + mayBeLess: true + }); + if (checkBytes(isoStandardIdentifier, stringToBytes("CD001"))) { + return { + ext: "iso", + mime: "application/x-iso9660-image" + }; + } + } + }, "detectConfident"); + // Detections with limited supporting data, resulting in a higher likelihood of false positives + detectImprecise = /* @__PURE__ */ __name(async (tokenizer) => { + this.buffer = new Uint8Array(reasonableDetectionSizeInBytes); + const fileSize = getKnownFileSizeOrMaximum(tokenizer.fileInfo.size); + await tokenizer.peekBuffer(this.buffer, { length: Math.min(8, fileSize), mayBeLess: true }); + if (this.check([0, 0, 1, 186]) || this.check([0, 0, 1, 179])) { + return { + ext: "mpg", + mime: "video/mpeg" + }; + } + if (this.check([0, 1, 0, 0, 0])) { + return { + ext: "ttf", + mime: "font/ttf" + }; + } + if (this.check([0, 0, 1, 0])) { + return { + ext: "ico", + mime: "image/x-icon" + }; + } + if (this.check([0, 0, 2, 0])) { + return { + ext: "cur", + mime: "image/x-icon" + }; + } + await tokenizer.peekBuffer(this.buffer, { length: Math.min(4 + this.options.mpegOffsetTolerance, fileSize), mayBeLess: true }); + if (this.buffer.length >= 4 + this.options.mpegOffsetTolerance) { + for (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) { + const type = this.scanMpeg(depth); + if (type) { + return type; + } + } + } + }, "detectImprecise"); + async readTiffTag(bigEndian) { + const tagId = await this.tokenizer.readToken(bigEndian ? UINT16_BE : UINT16_LE); + await this.tokenizer.ignore(10); + switch (tagId) { + case 50341: + return { + ext: "arw", + mime: "image/x-sony-arw" + }; + case 50706: + return { + ext: "dng", + mime: "image/x-adobe-dng" + }; + default: + } + } + async readTiffIFD(bigEndian) { + const numberOfTags = await this.tokenizer.readToken(bigEndian ? UINT16_BE : UINT16_LE); + if (numberOfTags > maximumTiffTagCount) { + return; + } + if (hasUnknownFileSize(this.tokenizer) && 2 + numberOfTags * 12 > maximumTiffIfdOffsetInBytes) { + return; + } + for (let n = 0; n < numberOfTags; ++n) { + const fileType = await this.readTiffTag(bigEndian); + if (fileType) { + return fileType; + } + } + } + async readTiffHeader(bigEndian) { + const tiffFileType = { + ext: "tif", + mime: "image/tiff" + }; + const version = (bigEndian ? UINT16_BE : UINT16_LE).get(this.buffer, 2); + const ifdOffset = (bigEndian ? UINT32_BE : UINT32_LE).get(this.buffer, 4); + if (version === 42) { + if (ifdOffset >= 6) { + if (this.checkString("CR", { offset: 8 })) { + return { + ext: "cr2", + mime: "image/x-canon-cr2" + }; + } + if (ifdOffset >= 8) { + const someId1 = (bigEndian ? UINT16_BE : UINT16_LE).get(this.buffer, 8); + const someId2 = (bigEndian ? UINT16_BE : UINT16_LE).get(this.buffer, 10); + if (someId1 === 28 && someId2 === 254 || someId1 === 31 && someId2 === 11) { + return { + ext: "nef", + mime: "image/x-nikon-nef" + }; + } + } + } + if (hasUnknownFileSize(this.tokenizer) && ifdOffset > maximumTiffStreamIfdOffsetInBytes) { + return tiffFileType; + } + const maximumTiffOffset = hasUnknownFileSize(this.tokenizer) ? maximumTiffIfdOffsetInBytes : this.tokenizer.fileInfo.size; + try { + await safeIgnore(this.tokenizer, ifdOffset, { + maximumLength: maximumTiffOffset, + reason: "TIFF IFD offset" + }); + } catch (error) { + if (error instanceof EndOfStreamError) { + return; + } + throw error; + } + let fileType; + try { + fileType = await this.readTiffIFD(bigEndian); + } catch (error) { + if (error instanceof EndOfStreamError) { + return; + } + throw error; + } + return fileType ?? tiffFileType; + } + if (version === 43) { + return tiffFileType; + } + } + /** + Scan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE). + + @param offset - Offset to scan for sync-preamble. + @returns {{ext: string, mime: string}} + */ + scanMpeg(offset) { + if (this.check([255, 224], { offset, mask: [255, 224] })) { + if (this.check([16], { offset: offset + 1, mask: [22] })) { + return { + ext: "aac", + mime: "audio/aac" + }; + } + if (this.check([255, 254], { offset })) { + return; + } + if (this.check([8], { offset: offset + 1, mask: [24] })) { + return; + } + if (this.check([240], { offset: offset + 2, mask: [240] })) { + return; + } + if (this.check([12], { offset: offset + 2, mask: [12] })) { + return; + } + if (this.check([2], { offset: offset + 1, mask: [6] })) { + return { + ext: "mp3", + mime: "audio/mpeg" + }; + } + if (this.check([4], { offset: offset + 1, mask: [6] })) { + return { + ext: "mp2", + mime: "audio/mpeg" + }; + } + if (this.check([6], { offset: offset + 1, mask: [6] })) { + return { + ext: "mp1", + mime: "audio/mpeg" + }; + } + } + } + }; + supportedExtensions = new Set(extensions); + supportedMimeTypes = new Set(mimeTypes); + __name(fileTypeFromFile, "fileTypeFromFile"); + } +}); +init_source(); +export { + FileTypeParser, + fileTypeFromBlob, + fileTypeFromBuffer, + fileTypeFromFile, + fileTypeFromStream, + fileTypeFromTokenizer, + fileTypeStream, + normalizeSampleSize, + reasonableDetectionSizeInBytes, + supportedExtensions, + supportedMimeTypes +}; diff --git a/apps/api/.output/dist/main.js b/apps/api/.output/dist/main.js new file mode 100644 index 0000000..d61da50 --- /dev/null +++ b/apps/api/.output/dist/main.js @@ -0,0 +1,3595 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + ACCEPTED_IMAGE_TYPES, + AuditService, + AuthService, + CommonModule, + JwtModule, + JwtService, + MESSAGE_STATUSES, + PrismaModule, + PrismaService, + RevalidateService, + S3Storage, + SECTION_KEYS, + categoryInputSchema, + changePasswordSchema, + contactInputSchema, + env, + external_exports, + hashPassword, + isProd, + isSectionKey, + loginSchema, + mediaUpdateSchema, + messageUpdateSchema, + prismaNamespace_exports, + productInputSchema, + productListQuerySchema, + reorderSchema, + sectionSchemas, + toIssues, + toUserDto, + toWebp, + userCreateSchema, + userUpdateSchema +} from "./chunks/chunk-TXBARIZB.js"; +import "./chunks/chunk-KIUJQ22G.js"; +import { + APP_FILTER, + APP_GUARD, + FileInterceptor, + NestFactory, + Reflector, + core_exports, + init_core, + init_platform_express, + require_cookie +} from "./chunks/chunk-XSOBN2CI.js"; +import { + BadRequestException, + Body, + Catch, + ConflictException, + Controller, + Delete, + ForbiddenException, + Get, + HttpCode, + HttpStatus, + Injectable, + Logger, + Module, + NotFoundException, + Param, + Patch, + Post, + Put, + Query, + Req, + Res, + ServiceUnavailableException, + SetMetadata, + UnauthorizedException, + UploadedFile, + UseGuards, + UseInterceptors, + applyDecorators, + common_exports, + createParamDecorator, + init_common +} from "./chunks/chunk-BX2ML7LW.js"; +import "./chunks/chunk-C4DYPKAN.js"; +import "./chunks/chunk-A34KYKJP.js"; +import "./chunks/chunk-6UPY3HEI.js"; +import { + __commonJS, + __name, + __require, + __toCommonJS, + __toESM +} from "./chunks/chunk-T6GW54FI.js"; + +// ../../node_modules/.pnpm/cookie-signature@1.0.6/node_modules/cookie-signature/index.js +var require_cookie_signature = __commonJS({ + "../../node_modules/.pnpm/cookie-signature@1.0.6/node_modules/cookie-signature/index.js"(exports) { + var crypto = __require("crypto"); + exports.sign = function(val, secret) { + if ("string" != typeof val) throw new TypeError("Cookie value must be provided as a string."); + if ("string" != typeof secret) throw new TypeError("Secret string must be provided."); + return val + "." + crypto.createHmac("sha256", secret).update(val).digest("base64").replace(/\=+$/, ""); + }; + exports.unsign = function(val, secret) { + if ("string" != typeof val) throw new TypeError("Signed cookie string must be provided."); + if ("string" != typeof secret) throw new TypeError("Secret string must be provided."); + var str = val.slice(0, val.lastIndexOf(".")), mac = exports.sign(str, secret); + return sha1(mac) == sha1(val) ? str : false; + }; + function sha1(str) { + return crypto.createHash("sha1").update(str).digest("hex"); + } + __name(sha1, "sha1"); + } +}); + +// ../../node_modules/.pnpm/cookie-parser@1.4.7/node_modules/cookie-parser/index.js +var require_cookie_parser = __commonJS({ + "../../node_modules/.pnpm/cookie-parser@1.4.7/node_modules/cookie-parser/index.js"(exports, module) { + "use strict"; + var cookie = require_cookie(); + var signature = require_cookie_signature(); + module.exports = cookieParser2; + module.exports.JSONCookie = JSONCookie; + module.exports.JSONCookies = JSONCookies; + module.exports.signedCookie = signedCookie; + module.exports.signedCookies = signedCookies; + function cookieParser2(secret, options) { + var secrets = !secret || Array.isArray(secret) ? secret || [] : [secret]; + return /* @__PURE__ */ __name(function cookieParser3(req, res, next) { + if (req.cookies) { + return next(); + } + var cookies = req.headers.cookie; + req.secret = secrets[0]; + req.cookies = /* @__PURE__ */ Object.create(null); + req.signedCookies = /* @__PURE__ */ Object.create(null); + if (!cookies) { + return next(); + } + req.cookies = cookie.parse(cookies, options); + if (secrets.length !== 0) { + req.signedCookies = signedCookies(req.cookies, secrets); + req.signedCookies = JSONCookies(req.signedCookies); + } + req.cookies = JSONCookies(req.cookies); + next(); + }, "cookieParser"); + } + __name(cookieParser2, "cookieParser"); + function JSONCookie(str) { + if (typeof str !== "string" || str.substr(0, 2) !== "j:") { + return void 0; + } + try { + return JSON.parse(str.slice(2)); + } catch (err) { + return void 0; + } + } + __name(JSONCookie, "JSONCookie"); + function JSONCookies(obj) { + var cookies = Object.keys(obj); + var key; + var val; + for (var i = 0; i < cookies.length; i++) { + key = cookies[i]; + val = JSONCookie(obj[key]); + if (val) { + obj[key] = val; + } + } + return obj; + } + __name(JSONCookies, "JSONCookies"); + function signedCookie(str, secret) { + if (typeof str !== "string") { + return void 0; + } + if (str.substr(0, 2) !== "s:") { + return str; + } + var secrets = !secret || Array.isArray(secret) ? secret || [] : [secret]; + for (var i = 0; i < secrets.length; i++) { + var val = signature.unsign(str.slice(2), secrets[i]); + if (val !== false) { + return val; + } + } + return false; + } + __name(signedCookie, "signedCookie"); + function signedCookies(obj, secret) { + var cookies = Object.keys(obj); + var dec; + var key; + var ret = /* @__PURE__ */ Object.create(null); + var val; + for (var i = 0; i < cookies.length; i++) { + key = cookies[i]; + val = obj[key]; + dec = signedCookie(val, secret); + if (val !== dec) { + ret[key] = dec; + delete obj[key]; + } + } + return ret; + } + __name(signedCookies, "signedCookies"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/ip.js +var require_ip = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/ip.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DEFAULT_IPV6_SUBNET_PREFIX = void 0; + exports.normalizeIp = normalizeIp; + var net_1 = __require("net"); + exports.DEFAULT_IPV6_SUBNET_PREFIX = 64; + function toHextets(address) { + let head = address; + const lastColon = head.lastIndexOf(":"); + const tail = head.slice(lastColon + 1); + if (tail.includes(".")) { + const octets = tail.split(".").map(Number); + if (octets.length !== 4 || octets.some((o) => !Number.isInteger(o) || o < 0 || o > 255)) { + return null; + } + const high = (octets[0] << 8 | octets[1]).toString(16); + const low = (octets[2] << 8 | octets[3]).toString(16); + head = `${head.slice(0, lastColon + 1)}${high}:${low}`; + } + const sides = head.split("::"); + if (sides.length > 2) { + return null; + } + const left = sides[0] ? sides[0].split(":") : []; + const right = sides.length === 2 && sides[1] ? sides[1].split(":") : []; + const fill = sides.length === 2 ? 8 - left.length - right.length : 0; + if (fill < 0 || left.length + fill + right.length !== 8) { + return null; + } + const groups = [...left, ...new Array(fill).fill("0"), ...right]; + const hextets = groups.map((group) => parseInt(group, 16)); + if (hextets.some((hextet) => !Number.isInteger(hextet) || hextet < 0 || hextet > 65535)) { + return null; + } + return hextets; + } + __name(toHextets, "toHextets"); + function maskHextets(hextets, prefix) { + return hextets.map((hextet, index) => { + const bitsBefore = index * 16; + if (prefix >= bitsBefore + 16) { + return hextet; + } + if (prefix <= bitsBefore) { + return 0; + } + const keep = prefix - bitsBefore; + return hextet & (65535 << 16 - keep & 65535); + }); + } + __name(maskHextets, "maskHextets"); + function formatIpv6(hextets) { + let bestStart = -1; + let bestLength = 0; + let runStart = -1; + let runLength = 0; + for (let index = 0; index < hextets.length; index++) { + if (hextets[index] !== 0) { + runStart = -1; + runLength = 0; + continue; + } + if (runStart === -1) { + runStart = index; + } + runLength++; + if (runLength > bestLength) { + bestStart = runStart; + bestLength = runLength; + } + } + const groups = hextets.map((hextet) => hextet.toString(16)); + if (bestLength < 2) { + return groups.join(":"); + } + return `${groups.slice(0, bestStart).join(":")}::${groups.slice(bestStart + bestLength).join(":")}`; + } + __name(formatIpv6, "formatIpv6"); + function normalizeIp(ip, ipv6SubnetPrefix = exports.DEFAULT_IPV6_SUBNET_PREFIX) { + if (typeof ip !== "string" || ip.length === 0) { + return ip; + } + const zoneIndex = ip.indexOf("%"); + const bare = zoneIndex === -1 ? ip : ip.slice(0, zoneIndex); + const version = (0, net_1.isIP)(bare); + if (version === 4) { + return bare; + } + if (version !== 6) { + return ip; + } + const hextets = toHextets(bare.toLowerCase()); + if (!hextets) { + return ip; + } + const isLoopback = hextets[7] === 1 && hextets.slice(0, 7).every((hextet) => hextet === 0); + if (isLoopback) { + return "::1"; + } + const isIpv4Mapped = hextets[0] === 0 && hextets[1] === 0 && hextets[2] === 0 && hextets[3] === 0 && hextets[4] === 0 && hextets[5] === 65535; + if (isIpv4Mapped) { + return [hextets[6] >> 8, hextets[6] & 255, hextets[7] >> 8, hextets[7] & 255].join("."); + } + const prefix = Number.isFinite(ipv6SubnetPrefix) ? Math.min(Math.max(Math.trunc(ipv6SubnetPrefix), 0), 128) : exports.DEFAULT_IPV6_SUBNET_PREFIX; + return `${formatIpv6(maskHextets(hextets, prefix))}/${prefix}`; + } + __name(normalizeIp, "normalizeIp"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler-module-options.interface.js +var require_throttler_module_options_interface = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler-module-options.interface.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler-storage.interface.js +var require_throttler_storage_interface = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler-storage.interface.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ThrottlerStorage = void 0; + exports.ThrottlerStorage = /* @__PURE__ */ Symbol("ThrottlerStorage"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.constants.js +var require_throttler_constants = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.THROTTLER_SKIP = exports.THROTTLER_OPTIONS = exports.THROTTLER_KEY_GENERATOR = exports.THROTTLER_BLOCK_DURATION = exports.THROTTLER_TRACKER = exports.THROTTLER_TTL = exports.THROTTLER_LIMIT = void 0; + exports.THROTTLER_LIMIT = "THROTTLER:LIMIT"; + exports.THROTTLER_TTL = "THROTTLER:TTL"; + exports.THROTTLER_TRACKER = "THROTTLER:TRACKER"; + exports.THROTTLER_BLOCK_DURATION = "THROTTLER:BLOCK_DURATION"; + exports.THROTTLER_KEY_GENERATOR = "THROTTLER:KEY_GENERATOR"; + exports.THROTTLER_OPTIONS = "THROTTLER:MODULE_OPTIONS"; + exports.THROTTLER_SKIP = "THROTTLER:SKIP"; + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.service.js +var require_throttler_service = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.service.js"(exports) { + "use strict"; + var __decorate15 = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ThrottlerStorageService = exports.DEFAULT_SWEEP_INTERVAL = void 0; + var common_1 = (init_common(), __toCommonJS(common_exports)); + var async_hooks_1 = __require("async_hooks"); + exports.DEFAULT_SWEEP_INTERVAL = 6e4; + var ThrottlerStorageService = class ThrottlerStorageService { + static { + __name(this, "ThrottlerStorageService"); + } + constructor() { + this._storage = /* @__PURE__ */ new Map(); + this.hitExpirations = /* @__PURE__ */ new Map(); + this.sweepIntervalMs = exports.DEFAULT_SWEEP_INTERVAL; + this.startSweep = async_hooks_1.AsyncResource.bind(() => { + var _a, _b; + this.sweepInterval = setInterval(() => this.evictIdleRecords(), this.sweepIntervalMs); + (_b = (_a = this.sweepInterval).unref) === null || _b === void 0 ? void 0 : _b.call(_a); + }); + } + ensureSweep() { + if (this.sweepInterval) { + return; + } + this.startSweep(); + } + get storage() { + return this._storage; + } + evictIdleRecords(now = Date.now()) { + for (const [key, record] of this._storage) { + if (record.isBlocked && record.blockExpiresAt > now) { + continue; + } + if (record.expiresAt > now) { + continue; + } + if (this.hasLiveHits(key, now)) { + continue; + } + this.hitExpirations.delete(key); + this._storage.delete(key); + } + } + hasLiveHits(key, now) { + const expirations = this.hitExpirations.get(key); + if (!expirations) { + return false; + } + for (const hits of expirations.values()) { + if (hits.some((expiresAt) => expiresAt > now)) { + return true; + } + } + return false; + } + getHitExpirations(key, throttlerName) { + let expirations = this.hitExpirations.get(key); + if (!expirations) { + expirations = /* @__PURE__ */ new Map(); + this.hitExpirations.set(key, expirations); + } + let hits = expirations.get(throttlerName); + if (!hits) { + hits = []; + expirations.set(throttlerName, hits); + } + return hits; + } + pruneExpiredHits(key, throttlerName, now = Date.now()) { + const hits = this.getHitExpirations(key, throttlerName).filter((expiresAt) => expiresAt > now); + this.hitExpirations.get(key).set(throttlerName, hits); + this.storage.get(key).totalHits.set(throttlerName, hits.length); + } + getExpirationTime(key) { + return Math.ceil((this.storage.get(key).expiresAt - Date.now()) / 1e3); + } + getBlockExpirationTime(key) { + return Math.ceil((this.storage.get(key).blockExpiresAt - Date.now()) / 1e3); + } + resetBlockedRequest(key, throttlerName) { + this.storage.get(key).isBlocked = false; + this.storage.get(key).totalHits.set(throttlerName, 0); + this.hitExpirations.get(key).set(throttlerName, []); + } + fireHitCount(key, throttlerName, ttl) { + const { totalHits } = this.storage.get(key); + totalHits.set(throttlerName, totalHits.get(throttlerName) + 1); + this.getHitExpirations(key, throttlerName).push(Date.now() + ttl); + } + incrementWithoutBlock(key, ttlMilliseconds, limit, throttlerName, timeToExpire) { + const { totalHits } = this.storage.get(key); + const isBlocked = totalHits.get(throttlerName) >= limit; + if (!isBlocked) { + this.fireHitCount(key, throttlerName, ttlMilliseconds); + } + const hits = this.getHitExpirations(key, throttlerName); + const timeToBlockExpire = hits.length ? Math.ceil((Math.min(...hits) - Date.now()) / 1e3) : timeToExpire; + return { + totalHits: totalHits.get(throttlerName) + (isBlocked ? 1 : 0), + timeToExpire, + isBlocked, + timeToBlockExpire: isBlocked ? timeToBlockExpire : 0 + }; + } + async increment(key, ttl, limit, blockDuration, throttlerName) { + const ttlMilliseconds = ttl; + const blockDurationMilliseconds = blockDuration; + this.ensureSweep(); + if (!this.storage.has(key)) { + this.storage.set(key, { + totalHits: /* @__PURE__ */ new Map([[throttlerName, 0]]), + expiresAt: Date.now() + ttlMilliseconds, + blockExpiresAt: 0, + isBlocked: false + }); + } + this.pruneExpiredHits(key, throttlerName); + let timeToExpire = this.getExpirationTime(key); + if (timeToExpire <= 0) { + this.storage.get(key).expiresAt = Date.now() + ttlMilliseconds; + timeToExpire = this.getExpirationTime(key); + } + if (blockDurationMilliseconds <= 0) { + return this.incrementWithoutBlock(key, ttlMilliseconds, limit, throttlerName, timeToExpire); + } + if (!this.storage.get(key).isBlocked) { + this.fireHitCount(key, throttlerName, ttlMilliseconds); + } + if (this.storage.get(key).totalHits.get(throttlerName) > limit && !this.storage.get(key).isBlocked) { + this.storage.get(key).isBlocked = true; + this.storage.get(key).blockExpiresAt = Date.now() + blockDurationMilliseconds; + } + const timeToBlockExpire = this.getBlockExpirationTime(key); + if (timeToBlockExpire <= 0 && this.storage.get(key).isBlocked) { + this.resetBlockedRequest(key, throttlerName); + this.fireHitCount(key, throttlerName, ttlMilliseconds); + } + return { + totalHits: this.storage.get(key).totalHits.get(throttlerName), + timeToExpire, + isBlocked: this.storage.get(key).isBlocked, + timeToBlockExpire + }; + } + onApplicationShutdown() { + if (this.sweepInterval) { + clearInterval(this.sweepInterval); + this.sweepInterval = void 0; + } + this.hitExpirations.clear(); + this._storage.clear(); + } + }; + exports.ThrottlerStorageService = ThrottlerStorageService; + exports.ThrottlerStorageService = ThrottlerStorageService = __decorate15([ + (0, common_1.Injectable)() + ], ThrottlerStorageService); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.providers.js +var require_throttler_providers = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.providers.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getStorageToken = exports.getOptionsToken = exports.ThrottlerStorageProvider = void 0; + exports.createThrottlerProviders = createThrottlerProviders; + var throttler_storage_interface_1 = require_throttler_storage_interface(); + var throttler_constants_1 = require_throttler_constants(); + var throttler_service_1 = require_throttler_service(); + function createThrottlerProviders(options) { + return [ + { + provide: throttler_constants_1.THROTTLER_OPTIONS, + useValue: options + } + ]; + } + __name(createThrottlerProviders, "createThrottlerProviders"); + exports.ThrottlerStorageProvider = { + provide: throttler_storage_interface_1.ThrottlerStorage, + useFactory: /* @__PURE__ */ __name((options) => { + return !Array.isArray(options) && options.storage ? options.storage : new throttler_service_1.ThrottlerStorageService(); + }, "useFactory"), + inject: [throttler_constants_1.THROTTLER_OPTIONS] + }; + var getOptionsToken = /* @__PURE__ */ __name(() => throttler_constants_1.THROTTLER_OPTIONS, "getOptionsToken"); + exports.getOptionsToken = getOptionsToken; + var getStorageToken = /* @__PURE__ */ __name(() => throttler_storage_interface_1.ThrottlerStorage, "getStorageToken"); + exports.getStorageToken = getStorageToken; + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.decorator.js +var require_throttler_decorator = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.decorator.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.InjectThrottlerStorage = exports.InjectThrottlerOptions = exports.SkipThrottle = exports.Throttle = void 0; + var common_1 = (init_common(), __toCommonJS(common_exports)); + var throttler_constants_1 = require_throttler_constants(); + var throttler_providers_1 = require_throttler_providers(); + function setThrottlerMetadata(target, options) { + for (const name in options) { + Reflect.defineMetadata(throttler_constants_1.THROTTLER_TTL + name, options[name].ttl, target); + Reflect.defineMetadata(throttler_constants_1.THROTTLER_LIMIT + name, options[name].limit, target); + Reflect.defineMetadata(throttler_constants_1.THROTTLER_BLOCK_DURATION + name, options[name].blockDuration, target); + Reflect.defineMetadata(throttler_constants_1.THROTTLER_TRACKER + name, options[name].getTracker, target); + Reflect.defineMetadata(throttler_constants_1.THROTTLER_KEY_GENERATOR + name, options[name].generateKey, target); + } + } + __name(setThrottlerMetadata, "setThrottlerMetadata"); + var Throttle3 = /* @__PURE__ */ __name((options) => { + return (target, propertyKey, descriptor) => { + if (descriptor) { + setThrottlerMetadata(descriptor.value, options); + return descriptor; + } + setThrottlerMetadata(target, options); + return target; + }; + }, "Throttle"); + exports.Throttle = Throttle3; + var SkipThrottle = /* @__PURE__ */ __name((skip = { default: true }) => { + return (target, propertyKey, descriptor) => { + var _a; + const reflectionTarget = (_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.value) !== null && _a !== void 0 ? _a : target; + for (const key in skip) { + Reflect.defineMetadata(throttler_constants_1.THROTTLER_SKIP + key, skip[key], reflectionTarget); + } + return descriptor !== null && descriptor !== void 0 ? descriptor : target; + }; + }, "SkipThrottle"); + exports.SkipThrottle = SkipThrottle; + var InjectThrottlerOptions = /* @__PURE__ */ __name(() => (0, common_1.Inject)((0, throttler_providers_1.getOptionsToken)()), "InjectThrottlerOptions"); + exports.InjectThrottlerOptions = InjectThrottlerOptions; + var InjectThrottlerStorage = /* @__PURE__ */ __name(() => (0, common_1.Inject)((0, throttler_providers_1.getStorageToken)()), "InjectThrottlerStorage"); + exports.InjectThrottlerStorage = InjectThrottlerStorage; + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.exception.js +var require_throttler_exception = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.exception.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ThrottlerException = exports.throttlerMessage = void 0; + var common_1 = (init_common(), __toCommonJS(common_exports)); + exports.throttlerMessage = "ThrottlerException: Too Many Requests"; + var ThrottlerException = class extends common_1.HttpException { + static { + __name(this, "ThrottlerException"); + } + constructor(message) { + super(`${message || exports.throttlerMessage}`, common_1.HttpStatus.TOO_MANY_REQUESTS); + } + }; + exports.ThrottlerException = ThrottlerException; + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/hash.js +var require_hash = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/hash.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sha256 = sha256; + var crypto = __require("node:crypto"); + function sha256(text) { + return crypto.createHash("sha256").update(text).digest("hex"); + } + __name(sha256, "sha256"); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.guard.js +var require_throttler_guard = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.guard.js"(exports) { + "use strict"; + var __decorate15 = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var __metadata14 = exports && exports.__metadata || function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); + }; + var __param8 = exports && exports.__param || function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + }; + var ThrottlerGuard_1; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ThrottlerGuard = void 0; + var common_1 = (init_common(), __toCommonJS(common_exports)); + var core_1 = (init_core(), __toCommonJS(core_exports)); + var hash_1 = require_hash(); + var ip_1 = require_ip(); + var throttler_storage_interface_1 = require_throttler_storage_interface(); + var throttler_constants_1 = require_throttler_constants(); + var throttler_decorator_1 = require_throttler_decorator(); + var throttler_exception_1 = require_throttler_exception(); + var ThrottlerGuard2 = ThrottlerGuard_1 = class ThrottlerGuard { + static { + __name(this, "ThrottlerGuard"); + } + constructor(options, storageService, reflector) { + this.options = options; + this.storageService = storageService; + this.reflector = reflector; + this.headerPrefix = "X-RateLimit"; + this.logger = new common_1.Logger(ThrottlerGuard_1.name); + this.errorMessage = throttler_exception_1.throttlerMessage; + this.ipv6SubnetPrefix = ip_1.DEFAULT_IPV6_SUBNET_PREFIX; + } + async onModuleInit() { + var _a, _b, _c; + var _d, _e; + this.throttlers = (Array.isArray(this.options) ? this.options : this.options.throttlers).sort((first, second) => { + if (typeof first.ttl === "function") { + return 1; + } + if (typeof second.ttl === "function") { + return 0; + } + return first.ttl - second.ttl; + }).map((opt) => { + var _a2; + return Object.assign(Object.assign({}, opt), { name: (_a2 = opt.name) !== null && _a2 !== void 0 ? _a2 : "default" }); + }); + if (!this.throttlers.length) { + this.logger.warn("No throttlers are configured, so no request is limited. Provide at least one entry to ThrottlerModule.forRoot() or return one from ThrottlerModule.forRootAsync()."); + } + if (Array.isArray(this.options)) { + this.commonOptions = {}; + } else { + this.commonOptions = { + skipIf: this.options.skipIf, + ignoreUserAgents: this.options.ignoreUserAgents, + getTracker: this.options.getTracker, + generateKey: this.options.generateKey, + setHeaders: this.options.setHeaders + }; + this.ipv6SubnetPrefix = (_a = this.options.ipv6SubnetPrefix) !== null && _a !== void 0 ? _a : ip_1.DEFAULT_IPV6_SUBNET_PREFIX; + } + (_b = (_d = this.commonOptions).getTracker) !== null && _b !== void 0 ? _b : _d.getTracker = this.getTracker.bind(this); + (_c = (_e = this.commonOptions).generateKey) !== null && _c !== void 0 ? _c : _e.generateKey = this.generateKey.bind(this); + } + async canActivate(context) { + var _a; + const handler = context.getHandler(); + const classRef = context.getClass(); + if (await this.shouldSkip(context)) { + return true; + } + const continues = []; + for (const namedThrottler of this.throttlers) { + const skip = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_SKIP + namedThrottler.name, [ + handler, + classRef + ]); + const skipIf = namedThrottler.skipIf || this.commonOptions.skipIf; + if (skip || (skipIf === null || skipIf === void 0 ? void 0 : skipIf(context))) { + continues.push(true); + continue; + } + const routeOrClassLimit = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_LIMIT + namedThrottler.name, [handler, classRef]); + const routeOrClassTtl = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_TTL + namedThrottler.name, [handler, classRef]); + const routeOrClassBlockDuration = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_BLOCK_DURATION + namedThrottler.name, [handler, classRef]); + const routeOrClassGetTracker = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_TRACKER + namedThrottler.name, [handler, classRef]); + const routeOrClassGetKeyGenerator = this.reflector.getAllAndOverride(throttler_constants_1.THROTTLER_KEY_GENERATOR + namedThrottler.name, [handler, classRef]); + const limit = this.toNumber(await this.resolveValue(context, routeOrClassLimit !== null && routeOrClassLimit !== void 0 ? routeOrClassLimit : namedThrottler.limit), "limit", namedThrottler.name); + const ttl = this.toNumber(await this.resolveValue(context, routeOrClassTtl !== null && routeOrClassTtl !== void 0 ? routeOrClassTtl : namedThrottler.ttl), "ttl", namedThrottler.name); + const blockDuration = this.toNumber(await this.resolveValue(context, (_a = routeOrClassBlockDuration !== null && routeOrClassBlockDuration !== void 0 ? routeOrClassBlockDuration : namedThrottler.blockDuration) !== null && _a !== void 0 ? _a : ttl), "blockDuration", namedThrottler.name); + const getTracker = routeOrClassGetTracker || namedThrottler.getTracker || this.commonOptions.getTracker; + const generateKey = routeOrClassGetKeyGenerator || namedThrottler.generateKey || this.commonOptions.generateKey; + continues.push(await this.handleRequest({ + context, + limit, + ttl, + throttler: namedThrottler, + blockDuration, + getTracker, + generateKey + })); + } + return continues.every((cont) => cont); + } + async shouldSkip(_context) { + return false; + } + async handleRequest(requestProps) { + var _a, _b, _c; + const { context, limit, ttl, throttler, blockDuration, getTracker, generateKey } = requestProps; + const { req, res } = this.getRequestResponse(context); + const ignoreUserAgents = (_a = throttler.ignoreUserAgents) !== null && _a !== void 0 ? _a : this.commonOptions.ignoreUserAgents; + if (Array.isArray(ignoreUserAgents)) { + for (const pattern of ignoreUserAgents) { + if (pattern.test(req.headers["user-agent"])) { + return true; + } + } + } + const tracker = await getTracker(req, context); + const key = generateKey(context, tracker, throttler.name); + const { totalHits, timeToExpire, isBlocked, timeToBlockExpire } = await this.storageService.increment(key, ttl, limit, blockDuration, throttler.name); + const getThrottlerSuffix = /* @__PURE__ */ __name((name) => name === "default" ? "" : `-${name}`, "getThrottlerSuffix"); + const setHeaders = (_c = (_b = throttler.setHeaders) !== null && _b !== void 0 ? _b : this.commonOptions.setHeaders) !== null && _c !== void 0 ? _c : true; + if (isBlocked) { + if (setHeaders) { + this.setResponseHeader(res, `Retry-After${getThrottlerSuffix(throttler.name)}`, timeToBlockExpire); + } + await this.throwThrottlingException(context, { + limit, + ttl, + key, + tracker, + totalHits, + timeToExpire, + isBlocked, + timeToBlockExpire + }); + } + if (setHeaders) { + this.setResponseHeader(res, `${this.headerPrefix}-Limit${getThrottlerSuffix(throttler.name)}`, limit); + this.setResponseHeader(res, `${this.headerPrefix}-Remaining${getThrottlerSuffix(throttler.name)}`, Math.max(0, limit - totalHits)); + this.setResponseHeader(res, `${this.headerPrefix}-Reset${getThrottlerSuffix(throttler.name)}`, timeToExpire); + } + return true; + } + async getTracker(req) { + return (0, ip_1.normalizeIp)(req.ip, this.ipv6SubnetPrefix); + } + setResponseHeader(res, name, value) { + if (typeof res.header === "function") { + res.header(name, value); + } else if (typeof res.setHeader === "function") { + res.setHeader(name, value); + } + } + getRequestResponse(context) { + const http = context.switchToHttp(); + return { req: http.getRequest(), res: http.getResponse() }; + } + generateKey(context, suffix, name) { + const prefix = `${context.getClass().name}-${context.getHandler().name}-${name}`; + return (0, hash_1.sha256)(`${prefix}-${suffix}`); + } + async throwThrottlingException(context, throttlerLimitDetail) { + throw new throttler_exception_1.ThrottlerException(await this.getErrorMessage(context, throttlerLimitDetail)); + } + async getErrorMessage(context, throttlerLimitDetail) { + if (!Array.isArray(this.options)) { + if (!this.options.errorMessage) + return this.errorMessage; + return typeof this.options.errorMessage === "function" ? this.options.errorMessage(context, throttlerLimitDetail) : this.options.errorMessage; + } + return this.errorMessage; + } + toNumber(value, option, throttlerName) { + const number = typeof value === "string" && value.trim() !== "" ? Number(value) : value; + if (typeof number !== "number" || Number.isNaN(number)) { + throw new Error(`Invalid "${option}" for the "${throttlerName}" throttler: expected a number, got ${JSON.stringify(value)}.`); + } + return number; + } + async resolveValue(context, resolvableValue) { + return typeof resolvableValue === "function" ? resolvableValue(context) : resolvableValue; + } + }; + exports.ThrottlerGuard = ThrottlerGuard2; + exports.ThrottlerGuard = ThrottlerGuard2 = ThrottlerGuard_1 = __decorate15([ + (0, common_1.Injectable)(), + __param8(0, (0, throttler_decorator_1.InjectThrottlerOptions)()), + __param8(1, (0, throttler_decorator_1.InjectThrottlerStorage)()), + __metadata14("design:paramtypes", [Object, Object, core_1.Reflector]) + ], ThrottlerGuard2); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.guard.interface.js +var require_throttler_guard_interface = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.guard.interface.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.module.js +var require_throttler_module = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/throttler.module.js"(exports) { + "use strict"; + var __decorate15 = exports && exports.__decorate || function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + var ThrottlerModule_1; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ThrottlerModule = void 0; + var common_1 = (init_common(), __toCommonJS(common_exports)); + var throttler_constants_1 = require_throttler_constants(); + var throttler_providers_1 = require_throttler_providers(); + var ThrottlerModule2 = ThrottlerModule_1 = class ThrottlerModule { + static { + __name(this, "ThrottlerModule"); + } + static forRoot(options = []) { + const providers = [...(0, throttler_providers_1.createThrottlerProviders)(options), throttler_providers_1.ThrottlerStorageProvider]; + return { + module: ThrottlerModule_1, + providers, + exports: providers + }; + } + static forRootAsync(options) { + const providers = [...this.createAsyncProviders(options), throttler_providers_1.ThrottlerStorageProvider]; + return { + module: ThrottlerModule_1, + imports: options.imports || [], + providers, + exports: providers + }; + } + static createAsyncProviders(options) { + if (options.useExisting || options.useFactory) { + return [this.createAsyncOptionsProvider(options)]; + } + return [ + this.createAsyncOptionsProvider(options), + { + provide: options.useClass, + useClass: options.useClass + } + ]; + } + static createAsyncOptionsProvider(options) { + if (options.useFactory) { + return { + provide: throttler_constants_1.THROTTLER_OPTIONS, + useFactory: options.useFactory, + inject: options.inject || [] + }; + } + return { + provide: throttler_constants_1.THROTTLER_OPTIONS, + useFactory: /* @__PURE__ */ __name(async (optionsFactory) => await optionsFactory.createThrottlerOptions(), "useFactory"), + inject: [options.useExisting || options.useClass] + }; + } + }; + exports.ThrottlerModule = ThrottlerModule2; + exports.ThrottlerModule = ThrottlerModule2 = ThrottlerModule_1 = __decorate15([ + (0, common_1.Global)(), + (0, common_1.Module)({}) + ], ThrottlerModule2); + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/utilities.js +var require_utilities = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/utilities.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.weeks = exports.days = exports.hours = exports.minutes = exports.seconds = void 0; + var seconds = /* @__PURE__ */ __name((howMany) => howMany * 1e3, "seconds"); + exports.seconds = seconds; + var minutes = /* @__PURE__ */ __name((howMany) => 60 * howMany * (0, exports.seconds)(1), "minutes"); + exports.minutes = minutes; + var hours = /* @__PURE__ */ __name((howMany) => 60 * howMany * (0, exports.minutes)(1), "hours"); + exports.hours = hours; + var days = /* @__PURE__ */ __name((howMany) => 24 * howMany * (0, exports.hours)(1), "days"); + exports.days = days; + var weeks = /* @__PURE__ */ __name((howMany) => 7 * howMany * (0, exports.days)(1), "weeks"); + exports.weeks = weeks; + } +}); + +// ../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/index.js +var require_dist = __commonJS({ + "../../node_modules/.pnpm/@nestjs+throttler@6.7.1_@ne_8947d8974bd7ad1fe5135dd2888a680f/node_modules/@nestjs/throttler/dist/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: /* @__PURE__ */ __name(function() { + return m[k]; + }, "get") }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getStorageToken = exports.getOptionsToken = void 0; + __exportStar(require_ip(), exports); + __exportStar(require_throttler_module_options_interface(), exports); + __exportStar(require_throttler_storage_interface(), exports); + __exportStar(require_throttler_decorator(), exports); + __exportStar(require_throttler_exception(), exports); + __exportStar(require_throttler_guard(), exports); + __exportStar(require_throttler_guard_interface(), exports); + __exportStar(require_throttler_module(), exports); + var throttler_providers_1 = require_throttler_providers(); + Object.defineProperty(exports, "getOptionsToken", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throttler_providers_1.getOptionsToken; + }, "get") }); + Object.defineProperty(exports, "getStorageToken", { enumerable: true, get: /* @__PURE__ */ __name(function() { + return throttler_providers_1.getStorageToken; + }, "get") }); + __exportStar(require_throttler_service(), exports); + __exportStar(require_utilities(), exports); + } +}); + +// dist/main.js +init_core(); +var import_cookie_parser = __toESM(require_cookie_parser(), 1); + +// ../../node_modules/.pnpm/helmet@8.3.0/node_modules/helmet/index.mjs +var dashify = /* @__PURE__ */ __name((str) => str.replace(/[A-Z]/g, (capitalLetter) => "-" + capitalLetter.toLowerCase()), "dashify"); +var errify = /* @__PURE__ */ __name((err) => err instanceof Error ? err : new Error(String(err)), "errify"); +var isString = /* @__PURE__ */ __name((value) => typeof value === "string", "isString"); +var throwErrorIfExists = /* @__PURE__ */ __name((err) => { + if (err) throw err; +}, "throwErrorIfExists"); +var dangerouslyDisableDefaultSrc = /* @__PURE__ */ Symbol("dangerouslyDisableDefaultSrc"); +var SHOULD_BE_QUOTED = /* @__PURE__ */ new Set(["none", "self", "strict-dynamic", "report-sample", "inline-speculation-rules", "unsafe-inline", "unsafe-eval", "unsafe-hashes", "wasm-unsafe-eval"]); +var getDefaultDirectives = /* @__PURE__ */ __name(() => ({ + "default-src": ["'self'"], + "base-uri": ["'self'"], + "font-src": ["'self'", "https:", "data:"], + "form-action": ["'self'"], + "frame-ancestors": ["'self'"], + "img-src": ["'self'", "data:"], + "object-src": ["'none'"], + "script-src": ["'self'"], + "script-src-attr": ["'none'"], + "style-src": ["'self'", "https:", "'unsafe-inline'"], + "upgrade-insecure-requests": [] +}), "getDefaultDirectives"); +var parseDirectiveName = /* @__PURE__ */ __name((rawDirectiveName) => { + if (rawDirectiveName.length === 0 || !/^[a-z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(rawDirectiveName)) { + throw new Error(`Content-Security-Policy received an invalid directive name ${JSON.stringify(rawDirectiveName)}`); + } + return dashify(rawDirectiveName); +}, "parseDirectiveName"); +var getDirectiveValueValidationError = /* @__PURE__ */ __name((directiveName, directiveValue) => /;|,/.test(directiveValue) ? new Error(`Content-Security-Policy received an invalid directive value for ${JSON.stringify(directiveName)}`) : null, "getDirectiveValueValidationError"); +var getDirectiveValueEntryValidationError = /* @__PURE__ */ __name((directiveName, directiveValueEntry) => SHOULD_BE_QUOTED.has(directiveValueEntry) || directiveValueEntry.startsWith("nonce-") || directiveValueEntry.startsWith("sha256-") || directiveValueEntry.startsWith("sha384-") || directiveValueEntry.startsWith("sha512-") ? new Error(`Content-Security-Policy received an invalid directive value for ${JSON.stringify(directiveName)}. ${JSON.stringify(directiveValueEntry)} should be quoted`) : null, "getDirectiveValueEntryValidationError"); +var stringifyDirectiveValue = /* @__PURE__ */ __name((directiveValue) => { + if (Array.isArray(directiveValue)) { + return directiveValue.every(isString) ? directiveValue.join(" ") : null; + } + if (directiveValue instanceof Set) { + return stringifyDirectiveValue(Array.from(directiveValue)); + } + return null; +}, "stringifyDirectiveValue"); +var parseDirectives = /* @__PURE__ */ __name(({ useDefaults = true, directives: rawDirectives = {} }) => { + const result = new Map(useDefaults ? Object.entries(getDefaultDirectives()) : []); + let hasDisabledDefaultSrc = false; + const directiveNamesSeen = /* @__PURE__ */ new Set(); + for (const rawDirectiveName in rawDirectives) { + if (!Object.hasOwn(rawDirectives, rawDirectiveName)) { + continue; + } + const directiveName = parseDirectiveName(rawDirectiveName); + if (directiveNamesSeen.has(directiveName)) { + throw new Error(`Content-Security-Policy received a duplicate directive ${JSON.stringify(directiveName)}`); + } + directiveNamesSeen.add(directiveName); + const rawDirectiveValue = rawDirectives[rawDirectiveName]; + let directiveValue; + if (rawDirectiveValue === null) { + if (directiveName === "default-src") { + throw new Error("Content-Security-Policy needs a default-src but it was set to `null`. If you really want to disable it, set it to `contentSecurityPolicy.dangerouslyDisableDefaultSrc`."); + } + result.delete(directiveName); + continue; + } else if (typeof rawDirectiveValue === "string") { + directiveValue = [rawDirectiveValue]; + } else if (rawDirectiveValue === dangerouslyDisableDefaultSrc) { + if (directiveName === "default-src") { + hasDisabledDefaultSrc = true; + result.delete(directiveName); + continue; + } else { + throw new Error(`Content-Security-Policy: tried to disable ${JSON.stringify(directiveName)} as if it were default-src; simply omit the key`); + } + } else if (rawDirectiveValue) { + directiveValue = rawDirectiveValue; + } else { + throw new Error(`Content-Security-Policy received an invalid directive value for ${JSON.stringify(directiveName)}`); + } + for (const element of directiveValue) { + if (typeof element !== "string") continue; + throwErrorIfExists(getDirectiveValueValidationError(directiveName, element) ?? getDirectiveValueEntryValidationError(directiveName, element)); + } + result.set(directiveName, directiveValue); + } + if (!result.size) { + throw new Error("Content-Security-Policy has no directives. Either set some or disable the header"); + } + if (!result.has("default-src") && !hasDisabledDefaultSrc) { + throw new Error("Content-Security-Policy needs a default-src but none was provided. If you really want to disable it, set it to `contentSecurityPolicy.dangerouslyDisableDefaultSrc`."); + } + let stringResult = ""; + let shouldUseStringResult = true; + for (const [directiveName, directiveValue] of result) { + const directiveValueString = stringifyDirectiveValue(directiveValue); + if (directiveValueString === null) { + shouldUseStringResult = false; + break; + } else { + if (stringResult) stringResult += ";"; + stringResult += directiveValueString ? `${directiveName} ${directiveValueString}` : directiveName; + } + } + return shouldUseStringResult ? stringResult : result; +}, "parseDirectives"); +function getHeaderValue(req, res, normalizedDirectives) { + const result = []; + for (const [directiveName, rawDirectiveValue] of normalizedDirectives) { + let directiveValue = ""; + for (const element of rawDirectiveValue) { + if (typeof element === "function") { + let newElement; + try { + newElement = element(req, res); + } catch (err2) { + return errify(err2); + } + const err = getDirectiveValueEntryValidationError(directiveName, newElement); + if (err) return err; + directiveValue += " " + newElement; + } else { + directiveValue += " " + element; + } + } + if (directiveValue) { + const err = getDirectiveValueValidationError(directiveName, directiveValue); + if (err) return err; + result.push(`${directiveName}${directiveValue}`); + } else { + result.push(directiveName); + } + } + return result.join(";"); +} +__name(getHeaderValue, "getHeaderValue"); +var contentSecurityPolicy = /* @__PURE__ */ __name(function contentSecurityPolicy2(options = {}) { + const headerName = options.reportOnly ? "Content-Security-Policy-Report-Only" : "Content-Security-Policy"; + const parsedDirectives = parseDirectives(options); + if (typeof parsedDirectives === "string") { + return /* @__PURE__ */ __name(function contentSecurityPolicyMiddleware(_req, res, next) { + res.setHeader(headerName, parsedDirectives); + next(); + }, "contentSecurityPolicyMiddleware"); + } + return /* @__PURE__ */ __name(function contentSecurityPolicyMiddleware(req, res, next) { + const result = getHeaderValue(req, res, parsedDirectives); + if (result instanceof Error) { + next(result); + } else { + res.setHeader(headerName, result); + next(); + } + }, "contentSecurityPolicyMiddleware"); +}, "contentSecurityPolicy"); +contentSecurityPolicy.getDefaultDirectives = getDefaultDirectives; +contentSecurityPolicy.dangerouslyDisableDefaultSrc = dangerouslyDisableDefaultSrc; +var ALLOWED_POLICIES$2 = /* @__PURE__ */ new Set(["require-corp", "credentialless", "unsafe-none"]); +function getHeaderValueFromOptions$6({ policy = "require-corp" }) { + if (ALLOWED_POLICIES$2.has(policy)) { + return policy; + } else { + throw new Error(`Cross-Origin-Embedder-Policy does not support the ${JSON.stringify(policy)} policy`); + } +} +__name(getHeaderValueFromOptions$6, "getHeaderValueFromOptions$6"); +function crossOriginEmbedderPolicy(options = {}) { + const headerValue = getHeaderValueFromOptions$6(options); + return /* @__PURE__ */ __name(function crossOriginEmbedderPolicyMiddleware(_req, res, next) { + res.setHeader("Cross-Origin-Embedder-Policy", headerValue); + next(); + }, "crossOriginEmbedderPolicyMiddleware"); +} +__name(crossOriginEmbedderPolicy, "crossOriginEmbedderPolicy"); +var ALLOWED_POLICIES$1 = /* @__PURE__ */ new Set(["same-origin", "same-origin-allow-popups", "noopener-allow-popups", "unsafe-none"]); +function getHeaderValueFromOptions$5({ policy = "same-origin" }) { + if (ALLOWED_POLICIES$1.has(policy)) { + return policy; + } else { + throw new Error(`Cross-Origin-Opener-Policy does not support the ${JSON.stringify(policy)} policy`); + } +} +__name(getHeaderValueFromOptions$5, "getHeaderValueFromOptions$5"); +function crossOriginOpenerPolicy(options = {}) { + const headerValue = getHeaderValueFromOptions$5(options); + return /* @__PURE__ */ __name(function crossOriginOpenerPolicyMiddleware(_req, res, next) { + res.setHeader("Cross-Origin-Opener-Policy", headerValue); + next(); + }, "crossOriginOpenerPolicyMiddleware"); +} +__name(crossOriginOpenerPolicy, "crossOriginOpenerPolicy"); +var ALLOWED_POLICIES = /* @__PURE__ */ new Set(["same-origin", "same-site", "cross-origin"]); +function getHeaderValueFromOptions$4({ policy = "same-origin" }) { + if (ALLOWED_POLICIES.has(policy)) { + return policy; + } else { + throw new Error(`Cross-Origin-Resource-Policy does not support the ${JSON.stringify(policy)} policy`); + } +} +__name(getHeaderValueFromOptions$4, "getHeaderValueFromOptions$4"); +function crossOriginResourcePolicy(options = {}) { + const headerValue = getHeaderValueFromOptions$4(options); + return /* @__PURE__ */ __name(function crossOriginResourcePolicyMiddleware(_req, res, next) { + res.setHeader("Cross-Origin-Resource-Policy", headerValue); + next(); + }, "crossOriginResourcePolicyMiddleware"); +} +__name(crossOriginResourcePolicy, "crossOriginResourcePolicy"); +function originAgentCluster() { + return /* @__PURE__ */ __name(function originAgentClusterMiddleware(_req, res, next) { + res.setHeader("Origin-Agent-Cluster", "?1"); + next(); + }, "originAgentClusterMiddleware"); +} +__name(originAgentCluster, "originAgentCluster"); +var ALLOWED_TOKENS = /* @__PURE__ */ new Set(["no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url", ""]); +function getHeaderValueFromOptions$3({ policy = ["no-referrer"] }) { + const tokens = typeof policy === "string" ? [policy] : policy; + if (tokens.length === 0) { + throw new Error("Referrer-Policy received no policy tokens"); + } + const tokensSeen = /* @__PURE__ */ new Set(); + tokens.forEach((token) => { + if (!ALLOWED_TOKENS.has(token)) { + throw new Error(`Referrer-Policy received an unexpected policy token ${JSON.stringify(token)}`); + } else if (tokensSeen.has(token)) { + throw new Error(`Referrer-Policy received a duplicate policy token ${JSON.stringify(token)}`); + } + tokensSeen.add(token); + }); + return tokens.join(","); +} +__name(getHeaderValueFromOptions$3, "getHeaderValueFromOptions$3"); +function referrerPolicy(options = {}) { + const headerValue = getHeaderValueFromOptions$3(options); + return /* @__PURE__ */ __name(function referrerPolicyMiddleware(_req, res, next) { + res.setHeader("Referrer-Policy", headerValue); + next(); + }, "referrerPolicyMiddleware"); +} +__name(referrerPolicy, "referrerPolicy"); +var DEFAULT_MAX_AGE = 365 * 24 * 60 * 60; +function parseMaxAge(value = DEFAULT_MAX_AGE) { + if (value >= 0 && Number.isFinite(value)) { + return Math.floor(value); + } else { + throw new Error(`Strict-Transport-Security: ${JSON.stringify(value)} is not a valid value for maxAge. Please choose a positive integer.`); + } +} +__name(parseMaxAge, "parseMaxAge"); +function getHeaderValueFromOptions$2(options) { + if ("maxage" in options) { + throw new Error("Strict-Transport-Security received an unsupported property, `maxage`. Did you mean to pass `maxAge`?"); + } + if ("includeSubdomains" in options) { + throw new Error('Strict-Transport-Security middleware should use `includeSubDomains` instead of `includeSubdomains`. (The correct one has an uppercase "D".)'); + } + const directives = [`max-age=${parseMaxAge(options.maxAge)}`]; + if (options.includeSubDomains === void 0 || options.includeSubDomains) { + directives.push("includeSubDomains"); + } + if (options.preload) { + directives.push("preload"); + } + return directives.join("; "); +} +__name(getHeaderValueFromOptions$2, "getHeaderValueFromOptions$2"); +function strictTransportSecurity(options = {}) { + const headerValue = getHeaderValueFromOptions$2(options); + return /* @__PURE__ */ __name(function strictTransportSecurityMiddleware(_req, res, next) { + res.setHeader("Strict-Transport-Security", headerValue); + next(); + }, "strictTransportSecurityMiddleware"); +} +__name(strictTransportSecurity, "strictTransportSecurity"); +function xContentTypeOptions() { + return /* @__PURE__ */ __name(function xContentTypeOptionsMiddleware(_req, res, next) { + res.setHeader("X-Content-Type-Options", "nosniff"); + next(); + }, "xContentTypeOptionsMiddleware"); +} +__name(xContentTypeOptions, "xContentTypeOptions"); +function xDnsPrefetchControl(options = {}) { + const headerValue = options.allow ? "on" : "off"; + return /* @__PURE__ */ __name(function xDnsPrefetchControlMiddleware(_req, res, next) { + res.setHeader("X-DNS-Prefetch-Control", headerValue); + next(); + }, "xDnsPrefetchControlMiddleware"); +} +__name(xDnsPrefetchControl, "xDnsPrefetchControl"); +function xDownloadOptions() { + return /* @__PURE__ */ __name(function xDownloadOptionsMiddleware(_req, res, next) { + res.setHeader("X-Download-Options", "noopen"); + next(); + }, "xDownloadOptionsMiddleware"); +} +__name(xDownloadOptions, "xDownloadOptions"); +function getHeaderValueFromOptions$1({ action = "sameorigin" }) { + const normalizedAction = typeof action === "string" ? action.toUpperCase() : action; + switch (normalizedAction) { + case "SAME-ORIGIN": + return "SAMEORIGIN"; + case "DENY": + case "SAMEORIGIN": + return normalizedAction; + default: + throw new Error(`X-Frame-Options received an invalid action ${JSON.stringify(action)}`); + } +} +__name(getHeaderValueFromOptions$1, "getHeaderValueFromOptions$1"); +function xFrameOptions(options = {}) { + const headerValue = getHeaderValueFromOptions$1(options); + return /* @__PURE__ */ __name(function xFrameOptionsMiddleware(_req, res, next) { + res.setHeader("X-Frame-Options", headerValue); + next(); + }, "xFrameOptionsMiddleware"); +} +__name(xFrameOptions, "xFrameOptions"); +var ALLOWED_PERMITTED_POLICIES = /* @__PURE__ */ new Set(["none", "master-only", "by-content-type", "all"]); +function getHeaderValueFromOptions({ permittedPolicies = "none" }) { + if (ALLOWED_PERMITTED_POLICIES.has(permittedPolicies)) { + return permittedPolicies; + } else { + throw new Error(`X-Permitted-Cross-Domain-Policies does not support ${JSON.stringify(permittedPolicies)}`); + } +} +__name(getHeaderValueFromOptions, "getHeaderValueFromOptions"); +function xPermittedCrossDomainPolicies(options = {}) { + const headerValue = getHeaderValueFromOptions(options); + return /* @__PURE__ */ __name(function xPermittedCrossDomainPoliciesMiddleware(_req, res, next) { + res.setHeader("X-Permitted-Cross-Domain-Policies", headerValue); + next(); + }, "xPermittedCrossDomainPoliciesMiddleware"); +} +__name(xPermittedCrossDomainPolicies, "xPermittedCrossDomainPolicies"); +function xPoweredBy() { + return /* @__PURE__ */ __name(function xPoweredByMiddleware(_req, res, next) { + res.removeHeader("X-Powered-By"); + next(); + }, "xPoweredByMiddleware"); +} +__name(xPoweredBy, "xPoweredBy"); +function xXssProtection() { + return /* @__PURE__ */ __name(function xXssProtectionMiddleware(_req, res, next) { + res.setHeader("X-XSS-Protection", "0"); + next(); + }, "xXssProtectionMiddleware"); +} +__name(xXssProtection, "xXssProtection"); +function getMiddlewareFunctionsFromOptions(options) { + const result = []; + switch (options.contentSecurityPolicy) { + case void 0: + case true: + result.push(contentSecurityPolicy()); + break; + case false: + break; + default: + result.push(contentSecurityPolicy(options.contentSecurityPolicy)); + break; + } + switch (options.crossOriginEmbedderPolicy) { + case void 0: + case false: + break; + case true: + result.push(crossOriginEmbedderPolicy()); + break; + default: + result.push(crossOriginEmbedderPolicy(options.crossOriginEmbedderPolicy)); + break; + } + switch (options.crossOriginOpenerPolicy) { + case void 0: + case true: + result.push(crossOriginOpenerPolicy()); + break; + case false: + break; + default: + result.push(crossOriginOpenerPolicy(options.crossOriginOpenerPolicy)); + break; + } + switch (options.crossOriginResourcePolicy) { + case void 0: + case true: + result.push(crossOriginResourcePolicy()); + break; + case false: + break; + default: + result.push(crossOriginResourcePolicy(options.crossOriginResourcePolicy)); + break; + } + switch (options.originAgentCluster) { + case void 0: + case true: + result.push(originAgentCluster()); + break; + case false: + break; + default: + console.warn("Origin-Agent-Cluster does not take options. Remove the property to silence this warning."); + result.push(originAgentCluster()); + break; + } + switch (options.referrerPolicy) { + case void 0: + case true: + result.push(referrerPolicy()); + break; + case false: + break; + default: + result.push(referrerPolicy(options.referrerPolicy)); + break; + } + if ("strictTransportSecurity" in options && "hsts" in options) { + throw new Error("Strict-Transport-Security option was specified twice. Remove the `hsts` option to fix this error."); + } + const strictTransportSecurityOption = options.strictTransportSecurity ?? options.hsts; + switch (strictTransportSecurityOption) { + case void 0: + case true: + result.push(strictTransportSecurity()); + break; + case false: + break; + default: + result.push(strictTransportSecurity(strictTransportSecurityOption)); + break; + } + if ("xContentTypeOptions" in options && "noSniff" in options) { + throw new Error("X-Content-Type-Options option was specified twice. Remove the `noSniff` option to fix this error."); + } + const xContentTypeOptionsOption = options.xContentTypeOptions ?? options.noSniff; + switch (xContentTypeOptionsOption) { + case void 0: + case true: + result.push(xContentTypeOptions()); + break; + case false: + break; + default: + console.warn("X-Content-Type-Options does not take options. Remove the property to silence this warning."); + result.push(xContentTypeOptions()); + break; + } + if ("xDnsPrefetchControl" in options && "dnsPrefetchControl" in options) { + throw new Error("X-DNS-Prefetch-Control option was specified twice. Remove the `dnsPrefetchControl` option to fix this error."); + } + const xDnsPrefetchControlOption = options.xDnsPrefetchControl ?? options.dnsPrefetchControl; + switch (xDnsPrefetchControlOption) { + case void 0: + case true: + result.push(xDnsPrefetchControl()); + break; + case false: + break; + default: + result.push(xDnsPrefetchControl(xDnsPrefetchControlOption)); + break; + } + if ("xDownloadOptions" in options && "ieNoOpen" in options) { + throw new Error("X-Download-Options option was specified twice. Remove the `ieNoOpen` option to fix this error."); + } + const xDownloadOptionsOption = options.xDownloadOptions ?? options.ieNoOpen; + switch (xDownloadOptionsOption) { + case void 0: + case true: + result.push(xDownloadOptions()); + break; + case false: + break; + default: + console.warn("X-Download-Options does not take options. Remove the property to silence this warning."); + result.push(xDownloadOptions()); + break; + } + if ("xFrameOptions" in options && "frameguard" in options) { + throw new Error("X-Frame-Options option was specified twice. Remove the `frameguard` option to fix this error."); + } + const xFrameOptionsOption = options.xFrameOptions ?? options.frameguard; + switch (xFrameOptionsOption) { + case void 0: + case true: + result.push(xFrameOptions()); + break; + case false: + break; + default: + result.push(xFrameOptions(xFrameOptionsOption)); + break; + } + if ("xPermittedCrossDomainPolicies" in options && "permittedCrossDomainPolicies" in options) { + throw new Error("X-Permitted-Cross-Domain-Policies option was specified twice. Remove the `permittedCrossDomainPolicies` option to fix this error."); + } + const xPermittedCrossDomainPoliciesOption = options.xPermittedCrossDomainPolicies ?? options.permittedCrossDomainPolicies; + switch (xPermittedCrossDomainPoliciesOption) { + case void 0: + case true: + result.push(xPermittedCrossDomainPolicies()); + break; + case false: + break; + default: + result.push(xPermittedCrossDomainPolicies(xPermittedCrossDomainPoliciesOption)); + break; + } + if ("xPoweredBy" in options && "hidePoweredBy" in options) { + throw new Error("X-Powered-By option was specified twice. Remove the `hidePoweredBy` option to fix this error."); + } + const xPoweredByOption = options.xPoweredBy ?? options.hidePoweredBy; + switch (xPoweredByOption) { + case void 0: + case true: + result.push(xPoweredBy()); + break; + case false: + break; + default: + console.warn("X-Powered-By does not take options. Remove the property to silence this warning."); + result.push(xPoweredBy()); + break; + } + if ("xXssProtection" in options && "xssFilter" in options) { + throw new Error("X-XSS-Protection option was specified twice. Remove the `xssFilter` option to fix this error."); + } + const xXssProtectionOption = options.xXssProtection ?? options.xssFilter; + switch (xXssProtectionOption) { + case void 0: + case true: + result.push(xXssProtection()); + break; + case false: + break; + default: + console.warn("X-XSS-Protection does not take options. Remove the property to silence this warning."); + result.push(xXssProtection()); + break; + } + return result; +} +__name(getMiddlewareFunctionsFromOptions, "getMiddlewareFunctionsFromOptions"); +var helmet = Object.assign( + /* @__PURE__ */ __name(function helmet2(options = {}) { + if (options.constructor?.name === "IncomingMessage") { + throw new Error("It appears you have done something like `app.use(helmet)`, but it should be `app.use(helmet())`."); + } + const middlewareFunctions = getMiddlewareFunctionsFromOptions(options); + return /* @__PURE__ */ __name(function helmetMiddleware(req, res, next) { + let middlewareIndex = 0; + (/* @__PURE__ */ __name((function internalNext(err) { + if (err) { + next(err); + return; + } + const middlewareFunction = middlewareFunctions[middlewareIndex]; + if (middlewareFunction) { + middlewareIndex++; + middlewareFunction(req, res, internalNext); + } else { + next(); + } + }), "internalNext"))(); + }, "helmetMiddleware"); + }, "helmet"), + { + contentSecurityPolicy, + crossOriginEmbedderPolicy, + crossOriginOpenerPolicy, + crossOriginResourcePolicy, + originAgentCluster, + referrerPolicy, + strictTransportSecurity, + xContentTypeOptions, + xDnsPrefetchControl, + xDownloadOptions, + xFrameOptions, + xPermittedCrossDomainPolicies, + xPoweredBy, + xXssProtection, + // Legacy aliases + dnsPrefetchControl: xDnsPrefetchControl, + xssFilter: xXssProtection, + permittedCrossDomainPolicies: xPermittedCrossDomainPolicies, + ieNoOpen: xDownloadOptions, + noSniff: xContentTypeOptions, + frameguard: xFrameOptions, + hidePoweredBy: xPoweredBy, + hsts: strictTransportSecurity + } +); + +// dist/app.module.js +init_common(); +init_core(); +var import_throttler3 = __toESM(require_dist(), 1); + +// dist/auth/auth.controller.js +init_common(); +var import_throttler = __toESM(require_dist(), 1); + +// dist/common/auth.js +init_common(); +init_core(); +var __decorate = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var ROLES_KEY = "roles"; +var JwtAuthGuard = class JwtAuthGuard2 { + static { + __name(this, "JwtAuthGuard"); + } + jwt; + reflector; + prisma; + constructor(jwt, reflector, prisma) { + this.jwt = jwt; + this.reflector = reflector; + this.prisma = prisma; + } + async canActivate(ctx) { + const req = ctx.switchToHttp().getRequest(); + const [scheme, token] = (req.headers.authorization ?? "").split(" "); + if (scheme !== "Bearer" || !token) + throw new UnauthorizedException("\u0627\u0628\u062A\u062F\u0627 \u0648\u0627\u0631\u062F \u0634\u0648\u06CC\u062F"); + let payload; + try { + payload = await this.jwt.verifyAsync(token); + } catch { + throw new UnauthorizedException("\u0646\u0634\u0633\u062A \u0634\u0645\u0627 \u0645\u0646\u0642\u0636\u06CC \u0634\u062F\u0647 \u0627\u0633\u062A"); + } + const user = await this.prisma.adminUser.findUnique({ where: { id: payload.sub } }); + if (!user?.isActive) + throw new UnauthorizedException("\u062D\u0633\u0627\u0628 \u06A9\u0627\u0631\u0628\u0631\u06CC \u063A\u06CC\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062A"); + req.user = { id: user.id, phone: user.phone, name: user.name, role: user.role }; + const roles = this.reflector.getAllAndOverride(ROLES_KEY, [ + ctx.getHandler(), + ctx.getClass() + ]); + if (roles?.length && !roles.includes(user.role)) { + throw new ForbiddenException("\u0628\u0631\u0627\u06CC \u0627\u06CC\u0646 \u06A9\u0627\u0631 \u062F\u0633\u062A\u0631\u0633\u06CC \u0646\u062F\u0627\u0631\u06CC\u062F"); + } + return true; + } +}; +JwtAuthGuard = __decorate([ + Injectable(), + __metadata("design:paramtypes", [ + JwtService, + Reflector, + PrismaService + ]) +], JwtAuthGuard); +var AdminAuth = /* @__PURE__ */ __name((...roles) => applyDecorators(SetMetadata(ROLES_KEY, roles), UseGuards(JwtAuthGuard)), "AdminAuth"); +var Roles = /* @__PURE__ */ __name((...roles) => SetMetadata(ROLES_KEY, roles), "Roles"); +var CurrentUser = createParamDecorator((_, ctx) => ctx.switchToHttp().getRequest().user); + +// dist/common/zod.pipe.js +init_common(); +external_exports.config(external_exports.locales.fa()); +var ZodPipe = class { + static { + __name(this, "ZodPipe"); + } + schema; + constructor(schema) { + this.schema = schema; + } + transform(value) { + const result = this.schema.safeParse(value); + if (!result.success) { + throw new BadRequestException({ + statusCode: 400, + message: "\u0627\u0637\u0644\u0627\u0639\u0627\u062A \u0648\u0627\u0631\u062F\u0634\u062F\u0647 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A", + issues: toIssues(result.error) + }); + } + return result.data; + } +}; +var IdPipe = new ZodPipe(external_exports.coerce.number().int().positive()); + +// dist/auth/auth.controller.js +var __decorate2 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata2 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var COOKIE = "imen_rt"; +var COOKIE_PATH = "/api/admin/auth"; +var ua = /* @__PURE__ */ __name((req) => req.headers["user-agent"] ?? "", "ua"); +var readCookie = /* @__PURE__ */ __name((req) => req.cookies?.[COOKIE], "readCookie"); +var AuthController = class AuthController2 { + static { + __name(this, "AuthController"); + } + auth; + constructor(auth) { + this.auth = auth; + } + async login(body, req, res) { + return this.respond(res, await this.auth.login(body, ua(req))); + } + async refresh(req, res) { + try { + return this.respond(res, await this.auth.refresh(readCookie(req), ua(req))); + } catch (e) { + res.clearCookie(COOKIE, { path: COOKIE_PATH }); + throw e; + } + } + async logout(req, res) { + await this.auth.logout(readCookie(req)); + res.clearCookie(COOKIE, { path: COOKIE_PATH }); + } + me(user) { + return this.auth.me(user.id); + } + async changePassword(body, user) { + await this.auth.changePassword(user.id, body); + } + respond(res, t) { + res.cookie(COOKIE, t.refreshToken, { + httpOnly: true, + secure: isProd && env.COOKIE_SECURE, + sameSite: "strict", + path: COOKIE_PATH, + expires: t.refreshExpiresAt + }); + return { accessToken: t.accessToken, user: t.user }; + } +}; +__decorate2([ + Post("login"), + HttpCode(200), + (0, import_throttler.Throttle)({ default: { limit: 8, ttl: 6e4 } }), + __param(0, Body(new ZodPipe(loginSchema))), + __param(1, Req()), + __param(2, Res({ passthrough: true })), + __metadata2("design:type", Function), + __metadata2("design:paramtypes", [Object, Object, Object]), + __metadata2("design:returntype", Promise) +], AuthController.prototype, "login", null); +__decorate2([ + Post("refresh"), + HttpCode(200), + (0, import_throttler.Throttle)({ default: { limit: 30, ttl: 6e4 } }), + __param(0, Req()), + __param(1, Res({ passthrough: true })), + __metadata2("design:type", Function), + __metadata2("design:paramtypes", [Object, Object]), + __metadata2("design:returntype", Promise) +], AuthController.prototype, "refresh", null); +__decorate2([ + Post("logout"), + HttpCode(204), + __param(0, Req()), + __param(1, Res({ passthrough: true })), + __metadata2("design:type", Function), + __metadata2("design:paramtypes", [Object, Object]), + __metadata2("design:returntype", Promise) +], AuthController.prototype, "logout", null); +__decorate2([ + Get("me"), + AdminAuth(), + __param(0, CurrentUser()), + __metadata2("design:type", Function), + __metadata2("design:paramtypes", [Object]), + __metadata2("design:returntype", void 0) +], AuthController.prototype, "me", null); +__decorate2([ + Post("change-password"), + HttpCode(204), + AdminAuth(), + __param(0, Body(new ZodPipe(changePasswordSchema))), + __param(1, CurrentUser()), + __metadata2("design:type", Function), + __metadata2("design:paramtypes", [Object, Object]), + __metadata2("design:returntype", Promise) +], AuthController.prototype, "changePassword", null); +AuthController = __decorate2([ + Controller("admin/auth"), + __metadata2("design:paramtypes", [AuthService]) +], AuthController); +var AuthModule = class AuthModule2 { + static { + __name(this, "AuthModule"); + } +}; +AuthModule = __decorate2([ + Module({ + imports: [ + JwtModule.register({ + global: true, + secret: env.JWT_SECRET, + signOptions: { expiresIn: env.JWT_ACCESS_TTL } + }) + ], + controllers: [AuthController], + providers: [AuthService], + exports: [AuthService] + }) +], AuthModule); + +// dist/catalog/catalog.module.js +init_common(); + +// dist/media/media.controller.js +init_common(); +init_platform_express(); + +// dist/media/media.service.js +init_common(); +import { randomUUID } from "node:crypto"; +var __decorate3 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata3 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var MediaService_1; +var MediaService = MediaService_1 = class MediaService2 { + static { + __name(this, "MediaService"); + } + prisma; + audit; + revalidate; + logger = new Logger(MediaService_1.name); + storage = new S3Storage(); + constructor(prisma, audit, revalidate) { + this.prisma = prisma; + this.audit = audit; + this.revalidate = revalidate; + } + async onModuleInit() { + if (!env.S3_ENSURE_BUCKET) + return; + try { + await this.storage.ensureBucket(); + } catch (e) { + this.logger.error(`could not prepare bucket "${env.S3_BUCKET}": ${String(e)}`); + } + } + url(key) { + return this.storage.publicUrl(key); + } + toDto(m) { + return { + id: m.id, + url: this.url(m.key), + alt: m.alt, + mime: m.mime, + size: m.size, + width: m.width, + height: m.height, + originalName: m.originalName, + createdAt: m.createdAt.toISOString() + }; + } + async list(page, pageSize, q) { + const where = q ? { + OR: [ + { originalName: { contains: q, mode: "insensitive" } }, + { alt: { contains: q, mode: "insensitive" } } + ] + } : {}; + const [items, total] = await this.prisma.$transaction([ + this.prisma.media.findMany({ + where, + orderBy: { id: "desc" }, + skip: (page - 1) * pageSize, + take: pageSize + }), + this.prisma.media.count({ where }) + ]); + return { items: items.map((m) => this.toDto(m)), total, page, pageSize }; + } + async upload(file, alt, userId) { + if (!file) + throw new BadRequestException("\u0641\u0627\u06CC\u0644\u06CC \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A"); + if (!ACCEPTED_IMAGE_TYPES.includes(file.mimetype)) { + throw new BadRequestException("\u0641\u0642\u0637 \u062A\u0635\u0627\u0648\u06CC\u0631 JPG\u060C PNG\u060C WebP\u060C AVIF \u0648 GIF \u067E\u0630\u06CC\u0631\u0641\u062A\u0647 \u0645\u06CC\u200C\u0634\u0648\u0646\u062F"); + } + let image; + try { + image = await toWebp(file.buffer); + } catch { + throw new BadRequestException("\u0641\u0627\u06CC\u0644 \u062A\u0635\u0648\u06CC\u0631 \u0642\u0627\u0628\u0644 \u067E\u0631\u062F\u0627\u0632\u0634 \u0646\u06CC\u0633\u062A"); + } + const now = /* @__PURE__ */ new Date(); + const month = String(now.getMonth() + 1).padStart(2, "0"); + const key = `uploads/${now.getFullYear()}/${month}/${randomUUID()}.webp`; + await this.storage.put(key, image.data, "image/webp"); + const media = await this.prisma.media.create({ + data: { + key, + mime: "image/webp", + size: image.size, + width: image.width, + height: image.height, + alt: alt.trim().slice(0, 200), + originalName: Buffer.from(file.originalname, "latin1").toString("utf8").slice(0, 200) + } + }); + this.audit.log(userId, "upload", "media", media.id, media.originalName); + return this.toDto(media); + } + async updateAlt(id, alt, userId) { + const media = await this.prisma.media.update({ where: { id }, data: { alt } }); + this.audit.log(userId, "update", "media", id, media.originalName); + this.revalidate.trigger(); + return this.toDto(media); + } + async remove(id, userId) { + const media = await this.prisma.media.findUnique({ + where: { id }, + include: { _count: { select: { categoryCovers: true, productImages: true, productGallery: true } } } + }); + if (!media) + throw new NotFoundException("\u0641\u0627\u06CC\u0644 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + const { categoryCovers, productImages, productGallery } = media._count; + const sections = await this.prisma.$queryRaw` + SELECT key FROM "SiteSection" WHERE data::text LIKE ${"%" + media.key + "%"}`; + if (categoryCovers + productImages + productGallery + sections.length > 0) { + throw new ConflictException("\u0627\u06CC\u0646 \u062A\u0635\u0648\u06CC\u0631 \u062F\u0631 \u0645\u062D\u0635\u0648\u0644\u0627\u062A\u060C \u062F\u0633\u062A\u0647\u200C\u0647\u0627 \u06CC\u0627 \u0628\u062E\u0634\u200C\u0647\u0627\u06CC \u0633\u0627\u06CC\u062A \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0634\u062F\u0647 \u0648 \u0642\u0627\u0628\u0644 \u062D\u0630\u0641 \u0646\u06CC\u0633\u062A"); + } + await this.prisma.media.delete({ where: { id } }); + await this.storage.remove(media.key).catch((e) => { + this.logger.warn(`could not delete object ${media.key}: ${String(e)}`); + }); + this.audit.log(userId, "delete", "media", id, media.originalName); + } +}; +MediaService = MediaService_1 = __decorate3([ + Injectable(), + __metadata3("design:paramtypes", [ + PrismaService, + AuditService, + RevalidateService + ]) +], MediaService); + +// dist/media/media.controller.js +var __decorate4 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata4 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param2 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var listQuery = external_exports.object({ + page: external_exports.coerce.number().int().min(1).default(1), + pageSize: external_exports.coerce.number().int().min(1).max(100).default(40), + q: external_exports.string().trim().max(100).optional() +}); +var MediaController = class MediaController2 { + static { + __name(this, "MediaController"); + } + media; + constructor(media) { + this.media = media; + } + list(q) { + return this.media.list(q.page, q.pageSize, q.q); + } + upload(file, alt, user) { + return this.media.upload(file, typeof alt === "string" ? alt : "", user.id); + } + update(id, body, user) { + return this.media.updateAlt(id, body.alt, user.id); + } + async remove(id, user) { + await this.media.remove(id, user.id); + } +}; +__decorate4([ + Get(), + __param2(0, Query(new ZodPipe(listQuery))), + __metadata4("design:type", Function), + __metadata4("design:paramtypes", [Object]), + __metadata4("design:returntype", void 0) +], MediaController.prototype, "list", null); +__decorate4([ + Post(), + UseInterceptors(FileInterceptor("file", { limits: { fileSize: 15 * 1024 * 1024 } })), + __param2(0, UploadedFile()), + __param2(1, Body("alt")), + __param2(2, CurrentUser()), + __metadata4("design:type", Function), + __metadata4("design:paramtypes", [Object, Object, Object]), + __metadata4("design:returntype", void 0) +], MediaController.prototype, "upload", null); +__decorate4([ + Patch(":id"), + __param2(0, Param("id", IdPipe)), + __param2(1, Body(new ZodPipe(mediaUpdateSchema))), + __param2(2, CurrentUser()), + __metadata4("design:type", Function), + __metadata4("design:paramtypes", [Number, Object, Object]), + __metadata4("design:returntype", void 0) +], MediaController.prototype, "update", null); +__decorate4([ + Roles("ADMIN"), + Delete(":id"), + HttpCode(204), + __param2(0, Param("id", IdPipe)), + __param2(1, CurrentUser()), + __metadata4("design:type", Function), + __metadata4("design:paramtypes", [Number, Object]), + __metadata4("design:returntype", Promise) +], MediaController.prototype, "remove", null); +MediaController = __decorate4([ + AdminAuth(), + Controller("admin/media"), + __metadata4("design:paramtypes", [MediaService]) +], MediaController); +var MediaModule = class MediaModule2 { + static { + __name(this, "MediaModule"); + } +}; +MediaModule = __decorate4([ + Module({ + controllers: [MediaController], + providers: [MediaService], + exports: [MediaService] + }) +], MediaModule); + +// dist/catalog/categories.service.js +init_common(); +var __decorate5 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata5 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var withCover = { coverImage: true }; +var CategoriesService = class CategoriesService2 { + static { + __name(this, "CategoriesService"); + } + prisma; + media; + audit; + revalidate; + constructor(prisma, media, audit, revalidate) { + this.prisma = prisma; + this.media = media; + this.audit = audit; + this.revalidate = revalidate; + } + async list() { + const rows = await this.prisma.category.findMany({ + orderBy: [{ sortOrder: "asc" }, { id: "asc" }], + include: { ...withCover, _count: { select: { products: true, groups: true } } } + }); + return rows.map(({ coverImage, _count, ...c }) => ({ + ...c, + coverImage: coverImage && this.media.toDto(coverImage), + productCount: _count.products, + groupCount: _count.groups + })); + } + async get(id) { + const { coverImage, ...c } = await this.prisma.category.findUniqueOrThrow({ + where: { id }, + include: { + ...withCover, + groups: { + orderBy: { sortOrder: "asc" }, + include: { _count: { select: { products: true } } } + } + } + }); + return { + ...c, + coverImage: coverImage && this.media.toDto(coverImage), + groups: c.groups.map(({ _count, ...g }) => ({ ...g, productCount: _count.products })) + }; + } + async create(input, userId) { + this.assertUniqueGroupSlugs(input); + const { groups, ...data } = input; + const last = await this.prisma.category.aggregate({ _max: { sortOrder: true } }); + const category = await this.prisma.category.create({ + data: { + ...data, + sortOrder: (last._max.sortOrder ?? -1) + 1, + groups: { + create: groups.map((g, i) => ({ slug: g.slug, name: g.name, desc: g.desc, sortOrder: i })) + } + } + }); + this.audit.log(userId, "create", "category", category.id, category.name); + this.revalidate.trigger(); + return this.get(category.id); + } + async update(id, input, userId) { + this.assertUniqueGroupSlugs(input); + const { groups, ...data } = input; + await this.prisma.$transaction(async (tx) => { + const category = await tx.category.update({ where: { id }, data }); + const keepIds = groups.flatMap((g) => g.id ? [g.id] : []); + await tx.productGroup.deleteMany({ where: { categoryId: id, id: { notIn: keepIds } } }); + for (const g of groups) { + if (g.id) { + await tx.productGroup.update({ + where: { id: g.id, categoryId: id }, + data: { slug: `__tmp-${g.id}` } + }); + } + } + for (const [i, g] of groups.entries()) { + const fields = { slug: g.slug, name: g.name, desc: g.desc, sortOrder: i }; + if (g.id) { + await tx.productGroup.update({ where: { id: g.id, categoryId: id }, data: fields }); + } else { + await tx.productGroup.create({ data: { ...fields, categoryId: id } }); + } + } + this.audit.log(userId, "update", "category", id, category.name); + }); + this.revalidate.trigger(); + return this.get(id); + } + async remove(id, userId) { + const category = await this.prisma.category.findUniqueOrThrow({ + where: { id }, + include: { _count: { select: { products: true } } } + }); + if (category._count.products > 0) { + throw new ConflictException(`\u0627\u06CC\u0646 \u062F\u0633\u062A\u0647 ${category._count.products} \u0645\u062D\u0635\u0648\u0644 \u062F\u0627\u0631\u062F\u061B \u0627\u0628\u062A\u062F\u0627 \u0645\u062D\u0635\u0648\u0644\u0627\u062A \u0631\u0627 \u062D\u0630\u0641 \u06CC\u0627 \u062C\u0627\u0628\u0647\u200C\u062C\u0627 \u06A9\u0646\u06CC\u062F`); + } + await this.prisma.category.delete({ where: { id } }); + this.audit.log(userId, "delete", "category", id, category.name); + this.revalidate.trigger(); + } + async reorder(ids, userId) { + await this.prisma.$transaction(ids.map((id, i) => this.prisma.category.update({ where: { id }, data: { sortOrder: i } }))); + this.audit.log(userId, "reorder", "category", "", `${ids.length} \u062F\u0633\u062A\u0647`); + this.revalidate.trigger(); + } + assertUniqueGroupSlugs(input) { + const slugs = input.groups.map((g) => g.slug); + if (new Set(slugs).size !== slugs.length) { + throw new ConflictException("\u0627\u0633\u0644\u0627\u06AF \u0632\u06CC\u0631\u06AF\u0631\u0648\u0647\u200C\u0647\u0627 \u0628\u0627\u06CC\u062F \u06CC\u06A9\u062A\u0627 \u0628\u0627\u0634\u062F"); + } + } +}; +CategoriesService = __decorate5([ + Injectable(), + __metadata5("design:paramtypes", [ + PrismaService, + MediaService, + AuditService, + RevalidateService + ]) +], CategoriesService); + +// dist/catalog/products.service.js +init_common(); +var __decorate6 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata6 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var ProductsService = class ProductsService2 { + static { + __name(this, "ProductsService"); + } + prisma; + media; + audit; + revalidate; + constructor(prisma, media, audit, revalidate) { + this.prisma = prisma; + this.media = media; + this.audit = audit; + this.revalidate = revalidate; + } + async list(q) { + const where = { + ...q.categoryId && { categoryId: q.categoryId }, + ...q.groupId && { groupId: q.groupId }, + ...q.status && { isPublished: q.status === "published" }, + ...q.q && { + OR: [ + { name: { contains: q.q, mode: "insensitive" } }, + { nameEn: { contains: q.q, mode: "insensitive" } }, + { code: { contains: q.q, mode: "insensitive" } } + ] + } + }; + const [rows, total] = await this.prisma.$transaction([ + this.prisma.product.findMany({ + where, + orderBy: [{ category: { sortOrder: "asc" } }, { sortOrder: "asc" }, { id: "asc" }], + skip: (q.page - 1) * q.pageSize, + take: q.pageSize, + include: { + image: true, + category: { select: { id: true, name: true } }, + group: { select: { id: true, name: true } } + } + }), + this.prisma.product.count({ where }) + ]); + return { + items: rows.map(({ image, ...p }) => ({ ...p, image: image && this.media.toDto(image) })), + total, + page: q.page, + pageSize: q.pageSize + }; + } + async get(id) { + const { image, gallery, ...p } = await this.prisma.product.findUniqueOrThrow({ + where: { id }, + include: { image: true, gallery: { orderBy: { sortOrder: "asc" }, include: { media: true } } } + }); + return { + ...p, + image: image && this.media.toDto(image), + gallery: gallery.map((g) => this.media.toDto(g.media)) + }; + } + async create(input, userId) { + await this.assertGroup(input); + const { galleryIds, ...data } = input; + const last = await this.prisma.product.aggregate({ + where: { categoryId: input.categoryId }, + _max: { sortOrder: true } + }); + const product = await this.prisma.product.create({ + data: { + ...data, + sortOrder: (last._max.sortOrder ?? -1) + 1, + gallery: { create: unique(galleryIds).map((mediaId, i) => ({ mediaId, sortOrder: i })) } + } + }); + this.audit.log(userId, "create", "product", product.id, product.name); + this.revalidate.trigger(); + return this.get(product.id); + } + async update(id, input, userId) { + await this.assertGroup(input); + const { galleryIds, ...data } = input; + const product = await this.prisma.product.update({ + where: { id }, + data: { + ...data, + gallery: { + deleteMany: {}, + create: unique(galleryIds).map((mediaId, i) => ({ mediaId, sortOrder: i })) + } + } + }); + this.audit.log(userId, "update", "product", id, product.name); + this.revalidate.trigger(); + return this.get(id); + } + async setPublished(id, isPublished, userId) { + const product = await this.prisma.product.update({ where: { id }, data: { isPublished } }); + this.audit.log(userId, isPublished ? "publish" : "unpublish", "product", id, product.name); + this.revalidate.trigger(); + return { id, isPublished }; + } + async duplicate(id, userId) { + const src = await this.prisma.product.findUniqueOrThrow({ + where: { id }, + include: { gallery: true } + }); + let n = 1; + const taken = /* @__PURE__ */ __name(async (code, slug) => await this.prisma.product.count({ where: { OR: [{ code }, { slug }] } }) > 0, "taken"); + while (await taken(`${src.code}-${n}`, `${src.slug}-copy-${n}`)) + n++; + const copy = await this.prisma.product.create({ + data: { + categoryId: src.categoryId, + groupId: src.groupId, + code: `${src.code}-${n}`, + slug: `${src.slug}-copy-${n}`, + name: `${src.name} (\u06A9\u067E\u06CC)`, + nameEn: src.nameEn, + desc: src.desc, + specs: src.specs, + variants: src.variants, + details: src.details, + brand: src.brand, + origin: src.origin, + sizes: src.sizes, + standards: src.standards, + features: src.features, + applications: src.applications, + attributes: src.attributes ?? [], + packaging: src.packaging, + minOrder: src.minOrder, + seoTitle: src.seoTitle, + seoDescription: src.seoDescription, + imageId: src.imageId, + sortOrder: src.sortOrder + 1, + isPublished: false, + gallery: { + create: src.gallery.map((g) => ({ mediaId: g.mediaId, sortOrder: g.sortOrder })) + } + } + }); + this.audit.log(userId, "duplicate", "product", copy.id, copy.name); + return this.get(copy.id); + } + async remove(id, userId) { + const product = await this.prisma.product.delete({ where: { id } }); + this.audit.log(userId, "delete", "product", id, product.name); + this.revalidate.trigger(); + } + async reorder(ids, userId) { + await this.prisma.$transaction(ids.map((id, i) => this.prisma.product.update({ where: { id }, data: { sortOrder: i } }))); + this.audit.log(userId, "reorder", "product", "", `${ids.length} \u0645\u062D\u0635\u0648\u0644`); + this.revalidate.trigger(); + } + async assertGroup(input) { + if (!input.groupId) + return; + const group = await this.prisma.productGroup.findUnique({ where: { id: input.groupId } }); + if (group?.categoryId !== input.categoryId) { + throw new BadRequestException("\u0632\u06CC\u0631\u06AF\u0631\u0648\u0647 \u0627\u0646\u062A\u062E\u0627\u0628\u200C\u0634\u062F\u0647 \u0645\u062A\u0639\u0644\u0642 \u0628\u0647 \u0627\u06CC\u0646 \u062F\u0633\u062A\u0647 \u0646\u06CC\u0633\u062A"); + } + } +}; +ProductsService = __decorate6([ + Injectable(), + __metadata6("design:paramtypes", [ + PrismaService, + MediaService, + AuditService, + RevalidateService + ]) +], ProductsService); +var unique = /* @__PURE__ */ __name((ids) => [...new Set(ids)], "unique"); + +// dist/catalog/catalog.module.js +var __decorate7 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata7 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param3 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var publishSchema = external_exports.object({ isPublished: external_exports.boolean() }); +var CategoriesController = class CategoriesController2 { + static { + __name(this, "CategoriesController"); + } + categories; + constructor(categories) { + this.categories = categories; + } + list() { + return this.categories.list(); + } + get(id) { + return this.categories.get(id); + } + create(body, user) { + return this.categories.create(body, user.id); + } + async reorder(body, user) { + await this.categories.reorder(body.ids, user.id); + } + update(id, body, user) { + return this.categories.update(id, body, user.id); + } + async remove(id, user) { + await this.categories.remove(id, user.id); + } +}; +__decorate7([ + Get(), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", []), + __metadata7("design:returntype", void 0) +], CategoriesController.prototype, "list", null); +__decorate7([ + Get(":id"), + __param3(0, Param("id", IdPipe)), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number]), + __metadata7("design:returntype", void 0) +], CategoriesController.prototype, "get", null); +__decorate7([ + Post(), + __param3(0, Body(new ZodPipe(categoryInputSchema))), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Object, Object]), + __metadata7("design:returntype", void 0) +], CategoriesController.prototype, "create", null); +__decorate7([ + Post("reorder"), + HttpCode(204), + __param3(0, Body(new ZodPipe(reorderSchema))), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Object, Object]), + __metadata7("design:returntype", Promise) +], CategoriesController.prototype, "reorder", null); +__decorate7([ + Put(":id"), + __param3(0, Param("id", IdPipe)), + __param3(1, Body(new ZodPipe(categoryInputSchema))), + __param3(2, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number, Object, Object]), + __metadata7("design:returntype", void 0) +], CategoriesController.prototype, "update", null); +__decorate7([ + Roles("ADMIN"), + Delete(":id"), + HttpCode(204), + __param3(0, Param("id", IdPipe)), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number, Object]), + __metadata7("design:returntype", Promise) +], CategoriesController.prototype, "remove", null); +CategoriesController = __decorate7([ + AdminAuth(), + Controller("admin/categories"), + __metadata7("design:paramtypes", [CategoriesService]) +], CategoriesController); +var ProductsController = class ProductsController2 { + static { + __name(this, "ProductsController"); + } + products; + constructor(products) { + this.products = products; + } + list(q) { + return this.products.list(q); + } + get(id) { + return this.products.get(id); + } + create(body, user) { + return this.products.create(body, user.id); + } + async reorder(body, user) { + await this.products.reorder(body.ids, user.id); + } + duplicate(id, user) { + return this.products.duplicate(id, user.id); + } + publish(id, body, user) { + return this.products.setPublished(id, body.isPublished, user.id); + } + update(id, body, user) { + return this.products.update(id, body, user.id); + } + async remove(id, user) { + await this.products.remove(id, user.id); + } +}; +__decorate7([ + Get(), + __param3(0, Query(new ZodPipe(productListQuerySchema))), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Object]), + __metadata7("design:returntype", void 0) +], ProductsController.prototype, "list", null); +__decorate7([ + Get(":id"), + __param3(0, Param("id", IdPipe)), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number]), + __metadata7("design:returntype", void 0) +], ProductsController.prototype, "get", null); +__decorate7([ + Post(), + __param3(0, Body(new ZodPipe(productInputSchema))), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Object, Object]), + __metadata7("design:returntype", void 0) +], ProductsController.prototype, "create", null); +__decorate7([ + Post("reorder"), + HttpCode(204), + __param3(0, Body(new ZodPipe(reorderSchema))), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Object, Object]), + __metadata7("design:returntype", Promise) +], ProductsController.prototype, "reorder", null); +__decorate7([ + Post(":id/duplicate"), + __param3(0, Param("id", IdPipe)), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number, Object]), + __metadata7("design:returntype", void 0) +], ProductsController.prototype, "duplicate", null); +__decorate7([ + Patch(":id/publish"), + __param3(0, Param("id", IdPipe)), + __param3(1, Body(new ZodPipe(publishSchema))), + __param3(2, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number, Object, Object]), + __metadata7("design:returntype", void 0) +], ProductsController.prototype, "publish", null); +__decorate7([ + Put(":id"), + __param3(0, Param("id", IdPipe)), + __param3(1, Body(new ZodPipe(productInputSchema))), + __param3(2, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number, Object, Object]), + __metadata7("design:returntype", void 0) +], ProductsController.prototype, "update", null); +__decorate7([ + Roles("ADMIN"), + Delete(":id"), + HttpCode(204), + __param3(0, Param("id", IdPipe)), + __param3(1, CurrentUser()), + __metadata7("design:type", Function), + __metadata7("design:paramtypes", [Number, Object]), + __metadata7("design:returntype", Promise) +], ProductsController.prototype, "remove", null); +ProductsController = __decorate7([ + AdminAuth(), + Controller("admin/products"), + __metadata7("design:paramtypes", [ProductsService]) +], ProductsController); +var CatalogModule = class CatalogModule2 { + static { + __name(this, "CatalogModule"); + } +}; +CatalogModule = __decorate7([ + Module({ + imports: [MediaModule], + controllers: [CategoriesController, ProductsController], + providers: [CategoriesService, ProductsService] + }) +], CatalogModule); + +// dist/common/prisma-exception.filter.js +init_common(); +var __decorate8 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var FIELD_LABELS = { + slug: "\u0627\u0633\u0644\u0627\u06AF", + code: "\u06A9\u062F", + email: "\u0627\u06CC\u0645\u06CC\u0644", + phone: "\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644" +}; +function uniqueFields(meta) { + if (meta?.target) + return Array.isArray(meta.target) ? meta.target : [meta.target]; + const constraint = meta?.driverAdapterError?.cause?.constraint; + if (constraint?.fields) + return constraint.fields; + const match = constraint?.index?.match(/^[^_]+_(.+)_key$/); + return match ? match[1].split("_") : []; +} +__name(uniqueFields, "uniqueFields"); +var PrismaExceptionFilter = class PrismaExceptionFilter2 { + static { + __name(this, "PrismaExceptionFilter"); + } + catch(error, host) { + const res = host.switchToHttp().getResponse(); + switch (error.code) { + case "P2002": { + const fields = uniqueFields(error.meta).filter((f) => !f.endsWith("Id")).map((f) => FIELD_LABELS[f] ?? f).join("\u060C "); + return res.status(HttpStatus.CONFLICT).json({ + statusCode: HttpStatus.CONFLICT, + message: fields ? `\u0645\u0642\u062F\u0627\u0631 \xAB${fields}\xBB \u062A\u06A9\u0631\u0627\u0631\u06CC \u0627\u0633\u062A` : "\u0645\u0642\u062F\u0627\u0631 \u062A\u06A9\u0631\u0627\u0631\u06CC \u0627\u0633\u062A" + }); + } + case "P2003": + return res.status(HttpStatus.CONFLICT).json({ + statusCode: HttpStatus.CONFLICT, + message: "\u0627\u06CC\u0646 \u0645\u0648\u0631\u062F \u0628\u0647 \u062F\u0627\u062F\u0647\u200C\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631\u06CC \u0648\u0627\u0628\u0633\u062A\u0647 \u0627\u0633\u062A" + }); + case "P2025": + return res.status(HttpStatus.NOT_FOUND).json({ statusCode: HttpStatus.NOT_FOUND, message: "\u0645\u0648\u0631\u062F \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F" }); + default: + return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({ + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + message: "\u062E\u0637\u0627\u06CC \u067E\u0627\u06CC\u06AF\u0627\u0647 \u062F\u0627\u062F\u0647" + }); + } + } +}; +PrismaExceptionFilter = __decorate8([ + Catch(prismaNamespace_exports.PrismaClientKnownRequestError) +], PrismaExceptionFilter); + +// dist/contact/contact.module.js +init_common(); +var import_throttler2 = __toESM(require_dist(), 1); +var __decorate9 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata8 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param4 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var listQuery2 = external_exports.object({ + status: external_exports.enum(MESSAGE_STATUSES).optional(), + page: external_exports.coerce.number().int().min(1).default(1), + pageSize: external_exports.coerce.number().int().min(1).max(100).default(20) +}); +var toMessageDto = /* @__PURE__ */ __name((m) => ({ + id: m.id, + name: m.name, + org: m.org, + phone: m.phone, + message: m.message, + status: m.status, + createdAt: m.createdAt.toISOString() +}), "toMessageDto"); +var ContactService = class ContactService2 { + static { + __name(this, "ContactService"); + } + prisma; + audit; + constructor(prisma, audit) { + this.prisma = prisma; + this.audit = audit; + } + async submit(input, ip, userAgent) { + if (input.website) + return; + await this.prisma.contactMessage.create({ + data: { + name: input.name, + org: input.org, + phone: input.phone, + message: input.message, + ip: ip.slice(0, 64), + userAgent: userAgent.slice(0, 300) + } + }); + } + async list(q) { + const where = q.status ? { status: q.status } : {}; + const [items, total] = await this.prisma.$transaction([ + this.prisma.contactMessage.findMany({ + where, + orderBy: { id: "desc" }, + skip: (q.page - 1) * q.pageSize, + take: q.pageSize + }), + this.prisma.contactMessage.count({ where }) + ]); + return { items: items.map(toMessageDto), total, page: q.page, pageSize: q.pageSize }; + } + async setStatus(id, status) { + return toMessageDto(await this.prisma.contactMessage.update({ where: { id }, data: { status } })); + } + async remove(id, userId) { + const m = await this.prisma.contactMessage.delete({ where: { id } }); + this.audit.log(userId, "delete", "message", id, m.name); + } +}; +ContactService = __decorate9([ + Injectable(), + __metadata8("design:paramtypes", [ + PrismaService, + AuditService + ]) +], ContactService); +var PublicContactController = class PublicContactController2 { + static { + __name(this, "PublicContactController"); + } + contact; + constructor(contact) { + this.contact = contact; + } + async submit(body, req) { + await this.contact.submit(body, req.ip ?? "", req.headers["user-agent"] ?? ""); + return { ok: true }; + } +}; +__decorate9([ + Post(), + HttpCode(201), + (0, import_throttler2.Throttle)({ default: { limit: 5, ttl: 10 * 6e4 } }), + __param4(0, Body(new ZodPipe(contactInputSchema))), + __param4(1, Req()), + __metadata8("design:type", Function), + __metadata8("design:paramtypes", [Object, Object]), + __metadata8("design:returntype", Promise) +], PublicContactController.prototype, "submit", null); +PublicContactController = __decorate9([ + Controller("public/contact"), + __metadata8("design:paramtypes", [ContactService]) +], PublicContactController); +var MessagesController = class MessagesController2 { + static { + __name(this, "MessagesController"); + } + contact; + constructor(contact) { + this.contact = contact; + } + list(q) { + return this.contact.list(q); + } + update(id, body) { + return this.contact.setStatus(id, body.status); + } + async remove(id, user) { + await this.contact.remove(id, user.id); + } +}; +__decorate9([ + Get(), + __param4(0, Query(new ZodPipe(listQuery2))), + __metadata8("design:type", Function), + __metadata8("design:paramtypes", [Object]), + __metadata8("design:returntype", void 0) +], MessagesController.prototype, "list", null); +__decorate9([ + Patch(":id"), + __param4(0, Param("id", IdPipe)), + __param4(1, Body(new ZodPipe(messageUpdateSchema))), + __metadata8("design:type", Function), + __metadata8("design:paramtypes", [Number, Object]), + __metadata8("design:returntype", void 0) +], MessagesController.prototype, "update", null); +__decorate9([ + Roles("ADMIN"), + Delete(":id"), + HttpCode(204), + __param4(0, Param("id", IdPipe)), + __param4(1, CurrentUser()), + __metadata8("design:type", Function), + __metadata8("design:paramtypes", [Number, Object]), + __metadata8("design:returntype", Promise) +], MessagesController.prototype, "remove", null); +MessagesController = __decorate9([ + AdminAuth(), + Controller("admin/messages"), + __metadata8("design:paramtypes", [ContactService]) +], MessagesController); +var ContactModule = class ContactModule2 { + static { + __name(this, "ContactModule"); + } +}; +ContactModule = __decorate9([ + Module({ + controllers: [PublicContactController, MessagesController], + providers: [ContactService] + }) +], ContactModule); + +// dist/dashboard/dashboard.module.js +init_common(); +var __decorate10 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata9 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var DAY_NAMES = ["\u06CC\u06A9\u0634\u0646\u0628\u0647", "\u062F\u0648\u0634\u0646\u0628\u0647", "\u0633\u0647\u200C\u0634\u0646\u0628\u0647", "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647", "\u062C\u0645\u0639\u0647", "\u0634\u0646\u0628\u0647"]; +var DashboardController = class DashboardController2 { + static { + __name(this, "DashboardController"); + } + prisma; + constructor(prisma) { + this.prisma = prisma; + } + async get() { + const [categories, products, draftProducts, newMessages, readMessages, archivedMessages, media, messages, activity, categoryRows, sectionRows] = await Promise.all([ + this.prisma.category.count(), + this.prisma.product.count(), + this.prisma.product.count({ where: { isPublished: false } }), + this.prisma.contactMessage.count({ where: { status: "NEW" } }), + this.prisma.contactMessage.count({ where: { status: "READ" } }), + this.prisma.contactMessage.count({ where: { status: "ARCHIVED" } }), + this.prisma.media.count(), + this.prisma.contactMessage.findMany({ orderBy: { id: "desc" }, take: 6 }), + this.prisma.auditLog.findMany({ + orderBy: { id: "desc" }, + take: 10, + include: { user: { select: { name: true } } } + }), + this.prisma.category.findMany({ + select: { id: true, name: true, _count: { select: { products: true } } }, + orderBy: { products: { _count: "desc" } }, + take: 7 + }), + this.prisma.siteSection.findMany() + ]); + let hiddenCount = 0; + for (const s of sectionRows) { + if (s.data && typeof s.data === "object" && s.data.enabled === false) { + hiddenCount++; + } + } + const now = /* @__PURE__ */ new Date(); + const trend = []; + for (let i = 6; i >= 0; i--) { + const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i, 0, 0, 0); + const end = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i, 23, 59, 59, 999); + const count = await this.prisma.contactMessage.count({ + where: { createdAt: { gte: start, lte: end } } + }); + trend.push({ + date: start.toISOString().slice(0, 10), + dayName: DAY_NAMES[start.getDay()], + messages: count + }); + } + return { + categories, + products, + draftProducts, + newMessages, + media, + recentMessages: messages.map(toMessageDto), + recentActivity: activity.map((a) => ({ + id: a.id, + action: a.action, + entity: a.entity, + summary: a.summary, + user: a.user?.name ?? null, + createdAt: a.createdAt.toISOString() + })), + categoryStats: categoryRows.map((c) => ({ + id: c.id, + name: c.name, + count: c._count.products + })), + messageBreakdown: { + new: newMessages, + read: readMessages, + archived: archivedMessages, + total: newMessages + readMessages + archivedMessages + }, + sectionsSummary: { + total: SECTION_KEYS.length, + visible: SECTION_KEYS.length - hiddenCount, + hidden: hiddenCount + }, + trend + }; + } +}; +__decorate10([ + Get(), + __metadata9("design:type", Function), + __metadata9("design:paramtypes", []), + __metadata9("design:returntype", Promise) +], DashboardController.prototype, "get", null); +DashboardController = __decorate10([ + AdminAuth(), + Controller("admin/dashboard"), + __metadata9("design:paramtypes", [PrismaService]) +], DashboardController); +var DashboardModule = class DashboardModule2 { + static { + __name(this, "DashboardModule"); + } +}; +DashboardModule = __decorate10([ + Module({ controllers: [DashboardController] }) +], DashboardModule); + +// dist/public/public.module.js +init_common(); + +// dist/sections/sections.module.js +init_common(); +var __decorate11 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata10 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param5 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var SectionsService = class SectionsService2 { + static { + __name(this, "SectionsService"); + } + prisma; + audit; + revalidate; + constructor(prisma, audit, revalidate) { + this.prisma = prisma; + this.audit = audit; + this.revalidate = revalidate; + } + async getAll() { + const rows = await this.prisma.siteSection.findMany(); + const byKey = new Map(rows.map((r) => [r.key, r.data])); + const missing = SECTION_KEYS.filter((k) => !byKey.has(k)); + if (missing.length) { + throw new ServiceUnavailableException(`\u0645\u062D\u062A\u0648\u0627\u06CC \u0633\u0627\u06CC\u062A \u0645\u0642\u062F\u0627\u0631\u062F\u0647\u06CC \u0646\u0634\u062F\u0647 \u0627\u0633\u062A (${missing.join(", ")}) \u2014 pnpm db:seed \u0631\u0627 \u0627\u062C\u0631\u0627 \u06A9\u0646\u06CC\u062F`); + } + return Object.fromEntries(SECTION_KEYS.map((k) => [k, sectionSchemas[k].parse(byKey.get(k))])); + } + async get(key) { + if (!isSectionKey(key)) + throw new NotFoundException("\u0628\u062E\u0634 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + const row = await this.prisma.siteSection.findUnique({ where: { key } }); + if (!row) + throw new NotFoundException("\u0628\u062E\u0634 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + return { key, data: sectionSchemas[key].parse(row.data), updatedAt: row.updatedAt }; + } + async update(key, body, user) { + if (!isSectionKey(key)) + throw new NotFoundException("\u0628\u062E\u0634 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + if (key === "settings" && user.role !== "ADMIN") { + throw new ForbiddenException("\u0641\u0642\u0637 \u0645\u062F\u06CC\u0631 \u06A9\u0644 \u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u062F \u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u0633\u0627\u06CC\u062A \u0631\u0627 \u062A\u063A\u06CC\u06CC\u0631 \u062F\u0647\u062F"); + } + const parsed = sectionSchemas[key].safeParse(body); + if (!parsed.success) { + throw new BadRequestException({ + statusCode: 400, + message: "\u0627\u0637\u0644\u0627\u0639\u0627\u062A \u0648\u0627\u0631\u062F\u0634\u062F\u0647 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A", + issues: toIssues(parsed.error) + }); + } + const row = await this.prisma.siteSection.upsert({ + where: { key }, + create: { key, data: parsed.data, updatedById: user.id }, + update: { data: parsed.data, updatedById: user.id } + }); + this.audit.log(user.id, "update", "section", key, key); + this.revalidate.trigger(); + return { key, data: parsed.data, updatedAt: row.updatedAt }; + } + async listAdmin() { + const rows = await this.prisma.siteSection.findMany(); + const byKey = new Map(rows.map((r) => [r.key, r])); + return SECTION_KEYS.map((key) => { + const row = byKey.get(key); + let data = null; + if (row) { + const parsed = sectionSchemas[key].safeParse(row.data); + data = parsed.success ? parsed.data : row.data; + } + return { + key, + updatedAt: row?.updatedAt?.toISOString() ?? null, + enabled: data && typeof data === "object" && "enabled" in data ? data.enabled !== false : true + }; + }); + } + async setVisibility(key, enabled, user) { + if (!isSectionKey(key)) + throw new NotFoundException("\u0628\u062E\u0634 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + if (key === "settings") { + throw new BadRequestException("\u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u0633\u0627\u06CC\u062A \u0642\u0627\u0628\u0644\u06CC\u062A \u062A\u063A\u06CC\u06CC\u0631 \u0648\u0636\u0639\u06CC\u062A \u0646\u0645\u0627\u06CC\u0634 \u0646\u062F\u0627\u0631\u062F"); + } + const row = await this.prisma.siteSection.findUnique({ where: { key } }); + if (!row) + throw new NotFoundException("\u0628\u062E\u0634 \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F"); + const currentData = row.data && typeof row.data === "object" ? { ...row.data } : {}; + currentData.enabled = enabled; + const parsed = sectionSchemas[key].safeParse(currentData); + if (!parsed.success) { + throw new BadRequestException({ + statusCode: 400, + message: "\u0627\u0637\u0644\u0627\u0639\u0627\u062A \u0628\u062E\u0634 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A", + issues: toIssues(parsed.error) + }); + } + const updated = await this.prisma.siteSection.update({ + where: { key }, + data: { data: parsed.data, updatedById: user.id } + }); + this.audit.log(user.id, "update", "section", key, `\u062A\u063A\u06CC\u06CC\u0631 \u0648\u0636\u0639\u06CC\u062A \u0646\u0645\u0627\u06CC\u0634 \u0628\u0647 ${enabled ? "\u0646\u0645\u0627\u06CC\u0634" : "\u0639\u062F\u0645 \u0646\u0645\u0627\u06CC\u0634"}`); + this.revalidate.trigger(); + return { + key, + enabled: parsed.data.enabled !== false, + updatedAt: updated.updatedAt.toISOString() + }; + } +}; +SectionsService = __decorate11([ + Injectable(), + __metadata10("design:paramtypes", [ + PrismaService, + AuditService, + RevalidateService + ]) +], SectionsService); +var SectionsController = class SectionsController2 { + static { + __name(this, "SectionsController"); + } + sections; + constructor(sections) { + this.sections = sections; + } + list() { + return this.sections.listAdmin(); + } + get(key) { + return this.sections.get(key); + } + update(key, body, user) { + return this.sections.update(key, body, user); + } + setVisibility(key, body, user) { + const enabled = body && typeof body.enabled === "boolean" ? body.enabled : Boolean(body?.enabled); + return this.sections.setVisibility(key, enabled, user); + } +}; +__decorate11([ + Get(), + __metadata10("design:type", Function), + __metadata10("design:paramtypes", []), + __metadata10("design:returntype", void 0) +], SectionsController.prototype, "list", null); +__decorate11([ + Get(":key"), + __param5(0, Param("key")), + __metadata10("design:type", Function), + __metadata10("design:paramtypes", [String]), + __metadata10("design:returntype", void 0) +], SectionsController.prototype, "get", null); +__decorate11([ + Put(":key"), + __param5(0, Param("key")), + __param5(1, Body()), + __param5(2, CurrentUser()), + __metadata10("design:type", Function), + __metadata10("design:paramtypes", [String, Object, Object]), + __metadata10("design:returntype", void 0) +], SectionsController.prototype, "update", null); +__decorate11([ + Patch(":key/visibility"), + __param5(0, Param("key")), + __param5(1, Body()), + __param5(2, CurrentUser()), + __metadata10("design:type", Function), + __metadata10("design:paramtypes", [String, Object, Object]), + __metadata10("design:returntype", void 0) +], SectionsController.prototype, "setVisibility", null); +SectionsController = __decorate11([ + AdminAuth(), + Controller("admin/sections"), + __metadata10("design:paramtypes", [SectionsService]) +], SectionsController); +var SectionsModule = class SectionsModule2 { + static { + __name(this, "SectionsModule"); + } +}; +SectionsModule = __decorate11([ + Module({ + controllers: [SectionsController], + providers: [SectionsService], + exports: [SectionsService] + }) +], SectionsModule); + +// dist/public/public.module.js +var __decorate12 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata11 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param6 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var visible = { isPublished: true, category: { isPublished: true } }; +var RELATED_LIMIT = 4; +var isAttribute = /* @__PURE__ */ __name((a) => !!a && typeof a === "object" && typeof a.name === "string" && typeof a.value === "string", "isAttribute"); +var PublicService = class PublicService2 { + static { + __name(this, "PublicService"); + } + prisma; + media; + sections; + constructor(prisma, media, sections) { + this.prisma = prisma; + this.media = media; + this.sections = sections; + } + async site() { + const [sections, categories] = await Promise.all([this.sections.getAll(), this.categories()]); + return { sections, categories }; + } + async categories() { + const rows = await this.prisma.category.findMany({ + where: { isPublished: true }, + orderBy: [{ sortOrder: "asc" }, { id: "asc" }], + include: { + coverImage: true, + _count: { select: { products: { where: { isPublished: true } } } } + } + }); + return rows.map((c) => ({ + slug: c.slug, + code: c.code, + name: c.name, + nameEn: c.nameEn, + shortDesc: c.shortDesc, + icon: c.icon, + coverImage: c.coverImage && this.media.url(c.coverImage.key), + productCount: c._count.products + })); + } + async category(slug) { + const c = await this.prisma.category.findFirst({ + where: { slug, isPublished: true }, + include: { + coverImage: true, + groups: { orderBy: { sortOrder: "asc" } }, + products: { + where: { isPublished: true }, + orderBy: [{ sortOrder: "asc" }, { id: "asc" }], + include: { image: true, group: { select: { slug: true } } } + } + } + }); + if (!c) + throw new NotFoundException("\u062F\u0633\u062A\u0647\u200C\u0628\u0646\u062F\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const products = c.products.map((p) => this.toPublicProduct(p)); + const usedGroups = new Set(products.map((p) => p.group)); + return { + slug: c.slug, + code: c.code, + name: c.name, + nameEn: c.nameEn, + shortDesc: c.shortDesc, + fullDesc: c.fullDesc, + icon: c.icon, + seoTitle: c.seoTitle, + seoDescription: c.seoDescription, + coverImage: c.coverImage && this.media.url(c.coverImage.key), + productCount: products.length, + groups: c.groups.filter((g) => usedGroups.has(g.slug)).map((g) => ({ slug: g.slug, name: g.name, desc: g.desc })), + products + }; + } + async product(slug) { + const p = await this.prisma.product.findFirst({ + where: { slug, ...visible }, + include: { + image: true, + gallery: { orderBy: { sortOrder: "asc" }, include: { media: true } }, + group: true, + category: { include: { coverImage: true } } + } + }); + if (!p) + throw new NotFoundException("\u0645\u062D\u0635\u0648\u0644 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F"); + const media = /* @__PURE__ */ new Map(); + for (const m of [p.image, ...p.gallery.map((g) => g.media)]) + if (m) + media.set(m.id, m); + const siblings = await this.prisma.product.findMany({ + where: { categoryId: p.categoryId, isPublished: true, id: { not: p.id } }, + orderBy: [{ sortOrder: "asc" }, { id: "asc" }], + include: { image: true, group: { select: { slug: true } } } + }); + const sameGroup = /* @__PURE__ */ __name((s) => p.groupId !== null && s.groupId === p.groupId, "sameGroup"); + const related = [...siblings.filter(sameGroup), ...siblings.filter((s) => !sameGroup(s))].slice(0, RELATED_LIMIT).map((s) => this.toPublicProduct(s)); + return { + ...this.toPublicProduct(p), + details: p.details, + brand: p.brand, + origin: p.origin, + sizes: p.sizes, + standards: p.standards, + features: p.features, + applications: p.applications, + attributes: Array.isArray(p.attributes) ? p.attributes.filter(isAttribute) : [], + packaging: p.packaging, + minOrder: p.minOrder, + seoTitle: p.seoTitle, + seoDescription: p.seoDescription, + images: [...media.values()].map((m) => ({ + url: this.media.url(m.key), + alt: m.alt || p.name, + width: m.width, + height: m.height + })), + groupName: p.group?.name ?? null, + category: { + slug: p.category.slug, + code: p.category.code, + name: p.category.name, + nameEn: p.category.nameEn, + fullDesc: p.category.fullDesc, + coverImage: p.category.coverImage && this.media.url(p.category.coverImage.key) + }, + related, + updatedAt: p.updatedAt.toISOString() + }; + } + async productRefs() { + const rows = await this.prisma.product.findMany({ + where: visible, + orderBy: [{ category: { sortOrder: "asc" } }, { sortOrder: "asc" }], + select: { slug: true, updatedAt: true } + }); + return rows.map((r) => ({ slug: r.slug, updatedAt: r.updatedAt.toISOString() })); + } + toPublicProduct(p) { + return { + code: p.code, + slug: p.slug, + name: p.name, + nameEn: p.nameEn, + desc: p.desc, + specs: p.specs, + variants: p.variants, + image: p.image && this.media.url(p.image.key), + group: p.group?.slug ?? null + }; + } +}; +PublicService = __decorate12([ + Injectable(), + __metadata11("design:paramtypes", [ + PrismaService, + MediaService, + SectionsService + ]) +], PublicService); +var PublicController = class PublicController2 { + static { + __name(this, "PublicController"); + } + publicData; + constructor(publicData) { + this.publicData = publicData; + } + site() { + return this.publicData.site(); + } + categories() { + return this.publicData.categories(); + } + category(slug) { + return this.publicData.category(slug); + } + products() { + return this.publicData.productRefs(); + } + product(slug) { + return this.publicData.product(slug); + } +}; +__decorate12([ + Get("site"), + __metadata11("design:type", Function), + __metadata11("design:paramtypes", []), + __metadata11("design:returntype", void 0) +], PublicController.prototype, "site", null); +__decorate12([ + Get("categories"), + __metadata11("design:type", Function), + __metadata11("design:paramtypes", []), + __metadata11("design:returntype", void 0) +], PublicController.prototype, "categories", null); +__decorate12([ + Get("categories/:slug"), + __param6(0, Param("slug")), + __metadata11("design:type", Function), + __metadata11("design:paramtypes", [String]), + __metadata11("design:returntype", void 0) +], PublicController.prototype, "category", null); +__decorate12([ + Get("products"), + __metadata11("design:type", Function), + __metadata11("design:paramtypes", []), + __metadata11("design:returntype", void 0) +], PublicController.prototype, "products", null); +__decorate12([ + Get("products/:slug"), + __param6(0, Param("slug")), + __metadata11("design:type", Function), + __metadata11("design:paramtypes", [String]), + __metadata11("design:returntype", void 0) +], PublicController.prototype, "product", null); +PublicController = __decorate12([ + Controller("public"), + __metadata11("design:paramtypes", [PublicService]) +], PublicController); +var PublicModule = class PublicModule2 { + static { + __name(this, "PublicModule"); + } +}; +PublicModule = __decorate12([ + Module({ + imports: [MediaModule, SectionsModule], + controllers: [PublicController], + providers: [PublicService] + }) +], PublicModule); + +// dist/users/users.controller.js +init_common(); +var __decorate13 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata12 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param7 = function(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +}; +var UsersService = class UsersService2 { + static { + __name(this, "UsersService"); + } + prisma; + auth; + audit; + constructor(prisma, auth, audit) { + this.prisma = prisma; + this.auth = auth; + this.audit = audit; + } + async list() { + const users = await this.prisma.adminUser.findMany({ orderBy: { id: "asc" } }); + return users.map(toUserDto); + } + async create(input, actor) { + const user = await this.prisma.adminUser.create({ + data: { + phone: input.phone, + name: input.name, + role: input.role, + passwordHash: await hashPassword(input.password) + } + }); + this.audit.log(actor.id, "create", "user", user.id, user.phone); + return toUserDto(user); + } + async update(id, input, actor) { + if (id === actor.id && (input.role !== "ADMIN" || !input.isActive)) { + throw new BadRequestException("\u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u0646\u0642\u0634 \u06CC\u0627 \u0648\u0636\u0639\u06CC\u062A \u062D\u0633\u0627\u0628 \u062E\u0648\u062F\u062A\u0627\u0646 \u0631\u0627 \u062A\u063A\u06CC\u06CC\u0631 \u062F\u0647\u06CC\u062F"); + } + const user = await this.prisma.adminUser.update({ + where: { id }, + data: { + name: input.name, + role: input.role, + isActive: input.isActive, + ...input.password ? { passwordHash: await hashPassword(input.password) } : {} + } + }); + if (input.password || !input.isActive) + await this.auth.revokeAll(id); + this.audit.log(actor.id, "update", "user", id, user.phone); + return toUserDto(user); + } + async remove(id, actor) { + if (id === actor.id) + throw new BadRequestException("\u0646\u0645\u06CC\u200C\u062A\u0648\u0627\u0646\u06CC\u062F \u062D\u0633\u0627\u0628 \u062E\u0648\u062F\u062A\u0627\u0646 \u0631\u0627 \u062D\u0630\u0641 \u06A9\u0646\u06CC\u062F"); + const user = await this.prisma.adminUser.delete({ where: { id } }); + this.audit.log(actor.id, "delete", "user", id, user.phone); + } +}; +UsersService = __decorate13([ + Injectable(), + __metadata12("design:paramtypes", [ + PrismaService, + AuthService, + AuditService + ]) +], UsersService); +var UsersController = class UsersController2 { + static { + __name(this, "UsersController"); + } + users; + constructor(users) { + this.users = users; + } + list() { + return this.users.list(); + } + create(body, actor) { + return this.users.create(body, actor); + } + update(id, body, actor) { + return this.users.update(id, body, actor); + } + async remove(id, actor) { + await this.users.remove(id, actor); + } +}; +__decorate13([ + Get(), + __metadata12("design:type", Function), + __metadata12("design:paramtypes", []), + __metadata12("design:returntype", void 0) +], UsersController.prototype, "list", null); +__decorate13([ + Post(), + __param7(0, Body(new ZodPipe(userCreateSchema))), + __param7(1, CurrentUser()), + __metadata12("design:type", Function), + __metadata12("design:paramtypes", [Object, Object]), + __metadata12("design:returntype", void 0) +], UsersController.prototype, "create", null); +__decorate13([ + Put(":id"), + __param7(0, Param("id", IdPipe)), + __param7(1, Body(new ZodPipe(userUpdateSchema))), + __param7(2, CurrentUser()), + __metadata12("design:type", Function), + __metadata12("design:paramtypes", [Number, Object, Object]), + __metadata12("design:returntype", void 0) +], UsersController.prototype, "update", null); +__decorate13([ + Delete(":id"), + HttpCode(204), + __param7(0, Param("id", IdPipe)), + __param7(1, CurrentUser()), + __metadata12("design:type", Function), + __metadata12("design:paramtypes", [Number, Object]), + __metadata12("design:returntype", Promise) +], UsersController.prototype, "remove", null); +UsersController = __decorate13([ + AdminAuth("ADMIN"), + Controller("admin/users"), + __metadata12("design:paramtypes", [UsersService]) +], UsersController); +var UsersModule = class UsersModule2 { + static { + __name(this, "UsersModule"); + } +}; +UsersModule = __decorate13([ + Module({ + imports: [AuthModule], + controllers: [UsersController], + providers: [UsersService] + }) +], UsersModule); + +// dist/app.module.js +var __decorate14 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata13 = function(k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var HealthController = class HealthController2 { + static { + __name(this, "HealthController"); + } + prisma; + constructor(prisma) { + this.prisma = prisma; + } + async health() { + await this.prisma.$queryRaw`SELECT 1`; + return { ok: true }; + } +}; +__decorate14([ + Get(), + __metadata13("design:type", Function), + __metadata13("design:paramtypes", []), + __metadata13("design:returntype", Promise) +], HealthController.prototype, "health", null); +HealthController = __decorate14([ + Controller("health"), + __metadata13("design:paramtypes", [PrismaService]) +], HealthController); +var AppModule = class AppModule2 { + static { + __name(this, "AppModule"); + } +}; +AppModule = __decorate14([ + Module({ + imports: [ + import_throttler3.ThrottlerModule.forRoot([{ ttl: 6e4, limit: 300 }]), + PrismaModule, + CommonModule, + AuthModule, + UsersModule, + MediaModule, + CatalogModule, + SectionsModule, + ContactModule, + PublicModule, + DashboardModule + ], + controllers: [HealthController], + providers: [ + { provide: APP_GUARD, useClass: import_throttler3.ThrottlerGuard }, + { provide: APP_FILTER, useClass: PrismaExceptionFilter } + ] + }) +], AppModule); + +// dist/main.js +async function bootstrap() { + const app = await NestFactory.create(AppModule); + app.set("trust proxy", env.TRUST_PROXY); + app.setGlobalPrefix("api"); + app.use(helmet()); + app.use((0, import_cookie_parser.default)()); + const origins = env.CORS_ORIGINS.split(",").map((o) => o.trim()).filter(Boolean); + if (origins.length) + app.enableCors({ origin: origins, credentials: true }); + app.enableShutdownHooks(); + await app.listen(env.PORT); +} +__name(bootstrap, "bootstrap"); +await bootstrap(); diff --git a/apps/api/.output/dist/migrate.js b/apps/api/.output/dist/migrate.js new file mode 100644 index 0000000..1b964b3 --- /dev/null +++ b/apps/api/.output/dist/migrate.js @@ -0,0 +1,67 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + esm_default +} from "./chunks/chunk-KIUJQ22G.js"; +import { + __name +} from "./chunks/chunk-T6GW54FI.js"; + +// dist/migrate.js +import { createHash, randomUUID } from "node:crypto"; +import { existsSync } from "node:fs"; +import { readdir, readFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +if (existsSync(".env")) + process.loadEnvFile(".env"); +var MIGRATIONS_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../prisma/migrations"); +var LOCK_ID = 72707369; +var client = new esm_default.Client({ connectionString: process.env.DATABASE_URL }); +async function main() { + await client.query(`SELECT pg_advisory_lock(${LOCK_ID})`); + await client.query(`CREATE TABLE IF NOT EXISTS "_prisma_migrations" ( + "id" VARCHAR(36) PRIMARY KEY NOT NULL, + "checksum" VARCHAR(64) NOT NULL, + "finished_at" TIMESTAMPTZ, + "migration_name" VARCHAR(255) NOT NULL, + "logs" TEXT, + "rolled_back_at" TIMESTAMPTZ, + "started_at" TIMESTAMPTZ NOT NULL DEFAULT now(), + "applied_steps_count" INTEGER NOT NULL DEFAULT 0 + )`); + const { rows } = await client.query(`SELECT migration_name, finished_at FROM "_prisma_migrations" WHERE rolled_back_at IS NULL`); + const failed = rows.find((r) => !r.finished_at); + if (failed) { + throw new Error(`migration ${failed.migration_name} failed earlier; fix the database, then mark it with \`prisma migrate resolve\` (see its "logs" column in _prisma_migrations)`); + } + const applied = new Set(rows.map((r) => r.migration_name)); + const entries = await readdir(MIGRATIONS_DIR, { withFileTypes: true }); + const pending = entries.filter((e) => e.isDirectory() && !applied.has(e.name)).map((e) => e.name).sort(); + for (const name of pending) { + const script = await readFile(path.join(MIGRATIONS_DIR, name, "migration.sql"), "utf8"); + const id = randomUUID(); + await client.query(`INSERT INTO "_prisma_migrations" (id, checksum, migration_name) VALUES ($1, $2, $3)`, [id, createHash("sha256").update(script).digest("hex"), name]); + try { + await client.query(script); + } catch (e) { + await client.query(`UPDATE "_prisma_migrations" SET logs = $2 WHERE id = $1`, [ + id, + String(e) + ]); + throw new Error(`migration ${name} failed`, { cause: e }); + } + await client.query(`UPDATE "_prisma_migrations" SET finished_at = now(), applied_steps_count = 1 WHERE id = $1`, [id]); + console.log(`applied ${name}`); + } + console.log(pending.length ? `${pending.length} migration(s) applied` : "no pending migrations"); +} +__name(main, "main"); +try { + await client.connect(); + await main(); +} catch (e) { + console.error(e); + process.exitCode = 1; +} finally { + await client.end(); +} diff --git a/apps/api/.output/dist/seed/seed.js b/apps/api/.output/dist/seed/seed.js new file mode 100644 index 0000000..391899b --- /dev/null +++ b/apps/api/.output/dist/seed/seed.js @@ -0,0 +1,1460 @@ +import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url); +import { + S3Storage, + SECTION_KEYS, + createPrismaClient, + env, + hashPassword, + normalizeIrMobile, + sectionSchemas, + toWebp +} from "../chunks/chunk-TXBARIZB.js"; +import "../chunks/chunk-KIUJQ22G.js"; +import "../chunks/chunk-BX2ML7LW.js"; +import "../chunks/chunk-A34KYKJP.js"; +import "../chunks/chunk-6UPY3HEI.js"; +import { + __name +} from "../chunks/chunk-T6GW54FI.js"; + +// dist/seed/seed.js +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +// dist/seed/data/categories.js +var CATEGORIES = [ + { + slug: "workwear", + code: "IP-C01", + name: "\u067E\u0648\u0634\u0627\u06A9 \u06A9\u0627\u0631 \u0648 \u0627\u0644\u0628\u0633\u0647 \u0635\u0646\u0639\u062A\u06CC", + en: "INDUSTRIAL WORKWEAR", + shortDesc: "\u0644\u0628\u0627\u0633\u200C\u06A9\u0627\u0631 \u0635\u0646\u0639\u062A\u06CC \u0628\u0627 \u067E\u0627\u0631\u0686\u0647 \u0641\u0644\u0627\u0645\u0646\u062A \u06A9\u062C\u0631\u0627\u0647 \u0627\u0639\u0644\u0627\u060C \u062F\u0648\u062E\u062A \u0633\u0647 \u0633\u0648\u0632\u0646\u0647 \u0648 \u0622\u0633\u062A\u0631 \u0639\u0631\u0642\u200C\u06AF\u06CC\u0631\u061B \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC \u0648 \u0635\u0646\u0639\u062A\u06CC.", + fullDesc: "\u0645\u062C\u0645\u0648\u0639\u0647 \u06A9\u0627\u0645\u0644 \u067E\u0648\u0634\u0627\u06A9 \u06A9\u0627\u0631 \u0635\u0646\u0639\u062A\u06CC \u0634\u0627\u0645\u0644 \u06A9\u0627\u067E\u0634\u0646 \u0648 \u0634\u0644\u0648\u0627\u0631 \u0645\u0647\u0646\u062F\u0633\u06CC\u060C \u0644\u0628\u0627\u0633 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC\u060C \u067E\u06CC\u0634\u200C\u0628\u0646\u062F \u062F\u0648\u0628\u0646\u062F\u0647 \u0648 \u062A\u06CC\u200C\u0634\u0631\u062A \u06A9\u0627\u0631. \u062A\u0645\u0627\u0645\u06CC \u0645\u062F\u0644\u200C\u0647\u0627 \u0628\u0627 \u067E\u0627\u0631\u0686\u0647 \u0641\u0644\u0627\u0645\u0646\u062A \u06A9\u062C\u0631\u0627\u0647 \u0627\u0639\u0644\u0627 \u0648 \u06A9\u062A\u0627\u0646 \u0645\u0642\u0627\u0648\u0645\u060C \u062F\u0648\u062E\u062A \u0635\u0646\u0639\u062A\u06CC \u0633\u0647 \u0633\u0648\u0632\u0646\u0647 \u067E\u06CC\u0648\u0633\u062A\u0647 \u0628\u0631\u0627\u06CC \u062C\u0644\u0648\u06AF\u06CC\u0631\u06CC \u0627\u0632 \u0634\u06A9\u0627\u0641\u062A\u06AF\u06CC \u062F\u0631\u0632\u0647\u0627 \u0648 \u0622\u0633\u062A\u0631 \u0639\u0631\u0642\u200C\u06AF\u06CC\u0631 \u0627\u062E\u062A\u0635\u0627\u0635\u06CC \u062A\u0648\u0644\u06CC\u062F \u0645\u06CC\u200C\u0634\u0648\u0646\u062F. \u0645\u0648\u062C\u0648\u062F \u062F\u0631 \u0633\u0627\u06CC\u0632\u0647\u0627\u06CC M \u062A\u0627 4XL.", + icon: "Shirt", + products: [ + { + code: "IP-W01", + name: "\u0644\u0628\u0627\u0633\u06A9\u0627\u0631 \u0645\u062F\u0644 \u0622\u0644\u0641\u0627", + en: "ALPHA WORKWEAR", + desc: "\u06A9\u0627\u067E\u0634\u0646 \u0648 \u0634\u0644\u0648\u0627\u0631 \u0645\u0647\u0646\u062F\u0633\u06CC \u0628\u0627 \u062C\u06CC\u0628\u200C\u0647\u0627\u06CC \u067E\u0627\u06A9\u062A\u06CC \u0648 \u0632\u06CC\u067E\u200C\u062F\u0627\u0631\u060C \u0646\u0648\u0627\u0631 \u0645\u063A\u0632\u06CC \u062A\u0632\u0626\u06CC\u0646\u06CC \u0648 \u0637\u0631\u0627\u062D\u06CC \u0627\u0631\u06AF\u0648\u0646\u0648\u0645\u06CC\u06A9 \u0628\u0631\u0627\u06CC \u062A\u06CC\u0645\u200C\u0647\u0627\u06CC \u0641\u0646\u06CC \u0648 \u0645\u0647\u0646\u062F\u0633\u06CC.", + specs: ["\u0641\u0644\u0627\u0645\u0646\u062A \u06A9\u062C\u0631\u0627\u0647 \u0627\u0639\u0644\u0627", "\u062F\u0648\u062E\u062A \u0633\u0647 \u0633\u0648\u0632\u0646\u0647", "\u0622\u0633\u062A\u0631 \u0639\u0631\u0642\u200C\u06AF\u06CC\u0631", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"], + variants: [ + "\u0637\u0648\u0633\u06CC/\u0622\u0628\u06CC", + "\u0645\u0634\u06A9\u06CC/\u0642\u0631\u0645\u0632", + "\u0645\u0634\u06A9\u06CC/\u0632\u0631\u062F", + "\u06A9\u0631\u0645/\u0633\u0631\u0645\u0647\u200C\u0627\u06CC" + ] + }, + { + code: "IP-W02", + name: "\u0644\u0628\u0627\u0633\u06A9\u0627\u0631 \u0645\u062F\u0644 \u0627\u0648\u0631\u062C\u06CC\u0646\u0627\u0644", + en: "ORIGINAL WORKWEAR", + desc: "\u06A9\u0627\u067E\u0634\u0646 \u0648 \u0634\u0644\u0648\u0627\u0631 \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F \u0628\u0627 \u062F\u0648\u0627\u0645 \u0628\u0627\u0644\u0627\u060C \u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u062F\u0631 \u0641\u0646\u06CC \u06A9\u0627\u0631\u062E\u0627\u0646\u062C\u0627\u062A \u0648 \u062E\u0637\u0648\u0637 \u062A\u0648\u0644\u06CC\u062F \u0628\u0627 \u062A\u0631\u06A9\u06CC\u0628\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u062F\u0648\u0631\u0646\u06AF.", + specs: ["\u06A9\u062A\u0627\u0646 \u0645\u0642\u0627\u0648\u0645", "\u062F\u0648\u062E\u062A \u0633\u0647 \u0633\u0648\u0632\u0646\u0647", "\u0622\u0633\u062A\u0631 \u0639\u0631\u0642\u200C\u06AF\u06CC\u0631", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"], + variants: ["\u062A\u0631\u06A9\u06CC\u0628\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u062F\u0648\u0631\u0646\u06AF"] + }, + { + code: "IP-W03", + name: "\u0644\u0628\u0627\u0633\u06A9\u0627\u0631 \u0645\u062F\u0644 \u0628\u0648\u0641\u0627\u0644\u0648", + en: "BUFFALO WORKWEAR", + desc: "\u0637\u0631\u0627\u062D\u06CC \u0627\u0633\u067E\u0631\u062A \u0628\u0627 \u0628\u0631\u0634\u200C\u0647\u0627\u06CC \u062A\u0642\u0648\u06CC\u062A\u06CC \u0631\u0648\u06CC \u0634\u0627\u0646\u0647 \u0648 \u0628\u0627\u0632\u0648\u060C \u0632\u06CC\u067E \u0645\u062E\u0641\u06CC \u0645\u062D\u0627\u0641\u0638\u200C\u062F\u0627\u0631\u061B \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0641\u0639\u0627\u0644.", + specs: ["\u0641\u0644\u0627\u0645\u0646\u062A \u06A9\u062C\u0631\u0627\u0647 \u0627\u0639\u0644\u0627", "\u0632\u06CC\u067E \u0645\u062E\u0641\u06CC \u0645\u062D\u0627\u0641\u0638\u200C\u062F\u0627\u0631", "\u0628\u0631\u0634 \u062A\u0642\u0648\u06CC\u062A\u06CC \u0634\u0627\u0646\u0647", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"], + variants: [ + "\u0633\u0631\u0645\u0647\u200C\u0627\u06CC/\u0632\u0631\u062F", + "\u0637\u0648\u0633\u06CC/\u0642\u0631\u0645\u0632", + "\u0637\u0648\u0633\u06CC/\u062E\u0631\u062F\u0644\u06CC", + "\u0622\u0628\u06CC/\u0645\u0634\u06A9\u06CC" + ] + }, + { + code: "IP-W04", + name: "\u0644\u0628\u0627\u0633\u06A9\u0627\u0631 \u0633\u062A \u0648\u0631\u06A9", + en: "SET WORK", + desc: "\u0633\u062A \u0627\u062F\u0627\u0631\u06CC/\u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC \u0628\u0627 \u0627\u0646\u0639\u0637\u0627\u0641 \u0628\u0627\u0644\u0627 \u062C\u0647\u062A \u0641\u0639\u0627\u0644\u06CC\u062A\u200C\u0647\u0627\u06CC \u0641\u0646\u06CC \u0648 \u062A\u0639\u0645\u06CC\u0631\u0627\u062A\u06CC\u061B \u0642\u0627\u0628\u0644 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0633\u062A\u0627\u062F\u06CC \u0648 \u0639\u0645\u0644\u06CC\u0627\u062A\u06CC.", + specs: ["\u06A9\u062A\u0627\u0646 \u0645\u0642\u0627\u0648\u0645", "\u062F\u0648\u062E\u062A \u0633\u0647 \u0633\u0648\u0632\u0646\u0647", "\u0637\u0631\u0627\u062D\u06CC \u0645\u0646\u0639\u0637\u0641", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"], + variants: ["\u062A\u0631\u06A9\u06CC\u0628\u200C\u0647\u0627\u06CC \u0686\u0646\u062F\u06AF\u0627\u0646\u0647 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC"] + }, + { + code: "IP-W05", + name: "\u0644\u0628\u0627\u0633\u06A9\u0627\u0631 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC", + en: "WELDING WORKWEAR", + desc: "\u0645\u062A\u0631\u06CC\u0627\u0644 \u0633\u0646\u06AF\u06CC\u0646 \u06A9\u062A\u0627\u0646 \u06CC\u0627 \u0686\u0631\u0645 \u062C\u0647\u062A \u0645\u0642\u0627\u0648\u0645\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u067E\u0627\u0634\u0634 \u062C\u0631\u0642\u0647\u200C\u0647\u0627\u06CC \u0645\u0630\u0627\u0628\u061B \u0637\u0631\u0627\u062D\u06CC\u200C\u0634\u062F\u0647 \u0628\u0631\u0627\u06CC \u062C\u0648\u0634\u06A9\u0627\u0631\u0627\u0646 \u0635\u0646\u0639\u062A\u06CC.", + specs: ["\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u062C\u0631\u0642\u0647 \u0645\u0630\u0627\u0628", "\u06A9\u062A\u0627\u0646 \u0633\u0646\u06AF\u06CC\u0646 / \u0686\u0631\u0645", "\u062F\u0648\u062E\u062A \u0635\u0646\u0639\u062A\u06CC", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"] + }, + { + code: "IP-W06", + name: "\u067E\u06CC\u0634\u200C\u0628\u0646\u062F \u062F\u0648\u0628\u0646\u062F\u0647", + en: "BIB OVERALLS", + desc: "\u0622\u0632\u0627\u062F\u06CC \u0639\u0645\u0644 \u06A9\u0627\u0645\u0644 \u06A9\u062A\u0641 \u0648 \u0634\u0627\u0646\u0647 \u0628\u0627 \u062C\u06CC\u0628\u200C\u0647\u0627\u06CC \u0686\u0646\u062F\u0645\u0646\u0638\u0648\u0631\u0647 \u0627\u0628\u0632\u0627\u0631 \u0628\u0631 \u0631\u0648\u06CC \u067E\u06CC\u0634\u200C\u0633\u06CC\u0646\u0647\u061B \u0627\u06CC\u062F\u0647\u200C\u0622\u0644 \u0628\u0631\u0627\u06CC \u06A9\u0627\u0631\u0647\u0627\u06CC \u062A\u0639\u0645\u06CC\u0631\u0627\u062A\u06CC \u0648 \u0645\u0648\u0646\u062A\u0627\u0698.", + specs: ["\u0622\u0632\u0627\u062F\u06CC \u062D\u0631\u06A9\u062A \u0634\u0627\u0646\u0647", "\u062C\u06CC\u0628 \u0627\u0628\u0632\u0627\u0631 \u067E\u06CC\u0634\u200C\u0633\u06CC\u0646\u0647", "\u062F\u0648\u062E\u062A \u0633\u0647 \u0633\u0648\u0632\u0646\u0647", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"], + variants: ["\u0633\u0631\u0645\u0647\u200C\u0627\u06CC", "\u062E\u0627\u06A9\u0633\u062A\u0631\u06CC"] + }, + { + code: "IP-W07", + name: "\u062A\u06CC\u200C\u0634\u0631\u062A \u0635\u0646\u0639\u062A\u06CC", + en: "INDUSTRIAL T-SHIRT", + desc: "\u062A\u06CC\u200C\u0634\u0631\u062A \u06CC\u0642\u0647\u200C\u062F\u0627\u0631 \u062C\u0648\u062F\u0648\u0646 / \u067E\u0646\u0628\u0647\u200C\u0627\u06CC \u0645\u0646\u0627\u0633\u0628 \u0641\u0635\u0648\u0644 \u06AF\u0631\u0645 \u0648 \u0632\u06CC\u0631\u067E\u0648\u0634 \u06A9\u0627\u067E\u0634\u0646 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC \u062F\u0631 \u0633\u0648\u0644\u0647\u200C\u0647\u0627\u06CC \u0633\u0631\u067E\u0648\u0634\u06CC\u062F\u0647.", + specs: ["\u067E\u0646\u0628\u0647 / \u062C\u0648\u062F\u0648\u0646", "\u06CC\u0642\u0647\u200C\u062F\u0627\u0631", "\u0645\u0646\u0627\u0633\u0628 \u0641\u0635\u0648\u0644 \u06AF\u0631\u0645", "\u0633\u0627\u06CC\u0632 M \u062A\u0627 4XL"] + } + ] + }, + { + slug: "safety-footwear", + code: "IP-C02", + name: "\u067E\u0627\u06CC\u067E\u0648\u0634 \u0648 \u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC", + en: "SAFETY FOOTWEAR", + shortDesc: "\u06A9\u0641\u0634\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u06A9\u0641\u0634\u200C\u0647\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC\u061B \u0631\u0627\u062D\u062A \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0631\u0627\u06CC \u0645\u062D\u06CC\u0637 \u0627\u062F\u0627\u0631\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u0648 \u0636\u062F \u0644\u063A\u0632\u0634 \u0628\u0631\u0627\u06CC \u06A9\u0627\u0631\u06AF\u0627\u0647.", + fullDesc: "\u067E\u0627\u06CC\u067E\u0648\u0634 \u0627\u06CC\u0645\u0646\u06CC \u0634\u0627\u0645\u0644 \u06A9\u0641\u0634\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0628\u0631\u0627\u06CC \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0641\u0634\u200C\u0647\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC \u0628\u0631\u0627\u06CC \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u061B \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645 \u0648 \u0645\u0648\u0627\u062F \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + icon: "Footprints", + groups: [ + { slug: "office", name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC", desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645." }, + { slug: "worker", name: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC", desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9." } + ], + products: [ + { + code: "IP-F01", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u0645\u062F\u0644 \u06F1\u06F1\u06F7\u06F4", + en: "OFFICE SHOE 1174", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0646\u0628\u0648\u06A9", "\u0628\u0646\u062F\u062F\u0627\u0631", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/1.webp" + }, + { + code: "IP-F02", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u0628\u06CC\u200C\u0628\u0646\u062F \u0645\u062F\u0644 \u06F6", + en: "SLIP-ON OFFICE SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u0628\u062F\u0648\u0646 \u0628\u0646\u062F", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/2.webp" + }, + { + code: "IP-F03", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u0628\u0646\u062F\u062F\u0627\u0631 \u0645\u0634\u06A9\u06CC", + en: "LACE-UP OFFICE SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u0628\u0646\u062F\u062F\u0627\u0631", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/3.webp" + }, + { + code: "IP-F04", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u0628\u06CC\u200C\u0628\u0646\u062F AAEA075", + en: "SLIP-ON OFFICE SHOE AAEA075", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u0628\u062F\u0648\u0646 \u0628\u0646\u062F", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/4.webp" + }, + { + code: "IP-F05", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u0634\u0628\u0631\u0648", + en: "SHEBRO OFFICE SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u0628\u0646\u062F\u062F\u0627\u0631", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/5.webp" + }, + { + code: "IP-F06", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u0628\u06CC\u200C\u0628\u0646\u062F \u06A9\u0644\u0627\u0633\u06CC\u06A9", + en: "CLASSIC SLIP-ON OFFICE SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u0628\u062F\u0648\u0646 \u0628\u0646\u062F", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/6.webp" + }, + { + code: "IP-F07", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u06A9\u0627\u0644\u062C", + en: "LOAFER OFFICE SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u06A9\u0627\u0644\u062C", "\u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645"], + image: "/images/products/shoes/office/7.webp" + }, + { + code: "IP-F08", + group: "office", + name: "\u06A9\u0641\u0634 \u0627\u062F\u0627\u0631\u06CC \u062F\u06CC\u067E\u0644\u0645\u0627\u062A", + en: "DIPLOMAT OFFICE SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0633\u0628\u06A9 \u0635\u0646\u0639\u062A\u06CC\u060C \u0631\u0627\u062D\u062A\u060C \u0633\u0628\u06A9 \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u0632\u06CC\u0631\u0647 \u0645\u0642\u0627\u0648\u0645.", + specs: ["\u0686\u0631\u0645 \u0637\u0628\u06CC\u0639\u06CC", "\u0628\u0646\u062F\u062F\u0627\u0631", "\u0637\u0631\u0627\u062D\u06CC \u0631\u0633\u0645\u06CC"], + image: "/images/products/shoes/office/8.webp" + }, + { + code: "IP-F09", + group: "worker", + name: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC \u0645\u062F\u0644 \u06F1", + en: "WORKER SAFETY SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + specs: ["\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0633\u0627\u06CC\u0634", "\u0632\u06CC\u0631\u0647 \u0636\u062F \u0644\u063A\u0632\u0634"], + image: "/images/products/shoes/worker/1.png" + }, + { + code: "IP-F10", + group: "worker", + name: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC \u0645\u062F\u0644 \u06F2", + en: "WORKER SAFETY SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + specs: ["\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0633\u0627\u06CC\u0634", "\u0632\u06CC\u0631\u0647 \u0636\u062F \u0644\u063A\u0632\u0634"], + image: "/images/products/shoes/worker/2.png" + }, + { + code: "IP-F11", + group: "worker", + name: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC \u0645\u062F\u0644 \u06F9\u06F0", + en: "WORKER SAFETY SHOE 90", + desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + specs: ["\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0633\u0627\u06CC\u0634", "\u0632\u06CC\u0631\u0647 \u0636\u062F \u0644\u063A\u0632\u0634"], + image: "/images/products/shoes/worker/3.png" + }, + { + code: "IP-F12", + group: "worker", + name: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u067E\u0627\u062A\u0646 \u067E\u062F\u06CC\u062F\u0647 \u062A\u0628\u0631\u06CC\u0632 \u0645\u062F\u0644 \u0631\u0627\u06CC\u06A9\u0627 S1017", + en: "PATEN PADIDEH RAYKA S1017", + desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + specs: ["\u067E\u0627\u062A\u0646 \u067E\u062F\u06CC\u062F\u0647 \u062A\u0628\u0631\u06CC\u0632", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0633\u0627\u06CC\u0634", "\u0632\u06CC\u0631\u0647 \u0636\u062F \u0644\u063A\u0632\u0634"], + image: "/images/products/shoes/worker/4.png" + }, + { + code: "IP-F13", + group: "worker", + name: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u067E\u06CC\u0645\u0627 \u0645\u062F\u0644 \u062F\u0646\u0627", + en: "PAYMA DENA SAFETY SHOE", + desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + specs: ["\u067E\u06CC\u0645\u0627", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0633\u0627\u06CC\u0634", "\u0632\u06CC\u0631\u0647 \u0636\u062F \u0644\u063A\u0632\u0634"], + image: "/images/products/shoes/worker/5.png" + }, + { + code: "IP-F14", + group: "worker", + name: "\u06A9\u0641\u0634 \u06A9\u0627\u0631 \u06A9\u0627\u0631\u06AF\u0631\u06CC \u0633\u0627\u0642\u200C\u062F\u0627\u0631", + en: "WORKER SAFETY BOOT", + desc: "\u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627 \u0648 \u067E\u0631\u0648\u0698\u0647\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0633\u0627\u06CC\u0634 \u0648 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0633\u0628\u06A9.", + specs: ["\u0633\u0627\u0642\u200C\u062F\u0627\u0631", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0633\u0627\u06CC\u0634", "\u0632\u06CC\u0631\u0647 \u0636\u062F \u0644\u063A\u0632\u0634"], + image: "/images/products/shoes/worker/6.png" + } + ] + }, + { + slug: "protective-gloves", + code: "IP-C03", + name: "\u062F\u0633\u062A\u06A9\u0634\u200C\u0647\u0627\u06CC \u062D\u0641\u0627\u0638\u062A\u06CC", + en: "PROTECTIVE GLOVES", + shortDesc: "\u062F\u0633\u062A\u06A9\u0634\u200C\u0647\u0627\u06CC \u0636\u062F \u0628\u0631\u0634\u060C \u0686\u0631\u0645\u060C \u0636\u062F \u0627\u0633\u06CC\u062F \u0648 \u0636\u062F \u062D\u0644\u0627\u0644 \u0628\u0631\u0627\u06CC \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0635\u0646\u0639\u062A\u06CC\u060C \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC \u0648 \u062A\u0645\u0627\u0633 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC.", + fullDesc: "\u062F\u0633\u062A\u06A9\u0634\u200C\u0647\u0627\u06CC \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC \u0634\u0627\u0645\u0644 \u0645\u062F\u0644\u200C\u0647\u0627\u06CC \u0636\u062F \u0628\u0631\u0634\u060C \u0686\u0631\u0645\u060C \u0636\u062F \u0627\u0633\u06CC\u062F \u0648 \u0636\u062F \u062D\u0644\u0627\u0644\u061B \u0627\u0632 \u0628\u0631\u0646\u062F\u0647\u0627\u06CC \u0627\u0633\u062A\u0627\u062F\u06A9\u0627\u0631\u060C \u0627\u0645\u0631\u06CC\u06A9\u0646 \u0633\u06CC\u0641\u062A\u06CC\u060C \u0645\u0627\u06A9\u0633\u06CC \u062F\u0631\u0627\u06CC \u0648 NM Safety. \u0647\u0631 \u0645\u062F\u0644 \u0645\u062A\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u0648\u0639 \u062E\u0637\u0631 \u0645\u062D\u06CC\u0637 \u06A9\u0627\u0631 \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647 \u0627\u0633\u062A.", + icon: "Hand", + groups: [ + { slug: "cut", name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0628\u0631\u0634", desc: "\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u06CC\u063A\u0647\u200C\u0647\u0627 \u0648 \u0641\u0644\u0632\u0627\u062A \u062A\u06CC\u0632." }, + { slug: "leather", name: "\u062F\u0633\u062A\u06A9\u0634 \u0686\u0631\u0645", desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC." }, + { slug: "acid", name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0627\u0633\u06CC\u062F", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u06CC\u062F\u0647\u0627 \u0648 \u0628\u0627\u0632\u0647\u0627." }, + { slug: "solvent", name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u062D\u0644\u0627\u0644", desc: "\u0645\u0642\u0627\u0648\u0645\u062A \u0628\u0627\u0644\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u0645\u0627\u0633 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC." } + ], + products: [ + { + code: "IP-G01", + group: "cut", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0628\u0631\u0634 \u0644\u0627\u062A\u06A9\u0633\u06CC", + en: "LATEX CUT-RESISTANT GLOVE", + desc: "\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u06CC\u063A\u0647\u200C\u0647\u0627 \u0648 \u0641\u0644\u0632\u0627\u062A \u062A\u06CC\u0632.", + specs: ["\u0636\u062F \u0628\u0631\u0634", "\u067E\u0648\u0634\u0634 \u0644\u0627\u062A\u06A9\u0633"], + image: "/images/products/gloves/cut/1.webp" + }, + { + code: "IP-G02", + group: "cut", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0628\u0631\u0634 \u0645\u062F\u0644 \u06F2", + en: "CUT-RESISTANT GLOVE", + desc: "\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u06CC\u063A\u0647\u200C\u0647\u0627 \u0648 \u0641\u0644\u0632\u0627\u062A \u062A\u06CC\u0632.", + specs: ["\u0636\u062F \u0628\u0631\u0634"], + image: "/images/products/gloves/cut/2.webp" + }, + { + code: "IP-G03", + group: "cut", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0628\u0631\u0634 \u0645\u062F\u0644 \u06F3", + en: "CUT-RESISTANT GLOVE", + desc: "\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u06CC\u063A\u0647\u200C\u0647\u0627 \u0648 \u0641\u0644\u0632\u0627\u062A \u062A\u06CC\u0632.", + specs: ["\u0636\u062F \u0628\u0631\u0634"], + image: "/images/products/gloves/cut/3.webp" + }, + { + code: "IP-G04", + group: "cut", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0628\u0631\u0634 \u0627\u0633\u062A\u0627\u062F\u06A9\u0627\u0631 \u06F1\u06F2 \u062C\u0641\u062A\u06CC", + en: "OSTADKAR CUT-RESISTANT GLOVE", + desc: "\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u06CC\u063A\u0647\u200C\u0647\u0627 \u0648 \u0641\u0644\u0632\u0627\u062A \u062A\u06CC\u0632.", + specs: ["\u0636\u062F \u0628\u0631\u0634", "\u0627\u0633\u062A\u0627\u062F\u06A9\u0627\u0631", "\u0628\u0633\u062A\u0647 \u06F1\u06F2 \u062C\u0641\u062A\u06CC"], + image: "/images/products/gloves/cut/4.webp" + }, + { + code: "IP-G05", + group: "cut", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0628\u0631\u0634 \u062A\u0627\u0646\u06AF \u0648\u0627\u0646\u06AF", + en: "TANG WANG CUT-RESISTANT GLOVE", + desc: "\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u06CC\u063A\u0647\u200C\u0647\u0627 \u0648 \u0641\u0644\u0632\u0627\u062A \u062A\u06CC\u0632.", + specs: ["\u0636\u062F \u0628\u0631\u0634", "\u062A\u0627\u0646\u06AF \u0648\u0627\u0646\u06AF"], + image: "/images/products/gloves/cut/5.webp" + }, + { + code: "IP-G06", + group: "leather", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0686\u0631\u0645 \u0645\u062F\u0644 \u06F0\u06F7", + en: "LEATHER GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u0686\u0631\u0645"], + image: "/images/products/gloves/leather/1.webp" + }, + { + code: "IP-G07", + group: "leather", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0686\u0631\u0645 BMW", + en: "BMW LEATHER GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u0686\u0631\u0645", "\u0633\u0627\u0642 \u0628\u0644\u0646\u062F"], + image: "/images/products/gloves/leather/2.webp" + }, + { + code: "IP-G08", + group: "leather", + name: "\u062F\u0633\u062A\u06A9\u0634 \u06A9\u0641 \u0686\u0631\u0645 \u062F\u0648\u0628\u0644 \u0633\u0627\u0642 \u067E\u0627\u0631\u0686\u0647\u200C\u0627\u06CC", + en: "DOUBLE-PALM LEATHER GLOVE, FABRIC CUFF", + desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u06A9\u0641 \u0686\u0631\u0645 \u062F\u0648\u0628\u0644", "\u0633\u0627\u0642 \u067E\u0627\u0631\u0686\u0647\u200C\u0627\u06CC"], + image: "/images/products/gloves/leather/3.webp" + }, + { + code: "IP-G09", + group: "leather", + name: "\u062F\u0633\u062A\u06A9\u0634 \u06A9\u0641 \u0686\u0631\u0645 \u062F\u0648\u0628\u0644 \u0633\u0627\u0642 \u0686\u0631\u0645", + en: "DOUBLE-PALM LEATHER GLOVE, LEATHER CUFF", + desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u06A9\u0641 \u0686\u0631\u0645 \u062F\u0648\u0628\u0644", "\u0633\u0627\u0642 \u0686\u0631\u0645"], + image: "/images/products/gloves/leather/4.webp" + }, + { + code: "IP-G10", + group: "leather", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0647\u0648\u0628\u0627\u0631\u062A \u0627\u0645\u0631\u06CC\u06A9\u0646 \u0633\u06CC\u0641\u062A\u06CC", + en: "AMERICAN SAFETY HOBART GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u0686\u0631\u0645", "\u062C\u0648\u0634\u06A9\u0627\u0631\u06CC", "EN 388 / EN 407"], + image: "/images/products/gloves/leather/5.webp" + }, + { + code: "IP-G11", + group: "leather", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0647\u0648\u0628\u0627\u0631\u062A \u0637\u0631\u062D \u0641\u0631\u0627\u0646\u0633\u0647", + en: "FRENCH-STYLE HOBART GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638 \u062F\u0633\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062D\u0631\u0627\u0631\u062A\u060C \u062C\u0631\u0642\u0647 \u0648 \u0633\u0627\u06CC\u0634 \u062F\u0631 \u06A9\u0627\u0631\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0648 \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u0686\u0631\u0645", "\u062C\u0648\u0634\u06A9\u0627\u0631\u06CC"], + image: "/images/products/gloves/leather/6.webp" + }, + { + code: "IP-G12", + group: "acid", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0627\u0633\u06CC\u062F \u0645\u062F\u0644 \u06F1", + en: "ACID-RESISTANT GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u06CC\u062F\u0647\u0627 \u0648 \u0628\u0627\u0632\u0647\u0627.", + specs: ["\u0636\u062F \u0627\u0633\u06CC\u062F"], + image: "/images/products/gloves/acid/1.webp" + }, + { + code: "IP-G13", + group: "acid", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0627\u0633\u06CC\u062F \u0645\u062F\u0644 \u06F2", + en: "ACID-RESISTANT GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u06CC\u062F\u0647\u0627 \u0648 \u0628\u0627\u0632\u0647\u0627.", + specs: ["\u0636\u062F \u0627\u0633\u06CC\u062F"], + image: "/images/products/gloves/acid/2.webp" + }, + { + code: "IP-G14", + group: "acid", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0627\u0633\u06CC\u062F \u0645\u062F\u0644 \u06F3", + en: "ACID-RESISTANT GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u06CC\u062F\u0647\u0627 \u0648 \u0628\u0627\u0632\u0647\u0627.", + specs: ["\u0636\u062F \u0627\u0633\u06CC\u062F"], + image: "/images/products/gloves/acid/3.webp" + }, + { + code: "IP-G15", + group: "acid", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u0627\u0633\u06CC\u062F \u0645\u0642\u0627\u0648\u0645 \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC", + en: "CHEMICAL-RESISTANT GLOVE", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u06CC\u062F\u0647\u0627 \u0648 \u0628\u0627\u0632\u0647\u0627.", + specs: ["\u0636\u062F \u0627\u0633\u06CC\u062F", "\u0645\u0642\u0627\u0648\u0645 \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC", "\u0633\u0627\u0642 \u0628\u0644\u0646\u062F"], + image: "/images/products/gloves/acid/4.webp" + }, + { + code: "IP-G16", + group: "solvent", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u062D\u0644\u0627\u0644 \u0645\u062F\u0644 \u06F1\u06F3", + en: "SOLVENT-RESISTANT GLOVE", + desc: "\u0645\u0642\u0627\u0648\u0645\u062A \u0628\u0627\u0644\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u0645\u0627\u0633 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC.", + specs: ["\u0636\u062F \u062D\u0644\u0627\u0644"], + image: "/images/products/gloves/solvent/1.webp" + }, + { + code: "IP-G17", + group: "solvent", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0645\u0627\u06A9\u0633\u06CC \u062F\u0631\u0627\u06CC \u067E\u0644\u0627\u0633 56-530", + en: "MAXIDRY PLUS 56-530", + desc: "\u0645\u0642\u0627\u0648\u0645\u062A \u0628\u0627\u0644\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u0645\u0627\u0633 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC.", + specs: ["\u0636\u062F \u062D\u0644\u0627\u0644", "MaxiDry Plus"], + image: "/images/products/gloves/solvent/2.webp" + }, + { + code: "IP-G18", + group: "solvent", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0636\u062F \u062D\u0644\u0627\u0644 \u0646\u06CC\u062A\u0631\u06CC\u0644\u06CC", + en: "NITRILE SOLVENT-RESISTANT GLOVE", + desc: "\u0645\u0642\u0627\u0648\u0645\u062A \u0628\u0627\u0644\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u0645\u0627\u0633 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC.", + specs: ["\u0636\u062F \u062D\u0644\u0627\u0644", "\u0646\u06CC\u062A\u0631\u06CC\u0644"], + image: "/images/products/gloves/solvent/3.webp" + }, + { + code: "IP-G19", + group: "solvent", + name: "\u062F\u0633\u062A\u06A9\u0634 \u0646\u06CC\u062A\u0631\u06CC\u0644 \u0622\u0632\u0645\u0627\u06CC\u0634\u06AF\u0627\u0647\u06CC \u0636\u062F \u062D\u0644\u0627\u0644 NM Safety", + en: "NM SAFETY NITRILE LAB GLOVE", + desc: "\u0645\u0642\u0627\u0648\u0645\u062A \u0628\u0627\u0644\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u0645\u0627\u0633 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC.", + specs: ["\u0636\u062F \u062D\u0644\u0627\u0644", "\u0646\u06CC\u062A\u0631\u06CC\u0644", "\u0622\u0632\u0645\u0627\u06CC\u0634\u06AF\u0627\u0647\u06CC"], + image: "/images/products/gloves/solvent/4.webp" + } + ] + }, + { + slug: "safety-helmets", + code: "IP-C04", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC", + en: "SAFETY HELMETS", + shortDesc: "\u06A9\u0644\u0627\u0647\u200C\u0647\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC\u060C \u0645\u0647\u0646\u062F\u0633\u06CC\u060C \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0648 \u06A9\u067E \u0627\u06CC\u0645\u0646\u06CC\u061B \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0636\u0631\u0628\u0647 \u0648 \u0633\u0642\u0648\u0637 \u0627\u062C\u0633\u0627\u0645.", + fullDesc: "\u0627\u0646\u0648\u0627\u0639 \u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0635\u0646\u0639\u062A\u06CC \u0634\u0627\u0645\u0644 \u0645\u062F\u0644\u200C\u0647\u0627\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC\u060C \u0645\u0647\u0646\u062F\u0633\u06CC\u060C \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0628\u0627 \u0628\u0646\u062F \u0686\u0627\u0646\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u06A9\u067E \u0627\u06CC\u0645\u0646\u06CC \u0633\u0628\u06A9. \u0628\u0627 \u067E\u0648\u0633\u062A\u0647 \u0636\u0631\u0628\u0647\u200C\u06AF\u06CC\u0631 \u0645\u0642\u0627\u0648\u0645\u060C \u0631\u06AF\u0644\u0627\u0698 \u062F\u0627\u062E\u0644\u06CC \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u062A\u0646\u0648\u0639 \u0631\u0646\u06AF\u06CC \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F HSE.", + icon: "HardHat", + groups: [ + { slug: "worker", name: "\u06A9\u0644\u0627\u0647 \u06A9\u0627\u0631\u06AF\u0631\u06CC", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0633\u0631 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0636\u0631\u0628\u0647 \u0648 \u0633\u0642\u0648\u0637 \u0627\u062C\u0633\u0627\u0645." }, + { slug: "engineering", name: "\u06A9\u0644\u0627\u0647 \u0645\u0647\u0646\u062F\u0633\u06CC", desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0635\u0646\u0639\u062A\u06CC \u0633\u0628\u06A9\u060C \u0631\u0627\u062D\u062A \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628." }, + { slug: "height", name: "\u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639", desc: "\u062F\u0627\u0631\u0627\u06CC \u0628\u0646\u062F \u0686\u0627\u0646\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u062B\u0628\u0627\u062A \u0628\u06CC\u0634\u062A\u0631 \u0647\u0646\u06AF\u0627\u0645 \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639." }, + { slug: "cap", name: "\u06A9\u067E \u0627\u06CC\u0645\u0646\u06CC", desc: "\u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A\u060C \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0631\u0648\u0632\u0645\u0631\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u0627\u062F\u0627\u0631\u06CC." } + ], + products: [ + { + code: "IP-H01", + group: "worker", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631\u06AF\u0631\u06CC \u0622\u0628\u06CC", + en: "WORKER SAFETY HELMET", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0633\u0631 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u200C\u0647\u0627\u060C \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0636\u0631\u0628\u0647 \u0648 \u0633\u0642\u0648\u0637 \u0627\u062C\u0633\u0627\u0645.", + specs: ["\u067E\u0648\u0633\u062A\u0647 \u0636\u0631\u0628\u0647\u200C\u06AF\u06CC\u0631", "\u0631\u06AF\u0644\u0627\u0698 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/helmets/2.webp" + }, + { + code: "IP-H02", + group: "engineering", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0645\u0647\u0646\u062F\u0633\u06CC \u067E\u0627\u062F\u06A9\u0633", + en: "PADEX ENGINEERING HELMET", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0635\u0646\u0639\u062A\u06CC \u0633\u0628\u06A9\u060C \u0631\u0627\u062D\u062A \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628.", + specs: ["\u067E\u0627\u062F\u06A9\u0633", "\u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628", "\u0631\u06AF\u0644\u0627\u0698 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/helmets/11.webp" + }, + { + code: "IP-H03", + group: "engineering", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0645\u0647\u0646\u062F\u0633\u06CC \u067E\u0627\u062F\u06A9\u0633 PADX", + en: "PADEX PADX ENGINEERING HELMET", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0635\u0646\u0639\u062A\u06CC \u0633\u0628\u06A9\u060C \u0631\u0627\u062D\u062A \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628.", + specs: ["\u067E\u0627\u062F\u06A9\u0633", "\u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628", "\u0631\u06AF\u0644\u0627\u0698 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/helmets/12.webp" + }, + { + code: "IP-H04", + group: "engineering", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0645\u0647\u0646\u062F\u0633 \u067E\u0627\u062F\u06A9\u0633 (\u0646\u0645\u0627\u06CC \u062F\u0627\u062E\u0644\u06CC)", + en: "PADEX HELMET HARNESS", + desc: "\u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0627\u062F\u0627\u0631\u06CC \u0648 \u0635\u0646\u0639\u062A\u06CC \u0633\u0628\u06A9\u060C \u0631\u0627\u062D\u062A \u0648 \u0634\u06A9\u06CC\u0644 \u0628\u0627 \u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628.", + specs: ["\u067E\u0627\u062F\u06A9\u0633", "\u06CC\u0631\u0627\u0642 \u062F\u0627\u062E\u0644\u06CC", "\u0631\u06AF\u0644\u0627\u0698 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/helmets/10.webp" + }, + { + code: "IP-H05", + group: "height", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0628\u0627 \u0639\u06CC\u0646\u06A9", + en: "HEIGHT HELMET WITH VISOR", + desc: "\u062F\u0627\u0631\u0627\u06CC \u0628\u0646\u062F \u0686\u0627\u0646\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u062B\u0628\u0627\u062A \u0628\u06CC\u0634\u062A\u0631 \u0647\u0646\u06AF\u0627\u0645 \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639.", + specs: ["\u0628\u0646\u062F \u0686\u0627\u0646\u0647", "\u0639\u06CC\u0646\u06A9 \u062F\u0627\u062E\u0644\u06CC", "\u0631\u06AF\u0644\u0627\u0698 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/helmets/1.webp" + }, + { + code: "IP-H06", + group: "height", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 uvex", + en: "UVEX HEIGHT HELMET", + desc: "\u062F\u0627\u0631\u0627\u06CC \u0628\u0646\u062F \u0686\u0627\u0646\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u062B\u0628\u0627\u062A \u0628\u06CC\u0634\u062A\u0631 \u0647\u0646\u06AF\u0627\u0645 \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639.", + specs: ["uvex", "\u0628\u0646\u062F \u0686\u0627\u0646\u0647", "\u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628"], + image: "/images/products/helmets/3.webp" + }, + { + code: "IP-H07", + group: "height", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0633\u0628\u0632", + en: "HEIGHT SAFETY HELMET", + desc: "\u062F\u0627\u0631\u0627\u06CC \u0628\u0646\u062F \u0686\u0627\u0646\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u062B\u0628\u0627\u062A \u0628\u06CC\u0634\u062A\u0631 \u0647\u0646\u06AF\u0627\u0645 \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639.", + specs: ["\u0628\u0646\u062F \u0686\u0627\u0646\u0647", "\u0631\u06AF\u0644\u0627\u0698 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/helmets/4.webp" + }, + { + code: "IP-H08", + group: "height", + name: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0635\u0646\u0639\u062A\u06CC MK8", + en: "MK8 INDUSTRIAL HELMET", + desc: "\u062F\u0627\u0631\u0627\u06CC \u0628\u0646\u062F \u0686\u0627\u0646\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u062B\u0628\u0627\u062A \u0628\u06CC\u0634\u062A\u0631 \u0647\u0646\u06AF\u0627\u0645 \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639.", + specs: ["MK8", "\u0628\u0646\u062F \u0686\u0627\u0646\u0647", "\u062A\u0647\u0648\u06CC\u0647 \u0645\u0646\u0627\u0633\u0628"], + image: "/images/products/helmets/9.webp" + }, + { + code: "IP-H09", + group: "cap", + name: "\u06A9\u067E \u0627\u06CC\u0645\u0646\u06CC \u0636\u0631\u0628\u0647\u200C\u06AF\u06CC\u0631", + en: "SAFETY BUMP CAP", + desc: "\u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A\u060C \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0631\u0648\u0632\u0645\u0631\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u0627\u062F\u0627\u0631\u06CC.", + specs: ["\u0646\u0642\u0627\u0628\u200C\u062F\u0627\u0631", "\u0636\u0631\u0628\u0647\u200C\u06AF\u06CC\u0631 \u062F\u0627\u062E\u0644\u06CC", "\u0633\u0628\u06A9\u200C\u0648\u0632\u0646"], + image: "/images/products/helmets/5.webp" + } + ] + }, + { + slug: "eye-protection", + code: "IP-C05", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u0648 \u0635\u0646\u0639\u062A\u06CC", + en: "EYE PROTECTION", + shortDesc: "\u0639\u06CC\u0646\u06A9\u200C\u0647\u0627\u06CC \u0634\u0641\u0627\u0641 \u0648 \u062F\u0648\u062F\u06CC \u0648 \u06AF\u0627\u06AF\u0644\u200C\u0647\u0627\u06CC \u0645\u062D\u0627\u0641\u0638\u062A\u06CC \u0628\u0627 \u0648\u06CC\u0698\u06AF\u06CC\u200C\u0647\u0627\u06CC \u0636\u062F \u0636\u0631\u0628\u0647\u060C \u0636\u062F \u062E\u0634\u060C \u0636\u062F \u0628\u062E\u0627\u0631 \u0648 UV.", + fullDesc: "\u0639\u06CC\u0646\u06A9\u200C\u0647\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC \u0635\u0646\u0639\u062A\u06CC \u0634\u0627\u0645\u0644 \u0639\u06CC\u0646\u06A9\u200C\u0647\u0627\u06CC \u0634\u0641\u0627\u0641\u060C \u062F\u0648\u062F\u06CC \u0648 UV \u0648 \u06AF\u0627\u06AF\u0644\u200C\u0647\u0627\u06CC \u06A9\u0634\u200C\u062F\u0627\u0631 \u0627\u0632 \u0628\u0631\u0646\u062F\u0647\u0627\u06CC uvex\u060C \u062A\u0648\u062A\u0627\u0635\u060C \u06A9\u0627\u0646\u0627\u0633\u06CC\u0641 \u0648 \u062A\u06A9 \u067E\u0644\u0627\u0633\u062A. \u0636\u062F \u0636\u0631\u0628\u0647\u060C \u0636\u062F \u062E\u0634\u060C \u0636\u062F \u0628\u062E\u0627\u0631 \u0648 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u0627\u0646\u0648\u0627\u0639 \u0633\u0627\u06CC\u0632 \u0635\u0648\u0631\u062A.", + icon: "Glasses", + groups: [ + { slug: "clear", name: "\u0639\u06CC\u0646\u06A9 \u0634\u0641\u0627\u0641", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0686\u0634\u0645\u200C\u0647\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0631\u062E\u0648\u0631\u062F \u0627\u062C\u0633\u0627\u0645 \u0648 \u0627\u0628\u0632\u0627\u0631\u061B \u0636\u062F \u062E\u0634 \u0628\u0627 \u062F\u06CC\u062F \u0648\u0627\u0636\u062D." }, + { slug: "tinted", name: "\u0639\u06CC\u0646\u06A9 \u062F\u0648\u062F\u06CC \u0648 UV", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0634\u0639\u0647 \u0645\u0636\u0631 \u062E\u0648\u0631\u0634\u06CC\u062F \u0648 \u0646\u0648\u0631 \u0634\u062F\u06CC\u062F." }, + { slug: "goggle", name: "\u06AF\u0627\u06AF\u0644", desc: "\u0636\u062F \u0628\u062E\u0627\u0631 \u0648 \u0636\u062F \u0636\u0631\u0628\u0647\u061B \u062C\u0644\u0648\u06AF\u06CC\u0631\u06CC \u0627\u0632 \u0627\u06CC\u062C\u0627\u062F \u0645\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u06AF\u0631\u0645 \u06CC\u0627 \u0645\u0631\u0637\u0648\u0628." } + ], + products: [ + { + code: "IP-E01", + group: "clear", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u0634\u0641\u0627\u0641 \u062F\u0633\u062A\u0647 \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645", + en: "ADJUSTABLE CLEAR SAFETY GLASSES", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0686\u0634\u0645\u200C\u0647\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0631\u062E\u0648\u0631\u062F \u0627\u062C\u0633\u0627\u0645 \u0648 \u0627\u0628\u0632\u0627\u0631\u061B \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0628\u0631\u0627\u06CC \u0627\u0646\u0648\u0627\u0639 \u0633\u0627\u06CC\u0632 \u0635\u0648\u0631\u062A.", + specs: ["\u0636\u062F \u0636\u0631\u0628\u0647", "\u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/eyewear/1.webp" + }, + { + code: "IP-E02", + group: "clear", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u0631\u0648\u0637\u0628\u06CC", + en: "OVER-SPEC SAFETY GLASSES", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0686\u0634\u0645\u200C\u0647\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0631\u062E\u0648\u0631\u062F \u0627\u062C\u0633\u0627\u0645 \u0648 \u0627\u0628\u0632\u0627\u0631\u061B \u0642\u0627\u0628\u0644 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0631\u0648\u06CC \u0639\u06CC\u0646\u06A9 \u0637\u0628\u06CC.", + specs: ["\u0636\u062F \u0636\u0631\u0628\u0647", "\u0631\u0648\u0637\u0628\u06CC"], + image: "/images/products/eyewear/4.webp" + }, + { + code: "IP-E03", + group: "clear", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC uvex i-5", + en: "UVEX I-5 SAFETY GLASSES", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0686\u0634\u0645\u200C\u0647\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0631\u062E\u0648\u0631\u062F \u0627\u062C\u0633\u0627\u0645 \u0648 \u0627\u0628\u0632\u0627\u0631\u061B \u0636\u062F \u062E\u0634 \u0628\u0627 \u062F\u06CC\u062F \u0648\u0627\u0636\u062D.", + specs: ["uvex", "\u0636\u062F \u0636\u0631\u0628\u0647", "\u0636\u062F \u062E\u0634"], + image: "/images/products/eyewear/5.webp" + }, + { + code: "IP-E04", + group: "clear", + name: "\u0639\u06CC\u0646\u06A9 \u0634\u06CC\u0634\u0647 \u0633\u0641\u06CC\u062F \u062A\u06A9 \u067E\u0644\u0627\u0633\u062A", + en: "TAK PLAST CLEAR GLASSES", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u0627\u0632 \u0686\u0634\u0645\u200C\u0647\u0627 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0631\u062E\u0648\u0631\u062F \u0627\u062C\u0633\u0627\u0645 \u0648 \u0627\u0628\u0632\u0627\u0631\u061B \u062F\u0627\u0631\u0627\u06CC \u0645\u062D\u0627\u0641\u0638 \u06A9\u0646\u0627\u0631\u06CC.", + specs: ["\u062A\u06A9 \u067E\u0644\u0627\u0633\u062A", "\u0645\u062D\u0627\u0641\u0638 \u06A9\u0646\u0627\u0631\u06CC"], + image: "/images/products/eyewear/11.webp" + }, + { + code: "IP-E05", + group: "tinted", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC uvex \u062F\u0648\u062F\u06CC", + en: "UVEX TINTED SAFETY GLASSES", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0634\u0639\u0647 \u0645\u0636\u0631 \u062E\u0648\u0631\u0634\u06CC\u062F \u0648 \u0646\u0648\u0631 \u0634\u062F\u06CC\u062F.", + specs: ["uvex", "\u0634\u06CC\u0634\u0647 UV", "\u0636\u062F \u0636\u0631\u0628\u0647"], + image: "/images/products/eyewear/6.webp" + }, + { + code: "IP-E06", + group: "tinted", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u062A\u0648\u062A\u0627\u0635 AT113", + en: "TOTAS AT113", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0634\u0639\u0647 \u0645\u0636\u0631 \u062E\u0648\u0631\u0634\u06CC\u062F \u0648 \u0646\u0648\u0631 \u0634\u062F\u06CC\u062F.", + specs: ["\u062A\u0648\u062A\u0627\u0635", "\u0634\u06CC\u0634\u0647 UV", "\u0636\u062F \u0636\u0631\u0628\u0647"], + image: "/images/products/eyewear/7.webp" + }, + { + code: "IP-E07", + group: "tinted", + name: "\u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0646\u0627\u0633\u06CC\u0641 20105", + en: "CANASAFE 20105", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0634\u0639\u0647 \u0645\u0636\u0631 \u0648 \u0646\u0648\u0631 \u0634\u062F\u06CC\u062F \u062C\u0648\u0634\u06A9\u0627\u0631\u06CC.", + specs: ["\u06A9\u0627\u0646\u0627\u0633\u06CC\u0641", "\u0634\u06CC\u0634\u0647 UV", "\u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645"], + image: "/images/products/eyewear/9.webp" + }, + { + code: "IP-E08", + group: "tinted", + name: "\u0639\u06CC\u0646\u06A9 \u062A\u0648\u062A\u0627\u0635 AT116", + en: "TOTAS AT116", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0634\u0639\u0647 \u0645\u0636\u0631 \u062E\u0648\u0631\u0634\u06CC\u062F \u0648 \u0646\u0648\u0631 \u0634\u062F\u06CC\u062F.", + specs: ["\u062A\u0648\u062A\u0627\u0635", "\u0634\u06CC\u0634\u0647 UV", "\u0631\u0648\u0637\u0628\u06CC"], + image: "/images/products/eyewear/10.webp" + }, + { + code: "IP-E09", + group: "goggle", + name: "\u06AF\u0627\u06AF\u0644 uvex ultravision", + en: "UVEX ULTRAVISION GOGGLE", + desc: "\u0636\u062F \u0628\u062E\u0627\u0631 \u0648 \u0636\u062F \u0636\u0631\u0628\u0647\u061B \u062C\u0644\u0648\u06AF\u06CC\u0631\u06CC \u0627\u0632 \u0627\u06CC\u062C\u0627\u062F \u0645\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u06AF\u0631\u0645 \u06CC\u0627 \u0645\u0631\u0637\u0648\u0628.", + specs: ["uvex", "\u0636\u062F \u0628\u062E\u0627\u0631", "\u06A9\u0634\u200C\u062F\u0627\u0631"], + image: "/images/products/eyewear/2.webp" + }, + { + code: "IP-E10", + group: "goggle", + name: "\u06AF\u0627\u06AF\u0644 \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0634\u200C\u062F\u0627\u0631", + en: "SAFETY GOGGLE", + desc: "\u0636\u062F \u0628\u062E\u0627\u0631 \u0648 \u0636\u062F \u0636\u0631\u0628\u0647\u061B \u062C\u0644\u0648\u06AF\u06CC\u0631\u06CC \u0627\u0632 \u0627\u06CC\u062C\u0627\u062F \u0645\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u06AF\u0631\u0645 \u06CC\u0627 \u0645\u0631\u0637\u0648\u0628.", + specs: ["\u0636\u062F \u0628\u062E\u0627\u0631", "\u06A9\u0634\u200C\u062F\u0627\u0631"], + image: "/images/products/eyewear/3.webp" + }, + { + code: "IP-E11", + group: "goggle", + name: "\u06AF\u0627\u06AF\u0644 \u0627\u06CC\u0645\u0646\u06CC \u062A\u0648\u062A\u0627\u0635 ATBM", + en: "TOTAS ATBM GOGGLE", + desc: "\u0636\u062F \u0628\u062E\u0627\u0631 \u0648 \u0636\u062F \u0636\u0631\u0628\u0647\u061B \u062C\u0644\u0648\u06AF\u06CC\u0631\u06CC \u0627\u0632 \u0627\u06CC\u062C\u0627\u062F \u0645\u0647 \u062F\u0631 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u06AF\u0631\u0645 \u06CC\u0627 \u0645\u0631\u0637\u0648\u0628.", + specs: ["\u062A\u0648\u062A\u0627\u0635", "\u0636\u062F \u0628\u062E\u0627\u0631", "\u06A9\u0634\u200C\u062F\u0627\u0631"], + image: "/images/products/eyewear/8.webp" + } + ] + }, + { + slug: "hearing-protection", + code: "IP-C06", + name: "\u062D\u0641\u0627\u0638\u062A \u0634\u0646\u0648\u0627\u06CC\u06CC", + en: "HEARING PROTECTION", + shortDesc: "\u0627\u06CC\u0631\u0645\u0627\u0641 \u0631\u0648\u06AF\u0648\u0634\u06CC \u0628\u0627 \u06A9\u0627\u0647\u0634 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644 \u0648 \u0627\u06CC\u0631\u067E\u0644\u0627\u06AF\u200C\u0647\u0627\u06CC \u0627\u0633\u0641\u0646\u062C\u06CC \u0648 \u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC \u0628\u0631\u0627\u06CC \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u067E\u0631\u0633\u0631\u0648\u0635\u062F\u0627.", + fullDesc: "\u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u0634\u0646\u0648\u0627\u06CC\u06CC \u0634\u0627\u0645\u0644 \u0627\u06CC\u0631\u0645\u0627\u0641 (\u0645\u062D\u0627\u0641\u0638 \u0631\u0648\u06AF\u0648\u0634\u06CC) \u0628\u0627 \u06A9\u0627\u0647\u0634 \u062A\u0631\u0627\u0632 \u0635\u062F\u0627 \u062A\u0627 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644 \u0648 \u0627\u06CC\u0631\u067E\u0644\u0627\u06AF (\u062F\u0627\u062E\u0644\u200C\u06AF\u0648\u0634\u06CC) \u062F\u0631 \u0645\u062F\u0644\u200C\u0647\u0627\u06CC \u0627\u0633\u0641\u0646\u062C\u06CC \u0641\u0631\u0645\u200C\u06AF\u06CC\u0631 \u0648 \u067E\u0644\u0647\u200C\u0627\u06CC \u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC. \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0628\u0627 \u0622\u0644\u0648\u062F\u06AF\u06CC \u0635\u0648\u062A\u06CC \u0628\u0627\u0644\u0627\u06CC \u06F8\u06F5 \u062F\u0633\u06CC\u200C\u0628\u0644\u060C \u06A9\u0645\u067E\u0631\u0633\u0648\u0631\u062E\u0627\u0646\u0647\u200C\u0647\u0627 \u0648 \u062E\u0637\u0648\u0637 \u062A\u0648\u0644\u06CC\u062F \u0633\u0646\u06AF\u06CC\u0646.", + icon: "Ear", + groups: [ + { slug: "earmuff", name: "\u0627\u06CC\u0631\u0645\u0627\u0641", desc: "\u06A9\u0627\u0647\u0634 \u0635\u062F\u0627 \u062A\u0627 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644\u060C \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC\u060C \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u0631\u0627\u062D\u062A \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC." }, + { slug: "earplug", name: "\u0627\u06CC\u0631\u067E\u0644\u0627\u06AF", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u062F\u0627\u0647\u0627\u06CC \u0634\u062F\u06CC\u062F \u0648 \u0646\u0648\u06CC\u0632 \u0645\u062D\u06CC\u0637\u060C \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A\u060C \u0645\u062F\u0644\u200C\u0647\u0627\u06CC \u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0648 \u0686\u0646\u062F\u0628\u0627\u0631 \u0645\u0635\u0631\u0641." } + ], + products: [ + { + code: "IP-HP01", + group: "earmuff", + name: "\u0627\u06CC\u0631\u0645\u0627\u0641 \u0647\u0644\u0628\u0631\u06AF", + en: "HELLBERG EARMUFF", + desc: "\u06A9\u0627\u0647\u0634 \u0635\u062F\u0627 \u062A\u0627 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644\u060C \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC\u060C \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u0631\u0627\u062D\u062A \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC.", + specs: ["Hellberg", "\u0647\u062F\u0628\u0646\u062F \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645", "\u0628\u0627\u0644\u0634\u062A\u06A9 \u0646\u0631\u0645"], + image: "/images/products/hearing/1.webp" + }, + { + code: "IP-HP02", + group: "earmuff", + name: "\u0627\u06CC\u0631\u0645\u0627\u0641 uvex K2", + en: "UVEX K2 EARMUFF", + desc: "\u06A9\u0627\u0647\u0634 \u0635\u062F\u0627 \u062A\u0627 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644\u060C \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC\u060C \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u0631\u0627\u062D\u062A \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC.", + specs: ["uvex", "\u0647\u062F\u0628\u0646\u062F \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645", "\u0628\u0627\u0644\u0634\u062A\u06A9 \u0646\u0631\u0645"], + image: "/images/products/hearing/2.webp" + }, + { + code: "IP-HP03", + group: "earmuff", + name: "\u0627\u06CC\u0631\u0645\u0627\u0641 \u0628\u0648\u0641\u0627\u0644\u0648 110", + en: "BUFFALO 110 EARMUFF", + desc: "\u06A9\u0627\u0647\u0634 \u0635\u062F\u0627 \u062A\u0627 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644\u060C \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC\u060C \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u0631\u0627\u062D\u062A \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC.", + specs: ["\u0628\u0648\u0641\u0627\u0644\u0648", "\u0647\u062F\u0628\u0646\u062F \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645", "\u0628\u0627\u0644\u0634\u062A\u06A9 \u0646\u0631\u0645"], + image: "/images/products/hearing/4.webp" + }, + { + code: "IP-HP04", + group: "earmuff", + name: "\u06AF\u0648\u0634\u06CC \u0635\u062F\u0627\u06AF\u06CC\u0631 3M", + en: "3M EARMUFF", + desc: "\u06A9\u0627\u0647\u0634 \u0635\u062F\u0627 \u062A\u0627 \u06F2\u06F8 \u062F\u0633\u06CC\u200C\u0628\u0644\u060C \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0648 \u06A9\u0627\u0631\u06AF\u0627\u0647\u06CC\u060C \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645 \u0648 \u0631\u0627\u062D\u062A \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC.", + specs: ["3M", "\u0647\u062F\u0628\u0646\u062F \u0642\u0627\u0628\u0644 \u062A\u0646\u0638\u06CC\u0645", "\u0628\u0627\u0644\u0634\u062A\u06A9 \u0646\u0631\u0645"], + image: "/images/products/hearing/8.webp" + }, + { + code: "IP-HP05", + group: "earplug", + name: "\u0627\u06CC\u0631\u067E\u0644\u0627\u06AF \u06A9\u0627\u0633\u062A\u0627 \u0645\u06A9\u0633 \u0641\u06CC\u062A MAXFIT", + en: "COSTA MAXFIT EARPLUG", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u062F\u0627\u0647\u0627\u06CC \u0634\u062F\u06CC\u062F \u0648 \u0646\u0648\u06CC\u0632 \u0645\u062D\u06CC\u0637\u060C \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A.", + specs: ["\u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC \u067E\u0644\u0647\u200C\u0627\u06CC", "\u0628\u0646\u062F\u062F\u0627\u0631", "\u0686\u0646\u062F\u0628\u0627\u0631 \u0645\u0635\u0631\u0641"], + image: "/images/products/hearing/3.webp" + }, + { + code: "IP-HP06", + group: "earplug", + name: "\u0627\u06CC\u0631\u067E\u0644\u0627\u06AF \u0627\u0633\u0641\u0646\u062C\u06CC Bilsom 303L", + en: "BILSOM 303L FOAM EARPLUG", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u062F\u0627\u0647\u0627\u06CC \u0634\u062F\u06CC\u062F \u0648 \u0646\u0648\u06CC\u0632 \u0645\u062D\u06CC\u0637\u060C \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A.", + specs: ["\u0627\u0633\u0641\u0646\u062C\u06CC", "\u0628\u0646\u062F\u062F\u0627\u0631 / \u0628\u062F\u0648\u0646 \u0628\u0646\u062F", "\u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641"], + image: "/images/products/hearing/5.webp" + }, + { + code: "IP-HP07", + group: "earplug", + name: "\u0627\u06CC\u0631\u067E\u0644\u0627\u06AF \u0627\u0633\u0641\u0646\u062C\u06CC \u0645\u0627\u06AF\u0645\u0627", + en: "MAGMA FOAM EARPLUG", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u062F\u0627\u0647\u0627\u06CC \u0634\u062F\u06CC\u062F \u0648 \u0646\u0648\u06CC\u0632 \u0645\u062D\u06CC\u0637\u060C \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A.", + specs: ["\u0627\u0633\u0641\u0646\u062C\u06CC", "\u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641"], + image: "/images/products/hearing/6.webp" + }, + { + code: "IP-HP08", + group: "earplug", + name: "\u0627\u06CC\u0631\u067E\u0644\u0627\u06AF \u0645\u06A9\u0633 \u0641\u06CC\u062A \u0628\u0627 \u0642\u0627\u0628", + en: "MAXFIT EARPLUG WITH CASE", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0635\u062F\u0627\u0647\u0627\u06CC \u0634\u062F\u06CC\u062F \u0648 \u0646\u0648\u06CC\u0632 \u0645\u062D\u06CC\u0637\u060C \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A.", + specs: ["\u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC \u067E\u0644\u0647\u200C\u0627\u06CC", "\u0628\u0646\u062F\u062F\u0627\u0631", "\u0642\u0627\u0628 \u0646\u06AF\u0647\u062F\u0627\u0631\u06CC"], + image: "/images/products/hearing/7.webp" + } + ] + }, + { + slug: "respiratory-protection", + code: "IP-C07", + name: "\u062D\u0641\u0627\u0638\u062A \u062A\u0646\u0641\u0633\u06CC", + en: "RESPIRATORY PROTECTION", + shortDesc: "\u0645\u0627\u0633\u06A9\u200C\u0647\u0627\u06CC \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A\u060C \u062A\u0645\u0627\u0645\u200C\u0635\u0648\u0631\u062A\u060C \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC\u060C P2/P3 \u0648 \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 \u0628\u0631\u0627\u06CC \u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u06AF\u0627\u0632\u0647\u0627 \u0648 \u0630\u0631\u0627\u062A.", + fullDesc: "\u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u062A\u0646\u0641\u0633\u06CC \u0634\u0627\u0645\u0644 \u0645\u0627\u0633\u06A9\u200C\u0647\u0627\u06CC \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A\u060C \u062A\u0645\u0627\u0645\u200C\u0635\u0648\u0631\u062A\u060C \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0628\u0627 \u06A9\u0627\u0631\u062A\u0631\u06CC\u062C \u062A\u062E\u0635\u0635\u06CC\u060C \u0645\u0627\u0633\u06A9\u200C\u0647\u0627\u06CC \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 P2/P3 \u0628\u0631\u0627\u06CC \u0630\u0631\u0627\u062A \u0645\u06CC\u06A9\u0631\u0648\u0646\u06CC\u060C \u0645\u0627\u0633\u06A9\u200C\u0647\u0627\u06CC \u0628\u0627 \u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC \u0627\u0642\u062A\u0635\u0627\u062F\u06CC \u0648 \u0645\u0627\u0633\u06A9\u200C\u0647\u0627\u06CC \u0633\u0647\u200C\u0644\u0627\u06CC\u0647 \u0628\u0647\u062F\u0627\u0634\u062A\u06CC. \u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631 \u0628\u0627 \u062D\u0644\u0627\u0644\u200C\u0647\u0627\u06CC \u0641\u0631\u0627\u0631\u060C \u063A\u0628\u0627\u0631\u0647\u0627\u06CC \u0645\u0639\u062F\u0646\u06CC\u060C \u0631\u0646\u06AF\u200C\u067E\u0627\u0634\u06CC \u0648 \u062E\u0637\u0648\u0637 \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC.", + icon: "ShieldPlus", + groups: [ + { slug: "half", name: "\u0645\u0627\u0633\u06A9 \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A", desc: "\u067E\u0648\u0634\u0634\u200C\u062F\u0647\u06CC \u0628\u06CC\u0646\u06CC \u0648 \u062F\u0647\u0627\u0646 \u0628\u0627 \u0641\u06CC\u0644\u062A\u0631 \u0642\u0627\u0628\u0644 \u062A\u0639\u0648\u06CC\u0636\u061B \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0628\u0627 \u0622\u0644\u0648\u062F\u06AF\u06CC \u0645\u062A\u0648\u0633\u0637 \u0648 \u0628\u062E\u0627\u0631\u0627\u062A \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC." }, + { slug: "full", name: "\u0645\u0627\u0633\u06A9 \u062A\u0645\u0627\u0645\u200C\u0635\u0648\u0631\u062A", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u0627\u0632 \u0635\u0648\u0631\u062A \u0648 \u0686\u0634\u0645\u200C\u0647\u0627\u060C \u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0648 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u067E\u0631\u062E\u0637\u0631." }, + { slug: "particulate", name: "\u0645\u0627\u0633\u06A9 \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 P2/P3", desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u06AF\u0631\u062F \u0648 \u063A\u0628\u0627\u0631 \u0648 \u0630\u0631\u0627\u062A \u0645\u0639\u0644\u0642 \u062F\u0631 \u0647\u0648\u0627." }, + { slug: "medical", name: "\u0645\u0627\u0633\u06A9 \u0633\u0647\u200C\u0644\u0627\u06CC\u0647", desc: "\u0645\u0627\u0633\u06A9 \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A\u060C \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0631\u0648\u0632\u0645\u0631\u0647 \u0648 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0628\u0627 \u0622\u0644\u0648\u062F\u06AF\u06CC \u06A9\u0645." } + ], + products: [ + { + code: "IP-R01", + group: "half", + name: "\u0645\u0627\u0633\u06A9 \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A \u0628\u0627 \u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC", + en: "HALF-FACE RESPIRATOR WITH FILTERS", + desc: "\u067E\u0648\u0634\u0634\u200C\u062F\u0647\u06CC \u0628\u06CC\u0646\u06CC \u0648 \u062F\u0647\u0627\u0646 \u0628\u0627 \u0641\u06CC\u0644\u062A\u0631 \u0642\u0627\u0628\u0644 \u062A\u0639\u0648\u06CC\u0636 \u0628\u0631\u0627\u06CC \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC\u200C\u0645\u062F\u062A.", + specs: ["\u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A", "\u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC", "\u062F\u0648 \u06A9\u0627\u0631\u062A\u0631\u06CC\u062C"], + image: "/images/products/respiratory/5.webp" + }, + { + code: "IP-R02", + group: "half", + name: "\u0645\u0627\u0633\u06A9 \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A \u0646\u0648\u0631\u062B 5500", + en: "NORTH 5500 HALF MASK", + desc: "\u067E\u0648\u0634\u0634\u200C\u062F\u0647\u06CC \u0628\u06CC\u0646\u06CC \u0648 \u062F\u0647\u0627\u0646\u060C \u0645\u0646\u0627\u0633\u0628 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0635\u0646\u0639\u062A\u06CC \u0628\u0627 \u0622\u0644\u0648\u062F\u06AF\u06CC \u0645\u062A\u0648\u0633\u0637.", + specs: ["North", "\u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A", "\u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC"], + image: "/images/products/respiratory/6.webp" + }, + { + code: "IP-R03", + group: "half", + name: "\u0645\u0627\u0633\u06A9 \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A 3M", + en: "3M HALF-FACE RESPIRATOR", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u062E\u0627\u0631\u0627\u062A \u0648 \u06AF\u0627\u0632\u0647\u0627\u06CC \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0628\u0627 \u06A9\u0627\u0631\u062A\u0631\u06CC\u062C \u0648 \u0641\u06CC\u0644\u062A\u0631 \u0642\u0627\u0628\u0644 \u062A\u0639\u0648\u06CC\u0636.", + specs: ["3M", "\u06A9\u0627\u0631\u062A\u0631\u06CC\u062C \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC", "\u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC"], + image: "/images/products/respiratory/7.webp" + }, + { + code: "IP-R04", + group: "half", + name: "\u0645\u0627\u0633\u06A9 \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A \u0646\u0648\u0631\u062B 7700", + en: "NORTH 7700 HALF MASK", + desc: "\u067E\u0648\u0634\u0634\u200C\u062F\u0647\u06CC \u0628\u06CC\u0646\u06CC \u0648 \u062F\u0647\u0627\u0646 \u0628\u0627 \u0628\u062F\u0646\u0647 \u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC\u060C \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC\u200C\u0645\u062F\u062A.", + specs: ["North", "\u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC", "\u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC"], + image: "/images/products/respiratory/11.webp" + }, + { + code: "IP-R05", + group: "half", + name: "\u0645\u0627\u0633\u06A9 \u0646\u06CC\u0645\u200C\u0635\u0648\u0631\u062A \u0646\u0648\u0631\u062B 7700 (\u0646\u0645\u0627\u06CC \u062C\u0627\u0646\u0628\u06CC)", + en: "NORTH 7700 HALF MASK", + desc: "\u067E\u0648\u0634\u0634\u200C\u062F\u0647\u06CC \u0628\u06CC\u0646\u06CC \u0648 \u062F\u0647\u0627\u0646 \u0628\u0627 \u0628\u062F\u0646\u0647 \u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC\u060C \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0637\u0648\u0644\u0627\u0646\u06CC\u200C\u0645\u062F\u062A.", + specs: ["North", "\u0633\u06CC\u0644\u06CC\u06A9\u0648\u0646\u06CC", "\u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC"], + image: "/images/products/respiratory/10.webp" + }, + { + code: "IP-R06", + group: "full", + name: "\u0645\u0627\u0633\u06A9 \u062A\u0645\u0627\u0645\u200C\u0635\u0648\u0631\u062A", + en: "FULL-FACE RESPIRATOR", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u0627\u0632 \u0635\u0648\u0631\u062A \u0648 \u0686\u0634\u0645\u200C\u0647\u0627\u060C \u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0648 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u067E\u0631\u062E\u0637\u0631.", + specs: ["\u062A\u0645\u0627\u0645\u200C\u0635\u0648\u0631\u062A", "\u0634\u06CC\u0634\u0647 \u0636\u062F \u0636\u0631\u0628\u0647", "\u0641\u06CC\u0644\u062A\u0631 \u062A\u0639\u0648\u06CC\u0636\u06CC"], + image: "/images/products/respiratory/4.webp" + }, + { + code: "IP-R07", + group: "full", + name: "\u0645\u0627\u0633\u06A9 \u062A\u0646\u0641\u0633\u06CC \u062F\u0631\u0627\u06AF\u0631", + en: "DR\xC4GER FULL-FACE RESPIRATOR", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u06A9\u0627\u0645\u0644 \u0627\u0632 \u0635\u0648\u0631\u062A \u0648 \u0686\u0634\u0645\u200C\u0647\u0627\u060C \u0645\u0646\u0627\u0633\u0628 \u06A9\u0627\u0631 \u0628\u0627 \u0645\u0648\u0627\u062F \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0648 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u067E\u0631\u062E\u0637\u0631.", + specs: ["Dr\xE4ger", "\u062A\u0645\u0627\u0645\u200C\u0635\u0648\u0631\u062A", "\u0641\u06CC\u0644\u062A\u0631 \u0686\u0646\u062F\u0645\u0646\u0638\u0648\u0631\u0647"], + image: "/images/products/respiratory/8.webp" + }, + { + code: "IP-R08", + group: "particulate", + name: "\u0645\u0627\u0633\u06A9 \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 \u062A\u0627\u0634\u0648", + en: "FOLDABLE PARTICULATE MASK", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u06AF\u0631\u062F \u0648 \u063A\u0628\u0627\u0631 \u0648 \u0630\u0631\u0627\u062A \u0645\u0639\u0644\u0642 \u062F\u0631 \u0647\u0648\u0627.", + specs: ["P2", "\u062A\u0627\u0634\u0648", "\u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641"], + image: "/images/products/respiratory/1.webp" + }, + { + code: "IP-R09", + group: "particulate", + name: "\u0645\u0627\u0633\u06A9 \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 \u0633\u0648\u067E\u0627\u067E\u200C\u062F\u0627\u0631", + en: "VALVED PARTICULATE MASK", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u06AF\u0631\u062F \u0648 \u063A\u0628\u0627\u0631 \u0648 \u0630\u0631\u0627\u062A \u0645\u0639\u0644\u0642 \u062F\u0631 \u0647\u0648\u0627.", + specs: ["P2 / P3", "\u0633\u0648\u067E\u0627\u067E \u0628\u0627\u0632\u062F\u0645\u06CC", "\u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641"], + image: "/images/products/respiratory/2.webp" + }, + { + code: "IP-R10", + group: "particulate", + name: "\u0645\u0627\u0633\u06A9 \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 \u062F\u0631\u0627\u06AF\u0631 \u0633\u0648\u067E\u0627\u067E\u200C\u062F\u0627\u0631", + en: "DR\xC4GER VALVED PARTICULATE MASK", + desc: "\u0645\u062D\u0627\u0641\u0638\u062A \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u06AF\u0631\u062F \u0648 \u063A\u0628\u0627\u0631 \u0648 \u0630\u0631\u0627\u062A \u0645\u0639\u0644\u0642 \u062F\u0631 \u0647\u0648\u0627.", + specs: ["Dr\xE4ger", "\u0633\u0648\u067E\u0627\u067E \u0628\u0627\u0632\u062F\u0645\u06CC", "P2 / P3"], + image: "/images/products/respiratory/3.webp" + }, + { + code: "IP-R11", + group: "medical", + name: "\u0645\u0627\u0633\u06A9 \u0633\u0647\u200C\u0644\u0627\u06CC\u0647 \u067E\u0632\u0634\u06A9\u06CC", + en: "THREE-LAYER MEDICAL MASK", + desc: "\u0645\u0627\u0633\u06A9 \u0633\u0628\u06A9 \u0648 \u0631\u0627\u062D\u062A\u060C \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0631\u0648\u0632\u0645\u0631\u0647 \u0648 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u0628\u0627 \u0622\u0644\u0648\u062F\u06AF\u06CC \u06A9\u0645.", + specs: ["\u0633\u0647\u200C\u0644\u0627\u06CC\u0647", "\u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641", "\u0628\u0633\u062A\u0647 \u06F5\u06F0 \u0639\u062F\u062F\u06CC"], + image: "/images/products/respiratory/9.webp" + } + ] + }, + { + slug: "traffic-equipment", + code: "IP-C08", + name: "\u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC \u0648 \u0627\u06CC\u0645\u0646\u06CC \u0645\u062D\u06CC\u0637\u06CC", + en: "TRAFFIC & SITE SAFETY", + shortDesc: "\u0645\u062E\u0631\u0648\u0637\u060C \u0646\u06CC\u0648\u062C\u0631\u0633\u06CC\u060C \u0627\u0633\u062A\u0648\u0627\u0646\u0647\u060C \u0633\u0631\u0639\u062A\u200C\u06AF\u06CC\u0631\u060C \u0622\u06CC\u0646\u0647 \u0645\u062D\u062F\u0628 \u0648 \u0633\u0627\u06CC\u0631 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u200C\u0633\u0627\u0632\u06CC \u0645\u062D\u0648\u0637\u0647 \u0635\u0646\u0639\u062A\u06CC.", + fullDesc: "\u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC \u0648 \u0627\u06CC\u0645\u0646\u06CC \u0645\u062D\u06CC\u0637\u06CC \u0634\u0627\u0645\u0644 \u0645\u062E\u0631\u0648\u0637 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC\u060C \u0646\u06CC\u0648\u062C\u0631\u0633\u06CC \u067E\u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC\u060C \u0627\u0633\u062A\u0648\u0627\u0646\u0647 \u0648 \u0628\u0648\u0644\u0627\u0631\u062F\u060C \u0686\u0631\u0627\u063A \u0648 \u062A\u0627\u0628\u0644\u0648\u0647\u0627\u06CC \u0647\u0634\u062F\u0627\u0631\u062F\u0647\u0646\u062F\u0647\u060C \u0628\u0627\u062A\u0648\u0645 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC\u060C \u0646\u0648\u0627\u0631\u0647\u0627\u06CC \u062E\u0637\u0631\u060C \u0633\u0631\u0639\u062A\u200C\u06AF\u06CC\u0631 \u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC\u060C \u0622\u06CC\u0646\u0647\u200C\u0647\u0627\u06CC \u0645\u062D\u062F\u0628\u060C \u0645\u062D\u0627\u0641\u0638 \u06AF\u0648\u0634\u0647 \u0633\u062A\u0648\u0646 \u0648 \u06AF\u0644\u200C\u0645\u06CC\u062E \u062E\u0648\u0631\u0634\u06CC\u062F\u06CC. \u0645\u0646\u0627\u0633\u0628 \u0627\u06CC\u0645\u0646\u200C\u0633\u0627\u0632\u06CC \u0645\u062D\u0648\u0637\u0647 \u06A9\u0627\u0631\u062E\u0627\u0646\u0647\u060C \u0627\u0646\u0628\u0627\u0631\u0647\u0627\u060C \u0631\u0645\u067E\u200C\u0647\u0627 \u0648 \u067E\u0627\u0631\u06A9\u06CC\u0646\u06AF\u200C\u0647\u0627.", + icon: "TriangleAlert", + products: [ + { + code: "IP-T01", + name: "\u0645\u062E\u0631\u0648\u0637 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC", + en: "TRAFFIC CONE", + desc: "PVC \u0627\u0646\u0639\u0637\u0627\u0641\u200C\u067E\u0630\u06CC\u0631 \u0628\u0627 \u0634\u0628\u0631\u0646\u06AF\u200C\u0647\u0627\u06CC \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F \u0631\u0648\u0632 \u0648 \u0634\u0628\u061B \u0645\u0642\u0627\u0648\u0645 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u0648\u0627\u0698\u06AF\u0648\u0646\u06CC \u0648 \u0636\u0631\u0628\u0647 \u062E\u0648\u062F\u0631\u0648.", + specs: ["PVC \u0627\u0646\u0639\u0637\u0627\u0641\u200C\u067E\u0630\u06CC\u0631", "\u0634\u0628\u0631\u0646\u06AF \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0648\u0627\u0698\u06AF\u0648\u0646\u06CC", "\u0642\u0627\u0628\u0644 \u0631\u0624\u06CC\u062A \u0634\u0628\u0627\u0646\u0647"] + }, + { + code: "IP-T02", + name: "\u0646\u06CC\u0648\u062C\u0631\u0633\u06CC \u067E\u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC", + en: "NEW JERSEY BARRIER", + desc: "\u0628\u062F\u0646\u0647 \u067E\u0644\u06CC\u200C\u0627\u062A\u06CC\u0644\u0646\u06CC \u0645\u062F\u0648\u0644\u0627\u0631 \u0642\u0627\u0628\u0644 \u0627\u062A\u0635\u0627\u0644 \u0628\u0627 \u0642\u0627\u0628\u0644\u06CC\u062A \u067E\u0631\u0634\u0648\u0646\u062F\u06AF\u06CC \u0628\u0627 \u0622\u0628 \u06CC\u0627 \u0645\u0627\u0633\u0647 \u062C\u0647\u062A \u062A\u062B\u0628\u06CC\u062A \u0648 \u0627\u06CC\u062C\u0627\u062F \u062D\u0627\u0626\u0644.", + specs: ["\u067E\u0644\u06CC\u200C\u0627\u062A\u06CC\u0644\u0646 \u0645\u062F\u0648\u0644\u0627\u0631", "\u0642\u0627\u0628\u0644 \u0627\u062A\u0635\u0627\u0644", "\u067E\u0631\u0634\u062F\u0646\u06CC \u0628\u0627 \u0622\u0628/\u0645\u0627\u0633\u0647", "\u0645\u0642\u0627\u0648\u0645 UV"] + }, + { + code: "IP-T03", + name: "\u0627\u0633\u062A\u0648\u0627\u0646\u0647 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC", + en: "TRAFFIC BOLLARD", + desc: "\u067E\u0644\u06CC\u200C\u0627\u0648\u0631\u062A\u0627\u0646 \u0627\u0631\u062A\u062C\u0627\u0639\u06CC \u0627\u0646\u0639\u0637\u0627\u0641\u200C\u067E\u0630\u06CC\u0631 \u067E\u0633 \u0627\u0632 \u0636\u0631\u0628\u0647\u061B \u0645\u062C\u0647\u0632 \u0628\u0647 \u062D\u0644\u0642\u0647\u200C\u0647\u0627\u06CC \u0634\u0628\u0631\u0646\u06AF \u0647\u0634\u062F\u0627\u0631 \u0628\u0631\u0627\u06CC \u062A\u0641\u06A9\u06CC\u06A9 \u0645\u0633\u06CC\u0631.", + specs: ["\u067E\u0644\u06CC\u200C\u0627\u0648\u0631\u062A\u0627\u0646 \u0627\u0631\u062A\u062C\u0627\u0639\u06CC", "\u0628\u0627\u0632\u06AF\u0634\u062A \u067E\u0633 \u0627\u0632 \u0636\u0631\u0628\u0647", "\u0634\u0628\u0631\u0646\u06AF \u0647\u0634\u062F\u0627\u0631", "\u0646\u0635\u0628 \u0622\u0633\u0627\u0646"] + }, + { + code: "IP-T04", + name: "\u0686\u0631\u0627\u063A \u0648 \u062A\u0627\u0628\u0644\u0648\u06CC \u0647\u0634\u062F\u0627\u0631", + en: "WARNING LIGHT & SIGN", + desc: "\u0686\u0631\u0627\u063A\u200C\u0647\u0627\u06CC \u0686\u0634\u0645\u06A9\u200C\u0632\u0646 \u0633\u0648\u0644\u0627\u0631\u060C \u062A\u0627\u0628\u0644\u0648\u06CC \u062F\u0633\u062A\u06CC \u0627\u06CC\u0633\u062A/\u062D\u0631\u06A9\u062A \u0648 \u062A\u0627\u0628\u0644\u0648\u0647\u0627\u06CC \u0639\u0644\u0627\u0626\u0645 \u0647\u0634\u062F\u0627\u0631\u062F\u0647\u0646\u062F\u0647 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC.", + specs: ["\u0633\u0648\u0644\u0627\u0631 / \u0628\u0627\u062A\u0631\u06CC", "LED \u0686\u0634\u0645\u06A9\u200C\u0632\u0646", "\u062A\u0627\u0628\u0644\u0648\u06CC Stop/Go", "\u0639\u0644\u0627\u0626\u0645 \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F"] + }, + { + code: "IP-T05", + name: "\u0628\u0627\u062A\u0648\u0645 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC", + en: "TRAFFIC BATON", + desc: "\u0628\u0627\u062A\u0648\u0645 LED \u062F\u0627\u0631 \u062F\u0633\u062A\u06CC \u062C\u0647\u062A \u0647\u062F\u0627\u06CC\u062A \u062A\u0631\u0627\u0641\u06CC\u06A9 \u062F\u0631 \u0634\u0628 \u0648 \u0645\u062D\u06CC\u0637\u200C\u0647\u0627\u06CC \u06A9\u0645\u200C\u0646\u0648\u0631\u061B \u0633\u0628\u06A9 \u0648 \u0627\u0631\u06AF\u0648\u0646\u0648\u0645\u06CC\u06A9.", + specs: ["LED \u062F\u0627\u062E\u0644\u06CC", "\u0642\u0627\u0628\u0644 \u0631\u0624\u06CC\u062A \u0634\u0628\u0627\u0646\u0647", "\u0633\u0628\u06A9\u200C\u0648\u0632\u0646", "\u0627\u0631\u06AF\u0648\u0646\u0648\u0645\u06CC\u06A9"] + }, + { + code: "IP-T06", + name: "\u0646\u0648\u0627\u0631 \u062E\u0637\u0631", + en: "CAUTION TAPE", + desc: "\u0646\u0648\u0627\u0631 \u0634\u0637\u0631\u0646\u062C\u06CC \u0648 \u062E\u0637\u200C\u06A9\u0634\u06CC \u0632\u0631\u062F/\u0642\u0631\u0645\u0632 \u0647\u0634\u062F\u0627\u0631 \u0645\u062D\u0648\u0637\u0647 \u06AF\u0648\u062F\u0628\u0631\u062F\u0627\u0631\u06CC \u0648 \u0645\u0646\u0627\u0637\u0642 \u062E\u0637\u0631\u0646\u0627\u06A9 \u0628\u0627 \u0631\u0648\u0644\u200C\u0647\u0627\u06CC \u0628\u0627\u0632\u062A\u0627\u0628\u0646\u062F\u0647 \u0646\u0648\u0631.", + specs: ["\u0632\u0631\u062F / \u0642\u0631\u0645\u0632 \u0647\u0634\u062F\u0627\u0631", "\u0628\u0627\u0632\u062A\u0627\u0628\u0646\u062F\u0647 \u0646\u0648\u0631", "\u0631\u0648\u0644 \u0628\u0644\u0646\u062F", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u067E\u0627\u0631\u06AF\u06CC"] + }, + { + code: "IP-T07", + name: "\u0633\u0631\u0639\u062A\u200C\u06AF\u06CC\u0631 \u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC", + en: "RUBBER SPEED BUMP", + desc: "\u0642\u0637\u0639\u0627\u062A \u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC \u0633\u0646\u06AF\u06CC\u0646 \u0645\u062F\u0648\u0644\u0627\u0631 \u0628\u0627 \u0645\u0642\u0627\u0648\u0645\u062A \u0648\u0632\u0646\u06CC \u0628\u0627\u0644\u0627 \u0648 \u0627\u0644\u0645\u0627\u0646\u200C\u0647\u0627\u06CC \u0628\u0627\u0632\u062A\u0627\u0628\u0634 \u0634\u0628\u0627\u0646\u0647\u061B \u0646\u0635\u0628 \u0622\u0633\u0627\u0646.", + specs: ["\u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC \u0645\u062F\u0648\u0644\u0627\u0631", "\u0645\u0642\u0627\u0648\u0645\u062A \u0648\u0632\u0646\u06CC \u0628\u0627\u0644\u0627", "\u0628\u0627\u0632\u062A\u0627\u0628 \u0634\u0628\u0627\u0646\u0647", "\u0646\u0635\u0628 \u067E\u06CC\u0686\u06CC"] + }, + { + code: "IP-T08", + name: "\u0622\u06CC\u0646\u0647 \u0645\u062D\u062F\u0628 \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC", + en: "CONVEX TRAFFIC MIRROR", + desc: "\u0622\u06CC\u0646\u0647 \u0646\u0634\u06A9\u0646 \u0641\u0631\u06CC\u0645\u200C\u062F\u0627\u0631 \u0648 \u06A9\u0644\u0627\u0647\u200C\u062F\u0627\u0631 \u062C\u0647\u062A \u067E\u0648\u0634\u0634 \u0646\u0642\u0627\u0637 \u06A9\u0648\u0631 \u067E\u06CC\u0686\u200C\u0647\u0627\u060C \u062A\u0642\u0627\u0637\u0639\u200C\u0647\u0627 \u0648 \u062F\u0631\u0628 \u0627\u0646\u0628\u0627\u0631.", + specs: ["\u0646\u0634\u06A9\u0646", "\u0641\u0631\u06CC\u0645\u200C\u062F\u0627\u0631 \u0648 \u06A9\u0644\u0627\u0647\u200C\u062F\u0627\u0631", "\u067E\u0648\u0634\u0634 \u0646\u0642\u0627\u0637 \u06A9\u0648\u0631", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0622\u0628 \u0648 \u0628\u0627\u062F"] + }, + { + code: "IP-T09", + name: "\u0645\u062D\u0627\u0641\u0638 \u06AF\u0648\u0634\u0647 \u0633\u062A\u0648\u0646", + en: "CORNER GUARD", + desc: "\u0636\u0631\u0628\u0647\u200C\u06AF\u06CC\u0631 \u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC \u0634\u0628\u0631\u0646\u06AF\u200C\u062F\u0627\u0631 \u062C\u0647\u062A \u0646\u0635\u0628 \u0631\u0648\u06CC \u0633\u062A\u0648\u0646\u200C\u0647\u0627 \u0628\u0631\u0627\u06CC \u0645\u0645\u0627\u0646\u0639\u062A \u0627\u0632 \u0622\u0633\u06CC\u0628 \u0644\u06CC\u0641\u062A\u0631\u0627\u06A9 \u0648 \u062E\u0648\u062F\u0631\u0648\u0647\u0627\u06CC \u0633\u0646\u06AF\u06CC\u0646.", + specs: ["\u0644\u0627\u0633\u062A\u06CC\u06A9\u06CC \u0636\u0631\u0628\u0647\u200C\u06AF\u06CC\u0631", "\u0634\u0628\u0631\u0646\u06AF\u200C\u062F\u0627\u0631", "\u0646\u0635\u0628 \u062F\u06CC\u0648\u0627\u0631\u06CC", "\u0645\u062D\u0627\u0641\u0638 \u0633\u062A\u0648\u0646"] + }, + { + code: "IP-T10", + name: "\u06AF\u0644\u200C\u0645\u06CC\u062E \u062A\u0631\u0627\u0641\u06CC\u06A9\u06CC \u062E\u0648\u0631\u0634\u06CC\u062F\u06CC", + en: "SOLAR ROAD STUD", + desc: "\u0628\u062F\u0646\u0647 \u0622\u0644\u0648\u0645\u06CC\u0646\u06CC\u0648\u0645\u06CC \u0645\u0633\u062A\u062D\u06A9\u0645 \u0645\u062C\u0647\u0632 \u0628\u0647 \u067E\u0646\u0644 \u062E\u0648\u0631\u0634\u06CC\u062F\u06CC \u0648 LED \u062C\u0647\u062A \u062A\u0639\u06CC\u06CC\u0646 \u0645\u0633\u06CC\u0631 \u0648 \u062E\u0637\u200C\u06A9\u0634\u06CC \u0634\u0628\u0627\u0646\u0647.", + specs: ["\u0622\u0644\u0648\u0645\u06CC\u0646\u06CC\u0648\u0645 \u0645\u0633\u062A\u062D\u06A9\u0645", "\u067E\u0646\u0644 \u062E\u0648\u0631\u0634\u06CC\u062F\u06CC", "LED", "\u0645\u0642\u0627\u0648\u0645 \u0628\u0647 \u0639\u0628\u0648\u0631 \u062E\u0648\u062F\u0631\u0648"] + } + ] + } +]; + +// dist/seed/data/sections.js +var SECTIONS = { + settings: { + name: "\u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646", + nameEn: "Imen Pishgaman Safety", + title: "\u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646 | \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u06CC \u0648 \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC \u0635\u0646\u0639\u062A\u06CC", + description: "\u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646 \u2014 \u062A\u0623\u0645\u06CC\u0646\u200C\u06A9\u0646\u0646\u062F\u0647 \u062A\u062E\u0635\u0635\u06CC \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC (PPE)\u060C \u0628\u0627\u0632\u0631\u0633\u06CC\u060C \u0622\u0645\u0648\u0632\u0634 \u0648 \u0631\u0627\u0647\u06A9\u0627\u0631\u0647\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC \u0635\u0646\u0639\u062A\u06CC \u0628\u0631\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u200C\u0647\u0627\u06CC\u06CC \u06A9\u0647 \u062C\u0627\u0646 \u0627\u0646\u0633\u0627\u0646\u200C\u0647\u0627 \u0631\u0627 \u062C\u062F\u06CC \u0645\u06CC\u200C\u06AF\u06CC\u0631\u0646\u062F.", + phone: "+98-21-91008800", + phoneDisplay: "\u06F0\u06F2\u06F1 - \u06F9\u06F1 \u06F0\u06F0 \u06F8\u06F8 \u06F0\u06F0", + email: "info@imenpishgaman.ir", + address: { + street: "\u062E\u06CC\u0627\u0628\u0627\u0646 \u06A9\u0627\u0631\u06AF\u0631 \u0634\u0645\u0627\u0644\u06CC\u060C \u062E\u06CC\u0627\u0628\u0627\u0646 \u0641\u0631\u060C \u06A9\u0648\u0686\u0647 \u062F\u0648\u0645\u060C \u067E\u0644\u0627\u06A9 \u06F1\u06F2", + locality: "\u062A\u0647\u0631\u0627\u0646", + country: "IR" + }, + workingHours: "\u0634\u0646\u0628\u0647 \u062A\u0627 \u067E\u0646\u062C\u0634\u0646\u0628\u0647 \u2014 \u06F8:\u06F0\u06F0 \u062A\u0627 \u06F1\u06F7:\u06F0\u06F0", + openingHours: { + days: ["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"], + opens: "08:00", + closes: "17:00" + }, + foundingDate: "2007", + socials: [ + { type: "website", url: "/" }, + { type: "email", url: "mailto:info@imenpishgaman.ir" }, + { type: "phone", url: "tel:+982191008800" } + ], + ogImage: { + url: "asset:hero.jpg", + alt: "\u06A9\u0627\u0631\u06AF\u0631 \u0635\u0646\u0639\u062A\u06CC \u0628\u0627 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0645\u0644", + width: 1792, + height: 1008 + } + }, + hero: { + enabled: true, + badge: "\u062A\u0623\u0645\u06CC\u0646\u200C\u06A9\u0646\u0646\u062F\u0647 \u0631\u0633\u0645\u06CC \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC (PPE)", + title: "\u0627\u06CC\u0645\u0646\u06CC \u06CC\u0639\u0646\u06CC", + titleHighlight: "\u0628\u0627\u0632\u06AF\u0634\u062A \u0628\u0647 \u062E\u0627\u0646\u0647", + intro: "\u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646 \u0628\u0627 \u0628\u06CC\u0634 \u0627\u0632 \u06F1\u06F8 \u0633\u0627\u0644 \u062A\u062C\u0631\u0628\u0647\u060C \u062A\u0623\u0645\u06CC\u0646\u200C\u06A9\u0646\u0646\u062F\u0647 \u062A\u062E\u0635\u0635\u06CC \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u06CC \u0648 \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC \u0628\u0631\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u200C\u0647\u0627\u06CC\u06CC \u0627\u0633\u062A \u06A9\u0647 \u062C\u0627\u0646 \u0627\u0646\u0633\u0627\u0646\u200C\u0647\u0627 \u0631\u0627 \u062C\u062F\u06CC \u0645\u06CC\u200C\u06AF\u06CC\u0631\u0646\u062F\u061B \u0627\u0632 \u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u062A\u0627 \u0647\u0627\u0631\u0646\u0633 \u0646\u062C\u0627\u062A\u060C \u0627\u0632 \u0645\u0634\u0627\u0648\u0631\u0647 \u062A\u0627 \u0628\u0627\u0632\u0631\u0633\u06CC \u0648 \u0622\u0645\u0648\u0632\u0634.", + primaryCta: { label: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0645\u0634\u0627\u0648\u0631\u0647 \u0631\u0627\u06CC\u06AF\u0627\u0646", href: "#contact" }, + secondaryCta: { label: "\u0645\u0634\u0627\u0647\u062F\u0647 \u0645\u062D\u0635\u0648\u0644\u0627\u062A", href: "#products" }, + chips: [ + { icon: "ShieldCheck", label: "ISO 9001:2015" }, + { icon: "BadgeCheck", label: "CE CERTIFIED" }, + { icon: "Award", label: "EN STANDARDS" } + ], + miniStats: [ + { value: "\u06F1\u06F8+", label: "\u0633\u0627\u0644 \u062A\u062C\u0631\u0628\u0647 \u062F\u0631 \u0635\u0646\u0639\u062A \u0627\u06CC\u0645\u0646\u06CC" }, + { value: "\u06F8\u06F5\u06F0+", label: "\u0633\u0627\u0632\u0645\u0627\u0646 \u062A\u062D\u062A \u067E\u0648\u0634\u0634" }, + { value: "\u06F9\u06F8\u066A", label: "\u0631\u0636\u0627\u06CC\u062A \u0645\u0634\u062A\u0631\u06CC\u0627\u0646" } + ], + image: { url: "asset:hero.jpg", alt: "\u06A9\u0627\u0631\u06AF\u0631 \u0635\u0646\u0639\u062A\u06CC \u0628\u0627 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u06CC \u06A9\u0627\u0645\u0644" }, + lastInspection: "\u06F1\u06F4\u06F0\u06F4/\u06F0\u06F8/\u06F1\u06F2" + }, + tape: { + enabled: true, + items: [ + "ISO 9001:2015", + "CE CERTIFIED", + "\u06AF\u0627\u0631\u0627\u0646\u062A\u06CC \u0627\u0635\u0627\u0644\u062A \u06A9\u0627\u0644\u0627", + "\u062A\u062D\u0648\u06CC\u0644 \u0633\u0631\u0627\u0633\u0631\u06CC \u06A9\u0634\u0648\u0631\u06CC", + "\u0645\u0634\u0627\u0648\u0631\u0647 \u0648 \u0628\u0627\u0632\u0631\u0633\u06CC \u062A\u062E\u0635\u0635\u06CC \u0631\u0627\u06CC\u06AF\u0627\u0646", + "EN STANDARDS", + "\u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u06F2\u06F4/\u06F7 \u0642\u0631\u0627\u0631\u062F\u0627\u062F\u0647\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC", + "\u062A\u0633\u062A \u0646\u0645\u0648\u0646\u0647 \u0642\u0628\u0644 \u0627\u0632 \u062E\u0631\u06CC\u062F" + ] + }, + stats: { + enabled: true, + items: [ + { end: 18, suffix: "+", label: "\u0633\u0627\u0644 \u062A\u062C\u0631\u0628\u0647 \u062F\u0631 \u0635\u0646\u0639\u062A \u0627\u06CC\u0645\u0646\u06CC", note: "SINCE 2007" }, + { end: 2400, suffix: "+", label: "\u06A9\u062F \u06A9\u0627\u0644\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC", note: "PPE CATALOG" }, + { end: 850, suffix: "+", label: "\u0645\u0634\u062A\u0631\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u06CC \u0641\u0639\u0627\u0644", note: "B2B CLIENTS" }, + { end: 98, suffix: "\u066A", label: "\u0631\u0636\u0627\u06CC\u062A \u0645\u0634\u062A\u0631\u06CC\u0627\u0646", note: "SATISFACTION" } + ] + }, + productsIntro: { + enabled: true, + head: { + tag: "\u06F0\u06F1 \u2014 \u0645\u062D\u0635\u0648\u0644\u0627\u062A", + title: "\u062E\u0637 \u0627\u0648\u0644 \u062F\u0641\u0627\u0639\u060C\n\u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0645\u0627\u0633\u062A", + highlight: "", + desc: "\u0647\u0631 \u0645\u062D\u0635\u0648\u0644 \u067E\u06CC\u0634 \u0627\u0632 \u0639\u0631\u0636\u0647\u060C \u0632\u06CC\u0631 \u0630\u0631\u0647\u200C\u0628\u06CC\u0646 \u06A9\u0646\u062A\u0631\u0644 \u06A9\u06CC\u0641\u06CC\u062A \u0648 \u062A\u0637\u0628\u06CC\u0642 \u0628\u0627 \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F\u0647\u0627\u06CC \u062C\u0647\u0627\u0646\u06CC \u0642\u0631\u0627\u0631 \u0645\u06CC\u200C\u06AF\u06CC\u0631\u062F." + }, + ctaLabel: "\u062F\u0631\u06CC\u0627\u0641\u062A \u06A9\u0627\u062A\u0627\u0644\u0648\u06AF \u06A9\u0627\u0645\u0644", + trust: [ + { + icon: "BadgeCheck", + title: "\u06AF\u0627\u0631\u0627\u0646\u062A\u06CC \u0627\u0635\u0627\u0644\u062A \u06A9\u0627\u0644\u0627", + desc: "\u062A\u0645\u0627\u0645 \u0645\u062D\u0635\u0648\u0644\u0627\u062A \u0628\u0627 \u0641\u0627\u06A9\u062A\u0648\u0631 \u0631\u0633\u0645\u06CC \u0648 \u06A9\u062F \u0631\u0647\u06AF\u06CC\u0631\u06CC \u0627\u0635\u0627\u0644\u062A" + }, + { + icon: "PackageCheck", + title: "\u062A\u0633\u062A \u0646\u0645\u0648\u0646\u0647 \u0642\u0628\u0644 \u0627\u0632 \u062E\u0631\u06CC\u062F", + desc: "\u0646\u0645\u0648\u0646\u0647\u200C\u0647\u0627\u06CC \u0646\u0645\u0627\u06CC\u0634\u06CC \u0628\u0631\u0627\u06CC \u0627\u0631\u0632\u06CC\u0627\u0628\u06CC \u062A\u06CC\u0645 HSE \u0634\u0645\u0627" + }, + { + icon: "ShieldCheck", + title: "\u0627\u0645\u06A9\u0627\u0646 \u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0633\u0627\u0644\u0627\u0646\u0647", + desc: "\u0642\u06CC\u0645\u062A \u062B\u0627\u0628\u062A \u0648 \u062A\u0623\u0645\u06CC\u0646 \u0645\u0633\u062A\u0645\u0631 \u0628\u0631\u0627\u06CC \u0633\u0627\u0632\u0645\u0627\u0646\u200C\u0647\u0627\u06CC \u0628\u0632\u0631\u06AF" + } + ] + }, + about: { + enabled: true, + head: { + tag: "\u06F0\u06F2 \u2014 \u062F\u0631\u0628\u0627\u0631\u0647 \u0645\u0627", + title: "\u0627\u06CC\u0645\u0646\u06CC \u0628\u0631\u0627\u06CC \u0645\u0627 \u0634\u0639\u0627\u0631 \u0646\u06CC\u0633\u062A\u061B", + highlight: "\u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0627\u0633\u062A.", + desc: "" + }, + body: "\u0627\u0632 \u0633\u0627\u0644 \u06F1\u06F3\u06F8\u06F6\u060C \u0632\u0645\u0627\u0646\u06CC \u06A9\u0647 \u0627\u0648\u0644\u06CC\u0646 \u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0631\u0627 \u0628\u0647 \u06CC\u06A9 \u06A9\u0627\u0631\u06AF\u0627\u0647 \u06A9\u0648\u0686\u06A9 \u062F\u0631 \u062C\u0646\u0648\u0628 \u062A\u0647\u0631\u0627\u0646 \u0641\u0631\u0648\u062E\u062A\u06CC\u0645\u060C \u0628\u0627\u0648\u0631 \u0645\u0627 \u0647\u0645\u06CC\u0646 \u06CC\u06A9 \u062C\u0645\u0644\u0647 \u0628\u0648\u062F: \u067E\u0634\u062A \u0647\u0631 \u062A\u062C\u0647\u06CC\u0632 \u0627\u06CC\u0645\u0646\u06CC\u060C \u06CC\u06A9 \u062E\u0627\u0646\u0648\u0627\u062F\u0647 \u0647\u0633\u062A \u06A9\u0647 \u0645\u0646\u062A\u0638\u0631 \u0628\u0627\u0632\u06AF\u0634\u062A \u0639\u0632\u06CC\u0632\u0634 \u0627\u0633\u062A. \u0627\u0645\u0631\u0648\u0632 \u0628\u0627 \u0628\u06CC\u0634 \u0627\u0632 \u06F8\u06F5\u06F0 \u0633\u0627\u0632\u0645\u0627\u0646\u060C \u0627\u0632 \u067E\u0627\u0644\u0627\u06CC\u0634\u06AF\u0627\u0647\u200C\u0647\u0627 \u062A\u0627 \u0645\u0639\u0627\u062F\u0646 \u0648 \u0633\u0627\u06CC\u062A\u200C\u0647\u0627\u06CC \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC\u060C \u062F\u0631 \u06A9\u0646\u0627\u0631 \u06A9\u0633\u0627\u0646\u06CC \u0647\u0633\u062A\u06CC\u0645 \u06A9\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0631\u0627 \u06CC\u06A9 \u062E\u0637 \u0642\u0631\u0645\u0632 \u0645\u06CC\u200C\u062F\u0627\u0646\u0646\u062F.", + image: { url: "asset:about.jpg", alt: "\u0627\u0646\u0628\u0627\u0631 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u06CC \u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646" }, + badge: { value: "\u06F1\u06F8+", label: "\u0633\u0627\u0644 \u062D\u0641\u0627\u0638\u062A \u0627\u0632\n\u062C\u0627\u0646 \u0646\u06CC\u0631\u0648\u06CC \u06A9\u0627\u0631" }, + timeline: [ + { year: "\u06F1\u06F3\u06F8\u06F6", text: "\u062A\u0623\u0633\u06CC\u0633 \u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646 \u062F\u0631 \u062A\u0647\u0631\u0627\u0646 \u0628\u0627 \u062A\u0645\u0631\u06A9\u0632 \u0628\u0631 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC" }, + { year: "\u06F1\u06F3\u06F9\u06F2", text: "\u062A\u0648\u0633\u0639\u0647 \u0634\u0628\u06A9\u0647 \u062A\u0648\u0632\u06CC\u0639 \u0628\u0647 \u062A\u0645\u0627\u0645 \u06F3\u06F1 \u0627\u0633\u062A\u0627\u0646 \u06A9\u0634\u0648\u0631" }, + { year: "\u06F1\u06F3\u06F9\u06F8", text: "\u0631\u0627\u0647\u200C\u0627\u0646\u062F\u0627\u0632\u06CC \u0622\u0632\u0645\u0627\u06CC\u0634\u06AF\u0627\u0647 \u06A9\u0646\u062A\u0631\u0644 \u06A9\u06CC\u0641\u06CC\u062A \u0648 \u062A\u0633\u062A \u062A\u062C\u0647\u06CC\u0632\u0627\u062A" }, + { year: "\u06F1\u06F4\u06F0\u06F2", text: "\u0627\u0641\u062A\u062A\u0627\u062D \u0645\u0631\u06A9\u0632 \u062A\u062E\u0635\u0635\u06CC \u0622\u0645\u0648\u0632\u0634 \u0648 \u0628\u0627\u0632\u0631\u0633\u06CC HSE" } + ], + features: [ + { icon: "Globe", label: "\u0646\u0645\u0627\u06CC\u0646\u062F\u0647 \u0631\u0633\u0645\u06CC \u06F4\u06F0+ \u0628\u0631\u0646\u062F \u062C\u0647\u0627\u0646\u06CC" }, + { icon: "Users", label: "\u062A\u06CC\u0645 \u0645\u0647\u0646\u062F\u0633\u06CC \u0648 \u0628\u0627\u0632\u0631\u0633\u06CC HSE" }, + { icon: "Headset", label: "\u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u06F2\u06F4/\u06F7 \u0642\u0631\u0627\u0631\u062F\u0627\u062F\u0647\u0627" } + ] + }, + services: { + enabled: true, + head: { + tag: "\u06F0\u06F3 \u2014 \u062E\u062F\u0645\u0627\u062A", + title: "\u0641\u0631\u0627\u062A\u0631 \u0627\u0632 \u062A\u0623\u0645\u06CC\u0646\u061B\n\u0647\u0645\u0631\u0627\u0647\u06CC \u06A9\u0627\u0645\u0644 \u0627\u06CC\u0645\u0646\u06CC", + highlight: "", + desc: "\u0645\u0627 \u062F\u0631 \u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646\u060C \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0631\u0627 \u062A\u062D\u0648\u06CC\u0644 \u0645\u06CC\u200C\u062F\u0647\u06CC\u0645 \u0648 \u06A9\u0646\u0627\u0631 \u0634\u0645\u0627 \u0645\u06CC\u200C\u0645\u0627\u0646\u06CC\u0645\u061B \u0627\u0632 \u0646\u062E\u0633\u062A\u06CC\u0646 \u0627\u0631\u0632\u06CC\u0627\u0628\u06CC \u0631\u06CC\u0633\u06A9 \u062A\u0627 \u0622\u062E\u0631\u06CC\u0646 \u062A\u0633\u062A \u062F\u0648\u0631\u0647\u200C\u0627\u06CC." + }, + items: [ + { + icon: "ClipboardCheck", + title: "\u0628\u0627\u0632\u0631\u0633\u06CC \u0648 \u0627\u0631\u0632\u06CC\u0627\u0628\u06CC \u0631\u06CC\u0633\u06A9", + desc: "\u062A\u06CC\u0645 \u0645\u0647\u0646\u062F\u0633\u06CC \u0645\u0627 \u0628\u0627 \u0628\u0627\u0632\u062F\u06CC\u062F \u0627\u0632 \u0633\u0627\u06CC\u062A \u0634\u0645\u0627\u060C \u062E\u0637\u0631\u0627\u062A \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06CC\u06CC\u060C \u0627\u0648\u0644\u0648\u06CC\u062A\u200C\u0628\u0646\u062F\u06CC \u0648 \u0628\u0631\u0627\u06CC \u0647\u0631 \u06A9\u062F\u0627\u0645 \u0631\u0627\u0647\u06A9\u0627\u0631 \u0627\u062C\u0631\u0627\u06CC\u06CC \u0645\u0634\u062E\u0635 \u0628\u0627 \u0628\u0631\u0622\u0648\u0631\u062F \u0647\u0632\u06CC\u0646\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06CC\u200C\u062F\u0647\u062F.", + items: [ + "\u0627\u0631\u0632\u06CC\u0627\u0628\u06CC HAZOP \u0648 HAZID", + "\u0634\u0646\u0627\u0633\u0627\u06CC\u06CC \u0648 \u0627\u0648\u0644\u0648\u06CC\u062A\u200C\u0628\u0646\u062F\u06CC \u062E\u0637\u0631\u0627\u062A", + "\u06AF\u0632\u0627\u0631\u0634 \u0645\u062F\u06CC\u0631\u06CC\u062A\u06CC \u0628\u0627 \u0631\u0627\u0647\u06A9\u0627\u0631 \u0627\u062C\u0631\u0627\u06CC\u06CC" + ] + }, + { + icon: "GraduationCap", + title: "\u0622\u0645\u0648\u0632\u0634 \u062A\u062E\u0635\u0635\u06CC \u0627\u06CC\u0645\u0646\u06CC", + desc: "\u0627\u0632 \u062F\u0648\u0631\u0647\u200C\u0647\u0627\u06CC \u0639\u0645\u0648\u0645\u06CC \u062A\u0627 \u062A\u0631\u0628\u06CC\u062A \u0645\u0631\u0628\u06CC\u061B \u0622\u0645\u0648\u0632\u0634\u200C\u0647\u0627\u06CC \u0639\u0645\u0644\u06CC \u0648 \u0645\u06CC\u062F\u0627\u0646\u06CC \u06A9\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0631\u0627 \u0627\u0632 \u062F\u0641\u062A\u0631 \u06A9\u0644\u0627\u0646\u200C\u0647\u0627 \u0628\u0647 \u0631\u0641\u062A\u0627\u0631 \u0631\u0648\u0632\u0645\u0631\u0647 \u067E\u0631\u0633\u0646\u0644 \u062A\u0628\u062F\u06CC\u0644 \u0645\u06CC\u200C\u06A9\u0646\u062F.", + items: [ + "\u062F\u0648\u0631\u0647\u200C\u0647\u0627\u06CC \u0639\u0645\u0648\u0645\u06CC \u0648 \u062A\u062E\u0635\u0635\u06CC HSE", + "\u062A\u0631\u0628\u06CC\u062A \u0645\u0631\u0628\u06CC \u0627\u06CC\u0645\u0646\u06CC \u0633\u0627\u06CC\u062A", + "\u0645\u0627\u0646\u0648\u0631 \u0648 \u0634\u0628\u06CC\u0647\u200C\u0633\u0627\u0632\u06CC \u0634\u0631\u0627\u06CC\u0637 \u0627\u0636\u0637\u0631\u0627\u0631\u06CC" + ] + }, + { + icon: "Gauge", + title: "\u062A\u0633\u062A \u0648 \u06A9\u0627\u0644\u06CC\u0628\u0631\u0627\u0633\u06CC\u0648\u0646 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A", + desc: "\u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0627\u06CC\u0645\u0646\u06CC \u0641\u0642\u0637 \u0648\u0642\u062A\u06CC \u0642\u0627\u0628\u0644 \u0627\u0639\u062A\u0645\u0627\u062F\u0646\u062F \u06A9\u0647 \u062A\u0633\u062A \u0634\u062F\u0647 \u0628\u0627\u0634\u0646\u062F. \u062A\u0633\u062A \u062F\u0648\u0631\u0647\u200C\u0627\u06CC\u060C \u0633\u0631\u0648\u06CC\u0633 \u0648 \u0635\u062F\u0648\u0631 \u06AF\u0648\u0627\u0647\u06CC \u0645\u0639\u062A\u0628\u0631 \u0631\u0627 \u0628\u0647 \u062A\u06CC\u0645 \u062A\u062E\u0635\u0635\u06CC \u0645\u0627 \u0628\u0633\u067E\u0627\u0631\u06CC\u062F.", + items: [ + "\u062A\u0633\u062A \u0647\u0627\u0631\u0646\u0633 \u0648 \u0644\u0627\u06CC\u0646 \u0646\u062C\u0627\u062A", + "\u06A9\u0627\u0644\u06CC\u0628\u0631\u0627\u0633\u06CC\u0648\u0646 \u0622\u0634\u06A9\u0627\u0631\u0633\u0627\u0632\u0647\u0627\u06CC \u06AF\u0627\u0632", + "\u0633\u0631\u0648\u06CC\u0633 \u062F\u0648\u0631\u0647\u200C\u0627\u06CC \u0648 \u0635\u062F\u0648\u0631 \u06AF\u0648\u0627\u0647\u06CC" + ] + }, + { + icon: "Truck", + title: "\u062A\u0623\u0645\u06CC\u0646 \u0648 \u0644\u062C\u0633\u062A\u06CC\u06A9 \u0633\u0627\u0632\u0645\u0627\u0646\u06CC", + desc: "\u0628\u0627 \u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0633\u0627\u0644\u0627\u0646\u0647\u060C \u0642\u06CC\u0645\u062A\u200C\u06AF\u0630\u0627\u0631\u06CC \u0634\u0641\u0627\u0641 \u0648 \u0627\u0646\u0628\u0627\u0631 \u0645\u062D\u0644\u06CC \u062F\u0631 \u0633\u0627\u06CC\u062A \u0634\u0645\u0627\u060C \u0646\u06AF\u0631\u0627\u0646\u06CC \u06A9\u0645\u0628\u0648\u062F \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0631\u0627 \u0627\u0632 \u0641\u0647\u0631\u0633\u062A \u062F\u063A\u062F\u063A\u0647\u200C\u0647\u0627\u06CC\u062A\u0627\u0646 \u062D\u0630\u0641 \u06A9\u0646\u06CC\u062F.", + items: [ + "\u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0633\u0627\u0644\u0627\u0646\u0647 \u0628\u0627 \u0642\u06CC\u0645\u062A \u062B\u0627\u0628\u062A", + "\u0627\u0646\u0628\u0627\u0631 \u0645\u062D\u0644\u06CC \u062F\u0631 \u0633\u0627\u06CC\u062A \u0634\u0645\u0627", + "\u062A\u062D\u0648\u06CC\u0644 \u0633\u0631\u0627\u0633\u0631\u06CC \u062F\u0631 \u06F4\u06F8 \u0633\u0627\u0639\u062A" + ] + } + ] + }, + standards: { + enabled: true, + head: { + tag: "\u06F0\u06F4 \u2014 \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F\u0647\u0627", + title: "\u0645\u0647\u0631\u062A\u0623\u06CC\u06CC\u062F \u062C\u0647\u0627\u0646\u06CC\n\u0631\u0648\u06CC \u0647\u0631 \u0645\u062D\u0635\u0648\u0644", + highlight: "", + desc: "\u0645\u0627 \u0641\u0642\u0637 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A\u06CC \u0631\u0627 \u0639\u0631\u0636\u0647 \u0645\u06CC\u200C\u06A9\u0646\u06CC\u0645 \u06A9\u0647 \u062A\u0623\u06CC\u06CC\u062F\u06CC\u0647 \u0645\u0639\u062A\u0628\u0631 \u0628\u06CC\u0646\u200C\u0627\u0644\u0645\u0644\u0644\u06CC \u0648 \u062A\u0633\u062A \u0622\u0632\u0645\u0627\u06CC\u0634\u06AF\u0627\u0647\u06CC \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u0646\u062F\u061B \u0628\u062F\u0648\u0646 \u0627\u0633\u062A\u062B\u0646\u0627." + }, + note: "\u0634\u0645\u0627\u0631\u0647 \u0633\u0631\u06CC\u0627\u0644 \u062A\u0645\u0627\u0645 \u0645\u062D\u0635\u0648\u0644\u0627\u062A \u062F\u0631 \u067E\u0627\u06CC\u06AF\u0627\u0647 \u062F\u0627\u062F\u0647 \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F\u0647\u0627\u06CC \u0627\u0631\u0648\u067E\u0627 \u0642\u0627\u0628\u0644 \u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0627\u0633\u062A \u0648 \u06AF\u0648\u0627\u0647\u06CC \u062A\u0633\u062A \u0647\u0631 \u0628\u0686 \u062A\u062D\u0648\u06CC\u0644 \u0645\u0634\u062A\u0631\u06CC \u0645\u06CC\u200C\u0634\u0648\u062F.", + ctaLabel: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u06AF\u0648\u0627\u0647\u06CC \u062A\u0633\u062A \u0645\u062D\u0635\u0648\u0644\u0627\u062A", + items: [ + { code: "EN 397", label: "\u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0635\u0646\u0639\u062A\u06CC" }, + { code: "EN 388", label: "\u062F\u0633\u062A\u06A9\u0634\u200C\u0647\u0627\u06CC \u0645\u06A9\u0627\u0646\u06CC\u06A9\u06CC" }, + { code: "EN 166", label: "\u0645\u062D\u0627\u0641\u0638 \u0686\u0634\u0645 \u0648 \u0635\u0648\u0631\u062A" }, + { code: "EN 361", label: "\u0647\u0627\u0631\u0646\u0633 \u0636\u062F\u0633\u0642\u0648\u0637" }, + { code: "ISO 20345", label: "\u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC" }, + { code: "ISO 9001", label: "\u0633\u06CC\u0633\u062A\u0645 \u0645\u062F\u06CC\u0631\u06CC\u062A \u06A9\u06CC\u0641\u06CC\u062A" } + ] + }, + industries: { + enabled: true, + head: { + tag: "\u06F0\u06F5 \u2014 \u0635\u0646\u0627\u06CC\u0639", + title: "\u062D\u0636\u0648\u0631 \u062F\u0631 \u0633\u062E\u062A\u200C\u062A\u0631\u06CC\u0646\n\u0645\u06CC\u062F\u0627\u0646\u200C\u0647\u0627\u06CC \u06A9\u0627\u0631\u06CC", + highlight: "", + desc: "\u062C\u0627\u06CC\u06CC \u06A9\u0647 \u062F\u0645\u0627\u06CC \u0645\u062D\u06CC\u0637 \u0627\u0632 \u06F5\u06F0 \u062F\u0631\u062C\u0647 \u06AF\u0630\u0631 \u0645\u06CC\u200C\u06A9\u0646\u062F \u06CC\u0627 \u0627\u0631\u062A\u0641\u0627\u0639 \u06A9\u0627\u0631 \u0628\u0647 \u062F\u0647\u200C\u0647\u0627 \u0645\u062A\u0631 \u0645\u06CC\u200C\u0631\u0633\u062F\u060C \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0645\u0627 \u0628\u0627\u06CC\u062F \u0628\u06CC\u200C\u0646\u0642\u0635 \u0639\u0645\u0644 \u06A9\u0646\u0646\u062F \u2014 \u0648 \u0639\u0645\u0644 \u0645\u06CC\u200C\u06A9\u0646\u0646\u062F." + }, + items: [ + { name: "\u0646\u0641\u062A \u0648 \u06AF\u0627\u0632", nameEn: "OIL & GAS", count: "\u06F1\u06F4\u06F0+", image: { url: "asset:industries/oil-gas.jpg", alt: "\u0646\u0641\u062A \u0648 \u06AF\u0627\u0632" } }, + { name: "\u0633\u0627\u062E\u062A\u0645\u0627\u0646 \u0648 \u0639\u0645\u0631\u0627\u0646", nameEn: "CONSTRUCTION", count: "\u06F2\u06F1\u06F0+", image: { url: "asset:industries/construction.jpg", alt: "\u0633\u0627\u062E\u062A\u0645\u0627\u0646 \u0648 \u0639\u0645\u0631\u0627\u0646" } }, + { name: "\u067E\u062A\u0631\u0648\u0634\u06CC\u0645\u06CC", nameEn: "PETROCHEMICAL", count: "\u06F9\u06F0+", image: { url: "asset:industries/petrochemical.jpg", alt: "\u067E\u062A\u0631\u0648\u0634\u06CC\u0645\u06CC" } }, + { name: "\u0635\u0646\u0627\u06CC\u0639 \u0645\u0639\u062F\u0646\u06CC", nameEn: "MINING", count: "\u06F7\u06F5+", image: { url: "asset:industries/mining.jpg", alt: "\u0635\u0646\u0627\u06CC\u0639 \u0645\u0639\u062F\u0646\u06CC" } }, + { name: "\u0628\u0631\u0642 \u0648 \u0627\u0646\u0631\u0698\u06CC", nameEn: "POWER & ENERGY", count: "\u06F6\u06F0+", image: { url: "asset:industries/power-energy.jpg", alt: "\u0628\u0631\u0642 \u0648 \u0627\u0646\u0631\u0698\u06CC" } }, + { name: "\u062D\u0645\u0644\u200C\u0648\u0646\u0642\u0644 \u0648 \u0644\u062C\u0633\u062A\u06CC\u06A9", nameEn: "TRANSPORT", count: "\u06F4\u06F5+", image: { url: "asset:industries/transport.jpg", alt: "\u062D\u0645\u0644\u200C\u0648\u0646\u0642\u0644 \u0648 \u0644\u062C\u0633\u062A\u06CC\u06A9" } } + ] + }, + testimonials: { + enabled: true, + head: { tag: "\u06F0\u06F6 \u2014 \u0627\u0639\u062A\u0645\u0627\u062F", title: "\u0622\u0646\u0686\u0647 \u0645\u0634\u062A\u0631\u06CC\u0627\u0646 \u0645\u0627 \u0645\u06CC\u200C\u06AF\u0648\u06CC\u0646\u062F", highlight: "", desc: "" }, + items: [ + { + text: "\u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646 \u0641\u0642\u0637 \u062A\u0623\u0645\u06CC\u0646\u200C\u06A9\u0646\u0646\u062F\u0647 \u0646\u06CC\u0633\u062A\u061B \u0634\u0631\u06CC\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u0645\u0627\u0633\u062A. \u0628\u0627\u0632\u0631\u0633\u06CC\u200C\u0647\u0627\u06CC \u062F\u0648\u0631\u0647\u200C\u0627\u06CC \u0648 \u0622\u0645\u0648\u0632\u0634\u200C\u0647\u0627\u06CC \u0645\u06CC\u062F\u0627\u0646\u06CC\u200C\u0634\u0627\u0646 \u0646\u0631\u062E \u062D\u0648\u0627\u062F\u062B \u0633\u0627\u06CC\u062A \u0631\u0627 \u0628\u0647 \u06A9\u0645\u062A\u0631\u06CC\u0646 \u0631\u0642\u0645 \u062A\u0627\u0631\u06CC\u062E \u0645\u062C\u0645\u0648\u0639\u0647 \u0631\u0633\u0627\u0646\u062F.", + name: "\u0645\u0647\u0646\u062F\u0633 \u0631\u0636\u0627 \u06A9\u0627\u0638\u0645\u06CC", + role: "\u0645\u062F\u06CC\u0631 HSE \u2014 \u0645\u062C\u062A\u0645\u0639 \u067E\u062A\u0631\u0648\u0634\u06CC\u0645\u06CC \u062E\u0644\u06CC\u062C \u0641\u0627\u0631\u0633" + }, + { + text: "\u06A9\u06CC\u0641\u06CC\u062A \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0648 \u0633\u0631\u0639\u062A \u067E\u0627\u0633\u062E\u200C\u06AF\u0648\u06CC\u06CC \u062F\u0631 \u0633\u0637\u062D\u06CC \u0628\u0648\u062F \u06A9\u0647 \u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0633\u0627\u0644\u0627\u0646\u0647 \u0631\u0627 \u0628\u062F\u0648\u0646 \u0647\u06CC\u0686 \u062A\u0631\u062F\u06CC\u062F\u06CC \u062A\u0645\u062F\u06CC\u062F \u06A9\u0631\u062F\u06CC\u0645\u061B \u0627\u0632 \u062E\u0637 \u062A\u0648\u0644\u06CC\u062F \u062A\u0627 \u062F\u0641\u062A\u0631 \u0645\u0631\u06A9\u0632\u06CC.", + name: "\u0633\u0627\u0631\u0627 \u0645\u062D\u0645\u062F\u06CC", + role: "\u0633\u0631\u067E\u0631\u0633\u062A \u062A\u062F\u0627\u0631\u06A9\u0627\u062A \u2014 \u0647\u0644\u062F\u06CC\u0646\u06AF \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC \u0622\u0631\u06A9\u0627\u0646" + }, + { + text: "\u06F1\u06F4\u06F0 \u06A9\u06CC\u0644\u0648\u0645\u062A\u0631 \u062F\u0648\u0631\u062A\u0631 \u0627\u0632 \u0633\u0627\u06CC\u062A\u060C \u062F\u0631 \u0639\u0631\u0636 \u06F2\u06F4 \u0633\u0627\u0639\u062A \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u06CC\u0627\u062A\u06CC \u0631\u0627 \u062A\u062D\u0648\u06CC\u0644 \u06AF\u0631\u0641\u062A\u06CC\u0645. \u0628\u0647 \u0627\u06CC\u0646 \u0645\u06CC\u200C\u06AF\u0648\u06CC\u0646\u062F \u0634\u0631\u06CC\u06A9 \u0648\u0627\u0642\u0639\u06CC \u06A9\u0627\u0631\u06CC.", + name: "\u0627\u0645\u06CC\u0631\u062D\u0633\u06CC\u0646 \u0631\u0627\u062F", + role: "\u0645\u062F\u06CC\u0631 \u067E\u0631\u0648\u0698\u0647 \u2014 \u0635\u0646\u0627\u06CC\u0639 \u0645\u0639\u062F\u0646\u06CC \u06A9\u0627\u0648\u0647" + } + ] + }, + contact: { + enabled: true, + head: { + tag: "\u06F0\u06F7 \u2014 \u062A\u0645\u0627\u0633", + title: "\u0628\u06CC\u0627\u06CC\u06CC\u062F \u0627\u06CC\u0645\u0646\u06CC \u0631\u0627\n\u0628\u0627 \u0647\u0645 \u062C\u062F\u06CC \u0628\u06AF\u06CC\u0631\u06CC\u0645", + highlight: "", + desc: "\u0641\u0631\u0645 \u0631\u0627 \u067E\u0631 \u06A9\u0646\u06CC\u062F \u062A\u0627 \u06A9\u0627\u0631\u0634\u0646\u0627\u0633\u0627\u0646 \u0645\u0627 \u0628\u0631\u0627\u06CC \u0647\u0645\u0627\u0647\u0646\u06AF\u06CC \u062C\u0644\u0633\u0647 \u0628\u0627\u0632\u062F\u06CC\u062F \u0631\u0627\u06CC\u06AF\u0627\u0646 \u0633\u0627\u06CC\u062A \u0634\u0645\u0627 \u062A\u0645\u0627\u0633 \u0628\u06AF\u06CC\u0631\u0646\u062F\u061B \u06CC\u0627 \u0645\u0633\u062A\u0642\u06CC\u0645 \u0628\u0627 \u0645\u0627 \u062F\u0631 \u0627\u0631\u062A\u0628\u0627\u0637 \u0628\u0627\u0634\u06CC\u062F." + }, + emergencyTitle: "\u067E\u0627\u0633\u062E\u200C\u06AF\u0648\u06CC\u06CC \u0627\u0636\u0637\u0631\u0627\u0631\u06CC \u06F2\u06F4/\u06F7", + emergencyText: "\u0628\u0631\u0627\u06CC \u0645\u0634\u062A\u0631\u06CC\u0627\u0646 \u062F\u0627\u0631\u0627\u06CC \u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0633\u0627\u0632\u0645\u0627\u0646\u06CC\u060C \u062E\u0637 \u0648\u06CC\u0698\u0647 \u062D\u0648\u0627\u062F\u062B \u0648 \u062A\u0623\u0645\u06CC\u0646 \u0641\u0648\u0631\u06CC \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062F\u0631 \u062A\u0645\u0627\u0645 \u0633\u0627\u0639\u0627\u062A \u0634\u0628\u0627\u0646\u0647\u200C\u0631\u0648\u0632 \u0641\u0639\u0627\u0644 \u0627\u0633\u062A.", + formTag: "// \u0641\u0631\u0645 \u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0645\u0634\u0627\u0648\u0631\u0647", + formTitle: "\u062F\u0631 \u06A9\u0645\u062A\u0631 \u0627\u0632 \u06F2\u06F4 \u0633\u0627\u0639\u062A\n\u0628\u0627 \u0634\u0645\u0627 \u062A\u0645\u0627\u0633 \u0645\u06CC\u200C\u06AF\u06CC\u0631\u06CC\u0645", + successTitle: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0634\u0645\u0627 \u062B\u0628\u062A \u0634\u062F", + successText: "\u06A9\u0627\u0631\u0634\u0646\u0627\u0633\u0627\u0646 \u0645\u0627 \u062A\u0627 \u06F2\u06F4 \u0633\u0627\u0639\u062A \u0622\u06CC\u0646\u062F\u0647 \u0628\u0631\u0627\u06CC \u0647\u0645\u0627\u0647\u0646\u06AF\u06CC \u062C\u0644\u0633\u0647 \u0628\u0627\u0632\u062F\u06CC\u062F \u0628\u0627 \u0634\u0645\u0627 \u062A\u0645\u0627\u0633 \u0645\u06CC\u200C\u06AF\u06CC\u0631\u0646\u062F." + }, + footer: { + enabled: true, + about: "\u062A\u0623\u0645\u06CC\u0646\u200C\u06A9\u0646\u0646\u062F\u0647 \u062A\u062E\u0635\u0635\u06CC \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC \u0648 \u0631\u0627\u0647\u06A9\u0627\u0631\u0647\u0627\u06CC \u0627\u06CC\u0645\u0646\u06CC \u0635\u0646\u0639\u062A\u06CC\u061B \u0647\u0645\u0631\u0627\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u200C\u0647\u0627 \u0627\u0632 \u0633\u0627\u0644 \u06F1\u06F3\u06F8\u06F6 \u062F\u0631 \u0645\u0633\u06CC\u0631 \u0635\u0641\u0631 \u0634\u062F\u0646 \u062D\u0648\u0627\u062F\u062B \u06A9\u0627\u0631\u06CC.", + copyright: "\xA9 \u06F1\u06F4\u06F0\u06F4 \u0627\u06CC\u0645\u0646 \u067E\u06CC\u0634\u06AF\u0627\u0645\u0627\u0646 \u2014 \u062A\u0645\u0627\u0645\u06CC \u062D\u0642\u0648\u0642 \u0645\u062D\u0641\u0648\u0638 \u0627\u0633\u062A.", + certLine: "ISO 9001:2015 \u2014 CE CERTIFIED PPE SUPPLIER", + emergencyNote: "\u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u0627\u0636\u0637\u0631\u0627\u0631\u06CC: \u06F2\u06F4/\u06F7" + } +}; +var CATEGORY_COVERS = { + workwear: "products/vest.jpg", + "safety-footwear": "products/shoes.jpg", + "protective-gloves": "products/gloves.jpg", + "safety-helmets": "products/helmet.jpg", + "eye-protection": "products/goggles.jpg", + "hearing-protection": "products/hearing.jpg", + "respiratory-protection": "products/respiratory.jpg", + "traffic-equipment": "products/traffic.jpg" +}; + +// dist/seed/seed.js +var ASSETS_DIR = process.env.SEED_ASSETS_DIR ?? path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../seed-assets"); +var OVERWRITE_SECTIONS = ["1", "true"].includes(process.env.SEED_OVERWRITE_SECTIONS ?? ""); +var prisma = createPrismaClient(); +var storage = new S3Storage(); +var uploaded = /* @__PURE__ */ new Map(); +async function asset(rel, alt = "") { + const cached = uploaded.get(rel); + if (cached) + return cached; + const key = `seed/${rel.replace(/\.[^.]+$/, "")}.webp`; + let media = await prisma.media.findUnique({ where: { key } }); + if (!media) { + const image = await toWebp(await readFile(path.join(ASSETS_DIR, rel))); + try { + await storage.put(key, image.data, "image/webp"); + } catch { + try { + const targetPath = path.resolve(ASSETS_DIR, "../../.s3data/imen-media", key); + await mkdir(path.dirname(targetPath), { recursive: true }); + await writeFile(targetPath, image.data); + } catch { + } + } + media = await prisma.media.create({ + data: { + key, + mime: "image/webp", + size: image.size, + width: image.width, + height: image.height, + alt, + originalName: path.basename(rel) + } + }); + } + const result = { id: media.id, url: storage.publicUrl(key) }; + uploaded.set(rel, result); + return result; +} +__name(asset, "asset"); +async function resolveAssets(value) { + if (Array.isArray(value)) + return Promise.all(value.map(resolveAssets)); + if (value && typeof value === "object") { + const entries = await Promise.all(Object.entries(value).map(async ([k, v]) => { + if (k === "url" && typeof v === "string" && v.startsWith("asset:")) { + return [k, (await asset(v.slice("asset:".length))).url]; + } + return [k, await resolveAssets(v)]; + })); + return Object.fromEntries(entries); + } + return value; +} +__name(resolveAssets, "resolveAssets"); +async function seedSections() { + for (const key of SECTION_KEYS) { + const exists = await prisma.siteSection.findUnique({ where: { key } }); + if (exists && !OVERWRITE_SECTIONS) + continue; + const data = sectionSchemas[key].parse(await resolveAssets(SECTIONS[key])); + await prisma.siteSection.upsert({ where: { key }, create: { key, data }, update: { data } }); + console.log(` section ${key}`); + } +} +__name(seedSections, "seedSections"); +async function seedCatalog() { + for (const [ci, c] of CATEGORIES.entries()) { + if (await prisma.category.findUnique({ where: { slug: c.slug } })) + continue; + const coverPath = CATEGORY_COVERS[c.slug]; + const cover = coverPath ? await asset(coverPath, c.name) : null; + const category = await prisma.category.create({ + data: { + slug: c.slug, + code: c.code, + name: c.name, + nameEn: c.en, + shortDesc: c.shortDesc, + fullDesc: c.fullDesc, + icon: c.icon, + coverImageId: cover?.id ?? null, + sortOrder: ci, + groups: { + create: (c.groups ?? []).map((g, i) => ({ + slug: g.slug, + name: g.name, + desc: g.desc, + sortOrder: i + })) + } + }, + include: { groups: true } + }); + const groupIds = new Map(category.groups.map((g) => [g.slug, g.id])); + for (const [pi, p] of c.products.entries()) { + const image = p.image ? await asset(p.image.replace(/^\/images\//, ""), p.name) : null; + await prisma.product.create({ + data: { + categoryId: category.id, + groupId: p.group ? groupIds.get(p.group) ?? null : null, + code: p.code, + slug: p.code.toLowerCase(), + name: p.name, + nameEn: p.en, + desc: p.desc, + specs: [...p.specs], + variants: [...p.variants ?? []], + imageId: image?.id ?? null, + sortOrder: pi + } + }); + } + console.log(` category ${c.slug} (${c.products.length} products)`); + } +} +__name(seedCatalog, "seedCatalog"); +async function seedAdmin() { + if (!env.ADMIN_PHONE || !env.ADMIN_PASSWORD) { + console.log(" ADMIN_PHONE / ADMIN_PASSWORD not set \u2014 skipping admin user"); + return; + } + const phone = normalizeIrMobile(env.ADMIN_PHONE); + if (!/^09\d{9}$/.test(phone)) { + console.log(` ADMIN_PHONE invalid (${env.ADMIN_PHONE}) \u2014 skipping admin user`); + return; + } + const existing = await prisma.adminUser.findUnique({ where: { phone } }); + if (existing) + return; + const legacy = await prisma.adminUser.findFirst({ + where: { role: "ADMIN", phone: { contains: "@" } }, + orderBy: { id: "asc" } + }); + if (legacy) { + await prisma.adminUser.update({ + where: { id: legacy.id }, + data: { phone, name: env.ADMIN_NAME, passwordHash: await hashPassword(env.ADMIN_PASSWORD) } + }); + console.log(` admin user migrated to ${phone}`); + return; + } + await prisma.adminUser.create({ + data: { + phone, + name: env.ADMIN_NAME, + role: "ADMIN", + passwordHash: await hashPassword(env.ADMIN_PASSWORD) + } + }); + console.log(` admin user ${phone}`); +} +__name(seedAdmin, "seedAdmin"); +async function seedMessages() { + const count = await prisma.contactMessage.count(); + if (count > 0) + return; + const samples = [ + { + name: "\u0645\u0647\u0646\u062F\u0633 \u0631\u0636\u0627 \u06A9\u0627\u0638\u0645\u06CC", + org: "\u0645\u062C\u062A\u0645\u0639 \u067E\u062A\u0631\u0648\u0634\u06CC\u0645\u06CC \u062E\u0644\u06CC\u062C \u0641\u0627\u0631\u0633", + phone: "09121112233", + message: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u067E\u06CC\u0634\u200C\u0641\u0627\u06A9\u062A\u0648\u0631 \u06F5\u06F0\u06F0 \u0639\u062F\u062F \u0647\u0627\u0631\u0646\u0633 \u0627\u06CC\u0645\u0646\u06CC \u062F\u0648 \u0642\u0644\u0627\u0628 \u0648 \u06A9\u0644\u0627\u0647 \u0627\u06CC\u0645\u0646\u06CC \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F EN 397 \u0628\u0631\u0627\u06CC \u0641\u0627\u0632 \u06F2 \u067E\u062A\u0631\u0648\u0634\u06CC\u0645\u06CC.", + status: "NEW", + createdAt: new Date(Date.now() - 1e3 * 60 * 35) + }, + { + name: "\u0633\u0627\u0631\u0627 \u0645\u062D\u0645\u062F\u06CC", + org: "\u0647\u0644\u062F\u06CC\u0646\u06AF \u0633\u0627\u062E\u062A\u0645\u0627\u0646\u06CC \u0622\u0631\u06A9\u0627\u0646", + phone: "09122223344", + message: "\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0642\u06CC\u0645\u062A \u0648 \u0647\u0645\u0627\u0647\u0646\u06AF\u06CC \u062C\u0644\u0633\u0647 \u0628\u0627\u0632\u062F\u06CC\u062F \u062C\u0647\u062A \u0639\u0642\u062F \u0642\u0631\u0627\u0631\u062F\u0627\u062F \u0633\u0627\u0644\u0627\u0646\u0647 \u062A\u0623\u0645\u06CC\u0646 \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u062D\u0641\u0627\u0638\u062A \u0641\u0631\u062F\u06CC \u06F1\u06F2 \u067E\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644.", + status: "NEW", + createdAt: new Date(Date.now() - 1e3 * 60 * 120) + }, + { + name: "\u0627\u0645\u06CC\u0631\u062D\u0633\u06CC\u0646 \u0631\u0627\u062F", + org: "\u0635\u0646\u0627\u06CC\u0639 \u0645\u0639\u062F\u0646\u06CC \u06A9\u0627\u0648\u0647", + phone: "09123334455", + message: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u062A\u0623\u0645\u06CC\u0646 \u0641\u0648\u0631\u06CC \u06F2\u06F0\u06F0 \u062C\u0641\u062A \u062F\u0633\u062A\u06A9\u0634 \u0627\u06CC\u0645\u0646\u06CC \u0636\u062F\u0628\u0631\u0634 \u0648 \u06A9\u0641\u0634 \u0627\u06CC\u0645\u0646\u06CC \u0636\u062F\u0627\u0633\u06CC\u062F \u0648 \u067E\u0646\u062C\u0647 \u06A9\u0627\u0645\u067E\u0648\u0632\u06CC\u062A \u0628\u0631\u0627\u06CC \u0633\u0627\u06CC\u062A \u06CC\u0632\u062F.", + status: "READ", + createdAt: new Date(Date.now() - 1e3 * 60 * 60 * 8) + }, + { + name: "\u0645\u0647\u0646\u062F\u0633 \u0639\u0644\u06CC\u0631\u0636\u0627 \u0628\u0647\u0631\u0627\u0645\u06CC", + org: "\u0634\u0631\u06A9\u062A \u0646\u0641\u062A \u0648 \u06AF\u0627\u0632 \u067E\u0627\u0631\u0633", + phone: "09124445566", + message: "\u062A\u0642\u0627\u0636\u0627\u06CC \u0627\u0631\u0633\u0627\u0644 \u06A9\u0627\u062A\u0627\u0644\u0648\u06AF \u0648 \u0646\u0645\u0648\u0646\u0647 \u0639\u06CC\u0646\u06A9 \u0627\u06CC\u0645\u0646\u06CC \u0627\u0633\u062A\u0627\u0646\u062F\u0627\u0631\u062F EN 166 \u0648 \u0645\u062D\u0627\u0641\u0638 \u06AF\u0648\u0634 \u0627\u06CC\u0631\u0645\u0627\u0641 \u062C\u0647\u062A \u0622\u0632\u0645\u0627\u06CC\u0634 \u0648\u0627\u062D\u062F HSE.", + status: "NEW", + createdAt: new Date(Date.now() - 1e3 * 60 * 60 * 24) + }, + { + name: "\u0645\u0631\u06CC\u0645 \u0631\u0636\u0627\u06CC\u06CC", + org: "\u062F\u0627\u0631\u0648\u0633\u0627\u0632\u06CC \u0631\u0627\u0632\u06A9", + phone: "09125556677", + message: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0645\u0634\u0627\u0648\u0631\u0647 \u062A\u062E\u0635\u0635\u06CC \u062F\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0645\u0627\u0633\u06A9\u200C\u0647\u0627\u06CC \u0641\u06CC\u0644\u062A\u0631\u062F\u0627\u0631 \u0630\u0631\u0627\u062A \u0634\u06CC\u0645\u06CC\u0627\u06CC\u06CC \u0648 \u0644\u0628\u0627\u0633\u200C\u0647\u0627\u06CC \u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0622\u0632\u0645\u0627\u06CC\u0634\u06AF\u0627\u0647\u06CC.", + status: "READ", + createdAt: new Date(Date.now() - 1e3 * 60 * 60 * 36) + }, + { + name: "\u0645\u0647\u0646\u062F\u0633 \u0645\u0647\u062F\u06CC \u06CC\u0648\u0633\u0641\u06CC", + org: "\u0641\u0648\u0644\u0627\u062F \u0645\u0628\u0627\u0631\u06A9\u0647 \u0627\u0635\u0641\u0647\u0627\u0646", + phone: "09126667788", + message: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0628\u0631\u06AF\u0632\u0627\u0631\u06CC \u062C\u0644\u0633\u0647 \u0641\u0646\u06CC \u0628\u0631\u0627\u06CC \u062A\u0645\u062F\u06CC\u062F \u0642\u0631\u0627\u0631\u062F\u0627\u062F \u062A\u0623\u0645\u06CC\u0646 \u0644\u0628\u0627\u0633 \u06A9\u0627\u0631 \u0646\u0633\u0648\u0632\u060C \u0634\u06CC\u0644\u062F \u0645\u062D\u0627\u0641\u0638 \u0635\u0648\u0631\u062A \u0648 \u067E\u0627\u0628\u0646\u062F \u0646\u0633\u0648\u0632.", + status: "ARCHIVED", + createdAt: new Date(Date.now() - 1e3 * 60 * 60 * 72) + }, + { + name: "\u067E\u06CC\u0645\u0627\u0646 \u0646\u0627\u062F\u0631\u06CC", + org: "\u062E\u0637\u0648\u0637 \u0644\u0648\u0644\u0647 \u0648 \u0645\u062E\u0627\u0628\u0631\u0627\u062A \u0646\u0641\u062A", + phone: "09127778899", + message: "\u0627\u0633\u062A\u0639\u0644\u0627\u0645 \u0645\u0648\u062C\u0648\u062F\u06CC \u062A\u062C\u0647\u06CC\u0632\u0627\u062A \u0646\u062C\u0627\u062A \u062F\u0631 \u0641\u0636\u0627\u0647\u0627\u06CC \u0628\u0633\u062A\u0647\u060C \u0633\u0647\u200C\u067E\u0627\u06CC\u0647 \u0646\u062C\u0627\u062A (Tripod) \u0648 \u0648\u06CC\u0646\u0686 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u06AF\u0648\u0627\u0647\u06CC \u06A9\u0627\u0644\u06CC\u0628\u0631\u0627\u0633\u06CC\u0648\u0646.", + status: "NEW", + createdAt: new Date(Date.now() - 1e3 * 60 * 60 * 96) + }, + { + name: "\u062F\u06A9\u062A\u0631 \u0645\u062C\u06CC\u062F \u0627\u0633\u062F\u06CC", + org: "\u0633\u06CC\u0645\u0627\u0646 \u062A\u0647\u0631\u0627\u0646", + phone: "09128889900", + message: "\u062F\u0631\u062E\u0648\u0627\u0633\u062A \u0628\u0631\u06AF\u0632\u0627\u0631\u06CC \u062F\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634\u06CC \u06A9\u0627\u0631 \u062F\u0631 \u0627\u0631\u062A\u0641\u0627\u0639 \u0628\u0631\u0627\u06CC \u067E\u0631\u0633\u0646\u0644 \u067E\u06CC\u0645\u0627\u0646\u06A9\u0627\u0631 \u0648 \u0628\u0627\u0632\u0631\u0633\u06CC \u062F\u0648\u0631\u0647\u200C\u0627\u06CC \u062E\u0637\u0648\u0637 \u062D\u06CC\u0627\u062A (Lifeline).", + status: "READ", + createdAt: new Date(Date.now() - 1e3 * 60 * 60 * 120) + } + ]; + for (const msg of samples) { + await prisma.contactMessage.create({ data: msg }); + } + console.log(` seeded ${samples.length} sample contact messages`); +} +__name(seedMessages, "seedMessages"); +async function main() { + if (env.S3_ENSURE_BUCKET) { + try { + await storage.ensureBucket(); + } catch { + console.log(" ensureBucket skipped"); + } + } + console.log("seeding sections\u2026"); + await seedSections(); + console.log("seeding catalog\u2026"); + await seedCatalog(); + console.log("seeding admin\u2026"); + await seedAdmin(); + console.log("seeding messages\u2026"); + await seedMessages(); + const [categories, products, media] = await Promise.all([ + prisma.category.count(), + prisma.product.count(), + prisma.media.count() + ]); + console.log(`done: ${categories} categories, ${products} products, ${media} media files`); +} +__name(main, "main"); +try { + await main(); +} catch (e) { + console.error(e); + process.exitCode = 1; +} finally { + await prisma.$disconnect(); +} diff --git a/apps/api/.output/node_modules/@img/colour/LICENSE.md b/apps/api/.output/node_modules/@img/colour/LICENSE.md new file mode 100644 index 0000000..292c550 --- /dev/null +++ b/apps/api/.output/node_modules/@img/colour/LICENSE.md @@ -0,0 +1,82 @@ +# Licensing + +## color + +Copyright (c) 2012 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## color-convert + +Copyright (c) 2011-2016 Heather Arthur . +Copyright (c) 2016-2021 Josh Junon . + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## color-string + +Copyright (c) 2011 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## color-name + +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/apps/api/.output/node_modules/@img/colour/README.md b/apps/api/.output/node_modules/@img/colour/README.md new file mode 100644 index 0000000..a33e4eb --- /dev/null +++ b/apps/api/.output/node_modules/@img/colour/README.md @@ -0,0 +1,15 @@ +# `@img/colour` + +The latest version of the +[color](https://www.npmjs.com/package/color) +package is now ESM-only, +however some JavaScript runtimes do not yet support this, +which includes versions of Node.js prior to 20.19.0. + +This package converts the `color` package and its dependencies, +all of which are MIT-licensed, to CommonJS. + +- [color](https://www.npmjs.com/package/color) +- [color-convert](https://www.npmjs.com/package/color-convert) +- [color-string](https://www.npmjs.com/package/color-string) +- [color-name](https://www.npmjs.com/package/color-name) diff --git a/apps/api/.output/node_modules/@img/colour/color.cjs b/apps/api/.output/node_modules/@img/colour/color.cjs new file mode 100644 index 0000000..d5b7ee2 --- /dev/null +++ b/apps/api/.output/node_modules/@img/colour/color.cjs @@ -0,0 +1,1596 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/color/index.js +var index_exports = {}; +__export(index_exports, { + default: () => index_default +}); +module.exports = __toCommonJS(index_exports); + +// node_modules/color-name/index.js +var colors = { + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + grey: [128, 128, 128], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + rebeccapurple: [102, 51, 153], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}; +for (const key in colors) Object.freeze(colors[key]); +var color_name_default = Object.freeze(colors); + +// node_modules/color-string/index.js +var reverseNames = /* @__PURE__ */ Object.create(null); +for (const name in color_name_default) { + if (Object.hasOwn(color_name_default, name)) { + reverseNames[color_name_default[name]] = name; + } +} +var cs = { + to: {}, + get: {} +}; +cs.get = function(string) { + const prefix = string.slice(0, 3).toLowerCase(); + let value; + let model; + switch (prefix) { + case "hsl": { + value = cs.get.hsl(string); + model = "hsl"; + break; + } + case "hwb": { + value = cs.get.hwb(string); + model = "hwb"; + break; + } + default: { + value = cs.get.rgb(string); + model = "rgb"; + break; + } + } + if (!value) { + return null; + } + return { model, value }; +}; +cs.get.rgb = function(string) { + if (!string) { + return null; + } + const abbr = /^#([a-f\d]{3,4})$/i; + const hex = /^#([a-f\d]{6})([a-f\d]{2})?$/i; + const rgba = /^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i; + const per = /^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i; + const keyword = /^(\w+)$/; + let rgb = [0, 0, 0, 1]; + let match; + let i; + let hexAlpha; + if (match = string.match(hex)) { + hexAlpha = match[2]; + match = match[1]; + for (i = 0; i < 3; i++) { + const i2 = i * 2; + rgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16); + } + if (hexAlpha) { + rgb[3] = Number.parseInt(hexAlpha, 16) / 255; + } + } else if (match = string.match(abbr)) { + match = match[1]; + hexAlpha = match[3]; + for (i = 0; i < 3; i++) { + rgb[i] = Number.parseInt(match[i] + match[i], 16); + } + if (hexAlpha) { + rgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255; + } + } else if (match = string.match(rgba)) { + for (i = 0; i < 3; i++) { + rgb[i] = Number.parseFloat(match[i + 1]); + } + if (match[4]) { + rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]); + } + } else if (match = string.match(per)) { + for (i = 0; i < 3; i++) { + rgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55); + } + if (match[4]) { + rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]); + } + } else if (match = string.toLowerCase().match(keyword)) { + if (match[1] === "transparent") { + return [0, 0, 0, 0]; + } + if (!Object.hasOwn(color_name_default, match[1])) { + return null; + } + rgb = color_name_default[match[1]].slice(); + rgb[3] = 1; + return rgb; + } else { + return null; + } + for (i = 0; i < 3; i++) { + rgb[i] = clamp(rgb[i], 0, 255); + } + rgb[3] = clamp(rgb[3], 0, 1); + return rgb; +}; +cs.get.hsl = function(string) { + if (!string) { + return null; + } + const hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i; + const match = string.match(hsl); + if (match) { + const alpha = Number.parseFloat(match[4]); + const h = (Number.parseFloat(match[1]) % 360 + 360) % 360; + const s = clamp(Number.parseFloat(match[2]), 0, 100); + const l = clamp(Number.parseFloat(match[3]), 0, 100); + const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, s, l, a]; + } + return null; +}; +cs.get.hwb = function(string) { + if (!string) { + return null; + } + const hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i; + const match = string.match(hwb); + if (match) { + const alpha = Number.parseFloat(match[4]); + const h = (Number.parseFloat(match[1]) % 360 + 360) % 360; + const w = clamp(Number.parseFloat(match[2]), 0, 100); + const b = clamp(Number.parseFloat(match[3]), 0, 100); + const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, w, b, a]; + } + return null; +}; +cs.to.hex = function(...rgba) { + return "#" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : ""); +}; +cs.to.rgb = function(...rgba) { + return rgba.length < 4 || rgba[3] === 1 ? "rgb(" + Math.round(rgba[0]) + ", " + Math.round(rgba[1]) + ", " + Math.round(rgba[2]) + ")" : "rgba(" + Math.round(rgba[0]) + ", " + Math.round(rgba[1]) + ", " + Math.round(rgba[2]) + ", " + rgba[3] + ")"; +}; +cs.to.rgb.percent = function(...rgba) { + const r = Math.round(rgba[0] / 255 * 100); + const g = Math.round(rgba[1] / 255 * 100); + const b = Math.round(rgba[2] / 255 * 100); + return rgba.length < 4 || rgba[3] === 1 ? "rgb(" + r + "%, " + g + "%, " + b + "%)" : "rgba(" + r + "%, " + g + "%, " + b + "%, " + rgba[3] + ")"; +}; +cs.to.hsl = function(...hsla) { + return hsla.length < 4 || hsla[3] === 1 ? "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)" : "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + hsla[3] + ")"; +}; +cs.to.hwb = function(...hwba) { + let a = ""; + if (hwba.length >= 4 && hwba[3] !== 1) { + a = ", " + hwba[3]; + } + return "hwb(" + hwba[0] + ", " + hwba[1] + "%, " + hwba[2] + "%" + a + ")"; +}; +cs.to.keyword = function(...rgb) { + return reverseNames[rgb.slice(0, 3)]; +}; +function clamp(number_, min, max) { + return Math.min(Math.max(min, number_), max); +} +function hexDouble(number_) { + const string_ = Math.round(number_).toString(16).toUpperCase(); + return string_.length < 2 ? "0" + string_ : string_; +} +var color_string_default = cs; + +// node_modules/color-convert/conversions.js +var reverseKeywords = {}; +for (const key of Object.keys(color_name_default)) { + reverseKeywords[color_name_default[key]] = key; +} +var convert = { + rgb: { channels: 3, labels: "rgb" }, + hsl: { channels: 3, labels: "hsl" }, + hsv: { channels: 3, labels: "hsv" }, + hwb: { channels: 3, labels: "hwb" }, + cmyk: { channels: 4, labels: "cmyk" }, + xyz: { channels: 3, labels: "xyz" }, + lab: { channels: 3, labels: "lab" }, + oklab: { channels: 3, labels: ["okl", "oka", "okb"] }, + lch: { channels: 3, labels: "lch" }, + oklch: { channels: 3, labels: ["okl", "okc", "okh"] }, + hex: { channels: 1, labels: ["hex"] }, + keyword: { channels: 1, labels: ["keyword"] }, + ansi16: { channels: 1, labels: ["ansi16"] }, + ansi256: { channels: 1, labels: ["ansi256"] }, + hcg: { channels: 3, labels: ["h", "c", "g"] }, + apple: { channels: 3, labels: ["r16", "g16", "b16"] }, + gray: { channels: 1, labels: ["gray"] } +}; +var conversions_default = convert; +var LAB_FT = (6 / 29) ** 3; +function srgbNonlinearTransform(c) { + const cc = c > 31308e-7 ? 1.055 * c ** (1 / 2.4) - 0.055 : c * 12.92; + return Math.min(Math.max(0, cc), 1); +} +function srgbNonlinearTransformInv(c) { + return c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92; +} +for (const model of Object.keys(convert)) { + if (!("channels" in convert[model])) { + throw new Error("missing channels property: " + model); + } + if (!("labels" in convert[model])) { + throw new Error("missing channel labels property: " + model); + } + if (convert[model].labels.length !== convert[model].channels) { + throw new Error("channel and label counts mismatch: " + model); + } + const { channels, labels } = convert[model]; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], "channels", { value: channels }); + Object.defineProperty(convert[model], "labels", { value: labels }); +} +convert.rgb.hsl = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const min = Math.min(r, g, b); + const max = Math.max(r, g, b); + const delta = max - min; + let h; + let s; + switch (max) { + case min: { + h = 0; + break; + } + case r: { + h = (g - b) / delta; + break; + } + case g: { + h = 2 + (b - r) / delta; + break; + } + case b: { + h = 4 + (r - g) / delta; + break; + } + } + h = Math.min(h * 60, 360); + if (h < 0) { + h += 360; + } + const l = (min + max) / 2; + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + return [h, s * 100, l * 100]; +}; +convert.rgb.hsv = function(rgb) { + let rdif; + let gdif; + let bdif; + let h; + let s; + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const v = Math.max(r, g, b); + const diff = v - Math.min(r, g, b); + const diffc = function(c) { + return (v - c) / 6 / diff + 1 / 2; + }; + if (diff === 0) { + h = 0; + s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + switch (v) { + case r: { + h = bdif - gdif; + break; + } + case g: { + h = 1 / 3 + rdif - bdif; + break; + } + case b: { + h = 2 / 3 + gdif - rdif; + break; + } + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + return [ + h * 360, + s * 100, + v * 100 + ]; +}; +convert.rgb.hwb = function(rgb) { + const r = rgb[0]; + const g = rgb[1]; + let b = rgb[2]; + const h = convert.rgb.hsl(rgb)[0]; + const w = 1 / 255 * Math.min(r, Math.min(g, b)); + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + return [h, w * 100, b * 100]; +}; +convert.rgb.oklab = function(rgb) { + const r = srgbNonlinearTransformInv(rgb[0] / 255); + const g = srgbNonlinearTransformInv(rgb[1] / 255); + const b = srgbNonlinearTransformInv(rgb[2] / 255); + const lp = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b); + const mp = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b); + const sp = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b); + const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp; + const aa = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp; + const bb = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp; + return [l * 100, aa * 100, bb * 100]; +}; +convert.rgb.cmyk = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const k = Math.min(1 - r, 1 - g, 1 - b); + const c = (1 - r - k) / (1 - k) || 0; + const m = (1 - g - k) / (1 - k) || 0; + const y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; +}; +function comparativeDistance(x, y) { + return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2; +} +convert.rgb.keyword = function(rgb) { + const reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + let currentClosestDistance = Number.POSITIVE_INFINITY; + let currentClosestKeyword; + for (const keyword of Object.keys(color_name_default)) { + const value = color_name_default[keyword]; + const distance = comparativeDistance(rgb, value); + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + return currentClosestKeyword; +}; +convert.keyword.rgb = function(keyword) { + return [...color_name_default[keyword]]; +}; +convert.rgb.xyz = function(rgb) { + const r = srgbNonlinearTransformInv(rgb[0] / 255); + const g = srgbNonlinearTransformInv(rgb[1] / 255); + const b = srgbNonlinearTransformInv(rgb[2] / 255); + const x = r * 0.4124564 + g * 0.3575761 + b * 0.1804375; + const y = r * 0.2126729 + g * 0.7151522 + b * 0.072175; + const z = r * 0.0193339 + g * 0.119192 + b * 0.9503041; + return [x * 100, y * 100, z * 100]; +}; +convert.rgb.lab = function(rgb) { + const xyz = convert.rgb.xyz(rgb); + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; +}; +convert.hsl.rgb = function(hsl) { + const h = hsl[0] / 360; + const s = hsl[1] / 100; + const l = hsl[2] / 100; + let t3; + let value; + if (s === 0) { + value = l * 255; + return [value, value, value]; + } + const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; + const t1 = 2 * l - t2; + const rgb = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + if (6 * t3 < 1) { + value = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + value = t2; + } else if (3 * t3 < 2) { + value = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + value = t1; + } + rgb[i] = value * 255; + } + return rgb; +}; +convert.hsl.hsv = function(hsl) { + const h = hsl[0]; + let s = hsl[1] / 100; + let l = hsl[2] / 100; + let smin = s; + const lmin = Math.max(l, 0.01); + l *= 2; + s *= l <= 1 ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + const v = (l + s) / 2; + const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); + return [h, sv * 100, v * 100]; +}; +convert.hsv.rgb = function(hsv) { + const h = hsv[0] / 60; + const s = hsv[1] / 100; + let v = hsv[2] / 100; + const hi = Math.floor(h) % 6; + const f = h - Math.floor(h); + const p = 255 * v * (1 - s); + const q = 255 * v * (1 - s * f); + const t = 255 * v * (1 - s * (1 - f)); + v *= 255; + switch (hi) { + case 0: { + return [v, t, p]; + } + case 1: { + return [q, v, p]; + } + case 2: { + return [p, v, t]; + } + case 3: { + return [p, q, v]; + } + case 4: { + return [t, p, v]; + } + case 5: { + return [v, p, q]; + } + } +}; +convert.hsv.hsl = function(hsv) { + const h = hsv[0]; + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const vmin = Math.max(v, 0.01); + let sl; + let l; + l = (2 - s) * v; + const lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= lmin <= 1 ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; +}; +convert.hwb.rgb = function(hwb) { + const h = hwb[0] / 360; + let wh = hwb[1] / 100; + let bl = hwb[2] / 100; + const ratio = wh + bl; + let f; + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + const i = Math.floor(6 * h); + const v = 1 - bl; + f = 6 * h - i; + if ((i & 1) !== 0) { + f = 1 - f; + } + const n = wh + f * (v - wh); + let r; + let g; + let b; + switch (i) { + default: + case 6: + case 0: { + r = v; + g = n; + b = wh; + break; + } + case 1: { + r = n; + g = v; + b = wh; + break; + } + case 2: { + r = wh; + g = v; + b = n; + break; + } + case 3: { + r = wh; + g = n; + b = v; + break; + } + case 4: { + r = n; + g = wh; + b = v; + break; + } + case 5: { + r = v; + g = wh; + b = n; + break; + } + } + return [r * 255, g * 255, b * 255]; +}; +convert.cmyk.rgb = function(cmyk) { + const c = cmyk[0] / 100; + const m = cmyk[1] / 100; + const y = cmyk[2] / 100; + const k = cmyk[3] / 100; + const r = 1 - Math.min(1, c * (1 - k) + k); + const g = 1 - Math.min(1, m * (1 - k) + k); + const b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; +}; +convert.xyz.rgb = function(xyz) { + const x = xyz[0] / 100; + const y = xyz[1] / 100; + const z = xyz[2] / 100; + let r; + let g; + let b; + r = x * 3.2404542 + y * -1.5371385 + z * -0.4985314; + g = x * -0.969266 + y * 1.8760108 + z * 0.041556; + b = x * 0.0556434 + y * -0.2040259 + z * 1.0572252; + r = srgbNonlinearTransform(r); + g = srgbNonlinearTransform(g); + b = srgbNonlinearTransform(b); + return [r * 255, g * 255, b * 255]; +}; +convert.xyz.lab = function(xyz) { + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; +}; +convert.xyz.oklab = function(xyz) { + const x = xyz[0] / 100; + const y = xyz[1] / 100; + const z = xyz[2] / 100; + const lp = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z); + const mp = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z); + const sp = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.633851707 * z); + const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp; + const a = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp; + const b = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp; + return [l * 100, a * 100, b * 100]; +}; +convert.oklab.oklch = function(oklab) { + return convert.lab.lch(oklab); +}; +convert.oklab.xyz = function(oklab) { + const ll = oklab[0] / 100; + const a = oklab[1] / 100; + const b = oklab[2] / 100; + const l = (0.999999998 * ll + 0.396337792 * a + 0.215803758 * b) ** 3; + const m = (1.000000008 * ll - 0.105561342 * a - 0.063854175 * b) ** 3; + const s = (1.000000055 * ll - 0.089484182 * a - 1.291485538 * b) ** 3; + const x = 1.227013851 * l - 0.55779998 * m + 0.281256149 * s; + const y = -0.040580178 * l + 1.11225687 * m - 0.071676679 * s; + const z = -0.076381285 * l - 0.421481978 * m + 1.58616322 * s; + return [x * 100, y * 100, z * 100]; +}; +convert.oklab.rgb = function(oklab) { + const ll = oklab[0] / 100; + const aa = oklab[1] / 100; + const bb = oklab[2] / 100; + const l = (ll + 0.3963377774 * aa + 0.2158037573 * bb) ** 3; + const m = (ll - 0.1055613458 * aa - 0.0638541728 * bb) ** 3; + const s = (ll - 0.0894841775 * aa - 1.291485548 * bb) ** 3; + const r = srgbNonlinearTransform(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s); + const g = srgbNonlinearTransform(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s); + const b = srgbNonlinearTransform(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s); + return [r * 255, g * 255, b * 255]; +}; +convert.oklch.oklab = function(oklch) { + return convert.lch.lab(oklch); +}; +convert.lab.xyz = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let x; + let y; + let z; + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + const y2 = y ** 3; + const x2 = x ** 3; + const z2 = z ** 3; + y = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787; + x = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787; + z = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787; + x *= 95.047; + y *= 100; + z *= 108.883; + return [x, y, z]; +}; +convert.lab.lch = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let h; + const hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + const c = Math.sqrt(a * a + b * b); + return [l, c, h]; +}; +convert.lch.lab = function(lch) { + const l = lch[0]; + const c = lch[1]; + const h = lch[2]; + const hr = h / 360 * 2 * Math.PI; + const a = c * Math.cos(hr); + const b = c * Math.sin(hr); + return [l, a, b]; +}; +convert.rgb.ansi16 = function(args, saturation = null) { + const [r, g, b] = args; + let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; + value = Math.round(value / 50); + if (value === 0) { + return 30; + } + let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); + if (value === 2) { + ansi += 60; + } + return ansi; +}; +convert.hsv.ansi16 = function(args) { + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); +}; +convert.rgb.ansi256 = function(args) { + const r = args[0]; + const g = args[1]; + const b = args[2]; + if (r >> 4 === g >> 4 && g >> 4 === b >> 4) { + if (r < 8) { + return 16; + } + if (r > 248) { + return 231; + } + return Math.round((r - 8) / 247 * 24) + 232; + } + const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); + return ansi; +}; +convert.ansi16.rgb = function(args) { + args = args[0]; + let color = args % 10; + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + color = color / 10.5 * 255; + return [color, color, color]; + } + const mult = (Math.trunc(args > 50) + 1) * 0.5; + const r = (color & 1) * mult * 255; + const g = (color >> 1 & 1) * mult * 255; + const b = (color >> 2 & 1) * mult * 255; + return [r, g, b]; +}; +convert.ansi256.rgb = function(args) { + args = args[0]; + if (args >= 232) { + const c = (args - 232) * 10 + 8; + return [c, c, c]; + } + args -= 16; + let rem; + const r = Math.floor(args / 36) / 5 * 255; + const g = Math.floor((rem = args % 36) / 6) / 5 * 255; + const b = rem % 6 / 5 * 255; + return [r, g, b]; +}; +convert.rgb.hex = function(args) { + const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); + const string = integer.toString(16).toUpperCase(); + return "000000".slice(string.length) + string; +}; +convert.hex.rgb = function(args) { + const match = args.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i); + if (!match) { + return [0, 0, 0]; + } + let colorString = match[0]; + if (match[0].length === 3) { + colorString = [...colorString].map((char) => char + char).join(""); + } + const integer = Number.parseInt(colorString, 16); + const r = integer >> 16 & 255; + const g = integer >> 8 & 255; + const b = integer & 255; + return [r, g, b]; +}; +convert.rgb.hcg = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const max = Math.max(Math.max(r, g), b); + const min = Math.min(Math.min(r, g), b); + const chroma = max - min; + let hue; + const grayscale = chroma < 1 ? min / (1 - chroma) : 0; + if (chroma <= 0) { + hue = 0; + } else if (max === r) { + hue = (g - b) / chroma % 6; + } else if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma; + } + hue /= 6; + hue %= 1; + return [hue * 360, chroma * 100, grayscale * 100]; +}; +convert.hsl.hcg = function(hsl) { + const s = hsl[1] / 100; + const l = hsl[2] / 100; + const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l); + let f = 0; + if (c < 1) { + f = (l - 0.5 * c) / (1 - c); + } + return [hsl[0], c * 100, f * 100]; +}; +convert.hsv.hcg = function(hsv) { + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const c = s * v; + let f = 0; + if (c < 1) { + f = (v - c) / (1 - c); + } + return [hsv[0], c * 100, f * 100]; +}; +convert.hcg.rgb = function(hcg) { + const h = hcg[0] / 360; + const c = hcg[1] / 100; + const g = hcg[2] / 100; + if (c === 0) { + return [g * 255, g * 255, g * 255]; + } + const pure = [0, 0, 0]; + const hi = h % 1 * 6; + const v = hi % 1; + const w = 1 - v; + let mg = 0; + switch (Math.floor(hi)) { + case 0: { + pure[0] = 1; + pure[1] = v; + pure[2] = 0; + break; + } + case 1: { + pure[0] = w; + pure[1] = 1; + pure[2] = 0; + break; + } + case 2: { + pure[0] = 0; + pure[1] = 1; + pure[2] = v; + break; + } + case 3: { + pure[0] = 0; + pure[1] = w; + pure[2] = 1; + break; + } + case 4: { + pure[0] = v; + pure[1] = 0; + pure[2] = 1; + break; + } + default: { + pure[0] = 1; + pure[1] = 0; + pure[2] = w; + } + } + mg = (1 - c) * g; + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; +}; +convert.hcg.hsv = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + let f = 0; + if (v > 0) { + f = c / v; + } + return [hcg[0], f * 100, v * 100]; +}; +convert.hcg.hsl = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const l = g * (1 - c) + 0.5 * c; + let s = 0; + if (l > 0 && l < 0.5) { + s = c / (2 * l); + } else if (l >= 0.5 && l < 1) { + s = c / (2 * (1 - l)); + } + return [hcg[0], s * 100, l * 100]; +}; +convert.hcg.hwb = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; +}; +convert.hwb.hcg = function(hwb) { + const w = hwb[1] / 100; + const b = hwb[2] / 100; + const v = 1 - b; + const c = v - w; + let g = 0; + if (c < 1) { + g = (v - c) / (1 - c); + } + return [hwb[0], c * 100, g * 100]; +}; +convert.apple.rgb = function(apple) { + return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; +}; +convert.rgb.apple = function(rgb) { + return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; +}; +convert.gray.rgb = function(args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; +}; +convert.gray.hsl = function(args) { + return [0, 0, args[0]]; +}; +convert.gray.hsv = convert.gray.hsl; +convert.gray.hwb = function(gray) { + return [0, 100, gray[0]]; +}; +convert.gray.cmyk = function(gray) { + return [0, 0, 0, gray[0]]; +}; +convert.gray.lab = function(gray) { + return [gray[0], 0, 0]; +}; +convert.gray.hex = function(gray) { + const value = Math.round(gray[0] / 100 * 255) & 255; + const integer = (value << 16) + (value << 8) + value; + const string = integer.toString(16).toUpperCase(); + return "000000".slice(string.length) + string; +}; +convert.rgb.gray = function(rgb) { + const value = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [value / 255 * 100]; +}; + +// node_modules/color-convert/route.js +function buildGraph() { + const graph = {}; + const models2 = Object.keys(conversions_default); + for (let { length } = models2, i = 0; i < length; i++) { + graph[models2[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } + return graph; +} +function deriveBFS(fromModel) { + const graph = buildGraph(); + const queue = [fromModel]; + graph[fromModel].distance = 0; + while (queue.length > 0) { + const current = queue.pop(); + const adjacents = Object.keys(conversions_default[current]); + for (let { length } = adjacents, i = 0; i < length; i++) { + const adjacent = adjacents[i]; + const node = graph[adjacent]; + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + return graph; +} +function link(from, to) { + return function(args) { + return to(from(args)); + }; +} +function wrapConversion(toModel, graph) { + const path = [graph[toModel].parent, toModel]; + let fn = conversions_default[graph[toModel].parent][toModel]; + let cur = graph[toModel].parent; + while (graph[cur].parent) { + path.unshift(graph[cur].parent); + fn = link(conversions_default[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + fn.conversion = path; + return fn; +} +function route(fromModel) { + const graph = deriveBFS(fromModel); + const conversion = {}; + const models2 = Object.keys(graph); + for (let { length } = models2, i = 0; i < length; i++) { + const toModel = models2[i]; + const node = graph[toModel]; + if (node.parent === null) { + continue; + } + conversion[toModel] = wrapConversion(toModel, graph); + } + return conversion; +} +var route_default = route; + +// node_modules/color-convert/index.js +var convert2 = {}; +var models = Object.keys(conversions_default); +function wrapRaw(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + return fn(args); + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; +} +function wrapRounded(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + const result = fn(args); + if (typeof result === "object") { + for (let { length } = result, i = 0; i < length; i++) { + result[i] = Math.round(result[i]); + } + } + return result; + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; +} +for (const fromModel of models) { + convert2[fromModel] = {}; + Object.defineProperty(convert2[fromModel], "channels", { value: conversions_default[fromModel].channels }); + Object.defineProperty(convert2[fromModel], "labels", { value: conversions_default[fromModel].labels }); + const routes = route_default(fromModel); + const routeModels = Object.keys(routes); + for (const toModel of routeModels) { + const fn = routes[toModel]; + convert2[fromModel][toModel] = wrapRounded(fn); + convert2[fromModel][toModel].raw = wrapRaw(fn); + } +} +var color_convert_default = convert2; + +// node_modules/color/index.js +var skippedModels = [ + // To be honest, I don't really feel like keyword belongs in color convert, but eh. + "keyword", + // Gray conflicts with some method names, and has its own method defined. + "gray", + // Shouldn't really be in color-convert either... + "hex" +]; +var hashedModelKeys = {}; +for (const model of Object.keys(color_convert_default)) { + hashedModelKeys[[...color_convert_default[model].labels].sort().join("")] = model; +} +var limiters = {}; +function Color(object, model) { + if (!(this instanceof Color)) { + return new Color(object, model); + } + if (model && model in skippedModels) { + model = null; + } + if (model && !(model in color_convert_default)) { + throw new Error("Unknown model: " + model); + } + let i; + let channels; + if (object == null) { + this.model = "rgb"; + this.color = [0, 0, 0]; + this.valpha = 1; + } else if (object instanceof Color) { + this.model = object.model; + this.color = [...object.color]; + this.valpha = object.valpha; + } else if (typeof object === "string") { + const result = color_string_default.get(object); + if (result === null) { + throw new Error("Unable to parse color from string: " + object); + } + this.model = result.model; + channels = color_convert_default[this.model].channels; + this.color = result.value.slice(0, channels); + this.valpha = typeof result.value[channels] === "number" ? result.value[channels] : 1; + } else if (object.length > 0) { + this.model = model || "rgb"; + channels = color_convert_default[this.model].channels; + const newArray = Array.prototype.slice.call(object, 0, channels); + this.color = zeroArray(newArray, channels); + this.valpha = typeof object[channels] === "number" ? object[channels] : 1; + } else if (typeof object === "number") { + this.model = "rgb"; + this.color = [ + object >> 16 & 255, + object >> 8 & 255, + object & 255 + ]; + this.valpha = 1; + } else { + this.valpha = 1; + const keys = Object.keys(object); + if ("alpha" in object) { + keys.splice(keys.indexOf("alpha"), 1); + this.valpha = typeof object.alpha === "number" ? object.alpha : 0; + } + const hashedKeys = keys.sort().join(""); + if (!(hashedKeys in hashedModelKeys)) { + throw new Error("Unable to parse color from object: " + JSON.stringify(object)); + } + this.model = hashedModelKeys[hashedKeys]; + const { labels } = color_convert_default[this.model]; + const color = []; + for (i = 0; i < labels.length; i++) { + color.push(object[labels[i]]); + } + this.color = zeroArray(color); + } + if (limiters[this.model]) { + channels = color_convert_default[this.model].channels; + for (i = 0; i < channels; i++) { + const limit = limiters[this.model][i]; + if (limit) { + this.color[i] = limit(this.color[i]); + } + } + } + this.valpha = Math.max(0, Math.min(1, this.valpha)); + if (Object.freeze) { + Object.freeze(this); + } +} +Color.prototype = { + toString() { + return this.string(); + }, + toJSON() { + return this[this.model](); + }, + string(places) { + let self = this.model in color_string_default.to ? this : this.rgb(); + self = self.round(typeof places === "number" ? places : 1); + const arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha]; + return color_string_default.to[self.model](...arguments_); + }, + percentString(places) { + const self = this.rgb().round(typeof places === "number" ? places : 1); + const arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha]; + return color_string_default.to.rgb.percent(...arguments_); + }, + array() { + return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha]; + }, + object() { + const result = {}; + const { channels } = color_convert_default[this.model]; + const { labels } = color_convert_default[this.model]; + for (let i = 0; i < channels; i++) { + result[labels[i]] = this.color[i]; + } + if (this.valpha !== 1) { + result.alpha = this.valpha; + } + return result; + }, + unitArray() { + const rgb = this.rgb().color; + rgb[0] /= 255; + rgb[1] /= 255; + rgb[2] /= 255; + if (this.valpha !== 1) { + rgb.push(this.valpha); + } + return rgb; + }, + unitObject() { + const rgb = this.rgb().object(); + rgb.r /= 255; + rgb.g /= 255; + rgb.b /= 255; + if (this.valpha !== 1) { + rgb.alpha = this.valpha; + } + return rgb; + }, + round(places) { + places = Math.max(places || 0, 0); + return new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model); + }, + alpha(value) { + if (value !== void 0) { + return new Color([...this.color, Math.max(0, Math.min(1, value))], this.model); + } + return this.valpha; + }, + // Rgb + red: getset("rgb", 0, maxfn(255)), + green: getset("rgb", 1, maxfn(255)), + blue: getset("rgb", 2, maxfn(255)), + hue: getset(["hsl", "hsv", "hsl", "hwb", "hcg"], 0, (value) => (value % 360 + 360) % 360), + saturationl: getset("hsl", 1, maxfn(100)), + lightness: getset("hsl", 2, maxfn(100)), + saturationv: getset("hsv", 1, maxfn(100)), + value: getset("hsv", 2, maxfn(100)), + chroma: getset("hcg", 1, maxfn(100)), + gray: getset("hcg", 2, maxfn(100)), + white: getset("hwb", 1, maxfn(100)), + wblack: getset("hwb", 2, maxfn(100)), + cyan: getset("cmyk", 0, maxfn(100)), + magenta: getset("cmyk", 1, maxfn(100)), + yellow: getset("cmyk", 2, maxfn(100)), + black: getset("cmyk", 3, maxfn(100)), + x: getset("xyz", 0, maxfn(95.047)), + y: getset("xyz", 1, maxfn(100)), + z: getset("xyz", 2, maxfn(108.833)), + l: getset("lab", 0, maxfn(100)), + a: getset("lab", 1), + b: getset("lab", 2), + keyword(value) { + if (value !== void 0) { + return new Color(value); + } + return color_convert_default[this.model].keyword(this.color); + }, + hex(value) { + if (value !== void 0) { + return new Color(value); + } + return color_string_default.to.hex(...this.rgb().round().color); + }, + hexa(value) { + if (value !== void 0) { + return new Color(value); + } + const rgbArray = this.rgb().round().color; + let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase(); + if (alphaHex.length === 1) { + alphaHex = "0" + alphaHex; + } + return color_string_default.to.hex(...rgbArray) + alphaHex; + }, + rgbNumber() { + const rgb = this.rgb().color; + return (rgb[0] & 255) << 16 | (rgb[1] & 255) << 8 | rgb[2] & 255; + }, + luminosity() { + const rgb = this.rgb().color; + const lum = []; + for (const [i, element] of rgb.entries()) { + const chan = element / 255; + lum[i] = chan <= 0.04045 ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4; + } + return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; + }, + contrast(color2) { + const lum1 = this.luminosity(); + const lum2 = color2.luminosity(); + if (lum1 > lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + level(color2) { + const contrastRatio = this.contrast(color2); + if (contrastRatio >= 7) { + return "AAA"; + } + return contrastRatio >= 4.5 ? "AA" : ""; + }, + isDark() { + const rgb = this.rgb().color; + const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 1e4; + return yiq < 128; + }, + isLight() { + return !this.isDark(); + }, + negate() { + const rgb = this.rgb(); + for (let i = 0; i < 3; i++) { + rgb.color[i] = 255 - rgb.color[i]; + } + return rgb; + }, + lighten(ratio) { + const hsl = this.hsl(); + hsl.color[2] += hsl.color[2] * ratio; + return hsl; + }, + darken(ratio) { + const hsl = this.hsl(); + hsl.color[2] -= hsl.color[2] * ratio; + return hsl; + }, + saturate(ratio) { + const hsl = this.hsl(); + hsl.color[1] += hsl.color[1] * ratio; + return hsl; + }, + desaturate(ratio) { + const hsl = this.hsl(); + hsl.color[1] -= hsl.color[1] * ratio; + return hsl; + }, + whiten(ratio) { + const hwb = this.hwb(); + hwb.color[1] += hwb.color[1] * ratio; + return hwb; + }, + blacken(ratio) { + const hwb = this.hwb(); + hwb.color[2] += hwb.color[2] * ratio; + return hwb; + }, + grayscale() { + const rgb = this.rgb().color; + const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + return Color.rgb(value, value, value); + }, + fade(ratio) { + return this.alpha(this.valpha - this.valpha * ratio); + }, + opaquer(ratio) { + return this.alpha(this.valpha + this.valpha * ratio); + }, + rotate(degrees) { + const hsl = this.hsl(); + let hue = hsl.color[0]; + hue = (hue + degrees) % 360; + hue = hue < 0 ? 360 + hue : hue; + hsl.color[0] = hue; + return hsl; + }, + mix(mixinColor, weight) { + if (!mixinColor || !mixinColor.rgb) { + throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor); + } + const color1 = mixinColor.rgb(); + const color2 = this.rgb(); + const p = weight === void 0 ? 0.5 : weight; + const w = 2 * p - 1; + const a = color1.alpha() - color2.alpha(); + const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2; + const w2 = 1 - w1; + return Color.rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue(), + color1.alpha() * p + color2.alpha() * (1 - p) + ); + } +}; +for (const model of Object.keys(color_convert_default)) { + if (skippedModels.includes(model)) { + continue; + } + const { channels } = color_convert_default[model]; + Color.prototype[model] = function(...arguments_) { + if (this.model === model) { + return new Color(this); + } + if (arguments_.length > 0) { + return new Color(arguments_, model); + } + return new Color([...assertArray(color_convert_default[this.model][model].raw(this.color)), this.valpha], model); + }; + Color[model] = function(...arguments_) { + let color = arguments_[0]; + if (typeof color === "number") { + color = zeroArray(arguments_, channels); + } + return new Color(color, model); + }; +} +function roundTo(number, places) { + return Number(number.toFixed(places)); +} +function roundToPlace(places) { + return function(number) { + return roundTo(number, places); + }; +} +function getset(model, channel, modifier) { + model = Array.isArray(model) ? model : [model]; + for (const m of model) { + (limiters[m] ||= [])[channel] = modifier; + } + model = model[0]; + return function(value) { + let result; + if (value !== void 0) { + if (modifier) { + value = modifier(value); + } + result = this[model](); + result.color[channel] = value; + return result; + } + result = this[model]().color[channel]; + if (modifier) { + result = modifier(result); + } + return result; + }; +} +function maxfn(max) { + return function(v) { + return Math.max(0, Math.min(max, v)); + }; +} +function assertArray(value) { + return Array.isArray(value) ? value : [value]; +} +function zeroArray(array, length) { + for (let i = 0; i < length; i++) { + if (typeof array[i] !== "number") { + array[i] = 0; + } + } + return array; +} +var index_default = Color; diff --git a/apps/api/.output/node_modules/@img/colour/index.cjs b/apps/api/.output/node_modules/@img/colour/index.cjs new file mode 100644 index 0000000..25596b2 --- /dev/null +++ b/apps/api/.output/node_modules/@img/colour/index.cjs @@ -0,0 +1 @@ +module.exports = require("./color.cjs").default; diff --git a/apps/api/.output/node_modules/@img/colour/index.d.ts b/apps/api/.output/node_modules/@img/colour/index.d.ts new file mode 100644 index 0000000..ca2461f --- /dev/null +++ b/apps/api/.output/node_modules/@img/colour/index.d.ts @@ -0,0 +1,929 @@ +// Generated by dts-bundle-generator v9.5.1 + +type Channels = number; +type RGB = [ + r: number, + g: number, + b: number +]; +type HSL = [ + h: number, + s: number, + l: number +]; +type HSV = [ + h: number, + s: number, + v: number +]; +type CMYK = [ + c: number, + m: number, + y: number, + k: number +]; +type LAB = [ + l: number, + a: number, + b: number +]; +type LCH = [ + l: number, + c: number, + h: number +]; +type HCG = [ + h: number, + c: number, + g: number +]; +type HWB = [ + h: number, + w: number, + b: number +]; +type XYZ = [ + x: number, + y: number, + z: number +]; +type Apple = [ + r16: number, + g16: number, + b16: number +]; +type Gray = [ + gray: number +]; +type ANSI16 = number; +type ANSI256 = number; +type Keyword = string; +type HEX = string; +declare namespace route { + type rgb = { + hsl(from: RGB): HSL; + hsl(...from: RGB): HSL; + hsl(from: RGB): HSL; + hsl(...from: RGB): HSL; + hsv(from: RGB): HSV; + hsv(...from: RGB): HSV; + hwb(from: RGB): HWB; + hwb(...from: RGB): HWB; + cmyk(from: RGB): CMYK; + cmyk(...from: RGB): CMYK; + xyz(from: RGB): XYZ; + xyz(...from: RGB): XYZ; + lab(from: RGB): LAB; + lab(...from: RGB): LAB; + lch(from: RGB): LCH; + lch(...from: RGB): LCH; + hex(from: RGB): HEX; + hex(...from: RGB): HEX; + keyword(from: RGB): Keyword; + keyword(...from: RGB): Keyword; + ansi16(from: RGB): ANSI16; + ansi16(...from: RGB): ANSI16; + ansi256(from: RGB): ANSI256; + ansi256(...from: RGB): ANSI256; + hcg(from: RGB): HCG; + hcg(...from: RGB): HCG; + apple(from: RGB): Apple; + apple(...from: RGB): Apple; + gray(from: RGB): Gray; + gray(...from: RGB): Gray; + }; + type hsl = { + rgb(from: HSL): RGB; + rgb(...from: HSL): RGB; + hsv(from: HSL): HSV; + hsv(...from: HSL): HSV; + hwb(from: HSL): HWB; + hwb(...from: HSL): HWB; + cmyk(from: HSL): CMYK; + cmyk(...from: HSL): CMYK; + xyz(from: HSL): XYZ; + xyz(...from: HSL): XYZ; + lab(from: HSL): LAB; + lab(...from: HSL): LAB; + lch(from: HSL): LCH; + lch(...from: HSL): LCH; + hex(from: HSL): HEX; + hex(...from: HSL): HEX; + keyword(from: HSL): Keyword; + keyword(...from: HSL): Keyword; + ansi16(from: HSL): ANSI16; + ansi16(...from: HSL): ANSI16; + ansi256(from: HSL): ANSI256; + ansi256(...from: HSL): ANSI256; + hcg(from: HSL): HCG; + hcg(...from: HSL): HCG; + apple(from: HSL): Apple; + apple(...from: HSL): Apple; + gray(from: HSL): Gray; + gray(...from: HSL): Gray; + }; + type hsv = { + rgb(from: HSV): RGB; + rgb(...from: HSV): RGB; + hsl(from: HSV): HSL; + hsl(...from: HSV): HSL; + hwb(from: HSV): HWB; + hwb(...from: HSV): HWB; + cmyk(from: HSV): CMYK; + cmyk(...from: HSV): CMYK; + xyz(from: HSV): XYZ; + xyz(...from: HSV): XYZ; + lab(from: HSV): LAB; + lab(...from: HSV): LAB; + lch(from: HSV): LCH; + lch(...from: HSV): LCH; + hex(from: HSV): HEX; + hex(...from: HSV): HEX; + keyword(from: HSV): Keyword; + keyword(...from: HSV): Keyword; + ansi16(from: HSV): ANSI16; + ansi16(...from: HSV): ANSI16; + ansi256(from: HSV): ANSI256; + ansi256(...from: HSV): ANSI256; + hcg(from: HSV): HCG; + hcg(...from: HSV): HCG; + apple(from: HSV): Apple; + apple(...from: HSV): Apple; + gray(from: HSV): Gray; + gray(...from: HSV): Gray; + }; + type hwb = { + rgb(from: HWB): RGB; + rgb(...from: HWB): RGB; + hsl(from: HWB): HSL; + hsl(...from: HWB): HSL; + hsv(from: HWB): HSV; + hsv(...from: HWB): HSV; + cmyk(from: HWB): CMYK; + cmyk(...from: HWB): CMYK; + xyz(from: HWB): XYZ; + xyz(...from: HWB): XYZ; + lab(from: HWB): LAB; + lab(...from: HWB): LAB; + lch(from: HWB): LCH; + lch(...from: HWB): LCH; + hex(from: HWB): HEX; + hex(...from: HWB): HEX; + keyword(from: HWB): Keyword; + keyword(...from: HWB): Keyword; + ansi16(from: HWB): ANSI16; + ansi16(...from: HWB): ANSI16; + ansi256(from: HWB): ANSI256; + ansi256(...from: HWB): ANSI256; + hcg(from: HWB): HCG; + hcg(...from: HWB): HCG; + apple(from: HWB): Apple; + apple(...from: HWB): Apple; + gray(from: HWB): Gray; + gray(...from: HWB): Gray; + }; + type cmyk = { + rgb(from: CMYK): RGB; + rgb(...from: CMYK): RGB; + hsl(from: CMYK): HSL; + hsl(...from: CMYK): HSL; + hsv(from: CMYK): HSV; + hsv(...from: CMYK): HSV; + hwb(from: CMYK): HWB; + hwb(...from: CMYK): HWB; + xyz(from: CMYK): XYZ; + xyz(...from: CMYK): XYZ; + lab(from: CMYK): LAB; + lab(...from: CMYK): LAB; + lch(from: CMYK): LCH; + lch(...from: CMYK): LCH; + hex(from: CMYK): HEX; + hex(...from: CMYK): HEX; + keyword(from: CMYK): Keyword; + keyword(...from: CMYK): Keyword; + ansi16(from: CMYK): ANSI16; + ansi16(...from: CMYK): ANSI16; + ansi256(from: CMYK): ANSI256; + ansi256(...from: CMYK): ANSI256; + hcg(from: CMYK): HCG; + hcg(...from: CMYK): HCG; + apple(from: CMYK): Apple; + apple(...from: CMYK): Apple; + gray(from: CMYK): Gray; + gray(...from: CMYK): Gray; + }; + type xyz = { + rgb(from: XYZ): RGB; + rgb(...from: XYZ): RGB; + hsl(from: XYZ): HSL; + hsl(...from: XYZ): HSL; + hsv(from: XYZ): HSV; + hsv(...from: XYZ): HSV; + hwb(from: XYZ): HWB; + hwb(...from: XYZ): HWB; + cmyk(from: XYZ): CMYK; + cmyk(...from: XYZ): CMYK; + lab(from: XYZ): LAB; + lab(...from: XYZ): LAB; + lch(from: XYZ): LCH; + lch(...from: XYZ): LCH; + hex(from: XYZ): HEX; + hex(...from: XYZ): HEX; + keyword(from: XYZ): Keyword; + keyword(...from: XYZ): Keyword; + ansi16(from: XYZ): ANSI16; + ansi16(...from: XYZ): ANSI16; + ansi256(from: XYZ): ANSI256; + ansi256(...from: XYZ): ANSI256; + hcg(from: XYZ): HCG; + hcg(...from: XYZ): HCG; + apple(from: XYZ): Apple; + apple(...from: XYZ): Apple; + gray(from: XYZ): Gray; + gray(...from: XYZ): Gray; + }; + type lab = { + rgb(from: LAB): RGB; + rgb(...from: LAB): RGB; + hsl(from: LAB): HSL; + hsl(...from: LAB): HSL; + hsv(from: LAB): HSV; + hsv(...from: LAB): HSV; + hwb(from: LAB): HWB; + hwb(...from: LAB): HWB; + cmyk(from: LAB): CMYK; + cmyk(...from: LAB): CMYK; + xyz(from: LAB): XYZ; + xyz(...from: LAB): XYZ; + lch(from: LAB): LCH; + lch(...from: LAB): LCH; + hex(from: LAB): HEX; + hex(...from: LAB): HEX; + keyword(from: LAB): Keyword; + keyword(...from: LAB): Keyword; + ansi16(from: LAB): ANSI16; + ansi16(...from: LAB): ANSI16; + ansi256(from: LAB): ANSI256; + ansi256(...from: LAB): ANSI256; + hcg(from: LAB): HCG; + hcg(...from: LAB): HCG; + apple(from: LAB): Apple; + apple(...from: LAB): Apple; + gray(from: LAB): Gray; + gray(...from: LAB): Gray; + }; + type lch = { + rgb(from: LCH): RGB; + rgb(...from: LCH): RGB; + hsl(from: LCH): HSL; + hsl(...from: LCH): HSL; + hsv(from: LCH): HSV; + hsv(...from: LCH): HSV; + hwb(from: LCH): HWB; + hwb(...from: LCH): HWB; + cmyk(from: LCH): CMYK; + cmyk(...from: LCH): CMYK; + xyz(from: LCH): XYZ; + xyz(...from: LCH): XYZ; + lab(from: LCH): LAB; + lab(...from: LCH): LAB; + hex(from: LCH): HEX; + hex(...from: LCH): HEX; + keyword(from: LCH): Keyword; + keyword(...from: LCH): Keyword; + ansi16(from: LCH): ANSI16; + ansi16(...from: LCH): ANSI16; + ansi256(from: LCH): ANSI256; + ansi256(...from: LCH): ANSI256; + hcg(from: LCH): HCG; + hcg(...from: LCH): HCG; + apple(from: LCH): Apple; + apple(...from: LCH): Apple; + gray(from: LCH): Gray; + gray(...from: LCH): Gray; + }; + type hex = { + rgb(from: HEX): RGB; + hsl(from: HEX): HSL; + hsv(from: HEX): HSV; + hwb(from: HEX): HWB; + cmyk(from: HEX): CMYK; + xyz(from: HEX): XYZ; + lab(from: HEX): LAB; + lch(from: HEX): LCH; + keyword(from: HEX): Keyword; + ansi16(from: HEX): ANSI16; + ansi256(from: HEX): ANSI256; + hcg(from: HEX): HCG; + apple(from: HEX): Apple; + gray(from: HEX): Gray; + }; + type keyword = { + rgb(from: Keyword): RGB; + hsl(from: Keyword): HSL; + hsv(from: Keyword): HSV; + hwb(from: Keyword): HWB; + cmyk(from: Keyword): CMYK; + xyz(from: Keyword): XYZ; + lab(from: Keyword): LAB; + lch(from: Keyword): LCH; + hex(from: Keyword): HEX; + ansi16(from: Keyword): ANSI16; + ansi256(from: Keyword): ANSI256; + hcg(from: Keyword): HCG; + apple(from: Keyword): Apple; + gray(from: Keyword): Gray; + }; + type ansi16 = { + rgb(from: ANSI16): RGB; + hsl(from: ANSI16): HSL; + hsv(from: ANSI16): HSV; + hwb(from: ANSI16): HWB; + cmyk(from: ANSI16): CMYK; + xyz(from: ANSI16): XYZ; + lab(from: ANSI16): LAB; + lch(from: ANSI16): LCH; + hex(from: ANSI16): HEX; + keyword(from: ANSI16): Keyword; + ansi256(from: ANSI16): ANSI256; + hcg(from: ANSI16): HCG; + apple(from: ANSI16): Apple; + gray(from: ANSI16): Gray; + }; + type ansi256 = { + rgb(from: ANSI256): RGB; + hsl(from: ANSI256): HSL; + hsv(from: ANSI256): HSV; + hwb(from: ANSI256): HWB; + cmyk(from: ANSI256): CMYK; + xyz(from: ANSI256): XYZ; + lab(from: ANSI256): LAB; + lch(from: ANSI256): LCH; + hex(from: ANSI256): HEX; + keyword(from: ANSI256): Keyword; + ansi16(from: ANSI256): ANSI16; + hcg(from: ANSI256): HCG; + apple(from: ANSI256): Apple; + gray(from: ANSI256): Gray; + }; + type hcg = { + rgb(from: HCG): RGB; + rgb(...from: HCG): RGB; + hsl(from: HCG): HSL; + hsl(...from: HCG): HSL; + hsv(from: HCG): HSV; + hsv(...from: HCG): HSV; + hwb(from: HCG): HWB; + hwb(...from: HCG): HWB; + cmyk(from: HCG): CMYK; + cmyk(...from: HCG): CMYK; + xyz(from: HCG): XYZ; + xyz(...from: HCG): XYZ; + lab(from: HCG): LAB; + lab(...from: HCG): LAB; + lch(from: HCG): LCH; + lch(...from: HCG): LCH; + hex(from: HCG): HEX; + hex(...from: HCG): HEX; + keyword(from: HCG): Keyword; + keyword(...from: HCG): Keyword; + ansi16(from: HCG): ANSI16; + ansi16(...from: HCG): ANSI16; + ansi256(from: HCG): ANSI256; + ansi256(...from: HCG): ANSI256; + apple(from: HCG): Apple; + apple(...from: HCG): Apple; + gray(from: HCG): Gray; + gray(...from: HCG): Gray; + }; + type apple = { + rgb(from: Apple): RGB; + rgb(...from: Apple): RGB; + hsl(from: Apple): HSL; + hsl(...from: Apple): HSL; + hsv(from: Apple): HSV; + hsv(...from: Apple): HSV; + hwb(from: Apple): HWB; + hwb(...from: Apple): HWB; + cmyk(from: Apple): CMYK; + cmyk(...from: Apple): CMYK; + xyz(from: Apple): XYZ; + xyz(...from: Apple): XYZ; + lab(from: Apple): LAB; + lab(...from: Apple): LAB; + lch(from: Apple): LCH; + lch(...from: Apple): LCH; + hex(from: Apple): HEX; + hex(...from: Apple): HEX; + keyword(from: Apple): Keyword; + keyword(...from: Apple): Keyword; + ansi16(from: Apple): ANSI16; + ansi16(...from: Apple): ANSI16; + ansi256(from: Apple): ANSI256; + ansi256(...from: Apple): ANSI256; + hcg(from: Apple): HCG; + hcg(...from: Apple): HCG; + gray(from: Apple): Gray; + gray(...from: Apple): Gray; + }; + type gray = { + rgb(from: Gray): RGB; + rgb(...from: Gray): RGB; + hsl(from: Gray): HSL; + hsl(...from: Gray): HSL; + hsv(from: Gray): HSV; + hsv(...from: Gray): HSV; + hwb(from: Gray): HWB; + hwb(...from: Gray): HWB; + cmyk(from: Gray): CMYK; + cmyk(...from: Gray): CMYK; + xyz(from: Gray): XYZ; + xyz(...from: Gray): XYZ; + lab(from: Gray): LAB; + lab(...from: Gray): LAB; + lch(from: Gray): LCH; + lch(...from: Gray): LCH; + hex(from: Gray): HEX; + hex(...from: Gray): HEX; + keyword(from: Gray): Keyword; + keyword(...from: Gray): Keyword; + ansi16(from: Gray): ANSI16; + ansi16(...from: Gray): ANSI16; + ansi256(from: Gray): ANSI256; + ansi256(...from: Gray): ANSI256; + hcg(from: Gray): HCG; + hcg(...from: Gray): HCG; + apple(from: Gray): Apple; + apple(...from: Gray): Apple; + }; +} +declare function route(fromModel: "rgb"): route.rgb; +declare function route(fromModel: "hsl"): route.hsl; +declare function route(fromModel: "hsv"): route.hsv; +declare function route(fromModel: "hwb"): route.hwb; +declare function route(fromModel: "cmyk"): route.cmyk; +declare function route(fromModel: "xyz"): route.xyz; +declare function route(fromModel: "lab"): route.lab; +declare function route(fromModel: "lch"): route.lch; +declare function route(fromModel: "hex"): route.hex; +declare function route(fromModel: "keyword"): route.keyword; +declare function route(fromModel: "ansi16"): route.ansi16; +declare function route(fromModel: "ansi256"): route.ansi256; +declare function route(fromModel: "hcg"): route.hcg; +declare function route(fromModel: "apple"): route.apple; +declare function route(fromModel: "gray"): route.gray; +type Convert = { + rgb: { + channels: Channels; + labels: "rgb"; + hsl: { + (...rgb: RGB): HSL; + raw: (...rgb: RGB) => HSL; + }; + hsv: { + (...rgb: RGB): HSV; + raw: (...rgb: RGB) => HSV; + }; + hwb: { + (...rgb: RGB): HWB; + raw: (...rgb: RGB) => HWB; + }; + hcg: { + (...rgb: RGB): HCG; + raw: (...rgb: RGB) => HCG; + }; + cmyk: { + (...rgb: RGB): CMYK; + raw: (...rgb: RGB) => CMYK; + }; + keyword: { + (...rgb: RGB): Keyword; + raw: (...rgb: RGB) => Keyword; + }; + ansi16: { + (...rgb: RGB): ANSI16; + raw: (...rgb: RGB) => ANSI16; + }; + ansi256: { + (...rgb: RGB): ANSI256; + raw: (...rgb: RGB) => ANSI256; + }; + apple: { + (...rgb: RGB): Apple; + raw: (...rgb: RGB) => Apple; + }; + hex: { + (...rgb: RGB): HEX; + raw: (...rgb: RGB) => HEX; + }; + gray: { + (...rgb: RGB): Gray; + raw: (...rgb: RGB) => Gray; + }; + } & route.rgb & { + [F in keyof route.rgb]: { + raw: route.rgb[F]; + }; + }; + keyword: { + channels: Channels; + rgb: { + (keyword: Keyword): RGB; + raw: (keyword: Keyword) => RGB; + }; + } & route.keyword & { + [F in keyof route.keyword]: { + raw: route.keyword[F]; + }; + }; + hsl: { + channels: Channels; + labels: "hsl"; + rgb: { + (...hsl: HSL): RGB; + raw: (...hsl: HSL) => RGB; + }; + hsv: { + (...hsl: HSL): HSV; + raw: (...hsl: HSL) => HSV; + }; + hcg: { + (...hsl: HSL): HCG; + raw: (...hsl: HSL) => HCG; + }; + } & route.hsl & { + [F in keyof route.hsl]: { + raw: route.hsl[F]; + }; + }; + hsv: { + channels: Channels; + labels: "hsv"; + hcg: { + (...hsv: HSV): HCG; + raw: (...hsv: HSV) => HCG; + }; + rgb: { + (...hsv: HSV): RGB; + raw: (...hsv: HSV) => RGB; + }; + hsv: { + (...hsv: HSV): HSV; + raw: (...hsv: HSV) => HSV; + }; + hsl: { + (...hsv: HSV): HSL; + raw: (...hsv: HSV) => HSL; + }; + hwb: { + (...hsv: HSV): HWB; + raw: (...hsv: HSV) => HWB; + }; + ansi16: { + (...hsv: HSV): ANSI16; + raw: (...hsv: HSV) => ANSI16; + }; + } & route.hsv & { + [F in keyof route.hsv]: { + raw: route.hsv[F]; + }; + }; + hwb: { + channels: Channels; + labels: "hwb"; + hcg: { + (...hwb: HWB): HCG; + raw: (...hwb: HWB) => HCG; + }; + rgb: { + (...hwb: HWB): RGB; + raw: (...hwb: HWB) => RGB; + }; + } & route.hwb & { + [F in keyof route.hwb]: { + raw: route.hwb[F]; + }; + }; + cmyk: { + channels: Channels; + labels: "cmyk"; + rgb: { + (...cmyk: CMYK): RGB; + raw: (...cmyk: CMYK) => RGB; + }; + } & route.cmyk & { + [F in keyof route.cmyk]: { + raw: route.cmyk[F]; + }; + }; + xyz: { + channels: Channels; + labels: "xyz"; + rgb: { + (...xyz: XYZ): RGB; + raw: (...xyz: XYZ) => RGB; + }; + lab: { + (...xyz: XYZ): LAB; + raw: (...xyz: XYZ) => LAB; + }; + } & route.xyz & { + [F in keyof route.xyz]: { + raw: route.xyz[F]; + }; + }; + lab: { + channels: Channels; + labels: "lab"; + xyz: { + (...lab: LAB): XYZ; + raw: (...lab: LAB) => XYZ; + }; + lch: { + (...lab: LAB): LCH; + raw: (...lab: LAB) => LCH; + }; + } & route.lab & { + [F in keyof route.lab]: { + raw: route.lab[F]; + }; + }; + lch: { + channels: Channels; + labels: "lch"; + lab: { + (...lch: LCH): LAB; + raw: (...lch: LCH) => LAB; + }; + } & route.lch & { + [F in keyof route.lch]: { + raw: route.lch[F]; + }; + }; + hex: { + channels: Channels; + labels: [ + "hex" + ]; + rgb: { + (hex: HEX): RGB; + raw: (hex: HEX) => RGB; + }; + } & route.hex & { + [F in keyof route.hex]: { + raw: route.hex[F]; + }; + }; + ansi16: { + channels: Channels; + labels: [ + "ansi16" + ]; + rgb: { + (ansi16: ANSI16): RGB; + raw: (ansi16: ANSI16) => RGB; + }; + } & route.ansi16 & { + [F in keyof route.ansi16]: { + raw: route.ansi16[F]; + }; + }; + ansi256: { + channels: Channels; + labels: [ + "ansi256" + ]; + rgb: { + (ansi256: ANSI256): RGB; + raw: (ansi256: ANSI256) => RGB; + }; + } & route.ansi256 & { + [F in keyof route.ansi256]: { + raw: route.ansi256[F]; + }; + }; + hcg: { + channels: Channels; + labels: [ + "h", + "c", + "g" + ]; + rgb: { + (...hcg: HCG): RGB; + raw: (...hcg: HCG) => RGB; + }; + hsv: { + (...hcg: HCG): HSV; + raw: (...hcg: HCG) => HSV; + }; + hwb: { + (...hcg: HCG): HWB; + raw: (...hcg: HCG) => HWB; + }; + } & route.hcg & { + [F in keyof route.hcg]: { + raw: route.hcg[F]; + }; + }; + apple: { + channels: Channels; + labels: [ + "r16", + "g16", + "b16" + ]; + rgb: { + (...apple: Apple): RGB; + raw: (...apple: Apple) => RGB; + }; + } & route.apple & { + [F in keyof route.apple]: { + raw: route.apple[F]; + }; + }; + gray: { + channels: Channels; + labels: [ + "gray" + ]; + rgb: { + (...gray: Gray): RGB; + raw: (...gray: Gray) => RGB; + }; + hsl: { + (...gray: Gray): HSL; + raw: (...gray: Gray) => HSL; + }; + hsv: { + (...gray: Gray): HSV; + raw: (...gray: Gray) => HSV; + }; + hwb: { + (...gray: Gray): HWB; + raw: (...gray: Gray) => HWB; + }; + cmyk: { + (...gray: Gray): CMYK; + raw: (...gray: Gray) => CMYK; + }; + lab: { + (...gray: Gray): LAB; + raw: (...gray: Gray) => LAB; + }; + hex: { + (...gray: Gray): HEX; + raw: (...gray: Gray) => HEX; + }; + } & route.gray & { + [F in keyof route.gray]: { + raw: route.gray[F]; + }; + }; +}; +declare const convert: Convert; +export type ColorLike = ColorInstance | string | ArrayLike | number | Record; +export type ColorJson = { + model: string; + color: number[]; + valpha: number; +}; +export type ColorObject = { + alpha?: number | undefined; +} & Record; +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export interface ColorInstance { + toString(): string; + // eslint-disable-next-line @typescript-eslint/naming-convention + toJSON(): ColorJson; + string(places?: number): string; + percentString(places?: number): string; + array(): number[]; + object(): ColorObject; + unitArray(): number[]; + unitObject(): { + r: number; + g: number; + b: number; + alpha?: number | undefined; + }; + round(places?: number): ColorInstance; + alpha(): number; + alpha(value: number): ColorInstance; + red(): number; + red(value: number): ColorInstance; + green(): number; + green(value: number): ColorInstance; + blue(): number; + blue(value: number): ColorInstance; + hue(): number; + hue(value: number): ColorInstance; + saturationl(): number; + saturationl(value: number): ColorInstance; + lightness(): number; + lightness(value: number): ColorInstance; + saturationv(): number; + saturationv(value: number): ColorInstance; + value(): number; + value(value: number): ColorInstance; + chroma(): number; + chroma(value: number): ColorInstance; + gray(): number; + gray(value: number): ColorInstance; + white(): number; + white(value: number): ColorInstance; + wblack(): number; + wblack(value: number): ColorInstance; + cyan(): number; + cyan(value: number): ColorInstance; + magenta(): number; + magenta(value: number): ColorInstance; + yellow(): number; + yellow(value: number): ColorInstance; + black(): number; + black(value: number): ColorInstance; + x(): number; + x(value: number): ColorInstance; + y(): number; + y(value: number): ColorInstance; + z(): number; + z(value: number): ColorInstance; + l(): number; + l(value: number): ColorInstance; + a(): number; + a(value: number): ColorInstance; + b(): number; + b(value: number): ColorInstance; + keyword(): string; + keyword(value: V): ColorInstance; + hex(): string; + hex(value: V): ColorInstance; + hexa(): string; + hexa(value: V): ColorInstance; + rgbNumber(): number; + luminosity(): number; + contrast(color2: ColorInstance): number; + level(color2: ColorInstance): "AAA" | "AA" | ""; + isDark(): boolean; + isLight(): boolean; + negate(): ColorInstance; + lighten(ratio: number): ColorInstance; + darken(ratio: number): ColorInstance; + saturate(ratio: number): ColorInstance; + desaturate(ratio: number): ColorInstance; + whiten(ratio: number): ColorInstance; + blacken(ratio: number): ColorInstance; + grayscale(): ColorInstance; + fade(ratio: number): ColorInstance; + opaquer(ratio: number): ColorInstance; + rotate(degrees: number): ColorInstance; + mix(mixinColor: ColorInstance, weight?: number): ColorInstance; + rgb(...arguments_: number[]): ColorInstance; + hsl(...arguments_: number[]): ColorInstance; + hsv(...arguments_: number[]): ColorInstance; + hwb(...arguments_: number[]): ColorInstance; + cmyk(...arguments_: number[]): ColorInstance; + xyz(...arguments_: number[]): ColorInstance; + lab(...arguments_: number[]): ColorInstance; + lch(...arguments_: number[]): ColorInstance; + ansi16(...arguments_: number[]): ColorInstance; + ansi256(...arguments_: number[]): ColorInstance; + hcg(...arguments_: number[]): ColorInstance; + apple(...arguments_: number[]): ColorInstance; +} +export type ColorConstructor = { + (object?: ColorLike, model?: keyof (typeof convert)): ColorInstance; + new (object?: ColorLike, model?: keyof (typeof convert)): ColorInstance; + rgb(...value: number[]): ColorInstance; + rgb(color: ColorLike): ColorInstance; + hsl(...value: number[]): ColorInstance; + hsl(color: ColorLike): ColorInstance; + hsv(...value: number[]): ColorInstance; + hsv(color: ColorLike): ColorInstance; + hwb(...value: number[]): ColorInstance; + hwb(color: ColorLike): ColorInstance; + cmyk(...value: number[]): ColorInstance; + cmyk(color: ColorLike): ColorInstance; + xyz(...value: number[]): ColorInstance; + xyz(color: ColorLike): ColorInstance; + lab(...value: number[]): ColorInstance; + lab(color: ColorLike): ColorInstance; + lch(...value: number[]): ColorInstance; + lch(color: ColorLike): ColorInstance; + ansi16(...value: number[]): ColorInstance; + ansi16(color: ColorLike): ColorInstance; + ansi256(...value: number[]): ColorInstance; + ansi256(color: ColorLike): ColorInstance; + hcg(...value: number[]): ColorInstance; + hcg(color: ColorLike): ColorInstance; + apple(...value: number[]): ColorInstance; + apple(color: ColorLike): ColorInstance; +}; +// eslint-disable-next-line @typescript-eslint/naming-convention +declare const Color: ColorConstructor; + +export { + Color as default, +}; + +export {}; diff --git a/apps/api/.output/node_modules/@img/colour/package.json b/apps/api/.output/node_modules/@img/colour/package.json new file mode 100644 index 0000000..38887d1 --- /dev/null +++ b/apps/api/.output/node_modules/@img/colour/package.json @@ -0,0 +1,58 @@ +{ + "name": "@img/colour", + "version": "1.1.0", + "description": "The ESM-only 'color' package made compatible for use with CommonJS runtimes", + "license": "MIT", + "main": "index.cjs", + "types": "index.d.ts", + "exports": { + ".": { + "types": "./index.d.ts", + "require": "./index.cjs", + "default": "./index.cjs" + }, + "./package.json": "./package.json" + }, + "authors": [ + "Heather Arthur ", + "Josh Junon ", + "Maxime Thirouin", + "Dyma Ywanov ", + "LitoMore (https://github.com/LitoMore)" + ], + "engines": { + "node": ">=18" + }, + "files": [ + "color.cjs", + "index.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lovell/colour.git" + }, + "type": "commonjs", + "keywords": [ + "color", + "colour", + "cjs", + "commonjs" + ], + "scripts": { + "build:cjs": "esbuild node_modules/color/index.js --bundle --platform=node --outfile=color.cjs", + "build:dts": "dts-bundle-generator ./dts-src.ts -o index.d.ts --project tsconfig.build.json --external-inlines color --external-inlines color-convert --export-referenced-types=false", + "build": "npm run build:cjs && npm run build:dts", + "test": "node --test" + }, + "devDependencies": { + "color": "5.0.3", + "color-convert": "3.1.3", + "color-name": "2.1.0", + "color-string": "2.1.4", + "dts-bundle-generator": "^9.5.1", + "esbuild": "^0.27.3" + } +} diff --git a/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md new file mode 100644 index 0000000..df8cd0e --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md @@ -0,0 +1,46 @@ +# `@img/sharp-libvips-linuxmusl-x64` + +Prebuilt libvips and dependencies for use with sharp on Linux (musl) x64. + +## Licensing + +This software contains third-party libraries +used under the terms of the following licenses: + +| Library | Used under the terms of | +|---------------|-----------------------------------------------------------------------------------------------------------| +| aom | BSD 2-Clause + [Alliance for Open Media Patent License 1.0](https://aomedia.org/license/patent-license/) | +| cairo | Mozilla Public License 1.1 | +| cgif | MIT License | +| expat | MIT License | +| fontconfig | [fontconfig License](https://gitlab.freedesktop.org/fontconfig/fontconfig/blob/main/COPYING) (BSD-like) | +| freetype | [freetype License](https://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT) (BSD-like) | +| fribidi | LGPLv3 | +| glib | LGPLv3 | +| harfbuzz | MIT License | +| highway | BSD 3-Clause | +| lcms | MIT License | +| libarchive | BSD 2-Clause | +| libexif | LGPLv3 | +| libffi | MIT License | +| libheif | LGPLv3 | +| libimagequant | [BSD 2-Clause](https://github.com/lovell/libimagequant/blob/main/COPYRIGHT) | +| libnsgif | MIT License | +| libpng | [libpng License](https://github.com/pnggroup/libpng/blob/master/LICENSE) | +| librsvg | LGPLv3 | +| libtiff | [libtiff License](https://gitlab.com/libtiff/libtiff/blob/master/LICENSE.md) (BSD-like) | +| libultrahdr | MIT License | +| libvips | LGPLv3 | +| libwebp | New BSD License | +| libxml2 | MIT License | +| mozjpeg | [zlib License, IJG License, BSD 3-Clause](https://github.com/mozilla/mozjpeg/blob/master/LICENSE.md) | +| pango | LGPLv3 | +| pixman | MIT License | +| proxy-libintl | LGPLv3 | +| zlib-ng | [zlib License](https://github.com/zlib-ng/zlib-ng/blob/develop/LICENSE.md) | + +Use of libraries under the terms of the LGPLv3 is via the +"any later version" clause of the LGPLv2 or LGPLv2.1. + +Please report any errors or omissions via +https://github.com/lovell/sharp-libvips/issues/new diff --git a/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h new file mode 100644 index 0000000..0c049d4 --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h @@ -0,0 +1,219 @@ +/* glibconfig.h + * + * This is a generated file. Please modify 'glibconfig.h.in' + */ + +#ifndef __GLIBCONFIG_H__ +#define __GLIBCONFIG_H__ + +#include + +#include +#include +#define GLIB_HAVE_ALLOCA_H + +#define GLIB_STATIC_COMPILATION 1 +#define GOBJECT_STATIC_COMPILATION 1 +#define GIO_STATIC_COMPILATION 1 +#define GMODULE_STATIC_COMPILATION 1 +#define GI_STATIC_COMPILATION 1 + +/* Specifies that GLib's g_print*() functions wrap the + * system printf functions. This is useful to know, for example, + * when using glibc's register_printf_function(). + */ +#define GLIB_USING_SYSTEM_PRINTF + +G_BEGIN_DECLS + +#define G_MINFLOAT FLT_MIN +#define G_MAXFLOAT FLT_MAX +#define G_MINDOUBLE DBL_MIN +#define G_MAXDOUBLE DBL_MAX +#define G_MINSHORT SHRT_MIN +#define G_MAXSHORT SHRT_MAX +#define G_MAXUSHORT USHRT_MAX +#define G_MININT INT_MIN +#define G_MAXINT INT_MAX +#define G_MAXUINT UINT_MAX +#define G_MINLONG LONG_MIN +#define G_MAXLONG LONG_MAX +#define G_MAXULONG ULONG_MAX + +typedef signed char gint8; +typedef unsigned char guint8; + +typedef signed short gint16; +typedef unsigned short guint16; + +#define G_GINT16_MODIFIER "h" +#define G_GINT16_FORMAT "hi" +#define G_GUINT16_FORMAT "hu" + + +typedef signed int gint32; +typedef unsigned int guint32; + +#define G_GINT32_MODIFIER "" +#define G_GINT32_FORMAT "i" +#define G_GUINT32_FORMAT "u" + + +#define G_HAVE_GINT64 1 /* deprecated, always true */ + +typedef signed long gint64; +typedef unsigned long guint64; + +#define G_GINT64_CONSTANT(val) (val##L) +#define G_GUINT64_CONSTANT(val) (val##UL) + +#define G_GINT64_MODIFIER "l" +#define G_GINT64_FORMAT "li" +#define G_GUINT64_FORMAT "lu" + + +#define GLIB_SIZEOF_VOID_P 8 +#define GLIB_SIZEOF_LONG 8 +#define GLIB_SIZEOF_SIZE_T 8 +#define GLIB_SIZEOF_SSIZE_T 8 + +typedef signed long gssize; +typedef unsigned long gsize; +#define G_GSIZE_MODIFIER "l" +#define G_GSSIZE_MODIFIER "l" +#define G_GSIZE_FORMAT "lu" +#define G_GSSIZE_FORMAT "li" + +#define G_MAXSIZE G_MAXULONG +#define G_MINSSIZE G_MINLONG +#define G_MAXSSIZE G_MAXLONG + +typedef gint64 goffset; +#define G_MINOFFSET G_MININT64 +#define G_MAXOFFSET G_MAXINT64 + +#define G_GOFFSET_MODIFIER G_GINT64_MODIFIER +#define G_GOFFSET_FORMAT G_GINT64_FORMAT +#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val) + +#define G_POLLFD_FORMAT "%d" + +#define GPOINTER_TO_INT(p) ((gint) (glong) (p)) +#define GPOINTER_TO_UINT(p) ((guint) (gulong) (p)) + +#define GINT_TO_POINTER(i) ((gpointer) (glong) (i)) +#define GUINT_TO_POINTER(u) ((gpointer) (gulong) (u)) + +typedef signed long gintptr; +typedef unsigned long guintptr; + +#define G_GINTPTR_MODIFIER "l" +#define G_GINTPTR_FORMAT "li" +#define G_GUINTPTR_FORMAT "lu" + +#define GLIB_MAJOR_VERSION 2 +#define GLIB_MINOR_VERSION 90 +#define GLIB_MICRO_VERSION 0 + +#define G_OS_UNIX + +#define G_VA_COPY va_copy + +#define G_VA_COPY_AS_ARRAY 1 + +#define G_HAVE_ISO_VARARGS 1 + +/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi + * is passed ISO vararg support is turned off, and there is no work + * around to turn it on, so we unconditionally turn it off. + */ +#if __GNUC__ == 2 && __GNUC_MINOR__ == 95 +# undef G_HAVE_ISO_VARARGS +#endif + +#define G_HAVE_GROWING_STACK 0 + +#ifndef _MSC_VER +# define G_HAVE_GNUC_VARARGS 1 +#endif + +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define G_GNUC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define G_GNUC_INTERNAL __hidden +#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY) +#define G_GNUC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define G_GNUC_INTERNAL +#endif + +#define G_THREADS_ENABLED +#define G_THREADS_IMPL_POSIX + +#define G_ATOMIC_LOCK_FREE + +#define GINT16_TO_LE(val) ((gint16) (val)) +#define GUINT16_TO_LE(val) ((guint16) (val)) +#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val)) +#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val)) + +#define GINT32_TO_LE(val) ((gint32) (val)) +#define GUINT32_TO_LE(val) ((guint32) (val)) +#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val)) +#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val)) + +#define GINT64_TO_LE(val) ((gint64) (val)) +#define GUINT64_TO_LE(val) ((guint64) (val)) +#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val)) +#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val)) + +#define GLONG_TO_LE(val) ((glong) GINT64_TO_LE (val)) +#define GULONG_TO_LE(val) ((gulong) GUINT64_TO_LE (val)) +#define GLONG_TO_BE(val) ((glong) GINT64_TO_BE (val)) +#define GULONG_TO_BE(val) ((gulong) GUINT64_TO_BE (val)) +#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val)) +#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val)) +#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val)) +#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val)) +#define GSIZE_TO_LE(val) ((gsize) GUINT64_TO_LE (val)) +#define GSSIZE_TO_LE(val) ((gssize) GINT64_TO_LE (val)) +#define GSIZE_TO_BE(val) ((gsize) GUINT64_TO_BE (val)) +#define GSSIZE_TO_BE(val) ((gssize) GINT64_TO_BE (val)) +#define G_BYTE_ORDER G_LITTLE_ENDIAN + +#define GLIB_SYSDEF_POLLIN =1 +#define GLIB_SYSDEF_POLLOUT =4 +#define GLIB_SYSDEF_POLLPRI =2 +#define GLIB_SYSDEF_POLLHUP =16 +#define GLIB_SYSDEF_POLLERR =8 +#define GLIB_SYSDEF_POLLNVAL =32 + +/* No way to disable deprecation warnings for macros, so only emit deprecation + * warnings on platforms where usage of this macro is broken */ +#if defined(__APPLE__) || defined(_MSC_VER) || defined(__CYGWIN__) +#define G_MODULE_SUFFIX "so" GLIB_DEPRECATED_MACRO_IN_2_76 +#else +#define G_MODULE_SUFFIX "so" +#endif + +typedef int GPid; +#define G_PID_FORMAT "i" + +#define GLIB_SYSDEF_AF_UNIX 1 +#define GLIB_SYSDEF_AF_INET 2 +#define GLIB_SYSDEF_AF_INET6 10 + +#define GLIB_SYSDEF_MSG_OOB 1 +#define GLIB_SYSDEF_MSG_PEEK 2 +#define GLIB_SYSDEF_MSG_DONTROUTE 4 + +#define G_DIR_SEPARATOR '/' +#define G_DIR_SEPARATOR_S "/" +#define G_SEARCHPATH_SEPARATOR ':' +#define G_SEARCHPATH_SEPARATOR_S ":" + +#undef G_HAVE_FREE_SIZED + +G_END_DECLS + +#endif /* __GLIBCONFIG_H__ */ diff --git a/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js new file mode 100644 index 0000000..5092b4d --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js @@ -0,0 +1 @@ +module.exports = __dirname; diff --git a/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.18.7 b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.18.7 new file mode 100644 index 0000000..dad50d3 Binary files /dev/null and b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.18.7 differ diff --git a/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json new file mode 100644 index 0000000..6a9db79 --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json @@ -0,0 +1,43 @@ +{ + "name": "@img/sharp-libvips-linuxmusl-x64", + "version": "1.3.4", + "description": "Prebuilt libvips and dependencies for use with sharp on Linux (musl) x64", + "author": "Lovell Fuller ", + "homepage": "https://sharp.pixelplumbing.com", + "repository": { + "type": "git", + "url": "git+https://github.com/lovell/sharp-libvips.git", + "directory": "npm/linuxmusl-x64" + }, + "license": "LGPL-3.0-or-later", + "funding": { + "url": "https://opencollective.com/libvips" + }, + "preferUnplugged": true, + "publishConfig": { + "access": "public" + }, + "files": [ + "lib", + "versions.json" + ], + "type": "commonjs", + "exports": { + "./lib": "./lib/index.js", + "./package": "./package.json", + "./versions": "./versions.json", + "./binary": "./lib/libvips-cpp.so.8.18.7" + }, + "config": { + "musl": ">=1.2.5" + }, + "os": [ + "linux" + ], + "libc": [ + "musl" + ], + "cpu": [ + "x64" + ] +} diff --git a/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json new file mode 100644 index 0000000..2f8fea6 --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json @@ -0,0 +1,30 @@ +{ + "aom": "3.15.1", + "archive": "3.8.9", + "cairo": "1.18.6", + "cgif": "0.5.4", + "exif": "0.6.26", + "expat": "2.8.5", + "ffi": "3.8.0", + "fontconfig": "2.18.3", + "freetype": "2.14.3", + "fribidi": "1.0.17", + "glib": "2.90.0", + "harfbuzz": "14.5.0", + "heif": "1.23.5", + "highway": "1.4.0", + "imagequant": "2.4.1", + "lcms": "2.19.1", + "mozjpeg": "0826579", + "pango": "1.58.2", + "pixman": "0.46.4", + "png": "1.6.58", + "proxy-libintl": "0.5", + "rsvg": "2.63.2", + "tiff": "4.7.2", + "uhdr": "2.0.2", + "vips": "8.18.7", + "webp": "1.6.0", + "xml2": "2.15.4", + "zlib-ng": "2.3.3" +} \ No newline at end of file diff --git a/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/LICENSE b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/README.md b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/README.md new file mode 100644 index 0000000..f651f98 --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/README.md @@ -0,0 +1,18 @@ +# `@img/sharp-linuxmusl-x64` + +Prebuilt sharp for use with Linux (musl) x64. + +## Licensing + +Copyright 2013 Lovell Fuller and others. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/index.cjs b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/index.cjs new file mode 100644 index 0000000..0c762ae --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/index.cjs @@ -0,0 +1,2 @@ +try { require.resolve('@img/sharp-libvips-linuxmusl-x64/binary'); } catch {} +module.exports = require('./lib/sharp-linuxmusl-x64-0.35.5.node'); \ No newline at end of file diff --git a/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64-0.35.5.node b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64-0.35.5.node new file mode 100644 index 0000000..176677b Binary files /dev/null and b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64-0.35.5.node differ diff --git a/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/package.json b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/package.json new file mode 100644 index 0000000..6e2b9c9 --- /dev/null +++ b/apps/api/.output/node_modules/@img/sharp-linuxmusl-x64/package.json @@ -0,0 +1,47 @@ +{ + "name": "@img/sharp-linuxmusl-x64", + "version": "0.35.5", + "description": "Prebuilt sharp for use with Linux (musl) x64", + "author": "Lovell Fuller ", + "homepage": "https://sharp.pixelplumbing.com", + "repository": { + "type": "git", + "url": "git+https://github.com/lovell/sharp.git", + "directory": "npm/linuxmusl-x64" + }, + "license": "Apache-2.0", + "funding": { + "url": "https://opencollective.com/libvips" + }, + "preferUnplugged": true, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" + }, + "files": [ + "index.cjs", + "lib" + ], + "publishConfig": { + "access": "public" + }, + "type": "commonjs", + "exports": { + "./sharp.node": "./index.cjs", + "./package": "./package.json" + }, + "engines": { + "node": ">=20.9.0" + }, + "config": { + "musl": ">=1.2.5" + }, + "os": [ + "linux" + ], + "libc": [ + "musl" + ], + "cpu": [ + "x64" + ] +} diff --git a/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/README.md b/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/README.md new file mode 100644 index 0000000..3786de0 --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/README.md @@ -0,0 +1,3 @@ +# `@node-rs/argon2-linux-x64-musl` + +This is the **x86_64-unknown-linux-musl** binary for `@node-rs/argon2` diff --git a/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/argon2.linux-x64-musl.node b/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/argon2.linux-x64-musl.node new file mode 100644 index 0000000..0606227 Binary files /dev/null and b/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/argon2.linux-x64-musl.node differ diff --git a/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/package.json b/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/package.json new file mode 100644 index 0000000..9a7465e --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2-linux-x64-musl/package.json @@ -0,0 +1,42 @@ +{ + "name": "@node-rs/argon2-linux-x64-musl", + "version": "2.2.2", + "cpu": [ + "x64" + ], + "main": "argon2.linux-x64-musl.node", + "files": [ + "argon2.linux-x64-musl.node" + ], + "description": "argon2-rust binding for Node.js", + "keywords": [ + "argon2", + "argon2-password", + "crypto", + "encryption", + "hash", + "hashing", + "password", + "secure", + "verify" + ], + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "os": [ + "linux" + ], + "libc": [ + "musl" + ] +} diff --git a/apps/api/.output/node_modules/@node-rs/argon2/LICENSE b/apps/api/.output/node_modules/@node-rs/argon2/LICENSE new file mode 100644 index 0000000..6404653 --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-present LongYinan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/api/.output/node_modules/@node-rs/argon2/README.md b/apps/api/.output/node_modules/@node-rs/argon2/README.md new file mode 100644 index 0000000..e15c0ac --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2/README.md @@ -0,0 +1,166 @@ +# `@node-rs/argon2` + +![](https://github.com/napi-rs/node-rs/workflows/CI/badge.svg) +![](https://img.shields.io/npm/dm/@node-rs/argon2.svg?sanitize=true) + +[argon2-rust](https://crates.io/crates/argon2-rust) binding for Node.js. + +Argon2 is a [key derivation function](https://en.wikipedia.org/wiki/Key_derivation_function) that was selected as the winner of the [Password Hashing Competition(PHC)](https://password-hashing.net) in July 2015. + +Argon2 summarizes the state of the art in the design of memory-hard functions and can be used to hash passwords for credential storage, key derivation, or other applications. + +It has a simple design aimed at the highest memory filling rate and effective use of multiple computing units, while still providing defense against tradeoff attacks (by exploiting the cache and memory organization of the recent processors). + +## Features + +- Faster than node-argon2 and `node:crypto.argon2` at the same m/t/p (see Benchmarks). +- No node-gyp and postinstall. +- Cross-platform support, including [Apple M1](https://www.apple.com/newsroom/2020/11/apple-unleashes-m1/). +- Smaller file size after npm installation(476K vs [node-argon2](https://github.com/ranisalt/node-argon2) 3.7M). +- `@node-rs/argon2` supports all three algorithms: + - Argon2i: Optimizes against GPU cracking attacks but vulnerable to side-channels. + Accesses the memory array in a password dependent order, reducing the possibility of time–memory tradeoff (TMTO) attacks. + - Argon2d: Optimized to resist side-channel attacks. + Accesses the memory array in a password independent order, increasing the possibility of time-memory tradeoff (TMTO) attacks. + - **Argon2id**: default value, this is the default algorithm for normative recommendations. + Hybrid that mixes Argon2i and Argon2d passes. + Uses the Argon2i approach for the first half pass over memory and Argon2d approach for subsequent passes. This effectively places it in the “middle” between the other two: it doesn’t provide as good TMTO/GPU cracking resistance as Argon2d, nor as good of side-channel resistance as Argon2i, but overall provides the most well-rounded approach to both classes of attacks. + +# Benchmarks + +Comparing each library's **defaults** is not 1:1. `@node-rs/argon2` defaults to `m=19456,t=2,p=1`; `argon2` (node-argon2) defaults to `m=65536,t=3,p=4`. See [#841](https://github.com/napi-rs/node-rs/issues/841). + +This bench pins the same password, salt, Argon2id v=19, m, t, p, and 32-byte tag. Only the **raw** KDF is timed. The tag is asserted equal on every run. Native impls are interleaved with each other; JS/wasm are a separate group so a 7 ms hash is not timed after a 400 ms JS loop. + +Apple M5 Max / arm64 / Node 24 / [argon2-rust 1.1.0](https://crates.io/crates/argon2-rust). Median ms. See [benchmark/](benchmark/argon2.ts). + +**Native async raw** — same calling shape as node-argon2 (no sync API there): + +| params | @node-rs/argon2 | node-argon2 | node:crypto | +| --------------------- | --------------: | ----------: | ----------: | +| m=19456 KiB, t=2, p=1 | **7.58** | 15.41 | 13.05 | +| m=65536 KiB, t=3, p=1 | **49.35** | 84.57 | 71.71 | +| m=65536 KiB, t=3, p=4 | **13.62** | 22.54 | 20.83 | + +**JS / wasm raw** — same params, same tags: + +| params | hash-wasm | @noble/hashes | +| --------------------- | --------: | ------------: | +| m=19456 KiB, t=2, p=1 | 19.79 | 86.14 | +| m=65536 KiB, t=3, p=1 | 104.09 | 433.07 | +| m=65536 KiB, t=3, p=4 | 106.06 | 435.39 | + +hash-wasm and `@noble/hashes` do not run lanes in parallel, so their p=4 row is the p=1 work. + +## API + +```typescript +export const enum Algorithm { + Argon2d = 0, + Argon2i = 1, + Argon2id = 2, +} +export const enum Version { + /** Version 16 (0x10 in hex) */ + V0x10 = 0, + /** + * Default value + * Version 19 (0x13 in hex, default) + */ + V0x13 = 1, +} +export interface Options { + /** + * The amount of memory to be used by the hash function, in kilobytes. Each thread will have a memory pool of this size. Note that large values for highly concurrent usage will cause starvation and thrashing if your system memory gets full. + * + * Value is an integer in decimal (1 to 10 digits), between 1 and (2^32)-1. + * + * The default value is 19456, meaning a pool of 19 MiB per thread. + */ + memoryCost?: number | undefined | null + /** + * The time cost is the amount of passes (iterations) used by the hash function. It increases hash strength at the cost of time required to compute. + * + * Value is an integer in decimal (1 to 10 digits), between 1 and (2^32)-1. + * + * The default value is 2. + */ + timeCost?: number | undefined | null + /** + * The hash length is the length of the hash function output in bytes. Note that the resulting hash is encoded with Base 64, so the digest will be ~1/3 longer. + * + * The default value is 32, which produces raw hashes of 32 bytes or digests of 43 characters. + */ + outputLen?: number | undefined | null + /** + * The amount of threads to compute the hash on. Each thread has a memory pool with memoryCost size. Note that changing it also changes the resulting hash. + * + * Value is an integer in decimal (1 to 3 digits), between 1 and 255. + * + * The default value is 1, meaning a single thread is used. + */ + parallelism?: number | undefined | null + algorithm?: Algorithm | undefined | null + version?: Version | undefined | null + secret?: Buffer | undefined | null +} +export function hash( + password: string | Buffer, + options?: Options | undefined | null, + abortSignal?: AbortSignal | undefined | null, +): Promise +export function verify( + hashed: string | Buffer, + password: string | Buffer, + options?: Options | undefined | null, + abortSignal?: AbortSignal | undefined | null, +): Promise +``` + +## `parseOptions` — needs-rehash checks + +`parseOptions` parses an encoded PHC hash string and returns the parameters it was created with. Compare them against your current policy to decide whether a stored hash should be rehashed at next login. + +```typescript +import { Algorithm, parseOptions, Version } from '@node-rs/argon2' + +const POLICY = { + algorithm: Algorithm.Argon2id, + version: Version.V0x13, + memoryCost: 19456, + timeCost: 2, + parallelism: 1, + outputLen: 32, +} as const + +function needsRehash(hashed: string): boolean { + const parsed = parseOptions(hashed) + return ( + parsed.algorithm !== POLICY.algorithm || + parsed.version !== POLICY.version || + parsed.memoryCost !== POLICY.memoryCost || + parsed.timeCost !== POLICY.timeCost || + parsed.parallelism !== POLICY.parallelism || + parsed.outputLen !== POLICY.outputLen || + parsed.saltLen < 16 + ) +} +``` + +```typescript +export interface ParsedHashOptions { + algorithm: Algorithm + version: Version + /** Memory cost in kibibytes (`m=` in the PHC string). */ + memoryCost: number + /** Time cost / number of passes (`t=` in the PHC string). */ + timeCost: number + /** Degree of parallelism (`p=` in the PHC string). */ + parallelism: number + /** Length of the raw hash output in bytes. */ + outputLen: number + /** Byte length of the decoded salt. This package generates 16-byte salts; older hashes may carry shorter ones. */ + saltLen: number +} +export function parseOptions(hashed: string | Uint8Array): ParsedHashOptions +``` diff --git a/apps/api/.output/node_modules/@node-rs/argon2/browser.js b/apps/api/.output/node_modules/@node-rs/argon2/browser.js new file mode 100644 index 0000000..3175b79 --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2/browser.js @@ -0,0 +1 @@ +export * from '@node-rs/argon2-wasm32-wasi' diff --git a/apps/api/.output/node_modules/@node-rs/argon2/index.d.ts b/apps/api/.output/node_modules/@node-rs/argon2/index.d.ts new file mode 100644 index 0000000..2d5d2bd --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2/index.d.ts @@ -0,0 +1,104 @@ +/* auto-generated by NAPI-RS */ +/* eslint-disable */ +export declare const enum Algorithm { + /** + * Optimizes against GPU cracking attacks but vulnerable to side-channels. + * Accesses the memory array in a password dependent order, reducing the possibility of time–memory tradeoff (TMTO) attacks. + */ + Argon2d = 0, + /** + * Optimized to resist side-channel attacks. + * Accesses the memory array in a password independent order, increasing the possibility of time-memory tradeoff (TMTO) attacks. + */ + Argon2i = 1, + /** + * Default value, this is the default algorithm for normative recommendations. + * Hybrid that mixes Argon2i and Argon2d passes. + * Uses the Argon2i approach for the first half pass over memory and Argon2d approach for subsequent passes. This effectively places it in the “middle” between the other two: it doesn’t provide as good TMTO/GPU cracking resistance as Argon2d, nor as good of side-channel resistance as Argon2i, but overall provides the most well-rounded approach to both classes of attacks. + */ + Argon2id = 2 +} + +export declare function hash(password: string | Uint8Array, options?: Options | undefined | null, abortSignal?: AbortSignal | undefined | null): Promise + +export declare function hashRaw(password: string | Uint8Array, options?: Options | undefined | null, abortSignal?: AbortSignal | undefined | null): Promise + +export declare function hashRawSync(password: string | Uint8Array, options?: Options | undefined | null): Buffer + +export declare function hashSync(password: string | Uint8Array, options?: Options | undefined | null): string + +export interface Options { + /** + * The amount of memory to be used by the hash function, in kilobytes. Each thread will have a memory pool of this size. Note that large values for highly concurrent usage will cause starvation and thrashing if your system memory gets full. + * + * Value is an integer in decimal (1 to 10 digits), between 1 and (2^32)-1. + * + * The default value is 19456, meaning a pool of 19 MiB per thread. + */ + memoryCost?: number + /** + * The time cost is the amount of passes (iterations) used by the hash function. It increases hash strength at the cost of time required to compute. + * + * Value is an integer in decimal (1 to 10 digits), between 1 and (2^32)-1. + * + * The default value is 2. + */ + timeCost?: number + /** + * The hash length is the length of the hash function output in bytes. Note that the resulting hash is encoded with Base 64, so the digest will be ~1/3 longer. + * + * The default value is 32, which produces raw hashes of 32 bytes or digests of 43 characters. + */ + outputLen?: number + /** + * The amount of threads to compute the hash on. Each thread has a memory pool with memoryCost size. Note that changing it also changes the resulting hash. + * + * Value is an integer in decimal (1 to 3 digits), between 1 and 255. + * + * The default value is 1, meaning a single thread is used. + */ + parallelism?: number + algorithm?: Algorithm + version?: Version + secret?: Uint8Array + salt?: Uint8Array +} + +export interface ParsedHashOptions { + algorithm: Algorithm + version: Version + /** Memory cost in kibibytes (`m=` in the PHC string). */ + memoryCost: number + /** Time cost / number of passes (`t=` in the PHC string). */ + timeCost: number + /** Degree of parallelism (`p=` in the PHC string). */ + parallelism: number + /** Length of the raw hash output in bytes. */ + outputLen: number + /** + * Byte length of the decoded salt. This package generates 16-byte salts; + * older hashes may carry shorter ones. + */ + saltLen: number +} + +/** + * Parses an encoded argon2 hash string (PHC format) and returns the parameters + * it was created with. Useful for "needs rehash" checks: compare the returned + * parameters against your current policy and rehash when they differ. + */ +export declare function parseOptions(hashed: string | Uint8Array): ParsedHashOptions + +export declare function verify(hashed: string | Uint8Array, password: string | Uint8Array, options?: Options | undefined | null, abortSignal?: AbortSignal | undefined | null): Promise + +export declare function verifySync(hashed: string | Uint8Array, password: string | Uint8Array, options?: Options | undefined | null): boolean + +export declare const enum Version { + /** Version 16 (0x10 in hex) */ + V0x10 = 0, + /** + * Default value + * Version 19 (0x13 in hex) + */ + V0x13 = 1 +} diff --git a/apps/api/.output/node_modules/@node-rs/argon2/index.js b/apps/api/.output/node_modules/@node-rs/argon2/index.js new file mode 100644 index 0000000..22026da --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2/index.js @@ -0,0 +1,711 @@ +// prettier-ignore +/* eslint-disable */ +// @ts-nocheck +/* auto-generated by NAPI-RS */ + +const { readFileSync } = require('fs') +let nativeBinding = null +const loadErrors = [] + +const isMusl = () => { + let musl = false + if (process.platform === 'linux') { + musl = isMuslFromFilesystem() + if (musl === null) { + musl = isMuslFromReport() + } + if (musl === null) { + musl = isMuslFromChildProcess() + } + } + return musl +} + +const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') + +const isMuslFromFilesystem = () => { + try { + return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') + } catch { + return null + } +} + +const isMuslFromReport = () => { + let report = null + if (process.report && typeof process.report.getReport === 'function') { + process.report.excludeNetwork = true + report = process.report.getReport() + } + if (!report) { + return null + } + if (report.header && report.header.glibcVersionRuntime) { + return false + } + if (Array.isArray(report.sharedObjects)) { + if (report.sharedObjects.some(isFileMusl)) { + return true + } + } + return false +} + +const isMuslFromChildProcess = () => { + try { + return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') + } catch (e) { + // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false + return false + } +} + +function requireNative() { + if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { + try { + return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); + } catch (err) { + loadErrors.push(err) + } + } else if (process.platform === 'android') { + if (process.arch === 'arm64') { + try { + return require('./argon2.android-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-android-arm64') + const bindingPackageVersion = require('@node-rs/argon2-android-arm64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm') { + try { + return require('./argon2.android-arm-eabi.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-android-arm-eabi') + const bindingPackageVersion = require('@node-rs/argon2-android-arm-eabi/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`)) + } + } else if (process.platform === 'win32') { + if (process.arch === 'x64') { + if ((process.config && process.config.variables && process.config.variables.shlib_suffix === 'dll.a') || (process.config && process.config.variables && process.config.variables.node_target_type === 'shared_library')) { + try { + return require('./argon2.win32-x64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-win32-x64-gnu') + const bindingPackageVersion = require('@node-rs/argon2-win32-x64-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./argon2.win32-x64-msvc.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-win32-x64-msvc') + const bindingPackageVersion = require('@node-rs/argon2-win32-x64-msvc/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'ia32') { + try { + return require('./argon2.win32-ia32-msvc.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-win32-ia32-msvc') + const bindingPackageVersion = require('@node-rs/argon2-win32-ia32-msvc/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm64') { + try { + return require('./argon2.win32-arm64-msvc.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-win32-arm64-msvc') + const bindingPackageVersion = require('@node-rs/argon2-win32-arm64-msvc/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`)) + } + } else if (process.platform === 'darwin') { + try { + return require('./argon2.darwin-universal.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-darwin-universal') + const bindingPackageVersion = require('@node-rs/argon2-darwin-universal/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + if (process.arch === 'x64') { + try { + return require('./argon2.darwin-x64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-darwin-x64') + const bindingPackageVersion = require('@node-rs/argon2-darwin-x64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm64') { + try { + return require('./argon2.darwin-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-darwin-arm64') + const bindingPackageVersion = require('@node-rs/argon2-darwin-arm64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`)) + } + } else if (process.platform === 'freebsd') { + if (process.arch === 'x64') { + try { + return require('./argon2.freebsd-x64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-freebsd-x64') + const bindingPackageVersion = require('@node-rs/argon2-freebsd-x64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm64') { + try { + return require('./argon2.freebsd-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-freebsd-arm64') + const bindingPackageVersion = require('@node-rs/argon2-freebsd-arm64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`)) + } + } else if (process.platform === 'linux') { + if (process.arch === 'x64') { + if (isMusl()) { + try { + return require('./argon2.linux-x64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-x64-musl') + const bindingPackageVersion = require('@node-rs/argon2-linux-x64-musl/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./argon2.linux-x64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-x64-gnu') + const bindingPackageVersion = require('@node-rs/argon2-linux-x64-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'arm64') { + if (isMusl()) { + try { + return require('./argon2.linux-arm64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-arm64-musl') + const bindingPackageVersion = require('@node-rs/argon2-linux-arm64-musl/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./argon2.linux-arm64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-arm64-gnu') + const bindingPackageVersion = require('@node-rs/argon2-linux-arm64-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'arm') { + if (isMusl()) { + try { + return require('./argon2.linux-arm-musleabihf.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-arm-musleabihf') + const bindingPackageVersion = require('@node-rs/argon2-linux-arm-musleabihf/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./argon2.linux-arm-gnueabihf.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-arm-gnueabihf') + const bindingPackageVersion = require('@node-rs/argon2-linux-arm-gnueabihf/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'loong64') { + if (isMusl()) { + try { + return require('./argon2.linux-loong64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-loong64-musl') + const bindingPackageVersion = require('@node-rs/argon2-linux-loong64-musl/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./argon2.linux-loong64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-loong64-gnu') + const bindingPackageVersion = require('@node-rs/argon2-linux-loong64-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'riscv64') { + if (isMusl()) { + try { + return require('./argon2.linux-riscv64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-riscv64-musl') + const bindingPackageVersion = require('@node-rs/argon2-linux-riscv64-musl/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./argon2.linux-riscv64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-riscv64-gnu') + const bindingPackageVersion = require('@node-rs/argon2-linux-riscv64-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'ppc64') { + try { + return require('./argon2.linux-ppc64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-ppc64-gnu') + const bindingPackageVersion = require('@node-rs/argon2-linux-ppc64-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 's390x') { + try { + return require('./argon2.linux-s390x-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-linux-s390x-gnu') + const bindingPackageVersion = require('@node-rs/argon2-linux-s390x-gnu/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`)) + } + } else if (process.platform === 'openharmony') { + if (process.arch === 'arm64') { + try { + return require('./argon2.openharmony-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-openharmony-arm64') + const bindingPackageVersion = require('@node-rs/argon2-openharmony-arm64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'x64') { + try { + return require('./argon2.openharmony-x64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-openharmony-x64') + const bindingPackageVersion = require('@node-rs/argon2-openharmony-x64/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm') { + try { + return require('./argon2.openharmony-arm.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@node-rs/argon2-openharmony-arm') + const bindingPackageVersion = require('@node-rs/argon2-openharmony-arm/package.json').version + if (bindingPackageVersion !== '2.1.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`)) + } + } else { + loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`)) + } +} + +function createLoadErrorChain(errors) { + return errors.reduce((previous, current) => { + let message + try { + message = + current && typeof current.message === 'string' + ? current.message + : String(current) + } catch { + message = 'Unknown error' + } + const error = new Error(message) + error.cause = previous + return error + }, null) +} + +// NAPI_RS_FORCE_WASI is a tri-state flag: +// unset / any other value → native binding preferred, WASI is only a fallback +// 'true' → prefer WASI, but retain native as a lazy fallback +// 'error' → require WASI without initializing a native fallback +// Treating any non-empty string as truthy (the historical behavior) meant +// NAPI_RS_FORCE_WASI=false, NAPI_RS_FORCE_WASI=0, etc. inadvertently triggered +// the WASI path, causing ENOENT for packages shipped without a .wasi.cjs file. +// +// NAPI_RS_WASI_FLAVOR selects one exact generated flavor and implies strict +// WASI loading. It never crosses into another flavor or falls back to native. +const __napiWasiFlavors = ["wasm32-wasi"] +const __napiWasiFlavor = process.env.NAPI_RS_WASI_FLAVOR +const __napiWasiFlavorRequested = + typeof __napiWasiFlavor === 'string' && __napiWasiFlavor.length > 0 +if ( + __napiWasiFlavorRequested && + __napiWasiFlavors.indexOf(__napiWasiFlavor) === -1 +) { + throw new Error( + 'Unsupported WASI flavor "' + + __napiWasiFlavor + + '". Available flavors: ' + + __napiWasiFlavors.join(', '), + ) +} +const forceWasiError = process.env.NAPI_RS_FORCE_WASI === 'error' +const forceWasi = + process.env.NAPI_RS_FORCE_WASI === 'true' || + forceWasiError || + __napiWasiFlavorRequested + +if (!forceWasi) { + nativeBinding = requireNative() +} + +if (!nativeBinding || forceWasi) { + let wasiBinding = null + let wasiBindingLoaded = false + const wasiBindingErrors = [] + const __napiWasiResolveCandidate = (specifier, isPackage, localArtifacts) => { + try { + require.resolve(specifier) + } catch (resolveError) { + if (!resolveError || resolveError.code !== 'MODULE_NOT_FOUND') { + throw resolveError + } + if (isPackage) { + try { + require.resolve(specifier + '/package.json') + } catch (packageError) { + if (packageError && packageError.code === 'MODULE_NOT_FOUND') { + return resolveError + } + // An exports restriction proves the package exists even when its + // package.json is not public. Preserve the root resolution failure. + throw resolveError + } + // The package exists but its main/export target is broken. + throw resolveError + } + return resolveError + } + if (localArtifacts) { + let artifactError = null + for (let i = 0; i < localArtifacts.length; i++) { + try { + require.resolve(localArtifacts[i]) + return null + } catch (resolveError) { + if (!resolveError || resolveError.code !== 'MODULE_NOT_FOUND') { + throw resolveError + } + artifactError = resolveError + } + } + return artifactError + } + return null + } + if (!wasiBindingLoaded && (!__napiWasiFlavorRequested || __napiWasiFlavor === "wasm32-wasi")) { + let candidateError = null + let candidateFailed = false + try { + candidateError = __napiWasiResolveCandidate('./argon2.wasi.cjs', false, ["./argon2.wasm32-wasi.debug.wasm","./argon2.wasm32-wasi.wasm"]) + candidateFailed = candidateError !== null + if (!candidateFailed) { + wasiBinding = require('./argon2.wasi.cjs') + nativeBinding = wasiBinding + wasiBindingLoaded = true + } + } catch (err) { + candidateError = err + candidateFailed = true + } + if (candidateFailed) { + wasiBindingErrors.push(candidateError) + loadErrors.push(candidateError) + } + } + if (!wasiBindingLoaded && (!__napiWasiFlavorRequested || __napiWasiFlavor === "wasm32-wasi")) { + let candidateError = null + let candidateFailed = false + try { + candidateError = __napiWasiResolveCandidate('@node-rs/argon2-wasm32-wasi', true, undefined) + candidateFailed = candidateError !== null + if (!candidateFailed) { + if (process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + const bindingPackageVersion = require('@node-rs/argon2-wasm32-wasi/package.json').version + if (bindingPackageVersion !== '2.1.0') { + throw new Error(`WASI binding package version mismatch, expected 2.1.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + } + wasiBinding = require('@node-rs/argon2-wasm32-wasi') + nativeBinding = wasiBinding + wasiBindingLoaded = true + } + } catch (err) { + candidateError = err + candidateFailed = true + } + if (candidateFailed) { + wasiBindingErrors.push(candidateError) + loadErrors.push(candidateError) + } + } + if ( + !wasiBindingLoaded && + forceWasi && + !forceWasiError && + !__napiWasiFlavorRequested + ) { + nativeBinding = requireNative() + } + if ((forceWasiError || __napiWasiFlavorRequested) && !wasiBindingLoaded) { + const error = new Error( + __napiWasiFlavorRequested + ? 'WASI binding for flavor "' + __napiWasiFlavor + '" not found' + : 'WASI binding not found and NAPI_RS_FORCE_WASI is set to error', + ) + error.cause = createLoadErrorChain(wasiBindingErrors) + throw error + } +} + +if (!nativeBinding) { + if (loadErrors.length > 0) { + const error = new Error( + `Cannot find native binding. ` + + `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` + + 'Please try `npm i` again after removing both package-lock.json and node_modules directory.', + ) + // assign instead of the `new Error(message, { cause })` options form, + // which Node < 16.9 silently ignores + error.cause = createLoadErrorChain(loadErrors) + throw error + } + throw new Error(`Failed to load native binding`) +} + +module.exports = nativeBinding +module.exports.Algorithm = nativeBinding.Algorithm +module.exports.hash = nativeBinding.hash +module.exports.hashRaw = nativeBinding.hashRaw +module.exports.hashRawSync = nativeBinding.hashRawSync +module.exports.hashSync = nativeBinding.hashSync +module.exports.parseOptions = nativeBinding.parseOptions +module.exports.verify = nativeBinding.verify +module.exports.verifySync = nativeBinding.verifySync +module.exports.Version = nativeBinding.Version diff --git a/apps/api/.output/node_modules/@node-rs/argon2/package.json b/apps/api/.output/node_modules/@node-rs/argon2/package.json new file mode 100644 index 0000000..0b5f197 --- /dev/null +++ b/apps/api/.output/node_modules/@node-rs/argon2/package.json @@ -0,0 +1,95 @@ +{ + "name": "@node-rs/argon2", + "version": "2.2.2", + "description": "argon2-rust binding for Node.js", + "keywords": [ + "argon2", + "argon2-password", + "crypto", + "encryption", + "hash", + "hashing", + "password", + "secure", + "verify" + ], + "homepage": "https://github.com/napi-rs/node-rs", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/node-rs.git" + }, + "files": [ + "browser.js", + "index.d.ts", + "index.js" + ], + "main": "index.js", + "browser": "browser.js", + "types": "index.d.ts", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "scripts": { + "artifacts": "napi artifacts -d ../../artifacts", + "bench": "cross-env NODE_ENV=production node --import @oxc-node/core/register benchmark/argon2.ts", + "build": "oxnode ./build.ts --platform --release", + "build:debug": "oxnode ./build.ts --platform", + "prepublishOnly": "napi prepublish", + "version": "napi version" + }, + "devDependencies": { + "@napi-rs/cli": "^3.10.8", + "@noble/hashes": "^2.3.0", + "@oxc-node/cli": "^0.1.0", + "@oxc-node/core": "^0.1.0", + "argon2": "^0.45.1", + "cross-env": "^10.1.0", + "hash-wasm": "^4.12.0", + "tinybench": "^6.1.3" + }, + "napi": { + "binaryName": "argon2", + "targets": [ + "x86_64-apple-darwin", + "aarch64-apple-darwin", + "x86_64-pc-windows-msvc", + "x86_64-unknown-linux-gnu", + "aarch64-linux-android", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "aarch64-pc-windows-msvc", + "armv7-unknown-linux-gnueabihf", + "x86_64-unknown-linux-musl", + "x86_64-unknown-freebsd", + "i686-pc-windows-msvc", + "armv7-linux-androideabi", + "wasm32-wasip1-threads" + ], + "wasm": { + "browser": { + "fs": false + } + } + }, + "engines": { + "node": ">= 10" + }, + "gitHead": "b706e3035f5d4d487ae66ea0549a041cd509e5d4", + "optionalDependencies": { + "@node-rs/argon2-darwin-x64": "2.2.2", + "@node-rs/argon2-darwin-arm64": "2.2.2", + "@node-rs/argon2-win32-x64-msvc": "2.2.2", + "@node-rs/argon2-linux-x64-gnu": "2.2.2", + "@node-rs/argon2-android-arm64": "2.2.2", + "@node-rs/argon2-linux-arm64-gnu": "2.2.2", + "@node-rs/argon2-linux-arm64-musl": "2.2.2", + "@node-rs/argon2-win32-arm64-msvc": "2.2.2", + "@node-rs/argon2-linux-arm-gnueabihf": "2.2.2", + "@node-rs/argon2-linux-x64-musl": "2.2.2", + "@node-rs/argon2-freebsd-x64": "2.2.2", + "@node-rs/argon2-win32-ia32-msvc": "2.2.2", + "@node-rs/argon2-android-arm-eabi": "2.2.2" + } +} diff --git a/apps/api/.output/node_modules/detect-libc/LICENSE b/apps/api/.output/node_modules/detect-libc/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/api/.output/node_modules/detect-libc/README.md b/apps/api/.output/node_modules/detect-libc/README.md new file mode 100644 index 0000000..23212fd --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/README.md @@ -0,0 +1,163 @@ +# detect-libc + +Node.js module to detect details of the C standard library (libc) +implementation provided by a given Linux system. + +Currently supports detection of GNU glibc and MUSL libc. + +Provides asychronous and synchronous functions for the +family (e.g. `glibc`, `musl`) and version (e.g. `1.23`, `1.2.3`). + +The version numbers of libc implementations +are not guaranteed to be semver-compliant. + +For previous v1.x releases, please see the +[v1](https://github.com/lovell/detect-libc/tree/v1) branch. + +## Install + +```sh +npm install detect-libc +``` + +## API + +### GLIBC + +```ts +const GLIBC: string = 'glibc'; +``` + +A String constant containing the value `glibc`. + +### MUSL + +```ts +const MUSL: string = 'musl'; +``` + +A String constant containing the value `musl`. + +### family + +```ts +function family(): Promise; +``` + +Resolves asychronously with: + +* `glibc` or `musl` when the libc family can be determined +* `null` when the libc family cannot be determined +* `null` when run on a non-Linux platform + +```js +const { family, GLIBC, MUSL } = require('detect-libc'); + +switch (await family()) { + case GLIBC: ... + case MUSL: ... + case null: ... +} +``` + +### familySync + +```ts +function familySync(): string | null; +``` + +Synchronous version of `family()`. + +```js +const { familySync, GLIBC, MUSL } = require('detect-libc'); + +switch (familySync()) { + case GLIBC: ... + case MUSL: ... + case null: ... +} +``` + +### version + +```ts +function version(): Promise; +``` + +Resolves asychronously with: + +* The version when it can be determined +* `null` when the libc family cannot be determined +* `null` when run on a non-Linux platform + +```js +const { version } = require('detect-libc'); + +const v = await version(); +if (v) { + const [major, minor, patch] = v.split('.'); +} +``` + +### versionSync + +```ts +function versionSync(): string | null; +``` + +Synchronous version of `version()`. + +```js +const { versionSync } = require('detect-libc'); + +const v = versionSync(); +if (v) { + const [major, minor, patch] = v.split('.'); +} +``` + +### isNonGlibcLinux + +```ts +function isNonGlibcLinux(): Promise; +``` + +Resolves asychronously with: + +* `false` when the libc family is `glibc` +* `true` when the libc family is not `glibc` +* `false` when run on a non-Linux platform + +```js +const { isNonGlibcLinux } = require('detect-libc'); + +if (await isNonGlibcLinux()) { ... } +``` + +### isNonGlibcLinuxSync + +```ts +function isNonGlibcLinuxSync(): boolean; +``` + +Synchronous version of `isNonGlibcLinux()`. + +```js +const { isNonGlibcLinuxSync } = require('detect-libc'); + +if (isNonGlibcLinuxSync()) { ... } +``` + +## Licensing + +Copyright 2017 Lovell Fuller and others. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0.html) + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/apps/api/.output/node_modules/detect-libc/index.d.ts b/apps/api/.output/node_modules/detect-libc/index.d.ts new file mode 100644 index 0000000..4c0fb2b --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/index.d.ts @@ -0,0 +1,14 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +export const GLIBC: 'glibc'; +export const MUSL: 'musl'; + +export function family(): Promise; +export function familySync(): string | null; + +export function isNonGlibcLinux(): Promise; +export function isNonGlibcLinuxSync(): boolean; + +export function version(): Promise; +export function versionSync(): string | null; diff --git a/apps/api/.output/node_modules/detect-libc/lib/detect-libc.js b/apps/api/.output/node_modules/detect-libc/lib/detect-libc.js new file mode 100644 index 0000000..01299b4 --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/lib/detect-libc.js @@ -0,0 +1,313 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const childProcess = require('child_process'); +const { isLinux, getReport } = require('./process'); +const { LDD_PATH, SELF_PATH, readFile, readFileSync } = require('./filesystem'); +const { interpreterPath } = require('./elf'); + +let cachedFamilyInterpreter; +let cachedFamilyFilesystem; +let cachedVersionFilesystem; + +const command = 'getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true'; +let commandOut = ''; + +const safeCommand = () => { + if (!commandOut) { + return new Promise((resolve) => { + childProcess.exec(command, (err, out) => { + commandOut = err ? ' ' : out; + resolve(commandOut); + }); + }); + } + return commandOut; +}; + +const safeCommandSync = () => { + if (!commandOut) { + try { + commandOut = childProcess.execSync(command, { encoding: 'utf8' }); + } catch (_err) { + commandOut = ' '; + } + } + return commandOut; +}; + +/** + * A String constant containing the value `glibc`. + * @type {string} + * @public + */ +const GLIBC = 'glibc'; + +/** + * A Regexp constant to get the GLIBC Version. + * @type {string} + */ +const RE_GLIBC_VERSION = /LIBC[a-z0-9 \-).]*?(\d+\.\d+)/i; + +/** + * A String constant containing the value `musl`. + * @type {string} + * @public + */ +const MUSL = 'musl'; + +const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-'); + +const familyFromReport = () => { + const report = getReport(); + if (report.header && report.header.glibcVersionRuntime) { + return GLIBC; + } + if (Array.isArray(report.sharedObjects)) { + if (report.sharedObjects.some(isFileMusl)) { + return MUSL; + } + } + return null; +}; + +const familyFromCommand = (out) => { + const [getconf, ldd1] = out.split(/[\r\n]+/); + if (getconf && getconf.includes(GLIBC)) { + return GLIBC; + } + if (ldd1 && ldd1.includes(MUSL)) { + return MUSL; + } + return null; +}; + +const familyFromInterpreterPath = (path) => { + if (path) { + if (path.includes('/ld-musl-')) { + return MUSL; + } else if (path.includes('/ld-linux-')) { + return GLIBC; + } + } + return null; +}; + +const getFamilyFromLddContent = (content) => { + content = content.toString(); + if (content.includes('musl')) { + return MUSL; + } + if (content.includes('GNU C Library')) { + return GLIBC; + } + return null; +}; + +const familyFromFilesystem = async () => { + if (cachedFamilyFilesystem !== undefined) { + return cachedFamilyFilesystem; + } + cachedFamilyFilesystem = null; + try { + const lddContent = await readFile(LDD_PATH); + cachedFamilyFilesystem = getFamilyFromLddContent(lddContent); + } catch (e) {} + return cachedFamilyFilesystem; +}; + +const familyFromFilesystemSync = () => { + if (cachedFamilyFilesystem !== undefined) { + return cachedFamilyFilesystem; + } + cachedFamilyFilesystem = null; + try { + const lddContent = readFileSync(LDD_PATH); + cachedFamilyFilesystem = getFamilyFromLddContent(lddContent); + } catch (e) {} + return cachedFamilyFilesystem; +}; + +const familyFromInterpreter = async () => { + if (cachedFamilyInterpreter !== undefined) { + return cachedFamilyInterpreter; + } + cachedFamilyInterpreter = null; + try { + const selfContent = await readFile(SELF_PATH); + const path = interpreterPath(selfContent); + cachedFamilyInterpreter = familyFromInterpreterPath(path); + } catch (e) {} + return cachedFamilyInterpreter; +}; + +const familyFromInterpreterSync = () => { + if (cachedFamilyInterpreter !== undefined) { + return cachedFamilyInterpreter; + } + cachedFamilyInterpreter = null; + try { + const selfContent = readFileSync(SELF_PATH); + const path = interpreterPath(selfContent); + cachedFamilyInterpreter = familyFromInterpreterPath(path); + } catch (e) {} + return cachedFamilyInterpreter; +}; + +/** + * Resolves with the libc family when it can be determined, `null` otherwise. + * @returns {Promise} + */ +const family = async () => { + let family = null; + if (isLinux()) { + family = await familyFromInterpreter(); + if (!family) { + family = await familyFromFilesystem(); + if (!family) { + family = familyFromReport(); + } + if (!family) { + const out = await safeCommand(); + family = familyFromCommand(out); + } + } + } + return family; +}; + +/** + * Returns the libc family when it can be determined, `null` otherwise. + * @returns {?string} + */ +const familySync = () => { + let family = null; + if (isLinux()) { + family = familyFromInterpreterSync(); + if (!family) { + family = familyFromFilesystemSync(); + if (!family) { + family = familyFromReport(); + } + if (!family) { + const out = safeCommandSync(); + family = familyFromCommand(out); + } + } + } + return family; +}; + +/** + * Resolves `true` only when the platform is Linux and the libc family is not `glibc`. + * @returns {Promise} + */ +const isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC; + +/** + * Returns `true` only when the platform is Linux and the libc family is not `glibc`. + * @returns {boolean} + */ +const isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC; + +const versionFromFilesystem = async () => { + if (cachedVersionFilesystem !== undefined) { + return cachedVersionFilesystem; + } + cachedVersionFilesystem = null; + try { + const lddContent = await readFile(LDD_PATH); + const versionMatch = lddContent.match(RE_GLIBC_VERSION); + if (versionMatch) { + cachedVersionFilesystem = versionMatch[1]; + } + } catch (e) {} + return cachedVersionFilesystem; +}; + +const versionFromFilesystemSync = () => { + if (cachedVersionFilesystem !== undefined) { + return cachedVersionFilesystem; + } + cachedVersionFilesystem = null; + try { + const lddContent = readFileSync(LDD_PATH); + const versionMatch = lddContent.match(RE_GLIBC_VERSION); + if (versionMatch) { + cachedVersionFilesystem = versionMatch[1]; + } + } catch (e) {} + return cachedVersionFilesystem; +}; + +const versionFromReport = () => { + const report = getReport(); + if (report.header && report.header.glibcVersionRuntime) { + return report.header.glibcVersionRuntime; + } + return null; +}; + +const versionSuffix = (s) => s.trim().split(/\s+/)[1]; + +const versionFromCommand = (out) => { + const [getconf, ldd1, ldd2] = out.split(/[\r\n]+/); + if (getconf && getconf.includes(GLIBC)) { + return versionSuffix(getconf); + } + if (ldd1 && ldd2 && ldd1.includes(MUSL)) { + return versionSuffix(ldd2); + } + return null; +}; + +/** + * Resolves with the libc version when it can be determined, `null` otherwise. + * @returns {Promise} + */ +const version = async () => { + let version = null; + if (isLinux()) { + version = await versionFromFilesystem(); + if (!version) { + version = versionFromReport(); + } + if (!version) { + const out = await safeCommand(); + version = versionFromCommand(out); + } + } + return version; +}; + +/** + * Returns the libc version when it can be determined, `null` otherwise. + * @returns {?string} + */ +const versionSync = () => { + let version = null; + if (isLinux()) { + version = versionFromFilesystemSync(); + if (!version) { + version = versionFromReport(); + } + if (!version) { + const out = safeCommandSync(); + version = versionFromCommand(out); + } + } + return version; +}; + +module.exports = { + GLIBC, + MUSL, + family, + familySync, + isNonGlibcLinux, + isNonGlibcLinuxSync, + version, + versionSync +}; diff --git a/apps/api/.output/node_modules/detect-libc/lib/elf.js b/apps/api/.output/node_modules/detect-libc/lib/elf.js new file mode 100644 index 0000000..aa166aa --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/lib/elf.js @@ -0,0 +1,39 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const interpreterPath = (elf) => { + if (elf.length < 64) { + return null; + } + if (elf.readUInt32BE(0) !== 0x7F454C46) { + // Unexpected magic bytes + return null; + } + if (elf.readUInt8(4) !== 2) { + // Not a 64-bit ELF + return null; + } + if (elf.readUInt8(5) !== 1) { + // Not little-endian + return null; + } + const offset = elf.readUInt32LE(32); + const size = elf.readUInt16LE(54); + const count = elf.readUInt16LE(56); + for (let i = 0; i < count; i++) { + const headerOffset = offset + (i * size); + const type = elf.readUInt32LE(headerOffset); + if (type === 3) { + const fileOffset = elf.readUInt32LE(headerOffset + 8); + const fileSize = elf.readUInt32LE(headerOffset + 32); + return elf.subarray(fileOffset, fileOffset + fileSize).toString().replace(/\0.*$/g, ''); + } + } + return null; +}; + +module.exports = { + interpreterPath +}; diff --git a/apps/api/.output/node_modules/detect-libc/lib/filesystem.js b/apps/api/.output/node_modules/detect-libc/lib/filesystem.js new file mode 100644 index 0000000..4c2443c --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/lib/filesystem.js @@ -0,0 +1,51 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const fs = require('fs'); + +const LDD_PATH = '/usr/bin/ldd'; +const SELF_PATH = '/proc/self/exe'; +const MAX_LENGTH = 2048; + +/** + * Read the content of a file synchronous + * + * @param {string} path + * @returns {Buffer} + */ +const readFileSync = (path) => { + const fd = fs.openSync(path, 'r'); + const buffer = Buffer.alloc(MAX_LENGTH); + const bytesRead = fs.readSync(fd, buffer, 0, MAX_LENGTH, 0); + fs.close(fd, () => {}); + return buffer.subarray(0, bytesRead); +}; + +/** + * Read the content of a file + * + * @param {string} path + * @returns {Promise} + */ +const readFile = (path) => new Promise((resolve, reject) => { + fs.open(path, 'r', (err, fd) => { + if (err) { + reject(err); + } else { + const buffer = Buffer.alloc(MAX_LENGTH); + fs.read(fd, buffer, 0, MAX_LENGTH, 0, (_, bytesRead) => { + resolve(buffer.subarray(0, bytesRead)); + fs.close(fd, () => {}); + }); + } + }); +}); + +module.exports = { + LDD_PATH, + SELF_PATH, + readFileSync, + readFile +}; diff --git a/apps/api/.output/node_modules/detect-libc/lib/process.js b/apps/api/.output/node_modules/detect-libc/lib/process.js new file mode 100644 index 0000000..ee78ad2 --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/lib/process.js @@ -0,0 +1,24 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const isLinux = () => process.platform === 'linux'; + +let report = null; +const getReport = () => { + if (!report) { + /* istanbul ignore next */ + if (isLinux() && process.report) { + const orig = process.report.excludeNetwork; + process.report.excludeNetwork = true; + report = process.report.getReport(); + process.report.excludeNetwork = orig; + } else { + report = {}; + } + } + return report; +}; + +module.exports = { isLinux, getReport }; diff --git a/apps/api/.output/node_modules/detect-libc/package.json b/apps/api/.output/node_modules/detect-libc/package.json new file mode 100644 index 0000000..36d0f2b --- /dev/null +++ b/apps/api/.output/node_modules/detect-libc/package.json @@ -0,0 +1,44 @@ +{ + "name": "detect-libc", + "version": "2.1.2", + "description": "Node.js module to detect the C standard library (libc) implementation family and version", + "main": "lib/detect-libc.js", + "files": [ + "lib/", + "index.d.ts" + ], + "scripts": { + "test": "semistandard && nyc --reporter=text --check-coverage --branches=100 ava test/unit.js", + "changelog": "conventional-changelog -i CHANGELOG.md -s", + "bench": "node benchmark/detect-libc", + "bench:calls": "node benchmark/call-familySync.js && sleep 1 && node benchmark/call-isNonGlibcLinuxSync.js && sleep 1 && node benchmark/call-versionSync.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/lovell/detect-libc.git" + }, + "keywords": [ + "libc", + "glibc", + "musl" + ], + "author": "Lovell Fuller ", + "contributors": [ + "Niklas Salmoukas ", + "Vinícius Lourenço " + ], + "license": "Apache-2.0", + "devDependencies": { + "ava": "^2.4.0", + "benchmark": "^2.1.4", + "conventional-changelog-cli": "^5.0.0", + "eslint-config-standard": "^13.0.1", + "nyc": "^15.1.0", + "proxyquire": "^2.1.3", + "semistandard": "^14.2.3" + }, + "engines": { + "node": ">=8" + }, + "types": "index.d.ts" +} diff --git a/apps/api/.output/node_modules/semver/LICENSE b/apps/api/.output/node_modules/semver/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/apps/api/.output/node_modules/semver/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/apps/api/.output/node_modules/semver/README.md b/apps/api/.output/node_modules/semver/README.md new file mode 100644 index 0000000..5e03abc --- /dev/null +++ b/apps/api/.output/node_modules/semver/README.md @@ -0,0 +1,680 @@ +semver(1) -- The semantic versioner for npm +=========================================== + +## Install + +```bash +npm install semver +```` + +## Usage + +As a node module: + +```js +const semver = require('semver') + +semver.valid('1.2.3') // '1.2.3' +semver.valid('a.b.c') // null +semver.clean(' =v1.2.3 ') // '1.2.3' +semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true +semver.gt('1.2.3', '9.8.7') // false +semver.lt('1.2.3', '9.8.7') // true +semver.minVersion('>=1.0.0') // '1.0.0' +semver.valid(semver.coerce('v2')) // '2.0.0' +semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' +``` + +You can also just load the module for the function that you care about if +you'd like to minimize your footprint. + +```js +// load the whole API at once in a single object +const semver = require('semver') + +// or just load the bits you need +// all of them listed here, just pick and choose what you want + +// classes +const SemVer = require('semver/classes/semver') +const Comparator = require('semver/classes/comparator') +const Range = require('semver/classes/range') + +// functions for working with versions +const semverParse = require('semver/functions/parse') +const semverValid = require('semver/functions/valid') +const semverClean = require('semver/functions/clean') +const semverInc = require('semver/functions/inc') +const semverDiff = require('semver/functions/diff') +const semverMajor = require('semver/functions/major') +const semverMinor = require('semver/functions/minor') +const semverPatch = require('semver/functions/patch') +const semverPrerelease = require('semver/functions/prerelease') +const semverCompare = require('semver/functions/compare') +const semverRcompare = require('semver/functions/rcompare') +const semverCompareLoose = require('semver/functions/compare-loose') +const semverCompareBuild = require('semver/functions/compare-build') +const semverSort = require('semver/functions/sort') +const semverRsort = require('semver/functions/rsort') +const semverTruncate = require('semver/functions/truncate') + +// low-level comparators between versions +const semverGt = require('semver/functions/gt') +const semverLt = require('semver/functions/lt') +const semverEq = require('semver/functions/eq') +const semverNeq = require('semver/functions/neq') +const semverGte = require('semver/functions/gte') +const semverLte = require('semver/functions/lte') +const semverCmp = require('semver/functions/cmp') +const semverCoerce = require('semver/functions/coerce') + +// working with ranges +const semverSatisfies = require('semver/functions/satisfies') +const semverMaxSatisfying = require('semver/ranges/max-satisfying') +const semverMinSatisfying = require('semver/ranges/min-satisfying') +const semverToComparators = require('semver/ranges/to-comparators') +const semverMinVersion = require('semver/ranges/min-version') +const semverValidRange = require('semver/ranges/valid') +const semverOutside = require('semver/ranges/outside') +const semverGtr = require('semver/ranges/gtr') +const semverLtr = require('semver/ranges/ltr') +const semverIntersects = require('semver/ranges/intersects') +const semverSimplifyRange = require('semver/ranges/simplify') +const semverRangeSubset = require('semver/ranges/subset') +``` + +As a command-line utility: + +``` +$ semver -h + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, prerelease, or release. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-n <0|1|false> + Base number for prerelease identifier (default: 0). + Use false to omit the number altogether. + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them. +``` + +## Versions + +A "version" is described by the `v2.0.0` specification found at +. + +A leading `"="` or `"v"` character is stripped off and ignored. +Support for stripping a leading "v" is kept for compatibility with `v1.0.0` of the SemVer +specification but should not be used anymore. + +## Ranges + +A `version range` is a set of `comparators` that specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and +would match the versions `2.0.0` and `3.1.0`, but not the versions +`1.0.1` or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. +Version `3.4.5` *would* satisfy the range because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose of this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range-matching +semantics. + +Second, a user who has opted into using a prerelease version has +indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +Note that this behavior can be suppressed (treating all prerelease +versions as if they were normal versions, for range-matching) +by setting the `includePrerelease` flag on the options +object to any +[functions](https://github.com/npm/node-semver#functions) that do +range matching. + +#### Prerelease Identifiers + +The method `.inc` takes an additional `identifier` string argument that +will append the value of the string as a prerelease identifier: + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta') +// '1.2.4-beta.0' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta +1.2.4-beta.0 +``` + +Which then can be used to increment further: + +```bash +$ semver 1.2.4-beta.0 -i prerelease +1.2.4-beta.1 +``` + +To get out of the prerelease phase, use the `release` option: + +```bash +$ semver 1.2.4-beta.1 -i release +1.2.4 +``` + +#### Prerelease Identifier Base + +The method `.inc` takes an optional parameter 'identifierBase' string +that will let you let your prerelease number as zero-based or one-based. +Set to `false` to omit the prerelease number altogether. +If you do not specify this parameter, it will default to zero-based. + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', '1') +// '1.2.4-beta.1' +``` + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', false) +// '1.2.4-beta' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta -n 1 +1.2.4-beta.1 +``` + +```bash +$ semver 1.2.3 -i prerelease --preid beta -n false +1.2.4-beta +``` + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. + +* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` + +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. + +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless + `includePrerelease` is specified, in which case any version at all + satisfies) +* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero element in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0-0` +* `^0.2.3` := `>=0.2.3 <0.3.0-0` +* `^0.0.3` := `>=0.0.3 <0.0.4-0` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0-0` +* `^0.0.x` := `>=0.0.0 <0.1.0-0` +* `^0.0` := `>=0.0.0 <0.1.0-0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0-0` +* `^0.x` := `>=0.0.0 <1.0.0-0` + +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= prepart ( '.' prepart ) * +prepart ::= nr | alphanumid +build ::= buildid ( '.' buildid ) * +alphanumid ::= ( ['0'-'9'] ) * [-A-Za-z] [-0-9A-Za-z] * +buildid ::= [-0-9A-Za-z]+ +``` + +Note: Prerelease identifiers (`pre`) use `nr` for numeric parts, which +disallows leading zeros (e.g., `1.2.3-00` is invalid). Build metadata +identifiers (`build`) allow any alphanumeric string including leading +zeros (e.g., `1.2.3+00` is valid). This matches the +[SemVer 2.0.0 specification](https://semver.org/#spec-item-9). + +## Functions + +All methods and classes take a final `options` object argument. All +options in this object are `false` by default. The options supported +are: + +- `loose`: Be more forgiving about not-quite-valid semver strings. + (Any resulting output will always be 100% strict compliant, of + course.) For backwards compatibility reasons, if the `options` + argument is a boolean value instead of an object, it is interpreted + to be the `loose` param. +- `includePrerelease`: Set to suppress the [default + behavior](https://github.com/npm/node-semver#prerelease-tags) of + excluding prerelease tagged versions from ranges unless they are + explicitly opted into. + +Strict-mode Comparators and Ranges will be strict about the SemVer +strings that they parse. + +* `valid(v)`: Return the parsed version, or null if it's not valid. +* `inc(v, releaseType, options, identifier, identifierBase)`: + Return the version incremented by the release + type (`major`, `premajor`, `minor`, `preminor`, `patch`, + `prepatch`, `prerelease`, or `release`), or null if it's not valid + * `premajor` in one call will bump the version up to the next major + version and down to a prerelease of that major version. + `preminor`, and `prepatch` work the same way. + * If called from a non-prerelease version, `prerelease` will work the + same as `prepatch`. It increments the patch version and then makes a + prerelease. If the input version is already a prerelease it simply + increments it. + * `release` will remove any prerelease part of the version. + * `identifier` can be used to prefix `premajor`, `preminor`, + `prepatch`, or `prerelease` version increments. `identifierBase` + is the base to be used for the `prerelease` identifier. +* `prerelease(v)`: Returns an array of prerelease components, or null + if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` +* `major(v)`: Return the major version number. +* `minor(v)`: Return the minor version number. +* `patch(v)`: Return the patch version number. +* `intersects(r1, r2, loose)`: Return true if the two supplied ranges + or comparators intersect. +* `parse(v)`: Attempt to parse a string as a semantic version, returning either + a `SemVer` object or `null`. +* `truncate(v, releaseType)`: Return the version with components _lower_ + than `releaseType` dropped off, e.g.: + * `major` removes build & prerelease info and sets minor & patch to 0. + * `minor` removes build & prerelease info, and sets patch to 0 + * `patch` removes build & prerelease info + * All prerelease types remove build info only + +### Comparison + +* `gt(v1, v2)`: `v1 > v2` +* `gte(v1, v2)`: `v1 >= v2` +* `lt(v1, v2)`: `v1 < v2` +* `lte(v1, v2)`: `v1 <= v2` +* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, + even if they're not the same string. You already know how to + compare strings. +* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. +* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call + the corresponding function above. `"==="` and `"!=="` do simple + string comparison, but are included for completeness. Throws if an + invalid comparison string is provided. +* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `rcompare(v1, v2)`: The reverse of `compare`. Sorts an array of versions + in descending order when passed to `Array.sort()`. +* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions + are equal. Sorts in ascending order if passed to `Array.sort()`. +* `compareLoose(v1, v2)`: Short for `compare(v1, v2, { loose: true })`. +* `diff(v1, v2)`: Returns the difference between two versions by the release type + (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), + or null if the versions are the same. + +### Sorting + +* `sort(versions)`: Returns a sorted array of versions based on the `compareBuild` + function. +* `rsort(versions)`: The reverse of `sort`. Returns an array of versions based on + the `compareBuild` function in descending order. + +### Comparators + +* `intersects(comparator)`: Return true if the comparators intersect + +### Ranges + +* `validRange(range)`: Return the valid range or null if it's not valid. +* `satisfies(version, range)`: Return true if the version satisfies the + range. +* `maxSatisfying(versions, range)`: Return the highest version in the list + that satisfies the range, or `null` if none of them do. +* `minSatisfying(versions, range)`: Return the lowest version in the list + that satisfies the range, or `null` if none of them do. +* `minVersion(range)`: Return the lowest version that can match + the given range. +* `gtr(version, range)`: Return `true` if the version is greater than all the + versions possible in the range. +* `ltr(version, range)`: Return `true` if the version is less than all the + versions possible in the range. +* `outside(version, range, hilo)`: Return true if the version is outside + the bounds of the range in either the high or low direction. The + `hilo` argument must be either the string `'>'` or `'<'`. (This is + the function called by `gtr` and `ltr`.) +* `intersects(range)`: Return true if any of the range comparators intersect. +* `simplifyRange(versions, range)`: Return a "simplified" range that + matches the same items in the `versions` list as the range specified. Note + that it does *not* guarantee that it would match the same versions in all + cases, only for the set of versions provided. This is useful when + generating ranges by joining together multiple versions with `||` + programmatically, to provide the user with something a bit more + ergonomic. If the provided range is shorter in string-length than the + generated range, then that is returned. +* `subset(subRange, superRange)`: Return `true` if the `subRange` range is + entirely contained by the `superRange` range. + +Note that, since ranges may be non-contiguous, a version might not be +greater than a range, less than a range, *or* satisfy a range! For +example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` +until `2.0.0`, so version `1.2.10` would not be greater than the +range (because `2.0.1` satisfies, which is higher), nor less than the +range (since `1.2.8` satisfies, which is lower), and it also does not +satisfy the range. + +If you want to know if a version satisfies or does not satisfy a +range, use the `satisfies(version, range)` function. + +### Coercion + +* `coerce(version, options)`: Coerces a string to semver if possible + +This aims to provide a very forgiving translation of a non-semver string to +semver. It looks for the first digit in a string and consumes all +remaining characters which satisfy at least a partial semver (e.g., `1`, +`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer +versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All +surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes +`3.4.0`). Only text which lacks digits will fail coercion (`version one` +is not valid). The maximum length for any semver component considered for +coercion is 16 characters; longer components will be ignored +(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any +semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value +components are invalid (`9999999999999999.4.7.4` is likely invalid). + +If the `options.rtl` flag is set, then `coerce` will return the right-most +coercible tuple that does not share an ending index with a longer coercible +tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not +`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of +any other overlapping SemVer tuple. + +If the `options.includePrerelease` flag is set, then the `coerce` result will contain +prerelease and build parts of a version. For example, `1.2.3.4-rc.1+rev.2` +will preserve prerelease `rc.1` and build `rev.2` in the result. + +### Clean + +* `clean(version)`: Clean a string to be a valid semver if possible + +This will return a cleaned and trimmed semver version. If the provided +version is not valid a null will be returned. This does not work for +ranges. + +ex. +* `s.clean(' = v 2.1.5foo')`: `null` +* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean(' = v 2.1.5-foo')`: `null` +* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean('=v2.1.5')`: `'2.1.5'` +* `s.clean(' =v2.1.5')`: `'2.1.5'` +* `s.clean(' 2.1.5 ')`: `'2.1.5'` +* `s.clean('~1.0.0')`: `null` + +## Constants + +As a convenience, helper constants are exported to provide information about what `node-semver` supports: + +### `RELEASE_TYPES` + +- major +- premajor +- minor +- preminor +- patch +- prepatch +- prerelease + +``` +const semver = require('semver'); + +if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) { + console.log('This is a valid release type!'); +} else { + console.warn('This is NOT a valid release type!'); +} +``` + +### `SEMVER_SPEC_VERSION` + +2.0.0 + +``` +const semver = require('semver'); + +console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION); +``` + +## Exported Modules + + + +You may pull in just the part of this semver utility that you need if you +are sensitive to packing and tree-shaking concerns. The main +`require('semver')` export uses getter functions to lazily load the parts +of the API that are used. + +The following modules are available: + +* `require('semver')` +* `require('semver/classes')` +* `require('semver/classes/comparator')` +* `require('semver/classes/range')` +* `require('semver/classes/semver')` +* `require('semver/functions/clean')` +* `require('semver/functions/cmp')` +* `require('semver/functions/coerce')` +* `require('semver/functions/compare')` +* `require('semver/functions/compare-build')` +* `require('semver/functions/compare-loose')` +* `require('semver/functions/diff')` +* `require('semver/functions/eq')` +* `require('semver/functions/gt')` +* `require('semver/functions/gte')` +* `require('semver/functions/inc')` +* `require('semver/functions/lt')` +* `require('semver/functions/lte')` +* `require('semver/functions/major')` +* `require('semver/functions/minor')` +* `require('semver/functions/neq')` +* `require('semver/functions/parse')` +* `require('semver/functions/patch')` +* `require('semver/functions/prerelease')` +* `require('semver/functions/rcompare')` +* `require('semver/functions/rsort')` +* `require('semver/functions/satisfies')` +* `require('semver/functions/sort')` +* `require('semver/functions/truncate')` +* `require('semver/functions/valid')` +* `require('semver/ranges/gtr')` +* `require('semver/ranges/intersects')` +* `require('semver/ranges/ltr')` +* `require('semver/ranges/max-satisfying')` +* `require('semver/ranges/min-satisfying')` +* `require('semver/ranges/min-version')` +* `require('semver/ranges/outside')` +* `require('semver/ranges/simplify')` +* `require('semver/ranges/subset')` +* `require('semver/ranges/to-comparators')` +* `require('semver/ranges/valid')` + diff --git a/apps/api/.output/node_modules/semver/bin/semver.js b/apps/api/.output/node_modules/semver/bin/semver.js new file mode 100644 index 0000000..9ae8aad --- /dev/null +++ b/apps/api/.output/node_modules/semver/bin/semver.js @@ -0,0 +1,195 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +'use strict' + +const argv = process.argv.slice(2) + +let versions = [] + +const range = [] + +let inc = null + +const version = require('../package.json').version + +let loose = false + +let includePrerelease = false + +let coerce = false + +let rtl = false + +let identifier + +let identifierBase + +const semver = require('../') +const parseOptions = require('../internal/parse-options') + +let reverse = false + +let options = {} + +const main = () => { + if (!argv.length) { + return help() + } + while (argv.length) { + let a = argv.shift() + const indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + const value = a.slice(indexOfEqualSign + 1) + a = a.slice(0, indexOfEqualSign) + argv.unshift(value) + } + + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + if (semver.RELEASE_TYPES.includes(argv[0]) || (argv[0] === 'release')) { + inc = { value: argv.shift(), maybeErrantValue: null, option: a } + } else { + inc = { value: 'patch', maybeErrantValue: argv[0], option: a } + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-n': + identifierBase = argv.shift() + if (identifierBase === 'false') { + identifierBase = false + } + break + case '-c': case '--coerce': + coerce = true + break + case '--rtl': + rtl = true + break + case '--ltr': + rtl = false + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + options = parseOptions({ loose, includePrerelease, rtl }) + + if ( + inc && + versions.includes(inc.maybeErrantValue) && + !semver.valid(inc.maybeErrantValue, options) + ) { + console.warn(`Invalid value for ${inc.option}; defaulting to 'patch'. This may become a failure in future major versions.`) + } + + versions = versions.map((v) => { + return coerce ? (semver.coerce(v, options) || { version: v }).version : v + }).filter((v) => { + return semver.valid(v, options) + }) + if (!versions.length) { + return fail() + } + if (inc && (versions.length !== 1 || range.length)) { + return failInc() + } + + for (let i = 0, l = range.length; i < l; i++) { + versions = versions.filter((v) => { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) { + return fail() + } + } + versions + .sort((a, b) => semver[reverse ? 'rcompare' : 'compare'](a, b, options)) + .map(v => semver.clean(v, options)) + .map(v => inc ? semver.inc(v, inc.value, options, identifier, identifierBase) : v) + .forEach(v => console.log(v)) +} + +const failInc = () => { + console.error('--inc can only be used on a single version with no range') + fail() +} + +const fail = () => process.exit(1) + +const help = () => console.log( +`SemVer ${version} + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, prerelease, or release. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +-n + Base number to be used for the prerelease identifier. + Can be either 0 or 1, or false to omit the number altogether. + Defaults to 0. + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them.`) + +main() diff --git a/apps/api/.output/node_modules/semver/classes/comparator.js b/apps/api/.output/node_modules/semver/classes/comparator.js new file mode 100644 index 0000000..647c1f0 --- /dev/null +++ b/apps/api/.output/node_modules/semver/classes/comparator.js @@ -0,0 +1,143 @@ +'use strict' + +const ANY = Symbol('SemVer ANY') +// hoisted class for cyclic dependency +class Comparator { + static get ANY () { + return ANY + } + + constructor (comp, options) { + options = parseOptions(options) + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + comp = comp.trim().split(/\s+/).join(' ') + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const m = comp.match(r) + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) + } + + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + + options = parseOptions(options) + + // Special cases where nothing can possibly be lower + if (options.includePrerelease && + (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { + return false + } + if (!options.includePrerelease && + (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { + return false + } + + // Same direction increasing (> or >=) + if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { + return true + } + // Same direction decreasing (< or <=) + if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { + return true + } + // same SemVer and both sides are inclusive (<= or >=) + if ( + (this.semver.version === comp.semver.version) && + this.operator.includes('=') && comp.operator.includes('=')) { + return true + } + // opposite directions less than + if (cmp(this.semver, '<', comp.semver, options) && + this.operator.startsWith('>') && comp.operator.startsWith('<')) { + return true + } + // opposite directions greater than + if (cmp(this.semver, '>', comp.semver, options) && + this.operator.startsWith('<') && comp.operator.startsWith('>')) { + return true + } + return false + } +} + +module.exports = Comparator + +const parseOptions = require('../internal/parse-options') +const { safeRe: re, t } = require('../internal/re') +const cmp = require('../functions/cmp') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const Range = require('./range') diff --git a/apps/api/.output/node_modules/semver/classes/index.js b/apps/api/.output/node_modules/semver/classes/index.js new file mode 100644 index 0000000..91c24ec --- /dev/null +++ b/apps/api/.output/node_modules/semver/classes/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = { + SemVer: require('./semver.js'), + Range: require('./range.js'), + Comparator: require('./comparator.js'), +} diff --git a/apps/api/.output/node_modules/semver/classes/range.js b/apps/api/.output/node_modules/semver/classes/range.js new file mode 100644 index 0000000..a7d6556 --- /dev/null +++ b/apps/api/.output/node_modules/semver/classes/range.js @@ -0,0 +1,577 @@ +'use strict' + +const SPACE_CHARACTERS = /\s+/g + +// hoisted class for cyclic dependency +class Range { + constructor (range, options) { + options = parseOptions(options) + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value + this.set = [[range]] + this.formatted = undefined + return this + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range.trim().replace(SPACE_CHARACTERS, ' ') + + // First, split on || + this.set = this.raw + .split('||') + // map the range to a 2d array of comparators + .map(r => this.parseRange(r.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length) + + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`) + } + + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) { + this.set = [first] + } else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } + + this.formatted = undefined + } + + get range () { + if (this.formatted === undefined) { + this.formatted = '' + for (let i = 0; i < this.set.length; i++) { + if (i > 0) { + this.formatted += '||' + } + const comps = this.set[i] + for (let k = 0; k < comps.length; k++) { + if (k > 0) { + this.formatted += ' ' + } + this.formatted += comps[k].toString().trim() + } + } + } + return this.formatted + } + + format () { + return this.range + } + + toString () { + return this.range + } + + parseRange (range) { + // strip build metadata so it can't bleed into the version + range = range.replace(BUILDSTRIPRE, '') + + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = + (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | + (this.options.loose && FLAG_LOOSE) + const memoKey = memoOpts + ':' + range + const cached = cache.get(memoKey) + if (cached) { + return cached + } + + const loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) + debug('hyphen replace', range) + + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + debug('tilde trim', range) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + debug('caret trim', range) + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + let rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)) + + if (loose) { + // in loose mode, throw out any that are not valid comparators + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options) + return !!comp.match(re[t.COMPARATORLOOSE]) + }) + } + debug('range list', rangeList) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const rangeMap = new Map() + const comparators = rangeList.map(comp => new Comparator(comp, this.options)) + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp] + } + rangeMap.set(comp.value, comp) + } + if (rangeMap.size > 1 && rangeMap.has('')) { + rangeMap.delete('') + } + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result + } + + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } + + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } +} + +module.exports = Range + +const LRU = require('../internal/lrucache') +const cache = new LRU() + +const parseOptions = require('../internal/parse-options') +const Comparator = require('./comparator') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const { + safeRe: re, + src, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace, +} = require('../internal/re') +const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants') + +// unbounded global build-metadata stripper used by parseRange +const BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g') + +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +const isSatisfiable = (comparators, options) => { + let result = true + const remainingComparators = comparators.slice() + let testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +const parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], '') + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +const isX = id => !id || id.toLowerCase() === 'x' || id === '*' + +const invalidXRangeOrder = (M, m, p) => ( + (isX(M) && !isX(m)) || + (isX(m) && p && !isX(p)) +) + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +const replaceTildes = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceTilde(c, options)) + .join(' ') +} + +const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + // if we're including prereleases in the match, then the lower bound is + // -0, the lowest possible prerelease value, just like x-ranges and carets. + // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as. + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else if (pr) { + debug('replaceTilde pr', pr) + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +const replaceCarets = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceCaret(c, options)) + .join(' ') +} + +const replaceCaret = (comp, options) => { + debug('caret', comp, options) + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0` + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0` + } + } + + debug('caret return', ret) + return ret + }) +} + +const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options) + return comp + .split(/\s+/) + .map((c) => replaceXRange(c, options)) + .join(' ') +} + +const replaceXRange = (comp, options) => { + comp = comp.trim() + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + if (invalidXRangeOrder(M, m, p)) { + return comp + } + + const xM = isX(M) + const xm = xM || isX(m) + const xp = xm || isX(p) + const anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + if (gtlt === '<') { + pr = '-0' + } + + ret = `${gtlt + M}.${m}.${p}${pr}` + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0` + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +const replaceStars = (comp, options) => { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp + .trim() + .replace(re[t.STAR], '') +} + +const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options) + return comp + .trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +// TODO build? +const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}` + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` + } else if (fpr) { + from = `>=${from}` + } else { + from = `>=${from}${incPr ? '-0' : ''}` + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0` + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0` + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}` + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0` + } else { + to = `<=${to}` + } + + return `${from} ${to}`.trim() +} + +const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} diff --git a/apps/api/.output/node_modules/semver/classes/semver.js b/apps/api/.output/node_modules/semver/classes/semver.js new file mode 100644 index 0000000..5438127 --- /dev/null +++ b/apps/api/.output/node_modules/semver/classes/semver.js @@ -0,0 +1,350 @@ +'use strict' + +const debug = require('../internal/debug') +const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants') +const { safeRe: re, t } = require('../internal/re') + +const parseOptions = require('../internal/parse-options') +const { compareIdentifiers } = require('../internal/identifiers') + +const isPrereleaseIdentifier = (prerelease, identifier) => { + const identifiers = identifier.split('.') + if (identifiers.length > prerelease.length) { + return false + } + + for (let i = 0; i < identifiers.length; i++) { + if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) { + return false + } + } + + return true +} + +class SemVer { + constructor (version, options) { + options = parseOptions(options) + + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease + + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() + } + + format () { + this.version = `${this.major}.${this.minor}.${this.patch}` + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}` + } + return this.version + } + + toString () { + return this.version + } + + compare (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options) + } + + if (other.version === this.version) { + return 0 + } + + return this.compareMain(other) || this.comparePre(other) + } + + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + if (this.major < other.major) { + return -1 + } + if (this.major > other.major) { + return 1 + } + if (this.minor < other.minor) { + return -1 + } + if (this.minor > other.minor) { + return 1 + } + if (this.patch < other.patch) { + return -1 + } + if (this.patch > other.patch) { + return 1 + } + return 0 + } + + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + let i = 0 + do { + const a = this.prerelease[i] + const b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + let i = 0 + do { + const a = this.build[i] + const b = other.build[i] + debug('build compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier, identifierBase) { + if (release.startsWith('pre')) { + if (!identifier && identifierBase === false) { + throw new Error('invalid increment argument: identifier is empty') + } + // Avoid an invalid semver results + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]) + if (!match || match[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`) + } + } + } + + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier, identifierBase) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier, identifierBase) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier, identifierBase) + this.inc('pre', identifier, identifierBase) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier, identifierBase) + } + this.inc('pre', identifier, identifierBase) + break + case 'release': + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`) + } + this.prerelease.length = 0 + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': { + const base = Number(identifierBase) ? 1 : 0 + + if (this.prerelease.length === 0) { + this.prerelease = [base] + } else { + let i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + if (identifier === this.prerelease.join('.') && identifierBase === false) { + throw new Error('invalid increment argument: identifier already exists') + } + this.prerelease.push(base) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + let prerelease = [identifier, base] + if (identifierBase === false) { + prerelease = [identifier] + } + if (isPrereleaseIdentifier(this.prerelease, identifier)) { + const prereleaseBase = this.prerelease[identifier.split('.').length] + if (isNaN(prereleaseBase)) { + this.prerelease = prerelease + } + } else { + this.prerelease = prerelease + } + } + break + } + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.raw = this.format() + if (this.build.length) { + this.raw += `+${this.build.join('.')}` + } + return this + } +} + +module.exports = SemVer diff --git a/apps/api/.output/node_modules/semver/functions/clean.js b/apps/api/.output/node_modules/semver/functions/clean.js new file mode 100644 index 0000000..79703d6 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/clean.js @@ -0,0 +1,8 @@ +'use strict' + +const parse = require('./parse') +const clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} +module.exports = clean diff --git a/apps/api/.output/node_modules/semver/functions/cmp.js b/apps/api/.output/node_modules/semver/functions/cmp.js new file mode 100644 index 0000000..77487dc --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/cmp.js @@ -0,0 +1,54 @@ +'use strict' + +const eq = require('./eq') +const neq = require('./neq') +const gt = require('./gt') +const gte = require('./gte') +const lt = require('./lt') +const lte = require('./lte') + +const cmp = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a === b + + case '!==': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) + } +} +module.exports = cmp diff --git a/apps/api/.output/node_modules/semver/functions/coerce.js b/apps/api/.output/node_modules/semver/functions/coerce.js new file mode 100644 index 0000000..cfe0275 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/coerce.js @@ -0,0 +1,62 @@ +'use strict' + +const SemVer = require('../classes/semver') +const parse = require('./parse') +const { safeRe: re, t } = require('../internal/re') + +const coerce = (version, options) => { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + let match = null + if (!options.rtl) { + match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL] + let next + while ((next = coerceRtlRegex.exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + coerceRtlRegex.lastIndex = -1 + } + + if (match === null) { + return null + } + + const major = match[2] + const minor = match[3] || '0' + const patch = match[4] || '0' + const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : '' + const build = options.includePrerelease && match[6] ? `+${match[6]}` : '' + + return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options) +} +module.exports = coerce diff --git a/apps/api/.output/node_modules/semver/functions/compare-build.js b/apps/api/.output/node_modules/semver/functions/compare-build.js new file mode 100644 index 0000000..99157cf --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/compare-build.js @@ -0,0 +1,9 @@ +'use strict' + +const SemVer = require('../classes/semver') +const compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose) + const versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} +module.exports = compareBuild diff --git a/apps/api/.output/node_modules/semver/functions/compare-loose.js b/apps/api/.output/node_modules/semver/functions/compare-loose.js new file mode 100644 index 0000000..7531634 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/compare-loose.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const compareLoose = (a, b) => compare(a, b, true) +module.exports = compareLoose diff --git a/apps/api/.output/node_modules/semver/functions/compare.js b/apps/api/.output/node_modules/semver/functions/compare.js new file mode 100644 index 0000000..63d8090 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/compare.js @@ -0,0 +1,7 @@ +'use strict' + +const SemVer = require('../classes/semver') +const compare = (a, b, loose) => + new SemVer(a, loose).compare(new SemVer(b, loose)) + +module.exports = compare diff --git a/apps/api/.output/node_modules/semver/functions/diff.js b/apps/api/.output/node_modules/semver/functions/diff.js new file mode 100644 index 0000000..c99ab51 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/diff.js @@ -0,0 +1,60 @@ +'use strict' + +const parse = require('./parse.js') + +const diff = (version1, version2) => { + const v1 = parse(version1, null, true) + const v2 = parse(version2, null, true) + const comparison = v1.compare(v2) + + if (comparison === 0) { + return null + } + + const v1Higher = comparison > 0 + const highVersion = v1Higher ? v1 : v2 + const lowVersion = v1Higher ? v2 : v1 + const highHasPre = !!highVersion.prerelease.length + const lowHasPre = !!lowVersion.prerelease.length + + if (lowHasPre && !highHasPre) { + // Going from prerelease -> no prerelease requires some special casing + + // If the low version has only a major, then it will always be a major + // Some examples: + // 1.0.0-1 -> 1.0.0 + // 1.0.0-1 -> 1.1.1 + // 1.0.0-1 -> 2.0.0 + if (!lowVersion.patch && !lowVersion.minor) { + return 'major' + } + + // If the main part has no difference + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return 'minor' + } + return 'patch' + } + } + + // add the `pre` prefix if we are going to a prerelease version + const prefix = highHasPre ? 'pre' : '' + + if (v1.major !== v2.major) { + return prefix + 'major' + } + + if (v1.minor !== v2.minor) { + return prefix + 'minor' + } + + if (v1.patch !== v2.patch) { + return prefix + 'patch' + } + + // high and low are prereleases + return 'prerelease' +} + +module.exports = diff diff --git a/apps/api/.output/node_modules/semver/functions/eq.js b/apps/api/.output/node_modules/semver/functions/eq.js new file mode 100644 index 0000000..5f0eead --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/eq.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const eq = (a, b, loose) => compare(a, b, loose) === 0 +module.exports = eq diff --git a/apps/api/.output/node_modules/semver/functions/gt.js b/apps/api/.output/node_modules/semver/functions/gt.js new file mode 100644 index 0000000..84a57dd --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/gt.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const gt = (a, b, loose) => compare(a, b, loose) > 0 +module.exports = gt diff --git a/apps/api/.output/node_modules/semver/functions/gte.js b/apps/api/.output/node_modules/semver/functions/gte.js new file mode 100644 index 0000000..7c52bdf --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/gte.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const gte = (a, b, loose) => compare(a, b, loose) >= 0 +module.exports = gte diff --git a/apps/api/.output/node_modules/semver/functions/inc.js b/apps/api/.output/node_modules/semver/functions/inc.js new file mode 100644 index 0000000..ff999e9 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/inc.js @@ -0,0 +1,21 @@ +'use strict' + +const SemVer = require('../classes/semver') + +const inc = (version, release, options, identifier, identifierBase) => { + if (typeof (options) === 'string') { + identifierBase = identifier + identifier = options + options = undefined + } + + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier, identifierBase).version + } catch (er) { + return null + } +} +module.exports = inc diff --git a/apps/api/.output/node_modules/semver/functions/lt.js b/apps/api/.output/node_modules/semver/functions/lt.js new file mode 100644 index 0000000..2fb32a0 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/lt.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const lt = (a, b, loose) => compare(a, b, loose) < 0 +module.exports = lt diff --git a/apps/api/.output/node_modules/semver/functions/lte.js b/apps/api/.output/node_modules/semver/functions/lte.js new file mode 100644 index 0000000..da9ee8f --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/lte.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const lte = (a, b, loose) => compare(a, b, loose) <= 0 +module.exports = lte diff --git a/apps/api/.output/node_modules/semver/functions/major.js b/apps/api/.output/node_modules/semver/functions/major.js new file mode 100644 index 0000000..e6d08dc --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/major.js @@ -0,0 +1,5 @@ +'use strict' + +const SemVer = require('../classes/semver') +const major = (a, loose) => new SemVer(a, loose).major +module.exports = major diff --git a/apps/api/.output/node_modules/semver/functions/minor.js b/apps/api/.output/node_modules/semver/functions/minor.js new file mode 100644 index 0000000..9e70ffd --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/minor.js @@ -0,0 +1,5 @@ +'use strict' + +const SemVer = require('../classes/semver') +const minor = (a, loose) => new SemVer(a, loose).minor +module.exports = minor diff --git a/apps/api/.output/node_modules/semver/functions/neq.js b/apps/api/.output/node_modules/semver/functions/neq.js new file mode 100644 index 0000000..84326b7 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/neq.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const neq = (a, b, loose) => compare(a, b, loose) !== 0 +module.exports = neq diff --git a/apps/api/.output/node_modules/semver/functions/parse.js b/apps/api/.output/node_modules/semver/functions/parse.js new file mode 100644 index 0000000..d544d33 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/parse.js @@ -0,0 +1,18 @@ +'use strict' + +const SemVer = require('../classes/semver') +const parse = (version, options, throwErrors = false) => { + if (version instanceof SemVer) { + return version + } + try { + return new SemVer(version, options) + } catch (er) { + if (!throwErrors) { + return null + } + throw er + } +} + +module.exports = parse diff --git a/apps/api/.output/node_modules/semver/functions/patch.js b/apps/api/.output/node_modules/semver/functions/patch.js new file mode 100644 index 0000000..7675162 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/patch.js @@ -0,0 +1,5 @@ +'use strict' + +const SemVer = require('../classes/semver') +const patch = (a, loose) => new SemVer(a, loose).patch +module.exports = patch diff --git a/apps/api/.output/node_modules/semver/functions/prerelease.js b/apps/api/.output/node_modules/semver/functions/prerelease.js new file mode 100644 index 0000000..b8fe1db --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/prerelease.js @@ -0,0 +1,8 @@ +'use strict' + +const parse = require('./parse') +const prerelease = (version, options) => { + const parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} +module.exports = prerelease diff --git a/apps/api/.output/node_modules/semver/functions/rcompare.js b/apps/api/.output/node_modules/semver/functions/rcompare.js new file mode 100644 index 0000000..8e1c222 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/rcompare.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const rcompare = (a, b, loose) => compare(b, a, loose) +module.exports = rcompare diff --git a/apps/api/.output/node_modules/semver/functions/rsort.js b/apps/api/.output/node_modules/semver/functions/rsort.js new file mode 100644 index 0000000..5d3d200 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/rsort.js @@ -0,0 +1,5 @@ +'use strict' + +const compareBuild = require('./compare-build') +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) +module.exports = rsort diff --git a/apps/api/.output/node_modules/semver/functions/satisfies.js b/apps/api/.output/node_modules/semver/functions/satisfies.js new file mode 100644 index 0000000..a0264a2 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/satisfies.js @@ -0,0 +1,12 @@ +'use strict' + +const Range = require('../classes/range') +const satisfies = (version, range, options) => { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} +module.exports = satisfies diff --git a/apps/api/.output/node_modules/semver/functions/sort.js b/apps/api/.output/node_modules/semver/functions/sort.js new file mode 100644 index 0000000..edb24b1 --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/sort.js @@ -0,0 +1,5 @@ +'use strict' + +const compareBuild = require('./compare-build') +const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) +module.exports = sort diff --git a/apps/api/.output/node_modules/semver/functions/truncate.js b/apps/api/.output/node_modules/semver/functions/truncate.js new file mode 100644 index 0000000..8314e4e --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/truncate.js @@ -0,0 +1,48 @@ +'use strict' + +const parse = require('./parse') +const constants = require('../internal/constants') +const SemVer = require('../classes/semver') + +const truncate = (version, truncation, options) => { + if (!constants.RELEASE_TYPES.includes(truncation)) { + return null + } + + const clonedVersion = cloneInputVersion(version, options) + return clonedVersion && doTruncation(clonedVersion, truncation) +} + +const cloneInputVersion = (version, options) => { + const versionStringToParse = ( + version instanceof SemVer ? version.version : version + ) + + return parse(versionStringToParse, options) +} + +const doTruncation = (version, truncation) => { + if (isPrerelease(truncation)) { + return version.version + } + + version.prerelease = [] + + switch (truncation) { + case 'major': + version.minor = 0 + version.patch = 0 + break + case 'minor': + version.patch = 0 + break + } + + return version.format() +} + +const isPrerelease = (type) => { + return type.startsWith('pre') +} + +module.exports = truncate diff --git a/apps/api/.output/node_modules/semver/functions/valid.js b/apps/api/.output/node_modules/semver/functions/valid.js new file mode 100644 index 0000000..0db67ed --- /dev/null +++ b/apps/api/.output/node_modules/semver/functions/valid.js @@ -0,0 +1,8 @@ +'use strict' + +const parse = require('./parse') +const valid = (version, options) => { + const v = parse(version, options) + return v ? v.version : null +} +module.exports = valid diff --git a/apps/api/.output/node_modules/semver/index.js b/apps/api/.output/node_modules/semver/index.js new file mode 100644 index 0000000..bc1f608 --- /dev/null +++ b/apps/api/.output/node_modules/semver/index.js @@ -0,0 +1,93 @@ +'use strict' + +// just pre-load all the stuff that index.js lazily exports +const internalRe = require('./internal/re') +const constants = require('./internal/constants') +const SemVer = require('./classes/semver') +const identifiers = require('./internal/identifiers') +const parse = require('./functions/parse') +const valid = require('./functions/valid') +const clean = require('./functions/clean') +const inc = require('./functions/inc') +const diff = require('./functions/diff') +const major = require('./functions/major') +const minor = require('./functions/minor') +const patch = require('./functions/patch') +const prerelease = require('./functions/prerelease') +const compare = require('./functions/compare') +const rcompare = require('./functions/rcompare') +const compareLoose = require('./functions/compare-loose') +const compareBuild = require('./functions/compare-build') +const sort = require('./functions/sort') +const rsort = require('./functions/rsort') +const gt = require('./functions/gt') +const lt = require('./functions/lt') +const eq = require('./functions/eq') +const neq = require('./functions/neq') +const gte = require('./functions/gte') +const lte = require('./functions/lte') +const cmp = require('./functions/cmp') +const coerce = require('./functions/coerce') +const truncate = require('./functions/truncate') +const Comparator = require('./classes/comparator') +const Range = require('./classes/range') +const satisfies = require('./functions/satisfies') +const toComparators = require('./ranges/to-comparators') +const maxSatisfying = require('./ranges/max-satisfying') +const minSatisfying = require('./ranges/min-satisfying') +const minVersion = require('./ranges/min-version') +const validRange = require('./ranges/valid') +const outside = require('./ranges/outside') +const gtr = require('./ranges/gtr') +const ltr = require('./ranges/ltr') +const intersects = require('./ranges/intersects') +const simplifyRange = require('./ranges/simplify') +const subset = require('./ranges/subset') +module.exports = { + parse, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + truncate, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers, +} diff --git a/apps/api/.output/node_modules/semver/internal/constants.js b/apps/api/.output/node_modules/semver/internal/constants.js new file mode 100644 index 0000000..6d1db91 --- /dev/null +++ b/apps/api/.output/node_modules/semver/internal/constants.js @@ -0,0 +1,37 @@ +'use strict' + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0' + +const MAX_LENGTH = 256 +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || +/* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16 + +// Max safe length for a build identifier. The max length minus 6 characters for +// the shortest version with a build 0.0.0+BUILD. +const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 + +const RELEASE_TYPES = [ + 'major', + 'premajor', + 'minor', + 'preminor', + 'patch', + 'prepatch', + 'prerelease', +] + +module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 0b001, + FLAG_LOOSE: 0b010, +} diff --git a/apps/api/.output/node_modules/semver/internal/debug.js b/apps/api/.output/node_modules/semver/internal/debug.js new file mode 100644 index 0000000..20d1e9d --- /dev/null +++ b/apps/api/.output/node_modules/semver/internal/debug.js @@ -0,0 +1,11 @@ +'use strict' + +const debug = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {} + +module.exports = debug diff --git a/apps/api/.output/node_modules/semver/internal/identifiers.js b/apps/api/.output/node_modules/semver/internal/identifiers.js new file mode 100644 index 0000000..d053472 --- /dev/null +++ b/apps/api/.output/node_modules/semver/internal/identifiers.js @@ -0,0 +1,29 @@ +'use strict' + +const numeric = /^[0-9]+$/ +const compareIdentifiers = (a, b) => { + if (typeof a === 'number' && typeof b === 'number') { + return a === b ? 0 : a < b ? -1 : 1 + } + + const anum = numeric.test(a) + const bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) + +module.exports = { + compareIdentifiers, + rcompareIdentifiers, +} diff --git a/apps/api/.output/node_modules/semver/internal/lrucache.js b/apps/api/.output/node_modules/semver/internal/lrucache.js new file mode 100644 index 0000000..b8bf526 --- /dev/null +++ b/apps/api/.output/node_modules/semver/internal/lrucache.js @@ -0,0 +1,42 @@ +'use strict' + +class LRUCache { + constructor () { + this.max = 1000 + this.map = new Map() + } + + get (key) { + const value = this.map.get(key) + if (value === undefined) { + return undefined + } else { + // Remove the key from the map and add it to the end + this.map.delete(key) + this.map.set(key, value) + return value + } + } + + delete (key) { + return this.map.delete(key) + } + + set (key, value) { + const deleted = this.delete(key) + + if (!deleted && value !== undefined) { + // If cache is full, delete the least recently used item + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value + this.delete(firstKey) + } + + this.map.set(key, value) + } + + return this + } +} + +module.exports = LRUCache diff --git a/apps/api/.output/node_modules/semver/internal/parse-options.js b/apps/api/.output/node_modules/semver/internal/parse-options.js new file mode 100644 index 0000000..5295454 --- /dev/null +++ b/apps/api/.output/node_modules/semver/internal/parse-options.js @@ -0,0 +1,17 @@ +'use strict' + +// parse out just the options we care about +const looseOption = Object.freeze({ loose: true }) +const emptyOpts = Object.freeze({ }) +const parseOptions = options => { + if (!options) { + return emptyOpts + } + + if (typeof options !== 'object') { + return looseOption + } + + return options +} +module.exports = parseOptions diff --git a/apps/api/.output/node_modules/semver/internal/re.js b/apps/api/.output/node_modules/semver/internal/re.js new file mode 100644 index 0000000..2ec2c22 --- /dev/null +++ b/apps/api/.output/node_modules/semver/internal/re.js @@ -0,0 +1,223 @@ +'use strict' + +const { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH, +} = require('./constants') +const debug = require('./debug') +exports = module.exports = {} + +// The actual regexps go on exports.re +const re = exports.re = [] +const safeRe = exports.safeRe = [] +const src = exports.src = [] +const safeSrc = exports.safeSrc = [] +const t = exports.t = {} +let R = 0 + +const LETTERDASHNUMBER = '[a-zA-Z0-9-]' + +// Replace some greedy regex tokens to prevent regex dos issues. These regex are +// used internally via the safeRe object since all inputs in this library get +// normalized first to trim and collapse all extra whitespace. The original +// regexes are exported for userland consumption and lower level usage. A +// future breaking change could export the safer regex only with a note that +// all input should have extra whitespace removed. +const safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], +] + +const makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value + .split(`${token}*`).join(`${token}{0,${max}}`) + .split(`${token}+`).join(`${token}{1,${max}}`) + } + return value +} + +const createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value) + const index = R++ + debug(name, index, value) + t[name] = index + src[index] = value + safeSrc[index] = safe + re[index] = new RegExp(value, isGlobal ? 'g' : undefined) + safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') +createToken('NUMERICIDENTIFIERLOOSE', '\\d+') + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`) + +// ## Main Version +// Three dot-separated numeric identifiers. + +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`) + +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. +// Non-numeric identifiers include numeric identifiers but can be longer. +// Therefore non-numeric identifiers must go first. + +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER] +}|${src[t.NUMERICIDENTIFIER]})`) + +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER] +}|${src[t.NUMERICIDENTIFIERLOOSE]})`) + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) + +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`) + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +createToken('FULLPLAIN', `v?${src[t.MAINVERSION] +}${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`) + +createToken('FULL', `^${src[t.FULLPLAIN]}$`) + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] +}${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`) + +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) + +createToken('GTLT', '((?:<|>)?=?)') + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifier, meaning "any version" +// Only the first item is strictly required. +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) + +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +createToken('COERCEPLAIN', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`) +createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`) +createToken('COERCEFULL', src[t.COERCEPLAIN] + + `(?:${src[t.PRERELEASE]})?` + + `(?:${src[t.BUILD]})?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], true) +createToken('COERCERTLFULL', src[t.COERCEFULL], true) + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +createToken('LONETILDE', '(?:~>?)') + +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) +exports.tildeTrimReplace = '$1~' + +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +createToken('LONECARET', '(?:\\^)') + +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) +exports.caretTrimReplace = '$1^' + +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) +exports.comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`) + +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`) + +// Star ranges basically just allow anything at all. +createToken('STAR', '(<|>)?=?\\s*\\*') +// >=0.0.0 is like a star +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/apps/api/.output/node_modules/semver/node_modules/.bin/semver b/apps/api/.output/node_modules/semver/node_modules/.bin/semver new file mode 100644 index 0000000..45abba1 --- /dev/null +++ b/apps/api/.output/node_modules/semver/node_modules/.bin/semver @@ -0,0 +1,21 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules/semver/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules/semver/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../bin/semver.js" "$@" +else + exec node "$basedir/../../bin/semver.js" "$@" +fi diff --git a/apps/api/.output/node_modules/semver/node_modules/.bin/semver.CMD b/apps/api/.output/node_modules/semver/node_modules/.bin/semver.CMD new file mode 100644 index 0000000..6bf4f01 --- /dev/null +++ b/apps/api/.output/node_modules/semver/node_modules/.bin/semver.CMD @@ -0,0 +1,12 @@ +@SETLOCAL +@IF NOT DEFINED NODE_PATH ( + @SET "NODE_PATH=E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules\semver\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\node_modules" +) ELSE ( + @SET "NODE_PATH=E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules\semver\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\node_modules;%NODE_PATH%" +) +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\..\bin\semver.js" %* +) ELSE ( + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\..\bin\semver.js" %* +) diff --git a/apps/api/.output/node_modules/semver/node_modules/.bin/semver.ps1 b/apps/api/.output/node_modules/semver/node_modules/.bin/semver.ps1 new file mode 100644 index 0000000..5e848f7 --- /dev/null +++ b/apps/api/.output/node_modules/semver/node_modules/.bin/semver.ps1 @@ -0,0 +1,41 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +$pathsep=":" +$env_node_path=$env:NODE_PATH +$new_node_path="E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules\semver\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\node_modules" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" + $pathsep=";" +} else { + $new_node_path="/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules/semver/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/node_modules" +} +if ([string]::IsNullOrEmpty($env_node_path)) { + $env:NODE_PATH=$new_node_path +} else { + $env:NODE_PATH="$new_node_path$pathsep$env_node_path" +} + +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../../bin/semver.js" $args + } else { + & "$basedir/node$exe" "$basedir/../../bin/semver.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../../bin/semver.js" $args + } else { + & "node$exe" "$basedir/../../bin/semver.js" $args + } + $ret=$LASTEXITCODE +} +$env:NODE_PATH=$env_node_path +exit $ret diff --git a/apps/api/.output/node_modules/semver/package.json b/apps/api/.output/node_modules/semver/package.json new file mode 100644 index 0000000..0cb7c7b --- /dev/null +++ b/apps/api/.output/node_modules/semver/package.json @@ -0,0 +1,78 @@ +{ + "name": "semver", + "version": "7.8.5", + "description": "The semantic version parser used by npm.", + "main": "index.js", + "scripts": { + "test": "tap", + "snap": "tap", + "lint": "npm run eslint", + "postlint": "template-oss-check", + "lintfix": "npm run eslint -- --fix", + "posttest": "npm run lint", + "template-oss-apply": "template-oss-apply --force", + "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" + }, + "devDependencies": { + "@npmcli/eslint-config": "^7.0.0", + "@npmcli/template-oss": "5.0.0", + "benchmark": "^2.1.4", + "tap": "^16.0.0" + }, + "license": "ISC", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/node-semver.git" + }, + "bin": { + "semver": "bin/semver.js" + }, + "files": [ + "bin/", + "lib/", + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ], + "tap": { + "timeout": 30, + "coverage-map": "map.js", + "nyc-arg": [ + "--exclude", + "tap-snapshots/**" + ] + }, + "engines": { + "node": ">=10" + }, + "author": "GitHub Inc.", + "templateOSS": { + "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", + "version": "5.0.0", + "engines": ">=10", + "distPaths": [ + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ], + "allowPaths": [ + "/classes/", + "/functions/", + "/internal/", + "/ranges/", + "/index.js", + "/preload.js", + "/range.bnf", + "/benchmarks" + ], + "publish": "true" + } +} diff --git a/apps/api/.output/node_modules/semver/preload.js b/apps/api/.output/node_modules/semver/preload.js new file mode 100644 index 0000000..e6c47b9 --- /dev/null +++ b/apps/api/.output/node_modules/semver/preload.js @@ -0,0 +1,4 @@ +'use strict' + +// XXX remove in v8 or beyond +module.exports = require('./index.js') diff --git a/apps/api/.output/node_modules/semver/range.bnf b/apps/api/.output/node_modules/semver/range.bnf new file mode 100644 index 0000000..a7a4bc3 --- /dev/null +++ b/apps/api/.output/node_modules/semver/range.bnf @@ -0,0 +1,17 @@ +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | [1-9] ( [0-9] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= prepart ( '.' prepart ) * +prepart ::= nr | alphanumid +build ::= buildid ( '.' buildid ) * +alphanumid ::= ( [0-9] ) * [A-Za-z-] [-0-9A-Za-z] * +buildid ::= [-0-9A-Za-z]+ diff --git a/apps/api/.output/node_modules/semver/ranges/gtr.js b/apps/api/.output/node_modules/semver/ranges/gtr.js new file mode 100644 index 0000000..0e7601f --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/gtr.js @@ -0,0 +1,6 @@ +'use strict' + +// Determine if version is greater than all the versions possible in the range. +const outside = require('./outside') +const gtr = (version, range, options) => outside(version, range, '>', options) +module.exports = gtr diff --git a/apps/api/.output/node_modules/semver/ranges/intersects.js b/apps/api/.output/node_modules/semver/ranges/intersects.js new file mode 100644 index 0000000..917be7e --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/intersects.js @@ -0,0 +1,9 @@ +'use strict' + +const Range = require('../classes/range') +const intersects = (r1, r2, options) => { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2, options) +} +module.exports = intersects diff --git a/apps/api/.output/node_modules/semver/ranges/ltr.js b/apps/api/.output/node_modules/semver/ranges/ltr.js new file mode 100644 index 0000000..aa5e568 --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/ltr.js @@ -0,0 +1,6 @@ +'use strict' + +const outside = require('./outside') +// Determine if version is less than all the versions possible in the range +const ltr = (version, range, options) => outside(version, range, '<', options) +module.exports = ltr diff --git a/apps/api/.output/node_modules/semver/ranges/max-satisfying.js b/apps/api/.output/node_modules/semver/ranges/max-satisfying.js new file mode 100644 index 0000000..01fe5ae --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/max-satisfying.js @@ -0,0 +1,27 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Range = require('../classes/range') + +const maxSatisfying = (versions, range, options) => { + let max = null + let maxSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} +module.exports = maxSatisfying diff --git a/apps/api/.output/node_modules/semver/ranges/min-satisfying.js b/apps/api/.output/node_modules/semver/ranges/min-satisfying.js new file mode 100644 index 0000000..af89c8e --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/min-satisfying.js @@ -0,0 +1,26 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const minSatisfying = (versions, range, options) => { + let min = null + let minSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} +module.exports = minSatisfying diff --git a/apps/api/.output/node_modules/semver/ranges/min-version.js b/apps/api/.output/node_modules/semver/ranges/min-version.js new file mode 100644 index 0000000..09a65aa --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/min-version.js @@ -0,0 +1,63 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const gt = require('../functions/gt') + +const minVersion = (range, loose) => { + range = new Range(range, loose) + + let minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let setMin = null + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt(compver, setMin)) { + setMin = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }) + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin + } + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} +module.exports = minVersion diff --git a/apps/api/.output/node_modules/semver/ranges/outside.js b/apps/api/.output/node_modules/semver/ranges/outside.js new file mode 100644 index 0000000..ca74421 --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/outside.js @@ -0,0 +1,82 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Comparator = require('../classes/comparator') +const { ANY } = Comparator +const Range = require('../classes/range') +const satisfies = require('../functions/satisfies') +const gt = require('../functions/gt') +const lt = require('../functions/lt') +const lte = require('../functions/lte') +const gte = require('../functions/gte') + +const outside = (version, range, hilo, options) => { + version = new SemVer(version, options) + range = new Range(range, options) + + let gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisfies the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let high = null + let low = null + + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +module.exports = outside diff --git a/apps/api/.output/node_modules/semver/ranges/simplify.js b/apps/api/.output/node_modules/semver/ranges/simplify.js new file mode 100644 index 0000000..262732e --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/simplify.js @@ -0,0 +1,49 @@ +'use strict' + +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') +module.exports = (versions, range, options) => { + const set = [] + let first = null + let prev = null + const v = versions.sort((a, b) => compare(a, b, options)) + for (const version of v) { + const included = satisfies(version, range, options) + if (included) { + prev = version + if (!first) { + first = version + } + } else { + if (prev) { + set.push([first, prev]) + } + prev = null + first = null + } + } + if (first) { + set.push([first, null]) + } + + const ranges = [] + for (const [min, max] of set) { + if (min === max) { + ranges.push(min) + } else if (!max && min === v[0]) { + ranges.push('*') + } else if (!max) { + ranges.push(`>=${min}`) + } else if (min === v[0]) { + ranges.push(`<=${max}`) + } else { + ranges.push(`${min} - ${max}`) + } + } + const simplified = ranges.join(' || ') + const original = typeof range.raw === 'string' ? range.raw : String(range) + return simplified.length < original.length ? simplified : range +} diff --git a/apps/api/.output/node_modules/semver/ranges/subset.js b/apps/api/.output/node_modules/semver/ranges/subset.js new file mode 100644 index 0000000..a949832 --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/subset.js @@ -0,0 +1,249 @@ +'use strict' + +const Range = require('../classes/range.js') +const Comparator = require('../classes/comparator.js') +const { ANY } = Comparator +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') + +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a null set, OR +// - Every simple range `r1, r2, ...` which is not a null set is a subset of +// some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else if in prerelease mode, return false +// - else replace c with `[>=0.0.0]` +// - If C is only the ANY comparator +// - if in prerelease mode, return true +// - else replace C with `[>=0.0.0]` +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If any C is a = range, and GT or LT are set, return false +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the GT.semver tuple, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If LT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the LT.semver tuple, return false +// - Else return true + +const subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true + } + + sub = new Range(sub, options) + dom = new Range(dom, options) + let sawNonNull = false + + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options) + sawNonNull = sawNonNull || isSub !== null + if (isSub) { + continue OUTER + } + } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) { + return false + } + } + return true +} + +const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')] +const minimumVersion = [new Comparator('>=0.0.0')] + +const simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true + } + + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease + } else { + sub = minimumVersion + } + } + + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true + } else { + dom = minimumVersion + } + } + + const eqSet = new Set() + let gt, lt + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') { + gt = higherGT(gt, c, options) + } else if (c.operator === '<' || c.operator === '<=') { + lt = lowerLT(lt, c, options) + } else { + eqSet.add(c.semver) + } + } + + if (eqSet.size > 1) { + return null + } + + let gtltComp + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options) + if (gtltComp > 0) { + return null + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { + return null + } + } + + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null + } + + if (lt && !satisfies(eq, String(lt), options)) { + return null + } + + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false + } + } + + return true + } + + let higher, lower + let hasDomLT, hasDomGT + // if the subset has a prerelease, we need a comparator in the superset + // with the same tuple and a prerelease, or it's not a subset + let needDomLTPre = lt && + !options.includePrerelease && + lt.semver.prerelease.length ? lt.semver : false + let needDomGTPre = gt && + !options.includePrerelease && + gt.semver.prerelease.length ? gt.semver : false + // exception: <1.2.3-0 is the same as <1.2.3 + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && + lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false + } + + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomGTPre.major && + c.semver.minor === needDomGTPre.minor && + c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false + } + } + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options) + if (higher === c && higher !== gt) { + return false + } + } else if (gt.operator === '>=' && !c.test(gt.semver)) { + return false + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomLTPre.major && + c.semver.minor === needDomLTPre.minor && + c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false + } + } + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options) + if (lower === c && lower !== lt) { + return false + } + } else if (lt.operator === '<=' && !c.test(lt.semver)) { + return false + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false + } + } + + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false + } + + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false + } + + // we needed a prerelease range in a specific tuple, but didn't get one + // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, + // because it includes prereleases in the 1.2.3 tuple + if (needDomGTPre || needDomLTPre) { + return false + } + + return true +} + +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a +} + +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a +} + +module.exports = subset diff --git a/apps/api/.output/node_modules/semver/ranges/to-comparators.js b/apps/api/.output/node_modules/semver/ranges/to-comparators.js new file mode 100644 index 0000000..5be2519 --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/to-comparators.js @@ -0,0 +1,10 @@ +'use strict' + +const Range = require('../classes/range') + +// Mostly just for testing and legacy API reasons +const toComparators = (range, options) => + new Range(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) + +module.exports = toComparators diff --git a/apps/api/.output/node_modules/semver/ranges/valid.js b/apps/api/.output/node_modules/semver/ranges/valid.js new file mode 100644 index 0000000..cc6b0e9 --- /dev/null +++ b/apps/api/.output/node_modules/semver/ranges/valid.js @@ -0,0 +1,13 @@ +'use strict' + +const Range = require('../classes/range') +const validRange = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} +module.exports = validRange diff --git a/apps/api/.output/node_modules/sharp/LICENSE b/apps/api/.output/node_modules/sharp/LICENSE new file mode 100644 index 0000000..37ec93a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/api/.output/node_modules/sharp/README.md b/apps/api/.output/node_modules/sharp/README.md new file mode 100644 index 0000000..7db7edd --- /dev/null +++ b/apps/api/.output/node_modules/sharp/README.md @@ -0,0 +1,112 @@ +# sharp + +sharp logo + +The typical use case for this high speed Node-API module +is to convert large images in common formats to +smaller, web-friendly JPEG, PNG, WebP, GIF and AVIF images of varying dimensions. + +It can be used with all JavaScript runtimes +that provide support for Node-API v9, including +Node.js (>= 20.9.0), Deno and Bun. + +Resizing an image is typically 4x-5x faster than using the +quickest ImageMagick and GraphicsMagick settings +due to its use of [libvips](https://github.com/libvips/libvips). + +Colour spaces, embedded ICC profiles and alpha transparency channels are all handled correctly. +Lanczos resampling ensures quality is not sacrificed for speed. + +As well as image resizing, operations such as +rotation, extraction, compositing and gamma correction are available. + +Most modern macOS, Windows and Linux systems +do not require any additional install or runtime dependencies. + +## Documentation + +Visit [sharp.pixelplumbing.com](https://sharp.pixelplumbing.com/) for complete +[installation instructions](https://sharp.pixelplumbing.com/install), +[API documentation](https://sharp.pixelplumbing.com/api-constructor), +[benchmark tests](https://sharp.pixelplumbing.com/performance) and +[changelog](https://sharp.pixelplumbing.com/changelog). + +## Examples + +```sh +npm install sharp +``` + +```javascript +// ESM +import sharp from 'sharp'; + +// CJS +const sharp = require('sharp'); +``` + +```javascript +await sharp(inputBuffer) + .resize({ width: 320, height: 240 }) + .toFile('output.webp', (err, info) => { ... }); +``` + +```javascript +const output = await sharp('input.jpg') + .autoOrient() + .resize({ width: 200 }) + .jpeg({ mozjpeg: true }) + .toBuffer(); +``` + +```javascript +const semiTransparentRedPng = await sharp({ + create: { + width: 48, + height: 48, + channels: 4, + background: { r: 255, g: 0, b: 0, alpha: 0.5 } + } +}) + .png() + .toBuffer(); +``` + +```javascript +const roundedCorners = Buffer.from( + '' +); + +const roundedCornerResizer = + sharp() + .resize(200, 200) + .composite([{ + input: roundedCorners, + blend: 'dest-in' + }]) + .png(); + +readableStream + .pipe(roundedCornerResizer) + .pipe(writableStream); +``` + +## Contributing + +A [guide for contributors](https://github.com/lovell/sharp/blob/main/.github/CONTRIBUTING.md) +covers reporting bugs, requesting features and submitting code changes. + +## Licensing + +Copyright 2013 Lovell Fuller and others. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/apps/api/.output/node_modules/sharp/dist/channel.cjs b/apps/api/.output/node_modules/sharp/dist/channel.cjs new file mode 100644 index 0000000..4fcc58e --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/channel.cjs @@ -0,0 +1,177 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const is = require('./is.cjs'); + +/** + * Boolean operations for bandbool. + * @private + */ +const bool = { + and: 'and', + or: 'or', + eor: 'eor' +}; + +/** + * Remove alpha channels, if any. This is a no-op if the image does not have an alpha channel. + * + * See also {@link /api-operation/#flatten flatten}. + * + * @example + * sharp('rgba.png') + * .removeAlpha() + * .toFile('rgb.png', function(err, info) { + * // rgb.png is a 3 channel image without an alpha channel + * }); + * + * @returns {Sharp} + */ +function removeAlpha () { + this.options.removeAlpha = true; + return this; +} + +/** + * Ensure the output image has an alpha transparency channel. + * If missing, the added alpha channel will have the specified + * transparency level, defaulting to fully-opaque (1). + * This is a no-op if the image already has an alpha channel. + * + * @since 0.21.2 + * + * @example + * // rgba.png will be a 4 channel image with a fully-opaque alpha channel + * await sharp('rgb.jpg') + * .ensureAlpha() + * .toFile('rgba.png') + * + * @example + * // rgba is a 4 channel image with a fully-transparent alpha channel + * const rgba = await sharp(rgb) + * .ensureAlpha(0) + * .toBuffer(); + * + * @param {number} [alpha=1] - alpha transparency level (0=fully-transparent, 1=fully-opaque) + * @returns {Sharp} + * @throws {Error} Invalid alpha transparency level + */ +function ensureAlpha (alpha) { + if (is.defined(alpha)) { + if (is.number(alpha) && is.inRange(alpha, 0, 1)) { + this.options.ensureAlpha = alpha; + } else { + throw is.invalidParameterError('alpha', 'number between 0 and 1', alpha); + } + } else { + this.options.ensureAlpha = 1; + } + return this; +} + +/** + * Extract a single channel from a multi-channel image. + * + * The output colourspace will be either `b-w` (8-bit) or `grey16` (16-bit). + * + * @example + * // green.jpg is a greyscale image containing the green channel of the input + * await sharp(input) + * .extractChannel('green') + * .toFile('green.jpg'); + * + * @example + * // red1 is the red value of the first pixel, red2 the second pixel etc. + * const [red1, red2, ...] = await sharp(input) + * .extractChannel(0) + * .raw() + * .toBuffer(); + * + * @param {number|string} channel - zero-indexed channel/band number to extract, or `red`, `green`, `blue` or `alpha`. + * @returns {Sharp} + * @throws {Error} Invalid channel + */ +function extractChannel (channel) { + const channelMap = { red: 0, green: 1, blue: 2, alpha: 3 }; + if (Object.keys(channelMap).includes(channel)) { + channel = channelMap[channel]; + } + if (is.integer(channel) && is.inRange(channel, 0, 4)) { + this.options.extractChannel = channel; + } else { + throw is.invalidParameterError('channel', 'integer or one of: red, green, blue, alpha', channel); + } + return this; +} + +/** + * Join one or more channels to the image. + * The meaning of the added channels depends on the output colourspace, set with `toColourspace()`. + * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * Channel ordering follows vips convention: + * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha. + * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha. + * + * Buffers may be any of the image formats supported by sharp. + * For raw pixel input, the `options` object should contain a `raw` attribute, which follows the format of the attribute of the same name in the `sharp()` constructor. + * + * @param {Array|string|Buffer} images - one or more images (file paths, Buffers). + * @param {Object} options - image options, see `sharp()` constructor. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function joinChannel (images, options) { + if (Array.isArray(images)) { + images.forEach(function (image) { + this.options.joinChannelIn.push(this._createInputDescriptor(image, options)); + }, this); + } else { + this.options.joinChannelIn.push(this._createInputDescriptor(images, options)); + } + return this; +} + +/** + * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image. + * + * @example + * sharp('3-channel-rgb-input.png') + * .bandbool(sharp.bool.and) + * .toFile('1-channel-output.png', function (err, info) { + * // The output will be a single channel image where each pixel `P = R & G & B`. + * // If `I(1,1) = [247, 170, 14] = [0b11110111, 0b10101010, 0b00001111]` + * // then `O(1,1) = 0b11110111 & 0b10101010 & 0b00001111 = 0b00000010 = 2`. + * }); + * + * @param {string} boolOp - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function bandbool (boolOp) { + if (is.string(boolOp) && is.inArray(boolOp, ['and', 'or', 'eor'])) { + this.options.bandBoolOp = boolOp; + } else { + throw is.invalidParameterError('boolOp', 'one of: and, or, eor', boolOp); + } + return this; +} + +/** + * Decorate the Sharp prototype with channel-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Object.assign(Sharp.prototype, { + // Public instance functions + removeAlpha, + ensureAlpha, + extractChannel, + joinChannel, + bandbool + }); + // Class attributes + Sharp.bool = bool; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/channel.mjs b/apps/api/.output/node_modules/sharp/dist/channel.mjs new file mode 100644 index 0000000..1fdf0a9 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/channel.mjs @@ -0,0 +1,177 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import is from './is.mjs'; + +/** + * Boolean operations for bandbool. + * @private + */ +const bool = { + and: 'and', + or: 'or', + eor: 'eor' +}; + +/** + * Remove alpha channels, if any. This is a no-op if the image does not have an alpha channel. + * + * See also {@link /api-operation/#flatten flatten}. + * + * @example + * sharp('rgba.png') + * .removeAlpha() + * .toFile('rgb.png', function(err, info) { + * // rgb.png is a 3 channel image without an alpha channel + * }); + * + * @returns {Sharp} + */ +function removeAlpha () { + this.options.removeAlpha = true; + return this; +} + +/** + * Ensure the output image has an alpha transparency channel. + * If missing, the added alpha channel will have the specified + * transparency level, defaulting to fully-opaque (1). + * This is a no-op if the image already has an alpha channel. + * + * @since 0.21.2 + * + * @example + * // rgba.png will be a 4 channel image with a fully-opaque alpha channel + * await sharp('rgb.jpg') + * .ensureAlpha() + * .toFile('rgba.png') + * + * @example + * // rgba is a 4 channel image with a fully-transparent alpha channel + * const rgba = await sharp(rgb) + * .ensureAlpha(0) + * .toBuffer(); + * + * @param {number} [alpha=1] - alpha transparency level (0=fully-transparent, 1=fully-opaque) + * @returns {Sharp} + * @throws {Error} Invalid alpha transparency level + */ +function ensureAlpha (alpha) { + if (is.defined(alpha)) { + if (is.number(alpha) && is.inRange(alpha, 0, 1)) { + this.options.ensureAlpha = alpha; + } else { + throw is.invalidParameterError('alpha', 'number between 0 and 1', alpha); + } + } else { + this.options.ensureAlpha = 1; + } + return this; +} + +/** + * Extract a single channel from a multi-channel image. + * + * The output colourspace will be either `b-w` (8-bit) or `grey16` (16-bit). + * + * @example + * // green.jpg is a greyscale image containing the green channel of the input + * await sharp(input) + * .extractChannel('green') + * .toFile('green.jpg'); + * + * @example + * // red1 is the red value of the first pixel, red2 the second pixel etc. + * const [red1, red2, ...] = await sharp(input) + * .extractChannel(0) + * .raw() + * .toBuffer(); + * + * @param {number|string} channel - zero-indexed channel/band number to extract, or `red`, `green`, `blue` or `alpha`. + * @returns {Sharp} + * @throws {Error} Invalid channel + */ +function extractChannel (channel) { + const channelMap = { red: 0, green: 1, blue: 2, alpha: 3 }; + if (Object.keys(channelMap).includes(channel)) { + channel = channelMap[channel]; + } + if (is.integer(channel) && is.inRange(channel, 0, 4)) { + this.options.extractChannel = channel; + } else { + throw is.invalidParameterError('channel', 'integer or one of: red, green, blue, alpha', channel); + } + return this; +} + +/** + * Join one or more channels to the image. + * The meaning of the added channels depends on the output colourspace, set with `toColourspace()`. + * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * Channel ordering follows vips convention: + * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha. + * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha. + * + * Buffers may be any of the image formats supported by sharp. + * For raw pixel input, the `options` object should contain a `raw` attribute, which follows the format of the attribute of the same name in the `sharp()` constructor. + * + * @param {Array|string|Buffer} images - one or more images (file paths, Buffers). + * @param {Object} options - image options, see `sharp()` constructor. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function joinChannel (images, options) { + if (Array.isArray(images)) { + images.forEach(function (image) { + this.options.joinChannelIn.push(this._createInputDescriptor(image, options)); + }, this); + } else { + this.options.joinChannelIn.push(this._createInputDescriptor(images, options)); + } + return this; +} + +/** + * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image. + * + * @example + * sharp('3-channel-rgb-input.png') + * .bandbool(sharp.bool.and) + * .toFile('1-channel-output.png', function (err, info) { + * // The output will be a single channel image where each pixel `P = R & G & B`. + * // If `I(1,1) = [247, 170, 14] = [0b11110111, 0b10101010, 0b00001111]` + * // then `O(1,1) = 0b11110111 & 0b10101010 & 0b00001111 = 0b00000010 = 2`. + * }); + * + * @param {string} boolOp - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function bandbool (boolOp) { + if (is.string(boolOp) && is.inArray(boolOp, ['and', 'or', 'eor'])) { + this.options.bandBoolOp = boolOp; + } else { + throw is.invalidParameterError('boolOp', 'one of: and, or, eor', boolOp); + } + return this; +} + +/** + * Decorate the Sharp prototype with channel-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Object.assign(Sharp.prototype, { + // Public instance functions + removeAlpha, + ensureAlpha, + extractChannel, + joinChannel, + bandbool + }); + // Class attributes + Sharp.bool = bool; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/colour.cjs b/apps/api/.output/node_modules/sharp/dist/colour.cjs new file mode 100644 index 0000000..b189a4a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/colour.cjs @@ -0,0 +1,199 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const color = require('@img/colour'); +const is = require('./is.cjs'); + +/** + * Colourspaces. + * @private + */ +const colourspace = { + multiband: 'multiband', + 'b-w': 'b-w', + bw: 'b-w', + cmyk: 'cmyk', + srgb: 'srgb' +}; + +/** + * Tint the image using the provided colour. + * An alpha channel may be present and will be unchanged by the operation. + * + * @example + * const output = await sharp(input) + * .tint({ r: 255, g: 240, b: 16 }) + * .toBuffer(); + * + * @param {string|Object} tint - Parsed by the [color](https://www.npmjs.org/package/color) module. + * @returns {Sharp} + * @throws {Error} Invalid parameter + */ +function tint (tint) { + this._setBackgroundColourOption('tint', tint); + return this; +} + +/** + * Convert to 8-bit greyscale; 256 shades of grey. + * This is a linear operation. If the input image is in a non-linear colour space such as sRGB, use `gamma()` with `greyscale()` for the best results. + * By default the output image will be web-friendly sRGB and contain three (identical) colour channels. + * This may be overridden by other sharp operations such as `toColourspace('b-w')`, + * which will produce an output image containing one colour channel. + * An alpha channel may be present, and will be unchanged by the operation. + * + * @example + * const output = await sharp(input).greyscale().toBuffer(); + * + * @param {Boolean} [greyscale=true] + * @returns {Sharp} + */ +function greyscale (greyscale) { + this.options.greyscale = is.bool(greyscale) ? greyscale : true; + return this; +} + +/** + * Alternative spelling of `greyscale`. + * @param {Boolean} [grayscale=true] + * @returns {Sharp} + */ +function grayscale (grayscale) { + return this.greyscale(grayscale); +} + +/** + * Set the pipeline colourspace. + * + * The input image will be converted to the provided colourspace at the start of the pipeline. + * All operations will use this colourspace before converting to the output colourspace, + * as defined by {@link #tocolourspace toColourspace}. + * + * @since 0.29.0 + * + * @example + * // Run pipeline in 16 bits per channel RGB while converting final result to 8 bits per channel sRGB. + * await sharp(input) + * .pipelineColourspace('rgb16') + * .toColourspace('srgb') + * .toFile('16bpc-pipeline-to-8bpc-output.png') + * + * @param {string} [colourspace] - pipeline colourspace e.g. `rgb16`, `scrgb`, `lab`, `grey16` [...](https://www.libvips.org/API/current/enum.Interpretation.html) + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function pipelineColourspace (colourspace) { + if (!is.string(colourspace)) { + throw is.invalidParameterError('colourspace', 'string', colourspace); + } + this.options.colourspacePipeline = colourspace; + return this; +} + +/** + * Alternative spelling of `pipelineColourspace`. + * @param {string} [colorspace] - pipeline colorspace. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function pipelineColorspace (colorspace) { + return this.pipelineColourspace(colorspace); +} + +/** + * Set the output colourspace. + * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * + * @example + * // Output 16 bits per pixel RGB + * await sharp(input) + * .toColourspace('rgb16') + * .toFile('16-bpp.png') + * + * @param {string} [colourspace] - output colourspace e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html) + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function toColourspace (colourspace) { + if (!is.string(colourspace)) { + throw is.invalidParameterError('colourspace', 'string', colourspace); + } + this.options.colourspace = colourspace; + return this; +} + +/** + * Alternative spelling of `toColourspace`. + * @param {string} [colorspace] - output colorspace. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function toColorspace (colorspace) { + return this.toColourspace(colorspace); +} + +/** + * Create a RGBA colour array from a given value. + * @private + * @param {string|Object} value + * @throws {Error} Invalid value + */ +function _getBackgroundColourOption (value) { + if ( + is.object(value) || + (is.string(value) && value.length >= 3 && value.length <= 200) + ) { + const colour = color(value); + const red = colour.red(); + const green = colour.green(); + const blue = colour.blue(); + const alpha = Math.round(colour.alpha() * 255); + for (const [channel, component] of [['red', red], ['green', green], ['blue', blue], ['alpha', alpha]]) { + if (!is.number(component)) { + throw is.invalidParameterError(`background.${channel}`, 'number', component); + } + } + return [red, green, blue, alpha]; + } else { + throw is.invalidParameterError('background', 'object or string', value); + } +} + +/** + * Update a colour attribute of the this.options Object. + * @private + * @param {string} key + * @param {string|Object} value + * @throws {Error} Invalid value + */ +function _setBackgroundColourOption (key, value) { + if (is.defined(value)) { + this.options[key] = _getBackgroundColourOption(value); + } +} + +/** + * Decorate the Sharp prototype with colour-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Object.assign(Sharp.prototype, { + // Public + tint, + greyscale, + grayscale, + pipelineColourspace, + pipelineColorspace, + toColourspace, + toColorspace, + // Private + _getBackgroundColourOption, + _setBackgroundColourOption + }); + // Class attributes + Sharp.colourspace = colourspace; + Sharp.colorspace = colourspace; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/colour.mjs b/apps/api/.output/node_modules/sharp/dist/colour.mjs new file mode 100644 index 0000000..b437857 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/colour.mjs @@ -0,0 +1,199 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import color from '@img/colour'; +import is from './is.mjs'; + +/** + * Colourspaces. + * @private + */ +const colourspace = { + multiband: 'multiband', + 'b-w': 'b-w', + bw: 'b-w', + cmyk: 'cmyk', + srgb: 'srgb' +}; + +/** + * Tint the image using the provided colour. + * An alpha channel may be present and will be unchanged by the operation. + * + * @example + * const output = await sharp(input) + * .tint({ r: 255, g: 240, b: 16 }) + * .toBuffer(); + * + * @param {string|Object} tint - Parsed by the [color](https://www.npmjs.org/package/color) module. + * @returns {Sharp} + * @throws {Error} Invalid parameter + */ +function tint (tint) { + this._setBackgroundColourOption('tint', tint); + return this; +} + +/** + * Convert to 8-bit greyscale; 256 shades of grey. + * This is a linear operation. If the input image is in a non-linear colour space such as sRGB, use `gamma()` with `greyscale()` for the best results. + * By default the output image will be web-friendly sRGB and contain three (identical) colour channels. + * This may be overridden by other sharp operations such as `toColourspace('b-w')`, + * which will produce an output image containing one colour channel. + * An alpha channel may be present, and will be unchanged by the operation. + * + * @example + * const output = await sharp(input).greyscale().toBuffer(); + * + * @param {Boolean} [greyscale=true] + * @returns {Sharp} + */ +function greyscale (greyscale) { + this.options.greyscale = is.bool(greyscale) ? greyscale : true; + return this; +} + +/** + * Alternative spelling of `greyscale`. + * @param {Boolean} [grayscale=true] + * @returns {Sharp} + */ +function grayscale (grayscale) { + return this.greyscale(grayscale); +} + +/** + * Set the pipeline colourspace. + * + * The input image will be converted to the provided colourspace at the start of the pipeline. + * All operations will use this colourspace before converting to the output colourspace, + * as defined by {@link #tocolourspace toColourspace}. + * + * @since 0.29.0 + * + * @example + * // Run pipeline in 16 bits per channel RGB while converting final result to 8 bits per channel sRGB. + * await sharp(input) + * .pipelineColourspace('rgb16') + * .toColourspace('srgb') + * .toFile('16bpc-pipeline-to-8bpc-output.png') + * + * @param {string} [colourspace] - pipeline colourspace e.g. `rgb16`, `scrgb`, `lab`, `grey16` [...](https://www.libvips.org/API/current/enum.Interpretation.html) + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function pipelineColourspace (colourspace) { + if (!is.string(colourspace)) { + throw is.invalidParameterError('colourspace', 'string', colourspace); + } + this.options.colourspacePipeline = colourspace; + return this; +} + +/** + * Alternative spelling of `pipelineColourspace`. + * @param {string} [colorspace] - pipeline colorspace. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function pipelineColorspace (colorspace) { + return this.pipelineColourspace(colorspace); +} + +/** + * Set the output colourspace. + * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * + * @example + * // Output 16 bits per pixel RGB + * await sharp(input) + * .toColourspace('rgb16') + * .toFile('16-bpp.png') + * + * @param {string} [colourspace] - output colourspace e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html) + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function toColourspace (colourspace) { + if (!is.string(colourspace)) { + throw is.invalidParameterError('colourspace', 'string', colourspace); + } + this.options.colourspace = colourspace; + return this; +} + +/** + * Alternative spelling of `toColourspace`. + * @param {string} [colorspace] - output colorspace. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function toColorspace (colorspace) { + return this.toColourspace(colorspace); +} + +/** + * Create a RGBA colour array from a given value. + * @private + * @param {string|Object} value + * @throws {Error} Invalid value + */ +function _getBackgroundColourOption (value) { + if ( + is.object(value) || + (is.string(value) && value.length >= 3 && value.length <= 200) + ) { + const colour = color(value); + const red = colour.red(); + const green = colour.green(); + const blue = colour.blue(); + const alpha = Math.round(colour.alpha() * 255); + for (const [channel, component] of [['red', red], ['green', green], ['blue', blue], ['alpha', alpha]]) { + if (!is.number(component)) { + throw is.invalidParameterError(`background.${channel}`, 'number', component); + } + } + return [red, green, blue, alpha]; + } else { + throw is.invalidParameterError('background', 'object or string', value); + } +} + +/** + * Update a colour attribute of the this.options Object. + * @private + * @param {string} key + * @param {string|Object} value + * @throws {Error} Invalid value + */ +function _setBackgroundColourOption (key, value) { + if (is.defined(value)) { + this.options[key] = _getBackgroundColourOption(value); + } +} + +/** + * Decorate the Sharp prototype with colour-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Object.assign(Sharp.prototype, { + // Public + tint, + greyscale, + grayscale, + pipelineColourspace, + pipelineColorspace, + toColourspace, + toColorspace, + // Private + _getBackgroundColourOption, + _setBackgroundColourOption + }); + // Class attributes + Sharp.colourspace = colourspace; + Sharp.colorspace = colourspace; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/composite.cjs b/apps/api/.output/node_modules/sharp/dist/composite.cjs new file mode 100644 index 0000000..630e174 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/composite.cjs @@ -0,0 +1,213 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const is = require('./is.cjs'); + +/** + * Blend modes. + * @member + * @private + */ +const blend = { + clear: 'clear', + source: 'source', + over: 'over', + in: 'in', + out: 'out', + atop: 'atop', + dest: 'dest', + 'dest-over': 'dest-over', + 'dest-in': 'dest-in', + 'dest-out': 'dest-out', + 'dest-atop': 'dest-atop', + xor: 'xor', + add: 'add', + saturate: 'saturate', + multiply: 'multiply', + screen: 'screen', + overlay: 'overlay', + darken: 'darken', + lighten: 'lighten', + 'colour-dodge': 'colour-dodge', + 'color-dodge': 'colour-dodge', + 'colour-burn': 'colour-burn', + 'color-burn': 'colour-burn', + 'hard-light': 'hard-light', + 'soft-light': 'soft-light', + difference: 'difference', + exclusion: 'exclusion' +}; + +/** + * Composite image(s) over the processed (resized, extracted etc.) image. + * + * The images to composite must be the same size or smaller than the processed image. + * If both `top` and `left` options are provided, they take precedence over `gravity`. + * + * Other operations in the same processing pipeline (e.g. resize, rotate, flip, + * flop, extract) will always be applied to the input image before composition. + * + * The `blend` option can be one of `clear`, `source`, `over`, `in`, `out`, `atop`, + * `dest`, `dest-over`, `dest-in`, `dest-out`, `dest-atop`, + * `xor`, `add`, `saturate`, `multiply`, `screen`, `overlay`, `darken`, `lighten`, + * `colour-dodge`, `color-dodge`, `colour-burn`,`color-burn`, + * `hard-light`, `soft-light`, `difference`, `exclusion`. + * + * More information about blend modes can be found at + * https://www.libvips.org/API/current/enum.BlendMode.html + * and https://www.cairographics.org/operators/ + * + * @since 0.22.0 + * + * @example + * await sharp(background) + * .composite([ + * { input: layer1, gravity: 'northwest' }, + * { input: layer2, gravity: 'southeast' }, + * ]) + * .toFile('combined.png'); + * + * @example + * const output = await sharp('input.gif', { animated: true }) + * .composite([ + * { input: 'overlay.png', tile: true, blend: 'saturate' } + * ]) + * .toBuffer(); + * + * @example + * sharp('input.png') + * .rotate(180) + * .resize(300) + * .flatten( { background: '#ff6600' } ) + * .composite([{ input: 'overlay.png', gravity: 'southeast' }]) + * .sharpen() + * .withMetadata() + * .webp( { quality: 90 } ) + * .toBuffer() + * .then(function(outputBuffer) { + * // outputBuffer contains upside down, 300px wide, alpha channel flattened + * // onto orange background, composited with overlay.png with SE gravity, + * // sharpened, with metadata, 90% quality WebP image data. Phew! + * }); + * + * @param {Object[]} images - Ordered list of images to composite + * @param {Buffer|String} [images[].input] - Buffer containing image data, String containing the path to an image file, or Create object (see below) + * @param {Object} [images[].input.create] - describes a blank overlay to be created. + * @param {Number} [images[].input.create.width] + * @param {Number} [images[].input.create.height] + * @param {Number} [images[].input.create.channels] - 3-4 + * @param {String|Object} [images[].input.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {Object} [images[].input.text] - describes a new text image to be created. + * @param {string} [images[].input.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. + * @param {string} [images[].input.text.font] - font name to render with. + * @param {string} [images[].input.text.fontfile] - absolute filesystem path to a font file that can be used by `font`. + * @param {number} [images[].input.text.width=0] - integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. + * @param {number} [images[].input.text.height=0] - integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. + * @param {string} [images[].input.text.align='left'] - text alignment (`'left'`, `'centre'`, `'center'`, `'right'`). + * @param {boolean} [images[].input.text.justify=false] - set this to true to apply justification to the text. + * @param {number} [images[].input.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified. + * @param {boolean} [images[].input.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for Pango markup features like `Red!`. + * @param {number} [images[].input.text.spacing=0] - text line height in points. Will use the font line height if none is specified. + * @param {Boolean} [images[].autoOrient=false] - set to true to use EXIF orientation data, if present, to orient the image. + * @param {String} [images[].blend='over'] - how to blend this image with the image below. + * @param {String} [images[].gravity='centre'] - gravity at which to place the overlay. + * @param {Number} [images[].top] - the pixel offset from the top edge, an integer between -100000000 and 100000000. + * @param {Number} [images[].left] - the pixel offset from the left edge, an integer between -100000000 and 100000000. + * @param {Boolean} [images[].tile=false] - set to true to repeat the overlay image across the entire image with the given `gravity`. + * @param {Boolean} [images[].premultiplied=false] - set to true to avoid premultiplying the image below. Equivalent to the `--premultiplied` vips option. + * @param {Number} [images[].density=72] - number representing the DPI for vector overlay image. + * @param {Object} [images[].raw] - describes overlay when using raw pixel data. + * @param {Number} [images[].raw.width] + * @param {Number} [images[].raw.height] + * @param {Number} [images[].raw.channels] + * @param {boolean} [images[].animated=false] - Set to `true` to read all frames/pages of an animated image. + * @param {string} [images[].failOn='warning'] - @see {@link /api-constructor/ constructor parameters} + * @param {number|boolean} [images[].limitInputPixels=268402689] - @see {@link /api-constructor/ constructor parameters} + * @param {number|boolean} [images[].limitInputChannels=5] - @see {@link /api-constructor/ constructor parameters} + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function composite (images) { + if (!Array.isArray(images)) { + throw is.invalidParameterError('images to composite', 'array', images); + } + this.options.composite = images.map(image => { + if (!is.object(image)) { + throw is.invalidParameterError('image to composite', 'object', image); + } + const inputOptions = this._inputOptionsFromObject(image); + const composite = { + input: this._createInputDescriptor(image.input, inputOptions, { allowStream: false }), + blend: 'over', + tile: false, + left: 0, + top: 0, + hasOffset: false, + gravity: 0, + premultiplied: false + }; + if (is.defined(image.blend)) { + if (is.string(blend[image.blend])) { + composite.blend = blend[image.blend]; + } else { + throw is.invalidParameterError('blend', 'valid blend name', image.blend); + } + } + if (is.defined(image.tile)) { + if (is.bool(image.tile)) { + composite.tile = image.tile; + } else { + throw is.invalidParameterError('tile', 'boolean', image.tile); + } + } + if (is.defined(image.left)) { + if (is.integer(image.left) && is.inRange(image.left, -100000000, 100000000)) { + composite.left = image.left; + } else { + throw is.invalidParameterError('left', 'integer between -100000000 and 100000000', image.left); + } + } + if (is.defined(image.top)) { + if (is.integer(image.top) && is.inRange(image.top, -100000000, 100000000)) { + composite.top = image.top; + } else { + throw is.invalidParameterError('top', 'integer between -100000000 and 100000000', image.top); + } + } + if (is.defined(image.top) !== is.defined(image.left)) { + throw new Error('Expected both left and top to be set'); + } else { + composite.hasOffset = is.integer(image.top) && is.integer(image.left); + } + if (is.defined(image.gravity)) { + if (is.integer(image.gravity) && is.inRange(image.gravity, 0, 8)) { + composite.gravity = image.gravity; + } else if (is.string(image.gravity) && is.integer(this.constructor.gravity[image.gravity])) { + composite.gravity = this.constructor.gravity[image.gravity]; + } else { + throw is.invalidParameterError('gravity', 'valid gravity', image.gravity); + } + } + if (is.defined(image.premultiplied)) { + if (is.bool(image.premultiplied)) { + composite.premultiplied = image.premultiplied; + } else { + throw is.invalidParameterError('premultiplied', 'boolean', image.premultiplied); + } + } + return composite; + }); + return this; +} + +/** + * Decorate the Sharp prototype with composite-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Sharp.prototype.composite = composite; + Sharp.blend = blend; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/composite.mjs b/apps/api/.output/node_modules/sharp/dist/composite.mjs new file mode 100644 index 0000000..4c8119a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/composite.mjs @@ -0,0 +1,213 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import is from './is.mjs'; + +/** + * Blend modes. + * @member + * @private + */ +const blend = { + clear: 'clear', + source: 'source', + over: 'over', + in: 'in', + out: 'out', + atop: 'atop', + dest: 'dest', + 'dest-over': 'dest-over', + 'dest-in': 'dest-in', + 'dest-out': 'dest-out', + 'dest-atop': 'dest-atop', + xor: 'xor', + add: 'add', + saturate: 'saturate', + multiply: 'multiply', + screen: 'screen', + overlay: 'overlay', + darken: 'darken', + lighten: 'lighten', + 'colour-dodge': 'colour-dodge', + 'color-dodge': 'colour-dodge', + 'colour-burn': 'colour-burn', + 'color-burn': 'colour-burn', + 'hard-light': 'hard-light', + 'soft-light': 'soft-light', + difference: 'difference', + exclusion: 'exclusion' +}; + +/** + * Composite image(s) over the processed (resized, extracted etc.) image. + * + * The images to composite must be the same size or smaller than the processed image. + * If both `top` and `left` options are provided, they take precedence over `gravity`. + * + * Other operations in the same processing pipeline (e.g. resize, rotate, flip, + * flop, extract) will always be applied to the input image before composition. + * + * The `blend` option can be one of `clear`, `source`, `over`, `in`, `out`, `atop`, + * `dest`, `dest-over`, `dest-in`, `dest-out`, `dest-atop`, + * `xor`, `add`, `saturate`, `multiply`, `screen`, `overlay`, `darken`, `lighten`, + * `colour-dodge`, `color-dodge`, `colour-burn`,`color-burn`, + * `hard-light`, `soft-light`, `difference`, `exclusion`. + * + * More information about blend modes can be found at + * https://www.libvips.org/API/current/enum.BlendMode.html + * and https://www.cairographics.org/operators/ + * + * @since 0.22.0 + * + * @example + * await sharp(background) + * .composite([ + * { input: layer1, gravity: 'northwest' }, + * { input: layer2, gravity: 'southeast' }, + * ]) + * .toFile('combined.png'); + * + * @example + * const output = await sharp('input.gif', { animated: true }) + * .composite([ + * { input: 'overlay.png', tile: true, blend: 'saturate' } + * ]) + * .toBuffer(); + * + * @example + * sharp('input.png') + * .rotate(180) + * .resize(300) + * .flatten( { background: '#ff6600' } ) + * .composite([{ input: 'overlay.png', gravity: 'southeast' }]) + * .sharpen() + * .withMetadata() + * .webp( { quality: 90 } ) + * .toBuffer() + * .then(function(outputBuffer) { + * // outputBuffer contains upside down, 300px wide, alpha channel flattened + * // onto orange background, composited with overlay.png with SE gravity, + * // sharpened, with metadata, 90% quality WebP image data. Phew! + * }); + * + * @param {Object[]} images - Ordered list of images to composite + * @param {Buffer|String} [images[].input] - Buffer containing image data, String containing the path to an image file, or Create object (see below) + * @param {Object} [images[].input.create] - describes a blank overlay to be created. + * @param {Number} [images[].input.create.width] + * @param {Number} [images[].input.create.height] + * @param {Number} [images[].input.create.channels] - 3-4 + * @param {String|Object} [images[].input.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {Object} [images[].input.text] - describes a new text image to be created. + * @param {string} [images[].input.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. + * @param {string} [images[].input.text.font] - font name to render with. + * @param {string} [images[].input.text.fontfile] - absolute filesystem path to a font file that can be used by `font`. + * @param {number} [images[].input.text.width=0] - integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. + * @param {number} [images[].input.text.height=0] - integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. + * @param {string} [images[].input.text.align='left'] - text alignment (`'left'`, `'centre'`, `'center'`, `'right'`). + * @param {boolean} [images[].input.text.justify=false] - set this to true to apply justification to the text. + * @param {number} [images[].input.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified. + * @param {boolean} [images[].input.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for Pango markup features like `Red!`. + * @param {number} [images[].input.text.spacing=0] - text line height in points. Will use the font line height if none is specified. + * @param {Boolean} [images[].autoOrient=false] - set to true to use EXIF orientation data, if present, to orient the image. + * @param {String} [images[].blend='over'] - how to blend this image with the image below. + * @param {String} [images[].gravity='centre'] - gravity at which to place the overlay. + * @param {Number} [images[].top] - the pixel offset from the top edge, an integer between -100000000 and 100000000. + * @param {Number} [images[].left] - the pixel offset from the left edge, an integer between -100000000 and 100000000. + * @param {Boolean} [images[].tile=false] - set to true to repeat the overlay image across the entire image with the given `gravity`. + * @param {Boolean} [images[].premultiplied=false] - set to true to avoid premultiplying the image below. Equivalent to the `--premultiplied` vips option. + * @param {Number} [images[].density=72] - number representing the DPI for vector overlay image. + * @param {Object} [images[].raw] - describes overlay when using raw pixel data. + * @param {Number} [images[].raw.width] + * @param {Number} [images[].raw.height] + * @param {Number} [images[].raw.channels] + * @param {boolean} [images[].animated=false] - Set to `true` to read all frames/pages of an animated image. + * @param {string} [images[].failOn='warning'] - @see {@link /api-constructor/ constructor parameters} + * @param {number|boolean} [images[].limitInputPixels=268402689] - @see {@link /api-constructor/ constructor parameters} + * @param {number|boolean} [images[].limitInputChannels=5] - @see {@link /api-constructor/ constructor parameters} + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function composite (images) { + if (!Array.isArray(images)) { + throw is.invalidParameterError('images to composite', 'array', images); + } + this.options.composite = images.map(image => { + if (!is.object(image)) { + throw is.invalidParameterError('image to composite', 'object', image); + } + const inputOptions = this._inputOptionsFromObject(image); + const composite = { + input: this._createInputDescriptor(image.input, inputOptions, { allowStream: false }), + blend: 'over', + tile: false, + left: 0, + top: 0, + hasOffset: false, + gravity: 0, + premultiplied: false + }; + if (is.defined(image.blend)) { + if (is.string(blend[image.blend])) { + composite.blend = blend[image.blend]; + } else { + throw is.invalidParameterError('blend', 'valid blend name', image.blend); + } + } + if (is.defined(image.tile)) { + if (is.bool(image.tile)) { + composite.tile = image.tile; + } else { + throw is.invalidParameterError('tile', 'boolean', image.tile); + } + } + if (is.defined(image.left)) { + if (is.integer(image.left) && is.inRange(image.left, -100000000, 100000000)) { + composite.left = image.left; + } else { + throw is.invalidParameterError('left', 'integer between -100000000 and 100000000', image.left); + } + } + if (is.defined(image.top)) { + if (is.integer(image.top) && is.inRange(image.top, -100000000, 100000000)) { + composite.top = image.top; + } else { + throw is.invalidParameterError('top', 'integer between -100000000 and 100000000', image.top); + } + } + if (is.defined(image.top) !== is.defined(image.left)) { + throw new Error('Expected both left and top to be set'); + } else { + composite.hasOffset = is.integer(image.top) && is.integer(image.left); + } + if (is.defined(image.gravity)) { + if (is.integer(image.gravity) && is.inRange(image.gravity, 0, 8)) { + composite.gravity = image.gravity; + } else if (is.string(image.gravity) && is.integer(this.constructor.gravity[image.gravity])) { + composite.gravity = this.constructor.gravity[image.gravity]; + } else { + throw is.invalidParameterError('gravity', 'valid gravity', image.gravity); + } + } + if (is.defined(image.premultiplied)) { + if (is.bool(image.premultiplied)) { + composite.premultiplied = image.premultiplied; + } else { + throw is.invalidParameterError('premultiplied', 'boolean', image.premultiplied); + } + } + return composite; + }); + return this; +} + +/** + * Decorate the Sharp prototype with composite-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Sharp.prototype.composite = composite; + Sharp.blend = blend; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/constructor.cjs b/apps/api/.output/node_modules/sharp/dist/constructor.cjs new file mode 100644 index 0000000..aab934b --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/constructor.cjs @@ -0,0 +1,511 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const util = require('node:util'); +const stream = require('node:stream'); +const is = require('./is.cjs'); + +require('./sharp.cjs'); + +// Use NODE_DEBUG=sharp to enable libvips warnings +const debuglog = util.debuglog('sharp'); + +const queueListener = (queueLength) => { + Sharp.queue.emit('change', queueLength); +}; + +/** + * Constructor factory to create an instance of `sharp`, to which further methods are chained. + * + * JPEG, PNG, WebP, GIF, AVIF or TIFF format image data can be streamed out from this object. + * When using Stream based output, derived attributes are available from the `info` event. + * + * Non-critical problems encountered during processing are emitted as `warning` events. + * + * Implements the [stream.Duplex](http://nodejs.org/api/stream.html#stream_class_stream_duplex) class. + * + * When loading more than one page/frame of an animated image, + * these are combined as a vertically-stacked "toilet roll" image + * where the overall height is the `pageHeight` multiplied by the number of `pages`. + * + * @constructs Sharp + * + * @emits Sharp#info + * @emits Sharp#warning + * + * @example + * sharp('input.jpg') + * .resize(300, 200) + * .toFile('output.jpg', function(err) { + * // output.jpg is a 300 pixels wide and 200 pixels high image + * // containing a scaled and cropped version of input.jpg + * }); + * + * @example + * // Read image data from remote URL, + * // resize to 300 pixels wide, + * // emit an 'info' event with calculated dimensions + * // and finally write image data to writableStream + * const { body } = await fetch('https://...'); + * const readableStream = Readable.fromWeb(body); + * const transformer = sharp() + * .resize(300) + * .on('info', ({ height }) => { + * console.log(`Image height is ${height}`); + * }); + * readableStream.pipe(transformer).pipe(writableStream); + * + * @example + * // Web Streams API, requires Node.js >= 24.15.0 + * const { Duplex } = require('node:stream'); + * + * const { body } = await fetch('https://...'); + * const transformer = Duplex.toWeb( + * sharp().resize(300), + * { readableType: 'bytes' } + * ); + * body.pipeThrough(transformer).pipeTo(writable); + * + * @example + * // Create a blank 300x200 PNG image of semi-translucent red pixels + * sharp({ + * create: { + * width: 300, + * height: 200, + * channels: 4, + * background: { r: 255, g: 0, b: 0, alpha: 0.5 } + * } + * }) + * .png() + * .toBuffer() + * .then( ... ); + * + * @example + * // Convert an animated GIF to an animated WebP + * await sharp('in.gif', { animated: true }).toFile('out.webp'); + * + * @example + * // Read a raw array of pixels and save it to a png + * const input = Uint8Array.from([255, 255, 255, 0, 0, 0]); // or Uint8ClampedArray + * const image = sharp(input, { + * // because the input does not contain its dimensions or how many channels it has + * // we need to specify it in the constructor options + * raw: { + * width: 2, + * height: 1, + * channels: 3 + * } + * }); + * await image.toFile('my-two-pixels.png'); + * + * @example + * // Generate RGB Gaussian noise + * await sharp({ + * create: { + * width: 300, + * height: 200, + * channels: 3, + * noise: { + * type: 'gaussian', + * mean: 128, + * sigma: 30 + * } + * } + * }).toFile('noise.png'); + * + * @example + * // Generate an image from text + * await sharp({ + * text: { + * text: 'Hello, world!', + * width: 400, // max width + * height: 300 // max height + * } + * }).toFile('text_bw.png'); + * + * @example + * // Generate an rgba image from text using pango markup and font + * await sharp({ + * text: { + * text: 'Red!blue', + * font: 'sans', + * rgba: true, + * dpi: 300 + * } + * }).toFile('text_rgba.png'); + * + * @example + * // Join four input images as a 2x2 grid with a 4 pixel gutter + * const data = await sharp( + * [image1, image2, image3, image4], + * { join: { across: 2, shim: 4 } } + * ).toBuffer(); + * + * @example + * // Generate a two-frame animated image from emoji + * const images = ['😀', '😛'].map(text => ({ + * text: { text, width: 64, height: 64, channels: 4, rgba: true } + * })); + * await sharp(images, { join: { animated: true } }).toFile('out.gif'); + * + * @param {(Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array|string|Array)} [input] - if present, can be + * a Buffer / ArrayBuffer / Uint8Array / Uint8ClampedArray containing JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image data, or + * a TypedArray containing raw pixel image data, or + * a String containing the filesystem path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file. + * An array of inputs can be provided, and these will be joined together. + * JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data can be streamed into the object when not present. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string} [options.failOn='warning'] - When to abort processing of invalid pixel data, one of (in order of sensitivity, least to most): 'none', 'truncated', 'error', 'warning'. Higher levels imply lower levels. Invalid metadata will always abort. Use the default 'warning' level with untrusted input. + * @param {number|boolean} [options.limitInputPixels=268402689] - Do not process input images where the number of pixels + * (width x height) exceeds this limit. Assumes image dimensions contained in the input metadata can be trusted. + * An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF). + * @param {number|boolean} [options.limitInputChannels=5] - Do not process input images where the number of channels exceeds this limit. Assumes image metadata can be trusted. + * An integral Number of channels, zero or false to remove limit, true to use default limit of 5. + * @param {boolean} [options.unlimited=false] - Set this to `true` to remove safety features that help prevent memory exhaustion (JPEG, PNG, SVG, HEIF). + * @param {boolean} [options.autoOrient=false] - Set this to `true` to rotate/flip the image to match EXIF `Orientation`, if any. + * @param {boolean} [options.sequentialRead=true] - Set this to `false` to use random access rather than sequential read. Some operations will do this automatically. + * @param {number} [options.density=72] - The DPI at which to render SVG and PDF images, in the range 1 to 100000. + * @param {number} [options.ignoreIcc=false] - should the embedded ICC profile, if any, be ignored. + * @param {number} [options.pages=1] - Number of pages to extract for multi-page input (GIF, WebP, TIFF), use -1 for all pages. + * @param {number} [options.page=0] - Page number to start extracting from for multi-page input (GIF, WebP, TIFF), zero based. + * @param {boolean} [options.animated=false] - Set to `true` to read all frames/pages of an animated image (GIF, WebP, TIFF), equivalent of setting `pages` to `-1`. + * @param {Object} [options.raw] - describes raw pixel input image data. See `raw()` for pixel ordering. + * @param {number} [options.raw.width] - integral number of pixels wide. + * @param {number} [options.raw.height] - integral number of pixels high. + * @param {number} [options.raw.channels] - integral number of channels, between 1 and 4. + * @param {boolean} [options.raw.premultiplied] - specifies that the raw input has already been premultiplied, set to `true` + * to avoid sharp premultiplying the image. (optional, default `false`) + * @param {number} [options.raw.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `raw.height`. + * @param {Object} [options.create] - describes a new image to be created. + * @param {number} [options.create.width] - integral number of pixels wide. + * @param {number} [options.create.height] - integral number of pixels high. + * @param {number} [options.create.channels] - integral number of channels, either 3 (RGB) or 4 (RGBA). + * @param {string|Object} [options.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {number} [options.create.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `create.height`. + * @param {Object} [options.create.noise] - describes a noise to be created. + * @param {string} [options.create.noise.type] - type of generated noise, currently only `gaussian` is supported. + * @param {number} [options.create.noise.mean=128] - Mean value of pixels in the generated noise. + * @param {number} [options.create.noise.sigma=30] - Standard deviation of pixel values in the generated noise. + * @param {Object} [options.text] - describes a new text image to be created. + * @param {string} [options.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. + * @param {string} [options.text.font] - font name to render with. + * @param {string} [options.text.fontfile] - absolute filesystem path to a font file that can be used by `font`. + * @param {number} [options.text.width=0] - Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. + * @param {number} [options.text.height=0] - Maximum integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. + * @param {string} [options.text.align='left'] - Alignment style for multi-line text (`'left'`, `'centre'`, `'center'`, `'right'`). + * @param {boolean} [options.text.justify=false] - set this to true to apply justification to the text. + * @param {number} [options.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified. + * @param {boolean} [options.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for pango markup features like `Red!`. + * @param {number} [options.text.spacing=0] - text line height in points. Will use the font line height if none is specified. + * @param {string} [options.text.wrap='word'] - word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none'. + * @param {Object} [options.join] - describes how an array of input images should be joined. + * @param {number} [options.join.across=1] - number of images to join horizontally. + * @param {boolean} [options.join.animated=false] - set this to `true` to join the images as an animated image. + * @param {number} [options.join.shim=0] - number of pixels to insert between joined images. + * @param {string|Object} [options.join.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {string} [options.join.halign='left'] - horizontal alignment style for images joined horizontally (`'left'`, `'centre'`, `'center'`, `'right'`). + * @param {string} [options.join.valign='top'] - vertical alignment style for images joined vertically (`'top'`, `'centre'`, `'center'`, `'bottom'`). + * @param {Object} [options.tiff] - Describes TIFF specific options. + * @param {number} [options.tiff.subifd=-1] - Sub Image File Directory to extract for OME-TIFF, defaults to main image. + * @param {Object} [options.svg] - Describes SVG specific options. + * @param {string} [options.svg.stylesheet] - Custom CSS for SVG input, applied with a User Origin during the CSS cascade. + * @param {boolean} [options.svg.highBitdepth=false] - Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA. + * @param {Object} [options.pdf] - Describes PDF specific options. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick. + * @param {string|Object} [options.pdf.background] - Background colour to use when PDF is partially transparent. Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {Object} [options.openSlide] - Describes OpenSlide specific options. Requires the use of a globally-installed libvips compiled with support for OpenSlide. + * @param {number} [options.openSlide.level=0] - Level to extract from a multi-level input, zero based. + * @param {Object} [options.jp2] - Describes JPEG 2000 specific options. Requires the use of a globally-installed libvips compiled with support for OpenJPEG. + * @param {boolean} [options.jp2.oneshot=false] - Set to `true` to decode tiled JPEG 2000 images in a single operation, improving compatibility. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +const Sharp = function (input, options) { + // biome-ignore lint/complexity/noArguments: constructor factory + if (arguments.length === 1 && !is.defined(input)) { + throw new Error('Invalid input'); + } + if (!(this instanceof Sharp)) { + return new Sharp(input, options); + } + stream.Duplex.call(this); + this.options = { + // resize options + topOffsetPre: -1, + leftOffsetPre: -1, + widthPre: -1, + heightPre: -1, + topOffsetPost: -1, + leftOffsetPost: -1, + widthPost: -1, + heightPost: -1, + width: -1, + height: -1, + canvas: 'crop', + position: 0, + resizeBackground: [0, 0, 0, 255], + angle: 0, + rotationAngle: 0, + rotationBackground: [0, 0, 0, 255], + rotateBefore: false, + orientBefore: false, + flip: false, + flop: false, + extendTop: 0, + extendBottom: 0, + extendLeft: 0, + extendRight: 0, + extendBackground: [0, 0, 0, 255], + extendWith: 'background', + withoutEnlargement: false, + withoutReduction: false, + affineMatrix: [], + affineBackground: [0, 0, 0, 255], + affineIdx: 0, + affineIdy: 0, + affineOdx: 0, + affineOdy: 0, + affineInterpolator: this.constructor.interpolators.bilinear, + kernel: 'lanczos3', + fastShrinkOnLoad: true, + // operations + tint: [-1, 0, 0, 0], + flatten: false, + flattenBackground: [0, 0, 0], + unflatten: false, + negate: false, + negateAlpha: true, + medianSize: 0, + blurSigma: 0, + precision: 'integer', + minAmpl: 0.2, + sharpenSigma: 0, + sharpenM1: 1, + sharpenM2: 2, + sharpenX1: 2, + sharpenY2: 10, + sharpenY3: 20, + threshold: 0, + thresholdGrayscale: true, + trimBackground: [], + trimThreshold: -1, + trimLineArt: false, + trimMargin: 0, + dilateWidth: 0, + erodeWidth: 0, + gamma: 0, + gammaOut: 0, + greyscale: false, + normalise: false, + normaliseLower: 1, + normaliseUpper: 99, + claheWidth: 0, + claheHeight: 0, + claheMaxSlope: 3, + brightness: 1, + saturation: 1, + hue: 0, + lightness: 0, + booleanBufferIn: null, + booleanFileIn: '', + joinChannelIn: [], + extractChannel: -1, + removeAlpha: false, + ensureAlpha: -1, + colourspace: 'srgb', + colourspacePipeline: 'last', + composite: [], + // output + fileOut: '', + formatOut: 'input', + streamOut: false, + typedArrayOut: false, + keepMetadata: 0, + withMetadataOrientation: -1, + withMetadataDensity: 0, + withIccProfile: '', + withExif: {}, + withExifMerge: true, + withXmp: '', + keepGainMap: false, + withGainMap: false, + resolveWithObject: false, + loop: -1, + delay: [], + // output format + jpegQuality: 80, + jpegProgressive: false, + jpegChromaSubsampling: '4:2:0', + jpegTrellisQuantisation: false, + jpegOvershootDeringing: false, + jpegOptimiseScans: false, + jpegOptimiseCoding: true, + jpegQuantisationTable: 0, + pngProgressive: false, + pngCompressionLevel: 6, + pngAdaptiveFiltering: false, + pngPalette: false, + pngQuality: 100, + pngEffort: 7, + pngBitdepth: 8, + pngDither: 1, + jp2Quality: 80, + jp2TileHeight: 512, + jp2TileWidth: 512, + jp2Lossless: false, + jp2ChromaSubsampling: '4:4:4', + webpQuality: 80, + webpAlphaQuality: 100, + webpLossless: false, + webpNearLossless: false, + webpSmartSubsample: false, + webpSmartDeblock: false, + webpPreset: 'default', + webpEffort: 4, + webpMinSize: false, + webpMixed: false, + webpExact: false, + gifBitdepth: 8, + gifEffort: 7, + gifDither: 1, + gifInterFrameMaxError: 0, + gifInterPaletteMaxError: 3, + gifKeepDuplicateFrames: false, + gifReuse: true, + gifProgressive: false, + tiffQuality: 80, + tiffCompression: 'jpeg', + tiffBigtiff: false, + tiffPredictor: 'horizontal', + tiffPyramid: false, + tiffMiniswhite: false, + tiffBitdepth: 0, + tiffTile: false, + tiffTileHeight: 256, + tiffTileWidth: 256, + tiffXres: 1.0, + tiffYres: 1.0, + tiffResolutionUnit: 'inch', + heifQuality: 50, + heifLossless: false, + heifCompression: 'av1', + heifEffort: 4, + heifChromaSubsampling: '4:4:4', + heifBitdepth: 8, + heifTune: 'auto', + jxlDistance: 1, + jxlDecodingTier: 0, + jxlEffort: 7, + jxlLossless: false, + rawDepth: 'uchar', + tileSize: 256, + tileOverlap: 0, + tileContainer: 'fs', + tileLayout: 'dz', + tileFormat: 'last', + tileDepth: 'last', + tileAngle: 0, + tileSkipBlanks: -1, + tileBackground: [255, 255, 255, 255], + tileCentre: false, + tileId: 'https://example.com/iiif', + tileBasename: '', + timeoutSeconds: 0, + linearA: [], + linearB: [], + pdfBackground: [255, 255, 255, 255], + // Function to notify of libvips warnings + debuglog: warning => { + this.emit('warning', warning); + debuglog(warning); + }, + // Function to notify of queue length changes + queueListener + }; + this.options.input = this._createInputDescriptor(input, options, { allowStream: true }); + return this; +}; +Object.setPrototypeOf(Sharp.prototype, stream.Duplex.prototype); +Object.setPrototypeOf(Sharp, stream.Duplex); + +/** + * Take a "snapshot" of the Sharp instance, returning a new instance. + * Cloned instances inherit the input of their parent instance. + * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream. + * + * @example + * // firstWritableStream receives auto-rotated, resized readableStream + * // secondWritableStream receives auto-rotated, extracted region of readableStream + * + * const pipeline = sharp().rotate(); + * pipeline + * .clone() + * .resize(800, 600) + * .pipe(firstWritableStream); + * pipeline + * .clone() + * .extract({ left: 20, top: 20, width: 100, height: 100 }) + * .pipe(secondWritableStream); + * readableStream.pipe(pipeline); + * + * @example + * // Create a pipeline that will download an image, resize it and format it to different files + * // Using Promises to know when the pipeline is complete + * + * const sharpStream = sharp(); + * + * const promises = []; + * promises.push( + * sharpStream + * .clone() + * .jpeg({ quality: 100 }) + * .toFile("originalFile.jpg") + * ); + * promises.push( + * sharpStream + * .clone() + * .resize({ width: 500 }) + * .jpeg({ quality: 80 }) + * .toFile("optimized-500.jpg") + * ); + * promises.push( + * sharpStream + * .clone() + * .resize({ width: 500 }) + * .webp({ quality: 80 }) + * .toFile("optimized-500.webp") + * ); + * + * const res = await fetch("https://www.example.com/some-file.jpg") + * Readable.fromWeb(res.body).pipe(sharpStream); + * await Promise.all(promises); + * + * @returns {Sharp} + */ +function clone () { + // Clone existing options + const clone = this.constructor.call(); + const { debuglog, queueListener, ...options } = this.options; + clone.options = structuredClone(options); + clone.options.debuglog = debuglog; + clone.options.queueListener = queueListener; + // Pass 'finish' event to clone for Stream-based input + if (this._isStreamInput()) { + this._whenStreamInFinished(() => { + // Clone inherits input data + this._flattenBufferIn(); + clone.options.input.buffer = this.options.input.buffer; + clone.emit('finish'); + }); + } + return clone; +} +Object.assign(Sharp.prototype, { clone }); + +/** + * Export constructor. + * @module Sharp + * @private + */ +module.exports = Sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/constructor.mjs b/apps/api/.output/node_modules/sharp/dist/constructor.mjs new file mode 100644 index 0000000..f2b9869 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/constructor.mjs @@ -0,0 +1,511 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import util from 'node:util'; +import stream from 'node:stream'; +import is from './is.mjs'; + +import './sharp.mjs'; + +// Use NODE_DEBUG=sharp to enable libvips warnings +const debuglog = util.debuglog('sharp'); + +const queueListener = (queueLength) => { + Sharp.queue.emit('change', queueLength); +}; + +/** + * Constructor factory to create an instance of `sharp`, to which further methods are chained. + * + * JPEG, PNG, WebP, GIF, AVIF or TIFF format image data can be streamed out from this object. + * When using Stream based output, derived attributes are available from the `info` event. + * + * Non-critical problems encountered during processing are emitted as `warning` events. + * + * Implements the [stream.Duplex](http://nodejs.org/api/stream.html#stream_class_stream_duplex) class. + * + * When loading more than one page/frame of an animated image, + * these are combined as a vertically-stacked "toilet roll" image + * where the overall height is the `pageHeight` multiplied by the number of `pages`. + * + * @constructs Sharp + * + * @emits Sharp#info + * @emits Sharp#warning + * + * @example + * sharp('input.jpg') + * .resize(300, 200) + * .toFile('output.jpg', function(err) { + * // output.jpg is a 300 pixels wide and 200 pixels high image + * // containing a scaled and cropped version of input.jpg + * }); + * + * @example + * // Read image data from remote URL, + * // resize to 300 pixels wide, + * // emit an 'info' event with calculated dimensions + * // and finally write image data to writableStream + * const { body } = await fetch('https://...'); + * const readableStream = Readable.fromWeb(body); + * const transformer = sharp() + * .resize(300) + * .on('info', ({ height }) => { + * console.log(`Image height is ${height}`); + * }); + * readableStream.pipe(transformer).pipe(writableStream); + * + * @example + * // Web Streams API, requires Node.js >= 24.15.0 + * import { Duplex } from 'node:stream'; + * + * const { body } = await fetch('https://...'); + * const transformer = Duplex.toWeb( + * sharp().resize(300), + * { readableType: 'bytes' } + * ); + * body.pipeThrough(transformer).pipeTo(writable); + * + * @example + * // Create a blank 300x200 PNG image of semi-translucent red pixels + * sharp({ + * create: { + * width: 300, + * height: 200, + * channels: 4, + * background: { r: 255, g: 0, b: 0, alpha: 0.5 } + * } + * }) + * .png() + * .toBuffer() + * .then( ... ); + * + * @example + * // Convert an animated GIF to an animated WebP + * await sharp('in.gif', { animated: true }).toFile('out.webp'); + * + * @example + * // Read a raw array of pixels and save it to a png + * const input = Uint8Array.from([255, 255, 255, 0, 0, 0]); // or Uint8ClampedArray + * const image = sharp(input, { + * // because the input does not contain its dimensions or how many channels it has + * // we need to specify it in the constructor options + * raw: { + * width: 2, + * height: 1, + * channels: 3 + * } + * }); + * await image.toFile('my-two-pixels.png'); + * + * @example + * // Generate RGB Gaussian noise + * await sharp({ + * create: { + * width: 300, + * height: 200, + * channels: 3, + * noise: { + * type: 'gaussian', + * mean: 128, + * sigma: 30 + * } + * } + * }).toFile('noise.png'); + * + * @example + * // Generate an image from text + * await sharp({ + * text: { + * text: 'Hello, world!', + * width: 400, // max width + * height: 300 // max height + * } + * }).toFile('text_bw.png'); + * + * @example + * // Generate an rgba image from text using pango markup and font + * await sharp({ + * text: { + * text: 'Red!blue', + * font: 'sans', + * rgba: true, + * dpi: 300 + * } + * }).toFile('text_rgba.png'); + * + * @example + * // Join four input images as a 2x2 grid with a 4 pixel gutter + * const data = await sharp( + * [image1, image2, image3, image4], + * { join: { across: 2, shim: 4 } } + * ).toBuffer(); + * + * @example + * // Generate a two-frame animated image from emoji + * const images = ['😀', '😛'].map(text => ({ + * text: { text, width: 64, height: 64, channels: 4, rgba: true } + * })); + * await sharp(images, { join: { animated: true } }).toFile('out.gif'); + * + * @param {(Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array|string|Array)} [input] - if present, can be + * a Buffer / ArrayBuffer / Uint8Array / Uint8ClampedArray containing JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image data, or + * a TypedArray containing raw pixel image data, or + * a String containing the filesystem path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file. + * An array of inputs can be provided, and these will be joined together. + * JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data can be streamed into the object when not present. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string} [options.failOn='warning'] - When to abort processing of invalid pixel data, one of (in order of sensitivity, least to most): 'none', 'truncated', 'error', 'warning'. Higher levels imply lower levels. Invalid metadata will always abort. Use the default 'warning' level with untrusted input. + * @param {number|boolean} [options.limitInputPixels=268402689] - Do not process input images where the number of pixels + * (width x height) exceeds this limit. Assumes image dimensions contained in the input metadata can be trusted. + * An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF). + * @param {number|boolean} [options.limitInputChannels=5] - Do not process input images where the number of channels exceeds this limit. Assumes image metadata can be trusted. + * An integral Number of channels, zero or false to remove limit, true to use default limit of 5. + * @param {boolean} [options.unlimited=false] - Set this to `true` to remove safety features that help prevent memory exhaustion (JPEG, PNG, SVG, HEIF). + * @param {boolean} [options.autoOrient=false] - Set this to `true` to rotate/flip the image to match EXIF `Orientation`, if any. + * @param {boolean} [options.sequentialRead=true] - Set this to `false` to use random access rather than sequential read. Some operations will do this automatically. + * @param {number} [options.density=72] - The DPI at which to render SVG and PDF images, in the range 1 to 100000. + * @param {number} [options.ignoreIcc=false] - should the embedded ICC profile, if any, be ignored. + * @param {number} [options.pages=1] - Number of pages to extract for multi-page input (GIF, WebP, TIFF), use -1 for all pages. + * @param {number} [options.page=0] - Page number to start extracting from for multi-page input (GIF, WebP, TIFF), zero based. + * @param {boolean} [options.animated=false] - Set to `true` to read all frames/pages of an animated image (GIF, WebP, TIFF), equivalent of setting `pages` to `-1`. + * @param {Object} [options.raw] - describes raw pixel input image data. See `raw()` for pixel ordering. + * @param {number} [options.raw.width] - integral number of pixels wide. + * @param {number} [options.raw.height] - integral number of pixels high. + * @param {number} [options.raw.channels] - integral number of channels, between 1 and 4. + * @param {boolean} [options.raw.premultiplied] - specifies that the raw input has already been premultiplied, set to `true` + * to avoid sharp premultiplying the image. (optional, default `false`) + * @param {number} [options.raw.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `raw.height`. + * @param {Object} [options.create] - describes a new image to be created. + * @param {number} [options.create.width] - integral number of pixels wide. + * @param {number} [options.create.height] - integral number of pixels high. + * @param {number} [options.create.channels] - integral number of channels, either 3 (RGB) or 4 (RGBA). + * @param {string|Object} [options.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {number} [options.create.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `create.height`. + * @param {Object} [options.create.noise] - describes a noise to be created. + * @param {string} [options.create.noise.type] - type of generated noise, currently only `gaussian` is supported. + * @param {number} [options.create.noise.mean=128] - Mean value of pixels in the generated noise. + * @param {number} [options.create.noise.sigma=30] - Standard deviation of pixel values in the generated noise. + * @param {Object} [options.text] - describes a new text image to be created. + * @param {string} [options.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. + * @param {string} [options.text.font] - font name to render with. + * @param {string} [options.text.fontfile] - absolute filesystem path to a font file that can be used by `font`. + * @param {number} [options.text.width=0] - Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. + * @param {number} [options.text.height=0] - Maximum integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. + * @param {string} [options.text.align='left'] - Alignment style for multi-line text (`'left'`, `'centre'`, `'center'`, `'right'`). + * @param {boolean} [options.text.justify=false] - set this to true to apply justification to the text. + * @param {number} [options.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified. + * @param {boolean} [options.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for pango markup features like `Red!`. + * @param {number} [options.text.spacing=0] - text line height in points. Will use the font line height if none is specified. + * @param {string} [options.text.wrap='word'] - word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none'. + * @param {Object} [options.join] - describes how an array of input images should be joined. + * @param {number} [options.join.across=1] - number of images to join horizontally. + * @param {boolean} [options.join.animated=false] - set this to `true` to join the images as an animated image. + * @param {number} [options.join.shim=0] - number of pixels to insert between joined images. + * @param {string|Object} [options.join.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {string} [options.join.halign='left'] - horizontal alignment style for images joined horizontally (`'left'`, `'centre'`, `'center'`, `'right'`). + * @param {string} [options.join.valign='top'] - vertical alignment style for images joined vertically (`'top'`, `'centre'`, `'center'`, `'bottom'`). + * @param {Object} [options.tiff] - Describes TIFF specific options. + * @param {number} [options.tiff.subifd=-1] - Sub Image File Directory to extract for OME-TIFF, defaults to main image. + * @param {Object} [options.svg] - Describes SVG specific options. + * @param {string} [options.svg.stylesheet] - Custom CSS for SVG input, applied with a User Origin during the CSS cascade. + * @param {boolean} [options.svg.highBitdepth=false] - Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA. + * @param {Object} [options.pdf] - Describes PDF specific options. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick. + * @param {string|Object} [options.pdf.background] - Background colour to use when PDF is partially transparent. Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {Object} [options.openSlide] - Describes OpenSlide specific options. Requires the use of a globally-installed libvips compiled with support for OpenSlide. + * @param {number} [options.openSlide.level=0] - Level to extract from a multi-level input, zero based. + * @param {Object} [options.jp2] - Describes JPEG 2000 specific options. Requires the use of a globally-installed libvips compiled with support for OpenJPEG. + * @param {boolean} [options.jp2.oneshot=false] - Set to `true` to decode tiled JPEG 2000 images in a single operation, improving compatibility. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +const Sharp = function (input, options) { + // biome-ignore lint/complexity/noArguments: constructor factory + if (arguments.length === 1 && !is.defined(input)) { + throw new Error('Invalid input'); + } + if (!(this instanceof Sharp)) { + return new Sharp(input, options); + } + stream.Duplex.call(this); + this.options = { + // resize options + topOffsetPre: -1, + leftOffsetPre: -1, + widthPre: -1, + heightPre: -1, + topOffsetPost: -1, + leftOffsetPost: -1, + widthPost: -1, + heightPost: -1, + width: -1, + height: -1, + canvas: 'crop', + position: 0, + resizeBackground: [0, 0, 0, 255], + angle: 0, + rotationAngle: 0, + rotationBackground: [0, 0, 0, 255], + rotateBefore: false, + orientBefore: false, + flip: false, + flop: false, + extendTop: 0, + extendBottom: 0, + extendLeft: 0, + extendRight: 0, + extendBackground: [0, 0, 0, 255], + extendWith: 'background', + withoutEnlargement: false, + withoutReduction: false, + affineMatrix: [], + affineBackground: [0, 0, 0, 255], + affineIdx: 0, + affineIdy: 0, + affineOdx: 0, + affineOdy: 0, + affineInterpolator: this.constructor.interpolators.bilinear, + kernel: 'lanczos3', + fastShrinkOnLoad: true, + // operations + tint: [-1, 0, 0, 0], + flatten: false, + flattenBackground: [0, 0, 0], + unflatten: false, + negate: false, + negateAlpha: true, + medianSize: 0, + blurSigma: 0, + precision: 'integer', + minAmpl: 0.2, + sharpenSigma: 0, + sharpenM1: 1, + sharpenM2: 2, + sharpenX1: 2, + sharpenY2: 10, + sharpenY3: 20, + threshold: 0, + thresholdGrayscale: true, + trimBackground: [], + trimThreshold: -1, + trimLineArt: false, + trimMargin: 0, + dilateWidth: 0, + erodeWidth: 0, + gamma: 0, + gammaOut: 0, + greyscale: false, + normalise: false, + normaliseLower: 1, + normaliseUpper: 99, + claheWidth: 0, + claheHeight: 0, + claheMaxSlope: 3, + brightness: 1, + saturation: 1, + hue: 0, + lightness: 0, + booleanBufferIn: null, + booleanFileIn: '', + joinChannelIn: [], + extractChannel: -1, + removeAlpha: false, + ensureAlpha: -1, + colourspace: 'srgb', + colourspacePipeline: 'last', + composite: [], + // output + fileOut: '', + formatOut: 'input', + streamOut: false, + typedArrayOut: false, + keepMetadata: 0, + withMetadataOrientation: -1, + withMetadataDensity: 0, + withIccProfile: '', + withExif: {}, + withExifMerge: true, + withXmp: '', + keepGainMap: false, + withGainMap: false, + resolveWithObject: false, + loop: -1, + delay: [], + // output format + jpegQuality: 80, + jpegProgressive: false, + jpegChromaSubsampling: '4:2:0', + jpegTrellisQuantisation: false, + jpegOvershootDeringing: false, + jpegOptimiseScans: false, + jpegOptimiseCoding: true, + jpegQuantisationTable: 0, + pngProgressive: false, + pngCompressionLevel: 6, + pngAdaptiveFiltering: false, + pngPalette: false, + pngQuality: 100, + pngEffort: 7, + pngBitdepth: 8, + pngDither: 1, + jp2Quality: 80, + jp2TileHeight: 512, + jp2TileWidth: 512, + jp2Lossless: false, + jp2ChromaSubsampling: '4:4:4', + webpQuality: 80, + webpAlphaQuality: 100, + webpLossless: false, + webpNearLossless: false, + webpSmartSubsample: false, + webpSmartDeblock: false, + webpPreset: 'default', + webpEffort: 4, + webpMinSize: false, + webpMixed: false, + webpExact: false, + gifBitdepth: 8, + gifEffort: 7, + gifDither: 1, + gifInterFrameMaxError: 0, + gifInterPaletteMaxError: 3, + gifKeepDuplicateFrames: false, + gifReuse: true, + gifProgressive: false, + tiffQuality: 80, + tiffCompression: 'jpeg', + tiffBigtiff: false, + tiffPredictor: 'horizontal', + tiffPyramid: false, + tiffMiniswhite: false, + tiffBitdepth: 0, + tiffTile: false, + tiffTileHeight: 256, + tiffTileWidth: 256, + tiffXres: 1.0, + tiffYres: 1.0, + tiffResolutionUnit: 'inch', + heifQuality: 50, + heifLossless: false, + heifCompression: 'av1', + heifEffort: 4, + heifChromaSubsampling: '4:4:4', + heifBitdepth: 8, + heifTune: 'auto', + jxlDistance: 1, + jxlDecodingTier: 0, + jxlEffort: 7, + jxlLossless: false, + rawDepth: 'uchar', + tileSize: 256, + tileOverlap: 0, + tileContainer: 'fs', + tileLayout: 'dz', + tileFormat: 'last', + tileDepth: 'last', + tileAngle: 0, + tileSkipBlanks: -1, + tileBackground: [255, 255, 255, 255], + tileCentre: false, + tileId: 'https://example.com/iiif', + tileBasename: '', + timeoutSeconds: 0, + linearA: [], + linearB: [], + pdfBackground: [255, 255, 255, 255], + // Function to notify of libvips warnings + debuglog: warning => { + this.emit('warning', warning); + debuglog(warning); + }, + // Function to notify of queue length changes + queueListener + }; + this.options.input = this._createInputDescriptor(input, options, { allowStream: true }); + return this; +}; +Object.setPrototypeOf(Sharp.prototype, stream.Duplex.prototype); +Object.setPrototypeOf(Sharp, stream.Duplex); + +/** + * Take a "snapshot" of the Sharp instance, returning a new instance. + * Cloned instances inherit the input of their parent instance. + * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream. + * + * @example + * // firstWritableStream receives auto-rotated, resized readableStream + * // secondWritableStream receives auto-rotated, extracted region of readableStream + * + * const pipeline = sharp().rotate(); + * pipeline + * .clone() + * .resize(800, 600) + * .pipe(firstWritableStream); + * pipeline + * .clone() + * .extract({ left: 20, top: 20, width: 100, height: 100 }) + * .pipe(secondWritableStream); + * readableStream.pipe(pipeline); + * + * @example + * // Create a pipeline that will download an image, resize it and format it to different files + * // Using Promises to know when the pipeline is complete + * + * const sharpStream = sharp(); + * + * const promises = []; + * promises.push( + * sharpStream + * .clone() + * .jpeg({ quality: 100 }) + * .toFile("originalFile.jpg") + * ); + * promises.push( + * sharpStream + * .clone() + * .resize({ width: 500 }) + * .jpeg({ quality: 80 }) + * .toFile("optimized-500.jpg") + * ); + * promises.push( + * sharpStream + * .clone() + * .resize({ width: 500 }) + * .webp({ quality: 80 }) + * .toFile("optimized-500.webp") + * ); + * + * const res = await fetch("https://www.example.com/some-file.jpg") + * Readable.fromWeb(res.body).pipe(sharpStream); + * await Promise.all(promises); + * + * @returns {Sharp} + */ +function clone () { + // Clone existing options + const clone = this.constructor.call(); + const { debuglog, queueListener, ...options } = this.options; + clone.options = structuredClone(options); + clone.options.debuglog = debuglog; + clone.options.queueListener = queueListener; + // Pass 'finish' event to clone for Stream-based input + if (this._isStreamInput()) { + this._whenStreamInFinished(() => { + // Clone inherits input data + this._flattenBufferIn(); + clone.options.input.buffer = this.options.input.buffer; + clone.emit('finish'); + }); + } + return clone; +} +Object.assign(Sharp.prototype, { clone }); + +/** + * Export constructor. + * @module Sharp + * @private + */ +export default Sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/index.cjs b/apps/api/.output/node_modules/sharp/dist/index.cjs new file mode 100644 index 0000000..dc07e92 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/index.cjs @@ -0,0 +1,25 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const Sharp = require('./constructor.cjs'); +const input = require('./input.cjs'); +const resize = require('./resize.cjs'); +const composite = require('./composite.cjs'); +const operation = require('./operation.cjs'); +const colour = require('./colour.cjs'); +const channel = require('./channel.cjs'); +const output = require('./output.cjs'); +const utility = require('./utility.cjs'); + +input(Sharp); +resize(Sharp); +composite(Sharp); +operation(Sharp); +colour(Sharp); +channel(Sharp); +output(Sharp); +utility(Sharp); + +module.exports = Sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/index.d.cts b/apps/api/.output/node_modules/sharp/dist/index.d.cts new file mode 100644 index 0000000..470889a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/index.d.cts @@ -0,0 +1,1999 @@ +/** + * Copyright 2017 François Nguyen and others. + * + * Billy Kwok + * Bradley Odell + * Espen Hovlandsdal + * Floris de Bijl + * François Nguyen + * Jamie Woodbury + * Wooseop Kim + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +// SPDX-License-Identifier: MIT + +/// + +declare type Duplex = import('node:stream').Duplex; +declare type ColorLike = import('@img/colour').ColorLike; + +//#region Constructor functions + +/** + * Creates a sharp instance from an image + * @param input Buffer containing JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data, or String containing the path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file. + * @param options Object with optional attributes. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ +declare function sharp(options?: sharp.SharpOptions): sharp.Sharp; +declare function sharp( + input?: sharp.SharpInput | Array, + options?: sharp.SharpOptions, +): sharp.Sharp; + +declare namespace sharp { + /** Object containing nested boolean values representing the available input and output formats/methods. */ + const format: FormatEnum; + + /** An Object containing the version numbers of sharp, libvips and its dependencies. */ + const versions: { + aom?: string | undefined; + archive?: string | undefined; + cairo?: string | undefined; + cgif?: string | undefined; + exif?: string | undefined; + expat?: string | undefined; + ffi?: string | undefined; + fontconfig?: string | undefined; + freetype?: string | undefined; + fribidi?: string | undefined; + glib?: string | undefined; + harfbuzz?: string | undefined; + heif?: string | undefined; + highway?: string | undefined; + imagequant?: string | undefined; + lcms?: string | undefined; + mozjpeg?: string | undefined; + pango?: string | undefined; + pixman?: string | undefined; + png?: string | undefined; + "proxy-libintl"?: string | undefined; + rsvg?: string | undefined; + sharp: string; + spng?: string | undefined; + tiff?: string | undefined; + vips: string; + webp?: string | undefined; + xml?: string | undefined; + "zlib-ng"?: string | undefined; + }; + + /** An Object containing the available interpolators and their proper values */ + const interpolators: Interpolators; + + /** An EventEmitter that emits a change event when a task is either queued, waiting for libuv to provide a worker thread, complete */ + const queue: NodeJS.EventEmitter; + + //#endregion + + //#region Utility functions + + /** + * Gets or, when options are provided, sets the limits of libvips' operation cache. + * Existing entries in the cache will be trimmed after any change in limits. + * This method always returns cache statistics, useful for determining how much working memory is required for a particular task. + * @param options Object with the following attributes, or Boolean where true uses default cache settings and false removes all caching (optional, default true) + * @returns The cache results. + */ + function cache(options?: boolean | CacheOptions): CacheResult; + + /** + * Gets or sets the number of threads libvips' should create to process each image. + * The default value is the number of CPU cores. A value of 0 will reset to this default. + * The maximum number of images that can be processed in parallel is limited by libuv's UV_THREADPOOL_SIZE environment variable. + * @param concurrency The new concurrency value. + * @returns The current concurrency value. + */ + function concurrency(concurrency?: number): number; + + /** + * Provides access to internal task counters. + * @returns Object containing task counters + */ + function counters(): SharpCounters; + + /** + * Get and set use of SIMD vector unit instructions. Requires libvips to have been compiled with highway support. + * Improves the performance of resize, blur and sharpen operations by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON. + * @param enable enable or disable use of SIMD vector unit instructions + * @returns true if usage of SIMD vector unit instructions is enabled + */ + function simd(enable?: boolean): boolean; + + /** + * Block libvips operations at runtime. + * + * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable, + * which when set will block all "untrusted" operations. + * + * @since 0.32.4 + * + * @example Block all TIFF input. + * sharp.block({ + * operation: ['VipsForeignLoadTiff'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to block. + */ + function block(options: { operation: string[] }): void; + + /** + * Unblock libvips operations at runtime. + * + * This is useful for defining a list of allowed operations. + * + * @since 0.32.4 + * + * @example Block all input except WebP from the filesystem. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadWebpFile'] + * }); + * + * @example Block all input except JPEG and PNG from a Buffer or Stream. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to unblock. + */ + function unblock(options: { operation: string[] }): void; + + //#endregion + + const gravity: GravityEnum; + const strategy: StrategyEnum; + const kernel: KernelEnum; + const fit: FitEnum; + const bool: BoolEnum; + + interface Sharp extends Duplex { + //#region Channel functions + + /** + * Remove alpha channel, if any. This is a no-op if the image does not have an alpha channel. + * @returns A sharp instance that can be used to chain operations + */ + removeAlpha(): Sharp; + + /** + * Ensure alpha channel, if missing. The added alpha channel will be fully opaque. This is a no-op if the image already has an alpha channel. + * @param alpha transparency level (0=fully-transparent, 1=fully-opaque) (optional, default 1). + * @returns A sharp instance that can be used to chain operations + */ + ensureAlpha(alpha?: number): Sharp; + + /** + * Extract a single channel from a multi-channel image. + * @param channel zero-indexed channel/band number to extract, or red, green, blue or alpha. + * @throws {Error} Invalid channel + * @returns A sharp instance that can be used to chain operations + */ + extractChannel(channel: 0 | 1 | 2 | 3 | 'red' | 'green' | 'blue' | 'alpha'): Sharp; + + /** + * Join one or more channels to the image. The meaning of the added channels depends on the output colourspace, set with toColourspace(). + * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. Channel ordering follows vips convention: + * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha. + * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha. + * + * Buffers may be any of the image formats supported by sharp. + * For raw pixel input, the options object should contain a raw attribute, which follows the format of the attribute of the same name in the sharp() constructor. + * @param images one or more images (file paths, Buffers). + * @param options image options, see sharp() constructor. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + joinChannel(images: string | Buffer | ArrayLike, options?: SharpOptions): Sharp; + + /** + * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image. + * @param boolOp one of "and", "or" or "eor" to perform that bitwise operation, like the C logic operators &, | and ^ respectively. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + bandbool(boolOp: keyof BoolEnum): Sharp; + + //#endregion + + //#region Color functions + + /** + * Tint the image using the provided colour. + * An alpha channel may be present and will be unchanged by the operation. + * @param tint Parsed by the color module. + * @returns A sharp instance that can be used to chain operations + */ + tint(tint: ColorLike): Sharp; + + /** + * Convert to 8-bit greyscale; 256 shades of grey. + * This is a linear operation. + * If the input image is in a non-linear colour space such as sRGB, use gamma() with greyscale() for the best results. + * By default the output image will be web-friendly sRGB and contain three (identical) colour channels. + * This may be overridden by other sharp operations such as toColourspace('b-w'), which will produce an output image containing one colour channel. + * An alpha channel may be present, and will be unchanged by the operation. + * @param greyscale true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + greyscale(greyscale?: boolean): Sharp; + + /** + * Alternative spelling of greyscale(). + * @param grayscale true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + grayscale(grayscale?: boolean): Sharp; + + /** + * Set the pipeline colourspace. + * The input image will be converted to the provided colourspace at the start of the pipeline. + * All operations will use this colourspace before converting to the output colourspace, as defined by toColourspace. + * + * @param colourspace pipeline colourspace e.g. rgb16, scrgb, lab, grey16 ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + pipelineColourspace(colourspace?: string): Sharp; + + /** + * Alternative spelling of pipelineColourspace + * @param colorspace pipeline colourspace e.g. rgb16, scrgb, lab, grey16 ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + pipelineColorspace(colorspace?: string): Sharp; + + /** + * Set the output colourspace. + * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * @param colourspace output colourspace e.g. srgb, rgb, cmyk, lab, b-w ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toColourspace(colourspace?: string): Sharp; + + /** + * Alternative spelling of toColourspace(). + * @param colorspace output colorspace e.g. srgb, rgb, cmyk, lab, b-w ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toColorspace(colorspace: string): Sharp; + + //#endregion + + //#region Composite functions + + /** + * Composite image(s) over the processed (resized, extracted etc.) image. + * + * The images to composite must be the same size or smaller than the processed image. + * If both `top` and `left` options are provided, they take precedence over `gravity`. + * @param images - Ordered list of images to composite + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + composite(images: OverlayOptions[]): Sharp; + + //#endregion + + //#region Input functions + + /** + * Take a "snapshot" of the Sharp instance, returning a new instance. + * Cloned instances inherit the input of their parent instance. + * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream. + * @returns A sharp instance that can be used to chain operations + */ + clone(): Sharp; + + /** + * Fast access to (uncached) image metadata without decoding any compressed image data. + * @returns A sharp instance that can be used to chain operations + */ + metadata(callback: (err: Error, metadata: Metadata) => void): Sharp; + + /** + * Fast access to (uncached) image metadata without decoding any compressed image data. + * @returns A promise that resolves with a metadata object + */ + metadata(): Promise; + + /** + * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image. + * @returns A sharp instance that can be used to chain operations + */ + keepMetadata(): Sharp; + + /** + * Access to pixel-derived image statistics for every channel in the image. + * @returns A sharp instance that can be used to chain operations + */ + stats(callback: (err: Error, stats: Stats) => void): Sharp; + + /** + * Access to pixel-derived image statistics for every channel in the image. + * @returns A promise that resolves with a stats object + */ + stats(): Promise; + + //#endregion + + //#region Operation functions + + /** + * Rotate the output image by either an explicit angle + * or auto-orient based on the EXIF `Orientation` tag. + * + * If an angle is provided, it is converted to a valid positive degree rotation. + * For example, `-450` will produce a 270 degree rotation. + * + * When rotating by an angle other than a multiple of 90, + * the background colour can be provided with the `background` option. + * + * If no angle is provided, it is determined from the EXIF data. + * Mirroring is supported and may infer the use of a flip operation. + * + * The use of `rotate` without an angle will remove the EXIF `Orientation` tag, if any. + * + * Only one rotation can occur per pipeline (aside from an initial call without + * arguments to orient via EXIF data). Previous calls to `rotate` in the same + * pipeline will be ignored. + * + * Multi-page images can only be rotated by 180 degrees. + * + * Method order is important when rotating, resizing and/or extracting regions, + * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`. + * + * @example + * const pipeline = sharp() + * .rotate() + * .resize(null, 200) + * .toBuffer(function (err, outputBuffer, info) { + * // outputBuffer contains 200px high JPEG image data, + * // auto-rotated using EXIF Orientation tag + * // info.width and info.height contain the dimensions of the resized image + * }); + * readableStream.pipe(pipeline); + * + * @example + * const rotateThenResize = await sharp(input) + * .rotate(90) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .toBuffer(); + * const resizeThenRotate = await sharp(input) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .rotate(90) + * .toBuffer(); + * + * @param {number} [angle=auto] angle of rotation. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string|Object} [options.background="#000000"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ + rotate(angle?: number, options?: RotateOptions): Sharp; + + /** + * Alias for calling `rotate()` with no arguments, which orients the image based + * on EXIF orientsion. + * + * This operation is aliased to emphasize its purpose, helping to remove any + * confusion between rotation and orientation. + * + * @example + * const output = await sharp(input).autoOrient().toBuffer(); + * + * @returns {Sharp} + */ + autoOrient(): Sharp + + /** + * Flip the image about the vertical Y axis. This always occurs after rotation, if any. + * The use of flip implies the removal of the EXIF Orientation tag, if any. + * @param flip true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flip(flip?: boolean): Sharp; + + /** + * Flop the image about the horizontal X axis. This always occurs after rotation, if any. + * The use of flop implies the removal of the EXIF Orientation tag, if any. + * @param flop true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flop(flop?: boolean): Sharp; + + /** + * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any. + * You must provide an array of length 4 or a 2x2 affine transformation matrix. + * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option. + * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `sharp.interpolators` Object e.g. `sharp.interpolators.nohalo`. + * + * In the case of a 2x2 matrix, the transform is: + * X = matrix[0, 0] * (x + idx) + matrix[0, 1] * (y + idy) + odx + * Y = matrix[1, 0] * (x + idx) + matrix[1, 1] * (y + idy) + ody + * + * where: + * + * x and y are the coordinates in input image. + * X and Y are the coordinates in output image. + * (0,0) is the upper left corner. + * + * @param matrix Affine transformation matrix, may either by a array of length four or a 2x2 matrix array + * @param options if present, is an Object with optional attributes. + * + * @returns A sharp instance that can be used to chain operations + */ + affine(matrix: [number, number, number, number] | Matrix2x2, options?: AffineOptions): Sharp; + + /** + * Sharpen the image. + * When used without parameters, performs a fast, mild sharpen of the output image. + * When a sigma is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space. + * Fine-grained control over the level of sharpening in "flat" (m1) and "jagged" (m2) areas is available. + * @param options if present, is an Object with optional attributes + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + sharpen(options?: SharpenOptions): Sharp; + + /** + * Apply median filter. When used without parameters the default window is 3x3. + * @param size square mask size: size x size (optional, default 3) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + median(size?: number): Sharp; + + /** + * Blur the image. + * When used without parameters, performs a fast, mild blur of the output image. + * When a sigma is provided, performs a slower, more accurate Gaussian blur. + * When a boolean sigma is provided, ether blur mild or disable blur + * @param sigma a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where sigma = 1 + radius / 2. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + blur(sigma?: number | boolean | BlurOptions): Sharp; + + /** + * Expand foreground objects using the dilate morphological operator. + * @param {Number} [width=1] dilation width in pixels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + dilate(width?: number): Sharp; + + /** + * Shrink foreground objects using the erode morphological operator. + * @param {Number} [width=1] erosion width in pixels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + erode(width?: number): Sharp; + + /** + * Merge alpha transparency channel, if any, with background. + * @param flatten true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flatten(flatten?: boolean | FlattenOptions): Sharp; + + /** + * Ensure the image has an alpha channel with all white pixel values made fully transparent. + * Existing alpha channel values for non-white pixels remain unchanged. + * @returns A sharp instance that can be used to chain operations + */ + unflatten(): Sharp; + + /** + * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of 1/gamma then increasing the encoding (brighten) post-resize at a factor of gamma. + * This can improve the perceived brightness of a resized image in non-linear colour spaces. + * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation when applying a gamma correction. + * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases. + * @param gamma value between 1.0 and 3.0. (optional, default 2.2) + * @param gammaOut value between 1.0 and 3.0. (optional, defaults to same as gamma) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + gamma(gamma?: number, gammaOut?: number): Sharp; + + /** + * Produce the "negative" of the image. + * @param negate true to enable and false to disable, or an object of options (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + negate(negate?: boolean | NegateOptions): Sharp; + + /** + * Enhance output image contrast by stretching its luminance to cover a full dynamic range. + * + * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes. + * + * Luminance values below the `lower` percentile will be underexposed by clipping to zero. + * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value. + * + * @param normalise options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + normalise(normalise?: NormaliseOptions): Sharp; + + /** + * Alternative spelling of normalise. + * @param normalize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + normalize(normalize?: NormaliseOptions): Sharp; + + /** + * Perform contrast limiting adaptive histogram equalization (CLAHE) + * + * This will, in general, enhance the clarity of the image by bringing out + * darker details. Please read more about CLAHE here: + * https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE + * + * @param options clahe options + */ + clahe(options: ClaheOptions): Sharp; + + /** + * Convolve the image with the specified kernel. + * @param kernel the specified kernel + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + convolve(kernel: Kernel): Sharp; + + /** + * Any pixel value greather than or equal to the threshold value will be set to 255, otherwise it will be set to 0. + * @param threshold a value in the range 0-255 representing the level at which the threshold will be applied. (optional, default 128) + * @param options threshold options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + threshold(threshold?: number, options?: ThresholdOptions): Sharp; + + /** + * Perform a bitwise boolean operation with operand image. + * This operation creates an output image where each pixel is the result of the selected bitwise boolean operation between the corresponding pixels of the input images. + * @param operand Buffer containing image data or String containing the path to an image file. + * @param operator one of "and", "or" or "eor" to perform that bitwise operation, like the C logic operators &, | and ^ respectively. + * @param options describes operand when using raw pixel data. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + boolean(operand: string | Buffer, operator: keyof BoolEnum, options?: { raw: Raw }): Sharp; + + /** + * Apply the linear formula a * input + b to the image (levels adjustment) + * @param a multiplier (optional, default 1.0) + * @param b offset (optional, default 0.0) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + linear(a?: number | number[] | null, b?: number | number[]): Sharp; + + /** + * Recomb the image with the specified matrix. + * @param inputMatrix 3x3 Recombination matrix or 4x4 Recombination matrix + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + recomb(inputMatrix: Matrix3x3 | Matrix4x4): Sharp; + + /** + * Transforms the image using brightness, saturation, hue rotation and lightness. + * Brightness and lightness both operate on luminance, with the difference being that brightness is multiplicative whereas lightness is additive. + * @param options describes the modulation + * @returns A sharp instance that can be used to chain operations + */ + modulate(options?: { + brightness?: number | undefined; + saturation?: number | undefined; + hue?: number | undefined; + lightness?: number | undefined; + }): Sharp; + + //#endregion + + //#region Output functions + + /** + * Write output image data to a file. + * If an explicit output format is not selected, it will be inferred from the extension, with JPEG, PNG, WebP, AVIF, TIFF, DZI, and libvips' V format supported. + * Note that raw pixel data is only supported for buffer output. + * @param fileOut The path to write the image data to. + * @param callback Callback function called on completion with two arguments (err, info). info contains the output image format, size (bytes), width, height and channels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toFile(fileOut: string, callback: (err: Error, info: OutputInfo) => void): Sharp; + + /** + * Write output image data to a file. + * @param fileOut The path to write the image data to. + * @throws {Error} Invalid parameters + * @returns A promise that fulfills with an object containing information on the resulting file + */ + toFile(fileOut: string): Promise; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * @param callback Callback function called on completion with three arguments (err, buffer, info). + * @returns A sharp instance that can be used to chain operations + */ + toBuffer(callback: (err: Error, buffer: Buffer, info: OutputInfo) => void): Sharp; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * @param options resolve options + * @param options.resolveWithObject Resolve the Promise with an Object containing data and info properties instead of resolving only with data. + * @returns A promise that resolves with the Buffer data. + */ + toBuffer(options?: { resolveWithObject: false }): Promise>; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * @param options resolve options + * @param options.resolveWithObject Resolve the Promise with an Object containing data and info properties instead of resolving only with data. + * @returns A promise that resolves with an object containing the Buffer data and an info object containing the output image format, size (bytes), width, height and channels + */ + toBuffer(options: { resolveWithObject: true }): Promise<{ data: Buffer; info: OutputInfo }>; + + /** + * Write output to a Uint8Array backed by a transferable ArrayBuffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * @returns A promise that resolves with an object containing the Uint8Array data and an info object containing the output image format, size (bytes), width, height and channels + */ + toUint8Array(): Promise<{ data: Uint8Array; info: OutputInfo }>; + + /** + * Set output density (DPI) in EXIF metadata. + * @param density Density in dots per inch (DPI). + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withDensity(density: number): Sharp; + + /** + * Keep all EXIF metadata from the input image in the output image. + * EXIF metadata is unsupported for TIFF output. + * @returns A sharp instance that can be used to chain operations + */ + keepExif(): Sharp; + + /** + * Set EXIF metadata in the output image, ignoring any EXIF in the input image. + * @param {Exif} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withExif(exif: Exif): Sharp; + + /** + * Update EXIF metadata from the input image in the output image. + * @param {Exif} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withExifMerge(exif: Exif): Sharp; + + /** + * Keep ICC profile from the input image in the output image where possible. + * @returns A sharp instance that can be used to chain operations + */ + keepIccProfile(): Sharp; + + /** + * Transform using an ICC profile and attach to the output image. + * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk). + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withIccProfile(icc: string, options?: WithIccProfileOptions): Sharp; + + /** + * Keep all XMP metadata from the input image in the output image. + * @returns A sharp instance that can be used to chain operations + */ + keepXmp(): Sharp; + + /** + * Set XMP metadata in the output image. + * @param {string} xmp - String containing XMP metadata to be embedded in the output image. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withXmp(xmp: string): Sharp; + + /** + * Include all metadata (EXIF, XMP, IPTC) from the input image in the output image. + * The default behaviour, when withMetadata is not used, is to strip all metadata and convert to the device-independent sRGB colour space. + * This will also convert to and add a web-friendly sRGB ICC profile. + * @param withMetadata + * @throws {Error} Invalid parameters. + */ + withMetadata(withMetadata?: WriteableMetadata): Sharp; + + /** + * Use these JPEG options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jpeg(options?: JpegOptions): Sharp; + + /** + * Use these JP2 (JPEG 2000) options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jp2(options?: Jp2Options): Sharp; + + /** + * Use these JPEG-XL (JXL) options for output image. + * This feature is experimental, please do not use in production systems. + * Requires libvips compiled with support for libjxl. + * The prebuilt binaries do not include this. + * Image metadata (EXIF, XMP) is unsupported. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jxl(options?: JxlOptions): Sharp; + + /** + * Use these PNG options for output image. + * PNG output is always full colour at 8 or 16 bits per pixel. + * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + png(options?: PngOptions): Sharp; + + /** + * Use these WebP options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + webp(options?: WebpOptions): Sharp; + + /** + * Use these GIF options for output image. + * Requires libvips compiled with support for ImageMagick or GraphicsMagick. The prebuilt binaries do not include this - see installing a custom libvips. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + gif(options?: GifOptions): Sharp; + + /** + * Use these AVIF options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + avif(options?: AvifOptions): Sharp; + + /** + * Use these HEIF options for output image. + * Support for patent-encumbered HEIC images requires the use of a globally-installed libvips compiled with support for libheif, libde265 and x265. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + heif(options?: HeifOptions): Sharp; + + /** + * Use these TIFF options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + tiff(options?: TiffOptions): Sharp; + + /** + * Force output to be raw, uncompressed uint8 pixel data. + * @param options Raw output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + raw(options?: RawOptions): Sharp; + + /** + * Force output to a given format. + * @param format a String or an Object with an 'id' attribute + * @param options output options + * @throws {Error} Unsupported format or options + * @returns A sharp instance that can be used to chain operations + */ + toFormat( + format: keyof FormatEnum | AvailableFormatInfo | "avif", + options?: + | OutputOptions + | JpegOptions + | PngOptions + | WebpOptions + | AvifOptions + | HeifOptions + | JxlOptions + | GifOptions + | Jp2Options + | RawOptions + | TiffOptions, + ): Sharp; + + /** + * Use tile-based deep zoom (image pyramid) output. + * Set the format and options for tile images via the toFormat, jpeg, png or webp functions. + * Use a .zip or .szi file extension with toFile to write to a compressed archive file format. + * @param tile tile options + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + tile(tile?: TileOptions): Sharp; + + /** + * Set a timeout for processing, in seconds. Use a value of zero to continue processing indefinitely, the default behaviour. + * The clock starts when libvips opens an input image for processing. Time spent waiting for a libuv thread to become available is not included. + * @param options Object with a `seconds` attribute between 0 and 3600 (number) + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + timeout(options: TimeoutOptions): Sharp; + + //#endregion + + //#region Resize functions + + /** + * Resize image to width, height or width x height. + * + * When both a width and height are provided, the possible methods by which the image should fit these are: + * - cover: Crop to cover both provided dimensions (the default). + * - contain: Embed within both provided dimensions. + * - fill: Ignore the aspect ratio of the input and stretch to both provided dimensions. + * - inside: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. + * - outside: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. + * Some of these values are based on the object-fit CSS property. + * + * When using a fit of cover or contain, the default position is centre. Other options are: + * - sharp.position: top, right top, right, right bottom, bottom, left bottom, left, left top. + * - sharp.gravity: north, northeast, east, southeast, south, southwest, west, northwest, center or centre. + * - sharp.strategy: cover only, dynamically crop using either the entropy or attention strategy. Some of these values are based on the object-position CSS property. + * + * The strategy-based approach resizes so one dimension is at its target length then repeatedly ranks edge regions, + * discarding the edge with the lowest score based on the selected strategy. + * - entropy: focus on the region with the highest Shannon entropy. + * - attention: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones. + * + * Possible interpolation kernels are: + * - nearest: Use nearest neighbour interpolation. + * - cubic: Use a Catmull-Rom spline. + * - lanczos2: Use a Lanczos kernel with a=2. + * - lanczos3: Use a Lanczos kernel with a=3 (the default). + * + * @param width pixels wide the resultant image should be. Use null or undefined to auto-scale the width to match the height. + * @param height pixels high the resultant image should be. Use null or undefined to auto-scale the height to match the width. + * @param options resize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + resize(widthOrOptions?: number | ResizeOptions | null, height?: number | null, options?: ResizeOptions): Sharp; + + /** + * Shorthand for resize(null, null, options); + * + * @param options resize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + resize(options: ResizeOptions): Sharp; + + /** + * Extend / pad / extrude one or more edges of the image with either + * the provided background colour or pixels derived from the image. + * This operation will always occur after resizing and extraction, if any. + * @param extend single pixel count to add to all edges or an Object with per-edge counts + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + extend(extend: number | ExtendOptions): Sharp; + + /** + * Extract a region of the image. + * - Use extract() before resize() for pre-resize extraction. + * - Use extract() after resize() for post-resize extraction. + * - Use extract() before and after for both. + * + * @param region The region to extract + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + extract(region: Region): Sharp; + + /** + * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel. + * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels. + * The info response Object will contain trimOffsetLeft and trimOffsetTop properties. + * @param options trim options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + trim(options?: TrimOptions): Sharp; + + //#endregion + } + + type SharpInput = Buffer + | ArrayBuffer + | Uint8Array + | Uint8ClampedArray + | Int8Array + | Uint16Array + | Int16Array + | Uint32Array + | Int32Array + | Float32Array + | Float64Array + | string; + + interface SharpOptions { + /** + * Auto-orient based on the EXIF `Orientation` tag, if present. + * Mirroring is supported and may infer the use of a flip operation. + * + * Using this option will remove the EXIF `Orientation` tag, if any. + */ + autoOrient?: boolean | undefined; + /** + * When to abort processing of invalid pixel data, one of (in order of sensitivity): + * 'none' (least), 'truncated', 'error' or 'warning' (most), highers level imply lower levels, invalid metadata will always abort. + * Use the default 'warning' level with untrusted input. (optional, default 'warning') + */ + failOn?: FailOnOptions | undefined; + /** + * Do not process input images where the number of pixels (width x height) exceeds this limit. + * Assumes image dimensions contained in the input metadata can be trusted. + * An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF). (optional, default 268402689) + */ + limitInputPixels?: number | boolean | undefined; + /** + * Do not process input images where the number of channels exceeds this limit. + * Assumes image metadata can be trusted. + * An integral Number of channels, zero or false to remove limit, true to use default limit of 5. (optional, default 5) + */ + limitInputChannels?: number | boolean | undefined; + /** Set this to true to remove safety features that help prevent memory exhaustion (SVG, PNG). (optional, default false) */ + unlimited?: boolean | undefined; + /** Set this to false to use random access rather than sequential read. Some operations will do this automatically. */ + sequentialRead?: boolean | undefined; + /** The DPI at which to render SVG and PDF images, in the range 1 to 100000. (optional, default 72) */ + density?: number | undefined; + /** Should the embedded ICC profile, if any, be ignored. */ + ignoreIcc?: boolean | undefined; + /** Number of pages to extract for multi-page input (GIF, TIFF, PDF), use -1 for all pages */ + pages?: number | undefined; + /** Page number to start extracting from for multi-page input (GIF, TIFF, PDF), zero based. (optional, default 0) */ + page?: number | undefined; + /** TIFF specific input options */ + tiff?: TiffInputOptions | undefined; + /** SVG specific input options */ + svg?: SvgInputOptions | undefined; + /** PDF specific input options */ + pdf?: PdfInputOptions | undefined; + /** OpenSlide specific input options */ + openSlide?: OpenSlideInputOptions | undefined; + /** JPEG 2000 specific input options */ + jp2?: Jp2InputOptions | undefined; + /** @deprecated Use {@link SharpOptions.tiff} instead */ + subifd?: number | undefined; + /** @deprecated Use {@link SharpOptions.pdf} instead */ + pdfBackground?: ColorLike | undefined; + /** @deprecated Use {@link SharpOptions.openSlide} instead */ + level?: number | undefined; + /** Set to `true` to read all frames/pages of an animated image (equivalent of setting `pages` to `-1`). (optional, default false) */ + animated?: boolean | undefined; + /** Describes raw pixel input image data. See raw() for pixel ordering. */ + raw?: CreateRaw | undefined; + /** Describes a new image to be created. */ + create?: Create | undefined; + /** Describes a new text image to be created. */ + text?: CreateText | undefined; + /** Describes how array of input images should be joined. */ + join?: Join | undefined; + } + + interface CacheOptions { + /** Is the maximum memory in MB to use for this cache (optional, default 50) */ + memory?: number | undefined; + /** Is the maximum number of files to hold open (optional, default 20) */ + files?: number | undefined; + /** Is the maximum number of operations to cache (optional, default 100) */ + items?: number | undefined; + } + + interface TimeoutOptions { + /** Number of seconds after which processing will be stopped (default 0, eg disabled) */ + seconds: number; + } + + interface SharpCounters { + /** The number of tasks this module has queued waiting for libuv to provide a worker thread from its pool. */ + queue: number; + /** The number of resize tasks currently being processed. */ + process: number; + } + + interface Raw { + width: number; + height: number; + channels: Channels; + } + + interface CreateRaw extends Raw { + /** Specifies that the raw input has already been premultiplied, set to true to avoid sharp premultiplying the image. (optional, default false) */ + premultiplied?: boolean | undefined; + /** The height of each page/frame for animated images, must be an integral factor of the overall image height. */ + pageHeight?: number | undefined; + } + + type CreateChannels = 3 | 4; + + interface Create { + /** Number of pixels wide. */ + width: number; + /** Number of pixels high. */ + height: number; + /** Number of bands, 3 for RGB, 4 for RGBA */ + channels: CreateChannels; + /** Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. */ + background: ColorLike; + /** Describes a noise to be created. */ + noise?: Noise | undefined; + /** The height of each page/frame for animated images, must be an integral factor of the overall image height. */ + pageHeight?: number | undefined; + + } + + interface CreateText { + /** Text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. */ + text: string; + /** Font name to render with. */ + font?: string; + /** Absolute filesystem path to a font file that can be used by `font`. */ + fontfile?: string; + /** Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. (optional, default `0`) */ + width?: number; + /** + * Integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution + * defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. (optional, default `0`) + */ + height?: number; + /** Text alignment ('left', 'centre', 'center', 'right'). (optional, default 'left') */ + align?: TextAlign; + /** Set this to true to apply justification to the text. (optional, default `false`) */ + justify?: boolean; + /** The resolution (size) at which to render the text. Does not take effect if `height` is specified. (optional, default `72`) */ + dpi?: number; + /** + * Set this to true to enable RGBA output. This is useful for colour emoji rendering, + * or support for pango markup features like `Red!`. (optional, default `false`) + */ + rgba?: boolean; + /** Text line height in points. Will use the font line height if none is specified. (optional, default `0`) */ + spacing?: number; + /** Word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none' */ + wrap?: TextWrap; + } + + interface Join { + /** Number of images per row. */ + across?: number | undefined; + /** Treat input as frames of an animated image. */ + animated?: boolean | undefined; + /** Space between images, in pixels. */ + shim?: number | undefined; + /** Background colour. */ + background?: ColorLike | undefined; + /** Horizontal alignment. */ + halign?: HorizontalAlignment | undefined; + /** Vertical alignment. */ + valign?: VerticalAlignment | undefined; + } + + interface TiffInputOptions { + /** Sub Image File Directory to extract, defaults to main image. Use -1 for all subifds. */ + subifd?: number | undefined; + } + + interface SvgInputOptions { + /** Custom CSS for SVG input, applied with a User Origin during the CSS cascade. */ + stylesheet?: string | undefined; + /** Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA. */ + highBitdepth?: boolean | undefined; + } + + interface PdfInputOptions { + /** Background colour to use when PDF is partially transparent. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick. */ + background?: ColorLike | undefined; + } + + interface OpenSlideInputOptions { + /** Level to extract from a multi-level input, zero based. (optional, default 0) */ + level?: number | undefined; + } + + interface Jp2InputOptions { + /** Set to `true` to load JPEG 2000 images using [oneshot mode](https://github.com/libvips/libvips/issues/4205) */ + oneshot?: boolean | undefined; + } + + interface ExifDir { + [k: string]: string; + } + + interface Exif { + 'IFD0'?: ExifDir; + 'IFD1'?: ExifDir; + 'IFD2'?: ExifDir; + 'IFD3'?: ExifDir; + } + + type HeifCompression = 'av1' | 'hevc'; + + type HeifTune = 'auto' | 'iq' | 'psnr' | 'ssim'; + + type Unit = 'inch' | 'cm'; + + type MediaType = + 'application/pdf' | + 'image/avif' | + 'image/fits' | + 'image/gif' | + 'image/heic' | + 'image/jp2' | + 'image/jpeg' | + 'image/jxl' | + 'image/png' | + 'image/svg+xml' | + 'image/tiff' | + 'image/vnd.radiance' | + 'image/webp' | + 'image/x-exr' | + 'image/x-portable-pixmap'; + + interface WriteableMetadata { + /** Number of pixels per inch (DPI) */ + density?: number | undefined; + /** Value between 1 and 8, used to update the EXIF Orientation tag. */ + orientation?: number | undefined; + /** + * Filesystem path to output ICC profile, defaults to sRGB. + * @deprecated Use `withIccProfile()` instead. + */ + icc?: string | undefined; + /** + * Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @deprecated Use `withExif()` or `withExifMerge()` instead. + */ + exif?: Exif | undefined; + } + + interface Metadata { + /** Number value of the EXIF Orientation header, if present */ + orientation?: number | undefined; + /** Name of decoder used to decompress image data e.g. jpeg, png, webp, gif, svg */ + format: keyof FormatEnum; + /** Total size of image in bytes, for Stream and Buffer input only */ + size?: number | undefined; + /** Number of pixels wide (EXIF orientation is not taken into consideration) */ + width: number; + /** Number of pixels high (EXIF orientation is not taken into consideration) */ + height: number; + /** Any changed metadata after the image orientation is applied. */ + autoOrient: { + /** Number of pixels wide (EXIF orientation is taken into consideration) */ + width: number; + /** Number of pixels high (EXIF orientation is taken into consideration) */ + height: number; + }; + /** Name of colour space interpretation */ + space: keyof ColourspaceEnum; + /** Number of bands e.g. 3 for sRGB, 4 for CMYK */ + channels: Channels; + /** Name of pixel depth format e.g. uchar, char, ushort, float ... */ + depth: keyof DepthEnum; + /** Number of pixels per inch (DPI), if present */ + density?: number | undefined; + /** String containing JPEG chroma subsampling, 4:2:0 or 4:4:4 for RGB, 4:2:0:4 or 4:4:4:4 for CMYK */ + chromaSubsampling?: string | undefined; + /** Boolean indicating whether the image is interlaced using a progressive scan */ + isProgressive: boolean; + /** Boolean indicating whether the image is palette-based (GIF, PNG). */ + isPalette: boolean; + /** Number of bits per sample for each channel (GIF, PNG). */ + bitsPerSample?: number | undefined; + /** Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP */ + pages?: number | undefined; + /** Number of pixels high each page in a multi-page image will be. */ + pageHeight?: number | undefined; + /** Number of times to loop an animated image, zero refers to a continuous loop. */ + loop?: number | undefined; + /** Delay in ms between each page in an animated image, provided as an array of integers. */ + delay?: number[] | undefined; + /** Number of the primary page in a HEIF image */ + pagePrimary?: number | undefined; + /** Boolean indicating the presence of an embedded ICC profile */ + hasProfile: boolean; + /** Boolean indicating the presence of an alpha transparency channel */ + hasAlpha: boolean; + /** Buffer containing raw EXIF data, if present */ + exif?: Buffer | undefined; + /** Buffer containing raw ICC profile data, if present */ + icc?: Buffer | undefined; + /** Buffer containing raw IPTC data, if present */ + iptc?: Buffer | undefined; + /** Buffer containing raw XMP data, if present */ + xmp?: Buffer | undefined; + /** String containing XMP data, if valid UTF-8 */ + xmpAsString?: string | undefined; + /** Buffer containing raw TIFFTAG_PHOTOSHOP data, if present */ + tifftagPhotoshop?: Buffer | undefined; + /** The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC) */ + compression?: HeifCompression | undefined; + /** Default background colour, if present, for PNG (bKGD) and GIF images */ + background?: { r: number; g: number; b: number } | { gray: number }; + /** Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide */ + levels?: LevelMetadata[] | undefined; + /** Number of Sub Image File Directories in an OME-TIFF image */ + subifds?: number | undefined; + /** The unit of resolution (density) */ + resolutionUnit?: Unit | undefined; + /** String containing format for images loaded via *magick */ + formatMagick?: string | undefined; + /** Array of keyword/text pairs representing PNG text blocks, if present. */ + comments?: CommentsMetadata[] | undefined; + /** HDR gain map, if present */ + gainMap?: GainMapMetadata | undefined; + /** Media Type (MIME Type) */ + mediaType?: MediaType | undefined; + } + + interface LevelMetadata { + width: number; + height: number; + } + + interface CommentsMetadata { + keyword: string; + text: string; + } + + interface GainMapMetadata { + /** JPEG image */ + image: Buffer; + } + + interface Stats { + /** Array of channel statistics for each channel in the image. */ + channels: ChannelStats[]; + /** Value to identify if the image is opaque or transparent, based on the presence and use of alpha channel */ + isOpaque: boolean; + /** Histogram-based estimation of greyscale entropy, discarding alpha channel if any */ + entropy: number; + /** Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any */ + sharpness: number; + /** Object containing most dominant sRGB colour based on a 4096-bin 3D histogram */ + dominant: { r: number; g: number; b: number }; + } + + interface ChannelStats { + /** minimum value in the channel */ + min: number; + /** maximum value in the channel */ + max: number; + /** sum of all values in a channel */ + sum: number; + /** sum of squared values in a channel */ + squaresSum: number; + /** mean of the values in a channel */ + mean: number; + /** standard deviation for the values in a channel */ + stdev: number; + /** x-coordinate of one of the pixel where the minimum lies */ + minX: number; + /** y-coordinate of one of the pixel where the minimum lies */ + minY: number; + /** x-coordinate of one of the pixel where the maximum lies */ + maxX: number; + /** y-coordinate of one of the pixel where the maximum lies */ + maxY: number; + } + + interface OutputOptions { + /** Force format output, otherwise attempt to use input format (optional, default true) */ + force?: boolean | undefined; + } + + interface WithIccProfileOptions { + /** Should the ICC profile be included in the output image metadata? (optional, default true) */ + attach?: boolean | undefined; + } + + interface JpegOptions extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Use progressive (interlace) scan (optional, default false) */ + progressive?: boolean | undefined; + /** Set to '4:4:4' to prevent chroma subsampling when quality <= 90 (optional, default '4:2:0') */ + chromaSubsampling?: string | undefined; + /** Apply trellis quantisation (optional, default false) */ + trellisQuantisation?: boolean | undefined; + /** Apply overshoot deringing (optional, default false) */ + overshootDeringing?: boolean | undefined; + /** Optimise progressive scans, forces progressive (optional, default false) */ + optimiseScans?: boolean | undefined; + /** Alternative spelling of optimiseScans (optional, default false) */ + optimizeScans?: boolean | undefined; + /** Optimise Huffman coding tables (optional, default true) */ + optimiseCoding?: boolean | undefined; + /** Alternative spelling of optimiseCoding (optional, default true) */ + optimizeCoding?: boolean | undefined; + /** Quantization table to use, integer 0-8 (optional, default 0) */ + quantisationTable?: number | undefined; + /** Alternative spelling of quantisationTable (optional, default 0) */ + quantizationTable?: number | undefined; + /** Use mozjpeg defaults (optional, default false) */ + mozjpeg?: boolean | undefined; + } + + interface Jp2Options extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number; + /** Use lossless compression mode (optional, default false) */ + lossless?: boolean; + /** Horizontal tile size (optional, default 512) */ + tileWidth?: number; + /** Vertical tile size (optional, default 512) */ + tileHeight?: number; + /** Set to '4:2:0' to enable chroma subsampling (optional, default '4:4:4') */ + chromaSubsampling?: '4:4:4' | '4:2:0'; + } + + interface JxlOptions extends OutputOptions, AnimationOptions { + /** Maximum encoding error, between 0 (highest quality) and 15 (lowest quality) (optional, default 1.0) */ + distance?: number; + /** Calculate distance based on JPEG-like quality, between 1 and 100, overrides distance if specified */ + quality?: number; + /** Target decode speed tier, between 0 (highest quality) and 4 (lowest quality) (optional, default 0) */ + decodingTier?: number; + /** Use lossless compression (optional, default false) */ + lossless?: boolean; + /** CPU effort, between 1 (fastest) and 9 (slowest) (optional, default 7) */ + effort?: number | undefined; + } + + interface WebpOptions extends OutputOptions, AnimationOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Quality of alpha layer, number from 0-100 (optional, default 100) */ + alphaQuality?: number | undefined; + /** Use lossless compression mode (optional, default false) */ + lossless?: boolean | undefined; + /** Use near_lossless compression mode (optional, default false) */ + nearLossless?: boolean | undefined; + /** Use high quality chroma subsampling (optional, default false) */ + smartSubsample?: boolean | undefined; + /** Auto-adjust the deblocking filter, slow but can improve low contrast edges (optional, default false) */ + smartDeblock?: boolean | undefined; + /** Level of CPU effort to reduce file size, integer 0-6 (optional, default 4) */ + effort?: number | undefined; + /** Prevent use of animation key frames to minimise file size (slow) (optional, default false) */ + minSize?: boolean | undefined; + /** Allow mixture of lossy and lossless animation frames (slow) (optional, default false) */ + mixed?: boolean | undefined; + /** Preset options: one of default, photo, picture, drawing, icon, text (optional, default 'default') */ + preset?: keyof PresetEnum | undefined; + /** Preserve the colour data in transparent pixels (optional, default false) */ + exact?: boolean | undefined; + } + + interface AvifOptions extends OutputOptions { + /** quality, integer 1-100 (optional, default 50) */ + quality?: number | undefined; + /** use lossless compression (optional, default false) */ + lossless?: boolean | undefined; + /** Level of CPU effort to reduce file size, between 0 (fastest) and 9 (slowest) (optional, default 4) */ + effort?: number | undefined; + /** set to '4:2:0' to use chroma subsampling, requires libvips v8.11.0 (optional, default '4:4:4') */ + chromaSubsampling?: string | undefined; + /** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */ + bitdepth?: 8 | 10 | 12 | undefined; + /** Tune output for a quality metric, one of 'auto', 'iq', 'psnr' or 'ssim' (optional, default 'auto') */ + tune?: HeifTune | undefined; + } + + interface HeifOptions extends OutputOptions { + /** quality, integer 1-100 (optional, default 50) */ + quality?: number | undefined; + /** compression format: av1, hevc (optional, default 'av1') */ + compression?: HeifCompression | undefined; + /** use lossless compression (optional, default false) */ + lossless?: boolean | undefined; + /** Level of CPU effort to reduce file size, between 0 (fastest) and 9 (slowest) (optional, default 4) */ + effort?: number | undefined; + /** set to '4:2:0' to use chroma subsampling (optional, default '4:4:4') */ + chromaSubsampling?: string | undefined; + /** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */ + bitdepth?: 8 | 10 | 12 | undefined; + /** Tune output for a quality metric, one of 'auto', 'iq', 'psnr' or 'ssim' (optional, default 'auto') */ + tune?: HeifTune | undefined; + } + + interface GifOptions extends OutputOptions, AnimationOptions { + /** Re-use existing palette, otherwise generate new (slow) */ + reuse?: boolean | undefined; + /** Use progressive (interlace) scan */ + progressive?: boolean | undefined; + /** Maximum number of palette entries, including transparency, between 2 and 256 (optional, default 256) */ + colours?: number | undefined; + /** Alternative spelling of "colours". Maximum number of palette entries, including transparency, between 2 and 256 (optional, default 256) */ + colors?: number | undefined; + /** Level of CPU effort to reduce file size, between 1 (fastest) and 10 (slowest) (optional, default 7) */ + effort?: number | undefined; + /** Level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most) (optional, default 1.0) */ + dither?: number | undefined; + /** Maximum inter-frame error for transparency, between 0 (lossless) and 32 (optional, default 0) */ + interFrameMaxError?: number | undefined; + /** Maximum inter-palette error for palette reuse, between 0 and 256 (optional, default 3) */ + interPaletteMaxError?: number | undefined; + /** Keep duplicate frames in the output instead of combining them (optional, default false) */ + keepDuplicateFrames?: boolean | undefined; + } + + interface TiffOptions extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k (optional, default 'jpeg') */ + compression?: string | undefined; + /** Use BigTIFF variant (has no effect when compression is none) (optional, default false) */ + bigtiff?: boolean | undefined; + /** Compression predictor options: none, horizontal, float (optional, default 'horizontal') */ + predictor?: string | undefined; + /** Write an image pyramid (optional, default false) */ + pyramid?: boolean | undefined; + /** Write a tiled tiff (optional, default false) */ + tile?: boolean | undefined; + /** Horizontal tile size (optional, default 256) */ + tileWidth?: number | undefined; + /** Vertical tile size, valid values are integers in the range 1-32768 (optional, default 256) */ + tileHeight?: number | undefined; + /** Horizontal resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 (optional, default 1.0) */ + xres?: number | undefined; + /** Vertical resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 (optional, default 1.0) */ + yres?: number | undefined; + /** Reduce bitdepth to 1, 2 or 4 bit (optional) */ + bitdepth?: 1 | 2 | 4 | undefined; + /** Write 1-bit images as miniswhite (optional, default false) */ + miniswhite?: boolean | undefined; + /** Resolution unit options: inch, cm (optional, default 'inch') */ + resolutionUnit?: Unit | undefined; + } + + interface PngOptions extends OutputOptions { + /** Use progressive (interlace) scan (optional, default false) */ + progressive?: boolean | undefined; + /** zlib compression level, 0-9 (optional, default 6) */ + compressionLevel?: number | undefined; + /** Use adaptive row filtering (optional, default false) */ + adaptiveFiltering?: boolean | undefined; + /** Use the lowest number of colours needed to achieve given quality (optional, default `100`) */ + quality?: number | undefined; + /** Level of CPU effort to reduce file size, between 1 (fastest) and 10 (slowest), sets palette to true (optional, default 7) */ + effort?: number | undefined; + /** Quantise to a palette-based image with alpha transparency support (optional, default false) */ + palette?: boolean | undefined; + /** Maximum number of palette entries (optional, default 256) */ + colours?: number | undefined; + /** Alternative Spelling of "colours". Maximum number of palette entries (optional, default 256) */ + colors?: number | undefined; + /** Level of Floyd-Steinberg error diffusion (optional, default 1.0) */ + dither?: number | undefined; + } + + interface RotateOptions { + /** parsed by the color module to extract values for red, green, blue and alpha. (optional, default "#000000") */ + background?: ColorLike | undefined; + } + + type Precision = 'integer' | 'float' | 'approximate'; + + interface BlurOptions { + /** A value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2` */ + sigma: number; + /** A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask. */ + minAmplitude?: number; + /** How accurate the operation should be, one of: integer, float, approximate. (optional, default "integer") */ + precision?: Precision | undefined; + } + + interface FlattenOptions { + /** background colour, parsed by the color module, defaults to black. (optional, default {r:0,g:0,b:0}) */ + background?: ColorLike | undefined; + } + + interface NegateOptions { + /** whether or not to negate any alpha channel. (optional, default true) */ + alpha?: boolean | undefined; + } + + interface NormaliseOptions { + /** Percentile below which luminance values will be underexposed. */ + lower?: number | undefined; + /** Percentile above which luminance values will be overexposed. */ + upper?: number | undefined; + } + + interface ResizeOptions { + /** Alternative means of specifying width. If both are present this takes priority. */ + width?: number | undefined; + /** Alternative means of specifying height. If both are present this takes priority. */ + height?: number | undefined; + /** How the image should be resized to fit both provided dimensions, one of cover, contain, fill, inside or outside. (optional, default 'cover') */ + fit?: keyof FitEnum | undefined; + /** Position, gravity or strategy to use when fit is cover or contain. (optional, default 'centre') */ + position?: number | string | undefined; + /** Background colour when using a fit of contain, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ + background?: ColorLike | undefined; + /** The kernel to use for image reduction. (optional, default 'lanczos3') */ + kernel?: keyof KernelEnum | undefined; + /** Do not enlarge if the width or height are already less than the specified dimensions, equivalent to GraphicsMagick's > geometry option. (optional, default false) */ + withoutEnlargement?: boolean | undefined; + /** Do not reduce if the width or height are already greater than the specified dimensions, equivalent to GraphicsMagick's < geometry option. (optional, default false) */ + withoutReduction?: boolean | undefined; + /** Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern on some images. (optional, default true) */ + fastShrinkOnLoad?: boolean | undefined; + } + + interface Region { + /** zero-indexed offset from left edge, an integer between 0 and 100000000 */ + left: number; + /** zero-indexed offset from top edge, an integer between 0 and 100000000 */ + top: number; + /** dimension of extracted image, an integer between 0 and 100000000 */ + width: number; + /** dimension of extracted image, an integer between 0 and 100000000 */ + height: number; + } + + interface Noise { + /** type of generated noise, currently only gaussian is supported. */ + type: 'gaussian'; + /** mean of pixels in generated noise. */ + mean?: number | undefined; + /** standard deviation of pixels in generated noise. */ + sigma?: number | undefined; + } + + type ExtendWith = 'background' | 'copy' | 'repeat' | 'mirror'; + + interface ExtendOptions { + /** single pixel count to top edge, valid values are integers in the range 0-10000 (optional, default 0) */ + top?: number | undefined; + /** single pixel count to left edge, valid values are integers in the range 0-10000 (optional, default 0) */ + left?: number | undefined; + /** single pixel count to bottom edge, valid values are integers in the range 0-10000 (optional, default 0) */ + bottom?: number | undefined; + /** single pixel count to right edge, valid values are integers in the range 0-10000 (optional, default 0) */ + right?: number | undefined; + /** background colour, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ + background?: ColorLike | undefined; + /** how the extension is done, one of: "background", "copy", "repeat", "mirror" (optional, default `'background'`) */ + extendWith?: ExtendWith | undefined; + } + + interface TrimOptions { + /** Background colour, parsed by the color module, defaults to that of the top-left pixel. (optional) */ + background?: ColorLike | undefined; + /** Allowed difference from the above colour, a positive number. (optional, default 10) */ + threshold?: number | undefined; + /** Does the input more closely resemble line art (e.g. vector) rather than being photographic? (optional, default false) */ + lineArt?: boolean | undefined; + /** Leave a margin around trimmed content, integral number of pixels between 0 and 10000000. (optional, default 0) */ + margin?: number | undefined; + } + + interface RawOptions { + depth?: keyof DepthEnum; + } + + /** 1 for grayscale, 2 for grayscale + alpha, 3 for sRGB, 4 for CMYK or RGBA */ + type Channels = 1 | 2 | 3 | 4; + + type Colour = ColorLike; + type Color = ColorLike; + + interface Kernel { + /** width of the kernel in pixels. */ + width: number; + /** height of the kernel in pixels. */ + height: number; + /** Array of length width*height containing the kernel values. */ + kernel: ArrayLike; + /** the scale of the kernel in pixels. (optional, default sum) */ + scale?: number | undefined; + /** the offset of the kernel in pixels. (optional, default 0) */ + offset?: number | undefined; + } + + interface ClaheOptions { + /** width of the region. Valid values are integers in the range 1-65536. */ + width: number; + /** height of the region. Valid values are integers in the range 1-65536. */ + height: number; + /** max slope of the cumulative contrast. A value of 0 disables contrast limiting. Valid values are integers in the range 0-100. (optional, default 3) */ + maxSlope?: number | undefined; + } + + interface ThresholdOptions { + /** convert to single channel greyscale. (optional, default true) */ + greyscale?: boolean | undefined; + /** alternative spelling for greyscale. (optional, default true) */ + grayscale?: boolean | undefined; + } + + interface OverlayOptions extends SharpOptions { + /** Buffer containing image data, String containing the path to an image file, or Create object */ + input?: string | Buffer | { create: Create } | { text: CreateText } | { raw: CreateRaw } | undefined; + /** how to blend this image with the image below. (optional, default `'over'`) */ + blend?: Blend | undefined; + /** gravity at which to place the overlay. (optional, default 'centre') */ + gravity?: Gravity | undefined; + /** the pixel offset from the top edge, an integer between -100000000 and 100000000. */ + top?: number | undefined; + /** the pixel offset from the left edge, an integer between -100000000 and 100000000. */ + left?: number | undefined; + /** set to true to repeat the overlay image across the entire image with the given gravity. (optional, default false) */ + tile?: boolean | undefined; + /** Set to true to avoid premultipling the image below. Equivalent to the --premultiplied vips option. */ + premultiplied?: boolean | undefined; + /** number representing the DPI for vector overlay image. (optional, default 72)*/ + density?: number | undefined; + /** Set to true to read all frames/pages of an animated image. (optional, default false) */ + animated?: boolean | undefined; + /** see sharp() constructor, (optional, default 'warning') */ + failOn?: FailOnOptions | undefined; + /** see sharp() constructor, (optional, default 268402689) */ + limitInputPixels?: number | boolean | undefined; + /** see sharp() constructor, (optional, default false) */ + autoOrient?: boolean | undefined; + } + + interface TileOptions { + /** Tile size in pixels, a value between 1 and 8192. (optional, default 256) */ + size?: number | undefined; + /** Tile overlap in pixels, a value between 0 and 8192. (optional, default 0) */ + overlap?: number | undefined; + /** Tile angle of rotation, must be a multiple of 90. (optional, default 0) */ + angle?: number | undefined; + /** background colour, parsed by the color module, defaults to white without transparency. (optional, default {r:255,g:255,b:255,alpha:1}) */ + background?: ColorLike | undefined; + /** How deep to make the pyramid, possible values are "onepixel", "onetile" or "one" (default based on layout) */ + depth?: string | undefined; + /** Threshold to skip tile generation, a value 0 - 255 for 8-bit images or 0 - 65535 for 16-bit images */ + skipBlanks?: number | undefined; + /** Tile container, with value fs (filesystem) or zip (compressed file). (optional, default 'fs') */ + container?: TileContainer | undefined; + /** Filesystem layout, possible values are dz, iiif, iiif3, zoomify or google. (optional, default 'dz') */ + layout?: TileLayout | undefined; + /** Centre image in tile. (optional, default false) */ + centre?: boolean | undefined; + /** Alternative spelling of centre. (optional, default false) */ + center?: boolean | undefined; + /** When layout is iiif/iiif3, sets the @id/id attribute of info.json (optional, default 'https://example.com/iiif') */ + id?: string | undefined; + /** The name of the directory within the zip file when container is `zip`. */ + basename?: string | undefined; + } + + interface AnimationOptions { + /** Number of animation iterations, a value between 0 and 65535. Use 0 for infinite animation. (optional, default 0) */ + loop?: number | undefined; + /** delay(s) between animation frames (in milliseconds), each value between 0 and 65535. (optional) */ + delay?: number | number[] | undefined; + } + + interface SharpenOptions { + /** The sigma of the Gaussian mask, where sigma = 1 + radius / 2, between 0.000001 and 10000 */ + sigma: number; + /** The level of sharpening to apply to "flat" areas, between 0 and 1000000 (optional, default 1.0) */ + m1?: number | undefined; + /** The level of sharpening to apply to "jagged" areas, between 0 and 1000000 (optional, default 2.0) */ + m2?: number | undefined; + /** Threshold between "flat" and "jagged", between 0 and 1000000 (optional, default 2.0) */ + x1?: number | undefined; + /** Maximum amount of brightening, between 0 and 1000000 (optional, default 10.0) */ + y2?: number | undefined; + /** Maximum amount of darkening, between 0 and 1000000 (optional, default 20.0) */ + y3?: number | undefined; + } + + interface AffineOptions { + /** Parsed by the color module to extract values for red, green, blue and alpha. (optional, default "#000000") */ + background?: string | object | undefined; + /** Input horizontal offset (optional, default 0) */ + idx?: number | undefined; + /** Input vertical offset (optional, default 0) */ + idy?: number | undefined; + /** Output horizontal offset (optional, default 0) */ + odx?: number | undefined; + /** Output horizontal offset (optional, default 0) */ + ody?: number | undefined; + /** Interpolator (optional, default sharp.interpolators.bicubic) */ + interpolator?: Interpolators[keyof Interpolators] | undefined; + } + + interface OutputInfo { + format: string; + size: number; + width: number; + height: number; + channels: Channels; + /** indicating if premultiplication was used */ + premultiplied: boolean; + /** Indicates if the output image has an alpha channel */ + hasAlpha: boolean; + /** Only defined when using a crop strategy */ + cropOffsetLeft?: number | undefined; + /** Only defined when using a crop strategy */ + cropOffsetTop?: number | undefined; + /** Only defined when using a trim method */ + trimOffsetLeft?: number | undefined; + /** Only defined when using a trim method */ + trimOffsetTop?: number | undefined; + /** DPI the font was rendered at, only defined when using `text` input */ + textAutofitDpi?: number | undefined; + /** When using the attention crop strategy, the focal point of the cropped region */ + attentionX?: number | undefined; + attentionY?: number | undefined; + /** Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP */ + pages?: number | undefined; + /** Number of pixels high each page in a multi-page image will be. */ + pageHeight?: number | undefined; + } + + interface AvailableFormatInfo { + id: string; + input: { file: boolean; buffer: boolean; stream: boolean; fileSuffix?: string[] }; + output: { file: boolean; buffer: boolean; stream: boolean; alias?: string[] }; + } + + interface FitEnum { + contain: 'contain'; + cover: 'cover'; + fill: 'fill'; + inside: 'inside'; + outside: 'outside'; + } + + interface KernelEnum { + nearest: 'nearest'; + cubic: 'cubic'; + linear: 'linear'; + mitchell: 'mitchell'; + lanczos2: 'lanczos2'; + lanczos3: 'lanczos3'; + mks2013: 'mks2013'; + mks2021: 'mks2021'; + } + + interface PresetEnum { + default: 'default'; + picture: 'picture'; + photo: 'photo'; + drawing: 'drawing'; + icon: 'icon'; + text: 'text'; + } + + interface BoolEnum { + and: 'and'; + or: 'or'; + eor: 'eor'; + } + + interface ColourspaceEnum { + 'b-w': string; + cmc: string; + cmyk: string; + fourier: string; + grey16: string; + histogram: string; + hsv: string; + lab: string; + labq: string; + labs: string; + lch: string; + matrix: string; + multiband: string; + rgb: string; + rgb16: string; + scrgb: string; + srgb: string; + xyz: string; + yxy: string; + } + + interface DepthEnum { + char: string; + complex: string; + double: string; + dpcomplex: string; + float: string; + int: string; + short: string; + uchar: string; + uint: string; + ushort: string; + } + + type FailOnOptions = 'none' | 'truncated' | 'error' | 'warning'; + + type TextAlign = 'left' | 'centre' | 'center' | 'right'; + + type TextWrap = 'word' | 'char' | 'word-char' | 'none'; + + type HorizontalAlignment = 'left' | 'centre' | 'center' | 'right'; + + type VerticalAlignment = 'top' | 'centre' | 'center' | 'bottom'; + + type TileContainer = 'fs' | 'zip'; + + type TileLayout = 'dz' | 'iiif' | 'iiif3' | 'zoomify' | 'google'; + + type Blend = + | 'clear' + | 'source' + | 'over' + | 'in' + | 'out' + | 'atop' + | 'dest' + | 'dest-over' + | 'dest-in' + | 'dest-out' + | 'dest-atop' + | 'xor' + | 'add' + | 'saturate' + | 'multiply' + | 'screen' + | 'overlay' + | 'darken' + | 'lighten' + | 'color-dodge' + | 'colour-dodge' + | 'color-burn' + | 'colour-burn' + | 'hard-light' + | 'soft-light' + | 'difference' + | 'exclusion'; + + type Gravity = number | string; + + interface GravityEnum { + north: number; + northeast: number; + southeast: number; + south: number; + southwest: number; + west: number; + northwest: number; + east: number; + center: number; + centre: number; + } + + interface StrategyEnum { + entropy: number; + attention: number; + } + + interface FormatEnum { + dcraw: AvailableFormatInfo; + dz: AvailableFormatInfo; + exr: AvailableFormatInfo; + fits: AvailableFormatInfo; + gif: AvailableFormatInfo; + heif: AvailableFormatInfo; + jpeg: AvailableFormatInfo; + jp2: AvailableFormatInfo; + jxl: AvailableFormatInfo; + magick: AvailableFormatInfo; + openslide: AvailableFormatInfo; + pdf: AvailableFormatInfo; + png: AvailableFormatInfo; + ppm: AvailableFormatInfo; + rad: AvailableFormatInfo; + raw: AvailableFormatInfo; + svg: AvailableFormatInfo; + tiff: AvailableFormatInfo; + vips: AvailableFormatInfo; + webp: AvailableFormatInfo; + } + + interface CacheResult { + memory: { current: number; high: number; max: number }; + files: { current: number; max: number }; + items: { current: number; max: number }; + } + + interface Interpolators { + /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */ + nearest: 'nearest'; + /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */ + bilinear: 'bilinear'; + /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */ + bicubic: 'bicubic'; + /** + * [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). + * Prevents some "[acutance](http://en.wikipedia.org/wiki/Acutance)" but typically reduces performance by a factor of 2. + */ + locallyBoundedBicubic: 'lbb'; + /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */ + nohalo: 'nohalo'; + /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents "staircasing" when enlarging. */ + vertexSplitQuadraticBasisSpline: 'vsqbs'; + } + + type Matrix2x2 = [[number, number], [number, number]]; + type Matrix3x3 = [[number, number, number], [number, number, number], [number, number, number]]; + type Matrix4x4 = [[number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number]]; +} + +export = sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/index.d.mts b/apps/api/.output/node_modules/sharp/dist/index.d.mts new file mode 100644 index 0000000..3d29d1e --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/index.d.mts @@ -0,0 +1,2046 @@ +/** + * Copyright 2017 François Nguyen and others. + * + * Billy Kwok + * Bradley Odell + * Espen Hovlandsdal + * Floris de Bijl + * François Nguyen + * Jamie Woodbury + * Wooseop Kim + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +// SPDX-License-Identifier: MIT + +/// + +declare type Duplex = import('node:stream').Duplex; +declare type ColorLike = import('@img/colour').ColorLike; + +//#region Constructor functions + +/** + * Creates a sharp instance from an image + * @param input Buffer containing JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data, or String containing the path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file. + * @param options Object with optional attributes. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + +/** Object containing nested boolean values representing the available input and output formats/methods. */ +export const format: FormatEnum; + +/** An Object containing the version numbers of sharp, libvips and its dependencies. */ +export const versions: { + aom?: string | undefined; + archive?: string | undefined; + cairo?: string | undefined; + cgif?: string | undefined; + exif?: string | undefined; + expat?: string | undefined; + ffi?: string | undefined; + fontconfig?: string | undefined; + freetype?: string | undefined; + fribidi?: string | undefined; + glib?: string | undefined; + harfbuzz?: string | undefined; + heif?: string | undefined; + highway?: string | undefined; + imagequant?: string | undefined; + lcms?: string | undefined; + mozjpeg?: string | undefined; + pango?: string | undefined; + pixman?: string | undefined; + png?: string | undefined; + "proxy-libintl"?: string | undefined; + rsvg?: string | undefined; + sharp: string; + spng?: string | undefined; + tiff?: string | undefined; + vips: string; + webp?: string | undefined; + xml?: string | undefined; + "zlib-ng"?: string | undefined; +}; + +/** An Object containing the available interpolators and their proper values */ +export const interpolators: Interpolators; + +/** An EventEmitter that emits a change event when a task is either queued, waiting for libuv to provide a worker thread, complete */ +export const queue: NodeJS.EventEmitter; + +//#endregion + +//#region Utility functions + +/** + * Gets or, when options are provided, sets the limits of libvips' operation cache. + * Existing entries in the cache will be trimmed after any change in limits. + * This method always returns cache statistics, useful for determining how much working memory is required for a particular task. + * @param options Object with the following attributes, or Boolean where true uses default cache settings and false removes all caching (optional, default true) + * @returns The cache results. + */ +export function cache(options?: boolean | CacheOptions): CacheResult; + +/** + * Gets or sets the number of threads libvips' should create to process each image. + * The default value is the number of CPU cores. A value of 0 will reset to this default. + * The maximum number of images that can be processed in parallel is limited by libuv's UV_THREADPOOL_SIZE environment variable. + * @param concurrency The new concurrency value. + * @returns The current concurrency value. + */ +export function concurrency(concurrency?: number): number; + +/** + * Provides access to internal task counters. + * @returns Object containing task counters + */ +export function counters(): SharpCounters; + +/** + * Get and set use of SIMD vector unit instructions. Requires libvips to have been compiled with highway support. + * Improves the performance of resize, blur and sharpen operations by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON. + * @param enable enable or disable use of SIMD vector unit instructions + * @returns true if usage of SIMD vector unit instructions is enabled + */ +export function simd(enable?: boolean): boolean; + +/** + * Block libvips operations at runtime. + * + * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable, + * which when set will block all "untrusted" operations. + * + * @since 0.32.4 + * + * @example Block all TIFF input. + * block({ + * operation: ['VipsForeignLoadTiff'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to block. + */ +export function block(options: { operation: string[] }): void; + +/** + * Unblock libvips operations at runtime. + * + * This is useful for defining a list of allowed operations. + * + * @since 0.32.4 + * + * @example Block all input except WebP from the filesystem. + * block({ + * operation: ['VipsForeignLoad'] + * }); + * unblock({ + * operation: ['VipsForeignLoadWebpFile'] + * }); + * + * @example Block all input except JPEG and PNG from a Buffer or Stream. + * block({ + * operation: ['VipsForeignLoad'] + * }); + * unblock({ + * operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to unblock. + */ +export function unblock(options: { operation: string[] }): void; + +//#endregion + +export const gravity: GravityEnum; +export const strategy: StrategyEnum; +export const kernel: KernelEnum; +export const fit: FitEnum; +export const bool: BoolEnum; + +export interface Sharp extends Duplex { + //#region Channel functions + + /** + * Remove alpha channel, if any. This is a no-op if the image does not have an alpha channel. + * @returns A sharp instance that can be used to chain operations + */ + removeAlpha(): Sharp; + + /** + * Ensure alpha channel, if missing. The added alpha channel will be fully opaque. This is a no-op if the image already has an alpha channel. + * @param alpha transparency level (0=fully-transparent, 1=fully-opaque) (optional, default 1). + * @returns A sharp instance that can be used to chain operations + */ + ensureAlpha(alpha?: number): Sharp; + + /** + * Extract a single channel from a multi-channel image. + * @param channel zero-indexed channel/band number to extract, or red, green, blue or alpha. + * @throws {Error} Invalid channel + * @returns A sharp instance that can be used to chain operations + */ + extractChannel(channel: 0 | 1 | 2 | 3 | 'red' | 'green' | 'blue' | 'alpha'): Sharp; + + /** + * Join one or more channels to the image. The meaning of the added channels depends on the output colourspace, set with toColourspace(). + * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. Channel ordering follows vips convention: + * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha. + * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha. + * + * Buffers may be any of the image formats supported by + * For raw pixel input, the options object should contain a raw attribute, which follows the format of the attribute of the same name in the sharp() constructor. + * @param images one or more images (file paths, Buffers). + * @param options image options, see sharp() constructor. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + joinChannel(images: string | Buffer | ArrayLike, options?: SharpOptions): Sharp; + + /** + * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image. + * @param boolOp one of "and", "or" or "eor" to perform that bitwise operation, like the C logic operators &, | and ^ respectively. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + bandbool(boolOp: keyof BoolEnum): Sharp; + + //#endregion + + //#region Color functions + + /** + * Tint the image using the provided colour. + * An alpha channel may be present and will be unchanged by the operation. + * @param tint Parsed by the color module. + * @returns A sharp instance that can be used to chain operations + */ + tint(tint: ColorLike): Sharp; + + /** + * Convert to 8-bit greyscale; 256 shades of grey. + * This is a linear operation. + * If the input image is in a non-linear colour space such as sRGB, use gamma() with greyscale() for the best results. + * By default the output image will be web-friendly sRGB and contain three (identical) colour channels. + * This may be overridden by other sharp operations such as toColourspace('b-w'), which will produce an output image containing one colour channel. + * An alpha channel may be present, and will be unchanged by the operation. + * @param greyscale true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + greyscale(greyscale?: boolean): Sharp; + + /** + * Alternative spelling of greyscale(). + * @param grayscale true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + grayscale(grayscale?: boolean): Sharp; + + /** + * Set the pipeline colourspace. + * The input image will be converted to the provided colourspace at the start of the pipeline. + * All operations will use this colourspace before converting to the output colourspace, as defined by toColourspace. + * + * @param colourspace pipeline colourspace e.g. rgb16, scrgb, lab, grey16 ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + pipelineColourspace(colourspace?: string): Sharp; + + /** + * Alternative spelling of pipelineColourspace + * @param colorspace pipeline colourspace e.g. rgb16, scrgb, lab, grey16 ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + pipelineColorspace(colorspace?: string): Sharp; + + /** + * Set the output colourspace. + * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * @param colourspace output colourspace e.g. srgb, rgb, cmyk, lab, b-w ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toColourspace(colourspace?: string): Sharp; + + /** + * Alternative spelling of toColourspace(). + * @param colorspace output colorspace e.g. srgb, rgb, cmyk, lab, b-w ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toColorspace(colorspace: string): Sharp; + + //#endregion + + //#region Composite functions + + /** + * Composite image(s) over the processed (resized, extracted etc.) image. + * + * The images to composite must be the same size or smaller than the processed image. + * If both `top` and `left` options are provided, they take precedence over `gravity`. + * @param images - Ordered list of images to composite + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + composite(images: OverlayOptions[]): Sharp; + + //#endregion + + //#region Input functions + + /** + * Take a "snapshot" of the Sharp instance, returning a new instance. + * Cloned instances inherit the input of their parent instance. + * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream. + * @returns A sharp instance that can be used to chain operations + */ + clone(): Sharp; + + /** + * Fast access to (uncached) image metadata without decoding any compressed image data. + * @returns A sharp instance that can be used to chain operations + */ + metadata(callback: (err: Error, metadata: Metadata) => void): Sharp; + + /** + * Fast access to (uncached) image metadata without decoding any compressed image data. + * @returns A promise that resolves with a metadata object + */ + metadata(): Promise; + + /** + * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image. + * @returns A sharp instance that can be used to chain operations + */ + keepMetadata(): Sharp; + + /** + * Access to pixel-derived image statistics for every channel in the image. + * @returns A sharp instance that can be used to chain operations + */ + stats(callback: (err: Error, stats: Stats) => void): Sharp; + + /** + * Access to pixel-derived image statistics for every channel in the image. + * @returns A promise that resolves with a stats object + */ + stats(): Promise; + + //#endregion + + //#region Operation functions + + /** + * Rotate the output image by either an explicit angle + * or auto-orient based on the EXIF `Orientation` tag. + * + * If an angle is provided, it is converted to a valid positive degree rotation. + * For example, `-450` will produce a 270 degree rotation. + * + * When rotating by an angle other than a multiple of 90, + * the background colour can be provided with the `background` option. + * + * If no angle is provided, it is determined from the EXIF data. + * Mirroring is supported and may infer the use of a flip operation. + * + * The use of `rotate` without an angle will remove the EXIF `Orientation` tag, if any. + * + * Only one rotation can occur per pipeline (aside from an initial call without + * arguments to orient via EXIF data). Previous calls to `rotate` in the same + * pipeline will be ignored. + * + * Multi-page images can only be rotated by 180 degrees. + * + * Method order is important when rotating, resizing and/or extracting regions, + * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`. + * + * @example + * const pipeline = sharp() + * .rotate() + * .resize(null, 200) + * .toBuffer(function (err, outputBuffer, info) { + * // outputBuffer contains 200px high JPEG image data, + * // auto-rotated using EXIF Orientation tag + * // info.width and info.height contain the dimensions of the resized image + * }); + * readableStream.pipe(pipeline); + * + * @example + * const rotateThenResize = await sharp(input) + * .rotate(90) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .toBuffer(); + * const resizeThenRotate = await sharp(input) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .rotate(90) + * .toBuffer(); + * + * @param {number} [angle=auto] angle of rotation. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string|Object} [options.background="#000000"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ + rotate(angle?: number, options?: RotateOptions): Sharp; + + /** + * Alias for calling `rotate()` with no arguments, which orients the image based + * on EXIF orientsion. + * + * This operation is aliased to emphasize its purpose, helping to remove any + * confusion between rotation and orientation. + * + * @example + * const output = await sharp(input).autoOrient().toBuffer(); + * + * @returns {Sharp} + */ + autoOrient(): Sharp + + /** + * Flip the image about the vertical Y axis. This always occurs after rotation, if any. + * The use of flip implies the removal of the EXIF Orientation tag, if any. + * @param flip true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flip(flip?: boolean): Sharp; + + /** + * Flop the image about the horizontal X axis. This always occurs after rotation, if any. + * The use of flop implies the removal of the EXIF Orientation tag, if any. + * @param flop true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flop(flop?: boolean): Sharp; + + /** + * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any. + * You must provide an array of length 4 or a 2x2 affine transformation matrix. + * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option. + * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `interpolators` Object e.g. `interpolators.nohalo`. + * + * In the case of a 2x2 matrix, the transform is: + * X = matrix[0, 0] * (x + idx) + matrix[0, 1] * (y + idy) + odx + * Y = matrix[1, 0] * (x + idx) + matrix[1, 1] * (y + idy) + ody + * + * where: + * + * x and y are the coordinates in input image. + * X and Y are the coordinates in output image. + * (0,0) is the upper left corner. + * + * @param matrix Affine transformation matrix, may either by a array of length four or a 2x2 matrix array + * @param options if present, is an Object with optional attributes. + * + * @returns A sharp instance that can be used to chain operations + */ + affine(matrix: [number, number, number, number] | Matrix2x2, options?: AffineOptions): Sharp; + + /** + * Sharpen the image. + * When used without parameters, performs a fast, mild sharpen of the output image. + * When a sigma is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space. + * Fine-grained control over the level of sharpening in "flat" (m1) and "jagged" (m2) areas is available. + * @param options if present, is an Object with optional attributes + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + sharpen(options?: SharpenOptions): Sharp; + + /** + * Apply median filter. When used without parameters the default window is 3x3. + * @param size square mask size: size x size (optional, default 3) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + median(size?: number): Sharp; + + /** + * Blur the image. + * When used without parameters, performs a fast, mild blur of the output image. + * When a sigma is provided, performs a slower, more accurate Gaussian blur. + * When a boolean sigma is provided, ether blur mild or disable blur + * @param sigma a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where sigma = 1 + radius / 2. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + blur(sigma?: number | boolean | BlurOptions): Sharp; + + /** + * Expand foreground objects using the dilate morphological operator. + * @param {Number} [width=1] dilation width in pixels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + dilate(width?: number): Sharp; + + /** + * Shrink foreground objects using the erode morphological operator. + * @param {Number} [width=1] erosion width in pixels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + erode(width?: number): Sharp; + + /** + * Merge alpha transparency channel, if any, with background. + * @param flatten true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flatten(flatten?: boolean | FlattenOptions): Sharp; + + /** + * Ensure the image has an alpha channel with all white pixel values made fully transparent. + * Existing alpha channel values for non-white pixels remain unchanged. + * @returns A sharp instance that can be used to chain operations + */ + unflatten(): Sharp; + + /** + * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of 1/gamma then increasing the encoding (brighten) post-resize at a factor of gamma. + * This can improve the perceived brightness of a resized image in non-linear colour spaces. + * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation when applying a gamma correction. + * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases. + * @param gamma value between 1.0 and 3.0. (optional, default 2.2) + * @param gammaOut value between 1.0 and 3.0. (optional, defaults to same as gamma) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + gamma(gamma?: number, gammaOut?: number): Sharp; + + /** + * Produce the "negative" of the image. + * @param negate true to enable and false to disable, or an object of options (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + negate(negate?: boolean | NegateOptions): Sharp; + + /** + * Enhance output image contrast by stretching its luminance to cover a full dynamic range. + * + * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes. + * + * Luminance values below the `lower` percentile will be underexposed by clipping to zero. + * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value. + * + * @param normalise options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + normalise(normalise?: NormaliseOptions): Sharp; + + /** + * Alternative spelling of normalise. + * @param normalize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + normalize(normalize?: NormaliseOptions): Sharp; + + /** + * Perform contrast limiting adaptive histogram equalization (CLAHE) + * + * This will, in general, enhance the clarity of the image by bringing out + * darker details. Please read more about CLAHE here: + * https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE + * + * @param options clahe options + */ + clahe(options: ClaheOptions): Sharp; + + /** + * Convolve the image with the specified kernel. + * @param kernel the specified kernel + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + convolve(kernel: Kernel): Sharp; + + /** + * Any pixel value greather than or equal to the threshold value will be set to 255, otherwise it will be set to 0. + * @param threshold a value in the range 0-255 representing the level at which the threshold will be applied. (optional, default 128) + * @param options threshold options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + threshold(threshold?: number, options?: ThresholdOptions): Sharp; + + /** + * Perform a bitwise boolean operation with operand image. + * This operation creates an output image where each pixel is the result of the selected bitwise boolean operation between the corresponding pixels of the input images. + * @param operand Buffer containing image data or String containing the path to an image file. + * @param operator one of "and", "or" or "eor" to perform that bitwise operation, like the C logic operators &, | and ^ respectively. + * @param options describes operand when using raw pixel data. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + boolean(operand: string | Buffer, operator: keyof BoolEnum, options?: { raw: Raw }): Sharp; + + /** + * Apply the linear formula a * input + b to the image (levels adjustment) + * @param a multiplier (optional, default 1.0) + * @param b offset (optional, default 0.0) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + linear(a?: number | number[] | null, b?: number | number[]): Sharp; + + /** + * Recomb the image with the specified matrix. + * @param inputMatrix 3x3 Recombination matrix or 4x4 Recombination matrix + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + recomb(inputMatrix: Matrix3x3 | Matrix4x4): Sharp; + + /** + * Transforms the image using brightness, saturation, hue rotation and lightness. + * Brightness and lightness both operate on luminance, with the difference being that brightness is multiplicative whereas lightness is additive. + * @param options describes the modulation + * @returns A sharp instance that can be used to chain operations + */ + modulate(options?: { + brightness?: number | undefined; + saturation?: number | undefined; + hue?: number | undefined; + lightness?: number | undefined; + }): Sharp; + + //#endregion + + //#region Output functions + + /** + * Write output image data to a file. + * If an explicit output format is not selected, it will be inferred from the extension, with JPEG, PNG, WebP, AVIF, TIFF, DZI, and libvips' V format supported. + * Note that raw pixel data is only supported for buffer output. + * @param fileOut The path to write the image data to. + * @param callback Callback function called on completion with two arguments (err, info). info contains the output image format, size (bytes), width, height and channels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toFile(fileOut: string, callback: (err: Error, info: OutputInfo) => void): Sharp; + + /** + * Write output image data to a file. + * @param fileOut The path to write the image data to. + * @throws {Error} Invalid parameters + * @returns A promise that fulfills with an object containing information on the resulting file + */ + toFile(fileOut: string): Promise; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * @param callback Callback function called on completion with three arguments (err, buffer, info). + * @returns A sharp instance that can be used to chain operations + */ + toBuffer(callback: (err: Error, buffer: Buffer, info: OutputInfo) => void): Sharp; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * @param options resolve options + * @param options.resolveWithObject Resolve the Promise with an Object containing data and info properties instead of resolving only with data. + * @returns A promise that resolves with the Buffer data. + */ + toBuffer(options?: { resolveWithObject: false }): Promise>; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * @param options resolve options + * @param options.resolveWithObject Resolve the Promise with an Object containing data and info properties instead of resolving only with data. + * @returns A promise that resolves with an object containing the Buffer data and an info object containing the output image format, size (bytes), width, height and channels + */ + toBuffer(options: { resolveWithObject: true }): Promise<{ data: Buffer; info: OutputInfo }>; + + /** + * Write output to a Uint8Array backed by a transferable ArrayBuffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * @returns A promise that resolves with an object containing the Uint8Array data and an info object containing the output image format, size (bytes), width, height and channels + */ + toUint8Array(): Promise<{ data: Uint8Array; info: OutputInfo }>; + + /** + * Set output density (DPI) in EXIF metadata. + * @param density Density in dots per inch (DPI). + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withDensity(density: number): Sharp; + + /** + * Keep all EXIF metadata from the input image in the output image. + * EXIF metadata is unsupported for TIFF output. + * @returns A sharp instance that can be used to chain operations + */ + keepExif(): Sharp; + + /** + * Set EXIF metadata in the output image, ignoring any EXIF in the input image. + * @param {Exif} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withExif(exif: Exif): Sharp; + + /** + * Update EXIF metadata from the input image in the output image. + * @param {Exif} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withExifMerge(exif: Exif): Sharp; + + /** + * Keep ICC profile from the input image in the output image where possible. + * @returns A sharp instance that can be used to chain operations + */ + keepIccProfile(): Sharp; + + /** + * Transform using an ICC profile and attach to the output image. + * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk). + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withIccProfile(icc: string, options?: WithIccProfileOptions): Sharp; + + /** + * Keep all XMP metadata from the input image in the output image. + * @returns A sharp instance that can be used to chain operations + */ + keepXmp(): Sharp; + + /** + * Set XMP metadata in the output image. + * @param {string} xmp - String containing XMP metadata to be embedded in the output image. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withXmp(xmp: string): Sharp; + + /** + * Include all metadata (EXIF, XMP, IPTC) from the input image in the output image. + * The default behaviour, when withMetadata is not used, is to strip all metadata and convert to the device-independent sRGB colour space. + * This will also convert to and add a web-friendly sRGB ICC profile. + * @param withMetadata + * @throws {Error} Invalid parameters. + */ + withMetadata(withMetadata?: WriteableMetadata): Sharp; + + /** + * Use these JPEG options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jpeg(options?: JpegOptions): Sharp; + + /** + * Use these JP2 (JPEG 2000) options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jp2(options?: Jp2Options): Sharp; + + /** + * Use these JPEG-XL (JXL) options for output image. + * This feature is experimental, please do not use in production systems. + * Requires libvips compiled with support for libjxl. + * The prebuilt binaries do not include this. + * Image metadata (EXIF, XMP) is unsupported. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jxl(options?: JxlOptions): Sharp; + + /** + * Use these PNG options for output image. + * PNG output is always full colour at 8 or 16 bits per pixel. + * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + png(options?: PngOptions): Sharp; + + /** + * Use these WebP options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + webp(options?: WebpOptions): Sharp; + + /** + * Use these GIF options for output image. + * Requires libvips compiled with support for ImageMagick or GraphicsMagick. The prebuilt binaries do not include this - see installing a custom libvips. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + gif(options?: GifOptions): Sharp; + + /** + * Use these AVIF options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + avif(options?: AvifOptions): Sharp; + + /** + * Use these HEIF options for output image. + * Support for patent-encumbered HEIC images requires the use of a globally-installed libvips compiled with support for libheif, libde265 and x265. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + heif(options?: HeifOptions): Sharp; + + /** + * Use these TIFF options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + tiff(options?: TiffOptions): Sharp; + + /** + * Force output to be raw, uncompressed uint8 pixel data. + * @param options Raw output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + raw(options?: RawOptions): Sharp; + + /** + * Force output to a given format. + * @param format a String or an Object with an 'id' attribute + * @param options output options + * @throws {Error} Unsupported format or options + * @returns A sharp instance that can be used to chain operations + */ + toFormat( + format: keyof FormatEnum | AvailableFormatInfo | "avif", + options?: + | OutputOptions + | JpegOptions + | PngOptions + | WebpOptions + | AvifOptions + | HeifOptions + | JxlOptions + | GifOptions + | Jp2Options + | RawOptions + | TiffOptions, + ): Sharp; + + /** + * Use tile-based deep zoom (image pyramid) output. + * Set the format and options for tile images via the toFormat, jpeg, png or webp functions. + * Use a .zip or .szi file extension with toFile to write to a compressed archive file format. + * @param tile tile options + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + tile(tile?: TileOptions): Sharp; + + /** + * Set a timeout for processing, in seconds. Use a value of zero to continue processing indefinitely, the default behaviour. + * The clock starts when libvips opens an input image for processing. Time spent waiting for a libuv thread to become available is not included. + * @param options Object with a `seconds` attribute between 0 and 3600 (number) + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + timeout(options: TimeoutOptions): Sharp; + + //#endregion + + //#region Resize functions + + /** + * Resize image to width, height or width x height. + * + * When both a width and height are provided, the possible methods by which the image should fit these are: + * - cover: Crop to cover both provided dimensions (the default). + * - contain: Embed within both provided dimensions. + * - fill: Ignore the aspect ratio of the input and stretch to both provided dimensions. + * - inside: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. + * - outside: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. + * Some of these values are based on the object-fit CSS property. + * + * When using a fit of cover or contain, the default position is centre. Other options are: + * - position: top, right top, right, right bottom, bottom, left bottom, left, left top. + * - gravity: north, northeast, east, southeast, south, southwest, west, northwest, center or centre. + * - strategy: cover only, dynamically crop using either the entropy or attention strategy. Some of these values are based on the object-position CSS property. + * + * The strategy-based approach resizes so one dimension is at its target length then repeatedly ranks edge regions, + * discarding the edge with the lowest score based on the selected strategy. + * - entropy: focus on the region with the highest Shannon entropy. + * - attention: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones. + * + * Possible interpolation kernels are: + * - nearest: Use nearest neighbour interpolation. + * - cubic: Use a Catmull-Rom spline. + * - lanczos2: Use a Lanczos kernel with a=2. + * - lanczos3: Use a Lanczos kernel with a=3 (the default). + * + * @param width pixels wide the resultant image should be. Use null or undefined to auto-scale the width to match the height. + * @param height pixels high the resultant image should be. Use null or undefined to auto-scale the height to match the width. + * @param options resize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + resize(widthOrOptions?: number | ResizeOptions | null, height?: number | null, options?: ResizeOptions): Sharp; + + /** + * Shorthand for resize(null, null, options); + * + * @param options resize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + resize(options: ResizeOptions): Sharp; + + /** + * Extend / pad / extrude one or more edges of the image with either + * the provided background colour or pixels derived from the image. + * This operation will always occur after resizing and extraction, if any. + * @param extend single pixel count to add to all edges or an Object with per-edge counts + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + extend(extend: number | ExtendOptions): Sharp; + + /** + * Extract a region of the image. + * - Use extract() before resize() for pre-resize extraction. + * - Use extract() after resize() for post-resize extraction. + * - Use extract() before and after for both. + * + * @param region The region to extract + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + extract(region: Region): Sharp; + + /** + * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel. + * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels. + * The info response Object will contain trimOffsetLeft and trimOffsetTop properties. + * @param options trim options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + trim(options?: TrimOptions): Sharp; + + //#endregion +} + +export type SharpInput = Buffer + | ArrayBuffer + | Uint8Array + | Uint8ClampedArray + | Int8Array + | Uint16Array + | Int16Array + | Uint32Array + | Int32Array + | Float32Array + | Float64Array + | string; + +export interface SharpOptions { + /** + * Auto-orient based on the EXIF `Orientation` tag, if present. + * Mirroring is supported and may infer the use of a flip operation. + * + * Using this option will remove the EXIF `Orientation` tag, if any. + */ + autoOrient?: boolean | undefined; + /** + * When to abort processing of invalid pixel data, one of (in order of sensitivity): + * 'none' (least), 'truncated', 'error' or 'warning' (most), highers level imply lower levels, invalid metadata will always abort. + * Use the default 'warning' level with untrusted input. (optional, default 'warning') + */ + failOn?: FailOnOptions | undefined; + /** + * Do not process input images where the number of pixels (width x height) exceeds this limit. + * Assumes image dimensions contained in the input metadata can be trusted. + * An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF). (optional, default 268402689) + */ + limitInputPixels?: number | boolean | undefined; + /** + * Do not process input images where the number of channels exceeds this limit. + * Assumes image metadata can be trusted. + * An integral Number of channels, zero or false to remove limit, true to use default limit of 5. (optional, default 5) + */ + limitInputChannels?: number | boolean | undefined; + /** Set this to true to remove safety features that help prevent memory exhaustion (SVG, PNG). (optional, default false) */ + unlimited?: boolean | undefined; + /** Set this to false to use random access rather than sequential read. Some operations will do this automatically. */ + sequentialRead?: boolean | undefined; + /** The DPI at which to render SVG and PDF images, in the range 1 to 100000. (optional, default 72) */ + density?: number | undefined; + /** Should the embedded ICC profile, if any, be ignored. */ + ignoreIcc?: boolean | undefined; + /** Number of pages to extract for multi-page input (GIF, TIFF, PDF), use -1 for all pages */ + pages?: number | undefined; + /** Page number to start extracting from for multi-page input (GIF, TIFF, PDF), zero based. (optional, default 0) */ + page?: number | undefined; + /** TIFF specific input options */ + tiff?: TiffInputOptions | undefined; + /** SVG specific input options */ + svg?: SvgInputOptions | undefined; + /** PDF specific input options */ + pdf?: PdfInputOptions | undefined; + /** OpenSlide specific input options */ + openSlide?: OpenSlideInputOptions | undefined; + /** JPEG 2000 specific input options */ + jp2?: Jp2InputOptions | undefined; + /** @deprecated Use {@link SharpOptions.tiff} instead */ + subifd?: number | undefined; + /** @deprecated Use {@link SharpOptions.pdf} instead */ + pdfBackground?: ColorLike | undefined; + /** @deprecated Use {@link SharpOptions.openSlide} instead */ + level?: number | undefined; + /** Set to `true` to read all frames/pages of an animated image (equivalent of setting `pages` to `-1`). (optional, default false) */ + animated?: boolean | undefined; + /** Describes raw pixel input image data. See raw() for pixel ordering. */ + raw?: CreateRaw | undefined; + /** Describes a new image to be created. */ + create?: Create | undefined; + /** Describes a new text image to be created. */ + text?: CreateText | undefined; + /** Describes how array of input images should be joined. */ + join?: Join | undefined; +} + +export interface CacheOptions { + /** Is the maximum memory in MB to use for this cache (optional, default 50) */ + memory?: number | undefined; + /** Is the maximum number of files to hold open (optional, default 20) */ + files?: number | undefined; + /** Is the maximum number of operations to cache (optional, default 100) */ + items?: number | undefined; +} + +export interface TimeoutOptions { + /** Number of seconds after which processing will be stopped (default 0, eg disabled) */ + seconds: number; +} + +export interface SharpCounters { + /** The number of tasks this module has queued waiting for libuv to provide a worker thread from its pool. */ + queue: number; + /** The number of resize tasks currently being processed. */ + process: number; +} + +export interface Raw { + width: number; + height: number; + channels: Channels; +} + +export interface CreateRaw extends Raw { + /** Specifies that the raw input has already been premultiplied, set to true to avoid sharp premultiplying the image. (optional, default false) */ + premultiplied?: boolean | undefined; + /** The height of each page/frame for animated images, must be an integral factor of the overall image height. */ + pageHeight?: number | undefined; +} + +export type CreateChannels = 3 | 4; + +export interface Create { + /** Number of pixels wide. */ + width: number; + /** Number of pixels high. */ + height: number; + /** Number of bands, 3 for RGB, 4 for RGBA */ + channels: CreateChannels; + /** Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. */ + background: ColorLike; + /** Describes a noise to be created. */ + noise?: Noise | undefined; + /** The height of each page/frame for animated images, must be an integral factor of the overall image height. */ + pageHeight?: number | undefined; + +} + +export interface CreateText { + /** Text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. */ + text: string; + /** Font name to render with. */ + font?: string; + /** Absolute filesystem path to a font file that can be used by `font`. */ + fontfile?: string; + /** Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. (optional, default `0`) */ + width?: number; + /** + * Integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution + * defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. (optional, default `0`) + */ + height?: number; + /** Text alignment ('left', 'centre', 'center', 'right'). (optional, default 'left') */ + align?: TextAlign; + /** Set this to true to apply justification to the text. (optional, default `false`) */ + justify?: boolean; + /** The resolution (size) at which to render the text. Does not take effect if `height` is specified. (optional, default `72`) */ + dpi?: number; + /** + * Set this to true to enable RGBA output. This is useful for colour emoji rendering, + * or support for pango markup features like `Red!`. (optional, default `false`) + */ + rgba?: boolean; + /** Text line height in points. Will use the font line height if none is specified. (optional, default `0`) */ + spacing?: number; + /** Word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none' */ + wrap?: TextWrap; +} + +export interface Join { + /** Number of images per row. */ + across?: number | undefined; + /** Treat input as frames of an animated image. */ + animated?: boolean | undefined; + /** Space between images, in pixels. */ + shim?: number | undefined; + /** Background colour. */ + background?: ColorLike | undefined; + /** Horizontal alignment. */ + halign?: HorizontalAlignment | undefined; + /** Vertical alignment. */ + valign?: VerticalAlignment | undefined; +} + +export interface TiffInputOptions { + /** Sub Image File Directory to extract, defaults to main image. Use -1 for all subifds. */ + subifd?: number | undefined; +} + +export interface SvgInputOptions { + /** Custom CSS for SVG input, applied with a User Origin during the CSS cascade. */ + stylesheet?: string | undefined; + /** Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA. */ + highBitdepth?: boolean | undefined; +} + +export interface PdfInputOptions { + /** Background colour to use when PDF is partially transparent. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick. */ + background?: ColorLike | undefined; +} + +export interface OpenSlideInputOptions { + /** Level to extract from a multi-level input, zero based. (optional, default 0) */ + level?: number | undefined; +} + +export interface Jp2InputOptions { + /** Set to `true` to load JPEG 2000 images using [oneshot mode](https://github.com/libvips/libvips/issues/4205) */ + oneshot?: boolean | undefined; +} + +export interface ExifDir { + [k: string]: string; +} + +export interface Exif { + 'IFD0'?: ExifDir; + 'IFD1'?: ExifDir; + 'IFD2'?: ExifDir; + 'IFD3'?: ExifDir; +} + +export type HeifCompression = 'av1' | 'hevc'; + +export type HeifTune = 'auto' | 'iq' | 'psnr' | 'ssim'; + +export type Unit = 'inch' | 'cm'; + +export type MediaType = + 'application/pdf' | + 'image/avif' | + 'image/fits' | + 'image/gif' | + 'image/heic' | + 'image/jp2' | + 'image/jpeg' | + 'image/jxl' | + 'image/png' | + 'image/svg+xml' | + 'image/tiff' | + 'image/vnd.radiance' | + 'image/webp' | + 'image/x-exr' | + 'image/x-portable-pixmap'; + +export interface WriteableMetadata { + /** Number of pixels per inch (DPI) */ + density?: number | undefined; + /** Value between 1 and 8, used to update the EXIF Orientation tag. */ + orientation?: number | undefined; + /** + * Filesystem path to output ICC profile, defaults to sRGB. + * @deprecated Use `withIccProfile()` instead. + */ + icc?: string | undefined; + /** + * Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @deprecated Use `withExif()` or `withExifMerge()` instead. + */ + exif?: Exif | undefined; +} + +export interface Metadata { + /** Number value of the EXIF Orientation header, if present */ + orientation?: number | undefined; + /** Name of decoder used to decompress image data e.g. jpeg, png, webp, gif, svg */ + format: keyof FormatEnum; + /** Total size of image in bytes, for Stream and Buffer input only */ + size?: number | undefined; + /** Number of pixels wide (EXIF orientation is not taken into consideration) */ + width: number; + /** Number of pixels high (EXIF orientation is not taken into consideration) */ + height: number; + /** Any changed metadata after the image orientation is applied. */ + autoOrient: { + /** Number of pixels wide (EXIF orientation is taken into consideration) */ + width: number; + /** Number of pixels high (EXIF orientation is taken into consideration) */ + height: number; + }; + /** Name of colour space interpretation */ + space: keyof ColourspaceEnum; + /** Number of bands e.g. 3 for sRGB, 4 for CMYK */ + channels: Channels; + /** Name of pixel depth format e.g. uchar, char, ushort, float ... */ + depth: keyof DepthEnum; + /** Number of pixels per inch (DPI), if present */ + density?: number | undefined; + /** String containing JPEG chroma subsampling, 4:2:0 or 4:4:4 for RGB, 4:2:0:4 or 4:4:4:4 for CMYK */ + chromaSubsampling?: string | undefined; + /** Boolean indicating whether the image is interlaced using a progressive scan */ + isProgressive: boolean; + /** Boolean indicating whether the image is palette-based (GIF, PNG). */ + isPalette: boolean; + /** Number of bits per sample for each channel (GIF, PNG). */ + bitsPerSample?: number | undefined; + /** Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP */ + pages?: number | undefined; + /** Number of pixels high each page in a multi-page image will be. */ + pageHeight?: number | undefined; + /** Number of times to loop an animated image, zero refers to a continuous loop. */ + loop?: number | undefined; + /** Delay in ms between each page in an animated image, provided as an array of integers. */ + delay?: number[] | undefined; + /** Number of the primary page in a HEIF image */ + pagePrimary?: number | undefined; + /** Boolean indicating the presence of an embedded ICC profile */ + hasProfile: boolean; + /** Boolean indicating the presence of an alpha transparency channel */ + hasAlpha: boolean; + /** Buffer containing raw EXIF data, if present */ + exif?: Buffer | undefined; + /** Buffer containing raw ICC profile data, if present */ + icc?: Buffer | undefined; + /** Buffer containing raw IPTC data, if present */ + iptc?: Buffer | undefined; + /** Buffer containing raw XMP data, if present */ + xmp?: Buffer | undefined; + /** String containing XMP data, if valid UTF-8 */ + xmpAsString?: string | undefined; + /** Buffer containing raw TIFFTAG_PHOTOSHOP data, if present */ + tifftagPhotoshop?: Buffer | undefined; + /** The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC) */ + compression?: HeifCompression | undefined; + /** Default background colour, if present, for PNG (bKGD) and GIF images */ + background?: { r: number; g: number; b: number } | { gray: number }; + /** Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide */ + levels?: LevelMetadata[] | undefined; + /** Number of Sub Image File Directories in an OME-TIFF image */ + subifds?: number | undefined; + /** The unit of resolution (density) */ + resolutionUnit?: Unit | undefined; + /** String containing format for images loaded via *magick */ + formatMagick?: string | undefined; + /** Array of keyword/text pairs representing PNG text blocks, if present. */ + comments?: CommentsMetadata[] | undefined; + /** HDR gain map, if present */ + gainMap?: GainMapMetadata | undefined; + /** Media Type (MIME Type) */ + mediaType?: MediaType | undefined; +} + +export interface LevelMetadata { + width: number; + height: number; +} + +export interface CommentsMetadata { + keyword: string; + text: string; +} + +export interface GainMapMetadata { + /** JPEG image */ + image: Buffer; +} + +export interface Stats { + /** Array of channel statistics for each channel in the image. */ + channels: ChannelStats[]; + /** Value to identify if the image is opaque or transparent, based on the presence and use of alpha channel */ + isOpaque: boolean; + /** Histogram-based estimation of greyscale entropy, discarding alpha channel if any */ + entropy: number; + /** Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any */ + sharpness: number; + /** Object containing most dominant sRGB colour based on a 4096-bin 3D histogram */ + dominant: { r: number; g: number; b: number }; +} + +export interface ChannelStats { + /** minimum value in the channel */ + min: number; + /** maximum value in the channel */ + max: number; + /** sum of all values in a channel */ + sum: number; + /** sum of squared values in a channel */ + squaresSum: number; + /** mean of the values in a channel */ + mean: number; + /** standard deviation for the values in a channel */ + stdev: number; + /** x-coordinate of one of the pixel where the minimum lies */ + minX: number; + /** y-coordinate of one of the pixel where the minimum lies */ + minY: number; + /** x-coordinate of one of the pixel where the maximum lies */ + maxX: number; + /** y-coordinate of one of the pixel where the maximum lies */ + maxY: number; +} + +export interface OutputOptions { + /** Force format output, otherwise attempt to use input format (optional, default true) */ + force?: boolean | undefined; +} + +export interface WithIccProfileOptions { + /** Should the ICC profile be included in the output image metadata? (optional, default true) */ + attach?: boolean | undefined; +} + +export interface JpegOptions extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Use progressive (interlace) scan (optional, default false) */ + progressive?: boolean | undefined; + /** Set to '4:4:4' to prevent chroma subsampling when quality <= 90 (optional, default '4:2:0') */ + chromaSubsampling?: string | undefined; + /** Apply trellis quantisation (optional, default false) */ + trellisQuantisation?: boolean | undefined; + /** Apply overshoot deringing (optional, default false) */ + overshootDeringing?: boolean | undefined; + /** Optimise progressive scans, forces progressive (optional, default false) */ + optimiseScans?: boolean | undefined; + /** Alternative spelling of optimiseScans (optional, default false) */ + optimizeScans?: boolean | undefined; + /** Optimise Huffman coding tables (optional, default true) */ + optimiseCoding?: boolean | undefined; + /** Alternative spelling of optimiseCoding (optional, default true) */ + optimizeCoding?: boolean | undefined; + /** Quantization table to use, integer 0-8 (optional, default 0) */ + quantisationTable?: number | undefined; + /** Alternative spelling of quantisationTable (optional, default 0) */ + quantizationTable?: number | undefined; + /** Use mozjpeg defaults (optional, default false) */ + mozjpeg?: boolean | undefined; +} + +export interface Jp2Options extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number; + /** Use lossless compression mode (optional, default false) */ + lossless?: boolean; + /** Horizontal tile size (optional, default 512) */ + tileWidth?: number; + /** Vertical tile size (optional, default 512) */ + tileHeight?: number; + /** Set to '4:2:0' to enable chroma subsampling (optional, default '4:4:4') */ + chromaSubsampling?: '4:4:4' | '4:2:0'; +} + +export interface JxlOptions extends OutputOptions, AnimationOptions { + /** Maximum encoding error, between 0 (highest quality) and 15 (lowest quality) (optional, default 1.0) */ + distance?: number; + /** Calculate distance based on JPEG-like quality, between 1 and 100, overrides distance if specified */ + quality?: number; + /** Target decode speed tier, between 0 (highest quality) and 4 (lowest quality) (optional, default 0) */ + decodingTier?: number; + /** Use lossless compression (optional, default false) */ + lossless?: boolean; + /** CPU effort, between 1 (fastest) and 9 (slowest) (optional, default 7) */ + effort?: number | undefined; +} + +export interface WebpOptions extends OutputOptions, AnimationOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Quality of alpha layer, number from 0-100 (optional, default 100) */ + alphaQuality?: number | undefined; + /** Use lossless compression mode (optional, default false) */ + lossless?: boolean | undefined; + /** Use near_lossless compression mode (optional, default false) */ + nearLossless?: boolean | undefined; + /** Use high quality chroma subsampling (optional, default false) */ + smartSubsample?: boolean | undefined; + /** Auto-adjust the deblocking filter, slow but can improve low contrast edges (optional, default false) */ + smartDeblock?: boolean | undefined; + /** Level of CPU effort to reduce file size, integer 0-6 (optional, default 4) */ + effort?: number | undefined; + /** Prevent use of animation key frames to minimise file size (slow) (optional, default false) */ + minSize?: boolean | undefined; + /** Allow mixture of lossy and lossless animation frames (slow) (optional, default false) */ + mixed?: boolean | undefined; + /** Preset options: one of default, photo, picture, drawing, icon, text (optional, default 'default') */ + preset?: keyof PresetEnum | undefined; + /** Preserve the colour data in transparent pixels (optional, default false) */ + exact?: boolean | undefined; +} + +export interface AvifOptions extends OutputOptions { + /** quality, integer 1-100 (optional, default 50) */ + quality?: number | undefined; + /** use lossless compression (optional, default false) */ + lossless?: boolean | undefined; + /** Level of CPU effort to reduce file size, between 0 (fastest) and 9 (slowest) (optional, default 4) */ + effort?: number | undefined; + /** set to '4:2:0' to use chroma subsampling, requires libvips v8.11.0 (optional, default '4:4:4') */ + chromaSubsampling?: string | undefined; + /** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */ + bitdepth?: 8 | 10 | 12 | undefined; + /** Tune output for a quality metric, one of 'auto', 'iq', 'psnr' or 'ssim' (optional, default 'auto') */ + tune?: HeifTune | undefined; +} + +export interface HeifOptions extends OutputOptions { + /** quality, integer 1-100 (optional, default 50) */ + quality?: number | undefined; + /** compression format: av1, hevc (optional, default 'av1') */ + compression?: HeifCompression | undefined; + /** use lossless compression (optional, default false) */ + lossless?: boolean | undefined; + /** Level of CPU effort to reduce file size, between 0 (fastest) and 9 (slowest) (optional, default 4) */ + effort?: number | undefined; + /** set to '4:2:0' to use chroma subsampling (optional, default '4:4:4') */ + chromaSubsampling?: string | undefined; + /** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */ + bitdepth?: 8 | 10 | 12 | undefined; + /** Tune output for a quality metric, one of 'auto', 'iq', 'psnr' or 'ssim' (optional, default 'auto') */ + tune?: HeifTune | undefined; +} + +export interface GifOptions extends OutputOptions, AnimationOptions { + /** Re-use existing palette, otherwise generate new (slow) */ + reuse?: boolean | undefined; + /** Use progressive (interlace) scan */ + progressive?: boolean | undefined; + /** Maximum number of palette entries, including transparency, between 2 and 256 (optional, default 256) */ + colours?: number | undefined; + /** Alternative spelling of "colours". Maximum number of palette entries, including transparency, between 2 and 256 (optional, default 256) */ + colors?: number | undefined; + /** Level of CPU effort to reduce file size, between 1 (fastest) and 10 (slowest) (optional, default 7) */ + effort?: number | undefined; + /** Level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most) (optional, default 1.0) */ + dither?: number | undefined; + /** Maximum inter-frame error for transparency, between 0 (lossless) and 32 (optional, default 0) */ + interFrameMaxError?: number | undefined; + /** Maximum inter-palette error for palette reuse, between 0 and 256 (optional, default 3) */ + interPaletteMaxError?: number | undefined; + /** Keep duplicate frames in the output instead of combining them (optional, default false) */ + keepDuplicateFrames?: boolean | undefined; +} + +export interface TiffOptions extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k (optional, default 'jpeg') */ + compression?: string | undefined; + /** Use BigTIFF variant (has no effect when compression is none) (optional, default false) */ + bigtiff?: boolean | undefined; + /** Compression predictor options: none, horizontal, float (optional, default 'horizontal') */ + predictor?: string | undefined; + /** Write an image pyramid (optional, default false) */ + pyramid?: boolean | undefined; + /** Write a tiled tiff (optional, default false) */ + tile?: boolean | undefined; + /** Horizontal tile size (optional, default 256) */ + tileWidth?: number | undefined; + /** Vertical tile size, valid values are integers in the range 1-32768 (optional, default 256) */ + tileHeight?: number | undefined; + /** Horizontal resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 (optional, default 1.0) */ + xres?: number | undefined; + /** Vertical resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 (optional, default 1.0) */ + yres?: number | undefined; + /** Reduce bitdepth to 1, 2 or 4 bit (optional) */ + bitdepth?: 1 | 2 | 4 | undefined; + /** Write 1-bit images as miniswhite (optional, default false) */ + miniswhite?: boolean | undefined; + /** Resolution unit options: inch, cm (optional, default 'inch') */ + resolutionUnit?: Unit | undefined; +} + +export interface PngOptions extends OutputOptions { + /** Use progressive (interlace) scan (optional, default false) */ + progressive?: boolean | undefined; + /** zlib compression level, 0-9 (optional, default 6) */ + compressionLevel?: number | undefined; + /** Use adaptive row filtering (optional, default false) */ + adaptiveFiltering?: boolean | undefined; + /** Use the lowest number of colours needed to achieve given quality (optional, default `100`) */ + quality?: number | undefined; + /** Level of CPU effort to reduce file size, between 1 (fastest) and 10 (slowest), sets palette to true (optional, default 7) */ + effort?: number | undefined; + /** Quantise to a palette-based image with alpha transparency support (optional, default false) */ + palette?: boolean | undefined; + /** Maximum number of palette entries (optional, default 256) */ + colours?: number | undefined; + /** Alternative Spelling of "colours". Maximum number of palette entries (optional, default 256) */ + colors?: number | undefined; + /** Level of Floyd-Steinberg error diffusion (optional, default 1.0) */ + dither?: number | undefined; +} + +export interface RotateOptions { + /** parsed by the color module to extract values for red, green, blue and alpha. (optional, default "#000000") */ + background?: ColorLike | undefined; +} + +export type Precision = 'integer' | 'float' | 'approximate'; + +export interface BlurOptions { + /** A value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2` */ + sigma: number; + /** A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask. */ + minAmplitude?: number; + /** How accurate the operation should be, one of: integer, float, approximate. (optional, default "integer") */ + precision?: Precision | undefined; +} + +export interface FlattenOptions { + /** background colour, parsed by the color module, defaults to black. (optional, default {r:0,g:0,b:0}) */ + background?: ColorLike | undefined; +} + +export interface NegateOptions { + /** whether or not to negate any alpha channel. (optional, default true) */ + alpha?: boolean | undefined; +} + +export interface NormaliseOptions { + /** Percentile below which luminance values will be underexposed. */ + lower?: number | undefined; + /** Percentile above which luminance values will be overexposed. */ + upper?: number | undefined; +} + +export interface ResizeOptions { + /** Alternative means of specifying width. If both are present this takes priority. */ + width?: number | undefined; + /** Alternative means of specifying height. If both are present this takes priority. */ + height?: number | undefined; + /** How the image should be resized to fit both provided dimensions, one of cover, contain, fill, inside or outside. (optional, default 'cover') */ + fit?: keyof FitEnum | undefined; + /** Position, gravity or strategy to use when fit is cover or contain. (optional, default 'centre') */ + position?: number | string | undefined; + /** Background colour when using a fit of contain, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ + background?: ColorLike | undefined; + /** The kernel to use for image reduction. (optional, default 'lanczos3') */ + kernel?: keyof KernelEnum | undefined; + /** Do not enlarge if the width or height are already less than the specified dimensions, equivalent to GraphicsMagick's > geometry option. (optional, default false) */ + withoutEnlargement?: boolean | undefined; + /** Do not reduce if the width or height are already greater than the specified dimensions, equivalent to GraphicsMagick's < geometry option. (optional, default false) */ + withoutReduction?: boolean | undefined; + /** Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern on some images. (optional, default true) */ + fastShrinkOnLoad?: boolean | undefined; +} + +export interface Region { + /** zero-indexed offset from left edge, an integer between 0 and 100000000 */ + left: number; + /** zero-indexed offset from top edge, an integer between 0 and 100000000 */ + top: number; + /** dimension of extracted image, an integer between 0 and 100000000 */ + width: number; + /** dimension of extracted image, an integer between 0 and 100000000 */ + height: number; +} + +export interface Noise { + /** type of generated noise, currently only gaussian is supported. */ + type: 'gaussian'; + /** mean of pixels in generated noise. */ + mean?: number | undefined; + /** standard deviation of pixels in generated noise. */ + sigma?: number | undefined; +} + +export type ExtendWith = 'background' | 'copy' | 'repeat' | 'mirror'; + +export interface ExtendOptions { + /** single pixel count to top edge, valid values are integers in the range 0-10000 (optional, default 0) */ + top?: number | undefined; + /** single pixel count to left edge, valid values are integers in the range 0-10000 (optional, default 0) */ + left?: number | undefined; + /** single pixel count to bottom edge, valid values are integers in the range 0-10000 (optional, default 0) */ + bottom?: number | undefined; + /** single pixel count to right edge, valid values are integers in the range 0-10000 (optional, default 0) */ + right?: number | undefined; + /** background colour, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ + background?: ColorLike | undefined; + /** how the extension is done, one of: "background", "copy", "repeat", "mirror" (optional, default `'background'`) */ + extendWith?: ExtendWith | undefined; +} + +export interface TrimOptions { + /** Background colour, parsed by the color module, defaults to that of the top-left pixel. (optional) */ + background?: ColorLike | undefined; + /** Allowed difference from the above colour, a positive number. (optional, default 10) */ + threshold?: number | undefined; + /** Does the input more closely resemble line art (e.g. vector) rather than being photographic? (optional, default false) */ + lineArt?: boolean | undefined; + /** Leave a margin around trimmed content, integral number of pixels between 0 and 10000000. (optional, default 0) */ + margin?: number | undefined; +} + +export interface RawOptions { + depth?: keyof DepthEnum; +} + +/** 1 for grayscale, 2 for grayscale + alpha, 3 for sRGB, 4 for CMYK or RGBA */ +export type Channels = 1 | 2 | 3 | 4; + +export type Colour = ColorLike; +export type Color = ColorLike; + +export interface Kernel { + /** width of the kernel in pixels. */ + width: number; + /** height of the kernel in pixels. */ + height: number; + /** Array of length width*height containing the kernel values. */ + kernel: ArrayLike; + /** the scale of the kernel in pixels. (optional, default sum) */ + scale?: number | undefined; + /** the offset of the kernel in pixels. (optional, default 0) */ + offset?: number | undefined; +} + +export interface ClaheOptions { + /** width of the region. Valid values are integers in the range 1-65536. */ + width: number; + /** height of the region. Valid values are integers in the range 1-65536. */ + height: number; + /** max slope of the cumulative contrast. A value of 0 disables contrast limiting. Valid values are integers in the range 0-100. (optional, default 3) */ + maxSlope?: number | undefined; +} + +export interface ThresholdOptions { + /** convert to single channel greyscale. (optional, default true) */ + greyscale?: boolean | undefined; + /** alternative spelling for greyscale. (optional, default true) */ + grayscale?: boolean | undefined; +} + +export interface OverlayOptions extends SharpOptions { + /** Buffer containing image data, String containing the path to an image file, or Create object */ + input?: string | Buffer | { create: Create } | { text: CreateText } | { raw: CreateRaw } | undefined; + /** how to blend this image with the image below. (optional, default `'over'`) */ + blend?: Blend | undefined; + /** gravity at which to place the overlay. (optional, default 'centre') */ + gravity?: Gravity | undefined; + /** the pixel offset from the top edge, an integer between -100000000 and 100000000. */ + top?: number | undefined; + /** the pixel offset from the left edge, an integer between -100000000 and 100000000. */ + left?: number | undefined; + /** set to true to repeat the overlay image across the entire image with the given gravity. (optional, default false) */ + tile?: boolean | undefined; + /** Set to true to avoid premultipling the image below. Equivalent to the --premultiplied vips option. */ + premultiplied?: boolean | undefined; + /** number representing the DPI for vector overlay image. (optional, default 72)*/ + density?: number | undefined; + /** Set to true to read all frames/pages of an animated image. (optional, default false) */ + animated?: boolean | undefined; + /** see sharp() constructor, (optional, default 'warning') */ + failOn?: FailOnOptions | undefined; + /** see sharp() constructor, (optional, default 268402689) */ + limitInputPixels?: number | boolean | undefined; + /** see sharp() constructor, (optional, default false) */ + autoOrient?: boolean | undefined; +} + +export interface TileOptions { + /** Tile size in pixels, a value between 1 and 8192. (optional, default 256) */ + size?: number | undefined; + /** Tile overlap in pixels, a value between 0 and 8192. (optional, default 0) */ + overlap?: number | undefined; + /** Tile angle of rotation, must be a multiple of 90. (optional, default 0) */ + angle?: number | undefined; + /** background colour, parsed by the color module, defaults to white without transparency. (optional, default {r:255,g:255,b:255,alpha:1}) */ + background?: ColorLike | undefined; + /** How deep to make the pyramid, possible values are "onepixel", "onetile" or "one" (default based on layout) */ + depth?: string | undefined; + /** Threshold to skip tile generation, a value 0 - 255 for 8-bit images or 0 - 65535 for 16-bit images */ + skipBlanks?: number | undefined; + /** Tile container, with value fs (filesystem) or zip (compressed file). (optional, default 'fs') */ + container?: TileContainer | undefined; + /** Filesystem layout, possible values are dz, iiif, iiif3, zoomify or google. (optional, default 'dz') */ + layout?: TileLayout | undefined; + /** Centre image in tile. (optional, default false) */ + centre?: boolean | undefined; + /** Alternative spelling of centre. (optional, default false) */ + center?: boolean | undefined; + /** When layout is iiif/iiif3, sets the @id/id attribute of info.json (optional, default 'https://example.com/iiif') */ + id?: string | undefined; + /** The name of the directory within the zip file when container is `zip`. */ + basename?: string | undefined; +} + +export interface AnimationOptions { + /** Number of animation iterations, a value between 0 and 65535. Use 0 for infinite animation. (optional, default 0) */ + loop?: number | undefined; + /** delay(s) between animation frames (in milliseconds), each value between 0 and 65535. (optional) */ + delay?: number | number[] | undefined; +} + +export interface SharpenOptions { + /** The sigma of the Gaussian mask, where sigma = 1 + radius / 2, between 0.000001 and 10000 */ + sigma: number; + /** The level of sharpening to apply to "flat" areas, between 0 and 1000000 (optional, default 1.0) */ + m1?: number | undefined; + /** The level of sharpening to apply to "jagged" areas, between 0 and 1000000 (optional, default 2.0) */ + m2?: number | undefined; + /** Threshold between "flat" and "jagged", between 0 and 1000000 (optional, default 2.0) */ + x1?: number | undefined; + /** Maximum amount of brightening, between 0 and 1000000 (optional, default 10.0) */ + y2?: number | undefined; + /** Maximum amount of darkening, between 0 and 1000000 (optional, default 20.0) */ + y3?: number | undefined; +} + +export interface AffineOptions { + /** Parsed by the color module to extract values for red, green, blue and alpha. (optional, default "#000000") */ + background?: string | object | undefined; + /** Input horizontal offset (optional, default 0) */ + idx?: number | undefined; + /** Input vertical offset (optional, default 0) */ + idy?: number | undefined; + /** Output horizontal offset (optional, default 0) */ + odx?: number | undefined; + /** Output horizontal offset (optional, default 0) */ + ody?: number | undefined; + /** Interpolator (optional, default interpolators.bicubic) */ + interpolator?: Interpolators[keyof Interpolators] | undefined; +} + +export interface OutputInfo { + format: string; + size: number; + width: number; + height: number; + channels: Channels; + /** indicating if premultiplication was used */ + premultiplied: boolean; + /** Indicates if the output image has an alpha channel */ + hasAlpha: boolean; + /** Only defined when using a crop strategy */ + cropOffsetLeft?: number | undefined; + /** Only defined when using a crop strategy */ + cropOffsetTop?: number | undefined; + /** Only defined when using a trim method */ + trimOffsetLeft?: number | undefined; + /** Only defined when using a trim method */ + trimOffsetTop?: number | undefined; + /** DPI the font was rendered at, only defined when using `text` input */ + textAutofitDpi?: number | undefined; + /** When using the attention crop strategy, the focal point of the cropped region */ + attentionX?: number | undefined; + attentionY?: number | undefined; + /** Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP */ + pages?: number | undefined; + /** Number of pixels high each page in a multi-page image will be. */ + pageHeight?: number | undefined; +} + +export interface AvailableFormatInfo { + id: string; + input: { file: boolean; buffer: boolean; stream: boolean; fileSuffix?: string[] }; + output: { file: boolean; buffer: boolean; stream: boolean; alias?: string[] }; +} + +export interface FitEnum { + contain: 'contain'; + cover: 'cover'; + fill: 'fill'; + inside: 'inside'; + outside: 'outside'; +} + +export interface KernelEnum { + nearest: 'nearest'; + cubic: 'cubic'; + linear: 'linear'; + mitchell: 'mitchell'; + lanczos2: 'lanczos2'; + lanczos3: 'lanczos3'; + mks2013: 'mks2013'; + mks2021: 'mks2021'; +} + +export interface PresetEnum { + default: 'default'; + picture: 'picture'; + photo: 'photo'; + drawing: 'drawing'; + icon: 'icon'; + text: 'text'; +} + +export interface BoolEnum { + and: 'and'; + or: 'or'; + eor: 'eor'; +} + +export interface ColourspaceEnum { + 'b-w': string; + cmc: string; + cmyk: string; + fourier: string; + grey16: string; + histogram: string; + hsv: string; + lab: string; + labq: string; + labs: string; + lch: string; + matrix: string; + multiband: string; + rgb: string; + rgb16: string; + scrgb: string; + srgb: string; + xyz: string; + yxy: string; +} + +export interface DepthEnum { + char: string; + complex: string; + double: string; + dpcomplex: string; + float: string; + int: string; + short: string; + uchar: string; + uint: string; + ushort: string; +} + +export type FailOnOptions = 'none' | 'truncated' | 'error' | 'warning'; + +export type TextAlign = 'left' | 'centre' | 'center' | 'right'; + +export type TextWrap = 'word' | 'char' | 'word-char' | 'none'; + +export type HorizontalAlignment = 'left' | 'centre' | 'center' | 'right'; + +export type VerticalAlignment = 'top' | 'centre' | 'center' | 'bottom'; + +export type TileContainer = 'fs' | 'zip'; + +export type TileLayout = 'dz' | 'iiif' | 'iiif3' | 'zoomify' | 'google'; + +export type Blend = + | 'clear' + | 'source' + | 'over' + | 'in' + | 'out' + | 'atop' + | 'dest' + | 'dest-over' + | 'dest-in' + | 'dest-out' + | 'dest-atop' + | 'xor' + | 'add' + | 'saturate' + | 'multiply' + | 'screen' + | 'overlay' + | 'darken' + | 'lighten' + | 'color-dodge' + | 'colour-dodge' + | 'color-burn' + | 'colour-burn' + | 'hard-light' + | 'soft-light' + | 'difference' + | 'exclusion'; + +export type Gravity = number | string; + +export interface GravityEnum { + north: number; + northeast: number; + southeast: number; + south: number; + southwest: number; + west: number; + northwest: number; + east: number; + center: number; + centre: number; +} + +export interface StrategyEnum { + entropy: number; + attention: number; +} + +export interface FormatEnum { + dcraw: AvailableFormatInfo; + dz: AvailableFormatInfo; + exr: AvailableFormatInfo; + fits: AvailableFormatInfo; + gif: AvailableFormatInfo; + heif: AvailableFormatInfo; + jpeg: AvailableFormatInfo; + jp2: AvailableFormatInfo; + jxl: AvailableFormatInfo; + magick: AvailableFormatInfo; + openslide: AvailableFormatInfo; + pdf: AvailableFormatInfo; + png: AvailableFormatInfo; + ppm: AvailableFormatInfo; + rad: AvailableFormatInfo; + raw: AvailableFormatInfo; + svg: AvailableFormatInfo; + tiff: AvailableFormatInfo; + vips: AvailableFormatInfo; + webp: AvailableFormatInfo; +} + +export interface CacheResult { + memory: { current: number; high: number; max: number }; + files: { current: number; max: number }; + items: { current: number; max: number }; +} + +export interface Interpolators { + /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */ + nearest: 'nearest'; + /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */ + bilinear: 'bilinear'; + /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */ + bicubic: 'bicubic'; + /** + * [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). + * Prevents some "[acutance](http://en.wikipedia.org/wiki/Acutance)" but typically reduces performance by a factor of 2. + */ + locallyBoundedBicubic: 'lbb'; + /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */ + nohalo: 'nohalo'; + /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents "staircasing" when enlarging. */ + vertexSplitQuadraticBasisSpline: 'vsqbs'; +} + +export type Matrix2x2 = [[number, number], [number, number]]; +export type Matrix3x3 = [[number, number, number], [number, number, number], [number, number, number]]; +export type Matrix4x4 = [[number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number]]; + +export interface SharpConstructor { + (options?: SharpOptions): Sharp; + (input?: SharpInput | SharpInput[], options?: SharpOptions): Sharp; + new (options?: SharpOptions): Sharp; + new (input?: SharpInput | SharpInput[], options?: SharpOptions): Sharp; + format: FormatEnum; + versions: { + aom?: string | undefined; + archive?: string | undefined; + cairo?: string | undefined; + cgif?: string | undefined; + exif?: string | undefined; + expat?: string | undefined; + ffi?: string | undefined; + fontconfig?: string | undefined; + freetype?: string | undefined; + fribidi?: string | undefined; + glib?: string | undefined; + harfbuzz?: string | undefined; + heif?: string | undefined; + highway?: string | undefined; + imagequant?: string | undefined; + lcms?: string | undefined; + mozjpeg?: string | undefined; + pango?: string | undefined; + pixman?: string | undefined; + png?: string | undefined; + "proxy-libintl"?: string | undefined; + rsvg?: string | undefined; + sharp: string; + spng?: string | undefined; + tiff?: string | undefined; + vips: string; + webp?: string | undefined; + xml?: string | undefined; + "zlib-ng"?: string | undefined; + }; + interpolators: Interpolators; + queue: NodeJS.EventEmitter; + cache(options?: boolean | CacheOptions): CacheResult; + concurrency(concurrency?: number): number; + counters(): SharpCounters; + simd(enable?: boolean): boolean; + block(options: { operation: string[] }): void; + unblock(options: { operation: string[] }): void; + gravity: GravityEnum; + strategy: StrategyEnum; + kernel: KernelEnum; + fit: FitEnum; + bool: BoolEnum; +} + +declare const sharp: SharpConstructor; +export default sharp; + diff --git a/apps/api/.output/node_modules/sharp/dist/index.mjs b/apps/api/.output/node_modules/sharp/dist/index.mjs new file mode 100644 index 0000000..73a5ad2 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/index.mjs @@ -0,0 +1,25 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import Sharp from './constructor.mjs'; +import input from './input.mjs'; +import resize from './resize.mjs'; +import composite from './composite.mjs'; +import operation from './operation.mjs'; +import colour from './colour.mjs'; +import channel from './channel.mjs'; +import output from './output.mjs'; +import utility from './utility.mjs'; + +input(Sharp); +resize(Sharp); +composite(Sharp); +operation(Sharp); +colour(Sharp); +channel(Sharp); +output(Sharp); +utility(Sharp); + +export default Sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/input.cjs b/apps/api/.output/node_modules/sharp/dist/input.cjs new file mode 100644 index 0000000..241b116 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/input.cjs @@ -0,0 +1,819 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const is = require('./is.cjs'); +const sharp = require('./sharp.cjs'); + +/** + * Justification alignment + * @member + * @private + */ +const align = { + left: 'low', + top: 'low', + low: 'low', + center: 'centre', + centre: 'centre', + right: 'high', + bottom: 'high', + high: 'high' +}; + +const inputStreamParameters = [ + // Limits and error handling + 'failOn', 'limitInputPixels', 'limitInputChannels', 'unlimited', + // Format-generic + 'animated', 'autoOrient', 'density', 'ignoreIcc', 'page', 'pages', 'sequentialRead', + // Format-specific + 'jp2', 'openSlide', 'pdf', 'raw', 'svg', 'tiff', + // Deprecated + 'openSlideLevel', 'pdfBackground', 'tiffSubifd' +]; + +/** + * Extract input options, if any, from an object. + * @private + */ +function _inputOptionsFromObject (obj) { + const params = inputStreamParameters + .filter(p => is.defined(obj[p])) + .map(p => ([p, obj[p]])); + return params.length + ? Object.fromEntries(params) + : undefined; +} + +/** + * Create Object containing input and input-related options. + * @private + */ +function _createInputDescriptor (input, inputOptions, containerOptions) { + const inputDescriptor = { + autoOrient: false, + failOn: 'warning', + limitInputPixels: 0x3FFF ** 2, + limitInputChannels: 5, + ignoreIcc: false, + unlimited: false, + sequentialRead: true + }; + if (is.string(input)) { + // filesystem + inputDescriptor.file = input; + } else if (is.buffer(input)) { + // Buffer + if (input.length === 0) { + throw Error('Input Buffer is empty'); + } + inputDescriptor.buffer = input; + } else if (is.arrayBuffer(input)) { + if (input.byteLength === 0) { + throw Error('Input bit Array is empty'); + } + inputDescriptor.buffer = Buffer.from(input, 0, input.byteLength); + } else if (is.typedArray(input)) { + if (input.length === 0) { + throw Error('Input Bit Array is empty'); + } + inputDescriptor.buffer = Buffer.from(input.buffer, input.byteOffset, input.byteLength); + } else if (is.plainObject(input) && !is.defined(inputOptions)) { + // Plain Object descriptor, e.g. create + inputOptions = input; + if (_inputOptionsFromObject(inputOptions)) { + // Stream with options + inputDescriptor.buffer = []; + } + } else if (!is.defined(input) && !is.defined(inputOptions) && is.object(containerOptions) && containerOptions.allowStream) { + // Stream without options + inputDescriptor.buffer = []; + } else if (Array.isArray(input)) { + if (input.length > 1) { + // Join images together + if (!this.options.joining) { + this.options.joining = true; + this.options.join = input.map(i => this._createInputDescriptor(i)); + } else { + throw new Error('Recursive join is unsupported'); + } + } else { + throw new Error('Expected at least two images to join'); + } + } else { + throw new Error(`Unsupported input '${input}' of type ${typeof input}${ + is.defined(inputOptions) ? ` when also providing options of type ${typeof inputOptions}` : '' + }`); + } + if (is.object(inputOptions)) { + // failOn + if (is.defined(inputOptions.failOn)) { + if (is.string(inputOptions.failOn) && is.inArray(inputOptions.failOn, ['none', 'truncated', 'error', 'warning'])) { + inputDescriptor.failOn = inputOptions.failOn; + } else { + throw is.invalidParameterError('failOn', 'one of: none, truncated, error, warning', inputOptions.failOn); + } + } + // autoOrient + if (is.defined(inputOptions.autoOrient)) { + if (is.bool(inputOptions.autoOrient)) { + inputDescriptor.autoOrient = inputOptions.autoOrient; + } else { + throw is.invalidParameterError('autoOrient', 'boolean', inputOptions.autoOrient); + } + } + // Density + if (is.defined(inputOptions.density)) { + if (is.number(inputOptions.density) && is.inRange(inputOptions.density, 1, 100000)) { + inputDescriptor.density = inputOptions.density; + } else { + throw is.invalidParameterError('density', 'number between 1 and 100000', inputOptions.density); + } + } + // Ignore embeddded ICC profile + if (is.defined(inputOptions.ignoreIcc)) { + if (is.bool(inputOptions.ignoreIcc)) { + inputDescriptor.ignoreIcc = inputOptions.ignoreIcc; + } else { + throw is.invalidParameterError('ignoreIcc', 'boolean', inputOptions.ignoreIcc); + } + } + // limitInputPixels + if (is.defined(inputOptions.limitInputPixels)) { + if (is.bool(inputOptions.limitInputPixels)) { + inputDescriptor.limitInputPixels = inputOptions.limitInputPixels + ? 0x3FFF ** 2 + : 0; + } else if (is.integer(inputOptions.limitInputPixels) && is.inRange(inputOptions.limitInputPixels, 0, Number.MAX_SAFE_INTEGER)) { + inputDescriptor.limitInputPixels = inputOptions.limitInputPixels; + } else { + throw is.invalidParameterError('limitInputPixels', 'positive integer', inputOptions.limitInputPixels); + } + } + // limitInputChannels + if (is.defined(inputOptions.limitInputChannels)) { + if (is.bool(inputOptions.limitInputChannels)) { + inputDescriptor.limitInputChannels = inputOptions.limitInputChannels ? 5 : 0; + } else if (is.integer(inputOptions.limitInputChannels) && is.inRange(inputOptions.limitInputChannels, 0, Number.MAX_SAFE_INTEGER)) { + inputDescriptor.limitInputChannels = inputOptions.limitInputChannels; + } else { + throw is.invalidParameterError('limitInputChannels', 'positive integer', inputOptions.limitInputChannels); + } + } + // unlimited + if (is.defined(inputOptions.unlimited)) { + if (is.bool(inputOptions.unlimited)) { + inputDescriptor.unlimited = inputOptions.unlimited; + } else { + throw is.invalidParameterError('unlimited', 'boolean', inputOptions.unlimited); + } + } + // sequentialRead + if (is.defined(inputOptions.sequentialRead)) { + if (is.bool(inputOptions.sequentialRead)) { + inputDescriptor.sequentialRead = inputOptions.sequentialRead; + } else { + throw is.invalidParameterError('sequentialRead', 'boolean', inputOptions.sequentialRead); + } + } + // Raw pixel input + if (is.defined(inputOptions.raw)) { + if ( + is.object(inputOptions.raw) && + is.integer(inputOptions.raw.width) && is.inRange(inputOptions.raw.width, 1, 100000000) && + is.integer(inputOptions.raw.height) && is.inRange(inputOptions.raw.height, 1, 100000000) && + is.integer(inputOptions.raw.channels) && is.inRange(inputOptions.raw.channels, 1, 4) + ) { + inputDescriptor.rawWidth = inputOptions.raw.width; + inputDescriptor.rawHeight = inputOptions.raw.height; + inputDescriptor.rawChannels = inputOptions.raw.channels; + switch (input.constructor) { + case Uint8Array: + case Uint8ClampedArray: + inputDescriptor.rawDepth = 'uchar'; + break; + case Int8Array: + inputDescriptor.rawDepth = 'char'; + break; + case Uint16Array: + inputDescriptor.rawDepth = 'ushort'; + break; + case Int16Array: + inputDescriptor.rawDepth = 'short'; + break; + case Uint32Array: + inputDescriptor.rawDepth = 'uint'; + break; + case Int32Array: + inputDescriptor.rawDepth = 'int'; + break; + case Float32Array: + inputDescriptor.rawDepth = 'float'; + break; + case Float64Array: + inputDescriptor.rawDepth = 'double'; + break; + default: + inputDescriptor.rawDepth = 'uchar'; + break; + } + } else { + throw new Error('Expected width, height and channels for raw pixel input'); + } + inputDescriptor.rawPremultiplied = false; + if (is.defined(inputOptions.raw.premultiplied)) { + if (is.bool(inputOptions.raw.premultiplied)) { + inputDescriptor.rawPremultiplied = inputOptions.raw.premultiplied; + } else { + throw is.invalidParameterError('raw.premultiplied', 'boolean', inputOptions.raw.premultiplied); + } + } + inputDescriptor.rawPageHeight = 0; + if (is.defined(inputOptions.raw.pageHeight)) { + if (is.integer(inputOptions.raw.pageHeight) && inputOptions.raw.pageHeight > 0 && inputOptions.raw.pageHeight <= inputOptions.raw.height) { + if (inputOptions.raw.height % inputOptions.raw.pageHeight !== 0) { + throw new Error(`Expected raw.height ${inputOptions.raw.height} to be a multiple of raw.pageHeight ${inputOptions.raw.pageHeight}`); + } + inputDescriptor.rawPageHeight = inputOptions.raw.pageHeight; + } else { + throw is.invalidParameterError('raw.pageHeight', 'positive integer', inputOptions.raw.pageHeight); + } + } + } + // Multi-page input (GIF, TIFF, PDF) + if (is.defined(inputOptions.animated)) { + if (is.bool(inputOptions.animated)) { + inputDescriptor.pages = inputOptions.animated ? -1 : 1; + } else { + throw is.invalidParameterError('animated', 'boolean', inputOptions.animated); + } + } + if (is.defined(inputOptions.pages)) { + if (is.integer(inputOptions.pages) && is.inRange(inputOptions.pages, -1, 100000)) { + inputDescriptor.pages = inputOptions.pages; + } else { + throw is.invalidParameterError('pages', 'integer between -1 and 100000', inputOptions.pages); + } + } + if (is.defined(inputOptions.page)) { + if (is.integer(inputOptions.page) && is.inRange(inputOptions.page, 0, 100000)) { + inputDescriptor.page = inputOptions.page; + } else { + throw is.invalidParameterError('page', 'integer between 0 and 100000', inputOptions.page); + } + } + // OpenSlide specific options + if (is.object(inputOptions.openSlide) && is.defined(inputOptions.openSlide.level)) { + if (is.integer(inputOptions.openSlide.level) && is.inRange(inputOptions.openSlide.level, 0, 256)) { + inputDescriptor.openSlideLevel = inputOptions.openSlide.level; + } else { + throw is.invalidParameterError('openSlide.level', 'integer between 0 and 256', inputOptions.openSlide.level); + } + } else if (is.defined(inputOptions.level)) { + // Deprecated + if (is.integer(inputOptions.level) && is.inRange(inputOptions.level, 0, 256)) { + inputDescriptor.openSlideLevel = inputOptions.level; + } else { + throw is.invalidParameterError('level', 'integer between 0 and 256', inputOptions.level); + } + } + // TIFF specific options + if (is.object(inputOptions.tiff) && is.defined(inputOptions.tiff.subifd)) { + if (is.integer(inputOptions.tiff.subifd) && is.inRange(inputOptions.tiff.subifd, -1, 100000)) { + inputDescriptor.tiffSubifd = inputOptions.tiff.subifd; + } else { + throw is.invalidParameterError('tiff.subifd', 'integer between -1 and 100000', inputOptions.tiff.subifd); + } + } else if (is.defined(inputOptions.subifd)) { + // Deprecated + if (is.integer(inputOptions.subifd) && is.inRange(inputOptions.subifd, -1, 100000)) { + inputDescriptor.tiffSubifd = inputOptions.subifd; + } else { + throw is.invalidParameterError('subifd', 'integer between -1 and 100000', inputOptions.subifd); + } + } + // SVG specific options + if (is.object(inputOptions.svg)) { + if (is.defined(inputOptions.svg.stylesheet)) { + if (is.string(inputOptions.svg.stylesheet)) { + inputDescriptor.svgStylesheet = inputOptions.svg.stylesheet; + } else { + throw is.invalidParameterError('svg.stylesheet', 'string', inputOptions.svg.stylesheet); + } + } + if (is.defined(inputOptions.svg.highBitdepth)) { + if (is.bool(inputOptions.svg.highBitdepth)) { + inputDescriptor.svgHighBitdepth = inputOptions.svg.highBitdepth; + } else { + throw is.invalidParameterError('svg.highBitdepth', 'boolean', inputOptions.svg.highBitdepth); + } + } + } + // PDF specific options + if (is.object(inputOptions.pdf) && is.defined(inputOptions.pdf.background)) { + inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdf.background); + } else if (is.defined(inputOptions.pdfBackground)) { + // Deprecated + inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdfBackground); + } + // JPEG 2000 specific options + if (is.object(inputOptions.jp2) && is.defined(inputOptions.jp2.oneshot)) { + if (is.bool(inputOptions.jp2.oneshot)) { + inputDescriptor.jp2Oneshot = inputOptions.jp2.oneshot; + } else { + throw is.invalidParameterError('jp2.oneshot', 'boolean', inputOptions.jp2.oneshot); + } + } + // Create new image + if (is.defined(inputOptions.create)) { + if ( + is.object(inputOptions.create) && + is.integer(inputOptions.create.width) && is.inRange(inputOptions.create.width, 1, 100000000) && + is.integer(inputOptions.create.height) && is.inRange(inputOptions.create.height, 1, 100000000) && + is.integer(inputOptions.create.channels) + ) { + inputDescriptor.createWidth = inputOptions.create.width; + inputDescriptor.createHeight = inputOptions.create.height; + inputDescriptor.createChannels = inputOptions.create.channels; + inputDescriptor.createPageHeight = 0; + if (is.defined(inputOptions.create.pageHeight)) { + if (is.integer(inputOptions.create.pageHeight) && inputOptions.create.pageHeight > 0 && inputOptions.create.pageHeight <= inputOptions.create.height) { + if (inputOptions.create.height % inputOptions.create.pageHeight !== 0) { + throw new Error(`Expected create.height ${inputOptions.create.height} to be a multiple of create.pageHeight ${inputOptions.create.pageHeight}`); + } + inputDescriptor.createPageHeight = inputOptions.create.pageHeight; + } else { + throw is.invalidParameterError('create.pageHeight', 'positive integer', inputOptions.create.pageHeight); + } + } + // Noise + if (is.defined(inputOptions.create.noise)) { + if (!is.object(inputOptions.create.noise)) { + throw new Error('Expected noise to be an object'); + } + if (inputOptions.create.noise.type !== 'gaussian') { + throw new Error('Only gaussian noise is supported at the moment'); + } + inputDescriptor.createNoiseType = inputOptions.create.noise.type; + if (!is.inRange(inputOptions.create.channels, 1, 4)) { + throw is.invalidParameterError('create.channels', 'number between 1 and 4', inputOptions.create.channels); + } + inputDescriptor.createNoiseMean = 128; + if (is.defined(inputOptions.create.noise.mean)) { + if (is.number(inputOptions.create.noise.mean) && is.inRange(inputOptions.create.noise.mean, 0, 10000)) { + inputDescriptor.createNoiseMean = inputOptions.create.noise.mean; + } else { + throw is.invalidParameterError('create.noise.mean', 'number between 0 and 10000', inputOptions.create.noise.mean); + } + } + inputDescriptor.createNoiseSigma = 30; + if (is.defined(inputOptions.create.noise.sigma)) { + if (is.number(inputOptions.create.noise.sigma) && is.inRange(inputOptions.create.noise.sigma, 0, 10000)) { + inputDescriptor.createNoiseSigma = inputOptions.create.noise.sigma; + } else { + throw is.invalidParameterError('create.noise.sigma', 'number between 0 and 10000', inputOptions.create.noise.sigma); + } + } + } else if (is.defined(inputOptions.create.background)) { + if (!is.inRange(inputOptions.create.channels, 3, 4)) { + throw is.invalidParameterError('create.channels', 'number between 3 and 4', inputOptions.create.channels); + } + inputDescriptor.createBackground = this._getBackgroundColourOption(inputOptions.create.background); + } else { + throw new Error('Expected valid noise or background to create a new input image'); + } + delete inputDescriptor.buffer; + } else { + throw new Error('Expected valid width, height and channels to create a new input image'); + } + } + // Create a new image with text + if (is.defined(inputOptions.text)) { + if (is.object(inputOptions.text) && is.string(inputOptions.text.text)) { + inputDescriptor.textValue = inputOptions.text.text; + if (is.defined(inputOptions.text.height) && is.defined(inputOptions.text.dpi)) { + throw new Error('Expected only one of dpi or height'); + } + if (is.defined(inputOptions.text.font)) { + if (is.string(inputOptions.text.font)) { + inputDescriptor.textFont = inputOptions.text.font; + } else { + throw is.invalidParameterError('text.font', 'string', inputOptions.text.font); + } + } + if (is.defined(inputOptions.text.fontfile)) { + if (is.string(inputOptions.text.fontfile)) { + inputDescriptor.textFontfile = inputOptions.text.fontfile; + } else { + throw is.invalidParameterError('text.fontfile', 'string', inputOptions.text.fontfile); + } + } + if (is.defined(inputOptions.text.width)) { + if (is.integer(inputOptions.text.width) && is.inRange(inputOptions.text.width, 1, 1000000)) { + inputDescriptor.textWidth = inputOptions.text.width; + } else { + throw is.invalidParameterError('text.width', 'integer between 1 and 1000000', inputOptions.text.width); + } + } + if (is.defined(inputOptions.text.height)) { + if (is.integer(inputOptions.text.height) && is.inRange(inputOptions.text.height, 1, 1000000)) { + inputDescriptor.textHeight = inputOptions.text.height; + } else { + throw is.invalidParameterError('text.height', 'integer between 1 and 1000000', inputOptions.text.height); + } + } + if (is.defined(inputOptions.text.align)) { + if (is.string(inputOptions.text.align) && is.string(this.constructor.align[inputOptions.text.align])) { + inputDescriptor.textAlign = this.constructor.align[inputOptions.text.align]; + } else { + throw is.invalidParameterError('text.align', 'valid alignment', inputOptions.text.align); + } + } + if (is.defined(inputOptions.text.justify)) { + if (is.bool(inputOptions.text.justify)) { + inputDescriptor.textJustify = inputOptions.text.justify; + } else { + throw is.invalidParameterError('text.justify', 'boolean', inputOptions.text.justify); + } + } + if (is.defined(inputOptions.text.dpi)) { + if (is.integer(inputOptions.text.dpi) && is.inRange(inputOptions.text.dpi, 1, 1000000)) { + inputDescriptor.textDpi = inputOptions.text.dpi; + } else { + throw is.invalidParameterError('text.dpi', 'integer between 1 and 1000000', inputOptions.text.dpi); + } + } + if (is.defined(inputOptions.text.rgba)) { + if (is.bool(inputOptions.text.rgba)) { + inputDescriptor.textRgba = inputOptions.text.rgba; + } else { + throw is.invalidParameterError('text.rgba', 'bool', inputOptions.text.rgba); + } + } + if (is.defined(inputOptions.text.spacing)) { + if (is.integer(inputOptions.text.spacing) && is.inRange(inputOptions.text.spacing, -1000000, 1000000)) { + inputDescriptor.textSpacing = inputOptions.text.spacing; + } else { + throw is.invalidParameterError('text.spacing', 'integer between -1000000 and 1000000', inputOptions.text.spacing); + } + } + if (is.defined(inputOptions.text.wrap)) { + if (is.string(inputOptions.text.wrap) && is.inArray(inputOptions.text.wrap, ['word', 'char', 'word-char', 'none'])) { + inputDescriptor.textWrap = inputOptions.text.wrap; + } else { + throw is.invalidParameterError('text.wrap', 'one of: word, char, word-char, none', inputOptions.text.wrap); + } + } + delete inputDescriptor.buffer; + } else { + throw new Error('Expected a valid string to create an image with text.'); + } + } + // Join images together + if (is.defined(inputOptions.join)) { + if (is.defined(this.options.join)) { + if (is.defined(inputOptions.join.animated)) { + if (is.bool(inputOptions.join.animated)) { + inputDescriptor.joinAnimated = inputOptions.join.animated; + } else { + throw is.invalidParameterError('join.animated', 'boolean', inputOptions.join.animated); + } + } + if (is.defined(inputOptions.join.across)) { + if (is.integer(inputOptions.join.across) && is.inRange(inputOptions.join.across, 1, 1000000)) { + inputDescriptor.joinAcross = inputOptions.join.across; + } else { + throw is.invalidParameterError('join.across', 'integer between 1 and 100000', inputOptions.join.across); + } + } + if (is.defined(inputOptions.join.shim)) { + if (is.integer(inputOptions.join.shim) && is.inRange(inputOptions.join.shim, 0, 1000000)) { + inputDescriptor.joinShim = inputOptions.join.shim; + } else { + throw is.invalidParameterError('join.shim', 'integer between 0 and 100000', inputOptions.join.shim); + } + } + if (is.defined(inputOptions.join.background)) { + inputDescriptor.joinBackground = this._getBackgroundColourOption(inputOptions.join.background); + } + if (is.defined(inputOptions.join.halign)) { + if (is.string(inputOptions.join.halign) && is.string(this.constructor.align[inputOptions.join.halign])) { + inputDescriptor.joinHalign = this.constructor.align[inputOptions.join.halign]; + } else { + throw is.invalidParameterError('join.halign', 'valid alignment', inputOptions.join.halign); + } + } + if (is.defined(inputOptions.join.valign)) { + if (is.string(inputOptions.join.valign) && is.string(this.constructor.align[inputOptions.join.valign])) { + inputDescriptor.joinValign = this.constructor.align[inputOptions.join.valign]; + } else { + throw is.invalidParameterError('join.valign', 'valid alignment', inputOptions.join.valign); + } + } + } else { + throw new Error('Expected input to be an array of images to join'); + } + } + } else if (is.defined(inputOptions)) { + throw new Error(`Invalid input options ${inputOptions}`); + } + return inputDescriptor; +} + +/** + * Handle incoming Buffer chunk on Writable Stream. + * @private + * @param {Buffer} chunk + * @param {string} encoding - unused + * @param {Function} callback + */ +function _write (chunk, _encoding, callback) { + if (Array.isArray(this.options.input.buffer)) { + if (is.buffer(chunk)) { + this.options.input.buffer.push(chunk); + callback(); + } else { + callback(new Error('Non-Buffer data on Writable Stream')); + } + } else { + callback(new Error('Unexpected data on Writable Stream')); + } +} + +/** + * Flattens the array of chunks accumulated in input.buffer. + * @private + */ +function _flattenBufferIn () { + if (this._isStreamInput()) { + this.options.input.buffer = Buffer.concat(this.options.input.buffer); + } +} + +/** + * Are we expecting Stream-based input? + * @private + * @returns {boolean} + */ +function _isStreamInput () { + return Array.isArray(this.options.input.buffer); +} + +/** + * Call fn when the Writable side of Stream-based input has finished, + * or immediately when it already has, as 'finish' is emitted only once. + * @private + * @param {Function} fn + */ +function _whenStreamInFinished (fn) { + if (this.writableFinished) { + fn(); + } else { + this.once('finish', fn); + } +} + +/** + * Fast access to (uncached) image metadata without decoding any compressed pixel data. + * + * This is read from the header of the input image. + * It does not take into consideration any operations to be applied to the output image, + * such as resize or rotate. + * + * Dimensions in the response will respect the `page` and `pages` properties of the + * {@link /api-constructor/ constructor parameters}. + * + * A `Promise` is returned when `callback` is not provided. + * + * - `format`: Name of decoder used to parse image e.g. `jpeg`, `png`, `webp`, `gif`, `svg`, `heif`, `tiff` + * - `mediaType`: Media Type (MIME Type) e.g. `image/jpeg`, `image/png`, `image/svg+xml`, `image/avif` + * - `size`: Total size of image in bytes, for Stream and Buffer input only + * - `width`: Number of pixels wide (EXIF orientation is not taken into consideration, see example below) + * - `height`: Number of pixels high (EXIF orientation is not taken into consideration, see example below) + * - `space`: Name of colour space interpretation e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html) + * - `channels`: Number of bands e.g. `3` for sRGB, `4` for CMYK + * - `depth`: Name of pixel depth format e.g. `uchar`, `char`, `ushort`, `float` [...](https://www.libvips.org/API/current/enum.BandFormat.html) + * - `density`: Number of pixels per inch (DPI), if present + * - `chromaSubsampling`: String containing JPEG chroma subsampling, `4:2:0` or `4:4:4` for RGB, `4:2:0:4` or `4:4:4:4` for CMYK + * - `isProgressive`: Boolean indicating whether the image is interlaced using a progressive scan + * - `isPalette`: Boolean indicating whether the image is palette-based (GIF, PNG). + * - `bitsPerSample`: Number of bits per sample for each channel (GIF, PNG, HEIF). + * - `pages`: Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP + * - `pageHeight`: Number of pixels high each page in a multi-page image will be. + * - `loop`: Number of times to loop an animated image, zero refers to a continuous loop. + * - `delay`: Delay in ms between each page in an animated image, provided as an array of integers. + * - `pagePrimary`: Number of the primary page in a HEIF image + * - `levels`: Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide + * - `subifds`: Number of Sub Image File Directories in an OME-TIFF image + * - `background`: Default background colour, if present, for PNG (bKGD) and GIF images + * - `compression`: The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC) + * - `resolutionUnit`: The unit of resolution (density), either `inch` or `cm`, if present + * - `hasProfile`: Boolean indicating the presence of an embedded ICC profile + * - `hasAlpha`: Boolean indicating the presence of an alpha transparency channel + * - `orientation`: Number value of the EXIF Orientation header, if present + * - `exif`: Buffer containing raw EXIF data, if present + * - `icc`: Buffer containing raw [ICC](https://www.npmjs.com/package/icc) profile data, if present + * - `iptc`: Buffer containing raw IPTC data, if present + * - `xmp`: Buffer containing raw XMP data, if present + * - `xmpAsString`: String containing XMP data, if valid UTF-8. + * - `tifftagPhotoshop`: Buffer containing raw TIFFTAG_PHOTOSHOP data, if present + * - `formatMagick`: String containing format for images loaded via *magick + * - `comments`: Array of keyword/text pairs representing PNG text blocks, if present. + * - `gainMap.image`: HDR gain map, if present, as compressed JPEG image. + * + * @example + * const metadata = await sharp(input).metadata(); + * + * @example + * const image = sharp(inputJpg); + * image + * .metadata() + * .then(function(metadata) { + * return image + * .resize(Math.round(metadata.width / 2)) + * .webp() + * .toBuffer(); + * }) + * .then(function(data) { + * // data contains a WebP image half the width and height of the original JPEG + * }); + * + * @example + * // Get dimensions taking EXIF Orientation into account. + * const { autoOrient } = await sharp(input).metadata(); + * const { width, height } = autoOrient; + * + * @param {Function} [callback] - called with the arguments `(err, metadata)` + * @returns {Promise|Sharp} + */ +function metadata (callback) { + const stack = Error(); + if (is.fn(callback)) { + if (this._isStreamInput()) { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.metadata(this.options, (err, metadata) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, metadata); + } + }); + }); + } else { + sharp.metadata(this.options, (err, metadata) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, metadata); + } + }); + } + return this; + } else { + if (this._isStreamInput()) { + return new Promise((resolve, reject) => { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.metadata(this.options, (err, metadata) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(metadata); + } + }); + }); + }); + } else { + return new Promise((resolve, reject) => { + sharp.metadata(this.options, (err, metadata) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(metadata); + } + }); + }); + } + } +} + +/** + * Access to pixel-derived image statistics for every channel in the image. + * A `Promise` is returned when `callback` is not provided. + * + * - `channels`: Array of channel statistics for each channel in the image. Each channel statistic contains + * - `min` (minimum value in the channel) + * - `max` (maximum value in the channel) + * - `sum` (sum of all values in a channel) + * - `squaresSum` (sum of squared values in a channel) + * - `mean` (mean of the values in a channel) + * - `stdev` (standard deviation for the values in a channel) + * - `minX` (x-coordinate of one of the pixel where the minimum lies) + * - `minY` (y-coordinate of one of the pixel where the minimum lies) + * - `maxX` (x-coordinate of one of the pixel where the maximum lies) + * - `maxY` (y-coordinate of one of the pixel where the maximum lies) + * - `isOpaque`: Is the image fully opaque? Will be `true` if the image has no alpha channel or if every pixel is fully opaque. + * - `entropy`: Histogram-based estimation of greyscale entropy, discarding alpha channel if any. + * - `sharpness`: Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any. + * - `dominant`: Object containing most dominant sRGB colour based on a 4096-bin 3D histogram. + * + * **Note**: Statistics are derived from the original input image. Any operations performed on the image must first be + * written to a buffer in order to run `stats` on the result (see third example). + * + * @example + * const image = sharp(inputJpg); + * image + * .stats() + * .then(function(stats) { + * // stats contains the channel-wise statistics array and the isOpaque value + * }); + * + * @example + * const { entropy, sharpness, dominant } = await sharp(input).stats(); + * const { r, g, b } = dominant; + * + * @example + * const image = sharp(input); + * // store intermediate result + * const part = await image.extract(region).toBuffer(); + * // create new instance to obtain statistics of extracted region + * const stats = await sharp(part).stats(); + * + * @param {Function} [callback] - called with the arguments `(err, stats)` + * @returns {Promise} + */ +function stats (callback) { + const stack = Error(); + if (is.fn(callback)) { + if (this._isStreamInput()) { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.stats(this.options, (err, stats) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, stats); + } + }); + }); + } else { + sharp.stats(this.options, (err, stats) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, stats); + } + }); + } + return this; + } else { + if (this._isStreamInput()) { + return new Promise((resolve, reject) => { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.stats(this.options, (err, stats) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(stats); + } + }); + }); + }); + } else { + return new Promise((resolve, reject) => { + sharp.stats(this.options, (err, stats) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(stats); + } + }); + }); + } + } +} + +/** + * Decorate the Sharp prototype with input-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Object.assign(Sharp.prototype, { + // Private + _inputOptionsFromObject, + _createInputDescriptor, + _write, + _flattenBufferIn, + _isStreamInput, + _whenStreamInFinished, + // Public + metadata, + stats + }); + // Class attributes + Sharp.align = align; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/input.mjs b/apps/api/.output/node_modules/sharp/dist/input.mjs new file mode 100644 index 0000000..0cab99d --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/input.mjs @@ -0,0 +1,819 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import is from './is.mjs'; +import sharp from './sharp.mjs'; + +/** + * Justification alignment + * @member + * @private + */ +const align = { + left: 'low', + top: 'low', + low: 'low', + center: 'centre', + centre: 'centre', + right: 'high', + bottom: 'high', + high: 'high' +}; + +const inputStreamParameters = [ + // Limits and error handling + 'failOn', 'limitInputPixels', 'limitInputChannels', 'unlimited', + // Format-generic + 'animated', 'autoOrient', 'density', 'ignoreIcc', 'page', 'pages', 'sequentialRead', + // Format-specific + 'jp2', 'openSlide', 'pdf', 'raw', 'svg', 'tiff', + // Deprecated + 'openSlideLevel', 'pdfBackground', 'tiffSubifd' +]; + +/** + * Extract input options, if any, from an object. + * @private + */ +function _inputOptionsFromObject (obj) { + const params = inputStreamParameters + .filter(p => is.defined(obj[p])) + .map(p => ([p, obj[p]])); + return params.length + ? Object.fromEntries(params) + : undefined; +} + +/** + * Create Object containing input and input-related options. + * @private + */ +function _createInputDescriptor (input, inputOptions, containerOptions) { + const inputDescriptor = { + autoOrient: false, + failOn: 'warning', + limitInputPixels: 0x3FFF ** 2, + limitInputChannels: 5, + ignoreIcc: false, + unlimited: false, + sequentialRead: true + }; + if (is.string(input)) { + // filesystem + inputDescriptor.file = input; + } else if (is.buffer(input)) { + // Buffer + if (input.length === 0) { + throw Error('Input Buffer is empty'); + } + inputDescriptor.buffer = input; + } else if (is.arrayBuffer(input)) { + if (input.byteLength === 0) { + throw Error('Input bit Array is empty'); + } + inputDescriptor.buffer = Buffer.from(input, 0, input.byteLength); + } else if (is.typedArray(input)) { + if (input.length === 0) { + throw Error('Input Bit Array is empty'); + } + inputDescriptor.buffer = Buffer.from(input.buffer, input.byteOffset, input.byteLength); + } else if (is.plainObject(input) && !is.defined(inputOptions)) { + // Plain Object descriptor, e.g. create + inputOptions = input; + if (_inputOptionsFromObject(inputOptions)) { + // Stream with options + inputDescriptor.buffer = []; + } + } else if (!is.defined(input) && !is.defined(inputOptions) && is.object(containerOptions) && containerOptions.allowStream) { + // Stream without options + inputDescriptor.buffer = []; + } else if (Array.isArray(input)) { + if (input.length > 1) { + // Join images together + if (!this.options.joining) { + this.options.joining = true; + this.options.join = input.map(i => this._createInputDescriptor(i)); + } else { + throw new Error('Recursive join is unsupported'); + } + } else { + throw new Error('Expected at least two images to join'); + } + } else { + throw new Error(`Unsupported input '${input}' of type ${typeof input}${ + is.defined(inputOptions) ? ` when also providing options of type ${typeof inputOptions}` : '' + }`); + } + if (is.object(inputOptions)) { + // failOn + if (is.defined(inputOptions.failOn)) { + if (is.string(inputOptions.failOn) && is.inArray(inputOptions.failOn, ['none', 'truncated', 'error', 'warning'])) { + inputDescriptor.failOn = inputOptions.failOn; + } else { + throw is.invalidParameterError('failOn', 'one of: none, truncated, error, warning', inputOptions.failOn); + } + } + // autoOrient + if (is.defined(inputOptions.autoOrient)) { + if (is.bool(inputOptions.autoOrient)) { + inputDescriptor.autoOrient = inputOptions.autoOrient; + } else { + throw is.invalidParameterError('autoOrient', 'boolean', inputOptions.autoOrient); + } + } + // Density + if (is.defined(inputOptions.density)) { + if (is.number(inputOptions.density) && is.inRange(inputOptions.density, 1, 100000)) { + inputDescriptor.density = inputOptions.density; + } else { + throw is.invalidParameterError('density', 'number between 1 and 100000', inputOptions.density); + } + } + // Ignore embeddded ICC profile + if (is.defined(inputOptions.ignoreIcc)) { + if (is.bool(inputOptions.ignoreIcc)) { + inputDescriptor.ignoreIcc = inputOptions.ignoreIcc; + } else { + throw is.invalidParameterError('ignoreIcc', 'boolean', inputOptions.ignoreIcc); + } + } + // limitInputPixels + if (is.defined(inputOptions.limitInputPixels)) { + if (is.bool(inputOptions.limitInputPixels)) { + inputDescriptor.limitInputPixels = inputOptions.limitInputPixels + ? 0x3FFF ** 2 + : 0; + } else if (is.integer(inputOptions.limitInputPixels) && is.inRange(inputOptions.limitInputPixels, 0, Number.MAX_SAFE_INTEGER)) { + inputDescriptor.limitInputPixels = inputOptions.limitInputPixels; + } else { + throw is.invalidParameterError('limitInputPixels', 'positive integer', inputOptions.limitInputPixels); + } + } + // limitInputChannels + if (is.defined(inputOptions.limitInputChannels)) { + if (is.bool(inputOptions.limitInputChannels)) { + inputDescriptor.limitInputChannels = inputOptions.limitInputChannels ? 5 : 0; + } else if (is.integer(inputOptions.limitInputChannels) && is.inRange(inputOptions.limitInputChannels, 0, Number.MAX_SAFE_INTEGER)) { + inputDescriptor.limitInputChannels = inputOptions.limitInputChannels; + } else { + throw is.invalidParameterError('limitInputChannels', 'positive integer', inputOptions.limitInputChannels); + } + } + // unlimited + if (is.defined(inputOptions.unlimited)) { + if (is.bool(inputOptions.unlimited)) { + inputDescriptor.unlimited = inputOptions.unlimited; + } else { + throw is.invalidParameterError('unlimited', 'boolean', inputOptions.unlimited); + } + } + // sequentialRead + if (is.defined(inputOptions.sequentialRead)) { + if (is.bool(inputOptions.sequentialRead)) { + inputDescriptor.sequentialRead = inputOptions.sequentialRead; + } else { + throw is.invalidParameterError('sequentialRead', 'boolean', inputOptions.sequentialRead); + } + } + // Raw pixel input + if (is.defined(inputOptions.raw)) { + if ( + is.object(inputOptions.raw) && + is.integer(inputOptions.raw.width) && is.inRange(inputOptions.raw.width, 1, 100000000) && + is.integer(inputOptions.raw.height) && is.inRange(inputOptions.raw.height, 1, 100000000) && + is.integer(inputOptions.raw.channels) && is.inRange(inputOptions.raw.channels, 1, 4) + ) { + inputDescriptor.rawWidth = inputOptions.raw.width; + inputDescriptor.rawHeight = inputOptions.raw.height; + inputDescriptor.rawChannels = inputOptions.raw.channels; + switch (input.constructor) { + case Uint8Array: + case Uint8ClampedArray: + inputDescriptor.rawDepth = 'uchar'; + break; + case Int8Array: + inputDescriptor.rawDepth = 'char'; + break; + case Uint16Array: + inputDescriptor.rawDepth = 'ushort'; + break; + case Int16Array: + inputDescriptor.rawDepth = 'short'; + break; + case Uint32Array: + inputDescriptor.rawDepth = 'uint'; + break; + case Int32Array: + inputDescriptor.rawDepth = 'int'; + break; + case Float32Array: + inputDescriptor.rawDepth = 'float'; + break; + case Float64Array: + inputDescriptor.rawDepth = 'double'; + break; + default: + inputDescriptor.rawDepth = 'uchar'; + break; + } + } else { + throw new Error('Expected width, height and channels for raw pixel input'); + } + inputDescriptor.rawPremultiplied = false; + if (is.defined(inputOptions.raw.premultiplied)) { + if (is.bool(inputOptions.raw.premultiplied)) { + inputDescriptor.rawPremultiplied = inputOptions.raw.premultiplied; + } else { + throw is.invalidParameterError('raw.premultiplied', 'boolean', inputOptions.raw.premultiplied); + } + } + inputDescriptor.rawPageHeight = 0; + if (is.defined(inputOptions.raw.pageHeight)) { + if (is.integer(inputOptions.raw.pageHeight) && inputOptions.raw.pageHeight > 0 && inputOptions.raw.pageHeight <= inputOptions.raw.height) { + if (inputOptions.raw.height % inputOptions.raw.pageHeight !== 0) { + throw new Error(`Expected raw.height ${inputOptions.raw.height} to be a multiple of raw.pageHeight ${inputOptions.raw.pageHeight}`); + } + inputDescriptor.rawPageHeight = inputOptions.raw.pageHeight; + } else { + throw is.invalidParameterError('raw.pageHeight', 'positive integer', inputOptions.raw.pageHeight); + } + } + } + // Multi-page input (GIF, TIFF, PDF) + if (is.defined(inputOptions.animated)) { + if (is.bool(inputOptions.animated)) { + inputDescriptor.pages = inputOptions.animated ? -1 : 1; + } else { + throw is.invalidParameterError('animated', 'boolean', inputOptions.animated); + } + } + if (is.defined(inputOptions.pages)) { + if (is.integer(inputOptions.pages) && is.inRange(inputOptions.pages, -1, 100000)) { + inputDescriptor.pages = inputOptions.pages; + } else { + throw is.invalidParameterError('pages', 'integer between -1 and 100000', inputOptions.pages); + } + } + if (is.defined(inputOptions.page)) { + if (is.integer(inputOptions.page) && is.inRange(inputOptions.page, 0, 100000)) { + inputDescriptor.page = inputOptions.page; + } else { + throw is.invalidParameterError('page', 'integer between 0 and 100000', inputOptions.page); + } + } + // OpenSlide specific options + if (is.object(inputOptions.openSlide) && is.defined(inputOptions.openSlide.level)) { + if (is.integer(inputOptions.openSlide.level) && is.inRange(inputOptions.openSlide.level, 0, 256)) { + inputDescriptor.openSlideLevel = inputOptions.openSlide.level; + } else { + throw is.invalidParameterError('openSlide.level', 'integer between 0 and 256', inputOptions.openSlide.level); + } + } else if (is.defined(inputOptions.level)) { + // Deprecated + if (is.integer(inputOptions.level) && is.inRange(inputOptions.level, 0, 256)) { + inputDescriptor.openSlideLevel = inputOptions.level; + } else { + throw is.invalidParameterError('level', 'integer between 0 and 256', inputOptions.level); + } + } + // TIFF specific options + if (is.object(inputOptions.tiff) && is.defined(inputOptions.tiff.subifd)) { + if (is.integer(inputOptions.tiff.subifd) && is.inRange(inputOptions.tiff.subifd, -1, 100000)) { + inputDescriptor.tiffSubifd = inputOptions.tiff.subifd; + } else { + throw is.invalidParameterError('tiff.subifd', 'integer between -1 and 100000', inputOptions.tiff.subifd); + } + } else if (is.defined(inputOptions.subifd)) { + // Deprecated + if (is.integer(inputOptions.subifd) && is.inRange(inputOptions.subifd, -1, 100000)) { + inputDescriptor.tiffSubifd = inputOptions.subifd; + } else { + throw is.invalidParameterError('subifd', 'integer between -1 and 100000', inputOptions.subifd); + } + } + // SVG specific options + if (is.object(inputOptions.svg)) { + if (is.defined(inputOptions.svg.stylesheet)) { + if (is.string(inputOptions.svg.stylesheet)) { + inputDescriptor.svgStylesheet = inputOptions.svg.stylesheet; + } else { + throw is.invalidParameterError('svg.stylesheet', 'string', inputOptions.svg.stylesheet); + } + } + if (is.defined(inputOptions.svg.highBitdepth)) { + if (is.bool(inputOptions.svg.highBitdepth)) { + inputDescriptor.svgHighBitdepth = inputOptions.svg.highBitdepth; + } else { + throw is.invalidParameterError('svg.highBitdepth', 'boolean', inputOptions.svg.highBitdepth); + } + } + } + // PDF specific options + if (is.object(inputOptions.pdf) && is.defined(inputOptions.pdf.background)) { + inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdf.background); + } else if (is.defined(inputOptions.pdfBackground)) { + // Deprecated + inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdfBackground); + } + // JPEG 2000 specific options + if (is.object(inputOptions.jp2) && is.defined(inputOptions.jp2.oneshot)) { + if (is.bool(inputOptions.jp2.oneshot)) { + inputDescriptor.jp2Oneshot = inputOptions.jp2.oneshot; + } else { + throw is.invalidParameterError('jp2.oneshot', 'boolean', inputOptions.jp2.oneshot); + } + } + // Create new image + if (is.defined(inputOptions.create)) { + if ( + is.object(inputOptions.create) && + is.integer(inputOptions.create.width) && is.inRange(inputOptions.create.width, 1, 100000000) && + is.integer(inputOptions.create.height) && is.inRange(inputOptions.create.height, 1, 100000000) && + is.integer(inputOptions.create.channels) + ) { + inputDescriptor.createWidth = inputOptions.create.width; + inputDescriptor.createHeight = inputOptions.create.height; + inputDescriptor.createChannels = inputOptions.create.channels; + inputDescriptor.createPageHeight = 0; + if (is.defined(inputOptions.create.pageHeight)) { + if (is.integer(inputOptions.create.pageHeight) && inputOptions.create.pageHeight > 0 && inputOptions.create.pageHeight <= inputOptions.create.height) { + if (inputOptions.create.height % inputOptions.create.pageHeight !== 0) { + throw new Error(`Expected create.height ${inputOptions.create.height} to be a multiple of create.pageHeight ${inputOptions.create.pageHeight}`); + } + inputDescriptor.createPageHeight = inputOptions.create.pageHeight; + } else { + throw is.invalidParameterError('create.pageHeight', 'positive integer', inputOptions.create.pageHeight); + } + } + // Noise + if (is.defined(inputOptions.create.noise)) { + if (!is.object(inputOptions.create.noise)) { + throw new Error('Expected noise to be an object'); + } + if (inputOptions.create.noise.type !== 'gaussian') { + throw new Error('Only gaussian noise is supported at the moment'); + } + inputDescriptor.createNoiseType = inputOptions.create.noise.type; + if (!is.inRange(inputOptions.create.channels, 1, 4)) { + throw is.invalidParameterError('create.channels', 'number between 1 and 4', inputOptions.create.channels); + } + inputDescriptor.createNoiseMean = 128; + if (is.defined(inputOptions.create.noise.mean)) { + if (is.number(inputOptions.create.noise.mean) && is.inRange(inputOptions.create.noise.mean, 0, 10000)) { + inputDescriptor.createNoiseMean = inputOptions.create.noise.mean; + } else { + throw is.invalidParameterError('create.noise.mean', 'number between 0 and 10000', inputOptions.create.noise.mean); + } + } + inputDescriptor.createNoiseSigma = 30; + if (is.defined(inputOptions.create.noise.sigma)) { + if (is.number(inputOptions.create.noise.sigma) && is.inRange(inputOptions.create.noise.sigma, 0, 10000)) { + inputDescriptor.createNoiseSigma = inputOptions.create.noise.sigma; + } else { + throw is.invalidParameterError('create.noise.sigma', 'number between 0 and 10000', inputOptions.create.noise.sigma); + } + } + } else if (is.defined(inputOptions.create.background)) { + if (!is.inRange(inputOptions.create.channels, 3, 4)) { + throw is.invalidParameterError('create.channels', 'number between 3 and 4', inputOptions.create.channels); + } + inputDescriptor.createBackground = this._getBackgroundColourOption(inputOptions.create.background); + } else { + throw new Error('Expected valid noise or background to create a new input image'); + } + delete inputDescriptor.buffer; + } else { + throw new Error('Expected valid width, height and channels to create a new input image'); + } + } + // Create a new image with text + if (is.defined(inputOptions.text)) { + if (is.object(inputOptions.text) && is.string(inputOptions.text.text)) { + inputDescriptor.textValue = inputOptions.text.text; + if (is.defined(inputOptions.text.height) && is.defined(inputOptions.text.dpi)) { + throw new Error('Expected only one of dpi or height'); + } + if (is.defined(inputOptions.text.font)) { + if (is.string(inputOptions.text.font)) { + inputDescriptor.textFont = inputOptions.text.font; + } else { + throw is.invalidParameterError('text.font', 'string', inputOptions.text.font); + } + } + if (is.defined(inputOptions.text.fontfile)) { + if (is.string(inputOptions.text.fontfile)) { + inputDescriptor.textFontfile = inputOptions.text.fontfile; + } else { + throw is.invalidParameterError('text.fontfile', 'string', inputOptions.text.fontfile); + } + } + if (is.defined(inputOptions.text.width)) { + if (is.integer(inputOptions.text.width) && is.inRange(inputOptions.text.width, 1, 1000000)) { + inputDescriptor.textWidth = inputOptions.text.width; + } else { + throw is.invalidParameterError('text.width', 'integer between 1 and 1000000', inputOptions.text.width); + } + } + if (is.defined(inputOptions.text.height)) { + if (is.integer(inputOptions.text.height) && is.inRange(inputOptions.text.height, 1, 1000000)) { + inputDescriptor.textHeight = inputOptions.text.height; + } else { + throw is.invalidParameterError('text.height', 'integer between 1 and 1000000', inputOptions.text.height); + } + } + if (is.defined(inputOptions.text.align)) { + if (is.string(inputOptions.text.align) && is.string(this.constructor.align[inputOptions.text.align])) { + inputDescriptor.textAlign = this.constructor.align[inputOptions.text.align]; + } else { + throw is.invalidParameterError('text.align', 'valid alignment', inputOptions.text.align); + } + } + if (is.defined(inputOptions.text.justify)) { + if (is.bool(inputOptions.text.justify)) { + inputDescriptor.textJustify = inputOptions.text.justify; + } else { + throw is.invalidParameterError('text.justify', 'boolean', inputOptions.text.justify); + } + } + if (is.defined(inputOptions.text.dpi)) { + if (is.integer(inputOptions.text.dpi) && is.inRange(inputOptions.text.dpi, 1, 1000000)) { + inputDescriptor.textDpi = inputOptions.text.dpi; + } else { + throw is.invalidParameterError('text.dpi', 'integer between 1 and 1000000', inputOptions.text.dpi); + } + } + if (is.defined(inputOptions.text.rgba)) { + if (is.bool(inputOptions.text.rgba)) { + inputDescriptor.textRgba = inputOptions.text.rgba; + } else { + throw is.invalidParameterError('text.rgba', 'bool', inputOptions.text.rgba); + } + } + if (is.defined(inputOptions.text.spacing)) { + if (is.integer(inputOptions.text.spacing) && is.inRange(inputOptions.text.spacing, -1000000, 1000000)) { + inputDescriptor.textSpacing = inputOptions.text.spacing; + } else { + throw is.invalidParameterError('text.spacing', 'integer between -1000000 and 1000000', inputOptions.text.spacing); + } + } + if (is.defined(inputOptions.text.wrap)) { + if (is.string(inputOptions.text.wrap) && is.inArray(inputOptions.text.wrap, ['word', 'char', 'word-char', 'none'])) { + inputDescriptor.textWrap = inputOptions.text.wrap; + } else { + throw is.invalidParameterError('text.wrap', 'one of: word, char, word-char, none', inputOptions.text.wrap); + } + } + delete inputDescriptor.buffer; + } else { + throw new Error('Expected a valid string to create an image with text.'); + } + } + // Join images together + if (is.defined(inputOptions.join)) { + if (is.defined(this.options.join)) { + if (is.defined(inputOptions.join.animated)) { + if (is.bool(inputOptions.join.animated)) { + inputDescriptor.joinAnimated = inputOptions.join.animated; + } else { + throw is.invalidParameterError('join.animated', 'boolean', inputOptions.join.animated); + } + } + if (is.defined(inputOptions.join.across)) { + if (is.integer(inputOptions.join.across) && is.inRange(inputOptions.join.across, 1, 1000000)) { + inputDescriptor.joinAcross = inputOptions.join.across; + } else { + throw is.invalidParameterError('join.across', 'integer between 1 and 100000', inputOptions.join.across); + } + } + if (is.defined(inputOptions.join.shim)) { + if (is.integer(inputOptions.join.shim) && is.inRange(inputOptions.join.shim, 0, 1000000)) { + inputDescriptor.joinShim = inputOptions.join.shim; + } else { + throw is.invalidParameterError('join.shim', 'integer between 0 and 100000', inputOptions.join.shim); + } + } + if (is.defined(inputOptions.join.background)) { + inputDescriptor.joinBackground = this._getBackgroundColourOption(inputOptions.join.background); + } + if (is.defined(inputOptions.join.halign)) { + if (is.string(inputOptions.join.halign) && is.string(this.constructor.align[inputOptions.join.halign])) { + inputDescriptor.joinHalign = this.constructor.align[inputOptions.join.halign]; + } else { + throw is.invalidParameterError('join.halign', 'valid alignment', inputOptions.join.halign); + } + } + if (is.defined(inputOptions.join.valign)) { + if (is.string(inputOptions.join.valign) && is.string(this.constructor.align[inputOptions.join.valign])) { + inputDescriptor.joinValign = this.constructor.align[inputOptions.join.valign]; + } else { + throw is.invalidParameterError('join.valign', 'valid alignment', inputOptions.join.valign); + } + } + } else { + throw new Error('Expected input to be an array of images to join'); + } + } + } else if (is.defined(inputOptions)) { + throw new Error(`Invalid input options ${inputOptions}`); + } + return inputDescriptor; +} + +/** + * Handle incoming Buffer chunk on Writable Stream. + * @private + * @param {Buffer} chunk + * @param {string} encoding - unused + * @param {Function} callback + */ +function _write (chunk, _encoding, callback) { + if (Array.isArray(this.options.input.buffer)) { + if (is.buffer(chunk)) { + this.options.input.buffer.push(chunk); + callback(); + } else { + callback(new Error('Non-Buffer data on Writable Stream')); + } + } else { + callback(new Error('Unexpected data on Writable Stream')); + } +} + +/** + * Flattens the array of chunks accumulated in input.buffer. + * @private + */ +function _flattenBufferIn () { + if (this._isStreamInput()) { + this.options.input.buffer = Buffer.concat(this.options.input.buffer); + } +} + +/** + * Are we expecting Stream-based input? + * @private + * @returns {boolean} + */ +function _isStreamInput () { + return Array.isArray(this.options.input.buffer); +} + +/** + * Call fn when the Writable side of Stream-based input has finished, + * or immediately when it already has, as 'finish' is emitted only once. + * @private + * @param {Function} fn + */ +function _whenStreamInFinished (fn) { + if (this.writableFinished) { + fn(); + } else { + this.once('finish', fn); + } +} + +/** + * Fast access to (uncached) image metadata without decoding any compressed pixel data. + * + * This is read from the header of the input image. + * It does not take into consideration any operations to be applied to the output image, + * such as resize or rotate. + * + * Dimensions in the response will respect the `page` and `pages` properties of the + * {@link /api-constructor/ constructor parameters}. + * + * A `Promise` is returned when `callback` is not provided. + * + * - `format`: Name of decoder used to parse image e.g. `jpeg`, `png`, `webp`, `gif`, `svg`, `heif`, `tiff` + * - `mediaType`: Media Type (MIME Type) e.g. `image/jpeg`, `image/png`, `image/svg+xml`, `image/avif` + * - `size`: Total size of image in bytes, for Stream and Buffer input only + * - `width`: Number of pixels wide (EXIF orientation is not taken into consideration, see example below) + * - `height`: Number of pixels high (EXIF orientation is not taken into consideration, see example below) + * - `space`: Name of colour space interpretation e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html) + * - `channels`: Number of bands e.g. `3` for sRGB, `4` for CMYK + * - `depth`: Name of pixel depth format e.g. `uchar`, `char`, `ushort`, `float` [...](https://www.libvips.org/API/current/enum.BandFormat.html) + * - `density`: Number of pixels per inch (DPI), if present + * - `chromaSubsampling`: String containing JPEG chroma subsampling, `4:2:0` or `4:4:4` for RGB, `4:2:0:4` or `4:4:4:4` for CMYK + * - `isProgressive`: Boolean indicating whether the image is interlaced using a progressive scan + * - `isPalette`: Boolean indicating whether the image is palette-based (GIF, PNG). + * - `bitsPerSample`: Number of bits per sample for each channel (GIF, PNG, HEIF). + * - `pages`: Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP + * - `pageHeight`: Number of pixels high each page in a multi-page image will be. + * - `loop`: Number of times to loop an animated image, zero refers to a continuous loop. + * - `delay`: Delay in ms between each page in an animated image, provided as an array of integers. + * - `pagePrimary`: Number of the primary page in a HEIF image + * - `levels`: Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide + * - `subifds`: Number of Sub Image File Directories in an OME-TIFF image + * - `background`: Default background colour, if present, for PNG (bKGD) and GIF images + * - `compression`: The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC) + * - `resolutionUnit`: The unit of resolution (density), either `inch` or `cm`, if present + * - `hasProfile`: Boolean indicating the presence of an embedded ICC profile + * - `hasAlpha`: Boolean indicating the presence of an alpha transparency channel + * - `orientation`: Number value of the EXIF Orientation header, if present + * - `exif`: Buffer containing raw EXIF data, if present + * - `icc`: Buffer containing raw [ICC](https://www.npmjs.com/package/icc) profile data, if present + * - `iptc`: Buffer containing raw IPTC data, if present + * - `xmp`: Buffer containing raw XMP data, if present + * - `xmpAsString`: String containing XMP data, if valid UTF-8. + * - `tifftagPhotoshop`: Buffer containing raw TIFFTAG_PHOTOSHOP data, if present + * - `formatMagick`: String containing format for images loaded via *magick + * - `comments`: Array of keyword/text pairs representing PNG text blocks, if present. + * - `gainMap.image`: HDR gain map, if present, as compressed JPEG image. + * + * @example + * const metadata = await sharp(input).metadata(); + * + * @example + * const image = sharp(inputJpg); + * image + * .metadata() + * .then(function(metadata) { + * return image + * .resize(Math.round(metadata.width / 2)) + * .webp() + * .toBuffer(); + * }) + * .then(function(data) { + * // data contains a WebP image half the width and height of the original JPEG + * }); + * + * @example + * // Get dimensions taking EXIF Orientation into account. + * const { autoOrient } = await sharp(input).metadata(); + * const { width, height } = autoOrient; + * + * @param {Function} [callback] - called with the arguments `(err, metadata)` + * @returns {Promise|Sharp} + */ +function metadata (callback) { + const stack = Error(); + if (is.fn(callback)) { + if (this._isStreamInput()) { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.metadata(this.options, (err, metadata) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, metadata); + } + }); + }); + } else { + sharp.metadata(this.options, (err, metadata) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, metadata); + } + }); + } + return this; + } else { + if (this._isStreamInput()) { + return new Promise((resolve, reject) => { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.metadata(this.options, (err, metadata) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(metadata); + } + }); + }); + }); + } else { + return new Promise((resolve, reject) => { + sharp.metadata(this.options, (err, metadata) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(metadata); + } + }); + }); + } + } +} + +/** + * Access to pixel-derived image statistics for every channel in the image. + * A `Promise` is returned when `callback` is not provided. + * + * - `channels`: Array of channel statistics for each channel in the image. Each channel statistic contains + * - `min` (minimum value in the channel) + * - `max` (maximum value in the channel) + * - `sum` (sum of all values in a channel) + * - `squaresSum` (sum of squared values in a channel) + * - `mean` (mean of the values in a channel) + * - `stdev` (standard deviation for the values in a channel) + * - `minX` (x-coordinate of one of the pixel where the minimum lies) + * - `minY` (y-coordinate of one of the pixel where the minimum lies) + * - `maxX` (x-coordinate of one of the pixel where the maximum lies) + * - `maxY` (y-coordinate of one of the pixel where the maximum lies) + * - `isOpaque`: Is the image fully opaque? Will be `true` if the image has no alpha channel or if every pixel is fully opaque. + * - `entropy`: Histogram-based estimation of greyscale entropy, discarding alpha channel if any. + * - `sharpness`: Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any. + * - `dominant`: Object containing most dominant sRGB colour based on a 4096-bin 3D histogram. + * + * **Note**: Statistics are derived from the original input image. Any operations performed on the image must first be + * written to a buffer in order to run `stats` on the result (see third example). + * + * @example + * const image = sharp(inputJpg); + * image + * .stats() + * .then(function(stats) { + * // stats contains the channel-wise statistics array and the isOpaque value + * }); + * + * @example + * const { entropy, sharpness, dominant } = await sharp(input).stats(); + * const { r, g, b } = dominant; + * + * @example + * const image = sharp(input); + * // store intermediate result + * const part = await image.extract(region).toBuffer(); + * // create new instance to obtain statistics of extracted region + * const stats = await sharp(part).stats(); + * + * @param {Function} [callback] - called with the arguments `(err, stats)` + * @returns {Promise} + */ +function stats (callback) { + const stack = Error(); + if (is.fn(callback)) { + if (this._isStreamInput()) { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.stats(this.options, (err, stats) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, stats); + } + }); + }); + } else { + sharp.stats(this.options, (err, stats) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, stats); + } + }); + } + return this; + } else { + if (this._isStreamInput()) { + return new Promise((resolve, reject) => { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.stats(this.options, (err, stats) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(stats); + } + }); + }); + }); + } else { + return new Promise((resolve, reject) => { + sharp.stats(this.options, (err, stats) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + resolve(stats); + } + }); + }); + } + } +} + +/** + * Decorate the Sharp prototype with input-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Object.assign(Sharp.prototype, { + // Private + _inputOptionsFromObject, + _createInputDescriptor, + _write, + _flattenBufferIn, + _isStreamInput, + _whenStreamInFinished, + // Public + metadata, + stats + }); + // Class attributes + Sharp.align = align; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/is.cjs b/apps/api/.output/node_modules/sharp/dist/is.cjs new file mode 100644 index 0000000..fc36f3a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/is.cjs @@ -0,0 +1,149 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +/** + * Is this value defined and not null? + * @private + */ +const defined = (val) => typeof val !== 'undefined' && val !== null; + +/** + * Is this value an object? + * @private + */ +const object = (val) => typeof val === 'object'; + +/** + * Is this value a plain object? + * @private + */ +const plainObject = (val) => Object.prototype.toString.call(val) === '[object Object]'; + +/** + * Is this value a function? + * @private + */ +const fn = (val) => typeof val === 'function'; + +/** + * Is this value a boolean? + * @private + */ +const bool = (val) => typeof val === 'boolean'; + +/** + * Is this value a Buffer object? + * @private + */ +const buffer = (val) => val instanceof Buffer; + +/** + * Is this value a typed array object?. E.g. Uint8Array or Uint8ClampedArray? + * @private + */ +const typedArray = (val) => { + if (defined(val)) { + switch (val.constructor) { + case Uint8Array: + case Uint8ClampedArray: + case Int8Array: + case Uint16Array: + case Int16Array: + case Uint32Array: + case Int32Array: + case Float32Array: + case Float64Array: + return true; + } + } + + return false; +}; + +/** + * Is this value an ArrayBuffer object? + * @private + */ +const arrayBuffer = (val) => val instanceof ArrayBuffer; + +/** + * Is this value a non-empty string? + * @private + */ +const string = (val) => typeof val === 'string' && val.length > 0; + +/** + * Is this value a real number? + * @private + */ +const number = (val) => typeof val === 'number' && Number.isFinite(val); + +/** + * Is this value an integer? + * @private + */ +const integer = (val) => Number.isInteger(val); + +/** + * Is this value within an inclusive given range? + * @private + */ +const inRange = (val, min, max) => val >= min && val <= max; + +/** + * Is this value within the elements of an array? + * @private + */ +const inArray = (val, list) => list.includes(val); + +/** + * Create an Error with a message relating to an invalid parameter. + * + * @param {string} name - parameter name. + * @param {string} expected - description of the type/value/range expected. + * @param {*} actual - the value received. + * @returns {Error} Containing the formatted message. + * @private + */ +const invalidParameterError = (name, expected, actual) => { + let actualString; + try { + actualString = String(actual).slice(0, 100); + } catch {} + return new Error( + `Expected ${expected} for ${name} but received ${actualString} of type ${typeof actual}` + ); +}; + +/** + * Ensures an Error from C++ contains a JS stack. + * + * @param {Error} native - Error with message from C++. + * @param {Error} context - Error with stack from JS. + * @returns {Error} Error with message and stack. + * @private + */ +const nativeError = (native, context) => { + context.message = native.message; + return context; +}; + +module.exports = { + defined, + object, + plainObject, + fn, + bool, + buffer, + typedArray, + arrayBuffer, + string, + number, + integer, + inRange, + inArray, + invalidParameterError, + nativeError +}; diff --git a/apps/api/.output/node_modules/sharp/dist/is.mjs b/apps/api/.output/node_modules/sharp/dist/is.mjs new file mode 100644 index 0000000..f4911eb --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/is.mjs @@ -0,0 +1,149 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +/** + * Is this value defined and not null? + * @private + */ +const defined = (val) => typeof val !== 'undefined' && val !== null; + +/** + * Is this value an object? + * @private + */ +const object = (val) => typeof val === 'object'; + +/** + * Is this value a plain object? + * @private + */ +const plainObject = (val) => Object.prototype.toString.call(val) === '[object Object]'; + +/** + * Is this value a function? + * @private + */ +const fn = (val) => typeof val === 'function'; + +/** + * Is this value a boolean? + * @private + */ +const bool = (val) => typeof val === 'boolean'; + +/** + * Is this value a Buffer object? + * @private + */ +const buffer = (val) => val instanceof Buffer; + +/** + * Is this value a typed array object?. E.g. Uint8Array or Uint8ClampedArray? + * @private + */ +const typedArray = (val) => { + if (defined(val)) { + switch (val.constructor) { + case Uint8Array: + case Uint8ClampedArray: + case Int8Array: + case Uint16Array: + case Int16Array: + case Uint32Array: + case Int32Array: + case Float32Array: + case Float64Array: + return true; + } + } + + return false; +}; + +/** + * Is this value an ArrayBuffer object? + * @private + */ +const arrayBuffer = (val) => val instanceof ArrayBuffer; + +/** + * Is this value a non-empty string? + * @private + */ +const string = (val) => typeof val === 'string' && val.length > 0; + +/** + * Is this value a real number? + * @private + */ +const number = (val) => typeof val === 'number' && Number.isFinite(val); + +/** + * Is this value an integer? + * @private + */ +const integer = (val) => Number.isInteger(val); + +/** + * Is this value within an inclusive given range? + * @private + */ +const inRange = (val, min, max) => val >= min && val <= max; + +/** + * Is this value within the elements of an array? + * @private + */ +const inArray = (val, list) => list.includes(val); + +/** + * Create an Error with a message relating to an invalid parameter. + * + * @param {string} name - parameter name. + * @param {string} expected - description of the type/value/range expected. + * @param {*} actual - the value received. + * @returns {Error} Containing the formatted message. + * @private + */ +const invalidParameterError = (name, expected, actual) => { + let actualString; + try { + actualString = String(actual).slice(0, 100); + } catch {} + return new Error( + `Expected ${expected} for ${name} but received ${actualString} of type ${typeof actual}` + ); +}; + +/** + * Ensures an Error from C++ contains a JS stack. + * + * @param {Error} native - Error with message from C++. + * @param {Error} context - Error with stack from JS. + * @returns {Error} Error with message and stack. + * @private + */ +const nativeError = (native, context) => { + context.message = native.message; + return context; +}; + +export default { + defined, + object, + plainObject, + fn, + bool, + buffer, + typedArray, + arrayBuffer, + string, + number, + integer, + inRange, + inArray, + invalidParameterError, + nativeError +}; diff --git a/apps/api/.output/node_modules/sharp/dist/libvips.cjs b/apps/api/.output/node_modules/sharp/dist/libvips.cjs new file mode 100644 index 0000000..b59b48f --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/libvips.cjs @@ -0,0 +1,212 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const { spawnSync } = require('node:child_process'); +const { createHash } = require('node:crypto'); +const semver = require('semver'); +const detectLibc = require('detect-libc'); +const pkg = require('../package.json'); + +/* node:coverage ignore next */ +const minimumLibvipsVersionLabelled = process.env.npm_package_config_libvips || pkg.config.libvips; +const minimumLibvipsVersion = semver.coerce(minimumLibvipsVersionLabelled).version; + +const prebuiltPlatforms = [ + 'darwin-arm64', 'darwin-x64', + 'freebsd-arm64', 'freebsd-x64', + 'linux-arm', 'linux-arm64', 'linux-ppc64', 'linux-riscv64', 'linux-s390x', 'linux-wasm32', 'linux-x64', + 'linuxmusl-arm64', 'linuxmusl-x64', + 'win32-arm64', 'win32-ia32', 'win32-x64' +]; + +const spawnSyncOptions = { + encoding: 'utf8', + shell: true +}; + +const log = (item) => { + if (item instanceof Error) { + console.error(`sharp: Installation error: ${item.message}`); + } else { + console.log(`sharp: ${item}`); + } +}; + +/* node:coverage disable */ + +const runtimeLibc = () => detectLibc.isNonGlibcLinuxSync() ? detectLibc.familySync() : ''; + +const runtimePlatformArch = () => `${process.platform}${runtimeLibc()}-${process.arch}`; + +const buildPlatformArch = () => { + if (isEmscripten()) { + return 'wasm32'; + } + const { npm_config_arch, npm_config_platform, npm_config_libc } = process.env; + const libc = typeof npm_config_libc === 'string' ? npm_config_libc : runtimeLibc(); + return `${npm_config_platform || process.platform}${libc}-${npm_config_arch || process.arch}`; +}; + +const buildSharpLibvipsIncludeDir = () => { + try { + return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/include`); + } catch { + try { + return require('@img/sharp-libvips-dev/include'); + } catch {} + } + return ''; +}; + +const buildSharpLibvipsCPlusPlusDir = () => { + try { + return require('@img/sharp-libvips-dev/cplusplus'); + } catch {} + return ''; +}; + +const buildSharpLibvipsLibDir = () => { + try { + return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/lib`); + } catch { + try { + return require(`@img/sharp-libvips-${buildPlatformArch()}/lib`); + } catch {} + } + return ''; +}; + +const isUnsupportedNodeRuntime = () => { + if (process.release?.name === 'node' && process.versions) { + if (!semver.satisfies(process.versions.node, pkg.engines.node)) { + return { found: process.versions.node, expected: pkg.engines.node }; + } + } +}; + +const isEmscripten = () => { + const { CC } = process.env; + return Boolean(CC?.endsWith('/emcc')); +}; + +const isRosetta = () => { + if (process.platform === 'darwin' && process.arch === 'x64') { + const translated = spawnSync('sysctl sysctl.proc_translated', spawnSyncOptions).stdout; + return (translated || '').trim() === 'sysctl.proc_translated: 1'; + } + return false; +}; + +/* node:coverage enable */ + +const sha512 = (s) => createHash('sha512').update(s).digest('hex'); + +const yarnLocator = () => { + try { + const identHash = sha512(`imgsharp-libvips-${buildPlatformArch()}`); + const npmVersion = semver.coerce(pkg.optionalDependencies[`@img/sharp-libvips-${buildPlatformArch()}`], { + includePrerelease: true + }).version; + return sha512(`${identHash}npm:${npmVersion}`).slice(0, 10); + } catch {} + return ''; +}; + +/* node:coverage disable */ + +const spawnRebuild = () => + spawnSync(`node-gyp rebuild --directory=src ${isEmscripten() ? '--nodedir=emscripten' : ''}`, { + ...spawnSyncOptions, + stdio: 'inherit' + }).status; + +const globalLibvipsVersion = () => { + if (process.platform !== 'win32') { + const globalLibvipsVersion = spawnSync('pkg-config --modversion vips-cpp', { + ...spawnSyncOptions, + env: { + ...process.env, + PKG_CONFIG_PATH: pkgConfigPath() + } + }).stdout; + return (globalLibvipsVersion || '').trim(); + } else { + return ''; + } +}; + +const getBrewPkgConfigPath = () => { + try { + const brewPrefix = (spawnSync('brew', ['--prefix'], { encoding: 'utf8' }).stdout || '').trim(); + if (brewPrefix) { + return `${brewPrefix}/lib/pkgconfig`; + } + } catch (_err) {} + return undefined; +}; + +const getPkgConfigPath = () => { + try { + const pkgConfigPath = (spawnSync('pkg-config', ['--variable', 'pc_path', 'pkg-config'], { encoding: 'utf8' }).stdout || '').trim(); + if (pkgConfigPath) { + return pkgConfigPath; + } + } catch (_err) {} + return undefined; +}; + +/* node:coverage enable */ + +const pkgConfigPath = () => { + if (process.platform !== 'win32') { + return [ + getBrewPkgConfigPath(), + getPkgConfigPath(), + process.env.PKG_CONFIG_PATH + ].filter(Boolean).join(':'); + } else { + return ''; + } +}; + +const skipSearch = (status, reason, logger) => { + if (logger) { + logger(`Detected ${reason}, skipping search for globally-installed libvips`); + } + return status; +}; + +const useGlobalLibvips = (logger) => { + if (Boolean(process.env.SHARP_IGNORE_GLOBAL_LIBVIPS) === true) { + return skipSearch(false, 'SHARP_IGNORE_GLOBAL_LIBVIPS', logger); + } + if (Boolean(process.env.SHARP_FORCE_GLOBAL_LIBVIPS) === true) { + return skipSearch(true, 'SHARP_FORCE_GLOBAL_LIBVIPS', logger); + } + /* node:coverage ignore next 3 */ + if (isRosetta()) { + return skipSearch(false, 'Rosetta', logger); + } + const globalVipsVersion = globalLibvipsVersion(); + /* node:coverage ignore next */ + return !!globalVipsVersion && semver.gte(globalVipsVersion, minimumLibvipsVersion); +}; + +module.exports = { + minimumLibvipsVersion, + prebuiltPlatforms, + buildPlatformArch, + buildSharpLibvipsIncludeDir, + buildSharpLibvipsCPlusPlusDir, + buildSharpLibvipsLibDir, + isUnsupportedNodeRuntime, + runtimePlatformArch, + log, + yarnLocator, + spawnRebuild, + globalLibvipsVersion, + pkgConfigPath, + useGlobalLibvips +}; diff --git a/apps/api/.output/node_modules/sharp/dist/libvips.mjs b/apps/api/.output/node_modules/sharp/dist/libvips.mjs new file mode 100644 index 0000000..35608ac --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/libvips.mjs @@ -0,0 +1,212 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import { spawnSync } from 'node:child_process'; +import { createHash } from 'node:crypto'; +import semver from 'semver'; +import detectLibc from 'detect-libc'; +import pkg from '../package.json' with { type: 'json' }; + +/* node:coverage ignore next */ +const minimumLibvipsVersionLabelled = process.env.npm_package_config_libvips || pkg.config.libvips; +const minimumLibvipsVersion = semver.coerce(minimumLibvipsVersionLabelled).version; + +const prebuiltPlatforms = [ + 'darwin-arm64', 'darwin-x64', + 'freebsd-arm64', 'freebsd-x64', + 'linux-arm', 'linux-arm64', 'linux-ppc64', 'linux-riscv64', 'linux-s390x', 'linux-wasm32', 'linux-x64', + 'linuxmusl-arm64', 'linuxmusl-x64', + 'win32-arm64', 'win32-ia32', 'win32-x64' +]; + +const spawnSyncOptions = { + encoding: 'utf8', + shell: true +}; + +const log = (item) => { + if (item instanceof Error) { + console.error(`sharp: Installation error: ${item.message}`); + } else { + console.log(`sharp: ${item}`); + } +}; + +/* node:coverage disable */ + +const runtimeLibc = () => detectLibc.isNonGlibcLinuxSync() ? detectLibc.familySync() : ''; + +const runtimePlatformArch = () => `${process.platform}${runtimeLibc()}-${process.arch}`; + +const buildPlatformArch = () => { + if (isEmscripten()) { + return 'wasm32'; + } + const { npm_config_arch, npm_config_platform, npm_config_libc } = process.env; + const libc = typeof npm_config_libc === 'string' ? npm_config_libc : runtimeLibc(); + return `${npm_config_platform || process.platform}${libc}-${npm_config_arch || process.arch}`; +}; + +const buildSharpLibvipsIncludeDir = () => { + try { + return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/include`); + } catch { + try { + return require('@img/sharp-libvips-dev/include'); + } catch {} + } + return ''; +}; + +const buildSharpLibvipsCPlusPlusDir = () => { + try { + return require('@img/sharp-libvips-dev/cplusplus'); + } catch {} + return ''; +}; + +const buildSharpLibvipsLibDir = () => { + try { + return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/lib`); + } catch { + try { + return require(`@img/sharp-libvips-${buildPlatformArch()}/lib`); + } catch {} + } + return ''; +}; + +const isUnsupportedNodeRuntime = () => { + if (process.release?.name === 'node' && process.versions) { + if (!semver.satisfies(process.versions.node, pkg.engines.node)) { + return { found: process.versions.node, expected: pkg.engines.node }; + } + } +}; + +const isEmscripten = () => { + const { CC } = process.env; + return Boolean(CC?.endsWith('/emcc')); +}; + +const isRosetta = () => { + if (process.platform === 'darwin' && process.arch === 'x64') { + const translated = spawnSync('sysctl sysctl.proc_translated', spawnSyncOptions).stdout; + return (translated || '').trim() === 'sysctl.proc_translated: 1'; + } + return false; +}; + +/* node:coverage enable */ + +const sha512 = (s) => createHash('sha512').update(s).digest('hex'); + +const yarnLocator = () => { + try { + const identHash = sha512(`imgsharp-libvips-${buildPlatformArch()}`); + const npmVersion = semver.coerce(pkg.optionalDependencies[`@img/sharp-libvips-${buildPlatformArch()}`], { + includePrerelease: true + }).version; + return sha512(`${identHash}npm:${npmVersion}`).slice(0, 10); + } catch {} + return ''; +}; + +/* node:coverage disable */ + +const spawnRebuild = () => + spawnSync(`node-gyp rebuild --directory=src ${isEmscripten() ? '--nodedir=emscripten' : ''}`, { + ...spawnSyncOptions, + stdio: 'inherit' + }).status; + +const globalLibvipsVersion = () => { + if (process.platform !== 'win32') { + const globalLibvipsVersion = spawnSync('pkg-config --modversion vips-cpp', { + ...spawnSyncOptions, + env: { + ...process.env, + PKG_CONFIG_PATH: pkgConfigPath() + } + }).stdout; + return (globalLibvipsVersion || '').trim(); + } else { + return ''; + } +}; + +const getBrewPkgConfigPath = () => { + try { + const brewPrefix = (spawnSync('brew', ['--prefix'], { encoding: 'utf8' }).stdout || '').trim(); + if (brewPrefix) { + return `${brewPrefix}/lib/pkgconfig`; + } + } catch (_err) {} + return undefined; +}; + +const getPkgConfigPath = () => { + try { + const pkgConfigPath = (spawnSync('pkg-config', ['--variable', 'pc_path', 'pkg-config'], { encoding: 'utf8' }).stdout || '').trim(); + if (pkgConfigPath) { + return pkgConfigPath; + } + } catch (_err) {} + return undefined; +}; + +/* node:coverage enable */ + +const pkgConfigPath = () => { + if (process.platform !== 'win32') { + return [ + getBrewPkgConfigPath(), + getPkgConfigPath(), + process.env.PKG_CONFIG_PATH + ].filter(Boolean).join(':'); + } else { + return ''; + } +}; + +const skipSearch = (status, reason, logger) => { + if (logger) { + logger(`Detected ${reason}, skipping search for globally-installed libvips`); + } + return status; +}; + +const useGlobalLibvips = (logger) => { + if (Boolean(process.env.SHARP_IGNORE_GLOBAL_LIBVIPS) === true) { + return skipSearch(false, 'SHARP_IGNORE_GLOBAL_LIBVIPS', logger); + } + if (Boolean(process.env.SHARP_FORCE_GLOBAL_LIBVIPS) === true) { + return skipSearch(true, 'SHARP_FORCE_GLOBAL_LIBVIPS', logger); + } + /* node:coverage ignore next 3 */ + if (isRosetta()) { + return skipSearch(false, 'Rosetta', logger); + } + const globalVipsVersion = globalLibvipsVersion(); + /* node:coverage ignore next */ + return !!globalVipsVersion && semver.gte(globalVipsVersion, minimumLibvipsVersion); +}; + +export default { + minimumLibvipsVersion, + prebuiltPlatforms, + buildPlatformArch, + buildSharpLibvipsIncludeDir, + buildSharpLibvipsCPlusPlusDir, + buildSharpLibvipsLibDir, + isUnsupportedNodeRuntime, + runtimePlatformArch, + log, + yarnLocator, + spawnRebuild, + globalLibvipsVersion, + pkgConfigPath, + useGlobalLibvips +}; diff --git a/apps/api/.output/node_modules/sharp/dist/operation.cjs b/apps/api/.output/node_modules/sharp/dist/operation.cjs new file mode 100644 index 0000000..f541070 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/operation.cjs @@ -0,0 +1,1002 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const is = require('./is.cjs'); + +/** + * How accurate an operation should be. + * @member + * @private + */ +const vipsPrecision = { + integer: 'integer', + float: 'float', + approximate: 'approximate' +}; + +/** + * Rotate the output image. + * + * The provided angle is converted to a valid positive degree rotation. + * For example, `-450` will produce a 270 degree rotation. + * + * When rotating by an angle other than a multiple of 90, + * the background colour can be provided with the `background` option. + * + * For backwards compatibility, if no angle is provided, `.autoOrient()` will be called. + * + * Only one rotation can occur per pipeline (aside from an initial call without + * arguments to orient via EXIF data). Previous calls to `rotate` in the same + * pipeline will be ignored. + * + * Multi-page images can only be rotated by 180 degrees. + * + * Method order is important when rotating, resizing and/or extracting regions, + * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`. + * + * @example + * const rotateThenResize = await sharp(input) + * .rotate(90) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .toBuffer(); + * const resizeThenRotate = await sharp(input) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .rotate(90) + * .toBuffer(); + * + * @param {number} [angle=auto] angle of rotation. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string|Object} [options.background="#000000"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function rotate (angle, options) { + if (!is.defined(angle)) { + return this.autoOrient(); + } + if (this.options.angle || this.options.rotationAngle) { + this.options.debuglog('ignoring previous rotate options'); + this.options.angle = 0; + this.options.rotationAngle = 0; + } + if (is.integer(angle) && !(angle % 90)) { + this.options.angle = angle; + } else if (is.number(angle)) { + this.options.rotationAngle = angle; + if (is.object(options) && options.background) { + this._setBackgroundColourOption('rotationBackground', options.background); + } + } else { + throw is.invalidParameterError('angle', 'numeric', angle); + } + return this; +} + +/** + * Auto-orient based on the EXIF `Orientation` tag, then remove the tag. + * Mirroring is supported and may infer the use of a flip operation. + * + * Only the EXIF `Orientation` tag is considered; orientation carried in other + * places, such as an XMP `tiff:Orientation` element, is left untouched and + * remains the responsibility of the consumer. + * + * Previous or subsequent use of `rotate(angle)` and either `flip()` or `flop()` + * will logically occur after auto-orientation, regardless of call order. + * + * @example + * const output = await sharp(input).autoOrient().toBuffer(); + * + * @example + * const pipeline = sharp() + * .autoOrient() + * .resize(null, 200) + * .toBuffer(function (err, outputBuffer, info) { + * // outputBuffer contains 200px high JPEG image data, + * // auto-oriented using EXIF Orientation tag + * // info.width and info.height contain the dimensions of the resized image + * }); + * readableStream.pipe(pipeline); + * + * @returns {Sharp} + */ +function autoOrient () { + this.options.input.autoOrient = true; + return this; +} + +/** + * Mirror the image vertically (up-down) about the x-axis. + * This always occurs before rotation, if any. + * + * This operation does not work correctly with multi-page images. + * + * @example + * const output = await sharp(input).flip().toBuffer(); + * + * @param {Boolean} [flip=true] + * @returns {Sharp} + */ +function flip (flip) { + this.options.flip = is.bool(flip) ? flip : true; + return this; +} + +/** + * Mirror the image horizontally (left-right) about the y-axis. + * This always occurs before rotation, if any. + * + * @example + * const output = await sharp(input).flop().toBuffer(); + * + * @param {Boolean} [flop=true] + * @returns {Sharp} + */ +function flop (flop) { + this.options.flop = is.bool(flop) ? flop : true; + return this; +} + +/** + * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any. + * + * You must provide an array of length 4 or a 2x2 affine transformation matrix. + * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option. + * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `sharp.interpolators` Object e.g. `sharp.interpolators.nohalo`. + * + * In the case of a 2x2 matrix, the transform is: + * - X = `matrix[0, 0]` \* (x + `idx`) + `matrix[0, 1]` \* (y + `idy`) + `odx` + * - Y = `matrix[1, 0]` \* (x + `idx`) + `matrix[1, 1]` \* (y + `idy`) + `ody` + * + * where: + * - x and y are the coordinates in input image. + * - X and Y are the coordinates in output image. + * - (0,0) is the upper left corner. + * + * @since 0.27.0 + * + * @example + * const pipeline = sharp() + * .affine([[1, 0.3], [0.1, 0.7]], { + * background: 'white', + * interpolator: sharp.interpolators.nohalo + * }) + * .toBuffer((err, outputBuffer, info) => { + * // outputBuffer contains the transformed image + * // info.width and info.height contain the new dimensions + * }); + * + * inputStream + * .pipe(pipeline); + * + * @param {Array>|Array} matrix - affine transformation matrix + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {String|Object} [options.background="#000000"] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {Number} [options.idx=0] - input horizontal offset + * @param {Number} [options.idy=0] - input vertical offset + * @param {Number} [options.odx=0] - output horizontal offset + * @param {Number} [options.ody=0] - output vertical offset + * @param {String} [options.interpolator=sharp.interpolators.bicubic] - interpolator + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function affine (matrix, options) { + const isValidShape = Array.isArray(matrix) && ( + // 1x4 array of numbers + (matrix.length === 4 && matrix.every(is.number)) || + // 2x2 array of arrays of numbers + (matrix.length === 2 && matrix.every((row) => Array.isArray(row) && row.length === 2)) + ); + const flatMatrix = isValidShape ? matrix.flat() : []; + if (flatMatrix.length === 4 && flatMatrix.every(is.number)) { + this.options.affineMatrix = flatMatrix; + } else { + throw is.invalidParameterError('matrix', '1x4 or 2x2 array', matrix); + } + + if (is.defined(options)) { + if (is.object(options)) { + this._setBackgroundColourOption('affineBackground', options.background); + if (is.defined(options.idx)) { + if (is.number(options.idx)) { + this.options.affineIdx = options.idx; + } else { + throw is.invalidParameterError('options.idx', 'number', options.idx); + } + } + if (is.defined(options.idy)) { + if (is.number(options.idy)) { + this.options.affineIdy = options.idy; + } else { + throw is.invalidParameterError('options.idy', 'number', options.idy); + } + } + if (is.defined(options.odx)) { + if (is.number(options.odx)) { + this.options.affineOdx = options.odx; + } else { + throw is.invalidParameterError('options.odx', 'number', options.odx); + } + } + if (is.defined(options.ody)) { + if (is.number(options.ody)) { + this.options.affineOdy = options.ody; + } else { + throw is.invalidParameterError('options.ody', 'number', options.ody); + } + } + if (is.defined(options.interpolator)) { + if (is.inArray(options.interpolator, Object.values(this.constructor.interpolators))) { + this.options.affineInterpolator = options.interpolator; + } else { + throw is.invalidParameterError('options.interpolator', 'valid interpolator name', options.interpolator); + } + } + } else { + throw is.invalidParameterError('options', 'object', options); + } + } + + return this; +} + +/** + * Sharpen the image. + * + * When used without parameters, performs a fast, mild sharpen of the output image. + * + * When a `sigma` is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space. + * Fine-grained control over the level of sharpening in "flat" (m1) and "jagged" (m2) areas is available. + * + * See {@link https://www.libvips.org/API/current/method.Image.sharpen.html libvips sharpen} operation. + * + * @example + * const data = await sharp(input).sharpen().toBuffer(); + * + * @example + * const data = await sharp(input).sharpen({ sigma: 2 }).toBuffer(); + * + * @example + * const data = await sharp(input) + * .sharpen({ + * sigma: 2, + * m1: 0, + * m2: 3, + * x1: 3, + * y2: 15, + * y3: 15, + * }) + * .toBuffer(); + * + * @param {Object} [options] - if present, is an Object with attributes + * @param {number} [options.sigma] - the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`, between 0.000001 and 10 + * @param {number} [options.m1=1.0] - the level of sharpening to apply to "flat" areas, between 0 and 1000000 + * @param {number} [options.m2=2.0] - the level of sharpening to apply to "jagged" areas, between 0 and 1000000 + * @param {number} [options.x1=2.0] - threshold between "flat" and "jagged", between 0 and 1000000 + * @param {number} [options.y2=10.0] - maximum amount of brightening, between 0 and 1000000 + * @param {number} [options.y3=20.0] - maximum amount of darkening, between 0 and 1000000 + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function sharpen (options) { + if (is.plainObject(options)) { + if (is.number(options.sigma) && is.inRange(options.sigma, 0.000001, 10)) { + this.options.sharpenSigma = options.sigma; + } else { + throw is.invalidParameterError('options.sigma', 'number between 0.000001 and 10', options.sigma); + } + if (is.defined(options.m1)) { + if (is.number(options.m1) && is.inRange(options.m1, 0, 1000000)) { + this.options.sharpenM1 = options.m1; + } else { + throw is.invalidParameterError('options.m1', 'number between 0 and 1000000', options.m1); + } + } + if (is.defined(options.m2)) { + if (is.number(options.m2) && is.inRange(options.m2, 0, 1000000)) { + this.options.sharpenM2 = options.m2; + } else { + throw is.invalidParameterError('options.m2', 'number between 0 and 1000000', options.m2); + } + } + if (is.defined(options.x1)) { + if (is.number(options.x1) && is.inRange(options.x1, 0, 1000000)) { + this.options.sharpenX1 = options.x1; + } else { + throw is.invalidParameterError('options.x1', 'number between 0 and 1000000', options.x1); + } + } + if (is.defined(options.y2)) { + if (is.number(options.y2) && is.inRange(options.y2, 0, 1000000)) { + this.options.sharpenY2 = options.y2; + } else { + throw is.invalidParameterError('options.y2', 'number between 0 and 1000000', options.y2); + } + } + if (is.defined(options.y3)) { + if (is.number(options.y3) && is.inRange(options.y3, 0, 1000000)) { + this.options.sharpenY3 = options.y3; + } else { + throw is.invalidParameterError('options.y3', 'number between 0 and 1000000', options.y3); + } + } + } else { + this.options.sharpenSigma = -1; + } + return this; +} + +/** + * Apply median filter. + * When used without parameters the default window is 3x3. + * + * @example + * const output = await sharp(input).median().toBuffer(); + * + * @example + * const output = await sharp(input).median(5).toBuffer(); + * + * @param {number} [size=3] square mask size: size x size + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function median (size) { + if (!is.defined(size)) { + // No arguments: default to 3x3 + this.options.medianSize = 3; + } else if (is.integer(size) && is.inRange(size, 1, 1000)) { + // Numeric argument: specific sigma + this.options.medianSize = size; + } else { + throw is.invalidParameterError('size', 'integer between 1 and 1000', size); + } + return this; +} + +/** + * Blur the image. + * + * When used without parameters, performs a fast 3x3 box blur (equivalent to a box linear filter). + * + * When a `sigma` is provided, performs a slower, more accurate Gaussian blur. + * + * @example + * const boxBlurred = await sharp(input) + * .blur() + * .toBuffer(); + * + * @example + * const gaussianBlurred = await sharp(input) + * .blur(5) + * .toBuffer(); + * + * @param {Object|number|Boolean} [options] + * @param {number} [options.sigma] a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`. + * @param {string} [options.precision='integer'] How accurate the operation should be, one of: integer, float, approximate. + * @param {number} [options.minAmplitude=0.2] A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function blur (options) { + let sigma; + if (is.number(options)) { + sigma = options; + } else if (is.plainObject(options)) { + if (!is.number(options.sigma)) { + throw is.invalidParameterError('options.sigma', 'number between 0.3 and 1000', sigma); + } + sigma = options.sigma; + if ('precision' in options) { + if (is.string(vipsPrecision[options.precision])) { + this.options.precision = vipsPrecision[options.precision]; + } else { + throw is.invalidParameterError('precision', 'one of: integer, float, approximate', options.precision); + } + } + if ('minAmplitude' in options) { + if (is.number(options.minAmplitude) && is.inRange(options.minAmplitude, 0.001, 1)) { + this.options.minAmpl = options.minAmplitude; + } else { + throw is.invalidParameterError('minAmplitude', 'number between 0.001 and 1', options.minAmplitude); + } + } + } + + if (!is.defined(options)) { + // No arguments: default to mild blur + this.options.blurSigma = -1; + } else if (is.bool(options)) { + // Boolean argument: apply mild blur? + this.options.blurSigma = options ? -1 : 0; + } else if (is.number(sigma) && is.inRange(sigma, 0.3, 1000)) { + // Numeric argument: specific sigma + this.options.blurSigma = sigma; + } else { + throw is.invalidParameterError('sigma', 'number between 0.3 and 1000', sigma); + } + + return this; +} + +/** + * Expand foreground objects using the dilate morphological operator. + * + * @example + * const output = await sharp(input) + * .dilate() + * .toBuffer(); + * + * @param {Number} [width=1] dilation width in pixels. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function dilate (width) { + if (!is.defined(width)) { + this.options.dilateWidth = 1; + } else if (is.integer(width) && is.inRange(width, 1, 65536)) { + this.options.dilateWidth = width; + } else { + throw is.invalidParameterError('width', 'integer between 1 and 65536', width); + } + return this; +} + +/** + * Shrink foreground objects using the erode morphological operator. + * + * @example + * const output = await sharp(input) + * .erode() + * .toBuffer(); + * + * @param {Number} [width=1] erosion width in pixels. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function erode (width) { + if (!is.defined(width)) { + this.options.erodeWidth = 1; + } else if (is.integer(width) && is.inRange(width, 1, 65536)) { + this.options.erodeWidth = width; + } else { + throw is.invalidParameterError('width', 'integer between 1 and 65536', width); + } + return this; +} + +/** + * Merge alpha transparency channel, if any, with a background, then remove the alpha channel. + * + * See also {@link /api-channel#removealpha removeAlpha}. + * + * @example + * await sharp(rgbaInput) + * .flatten({ background: '#F0A703' }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {string|Object} [options.background={r: 0, g: 0, b: 0}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black. + * @returns {Sharp} + */ +function flatten (options) { + this.options.flatten = is.bool(options) ? options : true; + if (is.object(options)) { + this._setBackgroundColourOption('flattenBackground', options.background); + } + return this; +} + +/** + * Ensure the image has an alpha channel + * with all white pixel values made fully transparent. + * + * Existing alpha channel values for non-white pixels remain unchanged. + * + * @since 0.32.1 + * + * @example + * await sharp(rgbInput) + * .unflatten() + * .toBuffer(); + * + * @example + * await sharp(rgbInput) + * .threshold(128, { grayscale: false }) // converter bright pixels to white + * .unflatten() + * .toBuffer(); + */ +function unflatten () { + this.options.unflatten = true; + return this; +} + +/** + * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of `1/gamma` + * then increasing the encoding (brighten) post-resize at a factor of `gamma`. + * This can improve the perceived brightness of a resized image in non-linear colour spaces. + * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation + * when applying a gamma correction. + * + * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases. + * + * @param {number} [gamma=2.2] value between 1.0 and 3.0. + * @param {number} [gammaOut] value between 1.0 and 3.0. (optional, defaults to same as `gamma`) + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function gamma (gamma, gammaOut) { + if (!is.defined(gamma)) { + // Default gamma correction of 2.2 (sRGB) + this.options.gamma = 2.2; + } else if (is.number(gamma) && is.inRange(gamma, 1, 3)) { + this.options.gamma = gamma; + } else { + throw is.invalidParameterError('gamma', 'number between 1.0 and 3.0', gamma); + } + if (!is.defined(gammaOut)) { + // Default gamma correction for output is same as input + this.options.gammaOut = this.options.gamma; + } else if (is.number(gammaOut) && is.inRange(gammaOut, 1, 3)) { + this.options.gammaOut = gammaOut; + } else { + throw is.invalidParameterError('gammaOut', 'number between 1.0 and 3.0', gammaOut); + } + return this; +} + +/** + * Produce the "negative" of the image. + * + * @example + * const output = await sharp(input) + * .negate() + * .toBuffer(); + * + * @example + * const output = await sharp(input) + * .negate({ alpha: false }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {Boolean} [options.alpha=true] Whether or not to negate any alpha channel + * @returns {Sharp} + */ +function negate (options) { + this.options.negate = is.bool(options) ? options : true; + if (is.plainObject(options) && 'alpha' in options) { + if (!is.bool(options.alpha)) { + throw is.invalidParameterError('alpha', 'should be boolean value', options.alpha); + } else { + this.options.negateAlpha = options.alpha; + } + } + return this; +} + +/** + * Enhance output image contrast by stretching its luminance to cover a full dynamic range. + * + * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes. + * + * Luminance values below the `lower` percentile will be underexposed by clipping to zero. + * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value. + * + * @example + * const output = await sharp(input) + * .normalise() + * .toBuffer(); + * + * @example + * const output = await sharp(input) + * .normalise({ lower: 0, upper: 100 }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed. + * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed. + * @returns {Sharp} + */ +function normalise (options) { + if (is.plainObject(options)) { + if (is.defined(options.lower)) { + if (is.number(options.lower) && is.inRange(options.lower, 0, 99)) { + this.options.normaliseLower = options.lower; + } else { + throw is.invalidParameterError('lower', 'number between 0 and 99', options.lower); + } + } + if (is.defined(options.upper)) { + if (is.number(options.upper) && is.inRange(options.upper, 1, 100)) { + this.options.normaliseUpper = options.upper; + } else { + throw is.invalidParameterError('upper', 'number between 1 and 100', options.upper); + } + } + } + if (this.options.normaliseLower >= this.options.normaliseUpper) { + throw is.invalidParameterError('range', 'lower to be less than upper', + `${this.options.normaliseLower} >= ${this.options.normaliseUpper}`); + } + this.options.normalise = true; + return this; +} + +/** + * Alternative spelling of normalise. + * + * @example + * const output = await sharp(input) + * .normalize() + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed. + * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed. + * @returns {Sharp} + */ +function normalize (options) { + return this.normalise(options); +} + +/** + * Perform contrast limiting adaptive histogram equalization + * {@link https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE CLAHE}. + * + * This will, in general, enhance the clarity of the image by bringing out darker details. + * + * @since 0.28.3 + * + * @example + * const output = await sharp(input) + * .clahe({ + * width: 3, + * height: 3, + * }) + * .toBuffer(); + * + * @param {Object} options + * @param {number} options.width - Integral width of the search window, in pixels, between 1 and 65536. + * @param {number} options.height - Integral height of the search window, in pixels, between 1 and 65536. + * @param {number} [options.maxSlope=3] - Integral level of brightening, between 0 and 100, where 0 disables contrast limiting. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function clahe (options) { + if (is.plainObject(options)) { + if (is.integer(options.width) && is.inRange(options.width, 1, 65536)) { + this.options.claheWidth = options.width; + } else { + throw is.invalidParameterError('width', 'integer between 1 and 65536', options.width); + } + if (is.integer(options.height) && is.inRange(options.height, 1, 65536)) { + this.options.claheHeight = options.height; + } else { + throw is.invalidParameterError('height', 'integer between 1 and 65536', options.height); + } + if (is.defined(options.maxSlope)) { + if (is.integer(options.maxSlope) && is.inRange(options.maxSlope, 0, 100)) { + this.options.claheMaxSlope = options.maxSlope; + } else { + throw is.invalidParameterError('maxSlope', 'integer between 0 and 100', options.maxSlope); + } + } + } else { + throw is.invalidParameterError('options', 'plain object', options); + } + return this; +} + +/** + * Convolve the image with the specified kernel. + * + * @example + * sharp(input) + * .convolve({ + * width: 3, + * height: 3, + * kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1] + * }) + * .raw() + * .toBuffer(function(err, data, info) { + * // data contains the raw pixel data representing the convolution + * // of the input image with the horizontal Sobel operator + * }); + * + * @param {Object} kernel + * @param {number} kernel.width - width of the kernel in pixels. + * @param {number} kernel.height - height of the kernel in pixels. + * @param {Array} kernel.kernel - Array of length `width*height` containing the kernel values. + * @param {number} [kernel.scale=sum] - the scale of the kernel in pixels. + * @param {number} [kernel.offset=0] - the offset of the kernel in pixels. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function convolve (kernel) { + if (!is.object(kernel) || !Array.isArray(kernel.kernel) || + !is.integer(kernel.width) || !is.integer(kernel.height) || + !is.inRange(kernel.width, 3, 1001) || !is.inRange(kernel.height, 3, 1001) || + kernel.height * kernel.width !== kernel.kernel.length || + !kernel.kernel.every(is.number) + ) { + // must pass in a kernel + throw new Error('Invalid convolution kernel'); + } + // Default scale is sum of kernel values + if (!is.integer(kernel.scale)) { + kernel.scale = kernel.kernel.reduce((a, b) => a + b, 0); + } + // Clip scale to a minimum value of 1 + if (kernel.scale < 1) { + kernel.scale = 1; + } + if (!is.integer(kernel.offset)) { + kernel.offset = 0; + } + this.options.convKernel = kernel; + return this; +} + +/** + * Any pixel value greater than or equal to the threshold value will be set to 255, otherwise it will be set to 0. + * @param {number} [threshold=128] - a value in the range 0-255 representing the level at which the threshold will be applied. + * @param {Object} [options] + * @param {Boolean} [options.greyscale=true] - convert to single channel greyscale. + * @param {Boolean} [options.grayscale=true] - alternative spelling for greyscale. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function threshold (threshold, options) { + if (!is.defined(threshold)) { + this.options.threshold = 128; + } else if (is.bool(threshold)) { + this.options.threshold = threshold ? 128 : 0; + } else if (is.integer(threshold) && is.inRange(threshold, 0, 255)) { + this.options.threshold = threshold; + } else { + throw is.invalidParameterError('threshold', 'integer between 0 and 255', threshold); + } + if (!is.object(options) || options.greyscale === true || options.grayscale === true) { + this.options.thresholdGrayscale = true; + } else { + this.options.thresholdGrayscale = false; + } + return this; +} + +/** + * Perform a bitwise boolean operation with operand image. + * + * This operation creates an output image where each pixel is the result of + * the selected bitwise boolean `operation` between the corresponding pixels of the input images. + * + * @param {Buffer|string} operand - Buffer containing image data or string containing the path to an image file. + * @param {string} operator - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively. + * @param {Object} [options] + * @param {Object} [options.raw] - describes operand when using raw pixel data. + * @param {number} [options.raw.width] + * @param {number} [options.raw.height] + * @param {number} [options.raw.channels] + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function boolean (operand, operator, options) { + this.options.boolean = this._createInputDescriptor(operand, options); + if (is.string(operator) && is.inArray(operator, ['and', 'or', 'eor'])) { + this.options.booleanOp = operator; + } else { + throw is.invalidParameterError('operator', 'one of: and, or, eor', operator); + } + return this; +} + +/** + * Apply the linear formula `a` * input + `b` to the image to adjust image levels. + * + * When a single number is provided, it will be used for all image channels. + * When an array of numbers is provided, the array length must match the number of channels. + * + * @example + * await sharp(input) + * .linear(0.5, 2) + * .toBuffer(); + * + * @example + * await sharp(rgbInput) + * .linear( + * [0.25, 0.5, 0.75], + * [150, 100, 50] + * ) + * .toBuffer(); + * + * @param {(number|number[])} [a=[]] multiplier + * @param {(number|number[])} [b=[]] offset + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function linear (a, b) { + if (!is.defined(a) && is.number(b)) { + a = 1.0; + } else if (is.number(a) && !is.defined(b)) { + b = 0.0; + } + if (!is.defined(a)) { + this.options.linearA = []; + } else if (is.number(a)) { + this.options.linearA = [a]; + } else if (Array.isArray(a) && is.inRange(a.length, 1, 1000000) && a.every(is.number)) { + this.options.linearA = a; + } else { + throw is.invalidParameterError('a', 'number or array of numbers', a); + } + if (!is.defined(b)) { + this.options.linearB = []; + } else if (is.number(b)) { + this.options.linearB = [b]; + } else if (Array.isArray(b) && is.inRange(b.length, 1, 1000000) && b.every(is.number)) { + this.options.linearB = b; + } else { + throw is.invalidParameterError('b', 'number or array of numbers', b); + } + if (this.options.linearA.length !== this.options.linearB.length) { + throw new Error('Expected a and b to be arrays of the same length'); + } + return this; +} + +/** + * Recombine the image with the specified matrix. + * + * @since 0.21.1 + * + * @example + * sharp(input) + * .recomb([ + * [0.3588, 0.7044, 0.1368], + * [0.2990, 0.5870, 0.1140], + * [0.2392, 0.4696, 0.0912], + * ]) + * .raw() + * .toBuffer(function(err, data, info) { + * // data contains the raw pixel data after applying the matrix + * // With this example input, a sepia filter has been applied + * }); + * + * @param {Array>} inputMatrix - 3x3 or 4x4 Recombination matrix + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function recomb (inputMatrix) { + if (!Array.isArray(inputMatrix)) { + throw is.invalidParameterError('inputMatrix', 'array', inputMatrix); + } + const dimensions = inputMatrix.length; + if (dimensions !== 3 && dimensions !== 4) { + throw is.invalidParameterError('inputMatrix', '3x3 or 4x4 array', dimensions); + } + if (!inputMatrix.every((row) => Array.isArray(row) && row.length === dimensions)) { + throw is.invalidParameterError('inputMatrix', `array of ${dimensions} arrays of length ${dimensions}`, inputMatrix); + } + const recombMatrix = inputMatrix.flat(); + if (!recombMatrix.every(is.number)) { + throw is.invalidParameterError('inputMatrix', 'array of numbers', recombMatrix); + } + this.options.recombMatrix = recombMatrix; + return this; +} + +/** + * Transforms the image using brightness, saturation, hue rotation, and lightness. + * Brightness and lightness both operate on luminance, with the difference being that + * brightness is multiplicative whereas lightness is additive. + * + * @since 0.22.1 + * + * @example + * // increase brightness by a factor of 2 + * const output = await sharp(input) + * .modulate({ + * brightness: 2 + * }) + * .toBuffer(); + * + * @example + * // hue-rotate by 180 degrees + * const output = await sharp(input) + * .modulate({ + * hue: 180 + * }) + * .toBuffer(); + * + * @example + * // increase lightness by +50 + * const output = await sharp(input) + * .modulate({ + * lightness: 50 + * }) + * .toBuffer(); + * + * @example + * // decrease brightness and saturation while also hue-rotating by 90 degrees + * const output = await sharp(input) + * .modulate({ + * brightness: 0.5, + * saturation: 0.5, + * hue: 90, + * }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.brightness] Brightness multiplier + * @param {number} [options.saturation] Saturation multiplier + * @param {number} [options.hue] Degrees for hue rotation + * @param {number} [options.lightness] Lightness addend + * @returns {Sharp} + */ +function modulate (options) { + if (!is.plainObject(options)) { + throw is.invalidParameterError('options', 'plain object', options); + } + if ('brightness' in options) { + if (is.number(options.brightness) && options.brightness >= 0) { + this.options.brightness = options.brightness; + } else { + throw is.invalidParameterError('brightness', 'number above zero', options.brightness); + } + } + if ('saturation' in options) { + if (is.number(options.saturation) && options.saturation >= 0) { + this.options.saturation = options.saturation; + } else { + throw is.invalidParameterError('saturation', 'number above zero', options.saturation); + } + } + if ('hue' in options) { + if (is.integer(options.hue)) { + this.options.hue = options.hue % 360; + } else { + throw is.invalidParameterError('hue', 'number', options.hue); + } + } + if ('lightness' in options) { + if (is.number(options.lightness)) { + this.options.lightness = options.lightness; + } else { + throw is.invalidParameterError('lightness', 'number', options.lightness); + } + } + return this; +} + +/** + * Decorate the Sharp prototype with operation-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Object.assign(Sharp.prototype, { + autoOrient, + rotate, + flip, + flop, + affine, + sharpen, + erode, + dilate, + median, + blur, + flatten, + unflatten, + gamma, + negate, + normalise, + normalize, + clahe, + convolve, + threshold, + boolean, + linear, + recomb, + modulate + }); +}; diff --git a/apps/api/.output/node_modules/sharp/dist/operation.mjs b/apps/api/.output/node_modules/sharp/dist/operation.mjs new file mode 100644 index 0000000..8b2f84c --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/operation.mjs @@ -0,0 +1,1002 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import is from './is.mjs'; + +/** + * How accurate an operation should be. + * @member + * @private + */ +const vipsPrecision = { + integer: 'integer', + float: 'float', + approximate: 'approximate' +}; + +/** + * Rotate the output image. + * + * The provided angle is converted to a valid positive degree rotation. + * For example, `-450` will produce a 270 degree rotation. + * + * When rotating by an angle other than a multiple of 90, + * the background colour can be provided with the `background` option. + * + * For backwards compatibility, if no angle is provided, `.autoOrient()` will be called. + * + * Only one rotation can occur per pipeline (aside from an initial call without + * arguments to orient via EXIF data). Previous calls to `rotate` in the same + * pipeline will be ignored. + * + * Multi-page images can only be rotated by 180 degrees. + * + * Method order is important when rotating, resizing and/or extracting regions, + * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`. + * + * @example + * const rotateThenResize = await sharp(input) + * .rotate(90) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .toBuffer(); + * const resizeThenRotate = await sharp(input) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .rotate(90) + * .toBuffer(); + * + * @param {number} [angle=auto] angle of rotation. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string|Object} [options.background="#000000"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function rotate (angle, options) { + if (!is.defined(angle)) { + return this.autoOrient(); + } + if (this.options.angle || this.options.rotationAngle) { + this.options.debuglog('ignoring previous rotate options'); + this.options.angle = 0; + this.options.rotationAngle = 0; + } + if (is.integer(angle) && !(angle % 90)) { + this.options.angle = angle; + } else if (is.number(angle)) { + this.options.rotationAngle = angle; + if (is.object(options) && options.background) { + this._setBackgroundColourOption('rotationBackground', options.background); + } + } else { + throw is.invalidParameterError('angle', 'numeric', angle); + } + return this; +} + +/** + * Auto-orient based on the EXIF `Orientation` tag, then remove the tag. + * Mirroring is supported and may infer the use of a flip operation. + * + * Only the EXIF `Orientation` tag is considered; orientation carried in other + * places, such as an XMP `tiff:Orientation` element, is left untouched and + * remains the responsibility of the consumer. + * + * Previous or subsequent use of `rotate(angle)` and either `flip()` or `flop()` + * will logically occur after auto-orientation, regardless of call order. + * + * @example + * const output = await sharp(input).autoOrient().toBuffer(); + * + * @example + * const pipeline = sharp() + * .autoOrient() + * .resize(null, 200) + * .toBuffer(function (err, outputBuffer, info) { + * // outputBuffer contains 200px high JPEG image data, + * // auto-oriented using EXIF Orientation tag + * // info.width and info.height contain the dimensions of the resized image + * }); + * readableStream.pipe(pipeline); + * + * @returns {Sharp} + */ +function autoOrient () { + this.options.input.autoOrient = true; + return this; +} + +/** + * Mirror the image vertically (up-down) about the x-axis. + * This always occurs before rotation, if any. + * + * This operation does not work correctly with multi-page images. + * + * @example + * const output = await sharp(input).flip().toBuffer(); + * + * @param {Boolean} [flip=true] + * @returns {Sharp} + */ +function flip (flip) { + this.options.flip = is.bool(flip) ? flip : true; + return this; +} + +/** + * Mirror the image horizontally (left-right) about the y-axis. + * This always occurs before rotation, if any. + * + * @example + * const output = await sharp(input).flop().toBuffer(); + * + * @param {Boolean} [flop=true] + * @returns {Sharp} + */ +function flop (flop) { + this.options.flop = is.bool(flop) ? flop : true; + return this; +} + +/** + * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any. + * + * You must provide an array of length 4 or a 2x2 affine transformation matrix. + * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option. + * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `sharp.interpolators` Object e.g. `sharp.interpolators.nohalo`. + * + * In the case of a 2x2 matrix, the transform is: + * - X = `matrix[0, 0]` \* (x + `idx`) + `matrix[0, 1]` \* (y + `idy`) + `odx` + * - Y = `matrix[1, 0]` \* (x + `idx`) + `matrix[1, 1]` \* (y + `idy`) + `ody` + * + * where: + * - x and y are the coordinates in input image. + * - X and Y are the coordinates in output image. + * - (0,0) is the upper left corner. + * + * @since 0.27.0 + * + * @example + * const pipeline = sharp() + * .affine([[1, 0.3], [0.1, 0.7]], { + * background: 'white', + * interpolator: sharp.interpolators.nohalo + * }) + * .toBuffer((err, outputBuffer, info) => { + * // outputBuffer contains the transformed image + * // info.width and info.height contain the new dimensions + * }); + * + * inputStream + * .pipe(pipeline); + * + * @param {Array>|Array} matrix - affine transformation matrix + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {String|Object} [options.background="#000000"] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @param {Number} [options.idx=0] - input horizontal offset + * @param {Number} [options.idy=0] - input vertical offset + * @param {Number} [options.odx=0] - output horizontal offset + * @param {Number} [options.ody=0] - output vertical offset + * @param {String} [options.interpolator=sharp.interpolators.bicubic] - interpolator + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function affine (matrix, options) { + const isValidShape = Array.isArray(matrix) && ( + // 1x4 array of numbers + (matrix.length === 4 && matrix.every(is.number)) || + // 2x2 array of arrays of numbers + (matrix.length === 2 && matrix.every((row) => Array.isArray(row) && row.length === 2)) + ); + const flatMatrix = isValidShape ? matrix.flat() : []; + if (flatMatrix.length === 4 && flatMatrix.every(is.number)) { + this.options.affineMatrix = flatMatrix; + } else { + throw is.invalidParameterError('matrix', '1x4 or 2x2 array', matrix); + } + + if (is.defined(options)) { + if (is.object(options)) { + this._setBackgroundColourOption('affineBackground', options.background); + if (is.defined(options.idx)) { + if (is.number(options.idx)) { + this.options.affineIdx = options.idx; + } else { + throw is.invalidParameterError('options.idx', 'number', options.idx); + } + } + if (is.defined(options.idy)) { + if (is.number(options.idy)) { + this.options.affineIdy = options.idy; + } else { + throw is.invalidParameterError('options.idy', 'number', options.idy); + } + } + if (is.defined(options.odx)) { + if (is.number(options.odx)) { + this.options.affineOdx = options.odx; + } else { + throw is.invalidParameterError('options.odx', 'number', options.odx); + } + } + if (is.defined(options.ody)) { + if (is.number(options.ody)) { + this.options.affineOdy = options.ody; + } else { + throw is.invalidParameterError('options.ody', 'number', options.ody); + } + } + if (is.defined(options.interpolator)) { + if (is.inArray(options.interpolator, Object.values(this.constructor.interpolators))) { + this.options.affineInterpolator = options.interpolator; + } else { + throw is.invalidParameterError('options.interpolator', 'valid interpolator name', options.interpolator); + } + } + } else { + throw is.invalidParameterError('options', 'object', options); + } + } + + return this; +} + +/** + * Sharpen the image. + * + * When used without parameters, performs a fast, mild sharpen of the output image. + * + * When a `sigma` is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space. + * Fine-grained control over the level of sharpening in "flat" (m1) and "jagged" (m2) areas is available. + * + * See {@link https://www.libvips.org/API/current/method.Image.sharpen.html libvips sharpen} operation. + * + * @example + * const data = await sharp(input).sharpen().toBuffer(); + * + * @example + * const data = await sharp(input).sharpen({ sigma: 2 }).toBuffer(); + * + * @example + * const data = await sharp(input) + * .sharpen({ + * sigma: 2, + * m1: 0, + * m2: 3, + * x1: 3, + * y2: 15, + * y3: 15, + * }) + * .toBuffer(); + * + * @param {Object} [options] - if present, is an Object with attributes + * @param {number} [options.sigma] - the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`, between 0.000001 and 10 + * @param {number} [options.m1=1.0] - the level of sharpening to apply to "flat" areas, between 0 and 1000000 + * @param {number} [options.m2=2.0] - the level of sharpening to apply to "jagged" areas, between 0 and 1000000 + * @param {number} [options.x1=2.0] - threshold between "flat" and "jagged", between 0 and 1000000 + * @param {number} [options.y2=10.0] - maximum amount of brightening, between 0 and 1000000 + * @param {number} [options.y3=20.0] - maximum amount of darkening, between 0 and 1000000 + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function sharpen (options) { + if (is.plainObject(options)) { + if (is.number(options.sigma) && is.inRange(options.sigma, 0.000001, 10)) { + this.options.sharpenSigma = options.sigma; + } else { + throw is.invalidParameterError('options.sigma', 'number between 0.000001 and 10', options.sigma); + } + if (is.defined(options.m1)) { + if (is.number(options.m1) && is.inRange(options.m1, 0, 1000000)) { + this.options.sharpenM1 = options.m1; + } else { + throw is.invalidParameterError('options.m1', 'number between 0 and 1000000', options.m1); + } + } + if (is.defined(options.m2)) { + if (is.number(options.m2) && is.inRange(options.m2, 0, 1000000)) { + this.options.sharpenM2 = options.m2; + } else { + throw is.invalidParameterError('options.m2', 'number between 0 and 1000000', options.m2); + } + } + if (is.defined(options.x1)) { + if (is.number(options.x1) && is.inRange(options.x1, 0, 1000000)) { + this.options.sharpenX1 = options.x1; + } else { + throw is.invalidParameterError('options.x1', 'number between 0 and 1000000', options.x1); + } + } + if (is.defined(options.y2)) { + if (is.number(options.y2) && is.inRange(options.y2, 0, 1000000)) { + this.options.sharpenY2 = options.y2; + } else { + throw is.invalidParameterError('options.y2', 'number between 0 and 1000000', options.y2); + } + } + if (is.defined(options.y3)) { + if (is.number(options.y3) && is.inRange(options.y3, 0, 1000000)) { + this.options.sharpenY3 = options.y3; + } else { + throw is.invalidParameterError('options.y3', 'number between 0 and 1000000', options.y3); + } + } + } else { + this.options.sharpenSigma = -1; + } + return this; +} + +/** + * Apply median filter. + * When used without parameters the default window is 3x3. + * + * @example + * const output = await sharp(input).median().toBuffer(); + * + * @example + * const output = await sharp(input).median(5).toBuffer(); + * + * @param {number} [size=3] square mask size: size x size + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function median (size) { + if (!is.defined(size)) { + // No arguments: default to 3x3 + this.options.medianSize = 3; + } else if (is.integer(size) && is.inRange(size, 1, 1000)) { + // Numeric argument: specific sigma + this.options.medianSize = size; + } else { + throw is.invalidParameterError('size', 'integer between 1 and 1000', size); + } + return this; +} + +/** + * Blur the image. + * + * When used without parameters, performs a fast 3x3 box blur (equivalent to a box linear filter). + * + * When a `sigma` is provided, performs a slower, more accurate Gaussian blur. + * + * @example + * const boxBlurred = await sharp(input) + * .blur() + * .toBuffer(); + * + * @example + * const gaussianBlurred = await sharp(input) + * .blur(5) + * .toBuffer(); + * + * @param {Object|number|Boolean} [options] + * @param {number} [options.sigma] a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`. + * @param {string} [options.precision='integer'] How accurate the operation should be, one of: integer, float, approximate. + * @param {number} [options.minAmplitude=0.2] A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function blur (options) { + let sigma; + if (is.number(options)) { + sigma = options; + } else if (is.plainObject(options)) { + if (!is.number(options.sigma)) { + throw is.invalidParameterError('options.sigma', 'number between 0.3 and 1000', sigma); + } + sigma = options.sigma; + if ('precision' in options) { + if (is.string(vipsPrecision[options.precision])) { + this.options.precision = vipsPrecision[options.precision]; + } else { + throw is.invalidParameterError('precision', 'one of: integer, float, approximate', options.precision); + } + } + if ('minAmplitude' in options) { + if (is.number(options.minAmplitude) && is.inRange(options.minAmplitude, 0.001, 1)) { + this.options.minAmpl = options.minAmplitude; + } else { + throw is.invalidParameterError('minAmplitude', 'number between 0.001 and 1', options.minAmplitude); + } + } + } + + if (!is.defined(options)) { + // No arguments: default to mild blur + this.options.blurSigma = -1; + } else if (is.bool(options)) { + // Boolean argument: apply mild blur? + this.options.blurSigma = options ? -1 : 0; + } else if (is.number(sigma) && is.inRange(sigma, 0.3, 1000)) { + // Numeric argument: specific sigma + this.options.blurSigma = sigma; + } else { + throw is.invalidParameterError('sigma', 'number between 0.3 and 1000', sigma); + } + + return this; +} + +/** + * Expand foreground objects using the dilate morphological operator. + * + * @example + * const output = await sharp(input) + * .dilate() + * .toBuffer(); + * + * @param {Number} [width=1] dilation width in pixels. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function dilate (width) { + if (!is.defined(width)) { + this.options.dilateWidth = 1; + } else if (is.integer(width) && is.inRange(width, 1, 65536)) { + this.options.dilateWidth = width; + } else { + throw is.invalidParameterError('width', 'integer between 1 and 65536', width); + } + return this; +} + +/** + * Shrink foreground objects using the erode morphological operator. + * + * @example + * const output = await sharp(input) + * .erode() + * .toBuffer(); + * + * @param {Number} [width=1] erosion width in pixels. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function erode (width) { + if (!is.defined(width)) { + this.options.erodeWidth = 1; + } else if (is.integer(width) && is.inRange(width, 1, 65536)) { + this.options.erodeWidth = width; + } else { + throw is.invalidParameterError('width', 'integer between 1 and 65536', width); + } + return this; +} + +/** + * Merge alpha transparency channel, if any, with a background, then remove the alpha channel. + * + * See also {@link /api-channel#removealpha removeAlpha}. + * + * @example + * await sharp(rgbaInput) + * .flatten({ background: '#F0A703' }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {string|Object} [options.background={r: 0, g: 0, b: 0}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black. + * @returns {Sharp} + */ +function flatten (options) { + this.options.flatten = is.bool(options) ? options : true; + if (is.object(options)) { + this._setBackgroundColourOption('flattenBackground', options.background); + } + return this; +} + +/** + * Ensure the image has an alpha channel + * with all white pixel values made fully transparent. + * + * Existing alpha channel values for non-white pixels remain unchanged. + * + * @since 0.32.1 + * + * @example + * await sharp(rgbInput) + * .unflatten() + * .toBuffer(); + * + * @example + * await sharp(rgbInput) + * .threshold(128, { grayscale: false }) // converter bright pixels to white + * .unflatten() + * .toBuffer(); + */ +function unflatten () { + this.options.unflatten = true; + return this; +} + +/** + * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of `1/gamma` + * then increasing the encoding (brighten) post-resize at a factor of `gamma`. + * This can improve the perceived brightness of a resized image in non-linear colour spaces. + * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation + * when applying a gamma correction. + * + * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases. + * + * @param {number} [gamma=2.2] value between 1.0 and 3.0. + * @param {number} [gammaOut] value between 1.0 and 3.0. (optional, defaults to same as `gamma`) + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function gamma (gamma, gammaOut) { + if (!is.defined(gamma)) { + // Default gamma correction of 2.2 (sRGB) + this.options.gamma = 2.2; + } else if (is.number(gamma) && is.inRange(gamma, 1, 3)) { + this.options.gamma = gamma; + } else { + throw is.invalidParameterError('gamma', 'number between 1.0 and 3.0', gamma); + } + if (!is.defined(gammaOut)) { + // Default gamma correction for output is same as input + this.options.gammaOut = this.options.gamma; + } else if (is.number(gammaOut) && is.inRange(gammaOut, 1, 3)) { + this.options.gammaOut = gammaOut; + } else { + throw is.invalidParameterError('gammaOut', 'number between 1.0 and 3.0', gammaOut); + } + return this; +} + +/** + * Produce the "negative" of the image. + * + * @example + * const output = await sharp(input) + * .negate() + * .toBuffer(); + * + * @example + * const output = await sharp(input) + * .negate({ alpha: false }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {Boolean} [options.alpha=true] Whether or not to negate any alpha channel + * @returns {Sharp} + */ +function negate (options) { + this.options.negate = is.bool(options) ? options : true; + if (is.plainObject(options) && 'alpha' in options) { + if (!is.bool(options.alpha)) { + throw is.invalidParameterError('alpha', 'should be boolean value', options.alpha); + } else { + this.options.negateAlpha = options.alpha; + } + } + return this; +} + +/** + * Enhance output image contrast by stretching its luminance to cover a full dynamic range. + * + * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes. + * + * Luminance values below the `lower` percentile will be underexposed by clipping to zero. + * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value. + * + * @example + * const output = await sharp(input) + * .normalise() + * .toBuffer(); + * + * @example + * const output = await sharp(input) + * .normalise({ lower: 0, upper: 100 }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed. + * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed. + * @returns {Sharp} + */ +function normalise (options) { + if (is.plainObject(options)) { + if (is.defined(options.lower)) { + if (is.number(options.lower) && is.inRange(options.lower, 0, 99)) { + this.options.normaliseLower = options.lower; + } else { + throw is.invalidParameterError('lower', 'number between 0 and 99', options.lower); + } + } + if (is.defined(options.upper)) { + if (is.number(options.upper) && is.inRange(options.upper, 1, 100)) { + this.options.normaliseUpper = options.upper; + } else { + throw is.invalidParameterError('upper', 'number between 1 and 100', options.upper); + } + } + } + if (this.options.normaliseLower >= this.options.normaliseUpper) { + throw is.invalidParameterError('range', 'lower to be less than upper', + `${this.options.normaliseLower} >= ${this.options.normaliseUpper}`); + } + this.options.normalise = true; + return this; +} + +/** + * Alternative spelling of normalise. + * + * @example + * const output = await sharp(input) + * .normalize() + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed. + * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed. + * @returns {Sharp} + */ +function normalize (options) { + return this.normalise(options); +} + +/** + * Perform contrast limiting adaptive histogram equalization + * {@link https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE CLAHE}. + * + * This will, in general, enhance the clarity of the image by bringing out darker details. + * + * @since 0.28.3 + * + * @example + * const output = await sharp(input) + * .clahe({ + * width: 3, + * height: 3, + * }) + * .toBuffer(); + * + * @param {Object} options + * @param {number} options.width - Integral width of the search window, in pixels, between 1 and 65536. + * @param {number} options.height - Integral height of the search window, in pixels, between 1 and 65536. + * @param {number} [options.maxSlope=3] - Integral level of brightening, between 0 and 100, where 0 disables contrast limiting. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function clahe (options) { + if (is.plainObject(options)) { + if (is.integer(options.width) && is.inRange(options.width, 1, 65536)) { + this.options.claheWidth = options.width; + } else { + throw is.invalidParameterError('width', 'integer between 1 and 65536', options.width); + } + if (is.integer(options.height) && is.inRange(options.height, 1, 65536)) { + this.options.claheHeight = options.height; + } else { + throw is.invalidParameterError('height', 'integer between 1 and 65536', options.height); + } + if (is.defined(options.maxSlope)) { + if (is.integer(options.maxSlope) && is.inRange(options.maxSlope, 0, 100)) { + this.options.claheMaxSlope = options.maxSlope; + } else { + throw is.invalidParameterError('maxSlope', 'integer between 0 and 100', options.maxSlope); + } + } + } else { + throw is.invalidParameterError('options', 'plain object', options); + } + return this; +} + +/** + * Convolve the image with the specified kernel. + * + * @example + * sharp(input) + * .convolve({ + * width: 3, + * height: 3, + * kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1] + * }) + * .raw() + * .toBuffer(function(err, data, info) { + * // data contains the raw pixel data representing the convolution + * // of the input image with the horizontal Sobel operator + * }); + * + * @param {Object} kernel + * @param {number} kernel.width - width of the kernel in pixels. + * @param {number} kernel.height - height of the kernel in pixels. + * @param {Array} kernel.kernel - Array of length `width*height` containing the kernel values. + * @param {number} [kernel.scale=sum] - the scale of the kernel in pixels. + * @param {number} [kernel.offset=0] - the offset of the kernel in pixels. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function convolve (kernel) { + if (!is.object(kernel) || !Array.isArray(kernel.kernel) || + !is.integer(kernel.width) || !is.integer(kernel.height) || + !is.inRange(kernel.width, 3, 1001) || !is.inRange(kernel.height, 3, 1001) || + kernel.height * kernel.width !== kernel.kernel.length || + !kernel.kernel.every(is.number) + ) { + // must pass in a kernel + throw new Error('Invalid convolution kernel'); + } + // Default scale is sum of kernel values + if (!is.integer(kernel.scale)) { + kernel.scale = kernel.kernel.reduce((a, b) => a + b, 0); + } + // Clip scale to a minimum value of 1 + if (kernel.scale < 1) { + kernel.scale = 1; + } + if (!is.integer(kernel.offset)) { + kernel.offset = 0; + } + this.options.convKernel = kernel; + return this; +} + +/** + * Any pixel value greater than or equal to the threshold value will be set to 255, otherwise it will be set to 0. + * @param {number} [threshold=128] - a value in the range 0-255 representing the level at which the threshold will be applied. + * @param {Object} [options] + * @param {Boolean} [options.greyscale=true] - convert to single channel greyscale. + * @param {Boolean} [options.grayscale=true] - alternative spelling for greyscale. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function threshold (threshold, options) { + if (!is.defined(threshold)) { + this.options.threshold = 128; + } else if (is.bool(threshold)) { + this.options.threshold = threshold ? 128 : 0; + } else if (is.integer(threshold) && is.inRange(threshold, 0, 255)) { + this.options.threshold = threshold; + } else { + throw is.invalidParameterError('threshold', 'integer between 0 and 255', threshold); + } + if (!is.object(options) || options.greyscale === true || options.grayscale === true) { + this.options.thresholdGrayscale = true; + } else { + this.options.thresholdGrayscale = false; + } + return this; +} + +/** + * Perform a bitwise boolean operation with operand image. + * + * This operation creates an output image where each pixel is the result of + * the selected bitwise boolean `operation` between the corresponding pixels of the input images. + * + * @param {Buffer|string} operand - Buffer containing image data or string containing the path to an image file. + * @param {string} operator - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively. + * @param {Object} [options] + * @param {Object} [options.raw] - describes operand when using raw pixel data. + * @param {number} [options.raw.width] + * @param {number} [options.raw.height] + * @param {number} [options.raw.channels] + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function boolean (operand, operator, options) { + this.options.boolean = this._createInputDescriptor(operand, options); + if (is.string(operator) && is.inArray(operator, ['and', 'or', 'eor'])) { + this.options.booleanOp = operator; + } else { + throw is.invalidParameterError('operator', 'one of: and, or, eor', operator); + } + return this; +} + +/** + * Apply the linear formula `a` * input + `b` to the image to adjust image levels. + * + * When a single number is provided, it will be used for all image channels. + * When an array of numbers is provided, the array length must match the number of channels. + * + * @example + * await sharp(input) + * .linear(0.5, 2) + * .toBuffer(); + * + * @example + * await sharp(rgbInput) + * .linear( + * [0.25, 0.5, 0.75], + * [150, 100, 50] + * ) + * .toBuffer(); + * + * @param {(number|number[])} [a=[]] multiplier + * @param {(number|number[])} [b=[]] offset + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function linear (a, b) { + if (!is.defined(a) && is.number(b)) { + a = 1.0; + } else if (is.number(a) && !is.defined(b)) { + b = 0.0; + } + if (!is.defined(a)) { + this.options.linearA = []; + } else if (is.number(a)) { + this.options.linearA = [a]; + } else if (Array.isArray(a) && is.inRange(a.length, 1, 1000000) && a.every(is.number)) { + this.options.linearA = a; + } else { + throw is.invalidParameterError('a', 'number or array of numbers', a); + } + if (!is.defined(b)) { + this.options.linearB = []; + } else if (is.number(b)) { + this.options.linearB = [b]; + } else if (Array.isArray(b) && is.inRange(b.length, 1, 1000000) && b.every(is.number)) { + this.options.linearB = b; + } else { + throw is.invalidParameterError('b', 'number or array of numbers', b); + } + if (this.options.linearA.length !== this.options.linearB.length) { + throw new Error('Expected a and b to be arrays of the same length'); + } + return this; +} + +/** + * Recombine the image with the specified matrix. + * + * @since 0.21.1 + * + * @example + * sharp(input) + * .recomb([ + * [0.3588, 0.7044, 0.1368], + * [0.2990, 0.5870, 0.1140], + * [0.2392, 0.4696, 0.0912], + * ]) + * .raw() + * .toBuffer(function(err, data, info) { + * // data contains the raw pixel data after applying the matrix + * // With this example input, a sepia filter has been applied + * }); + * + * @param {Array>} inputMatrix - 3x3 or 4x4 Recombination matrix + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function recomb (inputMatrix) { + if (!Array.isArray(inputMatrix)) { + throw is.invalidParameterError('inputMatrix', 'array', inputMatrix); + } + const dimensions = inputMatrix.length; + if (dimensions !== 3 && dimensions !== 4) { + throw is.invalidParameterError('inputMatrix', '3x3 or 4x4 array', dimensions); + } + if (!inputMatrix.every((row) => Array.isArray(row) && row.length === dimensions)) { + throw is.invalidParameterError('inputMatrix', `array of ${dimensions} arrays of length ${dimensions}`, inputMatrix); + } + const recombMatrix = inputMatrix.flat(); + if (!recombMatrix.every(is.number)) { + throw is.invalidParameterError('inputMatrix', 'array of numbers', recombMatrix); + } + this.options.recombMatrix = recombMatrix; + return this; +} + +/** + * Transforms the image using brightness, saturation, hue rotation, and lightness. + * Brightness and lightness both operate on luminance, with the difference being that + * brightness is multiplicative whereas lightness is additive. + * + * @since 0.22.1 + * + * @example + * // increase brightness by a factor of 2 + * const output = await sharp(input) + * .modulate({ + * brightness: 2 + * }) + * .toBuffer(); + * + * @example + * // hue-rotate by 180 degrees + * const output = await sharp(input) + * .modulate({ + * hue: 180 + * }) + * .toBuffer(); + * + * @example + * // increase lightness by +50 + * const output = await sharp(input) + * .modulate({ + * lightness: 50 + * }) + * .toBuffer(); + * + * @example + * // decrease brightness and saturation while also hue-rotating by 90 degrees + * const output = await sharp(input) + * .modulate({ + * brightness: 0.5, + * saturation: 0.5, + * hue: 90, + * }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.brightness] Brightness multiplier + * @param {number} [options.saturation] Saturation multiplier + * @param {number} [options.hue] Degrees for hue rotation + * @param {number} [options.lightness] Lightness addend + * @returns {Sharp} + */ +function modulate (options) { + if (!is.plainObject(options)) { + throw is.invalidParameterError('options', 'plain object', options); + } + if ('brightness' in options) { + if (is.number(options.brightness) && options.brightness >= 0) { + this.options.brightness = options.brightness; + } else { + throw is.invalidParameterError('brightness', 'number above zero', options.brightness); + } + } + if ('saturation' in options) { + if (is.number(options.saturation) && options.saturation >= 0) { + this.options.saturation = options.saturation; + } else { + throw is.invalidParameterError('saturation', 'number above zero', options.saturation); + } + } + if ('hue' in options) { + if (is.integer(options.hue)) { + this.options.hue = options.hue % 360; + } else { + throw is.invalidParameterError('hue', 'number', options.hue); + } + } + if ('lightness' in options) { + if (is.number(options.lightness)) { + this.options.lightness = options.lightness; + } else { + throw is.invalidParameterError('lightness', 'number', options.lightness); + } + } + return this; +} + +/** + * Decorate the Sharp prototype with operation-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Object.assign(Sharp.prototype, { + autoOrient, + rotate, + flip, + flop, + affine, + sharpen, + erode, + dilate, + median, + blur, + flatten, + unflatten, + gamma, + negate, + normalise, + normalize, + clahe, + convolve, + threshold, + boolean, + linear, + recomb, + modulate + }); +}; diff --git a/apps/api/.output/node_modules/sharp/dist/output.cjs b/apps/api/.output/node_modules/sharp/dist/output.cjs new file mode 100644 index 0000000..1d2dd11 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/output.cjs @@ -0,0 +1,1786 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const path = require('node:path'); +const is = require('./is.cjs'); +const sharp = require('./sharp.cjs'); + +const formats = new Map([ + ['heic', 'heif'], + ['heif', 'heif'], + ['avif', 'avif'], + ['jpeg', 'jpeg'], + ['jpg', 'jpeg'], + ['jpe', 'jpeg'], + ['tile', 'tile'], + ['dz', 'tile'], + ['png', 'png'], + ['raw', 'raw'], + ['tiff', 'tiff'], + ['tif', 'tiff'], + ['webp', 'webp'], + ['gif', 'gif'], + ['jp2', 'jp2'], + ['jpx', 'jp2'], + ['j2k', 'jp2'], + ['j2c', 'jp2'], + ['jxl', 'jxl'] +]); + +const jp2Regex = /\.(jp[2x]|j2[kc])$/i; + +const errJp2Save = () => new Error('JP2 output requires libvips with support for OpenJPEG'); + +const bitdepthFromColourCount = (colours) => 1 << 32 - Math.clz32(Math.ceil(Math.log2(colours)) - 1); + +/** + * Write output image data to a file. + * + * If an explicit output format is not selected, it will be inferred from the extension, + * with JPEG, PNG, WebP, AVIF, TIFF, GIF, DZI, and libvips' V format supported. + * Note that raw pixel data is only supported for buffer output. + * + * By default all metadata will be removed, which includes EXIF-based orientation. + * See {@link #withmetadata withMetadata} for control over this. + * + * The caller is responsible for ensuring directory structures and permissions exist. + * + * A `Promise` is returned when `callback` is not provided. + * + * @example + * sharp(input) + * .toFile('output.png', (err, info) => { ... }); + * + * @example + * sharp(input) + * .toFile('output.png') + * .then(info => { ... }) + * .catch(err => { ... }); + * + * @param {string} fileOut - the path to write the image data to. + * @param {Function} [callback] - called on completion with two arguments `(err, info)`. + * `info` contains the output image `format`, `size` (bytes), `width`, `height`, + * `channels` and `premultiplied` (indicating if premultiplication was used). + * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`. + * When using the attention crop strategy also contains `attentionX` and `attentionY`, the focal point of the cropped region. + * Animated output will also contain `pageHeight` and `pages`. + * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text. + * @returns {Promise} - when no callback is provided + * @throws {Error} Invalid parameters + */ +function toFile (fileOut, callback) { + let err; + if (!is.string(fileOut)) { + err = new Error('Missing output file path'); + } else if (is.string(this.options.input.file) && path.resolve(this.options.input.file) === path.resolve(fileOut)) { + err = new Error('Cannot use same file for input and output'); + } else if (jp2Regex.test(path.extname(fileOut)) && !this.constructor.format.jp2.output.file) { + err = errJp2Save(); + } + if (err) { + if (is.fn(callback)) { + callback(err); + } else { + return Promise.reject(err); + } + } else { + this.options.fileOut = fileOut; + const stack = Error(); + return this._pipeline(callback, stack); + } + return this; +} + +/** + * Write output to a Buffer. + * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported. + * + * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format. + * + * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output. + * + * By default all metadata will be removed, which includes EXIF-based orientation. + * See {@link #withmetadata withMetadata} for control over this. + * + * `callback`, if present, gets three arguments `(err, data, info)` where: + * - `err` is an error, if any. + * - `data` is the output image data. + * - `info` contains the output image `format`, `size` (bytes), `width`, `height`, + * `channels` and `premultiplied` (indicating if premultiplication was used). + * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`. + * Animated output will also contain `pageHeight` and `pages`. + * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text. + * + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * Use {@link #touint8array toUint8Array} for a guaranteed transferable `ArrayBuffer`. + * + * A `Promise` is returned when `callback` is not provided. + * + * @example + * const data = await sharp(input) + * .png() + * .toBuffer(); + * + * @example + * const { data, info } = await sharp(input) + * .png() + * .toBuffer({ resolveWithObject: true }); + * + * @example + * const { data, info } = await sharp('my-image.jpg') + * // output the raw pixels + * .raw() + * .toBuffer({ resolveWithObject: true }); + * + * // create a more type safe way to work with the raw pixel data + * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer + * // so `data` and `pixelArray` point to the same memory location + * const pixelArray = new Uint8ClampedArray(data.buffer); + * + * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input + * const { width, height, channels } = info; + * await sharp(pixelArray, { raw: { width, height, channels } }) + * .toFile('my-changed-image.jpg'); + * + * @param {Object} [options] + * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`. + * @param {Function} [callback] + * @returns {Promise} - when no callback is provided + */ +function toBuffer (options, callback) { + if (is.object(options)) { + this._setBooleanOption('resolveWithObject', options.resolveWithObject); + } else if (this.options.resolveWithObject) { + this.options.resolveWithObject = false; + } + this.options.fileOut = ''; + const stack = Error(); + return this._pipeline(is.fn(options) ? options : callback, stack); +} + +/** + * Write output to a `Uint8Array` backed by a transferable `ArrayBuffer`. + * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported. + * + * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format. + * + * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output. + * + * By default all metadata will be removed, which includes EXIF-based orientation. + * See {@link #keepexif keepExif} and similar methods for control over this. + * + * Resolves with an `Object` containing: + * - `data` is the output image as a `Uint8Array` backed by a transferable `ArrayBuffer`. + * - `info` contains properties relating to the output image such as `width` and `height`. + * + * @since v0.35.0 + * + * @example + * const { data, info } = await sharp(input).toUint8Array(); + * + * @example + * const { data } = await sharp(input) + * .avif() + * .toUint8Array(); + * const base64String = data.toBase64(); + * + * @returns {Promise<{ data: Uint8Array, info: Object }>} + */ +function toUint8Array () { + this.options.resolveWithObject = true; + this.options.typedArrayOut = true; + const stack = Error(); + return this._pipeline(null, stack); +} + +/** + * Set output density (DPI) in EXIF metadata. + * + * @since 0.35.0 + * + * @example + * const data = await sharp(input) + * .withDensity(96) + * .toBuffer(); + * + * @param {number} density Number of pixels per inch (DPI). + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withDensity (density) { + if (is.number(density) && density > 0) { + this.options.withMetadataDensity = density; + } else { + throw is.invalidParameterError('density', 'positive number', density); + } + return this.keepExif(); +} + +/** + * Keep all EXIF metadata from the input image in the output image. + * + * EXIF metadata is unsupported for TIFF output. + * + * @since 0.33.0 + * + * @example + * const outputWithExif = await sharp(inputWithExif) + * .keepExif() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepExif () { + this.options.keepMetadata |= 0b00001; + return this; +} + +/** + * Set EXIF metadata in the output image, ignoring any EXIF in the input image. + * + * @since 0.33.0 + * + * @example + * const dataWithExif = await sharp(input) + * .withExif({ + * IFD0: { + * Copyright: 'The National Gallery' + * }, + * IFD3: { + * GPSLatitudeRef: 'N', + * GPSLatitude: '51/1 30/1 3230/100', + * GPSLongitudeRef: 'W', + * GPSLongitude: '0/1 7/1 4366/100' + * } + * }) + * .toBuffer(); + * + * @param {Object>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withExif (exif) { + if (is.object(exif)) { + for (const [ifd, entries] of Object.entries(exif)) { + if (is.object(entries)) { + for (const [k, v] of Object.entries(entries)) { + if (is.string(v)) { + this.options.withExif[`exif-${ifd.toLowerCase()}-${k}`] = v; + } else { + throw is.invalidParameterError(`${ifd}.${k}`, 'string', v); + } + } + } else { + throw is.invalidParameterError(ifd, 'object', entries); + } + } + } else { + throw is.invalidParameterError('exif', 'object', exif); + } + this.options.withExifMerge = false; + return this.keepExif(); +} + +/** + * Update EXIF metadata from the input image in the output image. + * + * @since 0.33.0 + * + * @example + * const dataWithMergedExif = await sharp(inputWithExif) + * .withExifMerge({ + * IFD0: { + * Copyright: 'The National Gallery' + * } + * }) + * .toBuffer(); + * + * @param {Object>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withExifMerge (exif) { + this.withExif(exif); + this.options.withExifMerge = true; + return this; +} + +/** + * Keep ICC profile from the input image in the output image. + * + * When input and output colour spaces differ, use with {@link /api-colour/#tocolourspace toColourspace} and optionally {@link /api-colour/#pipelinecolourspace pipelineColourspace}. + * + * @since 0.33.0 + * + * @example + * const outputWithIccProfile = await sharp(inputWithIccProfile) + * .keepIccProfile() + * .toBuffer(); + * + * @example + * const cmykOutputWithIccProfile = await sharp(cmykInputWithIccProfile) + * .pipelineColourspace('cmyk') + * .toColourspace('cmyk') + * .keepIccProfile() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepIccProfile () { + this.options.keepMetadata |= 0b01000; + return this; +} + +/** + * Transform using an ICC profile and attach to the output image. + * + * This can either be an absolute filesystem path or + * built-in profile name (`srgb`, `p3`, `cmyk`). + * + * @since 0.33.0 + * + * @example + * const outputWithP3 = await sharp(input) + * .withIccProfile('p3') + * .toBuffer(); + * + * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk). + * @param {Object} [options] + * @param {number} [options.attach=true] Should the ICC profile be included in the output image metadata? + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withIccProfile (icc, options) { + if (is.string(icc)) { + this.options.withIccProfile = icc; + } else { + throw is.invalidParameterError('icc', 'string', icc); + } + this.keepIccProfile(); + if (is.object(options)) { + if (is.defined(options.attach)) { + if (is.bool(options.attach)) { + if (!options.attach) { + this.options.keepMetadata &= ~0b01000; + } + } else { + throw is.invalidParameterError('attach', 'boolean', options.attach); + } + } + } + return this; +} + +/** + * If the input contains gain map metadata, attempt to process the image and gain map separately, + * recombining them into a single output image. + * + * This approach is faster and should produce better results than {@link #withgainmap withGainMap}, + * however not all operations are supported. + * + * Only JPEG input and output are supported. + * JPEG output options other than `quality` are ignored. + * + * This feature is experimental and the API may change. + * + * @since 0.35.0 + * + * @example + * const outputWithResizedGainMap = await sharp(inputWithGainMap) + * .keepGainMap() + * .resize({ width: 64 }) + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepGainMap() { + this.options.keepGainMap = true; + this.options.withGainMap = false; + this.options.keepMetadata |= 0b100000; + return this; +} + +/** + * If the input contains gain map metadata, use it to convert the main image to HDR (High Dynamic Range) before further processing. + * The input gain map is discarded. + * + * If the output is JPEG, generate and attach a new ISO 21496-1 gain map. + * JPEG output options other than `quality` are ignored. + * + * This feature is experimental and the API may change. + * + * @since 0.35.0 + * + * @example + * const outputWithRegeneratedGainMap = await sharp(inputWithGainMap) + * .withGainMap() + * .toBuffer(); + * + * @returns {Sharp} + */ +function withGainMap() { + this.options.withGainMap = true; + this.options.keepGainMap = false; + this.options.colourspace = 'scrgb'; + return this; +} + +/** + * Keep XMP metadata from the input image in the output image. + * + * @since 0.34.3 + * + * @example + * const outputWithXmp = await sharp(inputWithXmp) + * .keepXmp() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepXmp () { + this.options.keepMetadata |= 0b00010; + return this; +} + +/** + * Set XMP metadata in the output image. + * + * Supported by PNG, JPEG, WebP, and TIFF output. + * + * @since 0.34.3 + * + * @example + * const xmpString = ` + * + * + * + * + * John Doe + * + * + * `; + * + * const data = await sharp(input) + * .withXmp(xmpString) + * .toBuffer(); + * + * @param {string} xmp String containing XMP metadata to be embedded in the output image. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withXmp (xmp) { + if (is.string(xmp) && xmp.length > 0) { + this.options.withXmp = xmp; + this.options.keepMetadata |= 0b00010; + } else { + throw is.invalidParameterError('xmp', 'non-empty string', xmp); + } + return this; +} + +/** + * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image. + * + * The default behaviour, when `keepMetadata` is not used, is to convert to the device-independent + * sRGB colour space and strip all metadata, including the removal of any ICC profile. + * + * @since 0.33.0 + * + * @example + * const outputWithMetadata = await sharp(inputWithMetadata) + * .keepMetadata() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepMetadata () { + this.options.keepMetadata |= 0b11111; + return this; +} + +/** + * Keep most metadata (EXIF, XMP, IPTC) from the input image in the output image. + * + * This will also convert to and add a web-friendly sRGB ICC profile if appropriate. + * + * Allows orientation and density to be set or updated. + * + * @example + * const outputSrgbWithMetadata = await sharp(inputRgbWithMetadata) + * .withMetadata() + * .toBuffer(); + * + * @example + * // Set output metadata to 96 DPI + * const data = await sharp(input) + * .withMetadata({ density: 96 }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.orientation] Used to update the EXIF `Orientation` tag, integer between 1 and 8. + * @param {number} [options.density] Number of pixels per inch (DPI). + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withMetadata (options) { + this.keepMetadata(); + this.withIccProfile('srgb'); + if (is.object(options)) { + if (is.defined(options.orientation)) { + if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) { + this.options.withMetadataOrientation = options.orientation; + } else { + throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation); + } + } + if (is.defined(options.density)) { + if (is.number(options.density) && options.density > 0) { + this.options.withMetadataDensity = options.density; + } else { + throw is.invalidParameterError('density', 'positive number', options.density); + } + } + if (is.defined(options.icc)) { + this.withIccProfile(options.icc); + } + if (is.defined(options.exif)) { + this.withExifMerge(options.exif); + } + } + return this; +} + +/** + * Force output to a given format. + * + * @example + * // Convert any input to PNG output + * const data = await sharp(input) + * .toFormat('png') + * .toBuffer(); + * + * @param {(string|Object)} format - as a string or an Object with an 'id' attribute + * @param {Object} options - output options + * @returns {Sharp} + * @throws {Error} unsupported format or options + */ +function toFormat (format, options) { + const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase()); + if (!actualFormat) { + throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format); + } + return this[actualFormat](options); +} + +/** + * Use these JPEG options for output image. + * + * @example + * // Convert any input to very high quality JPEG output + * const data = await sharp(input) + * .jpeg({ + * quality: 100, + * chromaSubsampling: '4:4:4' + * }) + * .toBuffer(); + * + * @example + * // Use mozjpeg to reduce output JPEG file size (slower) + * const data = await sharp(input) + * .jpeg({ mozjpeg: true }) + * .toBuffer(); + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {boolean} [options.progressive=false] - use progressive (interlace) scan + * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling + * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables + * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding + * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }` + * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation + * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing + * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive + * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans + * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8 + * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable + * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function jpeg (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.jpegQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.progressive)) { + this._setBooleanOption('jpegProgressive', options.progressive); + } + if (is.defined(options.chromaSubsampling)) { + if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) { + this.options.jpegChromaSubsampling = options.chromaSubsampling; + } else { + throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling); + } + } + const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding; + if (is.defined(optimiseCoding)) { + this._setBooleanOption('jpegOptimiseCoding', optimiseCoding); + } + if (is.defined(options.mozjpeg)) { + if (is.bool(options.mozjpeg)) { + if (options.mozjpeg) { + this.options.jpegTrellisQuantisation = true; + this.options.jpegOvershootDeringing = true; + this.options.jpegOptimiseScans = true; + this.options.jpegProgressive = true; + this.options.jpegQuantisationTable = 3; + } + } else { + throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg); + } + } + const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation; + if (is.defined(trellisQuantisation)) { + this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation); + } + if (is.defined(options.overshootDeringing)) { + this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing); + } + const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans; + if (is.defined(optimiseScans)) { + this._setBooleanOption('jpegOptimiseScans', optimiseScans); + if (optimiseScans) { + this.options.jpegProgressive = true; + } + } + const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable; + if (is.defined(quantisationTable)) { + if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) { + this.options.jpegQuantisationTable = quantisationTable; + } else { + throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable); + } + } + } + return this._updateFormatOut('jpeg', options); +} + +/** + * Use these PNG options for output image. + * + * By default, PNG output is full colour at 8 bits per pixel. + * + * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel. + * Set `palette` to `true` for slower, indexed PNG output. + * + * For 16 bits per pixel output, convert to `rgb16` via + * {@link /api-colour/#tocolourspace toColourspace}. + * + * @example + * // Convert any input to full colour PNG output + * const data = await sharp(input) + * .png() + * .toBuffer(); + * + * @example + * // Convert any input to indexed PNG output (slower) + * const data = await sharp(input) + * .png({ palette: true }) + * .toBuffer(); + * + * @example + * // Output 16 bits per pixel RGB(A) + * const data = await sharp(input) + * .toColourspace('rgb16') + * .png() + * .toBuffer(); + * + * @param {Object} [options] + * @param {boolean} [options.progressive=false] - use progressive (interlace) scan + * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest) + * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering + * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support + * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true` + * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest), sets `palette` to `true` + * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true` + * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true` + * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true` + * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function png (options) { + if (is.object(options)) { + if (is.defined(options.progressive)) { + this._setBooleanOption('pngProgressive', options.progressive); + } + if (is.defined(options.compressionLevel)) { + if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) { + this.options.pngCompressionLevel = options.compressionLevel; + } else { + throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel); + } + } + if (is.defined(options.adaptiveFiltering)) { + this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering); + } + const colours = options.colours || options.colors; + if (is.defined(colours)) { + if (is.integer(colours) && is.inRange(colours, 2, 256)) { + this.options.pngBitdepth = bitdepthFromColourCount(colours); + } else { + throw is.invalidParameterError('colours', 'integer between 2 and 256', colours); + } + } + if (is.defined(options.palette)) { + this._setBooleanOption('pngPalette', options.palette); + } else if ([options.quality, options.effort, options.colours, options.colors, options.dither].some(is.defined)) { + this._setBooleanOption('pngPalette', true); + } + if (this.options.pngPalette) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) { + this.options.pngQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) { + this.options.pngEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort); + } + } + if (is.defined(options.dither)) { + if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) { + this.options.pngDither = options.dither; + } else { + throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither); + } + } + } + } + return this._updateFormatOut('png', options); +} + +/** + * Use these WebP options for output image. + * + * @example + * // Convert any input to lossless WebP output + * const data = await sharp(input) + * .webp({ lossless: true }) + * .toBuffer(); + * + * @example + * // Optimise the file size of an animated WebP + * const outputWebp = await sharp(inputWebp, { animated: true }) + * .webp({ effort: 6 }) + * .toBuffer(); + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100 + * @param {boolean} [options.lossless=false] - use lossless compression mode + * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode + * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling + * @param {boolean} [options.smartDeblock=false] - auto-adjust the deblocking filter, can improve low contrast edges (slow) + * @param {string} [options.preset='default'] - named preset for preprocessing/filtering, one of: default, photo, picture, drawing, icon, text + * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 6 (slowest) + * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds) + * @param {boolean} [options.minSize=false] - prevent use of animation key frames to minimise file size (slow) + * @param {boolean} [options.mixed=false] - allow mixture of lossy and lossless animation frames (slow) + * @param {boolean} [options.exact=false] - preserve the colour data in transparent pixels + * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function webp (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.webpQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.alphaQuality)) { + if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) { + this.options.webpAlphaQuality = options.alphaQuality; + } else { + throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality); + } + } + if (is.defined(options.lossless)) { + this._setBooleanOption('webpLossless', options.lossless); + } + if (is.defined(options.nearLossless)) { + this._setBooleanOption('webpNearLossless', options.nearLossless); + } + if (is.defined(options.smartSubsample)) { + this._setBooleanOption('webpSmartSubsample', options.smartSubsample); + } + if (is.defined(options.smartDeblock)) { + this._setBooleanOption('webpSmartDeblock', options.smartDeblock); + } + if (is.defined(options.preset)) { + if (is.string(options.preset) && is.inArray(options.preset, ['default', 'photo', 'picture', 'drawing', 'icon', 'text'])) { + this.options.webpPreset = options.preset; + } else { + throw is.invalidParameterError('preset', 'one of: default, photo, picture, drawing, icon, text', options.preset); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 0, 6)) { + this.options.webpEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 0 and 6', options.effort); + } + } + if (is.defined(options.minSize)) { + this._setBooleanOption('webpMinSize', options.minSize); + } + if (is.defined(options.mixed)) { + this._setBooleanOption('webpMixed', options.mixed); + } + if (is.defined(options.exact)) { + this._setBooleanOption('webpExact', options.exact); + } + } + trySetAnimationOptions(options, this.options); + return this._updateFormatOut('webp', options); +} + +/** + * Use these GIF options for the output image. + * + * The first entry in the palette is reserved for transparency. + * + * The palette of the input image will be re-used if possible. + * + * @since 0.30.0 + * + * @example + * // Convert PNG to GIF + * await sharp(pngBuffer) + * .gif() + * .toBuffer(); + * + * @example + * // Convert animated WebP to animated GIF + * await sharp('animated.webp', { animated: true }) + * .toFile('animated.gif'); + * + * @example + * // Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIF + * const out = await sharp('in.gif', { animated: true }) + * .resize({ width: 128, height: 128 }) + * .gif({ dither: 0 }) + * .toBuffer(); + * + * @example + * // Lossy file size reduction of animated GIF + * await sharp('in.gif', { animated: true }) + * .gif({ interFrameMaxError: 8 }) + * .toFile('optim.gif'); + * + * @param {Object} [options] - output options + * @param {boolean} [options.reuse=true] - re-use existing palette, otherwise generate new (slow) + * @param {boolean} [options.progressive=false] - use progressive (interlace) scan + * @param {number} [options.colours=256] - maximum number of palette entries, including transparency, between 2 and 256 + * @param {number} [options.colors=256] - alternative spelling of `options.colours` + * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest) + * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most) + * @param {number} [options.interFrameMaxError=0] - maximum inter-frame error for transparency, between 0 (lossless) and 32 + * @param {number} [options.interPaletteMaxError=3] - maximum inter-palette error for palette reuse, between 0 and 256 + * @param {boolean} [options.keepDuplicateFrames=false] - keep duplicate frames in the output instead of combining them + * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds) + * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function gif (options) { + if (is.object(options)) { + if (is.defined(options.reuse)) { + this._setBooleanOption('gifReuse', options.reuse); + } + if (is.defined(options.progressive)) { + this._setBooleanOption('gifProgressive', options.progressive); + } + const colours = options.colours || options.colors; + if (is.defined(colours)) { + if (is.integer(colours) && is.inRange(colours, 2, 256)) { + this.options.gifBitdepth = bitdepthFromColourCount(colours); + } else { + throw is.invalidParameterError('colours', 'integer between 2 and 256', colours); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) { + this.options.gifEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort); + } + } + if (is.defined(options.dither)) { + if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) { + this.options.gifDither = options.dither; + } else { + throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither); + } + } + if (is.defined(options.interFrameMaxError)) { + if (is.number(options.interFrameMaxError) && is.inRange(options.interFrameMaxError, 0, 32)) { + this.options.gifInterFrameMaxError = options.interFrameMaxError; + } else { + throw is.invalidParameterError('interFrameMaxError', 'number between 0.0 and 32.0', options.interFrameMaxError); + } + } + if (is.defined(options.interPaletteMaxError)) { + if (is.number(options.interPaletteMaxError) && is.inRange(options.interPaletteMaxError, 0, 256)) { + this.options.gifInterPaletteMaxError = options.interPaletteMaxError; + } else { + throw is.invalidParameterError('interPaletteMaxError', 'number between 0.0 and 256.0', options.interPaletteMaxError); + } + } + if (is.defined(options.keepDuplicateFrames)) { + if (is.bool(options.keepDuplicateFrames)) { + this._setBooleanOption('gifKeepDuplicateFrames', options.keepDuplicateFrames); + } else { + throw is.invalidParameterError('keepDuplicateFrames', 'boolean', options.keepDuplicateFrames); + } + } + } + trySetAnimationOptions(options, this.options); + return this._updateFormatOut('gif', options); +} + +/** + * Use these JP2 options for output image. + * + * Requires libvips compiled with support for OpenJPEG. + * The prebuilt binaries do not include this - see + * {@link /install#custom-libvips installing a custom libvips}. + * + * @example + * // Convert any input to lossless JP2 output + * const data = await sharp(input) + * .jp2({ lossless: true }) + * .toBuffer(); + * + * @example + * // Convert any input to very high quality JP2 output + * const data = await sharp(input) + * .jp2({ + * quality: 100, + * chromaSubsampling: '4:4:4' + * }) + * .toBuffer(); + * + * @since 0.29.1 + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {boolean} [options.lossless=false] - use lossless compression mode + * @param {number} [options.tileWidth=512] - horizontal tile size + * @param {number} [options.tileHeight=512] - vertical tile size + * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function jp2 (options) { + /* node:coverage ignore next 41 */ + if (!this.constructor.format.jp2.output.buffer) { + throw errJp2Save(); + } + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.jp2Quality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.lossless)) { + if (is.bool(options.lossless)) { + this.options.jp2Lossless = options.lossless; + } else { + throw is.invalidParameterError('lossless', 'boolean', options.lossless); + } + } + if (is.defined(options.tileWidth)) { + if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) { + this.options.jp2TileWidth = options.tileWidth; + } else { + throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth); + } + } + if (is.defined(options.tileHeight)) { + if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) { + this.options.jp2TileHeight = options.tileHeight; + } else { + throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight); + } + } + if (is.defined(options.chromaSubsampling)) { + if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) { + this.options.jp2ChromaSubsampling = options.chromaSubsampling; + } else { + throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling); + } + } + } + return this._updateFormatOut('jp2', options); +} + +/** + * Set animation options if available. + * @private + * + * @param {Object} [source] - output options + * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds) + * @param {Object} [target] - target object for valid options + * @throws {Error} Invalid options + */ +function trySetAnimationOptions (source, target) { + if (is.object(source) && is.defined(source.loop)) { + if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) { + target.loop = source.loop; + } else { + throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop); + } + } + if (is.object(source) && is.defined(source.delay)) { + // We allow singular values as well + if (is.integer(source.delay) && is.inRange(source.delay, 0, 65535)) { + target.delay = [source.delay]; + } else if ( + Array.isArray(source.delay) && + is.inRange(source.delay.length, 1, 1000000) && + source.delay.every(is.integer) && + source.delay.every(v => is.inRange(v, 0, 65535))) { + target.delay = source.delay; + } else { + throw is.invalidParameterError('delay', 'integer or an array of integers between 0 and 65535', source.delay); + } + } +} + +/** + * Use these TIFF options for output image. + * + * The `density` can be set in pixels/inch via {@link #withmetadata withMetadata} + * instead of providing `xres` and `yres` in pixels/mm. + * + * @example + * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output + * sharp('input.svg') + * .tiff({ + * compression: 'lzw', + * bitdepth: 1 + * }) + * .toFile('1-bpp-output.tiff') + * .then(info => { ... }); + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format + * @param {string} [options.compression='jpeg'] - compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k + * @param {boolean} [options.bigtiff=false] - use BigTIFF variant (has no effect when compression is none) + * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float + * @param {boolean} [options.pyramid=false] - write an image pyramid + * @param {boolean} [options.tile=false] - write a tiled tiff + * @param {number} [options.tileWidth=256] - horizontal tile size, valid values are integers in the range 1-32768 + * @param {number} [options.tileHeight=256] - vertical tile size, valid values are integers in the range 1-32768 + * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 + * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 + * @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm + * @param {number} [options.bitdepth=0] - reduce bitdepth to 1, 2 or 4 bit + * @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function tiff (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.tiffQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.bitdepth)) { + if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4])) { + this.options.tiffBitdepth = options.bitdepth; + } else { + throw is.invalidParameterError('bitdepth', '1, 2 or 4', options.bitdepth); + } + } + // tiling + if (is.defined(options.tile)) { + this._setBooleanOption('tiffTile', options.tile); + } + if (is.defined(options.tileWidth)) { + if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) { + this.options.tiffTileWidth = options.tileWidth; + } else { + throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth); + } + } + if (is.defined(options.tileHeight)) { + if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) { + this.options.tiffTileHeight = options.tileHeight; + } else { + throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight); + } + } + // miniswhite + if (is.defined(options.miniswhite)) { + this._setBooleanOption('tiffMiniswhite', options.miniswhite); + } + // pyramid + if (is.defined(options.pyramid)) { + this._setBooleanOption('tiffPyramid', options.pyramid); + } + // resolution + if (is.defined(options.xres)) { + if (is.number(options.xres) && is.inRange(options.xres, 0.001, 1000000)) { + this.options.tiffXres = options.xres; + } else { + throw is.invalidParameterError('xres', 'number between 0.001 and 1000000', options.xres); + } + } + if (is.defined(options.yres)) { + if (is.number(options.yres) && is.inRange(options.yres, 0.001, 1000000)) { + this.options.tiffYres = options.yres; + } else { + throw is.invalidParameterError('yres', 'number between 0.001 and 1000000', options.yres); + } + } + // compression + if (is.defined(options.compression)) { + if (is.string(options.compression) && is.inArray(options.compression, ['none', 'jpeg', 'deflate', 'packbits', 'ccittfax4', 'lzw', 'webp', 'zstd', 'jp2k'])) { + this.options.tiffCompression = options.compression; + } else { + throw is.invalidParameterError('compression', 'one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k', options.compression); + } + } + // bigtiff + if (is.defined(options.bigtiff)) { + this._setBooleanOption('tiffBigtiff', options.bigtiff); + } + // predictor + if (is.defined(options.predictor)) { + if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) { + this.options.tiffPredictor = options.predictor; + } else { + throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor); + } + } + // resolutionUnit + if (is.defined(options.resolutionUnit)) { + if (is.string(options.resolutionUnit) && is.inArray(options.resolutionUnit, ['inch', 'cm'])) { + this.options.tiffResolutionUnit = options.resolutionUnit; + } else { + throw is.invalidParameterError('resolutionUnit', 'one of: inch, cm', options.resolutionUnit); + } + } + } + return this._updateFormatOut('tiff', options); +} + +/** + * Use these AVIF options for output image. + * + * AVIF image sequences are not supported. + * + * @example + * const data = await sharp(input) + * .avif({ effort: 2 }) + * .toBuffer(); + * + * @example + * const data = await sharp(input) + * .avif({ lossless: true }) + * .toBuffer(); + * + * @since 0.27.0 + * + * @param {Object} [options] - output options + * @param {number} [options.quality=50] - quality, integer 1-100 + * @param {boolean} [options.lossless=false] - use lossless compression + * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest) + * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling + * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit + * @param {string} [options.tune='auto'] - tune output for a quality metric, one of 'auto' (default), 'iq', 'psnr' or 'ssim' + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function avif (options) { + return this.heif({ ...options, compression: 'av1' }); +} + +/** + * Use these HEIF options for output image. + * + * Support for patent-encumbered HEIC images using `hevc` compression requires the use of a + * globally-installed libvips compiled with support for libheif, libde265 and x265. + * + * @example + * const data = await sharp(input) + * .heif({ compression: 'hevc' }) + * .toBuffer(); + * + * @since 0.23.0 + * + * @param {Object} options - output options + * @param {string} options.compression - compression format: av1, hevc + * @param {number} [options.quality=50] - quality, integer 1-100 + * @param {boolean} [options.lossless=false] - use lossless compression + * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest) + * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling + * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit + * @param {string} [options.tune='auto'] - tune output for a quality metric, one of 'auto' (default), 'iq', 'psnr' or 'ssim' + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function heif (options) { + if (is.object(options)) { + if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) { + this.options.heifCompression = options.compression; + } else { + throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression); + } + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.heifQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.lossless)) { + if (is.bool(options.lossless)) { + this.options.heifLossless = options.lossless; + } else { + throw is.invalidParameterError('lossless', 'boolean', options.lossless); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) { + this.options.heifEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 0 and 9', options.effort); + } + } + if (is.defined(options.chromaSubsampling)) { + if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) { + this.options.heifChromaSubsampling = options.chromaSubsampling; + } else { + throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling); + } + } + if (is.defined(options.bitdepth)) { + if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) { + this.options.heifBitdepth = options.bitdepth; + } else { + throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth); + } + } + if (is.defined(options.tune)) { + if (is.string(options.tune) && is.inArray(options.tune, ['auto', 'iq', 'psnr', 'ssim'])) { + if (this.options.heifLossless && options.tune === 'iq') { + this.options.heifTune = 'ssim'; + } else { + this.options.heifTune = options.tune; + } + } else { + throw is.invalidParameterError('tune', 'one of: auto, iq, psnr, ssim', options.tune); + } + } + } else { + throw is.invalidParameterError('options', 'Object', options); + } + return this._updateFormatOut('heif', options); +} + +/** + * Use these JPEG-XL (JXL) options for output image. + * + * This feature is experimental, please do not use in production systems. + * + * Requires libvips compiled with support for libjxl. + * The prebuilt binaries do not include this - see + * {@link /install/#custom-libvips installing a custom libvips}. + * + * @since 0.31.3 + * + * @param {Object} [options] - output options + * @param {number} [options.distance=1.0] - maximum encoding error, between 0 (highest quality) and 15 (lowest quality) + * @param {number} [options.quality] - calculate `distance` based on JPEG-like quality, between 1 and 100, overrides distance if specified + * @param {number} [options.decodingTier=0] - target decode speed tier, between 0 (highest quality) and 4 (lowest quality) + * @param {boolean} [options.lossless=false] - use lossless compression + * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 9 (slowest) + * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds) + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function jxl (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + // https://github.com/libjxl/libjxl/blob/0aeea7f180bafd6893c1db8072dcb67d2aa5b03d/tools/cjxl_main.cc#L640-L644 + this.options.jxlDistance = options.quality >= 30 + ? 0.1 + (100 - options.quality) * 0.09 + : 53 / 3000 * options.quality * options.quality - 23 / 20 * options.quality + 25; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } else if (is.defined(options.distance)) { + if (is.number(options.distance) && is.inRange(options.distance, 0, 15)) { + this.options.jxlDistance = options.distance; + } else { + throw is.invalidParameterError('distance', 'number between 0.0 and 15.0', options.distance); + } + } + if (is.defined(options.decodingTier)) { + if (is.integer(options.decodingTier) && is.inRange(options.decodingTier, 0, 4)) { + this.options.jxlDecodingTier = options.decodingTier; + } else { + throw is.invalidParameterError('decodingTier', 'integer between 0 and 4', options.decodingTier); + } + } + if (is.defined(options.lossless)) { + if (is.bool(options.lossless)) { + this.options.jxlLossless = options.lossless; + } else { + throw is.invalidParameterError('lossless', 'boolean', options.lossless); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 1, 9)) { + this.options.jxlEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 1 and 9', options.effort); + } + } + } + trySetAnimationOptions(options, this.options); + return this._updateFormatOut('jxl', options); +} + +/** + * Force output to be raw, uncompressed pixel data. + * Pixel ordering is left-to-right, top-to-bottom, without padding. + * Channel ordering will be RGB or RGBA for non-greyscale colourspaces. + * + * @example + * // Extract raw, unsigned 8-bit RGB pixel data from JPEG input + * const { data, info } = await sharp('input.jpg') + * .raw() + * .toBuffer({ resolveWithObject: true }); + * + * @example + * // Extract alpha channel as raw, unsigned 16-bit pixel data from PNG input + * const data = await sharp('input.png') + * .ensureAlpha() + * .extractChannel(3) + * .toColourspace('b-w') + * .raw({ depth: 'ushort' }) + * .toBuffer(); + * + * @param {Object} [options] - output options + * @param {string} [options.depth='uchar'] - bit depth, one of: char, uchar (default), short, ushort, int, uint, float, complex, double, dpcomplex + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function raw (options) { + if (is.object(options)) { + if (is.defined(options.depth)) { + if (is.string(options.depth) && is.inArray(options.depth, + ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'float', 'complex', 'double', 'dpcomplex'] + )) { + this.options.rawDepth = options.depth; + } else { + throw is.invalidParameterError('depth', 'one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex', options.depth); + } + } + } + return this._updateFormatOut('raw'); +} + +/** + * Use tile-based deep zoom (image pyramid) output. + * + * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions. + * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format. + * + * The container will be set to `zip` when the output is a Buffer or Stream, otherwise it will default to `fs`. + * + * @example + * sharp('input.tiff') + * .png() + * .tile({ + * size: 512 + * }) + * .toFile('output.dz', function(err, info) { + * // output.dzi is the Deep Zoom XML definition + * // output_files contains 512x512 tiles grouped by zoom level + * }); + * + * @example + * const zipFileWithTiles = await sharp(input) + * .tile({ basename: "tiles" }) + * .toBuffer(); + * + * @example + * const iiififier = sharp().tile({ layout: "iiif" }); + * readableStream + * .pipe(iiififier) + * .pipe(writeableStream); + * + * @param {Object} [options] + * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192. + * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192. + * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90. + * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency. + * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout. + * @param {number} [options.skipBlanks=-1] Threshold to skip tile generation. Range is 0-255 for 8-bit images, 0-65535 for 16-bit images. Default is 5 for `google` layout, -1 (no skip) otherwise. + * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file). + * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `iiif3`, `zoomify` or `google`. + * @param {boolean} [options.centre=false] centre image in tile. + * @param {boolean} [options.center=false] alternative spelling of centre. + * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`/`iiif3`, sets the `@id`/`id` attribute of `info.json` + * @param {string} [options.basename] the name of the directory within the zip file when container is `zip`. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function tile (options) { + if (is.object(options)) { + // Size of square tiles, in pixels + if (is.defined(options.size)) { + if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) { + this.options.tileSize = options.size; + } else { + throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size); + } + } + // Overlap of tiles, in pixels + if (is.defined(options.overlap)) { + if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) { + if (options.overlap > this.options.tileSize) { + throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap); + } + this.options.tileOverlap = options.overlap; + } else { + throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap); + } + } + // Container + if (is.defined(options.container)) { + if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) { + this.options.tileContainer = options.container; + } else { + throw is.invalidParameterError('container', 'one of: fs, zip', options.container); + } + } + // Layout + if (is.defined(options.layout)) { + if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'iiif3', 'zoomify'])) { + this.options.tileLayout = options.layout; + } else { + throw is.invalidParameterError('layout', 'one of: dz, google, iiif, iiif3, zoomify', options.layout); + } + } + // Angle of rotation, + if (is.defined(options.angle)) { + if (is.integer(options.angle) && !(options.angle % 90)) { + this.options.tileAngle = options.angle; + } else { + throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle); + } + } + // Background colour + this._setBackgroundColourOption('tileBackground', options.background); + // Depth of tiles + if (is.defined(options.depth)) { + if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) { + this.options.tileDepth = options.depth; + } else { + throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth); + } + } + // Threshold to skip blank tiles + if (is.defined(options.skipBlanks)) { + if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) { + this.options.tileSkipBlanks = options.skipBlanks; + } else { + throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks); + } + } else if (is.defined(options.layout) && options.layout === 'google') { + this.options.tileSkipBlanks = 5; + } + // Center image in tile + const centre = is.bool(options.center) ? options.center : options.centre; + if (is.defined(centre)) { + this._setBooleanOption('tileCentre', centre); + } + // @id attribute for IIIF layout + if (is.defined(options.id)) { + if (is.string(options.id)) { + this.options.tileId = options.id; + } else { + throw is.invalidParameterError('id', 'string', options.id); + } + } + // Basename for zip container + if (is.defined(options.basename)) { + if (is.string(options.basename)) { + this.options.tileBasename = options.basename; + } else { + throw is.invalidParameterError('basename', 'string', options.basename); + } + } + } + // Format + if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) { + this.options.tileFormat = this.options.formatOut; + } else if (this.options.formatOut !== 'input') { + throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut); + } + return this._updateFormatOut('dz'); +} + +/** + * Set a timeout for processing, in seconds. + * Use a value of zero to continue processing indefinitely, the default behaviour. + * + * The clock starts when libvips opens an input image for processing. + * Time spent waiting for a libuv thread to become available is not included. + * + * @example + * // Ensure processing takes no longer than 3 seconds + * try { + * const data = await sharp(input) + * .blur(1000) + * .timeout({ seconds: 3 }) + * .toBuffer(); + * } catch (err) { + * if (err.message.includes('timeout')) { ... } + * } + * + * @since 0.29.2 + * + * @param {Object} options + * @param {number} options.seconds - Number of seconds after which processing will be stopped + * @returns {Sharp} + */ +function timeout (options) { + if (!is.plainObject(options)) { + throw is.invalidParameterError('options', 'object', options); + } + if (is.integer(options.seconds) && is.inRange(options.seconds, 0, 3600)) { + this.options.timeoutSeconds = options.seconds; + } else { + throw is.invalidParameterError('seconds', 'integer between 0 and 3600', options.seconds); + } + return this; +} + +/** + * Update the output format unless options.force is false, + * in which case revert to input format. + * @private + * @param {string} formatOut + * @param {Object} [options] + * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format + * @returns {Sharp} + */ +function _updateFormatOut (formatOut, options) { + if (!(is.object(options) && options.force === false)) { + this.options.formatOut = formatOut; + } + return this; +} + +/** + * Update a boolean attribute of the this.options Object. + * @private + * @param {string} key + * @param {boolean} val + * @throws {Error} Invalid key + */ +function _setBooleanOption (key, val) { + if (is.bool(val)) { + this.options[key] = val; + } else { + throw is.invalidParameterError(key, 'boolean', val); + } +} + +/** + * Called by a WriteableStream to notify us it is ready for data. + * @private + */ +function _read () { + if (!this.options.streamOut) { + this.options.streamOut = true; + const stack = Error(); + this._pipeline(undefined, stack); + } +} + +/** + * Invoke the C++ image processing pipeline + * Supports callback, stream and promise variants + * @private + */ +function _pipeline (callback, stack) { + if (typeof callback === 'function') { + // output=file/buffer + if (this._isStreamInput()) { + // output=file/buffer, input=stream + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, data, info); + } + }); + }); + } else { + // output=file/buffer, input=file/buffer + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, data, info); + } + }); + } + return this; + } else if (this.options.streamOut) { + // output=stream + if (this._isStreamInput()) { + // output=stream, input=stream + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + this.emit('error', is.nativeError(err, stack)); + } else { + this.emit('info', info); + this.push(data); + } + this.push(null); + this.on('end', () => this.emit('close')); + }); + }); + } else { + // output=stream, input=file/buffer + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + this.emit('error', is.nativeError(err, stack)); + } else { + this.emit('info', info); + this.push(data); + } + this.push(null); + this.on('end', () => this.emit('close')); + }); + } + return this; + } else { + // output=promise + if (this._isStreamInput()) { + // output=promise, input=stream + return new Promise((resolve, reject) => { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + if (this.options.resolveWithObject) { + resolve({ data, info }); + } else { + resolve(data); + } + } + }); + }); + }); + } else { + // output=promise, input=file/buffer + return new Promise((resolve, reject) => { + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + if (this.options.resolveWithObject) { + resolve({ data, info }); + } else { + resolve(data); + } + } + }); + }); + } + } +} + +/** + * Decorate the Sharp prototype with output-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Object.assign(Sharp.prototype, { + // Public + toFile, + toBuffer, + toUint8Array, + withDensity, + keepExif, + withExif, + withExifMerge, + keepIccProfile, + withIccProfile, + keepGainMap, + withGainMap, + keepXmp, + withXmp, + keepMetadata, + withMetadata, + toFormat, + jpeg, + jp2, + png, + webp, + tiff, + avif, + heif, + jxl, + gif, + raw, + tile, + timeout, + // Private + _updateFormatOut, + _setBooleanOption, + _read, + _pipeline + }); +}; diff --git a/apps/api/.output/node_modules/sharp/dist/output.mjs b/apps/api/.output/node_modules/sharp/dist/output.mjs new file mode 100644 index 0000000..caa31d8 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/output.mjs @@ -0,0 +1,1786 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import path from 'node:path'; +import is from './is.mjs'; +import sharp from './sharp.mjs'; + +const formats = new Map([ + ['heic', 'heif'], + ['heif', 'heif'], + ['avif', 'avif'], + ['jpeg', 'jpeg'], + ['jpg', 'jpeg'], + ['jpe', 'jpeg'], + ['tile', 'tile'], + ['dz', 'tile'], + ['png', 'png'], + ['raw', 'raw'], + ['tiff', 'tiff'], + ['tif', 'tiff'], + ['webp', 'webp'], + ['gif', 'gif'], + ['jp2', 'jp2'], + ['jpx', 'jp2'], + ['j2k', 'jp2'], + ['j2c', 'jp2'], + ['jxl', 'jxl'] +]); + +const jp2Regex = /\.(jp[2x]|j2[kc])$/i; + +const errJp2Save = () => new Error('JP2 output requires libvips with support for OpenJPEG'); + +const bitdepthFromColourCount = (colours) => 1 << 32 - Math.clz32(Math.ceil(Math.log2(colours)) - 1); + +/** + * Write output image data to a file. + * + * If an explicit output format is not selected, it will be inferred from the extension, + * with JPEG, PNG, WebP, AVIF, TIFF, GIF, DZI, and libvips' V format supported. + * Note that raw pixel data is only supported for buffer output. + * + * By default all metadata will be removed, which includes EXIF-based orientation. + * See {@link #withmetadata withMetadata} for control over this. + * + * The caller is responsible for ensuring directory structures and permissions exist. + * + * A `Promise` is returned when `callback` is not provided. + * + * @example + * sharp(input) + * .toFile('output.png', (err, info) => { ... }); + * + * @example + * sharp(input) + * .toFile('output.png') + * .then(info => { ... }) + * .catch(err => { ... }); + * + * @param {string} fileOut - the path to write the image data to. + * @param {Function} [callback] - called on completion with two arguments `(err, info)`. + * `info` contains the output image `format`, `size` (bytes), `width`, `height`, + * `channels` and `premultiplied` (indicating if premultiplication was used). + * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`. + * When using the attention crop strategy also contains `attentionX` and `attentionY`, the focal point of the cropped region. + * Animated output will also contain `pageHeight` and `pages`. + * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text. + * @returns {Promise} - when no callback is provided + * @throws {Error} Invalid parameters + */ +function toFile (fileOut, callback) { + let err; + if (!is.string(fileOut)) { + err = new Error('Missing output file path'); + } else if (is.string(this.options.input.file) && path.resolve(this.options.input.file) === path.resolve(fileOut)) { + err = new Error('Cannot use same file for input and output'); + } else if (jp2Regex.test(path.extname(fileOut)) && !this.constructor.format.jp2.output.file) { + err = errJp2Save(); + } + if (err) { + if (is.fn(callback)) { + callback(err); + } else { + return Promise.reject(err); + } + } else { + this.options.fileOut = fileOut; + const stack = Error(); + return this._pipeline(callback, stack); + } + return this; +} + +/** + * Write output to a Buffer. + * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported. + * + * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format. + * + * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output. + * + * By default all metadata will be removed, which includes EXIF-based orientation. + * See {@link #withmetadata withMetadata} for control over this. + * + * `callback`, if present, gets three arguments `(err, data, info)` where: + * - `err` is an error, if any. + * - `data` is the output image data. + * - `info` contains the output image `format`, `size` (bytes), `width`, `height`, + * `channels` and `premultiplied` (indicating if premultiplication was used). + * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`. + * Animated output will also contain `pageHeight` and `pages`. + * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text. + * + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * Use {@link #touint8array toUint8Array} for a guaranteed transferable `ArrayBuffer`. + * + * A `Promise` is returned when `callback` is not provided. + * + * @example + * const data = await sharp(input) + * .png() + * .toBuffer(); + * + * @example + * const { data, info } = await sharp(input) + * .png() + * .toBuffer({ resolveWithObject: true }); + * + * @example + * const { data, info } = await sharp('my-image.jpg') + * // output the raw pixels + * .raw() + * .toBuffer({ resolveWithObject: true }); + * + * // create a more type safe way to work with the raw pixel data + * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer + * // so `data` and `pixelArray` point to the same memory location + * const pixelArray = new Uint8ClampedArray(data.buffer); + * + * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input + * const { width, height, channels } = info; + * await sharp(pixelArray, { raw: { width, height, channels } }) + * .toFile('my-changed-image.jpg'); + * + * @param {Object} [options] + * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`. + * @param {Function} [callback] + * @returns {Promise} - when no callback is provided + */ +function toBuffer (options, callback) { + if (is.object(options)) { + this._setBooleanOption('resolveWithObject', options.resolveWithObject); + } else if (this.options.resolveWithObject) { + this.options.resolveWithObject = false; + } + this.options.fileOut = ''; + const stack = Error(); + return this._pipeline(is.fn(options) ? options : callback, stack); +} + +/** + * Write output to a `Uint8Array` backed by a transferable `ArrayBuffer`. + * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported. + * + * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format. + * + * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output. + * + * By default all metadata will be removed, which includes EXIF-based orientation. + * See {@link #keepexif keepExif} and similar methods for control over this. + * + * Resolves with an `Object` containing: + * - `data` is the output image as a `Uint8Array` backed by a transferable `ArrayBuffer`. + * - `info` contains properties relating to the output image such as `width` and `height`. + * + * @since v0.35.0 + * + * @example + * const { data, info } = await sharp(input).toUint8Array(); + * + * @example + * const { data } = await sharp(input) + * .avif() + * .toUint8Array(); + * const base64String = data.toBase64(); + * + * @returns {Promise<{ data: Uint8Array, info: Object }>} + */ +function toUint8Array () { + this.options.resolveWithObject = true; + this.options.typedArrayOut = true; + const stack = Error(); + return this._pipeline(null, stack); +} + +/** + * Set output density (DPI) in EXIF metadata. + * + * @since 0.35.0 + * + * @example + * const data = await sharp(input) + * .withDensity(96) + * .toBuffer(); + * + * @param {number} density Number of pixels per inch (DPI). + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withDensity (density) { + if (is.number(density) && density > 0) { + this.options.withMetadataDensity = density; + } else { + throw is.invalidParameterError('density', 'positive number', density); + } + return this.keepExif(); +} + +/** + * Keep all EXIF metadata from the input image in the output image. + * + * EXIF metadata is unsupported for TIFF output. + * + * @since 0.33.0 + * + * @example + * const outputWithExif = await sharp(inputWithExif) + * .keepExif() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepExif () { + this.options.keepMetadata |= 0b00001; + return this; +} + +/** + * Set EXIF metadata in the output image, ignoring any EXIF in the input image. + * + * @since 0.33.0 + * + * @example + * const dataWithExif = await sharp(input) + * .withExif({ + * IFD0: { + * Copyright: 'The National Gallery' + * }, + * IFD3: { + * GPSLatitudeRef: 'N', + * GPSLatitude: '51/1 30/1 3230/100', + * GPSLongitudeRef: 'W', + * GPSLongitude: '0/1 7/1 4366/100' + * } + * }) + * .toBuffer(); + * + * @param {Object>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withExif (exif) { + if (is.object(exif)) { + for (const [ifd, entries] of Object.entries(exif)) { + if (is.object(entries)) { + for (const [k, v] of Object.entries(entries)) { + if (is.string(v)) { + this.options.withExif[`exif-${ifd.toLowerCase()}-${k}`] = v; + } else { + throw is.invalidParameterError(`${ifd}.${k}`, 'string', v); + } + } + } else { + throw is.invalidParameterError(ifd, 'object', entries); + } + } + } else { + throw is.invalidParameterError('exif', 'object', exif); + } + this.options.withExifMerge = false; + return this.keepExif(); +} + +/** + * Update EXIF metadata from the input image in the output image. + * + * @since 0.33.0 + * + * @example + * const dataWithMergedExif = await sharp(inputWithExif) + * .withExifMerge({ + * IFD0: { + * Copyright: 'The National Gallery' + * } + * }) + * .toBuffer(); + * + * @param {Object>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withExifMerge (exif) { + this.withExif(exif); + this.options.withExifMerge = true; + return this; +} + +/** + * Keep ICC profile from the input image in the output image. + * + * When input and output colour spaces differ, use with {@link /api-colour/#tocolourspace toColourspace} and optionally {@link /api-colour/#pipelinecolourspace pipelineColourspace}. + * + * @since 0.33.0 + * + * @example + * const outputWithIccProfile = await sharp(inputWithIccProfile) + * .keepIccProfile() + * .toBuffer(); + * + * @example + * const cmykOutputWithIccProfile = await sharp(cmykInputWithIccProfile) + * .pipelineColourspace('cmyk') + * .toColourspace('cmyk') + * .keepIccProfile() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepIccProfile () { + this.options.keepMetadata |= 0b01000; + return this; +} + +/** + * Transform using an ICC profile and attach to the output image. + * + * This can either be an absolute filesystem path or + * built-in profile name (`srgb`, `p3`, `cmyk`). + * + * @since 0.33.0 + * + * @example + * const outputWithP3 = await sharp(input) + * .withIccProfile('p3') + * .toBuffer(); + * + * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk). + * @param {Object} [options] + * @param {number} [options.attach=true] Should the ICC profile be included in the output image metadata? + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withIccProfile (icc, options) { + if (is.string(icc)) { + this.options.withIccProfile = icc; + } else { + throw is.invalidParameterError('icc', 'string', icc); + } + this.keepIccProfile(); + if (is.object(options)) { + if (is.defined(options.attach)) { + if (is.bool(options.attach)) { + if (!options.attach) { + this.options.keepMetadata &= ~0b01000; + } + } else { + throw is.invalidParameterError('attach', 'boolean', options.attach); + } + } + } + return this; +} + +/** + * If the input contains gain map metadata, attempt to process the image and gain map separately, + * recombining them into a single output image. + * + * This approach is faster and should produce better results than {@link #withgainmap withGainMap}, + * however not all operations are supported. + * + * Only JPEG input and output are supported. + * JPEG output options other than `quality` are ignored. + * + * This feature is experimental and the API may change. + * + * @since 0.35.0 + * + * @example + * const outputWithResizedGainMap = await sharp(inputWithGainMap) + * .keepGainMap() + * .resize({ width: 64 }) + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepGainMap() { + this.options.keepGainMap = true; + this.options.withGainMap = false; + this.options.keepMetadata |= 0b100000; + return this; +} + +/** + * If the input contains gain map metadata, use it to convert the main image to HDR (High Dynamic Range) before further processing. + * The input gain map is discarded. + * + * If the output is JPEG, generate and attach a new ISO 21496-1 gain map. + * JPEG output options other than `quality` are ignored. + * + * This feature is experimental and the API may change. + * + * @since 0.35.0 + * + * @example + * const outputWithRegeneratedGainMap = await sharp(inputWithGainMap) + * .withGainMap() + * .toBuffer(); + * + * @returns {Sharp} + */ +function withGainMap() { + this.options.withGainMap = true; + this.options.keepGainMap = false; + this.options.colourspace = 'scrgb'; + return this; +} + +/** + * Keep XMP metadata from the input image in the output image. + * + * @since 0.34.3 + * + * @example + * const outputWithXmp = await sharp(inputWithXmp) + * .keepXmp() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepXmp () { + this.options.keepMetadata |= 0b00010; + return this; +} + +/** + * Set XMP metadata in the output image. + * + * Supported by PNG, JPEG, WebP, and TIFF output. + * + * @since 0.34.3 + * + * @example + * const xmpString = ` + * + * + * + * + * John Doe + * + * + * `; + * + * const data = await sharp(input) + * .withXmp(xmpString) + * .toBuffer(); + * + * @param {string} xmp String containing XMP metadata to be embedded in the output image. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withXmp (xmp) { + if (is.string(xmp) && xmp.length > 0) { + this.options.withXmp = xmp; + this.options.keepMetadata |= 0b00010; + } else { + throw is.invalidParameterError('xmp', 'non-empty string', xmp); + } + return this; +} + +/** + * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image. + * + * The default behaviour, when `keepMetadata` is not used, is to convert to the device-independent + * sRGB colour space and strip all metadata, including the removal of any ICC profile. + * + * @since 0.33.0 + * + * @example + * const outputWithMetadata = await sharp(inputWithMetadata) + * .keepMetadata() + * .toBuffer(); + * + * @returns {Sharp} + */ +function keepMetadata () { + this.options.keepMetadata |= 0b11111; + return this; +} + +/** + * Keep most metadata (EXIF, XMP, IPTC) from the input image in the output image. + * + * This will also convert to and add a web-friendly sRGB ICC profile if appropriate. + * + * Allows orientation and density to be set or updated. + * + * @example + * const outputSrgbWithMetadata = await sharp(inputRgbWithMetadata) + * .withMetadata() + * .toBuffer(); + * + * @example + * // Set output metadata to 96 DPI + * const data = await sharp(input) + * .withMetadata({ density: 96 }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {number} [options.orientation] Used to update the EXIF `Orientation` tag, integer between 1 and 8. + * @param {number} [options.density] Number of pixels per inch (DPI). + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function withMetadata (options) { + this.keepMetadata(); + this.withIccProfile('srgb'); + if (is.object(options)) { + if (is.defined(options.orientation)) { + if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) { + this.options.withMetadataOrientation = options.orientation; + } else { + throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation); + } + } + if (is.defined(options.density)) { + if (is.number(options.density) && options.density > 0) { + this.options.withMetadataDensity = options.density; + } else { + throw is.invalidParameterError('density', 'positive number', options.density); + } + } + if (is.defined(options.icc)) { + this.withIccProfile(options.icc); + } + if (is.defined(options.exif)) { + this.withExifMerge(options.exif); + } + } + return this; +} + +/** + * Force output to a given format. + * + * @example + * // Convert any input to PNG output + * const data = await sharp(input) + * .toFormat('png') + * .toBuffer(); + * + * @param {(string|Object)} format - as a string or an Object with an 'id' attribute + * @param {Object} options - output options + * @returns {Sharp} + * @throws {Error} unsupported format or options + */ +function toFormat (format, options) { + const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase()); + if (!actualFormat) { + throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format); + } + return this[actualFormat](options); +} + +/** + * Use these JPEG options for output image. + * + * @example + * // Convert any input to very high quality JPEG output + * const data = await sharp(input) + * .jpeg({ + * quality: 100, + * chromaSubsampling: '4:4:4' + * }) + * .toBuffer(); + * + * @example + * // Use mozjpeg to reduce output JPEG file size (slower) + * const data = await sharp(input) + * .jpeg({ mozjpeg: true }) + * .toBuffer(); + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {boolean} [options.progressive=false] - use progressive (interlace) scan + * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling + * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables + * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding + * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }` + * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation + * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing + * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive + * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans + * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8 + * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable + * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function jpeg (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.jpegQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.progressive)) { + this._setBooleanOption('jpegProgressive', options.progressive); + } + if (is.defined(options.chromaSubsampling)) { + if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) { + this.options.jpegChromaSubsampling = options.chromaSubsampling; + } else { + throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling); + } + } + const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding; + if (is.defined(optimiseCoding)) { + this._setBooleanOption('jpegOptimiseCoding', optimiseCoding); + } + if (is.defined(options.mozjpeg)) { + if (is.bool(options.mozjpeg)) { + if (options.mozjpeg) { + this.options.jpegTrellisQuantisation = true; + this.options.jpegOvershootDeringing = true; + this.options.jpegOptimiseScans = true; + this.options.jpegProgressive = true; + this.options.jpegQuantisationTable = 3; + } + } else { + throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg); + } + } + const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation; + if (is.defined(trellisQuantisation)) { + this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation); + } + if (is.defined(options.overshootDeringing)) { + this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing); + } + const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans; + if (is.defined(optimiseScans)) { + this._setBooleanOption('jpegOptimiseScans', optimiseScans); + if (optimiseScans) { + this.options.jpegProgressive = true; + } + } + const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable; + if (is.defined(quantisationTable)) { + if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) { + this.options.jpegQuantisationTable = quantisationTable; + } else { + throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable); + } + } + } + return this._updateFormatOut('jpeg', options); +} + +/** + * Use these PNG options for output image. + * + * By default, PNG output is full colour at 8 bits per pixel. + * + * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel. + * Set `palette` to `true` for slower, indexed PNG output. + * + * For 16 bits per pixel output, convert to `rgb16` via + * {@link /api-colour/#tocolourspace toColourspace}. + * + * @example + * // Convert any input to full colour PNG output + * const data = await sharp(input) + * .png() + * .toBuffer(); + * + * @example + * // Convert any input to indexed PNG output (slower) + * const data = await sharp(input) + * .png({ palette: true }) + * .toBuffer(); + * + * @example + * // Output 16 bits per pixel RGB(A) + * const data = await sharp(input) + * .toColourspace('rgb16') + * .png() + * .toBuffer(); + * + * @param {Object} [options] + * @param {boolean} [options.progressive=false] - use progressive (interlace) scan + * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest) + * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering + * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support + * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true` + * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest), sets `palette` to `true` + * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true` + * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true` + * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true` + * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function png (options) { + if (is.object(options)) { + if (is.defined(options.progressive)) { + this._setBooleanOption('pngProgressive', options.progressive); + } + if (is.defined(options.compressionLevel)) { + if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) { + this.options.pngCompressionLevel = options.compressionLevel; + } else { + throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel); + } + } + if (is.defined(options.adaptiveFiltering)) { + this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering); + } + const colours = options.colours || options.colors; + if (is.defined(colours)) { + if (is.integer(colours) && is.inRange(colours, 2, 256)) { + this.options.pngBitdepth = bitdepthFromColourCount(colours); + } else { + throw is.invalidParameterError('colours', 'integer between 2 and 256', colours); + } + } + if (is.defined(options.palette)) { + this._setBooleanOption('pngPalette', options.palette); + } else if ([options.quality, options.effort, options.colours, options.colors, options.dither].some(is.defined)) { + this._setBooleanOption('pngPalette', true); + } + if (this.options.pngPalette) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) { + this.options.pngQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) { + this.options.pngEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort); + } + } + if (is.defined(options.dither)) { + if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) { + this.options.pngDither = options.dither; + } else { + throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither); + } + } + } + } + return this._updateFormatOut('png', options); +} + +/** + * Use these WebP options for output image. + * + * @example + * // Convert any input to lossless WebP output + * const data = await sharp(input) + * .webp({ lossless: true }) + * .toBuffer(); + * + * @example + * // Optimise the file size of an animated WebP + * const outputWebp = await sharp(inputWebp, { animated: true }) + * .webp({ effort: 6 }) + * .toBuffer(); + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100 + * @param {boolean} [options.lossless=false] - use lossless compression mode + * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode + * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling + * @param {boolean} [options.smartDeblock=false] - auto-adjust the deblocking filter, can improve low contrast edges (slow) + * @param {string} [options.preset='default'] - named preset for preprocessing/filtering, one of: default, photo, picture, drawing, icon, text + * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 6 (slowest) + * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds) + * @param {boolean} [options.minSize=false] - prevent use of animation key frames to minimise file size (slow) + * @param {boolean} [options.mixed=false] - allow mixture of lossy and lossless animation frames (slow) + * @param {boolean} [options.exact=false] - preserve the colour data in transparent pixels + * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function webp (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.webpQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.alphaQuality)) { + if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) { + this.options.webpAlphaQuality = options.alphaQuality; + } else { + throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality); + } + } + if (is.defined(options.lossless)) { + this._setBooleanOption('webpLossless', options.lossless); + } + if (is.defined(options.nearLossless)) { + this._setBooleanOption('webpNearLossless', options.nearLossless); + } + if (is.defined(options.smartSubsample)) { + this._setBooleanOption('webpSmartSubsample', options.smartSubsample); + } + if (is.defined(options.smartDeblock)) { + this._setBooleanOption('webpSmartDeblock', options.smartDeblock); + } + if (is.defined(options.preset)) { + if (is.string(options.preset) && is.inArray(options.preset, ['default', 'photo', 'picture', 'drawing', 'icon', 'text'])) { + this.options.webpPreset = options.preset; + } else { + throw is.invalidParameterError('preset', 'one of: default, photo, picture, drawing, icon, text', options.preset); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 0, 6)) { + this.options.webpEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 0 and 6', options.effort); + } + } + if (is.defined(options.minSize)) { + this._setBooleanOption('webpMinSize', options.minSize); + } + if (is.defined(options.mixed)) { + this._setBooleanOption('webpMixed', options.mixed); + } + if (is.defined(options.exact)) { + this._setBooleanOption('webpExact', options.exact); + } + } + trySetAnimationOptions(options, this.options); + return this._updateFormatOut('webp', options); +} + +/** + * Use these GIF options for the output image. + * + * The first entry in the palette is reserved for transparency. + * + * The palette of the input image will be re-used if possible. + * + * @since 0.30.0 + * + * @example + * // Convert PNG to GIF + * await sharp(pngBuffer) + * .gif() + * .toBuffer(); + * + * @example + * // Convert animated WebP to animated GIF + * await sharp('animated.webp', { animated: true }) + * .toFile('animated.gif'); + * + * @example + * // Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIF + * const out = await sharp('in.gif', { animated: true }) + * .resize({ width: 128, height: 128 }) + * .gif({ dither: 0 }) + * .toBuffer(); + * + * @example + * // Lossy file size reduction of animated GIF + * await sharp('in.gif', { animated: true }) + * .gif({ interFrameMaxError: 8 }) + * .toFile('optim.gif'); + * + * @param {Object} [options] - output options + * @param {boolean} [options.reuse=true] - re-use existing palette, otherwise generate new (slow) + * @param {boolean} [options.progressive=false] - use progressive (interlace) scan + * @param {number} [options.colours=256] - maximum number of palette entries, including transparency, between 2 and 256 + * @param {number} [options.colors=256] - alternative spelling of `options.colours` + * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest) + * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most) + * @param {number} [options.interFrameMaxError=0] - maximum inter-frame error for transparency, between 0 (lossless) and 32 + * @param {number} [options.interPaletteMaxError=3] - maximum inter-palette error for palette reuse, between 0 and 256 + * @param {boolean} [options.keepDuplicateFrames=false] - keep duplicate frames in the output instead of combining them + * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds) + * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function gif (options) { + if (is.object(options)) { + if (is.defined(options.reuse)) { + this._setBooleanOption('gifReuse', options.reuse); + } + if (is.defined(options.progressive)) { + this._setBooleanOption('gifProgressive', options.progressive); + } + const colours = options.colours || options.colors; + if (is.defined(colours)) { + if (is.integer(colours) && is.inRange(colours, 2, 256)) { + this.options.gifBitdepth = bitdepthFromColourCount(colours); + } else { + throw is.invalidParameterError('colours', 'integer between 2 and 256', colours); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) { + this.options.gifEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort); + } + } + if (is.defined(options.dither)) { + if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) { + this.options.gifDither = options.dither; + } else { + throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither); + } + } + if (is.defined(options.interFrameMaxError)) { + if (is.number(options.interFrameMaxError) && is.inRange(options.interFrameMaxError, 0, 32)) { + this.options.gifInterFrameMaxError = options.interFrameMaxError; + } else { + throw is.invalidParameterError('interFrameMaxError', 'number between 0.0 and 32.0', options.interFrameMaxError); + } + } + if (is.defined(options.interPaletteMaxError)) { + if (is.number(options.interPaletteMaxError) && is.inRange(options.interPaletteMaxError, 0, 256)) { + this.options.gifInterPaletteMaxError = options.interPaletteMaxError; + } else { + throw is.invalidParameterError('interPaletteMaxError', 'number between 0.0 and 256.0', options.interPaletteMaxError); + } + } + if (is.defined(options.keepDuplicateFrames)) { + if (is.bool(options.keepDuplicateFrames)) { + this._setBooleanOption('gifKeepDuplicateFrames', options.keepDuplicateFrames); + } else { + throw is.invalidParameterError('keepDuplicateFrames', 'boolean', options.keepDuplicateFrames); + } + } + } + trySetAnimationOptions(options, this.options); + return this._updateFormatOut('gif', options); +} + +/** + * Use these JP2 options for output image. + * + * Requires libvips compiled with support for OpenJPEG. + * The prebuilt binaries do not include this - see + * {@link /install#custom-libvips installing a custom libvips}. + * + * @example + * // Convert any input to lossless JP2 output + * const data = await sharp(input) + * .jp2({ lossless: true }) + * .toBuffer(); + * + * @example + * // Convert any input to very high quality JP2 output + * const data = await sharp(input) + * .jp2({ + * quality: 100, + * chromaSubsampling: '4:4:4' + * }) + * .toBuffer(); + * + * @since 0.29.1 + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {boolean} [options.lossless=false] - use lossless compression mode + * @param {number} [options.tileWidth=512] - horizontal tile size + * @param {number} [options.tileHeight=512] - vertical tile size + * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function jp2 (options) { + /* node:coverage ignore next 41 */ + if (!this.constructor.format.jp2.output.buffer) { + throw errJp2Save(); + } + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.jp2Quality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.lossless)) { + if (is.bool(options.lossless)) { + this.options.jp2Lossless = options.lossless; + } else { + throw is.invalidParameterError('lossless', 'boolean', options.lossless); + } + } + if (is.defined(options.tileWidth)) { + if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) { + this.options.jp2TileWidth = options.tileWidth; + } else { + throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth); + } + } + if (is.defined(options.tileHeight)) { + if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) { + this.options.jp2TileHeight = options.tileHeight; + } else { + throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight); + } + } + if (is.defined(options.chromaSubsampling)) { + if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) { + this.options.jp2ChromaSubsampling = options.chromaSubsampling; + } else { + throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling); + } + } + } + return this._updateFormatOut('jp2', options); +} + +/** + * Set animation options if available. + * @private + * + * @param {Object} [source] - output options + * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds) + * @param {Object} [target] - target object for valid options + * @throws {Error} Invalid options + */ +function trySetAnimationOptions (source, target) { + if (is.object(source) && is.defined(source.loop)) { + if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) { + target.loop = source.loop; + } else { + throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop); + } + } + if (is.object(source) && is.defined(source.delay)) { + // We allow singular values as well + if (is.integer(source.delay) && is.inRange(source.delay, 0, 65535)) { + target.delay = [source.delay]; + } else if ( + Array.isArray(source.delay) && + is.inRange(source.delay.length, 1, 1000000) && + source.delay.every(is.integer) && + source.delay.every(v => is.inRange(v, 0, 65535))) { + target.delay = source.delay; + } else { + throw is.invalidParameterError('delay', 'integer or an array of integers between 0 and 65535', source.delay); + } + } +} + +/** + * Use these TIFF options for output image. + * + * The `density` can be set in pixels/inch via {@link #withmetadata withMetadata} + * instead of providing `xres` and `yres` in pixels/mm. + * + * @example + * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output + * sharp('input.svg') + * .tiff({ + * compression: 'lzw', + * bitdepth: 1 + * }) + * .toFile('1-bpp-output.tiff') + * .then(info => { ... }); + * + * @param {Object} [options] - output options + * @param {number} [options.quality=80] - quality, integer 1-100 + * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format + * @param {string} [options.compression='jpeg'] - compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k + * @param {boolean} [options.bigtiff=false] - use BigTIFF variant (has no effect when compression is none) + * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float + * @param {boolean} [options.pyramid=false] - write an image pyramid + * @param {boolean} [options.tile=false] - write a tiled tiff + * @param {number} [options.tileWidth=256] - horizontal tile size, valid values are integers in the range 1-32768 + * @param {number} [options.tileHeight=256] - vertical tile size, valid values are integers in the range 1-32768 + * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 + * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 + * @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm + * @param {number} [options.bitdepth=0] - reduce bitdepth to 1, 2 or 4 bit + * @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function tiff (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.tiffQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.bitdepth)) { + if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4])) { + this.options.tiffBitdepth = options.bitdepth; + } else { + throw is.invalidParameterError('bitdepth', '1, 2 or 4', options.bitdepth); + } + } + // tiling + if (is.defined(options.tile)) { + this._setBooleanOption('tiffTile', options.tile); + } + if (is.defined(options.tileWidth)) { + if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) { + this.options.tiffTileWidth = options.tileWidth; + } else { + throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth); + } + } + if (is.defined(options.tileHeight)) { + if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) { + this.options.tiffTileHeight = options.tileHeight; + } else { + throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight); + } + } + // miniswhite + if (is.defined(options.miniswhite)) { + this._setBooleanOption('tiffMiniswhite', options.miniswhite); + } + // pyramid + if (is.defined(options.pyramid)) { + this._setBooleanOption('tiffPyramid', options.pyramid); + } + // resolution + if (is.defined(options.xres)) { + if (is.number(options.xres) && is.inRange(options.xres, 0.001, 1000000)) { + this.options.tiffXres = options.xres; + } else { + throw is.invalidParameterError('xres', 'number between 0.001 and 1000000', options.xres); + } + } + if (is.defined(options.yres)) { + if (is.number(options.yres) && is.inRange(options.yres, 0.001, 1000000)) { + this.options.tiffYres = options.yres; + } else { + throw is.invalidParameterError('yres', 'number between 0.001 and 1000000', options.yres); + } + } + // compression + if (is.defined(options.compression)) { + if (is.string(options.compression) && is.inArray(options.compression, ['none', 'jpeg', 'deflate', 'packbits', 'ccittfax4', 'lzw', 'webp', 'zstd', 'jp2k'])) { + this.options.tiffCompression = options.compression; + } else { + throw is.invalidParameterError('compression', 'one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k', options.compression); + } + } + // bigtiff + if (is.defined(options.bigtiff)) { + this._setBooleanOption('tiffBigtiff', options.bigtiff); + } + // predictor + if (is.defined(options.predictor)) { + if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) { + this.options.tiffPredictor = options.predictor; + } else { + throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor); + } + } + // resolutionUnit + if (is.defined(options.resolutionUnit)) { + if (is.string(options.resolutionUnit) && is.inArray(options.resolutionUnit, ['inch', 'cm'])) { + this.options.tiffResolutionUnit = options.resolutionUnit; + } else { + throw is.invalidParameterError('resolutionUnit', 'one of: inch, cm', options.resolutionUnit); + } + } + } + return this._updateFormatOut('tiff', options); +} + +/** + * Use these AVIF options for output image. + * + * AVIF image sequences are not supported. + * + * @example + * const data = await sharp(input) + * .avif({ effort: 2 }) + * .toBuffer(); + * + * @example + * const data = await sharp(input) + * .avif({ lossless: true }) + * .toBuffer(); + * + * @since 0.27.0 + * + * @param {Object} [options] - output options + * @param {number} [options.quality=50] - quality, integer 1-100 + * @param {boolean} [options.lossless=false] - use lossless compression + * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest) + * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling + * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit + * @param {string} [options.tune='auto'] - tune output for a quality metric, one of 'auto' (default), 'iq', 'psnr' or 'ssim' + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function avif (options) { + return this.heif({ ...options, compression: 'av1' }); +} + +/** + * Use these HEIF options for output image. + * + * Support for patent-encumbered HEIC images using `hevc` compression requires the use of a + * globally-installed libvips compiled with support for libheif, libde265 and x265. + * + * @example + * const data = await sharp(input) + * .heif({ compression: 'hevc' }) + * .toBuffer(); + * + * @since 0.23.0 + * + * @param {Object} options - output options + * @param {string} options.compression - compression format: av1, hevc + * @param {number} [options.quality=50] - quality, integer 1-100 + * @param {boolean} [options.lossless=false] - use lossless compression + * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest) + * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling + * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit + * @param {string} [options.tune='auto'] - tune output for a quality metric, one of 'auto' (default), 'iq', 'psnr' or 'ssim' + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function heif (options) { + if (is.object(options)) { + if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) { + this.options.heifCompression = options.compression; + } else { + throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression); + } + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + this.options.heifQuality = options.quality; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } + if (is.defined(options.lossless)) { + if (is.bool(options.lossless)) { + this.options.heifLossless = options.lossless; + } else { + throw is.invalidParameterError('lossless', 'boolean', options.lossless); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) { + this.options.heifEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 0 and 9', options.effort); + } + } + if (is.defined(options.chromaSubsampling)) { + if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) { + this.options.heifChromaSubsampling = options.chromaSubsampling; + } else { + throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling); + } + } + if (is.defined(options.bitdepth)) { + if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) { + this.options.heifBitdepth = options.bitdepth; + } else { + throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth); + } + } + if (is.defined(options.tune)) { + if (is.string(options.tune) && is.inArray(options.tune, ['auto', 'iq', 'psnr', 'ssim'])) { + if (this.options.heifLossless && options.tune === 'iq') { + this.options.heifTune = 'ssim'; + } else { + this.options.heifTune = options.tune; + } + } else { + throw is.invalidParameterError('tune', 'one of: auto, iq, psnr, ssim', options.tune); + } + } + } else { + throw is.invalidParameterError('options', 'Object', options); + } + return this._updateFormatOut('heif', options); +} + +/** + * Use these JPEG-XL (JXL) options for output image. + * + * This feature is experimental, please do not use in production systems. + * + * Requires libvips compiled with support for libjxl. + * The prebuilt binaries do not include this - see + * {@link /install/#custom-libvips installing a custom libvips}. + * + * @since 0.31.3 + * + * @param {Object} [options] - output options + * @param {number} [options.distance=1.0] - maximum encoding error, between 0 (highest quality) and 15 (lowest quality) + * @param {number} [options.quality] - calculate `distance` based on JPEG-like quality, between 1 and 100, overrides distance if specified + * @param {number} [options.decodingTier=0] - target decode speed tier, between 0 (highest quality) and 4 (lowest quality) + * @param {boolean} [options.lossless=false] - use lossless compression + * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 9 (slowest) + * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation + * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds) + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function jxl (options) { + if (is.object(options)) { + if (is.defined(options.quality)) { + if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) { + // https://github.com/libjxl/libjxl/blob/0aeea7f180bafd6893c1db8072dcb67d2aa5b03d/tools/cjxl_main.cc#L640-L644 + this.options.jxlDistance = options.quality >= 30 + ? 0.1 + (100 - options.quality) * 0.09 + : 53 / 3000 * options.quality * options.quality - 23 / 20 * options.quality + 25; + } else { + throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality); + } + } else if (is.defined(options.distance)) { + if (is.number(options.distance) && is.inRange(options.distance, 0, 15)) { + this.options.jxlDistance = options.distance; + } else { + throw is.invalidParameterError('distance', 'number between 0.0 and 15.0', options.distance); + } + } + if (is.defined(options.decodingTier)) { + if (is.integer(options.decodingTier) && is.inRange(options.decodingTier, 0, 4)) { + this.options.jxlDecodingTier = options.decodingTier; + } else { + throw is.invalidParameterError('decodingTier', 'integer between 0 and 4', options.decodingTier); + } + } + if (is.defined(options.lossless)) { + if (is.bool(options.lossless)) { + this.options.jxlLossless = options.lossless; + } else { + throw is.invalidParameterError('lossless', 'boolean', options.lossless); + } + } + if (is.defined(options.effort)) { + if (is.integer(options.effort) && is.inRange(options.effort, 1, 9)) { + this.options.jxlEffort = options.effort; + } else { + throw is.invalidParameterError('effort', 'integer between 1 and 9', options.effort); + } + } + } + trySetAnimationOptions(options, this.options); + return this._updateFormatOut('jxl', options); +} + +/** + * Force output to be raw, uncompressed pixel data. + * Pixel ordering is left-to-right, top-to-bottom, without padding. + * Channel ordering will be RGB or RGBA for non-greyscale colourspaces. + * + * @example + * // Extract raw, unsigned 8-bit RGB pixel data from JPEG input + * const { data, info } = await sharp('input.jpg') + * .raw() + * .toBuffer({ resolveWithObject: true }); + * + * @example + * // Extract alpha channel as raw, unsigned 16-bit pixel data from PNG input + * const data = await sharp('input.png') + * .ensureAlpha() + * .extractChannel(3) + * .toColourspace('b-w') + * .raw({ depth: 'ushort' }) + * .toBuffer(); + * + * @param {Object} [options] - output options + * @param {string} [options.depth='uchar'] - bit depth, one of: char, uchar (default), short, ushort, int, uint, float, complex, double, dpcomplex + * @returns {Sharp} + * @throws {Error} Invalid options + */ +function raw (options) { + if (is.object(options)) { + if (is.defined(options.depth)) { + if (is.string(options.depth) && is.inArray(options.depth, + ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'float', 'complex', 'double', 'dpcomplex'] + )) { + this.options.rawDepth = options.depth; + } else { + throw is.invalidParameterError('depth', 'one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex', options.depth); + } + } + } + return this._updateFormatOut('raw'); +} + +/** + * Use tile-based deep zoom (image pyramid) output. + * + * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions. + * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format. + * + * The container will be set to `zip` when the output is a Buffer or Stream, otherwise it will default to `fs`. + * + * @example + * sharp('input.tiff') + * .png() + * .tile({ + * size: 512 + * }) + * .toFile('output.dz', function(err, info) { + * // output.dzi is the Deep Zoom XML definition + * // output_files contains 512x512 tiles grouped by zoom level + * }); + * + * @example + * const zipFileWithTiles = await sharp(input) + * .tile({ basename: "tiles" }) + * .toBuffer(); + * + * @example + * const iiififier = sharp().tile({ layout: "iiif" }); + * readableStream + * .pipe(iiififier) + * .pipe(writeableStream); + * + * @param {Object} [options] + * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192. + * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192. + * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90. + * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency. + * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout. + * @param {number} [options.skipBlanks=-1] Threshold to skip tile generation. Range is 0-255 for 8-bit images, 0-65535 for 16-bit images. Default is 5 for `google` layout, -1 (no skip) otherwise. + * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file). + * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `iiif3`, `zoomify` or `google`. + * @param {boolean} [options.centre=false] centre image in tile. + * @param {boolean} [options.center=false] alternative spelling of centre. + * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`/`iiif3`, sets the `@id`/`id` attribute of `info.json` + * @param {string} [options.basename] the name of the directory within the zip file when container is `zip`. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function tile (options) { + if (is.object(options)) { + // Size of square tiles, in pixels + if (is.defined(options.size)) { + if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) { + this.options.tileSize = options.size; + } else { + throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size); + } + } + // Overlap of tiles, in pixels + if (is.defined(options.overlap)) { + if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) { + if (options.overlap > this.options.tileSize) { + throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap); + } + this.options.tileOverlap = options.overlap; + } else { + throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap); + } + } + // Container + if (is.defined(options.container)) { + if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) { + this.options.tileContainer = options.container; + } else { + throw is.invalidParameterError('container', 'one of: fs, zip', options.container); + } + } + // Layout + if (is.defined(options.layout)) { + if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'iiif3', 'zoomify'])) { + this.options.tileLayout = options.layout; + } else { + throw is.invalidParameterError('layout', 'one of: dz, google, iiif, iiif3, zoomify', options.layout); + } + } + // Angle of rotation, + if (is.defined(options.angle)) { + if (is.integer(options.angle) && !(options.angle % 90)) { + this.options.tileAngle = options.angle; + } else { + throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle); + } + } + // Background colour + this._setBackgroundColourOption('tileBackground', options.background); + // Depth of tiles + if (is.defined(options.depth)) { + if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) { + this.options.tileDepth = options.depth; + } else { + throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth); + } + } + // Threshold to skip blank tiles + if (is.defined(options.skipBlanks)) { + if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) { + this.options.tileSkipBlanks = options.skipBlanks; + } else { + throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks); + } + } else if (is.defined(options.layout) && options.layout === 'google') { + this.options.tileSkipBlanks = 5; + } + // Center image in tile + const centre = is.bool(options.center) ? options.center : options.centre; + if (is.defined(centre)) { + this._setBooleanOption('tileCentre', centre); + } + // @id attribute for IIIF layout + if (is.defined(options.id)) { + if (is.string(options.id)) { + this.options.tileId = options.id; + } else { + throw is.invalidParameterError('id', 'string', options.id); + } + } + // Basename for zip container + if (is.defined(options.basename)) { + if (is.string(options.basename)) { + this.options.tileBasename = options.basename; + } else { + throw is.invalidParameterError('basename', 'string', options.basename); + } + } + } + // Format + if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) { + this.options.tileFormat = this.options.formatOut; + } else if (this.options.formatOut !== 'input') { + throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut); + } + return this._updateFormatOut('dz'); +} + +/** + * Set a timeout for processing, in seconds. + * Use a value of zero to continue processing indefinitely, the default behaviour. + * + * The clock starts when libvips opens an input image for processing. + * Time spent waiting for a libuv thread to become available is not included. + * + * @example + * // Ensure processing takes no longer than 3 seconds + * try { + * const data = await sharp(input) + * .blur(1000) + * .timeout({ seconds: 3 }) + * .toBuffer(); + * } catch (err) { + * if (err.message.includes('timeout')) { ... } + * } + * + * @since 0.29.2 + * + * @param {Object} options + * @param {number} options.seconds - Number of seconds after which processing will be stopped + * @returns {Sharp} + */ +function timeout (options) { + if (!is.plainObject(options)) { + throw is.invalidParameterError('options', 'object', options); + } + if (is.integer(options.seconds) && is.inRange(options.seconds, 0, 3600)) { + this.options.timeoutSeconds = options.seconds; + } else { + throw is.invalidParameterError('seconds', 'integer between 0 and 3600', options.seconds); + } + return this; +} + +/** + * Update the output format unless options.force is false, + * in which case revert to input format. + * @private + * @param {string} formatOut + * @param {Object} [options] + * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format + * @returns {Sharp} + */ +function _updateFormatOut (formatOut, options) { + if (!(is.object(options) && options.force === false)) { + this.options.formatOut = formatOut; + } + return this; +} + +/** + * Update a boolean attribute of the this.options Object. + * @private + * @param {string} key + * @param {boolean} val + * @throws {Error} Invalid key + */ +function _setBooleanOption (key, val) { + if (is.bool(val)) { + this.options[key] = val; + } else { + throw is.invalidParameterError(key, 'boolean', val); + } +} + +/** + * Called by a WriteableStream to notify us it is ready for data. + * @private + */ +function _read () { + if (!this.options.streamOut) { + this.options.streamOut = true; + const stack = Error(); + this._pipeline(undefined, stack); + } +} + +/** + * Invoke the C++ image processing pipeline + * Supports callback, stream and promise variants + * @private + */ +function _pipeline (callback, stack) { + if (typeof callback === 'function') { + // output=file/buffer + if (this._isStreamInput()) { + // output=file/buffer, input=stream + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, data, info); + } + }); + }); + } else { + // output=file/buffer, input=file/buffer + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + callback(is.nativeError(err, stack)); + } else { + callback(null, data, info); + } + }); + } + return this; + } else if (this.options.streamOut) { + // output=stream + if (this._isStreamInput()) { + // output=stream, input=stream + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + this.emit('error', is.nativeError(err, stack)); + } else { + this.emit('info', info); + this.push(data); + } + this.push(null); + this.on('end', () => this.emit('close')); + }); + }); + } else { + // output=stream, input=file/buffer + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + this.emit('error', is.nativeError(err, stack)); + } else { + this.emit('info', info); + this.push(data); + } + this.push(null); + this.on('end', () => this.emit('close')); + }); + } + return this; + } else { + // output=promise + if (this._isStreamInput()) { + // output=promise, input=stream + return new Promise((resolve, reject) => { + this._whenStreamInFinished(() => { + this._flattenBufferIn(); + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + if (this.options.resolveWithObject) { + resolve({ data, info }); + } else { + resolve(data); + } + } + }); + }); + }); + } else { + // output=promise, input=file/buffer + return new Promise((resolve, reject) => { + sharp.pipeline(this.options, (err, data, info) => { + if (err) { + reject(is.nativeError(err, stack)); + } else { + if (this.options.resolveWithObject) { + resolve({ data, info }); + } else { + resolve(data); + } + } + }); + }); + } + } +} + +/** + * Decorate the Sharp prototype with output-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Object.assign(Sharp.prototype, { + // Public + toFile, + toBuffer, + toUint8Array, + withDensity, + keepExif, + withExif, + withExifMerge, + keepIccProfile, + withIccProfile, + keepGainMap, + withGainMap, + keepXmp, + withXmp, + keepMetadata, + withMetadata, + toFormat, + jpeg, + jp2, + png, + webp, + tiff, + avif, + heif, + jxl, + gif, + raw, + tile, + timeout, + // Private + _updateFormatOut, + _setBooleanOption, + _read, + _pipeline + }); +}; diff --git a/apps/api/.output/node_modules/sharp/dist/resize.cjs b/apps/api/.output/node_modules/sharp/dist/resize.cjs new file mode 100644 index 0000000..733679f --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/resize.cjs @@ -0,0 +1,617 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const is = require('./is.cjs'); + +/** + * Weighting to apply when using contain/cover fit. + * @member + * @private + */ +const gravity = { + center: 0, + centre: 0, + north: 1, + east: 2, + south: 3, + west: 4, + northeast: 5, + southeast: 6, + southwest: 7, + northwest: 8 +}; + +/** + * Position to apply when using contain/cover fit. + * @member + * @private + */ +const position = { + top: 1, + right: 2, + bottom: 3, + left: 4, + 'right top': 5, + 'right bottom': 6, + 'left bottom': 7, + 'left top': 8 +}; + +/** + * How to extend the image. + * @member + * @private + */ +const extendWith = { + background: 'background', + copy: 'copy', + repeat: 'repeat', + mirror: 'mirror' +}; + +/** + * Strategies for automagic cover behaviour. + * @member + * @private + */ +const strategy = { + entropy: 16, + attention: 17 +}; + +/** + * Reduction kernels. + * @member + * @private + */ +const kernel = { + nearest: 'nearest', + linear: 'linear', + cubic: 'cubic', + mitchell: 'mitchell', + lanczos2: 'lanczos2', + lanczos3: 'lanczos3', + mks2013: 'mks2013', + mks2021: 'mks2021' +}; + +/** + * Methods by which an image can be resized to fit the provided dimensions. + * @member + * @private + */ +const fit = { + contain: 'contain', + cover: 'cover', + fill: 'fill', + inside: 'inside', + outside: 'outside' +}; + +/** + * Map external fit property to internal canvas property. + * @member + * @private + */ +const mapFitToCanvas = { + contain: 'embed', + cover: 'crop', + fill: 'ignore_aspect', + inside: 'max', + outside: 'min' +}; + +/** + * @private + */ +function isRotationExpected (options) { + return (options.angle % 360) !== 0 || options.rotationAngle !== 0; +} + +/** + * @private + */ +function isResizeExpected (options) { + return options.width !== -1 || options.height !== -1; +} + +/** + * Resize image to `width`, `height` or `width x height`. + * + * When both a `width` and `height` are provided, the possible methods by which the image should **fit** these are: + * - `cover`: (default) Preserving aspect ratio, attempt to ensure the image covers both provided dimensions by cropping/clipping to fit. + * - `contain`: Preserving aspect ratio, contain within both provided dimensions using "letterboxing" where necessary. + * - `fill`: Ignore the aspect ratio of the input and stretch to both provided dimensions. + * - `inside`: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. + * - `outside`: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. + * + * Some of these values are based on the [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property. + * + * Examples of various values for the fit property when resizing + * + * When using a **fit** of `cover` or `contain`, the default **position** is `centre`. Other options are: + * - `sharp.position`: `top`, `right top`, `right`, `right bottom`, `bottom`, `left bottom`, `left`, `left top`. + * - `sharp.gravity`: `north`, `northeast`, `east`, `southeast`, `south`, `southwest`, `west`, `northwest`, `center` or `centre`. + * - `sharp.strategy`: `cover` only, dynamically crop using either the `entropy` or `attention` strategy. + * + * Some of these values are based on the [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property. + * + * The strategy-based approach initially resizes so one dimension is at its target length + * then repeatedly ranks edge regions, discarding the edge with the lowest score based on the selected strategy. + * - `entropy`: focus on the region with the highest [Shannon entropy](https://en.wikipedia.org/wiki/Entropy_%28information_theory%29). + * - `attention`: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones. + * + * Possible downsizing kernels are: + * - `nearest`: Use [nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). + * - `linear`: Use a [triangle filter](https://en.wikipedia.org/wiki/Triangular_function). + * - `cubic`: Use a [Catmull-Rom spline](https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline). + * - `mitchell`: Use a [Mitchell-Netravali spline](https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf). + * - `lanczos2`: Use a [Lanczos kernel](https://en.wikipedia.org/wiki/Lanczos_resampling#Lanczos_kernel) with `a=2`. + * - `lanczos3`: Use a Lanczos kernel with `a=3` (the default). + * - `mks2013`: Use a [Magic Kernel Sharp](https://johncostella.com/magic/mks.pdf) 2013 kernel, as adopted by Facebook. + * - `mks2021`: Use a Magic Kernel Sharp 2021 kernel, with more accurate (reduced) sharpening than the 2013 version. + * + * When upsampling, these kernels map to `nearest`, `linear` and `cubic` interpolators. + * Downsampling kernels without a matching upsampling interpolator map to `cubic`. + * + * Only one resize can occur per pipeline. + * Previous calls to `resize` in the same pipeline will be ignored. + * + * @example + * sharp(input) + * .resize({ width: 100 }) + * .toBuffer() + * .then(data => { + * // 100 pixels wide, auto-scaled height + * }); + * + * @example + * sharp(input) + * .resize({ height: 100 }) + * .toBuffer() + * .then(data => { + * // 100 pixels high, auto-scaled width + * }); + * + * @example + * sharp(input) + * .resize(200, 300, { + * kernel: sharp.kernel.nearest, + * fit: 'contain', + * position: 'right top', + * background: { r: 255, g: 255, b: 255, alpha: 0.5 } + * }) + * .toFile('output.png') + * .then(() => { + * // output.png is a 200 pixels wide and 300 pixels high image + * // containing a nearest-neighbour scaled version + * // contained within the north-east corner of a semi-transparent white canvas + * }); + * + * @example + * const transformer = sharp() + * .resize({ + * width: 200, + * height: 200, + * fit: sharp.fit.cover, + * position: sharp.strategy.entropy + * }); + * // Read image data from readableStream + * // Write 200px square auto-cropped image data to writableStream + * readableStream + * .pipe(transformer) + * .pipe(writableStream); + * + * @example + * sharp(input) + * .resize(200, 200, { + * fit: sharp.fit.inside, + * withoutEnlargement: true + * }) + * .toFormat('jpeg') + * .toBuffer() + * .then(function(outputBuffer) { + * // outputBuffer contains JPEG image data + * // no wider and no higher than 200 pixels + * // and no larger than the input image + * }); + * + * @example + * sharp(input) + * .resize(200, 200, { + * fit: sharp.fit.outside, + * withoutReduction: true + * }) + * .toFormat('jpeg') + * .toBuffer() + * .then(function(outputBuffer) { + * // outputBuffer contains JPEG image data + * // of at least 200 pixels wide and 200 pixels high while maintaining aspect ratio + * // and no smaller than the input image + * }); + * + * @example + * const scaleByHalf = await sharp(input) + * .metadata() + * .then(({ width }) => sharp(input) + * .resize(Math.round(width * 0.5)) + * .toBuffer() + * ); + * + * @param {number} [width] - How many pixels wide the resultant image should be. Use `null` or `undefined` to auto-scale the width to match the height. + * @param {number} [height] - How many pixels high the resultant image should be. Use `null` or `undefined` to auto-scale the height to match the width. + * @param {Object} [options] + * @param {number} [options.width] - An alternative means of specifying `width`. If both are present this takes priority. + * @param {number} [options.height] - An alternative means of specifying `height`. If both are present this takes priority. + * @param {String} [options.fit='cover'] - How the image should be resized/cropped to fit the target dimension(s), one of `cover`, `contain`, `fill`, `inside` or `outside`. + * @param {String} [options.position='centre'] - A position, gravity or strategy to use when `fit` is `cover` or `contain`. + * @param {String|Object} [options.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour when `fit` is `contain`, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency. + * @param {String} [options.kernel='lanczos3'] - The kernel to use for image reduction and the inferred interpolator to use for upsampling. Use the `fastShrinkOnLoad` option to control kernel vs shrink-on-load. + * @param {Boolean} [options.withoutEnlargement=false] - Do not scale up if the width *or* height are already less than the target dimensions, equivalent to GraphicsMagick's `>` geometry option. This may result in output dimensions smaller than the target dimensions. + * @param {Boolean} [options.withoutReduction=false] - Do not scale down if the width *or* height are already greater than the target dimensions, equivalent to GraphicsMagick's `<` geometry option. This may still result in a crop to reach the target dimensions. + * @param {Boolean} [options.fastShrinkOnLoad=true] - Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern or round-down of an auto-scaled dimension. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function resize (widthOrOptions, height, options) { + if (isResizeExpected(this.options)) { + this.options.debuglog('ignoring previous resize options'); + } + if (this.options.widthPost !== -1) { + this.options.debuglog('operation order will be: extract, resize, extract'); + } + if (is.defined(widthOrOptions)) { + if (is.object(widthOrOptions) && !is.defined(options)) { + options = widthOrOptions; + } else if (is.integer(widthOrOptions) && is.inRange(widthOrOptions, 1, 100000000)) { + this.options.width = widthOrOptions; + } else { + throw is.invalidParameterError('width', 'positive integer between 1 and 100000000', widthOrOptions); + } + } else { + this.options.width = -1; + } + if (is.defined(height)) { + if (is.integer(height) && is.inRange(height, 1, 100000000)) { + this.options.height = height; + } else { + throw is.invalidParameterError('height', 'positive integer between 1 and 100000000', height); + } + } else { + this.options.height = -1; + } + if (is.object(options)) { + // Width + if (is.defined(options.width)) { + if (is.integer(options.width) && is.inRange(options.width, 1, 100000000)) { + this.options.width = options.width; + } else { + throw is.invalidParameterError('width', 'positive integer between 1 and 100000000', options.width); + } + } + // Height + if (is.defined(options.height)) { + if (is.integer(options.height) && is.inRange(options.height, 1, 100000000)) { + this.options.height = options.height; + } else { + throw is.invalidParameterError('height', 'positive integer between 1 and 100000000', options.height); + } + } + // Fit + if (is.defined(options.fit)) { + const canvas = mapFitToCanvas[options.fit]; + if (is.string(canvas)) { + this.options.canvas = canvas; + } else { + throw is.invalidParameterError('fit', 'valid fit', options.fit); + } + } + // Position + if (is.defined(options.position)) { + const pos = is.integer(options.position) + ? options.position + : strategy[options.position] || position[options.position] || gravity[options.position]; + if (is.integer(pos) && (is.inRange(pos, 0, 8) || is.inRange(pos, 16, 17))) { + this.options.position = pos; + } else { + throw is.invalidParameterError('position', 'valid position/gravity/strategy', options.position); + } + } + // Background + this._setBackgroundColourOption('resizeBackground', options.background); + // Kernel + if (is.defined(options.kernel)) { + if (is.string(kernel[options.kernel])) { + this.options.kernel = kernel[options.kernel]; + } else { + throw is.invalidParameterError('kernel', 'valid kernel name', options.kernel); + } + } + // Without enlargement + if (is.defined(options.withoutEnlargement)) { + this._setBooleanOption('withoutEnlargement', options.withoutEnlargement); + } + // Without reduction + if (is.defined(options.withoutReduction)) { + this._setBooleanOption('withoutReduction', options.withoutReduction); + } + // Shrink on load + if (is.defined(options.fastShrinkOnLoad)) { + this._setBooleanOption('fastShrinkOnLoad', options.fastShrinkOnLoad); + } + } + if (isRotationExpected(this.options) && isResizeExpected(this.options)) { + this.options.rotateBefore = true; + } + return this; +} + +/** + * Extend / pad / extrude one or more edges of the image with either + * the provided background colour or pixels derived from the image. + * This operation will always occur after resizing and extraction, if any. + * + * @example + * // Resize to 140 pixels wide, then add 10 transparent pixels + * // to the top, left and right edges and 20 to the bottom edge + * sharp(input) + * .resize(140) + * .extend({ + * top: 10, + * bottom: 20, + * left: 10, + * right: 10, + * background: { r: 0, g: 0, b: 0, alpha: 0 } + * }) + * ... + * +* @example + * // Add a row of 10 red pixels to the bottom + * sharp(input) + * .extend({ + * bottom: 10, + * background: 'red' + * }) + * ... + * + * @example + * // Extrude image by 8 pixels to the right, mirroring existing right hand edge + * sharp(input) + * .extend({ + * right: 8, + * background: 'mirror' + * }) + * ... + * + * @param {(number|Object)} extend - single pixel count to add to all edges or an Object with per-edge counts + * @param {number} [extend.top=0] - number of pixels to add to the top edge, valid values are integers in the range 0-100000000 + * @param {number} [extend.left=0] - number of pixels to add to the left edge, valid values are integers in the range 0-100000000 + * @param {number} [extend.bottom=0] - number of pixels to add to the bottom edge, valid values are integers in the range 0-100000000 + * @param {number} [extend.right=0] - number of pixels to add to the right edge, valid values are integers in the range 0-100000000 + * @param {String} [extend.extendWith='background'] - populate new pixels using this method, one of: background, copy, repeat, mirror. + * @param {String|Object} [extend.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency. + * @returns {Sharp} + * @throws {Error} Invalid parameters +*/ +function extend (extend) { + if (is.integer(extend)) { + if (is.inRange(extend, 1, 100000000)) { + this.options.extendTop = extend; + this.options.extendBottom = extend; + this.options.extendLeft = extend; + this.options.extendRight = extend; + } else { + throw is.invalidParameterError('extend', 'integer between 1 and 100000000', extend); + } + } else if (is.object(extend)) { + if (is.defined(extend.top)) { + if (is.integer(extend.top) && is.inRange(extend.top, 0, 100000000)) { + this.options.extendTop = extend.top; + } else { + throw is.invalidParameterError('top', 'integer between 0 and 100000000', extend.top); + } + } + if (is.defined(extend.bottom)) { + if (is.integer(extend.bottom) && is.inRange(extend.bottom, 0, 100000000)) { + this.options.extendBottom = extend.bottom; + } else { + throw is.invalidParameterError('bottom', 'integer between 0 and 100000000', extend.bottom); + } + } + if (is.defined(extend.left)) { + if (is.integer(extend.left) && is.inRange(extend.left, 0, 100000000)) { + this.options.extendLeft = extend.left; + } else { + throw is.invalidParameterError('left', 'integer between 0 and 100000000', extend.left); + } + } + if (is.defined(extend.right)) { + if (is.integer(extend.right) && is.inRange(extend.right, 0, 100000000)) { + this.options.extendRight = extend.right; + } else { + throw is.invalidParameterError('right', 'integer between 0 and 100000000', extend.right); + } + } + this._setBackgroundColourOption('extendBackground', extend.background); + if (is.defined(extend.extendWith)) { + if (is.string(extendWith[extend.extendWith])) { + this.options.extendWith = extendWith[extend.extendWith]; + } else { + throw is.invalidParameterError('extendWith', 'one of: background, copy, repeat, mirror', extend.extendWith); + } + } + } else { + throw is.invalidParameterError('extend', 'integer or object', extend); + } + return this; +} + +/** + * Extract/crop a region of the image. + * + * - Use `extract` before `resize` for pre-resize extraction. + * - Use `extract` after `resize` for post-resize extraction. + * - Use `extract` twice and `resize` once for extract-then-resize-then-extract in a fixed operation order. + * + * @example + * sharp(input) + * .extract({ left: left, top: top, width: width, height: height }) + * .toFile(output, function(err) { + * // Extract a region of the input image, saving in the same format. + * }); + * @example + * sharp(input) + * .extract({ left: leftOffsetPre, top: topOffsetPre, width: widthPre, height: heightPre }) + * .resize(width, height) + * .extract({ left: leftOffsetPost, top: topOffsetPost, width: widthPost, height: heightPost }) + * .toFile(output, function(err) { + * // Extract a region, resize, then extract from the resized image + * }); + * + * @param {Object} options - describes the region to extract using integral pixel values + * @param {number} options.left - zero-indexed offset from left edge, an integer between 0 and 100000000 + * @param {number} options.top - zero-indexed offset from top edge, an integer between 0 and 100000000 + * @param {number} options.width - width of region to extract, an integer between 0 and 100000000 + * @param {number} options.height - height of region to extract, an integer between 0 and 100000000 + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function extract (options) { + const suffix = isResizeExpected(this.options) || this.options.widthPre !== -1 ? 'Post' : 'Pre'; + if (this.options[`width${suffix}`] !== -1) { + this.options.debuglog('ignoring previous extract options'); + } + ['left', 'top', 'width', 'height'].forEach(function (name) { + const value = options[name]; + if (is.integer(value) && is.inRange(value, 0, 100000000)) { + this.options[name + (name === 'left' || name === 'top' ? 'Offset' : '') + suffix] = value; + } else { + throw is.invalidParameterError(name, 'integer between 0 and 100000000', value); + } + }, this); + // Ensure existing rotation occurs before pre-resize extraction + if (isRotationExpected(this.options) && !isResizeExpected(this.options)) { + if (this.options.widthPre === -1 || this.options.widthPost === -1) { + this.options.rotateBefore = true; + } + } + if (this.options.input.autoOrient) { + this.options.orientBefore = true; + } + return this; +} + +/** + * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel. + * + * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels. + * + * If the result of this operation would trim an image to nothing then no change is made. + * + * Use the `lineArt` and `threshold` options for control over sensitivity. + * + * The `info` response Object will contain `trimOffsetLeft` and `trimOffsetTop` properties. + * + * @example + * // Trim pixels with a colour similar to that of the top-left pixel. + * await sharp(input) + * .trim() + * .toFile(output); + * + * @example + * // Trim pixels with the exact same colour as that of the top-left pixel. + * await sharp(input) + * .trim({ + * threshold: 0 + * }) + * .toFile(output); + * + * @example + * // Assume input is line art and trim only pixels with a similar colour to red. + * const output = await sharp(input) + * .trim({ + * background: "#FF0000", + * lineArt: true + * }) + * .toBuffer(); + * + * @example + * // Trim all "yellow-ish" pixels, being more lenient with the higher threshold. + * const output = await sharp(input) + * .trim({ + * background: "yellow", + * threshold: 42, + * }) + * .toBuffer(); + * + * @example + * // Trim image leaving (up to) a 10 pixel margin around the trimmed content. + * const output = await sharp(input) + * .trim({ + * margin: 10 + * }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {string|Object} [options.background='top-left pixel'] - Background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to that of the top-left pixel. + * @param {number} [options.threshold=10] - Allowed difference from the above colour, a positive number. + * @param {boolean} [options.lineArt=false] - Does the input more closely resemble line art (e.g. vector) rather than being photographic? + * @param {number} [options.margin=0] - Leave a margin around trimmed content, integral number of pixels between 0 and 10000000. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function trim (options) { + this.options.trimThreshold = 10; + if (is.defined(options)) { + if (is.object(options)) { + if (is.defined(options.background)) { + this._setBackgroundColourOption('trimBackground', options.background); + } + if (is.defined(options.threshold)) { + if (is.number(options.threshold) && options.threshold >= 0) { + this.options.trimThreshold = options.threshold; + } else { + throw is.invalidParameterError('threshold', 'positive number', options.threshold); + } + } + if (is.defined(options.lineArt)) { + this._setBooleanOption('trimLineArt', options.lineArt); + } + if (is.defined(options.margin)) { + if (is.integer(options.margin) && is.inRange(options.margin, 0, 10000000)) { + this.options.trimMargin = options.margin; + } else { + throw is.invalidParameterError('margin', 'integer between 0 and 10000000', options.margin); + } + } + } else { + throw is.invalidParameterError('trim', 'object', options); + } + } + if (isRotationExpected(this.options)) { + this.options.rotateBefore = true; + } + return this; +} + +/** + * Decorate the Sharp prototype with resize-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Object.assign(Sharp.prototype, { + resize, + extend, + extract, + trim + }); + // Class attributes + Sharp.gravity = gravity; + Sharp.strategy = strategy; + Sharp.kernel = kernel; + Sharp.fit = fit; + Sharp.position = position; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/resize.mjs b/apps/api/.output/node_modules/sharp/dist/resize.mjs new file mode 100644 index 0000000..603b4f2 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/resize.mjs @@ -0,0 +1,617 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import is from './is.mjs'; + +/** + * Weighting to apply when using contain/cover fit. + * @member + * @private + */ +const gravity = { + center: 0, + centre: 0, + north: 1, + east: 2, + south: 3, + west: 4, + northeast: 5, + southeast: 6, + southwest: 7, + northwest: 8 +}; + +/** + * Position to apply when using contain/cover fit. + * @member + * @private + */ +const position = { + top: 1, + right: 2, + bottom: 3, + left: 4, + 'right top': 5, + 'right bottom': 6, + 'left bottom': 7, + 'left top': 8 +}; + +/** + * How to extend the image. + * @member + * @private + */ +const extendWith = { + background: 'background', + copy: 'copy', + repeat: 'repeat', + mirror: 'mirror' +}; + +/** + * Strategies for automagic cover behaviour. + * @member + * @private + */ +const strategy = { + entropy: 16, + attention: 17 +}; + +/** + * Reduction kernels. + * @member + * @private + */ +const kernel = { + nearest: 'nearest', + linear: 'linear', + cubic: 'cubic', + mitchell: 'mitchell', + lanczos2: 'lanczos2', + lanczos3: 'lanczos3', + mks2013: 'mks2013', + mks2021: 'mks2021' +}; + +/** + * Methods by which an image can be resized to fit the provided dimensions. + * @member + * @private + */ +const fit = { + contain: 'contain', + cover: 'cover', + fill: 'fill', + inside: 'inside', + outside: 'outside' +}; + +/** + * Map external fit property to internal canvas property. + * @member + * @private + */ +const mapFitToCanvas = { + contain: 'embed', + cover: 'crop', + fill: 'ignore_aspect', + inside: 'max', + outside: 'min' +}; + +/** + * @private + */ +function isRotationExpected (options) { + return (options.angle % 360) !== 0 || options.rotationAngle !== 0; +} + +/** + * @private + */ +function isResizeExpected (options) { + return options.width !== -1 || options.height !== -1; +} + +/** + * Resize image to `width`, `height` or `width x height`. + * + * When both a `width` and `height` are provided, the possible methods by which the image should **fit** these are: + * - `cover`: (default) Preserving aspect ratio, attempt to ensure the image covers both provided dimensions by cropping/clipping to fit. + * - `contain`: Preserving aspect ratio, contain within both provided dimensions using "letterboxing" where necessary. + * - `fill`: Ignore the aspect ratio of the input and stretch to both provided dimensions. + * - `inside`: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. + * - `outside`: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. + * + * Some of these values are based on the [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property. + * + * Examples of various values for the fit property when resizing + * + * When using a **fit** of `cover` or `contain`, the default **position** is `centre`. Other options are: + * - `sharp.position`: `top`, `right top`, `right`, `right bottom`, `bottom`, `left bottom`, `left`, `left top`. + * - `sharp.gravity`: `north`, `northeast`, `east`, `southeast`, `south`, `southwest`, `west`, `northwest`, `center` or `centre`. + * - `sharp.strategy`: `cover` only, dynamically crop using either the `entropy` or `attention` strategy. + * + * Some of these values are based on the [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property. + * + * The strategy-based approach initially resizes so one dimension is at its target length + * then repeatedly ranks edge regions, discarding the edge with the lowest score based on the selected strategy. + * - `entropy`: focus on the region with the highest [Shannon entropy](https://en.wikipedia.org/wiki/Entropy_%28information_theory%29). + * - `attention`: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones. + * + * Possible downsizing kernels are: + * - `nearest`: Use [nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). + * - `linear`: Use a [triangle filter](https://en.wikipedia.org/wiki/Triangular_function). + * - `cubic`: Use a [Catmull-Rom spline](https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline). + * - `mitchell`: Use a [Mitchell-Netravali spline](https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf). + * - `lanczos2`: Use a [Lanczos kernel](https://en.wikipedia.org/wiki/Lanczos_resampling#Lanczos_kernel) with `a=2`. + * - `lanczos3`: Use a Lanczos kernel with `a=3` (the default). + * - `mks2013`: Use a [Magic Kernel Sharp](https://johncostella.com/magic/mks.pdf) 2013 kernel, as adopted by Facebook. + * - `mks2021`: Use a Magic Kernel Sharp 2021 kernel, with more accurate (reduced) sharpening than the 2013 version. + * + * When upsampling, these kernels map to `nearest`, `linear` and `cubic` interpolators. + * Downsampling kernels without a matching upsampling interpolator map to `cubic`. + * + * Only one resize can occur per pipeline. + * Previous calls to `resize` in the same pipeline will be ignored. + * + * @example + * sharp(input) + * .resize({ width: 100 }) + * .toBuffer() + * .then(data => { + * // 100 pixels wide, auto-scaled height + * }); + * + * @example + * sharp(input) + * .resize({ height: 100 }) + * .toBuffer() + * .then(data => { + * // 100 pixels high, auto-scaled width + * }); + * + * @example + * sharp(input) + * .resize(200, 300, { + * kernel: sharp.kernel.nearest, + * fit: 'contain', + * position: 'right top', + * background: { r: 255, g: 255, b: 255, alpha: 0.5 } + * }) + * .toFile('output.png') + * .then(() => { + * // output.png is a 200 pixels wide and 300 pixels high image + * // containing a nearest-neighbour scaled version + * // contained within the north-east corner of a semi-transparent white canvas + * }); + * + * @example + * const transformer = sharp() + * .resize({ + * width: 200, + * height: 200, + * fit: sharp.fit.cover, + * position: sharp.strategy.entropy + * }); + * // Read image data from readableStream + * // Write 200px square auto-cropped image data to writableStream + * readableStream + * .pipe(transformer) + * .pipe(writableStream); + * + * @example + * sharp(input) + * .resize(200, 200, { + * fit: sharp.fit.inside, + * withoutEnlargement: true + * }) + * .toFormat('jpeg') + * .toBuffer() + * .then(function(outputBuffer) { + * // outputBuffer contains JPEG image data + * // no wider and no higher than 200 pixels + * // and no larger than the input image + * }); + * + * @example + * sharp(input) + * .resize(200, 200, { + * fit: sharp.fit.outside, + * withoutReduction: true + * }) + * .toFormat('jpeg') + * .toBuffer() + * .then(function(outputBuffer) { + * // outputBuffer contains JPEG image data + * // of at least 200 pixels wide and 200 pixels high while maintaining aspect ratio + * // and no smaller than the input image + * }); + * + * @example + * const scaleByHalf = await sharp(input) + * .metadata() + * .then(({ width }) => sharp(input) + * .resize(Math.round(width * 0.5)) + * .toBuffer() + * ); + * + * @param {number} [width] - How many pixels wide the resultant image should be. Use `null` or `undefined` to auto-scale the width to match the height. + * @param {number} [height] - How many pixels high the resultant image should be. Use `null` or `undefined` to auto-scale the height to match the width. + * @param {Object} [options] + * @param {number} [options.width] - An alternative means of specifying `width`. If both are present this takes priority. + * @param {number} [options.height] - An alternative means of specifying `height`. If both are present this takes priority. + * @param {String} [options.fit='cover'] - How the image should be resized/cropped to fit the target dimension(s), one of `cover`, `contain`, `fill`, `inside` or `outside`. + * @param {String} [options.position='centre'] - A position, gravity or strategy to use when `fit` is `cover` or `contain`. + * @param {String|Object} [options.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour when `fit` is `contain`, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency. + * @param {String} [options.kernel='lanczos3'] - The kernel to use for image reduction and the inferred interpolator to use for upsampling. Use the `fastShrinkOnLoad` option to control kernel vs shrink-on-load. + * @param {Boolean} [options.withoutEnlargement=false] - Do not scale up if the width *or* height are already less than the target dimensions, equivalent to GraphicsMagick's `>` geometry option. This may result in output dimensions smaller than the target dimensions. + * @param {Boolean} [options.withoutReduction=false] - Do not scale down if the width *or* height are already greater than the target dimensions, equivalent to GraphicsMagick's `<` geometry option. This may still result in a crop to reach the target dimensions. + * @param {Boolean} [options.fastShrinkOnLoad=true] - Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern or round-down of an auto-scaled dimension. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function resize (widthOrOptions, height, options) { + if (isResizeExpected(this.options)) { + this.options.debuglog('ignoring previous resize options'); + } + if (this.options.widthPost !== -1) { + this.options.debuglog('operation order will be: extract, resize, extract'); + } + if (is.defined(widthOrOptions)) { + if (is.object(widthOrOptions) && !is.defined(options)) { + options = widthOrOptions; + } else if (is.integer(widthOrOptions) && is.inRange(widthOrOptions, 1, 100000000)) { + this.options.width = widthOrOptions; + } else { + throw is.invalidParameterError('width', 'positive integer between 1 and 100000000', widthOrOptions); + } + } else { + this.options.width = -1; + } + if (is.defined(height)) { + if (is.integer(height) && is.inRange(height, 1, 100000000)) { + this.options.height = height; + } else { + throw is.invalidParameterError('height', 'positive integer between 1 and 100000000', height); + } + } else { + this.options.height = -1; + } + if (is.object(options)) { + // Width + if (is.defined(options.width)) { + if (is.integer(options.width) && is.inRange(options.width, 1, 100000000)) { + this.options.width = options.width; + } else { + throw is.invalidParameterError('width', 'positive integer between 1 and 100000000', options.width); + } + } + // Height + if (is.defined(options.height)) { + if (is.integer(options.height) && is.inRange(options.height, 1, 100000000)) { + this.options.height = options.height; + } else { + throw is.invalidParameterError('height', 'positive integer between 1 and 100000000', options.height); + } + } + // Fit + if (is.defined(options.fit)) { + const canvas = mapFitToCanvas[options.fit]; + if (is.string(canvas)) { + this.options.canvas = canvas; + } else { + throw is.invalidParameterError('fit', 'valid fit', options.fit); + } + } + // Position + if (is.defined(options.position)) { + const pos = is.integer(options.position) + ? options.position + : strategy[options.position] || position[options.position] || gravity[options.position]; + if (is.integer(pos) && (is.inRange(pos, 0, 8) || is.inRange(pos, 16, 17))) { + this.options.position = pos; + } else { + throw is.invalidParameterError('position', 'valid position/gravity/strategy', options.position); + } + } + // Background + this._setBackgroundColourOption('resizeBackground', options.background); + // Kernel + if (is.defined(options.kernel)) { + if (is.string(kernel[options.kernel])) { + this.options.kernel = kernel[options.kernel]; + } else { + throw is.invalidParameterError('kernel', 'valid kernel name', options.kernel); + } + } + // Without enlargement + if (is.defined(options.withoutEnlargement)) { + this._setBooleanOption('withoutEnlargement', options.withoutEnlargement); + } + // Without reduction + if (is.defined(options.withoutReduction)) { + this._setBooleanOption('withoutReduction', options.withoutReduction); + } + // Shrink on load + if (is.defined(options.fastShrinkOnLoad)) { + this._setBooleanOption('fastShrinkOnLoad', options.fastShrinkOnLoad); + } + } + if (isRotationExpected(this.options) && isResizeExpected(this.options)) { + this.options.rotateBefore = true; + } + return this; +} + +/** + * Extend / pad / extrude one or more edges of the image with either + * the provided background colour or pixels derived from the image. + * This operation will always occur after resizing and extraction, if any. + * + * @example + * // Resize to 140 pixels wide, then add 10 transparent pixels + * // to the top, left and right edges and 20 to the bottom edge + * sharp(input) + * .resize(140) + * .extend({ + * top: 10, + * bottom: 20, + * left: 10, + * right: 10, + * background: { r: 0, g: 0, b: 0, alpha: 0 } + * }) + * ... + * +* @example + * // Add a row of 10 red pixels to the bottom + * sharp(input) + * .extend({ + * bottom: 10, + * background: 'red' + * }) + * ... + * + * @example + * // Extrude image by 8 pixels to the right, mirroring existing right hand edge + * sharp(input) + * .extend({ + * right: 8, + * background: 'mirror' + * }) + * ... + * + * @param {(number|Object)} extend - single pixel count to add to all edges or an Object with per-edge counts + * @param {number} [extend.top=0] - number of pixels to add to the top edge, valid values are integers in the range 0-100000000 + * @param {number} [extend.left=0] - number of pixels to add to the left edge, valid values are integers in the range 0-100000000 + * @param {number} [extend.bottom=0] - number of pixels to add to the bottom edge, valid values are integers in the range 0-100000000 + * @param {number} [extend.right=0] - number of pixels to add to the right edge, valid values are integers in the range 0-100000000 + * @param {String} [extend.extendWith='background'] - populate new pixels using this method, one of: background, copy, repeat, mirror. + * @param {String|Object} [extend.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency. + * @returns {Sharp} + * @throws {Error} Invalid parameters +*/ +function extend (extend) { + if (is.integer(extend)) { + if (is.inRange(extend, 1, 100000000)) { + this.options.extendTop = extend; + this.options.extendBottom = extend; + this.options.extendLeft = extend; + this.options.extendRight = extend; + } else { + throw is.invalidParameterError('extend', 'integer between 1 and 100000000', extend); + } + } else if (is.object(extend)) { + if (is.defined(extend.top)) { + if (is.integer(extend.top) && is.inRange(extend.top, 0, 100000000)) { + this.options.extendTop = extend.top; + } else { + throw is.invalidParameterError('top', 'integer between 0 and 100000000', extend.top); + } + } + if (is.defined(extend.bottom)) { + if (is.integer(extend.bottom) && is.inRange(extend.bottom, 0, 100000000)) { + this.options.extendBottom = extend.bottom; + } else { + throw is.invalidParameterError('bottom', 'integer between 0 and 100000000', extend.bottom); + } + } + if (is.defined(extend.left)) { + if (is.integer(extend.left) && is.inRange(extend.left, 0, 100000000)) { + this.options.extendLeft = extend.left; + } else { + throw is.invalidParameterError('left', 'integer between 0 and 100000000', extend.left); + } + } + if (is.defined(extend.right)) { + if (is.integer(extend.right) && is.inRange(extend.right, 0, 100000000)) { + this.options.extendRight = extend.right; + } else { + throw is.invalidParameterError('right', 'integer between 0 and 100000000', extend.right); + } + } + this._setBackgroundColourOption('extendBackground', extend.background); + if (is.defined(extend.extendWith)) { + if (is.string(extendWith[extend.extendWith])) { + this.options.extendWith = extendWith[extend.extendWith]; + } else { + throw is.invalidParameterError('extendWith', 'one of: background, copy, repeat, mirror', extend.extendWith); + } + } + } else { + throw is.invalidParameterError('extend', 'integer or object', extend); + } + return this; +} + +/** + * Extract/crop a region of the image. + * + * - Use `extract` before `resize` for pre-resize extraction. + * - Use `extract` after `resize` for post-resize extraction. + * - Use `extract` twice and `resize` once for extract-then-resize-then-extract in a fixed operation order. + * + * @example + * sharp(input) + * .extract({ left: left, top: top, width: width, height: height }) + * .toFile(output, function(err) { + * // Extract a region of the input image, saving in the same format. + * }); + * @example + * sharp(input) + * .extract({ left: leftOffsetPre, top: topOffsetPre, width: widthPre, height: heightPre }) + * .resize(width, height) + * .extract({ left: leftOffsetPost, top: topOffsetPost, width: widthPost, height: heightPost }) + * .toFile(output, function(err) { + * // Extract a region, resize, then extract from the resized image + * }); + * + * @param {Object} options - describes the region to extract using integral pixel values + * @param {number} options.left - zero-indexed offset from left edge, an integer between 0 and 100000000 + * @param {number} options.top - zero-indexed offset from top edge, an integer between 0 and 100000000 + * @param {number} options.width - width of region to extract, an integer between 0 and 100000000 + * @param {number} options.height - height of region to extract, an integer between 0 and 100000000 + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function extract (options) { + const suffix = isResizeExpected(this.options) || this.options.widthPre !== -1 ? 'Post' : 'Pre'; + if (this.options[`width${suffix}`] !== -1) { + this.options.debuglog('ignoring previous extract options'); + } + ['left', 'top', 'width', 'height'].forEach(function (name) { + const value = options[name]; + if (is.integer(value) && is.inRange(value, 0, 100000000)) { + this.options[name + (name === 'left' || name === 'top' ? 'Offset' : '') + suffix] = value; + } else { + throw is.invalidParameterError(name, 'integer between 0 and 100000000', value); + } + }, this); + // Ensure existing rotation occurs before pre-resize extraction + if (isRotationExpected(this.options) && !isResizeExpected(this.options)) { + if (this.options.widthPre === -1 || this.options.widthPost === -1) { + this.options.rotateBefore = true; + } + } + if (this.options.input.autoOrient) { + this.options.orientBefore = true; + } + return this; +} + +/** + * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel. + * + * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels. + * + * If the result of this operation would trim an image to nothing then no change is made. + * + * Use the `lineArt` and `threshold` options for control over sensitivity. + * + * The `info` response Object will contain `trimOffsetLeft` and `trimOffsetTop` properties. + * + * @example + * // Trim pixels with a colour similar to that of the top-left pixel. + * await sharp(input) + * .trim() + * .toFile(output); + * + * @example + * // Trim pixels with the exact same colour as that of the top-left pixel. + * await sharp(input) + * .trim({ + * threshold: 0 + * }) + * .toFile(output); + * + * @example + * // Assume input is line art and trim only pixels with a similar colour to red. + * const output = await sharp(input) + * .trim({ + * background: "#FF0000", + * lineArt: true + * }) + * .toBuffer(); + * + * @example + * // Trim all "yellow-ish" pixels, being more lenient with the higher threshold. + * const output = await sharp(input) + * .trim({ + * background: "yellow", + * threshold: 42, + * }) + * .toBuffer(); + * + * @example + * // Trim image leaving (up to) a 10 pixel margin around the trimmed content. + * const output = await sharp(input) + * .trim({ + * margin: 10 + * }) + * .toBuffer(); + * + * @param {Object} [options] + * @param {string|Object} [options.background='top-left pixel'] - Background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to that of the top-left pixel. + * @param {number} [options.threshold=10] - Allowed difference from the above colour, a positive number. + * @param {boolean} [options.lineArt=false] - Does the input more closely resemble line art (e.g. vector) rather than being photographic? + * @param {number} [options.margin=0] - Leave a margin around trimmed content, integral number of pixels between 0 and 10000000. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ +function trim (options) { + this.options.trimThreshold = 10; + if (is.defined(options)) { + if (is.object(options)) { + if (is.defined(options.background)) { + this._setBackgroundColourOption('trimBackground', options.background); + } + if (is.defined(options.threshold)) { + if (is.number(options.threshold) && options.threshold >= 0) { + this.options.trimThreshold = options.threshold; + } else { + throw is.invalidParameterError('threshold', 'positive number', options.threshold); + } + } + if (is.defined(options.lineArt)) { + this._setBooleanOption('trimLineArt', options.lineArt); + } + if (is.defined(options.margin)) { + if (is.integer(options.margin) && is.inRange(options.margin, 0, 10000000)) { + this.options.trimMargin = options.margin; + } else { + throw is.invalidParameterError('margin', 'integer between 0 and 10000000', options.margin); + } + } + } else { + throw is.invalidParameterError('trim', 'object', options); + } + } + if (isRotationExpected(this.options)) { + this.options.rotateBefore = true; + } + return this; +} + +/** + * Decorate the Sharp prototype with resize-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Object.assign(Sharp.prototype, { + resize, + extend, + extract, + trim + }); + // Class attributes + Sharp.gravity = gravity; + Sharp.strategy = strategy; + Sharp.kernel = kernel; + Sharp.fit = fit; + Sharp.position = position; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/sharp.cjs b/apps/api/.output/node_modules/sharp/dist/sharp.cjs new file mode 100644 index 0000000..bea6c6a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/sharp.cjs @@ -0,0 +1,174 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +// Inspects the runtime environment and exports the relevant sharp.node binary + + +const { familySync, versionSync } = require("detect-libc"); + +const libvips = require("./libvips.cjs"); +const pkg = require('../package.json'); + + +const { version } = pkg; + +const { runtimePlatformArch, isUnsupportedNodeRuntime, prebuiltPlatforms, minimumLibvipsVersion } = libvips; +const runtimePlatform = runtimePlatformArch(); + +/* node:coverage disable */ + +let sharp; +const errors = []; +try { + sharp = require(`../src/build/Release/sharp-${runtimePlatform}-${version}.node`); +} catch (err) { + errors.push(err); +} +if (!sharp) { + try { + sharp = require(`../src/build/Release/sharp-wasm32-${version}.node`); + } catch (err) { + errors.push(err); + } +} +if (!sharp) { + try { + switch (runtimePlatform) { + case "darwin-arm64": + sharp = require("@img/sharp-darwin-arm64/sharp.node"); + break; + case "darwin-x64": + sharp = require("@img/sharp-darwin-x64/sharp.node"); + break; + case "linux-arm": + sharp = require("@img/sharp-linux-arm/sharp.node"); + break; + case "linux-arm64": + sharp = require("@img/sharp-linux-arm64/sharp.node"); + break; + case "linux-ppc64": + sharp = require("@img/sharp-linux-ppc64/sharp.node"); + break; + case "linux-riscv64": + sharp = require("@img/sharp-linux-riscv64/sharp.node"); + break; + case "linux-s390x": + sharp = require("@img/sharp-linux-s390x/sharp.node"); + break; + case "linux-x64": + sharp = require("@img/sharp-linux-x64/sharp.node"); + break; + case "linuxmusl-arm64": + sharp = require("@img/sharp-linuxmusl-arm64/sharp.node"); + break; + case "linuxmusl-x64": + sharp = require("@img/sharp-linuxmusl-x64/sharp.node"); + break; + case "win32-arm64": + sharp = require("@img/sharp-win32-arm64/sharp.node"); + break; + case "win32-ia32": + sharp = require("@img/sharp-win32-ia32/sharp.node"); + break; + case "win32-x64": + sharp = require("@img/sharp-win32-x64/sharp.node"); + break; + case "freebsd-arm64": + case "freebsd-x64": + sharp = require("@img/sharp-freebsd-wasm32/sharp.node"); + break; + case "linux-wasm32": + sharp = require("@img/sharp-webcontainers-wasm32/sharp.node"); + break; + } + if (sharp && ["linux-x64", "linuxmusl-x64"].includes(runtimePlatform) && !sharp._isUsingX64V2()) { + const err = new Error("Prebuilt binaries for Linux x64 require v2 microarchitecture"); + err.code = "Unsupported CPU"; + errors.push(err); + sharp = null; + } + if (sharp && process.versions.electron && runtimePlatform.startsWith("linux")) { + process.emitWarning( + "Binaries provided by Electron for use on Linux may be incompatible with sharp - see https://sharp.pixelplumbing.com/install#electron-and-linux", + { code: "SharpElectronLinux" } + ); + } + } catch (err) { + errors.push(err); + } +} +if (!sharp) { + try { + sharp = require("@img/sharp-wasm32/sharp.node"); + } catch (err) { + errors.push(err); + } +} + +if (!sharp) { + const [isLinux, isMacOs, isWindows] = ["linux", "darwin", "win32"].map((os) => runtimePlatform.startsWith(os)); + + const help = [`Could not load the "sharp" module using the ${runtimePlatform} runtime`]; + errors.forEach((err) => { + if (!err.code?.endsWith("MODULE_NOT_FOUND")) { + help.push(err.code ? `${err.code}: ${err.message}` : err.message); + } + }); + const messages = errors.map((err) => err.message).join(" "); + help.push("Possible solutions:"); + // Common error messages + if (isUnsupportedNodeRuntime()) { + const { found, expected } = isUnsupportedNodeRuntime(); + help.push("- Please upgrade Node.js:", ` Found ${found}`, ` Requires ${expected}`); + } else if (prebuiltPlatforms.includes(runtimePlatform) && !/libstdc\+\+\.so/.test(messages)) { + const [os, cpu] = runtimePlatform.split("-"); + const libc = os.endsWith("musl") ? " --libc=musl" : ""; + help.push( + "- Ensure optional dependencies can be installed:", + " npm install --include=optional sharp", + "- Ensure your package manager supports multi-platform installation:", + " See https://sharp.pixelplumbing.com/install#cross-platform", + "- Add platform-specific dependencies:", + ` npm install --os=${os.replace("musl", "")}${libc} --cpu=${cpu} sharp`, + ); + } else { + help.push( + `- Manually install libvips >= ${minimumLibvipsVersion}`, + " See https://sharp.pixelplumbing.com/install#building-from-source", + "- Add WebAssembly-based dependencies:", + " npm install sharp @img/sharp-wasm32", + ); + } + if (isLinux && /(symbol not found|CXXABI_)/i.test(messages)) { + try { + const { config } = require(`@img/sharp-libvips-${runtimePlatform}/package`); + const libcFound = `${familySync()} ${versionSync()}`; + const libcRequires = `${config.musl ? "musl" : "glibc"} ${config.musl || config.glibc}`; + help.push("- Update your OS:", ` Found ${libcFound}`, ` Requires ${libcRequires}`); + } catch (_errEngines) {} + } + if (isLinux && /\/snap\/core[0-9]{2}/.test(messages)) { + help.push("- Remove the Node.js Snap, which does not support native modules", " snap remove node"); + } + if (isMacOs && /Incompatible library version/.test(messages)) { + help.push("- Update Homebrew:", " brew update && brew upgrade vips"); + } + if (errors.some((err) => err.code === "ERR_DLOPEN_DISABLED")) { + help.push("- Run Node.js without using the --no-addons flag"); + } + // Link to installation docs + if (isWindows && /The specified procedure could not be found/.test(messages)) { + help.push( + "- Using the canvas package on Windows?", + " See https://sharp.pixelplumbing.com/install#canvas-and-windows", + "- Check for outdated versions of sharp in the dependency tree:", + " npm ls sharp", + ); + } + help.push("- Consult the installation documentation:", " See https://sharp.pixelplumbing.com/install"); + throw new Error(help.join("\n")); +} + +module.exports = sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/sharp.mjs b/apps/api/.output/node_modules/sharp/dist/sharp.mjs new file mode 100644 index 0000000..df4acb4 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/sharp.mjs @@ -0,0 +1,174 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +// Inspects the runtime environment and exports the relevant sharp.node binary + +import { createRequire } from "node:module" +import { familySync, versionSync } from "detect-libc"; + +import libvips from "./libvips.mjs"; +import pkg from '../package.json' with { type: 'json' }; + +const require = createRequire(import.meta.url); +const { version } = pkg; + +const { runtimePlatformArch, isUnsupportedNodeRuntime, prebuiltPlatforms, minimumLibvipsVersion } = libvips; +const runtimePlatform = runtimePlatformArch(); + +/* node:coverage disable */ + +let sharp; +const errors = []; +try { + sharp = require(`../src/build/Release/sharp-${runtimePlatform}-${version}.node`); +} catch (err) { + errors.push(err); +} +if (!sharp) { + try { + sharp = require(`../src/build/Release/sharp-wasm32-${version}.node`); + } catch (err) { + errors.push(err); + } +} +if (!sharp) { + try { + switch (runtimePlatform) { + case "darwin-arm64": + sharp = require("@img/sharp-darwin-arm64/sharp.node"); + break; + case "darwin-x64": + sharp = require("@img/sharp-darwin-x64/sharp.node"); + break; + case "linux-arm": + sharp = require("@img/sharp-linux-arm/sharp.node"); + break; + case "linux-arm64": + sharp = require("@img/sharp-linux-arm64/sharp.node"); + break; + case "linux-ppc64": + sharp = require("@img/sharp-linux-ppc64/sharp.node"); + break; + case "linux-riscv64": + sharp = require("@img/sharp-linux-riscv64/sharp.node"); + break; + case "linux-s390x": + sharp = require("@img/sharp-linux-s390x/sharp.node"); + break; + case "linux-x64": + sharp = require("@img/sharp-linux-x64/sharp.node"); + break; + case "linuxmusl-arm64": + sharp = require("@img/sharp-linuxmusl-arm64/sharp.node"); + break; + case "linuxmusl-x64": + sharp = require("@img/sharp-linuxmusl-x64/sharp.node"); + break; + case "win32-arm64": + sharp = require("@img/sharp-win32-arm64/sharp.node"); + break; + case "win32-ia32": + sharp = require("@img/sharp-win32-ia32/sharp.node"); + break; + case "win32-x64": + sharp = require("@img/sharp-win32-x64/sharp.node"); + break; + case "freebsd-arm64": + case "freebsd-x64": + sharp = require("@img/sharp-freebsd-wasm32/sharp.node"); + break; + case "linux-wasm32": + sharp = require("@img/sharp-webcontainers-wasm32/sharp.node"); + break; + } + if (sharp && ["linux-x64", "linuxmusl-x64"].includes(runtimePlatform) && !sharp._isUsingX64V2()) { + const err = new Error("Prebuilt binaries for Linux x64 require v2 microarchitecture"); + err.code = "Unsupported CPU"; + errors.push(err); + sharp = null; + } + if (sharp && process.versions.electron && runtimePlatform.startsWith("linux")) { + process.emitWarning( + "Binaries provided by Electron for use on Linux may be incompatible with sharp - see https://sharp.pixelplumbing.com/install#electron-and-linux", + { code: "SharpElectronLinux" } + ); + } + } catch (err) { + errors.push(err); + } +} +if (!sharp) { + try { + sharp = require("@img/sharp-wasm32/sharp.node"); + } catch (err) { + errors.push(err); + } +} + +if (!sharp) { + const [isLinux, isMacOs, isWindows] = ["linux", "darwin", "win32"].map((os) => runtimePlatform.startsWith(os)); + + const help = [`Could not load the "sharp" module using the ${runtimePlatform} runtime`]; + errors.forEach((err) => { + if (!err.code?.endsWith("MODULE_NOT_FOUND")) { + help.push(err.code ? `${err.code}: ${err.message}` : err.message); + } + }); + const messages = errors.map((err) => err.message).join(" "); + help.push("Possible solutions:"); + // Common error messages + if (isUnsupportedNodeRuntime()) { + const { found, expected } = isUnsupportedNodeRuntime(); + help.push("- Please upgrade Node.js:", ` Found ${found}`, ` Requires ${expected}`); + } else if (prebuiltPlatforms.includes(runtimePlatform) && !/libstdc\+\+\.so/.test(messages)) { + const [os, cpu] = runtimePlatform.split("-"); + const libc = os.endsWith("musl") ? " --libc=musl" : ""; + help.push( + "- Ensure optional dependencies can be installed:", + " npm install --include=optional sharp", + "- Ensure your package manager supports multi-platform installation:", + " See https://sharp.pixelplumbing.com/install#cross-platform", + "- Add platform-specific dependencies:", + ` npm install --os=${os.replace("musl", "")}${libc} --cpu=${cpu} sharp`, + ); + } else { + help.push( + `- Manually install libvips >= ${minimumLibvipsVersion}`, + " See https://sharp.pixelplumbing.com/install#building-from-source", + "- Add WebAssembly-based dependencies:", + " npm install sharp @img/sharp-wasm32", + ); + } + if (isLinux && /(symbol not found|CXXABI_)/i.test(messages)) { + try { + const { config } = require(`@img/sharp-libvips-${runtimePlatform}/package`); + const libcFound = `${familySync()} ${versionSync()}`; + const libcRequires = `${config.musl ? "musl" : "glibc"} ${config.musl || config.glibc}`; + help.push("- Update your OS:", ` Found ${libcFound}`, ` Requires ${libcRequires}`); + } catch (_errEngines) {} + } + if (isLinux && /\/snap\/core[0-9]{2}/.test(messages)) { + help.push("- Remove the Node.js Snap, which does not support native modules", " snap remove node"); + } + if (isMacOs && /Incompatible library version/.test(messages)) { + help.push("- Update Homebrew:", " brew update && brew upgrade vips"); + } + if (errors.some((err) => err.code === "ERR_DLOPEN_DISABLED")) { + help.push("- Run Node.js without using the --no-addons flag"); + } + // Link to installation docs + if (isWindows && /The specified procedure could not be found/.test(messages)) { + help.push( + "- Using the canvas package on Windows?", + " See https://sharp.pixelplumbing.com/install#canvas-and-windows", + "- Check for outdated versions of sharp in the dependency tree:", + " npm ls sharp", + ); + } + help.push("- Consult the installation documentation:", " See https://sharp.pixelplumbing.com/install"); + throw new Error(help.join("\n")); +} + +export default sharp; diff --git a/apps/api/.output/node_modules/sharp/dist/utility.cjs b/apps/api/.output/node_modules/sharp/dist/utility.cjs new file mode 100644 index 0000000..e2407cc --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/utility.cjs @@ -0,0 +1,301 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const events = require('node:events'); + +const { availableParallelism } = require("node:os"); +const detectLibc = require('detect-libc'); + +const is = require('./is.cjs'); +const libvips = require('./libvips.cjs'); +const sharp = require('./sharp.cjs'); +const pkg = require("../package.json"); + + +const runtimePlatform = libvips.runtimePlatformArch(); +const libvipsVersion = sharp.libvipsVersion(); + +/** + * An Object containing nested boolean values representing the available input and output formats/methods. + * @member + * @example + * console.log(sharp.format); + * @returns {Object} + */ +const format = sharp.format(); +format.heif.output.alias = ['avif', 'heic']; +format.jpeg.output.alias = ['jpe', 'jpg']; +format.tiff.output.alias = ['tif']; +format.jp2.output.alias = ['j2c', 'j2k', 'jp2', 'jpx']; + +/** + * An Object containing the available interpolators and their proper values + * @readonly + * @enum {string} + */ +const interpolators = { + /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */ + nearest: 'nearest', + /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */ + bilinear: 'bilinear', + /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */ + bicubic: 'bicubic', + /** [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). Prevents some "[acutance](http://en.wikipedia.org/wiki/Acutance)" but typically reduces performance by a factor of 2. */ + locallyBoundedBicubic: 'lbb', + /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */ + nohalo: 'nohalo', + /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents "staircasing" when enlarging. */ + vertexSplitQuadraticBasisSpline: 'vsqbs' +}; + +/** + * An Object containing the version numbers of sharp, libvips + * and (when using prebuilt binaries) its dependencies. + * + * @member + * @example + * console.log(sharp.versions); + */ +let versions = { + vips: libvipsVersion.semver +}; +/* node:coverage ignore next 15 */ +if (!libvipsVersion.isGlobal) { + if (!libvipsVersion.isWasm) { + try { + versions = require(`@img/sharp-${runtimePlatform}/versions`); + } catch (_) { + try { + versions = require(`@img/sharp-libvips-${runtimePlatform}/versions`); + } catch (_) {} + } + } else { + try { + versions = require('@img/sharp-wasm32/versions'); + } catch (_) {} + } +} +versions.sharp = pkg.version; + +/* node:coverage ignore next 5 */ +if (versions.heif && format.heif) { + // Prebuilt binaries provide AV1 + format.heif.input.fileSuffix = ['.avif']; + format.heif.output.alias = ['avif']; +} + +/** + * Gets or, when options are provided, sets the limits of _libvips'_ operation cache. + * Existing entries in the cache will be trimmed after any change in limits. + * This method always returns cache statistics, + * useful for determining how much working memory is required for a particular task. + * + * @example + * const stats = sharp.cache(); + * @example + * sharp.cache( { items: 200 } ); + * sharp.cache( { files: 0 } ); + * sharp.cache(false); + * + * @param {Object|boolean} [options=true] - Object with the following attributes, or boolean where true uses default cache settings and false removes all caching + * @param {number} [options.memory=50] - is the maximum memory in MB to use for this cache + * @param {number} [options.files=20] - is the maximum number of files to hold open + * @param {number} [options.items=100] - is the maximum number of operations to cache + * @returns {Object} + */ +function cache (options) { + if (is.bool(options)) { + if (options) { + // Default cache settings of 50MB, 20 files, 100 items + return sharp.cache(50, 20, 100); + } else { + return sharp.cache(0, 0, 0); + } + } else if (is.object(options)) { + for (const property of ['memory', 'files', 'items']) { + const value = options[property]; + if (is.defined(value) && !(is.integer(value) && value >= 0)) { + throw is.invalidParameterError(property, 'a positive integer', value); + } + } + return sharp.cache(options.memory, options.files, options.items); + } else { + return sharp.cache(); + } +} +cache(true); + +/** + * Gets or, when a concurrency is provided, sets + * the maximum number of threads _libvips_ should use to process _each image_. + * These are from a thread pool managed by glib, + * which helps avoid the overhead of creating new threads. + * + * This method always returns the current concurrency. + * + * The default value is the number of CPU cores, + * except when using glibc-based Linux without jemalloc, + * where the default is `1` to help reduce memory fragmentation. + * + * A value of `0` will reset this to the number of CPU cores. + * + * Some image format libraries spawn additional threads, + * e.g. libaom manages its own 4 threads when encoding AVIF images, + * and these are independent of the value set here. + * + * :::note + * Further {@link /performance/ control over performance} is available. + * ::: + * + * @example + * const threads = sharp.concurrency(); // 4 + * sharp.concurrency(2); // 2 + * sharp.concurrency(0); // 4 + * + * @param {number} [concurrency] + * @returns {number} concurrency + */ +function concurrency (concurrency) { + return sharp.concurrency(is.integer(concurrency) ? concurrency : null); +} +/* node:coverage ignore next 7 */ +if (!process.env.MALLOC_ARENA_MAX && detectLibc.familySync() === detectLibc.GLIBC && !sharp._isUsingJemalloc()) { + // Reduce default concurrency to 1 when using glibc memory allocator + sharp.concurrency(1); +} else if (detectLibc.familySync() === detectLibc.MUSL && sharp.concurrency() === 1024) { + // Reduce default concurrency when musl thread over-subscription detected + sharp.concurrency(availableParallelism()); +} + +/** + * An EventEmitter that emits a `change` event when a task is either: + * - queued, waiting for _libuv_ to provide a worker thread + * - complete + * @member + * @example + * sharp.queue.on('change', function(queueLength) { + * console.log('Queue contains ' + queueLength + ' task(s)'); + * }); + */ +const queue = new events.EventEmitter(); + +/** + * Provides access to internal task counters. + * - queue is the number of tasks this module has queued waiting for _libuv_ to provide a worker thread from its pool. + * - process is the number of resize tasks currently being processed. + * + * @example + * const counters = sharp.counters(); // { queue: 2, process: 4 } + * + * @returns {Object} + */ +function counters () { + return sharp.counters(); +} + +/** + * Get and set use of SIMD vector unit instructions. + * Requires libvips to have been compiled with highway support. + * + * Improves the performance of `resize`, `blur` and `sharpen` operations + * by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON. + * + * @example + * const simd = sharp.simd(); + * // simd is `true` if the runtime use of highway is currently enabled + * @example + * const simd = sharp.simd(false); + * // prevent libvips from using highway at runtime + * + * @param {boolean} [simd=true] + * @returns {boolean} + */ +function simd (simd) { + return sharp.simd(is.bool(simd) ? simd : null); +} + +/** + * Block libvips operations at runtime. + * + * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable, + * which when set will block all "untrusted" operations. + * + * @since 0.32.4 + * + * @example Block all TIFF input. + * sharp.block({ + * operation: ['VipsForeignLoadTiff'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to block. + */ +function block (options) { + if (is.object(options)) { + if (Array.isArray(options.operation) && options.operation.every(is.string)) { + sharp.block(options.operation, true); + } else { + throw is.invalidParameterError('operation', 'Array', options.operation); + } + } else { + throw is.invalidParameterError('options', 'object', options); + } +} + +/** + * Unblock libvips operations at runtime. + * + * This is useful for defining a list of allowed operations. + * + * @since 0.32.4 + * + * @example Block all input except WebP from the filesystem. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadWebpFile'] + * }); + * + * @example Block all input except JPEG and PNG from a Buffer or Stream. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to unblock. + */ +function unblock (options) { + if (is.object(options)) { + if (Array.isArray(options.operation) && options.operation.every(is.string)) { + sharp.block(options.operation, false); + } else { + throw is.invalidParameterError('operation', 'Array', options.operation); + } + } else { + throw is.invalidParameterError('options', 'object', options); + } +} + +/** + * Decorate the Sharp class with utility-related functions. + * @module Sharp + * @private + */ +module.exports = (Sharp) => { + Sharp.cache = cache; + Sharp.concurrency = concurrency; + Sharp.counters = counters; + Sharp.simd = simd; + Sharp.format = format; + Sharp.interpolators = interpolators; + Sharp.versions = versions; + Sharp.queue = queue; + Sharp.block = block; + Sharp.unblock = unblock; +}; diff --git a/apps/api/.output/node_modules/sharp/dist/utility.mjs b/apps/api/.output/node_modules/sharp/dist/utility.mjs new file mode 100644 index 0000000..be26db5 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/dist/utility.mjs @@ -0,0 +1,301 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +import events from 'node:events'; +import { createRequire } from "node:module"; +import { availableParallelism } from "node:os"; +import detectLibc from 'detect-libc'; + +import is from './is.mjs'; +import libvips from './libvips.mjs'; +import sharp from './sharp.mjs'; +import pkg from "../package.json" with { type: "json" }; + +const require = createRequire(import.meta.url); +const runtimePlatform = libvips.runtimePlatformArch(); +const libvipsVersion = sharp.libvipsVersion(); + +/** + * An Object containing nested boolean values representing the available input and output formats/methods. + * @member + * @example + * console.log(sharp.format); + * @returns {Object} + */ +const format = sharp.format(); +format.heif.output.alias = ['avif', 'heic']; +format.jpeg.output.alias = ['jpe', 'jpg']; +format.tiff.output.alias = ['tif']; +format.jp2.output.alias = ['j2c', 'j2k', 'jp2', 'jpx']; + +/** + * An Object containing the available interpolators and their proper values + * @readonly + * @enum {string} + */ +const interpolators = { + /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */ + nearest: 'nearest', + /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */ + bilinear: 'bilinear', + /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */ + bicubic: 'bicubic', + /** [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). Prevents some "[acutance](http://en.wikipedia.org/wiki/Acutance)" but typically reduces performance by a factor of 2. */ + locallyBoundedBicubic: 'lbb', + /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */ + nohalo: 'nohalo', + /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents "staircasing" when enlarging. */ + vertexSplitQuadraticBasisSpline: 'vsqbs' +}; + +/** + * An Object containing the version numbers of sharp, libvips + * and (when using prebuilt binaries) its dependencies. + * + * @member + * @example + * console.log(sharp.versions); + */ +let versions = { + vips: libvipsVersion.semver +}; +/* node:coverage ignore next 15 */ +if (!libvipsVersion.isGlobal) { + if (!libvipsVersion.isWasm) { + try { + versions = require(`@img/sharp-${runtimePlatform}/versions`); + } catch (_) { + try { + versions = require(`@img/sharp-libvips-${runtimePlatform}/versions`); + } catch (_) {} + } + } else { + try { + versions = require('@img/sharp-wasm32/versions'); + } catch (_) {} + } +} +versions.sharp = pkg.version; + +/* node:coverage ignore next 5 */ +if (versions.heif && format.heif) { + // Prebuilt binaries provide AV1 + format.heif.input.fileSuffix = ['.avif']; + format.heif.output.alias = ['avif']; +} + +/** + * Gets or, when options are provided, sets the limits of _libvips'_ operation cache. + * Existing entries in the cache will be trimmed after any change in limits. + * This method always returns cache statistics, + * useful for determining how much working memory is required for a particular task. + * + * @example + * const stats = sharp.cache(); + * @example + * sharp.cache( { items: 200 } ); + * sharp.cache( { files: 0 } ); + * sharp.cache(false); + * + * @param {Object|boolean} [options=true] - Object with the following attributes, or boolean where true uses default cache settings and false removes all caching + * @param {number} [options.memory=50] - is the maximum memory in MB to use for this cache + * @param {number} [options.files=20] - is the maximum number of files to hold open + * @param {number} [options.items=100] - is the maximum number of operations to cache + * @returns {Object} + */ +function cache (options) { + if (is.bool(options)) { + if (options) { + // Default cache settings of 50MB, 20 files, 100 items + return sharp.cache(50, 20, 100); + } else { + return sharp.cache(0, 0, 0); + } + } else if (is.object(options)) { + for (const property of ['memory', 'files', 'items']) { + const value = options[property]; + if (is.defined(value) && !(is.integer(value) && value >= 0)) { + throw is.invalidParameterError(property, 'a positive integer', value); + } + } + return sharp.cache(options.memory, options.files, options.items); + } else { + return sharp.cache(); + } +} +cache(true); + +/** + * Gets or, when a concurrency is provided, sets + * the maximum number of threads _libvips_ should use to process _each image_. + * These are from a thread pool managed by glib, + * which helps avoid the overhead of creating new threads. + * + * This method always returns the current concurrency. + * + * The default value is the number of CPU cores, + * except when using glibc-based Linux without jemalloc, + * where the default is `1` to help reduce memory fragmentation. + * + * A value of `0` will reset this to the number of CPU cores. + * + * Some image format libraries spawn additional threads, + * e.g. libaom manages its own 4 threads when encoding AVIF images, + * and these are independent of the value set here. + * + * :::note + * Further {@link /performance/ control over performance} is available. + * ::: + * + * @example + * const threads = sharp.concurrency(); // 4 + * sharp.concurrency(2); // 2 + * sharp.concurrency(0); // 4 + * + * @param {number} [concurrency] + * @returns {number} concurrency + */ +function concurrency (concurrency) { + return sharp.concurrency(is.integer(concurrency) ? concurrency : null); +} +/* node:coverage ignore next 7 */ +if (!process.env.MALLOC_ARENA_MAX && detectLibc.familySync() === detectLibc.GLIBC && !sharp._isUsingJemalloc()) { + // Reduce default concurrency to 1 when using glibc memory allocator + sharp.concurrency(1); +} else if (detectLibc.familySync() === detectLibc.MUSL && sharp.concurrency() === 1024) { + // Reduce default concurrency when musl thread over-subscription detected + sharp.concurrency(availableParallelism()); +} + +/** + * An EventEmitter that emits a `change` event when a task is either: + * - queued, waiting for _libuv_ to provide a worker thread + * - complete + * @member + * @example + * sharp.queue.on('change', function(queueLength) { + * console.log('Queue contains ' + queueLength + ' task(s)'); + * }); + */ +const queue = new events.EventEmitter(); + +/** + * Provides access to internal task counters. + * - queue is the number of tasks this module has queued waiting for _libuv_ to provide a worker thread from its pool. + * - process is the number of resize tasks currently being processed. + * + * @example + * const counters = sharp.counters(); // { queue: 2, process: 4 } + * + * @returns {Object} + */ +function counters () { + return sharp.counters(); +} + +/** + * Get and set use of SIMD vector unit instructions. + * Requires libvips to have been compiled with highway support. + * + * Improves the performance of `resize`, `blur` and `sharpen` operations + * by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON. + * + * @example + * const simd = sharp.simd(); + * // simd is `true` if the runtime use of highway is currently enabled + * @example + * const simd = sharp.simd(false); + * // prevent libvips from using highway at runtime + * + * @param {boolean} [simd=true] + * @returns {boolean} + */ +function simd (simd) { + return sharp.simd(is.bool(simd) ? simd : null); +} + +/** + * Block libvips operations at runtime. + * + * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable, + * which when set will block all "untrusted" operations. + * + * @since 0.32.4 + * + * @example Block all TIFF input. + * sharp.block({ + * operation: ['VipsForeignLoadTiff'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to block. + */ +function block (options) { + if (is.object(options)) { + if (Array.isArray(options.operation) && options.operation.every(is.string)) { + sharp.block(options.operation, true); + } else { + throw is.invalidParameterError('operation', 'Array', options.operation); + } + } else { + throw is.invalidParameterError('options', 'object', options); + } +} + +/** + * Unblock libvips operations at runtime. + * + * This is useful for defining a list of allowed operations. + * + * @since 0.32.4 + * + * @example Block all input except WebP from the filesystem. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadWebpFile'] + * }); + * + * @example Block all input except JPEG and PNG from a Buffer or Stream. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to unblock. + */ +function unblock (options) { + if (is.object(options)) { + if (Array.isArray(options.operation) && options.operation.every(is.string)) { + sharp.block(options.operation, false); + } else { + throw is.invalidParameterError('operation', 'Array', options.operation); + } + } else { + throw is.invalidParameterError('options', 'object', options); + } +} + +/** + * Decorate the Sharp class with utility-related functions. + * @module Sharp + * @private + */ +export default (Sharp) => { + Sharp.cache = cache; + Sharp.concurrency = concurrency; + Sharp.counters = counters; + Sharp.simd = simd; + Sharp.format = format; + Sharp.interpolators = interpolators; + Sharp.versions = versions; + Sharp.queue = queue; + Sharp.block = block; + Sharp.unblock = unblock; +}; diff --git a/apps/api/.output/node_modules/sharp/install/build.js b/apps/api/.output/node_modules/sharp/install/build.js new file mode 100644 index 0000000..8eaa0f5 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/install/build.js @@ -0,0 +1,38 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +const { + useGlobalLibvips, + globalLibvipsVersion, + log, + spawnRebuild, +} = require('../dist/libvips.cjs'); + +log('Building from source'); +log('See https://sharp.pixelplumbing.com/install#building-from-source'); + +try { + const addonApi = require('node-addon-api'); + log(`Found node-addon-api ${addonApi.version || ''}`); +} catch (_err) { + log('Please add node-addon-api to your dependencies'); + process.exit(1); +} +try { + const gyp = require('node-gyp'); + log(`Found node-gyp ${gyp().version}`); +} catch (_err) { + log('Please add node-gyp to your dependencies'); + process.exit(1); +} + +if (useGlobalLibvips(log)) { + log(`Found globally-installed libvips v${globalLibvipsVersion()}`); +} + +const status = spawnRebuild(); +if (status !== 0) { + process.exit(status); +} diff --git a/apps/api/.output/node_modules/sharp/lib/index.d.ts b/apps/api/.output/node_modules/sharp/lib/index.d.ts new file mode 100644 index 0000000..470889a --- /dev/null +++ b/apps/api/.output/node_modules/sharp/lib/index.d.ts @@ -0,0 +1,1999 @@ +/** + * Copyright 2017 François Nguyen and others. + * + * Billy Kwok + * Bradley Odell + * Espen Hovlandsdal + * Floris de Bijl + * François Nguyen + * Jamie Woodbury + * Wooseop Kim + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +// SPDX-License-Identifier: MIT + +/// + +declare type Duplex = import('node:stream').Duplex; +declare type ColorLike = import('@img/colour').ColorLike; + +//#region Constructor functions + +/** + * Creates a sharp instance from an image + * @param input Buffer containing JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data, or String containing the path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file. + * @param options Object with optional attributes. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ +declare function sharp(options?: sharp.SharpOptions): sharp.Sharp; +declare function sharp( + input?: sharp.SharpInput | Array, + options?: sharp.SharpOptions, +): sharp.Sharp; + +declare namespace sharp { + /** Object containing nested boolean values representing the available input and output formats/methods. */ + const format: FormatEnum; + + /** An Object containing the version numbers of sharp, libvips and its dependencies. */ + const versions: { + aom?: string | undefined; + archive?: string | undefined; + cairo?: string | undefined; + cgif?: string | undefined; + exif?: string | undefined; + expat?: string | undefined; + ffi?: string | undefined; + fontconfig?: string | undefined; + freetype?: string | undefined; + fribidi?: string | undefined; + glib?: string | undefined; + harfbuzz?: string | undefined; + heif?: string | undefined; + highway?: string | undefined; + imagequant?: string | undefined; + lcms?: string | undefined; + mozjpeg?: string | undefined; + pango?: string | undefined; + pixman?: string | undefined; + png?: string | undefined; + "proxy-libintl"?: string | undefined; + rsvg?: string | undefined; + sharp: string; + spng?: string | undefined; + tiff?: string | undefined; + vips: string; + webp?: string | undefined; + xml?: string | undefined; + "zlib-ng"?: string | undefined; + }; + + /** An Object containing the available interpolators and their proper values */ + const interpolators: Interpolators; + + /** An EventEmitter that emits a change event when a task is either queued, waiting for libuv to provide a worker thread, complete */ + const queue: NodeJS.EventEmitter; + + //#endregion + + //#region Utility functions + + /** + * Gets or, when options are provided, sets the limits of libvips' operation cache. + * Existing entries in the cache will be trimmed after any change in limits. + * This method always returns cache statistics, useful for determining how much working memory is required for a particular task. + * @param options Object with the following attributes, or Boolean where true uses default cache settings and false removes all caching (optional, default true) + * @returns The cache results. + */ + function cache(options?: boolean | CacheOptions): CacheResult; + + /** + * Gets or sets the number of threads libvips' should create to process each image. + * The default value is the number of CPU cores. A value of 0 will reset to this default. + * The maximum number of images that can be processed in parallel is limited by libuv's UV_THREADPOOL_SIZE environment variable. + * @param concurrency The new concurrency value. + * @returns The current concurrency value. + */ + function concurrency(concurrency?: number): number; + + /** + * Provides access to internal task counters. + * @returns Object containing task counters + */ + function counters(): SharpCounters; + + /** + * Get and set use of SIMD vector unit instructions. Requires libvips to have been compiled with highway support. + * Improves the performance of resize, blur and sharpen operations by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON. + * @param enable enable or disable use of SIMD vector unit instructions + * @returns true if usage of SIMD vector unit instructions is enabled + */ + function simd(enable?: boolean): boolean; + + /** + * Block libvips operations at runtime. + * + * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable, + * which when set will block all "untrusted" operations. + * + * @since 0.32.4 + * + * @example Block all TIFF input. + * sharp.block({ + * operation: ['VipsForeignLoadTiff'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to block. + */ + function block(options: { operation: string[] }): void; + + /** + * Unblock libvips operations at runtime. + * + * This is useful for defining a list of allowed operations. + * + * @since 0.32.4 + * + * @example Block all input except WebP from the filesystem. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadWebpFile'] + * }); + * + * @example Block all input except JPEG and PNG from a Buffer or Stream. + * sharp.block({ + * operation: ['VipsForeignLoad'] + * }); + * sharp.unblock({ + * operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer'] + * }); + * + * @param {Object} options + * @param {Array} options.operation - List of libvips low-level operation names to unblock. + */ + function unblock(options: { operation: string[] }): void; + + //#endregion + + const gravity: GravityEnum; + const strategy: StrategyEnum; + const kernel: KernelEnum; + const fit: FitEnum; + const bool: BoolEnum; + + interface Sharp extends Duplex { + //#region Channel functions + + /** + * Remove alpha channel, if any. This is a no-op if the image does not have an alpha channel. + * @returns A sharp instance that can be used to chain operations + */ + removeAlpha(): Sharp; + + /** + * Ensure alpha channel, if missing. The added alpha channel will be fully opaque. This is a no-op if the image already has an alpha channel. + * @param alpha transparency level (0=fully-transparent, 1=fully-opaque) (optional, default 1). + * @returns A sharp instance that can be used to chain operations + */ + ensureAlpha(alpha?: number): Sharp; + + /** + * Extract a single channel from a multi-channel image. + * @param channel zero-indexed channel/band number to extract, or red, green, blue or alpha. + * @throws {Error} Invalid channel + * @returns A sharp instance that can be used to chain operations + */ + extractChannel(channel: 0 | 1 | 2 | 3 | 'red' | 'green' | 'blue' | 'alpha'): Sharp; + + /** + * Join one or more channels to the image. The meaning of the added channels depends on the output colourspace, set with toColourspace(). + * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. Channel ordering follows vips convention: + * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha. + * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha. + * + * Buffers may be any of the image formats supported by sharp. + * For raw pixel input, the options object should contain a raw attribute, which follows the format of the attribute of the same name in the sharp() constructor. + * @param images one or more images (file paths, Buffers). + * @param options image options, see sharp() constructor. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + joinChannel(images: string | Buffer | ArrayLike, options?: SharpOptions): Sharp; + + /** + * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image. + * @param boolOp one of "and", "or" or "eor" to perform that bitwise operation, like the C logic operators &, | and ^ respectively. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + bandbool(boolOp: keyof BoolEnum): Sharp; + + //#endregion + + //#region Color functions + + /** + * Tint the image using the provided colour. + * An alpha channel may be present and will be unchanged by the operation. + * @param tint Parsed by the color module. + * @returns A sharp instance that can be used to chain operations + */ + tint(tint: ColorLike): Sharp; + + /** + * Convert to 8-bit greyscale; 256 shades of grey. + * This is a linear operation. + * If the input image is in a non-linear colour space such as sRGB, use gamma() with greyscale() for the best results. + * By default the output image will be web-friendly sRGB and contain three (identical) colour channels. + * This may be overridden by other sharp operations such as toColourspace('b-w'), which will produce an output image containing one colour channel. + * An alpha channel may be present, and will be unchanged by the operation. + * @param greyscale true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + greyscale(greyscale?: boolean): Sharp; + + /** + * Alternative spelling of greyscale(). + * @param grayscale true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + grayscale(grayscale?: boolean): Sharp; + + /** + * Set the pipeline colourspace. + * The input image will be converted to the provided colourspace at the start of the pipeline. + * All operations will use this colourspace before converting to the output colourspace, as defined by toColourspace. + * + * @param colourspace pipeline colourspace e.g. rgb16, scrgb, lab, grey16 ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + pipelineColourspace(colourspace?: string): Sharp; + + /** + * Alternative spelling of pipelineColourspace + * @param colorspace pipeline colourspace e.g. rgb16, scrgb, lab, grey16 ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + pipelineColorspace(colorspace?: string): Sharp; + + /** + * Set the output colourspace. + * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. + * @param colourspace output colourspace e.g. srgb, rgb, cmyk, lab, b-w ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toColourspace(colourspace?: string): Sharp; + + /** + * Alternative spelling of toColourspace(). + * @param colorspace output colorspace e.g. srgb, rgb, cmyk, lab, b-w ... + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toColorspace(colorspace: string): Sharp; + + //#endregion + + //#region Composite functions + + /** + * Composite image(s) over the processed (resized, extracted etc.) image. + * + * The images to composite must be the same size or smaller than the processed image. + * If both `top` and `left` options are provided, they take precedence over `gravity`. + * @param images - Ordered list of images to composite + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + composite(images: OverlayOptions[]): Sharp; + + //#endregion + + //#region Input functions + + /** + * Take a "snapshot" of the Sharp instance, returning a new instance. + * Cloned instances inherit the input of their parent instance. + * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream. + * @returns A sharp instance that can be used to chain operations + */ + clone(): Sharp; + + /** + * Fast access to (uncached) image metadata without decoding any compressed image data. + * @returns A sharp instance that can be used to chain operations + */ + metadata(callback: (err: Error, metadata: Metadata) => void): Sharp; + + /** + * Fast access to (uncached) image metadata without decoding any compressed image data. + * @returns A promise that resolves with a metadata object + */ + metadata(): Promise; + + /** + * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image. + * @returns A sharp instance that can be used to chain operations + */ + keepMetadata(): Sharp; + + /** + * Access to pixel-derived image statistics for every channel in the image. + * @returns A sharp instance that can be used to chain operations + */ + stats(callback: (err: Error, stats: Stats) => void): Sharp; + + /** + * Access to pixel-derived image statistics for every channel in the image. + * @returns A promise that resolves with a stats object + */ + stats(): Promise; + + //#endregion + + //#region Operation functions + + /** + * Rotate the output image by either an explicit angle + * or auto-orient based on the EXIF `Orientation` tag. + * + * If an angle is provided, it is converted to a valid positive degree rotation. + * For example, `-450` will produce a 270 degree rotation. + * + * When rotating by an angle other than a multiple of 90, + * the background colour can be provided with the `background` option. + * + * If no angle is provided, it is determined from the EXIF data. + * Mirroring is supported and may infer the use of a flip operation. + * + * The use of `rotate` without an angle will remove the EXIF `Orientation` tag, if any. + * + * Only one rotation can occur per pipeline (aside from an initial call without + * arguments to orient via EXIF data). Previous calls to `rotate` in the same + * pipeline will be ignored. + * + * Multi-page images can only be rotated by 180 degrees. + * + * Method order is important when rotating, resizing and/or extracting regions, + * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`. + * + * @example + * const pipeline = sharp() + * .rotate() + * .resize(null, 200) + * .toBuffer(function (err, outputBuffer, info) { + * // outputBuffer contains 200px high JPEG image data, + * // auto-rotated using EXIF Orientation tag + * // info.width and info.height contain the dimensions of the resized image + * }); + * readableStream.pipe(pipeline); + * + * @example + * const rotateThenResize = await sharp(input) + * .rotate(90) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .toBuffer(); + * const resizeThenRotate = await sharp(input) + * .resize({ width: 16, height: 8, fit: 'fill' }) + * .rotate(90) + * .toBuffer(); + * + * @param {number} [angle=auto] angle of rotation. + * @param {Object} [options] - if present, is an Object with optional attributes. + * @param {string|Object} [options.background="#000000"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. + * @returns {Sharp} + * @throws {Error} Invalid parameters + */ + rotate(angle?: number, options?: RotateOptions): Sharp; + + /** + * Alias for calling `rotate()` with no arguments, which orients the image based + * on EXIF orientsion. + * + * This operation is aliased to emphasize its purpose, helping to remove any + * confusion between rotation and orientation. + * + * @example + * const output = await sharp(input).autoOrient().toBuffer(); + * + * @returns {Sharp} + */ + autoOrient(): Sharp + + /** + * Flip the image about the vertical Y axis. This always occurs after rotation, if any. + * The use of flip implies the removal of the EXIF Orientation tag, if any. + * @param flip true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flip(flip?: boolean): Sharp; + + /** + * Flop the image about the horizontal X axis. This always occurs after rotation, if any. + * The use of flop implies the removal of the EXIF Orientation tag, if any. + * @param flop true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flop(flop?: boolean): Sharp; + + /** + * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any. + * You must provide an array of length 4 or a 2x2 affine transformation matrix. + * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option. + * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `sharp.interpolators` Object e.g. `sharp.interpolators.nohalo`. + * + * In the case of a 2x2 matrix, the transform is: + * X = matrix[0, 0] * (x + idx) + matrix[0, 1] * (y + idy) + odx + * Y = matrix[1, 0] * (x + idx) + matrix[1, 1] * (y + idy) + ody + * + * where: + * + * x and y are the coordinates in input image. + * X and Y are the coordinates in output image. + * (0,0) is the upper left corner. + * + * @param matrix Affine transformation matrix, may either by a array of length four or a 2x2 matrix array + * @param options if present, is an Object with optional attributes. + * + * @returns A sharp instance that can be used to chain operations + */ + affine(matrix: [number, number, number, number] | Matrix2x2, options?: AffineOptions): Sharp; + + /** + * Sharpen the image. + * When used without parameters, performs a fast, mild sharpen of the output image. + * When a sigma is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space. + * Fine-grained control over the level of sharpening in "flat" (m1) and "jagged" (m2) areas is available. + * @param options if present, is an Object with optional attributes + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + sharpen(options?: SharpenOptions): Sharp; + + /** + * Apply median filter. When used without parameters the default window is 3x3. + * @param size square mask size: size x size (optional, default 3) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + median(size?: number): Sharp; + + /** + * Blur the image. + * When used without parameters, performs a fast, mild blur of the output image. + * When a sigma is provided, performs a slower, more accurate Gaussian blur. + * When a boolean sigma is provided, ether blur mild or disable blur + * @param sigma a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where sigma = 1 + radius / 2. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + blur(sigma?: number | boolean | BlurOptions): Sharp; + + /** + * Expand foreground objects using the dilate morphological operator. + * @param {Number} [width=1] dilation width in pixels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + dilate(width?: number): Sharp; + + /** + * Shrink foreground objects using the erode morphological operator. + * @param {Number} [width=1] erosion width in pixels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + erode(width?: number): Sharp; + + /** + * Merge alpha transparency channel, if any, with background. + * @param flatten true to enable and false to disable (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + flatten(flatten?: boolean | FlattenOptions): Sharp; + + /** + * Ensure the image has an alpha channel with all white pixel values made fully transparent. + * Existing alpha channel values for non-white pixels remain unchanged. + * @returns A sharp instance that can be used to chain operations + */ + unflatten(): Sharp; + + /** + * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of 1/gamma then increasing the encoding (brighten) post-resize at a factor of gamma. + * This can improve the perceived brightness of a resized image in non-linear colour spaces. + * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation when applying a gamma correction. + * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases. + * @param gamma value between 1.0 and 3.0. (optional, default 2.2) + * @param gammaOut value between 1.0 and 3.0. (optional, defaults to same as gamma) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + gamma(gamma?: number, gammaOut?: number): Sharp; + + /** + * Produce the "negative" of the image. + * @param negate true to enable and false to disable, or an object of options (defaults to true) + * @returns A sharp instance that can be used to chain operations + */ + negate(negate?: boolean | NegateOptions): Sharp; + + /** + * Enhance output image contrast by stretching its luminance to cover a full dynamic range. + * + * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes. + * + * Luminance values below the `lower` percentile will be underexposed by clipping to zero. + * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value. + * + * @param normalise options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + normalise(normalise?: NormaliseOptions): Sharp; + + /** + * Alternative spelling of normalise. + * @param normalize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + normalize(normalize?: NormaliseOptions): Sharp; + + /** + * Perform contrast limiting adaptive histogram equalization (CLAHE) + * + * This will, in general, enhance the clarity of the image by bringing out + * darker details. Please read more about CLAHE here: + * https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE + * + * @param options clahe options + */ + clahe(options: ClaheOptions): Sharp; + + /** + * Convolve the image with the specified kernel. + * @param kernel the specified kernel + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + convolve(kernel: Kernel): Sharp; + + /** + * Any pixel value greather than or equal to the threshold value will be set to 255, otherwise it will be set to 0. + * @param threshold a value in the range 0-255 representing the level at which the threshold will be applied. (optional, default 128) + * @param options threshold options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + threshold(threshold?: number, options?: ThresholdOptions): Sharp; + + /** + * Perform a bitwise boolean operation with operand image. + * This operation creates an output image where each pixel is the result of the selected bitwise boolean operation between the corresponding pixels of the input images. + * @param operand Buffer containing image data or String containing the path to an image file. + * @param operator one of "and", "or" or "eor" to perform that bitwise operation, like the C logic operators &, | and ^ respectively. + * @param options describes operand when using raw pixel data. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + boolean(operand: string | Buffer, operator: keyof BoolEnum, options?: { raw: Raw }): Sharp; + + /** + * Apply the linear formula a * input + b to the image (levels adjustment) + * @param a multiplier (optional, default 1.0) + * @param b offset (optional, default 0.0) + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + linear(a?: number | number[] | null, b?: number | number[]): Sharp; + + /** + * Recomb the image with the specified matrix. + * @param inputMatrix 3x3 Recombination matrix or 4x4 Recombination matrix + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + recomb(inputMatrix: Matrix3x3 | Matrix4x4): Sharp; + + /** + * Transforms the image using brightness, saturation, hue rotation and lightness. + * Brightness and lightness both operate on luminance, with the difference being that brightness is multiplicative whereas lightness is additive. + * @param options describes the modulation + * @returns A sharp instance that can be used to chain operations + */ + modulate(options?: { + brightness?: number | undefined; + saturation?: number | undefined; + hue?: number | undefined; + lightness?: number | undefined; + }): Sharp; + + //#endregion + + //#region Output functions + + /** + * Write output image data to a file. + * If an explicit output format is not selected, it will be inferred from the extension, with JPEG, PNG, WebP, AVIF, TIFF, DZI, and libvips' V format supported. + * Note that raw pixel data is only supported for buffer output. + * @param fileOut The path to write the image data to. + * @param callback Callback function called on completion with two arguments (err, info). info contains the output image format, size (bytes), width, height and channels. + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + toFile(fileOut: string, callback: (err: Error, info: OutputInfo) => void): Sharp; + + /** + * Write output image data to a file. + * @param fileOut The path to write the image data to. + * @throws {Error} Invalid parameters + * @returns A promise that fulfills with an object containing information on the resulting file + */ + toFile(fileOut: string): Promise; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * @param callback Callback function called on completion with three arguments (err, buffer, info). + * @returns A sharp instance that can be used to chain operations + */ + toBuffer(callback: (err: Error, buffer: Buffer, info: OutputInfo) => void): Sharp; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * @param options resolve options + * @param options.resolveWithObject Resolve the Promise with an Object containing data and info properties instead of resolving only with data. + * @returns A promise that resolves with the Buffer data. + */ + toBuffer(options?: { resolveWithObject: false }): Promise>; + + /** + * Write output to a Buffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes. + * @param options resolve options + * @param options.resolveWithObject Resolve the Promise with an Object containing data and info properties instead of resolving only with data. + * @returns A promise that resolves with an object containing the Buffer data and an info object containing the output image format, size (bytes), width, height and channels + */ + toBuffer(options: { resolveWithObject: true }): Promise<{ data: Buffer; info: OutputInfo }>; + + /** + * Write output to a Uint8Array backed by a transferable ArrayBuffer. JPEG, PNG, WebP, AVIF, TIFF, GIF and RAW output are supported. + * By default, the format will match the input image, except SVG input which becomes PNG output. + * @returns A promise that resolves with an object containing the Uint8Array data and an info object containing the output image format, size (bytes), width, height and channels + */ + toUint8Array(): Promise<{ data: Uint8Array; info: OutputInfo }>; + + /** + * Set output density (DPI) in EXIF metadata. + * @param density Density in dots per inch (DPI). + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withDensity(density: number): Sharp; + + /** + * Keep all EXIF metadata from the input image in the output image. + * EXIF metadata is unsupported for TIFF output. + * @returns A sharp instance that can be used to chain operations + */ + keepExif(): Sharp; + + /** + * Set EXIF metadata in the output image, ignoring any EXIF in the input image. + * @param {Exif} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withExif(exif: Exif): Sharp; + + /** + * Update EXIF metadata from the input image in the output image. + * @param {Exif} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withExifMerge(exif: Exif): Sharp; + + /** + * Keep ICC profile from the input image in the output image where possible. + * @returns A sharp instance that can be used to chain operations + */ + keepIccProfile(): Sharp; + + /** + * Transform using an ICC profile and attach to the output image. + * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk). + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withIccProfile(icc: string, options?: WithIccProfileOptions): Sharp; + + /** + * Keep all XMP metadata from the input image in the output image. + * @returns A sharp instance that can be used to chain operations + */ + keepXmp(): Sharp; + + /** + * Set XMP metadata in the output image. + * @param {string} xmp - String containing XMP metadata to be embedded in the output image. + * @returns A sharp instance that can be used to chain operations + * @throws {Error} Invalid parameters + */ + withXmp(xmp: string): Sharp; + + /** + * Include all metadata (EXIF, XMP, IPTC) from the input image in the output image. + * The default behaviour, when withMetadata is not used, is to strip all metadata and convert to the device-independent sRGB colour space. + * This will also convert to and add a web-friendly sRGB ICC profile. + * @param withMetadata + * @throws {Error} Invalid parameters. + */ + withMetadata(withMetadata?: WriteableMetadata): Sharp; + + /** + * Use these JPEG options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jpeg(options?: JpegOptions): Sharp; + + /** + * Use these JP2 (JPEG 2000) options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jp2(options?: Jp2Options): Sharp; + + /** + * Use these JPEG-XL (JXL) options for output image. + * This feature is experimental, please do not use in production systems. + * Requires libvips compiled with support for libjxl. + * The prebuilt binaries do not include this. + * Image metadata (EXIF, XMP) is unsupported. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + jxl(options?: JxlOptions): Sharp; + + /** + * Use these PNG options for output image. + * PNG output is always full colour at 8 or 16 bits per pixel. + * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + png(options?: PngOptions): Sharp; + + /** + * Use these WebP options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + webp(options?: WebpOptions): Sharp; + + /** + * Use these GIF options for output image. + * Requires libvips compiled with support for ImageMagick or GraphicsMagick. The prebuilt binaries do not include this - see installing a custom libvips. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + gif(options?: GifOptions): Sharp; + + /** + * Use these AVIF options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + avif(options?: AvifOptions): Sharp; + + /** + * Use these HEIF options for output image. + * Support for patent-encumbered HEIC images requires the use of a globally-installed libvips compiled with support for libheif, libde265 and x265. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + heif(options?: HeifOptions): Sharp; + + /** + * Use these TIFF options for output image. + * @param options Output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + tiff(options?: TiffOptions): Sharp; + + /** + * Force output to be raw, uncompressed uint8 pixel data. + * @param options Raw output options. + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + raw(options?: RawOptions): Sharp; + + /** + * Force output to a given format. + * @param format a String or an Object with an 'id' attribute + * @param options output options + * @throws {Error} Unsupported format or options + * @returns A sharp instance that can be used to chain operations + */ + toFormat( + format: keyof FormatEnum | AvailableFormatInfo | "avif", + options?: + | OutputOptions + | JpegOptions + | PngOptions + | WebpOptions + | AvifOptions + | HeifOptions + | JxlOptions + | GifOptions + | Jp2Options + | RawOptions + | TiffOptions, + ): Sharp; + + /** + * Use tile-based deep zoom (image pyramid) output. + * Set the format and options for tile images via the toFormat, jpeg, png or webp functions. + * Use a .zip or .szi file extension with toFile to write to a compressed archive file format. + * @param tile tile options + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + tile(tile?: TileOptions): Sharp; + + /** + * Set a timeout for processing, in seconds. Use a value of zero to continue processing indefinitely, the default behaviour. + * The clock starts when libvips opens an input image for processing. Time spent waiting for a libuv thread to become available is not included. + * @param options Object with a `seconds` attribute between 0 and 3600 (number) + * @throws {Error} Invalid options + * @returns A sharp instance that can be used to chain operations + */ + timeout(options: TimeoutOptions): Sharp; + + //#endregion + + //#region Resize functions + + /** + * Resize image to width, height or width x height. + * + * When both a width and height are provided, the possible methods by which the image should fit these are: + * - cover: Crop to cover both provided dimensions (the default). + * - contain: Embed within both provided dimensions. + * - fill: Ignore the aspect ratio of the input and stretch to both provided dimensions. + * - inside: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified. + * - outside: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified. + * Some of these values are based on the object-fit CSS property. + * + * When using a fit of cover or contain, the default position is centre. Other options are: + * - sharp.position: top, right top, right, right bottom, bottom, left bottom, left, left top. + * - sharp.gravity: north, northeast, east, southeast, south, southwest, west, northwest, center or centre. + * - sharp.strategy: cover only, dynamically crop using either the entropy or attention strategy. Some of these values are based on the object-position CSS property. + * + * The strategy-based approach resizes so one dimension is at its target length then repeatedly ranks edge regions, + * discarding the edge with the lowest score based on the selected strategy. + * - entropy: focus on the region with the highest Shannon entropy. + * - attention: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones. + * + * Possible interpolation kernels are: + * - nearest: Use nearest neighbour interpolation. + * - cubic: Use a Catmull-Rom spline. + * - lanczos2: Use a Lanczos kernel with a=2. + * - lanczos3: Use a Lanczos kernel with a=3 (the default). + * + * @param width pixels wide the resultant image should be. Use null or undefined to auto-scale the width to match the height. + * @param height pixels high the resultant image should be. Use null or undefined to auto-scale the height to match the width. + * @param options resize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + resize(widthOrOptions?: number | ResizeOptions | null, height?: number | null, options?: ResizeOptions): Sharp; + + /** + * Shorthand for resize(null, null, options); + * + * @param options resize options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + resize(options: ResizeOptions): Sharp; + + /** + * Extend / pad / extrude one or more edges of the image with either + * the provided background colour or pixels derived from the image. + * This operation will always occur after resizing and extraction, if any. + * @param extend single pixel count to add to all edges or an Object with per-edge counts + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + extend(extend: number | ExtendOptions): Sharp; + + /** + * Extract a region of the image. + * - Use extract() before resize() for pre-resize extraction. + * - Use extract() after resize() for post-resize extraction. + * - Use extract() before and after for both. + * + * @param region The region to extract + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + extract(region: Region): Sharp; + + /** + * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel. + * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels. + * The info response Object will contain trimOffsetLeft and trimOffsetTop properties. + * @param options trim options + * @throws {Error} Invalid parameters + * @returns A sharp instance that can be used to chain operations + */ + trim(options?: TrimOptions): Sharp; + + //#endregion + } + + type SharpInput = Buffer + | ArrayBuffer + | Uint8Array + | Uint8ClampedArray + | Int8Array + | Uint16Array + | Int16Array + | Uint32Array + | Int32Array + | Float32Array + | Float64Array + | string; + + interface SharpOptions { + /** + * Auto-orient based on the EXIF `Orientation` tag, if present. + * Mirroring is supported and may infer the use of a flip operation. + * + * Using this option will remove the EXIF `Orientation` tag, if any. + */ + autoOrient?: boolean | undefined; + /** + * When to abort processing of invalid pixel data, one of (in order of sensitivity): + * 'none' (least), 'truncated', 'error' or 'warning' (most), highers level imply lower levels, invalid metadata will always abort. + * Use the default 'warning' level with untrusted input. (optional, default 'warning') + */ + failOn?: FailOnOptions | undefined; + /** + * Do not process input images where the number of pixels (width x height) exceeds this limit. + * Assumes image dimensions contained in the input metadata can be trusted. + * An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF). (optional, default 268402689) + */ + limitInputPixels?: number | boolean | undefined; + /** + * Do not process input images where the number of channels exceeds this limit. + * Assumes image metadata can be trusted. + * An integral Number of channels, zero or false to remove limit, true to use default limit of 5. (optional, default 5) + */ + limitInputChannels?: number | boolean | undefined; + /** Set this to true to remove safety features that help prevent memory exhaustion (SVG, PNG). (optional, default false) */ + unlimited?: boolean | undefined; + /** Set this to false to use random access rather than sequential read. Some operations will do this automatically. */ + sequentialRead?: boolean | undefined; + /** The DPI at which to render SVG and PDF images, in the range 1 to 100000. (optional, default 72) */ + density?: number | undefined; + /** Should the embedded ICC profile, if any, be ignored. */ + ignoreIcc?: boolean | undefined; + /** Number of pages to extract for multi-page input (GIF, TIFF, PDF), use -1 for all pages */ + pages?: number | undefined; + /** Page number to start extracting from for multi-page input (GIF, TIFF, PDF), zero based. (optional, default 0) */ + page?: number | undefined; + /** TIFF specific input options */ + tiff?: TiffInputOptions | undefined; + /** SVG specific input options */ + svg?: SvgInputOptions | undefined; + /** PDF specific input options */ + pdf?: PdfInputOptions | undefined; + /** OpenSlide specific input options */ + openSlide?: OpenSlideInputOptions | undefined; + /** JPEG 2000 specific input options */ + jp2?: Jp2InputOptions | undefined; + /** @deprecated Use {@link SharpOptions.tiff} instead */ + subifd?: number | undefined; + /** @deprecated Use {@link SharpOptions.pdf} instead */ + pdfBackground?: ColorLike | undefined; + /** @deprecated Use {@link SharpOptions.openSlide} instead */ + level?: number | undefined; + /** Set to `true` to read all frames/pages of an animated image (equivalent of setting `pages` to `-1`). (optional, default false) */ + animated?: boolean | undefined; + /** Describes raw pixel input image data. See raw() for pixel ordering. */ + raw?: CreateRaw | undefined; + /** Describes a new image to be created. */ + create?: Create | undefined; + /** Describes a new text image to be created. */ + text?: CreateText | undefined; + /** Describes how array of input images should be joined. */ + join?: Join | undefined; + } + + interface CacheOptions { + /** Is the maximum memory in MB to use for this cache (optional, default 50) */ + memory?: number | undefined; + /** Is the maximum number of files to hold open (optional, default 20) */ + files?: number | undefined; + /** Is the maximum number of operations to cache (optional, default 100) */ + items?: number | undefined; + } + + interface TimeoutOptions { + /** Number of seconds after which processing will be stopped (default 0, eg disabled) */ + seconds: number; + } + + interface SharpCounters { + /** The number of tasks this module has queued waiting for libuv to provide a worker thread from its pool. */ + queue: number; + /** The number of resize tasks currently being processed. */ + process: number; + } + + interface Raw { + width: number; + height: number; + channels: Channels; + } + + interface CreateRaw extends Raw { + /** Specifies that the raw input has already been premultiplied, set to true to avoid sharp premultiplying the image. (optional, default false) */ + premultiplied?: boolean | undefined; + /** The height of each page/frame for animated images, must be an integral factor of the overall image height. */ + pageHeight?: number | undefined; + } + + type CreateChannels = 3 | 4; + + interface Create { + /** Number of pixels wide. */ + width: number; + /** Number of pixels high. */ + height: number; + /** Number of bands, 3 for RGB, 4 for RGBA */ + channels: CreateChannels; + /** Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha. */ + background: ColorLike; + /** Describes a noise to be created. */ + noise?: Noise | undefined; + /** The height of each page/frame for animated images, must be an integral factor of the overall image height. */ + pageHeight?: number | undefined; + + } + + interface CreateText { + /** Text to render as a UTF-8 string. It can contain Pango markup, for example `LeMonde`. */ + text: string; + /** Font name to render with. */ + font?: string; + /** Absolute filesystem path to a font file that can be used by `font`. */ + fontfile?: string; + /** Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries. (optional, default `0`) */ + width?: number; + /** + * Integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution + * defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0. (optional, default `0`) + */ + height?: number; + /** Text alignment ('left', 'centre', 'center', 'right'). (optional, default 'left') */ + align?: TextAlign; + /** Set this to true to apply justification to the text. (optional, default `false`) */ + justify?: boolean; + /** The resolution (size) at which to render the text. Does not take effect if `height` is specified. (optional, default `72`) */ + dpi?: number; + /** + * Set this to true to enable RGBA output. This is useful for colour emoji rendering, + * or support for pango markup features like `Red!`. (optional, default `false`) + */ + rgba?: boolean; + /** Text line height in points. Will use the font line height if none is specified. (optional, default `0`) */ + spacing?: number; + /** Word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none' */ + wrap?: TextWrap; + } + + interface Join { + /** Number of images per row. */ + across?: number | undefined; + /** Treat input as frames of an animated image. */ + animated?: boolean | undefined; + /** Space between images, in pixels. */ + shim?: number | undefined; + /** Background colour. */ + background?: ColorLike | undefined; + /** Horizontal alignment. */ + halign?: HorizontalAlignment | undefined; + /** Vertical alignment. */ + valign?: VerticalAlignment | undefined; + } + + interface TiffInputOptions { + /** Sub Image File Directory to extract, defaults to main image. Use -1 for all subifds. */ + subifd?: number | undefined; + } + + interface SvgInputOptions { + /** Custom CSS for SVG input, applied with a User Origin during the CSS cascade. */ + stylesheet?: string | undefined; + /** Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA. */ + highBitdepth?: boolean | undefined; + } + + interface PdfInputOptions { + /** Background colour to use when PDF is partially transparent. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick. */ + background?: ColorLike | undefined; + } + + interface OpenSlideInputOptions { + /** Level to extract from a multi-level input, zero based. (optional, default 0) */ + level?: number | undefined; + } + + interface Jp2InputOptions { + /** Set to `true` to load JPEG 2000 images using [oneshot mode](https://github.com/libvips/libvips/issues/4205) */ + oneshot?: boolean | undefined; + } + + interface ExifDir { + [k: string]: string; + } + + interface Exif { + 'IFD0'?: ExifDir; + 'IFD1'?: ExifDir; + 'IFD2'?: ExifDir; + 'IFD3'?: ExifDir; + } + + type HeifCompression = 'av1' | 'hevc'; + + type HeifTune = 'auto' | 'iq' | 'psnr' | 'ssim'; + + type Unit = 'inch' | 'cm'; + + type MediaType = + 'application/pdf' | + 'image/avif' | + 'image/fits' | + 'image/gif' | + 'image/heic' | + 'image/jp2' | + 'image/jpeg' | + 'image/jxl' | + 'image/png' | + 'image/svg+xml' | + 'image/tiff' | + 'image/vnd.radiance' | + 'image/webp' | + 'image/x-exr' | + 'image/x-portable-pixmap'; + + interface WriteableMetadata { + /** Number of pixels per inch (DPI) */ + density?: number | undefined; + /** Value between 1 and 8, used to update the EXIF Orientation tag. */ + orientation?: number | undefined; + /** + * Filesystem path to output ICC profile, defaults to sRGB. + * @deprecated Use `withIccProfile()` instead. + */ + icc?: string | undefined; + /** + * Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data. + * @deprecated Use `withExif()` or `withExifMerge()` instead. + */ + exif?: Exif | undefined; + } + + interface Metadata { + /** Number value of the EXIF Orientation header, if present */ + orientation?: number | undefined; + /** Name of decoder used to decompress image data e.g. jpeg, png, webp, gif, svg */ + format: keyof FormatEnum; + /** Total size of image in bytes, for Stream and Buffer input only */ + size?: number | undefined; + /** Number of pixels wide (EXIF orientation is not taken into consideration) */ + width: number; + /** Number of pixels high (EXIF orientation is not taken into consideration) */ + height: number; + /** Any changed metadata after the image orientation is applied. */ + autoOrient: { + /** Number of pixels wide (EXIF orientation is taken into consideration) */ + width: number; + /** Number of pixels high (EXIF orientation is taken into consideration) */ + height: number; + }; + /** Name of colour space interpretation */ + space: keyof ColourspaceEnum; + /** Number of bands e.g. 3 for sRGB, 4 for CMYK */ + channels: Channels; + /** Name of pixel depth format e.g. uchar, char, ushort, float ... */ + depth: keyof DepthEnum; + /** Number of pixels per inch (DPI), if present */ + density?: number | undefined; + /** String containing JPEG chroma subsampling, 4:2:0 or 4:4:4 for RGB, 4:2:0:4 or 4:4:4:4 for CMYK */ + chromaSubsampling?: string | undefined; + /** Boolean indicating whether the image is interlaced using a progressive scan */ + isProgressive: boolean; + /** Boolean indicating whether the image is palette-based (GIF, PNG). */ + isPalette: boolean; + /** Number of bits per sample for each channel (GIF, PNG). */ + bitsPerSample?: number | undefined; + /** Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP */ + pages?: number | undefined; + /** Number of pixels high each page in a multi-page image will be. */ + pageHeight?: number | undefined; + /** Number of times to loop an animated image, zero refers to a continuous loop. */ + loop?: number | undefined; + /** Delay in ms between each page in an animated image, provided as an array of integers. */ + delay?: number[] | undefined; + /** Number of the primary page in a HEIF image */ + pagePrimary?: number | undefined; + /** Boolean indicating the presence of an embedded ICC profile */ + hasProfile: boolean; + /** Boolean indicating the presence of an alpha transparency channel */ + hasAlpha: boolean; + /** Buffer containing raw EXIF data, if present */ + exif?: Buffer | undefined; + /** Buffer containing raw ICC profile data, if present */ + icc?: Buffer | undefined; + /** Buffer containing raw IPTC data, if present */ + iptc?: Buffer | undefined; + /** Buffer containing raw XMP data, if present */ + xmp?: Buffer | undefined; + /** String containing XMP data, if valid UTF-8 */ + xmpAsString?: string | undefined; + /** Buffer containing raw TIFFTAG_PHOTOSHOP data, if present */ + tifftagPhotoshop?: Buffer | undefined; + /** The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC) */ + compression?: HeifCompression | undefined; + /** Default background colour, if present, for PNG (bKGD) and GIF images */ + background?: { r: number; g: number; b: number } | { gray: number }; + /** Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide */ + levels?: LevelMetadata[] | undefined; + /** Number of Sub Image File Directories in an OME-TIFF image */ + subifds?: number | undefined; + /** The unit of resolution (density) */ + resolutionUnit?: Unit | undefined; + /** String containing format for images loaded via *magick */ + formatMagick?: string | undefined; + /** Array of keyword/text pairs representing PNG text blocks, if present. */ + comments?: CommentsMetadata[] | undefined; + /** HDR gain map, if present */ + gainMap?: GainMapMetadata | undefined; + /** Media Type (MIME Type) */ + mediaType?: MediaType | undefined; + } + + interface LevelMetadata { + width: number; + height: number; + } + + interface CommentsMetadata { + keyword: string; + text: string; + } + + interface GainMapMetadata { + /** JPEG image */ + image: Buffer; + } + + interface Stats { + /** Array of channel statistics for each channel in the image. */ + channels: ChannelStats[]; + /** Value to identify if the image is opaque or transparent, based on the presence and use of alpha channel */ + isOpaque: boolean; + /** Histogram-based estimation of greyscale entropy, discarding alpha channel if any */ + entropy: number; + /** Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any */ + sharpness: number; + /** Object containing most dominant sRGB colour based on a 4096-bin 3D histogram */ + dominant: { r: number; g: number; b: number }; + } + + interface ChannelStats { + /** minimum value in the channel */ + min: number; + /** maximum value in the channel */ + max: number; + /** sum of all values in a channel */ + sum: number; + /** sum of squared values in a channel */ + squaresSum: number; + /** mean of the values in a channel */ + mean: number; + /** standard deviation for the values in a channel */ + stdev: number; + /** x-coordinate of one of the pixel where the minimum lies */ + minX: number; + /** y-coordinate of one of the pixel where the minimum lies */ + minY: number; + /** x-coordinate of one of the pixel where the maximum lies */ + maxX: number; + /** y-coordinate of one of the pixel where the maximum lies */ + maxY: number; + } + + interface OutputOptions { + /** Force format output, otherwise attempt to use input format (optional, default true) */ + force?: boolean | undefined; + } + + interface WithIccProfileOptions { + /** Should the ICC profile be included in the output image metadata? (optional, default true) */ + attach?: boolean | undefined; + } + + interface JpegOptions extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Use progressive (interlace) scan (optional, default false) */ + progressive?: boolean | undefined; + /** Set to '4:4:4' to prevent chroma subsampling when quality <= 90 (optional, default '4:2:0') */ + chromaSubsampling?: string | undefined; + /** Apply trellis quantisation (optional, default false) */ + trellisQuantisation?: boolean | undefined; + /** Apply overshoot deringing (optional, default false) */ + overshootDeringing?: boolean | undefined; + /** Optimise progressive scans, forces progressive (optional, default false) */ + optimiseScans?: boolean | undefined; + /** Alternative spelling of optimiseScans (optional, default false) */ + optimizeScans?: boolean | undefined; + /** Optimise Huffman coding tables (optional, default true) */ + optimiseCoding?: boolean | undefined; + /** Alternative spelling of optimiseCoding (optional, default true) */ + optimizeCoding?: boolean | undefined; + /** Quantization table to use, integer 0-8 (optional, default 0) */ + quantisationTable?: number | undefined; + /** Alternative spelling of quantisationTable (optional, default 0) */ + quantizationTable?: number | undefined; + /** Use mozjpeg defaults (optional, default false) */ + mozjpeg?: boolean | undefined; + } + + interface Jp2Options extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number; + /** Use lossless compression mode (optional, default false) */ + lossless?: boolean; + /** Horizontal tile size (optional, default 512) */ + tileWidth?: number; + /** Vertical tile size (optional, default 512) */ + tileHeight?: number; + /** Set to '4:2:0' to enable chroma subsampling (optional, default '4:4:4') */ + chromaSubsampling?: '4:4:4' | '4:2:0'; + } + + interface JxlOptions extends OutputOptions, AnimationOptions { + /** Maximum encoding error, between 0 (highest quality) and 15 (lowest quality) (optional, default 1.0) */ + distance?: number; + /** Calculate distance based on JPEG-like quality, between 1 and 100, overrides distance if specified */ + quality?: number; + /** Target decode speed tier, between 0 (highest quality) and 4 (lowest quality) (optional, default 0) */ + decodingTier?: number; + /** Use lossless compression (optional, default false) */ + lossless?: boolean; + /** CPU effort, between 1 (fastest) and 9 (slowest) (optional, default 7) */ + effort?: number | undefined; + } + + interface WebpOptions extends OutputOptions, AnimationOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Quality of alpha layer, number from 0-100 (optional, default 100) */ + alphaQuality?: number | undefined; + /** Use lossless compression mode (optional, default false) */ + lossless?: boolean | undefined; + /** Use near_lossless compression mode (optional, default false) */ + nearLossless?: boolean | undefined; + /** Use high quality chroma subsampling (optional, default false) */ + smartSubsample?: boolean | undefined; + /** Auto-adjust the deblocking filter, slow but can improve low contrast edges (optional, default false) */ + smartDeblock?: boolean | undefined; + /** Level of CPU effort to reduce file size, integer 0-6 (optional, default 4) */ + effort?: number | undefined; + /** Prevent use of animation key frames to minimise file size (slow) (optional, default false) */ + minSize?: boolean | undefined; + /** Allow mixture of lossy and lossless animation frames (slow) (optional, default false) */ + mixed?: boolean | undefined; + /** Preset options: one of default, photo, picture, drawing, icon, text (optional, default 'default') */ + preset?: keyof PresetEnum | undefined; + /** Preserve the colour data in transparent pixels (optional, default false) */ + exact?: boolean | undefined; + } + + interface AvifOptions extends OutputOptions { + /** quality, integer 1-100 (optional, default 50) */ + quality?: number | undefined; + /** use lossless compression (optional, default false) */ + lossless?: boolean | undefined; + /** Level of CPU effort to reduce file size, between 0 (fastest) and 9 (slowest) (optional, default 4) */ + effort?: number | undefined; + /** set to '4:2:0' to use chroma subsampling, requires libvips v8.11.0 (optional, default '4:4:4') */ + chromaSubsampling?: string | undefined; + /** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */ + bitdepth?: 8 | 10 | 12 | undefined; + /** Tune output for a quality metric, one of 'auto', 'iq', 'psnr' or 'ssim' (optional, default 'auto') */ + tune?: HeifTune | undefined; + } + + interface HeifOptions extends OutputOptions { + /** quality, integer 1-100 (optional, default 50) */ + quality?: number | undefined; + /** compression format: av1, hevc (optional, default 'av1') */ + compression?: HeifCompression | undefined; + /** use lossless compression (optional, default false) */ + lossless?: boolean | undefined; + /** Level of CPU effort to reduce file size, between 0 (fastest) and 9 (slowest) (optional, default 4) */ + effort?: number | undefined; + /** set to '4:2:0' to use chroma subsampling (optional, default '4:4:4') */ + chromaSubsampling?: string | undefined; + /** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */ + bitdepth?: 8 | 10 | 12 | undefined; + /** Tune output for a quality metric, one of 'auto', 'iq', 'psnr' or 'ssim' (optional, default 'auto') */ + tune?: HeifTune | undefined; + } + + interface GifOptions extends OutputOptions, AnimationOptions { + /** Re-use existing palette, otherwise generate new (slow) */ + reuse?: boolean | undefined; + /** Use progressive (interlace) scan */ + progressive?: boolean | undefined; + /** Maximum number of palette entries, including transparency, between 2 and 256 (optional, default 256) */ + colours?: number | undefined; + /** Alternative spelling of "colours". Maximum number of palette entries, including transparency, between 2 and 256 (optional, default 256) */ + colors?: number | undefined; + /** Level of CPU effort to reduce file size, between 1 (fastest) and 10 (slowest) (optional, default 7) */ + effort?: number | undefined; + /** Level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most) (optional, default 1.0) */ + dither?: number | undefined; + /** Maximum inter-frame error for transparency, between 0 (lossless) and 32 (optional, default 0) */ + interFrameMaxError?: number | undefined; + /** Maximum inter-palette error for palette reuse, between 0 and 256 (optional, default 3) */ + interPaletteMaxError?: number | undefined; + /** Keep duplicate frames in the output instead of combining them (optional, default false) */ + keepDuplicateFrames?: boolean | undefined; + } + + interface TiffOptions extends OutputOptions { + /** Quality, integer 1-100 (optional, default 80) */ + quality?: number | undefined; + /** Compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k (optional, default 'jpeg') */ + compression?: string | undefined; + /** Use BigTIFF variant (has no effect when compression is none) (optional, default false) */ + bigtiff?: boolean | undefined; + /** Compression predictor options: none, horizontal, float (optional, default 'horizontal') */ + predictor?: string | undefined; + /** Write an image pyramid (optional, default false) */ + pyramid?: boolean | undefined; + /** Write a tiled tiff (optional, default false) */ + tile?: boolean | undefined; + /** Horizontal tile size (optional, default 256) */ + tileWidth?: number | undefined; + /** Vertical tile size, valid values are integers in the range 1-32768 (optional, default 256) */ + tileHeight?: number | undefined; + /** Horizontal resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 (optional, default 1.0) */ + xres?: number | undefined; + /** Vertical resolution in pixels/mm, valid values are numbers in the range 0.001-1000000 (optional, default 1.0) */ + yres?: number | undefined; + /** Reduce bitdepth to 1, 2 or 4 bit (optional) */ + bitdepth?: 1 | 2 | 4 | undefined; + /** Write 1-bit images as miniswhite (optional, default false) */ + miniswhite?: boolean | undefined; + /** Resolution unit options: inch, cm (optional, default 'inch') */ + resolutionUnit?: Unit | undefined; + } + + interface PngOptions extends OutputOptions { + /** Use progressive (interlace) scan (optional, default false) */ + progressive?: boolean | undefined; + /** zlib compression level, 0-9 (optional, default 6) */ + compressionLevel?: number | undefined; + /** Use adaptive row filtering (optional, default false) */ + adaptiveFiltering?: boolean | undefined; + /** Use the lowest number of colours needed to achieve given quality (optional, default `100`) */ + quality?: number | undefined; + /** Level of CPU effort to reduce file size, between 1 (fastest) and 10 (slowest), sets palette to true (optional, default 7) */ + effort?: number | undefined; + /** Quantise to a palette-based image with alpha transparency support (optional, default false) */ + palette?: boolean | undefined; + /** Maximum number of palette entries (optional, default 256) */ + colours?: number | undefined; + /** Alternative Spelling of "colours". Maximum number of palette entries (optional, default 256) */ + colors?: number | undefined; + /** Level of Floyd-Steinberg error diffusion (optional, default 1.0) */ + dither?: number | undefined; + } + + interface RotateOptions { + /** parsed by the color module to extract values for red, green, blue and alpha. (optional, default "#000000") */ + background?: ColorLike | undefined; + } + + type Precision = 'integer' | 'float' | 'approximate'; + + interface BlurOptions { + /** A value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2` */ + sigma: number; + /** A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask. */ + minAmplitude?: number; + /** How accurate the operation should be, one of: integer, float, approximate. (optional, default "integer") */ + precision?: Precision | undefined; + } + + interface FlattenOptions { + /** background colour, parsed by the color module, defaults to black. (optional, default {r:0,g:0,b:0}) */ + background?: ColorLike | undefined; + } + + interface NegateOptions { + /** whether or not to negate any alpha channel. (optional, default true) */ + alpha?: boolean | undefined; + } + + interface NormaliseOptions { + /** Percentile below which luminance values will be underexposed. */ + lower?: number | undefined; + /** Percentile above which luminance values will be overexposed. */ + upper?: number | undefined; + } + + interface ResizeOptions { + /** Alternative means of specifying width. If both are present this takes priority. */ + width?: number | undefined; + /** Alternative means of specifying height. If both are present this takes priority. */ + height?: number | undefined; + /** How the image should be resized to fit both provided dimensions, one of cover, contain, fill, inside or outside. (optional, default 'cover') */ + fit?: keyof FitEnum | undefined; + /** Position, gravity or strategy to use when fit is cover or contain. (optional, default 'centre') */ + position?: number | string | undefined; + /** Background colour when using a fit of contain, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ + background?: ColorLike | undefined; + /** The kernel to use for image reduction. (optional, default 'lanczos3') */ + kernel?: keyof KernelEnum | undefined; + /** Do not enlarge if the width or height are already less than the specified dimensions, equivalent to GraphicsMagick's > geometry option. (optional, default false) */ + withoutEnlargement?: boolean | undefined; + /** Do not reduce if the width or height are already greater than the specified dimensions, equivalent to GraphicsMagick's < geometry option. (optional, default false) */ + withoutReduction?: boolean | undefined; + /** Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern on some images. (optional, default true) */ + fastShrinkOnLoad?: boolean | undefined; + } + + interface Region { + /** zero-indexed offset from left edge, an integer between 0 and 100000000 */ + left: number; + /** zero-indexed offset from top edge, an integer between 0 and 100000000 */ + top: number; + /** dimension of extracted image, an integer between 0 and 100000000 */ + width: number; + /** dimension of extracted image, an integer between 0 and 100000000 */ + height: number; + } + + interface Noise { + /** type of generated noise, currently only gaussian is supported. */ + type: 'gaussian'; + /** mean of pixels in generated noise. */ + mean?: number | undefined; + /** standard deviation of pixels in generated noise. */ + sigma?: number | undefined; + } + + type ExtendWith = 'background' | 'copy' | 'repeat' | 'mirror'; + + interface ExtendOptions { + /** single pixel count to top edge, valid values are integers in the range 0-10000 (optional, default 0) */ + top?: number | undefined; + /** single pixel count to left edge, valid values are integers in the range 0-10000 (optional, default 0) */ + left?: number | undefined; + /** single pixel count to bottom edge, valid values are integers in the range 0-10000 (optional, default 0) */ + bottom?: number | undefined; + /** single pixel count to right edge, valid values are integers in the range 0-10000 (optional, default 0) */ + right?: number | undefined; + /** background colour, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ + background?: ColorLike | undefined; + /** how the extension is done, one of: "background", "copy", "repeat", "mirror" (optional, default `'background'`) */ + extendWith?: ExtendWith | undefined; + } + + interface TrimOptions { + /** Background colour, parsed by the color module, defaults to that of the top-left pixel. (optional) */ + background?: ColorLike | undefined; + /** Allowed difference from the above colour, a positive number. (optional, default 10) */ + threshold?: number | undefined; + /** Does the input more closely resemble line art (e.g. vector) rather than being photographic? (optional, default false) */ + lineArt?: boolean | undefined; + /** Leave a margin around trimmed content, integral number of pixels between 0 and 10000000. (optional, default 0) */ + margin?: number | undefined; + } + + interface RawOptions { + depth?: keyof DepthEnum; + } + + /** 1 for grayscale, 2 for grayscale + alpha, 3 for sRGB, 4 for CMYK or RGBA */ + type Channels = 1 | 2 | 3 | 4; + + type Colour = ColorLike; + type Color = ColorLike; + + interface Kernel { + /** width of the kernel in pixels. */ + width: number; + /** height of the kernel in pixels. */ + height: number; + /** Array of length width*height containing the kernel values. */ + kernel: ArrayLike; + /** the scale of the kernel in pixels. (optional, default sum) */ + scale?: number | undefined; + /** the offset of the kernel in pixels. (optional, default 0) */ + offset?: number | undefined; + } + + interface ClaheOptions { + /** width of the region. Valid values are integers in the range 1-65536. */ + width: number; + /** height of the region. Valid values are integers in the range 1-65536. */ + height: number; + /** max slope of the cumulative contrast. A value of 0 disables contrast limiting. Valid values are integers in the range 0-100. (optional, default 3) */ + maxSlope?: number | undefined; + } + + interface ThresholdOptions { + /** convert to single channel greyscale. (optional, default true) */ + greyscale?: boolean | undefined; + /** alternative spelling for greyscale. (optional, default true) */ + grayscale?: boolean | undefined; + } + + interface OverlayOptions extends SharpOptions { + /** Buffer containing image data, String containing the path to an image file, or Create object */ + input?: string | Buffer | { create: Create } | { text: CreateText } | { raw: CreateRaw } | undefined; + /** how to blend this image with the image below. (optional, default `'over'`) */ + blend?: Blend | undefined; + /** gravity at which to place the overlay. (optional, default 'centre') */ + gravity?: Gravity | undefined; + /** the pixel offset from the top edge, an integer between -100000000 and 100000000. */ + top?: number | undefined; + /** the pixel offset from the left edge, an integer between -100000000 and 100000000. */ + left?: number | undefined; + /** set to true to repeat the overlay image across the entire image with the given gravity. (optional, default false) */ + tile?: boolean | undefined; + /** Set to true to avoid premultipling the image below. Equivalent to the --premultiplied vips option. */ + premultiplied?: boolean | undefined; + /** number representing the DPI for vector overlay image. (optional, default 72)*/ + density?: number | undefined; + /** Set to true to read all frames/pages of an animated image. (optional, default false) */ + animated?: boolean | undefined; + /** see sharp() constructor, (optional, default 'warning') */ + failOn?: FailOnOptions | undefined; + /** see sharp() constructor, (optional, default 268402689) */ + limitInputPixels?: number | boolean | undefined; + /** see sharp() constructor, (optional, default false) */ + autoOrient?: boolean | undefined; + } + + interface TileOptions { + /** Tile size in pixels, a value between 1 and 8192. (optional, default 256) */ + size?: number | undefined; + /** Tile overlap in pixels, a value between 0 and 8192. (optional, default 0) */ + overlap?: number | undefined; + /** Tile angle of rotation, must be a multiple of 90. (optional, default 0) */ + angle?: number | undefined; + /** background colour, parsed by the color module, defaults to white without transparency. (optional, default {r:255,g:255,b:255,alpha:1}) */ + background?: ColorLike | undefined; + /** How deep to make the pyramid, possible values are "onepixel", "onetile" or "one" (default based on layout) */ + depth?: string | undefined; + /** Threshold to skip tile generation, a value 0 - 255 for 8-bit images or 0 - 65535 for 16-bit images */ + skipBlanks?: number | undefined; + /** Tile container, with value fs (filesystem) or zip (compressed file). (optional, default 'fs') */ + container?: TileContainer | undefined; + /** Filesystem layout, possible values are dz, iiif, iiif3, zoomify or google. (optional, default 'dz') */ + layout?: TileLayout | undefined; + /** Centre image in tile. (optional, default false) */ + centre?: boolean | undefined; + /** Alternative spelling of centre. (optional, default false) */ + center?: boolean | undefined; + /** When layout is iiif/iiif3, sets the @id/id attribute of info.json (optional, default 'https://example.com/iiif') */ + id?: string | undefined; + /** The name of the directory within the zip file when container is `zip`. */ + basename?: string | undefined; + } + + interface AnimationOptions { + /** Number of animation iterations, a value between 0 and 65535. Use 0 for infinite animation. (optional, default 0) */ + loop?: number | undefined; + /** delay(s) between animation frames (in milliseconds), each value between 0 and 65535. (optional) */ + delay?: number | number[] | undefined; + } + + interface SharpenOptions { + /** The sigma of the Gaussian mask, where sigma = 1 + radius / 2, between 0.000001 and 10000 */ + sigma: number; + /** The level of sharpening to apply to "flat" areas, between 0 and 1000000 (optional, default 1.0) */ + m1?: number | undefined; + /** The level of sharpening to apply to "jagged" areas, between 0 and 1000000 (optional, default 2.0) */ + m2?: number | undefined; + /** Threshold between "flat" and "jagged", between 0 and 1000000 (optional, default 2.0) */ + x1?: number | undefined; + /** Maximum amount of brightening, between 0 and 1000000 (optional, default 10.0) */ + y2?: number | undefined; + /** Maximum amount of darkening, between 0 and 1000000 (optional, default 20.0) */ + y3?: number | undefined; + } + + interface AffineOptions { + /** Parsed by the color module to extract values for red, green, blue and alpha. (optional, default "#000000") */ + background?: string | object | undefined; + /** Input horizontal offset (optional, default 0) */ + idx?: number | undefined; + /** Input vertical offset (optional, default 0) */ + idy?: number | undefined; + /** Output horizontal offset (optional, default 0) */ + odx?: number | undefined; + /** Output horizontal offset (optional, default 0) */ + ody?: number | undefined; + /** Interpolator (optional, default sharp.interpolators.bicubic) */ + interpolator?: Interpolators[keyof Interpolators] | undefined; + } + + interface OutputInfo { + format: string; + size: number; + width: number; + height: number; + channels: Channels; + /** indicating if premultiplication was used */ + premultiplied: boolean; + /** Indicates if the output image has an alpha channel */ + hasAlpha: boolean; + /** Only defined when using a crop strategy */ + cropOffsetLeft?: number | undefined; + /** Only defined when using a crop strategy */ + cropOffsetTop?: number | undefined; + /** Only defined when using a trim method */ + trimOffsetLeft?: number | undefined; + /** Only defined when using a trim method */ + trimOffsetTop?: number | undefined; + /** DPI the font was rendered at, only defined when using `text` input */ + textAutofitDpi?: number | undefined; + /** When using the attention crop strategy, the focal point of the cropped region */ + attentionX?: number | undefined; + attentionY?: number | undefined; + /** Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP */ + pages?: number | undefined; + /** Number of pixels high each page in a multi-page image will be. */ + pageHeight?: number | undefined; + } + + interface AvailableFormatInfo { + id: string; + input: { file: boolean; buffer: boolean; stream: boolean; fileSuffix?: string[] }; + output: { file: boolean; buffer: boolean; stream: boolean; alias?: string[] }; + } + + interface FitEnum { + contain: 'contain'; + cover: 'cover'; + fill: 'fill'; + inside: 'inside'; + outside: 'outside'; + } + + interface KernelEnum { + nearest: 'nearest'; + cubic: 'cubic'; + linear: 'linear'; + mitchell: 'mitchell'; + lanczos2: 'lanczos2'; + lanczos3: 'lanczos3'; + mks2013: 'mks2013'; + mks2021: 'mks2021'; + } + + interface PresetEnum { + default: 'default'; + picture: 'picture'; + photo: 'photo'; + drawing: 'drawing'; + icon: 'icon'; + text: 'text'; + } + + interface BoolEnum { + and: 'and'; + or: 'or'; + eor: 'eor'; + } + + interface ColourspaceEnum { + 'b-w': string; + cmc: string; + cmyk: string; + fourier: string; + grey16: string; + histogram: string; + hsv: string; + lab: string; + labq: string; + labs: string; + lch: string; + matrix: string; + multiband: string; + rgb: string; + rgb16: string; + scrgb: string; + srgb: string; + xyz: string; + yxy: string; + } + + interface DepthEnum { + char: string; + complex: string; + double: string; + dpcomplex: string; + float: string; + int: string; + short: string; + uchar: string; + uint: string; + ushort: string; + } + + type FailOnOptions = 'none' | 'truncated' | 'error' | 'warning'; + + type TextAlign = 'left' | 'centre' | 'center' | 'right'; + + type TextWrap = 'word' | 'char' | 'word-char' | 'none'; + + type HorizontalAlignment = 'left' | 'centre' | 'center' | 'right'; + + type VerticalAlignment = 'top' | 'centre' | 'center' | 'bottom'; + + type TileContainer = 'fs' | 'zip'; + + type TileLayout = 'dz' | 'iiif' | 'iiif3' | 'zoomify' | 'google'; + + type Blend = + | 'clear' + | 'source' + | 'over' + | 'in' + | 'out' + | 'atop' + | 'dest' + | 'dest-over' + | 'dest-in' + | 'dest-out' + | 'dest-atop' + | 'xor' + | 'add' + | 'saturate' + | 'multiply' + | 'screen' + | 'overlay' + | 'darken' + | 'lighten' + | 'color-dodge' + | 'colour-dodge' + | 'color-burn' + | 'colour-burn' + | 'hard-light' + | 'soft-light' + | 'difference' + | 'exclusion'; + + type Gravity = number | string; + + interface GravityEnum { + north: number; + northeast: number; + southeast: number; + south: number; + southwest: number; + west: number; + northwest: number; + east: number; + center: number; + centre: number; + } + + interface StrategyEnum { + entropy: number; + attention: number; + } + + interface FormatEnum { + dcraw: AvailableFormatInfo; + dz: AvailableFormatInfo; + exr: AvailableFormatInfo; + fits: AvailableFormatInfo; + gif: AvailableFormatInfo; + heif: AvailableFormatInfo; + jpeg: AvailableFormatInfo; + jp2: AvailableFormatInfo; + jxl: AvailableFormatInfo; + magick: AvailableFormatInfo; + openslide: AvailableFormatInfo; + pdf: AvailableFormatInfo; + png: AvailableFormatInfo; + ppm: AvailableFormatInfo; + rad: AvailableFormatInfo; + raw: AvailableFormatInfo; + svg: AvailableFormatInfo; + tiff: AvailableFormatInfo; + vips: AvailableFormatInfo; + webp: AvailableFormatInfo; + } + + interface CacheResult { + memory: { current: number; high: number; max: number }; + files: { current: number; max: number }; + items: { current: number; max: number }; + } + + interface Interpolators { + /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */ + nearest: 'nearest'; + /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */ + bilinear: 'bilinear'; + /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */ + bicubic: 'bicubic'; + /** + * [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). + * Prevents some "[acutance](http://en.wikipedia.org/wiki/Acutance)" but typically reduces performance by a factor of 2. + */ + locallyBoundedBicubic: 'lbb'; + /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */ + nohalo: 'nohalo'; + /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents "staircasing" when enlarging. */ + vertexSplitQuadraticBasisSpline: 'vsqbs'; + } + + type Matrix2x2 = [[number, number], [number, number]]; + type Matrix3x3 = [[number, number, number], [number, number, number], [number, number, number]]; + type Matrix4x4 = [[number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number]]; +} + +export = sharp; diff --git a/apps/api/.output/node_modules/sharp/node_modules/.bin/semver b/apps/api/.output/node_modules/sharp/node_modules/.bin/semver new file mode 100644 index 0000000..f2d68be --- /dev/null +++ b/apps/api/.output/node_modules/sharp/node_modules/.bin/semver @@ -0,0 +1,21 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules/semver/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules/semver/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../../../../semver@7.8.5/node_modules/semver/bin/semver.js" "$@" +else + exec node "$basedir/../../../../../semver@7.8.5/node_modules/semver/bin/semver.js" "$@" +fi diff --git a/apps/api/.output/node_modules/sharp/node_modules/.bin/semver.CMD b/apps/api/.output/node_modules/sharp/node_modules/.bin/semver.CMD new file mode 100644 index 0000000..8002613 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/node_modules/.bin/semver.CMD @@ -0,0 +1,12 @@ +@SETLOCAL +@IF NOT DEFINED NODE_PATH ( + @SET "NODE_PATH=E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules\semver\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\node_modules" +) ELSE ( + @SET "NODE_PATH=E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules\semver\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\node_modules;%NODE_PATH%" +) +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\..\..\..\..\semver@7.8.5\node_modules\semver\bin\semver.js" %* +) ELSE ( + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\..\..\..\..\semver@7.8.5\node_modules\semver\bin\semver.js" %* +) diff --git a/apps/api/.output/node_modules/sharp/node_modules/.bin/semver.ps1 b/apps/api/.output/node_modules/sharp/node_modules/.bin/semver.ps1 new file mode 100644 index 0000000..2541b7c --- /dev/null +++ b/apps/api/.output/node_modules/sharp/node_modules/.bin/semver.ps1 @@ -0,0 +1,41 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +$pathsep=":" +$env_node_path=$env:NODE_PATH +$new_node_path="E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules\semver\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\semver@7.8.5\node_modules;E:\imen pishghaman\imen_pishghaman\node_modules\.pnpm\node_modules" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" + $pathsep=";" +} else { + $new_node_path="/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules/semver/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/semver@7.8.5/node_modules:/proc/cygdrive/e/imen pishghaman/imen_pishghaman/node_modules/.pnpm/node_modules" +} +if ([string]::IsNullOrEmpty($env_node_path)) { + $env:NODE_PATH=$new_node_path +} else { + $env:NODE_PATH="$new_node_path$pathsep$env_node_path" +} + +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../../../../../semver@7.8.5/node_modules/semver/bin/semver.js" $args + } else { + & "$basedir/node$exe" "$basedir/../../../../../semver@7.8.5/node_modules/semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../../../../../semver@7.8.5/node_modules/semver/bin/semver.js" $args + } else { + & "node$exe" "$basedir/../../../../../semver@7.8.5/node_modules/semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} +$env:NODE_PATH=$env_node_path +exit $ret diff --git a/apps/api/.output/node_modules/sharp/package.json b/apps/api/.output/node_modules/sharp/package.json new file mode 100644 index 0000000..64daa84 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/package.json @@ -0,0 +1,227 @@ +{ + "name": "sharp", + "description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images", + "version": "0.35.5", + "author": "Lovell Fuller ", + "homepage": "https://sharp.pixelplumbing.com", + "contributors": [ + "Pierre Inglebert ", + "Jonathan Ong ", + "Chanon Sajjamanochai ", + "Juliano Julio ", + "Daniel Gasienica ", + "Julian Walker ", + "Amit Pitaru ", + "Brandon Aaron ", + "Andreas Lind ", + "Maurus Cuelenaere ", + "Linus Unnebäck ", + "Victor Mateevitsi ", + "Alaric Holloway ", + "Bernhard K. Weisshuhn ", + "Chris Riley ", + "David Carley ", + "John Tobin ", + "Kenton Gray ", + "Felix Bünemann ", + "Samy Al Zahrani ", + "Chintan Thakkar ", + "F. Orlando Galashan ", + "Kleis Auke Wolthuizen ", + "Matt Hirsch ", + "Matthias Thoemmes ", + "Patrick Paskaris ", + "Jérémy Lal ", + "Rahul Nanwani ", + "Alice Monday ", + "Kristo Jorgenson ", + "YvesBos ", + "Guy Maliar ", + "Nicolas Coden ", + "Matt Parrish ", + "Marcel Bretschneider ", + "Matthew McEachen ", + "Jarda Kotěšovec ", + "Kenric D'Souza ", + "Oleh Aleinyk ", + "Marcel Bretschneider ", + "Andrea Bianco ", + "Rik Heywood ", + "Thomas Parisot ", + "Nathan Graves ", + "Tom Lokhorst ", + "Espen Hovlandsdal ", + "Sylvain Dumont ", + "Alun Davies ", + "Aidan Hoolachan ", + "Axel Eirola ", + "Freezy ", + "Daiz ", + "Julian Aubourg ", + "Keith Belovay ", + "Michael B. Klein ", + "Jordan Prudhomme ", + "Ilya Ovdin ", + "Andargor ", + "Paul Neave ", + "Brendan Kennedy ", + "Brychan Bennett-Odlum ", + "Edward Silverton ", + "Roman Malieiev ", + "Tomas Szabo ", + "Robert O'Rourke ", + "Guillermo Alfonso Varela Chouciño ", + "Christian Flintrup ", + "Manan Jadhav ", + "Leon Radley ", + "alza54 ", + "Jacob Smith ", + "Michael Nutt ", + "Brad Parham ", + "Taneli Vatanen ", + "Joris Dugué ", + "Chris Banks ", + "Ompal Singh ", + "Brodan ", + "Ankur Parihar ", + "Brahim Ait elhaj ", + "Mart Jansink ", + "Lachlan Newman ", + "Dennis Beatty ", + "Ingvar Stepanyan ", + "Don Denton ", + "Dmytro Tiapukhin ", + "Florian Lefebvre " + ], + "scripts": { + "build": "node install/build.js", + "build:dist": "node scripts/build.mjs", + "clean": "rm -rf src/build/ test/fixtures/output.*", + "test": "npm run lint && npm run test-unit", + "lint": "npm run lint-cpp && npm run lint-js && npm run lint-types && npm run lint-publish", + "lint-cpp": "cpplint --quiet src/*.h src/*.cc", + "lint-js": "biome lint", + "lint-publish": "publint --strict", + "lint-types": "tsd --files ./test/types/sharp.test-d.{cts,mts}", + "test-leak": "./test/leak/leak.sh", + "test-unit": "node --experimental-test-coverage test/unit.mjs", + "package-from-local-build": "node npm/from-local-build.js", + "package-wasm-wrappers": "node npm/wasm-wrappers.js", + "package-release-notes": "node npm/release-notes.js", + "docs-build": "node docs/build.mjs", + "docs-serve": "cd docs && npm start", + "docs-publish": "cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp" + }, + "type": "commonjs", + "files": [ + "dist", + "install", + "lib/index.d.ts", + "src/*.{cc,h,gyp}" + ], + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + } + }, + "sideEffects": true, + "repository": { + "type": "git", + "url": "git+https://github.com/lovell/sharp.git" + }, + "keywords": [ + "jpeg", + "png", + "webp", + "avif", + "tiff", + "gif", + "svg", + "jp2", + "dzi", + "image", + "resize", + "thumbnail", + "crop", + "embed", + "libvips", + "vips" + ], + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + }, + "devDependencies": { + "@biomejs/biome": "^2.5.14", + "@cpplint/cli": "^0.1.0", + "@emnapi/runtime": "^1.11.3", + "@img/sharp-libvips-dev": "1.3.4", + "@img/sharp-libvips-dev-wasm32": "1.3.4", + "@img/sharp-libvips-win32-arm64": "1.3.4", + "@img/sharp-libvips-win32-ia32": "1.3.4", + "@img/sharp-libvips-win32-x64": "1.3.4", + "@types/node": "*", + "emnapi": "^1.11.3", + "exif-reader": "^2.0.3", + "icc": "^4.0.0", + "node-addon-api": "^8.9.2", + "node-gyp": "^12.4.0", + "publint": "^0.3.24", + "tar-fs": "^3.1.3", + "tsd": "^0.33.0", + "yauzl": "^3.4.0" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=20.9.0" + }, + "config": { + "libvips": ">=8.18.7" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } +} diff --git a/apps/api/.output/node_modules/sharp/src/binding.gyp b/apps/api/.output/node_modules/sharp/src/binding.gyp new file mode 100644 index 0000000..71b2c92 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/binding.gyp @@ -0,0 +1,303 @@ +# Copyright 2013 Lovell Fuller and others. +# SPDX-License-Identifier: Apache-2.0 + +{ # noqa: B018 + 'variables': { + 'vips_version': ' +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "./common.h" + +using vips::VImage; + +namespace sharp { + + // Convenience methods to access the attributes of a Napi::Object + bool HasAttr(Napi::Object obj, std::string attr) { + return obj.Has(attr); + } + std::string AttrAsStr(Napi::Object obj, std::string attr) { + return obj.Get(attr).As(); + } + std::string AttrAsStr(Napi::Object obj, unsigned int const attr) { + return obj.Get(attr).As(); + } + uint32_t AttrAsUint32(Napi::Object obj, std::string attr) { + return obj.Get(attr).As().Uint32Value(); + } + int32_t AttrAsInt32(Napi::Object obj, std::string attr) { + return obj.Get(attr).As().Int32Value(); + } + int32_t AttrAsInt32(Napi::Object obj, unsigned int const attr) { + return obj.Get(attr).As().Int32Value(); + } + int64_t AttrAsInt64(Napi::Object obj, std::string attr) { + return obj.Get(attr).As().Int64Value(); + } + double AttrAsDouble(Napi::Object obj, std::string attr) { + return obj.Get(attr).As().DoubleValue(); + } + double AttrAsDouble(Napi::Object obj, unsigned int const attr) { + return obj.Get(attr).As().DoubleValue(); + } + bool AttrAsBool(Napi::Object obj, std::string attr) { + return obj.Get(attr).As().Value(); + } + std::vector AttrAsVectorOfDouble(Napi::Object obj, std::string attr) { + Napi::Array napiArray = obj.Get(attr).As(); + std::vector vectorOfDouble(napiArray.Length()); + for (unsigned int i = 0; i < napiArray.Length(); i++) { + vectorOfDouble[i] = AttrAsDouble(napiArray, i); + } + return vectorOfDouble; + } + std::vector AttrAsInt32Vector(Napi::Object obj, std::string attr) { + Napi::Array array = obj.Get(attr).As(); + std::vector vector(array.Length()); + for (unsigned int i = 0; i < array.Length(); i++) { + vector[i] = AttrAsInt32(array, i); + } + return vector; + } + + // Create an InputDescriptor instance from a Napi::Object describing an input image + InputDescriptor* CreateInputDescriptor(Napi::Object input) { + InputDescriptor *descriptor = new InputDescriptor; + if (HasAttr(input, "file")) { + descriptor->file = AttrAsStr(input, "file"); + } else if (HasAttr(input, "buffer")) { + Napi::Buffer buffer = input.Get("buffer").As>(); + descriptor->bufferLength = buffer.Length(); + descriptor->buffer = buffer.Data(); + descriptor->isBuffer = true; + } + descriptor->failOn = AttrAsEnum(input, "failOn", VIPS_TYPE_FAIL_ON); + // Density for vector-based input + if (HasAttr(input, "density")) { + descriptor->density = AttrAsDouble(input, "density"); + } + // Should we ignore any embedded ICC profile + if (HasAttr(input, "ignoreIcc")) { + descriptor->ignoreIcc = AttrAsBool(input, "ignoreIcc"); + } + // Raw pixel input + if (HasAttr(input, "rawChannels")) { + descriptor->rawDepth = AttrAsEnum(input, "rawDepth", VIPS_TYPE_BAND_FORMAT); + descriptor->rawChannels = AttrAsUint32(input, "rawChannels"); + descriptor->rawWidth = AttrAsUint32(input, "rawWidth"); + descriptor->rawHeight = AttrAsUint32(input, "rawHeight"); + descriptor->rawPremultiplied = AttrAsBool(input, "rawPremultiplied"); + descriptor->rawPageHeight = AttrAsUint32(input, "rawPageHeight"); + } + // Multi-page input (GIF, TIFF, PDF) + if (HasAttr(input, "pages")) { + descriptor->pages = AttrAsInt32(input, "pages"); + } + if (HasAttr(input, "page")) { + descriptor->page = AttrAsUint32(input, "page"); + } + // SVG + if (HasAttr(input, "svgStylesheet")) { + descriptor->svgStylesheet = AttrAsStr(input, "svgStylesheet"); + } + if (HasAttr(input, "svgHighBitdepth")) { + descriptor->svgHighBitdepth = AttrAsBool(input, "svgHighBitdepth"); + } + // Multi-level input (OpenSlide) + if (HasAttr(input, "openSlideLevel")) { + descriptor->openSlideLevel = AttrAsUint32(input, "openSlideLevel"); + } + // subIFD (OME-TIFF) + if (HasAttr(input, "tiffSubifd")) { + descriptor->tiffSubifd = AttrAsInt32(input, "tiffSubifd"); + } + // // PDF background color + if (HasAttr(input, "pdfBackground")) { + descriptor->pdfBackground = AttrAsVectorOfDouble(input, "pdfBackground"); + } + // Use JPEG 2000 oneshot mode? + if (HasAttr(input, "jp2Oneshot")) { + descriptor->jp2Oneshot = AttrAsBool(input, "jp2Oneshot"); + } + // Create new image + if (HasAttr(input, "createChannels")) { + descriptor->createChannels = AttrAsUint32(input, "createChannels"); + descriptor->createWidth = AttrAsUint32(input, "createWidth"); + descriptor->createHeight = AttrAsUint32(input, "createHeight"); + descriptor->createPageHeight = AttrAsUint32(input, "createPageHeight"); + if (HasAttr(input, "createNoiseType")) { + descriptor->createNoiseType = AttrAsStr(input, "createNoiseType"); + descriptor->createNoiseMean = AttrAsDouble(input, "createNoiseMean"); + descriptor->createNoiseSigma = AttrAsDouble(input, "createNoiseSigma"); + } else { + descriptor->createBackground = AttrAsVectorOfDouble(input, "createBackground"); + } + } + // Create new image with text + if (HasAttr(input, "textValue")) { + descriptor->textValue = AttrAsStr(input, "textValue"); + if (HasAttr(input, "textFont")) { + descriptor->textFont = AttrAsStr(input, "textFont"); + } + if (HasAttr(input, "textFontfile")) { + descriptor->textFontfile = AttrAsStr(input, "textFontfile"); + } + if (HasAttr(input, "textWidth")) { + descriptor->textWidth = AttrAsUint32(input, "textWidth"); + } + if (HasAttr(input, "textHeight")) { + descriptor->textHeight = AttrAsUint32(input, "textHeight"); + } + if (HasAttr(input, "textAlign")) { + descriptor->textAlign = AttrAsEnum(input, "textAlign", VIPS_TYPE_ALIGN); + } + if (HasAttr(input, "textJustify")) { + descriptor->textJustify = AttrAsBool(input, "textJustify"); + } + if (HasAttr(input, "textDpi")) { + descriptor->textDpi = AttrAsUint32(input, "textDpi"); + } + if (HasAttr(input, "textRgba")) { + descriptor->textRgba = AttrAsBool(input, "textRgba"); + } + if (HasAttr(input, "textSpacing")) { + descriptor->textSpacing = AttrAsUint32(input, "textSpacing"); + } + if (HasAttr(input, "textWrap")) { + descriptor->textWrap = AttrAsEnum(input, "textWrap", VIPS_TYPE_TEXT_WRAP); + } + } + // Join images together + if (HasAttr(input, "joinAnimated")) { + descriptor->joinAnimated = AttrAsBool(input, "joinAnimated"); + } + if (HasAttr(input, "joinAcross")) { + descriptor->joinAcross = AttrAsUint32(input, "joinAcross"); + } + if (HasAttr(input, "joinShim")) { + descriptor->joinShim = AttrAsUint32(input, "joinShim"); + } + if (HasAttr(input, "joinBackground")) { + descriptor->joinBackground = AttrAsVectorOfDouble(input, "joinBackground"); + } + if (HasAttr(input, "joinHalign")) { + descriptor->joinHalign = AttrAsEnum(input, "joinHalign", VIPS_TYPE_ALIGN); + } + if (HasAttr(input, "joinValign")) { + descriptor->joinValign = AttrAsEnum(input, "joinValign", VIPS_TYPE_ALIGN); + } + descriptor->limitInputPixels = static_cast(AttrAsInt64(input, "limitInputPixels")); + descriptor->limitInputChannels = static_cast(AttrAsInt64(input, "limitInputChannels")); + if (HasAttr(input, "access")) { + descriptor->access = AttrAsBool(input, "sequentialRead") ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_RANDOM; + } + // Remove safety features and allow unlimited input + descriptor->unlimited = AttrAsBool(input, "unlimited"); + // Use the EXIF orientation to auto orient the image + descriptor->autoOrient = AttrAsBool(input, "autoOrient"); + return descriptor; + } + + // How many tasks are in the queue? + std::atomic counterQueue{0}; + + // How many tasks are being processed? + std::atomic counterProcess{0}; + + // Filename extension checkers + static bool EndsWith(std::string const &str, std::string const &end) { + return str.length() >= end.length() && 0 == str.compare(str.length() - end.length(), end.length(), end); + } + bool IsJpeg(std::string const &str) { + return EndsWith(str, ".jpg") || EndsWith(str, ".jpeg") || EndsWith(str, ".JPG") || EndsWith(str, ".JPEG"); + } + bool IsPng(std::string const &str) { + return EndsWith(str, ".png") || EndsWith(str, ".PNG"); + } + bool IsWebp(std::string const &str) { + return EndsWith(str, ".webp") || EndsWith(str, ".WEBP"); + } + bool IsGif(std::string const &str) { + return EndsWith(str, ".gif") || EndsWith(str, ".GIF"); + } + bool IsJp2(std::string const &str) { + return EndsWith(str, ".jp2") || EndsWith(str, ".jpx") || EndsWith(str, ".j2k") || EndsWith(str, ".j2c") + || EndsWith(str, ".JP2") || EndsWith(str, ".JPX") || EndsWith(str, ".J2K") || EndsWith(str, ".J2C"); + } + bool IsTiff(std::string const &str) { + return EndsWith(str, ".tif") || EndsWith(str, ".tiff") || EndsWith(str, ".TIF") || EndsWith(str, ".TIFF"); + } + bool IsHeic(std::string const &str) { + return EndsWith(str, ".heic") || EndsWith(str, ".HEIC"); + } + bool IsHeif(std::string const &str) { + return EndsWith(str, ".heif") || EndsWith(str, ".HEIF") || IsHeic(str) || IsAvif(str); + } + bool IsAvif(std::string const &str) { + return EndsWith(str, ".avif") || EndsWith(str, ".AVIF"); + } + bool IsJxl(std::string const &str) { + return EndsWith(str, ".jxl") || EndsWith(str, ".JXL"); + } + bool IsDz(std::string const &str) { + return EndsWith(str, ".dzi") || EndsWith(str, ".DZI"); + } + bool IsDzZip(std::string const &str) { + return EndsWith(str, ".zip") || EndsWith(str, ".ZIP") || EndsWith(str, ".szi") || EndsWith(str, ".SZI"); + } + bool IsV(std::string const &str) { + return EndsWith(str, ".v") || EndsWith(str, ".V") || EndsWith(str, ".vips") || EndsWith(str, ".VIPS"); + } + + /* + Trim space from end of string. + */ + std::string TrimEnd(std::string const &str) { + return str.substr(0, str.find_last_not_of(" \n\r\f") + 1); + } + + /* + Provide a string identifier for the given image type. + */ + std::string ImageTypeId(ImageType const imageType) { + std::string id; + switch (imageType) { + case ImageType::JPEG: id = "jpeg"; break; + case ImageType::PNG: id = "png"; break; + case ImageType::WEBP: id = "webp"; break; + case ImageType::TIFF: id = "tiff"; break; + case ImageType::GIF: id = "gif"; break; + case ImageType::JP2: id = "jp2"; break; + case ImageType::SVG: id = "svg"; break; + case ImageType::HEIF: id = "heif"; break; + case ImageType::PDF: id = "pdf"; break; + case ImageType::MAGICK: id = "magick"; break; + case ImageType::OPENSLIDE: id = "openslide"; break; + case ImageType::PPM: id = "ppm"; break; + case ImageType::FITS: id = "fits"; break; + case ImageType::EXR: id = "exr"; break; + case ImageType::JXL: id = "jxl"; break; + case ImageType::RAD: id = "rad"; break; + case ImageType::DCRAW: id = "dcraw"; break; + case ImageType::UHDR: id = "uhdr"; break; + case ImageType::VIPS: id = "vips"; break; + case ImageType::RAW: id = "raw"; break; + case ImageType::UNKNOWN: id = "unknown"; break; + case ImageType::MISSING: id = "missing"; break; + } + return id; + } + + /** + * Regenerate this table with something like: + * + * $ vips -l foreign | grep -i load | awk '{ print $2, $1; }' + * + * Plus a bit of editing. + */ + std::map loaderToType = { + { "VipsForeignLoadJpegFile", ImageType::JPEG }, + { "VipsForeignLoadJpegBuffer", ImageType::JPEG }, + { "VipsForeignLoadPngFile", ImageType::PNG }, + { "VipsForeignLoadPngBuffer", ImageType::PNG }, + { "VipsForeignLoadWebpFile", ImageType::WEBP }, + { "VipsForeignLoadWebpBuffer", ImageType::WEBP }, + { "VipsForeignLoadTiffFile", ImageType::TIFF }, + { "VipsForeignLoadTiffBuffer", ImageType::TIFF }, + { "VipsForeignLoadGifFile", ImageType::GIF }, + { "VipsForeignLoadGifBuffer", ImageType::GIF }, + { "VipsForeignLoadNsgifFile", ImageType::GIF }, + { "VipsForeignLoadNsgifBuffer", ImageType::GIF }, + { "VipsForeignLoadJp2kBuffer", ImageType::JP2 }, + { "VipsForeignLoadJp2kFile", ImageType::JP2 }, + { "VipsForeignLoadSvgFile", ImageType::SVG }, + { "VipsForeignLoadSvgBuffer", ImageType::SVG }, + { "VipsForeignLoadHeifFile", ImageType::HEIF }, + { "VipsForeignLoadHeifBuffer", ImageType::HEIF }, + { "VipsForeignLoadPdfFile", ImageType::PDF }, + { "VipsForeignLoadPdfBuffer", ImageType::PDF }, + { "VipsForeignLoadMagickFile", ImageType::MAGICK }, + { "VipsForeignLoadMagickBuffer", ImageType::MAGICK }, + { "VipsForeignLoadMagick7File", ImageType::MAGICK }, + { "VipsForeignLoadMagick7Buffer", ImageType::MAGICK }, + { "VipsForeignLoadOpenslideFile", ImageType::OPENSLIDE }, + { "VipsForeignLoadPpmFile", ImageType::PPM }, + { "VipsForeignLoadFitsFile", ImageType::FITS }, + { "VipsForeignLoadOpenexr", ImageType::EXR }, + { "VipsForeignLoadJxlFile", ImageType::JXL }, + { "VipsForeignLoadJxlBuffer", ImageType::JXL }, + { "VipsForeignLoadRadFile", ImageType::RAD }, + { "VipsForeignLoadRadBuffer", ImageType::RAD }, + { "VipsForeignLoadDcRawFile", ImageType::DCRAW }, + { "VipsForeignLoadDcRawBuffer", ImageType::DCRAW }, + { "VipsForeignLoadUhdr", ImageType::UHDR }, + { "VipsForeignLoadUhdrFile", ImageType::UHDR }, + { "VipsForeignLoadUhdrBuffer", ImageType::UHDR }, + { "VipsForeignLoadVips", ImageType::VIPS }, + { "VipsForeignLoadVipsFile", ImageType::VIPS }, + { "VipsForeignLoadRaw", ImageType::RAW } + }; + + /* + Determine image format of a buffer. + */ + ImageType DetermineImageType(void *buffer, size_t const length) { + ImageType imageType = ImageType::UNKNOWN; + char const *load = vips_foreign_find_load_buffer(buffer, length); + if (load != nullptr) { + auto it = loaderToType.find(load); + if (it != loaderToType.end()) { + imageType = it->second; + } + } + if (imageType == ImageType::UHDR) { + imageType = ImageType::JPEG; + } + return imageType; + } + + /* + Determine image format, reads the first few bytes of the file + */ + ImageType DetermineImageType(char const *file) { + ImageType imageType = ImageType::UNKNOWN; + char const *load = vips_foreign_find_load(file); + if (load != nullptr) { + auto it = loaderToType.find(load); + if (it != loaderToType.end()) { + imageType = it->second; + } + } else { + if (EndsWith(vips::VError().what(), " does not exist\n")) { + imageType = ImageType::MISSING; + } + } + if (imageType == ImageType::UHDR) { + imageType = ImageType::JPEG; + } + return imageType; + } + + /* + Does this image type support multiple pages? + */ + bool ImageTypeSupportsPage(ImageType imageType) { + return + imageType == ImageType::WEBP || + imageType == ImageType::MAGICK || + imageType == ImageType::GIF || + imageType == ImageType::JP2 || + imageType == ImageType::TIFF || + imageType == ImageType::HEIF || + imageType == ImageType::PDF; + } + + /* + Does this image type support removal of safety limits? + */ + bool ImageTypeSupportsUnlimited(ImageType imageType) { + return + imageType == ImageType::JPEG || + imageType == ImageType::PNG || + imageType == ImageType::SVG || + imageType == ImageType::TIFF || + imageType == ImageType::HEIF; + } + + /* + Format-specific options builder + */ + vips::VOption* GetOptionsForImageType(ImageType imageType, InputDescriptor *descriptor) { + vips::VOption *option = VImage::option() + ->set("access", descriptor->access) + ->set("fail_on", descriptor->failOn); + if (descriptor->unlimited && ImageTypeSupportsUnlimited(imageType)) { + option->set("unlimited", true); + } + if (ImageTypeSupportsPage(imageType)) { + option->set("n", descriptor->pages); + option->set("page", std::max(0, descriptor->page)); + } + switch (imageType) { + case ImageType::SVG: + option->set("dpi", descriptor->density) + ->set("stylesheet", descriptor->svgStylesheet.data()) + ->set("high_bitdepth", descriptor->svgHighBitdepth); + break; + case ImageType::TIFF: + option->set("subifd", descriptor->tiffSubifd); + break; + case ImageType::PDF: + option->set("dpi", descriptor->density) + ->set("background", descriptor->pdfBackground); + break; + case ImageType::OPENSLIDE: + option->set("level", descriptor->openSlideLevel); + break; + case ImageType::JP2: + option->set("oneshot", descriptor->jp2Oneshot); + break; + case ImageType::MAGICK: + option->set("density", std::to_string(descriptor->density).data()); + break; + default: + break; + } + return option; + } + + /* + Should HEIF image be re-opened using the primary item? + */ + static bool HeifPrimaryPageReopen(VImage image, InputDescriptor *descriptor) { + if (image.get_typeof(VIPS_META_N_PAGES) == G_TYPE_INT && image.get_typeof("heif-primary") == G_TYPE_INT) { + if (image.get_int(VIPS_META_N_PAGES) > 1 && descriptor->pages == 1 && descriptor->page == -1) { + int const pagePrimary = image.get_int("heif-primary"); + if (pagePrimary != 0) { + descriptor->page = pagePrimary; + return true; + } + } + } + return false; + } + + /* + Open an image from the given InputDescriptor (filesystem, compressed buffer, raw pixel data) + */ + std::tuple OpenInput(InputDescriptor *descriptor) { + VImage image; + ImageType imageType; + if (descriptor->isBuffer) { + if (descriptor->rawChannels > 0) { + // Raw, uncompressed pixel data + bool const is8bit = vips_band_format_is8bit(descriptor->rawDepth); + image = VImage::new_from_memory(descriptor->buffer, descriptor->bufferLength, + descriptor->rawWidth, descriptor->rawHeight, descriptor->rawChannels, descriptor->rawDepth); + if (descriptor->rawChannels < 3) { + image.get_image()->Type = is8bit ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_GREY16; + } else { + image.get_image()->Type = is8bit ? VIPS_INTERPRETATION_sRGB : VIPS_INTERPRETATION_RGB16; + } + if (descriptor->rawPageHeight > 0) { + image.set(VIPS_META_PAGE_HEIGHT, descriptor->rawPageHeight); + image.set(VIPS_META_N_PAGES, static_cast(descriptor->rawHeight / descriptor->rawPageHeight)); + } + if (descriptor->rawPremultiplied) { + image = image.unpremultiply(); + } + imageType = ImageType::RAW; + } else { + // Compressed data + imageType = DetermineImageType(descriptor->buffer, descriptor->bufferLength); + if (imageType != ImageType::UNKNOWN) { + try { + vips::VOption *option = GetOptionsForImageType(imageType, descriptor); + image = VImage::new_from_buffer(descriptor->buffer, descriptor->bufferLength, nullptr, option); + if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) { + image = SetDensity(image, descriptor->density); + } else if (imageType == ImageType::HEIF && HeifPrimaryPageReopen(image, descriptor)) { + option = GetOptionsForImageType(imageType, descriptor); + image = VImage::new_from_buffer(descriptor->buffer, descriptor->bufferLength, nullptr, option); + } + } catch (std::runtime_error const &err) { + throw std::runtime_error(std::string("Input buffer has corrupt header: ") + err.what()); + } + } else { + throw std::runtime_error("Input buffer contains unsupported image format"); + } + } + } else { + int const channels = descriptor->createChannels; + if (channels > 0) { + // Create new image + if (descriptor->createNoiseType == "gaussian") { + std::vector bands = {}; + bands.reserve(channels); + for (int _band = 0; _band < channels; _band++) { + bands.push_back(VImage::gaussnoise(descriptor->createWidth, descriptor->createHeight, VImage::option() + ->set("mean", descriptor->createNoiseMean) + ->set("sigma", descriptor->createNoiseSigma))); + } + image = VImage::bandjoin(bands).copy(VImage::option()->set("interpretation", + channels < 3 ? VIPS_INTERPRETATION_B_W: VIPS_INTERPRETATION_sRGB)); + } else { + std::vector background = { + descriptor->createBackground[0], + descriptor->createBackground[1], + descriptor->createBackground[2] + }; + if (channels == 4) { + background.push_back(descriptor->createBackground[3]); + } + image = VImage::black(descriptor->createWidth, descriptor->createHeight, + VImage::option()->set("bands", channels)) + .copy(VImage::option()->set("interpretation", VIPS_INTERPRETATION_sRGB)) + .linear(std::vector(channels, 0.0), background, VImage::option()->set("uchar", true)); + } + if (descriptor->createPageHeight > 0) { + image.set(VIPS_META_PAGE_HEIGHT, descriptor->createPageHeight); + image.set(VIPS_META_N_PAGES, static_cast(descriptor->createHeight / descriptor->createPageHeight)); + } + image = image.cast(VIPS_FORMAT_UCHAR); + imageType = ImageType::RAW; + } else if (descriptor->textValue.length() > 0) { + // Create a new image with text + vips::VOption *textOptions = VImage::option() + ->set("align", descriptor->textAlign) + ->set("justify", descriptor->textJustify) + ->set("rgba", descriptor->textRgba) + ->set("spacing", descriptor->textSpacing) + ->set("wrap", descriptor->textWrap) + ->set("autofit_dpi", &descriptor->textAutofitDpi); + if (descriptor->textWidth > 0) { + textOptions->set("width", descriptor->textWidth); + } + // Ignore dpi if height is set + if (descriptor->textWidth > 0 && descriptor->textHeight > 0) { + textOptions->set("height", descriptor->textHeight); + } else if (descriptor->textDpi > 0) { + textOptions->set("dpi", descriptor->textDpi); + } + if (descriptor->textFont.length() > 0) { + textOptions->set("font", const_cast(descriptor->textFont.data())); + } + if (descriptor->textFontfile.length() > 0) { + textOptions->set("fontfile", const_cast(descriptor->textFontfile.data())); + } + image = VImage::text(const_cast(descriptor->textValue.data()), textOptions); + if (!descriptor->textRgba) { + image = image.copy(VImage::option()->set("interpretation", VIPS_INTERPRETATION_B_W)); + } + imageType = ImageType::RAW; + } else { + // From filesystem + imageType = DetermineImageType(descriptor->file.data()); + if (imageType == ImageType::MISSING) { + if (descriptor->file.find("file.substr(0, 8) + "...')?"); + } + throw std::runtime_error("Input file is missing: " + descriptor->file); + } + if (imageType != ImageType::UNKNOWN) { + try { + vips::VOption *option = GetOptionsForImageType(imageType, descriptor); + image = VImage::new_from_file(descriptor->file.data(), option); + if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) { + image = SetDensity(image, descriptor->density); + } else if (imageType == ImageType::HEIF && HeifPrimaryPageReopen(image, descriptor)) { + option = GetOptionsForImageType(imageType, descriptor); + image = VImage::new_from_file(descriptor->file.data(), option); + } + } catch (std::runtime_error const &err) { + throw std::runtime_error(std::string("Input file has corrupt header: ") + err.what()); + } + } else { + throw std::runtime_error("Input file contains unsupported image format"); + } + } + } + + // Limit input images to a given number of pixels, where pixels = width * height + if (descriptor->limitInputPixels > 0 && + static_cast(image.width()) * image.height() > descriptor->limitInputPixels) { + throw std::runtime_error("Input image exceeds pixel limit"); + } + if (descriptor->limitInputChannels > 0 && static_cast(image.bands()) > descriptor->limitInputChannels) { + throw std::runtime_error("Input image exceeds channel limit"); + } + return std::make_tuple(image, imageType); + } + + /* + Does this image have an embedded profile? + */ + bool HasProfile(VImage image) { + return image.get_typeof(VIPS_META_ICC_NAME) == VIPS_TYPE_BLOB; + } + + /* + Get copy of embedded profile. + */ + std::pair GetProfile(VImage image) { + std::pair icc(nullptr, 0); + if (HasProfile(image)) { + size_t length; + const void *data = image.get_blob(VIPS_META_ICC_NAME, &length); + icc.first = static_cast(vips_malloc(reinterpret_cast(image.get_image()), length)); + icc.second = length; + memcpy(icc.first, data, length); + } + return icc; + } + + /* + Set embedded profile. + */ + VImage SetProfile(VImage image, std::pair icc) { + if (icc.first != nullptr) { + image = image.copy(); + image.set(VIPS_META_ICC_NAME, nullptr, icc.first, icc.second); + } + return image; + } + + static void* RemoveExifCallback(VipsImage *image, char const *field, GValue *value, void *data) { + std::vector *fieldNames = static_cast *>(data); + std::string fieldName(field); + if (fieldName.substr(0, 8) == ("exif-ifd")) { + fieldNames->push_back(fieldName); + } + return nullptr; + } + + /* + Remove all EXIF-related image fields. + */ + VImage RemoveExif(VImage image) { + std::vector fieldNames; + vips_image_map(image.get_image(), static_cast(RemoveExifCallback), &fieldNames); + for (const auto& f : fieldNames) { + image.remove(f.data()); + } + return image; + } + + /* + Get EXIF Orientation of image, if any. + */ + int ExifOrientation(VImage image) { + int orientation = 0; + if (image.get_typeof(VIPS_META_ORIENTATION) != 0) { + orientation = image.get_int(VIPS_META_ORIENTATION); + } + return orientation; + } + + /* + Set EXIF Orientation of image. + */ + VImage SetExifOrientation(VImage image, int const orientation) { + VImage copy = image.copy(); + copy.set(VIPS_META_ORIENTATION, orientation); + return copy; + } + + /* + Remove EXIF Orientation from image. + */ + VImage RemoveExifOrientation(VImage image) { + VImage copy = image.copy(); + copy.remove(VIPS_META_ORIENTATION); + copy.remove("exif-ifd0-Orientation"); + return copy; + } + + /* + Set animation properties if necessary. + */ + VImage SetAnimationProperties(VImage image, int nPages, int pageHeight, std::vector delay, int loop) { + bool hasDelay = !delay.empty(); + VImage copy = image.copy(); + + // Only set page-height and n-pages if we have more than one page, or this + // could accidentally turn into an animated image later. + if (nPages > 1) { + copy.set(VIPS_META_PAGE_HEIGHT, pageHeight); + copy.set(VIPS_META_N_PAGES, nPages); + } + if (hasDelay) { + if (delay.size() == 1) { + // We have just one delay, repeat that value for all frames. + delay.insert(delay.end(), nPages - 1, delay[0]); + } + copy.set("delay", delay); + } + if (nPages == 1 && !hasDelay && loop == -1) { + loop = 1; + } + if (loop != -1) copy.set("loop", loop); + + return copy; + } + + /* + Remove animation properties from image. + */ + VImage RemoveAnimationProperties(VImage image) { + VImage copy = image.copy(); + copy.remove(VIPS_META_PAGE_HEIGHT); + copy.remove("delay"); + copy.remove("loop"); + return copy; + } + + /* + Remove GIF palette from image. + */ + VImage RemoveGifPalette(VImage image) { + VImage copy = image.copy(); + copy.remove("gif-palette"); + return copy; + } + + /* + Does this image have a non-default density? + */ + bool HasDensity(VImage image) { + return image.xres() > 1.0; + } + + /* + Get pixels/mm resolution as pixels/inch density. + */ + int GetDensity(VImage image) { + return static_cast(round(image.xres() * 25.4)); + } + + /* + Set pixels/mm resolution based on a pixels/inch density. + */ + VImage SetDensity(VImage image, const double density) { + const double pixelsPerMm = density / 25.4; + VImage copy = image.copy(); + copy.get_image()->Xres = pixelsPerMm; + copy.get_image()->Yres = pixelsPerMm; + return copy; + } + + /* + Multi-page images can have a page height. Fetch it, and sanity check it. + If page-height is not set, it defaults to the image height + */ + int GetPageHeight(VImage image) { + return vips_image_get_page_height(image.get_image()); + } + + /* + Check the proposed format supports the current dimensions. + */ + void AssertImageTypeDimensions(VImage image, ImageType const imageType) { + const int height = image.get_typeof(VIPS_META_PAGE_HEIGHT) == G_TYPE_INT + ? image.get_int(VIPS_META_PAGE_HEIGHT) + : image.height(); + if (imageType == ImageType::JPEG) { + if (image.width() > 65535 || height > 65535) { + throw std::runtime_error("Processed image is too large for the JPEG format"); + } + } else if (imageType == ImageType::WEBP) { + if (image.width() > 16383 || height > 16383) { + throw std::runtime_error("Processed image is too large for the WebP format"); + } + } else if (imageType == ImageType::GIF) { + if (image.width() > 65535 || height > 65535) { + throw std::runtime_error("Processed image is too large for the GIF format"); + } + } else if (imageType == ImageType::HEIF) { + if (image.width() > 16384 || height > 16384) { + throw std::runtime_error("Processed image is too large for the HEIF format"); + } + } + } + + /* + Called when a Buffer undergoes GC, required to support mixed runtime libraries in Windows + */ + std::function FreeCallback = [](void*, char* data) { + g_free(data); + }; + + /* + Temporary buffer of warnings + */ + std::queue vipsWarnings; + std::mutex vipsWarningsMutex; + + /* + Called with warnings from the glib-registered "VIPS" domain + */ + void VipsWarningCallback(char const* log_domain, GLogLevelFlags log_level, char const* message, void* ignore) { + std::lock_guard lock(vipsWarningsMutex); + vipsWarnings.emplace(message); + } + + /* + Pop the oldest warning message from the queue + */ + std::string VipsWarningPop() { + std::string warning; + std::lock_guard lock(vipsWarningsMutex); + if (!vipsWarnings.empty()) { + warning = vipsWarnings.front(); + vipsWarnings.pop(); + } + return warning; + } + + /* + Attach an event listener for progress updates, used to detect timeout + */ + void SetTimeout(VImage image, int const seconds) { + if (seconds > 0) { + VipsImage *im = image.get_image(); + if (im->progress_signal == NULL) { + int *timeout = VIPS_NEW(im, int); + *timeout = seconds; + g_signal_connect(im, "eval", G_CALLBACK(VipsProgressCallBack), timeout); + vips_image_set_progress(im, true); + } + } + } + + /* + Event listener for progress updates, used to detect timeout + */ + void VipsProgressCallBack(VipsImage *im, VipsProgress *progress, int *timeout) { + if (*timeout > 0 && progress->run >= *timeout) { + vips_image_set_kill(im, true); + vips_error("timeout", "%d%% complete", progress->percent); + *timeout = 0; + } + } + + /* + Calculate the (left, top) coordinates of the output image + within the input image, applying the given gravity during an embed. + + @Azurebyte: We are basically swapping the inWidth and outWidth, inHeight and outHeight from the CalculateCrop function. + */ + std::tuple CalculateEmbedPosition(int const inWidth, int const inHeight, + int const outWidth, int const outHeight, int const gravity) { + + int left = 0; + int top = 0; + switch (gravity) { + case 1: + // North + left = (outWidth - inWidth) / 2; + break; + case 2: + // East + left = outWidth - inWidth; + top = (outHeight - inHeight) / 2; + break; + case 3: + // South + left = (outWidth - inWidth) / 2; + top = outHeight - inHeight; + break; + case 4: + // West + top = (outHeight - inHeight) / 2; + break; + case 5: + // Northeast + left = outWidth - inWidth; + break; + case 6: + // Southeast + left = outWidth - inWidth; + top = outHeight - inHeight; + break; + case 7: + // Southwest + top = outHeight - inHeight; + break; + case 8: + // Northwest + // Which is the default is 0,0 so we do not assign anything here. + break; + default: + // Centre + left = (outWidth - inWidth) / 2; + top = (outHeight - inHeight) / 2; + } + return std::make_tuple(left, top); + } + + /* + Calculate the (left, top) coordinates of the output image + within the input image, applying the given gravity during a crop. + */ + std::tuple CalculateCrop(int const inWidth, int const inHeight, + int const outWidth, int const outHeight, int const gravity) { + + int left = 0; + int top = 0; + switch (gravity) { + case 1: + // North + left = (inWidth - outWidth + 1) / 2; + break; + case 2: + // East + left = inWidth - outWidth; + top = (inHeight - outHeight + 1) / 2; + break; + case 3: + // South + left = (inWidth - outWidth + 1) / 2; + top = inHeight - outHeight; + break; + case 4: + // West + top = (inHeight - outHeight + 1) / 2; + break; + case 5: + // Northeast + left = inWidth - outWidth; + break; + case 6: + // Southeast + left = inWidth - outWidth; + top = inHeight - outHeight; + break; + case 7: + // Southwest + top = inHeight - outHeight; + break; + case 8: + // Northwest + break; + default: + // Centre + left = (inWidth - outWidth + 1) / 2; + top = (inHeight - outHeight + 1) / 2; + } + return std::make_tuple(left, top); + } + + /* + Calculate the (left, top) coordinates of the output image + within the input image, applying the given x and y offsets. + */ + std::tuple CalculateCrop(int const inWidth, int const inHeight, + int const outWidth, int const outHeight, int const x, int const y) { + + // default values + int left = 0; + int top = 0; + + // assign only if valid + if (x < (inWidth - outWidth)) { + left = x; + } else if (x >= (inWidth - outWidth)) { + left = inWidth - outWidth; + } + + if (y < (inHeight - outHeight)) { + top = y; + } else if (y >= (inHeight - outHeight)) { + top = inHeight - outHeight; + } + + return std::make_tuple(left, top); + } + + /* + Are pixel values in this image 16-bit integer? + */ + bool Is16Bit(VipsInterpretation const interpretation) { + return interpretation == VIPS_INTERPRETATION_RGB16 || interpretation == VIPS_INTERPRETATION_GREY16; + } + + /* + Convert RGBA value to another colourspace + */ + std::vector GetRgbaAsColourspace(std::vector const rgba, + VipsInterpretation const interpretation, bool premultiply) { + int const bands = static_cast(rgba.size()); + if (bands < 3) { + return rgba; + } + VImage pixel = VImage::new_matrix(1, 1); + pixel.set("bands", bands); + pixel = pixel + .new_from_image(rgba) + .colourspace(interpretation, VImage::option()->set("source_space", VIPS_INTERPRETATION_sRGB)); + if (premultiply) { + pixel = pixel.premultiply(); + } + return pixel(0, 0); + } + + /* + Apply the alpha channel to a given colour + */ + std::tuple> ApplyAlpha(VImage image, std::vector colour, bool premultiply) { + // Scale up 8-bit values to match 16-bit input image + double const multiplier = sharp::Is16Bit(image.interpretation()) ? 256.0 : 1.0; + // Create alphaColour colour + std::vector alphaColour; + if (image.bands() > 2) { + alphaColour = { + multiplier * colour[0], + multiplier * colour[1], + multiplier * colour[2] + }; + } else { + // Convert sRGB to greyscale + alphaColour = { multiplier * ( + 0.2126 * colour[0] + + 0.7152 * colour[1] + + 0.0722 * colour[2]) + }; + } + // Add alpha channel(s) to alphaColour colour + if (colour[3] < 255.0 || image.has_alpha()) { + int extraBands = image.bands() > 4 ? image.bands() - 3 : 1; + alphaColour.insert(alphaColour.end(), extraBands, colour[3] * multiplier); + } + // Ensure alphaColour colour uses correct colourspace + alphaColour = sharp::GetRgbaAsColourspace(alphaColour, image.interpretation(), premultiply); + // Add non-transparent alpha channel, if required + if (colour[3] < 255.0 && !image.has_alpha()) { + image = image.bandjoin_const({ 255 * multiplier }); + } + return std::make_tuple(image, alphaColour); + } + + /* + Removes alpha channels, if any. + */ + VImage RemoveAlpha(VImage image) { + while (image.bands() > 1 && image.has_alpha()) { + image = image.extract_band(0, VImage::option()->set("n", image.bands() - 1)); + } + return image; + } + + /* + Ensures alpha channel, if missing. + */ + VImage EnsureAlpha(VImage image, double const value) { + if (!image.has_alpha()) { + image = image.bandjoin_const({ value * vips_interpretation_max_alpha(image.interpretation()) }); + } + return image; + } + + std::pair ResolveShrink(int width, int height, int targetWidth, int targetHeight, + Canvas canvas, bool withoutEnlargement, bool withoutReduction) { + double hshrink = 1.0; + double vshrink = 1.0; + + if (targetWidth > 0 && targetHeight > 0) { + // Fixed width and height + hshrink = static_cast(width) / targetWidth; + vshrink = static_cast(height) / targetHeight; + + switch (canvas) { + case Canvas::CROP: + case Canvas::MIN: + if (hshrink < vshrink) { + vshrink = hshrink; + } else { + hshrink = vshrink; + } + break; + case Canvas::EMBED: + case Canvas::MAX: + if (hshrink > vshrink) { + vshrink = hshrink; + } else { + hshrink = vshrink; + } + break; + case Canvas::IGNORE_ASPECT: + break; + } + } else if (targetWidth > 0) { + // Fixed width + hshrink = static_cast(width) / targetWidth; + + if (canvas != Canvas::IGNORE_ASPECT) { + // Auto height + vshrink = hshrink; + } + } else if (targetHeight > 0) { + // Fixed height + vshrink = static_cast(height) / targetHeight; + + if (canvas != Canvas::IGNORE_ASPECT) { + // Auto width + hshrink = vshrink; + } + } + + // We should not reduce or enlarge the output image, if + // withoutReduction or withoutEnlargement is specified. + if (withoutReduction) { + // Equivalent of VIPS_SIZE_UP + hshrink = std::min(1.0, hshrink); + vshrink = std::min(1.0, vshrink); + } else if (withoutEnlargement) { + // Equivalent of VIPS_SIZE_DOWN + hshrink = std::max(1.0, hshrink); + vshrink = std::max(1.0, vshrink); + } + + // We don't want to shrink so much that we send an axis to 0 + hshrink = std::min(hshrink, static_cast(width)); + vshrink = std::min(vshrink, static_cast(height)); + + return std::make_pair(hshrink, vshrink); + } + + /* + Ensure decoding remains sequential. + */ + VImage StaySequential(VImage image, bool condition) { + if (vips_image_is_sequential(image.get_image()) && condition) { + image = image.copy_memory().copy(); + image.remove(VIPS_META_SEQUENTIAL); + } + return image; + } + + /* + Does this image have a gain map? + */ + bool HasGainMap(VImage image) { + return image.get_typeof("gainmap") == VIPS_TYPE_BLOB || + image.get_typeof("gainmap-data") == VIPS_TYPE_BLOB; + } + + /* + Removes gain map, if any. + */ + VImage RemoveGainMap(VImage image) { + VImage copy = image.copy(); + copy.remove("gainmap"); + copy.remove("gainmap-data"); + return copy; + } +} // namespace sharp diff --git a/apps/api/.output/node_modules/sharp/src/common.h b/apps/api/.output/node_modules/sharp/src/common.h new file mode 100644 index 0000000..116e066 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/common.h @@ -0,0 +1,421 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef SRC_COMMON_H_ +#define SRC_COMMON_H_ + +#include +#include +#include +#include +#include + +#include +#include + +// Verify platform and compiler compatibility + +#if (VIPS_MAJOR_VERSION < 8) || \ + (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 18) || \ + (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION == 18 && VIPS_MICRO_VERSION < 7) +#error "libvips version 8.18.7+ is required - please see https://sharp.pixelplumbing.com/install" +#endif + +#if defined(__has_include) +#if !__has_include() +#error "C++17 compiler required - please see https://sharp.pixelplumbing.com/install" +#endif +#endif + +#ifdef __EMSCRIPTEN__ +#define SHARP_CALLBACK_FN_NAME Call +#else +#define SHARP_CALLBACK_FN_NAME MakeCallback +#endif + +using vips::VImage; + +namespace sharp { + + struct InputDescriptor { + std::string name; + std::string file; + bool autoOrient; + char *buffer; + VipsFailOn failOn; + uint64_t limitInputPixels; + uint64_t limitInputChannels; + bool unlimited; + VipsAccess access; + size_t bufferLength; + bool isBuffer; + double density; + bool ignoreIcc; + VipsBandFormat rawDepth; + int rawChannels; + int rawWidth; + int rawHeight; + bool rawPremultiplied; + int rawPageHeight; + int pages; + int page; + int createChannels; + int createWidth; + int createHeight; + int createPageHeight; + std::vector createBackground; + std::string createNoiseType; + double createNoiseMean; + double createNoiseSigma; + std::string textValue; + std::string textFont; + std::string textFontfile; + int textWidth; + int textHeight; + VipsAlign textAlign; + bool textJustify; + int textDpi; + bool textRgba; + int textSpacing; + VipsTextWrap textWrap; + int textAutofitDpi; + bool joinAnimated; + int joinAcross; + int joinShim; + std::vector joinBackground; + VipsAlign joinHalign; + VipsAlign joinValign; + std::string svgStylesheet; + bool svgHighBitdepth; + int tiffSubifd; + int openSlideLevel; + std::vector pdfBackground; + bool jp2Oneshot; + + InputDescriptor(): + autoOrient(false), + buffer(nullptr), + failOn(VIPS_FAIL_ON_WARNING), + limitInputPixels(0x3FFF * 0x3FFF), + limitInputChannels(5), + unlimited(false), + access(VIPS_ACCESS_SEQUENTIAL), + bufferLength(0), + isBuffer(false), + density(72.0), + ignoreIcc(false), + rawDepth(VIPS_FORMAT_UCHAR), + rawChannels(0), + rawWidth(0), + rawHeight(0), + rawPremultiplied(false), + rawPageHeight(0), + pages(1), + page(-1), + createChannels(0), + createWidth(0), + createHeight(0), + createPageHeight(0), + createBackground{ 0.0, 0.0, 0.0, 255.0 }, + createNoiseMean(0.0), + createNoiseSigma(0.0), + textWidth(0), + textHeight(0), + textAlign(VIPS_ALIGN_LOW), + textJustify(false), + textDpi(72), + textRgba(false), + textSpacing(0), + textWrap(VIPS_TEXT_WRAP_WORD), + textAutofitDpi(0), + joinAnimated(false), + joinAcross(1), + joinShim(0), + joinBackground{ 0.0, 0.0, 0.0, 255.0 }, + joinHalign(VIPS_ALIGN_LOW), + joinValign(VIPS_ALIGN_LOW), + svgHighBitdepth(false), + tiffSubifd(-1), + openSlideLevel(0), + pdfBackground{ 255.0, 255.0, 255.0, 255.0 }, + jp2Oneshot(false) {} + }; + + // Convenience methods to access the attributes of a Napi::Object + bool HasAttr(Napi::Object obj, std::string attr); + std::string AttrAsStr(Napi::Object obj, std::string attr); + std::string AttrAsStr(Napi::Object obj, unsigned int const attr); + uint32_t AttrAsUint32(Napi::Object obj, std::string attr); + int32_t AttrAsInt32(Napi::Object obj, std::string attr); + int32_t AttrAsInt32(Napi::Object obj, unsigned int const attr); + double AttrAsDouble(Napi::Object obj, std::string attr); + double AttrAsDouble(Napi::Object obj, unsigned int const attr); + bool AttrAsBool(Napi::Object obj, std::string attr); + std::vector AttrAsVectorOfDouble(Napi::Object obj, std::string attr); + std::vector AttrAsInt32Vector(Napi::Object obj, std::string attr); + template T AttrAsEnum(Napi::Object obj, std::string attr, GType type) { + return static_cast( + vips_enum_from_nick(nullptr, type, AttrAsStr(obj, attr).data())); + } + + // Create an InputDescriptor instance from a Napi::Object describing an input image + InputDescriptor* CreateInputDescriptor(Napi::Object input); + + enum class ImageType { + JPEG, + PNG, + WEBP, + JP2, + TIFF, + GIF, + SVG, + HEIF, + PDF, + MAGICK, + OPENSLIDE, + PPM, + FITS, + EXR, + JXL, + RAD, + DCRAW, + UHDR, + VIPS, + RAW, + UNKNOWN, + MISSING + }; + + enum class Canvas { + CROP, + EMBED, + MAX, + MIN, + IGNORE_ASPECT + }; + + // How many tasks are in the queue? + extern std::atomic counterQueue; + + // How many tasks are being processed? + extern std::atomic counterProcess; + + // Filename extension checkers + bool IsJpeg(std::string const &str); + bool IsPng(std::string const &str); + bool IsWebp(std::string const &str); + bool IsJp2(std::string const &str); + bool IsGif(std::string const &str); + bool IsTiff(std::string const &str); + bool IsHeic(std::string const &str); + bool IsHeif(std::string const &str); + bool IsAvif(std::string const &str); + bool IsJxl(std::string const &str); + bool IsDz(std::string const &str); + bool IsDzZip(std::string const &str); + bool IsV(std::string const &str); + + /* + Trim space from end of string. + */ + std::string TrimEnd(std::string const &str); + + /* + Provide a string identifier for the given image type. + */ + std::string ImageTypeId(ImageType const imageType); + + /* + Determine image format of a buffer. + */ + ImageType DetermineImageType(void *buffer, size_t const length); + + /* + Determine image format of a file. + */ + ImageType DetermineImageType(char const *file); + + /* + Format-specific options builder + */ + vips::VOption* GetOptionsForImageType(ImageType imageType, InputDescriptor *descriptor); + + /* + Open an image from the given InputDescriptor (filesystem, compressed buffer, raw pixel data) + */ + std::tuple OpenInput(InputDescriptor *descriptor); + + /* + Does this image have an embedded profile? + */ + bool HasProfile(VImage image); + + /* + Get copy of embedded profile. + */ + std::pair GetProfile(VImage image); + + /* + Set embedded profile. + */ + VImage SetProfile(VImage image, std::pair icc); + + /* + Remove all EXIF-related image fields. + */ + VImage RemoveExif(VImage image); + + /* + Get EXIF Orientation of image, if any. + */ + int ExifOrientation(VImage image); + + /* + Set EXIF Orientation of image. + */ + VImage SetExifOrientation(VImage image, int const orientation); + + /* + Remove EXIF Orientation from image. + */ + VImage RemoveExifOrientation(VImage image); + + /* + Set animation properties if necessary. + */ + VImage SetAnimationProperties(VImage image, int nPages, int pageHeight, std::vector delay, int loop); + + /* + Remove animation properties from image. + */ + VImage RemoveAnimationProperties(VImage image); + + /* + Remove GIF palette from image. + */ + VImage RemoveGifPalette(VImage image); + + /* + Does this image have a non-default density? + */ + bool HasDensity(VImage image); + + /* + Get pixels/mm resolution as pixels/inch density. + */ + int GetDensity(VImage image); + + /* + Set pixels/mm resolution based on a pixels/inch density. + */ + VImage SetDensity(VImage image, const double density); + + /* + Multi-page images can have a page height. Fetch it, and sanity check it. + If page-height is not set, it defaults to the image height + */ + int GetPageHeight(VImage image); + + /* + Check the proposed format supports the current dimensions. + */ + void AssertImageTypeDimensions(VImage image, ImageType const imageType); + + /* + Called when a Buffer undergoes GC, required to support mixed runtime libraries in Windows + */ + extern std::function FreeCallback; + + /* + Called with warnings from the glib-registered "VIPS" domain + */ + void VipsWarningCallback(char const* log_domain, GLogLevelFlags log_level, char const* message, void* ignore); + + /* + Pop the oldest warning message from the queue + */ + std::string VipsWarningPop(); + + /* + Attach an event listener for progress updates, used to detect timeout + */ + void SetTimeout(VImage image, int const timeoutSeconds); + + /* + Event listener for progress updates, used to detect timeout + */ + void VipsProgressCallBack(VipsImage *image, VipsProgress *progress, int *timeoutSeconds); + + /* + Calculate the (left, top) coordinates of the output image + within the input image, applying the given gravity during an embed. + */ + std::tuple CalculateEmbedPosition(int const inWidth, int const inHeight, + int const outWidth, int const outHeight, int const gravity); + + /* + Calculate the (left, top) coordinates of the output image + within the input image, applying the given gravity. + */ + std::tuple CalculateCrop(int const inWidth, int const inHeight, + int const outWidth, int const outHeight, int const gravity); + + /* + Calculate the (left, top) coordinates of the output image + within the input image, applying the given x and y offsets of the output image. + */ + std::tuple CalculateCrop(int const inWidth, int const inHeight, + int const outWidth, int const outHeight, int const x, int const y); + + /* + Are pixel values in this image 16-bit integer? + */ + bool Is16Bit(VipsInterpretation const interpretation); + + /* + Convert RGBA value to another colourspace + */ + std::vector GetRgbaAsColourspace(std::vector const rgba, + VipsInterpretation const interpretation, bool premultiply); + + /* + Apply the alpha channel to a given colour + */ + std::tuple> ApplyAlpha(VImage image, std::vector colour, bool premultiply); + + /* + Removes alpha channels, if any. + */ + VImage RemoveAlpha(VImage image); + + /* + Ensures alpha channel, if missing. + */ + VImage EnsureAlpha(VImage image, double const value); + + /* + Calculate the horizontal and vertical shrink factors, taking the canvas mode into account. + */ + std::pair ResolveShrink(int width, int height, int targetWidth, int targetHeight, + Canvas canvas, bool withoutEnlargement, bool withoutReduction); + + /* + Ensure decoding remains sequential. + */ + VImage StaySequential(VImage image, bool condition = true); + + /* + Does this image have a gain map? + */ + bool HasGainMap(VImage image); + + /* + Removes gain map, if any. + */ + VImage RemoveGainMap(VImage image); + +} // namespace sharp + +#endif // SRC_COMMON_H_ diff --git a/apps/api/.output/node_modules/sharp/src/metadata.cc b/apps/api/.output/node_modules/sharp/src/metadata.cc new file mode 100644 index 0000000..9e027b1 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/metadata.cc @@ -0,0 +1,404 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#include +#include +#include +#include +#include + +#include +#include + +#include "./common.h" +#include "./metadata.h" + +static void* readPNGComment(VipsImage *image, const char *field, GValue *value, void *p); + +class MetadataWorker : public Napi::AsyncWorker { + public: + MetadataWorker(Napi::Function callback, MetadataBaton *baton, Napi::Function debuglog) : + Napi::AsyncWorker(callback), baton(baton), debuglog(Napi::Persistent(debuglog)) {} + ~MetadataWorker() {} + + void Execute() { + // Decrement queued task counter + sharp::counterQueue--; + + vips::VImage image; + sharp::ImageType imageType = sharp::ImageType::UNKNOWN; + try { + std::tie(image, imageType) = OpenInput(baton->input); + } catch (std::runtime_error const &err) { + (baton->err).append(err.what()); + } + if (imageType != sharp::ImageType::UNKNOWN) { + // Image type + baton->format = sharp::ImageTypeId(imageType); + // VipsImage attributes + baton->width = image.width(); + baton->height = image.height(); + baton->space = vips_enum_nick(VIPS_TYPE_INTERPRETATION, image.interpretation()); + baton->channels = image.bands(); + baton->depth = vips_enum_nick(VIPS_TYPE_BAND_FORMAT, image.format()); + if (sharp::HasDensity(image)) { + baton->density = sharp::GetDensity(image); + } + if (image.get_typeof("jpeg-chroma-subsample") == VIPS_TYPE_REF_STRING) { + baton->chromaSubsampling = image.get_string("jpeg-chroma-subsample"); + } + if (image.get_typeof("interlaced") == G_TYPE_INT) { + baton->isProgressive = image.get_int("interlaced") == 1; + } + if (image.get_typeof(VIPS_META_PALETTE) == G_TYPE_INT) { + baton->isPalette = image.get_int(VIPS_META_PALETTE); + } + if (image.get_typeof(VIPS_META_BITS_PER_SAMPLE) == G_TYPE_INT) { + baton->bitsPerSample = image.get_int(VIPS_META_BITS_PER_SAMPLE); + } + if (image.get_typeof(VIPS_META_N_PAGES) == G_TYPE_INT) { + baton->pages = image.get_int(VIPS_META_N_PAGES); + } + if (image.get_typeof(VIPS_META_PAGE_HEIGHT) == G_TYPE_INT) { + baton->pageHeight = image.get_int(VIPS_META_PAGE_HEIGHT); + } + if (image.get_typeof("loop") == G_TYPE_INT) { + baton->loop = image.get_int("loop"); + } + if (image.get_typeof("delay") == VIPS_TYPE_ARRAY_INT) { + baton->delay = image.get_array_int("delay"); + } + if (image.get_typeof("heif-primary") == G_TYPE_INT) { + baton->pagePrimary = image.get_int("heif-primary"); + } + if (image.get_typeof("heif-compression") == VIPS_TYPE_REF_STRING) { + baton->compression = image.get_string("heif-compression"); + } + if (image.get_typeof(VIPS_META_RESOLUTION_UNIT) == VIPS_TYPE_REF_STRING) { + baton->resolutionUnit = image.get_string(VIPS_META_RESOLUTION_UNIT); + } + if (image.get_typeof("magick-format") == VIPS_TYPE_REF_STRING) { + baton->formatMagick = image.get_string("magick-format"); + } + if (image.get_typeof("openslide.level-count") == VIPS_TYPE_REF_STRING) { + int const levels = std::stoi(image.get_string("openslide.level-count")); + for (int l = 0; l < levels; l++) { + std::string prefix = "openslide.level[" + std::to_string(l) + "]."; + int const width = std::stoi(image.get_string((prefix + "width").data())); + int const height = std::stoi(image.get_string((prefix + "height").data())); + baton->levels.push_back(std::pair(width, height)); + } + } + if (image.get_typeof(VIPS_META_N_SUBIFDS) == G_TYPE_INT) { + baton->subifds = image.get_int(VIPS_META_N_SUBIFDS); + } + baton->hasProfile = sharp::HasProfile(image); + if (image.get_typeof("background") == VIPS_TYPE_ARRAY_DOUBLE) { + baton->background = image.get_array_double("background"); + } + // Derived attributes + baton->hasAlpha = image.has_alpha(); + baton->orientation = sharp::ExifOrientation(image); + // EXIF + if (image.get_typeof(VIPS_META_EXIF_NAME) == VIPS_TYPE_BLOB) { + size_t exifLength; + void const *exif = image.get_blob(VIPS_META_EXIF_NAME, &exifLength); + baton->exif = static_cast(g_malloc(exifLength)); + memcpy(baton->exif, exif, exifLength); + baton->exifLength = exifLength; + } + // ICC profile + if (image.get_typeof(VIPS_META_ICC_NAME) == VIPS_TYPE_BLOB) { + size_t iccLength; + void const *icc = image.get_blob(VIPS_META_ICC_NAME, &iccLength); + baton->icc = static_cast(g_malloc(iccLength)); + memcpy(baton->icc, icc, iccLength); + baton->iccLength = iccLength; + } + // IPTC + if (image.get_typeof(VIPS_META_IPTC_NAME) == VIPS_TYPE_BLOB) { + size_t iptcLength; + void const *iptc = image.get_blob(VIPS_META_IPTC_NAME, &iptcLength); + baton->iptc = static_cast(g_malloc(iptcLength)); + memcpy(baton->iptc, iptc, iptcLength); + baton->iptcLength = iptcLength; + } + // XMP + if (image.get_typeof(VIPS_META_XMP_NAME) == VIPS_TYPE_BLOB) { + size_t xmpLength; + void const *xmp = image.get_blob(VIPS_META_XMP_NAME, &xmpLength); + baton->xmp = static_cast(g_malloc(xmpLength)); + memcpy(baton->xmp, xmp, xmpLength); + baton->xmpLength = xmpLength; + } + // TIFFTAG_PHOTOSHOP + if (image.get_typeof(VIPS_META_PHOTOSHOP_NAME) == VIPS_TYPE_BLOB) { + size_t tifftagPhotoshopLength; + void const *tifftagPhotoshop = image.get_blob(VIPS_META_PHOTOSHOP_NAME, &tifftagPhotoshopLength); + baton->tifftagPhotoshop = static_cast(g_malloc(tifftagPhotoshopLength)); + memcpy(baton->tifftagPhotoshop, tifftagPhotoshop, tifftagPhotoshopLength); + baton->tifftagPhotoshopLength = tifftagPhotoshopLength; + } + // Gain Map + if (image.get_typeof("gainmap-data") == VIPS_TYPE_BLOB) { + size_t gainMapLength; + void const *gainMap = image.get_blob("gainmap-data", &gainMapLength); + baton->gainMap = static_cast(g_malloc(gainMapLength)); + memcpy(baton->gainMap, gainMap, gainMapLength); + baton->gainMapLength = gainMapLength; + } + // PNG comments + vips_image_map(image.get_image(), readPNGComment, &baton->comments); + // Media type + std::string mediaType; + switch (imageType) { + case sharp::ImageType::JPEG: + case sharp::ImageType::PNG: + case sharp::ImageType::WEBP: + case sharp::ImageType::JP2: + case sharp::ImageType::TIFF: + case sharp::ImageType::GIF: + case sharp::ImageType::FITS: + case sharp::ImageType::JXL: + baton->mediaType = "image/" + baton->format; + break; + case sharp::ImageType::SVG: + baton->mediaType = "image/svg+xml"; + break; + case sharp::ImageType::HEIF: + if (baton->compression == "av1") { + baton->mediaType = "image/avif"; + } else if (baton->compression == "hevc") { + baton->mediaType = "image/heic"; + } + break; + case sharp::ImageType::PDF: + baton->mediaType = "application/pdf"; + break; + case sharp::ImageType::OPENSLIDE: + baton->mediaType = "image/tiff"; + break; + case sharp::ImageType::PPM: + baton->mediaType = "image/x-portable-pixmap"; + break; + case sharp::ImageType::EXR: + baton->mediaType = "image/x-exr"; + break; + case sharp::ImageType::RAD: + baton->mediaType = "image/vnd.radiance"; + break; + case sharp::ImageType::UHDR: + baton->mediaType = "image/jpeg"; + break; + default: + break; + } + } + + // Clean up + vips_error_clear(); + vips_thread_shutdown(); + } + + void OnOK() { + Napi::Env env = Env(); + Napi::HandleScope scope(env); + + // Handle warnings + std::string warning = sharp::VipsWarningPop(); + while (!warning.empty()) { + debuglog.SHARP_CALLBACK_FN_NAME(Receiver().Value(), { Napi::String::New(env, warning) }); + warning = sharp::VipsWarningPop(); + } + + if (baton->err.empty()) { + Napi::Object info = Napi::Object::New(env); + info.Set("format", baton->format); + if (!baton->mediaType.empty()) { + info.Set("mediaType", baton->mediaType); + } + if (baton->input->bufferLength > 0) { + info.Set("size", baton->input->bufferLength); + } + info.Set("width", baton->width); + info.Set("height", baton->height); + info.Set("space", baton->space); + info.Set("channels", baton->channels); + info.Set("depth", baton->depth); + if (baton->density > 0) { + info.Set("density", baton->density); + } + if (!baton->chromaSubsampling.empty()) { + info.Set("chromaSubsampling", baton->chromaSubsampling); + } + info.Set("isProgressive", baton->isProgressive); + info.Set("isPalette", baton->isPalette); + if (baton->bitsPerSample > 0) { + info.Set("bitsPerSample", baton->bitsPerSample); + } + if (baton->pages > 0) { + info.Set("pages", baton->pages); + } + if (baton->pageHeight > 0) { + info.Set("pageHeight", baton->pageHeight); + } + if (baton->loop >= 0) { + info.Set("loop", baton->loop); + } + if (!baton->delay.empty()) { + int i = 0; + Napi::Array delay = Napi::Array::New(env, static_cast(baton->delay.size())); + for (int const d : baton->delay) { + delay.Set(i++, d); + } + info.Set("delay", delay); + } + if (baton->pagePrimary > -1) { + info.Set("pagePrimary", baton->pagePrimary); + } + if (!baton->compression.empty()) { + info.Set("compression", baton->compression); + } + if (!baton->resolutionUnit.empty()) { + info.Set("resolutionUnit", baton->resolutionUnit == "in" ? "inch" : baton->resolutionUnit); + } + if (!baton->formatMagick.empty()) { + info.Set("formatMagick", baton->formatMagick); + } + if (!baton->levels.empty()) { + int i = 0; + Napi::Array levels = Napi::Array::New(env, static_cast(baton->levels.size())); + for (const auto& [width, height] : baton->levels) { + Napi::Object level = Napi::Object::New(env); + level.Set("width", width); + level.Set("height", height); + levels.Set(i++, level); + } + info.Set("levels", levels); + } + if (baton->subifds > 0) { + info.Set("subifds", baton->subifds); + } + if (!baton->background.empty()) { + Napi::Object background = Napi::Object::New(env); + if (baton->background.size() == 3) { + background.Set("r", baton->background[0]); + background.Set("g", baton->background[1]); + background.Set("b", baton->background[2]); + } else { + background.Set("gray", round(baton->background[0] * 100 / 255)); + } + info.Set("background", background); + } + info.Set("hasProfile", baton->hasProfile); + info.Set("hasAlpha", baton->hasAlpha); + if (baton->orientation > 0) { + info.Set("orientation", baton->orientation); + } + Napi::Object autoOrient = Napi::Object::New(env); + info.Set("autoOrient", autoOrient); + if (baton->orientation >= 5) { + autoOrient.Set("width", baton->height); + autoOrient.Set("height", baton->width); + } else { + autoOrient.Set("width", baton->width); + autoOrient.Set("height", baton->height); + } + if (baton->exifLength > 0) { + info.Set("exif", Napi::Buffer::NewOrCopy(env, baton->exif, baton->exifLength, sharp::FreeCallback)); + } + if (baton->iccLength > 0) { + info.Set("icc", Napi::Buffer::NewOrCopy(env, baton->icc, baton->iccLength, sharp::FreeCallback)); + } + if (baton->iptcLength > 0) { + info.Set("iptc", Napi::Buffer::NewOrCopy(env, baton->iptc, baton->iptcLength, sharp::FreeCallback)); + } + if (baton->xmpLength > 0) { + if (g_utf8_validate(static_cast(baton->xmp), baton->xmpLength, nullptr)) { + info.Set("xmpAsString", + Napi::String::New(env, static_cast(baton->xmp), baton->xmpLength)); + } + info.Set("xmp", Napi::Buffer::NewOrCopy(env, baton->xmp, baton->xmpLength, sharp::FreeCallback)); + } + if (baton->tifftagPhotoshopLength > 0) { + info.Set("tifftagPhotoshop", + Napi::Buffer::NewOrCopy(env, baton->tifftagPhotoshop, + baton->tifftagPhotoshopLength, sharp::FreeCallback)); + } + if (baton->gainMapLength > 0) { + Napi::Object gainMap = Napi::Object::New(env); + info.Set("gainMap", gainMap); + gainMap.Set("image", + Napi::Buffer::NewOrCopy(env, baton->gainMap, baton->gainMapLength, sharp::FreeCallback)); + } + if (baton->comments.size() > 0) { + int i = 0; + Napi::Array comments = Napi::Array::New(env, baton->comments.size()); + for (const auto& [keyword, text] : baton->comments) { + Napi::Object comment = Napi::Object::New(env); + comment.Set("keyword", keyword); + comment.Set("text", text); + comments.Set(i++, comment); + } + info.Set("comments", comments); + } + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), { env.Null(), info }); + } else { + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), + { Napi::Error::New(env, sharp::TrimEnd(baton->err)).Value() }); + } + + delete baton->input; + delete baton; + } + + private: + MetadataBaton* baton; + Napi::FunctionReference debuglog; +}; + +/* + metadata(options, callback) +*/ +Napi::Value metadata(const Napi::CallbackInfo& info) { + // V8 objects are converted to non-V8 types held in the baton struct + MetadataBaton *baton = new MetadataBaton; + Napi::Object options = info[size_t(0)].As(); + + // Input + baton->input = sharp::CreateInputDescriptor(options.Get("input").As()); + + // Function to notify of libvips warnings + Napi::Function debuglog = options.Get("debuglog").As(); + + // Join queue for worker thread + Napi::Function callback = info[size_t(1)].As(); + MetadataWorker *worker = new MetadataWorker(callback, baton, debuglog); + worker->Receiver().Set("options", options); + worker->Queue(); + + // Increment queued task counter + sharp::counterQueue++; + + return info.Env().Undefined(); +} + +const char *PNG_COMMENT_START = "png-comment-"; +const int PNG_COMMENT_START_LEN = strlen(PNG_COMMENT_START); + +static void* readPNGComment(VipsImage *image, const char *field, GValue *value, void *p) { + MetadataComments *comments = static_cast(p); + + if (vips_isprefix(PNG_COMMENT_START, field)) { + const char *keyword = strchr(field + PNG_COMMENT_START_LEN, '-'); + const char *str; + if (keyword != NULL && !vips_image_get_string(image, field, &str)) { + keyword++; // Skip the hyphen + comments->push_back(std::make_pair(keyword, str)); + } + } + + return NULL; +} diff --git a/apps/api/.output/node_modules/sharp/src/metadata.h b/apps/api/.output/node_modules/sharp/src/metadata.h new file mode 100644 index 0000000..d1781dc --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/metadata.h @@ -0,0 +1,95 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef SRC_METADATA_H_ +#define SRC_METADATA_H_ + +#include +#include +#include + +#include "./common.h" + +typedef std::vector> MetadataComments; + +struct MetadataBaton { + // Input + sharp::InputDescriptor *input; + // Output + std::string format; + std::string mediaType; + int width; + int height; + std::string space; + int channels; + std::string depth; + int density; + std::string chromaSubsampling; + bool isProgressive; + bool isPalette; + int bitsPerSample; + int pages; + int pageHeight; + int loop; + std::vector delay; + int pagePrimary; + std::string compression; + std::string resolutionUnit; + std::string formatMagick; + std::vector> levels; + int subifds; + std::vector background; + bool hasProfile; + bool hasAlpha; + int orientation; + char *exif; + size_t exifLength; + char *icc; + size_t iccLength; + char *iptc; + size_t iptcLength; + char *xmp; + size_t xmpLength; + char *tifftagPhotoshop; + size_t tifftagPhotoshopLength; + char *gainMap; + size_t gainMapLength; + MetadataComments comments; + std::string err; + + MetadataBaton(): + input(nullptr), + width(0), + height(0), + channels(0), + density(0), + isProgressive(false), + isPalette(false), + bitsPerSample(0), + pages(0), + pageHeight(0), + loop(-1), + pagePrimary(-1), + subifds(0), + hasProfile(false), + hasAlpha(false), + orientation(0), + exif(nullptr), + exifLength(0), + icc(nullptr), + iccLength(0), + iptc(nullptr), + iptcLength(0), + xmp(nullptr), + xmpLength(0), + tifftagPhotoshop(nullptr), + tifftagPhotoshopLength(0), + gainMap(nullptr), + gainMapLength(0) {} +}; + +Napi::Value metadata(const Napi::CallbackInfo& info); + +#endif // SRC_METADATA_H_ diff --git a/apps/api/.output/node_modules/sharp/src/operations.cc b/apps/api/.output/node_modules/sharp/src/operations.cc new file mode 100644 index 0000000..d470172 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/operations.cc @@ -0,0 +1,516 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#include +#include +#include +#include +#include +#include + +#include "./common.h" +#include "./operations.h" + +using vips::VImage; + +namespace sharp { + /* + * Tint an image using the provided RGB. + */ + VImage Tint(VImage image, std::vector const tint) { + std::vector const tintLab = (VImage::black(1, 1) + tint) + .colourspace(VIPS_INTERPRETATION_LAB, VImage::option()->set("source_space", VIPS_INTERPRETATION_sRGB)) + .getpoint(0, 0); + // LAB identity function + VImage identityLab = VImage::identity(VImage::option()->set("bands", 3)) + .colourspace(VIPS_INTERPRETATION_LAB, VImage::option()->set("source_space", VIPS_INTERPRETATION_sRGB)); + // Scale luminance range, 0.0 to 1.0 + VImage l = identityLab[0] / 100; + // Weighting functions + VImage weightL = 1.0 - 4.0 * ((l - 0.5) * (l - 0.5)); + VImage weightAB = (weightL * tintLab).extract_band(1, VImage::option()->set("n", 2)); + identityLab = identityLab[0].bandjoin(weightAB); + // Convert lookup table to sRGB + VImage lut = identityLab.colourspace(VIPS_INTERPRETATION_sRGB, + VImage::option()->set("source_space", VIPS_INTERPRETATION_LAB)); + // Original colourspace + VipsInterpretation typeBeforeTint = image.interpretation(); + if (typeBeforeTint == VIPS_INTERPRETATION_RGB) { + typeBeforeTint = VIPS_INTERPRETATION_sRGB; + } + // Apply lookup table + if (image.has_alpha()) { + VImage alpha = image[image.bands() - 1]; + image = RemoveAlpha(image) + .colourspace(VIPS_INTERPRETATION_B_W) + .maplut(lut) + .colourspace(typeBeforeTint) + .bandjoin(alpha); + } else { + image = image + .colourspace(VIPS_INTERPRETATION_B_W) + .maplut(lut) + .colourspace(typeBeforeTint); + } + return image; + } + + /* + * Stretch luminance to cover full dynamic range. + */ + VImage Normalise(VImage image, int const lower, int const upper) { + // Get original colourspace + VipsInterpretation typeBeforeNormalize = image.interpretation(); + if (typeBeforeNormalize == VIPS_INTERPRETATION_RGB) { + typeBeforeNormalize = VIPS_INTERPRETATION_sRGB; + } + // Convert to LAB colourspace + VImage lab = image.colourspace(VIPS_INTERPRETATION_LAB); + // Extract luminance + VImage luminance = lab[0]; + + // Find luminance range + int const min = lower == 0 ? luminance.min() : luminance.percent(lower); + int const max = upper == 100 ? luminance.max() : luminance.percent(upper); + + if (std::abs(max - min) > 1) { + // Extract chroma + VImage chroma = lab.extract_band(1, VImage::option()->set("n", 2)); + // Calculate multiplication factor and addition + double f = 100.0 / (max - min); + double a = -(min * f); + // Scale luminance, join to chroma, convert back to original colourspace + VImage normalized = luminance.linear(f, a).bandjoin(chroma).colourspace(typeBeforeNormalize); + // Attach original alpha channel, if any + if (image.has_alpha()) { + // Extract original alpha channel + VImage alpha = image[image.bands() - 1]; + // Join alpha channel to normalised image + return normalized.bandjoin(alpha); + } else { + return normalized; + } + } + return image; + } + + /* + * Contrast limiting adapative histogram equalization (CLAHE) + */ + VImage Clahe(VImage image, int const width, int const height, int const maxSlope) { + return image.hist_local(width, height, VImage::option()->set("max_slope", maxSlope)); + } + + /* + * Gamma encoding/decoding + */ + VImage Gamma(VImage image, double const exponent) { + if (image.has_alpha()) { + // Separate alpha channel + VImage alpha = image[image.bands() - 1]; + return RemoveAlpha(image).gamma(VImage::option()->set("exponent", exponent)).bandjoin(alpha); + } else { + return image.gamma(VImage::option()->set("exponent", exponent)); + } + } + + /* + * Flatten image to remove alpha channel + */ + VImage Flatten(VImage image, std::vector flattenBackground) { + double const multiplier = sharp::Is16Bit(image.interpretation()) ? 256.0 : 1.0; + std::vector background { + flattenBackground[0] * multiplier, + flattenBackground[1] * multiplier, + flattenBackground[2] * multiplier + }; + return image.flatten(VImage::option()->set("background", background)); + } + + /** + * Produce the "negative" of the image. + */ + VImage Negate(VImage image, bool const negateAlpha) { + if (image.has_alpha() && !negateAlpha) { + // Separate alpha channel + VImage alpha = image[image.bands() - 1]; + return RemoveAlpha(image).invert().bandjoin(alpha); + } else { + return image.invert(); + } + } + + /* + * Gaussian blur. Use sigma of -1.0 for fast blur. + */ + VImage Blur(VImage image, double const sigma, VipsPrecision precision, double const minAmpl) { + if (sigma == -1.0) { + // Fast, mild blur - averages neighbouring pixels + VImage blur = VImage::new_matrixv(3, 3, + 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0); + blur.set("scale", 9.0); + return image.conv(blur); + } else { + // Slower, accurate Gaussian blur + return StaySequential(image).gaussblur(sigma, VImage::option() + ->set("precision", precision) + ->set("min_ampl", minAmpl)); + } + } + + /* + * Convolution with a kernel. + */ + VImage Convolve(VImage image, int const width, int const height, + double const scale, double const offset, + std::vector const &kernel_v + ) { + VImage kernel = VImage::new_from_memory( + static_cast(const_cast(kernel_v.data())), + width * height * sizeof(double), + width, + height, + 1, + VIPS_FORMAT_DOUBLE); + kernel.set("scale", scale); + kernel.set("offset", offset); + + return image.conv(kernel); + } + + /* + * Recomb with a Matrix of the given bands/channel size. + * Eg. RGB will be a 3x3 matrix. + */ + VImage Recomb(VImage image, std::vector const& matrix) { + double* m = const_cast(matrix.data()); + image = image.colourspace(VIPS_INTERPRETATION_sRGB); + if (matrix.size() == 9) { + return image + .recomb(image.bands() == 3 + ? VImage::new_matrix(3, 3, m, 9) + : VImage::new_matrixv(4, 4, + m[0], m[1], m[2], 0.0, + m[3], m[4], m[5], 0.0, + m[6], m[7], m[8], 0.0, + 0.0, 0.0, 0.0, 1.0)); + } else { + return image.recomb(VImage::new_matrix(4, 4, m, 16)); + } + } + + VImage Modulate(VImage image, double const brightness, double const saturation, + int const hue, double const lightness) { + VipsInterpretation colourspaceBeforeModulate = image.interpretation(); + if (image.has_alpha()) { + // Separate alpha channel + VImage alpha = image[image.bands() - 1]; + return RemoveAlpha(image) + .colourspace(VIPS_INTERPRETATION_LCH) + .linear( + { brightness, saturation, 1}, + { lightness, 0.0, static_cast(hue) } + ) + .colourspace(colourspaceBeforeModulate) + .bandjoin(alpha); + } else { + return image + .colourspace(VIPS_INTERPRETATION_LCH) + .linear( + { brightness, saturation, 1 }, + { lightness, 0.0, static_cast(hue) } + ) + .colourspace(colourspaceBeforeModulate); + } + } + + /* + * Sharpen flat and jagged areas. Use sigma of -1.0 for fast sharpen. + */ + VImage Sharpen(VImage image, double const sigma, double const m1, double const m2, + double const x1, double const y2, double const y3) { + if (sigma == -1.0) { + // Fast, mild sharpen + VImage sharpen = VImage::new_matrixv(3, 3, + -1.0, -1.0, -1.0, + -1.0, 32.0, -1.0, + -1.0, -1.0, -1.0); + sharpen.set("scale", 24.0); + return image.conv(sharpen); + } else { + // Slow, accurate sharpen in LAB colour space, with control over flat vs jagged areas + VipsInterpretation colourspaceBeforeSharpen = image.interpretation(); + if (colourspaceBeforeSharpen == VIPS_INTERPRETATION_RGB) { + colourspaceBeforeSharpen = VIPS_INTERPRETATION_sRGB; + } + return image + .sharpen(VImage::option() + ->set("sigma", sigma) + ->set("m1", m1) + ->set("m2", m2) + ->set("x1", x1) + ->set("y2", y2) + ->set("y3", y3)) + .colourspace(colourspaceBeforeSharpen); + } + } + + VImage Threshold(VImage image, double const threshold, bool const thresholdGrayscale) { + if (!thresholdGrayscale) { + return image >= threshold; + } + return image.colourspace(VIPS_INTERPRETATION_B_W) >= threshold; + } + + /* + Perform boolean/bitwise operation on image color channels - results in one channel image + */ + VImage Bandbool(VImage image, VipsOperationBoolean const boolean) { + image = image.bandbool(boolean); + return image.copy(VImage::option()->set("interpretation", VIPS_INTERPRETATION_B_W)); + } + + /* + Perform bitwise boolean operation between images + */ + VImage Boolean(VImage image, VImage imageR, VipsOperationBoolean const boolean) { + return image.boolean(imageR, boolean); + } + + /* + Trim an image + */ + VImage Trim(VImage image, std::vector background, double threshold, bool const lineArt, int const margin) { + if (image.width() < 3 && image.height() < 3) { + throw std::runtime_error("Image to trim must be at least 3x3 pixels"); + } + if (background.size() == 0) { + // Top-left pixel provides the default background colour if none is given + background = image.extract_area(0, 0, 1, 1)(0, 0); + } else if (sharp::Is16Bit(image.interpretation())) { + for (size_t i = 0; i < background.size(); i++) { + background[i] *= 256.0; + } + threshold *= 256.0; + } + std::vector backgroundAlpha({ background.back() }); + if (image.has_alpha()) { + background.pop_back(); + } else { + background.resize(image.bands()); + } + int left, top, width, height; + left = image.find_trim(&top, &width, &height, VImage::option() + ->set("background", background) + ->set("line_art", lineArt) + ->set("threshold", threshold)); + if (image.has_alpha()) { + // Search alpha channel (A) + int leftA, topA, widthA, heightA; + VImage alpha = image[image.bands() - 1]; + leftA = alpha.find_trim(&topA, &widthA, &heightA, VImage::option() + ->set("background", backgroundAlpha) + ->set("line_art", lineArt) + ->set("threshold", threshold)); + if (widthA > 0 && heightA > 0) { + if (width > 0 && height > 0) { + // Combined bounding box (B) + int leftB = std::min(left, leftA); + int topB = std::min(top, topA); + int widthB = std::max(left + width, leftA + widthA) - leftB; + int heightB = std::max(top + height, topA + heightA) - topB; + if (margin > 0) { + leftB = std::max(0, leftB - margin); + topB = std::max(0, topB - margin); + widthB = std::min(image.width() - leftB, widthB + 2 * margin); + heightB = std::min(image.height() - topB, heightB + 2 * margin); + } + return image.extract_area(leftB, topB, widthB, heightB); + } else { + // Use alpha only + if (margin > 0) { + leftA = std::max(0, leftA - margin); + topA = std::max(0, topA - margin); + widthA = std::min(image.width() - leftA, widthA + 2 * margin); + heightA = std::min(image.height() - topA, heightA + 2 * margin); + } + return image.extract_area(leftA, topA, widthA, heightA); + } + } + } + if (width > 0 && height > 0) { + if (margin > 0) { + left = std::max(0, left - margin); + top = std::max(0, top - margin); + width = std::min(image.width() - left, width + 2 * margin); + height = std::min(image.height() - top, height + 2 * margin); + } + return image.extract_area(left, top, width, height); + } + return image; + } + + /* + * Calculate (a * in + b) + */ + VImage Linear(VImage image, std::vector const a, std::vector const b) { + size_t const bands = static_cast(image.bands()); + if (a.size() > bands) { + throw std::runtime_error("Band expansion using linear is unsupported"); + } + bool const uchar = !Is16Bit(image.interpretation()); + if (image.has_alpha() && a.size() != bands && (a.size() == 1 || a.size() == bands - 1 || bands - 1 == 1)) { + // Separate alpha channel + VImage alpha = image[bands - 1]; + return RemoveAlpha(image).linear(a, b, VImage::option()->set("uchar", uchar)).bandjoin(alpha); + } else { + return image.linear(a, b, VImage::option()->set("uchar", uchar)); + } + } + + /* + * Unflatten + */ + VImage Unflatten(VImage image) { + if (image.has_alpha()) { + VImage alpha = image[image.bands() - 1]; + VImage noAlpha = RemoveAlpha(image); + return noAlpha.bandjoin(alpha & (noAlpha.colourspace(VIPS_INTERPRETATION_B_W) < 255)); + } else { + return image.bandjoin(image.colourspace(VIPS_INTERPRETATION_B_W) < 255); + } + } + + /* + * Ensure the image is in a given colourspace + */ + VImage EnsureColourspace(VImage image, VipsInterpretation colourspace) { + if (colourspace != VIPS_INTERPRETATION_LAST && image.interpretation() != colourspace) { + image = image.colourspace(colourspace, + VImage::option()->set("source_space", image.interpretation())); + } + return image; + } + + /* + * Split and crop each frame, reassemble, and update pageHeight. + */ + VImage CropMultiPage(VImage image, int left, int top, int width, int height, + int nPages, int *pageHeight) { + if (top == 0 && height == *pageHeight) { + // Fast path; no need to adjust the height of the multi-page image + return image.extract_area(left, 0, width, image.height()); + } else { + std::vector pages; + pages.reserve(nPages); + + // Split the image into cropped frames + image = StaySequential(image); + for (int i = 0; i < nPages; i++) { + pages.push_back( + image.extract_area(left, *pageHeight * i + top, width, height)); + } + + // Reassemble the frames into a tall, thin image + VImage assembled = VImage::arrayjoin(pages, + VImage::option()->set("across", 1)); + + // Update the page height + *pageHeight = height; + + return assembled; + } + } + + /* + * Split into frames, embed each frame, reassemble, and update pageHeight. + */ + VImage EmbedMultiPage(VImage image, int left, int top, int width, int height, + VipsExtend extendWith, std::vector background, int nPages, int *pageHeight) { + if (top == 0 && height == *pageHeight) { + // Fast path; no need to adjust the height of the multi-page image + return image.embed(left, 0, width, image.height(), VImage::option() + ->set("extend", extendWith) + ->set("background", background)); + } else if (left == 0 && width == image.width()) { + // Fast path; no need to adjust the width of the multi-page image + std::vector pages; + pages.reserve(nPages); + + // Rearrange the tall image into a vertical grid + image = image.grid(*pageHeight, nPages, 1); + + // Do the embed on the wide image + image = image.embed(0, top, image.width(), height, VImage::option() + ->set("extend", extendWith) + ->set("background", background)); + + // Split the wide image into frames + for (int i = 0; i < nPages; i++) { + pages.push_back( + image.extract_area(width * i, 0, width, height)); + } + + // Reassemble the frames into a tall, thin image + VImage assembled = VImage::arrayjoin(pages, + VImage::option()->set("across", 1)); + + // Update the page height + *pageHeight = height; + + return assembled; + } else { + std::vector pages; + pages.reserve(nPages); + + // Split the image into frames + for (int i = 0; i < nPages; i++) { + pages.push_back( + image.extract_area(0, *pageHeight * i, image.width(), *pageHeight)); + } + + // Embed each frame in the target size + for (int i = 0; i < nPages; i++) { + pages[i] = pages[i].embed(left, top, width, height, VImage::option() + ->set("extend", extendWith) + ->set("background", background)); + } + + // Reassemble the frames into a tall, thin image + VImage assembled = VImage::arrayjoin(pages, + VImage::option()->set("across", 1)); + + // Update the page height + *pageHeight = height; + + return assembled; + } + } + + /* + * Dilate an image + */ + VImage Dilate(VImage image, int const width) { + int const maskWidth = 2 * width + 1; + VImage mask = VImage::new_matrix(maskWidth, maskWidth); + return image.morph( + mask, + VIPS_OPERATION_MORPHOLOGY_DILATE).invert(); + } + + /* + * Erode an image + */ + VImage Erode(VImage image, int const width) { + int const maskWidth = 2 * width + 1; + VImage mask = VImage::new_matrix(maskWidth, maskWidth); + return image.morph( + mask, + VIPS_OPERATION_MORPHOLOGY_ERODE).invert(); + } + +} // namespace sharp diff --git a/apps/api/.output/node_modules/sharp/src/operations.h b/apps/api/.output/node_modules/sharp/src/operations.h new file mode 100644 index 0000000..b9699bb --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/operations.h @@ -0,0 +1,137 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef SRC_OPERATIONS_H_ +#define SRC_OPERATIONS_H_ + +#include +#include +#include +#include +#include +#include + +using vips::VImage; + +namespace sharp { + + /* + * Tint an image using the provided RGB. + */ + VImage Tint(VImage image, std::vector const tint); + + /* + * Stretch luminance to cover full dynamic range. + */ + VImage Normalise(VImage image, int const lower, int const upper); + + /* + * Contrast limiting adapative histogram equalization (CLAHE) + */ + VImage Clahe(VImage image, int const width, int const height, int const maxSlope); + + /* + * Gamma encoding/decoding + */ + VImage Gamma(VImage image, double const exponent); + + /* + * Flatten image to remove alpha channel + */ + VImage Flatten(VImage image, std::vector flattenBackground); + + /* + * Produce the "negative" of the image. + */ + VImage Negate(VImage image, bool const negateAlpha); + + /* + * Gaussian blur. Use sigma of -1.0 for fast blur. + */ + VImage Blur(VImage image, double const sigma, VipsPrecision precision, double const minAmpl); + + /* + * Convolution with a kernel. + */ + VImage Convolve(VImage image, int const width, int const height, + double const scale, double const offset, std::vector const &kernel_v); + + /* + * Sharpen flat and jagged areas. Use sigma of -1.0 for fast sharpen. + */ + VImage Sharpen(VImage image, double const sigma, double const m1, double const m2, + double const x1, double const y2, double const y3); + + /* + Threshold an image + */ + VImage Threshold(VImage image, double const threshold, bool const thresholdColor); + + /* + Perform boolean/bitwise operation on image color channels - results in one channel image + */ + VImage Bandbool(VImage image, VipsOperationBoolean const boolean); + + /* + Perform bitwise boolean operation between images + */ + VImage Boolean(VImage image, VImage imageR, VipsOperationBoolean const boolean); + + /* + Trim an image + */ + VImage Trim(VImage image, std::vector background, double threshold, bool const lineArt, int const margin); + + /* + * Linear adjustment (a * in + b) + */ + VImage Linear(VImage image, std::vector const a, std::vector const b); + + /* + * Unflatten + */ + VImage Unflatten(VImage image); + + /* + * Recomb with a Matrix of the given bands/channel size. + * Eg. RGB will be a 3x3 matrix. + */ + VImage Recomb(VImage image, std::vector const &matrix); + + /* + * Modulate brightness, saturation, hue and lightness + */ + VImage Modulate(VImage image, double const brightness, double const saturation, + int const hue, double const lightness); + + /* + * Ensure the image is in a given colourspace + */ + VImage EnsureColourspace(VImage image, VipsInterpretation colourspace); + + /* + * Split and crop each frame, reassemble, and update pageHeight. + */ + VImage CropMultiPage(VImage image, int left, int top, int width, int height, + int nPages, int *pageHeight); + + /* + * Split into frames, embed each frame, reassemble, and update pageHeight. + */ + VImage EmbedMultiPage(VImage image, int left, int top, int width, int height, + VipsExtend extendWith, std::vector background, int nPages, int *pageHeight); + + /* + * Dilate an image + */ + VImage Dilate(VImage image, int const maskWidth); + + /* + * Erode an image + */ + VImage Erode(VImage image, int const maskWidth); +} // namespace sharp + +#endif // SRC_OPERATIONS_H_ diff --git a/apps/api/.output/node_modules/sharp/src/pipeline.cc b/apps/api/.output/node_modules/sharp/src/pipeline.cc new file mode 100644 index 0000000..a579503 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/pipeline.cc @@ -0,0 +1,1973 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#include +#include +#include // NOLINT(build/c++17) +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "./common.h" +#include "./operations.h" +#include "./pipeline.h" + +class PipelineWorker : public Napi::AsyncWorker { + public: + PipelineWorker(Napi::Function callback, PipelineBaton *baton, + Napi::Function debuglog, Napi::Function queueListener) : + Napi::AsyncWorker(callback), + baton(baton), + debuglog(Napi::Persistent(debuglog)), + queueListener(Napi::Persistent(queueListener)) {} + ~PipelineWorker() {} + + // libuv worker + void Execute() { + // Decrement queued task counter + sharp::counterQueue--; + // Increment processing task counter + sharp::counterProcess++; + + try { + // Open input + vips::VImage image; + sharp::ImageType inputImageType; + if (baton->join.empty()) { + std::tie(image, inputImageType) = sharp::OpenInput(baton->input); + } else { + std::vector images; + bool hasAlpha = false; + for (auto &join : baton->join) { + std::tie(image, inputImageType) = sharp::OpenInput(join); + image = sharp::EnsureColourspace(image, baton->colourspacePipeline); + images.push_back(image); + hasAlpha |= image.has_alpha(); + } + if (hasAlpha) { + for (size_t i = 0; i < images.size(); i++) { + if (!images[i].has_alpha()) { + images[i] = sharp::EnsureAlpha(images[i], 1); + } + } + } else { + baton->input->joinBackground.pop_back(); + } + inputImageType = sharp::ImageType::PNG; + image = VImage::arrayjoin(images, VImage::option() + ->set("across", baton->input->joinAcross) + ->set("shim", baton->input->joinShim) + ->set("background", baton->input->joinBackground) + ->set("halign", baton->input->joinHalign) + ->set("valign", baton->input->joinValign)); + if (baton->input->joinAnimated) { + image = image.copy(); + image.set(VIPS_META_N_PAGES, static_cast(images.size())); + image.set(VIPS_META_PAGE_HEIGHT, static_cast(image.height() / images.size())); + } + } + VipsAccess access = baton->input->access; + image = sharp::EnsureColourspace(image, baton->colourspacePipeline); + + int nPages = baton->input->pages; + if (nPages == -1) { + // Resolve the number of pages if we need to render until the end of the document + nPages = image.get_typeof(VIPS_META_N_PAGES) != 0 + ? image.get_int(VIPS_META_N_PAGES) - std::max(0, baton->input->page) + : 1; + } + + // Get pre-resize page height + int pageHeight = sharp::GetPageHeight(image); + + // Calculate angle of rotation + VipsAngle rotation = VIPS_ANGLE_D0; + VipsAngle autoRotation = VIPS_ANGLE_D0; + VipsAngle gainMapRotation = VIPS_ANGLE_D0; + bool autoFlop = false; + bool gainMapFlip = false; + bool gainMapFlop = false; + + if (baton->input->autoOrient) { + // Rotate and flip image according to Exif orientation + std::tie(autoRotation, autoFlop) = CalculateExifRotationAndFlop(sharp::ExifOrientation(image)); + } + + rotation = CalculateAngleRotation(baton->angle); + + bool const shouldRotateBefore = baton->rotateBefore && + (rotation != VIPS_ANGLE_D0 || baton->flip || baton->flop || baton->rotationAngle != 0.0); + bool const shouldOrientBefore = (shouldRotateBefore || baton->orientBefore) && + (autoRotation != VIPS_ANGLE_D0 || autoFlop); + + if (shouldOrientBefore) { + image = sharp::StaySequential(image, autoRotation != VIPS_ANGLE_D0); + if (autoRotation != VIPS_ANGLE_D0) { + if (autoRotation != VIPS_ANGLE_D180) { + MultiPageUnsupported(nPages, "Rotate"); + } + image = image.rot(autoRotation); + gainMapRotation = autoRotation; + autoRotation = VIPS_ANGLE_D0; + } + if (autoFlop) { + image = image.flip(VIPS_DIRECTION_HORIZONTAL); + autoFlop = false; + gainMapFlop = true; + } + } + + if (shouldRotateBefore) { + image = sharp::StaySequential(image, rotation != VIPS_ANGLE_D0 || baton->flip || baton->rotationAngle != 0.0); + if (baton->flip) { + image = image.flip(VIPS_DIRECTION_VERTICAL); + baton->flip = false; + gainMapFlip = true; + } + if (baton->flop) { + image = image.flip(VIPS_DIRECTION_HORIZONTAL); + baton->flop = false; + gainMapFlop = true; + } + if (rotation != VIPS_ANGLE_D0) { + if (rotation != VIPS_ANGLE_D180) { + MultiPageUnsupported(nPages, "Rotate"); + } + image = image.rot(rotation); + gainMapRotation = rotation; + rotation = VIPS_ANGLE_D0; + } + if (baton->rotationAngle != 0.0) { + MultiPageUnsupported(nPages, "Rotate"); + KeepGainMapUnsupported(baton->keepGainMap, "Rotate"); + std::vector background; + std::tie(image, background) = sharp::ApplyAlpha(image, baton->rotationBackground, false); + image = image.rotate(baton->rotationAngle, VImage::option()->set("background", background)).copy_memory(); + baton->rotationAngle = 0.0; + } + } + + // Trim + if (baton->trimThreshold >= 0.0) { + MultiPageUnsupported(nPages, "Trim"); + KeepGainMapUnsupported(baton->keepGainMap, "Trim"); + image = sharp::StaySequential(image); + image = sharp::Trim(image, baton->trimBackground, baton->trimThreshold, baton->trimLineArt, baton->trimMargin); + baton->trimOffsetLeft = image.xoffset(); + baton->trimOffsetTop = image.yoffset(); + } + + // Pre extraction + if (baton->topOffsetPre != -1) { + image = nPages > 1 + ? sharp::CropMultiPage(image, + baton->leftOffsetPre, baton->topOffsetPre, baton->widthPre, baton->heightPre, nPages, &pageHeight) + : image.extract_area(baton->leftOffsetPre, baton->topOffsetPre, baton->widthPre, baton->heightPre); + } + + // Get pre-resize image width and height + int inputWidth = image.width(); + int inputHeight = image.height(); + + // Is there just one page? Shrink to inputHeight instead + if (nPages == 1) { + pageHeight = inputHeight; + } + + // Scaling calculations + double hshrink; + double vshrink; + int targetResizeWidth = baton->width; + int targetResizeHeight = baton->height; + + // When auto-rotating by 90 or 270 degrees, swap the target width and + // height to ensure the behavior aligns with how it would have been if + // the rotation had taken place *before* resizing. + if (autoRotation == VIPS_ANGLE_D90 || autoRotation == VIPS_ANGLE_D270) { + std::swap(targetResizeWidth, targetResizeHeight); + } + + // Shrink to pageHeight, so we work for multi-page images + std::tie(hshrink, vshrink) = sharp::ResolveShrink( + inputWidth, pageHeight, targetResizeWidth, targetResizeHeight, + baton->canvas, baton->withoutEnlargement, baton->withoutReduction); + + // The jpeg preload shrink. + int jpegShrinkOnLoad = 1; + + // WebP, PDF, SVG scale + double scale = 1.0; + + // Try to reload input using shrink-on-load for JPEG, WebP, SVG and PDF, when: + // - the width or height parameters are specified; + // - gamma correction doesn't need to be applied; + // - trimming or pre-resize extract isn't required; + // - gain map processing is not required; + // - input colourspace is not specified; + bool const shouldPreShrink = (targetResizeWidth > 0 || targetResizeHeight > 0) && + baton->gamma == 0 && baton->topOffsetPre == -1 && baton->trimThreshold < 0.0 && + !baton->keepGainMap && !baton->withGainMap && + baton->colourspacePipeline == VIPS_INTERPRETATION_LAST && !(shouldOrientBefore || shouldRotateBefore); + + if (shouldPreShrink) { + // The common part of the shrink: the bit by which both axes must be shrunk + double shrink = std::min(hshrink, vshrink); + + if (inputImageType == sharp::ImageType::JPEG) { + // Leave at least a factor of two for the final resize step, when fastShrinkOnLoad: false + // for more consistent results and to avoid extra sharpness to the image + int factor = baton->fastShrinkOnLoad ? 1 : 2; + if (shrink >= 8 * factor) { + jpegShrinkOnLoad = 8; + } else if (shrink >= 4 * factor) { + jpegShrinkOnLoad = 4; + } else if (shrink >= 2 * factor) { + jpegShrinkOnLoad = 2; + } + // Lower shrink-on-load for known libjpeg rounding errors + if (jpegShrinkOnLoad > 1 && static_cast(shrink) == jpegShrinkOnLoad) { + jpegShrinkOnLoad /= 2; + } + } else if (inputImageType == sharp::ImageType::WEBP && baton->fastShrinkOnLoad && shrink > 1.0) { + // Avoid upscaling via webp + scale = 1.0 / shrink; + } else if (inputImageType == sharp::ImageType::SVG || + inputImageType == sharp::ImageType::PDF) { + scale = 1.0 / shrink; + } + } + + // Reload input using shrink-on-load, it'll be an integer shrink + // factor for jpegload*, a double scale factor for webpload*, + // pdfload* and svgload* + if (jpegShrinkOnLoad > 1) { + vips::VOption *option = GetOptionsForImageType(inputImageType, baton->input)->set("shrink", jpegShrinkOnLoad); + if (baton->input->buffer != nullptr) { + // Reload JPEG buffer + VipsBlob *blob = vips_blob_new(nullptr, baton->input->buffer, baton->input->bufferLength); + image = VImage::jpegload_buffer(blob, option); + vips_area_unref(reinterpret_cast(blob)); + } else { + // Reload JPEG file + image = VImage::jpegload(const_cast(baton->input->file.data()), option); + } + } else if (scale != 1.0) { + vips::VOption *option = GetOptionsForImageType(inputImageType, baton->input)->set("scale", scale); + if (inputImageType == sharp::ImageType::WEBP) { + if (baton->input->buffer != nullptr) { + // Reload WebP buffer + VipsBlob *blob = vips_blob_new(nullptr, baton->input->buffer, baton->input->bufferLength); + image = VImage::webpload_buffer(blob, option); + vips_area_unref(reinterpret_cast(blob)); + } else { + // Reload WebP file + image = VImage::webpload(const_cast(baton->input->file.data()), option); + } + } else if (inputImageType == sharp::ImageType::SVG) { + if (baton->input->buffer != nullptr) { + // Reload SVG buffer + VipsBlob *blob = vips_blob_new(nullptr, baton->input->buffer, baton->input->bufferLength); + image = VImage::svgload_buffer(blob, option); + vips_area_unref(reinterpret_cast(blob)); + } else { + // Reload SVG file + image = VImage::svgload(const_cast(baton->input->file.data()), option); + } + sharp::SetDensity(image, baton->input->density); + if (image.width() > 32767 || image.height() > 32767) { + throw std::runtime_error("Input SVG image will exceed 32767x32767 pixel limit when scaled"); + } + } else if (inputImageType == sharp::ImageType::PDF) { + if (baton->input->buffer != nullptr) { + // Reload PDF buffer + VipsBlob *blob = vips_blob_new(nullptr, baton->input->buffer, baton->input->bufferLength); + image = VImage::pdfload_buffer(blob, option); + vips_area_unref(reinterpret_cast(blob)); + } else { + // Reload PDF file + image = VImage::pdfload(const_cast(baton->input->file.data()), option); + } + sharp::SetDensity(image, baton->input->density); + } + } else { + if (inputImageType == sharp::ImageType::SVG && (image.width() > 32767 || image.height() > 32767)) { + throw std::runtime_error("Input SVG image exceeds 32767x32767 pixel limit"); + } + } + if (baton->input->autoOrient) { + image = sharp::RemoveExifOrientation(image); + } + VImage gainMap; + int gainMapScaleFactor = 1; + if (sharp::HasGainMap(image)) { + if (baton->keepGainMap) { + gainMap = image.gainmap(); + if (image.get_typeof("gainmap-scale-factor") == G_TYPE_INT) { + gainMapScaleFactor = image.get_int("gainmap-scale-factor"); + } + if (gainMapFlip) { + gainMap = gainMap.flip(VIPS_DIRECTION_VERTICAL); + } + if (gainMapFlop) { + gainMap = gainMap.flip(VIPS_DIRECTION_HORIZONTAL); + } + if (gainMapRotation != VIPS_ANGLE_D0) { + gainMap = gainMap.rot(gainMapRotation); + } + if (baton->topOffsetPre != -1) { + gainMap = gainMap.extract_area( + baton->leftOffsetPre / gainMapScaleFactor, baton->topOffsetPre / gainMapScaleFactor, + baton->widthPre / gainMapScaleFactor, baton->heightPre / gainMapScaleFactor); + } + } else if (baton->withGainMap) { + image = image.uhdr2scRGB(); + } + image = sharp::RemoveGainMap(image); + } else { + baton->keepGainMap = false; + baton->withGainMap = false; + } + + // Any pre-shrinking may already have been done + inputWidth = image.width(); + inputHeight = image.height(); + + // After pre-shrink, but before the main shrink stage + // Reuse the initial pageHeight if we didn't pre-shrink + if (shouldPreShrink) { + pageHeight = sharp::GetPageHeight(image); + } + + // Shrink to pageHeight, so we work for multi-page images + std::tie(hshrink, vshrink) = sharp::ResolveShrink( + inputWidth, pageHeight, targetResizeWidth, targetResizeHeight, + baton->canvas, baton->withoutEnlargement, baton->withoutReduction); + + int targetHeight = static_cast(std::rint(static_cast(pageHeight) / vshrink)); + int targetPageHeight = targetHeight; + + // In toilet-roll mode, we must adjust vshrink so that we exactly hit + // pageHeight or we'll have pixels straddling pixel boundaries + if (inputHeight > pageHeight) { + targetHeight *= nPages; + vshrink = static_cast(inputHeight) / targetHeight; + } + + // Ensure we're using a device-independent colour space + std::pair inputProfile(nullptr, 0); + if ((baton->keepMetadata & VIPS_FOREIGN_KEEP_ICC) && baton->withIccProfile.empty()) { + // Cache input profile for use with output + inputProfile = sharp::GetProfile(image); + baton->input->ignoreIcc = true; + } + char const *processingProfile = image.interpretation() == VIPS_INTERPRETATION_RGB16 ? "p3" : "srgb"; + if ( + sharp::HasProfile(image) && + image.interpretation() != VIPS_INTERPRETATION_LABS && + image.interpretation() != VIPS_INTERPRETATION_GREY16 && + baton->colourspacePipeline != VIPS_INTERPRETATION_CMYK && + !baton->input->ignoreIcc && !baton->withGainMap + ) { + // Convert to sRGB/P3 using embedded profile + try { + image = image.icc_transform(processingProfile, VImage::option() + ->set("embedded", true) + ->set("depth", sharp::Is16Bit(image.interpretation()) ? 16 : 8) + ->set("intent", VIPS_INTENT_PERCEPTUAL)); + } catch(...) { + sharp::VipsWarningCallback(nullptr, G_LOG_LEVEL_WARNING, "Invalid embedded profile", nullptr); + } + } else if ( + image.interpretation() == VIPS_INTERPRETATION_CMYK && + baton->colourspacePipeline != VIPS_INTERPRETATION_CMYK + ) { + image = image.icc_transform(processingProfile, VImage::option() + ->set("input_profile", "cmyk") + ->set("intent", VIPS_INTENT_PERCEPTUAL)); + } + + // Flatten image to remove alpha channel + if (baton->flatten && image.has_alpha()) { + image = sharp::Flatten(image, baton->flattenBackground); + } + + // Gamma encoding (darken) + if (baton->gamma >= 1 && baton->gamma <= 3) { + image = sharp::Gamma(image, 1.0 / baton->gamma); + } + + // Convert to greyscale (linear, therefore after gamma encoding, if any) + if (baton->greyscale) { + image = image.colourspace(VIPS_INTERPRETATION_B_W); + } + + bool const shouldResize = hshrink != 1.0 || vshrink != 1.0; + bool const shouldBlur = baton->blurSigma != 0.0; + bool const shouldConv = baton->convKernelWidth * baton->convKernelHeight > 0; + bool const shouldSharpen = baton->sharpenSigma != 0.0; + bool const shouldComposite = !baton->composite.empty(); + + if (shouldComposite && !image.has_alpha()) { + image = sharp::EnsureAlpha(image, 1); + } + + VipsBandFormat premultiplyFormat = image.format(); + bool const shouldPremultiplyAlpha = image.has_alpha() && + (shouldResize || shouldBlur || shouldConv || shouldSharpen); + + if (shouldPremultiplyAlpha) { + image = image.premultiply().cast(premultiplyFormat); + } + + // Resize + if (shouldResize) { + image = image.resize(1.0 / hshrink, VImage::option() + ->set("vscale", 1.0 / vshrink) + ->set("kernel", baton->kernel)); + if (baton->keepGainMap) { + gainMap = gainMap.resize(1.0 / hshrink, VImage::option() + ->set("vscale", 1.0 / vshrink) + ->set("kernel", baton->kernel)); + } + } + + image = sharp::StaySequential(image, + autoRotation != VIPS_ANGLE_D0 || + baton->flip || + rotation != VIPS_ANGLE_D0); + // Auto-rotate post-extract + if (autoRotation != VIPS_ANGLE_D0) { + if (autoRotation != VIPS_ANGLE_D180) { + MultiPageUnsupported(nPages, "Rotate"); + } + image = image.rot(autoRotation); + if (baton->keepGainMap) { + gainMap = sharp::StaySequential(gainMap).rot(autoRotation); + } + } + // Mirror vertically (up-down) about the x-axis + if (baton->flip) { + image = image.flip(VIPS_DIRECTION_VERTICAL); + if (baton->keepGainMap) { + gainMap = sharp::StaySequential(gainMap).flip(VIPS_DIRECTION_VERTICAL); + } + } + // Mirror horizontally (left-right) about the y-axis + if (baton->flop != autoFlop) { + image = image.flip(VIPS_DIRECTION_HORIZONTAL); + if (baton->keepGainMap) { + gainMap = gainMap.flip(VIPS_DIRECTION_HORIZONTAL); + } + } + // Rotate post-extract 90-angle + if (rotation != VIPS_ANGLE_D0) { + if (rotation != VIPS_ANGLE_D180) { + MultiPageUnsupported(nPages, "Rotate"); + } + image = image.rot(rotation); + if (baton->keepGainMap) { + gainMap = sharp::StaySequential(gainMap).rot(rotation); + } + } + + // Join additional color channels to the image + if (!baton->joinChannelIn.empty()) { + VImage joinImage; + sharp::ImageType joinImageType = sharp::ImageType::UNKNOWN; + + for (unsigned int i = 0; i < baton->joinChannelIn.size(); i++) { + baton->joinChannelIn[i]->access = access; + std::tie(joinImage, joinImageType) = sharp::OpenInput(baton->joinChannelIn[i]); + joinImage = sharp::EnsureColourspace(joinImage, baton->colourspacePipeline); + image = image.bandjoin(joinImage); + } + image = image.copy(VImage::option()->set("interpretation", baton->colourspace)); + image = sharp::RemoveGifPalette(image); + } + + inputWidth = image.width(); + inputHeight = nPages > 1 ? targetPageHeight : image.height(); + + // Resolve dimensions + if (baton->width <= 0) { + baton->width = inputWidth; + } + if (baton->height <= 0) { + baton->height = inputHeight; + } + + // Crop/embed + if (inputWidth != baton->width || inputHeight != baton->height) { + if (baton->canvas == sharp::Canvas::EMBED) { + std::vector background; + std::tie(image, background) = sharp::ApplyAlpha(image, baton->resizeBackground, shouldPremultiplyAlpha); + + // Embed + const auto& [left, top] = sharp::CalculateEmbedPosition( + inputWidth, inputHeight, baton->width, baton->height, baton->position); + const int width = std::max(inputWidth, baton->width); + const int height = std::max(inputHeight, baton->height); + + image = nPages > 1 + ? sharp::EmbedMultiPage(image, + left, top, width, height, VIPS_EXTEND_BACKGROUND, background, nPages, &targetPageHeight) + : image.embed(left, top, width, height, VImage::option() + ->set("extend", VIPS_EXTEND_BACKGROUND) + ->set("background", background)); + if (baton->keepGainMap) { + gainMap = gainMap.embed(left / gainMapScaleFactor, top / gainMapScaleFactor, + width / gainMapScaleFactor, height / gainMapScaleFactor, VImage::option() + ->set("extend", VIPS_EXTEND_BACKGROUND) + ->set("background", 0)); + } + } else if (baton->canvas == sharp::Canvas::CROP) { + if (baton->width > inputWidth) { + baton->width = inputWidth; + } + if (baton->height > inputHeight) { + baton->height = inputHeight; + } + + // Crop + if (baton->position < 9) { + // Gravity-based crop + const auto& [left, top] = sharp::CalculateCrop( + inputWidth, inputHeight, baton->width, baton->height, baton->position); + const int width = std::min(inputWidth, baton->width); + const int height = std::min(inputHeight, baton->height); + + image = nPages > 1 + ? sharp::CropMultiPage(image, + left, top, width, height, nPages, &targetPageHeight) + : image.extract_area(left, top, width, height); + if (baton->keepGainMap) { + gainMap = gainMap.extract_area(left / gainMapScaleFactor, top / gainMapScaleFactor, + width / gainMapScaleFactor, height / gainMapScaleFactor); + } + } else { + int attention_x; + int attention_y; + + // Attention-based or Entropy-based crop + MultiPageUnsupported(nPages, "Resize strategy"); + KeepGainMapUnsupported(baton->keepGainMap, "Resize strategy"); + image = sharp::StaySequential(image); + image = image.smartcrop(baton->width, baton->height, VImage::option() + ->set("interesting", baton->position == 16 ? VIPS_INTERESTING_ENTROPY : VIPS_INTERESTING_ATTENTION) + ->set("premultiplied", shouldPremultiplyAlpha) + ->set("attention_x", &attention_x) + ->set("attention_y", &attention_y)); + baton->hasCropOffset = true; + baton->cropOffsetLeft = static_cast(image.xoffset()); + baton->cropOffsetTop = static_cast(image.yoffset()); + baton->hasAttentionCenter = true; + baton->attentionX = static_cast(attention_x * jpegShrinkOnLoad / scale); + baton->attentionY = static_cast(attention_y * jpegShrinkOnLoad / scale); + } + } + } + + // Rotate post-extract non-90 angle + if (!baton->rotateBefore && baton->rotationAngle != 0.0) { + MultiPageUnsupported(nPages, "Rotate"); + KeepGainMapUnsupported(baton->keepGainMap, "Rotate"); + image = sharp::StaySequential(image); + std::vector background; + std::tie(image, background) = sharp::ApplyAlpha(image, baton->rotationBackground, shouldPremultiplyAlpha); + image = image.rotate(baton->rotationAngle, VImage::option()->set("background", background)); + if (baton->keepGainMap) { + gainMap = gainMap.rotate(baton->rotationAngle, VImage::option()->set("background", 0)); + } + } + + // Post extraction + if (baton->topOffsetPost != -1) { + if (nPages > 1) { + image = sharp::CropMultiPage(image, + baton->leftOffsetPost, baton->topOffsetPost, baton->widthPost, baton->heightPost, + nPages, &targetPageHeight); + // heightPost is used in the info object, so update to reflect the number of pages + baton->heightPost *= nPages; + } else { + image = image.extract_area( + baton->leftOffsetPost, baton->topOffsetPost, baton->widthPost, baton->heightPost); + if (baton->keepGainMap) { + gainMap = gainMap.extract_area(baton->leftOffsetPost / gainMapScaleFactor, + baton->topOffsetPost / gainMapScaleFactor, baton->widthPost / gainMapScaleFactor, + baton->heightPost / gainMapScaleFactor); + } + } + } + + // Affine transform + if (!baton->affineMatrix.empty()) { + MultiPageUnsupported(nPages, "Affine"); + KeepGainMapUnsupported(baton->keepGainMap, "Affine"); + image = sharp::StaySequential(image); + std::vector background; + std::tie(image, background) = sharp::ApplyAlpha(image, baton->affineBackground, shouldPremultiplyAlpha); + vips::VInterpolate interp = vips::VInterpolate::new_from_name( + const_cast(baton->affineInterpolator.data())); + image = image.affine(baton->affineMatrix, VImage::option()->set("background", background) + ->set("idx", baton->affineIdx) + ->set("idy", baton->affineIdy) + ->set("odx", baton->affineOdx) + ->set("ody", baton->affineOdy) + ->set("interpolate", interp)); + } + + // Extend edges + if (baton->extendTop > 0 || baton->extendBottom > 0 || baton->extendLeft > 0 || baton->extendRight > 0) { + // Embed + baton->width = image.width() + baton->extendLeft + baton->extendRight; + baton->height = (nPages > 1 ? targetPageHeight : image.height()) + baton->extendTop + baton->extendBottom; + + std::vector background; + if (baton->extendWith == VIPS_EXTEND_BACKGROUND) { + std::tie(image, background) = sharp::ApplyAlpha(image, baton->extendBackground, shouldPremultiplyAlpha); + } + image = sharp::StaySequential(image, nPages > 1 || baton->extendWith != VIPS_EXTEND_BACKGROUND); + auto options = VImage::option()->set("extend", baton->extendWith); + if (baton->extendWith == VIPS_EXTEND_BACKGROUND) { + options->set("background", background); + } + image = nPages > 1 + ? sharp::EmbedMultiPage(image, + baton->extendLeft, baton->extendTop, baton->width, baton->height, + baton->extendWith, background, nPages, &targetPageHeight) + : image.embed(baton->extendLeft, baton->extendTop, baton->width, baton->height, options); + if (baton->keepGainMap) { + gainMap = gainMap.embed(baton->extendLeft / gainMapScaleFactor, baton->extendTop / gainMapScaleFactor, + baton->width / gainMapScaleFactor, baton->height / gainMapScaleFactor, VImage::option() + ->set("extend", baton->extendWith) + ->set("background", 0)); + } + } + // Median - must happen before blurring, due to the utility of blurring after thresholding + if (baton->medianSize > 0) { + image = image.median(baton->medianSize); + } + + // Threshold - must happen before blurring, due to the utility of blurring after thresholding + // Threshold - must happen before unflatten to enable non-white unflattening + if (baton->threshold != 0) { + image = sharp::Threshold(image, baton->threshold, baton->thresholdGrayscale); + } + + // Dilate - must happen before blurring, due to the utility of dilating after thresholding + if (baton->dilateWidth != 0) { + image = sharp::Dilate(image, baton->dilateWidth); + } + + // Erode - must happen before blurring, due to the utility of eroding after thresholding + if (baton->erodeWidth != 0) { + image = sharp::Erode(image, baton->erodeWidth); + } + + // Blur + if (shouldBlur) { + image = sharp::Blur(image, baton->blurSigma, baton->precision, baton->minAmpl); + if (baton->keepGainMap) { + gainMap = sharp::Blur(gainMap, baton->blurSigma, baton->precision, baton->minAmpl); + } + } + + // Unflatten the image + if (baton->unflatten) { + image = sharp::Unflatten(image); + } + + // Convolve + if (shouldConv) { + KeepGainMapUnsupported(baton->keepGainMap, "Convolve"); + image = sharp::Convolve(image, + baton->convKernelWidth, baton->convKernelHeight, + baton->convKernelScale, baton->convKernelOffset, + baton->convKernel); + } + + // Recomb + if (!baton->recombMatrix.empty()) { + KeepGainMapUnsupported(baton->keepGainMap, "Recomb"); + image = sharp::Recomb(image, baton->recombMatrix); + } + + // Modulate + if (baton->brightness != 1.0 || baton->saturation != 1.0 || baton->hue != 0.0 || baton->lightness != 0.0) { + KeepGainMapUnsupported(baton->keepGainMap, "Modulate"); + image = sharp::Modulate(image, baton->brightness, baton->saturation, baton->hue, baton->lightness); + } + + // Sharpen + if (shouldSharpen) { + image = sharp::Sharpen(image, baton->sharpenSigma, baton->sharpenM1, baton->sharpenM2, + baton->sharpenX1, baton->sharpenY2, baton->sharpenY3); + } + + // Reverse premultiplication after all transformations + if (shouldPremultiplyAlpha) { + image = image.unpremultiply().cast(premultiplyFormat); + } + baton->premultiplied = shouldPremultiplyAlpha; + + // Composite + if (shouldComposite) { + KeepGainMapUnsupported(baton->keepGainMap, "Composite"); + std::vector images = { image }; + std::vector modes, xs, ys; + for (Composite *composite : baton->composite) { + VImage compositeImage; + sharp::ImageType compositeImageType = sharp::ImageType::UNKNOWN; + composite->input->access = access; + std::tie(compositeImage, compositeImageType) = sharp::OpenInput(composite->input); + + if (composite->input->autoOrient) { + // Respect EXIF Orientation + VipsAngle compositeAutoRotation = VIPS_ANGLE_D0; + bool compositeAutoFlop = false; + std::tie(compositeAutoRotation, compositeAutoFlop) = + CalculateExifRotationAndFlop(sharp::ExifOrientation(compositeImage)); + + compositeImage = sharp::RemoveExifOrientation(compositeImage); + compositeImage = sharp::StaySequential(compositeImage, compositeAutoRotation != VIPS_ANGLE_D0); + + if (compositeAutoRotation != VIPS_ANGLE_D0) { + compositeImage = compositeImage.rot(compositeAutoRotation); + } + if (compositeAutoFlop) { + compositeImage = compositeImage.flip(VIPS_DIRECTION_HORIZONTAL); + } + } + + // Verify within current dimensions + if (compositeImage.width() > image.width() || compositeImage.height() > image.height()) { + throw std::runtime_error("Image to composite must have same dimensions or smaller"); + } + // Check if overlay is tiled + if (composite->tile) { + int across = 0; + int down = 0; + // Use gravity in overlay + if (compositeImage.width() <= image.width()) { + across = static_cast(ceil(static_cast(image.width()) / compositeImage.width())); + // Ensure odd number of tiles across when gravity is centre, north or south + if (composite->gravity == 0 || composite->gravity == 1 || composite->gravity == 3) { + across |= 1; + } + } + if (compositeImage.height() <= image.height()) { + down = static_cast(ceil(static_cast(image.height()) / compositeImage.height())); + // Ensure odd number of tiles down when gravity is centre, east or west + if (composite->gravity == 0 || composite->gravity == 2 || composite->gravity == 4) { + down |= 1; + } + } + if (across != 0 || down != 0) { + int left; + int top; + compositeImage = sharp::StaySequential(compositeImage).replicate(across, down); + if (composite->hasOffset) { + std::tie(left, top) = sharp::CalculateCrop( + compositeImage.width(), compositeImage.height(), image.width(), image.height(), + composite->left, composite->top); + } else { + std::tie(left, top) = sharp::CalculateCrop( + compositeImage.width(), compositeImage.height(), image.width(), image.height(), composite->gravity); + } + compositeImage = compositeImage.extract_area(left, top, image.width(), image.height()); + } + // gravity was used for extract_area, set it back to its default value of 0 + composite->gravity = 0; + } + // Ensure image to composite is with unpremultiplied alpha + compositeImage = sharp::EnsureAlpha(compositeImage, 1); + if (composite->premultiplied) compositeImage = compositeImage.unpremultiply(); + // Calculate position + int left; + int top; + if (composite->hasOffset) { + // Composite image at given offsets + if (composite->tile) { + std::tie(left, top) = sharp::CalculateCrop(image.width(), image.height(), + compositeImage.width(), compositeImage.height(), composite->left, composite->top); + } else { + left = composite->left; + top = composite->top; + } + } else { + // Composite image with given gravity + std::tie(left, top) = sharp::CalculateCrop(image.width(), image.height(), + compositeImage.width(), compositeImage.height(), composite->gravity); + } + images.push_back(compositeImage); + modes.push_back(composite->mode); + xs.push_back(left); + ys.push_back(top); + } + image = VImage::composite(images, modes, VImage::option() + ->set("compositing_space", baton->colourspacePipeline == VIPS_INTERPRETATION_LAST + ? VIPS_INTERPRETATION_sRGB + : baton->colourspacePipeline) + ->set("x", xs) + ->set("y", ys)); + image = sharp::RemoveGifPalette(image); + } + + // Gamma decoding (brighten) + if (baton->gammaOut >= 1 && baton->gammaOut <= 3) { + image = sharp::Gamma(image, baton->gammaOut); + } + + // Linear adjustment (a * in + b) + if (!baton->linearA.empty()) { + image = sharp::Linear(image, baton->linearA, baton->linearB); + } + + // Apply normalisation - stretch luminance to cover full dynamic range + if (baton->normalise) { + KeepGainMapUnsupported(baton->keepGainMap, "Normalise"); + image = sharp::StaySequential(image); + image = sharp::Normalise(image, baton->normaliseLower, baton->normaliseUpper); + } + + // Apply contrast limiting adaptive histogram equalization (CLAHE) + if (baton->claheWidth != 0 && baton->claheHeight != 0) { + KeepGainMapUnsupported(baton->keepGainMap, "Clahe"); + image = sharp::StaySequential(image); + image = sharp::Clahe(image, baton->claheWidth, baton->claheHeight, baton->claheMaxSlope); + } + + // Apply bitwise boolean operation between images + if (baton->boolean != nullptr) { + KeepGainMapUnsupported(baton->keepGainMap, "Boolean"); + VImage booleanImage; + sharp::ImageType booleanImageType = sharp::ImageType::UNKNOWN; + baton->boolean->access = access; + std::tie(booleanImage, booleanImageType) = sharp::OpenInput(baton->boolean); + booleanImage = sharp::EnsureColourspace(booleanImage, baton->colourspacePipeline); + image = sharp::Boolean(image, booleanImage, baton->booleanOp); + image = sharp::RemoveGifPalette(image); + } + + // Apply per-channel Bandbool bitwise operations after all other operations + if (baton->bandBoolOp >= VIPS_OPERATION_BOOLEAN_AND && baton->bandBoolOp < VIPS_OPERATION_BOOLEAN_LAST) { + image = sharp::Bandbool(image, baton->bandBoolOp); + } + + // Tint the image + if (baton->tint[0] >= 0.0) { + image = sharp::Tint(image, baton->tint); + } + + // Remove alpha channel, if any + if (baton->removeAlpha) { + image = sharp::RemoveAlpha(image); + } + + // Ensure alpha channel, if missing + if (baton->ensureAlpha != -1) { + image = sharp::EnsureAlpha(image, baton->ensureAlpha); + } + + // Ensure output colour space + if (sharp::Is16Bit(image.interpretation())) { + image = image.cast(VIPS_FORMAT_USHORT); + } + if (image.interpretation() != baton->colourspace) { + image = image.colourspace(baton->colourspace, VImage::option()->set("source_space", image.interpretation())); + if (inputProfile.first != nullptr && baton->withIccProfile.empty()) { + image = sharp::SetProfile(image, inputProfile); + } + } + + // Extract channel + if (baton->extractChannel > -1) { + KeepGainMapUnsupported(baton->keepGainMap, "Extract channel"); + if (baton->extractChannel >= image.bands()) { + if (baton->extractChannel == 3 && image.has_alpha()) { + baton->extractChannel = image.bands() - 1; + } else { + (baton->err) + .append("Cannot extract channel ").append(std::to_string(baton->extractChannel)) + .append(" from image with channels 0-").append(std::to_string(image.bands() - 1)); + return Error(); + } + } + VipsInterpretation colourspace = sharp::Is16Bit(image.interpretation()) + ? VIPS_INTERPRETATION_GREY16 + : VIPS_INTERPRETATION_B_W; + image = image + .extract_band(baton->extractChannel) + .copy(VImage::option()->set("interpretation", colourspace)); + } + + // Apply output ICC profile + if (!baton->withIccProfile.empty()) { + try { + image = image.icc_transform(const_cast(baton->withIccProfile.data()), VImage::option() + ->set("input_profile", processingProfile) + ->set("embedded", true) + ->set("depth", sharp::Is16Bit(image.interpretation()) ? 16 : 8) + ->set("intent", VIPS_INTENT_PERCEPTUAL)); + } catch(...) { + sharp::VipsWarningCallback(nullptr, G_LOG_LEVEL_WARNING, "Invalid profile", nullptr); + } + } + + // Negate the colours in the image + if (baton->negate) { + image = sharp::Negate(image, baton->negateAlpha); + if (baton->keepGainMap) { + gainMap = sharp::Negate(gainMap, false); + } + } + + // Override EXIF Orientation tag + if (baton->withMetadataOrientation != -1) { + image = sharp::SetExifOrientation(image, baton->withMetadataOrientation); + } + // Override pixel density + if (baton->withMetadataDensity > 0) { + image = sharp::SetDensity(image, baton->withMetadataDensity); + } + // EXIF key/value pairs + if (baton->keepMetadata & VIPS_FOREIGN_KEEP_EXIF) { + image = image.copy(); + if (!baton->withExifMerge) { + image = sharp::RemoveExif(image); + } + for (const auto& [key, value] : baton->withExif) { + image.set(key.c_str(), value.c_str()); + } + } + // XMP buffer + if ((baton->keepMetadata & VIPS_FOREIGN_KEEP_XMP) && !baton->withXmp.empty()) { + image = image.copy(); + image.set(VIPS_META_XMP_NAME, nullptr, + const_cast(static_cast(baton->withXmp.c_str())), baton->withXmp.size()); + } + // Number of channels used in output image + baton->channels = image.bands(); + baton->width = image.width(); + baton->height = image.height(); + + image = sharp::SetAnimationProperties( + image, nPages, targetPageHeight, baton->delay, baton->loop); + + if (image.get_typeof(VIPS_META_PAGE_HEIGHT) == G_TYPE_INT) { + baton->pageHeightOut = image.get_int(VIPS_META_PAGE_HEIGHT); + baton->pagesOut = image.get_int(VIPS_META_N_PAGES); + } + baton->hasAlphaOut = image.has_alpha(); + + // Output + sharp::SetTimeout(image, baton->timeoutSeconds); + if (baton->fileOut.empty()) { + // Buffer output + if (baton->formatOut == "jpeg" || (baton->formatOut == "input" && inputImageType == sharp::ImageType::JPEG)) { + // Write JPEG to buffer + sharp::AssertImageTypeDimensions(image, sharp::ImageType::JPEG); + VipsArea *area; + if (baton->keepGainMap) { + image = ReattachGainMap(image, gainMap, baton); + area = reinterpret_cast(image.uhdrsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->jpegQuality) + ->set("gainmap_scale_factor", gainMapScaleFactor))); + } else { + area = reinterpret_cast(image.jpegsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->jpegQuality) + ->set("interlace", baton->jpegProgressive) + ->set("subsample_mode", baton->jpegChromaSubsampling == "4:4:4" + ? VIPS_FOREIGN_SUBSAMPLE_OFF + : VIPS_FOREIGN_SUBSAMPLE_ON) + ->set("trellis_quant", baton->jpegTrellisQuantisation) + ->set("quant_table", baton->jpegQuantisationTable) + ->set("overshoot_deringing", baton->jpegOvershootDeringing) + ->set("optimize_scans", baton->jpegOptimiseScans) + ->set("optimize_coding", baton->jpegOptimiseCoding))); + } + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "jpeg"; + if (baton->colourspace == VIPS_INTERPRETATION_CMYK) { + baton->channels = std::min(baton->channels, 4); + } else { + baton->channels = std::min(baton->channels, 3); + } + baton->hasAlphaOut = false; + } else if (baton->formatOut == "jp2" || (baton->formatOut == "input" + && inputImageType == sharp::ImageType::JP2)) { + // Write JP2 to Buffer + sharp::AssertImageTypeDimensions(image, sharp::ImageType::JP2); + VipsArea *area = reinterpret_cast(image.jp2ksave_buffer(VImage::option() + ->set("Q", baton->jp2Quality) + ->set("lossless", baton->jp2Lossless) + ->set("subsample_mode", baton->jp2ChromaSubsampling == "4:4:4" + ? VIPS_FOREIGN_SUBSAMPLE_OFF : VIPS_FOREIGN_SUBSAMPLE_ON) + ->set("tile_height", baton->jp2TileHeight) + ->set("tile_width", baton->jp2TileWidth))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "jp2"; + } else if (baton->formatOut == "png" || (baton->formatOut == "input" && + (inputImageType == sharp::ImageType::PNG || inputImageType == sharp::ImageType::SVG))) { + // Write PNG to buffer + sharp::AssertImageTypeDimensions(image, sharp::ImageType::PNG); + VipsArea *area = reinterpret_cast(image.pngsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("interlace", baton->pngProgressive) + ->set("compression", baton->pngCompressionLevel) + ->set("filter", baton->pngAdaptiveFiltering ? VIPS_FOREIGN_PNG_FILTER_ALL : VIPS_FOREIGN_PNG_FILTER_NONE) + ->set("palette", baton->pngPalette) + ->set("Q", baton->pngQuality) + ->set("effort", baton->pngEffort) + ->set("bitdepth", sharp::Is16Bit(image.interpretation()) ? 16 : baton->pngBitdepth) + ->set("dither", baton->pngDither))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "png"; + } else if (baton->formatOut == "webp" || + (baton->formatOut == "input" && inputImageType == sharp::ImageType::WEBP)) { + // Write WEBP to buffer + sharp::AssertImageTypeDimensions(image, sharp::ImageType::WEBP); + VipsArea *area = reinterpret_cast(image.webpsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->webpQuality) + ->set("lossless", baton->webpLossless) + ->set("near_lossless", baton->webpNearLossless) + ->set("smart_subsample", baton->webpSmartSubsample) + ->set("smart_deblock", baton->webpSmartDeblock) + ->set("preset", baton->webpPreset) + ->set("effort", baton->webpEffort) + ->set("min_size", baton->webpMinSize) + ->set("mixed", baton->webpMixed) + ->set("exact", baton->webpExact) + ->set("alpha_q", baton->webpAlphaQuality))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "webp"; + } else if (baton->formatOut == "gif" || + (baton->formatOut == "input" && inputImageType == sharp::ImageType::GIF)) { + // Write GIF to buffer + sharp::AssertImageTypeDimensions(image, sharp::ImageType::GIF); + VipsArea *area = reinterpret_cast(image.gifsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("bitdepth", baton->gifBitdepth) + ->set("effort", baton->gifEffort) + ->set("reuse", baton->gifReuse) + ->set("interlace", baton->gifProgressive) + ->set("interframe_maxerror", baton->gifInterFrameMaxError) + ->set("interpalette_maxerror", baton->gifInterPaletteMaxError) + ->set("keep_duplicate_frames", baton->gifKeepDuplicateFrames) + ->set("dither", baton->gifDither))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "gif"; + } else if (baton->formatOut == "tiff" || + (baton->formatOut == "input" && inputImageType == sharp::ImageType::TIFF)) { + // Write TIFF to buffer + if (baton->tiffCompression == VIPS_FOREIGN_TIFF_COMPRESSION_JPEG) { + sharp::AssertImageTypeDimensions(image, sharp::ImageType::JPEG); + baton->channels = std::min(baton->channels, 3); + baton->hasAlphaOut = false; + } + // Cast pixel values to float, if required + if (baton->tiffPredictor == VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT) { + image = image.cast(VIPS_FORMAT_FLOAT); + } + VipsArea *area = reinterpret_cast(image.tiffsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->tiffQuality) + ->set("bitdepth", baton->tiffBitdepth) + ->set("compression", baton->tiffCompression) + ->set("bigtiff", baton->tiffBigtiff) + ->set("miniswhite", baton->tiffMiniswhite) + ->set("predictor", baton->tiffPredictor) + ->set("pyramid", baton->tiffPyramid) + ->set("tile", baton->tiffTile) + ->set("tile_height", baton->tiffTileHeight) + ->set("tile_width", baton->tiffTileWidth) + ->set("xres", baton->tiffXres) + ->set("yres", baton->tiffYres) + ->set("resunit", baton->tiffResolutionUnit))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "tiff"; + } else if (baton->formatOut == "heif" || + (baton->formatOut == "input" && inputImageType == sharp::ImageType::HEIF)) { + // Write HEIF to buffer + sharp::AssertImageTypeDimensions(image, sharp::ImageType::HEIF); + image = sharp::RemoveAnimationProperties(image); + VipsArea *area = reinterpret_cast(image.heifsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->heifQuality) + ->set("compression", baton->heifCompression) + ->set("effort", baton->heifEffort) + ->set("bitdepth", baton->heifBitdepth) + ->set("tune", baton->heifTune.c_str()) + ->set("subsample_mode", baton->heifChromaSubsampling == "4:4:4" + ? VIPS_FOREIGN_SUBSAMPLE_OFF : VIPS_FOREIGN_SUBSAMPLE_ON) + ->set("lossless", baton->heifLossless))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "heif"; + } else if (baton->formatOut == "dz") { + // Write DZ to buffer + baton->tileContainer = VIPS_FOREIGN_DZ_CONTAINER_ZIP; + if (!image.has_alpha()) { + baton->tileBackground.pop_back(); + } + image = sharp::StaySequential(image, baton->tileAngle != 0); + vips::VOption *options = BuildOptionsDZ(baton); + VipsArea *area = reinterpret_cast(image.dzsave_buffer(options)); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "dz"; + if (baton->tileFormat == "jpeg") { + baton->hasAlphaOut = false; + } + } else if (baton->formatOut == "jxl" || + (baton->formatOut == "input" && inputImageType == sharp::ImageType::JXL)) { + // Write JXL to buffer + image = sharp::RemoveAnimationProperties(image); + VipsArea *area = reinterpret_cast(image.jxlsave_buffer(VImage::option() + ->set("keep", baton->keepMetadata) + ->set("distance", baton->jxlDistance) + ->set("tier", baton->jxlDecodingTier) + ->set("effort", baton->jxlEffort) + ->set("lossless", baton->jxlLossless))); + baton->bufferOut = static_cast(area->data); + baton->bufferOutLength = area->length; + area->free_fn = nullptr; + vips_area_unref(area); + baton->formatOut = "jxl"; + } else if (baton->formatOut == "raw" || + (baton->formatOut == "input" && inputImageType == sharp::ImageType::RAW)) { + // Write raw, uncompressed image data to buffer + if (baton->greyscale || image.interpretation() == VIPS_INTERPRETATION_B_W) { + // Extract first band for greyscale image + image = image[0]; + baton->channels = 1; + } + if (image.format() != baton->rawDepth) { + // Cast pixels to requested format + image = image.cast(baton->rawDepth); + } + // Get raw image data + baton->bufferOut = static_cast(image.write_to_memory(&baton->bufferOutLength)); + if (baton->bufferOut == nullptr) { + throw std::runtime_error("Could not allocate enough memory for raw output"); + } + baton->formatOut = "raw"; + } else { + // Unsupported output format + auto unsupported = std::string("Unsupported output format "); + if (baton->formatOut == "input") { + unsupported.append("when trying to match input format of "); + unsupported.append(ImageTypeId(inputImageType)); + } else { + unsupported.append(baton->formatOut); + } + throw std::runtime_error(unsupported); + } + } else { + // File output + bool const isJpeg = sharp::IsJpeg(baton->fileOut); + bool const isPng = sharp::IsPng(baton->fileOut); + bool const isWebp = sharp::IsWebp(baton->fileOut); + bool const isGif = sharp::IsGif(baton->fileOut); + bool const isTiff = sharp::IsTiff(baton->fileOut); + bool const isJp2 = sharp::IsJp2(baton->fileOut); + bool const isHeif = sharp::IsHeif(baton->fileOut); + bool const isJxl = sharp::IsJxl(baton->fileOut); + bool const isDz = sharp::IsDz(baton->fileOut); + bool const isDzZip = sharp::IsDzZip(baton->fileOut); + bool const isV = sharp::IsV(baton->fileOut); + bool const mightMatchInput = baton->formatOut == "input"; + bool const willMatchInput = mightMatchInput && + !(isJpeg || isPng || isWebp || isGif || isTiff || isJp2 || isHeif || isDz || isDzZip || isV); + + if (baton->formatOut == "jpeg" || (mightMatchInput && isJpeg) || + (willMatchInput && inputImageType == sharp::ImageType::JPEG)) { + // Write JPEG to file + sharp::AssertImageTypeDimensions(image, sharp::ImageType::JPEG); + if (baton->keepGainMap) { + image = ReattachGainMap(image, gainMap, baton); + image.uhdrsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->jpegQuality) + ->set("gainmap_scale_factor", gainMapScaleFactor)); + } else { + image.jpegsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->jpegQuality) + ->set("interlace", baton->jpegProgressive) + ->set("subsample_mode", baton->jpegChromaSubsampling == "4:4:4" + ? VIPS_FOREIGN_SUBSAMPLE_OFF + : VIPS_FOREIGN_SUBSAMPLE_ON) + ->set("trellis_quant", baton->jpegTrellisQuantisation) + ->set("quant_table", baton->jpegQuantisationTable) + ->set("overshoot_deringing", baton->jpegOvershootDeringing) + ->set("optimize_scans", baton->jpegOptimiseScans) + ->set("optimize_coding", baton->jpegOptimiseCoding)); + } + baton->formatOut = "jpeg"; + baton->channels = std::min(baton->channels, 3); + baton->hasAlphaOut = false; + } else if (baton->formatOut == "jp2" || (mightMatchInput && isJp2) || + (willMatchInput && (inputImageType == sharp::ImageType::JP2))) { + // Write JP2 to file + sharp::AssertImageTypeDimensions(image, sharp::ImageType::JP2); + image.jp2ksave(const_cast(baton->fileOut.data()), VImage::option() + ->set("Q", baton->jp2Quality) + ->set("lossless", baton->jp2Lossless) + ->set("subsample_mode", baton->jp2ChromaSubsampling == "4:4:4" + ? VIPS_FOREIGN_SUBSAMPLE_OFF : VIPS_FOREIGN_SUBSAMPLE_ON) + ->set("tile_height", baton->jp2TileHeight) + ->set("tile_width", baton->jp2TileWidth)); + baton->formatOut = "jp2"; + } else if (baton->formatOut == "png" || (mightMatchInput && isPng) || (willMatchInput && + (inputImageType == sharp::ImageType::PNG || inputImageType == sharp::ImageType::SVG))) { + // Write PNG to file + sharp::AssertImageTypeDimensions(image, sharp::ImageType::PNG); + image.pngsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("interlace", baton->pngProgressive) + ->set("compression", baton->pngCompressionLevel) + ->set("filter", baton->pngAdaptiveFiltering ? VIPS_FOREIGN_PNG_FILTER_ALL : VIPS_FOREIGN_PNG_FILTER_NONE) + ->set("palette", baton->pngPalette) + ->set("Q", baton->pngQuality) + ->set("bitdepth", sharp::Is16Bit(image.interpretation()) ? 16 : baton->pngBitdepth) + ->set("effort", baton->pngEffort) + ->set("dither", baton->pngDither)); + baton->formatOut = "png"; + } else if (baton->formatOut == "webp" || (mightMatchInput && isWebp) || + (willMatchInput && inputImageType == sharp::ImageType::WEBP)) { + // Write WEBP to file + sharp::AssertImageTypeDimensions(image, sharp::ImageType::WEBP); + image.webpsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->webpQuality) + ->set("lossless", baton->webpLossless) + ->set("near_lossless", baton->webpNearLossless) + ->set("smart_subsample", baton->webpSmartSubsample) + ->set("smart_deblock", baton->webpSmartDeblock) + ->set("preset", baton->webpPreset) + ->set("effort", baton->webpEffort) + ->set("min_size", baton->webpMinSize) + ->set("mixed", baton->webpMixed) + ->set("exact", baton->webpExact) + ->set("alpha_q", baton->webpAlphaQuality)); + baton->formatOut = "webp"; + } else if (baton->formatOut == "gif" || (mightMatchInput && isGif) || + (willMatchInput && inputImageType == sharp::ImageType::GIF)) { + // Write GIF to file + sharp::AssertImageTypeDimensions(image, sharp::ImageType::GIF); + image.gifsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("bitdepth", baton->gifBitdepth) + ->set("effort", baton->gifEffort) + ->set("reuse", baton->gifReuse) + ->set("interlace", baton->gifProgressive) + ->set("interframe_maxerror", baton->gifInterFrameMaxError) + ->set("interpalette_maxerror", baton->gifInterPaletteMaxError) + ->set("keep_duplicate_frames", baton->gifKeepDuplicateFrames) + ->set("dither", baton->gifDither)); + baton->formatOut = "gif"; + } else if (baton->formatOut == "tiff" || (mightMatchInput && isTiff) || + (willMatchInput && inputImageType == sharp::ImageType::TIFF)) { + // Write TIFF to file + if (baton->tiffCompression == VIPS_FOREIGN_TIFF_COMPRESSION_JPEG) { + sharp::AssertImageTypeDimensions(image, sharp::ImageType::JPEG); + baton->channels = std::min(baton->channels, 3); + baton->hasAlphaOut = false; + } + // Cast pixel values to float, if required + if (baton->tiffPredictor == VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT) { + image = image.cast(VIPS_FORMAT_FLOAT); + } + image.tiffsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->tiffQuality) + ->set("bitdepth", baton->tiffBitdepth) + ->set("compression", baton->tiffCompression) + ->set("bigtiff", baton->tiffBigtiff) + ->set("miniswhite", baton->tiffMiniswhite) + ->set("predictor", baton->tiffPredictor) + ->set("pyramid", baton->tiffPyramid) + ->set("tile", baton->tiffTile) + ->set("tile_height", baton->tiffTileHeight) + ->set("tile_width", baton->tiffTileWidth) + ->set("xres", baton->tiffXres) + ->set("yres", baton->tiffYres) + ->set("resunit", baton->tiffResolutionUnit)); + baton->formatOut = "tiff"; + } else if (baton->formatOut == "heif" || (mightMatchInput && isHeif) || + (willMatchInput && inputImageType == sharp::ImageType::HEIF)) { + // Write HEIF to file + sharp::AssertImageTypeDimensions(image, sharp::ImageType::HEIF); + image = sharp::RemoveAnimationProperties(image); + image.heifsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("Q", baton->heifQuality) + ->set("compression", baton->heifCompression) + ->set("effort", baton->heifEffort) + ->set("bitdepth", baton->heifBitdepth) + ->set("tune", baton->heifTune.c_str()) + ->set("subsample_mode", baton->heifChromaSubsampling == "4:4:4" + ? VIPS_FOREIGN_SUBSAMPLE_OFF : VIPS_FOREIGN_SUBSAMPLE_ON) + ->set("lossless", baton->heifLossless)); + baton->formatOut = "heif"; + } else if (baton->formatOut == "jxl" || (mightMatchInput && isJxl) || + (willMatchInput && inputImageType == sharp::ImageType::JXL)) { + // Write JXL to file + image = sharp::RemoveAnimationProperties(image); + image.jxlsave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata) + ->set("distance", baton->jxlDistance) + ->set("tier", baton->jxlDecodingTier) + ->set("effort", baton->jxlEffort) + ->set("lossless", baton->jxlLossless)); + baton->formatOut = "jxl"; + } else if (baton->formatOut == "dz" || isDz || isDzZip) { + // Write DZ to file + if (isDzZip) { + baton->tileContainer = VIPS_FOREIGN_DZ_CONTAINER_ZIP; + } + if (!image.has_alpha()) { + baton->tileBackground.pop_back(); + } + image = sharp::StaySequential(image, baton->tileAngle != 0); + vips::VOption *options = BuildOptionsDZ(baton); + image.dzsave(const_cast(baton->fileOut.data()), options); + baton->formatOut = "dz"; + if (baton->tileFormat == "jpeg") { + baton->hasAlphaOut = false; + } + } else if (baton->formatOut == "v" || (mightMatchInput && isV) || + (willMatchInput && inputImageType == sharp::ImageType::VIPS)) { + // Write V to file + image.vipssave(const_cast(baton->fileOut.data()), VImage::option() + ->set("keep", baton->keepMetadata)); + baton->formatOut = "v"; + } else { + // Unsupported output format + (baton->err).append("Unsupported output format " + baton->fileOut); + return Error(); + } + } + } catch (std::runtime_error const &err) { + char const *what = err.what(); + if (what && what[0]) { + (baton->err).append(what); + } else { + if (baton->input->failOn == VIPS_FAIL_ON_WARNING) { + (baton->err).append("Warning treated as error due to failOn setting"); + baton->errUseWarning = true; + } else { + (baton->err).append("Unknown error"); + } + } + } + // Clean up libvips' per-request data and threads + vips_error_clear(); + vips_thread_shutdown(); + } + + void OnOK() { + Napi::Env env = Env(); + Napi::HandleScope scope(env); + + // Handle warnings + std::string warning = sharp::VipsWarningPop(); + while (!warning.empty()) { + if (baton->errUseWarning) { + (baton->err).append("\n").append(warning); + } else { + debuglog.SHARP_CALLBACK_FN_NAME(Receiver().Value(), { Napi::String::New(env, warning) }); + } + warning = sharp::VipsWarningPop(); + } + if (baton->err.empty()) { + int width = baton->width; + int height = baton->height; + if (baton->topOffsetPre != -1 && (baton->width == -1 || baton->height == -1)) { + width = baton->widthPre; + height = baton->heightPre; + } + if (baton->topOffsetPost != -1) { + width = baton->widthPost; + height = baton->heightPost; + } + // Info Object + Napi::Object info = Napi::Object::New(env); + info.Set("format", baton->formatOut); + info.Set("width", static_cast(width)); + info.Set("height", static_cast(height)); + info.Set("channels", static_cast(baton->channels)); + if (baton->formatOut == "raw") { + info.Set("depth", vips_enum_nick(VIPS_TYPE_BAND_FORMAT, baton->rawDepth)); + } + info.Set("premultiplied", baton->premultiplied); + if (baton->hasCropOffset) { + info.Set("cropOffsetLeft", static_cast(baton->cropOffsetLeft)); + info.Set("cropOffsetTop", static_cast(baton->cropOffsetTop)); + } + if (baton->hasAttentionCenter) { + info.Set("attentionX", static_cast(baton->attentionX)); + info.Set("attentionY", static_cast(baton->attentionY)); + } + if (baton->trimThreshold >= 0.0) { + info.Set("trimOffsetLeft", static_cast(baton->trimOffsetLeft)); + info.Set("trimOffsetTop", static_cast(baton->trimOffsetTop)); + } + if (baton->input->textAutofitDpi) { + info.Set("textAutofitDpi", static_cast(baton->input->textAutofitDpi)); + } + if (baton->pageHeightOut) { + info.Set("pageHeight", static_cast(baton->pageHeightOut)); + info.Set("pages", static_cast(baton->pagesOut)); + } + info.Set("hasAlpha", baton->hasAlphaOut); + + if (baton->bufferOutLength > 0) { + info.Set("size", static_cast(baton->bufferOutLength)); + if (baton->typedArrayOut) { + // ECMAScript ArrayBuffer with Uint8Array view + Napi::TypedArrayOf data = Napi::Buffer::Copy(env, + static_cast(baton->bufferOut), baton->bufferOutLength); + sharp::FreeCallback(static_cast(baton->bufferOut), nullptr); + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), { env.Null(), data, info }); + } else { + // Node.js Buffer + Napi::Buffer data = Napi::Buffer::NewOrCopy(env, static_cast(baton->bufferOut), + baton->bufferOutLength, sharp::FreeCallback); + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), { env.Null(), data, info }); + } + } else { + // Add file size to info + if (baton->formatOut != "dz" || sharp::IsDzZip(baton->fileOut)) { + try { + uint32_t const size = static_cast( + std::filesystem::file_size(std::filesystem::u8path(baton->fileOut))); + info.Set("size", size); + } catch (...) {} + } + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), { env.Null(), info }); + } + } else { + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), + { Napi::Error::New(env, sharp::TrimEnd(baton->err)).Value() }); + } + + // Delete baton + delete baton->input; + delete baton->boolean; + for (Composite *composite : baton->composite) { + delete composite->input; + delete composite; + } + for (sharp::InputDescriptor *input : baton->joinChannelIn) { + delete input; + } + for (sharp::InputDescriptor *input : baton->join) { + delete input; + } + delete baton; + + // Decrement processing task counter + sharp::counterProcess--; + Napi::Number queueLength = Napi::Number::New(env, static_cast(sharp::counterQueue)); + queueListener.SHARP_CALLBACK_FN_NAME(Receiver().Value(), { queueLength }); + } + + private: + PipelineBaton *baton; + Napi::FunctionReference debuglog; + Napi::FunctionReference queueListener; + + void MultiPageUnsupported(int const pages, std::string op) { + if (pages > 1) { + throw std::runtime_error(op + " is not supported for multi-page images"); + } + } + + void KeepGainMapUnsupported(bool const keepGainMap, std::string op) { + if (keepGainMap) { + throw std::runtime_error(op + " is not supported when keeping gain maps"); + } + } + + /* + Calculate the angle of rotation and need-to-flip for the given Exif orientation + By default, returns zero, i.e. no rotation. + */ + std::tuple + CalculateExifRotationAndFlop(int const exifOrientation) { + VipsAngle rotate = VIPS_ANGLE_D0; + bool flop = false; + switch (exifOrientation) { + case 6: rotate = VIPS_ANGLE_D90; break; + case 3: rotate = VIPS_ANGLE_D180; break; + case 8: rotate = VIPS_ANGLE_D270; break; + case 2: flop = true; break; + case 7: flop = true; rotate = VIPS_ANGLE_D270; break; + case 4: flop = true; rotate = VIPS_ANGLE_D180; break; + case 5: flop = true; rotate = VIPS_ANGLE_D90; break; + } + return std::make_tuple(rotate, flop); + } + + /* + Calculate the rotation for the given angle. + Supports any positive or negative angle that is a multiple of 90. + */ + VipsAngle + CalculateAngleRotation(int angle) { + angle = angle % 360; + if (angle < 0) + angle = 360 + angle; + switch (angle) { + case 90: return VIPS_ANGLE_D90; + case 180: return VIPS_ANGLE_D180; + case 270: return VIPS_ANGLE_D270; + } + return VIPS_ANGLE_D0; + } + + /* + Assemble the suffix argument to dzsave, which is the format (by extname) + alongside comma-separated arguments to the corresponding `formatsave` vips + action. + */ + std::string + AssembleSuffixString(std::string extname, std::vector> options) { + std::string argument; + for (const auto& [key, value] : options) { + if (!argument.empty()) { + argument += ","; + } + argument += key + "=" + value; + } + return extname + "[" + argument + "]"; + } + + /* + Build VOption for dzsave + */ + vips::VOption* + BuildOptionsDZ(PipelineBaton *baton) { + // Forward format options through suffix + std::string suffix; + if (baton->tileFormat == "png") { + std::vector> options { + {"interlace", baton->pngProgressive ? "true" : "false"}, + {"compression", std::to_string(baton->pngCompressionLevel)}, + {"filter", baton->pngAdaptiveFiltering ? "all" : "none"} + }; + suffix = AssembleSuffixString(".png", options); + } else if (baton->tileFormat == "webp") { + std::vector> options { + {"Q", std::to_string(baton->webpQuality)}, + {"alpha_q", std::to_string(baton->webpAlphaQuality)}, + {"lossless", baton->webpLossless ? "true" : "false"}, + {"near_lossless", baton->webpNearLossless ? "true" : "false"}, + {"smart_subsample", baton->webpSmartSubsample ? "true" : "false"}, + {"smart_deblock", baton->webpSmartDeblock ? "true" : "false"}, + {"preset", vips_enum_nick(VIPS_TYPE_FOREIGN_WEBP_PRESET, baton->webpPreset)}, + {"min_size", baton->webpMinSize ? "true" : "false"}, + {"mixed", baton->webpMixed ? "true" : "false"}, + {"exact", baton->webpExact ? "true" : "false"}, + {"effort", std::to_string(baton->webpEffort)} + }; + suffix = AssembleSuffixString(".webp", options); + } else { + std::vector> options { + {"Q", std::to_string(baton->jpegQuality)}, + {"interlace", baton->jpegProgressive ? "true" : "false"}, + {"subsample_mode", baton->jpegChromaSubsampling == "4:4:4" ? "off" : "on"}, + {"trellis_quant", baton->jpegTrellisQuantisation ? "true" : "false"}, + {"quant_table", std::to_string(baton->jpegQuantisationTable)}, + {"overshoot_deringing", baton->jpegOvershootDeringing ? "true": "false"}, + {"optimize_scans", baton->jpegOptimiseScans ? "true": "false"}, + {"optimize_coding", baton->jpegOptimiseCoding ? "true": "false"} + }; + std::string extname = baton->tileLayout == VIPS_FOREIGN_DZ_LAYOUT_DZ ? ".jpeg" : ".jpg"; + suffix = AssembleSuffixString(extname, options); + } + vips::VOption *options = VImage::option() + ->set("keep", baton->keepMetadata) + ->set("tile_size", baton->tileSize) + ->set("overlap", baton->tileOverlap) + ->set("container", baton->tileContainer) + ->set("layout", baton->tileLayout) + ->set("suffix", const_cast(suffix.data())) + ->set("angle", CalculateAngleRotation(baton->tileAngle)) + ->set("background", baton->tileBackground) + ->set("centre", baton->tileCentre) + ->set("id", const_cast(baton->tileId.data())) + ->set("skip_blanks", baton->tileSkipBlanks); + if (baton->tileDepth < VIPS_FOREIGN_DZ_DEPTH_LAST) { + options->set("depth", baton->tileDepth); + } + if (!baton->tileBasename.empty()) { + options->set("basename", const_cast(baton->tileBasename.data())); + } + return options; + } + + VImage ReattachGainMap(VImage image, VImage gainMap, PipelineBaton *baton) { + VipsArea *gainMapJpeg = reinterpret_cast(gainMap.jpegsave_buffer(VImage::option() + ->set("keep", FALSE) + ->set("Q", baton->jpegQuality) + ->set("subsample_mode", VIPS_FOREIGN_SUBSAMPLE_OFF) + ->set("trellis_quant", baton->jpegTrellisQuantisation) + ->set("quant_table", baton->jpegQuantisationTable) + ->set("overshoot_deringing", baton->jpegOvershootDeringing) + ->set("optimize_coding", baton->jpegOptimiseCoding))); + image = image.copy(); + image.set("gainmap-data", reinterpret_cast(vips_area_free_cb), + gainMapJpeg->data, gainMapJpeg->length); + return image; + } + + /* + Clear all thread-local data. + */ + void Error() { + // Clean up libvips' per-request data and threads + vips_error_clear(); + vips_thread_shutdown(); + } +}; + +/* + pipeline(options, output, callback) +*/ +Napi::Value pipeline(const Napi::CallbackInfo& info) { + // V8 objects are converted to non-V8 types held in the baton struct + PipelineBaton *baton = new PipelineBaton; + Napi::Object options = info[size_t(0)].As(); + + // Input + baton->input = sharp::CreateInputDescriptor(options.Get("input").As()); + // Join images together + if (sharp::HasAttr(options, "join")) { + Napi::Array join = options.Get("join").As(); + for (unsigned int i = 0; i < join.Length(); i++) { + baton->join.push_back( + sharp::CreateInputDescriptor(join.Get(i).As())); + } + } + // Extract image options + baton->topOffsetPre = sharp::AttrAsInt32(options, "topOffsetPre"); + baton->leftOffsetPre = sharp::AttrAsInt32(options, "leftOffsetPre"); + baton->widthPre = sharp::AttrAsInt32(options, "widthPre"); + baton->heightPre = sharp::AttrAsInt32(options, "heightPre"); + baton->topOffsetPost = sharp::AttrAsInt32(options, "topOffsetPost"); + baton->leftOffsetPost = sharp::AttrAsInt32(options, "leftOffsetPost"); + baton->widthPost = sharp::AttrAsInt32(options, "widthPost"); + baton->heightPost = sharp::AttrAsInt32(options, "heightPost"); + // Output image dimensions + baton->width = sharp::AttrAsInt32(options, "width"); + baton->height = sharp::AttrAsInt32(options, "height"); + // Canvas option + std::string canvas = sharp::AttrAsStr(options, "canvas"); + if (canvas == "crop") { + baton->canvas = sharp::Canvas::CROP; + } else if (canvas == "embed") { + baton->canvas = sharp::Canvas::EMBED; + } else if (canvas == "max") { + baton->canvas = sharp::Canvas::MAX; + } else if (canvas == "min") { + baton->canvas = sharp::Canvas::MIN; + } else if (canvas == "ignore_aspect") { + baton->canvas = sharp::Canvas::IGNORE_ASPECT; + } + // Composite + Napi::Array compositeArray = options.Get("composite").As(); + for (unsigned int i = 0; i < compositeArray.Length(); i++) { + Napi::Object compositeObject = compositeArray.Get(i).As(); + Composite *composite = new Composite; + composite->input = sharp::CreateInputDescriptor(compositeObject.Get("input").As()); + composite->mode = sharp::AttrAsEnum(compositeObject, "blend", VIPS_TYPE_BLEND_MODE); + composite->gravity = sharp::AttrAsUint32(compositeObject, "gravity"); + composite->left = sharp::AttrAsInt32(compositeObject, "left"); + composite->top = sharp::AttrAsInt32(compositeObject, "top"); + composite->hasOffset = sharp::AttrAsBool(compositeObject, "hasOffset"); + composite->tile = sharp::AttrAsBool(compositeObject, "tile"); + composite->premultiplied = sharp::AttrAsBool(compositeObject, "premultiplied"); + baton->composite.push_back(composite); + } + // Resize options + baton->withoutEnlargement = sharp::AttrAsBool(options, "withoutEnlargement"); + baton->withoutReduction = sharp::AttrAsBool(options, "withoutReduction"); + baton->position = sharp::AttrAsInt32(options, "position"); + baton->resizeBackground = sharp::AttrAsVectorOfDouble(options, "resizeBackground"); + baton->kernel = sharp::AttrAsEnum(options, "kernel", VIPS_TYPE_KERNEL); + baton->fastShrinkOnLoad = sharp::AttrAsBool(options, "fastShrinkOnLoad"); + // Join Channel Options + if (options.Has("joinChannelIn")) { + Napi::Array joinChannelArray = options.Get("joinChannelIn").As(); + for (unsigned int i = 0; i < joinChannelArray.Length(); i++) { + baton->joinChannelIn.push_back( + sharp::CreateInputDescriptor(joinChannelArray.Get(i).As())); + } + } + // Operators + baton->flatten = sharp::AttrAsBool(options, "flatten"); + baton->flattenBackground = sharp::AttrAsVectorOfDouble(options, "flattenBackground"); + baton->unflatten = sharp::AttrAsBool(options, "unflatten"); + baton->negate = sharp::AttrAsBool(options, "negate"); + baton->negateAlpha = sharp::AttrAsBool(options, "negateAlpha"); + baton->blurSigma = sharp::AttrAsDouble(options, "blurSigma"); + baton->precision = sharp::AttrAsEnum(options, "precision", VIPS_TYPE_PRECISION); + baton->minAmpl = sharp::AttrAsDouble(options, "minAmpl"); + baton->brightness = sharp::AttrAsDouble(options, "brightness"); + baton->saturation = sharp::AttrAsDouble(options, "saturation"); + baton->hue = sharp::AttrAsInt32(options, "hue"); + baton->lightness = sharp::AttrAsDouble(options, "lightness"); + baton->medianSize = sharp::AttrAsUint32(options, "medianSize"); + baton->sharpenSigma = sharp::AttrAsDouble(options, "sharpenSigma"); + baton->sharpenM1 = sharp::AttrAsDouble(options, "sharpenM1"); + baton->sharpenM2 = sharp::AttrAsDouble(options, "sharpenM2"); + baton->sharpenX1 = sharp::AttrAsDouble(options, "sharpenX1"); + baton->sharpenY2 = sharp::AttrAsDouble(options, "sharpenY2"); + baton->sharpenY3 = sharp::AttrAsDouble(options, "sharpenY3"); + baton->threshold = sharp::AttrAsInt32(options, "threshold"); + baton->thresholdGrayscale = sharp::AttrAsBool(options, "thresholdGrayscale"); + baton->trimBackground = sharp::AttrAsVectorOfDouble(options, "trimBackground"); + baton->trimThreshold = sharp::AttrAsDouble(options, "trimThreshold"); + baton->trimLineArt = sharp::AttrAsBool(options, "trimLineArt"); + baton->trimMargin = sharp::AttrAsUint32(options, "trimMargin"); + baton->gamma = sharp::AttrAsDouble(options, "gamma"); + baton->gammaOut = sharp::AttrAsDouble(options, "gammaOut"); + baton->linearA = sharp::AttrAsVectorOfDouble(options, "linearA"); + baton->linearB = sharp::AttrAsVectorOfDouble(options, "linearB"); + baton->dilateWidth = sharp::AttrAsUint32(options, "dilateWidth"); + baton->erodeWidth = sharp::AttrAsUint32(options, "erodeWidth"); + baton->greyscale = sharp::AttrAsBool(options, "greyscale"); + baton->normalise = sharp::AttrAsBool(options, "normalise"); + baton->normaliseLower = sharp::AttrAsUint32(options, "normaliseLower"); + baton->normaliseUpper = sharp::AttrAsUint32(options, "normaliseUpper"); + baton->tint = sharp::AttrAsVectorOfDouble(options, "tint"); + baton->claheWidth = sharp::AttrAsUint32(options, "claheWidth"); + baton->claheHeight = sharp::AttrAsUint32(options, "claheHeight"); + baton->claheMaxSlope = sharp::AttrAsUint32(options, "claheMaxSlope"); + baton->angle = sharp::AttrAsInt32(options, "angle"); + baton->rotationAngle = sharp::AttrAsDouble(options, "rotationAngle"); + baton->rotationBackground = sharp::AttrAsVectorOfDouble(options, "rotationBackground"); + baton->rotateBefore = sharp::AttrAsBool(options, "rotateBefore"); + baton->orientBefore = sharp::AttrAsBool(options, "orientBefore"); + baton->flip = sharp::AttrAsBool(options, "flip"); + baton->flop = sharp::AttrAsBool(options, "flop"); + baton->extendTop = sharp::AttrAsInt32(options, "extendTop"); + baton->extendBottom = sharp::AttrAsInt32(options, "extendBottom"); + baton->extendLeft = sharp::AttrAsInt32(options, "extendLeft"); + baton->extendRight = sharp::AttrAsInt32(options, "extendRight"); + baton->extendBackground = sharp::AttrAsVectorOfDouble(options, "extendBackground"); + baton->extendWith = sharp::AttrAsEnum(options, "extendWith", VIPS_TYPE_EXTEND); + baton->extractChannel = sharp::AttrAsInt32(options, "extractChannel"); + baton->affineMatrix = sharp::AttrAsVectorOfDouble(options, "affineMatrix"); + baton->affineBackground = sharp::AttrAsVectorOfDouble(options, "affineBackground"); + baton->affineIdx = sharp::AttrAsDouble(options, "affineIdx"); + baton->affineIdy = sharp::AttrAsDouble(options, "affineIdy"); + baton->affineOdx = sharp::AttrAsDouble(options, "affineOdx"); + baton->affineOdy = sharp::AttrAsDouble(options, "affineOdy"); + baton->affineInterpolator = sharp::AttrAsStr(options, "affineInterpolator"); + baton->removeAlpha = sharp::AttrAsBool(options, "removeAlpha"); + baton->ensureAlpha = sharp::AttrAsDouble(options, "ensureAlpha"); + if (options.Has("boolean")) { + baton->boolean = sharp::CreateInputDescriptor(options.Get("boolean").As()); + baton->booleanOp = sharp::AttrAsEnum(options, "booleanOp", VIPS_TYPE_OPERATION_BOOLEAN); + } + if (options.Has("bandBoolOp")) { + baton->bandBoolOp = sharp::AttrAsEnum(options, "bandBoolOp", VIPS_TYPE_OPERATION_BOOLEAN); + } + if (options.Has("convKernel")) { + Napi::Object kernel = options.Get("convKernel").As(); + baton->convKernelWidth = sharp::AttrAsUint32(kernel, "width"); + baton->convKernelHeight = sharp::AttrAsUint32(kernel, "height"); + baton->convKernelScale = sharp::AttrAsDouble(kernel, "scale"); + baton->convKernelOffset = sharp::AttrAsDouble(kernel, "offset"); + size_t const kernelSize = static_cast(baton->convKernelWidth * baton->convKernelHeight); + baton->convKernel.resize(kernelSize); + Napi::Array kdata = kernel.Get("kernel").As(); + for (unsigned int i = 0; i < kernelSize; i++) { + baton->convKernel[i] = sharp::AttrAsDouble(kdata, i); + } + } + if (options.Has("recombMatrix")) { + Napi::Array recombMatrix = options.Get("recombMatrix").As(); + unsigned int matrixElements = recombMatrix.Length(); + baton->recombMatrix.resize(matrixElements); + for (unsigned int i = 0; i < matrixElements; i++) { + baton->recombMatrix[i] = sharp::AttrAsDouble(recombMatrix, i); + } + } + baton->colourspacePipeline = sharp::AttrAsEnum( + options, "colourspacePipeline", VIPS_TYPE_INTERPRETATION); + if (baton->colourspacePipeline == VIPS_INTERPRETATION_ERROR) { + baton->colourspacePipeline = VIPS_INTERPRETATION_LAST; + } + baton->colourspace = sharp::AttrAsEnum(options, "colourspace", VIPS_TYPE_INTERPRETATION); + if (baton->colourspace == VIPS_INTERPRETATION_ERROR) { + baton->colourspace = VIPS_INTERPRETATION_sRGB; + } + // Output + baton->formatOut = sharp::AttrAsStr(options, "formatOut"); + baton->fileOut = sharp::AttrAsStr(options, "fileOut"); + baton->typedArrayOut = sharp::AttrAsBool(options, "typedArrayOut"); + baton->keepMetadata = sharp::AttrAsUint32(options, "keepMetadata"); + baton->withMetadataOrientation = sharp::AttrAsUint32(options, "withMetadataOrientation"); + baton->withMetadataDensity = sharp::AttrAsDouble(options, "withMetadataDensity"); + baton->withIccProfile = sharp::AttrAsStr(options, "withIccProfile"); + Napi::Object withExif = options.Get("withExif").As(); + Napi::Array withExifKeys = withExif.GetPropertyNames(); + for (unsigned int i = 0; i < withExifKeys.Length(); i++) { + std::string k = sharp::AttrAsStr(withExifKeys, i); + if (withExif.HasOwnProperty(k)) { + baton->withExif.insert(std::make_pair(k, sharp::AttrAsStr(withExif, k))); + } + } + baton->withExifMerge = sharp::AttrAsBool(options, "withExifMerge"); + baton->withXmp = sharp::AttrAsStr(options, "withXmp"); + baton->keepGainMap = sharp::AttrAsBool(options, "keepGainMap"); + baton->withGainMap = sharp::AttrAsBool(options, "withGainMap"); + baton->timeoutSeconds = sharp::AttrAsUint32(options, "timeoutSeconds"); + baton->loop = sharp::AttrAsUint32(options, "loop"); + baton->delay = sharp::AttrAsInt32Vector(options, "delay"); + // Format-specific + baton->jpegQuality = sharp::AttrAsUint32(options, "jpegQuality"); + baton->jpegProgressive = sharp::AttrAsBool(options, "jpegProgressive"); + baton->jpegChromaSubsampling = sharp::AttrAsStr(options, "jpegChromaSubsampling"); + baton->jpegTrellisQuantisation = sharp::AttrAsBool(options, "jpegTrellisQuantisation"); + baton->jpegQuantisationTable = sharp::AttrAsUint32(options, "jpegQuantisationTable"); + baton->jpegOvershootDeringing = sharp::AttrAsBool(options, "jpegOvershootDeringing"); + baton->jpegOptimiseScans = sharp::AttrAsBool(options, "jpegOptimiseScans"); + baton->jpegOptimiseCoding = sharp::AttrAsBool(options, "jpegOptimiseCoding"); + baton->pngProgressive = sharp::AttrAsBool(options, "pngProgressive"); + baton->pngCompressionLevel = sharp::AttrAsUint32(options, "pngCompressionLevel"); + baton->pngAdaptiveFiltering = sharp::AttrAsBool(options, "pngAdaptiveFiltering"); + baton->pngPalette = sharp::AttrAsBool(options, "pngPalette"); + baton->pngQuality = sharp::AttrAsUint32(options, "pngQuality"); + baton->pngEffort = sharp::AttrAsUint32(options, "pngEffort"); + baton->pngBitdepth = sharp::AttrAsUint32(options, "pngBitdepth"); + baton->pngDither = sharp::AttrAsDouble(options, "pngDither"); + baton->jp2Quality = sharp::AttrAsUint32(options, "jp2Quality"); + baton->jp2Lossless = sharp::AttrAsBool(options, "jp2Lossless"); + baton->jp2TileHeight = sharp::AttrAsUint32(options, "jp2TileHeight"); + baton->jp2TileWidth = sharp::AttrAsUint32(options, "jp2TileWidth"); + baton->jp2ChromaSubsampling = sharp::AttrAsStr(options, "jp2ChromaSubsampling"); + baton->webpQuality = sharp::AttrAsUint32(options, "webpQuality"); + baton->webpAlphaQuality = sharp::AttrAsUint32(options, "webpAlphaQuality"); + baton->webpLossless = sharp::AttrAsBool(options, "webpLossless"); + baton->webpNearLossless = sharp::AttrAsBool(options, "webpNearLossless"); + baton->webpSmartSubsample = sharp::AttrAsBool(options, "webpSmartSubsample"); + baton->webpSmartDeblock = sharp::AttrAsBool(options, "webpSmartDeblock"); + baton->webpPreset = sharp::AttrAsEnum(options, "webpPreset", VIPS_TYPE_FOREIGN_WEBP_PRESET); + baton->webpEffort = sharp::AttrAsUint32(options, "webpEffort"); + baton->webpMinSize = sharp::AttrAsBool(options, "webpMinSize"); + baton->webpMixed = sharp::AttrAsBool(options, "webpMixed"); + baton->webpExact = sharp::AttrAsBool(options, "webpExact"); + baton->gifBitdepth = sharp::AttrAsUint32(options, "gifBitdepth"); + baton->gifEffort = sharp::AttrAsUint32(options, "gifEffort"); + baton->gifDither = sharp::AttrAsDouble(options, "gifDither"); + baton->gifInterFrameMaxError = sharp::AttrAsDouble(options, "gifInterFrameMaxError"); + baton->gifInterPaletteMaxError = sharp::AttrAsDouble(options, "gifInterPaletteMaxError"); + baton->gifKeepDuplicateFrames = sharp::AttrAsBool(options, "gifKeepDuplicateFrames"); + baton->gifReuse = sharp::AttrAsBool(options, "gifReuse"); + baton->gifProgressive = sharp::AttrAsBool(options, "gifProgressive"); + baton->tiffQuality = sharp::AttrAsUint32(options, "tiffQuality"); + baton->tiffBigtiff = sharp::AttrAsBool(options, "tiffBigtiff"); + baton->tiffPyramid = sharp::AttrAsBool(options, "tiffPyramid"); + baton->tiffMiniswhite = sharp::AttrAsBool(options, "tiffMiniswhite"); + baton->tiffBitdepth = sharp::AttrAsUint32(options, "tiffBitdepth"); + baton->tiffTile = sharp::AttrAsBool(options, "tiffTile"); + baton->tiffTileWidth = sharp::AttrAsUint32(options, "tiffTileWidth"); + baton->tiffTileHeight = sharp::AttrAsUint32(options, "tiffTileHeight"); + baton->tiffXres = sharp::AttrAsDouble(options, "tiffXres"); + baton->tiffYres = sharp::AttrAsDouble(options, "tiffYres"); + if (baton->tiffXres == 1.0 && baton->tiffYres == 1.0 && baton->withMetadataDensity > 0) { + baton->tiffXres = baton->tiffYres = baton->withMetadataDensity / 25.4; + } + baton->tiffCompression = sharp::AttrAsEnum( + options, "tiffCompression", VIPS_TYPE_FOREIGN_TIFF_COMPRESSION); + baton->tiffPredictor = sharp::AttrAsEnum( + options, "tiffPredictor", VIPS_TYPE_FOREIGN_TIFF_PREDICTOR); + baton->tiffResolutionUnit = sharp::AttrAsEnum( + options, "tiffResolutionUnit", VIPS_TYPE_FOREIGN_TIFF_RESUNIT); + baton->heifQuality = sharp::AttrAsUint32(options, "heifQuality"); + baton->heifLossless = sharp::AttrAsBool(options, "heifLossless"); + baton->heifCompression = sharp::AttrAsEnum( + options, "heifCompression", VIPS_TYPE_FOREIGN_HEIF_COMPRESSION); + baton->heifEffort = sharp::AttrAsUint32(options, "heifEffort"); + baton->heifChromaSubsampling = sharp::AttrAsStr(options, "heifChromaSubsampling"); + baton->heifBitdepth = sharp::AttrAsUint32(options, "heifBitdepth"); + baton->heifTune = sharp::AttrAsStr(options, "heifTune"); + baton->jxlDistance = sharp::AttrAsDouble(options, "jxlDistance"); + baton->jxlDecodingTier = sharp::AttrAsUint32(options, "jxlDecodingTier"); + baton->jxlEffort = sharp::AttrAsUint32(options, "jxlEffort"); + baton->jxlLossless = sharp::AttrAsBool(options, "jxlLossless"); + baton->rawDepth = sharp::AttrAsEnum(options, "rawDepth", VIPS_TYPE_BAND_FORMAT); + baton->tileSize = sharp::AttrAsUint32(options, "tileSize"); + baton->tileOverlap = sharp::AttrAsUint32(options, "tileOverlap"); + baton->tileAngle = sharp::AttrAsInt32(options, "tileAngle"); + baton->tileBackground = sharp::AttrAsVectorOfDouble(options, "tileBackground"); + baton->tileSkipBlanks = sharp::AttrAsInt32(options, "tileSkipBlanks"); + baton->tileContainer = sharp::AttrAsEnum( + options, "tileContainer", VIPS_TYPE_FOREIGN_DZ_CONTAINER); + baton->tileLayout = sharp::AttrAsEnum(options, "tileLayout", VIPS_TYPE_FOREIGN_DZ_LAYOUT); + baton->tileFormat = sharp::AttrAsStr(options, "tileFormat"); + baton->tileDepth = sharp::AttrAsEnum(options, "tileDepth", VIPS_TYPE_FOREIGN_DZ_DEPTH); + baton->tileCentre = sharp::AttrAsBool(options, "tileCentre"); + baton->tileId = sharp::AttrAsStr(options, "tileId"); + baton->tileBasename = sharp::AttrAsStr(options, "tileBasename"); + + // Function to notify of libvips warnings + Napi::Function debuglog = options.Get("debuglog").As(); + + // Function to notify of queue length changes + Napi::Function queueListener = options.Get("queueListener").As(); + + // Join queue for worker thread + Napi::Function callback = info[size_t(1)].As(); + PipelineWorker *worker = new PipelineWorker(callback, baton, debuglog, queueListener); + worker->Receiver().Set("options", options); + worker->Queue(); + + // Increment queued task counter + Napi::Number queueLength = Napi::Number::New(info.Env(), static_cast(++sharp::counterQueue)); + queueListener.SHARP_CALLBACK_FN_NAME(info.This(), { queueLength }); + + return info.Env().Undefined(); +} diff --git a/apps/api/.output/node_modules/sharp/src/pipeline.h b/apps/api/.output/node_modules/sharp/src/pipeline.h new file mode 100644 index 0000000..78de093 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/pipeline.h @@ -0,0 +1,422 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef SRC_PIPELINE_H_ +#define SRC_PIPELINE_H_ + +#include +#include +#include +#include + +#include +#include + +#include "./common.h" + +Napi::Value pipeline(const Napi::CallbackInfo& info); + +struct Composite { + sharp::InputDescriptor *input; + VipsBlendMode mode; + int gravity; + int left; + int top; + bool hasOffset; + bool tile; + bool premultiplied; + + Composite(): + input(nullptr), + mode(VIPS_BLEND_MODE_OVER), + gravity(0), + left(0), + top(0), + hasOffset(false), + tile(false), + premultiplied(false) {} +}; + +struct PipelineBaton { + sharp::InputDescriptor *input; + std::vector join; + std::string formatOut; + std::string fileOut; + void *bufferOut; + size_t bufferOutLength; + int pageHeightOut; + int pagesOut; + bool typedArrayOut; + bool hasAlphaOut; + std::vector composite; + std::vector joinChannelIn; + int topOffsetPre; + int leftOffsetPre; + int widthPre; + int heightPre; + int topOffsetPost; + int leftOffsetPost; + int widthPost; + int heightPost; + int width; + int height; + int channels; + VipsKernel kernel; + sharp::Canvas canvas; + int position; + std::vector resizeBackground; + bool hasCropOffset; + int cropOffsetLeft; + int cropOffsetTop; + bool hasAttentionCenter; + int attentionX; + int attentionY; + bool premultiplied; + bool tileCentre; + bool fastShrinkOnLoad; + std::vector tint; + bool flatten; + std::vector flattenBackground; + bool unflatten; + bool negate; + bool negateAlpha; + double blurSigma; + VipsPrecision precision; + double minAmpl; + double brightness; + double saturation; + int hue; + double lightness; + int medianSize; + double sharpenSigma; + double sharpenM1; + double sharpenM2; + double sharpenX1; + double sharpenY2; + double sharpenY3; + int threshold; + bool thresholdGrayscale; + std::vector trimBackground; + double trimThreshold; + bool trimLineArt; + int trimOffsetLeft; + int trimOffsetTop; + int trimMargin; + std::vector linearA; + std::vector linearB; + int dilateWidth; + int erodeWidth; + double gamma; + double gammaOut; + bool greyscale; + bool normalise; + int normaliseLower; + int normaliseUpper; + int claheWidth; + int claheHeight; + int claheMaxSlope; + int angle; + double rotationAngle; + std::vector rotationBackground; + bool rotateBefore; + bool orientBefore; + bool flip; + bool flop; + int extendTop; + int extendBottom; + int extendLeft; + int extendRight; + std::vector extendBackground; + VipsExtend extendWith; + bool withoutEnlargement; + bool withoutReduction; + std::vector affineMatrix; + std::vector affineBackground; + double affineIdx; + double affineIdy; + double affineOdx; + double affineOdy; + std::string affineInterpolator; + int jpegQuality; + bool jpegProgressive; + std::string jpegChromaSubsampling; + bool jpegTrellisQuantisation; + int jpegQuantisationTable; + bool jpegOvershootDeringing; + bool jpegOptimiseScans; + bool jpegOptimiseCoding; + bool pngProgressive; + int pngCompressionLevel; + bool pngAdaptiveFiltering; + bool pngPalette; + int pngQuality; + int pngEffort; + int pngBitdepth; + double pngDither; + int jp2Quality; + bool jp2Lossless; + int jp2TileHeight; + int jp2TileWidth; + std::string jp2ChromaSubsampling; + int webpQuality; + int webpAlphaQuality; + bool webpNearLossless; + bool webpLossless; + bool webpSmartSubsample; + bool webpSmartDeblock; + VipsForeignWebpPreset webpPreset; + int webpEffort; + bool webpMinSize; + bool webpMixed; + bool webpExact; + int gifBitdepth; + int gifEffort; + double gifDither; + double gifInterFrameMaxError; + double gifInterPaletteMaxError; + bool gifKeepDuplicateFrames; + bool gifReuse; + bool gifProgressive; + int tiffQuality; + VipsForeignTiffCompression tiffCompression; + bool tiffBigtiff; + VipsForeignTiffPredictor tiffPredictor; + bool tiffPyramid; + int tiffBitdepth; + bool tiffMiniswhite; + bool tiffTile; + int tiffTileHeight; + int tiffTileWidth; + double tiffXres; + double tiffYres; + VipsForeignTiffResunit tiffResolutionUnit; + int heifQuality; + VipsForeignHeifCompression heifCompression; + int heifEffort; + std::string heifChromaSubsampling; + bool heifLossless; + int heifBitdepth; + std::string heifTune; + double jxlDistance; + int jxlDecodingTier; + int jxlEffort; + bool jxlLossless; + VipsBandFormat rawDepth; + std::string err; + bool errUseWarning; + int keepMetadata; + int withMetadataOrientation; + double withMetadataDensity; + std::string withIccProfile; + std::unordered_map withExif; + bool withExifMerge; + std::string withXmp; + bool withGainMap; + bool keepGainMap; + int timeoutSeconds; + std::vector convKernel; + int convKernelWidth; + int convKernelHeight; + double convKernelScale; + double convKernelOffset; + sharp::InputDescriptor *boolean; + VipsOperationBoolean booleanOp; + VipsOperationBoolean bandBoolOp; + int extractChannel; + bool removeAlpha; + double ensureAlpha; + VipsInterpretation colourspacePipeline; + VipsInterpretation colourspace; + std::vector delay; + int loop; + int tileSize; + int tileOverlap; + VipsForeignDzContainer tileContainer; + VipsForeignDzLayout tileLayout; + std::string tileFormat; + int tileAngle; + std::vector tileBackground; + int tileSkipBlanks; + VipsForeignDzDepth tileDepth; + std::string tileId; + std::string tileBasename; + std::vector recombMatrix; + + PipelineBaton(): + input(nullptr), + bufferOutLength(0), + pageHeightOut(0), + pagesOut(0), + typedArrayOut(false), + hasAlphaOut(false), + topOffsetPre(-1), + topOffsetPost(-1), + channels(0), + kernel(VIPS_KERNEL_LANCZOS3), + canvas(sharp::Canvas::CROP), + position(0), + resizeBackground{ 0.0, 0.0, 0.0, 255.0 }, + hasCropOffset(false), + cropOffsetLeft(0), + cropOffsetTop(0), + hasAttentionCenter(false), + attentionX(0), + attentionY(0), + premultiplied(false), + tint{ -1.0, 0.0, 0.0, 0.0 }, + flatten(false), + flattenBackground{ 0.0, 0.0, 0.0 }, + unflatten(false), + negate(false), + negateAlpha(true), + blurSigma(0.0), + brightness(1.0), + saturation(1.0), + hue(0), + lightness(0), + medianSize(0), + sharpenSigma(0.0), + sharpenM1(1.0), + sharpenM2(2.0), + sharpenX1(2.0), + sharpenY2(10.0), + sharpenY3(20.0), + threshold(0), + thresholdGrayscale(true), + trimBackground{}, + trimThreshold(-1.0), + trimLineArt(false), + trimOffsetLeft(0), + trimOffsetTop(0), + trimMargin(0), + linearA{}, + linearB{}, + dilateWidth(0), + erodeWidth(0), + gamma(0.0), + greyscale(false), + normalise(false), + normaliseLower(1), + normaliseUpper(99), + claheWidth(0), + claheHeight(0), + claheMaxSlope(3), + angle(0), + rotationAngle(0.0), + rotationBackground{ 0.0, 0.0, 0.0, 255.0 }, + flip(false), + flop(false), + extendTop(0), + extendBottom(0), + extendLeft(0), + extendRight(0), + extendBackground{ 0.0, 0.0, 0.0, 255.0 }, + extendWith(VIPS_EXTEND_BACKGROUND), + withoutEnlargement(false), + withoutReduction(false), + affineMatrix{ 1.0, 0.0, 0.0, 1.0 }, + affineBackground{ 0.0, 0.0, 0.0, 255.0 }, + affineIdx(0), + affineIdy(0), + affineOdx(0), + affineOdy(0), + affineInterpolator("bicubic"), + jpegQuality(80), + jpegProgressive(false), + jpegChromaSubsampling("4:2:0"), + jpegTrellisQuantisation(false), + jpegQuantisationTable(0), + jpegOvershootDeringing(false), + jpegOptimiseScans(false), + jpegOptimiseCoding(true), + pngProgressive(false), + pngCompressionLevel(6), + pngAdaptiveFiltering(false), + pngPalette(false), + pngQuality(100), + pngEffort(7), + pngBitdepth(8), + pngDither(1.0), + jp2Quality(80), + jp2Lossless(false), + jp2TileHeight(512), + jp2TileWidth(512), + jp2ChromaSubsampling("4:4:4"), + webpQuality(80), + webpAlphaQuality(100), + webpNearLossless(false), + webpLossless(false), + webpSmartSubsample(false), + webpSmartDeblock(false), + webpPreset(VIPS_FOREIGN_WEBP_PRESET_DEFAULT), + webpEffort(4), + webpMinSize(false), + webpMixed(false), + webpExact(false), + gifBitdepth(8), + gifEffort(7), + gifDither(1.0), + gifInterFrameMaxError(0.0), + gifInterPaletteMaxError(3.0), + gifKeepDuplicateFrames(false), + gifReuse(true), + gifProgressive(false), + tiffQuality(80), + tiffCompression(VIPS_FOREIGN_TIFF_COMPRESSION_JPEG), + tiffBigtiff(false), + tiffPredictor(VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL), + tiffPyramid(false), + tiffBitdepth(0), + tiffMiniswhite(false), + tiffTile(false), + tiffTileHeight(256), + tiffTileWidth(256), + tiffXres(1.0), + tiffYres(1.0), + tiffResolutionUnit(VIPS_FOREIGN_TIFF_RESUNIT_INCH), + heifQuality(50), + heifCompression(VIPS_FOREIGN_HEIF_COMPRESSION_AV1), + heifEffort(4), + heifChromaSubsampling("4:4:4"), + heifLossless(false), + heifBitdepth(8), + heifTune("auto"), + jxlDistance(1.0), + jxlDecodingTier(0), + jxlEffort(7), + jxlLossless(false), + rawDepth(VIPS_FORMAT_UCHAR), + errUseWarning(false), + keepMetadata(0), + withMetadataOrientation(-1), + withMetadataDensity(0.0), + withExifMerge(true), + withGainMap(false), + keepGainMap(false), + timeoutSeconds(0), + convKernelWidth(0), + convKernelHeight(0), + convKernelScale(0.0), + convKernelOffset(0.0), + boolean(nullptr), + booleanOp(VIPS_OPERATION_BOOLEAN_LAST), + bandBoolOp(VIPS_OPERATION_BOOLEAN_LAST), + extractChannel(-1), + removeAlpha(false), + ensureAlpha(-1.0), + colourspacePipeline(VIPS_INTERPRETATION_LAST), + colourspace(VIPS_INTERPRETATION_LAST), + loop(-1), + tileSize(256), + tileOverlap(0), + tileContainer(VIPS_FOREIGN_DZ_CONTAINER_FS), + tileLayout(VIPS_FOREIGN_DZ_LAYOUT_DZ), + tileAngle(0), + tileBackground{ 255.0, 255.0, 255.0, 255.0 }, + tileSkipBlanks(-1), + tileDepth(VIPS_FOREIGN_DZ_DEPTH_LAST) {} +}; + +#endif // SRC_PIPELINE_H_ diff --git a/apps/api/.output/node_modules/sharp/src/sharp.cc b/apps/api/.output/node_modules/sharp/src/sharp.cc new file mode 100644 index 0000000..7678975 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/sharp.cc @@ -0,0 +1,43 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#include + +#include +#include + +#include "./common.h" +#include "./metadata.h" +#include "./pipeline.h" +#include "./stats.h" +#include "./utilities.h" + +Napi::Object init(Napi::Env env, Napi::Object exports) { + static std::once_flag sharp_vips_init_once; + std::call_once(sharp_vips_init_once, []() { + vips_init("sharp"); + }); + + g_log_set_handler("VIPS", static_cast(G_LOG_LEVEL_WARNING), + static_cast(sharp::VipsWarningCallback), nullptr); + + // Methods available to JavaScript + exports.Set("metadata", Napi::Function::New(env, metadata)); + exports.Set("pipeline", Napi::Function::New(env, pipeline)); + exports.Set("cache", Napi::Function::New(env, cache)); + exports.Set("concurrency", Napi::Function::New(env, concurrency)); + exports.Set("counters", Napi::Function::New(env, counters)); + exports.Set("simd", Napi::Function::New(env, simd)); + exports.Set("libvipsVersion", Napi::Function::New(env, libvipsVersion)); + exports.Set("format", Napi::Function::New(env, format)); + exports.Set("block", Napi::Function::New(env, block)); + exports.Set("_maxColourDistance", Napi::Function::New(env, _maxColourDistance)); + exports.Set("_isUsingJemalloc", Napi::Function::New(env, _isUsingJemalloc)); + exports.Set("_isUsingX64V2", Napi::Function::New(env, _isUsingX64V2)); + exports.Set("stats", Napi::Function::New(env, stats)); + return exports; +} + +NODE_API_MODULE(sharp, init) diff --git a/apps/api/.output/node_modules/sharp/src/stats.cc b/apps/api/.output/node_modules/sharp/src/stats.cc new file mode 100644 index 0000000..ad123fe --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/stats.cc @@ -0,0 +1,186 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#include +#include +#include +#include + +#include +#include + +#include "./common.h" +#include "./stats.h" + +class StatsWorker : public Napi::AsyncWorker { + public: + StatsWorker(Napi::Function callback, StatsBaton *baton, Napi::Function debuglog) : + Napi::AsyncWorker(callback), baton(baton), debuglog(Napi::Persistent(debuglog)) {} + ~StatsWorker() {} + + const int STAT_MIN_INDEX = 0; + const int STAT_MAX_INDEX = 1; + const int STAT_SUM_INDEX = 2; + const int STAT_SQ_SUM_INDEX = 3; + const int STAT_MEAN_INDEX = 4; + const int STAT_STDEV_INDEX = 5; + const int STAT_MINX_INDEX = 6; + const int STAT_MINY_INDEX = 7; + const int STAT_MAXX_INDEX = 8; + const int STAT_MAXY_INDEX = 9; + + void Execute() { + // Decrement queued task counter + sharp::counterQueue--; + + vips::VImage image; + sharp::ImageType imageType = sharp::ImageType::UNKNOWN; + try { + std::tie(image, imageType) = OpenInput(baton->input); + } catch (std::runtime_error const &err) { + (baton->err).append(err.what()); + } + if (imageType != sharp::ImageType::UNKNOWN) { + try { + vips::VImage stats = image.stats(); + int const bands = image.bands(); + for (int b = 1; b <= bands; b++) { + ChannelStats cStats( + static_cast(stats.getpoint(STAT_MIN_INDEX, b).front()), + static_cast(stats.getpoint(STAT_MAX_INDEX, b).front()), + stats.getpoint(STAT_SUM_INDEX, b).front(), + stats.getpoint(STAT_SQ_SUM_INDEX, b).front(), + stats.getpoint(STAT_MEAN_INDEX, b).front(), + stats.getpoint(STAT_STDEV_INDEX, b).front(), + static_cast(stats.getpoint(STAT_MINX_INDEX, b).front()), + static_cast(stats.getpoint(STAT_MINY_INDEX, b).front()), + static_cast(stats.getpoint(STAT_MAXX_INDEX, b).front()), + static_cast(stats.getpoint(STAT_MAXY_INDEX, b).front())); + baton->channelStats.push_back(cStats); + } + // Image is not opaque when alpha layer is present and contains a non-mamixa value + if (image.has_alpha()) { + double const minAlpha = static_cast(stats.getpoint(STAT_MIN_INDEX, bands).front()); + if (minAlpha != vips_interpretation_max_alpha(image.interpretation())) { + baton->isOpaque = false; + } + } + // Convert to greyscale + vips::VImage greyscale = image.colourspace(VIPS_INTERPRETATION_B_W)[0]; + // Estimate entropy via histogram of greyscale value frequency + baton->entropy = std::abs(greyscale.hist_find().hist_entropy()); + // Estimate sharpness via standard deviation of greyscale laplacian + if (image.width() > 1 || image.height() > 1) { + VImage laplacian = VImage::new_matrixv(3, 3, + 0.0, 1.0, 0.0, + 1.0, -4.0, 1.0, + 0.0, 1.0, 0.0); + laplacian.set("scale", 9.0); + baton->sharpness = greyscale.conv(laplacian).deviate(); + } + // Most dominant sRGB colour via 4096-bin 3D histogram + vips::VImage hist = sharp::RemoveAlpha(image) + .colourspace(VIPS_INTERPRETATION_sRGB) + .hist_find_ndim(VImage::option()->set("bins", 16)); + std::complex maxpos = hist.maxpos(); + int const dx = static_cast(std::real(maxpos)); + int const dy = static_cast(std::imag(maxpos)); + std::vector pel = hist(dx, dy); + int const dz = std::distance(pel.begin(), std::find(pel.begin(), pel.end(), hist.max())); + baton->dominantRed = dx * 16 + 8; + baton->dominantGreen = dy * 16 + 8; + baton->dominantBlue = dz * 16 + 8; + } catch (std::runtime_error const &err) { + (baton->err).append(err.what()); + } + } + + // Clean up + vips_error_clear(); + vips_thread_shutdown(); + } + + void OnOK() { + Napi::Env env = Env(); + Napi::HandleScope scope(env); + + // Handle warnings + std::string warning = sharp::VipsWarningPop(); + while (!warning.empty()) { + debuglog.SHARP_CALLBACK_FN_NAME(Receiver().Value(), { Napi::String::New(env, warning) }); + warning = sharp::VipsWarningPop(); + } + if (baton->err.empty()) { + // Stats Object + Napi::Object info = Napi::Object::New(env); + Napi::Array channels = Napi::Array::New(env); + + std::vector::iterator it; + int i = 0; + for (it = baton->channelStats.begin(); it < baton->channelStats.end(); it++, i++) { + Napi::Object channelStat = Napi::Object::New(env); + channelStat.Set("min", it->min); + channelStat.Set("max", it->max); + channelStat.Set("sum", it->sum); + channelStat.Set("squaresSum", it->squaresSum); + channelStat.Set("mean", it->mean); + channelStat.Set("stdev", it->stdev); + channelStat.Set("minX", it->minX); + channelStat.Set("minY", it->minY); + channelStat.Set("maxX", it->maxX); + channelStat.Set("maxY", it->maxY); + channels.Set(i, channelStat); + } + + info.Set("channels", channels); + info.Set("isOpaque", baton->isOpaque); + info.Set("entropy", baton->entropy); + info.Set("sharpness", baton->sharpness); + Napi::Object dominant = Napi::Object::New(env); + dominant.Set("r", baton->dominantRed); + dominant.Set("g", baton->dominantGreen); + dominant.Set("b", baton->dominantBlue); + info.Set("dominant", dominant); + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), { env.Null(), info }); + } else { + Callback().SHARP_CALLBACK_FN_NAME(Receiver().Value(), + { Napi::Error::New(env, sharp::TrimEnd(baton->err)).Value() }); + } + + delete baton->input; + delete baton; + } + + private: + StatsBaton* baton; + Napi::FunctionReference debuglog; +}; + +/* + stats(options, callback) +*/ +Napi::Value stats(const Napi::CallbackInfo& info) { + // V8 objects are converted to non-V8 types held in the baton struct + StatsBaton *baton = new StatsBaton; + Napi::Object options = info[size_t(0)].As(); + + // Input + baton->input = sharp::CreateInputDescriptor(options.Get("input").As()); + baton->input->access = VIPS_ACCESS_RANDOM; + + // Function to notify of libvips warnings + Napi::Function debuglog = options.Get("debuglog").As(); + + // Join queue for worker thread + Napi::Function callback = info[size_t(1)].As(); + StatsWorker *worker = new StatsWorker(callback, baton, debuglog); + worker->Receiver().Set("options", options); + worker->Queue(); + + // Increment queued task counter + sharp::counterQueue++; + + return info.Env().Undefined(); +} diff --git a/apps/api/.output/node_modules/sharp/src/stats.h b/apps/api/.output/node_modules/sharp/src/stats.h new file mode 100644 index 0000000..88e13c6 --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/stats.h @@ -0,0 +1,62 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef SRC_STATS_H_ +#define SRC_STATS_H_ + +#include +#include +#include + +#include "./common.h" + +struct ChannelStats { + // stats per channel + int min; + int max; + double sum; + double squaresSum; + double mean; + double stdev; + int minX; + int minY; + int maxX; + int maxY; + + ChannelStats(int minVal, int maxVal, double sumVal, double squaresSumVal, + double meanVal, double stdevVal, int minXVal, int minYVal, int maxXVal, int maxYVal): + min(minVal), max(maxVal), sum(sumVal), squaresSum(squaresSumVal), // NOLINT(build/include_what_you_use) + mean(meanVal), stdev(stdevVal), minX(minXVal), minY(minYVal), maxX(maxXVal), maxY(maxYVal) {} +}; + +struct StatsBaton { + // Input + sharp::InputDescriptor *input; + + // Output + std::vector channelStats; + bool isOpaque; + double entropy; + double sharpness; + int dominantRed; + int dominantGreen; + int dominantBlue; + + std::string err; + + StatsBaton(): + input(nullptr), + isOpaque(true), + entropy(0.0), + sharpness(0.0), + dominantRed(0), + dominantGreen(0), + dominantBlue(0) + {} +}; + +Napi::Value stats(const Napi::CallbackInfo& info); + +#endif // SRC_STATS_H_ diff --git a/apps/api/.output/node_modules/sharp/src/utilities.cc b/apps/api/.output/node_modules/sharp/src/utilities.cc new file mode 100644 index 0000000..8f5cb5b --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/utilities.cc @@ -0,0 +1,289 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#include +#include +#include + +#include +#include +#include + +#include "./common.h" +#include "./operations.h" +#include "./utilities.h" + +/* + Get and set cache limits +*/ +Napi::Value cache(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + + // Set memory limit + if (info[size_t(0)].IsNumber()) { + vips_cache_set_max_mem(static_cast(info[size_t(0)].As().Uint32Value()) * 1048576); + } + // Set file limit + if (info[size_t(1)].IsNumber()) { + vips_cache_set_max_files(info[size_t(1)].As().Uint32Value()); + } + // Set items limit + if (info[size_t(2)].IsNumber()) { + vips_cache_set_max(info[size_t(2)].As().Uint32Value()); + } + + // Get memory stats + Napi::Object memory = Napi::Object::New(env); + memory.Set("current", round(vips_tracked_get_mem() / 1048576)); + memory.Set("high", round(vips_tracked_get_mem_highwater() / 1048576)); + memory.Set("max", round(vips_cache_get_max_mem() / 1048576)); + // Get file stats + Napi::Object files = Napi::Object::New(env); + files.Set("current", vips_tracked_get_files()); + files.Set("max", vips_cache_get_max_files()); + + // Get item stats + Napi::Object items = Napi::Object::New(env); + items.Set("current", vips_cache_get_size()); + items.Set("max", vips_cache_get_max()); + + Napi::Object cache = Napi::Object::New(env); + cache.Set("memory", memory); + cache.Set("files", files); + cache.Set("items", items); + return cache; +} + +/* + Get and set size of thread pool +*/ +Napi::Value concurrency(const Napi::CallbackInfo& info) { + // Set concurrency + if (info[size_t(0)].IsNumber()) { + vips_concurrency_set(info[size_t(0)].As().Int32Value()); + } + // Get concurrency + return Napi::Number::New(info.Env(), vips_concurrency_get()); +} + +/* + Get internal counters (queued tasks, processing tasks) +*/ +Napi::Value counters(const Napi::CallbackInfo& info) { + Napi::Object counters = Napi::Object::New(info.Env()); + counters.Set("queue", static_cast(sharp::counterQueue)); + counters.Set("process", static_cast(sharp::counterProcess)); + return counters; +} + +/* + Get and set use of SIMD vector unit instructions +*/ +Napi::Value simd(const Napi::CallbackInfo& info) { + // Set state + if (info[size_t(0)].IsBoolean()) { + vips_vector_set_enabled(info[size_t(0)].As().Value()); + } + // Get state + return Napi::Boolean::New(info.Env(), vips_vector_isenabled()); +} + +/* + Get libvips version +*/ +Napi::Value libvipsVersion(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::Object version = Napi::Object::New(env); + + char semver[9]; + std::snprintf(semver, sizeof(semver), "%d.%d.%d", vips_version(0), vips_version(1), vips_version(2)); + version.Set("semver", Napi::String::New(env, semver)); +#ifdef SHARP_USE_GLOBAL_LIBVIPS + version.Set("isGlobal", Napi::Boolean::New(env, true)); +#else + version.Set("isGlobal", Napi::Boolean::New(env, false)); +#endif +#ifdef __EMSCRIPTEN__ + version.Set("isWasm", Napi::Boolean::New(env, true)); +#else + version.Set("isWasm", Napi::Boolean::New(env, false)); +#endif + return version; +} + +/* + Get available input/output file/buffer/stream formats +*/ +Napi::Value format(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::Object format = Napi::Object::New(env); + for (std::string const f : { + "jpeg", "png", "webp", "tiff", "magick", "openslide", "dz", + "ppm", "fits", "gif", "svg", "heif", "pdf", "vips", "jp2k", "jxl", "rad", "dcraw" + }) { + std::string id = f == "jp2k" ? "jp2" : f; + // Input + const VipsObjectClass *oc = vips_class_find("VipsOperation", (f + "load").c_str()); + Napi::Boolean hasInputFile = Napi::Boolean::New(env, oc); + Napi::Boolean hasInputBuffer = + Napi::Boolean::New(env, vips_type_find("VipsOperation", (f + "load_buffer").c_str())); + Napi::Object input = Napi::Object::New(env); + input.Set("file", hasInputFile); + input.Set("buffer", hasInputBuffer); + input.Set("stream", hasInputBuffer); + if (oc) { + const VipsForeignClass *fc = VIPS_FOREIGN_CLASS(oc); + if (fc->suffs) { + Napi::Array fileSuffix = Napi::Array::New(env); + const char **suffix = fc->suffs; + for (int i = 0; *suffix; i++, suffix++) { + fileSuffix.Set(i, Napi::String::New(env, *suffix)); + } + input.Set("fileSuffix", fileSuffix); + } + } + // Output + Napi::Boolean hasOutputFile = + Napi::Boolean::New(env, vips_type_find("VipsOperation", (f + "save").c_str())); + Napi::Boolean hasOutputBuffer = + Napi::Boolean::New(env, vips_type_find("VipsOperation", (f + "save_buffer").c_str())); + Napi::Object output = Napi::Object::New(env); + output.Set("file", hasOutputFile); + output.Set("buffer", hasOutputBuffer); + output.Set("stream", hasOutputBuffer); + // Other attributes + Napi::Object container = Napi::Object::New(env); + container.Set("id", id); + container.Set("input", input); + container.Set("output", output); + // Add to set of formats + format.Set(id, container); + } + + // Raw, uncompressed data + Napi::Boolean supported = Napi::Boolean::New(env, true); + Napi::Boolean unsupported = Napi::Boolean::New(env, false); + Napi::Object rawInput = Napi::Object::New(env); + rawInput.Set("file", unsupported); + rawInput.Set("buffer", supported); + rawInput.Set("stream", supported); + Napi::Object rawOutput = Napi::Object::New(env); + rawOutput.Set("file", unsupported); + rawOutput.Set("buffer", supported); + rawOutput.Set("stream", supported); + Napi::Object raw = Napi::Object::New(env); + raw.Set("id", "raw"); + raw.Set("input", rawInput); + raw.Set("output", rawOutput); + format.Set("raw", raw); + + return format; +} + +/* + (Un)block libvips operations at runtime. +*/ +void block(const Napi::CallbackInfo& info) { + Napi::Array ops = info[size_t(0)].As(); + bool const state = info[size_t(1)].As().Value(); + for (unsigned int i = 0; i < ops.Length(); i++) { + vips_operation_block_set(ops.Get(i).As().Utf8Value().c_str(), state); + } +} + +/* + Synchronous, internal-only method used by some of the functional tests. + Calculates the maximum colour distance using the DE2000 algorithm + between two images of the same dimensions and number of channels. +*/ +Napi::Value _maxColourDistance(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + + // Open input files + VImage image1; + sharp::ImageType imageType1 = sharp::DetermineImageType(info[size_t(0)].As().Utf8Value().data()); + if (imageType1 != sharp::ImageType::UNKNOWN) { + try { + image1 = VImage::new_from_file(info[size_t(0)].As().Utf8Value().c_str()); + } catch (...) { + throw Napi::Error::New(env, "Input file 1 has corrupt header"); + } + } else { + throw Napi::Error::New(env, "Input file 1 is of an unsupported image format"); + } + VImage image2; + sharp::ImageType imageType2 = sharp::DetermineImageType(info[size_t(1)].As().Utf8Value().data()); + if (imageType2 != sharp::ImageType::UNKNOWN) { + try { + image2 = VImage::new_from_file(info[size_t(1)].As().Utf8Value().c_str()); + } catch (...) { + throw Napi::Error::New(env, "Input file 2 has corrupt header"); + } + } else { + throw Napi::Error::New(env, "Input file 2 is of an unsupported image format"); + } + // Ensure same number of channels + if (image1.bands() != image2.bands()) { + throw Napi::Error::New(env, "mismatchedBands"); + } + // Ensure same dimensions + if (image1.width() != image2.width() || image1.height() != image2.height()) { + throw Napi::Error::New(env, "mismatchedDimensions"); + } + + double maxColourDistance; + try { + // Premultiply and remove alpha + if (image1.has_alpha()) { + image1 = image1.premultiply().extract_band(1, VImage::option()->set("n", image1.bands() - 1)); + } + if (image2.has_alpha()) { + image2 = image2.premultiply().extract_band(1, VImage::option()->set("n", image2.bands() - 1)); + } + // Calculate colour distance + maxColourDistance = image1.dE00(image2).max(); + } catch (std::runtime_error const &err) { + throw Napi::Error::New(env, err.what()); + } + + // Clean up libvips' per-request data and threads + vips_error_clear(); + vips_thread_shutdown(); + + return Napi::Number::New(env, maxColourDistance); +} + +#if defined(__GNUC__) +// mallctl will be resolved by the runtime linker when jemalloc is being used +extern "C" { + int mallctl(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen) __attribute__((weak)); +} +Napi::Value _isUsingJemalloc(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + return Napi::Boolean::New(env, mallctl != nullptr); +} +#else +Napi::Value _isUsingJemalloc(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + return Napi::Boolean::New(env, false); +} +#endif + +#if defined(__GNUC__) && defined(__x86_64__) +// Are SSE 4.2 intrinsics available at runtime? +Napi::Value _isUsingX64V2(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + unsigned int eax, ebx, ecx, edx; + __asm__ __volatile__("cpuid" + : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) + : "a"(1)); + return Napi::Boolean::New(env, (ecx & 1U << 20) != 0); +} +#else +Napi::Value _isUsingX64V2(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + return Napi::Boolean::New(env, false); +} +#endif diff --git a/apps/api/.output/node_modules/sharp/src/utilities.h b/apps/api/.output/node_modules/sharp/src/utilities.h new file mode 100644 index 0000000..a1719fa --- /dev/null +++ b/apps/api/.output/node_modules/sharp/src/utilities.h @@ -0,0 +1,22 @@ +/*! + Copyright 2013 Lovell Fuller and others. + SPDX-License-Identifier: Apache-2.0 +*/ + +#ifndef SRC_UTILITIES_H_ +#define SRC_UTILITIES_H_ + +#include + +Napi::Value cache(const Napi::CallbackInfo& info); +Napi::Value concurrency(const Napi::CallbackInfo& info); +Napi::Value counters(const Napi::CallbackInfo& info); +Napi::Value simd(const Napi::CallbackInfo& info); +Napi::Value libvipsVersion(const Napi::CallbackInfo& info); +Napi::Value format(const Napi::CallbackInfo& info); +void block(const Napi::CallbackInfo& info); +Napi::Value _maxColourDistance(const Napi::CallbackInfo& info); +Napi::Value _isUsingJemalloc(const Napi::CallbackInfo& info); +Napi::Value _isUsingX64V2(const Napi::CallbackInfo& info); + +#endif // SRC_UTILITIES_H_ diff --git a/apps/api/.output/package.json b/apps/api/.output/package.json new file mode 100644 index 0000000..e986b24 --- /dev/null +++ b/apps/api/.output/package.json @@ -0,0 +1,4 @@ +{ + "private": true, + "type": "module" +} diff --git a/apps/api/dist/migrate.js b/apps/api/dist/migrate.js new file mode 100644 index 0000000..94d58e8 --- /dev/null +++ b/apps/api/dist/migrate.js @@ -0,0 +1,66 @@ +import { createHash, randomUUID } from "node:crypto"; +import { existsSync } from "node:fs"; +import { readdir, readFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import pg from "pg"; +if (existsSync(".env")) + process.loadEnvFile(".env"); +const MIGRATIONS_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../prisma/migrations"); +const LOCK_ID = 72707369; +const client = new pg.Client({ connectionString: process.env.DATABASE_URL }); +async function main() { + await client.query(`SELECT pg_advisory_lock(${LOCK_ID})`); + await client.query(`CREATE TABLE IF NOT EXISTS "_prisma_migrations" ( + "id" VARCHAR(36) PRIMARY KEY NOT NULL, + "checksum" VARCHAR(64) NOT NULL, + "finished_at" TIMESTAMPTZ, + "migration_name" VARCHAR(255) NOT NULL, + "logs" TEXT, + "rolled_back_at" TIMESTAMPTZ, + "started_at" TIMESTAMPTZ NOT NULL DEFAULT now(), + "applied_steps_count" INTEGER NOT NULL DEFAULT 0 + )`); + const { rows } = await client.query(`SELECT migration_name, finished_at FROM "_prisma_migrations" WHERE rolled_back_at IS NULL`); + const failed = rows.find((r) => !r.finished_at); + if (failed) { + throw new Error(`migration ${failed.migration_name} failed earlier; fix the database, then mark it with ` + + `\`prisma migrate resolve\` (see its "logs" column in _prisma_migrations)`); + } + const applied = new Set(rows.map((r) => r.migration_name)); + const entries = await readdir(MIGRATIONS_DIR, { withFileTypes: true }); + const pending = entries + .filter((e) => e.isDirectory() && !applied.has(e.name)) + .map((e) => e.name) + .sort(); + for (const name of pending) { + const script = await readFile(path.join(MIGRATIONS_DIR, name, "migration.sql"), "utf8"); + const id = randomUUID(); + await client.query(`INSERT INTO "_prisma_migrations" (id, checksum, migration_name) VALUES ($1, $2, $3)`, [id, createHash("sha256").update(script).digest("hex"), name]); + try { + await client.query(script); + } + catch (e) { + await client.query(`UPDATE "_prisma_migrations" SET logs = $2 WHERE id = $1`, [ + id, + String(e), + ]); + throw new Error(`migration ${name} failed`, { cause: e }); + } + await client.query(`UPDATE "_prisma_migrations" SET finished_at = now(), applied_steps_count = 1 WHERE id = $1`, [id]); + console.log(`applied ${name}`); + } + console.log(pending.length ? `${pending.length} migration(s) applied` : "no pending migrations"); +} +try { + await client.connect(); + await main(); +} +catch (e) { + console.error(e); + process.exitCode = 1; +} +finally { + await client.end(); +} +//# sourceMappingURL=migrate.js.map \ No newline at end of file diff --git a/apps/api/dist/migrate.js.map b/apps/api/dist/migrate.js.map new file mode 100644 index 0000000..018decc --- /dev/null +++ b/apps/api/dist/migrate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json index 186c963..c81bb51 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "build": "prisma generate && nest build", + "build": "prisma generate && nest build && node scripts/bundle.mjs", "dev": "nest start --watch --preserveWatchOutput --entryFile main.js", "start": "node dist/main.js", "typecheck": "prisma generate && tsc --noEmit -p tsconfig.json", @@ -29,6 +29,7 @@ "@prisma/client": "7.10.1", "cookie-parser": "^1.4.7", "helmet": "^8.3.0", + "pg": "^8.23.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", "sharp": "^0.35.5", @@ -42,7 +43,9 @@ "@types/express": "^5.0.6", "@types/multer": "^2.3.0", "@types/node": "^24.0.0", + "@types/pg": "^8.23.1", "@types/supertest": "^7.0.0", + "esbuild": "^0.28.2", "prisma": "7.10.1", "supertest": "^7.1.4", "tsx": "^4.20.6", diff --git a/apps/api/scripts/bundle.mjs b/apps/api/scripts/bundle.mjs new file mode 100644 index 0000000..f9ee586 --- /dev/null +++ b/apps/api/scripts/bundle.mjs @@ -0,0 +1,112 @@ +// Bundles the compiled API (dist/, from `nest build`) into a self-contained .output/ that +// docker/api.Dockerfile copies as-is, so building the server image installs nothing: +// .output/dist/main.js, migrate.js, seed/seed.js all JS dependencies inlined +// .output/node_modules/ native packages, Linux (musl, x64) builds only +// The tsc output is bundled rather than src/ because esbuild does not emit the decorator +// metadata Nest's dependency injection relies on. +import { build } from "esbuild"; +import { cpSync, existsSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const out = path.join(root, ".output"); + +// the docker/api.Dockerfile base image (node:*-alpine) +const TARGET = { os: "linux", cpu: "x64", libc: "musl" }; +// loaded at runtime from .output/node_modules (platform-specific binaries) +const NATIVE = ["sharp", "@node-rs/argon2"]; +// optional packages Nest and pg require inside try/catch; not installed, so left unresolved +const OPTIONAL = [ + "@nestjs/microservices", + "@nestjs/microservices/*", + "@nestjs/websockets", + "@nestjs/websockets/*", + "class-transformer", + "class-transformer/*", + "class-validator", + "pg-native", +]; + +rmSync(out, { recursive: true, force: true }); + +await build({ + absWorkingDir: root, + entryPoints: { + main: "dist/main.js", + migrate: "dist/migrate.js", + "seed/seed": "dist/seed/seed.js", + }, + outdir: path.join(out, "dist"), + bundle: true, + splitting: true, + chunkNames: "chunks/[name]-[hash]", + platform: "node", + format: "esm", + target: "node24", + external: [...NATIVE, ...OPTIONAL], + // Nest uses class names (logs, throttler keys) + keepNames: true, + // CommonJS dependencies call require() for Node built-ins (aliased: bundled code imports createRequire too) + banner: { + js: 'import { createRequire as __bundleCreateRequire } from "node:module"; const require = __bundleCreateRequire(import.meta.url);', + }, + legalComments: "none", + logLevel: "warning", +}); +writeFileSync( + path.join(out, "package.json"), + JSON.stringify({ private: true, type: "module" }, null, 2) + "\n", +); + +/** Node's lookup of `name` from `fromDir`; follows pnpm's symlinks to the real package folder */ +function findPackage(name, fromDir) { + for (let dir = fromDir; ; dir = path.dirname(dir)) { + const candidate = path.join(dir, "node_modules", name); + if (existsSync(path.join(candidate, "package.json"))) return realpathSync(candidate); + if (path.dirname(dir) === dir) return null; + } +} + +/** package.json os/cpu/libc fields, e.g. ["linux"] or ["!win32"] */ +const allows = (list, value) => + !list || + ((list.includes(value) || list.every((v) => v.startsWith("!"))) && !list.includes(`!${value}`)); + +const copied = new Map(); +function copyPackage(name, fromDir) { + const dir = findPackage(name, fromDir); + if (!dir) return; // optional dependency for another platform, not installed + const pkg = JSON.parse(readFileSync(path.join(dir, "package.json"), "utf8")); + if (!allows(pkg.os, TARGET.os) || !allows(pkg.cpu, TARGET.cpu) || !allows(pkg.libc, TARGET.libc)) + return; + if (copied.has(name)) { + if (copied.get(name) !== pkg.version) + throw new Error(`${name}: needs both ${copied.get(name)} and ${pkg.version}`); + return; + } + copied.set(name, pkg.version); + cpSync(dir, path.join(out, "node_modules", name), { recursive: true, dereference: true }); + for (const dep of Object.keys({ ...pkg.dependencies, ...pkg.optionalDependencies })) + copyPackage(dep, dir); +} + +for (const name of NATIVE) copyPackage(name, root); +for (const name of NATIVE) { + if (!copied.has(name)) throw new Error(`${name} is not installed`); +} +// sharp and argon2 load their binary from a per-platform package; fail here, not in production +for (const name of [ + "@img/sharp-linuxmusl-x64", + "@img/sharp-libvips-linuxmusl-x64", + "@node-rs/argon2-linux-x64-musl", +]) { + if (!copied.has(name)) { + throw new Error( + `${name} is missing; run \`pnpm install\` (pnpm-workspace.yaml supportedArchitectures adds it)`, + ); + } +} +console.log( + `bundled into .output (native: ${[...copied].map(([n, v]) => `${n}@${v}`).join(", ")})`, +); diff --git a/apps/api/src/migrate.ts b/apps/api/src/migrate.ts new file mode 100644 index 0000000..4691092 --- /dev/null +++ b/apps/api/src/migrate.ts @@ -0,0 +1,91 @@ +/** + * Applies pending prisma/migrations to the database, then exits — `prisma migrate deploy` + * without the Prisma CLI, so the production image needs no dev dependencies. + * Uses Prisma's own `_prisma_migrations` table and lock, so the two stay interchangeable. + * + * node dist/migrate.js (production `migrate` container) + */ +import { createHash, randomUUID } from "node:crypto"; +import { existsSync } from "node:fs"; +import { readdir, readFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import pg from "pg"; + +if (existsSync(".env")) process.loadEnvFile(".env"); + +const MIGRATIONS_DIR = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "../prisma/migrations", +); +// same advisory lock id as Prisma's migrate commands +const LOCK_ID = 72707369; + +const client = new pg.Client({ connectionString: process.env.DATABASE_URL }); + +async function main() { + await client.query(`SELECT pg_advisory_lock(${LOCK_ID})`); + await client.query(`CREATE TABLE IF NOT EXISTS "_prisma_migrations" ( + "id" VARCHAR(36) PRIMARY KEY NOT NULL, + "checksum" VARCHAR(64) NOT NULL, + "finished_at" TIMESTAMPTZ, + "migration_name" VARCHAR(255) NOT NULL, + "logs" TEXT, + "rolled_back_at" TIMESTAMPTZ, + "started_at" TIMESTAMPTZ NOT NULL DEFAULT now(), + "applied_steps_count" INTEGER NOT NULL DEFAULT 0 + )`); + + const { rows } = await client.query<{ migration_name: string; finished_at: Date | null }>( + `SELECT migration_name, finished_at FROM "_prisma_migrations" WHERE rolled_back_at IS NULL`, + ); + const failed = rows.find((r) => !r.finished_at); + if (failed) { + throw new Error( + `migration ${failed.migration_name} failed earlier; fix the database, then mark it with ` + + `\`prisma migrate resolve\` (see its "logs" column in _prisma_migrations)`, + ); + } + const applied = new Set(rows.map((r) => r.migration_name)); + + const entries = await readdir(MIGRATIONS_DIR, { withFileTypes: true }); + const pending = entries + .filter((e) => e.isDirectory() && !applied.has(e.name)) + .map((e) => e.name) + .sort(); + + for (const name of pending) { + const script = await readFile(path.join(MIGRATIONS_DIR, name, "migration.sql"), "utf8"); + const id = randomUUID(); + await client.query( + `INSERT INTO "_prisma_migrations" (id, checksum, migration_name) VALUES ($1, $2, $3)`, + [id, createHash("sha256").update(script).digest("hex"), name], + ); + try { + // no parameters → simple query protocol: the whole file runs as one implicit transaction + await client.query(script); + } catch (e) { + await client.query(`UPDATE "_prisma_migrations" SET logs = $2 WHERE id = $1`, [ + id, + String(e), + ]); + throw new Error(`migration ${name} failed`, { cause: e }); + } + await client.query( + `UPDATE "_prisma_migrations" SET finished_at = now(), applied_steps_count = 1 WHERE id = $1`, + [id], + ); + console.log(`applied ${name}`); + } + console.log(pending.length ? `${pending.length} migration(s) applied` : "no pending migrations"); +} + +try { + await client.connect(); + await main(); +} catch (e) { + console.error(e); + process.exitCode = 1; +} finally { + await client.end(); +} diff --git a/apps/web/.output/nitro.json b/apps/web/.output/nitro.json index 227fd72..196a8f7 100644 --- a/apps/web/.output/nitro.json +++ b/apps/web/.output/nitro.json @@ -1,5 +1,5 @@ { - "date": "2026-10-24T10:00:02.249Z", + "date": "2026-10-24T11:10:34.327Z", "preset": "node-server", "framework": { "name": "nuxt", diff --git a/apps/web/.output/public/_nuxt/builds/latest.json b/apps/web/.output/public/_nuxt/builds/latest.json index 5e760d5..91103b8 100644 --- a/apps/web/.output/public/_nuxt/builds/latest.json +++ b/apps/web/.output/public/_nuxt/builds/latest.json @@ -1 +1 @@ -{"id":"a8b8f23e-57aa-4497-aa31-c772dbae9639","timestamp":1792835930692} \ No newline at end of file +{"id":"6f749362-63df-4cf4-be35-3f4142f84c9f","timestamp":1792840187319} \ No newline at end of file diff --git a/apps/web/.output/public/_nuxt/builds/meta/6f749362-63df-4cf4-be35-3f4142f84c9f.json b/apps/web/.output/public/_nuxt/builds/meta/6f749362-63df-4cf4-be35-3f4142f84c9f.json new file mode 100644 index 0000000..f272d31 --- /dev/null +++ b/apps/web/.output/public/_nuxt/builds/meta/6f749362-63df-4cf4-be35-3f4142f84c9f.json @@ -0,0 +1 @@ +{"id":"6f749362-63df-4cf4-be35-3f4142f84c9f","timestamp":1792840187319,"prerendered":[]} \ No newline at end of file diff --git a/apps/web/.output/public/_nuxt/builds/meta/a8b8f23e-57aa-4497-aa31-c772dbae9639.json b/apps/web/.output/public/_nuxt/builds/meta/a8b8f23e-57aa-4497-aa31-c772dbae9639.json deleted file mode 100644 index 0e27c9c..0000000 --- a/apps/web/.output/public/_nuxt/builds/meta/a8b8f23e-57aa-4497-aa31-c772dbae9639.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"a8b8f23e-57aa-4497-aa31-c772dbae9639","timestamp":1792835930692,"prerendered":[]} \ No newline at end of file diff --git a/apps/web/.output/server/chunks/_/nitro.mjs b/apps/web/.output/server/chunks/_/nitro.mjs index adba3c4..735d4f2 100644 --- a/apps/web/.output/server/chunks/_/nitro.mjs +++ b/apps/web/.output/server/chunks/_/nitro.mjs @@ -4066,7 +4066,7 @@ function _expandFromEnv(value) { const _inlineRuntimeConfig = { "app": { "baseURL": "/", - "buildId": "a8b8f23e-57aa-4497-aa31-c772dbae9639", + "buildId": "6f749362-63df-4cf4-be35-3f4142f84c9f", "buildAssetsDir": "/_nuxt/", "cdnURL": "" }, @@ -4862,101 +4862,101 @@ const assets = { "size": 285305, "path": "../public/images/logo.png" }, - "/_nuxt/D0e0LUpa.js": { - "type": "text/javascript; charset=utf-8", - "etag": "\"794-cNNGOqTLOp2+IDNDEbTWshwORp0\"", - "mtime": "2026-10-24T09:59:44.867Z", - "size": 1940, - "path": "../public/_nuxt/D0e0LUpa.js" - }, "/_nuxt/BHOIQrRl.js": { "type": "text/javascript; charset=utf-8", "etag": "\"1637-w7apJM7DBwq91AEy0Dz89/JwU4s\"", - "mtime": "2026-10-24T09:59:44.867Z", + "mtime": "2026-10-24T11:10:13.647Z", "size": 5687, "path": "../public/_nuxt/BHOIQrRl.js" }, - "/_nuxt/Dd1GE-gU.js": { - "type": "text/javascript; charset=utf-8", - "etag": "\"21420-NSMMtehs6gAIMs2sZ84NfSEv/wU\"", - "mtime": "2026-10-24T09:59:44.868Z", - "size": 136224, - "path": "../public/_nuxt/Dd1GE-gU.js" - }, "/_nuxt/DlAPF8TW.js": { "type": "text/javascript; charset=utf-8", "etag": "\"1e85-YNtOmEmkO1nMcpDM/ztRmg/rRLw\"", - "mtime": "2026-10-24T09:59:44.868Z", + "mtime": "2026-10-24T11:10:13.650Z", "size": 7813, "path": "../public/_nuxt/DlAPF8TW.js" }, + "/_nuxt/D0e0LUpa.js": { + "type": "text/javascript; charset=utf-8", + "etag": "\"794-cNNGOqTLOp2+IDNDEbTWshwORp0\"", + "mtime": "2026-10-24T11:10:13.648Z", + "size": 1940, + "path": "../public/_nuxt/D0e0LUpa.js" + }, + "/_nuxt/Dd1GE-gU.js": { + "type": "text/javascript; charset=utf-8", + "etag": "\"21420-NSMMtehs6gAIMs2sZ84NfSEv/wU\"", + "mtime": "2026-10-24T11:10:13.649Z", + "size": 136224, + "path": "../public/_nuxt/Dd1GE-gU.js" + }, "/_nuxt/DOASWvjr.js": { "type": "text/javascript; charset=utf-8", "etag": "\"3827-3BvUfZznriOnNWFcpi6aALVMpOE\"", - "mtime": "2026-10-24T09:59:44.868Z", + "mtime": "2026-10-24T11:10:13.649Z", "size": 14375, "path": "../public/_nuxt/DOASWvjr.js" }, "/_nuxt/entry.NJkjIEBJ.css": { "type": "text/css; charset=utf-8", "etag": "\"f954-gFKPvCM4WZHzb2tWqZEkEegmw5w\"", - "mtime": "2026-10-24T09:59:44.872Z", + "mtime": "2026-10-24T11:10:13.650Z", "size": 63828, "path": "../public/_nuxt/entry.NJkjIEBJ.css" }, - "/_nuxt/r7-JdZhN.js": { - "type": "text/javascript; charset=utf-8", - "etag": "\"78c-4hmOEQGuRxrwCX/1v0DRIhjwpXE\"", - "mtime": "2026-10-24T09:59:44.872Z", - "size": 1932, - "path": "../public/_nuxt/r7-JdZhN.js" - }, - "/_nuxt/VuesaxIcon.4cYnpGo8.css": { - "type": "text/css; charset=utf-8", - "etag": "\"dc-Uz1+XA31y3oabrHslWpIJp4Ls74\"", - "mtime": "2026-10-24T09:59:44.872Z", - "size": 220, - "path": "../public/_nuxt/VuesaxIcon.4cYnpGo8.css" - }, - "/_nuxt/DoONAYG5.js": { - "type": "text/javascript; charset=utf-8", - "etag": "\"3b62c-dc9OPIQbgdy0oXHYg6EoUgVy6yc\"", - "mtime": "2026-10-24T09:59:44.872Z", - "size": 243244, - "path": "../public/_nuxt/DoONAYG5.js" - }, - "/_nuxt/builds/latest.json": { - "type": "application/json", - "etag": "\"47-Q166IaZkCaNTXHxWgZI+eeFM68U\"", - "mtime": "2026-10-24T09:59:49.866Z", - "size": 71, - "path": "../public/_nuxt/builds/latest.json" - }, - "/_nuxt/builds/meta/a8b8f23e-57aa-4497-aa31-c772dbae9639.json": { - "type": "application/json", - "etag": "\"58-bKD7NKvUnazN2gxkAMUA2hMGhb8\"", - "mtime": "2026-10-24T09:59:49.866Z", - "size": 88, - "path": "../public/_nuxt/builds/meta/a8b8f23e-57aa-4497-aa31-c772dbae9639.json" - }, - "/_nuxt/xGM79_uD.js": { - "type": "text/javascript; charset=utf-8", - "etag": "\"5023-nhybJtf5A4+tqp5rdRjhnkK+QMY\"", - "mtime": "2026-10-24T09:59:44.872Z", - "size": 20515, - "path": "../public/_nuxt/xGM79_uD.js" - }, "/_nuxt/DlDWjZRl.js": { "type": "text/javascript; charset=utf-8", "etag": "\"37855-Z6e8Pe/n6IqFkcSEj31zIJ7FhuQ\"", - "mtime": "2026-10-24T09:59:44.867Z", + "mtime": "2026-10-24T11:10:13.647Z", "size": 227413, "path": "../public/_nuxt/DlDWjZRl.js" }, + "/_nuxt/VuesaxIcon.4cYnpGo8.css": { + "type": "text/css; charset=utf-8", + "etag": "\"dc-Uz1+XA31y3oabrHslWpIJp4Ls74\"", + "mtime": "2026-10-24T11:10:13.650Z", + "size": 220, + "path": "../public/_nuxt/VuesaxIcon.4cYnpGo8.css" + }, + "/_nuxt/r7-JdZhN.js": { + "type": "text/javascript; charset=utf-8", + "etag": "\"78c-4hmOEQGuRxrwCX/1v0DRIhjwpXE\"", + "mtime": "2026-10-24T11:10:13.650Z", + "size": 1932, + "path": "../public/_nuxt/r7-JdZhN.js" + }, + "/_nuxt/builds/latest.json": { + "type": "application/json", + "etag": "\"47-VuGCNPuAtxCQI3/VQh0vXpzB7Nw\"", + "mtime": "2026-10-24T11:10:19.632Z", + "size": 71, + "path": "../public/_nuxt/builds/latest.json" + }, + "/_nuxt/builds/meta/6f749362-63df-4cf4-be35-3f4142f84c9f.json": { + "type": "application/json", + "etag": "\"58-x1aKWkHt7kpj2A/MgvGvWZjX3Pk\"", + "mtime": "2026-10-24T11:10:19.632Z", + "size": 88, + "path": "../public/_nuxt/builds/meta/6f749362-63df-4cf4-be35-3f4142f84c9f.json" + }, + "/_nuxt/xGM79_uD.js": { + "type": "text/javascript; charset=utf-8", + "etag": "\"5023-nhybJtf5A4+tqp5rdRjhnkK+QMY\"", + "mtime": "2026-10-24T11:10:13.650Z", + "size": 20515, + "path": "../public/_nuxt/xGM79_uD.js" + }, + "/_nuxt/DoONAYG5.js": { + "type": "text/javascript; charset=utf-8", + "etag": "\"3b62c-dc9OPIQbgdy0oXHYg6EoUgVy6yc\"", + "mtime": "2026-10-24T11:10:13.650Z", + "size": 243244, + "path": "../public/_nuxt/DoONAYG5.js" + }, "/_nuxt/D6Ym2dQP.js": { "type": "text/javascript; charset=utf-8", "etag": "\"1241f5-OG41EU7LABNWcdBigZe253LHLTw\"", - "mtime": "2026-10-24T09:59:44.868Z", + "mtime": "2026-10-24T11:10:13.648Z", "size": 1196533, "path": "../public/_nuxt/D6Ym2dQP.js" } diff --git a/apps/web/.output/server/node_modules/@babel/parser/lib/index.js b/apps/web/.output/server/node_modules/@babel/parser/lib/index.js new file mode 100644 index 0000000..03e49d7 --- /dev/null +++ b/apps/web/.output/server/node_modules/@babel/parser/lib/index.js @@ -0,0 +1,14616 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; + } + return t; +} +class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } +} +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } +} +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); +} +const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; +var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } +}; +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; +const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type]; +var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArity: `\`import()\` requires exactly one or two arguments.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverDiscardElement: "'void' must be followed by an expression when not used in a binding position.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperCallNotNewExpression: "Cannot use new with super(...).", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.", + UnexpectedVoidPattern: "Unexpected void binding.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationExport: "Using declaration cannot be exported.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + VoidPatternCatchClauseParam: "A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.", + VoidPatternInitializer: "A void binding may not have an initializer.", + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}; +var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." +}; +var ParseExpressionErrors = { + ParseExpressionEmptyInput: "Unexpected parseExpression() input: The input is empty or contains only comments.", + ParseExpressionExpectsEOF: ({ + unexpected + }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(unexpected)}\`.` +}; +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = Object.assign({ + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.` +}, { + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' +}); +var FunctionBindErrors = { + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedBindRHS: "The right-hand side of binding can not be super or import." +}; +const _excluded = ["message"]; +function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); +} +function toParseErrorConstructor({ + toMessage, + code, + reasonCode, + syntaxPlugin +}) { + const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins"; + const oldReasonCodes = { + AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter", + AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference", + SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter", + SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter", + SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType" + }; + if (oldReasonCodes[reasonCode]) { + reasonCode = oldReasonCodes[reasonCode]; + } + return function constructor(loc, details) { + const error = new SyntaxError(); + error.code = code; + error.reasonCode = reasonCode; + error.loc = loc; + error.pos = loc.index; + error.syntaxPlugin = syntaxPlugin; + if (hasMissingPlugin) { + error.missingPlugin = details.missingPlugin; + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details)); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref, + rest = _objectWithoutPropertiesLoose(_ref, _excluded); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; +} +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors), ParseErrorEnum`functionBind`(FunctionBindErrors)); +function createDefaultOptions() { + return { + sourceType: "script", + sourceFilename: undefined, + startIndex: 0, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + allowYieldOutsideFunction: false, + plugins: [], + strictMode: undefined, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true + }; +} +function getOptions(opts) { + const options = createDefaultOptions(); + if (opts == null) { + return options; + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + for (const key of Object.keys(options)) { + if (opts[key] != null) options[key] = opts[key]; + } + if (options.startLine === 1) { + if (opts.startIndex == null && options.startColumn > 0) { + options.startIndex = options.startColumn; + } else if (opts.startColumn == null && options.startIndex > 0) { + options.startColumn = options.startIndex; + } + } else if (opts.startColumn == null || opts.startIndex == null) { + if (opts.startIndex != null) { + throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`."); + } + } + if (options.sourceType === "commonjs") { + if (opts.allowAwaitOutsideFunction != null) { + throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`."); + } + if (opts.allowReturnOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`."); + } + if (opts.allowNewTargetOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`."); + } + } + return options; +} +const { + defineProperty +} = Object; +const toUnenumerable = (object, key) => { + if (object) { + defineProperty(object, key, { + enumerable: false, + value: object[key] + }); + } +}; +function toESTreeLocation(node) { + toUnenumerable(node.loc.start, "index"); + toUnenumerable(node.loc.end, "index"); + return node; +} +var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.optionFlags & 256) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (_) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + estreeParseChainExpression(node, endLoc) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNodeAt(chain, "ChainExpression", endLoc); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + this.castNodeTo(expression, "Literal"); + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = this.castNodeTo(directive, "ExpressionStatement"); + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + fillOptionalPropertiesForTSESLint(node) {} + cloneEstreeStringLiteral(node) { + const { + start, + end, + loc, + range, + raw, + value + } = node; + const cloned = Object.create(node.constructor.prototype); + cloned.type = "Literal"; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.raw = raw; + cloned.value = value; + return cloned; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + parsePrivateName() { + const node = super.parsePrivateName(); + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + delete node.id; + node.name = name; + return this.castNodeTo(node, "PrivateIdentifier"); + } + isPrivateName(node) { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + delete funcNode.kind; + const { + typeParameters + } = node; + if (typeParameters) { + delete node.typeParameters; + funcNode.typeParameters = typeParameters; + this.resetStartLocationFromNode(funcNode, typeParameters); + } + const valueNode = this.castNodeTo(funcNode, "FunctionExpression"); + node.value = valueNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + if (type === "ObjectMethod") { + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + return this.finishNode(node, "Property"); + } else { + return this.finishNode(node, "MethodDefinition"); + } + } + nameIsConstructor(key) { + if (key.type === "Literal") return key.value === "constructor"; + return super.nameIsConstructor(key); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + this.castNodeTo(propertyNode, "PropertyDefinition"); + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + this.castNodeTo(propertyNode, "PropertyDefinition"); + propertyNode.computed = false; + return propertyNode; + } + parseClassAccessorProperty(node) { + const accessorPropertyNode = super.parseClassAccessorProperty(node); + if (!this.getPluginOption("estree", "classFeatures")) { + return accessorPropertyNode; + } + if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) { + delete accessorPropertyNode.abstract; + this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty"); + } else { + this.castNodeTo(accessorPropertyNode, "AccessorProperty"); + } + return accessorPropertyNode; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + this.castNodeTo(node, "Property"); + } + return node; + } + finishObjectProperty(node) { + node.kind = "init"; + return this.finishNode(node, "Property"); + } + isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) { + this.raise(Errors.PatternHasAccessor, prop.key); + } else if (prop.type === "Property" && prop.method) { + this.raise(Errors.PatternHasMethod, prop.key); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + var _ref, _ref2; + this.castNodeTo(node, "ImportExpression"); + node.source = node.arguments[0]; + node.options = (_ref = node.arguments[1]) != null ? _ref : null; + node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; + delete node.arguments; + delete node.callee; + } else if (node.type === "OptionalCallExpression") { + this.castNodeTo(node, "CallExpression"); + } else { + node.optional = false; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + this.castNodeTo(node, "ExportAllDeclaration"); + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + stopParseSubscript(base, state) { + const node = super.stopParseSubscript(base, state); + if (state.optionalChainMember) { + return this.estreeParseChainExpression(node, base.loc.end); + } + return node; + } + parseMember(base, startLoc, state, computed, optional) { + const node = super.parseMember(base, startLoc, state, computed, optional); + if (node.type === "OptionalMemberExpression") { + this.castNodeTo(node, "MemberExpression"); + } else { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set"); + } + castNodeTo(node, type) { + const result = super.castNodeTo(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + this.fillOptionalPropertiesForTSESLint(cloned); + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Literal") { + return this.cloneEstreeStringLiteral(node); + } + return super.cloneStringLiteral(node); + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + finishNode(node, type) { + const result = super.finishNode(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } +}; +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } +} +const types = { + brace: new TokContext("{"), + j_oTag: new TokContext("...", true) +}; +types.template = new TokContext("`", true); +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + this.updateContext = null; + } +} +const keywords$1 = new Map(); +function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; +} +function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); +} +let tokenTypeCounter = -1; +const tokenTypes = []; +const tokenLabels = []; +const tokenBinops = []; +const tokenBeforeExprs = []; +const tokenStartsExprs = []; +const tokenPrefixes = []; +function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; +} +function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; +} +const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("/<=/>=", 7), + gt: createBinop("/<=/>=", 7), + relational: createBinop("/<=/>=", 7), + bitShift: createBinop("<>/>>>", 8), + bitShiftL: createBinop("<>/>>>", 8), + bitShiftR: createBinop("<>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + placeholder: createToken("%%", { + startsExpr + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr + }), + jsxTagEnd: createToken("jsxTagEnd") +}; +function tokenIsIdentifier(token) { + return token >= 93 && token <= 133; +} +function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; +} +function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 133; +} +function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 137; +} +function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; +} +function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; +} +function tokenIsAssignment(token) { + return token >= 29 && token <= 33; +} +function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; +} +function tokenIsLoop(token) { + return token >= 90 && token <= 92; +} +function tokenIsKeyword(token) { + return token >= 58 && token <= 92; +} +function tokenIsOperator(token) { + return token >= 39 && token <= 59; +} +function tokenIsPostfix(token) { + return token === 34; +} +function tokenIsPrefix(token) { + return tokenPrefixes[token]; +} +function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; +} +function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; +} +function tokenLabelName(token) { + return tokenLabels[token]; +} +function tokenOperatorPrecedence(token) { + return tokenBinops[token]; +} +function tokenIsRightAssociative(token) { + return token === 57; +} +function tokenIsTemplate(token) { + return token >= 24 && token <= 25; +} +function getExportedToken(token) { + return tokenTypes[token]; +} +tokenTypes[8].updateContext = context => { + context.pop(); +}; +tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { + context.push(types.brace); +}; +tokenTypes[22].updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } +}; +tokenTypes[143].updateContext = context => { + context.push(types.j_expr, types.j_oTag); +}; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} +function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} +class Scope { + constructor(flags) { + this.flags = 0; + this.names = new Map(); + this.firstLexicalName = ""; + this.flags = flags; + } +} +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get allowNewTarget() { + return (this.currentThisScopeFlags() & 512) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (1667 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get inBareCaseStatement() { + return (this.currentScope().flags & 256) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + let type = scope.names.get(name) || 0; + if (bindingType & 16) { + type = type | 4; + } else { + if (!scope.firstLexicalName) { + scope.firstLexicalName = name; + } + type = type | 2; + } + scope.names.set(name, type); + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.names.set(name, (scope.names.get(name) || 0) | 1); + this.maybeExportDefined(scope, name); + if (scope.flags & 1667) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.names.has(name); + } + const type = scope.names.get(name) || 0; + if (bindingType & 16) { + return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0; + } + return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0; + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.names.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 1667) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (1667 | 64) && !(flags & 4)) { + return flags; + } + } + } +} +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } +} +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048 && !scope.declareFunctions.has(name)) { + const type = scope.names.get(name); + return (type & 4) > 0 || (type & 2) > 0; + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } +} +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}); +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; +function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; +} +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + finishToken(type, val) { + if (type !== 134 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } + throw this.unexpected(); + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(134)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + const bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc); + } + body.push(super.parseImport(bodyNode)); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + body.push(this.flowParseDeclare(bodyNode, true)); + } + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, { + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.default = false; + delete node.exportKind; + return this.castNodeTo(node, "DeclareExportDeclaration"); + } else { + return this.castNodeTo(node, "DeclareExportAllDeclaration"); + } + } + } + throw this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + this.castNodeTo(finished, "DeclareTypeAlias"); + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + this.castNodeTo(finished, "DeclareOpaqueType"); + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, { + reservedType: word + }); + } + flowParseRestrictedIdentifierName(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifierName(liberal); + } + flowParseRestrictedIdentifier(liberal, declaration) { + const node = this.startNode(); + const name = this.flowParseRestrictedIdentifierName(liberal, declaration); + return this.createIdentifier(node, name); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameterBound() { + if (this.match(14) || this.isContextual(81)) { + const node = this.startNode(); + this.next(); + node.typeAnnotation = this.flowParseType(); + return this.finishNode(node, "TypeAnnotation"); + } + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + node.name = this.flowParseRestrictedIdentifierName(); + node.variance = variance; + node.bound = this.flowParseTypeParameterBound(); + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + flowParseTypeParameterInstantiationInExpression() { + if (this.reScan_lt() !== 47) return; + return this.flowParseTypeParameterInstantiation(); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + this.state.inType = true; + node.params = []; + this.flowInTopLevelContext(() => { + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + }); + this.state.inType = oldInType; + if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + if (this.reScan_lt() !== 47) return null; + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, variance); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, variance); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, property); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, node); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, node); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + { + const node = this.startNode(); + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 10: + { + const node = this.startNode(); + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 134: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(136)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc); + } + throw this.unexpected(); + case 135: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 136: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + throw this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier() { + const node = this.startNode(); + const name = this.parseIdentifierName(); + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return this.createIdentifier(node, name); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + if (node.body.type !== "BlockStatement") { + stack.push(node.body); + } + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(514 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = newNode; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return newNode; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, startLoc); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, member.value); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, this.state.curPosition(), { + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation); + } + } + return exprList; + } + parseArrayLike(close, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, isTuple, refExpressionErrors); + if (refExpressionErrors != null && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, disallowCallExpression, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression(); + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, param); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, param); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseFunctionParamType(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, param); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, param); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, param); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, param); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = this.cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = this.cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start))); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition()); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, { + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext); + } + flowEnumErrorNumberMemberNotInitialized(loc, details) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, details) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 135: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 134: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, id, { + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, id, { + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, { + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, { + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, { + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + jsxParseOpeningElementAfterName(node) { + if (this.shouldParseTypes()) { + if (this.match(47) || this.match(51)) { + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + } + } + return super.jsxParseOpeningElementAfterName(node); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } +}; +const entities = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; +const lineBreak = /\r\n|[\r\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } +} +function hasNewLine(input, start, end) { + for (let i = start; i < end; i++) { + if (isNewLine(input.charCodeAt(i))) { + return true; + } + } + return false; +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } +} +const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?" +}); +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); +} +var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(143); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(142, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(134, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(141, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(141)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, node); + } + return node; + case 143: + case 134: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(144)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(144); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(144); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 143: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 142: + children.push(this.parseLiteral(this.state.value, "JSXText")); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, closingElement); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(143)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(143); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(144); + return; + } + if ((code === 34 || code === 39) && context === types.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(143); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 143) { + context.splice(-2, 2, types.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 143) { + context.push(types.j_oTag); + } else if (type === 144) { + const out = context[context.length - 1]; + if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; + } else { + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } +}; +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.tsNames = new Map(); + } +} +class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags === 1024) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags === 1024) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + let type = scope.tsNames.get(name) || 0; + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.tsNames.set(name, type | 16); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + type = type | 1; + } + if (bindingType & 256) { + type = type | 2; + } + if (bindingType & 512) { + type = type | 4; + } + if (bindingType & 128) { + type = type | 8; + } + if (type) scope.tsNames.set(name, type); + } + isRedeclaredInScope(scope, name, bindingType) { + const type = scope.tsNames.get(name); + if ((type & 2) > 0) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = (type & 4) > 0; + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && (type & 8) > 0) { + if (scope.names.get(name) & 2) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && (type & 1) > 0) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + const type = scope.tsNames.get(name); + if ((type & 1) > 0 || (type & 16) > 0) { + return; + } + } + super.checkLocalExport(id); + } +} +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); +} +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + sourceToOffsetPos(sourcePos) { + return sourcePos + this.startIndex; + } + offsetToSourcePos(offsetPos) { + return offsetPos - this.startIndex; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } +} +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } +} +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } +} +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + const { + commentsLen + } = this.state; + if (this.comments.length !== commentsLen) { + this.comments.length = commentsLen; + } + this.comments.push(comment); + this.state.commentsLen++; + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + var _node$options; + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const node = commentWS.containingNode; + const commentStart = commentWS.start; + if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "NewExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "ImportExpression": + adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + case "TSTypeParameterDeclaration": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + case "TSEnumDeclaration": + adjustInnerComments(node, node.members, commentWS); + break; + case "TSEnumBody": + adjustInnerComments(node, node.members, commentWS); + break; + case "TSInterfaceBody": + adjustInnerComments(node, node.body, commentWS); + break; + default: + { + if (node.type === "RecordExpression") { + adjustInnerComments(node, node.properties, commentWS); + break; + } + if (node.type === "TupleExpression") { + adjustInnerComments(node, node.elements, commentWS); + break; + } + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } +} +class State { + constructor() { + this.flags = 1024; + this.startIndex = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.labels = []; + this.commentsLen = 0; + this.commentStack = []; + this.pos = 0; + this.type = 140; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.context = [types.brace]; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + get strict() { + return (this.flags & 1) > 0; + } + set strict(v) { + if (v) this.flags |= 1;else this.flags &= -2; + } + init({ + strictMode, + sourceType, + startIndex, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.startIndex = startIndex; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex); + } + get maybeInArrowParameters() { + return (this.flags & 2) > 0; + } + set maybeInArrowParameters(v) { + if (v) this.flags |= 2;else this.flags &= -3; + } + get inType() { + return (this.flags & 4) > 0; + } + set inType(v) { + if (v) this.flags |= 4;else this.flags &= -5; + } + get noAnonFunctionType() { + return (this.flags & 8) > 0; + } + set noAnonFunctionType(v) { + if (v) this.flags |= 8;else this.flags &= -9; + } + get hasFlowComment() { + return (this.flags & 16) > 0; + } + set hasFlowComment(v) { + if (v) this.flags |= 16;else this.flags &= -17; + } + get isAmbientContext() { + return (this.flags & 32) > 0; + } + set isAmbientContext(v) { + if (v) this.flags |= 32;else this.flags &= -33; + } + get inAbstractClass() { + return (this.flags & 64) > 0; + } + set inAbstractClass(v) { + if (v) this.flags |= 64;else this.flags &= -65; + } + get inDisallowConditionalTypesContext() { + return (this.flags & 128) > 0; + } + set inDisallowConditionalTypesContext(v) { + if (v) this.flags |= 128;else this.flags &= -129; + } + get soloAwait() { + return (this.flags & 256) > 0; + } + set soloAwait(v) { + if (v) this.flags |= 256;else this.flags &= -257; + } + get inFSharpPipelineDirectBody() { + return (this.flags & 512) > 0; + } + set inFSharpPipelineDirectBody(v) { + if (v) this.flags |= 512;else this.flags &= -513; + } + get canStartJSXElement() { + return (this.flags & 1024) > 0; + } + set canStartJSXElement(v) { + if (v) this.flags |= 1024;else this.flags &= -1025; + } + get containsEsc() { + return (this.flags & 2048) > 0; + } + set containsEsc(v) { + if (v) this.flags |= 2048;else this.flags &= -2049; + } + get hasTopLevelAwait() { + return (this.flags & 4096) > 0; + } + set hasTopLevelAwait(v) { + if (v) this.flags |= 4096;else this.flags &= -4097; + } + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex); + } + clone() { + const state = new State(); + state.flags = this.flags; + state.startIndex = this.startIndex; + state.curLine = this.curLine; + state.lineStart = this.lineStart; + state.startLoc = this.startLoc; + state.endLoc = this.endLoc; + state.errors = this.errors.slice(); + state.potentialArrowAt = this.potentialArrowAt; + state.noArrowAt = this.noArrowAt.slice(); + state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice(); + state.topicContext = this.topicContext; + state.labels = this.labels.slice(); + state.commentsLen = this.commentsLen; + state.commentStack = this.commentStack.slice(); + state.pos = this.pos; + state.type = this.type; + state.value = this.value; + state.start = this.start; + state.end = this.end; + state.lastTokEndLoc = this.lastTokEndLoc; + state.lastTokStartLoc = this.lastTokStartLoc; + state.context = this.context.slice(); + state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos; + state.strictErrors = this.strictErrors; + state.tokensLength = this.tokensLength; + return state; + } +} +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} +function buildPosition(pos, lineStart, curLine) { + return new Position(curLine, pos - lineStart, pos); +} +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); +class Token { + constructor(state) { + const startIndex = state.startIndex || 0; + this.type = state.type; + this.value = state.value; + this.start = startIndex + state.start; + this.end = startIndex + state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } +} +class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!(this.optionFlags & 2048)) return false; + this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), { + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine)); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine)); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine)); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.comments = []; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.optionFlags & 256) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.lookaheadCharCodeSince(this.state.pos); + } + lookaheadCharCodeSince(pos) { + return this.input.charCodeAt(this.nextTokenStartSince(pos)); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at)); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(140); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end + commentEnd.length), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = this.optionFlags & 4096 ? [] : null; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if ((comments == null ? void 0 : comments.length) > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: this.sourceToOffsetPos(spaceStart), + end: this.sourceToOffsetPos(end), + comments: comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition()); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(139, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(139, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), { + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, nextPos()); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, nextPos()); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(138, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), { + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, startLoc); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(136, str); + return; + } + this.finishToken(135, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, this.state.curPosition()); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos)); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, startLoc); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, startLoc); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, startLoc); + } + ++this.state.pos; + var isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(136, str); + return; + } + if (isDecimal) { + this.finishToken(137, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(135, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(134, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos)); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, at) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, at); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, this.state.curPosition()); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, escStart); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, { + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError(loc, details); + if (!(this.optionFlags & 2048)) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError(loc, details); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, at, details); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, { + expected: type ? tokenLabelName(type) : null + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, { + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, { + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, buildPosition(pos, lineStart, curLine)); + }; + } +} +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } +} +class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, loc, { + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } +} +class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } +} +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, at) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } +} +class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, node) { + const origin = node.loc.start; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, node) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = node.loc.start; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError(at) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, loc); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } +} +function newParameterDeclarationScope() { + return new ExpressionScope(3); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); +} +function newExpressionScope() { + return new ExpressionScope(); +} +class UtilParser extends Tokenizer { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + let { + extra + } = node; + if (extra == null) { + extra = {}; + node.extra = extra; + } + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + if (this.input.startsWith(name, nameStart)) { + const nextCh = this.input.charCodeAt(nameStart + name.length); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, this.state.startLoc); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(140) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start); + } + hasFollowingLineBreak() { + return hasNewLine(this.input, this.state.end, this.nextTokenStart()); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc); + } + expect(type, loc) { + if (!this.eat(type)) { + this.unexpected(loc, type); + } + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node: node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc, + voidPatternLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, doubleProtoLoc); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + if (voidPatternLoc != null) { + this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule || this.optionFlags & 1) { + paramFlags |= 2; + } + if (this.optionFlags & 32) { + paramFlags |= 1; + } + const isCommonJS = !this.inModule && this.options.sourceType === "commonjs"; + if (isCommonJS || this.optionFlags & 2) { + paramFlags |= 4; + } + this.prodParam.enter(paramFlags); + let scopeFlags = isCommonJS ? 514 : 1; + if (this.optionFlags & 4) { + scopeFlags |= 512; + } + this.scope.enter(scopeFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } +} +class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + this.voidPatternLoc = null; + } +} +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } +} +const NodePrototype = Node.prototype; +NodePrototype.__clone = function () { + const newNode = new Node(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; +}; +class NodeUtils extends UtilParser { + startNode() { + const loc = this.state.startLoc; + return new Node(this, loc.index, loc); + } + startNodeAt(loc) { + return new Node(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + if (this.optionFlags & 4096) { + this.processComment(node); + } + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.optionFlags & 128) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } + castNodeTo(node, type) { + node.type = type; + return node; + } + cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.name = name; + if (node.extra) cloned.extra = node.extra; + return cloned; + } + cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.value = node.value; + return cloned; + } +} +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node); + } else if (parenthesized.type !== "CallExpression" && parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + break; + case "ObjectExpression": + this.castNodeTo(node, "ObjectPattern"); + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + this.castNodeTo(node, "ArrayPattern"); + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, node.left.loc.end); + } + this.castNodeTo(node, "AssignmentPattern"); + delete node.operator; + if (node.left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, node.left); + } + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key); + } else if (prop.type === "SpreadElement") { + this.castNodeTo(prop, "RestElement"); + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, prop); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + this.toAssignableListItem(exprList, i, isLHS); + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, elt); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, trailingCommaLoc); + } + } + } + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "SpreadElement") { + this.castNodeTo(node, "RestElement"); + const arg = node.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(node, isLHS); + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + const argument = this.parseBindingAtom(); + if (argument.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, argument); + } + node.argument = argument; + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + case 88: + return this.parseVoidPattern(null); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + let rest = this.parseRestBinding(); + if (this.hasPlugin("flow") || flags & 2) { + rest = this.parseFunctionParamType(rest); + } + elts.push(rest); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (flags & 2) { + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + elts.push(this.parseBindingElement(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + if (this.hasPlugin("discardBinding") && this.match(88)) { + prop.argument = this.parseVoidPattern(null); + this.raise(Errors.UnexpectedVoidPattern, prop.argument); + } else { + prop.argument = this.parseIdentifier(); + } + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(this.startNode()); + } + const prop = this.startNode(); + if (type === 139) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseBindingElement(flags, decorators) { + const left = this.parseMaybeDefault(); + if (this.hasPlugin("flow") || flags & 2) { + this.parseFunctionParamType(left); + } + if (decorators.length) { + left.decorators = decorators; + this.resetStartLocationFromNode(left, decorators[0]); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + return elt; + } + parseFunctionParamType(param) { + return param; + } + parseMaybeDefault(startLoc, left) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + left = left != null ? left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + if (left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, left); + } + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) { + switch (type) { + case "AssignmentPattern": + return "left"; + case "RestElement": + return "argument"; + case "ObjectProperty": + return "value"; + case "ParenthesizedExpression": + return "expression"; + case "ArrayPattern": + return "elements"; + case "ObjectPattern": + return "properties"; + case "VoidPattern": + return true; + case "CallExpression": + if (!disallowCallExpression && !this.state.strict && this.optionFlags & 8192) { + return true; + } + } + return false; + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false, disallowCallExpression = false) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, expression, { + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, expression); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, expression); + } else { + checkClashes.add(name); + } + } + return; + } else if (type === "VoidPattern" && ancestor.type === "CatchClause") { + this.raise(Errors.VoidPatternCatchClauseParam, expression); + } + const unwrappedExpression = unwrapParenthesizedExpression(expression); + disallowCallExpression || (disallowCallExpression = unwrappedExpression.type === "CallExpression" && (unwrappedExpression.callee.type === "Import" || unwrappedExpression.callee.type === "Super")); + const validity = this.isValidLVal(type, disallowCallExpression, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, expression, { + ancestor + }); + return; + } + let key, isParenthesizedExpression; + if (typeof validity === "string") { + key = validity; + isParenthesizedExpression = type === "ParenthesizedExpression"; + } else { + [key, isParenthesizedExpression] = validity; + } + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + const val = expression[key]; + if (Array.isArray(val)) { + for (const child of val) { + if (child) { + this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, true); + } + } + } else if (val) { + this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, disallowCallExpression); + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, at, { + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, at, { + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, at); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, node); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc); + return true; + } +} +const keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y; +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; +} +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} +const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen: '${modifier}'.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidHeritageClauseType: ({ + token + }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`, + InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`, + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifier: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`, + UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.` +}); +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } +} +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} +var typescript = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName(); + } + tsNextTokenOnSameLineAndCanFollowModifier() { + this.next(); + if (this.hasPrecedingLineBreak()) { + return false; + } + return this.tsTokenCanFollowModifier(); + } + tsNextTokenCanFollowModifier() { + if (this.match(106)) { + this.next(); + return this.tsTokenCanFollowModifier(); + } + return this.tsNextTokenOnSameLineAndCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.includes(modifier)) { + if (hasSeenStaticModifier && this.match(106)) { + return undefined; + } + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, loc, { + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, loc, { + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, startLoc, { + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStartLoc.index; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(134)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc); + node.argument = super.parseExprAtom(); + } else { + node.argument = this.parseStringLiteral(this.state.value); + } + if (this.eat(12)) { + node.options = this.tsParseImportTypeOptions(); + } else { + node.options = null; + } + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(1 | 2); + } + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSImportType"); + } + tsParseImportTypeOptions() { + const node = this.startNode(); + this.expect(5); + const withProperty = this.startNode(); + if (this.isContextual(76)) { + withProperty.method = false; + withProperty.key = this.parseIdentifier(true); + withProperty.computed = false; + withProperty.shorthand = false; + } else { + this.unexpected(null, 76); + } + this.expect(14); + withProperty.value = this.tsParseImportTypeWithPropertyValue(); + node.properties = [this.finishObjectProperty(withProperty)]; + this.eat(12); + this.expect(8); + return this.finishNode(node, "ObjectExpression"); + } + tsParseImportTypeWithPropertyValue() { + const node = this.startNode(); + const properties = []; + this.expect(5); + while (!this.match(8)) { + const type = this.state.type; + if (tokenIsIdentifier(type) || type === 134) { + properties.push(super.parsePropertyDefinition(null)); + } else { + this.unexpected(); + } + this.eat(12); + } + node.properties = properties; + this.next(); + return this.finishNode(node, "ObjectExpression"); + } + tsParseEntityName(flags) { + let entity; + if (flags & 1 && this.match(78)) { + if (flags & 2) { + entity = this.parseIdentifier(true); + } else { + const node = this.startNode(); + this.next(); + entity = this.finishNode(node, "ThisExpression"); + } + } else { + entity = this.parseIdentifier(!!(flags & 1)); + } + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(!!(flags & 1)); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(1); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + node.exprName = this.tsParseEntityName(1 | 2); + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, node); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, { + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, node); + } + const method = node; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition()); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, this.state.curPosition()); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, this.state.curPosition()); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition()); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition()); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = node; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + if (!this.match(10) && !this.match(47)) { + this.unexpected(null, 10); + } + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsExpectThenParseType(58); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const restStartLoc = this.state.startLoc; + const rest = this.eat(21); + const { + startLoc + } = this.state; + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc); + } + } else { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, type); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAt(startLoc); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(restStartLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 135: + case 136: + case 134: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 134: + case 135: + case 136: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 135 && nextToken.type !== 136) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + throw this.unexpected(); + } + tsParseArrayTypeOrHigher() { + const { + startLoc + } = this.state; + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAt(startLoc); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAt(startLoc); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, node); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, { + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.isLookaheadContextual("new"); + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + const node = this.startNode(); + node.expression = this.tsParseEntityName(1 | 2); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, { + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, this.state.startLoc); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseEnumBody() { + const node = this.startNode(); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumBody"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.kind = "global"; + node.global = true; + node.id = this.parseIdentifier(); + } else if (this.match(134)) { + node.kind = "module"; + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + node.isExport = isExport || false; + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, moduleReference); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(134)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(node) { + if (this.isLineTerminator()) { + return; + } + const startType = this.state.type; + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + node.declare = true; + return super.parseFunctionStatement(node, false, false); + case 80: + node.declare = true; + return this.parseClass(node, true, false); + case 126: + return this.tsParseEnumDeclaration(node, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(node); + case 100: + if (this.state.containsEsc) { + return; + } + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + node.declare = true; + return this.parseVarStatement(node, this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true, + declare: true + }); + case 107: + if (this.isUsing()) { + this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + return this.parseVarStatement(node, "using", true); + } + break; + case 96: + if (this.isAwaitUsing()) { + this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + this.next(); + return this.parseVarStatement(node, "await using", true); + } + break; + case 129: + { + const result = this.tsParseInterfaceDeclaration(node, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(node, this.state.type, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.type, true, null); + } + tsParseDeclaration(node, type, next, decorators) { + switch (type) { + case 124: + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case 127: + if (this.tsCheckLineTerminator(next)) { + if (this.match(134)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + node.kind = "module"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case 128: + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + node.kind = "namespace"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case 130: + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInTopLevelContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, node); + } else if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseBindingElement(flags, decorators) { + const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, startLoc); + } + const left = this.parseMaybeDefault(); + if (flags & 2) { + this.parseFunctionParamType(left); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, pp); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, param); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, node); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + state.stop = true; + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + result.typeParameters = typeArguments; + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(); + this.tsCheckForInvalidTypeCasts(node.arguments); + node.typeParameters = typeArguments; + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + node.typeParameters = typeArguments; + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression") { + if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc); + } + if (!this.match(16) && !this.match(18)) { + result.expression = super.stopParseSubscript(base, state); + } + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + node.typeParameters = callee.typeParameters; + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, this.state.startLoc, { + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(134)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + const nodeImportEquals = node; + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false); + } else { + nodeImportEquals.importKind = "value"; + } + const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + return declaration; + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.isLookaheadContextual("class"); + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + if (!node.declare && (kind === "using" || kind === "await using")) { + this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind); + return declaration; + } + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind === "var" || kind === "let" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (!this.state.containsEsc) { + switch (this.state.type) { + case 75: + { + if (this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + break; + } + case 124: + case 125: + { + if (this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()) { + const token = this.state.type; + const node = this.startNode(); + this.next(); + const declaration = token === 125 ? this.tsTryParseDeclare(node) : this.tsParseAbstractDeclaration(node, decorators); + if (declaration) { + if (token === 125) { + declaration.declare = true; + } + return declaration; + } else { + node.expression = this.createIdentifier(this.startNodeAt(node.loc.start), token === 125 ? "declare" : "abstract"); + this.semicolon(false); + return this.finishNode(node, "ExpressionStatement"); + } + } + break; + } + case 126: + return this.tsParseEnumDeclaration(this.startNode()); + case 112: + { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 123) { + const node = this.startNode(); + return this.tsParseAmbientExternalModuleDeclaration(node); + } + break; + } + case 129: + { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + break; + } + case 127: + { + if (this.nextTokenIsIdentifierOrStringLiteralOnSameLine()) { + const node = this.startNode(); + this.next(); + return this.tsParseDeclaration(node, 127, false, decorators); + } + break; + } + case 128: + { + if (this.nextTokenIsIdentifierOnSameLine()) { + const node = this.startNode(); + this.next(); + return this.tsParseDeclaration(node, 128, false, decorators); + } + break; + } + case 130: + { + if (this.nextTokenIsIdentifierOnSameLine()) { + const node = this.startNode(); + this.next(); + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition()); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, member); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, member, { + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, member); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, member); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, member); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp); + } + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, { + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, node); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, node, { + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, node); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, method, { + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && node.value.body == null) { + return; + } + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass) { + if (node.superClass.type === "TSInstantiationExpression") { + const tsInstantiationExpression = node.superClass; + const superClass = tsInstantiationExpression.expression; + this.takeSurroundingComments(superClass, superClass.start, superClass.end); + const superTypeArguments = tsInstantiationExpression.typeParameters; + this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end); + node.superClass = superClass; + node.superTypeParameters = superTypeArguments; + } else if (this.match(47) || this.match(51)) { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra2; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, node); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseFunctionParamType(param) { + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, node); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) { + switch (type) { + case "TSTypeCastExpression": + return true; + case "TSParameterProperty": + return "parameter"; + case "TSNonNullExpression": + return "expression"; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true]; + default: + return super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding); + } + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr, startLoc); + call.typeParameters = typeArguments; + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr, startLoc); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "TSTypeCastExpression") { + exprList[index] = this.typeCastToParameter(node); + } + super.toAssignableListItem(exprList, index, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) { + node.typeParameters = typeArguments; + } + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const { + isAmbientContext: oldIsAmbientContext, + strict: oldStrict + } = this.state; + this.state.isAmbientContext = true; + this.state.strict = false; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + this.state.strict = oldStrict; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node); + return this.tsParseInterfaceDeclaration(node); + } else { + return null; + } + } + throw this.unexpected(null, 80); + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract || method.type === "TSAbstractMethodDefinition") { + const hasEstreePlugin = this.hasPlugin("estree"); + const methodFn = hasEstreePlugin ? method.value : method; + if (methodFn.body) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, method, { + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } + fillOptionalPropertiesForTSESLint(node) { + var _node$phase, _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$optional5, _node$readonly4, _node$declare7, _node$global, _node$const2, _node$in, _node$out; + switch (node.type) { + case "ImportDeclaration": + (_node$phase = node.phase) != null ? _node$phase : node.phase = null; + return; + case "ExpressionStatement": + (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined; + return; + case "RestElement": + node.value = undefined; + case "Identifier": + case "ArrayPattern": + case "AssignmentPattern": + case "ObjectPattern": + (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = []; + (_node$optional = node.optional) != null ? _node$optional : node.optional = false; + (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined; + return; + case "TSParameterProperty": + (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined; + (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = []; + (_node$override = node.override) != null ? _node$override : node.override = false; + (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false; + (_node$static = node.static) != null ? _node$static : node.static = false; + return; + case "TSEmptyBodyFunctionExpression": + node.body = null; + case "TSDeclareFunction": + case "FunctionDeclaration": + case "FunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + (_node$declare = node.declare) != null ? _node$declare : node.declare = false; + (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined; + (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined; + return; + case "Property": + (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false; + return; + case "TSMethodSignature": + case "TSPropertySignature": + (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false; + case "TSIndexSignature": + (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined; + (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false; + (_node$static2 = node.static) != null ? _node$static2 : node.static = false; + return; + case "TSAbstractPropertyDefinition": + case "PropertyDefinition": + case "TSAbstractAccessorProperty": + case "AccessorProperty": + (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false; + (_node$definite = node.definite) != null ? _node$definite : node.definite = false; + (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false; + (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined; + case "TSAbstractMethodDefinition": + case "MethodDefinition": + (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined; + (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = []; + (_node$override2 = node.override) != null ? _node$override2 : node.override = false; + (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false; + return; + case "ClassExpression": + (_node$id = node.id) != null ? _node$id : node.id = null; + case "ClassDeclaration": + (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false; + (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false; + (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = []; + (_node$implements = node.implements) != null ? _node$implements : node.implements = []; + (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined; + (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined; + return; + case "TSTypeAliasDeclaration": + case "VariableDeclaration": + (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false; + return; + case "VariableDeclarator": + (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false; + return; + case "TSEnumDeclaration": + (_node$const = node.const) != null ? _node$const : node.const = false; + (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false; + return; + case "TSEnumMember": + (_node$computed = node.computed) != null ? _node$computed : node.computed = false; + return; + case "TSImportType": + (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null; + (_node$options = node.options) != null ? _node$options : node.options = null; + return; + case "TSInterfaceDeclaration": + (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false; + (_node$extends = node.extends) != null ? _node$extends : node.extends = []; + return; + case "TSMappedType": + (_node$optional5 = node.optional) != null ? _node$optional5 : node.optional = false; + (_node$readonly4 = node.readonly) != null ? _node$readonly4 : node.readonly = undefined; + return; + case "TSModuleDeclaration": + (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false; + (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global"; + return; + case "TSTypeParameter": + (_node$const2 = node.const) != null ? _node$const2 : node.const = false; + (_node$in = node.in) != null ? _node$in : node.in = false; + (_node$out = node.out) != null ? _node$out : node.out = false; + return; + } + } + chStartsBindingIdentifierAndNotRelationalOperator(ch, pos) { + if (isIdentifierStart(ch)) { + keywordAndTSRelationalOperator.lastIndex = pos; + if (keywordAndTSRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordAndTSRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifierAndNotRelationalOperator(nextCh, next); + } + nextTokenIsIdentifierOrStringLiteralOnSameLine() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next) || nextCh === 34 || nextCh === 39; + } +}; +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; +} +function isNumber(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; +} +function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber(argument, estree)) { + return true; + } + } + return false; +} +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." +}); +var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(133)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(133); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + let placeholder = node; + if (!placeholder.expectedNode || !placeholder.type) { + placeholder = this.finishNode(placeholder, "Placeholder"); + } + placeholder.expectedNode = expectedNode; + return placeholder; + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(133, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + if (cloned.type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Placeholder") { + return this.cloneIdentifier(node); + } + return super.cloneStringLiteral(node); + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, disallowCallExpression, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + var _node$label; + if (((_node$label = node.label) == null ? void 0 : _node$label.type) === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + const stmtPlaceholder = node; + stmtPlaceholder.name = expr.name; + return this.finishPlaceholder(stmtPlaceholder, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(133) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + const node2 = node; + if (!this.isContextual(98) && !this.match(12)) { + node2.specifiers = []; + node2.source = null; + node2.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node2, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node2, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) { + this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc); + } + } +}; +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + this.castNodeTo(identifier, "V8IntrinsicIdentifier"); + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } +}; +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; +function validatePlugins(pluginsMap) { + if (pluginsMap.has("decorators")) { + if (pluginsMap.has("decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport; + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized; + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (pluginsMap.has("flow") && pluginsMap.has("typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (pluginsMap.has("pipelineOperator")) { + var _pluginsMap$get2; + const proposal = pluginsMap.get("pipelineOperator").proposal; + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + if (proposal === "hack") { + var _pluginsMap$get; + if (pluginsMap.has("placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = pluginsMap.get("pipelineOperator").topicToken; + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + if (pluginsMap.has("moduleAttributes")) { + if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) { + throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version; + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + if (pluginsMap.has("importAssertions")) { + if (pluginsMap.has("deprecatedImportAssert")) { + throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins."); + } + } + if (pluginsMap.has("deprecatedImportAssert")) ;else if (pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) { + pluginsMap.set("deprecatedImportAssert", {}); + } + if (pluginsMap.has("recordAndTuple")) { + const syntaxType = pluginsMap.get("recordAndTuple").syntaxType; + if (syntaxType != null) { + const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; + if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + } + } + if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } + if (pluginsMap.has("discardBinding") && pluginsMap.get("discardBinding").syntaxType !== "void") { + throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'."); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, sawProto, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return sawProto; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, key); + return true; + } + if (sawProto) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, key); + } + } + return true; + } + return sawProto; + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + if (this.match(140)) { + throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc); + } + const expr = this.parseExpression(); + if (!this.match(140)) { + throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, { + unexpected: this.input.codePointAt(this.state.start) + }); + } + this.finalizeRemainingComments(); + expr.comments = this.comments; + expr.errors = this.state.errors; + if (this.optionFlags & 256) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors) { + refExpressionErrors.optionalParametersLoc = this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + const isYield = this.isContextual(108); + if (isYield) { + if (this.prodParam.hasYield) { + this.next(); + let left = this.parseYield(startLoc); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) { + refExpressionErrors.voidPatternLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, this.finishNode(node, "AssignmentExpression"), undefined, undefined, undefined, undefined, operator === "||=" || operator === "&&=" || operator === "??="); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (isYield) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc); + return this.parseYield(startLoc); + } + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, left, { + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, startLoc, { + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, startLoc); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.recordAwaitIfAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, node); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, node); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression")); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression")); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, this.state.startLoc); + if (this.lookaheadCharCode() === 40) { + return this.stopParseSubscript(base, state); + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + return this.stopParseSubscript(base, state); + } + } + } + stopParseSubscript(base, state) { + state.stop = true; + return base; + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(139)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, startLoc); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + if (callee.type === "Super" || isImport && callee.type === "ImportExpression" || callee.type === "Import") { + throw this.raise(Errors.UnsupportedBindRHS, callee); + } + node.callee = callee; + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, false); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(); + } else { + node.arguments = this.parseCallExpressionArguments(base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, startLoc); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt; + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, node); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, arg); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(11)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(11)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaPropertyOrPhaseCall(node); + } + if (this.match(10)) { + if (this.optionFlags & 512) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 135: + return this.parseNumericLiteral(this.state.value); + case 136: + return this.parseBigIntLiteral(this.state.value); + case 134: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 0: + { + return this.parseArrayLike(3, false, refExpressionErrors); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, callee); + } + } + case 139: + { + this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, { + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + throw this.unexpected(); + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + throw this.expectOnePlugin(["jsx", "flow", "typescript"]); + } + throw this.unexpected(); + } + default: + if (type === 137) { + return this.parseDecimalLiteral(this.state.value); + } else if (type === 2 || type === 1) { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, true); + } else if (type === 6 || type === 7) { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (canBeArrow && this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + throw this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } + throw this.unexpected(); + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + if (pipeProposal === "hack") { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PipeTopicUnbound, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "TopicReference"); + } else { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PrimaryTopicNotAllowed, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); + } + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, { + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition()); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper) { + if (!(this.optionFlags & 16)) { + this.raise(Errors.SuperNotAllowed, node); + } + } else if (!this.scope.allowSuper) { + if (!(this.optionFlags & 16)) { + this.raise(Errors.UnexpectedSuper, node); + } + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, node); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, node.property, { + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaPropertyOrPhaseCall(node) { + this.next(); + if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } else { + const id = this.createIdentifierAt(this.startNodeAtNode(node), "import", this.state.lastTokStartLoc); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, id); + } + this.sawUnambiguousESM = true; + } + return this.parseMetaProperty(node, id, "meta"); + } + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + return this.parseLiteral(value, "BigIntLiteral"); + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.startNode(); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.pattern = value.pattern; + node.flags = value.flags; + this.next(); + return this.finishNode(node, "RegExpLiteral"); + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!(this.optionFlags & 1024)) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.allowNewTarget) { + this.raise(Errors.UnexpectedNewTarget, metaProp); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && callee.type === "ImportExpression" || callee.type === "Import") { + this.raise(Errors.ImportCallNotNewExpression, callee); + } + if (callee.type === "Super") { + this.raise(Errors.SuperCallNotNewExpression, callee); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1)); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + let curElt = this.parseTemplateElement(isTagged); + const quasis = [curElt]; + const substitutions = []; + while (!curElt.tail) { + substitutions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + node.expressions = substitutions; + node.quasis = quasis; + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let sawProto = false; + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, prop); + } + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const { + key + } = prop; + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), { + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, method); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors); + return this.finishObjectProperty(prop); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else { + prop.value = this.cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishObjectProperty(prop); + } + } + finishObjectProperty(node) { + return this.finishNode(node, "ObjectProperty"); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 135: + key = this.parseNumericLiteral(value); + break; + case 134: + key = this.parseStringLiteral(value); + break; + case 136: + key = this.parseBigIntLiteral(value); + break; + case 139: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + key = this.parsePrivateName(); + break; + } + default: + if (type === 137) { + key = this.parseDecimalLiteral(value); + break; + } + this.unexpected(); + } + } + prop.key = key; + if (type !== 139) { + prop.computed = false; + } + } + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(514 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, this.state.curPosition(), { + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + createIdentifierAt(node, name, endLoc) { + node.name = name; + node.loc.identifierName = name; + return this.finishNodeAt(node, "Identifier", endLoc); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, startLoc, { + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, startLoc, { + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, startLoc); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, startLoc); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc); + return; + } + this.expressionScope.recordAsyncArrowParametersError(startLoc); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, startLoc); + return; + } + } + } + recordAwaitIfAllowed() { + const isAwaitAllowed = this.prodParam.hasAwait; + if (isAwaitAllowed && !this.scope.inFunction) { + this.state.hasTopLevelAwait = true; + } + return isAwaitAllowed; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, node); + } + if (!this.scope.inFunction && !(this.optionFlags & 1)) { + if (this.isAmbiguousPrefixOrIdentifier()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousPrefixOrIdentifier() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 140: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + node.options = null; + if (this.eat(12)) { + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + if (this.eat(12)) { + this.addTrailingCommaExtraToNode(node.options); + if (!this.match(11)) { + do { + this.parseMaybeAssignAllowIn(); + } while (this.eat(12) && !this.match(11)); + this.raise(Errors.ImportCallArity, node); + } + } + } else { + this.addTrailingCommaExtraToNode(node.source); + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, startLoc); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parseVoidPattern(refExpressionErrors) { + this.expectPlugin("discardBinding"); + const node = this.startNode(); + if (refExpressionErrors != null) { + refExpressionErrors.voidPatternLoc = this.state.startLoc; + } + this.next(); + return this.finishNode(node, "VoidPattern"); + } + parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) { + if (refExpressionErrors != null && this.match(88)) { + const nextCode = this.lookaheadCharCode(); + if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) { + return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors)); + } + } + return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse); + } + parsePropertyNamePrefixOperator(prop) {} +} +const loopLabel = { + kind: 1 + }, + switchLabel = { + kind: 2 + }; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; +function babel7CompatTokens(tokens, input, startIndex) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + if (type === 139) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start - startIndex) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + token.type = getExportedToken(type); + } + } + return tokens; +} +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program, 140, this.options.sourceType === "module" ? "module" : "script"); + file.comments = this.comments; + if (this.optionFlags & 256) { + file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end, sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule) { + if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, at, { + localName + }); + } + } + this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait); + } + let finishedProgram; + if (end === 140) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = this.castNodeTo(stmt, "Directive"); + const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral"); + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end)); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directive.value = directiveLiteral; + delete stmt.expression; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + isUsing() { + if (!this.isContextual(107)) { + return false; + } + return this.nextTokenIsIdentifierOnSameLine(); + } + isForUsing() { + if (!this.isContextual(107)) { + return false; + } + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + if (this.isUnparsedContextual(next, "of")) { + const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2); + if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) { + return false; + } + } + if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, "void")) { + return true; + } + return false; + } + nextTokenIsIdentifierOnSameLine() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next); + } + isAwaitUsing() { + if (!this.isContextual(96)) { + return false; + } + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + return true; + } + } + return false; + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifierOrBrace() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next); + } + allowsUsing() { + return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const startType = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (startType) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (this.isAwaitUsing()) { + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, node); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, node); + } else if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, node); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) { + break; + } + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!(this.optionFlags & 8) && !topLevel) { + this.raise(Errors.UnexpectedImportExport, this.state.startLoc); + } + this.next(); + let result; + if (startType === 83) { + result = this.parseImport(node); + } else { + result = this.parseExport(node, decorators); + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!(this.optionFlags & 8) && !this.inModule) { + this.raise(Errors.ImportOutsideModule, node); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + var _classNode$decorators; + if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, this.state.startLoc); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(139)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === 1)) { + break; + } + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, node, { + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isContextual(96) && this.recordAwaitIfAllowed()) { + awaitAt = this.state.startLoc; + this.next(); + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, init); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, init); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, init); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + type + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn) { + this.raise(Errors.IllegalReturn, this.state.startLoc); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(256); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + type: "CatchClause" + }, 9); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, node); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, this.state.startLoc); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, expr, { + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.sourceToOffsetPos(this.state.start); + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.sourceToOffsetPos(this.state.start) + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, init, { + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, init, { + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind: "destructuring" + }); + } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + if (kind === "using" || kind === "await using") { + if (id.type === "ArrayPattern" || id.type === "ObjectPattern") { + this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start); + } + } else { + if (id.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, id.loc.start); + } + } + this.checkLVal(id, { + type: "VariableDeclarator" + }, kind === "var" ? 5 : 8201); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(514); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + nameIsConstructor(key) { + return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor"; + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && this.nameIsConstructor(method.key); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, member); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, this.state.startLoc); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type); + const key = this.parseClassElementName(member); + const maybeContextualKw = isContextual ? key.name : null; + const isPrivate = this.isPrivateName(key); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, key); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, key); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (maybeContextualKw === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = maybeContextualKw; + const isPrivate = this.match(139); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(139); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 134) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, this.state.startLoc); + } + if (type === 139) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + this.parsePropertyName(member); + return member.key; + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(576 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, member); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(576 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, this.state.startLoc); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, true); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.checkExport(node2, true, true); + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + throw this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + var _ref, _ref$specifiers; + (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + const node2 = node; + if (!node2.specifiers) node2.specifiers = []; + const isTypeExport = node2.exportKind === "type"; + node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node2.source = null; + if (this.hasPlugin("importAssertions")) { + node2.assertions = []; + } else { + node2.attributes = []; + } + node2.declaration = null; + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } else { + node.attributes = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) { + throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const next = this.nextTokenStart(); + const nextChar = this.input.charCodeAt(next); + if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith("from", next)) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return true; + } + } + if (this.isUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + if (this.isAwaitUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, declaration); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, specifier, { + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + const decl = node.declaration; + if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") { + const { + id + } = decl; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (decl.type === "VariableDeclaration") { + for (const declaration of decl.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, node); + } else { + this.raise(Errors.DuplicateExport, node, { + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(134); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = this.cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = this.cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(134)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = loneSurrogate.exec(result.value); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, { + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.startNode(); + const phaseIdentifierName = this.parseIdentifierName(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return this.createIdentifier(phaseIdentifier, phaseIdentifierName); + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(134)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(134)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + type + }, bindingType); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, { + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(134)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, node.key); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, { + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + var useWith = false; + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + this.addExtra(node, "deprecatedWithLegacySyntax", true); + } else { + attributes = this.parseImportAttributes(); + } + useWith = true; + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) { + this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); + } + if (!this.hasPlugin("importAssertions")) { + this.addExtra(node, "deprecatedAssertSyntax", true); + } + this.next(); + attributes = this.parseImportAttributes(); + } else { + attributes = []; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, this.state.startLoc); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(134); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = this.cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } +} +class Parser extends StatementParser { + constructor(options, input, pluginsMap) { + const normalizedOptions = getOptions(options); + super(normalizedOptions, input); + this.options = normalizedOptions; + this.initializeScopes(); + this.plugins = pluginsMap; + this.filename = normalizedOptions.sourceFilename; + this.startIndex = normalizedOptions.startIndex; + let optionFlags = 0; + if (normalizedOptions.allowAwaitOutsideFunction) { + optionFlags |= 1; + } + if (normalizedOptions.allowReturnOutsideFunction) { + optionFlags |= 2; + } + if (normalizedOptions.allowImportExportEverywhere) { + optionFlags |= 8; + } + if (normalizedOptions.allowSuperOutsideMethod) { + optionFlags |= 16; + } + if (normalizedOptions.allowUndeclaredExports) { + optionFlags |= 64; + } + if (normalizedOptions.allowNewTargetOutsideFunction) { + optionFlags |= 4; + } + if (normalizedOptions.allowYieldOutsideFunction) { + optionFlags |= 32; + } + if (normalizedOptions.ranges) { + optionFlags |= 128; + } + if (normalizedOptions.tokens) { + optionFlags |= 256; + } + if (normalizedOptions.createImportExpressions) { + optionFlags |= 512; + } + if (normalizedOptions.createParenthesizedExpressions) { + optionFlags |= 1024; + } + if (normalizedOptions.errorRecovery) { + optionFlags |= 2048; + } + if (normalizedOptions.attachComment) { + optionFlags |= 4096; + } + if (normalizedOptions.annexB) { + optionFlags |= 8192; + } + this.optionFlags = optionFlags; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + const result = this.parseTopLevel(file, program); + result.errors = this.state.errors; + result.comments.length = this.state.commentsLen; + return result; + } +} +function parse(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); +} +function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; +} +const tokTypes = generateExportedTokenTypes(tt); +function getParser(options, input) { + let cls = Parser; + const pluginsMap = new Map(); + if (options != null && options.plugins) { + for (const plugin of options.plugins) { + let name, opts; + if (typeof plugin === "string") { + name = plugin; + } else { + [name, opts] = plugin; + } + if (!pluginsMap.has(name)) { + pluginsMap.set(name, opts || {}); + } + } + validatePlugins(pluginsMap); + cls = getParserClass(pluginsMap); + } + return new cls(options, input, pluginsMap); +} +const parserClassCache = new Map(); +function getParserClass(pluginsMap) { + const pluginList = []; + for (const name of mixinPluginNames) { + if (pluginsMap.has(name)) { + pluginList.push(name); + } + } + const key = pluginList.join("|"); + let cls = parserClassCache.get(key); + if (!cls) { + cls = Parser; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache.set(key, cls); + } + return cls; +} +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = tokTypes; +//# sourceMappingURL=index.js.map diff --git a/apps/web/.output/server/node_modules/@babel/parser/package.json b/apps/web/.output/server/node_modules/@babel/parser/package.json new file mode 100644 index 0000000..66a99ce --- /dev/null +++ b/apps/web/.output/server/node_modules/@babel/parser/package.json @@ -0,0 +1,50 @@ +{ + "name": "@babel/parser", + "version": "7.29.9", + "description": "A JavaScript parser", + "author": "The Babel Team (https://babel.dev/team)", + "homepage": "https://babel.dev/docs/en/next/babel-parser", + "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel", + "javascript", + "parser", + "tc39", + "ecmascript", + "@babel/parser" + ], + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-parser" + }, + "main": "./lib/index.js", + "types": "./typings/babel-parser.d.ts", + "files": [ + "bin", + "lib", + "typings/babel-parser.d.ts", + "index.cjs" + ], + "engines": { + "node": ">=6.0.0" + }, + "# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "devDependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/helper-check-duplicate-nodes": "^7.29.7", + "@babel/helper-fixtures": "^7.29.7", + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "charcodes": "^0.2.0" + }, + "bin": "./bin/babel-parser.js", + "type": "commonjs" +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js new file mode 100644 index 0000000..58e7170 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js @@ -0,0 +1,6802 @@ +/** +* @vue/compiler-core v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); +var decode = require('entities/decode'); +var parser = require('@babel/parser'); +var estreeWalker = require('estree-walker'); +var sourceMapJs = require('source-map-js'); + +const FRAGMENT = /* @__PURE__ */ Symbol(``); +const TELEPORT = /* @__PURE__ */ Symbol(``); +const SUSPENSE = /* @__PURE__ */ Symbol(``); +const KEEP_ALIVE = /* @__PURE__ */ Symbol(``); +const BASE_TRANSITION = /* @__PURE__ */ Symbol( + `` +); +const OPEN_BLOCK = /* @__PURE__ */ Symbol(``); +const CREATE_BLOCK = /* @__PURE__ */ Symbol(``); +const CREATE_ELEMENT_BLOCK = /* @__PURE__ */ Symbol( + `` +); +const CREATE_VNODE = /* @__PURE__ */ Symbol(``); +const CREATE_ELEMENT_VNODE = /* @__PURE__ */ Symbol( + `` +); +const CREATE_COMMENT = /* @__PURE__ */ Symbol( + `` +); +const CREATE_TEXT = /* @__PURE__ */ Symbol( + `` +); +const CREATE_STATIC = /* @__PURE__ */ Symbol( + `` +); +const RESOLVE_COMPONENT = /* @__PURE__ */ Symbol( + `` +); +const RESOLVE_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol( + `` +); +const RESOLVE_DIRECTIVE = /* @__PURE__ */ Symbol( + `` +); +const RESOLVE_FILTER = /* @__PURE__ */ Symbol( + `` +); +const WITH_DIRECTIVES = /* @__PURE__ */ Symbol( + `` +); +const RENDER_LIST = /* @__PURE__ */ Symbol(``); +const RENDER_SLOT = /* @__PURE__ */ Symbol(``); +const CREATE_SLOTS = /* @__PURE__ */ Symbol(``); +const TO_DISPLAY_STRING = /* @__PURE__ */ Symbol( + `` +); +const MERGE_PROPS = /* @__PURE__ */ Symbol(``); +const NORMALIZE_CLASS = /* @__PURE__ */ Symbol( + `` +); +const NORMALIZE_STYLE = /* @__PURE__ */ Symbol( + `` +); +const NORMALIZE_PROPS = /* @__PURE__ */ Symbol( + `` +); +const GUARD_REACTIVE_PROPS = /* @__PURE__ */ Symbol( + `` +); +const TO_HANDLERS = /* @__PURE__ */ Symbol(``); +const CAMELIZE = /* @__PURE__ */ Symbol(``); +const CAPITALIZE = /* @__PURE__ */ Symbol(``); +const TO_HANDLER_KEY = /* @__PURE__ */ Symbol( + `` +); +const SET_BLOCK_TRACKING = /* @__PURE__ */ Symbol( + `` +); +const PUSH_SCOPE_ID = /* @__PURE__ */ Symbol(``); +const POP_SCOPE_ID = /* @__PURE__ */ Symbol(``); +const WITH_CTX = /* @__PURE__ */ Symbol(``); +const UNREF = /* @__PURE__ */ Symbol(``); +const IS_REF = /* @__PURE__ */ Symbol(``); +const WITH_MEMO = /* @__PURE__ */ Symbol(``); +const IS_MEMO_SAME = /* @__PURE__ */ Symbol(``); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" +}; +const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" +}; +const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" +}; +const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_CACHE": 2, + "2": "CAN_CACHE", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" +}; +const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" +}; +function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: [], + temps: 0, + codegenNode: void 0, + loc: locStub + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: shared.isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) { + return { + type: 20, + index, + value, + needPauseTracking, + inVOnce, + needArraySpread: false, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const defaultDelimitersOpen = new Uint8Array([123, 123]); +const defaultDelimitersClose = new Uint8Array([125, 125]); +function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; +} +function isWhitespace(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; +} +function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace(c); +} +function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; +} +const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // ` this.emitCodePoint(cp, consumed) + ); + } + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + const length = this.newlines.length; + let j = -1; + if (length > 100) { + let l = -1; + let r = length; + while (l + 1 < r) { + const m = l + r >>> 1; + this.newlines[m] < index ? l = m : r = m; + } + j = l; + } else { + for (let i = length - 1; i >= 0; i--) { + if (index > this.newlines[i]) { + j = i; + break; + } + } + } + if (j >= 0) { + line = j + 2; + column = index - this.newlines[j]; + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || false) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } else if (c === 38) { + this.startEntity(); + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else if (c === 38) { + this.startEntity(); + } + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + { + this.baseState = this.state; + this.state = 33; + this.entityStart = this.index; + this.entityDecoder.startEntity( + this.baseState === 1 || this.baseState === 32 ? decode.DecodingMode.Legacy : decode.DecodingMode.Attribute + ); + } + } + stateInEntity() { + { + const length = this.entityDecoder.write(this.buffer, this.index); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.buffer.length - 1; + } + } + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + if (this.state === 33) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + { + if (this.baseState !== 1 && this.baseState !== 32) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity( + decode.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity( + decode.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } + } + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_V_MODEL_ON_CONST": 45, + "45": "X_V_MODEL_ON_CONST", + "X_INVALID_EXPRESSION": 46, + "46": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 47, + "47": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 48, + "48": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 49, + "49": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 50, + "50": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 51, + "51": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 52, + "52": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 53, + "53": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 54, + "54": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [53]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead. +For props declared with defineModel(), assign the returned ref to a variable and use v-model on that variable.`, + [45]: `v-model cannot be used on a const binding because it is not writable.`, + [46]: `Error parsing JavaScript expression: `, + [47]: `<KeepAlive> expects exactly one child component.`, + [52]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [48]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [49]: `ES module mode is not supported in this build of compiler.`, + [50]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [51]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [54]: `` +}; + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" ? root.body[0].type === "ExpressionStatement" && root.body[0].expression : root; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && // eslint-disable-next-line no-restricted-syntax + (parent == null ? void 0 : parent.type) === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkFunctionParams( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "BlockStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "SwitchStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkSwitchStatement( + node, + false, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "CatchClause" && node.param) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + for (const id of extractIdentifiers(node.param)) { + markScopeIdentifier(node, id, knownIds); + } + } + } else if (isForStatement(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkForStatement( + node, + false, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent, parentStack[parentStack.length - 2])) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectProperty": + return parent.key !== id && isInDestructureAssignment(parent, parentStack); + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + const body = block.type === "SwitchCase" ? block.consequent : block.body; + for (const stmt of body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } else if (stmt.type === "SwitchStatement") { + walkSwitchStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } +} +function walkSwitchStatement(stmt, isVar, onIdent) { + for (const cs of stmt.cases) { + for (const stmt2 of cs.consequent) { + if (stmt2.type === "VariableDeclaration" && (stmt2.kind === "var" ? isVar : !isVar)) { + for (const decl of stmt2.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } + } + walkBlockDeclarations(cs, onIdent); + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markKnownIds(name, knownIds) { + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + markKnownIds(name, knownIds); + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + // yes: PARENT[NODE] + // yes: NODE.child + // no: parent.NODE + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + // no: let NODE = init; + // yes: let id = NODE; + case "VariableDeclarator": + return parent.init === node; + // yes: () => NODE + // no: (NODE) => {} + case "ArrowFunctionExpression": + return parent.body === node; + // no: class { #NODE; } + // no: class { get #NODE() {} } + // no: class { #NODE() {} } + // no: class { fn() { return this.#NODE; } } + case "PrivateName": + return false; + // no: class { NODE() {} } + // yes: class { [NODE]() {} } + // no: class { foo(NODE) {} } + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + // yes: { [NODE]: "" } + // no: { NODE: "" } + // depends: { NODE } + // depends: { key: NODE } + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + // no: class { NODE = value; } + // yes: class { [NODE] = value; } + // yes: class { key = NODE; } + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + // no: class NODE {} + // yes: class Foo extends NODE {} + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + // yes: left = NODE; + // no: NODE = right; + case "AssignmentExpression": + return parent.right === node; + // no: [NODE = foo] = []; + // yes: [foo = NODE] = []; + case "AssignmentPattern": + return parent.right === node; + // no: NODE: for (;;) {} + case "LabeledStatement": + return false; + // no: try {} catch (NODE) {} + case "CatchClause": + return false; + // no: function foo(...NODE) {} + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + // no: function NODE() {} + // no: function foo(NODE) {} + case "FunctionDeclaration": + case "FunctionExpression": + return false; + // no: export NODE from "foo"; + // no: export * as NODE from "foo"; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + // no: export { foo as NODE }; + // yes: export { NODE as foo }; + // no: export { NODE as foo } from "foo"; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + // no: import NODE from "foo"; + // no: import * as NODE from "foo"; + // no: import { NODE as foo } from "foo"; + // no: import { foo as NODE } from "foo"; + // no: import NODE from "bar"; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + // no: import "foo" assert { NODE: "json" } + case "ImportAttribute": + return false; + // no: <div NODE="foo" /> + case "JSXAttribute": + return false; + // no: [NODE] = []; + // no: ({ NODE }) = []; + case "ObjectPattern": + case "ArrayPattern": + return false; + // no: new.NODE + // no: NODE.target + case "MetaProperty": + return false; + // yes: type X = { someProperty: NODE } + // no: type X = { NODE: OtherType } + case "ObjectTypeProperty": + return parent.key !== node; + // yes: enum X { Foo = NODE } + // no: enum X { NODE } + case "TSEnumMember": + return parent.id !== node; + // yes: { [NODE]: value } + // no: { NODE: value } + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + ret = unwrapTSNode(ret); + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +const fnExpRE = /^\s*(?:async\s*)?(?:\([^)]*?\)|[\w$_]+)\s*(?::[^=]+)?=>|^\s*(?:async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + if (ret.type === "Program") { + ret = ret.body[0]; + if (ret.type === "ExpressionStatement") { + ret = ret.expression; + } + } + ret = unwrapTSNode(ret); + return ret.type === "FunctionExpression" || ret.type === "ArrowFunctionExpression"; + } catch (e) { + return false; + } +}; +const isFnExpression = isFnExpressionNode; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVPre(p) { + return p.type === 7 && p.name === "pre"; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !shared.isString(props) && props.type === 14) { + const callee = props.callee; + if (!shared.isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + if (node.type !== 13 && injectSlotKey(node, prop)) { + return; + } + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !shared.isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || shared.isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!shared.isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function injectSlotKey(node, prop) { + var _a, _b, _c; + if (prop.key.type !== 4 || prop.key.content !== "key") { + return false; + } + const props = node.arguments[2]; + if (props && !shared.isString(props)) { + const [unnormalizedProps] = getUnnormalizedProps(props); + if (unnormalizedProps && !shared.isString(unnormalizedProps) && unnormalizedProps.type === 15 && hasProp(prop, unnormalizedProps)) { + return true; + } + } + (_a = node.arguments)[2] || (_a[2] = "{}"); + (_b = node.arguments)[3] || (_b[3] = "undefined"); + (_c = node.arguments)[4] || (_c[4] = "undefined"); + node.arguments[5] = prop.value; + return true; +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function isWhitespaceText(node) { + return node.type === 2 && isAllWhitespace(node.content) || node.type === 12 && isWhitespaceText(node.content); +} +function isCommentOrWhitespace(node) { + return node.type === 3 || isWhitespaceText(node); +} + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: shared.NO, + isPreTag: shared.NO, + isIgnoreNewlineTag: shared.NO, + isCustomElement: shared.NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: false, + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = decode.decodeHTML(exp); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + { + if (currentProp.name === "for") { + expParseMode = 3 /* Skip */; + } else if (currentProp.name === "slot") { + expParseMode = 1 /* Params */; + } else if (currentProp.name === "on" && currentAttrValue.includes(";")) { + expParseMode = 2 /* Statements */; + } + } + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.arg.loc.source + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = shared.extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = shared.extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) { + if (isSimpleIdentifier(content)) { + exp.ast = null; + return exp; + } + try { + const plugins = currentOptions.expressionPlugins; + const options = { + plugins: plugins ? [...plugins, "typescript"] : ["typescript"] + }; + if (parseMode === 2 /* Statements */) { + exp.ast = parser.parse(` ${content} `, options).program; + } else if (parseMode === 1 /* Params */) { + exp.ast = parser.parseExpression(`(${content})=>{}`, options); + } else { + exp.ast = parser.parseExpression(`(${content})`, options); + } + } catch (e) { + exp.ast = false; + emitError(46, loc.start.offset, e.message); + } + } + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = shared.extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function cacheStatic(root, context) { + walk( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); +} +function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; +} +function walk(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (``) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + child.codegenNode = context.cache(child.codegenNode); + } + } + function getCacheExpression(value) { + const exp = context.cache(value); + exp.needArraySpread = true; + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !shared.isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child) || shared.isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = shared.NOOP, + isCustomElement = shared.NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = shared.EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + vForMemoKeyedNodes: /* @__PURE__ */ new WeakSet(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: shared.NOOP, + addIdentifiers(exp) { + { + if (shared.isString(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (shared.isString(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (shared.isString(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (shared.isString(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (shared.isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*@__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + if (node.loc.source) { + addMapping(node.loc.start, name); + } + } + if (newlineIndex === -3 /* Unknown */) { + advancePositionWithMutation(context, code); + } else { + context.offset += code.length; + if (newlineIndex === -2 /* None */) { + context.column += code.length; + } else { + if (newlineIndex === -1 /* End */) { + newlineIndex = code.length - 1; + } + context.line++; + context.column = code.length - newlineIndex; + } + } + if (node && node.loc !== locStub && node.loc.source) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + function addMapping(loc, name = null) { + const { _names, _mappings } = context.map; + if (name !== null && !_names.has(name)) _names.add(name); + _mappings.add({ + originalLine: loc.line, + originalColumn: loc.column - 1, + // source-map column is 0 based + generatedLine: context.line, + generatedColumn: context.column - 1, + source: filename, + name + }); + } + if (sourceMap) { + context.map = new sourceMapJs.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + context.map._sources.add(filename); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`, + -1 /* End */ + ); + } else { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +`, + -1 /* End */ + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +`, + -1 /* End */ + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +`, + -1 /* End */ + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (shared.isString(node)) { + push(node, -3 /* Unknown */); + } else if (shared.isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (shared.isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (shared.isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + { + patchFlagString = String(patchFlag); + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = shared.isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (shared.isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (shared.isString(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1"), -3 /* Unknown */); + } else { + push("${"); + if (multilines) indent(); + genNode(e, context); + if (multilines) deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode(test, context); + push(`) {`); + indent(); + genNode(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode(node.left, context); + context.push(` = `); + genNode(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } +} + +const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this"); +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && context.vForMemoKeyedNodes.has(node) && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + const isNewExpression = parent && isInNewExpression(parentStack); + const wrapWithUnref = (raw2) => { + const wrapped = `${context.helperString(UNREF)}(${raw2})`; + return isNewExpression ? `(${wrapped})` : wrapped; + }; + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : wrapWithUnref(raw); + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return wrapWithUnref(raw); + } + } else if (type === "props") { + return shared.genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + let ast = node.ast; + if (ast === false) { + return node; + } + if (ast === null || !ast && isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = shared.isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + if (!ast) { + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parseExpression(source, { + sourceType: "module", + plugins: context.expressionPlugins + }); + } catch (e) { + context.onError( + createCompilerError( + 46, + node.loc, + void 0, + e.message + ) + ); + return node; + } + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + if (node2.name.startsWith("_filter_")) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && (!parent || parent.type !== "CallExpression" && parent.type !== "NewExpression" && parent.type !== "MemberExpression")) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + start: advancePositionWithClone(node.loc.start, source, start), + end: advancePositionWithClone(node.loc.start, source, end), + source + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + ret.ast = ast; + } else { + ret = node; + ret.constType = 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (shared.isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (shared.isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(?:if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && isCommentOrWhitespace(sibling)) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if ((dir.name === "else-if" || dir.name === "else") && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '""', + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + const keyProperty = keyExp ? createObjectProperty(`key`, keyExp) : null; + { + if (isTemplate && memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if ((isTemplate || memo) && keyProperty && isDirKey) { + keyExp = keyProp.exp = keyProperty.value = processExpression( + keyProperty.value, + context + ); + if (memo) { + context.vForMemoKeyedNodes.add(node); + } + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + var _a; + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + const shouldUseBlock = !isStableFragment || childBlock.isBlockRequired === true; + if (childBlock.isBlock !== shouldUseBlock) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = shouldUseBlock; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + if (childBlock.needsPatch) { + childBlock.patchFlag = ((_a = childBlock.patchFlag) != null ? _a : 0) | 512; + } + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached && _cached.el`, + ...keyExp ? [` && _cached.key === (`, keyExp, `)`] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) return; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + if (result.key) { + result.key = processExpression( + result.key, + context, + true + ); + } + if (result.index) { + result.index = processExpression( + result.index, + context, + true + ); + } + if (result.value) { + result.value = processExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = node.props.some( + (prop) => isVSlot(prop) && (hasScopeRef(prop.arg, context.identifiers) || hasScopeRef(prop.exp, context.identifiers)) + ) || children.some((child) => hasScopeRef(child, context.identifiers)); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(?:-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (!isCommentOrWhitespace(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(?:else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + !implicitDefaultChildren.every(isWhitespaceText)) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (``), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let needsPatch = false; + let isBlockRequired = false; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + needsPatch = propsBuildResult.needsPatch; + isBlockRequired = propsBuildResult.isBlockRequired; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + const vnodeCall = node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + needsPatch = needsPatch && (patchFlag === 0 || patchFlag === 32); + if (needsPatch) { + vnodeCall.needsPatch = true; + } + if (isBlockRequired) { + vnodeCall.isBlockRequired = true; + } + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + { + exp = isProp.exp = processExpression(exp, context); + } + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = shared.camelize(name); + const PascalName = shared.capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let isBlockRequired = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = shared.isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !shared.isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && shared.isReservedProp(name)) { + hasVnodeHook = true; + } + if (name === "ref") { + hasRef = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "ref" && name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if (isVBind && isStaticArgOf(arg, "key")) { + shouldUseBlock = true; + } + if (isVOn && hasChildren && arg && isStaticExp(arg) && shared.camelize(arg.content) === "vue:beforeUpdate") { + shouldUseBlock = true; + isBlockRequired = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + { + pushMergeArg(); + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (shared.isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!shared.isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + isBlockRequired = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + const needsPatch = (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0); + if (!shouldUseBlock && needsPatch) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock, + needsPatch, + isBlockRequired + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || shared.isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = shared.camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = shared.camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + { + slotName = p.exp = processExpression(p.exp, context); + } + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = shared.camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + shared.toHandlerKey(shared.camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp, context); + const isInlineStatement = !(isMemberExp || isFnExpression(exp, context)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + context.onError( + createCompilerError(34, loc) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (``) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } +}; + +const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + if (bindingType === "literal-const" || bindingType === "setup-const") { + context.onError(createCompilerError(45, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } else if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(child, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + // " + case 39: + inSingle = true; + break; + // ' + case 96: + inTemplateString = true; + break; + // ` + case 40: + paren++; + break; + // ( + case 41: + paren--; + break; + // ) + case 91: + square++; + break; + // [ + case 93: + square--; + break; + // ] + case 123: + curly++; + break; + // { + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + node.ast = void 0; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node) || context.inSSR) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } +}; + +const transformVBindShorthand = (node, context) => { + if (node.type === 1) { + for (const prop of node.props) { + if (prop.type === 7 && prop.name === "bind" && (!prop.exp || // #13930 :foo in in-DOM templates will be parsed into :foo="" by browser + false) && prop.arg) { + const arg = prop.arg; + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 53, + arg.loc + ) + ); + prop.exp = createSimpleExpression("", true, arg.loc); + } else { + const propName = shared.camelize(arg.content); + if (validFirstIdentCharRE.test(propName[0]) || // allow hyphen first char for https://github.com/vuejs/language-tools/pull/3424 + propName[0] === "-") { + prop.exp = createSimpleExpression(propName, false, arg.loc); + } + } + } + } + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformVBindShorthand, + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; +} +function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(50)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(51)); + } + const resolvedOptions = shared.extend({}, options, { + prefixIdentifiers + }); + const ast = shared.isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform( + ast, + shared.extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: shared.extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +exports.generateCodeFrame = shared.generateCodeFrame; +exports.BASE_TRANSITION = BASE_TRANSITION; +exports.BindingTypes = BindingTypes; +exports.CAMELIZE = CAMELIZE; +exports.CAPITALIZE = CAPITALIZE; +exports.CREATE_BLOCK = CREATE_BLOCK; +exports.CREATE_COMMENT = CREATE_COMMENT; +exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; +exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; +exports.CREATE_SLOTS = CREATE_SLOTS; +exports.CREATE_STATIC = CREATE_STATIC; +exports.CREATE_TEXT = CREATE_TEXT; +exports.CREATE_VNODE = CREATE_VNODE; +exports.CompilerDeprecationTypes = CompilerDeprecationTypes; +exports.ConstantTypes = ConstantTypes; +exports.ElementTypes = ElementTypes; +exports.ErrorCodes = ErrorCodes; +exports.FRAGMENT = FRAGMENT; +exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; +exports.IS_MEMO_SAME = IS_MEMO_SAME; +exports.IS_REF = IS_REF; +exports.KEEP_ALIVE = KEEP_ALIVE; +exports.MERGE_PROPS = MERGE_PROPS; +exports.NORMALIZE_CLASS = NORMALIZE_CLASS; +exports.NORMALIZE_PROPS = NORMALIZE_PROPS; +exports.NORMALIZE_STYLE = NORMALIZE_STYLE; +exports.Namespaces = Namespaces; +exports.NodeTypes = NodeTypes; +exports.OPEN_BLOCK = OPEN_BLOCK; +exports.POP_SCOPE_ID = POP_SCOPE_ID; +exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; +exports.RENDER_LIST = RENDER_LIST; +exports.RENDER_SLOT = RENDER_SLOT; +exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT; +exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; +exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; +exports.RESOLVE_FILTER = RESOLVE_FILTER; +exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; +exports.SUSPENSE = SUSPENSE; +exports.TELEPORT = TELEPORT; +exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING; +exports.TO_HANDLERS = TO_HANDLERS; +exports.TO_HANDLER_KEY = TO_HANDLER_KEY; +exports.TS_NODE_TYPES = TS_NODE_TYPES; +exports.UNREF = UNREF; +exports.WITH_CTX = WITH_CTX; +exports.WITH_DIRECTIVES = WITH_DIRECTIVES; +exports.WITH_MEMO = WITH_MEMO; +exports.advancePositionWithClone = advancePositionWithClone; +exports.advancePositionWithMutation = advancePositionWithMutation; +exports.assert = assert; +exports.baseCompile = baseCompile; +exports.baseParse = baseParse; +exports.buildDirectiveArgs = buildDirectiveArgs; +exports.buildProps = buildProps; +exports.buildSlots = buildSlots; +exports.checkCompatEnabled = checkCompatEnabled; +exports.convertToBlock = convertToBlock; +exports.createArrayExpression = createArrayExpression; +exports.createAssignmentExpression = createAssignmentExpression; +exports.createBlockStatement = createBlockStatement; +exports.createCacheExpression = createCacheExpression; +exports.createCallExpression = createCallExpression; +exports.createCompilerError = createCompilerError; +exports.createCompoundExpression = createCompoundExpression; +exports.createConditionalExpression = createConditionalExpression; +exports.createForLoopParams = createForLoopParams; +exports.createFunctionExpression = createFunctionExpression; +exports.createIfStatement = createIfStatement; +exports.createInterpolation = createInterpolation; +exports.createObjectExpression = createObjectExpression; +exports.createObjectProperty = createObjectProperty; +exports.createReturnStatement = createReturnStatement; +exports.createRoot = createRoot; +exports.createSequenceExpression = createSequenceExpression; +exports.createSimpleExpression = createSimpleExpression; +exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; +exports.createTemplateLiteral = createTemplateLiteral; +exports.createTransformContext = createTransformContext; +exports.createVNodeCall = createVNodeCall; +exports.errorMessages = errorMessages; +exports.extractIdentifiers = extractIdentifiers; +exports.findDir = findDir; +exports.findProp = findProp; +exports.forAliasRE = forAliasRE; +exports.generate = generate; +exports.getBaseTransformPreset = getBaseTransformPreset; +exports.getConstantType = getConstantType; +exports.getMemoedVNodeCall = getMemoedVNodeCall; +exports.getVNodeBlockHelper = getVNodeBlockHelper; +exports.getVNodeHelper = getVNodeHelper; +exports.hasDynamicKeyVBind = hasDynamicKeyVBind; +exports.hasScopeRef = hasScopeRef; +exports.helperNameMap = helperNameMap; +exports.injectProp = injectProp; +exports.isAllWhitespace = isAllWhitespace; +exports.isCommentOrWhitespace = isCommentOrWhitespace; +exports.isCoreComponent = isCoreComponent; +exports.isFnExpression = isFnExpression; +exports.isFnExpressionBrowser = isFnExpressionBrowser; +exports.isFnExpressionNode = isFnExpressionNode; +exports.isFunctionType = isFunctionType; +exports.isInDestructureAssignment = isInDestructureAssignment; +exports.isInNewExpression = isInNewExpression; +exports.isMemberExpression = isMemberExpression; +exports.isMemberExpressionBrowser = isMemberExpressionBrowser; +exports.isMemberExpressionNode = isMemberExpressionNode; +exports.isReferencedIdentifier = isReferencedIdentifier; +exports.isSimpleIdentifier = isSimpleIdentifier; +exports.isSlotOutlet = isSlotOutlet; +exports.isStaticArgOf = isStaticArgOf; +exports.isStaticExp = isStaticExp; +exports.isStaticProperty = isStaticProperty; +exports.isStaticPropertyKey = isStaticPropertyKey; +exports.isTemplateNode = isTemplateNode; +exports.isText = isText$1; +exports.isVPre = isVPre; +exports.isVSlot = isVSlot; +exports.isWhitespaceText = isWhitespaceText; +exports.locStub = locStub; +exports.noopDirectiveTransform = noopDirectiveTransform; +exports.processExpression = processExpression; +exports.processFor = processFor; +exports.processIf = processIf; +exports.processSlotOutlet = processSlotOutlet; +exports.registerRuntimeHelpers = registerRuntimeHelpers; +exports.resolveComponentType = resolveComponentType; +exports.stringifyExpression = stringifyExpression; +exports.toValidAssetId = toValidAssetId; +exports.trackSlotScopes = trackSlotScopes; +exports.trackVForSlotScopes = trackVForSlotScopes; +exports.transform = transform; +exports.transformBind = transformBind; +exports.transformElement = transformElement; +exports.transformExpression = transformExpression; +exports.transformModel = transformModel; +exports.transformOn = transformOn; +exports.transformVBindShorthand = transformVBindShorthand; +exports.traverseNode = traverseNode; +exports.unwrapTSNode = unwrapTSNode; +exports.validFirstIdentCharRE = validFirstIdentCharRE; +exports.walkBlockDeclarations = walkBlockDeclarations; +exports.walkFunctionParams = walkFunctionParams; +exports.walkIdentifiers = walkIdentifiers; +exports.warnDeprecation = warnDeprecation; diff --git a/apps/web/.output/server/node_modules/@vue/compiler-core/package.json b/apps/web/.output/server/node_modules/@vue/compiler-core/package.json new file mode 100644 index 0000000..1604c9d --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/compiler-core/package.json @@ -0,0 +1,58 @@ +{ + "name": "@vue/compiler-core", + "version": "3.5.44", + "description": "@vue/compiler-core", + "main": "index.js", + "module": "dist/compiler-core.esm-bundler.js", + "types": "dist/compiler-core.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/compiler-core.d.ts", + "node": { + "production": "./dist/compiler-core.cjs.prod.js", + "development": "./dist/compiler-core.cjs.js", + "default": "./dist/compiler-core.cjs.prod.js" + }, + "module": "./dist/compiler-core.esm-bundler.js", + "import": "./dist/compiler-core.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueCompilerCore", + "compat": true, + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-core" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme", + "dependencies": { + "@babel/parser": "^7.29.9", + "@vue/shared": "3.5.44", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.2" + }, + "devDependencies": { + "@babel/types": "^7.29.8" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js new file mode 100644 index 0000000..d06e194 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js @@ -0,0 +1,729 @@ +/** +* @vue/compiler-dom v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerCore = require('@vue/compiler-core'); +var shared = require('@vue/shared'); + +const V_MODEL_RADIO = /* @__PURE__ */ Symbol(``); +const V_MODEL_CHECKBOX = /* @__PURE__ */ Symbol( + `` +); +const V_MODEL_TEXT = /* @__PURE__ */ Symbol(``); +const V_MODEL_SELECT = /* @__PURE__ */ Symbol( + `` +); +const V_MODEL_DYNAMIC = /* @__PURE__ */ Symbol( + `` +); +const V_ON_WITH_MODIFIERS = /* @__PURE__ */ Symbol( + `` +); +const V_ON_WITH_KEYS = /* @__PURE__ */ Symbol( + `` +); +const V_SHOW = /* @__PURE__ */ Symbol(``); +const TRANSITION = /* @__PURE__ */ Symbol(``); +const TRANSITION_GROUP = /* @__PURE__ */ Symbol( + `` +); +compilerCore.registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +const parserOptions = { + parseMode: "html", + isVoidTag: shared.isVoidTag, + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: void 0, + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: compilerCore.createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = shared.parseStringStyle(cssText); + return compilerCore.createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return compilerCore.createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 54, + "54": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 55, + "55": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 56, + "56": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 57, + "57": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 58, + "58": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 59, + "59": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 60, + "60": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 61, + "61": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 62, + "62": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 63, + "63": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 64, + "64": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 65, + "65": "__EXTEND_POINT__" +}; +const DOMErrorMessages = { + [54]: `v-html is missing expression.`, + [55]: `v-html will override element children.`, + [56]: `v-text is missing expression.`, + [57]: `v-text will override element children.`, + [58]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [59]: `v-model argument is not supported on plain elements.`, + [60]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [61]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [62]: `v-show is missing expression.`, + [63]: `<Transition> expects exactly one child element or component.`, + [64]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(54, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(55, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`innerHTML`, true, loc), + exp || compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(56, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(57, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`textContent`, true), + exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( + context.helperString(compilerCore.TO_DISPLAY_STRING), + [exp], + loc + ) : compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = compilerCore.transformModel(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 59, + dir.arg.loc + ) + ); + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = compilerCore.findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 60, + dir.loc + ) + ); + break; + } + } + } else if (compilerCore.hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else ; + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else ; + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 58, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ shared.makeMap(`onkeyup,onkeydown,onkeypress`); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (modifier === "native" && compilerCore.checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (compilerCore.isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return compilerCore.transformOn(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); + key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [compilerCore.createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(62, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + hasMultipleChildren(node); + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } +}; +function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => !compilerCore.isCommentOrWhitespace(c) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); +} + +const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; +const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + const isParentCached = parent.type === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 20; + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + const deleteCount = currentChunk.length - 1; + if (isParentCached) { + children.splice( + currentIndex - currentChunk.length, + currentChunk.length, + // @ts-expect-error + staticCall + ); + } else { + currentChunk[0].codegenNode.value = staticCall; + if (currentChunk.length > 1) { + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + const cacheIndex = context.cached.indexOf( + currentChunk[currentChunk.length - 1].codegenNode + ); + if (cacheIndex > -1) { + for (let i2 = cacheIndex; i2 < context.cached.length; i2++) { + const c = context.cached[i2]; + if (c) c.index -= deleteCount; + } + context.cached.splice(cacheIndex - deleteCount + 1, deleteCount); + } + } + } + return deleteCount; + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const isCached = isParentCached || getCachedNode(child); + if (isCached) { + const result = analyzeNode(child); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(child); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); +}; +const getCachedNode = (node) => { + if ((node.type === 1 && node.tagType === 0 || node.type === 12) && node.codegenNode && node.codegenNode.type === 20) { + return node.codegenNode; + } +}; +const dataAriaRE = /^(?:data|aria)-/; +const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : ns === 2 ? shared.isKnownMathMLAttr(name) : false) || dataAriaRE.test(name); +}; +const isNonStringifiable = /* @__PURE__ */ shared.makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` +); +function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 1 && compilerCore.findDir(node, "once", true)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + const isOptionTag = node2.tag === "option" && node2.ns === 0; + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + if (isOptionTag && compilerCore.isStaticArgOf(p.arg, "value") && p.exp && !p.exp.isStatic) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; +} +function stringifyNode(node, context) { + if (shared.isString(node)) { + return node; + } + if (shared.isSymbol(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return shared.escapeHtml(node.content); + case 3: + return `<!--${shared.escapeHtml(node.content)}-->`; + case 5: + return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); + case 8: + return shared.escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } +} +function stringifyElement(node, context) { + var _a; + let res = `<${node.tag}`; + let innerHTML = void 0; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${shared.escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if ((shared.isBooleanAttr(p.arg.content) || p.arg.content === "hidden") && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "hidden" && typeof evaluated === "number" && !shared.includeBooleanAttr(evaluated)) { + continue; + } + if (arg === "class") { + evaluated = shared.normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${shared.escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = (_a = evaluateConstant(p.exp)) != null ? _a : ""; + } else if (p.name === "text") { + innerHTML = shared.escapeHtml( + shared.toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML !== void 0) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!shared.isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; +} +function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (shared.isString(c) || shared.isSymbol(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += shared.toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.removeNode(); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + transformTransition, + ...[] +]; +const DOMDirectiveTransforms = { + cloak: compilerCore.noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(src, options = {}) { + return compilerCore.baseCompile( + src, + shared.extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: shared.extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); +} +function parse(template, options = {}) { + return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); +} + +exports.DOMDirectiveTransforms = DOMDirectiveTransforms; +exports.DOMErrorCodes = DOMErrorCodes; +exports.DOMErrorMessages = DOMErrorMessages; +exports.DOMNodeTransforms = DOMNodeTransforms; +exports.TRANSITION = TRANSITION; +exports.TRANSITION_GROUP = TRANSITION_GROUP; +exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; +exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; +exports.V_MODEL_RADIO = V_MODEL_RADIO; +exports.V_MODEL_SELECT = V_MODEL_SELECT; +exports.V_MODEL_TEXT = V_MODEL_TEXT; +exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; +exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; +exports.V_SHOW = V_SHOW; +exports.compile = compile; +exports.createDOMCompilerError = createDOMCompilerError; +exports.parse = parse; +exports.parserOptions = parserOptions; +exports.transformStyle = transformStyle; +Object.keys(compilerCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; +}); diff --git a/apps/web/.output/server/node_modules/@vue/compiler-dom/package.json b/apps/web/.output/server/node_modules/@vue/compiler-dom/package.json new file mode 100644 index 0000000..5bd839e --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/compiler-dom/package.json @@ -0,0 +1,57 @@ +{ + "name": "@vue/compiler-dom", + "version": "3.5.44", + "description": "@vue/compiler-dom", + "main": "index.js", + "module": "dist/compiler-dom.esm-bundler.js", + "types": "dist/compiler-dom.d.ts", + "unpkg": "dist/compiler-dom.global.js", + "jsdelivr": "dist/compiler-dom.global.js", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/compiler-dom.d.ts", + "node": { + "production": "./dist/compiler-dom.cjs.prod.js", + "development": "./dist/compiler-dom.cjs.js", + "default": "./dist/compiler-dom.cjs.prod.js" + }, + "module": "./dist/compiler-dom.esm-bundler.js", + "import": "./dist/compiler-dom.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "buildOptions": { + "name": "VueCompilerDOM", + "compat": true, + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-dom" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme", + "dependencies": { + "@vue/shared": "3.5.44", + "@vue/compiler-core": "3.5.44" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js b/apps/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js new file mode 100644 index 0000000..fa2bb8d --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js @@ -0,0 +1,1420 @@ +/** +* @vue/compiler-ssr v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var shared = require('@vue/shared'); + +const SSR_INTERPOLATE = /* @__PURE__ */ Symbol(`ssrInterpolate`); +const SSR_RENDER_VNODE = /* @__PURE__ */ Symbol(`ssrRenderVNode`); +const SSR_RENDER_COMPONENT = /* @__PURE__ */ Symbol(`ssrRenderComponent`); +const SSR_RENDER_SLOT = /* @__PURE__ */ Symbol(`ssrRenderSlot`); +const SSR_RENDER_SLOT_INNER = /* @__PURE__ */ Symbol(`ssrRenderSlotInner`); +const SSR_RENDER_CLASS = /* @__PURE__ */ Symbol(`ssrRenderClass`); +const SSR_RENDER_STYLE = /* @__PURE__ */ Symbol(`ssrRenderStyle`); +const SSR_RENDER_ATTRS = /* @__PURE__ */ Symbol(`ssrRenderAttrs`); +const SSR_RENDER_ATTR = /* @__PURE__ */ Symbol(`ssrRenderAttr`); +const SSR_RENDER_DYNAMIC_ATTR = /* @__PURE__ */ Symbol(`ssrRenderDynamicAttr`); +const SSR_RENDER_LIST = /* @__PURE__ */ Symbol(`ssrRenderList`); +const SSR_INCLUDE_BOOLEAN_ATTR = /* @__PURE__ */ Symbol( + `ssrIncludeBooleanAttr` +); +const SSR_LOOSE_EQUAL = /* @__PURE__ */ Symbol(`ssrLooseEqual`); +const SSR_LOOSE_CONTAIN = /* @__PURE__ */ Symbol(`ssrLooseContain`); +const SSR_RENDER_DYNAMIC_MODEL = /* @__PURE__ */ Symbol( + `ssrRenderDynamicModel` +); +const SSR_GET_DYNAMIC_MODEL_PROPS = /* @__PURE__ */ Symbol( + `ssrGetDynamicModelProps` +); +const SSR_RENDER_TELEPORT = /* @__PURE__ */ Symbol(`ssrRenderTeleport`); +const SSR_RENDER_SUSPENSE = /* @__PURE__ */ Symbol(`ssrRenderSuspense`); +const SSR_GET_DIRECTIVE_PROPS = /* @__PURE__ */ Symbol(`ssrGetDirectiveProps`); +const ssrHelpers = { + [SSR_INTERPOLATE]: `ssrInterpolate`, + [SSR_RENDER_VNODE]: `ssrRenderVNode`, + [SSR_RENDER_COMPONENT]: `ssrRenderComponent`, + [SSR_RENDER_SLOT]: `ssrRenderSlot`, + [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`, + [SSR_RENDER_CLASS]: `ssrRenderClass`, + [SSR_RENDER_STYLE]: `ssrRenderStyle`, + [SSR_RENDER_ATTRS]: `ssrRenderAttrs`, + [SSR_RENDER_ATTR]: `ssrRenderAttr`, + [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`, + [SSR_RENDER_LIST]: `ssrRenderList`, + [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`, + [SSR_LOOSE_EQUAL]: `ssrLooseEqual`, + [SSR_LOOSE_CONTAIN]: `ssrLooseContain`, + [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`, + [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`, + [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`, + [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`, + [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps` +}; +compilerDom.registerRuntimeHelpers(ssrHelpers); + +const ssrTransformIf = compilerDom.createStructuralDirectiveTransform( + /^(?:if|else|else-if)$/, + compilerDom.processIf +); +function ssrProcessIf(node, context, disableNestedFragments = false, disableComment = false) { + const [rootBranch] = node.branches; + const ifStatement = compilerDom.createIfStatement( + rootBranch.condition, + processIfBranch(rootBranch, context, disableNestedFragments) + ); + context.pushStatement(ifStatement); + let currentIf = ifStatement; + for (let i = 1; i < node.branches.length; i++) { + const branch = node.branches[i]; + const branchBlockStatement = processIfBranch( + branch, + context, + disableNestedFragments + ); + if (branch.condition) { + currentIf = currentIf.alternate = compilerDom.createIfStatement( + branch.condition, + branchBlockStatement + ); + } else { + currentIf.alternate = branchBlockStatement; + } + } + if (!currentIf.alternate && !disableComment) { + currentIf.alternate = compilerDom.createBlockStatement([ + compilerDom.createCallExpression(`_push`, ["`<!---->`"]) + ]); + } +} +function processIfBranch(branch, context, disableNestedFragments = false) { + const { children } = branch; + const needFragmentWrapper = !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && // optimize away nested fragments when the only child is a ForNode + !(children.length === 1 && children[0].type === 11); + return processChildrenAsStatement(branch, context, needFragmentWrapper); +} + +const ssrTransformFor = compilerDom.createStructuralDirectiveTransform("for", compilerDom.processFor); +function ssrProcessFor(node, context, disableNestedFragments = false) { + const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1); + const renderLoop = compilerDom.createFunctionExpression( + compilerDom.createForLoopParams(node.parseResult) + ); + renderLoop.body = processChildrenAsStatement( + node, + context, + needFragmentWrapper + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--[-->`); + } + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_LIST), [ + node.source, + renderLoop + ]) + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--]-->`); + } +} + +const ssrTransformSlotOutlet = (node, context) => { + if (compilerDom.isSlotOutlet(node)) { + const { slotName, slotProps } = compilerDom.processSlotOutlet(node, context); + const args = [ + `_ctx.$slots`, + slotName, + slotProps || `{}`, + // fallback content placeholder. will be replaced in the process phase + `null`, + `_push`, + `_parent` + ]; + if (context.scopeId && context.slotted !== false) { + args.push(`"${context.scopeId}-s"`); + } + let method = SSR_RENDER_SLOT; + let parent = context.parent; + if (parent) { + const children = parent.children; + if (parent.type === 10) { + parent = context.grandParent; + } + let componentType; + if (parent.type === 1 && parent.tagType === 1 && ((componentType = compilerDom.resolveComponentType(parent, context, true)) === compilerDom.TRANSITION || componentType === compilerDom.TRANSITION_GROUP) && children.filter((c) => c.type === 1).length === 1) { + method = SSR_RENDER_SLOT_INNER; + if (!(context.scopeId && context.slotted !== false)) { + args.push("null"); + } + args.push("true"); + } + } + node.ssrCodegenNode = compilerDom.createCallExpression(context.helper(method), args); + } +}; +function ssrProcessSlotOutlet(node, context) { + const renderCall = node.ssrCodegenNode; + if (node.children.length) { + const fallbackRenderFn = compilerDom.createFunctionExpression([]); + fallbackRenderFn.body = processChildrenAsStatement(node, context); + renderCall.arguments[3] = fallbackRenderFn; + } + if (context.withSlotScopeId) { + const slotScopeId = renderCall.arguments[6]; + renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`; + } + context.pushStatement(node.ssrCodegenNode); +} + +function createSSRCompilerError(code, loc) { + return compilerDom.createCompilerError(code, loc, SSRErrorMessages); +} +const SSRErrorMessages = { + [65]: `Unsafe attribute name for SSR.`, + [66]: `Missing the 'to' prop on teleport element.`, + [67]: `Invalid AST node during SSR transform.` +}; + +function ssrProcessTeleport(node, context) { + const targetProp = compilerDom.findProp(node, "to"); + if (!targetProp) { + context.onError( + createSSRCompilerError(66, node.loc) + ); + return; + } + let target; + if (targetProp.type === 6) { + target = targetProp.value && compilerDom.createSimpleExpression(targetProp.value.content, true); + } else { + target = targetProp.exp; + } + if (!target) { + context.onError( + createSSRCompilerError( + 66, + targetProp.loc + ) + ); + return; + } + const disabledProp = compilerDom.findProp( + node, + "disabled", + false, + true + /* allow empty */ + ); + const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`; + const contentRenderFn = compilerDom.createFunctionExpression( + [`_push`], + void 0, + // Body is added later + true, + // newline + false, + // isSlot + node.loc + ); + contentRenderFn.body = processChildrenAsStatement(node, context); + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_TELEPORT), [ + `_push`, + contentRenderFn, + target, + disabled, + `_parent` + ]) + ); +} + +const wipMap$3 = /* @__PURE__ */ new WeakMap(); +function ssrTransformSuspense(node, context) { + return () => { + if (node.children.length) { + const wipEntry = { + slotsExp: null, + // to be immediately set + wipSlots: [] + }; + wipMap$3.set(node, wipEntry); + wipEntry.slotsExp = compilerDom.buildSlots( + node, + context, + (_props, _vForExp, children, loc) => { + const fn = compilerDom.createFunctionExpression( + [], + void 0, + // no return, assign body later + true, + // newline + false, + // suspense slots are not treated as normal slots + loc + ); + wipEntry.wipSlots.push({ + fn, + children + }); + return fn; + } + ).slots; + } + }; +} +function ssrProcessSuspense(node, context) { + const wipEntry = wipMap$3.get(node); + if (!wipEntry) { + return; + } + const { slotsExp, wipSlots } = wipEntry; + for (let i = 0; i < wipSlots.length; i++) { + const slot = wipSlots[i]; + slot.fn.body = processChildrenAsStatement(slot, context); + } + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [ + `_push`, + slotsExp + ]) + ); +} + +const rawChildrenMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformElement = (node, context) => { + if (node.type !== 1 || node.tagType !== 0) { + return; + } + return function ssrPostTransformElement() { + const openTag = [`<${node.tag}`]; + const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0; + const hasDynamicVBind = compilerDom.hasDynamicKeyVBind(node); + const hasCustomDir = node.props.some( + (p) => p.type === 7 && !shared.isBuiltInDirective(p.name) + ); + const vShowPropIndex = node.props.findIndex( + (i) => i.type === 7 && i.name === "show" + ); + if (vShowPropIndex !== -1) { + const vShowProp = node.props[vShowPropIndex]; + node.props.splice(vShowPropIndex, 1); + node.props.push(vShowProp); + } + const needMergeProps = hasDynamicVBind || hasCustomDir; + if (needMergeProps) { + const { props, directives } = compilerDom.buildProps( + node, + context, + node.props, + false, + false, + true + ); + if (props || directives.length) { + const mergedProps = buildSSRProps(props, directives, context); + const propsExp = compilerDom.createCallExpression( + context.helper(SSR_RENDER_ATTRS), + [mergedProps] + ); + if (node.tag === "textarea") { + const existingText = node.children[0]; + if (!hasContentOverrideDirective(node) && (!existingText || existingText.type !== 5)) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + compilerDom.createAssignmentExpression( + compilerDom.createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + compilerDom.createConditionalExpression( + compilerDom.createSimpleExpression(`"value" in ${tempId}`, false), + compilerDom.createSimpleExpression(`${tempId}.value`, false), + compilerDom.createSimpleExpression( + existingText ? existingText.content : ``, + true + ), + false + ) + ]) + ); + } + } else if (node.tag === "input") { + const vModel = findVModel(node); + if (vModel) { + const tempId = `_temp${context.temps++}`; + const tempExp = compilerDom.createSimpleExpression(tempId, false); + propsExp.arguments = [ + compilerDom.createSequenceExpression([ + compilerDom.createAssignmentExpression(tempExp, mergedProps), + compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), [ + tempExp, + compilerDom.createCallExpression( + context.helper(SSR_GET_DYNAMIC_MODEL_PROPS), + [ + tempExp, + // existing props + vModel.exp + // model + ] + ) + ]) + ]) + ]; + } + } else if (directives.length && !node.children.length) { + if (!hasContentOverrideDirective(node)) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + compilerDom.createAssignmentExpression( + compilerDom.createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + compilerDom.createConditionalExpression( + compilerDom.createSimpleExpression(`"textContent" in ${tempId}`, false), + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + compilerDom.createSimpleExpression(`${tempId}.textContent`, false) + ]), + compilerDom.createSimpleExpression(`${tempId}.innerHTML ?? ''`, false), + false + ) + ); + } + } + if (needTagForRuntime) { + propsExp.arguments.push(`"${node.tag}"`); + } + openTag.push(propsExp); + } + } + let dynamicClassBinding = void 0; + let staticClassBinding = void 0; + let dynamicStyleBinding = void 0; + for (let i = 0; i < node.props.length; i++) { + const prop = node.props[i]; + if (node.tag === "input" && isTrueFalseValue(prop)) { + continue; + } + if (prop.type === 7) { + if (prop.name === "html" && prop.exp) { + rawChildrenMap.set( + node, + compilerDom.createCompoundExpression([`(`, prop.exp, `) ?? ''`]) + ); + } else if (prop.name === "text" && prop.exp) { + node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; + } else if (prop.name === "slot") { + context.onError( + compilerDom.createCompilerError(40, prop.loc) + ); + } else if (isTextareaWithValue(node, prop) && prop.exp) { + if (!needMergeProps) { + node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; + } + } else if (!needMergeProps && prop.name !== "on") { + const directiveTransform = context.directiveTransforms[prop.name]; + if (directiveTransform) { + const { props, ssrTagParts } = directiveTransform( + prop, + node, + context + ); + if (ssrTagParts) { + openTag.push(...ssrTagParts); + } + for (let j = 0; j < props.length; j++) { + const { key, value } = props[j]; + if (compilerDom.isStaticExp(key)) { + let attrName = key.content; + if (attrName === "key" || attrName === "ref") { + continue; + } + if (attrName === "class") { + openTag.push( + ` class="`, + dynamicClassBinding = compilerDom.createCallExpression( + context.helper(SSR_RENDER_CLASS), + [value] + ), + `"` + ); + } else if (attrName === "style") { + if (dynamicStyleBinding) { + mergeCall(dynamicStyleBinding, value); + } else { + openTag.push( + ` style="`, + dynamicStyleBinding = compilerDom.createCallExpression( + context.helper(SSR_RENDER_STYLE), + [value] + ), + `"` + ); + } + } else { + attrName = node.tag.indexOf("-") > 0 ? attrName : shared.propsToAttrMap[attrName] || attrName.toLowerCase(); + if (shared.isBooleanAttr(attrName)) { + openTag.push( + compilerDom.createConditionalExpression( + compilerDom.createCallExpression( + context.helper(SSR_INCLUDE_BOOLEAN_ATTR), + [value] + ), + compilerDom.createSimpleExpression(" " + attrName, true), + compilerDom.createSimpleExpression("", true), + false + ) + ); + } else if (attrName === "hidden") { + openTag.push( + compilerDom.createCallExpression( + context.helper(SSR_RENDER_DYNAMIC_ATTR), + [key, value] + ) + ); + } else if (shared.isSSRSafeAttrName(attrName)) { + openTag.push( + compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTR), [ + key, + value + ]) + ); + } else { + context.onError( + createSSRCompilerError( + 65, + key.loc + ) + ); + } + } + } else { + const args = [key, value]; + if (needTagForRuntime) { + args.push(`"${node.tag}"`); + } + openTag.push( + compilerDom.createCallExpression( + context.helper(SSR_RENDER_DYNAMIC_ATTR), + args + ) + ); + } + } + } + } + } else { + const name = prop.name; + if (node.tag === "textarea" && name === "value" && prop.value) { + rawChildrenMap.set(node, shared.escapeHtml(prop.value.content)); + } else if (!needMergeProps) { + if (name === "key" || name === "ref") { + continue; + } + if (name === "class" && prop.value) { + staticClassBinding = JSON.stringify(prop.value.content); + } + openTag.push( + ` ${prop.name}` + (prop.value ? `="${shared.escapeHtml(prop.value.content)}"` : ``) + ); + } + } + } + if (dynamicClassBinding && staticClassBinding) { + mergeCall(dynamicClassBinding, staticClassBinding); + removeStaticBinding(openTag, "class"); + } + if (context.scopeId) { + openTag.push(` ${context.scopeId}`); + } + node.ssrCodegenNode = compilerDom.createTemplateLiteral(openTag); + }; +}; +function buildSSRProps(props, directives, context) { + let mergePropsArgs = []; + if (props) { + if (props.type === 14) { + mergePropsArgs = props.arguments; + } else { + mergePropsArgs.push(props); + } + } + if (directives.length) { + for (const dir of directives) { + mergePropsArgs.push( + compilerDom.createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [ + `_ctx`, + ...compilerDom.buildDirectiveArgs(dir, context).elements + ]) + ); + } + } + return mergePropsArgs.length > 1 ? compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0]; +} +function isTrueFalseValue(prop) { + if (prop.type === 7) { + return prop.name === "bind" && prop.arg && compilerDom.isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value"); + } else { + return prop.name === "true-value" || prop.name === "false-value"; + } +} +function isTextareaWithValue(node, prop) { + return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value")); +} +function mergeCall(call, arg) { + const existing = call.arguments[0]; + if (existing.type === 17) { + existing.elements.push(arg); + } else { + call.arguments[0] = compilerDom.createArrayExpression([existing, arg]); + } +} +function removeStaticBinding(tag, binding) { + const regExp = new RegExp(`^ ${binding}=".+"$`); + const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e)); + if (i > -1) { + tag.splice(i, 1); + } +} +function findVModel(node) { + return node.props.find( + (p) => p.type === 7 && p.name === "model" && p.exp + ); +} +function hasContentOverrideDirective(node) { + return !!compilerDom.findDir(node, "text") || !!compilerDom.findDir(node, "html"); +} +function ssrProcessElement(node, context) { + const isVoidTag = context.options.isVoidTag || shared.NO; + const elementsToAdd = node.ssrCodegenNode.elements; + for (let j = 0; j < elementsToAdd.length; j++) { + context.pushStringPart(elementsToAdd[j]); + } + if (context.withSlotScopeId) { + context.pushStringPart(compilerDom.createSimpleExpression(`_scopeId`, false)); + } + context.pushStringPart(`>`); + const rawChildren = rawChildrenMap.get(node); + if (rawChildren) { + context.pushStringPart(rawChildren); + } else if (node.children.length) { + processChildren(node, context); + } + if (!isVoidTag(node.tag)) { + context.pushStringPart(`</${node.tag}>`); + } +} + +const wipMap$2 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransitionGroup(node, context) { + return () => { + const tag = compilerDom.findProp(node, "tag"); + if (tag) { + const otherProps = node.props.filter((p) => p !== tag); + const { props, directives } = compilerDom.buildProps( + node, + context, + otherProps, + true, + false, + true + ); + let propsExp = null; + if (props || directives.length) { + propsExp = compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTRS), [ + buildSSRProps(props, directives, context) + ]); + } + wipMap$2.set(node, { + tag, + propsExp, + scopeId: context.scopeId || null + }); + } + }; +} +function ssrProcessTransitionGroup(node, context) { + const entry = wipMap$2.get(node); + if (entry) { + const { tag, propsExp, scopeId } = entry; + if (tag.type === 7) { + context.pushStringPart(`<`); + context.pushStringPart(tag.exp); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren( + node, + context, + false, + /** + * TransitionGroup has the special runtime behavior of flattening and + * concatenating all children into a single fragment (in order for them to + * be patched using the same key map) so we need to account for that here + * by disabling nested fragment wrappers from being generated. + */ + true, + /** + * TransitionGroup filters out comment children at runtime and thus + * doesn't expect comments to be present during hydration. We need to + * account for that by disabling the empty comment that is otherwise + * rendered for a falsy v-if that has no v-else specified. (#6715) + */ + true + ); + context.pushStringPart(`</`); + context.pushStringPart(tag.exp); + context.pushStringPart(`>`); + } else { + context.pushStringPart(`<${tag.value.content}`); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren(node, context, false, true, true); + context.pushStringPart(`</${tag.value.content}>`); + } + } else { + processChildren(node, context, true, true, true); + } +} + +const wipMap$1 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransition(node, context) { + return () => { + const appear = compilerDom.findProp(node, "appear", false, true); + wipMap$1.set(node, !!appear); + }; +} +function ssrProcessTransition(node, context) { + node.children = node.children.filter((c) => c.type !== 3); + const appear = wipMap$1.get(node); + if (appear) { + context.pushStringPart(`<template>`); + processChildren(node, context, false, true); + context.pushStringPart(`</template>`); + } else { + processChildren(node, context, false, true); + } +} + +const wipMap = /* @__PURE__ */ new WeakMap(); +const WIP_SLOT = /* @__PURE__ */ Symbol(); +const componentTypeMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformComponent = (node, context) => { + if (node.type !== 1 || node.tagType !== 1) { + return; + } + const component = compilerDom.resolveComponentType( + node, + context, + true + /* ssr */ + ); + const isDynamicComponent = shared.isObject(component) && component.callee === compilerDom.RESOLVE_DYNAMIC_COMPONENT; + componentTypeMap.set(node, component); + if (shared.isSymbol(component)) { + if (component === compilerDom.SUSPENSE) { + return ssrTransformSuspense(node, context); + } else if (component === compilerDom.TRANSITION_GROUP) { + return ssrTransformTransitionGroup(node, context); + } else if (component === compilerDom.TRANSITION) { + return ssrTransformTransition(node); + } + return; + } + const vnodeBranches = []; + const clonedNode = clone(node); + return function ssrPostTransformComponent() { + if (clonedNode.children.length) { + compilerDom.buildSlots(clonedNode, context, (props, vFor, children) => { + vnodeBranches.push( + createVNodeSlotBranch(props, vFor, children, context) + ); + return compilerDom.createFunctionExpression(void 0); + }); + } + let propsExp = `null`; + if (node.props.length) { + const { props, directives } = compilerDom.buildProps( + node, + context, + void 0, + true, + isDynamicComponent + ); + if (props || directives.length) { + propsExp = buildSSRProps(props, directives, context); + } + } + const wipEntries = []; + wipMap.set(node, wipEntries); + const buildSSRSlotFn = (props, _vForExp, children, loc) => { + const param0 = props && compilerDom.stringifyExpression(props) || `_`; + const fn = compilerDom.createFunctionExpression( + [param0, `_push`, `_parent`, `_scopeId`], + void 0, + // no return, assign body later + true, + // newline + true, + // isSlot + loc + ); + wipEntries.push({ + type: WIP_SLOT, + fn, + children, + // also collect the corresponding vnode branch built earlier + vnodeBranch: vnodeBranches[wipEntries.length] + }); + return fn; + }; + const slots = node.children.length ? compilerDom.buildSlots(node, context, buildSSRSlotFn).slots : `null`; + if (typeof component !== "string") { + node.ssrCodegenNode = compilerDom.createCallExpression( + context.helper(SSR_RENDER_VNODE), + [ + `_push`, + compilerDom.createCallExpression(context.helper(compilerDom.CREATE_VNODE), [ + component, + propsExp, + slots + ]), + `_parent` + ] + ); + } else { + node.ssrCodegenNode = compilerDom.createCallExpression( + context.helper(SSR_RENDER_COMPONENT), + [component, propsExp, slots, `_parent`] + ); + } + }; +}; +function ssrProcessComponent(node, context, parent) { + const component = componentTypeMap.get(node); + if (!node.ssrCodegenNode) { + if (component === compilerDom.TELEPORT) { + return ssrProcessTeleport(node, context); + } else if (component === compilerDom.SUSPENSE) { + return ssrProcessSuspense(node, context); + } else if (component === compilerDom.TRANSITION_GROUP) { + return ssrProcessTransitionGroup(node, context); + } else { + if (parent.type === WIP_SLOT) { + context.pushStringPart(``); + } + if (component === compilerDom.TRANSITION) { + return ssrProcessTransition(node, context); + } + processChildren(node, context); + } + } else { + const wipEntries = wipMap.get(node) || []; + for (let i = 0; i < wipEntries.length; i++) { + const { fn, vnodeBranch } = wipEntries[i]; + fn.body = compilerDom.createIfStatement( + compilerDom.createSimpleExpression(`_push`, false), + processChildrenAsStatement( + wipEntries[i], + context, + false, + true + ), + vnodeBranch + ); + } + if (context.withSlotScopeId) { + node.ssrCodegenNode.arguments.push(`_scopeId`); + } + if (typeof component === "string") { + context.pushStatement( + compilerDom.createCallExpression(`_push`, [node.ssrCodegenNode]) + ); + } else { + context.pushStatement(node.ssrCodegenNode); + } + } +} +const rawOptionsMap = /* @__PURE__ */ new WeakMap(); +const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true); +const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms]; +const vnodeDirectiveTransforms = { + ...baseDirectiveTransforms, + ...compilerDom.DOMDirectiveTransforms +}; +function createVNodeSlotBranch(slotProps, vFor, children, parentContext) { + const rawOptions = rawOptionsMap.get(parentContext.root); + const subOptions = { + ...rawOptions, + // overwrite with vnode-based transforms + nodeTransforms: [ + ...vnodeNodeTransforms, + ...rawOptions.nodeTransforms || [] + ], + directiveTransforms: { + ...vnodeDirectiveTransforms, + ...rawOptions.directiveTransforms || {} + } + }; + const wrapperProps = []; + if (slotProps) { + wrapperProps.push({ + type: 7, + name: "slot", + exp: slotProps, + arg: void 0, + modifiers: [], + loc: compilerDom.locStub + }); + } + if (vFor) { + wrapperProps.push(shared.extend({}, vFor)); + } + const wrapperNode = { + type: 1, + ns: 0, + tag: "template", + tagType: 3, + props: wrapperProps, + children, + loc: compilerDom.locStub, + codegenNode: void 0 + }; + subTransform(wrapperNode, subOptions, parentContext); + return compilerDom.createReturnStatement(children); +} +function subTransform(node, options, parentContext) { + const childRoot = compilerDom.createRoot([node]); + const childContext = compilerDom.createTransformContext(childRoot, options); + childContext.ssr = false; + childContext.scopes = { ...parentContext.scopes }; + childContext.identifiers = { ...parentContext.identifiers }; + childContext.imports = parentContext.imports; + compilerDom.traverseNode(childRoot, childContext); + ["helpers", "components", "directives"].forEach((key) => { + childContext[key].forEach((value, helperKey) => { + if (key === "helpers") { + const parentCount = parentContext.helpers.get(helperKey); + if (parentCount === void 0) { + parentContext.helpers.set(helperKey, value); + } else { + parentContext.helpers.set(helperKey, value + parentCount); + } + } else { + parentContext[key].add(value); + } + }); + }); +} +function clone(v) { + if (shared.isArray(v)) { + return v.map(clone); + } else if (shared.isPlainObject(v)) { + const res = {}; + for (const key in v) { + res[key] = clone(v[key]); + } + return res; + } else { + return v; + } +} + +function ssrCodegenTransform(ast, options) { + const context = createSSRTransformContext(ast, options); + if (options.ssrCssVars) { + const cssContext = compilerDom.createTransformContext(compilerDom.createRoot([]), options); + const varsExp = compilerDom.processExpression( + compilerDom.createSimpleExpression(options.ssrCssVars, false), + cssContext + ); + context.body.push( + compilerDom.createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`]) + ); + Array.from(cssContext.helpers.keys()).forEach((helper) => { + ast.helpers.add(helper); + }); + } + const isFragment = ast.children.length > 1 && ast.children.some((c) => !compilerDom.isText(c)); + processChildren(ast, context, isFragment); + ast.codegenNode = compilerDom.createBlockStatement(context.body); + ast.ssrHelpers = Array.from( + /* @__PURE__ */ new Set([ + ...Array.from(ast.helpers).filter((h) => h in ssrHelpers), + ...context.helpers + ]) + ); + ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers))); +} +function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) { + const body = []; + let currentString = null; + return { + root, + options, + body, + helpers, + withSlotScopeId, + onError: options.onError || ((e) => { + throw e; + }), + helper(name) { + helpers.add(name); + return name; + }, + pushStringPart(part) { + if (!currentString) { + const currentCall = compilerDom.createCallExpression(`_push`); + body.push(currentCall); + currentString = compilerDom.createTemplateLiteral([]); + currentCall.arguments.push(currentString); + } + const bufferedElements = currentString.elements; + const lastItem = bufferedElements[bufferedElements.length - 1]; + if (shared.isString(part) && shared.isString(lastItem)) { + bufferedElements[bufferedElements.length - 1] += part; + } else { + bufferedElements.push(part); + } + }, + pushStatement(statement) { + currentString = null; + body.push(statement); + } + }; +} +function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) { + return createSSRTransformContext( + parent.root, + parent.options, + parent.helpers, + withSlotScopeId + ); +} +function processChildren(parent, context, asFragment = false, disableNestedFragments = false, disableComment = false) { + if (asFragment) { + context.pushStringPart(`<!--[-->`); + } + const { children } = parent; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + switch (child.tagType) { + case 0: + ssrProcessElement(child, context); + break; + case 1: + ssrProcessComponent(child, context, parent); + break; + case 2: + ssrProcessSlotOutlet(child, context); + break; + case 3: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck2 = child; + return exhaustiveCheck2; + } + break; + case 2: + context.pushStringPart(shared.escapeHtml(child.content)); + break; + case 3: + if (!disableComment) { + context.pushStringPart(`<!--${child.content}-->`); + } + break; + case 5: + context.pushStringPart( + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + child.content + ]) + ); + break; + case 9: + ssrProcessIf(child, context, disableNestedFragments, disableComment); + break; + case 11: + ssrProcessFor(child, context, disableNestedFragments); + break; + case 10: + break; + case 12: + case 8: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck = child; + return exhaustiveCheck; + } + } + if (asFragment) { + context.pushStringPart(`<!--]-->`); + } +} +function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) { + const childContext = createChildContext(parentContext, withSlotScopeId); + processChildren(parent, childContext, asFragment); + return compilerDom.createBlockStatement(childContext.body); +} + +const ssrTransformModel = (dir, node, context) => { + const model = dir.exp; + function checkDuplicatedValue() { + const value = compilerDom.findProp(node, "value"); + if (value) { + context.onError( + compilerDom.createDOMCompilerError( + 61, + value.loc + ) + ); + } + } + const processSelectChildren = (children) => { + children.forEach((child) => { + if (child.type === 1) { + processOption(child); + } else if (child.type === 11) { + processSelectChildren(child.children); + } else if (child.type === 9) { + child.branches.forEach((b) => processSelectChildren(b.children)); + } + }); + }; + function processOption(plainNode) { + if (plainNode.tag === "option") { + if (plainNode.props.findIndex((p) => p.name === "selected") === -1) { + const value = findValueBinding(plainNode); + plainNode.ssrCodegenNode.elements.push( + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [ + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(`Array.isArray`, [model]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]), + compilerDom.createSimpleExpression(" selected", true), + compilerDom.createSimpleExpression("", true), + false + ) + ); + } + } else if (plainNode.tag === "optgroup") { + processSelectChildren(plainNode.children); + } + } + if (node.tagType === 0) { + const res = { props: [] }; + if (node.tag === "input") { + const defaultProps = [ + // default value binding for text type inputs + compilerDom.createObjectProperty(`value`, model) + ]; + const type = compilerDom.findProp(node, "type"); + if (type) { + const value = findValueBinding(node); + if (type.type === 7) { + res.ssrTagParts = [ + compilerDom.createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [ + type.exp, + model, + value + ]) + ]; + } else if (type.value) { + switch (type.value.content) { + case "radio": + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]; + break; + case "checkbox": + const trueValueBinding = compilerDom.findProp(node, "true-value"); + if (trueValueBinding) { + const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp; + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + trueValue + ]) + ) + ]; + } else { + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(`Array.isArray`, [model]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + model + ) + ) + ]; + } + break; + case "file": + context.onError( + compilerDom.createDOMCompilerError( + 60, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + res.props = defaultProps; + break; + } + } + } else if (compilerDom.hasDynamicKeyVBind(node)) ; else { + checkDuplicatedValue(); + res.props = defaultProps; + } + } else if (node.tag === "textarea") { + checkDuplicatedValue(); + node.children = [compilerDom.createInterpolation(model, model.loc)]; + } else if (node.tag === "select") { + processSelectChildren(node.children); + } else { + context.onError( + compilerDom.createDOMCompilerError( + 58, + dir.loc + ) + ); + } + return res; + } else { + return compilerDom.transformModel(dir, node, context); + } +}; +function findValueBinding(node) { + const valueBinding = compilerDom.findProp(node, "value"); + return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : compilerDom.createSimpleExpression(valueBinding.value.content, true) : compilerDom.createSimpleExpression(`null`, false); +} + +const ssrTransformShow = (dir, node, context) => { + if (!dir.exp) { + context.onError( + compilerDom.createDOMCompilerError(62) + ); + } + return { + props: [ + compilerDom.createObjectProperty( + `style`, + compilerDom.createConditionalExpression( + dir.exp, + compilerDom.createSimpleExpression(`null`, false), + compilerDom.createObjectExpression([ + compilerDom.createObjectProperty( + `display`, + compilerDom.createSimpleExpression(`none`, true) + ) + ]), + false + ) + ) + ] + }; +}; + +const filterChild = (node) => node.children.filter((n) => !compilerDom.isCommentOrWhitespace(n)); +const hasSingleChild = (node) => filterChild(node).length === 1; +const ssrInjectFallthroughAttrs = (node, context) => { + if (node.type === 0) { + context.identifiers._attrs = 1; + } + if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) { + const rootChildren = filterChild(context.root); + if (rootChildren.length === 1 && rootChildren[0] === node) { + if (hasSingleChild(node)) { + injectFallthroughAttrs(node.children[0]); + } + return; + } + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10 && hasSingleChild(node)) { + let hasEncounteredIf = false; + for (const c of filterChild(parent)) { + if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) { + if (hasEncounteredIf) return; + hasEncounteredIf = true; + } else if ( + // node before v-if + !hasEncounteredIf || // non else nodes + !(c.type === 1 && compilerDom.findDir(c, /else/, true)) + ) { + return; + } + } + injectFallthroughAttrs(node.children[0]); + } else if (hasSingleChild(parent)) { + injectFallthroughAttrs(node); + } +}; +function injectFallthroughAttrs(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: compilerDom.createSimpleExpression(`_attrs`, false), + modifiers: [], + loc: compilerDom.locStub + }); + } +} + +const ssrInjectCssVars = (node, context) => { + if (!context.ssrCssVars) { + return; + } + if (node.type === 0) { + context.identifiers._cssVars = 1; + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10) { + for (const child of node.children) { + injectCssVars(child); + } + } else { + injectCssVars(node); + } +}; +function injectCssVars(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { + if (node.tag === "suspense" || node.tag === "Suspense") { + for (const child of node.children) { + if (child.type === 1 && child.tagType === 3) { + child.children.forEach(injectCssVars); + } else { + injectCssVars(child); + } + } + } else { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: compilerDom.createSimpleExpression(`_cssVars`, false), + modifiers: [], + loc: compilerDom.locStub + }); + } + } +} + +function compile(source, options = {}) { + options = { + ...options, + ...compilerDom.parserOptions, + ssr: true, + inSSR: true, + scopeId: options.mode === "function" ? null : options.scopeId, + // always prefix since compiler-ssr doesn't have size concern + prefixIdentifiers: true, + // disable optimizations that are unnecessary for ssr + cacheHandlers: false, + hoistStatic: false + }; + const ast = typeof source === "string" ? compilerDom.baseParse(source, options) : source; + rawOptionsMap.set(ast, options); + compilerDom.transform(ast, { + ...options, + hoistStatic: false, + nodeTransforms: [ + compilerDom.transformVBindShorthand, + ssrTransformIf, + ssrTransformFor, + compilerDom.trackVForSlotScopes, + compilerDom.transformExpression, + ssrTransformSlotOutlet, + ssrInjectFallthroughAttrs, + ssrInjectCssVars, + ssrTransformElement, + ssrTransformComponent, + compilerDom.trackSlotScopes, + compilerDom.transformStyle, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: { + // reusing core v-bind + bind: compilerDom.transformBind, + on: compilerDom.transformOn, + // model and show have dedicated SSR handling + model: ssrTransformModel, + show: ssrTransformShow, + // the following are ignored during SSR + // on: noopDirectiveTransform, + cloak: compilerDom.noopDirectiveTransform, + once: compilerDom.noopDirectiveTransform, + memo: compilerDom.noopDirectiveTransform, + ...options.directiveTransforms || {} + // user transforms + } + }); + ssrCodegenTransform(ast, options); + return compilerDom.generate(ast, options); +} + +exports.compile = compile; diff --git a/apps/web/.output/server/node_modules/@vue/compiler-ssr/package.json b/apps/web/.output/server/node_modules/@vue/compiler-ssr/package.json new file mode 100644 index 0000000..c5a3148 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/compiler-ssr/package.json @@ -0,0 +1,34 @@ +{ + "name": "@vue/compiler-ssr", + "version": "3.5.44", + "description": "@vue/compiler-ssr", + "main": "dist/compiler-ssr.cjs.js", + "types": "dist/compiler-ssr.d.ts", + "files": [ + "dist" + ], + "buildOptions": { + "prod": false, + "formats": [ + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-ssr" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme", + "dependencies": { + "@vue/shared": "3.5.44", + "@vue/compiler-dom": "3.5.44" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/devtools-api/dist/index-node.js b/apps/web/.output/server/node_modules/@vue/devtools-api/dist/index-node.js new file mode 100644 index 0000000..664f850 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/devtools-api/dist/index-node.js @@ -0,0 +1,13 @@ +//#region src/index-node.ts +function addCustomCommand() {} +function addCustomTab() {} +function onDevToolsClientConnected(_fn) { + return new Promise(() => {}); +} +function onDevToolsConnected(_fn) { + return new Promise(() => {}); +} +function removeCustomCommand() {} +function setupDevToolsPlugin(_pluginDescriptor, _setupFn) {} +//#endregion +export { addCustomCommand, addCustomTab, onDevToolsClientConnected, onDevToolsConnected, removeCustomCommand, setupDevToolsPlugin, setupDevToolsPlugin as setupDevtoolsPlugin }; diff --git a/apps/web/.output/server/node_modules/@vue/devtools-api/package.json b/apps/web/.output/server/node_modules/@vue/devtools-api/package.json new file mode 100644 index 0000000..855dbf8 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/devtools-api/package.json @@ -0,0 +1,38 @@ +{ + "name": "@vue/devtools-api", + "type": "module", + "version": "8.2.1", + "author": "webfansplz", + "license": "MIT", + "repository": { + "directory": "packages/devtools-api", + "type": "git", + "url": "git+https://github.com/vuejs/devtools.git" + }, + "sideEffects": false, + "exports": { + ".": { + "node": { + "import": "./dist/index-node.js", + "require": "./dist/index-node.cjs" + }, + "import": "./dist/index.js", + "require": "./dist/index.cjs" + } + }, + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "unpkg": "dist/vue-devtools-api.global.js", + "jsdelivr": "dist/vue-devtools-api.global.js", + "files": [ + "dist" + ], + "dependencies": { + "@vue/devtools-kit": "^8.2.1" + }, + "scripts": { + "build": "tsdown --clean", + "prepare:type": "tsdown --dts-only", + "stub": "tsdown --watch --onSuccess 'tsdown --dts-only'" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js new file mode 100644 index 0000000..9984d36 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js @@ -0,0 +1,1933 @@ +/** +* @vue/reactivity v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); + +let activeEffectScope; +class EffectScope { + // TODO isolatedDeclarations "__v_skip" + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this._warnOnRun = true; + this.__v_skip = true; + if (!detached && activeEffectScope) { + if (activeEffectScope.active) { + this.parent = activeEffectScope; + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } else { + this._active = false; + this._warnOnRun = false; + } + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + const scopes = this.scopes.slice(); + for (i = 0, l = scopes.length; i < l; i++) { + scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + const scopes = this.scopes.slice(); + for (i = 0, l = scopes.length; i < l; i++) { + scopes[i].resume(); + } + } + const effects = this.effects.slice(); + for (i = 0, l = effects.length; i < l; i++) { + effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + if (activeEffectScope === this) { + activeEffectScope = this.prevScope; + } else { + let current = activeEffectScope; + while (current) { + if (current.prevScope === this) { + current.prevScope = this.prevScope; + break; + } + current = current.prevScope; + } + } + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + const scopes = this.scopes.slice(); + for (i = 0, l = scopes.length; i < l; i++) { + scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } +} + +let activeSub; +const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED", + "EVALUATED": 128, + "128": "EVALUATED" +}; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope) { + if (activeEffectScope.active) { + activeEffectScope.effects.push(this); + } else { + this.flags &= -2; + } + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || shared.hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + shared.extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (false) ; + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = /* @__PURE__ */ Symbol( + "" +); +const MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol( + "" +); +const ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol( + "" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track(); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger(); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = shared.isArray(target); + const isArrayIndex = targetIsArray && shared.isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !shared.isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (shared.isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + if (isShallow(array)) return raw; + if (!isReadonly(array)) return raw.map(toReactive); + return isReactive(array) ? raw.map((item) => toReadonly(toReactive(item))) : raw.map(toReadonly); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +function toWrapped(target, item) { + if (isReadonly(target)) { + return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item); + } + return toReactive(item); +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, (item) => toWrapped(this, item)); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => shared.isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toWrapped(this, value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply( + this, + "filter", + fn, + thisArg, + (v) => v.map((item) => toWrapped(this, item)), + arguments + ); + }, + find(fn, thisArg) { + return apply( + this, + "find", + fn, + thisArg, + (item) => toWrapped(this, item), + arguments + ); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply( + this, + "findLast", + fn, + thisArg, + (item) => toWrapped(this, item), + arguments + ); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimization required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", (item) => toWrapped(this, item)); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const methodFn = arr[method]; + const iter = methodFn.call(arr); + if (arr !== self && !isShallow(self)) { + if (iter[Symbol.toStringTag] === "Array Iterator") { + const wrapped = Object.create(Object.getPrototypeOf(iter)); + wrapped.next = () => wrapResult(iter.next(), wrapValue); + if (methodFn !== arrayProto[method]) { + Object.defineProperties(wrapped, { + return: { + get() { + const fn = iter.return; + return typeof fn === "function" ? fn.bind(iter) : fn; + } + }, + throw: { + get() { + const fn = iter.throw; + return typeof fn === "function" ? fn.bind(iter) : fn; + } + } + }); + } + return wrapped; + } + iter._next = iter.next; + iter.next = () => wrapResult(iter._next(), wrapValue); + } + return iter; +} +function wrapResult(result, wrapValue) { + if (!result.done) { + result.value = wrapValue(result.value); + } + return result; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toWrapped(self, item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + let wrappedFn = fn; + let wrapInitialAccumulator = false; + if (arr !== self) { + if (needsWrap) { + wrapInitialAccumulator = args.length === 0; + wrappedFn = function(acc, item, index) { + if (wrapInitialAccumulator) { + wrapInitialAccumulator = false; + acc = toWrapped(self, acc); + } + return fn.call(this, acc, toWrapped(self, item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + const result = arr[method](wrappedFn, ...args); + return wrapInitialAccumulator ? toWrapped(self, result) : result; +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) +); +function hasOwnProperty(key) { + if (!shared.isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = shared.isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + const value = targetIsArray && shared.isIntegerKey(key) ? res : res.value; + return isReadonly2 && shared.isObject(value) ? readonly(value) : value; + } + if (shared.isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + const isArrayWithIntegerKey = shared.isArray(target) && shared.isIntegerKey(key); + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return true; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : shared.hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver) && result) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = shared.hasOwn(target, key); + target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!shared.isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + shared.isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + return true; + } + deleteProperty(target, key) { + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = shared.isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return shared.extend( + // inheriting all iterator properties + Object.create(innerIterator), + { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + } + } + ); + }; +} +function createReadonlyMethod(type) { + return function(...args) { + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return target.size; + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + shared.extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + const target = toRaw(this); + const proto = getProto(target); + const rawValue = toRaw(value); + const valueToAdd = !shallow && !isShallow(value) && !isReadonly(value) ? rawValue : value; + const hadKey = proto.has.call(target, valueToAdd) || shared.hasChanged(value, valueToAdd) && proto.has.call(target, value) || shared.hasChanged(rawValue, valueToAdd) && proto.has.call(target, rawValue); + if (!hadKey) { + target.add(valueToAdd); + trigger(target, "add", valueToAdd, valueToAdd); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +// @__NO_SIDE_EFFECTS__ +function reactive(target) { + if (/* @__PURE__ */ isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +// @__NO_SIDE_EFFECTS__ +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +// @__NO_SIDE_EFFECTS__ +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +// @__NO_SIDE_EFFECTS__ +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!shared.isObject(target)) { + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + if (target["__v_skip"] || !Object.isExtensible(target)) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = targetTypeMap(shared.toRawType(target)); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +// @__NO_SIDE_EFFECTS__ +function isReactive(value) { + if (/* @__PURE__ */ isReadonly(value)) { + return /* @__PURE__ */ isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +// @__NO_SIDE_EFFECTS__ +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +// @__NO_SIDE_EFFECTS__ +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +// @__NO_SIDE_EFFECTS__ +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +// @__NO_SIDE_EFFECTS__ +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? /* @__PURE__ */ toRaw(raw) : observed; +} +function markRaw(value) { + if (!shared.hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + shared.def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => shared.isObject(value) ? /* @__PURE__ */ reactive(value) : value; +const toReadonly = (value) => shared.isObject(value) ? /* @__PURE__ */ readonly(value) : value; + +// @__NO_SIDE_EFFECTS__ +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +// @__NO_SIDE_EFFECTS__ +function ref(value) { + return createRef(value, false); +} +// @__NO_SIDE_EFFECTS__ +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (/* @__PURE__ */ isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track(); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (shared.hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger(); + } + } + } +} +function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger(); + } + } +} +function unref(ref2) { + return /* @__PURE__ */ isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return shared.isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (/* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +// @__NO_SIDE_EFFECTS__ +function toRefs(object) { + const ret = shared.isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, key, _defaultValue) { + this._object = _object; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + this._key = shared.isSymbol(key) ? key : String(key); + this._raw = toRaw(_object); + let shallow = true; + let obj = _object; + if (!shared.isArray(_object) || shared.isSymbol(this._key) || !shared.isIntegerKey(this._key)) { + do { + shallow = !isProxy(obj) || isShallow(obj); + } while (shallow && (obj = obj["__v_raw"])); + } + this._shallow = shallow; + } + get value() { + let val = this._object[this._key]; + if (this._shallow) { + val = unref(val); + } + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + if (this._shallow && /* @__PURE__ */ isRef(this._raw[this._key])) { + const nestedRef = this._object[this._key]; + if (/* @__PURE__ */ isRef(nestedRef)) { + nestedRef.value = newVal; + return; + } + } + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(this._raw, this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +} +// @__NO_SIDE_EFFECTS__ +function toRef(source, key, defaultValue) { + if (/* @__PURE__ */ isRef(source)) { + return source; + } else if (shared.isFunction(source)) { + return new GetterRefImpl(source); + } else if (shared.isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return /* @__PURE__ */ ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + return new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track(); + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } + } +} +// @__NO_SIDE_EFFECTS__ +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (shared.isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + return cRef; +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; +const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" +}; + +const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" +}; +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } +} +function watch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (shared.isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (shared.isFunction(s)) { + return call ? call(s, 2) : s(); + } else ; + }); + } else if (shared.isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = shared.NOOP; + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + shared.remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + try { + return _cb(...args); + } finally { + watchHandle(); + } + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue))) { + const currentWatcher = activeWatcher; + pauseTracking(); + try { + if (cleanup) { + cleanup(); + } + activeWatcher = effect; + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + resetTracking(); + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !shared.isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Map(); + if ((seen.get(value) || 0) >= depth) { + return value; + } + seen.set(value, depth); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (shared.isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (shared.isSet(value) || shared.isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (shared.isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +exports.ARRAY_ITERATE_KEY = ARRAY_ITERATE_KEY; +exports.EffectFlags = EffectFlags; +exports.EffectScope = EffectScope; +exports.ITERATE_KEY = ITERATE_KEY; +exports.MAP_KEY_ITERATE_KEY = MAP_KEY_ITERATE_KEY; +exports.ReactiveEffect = ReactiveEffect; +exports.ReactiveFlags = ReactiveFlags; +exports.TrackOpTypes = TrackOpTypes; +exports.TriggerOpTypes = TriggerOpTypes; +exports.WatchErrorCodes = WatchErrorCodes; +exports.computed = computed; +exports.customRef = customRef; +exports.effect = effect; +exports.effectScope = effectScope; +exports.enableTracking = enableTracking; +exports.getCurrentScope = getCurrentScope; +exports.getCurrentWatcher = getCurrentWatcher; +exports.isProxy = isProxy; +exports.isReactive = isReactive; +exports.isReadonly = isReadonly; +exports.isRef = isRef; +exports.isShallow = isShallow; +exports.markRaw = markRaw; +exports.onEffectCleanup = onEffectCleanup; +exports.onScopeDispose = onScopeDispose; +exports.onWatcherCleanup = onWatcherCleanup; +exports.pauseTracking = pauseTracking; +exports.proxyRefs = proxyRefs; +exports.reactive = reactive; +exports.reactiveReadArray = reactiveReadArray; +exports.readonly = readonly; +exports.ref = ref; +exports.resetTracking = resetTracking; +exports.shallowReactive = shallowReactive; +exports.shallowReadArray = shallowReadArray; +exports.shallowReadonly = shallowReadonly; +exports.shallowRef = shallowRef; +exports.stop = stop; +exports.toRaw = toRaw; +exports.toReactive = toReactive; +exports.toReadonly = toReadonly; +exports.toRef = toRef; +exports.toRefs = toRefs; +exports.toValue = toValue; +exports.track = track; +exports.traverse = traverse; +exports.trigger = trigger; +exports.triggerRef = triggerRef; +exports.unref = unref; +exports.watch = watch; diff --git a/apps/web/.output/server/node_modules/@vue/reactivity/package.json b/apps/web/.output/server/node_modules/@vue/reactivity/package.json new file mode 100644 index 0000000..560f3ea --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/reactivity/package.json @@ -0,0 +1,55 @@ +{ + "name": "@vue/reactivity", + "version": "3.5.44", + "description": "@vue/reactivity", + "main": "index.js", + "module": "dist/reactivity.esm-bundler.js", + "types": "dist/reactivity.d.ts", + "unpkg": "dist/reactivity.global.js", + "jsdelivr": "dist/reactivity.global.js", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/reactivity.d.ts", + "node": { + "production": "./dist/reactivity.cjs.prod.js", + "development": "./dist/reactivity.cjs.js", + "default": "./dist/reactivity.cjs.prod.js" + }, + "module": "./dist/reactivity.esm-bundler.js", + "import": "./dist/reactivity.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/reactivity" + }, + "buildOptions": { + "name": "VueReactivity", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme", + "dependencies": { + "@vue/shared": "3.5.44" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js new file mode 100644 index 0000000..b81dd02 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js @@ -0,0 +1,7085 @@ +/** +* @vue/runtime-core v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var reactivity = require('@vue/reactivity'); +var shared = require('@vue/shared'); + +function pushWarningContext(vnode) { +} +function popWarningContext() { +} +function assertNumber(val, type) { + return; +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (shared.isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && shared.isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (shared.isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || shared.EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + reactivity.pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + reactivity.resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + if (throwInProd) { + throw err; + } else { + console.error(err); + } +} + +const queue = []; +let flushIndex = -1; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!shared.isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + for (let i = 0; i < cb.length; i++) { + pendingPostFlushCbs.push(cb[i]); + } + } + queueFlush(); +} +function flushPreFlushCbs(instance, minUid, seen, i = flushIndex + 1) { + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid || minUid !== void 0 && !(cb.id >= minUid)) { + continue; + } + queue.splice(i, 1); + i = instance ? i - 1 : flushIndex; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +function flushPostFlushCbs(seen, skip, minUid = 0) { + if (pendingPostFlushCbs.length) { + let cbs = pendingPostFlushCbs; + let kept = 0; + if (skip) { + cbs = []; + for (let i = 0; i < pendingPostFlushCbs.length; i++) { + const cb = pendingPostFlushCbs[i]; + if (cb.i !== void 0 ? !cb.i || cb.i.uid < minUid : skip.has(cb)) { + pendingPostFlushCbs[kept++] = cb; + } else { + cbs.push(cb); + } + } + } + const deduped = [...new Set(cbs)].sort((a, b) => getId(a) - getId(b)); + pendingPostFlushCbs.length = kept; + if (activePostFlushCbs) { + for (let i = 0; i < deduped.length; i++) { + activePostFlushCbs.push(deduped[i]); + } + return; + } + activePostFlushCbs = deduped; + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +let isFlushing = false; +function flushOnAppMount(fn, minUid) { + if (isFlushing) { + fn(); + return; + } + const queued = minUid === void 0 ? void 0 : new Set(pendingPostFlushCbs); + fn(); + isFlushing = true; + try { + flushPreFlushCbs(void 0, minUid); + flushPostFlushCbs(void 0, queued, minUid); + } finally { + isFlushing = false; + } +} +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (false) ; + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(); + } + } +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + const prevStackSize = blockStack.length; + let res; + try { + res = fn(...args); + } finally { + for (let i = blockStack.length; i > prevStackSize; i--) closeBlock(); + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; + if (dir) { + if (shared.isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + reactivity.traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + reactivity.pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + reactivity.resetTracking(); + } + } +} + +function provide(key, value) { + if (currentInstance) { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else ; + } +} +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} + +const ssrContextKey = /* @__PURE__ */ Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "post" } + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "sync" } + ); +} +function watch(source, cb, options) { + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + const baseWatchOptions = shared.extend({}, options); + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = shared.NOOP; + watchStopHandle.resume = shared.NOOP; + watchStopHandle.pause = shared.NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + job.i = instance; + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = reactivity.watch(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (shared.isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +const pendingMounts = /* @__PURE__ */ new WeakMap(); +const TeleportEndKey = /* @__PURE__ */ Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (shared.isString(targetSelector)) { + if (!select) { + return null; + } else { + const target = select(targetSelector); + return target; + } + } else { + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment, parentNode } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { dynamicChildren } = n2; + const mount = (vnode, container2, anchor2) => { + if (vnode.shapeFlag & 16) { + mountChildren( + vnode.children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = (vnode = n2) => { + const disabled2 = isTeleportDisabled(vnode.props); + const target = vnode.target = resolveTarget(vnode.props, querySelector); + const targetAnchor = prepareAnchor(target, vnode, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (parentComponent && parentComponent.isCE) { + (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target); + } + if (!disabled2) { + mount(vnode, target, targetAnchor); + updateCssVars(vnode, false); + } + } + }; + const queuePendingMount = (vnode) => { + const mountJob = () => { + if (pendingMounts.get(vnode) !== mountJob) return; + pendingMounts.delete(vnode); + if (isTeleportDisabled(vnode.props)) { + const mountContainer = parentNode(vnode.el) || container; + mount(vnode, mountContainer, vnode.anchor); + updateCssVars(vnode, true); + } + mountToTarget(vnode); + }; + pendingMounts.set(vnode, mountJob); + queuePostRenderEffect(mountJob, parentSuspense); + }; + if (n1 == null) { + const placeholder = n2.el = createText(""); + const mainAnchor = n2.anchor = createText(""); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + if (isTeleportDeferred(n2.props) || parentSuspense && parentSuspense.pendingBranch) { + queuePendingMount(n2); + return; + } + if (disabled) { + mount(n2, container, mainAnchor); + updateCssVars(n2, true); + } + mountToTarget(); + } else { + n2.el = n1.el; + const mainAnchor = n2.anchor = n1.anchor; + const pendingMount = pendingMounts.get(n1); + if (pendingMount) { + pendingMount.flags |= 8; + pendingMounts.delete(n1); + queuePendingMount(n2); + return; + } + n2.targetStart = n1.targetStart; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, true); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = resolveTarget(n2.props, querySelector); + if (nextTarget) { + n2.target = nextTarget; + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + const disabled = isTeleportDisabled(props); + const shouldRemove = doRemove || !disabled; + const pendingMount = pendingMounts.get(vnode); + if (pendingMount) { + pendingMount.flags |= 8; + pendingMounts.delete(vnode); + } + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (!pendingMount && (disabled || target) && shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + if (vnode.targetStart) { + insert(vnode.targetStart, container, parentAnchor); + } + insert(vnode.targetAnchor, container, parentAnchor); + parentAnchor = vnode.targetAnchor; + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!pendingMounts.has(vnode) && (!isReorder || isTeleportDisabled(props))) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + function hydrateAnchor(target2, targetNode) { + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + } + function hydrateDisabledTeleport(node2, vnode2) { + vnode2.anchor = hydrateChildren( + nextSibling(node2), + vnode2, + parentNode(node2), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + const disabled = isTeleportDisabled(vnode.props); + if (target) { + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + hydrateDisabledTeleport(node, vnode); + hydrateAnchor(target, targetNode); + if (!vnode.targetAnchor) { + prepareAnchor( + target, + vnode, + createText, + insert, + // if target is the same as the main view, insert anchors before current node + // to avoid hydrating mismatch + parentNode(node) === target ? node : null + ); + } + } else { + vnode.anchor = nextSibling(node); + hydrateAnchor(target, targetNode); + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } else if (disabled) { + if (vnode.shapeFlag & 16) { + hydrateDisabledTeleport(node, vnode); + vnode.targetStart = node; + vnode.targetAnchor = nextSibling(node); + } + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert, anchor = null) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target, anchor); + insert(targetAnchor, target, anchor); + } + return targetAnchor; +} + +const leaveCbKey = /* @__PURE__ */ Symbol("_leaveCb"); +const enterCbKey = /* @__PURE__ */ Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + const child = children && children.length ? findNonCommentChild(children) : ( + // Keep explicit default-slot conditionals on the same transition path + // as regular v-if branches, which render a comment placeholder. + instance.subTree ? createCommentVNode() : void 0 + ); + if (!child) { + return; + } + const rawProps = reactivity.toRaw(props); + const { mode } = rawProps; + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && getTransitionRoot(instance.subTree)) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } +}; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + for (const c of children) { + if (c.type !== Comment) { + child = c; + break; + } + } + } + return child; +} +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (shared.isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) { + let leavingCb = leavingVNode.el[leaveCbKey]; + if (!leavingCb) { + const leavingRoot = getTransitionRoot(leavingVNode); + leavingCb = leavingRoot && leavingRoot.el[leaveCbKey]; + } + if (leavingCb) { + leavingCb(); + } + } + callHook(hook, [el]); + }, + enter(el) { + if (leavingVNodesCache[key] === vnode) return; + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + el[enterCbKey] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + const done = el[enterCbKey].bind(null, false); + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + const done = el[leaveCbKey].bind(null, false); + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && shared.isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + const subTree = vnode.component.subTree; + setTransitionHooks( + isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, + hooks + ); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + if (vnode.type === Fragment && shared.isArray(vnode.children)) { + const child = filterSingleRoot(vnode.children, false); + if (child) { + setTransitionHooks(child, hooks); + } + } + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} +function getTransitionRoot(vnode) { + if (vnode.component) { + return getTransitionRoot(vnode.component.subTree); + } + if (vnode.type === Fragment) { + const child = shared.isArray(vnode.children) && filterSingleRoot(vnode.children, false); + return child ? getTransitionRoot(child) : void 0; + } + if (vnode.type !== Comment) { + return vnode; + } +} + +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return shared.isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = reactivity.shallowRef(null); + if (i) { + const refs = i.refs === shared.EMPTY_OBJ ? i.refs = {} : i.refs; + { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } + const ret = r; + return ret; +} +function isTemplateRefKey(refs, key) { + let desc; + return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable); +} + +const pendingSetRefMap = /* @__PURE__ */ new WeakMap(); +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (shared.isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = reactivity.toRaw(setupState); + const canSetSetupRef = setupState === shared.EMPTY_OBJ ? shared.NO : (key) => { + if (isTemplateRefKey(refs, key)) { + return false; + } + return shared.hasOwn(rawSetupState, key); + }; + const canSetRef = (ref2, key) => { + if (key && isTemplateRefKey(refs, key)) { + return false; + } + return true; + }; + if (oldRef != null && oldRef !== ref) { + invalidatePendingSetRef(oldRawRef); + if (shared.isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (reactivity.isRef(oldRef)) { + const oldRawRefAtom = oldRawRef; + if (canSetRef(oldRef, oldRawRefAtom.k)) { + oldRef.value = null; + } + if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null; + } + } + if (shared.isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = shared.isString(ref); + const _isRef = reactivity.isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef() || !rawRef.k ? ref.value : refs[rawRef.k]; + if (isUnmount) { + shared.isArray(existing) && shared.remove(existing, refValue); + } else { + if (!shared.isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + const newVal = [refValue]; + if (canSetRef(ref, rawRef.k)) { + ref.value = newVal; + } + if (rawRef.k) refs[rawRef.k] = newVal; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + if (canSetRef(ref, rawRef.k)) { + ref.value = value; + } + if (rawRef.k) refs[rawRef.k] = value; + } else ; + }; + if (value) { + const job = () => { + doSet(); + pendingSetRefMap.delete(rawRef); + }; + job.id = -1; + pendingSetRefMap.set(rawRef, job); + queuePostRenderEffect(job, parentSuspense); + } else { + invalidatePendingSetRef(rawRef); + doSet(); + } + } + } +} +function invalidatePendingSetRef(rawRef) { + const pendingSetRef = pendingSetRefMap.get(rawRef); + if (pendingSetRef) { + pendingSetRef.flags |= 8; + pendingSetRefMap.delete(rawRef); + } +} + +let hasLoggedMismatchError = false; +const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +const isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if ((isAsyncWrapper(vnode) || vnode.component.asyncDep) && !vnode.component.subTree) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Static); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode( + node.nodeType === 8 ? Comment : "div" + ); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else ; + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { + type, + dynamicProps, + props, + patchFlag, + shapeFlag, + dirs, + transition + } = vnode; + const forcePatch = type === "input" || type === "option"; + const hasDynamicProps = !!dynamicProps; + if (forcePatch || hasDynamicProps || patchFlag !== -1) { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && !isMismatchAllowed(el, 1 /* CHILDREN */)) { + logMismatchError(); + } + while (next) { + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + const { textContent } = el; + if (textContent !== clientText && // innerHTML normalize \r\n or \r into a single \n in the DOM + textContent !== clientText.replace(/\r\n|\r/g, "\n")) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + if (forcePatch || hasDynamicProps || !optimized || patchFlag & (16 | 32)) { + const isCustomElement = el.tagName.includes("-"); + const namespace = el.namespaceURI.includes("svg") ? "svg" : el.namespaceURI.includes("MathML") ? "mathml" : void 0; + for (const key in props) { + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement && !shared.isReservedProp(key) || dynamicProps && dynamicProps.includes(key)) { + if (isUnchangedResourceProp(el, key, props[key])) { + continue; + } + patchProp(el, key, null, props[key], namespace, parentComponent); + } + } + } else if (props.onClick) { + patchProp( + el, + "onClick", + null, + props.onClick, + void 0, + parentComponent + ); + } else if (patchFlag & 4 && reactivity.isReactive(props.style)) { + for (const key in props.style) props.style[key]; + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasCheckedMismatch = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!hasCheckedMismatch) { + hasCheckedMismatch = true; + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + logMismatchError(); + } + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isNodeMismatchAllowed(node, vnode)) { + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; +} +const resourceProps = /* @__PURE__ */ new Set(["src", "srcset", "href", "poster"]); +function isUnchangedResourceProp(el, key, clientValue) { + if (!resourceProps.has(key)) { + return false; + } + return el.getAttribute(key) === (clientValue == null ? null : `${clientValue}`); +} +const allowMismatchAttr = "data-allow-mismatch"; +const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + return isMismatchAllowedByAttr( + el && el.getAttribute(allowMismatchAttr), + allowedType + ); +} +function isMismatchAllowedByAttr(allowedAttr, allowedType) { + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } +} +function isNodeMismatchAllowed(node, vnode) { + return isMismatchAllowed(node.parentElement, 1 /* CHILDREN */) || isMismatchAllowedByNode(node) || isMismatchAllowedByVNode(vnode); +} +function isMismatchAllowedByNode(node) { + return node.nodeType === 1 && isMismatchAllowedByAttr( + node.getAttribute(allowMismatchAttr), + 1 /* CHILDREN */ + ); +} +function isMismatchAllowedByVNode({ props }) { + const allowedAttr = props && props[allowMismatchAttr]; + return typeof allowedAttr === "string" && isMismatchAllowedByAttr(allowedAttr, 1 /* CHILDREN */); +} + +const requestIdleCallback = shared.getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +const cancelIdleCallback = shared.getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + const observe = (el) => { + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + if (getComputedStyle(el).display === "contents") { + for (let i = 0; i < el.children.length; i++) { + if (observe(el.children[i]) === false) return false; + } + } + ob.observe(el); + }; + forEach((el) => { + if (!(el instanceof Element)) return; + return observe(el); + }); + return () => ob.disconnect(); +}; +const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } +}; +const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (shared.isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (shared.isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + const wasConnected = el.isConnected; + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + return; + } + if (!el.parentNode || wasConnected && !el.isConnected) return; + hydrate(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = reactivity.ref(false); + const error = reactivity.ref(); + const delayed = reactivity.ref(!!delay); + let timeoutTimer; + let delayTimer; + onUnmounted(() => { + if (timeoutTimer != null) clearTimeout(timeoutTimer); + if (delayTimer != null) clearTimeout(delayTimer); + }); + if (delay) { + delayTimer = setTimeout(() => { + if (instance.isUnmounted) return; + delayed.value = false; + }, delay); + } + if (timeout != null) { + timeoutTimer = setTimeout(() => { + if (instance.isUnmounted) return; + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + if (instance.isUnmounted) return; + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + if (instance.isUnmounted) { + pendingRequest = null; + return; + } + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createInnerComp( + loadingComponent, + instance + ); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + shared.invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + shared.invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type + ); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + if (cached) resetShapeFlag(cached); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + const vnode = getInnerChild(instance.subTree); + if (vnode.component) { + cache.set(pendingCacheKey, vnode); + } + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (shared.isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (shared.isString(pattern)) { + return pattern.split(",").includes(name); + } else if (shared.isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + shared.remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + reactivity.pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + reactivity.resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook( + "bu" +); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook( + "bum" +); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook( + "sp" +); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (shared.isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + return res; + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = shared.isArray(source); + if (sourceIsArray || shared.isString(source)) { + const sourceIsReactiveArray = sourceIsArray && reactivity.isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !reactivity.isShallow(source); + isReadonlySource = reactivity.isReadonly(source); + source = reactivity.shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? reactivity.toReadonly(reactivity.toReactive(source[i])) : reactivity.toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source) || source < 0) { + ret = []; + } else { + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (shared.isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props, fallback, noSlotted, branchKey) { + if (props == null) props = {}; + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + const slotProps = branchKey != null && props.key == null ? shared.extend({}, props, { key: branchKey }) : props; + const hasProps = Object.keys(slotProps).length > 0; + if (name !== "default") slotProps.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", slotProps, fallback && fallback())], + hasProps ? -2 : 64 + ); + } + let slot = slots[name]; + if (slot && slot._c) { + slot._d = false; + } + const prevStackSize = blockStack.length; + openBlock(); + let rendered; + try { + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || branchKey || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + rendered = createBlock( + Fragment, + { + key: (slotKey && !shared.isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + } catch (err) { + for (let i = blockStack.length; i > prevStackSize; i--) closeBlock(); + throw err; + } finally { + if (slot && slot._c) { + slot._d = true; + } + } + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => i.props, + $attrs: (i) => i.attrs, + $slots: (i) => i.slots, + $refs: (i) => i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if (shared.hasOwn(props, key)) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + reactivity.track(instance.attrs, "get", ""); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else ; + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + data[key] = value; + return true; + } else if (shared.hasOwn(instance.props, key)) { + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + return false; + } else { + { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, props, type } + }, key) { + let cssModules; + return !!(accessCache[key] || data !== shared.EMPTY_OBJ && key[0] !== "$" && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || shared.hasOwn(props, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (shared.hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !shared.isGloballyAllowed(key); + return has; + } +}); + +function defineProps() { + return null; +} +function defineEmits() { + return null; +} +function defineExpose(exposed) { +} +function defineOptions(options) { +} +function defineSlots() { + return null; +} +function defineModel() { +} +function withDefaults(props, defaults) { + return null; +} +function useSlots() { + return getContext().slots; +} +function useAttrs() { + return getContext().attrs; +} +function getContext(calledFunctionName) { + const i = getCurrentInstance(); + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return shared.isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) continue; + let opt = props[key]; + if (opt) { + if (shared.isArray(opt) || shared.isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else ; + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) return a || b; + if (shared.isArray(a) && shared.isArray(b)) return a.concat(b); + return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + const inSSRSetup = isInSSRComponentSetup; + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (inSSRSetup) { + setInSSRSetupState(false); + } + const restore = () => { + setCurrentInstance(ctx); + if (inSSRSetup) { + setInSSRSetupState(true); + } + }; + const cleanup = () => { + if (getCurrentInstance() !== ctx) ctx.scope.off(); + unsetCurrentInstance(); + if (inSSRSetup) { + setInSSRSetupState(false); + } + }; + if (shared.isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + restore(); + Promise.resolve().then(() => Promise.resolve().then(cleanup)); + throw e; + }); + } + return [ + awaitable, + () => { + restore(); + Promise.resolve().then(cleanup); + } + ]; +} + +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = null; + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (shared.isFunction(methodHandler)) { + { + ctx[key] = methodHandler.bind(publicThis); + } + } + } + } + if (dataOptions) { + const data = dataOptions.call(publicThis, publicThis); + if (!shared.isObject(data)) ; else { + instance.data = reactivity.reactive(data); + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP; + const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : shared.NOOP; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (shared.isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (shared.isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === shared.NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { + if (shared.isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (shared.isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (reactivity.isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (shared.isString(raw)) { + const handler = ctx[raw]; + if (shared.isFunction(handler)) { + { + watch(getter, handler); + } + } + } else if (shared.isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (shared.isObject(raw)) { + if (shared.isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (shared.isFunction(handler)) { + watch(getter, handler, raw); + } + } + } else ; +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (shared.isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") ; else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (shared.extend)( + shared.isFunction(to) ? to.call(this, this) : to, + shared.isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (shared.isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (shared.isArray(to) && shared.isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return shared.extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: shared.NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!shared.isFunction(rootComponent)) { + rootComponent = shared.extend({}, rootComponent); + } + if (rootProps != null && !shared.isObject(rootProps)) { + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) ; else if (plugin && shared.isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (shared.isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else ; + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } + } + return app; + }, + component(name, component) { + if (!component) { + return context.components[name]; + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + if (!directive) { + return context.directives[name]; + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + return getComponentPublicInstance(vnode.component); + } + }, + onUnmount(cleanupFn) { + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + delete app._container.__vue_app__; + } + }, + provide(key, value) { + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; + +function useModel(props, name, options = shared.EMPTY_OBJ) { + const i = getCurrentInstance(); + const camelizedName = shared.camelize(name); + const hyphenatedName = shared.hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = reactivity.customRef((track, trigger) => { + let localValue; + let prevSetValue = shared.EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (shared.hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!shared.hasChanged(emittedValue, localValue) && !(prevSetValue !== shared.EMPTY_OBJ && shared.hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + const hasVModel = !!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps)); + if (!hasVModel) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (shared.hasChanged(value, prevSetValue) && (shared.hasChanged(value, emittedValue) && !shared.hasChanged(emittedValue, prevEmittedValue) || // #13524: browsers differ in when they flush microtasks between + // event listeners. If a v-model listener emits an intermediate value + // and a following listener restores the model to its previous prop + // value before parent updates are flushed, the parent render can be + // deduped as having no prop change. Force a local update so DOM state + // such as an input's value is synchronized back to the current model. + hasVModel && prevSetValue !== shared.EMPTY_OBJ && !shared.hasChanged(emittedValue, localValue))) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || shared.EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; +} +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${shared.camelize(modelName)}Modifiers`] || props[`${shared.hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || shared.EMPTY_OBJ; + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = args.map(shared.looseToNumber); + } + } + let handlerName; + let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = shared.toHandlerKey(shared.camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +const mixinEmitsCache = /* @__PURE__ */ new WeakMap(); +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinEmitsCache : appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + shared.extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (shared.isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + shared.extend(normalized, raw); + } + if (shared.isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !shared.isOn(key)) { + return false; + } + key = key.slice(2); + key = key === "Once" ? key : key.replace(/Once$/, ""); + return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); +} + +function markAttrsAccessed() { +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = false ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + false ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (false) ; + result = normalizeVNode( + render2.length > 1 ? render2( + false ? shallowReadonly(props) : props, + false ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + false ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(shared.isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } + } + } + if (vnode.dirs) { + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + const child = isTeleport(root.type) ? getInnerChild$1(root) || root : root; + setTransitionHooks(child, vnode.transition); + } + { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || shared.isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!shared.isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (!shared.hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function hasPropValueChanged(nextProps, prevProps, key) { + const nextProp = nextProps[key]; + const prevProp = prevProps[key]; + if (key === "style" && shared.isObject(nextProp) && shared.isObject(prevProp)) { + return !shared.looseEqual(nextProp, prevProp); + } + return nextProp !== prevProp; +} +function updateHOCHostEl({ vnode, parent, suspense }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.suspense.vnode.el = root.el = el; + vnode = root; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } + if (suspense && suspense.activeBranch === vnode) { + suspense.vnode.el = el; + } +} + +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + if (isStateful) { + instance.props = isSSR ? props : reactivity.shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = reactivity.toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (shared.hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = shared.camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !shared.hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + reactivity.trigger(instance.attrs, "set", ""); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (shared.isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = reactivity.toRaw(props); + const castValues = rawCastValues || shared.EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !shared.hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = shared.hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === shared.hyphenate(key))) { + value = true; + } + } + } + return value; +} +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + shared.extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, shared.EMPTY_ARR); + } + return shared.EMPTY_ARR; + } + if (shared.isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + const normalizedKey = shared.camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = shared.EMPTY_OBJ; + } + } + } else if (raw) { + for (const key in raw) { + const normalizedKey = shared.camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (shared.isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = shared.isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = shared.isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || shared.hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (shared.isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$" && !shared.isReservedProp(key)) { + return true; + } + return false; +} + +const isInternalKey = (key) => key === "_" || key === "_ctx" || key === "$stable"; +const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (false) ; + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (shared.isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + shared.def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = shared.EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = shared.getGlobalThis(); + target.__VUE__ = true; + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = shared.NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + if (n2.dynamicChildren && n1 && n1.dynamicChildren && n1.dynamicChildren.hasOnce) { + if (n2.dynamicChildren === shared.EMPTY_ARR) { + n2.dynamicChildren = []; + } + n2.dynamicChildren.hasOnce = true; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else ; + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + const customElement = n1.el && n1.el._isVueCE ? n1.el : null; + try { + if (customElement) { + customElement._beginPatch(); + } + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } finally { + if (customElement) { + customElement._endPatch(); + } + } + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !shared.isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + try { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + } finally { + } + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || shared.EMPTY_OBJ; + const newProps = n2.props || shared.EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if ( + // #6385 the old vnode may be a user-wrapped non-isomorphic block + // Force full diff when block metadata is unstable. + dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length) + ) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode); + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldEl && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldEl) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== shared.EMPTY_OBJ) { + for (const key in oldProps) { + if (!shared.isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (shared.isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren && n1.dynamicChildren.length === dynamicChildren.length) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + if ( + // #2080 if the stable fragment has a key, it's a <template v-for> that may + // get moved around. Make sure all root level vnodes inherit el. + // #2134 or if it's a component root, it may also get moved around + // as the component is being moved. + n2.key != null || parentComponent && n2 === parentComponent.subTree + ) { + traverseStaticChildren( + n1, + n2, + true + /* shallow */ + ); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + setupComponent(instance, false, optimized); + } + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep( + instance, + setupRenderEffect, + optimized, + namespace + ); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + n2.el = n1.el; + n2.placeholder = n1.placeholder; + updateComponentPreRender(instance, n2, optimized); + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + n2.placeholder = n1.placeholder; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + shared.invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + instance.subTree = renderComponentRoot(instance); + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + }; + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree + ); + } else { + hydrateSubTree(); + } + } else { + if (root.ce && root.ce._hasShadowRoot()) { + root.ce._injectChildStyle( + type, + instance.parent ? instance.parent.type : void 0 + ); + } + const subTree = instance.subTree = renderComponentRoot(instance); + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + queuePostRenderEffect(() => { + if (!instance.isUnmounted) update(); + }, parentSuspense); + }); + return; + } + } + let originNext = next; + let vnodeHook; + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + shared.invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + const nextTree = renderComponentRoot(instance); + const prevTree = instance.subTree; + instance.subTree = nextTree; + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new reactivity.ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + reactivity.pauseTracking(); + flushPreFlushCbs(instance); + reactivity.resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || shared.EMPTY_ARR; + c2 = c2 || shared.EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, #14173 fallback to el placeholder for unresolved async component + anchorVNode.el || resolveAsyncComponentPlaceholder(anchorVNode) + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + if (transition.persisted && !el[leaveCbKey]) { + hostInsert(el, container, anchor); + } else { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + const wasLeaving = el._isLeaving || !!el[leaveCbKey]; + if (el._isLeaving) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + if (transition.persisted && !wasLeaving) { + remove2(); + } else { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + } + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex, + memo + } = vnode; + if (patchFlag === -2 || dynamicChildren && dynamicChildren.hasOnce) { + optimized = false; + } + if (ref != null) { + reactivity.pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + reactivity.resetTracking(); + } + if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + const shouldInvalidateMemo = memo != null && cacheIndex == null; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs || shouldInvalidateMemo) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + if (shouldInvalidateMemo) { + vnode.el = null; + } + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + const isFragment = type === Fragment; + if (isFragment && !transition) { + removeFragment(el, anchor); + return; + } + if (type === Static) { + removeStaticNode(vnode); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + return; + } + const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode; + const performRemove = () => { + if (isFragment) { + if (hostParentNode(el)) { + removeFragment(el, anchor); + } + } else { + hostRemove(el); + } + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (leavingNode && leavingNode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const leavingEl = leavingNode.el; + const performLeave = () => leave(leavingEl, performRemove); + if (delayLeave) { + delayLeave(leavingEl, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + const { bum, scope, job, subTree, um, m, a } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + shared.invokeArrayFns(bum); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } else if (instance.vnode.el && subTree) { + subTree.transition = instance.vnode.transition; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + const render = (vnode, container, namespace) => { + const minUid = vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid(); + flushOnAppMount(() => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + }, minUid); + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (shared.isArray(ch1) && shared.isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + if (c2.patchFlag === -1) { + c2 = ch2[i] = cloneIfMounted(c2); + } + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} +function resolveAsyncComponentPlaceholder(anchorVnode) { + if (anchorVnode.placeholder) { + return anchorVnode.placeholder; + } + const instance = anchorVnode.component; + if (instance) { + return resolveAsyncComponentPlaceholder(instance.subTree); + } + return null; +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback && !parentSuspense.isHydrating) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (shared.isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(pendingBranch, newBranch)) { + suspense.deps++; + patch( + pendingBranch, + newBranch, + // a hydrating pending branch is adopted SSR DOM, already in place + isHydrating ? container : suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.deps--; + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating && !suspense.isFallbackMountPending) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (!suspense.isFallbackMountPending) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(activeBranch, newBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(activeBranch, newBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + isFallbackMountPending: false, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2, + isInFallback + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + let hasUpdatedAnchor = false; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor && !hasUpdatedAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + if (isInFallback && vnode2.ssFallback) { + vnode2.ssFallback.el = null; + } + } + }; + } + if (activeBranch && !suspense.isFallbackMountPending) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + hasUpdatedAnchor = true; + } + unmount(activeBranch, parentComponent2, suspense, true); + if (!delayEnter && isInFallback && vnode2.ssFallback) { + queuePostRenderEffect(() => vnode2.ssFallback.el = null, suspense); + } + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + suspense.isFallbackMountPending = false; + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + for (let i = 0; i < effects.length; i++) { + parent.effects.push(effects[i]); + } + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspenseId = void 0; + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + suspense.isFallbackMountPending = false; + if (!suspense.isInFallback) { + return; + } + const latestFallback = suspense.vnode.ssFallback; + patch( + null, + latestFallback, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, latestFallback); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + suspense.isFallbackMountPending = true; + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + // `namespace` intentionally shadows the boundary's own: the dep must be + // mounted with the namespace of the position it was rendered at, which can + // differ from the boundary's (e.g. a component nested inside an <svg>). + registerDep(instance, setupRenderEffect, optimized2, namespace2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + unsetCurrentInstance(); + if (!instance.scope.active) { + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace2, + optimized2 + ); + if (placeholder) { + vnode2.placeholder = null; + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (shared.isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (shared.isArray(s)) { + const singleChild = filterSingleRoot(s); + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (shared.isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const Fragment = /* @__PURE__ */ Symbol.for("v-fgt"); +const Text = /* @__PURE__ */ Symbol.for("v-txt"); +const Comment = /* @__PURE__ */ Symbol.for("v-cmt"); +const Static = /* @__PURE__ */ Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + return n1.type === n2.type && n1.key === n2.key; +} +function transformVNodeArgs(transformer) { +} +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= shared.isString(children) ? 8 : 16; + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = _createVNode; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !shared.isString(klass)) { + props.class = shared.normalizeClass(klass); + } + if (shared.isObject(style)) { + if (reactivity.isProxy(style) && !shared.isArray(style)) { + style = shared.extend({}, style); + } + props.style = shared.normalizeStyle(style); + } + } + const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0; + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) return null; + return reactivity.isProxy(props) || isInternalObject(props) ? shared.extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce, + cacheIndex: vnode.cacheIndex + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (shared.isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (shared.isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (shared.isFunction(children)) { + if (shapeFlag & (1 | 64)) { + normalizeChildren(vnode, { default: children }); + return; + } + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = shared.normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = shared.normalizeStyle([ret.style, toMerge.style]); + } else if (shared.isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } else if (incoming == null && existing == null && // mergeProps({ 'onUpdate:modelValue': undefined }) should not retain + // the model listener. + !shared.isModelListener(key)) { + ret[key] = incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function getNextUid() { + return uid; +} +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new reactivity.EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: shared.EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: shared.EMPTY_OBJ, + data: shared.EMPTY_OBJ, + props: shared.EMPTY_OBJ, + attrs: shared.EMPTY_OBJ, + slots: shared.EMPTY_OBJ, + refs: shared.EMPTY_OBJ, + setupState: shared.EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = { _: instance }; + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let setInSSRSetupState; +{ + const g = shared.getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); +} +const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + const Component = instance.type; + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + const { setup } = Component; + if (setup) { + reactivity.pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + instance.props, + setupContext + ] + ); + const isAsyncSetup = shared.isPromise(setupResult); + reactivity.resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + setInSSRSetupState(true); + try { + handleSetupResult(instance, resolvedResult, isSSR); + } finally { + setInSSRSetupState(false); + } + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (shared.isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (shared.isObject(setupResult)) { + instance.setupState = reactivity.proxyRefs(setupResult); + } else ; + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + } + } + instance.render = Component.render || shared.NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + const reset = setCurrentInstance(instance); + reactivity.pauseTracking(); + try { + applyOptions(instance); + } finally { + reactivity.resetTracking(); + reset(); + } + } +} +const attrsProxyHandlers = { + get(target, key) { + reactivity.track(target, "get", ""); + return target[key]; + } +}; +function createSetupContext(instance) { + const expose = (exposed) => { + instance.exposed = exposed || {}; + }; + { + return { + attrs: new Proxy(instance.attrs, attrsProxyHandlers), + slots: instance.slots, + emit: instance.emit, + expose + }; + } +} +function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } +} +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function isClassComponent(value) { + return shared.isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); + return c; +}; + +function h(type, propsOrChildren, children) { + try { + setBlockTracking(-1); + const l = arguments.length; + if (l === 2) { + if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } + } finally { + setBlockTracking(1); + } +} + +function initCustomFormatter() { + { + return; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + ret.cacheIndex = index; + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (shared.hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.5.44"; +const warn$1 = shared.NOOP; +const ErrorTypeStrings = ErrorTypeStrings$1 ; +const devtools = void 0; +const setDevtoolsHook = shared.NOOP; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode, + getComponentPublicInstance, + ensureValidVNode, + pushWarningContext, + popWarningContext +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; +const DeprecationTypes = null; + +exports.EffectScope = reactivity.EffectScope; +exports.ReactiveEffect = reactivity.ReactiveEffect; +exports.TrackOpTypes = reactivity.TrackOpTypes; +exports.TriggerOpTypes = reactivity.TriggerOpTypes; +exports.customRef = reactivity.customRef; +exports.effect = reactivity.effect; +exports.effectScope = reactivity.effectScope; +exports.getCurrentScope = reactivity.getCurrentScope; +exports.getCurrentWatcher = reactivity.getCurrentWatcher; +exports.isProxy = reactivity.isProxy; +exports.isReactive = reactivity.isReactive; +exports.isReadonly = reactivity.isReadonly; +exports.isRef = reactivity.isRef; +exports.isShallow = reactivity.isShallow; +exports.markRaw = reactivity.markRaw; +exports.onScopeDispose = reactivity.onScopeDispose; +exports.onWatcherCleanup = reactivity.onWatcherCleanup; +exports.proxyRefs = reactivity.proxyRefs; +exports.reactive = reactivity.reactive; +exports.readonly = reactivity.readonly; +exports.ref = reactivity.ref; +exports.shallowReactive = reactivity.shallowReactive; +exports.shallowReadonly = reactivity.shallowReadonly; +exports.shallowRef = reactivity.shallowRef; +exports.stop = reactivity.stop; +exports.toRaw = reactivity.toRaw; +exports.toRef = reactivity.toRef; +exports.toRefs = reactivity.toRefs; +exports.toValue = reactivity.toValue; +exports.triggerRef = reactivity.triggerRef; +exports.unref = reactivity.unref; +exports.camelize = shared.camelize; +exports.capitalize = shared.capitalize; +exports.normalizeClass = shared.normalizeClass; +exports.normalizeProps = shared.normalizeProps; +exports.normalizeStyle = shared.normalizeStyle; +exports.toDisplayString = shared.toDisplayString; +exports.toHandlerKey = shared.toHandlerKey; +exports.BaseTransition = BaseTransition; +exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; +exports.Comment = Comment; +exports.DeprecationTypes = DeprecationTypes; +exports.ErrorCodes = ErrorCodes; +exports.ErrorTypeStrings = ErrorTypeStrings; +exports.Fragment = Fragment; +exports.KeepAlive = KeepAlive; +exports.Static = Static; +exports.Suspense = Suspense; +exports.Teleport = Teleport; +exports.Text = Text; +exports.assertNumber = assertNumber; +exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; +exports.callWithErrorHandling = callWithErrorHandling; +exports.cloneVNode = cloneVNode; +exports.compatUtils = compatUtils; +exports.computed = computed; +exports.createBlock = createBlock; +exports.createCommentVNode = createCommentVNode; +exports.createElementBlock = createElementBlock; +exports.createElementVNode = createBaseVNode; +exports.createHydrationRenderer = createHydrationRenderer; +exports.createPropsRestProxy = createPropsRestProxy; +exports.createRenderer = createRenderer; +exports.createSlots = createSlots; +exports.createStaticVNode = createStaticVNode; +exports.createTextVNode = createTextVNode; +exports.createVNode = createVNode; +exports.defineAsyncComponent = defineAsyncComponent; +exports.defineComponent = defineComponent; +exports.defineEmits = defineEmits; +exports.defineExpose = defineExpose; +exports.defineModel = defineModel; +exports.defineOptions = defineOptions; +exports.defineProps = defineProps; +exports.defineSlots = defineSlots; +exports.devtools = devtools; +exports.getCurrentInstance = getCurrentInstance; +exports.getTransitionRawChildren = getTransitionRawChildren; +exports.guardReactiveProps = guardReactiveProps; +exports.h = h; +exports.handleError = handleError; +exports.hasInjectionContext = hasInjectionContext; +exports.hydrateOnIdle = hydrateOnIdle; +exports.hydrateOnInteraction = hydrateOnInteraction; +exports.hydrateOnMediaQuery = hydrateOnMediaQuery; +exports.hydrateOnVisible = hydrateOnVisible; +exports.initCustomFormatter = initCustomFormatter; +exports.inject = inject; +exports.isMemoSame = isMemoSame; +exports.isRuntimeOnly = isRuntimeOnly; +exports.isVNode = isVNode; +exports.mergeDefaults = mergeDefaults; +exports.mergeModels = mergeModels; +exports.mergeProps = mergeProps; +exports.nextTick = nextTick; +exports.onActivated = onActivated; +exports.onBeforeMount = onBeforeMount; +exports.onBeforeUnmount = onBeforeUnmount; +exports.onBeforeUpdate = onBeforeUpdate; +exports.onDeactivated = onDeactivated; +exports.onErrorCaptured = onErrorCaptured; +exports.onMounted = onMounted; +exports.onRenderTracked = onRenderTracked; +exports.onRenderTriggered = onRenderTriggered; +exports.onServerPrefetch = onServerPrefetch; +exports.onUnmounted = onUnmounted; +exports.onUpdated = onUpdated; +exports.openBlock = openBlock; +exports.popScopeId = popScopeId; +exports.provide = provide; +exports.pushScopeId = pushScopeId; +exports.queuePostFlushCb = queuePostFlushCb; +exports.registerRuntimeCompiler = registerRuntimeCompiler; +exports.renderList = renderList; +exports.renderSlot = renderSlot; +exports.resolveComponent = resolveComponent; +exports.resolveDirective = resolveDirective; +exports.resolveDynamicComponent = resolveDynamicComponent; +exports.resolveFilter = resolveFilter; +exports.resolveTransitionHooks = resolveTransitionHooks; +exports.setBlockTracking = setBlockTracking; +exports.setDevtoolsHook = setDevtoolsHook; +exports.setTransitionHooks = setTransitionHooks; +exports.ssrContextKey = ssrContextKey; +exports.ssrUtils = ssrUtils; +exports.toHandlers = toHandlers; +exports.transformVNodeArgs = transformVNodeArgs; +exports.useAttrs = useAttrs; +exports.useId = useId; +exports.useModel = useModel; +exports.useSSRContext = useSSRContext; +exports.useSlots = useSlots; +exports.useTemplateRef = useTemplateRef; +exports.useTransitionState = useTransitionState; +exports.version = version; +exports.warn = warn$1; +exports.watch = watch; +exports.watchEffect = watchEffect; +exports.watchPostEffect = watchPostEffect; +exports.watchSyncEffect = watchSyncEffect; +exports.withAsyncContext = withAsyncContext; +exports.withCtx = withCtx; +exports.withDefaults = withDefaults; +exports.withDirectives = withDirectives; +exports.withMemo = withMemo; +exports.withScopeId = withScopeId; diff --git a/apps/web/.output/server/node_modules/@vue/runtime-core/package.json b/apps/web/.output/server/node_modules/@vue/runtime-core/package.json new file mode 100644 index 0000000..933899a --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/runtime-core/package.json @@ -0,0 +1,52 @@ +{ + "name": "@vue/runtime-core", + "version": "3.5.44", + "description": "@vue/runtime-core", + "main": "index.js", + "module": "dist/runtime-core.esm-bundler.js", + "types": "dist/runtime-core.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/runtime-core.d.ts", + "node": { + "production": "./dist/runtime-core.cjs.prod.js", + "development": "./dist/runtime-core.cjs.js", + "default": "./dist/runtime-core.cjs.prod.js" + }, + "module": "./dist/runtime-core.esm-bundler.js", + "import": "./dist/runtime-core.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueRuntimeCore", + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/runtime-core" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme", + "dependencies": { + "@vue/shared": "3.5.44", + "@vue/reactivity": "3.5.44" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js new file mode 100644 index 0000000..da30760 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js @@ -0,0 +1,1917 @@ +/** +* @vue/runtime-dom v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var runtimeCore = require('@vue/runtime-core'); +var shared = require('@vue/shared'); + +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; +const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = /* @__PURE__ */ Symbol("_vtc"); +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = /* @__PURE__ */ shared.extend( + {}, + runtimeCore.BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; +}; +const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots) +); +const callHook = (hook, args = []) => { + if (shared.isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return shared.extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + if (!el._enterCancelled) { + forceReflow(el); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(el); + } + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false, void 0, true); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true, void 0, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (shared.isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = shared.toNumber(val); + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout != null) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(?:transform|all)(?:,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow(el) { + const targetDocument = el ? el.ownerDocument : document; + return targetDocument.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOriginalDisplay = /* @__PURE__ */ Symbol("_vod"); +const vShowHidden = /* @__PURE__ */ Symbol("_vsh"); +const vShow = { + // used for prop mismatch check during hydration + name: "show", + beforeMount(el, { value }, { transition }) { + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +function setDisplay(el, value) { + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +const CSS_VAR_TEXT = /* @__PURE__ */ Symbol(""); +function useCssVars(getter) { + return; +} + +const displayRE = /(?:^|;)\s*display\s*:/; +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = shared.isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!shared.isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + const value = next[key]; + if (value != null) { + if (!shouldPreserveTextareaResizeStyle( + el, + key, + !shared.isString(prev) && prev ? prev[key] : void 0, + value + )) { + setStyle(style, key, value); + } + } else { + setStyle(style, key, ""); + } + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + if (!isCssString || prev !== next) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + } + if (el[vShowHidden]) { + style.display = "none"; + } + } +} +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (shared.isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + if (name.startsWith("--")) { + if (importantRE.test(val)) { + style.setProperty(name, val.replace(importantRE, ""), "important"); + } else { + style.setProperty(name, val); + } + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + shared.hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = runtimeCore.camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = shared.capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} +function shouldPreserveTextareaResizeStyle(el, key, prev, next) { + return el.tagName === "TEXTAREA" && (key === "width" || key === "height") && shared.isString(next) && prev === next; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : shared.isSymbol(value) ? String(value) : value + ); + } + } +} + +function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = shared.includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + } + needRemove && el.removeAttribute(attrName || key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = /* @__PURE__ */ Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = nextValue; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + nextValue, + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(Once|Passive|Capture)$/; +const optionsModifierEventRE = /^on:?(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + let m; + while ((m = name.match(optionsModifierRE)) && !optionsModifierEventRE.test(name)) { + if (!options) options = {}; + name = name.slice(0, name.length - m[1].length); + options[m[1].toLowerCase()] = true; + } + const event = name[2] === ":" ? name.slice(3) : shared.hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + const value = invoker.value; + if (shared.isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + const handlers = value.slice(); + const args = [e]; + for (let i = 0; i < handlers.length; i++) { + if (e._stopped) { + break; + } + const handler = handlers[i]; + if (handler) { + runtimeCore.callWithAsyncErrorHandling( + handler, + instance, + 5, + args + ); + } + } + } else { + runtimeCore.callWithAsyncErrorHandling( + value, + instance, + 5, + [e] + ); + } + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && // #12408 check if it's declared prop or it's async custom element + (shouldSetAsPropForVueCE(el, key) || // @ts-expect-error _def is private + el._def.__asyncLoader && (/[A-Z]/.test(key) || !shared.isString(nextValue))) + ) { + patchDOMProp(el, shared.camelize(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && shared.isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "sandbox" && el.tagName === "IFRAME") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && shared.isString(value)) { + return false; + } + return key in el; +} +function shouldSetAsPropForVueCE(el, key) { + const props = ( + // @ts-expect-error _def is private + el._def.props + ); + if (!props) { + return false; + } + const camelKey = shared.camelize(key); + return Array.isArray(props) ? props.some((prop) => shared.camelize(prop) === camelKey) : Object.keys(props).some((prop) => shared.camelize(prop) === camelKey); +} + +const REMOVAL = {}; +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, extraOptions, _createApp) { + let Comp = runtimeCore.defineComponent(options, extraOptions); + if (shared.isPlainObject(Comp)) Comp = shared.extend({}, Comp, extraOptions); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, _createApp); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +const defineSSRCustomElement = (/* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); +}); +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, _createApp = createApp) { + super(); + this._def = _def; + this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; + /** + * @internal + */ + this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; + this._connected = false; + this._resolved = false; + this._patching = false; + this._dirty = false; + this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); + this._styleAnchors = /* @__PURE__ */ new WeakMap(); + this._ob = null; + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; + } else { + if (_def.shadowRoot !== false) { + this.attachShadow( + shared.extend({}, _def.shadowRootOptions, { + mode: "open" + }) + ); + this._root = this.shadowRoot; + } else { + this._root = this; + } + } + } + connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot && !this._resolved) { + this._parseSlots(); + } + this._connected = true; + let parent = this; + while (parent = parent && // #12479 should check assignedSlot first to get correct parent + (parent.assignedSlot || parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } + if (!this._instance) { + if (this._resolved) { + this._mount(this._def); + } else { + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + if (this.isConnected) { + return this._resolveDef(); + } + }); + } else { + this._resolveDef(); + } + } + } + } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._inheritParentContext(parent); + } + } + _inheritParentContext(parent = this._parent) { + if (parent && this._app) { + Object.setPrototypeOf( + this._app._context.provides, + parent._instance.provides + ); + } + } + disconnectedCallback() { + this._connected = false; + runtimeCore.nextTick(() => { + if (!this._connected) { + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; + if (this._teleportTargets) { + this._teleportTargets.clear(); + this._teleportTargets = void 0; + } + } + }); + } + _processMutations(mutations) { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._pendingResolve) { + return this._pendingResolve; + } + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver(this._processMutations.bind(this)); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; + const { props, styles } = def; + let numberProps; + if (props && !shared.isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = shared.toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + this._resolveProps(def); + if (this.shadowRoot) { + this._applyStyles(styles); + } + if (this._connected) { + this._mount(def); + } + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + this._pendingResolve = asyncDef().then((def) => { + def.configureApp = this._def.configureApp; + resolve(this._def = def, true); + }); + return this._pendingResolve; + } else { + resolve(this._def); + } + } + _mount(def) { + this._app = this._createApp(def); + this._inheritParentContext(); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!shared.hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => runtimeCore.unref(exposed[key]) + }); + } + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key]); + } + } + for (const key of declaredPropKeys.map(shared.camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val, true, !this._patching); + } + }); + } + } + _setAttr(key) { + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; + const camelKey = shared.camelize(key); + if (has && this._numberProps && this._numberProps[camelKey]) { + value = shared.toNumber(value); + } + this._setProp(camelKey, value, false, true); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { + if (val !== this._props[key]) { + this._dirty = true; + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + const ob = this._ob; + if (ob) { + this._processMutations(ob.takeRecords()); + ob.disconnect(); + } + if (val === true) { + this.setAttribute(shared.hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(shared.hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(shared.hyphenate(key)); + } + ob && ob.observe(this, { attributes: true }); + } + } + } + _update() { + const vnode = this._createVNode(); + if (this._app) vnode.appContext = this._app._context; + render(vnode, this._root); + } + _createVNode() { + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = runtimeCore.createVNode(this._def, shared.extend(baseProps, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.ce = this; + instance.isCE = true; + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent( + event, + shared.isPlainObject(args[0]) ? shared.extend({ detail: args }, args[0]) : { detail: args } + ) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (shared.hyphenate(event) !== event) { + dispatch(shared.hyphenate(event), args); + } + }; + this._setParent(); + }; + } + return vnode; + } + _applyStyles(styles, owner, parentComp) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + const root = this.shadowRoot; + const insertionAnchor = parentComp ? this._getStyleAnchor(parentComp) || this._getStyleAnchor(this._def) : this._getRootStyleInsertionAnchor(root); + let last = null; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + root.insertBefore(s, last || insertionAnchor); + last = s; + if (i === 0) { + if (!parentComp) this._styleAnchors.set(this._def, s); + if (owner) this._styleAnchors.set(owner, s); + } + } + } + _getStyleAnchor(comp) { + if (!comp) { + return null; + } + const anchor = this._styleAnchors.get(comp); + if (anchor && anchor.parentNode === this.shadowRoot) { + return anchor; + } + if (anchor) { + this._styleAnchors.delete(comp); + } + return null; + } + _getRootStyleInsertionAnchor(root) { + for (let i = 0; i < root.childNodes.length; i++) { + const node = root.childNodes[i]; + if (!(node instanceof HTMLStyleElement)) { + return node; + } + } + return null; + } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = this._getSlots(); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _getSlots() { + const roots = [this]; + if (this._teleportTargets) { + roots.push(...this._teleportTargets); + } + const slots = /* @__PURE__ */ new Set(); + for (const root of roots) { + const found = root.querySelectorAll("slot"); + for (let i = 0; i < found.length; i++) { + slots.add(found[i]); + } + } + return Array.from(slots); + } + /** + * @internal + */ + _injectChildStyle(comp, parentComp) { + this._applyStyles(comp.styles, comp, parentComp); + } + /** + * @internal + */ + _beginPatch() { + this._patching = true; + this._dirty = false; + } + /** + * @internal + */ + _endPatch() { + this._patching = false; + if (this._dirty && this._instance) { + this._update(); + } + } + /** + * @internal + */ + _hasShadowRoot() { + return this._def.shadowRoot !== false; + } + /** + * @internal + */ + _removeChildStyle(comp) { + } +} +function useHost(caller) { + const instance = runtimeCore.getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } + return null; +} +function useShadowRoot() { + const el = useHost(); + return el && el.shadowRoot; +} + +function useCssModule(name = "$style") { + { + const instance = runtimeCore.getCurrentInstance(); + if (!instance) { + return shared.EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + return shared.EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + return shared.EMPTY_OBJ; + } + return mod; + } +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = /* @__PURE__ */ Symbol("_moveCb"); +const enterCbKey = /* @__PURE__ */ Symbol("_enterCb"); +const pendingGroups = /* @__PURE__ */ new WeakMap(); +const decorate = (t) => { + delete t.props.mode; + return t; +}; +const TransitionGroupImpl = /* @__PURE__ */ decorate({ + name: "TransitionGroup", + props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = runtimeCore.getCurrentInstance(); + const state = runtimeCore.useTransitionState(); + let prevChildren; + let children; + let origins; + let moves; + const willMove = () => { + if (moves === void 0) { + moves = prevChildren.length > 0 && hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + resolveMoveClass(props) + ); + } + return moves; + }; + runtimeCore.onUpdated(() => { + pendingGroups.delete(instance); + if (!willMove()) { + prevChildren = []; + origins = void 0; + return; + } + const moveClass = resolveMoveClass(props); + prevChildren.forEach(callPendingCbs); + const shift = origins && getOriginShift(origins, instance.vnode.el); + origins = void 0; + prevChildren.forEach((c) => recordPosition(c, shift)); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(instance.vnode.el); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || e.propertyName.endsWith("transform")) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + prevChildren = []; + }); + return () => { + const rawProps = runtimeCore.toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || runtimeCore.Fragment; + prevChildren = []; + moves = void 0; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element && // Hidden v-show nodes have no previous layout box to animate from. + !child.el[vShowHidden]) { + prevChildren.push(child); + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set(child, getPosition(child.el)); + } + } + } + children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } + } + if (prevChildren.length) { + origins = getOrigins(instance); + pendingGroups.set(instance, willMove); + } + return runtimeCore.createVNode(tag, null, children); + }; + } +}); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function resolveMoveClass(props) { + return props.moveClass || `${props.name || "v"}-move`; +} +function recordPosition(c, shift) { + newPositionMap.set(c, getPosition(c.el, shift)); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const el = c.el; + const s = el.style; + const rect = el.getBoundingClientRect(); + let scaleX = 1; + let scaleY = 1; + if (el.offsetWidth) scaleX = rect.width / el.offsetWidth; + if (el.offsetHeight) scaleY = rect.height / el.offsetHeight; + if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1; + if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1; + if (Math.abs(scaleX - 1) < 0.01) scaleX = 1; + if (Math.abs(scaleY - 1) < 0.01) scaleY = 1; + s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function getPosition(el, shift) { + const rect = el.getBoundingClientRect(); + return { + left: rect.left - (shift ? shift.left : 0), + top: rect.top - (shift ? shift.top : 0) + }; +} +function getOrigins(instance) { + let origins; + for (let group = instance.parent; group; group = group.parent) { + const willMove = pendingGroups.get(group); + if (willMove) { + const item = findItem(group.vnode.el, instance.vnode.el); + if (item) { + (origins || (origins = [])).push( + shared.extend(getPosition(item), { item, willMove }) + ); + } + } + } + return origins; +} +function findItem(root, node) { + const container = root.nodeType === 1 ? root : root.parentNode; + while (node && node.parentNode !== container) { + node = node.parentNode; + } + if (node && node.nodeType === 1) { + return node; + } +} +function getOriginShift(origins, root) { + const origin = origins.find((o) => o.willMove() && o.item.contains(root)); + return origin && getPosition(origin.item, origin); +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = /* @__PURE__ */ Symbol("_assign"); +const initialValueKey = /* @__PURE__ */ Symbol("_initialValue"); +function castValue(value, trim, number) { + if (trim) value = value.trim(); + if (number) value = shared.looseToNumber(value); + return value; +} +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + if (el.parentNode) { + if (el.type === "text") { + el[initialValueKey] = el.defaultValue.replace(/[\r\n]/g, ""); + } else if (el.type === "textarea") { + el[initialValueKey] = el.defaultValue.replace(/\r\n?/g, "\n"); + } + } + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) return; + el[assignKey](castValue(el.value, trim, castToNumber)); + }); + if (trim || castToNumber) { + addEventListener(el, "change", () => { + el.value = castValue(el.value, trim, castToNumber); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value, modifiers: { trim, number } }) { + const newValue = value == null ? "" : value; + const initialValue = el[initialValueKey]; + delete el[initialValueKey]; + if (initialValue !== void 0 && (el.type === "text" || el.type === "textarea") && el.value !== initialValue) { + el[assignKey](castValue(el.value, trim, number)); + } else { + el.value = newValue; + } + }, + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + const rootNode = el.getRootNode(); + if ((rootNode instanceof Document || rootNode instanceof ShadowRoot) && rootNode.activeElement === el && el.type !== "range") { + if (lazy && value === oldValue) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (shared.isArray(modelValue)) { + const index = shared.looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (shared.isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + let checked; + if (shared.isArray(value)) { + checked = shared.looseIndexOf(value, vnode.props.value) > -1; + } else if (shared.isSet(value)) { + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = shared.looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = shared.looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = shared.looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + el._modelValue = value; + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o) + ); + const multiple = el.multiple; + const assignedValue = multiple ? shared.isSet(el._modelValue) ? new Set(selectedVal) : selectedVal : selectedVal[0]; + const pending = el._pendingValue = [ + multiple, + multiple ? shared.isArray(assignedValue) ? selectedVal.slice() : selectedVal : assignedValue + ]; + try { + el[assignKey](assignedValue); + } finally { + runtimeCore.nextTick(() => { + if (el._pendingValue === pending) { + el._pendingValue = void 0; + } + }); + } + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, { value }, vnode) { + el._modelValue = value; + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + const pending = el._pendingValue; + el._pendingValue = void 0; + if (!pending || pending[0] !== el.multiple || !isSameSelectValue(value, pending[1], pending[0])) { + setSelected(el, value); + } + } +}; +function isSameSelectValue(value, assignedValue, multiple) { + if (!multiple) return shared.looseEqual(value, assignedValue); + if (shared.isArray(value)) return shared.looseEqual(value, assignedValue); + if (shared.isSet(value)) { + if (value.size !== assignedValue.length) return false; + for (const item of assignedValue) { + if (!value.has(item)) return false; + } + return true; + } + return false; +} +function setSelected(el, value) { + const isMultiple = el.multiple; + const isArrayValue = shared.isArray(value); + if (isMultiple && !isArrayValue && !shared.isSet(value)) { + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = shared.looseIndexOf(value, optionValue) > -1; + } + } else { + option.selected = value.has(optionValue); + } + } else if (shared.looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && shared.looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (shared.isArray(value)) { + if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (shared.isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + if (!fn) return fn; + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) return; + } + return fn(event, ...args); + })); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = ((event) => { + if (!("key" in event)) { + return; + } + const eventKey = shared.hyphenate(event.key); + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { + return fn(event); + } + })); +}; + +const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = runtimeCore.createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = ((...args) => { + ensureRenderer().render(...args); +}); +const hydrate = ((...args) => { + ensureHydrationRenderer().hydrate(...args); +}); +const createApp = ((...args) => { + const app = ensureRenderer().createApp(...args); + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!shared.isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}); +const createSSRApp = ((...args) => { + const app = ensureHydrationRenderer().createApp(...args); + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, resolveRootNamespace(container)); + } + }; + return app; +}); +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} +function normalizeContainer(container) { + if (shared.isString(container)) { + const res = document.querySelector(container); + return res; + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +exports.Transition = Transition; +exports.TransitionGroup = TransitionGroup; +exports.VueElement = VueElement; +exports.createApp = createApp; +exports.createSSRApp = createSSRApp; +exports.defineCustomElement = defineCustomElement; +exports.defineSSRCustomElement = defineSSRCustomElement; +exports.hydrate = hydrate; +exports.initDirectivesForSSR = initDirectivesForSSR; +exports.nodeOps = nodeOps; +exports.patchProp = patchProp; +exports.render = render; +exports.useCssModule = useCssModule; +exports.useCssVars = useCssVars; +exports.useHost = useHost; +exports.useShadowRoot = useShadowRoot; +exports.vModelCheckbox = vModelCheckbox; +exports.vModelDynamic = vModelDynamic; +exports.vModelRadio = vModelRadio; +exports.vModelSelect = vModelSelect; +exports.vModelText = vModelText; +exports.vShow = vShow; +exports.withKeys = withKeys; +exports.withModifiers = withModifiers; +Object.keys(runtimeCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k]; +}); diff --git a/apps/web/.output/server/node_modules/@vue/runtime-dom/package.json b/apps/web/.output/server/node_modules/@vue/runtime-dom/package.json new file mode 100644 index 0000000..7c90402 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/runtime-dom/package.json @@ -0,0 +1,60 @@ +{ + "name": "@vue/runtime-dom", + "version": "3.5.44", + "description": "@vue/runtime-dom", + "main": "index.js", + "module": "dist/runtime-dom.esm-bundler.js", + "types": "dist/runtime-dom.d.ts", + "unpkg": "dist/runtime-dom.global.js", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/runtime-dom.d.ts", + "node": { + "production": "./dist/runtime-dom.cjs.prod.js", + "development": "./dist/runtime-dom.cjs.js", + "default": "./dist/runtime-dom.cjs.prod.js" + }, + "module": "./dist/runtime-dom.esm-bundler.js", + "import": "./dist/runtime-dom.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "buildOptions": { + "name": "VueRuntimeDOM", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/runtime-dom" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme", + "dependencies": { + "@vue/shared": "3.5.44", + "@vue/runtime-core": "3.5.44", + "@vue/reactivity": "3.5.44", + "csstype": "^3.2.3" + }, + "devDependencies": { + "@types/trusted-types": "^2.0.7" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js new file mode 100644 index 0000000..c907998 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js @@ -0,0 +1,951 @@ +/** +* @vue/server-renderer v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var Vue = require('@vue/runtime-dom'); +var shared = require('@vue/shared'); +var compilerSsr = require('@vue/compiler-ssr'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); + +const shouldIgnoreProp = /* @__PURE__ */ shared.makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (let key in props) { + if (shouldIgnoreProp(key) || shared.isOn(key) || tag === "textarea" && key === "value" || // force as property (not rendered in SSR) + key.startsWith(".")) { + continue; + } + const value = props[key]; + if (key.startsWith("^")) key = key.slice(1); + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else if (key === "className") { + if (value != null) { + ret += ` class="${shared.escapeHtml(String(value))}"`; + } + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!shared.isRenderableAttrValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); + if (shared.isBooleanAttr(attrKey) || attrKey === "hidden" && (typeof value === "boolean" || typeof value === "number")) { + return shared.includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (shared.isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${shared.escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!shared.isRenderableAttrValue(value)) { + return ``; + } + return ` ${key}="${shared.escapeHtml(value)}"`; +} +function ssrRenderClass(raw) { + return shared.escapeHtml(shared.normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (shared.isString(raw)) { + return shared.escapeHtml(raw); + } + const styles = shared.normalizeStyle(ssrResetCssVars(raw)); + return shared.escapeHtml(shared.stringifyStyle(styles)); +} +function ssrResetCssVars(raw) { + if (!shared.isArray(raw) && shared.isObject(raw)) { + const res = {}; + for (const key in raw) { + if (key.startsWith(":--")) { + res[key.slice(1)] = shared.normalizeCssVarValue(raw[key]); + } else { + res[key] = raw[key]; + } + } + return res; + } + return raw; +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + Vue.createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +const { ensureValidVNode } = Vue.ssrUtils; +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + // keep the slot function's contract in sync with `renderSlot`, which also + // normalizes nullish props before invoking the slot + slotProps || {}, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (shared.isArray(ret)) { + const validSlotContent = ensureValidVNode(ret); + if (validSlotContent) { + renderVNodeChildren( + push, + validSlotContent, + parentComponent, + slotScopeId + ); + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + let start = 0; + let end = slotBuffer.length; + if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") { + start++; + end--; + } + if (start < end) { + for (let i = start; i < end; i++) { + push(slotBuffer[i]); + } + } else if (transition) { + push(`<!---->`); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } +} +const commentTestRE = /^<!--[\s\S]*-->$/; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) return false; + if (item.length <= 8) return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[Vue.ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + push(`<!--teleport start anchor-->`); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + if (shared.isPromise(teleportContent) || shared.isArray(teleportContent) && teleportContent.hasAsync) { + targetBuffer.hasAsync = true; + } + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return shared.escapeHtml(shared.toDisplayString(value)); +} + +function ssrRenderList(source, renderItem) { + if (shared.isArray(source) || shared.isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source) || source < 0) { + return; + } + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + let i = 0; + for (const item of source) { + renderItem(item, i++); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance: Vue.ssrUtils.getComponentPublicInstance(instance.$), + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = shared.looseEqual; +function ssrLooseContain(arr, value) { + return shared.looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +var helpers = /*#__PURE__*/Object.freeze({ + __proto__: null, + ssrGetDirectiveProps: ssrGetDirectiveProps, + ssrGetDynamicModelProps: ssrGetDynamicModelProps, + ssrIncludeBooleanAttr: shared.includeBooleanAttr, + ssrInterpolate: ssrInterpolate, + ssrLooseContain: ssrLooseContain, + ssrLooseEqual: ssrLooseEqual, + ssrRenderAttr: ssrRenderAttr, + ssrRenderAttrs: ssrRenderAttrs, + ssrRenderClass: ssrRenderClass, + ssrRenderComponent: ssrRenderComponent, + ssrRenderDynamicAttr: ssrRenderDynamicAttr, + ssrRenderDynamicModel: ssrRenderDynamicModel, + ssrRenderList: ssrRenderList, + ssrRenderSlot: ssrRenderSlot, + ssrRenderSlotInner: ssrRenderSlotInner, + ssrRenderStyle: ssrRenderStyle, + ssrRenderSuspense: ssrRenderSuspense, + ssrRenderTeleport: ssrRenderTeleport, + ssrRenderVNode: renderVNode +}); + +const compileCache = /* @__PURE__ */ Object.create(null); +function ssrCompile(template, instance) { + const Component = instance.type; + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + finalCompilerOptions.isCustomElement = finalCompilerOptions.isCustomElement || shared.NO; + finalCompilerOptions.isNativeTag = finalCompilerOptions.isNativeTag || shared.NO; + const cacheKey = JSON.stringify( + { + template, + compilerOptions: finalCompilerOptions + }, + (key, value) => { + return shared.isFunction(value) ? value.toString() : value; + } + ); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + finalCompilerOptions.onError = (err) => { + { + throw err; + } + }; + const { code } = compilerSsr.compile(template, finalCompilerOptions); + const requireMap = { + vue: Vue__namespace, + "vue/server-renderer": helpers + }; + const fakeRequire = (id) => requireMap[id]; + return compileCache[cacheKey] = Function("require", code)(fakeRequire); +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode, + pushWarningContext, + popWarningContext +} = Vue.ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = shared.isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + return; + } + buffer.push(item); + appendable = isStringItem; + if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = vnode.component = createComponentInstance( + vnode, + parentComponent, + null + ); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + const hasAsyncSetup = shared.isPromise(res); + let prefetches = instance.sp; + let p; + if (hasAsyncSetup || prefetches) { + p = Promise.resolve(res).then(() => { + if (hasAsyncSetup) prefetches = instance.sp; + if (prefetches) { + try { + return Promise.all( + prefetches.map((prefetch) => prefetch.call(instance.proxy)) + ).catch(shared.NOOP); + } catch { + } + } + }).then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + try { + return renderComponentSubTree(instance, slotScopeId); + } catch (err) { + p = Promise.reject(err); + } + } + p.catch(shared.NOOP); + return p; +} +function renderComponentSubTree(instance, slotScopeId) { + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (shared.isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template, instance); + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) attrs = { ...attrs }; + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + attrs[slotScopeIdList[i]] = ""; + } + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } catch (err) { + Vue.handleError(err, instance, 1); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== shared.NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + Vue.warn(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children, dirs, props } = vnode; + if (dirs) { + vnode.props = applySSRDirectives(vnode, props, dirs); + } + switch (type) { + case Vue.Text: + push(shared.escapeHtml(children)); + break; + case Vue.Comment: + push( + children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Vue.Static: + push(children); + break; + case Vue.Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + Vue.warn( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId } = vnode; + let openTag = `<${tag}`; + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + const renderedScopeIds = []; + const appendScopeId = (id) => { + if (id && (!props || !shared.hasOwn(props, id)) && !renderedScopeIds.includes(id)) { + openTag += ` ${id}`; + renderedScopeIds.push(id); + } + }; + if (scopeId) { + appendScopeId(scopeId); + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + appendScopeId(curVnode.scopeId); + } + curParent = curParent.parent; + } + if (slotScopeId) { + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + appendScopeId(slotScopeIdList[i]); + } + } + push(openTag + `>`); + if (!shared.isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML != null) { + hasChildrenOverride = true; + push(String(props.innerHTML)); + } else if (props.textContent != null) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value != null) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(shared.escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) toMerge.push(props); + } + } + return Vue.mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!shared.isString(target)) { + Vue.warn( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = Vue.ssrUtils; +function nestedUnrollBuffer(buffer, parentRet, startIndex) { + if (!buffer.hasAsync) { + return parentRet + unrollBufferSync$1(buffer); + } + let ret = parentRet; + for (let i = startIndex; i < buffer.length; i += 1) { + const item = buffer[i]; + if (shared.isString(item)) { + ret += item; + continue; + } + if (shared.isPromise(item)) { + return item.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, ret, i); + }); + } + const result = nestedUnrollBuffer(item, ret, 0); + if (shared.isPromise(result)) { + return result.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, "", i); + }); + } + ret = result; + } + return ret; +} +function unrollBuffer$1(buffer) { + return nestedUnrollBuffer(buffer, "", 0); +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(Vue.createApp({ render: () => input }), context); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + let buffer; + let result; + try { + buffer = await renderComponentVNode(vnode); + result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + } catch (err) { + cleanupFailedRender(buffer, context); + throw err; + } + stopWatchers(context); + return result; +} +function stopWatchers(context, start = 0) { + const handles = context.__watcherHandles; + if (handles) { + for (let i = start; i < handles.length; i++) { + handles[i](); + } + } +} +function cleanupFailedRender(buffer, context) { + const stopped = context.__watcherHandles ? context.__watcherHandles.length : 0; + try { + stopWatchers(context); + } catch { + } + (async () => { + if (buffer) await settleBuffer(buffer); + for (const key in context.__teleportBuffers) { + await settleBuffer(context.__teleportBuffers[key]); + } + stopWatchers(context, stopped); + })().catch(shared.NOOP); +} +async function settleBuffer(buffer) { + if (!buffer.hasAsync) return; + for (let item of buffer) { + try { + if (shared.isPromise(item)) item = await item; + if (!shared.isString(item)) await settleBuffer(item); + } catch { + } + } +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + context.__teleportBuffers[key] + ); + } + } +} + +const { isVNode } = Vue.ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + Vue.createApp({ render: () => input }), + context, + stream + ); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + let buffer; + Promise.resolve(renderComponentVNode(vnode)).then((b) => unrollBuffer(buffer = b, stream)).then(() => resolveTeleports(context)).then( + () => { + stopWatchers(context); + stream.push(null); + }, + (error) => { + cleanupFailedRender(buffer, context); + throw error; + } + ).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + const stream = new (require("node:stream")).Readable({ read() { + } }) ; + if (!stream) { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } + return renderToSimpleStream(input, context, stream); +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = shared.isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +Vue.initDirectivesForSSR(); + +exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr; +exports.pipeToNodeWritable = pipeToNodeWritable; +exports.pipeToWebWritable = pipeToWebWritable; +exports.renderToNodeStream = renderToNodeStream; +exports.renderToSimpleStream = renderToSimpleStream; +exports.renderToStream = renderToStream; +exports.renderToString = renderToString; +exports.renderToWebStream = renderToWebStream; +exports.ssrGetDirectiveProps = ssrGetDirectiveProps; +exports.ssrGetDynamicModelProps = ssrGetDynamicModelProps; +exports.ssrInterpolate = ssrInterpolate; +exports.ssrLooseContain = ssrLooseContain; +exports.ssrLooseEqual = ssrLooseEqual; +exports.ssrRenderAttr = ssrRenderAttr; +exports.ssrRenderAttrs = ssrRenderAttrs; +exports.ssrRenderClass = ssrRenderClass; +exports.ssrRenderComponent = ssrRenderComponent; +exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr; +exports.ssrRenderDynamicModel = ssrRenderDynamicModel; +exports.ssrRenderList = ssrRenderList; +exports.ssrRenderSlot = ssrRenderSlot; +exports.ssrRenderSlotInner = ssrRenderSlotInner; +exports.ssrRenderStyle = ssrRenderStyle; +exports.ssrRenderSuspense = ssrRenderSuspense; +exports.ssrRenderTeleport = ssrRenderTeleport; +exports.ssrRenderVNode = renderVNode; diff --git a/apps/web/.output/server/node_modules/@vue/server-renderer/package.json b/apps/web/.output/server/node_modules/@vue/server-renderer/package.json new file mode 100644 index 0000000..5fd5c1e --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/server-renderer/package.json @@ -0,0 +1,53 @@ +{ + "name": "@vue/server-renderer", + "version": "3.5.44", + "description": "@vue/server-renderer", + "main": "index.js", + "module": "dist/server-renderer.esm-bundler.js", + "types": "dist/server-renderer.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/server-renderer.d.ts", + "node": { + "production": "./dist/server-renderer.cjs.prod.js", + "development": "./dist/server-renderer.cjs.js", + "default": "./dist/server-renderer.cjs.prod.js" + }, + "module": "./dist/server-renderer.esm-bundler.js", + "import": "./dist/server-renderer.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueServerRenderer", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/server-renderer" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme", + "dependencies": { + "@vue/shared": "3.5.44", + "@vue/compiler-ssr": "3.5.44", + "@vue/runtime-dom": "3.5.44" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js b/apps/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js new file mode 100644 index 0000000..1fd06be --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js @@ -0,0 +1,655 @@ +/** +* @vue/shared v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = {}; +const EMPTY_ARR = []; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return ((str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }); +}; +const camelizeRE = /-\w/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase()); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} +function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); +} + +const PatchFlags = { + "TEXT": 1, + "1": "TEXT", + "CLASS": 2, + "2": "CLASS", + "STYLE": 4, + "4": "STYLE", + "PROPS": 8, + "8": "PROPS", + "FULL_PROPS": 16, + "16": "FULL_PROPS", + "NEED_HYDRATION": 32, + "32": "NEED_HYDRATION", + "STABLE_FRAGMENT": 64, + "64": "STABLE_FRAGMENT", + "KEYED_FRAGMENT": 128, + "128": "KEYED_FRAGMENT", + "UNKEYED_FRAGMENT": 256, + "256": "UNKEYED_FRAGMENT", + "NEED_PATCH": 512, + "512": "NEED_PATCH", + "DYNAMIC_SLOTS": 1024, + "1024": "DYNAMIC_SLOTS", + "DEV_ROOT_FRAGMENT": 2048, + "2048": "DEV_ROOT_FRAGMENT", + "CACHED": -1, + "-1": "CACHED", + "BAIL": -2, + "-2": "BAIL" +}; +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` +}; + +const ShapeFlags = { + "ELEMENT": 1, + "1": "ELEMENT", + "FUNCTIONAL_COMPONENT": 2, + "2": "FUNCTIONAL_COMPONENT", + "STATEFUL_COMPONENT": 4, + "4": "STATEFUL_COMPONENT", + "TEXT_CHILDREN": 8, + "8": "TEXT_CHILDREN", + "ARRAY_CHILDREN": 16, + "16": "ARRAY_CHILDREN", + "SLOTS_CHILDREN": 32, + "32": "SLOTS_CHILDREN", + "TELEPORT": 64, + "64": "TELEPORT", + "SUSPENSE": 128, + "128": "SUSPENSE", + "COMPONENT_SHOULD_KEEP_ALIVE": 256, + "256": "COMPONENT_SHOULD_KEEP_ALIVE", + "COMPONENT_KEPT_ALIVE": 512, + "512": "COMPONENT_KEPT_ALIVE", + "COMPONENT": 6, + "6": "COMPONENT" +}; + +const SlotFlags = { + "STABLE": 1, + "1": "STABLE", + "DYNAMIC": 2, + "2": "DYNAMIC", + "FORWARDED": 3, + "3": "FORWARDED" +}; +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, (match) => match.startsWith("/*") ? "" : match).split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u000d\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +const isKnownMathMLAttr = /* @__PURE__ */ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^(?:-?>)+|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + let prev; + do { + prev = src; + src = src.replace(commentStripRE, ""); + } while (src !== prev); + return src; +} +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} + +function looseCompareArrays(a, b, seen) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i], seen); + } + return equal; +} +function looseCompareCollections(a, b, seen) { + if (a.size !== b.size) return false; + const candidates = Array.from(b); + const matched = new Uint8Array(candidates.length); + for (const item of a) { + let index = -1; + for (let i = 0; i < candidates.length; i++) { + if (!matched[i] && looseEqual(item, candidates[i], seen)) { + index = i; + break; + } + } + if (index < 0) return false; + matched[index] = 1; + } + return true; +} +function looseCompareObjects(a, b, seen) { + let aValidType = isMap(a); + let bValidType = isMap(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false; + } + aValidType = isSet(a); + bValidType = isSet(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key], seen)) { + return false; + } + } + return String(a) === String(b); +} +function looseCompareNested(a, b, seen, compare) { + if (!seen) { + seen = [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map()]; + } + const [seenA, seenB] = seen; + if (seenA.has(a) || seenB.has(b)) { + return seenA.get(a) === b && seenB.get(b) === a; + } + seenA.set(a, b); + seenB.set(b, a); + const equal = compare(a, b, seen); + seenA.delete(a); + seenB.delete(b); + return equal; +} +function looseEqual(a, b, seen) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareNested(a, b, seen, looseCompareArrays) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + return looseCompareNested(a, b, seen, looseCompareObjects); + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + return String(value); +} + +exports.EMPTY_ARR = EMPTY_ARR; +exports.EMPTY_OBJ = EMPTY_OBJ; +exports.NO = NO; +exports.NOOP = NOOP; +exports.PatchFlagNames = PatchFlagNames; +exports.PatchFlags = PatchFlags; +exports.ShapeFlags = ShapeFlags; +exports.SlotFlags = SlotFlags; +exports.camelize = camelize; +exports.capitalize = capitalize; +exports.cssVarNameEscapeSymbolsRE = cssVarNameEscapeSymbolsRE; +exports.def = def; +exports.escapeHtml = escapeHtml; +exports.escapeHtmlComment = escapeHtmlComment; +exports.extend = extend; +exports.genCacheKey = genCacheKey; +exports.genPropsAccessExp = genPropsAccessExp; +exports.generateCodeFrame = generateCodeFrame; +exports.getEscapedCssVarName = getEscapedCssVarName; +exports.getGlobalThis = getGlobalThis; +exports.hasChanged = hasChanged; +exports.hasOwn = hasOwn; +exports.hyphenate = hyphenate; +exports.includeBooleanAttr = includeBooleanAttr; +exports.invokeArrayFns = invokeArrayFns; +exports.isArray = isArray; +exports.isBooleanAttr = isBooleanAttr; +exports.isBuiltInDirective = isBuiltInDirective; +exports.isDate = isDate; +exports.isFunction = isFunction; +exports.isGloballyAllowed = isGloballyAllowed; +exports.isGloballyWhitelisted = isGloballyWhitelisted; +exports.isHTMLTag = isHTMLTag; +exports.isIntegerKey = isIntegerKey; +exports.isKnownHtmlAttr = isKnownHtmlAttr; +exports.isKnownMathMLAttr = isKnownMathMLAttr; +exports.isKnownSvgAttr = isKnownSvgAttr; +exports.isMap = isMap; +exports.isMathMLTag = isMathMLTag; +exports.isModelListener = isModelListener; +exports.isObject = isObject; +exports.isOn = isOn; +exports.isPlainObject = isPlainObject; +exports.isPromise = isPromise; +exports.isRegExp = isRegExp; +exports.isRenderableAttrValue = isRenderableAttrValue; +exports.isReservedProp = isReservedProp; +exports.isSSRSafeAttrName = isSSRSafeAttrName; +exports.isSVGTag = isSVGTag; +exports.isSet = isSet; +exports.isSpecialBooleanAttr = isSpecialBooleanAttr; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isVoidTag = isVoidTag; +exports.looseEqual = looseEqual; +exports.looseIndexOf = looseIndexOf; +exports.looseToNumber = looseToNumber; +exports.makeMap = makeMap; +exports.normalizeClass = normalizeClass; +exports.normalizeCssVarValue = normalizeCssVarValue; +exports.normalizeProps = normalizeProps; +exports.normalizeStyle = normalizeStyle; +exports.objectToString = objectToString; +exports.parseStringStyle = parseStringStyle; +exports.propsToAttrMap = propsToAttrMap; +exports.remove = remove; +exports.slotFlagsText = slotFlagsText; +exports.stringifyStyle = stringifyStyle; +exports.toDisplayString = toDisplayString; +exports.toHandlerKey = toHandlerKey; +exports.toNumber = toNumber; +exports.toRawType = toRawType; +exports.toTypeString = toTypeString; diff --git a/apps/web/.output/server/node_modules/@vue/shared/package.json b/apps/web/.output/server/node_modules/@vue/shared/package.json new file mode 100644 index 0000000..bb758d0 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vue/shared/package.json @@ -0,0 +1,47 @@ +{ + "name": "@vue/shared", + "version": "3.5.44", + "description": "internal utils shared across @vue packages", + "main": "index.js", + "module": "dist/shared.esm-bundler.js", + "types": "dist/shared.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/shared.d.ts", + "node": { + "production": "./dist/shared.cjs.prod.js", + "development": "./dist/shared.cjs.js", + "default": "./dist/shared.cjs.prod.js" + }, + "module": "./dist/shared.esm-bundler.js", + "import": "./dist/shared.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "buildOptions": { + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/shared" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme" +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vueuse/core/dist/index.js b/apps/web/.output/server/node_modules/@vueuse/core/dist/index.js new file mode 100644 index 0000000..9755121 --- /dev/null +++ b/apps/web/.output/server/node_modules/@vueuse/core/dist/index.js @@ -0,0 +1,8756 @@ +import { bypassFilter, camelize, clamp, computedWithControl, containsProp, createEventHook, createFilterWrapper, createRef, createSingletonPromise, debounceFilter, hasOwn, identity, increaseWithUnit, injectLocal, isClient, isDef, isIOS, isObject, isWorker, makeDestructurable, noop, notNullish, objectEntries, objectOmit, objectPick, pausableFilter, promiseTimeout, provideLocal, pxValue, syncRef, throttleFilter, timestamp, toArray, toRef, toRefs, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useDebounceFn, useIntervalFn, useThrottleFn, useTimeoutFn, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchWithFilter, whenever } from "@vueuse/shared"; +import { Fragment, TransitionGroup, computed, defineComponent, getCurrentInstance, h, hasInjectionContext, inject, isReadonly, isRef, markRaw, nextTick, onBeforeUpdate, onMounted, onUpdated, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toValue, unref, watch, watchEffect } from "vue"; +export * from "@vueuse/shared"; +//#region computedAsync/index.ts +function computedAsync(evaluationCallback, initialState, optionsOrRef) { + var _globalThis$reportErr; + let options; + if (isRef(optionsOrRef)) options = { evaluating: optionsOrRef }; + else options = optionsOrRef || {}; + const { lazy = false, flush = "sync", evaluating = void 0, shallow = true, onError = (_globalThis$reportErr = globalThis.reportError) !== null && _globalThis$reportErr !== void 0 ? _globalThis$reportErr : noop } = options; + const started = shallowRef(!lazy); + const current = shallow ? shallowRef(initialState) : ref(initialState); + let counter = 0; + watchEffect(async (onInvalidate) => { + if (!started.value) return; + counter++; + const counterAtBeginning = counter; + let hasFinished = false; + if (evaluating) Promise.resolve().then(() => { + evaluating.value = true; + }); + try { + const result = await evaluationCallback((cancelCallback) => { + onInvalidate(() => { + if (evaluating) evaluating.value = false; + if (!hasFinished) cancelCallback(); + }); + }); + if (counterAtBeginning === counter) current.value = result; + } catch (e) { + onError(e); + } finally { + if (evaluating && counterAtBeginning === counter) evaluating.value = false; + hasFinished = true; + } + }, { flush }); + if (lazy) return computed(() => { + started.value = true; + return current.value; + }); + else return current; +} +/** @deprecated use `computedAsync` instead */ +const asyncComputed = computedAsync; +//#endregion +//#region computedInject/index.ts +function computedInject(key, options, defaultSource, treatDefaultAsFactory) { + let source = inject(key); + if (defaultSource) source = inject(key, defaultSource); + if (treatDefaultAsFactory) source = inject(key, defaultSource, treatDefaultAsFactory); + if (typeof options === "function") return computed((oldValue) => options(source, oldValue)); + else return computed({ + get: (oldValue) => options.get(source, oldValue), + set: options.set + }); +} +//#endregion +//#region createReusableTemplate/index.ts +/** +* This function creates `define` and `reuse` components in pair, +* It also allow to pass a generic to bind with type. +* +* @see https://vueuse.org/createReusableTemplate +* +* @__NO_SIDE_EFFECTS__ +*/ +function createReusableTemplate(options = {}) { + const { inheritAttrs = true, name = "ReusableTemplate" } = options; + const render = shallowRef(); + const define = defineComponent({ + name: `${name}.define`, + setup(_, { slots }) { + return () => { + render.value = slots.default; + }; + } + }); + const reuse = defineComponent({ + inheritAttrs, + name: `${name}.reuse`, + props: options.props, + setup(props, { attrs, slots }) { + return () => { + var _render$value; + if (!render.value && true) throw new Error("[VueUse] Failed to find the definition of reusable template"); + const vnode = (_render$value = render.value) === null || _render$value === void 0 ? void 0 : _render$value.call(render, { + ...options.props == null ? keysToCamelKebabCase(attrs) : props, + $slots: slots + }); + return inheritAttrs && (vnode === null || vnode === void 0 ? void 0 : vnode.length) === 1 ? vnode[0] : vnode; + }; + } + }); + return makeDestructurable({ + define, + reuse + }, [define, reuse]); +} +function keysToCamelKebabCase(obj) { + const newObj = {}; + for (const key in obj) newObj[camelize(key)] = obj[key]; + return newObj; +} +//#endregion +//#region createTemplatePromise/index.ts +/** +* Creates a template promise component. +* +* @see https://vueuse.org/createTemplatePromise +* +* @__NO_SIDE_EFFECTS__ +*/ +function createTemplatePromise(options = {}) { + let index = 0; + const instances = ref([]); + function create(...args) { + const props = shallowReactive({ + key: index++, + args, + promise: void 0, + resolve: () => {}, + reject: () => {}, + isResolving: false, + options + }); + instances.value.push(props); + props.promise = new Promise((_resolve, _reject) => { + props.resolve = (v) => { + props.isResolving = true; + return _resolve(v); + }; + props.reject = _reject; + }).finally(() => { + props.promise = void 0; + const index = instances.value.indexOf(props); + if (index !== -1) instances.value.splice(index, 1); + }); + return props.promise; + } + function start(...args) { + if (options.singleton && instances.value.length > 0) return instances.value[0].promise; + return create(...args); + } + const component = defineComponent((_, { slots }) => { + const renderList = () => instances.value.map((props) => { + var _slots$default; + return h(Fragment, { key: props.key }, (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots, props)); + }); + if (options.transition) return () => h(TransitionGroup, options.transition, renderList); + return renderList; + }); + component.start = start; + return component; +} +//#endregion +//#region createUnrefFn/index.ts +/** +* Make a plain function accepting ref and raw values as arguments. +* Returns the same value the unconverted function returns, with proper typing. +* +* @__NO_SIDE_EFFECTS__ +*/ +function createUnrefFn(fn) { + return function(...args) { + return fn.apply(this, args.map((i) => toValue(i))); + }; +} +//#endregion +//#region _configurable.ts +const defaultWindow = isClient ? window : void 0; +const defaultDocument = isClient ? window.document : void 0; +const defaultNavigator = isClient ? window.navigator : void 0; +const defaultLocation = isClient ? window.location : void 0; +//#endregion +//#region unrefElement/index.ts +/** +* Get the dom element of a ref of element or Vue component instance +* +* @param elRef +*/ +function unrefElement(elRef) { + var _$el; + const plain = toValue(elRef); + return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain; +} +//#endregion +//#region useEventListener/index.ts +function useEventListener(...args) { + const register = (el, event, listener, options) => { + el.addEventListener(event, listener, options); + return () => el.removeEventListener(event, listener, options); + }; + const firstParamTargets = computed(() => { + const test = toArray(toValue(args[0])).filter((e) => e != null); + return test.every((e) => typeof e !== "string") ? test : void 0; + }); + return watchImmediate(() => { + var _firstParamTargets$va, _firstParamTargets$va2; + return [ + (_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null), + toArray(toValue(firstParamTargets.value ? args[1] : args[0])), + toArray(unref(firstParamTargets.value ? args[2] : args[1])), + toValue(firstParamTargets.value ? args[3] : args[2]) + ]; + }, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => { + if (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return; + const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options; + const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone)))); + onCleanup(() => { + cleanups.forEach((fn) => fn()); + }); + }, { flush: "post" }); +} +//#endregion +//#region onClickOutside/index.ts +let _iOSWorkaround = false; +function onClickOutside(target, handler, options = {}) { + const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options; + if (!window) return controls ? { + stop: noop, + cancel: noop, + trigger: noop + } : noop; + if (isIOS && !_iOSWorkaround) { + _iOSWorkaround = true; + const listenerOptions = { passive: true }; + Array.from(window.document.body.children).forEach((el) => el.addEventListener("click", noop, listenerOptions)); + window.document.documentElement.addEventListener("click", noop, listenerOptions); + } + let shouldListen = true; + const shouldIgnore = (event) => { + return toValue(ignore).some((target) => { + if (typeof target === "string") return Array.from(window.document.querySelectorAll(target)).some((el) => el === event.target || event.composedPath().includes(el)); + else { + const el = unrefElement(target); + return el && (event.target === el || event.composedPath().includes(el)); + } + }); + }; + /** + * Determines if the given target has multiple root elements. + * Referenced from: https://github.com/vuejs/test-utils/blob/ccb460be55f9f6be05ab708500a41ec8adf6f4bc/src/vue-wrapper.ts#L21 + */ + function hasMultipleRoots(target) { + const vm = toValue(target); + return vm && vm.$.subTree.shapeFlag === 16; + } + function checkMultipleRoots(target, event) { + const vm = toValue(target); + const children = vm.$.subTree && vm.$.subTree.children; + if (children == null || !Array.isArray(children)) return false; + return children.some((child) => child.el === event.target || event.composedPath().includes(child.el)); + } + const listener = (event) => { + const el = unrefElement(target); + if (event.target == null) return; + if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event)) return; + if (!el || el === event.target || event.composedPath().includes(el)) return; + if ("detail" in event && event.detail === 0) shouldListen = !shouldIgnore(event); + if (!shouldListen) { + shouldListen = true; + return; + } + handler(event); + }; + let isProcessingClick = false; + const cleanup = [ + useEventListener(window, "click", (event) => { + if (!isProcessingClick) { + isProcessingClick = true; + setTimeout(() => { + isProcessingClick = false; + }, 0); + listener(event); + } + }, { + passive: true, + capture + }), + useEventListener(window, "pointerdown", (e) => { + const el = unrefElement(target); + shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el)); + }, { passive: true }), + detectIframe && useEventListener(window, "blur", (event) => { + setTimeout(() => { + const el = unrefElement(target); + let activeEl = window.document.activeElement; + while (activeEl === null || activeEl === void 0 ? void 0 : activeEl.shadowRoot) activeEl = activeEl.shadowRoot.activeElement; + if ((activeEl === null || activeEl === void 0 ? void 0 : activeEl.tagName) === "IFRAME" && !(el === null || el === void 0 ? void 0 : el.contains(window.document.activeElement))) handler(event); + }, 0); + }, { passive: true }) + ].filter(Boolean); + const stop = () => cleanup.forEach((fn) => fn()); + if (controls) return { + stop, + cancel: () => { + shouldListen = false; + }, + trigger: (event) => { + shouldListen = true; + listener(event); + shouldListen = false; + } + }; + return stop; +} +//#endregion +//#region useMounted/index.ts +/** +* Mounted state in ref. +* +* @see https://vueuse.org/useMounted +* +* @__NO_SIDE_EFFECTS__ +*/ +function useMounted() { + const isMounted = shallowRef(false); + const instance = getCurrentInstance(); + if (instance) onMounted(() => { + isMounted.value = true; + }, instance); + return isMounted; +} +//#endregion +//#region useSupported/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useSupported(callback) { + const isMounted = useMounted(); + return computed(() => { + isMounted.value; + return Boolean(callback()); + }); +} +//#endregion +//#region useMutationObserver/index.ts +/** +* Watch for changes being made to the DOM tree. +* +* @see https://vueuse.org/useMutationObserver +* @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN +* @param target +* @param callback +* @param options +*/ +function useMutationObserver(target, callback, options = {}) { + const { window = defaultWindow, ...mutationOptions } = options; + let observer; + const isSupported = /* @__PURE__ */ useSupported(() => window && "MutationObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = computed(() => { + const value = toValue(target); + const items = toArray(value).map(unrefElement).filter(notNullish); + return new Set(items); + }); + const stopWatch = watch(targets, (newTargets) => { + cleanup(); + if (isSupported.value && newTargets.size) { + observer = new MutationObserver(callback); + newTargets.forEach((el) => observer.observe(el, mutationOptions)); + } + }, { + immediate: true, + flush: "post" + }); + const takeRecords = () => { + return observer === null || observer === void 0 ? void 0 : observer.takeRecords(); + }; + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop, + takeRecords + }; +} +//#endregion +//#region onElementRemoval/index.ts +/** +* Fires when the element or any element containing it is removed. +* +* @param target +* @param callback +* @param options +*/ +function onElementRemoval(target, callback, options = {}) { + const { window = defaultWindow, document = window === null || window === void 0 ? void 0 : window.document, flush = "sync" } = options; + if (!window || !document) return noop; + let stopFn; + const cleanupAndUpdate = (fn) => { + stopFn === null || stopFn === void 0 || stopFn(); + stopFn = fn; + }; + const stopWatch = watchEffect(() => { + const el = unrefElement(target); + if (el) { + const { stop } = useMutationObserver(document, (mutationsList) => { + if (mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el))) callback(mutationsList); + }, { + window, + childList: true, + subtree: true + }); + cleanupAndUpdate(stop); + } + }, { flush }); + const stopHandle = () => { + stopWatch(); + cleanupAndUpdate(); + }; + tryOnScopeDispose(stopHandle); + return stopHandle; +} +//#endregion +//#region onKeyStroke/index.ts +function createKeyPredicate(keyFilter) { + if (typeof keyFilter === "function") return keyFilter; + else if (typeof keyFilter === "string") return (event) => event.key === keyFilter; + else if (Array.isArray(keyFilter)) return (event) => keyFilter.includes(event.key); + return () => true; +} +function onKeyStroke(...args) { + let key; + let handler; + let options = {}; + if (args.length === 3) { + key = args[0]; + handler = args[1]; + options = args[2]; + } else if (args.length === 2) { + if (typeof args[1] === "object") { + key = true; + handler = args[0]; + options = args[1]; + } else { + key = args[0]; + handler = args[1]; + } + } else { + key = true; + handler = args[0]; + } + const { target = defaultWindow, eventName = "keydown", passive = false, dedupe = false } = options; + const predicate = createKeyPredicate(key); + const listener = (e) => { + if (e.repeat && toValue(dedupe)) return; + if (predicate(e)) handler(e); + }; + return useEventListener(target, eventName, listener, passive); +} +/** +* Listen to the keydown event of the given key. +* +* @see https://vueuse.org/onKeyStroke +* @param key +* @param handler +* @param options +*/ +function onKeyDown(key, handler, options = {}) { + return onKeyStroke(key, handler, { + ...options, + eventName: "keydown" + }); +} +/** +* Listen to the keypress event of the given key. +* +* @see https://vueuse.org/onKeyStroke +* @param key +* @param handler +* @param options +*/ +function onKeyPressed(key, handler, options = {}) { + return onKeyStroke(key, handler, { + ...options, + eventName: "keypress" + }); +} +/** +* Listen to the keyup event of the given key. +* +* @see https://vueuse.org/onKeyStroke +* @param key +* @param handler +* @param options +*/ +function onKeyUp(key, handler, options = {}) { + return onKeyStroke(key, handler, { + ...options, + eventName: "keyup" + }); +} +//#endregion +//#region onLongPress/index.ts +const DEFAULT_DELAY = 500; +const DEFAULT_THRESHOLD = 10; +function onLongPress(target, handler, options) { + var _options$modifiers10, _options$modifiers11; + const elementRef = computed(() => unrefElement(target)); + let timeout; + let posStart; + let startTimestamp; + let hasLongPressed = false; + function clear() { + if (timeout) { + clearTimeout(timeout); + timeout = void 0; + } + posStart = void 0; + startTimestamp = void 0; + hasLongPressed = false; + } + function getDelay(ev) { + const delay = options === null || options === void 0 ? void 0 : options.delay; + if (typeof delay === "function") return delay(ev); + return delay !== null && delay !== void 0 ? delay : DEFAULT_DELAY; + } + function onRelease(ev) { + var _options$modifiers, _options$modifiers2, _options$modifiers3; + const [_startTimestamp, _posStart, _hasLongPressed] = [ + startTimestamp, + posStart, + hasLongPressed + ]; + clear(); + if (!(options === null || options === void 0 ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp) return; + if ((options === null || options === void 0 || (_options$modifiers = options.modifiers) === null || _options$modifiers === void 0 ? void 0 : _options$modifiers.self) && ev.target !== elementRef.value) return; + if (options === null || options === void 0 || (_options$modifiers2 = options.modifiers) === null || _options$modifiers2 === void 0 ? void 0 : _options$modifiers2.prevent) ev.preventDefault(); + if (options === null || options === void 0 || (_options$modifiers3 = options.modifiers) === null || _options$modifiers3 === void 0 ? void 0 : _options$modifiers3.stop) ev.stopPropagation(); + const dx = ev.x - _posStart.x; + const dy = ev.y - _posStart.y; + const distance = Math.sqrt(dx * dx + dy * dy); + options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed, ev); + } + function onDown(ev) { + var _options$modifiers4, _options$modifiers5, _options$modifiers6; + if ((options === null || options === void 0 || (_options$modifiers4 = options.modifiers) === null || _options$modifiers4 === void 0 ? void 0 : _options$modifiers4.self) && ev.target !== elementRef.value) return; + clear(); + if (options === null || options === void 0 || (_options$modifiers5 = options.modifiers) === null || _options$modifiers5 === void 0 ? void 0 : _options$modifiers5.prevent) ev.preventDefault(); + if (options === null || options === void 0 || (_options$modifiers6 = options.modifiers) === null || _options$modifiers6 === void 0 ? void 0 : _options$modifiers6.stop) ev.stopPropagation(); + posStart = { + x: ev.x, + y: ev.y + }; + startTimestamp = ev.timeStamp; + timeout = setTimeout(() => { + hasLongPressed = true; + handler(ev); + }, getDelay(ev)); + } + function onMove(ev) { + var _options$modifiers7, _options$modifiers8, _options$modifiers9, _options$distanceThre; + if ((options === null || options === void 0 || (_options$modifiers7 = options.modifiers) === null || _options$modifiers7 === void 0 ? void 0 : _options$modifiers7.self) && ev.target !== elementRef.value) return; + if (!posStart || (options === null || options === void 0 ? void 0 : options.distanceThreshold) === false) return; + if (options === null || options === void 0 || (_options$modifiers8 = options.modifiers) === null || _options$modifiers8 === void 0 ? void 0 : _options$modifiers8.prevent) ev.preventDefault(); + if (options === null || options === void 0 || (_options$modifiers9 = options.modifiers) === null || _options$modifiers9 === void 0 ? void 0 : _options$modifiers9.stop) ev.stopPropagation(); + const dx = ev.x - posStart.x; + const dy = ev.y - posStart.y; + if (Math.sqrt(dx * dx + dy * dy) >= ((_options$distanceThre = options === null || options === void 0 ? void 0 : options.distanceThreshold) !== null && _options$distanceThre !== void 0 ? _options$distanceThre : DEFAULT_THRESHOLD)) clear(); + } + const listenerOptions = { + capture: options === null || options === void 0 || (_options$modifiers10 = options.modifiers) === null || _options$modifiers10 === void 0 ? void 0 : _options$modifiers10.capture, + once: options === null || options === void 0 || (_options$modifiers11 = options.modifiers) === null || _options$modifiers11 === void 0 ? void 0 : _options$modifiers11.once + }; + const cleanup = [ + useEventListener(elementRef, "pointerdown", onDown, listenerOptions), + useEventListener(elementRef, "pointermove", onMove, listenerOptions), + useEventListener(elementRef, [ + "pointerup", + "pointerleave", + "pointercancel" + ], onRelease, listenerOptions) + ]; + const stop = () => cleanup.forEach((fn) => fn()); + return stop; +} +//#endregion +//#region onStartTyping/index.ts +function isFocusedElementEditable() { + const { activeElement, body } = document; + if (!activeElement) return false; + if (activeElement === body) return false; + switch (activeElement.tagName) { + case "INPUT": + case "TEXTAREA": return true; + } + return activeElement.hasAttribute("contenteditable"); +} +function isTypedCharValid({ keyCode, metaKey, ctrlKey, altKey }) { + if (metaKey || ctrlKey || altKey) return false; + if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) return true; + if (keyCode >= 65 && keyCode <= 90) return true; + return false; +} +/** +* Fires when users start typing on non-editable elements. +* +* @see https://vueuse.org/onStartTyping +* @param callback +* @param options +*/ +function onStartTyping(callback, options = {}) { + const { document = defaultDocument, isTypedCharValid: isTypedCharValidFn = isTypedCharValid, isFocusedElementEditable: isFocusedElementEditableFn = isFocusedElementEditable } = options; + const keydown = (event) => { + if (!isFocusedElementEditableFn() && isTypedCharValidFn(event)) callback(event); + }; + if (document) useEventListener(document, "keydown", keydown, { passive: true }); +} +//#endregion +//#region useActiveElement/index.ts +/** +* Reactive `document.activeElement` +* +* @see https://vueuse.org/useActiveElement +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useActiveElement(options = {}) { + var _options$document; + const { window = defaultWindow, deep = true, triggerOnRemoval = false } = options; + const document = (_options$document = options.document) !== null && _options$document !== void 0 ? _options$document : window === null || window === void 0 ? void 0 : window.document; + const getDeepActiveElement = () => { + let element = document === null || document === void 0 ? void 0 : document.activeElement; + if (deep) { + var _element$shadowRoot; + while (element === null || element === void 0 ? void 0 : element.shadowRoot) element = element === null || element === void 0 || (_element$shadowRoot = element.shadowRoot) === null || _element$shadowRoot === void 0 ? void 0 : _element$shadowRoot.activeElement; + } + return element; + }; + const activeElement = shallowRef(); + const trigger = () => { + activeElement.value = getDeepActiveElement(); + }; + if (window) { + const listenerOptions = { + capture: true, + passive: true + }; + useEventListener(window, "blur", (event) => { + if (event.relatedTarget !== null) return; + trigger(); + }, listenerOptions); + useEventListener(window, "focus", trigger, listenerOptions); + } + if (triggerOnRemoval) onElementRemoval(activeElement, trigger, { document }); + trigger(); + return activeElement; +} +//#endregion +//#region useRafFn/index.ts +/** +* Call function on every `requestAnimationFrame`. With controls of pausing and resuming. +* +* @see https://vueuse.org/useRafFn +* @param fn +* @param options +*/ +function useRafFn(fn, options = {}) { + const { immediate = true, fpsLimit = null, window = defaultWindow, once = false } = options; + const isActive = shallowRef(false); + const intervalLimit = computed(() => { + const limit = toValue(fpsLimit); + return limit ? 1e3 / limit : null; + }); + let previousFrameTimestamp = 0; + let rafId = null; + function loop(timestamp) { + if (!isActive.value || !window) return; + if (!previousFrameTimestamp) previousFrameTimestamp = timestamp; + const delta = timestamp - previousFrameTimestamp; + if (intervalLimit.value && delta < intervalLimit.value) { + rafId = window.requestAnimationFrame(loop); + return; + } + previousFrameTimestamp = timestamp; + fn({ + delta, + timestamp + }); + if (once) { + isActive.value = false; + rafId = null; + return; + } + rafId = window.requestAnimationFrame(loop); + } + function resume() { + if (!isActive.value && window) { + isActive.value = true; + previousFrameTimestamp = 0; + rafId = window.requestAnimationFrame(loop); + } + } + function pause() { + isActive.value = false; + if (rafId != null && window) { + window.cancelAnimationFrame(rafId); + rafId = null; + } + } + if (immediate) resume(); + tryOnScopeDispose(pause); + return { + isActive: shallowReadonly(isActive), + pause, + resume + }; +} +//#endregion +//#region useAnimate/index.ts +/** +* Reactive Web Animations API +* +* @see https://vueuse.org/useAnimate +* @param target +* @param keyframes +* @param options +*/ +function useAnimate(target, keyframes, options) { + let config; + let animateOptions; + if (isObject(options)) { + config = options; + animateOptions = objectOmit(options, [ + "window", + "immediate", + "commitStyles", + "persist", + "onReady", + "onError" + ]); + } else { + config = { duration: options }; + animateOptions = options; + } + const { window = defaultWindow, immediate = true, commitStyles, persist, playbackRate: _playbackRate = 1, onReady, onError = (e) => { + console.error(e); + } } = config; + const isSupported = /* @__PURE__ */ useSupported(() => window && HTMLElement && "animate" in HTMLElement.prototype); + const animate = shallowRef(void 0); + const store = shallowReactive({ + startTime: null, + currentTime: null, + timeline: null, + playbackRate: _playbackRate, + pending: false, + playState: immediate ? "idle" : "paused", + replaceState: "active" + }); + const pending = computed(() => store.pending); + const playState = computed(() => store.playState); + const replaceState = computed(() => store.replaceState); + const startTime = computed({ + get() { + return store.startTime; + }, + set(value) { + store.startTime = value; + if (animate.value) animate.value.startTime = value; + } + }); + const currentTime = computed({ + get() { + return store.currentTime; + }, + set(value) { + store.currentTime = value; + if (animate.value) { + animate.value.currentTime = value; + syncResume(); + } + } + }); + const timeline = computed({ + get() { + return store.timeline; + }, + set(value) { + store.timeline = value; + if (animate.value) animate.value.timeline = value; + } + }); + const playbackRate = computed({ + get() { + return store.playbackRate; + }, + set(value) { + store.playbackRate = value; + if (animate.value) animate.value.playbackRate = value; + } + }); + const play = () => { + if (animate.value) try { + animate.value.play(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + else update(); + }; + const pause = () => { + try { + var _animate$value; + (_animate$value = animate.value) === null || _animate$value === void 0 || _animate$value.pause(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const reverse = () => { + if (!animate.value) update(); + try { + var _animate$value2; + (_animate$value2 = animate.value) === null || _animate$value2 === void 0 || _animate$value2.reverse(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + }; + const finish = () => { + try { + var _animate$value3; + (_animate$value3 = animate.value) === null || _animate$value3 === void 0 || _animate$value3.finish(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const cancel = () => { + try { + var _animate$value4; + (_animate$value4 = animate.value) === null || _animate$value4 === void 0 || _animate$value4.cancel(); + syncPause(); + } catch (e) { + onError(e); + } + }; + watch(() => unrefElement(target), (el) => { + if (el) update(true); + else animate.value = void 0; + }); + watch(() => keyframes, (value) => { + if (animate.value) { + update(); + const targetEl = unrefElement(target); + if (targetEl) animate.value.effect = new KeyframeEffect(targetEl, toValue(value), animateOptions); + } + }, { deep: true }); + tryOnMounted(() => update(true), false); + tryOnScopeDispose(cancel); + function update(init) { + const el = unrefElement(target); + if (!isSupported.value || !el) return; + if (!animate.value) animate.value = el.animate(toValue(keyframes), animateOptions); + if (persist) animate.value.persist(); + if (_playbackRate !== 1) animate.value.playbackRate = _playbackRate; + if (init && !immediate) animate.value.pause(); + else syncResume(); + onReady === null || onReady === void 0 || onReady(animate.value); + } + const listenerOptions = { passive: true }; + useEventListener(animate, [ + "cancel", + "finish", + "remove" + ], syncPause, listenerOptions); + useEventListener(animate, "finish", () => { + var _animate$value5; + if (commitStyles) (_animate$value5 = animate.value) === null || _animate$value5 === void 0 || _animate$value5.commitStyles(); + }, listenerOptions); + const { resume: resumeRef, pause: pauseRef } = useRafFn(() => { + if (!animate.value) return; + store.pending = animate.value.pending; + store.playState = animate.value.playState; + store.replaceState = animate.value.replaceState; + store.startTime = animate.value.startTime; + store.currentTime = animate.value.currentTime; + store.timeline = animate.value.timeline; + store.playbackRate = animate.value.playbackRate; + }, { immediate: false }); + function syncResume() { + if (isSupported.value) resumeRef(); + } + function syncPause() { + if (isSupported.value && window) window.requestAnimationFrame(pauseRef); + } + return { + isSupported, + animate, + play, + pause, + reverse, + finish, + cancel, + pending, + playState, + replaceState, + startTime, + currentTime, + timeline, + playbackRate + }; +} +//#endregion +//#region useAsyncQueue/index.ts +/** +* Asynchronous queue task controller. +* +* @see https://vueuse.org/useAsyncQueue +* @param tasks +* @param options +*/ +function useAsyncQueue(tasks, options) { + const { interrupt = true, onError = noop, onFinished = noop, signal } = options || {}; + const promiseState = { + aborted: "aborted", + fulfilled: "fulfilled", + pending: "pending", + rejected: "rejected" + }; + const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ + state: promiseState.pending, + data: null + })); + const result = reactive(initialResult); + const activeIndex = shallowRef(-1); + if (!tasks || tasks.length === 0) { + onFinished(); + return { + activeIndex, + result + }; + } + function updateResult(state, res) { + activeIndex.value++; + result[activeIndex.value].data = res; + result[activeIndex.value].state = state; + } + tasks.reduce((prev, curr) => { + return prev.then((prevRes) => { + var _result$activeIndex$v; + if (signal === null || signal === void 0 ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, /* @__PURE__ */ new Error("aborted")); + return; + } + if (((_result$activeIndex$v = result[activeIndex.value]) === null || _result$activeIndex$v === void 0 ? void 0 : _result$activeIndex$v.state) === promiseState.rejected && interrupt) { + onFinished(); + return; + } + const done = curr(prevRes).then((currentRes) => { + updateResult(promiseState.fulfilled, currentRes); + if (activeIndex.value === tasks.length - 1) onFinished(); + return currentRes; + }); + if (!signal) return done; + return Promise.race([done, whenAborted(signal)]); + }).catch((e) => { + if (signal === null || signal === void 0 ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, e); + return e; + } + updateResult(promiseState.rejected, e); + onError(); + if (activeIndex.value === tasks.length - 1) onFinished(); + return e; + }); + }, Promise.resolve()); + return { + activeIndex, + result + }; +} +function whenAborted(signal) { + return new Promise((resolve, reject) => { + const error = /* @__PURE__ */ new Error("aborted"); + if (signal.aborted) reject(error); + else signal.addEventListener("abort", () => reject(error), { once: true }); + }); +} +//#endregion +//#region useAsyncState/index.ts +/** +* Reactive async state. Will not block your setup function and will trigger changes once +* the promise is ready. +* +* @see https://vueuse.org/useAsyncState +* @param promise The promise / async function to be resolved +* @param initialState The initial state, used until the first evaluation finishes +* @param options +*/ +function useAsyncState(promise, initialState, options) { + var _globalThis$reportErr; + const { immediate = true, delay = 0, onError = (_globalThis$reportErr = globalThis.reportError) !== null && _globalThis$reportErr !== void 0 ? _globalThis$reportErr : noop, onSuccess = noop, resetOnExecute = true, shallow = true, throwError } = options !== null && options !== void 0 ? options : {}; + const state = shallow ? shallowRef(initialState) : ref(initialState); + const isReady = shallowRef(false); + const isLoading = shallowRef(false); + const error = shallowRef(void 0); + let executionsCount = 0; + async function execute(delay = 0, ...args) { + const executionId = executionsCount += 1; + if (resetOnExecute) state.value = toValue(initialState); + error.value = void 0; + isReady.value = false; + isLoading.value = true; + if (delay > 0) await promiseTimeout(delay); + const _promise = typeof promise === "function" ? promise(...args) : promise; + try { + const data = await _promise; + if (executionId === executionsCount) { + state.value = data; + isReady.value = true; + } + onSuccess(data); + return data; + } catch (e) { + if (executionId === executionsCount) error.value = e; + onError(e); + if (throwError) throw e; + } finally { + if (executionId === executionsCount) isLoading.value = false; + } + } + if (immediate) execute(delay); + const shell = { + state, + isReady, + isLoading, + error, + execute, + executeImmediate: (...args) => execute(0, ...args) + }; + function waitUntilIsLoaded() { + return new Promise((resolve, reject) => { + until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject); + }); + } + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilIsLoaded().then(onFulfilled, onRejected); + } + }; +} +//#endregion +//#region useBase64/serialization.ts +const defaults = { + array: (v) => JSON.stringify(v), + object: (v) => JSON.stringify(v), + set: (v) => JSON.stringify(Array.from(v)), + map: (v) => JSON.stringify(Object.fromEntries(v)), + null: () => "" +}; +function getDefaultSerialization(target) { + if (!target) return defaults.null; + if (target instanceof Map) return defaults.map; + else if (target instanceof Set) return defaults.set; + else if (Array.isArray(target)) return defaults.array; + else return defaults.object; +} +//#endregion +//#region useBase64/index.ts +function useBase64(target, options) { + const base64 = shallowRef(""); + const promise = shallowRef(); + function execute() { + if (!isClient) return; + promise.value = new Promise((resolve, reject) => { + try { + const _target = toValue(target); + if (_target == null) resolve(""); + else if (typeof _target === "string") resolve(blobToBase64(new Blob([_target], { type: "text/plain" }))); + else if (_target instanceof Blob) resolve(blobToBase64(_target)); + else if (_target instanceof ArrayBuffer) resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target)))); + else if (_target instanceof HTMLCanvasElement) resolve(_target.toDataURL(options === null || options === void 0 ? void 0 : options.type, options === null || options === void 0 ? void 0 : options.quality)); + else if (_target instanceof HTMLImageElement) { + const img = _target.cloneNode(false); + img.crossOrigin = "Anonymous"; + imgLoaded(img).then(() => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + resolve(canvas.toDataURL(options === null || options === void 0 ? void 0 : options.type, options === null || options === void 0 ? void 0 : options.quality)); + }).catch(reject); + } else if (typeof _target === "object") { + const serialized = ((options === null || options === void 0 ? void 0 : options.serializer) || getDefaultSerialization(_target))(_target); + return resolve(blobToBase64(new Blob([serialized], { type: "application/json" }))); + } else reject(/* @__PURE__ */ new Error("target is unsupported types")); + } catch (error) { + reject(error); + } + }); + promise.value.then((res) => { + base64.value = (options === null || options === void 0 ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, "") : res; + }); + return promise.value; + } + if (isRef(target) || typeof target === "function") watch(target, execute, { immediate: true }); + else execute(); + return { + base64, + promise, + execute + }; +} +function imgLoaded(img) { + return new Promise((resolve, reject) => { + if (!img.complete) { + img.onload = () => { + resolve(); + }; + img.onerror = reject; + } else resolve(); + }); +} +function blobToBase64(blob) { + return new Promise((resolve, reject) => { + const fr = new FileReader(); + fr.onload = (e) => { + resolve(e.target.result); + }; + fr.onerror = reject; + fr.readAsDataURL(blob); + }); +} +//#endregion +//#region useBattery/index.ts +/** +* Reactive Battery Status API. +* +* @see https://vueuse.org/useBattery +* +* @__NO_SIDE_EFFECTS__ +*/ +function useBattery(options = {}) { + const { navigator = defaultNavigator } = options; + const events = [ + "chargingchange", + "chargingtimechange", + "dischargingtimechange", + "levelchange" + ]; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "getBattery" in navigator && typeof navigator.getBattery === "function"); + const charging = shallowRef(false); + const chargingTime = shallowRef(0); + const dischargingTime = shallowRef(0); + const level = shallowRef(1); + let battery; + function updateBatteryInfo() { + charging.value = this.charging; + chargingTime.value = this.chargingTime || 0; + dischargingTime.value = this.dischargingTime || 0; + level.value = this.level; + } + if (isSupported.value) navigator.getBattery().then((_battery) => { + battery = _battery; + updateBatteryInfo.call(battery); + useEventListener(battery, events, updateBatteryInfo, { passive: true }); + }); + return { + isSupported, + charging, + chargingTime, + dischargingTime, + level + }; +} +//#endregion +//#region useBluetooth/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useBluetooth(options) { + let { acceptAllDevices = false } = options || {}; + const { filters = void 0, optionalServices = void 0, navigator = defaultNavigator } = options || {}; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "bluetooth" in navigator); + const device = shallowRef(); + const error = shallowRef(null); + watch(device, () => { + connectToBluetoothGATTServer(); + }); + async function requestDevice() { + if (!isSupported.value) return; + error.value = null; + if (filters && filters.length > 0) acceptAllDevices = false; + try { + device.value = await (navigator === null || navigator === void 0 ? void 0 : navigator.bluetooth.requestDevice({ + acceptAllDevices, + filters, + optionalServices + })); + } catch (err) { + error.value = err; + } + } + const server = shallowRef(); + const isConnected = shallowRef(false); + function reset() { + isConnected.value = false; + device.value = void 0; + server.value = void 0; + } + async function connectToBluetoothGATTServer() { + error.value = null; + if (device.value && device.value.gatt) try { + server.value = await device.value.gatt.connect(); + isConnected.value = server.value.connected; + } catch (err) { + error.value = err; + } + } + tryOnMounted(() => { + useEventListener(device, "gattserverdisconnected", reset, { + passive: true, + once: true + }); + connectToBluetoothGATTServer(); + }); + tryOnScopeDispose(() => { + var _device$value$gatt; + if (device.value) (_device$value$gatt = device.value.gatt) === null || _device$value$gatt === void 0 || _device$value$gatt.disconnect(); + }); + return { + isSupported, + isConnected: shallowReadonly(isConnected), + device, + requestDevice, + server, + error + }; +} +//#endregion +//#region useSSRWidth/index.ts +const ssrWidthSymbol = Symbol("vueuse-ssr-width"); +/* @__NO_SIDE_EFFECTS__ */ +function useSSRWidth() { + const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null; + return typeof ssrWidth === "number" ? ssrWidth : void 0; +} +function provideSSRWidth(width, app) { + if (app !== void 0) app.provide(ssrWidthSymbol, width); + else provideLocal(ssrWidthSymbol, width); +} +//#endregion +//#region useMediaQuery/index.ts +/** +* Reactive Media Query. +* +* @see https://vueuse.org/useMediaQuery +* @param query +* @param options +*/ +function useMediaQuery(query, options = {}) { + const { window = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function"); + const ssrSupport = shallowRef(typeof ssrWidth === "number"); + const mediaQuery = shallowRef(); + const matches = shallowRef(false); + const handler = (event) => { + matches.value = event.matches; + }; + watchEffect(() => { + if (ssrSupport.value) { + ssrSupport.value = !isSupported.value; + const queryStrings = toValue(query).split(","); + matches.value = queryStrings.some((queryString) => { + const not = queryString.includes("not all"); + const minWidth = queryString.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/); + const maxWidth = queryString.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/); + let res = Boolean(minWidth || maxWidth); + if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]); + if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]); + return not ? !res : res; + }); + return; + } + if (!isSupported.value) return; + mediaQuery.value = window.matchMedia(toValue(query)); + matches.value = mediaQuery.value.matches; + }); + useEventListener(mediaQuery, "change", handler, { passive: true }); + return computed(() => matches.value); +} +//#endregion +//#region useBreakpoints/breakpoints.ts +/** +* Breakpoints from Tailwind V2 +* +* @see https://tailwindcss.com/docs/breakpoints +*/ +const breakpointsTailwind = { + "sm": 640, + "md": 768, + "lg": 1024, + "xl": 1280, + "2xl": 1536 +}; +/** +* Breakpoints from Bootstrap V5 +* +* @see https://getbootstrap.com/docs/5.0/layout/breakpoints +*/ +const breakpointsBootstrapV5 = { + xs: 0, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1400 +}; +/** +* Breakpoints from Vuetify V2 +* +* @see https://v2.vuetifyjs.com/en/features/breakpoints/ +*/ +const breakpointsVuetifyV2 = { + xs: 0, + sm: 600, + md: 960, + lg: 1264, + xl: 1904 +}; +/** +* Breakpoints from Vuetify V3 +* +* @see https://vuetifyjs.com/en/styles/float/#overview +*/ +const breakpointsVuetifyV3 = { + xs: 0, + sm: 600, + md: 960, + lg: 1280, + xl: 1920, + xxl: 2560 +}; +/** +* Alias to `breakpointsVuetifyV2` +* +* @deprecated explictly use `breakpointsVuetifyV2` or `breakpointsVuetifyV3` instead +*/ +const breakpointsVuetify = breakpointsVuetifyV2; +/** +* Breakpoints from Ant Design +* +* @see https://ant.design/components/layout/#breakpoint-width +*/ +const breakpointsAntDesign = { + xs: 480, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1600 +}; +/** +* Breakpoints from Quasar V2 +* +* @see https://quasar.dev/style/breakpoints +*/ +const breakpointsQuasar = { + xs: 0, + sm: 600, + md: 1024, + lg: 1440, + xl: 1920 +}; +/** +* Sematic Breakpoints +*/ +const breakpointsSematic = { + mobileS: 320, + mobileM: 375, + mobileL: 425, + tablet: 768, + laptop: 1024, + laptopL: 1440, + desktop4K: 2560 +}; +/** +* Breakpoints from Master CSS +* +* @see https://docs.master.co/css/breakpoints +*/ +const breakpointsMasterCss = { + "3xs": 360, + "2xs": 480, + "xs": 600, + "sm": 768, + "md": 1024, + "lg": 1280, + "xl": 1440, + "2xl": 1600, + "3xl": 1920, + "4xl": 2560 +}; +/** +* Breakpoints from PrimeFlex +* +* @see https://primeflex.org/installation +*/ +const breakpointsPrimeFlex = { + sm: 576, + md: 768, + lg: 992, + xl: 1200 +}; +/** +* Breakpoints from ElementUI/ElementPlus +* +* @see https://element.eleme.io/#/en-US/component/layout +* @see https://element-plus.org/en-US/component/layout.html +*/ +const breakpointsElement = { + xs: 0, + sm: 768, + md: 992, + lg: 1200, + xl: 1920 +}; +//#endregion +//#region useBreakpoints/index.ts +/** +* Reactively viewport breakpoints +* +* @see https://vueuse.org/useBreakpoints +* +* @__NO_SIDE_EFFECTS__ +*/ +function useBreakpoints(breakpoints, options = {}) { + function getValue(k, delta) { + let v = toValue(breakpoints[toValue(k)]); + if (delta != null) v = increaseWithUnit(v, delta); + if (typeof v === "number") v = `${v}px`; + return v; + } + const { window = defaultWindow, strategy = "min-width", ssrWidth = /* @__PURE__ */ useSSRWidth() } = options; + const ssrSupport = typeof ssrWidth === "number"; + const mounted = ssrSupport ? shallowRef(false) : { value: true }; + if (ssrSupport) tryOnMounted(() => mounted.value = !!window); + function match(query, size) { + if (!mounted.value && ssrSupport) return query === "min" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size); + if (!window) return false; + return window.matchMedia(`(${query}-width: ${size})`).matches; + } + const greaterOrEqual = (k) => { + return useMediaQuery(() => `(min-width: ${getValue(k)})`, options); + }; + const smallerOrEqual = (k) => { + return useMediaQuery(() => `(max-width: ${getValue(k)})`, options); + }; + const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => { + Object.defineProperty(shortcuts, k, { + get: () => strategy === "min-width" ? greaterOrEqual(k) : smallerOrEqual(k), + enumerable: true, + configurable: true + }); + return shortcuts; + }, {}); + function current() { + const points = Object.keys(breakpoints).map((k) => [ + k, + shortcutMethods[k], + pxValue(getValue(k)) + ]).sort((a, b) => a[2] - b[2]); + return computed(() => points.filter(([, v]) => v.value).map(([k]) => k)); + } + return Object.assign(shortcutMethods, { + greaterOrEqual, + smallerOrEqual, + greater(k) { + return useMediaQuery(() => `(min-width: ${getValue(k, .1)})`, options); + }, + smaller(k) { + return useMediaQuery(() => `(max-width: ${getValue(k, -.1)})`, options); + }, + between(a, b) { + return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -.1)})`, options); + }, + isGreater(k) { + return match("min", getValue(k, .1)); + }, + isGreaterOrEqual(k) { + return match("min", getValue(k)); + }, + isSmaller(k) { + return match("max", getValue(k, -.1)); + }, + isSmallerOrEqual(k) { + return match("max", getValue(k)); + }, + isInBetween(a, b) { + return match("min", getValue(a)) && match("max", getValue(b, -.1)); + }, + current, + active() { + const bps = current(); + return computed(() => bps.value.length === 0 ? "" : bps.value.at(strategy === "min-width" ? -1 : 0)); + } + }); +} +//#endregion +//#region useBroadcastChannel/index.ts +/** +* Reactive BroadcastChannel +* +* @see https://vueuse.org/useBroadcastChannel +* @see https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel +* @param options +* +*/ +function useBroadcastChannel(options) { + const { name, window = defaultWindow } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window && "BroadcastChannel" in window); + const isClosed = shallowRef(false); + const channel = shallowRef(); + const data = shallowRef(); + const error = shallowRef(null); + const post = (data) => { + if (channel.value) channel.value.postMessage(data); + }; + const close = () => { + if (channel.value) channel.value.close(); + isClosed.value = true; + }; + if (isSupported.value) tryOnMounted(() => { + error.value = null; + channel.value = new BroadcastChannel(name); + const listenerOptions = { passive: true }; + useEventListener(channel, "message", (e) => { + data.value = e.data; + }, listenerOptions); + useEventListener(channel, "messageerror", (e) => { + error.value = e; + }, listenerOptions); + useEventListener(channel, "close", () => { + isClosed.value = true; + }, listenerOptions); + }); + tryOnScopeDispose(() => { + close(); + }); + return { + isSupported, + channel, + data, + post, + close, + error, + isClosed + }; +} +//#endregion +//#region useBrowserLocation/index.ts +const WRITABLE_PROPERTIES = [ + "hash", + "host", + "hostname", + "href", + "pathname", + "port", + "protocol", + "search" +]; +/** +* Reactive browser location. +* +* @see https://vueuse.org/useBrowserLocation +* +* @__NO_SIDE_EFFECTS__ +*/ +function useBrowserLocation(options = {}) { + const { window = defaultWindow } = options; + const refs = Object.fromEntries(WRITABLE_PROPERTIES.map((key) => [key, ref()])); + const buildState = (trigger) => { + var _window$location; + const { state, length } = (window === null || window === void 0 ? void 0 : window.history) || {}; + const { origin } = (window === null || window === void 0 ? void 0 : window.location) || {}; + for (const key of WRITABLE_PROPERTIES) refs[key].value = window === null || window === void 0 || (_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location[key]; + return reactive({ + trigger, + state, + length, + origin, + ...refs + }); + }; + const state = ref(buildState("load")); + for (const [key, ref] of objectEntries(refs)) watch(ref, (value) => { + if (!(window === null || window === void 0 ? void 0 : window.location) || window.location[key] === value) return; + window.location[key] = value; + }); + if (window) { + const listenerOptions = { passive: true }; + useEventListener(window, "popstate", () => state.value = buildState("popstate"), listenerOptions); + useEventListener(window, "hashchange", () => state.value = buildState("hashchange"), listenerOptions); + } + return state; +} +//#endregion +//#region useCached/index.ts +function useCached(refValue, comparator = (newSourceValue, cachedValue) => newSourceValue === cachedValue, options) { + const { deepRefs = true, ...watchOptions } = options || {}; + const cachedValue = createRef(refValue.value, deepRefs); + watch(() => refValue.value, (value) => { + if (!comparator(value, cachedValue.value)) cachedValue.value = value; + }, watchOptions); + return cachedValue; +} +//#endregion +//#region usePermission/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function usePermission(permissionDesc, options = {}) { + const { controls = false, navigator = defaultNavigator } = options; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "permissions" in navigator); + const permissionStatus = shallowRef(); + const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc; + const state = shallowRef(); + const update = () => { + var _permissionStatus$val, _permissionStatus$val2; + state.value = (_permissionStatus$val = (_permissionStatus$val2 = permissionStatus.value) === null || _permissionStatus$val2 === void 0 ? void 0 : _permissionStatus$val2.state) !== null && _permissionStatus$val !== void 0 ? _permissionStatus$val : "prompt"; + }; + useEventListener(permissionStatus, "change", update, { passive: true }); + const query = createSingletonPromise(async () => { + if (!isSupported.value) return; + if (!permissionStatus.value) try { + permissionStatus.value = await navigator.permissions.query(desc); + } catch (_unused) { + permissionStatus.value = void 0; + } finally { + update(); + } + if (controls) return toRaw(permissionStatus.value); + }); + query(); + if (controls) return { + state, + isSupported, + query + }; + else return state; +} +//#endregion +//#region useClipboard/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useClipboard(options = {}) { + const { navigator = defaultNavigator, read = false, source, copiedDuring = 1500, legacy = false } = options; + const isClipboardApiSupported = /* @__PURE__ */ useSupported(() => navigator && "clipboard" in navigator); + const permissionRead = /* @__PURE__ */ usePermission("clipboard-read"); + const permissionWrite = /* @__PURE__ */ usePermission("clipboard-write"); + const isSupported = computed(() => isClipboardApiSupported.value || legacy); + const text = shallowRef(""); + const copied = shallowRef(false); + const copyPending = shallowRef(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false }); + let lastLegacyId = 0; + async function updateText() { + let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value)); + if (!useLegacy) try { + text.value = await navigator.clipboard.readText(); + } catch (_unused) { + useLegacy = true; + } + if (useLegacy) text.value = legacyRead(); + } + if (isSupported.value && read) useEventListener(["copy", "cut"], updateText, { passive: true }); + async function copy(value) { + const resolvedValue = value !== null && value !== void 0 ? value : toValue(source); + if (isSupported.value && resolvedValue != null) { + copyPending.value = true; + let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value)); + if (!useLegacy) try { + const clipboardItem = createClipboardItem(resolvedValue); + await navigator.clipboard.write([clipboardItem]); + } catch (_unused2) { + useLegacy = true; + } + if (useLegacy) { + if (typeof resolvedValue === "string") { + text.value = resolvedValue; + legacyCopy(resolvedValue); + } else { + const currentId = ++lastLegacyId; + const resolvedText = await resolvedValue(); + if (resolvedText != null && currentId === lastLegacyId) { + text.value = resolvedText; + legacyCopy(resolvedText); + } + } + } + copied.value = true; + timeout.start(); + copyPending.value = false; + } + } + function createClipboardItem(value) { + if (typeof value === "string") { + text.value = value; + return new ClipboardItem({ "text/plain": value }); + } else return new ClipboardItem({ "text/plain": value().then((resolvedText = "") => { + text.value = resolvedText; + return new Blob([resolvedText], { type: "text/plain" }); + }) }); + } + function legacyCopy(value) { + const ta = document.createElement("textarea"); + ta.value = value; + ta.style.position = "absolute"; + ta.style.opacity = "0"; + ta.setAttribute("readonly", ""); + document.body.appendChild(ta); + ta.select(); + document.execCommand("copy"); + ta.remove(); + } + function legacyRead() { + var _document$getSelectio, _document, _document$getSelectio2; + return (_document$getSelectio = (_document = document) === null || _document === void 0 || (_document$getSelectio2 = _document.getSelection) === null || _document$getSelectio2 === void 0 || (_document$getSelectio2 = _document$getSelectio2.call(_document)) === null || _document$getSelectio2 === void 0 ? void 0 : _document$getSelectio2.toString()) !== null && _document$getSelectio !== void 0 ? _document$getSelectio : ""; + } + function isAllowed(status) { + return status === "granted" || status === "prompt"; + } + return { + copyPending: shallowReadonly(copyPending), + isSupported, + text: shallowReadonly(text), + copied: shallowReadonly(copied), + copy + }; +} +//#endregion +//#region useClipboardItems/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useClipboardItems(options = {}) { + const { navigator = defaultNavigator, read = false, source, copiedDuring = 1500 } = options; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "clipboard" in navigator); + const content = shallowRef([]); + const copied = shallowRef(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false }); + function updateContent() { + if (isSupported.value) navigator.clipboard.read().then((items) => { + content.value = items; + }); + } + if (isSupported.value && read) useEventListener(["copy", "cut"], updateContent, { passive: true }); + async function copy(value = toValue(source)) { + if (isSupported.value && value != null) { + await navigator.clipboard.write(value); + content.value = value; + copied.value = true; + timeout.start(); + } + } + return { + isSupported, + content: shallowReadonly(content), + copied: shallowReadonly(copied), + copy, + read: updateContent + }; +} +//#endregion +//#region useCloned/index.ts +function cloneFnJSON(source) { + return JSON.parse(JSON.stringify(source)); +} +function useCloned(source, options = {}) { + const cloned = ref({}); + const isModified = shallowRef(false); + let _lastSync = false; + const { manual, clone = cloneFnJSON, deep = true, immediate = true } = options; + watch(cloned, () => { + if (_lastSync) { + _lastSync = false; + return; + } + isModified.value = true; + }, { + deep: true, + flush: "sync" + }); + function sync() { + _lastSync = true; + isModified.value = false; + cloned.value = clone(toValue(source)); + } + if (!manual && (isRef(source) || typeof source === "function")) watch(source, sync, { + ...options, + deep, + immediate + }); + else sync(); + return { + cloned, + isModified, + sync + }; +} +//#endregion +//#region ssr-handlers.ts +const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +const globalKey = "__vueuse_ssr_handlers__"; +const handlers = /* #__PURE__ */ getHandlers(); +function getHandlers() { + if (!(globalKey in _global)) _global[globalKey] = _global[globalKey] || {}; + return _global[globalKey]; +} +function getSSRHandler(key, fallback) { + return handlers[key] || fallback; +} +function setSSRHandler(key, fn) { + handlers[key] = fn; +} +//#endregion +//#region usePreferredDark/index.ts +/** +* Reactive dark theme preference. +* +* @see https://vueuse.org/usePreferredDark +* @param [options] +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePreferredDark(options) { + return useMediaQuery("(prefers-color-scheme: dark)", options); +} +//#endregion +//#region useStorage/guess.ts +function guessSerializerType(rawInit) { + return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : !Number.isNaN(rawInit) ? "number" : "any"; +} +//#endregion +//#region useStorage/index.ts +const StorageSerializers = { + boolean: { + read: (v) => v === "true", + write: (v) => String(v) + }, + object: { + read: (v) => JSON.parse(v), + write: (v) => JSON.stringify(v) + }, + number: { + read: (v) => Number.parseFloat(v), + write: (v) => String(v) + }, + any: { + read: (v) => v, + write: (v) => String(v) + }, + string: { + read: (v) => v, + write: (v) => String(v) + }, + map: { + read: (v) => new Map(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v.entries())) + }, + set: { + read: (v) => new Set(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v)) + }, + date: { + read: (v) => new Date(v), + write: (v) => v.toISOString() + } +}; +const customStorageEventName = "vueuse-storage"; +/** +* Reactive LocalStorage/SessionStorage. +* +* @see https://vueuse.org/useStorage +*/ +function useStorage(key, defaults, storage, options = {}) { + var _options$serializer; + const { flush = "pre", deep = true, listenToStorageChanges = true, writeDefaults = true, mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => { + console.error(e); + }, initOnMounted } = options; + const data = (shallow ? shallowRef : ref)(typeof defaults === "function" ? defaults() : defaults); + const keyComputed = computed(() => toValue(key)); + if (!storage) try { + storage = getSSRHandler("getDefaultStorage", () => defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.localStorage)(); + } catch (e) { + onError(e); + } + if (!storage) return data; + const rawInit = toValue(defaults); + const type = guessSerializerType(rawInit); + const serializer = (_options$serializer = options.serializer) !== null && _options$serializer !== void 0 ? _options$serializer : StorageSerializers[type]; + const { pause: pauseWatch, resume: resumeWatch } = watchPausable(data, (newValue) => write(newValue), { + flush, + deep, + eventFilter + }); + watch(keyComputed, () => update(), { flush }); + let firstMounted = false; + const onStorageEvent = (ev) => { + if (initOnMounted && !firstMounted) return; + update(ev); + }; + const onStorageCustomEvent = (ev) => { + if (initOnMounted && !firstMounted) return; + updateFromCustomEvent(ev); + }; + /** + * The custom event is needed for same-document syncing when using custom + * storage backends, but it doesn't work across different documents. + * + * TODO: Consider implementing a BroadcastChannel-based solution that fixes this. + */ + if (window && listenToStorageChanges) { + if (storage instanceof Storage) useEventListener(window, "storage", onStorageEvent, { passive: true }); + else useEventListener(window, customStorageEventName, onStorageCustomEvent); + } + if (initOnMounted) tryOnMounted(() => { + firstMounted = true; + update(); + }); + else update(); + function dispatchWriteEvent(oldValue, newValue) { + if (window) { + const payload = { + key: keyComputed.value, + oldValue, + newValue, + storageArea: storage + }; + window.dispatchEvent(storage instanceof Storage ? new StorageEvent("storage", payload) : new CustomEvent(customStorageEventName, { detail: payload })); + } + } + function write(v) { + try { + const oldValue = storage.getItem(keyComputed.value); + if (v == null) { + dispatchWriteEvent(oldValue, null); + storage.removeItem(keyComputed.value); + } else { + const serialized = serializer.write(v); + if (oldValue !== serialized) { + storage.setItem(keyComputed.value, serialized); + dispatchWriteEvent(oldValue, serialized); + } + } + } catch (e) { + onError(e); + } + } + function read(event) { + const rawValue = event ? event.newValue : storage.getItem(keyComputed.value); + if (rawValue == null) { + if (writeDefaults && rawInit != null) storage.setItem(keyComputed.value, serializer.write(rawInit)); + return rawInit; + } else if (!event && mergeDefaults) { + const value = serializer.read(rawValue); + if (typeof mergeDefaults === "function") return mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) return { + ...rawInit, + ...value + }; + return value; + } else if (typeof rawValue !== "string") return rawValue; + else return serializer.read(rawValue); + } + function update(event) { + if (event && event.storageArea !== storage) return; + if (event && event.key == null) { + data.value = rawInit; + return; + } + if (event && event.key !== keyComputed.value) return; + pauseWatch(); + try { + const serializedData = serializer.write(data.value); + if (event === void 0 || (event === null || event === void 0 ? void 0 : event.newValue) !== serializedData) data.value = read(event); + } catch (e) { + onError(e); + } finally { + if (event) nextTick(resumeWatch); + else resumeWatch(); + } + } + function updateFromCustomEvent(event) { + update(event.detail); + } + return data; +} +//#endregion +//#region useColorMode/index.ts +const CSS_DISABLE_TRANS = "*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}"; +/** +* Reactive color mode with auto data persistence. +* +* @see https://vueuse.org/useColorMode +* @param options +*/ +function useColorMode(options = {}) { + const { selector = "html", attribute = "class", initialValue = "auto", window = defaultWindow, storage, storageKey = "vueuse-color-scheme", listenToStorageChanges = true, storageRef, emitAuto, disableTransition = true } = options; + const modes = { + auto: "", + light: "light", + dark: "dark", + ...options.modes || {} + }; + const preferredDark = usePreferredDark({ window }); + const system = computed(() => preferredDark.value ? "dark" : "light"); + const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { + window, + listenToStorageChanges + })); + const state = computed(() => store.value === "auto" ? system.value : store.value); + const updateHTMLAttrs = getSSRHandler("updateHTMLAttrs", (selector, attribute, value) => { + const el = typeof selector === "string" ? window === null || window === void 0 ? void 0 : window.document.querySelector(selector) : unrefElement(selector); + if (!el) return; + const classesToAdd = /* @__PURE__ */ new Set(); + const classesToRemove = /* @__PURE__ */ new Set(); + let attributeToChange = null; + if (attribute === "class") { + const current = value.split(/\s/g); + Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => { + if (current.includes(v)) classesToAdd.add(v); + else classesToRemove.add(v); + }); + } else attributeToChange = { + key: attribute, + value + }; + if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null) return; + let style; + if (disableTransition) { + style = window.document.createElement("style"); + style.appendChild(document.createTextNode(CSS_DISABLE_TRANS)); + window.document.head.appendChild(style); + } + for (const c of classesToAdd) el.classList.add(c); + for (const c of classesToRemove) el.classList.remove(c); + if (attributeToChange) el.setAttribute(attributeToChange.key, attributeToChange.value); + if (disableTransition) { + window.getComputedStyle(style).opacity; + document.head.removeChild(style); + } + }); + function defaultOnChanged(mode) { + var _modes$mode; + updateHTMLAttrs(selector, attribute, (_modes$mode = modes[mode]) !== null && _modes$mode !== void 0 ? _modes$mode : mode); + } + function onChanged(mode) { + if (options.onChanged) options.onChanged(mode, defaultOnChanged); + else defaultOnChanged(mode); + } + watch(state, onChanged, { + flush: "post", + immediate: true + }); + tryOnMounted(() => onChanged(state.value)); + const auto = computed({ + get() { + return emitAuto ? store.value : state.value; + }, + set(v) { + store.value = v; + } + }); + return Object.assign(auto, { + store, + system, + state + }); +} +//#endregion +//#region useConfirmDialog/index.ts +/** +* Hooks for creating confirm dialogs. Useful for modal windows, popups and logins. +* +* @see https://vueuse.org/useConfirmDialog/ +* @param revealed `boolean` `ref` that handles a modal window +* +* @__NO_SIDE_EFFECTS__ +*/ +function useConfirmDialog(revealed = shallowRef(false)) { + const confirmHook = createEventHook(); + const cancelHook = createEventHook(); + const revealHook = createEventHook(); + let _resolve = noop; + const reveal = (data) => { + revealHook.trigger(data); + revealed.value = true; + return new Promise((resolve) => { + _resolve = resolve; + }); + }; + const confirm = (data) => { + revealed.value = false; + confirmHook.trigger(data); + _resolve({ + data, + isCanceled: false + }); + }; + const cancel = (data) => { + revealed.value = false; + cancelHook.trigger(data); + _resolve({ + data, + isCanceled: true + }); + }; + return { + isRevealed: computed(() => revealed.value), + reveal, + confirm, + cancel, + onReveal: revealHook.on, + onConfirm: confirmHook.on, + onCancel: cancelHook.on + }; +} +//#endregion +//#region useCountdown/index.ts +/** +* Reactive countdown timer in seconds. +* +* @param initialCountdown +* @param options +* +* @see https://vueuse.org/useCountdown +*/ +function useCountdown(initialCountdown, options = {}) { + const remaining = shallowRef(toValue(initialCountdown)); + const { scheduler = (cb) => useIntervalFn(cb, 1e3, { immediate: false }), onTick, onComplete } = options; + const controls = scheduler(() => { + const value = remaining.value - 1; + remaining.value = value < 0 ? 0 : value; + onTick === null || onTick === void 0 || onTick(); + if (remaining.value <= 0) { + controls.pause(); + onComplete === null || onComplete === void 0 || onComplete(); + } + }); + const reset = (countdown) => { + var _toValue; + remaining.value = (_toValue = toValue(countdown)) !== null && _toValue !== void 0 ? _toValue : toValue(initialCountdown); + }; + const stop = () => { + controls.pause(); + reset(); + }; + const resume = () => { + if (!controls.isActive.value) { + if (remaining.value > 0) controls.resume(); + } + }; + const start = (countdown) => { + reset(countdown); + controls.resume(); + }; + return { + remaining, + reset, + stop, + start, + pause: controls.pause, + resume, + isActive: controls.isActive + }; +} +//#endregion +//#region useCssSupports/index.ts +function useCssSupports(...args) { + let options = {}; + if (typeof toValue(args.at(-1)) === "object") options = args.pop(); + const [prop, value] = args; + const { window = defaultWindow, ssrValue = false } = options; + const isMounted = useMounted(); + return { isSupported: computed(() => { + if (!isClient || !isMounted.value) return ssrValue; + return args.length === 2 ? window === null || window === void 0 ? void 0 : window.CSS.supports(toValue(prop), toValue(value)) : window === null || window === void 0 ? void 0 : window.CSS.supports(toValue(prop)); + }) }; +} +//#endregion +//#region useCssVar/index.ts +/** +* Manipulate CSS variables. +* +* @see https://vueuse.org/useCssVar +* @param prop +* @param target +* @param options +*/ +function useCssVar(prop, target, options = {}) { + const { window = defaultWindow, initialValue, observe = false } = options; + const variable = shallowRef(initialValue); + const elRef = computed(() => { + var _window$document; + return unrefElement(target) || (window === null || window === void 0 || (_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.documentElement); + }); + function updateCssVar() { + const key = toValue(prop); + const el = toValue(elRef); + if (el && window && key) { + var _window$getComputedSt; + const value = (_window$getComputedSt = window.getComputedStyle(el).getPropertyValue(key)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.trim(); + variable.value = value || variable.value || initialValue; + } + } + if (observe) useMutationObserver(elRef, updateCssVar, { + attributeFilter: ["style", "class"], + window + }); + watch([elRef, () => toValue(prop)], (_, old) => { + if (old[0] && old[1]) old[0].style.removeProperty(old[1]); + updateCssVar(); + }, { immediate: true }); + watch([variable, elRef], ([val, el]) => { + const raw_prop = toValue(prop); + if ((el === null || el === void 0 ? void 0 : el.style) && raw_prop) { + if (val == null) el.style.removeProperty(raw_prop); + else el.style.setProperty(raw_prop, val); + } + }, { immediate: true }); + return variable; +} +//#endregion +//#region useCurrentElement/index.ts +function useCurrentElement(rootComponent) { + const vm = getCurrentInstance(); + const currentElement = computedWithControl(() => null, () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el); + onUpdated(currentElement.trigger); + onMounted(currentElement.trigger); + return currentElement; +} +//#endregion +//#region useCycleList/index.ts +/** +* Cycle through a list of items +* +* @see https://vueuse.org/useCycleList +*/ +function useCycleList(list, options) { + const state = shallowRef(getInitialValue()); + const listRef = toRef(list); + const index = computed({ + get() { + var _options$fallbackInde; + const targetList = listRef.value; + let index = (options === null || options === void 0 ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value); + if (index < 0) index = (_options$fallbackInde = options === null || options === void 0 ? void 0 : options.fallbackIndex) !== null && _options$fallbackInde !== void 0 ? _options$fallbackInde : 0; + return index; + }, + set(v) { + set(v); + } + }); + function set(i) { + const targetList = listRef.value; + const length = targetList.length; + const value = targetList[(i % length + length) % length]; + state.value = value; + return value; + } + function shift(delta = 1) { + return set(index.value + delta); + } + function next(n = 1) { + return shift(n); + } + function prev(n = 1) { + return shift(-n); + } + function getInitialValue() { + var _toValue, _options$initialValue; + return (_toValue = toValue((_options$initialValue = options === null || options === void 0 ? void 0 : options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : toValue(list)[0])) !== null && _toValue !== void 0 ? _toValue : void 0; + } + watch(listRef, () => set(index.value)); + return { + state, + index, + next, + prev, + go: set + }; +} +//#endregion +//#region useDark/index.ts +/** +* Reactive dark mode with auto data persistence. +* +* @see https://vueuse.org/useDark +* @param options +*/ +function useDark(options = {}) { + const { valueDark = "dark", valueLight = "" } = options; + const mode = useColorMode({ + ...options, + onChanged: (mode, defaultHandler) => { + var _options$onChanged; + if (options.onChanged) (_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, mode === "dark", defaultHandler, mode); + else defaultHandler(mode); + }, + modes: { + dark: valueDark, + light: valueLight + } + }); + const system = computed(() => mode.system.value); + return computed({ + get() { + return mode.value === "dark"; + }, + set(v) { + const modeVal = v ? "dark" : "light"; + if (system.value === modeVal) mode.value = "auto"; + else mode.value = modeVal; + } + }); +} +//#endregion +//#region useManualRefHistory/index.ts +function fnBypass(v) { + return v; +} +function fnSetSource(source, value) { + return source.value = value; +} +function defaultDump(clone) { + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; +} +function defaultParse(clone) { + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; +} +/** +* Track the change history of a ref, also provides undo and redo functionality. +* +* @see https://vueuse.org/useManualRefHistory +* @param source +* @param options +*/ +function useManualRefHistory(source, options = {}) { + const { clone = false, dump = defaultDump(clone), parse = defaultParse(clone), setSource = fnSetSource } = options; + function _createHistoryRecord() { + return markRaw({ + snapshot: dump(source.value), + timestamp: timestamp() + }); + } + const last = ref(_createHistoryRecord()); + const undoStack = ref([]); + const redoStack = ref([]); + const _setSource = (record) => { + setSource(source, parse(record.snapshot)); + last.value = record; + }; + const commit = () => { + undoStack.value.unshift(last.value); + last.value = _createHistoryRecord(); + if (options.capacity && undoStack.value.length > options.capacity) undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY); + if (redoStack.value.length) redoStack.value.splice(0, redoStack.value.length); + }; + const clear = () => { + undoStack.value.splice(0, undoStack.value.length); + redoStack.value.splice(0, redoStack.value.length); + }; + const undo = () => { + const state = undoStack.value.shift(); + if (state) { + redoStack.value.unshift(last.value); + _setSource(state); + } + }; + const redo = () => { + const state = redoStack.value.shift(); + if (state) { + undoStack.value.unshift(last.value); + _setSource(state); + } + }; + const reset = () => { + _setSource(last.value); + }; + return { + source, + undoStack, + redoStack, + last, + history: computed(() => [last.value, ...undoStack.value]), + canUndo: computed(() => undoStack.value.length > 0), + canRedo: computed(() => redoStack.value.length > 0), + clear, + commit, + reset, + undo, + redo + }; +} +//#endregion +//#region useRefHistory/index.ts +/** +* Track the change history of a ref, also provides undo and redo functionality. +* +* @see https://vueuse.org/useRefHistory +* @param source +* @param options +*/ +function useRefHistory(source, options = {}) { + const { deep = false, flush = "pre", eventFilter, shouldCommit = () => true } = options; + const { eventFilter: composedFilter, pause, resume: resumeTracking, isActive: isTracking } = pausableFilter(eventFilter); + let lastRawValue = source.value; + const { ignoreUpdates, ignorePrevAsyncUpdates, stop } = watchIgnorable(source, commit, { + deep, + flush, + eventFilter: composedFilter + }); + function setSource(source, value) { + ignorePrevAsyncUpdates(); + ignoreUpdates(() => { + source.value = value; + lastRawValue = value; + }); + } + const manualHistory = useManualRefHistory(source, { + ...options, + clone: options.clone || deep, + setSource + }); + const { clear, commit: manualCommit } = manualHistory; + function commit() { + ignorePrevAsyncUpdates(); + if (!shouldCommit(lastRawValue, source.value)) return; + lastRawValue = source.value; + manualCommit(); + } + function resume(commitNow) { + resumeTracking(); + if (commitNow) commit(); + } + function batch(fn) { + let canceled = false; + const cancel = () => canceled = true; + ignoreUpdates(() => { + fn(cancel); + }); + if (!canceled) commit(); + } + function dispose() { + stop(); + clear(); + } + return { + ...manualHistory, + isTracking, + pause, + resume, + commit, + batch, + dispose + }; +} +//#endregion +//#region useDebouncedRefHistory/index.ts +/** +* Shorthand for [useRefHistory](https://vueuse.org/useRefHistory) with debounce filter. +* +* @see https://vueuse.org/useDebouncedRefHistory +* @param source +* @param options +*/ +function useDebouncedRefHistory(source, options = {}) { + const filter = options.debounce ? debounceFilter(options.debounce) : void 0; + return { ...useRefHistory(source, { + ...options, + eventFilter: filter + }) }; +} +//#endregion +//#region useDeviceMotion/index.ts +/** +* Reactive DeviceMotionEvent. +* +* @see https://vueuse.org/useDeviceMotion +* @param options +*/ +function useDeviceMotion(options = {}) { + const { window = defaultWindow, requestPermissions = false, eventFilter = bypassFilter } = options; + const isSupported = /* @__PURE__ */ useSupported(() => typeof DeviceMotionEvent !== "undefined"); + const requirePermissions = /* @__PURE__ */ useSupported(() => isSupported.value && "requestPermission" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === "function"); + const permissionGranted = shallowRef(false); + const acceleration = ref({ + x: null, + y: null, + z: null + }); + const rotationRate = ref({ + alpha: null, + beta: null, + gamma: null + }); + const interval = shallowRef(0); + const accelerationIncludingGravity = ref({ + x: null, + y: null, + z: null + }); + function init() { + if (window) { + const onDeviceMotion = createFilterWrapper(eventFilter, (event) => { + var _event$acceleration, _event$acceleration2, _event$acceleration3, _event$accelerationIn, _event$accelerationIn2, _event$accelerationIn3, _event$rotationRate, _event$rotationRate2, _event$rotationRate3; + acceleration.value = { + x: ((_event$acceleration = event.acceleration) === null || _event$acceleration === void 0 ? void 0 : _event$acceleration.x) || null, + y: ((_event$acceleration2 = event.acceleration) === null || _event$acceleration2 === void 0 ? void 0 : _event$acceleration2.y) || null, + z: ((_event$acceleration3 = event.acceleration) === null || _event$acceleration3 === void 0 ? void 0 : _event$acceleration3.z) || null + }; + accelerationIncludingGravity.value = { + x: ((_event$accelerationIn = event.accelerationIncludingGravity) === null || _event$accelerationIn === void 0 ? void 0 : _event$accelerationIn.x) || null, + y: ((_event$accelerationIn2 = event.accelerationIncludingGravity) === null || _event$accelerationIn2 === void 0 ? void 0 : _event$accelerationIn2.y) || null, + z: ((_event$accelerationIn3 = event.accelerationIncludingGravity) === null || _event$accelerationIn3 === void 0 ? void 0 : _event$accelerationIn3.z) || null + }; + rotationRate.value = { + alpha: ((_event$rotationRate = event.rotationRate) === null || _event$rotationRate === void 0 ? void 0 : _event$rotationRate.alpha) || null, + beta: ((_event$rotationRate2 = event.rotationRate) === null || _event$rotationRate2 === void 0 ? void 0 : _event$rotationRate2.beta) || null, + gamma: ((_event$rotationRate3 = event.rotationRate) === null || _event$rotationRate3 === void 0 ? void 0 : _event$rotationRate3.gamma) || null + }; + interval.value = event.interval; + }); + useEventListener(window, "devicemotion", onDeviceMotion, { passive: true }); + } + } + const ensurePermissions = async () => { + if (!requirePermissions.value) permissionGranted.value = true; + if (permissionGranted.value) return; + if (requirePermissions.value) { + const requestPermission = DeviceMotionEvent.requestPermission; + try { + if (await requestPermission() === "granted") { + permissionGranted.value = true; + init(); + } + } catch (error) { + console.error(error); + } + } + }; + if (isSupported.value) { + if (requestPermissions && requirePermissions.value) ensurePermissions().then(() => init()); + else init(); + } + return { + acceleration, + accelerationIncludingGravity, + rotationRate, + interval, + isSupported, + requirePermissions, + ensurePermissions, + permissionGranted + }; +} +//#endregion +//#region useDeviceOrientation/index.ts +/** +* Reactive DeviceOrientationEvent. +* +* @see https://vueuse.org/useDeviceOrientation +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useDeviceOrientation(options = {}) { + const { window = defaultWindow } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window && "DeviceOrientationEvent" in window); + const isAbsolute = shallowRef(false); + const alpha = shallowRef(null); + const beta = shallowRef(null); + const gamma = shallowRef(null); + if (window && isSupported.value) useEventListener(window, "deviceorientation", (event) => { + isAbsolute.value = event.absolute; + alpha.value = event.alpha; + beta.value = event.beta; + gamma.value = event.gamma; + }, { passive: true }); + return { + isSupported, + isAbsolute, + alpha, + beta, + gamma + }; +} +//#endregion +//#region useDevicePixelRatio/index.ts +/** +* Reactively track `window.devicePixelRatio`. +* +* @see https://vueuse.org/useDevicePixelRatio +* +* @__NO_SIDE_EFFECTS__ +*/ +function useDevicePixelRatio(options = {}) { + const { window = defaultWindow } = options; + const pixelRatio = shallowRef(1); + const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options); + let stop = noop; + if (window) stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio); + return { + pixelRatio: shallowReadonly(pixelRatio), + stop + }; +} +//#endregion +//#region useDevicesList/index.ts +/** +* Reactive `enumerateDevices` listing available input/output devices +* +* @see https://vueuse.org/useDevicesList +* @param options +*/ +function useDevicesList(options = {}) { + const { navigator = defaultNavigator, requestPermissions = false, constraints = { + audio: true, + video: true + }, onUpdated } = options; + const devices = shallowRef([]); + const videoInputs = computed(() => devices.value.filter((i) => i.kind === "videoinput")); + const audioInputs = computed(() => devices.value.filter((i) => i.kind === "audioinput")); + const audioOutputs = computed(() => devices.value.filter((i) => i.kind === "audiooutput")); + const isSupported = /* @__PURE__ */ useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices); + const permissionGranted = shallowRef(false); + let stream; + async function update() { + if (!isSupported.value) return; + devices.value = await navigator.mediaDevices.enumerateDevices(); + onUpdated === null || onUpdated === void 0 || onUpdated(devices.value); + if (stream) { + stream.getTracks().forEach((t) => t.stop()); + stream = null; + } + } + async function ensurePermissions() { + const deviceName = constraints.video ? "camera" : "microphone"; + if (!isSupported.value) return false; + if (permissionGranted.value) return true; + const { state, query } = /* @__PURE__ */ usePermission(deviceName, { controls: true }); + await query(); + if (state.value !== "granted") { + let granted = true; + try { + const allDevices = await navigator.mediaDevices.enumerateDevices(); + const hasCamera = allDevices.some((device) => device.kind === "videoinput"); + const hasMicrophone = allDevices.some((device) => device.kind === "audioinput" || device.kind === "audiooutput"); + constraints.video = hasCamera ? constraints.video : false; + constraints.audio = hasMicrophone ? constraints.audio : false; + stream = await navigator.mediaDevices.getUserMedia(constraints); + } catch (_unused) { + stream = null; + granted = false; + } + update(); + permissionGranted.value = granted; + } else permissionGranted.value = true; + return permissionGranted.value; + } + if (isSupported.value) { + if (requestPermissions) ensurePermissions(); + useEventListener(navigator.mediaDevices, "devicechange", update, { passive: true }); + update(); + } + return { + devices, + ensurePermissions, + permissionGranted, + videoInputs, + audioInputs, + audioOutputs, + isSupported + }; +} +//#endregion +//#region useDisplayMedia/index.ts +/** +* Reactive `mediaDevices.getDisplayMedia` streaming +* +* @see https://vueuse.org/useDisplayMedia +* @param options +*/ +function useDisplayMedia(options = {}) { + var _options$enabled; + const enabled = shallowRef((_options$enabled = options.enabled) !== null && _options$enabled !== void 0 ? _options$enabled : false); + const video = options.video; + const audio = options.audio; + const { navigator = defaultNavigator } = options; + const isSupported = /* @__PURE__ */ useSupported(() => { + var _navigator$mediaDevic; + return navigator === null || navigator === void 0 || (_navigator$mediaDevic = navigator.mediaDevices) === null || _navigator$mediaDevic === void 0 ? void 0 : _navigator$mediaDevic.getDisplayMedia; + }); + const constraint = { + audio, + video + }; + const stream = shallowRef(); + async function _start() { + var _stream$value; + if (!isSupported.value || stream.value) return; + stream.value = await navigator.mediaDevices.getDisplayMedia(constraint); + (_stream$value = stream.value) === null || _stream$value === void 0 || _stream$value.getTracks().forEach((t) => useEventListener(t, "ended", stop, { passive: true })); + return stream.value; + } + async function _stop() { + var _stream$value2; + (_stream$value2 = stream.value) === null || _stream$value2 === void 0 || _stream$value2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) enabled.value = true; + return stream.value; + } + watch(enabled, (v) => { + if (v) _start(); + else _stop(); + }, { immediate: true }); + return { + isSupported, + stream, + start, + stop, + enabled + }; +} +//#endregion +//#region useDocumentVisibility/index.ts +/** +* Reactively track `document.visibilityState`. +* +* @see https://vueuse.org/useDocumentVisibility +* +* @__NO_SIDE_EFFECTS__ +*/ +function useDocumentVisibility(options = {}) { + const { document = defaultDocument } = options; + if (!document) return shallowRef("visible"); + const visibility = shallowRef(document.visibilityState); + useEventListener(document, "visibilitychange", () => { + visibility.value = document.visibilityState; + }, { passive: true }); + return visibility; +} +//#endregion +//#region useDraggable/index.ts +const defaultScrollConfig = { + speed: 2, + margin: 30, + direction: "both" +}; +function clampContainerScroll(container) { + if (container.scrollLeft > container.scrollWidth - container.clientWidth) container.scrollLeft = Math.max(0, container.scrollWidth - container.clientWidth); + if (container.scrollTop > container.scrollHeight - container.clientHeight) container.scrollTop = Math.max(0, container.scrollHeight - container.clientHeight); +} +/** +* Make elements draggable. +* +* @see https://vueuse.org/useDraggable +* @param target +* @param options +*/ +function useDraggable(target, options = {}) { + var _toValue, _toValue2, _toValue3, _scrollConfig$directi; + const { pointerTypes, preventDefault, stopPropagation, exact, onMove, onEnd, onStart, initialValue, axis = "both", draggingElement = defaultWindow, containerElement, handle: draggingHandle = target, buttons = [0], restrictInView, autoScroll = false } = options; + const position = ref((_toValue = toValue(initialValue)) !== null && _toValue !== void 0 ? _toValue : { + x: 0, + y: 0 + }); + const pressedDelta = ref(); + const filterEvent = (e) => { + if (pointerTypes) return pointerTypes.includes(e.pointerType); + return true; + }; + const handleEvent = (e) => { + if (toValue(preventDefault)) e.preventDefault(); + if (toValue(stopPropagation)) e.stopPropagation(); + }; + const scrollConfig = toValue(autoScroll); + const scrollSettings = typeof scrollConfig === "object" ? { + speed: (_toValue2 = toValue(scrollConfig.speed)) !== null && _toValue2 !== void 0 ? _toValue2 : defaultScrollConfig.speed, + margin: (_toValue3 = toValue(scrollConfig.margin)) !== null && _toValue3 !== void 0 ? _toValue3 : defaultScrollConfig.margin, + direction: (_scrollConfig$directi = scrollConfig.direction) !== null && _scrollConfig$directi !== void 0 ? _scrollConfig$directi : defaultScrollConfig.direction + } : defaultScrollConfig; + const getScrollAxisValues = (value) => typeof value === "number" ? [value, value] : [value.x, value.y]; + const handleAutoScroll = (container, targetRect, position) => { + const { clientWidth, clientHeight, scrollLeft, scrollTop, scrollWidth, scrollHeight } = container; + const [marginX, marginY] = getScrollAxisValues(scrollSettings.margin); + const [speedX, speedY] = getScrollAxisValues(scrollSettings.speed); + let deltaX = 0; + let deltaY = 0; + if (scrollSettings.direction === "x" || scrollSettings.direction === "both") { + if (position.x < marginX && scrollLeft > 0) deltaX = -speedX; + else if (position.x + targetRect.width > clientWidth - marginX && scrollLeft < scrollWidth - clientWidth) deltaX = speedX; + } + if (scrollSettings.direction === "y" || scrollSettings.direction === "both") { + if (position.y < marginY && scrollTop > 0) deltaY = -speedY; + else if (position.y + targetRect.height > clientHeight - marginY && scrollTop < scrollHeight - clientHeight) deltaY = speedY; + } + if (deltaX || deltaY) container.scrollBy({ + left: deltaX, + top: deltaY, + behavior: "auto" + }); + }; + let autoScrollInterval = null; + const startAutoScroll = () => { + const container = toValue(containerElement); + if (container && !autoScrollInterval) autoScrollInterval = setInterval(() => { + const targetRect = toValue(target).getBoundingClientRect(); + const { x, y } = position.value; + const relativePosition = { + x: x - container.scrollLeft, + y: y - container.scrollTop + }; + if (relativePosition.x >= 0 && relativePosition.y >= 0) { + handleAutoScroll(container, targetRect, relativePosition); + relativePosition.x += container.scrollLeft; + relativePosition.y += container.scrollTop; + position.value = relativePosition; + } + }, 1e3 / 60); + }; + const stopAutoScroll = () => { + if (autoScrollInterval) { + clearInterval(autoScrollInterval); + autoScrollInterval = null; + } + }; + const isPointerNearEdge = (pointer, container, margin, targetRect) => { + const [marginX, marginY] = typeof margin === "number" ? [margin, margin] : [margin.x, margin.y]; + const { clientWidth, clientHeight } = container; + return pointer.x < marginX || pointer.x + targetRect.width > clientWidth - marginX || pointer.y < marginY || pointer.y + targetRect.height > clientHeight - marginY; + }; + const checkAutoScroll = () => { + if (toValue(options.disabled) || !pressedDelta.value) return; + const container = toValue(containerElement); + if (!container) return; + const targetRect = toValue(target).getBoundingClientRect(); + const { x, y } = position.value; + const relativePosition = { + x: x - container.scrollLeft, + y: y - container.scrollTop + }; + if (isPointerNearEdge(relativePosition, container, scrollSettings.margin, targetRect)) startAutoScroll(); + else stopAutoScroll(); + }; + if (toValue(autoScroll)) watch(position, checkAutoScroll); + const start = (e) => { + var _container$getBoundin; + if (!toValue(buttons).includes(e.button)) return; + if (toValue(options.disabled) || !filterEvent(e)) return; + if (toValue(exact) && e.target !== toValue(target)) return; + const container = toValue(containerElement); + const containerRect = container === null || container === void 0 || (_container$getBoundin = container.getBoundingClientRect) === null || _container$getBoundin === void 0 ? void 0 : _container$getBoundin.call(container); + const targetRect = toValue(target).getBoundingClientRect(); + const pos = { + x: e.clientX - (container ? targetRect.left - containerRect.left + (autoScroll ? 0 : container.scrollLeft) : targetRect.left), + y: e.clientY - (container ? targetRect.top - containerRect.top + (autoScroll ? 0 : container.scrollTop) : targetRect.top) + }; + if ((onStart === null || onStart === void 0 ? void 0 : onStart(pos, e)) === false) return; + pressedDelta.value = pos; + handleEvent(e); + }; + const move = (e) => { + if (toValue(options.disabled) || !filterEvent(e)) return; + if (!pressedDelta.value) return; + const container = toValue(containerElement); + if (container instanceof HTMLElement) clampContainerScroll(container); + const targetRect = toValue(target).getBoundingClientRect(); + let { x, y } = position.value; + if (axis === "x" || axis === "both") { + x = e.clientX - pressedDelta.value.x; + if (container) x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width); + } + if (axis === "y" || axis === "both") { + y = e.clientY - pressedDelta.value.y; + if (container) y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height); + } + if (toValue(autoScroll) && container) { + if (autoScrollInterval === null) handleAutoScroll(container, targetRect, { + x, + y + }); + x += container.scrollLeft; + y += container.scrollTop; + } + if (container && (restrictInView || autoScroll)) { + if (axis !== "y") { + const relativeX = x - container.scrollLeft; + if (relativeX < 0) x = container.scrollLeft; + else if (relativeX > container.clientWidth - targetRect.width) x = container.clientWidth - targetRect.width + container.scrollLeft; + } + if (axis !== "x") { + const relativeY = y - container.scrollTop; + if (relativeY < 0) y = container.scrollTop; + else if (relativeY > container.clientHeight - targetRect.height) y = container.clientHeight - targetRect.height + container.scrollTop; + } + } + position.value = { + x, + y + }; + onMove === null || onMove === void 0 || onMove(position.value, e); + handleEvent(e); + }; + const end = (e) => { + if (toValue(options.disabled) || !filterEvent(e)) return; + if (!pressedDelta.value) return; + pressedDelta.value = void 0; + if (autoScroll) stopAutoScroll(); + onEnd === null || onEnd === void 0 || onEnd(position.value, e); + handleEvent(e); + }; + if (isClient) { + const config = () => { + var _options$capture; + return { + capture: (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : true, + passive: !toValue(preventDefault) + }; + }; + useEventListener(draggingHandle, "pointerdown", start, config); + useEventListener(draggingElement, "pointermove", move, config); + useEventListener(draggingElement, ["pointerup", "pointercancel"], end, config); + } + return { + ...toRefs(position), + position, + isDragging: computed(() => !!pressedDelta.value), + style: computed(() => ` + left: ${position.value.x}px; + top: ${position.value.y}px; + ${autoScroll ? "text-wrap: nowrap;" : ""} + `) + }; +} +//#endregion +//#region useDropZone/index.ts +function useDropZone(target, options = {}) { + const isOverDropZone = shallowRef(false); + const files = shallowRef(null); + let counter = 0; + let isValid = true; + if (isClient) { + var _options$multiple, _options$preventDefau; + const _options = typeof options === "function" ? { onDrop: options } : options; + const multiple = (_options$multiple = _options.multiple) !== null && _options$multiple !== void 0 ? _options$multiple : true; + const preventDefaultForUnhandled = (_options$preventDefau = _options.preventDefaultForUnhandled) !== null && _options$preventDefau !== void 0 ? _options$preventDefau : false; + const getFiles = (event) => { + var _event$dataTransfer$f, _event$dataTransfer; + const list = Array.from((_event$dataTransfer$f = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.files) !== null && _event$dataTransfer$f !== void 0 ? _event$dataTransfer$f : []); + return list.length === 0 ? null : multiple ? list : [list[0]]; + }; + const checkDataTypes = (types) => { + const dataTypes = unref(_options.dataTypes); + if (typeof dataTypes === "function") return dataTypes(types); + if (!(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length)) return true; + if (types.length === 0) return false; + return types.every((type) => dataTypes.some((allowedType) => type.includes(allowedType))); + }; + const checkValidity = (items) => { + if (_options.checkValidity) return _options.checkValidity(items); + const types = Array.from(items !== null && items !== void 0 ? items : []).map((item) => item.type); + const dataTypesValid = checkDataTypes(types); + const multipleFilesValid = multiple || items.length <= 1; + return dataTypesValid && multipleFilesValid; + }; + const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !("chrome" in window); + const handleDragEvent = (event, eventType) => { + var _event$dataTransfer2, _ref; + const dataTransferItemList = (_event$dataTransfer2 = event.dataTransfer) === null || _event$dataTransfer2 === void 0 ? void 0 : _event$dataTransfer2.items; + isValid = (_ref = dataTransferItemList && checkValidity(dataTransferItemList)) !== null && _ref !== void 0 ? _ref : false; + if (preventDefaultForUnhandled) event.preventDefault(); + if (!isSafari() && !isValid) { + if (event.dataTransfer) event.dataTransfer.dropEffect = "none"; + return; + } + event.preventDefault(); + if (event.dataTransfer) event.dataTransfer.dropEffect = "copy"; + const currentFiles = getFiles(event); + switch (eventType) { + case "enter": + var _options$onEnter; + counter += 1; + isOverDropZone.value = true; + (_options$onEnter = _options.onEnter) === null || _options$onEnter === void 0 || _options$onEnter.call(_options, null, event); + break; + case "over": + var _options$onOver; + (_options$onOver = _options.onOver) === null || _options$onOver === void 0 || _options$onOver.call(_options, null, event); + break; + case "leave": + var _options$onLeave; + counter -= 1; + if (counter === 0) isOverDropZone.value = false; + (_options$onLeave = _options.onLeave) === null || _options$onLeave === void 0 || _options$onLeave.call(_options, null, event); + break; + case "drop": + counter = 0; + isOverDropZone.value = false; + if (isValid) { + var _options$onDrop; + files.value = currentFiles; + (_options$onDrop = _options.onDrop) === null || _options$onDrop === void 0 || _options$onDrop.call(_options, currentFiles, event); + } + } + }; + useEventListener(target, "dragenter", (event) => handleDragEvent(event, "enter")); + useEventListener(target, "dragover", (event) => handleDragEvent(event, "over")); + useEventListener(target, "dragleave", (event) => handleDragEvent(event, "leave")); + useEventListener(target, "drop", (event) => handleDragEvent(event, "drop")); + } + return { + files, + isOverDropZone + }; +} +//#endregion +//#region useResizeObserver/index.ts +/** +* Reports changes to the dimensions of an Element's content or the border-box +* +* @see https://vueuse.org/useResizeObserver +* @param target +* @param callback +* @param options +*/ +function useResizeObserver(target, callback, options = {}) { + const { window = defaultWindow, ...observerOptions } = options; + let observer; + const isSupported = /* @__PURE__ */ useSupported(() => window && "ResizeObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = computed(() => { + const _targets = toValue(target); + return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)]; + }); + const stopWatch = watch(targets, (els) => { + cleanup(); + if (isSupported.value && window) { + observer = new ResizeObserver(callback); + for (const _el of els) if (_el instanceof Element) observer.observe(_el, observerOptions); + } + }, { + immediate: true, + flush: "post" + }); + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; +} +//#endregion +//#region useElementBounding/index.ts +/** +* Reactive bounding box of an HTML element. +* +* @see https://vueuse.org/useElementBounding +* @param target +*/ +function useElementBounding(target, options = {}) { + const { reset = true, windowResize = true, windowScroll = true, immediate = true, updateTiming = "sync" } = options; + const height = shallowRef(0); + const bottom = shallowRef(0); + const left = shallowRef(0); + const right = shallowRef(0); + const top = shallowRef(0); + const width = shallowRef(0); + const x = shallowRef(0); + const y = shallowRef(0); + function recalculate() { + const el = unrefElement(target); + if (!el) { + if (reset) { + height.value = 0; + bottom.value = 0; + left.value = 0; + right.value = 0; + top.value = 0; + width.value = 0; + x.value = 0; + y.value = 0; + } + return; + } + const rect = el.getBoundingClientRect(); + height.value = rect.height; + bottom.value = rect.bottom; + left.value = rect.left; + right.value = rect.right; + top.value = rect.top; + width.value = rect.width; + x.value = rect.x; + y.value = rect.y; + } + function update() { + if (updateTiming === "sync") recalculate(); + else if (updateTiming === "next-frame") requestAnimationFrame(() => recalculate()); + } + useResizeObserver(target, update); + watch(() => unrefElement(target), (ele) => !ele && update()); + useMutationObserver(target, update, { attributeFilter: ["style", "class"] }); + if (windowScroll) useEventListener("scroll", update, { + capture: true, + passive: true + }); + if (windowResize) useEventListener("resize", update, { passive: true }); + tryOnMounted(() => { + if (immediate) update(); + }); + return { + height, + bottom, + left, + right, + top, + width, + x, + y, + update + }; +} +//#endregion +//#region useElementByPoint/index.ts +/** +* Reactive element by point. +* +* @see https://vueuse.org/useElementByPoint +* @param options - UseElementByPointOptions +*/ +function useElementByPoint(options) { + const { x, y, document = defaultDocument, multiple, scheduler = useRafFn } = options; + const isSupported = /* @__PURE__ */ useSupported(() => { + if (toValue(multiple)) return document && "elementsFromPoint" in document; + return document && "elementFromPoint" in document; + }); + const element = shallowRef(null); + return { + isSupported, + element, + ...scheduler(() => { + var _document$elementsFro, _document$elementFrom; + element.value = toValue(multiple) ? (_document$elementsFro = document === null || document === void 0 ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) !== null && _document$elementsFro !== void 0 ? _document$elementsFro : [] : (_document$elementFrom = document === null || document === void 0 ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) !== null && _document$elementFrom !== void 0 ? _document$elementFrom : null; + }) + }; +} +//#endregion +//#region useElementHover/index.ts +function useElementHover(el, options = {}) { + const { delayEnter = 0, delayLeave = 0, triggerOnRemoval = false, window = defaultWindow } = options; + const isHovered = shallowRef(false); + let timer; + const toggle = (entering) => { + const delay = entering ? delayEnter : delayLeave; + if (timer) { + clearTimeout(timer); + timer = void 0; + } + if (delay) timer = setTimeout(() => isHovered.value = entering, delay); + else isHovered.value = entering; + }; + if (!window) return isHovered; + useEventListener(el, "mouseenter", () => toggle(true), { passive: true }); + useEventListener(el, "mouseleave", () => toggle(false), { passive: true }); + if (triggerOnRemoval) onElementRemoval(computed(() => unrefElement(el)), () => toggle(false)); + return isHovered; +} +//#endregion +//#region useElementOverflow/index.ts +/** +* react a dom's overflow state +* @see https://vueuse.org/useElementOverflow +* @param target +* @param option +*/ +function useElementOverflow(target, option = {}) { + const { observeMutation = false, onUpdated, window = defaultWindow } = option; + const isXOverflowed = shallowRef(false); + const isYOverflowed = shallowRef(false); + function update(htmlEl) { + isXOverflowed.value = htmlEl.scrollWidth > htmlEl.offsetWidth; + isYOverflowed.value = htmlEl.scrollHeight > htmlEl.offsetHeight; + } + const onResizeUpdated = onUpdated; + const targetEl = computed(() => { + const el = unrefElement(target); + if (!el || el instanceof SVGElement) return void 0; + return el; + }); + const targets = () => { + const el = targetEl.value; + if (!el || el instanceof SVGElement) return []; + return [el, ...Array.from(el.children).filter((i) => i instanceof HTMLElement)]; + }; + useResizeObserver(targets, (entries, observer) => { + const el = targetEl.value; + if (el) update(el); + onResizeUpdated === null || onResizeUpdated === void 0 || onResizeUpdated(entries, observer); + }, { window }); + if (observeMutation) { + const onMutationUpdated = onUpdated; + useMutationObserver(targets, (entries, observer) => { + const el = targetEl.value; + if (el) update(el); + onMutationUpdated === null || onMutationUpdated === void 0 || onMutationUpdated(entries, observer); + }, { + window, + ...typeof observeMutation === "object" ? observeMutation : { + childList: true, + subtree: true, + characterData: true + } + }); + } + return { + isXOverflowed: shallowReadonly(isXOverflowed), + isYOverflowed: shallowReadonly(isYOverflowed), + stop, + update: () => { + const el = targetEl.value; + if (el && window) update(el); + } + }; +} +//#endregion +//#region useElementSize/index.ts +/** +* Reactive size of an HTML element. +* +* @see https://vueuse.org/useElementSize +*/ +function useElementSize(target, initialSize = { + width: 0, + height: 0 +}, options = {}) { + const { window = defaultWindow, box = "content-box" } = options; + const isSVG = computed(() => { + var _unrefElement; + return (_unrefElement = unrefElement(target)) === null || _unrefElement === void 0 || (_unrefElement = _unrefElement.namespaceURI) === null || _unrefElement === void 0 ? void 0 : _unrefElement.includes("svg"); + }); + const width = shallowRef(initialSize.width); + const height = shallowRef(initialSize.height); + const { stop: stop1 } = useResizeObserver(target, ([entry]) => { + const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; + if (window && isSVG.value) { + const $elem = unrefElement(target); + if ($elem) { + const rect = $elem.getBoundingClientRect(); + width.value = rect.width; + height.value = rect.height; + } + } else if (boxSize) { + const formatBoxSize = toArray(boxSize); + width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); + height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); + } else { + width.value = entry.contentRect.width; + height.value = entry.contentRect.height; + } + }, options); + tryOnMounted(() => { + const ele = unrefElement(target); + if (ele && "offsetWidth" in ele) { + if (box === "content-box" && window) { + const cs = window.getComputedStyle(ele); + const padX = Number.parseFloat(cs.paddingLeft) + Number.parseFloat(cs.paddingRight); + const padY = Number.parseFloat(cs.paddingTop) + Number.parseFloat(cs.paddingBottom); + const bdX = Number.parseFloat(cs.borderLeftWidth) + Number.parseFloat(cs.borderRightWidth); + const bdY = Number.parseFloat(cs.borderTopWidth) + Number.parseFloat(cs.borderBottomWidth); + width.value = ele.offsetWidth - padX - bdX; + height.value = ele.offsetHeight - padY - bdY; + } else { + width.value = ele.offsetWidth; + height.value = ele.offsetHeight; + } + } else if (ele) { + width.value = initialSize.width; + height.value = initialSize.height; + } + }); + const stop2 = watch(() => unrefElement(target), (ele) => { + width.value = ele ? initialSize.width : 0; + height.value = ele ? initialSize.height : 0; + }); + function stop() { + stop1(); + stop2(); + } + return { + width, + height, + stop + }; +} +//#endregion +//#region useIntersectionObserver/index.ts +/** +* Detects changes to a target element's visibility. +* +* @see https://vueuse.org/useIntersectionObserver +* @param target +* @param callback +* @param options +*/ +function useIntersectionObserver(target, callback, options = {}) { + const { root, rootMargin, threshold = 0, window = defaultWindow, immediate = true } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window && "IntersectionObserver" in window); + const targets = computed(() => { + const _target = toValue(target); + return toArray(_target).map(unrefElement).filter(notNullish); + }); + let cleanup = noop; + const isActive = shallowRef(immediate); + const stopWatch = isSupported.value ? watch(() => [ + targets.value, + unrefElement(root), + toValue(rootMargin), + isActive.value + ], ([targets, root, rootMargin]) => { + cleanup(); + if (!isActive.value) return; + if (!targets.length) return; + const observer = new IntersectionObserver(callback, { + root: unrefElement(root), + rootMargin, + threshold + }); + targets.forEach((el) => el && observer.observe(el)); + cleanup = () => { + observer.disconnect(); + cleanup = noop; + }; + }, { + immediate, + flush: "post" + }) : noop; + const stop = () => { + cleanup(); + stopWatch(); + isActive.value = false; + }; + tryOnScopeDispose(stop); + return { + isSupported, + isActive, + pause() { + cleanup(); + isActive.value = false; + }, + resume() { + isActive.value = true; + }, + stop + }; +} +//#endregion +//#region useElementVisibility/index.ts +function useElementVisibility(element, options = {}) { + const { window = defaultWindow, scrollTarget, threshold = 0, rootMargin, once = false, initialValue = false } = options; + const isVisible = shallowRef(initialValue); + const observerController = useIntersectionObserver(element, (intersectionObserverEntries) => { + let isIntersecting = isVisible.value; + let latestTime = 0; + for (const entry of intersectionObserverEntries) if (entry.time >= latestTime) { + latestTime = entry.time; + isIntersecting = entry.isIntersecting; + } + isVisible.value = isIntersecting; + if (once) watchOnce(isVisible, () => { + observerController.stop(); + }); + }, { + root: scrollTarget, + window, + threshold, + rootMargin + }); + return options.controls ? { + ...observerController, + isVisible + } : isVisible; +} +//#endregion +//#region useEventBus/internal.ts +const events = /* @__PURE__ */ new Map(); +//#endregion +//#region useEventBus/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useEventBus(key) { + function on(listener) { + const listeners = events.get(key) || /* @__PURE__ */ new Set(); + listeners.add(listener); + events.set(key, listeners); + const _off = () => off(listener); + tryOnScopeDispose(_off); + return _off; + } + function once(listener) { + function _listener(...args) { + off(_listener); + listener(...args); + } + return on(_listener); + } + function off(listener) { + const listeners = events.get(key); + if (!listeners) return; + listeners.delete(listener); + if (!listeners.size) reset(); + } + function reset() { + events.delete(key); + } + function emit(event, payload) { + var _events$get; + (_events$get = events.get(key)) === null || _events$get === void 0 || _events$get.forEach((v) => v(event, payload)); + } + return { + on, + once, + off, + emit, + reset + }; +} +//#endregion +//#region useEventSource/index.ts +function resolveNestedOptions$1(options) { + if (options === true) return {}; + return options; +} +const DEFAULT_EVENT = "message"; +/** +* Reactive wrapper for EventSource. +* +* @see https://vueuse.org/useEventSource +* @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource EventSource +* @param url +* @param events +* @param options +*/ +function useEventSource(url, events = [], options = {}) { + const event = shallowRef(null); + const data = shallowRef(null); + const status = shallowRef("CONNECTING"); + const eventSource = shallowRef(null); + const error = shallowRef(null); + const urlRef = toRef(url); + const lastEventId = shallowRef(null); + let explicitlyClosed = false; + let retried = 0; + const { withCredentials = false, immediate = true, autoConnect = true, autoReconnect, serializer = { read: (v) => v } } = options; + const close = () => { + if (isClient && eventSource.value) { + eventSource.value.close(); + eventSource.value = null; + status.value = "CLOSED"; + explicitlyClosed = true; + } + }; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") return; + const es = new EventSource(urlRef.value, { withCredentials }); + status.value = "CONNECTING"; + eventSource.value = es; + es.onopen = () => { + status.value = "OPEN"; + error.value = null; + }; + es.onerror = (e) => { + status.value = "CLOSED"; + error.value = e; + if (es.readyState === 2 && !explicitlyClosed && autoReconnect) { + es.close(); + const { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions$1(autoReconnect); + retried += 1; + if (typeof retries === "number" && (retries < 0 || retried < retries)) setTimeout(_init, delay); + else if (typeof retries === "function" && retries()) setTimeout(_init, delay); + else onFailed === null || onFailed === void 0 || onFailed(); + } + }; + events = events.length > 0 ? events : [DEFAULT_EVENT]; + for (const event_name of events) useEventListener(es, event_name, (e) => { + var _serializer$read, _e$lastEventId; + event.value = event_name; + data.value = (_serializer$read = serializer.read(e.data)) !== null && _serializer$read !== void 0 ? _serializer$read : null; + lastEventId.value = (_e$lastEventId = e.lastEventId) !== null && _e$lastEventId !== void 0 ? _e$lastEventId : null; + }, { passive: true }); + }; + const open = () => { + if (!isClient) return; + close(); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) open(); + if (autoConnect) watch(urlRef, open); + tryOnScopeDispose(close); + return { + eventSource, + event, + data, + status, + error, + open, + close, + lastEventId + }; +} +//#endregion +//#region useEyeDropper/index.ts +/** +* Reactive [EyeDropper API](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper_API) +* +* @see https://vueuse.org/useEyeDropper +* +* @__NO_SIDE_EFFECTS__ +*/ +function useEyeDropper(options = {}) { + const { initialValue = "" } = options; + const isSupported = /* @__PURE__ */ useSupported(() => typeof window !== "undefined" && "EyeDropper" in window); + const sRGBHex = shallowRef(initialValue); + async function open(openOptions) { + if (!isSupported.value) return; + const result = await new window.EyeDropper().open(openOptions); + sRGBHex.value = result.sRGBHex; + return result; + } + return { + isSupported, + sRGBHex, + open + }; +} +//#endregion +//#region useFavicon/index.ts +function useFavicon(newIcon = null, options = {}) { + const { baseUrl = "", rel = "icon", document = defaultDocument } = options; + const favicon = toRef(newIcon); + const applyIcon = (icon) => { + const elements = document === null || document === void 0 ? void 0 : document.head.querySelectorAll(`link[rel*="${rel}"]`); + if (!elements || elements.length === 0) { + const link = document === null || document === void 0 ? void 0 : document.createElement("link"); + if (link) { + link.rel = rel; + link.href = `${baseUrl}${icon}`; + link.type = `image/${icon.split(".").pop()}`; + document === null || document === void 0 || document.head.append(link); + } + return; + } + elements === null || elements === void 0 || elements.forEach((el) => el.href = `${baseUrl}${icon}`); + }; + watch(favicon, (i, o) => { + if (typeof i === "string" && i !== o) applyIcon(i); + }, { immediate: true }); + return favicon; +} +//#endregion +//#region useFetch/index.ts +const payloadMapping = { + json: "application/json", + text: "text/plain" +}; +/** +* !!!IMPORTANT!!! +* +* If you update the UseFetchOptions interface, be sure to update this object +* to include the new options +*/ +function isFetchOptions(obj) { + return obj && containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError", "fetch", "updateDataOnError"); +} +const reAbsolute = /^(?:[a-z][a-z\d+\-.]*:)?\/\//i; +function isAbsoluteURL(url) { + return reAbsolute.test(url); +} +function headersToObject(headers) { + if (typeof Headers !== "undefined" && headers instanceof Headers) return Object.fromEntries(headers.entries()); + return headers; +} +function combineCallbacks(combination, ...callbacks) { + if (combination === "overwrite") return async (ctx) => { + let callback; + for (let i = callbacks.length - 1; i >= 0; i--) if (callbacks[i] != null) { + callback = callbacks[i]; + break; + } + if (callback) return { + ...ctx, + ...await callback(ctx) + }; + return ctx; + }; + else return async (ctx) => { + for (const callback of callbacks) if (callback) ctx = { + ...ctx, + ...await callback(ctx) + }; + return ctx; + }; +} +function createFetch(config = {}) { + const _combination = config.combination || "chain"; + const _options = config.options || {}; + const _fetchOptions = config.fetchOptions || {}; + function useFactoryFetch(url, ...args) { + const computedUrl = computed(() => { + const baseUrl = toValue(config.baseUrl); + const targetUrl = toValue(url); + return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl; + }); + let options = _options; + let fetchOptions = _fetchOptions; + if (args.length > 0) { + if (isFetchOptions(args[0])) options = { + ...options, + ...args[0], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError) + }; + else fetchOptions = { + ...fetchOptions, + ...args[0], + headers: { + ...headersToObject(fetchOptions.headers) || {}, + ...headersToObject(args[0].headers) || {} + } + }; + } + if (args.length > 1 && isFetchOptions(args[1])) options = { + ...options, + ...args[1], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError) + }; + return useFetch(computedUrl, fetchOptions, options); + } + return useFactoryFetch; +} +function useFetch(url, ...args) { + var _defaultWindow$fetch, _globalThis; + const supportsAbort = typeof AbortController === "function"; + let fetchOptions = {}; + let options = { + immediate: true, + refetch: false, + timeout: 0, + updateDataOnError: false + }; + const config = { + method: "GET", + type: "text", + payload: void 0 + }; + if (args.length > 0) { + if (isFetchOptions(args[0])) options = { + ...options, + ...args[0] + }; + else fetchOptions = args[0]; + } + if (args.length > 1) { + if (isFetchOptions(args[1])) options = { + ...options, + ...args[1] + }; + } + const { fetch = (_defaultWindow$fetch = defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.fetch) !== null && _defaultWindow$fetch !== void 0 ? _defaultWindow$fetch : (_globalThis = globalThis) === null || _globalThis === void 0 ? void 0 : _globalThis.fetch, initialData, timeout } = options; + const responseEvent = createEventHook(); + const errorEvent = createEventHook(); + const finallyEvent = createEventHook(); + const isFinished = shallowRef(false); + const isFetching = shallowRef(false); + const aborted = shallowRef(false); + const statusCode = shallowRef(null); + const response = shallowRef(null); + const error = shallowRef(null); + const data = shallowRef(initialData || null); + const canAbort = computed(() => supportsAbort && isFetching.value); + let controller; + let timer; + const abort = (reason) => { + if (supportsAbort) { + controller === null || controller === void 0 || controller.abort(reason); + controller = new AbortController(); + controller.signal.onabort = () => aborted.value = true; + fetchOptions = { + ...fetchOptions, + signal: controller.signal + }; + } + }; + const loading = (isLoading) => { + isFetching.value = isLoading; + isFinished.value = !isLoading; + }; + if (timeout) timer = useTimeoutFn(abort, timeout, { immediate: false }); + let executeCounter = 0; + const execute = async (throwOnFailed = false) => { + var _context$options; + abort(); + loading(true); + error.value = null; + statusCode.value = null; + aborted.value = false; + executeCounter += 1; + const currentExecuteCounter = executeCounter; + const defaultFetchOptions = { + method: config.method, + headers: {} + }; + const payload = toValue(config.payload); + if (payload) { + var _payloadMapping$confi; + const headers = headersToObject(defaultFetchOptions.headers); + const proto = Object.getPrototypeOf(payload); + if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData)) config.payloadType = "json"; + if (config.payloadType) headers["Content-Type"] = (_payloadMapping$confi = payloadMapping[config.payloadType]) !== null && _payloadMapping$confi !== void 0 ? _payloadMapping$confi : config.payloadType; + defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(payload) : payload; + } + let isCanceled = false; + const context = { + url: toValue(url), + options: { + ...defaultFetchOptions, + ...fetchOptions + }, + cancel: () => { + isCanceled = true; + } + }; + if (options.beforeFetch) Object.assign(context, await options.beforeFetch(context)); + if (isCanceled || !fetch) { + loading(false); + return Promise.resolve(null); + } + let responseData = null; + if (timer) timer.start(); + return fetch(context.url, { + ...defaultFetchOptions, + ...context.options, + headers: { + ...headersToObject(defaultFetchOptions.headers), + ...headersToObject((_context$options = context.options) === null || _context$options === void 0 ? void 0 : _context$options.headers) + } + }).then(async (fetchResponse) => { + if (currentExecuteCounter === executeCounter) { + response.value = fetchResponse; + statusCode.value = fetchResponse.status; + } + responseData = await fetchResponse.clone()[config.type](); + if (!fetchResponse.ok) { + if (currentExecuteCounter === executeCounter) data.value = initialData || null; + throw new Error(fetchResponse.statusText); + } + if (options.afterFetch) ({data: responseData} = await options.afterFetch({ + data: responseData, + response: fetchResponse, + context, + execute + })); + if (currentExecuteCounter === executeCounter) data.value = responseData; + responseEvent.trigger(fetchResponse); + return fetchResponse; + }).catch(async (fetchError) => { + let errorData = fetchError.message || fetchError.name; + if (options.onFetchError) ({error: errorData, data: responseData} = await options.onFetchError({ + data: responseData, + error: fetchError, + response: response.value, + context, + execute + })); + if (currentExecuteCounter === executeCounter) { + error.value = errorData; + if (options.updateDataOnError) data.value = responseData; + } + errorEvent.trigger(fetchError); + if (throwOnFailed) throw fetchError; + return null; + }).finally(() => { + if (currentExecuteCounter === executeCounter) loading(false); + if (timer) timer.stop(); + finallyEvent.trigger(null); + }); + }; + const refetch = toRef(options.refetch); + watch([refetch, toRef(url)], ([refetch]) => refetch && execute(), { deep: true }); + const shell = { + isFinished: shallowReadonly(isFinished), + isFetching: shallowReadonly(isFetching), + statusCode, + response, + error, + data, + canAbort, + aborted, + abort, + execute, + onFetchResponse: responseEvent.on, + onFetchError: errorEvent.on, + onFetchFinally: finallyEvent.on, + get: setMethod("GET"), + put: setMethod("PUT"), + post: setMethod("POST"), + delete: setMethod("DELETE"), + patch: setMethod("PATCH"), + head: setMethod("HEAD"), + options: setMethod("OPTIONS"), + json: setType("json"), + text: setType("text"), + blob: setType("blob"), + arrayBuffer: setType("arrayBuffer"), + formData: setType("formData") + }; + function setMethod(method) { + return (payload, payloadType) => { + if (!isFetching.value) { + config.method = method; + config.payload = payload; + config.payloadType = payloadType; + if (isRef(config.payload)) watch([refetch, toRef(config.payload)], ([refetch]) => refetch && execute(), { deep: true }); + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; + } + }; + } + function waitUntilFinished() { + return new Promise((resolve, reject) => { + until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject); + }); + } + function setType(type) { + return () => { + if (!isFetching.value) { + config.type = type; + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; + } + }; + } + if (options.immediate) Promise.resolve().then(() => execute()); + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; +} +function joinPaths(start, end) { + if (!start.endsWith("/") && !end.startsWith("/")) return `${start}/${end}`; + if (start.endsWith("/") && end.startsWith("/")) return `${start.slice(0, -1)}${end}`; + return `${start}${end}`; +} +//#endregion +//#region useFileDialog/index.ts +const DEFAULT_OPTIONS = { + multiple: true, + accept: "*", + reset: false, + directory: false +}; +function prepareInitialFiles(files) { + if (!files) return null; + if (files instanceof FileList) return files; + const dt = new DataTransfer(); + for (const file of files) dt.items.add(file); + return dt.files; +} +/** +* Open file dialog with ease. +* +* @see https://vueuse.org/useFileDialog +* @param options +*/ +function useFileDialog(options = {}) { + const { document = defaultDocument } = options; + const files = ref(prepareInitialFiles(options.initialFiles)); + const { on: onChange, trigger: changeTrigger } = createEventHook(); + const { on: onCancel, trigger: cancelTrigger } = createEventHook(); + const inputRef = computed(() => { + var _unrefElement; + const input = (_unrefElement = unrefElement(options.input)) !== null && _unrefElement !== void 0 ? _unrefElement : document ? document.createElement("input") : void 0; + if (input) { + input.type = "file"; + input.onchange = (event) => { + const result = event.target; + files.value = result.files; + changeTrigger(files.value); + }; + input.oncancel = () => { + cancelTrigger(); + }; + } + return input; + }); + const reset = () => { + files.value = null; + if (inputRef.value && inputRef.value.value) { + inputRef.value.value = ""; + changeTrigger(null); + } + }; + const applyOptions = (options) => { + const el = inputRef.value; + if (!el) return; + el.multiple = toValue(options.multiple); + el.accept = toValue(options.accept); + el.webkitdirectory = toValue(options.directory); + if (hasOwn(options, "capture")) el.capture = toValue(options.capture); + }; + const open = (localOptions) => { + const el = inputRef.value; + if (!el) return; + const mergedOptions = { + ...DEFAULT_OPTIONS, + ...options, + ...localOptions + }; + applyOptions(mergedOptions); + if (toValue(mergedOptions.reset)) reset(); + el.click(); + }; + watchEffect(() => { + applyOptions(options); + }); + return { + files: readonly(files), + open, + reset, + onCancel, + onChange + }; +} +//#endregion +//#region useFileSystemAccess/index.ts +function useFileSystemAccess(options = {}) { + const { window: _window = defaultWindow, dataType = "Text" } = options; + const window = _window; + const isSupported = /* @__PURE__ */ useSupported(() => window && "showSaveFilePicker" in window && "showOpenFilePicker" in window); + const fileHandle = shallowRef(); + const data = shallowRef(); + const file = shallowRef(); + const fileName = computed(() => { + var _file$value$name, _file$value; + return (_file$value$name = (_file$value = file.value) === null || _file$value === void 0 ? void 0 : _file$value.name) !== null && _file$value$name !== void 0 ? _file$value$name : ""; + }); + const fileMIME = computed(() => { + var _file$value$type, _file$value2; + return (_file$value$type = (_file$value2 = file.value) === null || _file$value2 === void 0 ? void 0 : _file$value2.type) !== null && _file$value$type !== void 0 ? _file$value$type : ""; + }); + const fileSize = computed(() => { + var _file$value$size, _file$value3; + return (_file$value$size = (_file$value3 = file.value) === null || _file$value3 === void 0 ? void 0 : _file$value3.size) !== null && _file$value$size !== void 0 ? _file$value$size : 0; + }); + const fileLastModified = computed(() => { + var _file$value$lastModif, _file$value4; + return (_file$value$lastModif = (_file$value4 = file.value) === null || _file$value4 === void 0 ? void 0 : _file$value4.lastModified) !== null && _file$value$lastModif !== void 0 ? _file$value$lastModif : 0; + }); + async function open(_options = {}) { + if (!isSupported.value) return; + const [handle] = await window.showOpenFilePicker({ + ...toValue(options), + ..._options + }); + fileHandle.value = handle; + await updateData(); + } + async function create(_options = {}) { + if (!isSupported.value) return; + fileHandle.value = await window.showSaveFilePicker({ + ...options, + ..._options + }); + data.value = void 0; + await updateData(); + } + async function save(_options = {}) { + if (!isSupported.value) return; + if (!fileHandle.value) return saveAs(_options); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function saveAs(_options = {}) { + if (!isSupported.value) return; + fileHandle.value = await window.showSaveFilePicker({ + ...options, + ..._options + }); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function updateFile() { + var _fileHandle$value; + file.value = await ((_fileHandle$value = fileHandle.value) === null || _fileHandle$value === void 0 ? void 0 : _fileHandle$value.getFile()); + } + async function updateData() { + var _file$value5, _file$value6; + await updateFile(); + const type = toValue(dataType); + if (type === "Text") data.value = await ((_file$value5 = file.value) === null || _file$value5 === void 0 ? void 0 : _file$value5.text()); + else if (type === "ArrayBuffer") data.value = await ((_file$value6 = file.value) === null || _file$value6 === void 0 ? void 0 : _file$value6.arrayBuffer()); + else if (type === "Blob") data.value = file.value; + } + watch(() => toValue(dataType), updateData); + return { + isSupported, + data, + file, + fileName, + fileMIME, + fileSize, + fileLastModified, + open, + create, + save, + saveAs, + updateData + }; +} +//#endregion +//#region useFocus/index.ts +/** +* Track or set the focus state of a DOM element. +* +* @see https://vueuse.org/useFocus +* @param target The target element for the focus and blur events. +* @param options +*/ +function useFocus(target, options = {}) { + const { initialValue = false, focusVisible = false, preventScroll = false } = options; + const innerFocused = shallowRef(false); + const targetElement = computed(() => unrefElement(target)); + const listenerOptions = { passive: true }; + useEventListener(targetElement, "focus", (event) => { + var _matches, _ref; + if (!focusVisible || ((_matches = (_ref = event.target).matches) === null || _matches === void 0 ? void 0 : _matches.call(_ref, ":focus-visible"))) innerFocused.value = true; + }, listenerOptions); + useEventListener(targetElement, "blur", () => innerFocused.value = false, listenerOptions); + const focused = computed({ + get: () => innerFocused.value, + set(value) { + var _targetElement$value, _targetElement$value2; + if (!value && innerFocused.value) (_targetElement$value = targetElement.value) === null || _targetElement$value === void 0 || _targetElement$value.blur(); + else if (value && !innerFocused.value) (_targetElement$value2 = targetElement.value) === null || _targetElement$value2 === void 0 || _targetElement$value2.focus({ preventScroll }); + } + }); + watch(targetElement, () => { + focused.value = initialValue; + }, { + immediate: true, + flush: "post" + }); + return { focused }; +} +//#endregion +//#region useFocusWithin/index.ts +const EVENT_FOCUS_IN = "focusin"; +const EVENT_FOCUS_OUT = "focusout"; +const PSEUDO_CLASS_FOCUS_WITHIN = ":focus-within"; +/** +* Track if focus is contained within the target element +* +* @see https://vueuse.org/useFocusWithin +* @param target The target element to track +* @param options Focus within options +*/ +function useFocusWithin(target, options = {}) { + const { window = defaultWindow } = options; + const targetElement = computed(() => unrefElement(target)); + const _focused = shallowRef(false); + const focused = computed(() => _focused.value); + const activeElement = useActiveElement(options); + if (!window || !activeElement.value) return { focused }; + const listenerOptions = { passive: true }; + useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions); + useEventListener(targetElement, EVENT_FOCUS_OUT, () => { + var _targetElement$value$, _targetElement$value, _targetElement$value$2; + return _focused.value = (_targetElement$value$ = (_targetElement$value = targetElement.value) === null || _targetElement$value === void 0 || (_targetElement$value$2 = _targetElement$value.matches) === null || _targetElement$value$2 === void 0 ? void 0 : _targetElement$value$2.call(_targetElement$value, PSEUDO_CLASS_FOCUS_WITHIN)) !== null && _targetElement$value$ !== void 0 ? _targetElement$value$ : false; + }, listenerOptions); + return { focused }; +} +//#endregion +//#region useFps/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useFps(options) { + var _options$every; + const fps = shallowRef(0); + if (typeof performance === "undefined") return fps; + const every = (_options$every = options === null || options === void 0 ? void 0 : options.every) !== null && _options$every !== void 0 ? _options$every : 10; + let last = performance.now(); + let ticks = 0; + useRafFn(() => { + ticks += 1; + if (ticks >= every) { + const now = performance.now(); + const diff = now - last; + fps.value = Math.round(1e3 / (diff / ticks)); + last = now; + ticks = 0; + } + }); + return fps; +} +//#endregion +//#region useFullscreen/index.ts +const eventHandlers = [ + "fullscreenchange", + "webkitfullscreenchange", + "webkitendfullscreen", + "mozfullscreenchange", + "MSFullscreenChange" +]; +/** +* Reactive Fullscreen API. +* +* @see https://vueuse.org/useFullscreen +* @param target +* @param options +*/ +function useFullscreen(target, options = {}) { + const { document = defaultDocument, autoExit = false } = options; + const targetRef = computed(() => { + var _unrefElement; + return (_unrefElement = unrefElement(target)) !== null && _unrefElement !== void 0 ? _unrefElement : document === null || document === void 0 ? void 0 : document.documentElement; + }); + const isFullscreen = shallowRef(false); + const requestMethod = computed(() => { + return [ + "requestFullscreen", + "webkitRequestFullscreen", + "webkitEnterFullscreen", + "webkitEnterFullScreen", + "webkitRequestFullScreen", + "mozRequestFullScreen", + "msRequestFullscreen" + ].find((m) => document && m in document || targetRef.value && m in targetRef.value); + }); + const exitMethod = computed(() => { + return [ + "exitFullscreen", + "webkitExitFullscreen", + "webkitExitFullScreen", + "webkitCancelFullScreen", + "mozCancelFullScreen", + "msExitFullscreen" + ].find((m) => document && m in document || targetRef.value && m in targetRef.value); + }); + const fullscreenEnabled = computed(() => { + return [ + "fullScreen", + "webkitIsFullScreen", + "webkitDisplayingFullscreen", + "mozFullScreen", + "msFullscreenElement" + ].find((m) => document && m in document || targetRef.value && m in targetRef.value); + }); + const fullscreenElementMethod = [ + "fullscreenElement", + "webkitFullscreenElement", + "mozFullScreenElement", + "msFullscreenElement" + ].find((m) => document && m in document); + const isSupported = /* @__PURE__ */ useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0); + const isCurrentElementFullScreen = () => { + if (fullscreenElementMethod) return (document === null || document === void 0 ? void 0 : document[fullscreenElementMethod]) === targetRef.value; + return false; + }; + const isElementFullScreen = () => { + if (fullscreenEnabled.value) { + if (document && document[fullscreenEnabled.value] != null) return document[fullscreenEnabled.value]; + else { + const target = targetRef.value; + if ((target === null || target === void 0 ? void 0 : target[fullscreenEnabled.value]) != null) return Boolean(target[fullscreenEnabled.value]); + } + } + return false; + }; + async function exit() { + if (!isSupported.value || !isFullscreen.value) return; + if (exitMethod.value) { + if ((document === null || document === void 0 ? void 0 : document[exitMethod.value]) != null) await document[exitMethod.value](); + else { + const target = targetRef.value; + if ((target === null || target === void 0 ? void 0 : target[exitMethod.value]) != null) await target[exitMethod.value](); + } + } + isFullscreen.value = false; + } + async function enter() { + if (!isSupported.value || isFullscreen.value) return; + if (isElementFullScreen()) await exit(); + const target = targetRef.value; + if (requestMethod.value && (target === null || target === void 0 ? void 0 : target[requestMethod.value]) != null) { + await target[requestMethod.value](); + isFullscreen.value = true; + } + } + async function toggle() { + await (isFullscreen.value ? exit() : enter()); + } + const handlerCallback = () => { + const isElementFullScreenValue = isElementFullScreen(); + if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen()) isFullscreen.value = isElementFullScreenValue; + }; + const listenerOptions = { + capture: false, + passive: true + }; + useEventListener(document, eventHandlers, handlerCallback, listenerOptions); + useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions); + tryOnMounted(handlerCallback, false); + if (autoExit) tryOnScopeDispose(exit); + return { + isSupported, + isFullscreen, + enter, + exit, + toggle + }; +} +//#endregion +//#region useGamepad/index.ts +/** +* Maps a standard standard gamepad to an Xbox 360 Controller. +*/ +function mapGamepadToXbox360Controller(gamepad) { + return computed(() => { + if (gamepad.value) return { + buttons: { + a: gamepad.value.buttons[0], + b: gamepad.value.buttons[1], + x: gamepad.value.buttons[2], + y: gamepad.value.buttons[3] + }, + bumper: { + left: gamepad.value.buttons[4], + right: gamepad.value.buttons[5] + }, + triggers: { + left: gamepad.value.buttons[6], + right: gamepad.value.buttons[7] + }, + stick: { + left: { + horizontal: gamepad.value.axes[0], + vertical: gamepad.value.axes[1], + button: gamepad.value.buttons[10] + }, + right: { + horizontal: gamepad.value.axes[2], + vertical: gamepad.value.axes[3], + button: gamepad.value.buttons[11] + } + }, + dpad: { + up: gamepad.value.buttons[12], + down: gamepad.value.buttons[13], + left: gamepad.value.buttons[14], + right: gamepad.value.buttons[15] + }, + back: gamepad.value.buttons[8], + start: gamepad.value.buttons[9] + }; + return null; + }); +} +/* @__NO_SIDE_EFFECTS__ */ +function useGamepad(options = {}) { + const { navigator = defaultNavigator } = options; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "getGamepads" in navigator); + const gamepads = ref([]); + const onConnectedHook = createEventHook(); + const onDisconnectedHook = createEventHook(); + const stateFromGamepad = (gamepad) => { + const hapticActuators = []; + const vibrationActuator = "vibrationActuator" in gamepad ? gamepad.vibrationActuator : null; + if (vibrationActuator) hapticActuators.push(vibrationActuator); + if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators); + return { + id: gamepad.id, + index: gamepad.index, + connected: gamepad.connected, + mapping: gamepad.mapping, + timestamp: gamepad.timestamp, + vibrationActuator: gamepad.vibrationActuator, + hapticActuators, + axes: gamepad.axes.map((axes) => axes), + buttons: gamepad.buttons.map((button) => ({ + pressed: button.pressed, + touched: button.touched, + value: button.value + })) + }; + }; + const updateGamepadState = () => { + const _gamepads = (navigator === null || navigator === void 0 ? void 0 : navigator.getGamepads()) || []; + for (const gamepad of _gamepads) { + if (!gamepad) continue; + const index = gamepads.value.findIndex((x) => x.index === gamepad.index); + if (index > -1) gamepads.value[index] = stateFromGamepad(gamepad); + } + }; + const { isActive, pause, resume } = useRafFn(updateGamepadState); + const onGamepadConnected = (gamepad) => { + if (!gamepads.value.some(({ index }) => index === gamepad.index)) { + gamepads.value.push(stateFromGamepad(gamepad)); + onConnectedHook.trigger(gamepad.index); + } + resume(); + }; + const onGamepadDisconnected = (gamepad) => { + gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index); + onDisconnectedHook.trigger(gamepad.index); + }; + const listenerOptions = { passive: true }; + useEventListener("gamepadconnected", (e) => onGamepadConnected(e.gamepad), listenerOptions); + useEventListener("gamepaddisconnected", (e) => onGamepadDisconnected(e.gamepad), listenerOptions); + tryOnMounted(() => { + const _gamepads = (navigator === null || navigator === void 0 ? void 0 : navigator.getGamepads()) || []; + for (const gamepad of _gamepads) if (gamepad && gamepads.value[gamepad.index]) onGamepadConnected(gamepad); + }); + pause(); + return { + isSupported, + onConnected: onConnectedHook.on, + onDisconnected: onDisconnectedHook.on, + gamepads, + pause, + resume, + isActive + }; +} +//#endregion +//#region useGeolocation/index.ts +/** +* Reactive Geolocation API. +* +* @see https://vueuse.org/useGeolocation +* @param options +*/ +function useGeolocation(options = {}) { + const { enableHighAccuracy = true, maximumAge = 3e4, timeout = 27e3, navigator = defaultNavigator, immediate = true } = options; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "geolocation" in navigator); + const locatedAt = shallowRef(null); + const error = shallowRef(null); + const coords = shallowRef({ + accuracy: 0, + latitude: Number.POSITIVE_INFINITY, + longitude: Number.POSITIVE_INFINITY, + altitude: null, + altitudeAccuracy: null, + heading: null, + speed: null + }); + function updatePosition(position) { + locatedAt.value = position.timestamp; + coords.value = position.coords; + error.value = null; + } + let watcher; + function resume() { + if (isSupported.value) watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, { + enableHighAccuracy, + maximumAge, + timeout + }); + } + if (immediate) resume(); + function pause() { + if (watcher && navigator) navigator.geolocation.clearWatch(watcher); + } + tryOnScopeDispose(() => { + pause(); + }); + return { + isSupported, + coords, + locatedAt, + error, + resume, + pause + }; +} +//#endregion +//#region useIdle/index.ts +const defaultEvents$1 = [ + "mousemove", + "mousedown", + "resize", + "keydown", + "touchstart", + "wheel" +]; +const oneMinute = 6e4; +/** +* Tracks whether the user is being inactive. +* +* @see https://vueuse.org/useIdle +* @param timeout default to 1 minute +* @param options IdleOptions +*/ +function useIdle(timeout = oneMinute, options = {}) { + const { initialState = false, listenForVisibilityChange = true, events = defaultEvents$1, window = defaultWindow, eventFilter = throttleFilter(50) } = options; + const idle = shallowRef(initialState); + const lastActive = shallowRef(timestamp()); + const isPending = shallowRef(false); + let timer; + const reset = () => { + idle.value = false; + clearTimeout(timer); + timer = setTimeout(() => idle.value = true, timeout); + }; + const onEvent = createFilterWrapper(eventFilter, () => { + lastActive.value = timestamp(); + reset(); + }); + if (window) { + const document = window.document; + const listenerOptions = { passive: true }; + for (const event of events) useEventListener(window, event, () => { + if (!isPending.value) return; + onEvent(); + }, listenerOptions); + if (listenForVisibilityChange) useEventListener(document, "visibilitychange", () => { + if (document.hidden || !isPending.value) return; + onEvent(); + }, listenerOptions); + start(); + } + function start() { + if (isPending.value) return; + isPending.value = true; + if (!initialState) reset(); + } + function stop() { + idle.value = initialState; + clearTimeout(timer); + isPending.value = false; + } + return { + idle, + lastActive, + reset, + stop, + start, + isPending: shallowReadonly(isPending) + }; +} +//#endregion +//#region useImage/index.ts +async function loadImage(options) { + return new Promise((resolve, reject) => { + const img = new Image(); + const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options; + img.src = src; + if (srcset != null) img.srcset = srcset; + if (sizes != null) img.sizes = sizes; + if (clazz != null) img.className = clazz; + if (loading != null) img.loading = loading; + if (crossorigin != null) img.crossOrigin = crossorigin; + if (referrerPolicy != null) img.referrerPolicy = referrerPolicy; + if (width != null) img.width = width; + if (height != null) img.height = height; + if (decoding != null) img.decoding = decoding; + if (fetchPriority != null) img.fetchPriority = fetchPriority; + if (ismap != null) img.isMap = ismap; + if (usemap != null) img.useMap = usemap; + img.onload = () => resolve(img); + img.onerror = reject; + }); +} +/** +* Reactive load an image in the browser, you can wait the result to display it or show a fallback. +* +* @see https://vueuse.org/useImage +* @param options Image attributes, as used in the <img> tag +* @param asyncStateOptions +*/ +function useImage(options, asyncStateOptions = {}) { + const state = useAsyncState(() => loadImage(toValue(options)), void 0, { + resetOnExecute: true, + ...asyncStateOptions + }); + watch(() => toValue(options), () => state.execute(asyncStateOptions.delay), { deep: true }); + return state; +} +//#endregion +//#region _resolve-element.ts +/** +* Resolves an element from a given element, window, or document. +* +* @internal +*/ +function resolveElement(el) { + if (typeof Window !== "undefined" && el instanceof Window) return el.document.documentElement; + if (typeof Document !== "undefined" && el instanceof Document) return el.documentElement; + return el; +} +//#endregion +//#region useScroll/index.ts +/** +* We have to check if the scroll amount is close enough to some threshold in order to +* more accurately calculate arrivedState. This is because scrollTop/scrollLeft are non-rounded +* numbers, while scrollHeight/scrollWidth and clientHeight/clientWidth are rounded. +* https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#determine_if_an_element_has_been_totally_scrolled +*/ +const ARRIVED_STATE_THRESHOLD_PIXELS = 1; +/** +* Reactive scroll. +* +* @see https://vueuse.org/useScroll +* @param element +* @param options +*/ +function useScroll(element, options = {}) { + const { throttle = 0, idle = 200, onStop = noop, onScroll = noop, offset = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }, observe: _observe = { mutation: false }, eventListenerOptions = { + capture: false, + passive: true + }, behavior = "auto", window = defaultWindow, onError = (e) => { + console.error(e); + } } = options; + const observe = typeof _observe === "boolean" ? { mutation: _observe } : _observe; + const internalX = shallowRef(0); + const internalY = shallowRef(0); + const x = computed({ + get() { + return internalX.value; + }, + set(x) { + scrollTo(x, void 0); + } + }); + const y = computed({ + get() { + return internalY.value; + }, + set(y) { + scrollTo(void 0, y); + } + }); + function scrollTo(_x, _y) { + var _ref, _toValue, _toValue2, _document; + if (!window) return; + const _element = toValue(element); + if (!_element) return; + (_ref = _element instanceof Document ? window.document.body : _element) === null || _ref === void 0 || _ref.scrollTo({ + top: (_toValue = toValue(_y)) !== null && _toValue !== void 0 ? _toValue : y.value, + left: (_toValue2 = toValue(_x)) !== null && _toValue2 !== void 0 ? _toValue2 : x.value, + behavior: toValue(behavior) + }); + const scrollContainer = (_element === null || _element === void 0 || (_document = _element.document) === null || _document === void 0 ? void 0 : _document.documentElement) || (_element === null || _element === void 0 ? void 0 : _element.documentElement) || _element; + if (x != null) internalX.value = scrollContainer.scrollLeft; + if (y != null) internalY.value = scrollContainer.scrollTop; + } + const isScrolling = shallowRef(false); + const arrivedState = reactive({ + left: true, + right: false, + top: true, + bottom: false + }); + const directions = reactive({ + left: false, + right: false, + top: false, + bottom: false + }); + const onScrollEnd = (e) => { + if (!isScrolling.value) return; + isScrolling.value = false; + directions.left = false; + directions.right = false; + directions.top = false; + directions.bottom = false; + onStop(e); + }; + const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle); + const setArrivedState = (target) => { + var _document2; + if (!window) return; + const el = (target === null || target === void 0 || (_document2 = target.document) === null || _document2 === void 0 ? void 0 : _document2.documentElement) || (target === null || target === void 0 ? void 0 : target.documentElement) || unrefElement(target); + const { display, flexDirection, direction } = window.getComputedStyle(el); + const directionMultipler = direction === "rtl" ? -1 : 1; + const scrollLeft = el.scrollLeft; + directions.left = scrollLeft < internalX.value; + directions.right = scrollLeft > internalX.value; + const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0); + const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "row-reverse") { + arrivedState.left = right; + arrivedState.right = left; + } else { + arrivedState.left = left; + arrivedState.right = right; + } + internalX.value = scrollLeft; + let scrollTop = el.scrollTop; + if (target === window.document && !scrollTop) scrollTop = window.document.body.scrollTop; + directions.top = scrollTop < internalY.value; + directions.bottom = scrollTop > internalY.value; + const top = Math.abs(scrollTop) <= (offset.top || 0); + const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + /** + * reverse columns and rows behave exactly the other way around, + * bottom is treated as top and top is treated as the negative version of bottom + */ + if (display === "flex" && flexDirection === "column-reverse") { + arrivedState.top = bottom; + arrivedState.bottom = top; + } else { + arrivedState.top = top; + arrivedState.bottom = bottom; + } + internalY.value = scrollTop; + }; + const onScrollHandler = (e) => { + var _documentElement; + if (!window) return; + const eventTarget = (_documentElement = e.target.documentElement) !== null && _documentElement !== void 0 ? _documentElement : e.target; + setArrivedState(eventTarget); + isScrolling.value = true; + onScrollEndDebounced(e); + onScroll(e); + }; + useEventListener(element, "scroll", throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions); + tryOnMounted(() => { + try { + const _element = toValue(element); + if (!_element) return; + setArrivedState(_element); + } catch (e) { + onError(e); + } + }); + if ((observe === null || observe === void 0 ? void 0 : observe.mutation) && element != null && element !== window && element !== document) useMutationObserver(element, () => { + const _element = toValue(element); + if (!_element) return; + setArrivedState(_element); + }, { + attributes: true, + childList: true, + subtree: true + }); + useEventListener(element, "scrollend", onScrollEnd, eventListenerOptions); + return { + x, + y, + isScrolling, + arrivedState, + directions, + measure() { + const _element = toValue(element); + if (window && _element) setArrivedState(_element); + } + }; +} +//#endregion +//#region useInfiniteScroll/index.ts +/** +* Reactive infinite scroll. +* +* @see https://vueuse.org/useInfiniteScroll +*/ +function useInfiniteScroll(element, onLoadMore, options = {}) { + var _options$distance; + const { direction = "bottom", interval = 100, canLoadMore = () => true } = options; + const state = reactive(useScroll(element, { + ...options, + offset: { + [direction]: (_options$distance = options.distance) !== null && _options$distance !== void 0 ? _options$distance : 0, + ...options.offset + } + })); + const promise = shallowRef(); + const isLoading = computed(() => !!promise.value); + const observedElement = computed(() => { + return resolveElement(toValue(element)); + }); + const isElementVisible = useElementVisibility(observedElement); + const canLoad = computed(() => { + if (!observedElement.value) return false; + return canLoadMore(observedElement.value); + }); + function checkAndLoad() { + state.measure(); + if (!observedElement.value || !isElementVisible.value || !canLoad.value || promise.value) return; + const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value; + const isNarrower = direction === "bottom" || direction === "top" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth; + if (state.arrivedState[direction] || isNarrower) promise.value = Promise.all([onLoadMore(state), new Promise((resolve) => setTimeout(resolve, interval))]).finally(() => { + promise.value = null; + nextTick(() => checkAndLoad()); + }); + } + const stop = watch(() => [ + state.arrivedState[direction], + isElementVisible.value, + canLoad.value + ], checkAndLoad, { + immediate: true, + flush: "post" + }); + tryOnUnmounted(stop); + return { + isLoading, + reset() { + nextTick(() => checkAndLoad()); + } + }; +} +//#endregion +//#region useKeyModifier/index.ts +const defaultEvents = [ + "mousedown", + "mouseup", + "keydown", + "keyup" +]; +/* @__NO_SIDE_EFFECTS__ */ +function useKeyModifier(modifier, options = {}) { + const { events = defaultEvents, document = defaultDocument, initial = null } = options; + const state = shallowRef(initial); + if (document) events.forEach((listenerEvent) => { + useEventListener(document, listenerEvent, (evt) => { + if (typeof evt.getModifierState === "function") state.value = evt.getModifierState(modifier); + }, { passive: true }); + }); + return state; +} +//#endregion +//#region useLiveAnnouncer/index.ts +let announcerMap; +function getAnnouncerMap() { + var _announcerMap; + return (_announcerMap = announcerMap) !== null && _announcerMap !== void 0 ? _announcerMap : announcerMap = /* @__PURE__ */ new Map(); +} +function cleanup(idPrefix, document) { + const map = getAnnouncerMap(); + const count = map.get(idPrefix) || 0; + if (count <= 1) { + const container = document.getElementById(`${idPrefix}-container`); + if (container) container.remove(); + map.delete(idPrefix); + } else map.set(idPrefix, count - 1); +} +function useLiveAnnouncer(options = {}) { + const { idPrefix = "vueuse-live-announcer", window = defaultWindow } = options; + const document = window === null || window === void 0 ? void 0 : window.document; + const timers = /* @__PURE__ */ new Map(); + if (window && document) { + const map = getAnnouncerMap(); + const count = map.get(idPrefix) || 0; + map.set(idPrefix, count + 1); + tryOnScopeDispose(() => { + timers.forEach((timer) => window.clearTimeout(timer)); + timers.clear(); + cleanup(idPrefix, document); + }); + } + function ensureAnnouncer() { + if (!document) return; + let container = document.getElementById(`${idPrefix}-container`); + if (!container) { + container = document.createElement("div"); + container.id = `${idPrefix}-container`; + container.style.position = "absolute"; + container.style.width = "1px"; + container.style.height = "1px"; + container.style.padding = "0"; + container.style.margin = "-1px"; + container.style.overflow = "hidden"; + container.style.clip = "rect(0, 0, 0, 0)"; + container.style.whiteSpace = "nowrap"; + container.style.border = "0"; + container.style.wordWrap = "normal"; + container.style.clipPath = "inset(50%)"; + document.body.appendChild(container); + } + if (!document.getElementById(`${idPrefix}-polite`)) { + const polite = document.createElement("div"); + polite.id = `${idPrefix}-polite`; + polite.setAttribute("role", "status"); + polite.setAttribute("aria-live", "polite"); + polite.setAttribute("aria-atomic", "true"); + container.appendChild(polite); + } + if (!document.getElementById(`${idPrefix}-assertive`)) { + const assertive = document.createElement("div"); + assertive.id = `${idPrefix}-assertive`; + assertive.setAttribute("role", "alert"); + assertive.setAttribute("aria-live", "assertive"); + assertive.setAttribute("aria-atomic", "true"); + container.appendChild(assertive); + } + } + ensureAnnouncer(); + function announce(message, mode = "polite", timeout) { + if (!window || !document) return; + ensureAnnouncer(); + const element = document.getElementById(`${idPrefix}-${mode}`); + if (element) { + const pending = timers.get(mode); + if (pending != null) { + window.clearTimeout(pending); + timers.delete(mode); + } + element.textContent = ""; + nextTick(() => element.textContent = message); + if (timeout && timeout > 0) { + const timer = window.setTimeout(() => { + timers.delete(mode); + element.textContent = ""; + }, timeout); + timers.set(mode, timer); + } + } + } + function polite(message, timeout) { + announce(message, "polite", timeout); + } + function assertive(message, timeout) { + announce(message, "assertive", timeout); + } + return { + announce, + polite, + assertive + }; +} +//#endregion +//#region useLocalStorage/index.ts +/** +* Reactive LocalStorage. +* +* @see https://vueuse.org/useLocalStorage +* @param key +* @param initialValue +* @param options +*/ +function useLocalStorage(key, initialValue, options = {}) { + const { window = defaultWindow } = options; + return useStorage(key, initialValue, window === null || window === void 0 ? void 0 : window.localStorage, options); +} +//#endregion +//#region useMagicKeys/aliasMap.ts +const DefaultMagicKeysAliasMap = { + ctrl: "control", + command: "meta", + cmd: "meta", + option: "alt", + up: "arrowup", + down: "arrowdown", + left: "arrowleft", + right: "arrowright" +}; +//#endregion +//#region useMagicKeys/index.ts +/** +* Reactive keys pressed state, with magical keys combination support. +* +* @see https://vueuse.org/useMagicKeys +*/ +function useMagicKeys(options = {}) { + const { reactive: useReactive = false, target = defaultWindow, aliasMap = DefaultMagicKeysAliasMap, passive = true, onEventFired = noop } = options; + const current = reactive(/* @__PURE__ */ new Set()); + const obj = { + toJSON() { + return {}; + }, + current + }; + const refs = useReactive ? reactive(obj) : obj; + const metaDeps = /* @__PURE__ */ new Set(); + const depsMap = /* @__PURE__ */ new Map([ + ["Meta", metaDeps], + ["Shift", /* @__PURE__ */ new Set()], + ["Alt", /* @__PURE__ */ new Set()] + ]); + const usedKeys = /* @__PURE__ */ new Set(); + function setRefs(key, value) { + if (key in refs) { + if (useReactive) refs[key] = value; + else refs[key].value = value; + } + } + function reset() { + current.clear(); + for (const key of usedKeys) setRefs(key, false); + } + function updateDeps(value, e, keys) { + if (!value || typeof e.getModifierState !== "function") return; + for (const [modifier, depsSet] of depsMap) if (e.getModifierState(modifier)) { + keys.forEach((key) => depsSet.add(key)); + break; + } + } + function clearDeps(value, key) { + if (value) return; + const depsMapKey = `${key[0].toUpperCase()}${key.slice(1)}`; + const deps = depsMap.get(depsMapKey); + if (!["shift", "alt"].includes(key) || !deps) return; + const depsArray = Array.from(deps); + const depsIndex = depsArray.indexOf(key); + depsArray.forEach((key, index) => { + if (index >= depsIndex) { + current.delete(key); + setRefs(key, false); + } + }); + deps.clear(); + } + function updateRefs(e, value) { + var _e$key, _e$code; + const key = (_e$key = e.key) === null || _e$key === void 0 ? void 0 : _e$key.toLowerCase(); + const values = [(_e$code = e.code) === null || _e$code === void 0 ? void 0 : _e$code.toLowerCase(), key].filter(Boolean); + if (!key) return; + if (key) { + if (value) current.add(key); + else current.delete(key); + } + for (const key of values) { + usedKeys.add(key); + setRefs(key, value); + } + updateDeps(value, e, [...current, ...values]); + clearDeps(value, key); + if (key === "meta" && !value) { + metaDeps.forEach((key) => { + current.delete(key); + setRefs(key, false); + }); + metaDeps.clear(); + } + } + useEventListener(target, "keydown", (e) => { + updateRefs(e, true); + return onEventFired(e); + }, { passive }); + useEventListener(target, "keyup", (e) => { + updateRefs(e, false); + return onEventFired(e); + }, { passive }); + useEventListener("blur", reset, { passive }); + useEventListener("focus", reset, { passive }); + const proxy = new Proxy(refs, { get(target, prop, rec) { + if (typeof prop !== "string") return Reflect.get(target, prop, rec); + prop = prop.toLowerCase(); + if (prop in aliasMap) prop = aliasMap[prop]; + if (!(prop in refs)) { + if (/[+_-]/.test(prop)) { + const keys = prop.split(/[+_-]/g).map((i) => i.trim()); + refs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean)); + } else refs[prop] = shallowRef(false); + } + const r = Reflect.get(target, prop, rec); + return useReactive ? toValue(r) : r; + } }); + return proxy; +} +//#endregion +//#region useMediaControls/index.ts +/** +* Automatically check if the ref exists and if it does run the cb fn +*/ +function usingElRef(source, cb) { + if (toValue(source)) cb(toValue(source)); +} +/** +* Converts a TimeRange object to an array +*/ +function timeRangeToArray(timeRanges) { + let ranges = []; + for (let i = 0; i < timeRanges.length; ++i) ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]]; + return ranges; +} +/** +* Converts a TextTrackList object to an array of `UseMediaTextTrack` +*/ +function tracksToArray(tracks) { + return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ + id, + label, + kind, + language, + mode, + activeCues, + cues, + inBandMetadataTrackDispatchType + })); +} +const defaultOptions = { + src: "", + tracks: [] +}; +function useMediaControls(target, options = {}) { + target = toRef(target); + options = { + ...defaultOptions, + ...options + }; + const { document = defaultDocument } = options; + const listenerOptions = { passive: true }; + const currentTime = shallowRef(0); + const duration = shallowRef(0); + const seeking = shallowRef(false); + const volume = shallowRef(1); + const waiting = shallowRef(false); + const ended = shallowRef(false); + const playing = shallowRef(false); + const rate = shallowRef(1); + const stalled = shallowRef(false); + const buffered = shallowRef([]); + const tracks = shallowRef([]); + const selectedTrack = shallowRef(-1); + const isPictureInPicture = shallowRef(false); + const muted = shallowRef(false); + const supportsPictureInPicture = Boolean(document && "pictureInPictureEnabled" in document); + const sourceErrorEvent = createEventHook(); + const playbackErrorEvent = createEventHook(); + /** + * Disables the specified track. If no track is specified then + * all tracks will be disabled + * + * @param track The id of the track to disable + */ + const disableTrack = (track) => { + usingElRef(target, (el) => { + if (track) { + const id = typeof track === "number" ? track : track.id; + el.textTracks[id].mode = "disabled"; + } else for (let i = 0; i < el.textTracks.length; ++i) el.textTracks[i].mode = "disabled"; + selectedTrack.value = -1; + }); + }; + /** + * Enables the specified track and disables the + * other tracks unless otherwise specified + * + * @param track The track of the id of the track to enable + * @param disableTracks Disable all other tracks + */ + const enableTrack = (track, disableTracks = true) => { + usingElRef(target, (el) => { + const id = typeof track === "number" ? track : track.id; + if (disableTracks) disableTrack(); + el.textTracks[id].mode = "showing"; + selectedTrack.value = id; + }); + }; + /** + * Toggle picture in picture mode for the player. + */ + const togglePictureInPicture = () => { + return new Promise((resolve, reject) => { + usingElRef(target, async (el) => { + if (supportsPictureInPicture) { + if (!isPictureInPicture.value) el.requestPictureInPicture().then(resolve).catch(reject); + else document.exitPictureInPicture().then(resolve).catch(reject); + } + }); + }); + }; + /** + * This will automatically inject sources to the media element. The sources will be + * appended as children to the media element as `<source>` elements. + */ + watchEffect(() => { + if (!document) return; + const el = toValue(target); + if (!el) return; + const src = toValue(options.src); + let sources = []; + if (!src) return; + if (typeof src === "string") sources = [{ src }]; + else if (Array.isArray(src)) sources = src; + else if (isObject(src)) sources = [src]; + el.querySelectorAll("source").forEach((e) => { + e.remove(); + }); + sources.forEach(({ src, type, media }) => { + const source = document.createElement("source"); + source.setAttribute("src", src); + source.setAttribute("type", type || ""); + source.setAttribute("media", media || ""); + useEventListener(source, "error", sourceErrorEvent.trigger, listenerOptions); + el.appendChild(source); + }); + el.load(); + }); + /** + * Apply composable state to the element, also when element is changed + */ + watch([target, volume], () => { + const el = toValue(target); + if (!el) return; + el.volume = volume.value; + }); + watch([target, muted], () => { + const el = toValue(target); + if (!el) return; + el.muted = muted.value; + }); + watch([target, rate], () => { + const el = toValue(target); + if (!el) return; + el.playbackRate = rate.value; + }); + /** + * Load Tracks + */ + watchEffect(() => { + if (!document) return; + const textTracks = toValue(options.tracks); + const el = toValue(target); + if (!textTracks || !textTracks.length || !el) return; + /** + * The MediaAPI provides an API for adding text tracks, but they don't currently + * have an API for removing text tracks, so instead we will just create and remove + * the tracks manually using the HTML api. + */ + el.querySelectorAll("track").forEach((e) => e.remove()); + textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => { + const track = document.createElement("track"); + track.default = isDefault || false; + track.kind = kind; + track.label = label; + track.src = src; + track.srclang = srcLang; + if (track.default) selectedTrack.value = i; + el.appendChild(track); + }); + }); + /** + * This will allow us to update the current time from the timeupdate event + * without setting the medias current position, but if the user changes the + * current time via the ref, then the media will seek. + * + * If we did not use an ignorable watch, then the current time update from + * the timeupdate event would cause the media to stutter. + */ + const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => { + const el = toValue(target); + if (!el) return; + el.currentTime = time; + }); + /** + * Using an ignorable watch so we can control the play state using a ref and not + * a function + */ + const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => { + const el = toValue(target); + if (!el) return; + if (isPlaying) el.play().catch((e) => { + playbackErrorEvent.trigger(e); + throw e; + }); + else el.pause(); + }); + useEventListener(target, "timeupdate", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime), listenerOptions); + useEventListener(target, "durationchange", () => duration.value = toValue(target).duration, listenerOptions); + useEventListener(target, "progress", () => buffered.value = timeRangeToArray(toValue(target).buffered), listenerOptions); + useEventListener(target, "seeking", () => seeking.value = true, listenerOptions); + useEventListener(target, "seeked", () => seeking.value = false, listenerOptions); + useEventListener(target, ["waiting", "loadstart"], () => { + waiting.value = true; + ignorePlayingUpdates(() => playing.value = false); + }, listenerOptions); + useEventListener(target, "loadeddata", () => waiting.value = false, listenerOptions); + useEventListener(target, "playing", () => { + waiting.value = false; + ended.value = false; + ignorePlayingUpdates(() => playing.value = true); + }, listenerOptions); + useEventListener(target, "ratechange", () => rate.value = toValue(target).playbackRate, listenerOptions); + useEventListener(target, "stalled", () => stalled.value = true, listenerOptions); + useEventListener(target, "ended", () => ended.value = true, listenerOptions); + useEventListener(target, "pause", () => ignorePlayingUpdates(() => playing.value = false), listenerOptions); + useEventListener(target, "play", () => ignorePlayingUpdates(() => playing.value = true), listenerOptions); + useEventListener(target, "enterpictureinpicture", () => isPictureInPicture.value = true, listenerOptions); + useEventListener(target, "leavepictureinpicture", () => isPictureInPicture.value = false, listenerOptions); + useEventListener(target, "volumechange", () => { + const el = toValue(target); + if (!el) return; + volume.value = el.volume; + muted.value = el.muted; + }, listenerOptions); + /** + * The following listeners need to listen to a nested + * object on the target, so we will have to use a nested + * watch and manually remove the listeners + */ + const listeners = []; + const stop = watch([target], () => { + const el = toValue(target); + if (!el) return; + stop(); + listeners[0] = useEventListener(el.textTracks, "addtrack", () => tracks.value = tracksToArray(el.textTracks), listenerOptions); + listeners[1] = useEventListener(el.textTracks, "removetrack", () => tracks.value = tracksToArray(el.textTracks), listenerOptions); + listeners[2] = useEventListener(el.textTracks, "change", () => tracks.value = tracksToArray(el.textTracks), listenerOptions); + }); + tryOnScopeDispose(() => listeners.forEach((listener) => listener())); + return { + currentTime, + duration, + waiting, + seeking, + ended, + stalled, + buffered, + playing, + rate, + volume, + muted, + tracks, + selectedTrack, + enableTrack, + disableTrack, + supportsPictureInPicture, + togglePictureInPicture, + isPictureInPicture, + onSourceError: sourceErrorEvent.on, + onPlaybackError: playbackErrorEvent.on + }; +} +//#endregion +//#region useMemoize/index.ts +/** +* Reactive function result cache based on arguments +* +* @__NO_SIDE_EFFECTS__ +*/ +function useMemoize(resolver, options) { + const initCache = () => { + if (options === null || options === void 0 ? void 0 : options.cache) return shallowReactive(options.cache); + return shallowReactive(/* @__PURE__ */ new Map()); + }; + const cache = initCache(); + /** + * Generate key from args + */ + const generateKey = (...args) => (options === null || options === void 0 ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args); + /** + * Load data and save in cache + */ + const _loadData = (key, ...args) => { + cache.set(key, resolver(...args)); + return cache.get(key); + }; + const loadData = (...args) => _loadData(generateKey(...args), ...args); + /** + * Delete key from cache + */ + const deleteData = (...args) => { + cache.delete(generateKey(...args)); + }; + /** + * Clear cached data + */ + const clearData = () => { + cache.clear(); + }; + const memoized = (...args) => { + const key = generateKey(...args); + if (cache.has(key)) return cache.get(key); + return _loadData(key, ...args); + }; + memoized.load = loadData; + memoized.delete = deleteData; + memoized.clear = clearData; + memoized.generateKey = generateKey; + memoized.cache = cache; + return memoized; +} +//#endregion +//#region useMemory/index.ts +/** +* Reactive Memory Info. +* +* @see https://vueuse.org/useMemory +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useMemory(options = {}) { + const memory = shallowRef(); + const isSupported = /* @__PURE__ */ useSupported(() => typeof performance !== "undefined" && "memory" in performance); + if (isSupported.value) { + const { scheduler = useIntervalFn } = options; + scheduler(() => { + memory.value = performance.memory; + }); + } + return { + isSupported, + memory + }; +} +//#endregion +//#region useMouse/index.ts +const UseMouseBuiltinExtractors = { + page: (event) => [event.pageX, event.pageY], + client: (event) => [event.clientX, event.clientY], + screen: (event) => [event.screenX, event.screenY], + movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null +}; +/** +* Reactive mouse position. +* +* @see https://vueuse.org/useMouse +* @param options +*/ +function useMouse(options = {}) { + const { type = "page", touch = true, resetOnTouchEnds = false, initialValue = { + x: 0, + y: 0 + }, window = defaultWindow, target = window, scroll = true, eventFilter } = options; + let _prevMouseEvent = null; + let _prevScrollX = 0; + let _prevScrollY = 0; + const x = shallowRef(initialValue.x); + const y = shallowRef(initialValue.y); + const sourceType = shallowRef(null); + const extractor = typeof type === "function" ? type : UseMouseBuiltinExtractors[type]; + const mouseHandler = (event) => { + const result = extractor(event); + _prevMouseEvent = event; + if (result) { + [x.value, y.value] = result; + sourceType.value = "mouse"; + } + if (window) { + _prevScrollX = window.scrollX; + _prevScrollY = window.scrollY; + } + }; + const touchHandler = (event) => { + if (event.touches.length > 0) { + const result = extractor(event.touches[0]); + if (result) { + [x.value, y.value] = result; + sourceType.value = "touch"; + } + } + }; + const scrollHandler = () => { + if (!_prevMouseEvent || !window) return; + const pos = extractor(_prevMouseEvent); + if (_prevMouseEvent instanceof MouseEvent && pos) { + x.value = pos[0] + window.scrollX - _prevScrollX; + y.value = pos[1] + window.scrollY - _prevScrollY; + } + }; + const reset = () => { + x.value = initialValue.x; + y.value = initialValue.y; + }; + const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event); + const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event); + const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler(); + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, ["mousemove", "dragover"], mouseHandlerWrapper, listenerOptions); + if (touch && type !== "movement") { + useEventListener(target, ["touchstart", "touchmove"], touchHandlerWrapper, listenerOptions); + if (resetOnTouchEnds) useEventListener(target, "touchend", reset, listenerOptions); + } + if (scroll && type === "page") useEventListener(window, "scroll", scrollHandlerWrapper, listenerOptions); + } + return { + x, + y, + sourceType + }; +} +//#endregion +//#region useMouseInElement/index.ts +/** +* Reactive mouse position related to an element. +* +* @see https://vueuse.org/useMouseInElement +* @param target +* @param options +*/ +function useMouseInElement(target, options = {}) { + const { windowResize = true, windowScroll = true, handleOutside = true, window = defaultWindow } = options; + const type = options.type || "page"; + const { x, y, sourceType } = useMouse(options); + const targetRef = shallowRef(target !== null && target !== void 0 ? target : window === null || window === void 0 ? void 0 : window.document.body); + const elementX = shallowRef(0); + const elementY = shallowRef(0); + const elementPositionX = shallowRef(0); + const elementPositionY = shallowRef(0); + const elementHeight = shallowRef(0); + const elementWidth = shallowRef(0); + const isOutside = shallowRef(true); + function update() { + if (!window) return; + const el = unrefElement(targetRef); + if (!el || !(el instanceof Element)) return; + for (const rect of el.getClientRects()) { + const { left, top, width, height } = rect; + elementPositionX.value = left + (type === "page" ? window.pageXOffset : 0); + elementPositionY.value = top + (type === "page" ? window.pageYOffset : 0); + elementHeight.value = height; + elementWidth.value = width; + const elX = x.value - elementPositionX.value; + const elY = y.value - elementPositionY.value; + isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height; + if (handleOutside || !isOutside.value) { + elementX.value = elX; + elementY.value = elY; + } + if (!isOutside.value) break; + } + } + const stopFnList = []; + function stop() { + stopFnList.forEach((fn) => fn()); + stopFnList.length = 0; + } + tryOnMounted(() => { + update(); + }); + if (window) { + const { stop: stopResizeObserver } = useResizeObserver(targetRef, update); + const { stop: stopMutationObserver } = useMutationObserver(targetRef, update, { attributeFilter: ["style", "class"] }); + const stopWatch = watch([ + targetRef, + x, + y + ], update); + stopFnList.push(stopResizeObserver, stopMutationObserver, stopWatch); + useEventListener(document, "mouseleave", () => isOutside.value = true, { passive: true }); + if (windowScroll) stopFnList.push(useEventListener("scroll", update, { + capture: true, + passive: true + })); + if (windowResize) stopFnList.push(useEventListener("resize", update, { passive: true })); + } + return { + x, + y, + sourceType, + elementX, + elementY, + elementPositionX, + elementPositionY, + elementHeight, + elementWidth, + isOutside, + stop + }; +} +//#endregion +//#region useMousePressed/index.ts +/** +* Reactive mouse pressing state. +* +* @see https://vueuse.org/useMousePressed +* @param options +*/ +function useMousePressed(options = {}) { + const { touch = true, drag = true, capture = false, initialValue = false, window = defaultWindow } = options; + const pressed = shallowRef(initialValue); + const sourceType = shallowRef(null); + if (!window) return { + pressed, + sourceType + }; + const onPressed = (srcType) => (event) => { + var _options$onPressed; + pressed.value = true; + sourceType.value = srcType; + (_options$onPressed = options.onPressed) === null || _options$onPressed === void 0 || _options$onPressed.call(options, event); + }; + const onReleased = (event) => { + var _options$onReleased; + pressed.value = false; + sourceType.value = null; + (_options$onReleased = options.onReleased) === null || _options$onReleased === void 0 || _options$onReleased.call(options, event); + }; + const target = computed(() => unrefElement(options.target) || window); + const listenerOptions = { + passive: true, + capture + }; + useEventListener(target, "mousedown", onPressed("mouse"), listenerOptions); + useEventListener(window, "mouseleave", onReleased, listenerOptions); + useEventListener(window, "mouseup", onReleased, listenerOptions); + if (drag) { + useEventListener(target, "dragstart", onPressed("mouse"), listenerOptions); + useEventListener(window, "drop", onReleased, listenerOptions); + useEventListener(window, "dragend", onReleased, listenerOptions); + } + if (touch) { + useEventListener(target, "touchstart", onPressed("touch"), listenerOptions); + useEventListener(window, "touchend", onReleased, listenerOptions); + useEventListener(window, "touchcancel", onReleased, listenerOptions); + } + return { + pressed, + sourceType + }; +} +//#endregion +//#region useNavigatorLanguage/index.ts +/** +* +* Reactive useNavigatorLanguage +* +* Detects the currently selected user language and returns a reactive language +* @see https://vueuse.org/useNavigatorLanguage +* +* @__NO_SIDE_EFFECTS__ +*/ +function useNavigatorLanguage(options = {}) { + const { window = defaultWindow } = options; + const navigator = window === null || window === void 0 ? void 0 : window.navigator; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "language" in navigator); + const language = shallowRef(navigator === null || navigator === void 0 ? void 0 : navigator.language); + useEventListener(window, "languagechange", () => { + if (navigator) language.value = navigator.language; + }, { passive: true }); + return { + isSupported, + language + }; +} +//#endregion +//#region useNetwork/index.ts +/** +* Reactive Network status. +* +* @see https://vueuse.org/useNetwork +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useNetwork(options = {}) { + const { window = defaultWindow } = options; + const navigator = window === null || window === void 0 ? void 0 : window.navigator; + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "connection" in navigator); + const isOnline = shallowRef(true); + const saveData = shallowRef(false); + const offlineAt = shallowRef(void 0); + const onlineAt = shallowRef(void 0); + const downlink = shallowRef(void 0); + const downlinkMax = shallowRef(void 0); + const rtt = shallowRef(void 0); + const effectiveType = shallowRef(void 0); + const type = shallowRef("unknown"); + const connection = isSupported.value && navigator.connection; + function updateNetworkInformation() { + if (!navigator) return; + isOnline.value = navigator.onLine; + offlineAt.value = isOnline.value ? void 0 : Date.now(); + onlineAt.value = isOnline.value ? Date.now() : void 0; + if (connection) { + downlink.value = connection.downlink; + downlinkMax.value = connection.downlinkMax; + effectiveType.value = connection.effectiveType; + rtt.value = connection.rtt; + saveData.value = connection.saveData; + type.value = connection.type; + } + } + const listenerOptions = { passive: true }; + if (window) { + useEventListener(window, "offline", () => { + isOnline.value = false; + offlineAt.value = Date.now(); + }, listenerOptions); + useEventListener(window, "online", () => { + isOnline.value = true; + onlineAt.value = Date.now(); + }, listenerOptions); + } + if (connection) useEventListener(connection, "change", updateNetworkInformation, listenerOptions); + updateNetworkInformation(); + return { + isSupported, + isOnline: shallowReadonly(isOnline), + saveData: shallowReadonly(saveData), + offlineAt: shallowReadonly(offlineAt), + onlineAt: shallowReadonly(onlineAt), + downlink: shallowReadonly(downlink), + downlinkMax: shallowReadonly(downlinkMax), + effectiveType: shallowReadonly(effectiveType), + rtt: shallowReadonly(rtt), + type: shallowReadonly(type) + }; +} +//#endregion +//#region useNow/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useNow(options = {}) { + const { controls: exposeControls = false, scheduler = useRafFn } = options; + const now = shallowRef(/* @__PURE__ */ new Date()); + const update = () => now.value = /* @__PURE__ */ new Date(); + const controls = scheduler(update); + if (exposeControls) return { + now, + ...controls + }; + else return now; +} +//#endregion +//#region useObjectUrl/index.ts +/** +* Reactive URL representing an object. +* +* @see https://vueuse.org/useObjectUrl +* @param object +*/ +function useObjectUrl(object) { + const url = shallowRef(); + const release = () => { + if (url.value) URL.revokeObjectURL(url.value); + url.value = void 0; + }; + watch(() => toValue(object), (newObject) => { + release(); + if (newObject) url.value = URL.createObjectURL(newObject); + }, { immediate: true }); + tryOnScopeDispose(release); + return shallowReadonly(url); +} +//#endregion +//#region ../math/useClamp/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useClamp(value, min, max) { + if (typeof value === "function" || isReadonly(value)) return computed(() => clamp(toValue(value), toValue(min), toValue(max))); + const _value = ref(value); + return computed({ + get() { + return _value.value = clamp(_value.value, toValue(min), toValue(max)); + }, + set(value) { + _value.value = clamp(value, toValue(min), toValue(max)); + } + }); +} +//#endregion +//#region useOffsetPagination/index.ts +function useOffsetPagination(options) { + const { total = Number.POSITIVE_INFINITY, pageSize = 10, page = 1, onPageChange = noop, onPageSizeChange = noop, onPageCountChange = noop } = options; + const currentPageSize = /* @__PURE__ */ useClamp(pageSize, 1, Number.POSITIVE_INFINITY); + const pageCount = computed(() => Math.max(1, Math.ceil(toValue(total) / toValue(currentPageSize)))); + const currentPage = /* @__PURE__ */ useClamp(page, 1, pageCount); + const isFirstPage = computed(() => currentPage.value === 1); + const isLastPage = computed(() => currentPage.value === pageCount.value); + if (isRef(page)) syncRef(page, currentPage, { direction: isReadonly(page) ? "ltr" : "both" }); + if (isRef(pageSize)) syncRef(pageSize, currentPageSize, { direction: isReadonly(pageSize) ? "ltr" : "both" }); + function prev() { + currentPage.value--; + } + function next() { + currentPage.value++; + } + const returnValue = { + currentPage, + currentPageSize, + pageCount, + isFirstPage, + isLastPage, + prev, + next + }; + watch(currentPage, () => { + onPageChange(reactive(returnValue)); + }); + watch(currentPageSize, () => { + onPageSizeChange(reactive(returnValue)); + }); + watch(pageCount, () => { + onPageCountChange(reactive(returnValue)); + }); + return returnValue; +} +//#endregion +//#region useOnline/index.ts +/** +* Reactive online state. +* +* @see https://vueuse.org/useOnline +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useOnline(options = {}) { + const { isOnline } = useNetwork(options); + return isOnline; +} +//#endregion +//#region usePageLeave/index.ts +/** +* Reactive state to show whether mouse leaves the page. +* +* @see https://vueuse.org/usePageLeave +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePageLeave(options = {}) { + const { window = defaultWindow } = options; + const isLeft = shallowRef(false); + const handler = (event) => { + if (!window) return; + event = event || window.event; + const from = event.relatedTarget || event.toElement; + isLeft.value = !from; + }; + if (window) { + const listenerOptions = { passive: true }; + useEventListener(window, "mouseout", handler, listenerOptions); + useEventListener(window.document, "mouseleave", handler, listenerOptions); + useEventListener(window.document, "mouseenter", handler, listenerOptions); + } + return isLeft; +} +//#endregion +//#region useScreenOrientation/index.ts +/** +* Reactive screen orientation +* +* @see https://vueuse.org/useScreenOrientation +* +* @__NO_SIDE_EFFECTS__ +*/ +function useScreenOrientation(options = {}) { + const { window = defaultWindow } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window && "screen" in window && "orientation" in window.screen); + const screenOrientation = isSupported.value ? window.screen.orientation : {}; + const orientation = shallowRef(screenOrientation.type); + const angle = shallowRef(screenOrientation.angle || 0); + if (isSupported.value) useEventListener(window, "orientationchange", () => { + orientation.value = screenOrientation.type; + angle.value = screenOrientation.angle; + }, { passive: true }); + const lockOrientation = (type) => { + if (isSupported.value && typeof screenOrientation.lock === "function") return screenOrientation.lock(type); + return Promise.reject(/* @__PURE__ */ new Error("Not supported")); + }; + const unlockOrientation = () => { + if (isSupported.value && typeof screenOrientation.unlock === "function") screenOrientation.unlock(); + }; + return { + isSupported, + orientation, + angle, + lockOrientation, + unlockOrientation + }; +} +//#endregion +//#region useParallax/index.ts +/** +* Create parallax effect easily. It uses `useDeviceOrientation` and fallback to `useMouse` +* if orientation is not supported. +* +* @param target +* @param options +*/ +function useParallax(target, options = {}) { + const { deviceOrientationTiltAdjust = (i) => i, deviceOrientationRollAdjust = (i) => i, mouseTiltAdjust = (i) => i, mouseRollAdjust = (i) => i, window = defaultWindow } = options; + const orientation = reactive(useDeviceOrientation({ window })); + const screenOrientation = reactive(useScreenOrientation({ window })); + const { elementX: x, elementY: y, elementWidth: width, elementHeight: height } = useMouseInElement(target, { + handleOutside: false, + window + }); + const source = computed(() => { + if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) return "deviceOrientation"; + return "mouse"; + }); + return { + roll: computed(() => { + if (source.value === "deviceOrientation") { + let value; + switch (screenOrientation.orientation) { + case "landscape-primary": + value = orientation.gamma / 90; + break; + case "landscape-secondary": + value = -orientation.gamma / 90; + break; + case "portrait-primary": + value = -orientation.beta / 90; + break; + case "portrait-secondary": + value = orientation.beta / 90; + break; + default: value = -orientation.beta / 90; + } + return deviceOrientationRollAdjust(value); + } else { + const value = -(y.value - height.value / 2) / height.value; + return mouseRollAdjust(value); + } + }), + tilt: computed(() => { + if (source.value === "deviceOrientation") { + let value; + switch (screenOrientation.orientation) { + case "landscape-primary": + value = orientation.beta / 90; + break; + case "landscape-secondary": + value = -orientation.beta / 90; + break; + case "portrait-primary": + value = orientation.gamma / 90; + break; + case "portrait-secondary": + value = -orientation.gamma / 90; + break; + default: value = orientation.gamma / 90; + } + return deviceOrientationTiltAdjust(value); + } else { + const value = (x.value - width.value / 2) / width.value; + return mouseTiltAdjust(value); + } + }), + source + }; +} +//#endregion +//#region useParentElement/index.ts +function useParentElement(element = useCurrentElement()) { + const parentElement = shallowRef(); + const update = () => { + const el = unrefElement(element); + if (el) parentElement.value = el.parentElement; + }; + tryOnMounted(update); + watch(() => toValue(element), update); + return parentElement; +} +//#endregion +//#region usePerformanceObserver/index.ts +/** +* Observe performance metrics. +* +* @see https://vueuse.org/usePerformanceObserver +* @param options +*/ +function usePerformanceObserver(options, callback) { + const { window = defaultWindow, immediate = true, ...performanceOptions } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window && "PerformanceObserver" in window); + let observer; + const stop = () => { + observer === null || observer === void 0 || observer.disconnect(); + }; + const start = () => { + if (isSupported.value) { + stop(); + observer = new PerformanceObserver(callback); + observer.observe(performanceOptions); + } + }; + tryOnScopeDispose(stop); + if (immediate) start(); + return { + isSupported, + start, + stop + }; +} +//#endregion +//#region usePointer/index.ts +const defaultState = { + x: 0, + y: 0, + pointerId: 0, + pressure: 0, + tiltX: 0, + tiltY: 0, + width: 0, + height: 0, + twist: 0, + pointerType: null +}; +const keys = /* #__PURE__ */ Object.keys(defaultState); +/** +* Reactive pointer state. +* +* @see https://vueuse.org/usePointer +* @param options +*/ +function usePointer(options = {}) { + const { target = defaultWindow } = options; + const isInside = shallowRef(false); + const state = shallowRef(options.initialValue || {}); + Object.assign(state.value, defaultState, state.value); + const handler = (event) => { + isInside.value = true; + if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType)) return; + state.value = objectPick(event, keys, false); + }; + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, [ + "pointerdown", + "pointermove", + "pointerup" + ], handler, listenerOptions); + useEventListener(target, ["pointerleave", "pointercancel"], () => isInside.value = false, listenerOptions); + } + return { + ...toRefs(state), + isInside + }; +} +//#endregion +//#region usePointerLock/index.ts +/** +* Reactive pointer lock. +* +* @see https://vueuse.org/usePointerLock +* @param target +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePointerLock(target, options = {}) { + const { document = defaultDocument } = options; + const isSupported = /* @__PURE__ */ useSupported(() => document && "pointerLockElement" in document); + const element = shallowRef(); + const triggerElement = shallowRef(); + let targetElement; + if (isSupported.value) { + const listenerOptions = { passive: true }; + useEventListener(document, "pointerlockchange", () => { + var _pointerLockElement; + const currentElement = (_pointerLockElement = document.pointerLockElement) !== null && _pointerLockElement !== void 0 ? _pointerLockElement : element.value; + if (targetElement && currentElement === targetElement) { + element.value = document.pointerLockElement; + if (!element.value) targetElement = triggerElement.value = null; + } + }, listenerOptions); + useEventListener(document, "pointerlockerror", () => { + var _pointerLockElement2; + const currentElement = (_pointerLockElement2 = document.pointerLockElement) !== null && _pointerLockElement2 !== void 0 ? _pointerLockElement2 : element.value; + if (targetElement && currentElement === targetElement) { + const action = document.pointerLockElement ? "release" : "acquire"; + throw new Error(`Failed to ${action} pointer lock.`); + } + }, listenerOptions); + } + async function lock(e) { + var _unrefElement; + if (!isSupported.value) throw new Error("Pointer Lock API is not supported by your browser."); + triggerElement.value = e instanceof Event ? e.currentTarget : null; + targetElement = e instanceof Event ? (_unrefElement = unrefElement(target)) !== null && _unrefElement !== void 0 ? _unrefElement : triggerElement.value : unrefElement(e); + if (!targetElement) throw new Error("Target element undefined."); + targetElement.requestPointerLock(); + return await until(element).toBe(targetElement); + } + async function unlock() { + if (!element.value) return false; + document.exitPointerLock(); + await until(element).toBeNull(); + return true; + } + return { + isSupported, + element, + triggerElement, + lock, + unlock + }; +} +//#endregion +//#region usePointerSwipe/index.ts +/** +* Reactive swipe detection based on PointerEvents. +* +* @see https://vueuse.org/usePointerSwipe +* @param target +* @param options +*/ +function usePointerSwipe(target, options = {}) { + const targetRef = toRef(target); + const { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart, disableTextSelect = false } = options; + const posStart = reactive({ + x: 0, + y: 0 + }); + const updatePosStart = (x, y) => { + posStart.x = x; + posStart.y = y; + }; + const posEnd = reactive({ + x: 0, + y: 0 + }); + const updatePosEnd = (x, y) => { + posEnd.x = x; + posEnd.y = y; + }; + const distanceX = computed(() => posStart.x - posEnd.x); + const distanceY = computed(() => posStart.y - posEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold); + const isSwiping = shallowRef(false); + const isPointerDown = shallowRef(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) return "none"; + if (abs(distanceX.value) > abs(distanceY.value)) return distanceX.value > 0 ? "left" : "right"; + else return distanceY.value > 0 ? "up" : "down"; + }); + const eventIsAllowed = (e) => { + var _ref, _options$pointerTypes, _options$pointerTypes2; + const isReleasingButton = e.buttons === 0; + const isPrimaryButton = e.buttons === 1; + return (_ref = (_options$pointerTypes = (_options$pointerTypes2 = options.pointerTypes) === null || _options$pointerTypes2 === void 0 ? void 0 : _options$pointerTypes2.includes(e.pointerType)) !== null && _options$pointerTypes !== void 0 ? _options$pointerTypes : isReleasingButton || isPrimaryButton) !== null && _ref !== void 0 ? _ref : true; + }; + const listenerOptions = { passive: true }; + const stops = [ + useEventListener(target, "pointerdown", (e) => { + if (!eventIsAllowed(e)) return; + isPointerDown.value = true; + const eventTarget = e.target; + eventTarget === null || eventTarget === void 0 || eventTarget.setPointerCapture(e.pointerId); + const { clientX: x, clientY: y } = e; + updatePosStart(x, y); + updatePosEnd(x, y); + onSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "pointermove", (e) => { + if (!eventIsAllowed(e)) return; + if (!isPointerDown.value) return; + const { clientX: x, clientY: y } = e; + updatePosEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true; + if (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e); + }, listenerOptions), + useEventListener(target, ["pointerup", "pointercancel"], (e) => { + if (!eventIsAllowed(e)) return; + if (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value); + isPointerDown.value = false; + isSwiping.value = false; + }, listenerOptions) + ]; + tryOnMounted(() => { + var _targetRef$value; + (_targetRef$value = targetRef.value) === null || _targetRef$value === void 0 || (_targetRef$value = _targetRef$value.style) === null || _targetRef$value === void 0 || _targetRef$value.setProperty("touch-action", "pan-y"); + if (disableTextSelect) { + var _targetRef$value2, _targetRef$value3, _targetRef$value4; + (_targetRef$value2 = targetRef.value) === null || _targetRef$value2 === void 0 || (_targetRef$value2 = _targetRef$value2.style) === null || _targetRef$value2 === void 0 || _targetRef$value2.setProperty("-webkit-user-select", "none"); + (_targetRef$value3 = targetRef.value) === null || _targetRef$value3 === void 0 || (_targetRef$value3 = _targetRef$value3.style) === null || _targetRef$value3 === void 0 || _targetRef$value3.setProperty("-ms-user-select", "none"); + (_targetRef$value4 = targetRef.value) === null || _targetRef$value4 === void 0 || (_targetRef$value4 = _targetRef$value4.style) === null || _targetRef$value4 === void 0 || _targetRef$value4.setProperty("user-select", "none"); + } + }); + const stop = () => stops.forEach((s) => s()); + return { + isSwiping: shallowReadonly(isSwiping), + direction: shallowReadonly(direction), + posStart: readonly(posStart), + posEnd: readonly(posEnd), + distanceX, + distanceY, + stop + }; +} +//#endregion +//#region usePreferredColorScheme/index.ts +/** +* Reactive prefers-color-scheme media query. +* +* @see https://vueuse.org/usePreferredColorScheme +* @param [options] +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePreferredColorScheme(options) { + const isLight = useMediaQuery("(prefers-color-scheme: light)", options); + const isDark = useMediaQuery("(prefers-color-scheme: dark)", options); + return computed(() => { + if (isDark.value) return "dark"; + if (isLight.value) return "light"; + return "no-preference"; + }); +} +//#endregion +//#region usePreferredContrast/index.ts +/** +* Reactive prefers-contrast media query. +* +* @see https://vueuse.org/usePreferredContrast +* @param [options] +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePreferredContrast(options) { + const isMore = useMediaQuery("(prefers-contrast: more)", options); + const isLess = useMediaQuery("(prefers-contrast: less)", options); + const isCustom = useMediaQuery("(prefers-contrast: custom)", options); + return computed(() => { + if (isMore.value) return "more"; + if (isLess.value) return "less"; + if (isCustom.value) return "custom"; + return "no-preference"; + }); +} +//#endregion +//#region usePreferredLanguages/index.ts +/** +* Reactive Navigator Languages. +* +* @see https://vueuse.org/usePreferredLanguages +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePreferredLanguages(options = {}) { + const { window = defaultWindow } = options; + if (!window) return shallowRef(["en"]); + const navigator = window.navigator; + const value = shallowRef(navigator.languages); + useEventListener(window, "languagechange", () => { + value.value = navigator.languages; + }, { passive: true }); + return value; +} +//#endregion +//#region usePreferredReducedMotion/index.ts +/** +* Reactive prefers-reduced-motion media query. +* +* @see https://vueuse.org/usePreferredReducedMotion +* @param [options] +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePreferredReducedMotion(options) { + const isReduced = useMediaQuery("(prefers-reduced-motion: reduce)", options); + return computed(() => { + if (isReduced.value) return "reduce"; + return "no-preference"; + }); +} +//#endregion +//#region usePreferredReducedTransparency/index.ts +/** +* Reactive prefers-reduced-transparency media query. +* +* @see https://vueuse.org/usePreferredReducedTransparency +* @param [options] +* +* @__NO_SIDE_EFFECTS__ +*/ +function usePreferredReducedTransparency(options) { + const isReduced = useMediaQuery("(prefers-reduced-transparency: reduce)", options); + return computed(() => { + if (isReduced.value) return "reduce"; + return "no-preference"; + }); +} +//#endregion +//#region usePrevious/index.ts +function usePrevious(value, initialValue) { + const previous = shallowRef(initialValue); + watch(toRef(value), (_, oldValue) => { + previous.value = oldValue; + }, { flush: "sync" }); + return readonly(previous); +} +//#endregion +//#region useScreenSafeArea/index.ts +const topVarName = "--vueuse-safe-area-top"; +const rightVarName = "--vueuse-safe-area-right"; +const bottomVarName = "--vueuse-safe-area-bottom"; +const leftVarName = "--vueuse-safe-area-left"; +/** +* Reactive `env(safe-area-inset-*)` +* +* @see https://vueuse.org/useScreenSafeArea +*/ +function useScreenSafeArea() { + const top = shallowRef(""); + const right = shallowRef(""); + const bottom = shallowRef(""); + const left = shallowRef(""); + if (isClient) { + const topCssVar = useCssVar(topVarName); + const rightCssVar = useCssVar(rightVarName); + const bottomCssVar = useCssVar(bottomVarName); + const leftCssVar = useCssVar(leftVarName); + topCssVar.value = "env(safe-area-inset-top, 0px)"; + rightCssVar.value = "env(safe-area-inset-right, 0px)"; + bottomCssVar.value = "env(safe-area-inset-bottom, 0px)"; + leftCssVar.value = "env(safe-area-inset-left, 0px)"; + tryOnMounted(update); + useEventListener("resize", useDebounceFn(update), { passive: true }); + } + function update() { + top.value = getValue(topVarName); + right.value = getValue(rightVarName); + bottom.value = getValue(bottomVarName); + left.value = getValue(leftVarName); + } + return { + top, + right, + bottom, + left, + update + }; +} +function getValue(position) { + return getComputedStyle(document.documentElement).getPropertyValue(position); +} +//#endregion +//#region useScriptTag/index.ts +/** +* Async script tag loading. +* +* @see https://vueuse.org/useScriptTag +* @param src +* @param onLoaded +* @param options +*/ +function useScriptTag(src, onLoaded = noop, options = {}) { + const { immediate = true, manual = false, type = "text/javascript", async = true, crossOrigin, referrerPolicy, noModule, defer, document = defaultDocument, attrs = {}, nonce = void 0 } = options; + const scriptTag = shallowRef(null); + let _promise = null; + /** + * Load the script specified via `src`. + * + * @param waitForScriptLoad Whether if the Promise should resolve once the "load" event is emitted by the <script> attribute, or right after appending it to the DOM. + * @returns Promise<HTMLScriptElement> + */ + const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => { + const resolveWithElement = (el) => { + scriptTag.value = el; + resolve(el); + return el; + }; + if (!document) { + resolve(false); + return; + } + let shouldAppend = false; + let el = document.querySelector(`script[src="${toValue(src)}"]`); + if (!el) { + el = document.createElement("script"); + el.type = type; + el.async = async; + el.src = toValue(src); + if (defer) el.defer = defer; + if (crossOrigin) el.crossOrigin = crossOrigin; + if (noModule) el.noModule = noModule; + if (referrerPolicy) el.referrerPolicy = referrerPolicy; + if (nonce) el.nonce = nonce; + Object.entries(attrs).forEach(([name, value]) => el === null || el === void 0 ? void 0 : el.setAttribute(name, value)); + shouldAppend = true; + } else if (el.hasAttribute("data-loaded")) resolveWithElement(el); + const listenerOptions = { passive: true }; + useEventListener(el, "error", (event) => reject(event), listenerOptions); + useEventListener(el, "abort", (event) => reject(event), listenerOptions); + useEventListener(el, "load", () => { + el.setAttribute("data-loaded", "true"); + onLoaded(el); + resolveWithElement(el); + }, listenerOptions); + if (shouldAppend) el = document.head.appendChild(el); + if (!waitForScriptLoad) resolveWithElement(el); + }); + /** + * Exposed singleton wrapper for `loadScript`, avoiding calling it twice. + * + * @param waitForScriptLoad Whether if the Promise should resolve once the "load" event is emitted by the <script> attribute, or right after appending it to the DOM. + * @returns Promise<HTMLScriptElement> + */ + const load = (waitForScriptLoad = true) => { + if (!_promise) _promise = loadScript(waitForScriptLoad); + return _promise; + }; + /** + * Unload the script specified by `src`. + */ + const unload = () => { + if (!document) return; + _promise = null; + if (scriptTag.value) scriptTag.value = null; + const el = document.querySelector(`script[src="${toValue(src)}"]`); + if (el) document.head.removeChild(el); + }; + if (immediate && !manual) tryOnMounted(load); + if (!manual) tryOnUnmounted(unload); + return { + scriptTag, + load, + unload + }; +} +//#endregion +//#region useScrollLock/index.ts +function checkOverflowScroll(ele) { + const style = window.getComputedStyle(ele); + if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientWidth < ele.scrollWidth || style.overflowY === "auto" && ele.clientHeight < ele.scrollHeight) return true; + else { + const parent = ele.parentNode; + if (!parent || parent.tagName === "BODY") return false; + return checkOverflowScroll(parent); + } +} +function preventDefault(rawEvent) { + const e = rawEvent || window.event; + const _target = e.target; + if (checkOverflowScroll(_target)) return false; + if (e.touches.length > 1) return true; + if (e.preventDefault) e.preventDefault(); + return false; +} +const elInitialOverflow = /* @__PURE__ */ new WeakMap(); +/** +* Lock scrolling of the element. +* +* @see https://vueuse.org/useScrollLock +* @param element +*/ +function useScrollLock(element, initialState = false) { + const isLocked = shallowRef(initialState); + let stopTouchMoveListener = null; + let initialOverflow = ""; + watch(toRef(element), (el) => { + const target = resolveElement(toValue(el)); + if (target) { + const ele = target; + if (!elInitialOverflow.get(ele)) elInitialOverflow.set(ele, ele.style.overflow); + if (ele.style.overflow !== "hidden") initialOverflow = ele.style.overflow; + if (ele.style.overflow === "hidden") return isLocked.value = true; + if (isLocked.value) return ele.style.overflow = "hidden"; + } + }, { immediate: true }); + const lock = () => { + const el = resolveElement(toValue(element)); + if (!el || isLocked.value) return; + if (isIOS) stopTouchMoveListener = useEventListener(el, "touchmove", (e) => { + preventDefault(e); + }, { passive: false }); + el.style.overflow = "hidden"; + isLocked.value = true; + }; + const unlock = () => { + const el = resolveElement(toValue(element)); + if (!el || !isLocked.value) return; + if (isIOS) stopTouchMoveListener === null || stopTouchMoveListener === void 0 || stopTouchMoveListener(); + el.style.overflow = initialOverflow; + elInitialOverflow.delete(el); + isLocked.value = false; + }; + tryOnScopeDispose(unlock); + return computed({ + get() { + return isLocked.value; + }, + set(v) { + if (v) lock(); + else unlock(); + } + }); +} +//#endregion +//#region useSessionStorage/index.ts +/** +* Reactive SessionStorage. +* +* @see https://vueuse.org/useSessionStorage +* @param key +* @param initialValue +* @param options +*/ +function useSessionStorage(key, initialValue, options = {}) { + const { window = defaultWindow } = options; + return useStorage(key, initialValue, window === null || window === void 0 ? void 0 : window.sessionStorage, options); +} +//#endregion +//#region useShare/index.ts +/** +* Reactive Web Share API. +* +* @see https://vueuse.org/useShare +* @param shareOptions +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useShare(shareOptions = {}, options = {}) { + const { navigator = defaultNavigator } = options; + const _navigator = navigator; + const isSupported = /* @__PURE__ */ useSupported(() => _navigator && "canShare" in _navigator); + const share = async (overrideOptions = {}) => { + if (isSupported.value) { + const data = { + ...toValue(shareOptions), + ...toValue(overrideOptions) + }; + let granted = false; + if (_navigator.canShare) granted = _navigator.canShare(data); + if (granted) return _navigator.share(data); + } + }; + return { + isSupported, + share + }; +} +//#endregion +//#region useSorted/index.ts +const defaultSortFn = (source, compareFn) => source.sort(compareFn); +const defaultCompare = (a, b) => a - b; +function useSorted(...args) { + const [source] = args; + let compareFn = defaultCompare; + let options = {}; + if (args.length === 2) { + if (typeof args[1] === "object") { + var _options$compareFn; + options = args[1]; + compareFn = (_options$compareFn = options.compareFn) !== null && _options$compareFn !== void 0 ? _options$compareFn : defaultCompare; + } else { + var _args$; + compareFn = (_args$ = args[1]) !== null && _args$ !== void 0 ? _args$ : defaultCompare; + } + } else if (args.length > 2) { + var _args$2, _args$3; + compareFn = (_args$2 = args[1]) !== null && _args$2 !== void 0 ? _args$2 : defaultCompare; + options = (_args$3 = args[2]) !== null && _args$3 !== void 0 ? _args$3 : {}; + } + const { dirty = false, sortFn = defaultSortFn } = options; + if (!dirty) return computed(() => sortFn([...toValue(source)], compareFn)); + watchEffect(() => { + const result = sortFn(toValue(source), compareFn); + if (isRef(source)) source.value = result; + else source.splice(0, source.length, ...result); + }); + return source; +} +//#endregion +//#region useSpeechRecognition/index.ts +/** +* Reactive SpeechRecognition. +* +* @see https://vueuse.org/useSpeechRecognition +* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition SpeechRecognition +* @param options +*/ +function useSpeechRecognition(options = {}) { + const { interimResults = true, continuous = true, maxAlternatives = 1, window = defaultWindow } = options; + const lang = toRef(options.lang || "en-US"); + const isListening = shallowRef(false); + const isFinal = shallowRef(false); + const result = shallowRef(""); + const confidence = shallowRef(0); + const error = shallowRef(void 0); + let recognition; + const start = () => { + isListening.value = true; + }; + const stop = () => { + isListening.value = false; + }; + const toggle = (value = !isListening.value) => { + if (value) start(); + else stop(); + }; + const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition); + const isSupported = /* @__PURE__ */ useSupported(() => SpeechRecognition); + if (isSupported.value) { + recognition = new SpeechRecognition(); + recognition.continuous = continuous; + recognition.interimResults = interimResults; + recognition.lang = toValue(lang); + recognition.maxAlternatives = maxAlternatives; + recognition.onstart = () => { + isListening.value = true; + isFinal.value = false; + }; + watch(lang, (lang) => { + if (recognition && !isListening.value) recognition.lang = lang; + }); + recognition.onresult = (event) => { + const currentResult = event.results[event.resultIndex]; + const { transcript, confidence: alternativeConfidence } = currentResult[0]; + isFinal.value = currentResult.isFinal; + result.value = transcript; + confidence.value = alternativeConfidence; + error.value = void 0; + }; + recognition.onerror = (event) => { + error.value = event; + }; + recognition.onend = () => { + isListening.value = false; + recognition.lang = toValue(lang); + }; + watch(isListening, (newValue, oldValue) => { + if (newValue === oldValue) return; + try { + if (newValue) recognition.start(); + else recognition.stop(); + } catch (err) { + error.value = err; + } + }); + } + tryOnScopeDispose(() => { + stop(); + }); + return { + isSupported, + isListening, + isFinal: shallowReadonly(isFinal), + recognition, + result: shallowReadonly(result), + confidence: shallowReadonly(confidence), + error, + toggle, + start, + stop + }; +} +//#endregion +//#region useSpeechSynthesis/index.ts +/** +* Reactive SpeechSynthesis. +* +* @see https://vueuse.org/useSpeechSynthesis +* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis SpeechSynthesis +*/ +function useSpeechSynthesis(text, options = {}) { + const { pitch = 1, rate = 1, volume = 1, window = defaultWindow, onBoundary } = options; + const synth = window && window.speechSynthesis; + const isSupported = /* @__PURE__ */ useSupported(() => synth); + const isPlaying = shallowRef(false); + const status = shallowRef("init"); + const spokenText = toRef(text || ""); + const lang = toRef(options.lang || "en-US"); + const error = shallowRef(void 0); + const toggle = (value = !isPlaying.value) => { + isPlaying.value = value; + }; + const bindEventsForUtterance = (utterance) => { + utterance.lang = toValue(lang); + utterance.voice = toValue(options.voice) || null; + utterance.pitch = toValue(pitch); + utterance.rate = toValue(rate); + utterance.volume = toValue(volume); + utterance.onstart = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance.onpause = () => { + isPlaying.value = false; + status.value = "pause"; + }; + utterance.onresume = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance.onend = () => { + isPlaying.value = false; + status.value = "end"; + }; + utterance.onerror = (event) => { + error.value = event; + }; + utterance.onboundary = (event) => { + onBoundary === null || onBoundary === void 0 || onBoundary(event); + }; + }; + const utterance = computed(() => { + isPlaying.value = false; + status.value = "init"; + const newUtterance = new SpeechSynthesisUtterance(spokenText.value); + bindEventsForUtterance(newUtterance); + return newUtterance; + }); + const speak = () => { + synth.cancel(); + if (utterance) synth.speak(utterance.value); + }; + const stop = () => { + synth.cancel(); + isPlaying.value = false; + }; + if (isSupported.value) { + bindEventsForUtterance(utterance.value); + watch(lang, (lang) => { + if (utterance.value && !isPlaying.value) utterance.value.lang = lang; + }); + if (options.voice) watch(options.voice, () => { + synth.cancel(); + }); + watch(isPlaying, () => { + if (isPlaying.value) synth.resume(); + else synth.pause(); + }); + } + tryOnScopeDispose(() => { + isPlaying.value = false; + }); + return { + isSupported, + isPlaying, + status, + utterance, + error, + stop, + toggle, + speak + }; +} +//#endregion +//#region useStepper/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useStepper(steps, initialStep) { + const stepsRef = ref(steps); + const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value)); + const index = ref(stepNames.value.indexOf(initialStep !== null && initialStep !== void 0 ? initialStep : stepNames.value[0])); + const current = computed(() => at(index.value)); + const isFirst = computed(() => index.value === 0); + const isLast = computed(() => index.value === stepNames.value.length - 1); + const next = computed(() => stepNames.value[index.value + 1]); + const previous = computed(() => stepNames.value[index.value - 1]); + function at(index) { + if (Array.isArray(stepsRef.value)) return stepsRef.value[index]; + return stepsRef.value[stepNames.value[index]]; + } + function get(step) { + if (!stepNames.value.includes(step)) return; + return at(stepNames.value.indexOf(step)); + } + function goTo(step) { + if (stepNames.value.includes(step)) index.value = stepNames.value.indexOf(step); + } + function goToNext() { + if (isLast.value) return; + index.value++; + } + function goToPrevious() { + if (isFirst.value) return; + index.value--; + } + function goBackTo(step) { + if (isAfter(step)) goTo(step); + } + function isNext(step) { + return stepNames.value.indexOf(step) === index.value + 1; + } + function isPrevious(step) { + return stepNames.value.indexOf(step) === index.value - 1; + } + function isCurrent(step) { + return stepNames.value.indexOf(step) === index.value; + } + function isBefore(step) { + return index.value < stepNames.value.indexOf(step); + } + function isAfter(step) { + return index.value > stepNames.value.indexOf(step); + } + return { + steps: stepsRef, + stepNames, + index, + current, + next, + previous, + isFirst, + isLast, + at, + get, + goTo, + goToNext, + goToPrevious, + goBackTo, + isNext, + isPrevious, + isCurrent, + isBefore, + isAfter + }; +} +//#endregion +//#region useStorageAsync/index.ts +/** +* Reactive Storage with async support. +* +* @see https://vueuse.org/useStorageAsync +* @param key +* @param initialValue +* @param storage +* @param options +*/ +function useStorageAsync(key, initialValue, storage, options = {}) { + var _options$serializer; + const { flush = "pre", deep = true, listenToStorageChanges = true, writeDefaults = true, mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => { + console.error(e); + }, onReady } = options; + const rawInit = toValue(initialValue); + const type = guessSerializerType(rawInit); + const data = (shallow ? shallowRef : ref)(toValue(initialValue)); + const serializer = (_options$serializer = options.serializer) !== null && _options$serializer !== void 0 ? _options$serializer : StorageSerializers[type]; + if (!storage) try { + storage = getSSRHandler("getDefaultStorageAsync", () => defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.localStorage)(); + } catch (e) { + onError(e); + } + async function read(event) { + if (!storage || event && event.key !== key) return; + try { + const rawValue = event ? event.newValue : await storage.getItem(key); + if (rawValue == null) { + data.value = rawInit; + if (writeDefaults && rawInit !== null) await storage.setItem(key, await serializer.write(rawInit)); + } else if (mergeDefaults) { + const value = await serializer.read(rawValue); + if (typeof mergeDefaults === "function") data.value = mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) data.value = { + ...rawInit, + ...value + }; + else data.value = value; + } else data.value = await serializer.read(rawValue); + } catch (e) { + onError(e); + } + } + const promise = new Promise((resolve) => { + read().then(() => { + onReady === null || onReady === void 0 || onReady(data.value); + resolve(data); + }); + }); + if (window && listenToStorageChanges) useEventListener(window, "storage", (e) => Promise.resolve().then(() => read(e)), { passive: true }); + if (storage) watchWithFilter(data, async () => { + try { + if (data.value == null) await storage.removeItem(key); + else await storage.setItem(key, await serializer.write(data.value)); + } catch (e) { + onError(e); + } + }, { + flush, + deep, + eventFilter + }); + Object.assign(data, { + then: promise.then.bind(promise), + catch: promise.catch.bind(promise) + }); + return data; +} +//#endregion +//#region useStyleTag/index.ts +let _id = 0; +const _refCount = /* @__PURE__ */ new WeakMap(); +/** +* Inject <style> element in head. +* +* Overload: Omitted id +* +* @see https://vueuse.org/useStyleTag +* @param css +* @param options +*/ +function useStyleTag(css, options = {}) { + const isLoaded = shallowRef(false); + const { document = defaultDocument, immediate = true, manual = false, id = `vueuse_styletag_${++_id}` } = options; + const cssRef = shallowRef(css); + let stop = () => {}; + const load = () => { + var _refCount$get; + if (!document) return; + const el = document.getElementById(id) || document.createElement("style"); + if (!el.isConnected) { + el.id = id; + if (options.nonce) el.nonce = options.nonce; + if (options.media) el.media = options.media; + document.head.appendChild(el); + } + if (isLoaded.value) return; + _refCount.set(el, ((_refCount$get = _refCount.get(el)) !== null && _refCount$get !== void 0 ? _refCount$get : 0) + 1); + stop = watch(cssRef, (value) => { + el.textContent = value; + }, { immediate: true }); + isLoaded.value = true; + }; + const unload = () => { + if (!document || !isLoaded.value) return; + stop(); + const el = document.getElementById(id); + if (el) { + var _refCount$get2; + const count = ((_refCount$get2 = _refCount.get(el)) !== null && _refCount$get2 !== void 0 ? _refCount$get2 : 1) - 1; + if (count <= 0) { + _refCount.delete(el); + document.head.removeChild(el); + } else _refCount.set(el, count); + } + isLoaded.value = false; + }; + if (immediate && !manual) tryOnMounted(load); + if (!manual) tryOnScopeDispose(unload); + return { + id, + css: cssRef, + unload, + load, + isLoaded: shallowReadonly(isLoaded) + }; +} +//#endregion +//#region useSwipe/index.ts +/** +* Reactive swipe detection. +* +* @see https://vueuse.org/useSwipe +* @param target +* @param options +*/ +function useSwipe(target, options = {}) { + const { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart, passive = true } = options; + const coordsStart = reactive({ + x: 0, + y: 0 + }); + const coordsEnd = reactive({ + x: 0, + y: 0 + }); + const diffX = computed(() => coordsStart.x - coordsEnd.x); + const diffY = computed(() => coordsStart.y - coordsEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold); + const isSwiping = shallowRef(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) return "none"; + if (abs(diffX.value) > abs(diffY.value)) return diffX.value > 0 ? "left" : "right"; + else return diffY.value > 0 ? "up" : "down"; + }); + const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY]; + const updateCoordsStart = (x, y) => { + coordsStart.x = x; + coordsStart.y = y; + }; + const updateCoordsEnd = (x, y) => { + coordsEnd.x = x; + coordsEnd.y = y; + }; + const listenerOptions = { + passive, + capture: !passive + }; + const onTouchEnd = (e) => { + if (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value); + isSwiping.value = false; + }; + const stops = [ + useEventListener(target, "touchstart", (e) => { + if (e.touches.length !== 1) return; + const [x, y] = getTouchEventCoords(e); + updateCoordsStart(x, y); + updateCoordsEnd(x, y); + onSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "touchmove", (e) => { + if (e.touches.length !== 1) return; + const [x, y] = getTouchEventCoords(e); + updateCoordsEnd(x, y); + if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value)) e.preventDefault(); + if (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true; + if (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e); + }, listenerOptions), + useEventListener(target, ["touchend", "touchcancel"], onTouchEnd, listenerOptions) + ]; + const stop = () => stops.forEach((s) => s()); + return { + isSwiping, + direction, + coordsStart, + coordsEnd, + lengthX: diffX, + lengthY: diffY, + stop + }; +} +//#endregion +//#region useTemplateRefsList/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useTemplateRefsList() { + const refs = ref([]); + refs.value.set = (el) => { + if (el) refs.value.push(el); + }; + onBeforeUpdate(() => { + refs.value.length = 0; + }); + return refs; +} +//#endregion +//#region useTemporalNow/index.ts +function resolveTemporal(custom) { + if (custom) return custom; + return typeof Temporal === "undefined" ? void 0 : Temporal; +} +function assertTemporal(impl) { + if (!impl) throw new Error("[VueUse] No `Temporal` implementation found. See https://vueuse.org/useTemporalNow for details."); + return impl; +} +/** +* Reactive Temporal API with timezone and calendar support. +* +* @see https://vueuse.org/useTemporalNow +* @param options - Configuration options +*/ +function useTemporalNow(options = {}) { + const { timezone: initialTimezone = "UTC", calendar: initialCalendar = "gregory", scheduler = useRafFn, temporal: customTemporal } = options; + const TemporalImpl = assertTemporal(resolveTemporal(customTemporal)); + const timezone = shallowRef(initialTimezone); + const calendar = shallowRef(initialCalendar); + const now = shallowRef(TemporalImpl.Now.zonedDateTimeISO(timezone.value).withCalendar(calendar.value)); + function updateNow() { + now.value = TemporalImpl.Now.zonedDateTimeISO(timezone.value).withCalendar(calendar.value); + } + const { isActive, pause, resume } = scheduler(updateNow); + watch([timezone, calendar], updateNow); + const toTimezone = (tz) => now.value.withTimeZone(tz); + const toCalendar = (cal) => now.value.withCalendar(cal); + const toPlainDate = () => now.value.toPlainDate(); + const toPlainTime = () => now.value.toPlainTime(); + const toPlainDateTime = () => now.value.toPlainDateTime(); + const format = (formatOptions) => now.value.toLocaleString(void 0, formatOptions); + const add = (duration) => now.value.add(duration); + const subtract = (duration) => now.value.subtract(duration); + const compare = (other) => TemporalImpl.ZonedDateTime.compare(now.value, other); + return { + now, + timezone, + calendar, + toTimezone, + toCalendar, + toPlainDate, + toPlainTime, + toPlainDateTime, + format, + add, + subtract, + compare, + isActive, + pause, + resume + }; +} +//#endregion +//#region useTextDirection/index.ts +/** +* Reactive dir of the element's text. +* +* @see https://vueuse.org/useTextDirection +* +* @__NO_SIDE_EFFECTS__ +*/ +function useTextDirection(options = {}) { + const { document = defaultDocument, selector = "html", observe = false, initialValue = "ltr" } = options; + function getValue() { + var _ref, _document$querySelect; + return (_ref = document === null || document === void 0 || (_document$querySelect = document.querySelector(selector)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getAttribute("dir")) !== null && _ref !== void 0 ? _ref : initialValue; + } + const dir = shallowRef(getValue()); + tryOnMounted(() => dir.value = getValue()); + if (observe && document) useMutationObserver(document.querySelector(selector), () => dir.value = getValue(), { attributes: true }); + return computed({ + get() { + return dir.value; + }, + set(v) { + var _document$querySelect2, _document$querySelect3; + dir.value = v; + if (!document) return; + if (dir.value) (_document$querySelect2 = document.querySelector(selector)) === null || _document$querySelect2 === void 0 || _document$querySelect2.setAttribute("dir", dir.value); + else (_document$querySelect3 = document.querySelector(selector)) === null || _document$querySelect3 === void 0 || _document$querySelect3.removeAttribute("dir"); + } + }); +} +//#endregion +//#region useTextSelection/index.ts +function getRangesFromSelection(selection) { + var _selection$rangeCount; + const rangeCount = (_selection$rangeCount = selection.rangeCount) !== null && _selection$rangeCount !== void 0 ? _selection$rangeCount : 0; + return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i)); +} +/** +* Reactively track user text selection based on [`Window.getSelection`](https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection). +* +* @see https://vueuse.org/useTextSelection +* +* @__NO_SIDE_EFFECTS__ +*/ +function useTextSelection(options = {}) { + var _window$getSelection; + const { window = defaultWindow } = options; + const selection = shallowRef((_window$getSelection = window === null || window === void 0 ? void 0 : window.getSelection()) !== null && _window$getSelection !== void 0 ? _window$getSelection : null); + const text = computed(() => { + var _selection$value$toSt, _selection$value; + return (_selection$value$toSt = (_selection$value = selection.value) === null || _selection$value === void 0 ? void 0 : _selection$value.toString()) !== null && _selection$value$toSt !== void 0 ? _selection$value$toSt : ""; + }); + const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []); + const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect())); + function onSelectionChange() { + selection.value = null; + if (window) selection.value = window.getSelection(); + } + if (window) useEventListener(window.document, "selectionchange", onSelectionChange, { passive: true }); + return { + text, + rects, + ranges, + selection + }; +} +//#endregion +//#region useTextareaAutosize/index.ts +/** +* Call window.requestAnimationFrame(), if not available, just call the function +* +* @param window +* @param fn +*/ +function tryRequestAnimationFrame(window = defaultWindow, fn) { + if (window && typeof window.requestAnimationFrame === "function") window.requestAnimationFrame(fn); + else fn(); +} +function useTextareaAutosize(options = {}) { + var _options$input, _options$styleProp; + const { window = defaultWindow } = options; + const textarea = toRef(options === null || options === void 0 ? void 0 : options.element); + const input = toRef((_options$input = options === null || options === void 0 ? void 0 : options.input) !== null && _options$input !== void 0 ? _options$input : ""); + const styleProp = (_options$styleProp = options === null || options === void 0 ? void 0 : options.styleProp) !== null && _options$styleProp !== void 0 ? _options$styleProp : "height"; + const textareaScrollHeight = shallowRef(1); + const textareaOldWidth = shallowRef(0); + function triggerResize() { + var _textarea$value; + if (!textarea.value) return; + let height = ""; + const maxHeight = options === null || options === void 0 ? void 0 : options.maxHeight; + textarea.value.style[styleProp] = "1px"; + textareaScrollHeight.value = (_textarea$value = textarea.value) === null || _textarea$value === void 0 ? void 0 : _textarea$value.scrollHeight; + const _styleTarget = toValue(options === null || options === void 0 ? void 0 : options.styleTarget); + const styleHeight = maxHeight != null ? `${Math.min(textareaScrollHeight.value, maxHeight)}px` : `${textareaScrollHeight.value}px`; + if (_styleTarget) _styleTarget.style[styleProp] = styleHeight; + else height = styleHeight; + textarea.value.style[styleProp] = height; + } + watch([input, textarea], () => nextTick(triggerResize), { immediate: true }); + watch(textareaScrollHeight, () => { + var _options$onResize; + return options === null || options === void 0 || (_options$onResize = options.onResize) === null || _options$onResize === void 0 ? void 0 : _options$onResize.call(options); + }); + useResizeObserver(textarea, ([{ contentRect }]) => { + if (textareaOldWidth.value === contentRect.width) return; + tryRequestAnimationFrame(window, () => { + textareaOldWidth.value = contentRect.width; + triggerResize(); + }); + }); + if (options === null || options === void 0 ? void 0 : options.watch) watch(options.watch, triggerResize, { + immediate: true, + deep: true + }); + return { + textarea, + input, + triggerResize + }; +} +//#endregion +//#region useThrottledRefHistory/index.ts +/** +* Shorthand for [useRefHistory](https://vueuse.org/useRefHistory) with throttled filter. +* +* @see https://vueuse.org/useThrottledRefHistory +* @param source +* @param options +*/ +function useThrottledRefHistory(source, options = {}) { + const { throttle = 200, trailing = true } = options; + const filter = throttleFilter(throttle, trailing); + return { ...useRefHistory(source, { + ...options, + eventFilter: filter + }) }; +} +//#endregion +//#region useTimeAgo/index.ts +const DEFAULT_UNITS = [ + { + max: 6e4, + value: 1e3, + name: "second" + }, + { + max: 276e4, + value: 6e4, + name: "minute" + }, + { + max: 72e6, + value: 36e5, + name: "hour" + }, + { + max: 5184e5, + value: 864e5, + name: "day" + }, + { + max: 24192e5, + value: 6048e5, + name: "week" + }, + { + max: 28512e6, + value: 2592e6, + name: "month" + }, + { + max: Number.POSITIVE_INFINITY, + value: 31536e6, + name: "year" + } +]; +const DEFAULT_MESSAGES = { + justNow: "just now", + past: (n) => /\d/.test(n) ? `${n} ago` : n, + future: (n) => /\d/.test(n) ? `in ${n}` : n, + month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`, + year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`, + day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`, + week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`, + hour: (n) => `${n} hour${n > 1 ? "s" : ""}`, + minute: (n) => `${n} minute${n > 1 ? "s" : ""}`, + second: (n) => `${n} second${n > 1 ? "s" : ""}`, + invalid: "" +}; +function DEFAULT_FORMATTER(date) { + return date.toISOString().slice(0, 10); +} +/* @__NO_SIDE_EFFECTS__ */ +function useTimeAgo(time, options = {}) { + const { controls: exposeControls = false, scheduler = (cb) => useIntervalFn(cb, 3e4) } = options; + const { now, ...controls } = /* @__PURE__ */ useNow({ + scheduler, + controls: true + }); + const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now))); + if (exposeControls) return { + timeAgo, + ...controls + }; + else return timeAgo; +} +function formatTimeAgo(from, options = {}, now = Date.now()) { + const { max, messages = DEFAULT_MESSAGES, fullDateFormatter = DEFAULT_FORMATTER, units = DEFAULT_UNITS, showSecond = false, rounding = "round" } = options; + const roundFn = typeof rounding === "number" ? (n) => +n.toFixed(rounding) : Math[rounding]; + const diff = +now - +from; + const absDiff = Math.abs(diff); + function getValue(diff, unit) { + return roundFn(Math.abs(diff) / unit.value); + } + function format(diff, unit) { + const val = getValue(diff, unit); + const past = diff > 0; + const str = applyFormat(unit.name, val, past); + return applyFormat(past ? "past" : "future", str, past); + } + function applyFormat(name, val, isPast) { + const formatter = messages[name]; + if (typeof formatter === "function") return formatter(val, isPast); + return formatter.replace("{0}", val.toString()); + } + if (absDiff < 6e4 && !showSecond) return messages.justNow; + if (typeof max === "number" && absDiff > max) return fullDateFormatter(new Date(from)); + if (typeof max === "string") { + var _units$find; + const unitMax = (_units$find = units.find((i) => i.name === max)) === null || _units$find === void 0 ? void 0 : _units$find.max; + if (unitMax && absDiff > unitMax) return fullDateFormatter(new Date(from)); + } + for (const [idx, unit] of units.entries()) { + if (getValue(diff, unit) <= 0 && units[idx - 1]) return format(diff, units[idx - 1]); + if (absDiff < unit.max) return format(diff, unit); + } + return messages.invalid; +} +//#endregion +//#region useTimeAgoIntl/index.ts +const UNITS = [ + { + name: "year", + ms: 31536e6 + }, + { + name: "month", + ms: 2592e6 + }, + { + name: "week", + ms: 6048e5 + }, + { + name: "day", + ms: 864e5 + }, + { + name: "hour", + ms: 36e5 + }, + { + name: "minute", + ms: 6e4 + }, + { + name: "second", + ms: 1e3 + } +]; +function useTimeAgoIntl(time, options = {}) { + const { controls: exposeControls = false, scheduler = (cb) => useIntervalFn(cb, 3e4) } = options; + const { now, ...controls } = /* @__PURE__ */ useNow({ + scheduler, + controls: true + }); + const result = computed(() => getTimeAgoIntlResult(new Date(toValue(time)), options, toValue(now))); + const parts = computed(() => result.value.parts); + const timeAgoIntl = computed(() => formatTimeAgoIntlParts(parts.value, { + ...options, + locale: result.value.resolvedLocale + })); + return exposeControls ? { + timeAgoIntl, + parts, + ...controls + } : timeAgoIntl; +} +/** +* Non-reactive version of useTimeAgoIntl +*/ +function formatTimeAgoIntl(from, options = {}, now = Date.now()) { + const { parts, resolvedLocale } = getTimeAgoIntlResult(from, options, now); + return formatTimeAgoIntlParts(parts, { + ...options, + locale: resolvedLocale + }); +} +/** +* Get parts from `Intl.RelativeTimeFormat.formatToParts`. +*/ +function getTimeAgoIntlResult(from, options = {}, now = Date.now()) { + var _options$units; + const { locale, relativeTimeFormatOptions = { numeric: "auto" } } = options; + const rtf = new Intl.RelativeTimeFormat(locale, relativeTimeFormatOptions); + const { locale: resolvedLocale } = rtf.resolvedOptions(); + const diff = +from - +now; + const absDiff = Math.abs(diff); + const units = (_options$units = options.units) !== null && _options$units !== void 0 ? _options$units : UNITS; + for (const { name, ms } of units) if (absDiff >= ms) return { + resolvedLocale, + parts: rtf.formatToParts(Math.round(diff / ms), name) + }; + return { + resolvedLocale, + parts: rtf.formatToParts(0, units[units.length - 1].name) + }; +} +/** +* Format parts into a string +*/ +function formatTimeAgoIntlParts(parts, options = {}) { + const { insertSpace = true, joinParts, locale } = options; + if (typeof joinParts === "function") return joinParts(parts, locale); + if (!insertSpace) return parts.map((part) => part.value).join(""); + return parts.map((part) => part.value.trim()).join(" "); +} +//#endregion +//#region useTimeoutPoll/index.ts +function useTimeoutPoll(fn, interval, options = {}) { + const { immediate = true, immediateCallback = false } = options; + const { start } = useTimeoutFn(loop, interval, { immediate }); + const isActive = shallowRef(false); + async function loop() { + if (!isActive.value) return; + await fn(); + start(); + } + function resume() { + if (!isActive.value) { + isActive.value = true; + if (immediateCallback) fn(); + start(); + } + } + function pause() { + isActive.value = false; + } + if (immediate && isClient) resume(); + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} +//#endregion +//#region useTimestamp/index.ts +function useTimestamp(options = {}) { + const { controls: exposeControls = false, offset = 0, scheduler = useRafFn, callback } = options; + const ts = shallowRef(timestamp() + offset); + const update = () => ts.value = timestamp() + offset; + const controls = scheduler(callback ? () => { + update(); + callback(ts.value); + } : update); + if (exposeControls) return { + timestamp: ts, + ...controls + }; + else return ts; +} +//#endregion +//#region useTitle/index.ts +function useTitle(newTitle = null, options = {}) { + var _document$title, _ref; + const { document = defaultDocument, restoreOnUnmount = (t) => t } = options; + const originalTitle = (_document$title = document === null || document === void 0 ? void 0 : document.title) !== null && _document$title !== void 0 ? _document$title : ""; + const title = toRef((_ref = newTitle !== null && newTitle !== void 0 ? newTitle : document === null || document === void 0 ? void 0 : document.title) !== null && _ref !== void 0 ? _ref : null); + const isReadonly = !!(newTitle && typeof newTitle === "function"); + function format(t) { + if (!("titleTemplate" in options)) return t; + const template = options.titleTemplate || "%s"; + return typeof template === "function" ? template(t) : toValue(template).replace(/%s/g, t); + } + watch(title, (newValue, oldValue) => { + if (newValue !== oldValue && document) document.title = format(newValue !== null && newValue !== void 0 ? newValue : ""); + }, { immediate: true }); + if (options.observe && !options.titleTemplate && document && !isReadonly) { + var _document$head; + useMutationObserver((_document$head = document.head) === null || _document$head === void 0 ? void 0 : _document$head.querySelector("title"), () => { + if (document && document.title !== title.value) title.value = format(document.title); + }, { childList: true }); + } + tryOnScopeDispose(() => { + if (restoreOnUnmount) { + const restoredTitle = restoreOnUnmount(originalTitle, title.value || ""); + if (restoredTitle != null && document) document.title = restoredTitle; + } + }); + return title; +} +/** +* Common transitions +* +* @see https://easings.net +*/ +const TransitionPresets = /* #__PURE__ */ Object.assign({}, { linear: identity }, { + easeInSine: [ + .12, + 0, + .39, + 0 + ], + easeOutSine: [ + .61, + 1, + .88, + 1 + ], + easeInOutSine: [ + .37, + 0, + .63, + 1 + ], + easeInQuad: [ + .11, + 0, + .5, + 0 + ], + easeOutQuad: [ + .5, + 1, + .89, + 1 + ], + easeInOutQuad: [ + .45, + 0, + .55, + 1 + ], + easeInCubic: [ + .32, + 0, + .67, + 0 + ], + easeOutCubic: [ + .33, + 1, + .68, + 1 + ], + easeInOutCubic: [ + .65, + 0, + .35, + 1 + ], + easeInQuart: [ + .5, + 0, + .75, + 0 + ], + easeOutQuart: [ + .25, + 1, + .5, + 1 + ], + easeInOutQuart: [ + .76, + 0, + .24, + 1 + ], + easeInQuint: [ + .64, + 0, + .78, + 0 + ], + easeOutQuint: [ + .22, + 1, + .36, + 1 + ], + easeInOutQuint: [ + .83, + 0, + .17, + 1 + ], + easeInExpo: [ + .7, + 0, + .84, + 0 + ], + easeOutExpo: [ + .16, + 1, + .3, + 1 + ], + easeInOutExpo: [ + .87, + 0, + .13, + 1 + ], + easeInCirc: [ + .55, + 0, + 1, + .45 + ], + easeOutCirc: [ + 0, + .55, + .45, + 1 + ], + easeInOutCirc: [ + .85, + 0, + .15, + 1 + ], + easeInBack: [ + .36, + 0, + .66, + -.56 + ], + easeOutBack: [ + .34, + 1.56, + .64, + 1 + ], + easeInOutBack: [ + .68, + -.6, + .32, + 1.6 + ] +}); +/** +* Create an easing function from cubic bezier points. +*/ +function createEasingFunction([p0, p1, p2, p3]) { + const a = (a1, a2) => 1 - 3 * a2 + 3 * a1; + const b = (a1, a2) => 3 * a2 - 6 * a1; + const c = (a1) => 3 * a1; + const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t; + const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1); + const getTforX = (x) => { + let aGuessT = x; + for (let i = 0; i < 4; ++i) { + const currentSlope = getSlope(aGuessT, p0, p2); + if (currentSlope === 0) return aGuessT; + const currentX = calcBezier(aGuessT, p0, p2) - x; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + }; + return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3); +} +function lerp(a, b, alpha) { + return a + alpha * (b - a); +} +function defaultInterpolation(a, b, t) { + const aVal = toValue(a); + const bVal = toValue(b); + if (typeof aVal === "number" && typeof bVal === "number") return lerp(aVal, bVal, t); + if (Array.isArray(aVal) && Array.isArray(bVal)) return aVal.map((v, i) => lerp(v, toValue(bVal[i]), t)); + throw new TypeError("Unknown transition type, specify an interpolation function."); +} +function normalizeEasing(easing) { + var _toValue; + return typeof easing === "function" ? easing : (_toValue = toValue(easing)) !== null && _toValue !== void 0 ? _toValue : identity; +} +/** +* Transition from one value to another. +* +* @param source +* @param from +* @param to +* @param options +*/ +function transition(source, from, to, options = {}) { + var _toValue2; + const { window = defaultWindow } = options; + const fromVal = toValue(from); + const toVal = toValue(to); + const duration = (_toValue2 = toValue(options.duration)) !== null && _toValue2 !== void 0 ? _toValue2 : 1e3; + const startedAt = Date.now(); + const endAt = Date.now() + duration; + const interpolation = typeof options.interpolation === "function" ? options.interpolation : defaultInterpolation; + const trans = typeof options.easing !== "undefined" ? normalizeEasing(options.easing) : normalizeEasing(options.transition); + const ease = typeof trans === "function" ? trans : createEasingFunction(trans); + return new Promise((resolve) => { + source.value = fromVal; + const tick = () => { + var _options$abort; + if ((_options$abort = options.abort) === null || _options$abort === void 0 ? void 0 : _options$abort.call(options)) { + resolve(); + return; + } + const now = Date.now(); + const alpha = ease((now - startedAt) / duration); + source.value = interpolation(fromVal, toVal, alpha); + if (now < endAt) window === null || window === void 0 || window.requestAnimationFrame(tick); + else { + source.value = toVal; + resolve(); + } + }; + tick(); + }); +} +/** +* Transition from one value to another. +* @deprecated The `executeTransition` function is deprecated, use `transition` instead. +* +* @param source +* @param from +* @param to +* @param options +*/ +function executeTransition(source, from, to, options = {}) { + return transition(source, from, to, options); +} +/** +* Follow value with a transition. +* +* @see https://vueuse.org/useTransition +* @param source +* @param options +*/ +function useTransition(source, options = {}) { + let currentId = 0; + const sourceVal = () => { + const v = toValue(source); + return typeof options.interpolation === "undefined" && Array.isArray(v) ? v.map(toValue) : v; + }; + const outputRef = shallowRef(sourceVal()); + watch(sourceVal, async (to) => { + var _options$onStarted, _options$onFinished; + if (toValue(options.disabled)) return; + const id = ++currentId; + if (options.delay) await promiseTimeout(toValue(options.delay)); + if (id !== currentId) return; + (_options$onStarted = options.onStarted) === null || _options$onStarted === void 0 || _options$onStarted.call(options); + await transition(outputRef, outputRef.value, to, { + ...options, + abort: () => { + var _options$abort2; + return id !== currentId || ((_options$abort2 = options.abort) === null || _options$abort2 === void 0 ? void 0 : _options$abort2.call(options)); + } + }); + (_options$onFinished = options.onFinished) === null || _options$onFinished === void 0 || _options$onFinished.call(options); + }, { deep: true }); + watch(() => toValue(options.disabled), (disabled) => { + if (disabled) { + currentId++; + outputRef.value = sourceVal(); + } + }); + tryOnScopeDispose(() => { + currentId++; + }); + return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value); +} +//#endregion +//#region useUrlSearchParams/index.ts +/** +* Reactive URLSearchParams +* +* @see https://vueuse.org/useUrlSearchParams +* @param mode +* @param options +*/ +function useUrlSearchParams(mode = "history", options = {}) { + const { initialValue = {}, removeNullishValues = true, removeFalsyValues = false, write: enableWrite = true, writeMode = "replace", window = defaultWindow, stringify = (params) => params.toString() } = options; + if (!window) return reactive(initialValue); + const state = reactive({}); + function getRawParams() { + if (mode === "history") return window.location.search || ""; + else if (mode === "hash") { + const hash = window.location.hash || ""; + const index = hash.indexOf("?"); + return index > 0 ? hash.slice(index) : ""; + } else return (window.location.hash || "").replace(/^#/, ""); + } + function constructQuery(params) { + const stringified = stringify(params); + if (mode === "history") return `${stringified ? `?${stringified}` : ""}${window.location.hash || ""}`; + if (mode === "hash-params") return `${window.location.search || ""}${stringified ? `#${stringified}` : ""}`; + const hash = window.location.hash || "#"; + const index = hash.indexOf("?"); + if (index > 0) return `${window.location.search || ""}${hash.slice(0, index)}${stringified ? `?${stringified}` : ""}`; + return `${window.location.search || ""}${hash}${stringified ? `?${stringified}` : ""}`; + } + function read() { + return new URLSearchParams(getRawParams()); + } + function updateState(params) { + const unusedKeys = new Set(Object.keys(state)); + for (const key of params.keys()) { + const paramsForKey = params.getAll(key); + state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || ""; + unusedKeys.delete(key); + } + Array.from(unusedKeys).forEach((key) => delete state[key]); + } + const { pause, resume } = watchPausable(state, () => { + const params = new URLSearchParams(""); + Object.keys(state).forEach((key) => { + const mapEntry = state[key]; + if (Array.isArray(mapEntry)) mapEntry.forEach((value) => params.append(key, value)); + else if (removeNullishValues && mapEntry == null) params.delete(key); + else if (removeFalsyValues && !mapEntry) params.delete(key); + else params.set(key, mapEntry); + }); + write(params, false); + }, { deep: true }); + function write(params, shouldUpdate, shouldWriteHistory = true) { + pause(); + if (shouldUpdate) updateState(params); + if (writeMode === "replace") window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params)); + else if (shouldWriteHistory) window.history.pushState(window.history.state, window.document.title, window.location.pathname + constructQuery(params)); + nextTick(() => resume()); + } + function onChanged() { + if (!enableWrite) return; + write(read(), true, false); + } + const listenerOptions = { passive: true }; + useEventListener(window, "popstate", onChanged, listenerOptions); + if (mode !== "history") useEventListener(window, "hashchange", onChanged, listenerOptions); + const initial = read(); + if (initial.keys().next().value) updateState(initial); + else Object.assign(state, initialValue); + return state; +} +//#endregion +//#region useUserMedia/index.ts +/** +* Reactive `mediaDevices.getUserMedia` streaming +* +* @see https://vueuse.org/useUserMedia +* @param options +*/ +function useUserMedia(options = {}) { + var _options$enabled, _options$autoSwitch; + const enabled = shallowRef((_options$enabled = options.enabled) !== null && _options$enabled !== void 0 ? _options$enabled : false); + const autoSwitch = shallowRef((_options$autoSwitch = options.autoSwitch) !== null && _options$autoSwitch !== void 0 ? _options$autoSwitch : true); + const constraints = ref(options.constraints); + const { navigator = defaultNavigator } = options; + const isSupported = /* @__PURE__ */ useSupported(() => { + var _navigator$mediaDevic; + return navigator === null || navigator === void 0 || (_navigator$mediaDevic = navigator.mediaDevices) === null || _navigator$mediaDevic === void 0 ? void 0 : _navigator$mediaDevic.getUserMedia; + }); + const stream = shallowRef(); + function getDeviceOptions(type) { + switch (type) { + case "video": + if (constraints.value) return constraints.value.video || false; + break; + case "audio": if (constraints.value) return constraints.value.audio || false; + } + } + async function _start() { + if (!isSupported.value || stream.value) return; + stream.value = await navigator.mediaDevices.getUserMedia({ + video: getDeviceOptions("video"), + audio: getDeviceOptions("audio") + }); + return stream.value; + } + function _stop() { + var _stream$value; + (_stream$value = stream.value) === null || _stream$value === void 0 || _stream$value.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) enabled.value = true; + return stream.value; + } + async function restart() { + _stop(); + return await start(); + } + watch(enabled, (v) => { + if (v) _start(); + else _stop(); + }, { immediate: true }); + watch(constraints, () => { + if (autoSwitch.value && stream.value) restart(); + }, { + immediate: true, + deep: true + }); + tryOnScopeDispose(() => { + stop(); + }); + return { + isSupported, + stream, + start, + stop, + restart, + constraints, + enabled, + autoSwitch + }; +} +//#endregion +//#region useVModel/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useVModel(props, key, emit, options = {}) { + var _vm$$emit, _vm$proxy; + const { clone = false, passive = false, eventName, deep = false, defaultValue, shouldEmit } = options; + const vm = getCurrentInstance(); + const _emit = emit || (vm === null || vm === void 0 ? void 0 : vm.emit) || (vm === null || vm === void 0 || (_vm$$emit = vm.$emit) === null || _vm$$emit === void 0 ? void 0 : _vm$$emit.bind(vm)) || (vm === null || vm === void 0 || (_vm$proxy = vm.proxy) === null || _vm$proxy === void 0 || (_vm$proxy = _vm$proxy.$emit) === null || _vm$proxy === void 0 ? void 0 : _vm$proxy.bind(vm === null || vm === void 0 ? void 0 : vm.proxy)); + let event = eventName; + if (!key) key = "modelValue"; + event = event || `update:${key.toString()}`; + const cloneFn = (val) => !clone ? val : typeof clone === "function" ? clone(val) : cloneFnJSON(val); + const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue; + const triggerEmit = (value) => { + if (shouldEmit) { + if (shouldEmit(value)) _emit(event, value); + } else _emit(event, value); + }; + if (passive) { + const initialValue = getValue(); + const proxy = ref(initialValue); + let isUpdating = false; + watch(() => props[key], (v) => { + if (!isUpdating) { + isUpdating = true; + proxy.value = cloneFn(v); + nextTick(() => isUpdating = false); + } + }); + watch(proxy, (v) => { + if (!isUpdating && (v !== props[key] || deep)) triggerEmit(v); + }, { deep }); + return proxy; + } else return computed({ + get() { + return getValue(); + }, + set(value) { + triggerEmit(value); + } + }); +} +//#endregion +//#region useVModels/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useVModels(props, emit, options = {}) { + const ret = {}; + for (const key in props) ret[key] = /* @__PURE__ */ useVModel(props, key, emit, options); + return ret; +} +//#endregion +//#region useVibrate/index.ts +/** +* Reactive vibrate +* +* @see https://vueuse.org/useVibrate +* @see https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useVibrate(options) { + const { pattern = [], scheduler, navigator = defaultNavigator } = options || {}; + const isSupported = /* @__PURE__ */ useSupported(() => typeof navigator !== "undefined" && "vibrate" in navigator); + const patternRef = toRef(pattern); + const vibrate = (pattern = patternRef.value) => { + if (isSupported.value) navigator.vibrate(pattern); + }; + const intervalControls = scheduler === null || scheduler === void 0 ? void 0 : scheduler(vibrate); + const stop = () => { + if (isSupported.value) navigator.vibrate(0); + intervalControls === null || intervalControls === void 0 || intervalControls.pause(); + }; + return { + isSupported, + pattern, + intervalControls, + vibrate, + stop + }; +} +//#endregion +//#region useVirtualList/index.ts +/** +* Please consider using [`vue-virtual-scroller`](https://github.com/Akryum/vue-virtual-scroller) if you are looking for more features. +*/ +function useVirtualList(list, options) { + const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = "itemHeight" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list); + return { + list: currentList, + scrollTo, + containerProps: { + ref: containerRef, + onScroll: () => { + calculateRange(); + }, + style: containerStyle + }, + wrapperProps + }; +} +function useVirtualListResources(list) { + const containerRef = shallowRef(null); + const size = useElementSize(containerRef); + const currentList = ref([]); + const source = shallowRef(list); + return { + state: ref({ + start: 0, + end: 10 + }), + source, + currentList, + size, + containerRef + }; +} +function createGetViewCapacity(state, source, itemSize) { + return (containerSize) => { + if (typeof itemSize === "number") return Math.ceil(containerSize / itemSize); + const { start = 0 } = state.value; + let sum = 0; + let capacity = 0; + for (let i = start; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + capacity = i; + if (sum > containerSize) break; + } + return capacity - start; + }; +} +function createGetOffset(source, itemSize) { + return (scrollDirection) => { + if (typeof itemSize === "number") return Math.floor(scrollDirection / itemSize) + 1; + let sum = 0; + let offset = 0; + for (let i = 0; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + if (sum >= scrollDirection) { + offset = i; + break; + } + } + return offset + 1; + }; +} +function createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) { + return () => { + const element = containerRef.value; + if (element) { + const offset = getOffset(type === "vertical" ? element.scrollTop : element.scrollLeft); + const viewCapacity = getViewCapacity(type === "vertical" ? element.clientHeight : element.clientWidth); + const from = offset - overscan; + const to = offset + viewCapacity + overscan; + state.value = { + start: from < 0 ? 0 : from, + end: to > source.value.length ? source.value.length : to + }; + currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({ + data: ele, + index: index + state.value.start + })); + } + }; +} +function createGetDistance(itemSize, source) { + return (index) => { + if (typeof itemSize === "number") return index * itemSize; + return source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0); + }; +} +function useWatchForSizes(size, listRef, totalSize, containerRef, calculateRange) { + watch([ + size.width, + size.height, + listRef, + totalSize, + containerRef + ], () => { + calculateRange(); + }); +} +function createComputedTotalSize(itemSize, source) { + return computed(() => { + if (typeof itemSize === "number") return source.value.length * itemSize; + return source.value.reduce((sum, _, index) => sum + itemSize(index), 0); + }); +} +const scrollToDictionaryForElementScrollKey = { + horizontal: "scrollLeft", + vertical: "scrollTop" +}; +const scrollToDictionaryForElementScrollToKey = { + horizontal: "left", + vertical: "top" +}; +const defaultScrollToOptions = { + behavior: "auto", + block: "start", + inline: "nearest" +}; +function createScrollTo(type, calculateRange, getDistance, containerRef, itemSize) { + return (index, options = defaultScrollToOptions) => { + if (!containerRef.value) return; + options = { + ...defaultScrollToOptions, + ...options + }; + let offset = 0; + const axisToCheck = options[type === "horizontal" ? "inline" : "block"]; + if (axisToCheck) { + const containerSize = type === "horizontal" ? containerRef.value.clientWidth : containerRef.value.clientHeight; + const fullItemSize = typeof itemSize === "number" ? itemSize : itemSize(index); + if (axisToCheck === "center") offset = containerSize / 2 - fullItemSize / 2; + else if (axisToCheck === "end") offset = containerSize - fullItemSize; + else if (axisToCheck === "nearest") { + const containerScrollPosition = containerRef.value[scrollToDictionaryForElementScrollKey[type]]; + if (getDistance(index) > containerScrollPosition + containerSize / 2) offset = containerSize - fullItemSize; + } + } + containerRef.value.scrollTo({ + [scrollToDictionaryForElementScrollToKey[type]]: getDistance(index) - offset, + behavior: options.behavior + }); + calculateRange(); + }; +} +function useHorizontalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowX: "auto" }; + const { itemWidth, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemWidth); + const calculateRange = createCalculateRange("horizontal", overscan, createGetOffset(source, itemWidth), getViewCapacity, resources); + const getDistanceLeft = createGetDistance(itemWidth, source); + const offsetLeft = computed(() => getDistanceLeft(state.value.start)); + const totalWidth = createComputedTotalSize(itemWidth, source); + useWatchForSizes(size, source, totalWidth, containerRef, calculateRange); + return { + scrollTo: createScrollTo("horizontal", calculateRange, getDistanceLeft, containerRef, itemWidth), + calculateRange, + wrapperProps: computed(() => { + return { style: { + height: "100%", + width: `${totalWidth.value - offsetLeft.value}px`, + marginLeft: `${offsetLeft.value}px`, + display: "flex" + } }; + }), + containerStyle, + currentList, + containerRef + }; +} +function useVerticalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowY: "auto" }; + const { itemHeight, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemHeight); + const calculateRange = createCalculateRange("vertical", overscan, createGetOffset(source, itemHeight), getViewCapacity, resources); + const getDistanceTop = createGetDistance(itemHeight, source); + const offsetTop = computed(() => getDistanceTop(state.value.start)); + const totalHeight = createComputedTotalSize(itemHeight, source); + useWatchForSizes(size, source, totalHeight, containerRef, calculateRange); + return { + calculateRange, + scrollTo: createScrollTo("vertical", calculateRange, getDistanceTop, containerRef, itemHeight), + containerStyle, + wrapperProps: computed(() => { + return { style: { + width: "100%", + height: `${totalHeight.value - offsetTop.value}px`, + marginTop: `${offsetTop.value}px` + } }; + }), + currentList, + containerRef + }; +} +//#endregion +//#region useWakeLock/index.ts +/** +* Reactive Screen Wake Lock API. +* +* @see https://vueuse.org/useWakeLock +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useWakeLock(options = {}) { + const { navigator = defaultNavigator, document = defaultDocument } = options; + const requestedType = shallowRef(false); + const sentinel = shallowRef(null); + const documentVisibility = useDocumentVisibility({ document }); + const isSupported = /* @__PURE__ */ useSupported(() => navigator && "wakeLock" in navigator); + const isActive = computed(() => !!sentinel.value && documentVisibility.value === "visible"); + if (isSupported.value) { + useEventListener(sentinel, "release", () => { + var _sentinel$value$type, _sentinel$value; + requestedType.value = (_sentinel$value$type = (_sentinel$value = sentinel.value) === null || _sentinel$value === void 0 ? void 0 : _sentinel$value.type) !== null && _sentinel$value$type !== void 0 ? _sentinel$value$type : false; + }, { passive: true }); + whenever(() => documentVisibility.value === "visible" && (document === null || document === void 0 ? void 0 : document.visibilityState) === "visible" && requestedType.value, (type) => { + requestedType.value = false; + forceRequest(type); + }); + } + async function forceRequest(type) { + var _sentinel$value2; + await ((_sentinel$value2 = sentinel.value) === null || _sentinel$value2 === void 0 ? void 0 : _sentinel$value2.release()); + sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null; + } + async function request(type) { + if (documentVisibility.value === "visible") await forceRequest(type); + else requestedType.value = type; + } + async function release() { + requestedType.value = false; + const s = sentinel.value; + sentinel.value = null; + await (s === null || s === void 0 ? void 0 : s.release()); + } + tryOnScopeDispose(() => { + release(); + }); + return { + sentinel, + isSupported, + isActive, + request, + forceRequest, + release + }; +} +//#endregion +//#region useWebMCP/index.ts +function safeStringify(value) { + try { + return JSON.stringify(value); + } catch (_unused) { + return String(value); + } +} +function toToolResponse(value) { + if (value && typeof value === "object" && Array.isArray(value.content)) return value; + if (value === void 0 || value === null) return { content: [] }; + if (typeof value === "string") return { content: [{ + type: "text", + text: value + }] }; + return { content: [{ + type: "text", + text: safeStringify(value) + }] }; +} +function toErrorResponse(error) { + return { + content: [{ + type: "text", + text: error instanceof Error ? error.message : typeof error === "string" ? error : safeStringify(error) + }], + isError: true + }; +} +/** +* Register a [WebMCP](https://github.com/webmachinelearning/webmcp) tool and +* tie its lifecycle to the current scope. +* +* The tool is registered when the composable runs (and whenever a discoverable +* part — `name`, `description`, `inputSchema`, `annotations` or `enabled` — +* changes) and unregistered automatically on scope dispose, so the tools an +* agent sees stay in lockstep with what is on screen. Call it multiple times to +* register multiple tools. +* +* The API is experimental (`document.modelContext`), so this feature-detects +* and degrades to a no-op wherever it is absent. +* +* @see https://vueuse.org/useWebMCP +* @see https://github.com/webmachinelearning/webmcp +*/ +function useWebMCP(options) { + const { document = defaultDocument, enabled = true } = options; + const doc = document; + const isSupported = /* @__PURE__ */ useSupported(() => { + var _doc$modelContext; + return typeof (doc === null || doc === void 0 || (_doc$modelContext = doc.modelContext) === null || _doc$modelContext === void 0 ? void 0 : _doc$modelContext.registerTool) === "function"; + }); + const isRegistered = shallowRef(false); + const error = shallowRef(null); + let controller; + function cleanup() { + controller === null || controller === void 0 || controller.abort(); + controller = void 0; + isRegistered.value = false; + } + function register() { + cleanup(); + error.value = null; + if (!isSupported.value || !toValue(enabled)) return; + controller = new AbortController(); + try { + doc.modelContext.registerTool({ + name: toValue(options.name), + description: toValue(options.description), + inputSchema: toValue(options.inputSchema), + annotations: toValue(options.annotations), + async execute(args) { + try { + const result = await options.execute(args); + const shaped = options.formatOutput ? options.formatOutput(result, args) : result; + if (shaped instanceof Error) throw shaped; + return toToolResponse(shaped); + } catch (err) { + try { + var _options$onError; + (_options$onError = options.onError) === null || _options$onError === void 0 || _options$onError.call(options, err); + } catch (_unused2) {} + return toErrorResponse(err); + } + } + }, { signal: controller.signal }); + isRegistered.value = true; + } catch (err) { + error.value = err instanceof Error ? err : new Error(safeStringify(err)); + isRegistered.value = false; + } + } + watch([ + isSupported, + () => toValue(options.name), + () => toValue(options.description), + () => toValue(options.inputSchema) ? safeStringify(toValue(options.inputSchema)) : "", + () => toValue(options.annotations) ? safeStringify(toValue(options.annotations)) : "", + () => toValue(enabled) + ], register, { + immediate: true, + flush: "post" + }); + tryOnScopeDispose(cleanup); + return { + isSupported, + isRegistered, + error + }; +} +//#endregion +//#region useWebNotification/index.ts +/** +* Reactive useWebNotification +* +* @see https://vueuse.org/useWebNotification +* @see https://developer.mozilla.org/en-US/docs/Web/API/notification +*/ +function useWebNotification(options = {}) { + const { window = defaultWindow, requestPermissions: _requestForPermissions = true } = options; + const defaultWebNotificationOptions = options; + const isSupported = /* @__PURE__ */ useSupported(() => { + if (!window || !("Notification" in window)) return false; + if (Notification.permission === "granted") return true; + try { + const notification = new Notification(""); + notification.onshow = () => { + notification.close(); + }; + } catch (e) { + if (e.name === "TypeError") return false; + } + return true; + }); + const permissionGranted = shallowRef(isSupported.value && "permission" in Notification && Notification.permission === "granted"); + const notification = shallowRef(null); + const ensurePermissions = async () => { + if (!isSupported.value) return; + if (!permissionGranted.value && Notification.permission !== "denied") { + if (await Notification.requestPermission() === "granted") permissionGranted.value = true; + } + return permissionGranted.value; + }; + const { on: onClick, trigger: clickTrigger } = createEventHook(); + const { on: onShow, trigger: showTrigger } = createEventHook(); + const { on: onError, trigger: errorTrigger } = createEventHook(); + const { on: onClose, trigger: closeTrigger } = createEventHook(); + const show = async (overrides) => { + if (!isSupported.value || !permissionGranted.value) return; + const options = Object.assign({}, defaultWebNotificationOptions, overrides); + notification.value = new Notification(options.title || "", options); + notification.value.onclick = clickTrigger; + notification.value.onshow = showTrigger; + notification.value.onerror = errorTrigger; + notification.value.onclose = closeTrigger; + return notification.value; + }; + const close = () => { + if (notification.value) notification.value.close(); + notification.value = null; + }; + if (_requestForPermissions) tryOnMounted(ensurePermissions); + tryOnScopeDispose(close); + if (isSupported.value && window) { + const document = window.document; + useEventListener(document, "visibilitychange", (e) => { + e.preventDefault(); + if (document.visibilityState === "visible") close(); + }); + } + return { + isSupported, + notification, + ensurePermissions, + permissionGranted, + show, + close, + onClick, + onShow, + onError, + onClose + }; +} +//#endregion +//#region useWebSocket/index.ts +const DEFAULT_PING_MESSAGE = "ping"; +function resolveNestedOptions(options) { + if (options === true) return {}; + return options; +} +/** +* Reactive WebSocket client. +* +* @see https://vueuse.org/useWebSocket +* @param url +*/ +function useWebSocket(url, options = {}) { + const { onConnected, onDisconnected, onError, onMessage, immediate = true, autoConnect = true, autoClose = true, protocols = [] } = options; + const data = shallowRef(null); + const status = shallowRef("CLOSED"); + const wsRef = shallowRef(); + const urlRef = toRef(url); + let heartbeatPause; + let heartbeatResume; + let explicitlyClosed = false; + let retried = 0; + let bufferedData = []; + let retryTimeout; + let pongTimeoutWait; + const _sendBuffer = () => { + if (bufferedData.length && wsRef.value && status.value === "OPEN") { + for (const buffer of bufferedData) wsRef.value.send(buffer); + bufferedData = []; + } + }; + const resetRetry = () => { + if (retryTimeout != null) { + clearTimeout(retryTimeout); + retryTimeout = void 0; + } + }; + const resetHeartbeat = () => { + clearTimeout(pongTimeoutWait); + pongTimeoutWait = void 0; + }; + const close = (code = 1e3, reason) => { + resetRetry(); + if (!isClient && !isWorker || !wsRef.value) return; + explicitlyClosed = true; + resetHeartbeat(); + heartbeatPause === null || heartbeatPause === void 0 || heartbeatPause(); + wsRef.value.close(code, reason); + wsRef.value = void 0; + status.value = "CLOSED"; + }; + const send = (data, useBuffer = true) => { + if (!wsRef.value || status.value !== "OPEN") { + if (useBuffer) bufferedData.push(data); + return false; + } + _sendBuffer(); + wsRef.value.send(data); + return true; + }; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") return; + const ws = new WebSocket(urlRef.value, protocols); + wsRef.value = ws; + status.value = "CONNECTING"; + ws.onopen = () => { + if (wsRef.value !== ws) return; + status.value = "OPEN"; + retried = 0; + onConnected === null || onConnected === void 0 || onConnected(ws); + heartbeatResume === null || heartbeatResume === void 0 || heartbeatResume(); + _sendBuffer(); + }; + ws.onclose = (ev) => { + if (wsRef.value === ws) status.value = "CLOSED"; + resetHeartbeat(); + heartbeatPause === null || heartbeatPause === void 0 || heartbeatPause(); + onDisconnected === null || onDisconnected === void 0 || onDisconnected(ws, ev); + if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) { + const { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions(options.autoReconnect); + if ((typeof retries === "function" ? retries : () => typeof retries === "number" && (retries < 0 || retried < retries))(retried)) { + retried += 1; + const delayTime = typeof delay === "function" ? delay(retried) : delay; + retryTimeout = setTimeout(_init, delayTime); + } else onFailed === null || onFailed === void 0 || onFailed(); + } + }; + ws.onerror = (e) => { + onError === null || onError === void 0 || onError(ws, e); + }; + ws.onmessage = (e) => { + if (wsRef.value !== ws) return; + if (options.heartbeat) { + resetHeartbeat(); + const { message = DEFAULT_PING_MESSAGE, responseMessage = message } = resolveNestedOptions(options.heartbeat); + if (e.data === toValue(responseMessage)) return; + } + data.value = e.data; + onMessage === null || onMessage === void 0 || onMessage(ws, e); + }; + }; + if (options.heartbeat) { + const { message = DEFAULT_PING_MESSAGE, scheduler = (cb) => useIntervalFn(cb, 1e3, { immediate: false }), pongTimeout = 1e3 } = resolveNestedOptions(options.heartbeat); + const { pause, resume } = scheduler(() => { + send(toValue(message), false); + if (pongTimeoutWait != null) return; + pongTimeoutWait = setTimeout(() => { + close(); + explicitlyClosed = false; + }, pongTimeout); + }); + heartbeatPause = pause; + heartbeatResume = resume; + } + if (autoClose) { + if (isClient) useEventListener("beforeunload", () => close(), { passive: true }); + tryOnScopeDispose(close); + } + const open = () => { + if (!isClient && !isWorker) return; + close(); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) open(); + if (autoConnect) watch(urlRef, open); + return { + data, + status, + close, + send, + open, + ws: wsRef + }; +} +//#endregion +//#region useWebWorker/index.ts +function useWebWorker(arg0, workerOptions, options) { + const { window = defaultWindow } = options !== null && options !== void 0 ? options : {}; + const data = shallowRef(null); + const worker = shallowRef(); + const post = (...args) => { + if (!worker.value) return; + worker.value.postMessage(...args); + }; + const terminate = function terminate() { + if (!worker.value) return; + worker.value.terminate(); + }; + if (window) { + if (typeof arg0 === "string") worker.value = new Worker(arg0, workerOptions); + else if (typeof arg0 === "function") worker.value = arg0(); + else worker.value = arg0; + worker.value.onmessage = (e) => { + data.value = e.data; + }; + tryOnScopeDispose(() => { + if (worker.value) worker.value.terminate(); + }); + } + return { + data, + post, + terminate, + worker + }; +} +//#endregion +//#region useWebWorkerFn/lib/depsParser.ts +/** +* +* Concatenates the dependencies into a comma separated string. +* this string will then be passed as an argument to the "importScripts" function +* +* @param deps array of string +* @param localDeps array of function +* @returns a string composed by the concatenation of the array +* elements "deps" and "importScripts". +* +* @example +* depsParser(['demo1', 'demo2']) // return importScripts('demo1', 'demo2') +*/ +function depsParser(deps, localDeps) { + if (deps.length === 0 && localDeps.length === 0) return ""; + const depsString = deps.map((dep) => `'${dep}'`).toString(); + const depsFunctionString = localDeps.filter((dep) => typeof dep === "function").map((fn) => { + const str = fn.toString(); + if (str.trim().startsWith("function")) return str; + else return `const ${fn.name} = ${str}`; + }).join(";"); + const importString = `importScripts(${depsString});`; + return `${depsString.trim() === "" ? "" : importString} ${depsFunctionString}`; +} +//#endregion +//#region useWebWorkerFn/lib/jobRunner.ts +/** +* This function accepts as a parameter a function "userFunc" +* And as a result returns an anonymous function. +* This anonymous function, accepts as arguments, +* the parameters to pass to the function "useArgs" and returns a Promise +* This function can be used as a wrapper, only inside a Worker +* because it depends by "postMessage". +* +* @param userFunc {Function} fn the function to run with web worker +* +* @returns returns a function that accepts the parameters +* to be passed to the "userFunc" function +*/ +function jobRunner(userFunc) { + return (e) => { + const userFuncArgs = e.data[0]; + return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => { + postMessage(["SUCCESS", result]); + }).catch((error) => { + postMessage(["ERROR", error]); + }); + }; +} +//#endregion +//#region useWebWorkerFn/lib/createWorkerBlobUrl.ts +/** +* Converts the "fn" function into the syntax needed to be executed within a web worker +* +* @param fn the function to run with web worker +* @param deps array of strings, imported into the worker through "importScripts" +* @param localDeps array of function, local dependencies +* +* @returns a blob url, containing the code of "fn" as a string +* +* @example +* createWorkerBlobUrl((a,b) => a+b, []) +* // return "onmessage=return Promise.resolve((a,b) => a + b) +* .then(postMessage(['SUCCESS', result])) +* .catch(postMessage(['ERROR', error])" +*/ +function createWorkerBlobUrl(fn, deps, localDeps) { + const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`; + const blob = new Blob([blobCode], { type: "text/javascript" }); + return URL.createObjectURL(blob); +} +//#endregion +//#region useWebWorkerFn/index.ts +/** +* Run expensive function without blocking the UI, using a simple syntax that makes use of Promise. +* +* @see https://vueuse.org/useWebWorkerFn +* @param fn +* @param options +*/ +function useWebWorkerFn(fn, options = {}) { + const { dependencies = [], localDependencies = [], timeout, window = defaultWindow } = options; + let worker; + const workerStatus = shallowRef("PENDING"); + const promise = shallowRef({}); + const timeoutId = shallowRef(); + const workerTerminate = (status = "PENDING") => { + if (worker && worker._url && window) { + worker.terminate(); + URL.revokeObjectURL(worker._url); + promise.value = {}; + worker = void 0; + window.clearTimeout(timeoutId.value); + workerStatus.value = status; + } + }; + workerTerminate(); + tryOnScopeDispose(workerTerminate); + const generateWorker = () => { + const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies); + const newWorker = new Worker(blobUrl); + newWorker._url = blobUrl; + newWorker.onmessage = (e) => { + const { resolve = () => {}, reject = () => {} } = promise.value; + const [status, result] = e.data; + switch (status) { + case "SUCCESS": + resolve(result); + workerTerminate(status); + break; + default: + reject(result); + workerTerminate("ERROR"); + } + }; + newWorker.onerror = (e) => { + const { reject = () => {} } = promise.value; + e.preventDefault(); + reject(e); + workerTerminate("ERROR"); + }; + if (timeout) timeoutId.value = setTimeout(workerTerminate, timeout, "TIMEOUT_EXPIRED"); + return newWorker; + }; + const callWorker = (...fnArgs) => new Promise((resolve, reject) => { + promise.value = { + resolve, + reject + }; + worker === null || worker === void 0 || worker.postMessage([[...fnArgs]]); + workerStatus.value = "RUNNING"; + }); + const workerFn = (...fnArgs) => { + if (workerStatus.value === "RUNNING") { + console.error("[useWebWorkerFn] You can only run one instance of the worker at a time."); + return Promise.reject(); + } + worker = generateWorker(); + return callWorker(...fnArgs); + }; + return { + workerFn, + workerStatus, + workerTerminate + }; +} +//#endregion +//#region useWindowFocus/index.ts +/** +* Reactively track window focus with `window.onfocus` and `window.onblur`. +* +* @see https://vueuse.org/useWindowFocus +* +* @__NO_SIDE_EFFECTS__ +*/ +function useWindowFocus(options = {}) { + const { window = defaultWindow } = options; + if (!window) return shallowRef(false); + const focused = shallowRef(window.document.hasFocus()); + const listenerOptions = { passive: true }; + useEventListener(window, "blur", () => { + focused.value = false; + }, listenerOptions); + useEventListener(window, "focus", () => { + focused.value = true; + }, listenerOptions); + return focused; +} +//#endregion +//#region useWindowScroll/index.ts +/** +* Reactive window scroll. +* +* @see https://vueuse.org/useWindowScroll +* @param options +*/ +function useWindowScroll(options = {}) { + const { window = defaultWindow, ...rest } = options; + return useScroll(window, rest); +} +//#endregion +//#region useWindowSize/index.ts +/** +* Reactive window size. +* +* @see https://vueuse.org/useWindowSize +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useWindowSize(options = {}) { + const { window = defaultWindow, initialWidth = Number.POSITIVE_INFINITY, initialHeight = Number.POSITIVE_INFINITY, listenOrientation = true, includeScrollbar = true, type = "inner" } = options; + const width = shallowRef(initialWidth); + const height = shallowRef(initialHeight); + const update = () => { + if (window) { + if (type === "outer") { + width.value = window.outerWidth; + height.value = window.outerHeight; + } else if (type === "visual" && window.visualViewport) { + const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport; + width.value = Math.round(visualViewportWidth * scale); + height.value = Math.round(visualViewportHeight * scale); + } else if (includeScrollbar) { + width.value = window.innerWidth; + height.value = window.innerHeight; + } else { + width.value = window.document.documentElement.clientWidth; + height.value = window.document.documentElement.clientHeight; + } + } + }; + update(); + tryOnMounted(update); + const listenerOptions = { passive: true }; + useEventListener("resize", update, listenerOptions); + if (window && type === "visual" && window.visualViewport) useEventListener(window.visualViewport, "resize", update, listenerOptions); + if (listenOrientation) { + const matches = useMediaQuery("(orientation: portrait)"); + watch(matches, () => update()); + } + return { + width, + height + }; +} +//#endregion +export { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, formatTimeAgoIntl, formatTimeAgoIntlParts, getSSRHandler, isFocusedElementEditable, isTypedCharValid, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, transition, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssSupports, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementOverflow, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLiveAnnouncer, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTemporalNow, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeAgoIntl, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebMCP, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize }; diff --git a/apps/web/.output/server/node_modules/@vueuse/core/package.json b/apps/web/.output/server/node_modules/@vueuse/core/package.json new file mode 100644 index 0000000..46ce11b --- /dev/null +++ b/apps/web/.output/server/node_modules/@vueuse/core/package.json @@ -0,0 +1,56 @@ +{ + "name": "@vueuse/core", + "type": "module", + "version": "15.0.0", + "description": "Collection of essential Vue Composition Utilities", + "author": "Anthony Fu <https://github.com/antfu>", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/vueuse/vueuse#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vueuse/vueuse.git", + "directory": "packages/core" + }, + "bugs": { + "url": "https://github.com/vueuse/vueuse/issues" + }, + "keywords": [ + "vue", + "vue-use", + "utils" + ], + "sideEffects": false, + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*", + "./metadata": "./dist/metadata.mjs", + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "unpkg": "./dist/index.iife.min.js", + "jsdelivr": "./dist/index.iife.min.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "vue": "^3.5.0" + }, + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "15.0.0", + "@vueuse/shared": "15.0.0" + }, + "devDependencies": { + "@js-temporal/polyfill": "^0.5.1", + "temporal-polyfill": "^1.0.4" + }, + "scripts": { + "build": "tsdown" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/@vueuse/shared/dist/index.js b/apps/web/.output/server/node_modules/@vueuse/shared/dist/index.js new file mode 100644 index 0000000..caec65e --- /dev/null +++ b/apps/web/.output/server/node_modules/@vueuse/shared/dist/index.js @@ -0,0 +1,2021 @@ +import { computed, customRef, effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, isReactive, isRef, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, reactive, readonly, ref, shallowReadonly, shallowRef, toRef as toRef$1, toRefs as toRefs$1, toValue, unref, watch, watchEffect } from "vue"; +//#region computedEager/index.ts +/** +* +* @deprecated This function will be removed in future version. +* +* Note: If you are using Vue 3.4+, you can straight use computed instead. +* Because in Vue 3.4+, if computed new value does not change, +* computed, effect, watch, watchEffect, render dependencies will not be triggered. +* refer: https://github.com/vuejs/core/pull/5912 +* +* @param fn effect function +* @param options WatchOptionsBase +* @returns readonly shallowRef +*/ +function computedEager(fn, options) { + var _options$flush; + const result = shallowRef(); + watchEffect(() => { + result.value = fn(); + }, { + ...options, + flush: (_options$flush = options === null || options === void 0 ? void 0 : options.flush) !== null && _options$flush !== void 0 ? _options$flush : "sync" + }); + return readonly(result); +} +/** @deprecated use `computedEager` instead */ +const eagerComputed = computedEager; +//#endregion +//#region computedWithControl/index.ts +/** +* Explicitly define the deps of computed. +* +* @param source +* @param fn +*/ +function computedWithControl(source, fn, options = {}) { + let v = void 0; + let track; + let trigger; + let dirty = true; + const update = () => { + dirty = true; + trigger(); + }; + watch(source, update, { + flush: "sync", + ...options + }); + const get = typeof fn === "function" ? fn : fn.get; + const set = typeof fn === "function" ? void 0 : fn.set; + const result = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + if (dirty) { + v = get(v); + dirty = false; + } + track(); + return v; + }, + set(v) { + set === null || set === void 0 || set(v); + } + }; + }); + result.trigger = update; + return result; +} +/** @deprecated use `computedWithControl` instead */ +const controlledComputed = computedWithControl; +//#endregion +//#region createDisposableDirective/index.ts +/** +* Utility for authoring disposable directives. Reactive effects created within `mounted` directive hook will be tracked and automatically disposed when directive is unmounted. +* +* @see https://vueuse.org/createDisposableDirective +* +* @__NO_SIDE_EFFECTS__ +*/ +function createDisposableDirective(origin = {}) { + function isFunc(fn) { + return typeof fn === "function"; + } + const normalisedOrigin = isFunc(origin) ? { + mounted: origin, + updated: origin + } : origin; + const { mounted, unmounted } = normalisedOrigin; + if (!isFunc(mounted)) return origin; + const scopeWeakMap = /* @__PURE__ */ new WeakMap(); + return { + ...normalisedOrigin, + mounted(el, binding, vNode, prevNode) { + var _scopeWeakMap$get; + const scope = (_scopeWeakMap$get = scopeWeakMap.get(el)) !== null && _scopeWeakMap$get !== void 0 ? _scopeWeakMap$get : effectScope(); + scopeWeakMap.set(el, scope); + scope.run(() => { + mounted === null || mounted === void 0 || mounted(el, binding, vNode, prevNode); + }); + }, + unmounted(el, binding, vNode, prevNode) { + var _scopeWeakMap$get2; + (_scopeWeakMap$get2 = scopeWeakMap.get(el)) === null || _scopeWeakMap$get2 === void 0 || _scopeWeakMap$get2.stop(); + scopeWeakMap.delete(el); + if (isFunc(unmounted)) unmounted(el, binding, vNode, prevNode); + } + }; +} +//#endregion +//#region tryOnScopeDispose/index.ts +/** +* Call onScopeDispose() if it's inside an effect scope lifecycle, if not, do nothing +* +* @param fn +*/ +function tryOnScopeDispose(fn, failSilently) { + if (getCurrentScope()) { + onScopeDispose(fn, failSilently); + return true; + } + return false; +} +//#endregion +//#region createEventHook/index.ts +/** +* Utility for creating event hooks +* +* @see https://vueuse.org/createEventHook +* +* @__NO_SIDE_EFFECTS__ +*/ +function createEventHook() { + const fns = /* @__PURE__ */ new Set(); + const off = (fn) => { + fns.delete(fn); + }; + const clear = () => { + fns.clear(); + }; + const on = (fn) => { + fns.add(fn); + const offFn = () => off(fn); + tryOnScopeDispose(offFn); + return { off: offFn }; + }; + const trigger = (...args) => { + return Promise.all(Array.from(fns).map((fn) => fn(...args))); + }; + return { + on, + off, + trigger, + clear + }; +} +//#endregion +//#region createGlobalState/index.ts +/** +* Keep states in the global scope to be reusable across Vue instances. +* +* @see https://vueuse.org/createGlobalState +* @param stateFactory A factory function to create the state +* +* @__NO_SIDE_EFFECTS__ +*/ +function createGlobalState(stateFactory) { + let initialized = false; + let state; + const scope = effectScope(true); + return ((...args) => { + if (!initialized) { + state = scope.run(() => stateFactory(...args)); + initialized = true; + } + return state; + }); +} +//#endregion +//#region provideLocal/map.ts +const localProvidedStateMap = /* @__PURE__ */ new WeakMap(); +//#endregion +//#region injectLocal/index.ts +/** +* On the basis of `inject`, it is allowed to directly call inject to obtain the value after call provide in the same component. +* +* @example +* ```ts +* injectLocal('MyInjectionKey', 1) +* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1 +* ``` +* +* @NO_SIDE_EFFECTS +*/ +const injectLocal = /* @__NO_SIDE_EFFECTS__ */ (...args) => { + var _getCurrentInstance; + const key = args[0]; + const instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy; + const owner = instance !== null && instance !== void 0 ? instance : getCurrentScope(); + if (owner == null && !hasInjectionContext()) throw new Error("injectLocal must be called in setup"); + if (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key]; + return inject(...args); +}; +//#endregion +//#region provideLocal/index.ts +/** +* On the basis of `provide`, it is allowed to directly call inject to obtain the value after call provide in the same component. +* +* @example +* ```ts +* provideLocal('MyInjectionKey', 1) +* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1 +* ``` +*/ +function provideLocal(key, value) { + var _getCurrentInstance; + const instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy; + const owner = instance !== null && instance !== void 0 ? instance : getCurrentScope(); + if (owner == null) throw new Error("provideLocal must be called in setup"); + if (!localProvidedStateMap.has(owner)) localProvidedStateMap.set(owner, Object.create(null)); + const localProvidedState = localProvidedStateMap.get(owner); + localProvidedState[key] = value; + return provide(key, value); +} +//#endregion +//#region createInjectionState/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function createInjectionState(composable, options) { + const key = (options === null || options === void 0 ? void 0 : options.injectionKey) || Symbol(composable.name || "InjectionState"); + const defaultValue = options === null || options === void 0 ? void 0 : options.defaultValue; + const useProvidingState = (...args) => { + const state = composable(...args); + provideLocal(key, state); + return state; + }; + const useInjectedState = () => /* @__PURE__ */ injectLocal(key, defaultValue); + return [useProvidingState, useInjectedState]; +} +//#endregion +//#region createRef/index.ts +/** +* Returns a `deepRef` or `shallowRef` depending on the `deep` param. +* +* @example createRef(1) // ShallowRef<number> +* @example createRef(1, false) // ShallowRef<number> +* @example createRef(1, true) // Ref<number> +* @example createRef("string") // ShallowRef<string> +* @example createRef<"A"|"B">("A", true) // Ref<"A"|"B"> +* +* @param value +* @param deep +* @returns the `deepRef` or `shallowRef` +* +* @__NO_SIDE_EFFECTS__ +*/ +function createRef(value, deep) { + if (deep === true) return ref(value); + else return shallowRef(value); +} +//#endregion +//#region utils/is.ts +const isClient = typeof window !== "undefined" && typeof document !== "undefined"; +const isWorker = typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; +const isDef = (val) => typeof val !== "undefined"; +const notNullish = (val) => val != null; +const assert = (condition, ...infos) => { + if (!condition) console.warn(...infos); +}; +const toString = Object.prototype.toString; +const isObject = (val) => toString.call(val) === "[object Object]"; +const now = () => Date.now(); +const timestamp = () => +Date.now(); +const clamp = (n, min, max) => Math.min(max, Math.max(min, n)); +const noop = () => {}; +const rand = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +}; +const hasOwn = (val, key) => Object.hasOwn(val, key); +const isIOS = /* #__PURE__ */ getIsIOS(); +function getIsIOS() { + var _window, _window2, _window3; + return isClient && !!((_window = window) === null || _window === void 0 || (_window = _window.navigator) === null || _window === void 0 ? void 0 : _window.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.navigator) === null || _window2 === void 0 ? void 0 : _window2.maxTouchPoints) > 2 && /iPad|Macintosh/.test((_window3 = window) === null || _window3 === void 0 ? void 0 : _window3.navigator.userAgent)); +} +//#endregion +//#region toRef/index.ts +function toRef(...args) { + if (args.length !== 1) return toRef$1(...args); + const r = args[0]; + return typeof r === "function" ? readonly(customRef(() => ({ + get: r, + set: noop + }))) : ref(r); +} +//#endregion +//#region utils/filters.ts +function createFilterWrapper(filter, fn) { + function wrapper(...args) { + return new Promise((resolve, reject) => { + Promise.resolve(filter(() => fn.apply(this, args), { + fn, + thisArg: this, + args + })).then(resolve).catch(reject); + }); + } + if ("cancel" in filter) Object.assign(wrapper, { + cancel: filter.cancel, + flush: filter.flush, + isPending: filter.isPending + }); + return wrapper; +} +const bypassFilter = (invoke) => { + return invoke(); +}; +/** +* Create an EventFilter that debounce the events +*/ +function debounceFilter(ms, options = {}) { + let timer; + let maxTimer; + let lastRejector = noop; + let lastResolve = noop; + const _pending = shallowRef(false); + const _clearTimeout = (timer) => { + clearTimeout(timer); + lastRejector(); + lastRejector = noop; + }; + let lastInvoker; + const handler = (invoke) => { + const duration = toValue(ms); + const maxDuration = toValue(options.maxWait); + if (timer) _clearTimeout(timer); + if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = void 0; + } + _pending.value = false; + return Promise.resolve(invoke()); + } + _pending.value = true; + return new Promise((resolve, reject) => { + lastRejector = options.rejectOnCancel ? reject : resolve; + lastResolve = resolve; + lastInvoker = invoke; + if (maxDuration && !maxTimer) maxTimer = setTimeout(() => { + if (timer) _clearTimeout(timer); + maxTimer = void 0; + _pending.value = false; + resolve(lastInvoker()); + }, maxDuration); + timer = setTimeout(() => { + if (maxTimer) _clearTimeout(maxTimer); + maxTimer = void 0; + _pending.value = false; + resolve(invoke()); + }, duration); + }); + }; + return Object.assign(handler, { + cancel: () => { + if (timer) { + _clearTimeout(timer); + timer = void 0; + } + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = void 0; + } + _pending.value = false; + lastResolve = noop; + }, + flush: () => { + if (_pending.value) { + if (timer) { + clearTimeout(timer); + timer = void 0; + } + if (maxTimer) { + clearTimeout(maxTimer); + maxTimer = void 0; + } + _pending.value = false; + const resolve = lastResolve; + lastRejector = noop; + lastResolve = noop; + resolve(lastInvoker()); + } + }, + isPending: shallowReadonly(_pending) + }); +} +function throttleFilter(...args) { + let lastExec = 0; + let timer; + let isLeading = true; + let lastRejector = noop; + let lastValue; + let ms; + let trailing; + let leading; + let rejectOnCancel; + if (!isRef(args[0]) && typeof args[0] === "object") ({delay: ms, trailing = true, leading = true, rejectOnCancel = false} = args[0]); + else [ms, trailing = true, leading = true, rejectOnCancel = false] = args; + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = void 0; + lastRejector(); + lastRejector = noop; + } + }; + const filter = (_invoke) => { + const duration = toValue(ms); + const elapsed = Date.now() - lastExec; + const invoke = () => { + return lastValue = _invoke(); + }; + clear(); + if (duration <= 0) { + lastExec = Date.now(); + return invoke(); + } + if (elapsed > duration) { + lastExec = Date.now(); + if (leading || !isLeading) invoke(); + } else if (trailing) lastValue = new Promise((resolve, reject) => { + lastRejector = rejectOnCancel ? reject : resolve; + timer = setTimeout(() => { + lastExec = Date.now(); + isLeading = true; + resolve(invoke()); + clear(); + }, Math.max(0, duration - elapsed)); + }); + if (!leading && !timer) timer = setTimeout(() => isLeading = true, duration); + isLeading = false; + return lastValue; + }; + return filter; +} +/** +* EventFilter that gives extra controls to pause and resume the filter +* +* @param extendFilter Extra filter to apply when the PausableFilter is active, default to none +* @param options Options to configure the filter +*/ +function pausableFilter(extendFilter = bypassFilter, options = {}) { + const { initialState = "active" } = options; + const isActive = toRef(initialState === "active"); + function pause() { + isActive.value = false; + } + function resume() { + isActive.value = true; + } + const eventFilter = (...args) => { + if (isActive.value) extendFilter(...args); + }; + return { + isActive: shallowReadonly(isActive), + pause, + resume, + eventFilter + }; +} +//#endregion +//#region utils/general.ts +function promiseTimeout(ms, throwOnTimeout = false, reason = "Timeout") { + return new Promise((resolve, reject) => { + if (throwOnTimeout) setTimeout(reject, ms, reason); + else setTimeout(resolve, ms); + }); +} +function identity(arg) { + return arg; +} +/** +* Create singleton promise function +* +* @example +* ``` +* const promise = createSingletonPromise(async () => { ... }) +* +* await promise() +* await promise() // all of them will be bind to a single promise instance +* await promise() // and be resolved together +* ``` +*/ +function createSingletonPromise(fn) { + let _promise; + function wrapper() { + if (!_promise) _promise = fn(); + return _promise; + } + wrapper.reset = async () => { + const _prev = _promise; + _promise = void 0; + if (_prev) await _prev; + }; + return wrapper; +} +function invoke(fn) { + return fn(); +} +function containsProp(obj, ...props) { + return props.some((k) => k in obj); +} +function increaseWithUnit(target, delta) { + var _target$match; + if (typeof target === "number") return target + delta; + const value = ((_target$match = target.match(/^-?\d+\.?\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || ""; + const unit = target.slice(value.length); + const result = Number.parseFloat(value) + delta; + if (Number.isNaN(result)) return target; + return result + unit; +} +/** +* Get a px value for SSR use, do not rely on this method outside of SSR as REM unit is assumed at 16px, which might not be the case on the client +*/ +function pxValue(px) { + return px.endsWith("rem") ? Number.parseFloat(px) * 16 : Number.parseFloat(px); +} +/** +* Create a new subset object by giving keys +*/ +function objectPick(obj, keys, omitUndefined = false) { + return keys.reduce((n, k) => { + if (k in obj) { + if (!omitUndefined || obj[k] !== void 0) n[k] = obj[k]; + } + return n; + }, {}); +} +/** +* Create a new subset object by omit giving keys +*/ +function objectOmit(obj, keys, omitUndefined = false) { + return Object.fromEntries(Object.entries(obj).filter(([key, value]) => { + return (!omitUndefined || value !== void 0) && !keys.includes(key); + })); +} +function objectEntries(obj) { + return Object.entries(obj); +} +function toArray(value) { + return Array.isArray(value) ? value : [value]; +} +//#endregion +//#region utils/port.ts +function cacheStringFunction(fn) { + const cache = Object.create(null); + return ((str) => { + return cache[str] || (cache[str] = fn(str)); + }); +} +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +//#endregion +//#region utils/vue.ts +function getLifeCycleTarget(target) { + return target || getCurrentInstance(); +} +//#endregion +//#region createSharedComposable/index.ts +/** +* Make a composable function usable with multiple Vue instances. +* +* @see https://vueuse.org/createSharedComposable +* +* @__NO_SIDE_EFFECTS__ +*/ +function createSharedComposable(composable) { + if (!isClient) return composable; + let subscribers = 0; + let state; + let scope; + const dispose = () => { + subscribers -= 1; + if (scope && subscribers <= 0) { + scope.stop(); + state = void 0; + scope = void 0; + } + }; + return ((...args) => { + subscribers += 1; + if (!scope) { + scope = effectScope(true); + state = scope.run(() => composable(...args)); + } + tryOnScopeDispose(dispose); + return state; + }); +} +//#endregion +//#region extendRef/index.ts +function extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) { + for (const [key, value] of Object.entries(extend)) { + if (key === "value") continue; + if (isRef(value) && unwrap) Object.defineProperty(ref, key, { + get() { + return value.value; + }, + set(v) { + value.value = v; + }, + enumerable + }); + else Object.defineProperty(ref, key, { + value, + enumerable + }); + } + return ref; +} +//#endregion +//#region get/index.ts +function get(obj, key) { + if (key == null) return unref(obj); + return unref(obj)[key]; +} +//#endregion +//#region isDefined/index.ts +function isDefined(v) { + return unref(v) != null; +} +//#endregion +//#region makeDestructurable/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function makeDestructurable(obj, arr) { + if (typeof Symbol !== "undefined") { + const clone = { ...obj }; + Object.defineProperty(clone, Symbol.iterator, { + enumerable: false, + value() { + let index = 0; + return { next: () => ({ + value: arr[index++], + done: index > arr.length + }) }; + } + }); + return clone; + } else return Object.assign([...arr], obj); +} +//#endregion +//#region reactify/index.ts +/** +* Converts plain function into a reactive function. +* The converted function accepts refs as it's arguments +* and returns a ComputedRef, with proper typing. +* +* @param fn - Source function +* @param options - Options +* +* @__NO_SIDE_EFFECTS__ +*/ +function reactify(fn, options) { + const unrefFn = (options === null || options === void 0 ? void 0 : options.computedGetter) === false ? unref : toValue; + return function(...args) { + return computed(() => fn.apply(this, args.map((i) => unrefFn(i)))); + }; +} +/** @deprecated use `reactify` instead */ +const createReactiveFn = reactify; +//#endregion +//#region reactifyObject/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function reactifyObject(obj, optionsOrKeys = {}) { + let keys = []; + let options; + if (Array.isArray(optionsOrKeys)) keys = optionsOrKeys; + else { + options = optionsOrKeys; + const { includeOwnProperties = true } = optionsOrKeys; + keys.push(...Object.keys(obj)); + if (includeOwnProperties) keys.push(...Object.getOwnPropertyNames(obj)); + } + return Object.fromEntries(keys.map((key) => { + const value = obj[key]; + return [key, typeof value === "function" ? reactify(value.bind(obj), options) : value]; + })); +} +//#endregion +//#region toReactive/index.ts +/** +* Converts ref to reactive. +* +* @see https://vueuse.org/toReactive +* @param objectRef A ref of object +*/ +function toReactive(objectRef) { + if (!isRef(objectRef)) return reactive(objectRef); + const proxy = new Proxy({}, { + get(_, p, receiver) { + return unref(Reflect.get(objectRef.value, p, receiver)); + }, + set(_, p, value) { + if (isRef(objectRef.value[p]) && !isRef(value)) objectRef.value[p].value = value; + else objectRef.value[p] = value; + return true; + }, + deleteProperty(_, p) { + return Reflect.deleteProperty(objectRef.value, p); + }, + has(_, p) { + return Reflect.has(objectRef.value, p); + }, + ownKeys() { + return Object.keys(objectRef.value); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + } + }); + return reactive(proxy); +} +//#endregion +//#region reactiveComputed/index.ts +/** +* Computed reactive object. +*/ +function reactiveComputed(fn) { + return toReactive(computed(fn)); +} +//#endregion +//#region reactiveOmit/index.ts +/** +* Reactively omit fields from a reactive object +* +* @see https://vueuse.org/reactiveOmit +*/ +function reactiveOmit(obj, ...keys) { + const flatKeys = keys.flat(); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))); +} +//#endregion +//#region reactivePick/index.ts +/** +* Reactively pick fields from a reactive object +* +* @see https://vueuse.org/reactivePick +*/ +function reactivePick(obj, ...keys) { + const flatKeys = keys.flat(); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)]))); +} +//#endregion +//#region refAutoReset/index.ts +/** +* Create a ref which will be reset to the default value after some time. +* +* @see https://vueuse.org/refAutoReset +* @param defaultValue The value which will be set. +* @param afterMs A zero-or-greater delay in milliseconds. +*/ +function refAutoReset(defaultValue, afterMs = 1e4) { + return customRef((track, trigger) => { + let value = toValue(defaultValue); + let timer; + const resetAfter = () => setTimeout(() => { + value = toValue(defaultValue); + trigger(); + }, toValue(afterMs)); + tryOnScopeDispose(() => { + clearTimeout(timer); + }); + return { + get() { + track(); + return value; + }, + set(newValue) { + value = newValue; + trigger(); + clearTimeout(timer); + timer = resetAfter(); + } + }; + }); +} +/** @deprecated use `refAutoReset` instead */ +const autoResetRef = refAutoReset; +//#endregion +//#region useDebounceFn/index.ts +/** +* Debounce execution of a function. +* +* @see https://vueuse.org/useDebounceFn +* @param fn A function to be executed after delay milliseconds debounced. +* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful. +* @param options Options +* +* @return A new, debounced, function with isPending, cancel, and flush properties. +*/ +function useDebounceFn(fn, ms = 200, options = {}) { + return createFilterWrapper(debounceFilter(ms, options), fn); +} +//#endregion +//#region refDebounced/index.ts +/** +* Debounce updates of a ref. +* +* @return A new debounced ref. +*/ +function refDebounced(value, ms = 200, options = {}) { + const debounced = ref(toValue(value)); + const updater = useDebounceFn(() => { + debounced.value = value.value; + }, ms, options); + watch(value, () => updater()); + return shallowReadonly(debounced); +} +/** @deprecated use `refDebounced` instead */ +const debouncedRef = refDebounced; +/** @deprecated use `refDebounced` instead */ +const useDebounce = refDebounced; +//#endregion +//#region refDefault/index.ts +/** +* Apply default value to a ref. +* +* @__NO_SIDE_EFFECTS__ +*/ +function refDefault(source, defaultValue) { + return computed({ + get() { + var _source$value; + return (_source$value = source.value) !== null && _source$value !== void 0 ? _source$value : defaultValue; + }, + set(value) { + source.value = value; + } + }); +} +//#endregion +//#region refManualReset/index.ts +/** +* Create a ref with manual reset functionality. +* +* @see https://vueuse.org/refManualReset +* @param defaultValue The value which will be set. +*/ +function refManualReset(defaultValue) { + let value = toValue(defaultValue); + let trigger; + const reset = () => { + value = toValue(defaultValue); + trigger(); + }; + const refValue = customRef((track, _trigger) => { + trigger = _trigger; + return { + get() { + track(); + return value; + }, + set(newValue) { + value = newValue; + trigger(); + } + }; + }); + refValue.reset = reset; + return refValue; +} +//#endregion +//#region useThrottleFn/index.ts +/** +* Throttle execution of a function. Especially useful for rate limiting +* execution of handlers on events like resize and scroll. +* +* @param fn A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is, +* to `callback` when the throttled-function is executed. +* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful. +* (default value: 200) +* +* @param [trailing] if true, call fn again after the time is up (default value: true) +* +* @param [leading] if true, call fn on the leading edge of the ms timeout (default value: true) +* +* @param [rejectOnCancel] if true, reject the last call if it's been cancel (default value: false) +* +* @return A new, throttled, function. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useThrottleFn(fn, ms = 200, trailing = true, leading = true, rejectOnCancel = false) { + return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn); +} +//#endregion +//#region refThrottled/index.ts +/** +* Throttle execution of a function. Especially useful for rate limiting +* execution of handlers on events like resize and scroll. +* +* @param value Ref value to be watched with throttle effect +* @param delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful. +* @param trailing if true, update the value again after the delay time is up +* @param leading if true, update the value on the leading edge of the ms timeout +*/ +function refThrottled(value, delay = 200, trailing = true, leading = true) { + if (delay <= 0) return value; + const throttled = ref(toValue(value)); + const updater = useThrottleFn(() => { + throttled.value = value.value; + }, delay, trailing, leading); + watch(value, () => updater()); + return throttled; +} +/** @deprecated use `refThrottled` instead */ +const throttledRef = refThrottled; +/** @deprecated use `refThrottled` instead */ +const useThrottle = refThrottled; +//#endregion +//#region refWithControl/index.ts +/** +* Fine-grained controls over ref and its reactivity. +* +* @__NO_SIDE_EFFECTS__ +*/ +function refWithControl(initial, options = {}) { + let source = initial; + let track; + let trigger; + const ref = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + return get(); + }, + set(v) { + set(v); + } + }; + }); + function get(tracking = true) { + if (tracking) track(); + return source; + } + function set(value, triggering = true) { + var _options$onBeforeChan, _options$onChanged; + if (value === source) return; + const old = source; + if (((_options$onBeforeChan = options.onBeforeChange) === null || _options$onBeforeChan === void 0 ? void 0 : _options$onBeforeChan.call(options, value, old)) === false) return; + source = value; + (_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, value, old); + if (triggering) trigger(); + } + /** + * Get the value without tracked in the reactivity system + */ + const untrackedGet = () => get(false); + /** + * Set the value without triggering the reactivity system + */ + const silentSet = (v) => set(v, false); + /** + * Get the value without tracked in the reactivity system. + * + * Alias for `untrackedGet()` + */ + const peek = () => get(false); + /** + * Set the value without triggering the reactivity system + * + * Alias for `silentSet(v)` + */ + const lay = (v) => set(v, false); + return extendRef(ref, { + get, + set, + untrackedGet, + silentSet, + peek, + lay + }, { enumerable: true }); +} +/** @deprecated use `refWithControl` instead */ +const controlledRef = refWithControl; +//#endregion +//#region set/index.ts +/** +* Shorthand for `ref.value = x` +*/ +function set(...args) { + if (args.length === 2) { + const [ref, value] = args; + ref.value = value; + } + if (args.length === 3) { + const [target, key, value] = args; + target[key] = value; + } +} +//#endregion +//#region watchWithFilter/index.ts +function watchWithFilter(source, cb, options = {}) { + const { eventFilter = bypassFilter, ...watchOptions } = options; + return watch(source, createFilterWrapper(eventFilter, cb), watchOptions); +} +//#endregion +//#region watchPausable/index.ts +/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */ +function watchPausable(source, cb, options = {}) { + const { eventFilter: filter, initialState = "active", ...watchOptions } = options; + const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState }); + return { + stop: watchWithFilter(source, cb, { + ...watchOptions, + eventFilter + }), + pause, + resume, + isActive + }; +} +/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */ +const pausableWatch = watchPausable; +//#endregion +//#region syncRef/index.ts +/** +* Two-way refs synchronization. +* From the set theory perspective to restrict the option's type +* Check in the following order: +* 1. L = R +* 2. L ∩ R ≠ ∅ +* 3. L ⊆ R +* 4. L ∩ R = ∅ +*/ +function syncRef(left, right, ...[options]) { + const { flush = "sync", deep = false, immediate = true, direction = "both", transform = {} } = options || {}; + const watchers = []; + const transformLTR = "ltr" in transform && transform.ltr || ((v) => v); + const transformRTL = "rtl" in transform && transform.rtl || ((v) => v); + if (direction === "both" || direction === "ltr") watchers.push(watchPausable(left, (newValue) => { + watchers.forEach((w) => w.pause()); + right.value = transformLTR(newValue); + watchers.forEach((w) => w.resume()); + }, { + flush, + deep, + immediate + })); + if (direction === "both" || direction === "rtl") watchers.push(watchPausable(right, (newValue) => { + watchers.forEach((w) => w.pause()); + left.value = transformRTL(newValue); + watchers.forEach((w) => w.resume()); + }, { + flush, + deep, + immediate + })); + const stop = () => { + watchers.forEach((w) => w.stop()); + }; + return stop; +} +//#endregion +//#region syncRefs/index.ts +/** +* Keep target ref(s) in sync with the source ref +* +* @param source source ref +* @param targets +*/ +function syncRefs(source, targets, options = {}) { + const { flush = "sync", deep = false, immediate = true } = options; + const targetsArray = toArray(targets); + return watch(source, (newValue) => targetsArray.forEach((target) => target.value = newValue), { + flush, + deep, + immediate + }); +} +//#endregion +//#region toRefs/index.ts +/** +* Extended `toRefs` that also accepts refs of an object. +* +* @see https://vueuse.org/toRefs +* @param objectRef A ref or normal object or array. +* @param options Options +*/ +function toRefs(objectRef, options = {}) { + if (!isRef(objectRef)) return toRefs$1(objectRef); + const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {}; + for (const key in objectRef.value) result[key] = customRef(() => ({ + get() { + return objectRef.value[key]; + }, + set(v) { + var _toValue; + if ((_toValue = toValue(options.replaceRef)) !== null && _toValue !== void 0 ? _toValue : true) { + if (Array.isArray(objectRef.value)) { + const copy = [...objectRef.value]; + copy[key] = v; + objectRef.value = copy; + } else { + const newObject = { + ...objectRef.value, + [key]: v + }; + Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value)); + objectRef.value = newObject; + } + } else objectRef.value[key] = v; + } + })); + return result; +} +//#endregion +//#region tryOnBeforeMount/index.ts +/** +* Call onBeforeMount() if it's inside a component lifecycle, if not, just call the function +* +* @param fn +* @param sync if set to false, it will run in the nextTick() of Vue +* @param target +*/ +function tryOnBeforeMount(fn, sync = true, target) { + if (getLifeCycleTarget(target)) onBeforeMount(fn, target); + else if (sync) fn(); + else nextTick(fn); +} +//#endregion +//#region tryOnBeforeUnmount/index.ts +/** +* Call onBeforeUnmount() if it's inside a component lifecycle, if not, do nothing +* +* @param fn +* @param target +*/ +function tryOnBeforeUnmount(fn, target) { + if (getLifeCycleTarget(target)) onBeforeUnmount(fn, target); +} +//#endregion +//#region tryOnMounted/index.ts +/** +* Call onMounted() if it's inside a component lifecycle, if not, just call the function +* +* @param fn +* @param sync if set to false, it will run in the nextTick() of Vue +* @param target +*/ +function tryOnMounted(fn, sync = true, target) { + if (getLifeCycleTarget(target)) onMounted(fn, target); + else if (sync) fn(); + else nextTick(fn); +} +//#endregion +//#region tryOnUnmounted/index.ts +/** +* Call onUnmounted() if it's inside a component lifecycle, if not, do nothing +* +* @param fn +* @param target +*/ +function tryOnUnmounted(fn, target) { + if (getLifeCycleTarget(target)) onUnmounted(fn, target); +} +//#endregion +//#region until/index.ts +function createUntil(r, isNot = false) { + function toMatch(condition, { flush = "sync", deep = false, timeout, throwOnTimeout } = {}) { + let stop = null; + const promises = [new Promise((resolve) => { + stop = watch(r, (v) => { + if (condition(v) !== isNot) { + if (stop) stop(); + else nextTick(() => stop === null || stop === void 0 ? void 0 : stop()); + resolve(v); + } + }, { + flush, + deep, + immediate: true + }); + })]; + if (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop === null || stop === void 0 ? void 0 : stop())); + return Promise.race(promises); + } + function toBe(value, options) { + if (!isRef(value)) return toMatch((v) => v === value, options); + const { flush = "sync", deep = false, timeout, throwOnTimeout } = options !== null && options !== void 0 ? options : {}; + let stop = null; + const promises = [new Promise((resolve) => { + stop = watch([r, value], ([v1, v2]) => { + if (isNot !== (v1 === v2)) { + if (stop) stop(); + else nextTick(() => stop === null || stop === void 0 ? void 0 : stop()); + resolve(v1); + } + }, { + flush, + deep, + immediate: true + }); + })]; + if (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => { + stop === null || stop === void 0 || stop(); + return toValue(r); + })); + return Promise.race(promises); + } + function toBeTruthy(options) { + return toMatch((v) => Boolean(v), options); + } + function toBeNull(options) { + return toBe(null, options); + } + function toBeUndefined(options) { + return toBe(void 0, options); + } + function toBeNaN(options) { + return toMatch(Number.isNaN, options); + } + function toContains(value, options) { + return toMatch((v) => { + const array = Array.from(v); + return array.includes(value) || array.includes(toValue(value)); + }, options); + } + function changed(options) { + return changedTimes(1, options); + } + function changedTimes(n = 1, options) { + let count = -1; + return toMatch(() => { + count += 1; + return count >= n; + }, options); + } + if (Array.isArray(toValue(r))) return { + toMatch, + toContains, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + else return { + toMatch, + toBe, + toBeTruthy, + toBeNull, + toBeNaN, + toBeUndefined, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; +} +function until(r) { + return createUntil(r); +} +//#endregion +//#region useArrayDifference/index.ts +function defaultComparator(value, othVal) { + return value === othVal; +} +/** +* Reactive get array difference of two array +* @see https://vueuse.org/useArrayDifference +* @returns - the difference of two array +* @param args +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayDifference(...args) { + var _args$, _args$2; + const list = args[0]; + const values = args[1]; + let compareFn = (_args$ = args[2]) !== null && _args$ !== void 0 ? _args$ : defaultComparator; + const { symmetric = false } = (_args$2 = args[3]) !== null && _args$2 !== void 0 ? _args$2 : {}; + if (typeof compareFn === "string") { + const key = compareFn; + compareFn = (value, othVal) => value[key] === othVal[key]; + } + const diff1 = computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1)); + if (symmetric) { + const diff2 = computed(() => toValue(values).filter((x) => toValue(list).findIndex((y) => compareFn(x, y)) === -1)); + return computed(() => symmetric ? [...toValue(diff1), ...toValue(diff2)] : toValue(diff1)); + } else return diff1; +} +//#endregion +//#region useArrayEvery/index.ts +/** +* Reactive `Array.every` +* +* @see https://vueuse.org/useArrayEvery +* @param list - the array was called upon. +* @param fn - a function to test each element. +* +* @returns **true** if the `fn` function returns a **truthy** value for every element from the array. Otherwise, **false**. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayEvery(list, fn) { + return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array))); +} +//#endregion +//#region useArrayFilter/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useArrayFilter(list, fn) { + return computed(() => toValue(list).map((i) => toValue(i)).filter(fn)); +} +//#endregion +//#region useArrayFind/index.ts +/** +* Reactive `Array.find` +* +* @see https://vueuse.org/useArrayFind +* @param list - the array was called upon. +* @param fn - a function to test each element. +* +* @returns the first element in the array that satisfies the provided testing function. Otherwise, undefined is returned. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayFind(list, fn) { + return computed(() => toValue(toValue(list).find((element, index, array) => fn(toValue(element), index, array)))); +} +//#endregion +//#region useArrayFindIndex/index.ts +/** +* Reactive `Array.findIndex` +* +* @see https://vueuse.org/useArrayFindIndex +* @param list - the array was called upon. +* @param fn - a function to test each element. +* +* @returns the index of the first element in the array that passes the test. Otherwise, "-1". +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayFindIndex(list, fn) { + return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array))); +} +//#endregion +//#region useArrayFindLast/index.ts +function findLast(arr, cb) { + let index = arr.length; + while (index-- > 0) if (cb(arr[index], index, arr)) return arr[index]; +} +/** +* Reactive `Array.findLast` +* +* @see https://vueuse.org/useArrayFindLast +* @param list - the array was called upon. +* @param fn - a function to test each element. +* +* @returns the last element in the array that satisfies the provided testing function. Otherwise, undefined is returned. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayFindLast(list, fn) { + return computed(() => toValue(!Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array)))); +} +//#endregion +//#region useArrayIncludes/index.ts +function isArrayIncludesOptions(obj) { + return isObject(obj) && containsProp(obj, "formIndex", "comparator"); +} +/* @__NO_SIDE_EFFECTS__ */ +function useArrayIncludes(...args) { + var _comparator; + const list = args[0]; + const value = args[1]; + let comparator = args[2]; + let formIndex = 0; + if (isArrayIncludesOptions(comparator)) { + var _comparator$fromIndex; + formIndex = (_comparator$fromIndex = comparator.fromIndex) !== null && _comparator$fromIndex !== void 0 ? _comparator$fromIndex : 0; + comparator = comparator.comparator; + } + if (typeof comparator === "string") { + const key = comparator; + comparator = (element, value) => element[key] === toValue(value); + } + comparator = (_comparator = comparator) !== null && _comparator !== void 0 ? _comparator : ((element, value) => element === toValue(value)); + return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array)))); +} +//#endregion +//#region useArrayJoin/index.ts +/** +* Reactive `Array.join` +* +* @see https://vueuse.org/useArrayJoin +* @param list - the array was called upon. +* @param separator - a string to separate each pair of adjacent elements of the array. If omitted, the array elements are separated with a comma (","). +* +* @returns a string with all array elements joined. If arr.length is 0, the empty string is returned. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayJoin(list, separator) { + return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator))); +} +//#endregion +//#region useArrayMap/index.ts +/** +* Reactive `Array.map` +* +* @see https://vueuse.org/useArrayMap +* @param list - the array was called upon. +* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array. +* +* @returns a new array with each element being the result of the callback function. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayMap(list, fn) { + return computed(() => toValue(list).map((i) => toValue(i)).map(fn)); +} +//#endregion +//#region useArrayReduce/index.ts +/* @__NO_SIDE_EFFECTS__ */ +function useArrayReduce(list, reducer, ...args) { + const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index); + return computed(() => { + const resolved = toValue(list); + return args.length ? resolved.reduce(reduceCallback, typeof args[0] === "function" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback); + }); +} +//#endregion +//#region useArraySome/index.ts +/** +* Reactive `Array.some` +* +* @see https://vueuse.org/useArraySome +* @param list - the array was called upon. +* @param fn - a function to test each element. +* +* @returns **true** if the `fn` function returns a **truthy** value for any element from the array. Otherwise, **false**. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArraySome(list, fn) { + return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array))); +} +//#endregion +//#region useArrayUnique/index.ts +function uniq(array) { + return Array.from(new Set(array)); +} +function uniqueElementsBy(array, fn) { + return array.reduce((acc, v) => { + if (!acc.some((x) => fn(v, x, array))) acc.push(v); + return acc; + }, []); +} +/** +* reactive unique array +* @see https://vueuse.org/useArrayUnique +* @param list - the array was called upon. +* @param compareFn +* @returns A computed ref that returns a unique array of items. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useArrayUnique(list, compareFn) { + return computed(() => { + const resolvedList = toValue(list).map((element) => toValue(element)); + return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList); + }); +} +//#endregion +//#region useCounter/index.ts +/** +* Basic counter with utility functions. +* +* @see https://vueuse.org/useCounter +* @param [initialValue] +* @param options +*/ +function useCounter(initialValue = 0, options = {}) { + let _initialValue = unref(initialValue); + const count = shallowRef(initialValue); + const { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } = options; + const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min); + const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max); + const get = () => count.value; + const set = (val) => count.value = Math.max(min, Math.min(max, val)); + const reset = (val = _initialValue) => { + _initialValue = val; + return set(val); + }; + return { + count: shallowReadonly(count), + inc, + dec, + get, + set, + reset + }; +} +//#endregion +//#region useDateFormat/index.ts +const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[T\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/i; +const REGEX_FORMAT = /[YMDHhms]o|\[([^\]]+)\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g; +function defaultMeridiem(hours, minutes, isLowercase, hasPeriod) { + let m = hours < 12 ? "AM" : "PM"; + if (hasPeriod) m = m.split("").reduce((acc, curr) => acc += `${curr}.`, ""); + return isLowercase ? m.toLowerCase() : m; +} +function formatOrdinal(num) { + const suffixes = [ + "th", + "st", + "nd", + "rd" + ]; + const v = num % 100; + return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]); +} +function formatDate(date, formatStr, options = {}) { + var _options$customMeridi; + const years = date.getFullYear(); + const month = date.getMonth(); + const days = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = date.getSeconds(); + const milliseconds = date.getMilliseconds(); + const day = date.getDay(); + const meridiem = (_options$customMeridi = options.customMeridiem) !== null && _options$customMeridi !== void 0 ? _options$customMeridi : defaultMeridiem; + const stripTimeZone = (dateString) => { + var _dateString$split$; + return (_dateString$split$ = dateString.split(" ")[1]) !== null && _dateString$split$ !== void 0 ? _dateString$split$ : ""; + }; + const matches = { + Yo: () => formatOrdinal(years), + YY: () => String(years).slice(-2), + YYYY: () => years, + M: () => month + 1, + Mo: () => formatOrdinal(month + 1), + MM: () => `${month + 1}`.padStart(2, "0"), + MMM: () => date.toLocaleDateString(toValue(options.locales), { month: "short" }), + MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: "long" }), + D: () => String(days), + Do: () => formatOrdinal(days), + DD: () => `${days}`.padStart(2, "0"), + H: () => String(hours), + Ho: () => formatOrdinal(hours), + HH: () => `${hours}`.padStart(2, "0"), + h: () => `${hours % 12 || 12}`.padStart(1, "0"), + ho: () => formatOrdinal(hours % 12 || 12), + hh: () => `${hours % 12 || 12}`.padStart(2, "0"), + m: () => String(minutes), + mo: () => formatOrdinal(minutes), + mm: () => `${minutes}`.padStart(2, "0"), + s: () => String(seconds), + so: () => formatOrdinal(seconds), + ss: () => `${seconds}`.padStart(2, "0"), + SSS: () => `${milliseconds}`.padStart(3, "0"), + d: () => day, + dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "narrow" }), + ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "short" }), + dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: "long" }), + A: () => meridiem(hours, minutes), + AA: () => meridiem(hours, minutes, false, true), + a: () => meridiem(hours, minutes, true), + aa: () => meridiem(hours, minutes, true, true), + z: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "shortOffset" })), + zz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "shortOffset" })), + zzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "shortOffset" })), + zzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: "longOffset" })) + }; + return formatStr.replace(REGEX_FORMAT, (match, $1) => { + var _ref, _matches$match; + return (_ref = $1 !== null && $1 !== void 0 ? $1 : (_matches$match = matches[match]) === null || _matches$match === void 0 ? void 0 : _matches$match.call(matches)) !== null && _ref !== void 0 ? _ref : match; + }); +} +function normalizeDate(date) { + if (date === null) return /* @__PURE__ */ new Date(NaN); + if (date === void 0) return /* @__PURE__ */ new Date(); + if (date instanceof Date) return new Date(date); + if (typeof date === "string" && !/Z$/i.test(date)) { + const d = date.match(REGEX_PARSE); + if (d) { + const m = d[2] - 1 || 0; + const ms = (d[7] || "0").substring(0, 3); + return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms); + } + } + return new Date(date); +} +/** +* Get the formatted date according to the string of tokens passed in. +* +* @see https://vueuse.org/useDateFormat +* @param date - The date to format, can either be a `Date` object, a timestamp, or a string +* @param formatStr - The combination of tokens to format the date +* @param options - UseDateFormatOptions +* +* @__NO_SIDE_EFFECTS__ +*/ +function useDateFormat(date, formatStr = "HH:mm:ss", options = {}) { + return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options)); +} +//#endregion +//#region useIntervalFn/index.ts +/** +* Wrapper for `setInterval` with controls +* +* @see https://vueuse.org/useIntervalFn +* @param cb +* @param interval +* @param options +*/ +function useIntervalFn(cb, interval = 1e3, options = {}) { + const { immediate = true, immediateCallback = false } = options; + let timer = null; + const isActive = shallowRef(false); + function clean() { + if (timer) { + clearInterval(timer); + timer = null; + } + } + function pause() { + isActive.value = false; + clean(); + } + function resume() { + const intervalValue = toValue(interval); + if (intervalValue <= 0) return; + isActive.value = true; + if (immediateCallback) cb(); + clean(); + if (isActive.value) timer = setInterval(cb, intervalValue); + } + if (immediate && isClient) resume(); + if (isRef(interval) || typeof interval === "function") tryOnScopeDispose(watch(interval, () => { + if (isActive.value && isClient) resume(); + })); + tryOnScopeDispose(pause); + return { + isActive: shallowReadonly(isActive), + pause, + resume + }; +} +//#endregion +//#region useInterval/index.ts +function useInterval(interval = 1e3, options = {}) { + const { controls: exposeControls = false, immediate = true, callback } = options; + const counter = shallowRef(0); + const update = () => counter.value += 1; + const reset = () => { + counter.value = 0; + }; + const controls = useIntervalFn(callback ? () => { + update(); + callback(counter.value); + } : update, interval, { immediate }); + if (exposeControls) return { + counter: shallowReadonly(counter), + reset, + ...controls + }; + else return shallowReadonly(counter); +} +//#endregion +//#region useLastChanged/index.ts +function useLastChanged(source, options = {}) { + var _options$initialValue; + const ms = shallowRef((_options$initialValue = options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : null); + watch(source, () => ms.value = timestamp(), options); + return shallowReadonly(ms); +} +//#endregion +//#region useTimeoutFn/index.ts +/** +* Wrapper for `setTimeout` with controls. +* +* @param cb +* @param interval +* @param options +*/ +function useTimeoutFn(cb, interval, options = {}) { + const { immediate = true, immediateCallback = false } = options; + const isPending = shallowRef(false); + let timer; + function clear() { + if (timer) { + clearTimeout(timer); + timer = void 0; + } + } + function stop() { + isPending.value = false; + clear(); + } + function start(...args) { + if (immediateCallback) cb(); + clear(); + isPending.value = true; + timer = setTimeout(() => { + isPending.value = false; + timer = void 0; + cb(...args); + }, toValue(interval)); + } + if (immediate) { + isPending.value = true; + if (isClient) start(); + } + tryOnScopeDispose(stop); + return { + isPending: shallowReadonly(isPending), + start, + stop + }; +} +//#endregion +//#region useTimeout/index.ts +function useTimeout(interval = 1e3, options = {}) { + const { controls: exposeControls = false, callback } = options; + const controls = useTimeoutFn(callback !== null && callback !== void 0 ? callback : noop, interval, options); + const ready = computed(() => !controls.isPending.value); + if (exposeControls) return { + ready, + ...controls + }; + else return ready; +} +//#endregion +//#region useToNumber/index.ts +/** +* Reactively convert a string ref to number. +* +* @__NO_SIDE_EFFECTS__ +*/ +function useToNumber(value, options = {}) { + const { method = "parseFloat", radix, nanToZero } = options; + return computed(() => { + let resolved = toValue(value); + if (typeof method === "function") resolved = method(resolved); + else if (typeof resolved === "string") resolved = Number[method](resolved, radix); + if (nanToZero && Number.isNaN(resolved)) resolved = 0; + return resolved; + }); +} +//#endregion +//#region useToString/index.ts +/** +* Reactively convert a ref to string. +* +* @see https://vueuse.org/useToString +* +* @__NO_SIDE_EFFECTS__ +*/ +function useToString(value) { + return computed(() => `${toValue(value)}`); +} +//#endregion +//#region useToggle/index.ts +/** +* A boolean ref with a toggler +* +* @see https://vueuse.org/useToggle +* @param [initialValue] +* @param options +* +* @__NO_SIDE_EFFECTS__ +*/ +function useToggle(initialValue = false, options = {}) { + const { truthyValue = true, falsyValue = false } = options; + const valueIsRef = isRef(initialValue); + const _value = shallowRef(initialValue); + function toggle(value) { + if (arguments.length) { + _value.value = value; + return _value.value; + } else { + const truthy = toValue(truthyValue); + _value.value = _value.value === truthy ? toValue(falsyValue) : truthy; + return _value.value; + } + } + if (valueIsRef) return toggle; + else return [_value, toggle]; +} +//#endregion +//#region watchArray/index.ts +/** +* Watch for an array with additions and removals. +* +* @see https://vueuse.org/watchArray +*/ +function watchArray(source, cb, options) { + let oldList = (options === null || options === void 0 ? void 0 : options.immediate) ? [] : [...typeof source === "function" ? source() : Array.isArray(source) ? source : toValue(source)]; + return watch(source, (newList, _, onCleanup) => { + const oldListRemains = Array.from({ length: oldList.length }); + const added = []; + for (const obj of newList) { + let found = false; + for (let i = 0; i < oldList.length; i++) if (!oldListRemains[i] && obj === oldList[i]) { + oldListRemains[i] = true; + found = true; + break; + } + if (!found) added.push(obj); + } + const removed = oldList.filter((_, i) => !oldListRemains[i]); + cb(newList, oldList, added, removed, onCleanup); + oldList = [...newList]; + }, options); +} +//#endregion +//#region watchAtMost/index.ts +function watchAtMost(source, cb, options) { + const { count, ...watchOptions } = options; + const current = shallowRef(0); + const { stop, resume, pause } = watchWithFilter(source, (...args) => { + current.value += 1; + if (current.value >= toValue(count)) nextTick(() => stop()); + cb(...args); + }, watchOptions); + return { + count: current, + stop, + resume, + pause + }; +} +//#endregion +//#region watchDebounced/index.ts +function watchDebounced(source, cb, options = {}) { + const { debounce = 0, maxWait = void 0, ...watchOptions } = options; + return watchWithFilter(source, cb, { + ...watchOptions, + eventFilter: debounceFilter(debounce, { maxWait }) + }); +} +/** @deprecated use `watchDebounced` instead */ +const debouncedWatch = watchDebounced; +//#endregion +//#region watchDeep/index.ts +/** +* Shorthand for watching value with {deep: true} +* +* @see https://vueuse.org/watchDeep +*/ +function watchDeep(source, cb, options) { + return watch(source, cb, { + ...options, + deep: true + }); +} +//#endregion +//#region watchIgnorable/index.ts +function watchIgnorable(source, cb, options = {}) { + const { eventFilter = bypassFilter, ...watchOptions } = options; + const filteredCb = createFilterWrapper(eventFilter, cb); + let ignoreUpdates; + let ignorePrevAsyncUpdates; + let stop; + if (watchOptions.flush === "sync") { + let ignore = false; + ignorePrevAsyncUpdates = () => {}; + ignoreUpdates = (updater) => { + ignore = true; + updater(); + ignore = false; + }; + stop = watch(source, (...args) => { + if (!ignore) filteredCb(...args); + }, watchOptions); + } else { + const disposables = []; + let ignoreCounter = 0; + let syncCounter = 0; + ignorePrevAsyncUpdates = () => { + ignoreCounter = syncCounter; + }; + disposables.push(watch(source, () => { + syncCounter++; + }, { + ...watchOptions, + flush: "sync" + })); + ignoreUpdates = (updater) => { + const syncCounterPrev = syncCounter; + updater(); + ignoreCounter += syncCounter - syncCounterPrev; + }; + disposables.push(watch(source, (...args) => { + const ignore = ignoreCounter > 0 && ignoreCounter === syncCounter; + ignoreCounter = 0; + syncCounter = 0; + if (ignore) return; + filteredCb(...args); + }, watchOptions)); + stop = () => { + disposables.forEach((fn) => fn()); + }; + } + return { + stop, + ignoreUpdates, + ignorePrevAsyncUpdates + }; +} +/** @deprecated use `watchIgnorable` instead */ +const ignorableWatch = watchIgnorable; +//#endregion +//#region watchImmediate/index.ts +/** +* Shorthand for watching value with {immediate: true} +* +* @see https://vueuse.org/watchImmediate +*/ +function watchImmediate(source, cb, options) { + return watch(source, cb, { + ...options, + immediate: true + }); +} +//#endregion +//#region watchOnce/index.ts +/** +* Shorthand for watching value with { once: true } +* +* @see https://vueuse.org/watchOnce +*/ +function watchOnce(source, cb, options) { + return watch(source, cb, { + ...options, + once: true + }); +} +//#endregion +//#region watchThrottled/index.ts +function watchThrottled(source, cb, options = {}) { + const { throttle = 0, trailing = true, leading = true, ...watchOptions } = options; + return watchWithFilter(source, cb, { + ...watchOptions, + eventFilter: throttleFilter(throttle, trailing, leading) + }); +} +/** @deprecated use `watchThrottled` instead */ +const throttledWatch = watchThrottled; +//#endregion +//#region watchTriggerable/index.ts +function watchTriggerable(source, cb, options = {}) { + let cleanupFn; + function onEffect() { + if (!cleanupFn) return; + const fn = cleanupFn; + cleanupFn = void 0; + fn(); + } + /** Register the function `cleanupFn` */ + function onCleanup(callback) { + cleanupFn = callback; + } + const _cb = (value, oldValue) => { + onEffect(); + return cb(value, oldValue, onCleanup); + }; + const res = watchIgnorable(source, _cb, options); + const { ignoreUpdates } = res; + const trigger = () => { + let res; + ignoreUpdates(() => { + res = _cb(getWatchSources(source), getOldValue(source)); + }); + return res; + }; + return { + ...res, + trigger + }; +} +function getWatchSources(sources) { + if (isReactive(sources)) return sources; + if (Array.isArray(sources)) return sources.map((item) => toValue(item)); + return toValue(sources); +} +function getOldValue(source) { + return Array.isArray(source) ? source.map(() => void 0) : void 0; +} +//#endregion +//#region whenever/index.ts +function whenever(source, cb, options) { + const stop = watch(source, (v, ov, onInvalidate) => { + if (v) { + if (options === null || options === void 0 ? void 0 : options.once) nextTick(() => stop()); + cb(v, ov, onInvalidate); + } + }, { + ...options, + once: false + }); + return stop; +} +//#endregion +export { assert, autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, controlledComputed, controlledRef, createDisposableDirective, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, debouncedRef, debouncedWatch, eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refManualReset, refThrottled, refWithControl, set, syncRef, syncRefs, throttleFilter, throttledRef, throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever }; diff --git a/apps/web/.output/server/node_modules/@vueuse/shared/package.json b/apps/web/.output/server/node_modules/@vueuse/shared/package.json new file mode 100644 index 0000000..91c09cd --- /dev/null +++ b/apps/web/.output/server/node_modules/@vueuse/shared/package.json @@ -0,0 +1,45 @@ +{ + "name": "@vueuse/shared", + "type": "module", + "version": "15.0.0", + "author": "Anthony Fu <https://github.com/antfu>", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/vueuse/vueuse/tree/main/packages/shared#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vueuse/vueuse.git", + "directory": "packages/shared" + }, + "bugs": { + "url": "https://github.com/vueuse/vueuse/issues" + }, + "keywords": [ + "vue", + "vue-use", + "utils" + ], + "sideEffects": false, + "exports": { + ".": "./dist/index.js", + "./*": "./dist/*", + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "unpkg": "./dist/index.iife.min.js", + "jsdelivr": "./dist/index.iife.min.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "vue": "^3.5.0" + }, + "scripts": { + "build": "tsdown" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/devalue/package.json b/apps/web/.output/server/node_modules/devalue/package.json new file mode 100644 index 0000000..5d5e210 --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/package.json @@ -0,0 +1,47 @@ +{ + "name": "devalue", + "description": "Gets the job done when JSON.stringify can't", + "version": "6.0.3", + "repository": "sveltejs/devalue", + "sideEffects": false, + "exports": { + ".": { + "types": "./types/types.d.ts", + "import": "./src/index.js", + "default": "./src/index.js" + } + }, + "files": [ + "src", + "types" + ], + "types": "./types/types.d.ts", + "engines": { + "node": ">=18" + }, + "devDependencies": { + "@changesets/cli": "^2.29.6", + "@js-temporal/polyfill": "^0.5.1", + "@types/node": "^24.12.0", + "prettier": "^3.2.4", + "publint": "^0.3.12", + "typescript": "^7.0.2", + "vite": "8.3.0", + "vitest": "5.0.1" + }, + "license": "MIT", + "type": "module", + "scripts": { + "changeset:version": "changeset version", + "changeset:publish": "changeset publish", + "build": "tsc", + "test": "vitest run --project unit", + "test:unit": "vitest run --project unit", + "test:watch": "vitest --project unit", + "test:types": "tsc -p . --noEmit", + "check:format": "prettier --check .", + "format": "prettier --write .", + "bench": "node --allow-natives-syntax ./benchmarking/run.js", + "bench:compare": "node --allow-natives-syntax ./benchmarking/compare/index.js" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/devalue/src/base64.js b/apps/web/.output/server/node_modules/devalue/src/base64.js new file mode 100644 index 0000000..3833db9 --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/base64.js @@ -0,0 +1,64 @@ +/* Baseline 2025 runtimes */ + +/** @type {(array_buffer: ArrayBuffer) => string} */ +export function encode_native(array_buffer) { + return new Uint8Array(array_buffer).toBase64(); +} + +/** @type {(base64: string) => ArrayBuffer} */ +export function decode_native(base64) { + return Uint8Array.fromBase64(base64).buffer; +} + +/* Node-compatible runtimes */ + +/** @type {(array_buffer: ArrayBuffer) => string} */ +export function encode_buffer(array_buffer) { + return Buffer.from(array_buffer).toString('base64'); +} + +/** @type {(base64: string) => ArrayBuffer} */ +export function decode_buffer(base64) { + return Uint8Array.from(Buffer.from(base64, 'base64')).buffer; +} + +/* Legacy runtimes */ + +/** @type {(array_buffer: ArrayBuffer) => string} */ +export function encode_legacy(array_buffer) { + const array = new Uint8Array(array_buffer); + let binary = ''; + + // the maximum number of arguments to String.fromCharCode.apply + // should be around 0xFFFF in modern engines + const chunk_size = 0x8000; + for (let i = 0; i < array.length; i += chunk_size) { + const chunk = array.subarray(i, i + chunk_size); + // `apply` accepts any array-like at runtime; lib types only admit `number[]`. + binary += String.fromCharCode.apply( + null, + /** @type {number[]} */ (/** @type {unknown} */ (chunk)) + ); + } + + return btoa(binary); +} + +/** @type {(base64: string) => ArrayBuffer} */ +export function decode_legacy(base64) { + const binary_string = atob(base64); + const len = binary_string.length; + const array = new Uint8Array(len); + + for (let i = 0; i < len; i++) { + array[i] = binary_string.charCodeAt(i); + } + + return array.buffer; +} + +const native = typeof Uint8Array.fromBase64 === 'function'; +const buffer = typeof process === 'object' && process.versions?.node !== undefined; + +export const encode64 = native ? encode_native : buffer ? encode_buffer : encode_legacy; +export const decode64 = native ? decode_native : buffer ? decode_buffer : decode_legacy; diff --git a/apps/web/.output/server/node_modules/devalue/src/constants.js b/apps/web/.output/server/node_modules/devalue/src/constants.js new file mode 100644 index 0000000..05532ae --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/constants.js @@ -0,0 +1,12 @@ +export const UNDEFINED = -1; +export const HOLE = -2; +export const NAN = -3; +export const POSITIVE_INFINITY = -4; +export const NEGATIVE_INFINITY = -5; +export const NEGATIVE_ZERO = -6; +export const SPARSE = -7; + +// The largest valid value for a JavaScript array's `length` property, +// and the largest valid array index (one less than the max length). +export const MAX_ARRAY_LEN = 2 ** 32 - 1; +export const MAX_ARRAY_INDEX = MAX_ARRAY_LEN - 1; diff --git a/apps/web/.output/server/node_modules/devalue/src/index.js b/apps/web/.output/server/node_modules/devalue/src/index.js new file mode 100644 index 0000000..bdb3dba --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/index.js @@ -0,0 +1,8 @@ +export { uneval } from './uneval.js'; +export { parse, unflatten } from './parse.js'; +export { stringify, stringifyAsync } from './stringify.js'; +export { + default_stringify_operations as defaultStringifyOperations, + default_parse_operations as defaultParseOperations +} from './operations.js'; +export { DevalueError, filter_array_indices as filterArrayIndices } from './utils.js'; diff --git a/apps/web/.output/server/node_modules/devalue/src/javascript-source.js b/apps/web/.output/server/node_modules/devalue/src/javascript-source.js new file mode 100644 index 0000000..78968bf --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/javascript-source.js @@ -0,0 +1,98 @@ +const SOURCE = Symbol('JavaScriptSource'); + +export class JavaScriptSource { + /** + * @param {TemplateStringsArray} strings + * @param {unknown[]} values + */ + constructor(strings, values) { + this.strings = strings; + this.values = values; + } + + /** + * @param {(value: unknown) => string} fn + */ + render(fn) { + const { strings, values } = this; + let result = strings[0]; + for (let i = 0; i < values.length; i++) { + const value = values[i]; + result += JavaScriptSource.is_fragment(value) + ? JavaScriptSource.from(value).render(fn) + : fn(value); + result += strings[i + 1]; + } + return result; + } + + /** + * @param {(value: unknown) => void} fn + * @param {Set<string>} reserved + * @param {Set<readonly string[]>} templates + */ + visit(fn, reserved, templates) { + const { strings, values } = this; + // Each template site reuses its string array, but its interpolations can change. + if (!templates.has(strings)) { + templates.add(strings); + for (const string of strings) { + // Generated names are ASCII, but literal identifiers can use Unicode escapes. + const decoded = string.replace( + /\\u(?:([\da-f]{4})|\{([\da-f]+)\})/gi, + (escape, hex, code_point) => { + const code = parseInt(hex || code_point, 16); + return code < 128 ? String.fromCharCode(code) : escape; + } + ); + // Conservatively reserve words even in property names, strings and comments. + for (const name of decoded.match(/[a-zA-Z_$][\w$]*/g) || []) reserved.add(name); + } + } + for (const value of values) { + if (JavaScriptSource.is_fragment(value)) { + JavaScriptSource.from(value).visit(fn, reserved, templates); + } else { + fn(value); + } + } + } + + /** + * @param {unknown} value + * @returns {value is JavaScriptFragment} + */ + static is_fragment(value) { + return typeof value === 'object' && value !== null && SOURCE in value; + } + + /** + * @param {JavaScriptFragment} fragment + * @returns {JavaScriptSource} + */ + static from(fragment) { + if (!JavaScriptSource.is_fragment(fragment)) { + throw new TypeError('Invalid JavaScript fragment'); + } + return fragment[SOURCE]; + } +} + +/** + * @param {TemplateStringsArray} strings + * @param {...unknown} values + * @returns {JavaScriptFragment} + */ +export function js(strings, ...values) { + if (!Array.isArray(strings) || !Array.isArray(strings.raw)) { + throw new TypeError( + '`js` must be used as a tagged template, but was called as a regular function' + ); + } + return { [SOURCE]: new JavaScriptSource(strings, values) }; +} + +/** + * The opaque result of the `js` tag passed to an `uneval` replacer. + * @typedef {{ readonly [SOURCE]: JavaScriptSource }} JavaScriptFragment + */ diff --git a/apps/web/.output/server/node_modules/devalue/src/operations.js b/apps/web/.output/server/node_modules/devalue/src/operations.js new file mode 100644 index 0000000..0c9d8fb --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/operations.js @@ -0,0 +1,220 @@ +import { MAX_ARRAY_INDEX } from './constants.js'; +import { + enumerable_symbols, + get_type, + is_buffer, + is_plain_object, + valid_array_indices +} from './utils.js'; + +/** + * Merges caller-provided operation overrides over the defaults. Iterating the + * default keys (rather than the override's own keys) means nullish members + * fall back to the default, and inherited members — e.g. from a class + * instance — are picked up. + * + * @template {Record<string, any>} T + * @param {T} defaults + * @param {Partial<T> | undefined} overrides + * @returns {T} + */ +export function merge_operations(defaults, overrides) { + if (!overrides) return defaults; + + const merged = /** @type {T} */ ({}); + + for (const key of /** @type {(keyof T)[]} */ (Object.keys(defaults))) { + merged[key] = overrides[key] ?? defaults[key]; + } + + return merged; +} + +/** @type {{ kind: 'not-plain' }} */ +const NOT_PLAIN = /* @__PURE__ */ Object.freeze({ kind: 'not-plain' }); + +/** @type {{ kind: 'symbol-keys' }} */ +const SYMBOL_KEYS = /* @__PURE__ */ Object.freeze({ kind: 'symbol-keys' }); + +/** + * The default implementations of every introspection/extraction operation + * `stringify` performs on the value being serialized. Each one uses native + * JavaScript semantics (property access, iteration, prototype methods, etc). + * + * Pass overrides via the `operations` option of `stringify`/`stringifyAsync` + * to customize how values are inspected — e.g. to serialize values without + * triggering getters, proxy traps, or patched prototype methods, or to + * serialize values that live in a different JavaScript runtime (a `node:vm` + * context, a WASM-hosted engine, a remote process) through handle objects. + * + * The object is frozen — it is shared by every `stringify` call that does + * not override a given operation. + * + */ +/** @type {import('./types.js').DefaultStringifyOperations} */ +const stringify_operations = { + identify: (value) => value, + + typeOf: (value) => (value === null ? 'null' : typeof value), + + toPrimitive: (value) => value, + + tagOf: (value) => get_type(value), + + isThenable: (value) => typeof value.then === 'function', + + toPromise: (thenable) => Promise.resolve(thenable), + + unbox: (boxed) => boxed.valueOf(), + + toISOString: (date) => (isNaN(date.getDate()) ? '' : date.toISOString()), + + toStringValue: (value) => value.toString(), + + regExpInfo: (regexp) => ({ source: regexp.source, flags: regexp.flags }), + + valuesOf: (set) => set, + + entriesOf: (map) => map, + + viewInfo: (view) => { + // Node Buffers may share a pool containing unrelated, sensitive data. + // Copy only the visible bytes, without using Buffer's pooling or slice. + if (is_buffer(view)) view = new Uint8Array(view); + + return { + buffer: view.buffer, + byteOffset: view.byteOffset, + byteLength: view.byteLength, + length: view.length, + bufferByteLength: view.buffer.byteLength + }; + }, + + toArrayBuffer: (buffer) => buffer, + + lengthOf: (array) => array.length, + + hasOwn: (value, key) => Object.hasOwn(value, key), + + indicesOf: (array) => valid_array_indices(array), + + shapeOf: (value) => { + if (!is_plain_object(value)) return NOT_PLAIN; + if (enumerable_symbols(value).length > 0) return SYMBOL_KEYS; + + return { + kind: Object.getPrototypeOf(value) === null ? 'null-proto' : 'plain', + keys: Object.keys(value) + }; + }, + + get: (value, key) => value[key] +}; + +export const default_stringify_operations = /* @__PURE__ */ Object.freeze(stringify_operations); + +const array_buffer_byte_length = /** @type {() => number} */ ( + Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')?.get +); + +const shared_array_buffer_byte_length = + typeof SharedArrayBuffer === 'undefined' + ? undefined + : Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, 'byteLength')?.get; + +/** + * The default implementations of every construction operation `parse` and + * `unflatten` perform while reviving a value. Each one uses native + * JavaScript semantics (built-in constructors, property assignment, etc). + * + * Pass overrides via the `operations` option of `parse`/`unflatten` to + * customize how values are built — e.g. to construct them from the + * intrinsics of a different realm (a `node:vm` context), or to build up + * values inside another JavaScript runtime (a WASM-hosted engine, a remote + * process) through handle objects. + * + * The object is frozen — it is shared by every `parse` call that does not + * override a given operation. + * + */ +/** @type {import('./types.js').DefaultParseOperations} */ +const parse_operations = { + fromPrimitive: (primitive) => primitive, + + fromISOString: (iso) => new Date(iso), + + fromStringValue: (tag, text) => { + if (tag === 'URL') return new URL(text); + if (tag === 'URLSearchParams') return new URLSearchParams(text); + // 'Temporal.Instant', 'Temporal.PlainDate', ... + // @ts-expect-error TS doesn't know about Temporal yet + return Temporal[tag.slice(9)].from(text); + }, + + fromArrayBuffer: (buffer) => buffer, + + fromRegExpInfo: (source, flags) => new RegExp(source, flags), + + fromViewInfo: (tag, buffer, byteOffset, length) => { + // A reviver can replace an ArrayBuffer with a length or array-like value, + // which a typed array constructor would use to allocate a new buffer. + // The native getters check internal slots, so they work across realms + // and cannot be fooled by a forged prototype or Symbol.toStringTag. + try { + array_buffer_byte_length.call(buffer); + } catch (error) { + if (!shared_array_buffer_byte_length) throw error; + shared_array_buffer_byte_length.call(buffer); + } + + const Constructor = /** @type {any} */ (globalThis)[tag]; + return byteOffset !== undefined + ? new Constructor(buffer, byteOffset, length) + : new Constructor(buffer); + }, + + box: (value) => Object(value), + + createArray: (length) => new Array(length), + + createSparseArray: (length) => { + /** @type {any[]} */ + const array = []; + + // Setting `array.length = length` (or equivalently calling + // `new Array(length)`) on an untrusted length is a DoS vector: V8 + // eagerly allocates a contiguous backing store for array lengths below + // ~10^8, so a small payload with a huge declared length can force + // arbitrary memory allocation. Touching the largest-possible index + // first forces V8 into dictionary-elements mode, where `length` is + // just a number and no contiguous allocation occurs. + array[MAX_ARRAY_INDEX] = undefined; + delete array[MAX_ARRAY_INDEX]; + array.length = length; + + return array; + }, + + createObject: () => ({}), + + createNullPrototypeObject: () => Object.create(null), + + createSet: () => new Set(), + + createMap: () => new Map(), + + set: (target, key, value) => { + target[key] = value; + }, + + addValue: (set, value) => { + set.add(value); + }, + + addEntry: (map, key, value) => { + map.set(key, value); + } +}; + +export const default_parse_operations = /* @__PURE__ */ Object.freeze(parse_operations); diff --git a/apps/web/.output/server/node_modules/devalue/src/parse.js b/apps/web/.output/server/node_modules/devalue/src/parse.js new file mode 100644 index 0000000..6d6b24a --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/parse.js @@ -0,0 +1,312 @@ +import { decode64 } from './base64.js'; +import { + HOLE, + NAN, + NEGATIVE_INFINITY, + NEGATIVE_ZERO, + POSITIVE_INFINITY, + SPARSE, + UNDEFINED +} from './constants.js'; +import { default_parse_operations, merge_operations } from './operations.js'; +import { is_valid_array_index, is_valid_array_len } from './utils.js'; + +function invalid() { + throw new Error('Invalid input'); +} + +/** + * Revive a value serialized with `devalue.stringify` + * @param {string} serialized + * @param {Record<string, (value: any) => any>} [revivers] + * @param {import('./types.js').ParseOptions} [options] + */ +export function parse(serialized, revivers, options) { + return unflatten(JSON.parse(serialized), revivers, options); +} + +/** + * Revive a value flattened with `devalue.stringify` + * @param {number | any[]} parsed + * @param {Record<string, (value: any) => any>} [revivers] + * @param {import('./types.js').ParseOptions} [options] + */ +export function unflatten(parsed, revivers, options) { + /** @type {import('./types.js').ParseOperations} */ + const ops = merge_operations(default_parse_operations, options?.operations); + + if (typeof parsed === 'number') return hydrate(parsed, true); + + if (!Array.isArray(parsed) || parsed.length === 0) { + invalid(); + } + + const values = /** @type {any[]} */ (parsed); + + const hydrated = Array(values.length); + + /** + * A set of values currently being hydrated with custom revivers, + * used to detect invalid cyclical dependencies + * @type {Set<number> | null} + */ + let hydrating = null; + + /** + * @param {number} index + * @returns {any} + */ + function get_raw(index) { + if (!is_valid_array_index(index) || index >= values.length) { + invalid(); + } + + return values[index]; + } + + /** + * @param {number} index + * @returns {any} + */ + function hydrate(index, standalone = false) { + if (index === UNDEFINED) return ops.fromPrimitive(undefined); + if (index === NAN) return ops.fromPrimitive(NaN); + if (index === POSITIVE_INFINITY) return ops.fromPrimitive(Infinity); + if (index === NEGATIVE_INFINITY) return ops.fromPrimitive(-Infinity); + if (index === NEGATIVE_ZERO) return ops.fromPrimitive(-0); + + if (standalone || typeof index !== 'number') { + invalid(); + } + + if (index in hydrated) return hydrated[index]; + + if (index >= values.length) { + invalid(); + } + + const value = values[index]; + + if (!value || typeof value !== 'object') { + hydrated[index] = ops.fromPrimitive(value); + } else if (Array.isArray(value)) { + if (typeof value[0] === 'string') { + const type = value[0]; + + const reviver = revivers && Object.hasOwn(revivers, type) ? revivers[type] : undefined; + + if (reviver) { + let i = value[1]; + if (typeof i !== 'number') { + // if it's not a number, it was serialized by a builtin reviver + // so we need to munge it into the format expected by a custom reviver + i = values.push(value[1]) - 1; + } + + // If the payload is already hydrated, its recursion has already + // terminated (e.g. a self-referential object cached itself before + // following its own back-reference), so revive it directly. Falling + // through to the `hydrating` guard here would wrongly reject a valid + // cycle. An actually infinite payload (e.g. `[["Custom", 0]]`) is never + // cached, so it still hits the guard below. + if (Object.hasOwn(hydrated, i)) { + return (hydrated[index] = reviver(hydrated[i])); + } + + hydrating ??= new Set(); + + if (hydrating.has(i)) { + throw new Error('Invalid circular reference'); + } + + hydrating.add(i); + hydrated[index] = reviver(hydrate(i)); + hydrating.delete(i); + + return hydrated[index]; + } + + switch (type) { + case 'Date': + hydrated[index] = ops.fromISOString(value[1]); + break; + + case 'Set': + const set = ops.createSet(); + hydrated[index] = set; + for (let i = 1; i < value.length; i += 1) { + ops.addValue(set, hydrate(value[i])); + } + break; + + case 'Map': + const map = ops.createMap(); + hydrated[index] = map; + for (let i = 1; i < value.length; i += 2) { + ops.addEntry(map, hydrate(value[i]), hydrate(value[i + 1])); + } + break; + + case 'RegExp': + hydrated[index] = ops.fromRegExpInfo(value[1], value[2]); + break; + + case 'Object': { + const wrapped_index = value[1]; + + // Only a primitive can be boxed. The negative sentinels below are the + // ones `stringify` emits for boxed numbers; every other sentinel + // (`UNDEFINED`, `HOLE`, `SPARSE`) would box `undefined` into a plain + // `{}`, which is not a value `stringify` can produce. + const is_boxable_sentinel = + wrapped_index === NAN || + wrapped_index === POSITIVE_INFINITY || + wrapped_index === NEGATIVE_INFINITY || + wrapped_index === NEGATIVE_ZERO; + + if (!is_boxable_sentinel) { + const wrapped = get_raw(wrapped_index); + + const is_bigint = Array.isArray(wrapped) && wrapped[0] === 'BigInt'; + + if ((wrapped === undefined || typeof wrapped === 'object') && !is_bigint) { + // avoid infinite recusion in case of malformed input + invalid(); + } + } + + hydrated[index] = ops.box(hydrate(wrapped_index)); + break; + } + + case 'BigInt': + hydrated[index] = ops.fromPrimitive(BigInt(value[1])); + break; + + case 'null': + const obj = ops.createNullPrototypeObject(); + hydrated[index] = obj; + for (let i = 1; i < value.length; i += 2) { + const key = value[i]; + if (typeof key !== 'string') { + throw new Error('Cannot parse an object with a non-string key'); + } + + if (key === '__proto__') { + throw new Error('Cannot parse an object with a `__proto__` property'); + } + + ops.set(obj, key, hydrate(value[i + 1])); + } + break; + + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Float16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': + case 'DataView': { + const buffer_index = value[1]; + + const raw = get_raw(buffer_index); + + if (!Array.isArray(raw) || raw[0] !== 'ArrayBuffer') { + // without this, if we receive malformed input we could + // end up trying to hydrate in a circle or allocate + // huge amounts of memory when we call `new TypedArrayConstructor(buffer)` + invalid(); + } + + const buffer = hydrate(buffer_index); + + hydrated[index] = ops.fromViewInfo(type, buffer, value[2], value[3]); + + break; + } + + case 'ArrayBuffer': { + const base64 = value[1]; + if (typeof base64 !== 'string') { + throw new Error('Invalid ArrayBuffer encoding'); + } + hydrated[index] = ops.fromArrayBuffer(decode64(base64)); + break; + } + + case 'URL': + case 'URLSearchParams': + case 'Temporal.Duration': + case 'Temporal.Instant': + case 'Temporal.PlainDate': + case 'Temporal.PlainTime': + case 'Temporal.PlainDateTime': + case 'Temporal.PlainMonthDay': + case 'Temporal.PlainYearMonth': + case 'Temporal.ZonedDateTime': { + // the same tags `toStringValue` serializes on the stringify side + hydrated[index] = ops.fromStringValue(type, value[1]); + break; + } + + default: + throw new Error(`Unknown type ${type}`); + } + } else if (value[0] === SPARSE) { + // Sparse array encoding: [SPARSE, length, idx, val, idx, val, ...] + const len = value[1]; + + if (!is_valid_array_len(len)) { + invalid(); + } + + // `len` comes from the input rather than being bounded by it, so + // `createSparseArray` is responsible for not allocating storage + // proportional to it. + const array = ops.createSparseArray(len); + hydrated[index] = array; + + for (let i = 2; i < value.length; i += 2) { + const idx = value[i]; + + if (!is_valid_array_index(idx) || idx >= len) { + invalid(); + } + + ops.set(array, idx, hydrate(value[i + 1])); + } + } else { + const array = ops.createArray(value.length); + hydrated[index] = array; + + for (let i = 0; i < value.length; i += 1) { + const n = value[i]; + if (n === HOLE) continue; + + ops.set(array, i, hydrate(n)); + } + } + } else { + const object = ops.createObject(); + hydrated[index] = object; + + for (const key of Object.keys(value)) { + if (key === '__proto__') { + throw new Error('Cannot parse an object with a `__proto__` property'); + } + + ops.set(object, key, hydrate(value[key])); + } + } + + return hydrated[index]; + } + + return hydrate(0); +} diff --git a/apps/web/.output/server/node_modules/devalue/src/stringify.js b/apps/web/.output/server/node_modules/devalue/src/stringify.js new file mode 100644 index 0000000..9d3a6b5 --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/stringify.js @@ -0,0 +1,438 @@ +import { DevalueError, MAP_KEY, format_path, quote_key, stringify_string } from './utils.js'; +import { + HOLE, + NAN, + NEGATIVE_INFINITY, + NEGATIVE_ZERO, + POSITIVE_INFINITY, + SPARSE, + UNDEFINED +} from './constants.js'; +import { encode64 } from './base64.js'; +import { default_stringify_operations, merge_operations } from './operations.js'; + +/** + * Turn a value into a JSON string that can be parsed with `devalue.parse` + * @param {any} value + * @param {Record<string, (value: any) => any>} [reducers] + * @param {import('./types.js').StringifyOptions} [options] + */ +export function stringify(value, reducers, options) { + const stringified = run(false, value, reducers, options); + return typeof stringified === 'string' ? stringified : `[${stringified.join(',')}]`; +} + +/** + * Turn a value into a JSON string that can be parsed with `devalue.parse` + * @param {any} value + * @param {Record<string, (value: any) => any>} [reducers] + * @param {import('./types.js').StringifyOptions} [options] + */ +export async function stringifyAsync(value, reducers, options) { + const stringified = run(true, value, reducers, options); + + if (typeof stringified === 'string') { + return stringified; + } + + let out = '['; + + for (let i = 0; i < stringified.length; i += 1) { + let value = stringified[i]; + + if (typeof value !== 'string') { + await value; + value = stringified[i]; + + if (i === 0 && value < 0) { + return `${value}`; + } + } + + out += value; + + if (i < stringified.length - 1) { + out += ','; + } + } + + out += ']'; + + return out; +} + +/** + * @param {boolean} async + * @param {any} value + * @param {Record<string, (value: any) => any>} [reducers] + * @param {import('./types.js').StringifyOptions} [options] + */ +function run(async, value, reducers, options) { + const ops = merge_operations(default_stringify_operations, options?.operations); + + /** @type {any[]} */ + const stringified = []; + + /** @type {Map<any, number>} */ + const indexes = new Map(); + + /** @type {Array<{ key: string, fn: (value: any) => any }>} */ + const custom = []; + if (reducers) { + for (const key of Object.getOwnPropertyNames(reducers)) { + custom.push({ key, fn: reducers[key] }); + } + } + + // the path to the value being serialized, recorded as-is and only + // formatted by `error` — see `format_path` + /** @type {any[]} */ + let keys = []; + + let p = 0; + + /** + * @param {string} message + * @param {any} thing + * @returns {never} + */ + function error(message, thing) { + const path = format_path(keys, (key) => { + const key_type = ops.typeOf(key); + const key_is_primitive = + key_type !== 'object' && key_type !== 'function' && key_type !== 'symbol'; + return key_is_primitive ? stringify_primitive(ops.toPrimitive(key)) : '...'; + }); + + throw new DevalueError(message, path, thing, value); + } + + /** + * @param {any} thing + * @param {number} [index] + */ + function flatten(thing, index) { + const type = ops.typeOf(thing); + + if (type === 'undefined') return UNDEFINED; + + /** @type {number | undefined} */ + let number; + + // `ops.toPrimitive` is the boundary between the value being serialized and + // plain host JavaScript: everything below operates on the extracted host + // primitive, so native comparisons and arithmetic are correct there. + if (type === 'number') { + number = /** @type {number} */ (ops.toPrimitive(thing)); + if (Number.isNaN(number)) return NAN; + if (number === Infinity) return POSITIVE_INFINITY; + if (number === -Infinity) return NEGATIVE_INFINITY; + if (number === 0 && 1 / number < 0) return NEGATIVE_ZERO; + } + + const id = ops.identify(thing); + + if (indexes.has(id)) return /** @type {number} */ (indexes.get(id)); + + index ??= p++; + indexes.set(id, index); + + for (const { key, fn } of custom) { + const value = fn(thing); + if (value) { + stringified[index] = `["${key}",${flatten(value)}]`; + return index; + } + } + + if (type === 'function') { + error(`Cannot stringify a function`, thing); + } else if (type === 'symbol') { + error(`Cannot stringify a Symbol primitive`, thing); + } + + /** @type {string | Promise<any>} */ + let str = ''; + + if (type !== 'object') { + str = stringify_primitive(type === 'number' ? number : ops.toPrimitive(thing)); + } else if (ops.isThenable(thing)) { + if (!async) { + error(`Cannot stringify a Promise or thenable — use stringifyAsync instead`, thing); + } + + // the callback runs after the synchronous walk has unwound `keys`, + // so the path to the thenable has to be captured and reinstated + const prev_keys = keys.slice(); + + str = ops.toPromise(thing).then((value) => { + keys = prev_keys; + + const i = flatten(value, index); + if (i < 0) stringified[index] = i; + }); + + // Promises are awaited sequentially, and traversal may throw before + // reaching them. Handle rejections immediately, but keep the original + // promise so awaiting it still propagates the error to the caller. + str.catch(() => {}); + } else { + const tag = ops.tagOf(thing); + + switch (tag) { + case 'Number': + case 'String': + case 'Boolean': + case 'BigInt': + str = `["Object",${flatten(ops.unbox(thing))}]`; + break; + + case 'Date': + str = `["Date","${ops.toISOString(thing)}"]`; + break; + + case 'URL': + str = `["URL",${stringify_string(ops.toStringValue(thing))}]`; + break; + + case 'URLSearchParams': + str = `["URLSearchParams",${stringify_string(ops.toStringValue(thing))}]`; + break; + + case 'RegExp': + const { source, flags } = ops.regExpInfo(thing); + str = flags + ? `["RegExp",${stringify_string(source)},"${flags}"]` + : `["RegExp",${stringify_string(source)}]`; + break; + + case 'Array': { + // For dense arrays (no holes), we iterate normally. + // When we encounter the first hole, we call Object.keys + // to determine the sparseness, then decide between: + // - HOLE encoding: [-2, val, -2, ...] (default) + // - Sparse encoding: [-7, length, idx, val, ...] (for very sparse arrays) + // Only the sparse path avoids iterating every slot, which + // is what protects against the DoS of e.g. `arr[1000000] = 1`. + let mostly_dense = false; + + const length = ops.lengthOf(thing); + + str = '['; + + for (let i = 0; i < length; i += 1) { + if (i > 0) str += ','; + + if (ops.hasOwn(thing, i)) { + keys.push(i); + str += flatten(ops.get(thing, i)); + keys.pop(); + } else if (mostly_dense) { + // Use dense encoding. The heuristic guarantees the + // array is only mildly sparse, so iterating over every + // slot is fine. + str += HOLE; + } else { + // Decide between HOLE encoding and sparse encoding. + // + // HOLE encoding: each hole is serialized as the HOLE + // sentinel (-2). For example, [, "a", ,] becomes + // [-2, 0, -2]. Each hole costs 3 chars ("-2" + comma). + // + // Sparse encoding: lists only populated indices. + // For example, [, "a", ,] becomes [-7, 3, 1, 0] — the + // -7 sentinel, the array length (3), then index-value + // pairs. This avoids paying per-hole, but each element + // costs extra chars to write its index. + // + // The values are the same size either way, so the + // choice comes down to structural overhead: + // + // HOLE overhead: + // 3 chars per hole ("-2" + comma) + // = (L - P) * 3 + // + // Sparse overhead: + // "-7," — 3 chars (sparse sentinel + comma) + // + length + "," — (d + 1) chars (array length + comma) + // + per element: index + "," — (d + 1) chars + // = (4 + d) + P * (d + 1) + // + // where L is the array length, P is the number of + // populated elements, and d is the number of digits + // in L (an upper bound on the digits in any index). + // + // Sparse encoding is cheaper when: + // (4 + d) + P * (d + 1) < (L - P) * 3 + const populated_keys = ops.indicesOf(thing); + const population = populated_keys.length; + const d = String(length).length; + + const hole_cost = (length - population) * 3; + const sparse_cost = 4 + d + population * (d + 1); + + if (hole_cost > sparse_cost) { + str = '[' + SPARSE + ',' + length; + for (let j = 0; j < populated_keys.length; j++) { + const key = populated_keys[j]; + keys.push(+key); + str += ',' + key + ',' + flatten(ops.get(thing, key)); + keys.pop(); + } + break; + } else { + mostly_dense = true; + str += HOLE; + } + } + } + + str += ']'; + + break; + } + + case 'Set': + str = '["Set"'; + + for (const value of ops.valuesOf(thing)) { + str += `,${flatten(value)}`; + } + + str += ']'; + break; + + case 'Map': + str = '["Map"'; + + for (const [key, value] of ops.entriesOf(thing)) { + keys.push(MAP_KEY, key); + str += `,${flatten(key)},${flatten(value)}`; + keys.pop(); + keys.pop(); + } + + str += ']'; + break; + + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Float16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': { + const info = ops.viewInfo(thing); + str = '["' + tag + '",' + flatten(info.buffer); + + // handle subarrays + if (info.byteLength !== info.bufferByteLength) { + str += `,${info.byteOffset},${info.length}`; + } + + str += ']'; + break; + } + + case 'DataView': { + const info = ops.viewInfo(thing); + str = '["' + tag + '",' + flatten(info.buffer); + + if (info.byteLength !== info.bufferByteLength) { + str += `,${info.byteOffset},${info.byteLength}`; + } + + str += ']'; + break; + } + + case 'ArrayBuffer': { + const base64 = encode64(ops.toArrayBuffer(thing)); + + str = `["ArrayBuffer","${base64}"]`; + break; + } + + case 'Temporal.Duration': + case 'Temporal.Instant': + case 'Temporal.PlainDate': + case 'Temporal.PlainTime': + case 'Temporal.PlainDateTime': + case 'Temporal.PlainMonthDay': + case 'Temporal.PlainYearMonth': + case 'Temporal.ZonedDateTime': + str = `["${tag}",${stringify_string(ops.toStringValue(thing))}]`; + break; + + default: { + const shape = ops.shapeOf(thing); + + if (shape.kind === 'not-plain') { + error(`Cannot stringify arbitrary non-POJOs`, thing); + } + + if (shape.kind === 'symbol-keys') { + error(`Cannot stringify POJOs with symbolic keys`, thing); + } + + if (shape.kind === 'null-proto') { + str = '["null"'; + for (const key of shape.keys) { + if (key === '__proto__') { + error(`Cannot stringify objects with __proto__ keys`, thing); + } + + keys.push(key); + str += `,${quote_key(key)},${flatten(ops.get(thing, key))}`; + keys.pop(); + } + str += ']'; + } else { + str = '{'; + let started = false; + for (const key of shape.keys) { + if (key === '__proto__') { + error(`Cannot stringify objects with __proto__ keys`, thing); + } + + if (started) str += ','; + started = true; + keys.push(key); + str += `${quote_key(key)}:${flatten(ops.get(thing, key))}`; + keys.pop(); + } + str += '}'; + } + } + } + } + + stringified[index] = str; + return index; + } + + const index = flatten(value); + + // special case — value is represented as a negative index + if (index < 0) return `${index}`; + + return stringified; +} + +/** + * @param {any} thing + * @returns {string} + */ +function stringify_primitive(thing) { + const type = typeof thing; + if (type === 'string') return stringify_string(thing); + if (thing === void 0) return UNDEFINED.toString(); + if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO.toString(); + if (type === 'bigint') return `["BigInt","${thing}"]`; + return String(thing); +} diff --git a/apps/web/.output/server/node_modules/devalue/src/uneval.js b/apps/web/.output/server/node_modules/devalue/src/uneval.js new file mode 100644 index 0000000..912f5d5 --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/uneval.js @@ -0,0 +1,622 @@ +/** + * @import { UnevalReplacer } from './types.js'; + */ +import { js, JavaScriptSource } from './javascript-source.js'; +import { + DevalueError, + MAP_KEY, + enumerable_symbols, + escaped, + format_path, + get_name, + get_type, + is_buffer, + is_plain_object, + is_primitive, + stringify_sparse_array, + stringify_string, + valid_array_indices +} from './utils.js'; + +const unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g; +// Short strings have bounded escaping/output costs per reference. +const MIN_STRING_LENGTH = 128; + +/** + * Turn a value into the JavaScript that creates an equivalent value + * @param {any} value + * @param {UnevalReplacer} [replacer] + */ +export function uneval(value, replacer) { + /** @type {Map<any, string>} */ + const names = new Map(); + const reserved = new Set(); + const templates = new Set(); + const seen = new Set(); + + // the path to the value being walked, recorded as-is and only formatted + // by `error` — see `format_path` + /** @type {any[]} */ + const keys = []; + + /** @type {Map<any, JavaScriptSource>} */ + const custom = new Map(); + + /** + * @param {string} message + * @param {any} thing + * @returns {never} + */ + function error(message, thing) { + const path = format_path(keys, (key) => (is_primitive(key) ? stringify_primitive(key) : '...')); + throw new DevalueError(message, path, thing, value); + } + + /** @type {Map<string | bigint, number> | undefined} */ + let primitive_counts; + /** @type {Map<string | bigint, string> | undefined} */ + let primitives; + + /** @param {any} thing */ + function stringify_cached_primitive(thing) { + if ( + (typeof thing === 'string' && thing.length >= MIN_STRING_LENGTH) || + typeof thing === 'bigint' + ) { + primitives ??= new Map(); + let literal = primitives.get(thing); + if (literal === undefined) { + literal = stringify_primitive(thing); + primitives.set(thing, literal); + } + return literal; + } + return stringify_primitive(thing); + } + + /** @param {any} thing */ + function walk(thing) { + if (!is_primitive(thing)) { + if (seen.has(thing)) { + if (!names.has(thing)) names.set(thing, ''); + return; + } + + seen.add(thing); + + if (replacer) { + const fragment = replacer(thing, js); + + if (fragment) { + const source = JavaScriptSource.from(fragment); + custom.set(thing, source); + source.visit(walk, reserved, templates); + return; + } + + if (fragment !== undefined && fragment !== null && fragment !== false) { + throw new TypeError('Invalid uneval replacer result'); + } + } + + if (typeof thing === 'function') { + error(`Cannot stringify a function`, thing); + } + + const type = get_type(thing); + + switch (type) { + case 'BigInt': + case 'String': + walk(thing.valueOf()); + return; + + case 'Number': + case 'Boolean': + case 'Date': + case 'RegExp': + case 'URL': + case 'URLSearchParams': + return; + + case 'Array': + // Never scan the logical length of a dictionary-backed sparse array. + for (const i of valid_array_indices(thing)) { + keys.push(+i); + walk(thing[i]); + keys.pop(); + } + break; + + case 'Set': + for (const value of thing) walk(value); + break; + + case 'Map': + for (const [key, value] of thing) { + keys.push(MAP_KEY, key); + walk(key); + walk(value); + keys.pop(); + keys.pop(); + } + break; + + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Float16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': + case 'DataView': + // Buffer pools can contain unrelated, sensitive bytes. + if (!is_buffer(thing)) walk(thing.buffer); + return; + + case 'ArrayBuffer': + return; + + case 'Temporal.Duration': + case 'Temporal.Instant': + case 'Temporal.PlainDate': + case 'Temporal.PlainTime': + case 'Temporal.PlainDateTime': + case 'Temporal.PlainMonthDay': + case 'Temporal.PlainYearMonth': + case 'Temporal.ZonedDateTime': + return; + + default: + if (!is_plain_object(thing)) { + error(`Cannot stringify arbitrary non-POJOs`, thing); + } + + if (enumerable_symbols(thing).length > 0) { + error(`Cannot stringify POJOs with symbolic keys`, thing); + } + + for (const key of Object.keys(thing)) { + if (key === '__proto__') { + error(`Cannot stringify objects with __proto__ keys`, thing); + } + + keys.push(key); + walk(thing[key]); + keys.pop(); + } + } + } else if (typeof thing === 'symbol') { + error(`Cannot stringify a Symbol primitive`, thing); + } else if ( + (typeof thing === 'string' && thing.length >= MIN_STRING_LENGTH) || + typeof thing === 'bigint' + ) { + primitive_counts ??= new Map(); + primitive_counts.set(thing, (primitive_counts.get(thing) || 0) + 1); + } + } + + walk(value); + + let name_index = 0; + function next_name() { + let name; + do { + name = get_name(name_index++); + } while (reserved.has(name)); + return name; + } + + // Wait until every custom source has been visited before assigning names. + for (const thing of names.keys()) names.set(thing, next_name()); + if (primitive_counts) { + for (const [thing, count] of primitive_counts) { + if (count < 2) continue; + const name = next_name(); + const length = stringify_cached_primitive(thing).length; + // Include the declaration and IIFE overhead even if one already exists. + if (length * count > length + (count + 1) * name.length + 40) names.set(thing, name); + } + } + + // Reuse the traversal set to track declarations during serialization. + seen.clear(); + const inlining = custom.size > 0 ? new Set() : null; + + /** @type {Map<any, () => void>} */ + const initializers = new Map(); + + /** @type {string[]} */ + const statements = []; + + /** + * @param {any} thing + * @returns {string} + */ + function stringify(thing) { + const name = names.get(thing); + + if (name) { + if (!seen.has(thing)) { + if (is_primitive(thing)) { + seen.add(thing); + statements.push(`let ${name}=${stringify_cached_primitive(thing)}`); + return name; + } + const type = custom.has(thing) ? null : get_type(thing); + + switch (type) { + case 'Object': + seen.add(thing); + statements.push( + `let ${name}=${Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}'}` + ); + Object.keys(thing).forEach((key) => { + statements.push(`${name}${safe_prop(key)}=${stringify(thing[key])}`); + }); + break; + + case 'Array': { + seen.add(thing); + const indices = valid_array_indices(thing); + const array = + thing.length > 32 + 2 * indices.length + ? stringify_sparse_array(thing.length) + : `Array(${thing.length})`; + statements.push(`let ${name}=${array}`); + for (const i of indices) { + statements.push(`${name}[${i}]=${stringify(thing[i])}`); + } + break; + } + + case 'Set': + case 'Map': { + seen.add(thing); + /** @type {string[]} */ + const entries = []; + let initialized = false; + let statement_index = -1; + + // Collect a ready prefix until a reference needs the collection. + // Emit subsequent entries eagerly, preserving insertion order. + const initialize = () => { + if (initialized) return; + initialized = true; + initializers.delete(thing); + statements.push( + `let ${name}=new ${type}${entries.length ? `([${entries.join(',')}])` : ''}` + ); + }; + + initializers.set(thing, initialize); + + for (const entry of thing) { + const args = + type === 'Map' ? `${stringify(entry[0])},${stringify(entry[1])}` : stringify(entry); + + if (!initialized) { + entries.push(type === 'Map' ? `[${args}]` : args); + } else { + const call = `.${type === 'Map' ? 'set' : 'add'}(${args})`; + if (statement_index === statements.length - 1) { + statements[statement_index] += call; + } else { + statement_index = statements.push(name + call) - 1; + } + } + } + + initialize(); + break; + } + + default: + const str = actually_stringify(thing); + if (!seen.has(thing)) statements.push(`let ${name}=${str}`); + seen.add(thing); + } + } else { + initializers.get(thing)?.(); + } + + return name; + } + + if (is_primitive(thing)) { + return stringify_cached_primitive(thing); + } + + if (inlining === null) return actually_stringify(thing); + + // A singly referenced value can still be part of a custom constructor's + // cycle. If inlining it re-enters itself, hoist it to break the cycle. + if (inlining.has(thing)) { + names.set(thing, next_name()); + return stringify(thing); + } + + inlining.add(thing); + const str = actually_stringify(thing); + inlining.delete(thing); + return names.get(thing) || str; + } + + /** + * @param {any} thing + * @returns {string} + */ + function actually_stringify(thing) { + const source = custom.get(thing); + + if (source) { + return source.render(stringify); + } + + const type = get_type(thing); + + switch (type) { + case 'Number': + case 'String': + case 'Boolean': + case 'BigInt': + return `Object(${stringify(thing.valueOf())})`; + + case 'RegExp': + const { source, flags } = thing; + return flags + ? `new RegExp(${stringify_string(source)},"${flags}")` + : `new RegExp(${stringify_string(source)})`; + + case 'Date': + return `new Date(${thing.getTime()})`; + + case 'URL': + return `new URL(${stringify_string(thing.toString())})`; + + case 'URLSearchParams': + return `new URLSearchParams(${stringify_string(thing.toString())})`; + + case 'Array': { + // For dense arrays (no holes), we iterate normally. + // When we encounter the first hole, we collect own indices + // to determine the sparseness, then decide between: + // - Array literal with holes: [,"a",,] (default) + // - Object.assign with a sparse-safe allocator (for very sparse arrays) + // Only the Object.assign path avoids iterating every slot, which + // is what protects against the DoS of e.g. `arr[1000000] = 1`. + let has_holes = false; + + let result = '['; + + for (let i = 0; i < thing.length; i += 1) { + if (i > 0) result += ','; + + if (Object.hasOwn(thing, i)) { + result += stringify(thing[i]); + } else if (!has_holes) { + // Decide between array literal and Object.assign. + // + // Array literal: holes are consecutive commas. + // For example, [, "a", ,] is written as [,"a",,]. + // Each hole costs 1 char (a comma). + // + // Object.assign: populated indices are listed explicitly. + // For example, [, "a", ,] would be written as + // Object.assign(sparse(3),{1:"a"}), where sparse(n) stands + // for the expression emitted by stringify_sparse_array(n). + // This avoids paying per-hole, but has fixed overhead for + // the allocator and wrapper, plus each index and colon. + // + // The serialized values are the same size either way, so + // the choice comes down to the structural overhead: + // + // Array literal overhead: + // 1 char per element or hole (comma separators) + // + 2 chars for "[" and "]" + // = L + 2 + // + // Object.assign overhead: + // "Object.assign(" — 14 chars + // + allocator expression — A chars + // + ",{" — 2 chars + // + for each populated element: + // index + ":" + "," — (d + 2) chars + // + "})" — 2 chars + // = (18 + A) + P * (d + 2) + // + // where L is the array length, P is the number of + // populated elements, A is the allocator length, and d + // is the number of digits in L (an upper bound per index). + // + // Object.assign is cheaper when: + // (18 + A) + P * (d + 2) < L + 2 + const populated_keys = valid_array_indices(/** @type {any[]} */ (thing)); + const population = populated_keys.length; + const d = String(thing.length).length; + const array = stringify_sparse_array(thing.length); + + const hole_cost = thing.length + 2; + const sparse_cost = array.length + 18 + population * (d + 2); + + if (hole_cost > sparse_cost) { + const entries = populated_keys.map((k) => `${k}:${stringify(thing[k])}`).join(','); + return `Object.assign(${array},{${entries}})`; + } + + has_holes = true; + } + // else: already decided on array literal, hole is just an empty slot + // (the comma separator is all we need — no content for this position) + } + + const tail = thing.length === 0 || Object.hasOwn(thing, thing.length - 1) ? '' : ','; + return result + tail + ']'; + } + + case 'Set': + return `new Set([${Array.from(thing, stringify).join(',')}])`; + + case 'Map': { + const entries = Array.from(thing, ([k, v]) => `[${stringify(k)},${stringify(v)}]`); + return `new Map([${entries.join(',')}])`; + } + + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Float16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'BigInt64Array': + case 'BigUint64Array': { + if (is_buffer(thing)) thing = new Uint8Array(thing); + + if (thing.buffer.byteLength % thing.BYTES_PER_ELEMENT !== 0) { + return `new ${type}(${stringify(thing.buffer)},${thing.byteOffset},${thing.length})`; + } + + let str = `new ${type}`; + + if (!names.has(thing.buffer)) { + str += `([${stringify_typed_array_elements(type, thing.buffer)}])`; + } else { + str += `(${stringify(thing.buffer)})`; + } + + // handle subarrays + if (thing.byteLength !== thing.buffer.byteLength) { + const start = thing.byteOffset / thing.BYTES_PER_ELEMENT; + const end = start + thing.length; + str += `.subarray(${start},${end})`; + } + + return str; + } + + case 'DataView': { + let str = `new DataView`; + + if (!names.has(thing.buffer)) { + str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`; + } else { + str += `(${stringify(thing.buffer)}`; + } + + // handle subviews + if (thing.byteLength !== thing.buffer.byteLength) { + str += `,${thing.byteOffset},${thing.byteLength}`; + } + + return str + ')'; + } + + case 'ArrayBuffer': { + const ui8 = new Uint8Array(thing); + return `new Uint8Array([${ui8.toString()}]).buffer`; + } + + case 'Temporal.Duration': + case 'Temporal.Instant': + case 'Temporal.PlainDate': + case 'Temporal.PlainTime': + case 'Temporal.PlainDateTime': + case 'Temporal.PlainMonthDay': + case 'Temporal.PlainYearMonth': + case 'Temporal.ZonedDateTime': + return `${type}.from(${stringify_string(thing.toString())})`; + + default: + const keys = Object.keys(thing); + const obj = keys.map((key) => `${safe_key(key)}:${stringify(thing[key])}`).join(','); + const proto = Object.getPrototypeOf(thing); + if (proto === null) { + return keys.length > 0 ? `{${obj},__proto__:null}` : `{__proto__:null}`; + } + + return `{${obj}}`; + } + } + + const str = stringify(value); + + if (statements.length === 0) { + return str; + } + + return `(function(){${statements.join(';')};return ${str}}())`; +} + +/** + * Serialize the elements of `buffer`, read as `type`, as a comma-separated list. + * The view is created from `type` rather than from the serialized value's own + * constructor, which may be a subclass like Node's `Buffer` whose `toString` + * decodes the bytes instead of listing them. + * `BigInt64Array`/`BigUint64Array` elements are bigints and must be written + * with an `n` suffix, otherwise the emitted `new BigInt64Array([...])` throws. + * @param {string} type + * @param {ArrayBufferLike} buffer + */ +function stringify_typed_array_elements(type, buffer) { + const array = new /** @type {any} */ (globalThis)[type](buffer); + + if (type === 'BigInt64Array' || type === 'BigUint64Array') { + return Array.from(array, (element) => `${element}n`).join(','); + } + + // Float arrays can hold `-0`, which `toString()` collapses to `"0"`, silently + // losing the sign on round-trip. Emit `-0` explicitly for those elements. + if ( + array instanceof Float32Array || + array instanceof Float64Array || + (typeof Float16Array !== 'undefined' && array instanceof Float16Array) + ) { + return Array.from(array, (element) => (Object.is(element, -0) ? '-0' : `${element}`)).join(','); + } + + return array.toString(); +} + +/** @param {string} c */ +function escape_unsafe_char(c) { + return escaped[c] || c; +} + +/** @param {string} str */ +function escape_unsafe_chars(str) { + return str.replace(unsafe_chars, escape_unsafe_char); +} + +/** @param {string} key */ +function safe_key(key) { + return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escape_unsafe_chars(JSON.stringify(key)); +} + +/** @param {string} key */ +function safe_prop(key) { + return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) + ? `.${key}` + : `[${escape_unsafe_chars(JSON.stringify(key))}]`; +} + +/** @param {any} thing */ +function stringify_primitive(thing) { + const type = typeof thing; + if (type === 'string') return stringify_string(thing); + if (thing === void 0) return 'void 0'; + if (thing === 0 && 1 / thing < 0) return '-0'; + const str = String(thing); + if (type === 'number') return str.replace(/^(-)?0\./, '$1.'); + if (type === 'bigint') return thing + 'n'; + return str; +} diff --git a/apps/web/.output/server/node_modules/devalue/src/utils.js b/apps/web/.output/server/node_modules/devalue/src/utils.js new file mode 100644 index 0000000..ce3bd7b --- /dev/null +++ b/apps/web/.output/server/node_modules/devalue/src/utils.js @@ -0,0 +1,260 @@ +import { MAX_ARRAY_INDEX, MAX_ARRAY_LEN } from './constants.js'; + +const name_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$'; +const reserved_names = + /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/; + +/** @type {Record<string, string>} */ +export const escaped = { + '<': '\\u003C', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\u2028': '\\u2028', + '\u2029': '\\u2029' +}; + +export class DevalueError extends Error { + /** + * @param {string} message + * @param {string[]} keys + * @param {any} [value] - The value that failed to be serialized + * @param {any} [root] - The root value being serialized + */ + constructor(message, keys, value, root) { + super(message); + this.name = 'DevalueError'; + this.path = keys.join(''); + this.value = value; + this.root = root; + } +} + +/** + * Marks a Map key on the path being serialized. The key itself is recorded + * right after the marker, so nothing is formatted or allocated per entry. + */ +export const MAP_KEY = Symbol(); + +/** + * Formats the path recorded on the way to the value being serialized — a + * property key, an array index, or `MAP_KEY` followed by a Map key — into + * the segments a `DevalueError` joins. Only runs when an error is raised. + * @param {any[]} keys + * @param {(key: any) => string} format_map_key + * @returns {string[]} + */ +export function format_path(keys, format_map_key) { + /** @type {string[]} */ + const path = []; + + for (let i = 0; i < keys.length; i += 1) { + const segment = keys[i]; + + if (segment === MAP_KEY) { + path.push(`.get(${format_map_key(keys[++i])})`); + } else if (typeof segment === 'number') { + path.push(`[${segment}]`); + } else { + path.push(stringify_key(segment)); + } + } + + return path; +} + +/** @param {any} thing */ +export function is_primitive(thing) { + return thing === null || (typeof thing !== 'object' && typeof thing !== 'function'); +} + +const object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames(Object.prototype) + .sort() + .join('\0'); + +/** @param {any} thing */ +export function is_plain_object(thing) { + const proto = Object.getPrototypeOf(thing); + + return ( + proto === Object.prototype || + proto === null || + Object.getPrototypeOf(proto) === null || + Object.getOwnPropertyNames(proto).sort().join('\0') === object_proto_names + ); +} + +/** @param {any} thing */ +export function get_type(thing) { + return Object.prototype.toString.call(thing).slice(8, -1); +} + +/** @param {any} thing */ +export function is_buffer(thing) { + return typeof Buffer !== 'undefined' && Buffer.isBuffer(thing); +} + +/** + * Emit an array whose storage is not proportional to its declared length. + * Touching and deleting the largest valid index forces dictionary elements + * before setting the length; assigning .length on [] can still eagerly allocate. + * @param {number} length + */ +export function stringify_sparse_array(length) { + return `(function(a){a[${MAX_ARRAY_INDEX}]=0;delete a[${MAX_ARRAY_INDEX}];a.length=${length};return a}([]))`; +} + +/** Returns the compact JavaScript identifier at `index`. @param {number} index */ +export function get_name(index) { + let name = ''; + + do { + name = name_chars[index % name_chars.length] + name; + index = ~~(index / name_chars.length) - 1; + } while (index >= 0); + + return reserved_names.test(name) ? `${name}0` : name; +} + +// characters `stringify_string` always escapes: quote, backslash, `<`, control +// characters and the line/paragraph separators. Surrogates are only escaped +// when unpaired, which `isWellFormed` detects natively, so well-formed pairs +// such as emoji stay on the fast path +const needs_escape = /["<\\\u0000-\u001f\u2028\u2029]/; + +// `JSON.stringify` already emits every escape we need except these three, +// which it leaves raw: `<` (so output is safe inside a `<script>` tag) and +// the line/paragraph separators (kept escaped for engines predating ES2019, +// which rejected them in string literals). It also escapes unpaired +// surrogates as `\\udXXX`, so the result survives UTF-8 transport +const json_leaves_raw = /[<\u2028\u2029]/g; + +/** @type {Record<string, string>} */ +const raw_escapes = { '<': '\\u003C', '\u2028': '\\u2028', '\u2029': '\\u2029' }; + +/** @param {string} char */ +function escape_raw(char) { + return raw_escapes[char]; +} + +/** @param {string} str */ +export function stringify_string(str) { + // the common case: nothing to escape, no per-character work + if (!needs_escape.test(str) && str.isWellFormed()) return `"${str}"`; + + return JSON.stringify(str).replace(json_leaves_raw, escape_raw); +} + +// Property names repeat across the values of one call and across calls, so +// their quoted form is cached. Names come from the data being serialized, so +// the cache is bounded in both directions: only short names are kept, and the +// cache is emptied once it holds 1024 of them. Longer names are quoted on +// every visit, like every other string. +const MAX_CACHED_KEY_LENGTH = 64; + +/** @type {Map<string, string>} */ +const quoted_keys = new Map(); + +/** @param {string} key */ +export function quote_key(key) { + if (key.length > MAX_CACHED_KEY_LENGTH) return stringify_string(key); + + let quoted = quoted_keys.get(key); + + if (quoted === undefined) { + if (quoted_keys.size >= 1024) quoted_keys.clear(); + quoted = stringify_string(key); + quoted_keys.set(key, quoted); + } + + return quoted; +} + +/** @param {Record<string | symbol, any>} object */ +export function enumerable_symbols(object) { + const symbols = Object.getOwnPropertySymbols(object); + // Own symbols always have a descriptor; the optional chain only satisfies the lib's + // `PropertyDescriptor | undefined` return type. + return symbols.length === 0 + ? symbols + : symbols.filter((symbol) => Object.getOwnPropertyDescriptor(object, symbol)?.enumerable); +} + +const is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/; + +/** @param {string} key */ +function stringify_key(key) { + return is_identifier.test(key) ? '.' + key : '[' + JSON.stringify(key) + ']'; +} + +/** @param {number} n */ +export function is_valid_array_index(n) { + if (!Number.isInteger(n)) return false; + if (n < 0) return false; + if (n > MAX_ARRAY_INDEX) return false; + return true; +} + +/** @param {number} n */ +export function is_valid_array_len(n) { + if (!Number.isInteger(n)) return false; + if (n < 0) return false; + if (n > MAX_ARRAY_LEN) return false; + return true; +} + +/** @param {string} s */ +function is_valid_array_index_string(s) { + if (s.length === 0) return false; + if (s.length > 1 && s.charCodeAt(0) === 48) return false; // leading zero + for (let i = 0; i < s.length; i++) { + const c = s.charCodeAt(i); + if (c < 48 || c > 57) return false; + } + // by this point we know it's a string of digits, but it has to be within + // the range of valid array indices + return is_valid_array_index(+s); +} + +/** + * Returns the length of the leading run of valid array indices in `keys`. + * @param {readonly string[]} keys + */ +function array_index_cut(keys) { + for (var i = keys.length - 1; i >= 0; i--) { + if (is_valid_array_index_string(keys[i])) { + break; + } + } + return i + 1; +} + +/** + * Finds the populated indices of an array. + * @param {unknown[]} array + */ +export function valid_array_indices(array) { + const keys = Object.keys(array); + keys.length = array_index_cut(keys); + return keys; +} + +/** + * Given the own enumerable string keys of an array-like value, in property + * order, returns the leading run of them that are valid array indices. + * + * This is the filtering half of the `indicesOf` stringify operation, + * exposed so that custom operations — which typically already have the keys + * in hand, e.g. from a foreign runtime — don't have to reimplement it. + * + * Does not modify `keys`. + * + * @param {readonly string[]} keys + * @returns {string[]} + */ +export function filter_array_indices(keys) { + return keys.slice(0, array_index_cut(keys)); +} diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js b/apps/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js new file mode 100644 index 0000000..ebb0d90 --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js @@ -0,0 +1,77 @@ +"use strict"; +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromCodePoint = void 0; +exports.replaceCodePoint = replaceCodePoint; +exports.decodeCodePoint = decodeCodePoint; +const decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +exports.fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins +(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => { + let output = ""; + if (codePoint > 65535) { + codePoint -= 65536; + output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296); + codePoint = 56320 | (codePoint & 1023); + } + output += String.fromCharCode(codePoint); + return output; +}); +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 55296 && codePoint <= 57343) || + codePoint > 1114111) { + return 65533; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +function decodeCodePoint(codePoint) { + return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); +} +//# sourceMappingURL=decode-codepoint.js.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/decode.js b/apps/web/.output/server/node_modules/entities/dist/commonjs/decode.js new file mode 100644 index 0000000..771ab7d --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/decode.js @@ -0,0 +1,568 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.xmlDecodeTree = exports.htmlDecodeTree = exports.replaceCodePoint = exports.fromCodePoint = exports.decodeCodePoint = exports.EntityDecoder = exports.DecodingMode = void 0; +exports.determineBranch = determineBranch; +exports.decodeHTML = decodeHTML; +exports.decodeHTMLAttribute = decodeHTMLAttribute; +exports.decodeHTMLStrict = decodeHTMLStrict; +exports.decodeXML = decodeXML; +const decode_codepoint_js_1 = require("./decode-codepoint.js"); +const decode_data_html_js_1 = require("./generated/decode-data-html.js"); +const decode_data_xml_js_1 = require("./generated/decode-data-xml.js"); +const bin_trie_flags_js_1 = require("./internal/bin-trie-flags.js"); +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +const TO_LOWER_BIT = 32; +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); +} +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); +} +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode || (exports.DecodingMode = DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +class EntityDecoder { + constructor( + /** The tree used to decode entities. */ + // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + /** The number of characters that have been consumed in the current run. */ + this.runConsumed = 0; + } + /** Resets the instance to make it reusable. */ + startEntity(decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + this.runConsumed = 0; + } + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(input, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (input.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(input, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(input, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(input, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(input, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(input, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(input, offset); + } + } + } + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericStart(input, offset) { + if (offset >= input.length) { + return -1; + } + if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(input, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(input, offset); + } + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericHex(input, offset) { + while (offset < input.length) { + const char = input.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + // Convert hex digit to value (0-15); 'a'/'A' -> 10. + const digit = char <= CharCodes.NINE + ? char - CharCodes.ZERO + : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10; + this.result = this.result * 16 + digit; + this.consumed++; + offset++; + } + else { + return this.emitNumericEntity(char, 3); + } + } + return -1; // Incomplete entity + } + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericDecimal(input, offset) { + while (offset < input.length) { + const char = input.charCodeAt(offset); + if (isNumber(char)) { + this.result = this.result * 10 + (char - CharCodes.ZERO); + this.consumed++; + offset++; + } + else { + return this.emitNumericEntity(char, 2); + } + } + return -1; // Incomplete entity + } + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + emitNumericEntity(lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + } + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNamedEntity(input, offset) { + const { decodeTree } = this; + let current = decodeTree[this.treeIndex]; + // The length is the number of bytes of the value, including the current byte. + let valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; + while (offset < input.length) { + // Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set. + if (valueLength === 0 && (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) { + const runLength = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */ + // If we are starting a run, check the first char. + if (this.runConsumed === 0) { + const firstChar = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE; + if (input.charCodeAt(offset) !== firstChar) { + return this.result === 0 + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + offset++; + this.excess++; + this.runConsumed++; + } + // Check remaining characters in the run. + while (this.runConsumed < runLength) { + if (offset >= input.length) { + return -1; + } + const charIndexInPacked = this.runConsumed - 1; + const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)]; + const expectedChar = charIndexInPacked % 2 === 0 + ? packedWord & 0xff + : (packedWord >> 8) & 0xff; + if (input.charCodeAt(offset) !== expectedChar) { + this.runConsumed = 0; + return this.result === 0 + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + offset++; + this.excess++; + this.runConsumed++; + } + this.runConsumed = 0; + this.treeIndex += 1 + (runLength >> 1); + current = decodeTree[this.treeIndex]; + valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; + } + if (offset >= input.length) + break; + const char = input.charCodeAt(offset); + /* + * Implicit semicolon handling for nodes that require a semicolon but + * don't have an explicit ';' branch stored in the trie. If we have + * a value on the current node, it requires a semicolon, and the + * current input character is a semicolon, emit the entity using the + * current node (without descending further). + */ + if (char === CharCodes.SEMI && + valueLength !== 0 && + (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict && + (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) === 0) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + // Increment offset & excess for next iteration + offset++; + this.excess++; + } + return -1; + } + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + emitNotTerminatedNamedEntity() { + var _a; + const { result, decodeTree } = this; + const valueLength = (decodeTree[result] & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + } + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + emitNamedEntityData(result, valueLength, consumed) { + const { decodeTree } = this; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & + ~(bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH | bin_trie_flags_js_1.BinTrieFlags.FLAG13) + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + } + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + end() { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + } +} +exports.EntityDecoder = EntityDecoder; +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + let returnValue = ""; + const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += (0, decode_codepoint_js_1.fromCodePoint)(data))); + return function decodeWithTrie(input, decodeMode) { + let lastIndex = 0; + let offset = 0; + while ((offset = input.indexOf("&", offset)) >= 0) { + returnValue += input.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + const length = decoder.write(input, + // Skip the "&" + offset + 1); + if (length < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + length; + // If `length` is 0, skip the current `&` and continue. + offset = length === 0 ? lastIndex + 1 : lastIndex; + } + const result = returnValue + input.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + returnValue = ""; + return result; + }; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +function determineBranch(decodeTree, current, nodeIndex, char) { + const branchCount = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + const value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIndex + value] - 1; + } + // Case 3: Multiple branches encoded in packed dictionary (two keys per uint16) + const packedKeySlots = (branchCount + 1) >> 1; + /* + * Treat packed keys as a virtual sorted array of length `branchCount`. + * Key(i) = low byte for even i, high byte for odd i in slot i>>1. + */ + let lo = 0; + let hi = branchCount - 1; + while (lo <= hi) { + const mid = (lo + hi) >>> 1; + const slot = mid >> 1; + const packed = decodeTree[nodeIndex + slot]; + const midKey = (packed >> ((mid & 1) * 8)) & 0xff; + if (midKey < char) { + lo = mid + 1; + } + else if (midKey > char) { + hi = mid - 1; + } + else { + return decodeTree[nodeIndex + packedKeySlots + mid]; + } + } + return -1; +} +const htmlDecoder = /* #__PURE__ */ getDecoder(decode_data_html_js_1.htmlDecodeTree); +const xmlDecoder = /* #__PURE__ */ getDecoder(decode_data_xml_js_1.xmlDecodeTree); +/** + * Decodes an HTML string. + * + * @param htmlString The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +function decodeHTML(htmlString, mode = DecodingMode.Legacy) { + return htmlDecoder(htmlString, mode); +} +/** + * Decodes an HTML string in an attribute. + * + * @param htmlAttribute The string to decode. + * @returns The decoded string. + */ +function decodeHTMLAttribute(htmlAttribute) { + return htmlDecoder(htmlAttribute, DecodingMode.Attribute); +} +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param htmlString The string to decode. + * @returns The decoded string. + */ +function decodeHTMLStrict(htmlString) { + return htmlDecoder(htmlString, DecodingMode.Strict); +} +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param xmlString The string to decode. + * @returns The decoded string. + */ +function decodeXML(xmlString) { + return xmlDecoder(xmlString, DecodingMode.Strict); +} +var decode_codepoint_js_2 = require("./decode-codepoint.js"); +Object.defineProperty(exports, "decodeCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.decodeCodePoint; } }); +Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } }); +Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } }); +// Re-export for use by eg. htmlparser2 +var decode_data_html_js_2 = require("./generated/decode-data-html.js"); +Object.defineProperty(exports, "htmlDecodeTree", { enumerable: true, get: function () { return decode_data_html_js_2.htmlDecodeTree; } }); +var decode_data_xml_js_2 = require("./generated/decode-data-xml.js"); +Object.defineProperty(exports, "xmlDecodeTree", { enumerable: true, get: function () { return decode_data_xml_js_2.xmlDecodeTree; } }); +//# sourceMappingURL=decode.js.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js b/apps/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js new file mode 100644 index 0000000..c02d503 --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js @@ -0,0 +1,7 @@ +"use strict"; +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.htmlDecodeTree = void 0; +const decode_shared_js_1 = require("../internal/decode-shared.js"); +exports.htmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg"); +//# sourceMappingURL=decode-data-html.js.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js b/apps/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js new file mode 100644 index 0000000..9edfb90 --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js @@ -0,0 +1,7 @@ +"use strict"; +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.xmlDecodeTree = void 0; +const decode_shared_js_1 = require("../internal/decode-shared.js"); +exports.xmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg"); +//# sourceMappingURL=decode-data-xml.js.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js b/apps/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js new file mode 100644 index 0000000..c649d6a --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BinTrieFlags = void 0; +/** + * Bit flags & masks for the binary trie encoding used for entity decoding. + * + * Bit layout (16 bits total): + * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value) + * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';'). + * If valueLength==0: compact run flag. + * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run) + * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char + */ +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags || (exports.BinTrieFlags = BinTrieFlags = {})); +//# sourceMappingURL=bin-trie-flags.js.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js b/apps/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js new file mode 100644 index 0000000..36d50f5 --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.decodeBase64 = decodeBase64; +/* + * Shared base64 decode helper for generated decode data. + * Assumes global atob is available. + */ +function decodeBase64(input) { + const binary = + // eslint-disable-next-line n/no-unsupported-features/node-builtins + typeof atob === "function" + ? // Browser (and Node >=16) + // eslint-disable-next-line n/no-unsupported-features/node-builtins + atob(input) + : // Older Node versions (<16) + // eslint-disable-next-line n/no-unsupported-features/node-builtins + typeof Buffer.from === "function" + ? // eslint-disable-next-line n/no-unsupported-features/node-builtins + Buffer.from(input, "base64").toString("binary") + : // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api + new Buffer(input, "base64").toString("binary"); + const evenLength = binary.length & ~1; // Round down to even length + const out = new Uint16Array(evenLength / 2); + for (let index = 0, outIndex = 0; index < evenLength; index += 2) { + const lo = binary.charCodeAt(index); + const hi = binary.charCodeAt(index + 1); + out[outIndex++] = lo | (hi << 8); + } + return out; +} +//# sourceMappingURL=decode-shared.js.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/entities/dist/commonjs/package.json b/apps/web/.output/server/node_modules/entities/dist/commonjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/dist/commonjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/apps/web/.output/server/node_modules/entities/package.json b/apps/web/.output/server/node_modules/entities/package.json new file mode 100644 index 0000000..2adbfaf --- /dev/null +++ b/apps/web/.output/server/node_modules/entities/package.json @@ -0,0 +1,120 @@ +{ + "name": "entities", + "version": "7.0.1", + "description": "Encode & decode XML and HTML entities with ease & speed", + "keywords": [ + "html entities", + "entity decoder", + "entity encoding", + "html decoding", + "html encoding", + "xml decoding", + "xml encoding" + ], + "repository": { + "type": "git", + "url": "https://github.com/fb55/entities.git" + }, + "funding": "https://github.com/fb55/entities?sponsor=1", + "license": "BSD-2-Clause", + "author": "Felix Boehm <me@feedic.com>", + "sideEffects": false, + "type": "module", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/commonjs/index.d.ts", + "default": "./dist/commonjs/index.js" + } + }, + "./decode": { + "import": { + "types": "./dist/esm/decode.d.ts", + "default": "./dist/esm/decode.js" + }, + "require": { + "types": "./dist/commonjs/decode.d.ts", + "default": "./dist/commonjs/decode.js" + } + }, + "./escape": { + "import": { + "types": "./dist/esm/escape.d.ts", + "default": "./dist/esm/escape.js" + }, + "require": { + "types": "./dist/commonjs/escape.d.ts", + "default": "./dist/commonjs/escape.js" + } + } + }, + "main": "./dist/commonjs/index.js", + "module": "./dist/esm/index.js", + "types": "./dist/commonjs/index.d.ts", + "files": [ + "decode.js", + "decode.d.ts", + "escape.js", + "escape.d.ts", + "dist", + "src", + "!**/*.spec.ts" + ], + "scripts": { + "build:docs": "typedoc --hideGenerator src/index.ts", + "build:encode-trie": "node --import=tsx scripts/write-encode-map.ts", + "build:trie": "node --import=tsx scripts/write-decode-map.ts", + "benchmark": "node --import=tsx scripts/benchmark.ts", + "format": "npm run format:es && npm run format:biome", + "format:es": "npm run lint:es -- --fix", + "format:biome": "biome check --fix .", + "lint": "npm run lint:es && npm run lint:ts && npm run lint:biome", + "lint:es": "eslint . --ignore-path .gitignore", + "lint:biome": "biome check .", + "lint:ts": "tsc --noEmit", + "prepublishOnly": "tshy", + "test": "npm run test:vi && npm run lint", + "test:vi": "vitest run" + }, + "devDependencies": { + "@biomejs/biome": "^2.3.11", + "@types/node": "^25.0.9", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", + "@vitest/coverage-v8": "^3.2.4", + "@types/he": "^1.2.3", + "eslint": "^8.57.1", + "eslint-config-biome": "^2.1.3", + "eslint-plugin-n": "^17.23.2", + "eslint-plugin-unicorn": "^56.0.1", + "he": "^1.2.0", + "html-entities": "^2.6.0", + "parse-entities": "^4.0.2", + "tinybench": "^5.1.0", + "tshy": "^3.1.0", + "tsx": "^4.21.0", + "typedoc": "^0.28.16", + "typescript": "^5.9.3", + "vitest": "^3.2.4" + }, + "engines": { + "node": ">=0.12" + }, + "tshy": { + "exclude": [ + "**/*.spec.ts", + "**/__fixtures__/*", + "**/__tests__/*", + "**/__snapshots__/*" + ], + "exports": { + ".": "./src/index.ts", + "./decode": "./src/decode.ts", + "./escape": "./src/escape.ts" + } + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js b/apps/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js new file mode 100644 index 0000000..46fed0f --- /dev/null +++ b/apps/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js @@ -0,0 +1,344 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.estreeWalker = {})); +}(this, (function (exports) { 'use strict'; + + // @ts-check + /** @typedef { import('estree').BaseNode} BaseNode */ + + /** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; + }} WalkerContext */ + + class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + + class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ + + class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {AsyncHandler} */ + this.enter = enter; + + /** @type {AsyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + async visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + await this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!(await this.visit(value[i], node, key, i))) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + await this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + await this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./sync.js').SyncHandler} SyncHandler */ + /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ + function walk(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); + } + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ + async function asyncWalk(ast, { enter, leave }) { + const instance = new AsyncWalker(enter, leave); + return await instance.visit(ast, null); + } + + exports.asyncWalk = asyncWalk; + exports.walk = walk; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/apps/web/.output/server/node_modules/estree-walker/package.json b/apps/web/.output/server/node_modules/estree-walker/package.json new file mode 100644 index 0000000..08014bb --- /dev/null +++ b/apps/web/.output/server/node_modules/estree-walker/package.json @@ -0,0 +1,37 @@ +{ + "name": "estree-walker", + "description": "Traverse an ESTree-compliant AST", + "version": "2.0.2", + "private": false, + "author": "Rich Harris", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/Rich-Harris/estree-walker" + }, + "type": "commonjs", + "main": "./dist/umd/estree-walker.js", + "module": "./dist/esm/estree-walker.js", + "exports": { + "require": "./dist/umd/estree-walker.js", + "import": "./dist/esm/estree-walker.js" + }, + "types": "types/index.d.ts", + "scripts": { + "prepublishOnly": "npm run build && npm test", + "build": "tsc && rollup -c", + "test": "uvu test" + }, + "devDependencies": { + "@types/estree": "0.0.42", + "rollup": "^2.10.9", + "typescript": "^3.7.5", + "uvu": "^0.5.1" + }, + "files": [ + "src", + "dist", + "types", + "README.md" + ] +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/index.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/index.mjs new file mode 100644 index 0000000..90d427e --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/index.mjs @@ -0,0 +1,67 @@ +import { removeEffect, addEffect, GroupAnimationWithThen } from 'motion-dom'; +import { removeItem } from 'motion-utils'; +import { animateSequence } from './sequence.mjs'; +import { animateSubject } from './subject.mjs'; + +function isSequence(value) { + return Array.isArray(value) && value.some(Array.isArray); +} +/** + * Creates an animation function that is optionally scoped + * to a specific element. + */ +function createScopedAnimate(options = {}) { + const { scope, reduceMotion, skipAnimations } = options; + /** + * Implementation + */ + function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) { + let animations = []; + let animationOnComplete; + const inherited = {}; + if (reduceMotion !== undefined) + inherited.reduceMotion = reduceMotion; + if (skipAnimations !== undefined) + inherited.skipAnimations = skipAnimations; + if (isSequence(subjectOrSequence)) { + const { onComplete, ...sequenceOptions } = optionsOrKeyframes || {}; + if (typeof onComplete === "function") { + animationOnComplete = onComplete; + } + animations = animateSequence(subjectOrSequence, { ...inherited, ...sequenceOptions }, scope); + } + else { + // Extract top-level onComplete so it doesn't get applied per-value + const { onComplete, ...rest } = options || {}; + if (typeof onComplete === "function") { + animationOnComplete = onComplete; + } + animations = animateSubject(subjectOrSequence, optionsOrKeyframes, { ...inherited, ...rest }, scope); + } + const animation = new GroupAnimationWithThen(animations); + if (animationOnComplete) { + animation.finished.then(animationOnComplete); + } + if (scope) { + scope.animations.push(animation); + animation.finished.then(() => { + removeItem(scope.animations, animation); + }); + } + return animation; + } + return scopedAnimate; +} +const animate = Object.assign(createScopedAnimate(), { + /** + * Register an effect so `animate()` can animate the subjects it + * claims, for instance `animate.addEffect(threeEffect)`. The most + * recently added effect is tested first. DOM elements are always + * animated directly. + */ + addEffect, + removeEffect, +}); + +export { animate, createScopedAnimate }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs new file mode 100644 index 0000000..3888e74 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs @@ -0,0 +1,23 @@ +import { resolveElements } from 'motion-dom'; +import { isDOMKeyframes } from '../utils/is-dom-keyframes.mjs'; + +function resolveSubjects(subject, keyframes, scope, selectorCache) { + if (subject == null) { + return []; + } + if (typeof subject === "string" && isDOMKeyframes(keyframes)) { + return resolveElements(subject, scope, selectorCache); + } + else if (subject instanceof NodeList) { + return Array.from(subject); + } + else if (Array.isArray(subject)) { + return subject.filter((s) => s != null); + } + else { + return [subject]; + } +} + +export { resolveSubjects }; +//# sourceMappingURL=resolve-subjects.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/sequence.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/sequence.mjs new file mode 100644 index 0000000..c19af7a --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/sequence.mjs @@ -0,0 +1,36 @@ +import { motionValue, spring } from 'motion-dom'; +import { createAnimationsFromSequence } from '../sequence/create.mjs'; +import { animateSubject } from './subject.mjs'; + +function animateSequence(sequence, options, scope) { + const animations = []; + /** + * Pre-process: replace function segments with MotionValue segments, + * subscribe callbacks immediately + */ + const processedSequence = sequence.map((segment) => { + if (Array.isArray(segment) && typeof segment[0] === "function") { + const callback = segment[0]; + const mv = motionValue(0); + mv.on("change", callback); + if (segment.length === 1) { + return [mv, [0, 1]]; + } + else if (segment.length === 2) { + return [mv, [0, 1], segment[1]]; + } + else { + return [mv, segment[1], segment[2]]; + } + } + return segment; + }); + const animationDefinitions = createAnimationsFromSequence(processedSequence, options, scope, { spring }); + animationDefinitions.forEach(({ keyframes, transition }, subject) => { + animations.push(...animateSubject(subject, keyframes, transition)); + }); + return animations; +} + +export { animateSequence }; +//# sourceMappingURL=sequence.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/subject.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/subject.mjs new file mode 100644 index 0000000..3a5a718 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animate/subject.mjs @@ -0,0 +1,62 @@ +import { animateSingleValue, animateElement, visualElementStore, animateEffectSubject, propEffect, findEffect, isMotionValue } from 'motion-dom'; +import { invariant } from 'motion-utils'; +import { isDOMKeyframes } from '../utils/is-dom-keyframes.mjs'; +import { resolveSubjects } from './resolve-subjects.mjs'; + +function isSingleValue(subject, keyframes) { + return (isMotionValue(subject) || + typeof subject === "number" || + (typeof subject === "string" && !isDOMKeyframes(keyframes))); +} +/** + * Implementation + */ +function animateSubject(subject, keyframes, options, scope) { + const animations = []; + if (isSingleValue(subject, keyframes)) { + animations.push(animateSingleValue(subject, isDOMKeyframes(keyframes) + ? keyframes.default || keyframes + : keyframes, options ? options.default || options : options)); + } + else { + // Gracefully handle null/undefined subjects (e.g., from querySelector returning null) + if (subject == null) { + return animations; + } + const subjects = resolveSubjects(subject, keyframes, scope); + const numSubjects = subjects.length; + invariant(Boolean(numSubjects), "No valid elements provided.", "no-valid-elements"); + for (let i = 0; i < numSubjects; i++) { + const thisSubject = subjects[i]; + const transition = { ...options }; + /** + * Resolve stagger function if provided. + */ + if ("delay" in transition && + typeof transition.delay === "function") { + transition.delay = transition.delay(i, numSubjects); + } + if (thisSubject instanceof Element) { + /** + * An element already owned by a VisualElement (a <motion.*> + * component or animateLayout()) animates its values so they + * share one renderer. Anything else is driven through + * styleEffect (or svgEffect) and the DOM keyframe resolver, + * without creating a VisualElement. + */ + animations.push(...animateElement(thisSubject, keyframes, transition, visualElementStore.get(thisSubject))); + } + else { + /** + * Registered effects (animate.addEffect) claim non-DOM + * subjects before we fall back to writing plain properties. + */ + animations.push(...animateEffectSubject(findEffect(thisSubject) ?? propEffect, thisSubject, keyframes, transition)); + } + } + } + return animations; +} + +export { animateSubject }; +//# sourceMappingURL=subject.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs new file mode 100644 index 0000000..ce71645 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs @@ -0,0 +1,110 @@ +import { resolveElements, getValueTransition, getAnimationMap, animationMapKey, getComputedStyle, fillWildcards, applyPxDefaults, NativeAnimation } from 'motion-dom'; +import { invariant, secondsToMilliseconds } from 'motion-utils'; + +function animateElements(elementOrSelector, keyframes, options, scope) { + // Gracefully handle null/undefined elements (e.g., from querySelector returning null) + if (elementOrSelector == null) { + return []; + } + const elements = resolveElements(elementOrSelector, scope); + const numElements = elements.length; + invariant(Boolean(numElements), "No valid elements provided.", "no-valid-elements"); + /** + * WAAPI doesn't support interrupting animations. + * + * Therefore, starting animations requires a three-step process: + * 1. Stop existing animations (write styles to DOM) + * 2. Resolve keyframes (read styles from DOM) + * 3. Create new animations (write styles to DOM) + * + * The hybrid `animate()` function uses AsyncAnimation to resolve + * keyframes before creating new animations, which removes style + * thrashing. Here, we have much stricter filesize constraints. + * Therefore we do this in a synchronous way that ensures that + * at least within `animate()` calls there is no style thrashing. + * + * In the motion-native-animate-mini-interrupt benchmark this + * was 80% faster than a single loop. + */ + const animationDefinitions = []; + /** + * Step 1: Build options and stop existing animations (write) + */ + for (let i = 0; i < numElements; i++) { + const element = elements[i]; + const elementTransition = { ...options }; + /** + * Resolve stagger function if provided. + */ + if (typeof elementTransition.delay === "function") { + elementTransition.delay = elementTransition.delay(i, numElements); + } + for (const valueName in keyframes) { + let valueKeyframes = keyframes[valueName]; + if (!Array.isArray(valueKeyframes)) { + valueKeyframes = [valueKeyframes]; + } + const valueOptions = { + ...getValueTransition(elementTransition, valueName), + }; + valueOptions.duration && (valueOptions.duration = secondsToMilliseconds(valueOptions.duration)); + valueOptions.delay && (valueOptions.delay = secondsToMilliseconds(valueOptions.delay)); + /** + * If there's an existing animation playing on this element then stop it + * before creating a new one. + */ + const map = getAnimationMap(element); + const key = animationMapKey(valueName, valueOptions.pseudoElement || ""); + const currentAnimation = map.get(key); + currentAnimation && currentAnimation.stop(); + animationDefinitions.push({ + map, + key, + unresolvedKeyframes: valueKeyframes, + options: { + ...valueOptions, + element, + name: valueName, + allowFlatten: !elementTransition.type && !elementTransition.ease, + }, + }); + } + } + /** + * Step 2: Resolve keyframes (read) + */ + for (let i = 0; i < animationDefinitions.length; i++) { + const { unresolvedKeyframes, options: animationOptions } = animationDefinitions[i]; + const { element, name, pseudoElement } = animationOptions; + if (!pseudoElement && unresolvedKeyframes[0] === null) { + unresolvedKeyframes[0] = getComputedStyle(element, name); + } + fillWildcards(unresolvedKeyframes); + applyPxDefaults(unresolvedKeyframes, name); + /** + * If we only have one keyframe, explicitly read the initial keyframe + * from the computed style. This is to ensure consistency with WAAPI behaviour + * for restarting animations, for instance .play() after finish, when it + * has one vs two keyframes. + */ + if (!pseudoElement && unresolvedKeyframes.length < 2) { + unresolvedKeyframes.unshift(getComputedStyle(element, name)); + } + animationOptions.keyframes = unresolvedKeyframes; + } + /** + * Step 3: Create new animations (write) + */ + const animations = []; + for (let i = 0; i < animationDefinitions.length; i++) { + const { map, key, options: animationOptions } = animationDefinitions[i]; + const animation = new NativeAnimation(animationOptions); + map.set(key, animation); + animation.finished.finally(() => map.delete(key)); + animations.push(animation); + } + return animations; +} + +export { animateElements }; +//# sourceMappingURL=animate-elements.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs new file mode 100644 index 0000000..070daf1 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs @@ -0,0 +1,13 @@ +import { GroupAnimationWithThen } from 'motion-dom'; +import { animateElements } from './animate-elements.mjs'; + +const createScopedWaapiAnimate = (scope) => { + function scopedAnimate(elementOrSelector, keyframes, options) { + return new GroupAnimationWithThen(animateElements(elementOrSelector, keyframes, options, scope)); + } + return scopedAnimate; +}; +const animateMini = /*@__PURE__*/ createScopedWaapiAnimate(); + +export { animateMini, createScopedWaapiAnimate }; +//# sourceMappingURL=animate-style.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/create.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/create.mjs new file mode 100644 index 0000000..0756f04 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/create.mjs @@ -0,0 +1,308 @@ +import { isMotionValue, defaultOffset, isGenerator, createGeneratorEasing, fillOffset } from 'motion-dom'; +import { progress, secondsToMilliseconds, warning, reverseEasing, getEasingForSegment } from 'motion-utils'; +import { resolveSubjects } from '../animate/resolve-subjects.mjs'; +import { calculateRepeatDuration } from './utils/calc-repeat-duration.mjs'; +import { calcNextTime } from './utils/calc-time.mjs'; +import { addKeyframes } from './utils/edit.mjs'; +import { normalizeTimes } from './utils/normalize-times.mjs'; +import { compareByTime } from './utils/sort.mjs'; + +const defaultSegmentEasing = "easeInOut"; +const MAX_REPEAT = 20; +function createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) { + const defaultDuration = defaultTransition.duration || 0.3; + const animationDefinitions = new Map(); + const sequences = new Map(); + const elementCache = {}; + const timeLabels = new Map(); + let prevTime = 0; + let currentTime = 0; + let totalDuration = 0; + /** + * Build the timeline by mapping over the sequence array and converting + * the definitions into keyframes and offsets with absolute time values. + * These will later get converted into relative offsets in a second pass. + */ + for (let i = 0; i < sequence.length; i++) { + const segment = sequence[i]; + /** + * If this is a timeline label, mark it and skip the rest of this iteration. + */ + if (typeof segment === "string") { + timeLabels.set(segment, currentTime); + continue; + } + else if (!Array.isArray(segment)) { + timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels)); + continue; + } + let [subject, keyframes, transition = {}] = segment; + /** + * If a relative or absolute time value has been specified we need to resolve + * it in relation to the currentTime. + */ + if (transition.at !== undefined) { + currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels); + } + /** + * Keep track of the maximum duration in this definition. This will be + * applied to currentTime once the definition has been parsed. + */ + let maxDuration = 0; + const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => { + const valueKeyframesAsList = keyframesAsList(valueKeyframes); + const { delay = 0, times = defaultOffset(valueKeyframesAsList), type = defaultTransition.type || "keyframes", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition; + let { ease = defaultTransition.ease || "easeOut", duration } = valueTransition; + /** + * Resolve stagger() if defined. + */ + const calculatedDelay = typeof delay === "function" + ? delay(elementIndex, numSubjects) + : delay; + /** + * If this animation should and can use a spring, generate a spring easing function. + */ + const numKeyframes = valueKeyframesAsList.length; + const createGenerator = isGenerator(type) + ? type + : generators?.[type || "keyframes"]; + if (numKeyframes <= 2 && createGenerator) { + /** + * As we're creating an easing function from a spring, + * ideally we want to generate it using the real distance + * between the two keyframes. However this isn't always + * possible - in these situations we use 0-100. + */ + let absoluteDelta = 100; + if (numKeyframes === 2 && + isNumberKeyframesArray(valueKeyframesAsList)) { + const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0]; + absoluteDelta = Math.abs(delta); + } + const springTransition = { + ...defaultTransition, + ...remainingTransition, + }; + if (duration !== undefined) { + springTransition.duration = secondsToMilliseconds(duration); + } + const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator); + ease = springEasing.ease; + duration = springEasing.duration; + } + duration ?? (duration = defaultDuration); + const startTime = currentTime + calculatedDelay; + /** + * If there's only one time offset of 0, fill in a second with length 1 + */ + if (times.length === 1 && times[0] === 0) { + times[1] = 1; + } + /** + * Fill out if offset if fewer offsets than keyframes + */ + const remainder = times.length - valueKeyframesAsList.length; + remainder > 0 && fillOffset(times, remainder); + /** + * If only one value has been set, ie [1], push a null to the start of + * the keyframe array. This will let us mark a keyframe at this point + * that will later be hydrated with the previous value. + */ + valueKeyframesAsList.length === 1 && + valueKeyframesAsList.unshift(null); + /** + * Segments can't express `repeat: Infinity` or very large + * counts — they'd leave dead time after the segment or + * explode the keyframe array. Ignore with a warning. + */ + if (repeat) { + warning(repeat < MAX_REPEAT, `Sequence segments can't repeat ${repeat} times — ignoring repeat option. Use a value below ${MAX_REPEAT} or apply repeat at the sequence level instead.`); + } + if (repeat && repeat < MAX_REPEAT) { + /** + * Express repeatDelay in units of a single iteration's duration + * so it can be added to the per-iteration time offsets below + * before they're normalized to 0-1. + */ + const repeatDelayUnits = duration > 0 ? repeatDelay / duration : 0; + duration = calculateRepeatDuration(duration, repeat, repeatDelay); + const originalKeyframes = [...valueKeyframesAsList]; + const originalTimes = [...times]; + ease = Array.isArray(ease) ? [...ease] : [ease]; + const originalEase = [...ease]; + /** + * For reverse/mirror, alternate iterations play the segment + * backwards. mirror matches JSAnimation's mirroredGenerator: + * reversed keyframes, easings unchanged. reverse matches + * JSAnimation's iterationProgress = 1 - p: reversed + * keyframes, easing array reversed AND each function easing + * mapped through reverseEasing (string easings unchanged — + * they're resolved later by the keyframes engine). + */ + const isFlipping = repeatType === "reverse" || repeatType === "mirror"; + let flippedKeyframes = originalKeyframes; + let flippedEases = originalEase; + if (isFlipping) { + flippedKeyframes = [...originalKeyframes].reverse(); + if (repeatType === "reverse") { + flippedEases = [...originalEase] + .reverse() + .map((e) => typeof e === "function" + ? reverseEasing(e) + : e); + } + } + for (let repeatIndex = 0; repeatIndex < repeat; repeatIndex++) { + const isFlipped = isFlipping && repeatIndex % 2 === 0; + const iterKeyframes = isFlipped + ? flippedKeyframes + : originalKeyframes; + const iterEase = isFlipped ? flippedEases : originalEase; + const iterStartOffset = (repeatIndex + 1) * (1 + repeatDelayUnits); + /** + * If repeatDelay is set, hold the previous iteration's + * final value through the delay by inserting a keyframe + * at the moment the next iteration begins. + */ + if (repeatDelayUnits > 0) { + valueKeyframesAsList.push(valueKeyframesAsList[valueKeyframesAsList.length - 1]); + times.push(iterStartOffset); + ease.push("linear"); + } + valueKeyframesAsList.push(...iterKeyframes); + for (let keyframeIndex = 0; keyframeIndex < iterKeyframes.length; keyframeIndex++) { + times.push(originalTimes[keyframeIndex] + iterStartOffset); + ease.push(keyframeIndex === 0 + ? "linear" + : getEasingForSegment(iterEase, keyframeIndex - 1)); + } + } + normalizeTimes(times, repeat, repeatDelayUnits); + } + const targetTime = startTime + duration; + /** + * Add keyframes, mapping offsets to absolute time. + */ + addKeyframes(valueSequence, valueKeyframesAsList, ease, times, startTime, targetTime); + maxDuration = Math.max(calculatedDelay + duration, maxDuration); + totalDuration = Math.max(targetTime, totalDuration); + }; + if (isMotionValue(subject)) { + const subjectSequence = getSubjectSequence(subject, sequences); + resolveValueSequence(keyframes, transition, getValueSequence("default", subjectSequence)); + } + else { + const subjects = resolveSubjects(subject, keyframes, scope, elementCache); + const numSubjects = subjects.length; + /** + * For every element in this segment, process the defined values. + */ + for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) { + /** + * Cast necessary, but we know these are of this type + */ + keyframes = keyframes; + transition = transition; + const thisSubject = subjects[subjectIndex]; + const subjectSequence = getSubjectSequence(thisSubject, sequences); + for (const key in keyframes) { + resolveValueSequence(keyframes[key], getValueTransition(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects); + } + } + } + prevTime = currentTime; + currentTime += maxDuration; + } + /** + * For every element and value combination create a new animation. + */ + sequences.forEach((valueSequences, element) => { + for (const key in valueSequences) { + const valueSequence = valueSequences[key]; + /** + * Arrange all the keyframes in ascending time order. + */ + valueSequence.sort(compareByTime); + const keyframes = []; + const valueOffset = []; + const valueEasing = []; + /** + * For each keyframe, translate absolute times into + * relative offsets based on the total duration of the timeline. + */ + for (let i = 0; i < valueSequence.length; i++) { + const { at, value, easing } = valueSequence[i]; + keyframes.push(value); + valueOffset.push(progress(0, totalDuration, at)); + valueEasing.push(easing || "easeOut"); + } + /** + * If the first keyframe doesn't land on offset: 0 + * provide one by duplicating the initial keyframe. This ensures + * it snaps to the first keyframe when the animation starts. + */ + if (valueOffset[0] !== 0) { + valueOffset.unshift(0); + keyframes.unshift(keyframes[0]); + valueEasing.unshift(defaultSegmentEasing); + } + /** + * If the last keyframe doesn't land on offset: 1 + * provide one with a null wildcard value. This will ensure it + * stays static until the end of the animation. + */ + if (valueOffset[valueOffset.length - 1] !== 1) { + valueOffset.push(1); + keyframes.push(null); + } + if (!animationDefinitions.has(element)) { + animationDefinitions.set(element, { + keyframes: {}, + transition: {}, + }); + } + const definition = animationDefinitions.get(element); + definition.keyframes[key] = keyframes; + /** + * Exclude `type` from defaultTransition since springs have been + * converted to duration-based easing functions in resolveValueSequence. + * Including `type: "spring"` would cause JSAnimation to error when + * the merged keyframes array has more than 2 keyframes. + */ + const { type: _type, ...remainingDefaultTransition } = defaultTransition; + definition.transition[key] = { + ...remainingDefaultTransition, + duration: totalDuration, + ease: valueEasing, + times: valueOffset, + ...sequenceTransition, + }; + } + }); + return animationDefinitions; +} +function getSubjectSequence(subject, sequences) { + !sequences.has(subject) && sequences.set(subject, {}); + return sequences.get(subject); +} +function getValueSequence(name, sequences) { + if (!sequences[name]) + sequences[name] = []; + return sequences[name]; +} +function keyframesAsList(keyframes) { + return Array.isArray(keyframes) ? keyframes : [keyframes]; +} +function getValueTransition(transition, key) { + return transition && transition[key] + ? { + ...transition, + ...transition[key], + } + : { ...transition }; +} +const isNumber = (keyframe) => typeof keyframe === "number"; +const isNumberKeyframesArray = (keyframes) => keyframes.every(isNumber); + +export { createAnimationsFromSequence, getValueTransition }; +//# sourceMappingURL=create.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs new file mode 100644 index 0000000..652f6d8 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs @@ -0,0 +1,6 @@ +function calculateRepeatDuration(duration, repeat, repeatDelay) { + return duration * (repeat + 1) + repeatDelay * repeat; +} + +export { calculateRepeatDuration }; +//# sourceMappingURL=calc-repeat-duration.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs new file mode 100644 index 0000000..7e600c8 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs @@ -0,0 +1,24 @@ +/** + * Given a absolute or relative time definition and current/prev time state of the sequence, + * calculate an absolute time for the next keyframes. + */ +function calcNextTime(current, next, prev, labels) { + if (typeof next === "number") { + return next; + } + else if (next.startsWith("-") || next.startsWith("+")) { + return Math.max(0, current + parseFloat(next)); + } + else if (next === "<") { + return prev; + } + else if (next.startsWith("<")) { + return Math.max(0, prev + parseFloat(next.slice(1))); + } + else { + return labels.get(next) ?? current; + } +} + +export { calcNextTime }; +//# sourceMappingURL=calc-time.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs new file mode 100644 index 0000000..a140e1b --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs @@ -0,0 +1,31 @@ +import { mixNumber } from 'motion-dom'; +import { getEasingForSegment, removeItem } from 'motion-utils'; + +function eraseKeyframes(sequence, startTime, endTime) { + for (let i = 0; i < sequence.length; i++) { + const keyframe = sequence[i]; + if (keyframe.at > startTime && keyframe.at < endTime) { + removeItem(sequence, keyframe); + // If we remove this item we have to push the pointer back one + i--; + } + } +} +function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) { + /** + * Erase every existing value between currentTime and targetTime, + * this will essentially splice this timeline into any currently + * defined ones. + */ + eraseKeyframes(sequence, startTime, endTime); + for (let i = 0; i < keyframes.length; i++) { + sequence.push({ + value: keyframes[i], + at: mixNumber(startTime, endTime, offset[i]), + easing: getEasingForSegment(easing, i), + }); + } +} + +export { addKeyframes, eraseKeyframes }; +//# sourceMappingURL=edit.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs new file mode 100644 index 0000000..14f6728 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs @@ -0,0 +1,18 @@ +/** + * Take an array of times that represent repeated keyframes. For instance + * if we have original times of [0, 0.5, 1] then our repeated times will + * be [0, 0.5, 1, 1, 1.5, 2]. Loop over the times and scale them back + * down to a 0-1 scale. + * + * `repeatDelayUnits` is the repeatDelay expressed in units of a single + * iteration's duration, so the total span equals `(repeat + 1) + repeat * repeatDelayUnits`. + */ +function normalizeTimes(times, repeat, repeatDelayUnits = 0) { + const totalUnits = repeat + 1 + repeat * repeatDelayUnits; + for (let i = 0; i < times.length; i++) { + times[i] = times[i] / totalUnits; + } +} + +export { normalizeTimes }; +//# sourceMappingURL=normalize-times.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs new file mode 100644 index 0000000..49ae938 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs @@ -0,0 +1,15 @@ +function compareByTime(a, b) { + if (a.at === b.at) { + if (a.value === null) + return 1; + if (b.value === null) + return -1; + return 0; + } + else { + return a.at - b.at; + } +} + +export { compareByTime }; +//# sourceMappingURL=sort.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs new file mode 100644 index 0000000..be44507 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs @@ -0,0 +1,6 @@ +function isDOMKeyframes(keyframes) { + return typeof keyframes === "object" && !Array.isArray(keyframes); +} + +export { isDOMKeyframes }; +//# sourceMappingURL=is-dom-keyframes.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/dom.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/dom.mjs new file mode 100644 index 0000000..5df9220 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/dom.mjs @@ -0,0 +1,10 @@ +export * from 'motion-dom'; +export { delayInSeconds as delay } from 'motion-dom'; +export * from 'motion-utils'; +export { animate, createScopedAnimate } from './animation/animate/index.mjs'; +export { animateMini } from './animation/animators/waapi/animate-style.mjs'; +export { scroll } from './render/dom/scroll/index.mjs'; +export { scrollInfo } from './render/dom/scroll/track.mjs'; +export { inView } from './render/dom/viewport/index.mjs'; +export { distance, distance2D } from './utils/distance.mjs'; +//# sourceMappingURL=dom.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs new file mode 100644 index 0000000..05c93c0 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs @@ -0,0 +1,102 @@ +import { resize } from 'motion-dom'; +import { scrollInfo } from './track.mjs'; +import { canUseNativeTimeline } from './utils/can-use-native-timeline.mjs'; +import { getTimeline } from './utils/get-timeline.mjs'; +import { offsetToViewTimelineRange } from './utils/offset-to-range.mjs'; + +function attachToAnimation(animation, options) { + const { target, container, axis } = options; + const range = target && offsetToViewTimelineRange(options.offset); + /** + * Use native timeline when: + * - No target and no offset: ScrollTimeline + * - Target with mappable offset: ViewTimeline with named range + * - Otherwise: fall back to JS observe. A ScrollTimeline has no offset, + * so page offsets are applied by the JS timeline. + */ + const native = canUseNativeTimeline(target) && (target ? !!range : !options.offset); + const animations = new Map(); + const observed = new Set(); + let stopObserving; + let reverse = false; + /** + * When an offset's second point comes first, its range is swapped and + * the animation played backwards. The range is set after the direction, + * as that's what realigns a running animation with its timeline. Chrome + * skips that realignment when the range changes in the frame the + * animation starts, leaving it offset for good, so it's replayed too. + */ + const apply = (direction, waapi) => { + const [start, end] = range.points; + waapi.effect.updateTiming({ + direction: reverse + ? direction === "normal" + ? "reverse" + : "alternate-reverse" + : direction, + }); + Object.assign(waapi, { + rangeStart: reverse ? end : start, + rangeEnd: reverse ? start : end, + }); + waapi.play(); + }; + const stops = [ + animation.attachTimeline({ + /** + * Read only by WAAPI animations, so values driven from JS don't + * create a native timeline they won't use. + */ + get timeline() { + return native ? getTimeline(options) : undefined; + }, + onAttach: range && + ((waapi) => { + const direction = waapi.effect.getTiming().direction; + animations.set(waapi, direction); + apply(direction, waapi); + }), + /** + * Values driven from JS all track the offset with scrollInfo, + * which measures once per frame for all of them. + */ + observe: (valueAnimation) => { + valueAnimation.pause(); + observed.add(valueAnimation); + stopObserving || (stopObserving = scrollInfo((info) => { + observed.forEach((observedAnimation) => { + observedAnimation.time = + observedAnimation.iterationDuration * + info[axis].progress; + }); + }, options)); + return () => observed.delete(valueAnimation); + }, + }), + ]; + if (native && range) { + const { a, b } = range; + const length = axis === "y" ? "clientHeight" : "clientWidth"; + /** + * Offsets like All only run forwards when the target is longer than + * the container, so their direction is remeasured on resize. + */ + const update = () => { + if (reverse !== + (reverse = a * target[length] + b * container[length] < 0)) { + animations.forEach(apply); + } + }; + update(); + if (a * b < 0) { + stops.push(resize(update), resize([target, container], update)); + } + } + return () => { + stops.forEach((stop) => stop()); + stopObserving?.(); + }; +} + +export { attachToAnimation }; +//# sourceMappingURL=attach-animation.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs new file mode 100644 index 0000000..11c4801 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs @@ -0,0 +1,19 @@ +import { noop } from 'motion-utils'; +import { attachToAnimation } from './attach-animation.mjs'; +import { scrollInfo } from './track.mjs'; + +function scroll(onScroll, { axis = "y", source, container = document.scrollingElement, ...options } = {}) { + if (!container) + return noop; + const optionsWithDefaults = { + axis, + container: source || container, + ...options, + }; + return typeof onScroll === "function" + ? scrollInfo((info) => onScroll(info[axis].progress, info), optionsWithDefaults) + : attachToAnimation(onScroll, optionsWithDefaults); +} + +export { scroll }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs new file mode 100644 index 0000000..1583672 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs @@ -0,0 +1,102 @@ +import { clamp, progress, velocityPerSecond } from 'motion-utils'; + +/** + * A time in milliseconds, beyond which we consider the scroll velocity to be 0. + */ +const maxElapsed = 50; +const createAxisInfo = () => ({ + current: 0, + offset: [], + progress: 0, + scrollLength: 0, + targetOffset: 0, + targetLength: 0, + containerLength: 0, + velocity: 0, +}); +const createScrollInfo = () => ({ + time: 0, + x: createAxisInfo(), + y: createAxisInfo(), +}); +/** + * Also iterated with for...in as the list of axes. + */ +const axisKeys = { + x: { + length: "Width", + position: "Left", + }, + y: { + length: "Height", + position: "Top", + }, +}; +const styles = new WeakMap(); +/** + * Whether an axis scrolls from its end, which browsers report as a scroll + * position running from 0 to -scrollLength (#3340). This is read from style + * rather than the sign of the scroll position, as elastic overscroll pushes + * the position past 0 in either kind of axis (#3791). + */ +function isReversed(element, axisName) { + /** + * The viewport takes its writing mode and direction from <body>, which + * not every browser reflects in the root element's computed style. It + * doesn't adopt the root element's flex layout. + */ + const isRoot = element === document.scrollingElement; + const source = (isRoot && document.body) || element; + let style = styles.get(source); + if (!style) + styles.set(source, (style = getComputedStyle(source))); + const { writingMode, flexDirection } = style; + const isInline = (axisName === "x") !== /^[vs]/.test(writingMode); + return ((isInline + ? (style.direction === "rtl") !== (writingMode === "sideways-lr") + : writingMode.endsWith("rl")) !== + /** + * A reversed flex axis flips this. The main axis is the inline axis + * unless flex-direction is a column. + */ + (!isRoot && + style.display.includes("flex") && + (isInline !== (flexDirection[0] === "c") + ? flexDirection + : style.flexWrap).endsWith("reverse"))); +} +function updateAxisInfo(element, axisName, info, time) { + const axis = info[axisName]; + const { length, position } = axisKeys[axisName]; + const prev = axis.current; + const prevTime = info.time; + const scrollPosition = element[`scroll${position}`]; + axis.current = isReversed(element, axisName) + ? -scrollPosition || 0 // Avoid -0 + : scrollPosition; + axis.containerLength = element[`client${length}`]; + axis.targetLength = element[`scroll${length}`]; + axis.scrollLength = axis.targetLength - axis.containerLength; + axis.offset.length = 0; + axis.offset[0] = 0; + axis.offset[1] = axis.scrollLength; + axis.progress = clamp(0, 1, progress(0, axis.scrollLength, axis.current)); + const elapsed = time - prevTime; + axis.velocity = + elapsed > maxElapsed + ? 0 + : velocityPerSecond(axis.current - prev, elapsed); +} +/** + * Measures a scroll container. Runs once per container per frame; every + * handler on that container derives its info from the result. + */ +function updateScrollInfo(element, info, time) { + for (const axis in axisKeys) { + updateAxisInfo(element, axis, info, time); + } + info.time = time; +} + +export { axisKeys, createScrollInfo, updateScrollInfo }; +//# sourceMappingURL=info.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs new file mode 100644 index 0000000..58cb4c1 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs @@ -0,0 +1,46 @@ +const namedEdges = { + start: 0, + center: 0.5, + end: 1, +}; +function resolveEdge(edge, length, inset = 0) { + let delta = 0; + /** + * If we have this edge defined as a preset, replace the definition + * with the numerical value. + */ + if (edge in namedEdges) { + edge = namedEdges[edge]; + } + /** + * Handle unit values + */ + if (typeof edge === "string") { + const asNumber = parseFloat(edge); + if (edge.endsWith("px")) { + delta = asNumber; + } + else if (edge.endsWith("%")) { + edge = asNumber / 100; + } + else if (edge.endsWith("vw")) { + delta = (asNumber / 100) * document.documentElement.clientWidth; + } + else if (edge.endsWith("vh")) { + delta = (asNumber / 100) * document.documentElement.clientHeight; + } + else { + edge = asNumber; + } + } + /** + * If the edge is defined as a number, handle as a progress value. + */ + if (typeof edge === "number") { + delta = length * edge; + } + return inset + delta; +} + +export { namedEdges, resolveEdge }; +//# sourceMappingURL=edge.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs new file mode 100644 index 0000000..43ab55c --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs @@ -0,0 +1,46 @@ +import { clamp, progress } from 'motion-utils'; +import { resolveOffset } from './offset.mjs'; +import { ScrollOffset } from './presets.mjs'; + +/** + * Resolved offsets map to evenly spaced progress values, so progress is + * derived from the segment index rather than building an interpolator. + */ +function offsetsToProgress(offsets, v) { + const n = offsets.length - 1; + if (n < 1) + return 0; + const reverse = offsets[0] > offsets[n]; + const at = (i) => offsets[reverse ? n - i : i]; + /** + * Matches interpolate(), which checks for a zero-length first range + * before reversing descending offsets. + */ + if (offsets[0] === offsets[1] && v < at(0)) + return reverse ? 1 : 0; + let i = 0; + while (i < n - 1 && v >= at(i + 1)) + i++; + const p = (i + progress(at(i), at(i + 1), v)) / n; + return reverse ? 1 - p : p; +} +function resolveOffsets(info, options) { + const { offset: offsetDefinition = ScrollOffset.All, axis = "y" } = options; + const axisInfo = info[axis]; + /** + * Reset the length of the resolved offset array rather than creating a new one. + */ + axisInfo.offset.length = 0; + /** + * Populate the offset array by resolving the user's offset definition into + * a list of pixel scroll offsets. + */ + const numOffsets = offsetDefinition.length; + for (let i = 0; i < numOffsets; i++) { + axisInfo.offset[i] = resolveOffset(offsetDefinition[i], axisInfo.containerLength, axisInfo.targetLength, axisInfo.targetOffset); + } + axisInfo.progress = clamp(0, 1, offsetsToProgress(axisInfo.offset, axisInfo.current)); +} + +export { resolveOffsets }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs new file mode 100644 index 0000000..82d4652 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs @@ -0,0 +1,48 @@ +import { isHTMLElement } from 'motion-dom'; + +function calcInset(element, container) { + const inset = { x: 0, y: 0 }; + let current = element; + while (current && current !== container) { + if (isHTMLElement(current)) { + inset.x += current.offsetLeft; + inset.y += current.offsetTop; + current = current.offsetParent; + } + else if (current.tagName === "svg") { + /** + * This isn't an ideal approach to measuring the offset of <svg /> tags. + * It would be preferable, given they behave like HTMLElements in most ways + * to use offsetLeft/Top. But these don't exist on <svg />. Likewise we + * can't use .getBBox() like most SVG elements as these provide the offset + * relative to the SVG itself, which for <svg /> is usually 0x0. + */ + const svgBoundingBox = current.getBoundingClientRect(); + current = current.parentElement; + const parentBoundingBox = current.getBoundingClientRect(); + inset.x += svgBoundingBox.left - parentBoundingBox.left; + inset.y += svgBoundingBox.top - parentBoundingBox.top; + } + else if (current instanceof SVGGraphicsElement) { + const { x, y } = current.getBBox(); + inset.x += x; + inset.y += y; + let svg = null; + let parent = current.parentNode; + while (!svg) { + if (parent.tagName === "svg") { + svg = parent; + } + parent = current.parentNode; + } + current = svg; + } + else { + break; + } + } + return inset; +} + +export { calcInset }; +//# sourceMappingURL=inset.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs new file mode 100644 index 0000000..fd25b46 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs @@ -0,0 +1,36 @@ +import { resolveEdge, namedEdges } from './edge.mjs'; + +const defaultOffset = [0, 0]; +function resolveOffset(offset, containerLength, targetLength, targetInset) { + let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset; + let targetPoint = 0; + let containerPoint = 0; + if (typeof offset === "number") { + /** + * If we're provided offset: [0, 0.5, 1] then each number x should become + * [x, x], so we default to the behaviour of mapping 0 => 0 of both target + * and container etc. + */ + offsetDefinition = [offset, offset]; + } + else if (typeof offset === "string") { + offset = offset.trim(); + if (offset.includes(" ")) { + offsetDefinition = offset.split(" "); + } + else { + /** + * If we're provided a definition like "100px" then we want to apply + * that only to the top of the target point, leaving the container at 0. + * Whereas a named offset like "end" should be applied to both. + */ + offsetDefinition = [offset, namedEdges[offset] ? offset : `0`]; + } + } + targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset); + containerPoint = resolveEdge(offsetDefinition[1], containerLength); + return targetPoint - containerPoint; +} + +export { resolveOffset }; +//# sourceMappingURL=offset.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs new file mode 100644 index 0000000..262ba34 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs @@ -0,0 +1,9 @@ +const ScrollOffset = { + All: [ + [0, 0], + [1, 1], + ], +}; + +export { ScrollOffset }; +//# sourceMappingURL=presets.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs new file mode 100644 index 0000000..8bbc4a3 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs @@ -0,0 +1,58 @@ +import { warnOnce } from 'motion-utils'; +import { axisKeys } from './info.mjs'; +import { resolveOffsets } from './offsets/index.mjs'; +import { calcInset } from './offsets/inset.mjs'; + +function getTargetSize(target) { + return "getBBox" in target && target.tagName !== "svg" + ? target.getBBox() + : { width: target.clientWidth, height: target.clientHeight }; +} +function createOnScrollHandler(container, onScroll, info, options = {}) { + const { target } = options; + /** + * In development mode ensure scroll containers aren't position: static as this makes + * it difficult to measure their relative positions. The document scrolling element + * is exempt: offsetParent measurements naturally resolve relative to the document. + */ + if (process.env.NODE_ENV !== "production") { + if (target && + target !== container && + container !== document.documentElement && + container !== document.scrollingElement && + container !== document.body) { + warnOnce(getComputedStyle(container).position !== "static", "Please ensure that the container has a non-static position, like 'relative', 'fixed', or 'absolute' to ensure scroll offset is calculated correctly."); + } + } + /** + * Handlers without a target or offset are notified with the container's + * shared info object, so they measure nothing themselves. + */ + const needsOwnInfo = target || options.offset; + return { + measure: (containerInfo) => { + if (!needsOwnInfo) + return; + info.time = containerInfo.time; + for (const key in axisKeys) { + const axis = key; + const { offset } = info[axis]; + Object.assign(info[axis], containerInfo[axis]); + info[axis].offset = offset; + } + if (target && target !== container) { + const inset = calcInset(target, container); + const size = getTargetSize(target); + info.x.targetOffset = inset.x; + info.y.targetOffset = inset.y; + info.x.targetLength = size.width; + info.y.targetLength = size.height; + } + resolveOffsets(info, options); + }, + notify: (containerInfo) => onScroll(needsOwnInfo ? info : containerInfo), + }; +} + +export { createOnScrollHandler }; +//# sourceMappingURL=on-scroll-handler.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs new file mode 100644 index 0000000..08deaec --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs @@ -0,0 +1,117 @@ +import { resize, frame, cancelFrame, frameData } from 'motion-dom'; +import { noop } from 'motion-utils'; +import { createScrollInfo, updateScrollInfo } from './info.mjs'; +import { createOnScrollHandler } from './on-scroll-handler.mjs'; + +const scrollListeners = new WeakMap(); +const resizeListeners = new WeakMap(); +const onScrollHandlers = new WeakMap(); +const dimensionCheckProcesses = new WeakMap(); +const getEventTarget = (element) => element === document.scrollingElement ? window : element; +function scrollInfo(onScroll, { container = document.scrollingElement, trackContentSize = false, ...options } = {}) { + if (!container) + return noop; + let containerHandlers = onScrollHandlers.get(container); + /** + * Get the onScroll handlers for this container. + * If one isn't found, create a new one. + */ + if (!containerHandlers) { + containerHandlers = new Set(); + onScrollHandlers.set(container, containerHandlers); + } + /** + * Create a new onScroll handler for the provided callback. + */ + const info = createScrollInfo(); + const containerHandler = createOnScrollHandler(container, onScroll, info, options); + containerHandlers.add(containerHandler); + /** + * Check if there's a scroll event listener for this container. + * If not, create one. + */ + if (!scrollListeners.has(container)) { + const containerInfo = createScrollInfo(); + const measureAll = () => { + updateScrollInfo(container, containerInfo, frameData.timestamp); + for (const handler of containerHandlers) { + handler.measure(containerInfo); + } + frame.preUpdate(notifyAll); + }; + const notifyAll = () => { + for (const handler of containerHandlers) { + handler.notify(containerInfo); + } + }; + const listener = () => frame.read(measureAll); + scrollListeners.set(container, listener); + const target = getEventTarget(container); + window.addEventListener("resize", listener); + if (container !== document.documentElement) { + resizeListeners.set(container, resize(container, listener)); + } + target.addEventListener("scroll", listener); + listener(); + } + /** + * Enable content size tracking if requested and not already enabled. + */ + if (trackContentSize && !dimensionCheckProcesses.has(container)) { + const listener = scrollListeners.get(container); + // Store initial scroll dimensions (object is reused to avoid allocation) + const size = { + width: container.scrollWidth, + height: container.scrollHeight, + }; + // Add frame-based scroll dimension checking to detect content changes + const checkScrollDimensions = () => { + const newWidth = container.scrollWidth; + const newHeight = container.scrollHeight; + if (size.width !== newWidth || size.height !== newHeight) { + listener(); + size.width = newWidth; + size.height = newHeight; + } + }; + // Schedule with keepAlive=true to run every frame + const dimensionCheckProcess = frame.read(checkScrollDimensions, true); + dimensionCheckProcesses.set(container, dimensionCheckProcess); + } + const listener = scrollListeners.get(container); + frame.read(listener, false, true); + return () => { + cancelFrame(listener); + /** + * Check if we even have any handlers for this container. + */ + const currentHandlers = onScrollHandlers.get(container); + if (!currentHandlers) + return; + currentHandlers.delete(containerHandler); + if (currentHandlers.size) + return; + /** + * If no more handlers, remove the scroll listener too. The handler + * set goes with it, as a measure still queued from this listener + * would otherwise notify handlers added by a later scrollInfo call. + */ + onScrollHandlers.delete(container); + const scrollListener = scrollListeners.get(container); + scrollListeners.delete(container); + if (scrollListener) { + getEventTarget(container).removeEventListener("scroll", scrollListener); + resizeListeners.get(container)?.(); + window.removeEventListener("resize", scrollListener); + } + // Clean up scroll dimension checking + const dimensionCheckProcess = dimensionCheckProcesses.get(container); + if (dimensionCheckProcess) { + cancelFrame(dimensionCheckProcess); + dimensionCheckProcesses.delete(container); + } + }; +} + +export { scrollInfo }; +//# sourceMappingURL=track.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/can-use-native-timeline.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/can-use-native-timeline.mjs new file mode 100644 index 0000000..ed95092 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/can-use-native-timeline.mjs @@ -0,0 +1,10 @@ +import { supportsViewTimeline, supportsScrollTimeline } from 'motion-dom'; + +function canUseNativeTimeline(target) { + if (typeof window === "undefined") + return false; + return target ? supportsViewTimeline() : supportsScrollTimeline(); +} + +export { canUseNativeTimeline }; +//# sourceMappingURL=can-use-native-timeline.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs new file mode 100644 index 0000000..9f57de5 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs @@ -0,0 +1,25 @@ +const timelineCache = new Map(); +/** + * Native timelines are only attached to WAAPI animations. Offsets are + * applied to each animation as a range, so a timeline is shared by every + * offset. + */ +function getTimeline({ container, target, axis, }) { + let containerCache = timelineCache.get(container); + if (!containerCache) { + containerCache = new Map(); + timelineCache.set(container, containerCache); + } + const targetKey = target ?? "self"; + let targetCache = containerCache.get(targetKey); + if (!targetCache) { + targetCache = {}; + containerCache.set(targetKey, targetCache); + } + return (targetCache[axis] || (targetCache[axis] = target + ? new ViewTimeline({ subject: target, axis }) + : new ScrollTimeline({ source: container, axis }))); +} + +export { getTimeline }; +//# sourceMappingURL=get-timeline.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/offset-to-range.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/offset-to-range.mjs new file mode 100644 index 0000000..45f2c4c --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/scroll/utils/offset-to-range.mjs @@ -0,0 +1,41 @@ +import { resolveOffset } from '../offsets/offset.mjs'; +import { ScrollOffset } from '../offsets/presets.mjs'; + +/** + * Resolved offsets are linear in the target and container lengths, so + * probing them gives [target progress, container progress, pixels]. + * vw/vh can resolve to 0px, so they're rejected up front. + */ +const toIntersection = (o) => { + if (/v/u.test(o)) + return []; + const px = resolveOffset(o, 0, 0, 0); + return [resolveOffset(o, 0, 1, 0) - px, px - resolveOffset(o, 1, 0, 0), px]; +}; +const toRange = ([t, c, px]) => !px && + (c === 0 || c === 1) && + `${c ? "entry" : "exit"}-crossing ${t * 100}%`; +/** + * Maps an offset to an equivalent ViewTimeline range. Returns undefined when + * there isn't one, which signals the caller to fall back to JS-based scroll + * tracking. + */ +function offsetToViewTimelineRange(offset = ScrollOffset.All) { + if (offset.length !== 2) + return; + const [start, end] = offset.map(toIntersection); + const points = [toRange(start), toRange(end)]; + const a = end[0] - start[0]; + const b = start[1] - end[1]; + if (points[0] && points[1] && (a || b)) { + return { + points: points, + a, + b, + cover: !start[0] && a === 1 && b === 1, + }; + } +} + +export { offsetToViewTimelineRange }; +//# sourceMappingURL=offset-to-range.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs new file mode 100644 index 0000000..93c0f8d --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs @@ -0,0 +1,44 @@ +import { resolveElements } from 'motion-dom'; + +const thresholds = { + some: 0, + all: 1, +}; +function inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = "some" } = {}) { + const elements = resolveElements(elementOrSelector); + const activeIntersections = new WeakMap(); + const onIntersectionChange = (entries) => { + entries.forEach((entry) => { + const onEnd = activeIntersections.get(entry.target); + /** + * If there's no change to the intersection, we don't need to + * do anything here. + */ + if (entry.isIntersecting === Boolean(onEnd)) + return; + if (entry.isIntersecting) { + const newOnEnd = onStart(entry.target, entry); + if (typeof newOnEnd === "function") { + activeIntersections.set(entry.target, newOnEnd); + } + else { + observer.unobserve(entry.target); + } + } + else if (typeof onEnd === "function") { + onEnd(entry); + activeIntersections.delete(entry.target); + } + }); + }; + const observer = new IntersectionObserver(onIntersectionChange, { + root, + rootMargin, + threshold: typeof amount === "number" ? amount : thresholds[amount], + }); + elements.forEach((element) => observer.observe(element)); + return () => observer.disconnect(); +} + +export { inView }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/dist/es/utils/distance.mjs b/apps/web/.output/server/node_modules/framer-motion/dist/es/utils/distance.mjs new file mode 100644 index 0000000..c7ff075 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/dist/es/utils/distance.mjs @@ -0,0 +1,10 @@ +const distance = (a, b) => Math.abs(a - b); +function distance2D(a, b) { + // Multi-dimensional + const xDelta = distance(a.x, b.x); + const yDelta = distance(a.y, b.y); + return Math.sqrt(xDelta ** 2 + yDelta ** 2); +} + +export { distance, distance2D }; +//# sourceMappingURL=distance.mjs.map diff --git a/apps/web/.output/server/node_modules/framer-motion/package.json b/apps/web/.output/server/node_modules/framer-motion/package.json new file mode 100644 index 0000000..abf8152 --- /dev/null +++ b/apps/web/.output/server/node_modules/framer-motion/package.json @@ -0,0 +1,152 @@ +{ + "name": "framer-motion", + "version": "14.3.1", + "description": "A simple and powerful JavaScript animation library", + "main": "dist/cjs/index.js", + "module": "dist/es/index.mjs", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/es/index.mjs", + "default": "./dist/cjs/index.js" + }, + "./debug": { + "types": "./dist/debug.d.ts", + "require": "./dist/cjs/debug.js", + "import": "./dist/es/debug.mjs", + "default": "./dist/cjs/debug.js" + }, + "./dom/mini": { + "types": "./dist/dom-mini.d.ts", + "require": "./dist/cjs/dom-mini.js", + "import": "./dist/es/dom-mini.mjs", + "default": "./dist/cjs/dom-mini.js" + }, + "./dom": { + "types": "./dist/dom.d.ts", + "require": "./dist/cjs/dom.js", + "import": "./dist/es/dom.mjs", + "default": "./dist/cjs/dom.js" + }, + "./client": { + "types": "./dist/client.d.ts", + "require": "./dist/cjs/client.js", + "import": "./dist/es/client.mjs", + "default": "./dist/cjs/client.js" + }, + "./m": { + "types": "./dist/m.d.ts", + "require": "./dist/cjs/m.js", + "import": "./dist/es/m.mjs", + "default": "./dist/cjs/m.js" + }, + "./mini": { + "types": "./dist/mini.d.ts", + "require": "./dist/cjs/mini.js", + "import": "./dist/es/mini.mjs", + "default": "./dist/cjs/mini.js" + }, + "./projection": { + "types": "./dist/projection.d.ts", + "import": "./dist/es/projection.mjs", + "default": "./dist/es/projection.mjs" + }, + "./animate-view": { + "types": "./dist/animate-view.d.ts", + "require": "./dist/cjs/animate-view.js", + "import": "./dist/es/animate-view.mjs", + "default": "./dist/cjs/animate-view.js" + }, + "./package.json": "./package.json" + }, + "types": "dist/index.d.ts", + "author": "Matt Perry", + "license": "MIT", + "repository": "https://github.com/motiondivision/motion/", + "sideEffects": false, + "keywords": [ + "react animation", + "react", + "pose", + "react pose", + "animation", + "gestures", + "drag", + "spring", + "popmotion", + "framer", + "waapi" + ], + "scripts": { + "build": "yarn clean && tsc --noEmitOnError -p . && rollup -c && node ./scripts/check-bundle.js", + "dev": "yarn watch", + "clean": "rm -rf types dist lib", + "test": "yarn test-server && yarn test-client", + "test-client": "jest --config jest.config.json --max-workers=2", + "test-server": "jest --config jest.config.ssr.json", + "prettier": "prettier ./src/* --write", + "watch": "concurrently -c blue,red -n tsc --noEmitOnError ,rollup --kill-others \"tsc --noEmitOnError --watch -p . --preserveWatchOutput\" \"rollup --config --watch --no-watch.clearScreen\"", + "prepack": "yarn build && yarn measure && node ../../dev/inc/bundlesize.mjs framer-motion", + "postpublish": "git push --tags", + "measure": "rollup -c ./rollup.size.config.mjs" + }, + "dependencies": { + "motion-dom": "14.3.1", + "motion-utils": "14.1.1", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@radix-ui/react-dialog": "^1.1.15", + "@thednp/dommatrix": "^2.0.11", + "@types/three": "0.137.0", + "concurrently": "^7.3.0", + "jest": "^29.7.0", + "rollup": "4.59.0", + "three": "0.137.0", + "typescript": "5.4.3" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + }, + "bundlesize": [ + { + "path": "./dist/size-rollup-motion.js", + "maxSize": "42.2 kB" + }, + { + "path": "./dist/size-rollup-m.js", + "maxSize": "5 kB" + }, + { + "path": "./dist/size-rollup-m-dom-animation.js", + "maxSize": "28.6 kB" + }, + { + "path": "./dist/size-rollup-m-dom-max.js", + "maxSize": "42.3 kB" + }, + { + "path": "./dist/size-rollup-animate.js", + "maxSize": "22 kB" + }, + { + "path": "./dist/size-rollup-scroll.js", + "maxSize": "3.7 kB" + }, + { + "path": "./dist/size-rollup-waapi-animate.js", + "maxSize": "3.2 kB" + } + ], + "gitHead": "1785a8816da2682ef53bfc1fe8b3f61d86f17924" +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/hey-listen/dist/index.js b/apps/web/.output/server/node_modules/hey-listen/dist/index.js new file mode 100644 index 0000000..4e7d3c4 --- /dev/null +++ b/apps/web/.output/server/node_modules/hey-listen/dist/index.js @@ -0,0 +1,18 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +exports.warning = function () { }; +exports.invariant = function () { }; +if (process.env.NODE_ENV !== 'production') { + exports.warning = function (check, message) { + if (!check && typeof console !== 'undefined') { + console.warn(message); + } + }; + exports.invariant = function (check, message) { + if (!check) { + throw new Error(message); + } + }; +} diff --git a/apps/web/.output/server/node_modules/hey-listen/package.json b/apps/web/.output/server/node_modules/hey-listen/package.json new file mode 100644 index 0000000..b484a1c --- /dev/null +++ b/apps/web/.output/server/node_modules/hey-listen/package.json @@ -0,0 +1,55 @@ +{ + "name": "hey-listen", + "version": "1.0.8", + "description": "Warning and invariant dev-ex messaging.", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "module": "dist/hey-listen.es.js", + "jsnext:main": "dist/hey-listen.es.js", + "scripts": { + "test": "jest", + "build": "rollup -c", + "watch": "rollup -c -w", + "prepublishOnly": "npm run test && npm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Popmotion/hey-listen.git" + }, + "keywords": [ + "warning", + "invariant" + ], + "author": "Matt Perry", + "license": "MIT", + "bugs": { + "url": "https://github.com/Popmotion/hey-listen/issues" + }, + "homepage": "https://github.com/Popmotion/hey-listen#readme", + "devDependencies": { + "@types/jest": "^22.2.3", + "@types/node": "^10.0.6", + "jest": "^24.7.1", + "rollup": "^1.9.2", + "rollup-plugin-typescript2": "^0.14.0", + "rollup-plugin-uglify": "^3.0.0", + "ts-jest": "^22.4.5", + "typescript": "^2.8.3" + }, + "jest": { + "moduleFileExtensions": [ + "ts", + "js", + "json", + "node" + ], + "transform": { + "\\.(ts)$": "../node_modules/ts-jest/preprocessor.js" + }, + "testRegex": "/_tests/.*\\.(ts|js)$", + "rootDir": "src" + }, + "prettier": { + "singleQuote": true + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/hookable/dist/index.mjs b/apps/web/.output/server/node_modules/hookable/dist/index.mjs new file mode 100644 index 0000000..b4a5bdb --- /dev/null +++ b/apps/web/.output/server/node_modules/hookable/dist/index.mjs @@ -0,0 +1,257 @@ +function flatHooks(configHooks, hooks = {}, parentName) { + for (const key in configHooks) { + const subHook = configHooks[key]; + const name = parentName ? `${parentName}:${key}` : key; + if (typeof subHook === "object" && subHook !== null) flatHooks(subHook, hooks, name); + else if (typeof subHook === "function") hooks[name] = subHook; + } + return hooks; +} +function mergeHooks(...hooks) { + const finalHooks = {}; + for (const hook of hooks) { + const flatenHook = flatHooks(hook); + for (const key in flatenHook) if (finalHooks[key]) finalHooks[key].push(flatenHook[key]); + else finalHooks[key] = [flatenHook[key]]; + } + for (const key in finalHooks) if (finalHooks[key].length > 1) { + const array = finalHooks[key]; + finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_)); + } else finalHooks[key] = finalHooks[key][0]; + return finalHooks; +} +function serial(tasks, function_) { + return tasks.reduce((promise, task) => promise.then(() => function_(task)), Promise.resolve()); +} +const createTask = /* @__PURE__ */ (() => { + if (console.createTask) return console.createTask; + const defaultTask = { run: (fn) => fn() }; + return () => defaultTask; +})(); +function callHooks(hooks, args, startIndex, task) { + for (let i = startIndex; i < hooks.length; i += 1) try { + const result = task ? task.run(() => hooks[i](...args)) : hooks[i](...args); + if (result && typeof result.then === "function") return Promise.resolve(result).then(() => callHooks(hooks, args, i + 1, task)); + } catch (error) { + return Promise.reject(error); + } +} +function serialTaskCaller(hooks, args, name) { + if (hooks.length > 0) return callHooks(hooks, args, 0, createTask(name)); +} +function parallelTaskCaller(hooks, args, name) { + if (hooks.length > 0) { + const task = createTask(name); + return Promise.all(hooks.map((hook) => task.run(() => hook(...args)))); + } +} +function serialCaller(hooks, arguments_) { + return hooks.reduce((promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])), Promise.resolve()); +} +function parallelCaller(hooks, args) { + return Promise.all(hooks.map((hook) => hook(...args || []))); +} +function callEachWith(callbacks, arg0) { + for (const callback of [...callbacks]) callback(arg0); +} +var Hookable = class { + _hooks; + _before; + _after; + _deprecatedHooks; + _deprecatedMessages; + constructor() { + this._hooks = {}; + this._before = void 0; + this._after = void 0; + this._deprecatedMessages = void 0; + this._deprecatedHooks = {}; + this.hook = this.hook.bind(this); + this.callHook = this.callHook.bind(this); + this.callHookWith = this.callHookWith.bind(this); + } + hook(name, function_, options = {}) { + if (!name || typeof function_ !== "function") return () => {}; + const originalName = name; + let dep; + while (this._deprecatedHooks[name]) { + dep = this._deprecatedHooks[name]; + name = dep.to; + } + if (dep && !options.allowDeprecated) { + let message = dep.message; + if (!message) message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : ""); + if (!this._deprecatedMessages) this._deprecatedMessages = /* @__PURE__ */ new Set(); + if (!this._deprecatedMessages.has(message)) { + console.warn(message); + this._deprecatedMessages.add(message); + } + } + if (!function_.name) try { + Object.defineProperty(function_, "name", { + get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb", + configurable: true + }); + } catch {} + this._hooks[name] = this._hooks[name] || []; + this._hooks[name].push(function_); + return () => { + if (function_) { + this.removeHook(name, function_); + function_ = void 0; + } + }; + } + hookOnce(name, function_) { + let _unreg; + let _function = (...arguments_) => { + if (typeof _unreg === "function") _unreg(); + _unreg = void 0; + _function = void 0; + return function_(...arguments_); + }; + _unreg = this.hook(name, _function); + return _unreg; + } + removeHook(name, function_) { + const hooks = this._hooks[name]; + if (hooks) { + const index = hooks.indexOf(function_); + if (index !== -1) hooks.splice(index, 1); + if (hooks.length === 0) this._hooks[name] = void 0; + } + } + clearHook(name) { + this._hooks[name] = void 0; + } + deprecateHook(name, deprecated) { + this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated; + const _hooks = this._hooks[name] || []; + this._hooks[name] = void 0; + for (const hook of _hooks) this.hook(name, hook); + } + deprecateHooks(deprecatedHooks) { + for (const name in deprecatedHooks) this.deprecateHook(name, deprecatedHooks[name]); + } + addHooks(configHooks) { + const hooks = flatHooks(configHooks); + const removeFns = Object.keys(hooks).map((key) => this.hook(key, hooks[key])); + return () => { + for (const unreg of removeFns) unreg(); + removeFns.length = 0; + }; + } + removeHooks(configHooks) { + const hooks = flatHooks(configHooks); + for (const key in hooks) this.removeHook(key, hooks[key]); + } + removeAllHooks() { + this._hooks = {}; + } + callHook(name, ...args) { + return this.callHookWith(serialTaskCaller, name, args); + } + callHookParallel(name, ...args) { + return this.callHookWith(parallelTaskCaller, name, args); + } + callHookWith(caller, name, args) { + const event = this._before || this._after ? { + name, + args, + context: {} + } : void 0; + if (this._before) callEachWith(this._before, event); + const result = caller(this._hooks[name] ? [...this._hooks[name]] : [], args, name); + if (result instanceof Promise) return result.finally(() => { + if (this._after && event) callEachWith(this._after, event); + }); + if (this._after && event) callEachWith(this._after, event); + return result; + } + beforeEach(function_) { + this._before = this._before || []; + this._before.push(function_); + return () => { + if (this._before !== void 0) { + const index = this._before.indexOf(function_); + if (index !== -1) this._before.splice(index, 1); + } + }; + } + afterEach(function_) { + this._after = this._after || []; + this._after.push(function_); + return () => { + if (this._after !== void 0) { + const index = this._after.indexOf(function_); + if (index !== -1) this._after.splice(index, 1); + } + }; + } +}; +function createHooks() { + return new Hookable(); +} +var HookableCore = class { + _hooks; + constructor() { + this._hooks = {}; + } + hook(name, fn) { + if (!name || typeof fn !== "function") return () => {}; + this._hooks[name] = this._hooks[name] || []; + this._hooks[name].push(fn); + return () => { + if (fn) { + this.removeHook(name, fn); + fn = void 0; + } + }; + } + removeHook(name, function_) { + const hooks = this._hooks[name]; + if (hooks) { + const index = hooks.indexOf(function_); + if (index !== -1) hooks.splice(index, 1); + if (hooks.length === 0) this._hooks[name] = void 0; + } + } + callHook(name, ...args) { + const hooks = this._hooks[name]; + if (!hooks || hooks.length === 0) return; + return callHooks(hooks.slice(), args, 0); + } +}; +const isBrowser = typeof window !== "undefined"; +function createDebugger(hooks, _options = {}) { + const options = { + inspect: isBrowser, + group: isBrowser, + filter: () => true, + ..._options + }; + const _filter = options.filter; + const filter = typeof _filter === "string" ? (name) => name.startsWith(_filter) : _filter; + const _tag = options.tag ? `[${options.tag}] ` : ""; + const logPrefix = (event) => _tag + event.name + "".padEnd(event._id, "\0"); + const _idCtr = {}; + const unsubscribeBefore = hooks.beforeEach((event) => { + if (filter !== void 0 && !filter(event.name)) return; + _idCtr[event.name] = _idCtr[event.name] || 0; + event._id = _idCtr[event.name]++; + console.time(logPrefix(event)); + }); + const unsubscribeAfter = hooks.afterEach((event) => { + if (filter !== void 0 && !filter(event.name)) return; + if (options.group) console.groupCollapsed(event.name); + if (options.inspect) console.timeLog(logPrefix(event), event.args); + else console.timeEnd(logPrefix(event)); + if (options.group) console.groupEnd(); + _idCtr[event.name]--; + }); + return { close: () => { + unsubscribeBefore(); + unsubscribeAfter(); + } }; +} +export { Hookable, HookableCore, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller }; diff --git a/apps/web/.output/server/node_modules/hookable/package.json b/apps/web/.output/server/node_modules/hookable/package.json new file mode 100644 index 0000000..c03f5c0 --- /dev/null +++ b/apps/web/.output/server/node_modules/hookable/package.json @@ -0,0 +1,54 @@ +{ + "name": "hookable", + "version": "6.1.2", + "description": "Awaitable hook system", + "keywords": [ + "hook", + "hookable", + "plugin", + "tapable", + "tappable" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "unjs/hookable" + }, + "files": [ + "dist" + ], + "type": "module", + "sideEffects": false, + "main": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "exports": { + ".": "./dist/index.mjs" + }, + "devDependencies": { + "@types/node": "^25.9.6", + "@vitest/coverage-v8": "^5", + "changelogen": "^0.6.2", + "esbuild": "^0.28.2", + "eslint-config-unjs": "^0.6.2", + "expect-type": "^1.4.0", + "hookable-prev": "npm:hookable@^6.1.1", + "mitata": "^1.0.34", + "obuild": "^0.4.40", + "oxfmt": ">=0.67.0", + "oxlint": "^1.82.0", + "typescript": "^6", + "vite": "^8.3.0", + "vitest": "^5" + }, + "scripts": { + "bench": "node --expose-gc --allow-natives-syntax test/bench.ts", + "build": "obuild src/index.ts", + "dev": "vitest", + "lint": "oxlint . && oxfmt --check src test", + "lint:fix": "oxlint . --fix && oxfmt src test", + "prepublish": "pnpm build", + "release": "pnpm test && pnpm build && changelogen --release --publish --push", + "test": "pnpm lint && vitest run --coverage", + "test:types": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/lucide-vue-next/dist/cjs/lucide-vue-next.js b/apps/web/.output/server/node_modules/lucide-vue-next/dist/cjs/lucide-vue-next.js new file mode 100644 index 0000000..3579f07 --- /dev/null +++ b/apps/web/.output/server/node_modules/lucide-vue-next/dist/cjs/lucide-vue-next.js @@ -0,0 +1,21273 @@ +/** + * @license lucide-vue-next v0.475.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var vue = require('vue'); + +const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); + +var defaultAttributes = { + xmlns: "http://www.w3.org/2000/svg", + width: 24, + height: 24, + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + "stroke-width": 2, + "stroke-linecap": "round", + "stroke-linejoin": "round" +}; + +const Icon = ({ size, strokeWidth = 2, absoluteStrokeWidth, color, iconNode, name, class: classes, ...props }, { slots }) => { + return vue.h( + "svg", + { + ...defaultAttributes, + width: size || defaultAttributes.width, + height: size || defaultAttributes.height, + stroke: color || defaultAttributes.stroke, + "stroke-width": absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth, + class: ["lucide", `lucide-${toKebabCase(name ?? "icon")}`], + ...props + }, + [...iconNode.map((child) => vue.h(...child)), ...slots.default ? [slots.default()] : []] + ); +}; + +const createLucideIcon = (iconName, iconNode) => (props, { slots }) => vue.h( + Icon, + { + ...props, + iconNode, + name: iconName + }, + slots +); + +const AArrowDown = createLucideIcon("AArrowDownIcon", [ + ["path", { d: "M3.5 13h6", key: "p1my2r" }], + ["path", { d: "m2 16 4.5-9 4.5 9", key: "ndf0b3" }], + ["path", { d: "M18 7v9", key: "pknjwm" }], + ["path", { d: "m14 12 4 4 4-4", key: "buelq4" }] +]); + +const AArrowUp = createLucideIcon("AArrowUpIcon", [ + ["path", { d: "M3.5 13h6", key: "p1my2r" }], + ["path", { d: "m2 16 4.5-9 4.5 9", key: "ndf0b3" }], + ["path", { d: "M18 16V7", key: "ty0viw" }], + ["path", { d: "m14 11 4-4 4 4", key: "1pu57t" }] +]); + +const ALargeSmall = createLucideIcon("ALargeSmallIcon", [ + ["path", { d: "M21 14h-5", key: "1vh23k" }], + ["path", { d: "M16 16v-3.5a2.5 2.5 0 0 1 5 0V16", key: "1wh10o" }], + ["path", { d: "M4.5 13h6", key: "dfilno" }], + ["path", { d: "m3 16 4.5-9 4.5 9", key: "2dxa0e" }] +]); + +const Accessibility = createLucideIcon("AccessibilityIcon", [ + ["circle", { cx: "16", cy: "4", r: "1", key: "1grugj" }], + ["path", { d: "m18 19 1-7-6 1", key: "r0i19z" }], + ["path", { d: "m5 8 3-3 5.5 3-2.36 3.5", key: "9ptxx2" }], + ["path", { d: "M4.24 14.5a5 5 0 0 0 6.88 6", key: "10kmtu" }], + ["path", { d: "M13.76 17.5a5 5 0 0 0-6.88-6", key: "2qq6rc" }] +]); + +const Activity = createLucideIcon("ActivityIcon", [ + [ + "path", + { + d: "M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2", + key: "169zse" + } + ] +]); + +const AirVent = createLucideIcon("AirVentIcon", [ + [ + "path", + { + d: "M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2", + key: "larmp2" + } + ], + ["path", { d: "M6 8h12", key: "6g4wlu" }], + ["path", { d: "M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12", key: "1bo8pg" }], + ["path", { d: "M6.6 15.6A2 2 0 1 0 10 17v-5", key: "t9h90c" }] +]); + +const Airplay = createLucideIcon("AirplayIcon", [ + [ + "path", + { + d: "M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1", + key: "ns4c3b" + } + ], + ["path", { d: "m12 15 5 6H7Z", key: "14qnn2" }] +]); + +const AlarmClockCheck = createLucideIcon("AlarmClockCheckIcon", [ + ["circle", { cx: "12", cy: "13", r: "8", key: "3y4lt7" }], + ["path", { d: "M5 3 2 6", key: "18tl5t" }], + ["path", { d: "m22 6-3-3", key: "1opdir" }], + ["path", { d: "M6.38 18.7 4 21", key: "17xu3x" }], + ["path", { d: "M17.64 18.67 20 21", key: "kv2oe2" }], + ["path", { d: "m9 13 2 2 4-4", key: "6343dt" }] +]); + +const AlarmClockMinus = createLucideIcon("AlarmClockMinusIcon", [ + ["circle", { cx: "12", cy: "13", r: "8", key: "3y4lt7" }], + ["path", { d: "M5 3 2 6", key: "18tl5t" }], + ["path", { d: "m22 6-3-3", key: "1opdir" }], + ["path", { d: "M6.38 18.7 4 21", key: "17xu3x" }], + ["path", { d: "M17.64 18.67 20 21", key: "kv2oe2" }], + ["path", { d: "M9 13h6", key: "1uhe8q" }] +]); + +const AlarmClockOff = createLucideIcon("AlarmClockOffIcon", [ + ["path", { d: "M6.87 6.87a8 8 0 1 0 11.26 11.26", key: "3on8tj" }], + ["path", { d: "M19.9 14.25a8 8 0 0 0-9.15-9.15", key: "15ghsc" }], + ["path", { d: "m22 6-3-3", key: "1opdir" }], + ["path", { d: "M6.26 18.67 4 21", key: "yzmioq" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M4 4 2 6", key: "1ycko6" }] +]); + +const AlarmClockPlus = createLucideIcon("AlarmClockPlusIcon", [ + ["circle", { cx: "12", cy: "13", r: "8", key: "3y4lt7" }], + ["path", { d: "M5 3 2 6", key: "18tl5t" }], + ["path", { d: "m22 6-3-3", key: "1opdir" }], + ["path", { d: "M6.38 18.7 4 21", key: "17xu3x" }], + ["path", { d: "M17.64 18.67 20 21", key: "kv2oe2" }], + ["path", { d: "M12 10v6", key: "1bos4e" }], + ["path", { d: "M9 13h6", key: "1uhe8q" }] +]); + +const AlarmClock = createLucideIcon("AlarmClockIcon", [ + ["circle", { cx: "12", cy: "13", r: "8", key: "3y4lt7" }], + ["path", { d: "M12 9v4l2 2", key: "1c63tq" }], + ["path", { d: "M5 3 2 6", key: "18tl5t" }], + ["path", { d: "m22 6-3-3", key: "1opdir" }], + ["path", { d: "M6.38 18.7 4 21", key: "17xu3x" }], + ["path", { d: "M17.64 18.67 20 21", key: "kv2oe2" }] +]); + +const AlarmSmoke = createLucideIcon("AlarmSmokeIcon", [ + ["path", { d: "M11 21c0-2.5 2-2.5 2-5", key: "1sicvv" }], + ["path", { d: "M16 21c0-2.5 2-2.5 2-5", key: "1o3eny" }], + ["path", { d: "m19 8-.8 3a1.25 1.25 0 0 1-1.2 1H7a1.25 1.25 0 0 1-1.2-1L5 8", key: "1bvca4" }], + [ + "path", + { d: "M21 3a1 1 0 0 1 1 1v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4a1 1 0 0 1 1-1z", key: "x3qr1j" } + ], + ["path", { d: "M6 21c0-2.5 2-2.5 2-5", key: "i3w1gp" }] +]); + +const Album = createLucideIcon("AlbumIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["polyline", { points: "11 3 11 11 14 8 17 11 17 3", key: "1wcwz3" }] +]); + +const AlignCenterHorizontal = createLucideIcon("AlignCenterHorizontalIcon", [ + ["path", { d: "M2 12h20", key: "9i4pu4" }], + ["path", { d: "M10 16v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4", key: "11f1s0" }], + ["path", { d: "M10 8V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v4", key: "t14dx9" }], + ["path", { d: "M20 16v1a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-1", key: "1w07xs" }], + ["path", { d: "M14 8V7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v1", key: "1apec2" }] +]); + +const AlignCenterVertical = createLucideIcon("AlignCenterVerticalIcon", [ + ["path", { d: "M12 2v20", key: "t6zp3m" }], + ["path", { d: "M8 10H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h4", key: "14d6g8" }], + ["path", { d: "M16 10h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4", key: "1e2lrw" }], + ["path", { d: "M8 20H7a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2h1", key: "1fkdwx" }], + ["path", { d: "M16 14h1a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-1", key: "1euafb" }] +]); + +const AlignCenter = createLucideIcon("AlignCenterIcon", [ + ["path", { d: "M17 12H7", key: "16if0g" }], + ["path", { d: "M19 18H5", key: "18s9l3" }], + ["path", { d: "M21 6H3", key: "1jwq7v" }] +]); + +const AlignEndHorizontal = createLucideIcon("AlignEndHorizontalIcon", [ + ["rect", { width: "6", height: "16", x: "4", y: "2", rx: "2", key: "z5wdxg" }], + ["rect", { width: "6", height: "9", x: "14", y: "9", rx: "2", key: "um7a8w" }], + ["path", { d: "M22 22H2", key: "19qnx5" }] +]); + +const AlignEndVertical = createLucideIcon("AlignEndVerticalIcon", [ + ["rect", { width: "16", height: "6", x: "2", y: "4", rx: "2", key: "10wcwx" }], + ["rect", { width: "9", height: "6", x: "9", y: "14", rx: "2", key: "4p5bwg" }], + ["path", { d: "M22 22V2", key: "12ipfv" }] +]); + +const AlignHorizontalDistributeCenter = createLucideIcon("AlignHorizontalDistributeCenterIcon", [ + ["rect", { width: "6", height: "14", x: "4", y: "5", rx: "2", key: "1wwnby" }], + ["rect", { width: "6", height: "10", x: "14", y: "7", rx: "2", key: "1fe6j6" }], + ["path", { d: "M17 22v-5", key: "4b6g73" }], + ["path", { d: "M17 7V2", key: "hnrr36" }], + ["path", { d: "M7 22v-3", key: "1r4jpn" }], + ["path", { d: "M7 5V2", key: "liy1u9" }] +]); + +const AlignHorizontalDistributeEnd = createLucideIcon("AlignHorizontalDistributeEndIcon", [ + ["rect", { width: "6", height: "14", x: "4", y: "5", rx: "2", key: "1wwnby" }], + ["rect", { width: "6", height: "10", x: "14", y: "7", rx: "2", key: "1fe6j6" }], + ["path", { d: "M10 2v20", key: "uyc634" }], + ["path", { d: "M20 2v20", key: "1tx262" }] +]); + +const AlignHorizontalDistributeStart = createLucideIcon("AlignHorizontalDistributeStartIcon", [ + ["rect", { width: "6", height: "14", x: "4", y: "5", rx: "2", key: "1wwnby" }], + ["rect", { width: "6", height: "10", x: "14", y: "7", rx: "2", key: "1fe6j6" }], + ["path", { d: "M4 2v20", key: "gtpd5x" }], + ["path", { d: "M14 2v20", key: "tg6bpw" }] +]); + +const AlignHorizontalJustifyCenter = createLucideIcon("AlignHorizontalJustifyCenterIcon", [ + ["rect", { width: "6", height: "14", x: "2", y: "5", rx: "2", key: "dy24zr" }], + ["rect", { width: "6", height: "10", x: "16", y: "7", rx: "2", key: "13zkjt" }], + ["path", { d: "M12 2v20", key: "t6zp3m" }] +]); + +const AlignHorizontalJustifyEnd = createLucideIcon("AlignHorizontalJustifyEndIcon", [ + ["rect", { width: "6", height: "14", x: "2", y: "5", rx: "2", key: "dy24zr" }], + ["rect", { width: "6", height: "10", x: "12", y: "7", rx: "2", key: "1ht384" }], + ["path", { d: "M22 2v20", key: "40qfg1" }] +]); + +const AlignHorizontalJustifyStart = createLucideIcon("AlignHorizontalJustifyStartIcon", [ + ["rect", { width: "6", height: "14", x: "6", y: "5", rx: "2", key: "hsirpf" }], + ["rect", { width: "6", height: "10", x: "16", y: "7", rx: "2", key: "13zkjt" }], + ["path", { d: "M2 2v20", key: "1ivd8o" }] +]); + +const AlignHorizontalSpaceAround = createLucideIcon("AlignHorizontalSpaceAroundIcon", [ + ["rect", { width: "6", height: "10", x: "9", y: "7", rx: "2", key: "yn7j0q" }], + ["path", { d: "M4 22V2", key: "tsjzd3" }], + ["path", { d: "M20 22V2", key: "1bnhr8" }] +]); + +const AlignHorizontalSpaceBetween = createLucideIcon("AlignHorizontalSpaceBetweenIcon", [ + ["rect", { width: "6", height: "14", x: "3", y: "5", rx: "2", key: "j77dae" }], + ["rect", { width: "6", height: "10", x: "15", y: "7", rx: "2", key: "bq30hj" }], + ["path", { d: "M3 2v20", key: "1d2pfg" }], + ["path", { d: "M21 2v20", key: "p059bm" }] +]); + +const AlignJustify = createLucideIcon("AlignJustifyIcon", [ + ["path", { d: "M3 12h18", key: "1i2n21" }], + ["path", { d: "M3 18h18", key: "1h113x" }], + ["path", { d: "M3 6h18", key: "d0wm0j" }] +]); + +const AlignLeft = createLucideIcon("AlignLeftIcon", [ + ["path", { d: "M15 12H3", key: "6jk70r" }], + ["path", { d: "M17 18H3", key: "1amg6g" }], + ["path", { d: "M21 6H3", key: "1jwq7v" }] +]); + +const AlignRight = createLucideIcon("AlignRightIcon", [ + ["path", { d: "M21 12H9", key: "dn1m92" }], + ["path", { d: "M21 18H7", key: "1ygte8" }], + ["path", { d: "M21 6H3", key: "1jwq7v" }] +]); + +const AlignStartHorizontal = createLucideIcon("AlignStartHorizontalIcon", [ + ["rect", { width: "6", height: "16", x: "4", y: "6", rx: "2", key: "1n4dg1" }], + ["rect", { width: "6", height: "9", x: "14", y: "6", rx: "2", key: "17khns" }], + ["path", { d: "M22 2H2", key: "fhrpnj" }] +]); + +const AlignStartVertical = createLucideIcon("AlignStartVerticalIcon", [ + ["rect", { width: "9", height: "6", x: "6", y: "14", rx: "2", key: "lpm2y7" }], + ["rect", { width: "16", height: "6", x: "6", y: "4", rx: "2", key: "rdj6ps" }], + ["path", { d: "M2 2v20", key: "1ivd8o" }] +]); + +const AlignVerticalDistributeCenter = createLucideIcon("AlignVerticalDistributeCenterIcon", [ + ["path", { d: "M22 17h-3", key: "1lwga1" }], + ["path", { d: "M22 7h-5", key: "o2endc" }], + ["path", { d: "M5 17H2", key: "1gx9xc" }], + ["path", { d: "M7 7H2", key: "6bq26l" }], + ["rect", { x: "5", y: "14", width: "14", height: "6", rx: "2", key: "1qrzuf" }], + ["rect", { x: "7", y: "4", width: "10", height: "6", rx: "2", key: "we8e9z" }] +]); + +const AlignVerticalDistributeEnd = createLucideIcon("AlignVerticalDistributeEndIcon", [ + ["rect", { width: "14", height: "6", x: "5", y: "14", rx: "2", key: "jmoj9s" }], + ["rect", { width: "10", height: "6", x: "7", y: "4", rx: "2", key: "aza5on" }], + ["path", { d: "M2 20h20", key: "owomy5" }], + ["path", { d: "M2 10h20", key: "1ir3d8" }] +]); + +const AlignVerticalDistributeStart = createLucideIcon("AlignVerticalDistributeStartIcon", [ + ["rect", { width: "14", height: "6", x: "5", y: "14", rx: "2", key: "jmoj9s" }], + ["rect", { width: "10", height: "6", x: "7", y: "4", rx: "2", key: "aza5on" }], + ["path", { d: "M2 14h20", key: "myj16y" }], + ["path", { d: "M2 4h20", key: "mda7wb" }] +]); + +const AlignVerticalJustifyCenter = createLucideIcon("AlignVerticalJustifyCenterIcon", [ + ["rect", { width: "14", height: "6", x: "5", y: "16", rx: "2", key: "1i8z2d" }], + ["rect", { width: "10", height: "6", x: "7", y: "2", rx: "2", key: "ypihtt" }], + ["path", { d: "M2 12h20", key: "9i4pu4" }] +]); + +const AlignVerticalJustifyEnd = createLucideIcon("AlignVerticalJustifyEndIcon", [ + ["rect", { width: "14", height: "6", x: "5", y: "12", rx: "2", key: "4l4tp2" }], + ["rect", { width: "10", height: "6", x: "7", y: "2", rx: "2", key: "ypihtt" }], + ["path", { d: "M2 22h20", key: "272qi7" }] +]); + +const AlignVerticalJustifyStart = createLucideIcon("AlignVerticalJustifyStartIcon", [ + ["rect", { width: "14", height: "6", x: "5", y: "16", rx: "2", key: "1i8z2d" }], + ["rect", { width: "10", height: "6", x: "7", y: "6", rx: "2", key: "13squh" }], + ["path", { d: "M2 2h20", key: "1ennik" }] +]); + +const AlignVerticalSpaceAround = createLucideIcon("AlignVerticalSpaceAroundIcon", [ + ["rect", { width: "10", height: "6", x: "7", y: "9", rx: "2", key: "b1zbii" }], + ["path", { d: "M22 20H2", key: "1p1f7z" }], + ["path", { d: "M22 4H2", key: "1b7qnq" }] +]); + +const AlignVerticalSpaceBetween = createLucideIcon("AlignVerticalSpaceBetweenIcon", [ + ["rect", { width: "14", height: "6", x: "5", y: "15", rx: "2", key: "1w91an" }], + ["rect", { width: "10", height: "6", x: "7", y: "3", rx: "2", key: "17wqzy" }], + ["path", { d: "M2 21h20", key: "1nyx9w" }], + ["path", { d: "M2 3h20", key: "91anmk" }] +]); + +const Ambulance = createLucideIcon("AmbulanceIcon", [ + ["path", { d: "M10 10H6", key: "1bsnug" }], + ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }], + [ + "path", + { + d: "M19 18h2a1 1 0 0 0 1-1v-3.28a1 1 0 0 0-.684-.948l-1.923-.641a1 1 0 0 1-.578-.502l-1.539-3.076A1 1 0 0 0 16.382 8H14", + key: "lrkjwd" + } + ], + ["path", { d: "M8 8v4", key: "1fwk8c" }], + ["path", { d: "M9 18h6", key: "x1upvd" }], + ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }], + ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }] +]); + +const Ampersand = createLucideIcon("AmpersandIcon", [ + [ + "path", + { + d: "M17.5 12c0 4.4-3.6 8-8 8A4.5 4.5 0 0 1 5 15.5c0-6 8-4 8-8.5a3 3 0 1 0-6 0c0 3 2.5 8.5 12 13", + key: "1o9ehi" + } + ], + ["path", { d: "M16 12h3", key: "4uvgyw" }] +]); + +const Ampersands = createLucideIcon("AmpersandsIcon", [ + [ + "path", + { + d: "M10 17c-5-3-7-7-7-9a2 2 0 0 1 4 0c0 2.5-5 2.5-5 6 0 1.7 1.3 3 3 3 2.8 0 5-2.2 5-5", + key: "12lh1k" + } + ], + [ + "path", + { + d: "M22 17c-5-3-7-7-7-9a2 2 0 0 1 4 0c0 2.5-5 2.5-5 6 0 1.7 1.3 3 3 3 2.8 0 5-2.2 5-5", + key: "173c68" + } + ] +]); + +const Amphora = createLucideIcon("AmphoraIcon", [ + [ + "path", + { d: "M10 2v5.632c0 .424-.272.795-.653.982A6 6 0 0 0 6 14c.006 4 3 7 5 8", key: "1h8rid" } + ], + ["path", { d: "M10 5H8a2 2 0 0 0 0 4h.68", key: "3ezsi6" }], + ["path", { d: "M14 2v5.632c0 .424.272.795.652.982A6 6 0 0 1 18 14c0 4-3 7-5 8", key: "yt6q09" }], + ["path", { d: "M14 5h2a2 2 0 0 1 0 4h-.68", key: "8f95yk" }], + ["path", { d: "M18 22H6", key: "mg6kv4" }], + ["path", { d: "M9 2h6", key: "1jrp98" }] +]); + +const Anchor = createLucideIcon("AnchorIcon", [ + ["path", { d: "M12 22V8", key: "qkxhtm" }], + ["path", { d: "M5 12H2a10 10 0 0 0 20 0h-3", key: "1hv3nh" }], + ["circle", { cx: "12", cy: "5", r: "3", key: "rqqgnr" }] +]); + +const Angry = createLucideIcon("AngryIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M16 16s-1.5-2-4-2-4 2-4 2", key: "epbg0q" }], + ["path", { d: "M7.5 8 10 9", key: "olxxln" }], + ["path", { d: "m14 9 2.5-1", key: "1j6cij" }], + ["path", { d: "M9 10h.01", key: "qbtxuw" }], + ["path", { d: "M15 10h.01", key: "1qmjsl" }] +]); + +const Annoyed = createLucideIcon("AnnoyedIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M8 15h8", key: "45n4r" }], + ["path", { d: "M8 9h2", key: "1g203m" }], + ["path", { d: "M14 9h2", key: "116p9w" }] +]); + +const Antenna = createLucideIcon("AntennaIcon", [ + ["path", { d: "M2 12 7 2", key: "117k30" }], + ["path", { d: "m7 12 5-10", key: "1tvx22" }], + ["path", { d: "m12 12 5-10", key: "ev1o1a" }], + ["path", { d: "m17 12 5-10", key: "1e4ti3" }], + ["path", { d: "M4.5 7h15", key: "vlsxkz" }], + ["path", { d: "M12 16v6", key: "c8a4gj" }] +]); + +const Anvil = createLucideIcon("AnvilIcon", [ + ["path", { d: "M7 10H6a4 4 0 0 1-4-4 1 1 0 0 1 1-1h4", key: "1hjpb6" }], + [ + "path", + { d: "M7 5a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1 7 7 0 0 1-7 7H8a1 1 0 0 1-1-1z", key: "1qn45f" } + ], + ["path", { d: "M9 12v5", key: "3anwtq" }], + ["path", { d: "M15 12v5", key: "5xh3zn" }], + [ + "path", + { d: "M5 20a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3 1 1 0 0 1-1 1H6a1 1 0 0 1-1-1", key: "1fi4x8" } + ] +]); + +const Aperture = createLucideIcon("ApertureIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m14.31 8 5.74 9.94", key: "1y6ab4" }], + ["path", { d: "M9.69 8h11.48", key: "1wxppr" }], + ["path", { d: "m7.38 12 5.74-9.94", key: "1grp0k" }], + ["path", { d: "M9.69 16 3.95 6.06", key: "libnyf" }], + ["path", { d: "M14.31 16H2.83", key: "x5fava" }], + ["path", { d: "m16.62 12-5.74 9.94", key: "1vwawt" }] +]); + +const AppWindowMac = createLucideIcon("AppWindowMacIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "M6 8h.01", key: "x9i8wu" }], + ["path", { d: "M10 8h.01", key: "1r9ogq" }], + ["path", { d: "M14 8h.01", key: "1primd" }] +]); + +const AppWindow = createLucideIcon("AppWindowIcon", [ + ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }], + ["path", { d: "M10 4v4", key: "pp8u80" }], + ["path", { d: "M2 8h20", key: "d11cs7" }], + ["path", { d: "M6 4v4", key: "1svtjw" }] +]); + +const Apple = createLucideIcon("AppleIcon", [ + [ + "path", + { + d: "M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z", + key: "3s7exb" + } + ], + ["path", { d: "M10 2c1 .5 2 2 2 5", key: "fcco2y" }] +]); + +const ArchiveRestore = createLucideIcon("ArchiveRestoreIcon", [ + ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }], + ["path", { d: "M4 8v11a2 2 0 0 0 2 2h2", key: "tvwodi" }], + ["path", { d: "M20 8v11a2 2 0 0 1-2 2h-2", key: "1gkqxj" }], + ["path", { d: "m9 15 3-3 3 3", key: "1pd0qc" }], + ["path", { d: "M12 12v9", key: "192myk" }] +]); + +const ArchiveX = createLucideIcon("ArchiveXIcon", [ + ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }], + ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }], + ["path", { d: "m9.5 17 5-5", key: "nakeu6" }], + ["path", { d: "m9.5 12 5 5", key: "1hccrj" }] +]); + +const Archive = createLucideIcon("ArchiveIcon", [ + ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }], + ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }], + ["path", { d: "M10 12h4", key: "a56b0p" }] +]); + +const Armchair = createLucideIcon("ArmchairIcon", [ + ["path", { d: "M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3", key: "irtipd" }], + [ + "path", + { + d: "M3 16a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z", + key: "1qyhux" + } + ], + ["path", { d: "M5 18v2", key: "ppbyun" }], + ["path", { d: "M19 18v2", key: "gy7782" }] +]); + +const ArrowBigDownDash = createLucideIcon("ArrowBigDownDashIcon", [ + ["path", { d: "M15 5H9", key: "1tp3ed" }], + ["path", { d: "M15 9v3h4l-7 7-7-7h4V9z", key: "ncdc4b" }] +]); + +const ArrowBigDown = createLucideIcon("ArrowBigDownIcon", [ + ["path", { d: "M15 6v6h4l-7 7-7-7h4V6h6z", key: "1thax2" }] +]); + +const ArrowBigLeftDash = createLucideIcon("ArrowBigLeftDashIcon", [ + ["path", { d: "M19 15V9", key: "1hci5f" }], + ["path", { d: "M15 15h-3v4l-7-7 7-7v4h3v6z", key: "16tjna" }] +]); + +const ArrowBigLeft = createLucideIcon("ArrowBigLeftIcon", [ + ["path", { d: "M18 15h-6v4l-7-7 7-7v4h6v6z", key: "lbrdak" }] +]); + +const ArrowBigRightDash = createLucideIcon("ArrowBigRightDashIcon", [ + ["path", { d: "M5 9v6", key: "158jrl" }], + ["path", { d: "M9 9h3V5l7 7-7 7v-4H9V9z", key: "1sg2xn" }] +]); + +const ArrowBigRight = createLucideIcon("ArrowBigRightIcon", [ + ["path", { d: "M6 9h6V5l7 7-7 7v-4H6V9z", key: "7fvt9c" }] +]); + +const ArrowBigUpDash = createLucideIcon("ArrowBigUpDashIcon", [ + ["path", { d: "M9 19h6", key: "456am0" }], + ["path", { d: "M9 15v-3H5l7-7 7 7h-4v3H9z", key: "1r2uve" }] +]); + +const ArrowBigUp = createLucideIcon("ArrowBigUpIcon", [ + ["path", { d: "M9 18v-6H5l7-7 7 7h-4v6H9z", key: "1x06kx" }] +]); + +const ArrowDown01 = createLucideIcon("ArrowDown01Icon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 20V4", key: "1yoxec" }], + ["rect", { x: "15", y: "4", width: "4", height: "6", ry: "2", key: "1bwicg" }], + ["path", { d: "M17 20v-6h-2", key: "1qp1so" }], + ["path", { d: "M15 20h4", key: "1j968p" }] +]); + +const ArrowDown10 = createLucideIcon("ArrowDown10Icon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 20V4", key: "1yoxec" }], + ["path", { d: "M17 10V4h-2", key: "zcsr5x" }], + ["path", { d: "M15 10h4", key: "id2lce" }], + ["rect", { x: "15", y: "14", width: "4", height: "6", ry: "2", key: "33xykx" }] +]); + +const ArrowDownAZ = createLucideIcon("ArrowDownAZIcon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 20V4", key: "1yoxec" }], + ["path", { d: "M20 8h-5", key: "1vsyxs" }], + ["path", { d: "M15 10V6.5a2.5 2.5 0 0 1 5 0V10", key: "ag13bf" }], + ["path", { d: "M15 14h5l-5 6h5", key: "ur5jdg" }] +]); + +const ArrowDownFromLine = createLucideIcon("ArrowDownFromLineIcon", [ + ["path", { d: "M19 3H5", key: "1236rx" }], + ["path", { d: "M12 21V7", key: "gj6g52" }], + ["path", { d: "m6 15 6 6 6-6", key: "h15q88" }] +]); + +const ArrowDownLeft = createLucideIcon("ArrowDownLeftIcon", [ + ["path", { d: "M17 7 7 17", key: "15tmo1" }], + ["path", { d: "M17 17H7V7", key: "1org7z" }] +]); + +const ArrowDownNarrowWide = createLucideIcon("ArrowDownNarrowWideIcon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 20V4", key: "1yoxec" }], + ["path", { d: "M11 4h4", key: "6d7r33" }], + ["path", { d: "M11 8h7", key: "djye34" }], + ["path", { d: "M11 12h10", key: "1438ji" }] +]); + +const ArrowDownRight = createLucideIcon("ArrowDownRightIcon", [ + ["path", { d: "m7 7 10 10", key: "1fmybs" }], + ["path", { d: "M17 7v10H7", key: "6fjiku" }] +]); + +const ArrowDownToDot = createLucideIcon("ArrowDownToDotIcon", [ + ["path", { d: "M12 2v14", key: "jyx4ut" }], + ["path", { d: "m19 9-7 7-7-7", key: "1oe3oy" }], + ["circle", { cx: "12", cy: "21", r: "1", key: "o0uj5v" }] +]); + +const ArrowDownToLine = createLucideIcon("ArrowDownToLineIcon", [ + ["path", { d: "M12 17V3", key: "1cwfxf" }], + ["path", { d: "m6 11 6 6 6-6", key: "12ii2o" }], + ["path", { d: "M19 21H5", key: "150jfl" }] +]); + +const ArrowDownUp = createLucideIcon("ArrowDownUpIcon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 20V4", key: "1yoxec" }], + ["path", { d: "m21 8-4-4-4 4", key: "1c9v7m" }], + ["path", { d: "M17 4v16", key: "7dpous" }] +]); + +const ArrowDownWideNarrow = createLucideIcon("ArrowDownWideNarrowIcon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 20V4", key: "1yoxec" }], + ["path", { d: "M11 4h10", key: "1w87gc" }], + ["path", { d: "M11 8h7", key: "djye34" }], + ["path", { d: "M11 12h4", key: "q8tih4" }] +]); + +const ArrowDownZA = createLucideIcon("ArrowDownZAIcon", [ + ["path", { d: "m3 16 4 4 4-4", key: "1co6wj" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["path", { d: "M15 4h5l-5 6h5", key: "8asdl1" }], + ["path", { d: "M15 20v-3.5a2.5 2.5 0 0 1 5 0V20", key: "r6l5cz" }], + ["path", { d: "M20 18h-5", key: "18j1r2" }] +]); + +const ArrowDown = createLucideIcon("ArrowDownIcon", [ + ["path", { d: "M12 5v14", key: "s699le" }], + ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }] +]); + +const ArrowLeftFromLine = createLucideIcon("ArrowLeftFromLineIcon", [ + ["path", { d: "m9 6-6 6 6 6", key: "7v63n9" }], + ["path", { d: "M3 12h14", key: "13k4hi" }], + ["path", { d: "M21 19V5", key: "b4bplr" }] +]); + +const ArrowLeftRight = createLucideIcon("ArrowLeftRightIcon", [ + ["path", { d: "M8 3 4 7l4 4", key: "9rb6wj" }], + ["path", { d: "M4 7h16", key: "6tx8e3" }], + ["path", { d: "m16 21 4-4-4-4", key: "siv7j2" }], + ["path", { d: "M20 17H4", key: "h6l3hr" }] +]); + +const ArrowLeftToLine = createLucideIcon("ArrowLeftToLineIcon", [ + ["path", { d: "M3 19V5", key: "rwsyhb" }], + ["path", { d: "m13 6-6 6 6 6", key: "1yhaz7" }], + ["path", { d: "M7 12h14", key: "uoisry" }] +]); + +const ArrowLeft = createLucideIcon("ArrowLeftIcon", [ + ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }], + ["path", { d: "M19 12H5", key: "x3x0zl" }] +]); + +const ArrowRightFromLine = createLucideIcon("ArrowRightFromLineIcon", [ + ["path", { d: "M3 5v14", key: "1nt18q" }], + ["path", { d: "M21 12H7", key: "13ipq5" }], + ["path", { d: "m15 18 6-6-6-6", key: "6tx3qv" }] +]); + +const ArrowRightLeft = createLucideIcon("ArrowRightLeftIcon", [ + ["path", { d: "m16 3 4 4-4 4", key: "1x1c3m" }], + ["path", { d: "M20 7H4", key: "zbl0bi" }], + ["path", { d: "m8 21-4-4 4-4", key: "h9nckh" }], + ["path", { d: "M4 17h16", key: "g4d7ey" }] +]); + +const ArrowRightToLine = createLucideIcon("ArrowRightToLineIcon", [ + ["path", { d: "M17 12H3", key: "8awo09" }], + ["path", { d: "m11 18 6-6-6-6", key: "8c2y43" }], + ["path", { d: "M21 5v14", key: "nzette" }] +]); + +const ArrowRight = createLucideIcon("ArrowRightIcon", [ + ["path", { d: "M5 12h14", key: "1ays0h" }], + ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }] +]); + +const ArrowUp01 = createLucideIcon("ArrowUp01Icon", [ + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["rect", { x: "15", y: "4", width: "4", height: "6", ry: "2", key: "1bwicg" }], + ["path", { d: "M17 20v-6h-2", key: "1qp1so" }], + ["path", { d: "M15 20h4", key: "1j968p" }] +]); + +const ArrowUp10 = createLucideIcon("ArrowUp10Icon", [ + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["path", { d: "M17 10V4h-2", key: "zcsr5x" }], + ["path", { d: "M15 10h4", key: "id2lce" }], + ["rect", { x: "15", y: "14", width: "4", height: "6", ry: "2", key: "33xykx" }] +]); + +const ArrowUpAZ = createLucideIcon("ArrowUpAZIcon", [ + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["path", { d: "M20 8h-5", key: "1vsyxs" }], + ["path", { d: "M15 10V6.5a2.5 2.5 0 0 1 5 0V10", key: "ag13bf" }], + ["path", { d: "M15 14h5l-5 6h5", key: "ur5jdg" }] +]); + +const ArrowUpDown = createLucideIcon("ArrowUpDownIcon", [ + ["path", { d: "m21 16-4 4-4-4", key: "f6ql7i" }], + ["path", { d: "M17 20V4", key: "1ejh1v" }], + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }] +]); + +const ArrowUpFromDot = createLucideIcon("ArrowUpFromDotIcon", [ + ["path", { d: "m5 9 7-7 7 7", key: "1hw5ic" }], + ["path", { d: "M12 16V2", key: "ywoabb" }], + ["circle", { cx: "12", cy: "21", r: "1", key: "o0uj5v" }] +]); + +const ArrowUpFromLine = createLucideIcon("ArrowUpFromLineIcon", [ + ["path", { d: "m18 9-6-6-6 6", key: "kcunyi" }], + ["path", { d: "M12 3v14", key: "7cf3v8" }], + ["path", { d: "M5 21h14", key: "11awu3" }] +]); + +const ArrowUpLeft = createLucideIcon("ArrowUpLeftIcon", [ + ["path", { d: "M7 17V7h10", key: "11bw93" }], + ["path", { d: "M17 17 7 7", key: "2786uv" }] +]); + +const ArrowUpNarrowWide = createLucideIcon("ArrowUpNarrowWideIcon", [ + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["path", { d: "M11 12h4", key: "q8tih4" }], + ["path", { d: "M11 16h7", key: "uosisv" }], + ["path", { d: "M11 20h10", key: "jvxblo" }] +]); + +const ArrowUpRight = createLucideIcon("ArrowUpRightIcon", [ + ["path", { d: "M7 7h10v10", key: "1tivn9" }], + ["path", { d: "M7 17 17 7", key: "1vkiza" }] +]); + +const ArrowUpToLine = createLucideIcon("ArrowUpToLineIcon", [ + ["path", { d: "M5 3h14", key: "7usisc" }], + ["path", { d: "m18 13-6-6-6 6", key: "1kf1n9" }], + ["path", { d: "M12 7v14", key: "1akyts" }] +]); + +const ArrowUpWideNarrow = createLucideIcon("ArrowUpWideNarrowIcon", [ + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["path", { d: "M11 12h10", key: "1438ji" }], + ["path", { d: "M11 16h7", key: "uosisv" }], + ["path", { d: "M11 20h4", key: "1krc32" }] +]); + +const ArrowUpZA = createLucideIcon("ArrowUpZAIcon", [ + ["path", { d: "m3 8 4-4 4 4", key: "11wl7u" }], + ["path", { d: "M7 4v16", key: "1glfcx" }], + ["path", { d: "M15 4h5l-5 6h5", key: "8asdl1" }], + ["path", { d: "M15 20v-3.5a2.5 2.5 0 0 1 5 0V20", key: "r6l5cz" }], + ["path", { d: "M20 18h-5", key: "18j1r2" }] +]); + +const ArrowUp = createLucideIcon("ArrowUpIcon", [ + ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }], + ["path", { d: "M12 19V5", key: "x0mq9r" }] +]); + +const ArrowsUpFromLine = createLucideIcon("ArrowsUpFromLineIcon", [ + ["path", { d: "m4 6 3-3 3 3", key: "9aidw8" }], + ["path", { d: "M7 17V3", key: "19qxw1" }], + ["path", { d: "m14 6 3-3 3 3", key: "6iy689" }], + ["path", { d: "M17 17V3", key: "o0fmgi" }], + ["path", { d: "M4 21h16", key: "1h09gz" }] +]); + +const Asterisk = createLucideIcon("AsteriskIcon", [ + ["path", { d: "M12 6v12", key: "1vza4d" }], + ["path", { d: "M17.196 9 6.804 15", key: "1ah31z" }], + ["path", { d: "m6.804 9 10.392 6", key: "1b6pxd" }] +]); + +const AtSign = createLucideIcon("AtSignIcon", [ + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["path", { d: "M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8", key: "7n84p3" }] +]); + +const Atom = createLucideIcon("AtomIcon", [ + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }], + [ + "path", + { + d: "M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z", + key: "1l2ple" + } + ], + [ + "path", + { + d: "M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z", + key: "1wam0m" + } + ] +]); + +const AudioLines = createLucideIcon("AudioLinesIcon", [ + ["path", { d: "M2 10v3", key: "1fnikh" }], + ["path", { d: "M6 6v11", key: "11sgs0" }], + ["path", { d: "M10 3v18", key: "yhl04a" }], + ["path", { d: "M14 8v7", key: "3a1oy3" }], + ["path", { d: "M18 5v13", key: "123xd1" }], + ["path", { d: "M22 10v3", key: "154ddg" }] +]); + +const AudioWaveform = createLucideIcon("AudioWaveformIcon", [ + [ + "path", + { + d: "M2 13a2 2 0 0 0 2-2V7a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0V4a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0v-4a2 2 0 0 1 2-2", + key: "57tc96" + } + ] +]); + +const Award = createLucideIcon("AwardIcon", [ + [ + "path", + { + d: "m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526", + key: "1yiouv" + } + ], + ["circle", { cx: "12", cy: "8", r: "6", key: "1vp47v" }] +]); + +const Axe = createLucideIcon("AxeIcon", [ + ["path", { d: "m14 12-8.5 8.5a2.12 2.12 0 1 1-3-3L11 9", key: "csbz4o" }], + ["path", { d: "M15 13 9 7l4-4 6 6h3a8 8 0 0 1-7 7z", key: "113wfo" }] +]); + +const Axis3d = createLucideIcon("Axis3dIcon", [ + ["path", { d: "M4 4v16h16", key: "1s015l" }], + ["path", { d: "m4 20 7-7", key: "17qe9y" }] +]); + +const Baby = createLucideIcon("BabyIcon", [ + ["path", { d: "M9 12h.01", key: "157uk2" }], + ["path", { d: "M15 12h.01", key: "1k8ypt" }], + ["path", { d: "M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5", key: "1u7htd" }], + [ + "path", + { + d: "M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1", + key: "5yv0yz" + } + ] +]); + +const Backpack = createLucideIcon("BackpackIcon", [ + [ + "path", + { d: "M4 10a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2z", key: "1ol0lm" } + ], + ["path", { d: "M8 10h8", key: "c7uz4u" }], + ["path", { d: "M8 18h8", key: "1no2b1" }], + ["path", { d: "M8 22v-6a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v6", key: "1fr6do" }], + ["path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2", key: "donm21" }] +]); + +const BadgeAlert = createLucideIcon("BadgeAlertIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }], + ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }] +]); + +const BadgeCent = createLucideIcon("BadgeCentIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M12 7v10", key: "jspqdw" }], + ["path", { d: "M15.4 10a4 4 0 1 0 0 4", key: "2eqtx8" }] +]); + +const BadgeCheck = createLucideIcon("BadgeCheckIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }] +]); + +const BadgeDollarSign = createLucideIcon("BadgeDollarSignIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8", key: "1h4pet" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }] +]); + +const BadgeEuro = createLucideIcon("BadgeEuroIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M7 12h5", key: "gblrwe" }], + ["path", { d: "M15 9.4a4 4 0 1 0 0 5.2", key: "1makmb" }] +]); + +const BadgeHelp = createLucideIcon("BadgeHelpIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }], + ["line", { x1: "12", x2: "12.01", y1: "17", y2: "17", key: "io3f8k" }] +]); + +const BadgeIndianRupee = createLucideIcon("BadgeIndianRupeeIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M8 8h8", key: "1bis0t" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "m13 17-5-1h1a4 4 0 0 0 0-8", key: "nu2bwa" }] +]); + +const BadgeInfo = createLucideIcon("BadgeInfoIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["line", { x1: "12", x2: "12", y1: "16", y2: "12", key: "1y1yb1" }], + ["line", { x1: "12", x2: "12.01", y1: "8", y2: "8", key: "110wyk" }] +]); + +const BadgeJapaneseYen = createLucideIcon("BadgeJapaneseYenIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "m9 8 3 3v7", key: "17yadx" }], + ["path", { d: "m12 11 3-3", key: "p4cfq1" }], + ["path", { d: "M9 12h6", key: "1c52cq" }], + ["path", { d: "M9 16h6", key: "8wimt3" }] +]); + +const BadgeMinus = createLucideIcon("BadgeMinusIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }] +]); + +const BadgePercent = createLucideIcon("BadgePercentIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "M9 9h.01", key: "1q5me6" }], + ["path", { d: "M15 15h.01", key: "lqbp3k" }] +]); + +const BadgePlus = createLucideIcon("BadgePlusIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["line", { x1: "12", x2: "12", y1: "8", y2: "16", key: "10p56q" }], + ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }] +]); + +const BadgePoundSterling = createLucideIcon("BadgePoundSterlingIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M8 12h4", key: "qz6y1c" }], + ["path", { d: "M10 16V9.5a2.5 2.5 0 0 1 5 0", key: "3mlbjk" }], + ["path", { d: "M8 16h7", key: "sbedsn" }] +]); + +const BadgeRussianRuble = createLucideIcon("BadgeRussianRubleIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M9 16h5", key: "1syiyw" }], + ["path", { d: "M9 12h5a2 2 0 1 0 0-4h-3v9", key: "1ge9c1" }] +]); + +const BadgeSwissFranc = createLucideIcon("BadgeSwissFrancIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["path", { d: "M11 17V8h4", key: "1bfq6y" }], + ["path", { d: "M11 12h3", key: "2eqnfz" }], + ["path", { d: "M9 16h4", key: "1skf3a" }] +]); + +const BadgeX = createLucideIcon("BadgeXIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ], + ["line", { x1: "15", x2: "9", y1: "9", y2: "15", key: "f7djnv" }], + ["line", { x1: "9", x2: "15", y1: "9", y2: "15", key: "1shsy8" }] +]); + +const Badge = createLucideIcon("BadgeIcon", [ + [ + "path", + { + d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z", + key: "3c2336" + } + ] +]); + +const BaggageClaim = createLucideIcon("BaggageClaimIcon", [ + ["path", { d: "M22 18H6a2 2 0 0 1-2-2V7a2 2 0 0 0-2-2", key: "4irg2o" }], + ["path", { d: "M17 14V4a2 2 0 0 0-2-2h-1a2 2 0 0 0-2 2v10", key: "14fcyx" }], + ["rect", { width: "13", height: "8", x: "8", y: "6", rx: "1", key: "o6oiis" }], + ["circle", { cx: "18", cy: "20", r: "2", key: "t9985n" }], + ["circle", { cx: "9", cy: "20", r: "2", key: "e5v82j" }] +]); + +const Ban = createLucideIcon("BanIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m4.9 4.9 14.2 14.2", key: "1m5liu" }] +]); + +const Banana = createLucideIcon("BananaIcon", [ + ["path", { d: "M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5", key: "1cscit" }], + [ + "path", + { + d: "M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z", + key: "1y1nbv" + } + ] +]); + +const Bandage = createLucideIcon("BandageIcon", [ + ["path", { d: "M10 10.01h.01", key: "1e9xi7" }], + ["path", { d: "M10 14.01h.01", key: "ac23bv" }], + ["path", { d: "M14 10.01h.01", key: "2wfrvf" }], + ["path", { d: "M14 14.01h.01", key: "8tw8yn" }], + ["path", { d: "M18 6v11.5", key: "dkbidh" }], + ["path", { d: "M6 6v12", key: "vkc79e" }], + ["rect", { x: "2", y: "6", width: "20", height: "12", rx: "2", key: "1wpnh2" }] +]); + +const Banknote = createLucideIcon("BanknoteIcon", [ + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }] +]); + +const Barcode = createLucideIcon("BarcodeIcon", [ + ["path", { d: "M3 5v14", key: "1nt18q" }], + ["path", { d: "M8 5v14", key: "1ybrkv" }], + ["path", { d: "M12 5v14", key: "s699le" }], + ["path", { d: "M17 5v14", key: "ycjyhj" }], + ["path", { d: "M21 5v14", key: "nzette" }] +]); + +const Baseline = createLucideIcon("BaselineIcon", [ + ["path", { d: "M4 20h16", key: "14thso" }], + ["path", { d: "m6 16 6-12 6 12", key: "1b4byz" }], + ["path", { d: "M8 12h8", key: "1wcyev" }] +]); + +const Bath = createLucideIcon("BathIcon", [ + ["path", { d: "M10 4 8 6", key: "1rru8s" }], + ["path", { d: "M17 19v2", key: "ts1sot" }], + ["path", { d: "M2 12h20", key: "9i4pu4" }], + ["path", { d: "M7 19v2", key: "12npes" }], + [ + "path", + { + d: "M9 5 7.621 3.621A2.121 2.121 0 0 0 4 5v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5", + key: "14ym8i" + } + ] +]); + +const BatteryCharging = createLucideIcon("BatteryChargingIcon", [ + ["path", { d: "M15 7h1a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-2", key: "1sdynx" }], + ["path", { d: "M6 7H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h1", key: "1gkd3k" }], + ["path", { d: "m11 7-3 5h4l-3 5", key: "b4a64w" }], + ["line", { x1: "22", x2: "22", y1: "11", y2: "13", key: "4dh1rd" }] +]); + +const BatteryFull = createLucideIcon("BatteryFullIcon", [ + ["rect", { width: "16", height: "10", x: "2", y: "7", rx: "2", ry: "2", key: "1w10f2" }], + ["line", { x1: "22", x2: "22", y1: "11", y2: "13", key: "4dh1rd" }], + ["line", { x1: "6", x2: "6", y1: "11", y2: "13", key: "1wd6dw" }], + ["line", { x1: "10", x2: "10", y1: "11", y2: "13", key: "haxvl5" }], + ["line", { x1: "14", x2: "14", y1: "11", y2: "13", key: "c6fn6x" }] +]); + +const BatteryLow = createLucideIcon("BatteryLowIcon", [ + ["rect", { width: "16", height: "10", x: "2", y: "7", rx: "2", ry: "2", key: "1w10f2" }], + ["line", { x1: "22", x2: "22", y1: "11", y2: "13", key: "4dh1rd" }], + ["line", { x1: "6", x2: "6", y1: "11", y2: "13", key: "1wd6dw" }] +]); + +const BatteryMedium = createLucideIcon("BatteryMediumIcon", [ + ["rect", { width: "16", height: "10", x: "2", y: "7", rx: "2", ry: "2", key: "1w10f2" }], + ["line", { x1: "22", x2: "22", y1: "11", y2: "13", key: "4dh1rd" }], + ["line", { x1: "6", x2: "6", y1: "11", y2: "13", key: "1wd6dw" }], + ["line", { x1: "10", x2: "10", y1: "11", y2: "13", key: "haxvl5" }] +]); + +const BatteryPlus = createLucideIcon("BatteryPlusIcon", [ + ["path", { d: "M10 9v6", key: "17i7lo" }], + ["path", { d: "M13.5 7H16a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-2.5", key: "jzl4pj" }], + ["path", { d: "M22 11v2", key: "1wo06k" }], + ["path", { d: "M6.5 17H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h2.5", key: "1ar5vp" }], + ["path", { d: "M7 12h6", key: "iekk3h" }] +]); + +const BatteryWarning = createLucideIcon("BatteryWarningIcon", [ + ["path", { d: "M10 17h.01", key: "nbq80n" }], + ["path", { d: "M10 7v6", key: "nne03l" }], + ["path", { d: "M14 7h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-2", key: "1x5o8m" }], + ["path", { d: "M22 11v2", key: "1wo06k" }], + ["path", { d: "M6 7H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "1mdjgh" }] +]); + +const Battery = createLucideIcon("BatteryIcon", [ + ["rect", { width: "16", height: "10", x: "2", y: "7", rx: "2", ry: "2", key: "1w10f2" }], + ["line", { x1: "22", x2: "22", y1: "11", y2: "13", key: "4dh1rd" }] +]); + +const Beaker = createLucideIcon("BeakerIcon", [ + ["path", { d: "M4.5 3h15", key: "c7n0jr" }], + ["path", { d: "M6 3v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V3", key: "m1uhx7" }], + ["path", { d: "M6 14h12", key: "4cwo0f" }] +]); + +const BeanOff = createLucideIcon("BeanOffIcon", [ + [ + "path", + { + d: "M9 9c-.64.64-1.521.954-2.402 1.165A6 6 0 0 0 8 22a13.96 13.96 0 0 0 9.9-4.1", + key: "bq3udt" + } + ], + ["path", { d: "M10.75 5.093A6 6 0 0 1 22 8c0 2.411-.61 4.68-1.683 6.66", key: "17ccse" }], + [ + "path", + { + d: "M5.341 10.62a4 4 0 0 0 6.487 1.208M10.62 5.341a4.015 4.015 0 0 1 2.039 2.04", + key: "18zqgq" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Bean = createLucideIcon("BeanIcon", [ + [ + "path", + { + d: "M10.165 6.598C9.954 7.478 9.64 8.36 9 9c-.64.64-1.521.954-2.402 1.165A6 6 0 0 0 8 22c7.732 0 14-6.268 14-14a6 6 0 0 0-11.835-1.402Z", + key: "1tvzk7" + } + ], + ["path", { d: "M5.341 10.62a4 4 0 1 0 5.279-5.28", key: "2cyri2" }] +]); + +const BedDouble = createLucideIcon("BedDoubleIcon", [ + ["path", { d: "M2 20v-8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8", key: "1k78r4" }], + ["path", { d: "M4 10V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4", key: "fb3tl2" }], + ["path", { d: "M12 4v6", key: "1dcgq2" }], + ["path", { d: "M2 18h20", key: "ajqnye" }] +]); + +const BedSingle = createLucideIcon("BedSingleIcon", [ + ["path", { d: "M3 20v-8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v8", key: "1wm6mi" }], + ["path", { d: "M5 10V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v4", key: "4k93s5" }], + ["path", { d: "M3 18h18", key: "1h113x" }] +]); + +const Bed = createLucideIcon("BedIcon", [ + ["path", { d: "M2 4v16", key: "vw9hq8" }], + ["path", { d: "M2 8h18a2 2 0 0 1 2 2v10", key: "1dgv2r" }], + ["path", { d: "M2 17h20", key: "18nfp3" }], + ["path", { d: "M6 8v9", key: "1yriud" }] +]); + +const Beef = createLucideIcon("BeefIcon", [ + ["circle", { cx: "12.5", cy: "8.5", r: "2.5", key: "9738u8" }], + [ + "path", + { + d: "M12.5 2a6.5 6.5 0 0 0-6.22 4.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3A6.5 6.5 0 0 0 12.5 2Z", + key: "o0f6za" + } + ], + [ + "path", + { + d: "m18.5 6 2.19 4.5a6.48 6.48 0 0 1 .31 2 6.49 6.49 0 0 1-2.6 5.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5", + key: "k7p6i0" + } + ] +]); + +const BeerOff = createLucideIcon("BeerOffIcon", [ + ["path", { d: "M13 13v5", key: "igwfh0" }], + ["path", { d: "M17 11.47V8", key: "16yw0g" }], + ["path", { d: "M17 11h1a3 3 0 0 1 2.745 4.211", key: "1xbt65" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M5 8v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-3", key: "c55o3e" }], + [ + "path", + { d: "M7.536 7.535C6.766 7.649 6.154 8 5.5 8a2.5 2.5 0 0 1-1.768-4.268", key: "1ydug7" } + ], + [ + "path", + { + d: "M8.727 3.204C9.306 2.767 9.885 2 11 2c1.56 0 2 1.5 3 1.5s1.72-.5 2.5-.5a1 1 0 1 1 0 5c-.78 0-1.5-.5-2.5-.5a3.149 3.149 0 0 0-.842.12", + key: "q81o7q" + } + ], + ["path", { d: "M9 14.6V18", key: "20ek98" }] +]); + +const Beer = createLucideIcon("BeerIcon", [ + ["path", { d: "M17 11h1a3 3 0 0 1 0 6h-1", key: "1yp76v" }], + ["path", { d: "M9 12v6", key: "1u1cab" }], + ["path", { d: "M13 12v6", key: "1sugkk" }], + [ + "path", + { + d: "M14 7.5c-1 0-1.44.5-3 .5s-2-.5-3-.5-1.72.5-2.5.5a2.5 2.5 0 0 1 0-5c.78 0 1.57.5 2.5.5S9.44 2 11 2s2 1.5 3 1.5 1.72-.5 2.5-.5a2.5 2.5 0 0 1 0 5c-.78 0-1.5-.5-2.5-.5Z", + key: "1510fo" + } + ], + ["path", { d: "M5 8v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8", key: "19jb7n" }] +]); + +const BellDot = createLucideIcon("BellDotIcon", [ + ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }], + [ + "path", + { + d: "M13.916 2.314A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.74 7.327A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673 9 9 0 0 1-.585-.665", + key: "1tip0g" + } + ], + ["circle", { cx: "18", cy: "8", r: "3", key: "1g0gzu" }] +]); + +const BellElectric = createLucideIcon("BellElectricIcon", [ + ["path", { d: "M18.8 4A6.3 8.7 0 0 1 20 9", key: "xve1fh" }], + ["path", { d: "M9 9h.01", key: "1q5me6" }], + ["circle", { cx: "9", cy: "9", r: "7", key: "p2h5vp" }], + ["rect", { width: "10", height: "6", x: "4", y: "16", rx: "2", key: "17f3te" }], + ["path", { d: "M14 19c3 0 4.6-1.6 4.6-1.6", key: "n7odp6" }], + ["circle", { cx: "20", cy: "16", r: "2", key: "1v9bxh" }] +]); + +const BellMinus = createLucideIcon("BellMinusIcon", [ + ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }], + ["path", { d: "M15 8h6", key: "8ybuxh" }], + [ + "path", + { + d: "M16.243 3.757A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673A9.4 9.4 0 0 1 18.667 12", + key: "bdwj86" + } + ] +]); + +const BellOff = createLucideIcon("BellOffIcon", [ + ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }], + [ + "path", + { + d: "M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742", + key: "178tsu" + } + ], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05", key: "1hqiys" }] +]); + +const BellPlus = createLucideIcon("BellPlusIcon", [ + ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }], + ["path", { d: "M15 8h6", key: "8ybuxh" }], + ["path", { d: "M18 5v6", key: "g5ayrv" }], + [ + "path", + { + d: "M20.002 14.464a9 9 0 0 0 .738.863A1 1 0 0 1 20 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 8.75-5.332", + key: "1abcvy" + } + ] +]); + +const BellRing = createLucideIcon("BellRingIcon", [ + ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }], + ["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }], + [ + "path", + { + d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326", + key: "11g9vi" + } + ], + ["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }] +]); + +const Bell = createLucideIcon("BellIcon", [ + ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }], + [ + "path", + { + d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326", + key: "11g9vi" + } + ] +]); + +const BetweenHorizontalEnd = createLucideIcon("BetweenHorizontalEndIcon", [ + ["rect", { width: "13", height: "7", x: "3", y: "3", rx: "1", key: "11xb64" }], + ["path", { d: "m22 15-3-3 3-3", key: "26chmm" }], + ["rect", { width: "13", height: "7", x: "3", y: "14", rx: "1", key: "k6ky7n" }] +]); + +const BetweenHorizontalStart = createLucideIcon("BetweenHorizontalStartIcon", [ + ["rect", { width: "13", height: "7", x: "8", y: "3", rx: "1", key: "pkso9a" }], + ["path", { d: "m2 9 3 3-3 3", key: "1agib5" }], + ["rect", { width: "13", height: "7", x: "8", y: "14", rx: "1", key: "1q5fc1" }] +]); + +const BetweenVerticalEnd = createLucideIcon("BetweenVerticalEndIcon", [ + ["rect", { width: "7", height: "13", x: "3", y: "3", rx: "1", key: "1fdu0f" }], + ["path", { d: "m9 22 3-3 3 3", key: "17z65a" }], + ["rect", { width: "7", height: "13", x: "14", y: "3", rx: "1", key: "1squn4" }] +]); + +const BetweenVerticalStart = createLucideIcon("BetweenVerticalStartIcon", [ + ["rect", { width: "7", height: "13", x: "3", y: "8", rx: "1", key: "1fjrkv" }], + ["path", { d: "m15 2-3 3-3-3", key: "1uh6eb" }], + ["rect", { width: "7", height: "13", x: "14", y: "8", rx: "1", key: "w3fjg8" }] +]); + +const BicepsFlexed = createLucideIcon("BicepsFlexedIcon", [ + [ + "path", + { + d: "M12.409 13.017A5 5 0 0 1 22 15c0 3.866-4 7-9 7-4.077 0-8.153-.82-10.371-2.462-.426-.316-.631-.832-.62-1.362C2.118 12.723 2.627 2 10 2a3 3 0 0 1 3 3 2 2 0 0 1-2 2c-1.105 0-1.64-.444-2-1", + key: "1pmlyh" + } + ], + ["path", { d: "M15 14a5 5 0 0 0-7.584 2", key: "5rb254" }], + ["path", { d: "M9.964 6.825C8.019 7.977 9.5 13 8 15", key: "kbvsx9" }] +]); + +const Bike = createLucideIcon("BikeIcon", [ + ["circle", { cx: "18.5", cy: "17.5", r: "3.5", key: "15x4ox" }], + ["circle", { cx: "5.5", cy: "17.5", r: "3.5", key: "1noe27" }], + ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }], + ["path", { d: "M12 17.5V14l-3-3 4-3 2 3h2", key: "1npguv" }] +]); + +const Binary = createLucideIcon("BinaryIcon", [ + ["rect", { x: "14", y: "14", width: "4", height: "6", rx: "2", key: "p02svl" }], + ["rect", { x: "6", y: "4", width: "4", height: "6", rx: "2", key: "xm4xkj" }], + ["path", { d: "M6 20h4", key: "1i6q5t" }], + ["path", { d: "M14 10h4", key: "ru81e7" }], + ["path", { d: "M6 14h2v6", key: "16z9wg" }], + ["path", { d: "M14 4h2v6", key: "1idq9u" }] +]); + +const Binoculars = createLucideIcon("BinocularsIcon", [ + ["path", { d: "M10 10h4", key: "tcdvrf" }], + ["path", { d: "M19 7V4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v3", key: "3apit1" }], + [ + "path", + { + d: "M20 21a2 2 0 0 0 2-2v-3.851c0-1.39-2-2.962-2-4.829V8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v11a2 2 0 0 0 2 2z", + key: "rhpgnw" + } + ], + ["path", { d: "M 22 16 L 2 16", key: "14lkq7" }], + [ + "path", + { + d: "M4 21a2 2 0 0 1-2-2v-3.851c0-1.39 2-2.962 2-4.829V8a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v11a2 2 0 0 1-2 2z", + key: "104b3k" + } + ], + ["path", { d: "M9 7V4a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v3", key: "14fczp" }] +]); + +const Biohazard = createLucideIcon("BiohazardIcon", [ + ["circle", { cx: "12", cy: "11.9", r: "2", key: "e8h31w" }], + ["path", { d: "M6.7 3.4c-.9 2.5 0 5.2 2.2 6.7C6.5 9 3.7 9.6 2 11.6", key: "17bolr" }], + ["path", { d: "m8.9 10.1 1.4.8", key: "15ezny" }], + ["path", { d: "M17.3 3.4c.9 2.5 0 5.2-2.2 6.7 2.4-1.2 5.2-.6 6.9 1.5", key: "wtwa5u" }], + ["path", { d: "m15.1 10.1-1.4.8", key: "1r0b28" }], + ["path", { d: "M16.7 20.8c-2.6-.4-4.6-2.6-4.7-5.3-.2 2.6-2.1 4.8-4.7 5.2", key: "m7qszh" }], + ["path", { d: "M12 13.9v1.6", key: "zfyyim" }], + ["path", { d: "M13.5 5.4c-1-.2-2-.2-3 0", key: "1bi9q0" }], + ["path", { d: "M17 16.4c.7-.7 1.2-1.6 1.5-2.5", key: "1rhjqw" }], + ["path", { d: "M5.5 13.9c.3.9.8 1.8 1.5 2.5", key: "8gsud3" }] +]); + +const Bird = createLucideIcon("BirdIcon", [ + ["path", { d: "M16 7h.01", key: "1kdx03" }], + ["path", { d: "M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20", key: "oj1oa8" }], + ["path", { d: "m20 7 2 .5-2 .5", key: "12nv4d" }], + ["path", { d: "M10 18v3", key: "1yea0a" }], + ["path", { d: "M14 17.75V21", key: "1pymcb" }], + ["path", { d: "M7 18a6 6 0 0 0 3.84-10.61", key: "1npnn0" }] +]); + +const Bitcoin = createLucideIcon("BitcoinIcon", [ + [ + "path", + { + d: "M11.767 19.089c4.924.868 6.14-6.025 1.216-6.894m-1.216 6.894L5.86 18.047m5.908 1.042-.347 1.97m1.563-8.864c4.924.869 6.14-6.025 1.215-6.893m-1.215 6.893-3.94-.694m5.155-6.2L8.29 4.26m5.908 1.042.348-1.97M7.48 20.364l3.126-17.727", + key: "yr8idg" + } + ] +]); + +const Blend = createLucideIcon("BlendIcon", [ + ["circle", { cx: "9", cy: "9", r: "7", key: "p2h5vp" }], + ["circle", { cx: "15", cy: "15", r: "7", key: "19ennj" }] +]); + +const Blinds = createLucideIcon("BlindsIcon", [ + ["path", { d: "M3 3h18", key: "o7r712" }], + ["path", { d: "M20 7H8", key: "gd2fo2" }], + ["path", { d: "M20 11H8", key: "1ynp89" }], + ["path", { d: "M10 19h10", key: "19hjk5" }], + ["path", { d: "M8 15h12", key: "1yqzne" }], + ["path", { d: "M4 3v14", key: "fggqzn" }], + ["circle", { cx: "4", cy: "19", r: "2", key: "p3m9r0" }] +]); + +const Blocks = createLucideIcon("BlocksIcon", [ + ["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }], + [ + "path", + { + d: "M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3", + key: "1fpvtg" + } + ] +]); + +const BluetoothConnected = createLucideIcon("BluetoothConnectedIcon", [ + ["path", { d: "m7 7 10 10-5 5V2l5 5L7 17", key: "1q5490" }], + ["line", { x1: "18", x2: "21", y1: "12", y2: "12", key: "1rsjjs" }], + ["line", { x1: "3", x2: "6", y1: "12", y2: "12", key: "11yl8c" }] +]); + +const BluetoothOff = createLucideIcon("BluetoothOffIcon", [ + ["path", { d: "m17 17-5 5V12l-5 5", key: "v5aci6" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M14.5 9.5 17 7l-5-5v4.5", key: "1kddfz" }] +]); + +const BluetoothSearching = createLucideIcon("BluetoothSearchingIcon", [ + ["path", { d: "m7 7 10 10-5 5V2l5 5L7 17", key: "1q5490" }], + ["path", { d: "M20.83 14.83a4 4 0 0 0 0-5.66", key: "k8tn1j" }], + ["path", { d: "M18 12h.01", key: "yjnet6" }] +]); + +const Bluetooth = createLucideIcon("BluetoothIcon", [ + ["path", { d: "m7 7 10 10-5 5V2l5 5L7 17", key: "1q5490" }] +]); + +const Bold = createLucideIcon("BoldIcon", [ + [ + "path", + { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" } + ] +]); + +const Bolt = createLucideIcon("BoltIcon", [ + [ + "path", + { + d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z", + key: "yt0hxn" + } + ], + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }] +]); + +const Bomb = createLucideIcon("BombIcon", [ + ["circle", { cx: "11", cy: "13", r: "9", key: "hd149" }], + [ + "path", + { + d: "M14.35 4.65 16.3 2.7a2.41 2.41 0 0 1 3.4 0l1.6 1.6a2.4 2.4 0 0 1 0 3.4l-1.95 1.95", + key: "jp4j1b" + } + ], + ["path", { d: "m22 2-1.5 1.5", key: "ay92ug" }] +]); + +const Bone = createLucideIcon("BoneIcon", [ + [ + "path", + { + d: "M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z", + key: "w610uw" + } + ] +]); + +const BookA = createLucideIcon("BookAIcon", [ + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "m8 13 4-7 4 7", key: "4rari8" }], + ["path", { d: "M9.1 11h5.7", key: "1gkovt" }] +]); + +const BookAudio = createLucideIcon("BookAudioIcon", [ + ["path", { d: "M12 6v7", key: "1f6ttz" }], + ["path", { d: "M16 8v3", key: "gejaml" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "M8 8v3", key: "1qzp49" }] +]); + +const BookCheck = createLucideIcon("BookCheckIcon", [ + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "m9 9.5 2 2 4-4", key: "1dth82" }] +]); + +const BookCopy = createLucideIcon("BookCopyIcon", [ + ["path", { d: "M2 16V4a2 2 0 0 1 2-2h11", key: "spzkk5" }], + [ + "path", + { + d: "M22 18H11a2 2 0 1 0 0 4h10.5a.5.5 0 0 0 .5-.5v-15a.5.5 0 0 0-.5-.5H11a2 2 0 0 0-2 2v12", + key: "1wz07i" + } + ], + ["path", { d: "M5 14H4a2 2 0 1 0 0 4h1", key: "16gqf9" }] +]); + +const BookDashed = createLucideIcon("BookDashedIcon", [ + ["path", { d: "M12 17h1.5", key: "1gkc67" }], + ["path", { d: "M12 22h1.5", key: "1my7sn" }], + ["path", { d: "M12 2h1.5", key: "19tvb7" }], + ["path", { d: "M17.5 22H19a1 1 0 0 0 1-1", key: "10akbh" }], + ["path", { d: "M17.5 2H19a1 1 0 0 1 1 1v1.5", key: "1vrfjs" }], + ["path", { d: "M20 14v3h-2.5", key: "1naeju" }], + ["path", { d: "M20 8.5V10", key: "1ctpfu" }], + ["path", { d: "M4 10V8.5", key: "1o3zg5" }], + ["path", { d: "M4 19.5V14", key: "ob81pf" }], + ["path", { d: "M4 4.5A2.5 2.5 0 0 1 6.5 2H8", key: "s8vcyb" }], + ["path", { d: "M8 22H6.5a1 1 0 0 1 0-5H8", key: "1cu73q" }] +]); + +const BookDown = createLucideIcon("BookDownIcon", [ + ["path", { d: "M12 13V7", key: "h0r20n" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "m9 10 3 3 3-3", key: "zt5b4y" }] +]); + +const BookHeadphones = createLucideIcon("BookHeadphonesIcon", [ + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "M8 12v-2a4 4 0 0 1 8 0v2", key: "1vsqkj" }], + ["circle", { cx: "15", cy: "12", r: "1", key: "1tmaij" }], + ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }] +]); + +const BookHeart = createLucideIcon("BookHeartIcon", [ + [ + "path", + { + d: "M16 8.2A2.22 2.22 0 0 0 13.8 6c-.8 0-1.4.3-1.8.9-.4-.6-1-.9-1.8-.9A2.22 2.22 0 0 0 8 8.2c0 .6.3 1.2.7 1.6A226.652 226.652 0 0 0 12 13a404 404 0 0 0 3.3-3.1 2.413 2.413 0 0 0 .7-1.7", + key: "1t75a8" + } + ], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ] +]); + +const BookImage = createLucideIcon("BookImageIcon", [ + ["path", { d: "m20 13.7-2.1-2.1a2 2 0 0 0-2.8 0L9.7 17", key: "q6ojf0" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["circle", { cx: "10", cy: "8", r: "2", key: "2qkj4p" }] +]); + +const BookKey = createLucideIcon("BookKeyIcon", [ + ["path", { d: "m19 3 1 1", key: "ze14oc" }], + ["path", { d: "m20 2-4.5 4.5", key: "1sppr8" }], + ["path", { d: "M20 8v13a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", key: "1ocbpn" }], + ["path", { d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H14", key: "1gfsgw" }], + ["circle", { cx: "14", cy: "8", r: "2", key: "u49eql" }] +]); + +const BookLock = createLucideIcon("BookLockIcon", [ + ["path", { d: "M18 6V4a2 2 0 1 0-4 0v2", key: "1aquzs" }], + ["path", { d: "M20 15v6a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", key: "1rkj32" }], + ["path", { d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H10", key: "18wgow" }], + ["rect", { x: "12", y: "6", width: "8", height: "5", rx: "1", key: "73l30o" }] +]); + +const BookMarked = createLucideIcon("BookMarkedIcon", [ + ["path", { d: "M10 2v8l3-3 3 3V2", key: "sqw3rj" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ] +]); + +const BookMinus = createLucideIcon("BookMinusIcon", [ + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "M9 10h6", key: "9gxzsh" }] +]); + +const BookOpenCheck = createLucideIcon("BookOpenCheckIcon", [ + ["path", { d: "M12 21V7", key: "gj6g52" }], + ["path", { d: "m16 12 2 2 4-4", key: "mdajum" }], + [ + "path", + { + d: "M22 6V4a1 1 0 0 0-1-1h-5a4 4 0 0 0-4 4 4 4 0 0 0-4-4H3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h6a3 3 0 0 1 3 3 3 3 0 0 1 3-3h6a1 1 0 0 0 1-1v-1.3", + key: "8arnkb" + } + ] +]); + +const BookOpenText = createLucideIcon("BookOpenTextIcon", [ + ["path", { d: "M12 7v14", key: "1akyts" }], + ["path", { d: "M16 12h2", key: "7q9ll5" }], + ["path", { d: "M16 8h2", key: "msurwy" }], + [ + "path", + { + d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z", + key: "ruj8y" + } + ], + ["path", { d: "M6 12h2", key: "32wvfc" }], + ["path", { d: "M6 8h2", key: "30oboj" }] +]); + +const BookOpen = createLucideIcon("BookOpenIcon", [ + ["path", { d: "M12 7v14", key: "1akyts" }], + [ + "path", + { + d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z", + key: "ruj8y" + } + ] +]); + +const BookPlus = createLucideIcon("BookPlusIcon", [ + ["path", { d: "M12 7v6", key: "lw1j43" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "M9 10h6", key: "9gxzsh" }] +]); + +const BookText = createLucideIcon("BookTextIcon", [ + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "M8 11h8", key: "vwpz6n" }], + ["path", { d: "M8 7h6", key: "1f0q6e" }] +]); + +const BookType = createLucideIcon("BookTypeIcon", [ + ["path", { d: "M10 13h4", key: "ytezjc" }], + ["path", { d: "M12 6v7", key: "1f6ttz" }], + ["path", { d: "M16 8V6H8v2", key: "x8j6u4" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ] +]); + +const BookUp2 = createLucideIcon("BookUp2Icon", [ + ["path", { d: "M12 13V7", key: "h0r20n" }], + ["path", { d: "M18 2h1a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", key: "161d7n" }], + ["path", { d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2", key: "1lorq7" }], + ["path", { d: "m9 10 3-3 3 3", key: "11gsxs" }], + ["path", { d: "m9 5 3-3 3 3", key: "l8vdw6" }] +]); + +const BookUp = createLucideIcon("BookUpIcon", [ + ["path", { d: "M12 13V7", key: "h0r20n" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "m9 10 3-3 3 3", key: "11gsxs" }] +]); + +const BookUser = createLucideIcon("BookUserIcon", [ + ["path", { d: "M15 13a3 3 0 1 0-6 0", key: "10j68g" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["circle", { cx: "12", cy: "8", r: "2", key: "1822b1" }] +]); + +const BookX = createLucideIcon("BookXIcon", [ + ["path", { d: "m14.5 7-5 5", key: "dy991v" }], + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ], + ["path", { d: "m9.5 7 5 5", key: "s45iea" }] +]); + +const Book = createLucideIcon("BookIcon", [ + [ + "path", + { + d: "M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20", + key: "k3hazp" + } + ] +]); + +const BookmarkCheck = createLucideIcon("BookmarkCheckIcon", [ + ["path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z", key: "169p4p" }], + ["path", { d: "m9 10 2 2 4-4", key: "1gnqz4" }] +]); + +const BookmarkMinus = createLucideIcon("BookmarkMinusIcon", [ + ["path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z", key: "1fy3hk" }], + ["line", { x1: "15", x2: "9", y1: "10", y2: "10", key: "1gty7f" }] +]); + +const BookmarkPlus = createLucideIcon("BookmarkPlusIcon", [ + ["path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z", key: "1fy3hk" }], + ["line", { x1: "12", x2: "12", y1: "7", y2: "13", key: "1cppfj" }], + ["line", { x1: "15", x2: "9", y1: "10", y2: "10", key: "1gty7f" }] +]); + +const BookmarkX = createLucideIcon("BookmarkXIcon", [ + ["path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z", key: "169p4p" }], + ["path", { d: "m14.5 7.5-5 5", key: "3lb6iw" }], + ["path", { d: "m9.5 7.5 5 5", key: "ko136h" }] +]); + +const Bookmark = createLucideIcon("BookmarkIcon", [ + ["path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z", key: "1fy3hk" }] +]); + +const BoomBox = createLucideIcon("BoomBoxIcon", [ + ["path", { d: "M4 9V5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4", key: "vvzvr1" }], + ["path", { d: "M8 8v1", key: "xcqmfk" }], + ["path", { d: "M12 8v1", key: "1rj8u4" }], + ["path", { d: "M16 8v1", key: "1q12zr" }], + ["rect", { width: "20", height: "12", x: "2", y: "9", rx: "2", key: "igpb89" }], + ["circle", { cx: "8", cy: "15", r: "2", key: "fa4a8s" }], + ["circle", { cx: "16", cy: "15", r: "2", key: "14c3ya" }] +]); + +const BotMessageSquare = createLucideIcon("BotMessageSquareIcon", [ + ["path", { d: "M12 6V2H8", key: "1155em" }], + ["path", { d: "m8 18-4 4V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2Z", key: "w2lp3e" }], + ["path", { d: "M2 12h2", key: "1t8f8n" }], + ["path", { d: "M9 11v2", key: "1ueba0" }], + ["path", { d: "M15 11v2", key: "i11awn" }], + ["path", { d: "M20 12h2", key: "1q8mjw" }] +]); + +const BotOff = createLucideIcon("BotOffIcon", [ + ["path", { d: "M13.67 8H18a2 2 0 0 1 2 2v4.33", key: "7az073" }], + ["path", { d: "M2 14h2", key: "vft8re" }], + ["path", { d: "M20 14h2", key: "4cs60a" }], + ["path", { d: "M22 22 2 2", key: "1r8tn9" }], + ["path", { d: "M8 8H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 1.414-.586", key: "s09a7a" }], + ["path", { d: "M9 13v2", key: "rq6x2g" }], + ["path", { d: "M9.67 4H12v2.33", key: "110xot" }] +]); + +const Bot = createLucideIcon("BotIcon", [ + ["path", { d: "M12 8V4H8", key: "hb8ula" }], + ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }], + ["path", { d: "M2 14h2", key: "vft8re" }], + ["path", { d: "M20 14h2", key: "4cs60a" }], + ["path", { d: "M15 13v2", key: "1xurst" }], + ["path", { d: "M9 13v2", key: "rq6x2g" }] +]); + +const Box = createLucideIcon("BoxIcon", [ + [ + "path", + { + d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z", + key: "hh9hay" + } + ], + ["path", { d: "m3.3 7 8.7 5 8.7-5", key: "g66t2b" }], + ["path", { d: "M12 22V12", key: "d0xqtd" }] +]); + +const Boxes = createLucideIcon("BoxesIcon", [ + [ + "path", + { + d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z", + key: "lc1i9w" + } + ], + ["path", { d: "m7 16.5-4.74-2.85", key: "1o9zyk" }], + ["path", { d: "m7 16.5 5-3", key: "va8pkn" }], + ["path", { d: "M7 16.5v5.17", key: "jnp8gn" }], + [ + "path", + { + d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z", + key: "8zsnat" + } + ], + ["path", { d: "m17 16.5-5-3", key: "8arw3v" }], + ["path", { d: "m17 16.5 4.74-2.85", key: "8rfmw" }], + ["path", { d: "M17 16.5v5.17", key: "k6z78m" }], + [ + "path", + { + d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z", + key: "1xygjf" + } + ], + ["path", { d: "M12 8 7.26 5.15", key: "1vbdud" }], + ["path", { d: "m12 8 4.74-2.85", key: "3rx089" }], + ["path", { d: "M12 13.5V8", key: "1io7kd" }] +]); + +const Braces = createLucideIcon("BracesIcon", [ + [ + "path", + { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1", key: "ezmyqa" } + ], + [ + "path", + { + d: "M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1", + key: "e1hn23" + } + ] +]); + +const Brackets = createLucideIcon("BracketsIcon", [ + ["path", { d: "M16 3h3v18h-3", key: "1yor1f" }], + ["path", { d: "M8 21H5V3h3", key: "1qrfwo" }] +]); + +const BrainCircuit = createLucideIcon("BrainCircuitIcon", [ + [ + "path", + { + d: "M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z", + key: "l5xja" + } + ], + ["path", { d: "M9 13a4.5 4.5 0 0 0 3-4", key: "10igwf" }], + ["path", { d: "M6.003 5.125A3 3 0 0 0 6.401 6.5", key: "105sqy" }], + ["path", { d: "M3.477 10.896a4 4 0 0 1 .585-.396", key: "ql3yin" }], + ["path", { d: "M6 18a4 4 0 0 1-1.967-.516", key: "2e4loj" }], + ["path", { d: "M12 13h4", key: "1ku699" }], + ["path", { d: "M12 18h6a2 2 0 0 1 2 2v1", key: "105ag5" }], + ["path", { d: "M12 8h8", key: "1lhi5i" }], + ["path", { d: "M16 8V5a2 2 0 0 1 2-2", key: "u6izg6" }], + ["circle", { cx: "16", cy: "13", r: ".5", key: "ry7gng" }], + ["circle", { cx: "18", cy: "3", r: ".5", key: "1aiba7" }], + ["circle", { cx: "20", cy: "21", r: ".5", key: "yhc1fs" }], + ["circle", { cx: "20", cy: "8", r: ".5", key: "1e43v0" }] +]); + +const BrainCog = createLucideIcon("BrainCogIcon", [ + [ + "path", + { + d: "M12 5a3 3 0 1 0-5.997.142 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588 4 4 0 0 0 7.636 2.106 3.2 3.2 0 0 0 .164-.546c.028-.13.306-.13.335 0a3.2 3.2 0 0 0 .163.546 4 4 0 0 0 7.636-2.106 4 4 0 0 0 .556-6.588 4 4 0 0 0-2.526-5.77A3 3 0 1 0 12 5", + key: "1kgmhc" + } + ], + ["path", { d: "M17.599 6.5a3 3 0 0 0 .399-1.375", key: "tmeiqw" }], + ["path", { d: "M6.003 5.125A3 3 0 0 0 6.401 6.5", key: "105sqy" }], + ["path", { d: "M3.477 10.896a4 4 0 0 1 .585-.396", key: "ql3yin" }], + ["path", { d: "M19.938 10.5a4 4 0 0 1 .585.396", key: "1qfode" }], + ["path", { d: "M6 18a4 4 0 0 1-1.967-.516", key: "2e4loj" }], + ["path", { d: "M19.967 17.484A4 4 0 0 1 18 18", key: "159ez6" }], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["path", { d: "m15.7 10.4-.9.4", key: "ayzo6p" }], + ["path", { d: "m9.2 13.2-.9.4", key: "1uzb3g" }], + ["path", { d: "m13.6 15.7-.4-.9", key: "11ifqf" }], + ["path", { d: "m10.8 9.2-.4-.9", key: "1pmk2v" }], + ["path", { d: "m15.7 13.5-.9-.4", key: "7ng02m" }], + ["path", { d: "m9.2 10.9-.9-.4", key: "1x66zd" }], + ["path", { d: "m10.5 15.7.4-.9", key: "3js94g" }], + ["path", { d: "m13.1 9.2.4-.9", key: "18n7mc" }] +]); + +const Brain = createLucideIcon("BrainIcon", [ + [ + "path", + { + d: "M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z", + key: "l5xja" + } + ], + [ + "path", + { + d: "M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z", + key: "ep3f8r" + } + ], + ["path", { d: "M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4", key: "1p4c4q" }], + ["path", { d: "M17.599 6.5a3 3 0 0 0 .399-1.375", key: "tmeiqw" }], + ["path", { d: "M6.003 5.125A3 3 0 0 0 6.401 6.5", key: "105sqy" }], + ["path", { d: "M3.477 10.896a4 4 0 0 1 .585-.396", key: "ql3yin" }], + ["path", { d: "M19.938 10.5a4 4 0 0 1 .585.396", key: "1qfode" }], + ["path", { d: "M6 18a4 4 0 0 1-1.967-.516", key: "2e4loj" }], + ["path", { d: "M19.967 17.484A4 4 0 0 1 18 18", key: "159ez6" }] +]); + +const BrickWall = createLucideIcon("BrickWallIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M12 9v6", key: "199k2o" }], + ["path", { d: "M16 15v6", key: "8rj2es" }], + ["path", { d: "M16 3v6", key: "1j6rpj" }], + ["path", { d: "M3 15h18", key: "5xshup" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["path", { d: "M8 15v6", key: "1stoo3" }], + ["path", { d: "M8 3v6", key: "vlvjmk" }] +]); + +const BriefcaseBusiness = createLucideIcon("BriefcaseBusinessIcon", [ + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2", key: "1ksdt3" }], + ["path", { d: "M22 13a18.15 18.15 0 0 1-20 0", key: "12hx5q" }], + ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }] +]); + +const BriefcaseConveyorBelt = createLucideIcon("BriefcaseConveyorBeltIcon", [ + ["path", { d: "M10 20v2", key: "1n8e1g" }], + ["path", { d: "M14 20v2", key: "1lq872" }], + ["path", { d: "M18 20v2", key: "10uadw" }], + ["path", { d: "M21 20H3", key: "kdqkdp" }], + ["path", { d: "M6 20v2", key: "a9bc87" }], + ["path", { d: "M8 16V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v12", key: "17n9tx" }], + ["rect", { x: "4", y: "6", width: "16", height: "10", rx: "2", key: "1097i5" }] +]); + +const BriefcaseMedical = createLucideIcon("BriefcaseMedicalIcon", [ + ["path", { d: "M12 11v4", key: "a6ujw6" }], + ["path", { d: "M14 13h-4", key: "1pl8zg" }], + ["path", { d: "M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2", key: "1ksdt3" }], + ["path", { d: "M18 6v14", key: "1mu4gy" }], + ["path", { d: "M6 6v14", key: "1s15cj" }], + ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }] +]); + +const Briefcase = createLucideIcon("BriefcaseIcon", [ + ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }], + ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }] +]); + +const BringToFront = createLucideIcon("BringToFrontIcon", [ + ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "2", key: "yj20xf" }], + ["path", { d: "M4 10a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2", key: "1ltk23" }], + ["path", { d: "M14 20a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2", key: "1q24h9" }] +]); + +const Brush = createLucideIcon("BrushIcon", [ + ["path", { d: "m9.06 11.9 8.07-8.06a2.85 2.85 0 1 1 4.03 4.03l-8.06 8.08", key: "1styjt" }], + [ + "path", + { + d: "M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 0 0-3-3.02z", + key: "z0l1mu" + } + ] +]); + +const BugOff = createLucideIcon("BugOffIcon", [ + ["path", { d: "M15 7.13V6a3 3 0 0 0-5.14-2.1L8 2", key: "vl8zik" }], + ["path", { d: "M14.12 3.88 16 2", key: "qol33r" }], + ["path", { d: "M22 13h-4v-2a4 4 0 0 0-4-4h-1.3", key: "1ou0bd" }], + ["path", { d: "M20.97 5c0 2.1-1.6 3.8-3.5 4", key: "18gb23" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M7.7 7.7A4 4 0 0 0 6 11v3a6 6 0 0 0 11.13 3.13", key: "1njkjs" }], + ["path", { d: "M12 20v-8", key: "i3yub9" }], + ["path", { d: "M6 13H2", key: "82j7cp" }], + ["path", { d: "M3 21c0-2.1 1.7-3.9 3.8-4", key: "4p0ekp" }] +]); + +const BugPlay = createLucideIcon("BugPlayIcon", [ + [ + "path", + { + d: "M12.765 21.522a.5.5 0 0 1-.765-.424v-8.196a.5.5 0 0 1 .765-.424l5.878 3.674a1 1 0 0 1 0 1.696z", + key: "17shqo" + } + ], + ["path", { d: "M14.12 3.88 16 2", key: "qol33r" }], + ["path", { d: "M18 11a4 4 0 0 0-4-4h-4a4 4 0 0 0-4 4v3a6.1 6.1 0 0 0 2 4.5", key: "1tjixy" }], + ["path", { d: "M20.97 5c0 2.1-1.6 3.8-3.5 4", key: "18gb23" }], + ["path", { d: "M3 21c0-2.1 1.7-3.9 3.8-4", key: "4p0ekp" }], + ["path", { d: "M6 13H2", key: "82j7cp" }], + ["path", { d: "M6.53 9C4.6 8.8 3 7.1 3 5", key: "32zzws" }], + ["path", { d: "m8 2 1.88 1.88", key: "fmnt4t" }], + ["path", { d: "M9 7.13v-1a3.003 3.003 0 1 1 6 0v1", key: "d7y7pr" }] +]); + +const Bug = createLucideIcon("BugIcon", [ + ["path", { d: "m8 2 1.88 1.88", key: "fmnt4t" }], + ["path", { d: "M14.12 3.88 16 2", key: "qol33r" }], + ["path", { d: "M9 7.13v-1a3.003 3.003 0 1 1 6 0v1", key: "d7y7pr" }], + [ + "path", + { + d: "M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6", + key: "xs1cw7" + } + ], + ["path", { d: "M12 20v-9", key: "1qisl0" }], + ["path", { d: "M6.53 9C4.6 8.8 3 7.1 3 5", key: "32zzws" }], + ["path", { d: "M6 13H2", key: "82j7cp" }], + ["path", { d: "M3 21c0-2.1 1.7-3.9 3.8-4", key: "4p0ekp" }], + ["path", { d: "M20.97 5c0 2.1-1.6 3.8-3.5 4", key: "18gb23" }], + ["path", { d: "M22 13h-4", key: "1jl80f" }], + ["path", { d: "M17.2 17c2.1.1 3.8 1.9 3.8 4", key: "k3fwyw" }] +]); + +const Building2 = createLucideIcon("Building2Icon", [ + ["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }], + ["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }], + ["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }], + ["path", { d: "M10 6h4", key: "1itunk" }], + ["path", { d: "M10 10h4", key: "tcdvrf" }], + ["path", { d: "M10 14h4", key: "kelpxr" }], + ["path", { d: "M10 18h4", key: "1ulq68" }] +]); + +const Building = createLucideIcon("BuildingIcon", [ + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }], + ["path", { d: "M9 22v-4h6v4", key: "r93iot" }], + ["path", { d: "M8 6h.01", key: "1dz90k" }], + ["path", { d: "M16 6h.01", key: "1x0f13" }], + ["path", { d: "M12 6h.01", key: "1vi96p" }], + ["path", { d: "M12 10h.01", key: "1nrarc" }], + ["path", { d: "M12 14h.01", key: "1etili" }], + ["path", { d: "M16 10h.01", key: "1m94wz" }], + ["path", { d: "M16 14h.01", key: "1gbofw" }], + ["path", { d: "M8 10h.01", key: "19clt8" }], + ["path", { d: "M8 14h.01", key: "6423bh" }] +]); + +const BusFront = createLucideIcon("BusFrontIcon", [ + ["path", { d: "M4 6 2 7", key: "1mqr15" }], + ["path", { d: "M10 6h4", key: "1itunk" }], + ["path", { d: "m22 7-2-1", key: "1umjhc" }], + ["rect", { width: "16", height: "16", x: "4", y: "3", rx: "2", key: "1wxw4b" }], + ["path", { d: "M4 11h16", key: "mpoxn0" }], + ["path", { d: "M8 15h.01", key: "a7atzg" }], + ["path", { d: "M16 15h.01", key: "rnfrdf" }], + ["path", { d: "M6 19v2", key: "1loha6" }], + ["path", { d: "M18 21v-2", key: "sqyl04" }] +]); + +const Bus = createLucideIcon("BusIcon", [ + ["path", { d: "M8 6v6", key: "18i7km" }], + ["path", { d: "M15 6v6", key: "1sg6z9" }], + ["path", { d: "M2 12h19.6", key: "de5uta" }], + [ + "path", + { + d: "M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3", + key: "1wwztk" + } + ], + ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }], + ["path", { d: "M9 18h5", key: "lrx6i" }], + ["circle", { cx: "16", cy: "18", r: "2", key: "1v4tcr" }] +]); + +const CableCar = createLucideIcon("CableCarIcon", [ + ["path", { d: "M10 3h.01", key: "lbucoy" }], + ["path", { d: "M14 2h.01", key: "1k8aa1" }], + ["path", { d: "m2 9 20-5", key: "1kz0j5" }], + ["path", { d: "M12 12V6.5", key: "1vbrij" }], + ["rect", { width: "16", height: "10", x: "4", y: "12", rx: "3", key: "if91er" }], + ["path", { d: "M9 12v5", key: "3anwtq" }], + ["path", { d: "M15 12v5", key: "5xh3zn" }], + ["path", { d: "M4 17h16", key: "g4d7ey" }] +]); + +const Cable = createLucideIcon("CableIcon", [ + [ + "path", + { + d: "M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1", + key: "10bnsj" + } + ], + ["path", { d: "M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9", key: "1eqmu1" }], + ["path", { d: "M21 21v-2h-4", key: "14zm7j" }], + ["path", { d: "M3 5h4V3", key: "z442eg" }], + [ + "path", + { d: "M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3", key: "ebdjd7" } + ] +]); + +const CakeSlice = createLucideIcon("CakeSliceIcon", [ + ["circle", { cx: "9", cy: "7", r: "2", key: "1305pl" }], + [ + "path", + { d: "M7.2 7.9 3 11v9c0 .6.4 1 1 1h16c.6 0 1-.4 1-1v-9c0-2-3-6-7-8l-3.6 2.6", key: "xle13f" } + ], + ["path", { d: "M16 13H3", key: "1wpj08" }], + ["path", { d: "M16 17H3", key: "3lvfcd" }] +]); + +const Cake = createLucideIcon("CakeIcon", [ + ["path", { d: "M20 21v-8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8", key: "1w3rig" }], + ["path", { d: "M4 16s.5-1 2-1 2.5 2 4 2 2.5-2 4-2 2.5 2 4 2 2-1 2-1", key: "n2jgmb" }], + ["path", { d: "M2 21h20", key: "1nyx9w" }], + ["path", { d: "M7 8v3", key: "1qtyvj" }], + ["path", { d: "M12 8v3", key: "hwp4zt" }], + ["path", { d: "M17 8v3", key: "1i6e5u" }], + ["path", { d: "M7 4h.01", key: "1bh4kh" }], + ["path", { d: "M12 4h.01", key: "1ujb9j" }], + ["path", { d: "M17 4h.01", key: "1upcoc" }] +]); + +const Calculator = createLucideIcon("CalculatorIcon", [ + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }], + ["line", { x1: "8", x2: "16", y1: "6", y2: "6", key: "x4nwl0" }], + ["line", { x1: "16", x2: "16", y1: "14", y2: "18", key: "wjye3r" }], + ["path", { d: "M16 10h.01", key: "1m94wz" }], + ["path", { d: "M12 10h.01", key: "1nrarc" }], + ["path", { d: "M8 10h.01", key: "19clt8" }], + ["path", { d: "M12 14h.01", key: "1etili" }], + ["path", { d: "M8 14h.01", key: "6423bh" }], + ["path", { d: "M12 18h.01", key: "mhygvu" }], + ["path", { d: "M8 18h.01", key: "lrp35t" }] +]); + +const Calendar1 = createLucideIcon("Calendar1Icon", [ + ["path", { d: "M11 14h1v4", key: "fy54vd" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", key: "12vinp" }] +]); + +const CalendarArrowDown = createLucideIcon("CalendarArrowDownIcon", [ + ["path", { d: "m14 18 4 4 4-4", key: "1waygx" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M18 14v8", key: "irew45" }], + [ + "path", + { d: "M21 11.354V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7.343", key: "bse4f3" } + ], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }] +]); + +const CalendarArrowUp = createLucideIcon("CalendarArrowUpIcon", [ + ["path", { d: "m14 18 4-4 4 4", key: "ftkppy" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M18 22v-8", key: "su0gjh" }], + ["path", { d: "M21 11.343V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9", key: "1exg90" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }] +]); + +const CalendarCheck2 = createLucideIcon("CalendarCheck2Icon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M21 14V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8", key: "bce9hv" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "m16 20 2 2 4-4", key: "13tcca" }] +]); + +const CalendarCheck = createLucideIcon("CalendarCheckIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "m9 16 2 2 4-4", key: "19s6y9" }] +]); + +const CalendarClock = createLucideIcon("CalendarClockIcon", [ + ["path", { d: "M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5", key: "1osxxc" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M3 10h5", key: "r794hk" }], + ["path", { d: "M17.5 17.5 16 16.3V14", key: "akvzfd" }], + ["circle", { cx: "16", cy: "16", r: "6", key: "qoo3c4" }] +]); + +const CalendarCog = createLucideIcon("CalendarCogIcon", [ + ["path", { d: "m15.2 16.9-.9-.4", key: "1r0w5f" }], + ["path", { d: "m15.2 19.1-.9.4", key: "j188fs" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "m16.9 15.2-.4-.9", key: "699xu" }], + ["path", { d: "m16.9 20.8-.4.9", key: "dfjc4z" }], + ["path", { d: "m19.5 14.3-.4.9", key: "1eb35c" }], + ["path", { d: "m19.5 21.7-.4-.9", key: "1tonu5" }], + ["path", { d: "M21 10.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6", key: "11kmuh" }], + ["path", { d: "m21.7 16.5-.9.4", key: "1knoei" }], + ["path", { d: "m21.7 19.5-.9-.4", key: "q4dx6b" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }] +]); + +const CalendarDays = createLucideIcon("CalendarDaysIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 14h.01", key: "6423bh" }], + ["path", { d: "M12 14h.01", key: "1etili" }], + ["path", { d: "M16 14h.01", key: "1gbofw" }], + ["path", { d: "M8 18h.01", key: "lrp35t" }], + ["path", { d: "M12 18h.01", key: "mhygvu" }], + ["path", { d: "M16 18h.01", key: "kzsmim" }] +]); + +const CalendarFold = createLucideIcon("CalendarFoldIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M21 17V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11Z", key: "kg77oy" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M15 22v-4a2 2 0 0 1 2-2h4", key: "1gnbqr" }] +]); + +const CalendarHeart = createLucideIcon("CalendarHeartIcon", [ + ["path", { d: "M3 10h18V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7", key: "136lmk" }], + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + [ + "path", + { + d: "M21.29 14.7a2.43 2.43 0 0 0-2.65-.52c-.3.12-.57.3-.8.53l-.34.34-.35-.34a2.43 2.43 0 0 0-2.65-.53c-.3.12-.56.3-.79.53-.95.94-1 2.53.2 3.74L17.5 22l3.6-3.55c1.2-1.21 1.14-2.8.19-3.74Z", + key: "1t7hil" + } + ] +]); + +const CalendarMinus2 = createLucideIcon("CalendarMinus2Icon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M10 16h4", key: "17e571" }] +]); + +const CalendarMinus = createLucideIcon("CalendarMinusIcon", [ + ["path", { d: "M16 19h6", key: "xwg31i" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M21 15V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8.5", key: "1scpom" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }] +]); + +const CalendarOff = createLucideIcon("CalendarOffIcon", [ + ["path", { d: "M4.2 4.2A2 2 0 0 0 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 1.82-1.18", key: "16swn3" }], + ["path", { d: "M21 15.5V6a2 2 0 0 0-2-2H9.5", key: "yhw86o" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M3 10h7", key: "1wap6i" }], + ["path", { d: "M21 10h-5.5", key: "quycpq" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const CalendarPlus2 = createLucideIcon("CalendarPlus2Icon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M10 16h4", key: "17e571" }], + ["path", { d: "M12 14v4", key: "1thi36" }] +]); + +const CalendarPlus = createLucideIcon("CalendarPlusIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8", key: "3spt84" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M16 19h6", key: "xwg31i" }], + ["path", { d: "M19 16v6", key: "tddt3s" }] +]); + +const CalendarRange = createLucideIcon("CalendarRangeIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M17 14h-6", key: "bkmgh3" }], + ["path", { d: "M13 18H7", key: "bb0bb7" }], + ["path", { d: "M7 14h.01", key: "1qa3f1" }], + ["path", { d: "M17 18h.01", key: "1bdyru" }] +]); + +const CalendarSearch = createLucideIcon("CalendarSearchIcon", [ + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M21 11.75V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7.25", key: "1jrsq6" }], + ["path", { d: "m22 22-1.875-1.875", key: "13zax7" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }] +]); + +const CalendarSync = createLucideIcon("CalendarSyncIcon", [ + ["path", { d: "M11 10v4h4", key: "172dkj" }], + ["path", { d: "m11 14 1.535-1.605a5 5 0 0 1 8 1.5", key: "vu0qm5" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "m21 18-1.535 1.605a5 5 0 0 1-8-1.5", key: "1qgeyt" }], + ["path", { d: "M21 22v-4h-4", key: "hrummi" }], + ["path", { d: "M21 8.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h4.3", key: "mctw84" }], + ["path", { d: "M3 10h4", key: "1el30a" }], + ["path", { d: "M8 2v4", key: "1cmpym" }] +]); + +const CalendarX2 = createLucideIcon("CalendarX2Icon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8", key: "3spt84" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "m17 22 5-5", key: "1k6ppv" }], + ["path", { d: "m17 17 5 5", key: "p7ous7" }] +]); + +const CalendarX = createLucideIcon("CalendarXIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M3 10h18", key: "8toen8" }], + ["path", { d: "m14 14-4 4", key: "rymu2i" }], + ["path", { d: "m10 14 4 4", key: "3sz06r" }] +]); + +const Calendar = createLucideIcon("CalendarIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }], + ["path", { d: "M3 10h18", key: "8toen8" }] +]); + +const CameraOff = createLucideIcon("CameraOffIcon", [ + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }], + ["path", { d: "M7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16", key: "qmtpty" }], + ["path", { d: "M9.5 4h5L17 7h3a2 2 0 0 1 2 2v7.5", key: "1ufyfc" }], + ["path", { d: "M14.121 15.121A3 3 0 1 1 9.88 10.88", key: "11zox6" }] +]); + +const Camera = createLucideIcon("CameraIcon", [ + [ + "path", + { + d: "M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z", + key: "1tc9qg" + } + ], + ["circle", { cx: "12", cy: "13", r: "3", key: "1vg3eu" }] +]); + +const CandyCane = createLucideIcon("CandyCaneIcon", [ + [ + "path", + { + d: "M5.7 21a2 2 0 0 1-3.5-2l8.6-14a6 6 0 0 1 10.4 6 2 2 0 1 1-3.464-2 2 2 0 1 0-3.464-2Z", + key: "isaq8g" + } + ], + ["path", { d: "M17.75 7 15 2.1", key: "12x7e8" }], + ["path", { d: "M10.9 4.8 13 9", key: "100a87" }], + ["path", { d: "m7.9 9.7 2 4.4", key: "ntfhaj" }], + ["path", { d: "M4.9 14.7 7 18.9", key: "1x43jy" }] +]); + +const CandyOff = createLucideIcon("CandyOffIcon", [ + ["path", { d: "m8.5 8.5-1 1a4.95 4.95 0 0 0 7 7l1-1", key: "1ff4ui" }], + [ + "path", + { d: "M11.843 6.187A4.947 4.947 0 0 1 16.5 7.5a4.947 4.947 0 0 1 1.313 4.657", key: "1sbrv4" } + ], + ["path", { d: "M14 16.5V14", key: "1maf8j" }], + ["path", { d: "M14 6.5v1.843", key: "1a6u6t" }], + ["path", { d: "M10 10v7.5", key: "80pj65" }], + [ + "path", + { + d: "m16 7 1-5 1.367.683A3 3 0 0 0 19.708 3H21v1.292a3 3 0 0 0 .317 1.341L22 7l-5 1", + key: "11a9mt" + } + ], + [ + "path", + { + d: "m8 17-1 5-1.367-.683A3 3 0 0 0 4.292 21H3v-1.292a3 3 0 0 0-.317-1.341L2 17l5-1", + key: "3mjmon" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Candy = createLucideIcon("CandyIcon", [ + ["path", { d: "m9.5 7.5-2 2a4.95 4.95 0 1 0 7 7l2-2a4.95 4.95 0 1 0-7-7Z", key: "ue6khb" }], + ["path", { d: "M14 6.5v10", key: "5xnk7c" }], + ["path", { d: "M10 7.5v10", key: "1uew51" }], + [ + "path", + { d: "m16 7 1-5 1.37.68A3 3 0 0 0 19.7 3H21v1.3c0 .46.1.92.32 1.33L22 7l-5 1", key: "b9cp6k" } + ], + [ + "path", + { d: "m8 17-1 5-1.37-.68A3 3 0 0 0 4.3 21H3v-1.3a3 3 0 0 0-.32-1.33L2 17l5-1", key: "5lney8" } + ] +]); + +const Cannabis = createLucideIcon("CannabisIcon", [ + ["path", { d: "M12 22v-4", key: "1utk9m" }], + [ + "path", + { + d: "M7 12c-1.5 0-4.5 1.5-5 3 3.5 1.5 6 1 6 1-1.5 1.5-2 3.5-2 5 2.5 0 4.5-1.5 6-3 1.5 1.5 3.5 3 6 3 0-1.5-.5-3.5-2-5 0 0 2.5.5 6-1-.5-1.5-3.5-3-5-3 1.5-1 4-4 4-6-2.5 0-5.5 1.5-7 3 0-2.5-.5-5-2-7-1.5 2-2 4.5-2 7-1.5-1.5-4.5-3-7-3 0 2 2.5 5 4 6", + key: "1mezod" + } + ] +]); + +const CaptionsOff = createLucideIcon("CaptionsOffIcon", [ + ["path", { d: "M10.5 5H19a2 2 0 0 1 2 2v8.5", key: "jqtk4d" }], + ["path", { d: "M17 11h-.5", key: "1961ue" }], + ["path", { d: "M19 19H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2", key: "1keqsi" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M7 11h4", key: "1o1z6v" }], + ["path", { d: "M7 15h2.5", key: "1ina1g" }] +]); + +const Captions = createLucideIcon("CaptionsIcon", [ + ["rect", { width: "18", height: "14", x: "3", y: "5", rx: "2", ry: "2", key: "12ruh7" }], + ["path", { d: "M7 15h4M15 15h2M7 11h2M13 11h4", key: "1ueiar" }] +]); + +const CarFront = createLucideIcon("CarFrontIcon", [ + [ + "path", + { d: "m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8", key: "1imjwt" } + ], + ["path", { d: "M7 14h.01", key: "1qa3f1" }], + ["path", { d: "M17 14h.01", key: "7oqj8z" }], + ["rect", { width: "18", height: "8", x: "3", y: "10", rx: "2", key: "a7itu8" }], + ["path", { d: "M5 18v2", key: "ppbyun" }], + ["path", { d: "M19 18v2", key: "gy7782" }] +]); + +const CarTaxiFront = createLucideIcon("CarTaxiFrontIcon", [ + ["path", { d: "M10 2h4", key: "n1abiw" }], + [ + "path", + { d: "m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8", key: "1imjwt" } + ], + ["path", { d: "M7 14h.01", key: "1qa3f1" }], + ["path", { d: "M17 14h.01", key: "7oqj8z" }], + ["rect", { width: "18", height: "8", x: "3", y: "10", rx: "2", key: "a7itu8" }], + ["path", { d: "M5 18v2", key: "ppbyun" }], + ["path", { d: "M19 18v2", key: "gy7782" }] +]); + +const Car = createLucideIcon("CarIcon", [ + [ + "path", + { + d: "M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2", + key: "5owen" + } + ], + ["circle", { cx: "7", cy: "17", r: "2", key: "u2ysq9" }], + ["path", { d: "M9 17h6", key: "r8uit2" }], + ["circle", { cx: "17", cy: "17", r: "2", key: "axvx0g" }] +]); + +const Caravan = createLucideIcon("CaravanIcon", [ + ["path", { d: "M18 19V9a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v8a2 2 0 0 0 2 2h2", key: "19jm3t" }], + ["path", { d: "M2 9h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2", key: "13hakp" }], + ["path", { d: "M22 17v1a1 1 0 0 1-1 1H10v-9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v9", key: "1crci8" }], + ["circle", { cx: "8", cy: "19", r: "2", key: "t8fc5s" }] +]); + +const Carrot = createLucideIcon("CarrotIcon", [ + [ + "path", + { + d: "M2.27 21.7s9.87-3.5 12.73-6.36a4.5 4.5 0 0 0-6.36-6.37C5.77 11.84 2.27 21.7 2.27 21.7zM8.64 14l-2.05-2.04M15.34 15l-2.46-2.46", + key: "rfqxbe" + } + ], + ["path", { d: "M22 9s-1.33-2-3.5-2C16.86 7 15 9 15 9s1.33 2 3.5 2S22 9 22 9z", key: "6b25w4" }], + ["path", { d: "M15 2s-2 1.33-2 3.5S15 9 15 9s2-1.84 2-3.5C17 3.33 15 2 15 2z", key: "fn65lo" }] +]); + +const CaseLower = createLucideIcon("CaseLowerIcon", [ + ["circle", { cx: "7", cy: "12", r: "3", key: "12clwm" }], + ["path", { d: "M10 9v6", key: "17i7lo" }], + ["circle", { cx: "17", cy: "12", r: "3", key: "gl7c2s" }], + ["path", { d: "M14 7v8", key: "dl84cr" }] +]); + +const CaseSensitive = createLucideIcon("CaseSensitiveIcon", [ + ["path", { d: "m3 15 4-8 4 8", key: "1vwr6u" }], + ["path", { d: "M4 13h6", key: "1r9ots" }], + ["circle", { cx: "18", cy: "12", r: "3", key: "1kchzo" }], + ["path", { d: "M21 9v6", key: "anns31" }] +]); + +const CaseUpper = createLucideIcon("CaseUpperIcon", [ + ["path", { d: "m3 15 4-8 4 8", key: "1vwr6u" }], + ["path", { d: "M4 13h6", key: "1r9ots" }], + ["path", { d: "M15 11h4.5a2 2 0 0 1 0 4H15V7h4a2 2 0 0 1 0 4", key: "1sqfas" }] +]); + +const CassetteTape = createLucideIcon("CassetteTapeIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["circle", { cx: "8", cy: "10", r: "2", key: "1xl4ub" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["circle", { cx: "16", cy: "10", r: "2", key: "r14t7q" }], + ["path", { d: "m6 20 .7-2.9A1.4 1.4 0 0 1 8.1 16h7.8a1.4 1.4 0 0 1 1.4 1l.7 3", key: "l01ucn" }] +]); + +const Cast = createLucideIcon("CastIcon", [ + ["path", { d: "M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6", key: "3zrzxg" }], + ["path", { d: "M2 12a9 9 0 0 1 8 8", key: "g6cvee" }], + ["path", { d: "M2 16a5 5 0 0 1 4 4", key: "1y1dii" }], + ["line", { x1: "2", x2: "2.01", y1: "20", y2: "20", key: "xu2jvo" }] +]); + +const Castle = createLucideIcon("CastleIcon", [ + ["path", { d: "M22 20v-9H2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2Z", key: "109fe4" }], + ["path", { d: "M18 11V4H6v7", key: "mon5oj" }], + ["path", { d: "M15 22v-4a3 3 0 0 0-3-3a3 3 0 0 0-3 3v4", key: "1k4jtn" }], + ["path", { d: "M22 11V9", key: "3zbp94" }], + ["path", { d: "M2 11V9", key: "1x5rnq" }], + ["path", { d: "M6 4V2", key: "1rsq15" }], + ["path", { d: "M18 4V2", key: "1jsdo1" }], + ["path", { d: "M10 4V2", key: "75d9ly" }], + ["path", { d: "M14 4V2", key: "8nj3z6" }] +]); + +const Cat = createLucideIcon("CatIcon", [ + [ + "path", + { + d: "M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z", + key: "x6xyqk" + } + ], + ["path", { d: "M8 14v.5", key: "1nzgdb" }], + ["path", { d: "M16 14v.5", key: "1lajdz" }], + ["path", { d: "M11.25 16.25h1.5L12 17l-.75-.75Z", key: "12kq1m" }] +]); + +const Cctv = createLucideIcon("CctvIcon", [ + [ + "path", + { + d: "M16.75 12h3.632a1 1 0 0 1 .894 1.447l-2.034 4.069a1 1 0 0 1-1.708.134l-2.124-2.97", + key: "ir91b5" + } + ], + [ + "path", + { + d: "M17.106 9.053a1 1 0 0 1 .447 1.341l-3.106 6.211a1 1 0 0 1-1.342.447L3.61 12.3a2.92 2.92 0 0 1-1.3-3.91L3.69 5.6a2.92 2.92 0 0 1 3.92-1.3z", + key: "jlp8i1" + } + ], + ["path", { d: "M2 19h3.76a2 2 0 0 0 1.8-1.1L9 15", key: "19bib8" }], + ["path", { d: "M2 21v-4", key: "l40lih" }], + ["path", { d: "M7 9h.01", key: "19b3jx" }] +]); + +const ChartArea = createLucideIcon("ChartAreaIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + [ + "path", + { + d: "M7 11.207a.5.5 0 0 1 .146-.353l2-2a.5.5 0 0 1 .708 0l3.292 3.292a.5.5 0 0 0 .708 0l4.292-4.292a.5.5 0 0 1 .854.353V16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z", + key: "q0gr47" + } + ] +]); + +const ChartBarBig = createLucideIcon("ChartBarBigIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["rect", { x: "7", y: "13", width: "9", height: "4", rx: "1", key: "1iip1u" }], + ["rect", { x: "7", y: "5", width: "12", height: "4", rx: "1", key: "1anskk" }] +]); + +const ChartBarDecreasing = createLucideIcon("ChartBarDecreasingIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M7 11h8", key: "1feolt" }], + ["path", { d: "M7 16h3", key: "ur6vzw" }], + ["path", { d: "M7 6h12", key: "sz5b0d" }] +]); + +const ChartBarIncreasing = createLucideIcon("ChartBarIncreasingIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M7 11h8", key: "1feolt" }], + ["path", { d: "M7 16h12", key: "wsnu98" }], + ["path", { d: "M7 6h3", key: "w9rmul" }] +]); + +const ChartBarStacked = createLucideIcon("ChartBarStackedIcon", [ + ["path", { d: "M11 13v4", key: "vyy2rb" }], + ["path", { d: "M15 5v4", key: "1gx88a" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["rect", { x: "7", y: "13", width: "9", height: "4", rx: "1", key: "1iip1u" }], + ["rect", { x: "7", y: "5", width: "12", height: "4", rx: "1", key: "1anskk" }] +]); + +const ChartBar = createLucideIcon("ChartBarIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M7 16h8", key: "srdodz" }], + ["path", { d: "M7 11h12", key: "127s9w" }], + ["path", { d: "M7 6h3", key: "w9rmul" }] +]); + +const ChartCandlestick = createLucideIcon("ChartCandlestickIcon", [ + ["path", { d: "M9 5v4", key: "14uxtq" }], + ["rect", { width: "4", height: "6", x: "7", y: "9", rx: "1", key: "f4fvz0" }], + ["path", { d: "M9 15v2", key: "r5rk32" }], + ["path", { d: "M17 3v2", key: "1l2re6" }], + ["rect", { width: "4", height: "8", x: "15", y: "5", rx: "1", key: "z38je5" }], + ["path", { d: "M17 13v3", key: "5l0wba" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }] +]); + +const ChartColumnBig = createLucideIcon("ChartColumnBigIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["rect", { x: "15", y: "5", width: "4", height: "12", rx: "1", key: "q8uenq" }], + ["rect", { x: "7", y: "8", width: "4", height: "9", rx: "1", key: "sr5ea" }] +]); + +const ChartColumnDecreasing = createLucideIcon("ChartColumnDecreasingIcon", [ + ["path", { d: "M13 17V9", key: "1fwyjl" }], + ["path", { d: "M18 17v-3", key: "1sqioe" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M8 17V5", key: "1wzmnc" }] +]); + +const ChartColumnIncreasing = createLucideIcon("ChartColumnIncreasingIcon", [ + ["path", { d: "M13 17V9", key: "1fwyjl" }], + ["path", { d: "M18 17V5", key: "sfb6ij" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M8 17v-3", key: "17ska0" }] +]); + +const ChartColumnStacked = createLucideIcon("ChartColumnStackedIcon", [ + ["path", { d: "M11 13H7", key: "t0o9gq" }], + ["path", { d: "M19 9h-4", key: "rera1j" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["rect", { x: "15", y: "5", width: "4", height: "12", rx: "1", key: "q8uenq" }], + ["rect", { x: "7", y: "8", width: "4", height: "9", rx: "1", key: "sr5ea" }] +]); + +const ChartColumn = createLucideIcon("ChartColumnIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M18 17V9", key: "2bz60n" }], + ["path", { d: "M13 17V5", key: "1frdt8" }], + ["path", { d: "M8 17v-3", key: "17ska0" }] +]); + +const ChartGantt = createLucideIcon("ChartGanttIcon", [ + ["path", { d: "M10 6h8", key: "zvc2xc" }], + ["path", { d: "M12 16h6", key: "yi5mkt" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M8 11h7", key: "wz2hg0" }] +]); + +const ChartLine = createLucideIcon("ChartLineIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "m19 9-5 5-4-4-3 3", key: "2osh9i" }] +]); + +const ChartNetwork = createLucideIcon("ChartNetworkIcon", [ + ["path", { d: "m13.11 7.664 1.78 2.672", key: "go2gg9" }], + ["path", { d: "m14.162 12.788-3.324 1.424", key: "11x848" }], + ["path", { d: "m20 4-6.06 1.515", key: "1wxxh7" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["circle", { cx: "12", cy: "6", r: "2", key: "1jj5th" }], + ["circle", { cx: "16", cy: "12", r: "2", key: "4ma0v8" }], + ["circle", { cx: "9", cy: "15", r: "2", key: "lf2ghp" }] +]); + +const ChartNoAxesColumnDecreasing = createLucideIcon("ChartNoAxesColumnDecreasingIcon", [ + ["path", { d: "M12 20V10", key: "g8npz5" }], + ["path", { d: "M18 20v-4", key: "8uic4z" }], + ["path", { d: "M6 20V4", key: "1w1bmo" }] +]); + +const ChartNoAxesColumnIncreasing = createLucideIcon("ChartNoAxesColumnIncreasingIcon", [ + ["line", { x1: "12", x2: "12", y1: "20", y2: "10", key: "1vz5eb" }], + ["line", { x1: "18", x2: "18", y1: "20", y2: "4", key: "cun8e5" }], + ["line", { x1: "6", x2: "6", y1: "20", y2: "16", key: "hq0ia6" }] +]); + +const ChartNoAxesColumn = createLucideIcon("ChartNoAxesColumnIcon", [ + ["line", { x1: "18", x2: "18", y1: "20", y2: "10", key: "1xfpm4" }], + ["line", { x1: "12", x2: "12", y1: "20", y2: "4", key: "be30l9" }], + ["line", { x1: "6", x2: "6", y1: "20", y2: "14", key: "1r4le6" }] +]); + +const ChartNoAxesCombined = createLucideIcon("ChartNoAxesCombinedIcon", [ + ["path", { d: "M12 16v5", key: "zza2cw" }], + ["path", { d: "M16 14v7", key: "1g90b9" }], + ["path", { d: "M20 10v11", key: "1iqoj0" }], + [ + "path", + { d: "m22 3-8.646 8.646a.5.5 0 0 1-.708 0L9.354 8.354a.5.5 0 0 0-.707 0L2 15", key: "1fw8x9" } + ], + ["path", { d: "M4 18v3", key: "1yp0dc" }], + ["path", { d: "M8 14v7", key: "n3cwzv" }] +]); + +const ChartNoAxesGantt = createLucideIcon("ChartNoAxesGanttIcon", [ + ["path", { d: "M8 6h10", key: "9lnwnk" }], + ["path", { d: "M6 12h9", key: "1g9pqf" }], + ["path", { d: "M11 18h7", key: "c8dzvl" }] +]); + +const ChartPie = createLucideIcon("ChartPieIcon", [ + [ + "path", + { + d: "M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z", + key: "pzmjnu" + } + ], + ["path", { d: "M21.21 15.89A10 10 0 1 1 8 2.83", key: "k2fpak" }] +]); + +const ChartScatter = createLucideIcon("ChartScatterIcon", [ + ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }], + ["circle", { cx: "18.5", cy: "5.5", r: ".5", fill: "currentColor", key: "lysivs" }], + ["circle", { cx: "11.5", cy: "11.5", r: ".5", fill: "currentColor", key: "byv1b8" }], + ["circle", { cx: "7.5", cy: "16.5", r: ".5", fill: "currentColor", key: "nkw3mc" }], + ["circle", { cx: "17.5", cy: "14.5", r: ".5", fill: "currentColor", key: "1gjh6j" }], + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }] +]); + +const ChartSpline = createLucideIcon("ChartSplineIcon", [ + ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }], + ["path", { d: "M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7", key: "lw07rv" }] +]); + +const CheckCheck = createLucideIcon("CheckCheckIcon", [ + ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }], + ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }] +]); + +const Check = createLucideIcon("CheckIcon", [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]]); + +const ChefHat = createLucideIcon("ChefHatIcon", [ + [ + "path", + { + d: "M17 21a1 1 0 0 0 1-1v-5.35c0-.457.316-.844.727-1.041a4 4 0 0 0-2.134-7.589 5 5 0 0 0-9.186 0 4 4 0 0 0-2.134 7.588c.411.198.727.585.727 1.041V20a1 1 0 0 0 1 1Z", + key: "1qvrer" + } + ], + ["path", { d: "M6 17h12", key: "1jwigz" }] +]); + +const Cherry = createLucideIcon("CherryIcon", [ + ["path", { d: "M2 17a5 5 0 0 0 10 0c0-2.76-2.5-5-5-3-2.5-2-5 .24-5 3Z", key: "cvxqlc" }], + ["path", { d: "M12 17a5 5 0 0 0 10 0c0-2.76-2.5-5-5-3-2.5-2-5 .24-5 3Z", key: "1ostrc" }], + ["path", { d: "M7 14c3.22-2.91 4.29-8.75 5-12 1.66 2.38 4.94 9 5 12", key: "hqx58h" }], + ["path", { d: "M22 9c-4.29 0-7.14-2.33-10-7 5.71 0 10 4.67 10 7Z", key: "eykp1o" }] +]); + +const ChevronDown = createLucideIcon("ChevronDownIcon", [ + ["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }] +]); + +const ChevronFirst = createLucideIcon("ChevronFirstIcon", [ + ["path", { d: "m17 18-6-6 6-6", key: "1yerx2" }], + ["path", { d: "M7 6v12", key: "1p53r6" }] +]); + +const ChevronLast = createLucideIcon("ChevronLastIcon", [ + ["path", { d: "m7 18 6-6-6-6", key: "lwmzdw" }], + ["path", { d: "M17 6v12", key: "1o0aio" }] +]); + +const ChevronLeft = createLucideIcon("ChevronLeftIcon", [ + ["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }] +]); + +const ChevronRight = createLucideIcon("ChevronRightIcon", [ + ["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }] +]); + +const ChevronUp = createLucideIcon("ChevronUpIcon", [ + ["path", { d: "m18 15-6-6-6 6", key: "153udz" }] +]); + +const ChevronsDownUp = createLucideIcon("ChevronsDownUpIcon", [ + ["path", { d: "m7 20 5-5 5 5", key: "13a0gw" }], + ["path", { d: "m7 4 5 5 5-5", key: "1kwcof" }] +]); + +const ChevronsDown = createLucideIcon("ChevronsDownIcon", [ + ["path", { d: "m7 6 5 5 5-5", key: "1lc07p" }], + ["path", { d: "m7 13 5 5 5-5", key: "1d48rs" }] +]); + +const ChevronsLeftRightEllipsis = createLucideIcon("ChevronsLeftRightEllipsisIcon", [ + ["path", { d: "m18 8 4 4-4 4", key: "1ak13k" }], + ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }], + ["path", { d: "M8 12h.01", key: "czm47f" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M16 12h.01", key: "1l6xoz" }] +]); + +const ChevronsLeftRight = createLucideIcon("ChevronsLeftRightIcon", [ + ["path", { d: "m9 7-5 5 5 5", key: "j5w590" }], + ["path", { d: "m15 7 5 5-5 5", key: "1bl6da" }] +]); + +const ChevronsLeft = createLucideIcon("ChevronsLeftIcon", [ + ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }], + ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }] +]); + +const ChevronsRightLeft = createLucideIcon("ChevronsRightLeftIcon", [ + ["path", { d: "m20 17-5-5 5-5", key: "30x0n2" }], + ["path", { d: "m4 17 5-5-5-5", key: "16spf4" }] +]); + +const ChevronsRight = createLucideIcon("ChevronsRightIcon", [ + ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }], + ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }] +]); + +const ChevronsUpDown = createLucideIcon("ChevronsUpDownIcon", [ + ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }], + ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }] +]); + +const ChevronsUp = createLucideIcon("ChevronsUpIcon", [ + ["path", { d: "m17 11-5-5-5 5", key: "e8nh98" }], + ["path", { d: "m17 18-5-5-5 5", key: "2avn1x" }] +]); + +const Chrome = createLucideIcon("ChromeIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["line", { x1: "21.17", x2: "12", y1: "8", y2: "8", key: "a0cw5f" }], + ["line", { x1: "3.95", x2: "8.54", y1: "6.06", y2: "14", key: "1kftof" }], + ["line", { x1: "10.88", x2: "15.46", y1: "21.94", y2: "14", key: "1ymyh8" }] +]); + +const Church = createLucideIcon("ChurchIcon", [ + ["path", { d: "M10 9h4", key: "u4k05v" }], + ["path", { d: "M12 7v5", key: "ma6bk" }], + ["path", { d: "M14 22v-4a2 2 0 0 0-4 0v4", key: "1pdhuj" }], + [ + "path", + { + d: "M18 22V5.618a1 1 0 0 0-.553-.894l-4.553-2.277a2 2 0 0 0-1.788 0L6.553 4.724A1 1 0 0 0 6 5.618V22", + key: "1rkokr" + } + ], + [ + "path", + { + d: "m18 7 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.618a1 1 0 0 1 .553-.894L6 7", + key: "1w6esw" + } + ] +]); + +const CigaretteOff = createLucideIcon("CigaretteOffIcon", [ + ["path", { d: "M12 12H3a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h13", key: "1gdiyg" }], + ["path", { d: "M18 8c0-2.5-2-2.5-2-5", key: "1il607" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M21 12a1 1 0 0 1 1 1v2a1 1 0 0 1-.5.866", key: "166zjj" }], + ["path", { d: "M22 8c0-2.5-2-2.5-2-5", key: "1gah44" }], + ["path", { d: "M7 12v4", key: "jqww69" }] +]); + +const Cigarette = createLucideIcon("CigaretteIcon", [ + ["path", { d: "M17 12H3a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h14", key: "1mb5g1" }], + ["path", { d: "M18 8c0-2.5-2-2.5-2-5", key: "1il607" }], + ["path", { d: "M21 16a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1", key: "1yl5r7" }], + ["path", { d: "M22 8c0-2.5-2-2.5-2-5", key: "1gah44" }], + ["path", { d: "M7 12v4", key: "jqww69" }] +]); + +const CircleAlert = createLucideIcon("CircleAlertIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }], + ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }] +]); + +const CircleArrowDown = createLucideIcon("CircleArrowDownIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M12 8v8", key: "napkw2" }], + ["path", { d: "m8 12 4 4 4-4", key: "k98ssh" }] +]); + +const CircleArrowLeft = createLucideIcon("CircleArrowLeftIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M16 12H8", key: "1fr5h0" }], + ["path", { d: "m12 8-4 4 4 4", key: "15vm53" }] +]); + +const CircleArrowOutDownLeft = createLucideIcon("CircleArrowOutDownLeftIcon", [ + ["path", { d: "M2 12a10 10 0 1 1 10 10", key: "1yn6ov" }], + ["path", { d: "m2 22 10-10", key: "28ilpk" }], + ["path", { d: "M8 22H2v-6", key: "sulq54" }] +]); + +const CircleArrowOutDownRight = createLucideIcon("CircleArrowOutDownRightIcon", [ + ["path", { d: "M12 22a10 10 0 1 1 10-10", key: "130bv5" }], + ["path", { d: "M22 22 12 12", key: "131aw7" }], + ["path", { d: "M22 16v6h-6", key: "1gvm70" }] +]); + +const CircleArrowOutUpLeft = createLucideIcon("CircleArrowOutUpLeftIcon", [ + ["path", { d: "M2 8V2h6", key: "hiwtdz" }], + ["path", { d: "m2 2 10 10", key: "1oh8rs" }], + ["path", { d: "M12 2A10 10 0 1 1 2 12", key: "rrk4fa" }] +]); + +const CircleArrowOutUpRight = createLucideIcon("CircleArrowOutUpRightIcon", [ + ["path", { d: "M22 12A10 10 0 1 1 12 2", key: "1fm58d" }], + ["path", { d: "M22 2 12 12", key: "yg2myt" }], + ["path", { d: "M16 2h6v6", key: "zan5cs" }] +]); + +const CircleArrowRight = createLucideIcon("CircleArrowRightIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "m12 16 4-4-4-4", key: "1i9zcv" }] +]); + +const CircleArrowUp = createLucideIcon("CircleArrowUpIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m16 12-4-4-4 4", key: "177agl" }], + ["path", { d: "M12 16V8", key: "1sbj14" }] +]); + +const CircleCheckBig = createLucideIcon("CircleCheckBigIcon", [ + ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }], + ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }] +]); + +const CircleCheck = createLucideIcon("CircleCheckIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }] +]); + +const CircleChevronDown = createLucideIcon("CircleChevronDownIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m16 10-4 4-4-4", key: "894hmk" }] +]); + +const CircleChevronLeft = createLucideIcon("CircleChevronLeftIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m14 16-4-4 4-4", key: "ojs7w8" }] +]); + +const CircleChevronRight = createLucideIcon("CircleChevronRightIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m10 8 4 4-4 4", key: "1wy4r4" }] +]); + +const CircleChevronUp = createLucideIcon("CircleChevronUpIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m8 14 4-4 4 4", key: "fy2ptz" }] +]); + +const CircleDashed = createLucideIcon("CircleDashedIcon", [ + ["path", { d: "M10.1 2.182a10 10 0 0 1 3.8 0", key: "5ilxe3" }], + ["path", { d: "M13.9 21.818a10 10 0 0 1-3.8 0", key: "11zvb9" }], + ["path", { d: "M17.609 3.721a10 10 0 0 1 2.69 2.7", key: "1iw5b2" }], + ["path", { d: "M2.182 13.9a10 10 0 0 1 0-3.8", key: "c0bmvh" }], + ["path", { d: "M20.279 17.609a10 10 0 0 1-2.7 2.69", key: "1ruxm7" }], + ["path", { d: "M21.818 10.1a10 10 0 0 1 0 3.8", key: "qkgqxc" }], + ["path", { d: "M3.721 6.391a10 10 0 0 1 2.7-2.69", key: "1mcia2" }], + ["path", { d: "M6.391 20.279a10 10 0 0 1-2.69-2.7", key: "1fvljs" }] +]); + +const CircleDivide = createLucideIcon("CircleDivideIcon", [ + ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }], + ["line", { x1: "12", x2: "12", y1: "16", y2: "16", key: "aqc6ln" }], + ["line", { x1: "12", x2: "12", y1: "8", y2: "8", key: "1mkcni" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const CircleDollarSign = createLucideIcon("CircleDollarSignIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8", key: "1h4pet" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }] +]); + +const CircleDotDashed = createLucideIcon("CircleDotDashedIcon", [ + ["path", { d: "M10.1 2.18a9.93 9.93 0 0 1 3.8 0", key: "1qdqn0" }], + ["path", { d: "M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7", key: "1bq7p6" }], + ["path", { d: "M21.82 10.1a9.93 9.93 0 0 1 0 3.8", key: "1rlaqf" }], + ["path", { d: "M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69", key: "1xk03u" }], + ["path", { d: "M13.9 21.82a9.94 9.94 0 0 1-3.8 0", key: "l7re25" }], + ["path", { d: "M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7", key: "1v18p6" }], + ["path", { d: "M2.18 13.9a9.93 9.93 0 0 1 0-3.8", key: "xdo6bj" }], + ["path", { d: "M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69", key: "1jjmaz" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }] +]); + +const CircleDot = createLucideIcon("CircleDotIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }] +]); + +const CircleEllipsis = createLucideIcon("CircleEllipsisIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M17 12h.01", key: "1m0b6t" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M7 12h.01", key: "eqddd0" }] +]); + +const CircleEqual = createLucideIcon("CircleEqualIcon", [ + ["path", { d: "M7 10h10", key: "1101jm" }], + ["path", { d: "M7 14h10", key: "1mhdw3" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const CircleFadingArrowUp = createLucideIcon("CircleFadingArrowUpIcon", [ + ["path", { d: "M12 2a10 10 0 0 1 7.38 16.75", key: "175t95" }], + ["path", { d: "m16 12-4-4-4 4", key: "177agl" }], + ["path", { d: "M12 16V8", key: "1sbj14" }], + ["path", { d: "M2.5 8.875a10 10 0 0 0-.5 3", key: "1vce0s" }], + ["path", { d: "M2.83 16a10 10 0 0 0 2.43 3.4", key: "o3fkw4" }], + ["path", { d: "M4.636 5.235a10 10 0 0 1 .891-.857", key: "1szpfk" }], + ["path", { d: "M8.644 21.42a10 10 0 0 0 7.631-.38", key: "9yhvd4" }] +]); + +const CircleFadingPlus = createLucideIcon("CircleFadingPlusIcon", [ + ["path", { d: "M12 2a10 10 0 0 1 7.38 16.75", key: "175t95" }], + ["path", { d: "M12 8v8", key: "napkw2" }], + ["path", { d: "M16 12H8", key: "1fr5h0" }], + ["path", { d: "M2.5 8.875a10 10 0 0 0-.5 3", key: "1vce0s" }], + ["path", { d: "M2.83 16a10 10 0 0 0 2.43 3.4", key: "o3fkw4" }], + ["path", { d: "M4.636 5.235a10 10 0 0 1 .891-.857", key: "1szpfk" }], + ["path", { d: "M8.644 21.42a10 10 0 0 0 7.631-.38", key: "9yhvd4" }] +]); + +const CircleGauge = createLucideIcon("CircleGaugeIcon", [ + ["path", { d: "M15.6 2.7a10 10 0 1 0 5.7 5.7", key: "1e0p6d" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "M13.4 10.6 19 5", key: "1kr7tw" }] +]); + +const CircleHelp = createLucideIcon("CircleHelpIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }], + ["path", { d: "M12 17h.01", key: "p32p05" }] +]); + +const CircleMinus = createLucideIcon("CircleMinusIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M8 12h8", key: "1wcyev" }] +]); + +const CircleOff = createLucideIcon("CircleOffIcon", [ + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M8.35 2.69A10 10 0 0 1 21.3 15.65", key: "1pfsoa" }], + ["path", { d: "M19.08 19.08A10 10 0 1 1 4.92 4.92", key: "1ablyi" }] +]); + +const CircleParkingOff = createLucideIcon("CircleParkingOffIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m5 5 14 14", key: "11anup" }], + ["path", { d: "M13 13a3 3 0 1 0 0-6H9v2", key: "uoagbd" }], + ["path", { d: "M9 17v-2.34", key: "a9qo08" }] +]); + +const CircleParking = createLucideIcon("CircleParkingIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M9 17V7h4a3 3 0 0 1 0 6H9", key: "1dfk2c" }] +]); + +const CirclePause = createLucideIcon("CirclePauseIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["line", { x1: "10", x2: "10", y1: "15", y2: "9", key: "c1nkhi" }], + ["line", { x1: "14", x2: "14", y1: "15", y2: "9", key: "h65svq" }] +]); + +const CirclePercent = createLucideIcon("CirclePercentIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "M9 9h.01", key: "1q5me6" }], + ["path", { d: "M15 15h.01", key: "lqbp3k" }] +]); + +const CirclePlay = createLucideIcon("CirclePlayIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polygon", { points: "10 8 16 12 10 16 10 8", key: "1cimsy" }] +]); + +const CirclePlus = createLucideIcon("CirclePlusIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "M12 8v8", key: "napkw2" }] +]); + +const CirclePower = createLucideIcon("CirclePowerIcon", [ + ["path", { d: "M12 7v4", key: "xawao1" }], + ["path", { d: "M7.998 9.003a5 5 0 1 0 8-.005", key: "1pek45" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const CircleSlash2 = createLucideIcon("CircleSlash2Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M22 2 2 22", key: "y4kqgn" }] +]); + +const CircleSlash = createLucideIcon("CircleSlashIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["line", { x1: "9", x2: "15", y1: "15", y2: "9", key: "1dfufj" }] +]); + +const CircleSmall = createLucideIcon("CircleSmallIcon", [ + ["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }] +]); + +const CircleStop = createLucideIcon("CircleStopIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }] +]); + +const CircleUserRound = createLucideIcon("CircleUserRoundIcon", [ + ["path", { d: "M18 20a6 6 0 0 0-12 0", key: "1qehca" }], + ["circle", { cx: "12", cy: "10", r: "4", key: "1h16sb" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const CircleUser = createLucideIcon("CircleUserIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662", key: "154egf" }] +]); + +const CircleX = createLucideIcon("CircleXIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "m9 9 6 6", key: "z0biqf" }] +]); + +const Circle = createLucideIcon("CircleIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const CircuitBoard = createLucideIcon("CircuitBoardIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M11 9h4a2 2 0 0 0 2-2V3", key: "1ve2rv" }], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }], + ["path", { d: "M7 21v-4a2 2 0 0 1 2-2h4", key: "1fwkro" }], + ["circle", { cx: "15", cy: "15", r: "2", key: "3i40o0" }] +]); + +const Citrus = createLucideIcon("CitrusIcon", [ + [ + "path", + { + d: "M21.66 17.67a1.08 1.08 0 0 1-.04 1.6A12 12 0 0 1 4.73 2.38a1.1 1.1 0 0 1 1.61-.04z", + key: "4ite01" + } + ], + ["path", { d: "M19.65 15.66A8 8 0 0 1 8.35 4.34", key: "1gxipu" }], + ["path", { d: "m14 10-5.5 5.5", key: "92pfem" }], + ["path", { d: "M14 17.85V10H6.15", key: "xqmtsk" }] +]); + +const Clapperboard = createLucideIcon("ClapperboardIcon", [ + [ + "path", + { d: "M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z", key: "1tn4o7" } + ], + ["path", { d: "m6.2 5.3 3.1 3.9", key: "iuk76l" }], + ["path", { d: "m12.4 3.4 3.1 4", key: "6hsd6n" }], + ["path", { d: "M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z", key: "ltgou9" }] +]); + +const ClipboardCheck = createLucideIcon("ClipboardCheckIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ], + ["path", { d: "m9 14 2 2 4-4", key: "df797q" }] +]); + +const ClipboardCopy = createLucideIcon("ClipboardCopyIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2", key: "4jdomd" }], + ["path", { d: "M16 4h2a2 2 0 0 1 2 2v4", key: "3hqy98" }], + ["path", { d: "M21 14H11", key: "1bme5i" }], + ["path", { d: "m15 10-4 4 4 4", key: "5dvupr" }] +]); + +const ClipboardList = createLucideIcon("ClipboardListIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ], + ["path", { d: "M12 11h4", key: "1jrz19" }], + ["path", { d: "M12 16h4", key: "n85exb" }], + ["path", { d: "M8 11h.01", key: "1dfujw" }], + ["path", { d: "M8 16h.01", key: "18s6g9" }] +]); + +const ClipboardMinus = createLucideIcon("ClipboardMinusIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ], + ["path", { d: "M9 14h6", key: "159ibu" }] +]); + +const ClipboardPaste = createLucideIcon("ClipboardPasteIcon", [ + [ + "path", + { d: "M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z", key: "1pp7kr" } + ], + [ + "path", + { + d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10", + key: "2ik1ml" + } + ], + ["path", { d: "m17 10 4 4-4 4", key: "vp2hj1" }] +]); + +const ClipboardPenLine = createLucideIcon("ClipboardPenLineIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", key: "1oijnt" }], + ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-.5", key: "1but9f" }], + ["path", { d: "M16 4h2a2 2 0 0 1 1.73 1", key: "1p8n7l" }], + ["path", { d: "M8 18h1", key: "13wk12" }], + [ + "path", + { + d: "M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "2t3380" + } + ] +]); + +const ClipboardPen = createLucideIcon("ClipboardPenIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", key: "1oijnt" }], + ["path", { d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.5", key: "cereej" }], + ["path", { d: "M4 13.5V6a2 2 0 0 1 2-2h2", key: "5ua5vh" }], + [ + "path", + { + d: "M13.378 15.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "1y4qbx" + } + ] +]); + +const ClipboardPlus = createLucideIcon("ClipboardPlusIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ], + ["path", { d: "M9 14h6", key: "159ibu" }], + ["path", { d: "M12 17v-6", key: "1y8rbf" }] +]); + +const ClipboardType = createLucideIcon("ClipboardTypeIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ], + ["path", { d: "M9 12v-1h6v1", key: "iehl6m" }], + ["path", { d: "M11 17h2", key: "12w5me" }], + ["path", { d: "M12 11v6", key: "1bwqyc" }] +]); + +const ClipboardX = createLucideIcon("ClipboardXIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ], + ["path", { d: "m15 11-6 6", key: "1toa9n" }], + ["path", { d: "m9 11 6 6", key: "wlibny" }] +]); + +const Clipboard = createLucideIcon("ClipboardIcon", [ + ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }], + [ + "path", + { + d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2", + key: "116196" + } + ] +]); + +const Clock1 = createLucideIcon("Clock1Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 14.5 8", key: "12zbmj" }] +]); + +const Clock10 = createLucideIcon("Clock10Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 8 10", key: "atfzqc" }] +]); + +const Clock11 = createLucideIcon("Clock11Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 9.5 8", key: "l5bg6f" }] +]); + +const Clock12 = createLucideIcon("Clock12Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12", key: "1fub01" }] +]); + +const Clock2 = createLucideIcon("Clock2Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 16 10", key: "1g230d" }] +]); + +const Clock3 = createLucideIcon("Clock3Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 16.5 12", key: "1aq6pp" }] +]); + +const Clock4 = createLucideIcon("Clock4Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }] +]); + +const Clock5 = createLucideIcon("Clock5Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 14.5 16", key: "1pcbox" }] +]); + +const Clock6 = createLucideIcon("Clock6Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 12 16.5", key: "hb2qv6" }] +]); + +const Clock7 = createLucideIcon("Clock7Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 9.5 16", key: "ka3394" }] +]); + +const Clock8 = createLucideIcon("Clock8Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 8 14", key: "tmc9b4" }] +]); + +const Clock9 = createLucideIcon("Clock9Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 7.5 12", key: "1k60p0" }] +]); + +const ClockAlert = createLucideIcon("ClockAlertIcon", [ + ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }], + ["path", { d: "M16 21.16a10 10 0 1 1 5-13.516", key: "cxo92l" }], + ["path", { d: "M20 11.5v6", key: "2ei3xq" }], + ["path", { d: "M20 21.5h.01", key: "1r2dzp" }] +]); + +const ClockArrowDown = createLucideIcon("ClockArrowDownIcon", [ + ["path", { d: "M12.338 21.994A10 10 0 1 1 21.925 13.227", key: "1i7shu" }], + ["path", { d: "M12 6v6l2 1", key: "19cm8n" }], + ["path", { d: "m14 18 4 4 4-4", key: "1waygx" }], + ["path", { d: "M18 14v8", key: "irew45" }] +]); + +const ClockArrowUp = createLucideIcon("ClockArrowUpIcon", [ + ["path", { d: "M13.228 21.925A10 10 0 1 1 21.994 12.338", key: "1fzlyi" }], + ["path", { d: "M12 6v6l1.562.781", key: "1ujuk9" }], + ["path", { d: "m14 18 4-4 4 4", key: "ftkppy" }], + ["path", { d: "M18 22v-8", key: "su0gjh" }] +]); + +const Clock = createLucideIcon("ClockIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }] +]); + +const CloudAlert = createLucideIcon("CloudAlertIcon", [ + ["path", { d: "M12 12v4", key: "tww15h" }], + ["path", { d: "M12 20h.01", key: "zekei9" }], + ["path", { d: "M17 18h.5a1 1 0 0 0 0-9h-1.79A7 7 0 1 0 7 17.708", key: "xsb5ju" }] +]); + +const CloudCog = createLucideIcon("CloudCogIcon", [ + ["circle", { cx: "12", cy: "17", r: "3", key: "1spfwm" }], + ["path", { d: "M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2", key: "zaobp" }], + ["path", { d: "m15.7 18.4-.9-.3", key: "4qxpbn" }], + ["path", { d: "m9.2 15.9-.9-.3", key: "17q7o2" }], + ["path", { d: "m10.6 20.7.3-.9", key: "1pf4s2" }], + ["path", { d: "m13.1 14.2.3-.9", key: "1mnuqm" }], + ["path", { d: "m13.6 20.7-.4-1", key: "1jpd1m" }], + ["path", { d: "m10.8 14.3-.4-1", key: "17ugyy" }], + ["path", { d: "m8.3 18.6 1-.4", key: "s42vdx" }], + ["path", { d: "m14.7 15.8 1-.4", key: "2wizun" }] +]); + +const CloudDownload = createLucideIcon("CloudDownloadIcon", [ + ["path", { d: "M12 13v8l-4-4", key: "1f5nwf" }], + ["path", { d: "m12 21 4-4", key: "1lfcce" }], + ["path", { d: "M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284", key: "ui1hmy" }] +]); + +const CloudDrizzle = createLucideIcon("CloudDrizzleIcon", [ + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "M8 19v1", key: "1dk2by" }], + ["path", { d: "M8 14v1", key: "84yxot" }], + ["path", { d: "M16 19v1", key: "v220m7" }], + ["path", { d: "M16 14v1", key: "g12gj6" }], + ["path", { d: "M12 21v1", key: "q8vafk" }], + ["path", { d: "M12 16v1", key: "1mx6rx" }] +]); + +const CloudFog = createLucideIcon("CloudFogIcon", [ + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "M16 17H7", key: "pygtm1" }], + ["path", { d: "M17 21H9", key: "1u2q02" }] +]); + +const CloudHail = createLucideIcon("CloudHailIcon", [ + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "M16 14v2", key: "a1is7l" }], + ["path", { d: "M8 14v2", key: "1e9m6t" }], + ["path", { d: "M16 20h.01", key: "xwek51" }], + ["path", { d: "M8 20h.01", key: "1vjney" }], + ["path", { d: "M12 16v2", key: "z66u1j" }], + ["path", { d: "M12 22h.01", key: "1urd7a" }] +]); + +const CloudLightning = createLucideIcon("CloudLightningIcon", [ + ["path", { d: "M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973", key: "1cez44" }], + ["path", { d: "m13 12-3 5h4l-3 5", key: "1t22er" }] +]); + +const CloudMoonRain = createLucideIcon("CloudMoonRainIcon", [ + ["path", { d: "M10.188 8.5A6 6 0 0 1 16 4a1 1 0 0 0 6 6 6 6 0 0 1-3 5.197", key: "erj67n" }], + ["path", { d: "M11 20v2", key: "174qtz" }], + ["path", { d: "M3 20a5 5 0 1 1 8.9-4H13a3 3 0 0 1 2 5.24", key: "1qmrp3" }], + ["path", { d: "M7 19v2", key: "12npes" }] +]); + +const CloudMoon = createLucideIcon("CloudMoonIcon", [ + ["path", { d: "M10.188 8.5A6 6 0 0 1 16 4a1 1 0 0 0 6 6 6 6 0 0 1-3 5.197", key: "erj67n" }], + ["path", { d: "M13 16a3 3 0 1 1 0 6H7a5 5 0 1 1 4.9-6Z", key: "p44pc9" }] +]); + +const CloudOff = createLucideIcon("CloudOffIcon", [ + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193", key: "yfwify" }], + [ + "path", + { d: "M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07", key: "jlfiyv" } + ] +]); + +const CloudRainWind = createLucideIcon("CloudRainWindIcon", [ + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "m9.2 22 3-7", key: "sb5f6j" }], + ["path", { d: "m9 13-3 7", key: "500co5" }], + ["path", { d: "m17 13-3 7", key: "8t2fiy" }] +]); + +const CloudRain = createLucideIcon("CloudRainIcon", [ + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "M16 14v6", key: "1j4efv" }], + ["path", { d: "M8 14v6", key: "17c4r9" }], + ["path", { d: "M12 16v6", key: "c8a4gj" }] +]); + +const CloudSnow = createLucideIcon("CloudSnowIcon", [ + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "M8 15h.01", key: "a7atzg" }], + ["path", { d: "M8 19h.01", key: "puxtts" }], + ["path", { d: "M12 17h.01", key: "p32p05" }], + ["path", { d: "M12 21h.01", key: "h35vbk" }], + ["path", { d: "M16 15h.01", key: "rnfrdf" }], + ["path", { d: "M16 19h.01", key: "1vcnzz" }] +]); + +const CloudSunRain = createLucideIcon("CloudSunRainIcon", [ + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }], + ["path", { d: "M20 12h2", key: "1q8mjw" }], + ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }], + ["path", { d: "M15.947 12.65a4 4 0 0 0-5.925-4.128", key: "dpwdj0" }], + ["path", { d: "M3 20a5 5 0 1 1 8.9-4H13a3 3 0 0 1 2 5.24", key: "1qmrp3" }], + ["path", { d: "M11 20v2", key: "174qtz" }], + ["path", { d: "M7 19v2", key: "12npes" }] +]); + +const CloudSun = createLucideIcon("CloudSunIcon", [ + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }], + ["path", { d: "M20 12h2", key: "1q8mjw" }], + ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }], + ["path", { d: "M15.947 12.65a4 4 0 0 0-5.925-4.128", key: "dpwdj0" }], + ["path", { d: "M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z", key: "s09mg5" }] +]); + +const CloudUpload = createLucideIcon("CloudUploadIcon", [ + ["path", { d: "M12 13v8", key: "1l5pq0" }], + ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }], + ["path", { d: "m8 17 4-4 4 4", key: "1quai1" }] +]); + +const Cloud = createLucideIcon("CloudIcon", [ + ["path", { d: "M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "p7xjir" }] +]); + +const Cloudy = createLucideIcon("CloudyIcon", [ + ["path", { d: "M17.5 21H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z", key: "gqqjvc" }], + ["path", { d: "M22 10a3 3 0 0 0-3-3h-2.207a5.502 5.502 0 0 0-10.702.5", key: "1p2s76" }] +]); + +const Clover = createLucideIcon("CloverIcon", [ + ["path", { d: "M16.17 7.83 2 22", key: "t58vo8" }], + [ + "path", + { + d: "M4.02 12a2.827 2.827 0 1 1 3.81-4.17A2.827 2.827 0 1 1 12 4.02a2.827 2.827 0 1 1 4.17 3.81A2.827 2.827 0 1 1 19.98 12a2.827 2.827 0 1 1-3.81 4.17A2.827 2.827 0 1 1 12 19.98a2.827 2.827 0 1 1-4.17-3.81A1 1 0 1 1 4 12", + key: "17k36q" + } + ], + ["path", { d: "m7.83 7.83 8.34 8.34", key: "1d7sxk" }] +]); + +const Club = createLucideIcon("ClubIcon", [ + [ + "path", + { + d: "M17.28 9.05a5.5 5.5 0 1 0-10.56 0A5.5 5.5 0 1 0 12 17.66a5.5 5.5 0 1 0 5.28-8.6Z", + key: "27yuqz" + } + ], + ["path", { d: "M12 17.66L12 22", key: "ogfahf" }] +]); + +const CodeXml = createLucideIcon("CodeXmlIcon", [ + ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }], + ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }], + ["path", { d: "m14.5 4-5 16", key: "e7oirm" }] +]); + +const Code = createLucideIcon("CodeIcon", [ + ["polyline", { points: "16 18 22 12 16 6", key: "z7tu5w" }], + ["polyline", { points: "8 6 2 12 8 18", key: "1eg1df" }] +]); + +const Codepen = createLucideIcon("CodepenIcon", [ + ["polygon", { points: "12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2", key: "srzb37" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "15.5", key: "1t73f2" }], + ["polyline", { points: "22 8.5 12 15.5 2 8.5", key: "ajlxae" }], + ["polyline", { points: "2 15.5 12 8.5 22 15.5", key: "susrui" }], + ["line", { x1: "12", x2: "12", y1: "2", y2: "8.5", key: "2cldga" }] +]); + +const Codesandbox = createLucideIcon("CodesandboxIcon", [ + [ + "path", + { + d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z", + key: "yt0hxn" + } + ], + ["polyline", { points: "7.5 4.21 12 6.81 16.5 4.21", key: "fabo96" }], + ["polyline", { points: "7.5 19.79 7.5 14.6 3 12", key: "z377f1" }], + ["polyline", { points: "21 12 16.5 14.6 16.5 19.79", key: "9nrev1" }], + ["polyline", { points: "3.27 6.96 12 12.01 20.73 6.96", key: "1180pa" }], + ["line", { x1: "12", x2: "12", y1: "22.08", y2: "12", key: "3z3uq6" }] +]); + +const Coffee = createLucideIcon("CoffeeIcon", [ + ["path", { d: "M10 2v2", key: "7u0qdc" }], + ["path", { d: "M14 2v2", key: "6buw04" }], + [ + "path", + { + d: "M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1", + key: "pwadti" + } + ], + ["path", { d: "M6 2v2", key: "colzsn" }] +]); + +const Cog = createLucideIcon("CogIcon", [ + ["path", { d: "M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z", key: "sobvz5" }], + ["path", { d: "M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z", key: "11i496" }], + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "M12 22v-2", key: "1osdcq" }], + ["path", { d: "m17 20.66-1-1.73", key: "eq3orb" }], + ["path", { d: "M11 10.27 7 3.34", key: "16pf9h" }], + ["path", { d: "m20.66 17-1.73-1", key: "sg0v6f" }], + ["path", { d: "m3.34 7 1.73 1", key: "1ulond" }], + ["path", { d: "M14 12h8", key: "4f43i9" }], + ["path", { d: "M2 12h2", key: "1t8f8n" }], + ["path", { d: "m20.66 7-1.73 1", key: "1ow05n" }], + ["path", { d: "m3.34 17 1.73-1", key: "nuk764" }], + ["path", { d: "m17 3.34-1 1.73", key: "2wel8s" }], + ["path", { d: "m11 13.73-4 6.93", key: "794ttg" }] +]); + +const Coins = createLucideIcon("CoinsIcon", [ + ["circle", { cx: "8", cy: "8", r: "6", key: "3yglwk" }], + ["path", { d: "M18.09 10.37A6 6 0 1 1 10.34 18", key: "t5s6rm" }], + ["path", { d: "M7 6h1v4", key: "1obek4" }], + ["path", { d: "m16.71 13.88.7.71-2.82 2.82", key: "1rbuyh" }] +]); + +const Columns2 = createLucideIcon("Columns2Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M12 3v18", key: "108xh3" }] +]); + +const Columns3 = createLucideIcon("Columns3Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 3v18", key: "fh3hqa" }], + ["path", { d: "M15 3v18", key: "14nvp0" }] +]); + +const Columns4 = createLucideIcon("Columns4Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7.5 3v18", key: "w0wo6v" }], + ["path", { d: "M12 3v18", key: "108xh3" }], + ["path", { d: "M16.5 3v18", key: "10tjh1" }] +]); + +const Combine = createLucideIcon("CombineIcon", [ + ["path", { d: "M10 18H5a3 3 0 0 1-3-3v-1", key: "ru65g8" }], + ["path", { d: "M14 2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2", key: "e30een" }], + ["path", { d: "M20 2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2", key: "2ahx8o" }], + ["path", { d: "m7 21 3-3-3-3", key: "127cv2" }], + ["rect", { x: "14", y: "14", width: "8", height: "8", rx: "2", key: "1b0bso" }], + ["rect", { x: "2", y: "2", width: "8", height: "8", rx: "2", key: "1x09vl" }] +]); + +const Command = createLucideIcon("CommandIcon", [ + [ + "path", + { d: "M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3", key: "11bfej" } + ] +]); + +const Compass = createLucideIcon("CompassIcon", [ + [ + "path", + { + d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z", + key: "9ktpf1" + } + ], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const Component = createLucideIcon("ComponentIcon", [ + [ + "path", + { + d: "M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z", + key: "1uwlt4" + } + ], + [ + "path", + { + d: "M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z", + key: "10291m" + } + ], + [ + "path", + { + d: "M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z", + key: "1tqoq1" + } + ], + [ + "path", + { + d: "M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z", + key: "1x6lto" + } + ] +]); + +const Computer = createLucideIcon("ComputerIcon", [ + ["rect", { width: "14", height: "8", x: "5", y: "2", rx: "2", key: "wc9tft" }], + ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", key: "w68u3i" }], + ["path", { d: "M6 18h2", key: "rwmk9e" }], + ["path", { d: "M12 18h6", key: "aqd8w3" }] +]); + +const ConciergeBell = createLucideIcon("ConciergeBellIcon", [ + [ + "path", + { d: "M3 20a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1Z", key: "1pvr1r" } + ], + ["path", { d: "M20 16a8 8 0 1 0-16 0", key: "1pa543" }], + ["path", { d: "M12 4v4", key: "1bq03y" }], + ["path", { d: "M10 4h4", key: "1xpv9s" }] +]); + +const Cone = createLucideIcon("ConeIcon", [ + ["path", { d: "m20.9 18.55-8-15.98a1 1 0 0 0-1.8 0l-8 15.98", key: "53pte7" }], + ["ellipse", { cx: "12", cy: "19", rx: "9", ry: "3", key: "1ji25f" }] +]); + +const Construction = createLucideIcon("ConstructionIcon", [ + ["rect", { x: "2", y: "6", width: "20", height: "8", rx: "1", key: "1estib" }], + ["path", { d: "M17 14v7", key: "7m2elx" }], + ["path", { d: "M7 14v7", key: "1cm7wv" }], + ["path", { d: "M17 3v3", key: "1v4jwn" }], + ["path", { d: "M7 3v3", key: "7o6guu" }], + ["path", { d: "M10 14 2.3 6.3", key: "1023jk" }], + ["path", { d: "m14 6 7.7 7.7", key: "1s8pl2" }], + ["path", { d: "m8 6 8 8", key: "hl96qh" }] +]); + +const ContactRound = createLucideIcon("ContactRoundIcon", [ + ["path", { d: "M16 2v2", key: "scm5qe" }], + ["path", { d: "M17.915 22a6 6 0 0 0-12 0", key: "suqz9p" }], + ["path", { d: "M8 2v2", key: "pbkmx" }], + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", key: "12vinp" }] +]); + +const Contact = createLucideIcon("ContactIcon", [ + ["path", { d: "M16 2v2", key: "scm5qe" }], + ["path", { d: "M7 22v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2", key: "1waht3" }], + ["path", { d: "M8 2v2", key: "pbkmx" }], + ["circle", { cx: "12", cy: "11", r: "3", key: "itu57m" }], + ["rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", key: "12vinp" }] +]); + +const Container = createLucideIcon("ContainerIcon", [ + [ + "path", + { + d: "M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z", + key: "1t2lqe" + } + ], + ["path", { d: "M10 21.9V14L2.1 9.1", key: "o7czzq" }], + ["path", { d: "m10 14 11.9-6.9", key: "zm5e20" }], + ["path", { d: "M14 19.8v-8.1", key: "159ecu" }], + ["path", { d: "M18 17.5V9.4", key: "11uown" }] +]); + +const Contrast = createLucideIcon("ContrastIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M12 18a6 6 0 0 0 0-12v12z", key: "j4l70d" }] +]); + +const Cookie = createLucideIcon("CookieIcon", [ + ["path", { d: "M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5", key: "laymnq" }], + ["path", { d: "M8.5 8.5v.01", key: "ue8clq" }], + ["path", { d: "M16 15.5v.01", key: "14dtrp" }], + ["path", { d: "M12 12v.01", key: "u5ubse" }], + ["path", { d: "M11 17v.01", key: "1hyl5a" }], + ["path", { d: "M7 14v.01", key: "uct60s" }] +]); + +const CookingPot = createLucideIcon("CookingPotIcon", [ + ["path", { d: "M2 12h20", key: "9i4pu4" }], + ["path", { d: "M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8", key: "u0tga0" }], + ["path", { d: "m4 8 16-4", key: "16g0ng" }], + [ + "path", + { + d: "m8.86 6.78-.45-1.81a2 2 0 0 1 1.45-2.43l1.94-.48a2 2 0 0 1 2.43 1.46l.45 1.8", + key: "12cejc" + } + ] +]); + +const CopyCheck = createLucideIcon("CopyCheckIcon", [ + ["path", { d: "m12 15 2 2 4-4", key: "2c609p" }], + ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }], + ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }] +]); + +const CopyMinus = createLucideIcon("CopyMinusIcon", [ + ["line", { x1: "12", x2: "18", y1: "15", y2: "15", key: "1nscbv" }], + ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }], + ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }] +]); + +const CopyPlus = createLucideIcon("CopyPlusIcon", [ + ["line", { x1: "15", x2: "15", y1: "12", y2: "18", key: "1p7wdc" }], + ["line", { x1: "12", x2: "18", y1: "15", y2: "15", key: "1nscbv" }], + ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }], + ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }] +]); + +const CopySlash = createLucideIcon("CopySlashIcon", [ + ["line", { x1: "12", x2: "18", y1: "18", y2: "12", key: "ebkxgr" }], + ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }], + ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }] +]); + +const CopyX = createLucideIcon("CopyXIcon", [ + ["line", { x1: "12", x2: "18", y1: "12", y2: "18", key: "1rg63v" }], + ["line", { x1: "12", x2: "18", y1: "18", y2: "12", key: "ebkxgr" }], + ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }], + ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }] +]); + +const Copy = createLucideIcon("CopyIcon", [ + ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }], + ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }] +]); + +const Copyleft = createLucideIcon("CopyleftIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M9.17 14.83a4 4 0 1 0 0-5.66", key: "1sveal" }] +]); + +const Copyright = createLucideIcon("CopyrightIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M14.83 14.83a4 4 0 1 1 0-5.66", key: "1i56pz" }] +]); + +const CornerDownLeft = createLucideIcon("CornerDownLeftIcon", [ + ["polyline", { points: "9 10 4 15 9 20", key: "r3jprv" }], + ["path", { d: "M20 4v7a4 4 0 0 1-4 4H4", key: "6o5b7l" }] +]); + +const CornerDownRight = createLucideIcon("CornerDownRightIcon", [ + ["polyline", { points: "15 10 20 15 15 20", key: "1q7qjw" }], + ["path", { d: "M4 4v7a4 4 0 0 0 4 4h12", key: "z08zvw" }] +]); + +const CornerLeftDown = createLucideIcon("CornerLeftDownIcon", [ + ["polyline", { points: "14 15 9 20 4 15", key: "nkc4i" }], + ["path", { d: "M20 4h-7a4 4 0 0 0-4 4v12", key: "nbpdq2" }] +]); + +const CornerLeftUp = createLucideIcon("CornerLeftUpIcon", [ + ["polyline", { points: "14 9 9 4 4 9", key: "m9oyvo" }], + ["path", { d: "M20 20h-7a4 4 0 0 1-4-4V4", key: "1blwi3" }] +]); + +const CornerRightDown = createLucideIcon("CornerRightDownIcon", [ + ["polyline", { points: "10 15 15 20 20 15", key: "axus6l" }], + ["path", { d: "M4 4h7a4 4 0 0 1 4 4v12", key: "wcbgct" }] +]); + +const CornerRightUp = createLucideIcon("CornerRightUpIcon", [ + ["polyline", { points: "10 9 15 4 20 9", key: "1lr6px" }], + ["path", { d: "M4 20h7a4 4 0 0 0 4-4V4", key: "1plgdj" }] +]); + +const CornerUpLeft = createLucideIcon("CornerUpLeftIcon", [ + ["polyline", { points: "9 14 4 9 9 4", key: "881910" }], + ["path", { d: "M20 20v-7a4 4 0 0 0-4-4H4", key: "1nkjon" }] +]); + +const CornerUpRight = createLucideIcon("CornerUpRightIcon", [ + ["polyline", { points: "15 14 20 9 15 4", key: "1tbx3s" }], + ["path", { d: "M4 20v-7a4 4 0 0 1 4-4h12", key: "1lu4f8" }] +]); + +const Cpu = createLucideIcon("CpuIcon", [ + ["rect", { width: "16", height: "16", x: "4", y: "4", rx: "2", key: "14l7u7" }], + ["rect", { width: "6", height: "6", x: "9", y: "9", rx: "1", key: "5aljv4" }], + ["path", { d: "M15 2v2", key: "13l42r" }], + ["path", { d: "M15 20v2", key: "15mkzm" }], + ["path", { d: "M2 15h2", key: "1gxd5l" }], + ["path", { d: "M2 9h2", key: "1bbxkp" }], + ["path", { d: "M20 15h2", key: "19e6y8" }], + ["path", { d: "M20 9h2", key: "19tzq7" }], + ["path", { d: "M9 2v2", key: "165o2o" }], + ["path", { d: "M9 20v2", key: "i2bqo8" }] +]); + +const CreativeCommons = createLucideIcon("CreativeCommonsIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + [ + "path", + { d: "M10 9.3a2.8 2.8 0 0 0-3.5 1 3.1 3.1 0 0 0 0 3.4 2.7 2.7 0 0 0 3.5 1", key: "1ss3eq" } + ], + [ + "path", + { d: "M17 9.3a2.8 2.8 0 0 0-3.5 1 3.1 3.1 0 0 0 0 3.4 2.7 2.7 0 0 0 3.5 1", key: "1od56t" } + ] +]); + +const CreditCard = createLucideIcon("CreditCardIcon", [ + ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }], + ["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }] +]); + +const Croissant = createLucideIcon("CroissantIcon", [ + [ + "path", + { + d: "m4.6 13.11 5.79-3.21c1.89-1.05 4.79 1.78 3.71 3.71l-3.22 5.81C8.8 23.16.79 15.23 4.6 13.11Z", + key: "1ozxlb" + } + ], + [ + "path", + { + d: "m10.5 9.5-1-2.29C9.2 6.48 8.8 6 8 6H4.5C2.79 6 2 6.5 2 8.5a7.71 7.71 0 0 0 2 4.83", + key: "ffuyb5" + } + ], + ["path", { d: "M8 6c0-1.55.24-4-2-4-2 0-2.5 2.17-2.5 4", key: "osnpzi" }], + [ + "path", + { + d: "m14.5 13.5 2.29 1c.73.3 1.21.7 1.21 1.5v3.5c0 1.71-.5 2.5-2.5 2.5a7.71 7.71 0 0 1-4.83-2", + key: "1vubaw" + } + ], + ["path", { d: "M18 16c1.55 0 4-.24 4 2 0 2-2.17 2.5-4 2.5", key: "wxr772" }] +]); + +const Crop = createLucideIcon("CropIcon", [ + ["path", { d: "M6 2v14a2 2 0 0 0 2 2h14", key: "ron5a4" }], + ["path", { d: "M18 22V8a2 2 0 0 0-2-2H2", key: "7s9ehn" }] +]); + +const Cross = createLucideIcon("CrossIcon", [ + [ + "path", + { + d: "M4 9a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h4a1 1 0 0 1 1 1v4a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-4a1 1 0 0 1 1-1h4a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2h-4a1 1 0 0 1-1-1V4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4a1 1 0 0 1-1 1z", + key: "1xbrqy" + } + ] +]); + +const Crosshair = createLucideIcon("CrosshairIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["line", { x1: "22", x2: "18", y1: "12", y2: "12", key: "l9bcsi" }], + ["line", { x1: "6", x2: "2", y1: "12", y2: "12", key: "13hhkx" }], + ["line", { x1: "12", x2: "12", y1: "6", y2: "2", key: "10w3f3" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "18", key: "15g9kq" }] +]); + +const Crown = createLucideIcon("CrownIcon", [ + [ + "path", + { + d: "M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z", + key: "1vdc57" + } + ], + ["path", { d: "M5 21h14", key: "11awu3" }] +]); + +const Cuboid = createLucideIcon("CuboidIcon", [ + [ + "path", + { + d: "m21.12 6.4-6.05-4.06a2 2 0 0 0-2.17-.05L2.95 8.41a2 2 0 0 0-.95 1.7v5.82a2 2 0 0 0 .88 1.66l6.05 4.07a2 2 0 0 0 2.17.05l9.95-6.12a2 2 0 0 0 .95-1.7V8.06a2 2 0 0 0-.88-1.66Z", + key: "1u2ovd" + } + ], + ["path", { d: "M10 22v-8L2.25 9.15", key: "11pn4q" }], + ["path", { d: "m10 14 11.77-6.87", key: "1kt1wh" }] +]); + +const CupSoda = createLucideIcon("CupSodaIcon", [ + ["path", { d: "m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8", key: "8166m8" }], + ["path", { d: "M5 8h14", key: "pcz4l3" }], + ["path", { d: "M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0", key: "yjz344" }], + ["path", { d: "m12 8 1-6h2", key: "3ybfa4" }] +]); + +const Currency = createLucideIcon("CurrencyIcon", [ + ["circle", { cx: "12", cy: "12", r: "8", key: "46899m" }], + ["line", { x1: "3", x2: "6", y1: "3", y2: "6", key: "1jkytn" }], + ["line", { x1: "21", x2: "18", y1: "3", y2: "6", key: "14zfjt" }], + ["line", { x1: "3", x2: "6", y1: "21", y2: "18", key: "iusuec" }], + ["line", { x1: "21", x2: "18", y1: "21", y2: "18", key: "yj2dd7" }] +]); + +const Cylinder = createLucideIcon("CylinderIcon", [ + ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }], + ["path", { d: "M3 5v14a9 3 0 0 0 18 0V5", key: "aqi0yr" }] +]); + +const Dam = createLucideIcon("DamIcon", [ + [ + "path", + { d: "M11 11.31c1.17.56 1.54 1.69 3.5 1.69 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", key: "157kva" } + ], + ["path", { d: "M11.75 18c.35.5 1.45 1 2.75 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", key: "d7q6m6" }], + ["path", { d: "M2 10h4", key: "l0bgd4" }], + ["path", { d: "M2 14h4", key: "1gsvsf" }], + ["path", { d: "M2 18h4", key: "1bu2t1" }], + ["path", { d: "M2 6h4", key: "aawbzj" }], + [ + "path", + { d: "M7 3a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1L10 4a1 1 0 0 0-1-1z", key: "pr6s65" } + ] +]); + +const DatabaseBackup = createLucideIcon("DatabaseBackupIcon", [ + ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }], + ["path", { d: "M3 12a9 3 0 0 0 5 2.69", key: "1ui2ym" }], + ["path", { d: "M21 9.3V5", key: "6k6cib" }], + ["path", { d: "M3 5v14a9 3 0 0 0 6.47 2.88", key: "i62tjy" }], + ["path", { d: "M12 12v4h4", key: "1bxaet" }], + [ + "path", + { + d: "M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16", + key: "1f4ei9" + } + ] +]); + +const DatabaseZap = createLucideIcon("DatabaseZapIcon", [ + ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }], + ["path", { d: "M3 5V19A9 3 0 0 0 15 21.84", key: "14ibmq" }], + ["path", { d: "M21 5V8", key: "1marbg" }], + ["path", { d: "M21 12L18 17H22L19 22", key: "zafso" }], + ["path", { d: "M3 12A9 3 0 0 0 14.59 14.87", key: "1y4wr8" }] +]); + +const Database = createLucideIcon("DatabaseIcon", [ + ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }], + ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }], + ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }] +]); + +const Delete = createLucideIcon("DeleteIcon", [ + [ + "path", + { + d: "M10 5a2 2 0 0 0-1.344.519l-6.328 5.74a1 1 0 0 0 0 1.481l6.328 5.741A2 2 0 0 0 10 19h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2z", + key: "1yo7s0" + } + ], + ["path", { d: "m12 9 6 6", key: "anjzzh" }], + ["path", { d: "m18 9-6 6", key: "1fp51s" }] +]); + +const Dessert = createLucideIcon("DessertIcon", [ + ["circle", { cx: "12", cy: "4", r: "2", key: "muu5ef" }], + [ + "path", + { + d: "M10.2 3.2C5.5 4 2 8.1 2 13a2 2 0 0 0 4 0v-1a2 2 0 0 1 4 0v4a2 2 0 0 0 4 0v-4a2 2 0 0 1 4 0v1a2 2 0 0 0 4 0c0-4.9-3.5-9-8.2-9.8", + key: "lfo06j" + } + ], + ["path", { d: "M3.2 14.8a9 9 0 0 0 17.6 0", key: "12xarc" }] +]); + +const Diameter = createLucideIcon("DiameterIcon", [ + ["circle", { cx: "19", cy: "19", r: "2", key: "17f5cg" }], + ["circle", { cx: "5", cy: "5", r: "2", key: "1gwv83" }], + ["path", { d: "M6.48 3.66a10 10 0 0 1 13.86 13.86", key: "xr8kdq" }], + ["path", { d: "m6.41 6.41 11.18 11.18", key: "uhpjw7" }], + ["path", { d: "M3.66 6.48a10 10 0 0 0 13.86 13.86", key: "cldpwv" }] +]); + +const DiamondMinus = createLucideIcon("DiamondMinusIcon", [ + [ + "path", + { + d: "M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z", + key: "1ey20j" + } + ], + ["path", { d: "M8 12h8", key: "1wcyev" }] +]); + +const DiamondPercent = createLucideIcon("DiamondPercentIcon", [ + [ + "path", + { + d: "M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0Z", + key: "1tpxz2" + } + ], + ["path", { d: "M9.2 9.2h.01", key: "1b7bvt" }], + ["path", { d: "m14.5 9.5-5 5", key: "17q4r4" }], + ["path", { d: "M14.7 14.8h.01", key: "17nsh4" }] +]); + +const DiamondPlus = createLucideIcon("DiamondPlusIcon", [ + ["path", { d: "M12 8v8", key: "napkw2" }], + [ + "path", + { + d: "M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z", + key: "1ey20j" + } + ], + ["path", { d: "M8 12h8", key: "1wcyev" }] +]); + +const Diamond = createLucideIcon("DiamondIcon", [ + [ + "path", + { + d: "M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z", + key: "1f1r0c" + } + ] +]); + +const Dice1 = createLucideIcon("Dice1Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }] +]); + +const Dice2 = createLucideIcon("Dice2Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M15 9h.01", key: "x1ddxp" }], + ["path", { d: "M9 15h.01", key: "fzyn71" }] +]); + +const Dice3 = createLucideIcon("Dice3Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M16 8h.01", key: "cr5u4v" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M8 16h.01", key: "18s6g9" }] +]); + +const Dice4 = createLucideIcon("Dice4Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M16 8h.01", key: "cr5u4v" }], + ["path", { d: "M8 8h.01", key: "1e4136" }], + ["path", { d: "M8 16h.01", key: "18s6g9" }], + ["path", { d: "M16 16h.01", key: "1f9h7w" }] +]); + +const Dice5 = createLucideIcon("Dice5Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M16 8h.01", key: "cr5u4v" }], + ["path", { d: "M8 8h.01", key: "1e4136" }], + ["path", { d: "M8 16h.01", key: "18s6g9" }], + ["path", { d: "M16 16h.01", key: "1f9h7w" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }] +]); + +const Dice6 = createLucideIcon("Dice6Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M16 8h.01", key: "cr5u4v" }], + ["path", { d: "M16 12h.01", key: "1l6xoz" }], + ["path", { d: "M16 16h.01", key: "1f9h7w" }], + ["path", { d: "M8 8h.01", key: "1e4136" }], + ["path", { d: "M8 12h.01", key: "czm47f" }], + ["path", { d: "M8 16h.01", key: "18s6g9" }] +]); + +const Dices = createLucideIcon("DicesIcon", [ + ["rect", { width: "12", height: "12", x: "2", y: "10", rx: "2", ry: "2", key: "6agr2n" }], + [ + "path", + { d: "m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6", key: "1o487t" } + ], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "M10 14h.01", key: "ssrbsk" }], + ["path", { d: "M15 6h.01", key: "cblpky" }], + ["path", { d: "M18 9h.01", key: "2061c0" }] +]); + +const Diff = createLucideIcon("DiffIcon", [ + ["path", { d: "M12 3v14", key: "7cf3v8" }], + ["path", { d: "M5 10h14", key: "elsbfy" }], + ["path", { d: "M5 21h14", key: "11awu3" }] +]); + +const Disc2 = createLucideIcon("Disc2Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }] +]); + +const Disc3 = createLucideIcon("Disc3Icon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M6 12c0-1.7.7-3.2 1.8-4.2", key: "oqkarx" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "M18 12c0 1.7-.7 3.2-1.8 4.2", key: "1eah9h" }] +]); + +const DiscAlbum = createLucideIcon("DiscAlbumIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["circle", { cx: "12", cy: "12", r: "5", key: "nd82uf" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }] +]); + +const Disc = createLucideIcon("DiscIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }] +]); + +const Divide = createLucideIcon("DivideIcon", [ + ["circle", { cx: "12", cy: "6", r: "1", key: "1bh7o1" }], + ["line", { x1: "5", x2: "19", y1: "12", y2: "12", key: "13b5wn" }], + ["circle", { cx: "12", cy: "18", r: "1", key: "lqb9t5" }] +]); + +const DnaOff = createLucideIcon("DnaOffIcon", [ + ["path", { d: "M15 2c-1.35 1.5-2.092 3-2.5 4.5L14 8", key: "1bivrr" }], + ["path", { d: "m17 6-2.891-2.891", key: "xu6p2f" }], + ["path", { d: "M2 15c3.333-3 6.667-3 10-3", key: "nxix30" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "m20 9 .891.891", key: "3xwk7g" }], + ["path", { d: "M22 9c-1.5 1.35-3 2.092-4.5 2.5l-1-1", key: "18cutr" }], + ["path", { d: "M3.109 14.109 4 15", key: "q76aoh" }], + ["path", { d: "m6.5 12.5 1 1", key: "cs35ky" }], + ["path", { d: "m7 18 2.891 2.891", key: "1sisit" }], + ["path", { d: "M9 22c1.35-1.5 2.092-3 2.5-4.5L10 16", key: "rlvei3" }] +]); + +const Dna = createLucideIcon("DnaIcon", [ + ["path", { d: "m10 16 1.5 1.5", key: "11lckj" }], + ["path", { d: "m14 8-1.5-1.5", key: "1ohn8i" }], + ["path", { d: "M15 2c-1.798 1.998-2.518 3.995-2.807 5.993", key: "80uv8i" }], + ["path", { d: "m16.5 10.5 1 1", key: "696xn5" }], + ["path", { d: "m17 6-2.891-2.891", key: "xu6p2f" }], + ["path", { d: "M2 15c6.667-6 13.333 0 20-6", key: "1pyr53" }], + ["path", { d: "m20 9 .891.891", key: "3xwk7g" }], + ["path", { d: "M3.109 14.109 4 15", key: "q76aoh" }], + ["path", { d: "m6.5 12.5 1 1", key: "cs35ky" }], + ["path", { d: "m7 18 2.891 2.891", key: "1sisit" }], + ["path", { d: "M9 22c1.798-1.998 2.518-3.995 2.807-5.993", key: "q3hbxp" }] +]); + +const Dock = createLucideIcon("DockIcon", [ + ["path", { d: "M2 8h20", key: "d11cs7" }], + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "M6 16h12", key: "u522kt" }] +]); + +const Dog = createLucideIcon("DogIcon", [ + ["path", { d: "M11.25 16.25h1.5L12 17z", key: "w7jh35" }], + ["path", { d: "M16 14v.5", key: "1lajdz" }], + [ + "path", + { + d: "M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444a11.702 11.702 0 0 0-.493-3.309", + key: "u7s9ue" + } + ], + ["path", { d: "M8 14v.5", key: "1nzgdb" }], + [ + "path", + { + d: "M8.5 8.5c-.384 1.05-1.083 2.028-2.344 2.5-1.931.722-3.576-.297-3.656-1-.113-.994 1.177-6.53 4-7 1.923-.321 3.651.845 3.651 2.235A7.497 7.497 0 0 1 14 5.277c0-1.39 1.844-2.598 3.767-2.277 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5", + key: "v8hric" + } + ] +]); + +const DollarSign = createLucideIcon("DollarSignIcon", [ + ["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }], + ["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }] +]); + +const Donut = createLucideIcon("DonutIcon", [ + [ + "path", + { + d: "M20.5 10a2.5 2.5 0 0 1-2.4-3H18a2.95 2.95 0 0 1-2.6-4.4 10 10 0 1 0 6.3 7.1c-.3.2-.8.3-1.2.3", + key: "19sr3x" + } + ], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }] +]); + +const DoorClosed = createLucideIcon("DoorClosedIcon", [ + ["path", { d: "M18 20V6a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v14", key: "36qu9e" }], + ["path", { d: "M2 20h20", key: "owomy5" }], + ["path", { d: "M14 12v.01", key: "xfcn54" }] +]); + +const DoorOpen = createLucideIcon("DoorOpenIcon", [ + ["path", { d: "M13 4h3a2 2 0 0 1 2 2v14", key: "hrm0s9" }], + ["path", { d: "M2 20h3", key: "1gaodv" }], + ["path", { d: "M13 20h9", key: "s90cdi" }], + ["path", { d: "M10 12v.01", key: "vx6srw" }], + [ + "path", + { + d: "M13 4.562v16.157a1 1 0 0 1-1.242.97L5 20V5.562a2 2 0 0 1 1.515-1.94l4-1A2 2 0 0 1 13 4.561Z", + key: "199qr4" + } + ] +]); + +const Dot = createLucideIcon("DotIcon", [ + ["circle", { cx: "12.1", cy: "12.1", r: "1", key: "18d7e5" }] +]); + +const Download = createLucideIcon("DownloadIcon", [ + ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }], + ["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }], + ["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }] +]); + +const DraftingCompass = createLucideIcon("DraftingCompassIcon", [ + ["path", { d: "m12.99 6.74 1.93 3.44", key: "iwagvd" }], + ["path", { d: "M19.136 12a10 10 0 0 1-14.271 0", key: "ppmlo4" }], + ["path", { d: "m21 21-2.16-3.84", key: "vylbct" }], + ["path", { d: "m3 21 8.02-14.26", key: "1ssaw4" }], + ["circle", { cx: "12", cy: "5", r: "2", key: "f1ur92" }] +]); + +const Drama = createLucideIcon("DramaIcon", [ + ["path", { d: "M10 11h.01", key: "d2at3l" }], + ["path", { d: "M14 6h.01", key: "k028ub" }], + ["path", { d: "M18 6h.01", key: "1v4wsw" }], + ["path", { d: "M6.5 13.1h.01", key: "1748ia" }], + ["path", { d: "M22 5c0 9-4 12-6 12s-6-3-6-12c0-2 2-3 6-3s6 1 6 3", key: "172yzv" }], + ["path", { d: "M17.4 9.9c-.8.8-2 .8-2.8 0", key: "1obv0w" }], + [ + "path", + { + d: "M10.1 7.1C9 7.2 7.7 7.7 6 8.6c-3.5 2-4.7 3.9-3.7 5.6 4.5 7.8 9.5 8.4 11.2 7.4.9-.5 1.9-2.1 1.9-4.7", + key: "rqjl8i" + } + ], + ["path", { d: "M9.1 16.5c.3-1.1 1.4-1.7 2.4-1.4", key: "1mr6wy" }] +]); + +const Dribbble = createLucideIcon("DribbbleIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M19.13 5.09C15.22 9.14 10 10.44 2.25 10.94", key: "hpej1" }], + ["path", { d: "M21.75 12.84c-6.62-1.41-12.14 1-16.38 6.32", key: "1tr44o" }], + ["path", { d: "M8.56 2.75c4.37 6 6 9.42 8 17.72", key: "kbh691" }] +]); + +const Drill = createLucideIcon("DrillIcon", [ + [ + "path", + { d: "M10 18a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H5a3 3 0 0 1-3-3 1 1 0 0 1 1-1z", key: "ioqxb1" } + ], + [ + "path", + { + d: "M13 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1l-.81 3.242a1 1 0 0 1-.97.758H8", + key: "1rs59n" + } + ], + ["path", { d: "M14 4h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3", key: "105ega" }], + ["path", { d: "M18 6h4", key: "66u95g" }], + ["path", { d: "m5 10-2 8", key: "xt2lic" }], + ["path", { d: "m7 18 2-8", key: "1bzku2" }] +]); + +const DropletOff = createLucideIcon("DropletOffIcon", [ + [ + "path", + { + d: "M18.715 13.186C18.29 11.858 17.384 10.607 16 9.5c-2-1.6-3.5-4-4-6.5a10.7 10.7 0 0 1-.884 2.586", + key: "8suz2t" + } + ], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + [ + "path", + { d: "M8.795 8.797A11 11 0 0 1 8 9.5C6 11.1 5 13 5 15a7 7 0 0 0 13.222 3.208", key: "19dw9m" } + ] +]); + +const Droplet = createLucideIcon("DropletIcon", [ + [ + "path", + { + d: "M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z", + key: "c7niix" + } + ] +]); + +const Droplets = createLucideIcon("DropletsIcon", [ + [ + "path", + { + d: "M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z", + key: "1ptgy4" + } + ], + [ + "path", + { + d: "M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97", + key: "1sl1rz" + } + ] +]); + +const Drum = createLucideIcon("DrumIcon", [ + ["path", { d: "m2 2 8 8", key: "1v6059" }], + ["path", { d: "m22 2-8 8", key: "173r8a" }], + ["ellipse", { cx: "12", cy: "9", rx: "10", ry: "5", key: "liohsx" }], + ["path", { d: "M7 13.4v7.9", key: "1yi6u9" }], + ["path", { d: "M12 14v8", key: "1tn2tj" }], + ["path", { d: "M17 13.4v7.9", key: "eqz2v3" }], + ["path", { d: "M2 9v8a10 5 0 0 0 20 0V9", key: "1750ul" }] +]); + +const Drumstick = createLucideIcon("DrumstickIcon", [ + [ + "path", + { d: "M15.4 15.63a7.875 6 135 1 1 6.23-6.23 4.5 3.43 135 0 0-6.23 6.23", key: "1dtqwm" } + ], + [ + "path", + { + d: "m8.29 12.71-2.6 2.6a2.5 2.5 0 1 0-1.65 4.65A2.5 2.5 0 1 0 8.7 18.3l2.59-2.59", + key: "1oq1fw" + } + ] +]); + +const Dumbbell = createLucideIcon("DumbbellIcon", [ + ["path", { d: "M14.4 14.4 9.6 9.6", key: "ic80wn" }], + [ + "path", + { + d: "M18.657 21.485a2 2 0 1 1-2.829-2.828l-1.767 1.768a2 2 0 1 1-2.829-2.829l6.364-6.364a2 2 0 1 1 2.829 2.829l-1.768 1.767a2 2 0 1 1 2.828 2.829z", + key: "nnl7wr" + } + ], + ["path", { d: "m21.5 21.5-1.4-1.4", key: "1f1ice" }], + ["path", { d: "M3.9 3.9 2.5 2.5", key: "1evmna" }], + [ + "path", + { + d: "M6.404 12.768a2 2 0 1 1-2.829-2.829l1.768-1.767a2 2 0 1 1-2.828-2.829l2.828-2.828a2 2 0 1 1 2.829 2.828l1.767-1.768a2 2 0 1 1 2.829 2.829z", + key: "yhosts" + } + ] +]); + +const EarOff = createLucideIcon("EarOffIcon", [ + ["path", { d: "M6 18.5a3.5 3.5 0 1 0 7 0c0-1.57.92-2.52 2.04-3.46", key: "1qngmn" }], + ["path", { d: "M6 8.5c0-.75.13-1.47.36-2.14", key: "b06bma" }], + ["path", { d: "M8.8 3.15A6.5 6.5 0 0 1 19 8.5c0 1.63-.44 2.81-1.09 3.76", key: "g10hsz" }], + ["path", { d: "M12.5 6A2.5 2.5 0 0 1 15 8.5M10 13a2 2 0 0 0 1.82-1.18", key: "ygzou7" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Ear = createLucideIcon("EarIcon", [ + ["path", { d: "M6 8.5a6.5 6.5 0 1 1 13 0c0 6-6 6-6 10a3.5 3.5 0 1 1-7 0", key: "1dfaln" }], + ["path", { d: "M15 8.5a2.5 2.5 0 0 0-5 0v1a2 2 0 1 1 0 4", key: "1qnva7" }] +]); + +const EarthLock = createLucideIcon("EarthLockIcon", [ + ["path", { d: "M7 3.34V5a3 3 0 0 0 3 3", key: "w732o8" }], + ["path", { d: "M11 21.95V18a2 2 0 0 0-2-2 2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05", key: "f02343" }], + ["path", { d: "M21.54 15H17a2 2 0 0 0-2 2v4.54", key: "1djwo0" }], + ["path", { d: "M12 2a10 10 0 1 0 9.54 13", key: "zjsr6q" }], + ["path", { d: "M20 6V4a2 2 0 1 0-4 0v2", key: "1of5e8" }], + ["rect", { width: "8", height: "5", x: "14", y: "6", rx: "1", key: "1fmf51" }] +]); + +const Earth = createLucideIcon("EarthIcon", [ + ["path", { d: "M21.54 15H17a2 2 0 0 0-2 2v4.54", key: "1djwo0" }], + [ + "path", + { + d: "M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17", + key: "1tzkfa" + } + ], + ["path", { d: "M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05", key: "14pb5j" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const Eclipse = createLucideIcon("EclipseIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M12 2a7 7 0 1 0 10 10", key: "1yuj32" }] +]); + +const EggFried = createLucideIcon("EggFriedIcon", [ + ["circle", { cx: "11.5", cy: "12.5", r: "3.5", key: "1cl1mi" }], + [ + "path", + { + d: "M3 8c0-3.5 2.5-6 6.5-6 5 0 4.83 3 7.5 5s5 2 5 6c0 4.5-2.5 6.5-7 6.5-2.5 0-2.5 2.5-6 2.5s-7-2-7-5.5c0-3 1.5-3 1.5-5C3.5 10 3 9 3 8Z", + key: "165ef9" + } + ] +]); + +const EggOff = createLucideIcon("EggOffIcon", [ + [ + "path", + { + d: "M6.399 6.399C5.362 8.157 4.65 10.189 4.5 12c-.37 4.43 1.27 9.95 7.5 10 3.256-.026 5.259-1.547 6.375-3.625", + key: "6et380" + } + ], + [ + "path", + { + d: "M19.532 13.875A14.07 14.07 0 0 0 19.5 12c-.36-4.34-3.95-9.96-7.5-10-1.04.012-2.082.502-3.046 1.297", + key: "gcdc3f" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Egg = createLucideIcon("EggIcon", [ + [ + "path", + { + d: "M12 22c6.23-.05 7.87-5.57 7.5-10-.36-4.34-3.95-9.96-7.5-10-3.55.04-7.14 5.66-7.5 10-.37 4.43 1.27 9.95 7.5 10z", + key: "1c39pg" + } + ] +]); + +const EllipsisVertical = createLucideIcon("EllipsisVerticalIcon", [ + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }], + ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }], + ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }] +]); + +const Ellipsis = createLucideIcon("EllipsisIcon", [ + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }], + ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }], + ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }] +]); + +const EqualApproximately = createLucideIcon("EqualApproximatelyIcon", [ + ["path", { d: "M5 15a6.5 6.5 0 0 1 7 0 6.5 6.5 0 0 0 7 0", key: "yrdkhy" }], + ["path", { d: "M5 9a6.5 6.5 0 0 1 7 0 6.5 6.5 0 0 0 7 0", key: "gzkvyz" }] +]); + +const EqualNot = createLucideIcon("EqualNotIcon", [ + ["line", { x1: "5", x2: "19", y1: "9", y2: "9", key: "1nwqeh" }], + ["line", { x1: "5", x2: "19", y1: "15", y2: "15", key: "g8yjpy" }], + ["line", { x1: "19", x2: "5", y1: "5", y2: "19", key: "1x9vlm" }] +]); + +const Equal = createLucideIcon("EqualIcon", [ + ["line", { x1: "5", x2: "19", y1: "9", y2: "9", key: "1nwqeh" }], + ["line", { x1: "5", x2: "19", y1: "15", y2: "15", key: "g8yjpy" }] +]); + +const Eraser = createLucideIcon("EraserIcon", [ + [ + "path", + { + d: "m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21", + key: "182aya" + } + ], + ["path", { d: "M22 21H7", key: "t4ddhn" }], + ["path", { d: "m5 11 9 9", key: "1mo9qw" }] +]); + +const EthernetPort = createLucideIcon("EthernetPortIcon", [ + [ + "path", + { + d: "m15 20 3-3h2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h2l3 3z", + key: "rbahqx" + } + ], + ["path", { d: "M6 8v1", key: "1636ez" }], + ["path", { d: "M10 8v1", key: "1talb4" }], + ["path", { d: "M14 8v1", key: "1rsfgr" }], + ["path", { d: "M18 8v1", key: "gnkwox" }] +]); + +const Euro = createLucideIcon("EuroIcon", [ + ["path", { d: "M4 10h12", key: "1y6xl8" }], + ["path", { d: "M4 14h9", key: "1loblj" }], + [ + "path", + { + d: "M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2", + key: "1j6lzo" + } + ] +]); + +const Expand = createLucideIcon("ExpandIcon", [ + ["path", { d: "m15 15 6 6", key: "1s409w" }], + ["path", { d: "m15 9 6-6", key: "ko1vev" }], + ["path", { d: "M21 16.2V21h-4.8", key: "1hrera" }], + ["path", { d: "M21 7.8V3h-4.8", key: "ul1q53" }], + ["path", { d: "M3 16.2V21h4.8", key: "1x04uo" }], + ["path", { d: "m3 21 6-6", key: "wwnumi" }], + ["path", { d: "M3 7.8V3h4.8", key: "1ijppm" }], + ["path", { d: "M9 9 3 3", key: "v551iv" }] +]); + +const ExternalLink = createLucideIcon("ExternalLinkIcon", [ + ["path", { d: "M15 3h6v6", key: "1q9fwt" }], + ["path", { d: "M10 14 21 3", key: "gplh6r" }], + ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }] +]); + +const EyeClosed = createLucideIcon("EyeClosedIcon", [ + ["path", { d: "m15 18-.722-3.25", key: "1j64jw" }], + ["path", { d: "M2 8a10.645 10.645 0 0 0 20 0", key: "1e7gxb" }], + ["path", { d: "m20 15-1.726-2.05", key: "1cnuld" }], + ["path", { d: "m4 15 1.726-2.05", key: "1dsqqd" }], + ["path", { d: "m9 18 .722-3.25", key: "ypw2yx" }] +]); + +const EyeOff = createLucideIcon("EyeOffIcon", [ + [ + "path", + { + d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49", + key: "ct8e1f" + } + ], + ["path", { d: "M14.084 14.158a3 3 0 0 1-4.242-4.242", key: "151rxh" }], + [ + "path", + { + d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143", + key: "13bj9a" + } + ], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Eye = createLucideIcon("EyeIcon", [ + [ + "path", + { + d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0", + key: "1nclc0" + } + ], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }] +]); + +const Facebook = createLucideIcon("FacebookIcon", [ + [ + "path", + { d: "M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z", key: "1jg4f8" } + ] +]); + +const Factory = createLucideIcon("FactoryIcon", [ + [ + "path", + { + d: "M2 20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8l-7 5V8l-7 5V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "159hny" + } + ], + ["path", { d: "M17 18h1", key: "uldtlt" }], + ["path", { d: "M12 18h1", key: "s9uhes" }], + ["path", { d: "M7 18h1", key: "1neino" }] +]); + +const Fan = createLucideIcon("FanIcon", [ + [ + "path", + { + d: "M10.827 16.379a6.082 6.082 0 0 1-8.618-7.002l5.412 1.45a6.082 6.082 0 0 1 7.002-8.618l-1.45 5.412a6.082 6.082 0 0 1 8.618 7.002l-5.412-1.45a6.082 6.082 0 0 1-7.002 8.618l1.45-5.412Z", + key: "484a7f" + } + ], + ["path", { d: "M12 12v.01", key: "u5ubse" }] +]); + +const FastForward = createLucideIcon("FastForwardIcon", [ + ["polygon", { points: "13 19 22 12 13 5 13 19", key: "587y9g" }], + ["polygon", { points: "2 19 11 12 2 5 2 19", key: "3pweh0" }] +]); + +const Feather = createLucideIcon("FeatherIcon", [ + [ + "path", + { + d: "M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z", + key: "18jl4k" + } + ], + ["path", { d: "M16 8 2 22", key: "vp34q" }], + ["path", { d: "M17.5 15H9", key: "1oz8nu" }] +]); + +const Fence = createLucideIcon("FenceIcon", [ + ["path", { d: "M4 3 2 5v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z", key: "1n2rgs" }], + ["path", { d: "M6 8h4", key: "utf9t1" }], + ["path", { d: "M6 18h4", key: "12yh4b" }], + ["path", { d: "m12 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z", key: "3ha7mj" }], + ["path", { d: "M14 8h4", key: "1r8wg2" }], + ["path", { d: "M14 18h4", key: "1t3kbu" }], + ["path", { d: "m20 3-2 2v15c0 .6.4 1 1 1h2c.6 0 1-.4 1-1V5Z", key: "dfd4e2" }] +]); + +const FerrisWheel = createLucideIcon("FerrisWheelIcon", [ + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "M12 2v4", key: "3427ic" }], + ["path", { d: "m6.8 15-3.5 2", key: "hjy98k" }], + ["path", { d: "m20.7 7-3.5 2", key: "f08gto" }], + ["path", { d: "M6.8 9 3.3 7", key: "1aevh4" }], + ["path", { d: "m20.7 17-3.5-2", key: "1liqo3" }], + ["path", { d: "m9 22 3-8 3 8", key: "wees03" }], + ["path", { d: "M8 22h8", key: "rmew8v" }], + ["path", { d: "M18 18.7a9 9 0 1 0-12 0", key: "dhzg4g" }] +]); + +const Figma = createLucideIcon("FigmaIcon", [ + ["path", { d: "M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z", key: "1340ok" }], + ["path", { d: "M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z", key: "1hz3m3" }], + ["path", { d: "M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z", key: "1oz8n2" }], + ["path", { d: "M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z", key: "1ff65i" }], + ["path", { d: "M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z", key: "pdip6e" }] +]); + +const FileArchive = createLucideIcon("FileArchiveIcon", [ + ["path", { d: "M10 12v-1", key: "v7bkov" }], + ["path", { d: "M10 18v-2", key: "1cjy8d" }], + ["path", { d: "M10 7V6", key: "dljcrl" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { d: "M15.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v16a2 2 0 0 0 .274 1.01", key: "gkbcor" } + ], + ["circle", { cx: "10", cy: "20", r: "2", key: "1xzdoj" }] +]); + +const FileAudio2 = createLucideIcon("FileAudio2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2", key: "17k7jt" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["circle", { cx: "3", cy: "17", r: "1", key: "vo6nti" }], + ["path", { d: "M2 17v-3a4 4 0 0 1 8 0v3", key: "1ggdre" }], + ["circle", { cx: "9", cy: "17", r: "1", key: "bc1fq4" }] +]); + +const FileAudio = createLucideIcon("FileAudioIcon", [ + ["path", { d: "M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "rslqgf" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { + d: "M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0", + key: "9f7x3i" + } + ] +]); + +const FileAxis3d = createLucideIcon("FileAxis3dIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m8 18 4-4", key: "12zab0" }], + ["path", { d: "M8 10v8h8", key: "tlaukw" }] +]); + +const FileBadge2 = createLucideIcon("FileBadge2Icon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m14 12.5 1 5.5-3-1-3 1 1-5.5", key: "14xlky" }] +]); + +const FileBadge = createLucideIcon("FileBadgeIcon", [ + ["path", { d: "M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "12ixgl" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M5 17a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z", key: "u0c8gj" }], + ["path", { d: "M7 16.5 8 22l-3-1-3 1 1-5.5", key: "5gm2nr" }] +]); + +const FileBox = createLucideIcon("FileBoxIcon", [ + ["path", { d: "M14.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "16lz6z" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { + d: "M3 13.1a2 2 0 0 0-1 1.76v3.24a2 2 0 0 0 .97 1.78L6 21.7a2 2 0 0 0 2.03.01L11 19.9a2 2 0 0 0 1-1.76V14.9a2 2 0 0 0-.97-1.78L8 11.3a2 2 0 0 0-2.03-.01Z", + key: "99pj1s" + } + ], + ["path", { d: "M7 17v5", key: "1yj1jh" }], + ["path", { d: "M11.7 14.2 7 17l-4.7-2.8", key: "1yk8tc" }] +]); + +const FileChartColumnIncreasing = createLucideIcon("FileChartColumnIncreasingIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M8 18v-2", key: "qcmpov" }], + ["path", { d: "M12 18v-4", key: "q1q25u" }], + ["path", { d: "M16 18v-6", key: "15y0np" }] +]); + +const FileChartColumn = createLucideIcon("FileChartColumnIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M8 18v-1", key: "zg0ygc" }], + ["path", { d: "M12 18v-6", key: "17g6i2" }], + ["path", { d: "M16 18v-3", key: "j5jt4h" }] +]); + +const FileChartLine = createLucideIcon("FileChartLineIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m16 13-3.5 3.5-2-2L8 17", key: "zz7yod" }] +]); + +const FileChartPie = createLucideIcon("FileChartPieIcon", [ + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M16 22h2a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3.5", key: "13ddob" }], + ["path", { d: "M4.017 11.512a6 6 0 1 0 8.466 8.475", key: "s6vs5t" }], + [ + "path", + { + d: "M9 16a1 1 0 0 1-1-1v-4c0-.552.45-1.008.995-.917a6 6 0 0 1 4.922 4.922c.091.544-.365.995-.917.995z", + key: "1dl6s6" + } + ] +]); + +const FileCheck2 = createLucideIcon("FileCheck2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m3 15 2 2 4-4", key: "1lhrkk" }] +]); + +const FileCheck = createLucideIcon("FileCheckIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m9 15 2 2 4-4", key: "1grp1n" }] +]); + +const FileClock = createLucideIcon("FileClockIcon", [ + ["path", { d: "M16 22h2a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "37hlfg" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["circle", { cx: "8", cy: "16", r: "6", key: "10v15b" }], + ["path", { d: "M9.5 17.5 8 16.25V14", key: "1o80t2" }] +]); + +const FileCode2 = createLucideIcon("FileCode2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m5 12-3 3 3 3", key: "oke12k" }], + ["path", { d: "m9 18 3-3-3-3", key: "112psh" }] +]); + +const FileCode = createLucideIcon("FileCodeIcon", [ + ["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }], + ["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }] +]); + +const FileCog = createLucideIcon("FileCogIcon", [ + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m3.2 12.9-.9-.4", key: "1i3dj5" }], + ["path", { d: "m3.2 15.1-.9.4", key: "1fvgj0" }], + [ + "path", + { + d: "M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5", + key: "1yo3oz" + } + ], + ["path", { d: "m4.9 11.2-.4-.9", key: "otmhb9" }], + ["path", { d: "m4.9 16.8-.4.9", key: "1b8z07" }], + ["path", { d: "m7.5 10.3-.4.9", key: "11k65u" }], + ["path", { d: "m7.5 17.7-.4-.9", key: "431x55" }], + ["path", { d: "m9.7 12.5-.9.4", key: "87sjan" }], + ["path", { d: "m9.7 15.5-.9-.4", key: "khqm91" }], + ["circle", { cx: "6", cy: "14", r: "3", key: "a1xfv6" }] +]); + +const FileDiff = createLucideIcon("FileDiffIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M9 10h6", key: "9gxzsh" }], + ["path", { d: "M12 13V7", key: "h0r20n" }], + ["path", { d: "M9 17h6", key: "r8uit2" }] +]); + +const FileDigit = createLucideIcon("FileDigitIcon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["rect", { width: "4", height: "6", x: "2", y: "12", rx: "2", key: "jm304g" }], + ["path", { d: "M10 12h2v6", key: "12zw74" }], + ["path", { d: "M10 18h4", key: "1ulq68" }] +]); + +const FileDown = createLucideIcon("FileDownIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M12 18v-6", key: "17g6i2" }], + ["path", { d: "m9 15 3 3 3-3", key: "1npd3o" }] +]); + +const FileHeart = createLucideIcon("FileHeartIcon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2", key: "17k7jt" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { + d: "M10.29 10.7a2.43 2.43 0 0 0-2.66-.52c-.29.12-.56.3-.78.53l-.35.34-.35-.34a2.43 2.43 0 0 0-2.65-.53c-.3.12-.56.3-.79.53-.95.94-1 2.53.2 3.74L6.5 18l3.6-3.55c1.2-1.21 1.14-2.8.19-3.74Z", + key: "1c1fso" + } + ] +]); + +const FileImage = createLucideIcon("FileImageIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }], + ["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }] +]); + +const FileInput = createLucideIcon("FileInputIcon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M2 15h10", key: "jfw4w8" }], + ["path", { d: "m9 18 3-3-3-3", key: "112psh" }] +]); + +const FileJson2 = createLucideIcon("FileJson2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { d: "M4 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1", key: "fq0c9t" } + ], + [ + "path", + { d: "M8 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1", key: "4gibmv" } + ] +]); + +const FileJson = createLucideIcon("FileJsonIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { d: "M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1", key: "1oajmo" } + ], + [ + "path", + { d: "M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1", key: "mpwhp6" } + ] +]); + +const FileKey2 = createLucideIcon("FileKey2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v6", key: "rc0qvx" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["circle", { cx: "4", cy: "16", r: "2", key: "1ehqvc" }], + ["path", { d: "m10 10-4.5 4.5", key: "7fwrp6" }], + ["path", { d: "m9 11 1 1", key: "wa6s5q" }] +]); + +const FileKey = createLucideIcon("FileKeyIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["circle", { cx: "10", cy: "16", r: "2", key: "4ckbqe" }], + ["path", { d: "m16 10-4.5 4.5", key: "7p3ebg" }], + ["path", { d: "m15 11 1 1", key: "1bsyx3" }] +]); + +const FileLock2 = createLucideIcon("FileLock2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v1", key: "jmtmu2" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["rect", { width: "8", height: "5", x: "2", y: "13", rx: "1", key: "10y5wo" }], + ["path", { d: "M8 13v-2a2 2 0 1 0-4 0v2", key: "1pdxzg" }] +]); + +const FileLock = createLucideIcon("FileLockIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["rect", { width: "8", height: "6", x: "8", y: "12", rx: "1", key: "3yr8at" }], + ["path", { d: "M10 12v-2a2 2 0 1 1 4 0v2", key: "j4i8d" }] +]); + +const FileMinus2 = createLucideIcon("FileMinus2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M3 15h6", key: "4e2qda" }] +]); + +const FileMinus = createLucideIcon("FileMinusIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M9 15h6", key: "cctwl0" }] +]); + +const FileMusic = createLucideIcon("FileMusicIcon", [ + ["path", { d: "M10.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v8.4", key: "1d3kfm" }], + ["path", { d: "M8 18v-7.7L16 9v7", key: "1oie6o" }], + ["circle", { cx: "14", cy: "16", r: "2", key: "1bzzi3" }], + ["circle", { cx: "6", cy: "18", r: "2", key: "1fncim" }] +]); + +const FileOutput = createLucideIcon("FileOutputIcon", [ + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2", key: "1vk7w2" }], + ["path", { d: "M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6", key: "1jink5" }], + ["path", { d: "m5 11-3 3", key: "1dgrs4" }], + ["path", { d: "m5 17-3-3h10", key: "1mvvaf" }] +]); + +const FilePenLine = createLucideIcon("FilePenLineIcon", [ + [ + "path", + { + d: "m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2", + key: "142zxg" + } + ], + [ + "path", + { + d: "M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "2t3380" + } + ], + ["path", { d: "M8 18h1", key: "13wk12" }] +]); + +const FilePen = createLucideIcon("FilePenIcon", [ + ["path", { d: "M12.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v9.5", key: "1couwa" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { + d: "M13.378 15.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "1y4qbx" + } + ] +]); + +const FilePlus2 = createLucideIcon("FilePlus2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M3 15h6", key: "4e2qda" }], + ["path", { d: "M6 12v6", key: "1u72j0" }] +]); + +const FilePlus = createLucideIcon("FilePlusIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M9 15h6", key: "cctwl0" }], + ["path", { d: "M12 18v-6", key: "17g6i2" }] +]); + +const FileQuestion = createLucideIcon("FileQuestionIcon", [ + ["path", { d: "M12 17h.01", key: "p32p05" }], + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }], + ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }] +]); + +const FileScan = createLucideIcon("FileScanIcon", [ + ["path", { d: "M20 10V7l-5-5H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4", key: "1rdf37" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M16 14a2 2 0 0 0-2 2", key: "ceaadl" }], + ["path", { d: "M20 14a2 2 0 0 1 2 2", key: "1ny6zw" }], + ["path", { d: "M20 22a2 2 0 0 0 2-2", key: "1l9q4k" }], + ["path", { d: "M16 22a2 2 0 0 1-2-2", key: "1wqh5n" }] +]); + +const FileSearch2 = createLucideIcon("FileSearch2Icon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["circle", { cx: "11.5", cy: "14.5", r: "2.5", key: "1bq0ko" }], + ["path", { d: "M13.3 16.3 15 18", key: "2quom7" }] +]); + +const FileSearch = createLucideIcon("FileSearchIcon", [ + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { d: "M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "ms7g94" } + ], + ["path", { d: "m9 18-1.5-1.5", key: "1j6qii" }], + ["circle", { cx: "5", cy: "14", r: "3", key: "ufru5t" }] +]); + +const FileSliders = createLucideIcon("FileSlidersIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "M10 11v2", key: "1s651w" }], + ["path", { d: "M8 17h8", key: "wh5c61" }], + ["path", { d: "M14 16v2", key: "12fp5e" }] +]); + +const FileSpreadsheet = createLucideIcon("FileSpreadsheetIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M8 13h2", key: "yr2amv" }], + ["path", { d: "M14 13h2", key: "un5t4a" }], + ["path", { d: "M8 17h2", key: "2yhykz" }], + ["path", { d: "M14 17h2", key: "10kma7" }] +]); + +const FileStack = createLucideIcon("FileStackIcon", [ + ["path", { d: "M21 7h-3a2 2 0 0 1-2-2V2", key: "9rb54x" }], + [ + "path", + { + d: "M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17Z", + key: "1059l0" + } + ], + ["path", { d: "M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15", key: "16874u" }], + ["path", { d: "M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11", key: "k2ox98" }] +]); + +const FileSymlink = createLucideIcon("FileSymlinkIcon", [ + ["path", { d: "m10 18 3-3-3-3", key: "18f6ys" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { + d: "M4 11V4a2 2 0 0 1 2-2h9l5 5v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7", + key: "50q2rw" + } + ] +]); + +const FileTerminal = createLucideIcon("FileTerminalIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m8 16 2-2-2-2", key: "10vzyd" }], + ["path", { d: "M12 18h4", key: "1wd2n7" }] +]); + +const FileText = createLucideIcon("FileTextIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M10 9H8", key: "b1mrlr" }], + ["path", { d: "M16 13H8", key: "t4e002" }], + ["path", { d: "M16 17H8", key: "z1uh3a" }] +]); + +const FileType2 = createLucideIcon("FileType2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M2 13v-1h6v1", key: "1dh9dg" }], + ["path", { d: "M5 12v6", key: "150t9c" }], + ["path", { d: "M4 18h2", key: "1xrofg" }] +]); + +const FileType = createLucideIcon("FileTypeIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M9 13v-1h6v1", key: "1bb014" }], + ["path", { d: "M12 12v6", key: "3ahymv" }], + ["path", { d: "M11 18h2", key: "12mj7e" }] +]); + +const FileUp = createLucideIcon("FileUpIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M12 12v6", key: "3ahymv" }], + ["path", { d: "m15 15-3-3-3 3", key: "15xj92" }] +]); + +const FileUser = createLucideIcon("FileUserIcon", [ + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M15 18a3 3 0 1 0-6 0", key: "16awa0" }], + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }], + ["circle", { cx: "12", cy: "13", r: "2", key: "1c1ljs" }] +]); + +const FileVideo2 = createLucideIcon("FileVideo2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["rect", { width: "8", height: "6", x: "2", y: "12", rx: "1", key: "1a6c1e" }], + ["path", { d: "m10 15.5 4 2.5v-6l-4 2.5", key: "t7cp39" }] +]); + +const FileVideo = createLucideIcon("FileVideoIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m10 11 5 3-5 3v-6Z", key: "7ntvm4" }] +]); + +const FileVolume2 = createLucideIcon("FileVolume2Icon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "M8 15h.01", key: "a7atzg" }], + ["path", { d: "M11.5 13.5a2.5 2.5 0 0 1 0 3", key: "1fccat" }], + ["path", { d: "M15 12a5 5 0 0 1 0 6", key: "ps46cm" }] +]); + +const FileVolume = createLucideIcon("FileVolumeIcon", [ + ["path", { d: "M11 11a5 5 0 0 1 0 6", key: "193qb2" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + [ + "path", + { d: "M4 6.765V4a2 2 0 0 1 2-2h9l5 5v13a2 2 0 0 1-2 2H6a2 2 0 0 1-.93-.23", key: "ifyjnl" } + ], + [ + "path", + { + d: "M7 10.51a.5.5 0 0 0-.826-.38l-1.893 1.628A1 1 0 0 1 3.63 12H2.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5h1.129a1 1 0 0 1 .652.242l1.893 1.63a.5.5 0 0 0 .826-.38z", + key: "mk8rxu" + } + ] +]); + +const FileWarning = createLucideIcon("FileWarningIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M12 9v4", key: "juzpu7" }], + ["path", { d: "M12 17h.01", key: "p32p05" }] +]); + +const FileX2 = createLucideIcon("FileX2Icon", [ + ["path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4", key: "1pf5j1" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m8 12.5-5 5", key: "b853mi" }], + ["path", { d: "m3 12.5 5 5", key: "1qls4r" }] +]); + +const FileX = createLucideIcon("FileXIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }], + ["path", { d: "m14.5 12.5-5 5", key: "b62r18" }], + ["path", { d: "m9.5 12.5 5 5", key: "1rk7el" }] +]); + +const File = createLucideIcon("FileIcon", [ + ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }], + ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }] +]); + +const Files = createLucideIcon("FilesIcon", [ + ["path", { d: "M20 7h-3a2 2 0 0 1-2-2V2", key: "x099mo" }], + ["path", { d: "M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z", key: "18t6ie" }], + ["path", { d: "M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8", key: "1nja0z" }] +]); + +const Film = createLucideIcon("FilmIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7 3v18", key: "bbkbws" }], + ["path", { d: "M3 7.5h4", key: "zfgn84" }], + ["path", { d: "M3 12h18", key: "1i2n21" }], + ["path", { d: "M3 16.5h4", key: "1230mu" }], + ["path", { d: "M17 3v18", key: "in4fa5" }], + ["path", { d: "M17 7.5h4", key: "myr1c1" }], + ["path", { d: "M17 16.5h4", key: "go4c1d" }] +]); + +const FilterX = createLucideIcon("FilterXIcon", [ + ["path", { d: "M13.013 3H2l8 9.46V19l4 2v-8.54l.9-1.055", key: "1fi1da" }], + ["path", { d: "m22 3-5 5", key: "12jva0" }], + ["path", { d: "m17 3 5 5", key: "k36vhe" }] +]); + +const Filter = createLucideIcon("FilterIcon", [ + ["polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3", key: "1yg77f" }] +]); + +const Fingerprint = createLucideIcon("FingerprintIcon", [ + ["path", { d: "M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4", key: "1nerag" }], + ["path", { d: "M14 13.12c0 2.38 0 6.38-1 8.88", key: "o46ks0" }], + ["path", { d: "M17.29 21.02c.12-.6.43-2.3.5-3.02", key: "ptglia" }], + ["path", { d: "M2 12a10 10 0 0 1 18-6", key: "ydlgp0" }], + ["path", { d: "M2 16h.01", key: "1gqxmh" }], + ["path", { d: "M21.8 16c.2-2 .131-5.354 0-6", key: "drycrb" }], + ["path", { d: "M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2", key: "1tidbn" }], + ["path", { d: "M8.65 22c.21-.66.45-1.32.57-2", key: "13wd9y" }], + ["path", { d: "M9 6.8a6 6 0 0 1 9 5.2v2", key: "1fr1j5" }] +]); + +const FireExtinguisher = createLucideIcon("FireExtinguisherIcon", [ + ["path", { d: "M15 6.5V3a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v3.5", key: "sqyvz" }], + ["path", { d: "M9 18h8", key: "i7pszb" }], + ["path", { d: "M18 3h-3", key: "7idoqj" }], + ["path", { d: "M11 3a6 6 0 0 0-6 6v11", key: "1v5je3" }], + ["path", { d: "M5 13h4", key: "svpcxo" }], + ["path", { d: "M17 10a4 4 0 0 0-8 0v10a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2Z", key: "vsjego" }] +]); + +const FishOff = createLucideIcon("FishOffIcon", [ + [ + "path", + { + d: "M18 12.47v.03m0-.5v.47m-.475 5.056A6.744 6.744 0 0 1 15 18c-3.56 0-7.56-2.53-8.5-6 .348-1.28 1.114-2.433 2.121-3.38m3.444-2.088A8.802 8.802 0 0 1 15 6c3.56 0 6.06 2.54 7 6-.309 1.14-.786 2.177-1.413 3.058", + key: "1j1hse" + } + ], + [ + "path", + { + d: "M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33m7.48-4.372A9.77 9.77 0 0 1 16 6.07m0 11.86a9.77 9.77 0 0 1-1.728-3.618", + key: "1q46z8" + } + ], + [ + "path", + { + d: "m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98M8.53 3h5.27a2 2 0 0 1 1.98 1.67l.23 1.4M2 2l20 20", + key: "1407gh" + } + ] +]); + +const FishSymbol = createLucideIcon("FishSymbolIcon", [ + ["path", { d: "M2 16s9-15 20-4C11 23 2 8 2 8", key: "h4oh4o" }] +]); + +const Fish = createLucideIcon("FishIcon", [ + [ + "path", + { + d: "M6.5 12c.94-3.46 4.94-6 8.5-6 3.56 0 6.06 2.54 7 6-.94 3.47-3.44 6-7 6s-7.56-2.53-8.5-6Z", + key: "15baut" + } + ], + ["path", { d: "M18 12v.5", key: "18hhni" }], + ["path", { d: "M16 17.93a9.77 9.77 0 0 1 0-11.86", key: "16dt7o" }], + [ + "path", + { + d: "M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33", + key: "l9di03" + } + ], + [ + "path", + { d: "M10.46 7.26C10.2 5.88 9.17 4.24 8 3h5.8a2 2 0 0 1 1.98 1.67l.23 1.4", key: "1kjonw" } + ], + [ + "path", + { d: "m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98", key: "1zlm23" } + ] +]); + +const FlagOff = createLucideIcon("FlagOffIcon", [ + ["path", { d: "M8 2c3 0 5 2 8 2s4-1 4-1v11", key: "9rwyz9" }], + ["path", { d: "M4 22V4", key: "1plyxx" }], + ["path", { d: "M4 15s1-1 4-1 5 2 8 2", key: "1myooe" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const FlagTriangleLeft = createLucideIcon("FlagTriangleLeftIcon", [ + ["path", { d: "M17 22V2L7 7l10 5", key: "1rmf0r" }] +]); + +const FlagTriangleRight = createLucideIcon("FlagTriangleRightIcon", [ + ["path", { d: "M7 22V2l10 5-10 5", key: "17n18y" }] +]); + +const Flag = createLucideIcon("FlagIcon", [ + ["path", { d: "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z", key: "i9b6wo" }], + ["line", { x1: "4", x2: "4", y1: "22", y2: "15", key: "1cm3nv" }] +]); + +const FlameKindling = createLucideIcon("FlameKindlingIcon", [ + [ + "path", + { + d: "M12 2c1 3 2.5 3.5 3.5 4.5A5 5 0 0 1 17 10a5 5 0 1 1-10 0c0-.3 0-.6.1-.9a2 2 0 1 0 3.3-2C8 4.5 11 2 12 2Z", + key: "1ir223" + } + ], + ["path", { d: "m5 22 14-4", key: "1brv4h" }], + ["path", { d: "m5 18 14 4", key: "lgyyje" }] +]); + +const Flame = createLucideIcon("FlameIcon", [ + [ + "path", + { + d: "M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z", + key: "96xj49" + } + ] +]); + +const FlashlightOff = createLucideIcon("FlashlightOffIcon", [ + ["path", { d: "M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V10c0-2-2-2-2-4", key: "1r120k" }], + ["path", { d: "M7 2h11v4c0 2-2 2-2 4v1", key: "dz1920" }], + ["line", { x1: "11", x2: "18", y1: "6", y2: "6", key: "bi1vpe" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Flashlight = createLucideIcon("FlashlightIcon", [ + [ + "path", + { + d: "M18 6c0 2-2 2-2 4v10a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V10c0-2-2-2-2-4V2h12z", + key: "1orkel" + } + ], + ["line", { x1: "6", x2: "18", y1: "6", y2: "6", key: "1z11jq" }], + ["line", { x1: "12", x2: "12", y1: "12", y2: "12", key: "1f4yc1" }] +]); + +const FlaskConicalOff = createLucideIcon("FlaskConicalOffIcon", [ + ["path", { d: "M10 2v2.343", key: "15t272" }], + ["path", { d: "M14 2v6.343", key: "sxr80q" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M20 20a2 2 0 0 1-2 2H6a2 2 0 0 1-1.755-2.96l5.227-9.563", key: "k0duyd" }], + ["path", { d: "M6.453 15H15", key: "1f0z33" }], + ["path", { d: "M8.5 2h7", key: "csnxdl" }] +]); + +const FlaskConical = createLucideIcon("FlaskConicalIcon", [ + [ + "path", + { + d: "M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2", + key: "18mbvz" + } + ], + ["path", { d: "M6.453 15h11.094", key: "3shlmq" }], + ["path", { d: "M8.5 2h7", key: "csnxdl" }] +]); + +const FlaskRound = createLucideIcon("FlaskRoundIcon", [ + ["path", { d: "M10 2v6.292a7 7 0 1 0 4 0V2", key: "1s42pc" }], + ["path", { d: "M5 15h14", key: "m0yey3" }], + ["path", { d: "M8.5 2h7", key: "csnxdl" }] +]); + +const FlipHorizontal2 = createLucideIcon("FlipHorizontal2Icon", [ + ["path", { d: "m3 7 5 5-5 5V7", key: "couhi7" }], + ["path", { d: "m21 7-5 5 5 5V7", key: "6ouia7" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "M12 14v2", key: "8jcxud" }], + ["path", { d: "M12 8v2", key: "1woqiv" }], + ["path", { d: "M12 2v2", key: "tus03m" }] +]); + +const FlipHorizontal = createLucideIcon("FlipHorizontalIcon", [ + ["path", { d: "M8 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h3", key: "1i73f7" }], + ["path", { d: "M16 3h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-3", key: "saxlbk" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "M12 14v2", key: "8jcxud" }], + ["path", { d: "M12 8v2", key: "1woqiv" }], + ["path", { d: "M12 2v2", key: "tus03m" }] +]); + +const FlipVertical2 = createLucideIcon("FlipVertical2Icon", [ + ["path", { d: "m17 3-5 5-5-5h10", key: "1ftt6x" }], + ["path", { d: "m17 21-5-5-5 5h10", key: "1m0wmu" }], + ["path", { d: "M4 12H2", key: "rhcxmi" }], + ["path", { d: "M10 12H8", key: "s88cx1" }], + ["path", { d: "M16 12h-2", key: "10asgb" }], + ["path", { d: "M22 12h-2", key: "14jgyd" }] +]); + +const FlipVertical = createLucideIcon("FlipVerticalIcon", [ + ["path", { d: "M21 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v3", key: "14bfxa" }], + ["path", { d: "M21 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-3", key: "14rx03" }], + ["path", { d: "M4 12H2", key: "rhcxmi" }], + ["path", { d: "M10 12H8", key: "s88cx1" }], + ["path", { d: "M16 12h-2", key: "10asgb" }], + ["path", { d: "M22 12h-2", key: "14jgyd" }] +]); + +const Flower2 = createLucideIcon("Flower2Icon", [ + [ + "path", + { + d: "M12 5a3 3 0 1 1 3 3m-3-3a3 3 0 1 0-3 3m3-3v1M9 8a3 3 0 1 0 3 3M9 8h1m5 0a3 3 0 1 1-3 3m3-3h-1m-2 3v-1", + key: "3pnvol" + } + ], + ["circle", { cx: "12", cy: "8", r: "2", key: "1822b1" }], + ["path", { d: "M12 10v12", key: "6ubwww" }], + ["path", { d: "M12 22c4.2 0 7-1.667 7-5-4.2 0-7 1.667-7 5Z", key: "9hd38g" }], + ["path", { d: "M12 22c-4.2 0-7-1.667-7-5 4.2 0 7 1.667 7 5Z", key: "ufn41s" }] +]); + +const Flower = createLucideIcon("FlowerIcon", [ + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + [ + "path", + { + d: "M12 16.5A4.5 4.5 0 1 1 7.5 12 4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 1 1 4.5 4.5 4.5 4.5 0 1 1-4.5 4.5", + key: "14wa3c" + } + ], + ["path", { d: "M12 7.5V9", key: "1oy5b0" }], + ["path", { d: "M7.5 12H9", key: "eltsq1" }], + ["path", { d: "M16.5 12H15", key: "vk5kw4" }], + ["path", { d: "M12 16.5V15", key: "k7eayi" }], + ["path", { d: "m8 8 1.88 1.88", key: "nxy4qf" }], + ["path", { d: "M14.12 9.88 16 8", key: "1lst6k" }], + ["path", { d: "m8 16 1.88-1.88", key: "h2eex1" }], + ["path", { d: "M14.12 14.12 16 16", key: "uqkrx3" }] +]); + +const Focus = createLucideIcon("FocusIcon", [ + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }] +]); + +const FoldHorizontal = createLucideIcon("FoldHorizontalIcon", [ + ["path", { d: "M2 12h6", key: "1wqiqv" }], + ["path", { d: "M22 12h-6", key: "1eg9hc" }], + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "M12 8v2", key: "1woqiv" }], + ["path", { d: "M12 14v2", key: "8jcxud" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "m19 9-3 3 3 3", key: "12ol22" }], + ["path", { d: "m5 15 3-3-3-3", key: "1kdhjc" }] +]); + +const FoldVertical = createLucideIcon("FoldVerticalIcon", [ + ["path", { d: "M12 22v-6", key: "6o8u61" }], + ["path", { d: "M12 8V2", key: "1wkif3" }], + ["path", { d: "M4 12H2", key: "rhcxmi" }], + ["path", { d: "M10 12H8", key: "s88cx1" }], + ["path", { d: "M16 12h-2", key: "10asgb" }], + ["path", { d: "M22 12h-2", key: "14jgyd" }], + ["path", { d: "m15 19-3-3-3 3", key: "e37ymu" }], + ["path", { d: "m15 5-3 3-3-3", key: "19d6lf" }] +]); + +const FolderArchive = createLucideIcon("FolderArchiveIcon", [ + ["circle", { cx: "15", cy: "19", r: "2", key: "u2pros" }], + [ + "path", + { + d: "M20.9 19.8A2 2 0 0 0 22 18V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h5.1", + key: "1jj40k" + } + ], + ["path", { d: "M15 11v-1", key: "cntcp" }], + ["path", { d: "M15 17v-2", key: "1279jj" }] +]); + +const FolderCheck = createLucideIcon("FolderCheckIcon", [ + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "m9 13 2 2 4-4", key: "6343dt" }] +]); + +const FolderClock = createLucideIcon("FolderClockIcon", [ + ["circle", { cx: "16", cy: "16", r: "6", key: "qoo3c4" }], + [ + "path", + { + d: "M7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2", + key: "1urifu" + } + ], + ["path", { d: "M16 14v2l1 1", key: "xth2jh" }] +]); + +const FolderClosed = createLucideIcon("FolderClosedIcon", [ + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "M2 10h20", key: "1ir3d8" }] +]); + +const FolderCode = createLucideIcon("FolderCodeIcon", [ + ["path", { d: "M10 10.5 8 13l2 2.5", key: "m4t9c1" }], + ["path", { d: "m14 10.5 2 2.5-2 2.5", key: "14w2eb" }], + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2z", + key: "1u1bxd" + } + ] +]); + +const FolderCog = createLucideIcon("FolderCogIcon", [ + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + [ + "path", + { + d: "M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v3.3", + key: "1k8050" + } + ], + ["path", { d: "m21.7 19.4-.9-.3", key: "1qgwi9" }], + ["path", { d: "m15.2 16.9-.9-.3", key: "1t7mvx" }], + ["path", { d: "m16.6 21.7.3-.9", key: "1j67ps" }], + ["path", { d: "m19.1 15.2.3-.9", key: "18r7jp" }], + ["path", { d: "m19.6 21.7-.4-1", key: "z2vh2" }], + ["path", { d: "m16.8 15.3-.4-1", key: "1ei7r6" }], + ["path", { d: "m14.3 19.6 1-.4", key: "11sv9r" }], + ["path", { d: "m20.7 16.8 1-.4", key: "19m87a" }] +]); + +const FolderDot = createLucideIcon("FolderDotIcon", [ + [ + "path", + { + d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z", + key: "1fr9dc" + } + ], + ["circle", { cx: "12", cy: "13", r: "1", key: "49l61u" }] +]); + +const FolderDown = createLucideIcon("FolderDownIcon", [ + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "M12 10v6", key: "1bos4e" }], + ["path", { d: "m15 13-3 3-3-3", key: "6j2sf0" }] +]); + +const FolderGit2 = createLucideIcon("FolderGit2Icon", [ + [ + "path", + { + d: "M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5", + key: "1w6njk" + } + ], + ["circle", { cx: "13", cy: "12", r: "2", key: "1j92g6" }], + ["path", { d: "M18 19c-2.8 0-5-2.2-5-5v8", key: "pkpw2h" }], + ["circle", { cx: "20", cy: "19", r: "2", key: "1obnsp" }] +]); + +const FolderGit = createLucideIcon("FolderGitIcon", [ + ["circle", { cx: "12", cy: "13", r: "2", key: "1c1ljs" }], + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "M14 13h3", key: "1dgedf" }], + ["path", { d: "M7 13h3", key: "1pygq7" }] +]); + +const FolderHeart = createLucideIcon("FolderHeartIcon", [ + [ + "path", + { + d: "M11 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v1.5", + key: "6hud8k" + } + ], + [ + "path", + { + d: "M13.9 17.45c-1.2-1.2-1.14-2.8-.2-3.73a2.43 2.43 0 0 1 3.44 0l.36.34.34-.34a2.43 2.43 0 0 1 3.45-.01c.95.95 1 2.53-.2 3.74L17.5 21Z", + key: "wpff58" + } + ] +]); + +const FolderInput = createLucideIcon("FolderInputIcon", [ + [ + "path", + { + d: "M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1", + key: "fm4g5t" + } + ], + ["path", { d: "M2 13h10", key: "pgb2dq" }], + ["path", { d: "m9 16 3-3-3-3", key: "6m91ic" }] +]); + +const FolderKanban = createLucideIcon("FolderKanbanIcon", [ + [ + "path", + { + d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z", + key: "1fr9dc" + } + ], + ["path", { d: "M8 10v4", key: "tgpxqk" }], + ["path", { d: "M12 10v2", key: "hh53o1" }], + ["path", { d: "M16 10v6", key: "1d6xys" }] +]); + +const FolderKey = createLucideIcon("FolderKeyIcon", [ + ["circle", { cx: "16", cy: "20", r: "2", key: "1vifvg" }], + [ + "path", + { + d: "M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2", + key: "3hgo9p" + } + ], + ["path", { d: "m22 14-4.5 4.5", key: "1ef6z8" }], + ["path", { d: "m21 15 1 1", key: "1ejcpy" }] +]); + +const FolderLock = createLucideIcon("FolderLockIcon", [ + ["rect", { width: "8", height: "5", x: "14", y: "17", rx: "1", key: "19aais" }], + [ + "path", + { + d: "M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2.5", + key: "1w6v7t" + } + ], + ["path", { d: "M20 17v-2a2 2 0 1 0-4 0v2", key: "pwaxnr" }] +]); + +const FolderMinus = createLucideIcon("FolderMinusIcon", [ + ["path", { d: "M9 13h6", key: "1uhe8q" }], + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ] +]); + +const FolderOpenDot = createLucideIcon("FolderOpenDotIcon", [ + [ + "path", + { + d: "m6 14 1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2", + key: "1nmvlm" + } + ], + ["circle", { cx: "14", cy: "15", r: "1", key: "1gm4qj" }] +]); + +const FolderOpen = createLucideIcon("FolderOpenIcon", [ + [ + "path", + { + d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2", + key: "usdka0" + } + ] +]); + +const FolderOutput = createLucideIcon("FolderOutputIcon", [ + [ + "path", + { + d: "M2 7.5V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-1.5", + key: "1yk7aj" + } + ], + ["path", { d: "M2 13h10", key: "pgb2dq" }], + ["path", { d: "m5 10-3 3 3 3", key: "1r8ie0" }] +]); + +const FolderPen = createLucideIcon("FolderPenIcon", [ + [ + "path", + { + d: "M2 11.5V5a2 2 0 0 1 2-2h3.9c.7 0 1.3.3 1.7.9l.8 1.2c.4.6 1 .9 1.7.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-9.5", + key: "a8xqs0" + } + ], + [ + "path", + { + d: "M11.378 13.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "1saktj" + } + ] +]); + +const FolderPlus = createLucideIcon("FolderPlusIcon", [ + ["path", { d: "M12 10v6", key: "1bos4e" }], + ["path", { d: "M9 13h6", key: "1uhe8q" }], + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ] +]); + +const FolderRoot = createLucideIcon("FolderRootIcon", [ + [ + "path", + { + d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z", + key: "1fr9dc" + } + ], + ["circle", { cx: "12", cy: "13", r: "2", key: "1c1ljs" }], + ["path", { d: "M12 15v5", key: "11xva1" }] +]); + +const FolderSearch2 = createLucideIcon("FolderSearch2Icon", [ + ["circle", { cx: "11.5", cy: "12.5", r: "2.5", key: "1ea5ju" }], + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "M13.3 14.3 15 16", key: "1y4v1n" }] +]); + +const FolderSearch = createLucideIcon("FolderSearchIcon", [ + [ + "path", + { + d: "M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1", + key: "1bw5m7" + } + ], + ["path", { d: "m21 21-1.9-1.9", key: "1g2n9r" }], + ["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }] +]); + +const FolderSymlink = createLucideIcon("FolderSymlinkIcon", [ + [ + "path", + { + d: "M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7", + key: "x1c07l" + } + ], + ["path", { d: "m8 16 3-3-3-3", key: "rlqrt1" }] +]); + +const FolderSync = createLucideIcon("FolderSyncIcon", [ + [ + "path", + { + d: "M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5", + key: "1dkoa9" + } + ], + ["path", { d: "M12 10v4h4", key: "1czhmt" }], + ["path", { d: "m12 14 1.535-1.605a5 5 0 0 1 8 1.5", key: "lvuxfi" }], + ["path", { d: "M22 22v-4h-4", key: "1ewp4q" }], + ["path", { d: "m22 18-1.535 1.605a5 5 0 0 1-8-1.5", key: "14ync0" }] +]); + +const FolderTree = createLucideIcon("FolderTreeIcon", [ + [ + "path", + { + d: "M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z", + key: "hod4my" + } + ], + [ + "path", + { + d: "M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z", + key: "w4yl2u" + } + ], + ["path", { d: "M3 5a2 2 0 0 0 2 2h3", key: "f2jnh7" }], + ["path", { d: "M3 3v13a2 2 0 0 0 2 2h3", key: "k8epm1" }] +]); + +const FolderUp = createLucideIcon("FolderUpIcon", [ + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "M12 10v6", key: "1bos4e" }], + ["path", { d: "m9 13 3-3 3 3", key: "1pxg3c" }] +]); + +const FolderX = createLucideIcon("FolderXIcon", [ + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ], + ["path", { d: "m9.5 10.5 5 5", key: "ra9qjz" }], + ["path", { d: "m14.5 10.5-5 5", key: "l2rkpq" }] +]); + +const Folder = createLucideIcon("FolderIcon", [ + [ + "path", + { + d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z", + key: "1kt360" + } + ] +]); + +const Folders = createLucideIcon("FoldersIcon", [ + [ + "path", + { + d: "M20 17a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3.9a2 2 0 0 1-1.69-.9l-.81-1.2a2 2 0 0 0-1.67-.9H8a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2Z", + key: "4u7rpt" + } + ], + ["path", { d: "M2 8v11a2 2 0 0 0 2 2h14", key: "1eicx1" }] +]); + +const Footprints = createLucideIcon("FootprintsIcon", [ + [ + "path", + { + d: "M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z", + key: "1dudjm" + } + ], + [ + "path", + { + d: "M20 20v-2.38c0-2.12 1.03-3.12 1-5.62-.03-2.72-1.49-6-4.5-6C14.63 6 14 7.8 14 9.5c0 3.11 2 5.66 2 8.68V20a2 2 0 1 0 4 0Z", + key: "l2t8xc" + } + ], + ["path", { d: "M16 17h4", key: "1dejxt" }], + ["path", { d: "M4 13h4", key: "1bwh8b" }] +]); + +const Forklift = createLucideIcon("ForkliftIcon", [ + ["path", { d: "M12 12H5a2 2 0 0 0-2 2v5", key: "7zsz91" }], + ["circle", { cx: "13", cy: "19", r: "2", key: "wjnkru" }], + ["circle", { cx: "5", cy: "19", r: "2", key: "v8kfzx" }], + ["path", { d: "M8 19h3m5-17v17h6M6 12V7c0-1.1.9-2 2-2h3l5 5", key: "13bk1p" }] +]); + +const Forward = createLucideIcon("ForwardIcon", [ + ["polyline", { points: "15 17 20 12 15 7", key: "1w3sku" }], + ["path", { d: "M4 18v-2a4 4 0 0 1 4-4h12", key: "jmiej9" }] +]); + +const Frame = createLucideIcon("FrameIcon", [ + ["line", { x1: "22", x2: "2", y1: "6", y2: "6", key: "15w7dq" }], + ["line", { x1: "22", x2: "2", y1: "18", y2: "18", key: "1ip48p" }], + ["line", { x1: "6", x2: "6", y1: "2", y2: "22", key: "a2lnyx" }], + ["line", { x1: "18", x2: "18", y1: "2", y2: "22", key: "8vb6jd" }] +]); + +const Framer = createLucideIcon("FramerIcon", [ + ["path", { d: "M5 16V9h14V2H5l14 14h-7m-7 0 7 7v-7m-7 0h7", key: "1a2nng" }] +]); + +const Frown = createLucideIcon("FrownIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M16 16s-1.5-2-4-2-4 2-4 2", key: "epbg0q" }], + ["line", { x1: "9", x2: "9.01", y1: "9", y2: "9", key: "yxxnd0" }], + ["line", { x1: "15", x2: "15.01", y1: "9", y2: "9", key: "1p4y9e" }] +]); + +const Fuel = createLucideIcon("FuelIcon", [ + ["line", { x1: "3", x2: "15", y1: "22", y2: "22", key: "xegly4" }], + ["line", { x1: "4", x2: "14", y1: "9", y2: "9", key: "xcnuvu" }], + ["path", { d: "M14 22V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v18", key: "16j0yd" }], + [ + "path", + { + d: "M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 2 2a2 2 0 0 0 2-2V9.83a2 2 0 0 0-.59-1.42L18 5", + key: "7cu91f" + } + ] +]); + +const Fullscreen = createLucideIcon("FullscreenIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["rect", { width: "10", height: "8", x: "7", y: "8", rx: "1", key: "vys8me" }] +]); + +const GalleryHorizontalEnd = createLucideIcon("GalleryHorizontalEndIcon", [ + ["path", { d: "M2 7v10", key: "a2pl2d" }], + ["path", { d: "M6 5v14", key: "1kq3d7" }], + ["rect", { width: "12", height: "18", x: "10", y: "3", rx: "2", key: "13i7bc" }] +]); + +const GalleryHorizontal = createLucideIcon("GalleryHorizontalIcon", [ + ["path", { d: "M2 3v18", key: "pzttux" }], + ["rect", { width: "12", height: "18", x: "6", y: "3", rx: "2", key: "btr8bg" }], + ["path", { d: "M22 3v18", key: "6jf3v" }] +]); + +const GalleryThumbnails = createLucideIcon("GalleryThumbnailsIcon", [ + ["rect", { width: "18", height: "14", x: "3", y: "3", rx: "2", key: "74y24f" }], + ["path", { d: "M4 21h1", key: "16zlid" }], + ["path", { d: "M9 21h1", key: "15o7lz" }], + ["path", { d: "M14 21h1", key: "v9vybs" }], + ["path", { d: "M19 21h1", key: "edywat" }] +]); + +const GalleryVerticalEnd = createLucideIcon("GalleryVerticalEndIcon", [ + ["path", { d: "M7 2h10", key: "nczekb" }], + ["path", { d: "M5 6h14", key: "u2x4p" }], + ["rect", { width: "18", height: "12", x: "3", y: "10", rx: "2", key: "l0tzu3" }] +]); + +const GalleryVertical = createLucideIcon("GalleryVerticalIcon", [ + ["path", { d: "M3 2h18", key: "15qxfx" }], + ["rect", { width: "18", height: "12", x: "3", y: "6", rx: "2", key: "1439r6" }], + ["path", { d: "M3 22h18", key: "8prr45" }] +]); + +const Gamepad2 = createLucideIcon("Gamepad2Icon", [ + ["line", { x1: "6", x2: "10", y1: "11", y2: "11", key: "1gktln" }], + ["line", { x1: "8", x2: "8", y1: "9", y2: "13", key: "qnk9ow" }], + ["line", { x1: "15", x2: "15.01", y1: "12", y2: "12", key: "krot7o" }], + ["line", { x1: "18", x2: "18.01", y1: "10", y2: "10", key: "1lcuu1" }], + [ + "path", + { + d: "M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z", + key: "mfqc10" + } + ] +]); + +const Gamepad = createLucideIcon("GamepadIcon", [ + ["line", { x1: "6", x2: "10", y1: "12", y2: "12", key: "161bw2" }], + ["line", { x1: "8", x2: "8", y1: "10", y2: "14", key: "1i6ji0" }], + ["line", { x1: "15", x2: "15.01", y1: "13", y2: "13", key: "dqpgro" }], + ["line", { x1: "18", x2: "18.01", y1: "11", y2: "11", key: "meh2c" }], + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }] +]); + +const Gauge = createLucideIcon("GaugeIcon", [ + ["path", { d: "m12 14 4-4", key: "9kzdfg" }], + ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0", key: "19p75a" }] +]); + +const Gavel = createLucideIcon("GavelIcon", [ + ["path", { d: "m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8", key: "15492f" }], + ["path", { d: "m16 16 6-6", key: "vzrcl6" }], + ["path", { d: "m8 8 6-6", key: "18bi4p" }], + ["path", { d: "m9 7 8 8", key: "5jnvq1" }], + ["path", { d: "m21 11-8-8", key: "z4y7zo" }] +]); + +const Gem = createLucideIcon("GemIcon", [ + ["path", { d: "M6 3h12l4 6-10 13L2 9Z", key: "1pcd5k" }], + ["path", { d: "M11 3 8 9l4 13 4-13-3-6", key: "1fcu3u" }], + ["path", { d: "M2 9h20", key: "16fsjt" }] +]); + +const Ghost = createLucideIcon("GhostIcon", [ + ["path", { d: "M9 10h.01", key: "qbtxuw" }], + ["path", { d: "M15 10h.01", key: "1qmjsl" }], + [ + "path", + { + d: "M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z", + key: "uwwb07" + } + ] +]); + +const Gift = createLucideIcon("GiftIcon", [ + ["rect", { x: "3", y: "8", width: "18", height: "4", rx: "1", key: "bkv52" }], + ["path", { d: "M12 8v13", key: "1c76mn" }], + ["path", { d: "M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7", key: "6wjy6b" }], + [ + "path", + { + d: "M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5", + key: "1ihvrl" + } + ] +]); + +const GitBranchPlus = createLucideIcon("GitBranchPlusIcon", [ + ["path", { d: "M6 3v12", key: "qpgusn" }], + ["path", { d: "M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6z", key: "1d02ji" }], + ["path", { d: "M6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6z", key: "chk6ph" }], + ["path", { d: "M15 6a9 9 0 0 0-9 9", key: "or332x" }], + ["path", { d: "M18 15v6", key: "9wciyi" }], + ["path", { d: "M21 18h-6", key: "139f0c" }] +]); + +const GitBranch = createLucideIcon("GitBranchIcon", [ + ["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }], + ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }], + ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }], + ["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }] +]); + +const GitCommitHorizontal = createLucideIcon("GitCommitHorizontalIcon", [ + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }], + ["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }] +]); + +const GitCommitVertical = createLucideIcon("GitCommitVerticalIcon", [ + ["path", { d: "M12 3v6", key: "1holv5" }], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["path", { d: "M12 15v6", key: "a9ows0" }] +]); + +const GitCompareArrows = createLucideIcon("GitCompareArrowsIcon", [ + ["circle", { cx: "5", cy: "6", r: "3", key: "1qnov2" }], + ["path", { d: "M12 6h5a2 2 0 0 1 2 2v7", key: "1yj91y" }], + ["path", { d: "m15 9-3-3 3-3", key: "1lwv8l" }], + ["circle", { cx: "19", cy: "18", r: "3", key: "1qljk2" }], + ["path", { d: "M12 18H7a2 2 0 0 1-2-2V9", key: "16sdep" }], + ["path", { d: "m9 15 3 3-3 3", key: "1m3kbl" }] +]); + +const GitCompare = createLucideIcon("GitCompareIcon", [ + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }], + ["path", { d: "M11 18H8a2 2 0 0 1-2-2V9", key: "19pyzm" }] +]); + +const GitFork = createLucideIcon("GitForkIcon", [ + ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }], + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }], + ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }], + ["path", { d: "M12 12v3", key: "158kv8" }] +]); + +const GitGraph = createLucideIcon("GitGraphIcon", [ + ["circle", { cx: "5", cy: "6", r: "3", key: "1qnov2" }], + ["path", { d: "M5 9v6", key: "158jrl" }], + ["circle", { cx: "5", cy: "18", r: "3", key: "104gr9" }], + ["path", { d: "M12 3v18", key: "108xh3" }], + ["circle", { cx: "19", cy: "6", r: "3", key: "108a5v" }], + ["path", { d: "M16 15.7A9 9 0 0 0 19 9", key: "1e3vqb" }] +]); + +const GitMerge = createLucideIcon("GitMergeIcon", [ + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M6 21V9a9 9 0 0 0 9 9", key: "7kw0sc" }] +]); + +const GitPullRequestArrow = createLucideIcon("GitPullRequestArrowIcon", [ + ["circle", { cx: "5", cy: "6", r: "3", key: "1qnov2" }], + ["path", { d: "M5 9v12", key: "ih889a" }], + ["circle", { cx: "19", cy: "18", r: "3", key: "1qljk2" }], + ["path", { d: "m15 9-3-3 3-3", key: "1lwv8l" }], + ["path", { d: "M12 6h5a2 2 0 0 1 2 2v7", key: "1yj91y" }] +]); + +const GitPullRequestClosed = createLucideIcon("GitPullRequestClosedIcon", [ + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M6 9v12", key: "1sc30k" }], + ["path", { d: "m21 3-6 6", key: "16nqsk" }], + ["path", { d: "m21 9-6-6", key: "9j17rh" }], + ["path", { d: "M18 11.5V15", key: "65xf6f" }], + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }] +]); + +const GitPullRequestCreateArrow = createLucideIcon("GitPullRequestCreateArrowIcon", [ + ["circle", { cx: "5", cy: "6", r: "3", key: "1qnov2" }], + ["path", { d: "M5 9v12", key: "ih889a" }], + ["path", { d: "m15 9-3-3 3-3", key: "1lwv8l" }], + ["path", { d: "M12 6h5a2 2 0 0 1 2 2v3", key: "1rbwk6" }], + ["path", { d: "M19 15v6", key: "10aioa" }], + ["path", { d: "M22 18h-6", key: "1d5gi5" }] +]); + +const GitPullRequestCreate = createLucideIcon("GitPullRequestCreateIcon", [ + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M6 9v12", key: "1sc30k" }], + ["path", { d: "M13 6h3a2 2 0 0 1 2 2v3", key: "1jb6z3" }], + ["path", { d: "M18 15v6", key: "9wciyi" }], + ["path", { d: "M21 18h-6", key: "139f0c" }] +]); + +const GitPullRequestDraft = createLucideIcon("GitPullRequestDraftIcon", [ + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M18 6V5", key: "1oao2s" }], + ["path", { d: "M18 11v-1", key: "11c8tz" }], + ["line", { x1: "6", x2: "6", y1: "9", y2: "21", key: "rroup" }] +]); + +const GitPullRequest = createLucideIcon("GitPullRequestIcon", [ + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }], + ["line", { x1: "6", x2: "6", y1: "9", y2: "21", key: "rroup" }] +]); + +const Github = createLucideIcon("GithubIcon", [ + [ + "path", + { + d: "M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4", + key: "tonef" + } + ], + ["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }] +]); + +const Gitlab = createLucideIcon("GitlabIcon", [ + [ + "path", + { + d: "m22 13.29-3.33-10a.42.42 0 0 0-.14-.18.38.38 0 0 0-.22-.11.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18l-2.26 6.67H8.32L6.1 3.26a.42.42 0 0 0-.1-.18.38.38 0 0 0-.26-.08.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18L2 13.29a.74.74 0 0 0 .27.83L12 21l9.69-6.88a.71.71 0 0 0 .31-.83Z", + key: "148pdi" + } + ] +]); + +const GlassWater = createLucideIcon("GlassWaterIcon", [ + [ + "path", + { + d: "M5.116 4.104A1 1 0 0 1 6.11 3h11.78a1 1 0 0 1 .994 1.105L17.19 20.21A2 2 0 0 1 15.2 22H8.8a2 2 0 0 1-2-1.79z", + key: "p55z4y" + } + ], + ["path", { d: "M6 12a5 5 0 0 1 6 0 5 5 0 0 0 6 0", key: "mjntcy" }] +]); + +const Glasses = createLucideIcon("GlassesIcon", [ + ["circle", { cx: "6", cy: "15", r: "4", key: "vux9w4" }], + ["circle", { cx: "18", cy: "15", r: "4", key: "18o8ve" }], + ["path", { d: "M14 15a2 2 0 0 0-2-2 2 2 0 0 0-2 2", key: "1ag4bs" }], + ["path", { d: "M2.5 13 5 7c.7-1.3 1.4-2 3-2", key: "1hm1gs" }], + ["path", { d: "M21.5 13 19 7c-.7-1.3-1.5-2-3-2", key: "1r31ai" }] +]); + +const GlobeLock = createLucideIcon("GlobeLockIcon", [ + [ + "path", + { + d: "M15.686 15A14.5 14.5 0 0 1 12 22a14.5 14.5 0 0 1 0-20 10 10 0 1 0 9.542 13", + key: "qkt0x6" + } + ], + ["path", { d: "M2 12h8.5", key: "ovaggd" }], + ["path", { d: "M20 6V4a2 2 0 1 0-4 0v2", key: "1of5e8" }], + ["rect", { width: "8", height: "5", x: "14", y: "6", rx: "1", key: "1fmf51" }] +]); + +const Globe = createLucideIcon("GlobeIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }], + ["path", { d: "M2 12h20", key: "9i4pu4" }] +]); + +const Goal = createLucideIcon("GoalIcon", [ + ["path", { d: "M12 13V2l8 4-8 4", key: "5wlwwj" }], + ["path", { d: "M20.561 10.222a9 9 0 1 1-12.55-5.29", key: "1c0wjv" }], + ["path", { d: "M8.002 9.997a5 5 0 1 0 8.9 2.02", key: "gb1g7m" }] +]); + +const Grab = createLucideIcon("GrabIcon", [ + ["path", { d: "M18 11.5V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4", key: "edstyy" }], + ["path", { d: "M14 10V8a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2", key: "19wdwo" }], + ["path", { d: "M10 9.9V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v5", key: "1lugqo" }], + ["path", { d: "M6 14a2 2 0 0 0-2-2a2 2 0 0 0-2 2", key: "1hbeus" }], + [ + "path", + { d: "M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-4a8 8 0 0 1-8-8 2 2 0 1 1 4 0", key: "1etffm" } + ] +]); + +const GraduationCap = createLucideIcon("GraduationCapIcon", [ + [ + "path", + { + d: "M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z", + key: "j76jl0" + } + ], + ["path", { d: "M22 10v6", key: "1lu8f3" }], + ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }] +]); + +const Grape = createLucideIcon("GrapeIcon", [ + ["path", { d: "M22 5V2l-5.89 5.89", key: "1eenpo" }], + ["circle", { cx: "16.6", cy: "15.89", r: "3", key: "xjtalx" }], + ["circle", { cx: "8.11", cy: "7.4", r: "3", key: "u2fv6i" }], + ["circle", { cx: "12.35", cy: "11.65", r: "3", key: "i6i8g7" }], + ["circle", { cx: "13.91", cy: "5.85", r: "3", key: "6ye0dv" }], + ["circle", { cx: "18.15", cy: "10.09", r: "3", key: "snx9no" }], + ["circle", { cx: "6.56", cy: "13.2", r: "3", key: "17x4xg" }], + ["circle", { cx: "10.8", cy: "17.44", r: "3", key: "1hogw9" }], + ["circle", { cx: "5", cy: "19", r: "3", key: "1sn6vo" }] +]); + +const Grid2x2Check = createLucideIcon("Grid2x2CheckIcon", [ + [ + "path", + { + d: "M12 3v17a1 1 0 0 1-1 1H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a1 1 0 0 1-1 1H3", + key: "11za1p" + } + ], + ["path", { d: "m16 19 2 2 4-4", key: "1b14m6" }] +]); + +const Grid2x2Plus = createLucideIcon("Grid2x2PlusIcon", [ + [ + "path", + { + d: "M12 3v17a1 1 0 0 1-1 1H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a1 1 0 0 1-1 1H3", + key: "11za1p" + } + ], + ["path", { d: "M16 19h6", key: "xwg31i" }], + ["path", { d: "M19 22v-6", key: "qhmiwi" }] +]); + +const Grid2x2X = createLucideIcon("Grid2x2XIcon", [ + [ + "path", + { + d: "M12 3v17a1 1 0 0 1-1 1H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a1 1 0 0 1-1 1H3", + key: "11za1p" + } + ], + ["path", { d: "m16 16 5 5", key: "8tpb07" }], + ["path", { d: "m16 21 5-5", key: "193jll" }] +]); + +const Grid2x2 = createLucideIcon("Grid2x2Icon", [ + ["path", { d: "M12 3v18", key: "108xh3" }], + ["path", { d: "M3 12h18", key: "1i2n21" }], + ["rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", key: "h1oib" }] +]); + +const Grid3x3 = createLucideIcon("Grid3x3Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["path", { d: "M3 15h18", key: "5xshup" }], + ["path", { d: "M9 3v18", key: "fh3hqa" }], + ["path", { d: "M15 3v18", key: "14nvp0" }] +]); + +const GripHorizontal = createLucideIcon("GripHorizontalIcon", [ + ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }], + ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }], + ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }], + ["circle", { cx: "12", cy: "15", r: "1", key: "1e56xg" }], + ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }], + ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }] +]); + +const GripVertical = createLucideIcon("GripVerticalIcon", [ + ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }], + ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }], + ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }], + ["circle", { cx: "15", cy: "12", r: "1", key: "1tmaij" }], + ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }], + ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }] +]); + +const Grip = createLucideIcon("GripIcon", [ + ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }], + ["circle", { cx: "19", cy: "5", r: "1", key: "w8mnmm" }], + ["circle", { cx: "5", cy: "5", r: "1", key: "lttvr7" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }], + ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }], + ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }], + ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }], + ["circle", { cx: "19", cy: "19", r: "1", key: "shf9b7" }], + ["circle", { cx: "5", cy: "19", r: "1", key: "bfqh0e" }] +]); + +const Group = createLucideIcon("GroupIcon", [ + ["path", { d: "M3 7V5c0-1.1.9-2 2-2h2", key: "adw53z" }], + ["path", { d: "M17 3h2c1.1 0 2 .9 2 2v2", key: "an4l38" }], + ["path", { d: "M21 17v2c0 1.1-.9 2-2 2h-2", key: "144t0e" }], + ["path", { d: "M7 21H5c-1.1 0-2-.9-2-2v-2", key: "rtnfgi" }], + ["rect", { width: "7", height: "5", x: "7", y: "7", rx: "1", key: "1eyiv7" }], + ["rect", { width: "7", height: "5", x: "10", y: "12", rx: "1", key: "1qlmkx" }] +]); + +const Guitar = createLucideIcon("GuitarIcon", [ + ["path", { d: "m11.9 12.1 4.514-4.514", key: "109xqo" }], + [ + "path", + { + d: "M20.1 2.3a1 1 0 0 0-1.4 0l-1.114 1.114A2 2 0 0 0 17 4.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 17.828 7h1.344a2 2 0 0 0 1.414-.586L21.7 5.3a1 1 0 0 0 0-1.4z", + key: "txyc8t" + } + ], + ["path", { d: "m6 16 2 2", key: "16qmzd" }], + [ + "path", + { + d: "M8.2 9.9C8.7 8.8 9.8 8 11 8c2.8 0 5 2.2 5 5 0 1.2-.8 2.3-1.9 2.8l-.9.4A2 2 0 0 0 12 18a4 4 0 0 1-4 4c-3.3 0-6-2.7-6-6a4 4 0 0 1 4-4 2 2 0 0 0 1.8-1.2z", + key: "1u8q3z" + } + ], + ["circle", { cx: "11.5", cy: "12.5", r: ".5", fill: "currentColor", key: "16onso" }] +]); + +const Ham = createLucideIcon("HamIcon", [ + ["path", { d: "M13.144 21.144A7.274 10.445 45 1 0 2.856 10.856", key: "1k1t7q" }], + [ + "path", + { + d: "M13.144 21.144A7.274 4.365 45 0 0 2.856 10.856a7.274 4.365 45 0 0 10.288 10.288", + key: "153t1g" + } + ], + [ + "path", + { + d: "M16.565 10.435 18.6 8.4a2.501 2.501 0 1 0 1.65-4.65 2.5 2.5 0 1 0-4.66 1.66l-2.024 2.025", + key: "gzrt0n" + } + ], + ["path", { d: "m8.5 16.5-1-1", key: "otr954" }] +]); + +const Hammer = createLucideIcon("HammerIcon", [ + ["path", { d: "m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9", key: "eefl8a" }], + ["path", { d: "m18 15 4-4", key: "16gjal" }], + [ + "path", + { + d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5", + key: "b7pghm" + } + ] +]); + +const HandCoins = createLucideIcon("HandCoinsIcon", [ + ["path", { d: "M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17", key: "geh8rc" }], + [ + "path", + { + d: "m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9", + key: "1fto5m" + } + ], + ["path", { d: "m2 16 6 6", key: "1pfhp9" }], + ["circle", { cx: "16", cy: "9", r: "2.9", key: "1n0dlu" }], + ["circle", { cx: "6", cy: "5", r: "3", key: "151irh" }] +]); + +const HandHeart = createLucideIcon("HandHeartIcon", [ + ["path", { d: "M11 14h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 16", key: "1ifwr1" }], + [ + "path", + { + d: "m7 20 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9", + key: "17abbs" + } + ], + ["path", { d: "m2 15 6 6", key: "10dquu" }], + [ + "path", + { + d: "M19.5 8.5c.7-.7 1.5-1.6 1.5-2.7A2.73 2.73 0 0 0 16 4a2.78 2.78 0 0 0-5 1.8c0 1.2.8 2 1.5 2.8L16 12Z", + key: "1h3036" + } + ] +]); + +const HandHelping = createLucideIcon("HandHelpingIcon", [ + ["path", { d: "M11 12h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 14", key: "1j4xps" }], + [ + "path", + { + d: "m7 18 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9", + key: "uospg8" + } + ], + ["path", { d: "m2 13 6 6", key: "16e5sb" }] +]); + +const HandMetal = createLucideIcon("HandMetalIcon", [ + ["path", { d: "M18 12.5V10a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4", key: "wc6myp" }], + ["path", { d: "M14 11V9a2 2 0 1 0-4 0v2", key: "94qvcw" }], + ["path", { d: "M10 10.5V5a2 2 0 1 0-4 0v9", key: "m1ah89" }], + [ + "path", + { + d: "m7 15-1.76-1.76a2 2 0 0 0-2.83 2.82l3.6 3.6C7.5 21.14 9.2 22 12 22h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v5", + key: "t1skq1" + } + ] +]); + +const HandPlatter = createLucideIcon("HandPlatterIcon", [ + ["path", { d: "M12 3V2", key: "ar7q03" }], + [ + "path", + { + d: "m15.4 17.4 3.2-2.8a2 2 0 1 1 2.8 2.9l-3.6 3.3c-.7.8-1.7 1.2-2.8 1.2h-4c-1.1 0-2.1-.4-2.8-1.2l-1.302-1.464A1 1 0 0 0 6.151 19H5", + key: "n2g93r" + } + ], + ["path", { d: "M2 14h12a2 2 0 0 1 0 4h-2", key: "1o2jem" }], + ["path", { d: "M4 10h16", key: "img6z1" }], + ["path", { d: "M5 10a7 7 0 0 1 14 0", key: "1ega1o" }], + ["path", { d: "M5 14v6a1 1 0 0 1-1 1H2", key: "1hescx" }] +]); + +const Hand = createLucideIcon("HandIcon", [ + ["path", { d: "M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2", key: "1fvzgz" }], + ["path", { d: "M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2", key: "1kc0my" }], + ["path", { d: "M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8", key: "10h0bg" }], + [ + "path", + { + d: "M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15", + key: "1s1gnw" + } + ] +]); + +const Handshake = createLucideIcon("HandshakeIcon", [ + ["path", { d: "m11 17 2 2a1 1 0 1 0 3-3", key: "efffak" }], + [ + "path", + { + d: "m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4", + key: "9pr0kb" + } + ], + ["path", { d: "m21 3 1 11h-2", key: "1tisrp" }], + ["path", { d: "M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3", key: "1uvwmv" }], + ["path", { d: "M3 4h8", key: "1ep09j" }] +]); + +const HardDriveDownload = createLucideIcon("HardDriveDownloadIcon", [ + ["path", { d: "M12 2v8", key: "1q4o3n" }], + ["path", { d: "m16 6-4 4-4-4", key: "6wukr" }], + ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", key: "w68u3i" }], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "M10 18h.01", key: "h775k" }] +]); + +const HardDriveUpload = createLucideIcon("HardDriveUploadIcon", [ + ["path", { d: "m16 6-4-4-4 4", key: "13yo43" }], + ["path", { d: "M12 2v8", key: "1q4o3n" }], + ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", key: "w68u3i" }], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "M10 18h.01", key: "h775k" }] +]); + +const HardDrive = createLucideIcon("HardDriveIcon", [ + ["line", { x1: "22", x2: "2", y1: "12", y2: "12", key: "1y58io" }], + [ + "path", + { + d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z", + key: "oot6mr" + } + ], + ["line", { x1: "6", x2: "6.01", y1: "16", y2: "16", key: "sgf278" }], + ["line", { x1: "10", x2: "10.01", y1: "16", y2: "16", key: "1l4acy" }] +]); + +const HardHat = createLucideIcon("HardHatIcon", [ + ["path", { d: "M10 10V5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v5", key: "1p9q5i" }], + ["path", { d: "M14 6a6 6 0 0 1 6 6v3", key: "1hnv84" }], + ["path", { d: "M4 15v-3a6 6 0 0 1 6-6", key: "9ciidu" }], + ["rect", { x: "2", y: "15", width: "20", height: "4", rx: "1", key: "g3x8cw" }] +]); + +const Hash = createLucideIcon("HashIcon", [ + ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }], + ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }], + ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }], + ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }] +]); + +const Haze = createLucideIcon("HazeIcon", [ + ["path", { d: "m5.2 6.2 1.4 1.4", key: "17imol" }], + ["path", { d: "M2 13h2", key: "13gyu8" }], + ["path", { d: "M20 13h2", key: "16rner" }], + ["path", { d: "m17.4 7.6 1.4-1.4", key: "t4xlah" }], + ["path", { d: "M22 17H2", key: "1gtaj3" }], + ["path", { d: "M22 21H2", key: "1gy6en" }], + ["path", { d: "M16 13a4 4 0 0 0-8 0", key: "1dyczq" }], + ["path", { d: "M12 5V2.5", key: "1vytko" }] +]); + +const HdmiPort = createLucideIcon("HdmiPortIcon", [ + [ + "path", + { + d: "M22 9a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1l2 2h12l2-2h1a1 1 0 0 0 1-1Z", + key: "2128wb" + } + ], + ["path", { d: "M7.5 12h9", key: "1t0ckc" }] +]); + +const Heading1 = createLucideIcon("Heading1Icon", [ + ["path", { d: "M4 12h8", key: "17cfdx" }], + ["path", { d: "M4 18V6", key: "1rz3zl" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }], + ["path", { d: "m17 12 3-2v8", key: "1hhhft" }] +]); + +const Heading2 = createLucideIcon("Heading2Icon", [ + ["path", { d: "M4 12h8", key: "17cfdx" }], + ["path", { d: "M4 18V6", key: "1rz3zl" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }], + ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }] +]); + +const Heading3 = createLucideIcon("Heading3Icon", [ + ["path", { d: "M4 12h8", key: "17cfdx" }], + ["path", { d: "M4 18V6", key: "1rz3zl" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }], + ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }], + ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }] +]); + +const Heading4 = createLucideIcon("Heading4Icon", [ + ["path", { d: "M12 18V6", key: "zqpxq5" }], + ["path", { d: "M17 10v3a1 1 0 0 0 1 1h3", key: "tj5zdr" }], + ["path", { d: "M21 10v8", key: "1kdml4" }], + ["path", { d: "M4 12h8", key: "17cfdx" }], + ["path", { d: "M4 18V6", key: "1rz3zl" }] +]); + +const Heading5 = createLucideIcon("Heading5Icon", [ + ["path", { d: "M4 12h8", key: "17cfdx" }], + ["path", { d: "M4 18V6", key: "1rz3zl" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }], + ["path", { d: "M17 13v-3h4", key: "1nvgqp" }], + [ + "path", + { d: "M17 17.7c.4.2.8.3 1.3.3 1.5 0 2.7-1.1 2.7-2.5S19.8 13 18.3 13H17", key: "2nebdn" } + ] +]); + +const Heading6 = createLucideIcon("Heading6Icon", [ + ["path", { d: "M4 12h8", key: "17cfdx" }], + ["path", { d: "M4 18V6", key: "1rz3zl" }], + ["path", { d: "M12 18V6", key: "zqpxq5" }], + ["circle", { cx: "19", cy: "16", r: "2", key: "15mx69" }], + ["path", { d: "M20 10c-2 2-3 3.5-3 6", key: "f35dl0" }] +]); + +const Heading = createLucideIcon("HeadingIcon", [ + ["path", { d: "M6 12h12", key: "8npq4p" }], + ["path", { d: "M6 20V4", key: "1w1bmo" }], + ["path", { d: "M18 20V4", key: "o2hl4u" }] +]); + +const HeadphoneOff = createLucideIcon("HeadphoneOffIcon", [ + ["path", { d: "M21 14h-1.343", key: "1jdnxi" }], + ["path", { d: "M9.128 3.47A9 9 0 0 1 21 12v3.343", key: "6kipu2" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M20.414 20.414A2 2 0 0 1 19 21h-1a2 2 0 0 1-2-2v-3", key: "9x50f4" }], + [ + "path", + { + d: "M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 2.636-6.364", + key: "1bkxnm" + } + ] +]); + +const Headphones = createLucideIcon("HeadphonesIcon", [ + [ + "path", + { + d: "M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3", + key: "1xhozi" + } + ] +]); + +const Headset = createLucideIcon("HeadsetIcon", [ + [ + "path", + { + d: "M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z", + key: "12oyoe" + } + ], + ["path", { d: "M21 16v2a4 4 0 0 1-4 4h-5", key: "1x7m43" }] +]); + +const HeartCrack = createLucideIcon("HeartCrackIcon", [ + [ + "path", + { + d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z", + key: "c3ymky" + } + ], + ["path", { d: "m12 13-1-1 2-2-3-3 2-2", key: "xjdxli" }] +]); + +const HeartHandshake = createLucideIcon("HeartHandshakeIcon", [ + [ + "path", + { + d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z", + key: "c3ymky" + } + ], + [ + "path", + { + d: "M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66", + key: "4oyue0" + } + ], + ["path", { d: "m18 15-2-2", key: "60u0ii" }], + ["path", { d: "m15 18-2-2", key: "6p76be" }] +]); + +const HeartOff = createLucideIcon("HeartOffIcon", [ + ["line", { x1: "2", y1: "2", x2: "22", y2: "22", key: "1w4vcy" }], + [ + "path", + { d: "M16.5 16.5 12 21l-7-7c-1.5-1.45-3-3.2-3-5.5a5.5 5.5 0 0 1 2.14-4.35", key: "3mpagl" } + ], + [ + "path", + { + d: "M8.76 3.1c1.15.22 2.13.78 3.24 1.9 1.5-1.5 2.74-2 4.5-2A5.5 5.5 0 0 1 22 8.5c0 2.12-1.3 3.78-2.67 5.17", + key: "1gh3v3" + } + ] +]); + +const HeartPulse = createLucideIcon("HeartPulseIcon", [ + [ + "path", + { + d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z", + key: "c3ymky" + } + ], + ["path", { d: "M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27", key: "1uw2ng" }] +]); + +const Heart = createLucideIcon("HeartIcon", [ + [ + "path", + { + d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z", + key: "c3ymky" + } + ] +]); + +const Heater = createLucideIcon("HeaterIcon", [ + ["path", { d: "M11 8c2-3-2-3 0-6", key: "1ldv5m" }], + ["path", { d: "M15.5 8c2-3-2-3 0-6", key: "1otqoz" }], + ["path", { d: "M6 10h.01", key: "1lbq93" }], + ["path", { d: "M6 14h.01", key: "zudwn7" }], + ["path", { d: "M10 16v-4", key: "1c25yv" }], + ["path", { d: "M14 16v-4", key: "1dkbt8" }], + ["path", { d: "M18 16v-4", key: "1yg9me" }], + [ + "path", + { d: "M20 6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3", key: "1ubg90" } + ], + ["path", { d: "M5 20v2", key: "1abpe8" }], + ["path", { d: "M19 20v2", key: "kqn6ft" }] +]); + +const Hexagon = createLucideIcon("HexagonIcon", [ + [ + "path", + { + d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z", + key: "yt0hxn" + } + ] +]); + +const Highlighter = createLucideIcon("HighlighterIcon", [ + ["path", { d: "m9 11-6 6v3h9l3-3", key: "1a3l36" }], + ["path", { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4", key: "14a9rk" }] +]); + +const History = createLucideIcon("HistoryIcon", [ + ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }], + ["path", { d: "M3 3v5h5", key: "1xhq8a" }], + ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }] +]); + +const HopOff = createLucideIcon("HopOffIcon", [ + ["path", { d: "M10.82 16.12c1.69.6 3.91.79 5.18.85.28.01.53-.09.7-.27", key: "qyzcap" }], + [ + "path", + { + d: "M11.14 20.57c.52.24 2.44 1.12 4.08 1.37.46.06.86-.25.9-.71.12-1.52-.3-3.43-.5-4.28", + key: "y078lb" + } + ], + ["path", { d: "M16.13 21.05c1.65.63 3.68.84 4.87.91a.9.9 0 0 0 .7-.26", key: "1utre3" }], + [ + "path", + { + d: "M17.99 5.52a20.83 20.83 0 0 1 3.15 4.5.8.8 0 0 1-.68 1.13c-1.17.1-2.5.02-3.9-.25", + key: "17o9hm" + } + ], + ["path", { d: "M20.57 11.14c.24.52 1.12 2.44 1.37 4.08.04.3-.08.59-.31.75", key: "1d1n4p" }], + [ + "path", + { + d: "M4.93 4.93a10 10 0 0 0-.67 13.4c.35.43.96.4 1.17-.12.69-1.71 1.07-5.07 1.07-6.71 1.34.45 3.1.9 4.88.62a.85.85 0 0 0 .48-.24", + key: "9uv3tt" + } + ], + [ + "path", + { + d: "M5.52 17.99c1.05.95 2.91 2.42 4.5 3.15a.8.8 0 0 0 1.13-.68c.2-2.34-.33-5.3-1.57-8.28", + key: "1292wz" + } + ], + [ + "path", + { + d: "M8.35 2.68a10 10 0 0 1 9.98 1.58c.43.35.4.96-.12 1.17-1.5.6-4.3.98-6.07 1.05", + key: "7ozu9p" + } + ], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Hop = createLucideIcon("HopIcon", [ + [ + "path", + { + d: "M10.82 16.12c1.69.6 3.91.79 5.18.85.55.03 1-.42.97-.97-.06-1.27-.26-3.5-.85-5.18", + key: "18lxf1" + } + ], + [ + "path", + { + d: "M11.5 6.5c1.64 0 5-.38 6.71-1.07.52-.2.55-.82.12-1.17A10 10 0 0 0 4.26 18.33c.35.43.96.4 1.17-.12.69-1.71 1.07-5.07 1.07-6.71 1.34.45 3.1.9 4.88.62a.88.88 0 0 0 .73-.74c.3-2.14-.15-3.5-.61-4.88", + key: "vtfxrw" + } + ], + [ + "path", + { + d: "M15.62 16.95c.2.85.62 2.76.5 4.28a.77.77 0 0 1-.9.7 16.64 16.64 0 0 1-4.08-1.36", + key: "13hl71" + } + ], + [ + "path", + { + d: "M16.13 21.05c1.65.63 3.68.84 4.87.91a.9.9 0 0 0 .96-.96 17.68 17.68 0 0 0-.9-4.87", + key: "1sl8oj" + } + ], + [ + "path", + { + d: "M16.94 15.62c.86.2 2.77.62 4.29.5a.77.77 0 0 0 .7-.9 16.64 16.64 0 0 0-1.36-4.08", + key: "19c6kt" + } + ], + [ + "path", + { + d: "M17.99 5.52a20.82 20.82 0 0 1 3.15 4.5.8.8 0 0 1-.68 1.13c-2.33.2-5.3-.32-8.27-1.57", + key: "85ghs3" + } + ], + ["path", { d: "M4.93 4.93 3 3a.7.7 0 0 1 0-1", key: "x087yj" }], + [ + "path", + { + d: "M9.58 12.18c1.24 2.98 1.77 5.95 1.57 8.28a.8.8 0 0 1-1.13.68 20.82 20.82 0 0 1-4.5-3.15", + key: "11xdqo" + } + ] +]); + +const Hospital = createLucideIcon("HospitalIcon", [ + ["path", { d: "M12 6v4", key: "16clxf" }], + ["path", { d: "M14 14h-4", key: "esezmu" }], + ["path", { d: "M14 18h-4", key: "16mqa2" }], + ["path", { d: "M14 8h-4", key: "z8ypaz" }], + [ + "path", + { + d: "M18 12h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2h2", + key: "b1k337" + } + ], + ["path", { d: "M18 22V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v18", key: "16g51d" }] +]); + +const Hotel = createLucideIcon("HotelIcon", [ + ["path", { d: "M10 22v-6.57", key: "1wmca3" }], + ["path", { d: "M12 11h.01", key: "z322tv" }], + ["path", { d: "M12 7h.01", key: "1ivr5q" }], + ["path", { d: "M14 15.43V22", key: "1q2vjd" }], + ["path", { d: "M15 16a5 5 0 0 0-6 0", key: "o9wqvi" }], + ["path", { d: "M16 11h.01", key: "xkw8gn" }], + ["path", { d: "M16 7h.01", key: "1kdx03" }], + ["path", { d: "M8 11h.01", key: "1dfujw" }], + ["path", { d: "M8 7h.01", key: "1vti4s" }], + ["rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", key: "1uxh74" }] +]); + +const Hourglass = createLucideIcon("HourglassIcon", [ + ["path", { d: "M5 22h14", key: "ehvnwv" }], + ["path", { d: "M5 2h14", key: "pdyrp9" }], + [ + "path", + { + d: "M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22", + key: "1d314k" + } + ], + [ + "path", + { d: "M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2", key: "1vvvr6" } + ] +]); + +const HousePlug = createLucideIcon("HousePlugIcon", [ + ["path", { d: "M10 12V8.964", key: "1vll13" }], + ["path", { d: "M14 12V8.964", key: "1x3qvg" }], + [ + "path", + { d: "M15 12a1 1 0 0 1 1 1v2a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-2a1 1 0 0 1 1-1z", key: "ppykja" } + ], + [ + "path", + { + d: "M8.5 21H5a2 2 0 0 1-2-2v-9a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2h-5a2 2 0 0 1-2-2v-2", + key: "1gvg2z" + } + ] +]); + +const HousePlus = createLucideIcon("HousePlusIcon", [ + [ + "path", + { + d: "M13.22 2.416a2 2 0 0 0-2.511.057l-7 5.999A2 2 0 0 0 3 10v9a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7.354", + key: "5phn05" + } + ], + ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }], + ["path", { d: "M15 6h6", key: "1jlkvy" }], + ["path", { d: "M18 3v6", key: "x1uolp" }] +]); + +const HouseWifi = createLucideIcon("HouseWifiIcon", [ + ["path", { d: "M9.5 13.866a4 4 0 0 1 5 .01", key: "1wy54i" }], + ["path", { d: "M12 17h.01", key: "p32p05" }], + [ + "path", + { + d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z", + key: "1d0kgt" + } + ], + ["path", { d: "M7 10.754a8 8 0 0 1 10 0", key: "exoy2g" }] +]); + +const House = createLucideIcon("HouseIcon", [ + ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }], + [ + "path", + { + d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z", + key: "1d0kgt" + } + ] +]); + +const IceCreamBowl = createLucideIcon("IceCreamBowlIcon", [ + [ + "path", + { + d: "M12 17c5 0 8-2.69 8-6H4c0 3.31 3 6 8 6m-4 4h8m-4-3v3M5.14 11a3.5 3.5 0 1 1 6.71 0", + key: "1uxfcu" + } + ], + ["path", { d: "M12.14 11a3.5 3.5 0 1 1 6.71 0", key: "4k3m1s" }], + ["path", { d: "M15.5 6.5a3.5 3.5 0 1 0-7 0", key: "zmuahr" }] +]); + +const IceCreamCone = createLucideIcon("IceCreamConeIcon", [ + ["path", { d: "m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11", key: "1v6356" }], + ["path", { d: "M17 7A5 5 0 0 0 7 7", key: "151p3v" }], + ["path", { d: "M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4", key: "1sdaij" }] +]); + +const IdCard = createLucideIcon("IdCardIcon", [ + ["path", { d: "M16 10h2", key: "8sgtl7" }], + ["path", { d: "M16 14h2", key: "epxaof" }], + ["path", { d: "M6.17 15a3 3 0 0 1 5.66 0", key: "n6f512" }], + ["circle", { cx: "9", cy: "11", r: "2", key: "yxgjnd" }], + ["rect", { x: "2", y: "5", width: "20", height: "14", rx: "2", key: "qneu4z" }] +]); + +const ImageDown = createLucideIcon("ImageDownIcon", [ + [ + "path", + { + d: "M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21", + key: "9csbqa" + } + ], + ["path", { d: "m14 19 3 3v-5.5", key: "9ldu5r" }], + ["path", { d: "m17 22 3-3", key: "1nkfve" }], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }] +]); + +const ImageMinus = createLucideIcon("ImageMinusIcon", [ + ["path", { d: "M21 9v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7", key: "m87ecr" }], + ["line", { x1: "16", x2: "22", y1: "5", y2: "5", key: "ez7e4s" }], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }], + ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }] +]); + +const ImageOff = createLucideIcon("ImageOffIcon", [ + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }], + ["path", { d: "M10.41 10.41a2 2 0 1 1-2.83-2.83", key: "1bzlo9" }], + ["line", { x1: "13.5", x2: "6", y1: "13.5", y2: "21", key: "1q0aeu" }], + ["line", { x1: "18", x2: "21", y1: "12", y2: "15", key: "5mozeu" }], + [ + "path", + { + d: "M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59", + key: "mmje98" + } + ], + ["path", { d: "M21 15V5a2 2 0 0 0-2-2H9", key: "43el77" }] +]); + +const ImagePlay = createLucideIcon("ImagePlayIcon", [ + ["path", { d: "m11 16-5 5", key: "j5f7ct" }], + ["path", { d: "M11 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6.5", key: "7s81lt" }], + [ + "path", + { + d: "M15.765 22a.5.5 0 0 1-.765-.424V13.38a.5.5 0 0 1 .765-.424l5.878 3.674a1 1 0 0 1 0 1.696z", + key: "1omb6s" + } + ], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }] +]); + +const ImagePlus = createLucideIcon("ImagePlusIcon", [ + ["path", { d: "M16 5h6", key: "1vod17" }], + ["path", { d: "M19 2v6", key: "4bpg5p" }], + ["path", { d: "M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5", key: "1ue2ih" }], + ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }] +]); + +const ImageUp = createLucideIcon("ImageUpIcon", [ + [ + "path", + { + d: "M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21", + key: "9csbqa" + } + ], + ["path", { d: "m14 19.5 3-3 3 3", key: "9vmjn0" }], + ["path", { d: "M17 22v-5.5", key: "1aa6fl" }], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }] +]); + +const ImageUpscale = createLucideIcon("ImageUpscaleIcon", [ + ["path", { d: "M16 3h5v5", key: "1806ms" }], + ["path", { d: "M17 21h2a2 2 0 0 0 2-2", key: "130fy9" }], + ["path", { d: "M21 12v3", key: "1wzk3p" }], + ["path", { d: "m21 3-5 5", key: "1g5oa7" }], + ["path", { d: "M3 7V5a2 2 0 0 1 2-2", key: "kk3yz1" }], + ["path", { d: "m5 21 4.144-4.144a1.21 1.21 0 0 1 1.712 0L13 19", key: "fyekpt" }], + ["path", { d: "M9 3h3", key: "d52fa" }], + ["rect", { x: "3", y: "11", width: "10", height: "10", rx: "1", key: "1wpmix" }] +]); + +const Image = createLucideIcon("ImageIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }], + ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }] +]); + +const Images = createLucideIcon("ImagesIcon", [ + ["path", { d: "M18 22H4a2 2 0 0 1-2-2V6", key: "pblm9e" }], + ["path", { d: "m22 13-1.296-1.296a2.41 2.41 0 0 0-3.408 0L11 18", key: "nf6bnh" }], + ["circle", { cx: "12", cy: "8", r: "2", key: "1822b1" }], + ["rect", { width: "16", height: "16", x: "6", y: "2", rx: "2", key: "12espp" }] +]); + +const Import = createLucideIcon("ImportIcon", [ + ["path", { d: "M12 3v12", key: "1x0j5s" }], + ["path", { d: "m8 11 4 4 4-4", key: "1dohi6" }], + [ + "path", + { + d: "M8 5H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4", + key: "1ywtjm" + } + ] +]); + +const Inbox = createLucideIcon("InboxIcon", [ + ["polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12", key: "o97t9d" }], + [ + "path", + { + d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z", + key: "oot6mr" + } + ] +]); + +const IndentDecrease = createLucideIcon("IndentDecreaseIcon", [ + ["path", { d: "M21 12H11", key: "wd7e0v" }], + ["path", { d: "M21 18H11", key: "4wu86t" }], + ["path", { d: "M21 6H11", key: "6dy1d6" }], + ["path", { d: "m7 8-4 4 4 4", key: "o5hrat" }] +]); + +const IndentIncrease = createLucideIcon("IndentIncreaseIcon", [ + ["path", { d: "M21 12H11", key: "wd7e0v" }], + ["path", { d: "M21 18H11", key: "4wu86t" }], + ["path", { d: "M21 6H11", key: "6dy1d6" }], + ["path", { d: "m3 8 4 4-4 4", key: "1a3j6y" }] +]); + +const IndianRupee = createLucideIcon("IndianRupeeIcon", [ + ["path", { d: "M6 3h12", key: "ggurg9" }], + ["path", { d: "M6 8h12", key: "6g4wlu" }], + ["path", { d: "m6 13 8.5 8", key: "u1kupk" }], + ["path", { d: "M6 13h3", key: "wdp6ag" }], + ["path", { d: "M9 13c6.667 0 6.667-10 0-10", key: "1nkvk2" }] +]); + +const Infinity = createLucideIcon("InfinityIcon", [ + [ + "path", + { + d: "M12 12c-2-2.67-4-4-6-4a4 4 0 1 0 0 8c2 0 4-1.33 6-4Zm0 0c2 2.67 4 4 6 4a4 4 0 0 0 0-8c-2 0-4 1.33-6 4Z", + key: "1z0uae" + } + ] +]); + +const Info = createLucideIcon("InfoIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M12 16v-4", key: "1dtifu" }], + ["path", { d: "M12 8h.01", key: "e9boi3" }] +]); + +const InspectionPanel = createLucideIcon("InspectionPanelIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7 7h.01", key: "7u93v4" }], + ["path", { d: "M17 7h.01", key: "14a9sn" }], + ["path", { d: "M7 17h.01", key: "19xn7k" }], + ["path", { d: "M17 17h.01", key: "1sd3ek" }] +]); + +const Instagram = createLucideIcon("InstagramIcon", [ + ["rect", { width: "20", height: "20", x: "2", y: "2", rx: "5", ry: "5", key: "2e1cvw" }], + ["path", { d: "M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z", key: "9exkf1" }], + ["line", { x1: "17.5", x2: "17.51", y1: "6.5", y2: "6.5", key: "r4j83e" }] +]); + +const Italic = createLucideIcon("ItalicIcon", [ + ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }], + ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }], + ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }] +]); + +const IterationCcw = createLucideIcon("IterationCcwIcon", [ + ["path", { d: "M20 10c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8h8", key: "4znkd0" }], + ["polyline", { points: "16 14 20 18 16 22", key: "11njsm" }] +]); + +const IterationCw = createLucideIcon("IterationCwIcon", [ + ["path", { d: "M4 10c0-4.4 3.6-8 8-8s8 3.6 8 8-3.6 8-8 8H4", key: "tuf4su" }], + ["polyline", { points: "8 22 4 18 8 14", key: "evkj9s" }] +]); + +const JapaneseYen = createLucideIcon("JapaneseYenIcon", [ + ["path", { d: "M12 9.5V21m0-11.5L6 3m6 6.5L18 3", key: "2ej80x" }], + ["path", { d: "M6 15h12", key: "1hwgt5" }], + ["path", { d: "M6 11h12", key: "wf4gp6" }] +]); + +const Joystick = createLucideIcon("JoystickIcon", [ + [ + "path", + { + d: "M21 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2Z", + key: "jg2n2t" + } + ], + ["path", { d: "M6 15v-2", key: "gd6mvg" }], + ["path", { d: "M12 15V9", key: "8c7uyn" }], + ["circle", { cx: "12", cy: "6", r: "3", key: "1gm2ql" }] +]); + +const Kanban = createLucideIcon("KanbanIcon", [ + ["path", { d: "M6 5v11", key: "mdvv1e" }], + ["path", { d: "M12 5v6", key: "14ar3b" }], + ["path", { d: "M18 5v14", key: "7ji314" }] +]); + +const KeyRound = createLucideIcon("KeyRoundIcon", [ + [ + "path", + { + d: "M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z", + key: "1s6t7t" + } + ], + ["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }] +]); + +const KeySquare = createLucideIcon("KeySquareIcon", [ + [ + "path", + { + d: "M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z", + key: "165ttr" + } + ], + ["path", { d: "m14 7 3 3", key: "1r5n42" }], + [ + "path", + { + d: "m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814", + key: "1ubxi2" + } + ] +]); + +const Key = createLucideIcon("KeyIcon", [ + ["path", { d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4", key: "g0fldk" }], + ["path", { d: "m21 2-9.6 9.6", key: "1j0ho8" }], + ["circle", { cx: "7.5", cy: "15.5", r: "5.5", key: "yqb3hr" }] +]); + +const KeyboardMusic = createLucideIcon("KeyboardMusicIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "M6 8h4", key: "utf9t1" }], + ["path", { d: "M14 8h.01", key: "1primd" }], + ["path", { d: "M18 8h.01", key: "emo2bl" }], + ["path", { d: "M2 12h20", key: "9i4pu4" }], + ["path", { d: "M6 12v4", key: "dy92yo" }], + ["path", { d: "M10 12v4", key: "1fxnav" }], + ["path", { d: "M14 12v4", key: "1hft58" }], + ["path", { d: "M18 12v4", key: "tjjnbz" }] +]); + +const KeyboardOff = createLucideIcon("KeyboardOffIcon", [ + ["path", { d: "M 20 4 A2 2 0 0 1 22 6", key: "1g1fkt" }], + ["path", { d: "M 22 6 L 22 16.41", key: "1qjg3w" }], + ["path", { d: "M 7 16 L 16 16", key: "n0yqwb" }], + ["path", { d: "M 9.69 4 L 20 4", key: "kbpcgx" }], + ["path", { d: "M14 8h.01", key: "1primd" }], + ["path", { d: "M18 8h.01", key: "emo2bl" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M20 20H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2", key: "s23sx2" }], + ["path", { d: "M6 8h.01", key: "x9i8wu" }], + ["path", { d: "M8 12h.01", key: "czm47f" }] +]); + +const Keyboard = createLucideIcon("KeyboardIcon", [ + ["path", { d: "M10 8h.01", key: "1r9ogq" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M14 8h.01", key: "1primd" }], + ["path", { d: "M16 12h.01", key: "1l6xoz" }], + ["path", { d: "M18 8h.01", key: "emo2bl" }], + ["path", { d: "M6 8h.01", key: "x9i8wu" }], + ["path", { d: "M7 16h10", key: "wp8him" }], + ["path", { d: "M8 12h.01", key: "czm47f" }], + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }] +]); + +const LampCeiling = createLucideIcon("LampCeilingIcon", [ + ["path", { d: "M12 2v5", key: "nd4vlx" }], + ["path", { d: "M6 7h12l4 9H2l4-9Z", key: "123d64" }], + ["path", { d: "M9.17 16a3 3 0 1 0 5.66 0", key: "1061mw" }] +]); + +const LampDesk = createLucideIcon("LampDeskIcon", [ + ["path", { d: "m14 5-3 3 2 7 8-8-7-2Z", key: "1b0msb" }], + ["path", { d: "m14 5-3 3-3-3 3-3 3 3Z", key: "1uemms" }], + ["path", { d: "M9.5 6.5 4 12l3 6", key: "1bx08v" }], + ["path", { d: "M3 22v-2c0-1.1.9-2 2-2h4a2 2 0 0 1 2 2v2H3Z", key: "wap775" }] +]); + +const LampFloor = createLucideIcon("LampFloorIcon", [ + ["path", { d: "M9 2h6l3 7H6l3-7Z", key: "wcx6mj" }], + ["path", { d: "M12 9v13", key: "3n1su1" }], + ["path", { d: "M9 22h6", key: "1rlq3v" }] +]); + +const LampWallDown = createLucideIcon("LampWallDownIcon", [ + ["path", { d: "M11 13h6l3 7H8l3-7Z", key: "9n3qlo" }], + ["path", { d: "M14 13V8a2 2 0 0 0-2-2H8", key: "1hu4hb" }], + ["path", { d: "M4 9h2a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H4v6Z", key: "s053bc" }] +]); + +const LampWallUp = createLucideIcon("LampWallUpIcon", [ + ["path", { d: "M11 4h6l3 7H8l3-7Z", key: "11x1ee" }], + ["path", { d: "M14 11v5a2 2 0 0 1-2 2H8", key: "eutp5o" }], + ["path", { d: "M4 15h2a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H4v-6Z", key: "1iuthr" }] +]); + +const Lamp = createLucideIcon("LampIcon", [ + ["path", { d: "M8 2h8l4 10H4L8 2Z", key: "9dma5w" }], + ["path", { d: "M12 12v6", key: "3ahymv" }], + ["path", { d: "M8 22v-2c0-1.1.9-2 2-2h4a2 2 0 0 1 2 2v2H8Z", key: "mwf4oh" }] +]); + +const LandPlot = createLucideIcon("LandPlotIcon", [ + ["path", { d: "m12 8 6-3-6-3v10", key: "mvpnpy" }], + [ + "path", + { + d: "m8 11.99-5.5 3.14a1 1 0 0 0 0 1.74l8.5 4.86a2 2 0 0 0 2 0l8.5-4.86a1 1 0 0 0 0-1.74L16 12", + key: "ek95tt" + } + ], + ["path", { d: "m6.49 12.85 11.02 6.3", key: "1kt42w" }], + ["path", { d: "M17.51 12.85 6.5 19.15", key: "v55bdg" }] +]); + +const Landmark = createLucideIcon("LandmarkIcon", [ + ["line", { x1: "3", x2: "21", y1: "22", y2: "22", key: "j8o0r" }], + ["line", { x1: "6", x2: "6", y1: "18", y2: "11", key: "10tf0k" }], + ["line", { x1: "10", x2: "10", y1: "18", y2: "11", key: "54lgf6" }], + ["line", { x1: "14", x2: "14", y1: "18", y2: "11", key: "380y" }], + ["line", { x1: "18", x2: "18", y1: "18", y2: "11", key: "1kevvc" }], + ["polygon", { points: "12 2 20 7 4 7", key: "jkujk7" }] +]); + +const Languages = createLucideIcon("LanguagesIcon", [ + ["path", { d: "m5 8 6 6", key: "1wu5hv" }], + ["path", { d: "m4 14 6-6 2-3", key: "1k1g8d" }], + ["path", { d: "M2 5h12", key: "or177f" }], + ["path", { d: "M7 2h1", key: "1t2jsx" }], + ["path", { d: "m22 22-5-10-5 10", key: "don7ne" }], + ["path", { d: "M14 18h6", key: "1m8k6r" }] +]); + +const LaptopMinimalCheck = createLucideIcon("LaptopMinimalCheckIcon", [ + ["path", { d: "M2 20h20", key: "owomy5" }], + ["path", { d: "m9 10 2 2 4-4", key: "1gnqz4" }], + ["rect", { x: "3", y: "4", width: "18", height: "12", rx: "2", key: "8ur36m" }] +]); + +const LaptopMinimal = createLucideIcon("LaptopMinimalIcon", [ + ["rect", { width: "18", height: "12", x: "3", y: "4", rx: "2", ry: "2", key: "1qhy41" }], + ["line", { x1: "2", x2: "22", y1: "20", y2: "20", key: "ni3hll" }] +]); + +const Laptop = createLucideIcon("LaptopIcon", [ + [ + "path", + { + d: "M20 16V7a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v9m16 0H4m16 0 1.28 2.55a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45L4 16", + key: "tarvll" + } + ] +]); + +const LassoSelect = createLucideIcon("LassoSelectIcon", [ + ["path", { d: "M7 22a5 5 0 0 1-2-4", key: "umushi" }], + ["path", { d: "M7 16.93c.96.43 1.96.74 2.99.91", key: "ybbtv3" }], + [ + "path", + { + d: "M3.34 14A6.8 6.8 0 0 1 2 10c0-4.42 4.48-8 10-8s10 3.58 10 8a7.19 7.19 0 0 1-.33 2", + key: "gt5e1w" + } + ], + ["path", { d: "M5 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z", key: "bq3ynw" }], + [ + "path", + { + d: "M14.33 22h-.09a.35.35 0 0 1-.24-.32v-10a.34.34 0 0 1 .33-.34c.08 0 .15.03.21.08l7.34 6a.33.33 0 0 1-.21.59h-4.49l-2.57 3.85a.35.35 0 0 1-.28.14z", + key: "72q637" + } + ] +]); + +const Lasso = createLucideIcon("LassoIcon", [ + ["path", { d: "M7 22a5 5 0 0 1-2-4", key: "umushi" }], + [ + "path", + { + d: "M3.3 14A6.8 6.8 0 0 1 2 10c0-4.4 4.5-8 10-8s10 3.6 10 8-4.5 8-10 8a12 12 0 0 1-5-1", + key: "146dds" + } + ], + ["path", { d: "M5 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z", key: "bq3ynw" }] +]); + +const Laugh = createLucideIcon("LaughIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z", key: "b2q4dd" }], + ["line", { x1: "9", x2: "9.01", y1: "9", y2: "9", key: "yxxnd0" }], + ["line", { x1: "15", x2: "15.01", y1: "9", y2: "9", key: "1p4y9e" }] +]); + +const Layers2 = createLucideIcon("Layers2Icon", [ + [ + "path", + { + d: "m16.02 12 5.48 3.13a1 1 0 0 1 0 1.74L13 21.74a2 2 0 0 1-2 0l-8.5-4.87a1 1 0 0 1 0-1.74L7.98 12", + key: "1cuww1" + } + ], + [ + "path", + { + d: "M13 13.74a2 2 0 0 1-2 0L2.5 8.87a1 1 0 0 1 0-1.74L11 2.26a2 2 0 0 1 2 0l8.5 4.87a1 1 0 0 1 0 1.74Z", + key: "pdlvxu" + } + ] +]); + +const Layers = createLucideIcon("LayersIcon", [ + [ + "path", + { + d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z", + key: "zw3jo" + } + ], + [ + "path", + { + d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12", + key: "1wduqc" + } + ], + [ + "path", + { + d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17", + key: "kqbvx6" + } + ] +]); + +const LayoutDashboard = createLucideIcon("LayoutDashboardIcon", [ + ["rect", { width: "7", height: "9", x: "3", y: "3", rx: "1", key: "10lvy0" }], + ["rect", { width: "7", height: "5", x: "14", y: "3", rx: "1", key: "16une8" }], + ["rect", { width: "7", height: "9", x: "14", y: "12", rx: "1", key: "1hutg5" }], + ["rect", { width: "7", height: "5", x: "3", y: "16", rx: "1", key: "ldoo1y" }] +]); + +const LayoutGrid = createLucideIcon("LayoutGridIcon", [ + ["rect", { width: "7", height: "7", x: "3", y: "3", rx: "1", key: "1g98yp" }], + ["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }], + ["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }], + ["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }] +]); + +const LayoutList = createLucideIcon("LayoutListIcon", [ + ["rect", { width: "7", height: "7", x: "3", y: "3", rx: "1", key: "1g98yp" }], + ["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }], + ["path", { d: "M14 4h7", key: "3xa0d5" }], + ["path", { d: "M14 9h7", key: "1icrd9" }], + ["path", { d: "M14 15h7", key: "1mj8o2" }], + ["path", { d: "M14 20h7", key: "11slyb" }] +]); + +const LayoutPanelLeft = createLucideIcon("LayoutPanelLeftIcon", [ + ["rect", { width: "7", height: "18", x: "3", y: "3", rx: "1", key: "2obqm" }], + ["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }], + ["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }] +]); + +const LayoutPanelTop = createLucideIcon("LayoutPanelTopIcon", [ + ["rect", { width: "18", height: "7", x: "3", y: "3", rx: "1", key: "f1a2em" }], + ["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }], + ["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }] +]); + +const LayoutTemplate = createLucideIcon("LayoutTemplateIcon", [ + ["rect", { width: "18", height: "7", x: "3", y: "3", rx: "1", key: "f1a2em" }], + ["rect", { width: "9", height: "7", x: "3", y: "14", rx: "1", key: "jqznyg" }], + ["rect", { width: "5", height: "7", x: "16", y: "14", rx: "1", key: "q5h2i8" }] +]); + +const Leaf = createLucideIcon("LeafIcon", [ + [ + "path", + { + d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z", + key: "nnexq3" + } + ], + ["path", { d: "M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12", key: "mt58a7" }] +]); + +const LeafyGreen = createLucideIcon("LeafyGreenIcon", [ + [ + "path", + { + d: "M2 22c1.25-.987 2.27-1.975 3.9-2.2a5.56 5.56 0 0 1 3.8 1.5 4 4 0 0 0 6.187-2.353 3.5 3.5 0 0 0 3.69-5.116A3.5 3.5 0 0 0 20.95 8 3.5 3.5 0 1 0 16 3.05a3.5 3.5 0 0 0-5.831 1.373 3.5 3.5 0 0 0-5.116 3.69 4 4 0 0 0-2.348 6.155C3.499 15.42 4.409 16.712 4.2 18.1 3.926 19.743 3.014 20.732 2 22", + key: "1134nt" + } + ], + ["path", { d: "M2 22 17 7", key: "1q7jp2" }] +]); + +const Lectern = createLucideIcon("LecternIcon", [ + [ + "path", + { + d: "M16 12h3a2 2 0 0 0 1.902-1.38l1.056-3.333A1 1 0 0 0 21 6H3a1 1 0 0 0-.958 1.287l1.056 3.334A2 2 0 0 0 5 12h3", + key: "13jjxg" + } + ], + ["path", { d: "M18 6V3a1 1 0 0 0-1-1h-3", key: "1550fe" }], + ["rect", { width: "8", height: "12", x: "8", y: "10", rx: "1", key: "qmu8b6" }] +]); + +const LetterText = createLucideIcon("LetterTextIcon", [ + ["path", { d: "M15 12h6", key: "upa0zy" }], + ["path", { d: "M15 6h6", key: "1jlkvy" }], + ["path", { d: "m3 13 3.553-7.724a.5.5 0 0 1 .894 0L11 13", key: "blevx4" }], + ["path", { d: "M3 18h18", key: "1h113x" }], + ["path", { d: "M4 11h6", key: "olkgv1" }] +]); + +const LibraryBig = createLucideIcon("LibraryBigIcon", [ + ["rect", { width: "8", height: "18", x: "3", y: "3", rx: "1", key: "oynpb5" }], + ["path", { d: "M7 3v18", key: "bbkbws" }], + [ + "path", + { + d: "M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z", + key: "1qboyk" + } + ] +]); + +const Library = createLucideIcon("LibraryIcon", [ + ["path", { d: "m16 6 4 14", key: "ji33uf" }], + ["path", { d: "M12 6v14", key: "1n7gus" }], + ["path", { d: "M8 8v12", key: "1gg7y9" }], + ["path", { d: "M4 4v16", key: "6qkkli" }] +]); + +const LifeBuoy = createLucideIcon("LifeBuoyIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m4.93 4.93 4.24 4.24", key: "1ymg45" }], + ["path", { d: "m14.83 9.17 4.24-4.24", key: "1cb5xl" }], + ["path", { d: "m14.83 14.83 4.24 4.24", key: "q42g0n" }], + ["path", { d: "m9.17 14.83-4.24 4.24", key: "bqpfvv" }], + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }] +]); + +const Ligature = createLucideIcon("LigatureIcon", [ + ["path", { d: "M8 20V8c0-2.2 1.8-4 4-4 1.5 0 2.8.8 3.5 2", key: "1rtphz" }], + ["path", { d: "M6 12h4", key: "a4o3ry" }], + ["path", { d: "M14 12h2v8", key: "c1fccl" }], + ["path", { d: "M6 20h4", key: "1i6q5t" }], + ["path", { d: "M14 20h4", key: "lzx1xo" }] +]); + +const LightbulbOff = createLucideIcon("LightbulbOffIcon", [ + ["path", { d: "M16.8 11.2c.8-.9 1.2-2 1.2-3.2a6 6 0 0 0-9.3-5", key: "1fkcox" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M6.3 6.3a4.67 4.67 0 0 0 1.2 5.2c.7.7 1.3 1.5 1.5 2.5", key: "10m8kw" }], + ["path", { d: "M9 18h6", key: "x1upvd" }], + ["path", { d: "M10 22h4", key: "ceow96" }] +]); + +const Lightbulb = createLucideIcon("LightbulbIcon", [ + [ + "path", + { + d: "M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5", + key: "1gvzjb" + } + ], + ["path", { d: "M9 18h6", key: "x1upvd" }], + ["path", { d: "M10 22h4", key: "ceow96" }] +]); + +const Link2Off = createLucideIcon("Link2OffIcon", [ + ["path", { d: "M9 17H7A5 5 0 0 1 7 7", key: "10o201" }], + ["path", { d: "M15 7h2a5 5 0 0 1 4 8", key: "1d3206" }], + ["line", { x1: "8", x2: "12", y1: "12", y2: "12", key: "rvw6j4" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Link2 = createLucideIcon("Link2Icon", [ + ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }], + ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }], + ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }] +]); + +const Link = createLucideIcon("LinkIcon", [ + ["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }], + ["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }] +]); + +const Linkedin = createLucideIcon("LinkedinIcon", [ + [ + "path", + { + d: "M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z", + key: "c2jq9f" + } + ], + ["rect", { width: "4", height: "12", x: "2", y: "9", key: "mk3on5" }], + ["circle", { cx: "4", cy: "4", r: "2", key: "bt5ra8" }] +]); + +const ListCheck = createLucideIcon("ListCheckIcon", [ + ["path", { d: "M11 18H3", key: "n3j2dh" }], + ["path", { d: "m15 18 2 2 4-4", key: "1szwhi" }], + ["path", { d: "M16 12H3", key: "1a2rj7" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }] +]); + +const ListChecks = createLucideIcon("ListChecksIcon", [ + ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }], + ["path", { d: "m3 7 2 2 4-4", key: "1obspn" }], + ["path", { d: "M13 6h8", key: "15sg57" }], + ["path", { d: "M13 12h8", key: "h98zly" }], + ["path", { d: "M13 18h8", key: "oe0vm4" }] +]); + +const ListCollapse = createLucideIcon("ListCollapseIcon", [ + ["path", { d: "m3 10 2.5-2.5L3 5", key: "i6eama" }], + ["path", { d: "m3 19 2.5-2.5L3 14", key: "w2gmor" }], + ["path", { d: "M10 6h11", key: "c7qv1k" }], + ["path", { d: "M10 12h11", key: "6m4ad9" }], + ["path", { d: "M10 18h11", key: "11hvi2" }] +]); + +const ListEnd = createLucideIcon("ListEndIcon", [ + ["path", { d: "M16 12H3", key: "1a2rj7" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M10 18H3", key: "13769t" }], + ["path", { d: "M21 6v10a2 2 0 0 1-2 2h-5", key: "ilrcs8" }], + ["path", { d: "m16 16-2 2 2 2", key: "kkc6pm" }] +]); + +const ListFilterPlus = createLucideIcon("ListFilterPlusIcon", [ + ["path", { d: "M10 18h4", key: "1ulq68" }], + ["path", { d: "M11 6H3", key: "1u26ik" }], + ["path", { d: "M15 6h6", key: "1jlkvy" }], + ["path", { d: "M18 9V3", key: "xwwp7m" }], + ["path", { d: "M7 12h8", key: "7a1bxv" }] +]); + +const ListFilter = createLucideIcon("ListFilterIcon", [ + ["path", { d: "M3 6h18", key: "d0wm0j" }], + ["path", { d: "M7 12h10", key: "b7w52i" }], + ["path", { d: "M10 18h4", key: "1ulq68" }] +]); + +const ListMinus = createLucideIcon("ListMinusIcon", [ + ["path", { d: "M11 12H3", key: "51ecnj" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M16 18H3", key: "12xzn7" }], + ["path", { d: "M21 12h-6", key: "bt1uis" }] +]); + +const ListMusic = createLucideIcon("ListMusicIcon", [ + ["path", { d: "M21 15V6", key: "h1cx4g" }], + ["path", { d: "M18.5 18a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z", key: "8saifv" }], + ["path", { d: "M12 12H3", key: "18klou" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M12 18H3", key: "11ftsu" }] +]); + +const ListOrdered = createLucideIcon("ListOrderedIcon", [ + ["path", { d: "M10 12h11", key: "6m4ad9" }], + ["path", { d: "M10 18h11", key: "11hvi2" }], + ["path", { d: "M10 6h11", key: "c7qv1k" }], + ["path", { d: "M4 10h2", key: "16xx2s" }], + ["path", { d: "M4 6h1v4", key: "cnovpq" }], + ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }] +]); + +const ListPlus = createLucideIcon("ListPlusIcon", [ + ["path", { d: "M11 12H3", key: "51ecnj" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M16 18H3", key: "12xzn7" }], + ["path", { d: "M18 9v6", key: "1twb98" }], + ["path", { d: "M21 12h-6", key: "bt1uis" }] +]); + +const ListRestart = createLucideIcon("ListRestartIcon", [ + ["path", { d: "M21 6H3", key: "1jwq7v" }], + ["path", { d: "M7 12H3", key: "13ou7f" }], + ["path", { d: "M7 18H3", key: "1sijw9" }], + [ + "path", + { + d: "M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14", + key: "qth677" + } + ], + ["path", { d: "M11 10v4h4", key: "172dkj" }] +]); + +const ListStart = createLucideIcon("ListStartIcon", [ + ["path", { d: "M16 12H3", key: "1a2rj7" }], + ["path", { d: "M16 18H3", key: "12xzn7" }], + ["path", { d: "M10 6H3", key: "lf8lx7" }], + ["path", { d: "M21 18V8a2 2 0 0 0-2-2h-5", key: "1hghli" }], + ["path", { d: "m16 8-2-2 2-2", key: "160uvd" }] +]); + +const ListTodo = createLucideIcon("ListTodoIcon", [ + ["rect", { x: "3", y: "5", width: "6", height: "6", rx: "1", key: "1defrl" }], + ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }], + ["path", { d: "M13 6h8", key: "15sg57" }], + ["path", { d: "M13 12h8", key: "h98zly" }], + ["path", { d: "M13 18h8", key: "oe0vm4" }] +]); + +const ListTree = createLucideIcon("ListTreeIcon", [ + ["path", { d: "M21 12h-8", key: "1bmf0i" }], + ["path", { d: "M21 6H8", key: "1pqkrb" }], + ["path", { d: "M21 18h-8", key: "1tm79t" }], + ["path", { d: "M3 6v4c0 1.1.9 2 2 2h3", key: "1ywdgy" }], + ["path", { d: "M3 10v6c0 1.1.9 2 2 2h3", key: "2wc746" }] +]); + +const ListVideo = createLucideIcon("ListVideoIcon", [ + ["path", { d: "M12 12H3", key: "18klou" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M12 18H3", key: "11ftsu" }], + ["path", { d: "m16 12 5 3-5 3v-6Z", key: "zpskkp" }] +]); + +const ListX = createLucideIcon("ListXIcon", [ + ["path", { d: "M11 12H3", key: "51ecnj" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M16 18H3", key: "12xzn7" }], + ["path", { d: "m19 10-4 4", key: "1tz659" }], + ["path", { d: "m15 10 4 4", key: "1n7nei" }] +]); + +const List = createLucideIcon("ListIcon", [ + ["path", { d: "M3 12h.01", key: "nlz23k" }], + ["path", { d: "M3 18h.01", key: "1tta3j" }], + ["path", { d: "M3 6h.01", key: "1rqtza" }], + ["path", { d: "M8 12h13", key: "1za7za" }], + ["path", { d: "M8 18h13", key: "1lx6n3" }], + ["path", { d: "M8 6h13", key: "ik3vkj" }] +]); + +const LoaderCircle = createLucideIcon("LoaderCircleIcon", [ + ["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }] +]); + +const LoaderPinwheel = createLucideIcon("LoaderPinwheelIcon", [ + ["path", { d: "M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0", key: "1lzz15" }], + ["path", { d: "M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6", key: "1gnrpi" }], + ["path", { d: "M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6", key: "u9yy5q" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const Loader = createLucideIcon("LoaderIcon", [ + ["path", { d: "M12 2v4", key: "3427ic" }], + ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }], + ["path", { d: "M18 12h4", key: "wj9ykh" }], + ["path", { d: "m16.2 16.2 2.9 2.9", key: "1bxg5t" }], + ["path", { d: "M12 18v4", key: "jadmvz" }], + ["path", { d: "m4.9 19.1 2.9-2.9", key: "bwix9q" }], + ["path", { d: "M2 12h4", key: "j09sii" }], + ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }] +]); + +const LocateFixed = createLucideIcon("LocateFixedIcon", [ + ["line", { x1: "2", x2: "5", y1: "12", y2: "12", key: "bvdh0s" }], + ["line", { x1: "19", x2: "22", y1: "12", y2: "12", key: "1tbv5k" }], + ["line", { x1: "12", x2: "12", y1: "2", y2: "5", key: "11lu5j" }], + ["line", { x1: "12", x2: "12", y1: "19", y2: "22", key: "x3vr5v" }], + ["circle", { cx: "12", cy: "12", r: "7", key: "fim9np" }], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }] +]); + +const LocateOff = createLucideIcon("LocateOffIcon", [ + ["line", { x1: "2", x2: "5", y1: "12", y2: "12", key: "bvdh0s" }], + ["line", { x1: "19", x2: "22", y1: "12", y2: "12", key: "1tbv5k" }], + ["line", { x1: "12", x2: "12", y1: "2", y2: "5", key: "11lu5j" }], + ["line", { x1: "12", x2: "12", y1: "19", y2: "22", key: "x3vr5v" }], + [ + "path", + { + d: "M7.11 7.11C5.83 8.39 5 10.1 5 12c0 3.87 3.13 7 7 7 1.9 0 3.61-.83 4.89-2.11", + key: "1oh7ia" + } + ], + [ + "path", + { + d: "M18.71 13.96c.19-.63.29-1.29.29-1.96 0-3.87-3.13-7-7-7-.67 0-1.33.1-1.96.29", + key: "3qdecy" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Locate = createLucideIcon("LocateIcon", [ + ["line", { x1: "2", x2: "5", y1: "12", y2: "12", key: "bvdh0s" }], + ["line", { x1: "19", x2: "22", y1: "12", y2: "12", key: "1tbv5k" }], + ["line", { x1: "12", x2: "12", y1: "2", y2: "5", key: "11lu5j" }], + ["line", { x1: "12", x2: "12", y1: "19", y2: "22", key: "x3vr5v" }], + ["circle", { cx: "12", cy: "12", r: "7", key: "fim9np" }] +]); + +const LockKeyholeOpen = createLucideIcon("LockKeyholeOpenIcon", [ + ["circle", { cx: "12", cy: "16", r: "1", key: "1au0dj" }], + ["rect", { width: "18", height: "12", x: "3", y: "10", rx: "2", key: "l0tzu3" }], + ["path", { d: "M7 10V7a5 5 0 0 1 9.33-2.5", key: "car5b7" }] +]); + +const LockKeyhole = createLucideIcon("LockKeyholeIcon", [ + ["circle", { cx: "12", cy: "16", r: "1", key: "1au0dj" }], + ["rect", { x: "3", y: "10", width: "18", height: "12", rx: "2", key: "6s8ecr" }], + ["path", { d: "M7 10V7a5 5 0 0 1 10 0v3", key: "1pqi11" }] +]); + +const LockOpen = createLucideIcon("LockOpenIcon", [ + ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }], + ["path", { d: "M7 11V7a5 5 0 0 1 9.9-1", key: "1mm8w8" }] +]); + +const Lock = createLucideIcon("LockIcon", [ + ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }], + ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }] +]); + +const LogIn = createLucideIcon("LogInIcon", [ + ["path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4", key: "u53s6r" }], + ["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }], + ["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }] +]); + +const LogOut = createLucideIcon("LogOutIcon", [ + ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }], + ["polyline", { points: "16 17 21 12 16 7", key: "1gabdz" }], + ["line", { x1: "21", x2: "9", y1: "12", y2: "12", key: "1uyos4" }] +]); + +const Logs = createLucideIcon("LogsIcon", [ + ["path", { d: "M13 12h8", key: "h98zly" }], + ["path", { d: "M13 18h8", key: "oe0vm4" }], + ["path", { d: "M13 6h8", key: "15sg57" }], + ["path", { d: "M3 12h1", key: "lp3yf2" }], + ["path", { d: "M3 18h1", key: "1eiwyy" }], + ["path", { d: "M3 6h1", key: "rgxa97" }], + ["path", { d: "M8 12h1", key: "1con00" }], + ["path", { d: "M8 18h1", key: "13wk12" }], + ["path", { d: "M8 6h1", key: "tn6mkg" }] +]); + +const Lollipop = createLucideIcon("LollipopIcon", [ + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }], + ["path", { d: "M11 11a2 2 0 0 0 4 0 4 4 0 0 0-8 0 6 6 0 0 0 12 0", key: "107gwy" }] +]); + +const Luggage = createLucideIcon("LuggageIcon", [ + [ + "path", + { d: "M6 20a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2", key: "1m57jg" } + ], + ["path", { d: "M8 18V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v14", key: "1l99gc" }], + ["path", { d: "M10 20h4", key: "ni2waw" }], + ["circle", { cx: "16", cy: "20", r: "2", key: "1vifvg" }], + ["circle", { cx: "8", cy: "20", r: "2", key: "ckkr5m" }] +]); + +const Magnet = createLucideIcon("MagnetIcon", [ + [ + "path", + { + d: "m6 15-4-4 6.75-6.77a7.79 7.79 0 0 1 11 11L13 22l-4-4 6.39-6.36a2.14 2.14 0 0 0-3-3L6 15", + key: "1i3lhw" + } + ], + ["path", { d: "m5 8 4 4", key: "j6kj7e" }], + ["path", { d: "m12 15 4 4", key: "lnac28" }] +]); + +const MailCheck = createLucideIcon("MailCheckIcon", [ + ["path", { d: "M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8", key: "12jkf8" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + ["path", { d: "m16 19 2 2 4-4", key: "1b14m6" }] +]); + +const MailMinus = createLucideIcon("MailMinusIcon", [ + ["path", { d: "M22 15V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8", key: "fuxbkv" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + ["path", { d: "M16 19h6", key: "xwg31i" }] +]); + +const MailOpen = createLucideIcon("MailOpenIcon", [ + [ + "path", + { + d: "M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z", + key: "1jhwl8" + } + ], + ["path", { d: "m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10", key: "1qfld7" }] +]); + +const MailPlus = createLucideIcon("MailPlusIcon", [ + ["path", { d: "M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8", key: "12jkf8" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + ["path", { d: "M19 16v6", key: "tddt3s" }], + ["path", { d: "M16 19h6", key: "xwg31i" }] +]); + +const MailQuestion = createLucideIcon("MailQuestionIcon", [ + ["path", { d: "M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5", key: "e61zoh" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + [ + "path", + { + d: "M18 15.28c.2-.4.5-.8.9-1a2.1 2.1 0 0 1 2.6.4c.3.4.5.8.5 1.3 0 1.3-2 2-2 2", + key: "7z9rxb" + } + ], + ["path", { d: "M20 22v.01", key: "12bgn6" }] +]); + +const MailSearch = createLucideIcon("MailSearchIcon", [ + ["path", { d: "M22 12.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h7.5", key: "w80f2v" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + ["path", { d: "M18 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z", key: "8lzu5m" }], + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["path", { d: "m22 22-1.5-1.5", key: "1x83k4" }] +]); + +const MailWarning = createLucideIcon("MailWarningIcon", [ + ["path", { d: "M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5", key: "e61zoh" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + ["path", { d: "M20 14v4", key: "1hm744" }], + ["path", { d: "M20 22v.01", key: "12bgn6" }] +]); + +const MailX = createLucideIcon("MailXIcon", [ + ["path", { d: "M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9", key: "1j9vog" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }], + ["path", { d: "m17 17 4 4", key: "1b3523" }], + ["path", { d: "m21 17-4 4", key: "uinynz" }] +]); + +const Mail = createLucideIcon("MailIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }] +]); + +const Mailbox = createLucideIcon("MailboxIcon", [ + [ + "path", + { + d: "M22 17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5C2 7 4 5 6.5 5H18c2.2 0 4 1.8 4 4v8Z", + key: "1lbycx" + } + ], + ["polyline", { points: "15,9 18,9 18,11", key: "1pm9c0" }], + ["path", { d: "M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2", key: "15i455" }], + ["line", { x1: "6", x2: "7", y1: "10", y2: "10", key: "1e2scm" }] +]); + +const Mails = createLucideIcon("MailsIcon", [ + ["rect", { width: "16", height: "13", x: "6", y: "4", rx: "2", key: "1drq3f" }], + ["path", { d: "m22 7-7.1 3.78c-.57.3-1.23.3-1.8 0L6 7", key: "xn252p" }], + ["path", { d: "M2 8v11c0 1.1.9 2 2 2h14", key: "n13cji" }] +]); + +const MapPinCheckInside = createLucideIcon("MapPinCheckInsideIcon", [ + [ + "path", + { + d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0", + key: "1r0f0z" + } + ], + ["path", { d: "m9 10 2 2 4-4", key: "1gnqz4" }] +]); + +const MapPinCheck = createLucideIcon("MapPinCheckIcon", [ + [ + "path", + { + d: "M19.43 12.935c.357-.967.57-1.955.57-2.935a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32.197 32.197 0 0 0 .813-.728", + key: "1dq61d" + } + ], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "m16 18 2 2 4-4", key: "1mkfmb" }] +]); + +const MapPinHouse = createLucideIcon("MapPinHouseIcon", [ + [ + "path", + { + d: "M15 22a1 1 0 0 1-1-1v-4a1 1 0 0 1 .445-.832l3-2a1 1 0 0 1 1.11 0l3 2A1 1 0 0 1 22 17v4a1 1 0 0 1-1 1z", + key: "1p1rcz" + } + ], + [ + "path", + { + d: "M18 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 .601.2", + key: "mcbcs9" + } + ], + ["path", { d: "M18 22v-3", key: "1t1ugv" }], + ["circle", { cx: "10", cy: "10", r: "3", key: "1ns7v1" }] +]); + +const MapPinMinusInside = createLucideIcon("MapPinMinusInsideIcon", [ + [ + "path", + { + d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0", + key: "1r0f0z" + } + ], + ["path", { d: "M9 10h6", key: "9gxzsh" }] +]); + +const MapPinMinus = createLucideIcon("MapPinMinusIcon", [ + [ + "path", + { + d: "M18.977 14C19.6 12.701 20 11.343 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738", + key: "11uxia" + } + ], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "M16 18h6", key: "987eiv" }] +]); + +const MapPinOff = createLucideIcon("MapPinOffIcon", [ + ["path", { d: "M12.75 7.09a3 3 0 0 1 2.16 2.16", key: "1d4wjd" }], + [ + "path", + { + d: "M17.072 17.072c-1.634 2.17-3.527 3.912-4.471 4.727a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 1.432-4.568", + key: "12yil7" + } + ], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M8.475 2.818A8 8 0 0 1 20 10c0 1.183-.31 2.377-.81 3.533", key: "lhrkcz" }], + ["path", { d: "M9.13 9.13a3 3 0 0 0 3.74 3.74", key: "13wojd" }] +]); + +const MapPinPlusInside = createLucideIcon("MapPinPlusInsideIcon", [ + [ + "path", + { + d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0", + key: "1r0f0z" + } + ], + ["path", { d: "M12 7v6", key: "lw1j43" }], + ["path", { d: "M9 10h6", key: "9gxzsh" }] +]); + +const MapPinPlus = createLucideIcon("MapPinPlusIcon", [ + [ + "path", + { + d: "M19.914 11.105A7.298 7.298 0 0 0 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738", + key: "fcdtly" + } + ], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "M16 18h6", key: "987eiv" }], + ["path", { d: "M19 15v6", key: "10aioa" }] +]); + +const MapPinXInside = createLucideIcon("MapPinXInsideIcon", [ + [ + "path", + { + d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0", + key: "1r0f0z" + } + ], + ["path", { d: "m14.5 7.5-5 5", key: "3lb6iw" }], + ["path", { d: "m9.5 7.5 5 5", key: "ko136h" }] +]); + +const MapPinX = createLucideIcon("MapPinXIcon", [ + [ + "path", + { + d: "M19.752 11.901A7.78 7.78 0 0 0 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 19 19 0 0 0 .09-.077", + key: "y0ewhp" + } + ], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "m21.5 15.5-5 5", key: "11iqnx" }], + ["path", { d: "m21.5 20.5-5-5", key: "1bylgx" }] +]); + +const MapPin = createLucideIcon("MapPinIcon", [ + [ + "path", + { + d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0", + key: "1r0f0z" + } + ], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }] +]); + +const MapPinned = createLucideIcon("MapPinnedIcon", [ + [ + "path", + { + d: "M18 8c0 3.613-3.869 7.429-5.393 8.795a1 1 0 0 1-1.214 0C9.87 15.429 6 11.613 6 8a6 6 0 0 1 12 0", + key: "11u0oz" + } + ], + ["circle", { cx: "12", cy: "8", r: "2", key: "1822b1" }], + [ + "path", + { + d: "M8.714 14h-3.71a1 1 0 0 0-.948.683l-2.004 6A1 1 0 0 0 3 22h18a1 1 0 0 0 .948-1.316l-2-6a1 1 0 0 0-.949-.684h-3.712", + key: "q8zwxj" + } + ] +]); + +const MapPlus = createLucideIcon("MapPlusIcon", [ + [ + "path", + { + d: "m11 19-1.106-.552a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0l4.212 2.106a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619V12", + key: "svfegj" + } + ], + ["path", { d: "M15 5.764V12", key: "1ocw4k" }], + ["path", { d: "M18 15v6", key: "9wciyi" }], + ["path", { d: "M21 18h-6", key: "139f0c" }], + ["path", { d: "M9 3.236v15", key: "1uimfh" }] +]); + +const Map = createLucideIcon("MapIcon", [ + [ + "path", + { + d: "M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z", + key: "169xi5" + } + ], + ["path", { d: "M15 5.764v15", key: "1pn4in" }], + ["path", { d: "M9 3.236v15", key: "1uimfh" }] +]); + +const MarsStroke = createLucideIcon("MarsStrokeIcon", [ + ["path", { d: "m14 6 4 4", key: "1q72g9" }], + ["path", { d: "M17 3h4v4", key: "19p9u1" }], + ["path", { d: "m21 3-7.75 7.75", key: "1cjbfd" }], + ["circle", { cx: "9", cy: "15", r: "6", key: "bx5svt" }] +]); + +const Mars = createLucideIcon("MarsIcon", [ + ["path", { d: "M16 3h5v5", key: "1806ms" }], + ["path", { d: "m21 3-6.75 6.75", key: "pv0uzu" }], + ["circle", { cx: "10", cy: "14", r: "6", key: "1qwbdc" }] +]); + +const Martini = createLucideIcon("MartiniIcon", [ + ["path", { d: "M8 22h8", key: "rmew8v" }], + ["path", { d: "M12 11v11", key: "ur9y6a" }], + ["path", { d: "m19 3-7 8-7-8Z", key: "1sgpiw" }] +]); + +const Maximize2 = createLucideIcon("Maximize2Icon", [ + ["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }], + ["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }], + ["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }], + ["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }] +]); + +const Maximize = createLucideIcon("MaximizeIcon", [ + ["path", { d: "M8 3H5a2 2 0 0 0-2 2v3", key: "1dcmit" }], + ["path", { d: "M21 8V5a2 2 0 0 0-2-2h-3", key: "1e4gt3" }], + ["path", { d: "M3 16v3a2 2 0 0 0 2 2h3", key: "wsl5sc" }], + ["path", { d: "M16 21h3a2 2 0 0 0 2-2v-3", key: "18trek" }] +]); + +const Medal = createLucideIcon("MedalIcon", [ + [ + "path", + { + d: "M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15", + key: "143lza" + } + ], + ["path", { d: "M11 12 5.12 2.2", key: "qhuxz6" }], + ["path", { d: "m13 12 5.88-9.8", key: "hbye0f" }], + ["path", { d: "M8 7h8", key: "i86dvs" }], + ["circle", { cx: "12", cy: "17", r: "5", key: "qbz8iq" }], + ["path", { d: "M12 18v-2h-.5", key: "fawc4q" }] +]); + +const MegaphoneOff = createLucideIcon("MegaphoneOffIcon", [ + ["path", { d: "M9.26 9.26 3 11v3l14.14 3.14", key: "3429n" }], + ["path", { d: "M21 15.34V6l-7.31 2.03", key: "4o1dh8" }], + ["path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6", key: "1yl0tm" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Megaphone = createLucideIcon("MegaphoneIcon", [ + ["path", { d: "m3 11 18-5v12L3 14v-3z", key: "n962bs" }], + ["path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6", key: "1yl0tm" }] +]); + +const Meh = createLucideIcon("MehIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["line", { x1: "8", x2: "16", y1: "15", y2: "15", key: "1xb1d9" }], + ["line", { x1: "9", x2: "9.01", y1: "9", y2: "9", key: "yxxnd0" }], + ["line", { x1: "15", x2: "15.01", y1: "9", y2: "9", key: "1p4y9e" }] +]); + +const MemoryStick = createLucideIcon("MemoryStickIcon", [ + ["path", { d: "M6 19v-3", key: "1nvgqn" }], + ["path", { d: "M10 19v-3", key: "iu8nkm" }], + ["path", { d: "M14 19v-3", key: "kcehxu" }], + ["path", { d: "M18 19v-3", key: "1vh91z" }], + ["path", { d: "M8 11V9", key: "63erz4" }], + ["path", { d: "M16 11V9", key: "fru6f3" }], + ["path", { d: "M12 11V9", key: "ha00sb" }], + ["path", { d: "M2 15h20", key: "16ne18" }], + [ + "path", + { + d: "M2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v1.1a2 2 0 0 0 0 3.837V17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-5.1a2 2 0 0 0 0-3.837Z", + key: "lhddv3" + } + ] +]); + +const Menu = createLucideIcon("MenuIcon", [ + ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }], + ["line", { x1: "4", x2: "20", y1: "6", y2: "6", key: "1owob3" }], + ["line", { x1: "4", x2: "20", y1: "18", y2: "18", key: "yk5zj1" }] +]); + +const Merge = createLucideIcon("MergeIcon", [ + ["path", { d: "m8 6 4-4 4 4", key: "ybng9g" }], + ["path", { d: "M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22", key: "1hyw0i" }], + ["path", { d: "m20 22-5-5", key: "1m27yz" }] +]); + +const MessageCircleCode = createLucideIcon("MessageCircleCodeIcon", [ + ["path", { d: "M10 9.5 8 12l2 2.5", key: "3mjy60" }], + ["path", { d: "m14 9.5 2 2.5-2 2.5", key: "1bir2l" }], + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22z", key: "k85zhp" }] +]); + +const MessageCircleDashed = createLucideIcon("MessageCircleDashedIcon", [ + ["path", { d: "M13.5 3.1c-.5 0-1-.1-1.5-.1s-1 .1-1.5.1", key: "16ll65" }], + ["path", { d: "M19.3 6.8a10.45 10.45 0 0 0-2.1-2.1", key: "1nq77a" }], + ["path", { d: "M20.9 13.5c.1-.5.1-1 .1-1.5s-.1-1-.1-1.5", key: "1sf7wn" }], + ["path", { d: "M17.2 19.3a10.45 10.45 0 0 0 2.1-2.1", key: "x1hs5g" }], + ["path", { d: "M10.5 20.9c.5.1 1 .1 1.5.1s1-.1 1.5-.1", key: "19m18z" }], + ["path", { d: "M3.5 17.5 2 22l4.5-1.5", key: "1f36qi" }], + ["path", { d: "M3.1 10.5c0 .5-.1 1-.1 1.5s.1 1 .1 1.5", key: "1vz3ju" }], + ["path", { d: "M6.8 4.7a10.45 10.45 0 0 0-2.1 2.1", key: "19f9do" }] +]); + +const MessageCircleHeart = createLucideIcon("MessageCircleHeartIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + [ + "path", + { + d: "M15.8 9.2a2.5 2.5 0 0 0-3.5 0l-.3.4-.35-.3a2.42 2.42 0 1 0-3.2 3.6l3.6 3.5 3.6-3.5c1.2-1.2 1.1-2.7.2-3.7", + key: "43lnbm" + } + ] +]); + +const MessageCircleMore = createLucideIcon("MessageCircleMoreIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + ["path", { d: "M8 12h.01", key: "czm47f" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M16 12h.01", key: "1l6xoz" }] +]); + +const MessageCircleOff = createLucideIcon("MessageCircleOffIcon", [ + ["path", { d: "M20.5 14.9A9 9 0 0 0 9.1 3.5", key: "1iebmn" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M5.6 5.6C3 8.3 2.2 12.5 4 16l-2 6 6-2c3.4 1.8 7.6 1.1 10.3-1.7", key: "1ov8ce" }] +]); + +const MessageCirclePlus = createLucideIcon("MessageCirclePlusIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "M12 8v8", key: "napkw2" }] +]); + +const MessageCircleQuestion = createLucideIcon("MessageCircleQuestionIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }], + ["path", { d: "M12 17h.01", key: "p32p05" }] +]); + +const MessageCircleReply = createLucideIcon("MessageCircleReplyIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + ["path", { d: "m10 15-3-3 3-3", key: "1pgupc" }], + ["path", { d: "M7 12h7a2 2 0 0 1 2 2v1", key: "1gheu4" }] +]); + +const MessageCircleWarning = createLucideIcon("MessageCircleWarningIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + ["path", { d: "M12 8v4", key: "1got3b" }], + ["path", { d: "M12 16h.01", key: "1drbdi" }] +]); + +const MessageCircleX = createLucideIcon("MessageCircleXIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "m9 9 6 6", key: "z0biqf" }] +]); + +const MessageCircle = createLucideIcon("MessageCircleIcon", [ + ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }] +]); + +const MessageSquareCode = createLucideIcon("MessageSquareCodeIcon", [ + ["path", { d: "M10 7.5 8 10l2 2.5", key: "xb17xw" }], + ["path", { d: "m14 7.5 2 2.5-2 2.5", key: "5rap1v" }], + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }] +]); + +const MessageSquareDashed = createLucideIcon("MessageSquareDashedIcon", [ + ["path", { d: "M10 17H7l-4 4v-7", key: "1r71xu" }], + ["path", { d: "M14 17h1", key: "nufu4t" }], + ["path", { d: "M14 3h1", key: "1ec4yj" }], + ["path", { d: "M19 3a2 2 0 0 1 2 2", key: "18rm91" }], + ["path", { d: "M21 14v1a2 2 0 0 1-2 2", key: "29akq3" }], + ["path", { d: "M21 9v1", key: "mxsmne" }], + ["path", { d: "M3 9v1", key: "1r0deq" }], + ["path", { d: "M5 3a2 2 0 0 0-2 2", key: "y57alp" }], + ["path", { d: "M9 3h1", key: "1yesri" }] +]); + +const MessageSquareDiff = createLucideIcon("MessageSquareDiffIcon", [ + ["path", { d: "m5 19-2 2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2", key: "1xuzuj" }], + ["path", { d: "M9 10h6", key: "9gxzsh" }], + ["path", { d: "M12 7v6", key: "lw1j43" }], + ["path", { d: "M9 17h6", key: "r8uit2" }] +]); + +const MessageSquareDot = createLucideIcon("MessageSquareDotIcon", [ + ["path", { d: "M11.7 3H5a2 2 0 0 0-2 2v16l4-4h12a2 2 0 0 0 2-2v-2.7", key: "uodpkb" }], + ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }] +]); + +const MessageSquareHeart = createLucideIcon("MessageSquareHeartIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + [ + "path", + { + d: "M14.8 7.5a1.84 1.84 0 0 0-2.6 0l-.2.3-.3-.3a1.84 1.84 0 1 0-2.4 2.8L12 13l2.7-2.7c.9-.9.8-2.1.1-2.8", + key: "1blaws" + } + ] +]); + +const MessageSquareLock = createLucideIcon("MessageSquareLockIcon", [ + ["path", { d: "M19 15v-2a2 2 0 1 0-4 0v2", key: "h3d1vz" }], + ["path", { d: "M9 17H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v3.5", key: "xsnnhn" }], + ["rect", { x: "13", y: "15", width: "8", height: "5", rx: "1", key: "1ccwuk" }] +]); + +const MessageSquareMore = createLucideIcon("MessageSquareMoreIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "M8 10h.01", key: "19clt8" }], + ["path", { d: "M12 10h.01", key: "1nrarc" }], + ["path", { d: "M16 10h.01", key: "1m94wz" }] +]); + +const MessageSquareOff = createLucideIcon("MessageSquareOffIcon", [ + ["path", { d: "M21 15V5a2 2 0 0 0-2-2H9", key: "43el77" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M3.6 3.6c-.4.3-.6.8-.6 1.4v16l4-4h10", key: "pwpm4a" }] +]); + +const MessageSquarePlus = createLucideIcon("MessageSquarePlusIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "M12 7v6", key: "lw1j43" }], + ["path", { d: "M9 10h6", key: "9gxzsh" }] +]); + +const MessageSquareQuote = createLucideIcon("MessageSquareQuoteIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "M8 12a2 2 0 0 0 2-2V8H8", key: "1jfesj" }], + ["path", { d: "M14 12a2 2 0 0 0 2-2V8h-2", key: "1dq9mh" }] +]); + +const MessageSquareReply = createLucideIcon("MessageSquareReplyIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "m10 7-3 3 3 3", key: "1eugdv" }], + ["path", { d: "M17 13v-1a2 2 0 0 0-2-2H7", key: "ernfh3" }] +]); + +const MessageSquareShare = createLucideIcon("MessageSquareShareIcon", [ + ["path", { d: "M21 12v3a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h7", key: "tqtdkg" }], + ["path", { d: "M16 3h5v5", key: "1806ms" }], + ["path", { d: "m16 8 5-5", key: "15mbrl" }] +]); + +const MessageSquareText = createLucideIcon("MessageSquareTextIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "M13 8H7", key: "14i4kc" }], + ["path", { d: "M17 12H7", key: "16if0g" }] +]); + +const MessageSquareWarning = createLucideIcon("MessageSquareWarningIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "M12 7v2", key: "stiyo7" }], + ["path", { d: "M12 13h.01", key: "y0uutt" }] +]); + +const MessageSquareX = createLucideIcon("MessageSquareXIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }], + ["path", { d: "m14.5 7.5-5 5", key: "3lb6iw" }], + ["path", { d: "m9.5 7.5 5 5", key: "ko136h" }] +]); + +const MessageSquare = createLucideIcon("MessageSquareIcon", [ + ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }] +]); + +const MessagesSquare = createLucideIcon("MessagesSquareIcon", [ + ["path", { d: "M14 9a2 2 0 0 1-2 2H6l-4 4V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2z", key: "p1xzt8" }], + ["path", { d: "M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1", key: "1cx29u" }] +]); + +const MicOff = createLucideIcon("MicOffIcon", [ + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }], + ["path", { d: "M18.89 13.23A7.12 7.12 0 0 0 19 12v-2", key: "80xlxr" }], + ["path", { d: "M5 10v2a7 7 0 0 0 12 5", key: "p2k8kg" }], + ["path", { d: "M15 9.34V5a3 3 0 0 0-5.68-1.33", key: "1gzdoj" }], + ["path", { d: "M9 9v3a3 3 0 0 0 5.12 2.12", key: "r2i35w" }], + ["line", { x1: "12", x2: "12", y1: "19", y2: "22", key: "x3vr5v" }] +]); + +const MicVocal = createLucideIcon("MicVocalIcon", [ + [ + "path", + { + d: "m11 7.601-5.994 8.19a1 1 0 0 0 .1 1.298l.817.818a1 1 0 0 0 1.314.087L15.09 12", + key: "80a601" + } + ], + [ + "path", + { + d: "M16.5 21.174C15.5 20.5 14.372 20 13 20c-2.058 0-3.928 2.356-6 2-2.072-.356-2.775-3.369-1.5-4.5", + key: "j0ngtp" + } + ], + ["circle", { cx: "16", cy: "7", r: "5", key: "d08jfb" }] +]); + +const Mic = createLucideIcon("MicIcon", [ + ["path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z", key: "131961" }], + ["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }], + ["line", { x1: "12", x2: "12", y1: "19", y2: "22", key: "x3vr5v" }] +]); + +const Microchip = createLucideIcon("MicrochipIcon", [ + ["path", { d: "M18 12h2", key: "quuxs7" }], + ["path", { d: "M18 16h2", key: "zsn3lv" }], + ["path", { d: "M18 20h2", key: "9x5y9y" }], + ["path", { d: "M18 4h2", key: "1luxfb" }], + ["path", { d: "M18 8h2", key: "nxqzg" }], + ["path", { d: "M4 12h2", key: "1ltxp0" }], + ["path", { d: "M4 16h2", key: "8a5zha" }], + ["path", { d: "M4 20h2", key: "27dk57" }], + ["path", { d: "M4 4h2", key: "10groj" }], + ["path", { d: "M4 8h2", key: "18vq6w" }], + [ + "path", + { + d: "M8 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-1.5c-.276 0-.494.227-.562.495a2 2 0 0 1-3.876 0C9.994 2.227 9.776 2 9.5 2z", + key: "1681fp" + } + ] +]); + +const Microscope = createLucideIcon("MicroscopeIcon", [ + ["path", { d: "M6 18h8", key: "1borvv" }], + ["path", { d: "M3 22h18", key: "8prr45" }], + ["path", { d: "M14 22a7 7 0 1 0 0-14h-1", key: "1jwaiy" }], + ["path", { d: "M9 14h2", key: "197e7h" }], + ["path", { d: "M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z", key: "1bmzmy" }], + ["path", { d: "M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3", key: "1drr47" }] +]); + +const Microwave = createLucideIcon("MicrowaveIcon", [ + ["rect", { width: "20", height: "15", x: "2", y: "4", rx: "2", key: "2no95f" }], + ["rect", { width: "8", height: "7", x: "6", y: "8", rx: "1", key: "zh9wx" }], + ["path", { d: "M18 8v7", key: "o5zi4n" }], + ["path", { d: "M6 19v2", key: "1loha6" }], + ["path", { d: "M18 19v2", key: "1dawf0" }] +]); + +const Milestone = createLucideIcon("MilestoneIcon", [ + ["path", { d: "M12 13v8", key: "1l5pq0" }], + ["path", { d: "M12 3v3", key: "1n5kay" }], + [ + "path", + { + d: "M4 6a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h13a2 2 0 0 0 1.152-.365l3.424-2.317a1 1 0 0 0 0-1.635l-3.424-2.318A2 2 0 0 0 17 6z", + key: "1btarq" + } + ] +]); + +const MilkOff = createLucideIcon("MilkOffIcon", [ + ["path", { d: "M8 2h8", key: "1ssgc1" }], + [ + "path", + { + d: "M9 2v1.343M15 2v2.789a4 4 0 0 0 .672 2.219l.656.984a4 4 0 0 1 .672 2.22v1.131M7.8 7.8l-.128.192A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-3", + key: "y0ejgx" + } + ], + ["path", { d: "M7 15a6.47 6.47 0 0 1 5 0 6.472 6.472 0 0 0 3.435.435", key: "iaxqsy" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Milk = createLucideIcon("MilkIcon", [ + ["path", { d: "M8 2h8", key: "1ssgc1" }], + [ + "path", + { + d: "M9 2v2.789a4 4 0 0 1-.672 2.219l-.656.984A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-9.789a4 4 0 0 0-.672-2.219l-.656-.984A4 4 0 0 1 15 4.788V2", + key: "qtp12x" + } + ], + ["path", { d: "M7 15a6.472 6.472 0 0 1 5 0 6.47 6.47 0 0 0 5 0", key: "ygeh44" }] +]); + +const Minimize2 = createLucideIcon("Minimize2Icon", [ + ["polyline", { points: "4 14 10 14 10 20", key: "11kfnr" }], + ["polyline", { points: "20 10 14 10 14 4", key: "rlmsce" }], + ["line", { x1: "14", x2: "21", y1: "10", y2: "3", key: "o5lafz" }], + ["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }] +]); + +const Minimize = createLucideIcon("MinimizeIcon", [ + ["path", { d: "M8 3v3a2 2 0 0 1-2 2H3", key: "hohbtr" }], + ["path", { d: "M21 8h-3a2 2 0 0 1-2-2V3", key: "5jw1f3" }], + ["path", { d: "M3 16h3a2 2 0 0 1 2 2v3", key: "198tvr" }], + ["path", { d: "M16 21v-3a2 2 0 0 1 2-2h3", key: "ph8mxp" }] +]); + +const Minus = createLucideIcon("MinusIcon", [["path", { d: "M5 12h14", key: "1ays0h" }]]); + +const MonitorCheck = createLucideIcon("MonitorCheckIcon", [ + ["path", { d: "m9 10 2 2 4-4", key: "1gnqz4" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }] +]); + +const MonitorCog = createLucideIcon("MonitorCogIcon", [ + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "m15.2 4.9-.9-.4", key: "12wd2u" }], + ["path", { d: "m15.2 7.1-.9.4", key: "1r2vl7" }], + ["path", { d: "m16.9 3.2-.4-.9", key: "3zbo91" }], + ["path", { d: "m16.9 8.8-.4.9", key: "1qr2dn" }], + ["path", { d: "m19.5 2.3-.4.9", key: "1rjrkq" }], + ["path", { d: "m19.5 9.7-.4-.9", key: "heryx5" }], + ["path", { d: "m21.7 4.5-.9.4", key: "17fqt1" }], + ["path", { d: "m21.7 7.5-.9-.4", key: "14zyni" }], + ["path", { d: "M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7", key: "1tnzv8" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }] +]); + +const MonitorDot = createLucideIcon("MonitorDotIcon", [ + ["circle", { cx: "19", cy: "6", r: "3", key: "108a5v" }], + ["path", { d: "M22 12v3a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9", key: "1fet9y" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }] +]); + +const MonitorDown = createLucideIcon("MonitorDownIcon", [ + ["path", { d: "M12 13V7", key: "h0r20n" }], + ["path", { d: "m15 10-3 3-3-3", key: "lzhmyn" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }] +]); + +const MonitorOff = createLucideIcon("MonitorOffIcon", [ + ["path", { d: "M17 17H4a2 2 0 0 1-2-2V5c0-1.5 1-2 1-2", key: "k0q8oc" }], + ["path", { d: "M22 15V5a2 2 0 0 0-2-2H9", key: "cp1ac0" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const MonitorPause = createLucideIcon("MonitorPauseIcon", [ + ["path", { d: "M10 13V7", key: "1u13u9" }], + ["path", { d: "M14 13V7", key: "1vj9om" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }] +]); + +const MonitorPlay = createLucideIcon("MonitorPlayIcon", [ + [ + "path", + { + d: "M10 7.75a.75.75 0 0 1 1.142-.638l3.664 2.249a.75.75 0 0 1 0 1.278l-3.664 2.25a.75.75 0 0 1-1.142-.64z", + key: "1pctta" + } + ], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["rect", { x: "2", y: "3", width: "20", height: "14", rx: "2", key: "x3v2xh" }] +]); + +const MonitorSmartphone = createLucideIcon("MonitorSmartphoneIcon", [ + ["path", { d: "M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8", key: "10dyio" }], + ["path", { d: "M10 19v-3.96 3.15", key: "1irgej" }], + ["path", { d: "M7 19h5", key: "qswx4l" }], + ["rect", { width: "6", height: "10", x: "16", y: "12", rx: "2", key: "1egngj" }] +]); + +const MonitorSpeaker = createLucideIcon("MonitorSpeakerIcon", [ + ["path", { d: "M5.5 20H8", key: "1k40s5" }], + ["path", { d: "M17 9h.01", key: "1j24nn" }], + ["rect", { width: "10", height: "16", x: "12", y: "4", rx: "2", key: "ixliua" }], + ["path", { d: "M8 6H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h4", key: "1mp6e1" }], + ["circle", { cx: "17", cy: "15", r: "1", key: "tqvash" }] +]); + +const MonitorStop = createLucideIcon("MonitorStopIcon", [ + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["rect", { x: "2", y: "3", width: "20", height: "14", rx: "2", key: "x3v2xh" }], + ["rect", { x: "9", y: "7", width: "6", height: "6", rx: "1", key: "5m2oou" }] +]); + +const MonitorUp = createLucideIcon("MonitorUpIcon", [ + ["path", { d: "m9 10 3-3 3 3", key: "11gsxs" }], + ["path", { d: "M12 13V7", key: "h0r20n" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }] +]); + +const MonitorX = createLucideIcon("MonitorXIcon", [ + ["path", { d: "m14.5 12.5-5-5", key: "1jahn5" }], + ["path", { d: "m9.5 12.5 5-5", key: "1k2t7b" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }] +]); + +const Monitor = createLucideIcon("MonitorIcon", [ + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }], + ["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }], + ["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }] +]); + +const MoonStar = createLucideIcon("MoonStarIcon", [ + ["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9", key: "4ay0iu" }], + ["path", { d: "M20 3v4", key: "1olli1" }], + ["path", { d: "M22 5h-4", key: "1gvqau" }] +]); + +const Moon = createLucideIcon("MoonIcon", [ + ["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z", key: "a7tn18" }] +]); + +const MountainSnow = createLucideIcon("MountainSnowIcon", [ + ["path", { d: "m8 3 4 8 5-5 5 15H2L8 3z", key: "otkl63" }], + [ + "path", + { d: "M4.14 15.08c2.62-1.57 5.24-1.43 7.86.42 2.74 1.94 5.49 2 8.23.19", key: "1pvmmp" } + ] +]); + +const Mountain = createLucideIcon("MountainIcon", [ + ["path", { d: "m8 3 4 8 5-5 5 15H2L8 3z", key: "otkl63" }] +]); + +const MouseOff = createLucideIcon("MouseOffIcon", [ + ["path", { d: "M12 6v.343", key: "1gyhex" }], + ["path", { d: "M18.218 18.218A7 7 0 0 1 5 15V9a7 7 0 0 1 .782-3.218", key: "ukzz01" }], + ["path", { d: "M19 13.343V9A7 7 0 0 0 8.56 2.902", key: "104jy9" }], + ["path", { d: "M22 22 2 2", key: "1r8tn9" }] +]); + +const MousePointer2 = createLucideIcon("MousePointer2Icon", [ + [ + "path", + { + d: "M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z", + key: "edeuup" + } + ] +]); + +const MousePointerBan = createLucideIcon("MousePointerBanIcon", [ + [ + "path", + { + d: "M2.034 2.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.944L8.204 7.545a1 1 0 0 0-.66.66l-1.066 3.443a.5.5 0 0 1-.944.033z", + key: "11pp1i" + } + ], + ["circle", { cx: "16", cy: "16", r: "6", key: "qoo3c4" }], + ["path", { d: "m11.8 11.8 8.4 8.4", key: "oogvdj" }] +]); + +const MousePointerClick = createLucideIcon("MousePointerClickIcon", [ + ["path", { d: "M14 4.1 12 6", key: "ita8i4" }], + ["path", { d: "m5.1 8-2.9-.8", key: "1go3kf" }], + ["path", { d: "m6 12-1.9 2", key: "mnht97" }], + ["path", { d: "M7.2 2.2 8 5.1", key: "1cfko1" }], + [ + "path", + { + d: "M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z", + key: "s0h3yz" + } + ] +]); + +const MousePointer = createLucideIcon("MousePointerIcon", [ + ["path", { d: "M12.586 12.586 19 19", key: "ea5xo7" }], + [ + "path", + { + d: "M3.688 3.037a.497.497 0 0 0-.651.651l6.5 15.999a.501.501 0 0 0 .947-.062l1.569-6.083a2 2 0 0 1 1.448-1.479l6.124-1.579a.5.5 0 0 0 .063-.947z", + key: "277e5u" + } + ] +]); + +const Mouse = createLucideIcon("MouseIcon", [ + ["rect", { x: "5", y: "2", width: "14", height: "20", rx: "7", key: "11ol66" }], + ["path", { d: "M12 6v4", key: "16clxf" }] +]); + +const Move3d = createLucideIcon("Move3dIcon", [ + ["path", { d: "M5 3v16h16", key: "1mqmf9" }], + ["path", { d: "m5 19 6-6", key: "jh6hbb" }], + ["path", { d: "m2 6 3-3 3 3", key: "tkyvxa" }], + ["path", { d: "m18 16 3 3-3 3", key: "1d4glt" }] +]); + +const MoveDiagonal2 = createLucideIcon("MoveDiagonal2Icon", [ + ["path", { d: "M19 13v6h-6", key: "1hxl6d" }], + ["path", { d: "M5 11V5h6", key: "12e2xe" }], + ["path", { d: "m5 5 14 14", key: "11anup" }] +]); + +const MoveDiagonal = createLucideIcon("MoveDiagonalIcon", [ + ["path", { d: "M11 19H5v-6", key: "8awifj" }], + ["path", { d: "M13 5h6v6", key: "7voy1q" }], + ["path", { d: "M19 5 5 19", key: "wwaj1z" }] +]); + +const MoveDownLeft = createLucideIcon("MoveDownLeftIcon", [ + ["path", { d: "M11 19H5V13", key: "1akmht" }], + ["path", { d: "M19 5L5 19", key: "72u4yj" }] +]); + +const MoveDownRight = createLucideIcon("MoveDownRightIcon", [ + ["path", { d: "M19 13V19H13", key: "10vkzq" }], + ["path", { d: "M5 5L19 19", key: "5zm2fv" }] +]); + +const MoveDown = createLucideIcon("MoveDownIcon", [ + ["path", { d: "M8 18L12 22L16 18", key: "cskvfv" }], + ["path", { d: "M12 2V22", key: "r89rzk" }] +]); + +const MoveHorizontal = createLucideIcon("MoveHorizontalIcon", [ + ["path", { d: "m18 8 4 4-4 4", key: "1ak13k" }], + ["path", { d: "M2 12h20", key: "9i4pu4" }], + ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }] +]); + +const MoveLeft = createLucideIcon("MoveLeftIcon", [ + ["path", { d: "M6 8L2 12L6 16", key: "kyvwex" }], + ["path", { d: "M2 12H22", key: "1m8cig" }] +]); + +const MoveRight = createLucideIcon("MoveRightIcon", [ + ["path", { d: "M18 8L22 12L18 16", key: "1r0oui" }], + ["path", { d: "M2 12H22", key: "1m8cig" }] +]); + +const MoveUpLeft = createLucideIcon("MoveUpLeftIcon", [ + ["path", { d: "M5 11V5H11", key: "3q78g9" }], + ["path", { d: "M5 5L19 19", key: "5zm2fv" }] +]); + +const MoveUpRight = createLucideIcon("MoveUpRightIcon", [ + ["path", { d: "M13 5H19V11", key: "1n1gyv" }], + ["path", { d: "M19 5L5 19", key: "72u4yj" }] +]); + +const MoveUp = createLucideIcon("MoveUpIcon", [ + ["path", { d: "M8 6L12 2L16 6", key: "1yvkyx" }], + ["path", { d: "M12 2V22", key: "r89rzk" }] +]); + +const MoveVertical = createLucideIcon("MoveVerticalIcon", [ + ["path", { d: "M12 2v20", key: "t6zp3m" }], + ["path", { d: "m8 18 4 4 4-4", key: "bh5tu3" }], + ["path", { d: "m8 6 4-4 4 4", key: "ybng9g" }] +]); + +const Move = createLucideIcon("MoveIcon", [ + ["path", { d: "M12 2v20", key: "t6zp3m" }], + ["path", { d: "m15 19-3 3-3-3", key: "11eu04" }], + ["path", { d: "m19 9 3 3-3 3", key: "1mg7y2" }], + ["path", { d: "M2 12h20", key: "9i4pu4" }], + ["path", { d: "m5 9-3 3 3 3", key: "j64kie" }], + ["path", { d: "m9 5 3-3 3 3", key: "l8vdw6" }] +]); + +const Music2 = createLucideIcon("Music2Icon", [ + ["circle", { cx: "8", cy: "18", r: "4", key: "1fc0mg" }], + ["path", { d: "M12 18V2l7 4", key: "g04rme" }] +]); + +const Music3 = createLucideIcon("Music3Icon", [ + ["circle", { cx: "12", cy: "18", r: "4", key: "m3r9ws" }], + ["path", { d: "M16 18V2", key: "40x2m5" }] +]); + +const Music4 = createLucideIcon("Music4Icon", [ + ["path", { d: "M9 18V5l12-2v13", key: "1jmyc2" }], + ["path", { d: "m9 9 12-2", key: "1e64n2" }], + ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }], + ["circle", { cx: "18", cy: "16", r: "3", key: "1hluhg" }] +]); + +const Music = createLucideIcon("MusicIcon", [ + ["path", { d: "M9 18V5l12-2v13", key: "1jmyc2" }], + ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }], + ["circle", { cx: "18", cy: "16", r: "3", key: "1hluhg" }] +]); + +const Navigation2Off = createLucideIcon("Navigation2OffIcon", [ + ["path", { d: "M9.31 9.31 5 21l7-4 7 4-1.17-3.17", key: "qoq2o2" }], + ["path", { d: "M14.53 8.88 12 2l-1.17 3.17", key: "k3sjzy" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Navigation2 = createLucideIcon("Navigation2Icon", [ + ["polygon", { points: "12 2 19 21 12 17 5 21 12 2", key: "x8c0qg" }] +]); + +const NavigationOff = createLucideIcon("NavigationOffIcon", [ + ["path", { d: "M8.43 8.43 3 11l8 2 2 8 2.57-5.43", key: "1vdtb7" }], + ["path", { d: "M17.39 11.73 22 2l-9.73 4.61", key: "tya3r6" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Navigation = createLucideIcon("NavigationIcon", [ + ["polygon", { points: "3 11 22 2 13 21 11 13 3 11", key: "1ltx0t" }] +]); + +const Network = createLucideIcon("NetworkIcon", [ + ["rect", { x: "16", y: "16", width: "6", height: "6", rx: "1", key: "4q2zg0" }], + ["rect", { x: "2", y: "16", width: "6", height: "6", rx: "1", key: "8cvhb9" }], + ["rect", { x: "9", y: "2", width: "6", height: "6", rx: "1", key: "1egb70" }], + ["path", { d: "M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3", key: "1jsf9p" }], + ["path", { d: "M12 12V8", key: "2874zd" }] +]); + +const Newspaper = createLucideIcon("NewspaperIcon", [ + [ + "path", + { + d: "M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2", + key: "7pis2x" + } + ], + ["path", { d: "M18 14h-8", key: "sponae" }], + ["path", { d: "M15 18h-5", key: "95g1m2" }], + ["path", { d: "M10 6h8v4h-8V6Z", key: "smlsk5" }] +]); + +const Nfc = createLucideIcon("NfcIcon", [ + ["path", { d: "M6 8.32a7.43 7.43 0 0 1 0 7.36", key: "9iaqei" }], + ["path", { d: "M9.46 6.21a11.76 11.76 0 0 1 0 11.58", key: "1yha7l" }], + ["path", { d: "M12.91 4.1a15.91 15.91 0 0 1 .01 15.8", key: "4iu2gk" }], + ["path", { d: "M16.37 2a20.16 20.16 0 0 1 0 20", key: "sap9u2" }] +]); + +const NonBinary = createLucideIcon("NonBinaryIcon", [ + ["path", { d: "M12 2v10", key: "mnfbl" }], + ["path", { d: "m9 4 6 4", key: "t8piew" }], + ["path", { d: "m9 8 6-4", key: "sndyih" }], + ["circle", { cx: "12", cy: "17", r: "5", key: "qbz8iq" }] +]); + +const NotebookPen = createLucideIcon("NotebookPenIcon", [ + ["path", { d: "M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4", key: "re6nr2" }], + ["path", { d: "M2 6h4", key: "aawbzj" }], + ["path", { d: "M2 10h4", key: "l0bgd4" }], + ["path", { d: "M2 14h4", key: "1gsvsf" }], + ["path", { d: "M2 18h4", key: "1bu2t1" }], + [ + "path", + { + d: "M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "pqwjuv" + } + ] +]); + +const NotebookTabs = createLucideIcon("NotebookTabsIcon", [ + ["path", { d: "M2 6h4", key: "aawbzj" }], + ["path", { d: "M2 10h4", key: "l0bgd4" }], + ["path", { d: "M2 14h4", key: "1gsvsf" }], + ["path", { d: "M2 18h4", key: "1bu2t1" }], + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }], + ["path", { d: "M15 2v20", key: "dcj49h" }], + ["path", { d: "M15 7h5", key: "1xj5lc" }], + ["path", { d: "M15 12h5", key: "w5shd9" }], + ["path", { d: "M15 17h5", key: "1qaofu" }] +]); + +const NotebookText = createLucideIcon("NotebookTextIcon", [ + ["path", { d: "M2 6h4", key: "aawbzj" }], + ["path", { d: "M2 10h4", key: "l0bgd4" }], + ["path", { d: "M2 14h4", key: "1gsvsf" }], + ["path", { d: "M2 18h4", key: "1bu2t1" }], + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }], + ["path", { d: "M9.5 8h5", key: "11mslq" }], + ["path", { d: "M9.5 12H16", key: "ktog6x" }], + ["path", { d: "M9.5 16H14", key: "p1seyn" }] +]); + +const Notebook = createLucideIcon("NotebookIcon", [ + ["path", { d: "M2 6h4", key: "aawbzj" }], + ["path", { d: "M2 10h4", key: "l0bgd4" }], + ["path", { d: "M2 14h4", key: "1gsvsf" }], + ["path", { d: "M2 18h4", key: "1bu2t1" }], + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }], + ["path", { d: "M16 2v20", key: "rotuqe" }] +]); + +const NotepadTextDashed = createLucideIcon("NotepadTextDashedIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M12 2v4", key: "3427ic" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["path", { d: "M16 4h2a2 2 0 0 1 2 2v2", key: "j91f56" }], + ["path", { d: "M20 12v2", key: "w8o0tu" }], + ["path", { d: "M20 18v2a2 2 0 0 1-2 2h-1", key: "1c9ggx" }], + ["path", { d: "M13 22h-2", key: "191ugt" }], + ["path", { d: "M7 22H6a2 2 0 0 1-2-2v-2", key: "1rt9px" }], + ["path", { d: "M4 14v-2", key: "1v0sqh" }], + ["path", { d: "M4 8V6a2 2 0 0 1 2-2h2", key: "1mwabg" }], + ["path", { d: "M8 10h6", key: "3oa6kw" }], + ["path", { d: "M8 14h8", key: "1fgep2" }], + ["path", { d: "M8 18h5", key: "17enja" }] +]); + +const NotepadText = createLucideIcon("NotepadTextIcon", [ + ["path", { d: "M8 2v4", key: "1cmpym" }], + ["path", { d: "M12 2v4", key: "3427ic" }], + ["path", { d: "M16 2v4", key: "4m81vk" }], + ["rect", { width: "16", height: "18", x: "4", y: "4", rx: "2", key: "1u9h20" }], + ["path", { d: "M8 10h6", key: "3oa6kw" }], + ["path", { d: "M8 14h8", key: "1fgep2" }], + ["path", { d: "M8 18h5", key: "17enja" }] +]); + +const NutOff = createLucideIcon("NutOffIcon", [ + ["path", { d: "M12 4V2", key: "1k5q1u" }], + [ + "path", + { + d: "M5 10v4a7.004 7.004 0 0 0 5.277 6.787c.412.104.802.292 1.102.592L12 22l.621-.621c.3-.3.69-.488 1.102-.592a7.01 7.01 0 0 0 4.125-2.939", + key: "1xcvy9" + } + ], + ["path", { d: "M19 10v3.343", key: "163tfc" }], + [ + "path", + { + d: "M12 12c-1.349-.573-1.905-1.005-2.5-2-.546.902-1.048 1.353-2.5 2-1.018-.644-1.46-1.08-2-2-1.028.71-1.69.918-3 1 1.081-1.048 1.757-2.03 2-3 .194-.776.84-1.551 1.79-2.21m11.654 5.997c.887-.457 1.28-.891 1.556-1.787 1.032.916 1.683 1.157 3 1-1.297-1.036-1.758-2.03-2-3-.5-2-4-4-8-4-.74 0-1.461.068-2.15.192", + key: "17914v" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Nut = createLucideIcon("NutIcon", [ + ["path", { d: "M12 4V2", key: "1k5q1u" }], + [ + "path", + { + d: "M5 10v4a7.004 7.004 0 0 0 5.277 6.787c.412.104.802.292 1.102.592L12 22l.621-.621c.3-.3.69-.488 1.102-.592A7.003 7.003 0 0 0 19 14v-4", + key: "1tgyif" + } + ], + [ + "path", + { + d: "M12 4C8 4 4.5 6 4 8c-.243.97-.919 1.952-2 3 1.31-.082 1.972-.29 3-1 .54.92.982 1.356 2 2 1.452-.647 1.954-1.098 2.5-2 .595.995 1.151 1.427 2.5 2 1.31-.621 1.862-1.058 2.5-2 .629.977 1.162 1.423 2.5 2 1.209-.548 1.68-.967 2-2 1.032.916 1.683 1.157 3 1-1.297-1.036-1.758-2.03-2-3-.5-2-4-4-8-4Z", + key: "tnsqj" + } + ] +]); + +const OctagonAlert = createLucideIcon("OctagonAlertIcon", [ + ["path", { d: "M12 16h.01", key: "1drbdi" }], + ["path", { d: "M12 8v4", key: "1got3b" }], + [ + "path", + { + d: "M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z", + key: "1fd625" + } + ] +]); + +const OctagonMinus = createLucideIcon("OctagonMinusIcon", [ + [ + "path", + { + d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z", + key: "2d38gg" + } + ], + ["path", { d: "M8 12h8", key: "1wcyev" }] +]); + +const OctagonPause = createLucideIcon("OctagonPauseIcon", [ + ["path", { d: "M10 15V9", key: "1lckn7" }], + ["path", { d: "M14 15V9", key: "1muqhk" }], + [ + "path", + { + d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z", + key: "2d38gg" + } + ] +]); + +const OctagonX = createLucideIcon("OctagonXIcon", [ + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + [ + "path", + { + d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z", + key: "2d38gg" + } + ], + ["path", { d: "m9 9 6 6", key: "z0biqf" }] +]); + +const Octagon = createLucideIcon("OctagonIcon", [ + [ + "path", + { + d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z", + key: "2d38gg" + } + ] +]); + +const Omega = createLucideIcon("OmegaIcon", [ + [ + "path", + { + d: "M3 20h4.5a.5.5 0 0 0 .5-.5v-.282a.52.52 0 0 0-.247-.437 8 8 0 1 1 8.494-.001.52.52 0 0 0-.247.438v.282a.5.5 0 0 0 .5.5H21", + key: "1x94xo" + } + ] +]); + +const Option = createLucideIcon("OptionIcon", [ + ["path", { d: "M3 3h6l6 18h6", key: "ph9rgk" }], + ["path", { d: "M14 3h7", key: "16f0ms" }] +]); + +const Orbit = createLucideIcon("OrbitIcon", [ + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["circle", { cx: "19", cy: "5", r: "2", key: "mhkx31" }], + ["circle", { cx: "5", cy: "19", r: "2", key: "v8kfzx" }], + ["path", { d: "M10.4 21.9a10 10 0 0 0 9.941-15.416", key: "eohfx2" }], + ["path", { d: "M13.5 2.1a10 10 0 0 0-9.841 15.416", key: "19pvbm" }] +]); + +const Origami = createLucideIcon("OrigamiIcon", [ + ["path", { d: "M12 12V4a1 1 0 0 1 1-1h6.297a1 1 0 0 1 .651 1.759l-4.696 4.025", key: "1bx4vc" }], + [ + "path", + { + d: "m12 21-7.414-7.414A2 2 0 0 1 4 12.172V6.415a1.002 1.002 0 0 1 1.707-.707L20 20.009", + key: "1h3km6" + } + ], + [ + "path", + { + d: "m12.214 3.381 8.414 14.966a1 1 0 0 1-.167 1.199l-1.168 1.163a1 1 0 0 1-.706.291H6.351a1 1 0 0 1-.625-.219L3.25 18.8a1 1 0 0 1 .631-1.781l4.165.027", + key: "1hj4wg" + } + ] +]); + +const Package2 = createLucideIcon("Package2Icon", [ + ["path", { d: "M3 9h18v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9Z", key: "1ront0" }], + ["path", { d: "m3 9 2.45-4.9A2 2 0 0 1 7.24 3h9.52a2 2 0 0 1 1.8 1.1L21 9", key: "19h2x1" }], + ["path", { d: "M12 3v6", key: "1holv5" }] +]); + +const PackageCheck = createLucideIcon("PackageCheckIcon", [ + ["path", { d: "m16 16 2 2 4-4", key: "gfu2re" }], + [ + "path", + { + d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14", + key: "e7tb2h" + } + ], + ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }], + ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "12", key: "a4e8g8" }] +]); + +const PackageMinus = createLucideIcon("PackageMinusIcon", [ + ["path", { d: "M16 16h6", key: "100bgy" }], + [ + "path", + { + d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14", + key: "e7tb2h" + } + ], + ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }], + ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "12", key: "a4e8g8" }] +]); + +const PackageOpen = createLucideIcon("PackageOpenIcon", [ + ["path", { d: "M12 22v-9", key: "x3hkom" }], + [ + "path", + { + d: "M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z", + key: "2ntwy6" + } + ], + [ + "path", + { + d: "M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13", + key: "1pmm1c" + } + ], + [ + "path", + { + d: "M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z", + key: "12ttoo" + } + ] +]); + +const PackagePlus = createLucideIcon("PackagePlusIcon", [ + ["path", { d: "M16 16h6", key: "100bgy" }], + ["path", { d: "M19 13v6", key: "85cyf1" }], + [ + "path", + { + d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14", + key: "e7tb2h" + } + ], + ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }], + ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "12", key: "a4e8g8" }] +]); + +const PackageSearch = createLucideIcon("PackageSearchIcon", [ + [ + "path", + { + d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14", + key: "e7tb2h" + } + ], + ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }], + ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "12", key: "a4e8g8" }], + ["circle", { cx: "18.5", cy: "15.5", r: "2.5", key: "b5zd12" }], + ["path", { d: "M20.27 17.27 22 19", key: "1l4muz" }] +]); + +const PackageX = createLucideIcon("PackageXIcon", [ + [ + "path", + { + d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14", + key: "e7tb2h" + } + ], + ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }], + ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }], + ["line", { x1: "12", x2: "12", y1: "22", y2: "12", key: "a4e8g8" }], + ["path", { d: "m17 13 5 5m-5 0 5-5", key: "im3w4b" }] +]); + +const Package = createLucideIcon("PackageIcon", [ + [ + "path", + { + d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z", + key: "1a0edw" + } + ], + ["path", { d: "M12 22V12", key: "d0xqtd" }], + ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }], + ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }] +]); + +const PaintBucket = createLucideIcon("PaintBucketIcon", [ + [ + "path", + { d: "m19 11-8-8-8.6 8.6a2 2 0 0 0 0 2.8l5.2 5.2c.8.8 2 .8 2.8 0L19 11Z", key: "irua1i" } + ], + ["path", { d: "m5 2 5 5", key: "1lls2c" }], + ["path", { d: "M2 13h15", key: "1hkzvu" }], + ["path", { d: "M22 20a2 2 0 1 1-4 0c0-1.6 1.7-2.4 2-4 .3 1.6 2 2.4 2 4Z", key: "xk76lq" }] +]); + +const PaintRoller = createLucideIcon("PaintRollerIcon", [ + ["rect", { width: "16", height: "6", x: "2", y: "2", rx: "2", key: "jcyz7m" }], + ["path", { d: "M10 16v-2a2 2 0 0 1 2-2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2", key: "1b9h7c" }], + ["rect", { width: "4", height: "6", x: "8", y: "16", rx: "1", key: "d6e7yl" }] +]); + +const PaintbrushVertical = createLucideIcon("PaintbrushVerticalIcon", [ + ["path", { d: "M10 2v2", key: "7u0qdc" }], + ["path", { d: "M14 2v4", key: "qmzblu" }], + ["path", { d: "M17 2a1 1 0 0 1 1 1v9H6V3a1 1 0 0 1 1-1z", key: "ycvu00" }], + [ + "path", + { + d: "M6 12a1 1 0 0 0-1 1v1a2 2 0 0 0 2 2h2a1 1 0 0 1 1 1v2.9a2 2 0 1 0 4 0V17a1 1 0 0 1 1-1h2a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1", + key: "iw4wnp" + } + ] +]); + +const Paintbrush = createLucideIcon("PaintbrushIcon", [ + ["path", { d: "m14.622 17.897-10.68-2.913", key: "vj2p1u" }], + [ + "path", + { + d: "M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z", + key: "18tc5c" + } + ], + [ + "path", + { + d: "M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15", + key: "ytzfxy" + } + ] +]); + +const Palette = createLucideIcon("PaletteIcon", [ + ["circle", { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor", key: "1okk4w" }], + ["circle", { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor", key: "f64h9f" }], + ["circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor", key: "fotxhn" }], + ["circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor", key: "qy21gx" }], + [ + "path", + { + d: "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z", + key: "12rzf8" + } + ] +]); + +const PanelBottomClose = createLucideIcon("PanelBottomCloseIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 15h18", key: "5xshup" }], + ["path", { d: "m15 8-3 3-3-3", key: "1oxy1z" }] +]); + +const PanelBottomDashed = createLucideIcon("PanelBottomDashedIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M14 15h1", key: "171nev" }], + ["path", { d: "M19 15h2", key: "1vnucp" }], + ["path", { d: "M3 15h2", key: "8bym0q" }], + ["path", { d: "M9 15h1", key: "1tg3ks" }] +]); + +const PanelBottomOpen = createLucideIcon("PanelBottomOpenIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 15h18", key: "5xshup" }], + ["path", { d: "m9 10 3-3 3 3", key: "11gsxs" }] +]); + +const PanelBottom = createLucideIcon("PanelBottomIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 15h18", key: "5xshup" }] +]); + +const PanelLeftClose = createLucideIcon("PanelLeftCloseIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 3v18", key: "fh3hqa" }], + ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }] +]); + +const PanelLeftDashed = createLucideIcon("PanelLeftDashedIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 14v1", key: "askpd8" }], + ["path", { d: "M9 19v2", key: "16tejx" }], + ["path", { d: "M9 3v2", key: "1noubl" }], + ["path", { d: "M9 9v1", key: "19ebxg" }] +]); + +const PanelLeftOpen = createLucideIcon("PanelLeftOpenIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 3v18", key: "fh3hqa" }], + ["path", { d: "m14 9 3 3-3 3", key: "8010ee" }] +]); + +const PanelLeft = createLucideIcon("PanelLeftIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 3v18", key: "fh3hqa" }] +]); + +const PanelRightClose = createLucideIcon("PanelRightCloseIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M15 3v18", key: "14nvp0" }], + ["path", { d: "m8 9 3 3-3 3", key: "12hl5m" }] +]); + +const PanelRightDashed = createLucideIcon("PanelRightDashedIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M15 14v1", key: "ilsfch" }], + ["path", { d: "M15 19v2", key: "1fst2f" }], + ["path", { d: "M15 3v2", key: "z204g4" }], + ["path", { d: "M15 9v1", key: "z2a8b1" }] +]); + +const PanelRightOpen = createLucideIcon("PanelRightOpenIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M15 3v18", key: "14nvp0" }], + ["path", { d: "m10 15-3-3 3-3", key: "1pgupc" }] +]); + +const PanelRight = createLucideIcon("PanelRightIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M15 3v18", key: "14nvp0" }] +]); + +const PanelTopClose = createLucideIcon("PanelTopCloseIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["path", { d: "m9 16 3-3 3 3", key: "1idcnm" }] +]); + +const PanelTopDashed = createLucideIcon("PanelTopDashedIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M14 9h1", key: "l0svgy" }], + ["path", { d: "M19 9h2", key: "te2zfg" }], + ["path", { d: "M3 9h2", key: "1h4ldw" }], + ["path", { d: "M9 9h1", key: "15jzuz" }] +]); + +const PanelTopOpen = createLucideIcon("PanelTopOpenIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["path", { d: "m15 14-3 3-3-3", key: "g215vf" }] +]); + +const PanelTop = createLucideIcon("PanelTopIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9h18", key: "1pudct" }] +]); + +const PanelsLeftBottom = createLucideIcon("PanelsLeftBottomIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 3v18", key: "fh3hqa" }], + ["path", { d: "M9 15h12", key: "5ijen5" }] +]); + +const PanelsRightBottom = createLucideIcon("PanelsRightBottomIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 15h12", key: "1wkqb3" }], + ["path", { d: "M15 3v18", key: "14nvp0" }] +]); + +const PanelsTopLeft = createLucideIcon("PanelsTopLeftIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["path", { d: "M9 21V9", key: "1oto5p" }] +]); + +const Paperclip = createLucideIcon("PaperclipIcon", [ + ["path", { d: "M13.234 20.252 21 12.3", key: "1cbrk9" }], + [ + "path", + { + d: "m16 6-8.414 8.586a2 2 0 0 0 0 2.828 2 2 0 0 0 2.828 0l8.414-8.586a4 4 0 0 0 0-5.656 4 4 0 0 0-5.656 0l-8.415 8.585a6 6 0 1 0 8.486 8.486", + key: "1pkts6" + } + ] +]); + +const Parentheses = createLucideIcon("ParenthesesIcon", [ + ["path", { d: "M8 21s-4-3-4-9 4-9 4-9", key: "uto9ud" }], + ["path", { d: "M16 3s4 3 4 9-4 9-4 9", key: "4w2vsq" }] +]); + +const ParkingMeter = createLucideIcon("ParkingMeterIcon", [ + ["path", { d: "M11 15h2", key: "199qp6" }], + ["path", { d: "M12 12v3", key: "158kv8" }], + ["path", { d: "M12 19v3", key: "npa21l" }], + [ + "path", + { + d: "M15.282 19a1 1 0 0 0 .948-.68l2.37-6.988a7 7 0 1 0-13.2 0l2.37 6.988a1 1 0 0 0 .948.68z", + key: "1jofit" + } + ], + ["path", { d: "M9 9a3 3 0 1 1 6 0", key: "jdoeu8" }] +]); + +const PartyPopper = createLucideIcon("PartyPopperIcon", [ + ["path", { d: "M5.8 11.3 2 22l10.7-3.79", key: "gwxi1d" }], + ["path", { d: "M4 3h.01", key: "1vcuye" }], + ["path", { d: "M22 8h.01", key: "1mrtc2" }], + ["path", { d: "M15 2h.01", key: "1cjtqr" }], + ["path", { d: "M22 20h.01", key: "1mrys2" }], + [ + "path", + { + d: "m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10", + key: "hbicv8" + } + ], + [ + "path", + { d: "m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17", key: "1i94pl" } + ], + ["path", { d: "m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7", key: "1cofks" }], + [ + "path", + { + d: "M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z", + key: "4kbmks" + } + ] +]); + +const Pause = createLucideIcon("PauseIcon", [ + ["rect", { x: "14", y: "4", width: "4", height: "16", rx: "1", key: "zuxfzm" }], + ["rect", { x: "6", y: "4", width: "4", height: "16", rx: "1", key: "1okwgv" }] +]); + +const PawPrint = createLucideIcon("PawPrintIcon", [ + ["circle", { cx: "11", cy: "4", r: "2", key: "vol9p0" }], + ["circle", { cx: "18", cy: "8", r: "2", key: "17gozi" }], + ["circle", { cx: "20", cy: "16", r: "2", key: "1v9bxh" }], + [ + "path", + { + d: "M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z", + key: "1ydw1z" + } + ] +]); + +const PcCase = createLucideIcon("PcCaseIcon", [ + ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", key: "1uq1d7" }], + ["path", { d: "M15 14h.01", key: "1kp3bh" }], + ["path", { d: "M9 6h6", key: "dgm16u" }], + ["path", { d: "M9 10h6", key: "9gxzsh" }] +]); + +const PenLine = createLucideIcon("PenLineIcon", [ + ["path", { d: "M12 20h9", key: "t2du7b" }], + [ + "path", + { + d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z", + key: "1ykcvy" + } + ] +]); + +const PenOff = createLucideIcon("PenOffIcon", [ + [ + "path", + { + d: "m10 10-6.157 6.162a2 2 0 0 0-.5.833l-1.322 4.36a.5.5 0 0 0 .622.624l4.358-1.323a2 2 0 0 0 .83-.5L14 13.982", + key: "bjo8r8" + } + ], + ["path", { d: "m12.829 7.172 4.359-4.346a1 1 0 1 1 3.986 3.986l-4.353 4.353", key: "16h5ne" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const PenTool = createLucideIcon("PenToolIcon", [ + [ + "path", + { + d: "M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z", + key: "nt11vn" + } + ], + [ + "path", + { + d: "m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18", + key: "15qc1e" + } + ], + ["path", { d: "m2.3 2.3 7.286 7.286", key: "1wuzzi" }], + ["circle", { cx: "11", cy: "11", r: "2", key: "xmgehs" }] +]); + +const Pen = createLucideIcon("PenIcon", [ + [ + "path", + { + d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z", + key: "1a8usu" + } + ] +]); + +const PencilLine = createLucideIcon("PencilLineIcon", [ + ["path", { d: "M12 20h9", key: "t2du7b" }], + [ + "path", + { + d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z", + key: "1ykcvy" + } + ], + ["path", { d: "m15 5 3 3", key: "1w25hb" }] +]); + +const PencilOff = createLucideIcon("PencilOffIcon", [ + [ + "path", + { + d: "m10 10-6.157 6.162a2 2 0 0 0-.5.833l-1.322 4.36a.5.5 0 0 0 .622.624l4.358-1.323a2 2 0 0 0 .83-.5L14 13.982", + key: "bjo8r8" + } + ], + ["path", { d: "m12.829 7.172 4.359-4.346a1 1 0 1 1 3.986 3.986l-4.353 4.353", key: "16h5ne" }], + ["path", { d: "m15 5 4 4", key: "1mk7zo" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const PencilRuler = createLucideIcon("PencilRulerIcon", [ + [ + "path", + { d: "M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13", key: "orapub" } + ], + ["path", { d: "m8 6 2-2", key: "115y1s" }], + ["path", { d: "m18 16 2-2", key: "ee94s4" }], + [ + "path", + { + d: "m17 11 4.3 4.3c.94.94.94 2.46 0 3.4l-2.6 2.6c-.94.94-2.46.94-3.4 0L11 17", + key: "cfq27r" + } + ], + [ + "path", + { + d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z", + key: "1a8usu" + } + ], + ["path", { d: "m15 5 4 4", key: "1mk7zo" }] +]); + +const Pencil = createLucideIcon("PencilIcon", [ + [ + "path", + { + d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z", + key: "1a8usu" + } + ], + ["path", { d: "m15 5 4 4", key: "1mk7zo" }] +]); + +const Pentagon = createLucideIcon("PentagonIcon", [ + [ + "path", + { + d: "M10.83 2.38a2 2 0 0 1 2.34 0l8 5.74a2 2 0 0 1 .73 2.25l-3.04 9.26a2 2 0 0 1-1.9 1.37H7.04a2 2 0 0 1-1.9-1.37L2.1 10.37a2 2 0 0 1 .73-2.25z", + key: "2hea0t" + } + ] +]); + +const Percent = createLucideIcon("PercentIcon", [ + ["line", { x1: "19", x2: "5", y1: "5", y2: "19", key: "1x9vlm" }], + ["circle", { cx: "6.5", cy: "6.5", r: "2.5", key: "4mh3h7" }], + ["circle", { cx: "17.5", cy: "17.5", r: "2.5", key: "1mdrzq" }] +]); + +const PersonStanding = createLucideIcon("PersonStandingIcon", [ + ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }], + ["path", { d: "m9 20 3-6 3 6", key: "se2kox" }], + ["path", { d: "m6 8 6 2 6-2", key: "4o3us4" }], + ["path", { d: "M12 10v4", key: "1kjpxc" }] +]); + +const PhilippinePeso = createLucideIcon("PhilippinePesoIcon", [ + ["path", { d: "M20 11H4", key: "6ut86h" }], + ["path", { d: "M20 7H4", key: "zbl0bi" }], + ["path", { d: "M7 21V4a1 1 0 0 1 1-1h4a1 1 0 0 1 0 12H7", key: "1ana5r" }] +]); + +const PhoneCall = createLucideIcon("PhoneCallIcon", [ + [ + "path", + { + d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z", + key: "foiqr5" + } + ], + ["path", { d: "M14.05 2a9 9 0 0 1 8 7.94", key: "vmijpz" }], + ["path", { d: "M14.05 6A5 5 0 0 1 18 10", key: "13nbpp" }] +]); + +const PhoneForwarded = createLucideIcon("PhoneForwardedIcon", [ + ["polyline", { points: "18 2 22 6 18 10", key: "6vjanh" }], + ["line", { x1: "14", x2: "22", y1: "6", y2: "6", key: "1jsywh" }], + [ + "path", + { + d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z", + key: "foiqr5" + } + ] +]); + +const PhoneIncoming = createLucideIcon("PhoneIncomingIcon", [ + ["polyline", { points: "16 2 16 8 22 8", key: "1ygljm" }], + ["line", { x1: "22", x2: "16", y1: "2", y2: "8", key: "1xzwqn" }], + [ + "path", + { + d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z", + key: "foiqr5" + } + ] +]); + +const PhoneMissed = createLucideIcon("PhoneMissedIcon", [ + ["line", { x1: "22", x2: "16", y1: "2", y2: "8", key: "1xzwqn" }], + ["line", { x1: "16", x2: "22", y1: "2", y2: "8", key: "13zxdn" }], + [ + "path", + { + d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z", + key: "foiqr5" + } + ] +]); + +const PhoneOff = createLucideIcon("PhoneOffIcon", [ + [ + "path", + { + d: "M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91", + key: "z86iuo" + } + ], + ["line", { x1: "22", x2: "2", y1: "2", y2: "22", key: "11kh81" }] +]); + +const PhoneOutgoing = createLucideIcon("PhoneOutgoingIcon", [ + ["polyline", { points: "22 8 22 2 16 2", key: "1g204g" }], + ["line", { x1: "16", x2: "22", y1: "8", y2: "2", key: "1ggias" }], + [ + "path", + { + d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z", + key: "foiqr5" + } + ] +]); + +const Phone = createLucideIcon("PhoneIcon", [ + [ + "path", + { + d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z", + key: "foiqr5" + } + ] +]); + +const Pi = createLucideIcon("PiIcon", [ + ["line", { x1: "9", x2: "9", y1: "4", y2: "20", key: "ovs5a5" }], + ["path", { d: "M4 7c0-1.7 1.3-3 3-3h13", key: "10pag4" }], + ["path", { d: "M18 20c-1.7 0-3-1.3-3-3V4", key: "1gaosr" }] +]); + +const Piano = createLucideIcon("PianoIcon", [ + [ + "path", + { + d: "M18.5 8c-1.4 0-2.6-.8-3.2-2A6.87 6.87 0 0 0 2 9v11a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-8.5C22 9.6 20.4 8 18.5 8", + key: "lag0yf" + } + ], + ["path", { d: "M2 14h20", key: "myj16y" }], + ["path", { d: "M6 14v4", key: "9ng0ue" }], + ["path", { d: "M10 14v4", key: "1v8uk5" }], + ["path", { d: "M14 14v4", key: "1tqops" }], + ["path", { d: "M18 14v4", key: "18uqwm" }] +]); + +const Pickaxe = createLucideIcon("PickaxeIcon", [ + ["path", { d: "M14.531 12.469 6.619 20.38a1 1 0 1 1-3-3l7.912-7.912", key: "we99rg" }], + [ + "path", + { + d: "M15.686 4.314A12.5 12.5 0 0 0 5.461 2.958 1 1 0 0 0 5.58 4.71a22 22 0 0 1 6.318 3.393", + key: "1w6hck" + } + ], + [ + "path", + { + d: "M17.7 3.7a1 1 0 0 0-1.4 0l-4.6 4.6a1 1 0 0 0 0 1.4l2.6 2.6a1 1 0 0 0 1.4 0l4.6-4.6a1 1 0 0 0 0-1.4z", + key: "15hgfx" + } + ], + [ + "path", + { + d: "M19.686 8.314a12.501 12.501 0 0 1 1.356 10.225 1 1 0 0 1-1.751-.119 22 22 0 0 0-3.393-6.319", + key: "452b4h" + } + ] +]); + +const PictureInPicture2 = createLucideIcon("PictureInPicture2Icon", [ + ["path", { d: "M21 9V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h4", key: "daa4of" }], + ["rect", { width: "10", height: "7", x: "12", y: "13", rx: "2", key: "1nb8gs" }] +]); + +const PictureInPicture = createLucideIcon("PictureInPictureIcon", [ + ["path", { d: "M2 10h6V4", key: "zwrco" }], + ["path", { d: "m2 4 6 6", key: "ug085t" }], + ["path", { d: "M21 10V7a2 2 0 0 0-2-2h-7", key: "git5jr" }], + ["path", { d: "M3 14v2a2 2 0 0 0 2 2h3", key: "1f7fh3" }], + ["rect", { x: "12", y: "14", width: "10", height: "7", rx: "1", key: "1wjs3o" }] +]); + +const PiggyBank = createLucideIcon("PiggyBankIcon", [ + [ + "path", + { + d: "M19 5c-1.5 0-2.8 1.4-3 2-3.5-1.5-11-.3-11 5 0 1.8 0 3 2 4.5V20h4v-2h3v2h4v-4c1-.5 1.7-1 2-2h2v-4h-2c0-1-.5-1.5-1-2V5z", + key: "1ivx2i" + } + ], + ["path", { d: "M2 9v1c0 1.1.9 2 2 2h1", key: "nm575m" }], + ["path", { d: "M16 11h.01", key: "xkw8gn" }] +]); + +const PilcrowLeft = createLucideIcon("PilcrowLeftIcon", [ + ["path", { d: "M14 3v11", key: "mlfb7b" }], + ["path", { d: "M14 9h-3a3 3 0 0 1 0-6h9", key: "1ulc19" }], + ["path", { d: "M18 3v11", key: "1phi0r" }], + ["path", { d: "M22 18H2l4-4", key: "yt65j9" }], + ["path", { d: "m6 22-4-4", key: "6jgyf5" }] +]); + +const PilcrowRight = createLucideIcon("PilcrowRightIcon", [ + ["path", { d: "M10 3v11", key: "o3l5kj" }], + ["path", { d: "M10 9H7a1 1 0 0 1 0-6h8", key: "1wb1nc" }], + ["path", { d: "M14 3v11", key: "mlfb7b" }], + ["path", { d: "m18 14 4 4H2", key: "4r8io1" }], + ["path", { d: "m22 18-4 4", key: "1hjjrd" }] +]); + +const Pilcrow = createLucideIcon("PilcrowIcon", [ + ["path", { d: "M13 4v16", key: "8vvj80" }], + ["path", { d: "M17 4v16", key: "7dpous" }], + ["path", { d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13", key: "sh4n9v" }] +]); + +const PillBottle = createLucideIcon("PillBottleIcon", [ + ["path", { d: "M18 11h-4a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h4", key: "17ldeb" }], + ["path", { d: "M6 7v13a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7", key: "nc37y6" }], + ["rect", { width: "16", height: "5", x: "4", y: "2", rx: "1", key: "3jeezo" }] +]); + +const Pill = createLucideIcon("PillIcon", [ + [ + "path", + { d: "m10.5 20.5 10-10a4.95 4.95 0 1 0-7-7l-10 10a4.95 4.95 0 1 0 7 7Z", key: "wa1lgi" } + ], + ["path", { d: "m8.5 8.5 7 7", key: "rvfmvr" }] +]); + +const PinOff = createLucideIcon("PinOffIcon", [ + ["path", { d: "M12 17v5", key: "bb1du9" }], + ["path", { d: "M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89", key: "znwnzq" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + [ + "path", + { + d: "M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11", + key: "c9qhm2" + } + ] +]); + +const Pin = createLucideIcon("PinIcon", [ + ["path", { d: "M12 17v5", key: "bb1du9" }], + [ + "path", + { + d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z", + key: "1nkz8b" + } + ] +]); + +const Pipette = createLucideIcon("PipetteIcon", [ + ["path", { d: "m2 22 1-1h3l9-9", key: "1sre89" }], + ["path", { d: "M3 21v-3l9-9", key: "hpe2y6" }], + [ + "path", + { + d: "m15 6 3.4-3.4a2.1 2.1 0 1 1 3 3L18 9l.4.4a2.1 2.1 0 1 1-3 3l-3.8-3.8a2.1 2.1 0 1 1 3-3l.4.4Z", + key: "196du1" + } + ] +]); + +const Pizza = createLucideIcon("PizzaIcon", [ + ["path", { d: "m12 14-1 1", key: "11onhr" }], + ["path", { d: "m13.75 18.25-1.25 1.42", key: "1yisr3" }], + ["path", { d: "M17.775 5.654a15.68 15.68 0 0 0-12.121 12.12", key: "1qtqk6" }], + ["path", { d: "M18.8 9.3a1 1 0 0 0 2.1 7.7", key: "fbbbr2" }], + [ + "path", + { + d: "M21.964 20.732a1 1 0 0 1-1.232 1.232l-18-5a1 1 0 0 1-.695-1.232A19.68 19.68 0 0 1 15.732 2.037a1 1 0 0 1 1.232.695z", + key: "1hyfdd" + } + ] +]); + +const PlaneLanding = createLucideIcon("PlaneLandingIcon", [ + ["path", { d: "M2 22h20", key: "272qi7" }], + [ + "path", + { + d: "M3.77 10.77 2 9l2-4.5 1.1.55c.55.28.9.84.9 1.45s.35 1.17.9 1.45L8 8.5l3-6 1.05.53a2 2 0 0 1 1.09 1.52l.72 5.4a2 2 0 0 0 1.09 1.52l4.4 2.2c.42.22.78.55 1.01.96l.6 1.03c.49.88-.06 1.98-1.06 2.1l-1.18.15c-.47.06-.95-.02-1.37-.24L4.29 11.15a2 2 0 0 1-.52-.38Z", + key: "1ma21e" + } + ] +]); + +const PlaneTakeoff = createLucideIcon("PlaneTakeoffIcon", [ + ["path", { d: "M2 22h20", key: "272qi7" }], + [ + "path", + { + d: "M6.36 17.4 4 17l-2-4 1.1-.55a2 2 0 0 1 1.8 0l.17.1a2 2 0 0 0 1.8 0L8 12 5 6l.9-.45a2 2 0 0 1 2.09.2l4.02 3a2 2 0 0 0 2.1.2l4.19-2.06a2.41 2.41 0 0 1 1.73-.17L21 7a1.4 1.4 0 0 1 .87 1.99l-.38.76c-.23.46-.6.84-1.07 1.08L7.58 17.2a2 2 0 0 1-1.22.18Z", + key: "fkigj9" + } + ] +]); + +const Plane = createLucideIcon("PlaneIcon", [ + [ + "path", + { + d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z", + key: "1v9wt8" + } + ] +]); + +const Play = createLucideIcon("PlayIcon", [ + ["polygon", { points: "6 3 20 12 6 21 6 3", key: "1oa8hb" }] +]); + +const Plug2 = createLucideIcon("Plug2Icon", [ + ["path", { d: "M9 2v6", key: "17ngun" }], + ["path", { d: "M15 2v6", key: "s7yy2p" }], + ["path", { d: "M12 17v5", key: "bb1du9" }], + ["path", { d: "M5 8h14", key: "pcz4l3" }], + ["path", { d: "M6 11V8h12v3a6 6 0 1 1-12 0Z", key: "wtfw2c" }] +]); + +const PlugZap = createLucideIcon("PlugZapIcon", [ + [ + "path", + { d: "M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z", key: "goz73y" } + ], + ["path", { d: "m2 22 3-3", key: "19mgm9" }], + ["path", { d: "M7.5 13.5 10 11", key: "7xgeeb" }], + ["path", { d: "M10.5 16.5 13 14", key: "10btkg" }], + ["path", { d: "m18 3-4 4h6l-4 4", key: "16psg9" }] +]); + +const Plug = createLucideIcon("PlugIcon", [ + ["path", { d: "M12 22v-5", key: "1ega77" }], + ["path", { d: "M9 8V2", key: "14iosj" }], + ["path", { d: "M15 8V2", key: "18g5xt" }], + ["path", { d: "M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z", key: "osxo6l" }] +]); + +const Plus = createLucideIcon("PlusIcon", [ + ["path", { d: "M5 12h14", key: "1ays0h" }], + ["path", { d: "M12 5v14", key: "s699le" }] +]); + +const PocketKnife = createLucideIcon("PocketKnifeIcon", [ + ["path", { d: "M3 2v1c0 1 2 1 2 2S3 6 3 7s2 1 2 2-2 1-2 2 2 1 2 2", key: "19w3oe" }], + ["path", { d: "M18 6h.01", key: "1v4wsw" }], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "M20.83 8.83a4 4 0 0 0-5.66-5.66l-12 12a4 4 0 1 0 5.66 5.66Z", key: "6fykxj" }], + ["path", { d: "M18 11.66V22a4 4 0 0 0 4-4V6", key: "1utzek" }] +]); + +const Pocket = createLucideIcon("PocketIcon", [ + [ + "path", + { + d: "M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z", + key: "1mz881" + } + ], + ["polyline", { points: "8 10 12 14 16 10", key: "w4mbv5" }] +]); + +const Podcast = createLucideIcon("PodcastIcon", [ + ["path", { d: "M16.85 18.58a9 9 0 1 0-9.7 0", key: "d71mpg" }], + ["path", { d: "M8 14a5 5 0 1 1 8 0", key: "fc81rn" }], + ["circle", { cx: "12", cy: "11", r: "1", key: "1gvufo" }], + ["path", { d: "M13 17a1 1 0 1 0-2 0l.5 4.5a.5.5 0 1 0 1 0Z", key: "za5kbj" }] +]); + +const PointerOff = createLucideIcon("PointerOffIcon", [ + ["path", { d: "M10 4.5V4a2 2 0 0 0-2.41-1.957", key: "jsi14n" }], + ["path", { d: "M13.9 8.4a2 2 0 0 0-1.26-1.295", key: "hirc7f" }], + [ + "path", + { d: "M21.7 16.2A8 8 0 0 0 22 14v-3a2 2 0 1 0-4 0v-1a2 2 0 0 0-3.63-1.158", key: "1jxb2e" } + ], + [ + "path", + { + d: "m7 15-1.8-1.8a2 2 0 0 0-2.79 2.86L6 19.7a7.74 7.74 0 0 0 6 2.3h2a8 8 0 0 0 5.657-2.343", + key: "10r7hm" + } + ], + ["path", { d: "M6 6v8", key: "tv5xkp" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Pointer = createLucideIcon("PointerIcon", [ + ["path", { d: "M22 14a8 8 0 0 1-8 8", key: "56vcr3" }], + ["path", { d: "M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2", key: "1agjmk" }], + ["path", { d: "M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1", key: "wdbh2u" }], + ["path", { d: "M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10", key: "1ibuk9" }], + [ + "path", + { + d: "M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15", + key: "g6ys72" + } + ] +]); + +const Popcorn = createLucideIcon("PopcornIcon", [ + [ + "path", + { + d: "M18 8a2 2 0 0 0 0-4 2 2 0 0 0-4 0 2 2 0 0 0-4 0 2 2 0 0 0-4 0 2 2 0 0 0 0 4", + key: "10td1f" + } + ], + ["path", { d: "M10 22 9 8", key: "yjptiv" }], + ["path", { d: "m14 22 1-14", key: "8jwc8b" }], + [ + "path", + { + d: "M20 8c.5 0 .9.4.8 1l-2.6 12c-.1.5-.7 1-1.2 1H7c-.6 0-1.1-.4-1.2-1L3.2 9c-.1-.6.3-1 .8-1Z", + key: "1qo33t" + } + ] +]); + +const Popsicle = createLucideIcon("PopsicleIcon", [ + [ + "path", + { + d: "M18.6 14.4c.8-.8.8-2 0-2.8l-8.1-8.1a4.95 4.95 0 1 0-7.1 7.1l8.1 8.1c.9.7 2.1.7 2.9-.1Z", + key: "1o68ps" + } + ], + ["path", { d: "m22 22-5.5-5.5", key: "17o70y" }] +]); + +const PoundSterling = createLucideIcon("PoundSterlingIcon", [ + ["path", { d: "M18 7c0-5.333-8-5.333-8 0", key: "1prm2n" }], + ["path", { d: "M10 7v14", key: "18tmcs" }], + ["path", { d: "M6 21h12", key: "4dkmi1" }], + ["path", { d: "M6 13h10", key: "ybwr4a" }] +]); + +const PowerOff = createLucideIcon("PowerOffIcon", [ + ["path", { d: "M18.36 6.64A9 9 0 0 1 20.77 15", key: "dxknvb" }], + ["path", { d: "M6.16 6.16a9 9 0 1 0 12.68 12.68", key: "1x7qb5" }], + ["path", { d: "M12 2v4", key: "3427ic" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Power = createLucideIcon("PowerIcon", [ + ["path", { d: "M12 2v10", key: "mnfbl" }], + ["path", { d: "M18.4 6.6a9 9 0 1 1-12.77.04", key: "obofu9" }] +]); + +const Presentation = createLucideIcon("PresentationIcon", [ + ["path", { d: "M2 3h20", key: "91anmk" }], + ["path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3", key: "2k9sn8" }], + ["path", { d: "m7 21 5-5 5 5", key: "bip4we" }] +]); + +const PrinterCheck = createLucideIcon("PrinterCheckIcon", [ + ["path", { d: "M13.5 22H7a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v.5", key: "qeb09x" }], + ["path", { d: "m16 19 2 2 4-4", key: "1b14m6" }], + ["path", { d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v2", key: "1md90i" }], + ["path", { d: "M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6", key: "1itne7" }] +]); + +const Printer = createLucideIcon("PrinterIcon", [ + [ + "path", + { + d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2", + key: "143wyd" + } + ], + ["path", { d: "M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6", key: "1itne7" }], + ["rect", { x: "6", y: "14", width: "12", height: "8", rx: "1", key: "1ue0tg" }] +]); + +const Projector = createLucideIcon("ProjectorIcon", [ + ["path", { d: "M5 7 3 5", key: "1yys58" }], + ["path", { d: "M9 6V3", key: "1ptz9u" }], + ["path", { d: "m13 7 2-2", key: "1w3vmq" }], + ["circle", { cx: "9", cy: "13", r: "3", key: "1mma13" }], + [ + "path", + { + d: "M11.83 12H20a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h2.17", + key: "2frwzc" + } + ], + ["path", { d: "M16 16h2", key: "dnq2od" }] +]); + +const Proportions = createLucideIcon("ProportionsIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "M12 9v11", key: "1fnkrn" }], + ["path", { d: "M2 9h13a2 2 0 0 1 2 2v9", key: "11z3ex" }] +]); + +const Puzzle = createLucideIcon("PuzzleIcon", [ + [ + "path", + { + d: "M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z", + key: "w46dr5" + } + ] +]); + +const Pyramid = createLucideIcon("PyramidIcon", [ + [ + "path", + { + d: "M2.5 16.88a1 1 0 0 1-.32-1.43l9-13.02a1 1 0 0 1 1.64 0l9 13.01a1 1 0 0 1-.32 1.44l-8.51 4.86a2 2 0 0 1-1.98 0Z", + key: "aenxs0" + } + ], + ["path", { d: "M12 2v20", key: "t6zp3m" }] +]); + +const QrCode = createLucideIcon("QrCodeIcon", [ + ["rect", { width: "5", height: "5", x: "3", y: "3", rx: "1", key: "1tu5fj" }], + ["rect", { width: "5", height: "5", x: "16", y: "3", rx: "1", key: "1v8r4q" }], + ["rect", { width: "5", height: "5", x: "3", y: "16", rx: "1", key: "1x03jg" }], + ["path", { d: "M21 16h-3a2 2 0 0 0-2 2v3", key: "177gqh" }], + ["path", { d: "M21 21v.01", key: "ents32" }], + ["path", { d: "M12 7v3a2 2 0 0 1-2 2H7", key: "8crl2c" }], + ["path", { d: "M3 12h.01", key: "nlz23k" }], + ["path", { d: "M12 3h.01", key: "n36tog" }], + ["path", { d: "M12 16v.01", key: "133mhm" }], + ["path", { d: "M16 12h1", key: "1slzba" }], + ["path", { d: "M21 12v.01", key: "1lwtk9" }], + ["path", { d: "M12 21v-1", key: "1880an" }] +]); + +const Quote = createLucideIcon("QuoteIcon", [ + [ + "path", + { + d: "M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z", + key: "rib7q0" + } + ], + [ + "path", + { + d: "M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z", + key: "1ymkrd" + } + ] +]); + +const Rabbit = createLucideIcon("RabbitIcon", [ + ["path", { d: "M13 16a3 3 0 0 1 2.24 5", key: "1epib5" }], + ["path", { d: "M18 12h.01", key: "yjnet6" }], + [ + "path", + { + d: "M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3", + key: "ue9ozu" + } + ], + ["path", { d: "M20 8.54V4a2 2 0 1 0-4 0v3", key: "49iql8" }], + ["path", { d: "M7.612 12.524a3 3 0 1 0-1.6 4.3", key: "1e33i0" }] +]); + +const Radar = createLucideIcon("RadarIcon", [ + ["path", { d: "M19.07 4.93A10 10 0 0 0 6.99 3.34", key: "z3du51" }], + ["path", { d: "M4 6h.01", key: "oypzma" }], + ["path", { d: "M2.29 9.62A10 10 0 1 0 21.31 8.35", key: "qzzz0" }], + ["path", { d: "M16.24 7.76A6 6 0 1 0 8.23 16.67", key: "1yjesh" }], + ["path", { d: "M12 18h.01", key: "mhygvu" }], + ["path", { d: "M17.99 11.66A6 6 0 0 1 15.77 16.67", key: "1u2y91" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "m13.41 10.59 5.66-5.66", key: "mhq4k0" }] +]); + +const Radiation = createLucideIcon("RadiationIcon", [ + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + [ + "path", + { + d: "M7.5 4.2c-.3-.5-.9-.7-1.3-.4C3.9 5.5 2.3 8.1 2 11c-.1.5.4 1 1 1h5c0-1.5.8-2.8 2-3.4-1.1-1.9-2-3.5-2.5-4.4z", + key: "wy49g3" + } + ], + [ + "path", + { + d: "M21 12c.6 0 1-.4 1-1-.3-2.9-1.8-5.5-4.1-7.1-.4-.3-1.1-.2-1.3.3-.6.9-1.5 2.5-2.6 4.3 1.2.7 2 2 2 3.5h5z", + key: "vklnvr" + } + ], + [ + "path", + { + d: "M7.5 19.8c-.3.5-.1 1.1.4 1.3 2.6 1.2 5.6 1.2 8.2 0 .5-.2.7-.8.4-1.3-.5-.9-1.4-2.5-2.5-4.3-1.2.7-2.8.7-4 0-1.1 1.8-2 3.4-2.5 4.3z", + key: "wkdf1o" + } + ] +]); + +const Radical = createLucideIcon("RadicalIcon", [ + [ + "path", + { + d: "M3 12h3.28a1 1 0 0 1 .948.684l2.298 7.934a.5.5 0 0 0 .96-.044L13.82 4.771A1 1 0 0 1 14.792 4H21", + key: "1mqj8i" + } + ] +]); + +const RadioReceiver = createLucideIcon("RadioReceiverIcon", [ + ["path", { d: "M5 16v2", key: "g5qcv5" }], + ["path", { d: "M19 16v2", key: "1gbaio" }], + ["rect", { width: "20", height: "8", x: "2", y: "8", rx: "2", key: "vjsjur" }], + ["path", { d: "M18 12h.01", key: "yjnet6" }] +]); + +const RadioTower = createLucideIcon("RadioTowerIcon", [ + ["path", { d: "M4.9 16.1C1 12.2 1 5.8 4.9 1.9", key: "s0qx1y" }], + ["path", { d: "M7.8 4.7a6.14 6.14 0 0 0-.8 7.5", key: "1idnkw" }], + ["circle", { cx: "12", cy: "9", r: "2", key: "1092wv" }], + ["path", { d: "M16.2 4.8c2 2 2.26 5.11.8 7.47", key: "ojru2q" }], + ["path", { d: "M19.1 1.9a9.96 9.96 0 0 1 0 14.1", key: "rhi7fg" }], + ["path", { d: "M9.5 18h5", key: "mfy3pd" }], + ["path", { d: "m8 22 4-11 4 11", key: "25yftu" }] +]); + +const Radio = createLucideIcon("RadioIcon", [ + ["path", { d: "M4.9 19.1C1 15.2 1 8.8 4.9 4.9", key: "1vaf9d" }], + ["path", { d: "M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5", key: "u1ii0m" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5", key: "1j5fej" }], + ["path", { d: "M19.1 4.9C23 8.8 23 15.1 19.1 19", key: "10b0cb" }] +]); + +const Radius = createLucideIcon("RadiusIcon", [ + ["path", { d: "M20.34 17.52a10 10 0 1 0-2.82 2.82", key: "fydyku" }], + ["circle", { cx: "19", cy: "19", r: "2", key: "17f5cg" }], + ["path", { d: "m13.41 13.41 4.18 4.18", key: "1gqbwc" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }] +]); + +const RailSymbol = createLucideIcon("RailSymbolIcon", [ + ["path", { d: "M5 15h14", key: "m0yey3" }], + ["path", { d: "M5 9h14", key: "7tsvo6" }], + ["path", { d: "m14 20-5-5 6-6-5-5", key: "1jo42i" }] +]); + +const Rainbow = createLucideIcon("RainbowIcon", [ + ["path", { d: "M22 17a10 10 0 0 0-20 0", key: "ozegv" }], + ["path", { d: "M6 17a6 6 0 0 1 12 0", key: "5giftw" }], + ["path", { d: "M10 17a2 2 0 0 1 4 0", key: "gnsikk" }] +]); + +const Rat = createLucideIcon("RatIcon", [ + ["path", { d: "M13 22H4a2 2 0 0 1 0-4h12", key: "bt3f23" }], + ["path", { d: "M13.236 18a3 3 0 0 0-2.2-5", key: "1tbvmo" }], + ["path", { d: "M16 9h.01", key: "1bdo4e" }], + [ + "path", + { + d: "M16.82 3.94a3 3 0 1 1 3.237 4.868l1.815 2.587a1.5 1.5 0 0 1-1.5 2.1l-2.872-.453a3 3 0 0 0-3.5 3", + key: "9ch7kn" + } + ], + ["path", { d: "M17 4.988a3 3 0 1 0-5.2 2.052A7 7 0 0 0 4 14.015 4 4 0 0 0 8 18", key: "3s7e9i" }] +]); + +const Ratio = createLucideIcon("RatioIcon", [ + ["rect", { width: "12", height: "20", x: "6", y: "2", rx: "2", key: "1oxtiu" }], + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }] +]); + +const ReceiptCent = createLucideIcon("ReceiptCentIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M12 6.5v11", key: "ecfhkf" }], + ["path", { d: "M15 9.4a4 4 0 1 0 0 5.2", key: "1makmb" }] +]); + +const ReceiptEuro = createLucideIcon("ReceiptEuroIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M8 12h5", key: "1g6qi8" }], + ["path", { d: "M16 9.5a4 4 0 1 0 0 5.2", key: "b2px4r" }] +]); + +const ReceiptIndianRupee = createLucideIcon("ReceiptIndianRupeeIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M8 7h8", key: "i86dvs" }], + ["path", { d: "M12 17.5 8 15h1a4 4 0 0 0 0-8", key: "grpkl4" }], + ["path", { d: "M8 11h8", key: "vwpz6n" }] +]); + +const ReceiptJapaneseYen = createLucideIcon("ReceiptJapaneseYenIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "m12 10 3-3", key: "1mc12w" }], + ["path", { d: "m9 7 3 3v7.5", key: "39i0xv" }], + ["path", { d: "M9 11h6", key: "1fldmi" }], + ["path", { d: "M9 15h6", key: "cctwl0" }] +]); + +const ReceiptPoundSterling = createLucideIcon("ReceiptPoundSterlingIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M8 13h5", key: "1k9z8w" }], + ["path", { d: "M10 17V9.5a2.5 2.5 0 0 1 5 0", key: "1dzgp0" }], + ["path", { d: "M8 17h7", key: "8mjdqu" }] +]); + +const ReceiptRussianRuble = createLucideIcon("ReceiptRussianRubleIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M8 15h5", key: "vxg57a" }], + ["path", { d: "M8 11h5a2 2 0 1 0 0-4h-3v10", key: "1usi5u" }] +]); + +const ReceiptSwissFranc = createLucideIcon("ReceiptSwissFrancIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M10 17V7h5", key: "k7jq18" }], + ["path", { d: "M10 11h4", key: "1i0mka" }], + ["path", { d: "M8 15h5", key: "vxg57a" }] +]); + +const ReceiptText = createLucideIcon("ReceiptTextIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M14 8H8", key: "1l3xfs" }], + ["path", { d: "M16 12H8", key: "1fr5h0" }], + ["path", { d: "M13 16H8", key: "wsln4y" }] +]); + +const Receipt = createLucideIcon("ReceiptIcon", [ + [ + "path", + { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z", key: "q3az6g" } + ], + ["path", { d: "M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8", key: "1h4pet" }], + ["path", { d: "M12 17.5v-11", key: "1jc1ny" }] +]); + +const RectangleEllipsis = createLucideIcon("RectangleEllipsisIcon", [ + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M17 12h.01", key: "1m0b6t" }], + ["path", { d: "M7 12h.01", key: "eqddd0" }] +]); + +const RectangleHorizontal = createLucideIcon("RectangleHorizontalIcon", [ + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }] +]); + +const RectangleVertical = createLucideIcon("RectangleVerticalIcon", [ + ["rect", { width: "12", height: "20", x: "6", y: "2", rx: "2", key: "1oxtiu" }] +]); + +const Recycle = createLucideIcon("RecycleIcon", [ + [ + "path", + { + d: "M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5", + key: "x6z5xu" + } + ], + [ + "path", + { + d: "M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12", + key: "1x4zh5" + } + ], + ["path", { d: "m14 16-3 3 3 3", key: "f6jyew" }], + ["path", { d: "M8.293 13.596 7.196 9.5 3.1 10.598", key: "wf1obh" }], + [ + "path", + { + d: "m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843", + key: "9tzpgr" + } + ], + ["path", { d: "m13.378 9.633 4.096 1.098 1.097-4.096", key: "1oe83g" }] +]); + +const Redo2 = createLucideIcon("Redo2Icon", [ + ["path", { d: "m15 14 5-5-5-5", key: "12vg1m" }], + ["path", { d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13", key: "6uklza" }] +]); + +const RedoDot = createLucideIcon("RedoDotIcon", [ + ["circle", { cx: "12", cy: "17", r: "1", key: "1ixnty" }], + ["path", { d: "M21 7v6h-6", key: "3ptur4" }], + ["path", { d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7", key: "1kgawr" }] +]); + +const Redo = createLucideIcon("RedoIcon", [ + ["path", { d: "M21 7v6h-6", key: "3ptur4" }], + ["path", { d: "M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7", key: "1kgawr" }] +]); + +const RefreshCcwDot = createLucideIcon("RefreshCcwDotIcon", [ + ["path", { d: "M3 2v6h6", key: "18ldww" }], + ["path", { d: "M21 12A9 9 0 0 0 6 5.3L3 8", key: "1pbrqz" }], + ["path", { d: "M21 22v-6h-6", key: "usdfbe" }], + ["path", { d: "M3 12a9 9 0 0 0 15 6.7l3-2.7", key: "1hosoe" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }] +]); + +const RefreshCcw = createLucideIcon("RefreshCcwIcon", [ + ["path", { d: "M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "14sxne" }], + ["path", { d: "M3 3v5h5", key: "1xhq8a" }], + ["path", { d: "M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16", key: "1hlbsb" }], + ["path", { d: "M16 16h5v5", key: "ccwih5" }] +]); + +const RefreshCwOff = createLucideIcon("RefreshCwOffIcon", [ + ["path", { d: "M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47", key: "1krf6h" }], + ["path", { d: "M8 16H3v5", key: "1cv678" }], + ["path", { d: "M3 12C3 9.51 4 7.26 5.64 5.64", key: "ruvoct" }], + ["path", { d: "m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64", key: "19q130" }], + ["path", { d: "M21 12c0 1-.16 1.97-.47 2.87", key: "4w8emr" }], + ["path", { d: "M21 3v5h-5", key: "1q7to0" }], + ["path", { d: "M22 22 2 2", key: "1r8tn9" }] +]); + +const RefreshCw = createLucideIcon("RefreshCwIcon", [ + ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }], + ["path", { d: "M21 3v5h-5", key: "1q7to0" }], + ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }], + ["path", { d: "M8 16H3v5", key: "1cv678" }] +]); + +const Refrigerator = createLucideIcon("RefrigeratorIcon", [ + [ + "path", + { d: "M5 6a4 4 0 0 1 4-4h6a4 4 0 0 1 4 4v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6Z", key: "fpq118" } + ], + ["path", { d: "M5 10h14", key: "elsbfy" }], + ["path", { d: "M15 7v6", key: "1nx30x" }] +]); + +const Regex = createLucideIcon("RegexIcon", [ + ["path", { d: "M17 3v10", key: "15fgeh" }], + ["path", { d: "m12.67 5.5 8.66 5", key: "1gpheq" }], + ["path", { d: "m12.67 10.5 8.66-5", key: "1dkfa6" }], + [ + "path", + { d: "M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z", key: "swwfx4" } + ] +]); + +const RemoveFormatting = createLucideIcon("RemoveFormattingIcon", [ + ["path", { d: "M4 7V4h16v3", key: "9msm58" }], + ["path", { d: "M5 20h6", key: "1h6pxn" }], + ["path", { d: "M13 4 8 20", key: "kqq6aj" }], + ["path", { d: "m15 15 5 5", key: "me55sn" }], + ["path", { d: "m20 15-5 5", key: "11p7ol" }] +]); + +const Repeat1 = createLucideIcon("Repeat1Icon", [ + ["path", { d: "m17 2 4 4-4 4", key: "nntrym" }], + ["path", { d: "M3 11v-1a4 4 0 0 1 4-4h14", key: "84bu3i" }], + ["path", { d: "m7 22-4-4 4-4", key: "1wqhfi" }], + ["path", { d: "M21 13v1a4 4 0 0 1-4 4H3", key: "1rx37r" }], + ["path", { d: "M11 10h1v4", key: "70cz1p" }] +]); + +const Repeat2 = createLucideIcon("Repeat2Icon", [ + ["path", { d: "m2 9 3-3 3 3", key: "1ltn5i" }], + ["path", { d: "M13 18H7a2 2 0 0 1-2-2V6", key: "1r6tfw" }], + ["path", { d: "m22 15-3 3-3-3", key: "4rnwn2" }], + ["path", { d: "M11 6h6a2 2 0 0 1 2 2v10", key: "2f72bc" }] +]); + +const Repeat = createLucideIcon("RepeatIcon", [ + ["path", { d: "m17 2 4 4-4 4", key: "nntrym" }], + ["path", { d: "M3 11v-1a4 4 0 0 1 4-4h14", key: "84bu3i" }], + ["path", { d: "m7 22-4-4 4-4", key: "1wqhfi" }], + ["path", { d: "M21 13v1a4 4 0 0 1-4 4H3", key: "1rx37r" }] +]); + +const ReplaceAll = createLucideIcon("ReplaceAllIcon", [ + ["path", { d: "M14 14a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2", key: "1yyzbs" }], + ["path", { d: "M14 4a2 2 0 0 1 2-2", key: "1w2hp7" }], + ["path", { d: "M16 10a2 2 0 0 1-2-2", key: "shjach" }], + ["path", { d: "M20 14a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2", key: "zfj4xr" }], + ["path", { d: "M20 2a2 2 0 0 1 2 2", key: "188mtx" }], + ["path", { d: "M22 8a2 2 0 0 1-2 2", key: "ddf4tu" }], + ["path", { d: "m3 7 3 3 3-3", key: "x25e72" }], + ["path", { d: "M6 10V5a 3 3 0 0 1 3-3h1", key: "1ageje" }], + ["rect", { x: "2", y: "14", width: "8", height: "8", rx: "2", key: "4rksxw" }] +]); + +const Replace = createLucideIcon("ReplaceIcon", [ + ["path", { d: "M14 4a2 2 0 0 1 2-2", key: "1w2hp7" }], + ["path", { d: "M16 10a2 2 0 0 1-2-2", key: "shjach" }], + ["path", { d: "M20 2a2 2 0 0 1 2 2", key: "188mtx" }], + ["path", { d: "M22 8a2 2 0 0 1-2 2", key: "ddf4tu" }], + ["path", { d: "m3 7 3 3 3-3", key: "x25e72" }], + ["path", { d: "M6 10V5a3 3 0 0 1 3-3h1", key: "3y3t5z" }], + ["rect", { x: "2", y: "14", width: "8", height: "8", rx: "2", key: "4rksxw" }] +]); + +const ReplyAll = createLucideIcon("ReplyAllIcon", [ + ["polyline", { points: "7 17 2 12 7 7", key: "t83bqg" }], + ["polyline", { points: "12 17 7 12 12 7", key: "1g4ajm" }], + ["path", { d: "M22 18v-2a4 4 0 0 0-4-4H7", key: "1fcyog" }] +]); + +const Reply = createLucideIcon("ReplyIcon", [ + ["polyline", { points: "9 17 4 12 9 7", key: "hvgpf2" }], + ["path", { d: "M20 18v-2a4 4 0 0 0-4-4H4", key: "5vmcpk" }] +]); + +const Rewind = createLucideIcon("RewindIcon", [ + ["polygon", { points: "11 19 2 12 11 5 11 19", key: "14yba5" }], + ["polygon", { points: "22 19 13 12 22 5 22 19", key: "1pi1cj" }] +]); + +const Ribbon = createLucideIcon("RibbonIcon", [ + [ + "path", + { d: "M12 11.22C11 9.997 10 9 10 8a2 2 0 0 1 4 0c0 1-.998 2.002-2.01 3.22", key: "1rnhq3" } + ], + ["path", { d: "m12 18 2.57-3.5", key: "116vt7" }], + ["path", { d: "M6.243 9.016a7 7 0 0 1 11.507-.009", key: "10dq0b" }], + ["path", { d: "M9.35 14.53 12 11.22", key: "tdsyp2" }], + [ + "path", + { + d: "M9.35 14.53C7.728 12.246 6 10.221 6 7a6 5 0 0 1 12 0c-.005 3.22-1.778 5.235-3.43 7.5l3.557 4.527a1 1 0 0 1-.203 1.43l-1.894 1.36a1 1 0 0 1-1.384-.215L12 18l-2.679 3.593a1 1 0 0 1-1.39.213l-1.865-1.353a1 1 0 0 1-.203-1.422z", + key: "nmifey" + } + ] +]); + +const Rocket = createLucideIcon("RocketIcon", [ + [ + "path", + { + d: "M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z", + key: "m3kijz" + } + ], + [ + "path", + { + d: "m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z", + key: "1fmvmk" + } + ], + ["path", { d: "M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0", key: "1f8sc4" }], + ["path", { d: "M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5", key: "qeys4" }] +]); + +const RockingChair = createLucideIcon("RockingChairIcon", [ + ["polyline", { points: "3.5 2 6.5 12.5 18 12.5", key: "y3iy52" }], + ["line", { x1: "9.5", x2: "5.5", y1: "12.5", y2: "20", key: "19vg5i" }], + ["line", { x1: "15", x2: "18.5", y1: "12.5", y2: "20", key: "1inpmv" }], + ["path", { d: "M2.75 18a13 13 0 0 0 18.5 0", key: "1nquas" }] +]); + +const RollerCoaster = createLucideIcon("RollerCoasterIcon", [ + ["path", { d: "M6 19V5", key: "1r845m" }], + ["path", { d: "M10 19V6.8", key: "9j2tfs" }], + ["path", { d: "M14 19v-7.8", key: "10s8qv" }], + ["path", { d: "M18 5v4", key: "1tajlv" }], + ["path", { d: "M18 19v-6", key: "ielfq3" }], + ["path", { d: "M22 19V9", key: "158nzp" }], + ["path", { d: "M2 19V9a4 4 0 0 1 4-4c2 0 4 1.33 6 4s4 4 6 4a4 4 0 1 0-3-6.65", key: "1930oh" }] +]); + +const Rotate3d = createLucideIcon("Rotate3dIcon", [ + [ + "path", + { + d: "M16.466 7.5C15.643 4.237 13.952 2 12 2 9.239 2 7 6.477 7 12s2.239 10 5 10c.342 0 .677-.069 1-.2", + key: "10n0gc" + } + ], + ["path", { d: "m15.194 13.707 3.814 1.86-1.86 3.814", key: "16shm9" }], + [ + "path", + { + d: "M19 15.57c-1.804.885-4.274 1.43-7 1.43-5.523 0-10-2.239-10-5s4.477-5 10-5c4.838 0 8.873 1.718 9.8 4", + key: "1lxi77" + } + ] +]); + +const RotateCcwSquare = createLucideIcon("RotateCcwSquareIcon", [ + ["path", { d: "M20 9V7a2 2 0 0 0-2-2h-6", key: "19z8uc" }], + ["path", { d: "m15 2-3 3 3 3", key: "177bxs" }], + ["path", { d: "M20 13v5a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2", key: "d36hnl" }] +]); + +const RotateCcw = createLucideIcon("RotateCcwIcon", [ + ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }], + ["path", { d: "M3 3v5h5", key: "1xhq8a" }] +]); + +const RotateCwSquare = createLucideIcon("RotateCwSquareIcon", [ + ["path", { d: "M12 5H6a2 2 0 0 0-2 2v3", key: "l96uqu" }], + ["path", { d: "m9 8 3-3-3-3", key: "1gzgc3" }], + ["path", { d: "M4 14v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2", key: "1w2k5h" }] +]); + +const RotateCw = createLucideIcon("RotateCwIcon", [ + ["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }], + ["path", { d: "M21 3v5h-5", key: "1q7to0" }] +]); + +const RouteOff = createLucideIcon("RouteOffIcon", [ + ["circle", { cx: "6", cy: "19", r: "3", key: "1kj8tv" }], + ["path", { d: "M9 19h8.5c.4 0 .9-.1 1.3-.2", key: "1effex" }], + ["path", { d: "M5.2 5.2A3.5 3.53 0 0 0 6.5 12H12", key: "k9y2ds" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M21 15.3a3.5 3.5 0 0 0-3.3-3.3", key: "11nlu2" }], + ["path", { d: "M15 5h-4.3", key: "6537je" }], + ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }] +]); + +const Route = createLucideIcon("RouteIcon", [ + ["circle", { cx: "6", cy: "19", r: "3", key: "1kj8tv" }], + ["path", { d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15", key: "1d8sl" }], + ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }] +]); + +const Router = createLucideIcon("RouterIcon", [ + ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", key: "w68u3i" }], + ["path", { d: "M6.01 18H6", key: "19vcac" }], + ["path", { d: "M10.01 18H10", key: "uamcmx" }], + ["path", { d: "M15 10v4", key: "qjz1xs" }], + ["path", { d: "M17.84 7.17a4 4 0 0 0-5.66 0", key: "1rif40" }], + ["path", { d: "M20.66 4.34a8 8 0 0 0-11.31 0", key: "6a5xfq" }] +]); + +const Rows2 = createLucideIcon("Rows2Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 12h18", key: "1i2n21" }] +]); + +const Rows3 = createLucideIcon("Rows3Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M21 9H3", key: "1338ky" }], + ["path", { d: "M21 15H3", key: "9uk58r" }] +]); + +const Rows4 = createLucideIcon("Rows4Icon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M21 7.5H3", key: "1hm9pq" }], + ["path", { d: "M21 12H3", key: "2avoz0" }], + ["path", { d: "M21 16.5H3", key: "n7jzkj" }] +]); + +const Rss = createLucideIcon("RssIcon", [ + ["path", { d: "M4 11a9 9 0 0 1 9 9", key: "pv89mb" }], + ["path", { d: "M4 4a16 16 0 0 1 16 16", key: "k0647b" }], + ["circle", { cx: "5", cy: "19", r: "1", key: "bfqh0e" }] +]); + +const Ruler = createLucideIcon("RulerIcon", [ + [ + "path", + { + d: "M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z", + key: "icamh8" + } + ], + ["path", { d: "m14.5 12.5 2-2", key: "inckbg" }], + ["path", { d: "m11.5 9.5 2-2", key: "fmmyf7" }], + ["path", { d: "m8.5 6.5 2-2", key: "vc6u1g" }], + ["path", { d: "m17.5 15.5 2-2", key: "wo5hmg" }] +]); + +const RussianRuble = createLucideIcon("RussianRubleIcon", [ + ["path", { d: "M6 11h8a4 4 0 0 0 0-8H9v18", key: "18ai8t" }], + ["path", { d: "M6 15h8", key: "1y8f6l" }] +]); + +const Sailboat = createLucideIcon("SailboatIcon", [ + ["path", { d: "M22 18H2a4 4 0 0 0 4 4h12a4 4 0 0 0 4-4Z", key: "1404fh" }], + ["path", { d: "M21 14 10 2 3 14h18Z", key: "1nzg7v" }], + ["path", { d: "M10 2v16", key: "1labyt" }] +]); + +const Salad = createLucideIcon("SaladIcon", [ + ["path", { d: "M7 21h10", key: "1b0cd5" }], + ["path", { d: "M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z", key: "4rw317" }], + [ + "path", + { + d: "M11.38 12a2.4 2.4 0 0 1-.4-4.77 2.4 2.4 0 0 1 3.2-2.77 2.4 2.4 0 0 1 3.47-.63 2.4 2.4 0 0 1 3.37 3.37 2.4 2.4 0 0 1-1.1 3.7 2.51 2.51 0 0 1 .03 1.1", + key: "10xrj0" + } + ], + ["path", { d: "m13 12 4-4", key: "1hckqy" }], + ["path", { d: "M10.9 7.25A3.99 3.99 0 0 0 4 10c0 .73.2 1.41.54 2", key: "1p4srx" }] +]); + +const Sandwich = createLucideIcon("SandwichIcon", [ + ["path", { d: "m2.37 11.223 8.372-6.777a2 2 0 0 1 2.516 0l8.371 6.777", key: "f1wd0e" }], + ["path", { d: "M21 15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-5.25", key: "1pfu07" }], + ["path", { d: "M3 15a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h9", key: "1oq9qw" }], + ["path", { d: "m6.67 15 6.13 4.6a2 2 0 0 0 2.8-.4l3.15-4.2", key: "1fnwu5" }], + ["rect", { width: "20", height: "4", x: "2", y: "11", rx: "1", key: "itshg" }] +]); + +const SatelliteDish = createLucideIcon("SatelliteDishIcon", [ + ["path", { d: "M4 10a7.31 7.31 0 0 0 10 10Z", key: "1fzpp3" }], + ["path", { d: "m9 15 3-3", key: "88sc13" }], + ["path", { d: "M17 13a6 6 0 0 0-6-6", key: "15cc6u" }], + ["path", { d: "M21 13A10 10 0 0 0 11 3", key: "11nf8s" }] +]); + +const Satellite = createLucideIcon("SatelliteIcon", [ + ["path", { d: "M13 7 9 3 5 7l4 4", key: "vyckw6" }], + ["path", { d: "m17 11 4 4-4 4-4-4", key: "rchckc" }], + ["path", { d: "m8 12 4 4 6-6-4-4Z", key: "1sshf7" }], + ["path", { d: "m16 8 3-3", key: "x428zp" }], + ["path", { d: "M9 21a6 6 0 0 0-6-6", key: "1iajcf" }] +]); + +const SaveAll = createLucideIcon("SaveAllIcon", [ + ["path", { d: "M10 2v3a1 1 0 0 0 1 1h5", key: "1xspal" }], + ["path", { d: "M18 18v-6a1 1 0 0 0-1-1h-6a1 1 0 0 0-1 1v6", key: "1ra60u" }], + ["path", { d: "M18 22H4a2 2 0 0 1-2-2V6", key: "pblm9e" }], + [ + "path", + { + d: "M8 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9.172a2 2 0 0 1 1.414.586l2.828 2.828A2 2 0 0 1 22 6.828V16a2 2 0 0 1-2.01 2z", + key: "1yve0x" + } + ] +]); + +const SaveOff = createLucideIcon("SaveOffIcon", [ + ["path", { d: "M13 13H8a1 1 0 0 0-1 1v7", key: "h8g396" }], + ["path", { d: "M14 8h1", key: "1lfen6" }], + ["path", { d: "M17 21v-4", key: "1yknxs" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + [ + "path", + { d: "M20.41 20.41A2 2 0 0 1 19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 .59-1.41", key: "1t4vdl" } + ], + ["path", { d: "M29.5 11.5s5 5 4 5", key: "zzn4i6" }], + ["path", { d: "M9 3h6.2a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V15", key: "24cby9" }] +]); + +const Save = createLucideIcon("SaveIcon", [ + [ + "path", + { + d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z", + key: "1c8476" + } + ], + ["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }], + ["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }] +]); + +const Scale3d = createLucideIcon("Scale3dIcon", [ + ["path", { d: "M5 7v11a1 1 0 0 0 1 1h11", key: "13dt1j" }], + ["path", { d: "M5.293 18.707 11 13", key: "ezgbsx" }], + ["circle", { cx: "19", cy: "19", r: "2", key: "17f5cg" }], + ["circle", { cx: "5", cy: "5", r: "2", key: "1gwv83" }] +]); + +const Scale = createLucideIcon("ScaleIcon", [ + ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }], + ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }], + ["path", { d: "M7 21h10", key: "1b0cd5" }], + ["path", { d: "M12 3v18", key: "108xh3" }], + ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }] +]); + +const Scaling = createLucideIcon("ScalingIcon", [ + ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }], + ["path", { d: "M14 15H9v-5", key: "pi4jk9" }], + ["path", { d: "M16 3h5v5", key: "1806ms" }], + ["path", { d: "M21 3 9 15", key: "15kdhq" }] +]); + +const ScanBarcode = createLucideIcon("ScanBarcodeIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["path", { d: "M8 7v10", key: "23sfjj" }], + ["path", { d: "M12 7v10", key: "jspqdw" }], + ["path", { d: "M17 7v10", key: "578dap" }] +]); + +const ScanEye = createLucideIcon("ScanEyeIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }], + [ + "path", + { + d: "M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0", + key: "11ak4c" + } + ] +]); + +const ScanFace = createLucideIcon("ScanFaceIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["path", { d: "M8 14s1.5 2 4 2 4-2 4-2", key: "1y1vjs" }], + ["path", { d: "M9 9h.01", key: "1q5me6" }], + ["path", { d: "M15 9h.01", key: "x1ddxp" }] +]); + +const ScanHeart = createLucideIcon("ScanHeartIcon", [ + [ + "path", + { + d: "M11.246 16.657a1 1 0 0 0 1.508 0l3.57-4.101A2.75 2.75 0 1 0 12 9.168a2.75 2.75 0 1 0-4.324 3.388z", + key: "1algrk" + } + ], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }] +]); + +const ScanLine = createLucideIcon("ScanLineIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["path", { d: "M7 12h10", key: "b7w52i" }] +]); + +const ScanQrCode = createLucideIcon("ScanQrCodeIcon", [ + ["path", { d: "M17 12v4a1 1 0 0 1-1 1h-4", key: "uk4fdo" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M17 8V7", key: "q2g9wo" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M7 17h.01", key: "19xn7k" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["rect", { x: "7", y: "7", width: "5", height: "5", rx: "1", key: "m9kyts" }] +]); + +const ScanSearch = createLucideIcon("ScanSearchIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["path", { d: "m16 16-1.9-1.9", key: "1dq9hf" }] +]); + +const ScanText = createLucideIcon("ScanTextIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], + ["path", { d: "M7 8h8", key: "1jbsf9" }], + ["path", { d: "M7 12h10", key: "b7w52i" }], + ["path", { d: "M7 16h6", key: "1vyc9m" }] +]); + +const Scan = createLucideIcon("ScanIcon", [ + ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], + ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], + ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], + ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }] +]); + +const School = createLucideIcon("SchoolIcon", [ + ["path", { d: "M14 22v-4a2 2 0 1 0-4 0v4", key: "hhkicm" }], + [ + "path", + { + d: "m18 10 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-7.382a1 1 0 0 1 .553-.894L6 10", + key: "1xqip1" + } + ], + ["path", { d: "M18 5v17", key: "1sw6gf" }], + ["path", { d: "m4 6 7.106-3.553a2 2 0 0 1 1.788 0L20 6", key: "9d2mlk" }], + ["path", { d: "M6 5v17", key: "1xfsm0" }], + ["circle", { cx: "12", cy: "9", r: "2", key: "1092wv" }] +]); + +const ScissorsLineDashed = createLucideIcon("ScissorsLineDashedIcon", [ + ["path", { d: "M5.42 9.42 8 12", key: "12pkuq" }], + ["circle", { cx: "4", cy: "8", r: "2", key: "107mxr" }], + ["path", { d: "m14 6-8.58 8.58", key: "gvzu5l" }], + ["circle", { cx: "4", cy: "16", r: "2", key: "1ehqvc" }], + ["path", { d: "M10.8 14.8 14 18", key: "ax7m9r" }], + ["path", { d: "M16 12h-2", key: "10asgb" }], + ["path", { d: "M22 12h-2", key: "14jgyd" }] +]); + +const Scissors = createLucideIcon("ScissorsIcon", [ + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["path", { d: "M8.12 8.12 12 12", key: "1alkpv" }], + ["path", { d: "M20 4 8.12 15.88", key: "xgtan2" }], + ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }], + ["path", { d: "M14.8 14.8 20 20", key: "ptml3r" }] +]); + +const ScreenShareOff = createLucideIcon("ScreenShareOffIcon", [ + ["path", { d: "M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3", key: "i8wdob" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "m22 3-5 5", key: "12jva0" }], + ["path", { d: "m17 3 5 5", key: "k36vhe" }] +]); + +const ScreenShare = createLucideIcon("ScreenShareIcon", [ + ["path", { d: "M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3", key: "i8wdob" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "m17 8 5-5", key: "fqif7o" }], + ["path", { d: "M17 3h5v5", key: "1o3tu8" }] +]); + +const ScrollText = createLucideIcon("ScrollTextIcon", [ + ["path", { d: "M15 12h-5", key: "r7krc0" }], + ["path", { d: "M15 8h-5", key: "1khuty" }], + ["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }], + [ + "path", + { + d: "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3", + key: "1ph1d7" + } + ] +]); + +const Scroll = createLucideIcon("ScrollIcon", [ + ["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }], + [ + "path", + { + d: "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3", + key: "1ph1d7" + } + ] +]); + +const SearchCheck = createLucideIcon("SearchCheckIcon", [ + ["path", { d: "m8 11 2 2 4-4", key: "1sed1v" }], + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }] +]); + +const SearchCode = createLucideIcon("SearchCodeIcon", [ + ["path", { d: "m13 13.5 2-2.5-2-2.5", key: "1rvxrh" }], + ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }], + ["path", { d: "M9 8.5 7 11l2 2.5", key: "6ffwbx" }], + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }] +]); + +const SearchSlash = createLucideIcon("SearchSlashIcon", [ + ["path", { d: "m13.5 8.5-5 5", key: "1cs55j" }], + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }] +]); + +const SearchX = createLucideIcon("SearchXIcon", [ + ["path", { d: "m13.5 8.5-5 5", key: "1cs55j" }], + ["path", { d: "m8.5 8.5 5 5", key: "a8mexj" }], + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }] +]); + +const Search = createLucideIcon("SearchIcon", [ + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }] +]); + +const Section = createLucideIcon("SectionIcon", [ + ["path", { d: "M16 5a4 3 0 0 0-8 0c0 4 8 3 8 7a4 3 0 0 1-8 0", key: "vqan6v" }], + ["path", { d: "M8 19a4 3 0 0 0 8 0c0-4-8-3-8-7a4 3 0 0 1 8 0", key: "wdjd8o" }] +]); + +const SendHorizontal = createLucideIcon("SendHorizontalIcon", [ + [ + "path", + { + d: "M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z", + key: "117uat" + } + ], + ["path", { d: "M6 12h16", key: "s4cdu5" }] +]); + +const SendToBack = createLucideIcon("SendToBackIcon", [ + ["rect", { x: "14", y: "14", width: "8", height: "8", rx: "2", key: "1b0bso" }], + ["rect", { x: "2", y: "2", width: "8", height: "8", rx: "2", key: "1x09vl" }], + ["path", { d: "M7 14v1a2 2 0 0 0 2 2h1", key: "pao6x6" }], + ["path", { d: "M14 7h1a2 2 0 0 1 2 2v1", key: "19tdru" }] +]); + +const Send = createLucideIcon("SendIcon", [ + [ + "path", + { + d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z", + key: "1ffxy3" + } + ], + ["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }] +]); + +const SeparatorHorizontal = createLucideIcon("SeparatorHorizontalIcon", [ + ["line", { x1: "3", x2: "21", y1: "12", y2: "12", key: "10d38w" }], + ["polyline", { points: "8 8 12 4 16 8", key: "zo8t4w" }], + ["polyline", { points: "16 16 12 20 8 16", key: "1oyrid" }] +]); + +const SeparatorVertical = createLucideIcon("SeparatorVerticalIcon", [ + ["line", { x1: "12", x2: "12", y1: "3", y2: "21", key: "1efggb" }], + ["polyline", { points: "8 8 4 12 8 16", key: "bnfmv4" }], + ["polyline", { points: "16 16 20 12 16 8", key: "u90052" }] +]); + +const ServerCog = createLucideIcon("ServerCogIcon", [ + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + [ + "path", + { + d: "M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5", + key: "tn8das" + } + ], + [ + "path", + { + d: "M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5", + key: "1g2pve" + } + ], + ["path", { d: "M6 6h.01", key: "1utrut" }], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "m15.7 13.4-.9-.3", key: "1jwmzr" }], + ["path", { d: "m9.2 10.9-.9-.3", key: "qapnim" }], + ["path", { d: "m10.6 15.7.3-.9", key: "quwk0k" }], + ["path", { d: "m13.6 15.7-.4-1", key: "cb9xp7" }], + ["path", { d: "m10.8 9.3-.4-1", key: "1uaiz5" }], + ["path", { d: "m8.3 13.6 1-.4", key: "s6srou" }], + ["path", { d: "m14.7 10.8 1-.4", key: "4d31cq" }], + ["path", { d: "m13.4 8.3-.3.9", key: "1bm987" }] +]); + +const ServerCrash = createLucideIcon("ServerCrashIcon", [ + [ + "path", + { + d: "M6 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-2", + key: "4b9dqc" + } + ], + [ + "path", + { + d: "M6 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-2", + key: "22nnkd" + } + ], + ["path", { d: "M6 6h.01", key: "1utrut" }], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "m13 6-4 6h6l-4 6", key: "14hqih" }] +]); + +const ServerOff = createLucideIcon("ServerOffIcon", [ + ["path", { d: "M7 2h13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-5", key: "bt2siv" }], + ["path", { d: "M10 10 2.5 2.5C2 2 2 2.5 2 5v3a2 2 0 0 0 2 2h6z", key: "1hjrv1" }], + ["path", { d: "M22 17v-1a2 2 0 0 0-2-2h-1", key: "1iynyr" }], + ["path", { d: "M4 14a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16.5l1-.5.5.5-8-8H4z", key: "161ggg" }], + ["path", { d: "M6 18h.01", key: "uhywen" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Server = createLucideIcon("ServerIcon", [ + ["rect", { width: "20", height: "8", x: "2", y: "2", rx: "2", ry: "2", key: "ngkwjq" }], + ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", ry: "2", key: "iecqi9" }], + ["line", { x1: "6", x2: "6.01", y1: "6", y2: "6", key: "16zg32" }], + ["line", { x1: "6", x2: "6.01", y1: "18", y2: "18", key: "nzw8ys" }] +]); + +const Settings2 = createLucideIcon("Settings2Icon", [ + ["path", { d: "M20 7h-9", key: "3s1dr2" }], + ["path", { d: "M14 17H5", key: "gfn3mx" }], + ["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }], + ["circle", { cx: "7", cy: "7", r: "3", key: "dfmy0x" }] +]); + +const Settings = createLucideIcon("SettingsIcon", [ + [ + "path", + { + d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z", + key: "1qme2f" + } + ], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }] +]); + +const Shapes = createLucideIcon("ShapesIcon", [ + [ + "path", + { + d: "M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z", + key: "1bo67w" + } + ], + ["rect", { x: "3", y: "14", width: "7", height: "7", rx: "1", key: "1bkyp8" }], + ["circle", { cx: "17.5", cy: "17.5", r: "3.5", key: "w3z12y" }] +]); + +const Share2 = createLucideIcon("Share2Icon", [ + ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }], + ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }], + ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }], + ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }], + ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }] +]); + +const Share = createLucideIcon("ShareIcon", [ + ["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }], + ["polyline", { points: "16 6 12 2 8 6", key: "m901s6" }], + ["line", { x1: "12", x2: "12", y1: "2", y2: "15", key: "1p0rca" }] +]); + +const Sheet = createLucideIcon("SheetIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["line", { x1: "3", x2: "21", y1: "9", y2: "9", key: "1vqk6q" }], + ["line", { x1: "3", x2: "21", y1: "15", y2: "15", key: "o2sbyz" }], + ["line", { x1: "9", x2: "9", y1: "9", y2: "21", key: "1ib60c" }], + ["line", { x1: "15", x2: "15", y1: "9", y2: "21", key: "1n26ft" }] +]); + +const Shell = createLucideIcon("ShellIcon", [ + [ + "path", + { + d: "M14 11a2 2 0 1 1-4 0 4 4 0 0 1 8 0 6 6 0 0 1-12 0 8 8 0 0 1 16 0 10 10 0 1 1-20 0 11.93 11.93 0 0 1 2.42-7.22 2 2 0 1 1 3.16 2.44", + key: "1cn552" + } + ] +]); + +const ShieldAlert = createLucideIcon("ShieldAlertIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "M12 8v4", key: "1got3b" }], + ["path", { d: "M12 16h.01", key: "1drbdi" }] +]); + +const ShieldBan = createLucideIcon("ShieldBanIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "m4.243 5.21 14.39 12.472", key: "1c9a7c" }] +]); + +const ShieldCheck = createLucideIcon("ShieldCheckIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }] +]); + +const ShieldEllipsis = createLucideIcon("ShieldEllipsisIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "M8 12h.01", key: "czm47f" }], + ["path", { d: "M12 12h.01", key: "1mp3jc" }], + ["path", { d: "M16 12h.01", key: "1l6xoz" }] +]); + +const ShieldHalf = createLucideIcon("ShieldHalfIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "M12 22V2", key: "zs6s6o" }] +]); + +const ShieldMinus = createLucideIcon("ShieldMinusIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "M9 12h6", key: "1c52cq" }] +]); + +const ShieldOff = createLucideIcon("ShieldOffIcon", [ + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + [ + "path", + { + d: "M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71", + key: "1jlk70" + } + ], + [ + "path", + { + d: "M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264", + key: "18rp1v" + } + ] +]); + +const ShieldPlus = createLucideIcon("ShieldPlusIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "M9 12h6", key: "1c52cq" }], + ["path", { d: "M12 9v6", key: "199k2o" }] +]); + +const ShieldQuestion = createLucideIcon("ShieldQuestionIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }], + ["path", { d: "M12 17h.01", key: "p32p05" }] +]); + +const ShieldX = createLucideIcon("ShieldXIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ], + ["path", { d: "m14.5 9.5-5 5", key: "17q4r4" }], + ["path", { d: "m9.5 9.5 5 5", key: "18nt4w" }] +]); + +const Shield = createLucideIcon("ShieldIcon", [ + [ + "path", + { + d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", + key: "oel41y" + } + ] +]); + +const ShipWheel = createLucideIcon("ShipWheelIcon", [ + ["circle", { cx: "12", cy: "12", r: "8", key: "46899m" }], + ["path", { d: "M12 2v7.5", key: "1e5rl5" }], + ["path", { d: "m19 5-5.23 5.23", key: "1ezxxf" }], + ["path", { d: "M22 12h-7.5", key: "le1719" }], + ["path", { d: "m19 19-5.23-5.23", key: "p3fmgn" }], + ["path", { d: "M12 14.5V22", key: "dgcmos" }], + ["path", { d: "M10.23 13.77 5 19", key: "qwopd4" }], + ["path", { d: "M9.5 12H2", key: "r7bup8" }], + ["path", { d: "M10.23 10.23 5 5", key: "k2y7lj" }], + ["circle", { cx: "12", cy: "12", r: "2.5", key: "ix0uyj" }] +]); + +const Ship = createLucideIcon("ShipIcon", [ + ["path", { d: "M12 10.189V14", key: "1p8cqu" }], + ["path", { d: "M12 2v3", key: "qbqxhf" }], + ["path", { d: "M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6", key: "qpkstq" }], + [ + "path", + { + d: "M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76", + key: "7tigtc" + } + ], + [ + "path", + { + d: "M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", + key: "1924j5" + } + ] +]); + +const Shirt = createLucideIcon("ShirtIcon", [ + [ + "path", + { + d: "M20.38 3.46 16 2a4 4 0 0 1-8 0L3.62 3.46a2 2 0 0 0-1.34 2.23l.58 3.47a1 1 0 0 0 .99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 0 0 2-2V10h2.15a1 1 0 0 0 .99-.84l.58-3.47a2 2 0 0 0-1.34-2.23z", + key: "1wgbhj" + } + ] +]); + +const ShoppingBag = createLucideIcon("ShoppingBagIcon", [ + ["path", { d: "M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z", key: "hou9p0" }], + ["path", { d: "M3 6h18", key: "d0wm0j" }], + ["path", { d: "M16 10a4 4 0 0 1-8 0", key: "1ltviw" }] +]); + +const ShoppingBasket = createLucideIcon("ShoppingBasketIcon", [ + ["path", { d: "m15 11-1 9", key: "5wnq3a" }], + ["path", { d: "m19 11-4-7", key: "cnml18" }], + ["path", { d: "M2 11h20", key: "3eubbj" }], + ["path", { d: "m3.5 11 1.6 7.4a2 2 0 0 0 2 1.6h9.8a2 2 0 0 0 2-1.6l1.7-7.4", key: "yiazzp" }], + ["path", { d: "M4.5 15.5h15", key: "13mye1" }], + ["path", { d: "m5 11 4-7", key: "116ra9" }], + ["path", { d: "m9 11 1 9", key: "1ojof7" }] +]); + +const ShoppingCart = createLucideIcon("ShoppingCartIcon", [ + ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }], + ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }], + [ + "path", + { + d: "M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12", + key: "9zh506" + } + ] +]); + +const Shovel = createLucideIcon("ShovelIcon", [ + ["path", { d: "M2 22v-5l5-5 5 5-5 5z", key: "1fh25c" }], + ["path", { d: "M9.5 14.5 16 8", key: "1smz5x" }], + [ + "path", + { d: "m17 2 5 5-.5.5a3.53 3.53 0 0 1-5 0s0 0 0 0a3.53 3.53 0 0 1 0-5L17 2", key: "1q8uv5" } + ] +]); + +const ShowerHead = createLucideIcon("ShowerHeadIcon", [ + ["path", { d: "m4 4 2.5 2.5", key: "uv2vmf" }], + ["path", { d: "M13.5 6.5a4.95 4.95 0 0 0-7 7", key: "frdkwv" }], + ["path", { d: "M15 5 5 15", key: "1ag8rq" }], + ["path", { d: "M14 17v.01", key: "eokfpp" }], + ["path", { d: "M10 16v.01", key: "14uyyl" }], + ["path", { d: "M13 13v.01", key: "1v1k97" }], + ["path", { d: "M16 10v.01", key: "5169yg" }], + ["path", { d: "M11 20v.01", key: "cj92p8" }], + ["path", { d: "M17 14v.01", key: "11cswd" }], + ["path", { d: "M20 11v.01", key: "19e0od" }] +]); + +const Shrink = createLucideIcon("ShrinkIcon", [ + ["path", { d: "m15 15 6 6m-6-6v4.8m0-4.8h4.8", key: "17vawe" }], + ["path", { d: "M9 19.8V15m0 0H4.2M9 15l-6 6", key: "chjx8e" }], + ["path", { d: "M15 4.2V9m0 0h4.8M15 9l6-6", key: "lav6yq" }], + ["path", { d: "M9 4.2V9m0 0H4.2M9 9 3 3", key: "1pxi2q" }] +]); + +const Shrub = createLucideIcon("ShrubIcon", [ + ["path", { d: "M12 22v-7l-2-2", key: "eqv9mc" }], + ["path", { d: "M17 8v.8A6 6 0 0 1 13.8 20H10A6.5 6.5 0 0 1 7 8a5 5 0 0 1 10 0Z", key: "ubcgy" }], + ["path", { d: "m14 14-2 2", key: "847xa2" }] +]); + +const Shuffle = createLucideIcon("ShuffleIcon", [ + ["path", { d: "m18 14 4 4-4 4", key: "10pe0f" }], + ["path", { d: "m18 2 4 4-4 4", key: "pucp1d" }], + ["path", { d: "M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22", key: "1ailkh" }], + ["path", { d: "M2 6h1.972a4 4 0 0 1 3.6 2.2", key: "km57vx" }], + ["path", { d: "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45", key: "os18l9" }] +]); + +const Sigma = createLucideIcon("SigmaIcon", [ + [ + "path", + { + d: "M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2", + key: "wuwx1p" + } + ] +]); + +const SignalHigh = createLucideIcon("SignalHighIcon", [ + ["path", { d: "M2 20h.01", key: "4haj6o" }], + ["path", { d: "M7 20v-4", key: "j294jx" }], + ["path", { d: "M12 20v-8", key: "i3yub9" }], + ["path", { d: "M17 20V8", key: "1tkaf5" }] +]); + +const SignalLow = createLucideIcon("SignalLowIcon", [ + ["path", { d: "M2 20h.01", key: "4haj6o" }], + ["path", { d: "M7 20v-4", key: "j294jx" }] +]); + +const SignalMedium = createLucideIcon("SignalMediumIcon", [ + ["path", { d: "M2 20h.01", key: "4haj6o" }], + ["path", { d: "M7 20v-4", key: "j294jx" }], + ["path", { d: "M12 20v-8", key: "i3yub9" }] +]); + +const SignalZero = createLucideIcon("SignalZeroIcon", [ + ["path", { d: "M2 20h.01", key: "4haj6o" }] +]); + +const Signal = createLucideIcon("SignalIcon", [ + ["path", { d: "M2 20h.01", key: "4haj6o" }], + ["path", { d: "M7 20v-4", key: "j294jx" }], + ["path", { d: "M12 20v-8", key: "i3yub9" }], + ["path", { d: "M17 20V8", key: "1tkaf5" }], + ["path", { d: "M22 4v16", key: "sih9yq" }] +]); + +const Signature = createLucideIcon("SignatureIcon", [ + [ + "path", + { + d: "m21 17-2.156-1.868A.5.5 0 0 0 18 15.5v.5a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1c0-2.545-3.991-3.97-8.5-4a1 1 0 0 0 0 5c4.153 0 4.745-11.295 5.708-13.5a2.5 2.5 0 1 1 3.31 3.284", + key: "y32ogt" + } + ], + ["path", { d: "M3 21h18", key: "itz85i" }] +]); + +const SignpostBig = createLucideIcon("SignpostBigIcon", [ + ["path", { d: "M10 9H4L2 7l2-2h6", key: "1hq7x2" }], + ["path", { d: "M14 5h6l2 2-2 2h-6", key: "bv62ej" }], + ["path", { d: "M10 22V4a2 2 0 1 1 4 0v18", key: "eqpcf2" }], + ["path", { d: "M8 22h8", key: "rmew8v" }] +]); + +const Signpost = createLucideIcon("SignpostIcon", [ + ["path", { d: "M12 13v8", key: "1l5pq0" }], + ["path", { d: "M12 3v3", key: "1n5kay" }], + [ + "path", + { + d: "M18 6a2 2 0 0 1 1.387.56l2.307 2.22a1 1 0 0 1 0 1.44l-2.307 2.22A2 2 0 0 1 18 13H6a2 2 0 0 1-1.387-.56l-2.306-2.22a1 1 0 0 1 0-1.44l2.306-2.22A2 2 0 0 1 6 6z", + key: "gqqp9m" + } + ] +]); + +const Siren = createLucideIcon("SirenIcon", [ + ["path", { d: "M7 18v-6a5 5 0 1 1 10 0v6", key: "pcx96s" }], + [ + "path", + { d: "M5 21a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2z", key: "1b4s83" } + ], + ["path", { d: "M21 12h1", key: "jtio3y" }], + ["path", { d: "M18.5 4.5 18 5", key: "g5sp9y" }], + ["path", { d: "M2 12h1", key: "1uaihz" }], + ["path", { d: "M12 2v1", key: "11qlp1" }], + ["path", { d: "m4.929 4.929.707.707", key: "1i51kw" }], + ["path", { d: "M12 12v6", key: "3ahymv" }] +]); + +const SkipBack = createLucideIcon("SkipBackIcon", [ + ["polygon", { points: "19 20 9 12 19 4 19 20", key: "o2sva" }], + ["line", { x1: "5", x2: "5", y1: "19", y2: "5", key: "1ocqjk" }] +]); + +const SkipForward = createLucideIcon("SkipForwardIcon", [ + ["polygon", { points: "5 4 15 12 5 20 5 4", key: "16p6eg" }], + ["line", { x1: "19", x2: "19", y1: "5", y2: "19", key: "futhcm" }] +]); + +const Skull = createLucideIcon("SkullIcon", [ + ["path", { d: "m12.5 17-.5-1-.5 1h1z", key: "3me087" }], + [ + "path", + { + d: "M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z", + key: "1o5pge" + } + ], + ["circle", { cx: "15", cy: "12", r: "1", key: "1tmaij" }], + ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }] +]); + +const Slack = createLucideIcon("SlackIcon", [ + ["rect", { width: "3", height: "8", x: "13", y: "2", rx: "1.5", key: "diqz80" }], + ["path", { d: "M19 8.5V10h1.5A1.5 1.5 0 1 0 19 8.5", key: "183iwg" }], + ["rect", { width: "3", height: "8", x: "8", y: "14", rx: "1.5", key: "hqg7r1" }], + ["path", { d: "M5 15.5V14H3.5A1.5 1.5 0 1 0 5 15.5", key: "76g71w" }], + ["rect", { width: "8", height: "3", x: "14", y: "13", rx: "1.5", key: "1kmz0a" }], + ["path", { d: "M15.5 19H14v1.5a1.5 1.5 0 1 0 1.5-1.5", key: "jc4sz0" }], + ["rect", { width: "8", height: "3", x: "2", y: "8", rx: "1.5", key: "1omvl4" }], + ["path", { d: "M8.5 5H10V3.5A1.5 1.5 0 1 0 8.5 5", key: "16f3cl" }] +]); + +const Slash = createLucideIcon("SlashIcon", [["path", { d: "M22 2 2 22", key: "y4kqgn" }]]); + +const Slice = createLucideIcon("SliceIcon", [ + [ + "path", + { + d: "M11 16.586V19a1 1 0 0 1-1 1H2L18.37 3.63a1 1 0 1 1 3 3l-9.663 9.663a1 1 0 0 1-1.414 0L8 14", + key: "1sllp5" + } + ] +]); + +const SlidersHorizontal = createLucideIcon("SlidersHorizontalIcon", [ + ["line", { x1: "21", x2: "14", y1: "4", y2: "4", key: "obuewd" }], + ["line", { x1: "10", x2: "3", y1: "4", y2: "4", key: "1q6298" }], + ["line", { x1: "21", x2: "12", y1: "12", y2: "12", key: "1iu8h1" }], + ["line", { x1: "8", x2: "3", y1: "12", y2: "12", key: "ntss68" }], + ["line", { x1: "21", x2: "16", y1: "20", y2: "20", key: "14d8ph" }], + ["line", { x1: "12", x2: "3", y1: "20", y2: "20", key: "m0wm8r" }], + ["line", { x1: "14", x2: "14", y1: "2", y2: "6", key: "14e1ph" }], + ["line", { x1: "8", x2: "8", y1: "10", y2: "14", key: "1i6ji0" }], + ["line", { x1: "16", x2: "16", y1: "18", y2: "22", key: "1lctlv" }] +]); + +const SlidersVertical = createLucideIcon("SlidersVerticalIcon", [ + ["line", { x1: "4", x2: "4", y1: "21", y2: "14", key: "1p332r" }], + ["line", { x1: "4", x2: "4", y1: "10", y2: "3", key: "gb41h5" }], + ["line", { x1: "12", x2: "12", y1: "21", y2: "12", key: "hf2csr" }], + ["line", { x1: "12", x2: "12", y1: "8", y2: "3", key: "1kfi7u" }], + ["line", { x1: "20", x2: "20", y1: "21", y2: "16", key: "1lhrwl" }], + ["line", { x1: "20", x2: "20", y1: "12", y2: "3", key: "16vvfq" }], + ["line", { x1: "2", x2: "6", y1: "14", y2: "14", key: "1uebub" }], + ["line", { x1: "10", x2: "14", y1: "8", y2: "8", key: "1yglbp" }], + ["line", { x1: "18", x2: "22", y1: "16", y2: "16", key: "1jxqpz" }] +]); + +const SmartphoneCharging = createLucideIcon("SmartphoneChargingIcon", [ + ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }], + ["path", { d: "M12.667 8 10 12h4l-2.667 4", key: "h9lk2d" }] +]); + +const SmartphoneNfc = createLucideIcon("SmartphoneNfcIcon", [ + ["rect", { width: "7", height: "12", x: "2", y: "6", rx: "1", key: "5nje8w" }], + ["path", { d: "M13 8.32a7.43 7.43 0 0 1 0 7.36", key: "1g306n" }], + ["path", { d: "M16.46 6.21a11.76 11.76 0 0 1 0 11.58", key: "uqvjvo" }], + ["path", { d: "M19.91 4.1a15.91 15.91 0 0 1 .01 15.8", key: "ujntz3" }] +]); + +const Smartphone = createLucideIcon("SmartphoneIcon", [ + ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }], + ["path", { d: "M12 18h.01", key: "mhygvu" }] +]); + +const SmilePlus = createLucideIcon("SmilePlusIcon", [ + ["path", { d: "M22 11v1a10 10 0 1 1-9-10", key: "ew0xw9" }], + ["path", { d: "M8 14s1.5 2 4 2 4-2 4-2", key: "1y1vjs" }], + ["line", { x1: "9", x2: "9.01", y1: "9", y2: "9", key: "yxxnd0" }], + ["line", { x1: "15", x2: "15.01", y1: "9", y2: "9", key: "1p4y9e" }], + ["path", { d: "M16 5h6", key: "1vod17" }], + ["path", { d: "M19 2v6", key: "4bpg5p" }] +]); + +const Smile = createLucideIcon("SmileIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "M8 14s1.5 2 4 2 4-2 4-2", key: "1y1vjs" }], + ["line", { x1: "9", x2: "9.01", y1: "9", y2: "9", key: "yxxnd0" }], + ["line", { x1: "15", x2: "15.01", y1: "9", y2: "9", key: "1p4y9e" }] +]); + +const Snail = createLucideIcon("SnailIcon", [ + ["path", { d: "M2 13a6 6 0 1 0 12 0 4 4 0 1 0-8 0 2 2 0 0 0 4 0", key: "hneq2s" }], + ["circle", { cx: "10", cy: "13", r: "8", key: "194lz3" }], + ["path", { d: "M2 21h12c4.4 0 8-3.6 8-8V7a2 2 0 1 0-4 0v6", key: "ixqyt7" }], + ["path", { d: "M18 3 19.1 5.2", key: "9tjm43" }], + ["path", { d: "M22 3 20.9 5.2", key: "j3odrs" }] +]); + +const Snowflake = createLucideIcon("SnowflakeIcon", [ + ["path", { d: "m10 20-1.25-2.5L6 18", key: "18frcb" }], + ["path", { d: "M10 4 8.75 6.5 6 6", key: "7mghy3" }], + ["path", { d: "m14 20 1.25-2.5L18 18", key: "1chtki" }], + ["path", { d: "m14 4 1.25 2.5L18 6", key: "1b4wsy" }], + ["path", { d: "m17 21-3-6h-4", key: "15hhxa" }], + ["path", { d: "m17 3-3 6 1.5 3", key: "11697g" }], + ["path", { d: "M2 12h6.5L10 9", key: "kv9z4n" }], + ["path", { d: "m20 10-1.5 2 1.5 2", key: "1swlpi" }], + ["path", { d: "M22 12h-6.5L14 15", key: "1mxi28" }], + ["path", { d: "m4 10 1.5 2L4 14", key: "k9enpj" }], + ["path", { d: "m7 21 3-6-1.5-3", key: "j8hb9u" }], + ["path", { d: "m7 3 3 6h4", key: "1otusx" }] +]); + +const Sofa = createLucideIcon("SofaIcon", [ + ["path", { d: "M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3", key: "1dgpiv" }], + [ + "path", + { + d: "M2 16a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z", + key: "xacw8m" + } + ], + ["path", { d: "M4 18v2", key: "jwo5n2" }], + ["path", { d: "M20 18v2", key: "1ar1qi" }], + ["path", { d: "M12 4v9", key: "oqhhn3" }] +]); + +const Soup = createLucideIcon("SoupIcon", [ + ["path", { d: "M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z", key: "4rw317" }], + ["path", { d: "M7 21h10", key: "1b0cd5" }], + ["path", { d: "M19.5 12 22 6", key: "shfsr5" }], + [ + "path", + { + d: "M16.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.73 1.62", + key: "rpc6vp" + } + ], + [ + "path", + { + d: "M11.25 3c.27.1.8.53.74 1.36-.05.83-.93 1.2-.98 2.02-.06.78.33 1.24.72 1.62", + key: "1lf63m" + } + ], + [ + "path", + { d: "M6.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.74 1.62", key: "97tijn" } + ] +]); + +const Space = createLucideIcon("SpaceIcon", [ + ["path", { d: "M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1", key: "lt2kga" }] +]); + +const Spade = createLucideIcon("SpadeIcon", [ + [ + "path", + { + d: "M5 9c-1.5 1.5-3 3.2-3 5.5A5.5 5.5 0 0 0 7.5 20c1.8 0 3-.5 4.5-2 1.5 1.5 2.7 2 4.5 2a5.5 5.5 0 0 0 5.5-5.5c0-2.3-1.5-4-3-5.5l-7-7-7 7Z", + key: "40bo9n" + } + ], + ["path", { d: "M12 18v4", key: "jadmvz" }] +]); + +const Sparkle = createLucideIcon("SparkleIcon", [ + [ + "path", + { + d: "M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z", + key: "4pj2yx" + } + ] +]); + +const Sparkles = createLucideIcon("SparklesIcon", [ + [ + "path", + { + d: "M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z", + key: "4pj2yx" + } + ], + ["path", { d: "M20 3v4", key: "1olli1" }], + ["path", { d: "M22 5h-4", key: "1gvqau" }], + ["path", { d: "M4 17v2", key: "vumght" }], + ["path", { d: "M5 18H3", key: "zchphs" }] +]); + +const Speaker = createLucideIcon("SpeakerIcon", [ + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", key: "1nb95v" }], + ["path", { d: "M12 6h.01", key: "1vi96p" }], + ["circle", { cx: "12", cy: "14", r: "4", key: "1jruaj" }], + ["path", { d: "M12 14h.01", key: "1etili" }] +]); + +const Speech = createLucideIcon("SpeechIcon", [ + [ + "path", + { + d: "M8.8 20v-4.1l1.9.2a2.3 2.3 0 0 0 2.164-2.1V8.3A5.37 5.37 0 0 0 2 8.25c0 2.8.656 3.054 1 4.55a5.77 5.77 0 0 1 .029 2.758L2 20", + key: "11atix" + } + ], + ["path", { d: "M19.8 17.8a7.5 7.5 0 0 0 .003-10.603", key: "yol142" }], + ["path", { d: "M17 15a3.5 3.5 0 0 0-.025-4.975", key: "ssbmkc" }] +]); + +const SpellCheck2 = createLucideIcon("SpellCheck2Icon", [ + ["path", { d: "m6 16 6-12 6 12", key: "1b4byz" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + [ + "path", + { + d: "M4 21c1.1 0 1.1-1 2.3-1s1.1 1 2.3 1c1.1 0 1.1-1 2.3-1 1.1 0 1.1 1 2.3 1 1.1 0 1.1-1 2.3-1 1.1 0 1.1 1 2.3 1 1.1 0 1.1-1 2.3-1", + key: "8mdmtu" + } + ] +]); + +const SpellCheck = createLucideIcon("SpellCheckIcon", [ + ["path", { d: "m6 16 6-12 6 12", key: "1b4byz" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "m16 20 2 2 4-4", key: "13tcca" }] +]); + +const Spline = createLucideIcon("SplineIcon", [ + ["circle", { cx: "19", cy: "5", r: "2", key: "mhkx31" }], + ["circle", { cx: "5", cy: "19", r: "2", key: "v8kfzx" }], + ["path", { d: "M5 17A12 12 0 0 1 17 5", key: "1okkup" }] +]); + +const Split = createLucideIcon("SplitIcon", [ + ["path", { d: "M16 3h5v5", key: "1806ms" }], + ["path", { d: "M8 3H3v5", key: "15dfkv" }], + ["path", { d: "M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3", key: "1qrqzj" }], + ["path", { d: "m15 9 6-6", key: "ko1vev" }] +]); + +const SprayCan = createLucideIcon("SprayCanIcon", [ + ["path", { d: "M3 3h.01", key: "159qn6" }], + ["path", { d: "M7 5h.01", key: "1hq22a" }], + ["path", { d: "M11 7h.01", key: "1osv80" }], + ["path", { d: "M3 7h.01", key: "1xzrh3" }], + ["path", { d: "M7 9h.01", key: "19b3jx" }], + ["path", { d: "M3 11h.01", key: "1eifu7" }], + ["rect", { width: "4", height: "4", x: "15", y: "5", key: "mri9e4" }], + ["path", { d: "m19 9 2 2v10c0 .6-.4 1-1 1h-6c-.6 0-1-.4-1-1V11l2-2", key: "aib6hk" }], + ["path", { d: "m13 14 8-2", key: "1d7bmk" }], + ["path", { d: "m13 19 8-2", key: "1y2vml" }] +]); + +const Sprout = createLucideIcon("SproutIcon", [ + ["path", { d: "M7 20h10", key: "e6iznv" }], + ["path", { d: "M10 20c5.5-2.5.8-6.4 3-10", key: "161w41" }], + [ + "path", + { + d: "M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z", + key: "9gtqwd" + } + ], + [ + "path", + { + d: "M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z", + key: "bkxnd2" + } + ] +]); + +const SquareActivity = createLucideIcon("SquareActivityIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M17 12h-2l-2 5-2-10-2 5H7", key: "15hlnc" }] +]); + +const SquareArrowDownLeft = createLucideIcon("SquareArrowDownLeftIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m16 8-8 8", key: "166keh" }], + ["path", { d: "M16 16H8V8", key: "1w2ppm" }] +]); + +const SquareArrowDownRight = createLucideIcon("SquareArrowDownRightIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m8 8 8 8", key: "1imecy" }], + ["path", { d: "M16 8v8H8", key: "1lbpgo" }] +]); + +const SquareArrowDown = createLucideIcon("SquareArrowDownIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M12 8v8", key: "napkw2" }], + ["path", { d: "m8 12 4 4 4-4", key: "k98ssh" }] +]); + +const SquareArrowLeft = createLucideIcon("SquareArrowLeftIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m12 8-4 4 4 4", key: "15vm53" }], + ["path", { d: "M16 12H8", key: "1fr5h0" }] +]); + +const SquareArrowOutDownLeft = createLucideIcon("SquareArrowOutDownLeftIcon", [ + ["path", { d: "M13 21h6a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v6", key: "14qz4y" }], + ["path", { d: "m3 21 9-9", key: "1jfql5" }], + ["path", { d: "M9 21H3v-6", key: "wtvkvv" }] +]); + +const SquareArrowOutDownRight = createLucideIcon("SquareArrowOutDownRightIcon", [ + ["path", { d: "M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6", key: "14rsvq" }], + ["path", { d: "m21 21-9-9", key: "1et2py" }], + ["path", { d: "M21 15v6h-6", key: "1jko0i" }] +]); + +const SquareArrowOutUpLeft = createLucideIcon("SquareArrowOutUpLeftIcon", [ + ["path", { d: "M13 3h6a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-6", key: "14mv1t" }], + ["path", { d: "m3 3 9 9", key: "rks13r" }], + ["path", { d: "M3 9V3h6", key: "ira0h2" }] +]); + +const SquareArrowOutUpRight = createLucideIcon("SquareArrowOutUpRightIcon", [ + ["path", { d: "M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6", key: "y09zxi" }], + ["path", { d: "m21 3-9 9", key: "mpx6sq" }], + ["path", { d: "M15 3h6v6", key: "1q9fwt" }] +]); + +const SquareArrowRight = createLucideIcon("SquareArrowRightIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "m12 16 4-4-4-4", key: "1i9zcv" }] +]); + +const SquareArrowUpLeft = createLucideIcon("SquareArrowUpLeftIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 16V8h8", key: "19xb1h" }], + ["path", { d: "M16 16 8 8", key: "1qdy8n" }] +]); + +const SquareArrowUpRight = createLucideIcon("SquareArrowUpRightIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 8h8v8", key: "b65dnt" }], + ["path", { d: "m8 16 8-8", key: "13b9ih" }] +]); + +const SquareArrowUp = createLucideIcon("SquareArrowUpIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m16 12-4-4-4 4", key: "177agl" }], + ["path", { d: "M12 16V8", key: "1sbj14" }] +]); + +const SquareAsterisk = createLucideIcon("SquareAsteriskIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M12 8v8", key: "napkw2" }], + ["path", { d: "m8.5 14 7-4", key: "12hpby" }], + ["path", { d: "m8.5 10 7 4", key: "wwy2dy" }] +]); + +const SquareBottomDashedScissors = createLucideIcon("SquareBottomDashedScissorsIcon", [ + [ + "path", + { d: "M4 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2", key: "1vzg26" } + ], + ["path", { d: "M10 22H8", key: "euku7a" }], + ["path", { d: "M16 22h-2", key: "18d249" }], + ["circle", { cx: "8", cy: "8", r: "2", key: "14cg06" }], + ["path", { d: "M9.414 9.414 12 12", key: "qz4lzr" }], + ["path", { d: "M14.8 14.8 18 18", key: "11flf1" }], + ["circle", { cx: "8", cy: "16", r: "2", key: "1acxsx" }], + ["path", { d: "m18 6-8.586 8.586", key: "11kzk1" }] +]); + +const SquareChartGantt = createLucideIcon("SquareChartGanttIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 8h7", key: "kbo1nt" }], + ["path", { d: "M8 12h6", key: "ikassy" }], + ["path", { d: "M11 16h5", key: "oq65wt" }] +]); + +const SquareCheckBig = createLucideIcon("SquareCheckBigIcon", [ + ["path", { d: "M21 10.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.5", key: "1uzm8b" }], + ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }] +]); + +const SquareCheck = createLucideIcon("SquareCheckIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }] +]); + +const SquareChevronDown = createLucideIcon("SquareChevronDownIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m16 10-4 4-4-4", key: "894hmk" }] +]); + +const SquareChevronLeft = createLucideIcon("SquareChevronLeftIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m14 16-4-4 4-4", key: "ojs7w8" }] +]); + +const SquareChevronRight = createLucideIcon("SquareChevronRightIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m10 8 4 4-4 4", key: "1wy4r4" }] +]); + +const SquareChevronUp = createLucideIcon("SquareChevronUpIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m8 14 4-4 4 4", key: "fy2ptz" }] +]); + +const SquareCode = createLucideIcon("SquareCodeIcon", [ + ["path", { d: "M10 9.5 8 12l2 2.5", key: "3mjy60" }], + ["path", { d: "m14 9.5 2 2.5-2 2.5", key: "1bir2l" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }] +]); + +const SquareDashedBottomCode = createLucideIcon("SquareDashedBottomCodeIcon", [ + ["path", { d: "M10 9.5 8 12l2 2.5", key: "3mjy60" }], + ["path", { d: "M14 21h1", key: "v9vybs" }], + ["path", { d: "m14 9.5 2 2.5-2 2.5", key: "1bir2l" }], + [ + "path", + { d: "M5 21a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2", key: "as5y1o" } + ], + ["path", { d: "M9 21h1", key: "15o7lz" }] +]); + +const SquareDashedBottom = createLucideIcon("SquareDashedBottomIcon", [ + [ + "path", + { d: "M5 21a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2", key: "as5y1o" } + ], + ["path", { d: "M9 21h1", key: "15o7lz" }], + ["path", { d: "M14 21h1", key: "v9vybs" }] +]); + +const SquareDashedKanban = createLucideIcon("SquareDashedKanbanIcon", [ + ["path", { d: "M8 7v7", key: "1x2jlm" }], + ["path", { d: "M12 7v4", key: "xawao1" }], + ["path", { d: "M16 7v9", key: "1hp2iy" }], + ["path", { d: "M5 3a2 2 0 0 0-2 2", key: "y57alp" }], + ["path", { d: "M9 3h1", key: "1yesri" }], + ["path", { d: "M14 3h1", key: "1ec4yj" }], + ["path", { d: "M19 3a2 2 0 0 1 2 2", key: "18rm91" }], + ["path", { d: "M21 9v1", key: "mxsmne" }], + ["path", { d: "M21 14v1", key: "169vum" }], + ["path", { d: "M21 19a2 2 0 0 1-2 2", key: "1j7049" }], + ["path", { d: "M14 21h1", key: "v9vybs" }], + ["path", { d: "M9 21h1", key: "15o7lz" }], + ["path", { d: "M5 21a2 2 0 0 1-2-2", key: "sbafld" }], + ["path", { d: "M3 14v1", key: "vnatye" }], + ["path", { d: "M3 9v1", key: "1r0deq" }] +]); + +const SquareDashedMousePointer = createLucideIcon("SquareDashedMousePointerIcon", [ + [ + "path", + { + d: "M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z", + key: "xwnzip" + } + ], + ["path", { d: "M5 3a2 2 0 0 0-2 2", key: "y57alp" }], + ["path", { d: "M19 3a2 2 0 0 1 2 2", key: "18rm91" }], + ["path", { d: "M5 21a2 2 0 0 1-2-2", key: "sbafld" }], + ["path", { d: "M9 3h1", key: "1yesri" }], + ["path", { d: "M9 21h2", key: "1qve2z" }], + ["path", { d: "M14 3h1", key: "1ec4yj" }], + ["path", { d: "M3 9v1", key: "1r0deq" }], + ["path", { d: "M21 9v2", key: "p14lih" }], + ["path", { d: "M3 14v1", key: "vnatye" }] +]); + +const SquareDashed = createLucideIcon("SquareDashedIcon", [ + ["path", { d: "M5 3a2 2 0 0 0-2 2", key: "y57alp" }], + ["path", { d: "M19 3a2 2 0 0 1 2 2", key: "18rm91" }], + ["path", { d: "M21 19a2 2 0 0 1-2 2", key: "1j7049" }], + ["path", { d: "M5 21a2 2 0 0 1-2-2", key: "sbafld" }], + ["path", { d: "M9 3h1", key: "1yesri" }], + ["path", { d: "M9 21h1", key: "15o7lz" }], + ["path", { d: "M14 3h1", key: "1ec4yj" }], + ["path", { d: "M14 21h1", key: "v9vybs" }], + ["path", { d: "M3 9v1", key: "1r0deq" }], + ["path", { d: "M21 9v1", key: "mxsmne" }], + ["path", { d: "M3 14v1", key: "vnatye" }], + ["path", { d: "M21 14v1", key: "169vum" }] +]); + +const SquareDivide = createLucideIcon("SquareDivideIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }], + ["line", { x1: "12", x2: "12", y1: "16", y2: "16", key: "aqc6ln" }], + ["line", { x1: "12", x2: "12", y1: "8", y2: "8", key: "1mkcni" }] +]); + +const SquareDot = createLucideIcon("SquareDotIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }] +]); + +const SquareEqual = createLucideIcon("SquareEqualIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7 10h10", key: "1101jm" }], + ["path", { d: "M7 14h10", key: "1mhdw3" }] +]); + +const SquareFunction = createLucideIcon("SquareFunctionIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3", key: "m1af9g" }], + ["path", { d: "M9 11.2h5.7", key: "3zgcl2" }] +]); + +const SquareKanban = createLucideIcon("SquareKanbanIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 7v7", key: "1x2jlm" }], + ["path", { d: "M12 7v4", key: "xawao1" }], + ["path", { d: "M16 7v9", key: "1hp2iy" }] +]); + +const SquareLibrary = createLucideIcon("SquareLibraryIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7 7v10", key: "d5nglc" }], + ["path", { d: "M11 7v10", key: "pptsnr" }], + ["path", { d: "m15 7 2 10", key: "1m7qm5" }] +]); + +const SquareM = createLucideIcon("SquareMIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 16V8l4 4 4-4v8", key: "141u4e" }] +]); + +const SquareMenu = createLucideIcon("SquareMenuIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7 8h10", key: "1jw688" }], + ["path", { d: "M7 12h10", key: "b7w52i" }], + ["path", { d: "M7 16h10", key: "wp8him" }] +]); + +const SquareMinus = createLucideIcon("SquareMinusIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 12h8", key: "1wcyev" }] +]); + +const SquareMousePointer = createLucideIcon("SquareMousePointerIcon", [ + [ + "path", + { + d: "M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z", + key: "xwnzip" + } + ], + ["path", { d: "M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6", key: "14rsvq" }] +]); + +const SquareParkingOff = createLucideIcon("SquareParkingOffIcon", [ + ["path", { d: "M3.6 3.6A2 2 0 0 1 5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-.59 1.41", key: "9l1ft6" }], + ["path", { d: "M3 8.7V19a2 2 0 0 0 2 2h10.3", key: "17knke" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M13 13a3 3 0 1 0 0-6H9v2", key: "uoagbd" }], + ["path", { d: "M9 17v-2.3", key: "1jxgo2" }] +]); + +const SquareParking = createLucideIcon("SquareParkingIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M9 17V7h4a3 3 0 0 1 0 6H9", key: "1dfk2c" }] +]); + +const SquarePen = createLucideIcon("SquarePenIcon", [ + ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }], + [ + "path", + { + d: "M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z", + key: "ohrbg2" + } + ] +]); + +const SquarePercent = createLucideIcon("SquarePercentIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "M9 9h.01", key: "1q5me6" }], + ["path", { d: "M15 15h.01", key: "lqbp3k" }] +]); + +const SquarePi = createLucideIcon("SquarePiIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M7 7h10", key: "udp07y" }], + ["path", { d: "M10 7v10", key: "i1d9ee" }], + ["path", { d: "M16 17a2 2 0 0 1-2-2V7", key: "ftwdc7" }] +]); + +const SquarePilcrow = createLucideIcon("SquarePilcrowIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M12 12H9.5a2.5 2.5 0 0 1 0-5H17", key: "1l9586" }], + ["path", { d: "M12 7v10", key: "jspqdw" }], + ["path", { d: "M16 7v10", key: "lavkr4" }] +]); + +const SquarePlay = createLucideIcon("SquarePlayIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "m9 8 6 4-6 4Z", key: "f1r3lt" }] +]); + +const SquarePlus = createLucideIcon("SquarePlusIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["path", { d: "M12 8v8", key: "napkw2" }] +]); + +const SquarePower = createLucideIcon("SquarePowerIcon", [ + ["path", { d: "M12 7v4", key: "xawao1" }], + ["path", { d: "M7.998 9.003a5 5 0 1 0 8-.005", key: "1pek45" }], + ["rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", key: "h1oib" }] +]); + +const SquareRadical = createLucideIcon("SquareRadicalIcon", [ + ["path", { d: "M7 12h2l2 5 2-10h4", key: "1fxv6h" }], + ["rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", key: "h1oib" }] +]); + +const SquareScissors = createLucideIcon("SquareScissorsIcon", [ + ["rect", { width: "20", height: "20", x: "2", y: "2", rx: "2", key: "1btzen" }], + ["circle", { cx: "8", cy: "8", r: "2", key: "14cg06" }], + ["path", { d: "M9.414 9.414 12 12", key: "qz4lzr" }], + ["path", { d: "M14.8 14.8 18 18", key: "11flf1" }], + ["circle", { cx: "8", cy: "16", r: "2", key: "1acxsx" }], + ["path", { d: "m18 6-8.586 8.586", key: "11kzk1" }] +]); + +const SquareSigma = createLucideIcon("SquareSigmaIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M16 8.9V7H8l4 5-4 5h8v-1.9", key: "9nih0i" }] +]); + +const SquareSlash = createLucideIcon("SquareSlashIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["line", { x1: "9", x2: "15", y1: "15", y2: "9", key: "1dfufj" }] +]); + +const SquareSplitHorizontal = createLucideIcon("SquareSplitHorizontalIcon", [ + ["path", { d: "M8 19H5c-1 0-2-1-2-2V7c0-1 1-2 2-2h3", key: "lubmu8" }], + ["path", { d: "M16 5h3c1 0 2 1 2 2v10c0 1-1 2-2 2h-3", key: "1ag34g" }], + ["line", { x1: "12", x2: "12", y1: "4", y2: "20", key: "1tx1rr" }] +]); + +const SquareSplitVertical = createLucideIcon("SquareSplitVerticalIcon", [ + ["path", { d: "M5 8V5c0-1 1-2 2-2h10c1 0 2 1 2 2v3", key: "1pi83i" }], + ["path", { d: "M19 16v3c0 1-1 2-2 2H7c-1 0-2-1-2-2v-3", key: "ido5k7" }], + ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }] +]); + +const SquareSquare = createLucideIcon("SquareSquareIcon", [ + ["rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", key: "h1oib" }], + ["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1", key: "z9xiuo" }] +]); + +const SquareStack = createLucideIcon("SquareStackIcon", [ + ["path", { d: "M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2", key: "4i38lg" }], + ["path", { d: "M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2", key: "mlte4a" }], + ["rect", { width: "8", height: "8", x: "14", y: "14", rx: "2", key: "1fa9i4" }] +]); + +const SquareTerminal = createLucideIcon("SquareTerminalIcon", [ + ["path", { d: "m7 11 2-2-2-2", key: "1lz0vl" }], + ["path", { d: "M11 13h4", key: "1p7l4v" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }] +]); + +const SquareUserRound = createLucideIcon("SquareUserRoundIcon", [ + ["path", { d: "M18 21a6 6 0 0 0-12 0", key: "kaz2du" }], + ["circle", { cx: "12", cy: "11", r: "4", key: "1gt34v" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }] +]); + +const SquareUser = createLucideIcon("SquareUserIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "M7 21v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2", key: "1m6ac2" }] +]); + +const SquareX = createLucideIcon("SquareXIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "m9 9 6 6", key: "z0biqf" }] +]); + +const Square = createLucideIcon("SquareIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }] +]); + +const Squircle = createLucideIcon("SquircleIcon", [ + ["path", { d: "M12 3c7.2 0 9 1.8 9 9s-1.8 9-9 9-9-1.8-9-9 1.8-9 9-9", key: "garfkc" }] +]); + +const Squirrel = createLucideIcon("SquirrelIcon", [ + ["path", { d: "M15.236 22a3 3 0 0 0-2.2-5", key: "21bitc" }], + ["path", { d: "M16 20a3 3 0 0 1 3-3h1a2 2 0 0 0 2-2v-2a4 4 0 0 0-4-4V4", key: "oh0fg0" }], + ["path", { d: "M18 13h.01", key: "9veqaj" }], + [ + "path", + { + d: "M18 6a4 4 0 0 0-4 4 7 7 0 0 0-7 7c0-5 4-5 4-10.5a4.5 4.5 0 1 0-9 0 2.5 2.5 0 0 0 5 0C7 10 3 11 3 17c0 2.8 2.2 5 5 5h10", + key: "980v8a" + } + ] +]); + +const Stamp = createLucideIcon("StampIcon", [ + ["path", { d: "M5 22h14", key: "ehvnwv" }], + [ + "path", + { + d: "M19.27 13.73A2.5 2.5 0 0 0 17.5 13h-11A2.5 2.5 0 0 0 4 15.5V17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-1.5c0-.66-.26-1.3-.73-1.77Z", + key: "1sy9ra" + } + ], + [ + "path", + { d: "M14 13V8.5C14 7 15 7 15 5a3 3 0 0 0-3-3c-1.66 0-3 1-3 3s1 2 1 3.5V13", key: "cnxgux" } + ] +]); + +const StarHalf = createLucideIcon("StarHalfIcon", [ + [ + "path", + { + d: "M12 18.338a2.1 2.1 0 0 0-.987.244L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16l2.309-4.679A.53.53 0 0 1 12 2", + key: "2ksp49" + } + ] +]); + +const StarOff = createLucideIcon("StarOffIcon", [ + ["path", { d: "M8.34 8.34 2 9.27l5 4.87L5.82 21 12 17.77 18.18 21l-.59-3.43", key: "16m0ql" }], + ["path", { d: "M18.42 12.76 22 9.27l-6.91-1L12 2l-1.44 2.91", key: "1vt8nq" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Star = createLucideIcon("StarIcon", [ + [ + "path", + { + d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z", + key: "r04s7s" + } + ] +]); + +const StepBack = createLucideIcon("StepBackIcon", [ + ["line", { x1: "18", x2: "18", y1: "20", y2: "4", key: "cun8e5" }], + ["polygon", { points: "14,20 4,12 14,4", key: "ypakod" }] +]); + +const StepForward = createLucideIcon("StepForwardIcon", [ + ["line", { x1: "6", x2: "6", y1: "4", y2: "20", key: "fy8qot" }], + ["polygon", { points: "10,4 20,12 10,20", key: "1mc1pf" }] +]); + +const Stethoscope = createLucideIcon("StethoscopeIcon", [ + ["path", { d: "M11 2v2", key: "1539x4" }], + ["path", { d: "M5 2v2", key: "1yf1q8" }], + ["path", { d: "M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1", key: "rb5t3r" }], + ["path", { d: "M8 15a6 6 0 0 0 12 0v-3", key: "x18d4x" }], + ["circle", { cx: "20", cy: "10", r: "2", key: "ts1r5v" }] +]); + +const Sticker = createLucideIcon("StickerIcon", [ + [ + "path", + { d: "M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z", key: "1wis1t" } + ], + ["path", { d: "M14 3v4a2 2 0 0 0 2 2h4", key: "36rjfy" }], + ["path", { d: "M8 13h.01", key: "1sbv64" }], + ["path", { d: "M16 13h.01", key: "wip0gl" }], + ["path", { d: "M10 16s.8 1 2 1c1.3 0 2-1 2-1", key: "1vvgv3" }] +]); + +const StickyNote = createLucideIcon("StickyNoteIcon", [ + ["path", { d: "M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z", key: "qazsjp" }], + ["path", { d: "M15 3v4a2 2 0 0 0 2 2h4", key: "40519r" }] +]); + +const Store = createLucideIcon("StoreIcon", [ + ["path", { d: "m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7", key: "ztvudi" }], + ["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }], + ["path", { d: "M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4", key: "2ebpfo" }], + ["path", { d: "M2 7h20", key: "1fcdvo" }], + [ + "path", + { + d: "M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7", + key: "6c3vgh" + } + ] +]); + +const StretchHorizontal = createLucideIcon("StretchHorizontalIcon", [ + ["rect", { width: "20", height: "6", x: "2", y: "4", rx: "2", key: "qdearl" }], + ["rect", { width: "20", height: "6", x: "2", y: "14", rx: "2", key: "1xrn6j" }] +]); + +const StretchVertical = createLucideIcon("StretchVerticalIcon", [ + ["rect", { width: "6", height: "20", x: "4", y: "2", rx: "2", key: "19qu7m" }], + ["rect", { width: "6", height: "20", x: "14", y: "2", rx: "2", key: "24v0nk" }] +]); + +const Strikethrough = createLucideIcon("StrikethroughIcon", [ + ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4", key: "43sutm" }], + ["path", { d: "M14 12a4 4 0 0 1 0 8H6", key: "nlfj13" }], + ["line", { x1: "4", x2: "20", y1: "12", y2: "12", key: "1e0a9i" }] +]); + +const Subscript = createLucideIcon("SubscriptIcon", [ + ["path", { d: "m4 5 8 8", key: "1eunvl" }], + ["path", { d: "m12 5-8 8", key: "1ah0jp" }], + [ + "path", + { + d: "M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07", + key: "e8ta8j" + } + ] +]); + +const SunDim = createLucideIcon("SunDimIcon", [ + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["path", { d: "M12 4h.01", key: "1ujb9j" }], + ["path", { d: "M20 12h.01", key: "1ykeid" }], + ["path", { d: "M12 20h.01", key: "zekei9" }], + ["path", { d: "M4 12h.01", key: "158zrr" }], + ["path", { d: "M17.657 6.343h.01", key: "31pqzk" }], + ["path", { d: "M17.657 17.657h.01", key: "jehnf4" }], + ["path", { d: "M6.343 17.657h.01", key: "gdk6ow" }], + ["path", { d: "M6.343 6.343h.01", key: "1uurf0" }] +]); + +const SunMedium = createLucideIcon("SunMediumIcon", [ + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["path", { d: "M12 3v1", key: "1asbbs" }], + ["path", { d: "M12 20v1", key: "1wcdkc" }], + ["path", { d: "M3 12h1", key: "lp3yf2" }], + ["path", { d: "M20 12h1", key: "1vloll" }], + ["path", { d: "m18.364 5.636-.707.707", key: "1hakh0" }], + ["path", { d: "m6.343 17.657-.707.707", key: "18m9nf" }], + ["path", { d: "m5.636 5.636.707.707", key: "1xv1c5" }], + ["path", { d: "m17.657 17.657.707.707", key: "vl76zb" }] +]); + +const SunMoon = createLucideIcon("SunMoonIcon", [ + ["path", { d: "M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4", key: "1fu5g2" }], + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "m4.9 4.9 1.4 1.4", key: "b9915j" }], + ["path", { d: "m17.7 17.7 1.4 1.4", key: "qc3ed3" }], + ["path", { d: "M2 12h2", key: "1t8f8n" }], + ["path", { d: "M20 12h2", key: "1q8mjw" }], + ["path", { d: "m6.3 17.7-1.4 1.4", key: "5gca6" }], + ["path", { d: "m19.1 4.9-1.4 1.4", key: "wpu9u6" }] +]); + +const SunSnow = createLucideIcon("SunSnowIcon", [ + ["path", { d: "M10 21v-1", key: "1u8rkd" }], + ["path", { d: "M10 4V3", key: "pkzwkn" }], + ["path", { d: "M10 9a3 3 0 0 0 0 6", key: "gv75dk" }], + ["path", { d: "m14 20 1.25-2.5L18 18", key: "1chtki" }], + ["path", { d: "m14 4 1.25 2.5L18 6", key: "1b4wsy" }], + ["path", { d: "m17 21-3-6 1.5-3H22", key: "o5qa3v" }], + ["path", { d: "m17 3-3 6 1.5 3", key: "11697g" }], + ["path", { d: "M2 12h1", key: "1uaihz" }], + ["path", { d: "m20 10-1.5 2 1.5 2", key: "1swlpi" }], + ["path", { d: "m3.64 18.36.7-.7", key: "105rm9" }], + ["path", { d: "m4.34 6.34-.7-.7", key: "d3unjp" }] +]); + +const Sun = createLucideIcon("SunIcon", [ + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }], + ["path", { d: "m17.66 17.66 1.41 1.41", key: "ptbguv" }], + ["path", { d: "M2 12h2", key: "1t8f8n" }], + ["path", { d: "M20 12h2", key: "1q8mjw" }], + ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }], + ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }] +]); + +const Sunrise = createLucideIcon("SunriseIcon", [ + ["path", { d: "M12 2v8", key: "1q4o3n" }], + ["path", { d: "m4.93 10.93 1.41 1.41", key: "2a7f42" }], + ["path", { d: "M2 18h2", key: "j10viu" }], + ["path", { d: "M20 18h2", key: "wocana" }], + ["path", { d: "m19.07 10.93-1.41 1.41", key: "15zs5n" }], + ["path", { d: "M22 22H2", key: "19qnx5" }], + ["path", { d: "m8 6 4-4 4 4", key: "ybng9g" }], + ["path", { d: "M16 18a4 4 0 0 0-8 0", key: "1lzouq" }] +]); + +const Sunset = createLucideIcon("SunsetIcon", [ + ["path", { d: "M12 10V2", key: "16sf7g" }], + ["path", { d: "m4.93 10.93 1.41 1.41", key: "2a7f42" }], + ["path", { d: "M2 18h2", key: "j10viu" }], + ["path", { d: "M20 18h2", key: "wocana" }], + ["path", { d: "m19.07 10.93-1.41 1.41", key: "15zs5n" }], + ["path", { d: "M22 22H2", key: "19qnx5" }], + ["path", { d: "m16 6-4 4-4-4", key: "6wukr" }], + ["path", { d: "M16 18a4 4 0 0 0-8 0", key: "1lzouq" }] +]); + +const Superscript = createLucideIcon("SuperscriptIcon", [ + ["path", { d: "m4 19 8-8", key: "hr47gm" }], + ["path", { d: "m12 19-8-8", key: "1dhhmo" }], + [ + "path", + { + d: "M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06", + key: "1dfcux" + } + ] +]); + +const SwatchBook = createLucideIcon("SwatchBookIcon", [ + ["path", { d: "M11 17a4 4 0 0 1-8 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2Z", key: "1ldrpk" }], + ["path", { d: "M16.7 13H19a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7", key: "11i5po" }], + ["path", { d: "M 7 17h.01", key: "1euzgo" }], + [ + "path", + { + d: "m11 8 2.3-2.3a2.4 2.4 0 0 1 3.404.004L18.6 7.6a2.4 2.4 0 0 1 .026 3.434L9.9 19.8", + key: "o2gii7" + } + ] +]); + +const SwissFranc = createLucideIcon("SwissFrancIcon", [ + ["path", { d: "M10 21V3h8", key: "br2l0g" }], + ["path", { d: "M6 16h9", key: "2py0wn" }], + ["path", { d: "M10 9.5h7", key: "13dmhz" }] +]); + +const SwitchCamera = createLucideIcon("SwitchCameraIcon", [ + ["path", { d: "M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5", key: "mtk2lu" }], + ["path", { d: "M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5", key: "120jsl" }], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }], + ["path", { d: "m18 22-3-3 3-3", key: "kgdoj7" }], + ["path", { d: "m6 2 3 3-3 3", key: "1fnbkv" }] +]); + +const Sword = createLucideIcon("SwordIcon", [ + ["polyline", { points: "14.5 17.5 3 6 3 3 6 3 17.5 14.5", key: "1hfsw2" }], + ["line", { x1: "13", x2: "19", y1: "19", y2: "13", key: "1vrmhu" }], + ["line", { x1: "16", x2: "20", y1: "16", y2: "20", key: "1bron3" }], + ["line", { x1: "19", x2: "21", y1: "21", y2: "19", key: "13pww6" }] +]); + +const Swords = createLucideIcon("SwordsIcon", [ + ["polyline", { points: "14.5 17.5 3 6 3 3 6 3 17.5 14.5", key: "1hfsw2" }], + ["line", { x1: "13", x2: "19", y1: "19", y2: "13", key: "1vrmhu" }], + ["line", { x1: "16", x2: "20", y1: "16", y2: "20", key: "1bron3" }], + ["line", { x1: "19", x2: "21", y1: "21", y2: "19", key: "13pww6" }], + ["polyline", { points: "14.5 6.5 18 3 21 3 21 6 17.5 9.5", key: "hbey2j" }], + ["line", { x1: "5", x2: "9", y1: "14", y2: "18", key: "1hf58s" }], + ["line", { x1: "7", x2: "4", y1: "17", y2: "20", key: "pidxm4" }], + ["line", { x1: "3", x2: "5", y1: "19", y2: "21", key: "1pehsh" }] +]); + +const Syringe = createLucideIcon("SyringeIcon", [ + ["path", { d: "m18 2 4 4", key: "22kx64" }], + ["path", { d: "m17 7 3-3", key: "1w1zoj" }], + ["path", { d: "M19 9 8.7 19.3c-1 1-2.5 1-3.4 0l-.6-.6c-1-1-1-2.5 0-3.4L15 5", key: "1exhtz" }], + ["path", { d: "m9 11 4 4", key: "rovt3i" }], + ["path", { d: "m5 19-3 3", key: "59f2uf" }], + ["path", { d: "m14 4 6 6", key: "yqp9t2" }] +]); + +const Table2 = createLucideIcon("Table2Icon", [ + [ + "path", + { + d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18", + key: "gugj83" + } + ] +]); + +const TableCellsMerge = createLucideIcon("TableCellsMergeIcon", [ + ["path", { d: "M12 21v-6", key: "lihzve" }], + ["path", { d: "M12 9V3", key: "da5inc" }], + ["path", { d: "M3 15h18", key: "5xshup" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }] +]); + +const TableCellsSplit = createLucideIcon("TableCellsSplitIcon", [ + ["path", { d: "M12 15V9", key: "8c7uyn" }], + ["path", { d: "M3 15h18", key: "5xshup" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }] +]); + +const TableColumnsSplit = createLucideIcon("TableColumnsSplitIcon", [ + ["path", { d: "M14 14v2", key: "w2a1xv" }], + ["path", { d: "M14 20v2", key: "1lq872" }], + ["path", { d: "M14 2v2", key: "6buw04" }], + ["path", { d: "M14 8v2", key: "i67w9a" }], + ["path", { d: "M2 15h8", key: "82wtch" }], + ["path", { d: "M2 3h6a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H2", key: "up0l64" }], + ["path", { d: "M2 9h8", key: "yelfik" }], + ["path", { d: "M22 15h-4", key: "1es58f" }], + ["path", { d: "M22 3h-2a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h2", key: "pdjoqf" }], + ["path", { d: "M22 9h-4", key: "1luja7" }], + ["path", { d: "M5 3v18", key: "14hmio" }] +]); + +const TableOfContents = createLucideIcon("TableOfContentsIcon", [ + ["path", { d: "M16 12H3", key: "1a2rj7" }], + ["path", { d: "M16 18H3", key: "12xzn7" }], + ["path", { d: "M16 6H3", key: "1wxfjs" }], + ["path", { d: "M21 12h.01", key: "msek7k" }], + ["path", { d: "M21 18h.01", key: "1e8rq1" }], + ["path", { d: "M21 6h.01", key: "1koanj" }] +]); + +const TableProperties = createLucideIcon("TablePropertiesIcon", [ + ["path", { d: "M15 3v18", key: "14nvp0" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M21 9H3", key: "1338ky" }], + ["path", { d: "M21 15H3", key: "9uk58r" }] +]); + +const TableRowsSplit = createLucideIcon("TableRowsSplitIcon", [ + ["path", { d: "M14 10h2", key: "1lstlu" }], + ["path", { d: "M15 22v-8", key: "1fwwgm" }], + ["path", { d: "M15 2v4", key: "1044rn" }], + ["path", { d: "M2 10h2", key: "1r8dkt" }], + ["path", { d: "M20 10h2", key: "1ug425" }], + ["path", { d: "M3 19h18", key: "awlh7x" }], + ["path", { d: "M3 22v-6a2 2 135 0 1 2-2h14a2 2 45 0 1 2 2v6", key: "ibqhof" }], + ["path", { d: "M3 2v2a2 2 45 0 0 2 2h14a2 2 135 0 0 2-2V2", key: "1uenja" }], + ["path", { d: "M8 10h2", key: "66od0" }], + ["path", { d: "M9 22v-8", key: "fmnu31" }], + ["path", { d: "M9 2v4", key: "j1yeou" }] +]); + +const Table = createLucideIcon("TableIcon", [ + ["path", { d: "M12 3v18", key: "108xh3" }], + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9h18", key: "1pudct" }], + ["path", { d: "M3 15h18", key: "5xshup" }] +]); + +const TabletSmartphone = createLucideIcon("TabletSmartphoneIcon", [ + ["rect", { width: "10", height: "14", x: "3", y: "8", rx: "2", key: "1vrsiq" }], + ["path", { d: "M5 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2h-2.4", key: "1j4zmg" }], + ["path", { d: "M8 18h.01", key: "lrp35t" }] +]); + +const Tablet = createLucideIcon("TabletIcon", [ + ["rect", { width: "16", height: "20", x: "4", y: "2", rx: "2", ry: "2", key: "76otgf" }], + ["line", { x1: "12", x2: "12.01", y1: "18", y2: "18", key: "1dp563" }] +]); + +const Tablets = createLucideIcon("TabletsIcon", [ + ["circle", { cx: "7", cy: "7", r: "5", key: "x29byf" }], + ["circle", { cx: "17", cy: "17", r: "5", key: "1op1d2" }], + ["path", { d: "M12 17h10", key: "ls21zv" }], + ["path", { d: "m3.46 10.54 7.08-7.08", key: "1rehiu" }] +]); + +const Tag = createLucideIcon("TagIcon", [ + [ + "path", + { + d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z", + key: "vktsd0" + } + ], + ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }] +]); + +const Tags = createLucideIcon("TagsIcon", [ + ["path", { d: "m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19", key: "1cbfv1" }], + [ + "path", + { + d: "M9.586 5.586A2 2 0 0 0 8.172 5H3a1 1 0 0 0-1 1v5.172a2 2 0 0 0 .586 1.414L8.29 18.29a2.426 2.426 0 0 0 3.42 0l3.58-3.58a2.426 2.426 0 0 0 0-3.42z", + key: "135mg7" + } + ], + ["circle", { cx: "6.5", cy: "9.5", r: ".5", fill: "currentColor", key: "5pm5xn" }] +]); + +const Tally1 = createLucideIcon("Tally1Icon", [["path", { d: "M4 4v16", key: "6qkkli" }]]); + +const Tally2 = createLucideIcon("Tally2Icon", [ + ["path", { d: "M4 4v16", key: "6qkkli" }], + ["path", { d: "M9 4v16", key: "81ygyz" }] +]); + +const Tally3 = createLucideIcon("Tally3Icon", [ + ["path", { d: "M4 4v16", key: "6qkkli" }], + ["path", { d: "M9 4v16", key: "81ygyz" }], + ["path", { d: "M14 4v16", key: "12vmem" }] +]); + +const Tally4 = createLucideIcon("Tally4Icon", [ + ["path", { d: "M4 4v16", key: "6qkkli" }], + ["path", { d: "M9 4v16", key: "81ygyz" }], + ["path", { d: "M14 4v16", key: "12vmem" }], + ["path", { d: "M19 4v16", key: "8ij5ei" }] +]); + +const Tally5 = createLucideIcon("Tally5Icon", [ + ["path", { d: "M4 4v16", key: "6qkkli" }], + ["path", { d: "M9 4v16", key: "81ygyz" }], + ["path", { d: "M14 4v16", key: "12vmem" }], + ["path", { d: "M19 4v16", key: "8ij5ei" }], + ["path", { d: "M22 6 2 18", key: "h9moai" }] +]); + +const Tangent = createLucideIcon("TangentIcon", [ + ["circle", { cx: "17", cy: "4", r: "2", key: "y5j2s2" }], + ["path", { d: "M15.59 5.41 5.41 15.59", key: "l0vprr" }], + ["circle", { cx: "4", cy: "17", r: "2", key: "9p4efm" }], + ["path", { d: "M12 22s-4-9-1.5-11.5S22 12 22 12", key: "1twk4o" }] +]); + +const Target = createLucideIcon("TargetIcon", [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }] +]); + +const Telescope = createLucideIcon("TelescopeIcon", [ + [ + "path", + { + d: "m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44", + key: "k4qptu" + } + ], + ["path", { d: "m13.56 11.747 4.332-.924", key: "19l80z" }], + ["path", { d: "m16 21-3.105-6.21", key: "7oh9d" }], + [ + "path", + { + d: "M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z", + key: "m7xp4m" + } + ], + ["path", { d: "m6.158 8.633 1.114 4.456", key: "74o979" }], + ["path", { d: "m8 21 3.105-6.21", key: "1fvxut" }], + ["circle", { cx: "12", cy: "13", r: "2", key: "1c1ljs" }] +]); + +const TentTree = createLucideIcon("TentTreeIcon", [ + ["circle", { cx: "4", cy: "4", r: "2", key: "bt5ra8" }], + ["path", { d: "m14 5 3-3 3 3", key: "1sorif" }], + ["path", { d: "m14 10 3-3 3 3", key: "1jyi9h" }], + ["path", { d: "M17 14V2", key: "8ymqnk" }], + ["path", { d: "M17 14H7l-5 8h20Z", key: "13ar7p" }], + ["path", { d: "M8 14v8", key: "1ghmqk" }], + ["path", { d: "m9 14 5 8", key: "13pgi6" }] +]); + +const Tent = createLucideIcon("TentIcon", [ + ["path", { d: "M3.5 21 14 3", key: "1szst5" }], + ["path", { d: "M20.5 21 10 3", key: "1310c3" }], + ["path", { d: "M15.5 21 12 15l-3.5 6", key: "1ddtfw" }], + ["path", { d: "M2 21h20", key: "1nyx9w" }] +]); + +const Terminal = createLucideIcon("TerminalIcon", [ + ["polyline", { points: "4 17 10 11 4 5", key: "akl6gq" }], + ["line", { x1: "12", x2: "20", y1: "19", y2: "19", key: "q2wloq" }] +]); + +const TestTubeDiagonal = createLucideIcon("TestTubeDiagonalIcon", [ + [ + "path", + { d: "M21 7 6.82 21.18a2.83 2.83 0 0 1-3.99-.01a2.83 2.83 0 0 1 0-4L17 3", key: "1ub6xw" } + ], + ["path", { d: "m16 2 6 6", key: "1gw87d" }], + ["path", { d: "M12 16H4", key: "1cjfip" }] +]); + +const TestTube = createLucideIcon("TestTubeIcon", [ + ["path", { d: "M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2", key: "125lnx" }], + ["path", { d: "M8.5 2h7", key: "csnxdl" }], + ["path", { d: "M14.5 16h-5", key: "1ox875" }] +]); + +const TestTubes = createLucideIcon("TestTubesIcon", [ + ["path", { d: "M9 2v17.5A2.5 2.5 0 0 1 6.5 22A2.5 2.5 0 0 1 4 19.5V2", key: "1hjrqt" }], + ["path", { d: "M20 2v17.5a2.5 2.5 0 0 1-2.5 2.5a2.5 2.5 0 0 1-2.5-2.5V2", key: "16lc8n" }], + ["path", { d: "M3 2h7", key: "7s29d5" }], + ["path", { d: "M14 2h7", key: "7sicin" }], + ["path", { d: "M9 16H4", key: "1bfye3" }], + ["path", { d: "M20 16h-5", key: "ddnjpe" }] +]); + +const TextCursorInput = createLucideIcon("TextCursorInputIcon", [ + ["path", { d: "M5 4h1a3 3 0 0 1 3 3 3 3 0 0 1 3-3h1", key: "18xjzo" }], + ["path", { d: "M13 20h-1a3 3 0 0 1-3-3 3 3 0 0 1-3 3H5", key: "fj48gi" }], + ["path", { d: "M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1", key: "1n9rhb" }], + ["path", { d: "M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7", key: "13ksps" }], + ["path", { d: "M9 7v10", key: "1vc8ob" }] +]); + +const TextCursor = createLucideIcon("TextCursorIcon", [ + ["path", { d: "M17 22h-1a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4h1", key: "uvaxm9" }], + ["path", { d: "M7 22h1a4 4 0 0 0 4-4v-1", key: "11xy8d" }], + ["path", { d: "M7 2h1a4 4 0 0 1 4 4v1", key: "1uw06m" }] +]); + +const TextQuote = createLucideIcon("TextQuoteIcon", [ + ["path", { d: "M17 6H3", key: "16j9eg" }], + ["path", { d: "M21 12H8", key: "scolzb" }], + ["path", { d: "M21 18H8", key: "1wfozv" }], + ["path", { d: "M3 12v6", key: "fv4c87" }] +]); + +const TextSearch = createLucideIcon("TextSearchIcon", [ + ["path", { d: "M21 6H3", key: "1jwq7v" }], + ["path", { d: "M10 12H3", key: "1ulcyk" }], + ["path", { d: "M10 18H3", key: "13769t" }], + ["circle", { cx: "17", cy: "15", r: "3", key: "1upz2a" }], + ["path", { d: "m21 19-1.9-1.9", key: "dwi7p8" }] +]); + +const TextSelect = createLucideIcon("TextSelectIcon", [ + ["path", { d: "M5 3a2 2 0 0 0-2 2", key: "y57alp" }], + ["path", { d: "M19 3a2 2 0 0 1 2 2", key: "18rm91" }], + ["path", { d: "M21 19a2 2 0 0 1-2 2", key: "1j7049" }], + ["path", { d: "M5 21a2 2 0 0 1-2-2", key: "sbafld" }], + ["path", { d: "M9 3h1", key: "1yesri" }], + ["path", { d: "M9 21h1", key: "15o7lz" }], + ["path", { d: "M14 3h1", key: "1ec4yj" }], + ["path", { d: "M14 21h1", key: "v9vybs" }], + ["path", { d: "M3 9v1", key: "1r0deq" }], + ["path", { d: "M21 9v1", key: "mxsmne" }], + ["path", { d: "M3 14v1", key: "vnatye" }], + ["path", { d: "M21 14v1", key: "169vum" }], + ["line", { x1: "7", x2: "15", y1: "8", y2: "8", key: "1758g8" }], + ["line", { x1: "7", x2: "17", y1: "12", y2: "12", key: "197423" }], + ["line", { x1: "7", x2: "13", y1: "16", y2: "16", key: "37cgm6" }] +]); + +const Text = createLucideIcon("TextIcon", [ + ["path", { d: "M17 6.1H3", key: "wptmhv" }], + ["path", { d: "M21 12.1H3", key: "1j38uz" }], + ["path", { d: "M15.1 18H3", key: "1nb16a" }] +]); + +const Theater = createLucideIcon("TheaterIcon", [ + ["path", { d: "M2 10s3-3 3-8", key: "3xiif0" }], + ["path", { d: "M22 10s-3-3-3-8", key: "ioaa5q" }], + ["path", { d: "M10 2c0 4.4-3.6 8-8 8", key: "16fkpi" }], + ["path", { d: "M14 2c0 4.4 3.6 8 8 8", key: "b9eulq" }], + ["path", { d: "M2 10s2 2 2 5", key: "1au1lb" }], + ["path", { d: "M22 10s-2 2-2 5", key: "qi2y5e" }], + ["path", { d: "M8 15h8", key: "45n4r" }], + ["path", { d: "M2 22v-1a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1", key: "1vsc2m" }], + ["path", { d: "M14 22v-1a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1", key: "hrha4u" }] +]); + +const ThermometerSnowflake = createLucideIcon("ThermometerSnowflakeIcon", [ + ["path", { d: "m10 20-1.25-2.5L6 18", key: "18frcb" }], + ["path", { d: "M10 4 8.75 6.5 6 6", key: "7mghy3" }], + ["path", { d: "M10.585 15H10", key: "4nqulp" }], + ["path", { d: "M2 12h6.5L10 9", key: "kv9z4n" }], + ["path", { d: "M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z", key: "yu0u2z" }], + ["path", { d: "m4 10 1.5 2L4 14", key: "k9enpj" }], + ["path", { d: "m7 21 3-6-1.5-3", key: "j8hb9u" }], + ["path", { d: "m7 3 3 6h2", key: "1bbqgq" }] +]); + +const ThermometerSun = createLucideIcon("ThermometerSunIcon", [ + ["path", { d: "M12 9a4 4 0 0 0-2 7.5", key: "1jvsq6" }], + ["path", { d: "M12 3v2", key: "1w22ol" }], + ["path", { d: "m6.6 18.4-1.4 1.4", key: "w2yidj" }], + ["path", { d: "M20 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z", key: "iof6y5" }], + ["path", { d: "M4 13H2", key: "118le4" }], + ["path", { d: "M6.34 7.34 4.93 5.93", key: "1brd51" }] +]); + +const Thermometer = createLucideIcon("ThermometerIcon", [ + ["path", { d: "M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z", key: "17jzev" }] +]); + +const ThumbsDown = createLucideIcon("ThumbsDownIcon", [ + ["path", { d: "M17 14V2", key: "8ymqnk" }], + [ + "path", + { + d: "M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z", + key: "m61m77" + } + ] +]); + +const ThumbsUp = createLucideIcon("ThumbsUpIcon", [ + ["path", { d: "M7 10v12", key: "1qc93n" }], + [ + "path", + { + d: "M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z", + key: "emmmcr" + } + ] +]); + +const TicketCheck = createLucideIcon("TicketCheckIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "qn84l0" + } + ], + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }] +]); + +const TicketMinus = createLucideIcon("TicketMinusIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "qn84l0" + } + ], + ["path", { d: "M9 12h6", key: "1c52cq" }] +]); + +const TicketPercent = createLucideIcon("TicketPercentIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "1l48ns" + } + ], + ["path", { d: "M9 9h.01", key: "1q5me6" }], + ["path", { d: "m15 9-6 6", key: "1uzhvr" }], + ["path", { d: "M15 15h.01", key: "lqbp3k" }] +]); + +const TicketPlus = createLucideIcon("TicketPlusIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "qn84l0" + } + ], + ["path", { d: "M9 12h6", key: "1c52cq" }], + ["path", { d: "M12 9v6", key: "199k2o" }] +]); + +const TicketSlash = createLucideIcon("TicketSlashIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "qn84l0" + } + ], + ["path", { d: "m9.5 14.5 5-5", key: "qviqfa" }] +]); + +const TicketX = createLucideIcon("TicketXIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "qn84l0" + } + ], + ["path", { d: "m9.5 14.5 5-5", key: "qviqfa" }], + ["path", { d: "m9.5 9.5 5 5", key: "18nt4w" }] +]); + +const Ticket = createLucideIcon("TicketIcon", [ + [ + "path", + { + d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z", + key: "qn84l0" + } + ], + ["path", { d: "M13 5v2", key: "dyzc3o" }], + ["path", { d: "M13 17v2", key: "1ont0d" }], + ["path", { d: "M13 11v2", key: "1wjjxi" }] +]); + +const TicketsPlane = createLucideIcon("TicketsPlaneIcon", [ + ["path", { d: "M10.5 17h1.227a2 2 0 0 0 1.345-.52L18 12", key: "16muxl" }], + ["path", { d: "m12 13.5 3.75.5", key: "1i9qhk" }], + ["path", { d: "m4.5 8 10.58-5.06a1 1 0 0 1 1.342.488L18.5 8", key: "12lg5p" }], + ["path", { d: "M6 10V8", key: "1y41hn" }], + ["path", { d: "M6 14v1", key: "cao2tf" }], + ["path", { d: "M6 19v2", key: "1loha6" }], + ["rect", { x: "2", y: "8", width: "20", height: "13", rx: "2", key: "p3bz5l" }] +]); + +const Tickets = createLucideIcon("TicketsIcon", [ + ["path", { d: "m4.5 8 10.58-5.06a1 1 0 0 1 1.342.488L18.5 8", key: "12lg5p" }], + ["path", { d: "M6 10V8", key: "1y41hn" }], + ["path", { d: "M6 14v1", key: "cao2tf" }], + ["path", { d: "M6 19v2", key: "1loha6" }], + ["rect", { x: "2", y: "8", width: "20", height: "13", rx: "2", key: "p3bz5l" }] +]); + +const TimerOff = createLucideIcon("TimerOffIcon", [ + ["path", { d: "M10 2h4", key: "n1abiw" }], + ["path", { d: "M4.6 11a8 8 0 0 0 1.7 8.7 8 8 0 0 0 8.7 1.7", key: "10he05" }], + ["path", { d: "M7.4 7.4a8 8 0 0 1 10.3 1 8 8 0 0 1 .9 10.2", key: "15f7sh" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M12 12v-2", key: "fwoke6" }] +]); + +const TimerReset = createLucideIcon("TimerResetIcon", [ + ["path", { d: "M10 2h4", key: "n1abiw" }], + ["path", { d: "M12 14v-4", key: "1evpnu" }], + ["path", { d: "M4 13a8 8 0 0 1 8-7 8 8 0 1 1-5.3 14L4 17.6", key: "1ts96g" }], + ["path", { d: "M9 17H4v5", key: "8t5av" }] +]); + +const Timer = createLucideIcon("TimerIcon", [ + ["line", { x1: "10", x2: "14", y1: "2", y2: "2", key: "14vaq8" }], + ["line", { x1: "12", x2: "15", y1: "14", y2: "11", key: "17fdiu" }], + ["circle", { cx: "12", cy: "14", r: "8", key: "1e1u0o" }] +]); + +const ToggleLeft = createLucideIcon("ToggleLeftIcon", [ + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "6", ry: "6", key: "f2vt7d" }], + ["circle", { cx: "8", cy: "12", r: "2", key: "1nvbw3" }] +]); + +const ToggleRight = createLucideIcon("ToggleRightIcon", [ + ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "6", ry: "6", key: "f2vt7d" }], + ["circle", { cx: "16", cy: "12", r: "2", key: "4ma0v8" }] +]); + +const Toilet = createLucideIcon("ToiletIcon", [ + [ + "path", + { + d: "M7 12h13a1 1 0 0 1 1 1 5 5 0 0 1-5 5h-.598a.5.5 0 0 0-.424.765l1.544 2.47a.5.5 0 0 1-.424.765H5.402a.5.5 0 0 1-.424-.765L7 18", + key: "kc4kqr" + } + ], + ["path", { d: "M8 18a5 5 0 0 1-5-5V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8", key: "1tqs57" }] +]); + +const Tornado = createLucideIcon("TornadoIcon", [ + ["path", { d: "M21 4H3", key: "1hwok0" }], + ["path", { d: "M18 8H6", key: "41n648" }], + ["path", { d: "M19 12H9", key: "1g4lpz" }], + ["path", { d: "M16 16h-6", key: "1j5d54" }], + ["path", { d: "M11 20H9", key: "39obr8" }] +]); + +const Torus = createLucideIcon("TorusIcon", [ + ["ellipse", { cx: "12", cy: "11", rx: "3", ry: "2", key: "1b2qxu" }], + ["ellipse", { cx: "12", cy: "12.5", rx: "10", ry: "8.5", key: "h8emeu" }] +]); + +const TouchpadOff = createLucideIcon("TouchpadOffIcon", [ + ["path", { d: "M4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16", key: "lnt0bk" }], + ["path", { d: "M2 14h12", key: "d8icqz" }], + ["path", { d: "M22 14h-2", key: "jrx26d" }], + ["path", { d: "M12 20v-6", key: "1rm09r" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + ["path", { d: "M22 16V6a2 2 0 0 0-2-2H10", key: "11y8e4" }] +]); + +const Touchpad = createLucideIcon("TouchpadIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "M2 14h20", key: "myj16y" }], + ["path", { d: "M12 20v-6", key: "1rm09r" }] +]); + +const TowerControl = createLucideIcon("TowerControlIcon", [ + [ + "path", + { d: "M18.2 12.27 20 6H4l1.8 6.27a1 1 0 0 0 .95.73h10.5a1 1 0 0 0 .96-.73Z", key: "1pledb" } + ], + ["path", { d: "M8 13v9", key: "hmv0ci" }], + ["path", { d: "M16 22v-9", key: "ylnf1u" }], + ["path", { d: "m9 6 1 7", key: "dpdgam" }], + ["path", { d: "m15 6-1 7", key: "ls7zgu" }], + ["path", { d: "M12 6V2", key: "1pj48d" }], + ["path", { d: "M13 2h-2", key: "mj6ths" }] +]); + +const ToyBrick = createLucideIcon("ToyBrickIcon", [ + ["rect", { width: "18", height: "12", x: "3", y: "8", rx: "1", key: "158fvp" }], + ["path", { d: "M10 8V5c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v3", key: "s0042v" }], + ["path", { d: "M19 8V5c0-.6-.4-1-1-1h-3a1 1 0 0 0-1 1v3", key: "9wmeh2" }] +]); + +const Tractor = createLucideIcon("TractorIcon", [ + ["path", { d: "m10 11 11 .9a1 1 0 0 1 .8 1.1l-.665 4.158a1 1 0 0 1-.988.842H20", key: "she1j9" }], + ["path", { d: "M16 18h-5", key: "bq60fd" }], + ["path", { d: "M18 5a1 1 0 0 0-1 1v5.573", key: "1kv8ia" }], + ["path", { d: "M3 4h8.129a1 1 0 0 1 .99.863L13 11.246", key: "1q1ert" }], + ["path", { d: "M4 11V4", key: "9ft8pt" }], + ["path", { d: "M7 15h.01", key: "k5ht0j" }], + ["path", { d: "M8 10.1V4", key: "1jgyzo" }], + ["circle", { cx: "18", cy: "18", r: "2", key: "1emm8v" }], + ["circle", { cx: "7", cy: "15", r: "5", key: "ddtuc" }] +]); + +const TrafficCone = createLucideIcon("TrafficConeIcon", [ + ["path", { d: "M9.3 6.2a4.55 4.55 0 0 0 5.4 0", key: "flyxqv" }], + ["path", { d: "M7.9 10.7c.9.8 2.4 1.3 4.1 1.3s3.2-.5 4.1-1.3", key: "1nlxxg" }], + [ + "path", + { + d: "M13.9 3.5a1.93 1.93 0 0 0-3.8-.1l-3 10c-.1.2-.1.4-.1.6 0 1.7 2.2 3 5 3s5-1.3 5-3c0-.2 0-.4-.1-.5Z", + key: "vz7x1l" + } + ], + [ + "path", + { + d: "m7.5 12.2-4.7 2.7c-.5.3-.8.7-.8 1.1s.3.8.8 1.1l7.6 4.5c.9.5 2.1.5 3 0l7.6-4.5c.7-.3 1-.7 1-1.1s-.3-.8-.8-1.1l-4.7-2.8", + key: "1xfzlw" + } + ] +]); + +const TrainFrontTunnel = createLucideIcon("TrainFrontTunnelIcon", [ + ["path", { d: "M2 22V12a10 10 0 1 1 20 0v10", key: "o0fyp0" }], + ["path", { d: "M15 6.8v1.4a3 2.8 0 1 1-6 0V6.8", key: "m8q3n9" }], + ["path", { d: "M10 15h.01", key: "44in9x" }], + ["path", { d: "M14 15h.01", key: "5mohn5" }], + ["path", { d: "M10 19a4 4 0 0 1-4-4v-3a6 6 0 1 1 12 0v3a4 4 0 0 1-4 4Z", key: "hckbmu" }], + ["path", { d: "m9 19-2 3", key: "iij7hm" }], + ["path", { d: "m15 19 2 3", key: "npx8sa" }] +]); + +const TrainFront = createLucideIcon("TrainFrontIcon", [ + ["path", { d: "M8 3.1V7a4 4 0 0 0 8 0V3.1", key: "1v71zp" }], + ["path", { d: "m9 15-1-1", key: "1yrq24" }], + ["path", { d: "m15 15 1-1", key: "1t0d6s" }], + ["path", { d: "M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z", key: "1p0hjs" }], + ["path", { d: "m8 19-2 3", key: "13i0xs" }], + ["path", { d: "m16 19 2 3", key: "xo31yx" }] +]); + +const TrainTrack = createLucideIcon("TrainTrackIcon", [ + ["path", { d: "M2 17 17 2", key: "18b09t" }], + ["path", { d: "m2 14 8 8", key: "1gv9hu" }], + ["path", { d: "m5 11 8 8", key: "189pqp" }], + ["path", { d: "m8 8 8 8", key: "1imecy" }], + ["path", { d: "m11 5 8 8", key: "ummqn6" }], + ["path", { d: "m14 2 8 8", key: "1vk7dn" }], + ["path", { d: "M7 22 22 7", key: "15mb1i" }] +]); + +const TramFront = createLucideIcon("TramFrontIcon", [ + ["rect", { width: "16", height: "16", x: "4", y: "3", rx: "2", key: "1wxw4b" }], + ["path", { d: "M4 11h16", key: "mpoxn0" }], + ["path", { d: "M12 3v8", key: "1h2ygw" }], + ["path", { d: "m8 19-2 3", key: "13i0xs" }], + ["path", { d: "m18 22-2-3", key: "1p0ohu" }], + ["path", { d: "M8 15h.01", key: "a7atzg" }], + ["path", { d: "M16 15h.01", key: "rnfrdf" }] +]); + +const Transgender = createLucideIcon("TransgenderIcon", [ + ["path", { d: "M12 16v6", key: "c8a4gj" }], + ["path", { d: "M14 20h-4", key: "m8m19d" }], + ["path", { d: "M18 2h4v4", key: "1341mj" }], + ["path", { d: "m2 2 7.17 7.17", key: "13q8l2" }], + ["path", { d: "M2 5.355V2h3.357", key: "18136r" }], + ["path", { d: "m22 2-7.17 7.17", key: "1epvy4" }], + ["path", { d: "M8 5 5 8", key: "mgbjhz" }], + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }] +]); + +const Trash2 = createLucideIcon("Trash2Icon", [ + ["path", { d: "M3 6h18", key: "d0wm0j" }], + ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }], + ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }], + ["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }], + ["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }] +]); + +const Trash = createLucideIcon("TrashIcon", [ + ["path", { d: "M3 6h18", key: "d0wm0j" }], + ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }], + ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }] +]); + +const TreeDeciduous = createLucideIcon("TreeDeciduousIcon", [ + [ + "path", + { + d: "M8 19a4 4 0 0 1-2.24-7.32A3.5 3.5 0 0 1 9 6.03V6a3 3 0 1 1 6 0v.04a3.5 3.5 0 0 1 3.24 5.65A4 4 0 0 1 16 19Z", + key: "oadzkq" + } + ], + ["path", { d: "M12 19v3", key: "npa21l" }] +]); + +const TreePalm = createLucideIcon("TreePalmIcon", [ + ["path", { d: "M13 8c0-2.76-2.46-5-5.5-5S2 5.24 2 8h2l1-1 1 1h4", key: "foxbe7" }], + [ + "path", + { d: "M13 7.14A5.82 5.82 0 0 1 16.5 6c3.04 0 5.5 2.24 5.5 5h-3l-1-1-1 1h-3", key: "18arnh" } + ], + [ + "path", + { + d: "M5.89 9.71c-2.15 2.15-2.3 5.47-.35 7.43l4.24-4.25.7-.7.71-.71 2.12-2.12c-1.95-1.96-5.27-1.8-7.42.35", + key: "ywahnh" + } + ], + ["path", { d: "M11 15.5c.5 2.5-.17 4.5-1 6.5h4c2-5.5-.5-12-1-14", key: "ft0feo" }] +]); + +const TreePine = createLucideIcon("TreePineIcon", [ + [ + "path", + { + d: "m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z", + key: "cpyugq" + } + ], + ["path", { d: "M12 22v-3", key: "kmzjlo" }] +]); + +const Trees = createLucideIcon("TreesIcon", [ + ["path", { d: "M10 10v.2A3 3 0 0 1 8.9 16H5a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z", key: "1l6gj6" }], + ["path", { d: "M7 16v6", key: "1a82de" }], + ["path", { d: "M13 19v3", key: "13sx9i" }], + [ + "path", + { + d: "M12 19h8.3a1 1 0 0 0 .7-1.7L18 14h.3a1 1 0 0 0 .7-1.7L16 9h.2a1 1 0 0 0 .8-1.7L13 3l-1.4 1.5", + key: "1sj9kv" + } + ] +]); + +const Trello = createLucideIcon("TrelloIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], + ["rect", { width: "3", height: "9", x: "7", y: "7", key: "14n3xi" }], + ["rect", { width: "3", height: "5", x: "14", y: "7", key: "s4azjd" }] +]); + +const TrendingDown = createLucideIcon("TrendingDownIcon", [ + ["polyline", { points: "22 17 13.5 8.5 8.5 13.5 2 7", key: "1r2t7k" }], + ["polyline", { points: "16 17 22 17 22 11", key: "11uiuu" }] +]); + +const TrendingUpDown = createLucideIcon("TrendingUpDownIcon", [ + ["path", { d: "M14.828 14.828 21 21", key: "ar5fw7" }], + ["path", { d: "M21 16v5h-5", key: "1ck2sf" }], + ["path", { d: "m21 3-9 9-4-4-6 6", key: "1h02xo" }], + ["path", { d: "M21 8V3h-5", key: "1qoq8a" }] +]); + +const TrendingUp = createLucideIcon("TrendingUpIcon", [ + ["polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17", key: "126l90" }], + ["polyline", { points: "16 7 22 7 22 13", key: "kwv8wd" }] +]); + +const TriangleAlert = createLucideIcon("TriangleAlertIcon", [ + [ + "path", + { + d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3", + key: "wmoenq" + } + ], + ["path", { d: "M12 9v4", key: "juzpu7" }], + ["path", { d: "M12 17h.01", key: "p32p05" }] +]); + +const TriangleDashed = createLucideIcon("TriangleDashedIcon", [ + ["path", { d: "M10.17 4.193a2 2 0 0 1 3.666.013", key: "pltmmw" }], + ["path", { d: "M14 21h2", key: "v4qezv" }], + ["path", { d: "m15.874 7.743 1 1.732", key: "10m0iw" }], + ["path", { d: "m18.849 12.952 1 1.732", key: "zadnam" }], + ["path", { d: "M21.824 18.18a2 2 0 0 1-1.835 2.824", key: "fvwuk4" }], + ["path", { d: "M4.024 21a2 2 0 0 1-1.839-2.839", key: "1e1kah" }], + ["path", { d: "m5.136 12.952-1 1.732", key: "1u4ldi" }], + ["path", { d: "M8 21h2", key: "i9zjee" }], + ["path", { d: "m8.102 7.743-1 1.732", key: "1zzo4u" }] +]); + +const TriangleRight = createLucideIcon("TriangleRightIcon", [ + [ + "path", + { + d: "M22 18a2 2 0 0 1-2 2H3c-1.1 0-1.3-.6-.4-1.3L20.4 4.3c.9-.7 1.6-.4 1.6.7Z", + key: "183wce" + } + ] +]); + +const Triangle = createLucideIcon("TriangleIcon", [ + [ + "path", + { d: "M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z", key: "14u9p9" } + ] +]); + +const Trophy = createLucideIcon("TrophyIcon", [ + ["path", { d: "M6 9H4.5a2.5 2.5 0 0 1 0-5H6", key: "17hqa7" }], + ["path", { d: "M18 9h1.5a2.5 2.5 0 0 0 0-5H18", key: "lmptdp" }], + ["path", { d: "M4 22h16", key: "57wxv0" }], + ["path", { d: "M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22", key: "1nw9bq" }], + ["path", { d: "M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22", key: "1np0yb" }], + ["path", { d: "M18 2H6v7a6 6 0 0 0 12 0V2Z", key: "u46fv3" }] +]); + +const Truck = createLucideIcon("TruckIcon", [ + ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }], + ["path", { d: "M15 18H9", key: "1lyqi6" }], + [ + "path", + { + d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14", + key: "lysw3i" + } + ], + ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }], + ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }] +]); + +const Turtle = createLucideIcon("TurtleIcon", [ + [ + "path", + { + d: "m12 10 2 4v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3a8 8 0 1 0-16 0v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3l2-4h4Z", + key: "1lbbv7" + } + ], + ["path", { d: "M4.82 7.9 8 10", key: "m9wose" }], + ["path", { d: "M15.18 7.9 12 10", key: "p8dp2u" }], + ["path", { d: "M16.93 10H20a2 2 0 0 1 0 4H2", key: "12nsm7" }] +]); + +const TvMinimalPlay = createLucideIcon("TvMinimalPlayIcon", [ + [ + "path", + { + d: "M10 7.75a.75.75 0 0 1 1.142-.638l3.664 2.249a.75.75 0 0 1 0 1.278l-3.664 2.25a.75.75 0 0 1-1.142-.64z", + key: "1pctta" + } + ], + ["path", { d: "M7 21h10", key: "1b0cd5" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }] +]); + +const TvMinimal = createLucideIcon("TvMinimalIcon", [ + ["path", { d: "M7 21h10", key: "1b0cd5" }], + ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }] +]); + +const Tv = createLucideIcon("TvIcon", [ + ["rect", { width: "20", height: "15", x: "2", y: "7", rx: "2", ry: "2", key: "10ag99" }], + ["polyline", { points: "17 2 12 7 7 2", key: "11pgbg" }] +]); + +const Twitch = createLucideIcon("TwitchIcon", [ + ["path", { d: "M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7", key: "c0yzno" }] +]); + +const Twitter = createLucideIcon("TwitterIcon", [ + [ + "path", + { + d: "M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z", + key: "pff0z6" + } + ] +]); + +const TypeOutline = createLucideIcon("TypeOutlineIcon", [ + [ + "path", + { + d: "M14 16.5a.5.5 0 0 0 .5.5h.5a2 2 0 0 1 0 4H9a2 2 0 0 1 0-4h.5a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5V8a2 2 0 0 1-4 0V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v3a2 2 0 0 1-4 0v-.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5Z", + key: "1reda3" + } + ] +]); + +const Type = createLucideIcon("TypeIcon", [ + ["polyline", { points: "4 7 4 4 20 4 20 7", key: "1nosan" }], + ["line", { x1: "9", x2: "15", y1: "20", y2: "20", key: "swin9y" }], + ["line", { x1: "12", x2: "12", y1: "4", y2: "20", key: "1tx1rr" }] +]); + +const UmbrellaOff = createLucideIcon("UmbrellaOffIcon", [ + ["path", { d: "M12 2v1", key: "11qlp1" }], + ["path", { d: "M15.5 21a1.85 1.85 0 0 1-3.5-1v-8H2a10 10 0 0 1 3.428-6.575", key: "eki10q" }], + ["path", { d: "M17.5 12H22A10 10 0 0 0 9.004 3.455", key: "n2ayka" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Umbrella = createLucideIcon("UmbrellaIcon", [ + ["path", { d: "M22 12a10.06 10.06 1 0 0-20 0Z", key: "1teyop" }], + ["path", { d: "M12 12v8a2 2 0 0 0 4 0", key: "ulpmoc" }], + ["path", { d: "M12 2v1", key: "11qlp1" }] +]); + +const Underline = createLucideIcon("UnderlineIcon", [ + ["path", { d: "M6 4v6a6 6 0 0 0 12 0V4", key: "9kb039" }], + ["line", { x1: "4", x2: "20", y1: "20", y2: "20", key: "nun2al" }] +]); + +const Undo2 = createLucideIcon("Undo2Icon", [ + ["path", { d: "M9 14 4 9l5-5", key: "102s5s" }], + ["path", { d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11", key: "f3b9sd" }] +]); + +const UndoDot = createLucideIcon("UndoDotIcon", [ + ["path", { d: "M21 17a9 9 0 0 0-15-6.7L3 13", key: "8mp6z9" }], + ["path", { d: "M3 7v6h6", key: "1v2h90" }], + ["circle", { cx: "12", cy: "17", r: "1", key: "1ixnty" }] +]); + +const Undo = createLucideIcon("UndoIcon", [ + ["path", { d: "M3 7v6h6", key: "1v2h90" }], + ["path", { d: "M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13", key: "1r6uu6" }] +]); + +const UnfoldHorizontal = createLucideIcon("UnfoldHorizontalIcon", [ + ["path", { d: "M16 12h6", key: "15xry1" }], + ["path", { d: "M8 12H2", key: "1jqql6" }], + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "M12 8v2", key: "1woqiv" }], + ["path", { d: "M12 14v2", key: "8jcxud" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "m19 15 3-3-3-3", key: "wjy7rq" }], + ["path", { d: "m5 9-3 3 3 3", key: "j64kie" }] +]); + +const UnfoldVertical = createLucideIcon("UnfoldVerticalIcon", [ + ["path", { d: "M12 22v-6", key: "6o8u61" }], + ["path", { d: "M12 8V2", key: "1wkif3" }], + ["path", { d: "M4 12H2", key: "rhcxmi" }], + ["path", { d: "M10 12H8", key: "s88cx1" }], + ["path", { d: "M16 12h-2", key: "10asgb" }], + ["path", { d: "M22 12h-2", key: "14jgyd" }], + ["path", { d: "m15 19-3 3-3-3", key: "11eu04" }], + ["path", { d: "m15 5-3-3-3 3", key: "itvq4r" }] +]); + +const Ungroup = createLucideIcon("UngroupIcon", [ + ["rect", { width: "8", height: "6", x: "5", y: "4", rx: "1", key: "nzclkv" }], + ["rect", { width: "8", height: "6", x: "11", y: "14", rx: "1", key: "4tytwb" }] +]); + +const University = createLucideIcon("UniversityIcon", [ + ["circle", { cx: "12", cy: "10", r: "1", key: "1gnqs8" }], + ["path", { d: "M22 20V8h-4l-6-4-6 4H2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2", key: "1qj5sn" }], + ["path", { d: "M6 17v.01", key: "roodi6" }], + ["path", { d: "M6 13v.01", key: "67c122" }], + ["path", { d: "M18 17v.01", key: "12ktxm" }], + ["path", { d: "M18 13v.01", key: "tn1rt1" }], + ["path", { d: "M14 22v-5a2 2 0 0 0-2-2a2 2 0 0 0-2 2v5", key: "11g7fi" }] +]); + +const Unlink2 = createLucideIcon("Unlink2Icon", [ + ["path", { d: "M15 7h2a5 5 0 0 1 0 10h-2m-6 0H7A5 5 0 0 1 7 7h2", key: "1re2ne" }] +]); + +const Unlink = createLucideIcon("UnlinkIcon", [ + [ + "path", + { + d: "m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71", + key: "yqzxt4" + } + ], + [ + "path", + { + d: "m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71", + key: "4qinb0" + } + ], + ["line", { x1: "8", x2: "8", y1: "2", y2: "5", key: "1041cp" }], + ["line", { x1: "2", x2: "5", y1: "8", y2: "8", key: "14m1p5" }], + ["line", { x1: "16", x2: "16", y1: "19", y2: "22", key: "rzdirn" }], + ["line", { x1: "19", x2: "22", y1: "16", y2: "16", key: "ox905f" }] +]); + +const Unplug = createLucideIcon("UnplugIcon", [ + ["path", { d: "m19 5 3-3", key: "yk6iyv" }], + ["path", { d: "m2 22 3-3", key: "19mgm9" }], + [ + "path", + { d: "M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z", key: "goz73y" } + ], + ["path", { d: "M7.5 13.5 10 11", key: "7xgeeb" }], + ["path", { d: "M10.5 16.5 13 14", key: "10btkg" }], + [ + "path", + { d: "m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z", key: "1snsnr" } + ] +]); + +const Upload = createLucideIcon("UploadIcon", [ + ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }], + ["polyline", { points: "17 8 12 3 7 8", key: "t8dd8p" }], + ["line", { x1: "12", x2: "12", y1: "3", y2: "15", key: "widbto" }] +]); + +const Usb = createLucideIcon("UsbIcon", [ + ["circle", { cx: "10", cy: "7", r: "1", key: "dypaad" }], + ["circle", { cx: "4", cy: "20", r: "1", key: "22iqad" }], + ["path", { d: "M4.7 19.3 19 5", key: "1enqfc" }], + ["path", { d: "m21 3-3 1 2 2Z", key: "d3ov82" }], + ["path", { d: "M9.26 7.68 5 12l2 5", key: "1esawj" }], + ["path", { d: "m10 14 5 2 3.5-3.5", key: "v8oal5" }], + ["path", { d: "m18 12 1-1 1 1-1 1Z", key: "1bh22v" }] +]); + +const UserCheck = createLucideIcon("UserCheckIcon", [ + ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }], + ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }], + ["polyline", { points: "16 11 18 13 22 9", key: "1pwet4" }] +]); + +const UserCog = createLucideIcon("UserCogIcon", [ + ["circle", { cx: "18", cy: "15", r: "3", key: "gjjjvw" }], + ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }], + ["path", { d: "M10 15H6a4 4 0 0 0-4 4v2", key: "1nfge6" }], + ["path", { d: "m21.7 16.4-.9-.3", key: "12j9ji" }], + ["path", { d: "m15.2 13.9-.9-.3", key: "1fdjdi" }], + ["path", { d: "m16.6 18.7.3-.9", key: "heedtr" }], + ["path", { d: "m19.1 12.2.3-.9", key: "1af3ki" }], + ["path", { d: "m19.6 18.7-.4-1", key: "1x9vze" }], + ["path", { d: "m16.8 12.3-.4-1", key: "vqeiwj" }], + ["path", { d: "m14.3 16.6 1-.4", key: "1qlj63" }], + ["path", { d: "m20.7 13.8 1-.4", key: "1v5t8k" }] +]); + +const UserMinus = createLucideIcon("UserMinusIcon", [ + ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }], + ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }], + ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }] +]); + +const UserPen = createLucideIcon("UserPenIcon", [ + ["path", { d: "M11.5 15H7a4 4 0 0 0-4 4v2", key: "15lzij" }], + [ + "path", + { + d: "M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "1817ys" + } + ], + ["circle", { cx: "10", cy: "7", r: "4", key: "e45bow" }] +]); + +const UserPlus = createLucideIcon("UserPlusIcon", [ + ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }], + ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }], + ["line", { x1: "19", x2: "19", y1: "8", y2: "14", key: "1bvyxn" }], + ["line", { x1: "22", x2: "16", y1: "11", y2: "11", key: "1shjgl" }] +]); + +const UserRoundCheck = createLucideIcon("UserRoundCheckIcon", [ + ["path", { d: "M2 21a8 8 0 0 1 13.292-6", key: "bjp14o" }], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["path", { d: "m16 19 2 2 4-4", key: "1b14m6" }] +]); + +const UserRoundCog = createLucideIcon("UserRoundCogIcon", [ + ["path", { d: "M2 21a8 8 0 0 1 10.434-7.62", key: "1yezr2" }], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["path", { d: "m19.5 14.3-.4.9", key: "1eb35c" }], + ["path", { d: "m16.9 20.8-.4.9", key: "dfjc4z" }], + ["path", { d: "m21.7 19.5-.9-.4", key: "q4dx6b" }], + ["path", { d: "m15.2 16.9-.9-.4", key: "1r0w5f" }], + ["path", { d: "m21.7 16.5-.9.4", key: "1knoei" }], + ["path", { d: "m15.2 19.1-.9.4", key: "j188fs" }], + ["path", { d: "m19.5 21.7-.4-.9", key: "1tonu5" }], + ["path", { d: "m16.9 15.2-.4-.9", key: "699xu" }] +]); + +const UserRoundMinus = createLucideIcon("UserRoundMinusIcon", [ + ["path", { d: "M2 21a8 8 0 0 1 13.292-6", key: "bjp14o" }], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["path", { d: "M22 19h-6", key: "vcuq98" }] +]); + +const UserRoundPen = createLucideIcon("UserRoundPenIcon", [ + ["path", { d: "M2 21a8 8 0 0 1 10.821-7.487", key: "1c8h7z" }], + [ + "path", + { + d: "M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z", + key: "1817ys" + } + ], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }] +]); + +const UserRoundPlus = createLucideIcon("UserRoundPlusIcon", [ + ["path", { d: "M2 21a8 8 0 0 1 13.292-6", key: "bjp14o" }], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["path", { d: "M19 16v6", key: "tddt3s" }], + ["path", { d: "M22 19h-6", key: "vcuq98" }] +]); + +const UserRoundSearch = createLucideIcon("UserRoundSearchIcon", [ + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["path", { d: "M2 21a8 8 0 0 1 10.434-7.62", key: "1yezr2" }], + ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }], + ["path", { d: "m22 22-1.9-1.9", key: "1e5ubv" }] +]); + +const UserRoundX = createLucideIcon("UserRoundXIcon", [ + ["path", { d: "M2 21a8 8 0 0 1 11.873-7", key: "74fkxq" }], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["path", { d: "m17 17 5 5", key: "p7ous7" }], + ["path", { d: "m22 17-5 5", key: "gqnmv0" }] +]); + +const UserRound = createLucideIcon("UserRoundIcon", [ + ["circle", { cx: "12", cy: "8", r: "5", key: "1hypcn" }], + ["path", { d: "M20 21a8 8 0 0 0-16 0", key: "rfgkzh" }] +]); + +const UserSearch = createLucideIcon("UserSearchIcon", [ + ["circle", { cx: "10", cy: "7", r: "4", key: "e45bow" }], + ["path", { d: "M10.3 15H7a4 4 0 0 0-4 4v2", key: "3bnktk" }], + ["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }], + ["path", { d: "m21 21-1.9-1.9", key: "1g2n9r" }] +]); + +const UserX = createLucideIcon("UserXIcon", [ + ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }], + ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }], + ["line", { x1: "17", x2: "22", y1: "8", y2: "13", key: "3nzzx3" }], + ["line", { x1: "22", x2: "17", y1: "8", y2: "13", key: "1swrse" }] +]); + +const User = createLucideIcon("UserIcon", [ + ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }], + ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }] +]); + +const UsersRound = createLucideIcon("UsersRoundIcon", [ + ["path", { d: "M18 21a8 8 0 0 0-16 0", key: "3ypg7q" }], + ["circle", { cx: "10", cy: "8", r: "5", key: "o932ke" }], + ["path", { d: "M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3", key: "10s06x" }] +]); + +const Users = createLucideIcon("UsersIcon", [ + ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }], + ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }], + ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }], + ["path", { d: "M16 3.13a4 4 0 0 1 0 7.75", key: "1da9ce" }] +]); + +const UtensilsCrossed = createLucideIcon("UtensilsCrossedIcon", [ + ["path", { d: "m16 2-2.3 2.3a3 3 0 0 0 0 4.2l1.8 1.8a3 3 0 0 0 4.2 0L22 8", key: "n7qcjb" }], + [ + "path", + { d: "M15 15 3.3 3.3a4.2 4.2 0 0 0 0 6l7.3 7.3c.7.7 2 .7 2.8 0L15 15Zm0 0 7 7", key: "d0u48b" } + ], + ["path", { d: "m2.1 21.8 6.4-6.3", key: "yn04lh" }], + ["path", { d: "m19 5-7 7", key: "194lzd" }] +]); + +const Utensils = createLucideIcon("UtensilsIcon", [ + ["path", { d: "M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2", key: "cjf0a3" }], + ["path", { d: "M7 2v20", key: "1473qp" }], + ["path", { d: "M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7", key: "j28e5" }] +]); + +const UtilityPole = createLucideIcon("UtilityPoleIcon", [ + ["path", { d: "M12 2v20", key: "t6zp3m" }], + ["path", { d: "M2 5h20", key: "1fs1ex" }], + ["path", { d: "M3 3v2", key: "9imdir" }], + ["path", { d: "M7 3v2", key: "n0os7" }], + ["path", { d: "M17 3v2", key: "1l2re6" }], + ["path", { d: "M21 3v2", key: "1duuac" }], + ["path", { d: "m19 5-7 7-7-7", key: "133zxf" }] +]); + +const Variable = createLucideIcon("VariableIcon", [ + ["path", { d: "M8 21s-4-3-4-9 4-9 4-9", key: "uto9ud" }], + ["path", { d: "M16 3s4 3 4 9-4 9-4 9", key: "4w2vsq" }], + ["line", { x1: "15", x2: "9", y1: "9", y2: "15", key: "f7djnv" }], + ["line", { x1: "9", x2: "15", y1: "9", y2: "15", key: "1shsy8" }] +]); + +const Vault = createLucideIcon("VaultIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }], + ["path", { d: "m7.9 7.9 2.7 2.7", key: "hpeyl3" }], + ["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }], + ["path", { d: "m13.4 10.6 2.7-2.7", key: "264c1n" }], + ["circle", { cx: "7.5", cy: "16.5", r: ".5", fill: "currentColor", key: "nkw3mc" }], + ["path", { d: "m7.9 16.1 2.7-2.7", key: "p81g5e" }], + ["circle", { cx: "16.5", cy: "16.5", r: ".5", fill: "currentColor", key: "fubopw" }], + ["path", { d: "m13.4 13.4 2.7 2.7", key: "abhel3" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }] +]); + +const Vegan = createLucideIcon("VeganIcon", [ + ["path", { d: "M16 8q6 0 6-6-6 0-6 6", key: "qsyyc4" }], + ["path", { d: "M17.41 3.59a10 10 0 1 0 3 3", key: "41m9h7" }], + ["path", { d: "M2 2a26.6 26.6 0 0 1 10 20c.9-6.82 1.5-9.5 4-14", key: "qiv7li" }] +]); + +const VenetianMask = createLucideIcon("VenetianMaskIcon", [ + ["path", { d: "M18 11c-1.5 0-2.5.5-3 2", key: "1fod00" }], + [ + "path", + { + d: "M4 6a2 2 0 0 0-2 2v4a5 5 0 0 0 5 5 8 8 0 0 1 5 2 8 8 0 0 1 5-2 5 5 0 0 0 5-5V8a2 2 0 0 0-2-2h-3a8 8 0 0 0-5 2 8 8 0 0 0-5-2z", + key: "d70hit" + } + ], + ["path", { d: "M6 11c1.5 0 2.5.5 3 2", key: "136fht" }] +]); + +const VenusAndMars = createLucideIcon("VenusAndMarsIcon", [ + ["path", { d: "M10 20h4", key: "ni2waw" }], + ["path", { d: "M12 16v6", key: "c8a4gj" }], + ["path", { d: "M17 2h4v4", key: "vhe59" }], + ["path", { d: "m21 2-5.46 5.46", key: "19kypf" }], + ["circle", { cx: "12", cy: "11", r: "5", key: "16gxyc" }] +]); + +const Venus = createLucideIcon("VenusIcon", [ + ["path", { d: "M12 15v7", key: "t2xh3l" }], + ["path", { d: "M9 19h6", key: "456am0" }], + ["circle", { cx: "12", cy: "9", r: "6", key: "1nw4tq" }] +]); + +const VibrateOff = createLucideIcon("VibrateOffIcon", [ + ["path", { d: "m2 8 2 2-2 2 2 2-2 2", key: "sv1b1" }], + ["path", { d: "m22 8-2 2 2 2-2 2 2 2", key: "101i4y" }], + ["path", { d: "M8 8v10c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2", key: "1hbad5" }], + ["path", { d: "M16 10.34V6c0-.55-.45-1-1-1h-4.34", key: "1x5tf0" }], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Vibrate = createLucideIcon("VibrateIcon", [ + ["path", { d: "m2 8 2 2-2 2 2 2-2 2", key: "sv1b1" }], + ["path", { d: "m22 8-2 2 2 2-2 2 2 2", key: "101i4y" }], + ["rect", { width: "8", height: "14", x: "8", y: "5", rx: "1", key: "1oyrl4" }] +]); + +const VideoOff = createLucideIcon("VideoOffIcon", [ + [ + "path", + { d: "M10.66 6H14a2 2 0 0 1 2 2v2.5l5.248-3.062A.5.5 0 0 1 22 7.87v8.196", key: "w8jjjt" } + ], + ["path", { d: "M16 16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2", key: "1xawa7" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Video = createLucideIcon("VideoIcon", [ + [ + "path", + { + d: "m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5", + key: "ftymec" + } + ], + ["rect", { x: "2", y: "6", width: "14", height: "12", rx: "2", key: "158x01" }] +]); + +const Videotape = createLucideIcon("VideotapeIcon", [ + ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }], + ["path", { d: "M2 8h20", key: "d11cs7" }], + ["circle", { cx: "8", cy: "14", r: "2", key: "1k2qr5" }], + ["path", { d: "M8 12h8", key: "1wcyev" }], + ["circle", { cx: "16", cy: "14", r: "2", key: "14k7lr" }] +]); + +const View = createLucideIcon("ViewIcon", [ + ["path", { d: "M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2", key: "mrq65r" }], + ["path", { d: "M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2", key: "be3xqs" }], + ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }], + [ + "path", + { + d: "M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0", + key: "11ak4c" + } + ] +]); + +const Voicemail = createLucideIcon("VoicemailIcon", [ + ["circle", { cx: "6", cy: "12", r: "4", key: "1ehtga" }], + ["circle", { cx: "18", cy: "12", r: "4", key: "4vafl8" }], + ["line", { x1: "6", x2: "18", y1: "16", y2: "16", key: "pmt8us" }] +]); + +const Volleyball = createLucideIcon("VolleyballIcon", [ + ["path", { d: "M11.1 7.1a16.55 16.55 0 0 1 10.9 4", key: "2880wi" }], + ["path", { d: "M12 12a12.6 12.6 0 0 1-8.7 5", key: "113sja" }], + ["path", { d: "M16.8 13.6a16.55 16.55 0 0 1-9 7.5", key: "1qmsgl" }], + ["path", { d: "M20.7 17a12.8 12.8 0 0 0-8.7-5 13.3 13.3 0 0 1 0-10", key: "1bmeqp" }], + ["path", { d: "M6.3 3.8a16.55 16.55 0 0 0 1.9 11.5", key: "iekzv9" }], + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }] +]); + +const Volume1 = createLucideIcon("Volume1Icon", [ + [ + "path", + { + d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z", + key: "uqj9uw" + } + ], + ["path", { d: "M16 9a5 5 0 0 1 0 6", key: "1q6k2b" }] +]); + +const Volume2 = createLucideIcon("Volume2Icon", [ + [ + "path", + { + d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z", + key: "uqj9uw" + } + ], + ["path", { d: "M16 9a5 5 0 0 1 0 6", key: "1q6k2b" }], + ["path", { d: "M19.364 18.364a9 9 0 0 0 0-12.728", key: "ijwkga" }] +]); + +const VolumeOff = createLucideIcon("VolumeOffIcon", [ + ["path", { d: "M16 9a5 5 0 0 1 .95 2.293", key: "1fgyg8" }], + ["path", { d: "M19.364 5.636a9 9 0 0 1 1.889 9.96", key: "l3zxae" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }], + [ + "path", + { + d: "m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11", + key: "1gbwow" + } + ], + ["path", { d: "M9.828 4.172A.686.686 0 0 1 11 4.657v.686", key: "s2je0y" }] +]); + +const VolumeX = createLucideIcon("VolumeXIcon", [ + [ + "path", + { + d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z", + key: "uqj9uw" + } + ], + ["line", { x1: "22", x2: "16", y1: "9", y2: "15", key: "1ewh16" }], + ["line", { x1: "16", x2: "22", y1: "9", y2: "15", key: "5ykzw1" }] +]); + +const Volume = createLucideIcon("VolumeIcon", [ + [ + "path", + { + d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z", + key: "uqj9uw" + } + ] +]); + +const Vote = createLucideIcon("VoteIcon", [ + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }], + ["path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z", key: "1ezoue" }], + ["path", { d: "M22 19H2", key: "nuriw5" }] +]); + +const WalletCards = createLucideIcon("WalletCardsIcon", [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M3 9a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2", key: "4125el" }], + [ + "path", + { + d: "M3 11h3c.8 0 1.6.3 2.1.9l1.1.9c1.6 1.6 4.1 1.6 5.7 0l1.1-.9c.5-.5 1.3-.9 2.1-.9H21", + key: "1dpki6" + } + ] +]); + +const WalletMinimal = createLucideIcon("WalletMinimalIcon", [ + ["path", { d: "M17 14h.01", key: "7oqj8z" }], + [ + "path", + { + d: "M7 7h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14", + key: "u1rqew" + } + ] +]); + +const Wallet = createLucideIcon("WalletIcon", [ + [ + "path", + { + d: "M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1", + key: "18etb6" + } + ], + ["path", { d: "M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4", key: "xoc0q4" }] +]); + +const Wallpaper = createLucideIcon("WallpaperIcon", [ + ["circle", { cx: "8", cy: "9", r: "2", key: "gjzl9d" }], + [ + "path", + { + d: "m9 17 6.1-6.1a2 2 0 0 1 2.81.01L22 15V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2", + key: "69xh40" + } + ], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["path", { d: "M12 17v4", key: "1riwvh" }] +]); + +const WandSparkles = createLucideIcon("WandSparklesIcon", [ + [ + "path", + { + d: "m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72", + key: "ul74o6" + } + ], + ["path", { d: "m14 7 3 3", key: "1r5n42" }], + ["path", { d: "M5 6v4", key: "ilb8ba" }], + ["path", { d: "M19 14v4", key: "blhpug" }], + ["path", { d: "M10 2v2", key: "7u0qdc" }], + ["path", { d: "M7 8H3", key: "zfb6yr" }], + ["path", { d: "M21 16h-4", key: "1cnmox" }], + ["path", { d: "M11 3H9", key: "1obp7u" }] +]); + +const Wand = createLucideIcon("WandIcon", [ + ["path", { d: "M15 4V2", key: "z1p9b7" }], + ["path", { d: "M15 16v-2", key: "px0unx" }], + ["path", { d: "M8 9h2", key: "1g203m" }], + ["path", { d: "M20 9h2", key: "19tzq7" }], + ["path", { d: "M17.8 11.8 19 13", key: "yihg8r" }], + ["path", { d: "M15 9h.01", key: "x1ddxp" }], + ["path", { d: "M17.8 6.2 19 5", key: "fd4us0" }], + ["path", { d: "m3 21 9-9", key: "1jfql5" }], + ["path", { d: "M12.2 6.2 11 5", key: "i3da3b" }] +]); + +const Warehouse = createLucideIcon("WarehouseIcon", [ + [ + "path", + { + d: "M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z", + key: "gksnxg" + } + ], + ["path", { d: "M6 18h12", key: "9pbo8z" }], + ["path", { d: "M6 14h12", key: "4cwo0f" }], + ["rect", { width: "12", height: "12", x: "6", y: "10", key: "apd30q" }] +]); + +const WashingMachine = createLucideIcon("WashingMachineIcon", [ + ["path", { d: "M3 6h3", key: "155dbl" }], + ["path", { d: "M17 6h.01", key: "e2y6kg" }], + ["rect", { width: "18", height: "20", x: "3", y: "2", rx: "2", key: "od3kk9" }], + ["circle", { cx: "12", cy: "13", r: "5", key: "nlbqau" }], + ["path", { d: "M12 18a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 1 0-5", key: "17lach" }] +]); + +const Watch = createLucideIcon("WatchIcon", [ + ["circle", { cx: "12", cy: "12", r: "6", key: "1vlfrh" }], + ["polyline", { points: "12 10 12 12 13 13", key: "19dquz" }], + [ + "path", + { d: "m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05", key: "18k57s" } + ], + ["path", { d: "m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05", key: "16ny36" }] +]); + +const WavesLadder = createLucideIcon("WavesLadderIcon", [ + ["path", { d: "M19 5a2 2 0 0 0-2 2v11", key: "s41o68" }], + [ + "path", + { + d: "M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", + key: "rd2r6e" + } + ], + ["path", { d: "M7 13h10", key: "1rwob1" }], + ["path", { d: "M7 9h10", key: "12czzb" }], + ["path", { d: "M9 5a2 2 0 0 0-2 2v11", key: "x0q4gh" }] +]); + +const Waves = createLucideIcon("WavesIcon", [ + [ + "path", + { + d: "M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", + key: "knzxuh" + } + ], + [ + "path", + { + d: "M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", + key: "2jd2cc" + } + ], + [ + "path", + { + d: "M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1", + key: "rd2r6e" + } + ] +]); + +const Waypoints = createLucideIcon("WaypointsIcon", [ + ["circle", { cx: "12", cy: "4.5", r: "2.5", key: "r5ysbb" }], + ["path", { d: "m10.2 6.3-3.9 3.9", key: "1nzqf6" }], + ["circle", { cx: "4.5", cy: "12", r: "2.5", key: "jydg6v" }], + ["path", { d: "M7 12h10", key: "b7w52i" }], + ["circle", { cx: "19.5", cy: "12", r: "2.5", key: "1piiel" }], + ["path", { d: "m13.8 17.7 3.9-3.9", key: "1wyg1y" }], + ["circle", { cx: "12", cy: "19.5", r: "2.5", key: "13o1pw" }] +]); + +const Webcam = createLucideIcon("WebcamIcon", [ + ["circle", { cx: "12", cy: "10", r: "8", key: "1gshiw" }], + ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], + ["path", { d: "M7 22h10", key: "10w4w3" }], + ["path", { d: "M12 22v-4", key: "1utk9m" }] +]); + +const WebhookOff = createLucideIcon("WebhookOffIcon", [ + ["path", { d: "M17 17h-5c-1.09-.02-1.94.92-2.5 1.9A3 3 0 1 1 2.57 15", key: "1tvl6x" }], + ["path", { d: "M9 3.4a4 4 0 0 1 6.52.66", key: "q04jfq" }], + ["path", { d: "m6 17 3.1-5.8a2.5 2.5 0 0 0 .057-2.05", key: "azowf0" }], + ["path", { d: "M20.3 20.3a4 4 0 0 1-2.3.7", key: "5joiws" }], + ["path", { d: "M18.6 13a4 4 0 0 1 3.357 3.414", key: "cangb8" }], + ["path", { d: "m12 6 .6 1", key: "tpjl1n" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Webhook = createLucideIcon("WebhookIcon", [ + [ + "path", + { + d: "M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2", + key: "q3hayz" + } + ], + ["path", { d: "m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06", key: "1go1hn" }], + ["path", { d: "m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8", key: "qlwsc0" }] +]); + +const Weight = createLucideIcon("WeightIcon", [ + ["circle", { cx: "12", cy: "5", r: "3", key: "rqqgnr" }], + [ + "path", + { + d: "M6.5 8a2 2 0 0 0-1.905 1.46L2.1 18.5A2 2 0 0 0 4 21h16a2 2 0 0 0 1.925-2.54L19.4 9.5A2 2 0 0 0 17.48 8Z", + key: "56o5sh" + } + ] +]); + +const WheatOff = createLucideIcon("WheatOffIcon", [ + ["path", { d: "m2 22 10-10", key: "28ilpk" }], + ["path", { d: "m16 8-1.17 1.17", key: "1qqm82" }], + [ + "path", + { + d: "M3.47 12.53 5 11l1.53 1.53a3.5 3.5 0 0 1 0 4.94L5 19l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z", + key: "1rdhi6" + } + ], + [ + "path", + { d: "m8 8-.53.53a3.5 3.5 0 0 0 0 4.94L9 15l1.53-1.53c.55-.55.88-1.25.98-1.97", key: "4wz8re" } + ], + [ + "path", + { d: "M10.91 5.26c.15-.26.34-.51.56-.73L13 3l1.53 1.53a3.5 3.5 0 0 1 .28 4.62", key: "rves66" } + ], + ["path", { d: "M20 2h2v2a4 4 0 0 1-4 4h-2V6a4 4 0 0 1 4-4Z", key: "19rau1" }], + [ + "path", + { + d: "M11.47 17.47 13 19l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L5 19l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z", + key: "tc8ph9" + } + ], + [ + "path", + { + d: "m16 16-.53.53a3.5 3.5 0 0 1-4.94 0L9 15l1.53-1.53a3.49 3.49 0 0 1 1.97-.98", + key: "ak46r" + } + ], + [ + "path", + { + d: "M18.74 13.09c.26-.15.51-.34.73-.56L21 11l-1.53-1.53a3.5 3.5 0 0 0-4.62-.28", + key: "1tw520" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Wheat = createLucideIcon("WheatIcon", [ + ["path", { d: "M2 22 16 8", key: "60hf96" }], + [ + "path", + { + d: "M3.47 12.53 5 11l1.53 1.53a3.5 3.5 0 0 1 0 4.94L5 19l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z", + key: "1rdhi6" + } + ], + [ + "path", + { + d: "M7.47 8.53 9 7l1.53 1.53a3.5 3.5 0 0 1 0 4.94L9 15l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z", + key: "1sdzmb" + } + ], + [ + "path", + { + d: "M11.47 4.53 13 3l1.53 1.53a3.5 3.5 0 0 1 0 4.94L13 11l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z", + key: "eoatbi" + } + ], + ["path", { d: "M20 2h2v2a4 4 0 0 1-4 4h-2V6a4 4 0 0 1 4-4Z", key: "19rau1" }], + [ + "path", + { + d: "M11.47 17.47 13 19l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L5 19l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z", + key: "tc8ph9" + } + ], + [ + "path", + { + d: "M15.47 13.47 17 15l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L9 15l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z", + key: "2m8kc5" + } + ], + [ + "path", + { + d: "M19.47 9.47 21 11l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L13 11l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z", + key: "vex3ng" + } + ] +]); + +const WholeWord = createLucideIcon("WholeWordIcon", [ + ["circle", { cx: "7", cy: "12", r: "3", key: "12clwm" }], + ["path", { d: "M10 9v6", key: "17i7lo" }], + ["circle", { cx: "17", cy: "12", r: "3", key: "gl7c2s" }], + ["path", { d: "M14 7v8", key: "dl84cr" }], + ["path", { d: "M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1", key: "lt2kga" }] +]); + +const WifiHigh = createLucideIcon("WifiHighIcon", [ + ["path", { d: "M12 20h.01", key: "zekei9" }], + ["path", { d: "M5 12.859a10 10 0 0 1 14 0", key: "1x1e6c" }], + ["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }] +]); + +const WifiLow = createLucideIcon("WifiLowIcon", [ + ["path", { d: "M12 20h.01", key: "zekei9" }], + ["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }] +]); + +const WifiOff = createLucideIcon("WifiOffIcon", [ + ["path", { d: "M12 20h.01", key: "zekei9" }], + ["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }], + ["path", { d: "M5 12.859a10 10 0 0 1 5.17-2.69", key: "1dl1wf" }], + ["path", { d: "M19 12.859a10 10 0 0 0-2.007-1.523", key: "4k23kn" }], + ["path", { d: "M2 8.82a15 15 0 0 1 4.177-2.643", key: "1grhjp" }], + ["path", { d: "M22 8.82a15 15 0 0 0-11.288-3.764", key: "z3jwby" }], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const WifiZero = createLucideIcon("WifiZeroIcon", [["path", { d: "M12 20h.01", key: "zekei9" }]]); + +const Wifi = createLucideIcon("WifiIcon", [ + ["path", { d: "M12 20h.01", key: "zekei9" }], + ["path", { d: "M2 8.82a15 15 0 0 1 20 0", key: "dnpr2z" }], + ["path", { d: "M5 12.859a10 10 0 0 1 14 0", key: "1x1e6c" }], + ["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }] +]); + +const WindArrowDown = createLucideIcon("WindArrowDownIcon", [ + ["path", { d: "M10 2v8", key: "d4bbey" }], + ["path", { d: "M12.8 21.6A2 2 0 1 0 14 18H2", key: "19kp1d" }], + ["path", { d: "M17.5 10a2.5 2.5 0 1 1 2 4H2", key: "19kpjc" }], + ["path", { d: "m6 6 4 4 4-4", key: "k13n16" }] +]); + +const Wind = createLucideIcon("WindIcon", [ + ["path", { d: "M12.8 19.6A2 2 0 1 0 14 16H2", key: "148xed" }], + ["path", { d: "M17.5 8a2.5 2.5 0 1 1 2 4H2", key: "1u4tom" }], + ["path", { d: "M9.8 4.4A2 2 0 1 1 11 8H2", key: "75valh" }] +]); + +const WineOff = createLucideIcon("WineOffIcon", [ + ["path", { d: "M8 22h8", key: "rmew8v" }], + ["path", { d: "M7 10h3m7 0h-1.343", key: "v48bem" }], + ["path", { d: "M12 15v7", key: "t2xh3l" }], + [ + "path", + { + d: "M7.307 7.307A12.33 12.33 0 0 0 7 10a5 5 0 0 0 7.391 4.391M8.638 2.981C8.75 2.668 8.872 2.34 9 2h6c1.5 4 2 6 2 8 0 .407-.05.809-.145 1.198", + key: "1ymjlu" + } + ], + ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }] +]); + +const Wine = createLucideIcon("WineIcon", [ + ["path", { d: "M8 22h8", key: "rmew8v" }], + ["path", { d: "M7 10h10", key: "1101jm" }], + ["path", { d: "M12 15v7", key: "t2xh3l" }], + [ + "path", + { d: "M12 15a5 5 0 0 0 5-5c0-2-.5-4-2-8H9c-1.5 4-2 6-2 8a5 5 0 0 0 5 5Z", key: "10ffi3" } + ] +]); + +const Workflow = createLucideIcon("WorkflowIcon", [ + ["rect", { width: "8", height: "8", x: "3", y: "3", rx: "2", key: "by2w9f" }], + ["path", { d: "M7 11v4a2 2 0 0 0 2 2h4", key: "xkn7yn" }], + ["rect", { width: "8", height: "8", x: "13", y: "13", rx: "2", key: "1cgmvn" }] +]); + +const Worm = createLucideIcon("WormIcon", [ + ["path", { d: "m19 12-1.5 3", key: "9bcu4o" }], + ["path", { d: "M19.63 18.81 22 20", key: "121v98" }], + [ + "path", + { + d: "M6.47 8.23a1.68 1.68 0 0 1 2.44 1.93l-.64 2.08a6.76 6.76 0 0 0 10.16 7.67l.42-.27a1 1 0 1 0-2.73-4.21l-.42.27a1.76 1.76 0 0 1-2.63-1.99l.64-2.08A6.66 6.66 0 0 0 3.94 3.9l-.7.4a1 1 0 1 0 2.55 4.34z", + key: "1tij6q" + } + ] +]); + +const WrapText = createLucideIcon("WrapTextIcon", [ + ["line", { x1: "3", x2: "21", y1: "6", y2: "6", key: "4m8b97" }], + ["path", { d: "M3 12h15a3 3 0 1 1 0 6h-4", key: "1cl7v7" }], + ["polyline", { points: "16 16 14 18 16 20", key: "1jznyi" }], + ["line", { x1: "3", x2: "10", y1: "18", y2: "18", key: "1h33wv" }] +]); + +const Wrench = createLucideIcon("WrenchIcon", [ + [ + "path", + { + d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z", + key: "cbrjhi" + } + ] +]); + +const X = createLucideIcon("XIcon", [ + ["path", { d: "M18 6 6 18", key: "1bl5f8" }], + ["path", { d: "m6 6 12 12", key: "d8bk6v" }] +]); + +const Youtube = createLucideIcon("YoutubeIcon", [ + [ + "path", + { + d: "M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17", + key: "1q2vi4" + } + ], + ["path", { d: "m10 15 5-3-5-3z", key: "1jp15x" }] +]); + +const ZapOff = createLucideIcon("ZapOffIcon", [ + ["path", { d: "M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317", key: "193nxd" }], + ["path", { d: "M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773", key: "27a7lr" }], + [ + "path", + { + d: "M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643", + key: "1e0qe9" + } + ], + ["path", { d: "m2 2 20 20", key: "1ooewy" }] +]); + +const Zap = createLucideIcon("ZapIcon", [ + [ + "path", + { + d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z", + key: "1xq2db" + } + ] +]); + +const ZoomIn = createLucideIcon("ZoomInIcon", [ + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }], + ["line", { x1: "11", x2: "11", y1: "8", y2: "14", key: "1vmskp" }], + ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }] +]); + +const ZoomOut = createLucideIcon("ZoomOutIcon", [ + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], + ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }], + ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }] +]); + +var index = /*#__PURE__*/Object.freeze({ + __proto__: null, + AArrowDown: AArrowDown, + AArrowUp: AArrowUp, + ALargeSmall: ALargeSmall, + Accessibility: Accessibility, + Activity: Activity, + AirVent: AirVent, + Airplay: Airplay, + AlarmClock: AlarmClock, + AlarmClockCheck: AlarmClockCheck, + AlarmClockMinus: AlarmClockMinus, + AlarmClockOff: AlarmClockOff, + AlarmClockPlus: AlarmClockPlus, + AlarmSmoke: AlarmSmoke, + Album: Album, + AlignCenter: AlignCenter, + AlignCenterHorizontal: AlignCenterHorizontal, + AlignCenterVertical: AlignCenterVertical, + AlignEndHorizontal: AlignEndHorizontal, + AlignEndVertical: AlignEndVertical, + AlignHorizontalDistributeCenter: AlignHorizontalDistributeCenter, + AlignHorizontalDistributeEnd: AlignHorizontalDistributeEnd, + AlignHorizontalDistributeStart: AlignHorizontalDistributeStart, + AlignHorizontalJustifyCenter: AlignHorizontalJustifyCenter, + AlignHorizontalJustifyEnd: AlignHorizontalJustifyEnd, + AlignHorizontalJustifyStart: AlignHorizontalJustifyStart, + AlignHorizontalSpaceAround: AlignHorizontalSpaceAround, + AlignHorizontalSpaceBetween: AlignHorizontalSpaceBetween, + AlignJustify: AlignJustify, + AlignLeft: AlignLeft, + AlignRight: AlignRight, + AlignStartHorizontal: AlignStartHorizontal, + AlignStartVertical: AlignStartVertical, + AlignVerticalDistributeCenter: AlignVerticalDistributeCenter, + AlignVerticalDistributeEnd: AlignVerticalDistributeEnd, + AlignVerticalDistributeStart: AlignVerticalDistributeStart, + AlignVerticalJustifyCenter: AlignVerticalJustifyCenter, + AlignVerticalJustifyEnd: AlignVerticalJustifyEnd, + AlignVerticalJustifyStart: AlignVerticalJustifyStart, + AlignVerticalSpaceAround: AlignVerticalSpaceAround, + AlignVerticalSpaceBetween: AlignVerticalSpaceBetween, + Ambulance: Ambulance, + Ampersand: Ampersand, + Ampersands: Ampersands, + Amphora: Amphora, + Anchor: Anchor, + Angry: Angry, + Annoyed: Annoyed, + Antenna: Antenna, + Anvil: Anvil, + Aperture: Aperture, + AppWindow: AppWindow, + AppWindowMac: AppWindowMac, + Apple: Apple, + Archive: Archive, + ArchiveRestore: ArchiveRestore, + ArchiveX: ArchiveX, + Armchair: Armchair, + ArrowBigDown: ArrowBigDown, + ArrowBigDownDash: ArrowBigDownDash, + ArrowBigLeft: ArrowBigLeft, + ArrowBigLeftDash: ArrowBigLeftDash, + ArrowBigRight: ArrowBigRight, + ArrowBigRightDash: ArrowBigRightDash, + ArrowBigUp: ArrowBigUp, + ArrowBigUpDash: ArrowBigUpDash, + ArrowDown: ArrowDown, + ArrowDown01: ArrowDown01, + ArrowDown10: ArrowDown10, + ArrowDownAZ: ArrowDownAZ, + ArrowDownFromLine: ArrowDownFromLine, + ArrowDownLeft: ArrowDownLeft, + ArrowDownNarrowWide: ArrowDownNarrowWide, + ArrowDownRight: ArrowDownRight, + ArrowDownToDot: ArrowDownToDot, + ArrowDownToLine: ArrowDownToLine, + ArrowDownUp: ArrowDownUp, + ArrowDownWideNarrow: ArrowDownWideNarrow, + ArrowDownZA: ArrowDownZA, + ArrowLeft: ArrowLeft, + ArrowLeftFromLine: ArrowLeftFromLine, + ArrowLeftRight: ArrowLeftRight, + ArrowLeftToLine: ArrowLeftToLine, + ArrowRight: ArrowRight, + ArrowRightFromLine: ArrowRightFromLine, + ArrowRightLeft: ArrowRightLeft, + ArrowRightToLine: ArrowRightToLine, + ArrowUp: ArrowUp, + ArrowUp01: ArrowUp01, + ArrowUp10: ArrowUp10, + ArrowUpAZ: ArrowUpAZ, + ArrowUpDown: ArrowUpDown, + ArrowUpFromDot: ArrowUpFromDot, + ArrowUpFromLine: ArrowUpFromLine, + ArrowUpLeft: ArrowUpLeft, + ArrowUpNarrowWide: ArrowUpNarrowWide, + ArrowUpRight: ArrowUpRight, + ArrowUpToLine: ArrowUpToLine, + ArrowUpWideNarrow: ArrowUpWideNarrow, + ArrowUpZA: ArrowUpZA, + ArrowsUpFromLine: ArrowsUpFromLine, + Asterisk: Asterisk, + AtSign: AtSign, + Atom: Atom, + AudioLines: AudioLines, + AudioWaveform: AudioWaveform, + Award: Award, + Axe: Axe, + Axis3d: Axis3d, + Baby: Baby, + Backpack: Backpack, + Badge: Badge, + BadgeAlert: BadgeAlert, + BadgeCent: BadgeCent, + BadgeCheck: BadgeCheck, + BadgeDollarSign: BadgeDollarSign, + BadgeEuro: BadgeEuro, + BadgeHelp: BadgeHelp, + BadgeIndianRupee: BadgeIndianRupee, + BadgeInfo: BadgeInfo, + BadgeJapaneseYen: BadgeJapaneseYen, + BadgeMinus: BadgeMinus, + BadgePercent: BadgePercent, + BadgePlus: BadgePlus, + BadgePoundSterling: BadgePoundSterling, + BadgeRussianRuble: BadgeRussianRuble, + BadgeSwissFranc: BadgeSwissFranc, + BadgeX: BadgeX, + BaggageClaim: BaggageClaim, + Ban: Ban, + Banana: Banana, + Bandage: Bandage, + Banknote: Banknote, + Barcode: Barcode, + Baseline: Baseline, + Bath: Bath, + Battery: Battery, + BatteryCharging: BatteryCharging, + BatteryFull: BatteryFull, + BatteryLow: BatteryLow, + BatteryMedium: BatteryMedium, + BatteryPlus: BatteryPlus, + BatteryWarning: BatteryWarning, + Beaker: Beaker, + Bean: Bean, + BeanOff: BeanOff, + Bed: Bed, + BedDouble: BedDouble, + BedSingle: BedSingle, + Beef: Beef, + Beer: Beer, + BeerOff: BeerOff, + Bell: Bell, + BellDot: BellDot, + BellElectric: BellElectric, + BellMinus: BellMinus, + BellOff: BellOff, + BellPlus: BellPlus, + BellRing: BellRing, + BetweenHorizontalEnd: BetweenHorizontalEnd, + BetweenHorizontalStart: BetweenHorizontalStart, + BetweenVerticalEnd: BetweenVerticalEnd, + BetweenVerticalStart: BetweenVerticalStart, + BicepsFlexed: BicepsFlexed, + Bike: Bike, + Binary: Binary, + Binoculars: Binoculars, + Biohazard: Biohazard, + Bird: Bird, + Bitcoin: Bitcoin, + Blend: Blend, + Blinds: Blinds, + Blocks: Blocks, + Bluetooth: Bluetooth, + BluetoothConnected: BluetoothConnected, + BluetoothOff: BluetoothOff, + BluetoothSearching: BluetoothSearching, + Bold: Bold, + Bolt: Bolt, + Bomb: Bomb, + Bone: Bone, + Book: Book, + BookA: BookA, + BookAudio: BookAudio, + BookCheck: BookCheck, + BookCopy: BookCopy, + BookDashed: BookDashed, + BookDown: BookDown, + BookHeadphones: BookHeadphones, + BookHeart: BookHeart, + BookImage: BookImage, + BookKey: BookKey, + BookLock: BookLock, + BookMarked: BookMarked, + BookMinus: BookMinus, + BookOpen: BookOpen, + BookOpenCheck: BookOpenCheck, + BookOpenText: BookOpenText, + BookPlus: BookPlus, + BookText: BookText, + BookType: BookType, + BookUp: BookUp, + BookUp2: BookUp2, + BookUser: BookUser, + BookX: BookX, + Bookmark: Bookmark, + BookmarkCheck: BookmarkCheck, + BookmarkMinus: BookmarkMinus, + BookmarkPlus: BookmarkPlus, + BookmarkX: BookmarkX, + BoomBox: BoomBox, + Bot: Bot, + BotMessageSquare: BotMessageSquare, + BotOff: BotOff, + Box: Box, + Boxes: Boxes, + Braces: Braces, + Brackets: Brackets, + Brain: Brain, + BrainCircuit: BrainCircuit, + BrainCog: BrainCog, + BrickWall: BrickWall, + Briefcase: Briefcase, + BriefcaseBusiness: BriefcaseBusiness, + BriefcaseConveyorBelt: BriefcaseConveyorBelt, + BriefcaseMedical: BriefcaseMedical, + BringToFront: BringToFront, + Brush: Brush, + Bug: Bug, + BugOff: BugOff, + BugPlay: BugPlay, + Building: Building, + Building2: Building2, + Bus: Bus, + BusFront: BusFront, + Cable: Cable, + CableCar: CableCar, + Cake: Cake, + CakeSlice: CakeSlice, + Calculator: Calculator, + Calendar: Calendar, + Calendar1: Calendar1, + CalendarArrowDown: CalendarArrowDown, + CalendarArrowUp: CalendarArrowUp, + CalendarCheck: CalendarCheck, + CalendarCheck2: CalendarCheck2, + CalendarClock: CalendarClock, + CalendarCog: CalendarCog, + CalendarDays: CalendarDays, + CalendarFold: CalendarFold, + CalendarHeart: CalendarHeart, + CalendarMinus: CalendarMinus, + CalendarMinus2: CalendarMinus2, + CalendarOff: CalendarOff, + CalendarPlus: CalendarPlus, + CalendarPlus2: CalendarPlus2, + CalendarRange: CalendarRange, + CalendarSearch: CalendarSearch, + CalendarSync: CalendarSync, + CalendarX: CalendarX, + CalendarX2: CalendarX2, + Camera: Camera, + CameraOff: CameraOff, + Candy: Candy, + CandyCane: CandyCane, + CandyOff: CandyOff, + Cannabis: Cannabis, + Captions: Captions, + CaptionsOff: CaptionsOff, + Car: Car, + CarFront: CarFront, + CarTaxiFront: CarTaxiFront, + Caravan: Caravan, + Carrot: Carrot, + CaseLower: CaseLower, + CaseSensitive: CaseSensitive, + CaseUpper: CaseUpper, + CassetteTape: CassetteTape, + Cast: Cast, + Castle: Castle, + Cat: Cat, + Cctv: Cctv, + ChartArea: ChartArea, + ChartBar: ChartBar, + ChartBarBig: ChartBarBig, + ChartBarDecreasing: ChartBarDecreasing, + ChartBarIncreasing: ChartBarIncreasing, + ChartBarStacked: ChartBarStacked, + ChartCandlestick: ChartCandlestick, + ChartColumn: ChartColumn, + ChartColumnBig: ChartColumnBig, + ChartColumnDecreasing: ChartColumnDecreasing, + ChartColumnIncreasing: ChartColumnIncreasing, + ChartColumnStacked: ChartColumnStacked, + ChartGantt: ChartGantt, + ChartLine: ChartLine, + ChartNetwork: ChartNetwork, + ChartNoAxesColumn: ChartNoAxesColumn, + ChartNoAxesColumnDecreasing: ChartNoAxesColumnDecreasing, + ChartNoAxesColumnIncreasing: ChartNoAxesColumnIncreasing, + ChartNoAxesCombined: ChartNoAxesCombined, + ChartNoAxesGantt: ChartNoAxesGantt, + ChartPie: ChartPie, + ChartScatter: ChartScatter, + ChartSpline: ChartSpline, + Check: Check, + CheckCheck: CheckCheck, + ChefHat: ChefHat, + Cherry: Cherry, + ChevronDown: ChevronDown, + ChevronFirst: ChevronFirst, + ChevronLast: ChevronLast, + ChevronLeft: ChevronLeft, + ChevronRight: ChevronRight, + ChevronUp: ChevronUp, + ChevronsDown: ChevronsDown, + ChevronsDownUp: ChevronsDownUp, + ChevronsLeft: ChevronsLeft, + ChevronsLeftRight: ChevronsLeftRight, + ChevronsLeftRightEllipsis: ChevronsLeftRightEllipsis, + ChevronsRight: ChevronsRight, + ChevronsRightLeft: ChevronsRightLeft, + ChevronsUp: ChevronsUp, + ChevronsUpDown: ChevronsUpDown, + Chrome: Chrome, + Church: Church, + Cigarette: Cigarette, + CigaretteOff: CigaretteOff, + Circle: Circle, + CircleAlert: CircleAlert, + CircleArrowDown: CircleArrowDown, + CircleArrowLeft: CircleArrowLeft, + CircleArrowOutDownLeft: CircleArrowOutDownLeft, + CircleArrowOutDownRight: CircleArrowOutDownRight, + CircleArrowOutUpLeft: CircleArrowOutUpLeft, + CircleArrowOutUpRight: CircleArrowOutUpRight, + CircleArrowRight: CircleArrowRight, + CircleArrowUp: CircleArrowUp, + CircleCheck: CircleCheck, + CircleCheckBig: CircleCheckBig, + CircleChevronDown: CircleChevronDown, + CircleChevronLeft: CircleChevronLeft, + CircleChevronRight: CircleChevronRight, + CircleChevronUp: CircleChevronUp, + CircleDashed: CircleDashed, + CircleDivide: CircleDivide, + CircleDollarSign: CircleDollarSign, + CircleDot: CircleDot, + CircleDotDashed: CircleDotDashed, + CircleEllipsis: CircleEllipsis, + CircleEqual: CircleEqual, + CircleFadingArrowUp: CircleFadingArrowUp, + CircleFadingPlus: CircleFadingPlus, + CircleGauge: CircleGauge, + CircleHelp: CircleHelp, + CircleMinus: CircleMinus, + CircleOff: CircleOff, + CircleParking: CircleParking, + CircleParkingOff: CircleParkingOff, + CirclePause: CirclePause, + CirclePercent: CirclePercent, + CirclePlay: CirclePlay, + CirclePlus: CirclePlus, + CirclePower: CirclePower, + CircleSlash: CircleSlash, + CircleSlash2: CircleSlash2, + CircleSmall: CircleSmall, + CircleStop: CircleStop, + CircleUser: CircleUser, + CircleUserRound: CircleUserRound, + CircleX: CircleX, + CircuitBoard: CircuitBoard, + Citrus: Citrus, + Clapperboard: Clapperboard, + Clipboard: Clipboard, + ClipboardCheck: ClipboardCheck, + ClipboardCopy: ClipboardCopy, + ClipboardList: ClipboardList, + ClipboardMinus: ClipboardMinus, + ClipboardPaste: ClipboardPaste, + ClipboardPen: ClipboardPen, + ClipboardPenLine: ClipboardPenLine, + ClipboardPlus: ClipboardPlus, + ClipboardType: ClipboardType, + ClipboardX: ClipboardX, + Clock: Clock, + Clock1: Clock1, + Clock10: Clock10, + Clock11: Clock11, + Clock12: Clock12, + Clock2: Clock2, + Clock3: Clock3, + Clock4: Clock4, + Clock5: Clock5, + Clock6: Clock6, + Clock7: Clock7, + Clock8: Clock8, + Clock9: Clock9, + ClockAlert: ClockAlert, + ClockArrowDown: ClockArrowDown, + ClockArrowUp: ClockArrowUp, + Cloud: Cloud, + CloudAlert: CloudAlert, + CloudCog: CloudCog, + CloudDownload: CloudDownload, + CloudDrizzle: CloudDrizzle, + CloudFog: CloudFog, + CloudHail: CloudHail, + CloudLightning: CloudLightning, + CloudMoon: CloudMoon, + CloudMoonRain: CloudMoonRain, + CloudOff: CloudOff, + CloudRain: CloudRain, + CloudRainWind: CloudRainWind, + CloudSnow: CloudSnow, + CloudSun: CloudSun, + CloudSunRain: CloudSunRain, + CloudUpload: CloudUpload, + Cloudy: Cloudy, + Clover: Clover, + Club: Club, + Code: Code, + CodeXml: CodeXml, + Codepen: Codepen, + Codesandbox: Codesandbox, + Coffee: Coffee, + Cog: Cog, + Coins: Coins, + Columns2: Columns2, + Columns3: Columns3, + Columns4: Columns4, + Combine: Combine, + Command: Command, + Compass: Compass, + Component: Component, + Computer: Computer, + ConciergeBell: ConciergeBell, + Cone: Cone, + Construction: Construction, + Contact: Contact, + ContactRound: ContactRound, + Container: Container, + Contrast: Contrast, + Cookie: Cookie, + CookingPot: CookingPot, + Copy: Copy, + CopyCheck: CopyCheck, + CopyMinus: CopyMinus, + CopyPlus: CopyPlus, + CopySlash: CopySlash, + CopyX: CopyX, + Copyleft: Copyleft, + Copyright: Copyright, + CornerDownLeft: CornerDownLeft, + CornerDownRight: CornerDownRight, + CornerLeftDown: CornerLeftDown, + CornerLeftUp: CornerLeftUp, + CornerRightDown: CornerRightDown, + CornerRightUp: CornerRightUp, + CornerUpLeft: CornerUpLeft, + CornerUpRight: CornerUpRight, + Cpu: Cpu, + CreativeCommons: CreativeCommons, + CreditCard: CreditCard, + Croissant: Croissant, + Crop: Crop, + Cross: Cross, + Crosshair: Crosshair, + Crown: Crown, + Cuboid: Cuboid, + CupSoda: CupSoda, + Currency: Currency, + Cylinder: Cylinder, + Dam: Dam, + Database: Database, + DatabaseBackup: DatabaseBackup, + DatabaseZap: DatabaseZap, + Delete: Delete, + Dessert: Dessert, + Diameter: Diameter, + Diamond: Diamond, + DiamondMinus: DiamondMinus, + DiamondPercent: DiamondPercent, + DiamondPlus: DiamondPlus, + Dice1: Dice1, + Dice2: Dice2, + Dice3: Dice3, + Dice4: Dice4, + Dice5: Dice5, + Dice6: Dice6, + Dices: Dices, + Diff: Diff, + Disc: Disc, + Disc2: Disc2, + Disc3: Disc3, + DiscAlbum: DiscAlbum, + Divide: Divide, + Dna: Dna, + DnaOff: DnaOff, + Dock: Dock, + Dog: Dog, + DollarSign: DollarSign, + Donut: Donut, + DoorClosed: DoorClosed, + DoorOpen: DoorOpen, + Dot: Dot, + Download: Download, + DraftingCompass: DraftingCompass, + Drama: Drama, + Dribbble: Dribbble, + Drill: Drill, + Droplet: Droplet, + DropletOff: DropletOff, + Droplets: Droplets, + Drum: Drum, + Drumstick: Drumstick, + Dumbbell: Dumbbell, + Ear: Ear, + EarOff: EarOff, + Earth: Earth, + EarthLock: EarthLock, + Eclipse: Eclipse, + Egg: Egg, + EggFried: EggFried, + EggOff: EggOff, + Ellipsis: Ellipsis, + EllipsisVertical: EllipsisVertical, + Equal: Equal, + EqualApproximately: EqualApproximately, + EqualNot: EqualNot, + Eraser: Eraser, + EthernetPort: EthernetPort, + Euro: Euro, + Expand: Expand, + ExternalLink: ExternalLink, + Eye: Eye, + EyeClosed: EyeClosed, + EyeOff: EyeOff, + Facebook: Facebook, + Factory: Factory, + Fan: Fan, + FastForward: FastForward, + Feather: Feather, + Fence: Fence, + FerrisWheel: FerrisWheel, + Figma: Figma, + File: File, + FileArchive: FileArchive, + FileAudio: FileAudio, + FileAudio2: FileAudio2, + FileAxis3d: FileAxis3d, + FileBadge: FileBadge, + FileBadge2: FileBadge2, + FileBox: FileBox, + FileChartColumn: FileChartColumn, + FileChartColumnIncreasing: FileChartColumnIncreasing, + FileChartLine: FileChartLine, + FileChartPie: FileChartPie, + FileCheck: FileCheck, + FileCheck2: FileCheck2, + FileClock: FileClock, + FileCode: FileCode, + FileCode2: FileCode2, + FileCog: FileCog, + FileDiff: FileDiff, + FileDigit: FileDigit, + FileDown: FileDown, + FileHeart: FileHeart, + FileImage: FileImage, + FileInput: FileInput, + FileJson: FileJson, + FileJson2: FileJson2, + FileKey: FileKey, + FileKey2: FileKey2, + FileLock: FileLock, + FileLock2: FileLock2, + FileMinus: FileMinus, + FileMinus2: FileMinus2, + FileMusic: FileMusic, + FileOutput: FileOutput, + FilePen: FilePen, + FilePenLine: FilePenLine, + FilePlus: FilePlus, + FilePlus2: FilePlus2, + FileQuestion: FileQuestion, + FileScan: FileScan, + FileSearch: FileSearch, + FileSearch2: FileSearch2, + FileSliders: FileSliders, + FileSpreadsheet: FileSpreadsheet, + FileStack: FileStack, + FileSymlink: FileSymlink, + FileTerminal: FileTerminal, + FileText: FileText, + FileType: FileType, + FileType2: FileType2, + FileUp: FileUp, + FileUser: FileUser, + FileVideo: FileVideo, + FileVideo2: FileVideo2, + FileVolume: FileVolume, + FileVolume2: FileVolume2, + FileWarning: FileWarning, + FileX: FileX, + FileX2: FileX2, + Files: Files, + Film: Film, + Filter: Filter, + FilterX: FilterX, + Fingerprint: Fingerprint, + FireExtinguisher: FireExtinguisher, + Fish: Fish, + FishOff: FishOff, + FishSymbol: FishSymbol, + Flag: Flag, + FlagOff: FlagOff, + FlagTriangleLeft: FlagTriangleLeft, + FlagTriangleRight: FlagTriangleRight, + Flame: Flame, + FlameKindling: FlameKindling, + Flashlight: Flashlight, + FlashlightOff: FlashlightOff, + FlaskConical: FlaskConical, + FlaskConicalOff: FlaskConicalOff, + FlaskRound: FlaskRound, + FlipHorizontal: FlipHorizontal, + FlipHorizontal2: FlipHorizontal2, + FlipVertical: FlipVertical, + FlipVertical2: FlipVertical2, + Flower: Flower, + Flower2: Flower2, + Focus: Focus, + FoldHorizontal: FoldHorizontal, + FoldVertical: FoldVertical, + Folder: Folder, + FolderArchive: FolderArchive, + FolderCheck: FolderCheck, + FolderClock: FolderClock, + FolderClosed: FolderClosed, + FolderCode: FolderCode, + FolderCog: FolderCog, + FolderDot: FolderDot, + FolderDown: FolderDown, + FolderGit: FolderGit, + FolderGit2: FolderGit2, + FolderHeart: FolderHeart, + FolderInput: FolderInput, + FolderKanban: FolderKanban, + FolderKey: FolderKey, + FolderLock: FolderLock, + FolderMinus: FolderMinus, + FolderOpen: FolderOpen, + FolderOpenDot: FolderOpenDot, + FolderOutput: FolderOutput, + FolderPen: FolderPen, + FolderPlus: FolderPlus, + FolderRoot: FolderRoot, + FolderSearch: FolderSearch, + FolderSearch2: FolderSearch2, + FolderSymlink: FolderSymlink, + FolderSync: FolderSync, + FolderTree: FolderTree, + FolderUp: FolderUp, + FolderX: FolderX, + Folders: Folders, + Footprints: Footprints, + Forklift: Forklift, + Forward: Forward, + Frame: Frame, + Framer: Framer, + Frown: Frown, + Fuel: Fuel, + Fullscreen: Fullscreen, + GalleryHorizontal: GalleryHorizontal, + GalleryHorizontalEnd: GalleryHorizontalEnd, + GalleryThumbnails: GalleryThumbnails, + GalleryVertical: GalleryVertical, + GalleryVerticalEnd: GalleryVerticalEnd, + Gamepad: Gamepad, + Gamepad2: Gamepad2, + Gauge: Gauge, + Gavel: Gavel, + Gem: Gem, + Ghost: Ghost, + Gift: Gift, + GitBranch: GitBranch, + GitBranchPlus: GitBranchPlus, + GitCommitHorizontal: GitCommitHorizontal, + GitCommitVertical: GitCommitVertical, + GitCompare: GitCompare, + GitCompareArrows: GitCompareArrows, + GitFork: GitFork, + GitGraph: GitGraph, + GitMerge: GitMerge, + GitPullRequest: GitPullRequest, + GitPullRequestArrow: GitPullRequestArrow, + GitPullRequestClosed: GitPullRequestClosed, + GitPullRequestCreate: GitPullRequestCreate, + GitPullRequestCreateArrow: GitPullRequestCreateArrow, + GitPullRequestDraft: GitPullRequestDraft, + Github: Github, + Gitlab: Gitlab, + GlassWater: GlassWater, + Glasses: Glasses, + Globe: Globe, + GlobeLock: GlobeLock, + Goal: Goal, + Grab: Grab, + GraduationCap: GraduationCap, + Grape: Grape, + Grid2x2: Grid2x2, + Grid2x2Check: Grid2x2Check, + Grid2x2Plus: Grid2x2Plus, + Grid2x2X: Grid2x2X, + Grid3x3: Grid3x3, + Grip: Grip, + GripHorizontal: GripHorizontal, + GripVertical: GripVertical, + Group: Group, + Guitar: Guitar, + Ham: Ham, + Hammer: Hammer, + Hand: Hand, + HandCoins: HandCoins, + HandHeart: HandHeart, + HandHelping: HandHelping, + HandMetal: HandMetal, + HandPlatter: HandPlatter, + Handshake: Handshake, + HardDrive: HardDrive, + HardDriveDownload: HardDriveDownload, + HardDriveUpload: HardDriveUpload, + HardHat: HardHat, + Hash: Hash, + Haze: Haze, + HdmiPort: HdmiPort, + Heading: Heading, + Heading1: Heading1, + Heading2: Heading2, + Heading3: Heading3, + Heading4: Heading4, + Heading5: Heading5, + Heading6: Heading6, + HeadphoneOff: HeadphoneOff, + Headphones: Headphones, + Headset: Headset, + Heart: Heart, + HeartCrack: HeartCrack, + HeartHandshake: HeartHandshake, + HeartOff: HeartOff, + HeartPulse: HeartPulse, + Heater: Heater, + Hexagon: Hexagon, + Highlighter: Highlighter, + History: History, + Hop: Hop, + HopOff: HopOff, + Hospital: Hospital, + Hotel: Hotel, + Hourglass: Hourglass, + House: House, + HousePlug: HousePlug, + HousePlus: HousePlus, + HouseWifi: HouseWifi, + IceCreamBowl: IceCreamBowl, + IceCreamCone: IceCreamCone, + IdCard: IdCard, + Image: Image, + ImageDown: ImageDown, + ImageMinus: ImageMinus, + ImageOff: ImageOff, + ImagePlay: ImagePlay, + ImagePlus: ImagePlus, + ImageUp: ImageUp, + ImageUpscale: ImageUpscale, + Images: Images, + Import: Import, + Inbox: Inbox, + IndentDecrease: IndentDecrease, + IndentIncrease: IndentIncrease, + IndianRupee: IndianRupee, + Infinity: Infinity, + Info: Info, + InspectionPanel: InspectionPanel, + Instagram: Instagram, + Italic: Italic, + IterationCcw: IterationCcw, + IterationCw: IterationCw, + JapaneseYen: JapaneseYen, + Joystick: Joystick, + Kanban: Kanban, + Key: Key, + KeyRound: KeyRound, + KeySquare: KeySquare, + Keyboard: Keyboard, + KeyboardMusic: KeyboardMusic, + KeyboardOff: KeyboardOff, + Lamp: Lamp, + LampCeiling: LampCeiling, + LampDesk: LampDesk, + LampFloor: LampFloor, + LampWallDown: LampWallDown, + LampWallUp: LampWallUp, + LandPlot: LandPlot, + Landmark: Landmark, + Languages: Languages, + Laptop: Laptop, + LaptopMinimal: LaptopMinimal, + LaptopMinimalCheck: LaptopMinimalCheck, + Lasso: Lasso, + LassoSelect: LassoSelect, + Laugh: Laugh, + Layers: Layers, + Layers2: Layers2, + LayoutDashboard: LayoutDashboard, + LayoutGrid: LayoutGrid, + LayoutList: LayoutList, + LayoutPanelLeft: LayoutPanelLeft, + LayoutPanelTop: LayoutPanelTop, + LayoutTemplate: LayoutTemplate, + Leaf: Leaf, + LeafyGreen: LeafyGreen, + Lectern: Lectern, + LetterText: LetterText, + Library: Library, + LibraryBig: LibraryBig, + LifeBuoy: LifeBuoy, + Ligature: Ligature, + Lightbulb: Lightbulb, + LightbulbOff: LightbulbOff, + Link: Link, + Link2: Link2, + Link2Off: Link2Off, + Linkedin: Linkedin, + List: List, + ListCheck: ListCheck, + ListChecks: ListChecks, + ListCollapse: ListCollapse, + ListEnd: ListEnd, + ListFilter: ListFilter, + ListFilterPlus: ListFilterPlus, + ListMinus: ListMinus, + ListMusic: ListMusic, + ListOrdered: ListOrdered, + ListPlus: ListPlus, + ListRestart: ListRestart, + ListStart: ListStart, + ListTodo: ListTodo, + ListTree: ListTree, + ListVideo: ListVideo, + ListX: ListX, + Loader: Loader, + LoaderCircle: LoaderCircle, + LoaderPinwheel: LoaderPinwheel, + Locate: Locate, + LocateFixed: LocateFixed, + LocateOff: LocateOff, + Lock: Lock, + LockKeyhole: LockKeyhole, + LockKeyholeOpen: LockKeyholeOpen, + LockOpen: LockOpen, + LogIn: LogIn, + LogOut: LogOut, + Logs: Logs, + Lollipop: Lollipop, + Luggage: Luggage, + Magnet: Magnet, + Mail: Mail, + MailCheck: MailCheck, + MailMinus: MailMinus, + MailOpen: MailOpen, + MailPlus: MailPlus, + MailQuestion: MailQuestion, + MailSearch: MailSearch, + MailWarning: MailWarning, + MailX: MailX, + Mailbox: Mailbox, + Mails: Mails, + Map: Map, + MapPin: MapPin, + MapPinCheck: MapPinCheck, + MapPinCheckInside: MapPinCheckInside, + MapPinHouse: MapPinHouse, + MapPinMinus: MapPinMinus, + MapPinMinusInside: MapPinMinusInside, + MapPinOff: MapPinOff, + MapPinPlus: MapPinPlus, + MapPinPlusInside: MapPinPlusInside, + MapPinX: MapPinX, + MapPinXInside: MapPinXInside, + MapPinned: MapPinned, + MapPlus: MapPlus, + Mars: Mars, + MarsStroke: MarsStroke, + Martini: Martini, + Maximize: Maximize, + Maximize2: Maximize2, + Medal: Medal, + Megaphone: Megaphone, + MegaphoneOff: MegaphoneOff, + Meh: Meh, + MemoryStick: MemoryStick, + Menu: Menu, + Merge: Merge, + MessageCircle: MessageCircle, + MessageCircleCode: MessageCircleCode, + MessageCircleDashed: MessageCircleDashed, + MessageCircleHeart: MessageCircleHeart, + MessageCircleMore: MessageCircleMore, + MessageCircleOff: MessageCircleOff, + MessageCirclePlus: MessageCirclePlus, + MessageCircleQuestion: MessageCircleQuestion, + MessageCircleReply: MessageCircleReply, + MessageCircleWarning: MessageCircleWarning, + MessageCircleX: MessageCircleX, + MessageSquare: MessageSquare, + MessageSquareCode: MessageSquareCode, + MessageSquareDashed: MessageSquareDashed, + MessageSquareDiff: MessageSquareDiff, + MessageSquareDot: MessageSquareDot, + MessageSquareHeart: MessageSquareHeart, + MessageSquareLock: MessageSquareLock, + MessageSquareMore: MessageSquareMore, + MessageSquareOff: MessageSquareOff, + MessageSquarePlus: MessageSquarePlus, + MessageSquareQuote: MessageSquareQuote, + MessageSquareReply: MessageSquareReply, + MessageSquareShare: MessageSquareShare, + MessageSquareText: MessageSquareText, + MessageSquareWarning: MessageSquareWarning, + MessageSquareX: MessageSquareX, + MessagesSquare: MessagesSquare, + Mic: Mic, + MicOff: MicOff, + MicVocal: MicVocal, + Microchip: Microchip, + Microscope: Microscope, + Microwave: Microwave, + Milestone: Milestone, + Milk: Milk, + MilkOff: MilkOff, + Minimize: Minimize, + Minimize2: Minimize2, + Minus: Minus, + Monitor: Monitor, + MonitorCheck: MonitorCheck, + MonitorCog: MonitorCog, + MonitorDot: MonitorDot, + MonitorDown: MonitorDown, + MonitorOff: MonitorOff, + MonitorPause: MonitorPause, + MonitorPlay: MonitorPlay, + MonitorSmartphone: MonitorSmartphone, + MonitorSpeaker: MonitorSpeaker, + MonitorStop: MonitorStop, + MonitorUp: MonitorUp, + MonitorX: MonitorX, + Moon: Moon, + MoonStar: MoonStar, + Mountain: Mountain, + MountainSnow: MountainSnow, + Mouse: Mouse, + MouseOff: MouseOff, + MousePointer: MousePointer, + MousePointer2: MousePointer2, + MousePointerBan: MousePointerBan, + MousePointerClick: MousePointerClick, + Move: Move, + Move3d: Move3d, + MoveDiagonal: MoveDiagonal, + MoveDiagonal2: MoveDiagonal2, + MoveDown: MoveDown, + MoveDownLeft: MoveDownLeft, + MoveDownRight: MoveDownRight, + MoveHorizontal: MoveHorizontal, + MoveLeft: MoveLeft, + MoveRight: MoveRight, + MoveUp: MoveUp, + MoveUpLeft: MoveUpLeft, + MoveUpRight: MoveUpRight, + MoveVertical: MoveVertical, + Music: Music, + Music2: Music2, + Music3: Music3, + Music4: Music4, + Navigation: Navigation, + Navigation2: Navigation2, + Navigation2Off: Navigation2Off, + NavigationOff: NavigationOff, + Network: Network, + Newspaper: Newspaper, + Nfc: Nfc, + NonBinary: NonBinary, + Notebook: Notebook, + NotebookPen: NotebookPen, + NotebookTabs: NotebookTabs, + NotebookText: NotebookText, + NotepadText: NotepadText, + NotepadTextDashed: NotepadTextDashed, + Nut: Nut, + NutOff: NutOff, + Octagon: Octagon, + OctagonAlert: OctagonAlert, + OctagonMinus: OctagonMinus, + OctagonPause: OctagonPause, + OctagonX: OctagonX, + Omega: Omega, + Option: Option, + Orbit: Orbit, + Origami: Origami, + Package: Package, + Package2: Package2, + PackageCheck: PackageCheck, + PackageMinus: PackageMinus, + PackageOpen: PackageOpen, + PackagePlus: PackagePlus, + PackageSearch: PackageSearch, + PackageX: PackageX, + PaintBucket: PaintBucket, + PaintRoller: PaintRoller, + Paintbrush: Paintbrush, + PaintbrushVertical: PaintbrushVertical, + Palette: Palette, + PanelBottom: PanelBottom, + PanelBottomClose: PanelBottomClose, + PanelBottomDashed: PanelBottomDashed, + PanelBottomOpen: PanelBottomOpen, + PanelLeft: PanelLeft, + PanelLeftClose: PanelLeftClose, + PanelLeftDashed: PanelLeftDashed, + PanelLeftOpen: PanelLeftOpen, + PanelRight: PanelRight, + PanelRightClose: PanelRightClose, + PanelRightDashed: PanelRightDashed, + PanelRightOpen: PanelRightOpen, + PanelTop: PanelTop, + PanelTopClose: PanelTopClose, + PanelTopDashed: PanelTopDashed, + PanelTopOpen: PanelTopOpen, + PanelsLeftBottom: PanelsLeftBottom, + PanelsRightBottom: PanelsRightBottom, + PanelsTopLeft: PanelsTopLeft, + Paperclip: Paperclip, + Parentheses: Parentheses, + ParkingMeter: ParkingMeter, + PartyPopper: PartyPopper, + Pause: Pause, + PawPrint: PawPrint, + PcCase: PcCase, + Pen: Pen, + PenLine: PenLine, + PenOff: PenOff, + PenTool: PenTool, + Pencil: Pencil, + PencilLine: PencilLine, + PencilOff: PencilOff, + PencilRuler: PencilRuler, + Pentagon: Pentagon, + Percent: Percent, + PersonStanding: PersonStanding, + PhilippinePeso: PhilippinePeso, + Phone: Phone, + PhoneCall: PhoneCall, + PhoneForwarded: PhoneForwarded, + PhoneIncoming: PhoneIncoming, + PhoneMissed: PhoneMissed, + PhoneOff: PhoneOff, + PhoneOutgoing: PhoneOutgoing, + Pi: Pi, + Piano: Piano, + Pickaxe: Pickaxe, + PictureInPicture: PictureInPicture, + PictureInPicture2: PictureInPicture2, + PiggyBank: PiggyBank, + Pilcrow: Pilcrow, + PilcrowLeft: PilcrowLeft, + PilcrowRight: PilcrowRight, + Pill: Pill, + PillBottle: PillBottle, + Pin: Pin, + PinOff: PinOff, + Pipette: Pipette, + Pizza: Pizza, + Plane: Plane, + PlaneLanding: PlaneLanding, + PlaneTakeoff: PlaneTakeoff, + Play: Play, + Plug: Plug, + Plug2: Plug2, + PlugZap: PlugZap, + Plus: Plus, + Pocket: Pocket, + PocketKnife: PocketKnife, + Podcast: Podcast, + Pointer: Pointer, + PointerOff: PointerOff, + Popcorn: Popcorn, + Popsicle: Popsicle, + PoundSterling: PoundSterling, + Power: Power, + PowerOff: PowerOff, + Presentation: Presentation, + Printer: Printer, + PrinterCheck: PrinterCheck, + Projector: Projector, + Proportions: Proportions, + Puzzle: Puzzle, + Pyramid: Pyramid, + QrCode: QrCode, + Quote: Quote, + Rabbit: Rabbit, + Radar: Radar, + Radiation: Radiation, + Radical: Radical, + Radio: Radio, + RadioReceiver: RadioReceiver, + RadioTower: RadioTower, + Radius: Radius, + RailSymbol: RailSymbol, + Rainbow: Rainbow, + Rat: Rat, + Ratio: Ratio, + Receipt: Receipt, + ReceiptCent: ReceiptCent, + ReceiptEuro: ReceiptEuro, + ReceiptIndianRupee: ReceiptIndianRupee, + ReceiptJapaneseYen: ReceiptJapaneseYen, + ReceiptPoundSterling: ReceiptPoundSterling, + ReceiptRussianRuble: ReceiptRussianRuble, + ReceiptSwissFranc: ReceiptSwissFranc, + ReceiptText: ReceiptText, + RectangleEllipsis: RectangleEllipsis, + RectangleHorizontal: RectangleHorizontal, + RectangleVertical: RectangleVertical, + Recycle: Recycle, + Redo: Redo, + Redo2: Redo2, + RedoDot: RedoDot, + RefreshCcw: RefreshCcw, + RefreshCcwDot: RefreshCcwDot, + RefreshCw: RefreshCw, + RefreshCwOff: RefreshCwOff, + Refrigerator: Refrigerator, + Regex: Regex, + RemoveFormatting: RemoveFormatting, + Repeat: Repeat, + Repeat1: Repeat1, + Repeat2: Repeat2, + Replace: Replace, + ReplaceAll: ReplaceAll, + Reply: Reply, + ReplyAll: ReplyAll, + Rewind: Rewind, + Ribbon: Ribbon, + Rocket: Rocket, + RockingChair: RockingChair, + RollerCoaster: RollerCoaster, + Rotate3d: Rotate3d, + RotateCcw: RotateCcw, + RotateCcwSquare: RotateCcwSquare, + RotateCw: RotateCw, + RotateCwSquare: RotateCwSquare, + Route: Route, + RouteOff: RouteOff, + Router: Router, + Rows2: Rows2, + Rows3: Rows3, + Rows4: Rows4, + Rss: Rss, + Ruler: Ruler, + RussianRuble: RussianRuble, + Sailboat: Sailboat, + Salad: Salad, + Sandwich: Sandwich, + Satellite: Satellite, + SatelliteDish: SatelliteDish, + Save: Save, + SaveAll: SaveAll, + SaveOff: SaveOff, + Scale: Scale, + Scale3d: Scale3d, + Scaling: Scaling, + Scan: Scan, + ScanBarcode: ScanBarcode, + ScanEye: ScanEye, + ScanFace: ScanFace, + ScanHeart: ScanHeart, + ScanLine: ScanLine, + ScanQrCode: ScanQrCode, + ScanSearch: ScanSearch, + ScanText: ScanText, + School: School, + Scissors: Scissors, + ScissorsLineDashed: ScissorsLineDashed, + ScreenShare: ScreenShare, + ScreenShareOff: ScreenShareOff, + Scroll: Scroll, + ScrollText: ScrollText, + Search: Search, + SearchCheck: SearchCheck, + SearchCode: SearchCode, + SearchSlash: SearchSlash, + SearchX: SearchX, + Section: Section, + Send: Send, + SendHorizontal: SendHorizontal, + SendToBack: SendToBack, + SeparatorHorizontal: SeparatorHorizontal, + SeparatorVertical: SeparatorVertical, + Server: Server, + ServerCog: ServerCog, + ServerCrash: ServerCrash, + ServerOff: ServerOff, + Settings: Settings, + Settings2: Settings2, + Shapes: Shapes, + Share: Share, + Share2: Share2, + Sheet: Sheet, + Shell: Shell, + Shield: Shield, + ShieldAlert: ShieldAlert, + ShieldBan: ShieldBan, + ShieldCheck: ShieldCheck, + ShieldEllipsis: ShieldEllipsis, + ShieldHalf: ShieldHalf, + ShieldMinus: ShieldMinus, + ShieldOff: ShieldOff, + ShieldPlus: ShieldPlus, + ShieldQuestion: ShieldQuestion, + ShieldX: ShieldX, + Ship: Ship, + ShipWheel: ShipWheel, + Shirt: Shirt, + ShoppingBag: ShoppingBag, + ShoppingBasket: ShoppingBasket, + ShoppingCart: ShoppingCart, + Shovel: Shovel, + ShowerHead: ShowerHead, + Shrink: Shrink, + Shrub: Shrub, + Shuffle: Shuffle, + Sigma: Sigma, + Signal: Signal, + SignalHigh: SignalHigh, + SignalLow: SignalLow, + SignalMedium: SignalMedium, + SignalZero: SignalZero, + Signature: Signature, + Signpost: Signpost, + SignpostBig: SignpostBig, + Siren: Siren, + SkipBack: SkipBack, + SkipForward: SkipForward, + Skull: Skull, + Slack: Slack, + Slash: Slash, + Slice: Slice, + SlidersHorizontal: SlidersHorizontal, + SlidersVertical: SlidersVertical, + Smartphone: Smartphone, + SmartphoneCharging: SmartphoneCharging, + SmartphoneNfc: SmartphoneNfc, + Smile: Smile, + SmilePlus: SmilePlus, + Snail: Snail, + Snowflake: Snowflake, + Sofa: Sofa, + Soup: Soup, + Space: Space, + Spade: Spade, + Sparkle: Sparkle, + Sparkles: Sparkles, + Speaker: Speaker, + Speech: Speech, + SpellCheck: SpellCheck, + SpellCheck2: SpellCheck2, + Spline: Spline, + Split: Split, + SprayCan: SprayCan, + Sprout: Sprout, + Square: Square, + SquareActivity: SquareActivity, + SquareArrowDown: SquareArrowDown, + SquareArrowDownLeft: SquareArrowDownLeft, + SquareArrowDownRight: SquareArrowDownRight, + SquareArrowLeft: SquareArrowLeft, + SquareArrowOutDownLeft: SquareArrowOutDownLeft, + SquareArrowOutDownRight: SquareArrowOutDownRight, + SquareArrowOutUpLeft: SquareArrowOutUpLeft, + SquareArrowOutUpRight: SquareArrowOutUpRight, + SquareArrowRight: SquareArrowRight, + SquareArrowUp: SquareArrowUp, + SquareArrowUpLeft: SquareArrowUpLeft, + SquareArrowUpRight: SquareArrowUpRight, + SquareAsterisk: SquareAsterisk, + SquareBottomDashedScissors: SquareBottomDashedScissors, + SquareChartGantt: SquareChartGantt, + SquareCheck: SquareCheck, + SquareCheckBig: SquareCheckBig, + SquareChevronDown: SquareChevronDown, + SquareChevronLeft: SquareChevronLeft, + SquareChevronRight: SquareChevronRight, + SquareChevronUp: SquareChevronUp, + SquareCode: SquareCode, + SquareDashed: SquareDashed, + SquareDashedBottom: SquareDashedBottom, + SquareDashedBottomCode: SquareDashedBottomCode, + SquareDashedKanban: SquareDashedKanban, + SquareDashedMousePointer: SquareDashedMousePointer, + SquareDivide: SquareDivide, + SquareDot: SquareDot, + SquareEqual: SquareEqual, + SquareFunction: SquareFunction, + SquareKanban: SquareKanban, + SquareLibrary: SquareLibrary, + SquareM: SquareM, + SquareMenu: SquareMenu, + SquareMinus: SquareMinus, + SquareMousePointer: SquareMousePointer, + SquareParking: SquareParking, + SquareParkingOff: SquareParkingOff, + SquarePen: SquarePen, + SquarePercent: SquarePercent, + SquarePi: SquarePi, + SquarePilcrow: SquarePilcrow, + SquarePlay: SquarePlay, + SquarePlus: SquarePlus, + SquarePower: SquarePower, + SquareRadical: SquareRadical, + SquareScissors: SquareScissors, + SquareSigma: SquareSigma, + SquareSlash: SquareSlash, + SquareSplitHorizontal: SquareSplitHorizontal, + SquareSplitVertical: SquareSplitVertical, + SquareSquare: SquareSquare, + SquareStack: SquareStack, + SquareTerminal: SquareTerminal, + SquareUser: SquareUser, + SquareUserRound: SquareUserRound, + SquareX: SquareX, + Squircle: Squircle, + Squirrel: Squirrel, + Stamp: Stamp, + Star: Star, + StarHalf: StarHalf, + StarOff: StarOff, + StepBack: StepBack, + StepForward: StepForward, + Stethoscope: Stethoscope, + Sticker: Sticker, + StickyNote: StickyNote, + Store: Store, + StretchHorizontal: StretchHorizontal, + StretchVertical: StretchVertical, + Strikethrough: Strikethrough, + Subscript: Subscript, + Sun: Sun, + SunDim: SunDim, + SunMedium: SunMedium, + SunMoon: SunMoon, + SunSnow: SunSnow, + Sunrise: Sunrise, + Sunset: Sunset, + Superscript: Superscript, + SwatchBook: SwatchBook, + SwissFranc: SwissFranc, + SwitchCamera: SwitchCamera, + Sword: Sword, + Swords: Swords, + Syringe: Syringe, + Table: Table, + Table2: Table2, + TableCellsMerge: TableCellsMerge, + TableCellsSplit: TableCellsSplit, + TableColumnsSplit: TableColumnsSplit, + TableOfContents: TableOfContents, + TableProperties: TableProperties, + TableRowsSplit: TableRowsSplit, + Tablet: Tablet, + TabletSmartphone: TabletSmartphone, + Tablets: Tablets, + Tag: Tag, + Tags: Tags, + Tally1: Tally1, + Tally2: Tally2, + Tally3: Tally3, + Tally4: Tally4, + Tally5: Tally5, + Tangent: Tangent, + Target: Target, + Telescope: Telescope, + Tent: Tent, + TentTree: TentTree, + Terminal: Terminal, + TestTube: TestTube, + TestTubeDiagonal: TestTubeDiagonal, + TestTubes: TestTubes, + Text: Text, + TextCursor: TextCursor, + TextCursorInput: TextCursorInput, + TextQuote: TextQuote, + TextSearch: TextSearch, + TextSelect: TextSelect, + Theater: Theater, + Thermometer: Thermometer, + ThermometerSnowflake: ThermometerSnowflake, + ThermometerSun: ThermometerSun, + ThumbsDown: ThumbsDown, + ThumbsUp: ThumbsUp, + Ticket: Ticket, + TicketCheck: TicketCheck, + TicketMinus: TicketMinus, + TicketPercent: TicketPercent, + TicketPlus: TicketPlus, + TicketSlash: TicketSlash, + TicketX: TicketX, + Tickets: Tickets, + TicketsPlane: TicketsPlane, + Timer: Timer, + TimerOff: TimerOff, + TimerReset: TimerReset, + ToggleLeft: ToggleLeft, + ToggleRight: ToggleRight, + Toilet: Toilet, + Tornado: Tornado, + Torus: Torus, + Touchpad: Touchpad, + TouchpadOff: TouchpadOff, + TowerControl: TowerControl, + ToyBrick: ToyBrick, + Tractor: Tractor, + TrafficCone: TrafficCone, + TrainFront: TrainFront, + TrainFrontTunnel: TrainFrontTunnel, + TrainTrack: TrainTrack, + TramFront: TramFront, + Transgender: Transgender, + Trash: Trash, + Trash2: Trash2, + TreeDeciduous: TreeDeciduous, + TreePalm: TreePalm, + TreePine: TreePine, + Trees: Trees, + Trello: Trello, + TrendingDown: TrendingDown, + TrendingUp: TrendingUp, + TrendingUpDown: TrendingUpDown, + Triangle: Triangle, + TriangleAlert: TriangleAlert, + TriangleDashed: TriangleDashed, + TriangleRight: TriangleRight, + Trophy: Trophy, + Truck: Truck, + Turtle: Turtle, + Tv: Tv, + TvMinimal: TvMinimal, + TvMinimalPlay: TvMinimalPlay, + Twitch: Twitch, + Twitter: Twitter, + Type: Type, + TypeOutline: TypeOutline, + Umbrella: Umbrella, + UmbrellaOff: UmbrellaOff, + Underline: Underline, + Undo: Undo, + Undo2: Undo2, + UndoDot: UndoDot, + UnfoldHorizontal: UnfoldHorizontal, + UnfoldVertical: UnfoldVertical, + Ungroup: Ungroup, + University: University, + Unlink: Unlink, + Unlink2: Unlink2, + Unplug: Unplug, + Upload: Upload, + Usb: Usb, + User: User, + UserCheck: UserCheck, + UserCog: UserCog, + UserMinus: UserMinus, + UserPen: UserPen, + UserPlus: UserPlus, + UserRound: UserRound, + UserRoundCheck: UserRoundCheck, + UserRoundCog: UserRoundCog, + UserRoundMinus: UserRoundMinus, + UserRoundPen: UserRoundPen, + UserRoundPlus: UserRoundPlus, + UserRoundSearch: UserRoundSearch, + UserRoundX: UserRoundX, + UserSearch: UserSearch, + UserX: UserX, + Users: Users, + UsersRound: UsersRound, + Utensils: Utensils, + UtensilsCrossed: UtensilsCrossed, + UtilityPole: UtilityPole, + Variable: Variable, + Vault: Vault, + Vegan: Vegan, + VenetianMask: VenetianMask, + Venus: Venus, + VenusAndMars: VenusAndMars, + Vibrate: Vibrate, + VibrateOff: VibrateOff, + Video: Video, + VideoOff: VideoOff, + Videotape: Videotape, + View: View, + Voicemail: Voicemail, + Volleyball: Volleyball, + Volume: Volume, + Volume1: Volume1, + Volume2: Volume2, + VolumeOff: VolumeOff, + VolumeX: VolumeX, + Vote: Vote, + Wallet: Wallet, + WalletCards: WalletCards, + WalletMinimal: WalletMinimal, + Wallpaper: Wallpaper, + Wand: Wand, + WandSparkles: WandSparkles, + Warehouse: Warehouse, + WashingMachine: WashingMachine, + Watch: Watch, + Waves: Waves, + WavesLadder: WavesLadder, + Waypoints: Waypoints, + Webcam: Webcam, + Webhook: Webhook, + WebhookOff: WebhookOff, + Weight: Weight, + Wheat: Wheat, + WheatOff: WheatOff, + WholeWord: WholeWord, + Wifi: Wifi, + WifiHigh: WifiHigh, + WifiLow: WifiLow, + WifiOff: WifiOff, + WifiZero: WifiZero, + Wind: Wind, + WindArrowDown: WindArrowDown, + Wine: Wine, + WineOff: WineOff, + Workflow: Workflow, + Worm: Worm, + WrapText: WrapText, + Wrench: Wrench, + X: X, + Youtube: Youtube, + Zap: Zap, + ZapOff: ZapOff, + ZoomIn: ZoomIn, + ZoomOut: ZoomOut +}); + +exports.AArrowDown = AArrowDown; +exports.AArrowDownIcon = AArrowDown; +exports.AArrowUp = AArrowUp; +exports.AArrowUpIcon = AArrowUp; +exports.ALargeSmall = ALargeSmall; +exports.ALargeSmallIcon = ALargeSmall; +exports.Accessibility = Accessibility; +exports.AccessibilityIcon = Accessibility; +exports.Activity = Activity; +exports.ActivityIcon = Activity; +exports.ActivitySquare = SquareActivity; +exports.ActivitySquareIcon = SquareActivity; +exports.AirVent = AirVent; +exports.AirVentIcon = AirVent; +exports.Airplay = Airplay; +exports.AirplayIcon = Airplay; +exports.AlarmCheck = AlarmClockCheck; +exports.AlarmCheckIcon = AlarmClockCheck; +exports.AlarmClock = AlarmClock; +exports.AlarmClockCheck = AlarmClockCheck; +exports.AlarmClockCheckIcon = AlarmClockCheck; +exports.AlarmClockIcon = AlarmClock; +exports.AlarmClockMinus = AlarmClockMinus; +exports.AlarmClockMinusIcon = AlarmClockMinus; +exports.AlarmClockOff = AlarmClockOff; +exports.AlarmClockOffIcon = AlarmClockOff; +exports.AlarmClockPlus = AlarmClockPlus; +exports.AlarmClockPlusIcon = AlarmClockPlus; +exports.AlarmMinus = AlarmClockMinus; +exports.AlarmMinusIcon = AlarmClockMinus; +exports.AlarmPlus = AlarmClockPlus; +exports.AlarmPlusIcon = AlarmClockPlus; +exports.AlarmSmoke = AlarmSmoke; +exports.AlarmSmokeIcon = AlarmSmoke; +exports.Album = Album; +exports.AlbumIcon = Album; +exports.AlertCircle = CircleAlert; +exports.AlertCircleIcon = CircleAlert; +exports.AlertOctagon = OctagonAlert; +exports.AlertOctagonIcon = OctagonAlert; +exports.AlertTriangle = TriangleAlert; +exports.AlertTriangleIcon = TriangleAlert; +exports.AlignCenter = AlignCenter; +exports.AlignCenterHorizontal = AlignCenterHorizontal; +exports.AlignCenterHorizontalIcon = AlignCenterHorizontal; +exports.AlignCenterIcon = AlignCenter; +exports.AlignCenterVertical = AlignCenterVertical; +exports.AlignCenterVerticalIcon = AlignCenterVertical; +exports.AlignEndHorizontal = AlignEndHorizontal; +exports.AlignEndHorizontalIcon = AlignEndHorizontal; +exports.AlignEndVertical = AlignEndVertical; +exports.AlignEndVerticalIcon = AlignEndVertical; +exports.AlignHorizontalDistributeCenter = AlignHorizontalDistributeCenter; +exports.AlignHorizontalDistributeCenterIcon = AlignHorizontalDistributeCenter; +exports.AlignHorizontalDistributeEnd = AlignHorizontalDistributeEnd; +exports.AlignHorizontalDistributeEndIcon = AlignHorizontalDistributeEnd; +exports.AlignHorizontalDistributeStart = AlignHorizontalDistributeStart; +exports.AlignHorizontalDistributeStartIcon = AlignHorizontalDistributeStart; +exports.AlignHorizontalJustifyCenter = AlignHorizontalJustifyCenter; +exports.AlignHorizontalJustifyCenterIcon = AlignHorizontalJustifyCenter; +exports.AlignHorizontalJustifyEnd = AlignHorizontalJustifyEnd; +exports.AlignHorizontalJustifyEndIcon = AlignHorizontalJustifyEnd; +exports.AlignHorizontalJustifyStart = AlignHorizontalJustifyStart; +exports.AlignHorizontalJustifyStartIcon = AlignHorizontalJustifyStart; +exports.AlignHorizontalSpaceAround = AlignHorizontalSpaceAround; +exports.AlignHorizontalSpaceAroundIcon = AlignHorizontalSpaceAround; +exports.AlignHorizontalSpaceBetween = AlignHorizontalSpaceBetween; +exports.AlignHorizontalSpaceBetweenIcon = AlignHorizontalSpaceBetween; +exports.AlignJustify = AlignJustify; +exports.AlignJustifyIcon = AlignJustify; +exports.AlignLeft = AlignLeft; +exports.AlignLeftIcon = AlignLeft; +exports.AlignRight = AlignRight; +exports.AlignRightIcon = AlignRight; +exports.AlignStartHorizontal = AlignStartHorizontal; +exports.AlignStartHorizontalIcon = AlignStartHorizontal; +exports.AlignStartVertical = AlignStartVertical; +exports.AlignStartVerticalIcon = AlignStartVertical; +exports.AlignVerticalDistributeCenter = AlignVerticalDistributeCenter; +exports.AlignVerticalDistributeCenterIcon = AlignVerticalDistributeCenter; +exports.AlignVerticalDistributeEnd = AlignVerticalDistributeEnd; +exports.AlignVerticalDistributeEndIcon = AlignVerticalDistributeEnd; +exports.AlignVerticalDistributeStart = AlignVerticalDistributeStart; +exports.AlignVerticalDistributeStartIcon = AlignVerticalDistributeStart; +exports.AlignVerticalJustifyCenter = AlignVerticalJustifyCenter; +exports.AlignVerticalJustifyCenterIcon = AlignVerticalJustifyCenter; +exports.AlignVerticalJustifyEnd = AlignVerticalJustifyEnd; +exports.AlignVerticalJustifyEndIcon = AlignVerticalJustifyEnd; +exports.AlignVerticalJustifyStart = AlignVerticalJustifyStart; +exports.AlignVerticalJustifyStartIcon = AlignVerticalJustifyStart; +exports.AlignVerticalSpaceAround = AlignVerticalSpaceAround; +exports.AlignVerticalSpaceAroundIcon = AlignVerticalSpaceAround; +exports.AlignVerticalSpaceBetween = AlignVerticalSpaceBetween; +exports.AlignVerticalSpaceBetweenIcon = AlignVerticalSpaceBetween; +exports.Ambulance = Ambulance; +exports.AmbulanceIcon = Ambulance; +exports.Ampersand = Ampersand; +exports.AmpersandIcon = Ampersand; +exports.Ampersands = Ampersands; +exports.AmpersandsIcon = Ampersands; +exports.Amphora = Amphora; +exports.AmphoraIcon = Amphora; +exports.Anchor = Anchor; +exports.AnchorIcon = Anchor; +exports.Angry = Angry; +exports.AngryIcon = Angry; +exports.Annoyed = Annoyed; +exports.AnnoyedIcon = Annoyed; +exports.Antenna = Antenna; +exports.AntennaIcon = Antenna; +exports.Anvil = Anvil; +exports.AnvilIcon = Anvil; +exports.Aperture = Aperture; +exports.ApertureIcon = Aperture; +exports.AppWindow = AppWindow; +exports.AppWindowIcon = AppWindow; +exports.AppWindowMac = AppWindowMac; +exports.AppWindowMacIcon = AppWindowMac; +exports.Apple = Apple; +exports.AppleIcon = Apple; +exports.Archive = Archive; +exports.ArchiveIcon = Archive; +exports.ArchiveRestore = ArchiveRestore; +exports.ArchiveRestoreIcon = ArchiveRestore; +exports.ArchiveX = ArchiveX; +exports.ArchiveXIcon = ArchiveX; +exports.AreaChart = ChartArea; +exports.AreaChartIcon = ChartArea; +exports.Armchair = Armchair; +exports.ArmchairIcon = Armchair; +exports.ArrowBigDown = ArrowBigDown; +exports.ArrowBigDownDash = ArrowBigDownDash; +exports.ArrowBigDownDashIcon = ArrowBigDownDash; +exports.ArrowBigDownIcon = ArrowBigDown; +exports.ArrowBigLeft = ArrowBigLeft; +exports.ArrowBigLeftDash = ArrowBigLeftDash; +exports.ArrowBigLeftDashIcon = ArrowBigLeftDash; +exports.ArrowBigLeftIcon = ArrowBigLeft; +exports.ArrowBigRight = ArrowBigRight; +exports.ArrowBigRightDash = ArrowBigRightDash; +exports.ArrowBigRightDashIcon = ArrowBigRightDash; +exports.ArrowBigRightIcon = ArrowBigRight; +exports.ArrowBigUp = ArrowBigUp; +exports.ArrowBigUpDash = ArrowBigUpDash; +exports.ArrowBigUpDashIcon = ArrowBigUpDash; +exports.ArrowBigUpIcon = ArrowBigUp; +exports.ArrowDown = ArrowDown; +exports.ArrowDown01 = ArrowDown01; +exports.ArrowDown01Icon = ArrowDown01; +exports.ArrowDown10 = ArrowDown10; +exports.ArrowDown10Icon = ArrowDown10; +exports.ArrowDownAZ = ArrowDownAZ; +exports.ArrowDownAZIcon = ArrowDownAZ; +exports.ArrowDownAz = ArrowDownAZ; +exports.ArrowDownAzIcon = ArrowDownAZ; +exports.ArrowDownCircle = CircleArrowDown; +exports.ArrowDownCircleIcon = CircleArrowDown; +exports.ArrowDownFromLine = ArrowDownFromLine; +exports.ArrowDownFromLineIcon = ArrowDownFromLine; +exports.ArrowDownIcon = ArrowDown; +exports.ArrowDownLeft = ArrowDownLeft; +exports.ArrowDownLeftFromCircle = CircleArrowOutDownLeft; +exports.ArrowDownLeftFromCircleIcon = CircleArrowOutDownLeft; +exports.ArrowDownLeftFromSquare = SquareArrowOutDownLeft; +exports.ArrowDownLeftFromSquareIcon = SquareArrowOutDownLeft; +exports.ArrowDownLeftIcon = ArrowDownLeft; +exports.ArrowDownLeftSquare = SquareArrowDownLeft; +exports.ArrowDownLeftSquareIcon = SquareArrowDownLeft; +exports.ArrowDownNarrowWide = ArrowDownNarrowWide; +exports.ArrowDownNarrowWideIcon = ArrowDownNarrowWide; +exports.ArrowDownRight = ArrowDownRight; +exports.ArrowDownRightFromCircle = CircleArrowOutDownRight; +exports.ArrowDownRightFromCircleIcon = CircleArrowOutDownRight; +exports.ArrowDownRightFromSquare = SquareArrowOutDownRight; +exports.ArrowDownRightFromSquareIcon = SquareArrowOutDownRight; +exports.ArrowDownRightIcon = ArrowDownRight; +exports.ArrowDownRightSquare = SquareArrowDownRight; +exports.ArrowDownRightSquareIcon = SquareArrowDownRight; +exports.ArrowDownSquare = SquareArrowDown; +exports.ArrowDownSquareIcon = SquareArrowDown; +exports.ArrowDownToDot = ArrowDownToDot; +exports.ArrowDownToDotIcon = ArrowDownToDot; +exports.ArrowDownToLine = ArrowDownToLine; +exports.ArrowDownToLineIcon = ArrowDownToLine; +exports.ArrowDownUp = ArrowDownUp; +exports.ArrowDownUpIcon = ArrowDownUp; +exports.ArrowDownWideNarrow = ArrowDownWideNarrow; +exports.ArrowDownWideNarrowIcon = ArrowDownWideNarrow; +exports.ArrowDownZA = ArrowDownZA; +exports.ArrowDownZAIcon = ArrowDownZA; +exports.ArrowDownZa = ArrowDownZA; +exports.ArrowDownZaIcon = ArrowDownZA; +exports.ArrowLeft = ArrowLeft; +exports.ArrowLeftCircle = CircleArrowLeft; +exports.ArrowLeftCircleIcon = CircleArrowLeft; +exports.ArrowLeftFromLine = ArrowLeftFromLine; +exports.ArrowLeftFromLineIcon = ArrowLeftFromLine; +exports.ArrowLeftIcon = ArrowLeft; +exports.ArrowLeftRight = ArrowLeftRight; +exports.ArrowLeftRightIcon = ArrowLeftRight; +exports.ArrowLeftSquare = SquareArrowLeft; +exports.ArrowLeftSquareIcon = SquareArrowLeft; +exports.ArrowLeftToLine = ArrowLeftToLine; +exports.ArrowLeftToLineIcon = ArrowLeftToLine; +exports.ArrowRight = ArrowRight; +exports.ArrowRightCircle = CircleArrowRight; +exports.ArrowRightCircleIcon = CircleArrowRight; +exports.ArrowRightFromLine = ArrowRightFromLine; +exports.ArrowRightFromLineIcon = ArrowRightFromLine; +exports.ArrowRightIcon = ArrowRight; +exports.ArrowRightLeft = ArrowRightLeft; +exports.ArrowRightLeftIcon = ArrowRightLeft; +exports.ArrowRightSquare = SquareArrowRight; +exports.ArrowRightSquareIcon = SquareArrowRight; +exports.ArrowRightToLine = ArrowRightToLine; +exports.ArrowRightToLineIcon = ArrowRightToLine; +exports.ArrowUp = ArrowUp; +exports.ArrowUp01 = ArrowUp01; +exports.ArrowUp01Icon = ArrowUp01; +exports.ArrowUp10 = ArrowUp10; +exports.ArrowUp10Icon = ArrowUp10; +exports.ArrowUpAZ = ArrowUpAZ; +exports.ArrowUpAZIcon = ArrowUpAZ; +exports.ArrowUpAz = ArrowUpAZ; +exports.ArrowUpAzIcon = ArrowUpAZ; +exports.ArrowUpCircle = CircleArrowUp; +exports.ArrowUpCircleIcon = CircleArrowUp; +exports.ArrowUpDown = ArrowUpDown; +exports.ArrowUpDownIcon = ArrowUpDown; +exports.ArrowUpFromDot = ArrowUpFromDot; +exports.ArrowUpFromDotIcon = ArrowUpFromDot; +exports.ArrowUpFromLine = ArrowUpFromLine; +exports.ArrowUpFromLineIcon = ArrowUpFromLine; +exports.ArrowUpIcon = ArrowUp; +exports.ArrowUpLeft = ArrowUpLeft; +exports.ArrowUpLeftFromCircle = CircleArrowOutUpLeft; +exports.ArrowUpLeftFromCircleIcon = CircleArrowOutUpLeft; +exports.ArrowUpLeftFromSquare = SquareArrowOutUpLeft; +exports.ArrowUpLeftFromSquareIcon = SquareArrowOutUpLeft; +exports.ArrowUpLeftIcon = ArrowUpLeft; +exports.ArrowUpLeftSquare = SquareArrowUpLeft; +exports.ArrowUpLeftSquareIcon = SquareArrowUpLeft; +exports.ArrowUpNarrowWide = ArrowUpNarrowWide; +exports.ArrowUpNarrowWideIcon = ArrowUpNarrowWide; +exports.ArrowUpRight = ArrowUpRight; +exports.ArrowUpRightFromCircle = CircleArrowOutUpRight; +exports.ArrowUpRightFromCircleIcon = CircleArrowOutUpRight; +exports.ArrowUpRightFromSquare = SquareArrowOutUpRight; +exports.ArrowUpRightFromSquareIcon = SquareArrowOutUpRight; +exports.ArrowUpRightIcon = ArrowUpRight; +exports.ArrowUpRightSquare = SquareArrowUpRight; +exports.ArrowUpRightSquareIcon = SquareArrowUpRight; +exports.ArrowUpSquare = SquareArrowUp; +exports.ArrowUpSquareIcon = SquareArrowUp; +exports.ArrowUpToLine = ArrowUpToLine; +exports.ArrowUpToLineIcon = ArrowUpToLine; +exports.ArrowUpWideNarrow = ArrowUpWideNarrow; +exports.ArrowUpWideNarrowIcon = ArrowUpWideNarrow; +exports.ArrowUpZA = ArrowUpZA; +exports.ArrowUpZAIcon = ArrowUpZA; +exports.ArrowUpZa = ArrowUpZA; +exports.ArrowUpZaIcon = ArrowUpZA; +exports.ArrowsUpFromLine = ArrowsUpFromLine; +exports.ArrowsUpFromLineIcon = ArrowsUpFromLine; +exports.Asterisk = Asterisk; +exports.AsteriskIcon = Asterisk; +exports.AsteriskSquare = SquareAsterisk; +exports.AsteriskSquareIcon = SquareAsterisk; +exports.AtSign = AtSign; +exports.AtSignIcon = AtSign; +exports.Atom = Atom; +exports.AtomIcon = Atom; +exports.AudioLines = AudioLines; +exports.AudioLinesIcon = AudioLines; +exports.AudioWaveform = AudioWaveform; +exports.AudioWaveformIcon = AudioWaveform; +exports.Award = Award; +exports.AwardIcon = Award; +exports.Axe = Axe; +exports.AxeIcon = Axe; +exports.Axis3D = Axis3d; +exports.Axis3DIcon = Axis3d; +exports.Axis3d = Axis3d; +exports.Axis3dIcon = Axis3d; +exports.Baby = Baby; +exports.BabyIcon = Baby; +exports.Backpack = Backpack; +exports.BackpackIcon = Backpack; +exports.Badge = Badge; +exports.BadgeAlert = BadgeAlert; +exports.BadgeAlertIcon = BadgeAlert; +exports.BadgeCent = BadgeCent; +exports.BadgeCentIcon = BadgeCent; +exports.BadgeCheck = BadgeCheck; +exports.BadgeCheckIcon = BadgeCheck; +exports.BadgeDollarSign = BadgeDollarSign; +exports.BadgeDollarSignIcon = BadgeDollarSign; +exports.BadgeEuro = BadgeEuro; +exports.BadgeEuroIcon = BadgeEuro; +exports.BadgeHelp = BadgeHelp; +exports.BadgeHelpIcon = BadgeHelp; +exports.BadgeIcon = Badge; +exports.BadgeIndianRupee = BadgeIndianRupee; +exports.BadgeIndianRupeeIcon = BadgeIndianRupee; +exports.BadgeInfo = BadgeInfo; +exports.BadgeInfoIcon = BadgeInfo; +exports.BadgeJapaneseYen = BadgeJapaneseYen; +exports.BadgeJapaneseYenIcon = BadgeJapaneseYen; +exports.BadgeMinus = BadgeMinus; +exports.BadgeMinusIcon = BadgeMinus; +exports.BadgePercent = BadgePercent; +exports.BadgePercentIcon = BadgePercent; +exports.BadgePlus = BadgePlus; +exports.BadgePlusIcon = BadgePlus; +exports.BadgePoundSterling = BadgePoundSterling; +exports.BadgePoundSterlingIcon = BadgePoundSterling; +exports.BadgeRussianRuble = BadgeRussianRuble; +exports.BadgeRussianRubleIcon = BadgeRussianRuble; +exports.BadgeSwissFranc = BadgeSwissFranc; +exports.BadgeSwissFrancIcon = BadgeSwissFranc; +exports.BadgeX = BadgeX; +exports.BadgeXIcon = BadgeX; +exports.BaggageClaim = BaggageClaim; +exports.BaggageClaimIcon = BaggageClaim; +exports.Ban = Ban; +exports.BanIcon = Ban; +exports.Banana = Banana; +exports.BananaIcon = Banana; +exports.Bandage = Bandage; +exports.BandageIcon = Bandage; +exports.Banknote = Banknote; +exports.BanknoteIcon = Banknote; +exports.BarChart = ChartNoAxesColumnIncreasing; +exports.BarChart2 = ChartNoAxesColumn; +exports.BarChart2Icon = ChartNoAxesColumn; +exports.BarChart3 = ChartColumn; +exports.BarChart3Icon = ChartColumn; +exports.BarChart4 = ChartColumnIncreasing; +exports.BarChart4Icon = ChartColumnIncreasing; +exports.BarChartBig = ChartColumnBig; +exports.BarChartBigIcon = ChartColumnBig; +exports.BarChartHorizontal = ChartBar; +exports.BarChartHorizontalBig = ChartBarBig; +exports.BarChartHorizontalBigIcon = ChartBarBig; +exports.BarChartHorizontalIcon = ChartBar; +exports.BarChartIcon = ChartNoAxesColumnIncreasing; +exports.Barcode = Barcode; +exports.BarcodeIcon = Barcode; +exports.Baseline = Baseline; +exports.BaselineIcon = Baseline; +exports.Bath = Bath; +exports.BathIcon = Bath; +exports.Battery = Battery; +exports.BatteryCharging = BatteryCharging; +exports.BatteryChargingIcon = BatteryCharging; +exports.BatteryFull = BatteryFull; +exports.BatteryFullIcon = BatteryFull; +exports.BatteryIcon = Battery; +exports.BatteryLow = BatteryLow; +exports.BatteryLowIcon = BatteryLow; +exports.BatteryMedium = BatteryMedium; +exports.BatteryMediumIcon = BatteryMedium; +exports.BatteryPlus = BatteryPlus; +exports.BatteryPlusIcon = BatteryPlus; +exports.BatteryWarning = BatteryWarning; +exports.BatteryWarningIcon = BatteryWarning; +exports.Beaker = Beaker; +exports.BeakerIcon = Beaker; +exports.Bean = Bean; +exports.BeanIcon = Bean; +exports.BeanOff = BeanOff; +exports.BeanOffIcon = BeanOff; +exports.Bed = Bed; +exports.BedDouble = BedDouble; +exports.BedDoubleIcon = BedDouble; +exports.BedIcon = Bed; +exports.BedSingle = BedSingle; +exports.BedSingleIcon = BedSingle; +exports.Beef = Beef; +exports.BeefIcon = Beef; +exports.Beer = Beer; +exports.BeerIcon = Beer; +exports.BeerOff = BeerOff; +exports.BeerOffIcon = BeerOff; +exports.Bell = Bell; +exports.BellDot = BellDot; +exports.BellDotIcon = BellDot; +exports.BellElectric = BellElectric; +exports.BellElectricIcon = BellElectric; +exports.BellIcon = Bell; +exports.BellMinus = BellMinus; +exports.BellMinusIcon = BellMinus; +exports.BellOff = BellOff; +exports.BellOffIcon = BellOff; +exports.BellPlus = BellPlus; +exports.BellPlusIcon = BellPlus; +exports.BellRing = BellRing; +exports.BellRingIcon = BellRing; +exports.BetweenHorizonalEnd = BetweenHorizontalEnd; +exports.BetweenHorizonalEndIcon = BetweenHorizontalEnd; +exports.BetweenHorizonalStart = BetweenHorizontalStart; +exports.BetweenHorizonalStartIcon = BetweenHorizontalStart; +exports.BetweenHorizontalEnd = BetweenHorizontalEnd; +exports.BetweenHorizontalEndIcon = BetweenHorizontalEnd; +exports.BetweenHorizontalStart = BetweenHorizontalStart; +exports.BetweenHorizontalStartIcon = BetweenHorizontalStart; +exports.BetweenVerticalEnd = BetweenVerticalEnd; +exports.BetweenVerticalEndIcon = BetweenVerticalEnd; +exports.BetweenVerticalStart = BetweenVerticalStart; +exports.BetweenVerticalStartIcon = BetweenVerticalStart; +exports.BicepsFlexed = BicepsFlexed; +exports.BicepsFlexedIcon = BicepsFlexed; +exports.Bike = Bike; +exports.BikeIcon = Bike; +exports.Binary = Binary; +exports.BinaryIcon = Binary; +exports.Binoculars = Binoculars; +exports.BinocularsIcon = Binoculars; +exports.Biohazard = Biohazard; +exports.BiohazardIcon = Biohazard; +exports.Bird = Bird; +exports.BirdIcon = Bird; +exports.Bitcoin = Bitcoin; +exports.BitcoinIcon = Bitcoin; +exports.Blend = Blend; +exports.BlendIcon = Blend; +exports.Blinds = Blinds; +exports.BlindsIcon = Blinds; +exports.Blocks = Blocks; +exports.BlocksIcon = Blocks; +exports.Bluetooth = Bluetooth; +exports.BluetoothConnected = BluetoothConnected; +exports.BluetoothConnectedIcon = BluetoothConnected; +exports.BluetoothIcon = Bluetooth; +exports.BluetoothOff = BluetoothOff; +exports.BluetoothOffIcon = BluetoothOff; +exports.BluetoothSearching = BluetoothSearching; +exports.BluetoothSearchingIcon = BluetoothSearching; +exports.Bold = Bold; +exports.BoldIcon = Bold; +exports.Bolt = Bolt; +exports.BoltIcon = Bolt; +exports.Bomb = Bomb; +exports.BombIcon = Bomb; +exports.Bone = Bone; +exports.BoneIcon = Bone; +exports.Book = Book; +exports.BookA = BookA; +exports.BookAIcon = BookA; +exports.BookAudio = BookAudio; +exports.BookAudioIcon = BookAudio; +exports.BookCheck = BookCheck; +exports.BookCheckIcon = BookCheck; +exports.BookCopy = BookCopy; +exports.BookCopyIcon = BookCopy; +exports.BookDashed = BookDashed; +exports.BookDashedIcon = BookDashed; +exports.BookDown = BookDown; +exports.BookDownIcon = BookDown; +exports.BookHeadphones = BookHeadphones; +exports.BookHeadphonesIcon = BookHeadphones; +exports.BookHeart = BookHeart; +exports.BookHeartIcon = BookHeart; +exports.BookIcon = Book; +exports.BookImage = BookImage; +exports.BookImageIcon = BookImage; +exports.BookKey = BookKey; +exports.BookKeyIcon = BookKey; +exports.BookLock = BookLock; +exports.BookLockIcon = BookLock; +exports.BookMarked = BookMarked; +exports.BookMarkedIcon = BookMarked; +exports.BookMinus = BookMinus; +exports.BookMinusIcon = BookMinus; +exports.BookOpen = BookOpen; +exports.BookOpenCheck = BookOpenCheck; +exports.BookOpenCheckIcon = BookOpenCheck; +exports.BookOpenIcon = BookOpen; +exports.BookOpenText = BookOpenText; +exports.BookOpenTextIcon = BookOpenText; +exports.BookPlus = BookPlus; +exports.BookPlusIcon = BookPlus; +exports.BookTemplate = BookDashed; +exports.BookTemplateIcon = BookDashed; +exports.BookText = BookText; +exports.BookTextIcon = BookText; +exports.BookType = BookType; +exports.BookTypeIcon = BookType; +exports.BookUp = BookUp; +exports.BookUp2 = BookUp2; +exports.BookUp2Icon = BookUp2; +exports.BookUpIcon = BookUp; +exports.BookUser = BookUser; +exports.BookUserIcon = BookUser; +exports.BookX = BookX; +exports.BookXIcon = BookX; +exports.Bookmark = Bookmark; +exports.BookmarkCheck = BookmarkCheck; +exports.BookmarkCheckIcon = BookmarkCheck; +exports.BookmarkIcon = Bookmark; +exports.BookmarkMinus = BookmarkMinus; +exports.BookmarkMinusIcon = BookmarkMinus; +exports.BookmarkPlus = BookmarkPlus; +exports.BookmarkPlusIcon = BookmarkPlus; +exports.BookmarkX = BookmarkX; +exports.BookmarkXIcon = BookmarkX; +exports.BoomBox = BoomBox; +exports.BoomBoxIcon = BoomBox; +exports.Bot = Bot; +exports.BotIcon = Bot; +exports.BotMessageSquare = BotMessageSquare; +exports.BotMessageSquareIcon = BotMessageSquare; +exports.BotOff = BotOff; +exports.BotOffIcon = BotOff; +exports.Box = Box; +exports.BoxIcon = Box; +exports.BoxSelect = SquareDashed; +exports.BoxSelectIcon = SquareDashed; +exports.Boxes = Boxes; +exports.BoxesIcon = Boxes; +exports.Braces = Braces; +exports.BracesIcon = Braces; +exports.Brackets = Brackets; +exports.BracketsIcon = Brackets; +exports.Brain = Brain; +exports.BrainCircuit = BrainCircuit; +exports.BrainCircuitIcon = BrainCircuit; +exports.BrainCog = BrainCog; +exports.BrainCogIcon = BrainCog; +exports.BrainIcon = Brain; +exports.BrickWall = BrickWall; +exports.BrickWallIcon = BrickWall; +exports.Briefcase = Briefcase; +exports.BriefcaseBusiness = BriefcaseBusiness; +exports.BriefcaseBusinessIcon = BriefcaseBusiness; +exports.BriefcaseConveyorBelt = BriefcaseConveyorBelt; +exports.BriefcaseConveyorBeltIcon = BriefcaseConveyorBelt; +exports.BriefcaseIcon = Briefcase; +exports.BriefcaseMedical = BriefcaseMedical; +exports.BriefcaseMedicalIcon = BriefcaseMedical; +exports.BringToFront = BringToFront; +exports.BringToFrontIcon = BringToFront; +exports.Brush = Brush; +exports.BrushIcon = Brush; +exports.Bug = Bug; +exports.BugIcon = Bug; +exports.BugOff = BugOff; +exports.BugOffIcon = BugOff; +exports.BugPlay = BugPlay; +exports.BugPlayIcon = BugPlay; +exports.Building = Building; +exports.Building2 = Building2; +exports.Building2Icon = Building2; +exports.BuildingIcon = Building; +exports.Bus = Bus; +exports.BusFront = BusFront; +exports.BusFrontIcon = BusFront; +exports.BusIcon = Bus; +exports.Cable = Cable; +exports.CableCar = CableCar; +exports.CableCarIcon = CableCar; +exports.CableIcon = Cable; +exports.Cake = Cake; +exports.CakeIcon = Cake; +exports.CakeSlice = CakeSlice; +exports.CakeSliceIcon = CakeSlice; +exports.Calculator = Calculator; +exports.CalculatorIcon = Calculator; +exports.Calendar = Calendar; +exports.Calendar1 = Calendar1; +exports.Calendar1Icon = Calendar1; +exports.CalendarArrowDown = CalendarArrowDown; +exports.CalendarArrowDownIcon = CalendarArrowDown; +exports.CalendarArrowUp = CalendarArrowUp; +exports.CalendarArrowUpIcon = CalendarArrowUp; +exports.CalendarCheck = CalendarCheck; +exports.CalendarCheck2 = CalendarCheck2; +exports.CalendarCheck2Icon = CalendarCheck2; +exports.CalendarCheckIcon = CalendarCheck; +exports.CalendarClock = CalendarClock; +exports.CalendarClockIcon = CalendarClock; +exports.CalendarCog = CalendarCog; +exports.CalendarCogIcon = CalendarCog; +exports.CalendarDays = CalendarDays; +exports.CalendarDaysIcon = CalendarDays; +exports.CalendarFold = CalendarFold; +exports.CalendarFoldIcon = CalendarFold; +exports.CalendarHeart = CalendarHeart; +exports.CalendarHeartIcon = CalendarHeart; +exports.CalendarIcon = Calendar; +exports.CalendarMinus = CalendarMinus; +exports.CalendarMinus2 = CalendarMinus2; +exports.CalendarMinus2Icon = CalendarMinus2; +exports.CalendarMinusIcon = CalendarMinus; +exports.CalendarOff = CalendarOff; +exports.CalendarOffIcon = CalendarOff; +exports.CalendarPlus = CalendarPlus; +exports.CalendarPlus2 = CalendarPlus2; +exports.CalendarPlus2Icon = CalendarPlus2; +exports.CalendarPlusIcon = CalendarPlus; +exports.CalendarRange = CalendarRange; +exports.CalendarRangeIcon = CalendarRange; +exports.CalendarSearch = CalendarSearch; +exports.CalendarSearchIcon = CalendarSearch; +exports.CalendarSync = CalendarSync; +exports.CalendarSyncIcon = CalendarSync; +exports.CalendarX = CalendarX; +exports.CalendarX2 = CalendarX2; +exports.CalendarX2Icon = CalendarX2; +exports.CalendarXIcon = CalendarX; +exports.Camera = Camera; +exports.CameraIcon = Camera; +exports.CameraOff = CameraOff; +exports.CameraOffIcon = CameraOff; +exports.CandlestickChart = ChartCandlestick; +exports.CandlestickChartIcon = ChartCandlestick; +exports.Candy = Candy; +exports.CandyCane = CandyCane; +exports.CandyCaneIcon = CandyCane; +exports.CandyIcon = Candy; +exports.CandyOff = CandyOff; +exports.CandyOffIcon = CandyOff; +exports.Cannabis = Cannabis; +exports.CannabisIcon = Cannabis; +exports.Captions = Captions; +exports.CaptionsIcon = Captions; +exports.CaptionsOff = CaptionsOff; +exports.CaptionsOffIcon = CaptionsOff; +exports.Car = Car; +exports.CarFront = CarFront; +exports.CarFrontIcon = CarFront; +exports.CarIcon = Car; +exports.CarTaxiFront = CarTaxiFront; +exports.CarTaxiFrontIcon = CarTaxiFront; +exports.Caravan = Caravan; +exports.CaravanIcon = Caravan; +exports.Carrot = Carrot; +exports.CarrotIcon = Carrot; +exports.CaseLower = CaseLower; +exports.CaseLowerIcon = CaseLower; +exports.CaseSensitive = CaseSensitive; +exports.CaseSensitiveIcon = CaseSensitive; +exports.CaseUpper = CaseUpper; +exports.CaseUpperIcon = CaseUpper; +exports.CassetteTape = CassetteTape; +exports.CassetteTapeIcon = CassetteTape; +exports.Cast = Cast; +exports.CastIcon = Cast; +exports.Castle = Castle; +exports.CastleIcon = Castle; +exports.Cat = Cat; +exports.CatIcon = Cat; +exports.Cctv = Cctv; +exports.CctvIcon = Cctv; +exports.ChartArea = ChartArea; +exports.ChartAreaIcon = ChartArea; +exports.ChartBar = ChartBar; +exports.ChartBarBig = ChartBarBig; +exports.ChartBarBigIcon = ChartBarBig; +exports.ChartBarDecreasing = ChartBarDecreasing; +exports.ChartBarDecreasingIcon = ChartBarDecreasing; +exports.ChartBarIcon = ChartBar; +exports.ChartBarIncreasing = ChartBarIncreasing; +exports.ChartBarIncreasingIcon = ChartBarIncreasing; +exports.ChartBarStacked = ChartBarStacked; +exports.ChartBarStackedIcon = ChartBarStacked; +exports.ChartCandlestick = ChartCandlestick; +exports.ChartCandlestickIcon = ChartCandlestick; +exports.ChartColumn = ChartColumn; +exports.ChartColumnBig = ChartColumnBig; +exports.ChartColumnBigIcon = ChartColumnBig; +exports.ChartColumnDecreasing = ChartColumnDecreasing; +exports.ChartColumnDecreasingIcon = ChartColumnDecreasing; +exports.ChartColumnIcon = ChartColumn; +exports.ChartColumnIncreasing = ChartColumnIncreasing; +exports.ChartColumnIncreasingIcon = ChartColumnIncreasing; +exports.ChartColumnStacked = ChartColumnStacked; +exports.ChartColumnStackedIcon = ChartColumnStacked; +exports.ChartGantt = ChartGantt; +exports.ChartGanttIcon = ChartGantt; +exports.ChartLine = ChartLine; +exports.ChartLineIcon = ChartLine; +exports.ChartNetwork = ChartNetwork; +exports.ChartNetworkIcon = ChartNetwork; +exports.ChartNoAxesColumn = ChartNoAxesColumn; +exports.ChartNoAxesColumnDecreasing = ChartNoAxesColumnDecreasing; +exports.ChartNoAxesColumnDecreasingIcon = ChartNoAxesColumnDecreasing; +exports.ChartNoAxesColumnIcon = ChartNoAxesColumn; +exports.ChartNoAxesColumnIncreasing = ChartNoAxesColumnIncreasing; +exports.ChartNoAxesColumnIncreasingIcon = ChartNoAxesColumnIncreasing; +exports.ChartNoAxesCombined = ChartNoAxesCombined; +exports.ChartNoAxesCombinedIcon = ChartNoAxesCombined; +exports.ChartNoAxesGantt = ChartNoAxesGantt; +exports.ChartNoAxesGanttIcon = ChartNoAxesGantt; +exports.ChartPie = ChartPie; +exports.ChartPieIcon = ChartPie; +exports.ChartScatter = ChartScatter; +exports.ChartScatterIcon = ChartScatter; +exports.ChartSpline = ChartSpline; +exports.ChartSplineIcon = ChartSpline; +exports.Check = Check; +exports.CheckCheck = CheckCheck; +exports.CheckCheckIcon = CheckCheck; +exports.CheckCircle = CircleCheckBig; +exports.CheckCircle2 = CircleCheck; +exports.CheckCircle2Icon = CircleCheck; +exports.CheckCircleIcon = CircleCheckBig; +exports.CheckIcon = Check; +exports.CheckSquare = SquareCheckBig; +exports.CheckSquare2 = SquareCheck; +exports.CheckSquare2Icon = SquareCheck; +exports.CheckSquareIcon = SquareCheckBig; +exports.ChefHat = ChefHat; +exports.ChefHatIcon = ChefHat; +exports.Cherry = Cherry; +exports.CherryIcon = Cherry; +exports.ChevronDown = ChevronDown; +exports.ChevronDownCircle = CircleChevronDown; +exports.ChevronDownCircleIcon = CircleChevronDown; +exports.ChevronDownIcon = ChevronDown; +exports.ChevronDownSquare = SquareChevronDown; +exports.ChevronDownSquareIcon = SquareChevronDown; +exports.ChevronFirst = ChevronFirst; +exports.ChevronFirstIcon = ChevronFirst; +exports.ChevronLast = ChevronLast; +exports.ChevronLastIcon = ChevronLast; +exports.ChevronLeft = ChevronLeft; +exports.ChevronLeftCircle = CircleChevronLeft; +exports.ChevronLeftCircleIcon = CircleChevronLeft; +exports.ChevronLeftIcon = ChevronLeft; +exports.ChevronLeftSquare = SquareChevronLeft; +exports.ChevronLeftSquareIcon = SquareChevronLeft; +exports.ChevronRight = ChevronRight; +exports.ChevronRightCircle = CircleChevronRight; +exports.ChevronRightCircleIcon = CircleChevronRight; +exports.ChevronRightIcon = ChevronRight; +exports.ChevronRightSquare = SquareChevronRight; +exports.ChevronRightSquareIcon = SquareChevronRight; +exports.ChevronUp = ChevronUp; +exports.ChevronUpCircle = CircleChevronUp; +exports.ChevronUpCircleIcon = CircleChevronUp; +exports.ChevronUpIcon = ChevronUp; +exports.ChevronUpSquare = SquareChevronUp; +exports.ChevronUpSquareIcon = SquareChevronUp; +exports.ChevronsDown = ChevronsDown; +exports.ChevronsDownIcon = ChevronsDown; +exports.ChevronsDownUp = ChevronsDownUp; +exports.ChevronsDownUpIcon = ChevronsDownUp; +exports.ChevronsLeft = ChevronsLeft; +exports.ChevronsLeftIcon = ChevronsLeft; +exports.ChevronsLeftRight = ChevronsLeftRight; +exports.ChevronsLeftRightEllipsis = ChevronsLeftRightEllipsis; +exports.ChevronsLeftRightEllipsisIcon = ChevronsLeftRightEllipsis; +exports.ChevronsLeftRightIcon = ChevronsLeftRight; +exports.ChevronsRight = ChevronsRight; +exports.ChevronsRightIcon = ChevronsRight; +exports.ChevronsRightLeft = ChevronsRightLeft; +exports.ChevronsRightLeftIcon = ChevronsRightLeft; +exports.ChevronsUp = ChevronsUp; +exports.ChevronsUpDown = ChevronsUpDown; +exports.ChevronsUpDownIcon = ChevronsUpDown; +exports.ChevronsUpIcon = ChevronsUp; +exports.Chrome = Chrome; +exports.ChromeIcon = Chrome; +exports.Church = Church; +exports.ChurchIcon = Church; +exports.Cigarette = Cigarette; +exports.CigaretteIcon = Cigarette; +exports.CigaretteOff = CigaretteOff; +exports.CigaretteOffIcon = CigaretteOff; +exports.Circle = Circle; +exports.CircleAlert = CircleAlert; +exports.CircleAlertIcon = CircleAlert; +exports.CircleArrowDown = CircleArrowDown; +exports.CircleArrowDownIcon = CircleArrowDown; +exports.CircleArrowLeft = CircleArrowLeft; +exports.CircleArrowLeftIcon = CircleArrowLeft; +exports.CircleArrowOutDownLeft = CircleArrowOutDownLeft; +exports.CircleArrowOutDownLeftIcon = CircleArrowOutDownLeft; +exports.CircleArrowOutDownRight = CircleArrowOutDownRight; +exports.CircleArrowOutDownRightIcon = CircleArrowOutDownRight; +exports.CircleArrowOutUpLeft = CircleArrowOutUpLeft; +exports.CircleArrowOutUpLeftIcon = CircleArrowOutUpLeft; +exports.CircleArrowOutUpRight = CircleArrowOutUpRight; +exports.CircleArrowOutUpRightIcon = CircleArrowOutUpRight; +exports.CircleArrowRight = CircleArrowRight; +exports.CircleArrowRightIcon = CircleArrowRight; +exports.CircleArrowUp = CircleArrowUp; +exports.CircleArrowUpIcon = CircleArrowUp; +exports.CircleCheck = CircleCheck; +exports.CircleCheckBig = CircleCheckBig; +exports.CircleCheckBigIcon = CircleCheckBig; +exports.CircleCheckIcon = CircleCheck; +exports.CircleChevronDown = CircleChevronDown; +exports.CircleChevronDownIcon = CircleChevronDown; +exports.CircleChevronLeft = CircleChevronLeft; +exports.CircleChevronLeftIcon = CircleChevronLeft; +exports.CircleChevronRight = CircleChevronRight; +exports.CircleChevronRightIcon = CircleChevronRight; +exports.CircleChevronUp = CircleChevronUp; +exports.CircleChevronUpIcon = CircleChevronUp; +exports.CircleDashed = CircleDashed; +exports.CircleDashedIcon = CircleDashed; +exports.CircleDivide = CircleDivide; +exports.CircleDivideIcon = CircleDivide; +exports.CircleDollarSign = CircleDollarSign; +exports.CircleDollarSignIcon = CircleDollarSign; +exports.CircleDot = CircleDot; +exports.CircleDotDashed = CircleDotDashed; +exports.CircleDotDashedIcon = CircleDotDashed; +exports.CircleDotIcon = CircleDot; +exports.CircleEllipsis = CircleEllipsis; +exports.CircleEllipsisIcon = CircleEllipsis; +exports.CircleEqual = CircleEqual; +exports.CircleEqualIcon = CircleEqual; +exports.CircleFadingArrowUp = CircleFadingArrowUp; +exports.CircleFadingArrowUpIcon = CircleFadingArrowUp; +exports.CircleFadingPlus = CircleFadingPlus; +exports.CircleFadingPlusIcon = CircleFadingPlus; +exports.CircleGauge = CircleGauge; +exports.CircleGaugeIcon = CircleGauge; +exports.CircleHelp = CircleHelp; +exports.CircleHelpIcon = CircleHelp; +exports.CircleIcon = Circle; +exports.CircleMinus = CircleMinus; +exports.CircleMinusIcon = CircleMinus; +exports.CircleOff = CircleOff; +exports.CircleOffIcon = CircleOff; +exports.CircleParking = CircleParking; +exports.CircleParkingIcon = CircleParking; +exports.CircleParkingOff = CircleParkingOff; +exports.CircleParkingOffIcon = CircleParkingOff; +exports.CirclePause = CirclePause; +exports.CirclePauseIcon = CirclePause; +exports.CirclePercent = CirclePercent; +exports.CirclePercentIcon = CirclePercent; +exports.CirclePlay = CirclePlay; +exports.CirclePlayIcon = CirclePlay; +exports.CirclePlus = CirclePlus; +exports.CirclePlusIcon = CirclePlus; +exports.CirclePower = CirclePower; +exports.CirclePowerIcon = CirclePower; +exports.CircleSlash = CircleSlash; +exports.CircleSlash2 = CircleSlash2; +exports.CircleSlash2Icon = CircleSlash2; +exports.CircleSlashIcon = CircleSlash; +exports.CircleSlashed = CircleSlash2; +exports.CircleSlashedIcon = CircleSlash2; +exports.CircleSmall = CircleSmall; +exports.CircleSmallIcon = CircleSmall; +exports.CircleStop = CircleStop; +exports.CircleStopIcon = CircleStop; +exports.CircleUser = CircleUser; +exports.CircleUserIcon = CircleUser; +exports.CircleUserRound = CircleUserRound; +exports.CircleUserRoundIcon = CircleUserRound; +exports.CircleX = CircleX; +exports.CircleXIcon = CircleX; +exports.CircuitBoard = CircuitBoard; +exports.CircuitBoardIcon = CircuitBoard; +exports.Citrus = Citrus; +exports.CitrusIcon = Citrus; +exports.Clapperboard = Clapperboard; +exports.ClapperboardIcon = Clapperboard; +exports.Clipboard = Clipboard; +exports.ClipboardCheck = ClipboardCheck; +exports.ClipboardCheckIcon = ClipboardCheck; +exports.ClipboardCopy = ClipboardCopy; +exports.ClipboardCopyIcon = ClipboardCopy; +exports.ClipboardEdit = ClipboardPen; +exports.ClipboardEditIcon = ClipboardPen; +exports.ClipboardIcon = Clipboard; +exports.ClipboardList = ClipboardList; +exports.ClipboardListIcon = ClipboardList; +exports.ClipboardMinus = ClipboardMinus; +exports.ClipboardMinusIcon = ClipboardMinus; +exports.ClipboardPaste = ClipboardPaste; +exports.ClipboardPasteIcon = ClipboardPaste; +exports.ClipboardPen = ClipboardPen; +exports.ClipboardPenIcon = ClipboardPen; +exports.ClipboardPenLine = ClipboardPenLine; +exports.ClipboardPenLineIcon = ClipboardPenLine; +exports.ClipboardPlus = ClipboardPlus; +exports.ClipboardPlusIcon = ClipboardPlus; +exports.ClipboardSignature = ClipboardPenLine; +exports.ClipboardSignatureIcon = ClipboardPenLine; +exports.ClipboardType = ClipboardType; +exports.ClipboardTypeIcon = ClipboardType; +exports.ClipboardX = ClipboardX; +exports.ClipboardXIcon = ClipboardX; +exports.Clock = Clock; +exports.Clock1 = Clock1; +exports.Clock10 = Clock10; +exports.Clock10Icon = Clock10; +exports.Clock11 = Clock11; +exports.Clock11Icon = Clock11; +exports.Clock12 = Clock12; +exports.Clock12Icon = Clock12; +exports.Clock1Icon = Clock1; +exports.Clock2 = Clock2; +exports.Clock2Icon = Clock2; +exports.Clock3 = Clock3; +exports.Clock3Icon = Clock3; +exports.Clock4 = Clock4; +exports.Clock4Icon = Clock4; +exports.Clock5 = Clock5; +exports.Clock5Icon = Clock5; +exports.Clock6 = Clock6; +exports.Clock6Icon = Clock6; +exports.Clock7 = Clock7; +exports.Clock7Icon = Clock7; +exports.Clock8 = Clock8; +exports.Clock8Icon = Clock8; +exports.Clock9 = Clock9; +exports.Clock9Icon = Clock9; +exports.ClockAlert = ClockAlert; +exports.ClockAlertIcon = ClockAlert; +exports.ClockArrowDown = ClockArrowDown; +exports.ClockArrowDownIcon = ClockArrowDown; +exports.ClockArrowUp = ClockArrowUp; +exports.ClockArrowUpIcon = ClockArrowUp; +exports.ClockIcon = Clock; +exports.Cloud = Cloud; +exports.CloudAlert = CloudAlert; +exports.CloudAlertIcon = CloudAlert; +exports.CloudCog = CloudCog; +exports.CloudCogIcon = CloudCog; +exports.CloudDownload = CloudDownload; +exports.CloudDownloadIcon = CloudDownload; +exports.CloudDrizzle = CloudDrizzle; +exports.CloudDrizzleIcon = CloudDrizzle; +exports.CloudFog = CloudFog; +exports.CloudFogIcon = CloudFog; +exports.CloudHail = CloudHail; +exports.CloudHailIcon = CloudHail; +exports.CloudIcon = Cloud; +exports.CloudLightning = CloudLightning; +exports.CloudLightningIcon = CloudLightning; +exports.CloudMoon = CloudMoon; +exports.CloudMoonIcon = CloudMoon; +exports.CloudMoonRain = CloudMoonRain; +exports.CloudMoonRainIcon = CloudMoonRain; +exports.CloudOff = CloudOff; +exports.CloudOffIcon = CloudOff; +exports.CloudRain = CloudRain; +exports.CloudRainIcon = CloudRain; +exports.CloudRainWind = CloudRainWind; +exports.CloudRainWindIcon = CloudRainWind; +exports.CloudSnow = CloudSnow; +exports.CloudSnowIcon = CloudSnow; +exports.CloudSun = CloudSun; +exports.CloudSunIcon = CloudSun; +exports.CloudSunRain = CloudSunRain; +exports.CloudSunRainIcon = CloudSunRain; +exports.CloudUpload = CloudUpload; +exports.CloudUploadIcon = CloudUpload; +exports.Cloudy = Cloudy; +exports.CloudyIcon = Cloudy; +exports.Clover = Clover; +exports.CloverIcon = Clover; +exports.Club = Club; +exports.ClubIcon = Club; +exports.Code = Code; +exports.Code2 = CodeXml; +exports.Code2Icon = CodeXml; +exports.CodeIcon = Code; +exports.CodeSquare = SquareCode; +exports.CodeSquareIcon = SquareCode; +exports.CodeXml = CodeXml; +exports.CodeXmlIcon = CodeXml; +exports.Codepen = Codepen; +exports.CodepenIcon = Codepen; +exports.Codesandbox = Codesandbox; +exports.CodesandboxIcon = Codesandbox; +exports.Coffee = Coffee; +exports.CoffeeIcon = Coffee; +exports.Cog = Cog; +exports.CogIcon = Cog; +exports.Coins = Coins; +exports.CoinsIcon = Coins; +exports.Columns = Columns2; +exports.Columns2 = Columns2; +exports.Columns2Icon = Columns2; +exports.Columns3 = Columns3; +exports.Columns3Icon = Columns3; +exports.Columns4 = Columns4; +exports.Columns4Icon = Columns4; +exports.ColumnsIcon = Columns2; +exports.Combine = Combine; +exports.CombineIcon = Combine; +exports.Command = Command; +exports.CommandIcon = Command; +exports.Compass = Compass; +exports.CompassIcon = Compass; +exports.Component = Component; +exports.ComponentIcon = Component; +exports.Computer = Computer; +exports.ComputerIcon = Computer; +exports.ConciergeBell = ConciergeBell; +exports.ConciergeBellIcon = ConciergeBell; +exports.Cone = Cone; +exports.ConeIcon = Cone; +exports.Construction = Construction; +exports.ConstructionIcon = Construction; +exports.Contact = Contact; +exports.Contact2 = ContactRound; +exports.Contact2Icon = ContactRound; +exports.ContactIcon = Contact; +exports.ContactRound = ContactRound; +exports.ContactRoundIcon = ContactRound; +exports.Container = Container; +exports.ContainerIcon = Container; +exports.Contrast = Contrast; +exports.ContrastIcon = Contrast; +exports.Cookie = Cookie; +exports.CookieIcon = Cookie; +exports.CookingPot = CookingPot; +exports.CookingPotIcon = CookingPot; +exports.Copy = Copy; +exports.CopyCheck = CopyCheck; +exports.CopyCheckIcon = CopyCheck; +exports.CopyIcon = Copy; +exports.CopyMinus = CopyMinus; +exports.CopyMinusIcon = CopyMinus; +exports.CopyPlus = CopyPlus; +exports.CopyPlusIcon = CopyPlus; +exports.CopySlash = CopySlash; +exports.CopySlashIcon = CopySlash; +exports.CopyX = CopyX; +exports.CopyXIcon = CopyX; +exports.Copyleft = Copyleft; +exports.CopyleftIcon = Copyleft; +exports.Copyright = Copyright; +exports.CopyrightIcon = Copyright; +exports.CornerDownLeft = CornerDownLeft; +exports.CornerDownLeftIcon = CornerDownLeft; +exports.CornerDownRight = CornerDownRight; +exports.CornerDownRightIcon = CornerDownRight; +exports.CornerLeftDown = CornerLeftDown; +exports.CornerLeftDownIcon = CornerLeftDown; +exports.CornerLeftUp = CornerLeftUp; +exports.CornerLeftUpIcon = CornerLeftUp; +exports.CornerRightDown = CornerRightDown; +exports.CornerRightDownIcon = CornerRightDown; +exports.CornerRightUp = CornerRightUp; +exports.CornerRightUpIcon = CornerRightUp; +exports.CornerUpLeft = CornerUpLeft; +exports.CornerUpLeftIcon = CornerUpLeft; +exports.CornerUpRight = CornerUpRight; +exports.CornerUpRightIcon = CornerUpRight; +exports.Cpu = Cpu; +exports.CpuIcon = Cpu; +exports.CreativeCommons = CreativeCommons; +exports.CreativeCommonsIcon = CreativeCommons; +exports.CreditCard = CreditCard; +exports.CreditCardIcon = CreditCard; +exports.Croissant = Croissant; +exports.CroissantIcon = Croissant; +exports.Crop = Crop; +exports.CropIcon = Crop; +exports.Cross = Cross; +exports.CrossIcon = Cross; +exports.Crosshair = Crosshair; +exports.CrosshairIcon = Crosshair; +exports.Crown = Crown; +exports.CrownIcon = Crown; +exports.Cuboid = Cuboid; +exports.CuboidIcon = Cuboid; +exports.CupSoda = CupSoda; +exports.CupSodaIcon = CupSoda; +exports.CurlyBraces = Braces; +exports.CurlyBracesIcon = Braces; +exports.Currency = Currency; +exports.CurrencyIcon = Currency; +exports.Cylinder = Cylinder; +exports.CylinderIcon = Cylinder; +exports.Dam = Dam; +exports.DamIcon = Dam; +exports.Database = Database; +exports.DatabaseBackup = DatabaseBackup; +exports.DatabaseBackupIcon = DatabaseBackup; +exports.DatabaseIcon = Database; +exports.DatabaseZap = DatabaseZap; +exports.DatabaseZapIcon = DatabaseZap; +exports.Delete = Delete; +exports.DeleteIcon = Delete; +exports.Dessert = Dessert; +exports.DessertIcon = Dessert; +exports.Diameter = Diameter; +exports.DiameterIcon = Diameter; +exports.Diamond = Diamond; +exports.DiamondIcon = Diamond; +exports.DiamondMinus = DiamondMinus; +exports.DiamondMinusIcon = DiamondMinus; +exports.DiamondPercent = DiamondPercent; +exports.DiamondPercentIcon = DiamondPercent; +exports.DiamondPlus = DiamondPlus; +exports.DiamondPlusIcon = DiamondPlus; +exports.Dice1 = Dice1; +exports.Dice1Icon = Dice1; +exports.Dice2 = Dice2; +exports.Dice2Icon = Dice2; +exports.Dice3 = Dice3; +exports.Dice3Icon = Dice3; +exports.Dice4 = Dice4; +exports.Dice4Icon = Dice4; +exports.Dice5 = Dice5; +exports.Dice5Icon = Dice5; +exports.Dice6 = Dice6; +exports.Dice6Icon = Dice6; +exports.Dices = Dices; +exports.DicesIcon = Dices; +exports.Diff = Diff; +exports.DiffIcon = Diff; +exports.Disc = Disc; +exports.Disc2 = Disc2; +exports.Disc2Icon = Disc2; +exports.Disc3 = Disc3; +exports.Disc3Icon = Disc3; +exports.DiscAlbum = DiscAlbum; +exports.DiscAlbumIcon = DiscAlbum; +exports.DiscIcon = Disc; +exports.Divide = Divide; +exports.DivideCircle = CircleDivide; +exports.DivideCircleIcon = CircleDivide; +exports.DivideIcon = Divide; +exports.DivideSquare = SquareDivide; +exports.DivideSquareIcon = SquareDivide; +exports.Dna = Dna; +exports.DnaIcon = Dna; +exports.DnaOff = DnaOff; +exports.DnaOffIcon = DnaOff; +exports.Dock = Dock; +exports.DockIcon = Dock; +exports.Dog = Dog; +exports.DogIcon = Dog; +exports.DollarSign = DollarSign; +exports.DollarSignIcon = DollarSign; +exports.Donut = Donut; +exports.DonutIcon = Donut; +exports.DoorClosed = DoorClosed; +exports.DoorClosedIcon = DoorClosed; +exports.DoorOpen = DoorOpen; +exports.DoorOpenIcon = DoorOpen; +exports.Dot = Dot; +exports.DotIcon = Dot; +exports.DotSquare = SquareDot; +exports.DotSquareIcon = SquareDot; +exports.Download = Download; +exports.DownloadCloud = CloudDownload; +exports.DownloadCloudIcon = CloudDownload; +exports.DownloadIcon = Download; +exports.DraftingCompass = DraftingCompass; +exports.DraftingCompassIcon = DraftingCompass; +exports.Drama = Drama; +exports.DramaIcon = Drama; +exports.Dribbble = Dribbble; +exports.DribbbleIcon = Dribbble; +exports.Drill = Drill; +exports.DrillIcon = Drill; +exports.Droplet = Droplet; +exports.DropletIcon = Droplet; +exports.DropletOff = DropletOff; +exports.DropletOffIcon = DropletOff; +exports.Droplets = Droplets; +exports.DropletsIcon = Droplets; +exports.Drum = Drum; +exports.DrumIcon = Drum; +exports.Drumstick = Drumstick; +exports.DrumstickIcon = Drumstick; +exports.Dumbbell = Dumbbell; +exports.DumbbellIcon = Dumbbell; +exports.Ear = Ear; +exports.EarIcon = Ear; +exports.EarOff = EarOff; +exports.EarOffIcon = EarOff; +exports.Earth = Earth; +exports.EarthIcon = Earth; +exports.EarthLock = EarthLock; +exports.EarthLockIcon = EarthLock; +exports.Eclipse = Eclipse; +exports.EclipseIcon = Eclipse; +exports.Edit = SquarePen; +exports.Edit2 = Pen; +exports.Edit2Icon = Pen; +exports.Edit3 = PenLine; +exports.Edit3Icon = PenLine; +exports.EditIcon = SquarePen; +exports.Egg = Egg; +exports.EggFried = EggFried; +exports.EggFriedIcon = EggFried; +exports.EggIcon = Egg; +exports.EggOff = EggOff; +exports.EggOffIcon = EggOff; +exports.Ellipsis = Ellipsis; +exports.EllipsisIcon = Ellipsis; +exports.EllipsisVertical = EllipsisVertical; +exports.EllipsisVerticalIcon = EllipsisVertical; +exports.Equal = Equal; +exports.EqualApproximately = EqualApproximately; +exports.EqualApproximatelyIcon = EqualApproximately; +exports.EqualIcon = Equal; +exports.EqualNot = EqualNot; +exports.EqualNotIcon = EqualNot; +exports.EqualSquare = SquareEqual; +exports.EqualSquareIcon = SquareEqual; +exports.Eraser = Eraser; +exports.EraserIcon = Eraser; +exports.EthernetPort = EthernetPort; +exports.EthernetPortIcon = EthernetPort; +exports.Euro = Euro; +exports.EuroIcon = Euro; +exports.Expand = Expand; +exports.ExpandIcon = Expand; +exports.ExternalLink = ExternalLink; +exports.ExternalLinkIcon = ExternalLink; +exports.Eye = Eye; +exports.EyeClosed = EyeClosed; +exports.EyeClosedIcon = EyeClosed; +exports.EyeIcon = Eye; +exports.EyeOff = EyeOff; +exports.EyeOffIcon = EyeOff; +exports.Facebook = Facebook; +exports.FacebookIcon = Facebook; +exports.Factory = Factory; +exports.FactoryIcon = Factory; +exports.Fan = Fan; +exports.FanIcon = Fan; +exports.FastForward = FastForward; +exports.FastForwardIcon = FastForward; +exports.Feather = Feather; +exports.FeatherIcon = Feather; +exports.Fence = Fence; +exports.FenceIcon = Fence; +exports.FerrisWheel = FerrisWheel; +exports.FerrisWheelIcon = FerrisWheel; +exports.Figma = Figma; +exports.FigmaIcon = Figma; +exports.File = File; +exports.FileArchive = FileArchive; +exports.FileArchiveIcon = FileArchive; +exports.FileAudio = FileAudio; +exports.FileAudio2 = FileAudio2; +exports.FileAudio2Icon = FileAudio2; +exports.FileAudioIcon = FileAudio; +exports.FileAxis3D = FileAxis3d; +exports.FileAxis3DIcon = FileAxis3d; +exports.FileAxis3d = FileAxis3d; +exports.FileAxis3dIcon = FileAxis3d; +exports.FileBadge = FileBadge; +exports.FileBadge2 = FileBadge2; +exports.FileBadge2Icon = FileBadge2; +exports.FileBadgeIcon = FileBadge; +exports.FileBarChart = FileChartColumnIncreasing; +exports.FileBarChart2 = FileChartColumn; +exports.FileBarChart2Icon = FileChartColumn; +exports.FileBarChartIcon = FileChartColumnIncreasing; +exports.FileBox = FileBox; +exports.FileBoxIcon = FileBox; +exports.FileChartColumn = FileChartColumn; +exports.FileChartColumnIcon = FileChartColumn; +exports.FileChartColumnIncreasing = FileChartColumnIncreasing; +exports.FileChartColumnIncreasingIcon = FileChartColumnIncreasing; +exports.FileChartLine = FileChartLine; +exports.FileChartLineIcon = FileChartLine; +exports.FileChartPie = FileChartPie; +exports.FileChartPieIcon = FileChartPie; +exports.FileCheck = FileCheck; +exports.FileCheck2 = FileCheck2; +exports.FileCheck2Icon = FileCheck2; +exports.FileCheckIcon = FileCheck; +exports.FileClock = FileClock; +exports.FileClockIcon = FileClock; +exports.FileCode = FileCode; +exports.FileCode2 = FileCode2; +exports.FileCode2Icon = FileCode2; +exports.FileCodeIcon = FileCode; +exports.FileCog = FileCog; +exports.FileCog2 = FileCog; +exports.FileCog2Icon = FileCog; +exports.FileCogIcon = FileCog; +exports.FileDiff = FileDiff; +exports.FileDiffIcon = FileDiff; +exports.FileDigit = FileDigit; +exports.FileDigitIcon = FileDigit; +exports.FileDown = FileDown; +exports.FileDownIcon = FileDown; +exports.FileEdit = FilePen; +exports.FileEditIcon = FilePen; +exports.FileHeart = FileHeart; +exports.FileHeartIcon = FileHeart; +exports.FileIcon = File; +exports.FileImage = FileImage; +exports.FileImageIcon = FileImage; +exports.FileInput = FileInput; +exports.FileInputIcon = FileInput; +exports.FileJson = FileJson; +exports.FileJson2 = FileJson2; +exports.FileJson2Icon = FileJson2; +exports.FileJsonIcon = FileJson; +exports.FileKey = FileKey; +exports.FileKey2 = FileKey2; +exports.FileKey2Icon = FileKey2; +exports.FileKeyIcon = FileKey; +exports.FileLineChart = FileChartLine; +exports.FileLineChartIcon = FileChartLine; +exports.FileLock = FileLock; +exports.FileLock2 = FileLock2; +exports.FileLock2Icon = FileLock2; +exports.FileLockIcon = FileLock; +exports.FileMinus = FileMinus; +exports.FileMinus2 = FileMinus2; +exports.FileMinus2Icon = FileMinus2; +exports.FileMinusIcon = FileMinus; +exports.FileMusic = FileMusic; +exports.FileMusicIcon = FileMusic; +exports.FileOutput = FileOutput; +exports.FileOutputIcon = FileOutput; +exports.FilePen = FilePen; +exports.FilePenIcon = FilePen; +exports.FilePenLine = FilePenLine; +exports.FilePenLineIcon = FilePenLine; +exports.FilePieChart = FileChartPie; +exports.FilePieChartIcon = FileChartPie; +exports.FilePlus = FilePlus; +exports.FilePlus2 = FilePlus2; +exports.FilePlus2Icon = FilePlus2; +exports.FilePlusIcon = FilePlus; +exports.FileQuestion = FileQuestion; +exports.FileQuestionIcon = FileQuestion; +exports.FileScan = FileScan; +exports.FileScanIcon = FileScan; +exports.FileSearch = FileSearch; +exports.FileSearch2 = FileSearch2; +exports.FileSearch2Icon = FileSearch2; +exports.FileSearchIcon = FileSearch; +exports.FileSignature = FilePenLine; +exports.FileSignatureIcon = FilePenLine; +exports.FileSliders = FileSliders; +exports.FileSlidersIcon = FileSliders; +exports.FileSpreadsheet = FileSpreadsheet; +exports.FileSpreadsheetIcon = FileSpreadsheet; +exports.FileStack = FileStack; +exports.FileStackIcon = FileStack; +exports.FileSymlink = FileSymlink; +exports.FileSymlinkIcon = FileSymlink; +exports.FileTerminal = FileTerminal; +exports.FileTerminalIcon = FileTerminal; +exports.FileText = FileText; +exports.FileTextIcon = FileText; +exports.FileType = FileType; +exports.FileType2 = FileType2; +exports.FileType2Icon = FileType2; +exports.FileTypeIcon = FileType; +exports.FileUp = FileUp; +exports.FileUpIcon = FileUp; +exports.FileUser = FileUser; +exports.FileUserIcon = FileUser; +exports.FileVideo = FileVideo; +exports.FileVideo2 = FileVideo2; +exports.FileVideo2Icon = FileVideo2; +exports.FileVideoIcon = FileVideo; +exports.FileVolume = FileVolume; +exports.FileVolume2 = FileVolume2; +exports.FileVolume2Icon = FileVolume2; +exports.FileVolumeIcon = FileVolume; +exports.FileWarning = FileWarning; +exports.FileWarningIcon = FileWarning; +exports.FileX = FileX; +exports.FileX2 = FileX2; +exports.FileX2Icon = FileX2; +exports.FileXIcon = FileX; +exports.Files = Files; +exports.FilesIcon = Files; +exports.Film = Film; +exports.FilmIcon = Film; +exports.Filter = Filter; +exports.FilterIcon = Filter; +exports.FilterX = FilterX; +exports.FilterXIcon = FilterX; +exports.Fingerprint = Fingerprint; +exports.FingerprintIcon = Fingerprint; +exports.FireExtinguisher = FireExtinguisher; +exports.FireExtinguisherIcon = FireExtinguisher; +exports.Fish = Fish; +exports.FishIcon = Fish; +exports.FishOff = FishOff; +exports.FishOffIcon = FishOff; +exports.FishSymbol = FishSymbol; +exports.FishSymbolIcon = FishSymbol; +exports.Flag = Flag; +exports.FlagIcon = Flag; +exports.FlagOff = FlagOff; +exports.FlagOffIcon = FlagOff; +exports.FlagTriangleLeft = FlagTriangleLeft; +exports.FlagTriangleLeftIcon = FlagTriangleLeft; +exports.FlagTriangleRight = FlagTriangleRight; +exports.FlagTriangleRightIcon = FlagTriangleRight; +exports.Flame = Flame; +exports.FlameIcon = Flame; +exports.FlameKindling = FlameKindling; +exports.FlameKindlingIcon = FlameKindling; +exports.Flashlight = Flashlight; +exports.FlashlightIcon = Flashlight; +exports.FlashlightOff = FlashlightOff; +exports.FlashlightOffIcon = FlashlightOff; +exports.FlaskConical = FlaskConical; +exports.FlaskConicalIcon = FlaskConical; +exports.FlaskConicalOff = FlaskConicalOff; +exports.FlaskConicalOffIcon = FlaskConicalOff; +exports.FlaskRound = FlaskRound; +exports.FlaskRoundIcon = FlaskRound; +exports.FlipHorizontal = FlipHorizontal; +exports.FlipHorizontal2 = FlipHorizontal2; +exports.FlipHorizontal2Icon = FlipHorizontal2; +exports.FlipHorizontalIcon = FlipHorizontal; +exports.FlipVertical = FlipVertical; +exports.FlipVertical2 = FlipVertical2; +exports.FlipVertical2Icon = FlipVertical2; +exports.FlipVerticalIcon = FlipVertical; +exports.Flower = Flower; +exports.Flower2 = Flower2; +exports.Flower2Icon = Flower2; +exports.FlowerIcon = Flower; +exports.Focus = Focus; +exports.FocusIcon = Focus; +exports.FoldHorizontal = FoldHorizontal; +exports.FoldHorizontalIcon = FoldHorizontal; +exports.FoldVertical = FoldVertical; +exports.FoldVerticalIcon = FoldVertical; +exports.Folder = Folder; +exports.FolderArchive = FolderArchive; +exports.FolderArchiveIcon = FolderArchive; +exports.FolderCheck = FolderCheck; +exports.FolderCheckIcon = FolderCheck; +exports.FolderClock = FolderClock; +exports.FolderClockIcon = FolderClock; +exports.FolderClosed = FolderClosed; +exports.FolderClosedIcon = FolderClosed; +exports.FolderCode = FolderCode; +exports.FolderCodeIcon = FolderCode; +exports.FolderCog = FolderCog; +exports.FolderCog2 = FolderCog; +exports.FolderCog2Icon = FolderCog; +exports.FolderCogIcon = FolderCog; +exports.FolderDot = FolderDot; +exports.FolderDotIcon = FolderDot; +exports.FolderDown = FolderDown; +exports.FolderDownIcon = FolderDown; +exports.FolderEdit = FolderPen; +exports.FolderEditIcon = FolderPen; +exports.FolderGit = FolderGit; +exports.FolderGit2 = FolderGit2; +exports.FolderGit2Icon = FolderGit2; +exports.FolderGitIcon = FolderGit; +exports.FolderHeart = FolderHeart; +exports.FolderHeartIcon = FolderHeart; +exports.FolderIcon = Folder; +exports.FolderInput = FolderInput; +exports.FolderInputIcon = FolderInput; +exports.FolderKanban = FolderKanban; +exports.FolderKanbanIcon = FolderKanban; +exports.FolderKey = FolderKey; +exports.FolderKeyIcon = FolderKey; +exports.FolderLock = FolderLock; +exports.FolderLockIcon = FolderLock; +exports.FolderMinus = FolderMinus; +exports.FolderMinusIcon = FolderMinus; +exports.FolderOpen = FolderOpen; +exports.FolderOpenDot = FolderOpenDot; +exports.FolderOpenDotIcon = FolderOpenDot; +exports.FolderOpenIcon = FolderOpen; +exports.FolderOutput = FolderOutput; +exports.FolderOutputIcon = FolderOutput; +exports.FolderPen = FolderPen; +exports.FolderPenIcon = FolderPen; +exports.FolderPlus = FolderPlus; +exports.FolderPlusIcon = FolderPlus; +exports.FolderRoot = FolderRoot; +exports.FolderRootIcon = FolderRoot; +exports.FolderSearch = FolderSearch; +exports.FolderSearch2 = FolderSearch2; +exports.FolderSearch2Icon = FolderSearch2; +exports.FolderSearchIcon = FolderSearch; +exports.FolderSymlink = FolderSymlink; +exports.FolderSymlinkIcon = FolderSymlink; +exports.FolderSync = FolderSync; +exports.FolderSyncIcon = FolderSync; +exports.FolderTree = FolderTree; +exports.FolderTreeIcon = FolderTree; +exports.FolderUp = FolderUp; +exports.FolderUpIcon = FolderUp; +exports.FolderX = FolderX; +exports.FolderXIcon = FolderX; +exports.Folders = Folders; +exports.FoldersIcon = Folders; +exports.Footprints = Footprints; +exports.FootprintsIcon = Footprints; +exports.ForkKnife = Utensils; +exports.ForkKnifeCrossed = UtensilsCrossed; +exports.ForkKnifeCrossedIcon = UtensilsCrossed; +exports.ForkKnifeIcon = Utensils; +exports.Forklift = Forklift; +exports.ForkliftIcon = Forklift; +exports.FormInput = RectangleEllipsis; +exports.FormInputIcon = RectangleEllipsis; +exports.Forward = Forward; +exports.ForwardIcon = Forward; +exports.Frame = Frame; +exports.FrameIcon = Frame; +exports.Framer = Framer; +exports.FramerIcon = Framer; +exports.Frown = Frown; +exports.FrownIcon = Frown; +exports.Fuel = Fuel; +exports.FuelIcon = Fuel; +exports.Fullscreen = Fullscreen; +exports.FullscreenIcon = Fullscreen; +exports.FunctionSquare = SquareFunction; +exports.FunctionSquareIcon = SquareFunction; +exports.GalleryHorizontal = GalleryHorizontal; +exports.GalleryHorizontalEnd = GalleryHorizontalEnd; +exports.GalleryHorizontalEndIcon = GalleryHorizontalEnd; +exports.GalleryHorizontalIcon = GalleryHorizontal; +exports.GalleryThumbnails = GalleryThumbnails; +exports.GalleryThumbnailsIcon = GalleryThumbnails; +exports.GalleryVertical = GalleryVertical; +exports.GalleryVerticalEnd = GalleryVerticalEnd; +exports.GalleryVerticalEndIcon = GalleryVerticalEnd; +exports.GalleryVerticalIcon = GalleryVertical; +exports.Gamepad = Gamepad; +exports.Gamepad2 = Gamepad2; +exports.Gamepad2Icon = Gamepad2; +exports.GamepadIcon = Gamepad; +exports.GanttChart = ChartNoAxesGantt; +exports.GanttChartIcon = ChartNoAxesGantt; +exports.GanttChartSquare = SquareChartGantt; +exports.GanttChartSquareIcon = SquareChartGantt; +exports.Gauge = Gauge; +exports.GaugeCircle = CircleGauge; +exports.GaugeCircleIcon = CircleGauge; +exports.GaugeIcon = Gauge; +exports.Gavel = Gavel; +exports.GavelIcon = Gavel; +exports.Gem = Gem; +exports.GemIcon = Gem; +exports.Ghost = Ghost; +exports.GhostIcon = Ghost; +exports.Gift = Gift; +exports.GiftIcon = Gift; +exports.GitBranch = GitBranch; +exports.GitBranchIcon = GitBranch; +exports.GitBranchPlus = GitBranchPlus; +exports.GitBranchPlusIcon = GitBranchPlus; +exports.GitCommit = GitCommitHorizontal; +exports.GitCommitHorizontal = GitCommitHorizontal; +exports.GitCommitHorizontalIcon = GitCommitHorizontal; +exports.GitCommitIcon = GitCommitHorizontal; +exports.GitCommitVertical = GitCommitVertical; +exports.GitCommitVerticalIcon = GitCommitVertical; +exports.GitCompare = GitCompare; +exports.GitCompareArrows = GitCompareArrows; +exports.GitCompareArrowsIcon = GitCompareArrows; +exports.GitCompareIcon = GitCompare; +exports.GitFork = GitFork; +exports.GitForkIcon = GitFork; +exports.GitGraph = GitGraph; +exports.GitGraphIcon = GitGraph; +exports.GitMerge = GitMerge; +exports.GitMergeIcon = GitMerge; +exports.GitPullRequest = GitPullRequest; +exports.GitPullRequestArrow = GitPullRequestArrow; +exports.GitPullRequestArrowIcon = GitPullRequestArrow; +exports.GitPullRequestClosed = GitPullRequestClosed; +exports.GitPullRequestClosedIcon = GitPullRequestClosed; +exports.GitPullRequestCreate = GitPullRequestCreate; +exports.GitPullRequestCreateArrow = GitPullRequestCreateArrow; +exports.GitPullRequestCreateArrowIcon = GitPullRequestCreateArrow; +exports.GitPullRequestCreateIcon = GitPullRequestCreate; +exports.GitPullRequestDraft = GitPullRequestDraft; +exports.GitPullRequestDraftIcon = GitPullRequestDraft; +exports.GitPullRequestIcon = GitPullRequest; +exports.Github = Github; +exports.GithubIcon = Github; +exports.Gitlab = Gitlab; +exports.GitlabIcon = Gitlab; +exports.GlassWater = GlassWater; +exports.GlassWaterIcon = GlassWater; +exports.Glasses = Glasses; +exports.GlassesIcon = Glasses; +exports.Globe = Globe; +exports.Globe2 = Earth; +exports.Globe2Icon = Earth; +exports.GlobeIcon = Globe; +exports.GlobeLock = GlobeLock; +exports.GlobeLockIcon = GlobeLock; +exports.Goal = Goal; +exports.GoalIcon = Goal; +exports.Grab = Grab; +exports.GrabIcon = Grab; +exports.GraduationCap = GraduationCap; +exports.GraduationCapIcon = GraduationCap; +exports.Grape = Grape; +exports.GrapeIcon = Grape; +exports.Grid = Grid3x3; +exports.Grid2X2 = Grid2x2; +exports.Grid2X2Check = Grid2x2Check; +exports.Grid2X2CheckIcon = Grid2x2Check; +exports.Grid2X2Icon = Grid2x2; +exports.Grid2X2Plus = Grid2x2Plus; +exports.Grid2X2PlusIcon = Grid2x2Plus; +exports.Grid2X2X = Grid2x2X; +exports.Grid2X2XIcon = Grid2x2X; +exports.Grid2x2 = Grid2x2; +exports.Grid2x2Check = Grid2x2Check; +exports.Grid2x2CheckIcon = Grid2x2Check; +exports.Grid2x2Icon = Grid2x2; +exports.Grid2x2Plus = Grid2x2Plus; +exports.Grid2x2PlusIcon = Grid2x2Plus; +exports.Grid2x2X = Grid2x2X; +exports.Grid2x2XIcon = Grid2x2X; +exports.Grid3X3 = Grid3x3; +exports.Grid3X3Icon = Grid3x3; +exports.Grid3x3 = Grid3x3; +exports.Grid3x3Icon = Grid3x3; +exports.GridIcon = Grid3x3; +exports.Grip = Grip; +exports.GripHorizontal = GripHorizontal; +exports.GripHorizontalIcon = GripHorizontal; +exports.GripIcon = Grip; +exports.GripVertical = GripVertical; +exports.GripVerticalIcon = GripVertical; +exports.Group = Group; +exports.GroupIcon = Group; +exports.Guitar = Guitar; +exports.GuitarIcon = Guitar; +exports.Ham = Ham; +exports.HamIcon = Ham; +exports.Hammer = Hammer; +exports.HammerIcon = Hammer; +exports.Hand = Hand; +exports.HandCoins = HandCoins; +exports.HandCoinsIcon = HandCoins; +exports.HandHeart = HandHeart; +exports.HandHeartIcon = HandHeart; +exports.HandHelping = HandHelping; +exports.HandHelpingIcon = HandHelping; +exports.HandIcon = Hand; +exports.HandMetal = HandMetal; +exports.HandMetalIcon = HandMetal; +exports.HandPlatter = HandPlatter; +exports.HandPlatterIcon = HandPlatter; +exports.Handshake = Handshake; +exports.HandshakeIcon = Handshake; +exports.HardDrive = HardDrive; +exports.HardDriveDownload = HardDriveDownload; +exports.HardDriveDownloadIcon = HardDriveDownload; +exports.HardDriveIcon = HardDrive; +exports.HardDriveUpload = HardDriveUpload; +exports.HardDriveUploadIcon = HardDriveUpload; +exports.HardHat = HardHat; +exports.HardHatIcon = HardHat; +exports.Hash = Hash; +exports.HashIcon = Hash; +exports.Haze = Haze; +exports.HazeIcon = Haze; +exports.HdmiPort = HdmiPort; +exports.HdmiPortIcon = HdmiPort; +exports.Heading = Heading; +exports.Heading1 = Heading1; +exports.Heading1Icon = Heading1; +exports.Heading2 = Heading2; +exports.Heading2Icon = Heading2; +exports.Heading3 = Heading3; +exports.Heading3Icon = Heading3; +exports.Heading4 = Heading4; +exports.Heading4Icon = Heading4; +exports.Heading5 = Heading5; +exports.Heading5Icon = Heading5; +exports.Heading6 = Heading6; +exports.Heading6Icon = Heading6; +exports.HeadingIcon = Heading; +exports.HeadphoneOff = HeadphoneOff; +exports.HeadphoneOffIcon = HeadphoneOff; +exports.Headphones = Headphones; +exports.HeadphonesIcon = Headphones; +exports.Headset = Headset; +exports.HeadsetIcon = Headset; +exports.Heart = Heart; +exports.HeartCrack = HeartCrack; +exports.HeartCrackIcon = HeartCrack; +exports.HeartHandshake = HeartHandshake; +exports.HeartHandshakeIcon = HeartHandshake; +exports.HeartIcon = Heart; +exports.HeartOff = HeartOff; +exports.HeartOffIcon = HeartOff; +exports.HeartPulse = HeartPulse; +exports.HeartPulseIcon = HeartPulse; +exports.Heater = Heater; +exports.HeaterIcon = Heater; +exports.HelpCircle = CircleHelp; +exports.HelpCircleIcon = CircleHelp; +exports.HelpingHand = HandHelping; +exports.HelpingHandIcon = HandHelping; +exports.Hexagon = Hexagon; +exports.HexagonIcon = Hexagon; +exports.Highlighter = Highlighter; +exports.HighlighterIcon = Highlighter; +exports.History = History; +exports.HistoryIcon = History; +exports.Home = House; +exports.HomeIcon = House; +exports.Hop = Hop; +exports.HopIcon = Hop; +exports.HopOff = HopOff; +exports.HopOffIcon = HopOff; +exports.Hospital = Hospital; +exports.HospitalIcon = Hospital; +exports.Hotel = Hotel; +exports.HotelIcon = Hotel; +exports.Hourglass = Hourglass; +exports.HourglassIcon = Hourglass; +exports.House = House; +exports.HouseIcon = House; +exports.HousePlug = HousePlug; +exports.HousePlugIcon = HousePlug; +exports.HousePlus = HousePlus; +exports.HousePlusIcon = HousePlus; +exports.HouseWifi = HouseWifi; +exports.HouseWifiIcon = HouseWifi; +exports.IceCream = IceCreamCone; +exports.IceCream2 = IceCreamBowl; +exports.IceCream2Icon = IceCreamBowl; +exports.IceCreamBowl = IceCreamBowl; +exports.IceCreamBowlIcon = IceCreamBowl; +exports.IceCreamCone = IceCreamCone; +exports.IceCreamConeIcon = IceCreamCone; +exports.IceCreamIcon = IceCreamCone; +exports.Icon = Icon; +exports.IdCard = IdCard; +exports.IdCardIcon = IdCard; +exports.Image = Image; +exports.ImageDown = ImageDown; +exports.ImageDownIcon = ImageDown; +exports.ImageIcon = Image; +exports.ImageMinus = ImageMinus; +exports.ImageMinusIcon = ImageMinus; +exports.ImageOff = ImageOff; +exports.ImageOffIcon = ImageOff; +exports.ImagePlay = ImagePlay; +exports.ImagePlayIcon = ImagePlay; +exports.ImagePlus = ImagePlus; +exports.ImagePlusIcon = ImagePlus; +exports.ImageUp = ImageUp; +exports.ImageUpIcon = ImageUp; +exports.ImageUpscale = ImageUpscale; +exports.ImageUpscaleIcon = ImageUpscale; +exports.Images = Images; +exports.ImagesIcon = Images; +exports.Import = Import; +exports.ImportIcon = Import; +exports.Inbox = Inbox; +exports.InboxIcon = Inbox; +exports.Indent = IndentIncrease; +exports.IndentDecrease = IndentDecrease; +exports.IndentDecreaseIcon = IndentDecrease; +exports.IndentIcon = IndentIncrease; +exports.IndentIncrease = IndentIncrease; +exports.IndentIncreaseIcon = IndentIncrease; +exports.IndianRupee = IndianRupee; +exports.IndianRupeeIcon = IndianRupee; +exports.Infinity = Infinity; +exports.InfinityIcon = Infinity; +exports.Info = Info; +exports.InfoIcon = Info; +exports.Inspect = SquareMousePointer; +exports.InspectIcon = SquareMousePointer; +exports.InspectionPanel = InspectionPanel; +exports.InspectionPanelIcon = InspectionPanel; +exports.Instagram = Instagram; +exports.InstagramIcon = Instagram; +exports.Italic = Italic; +exports.ItalicIcon = Italic; +exports.IterationCcw = IterationCcw; +exports.IterationCcwIcon = IterationCcw; +exports.IterationCw = IterationCw; +exports.IterationCwIcon = IterationCw; +exports.JapaneseYen = JapaneseYen; +exports.JapaneseYenIcon = JapaneseYen; +exports.Joystick = Joystick; +exports.JoystickIcon = Joystick; +exports.Kanban = Kanban; +exports.KanbanIcon = Kanban; +exports.KanbanSquare = SquareKanban; +exports.KanbanSquareDashed = SquareDashedKanban; +exports.KanbanSquareDashedIcon = SquareDashedKanban; +exports.KanbanSquareIcon = SquareKanban; +exports.Key = Key; +exports.KeyIcon = Key; +exports.KeyRound = KeyRound; +exports.KeyRoundIcon = KeyRound; +exports.KeySquare = KeySquare; +exports.KeySquareIcon = KeySquare; +exports.Keyboard = Keyboard; +exports.KeyboardIcon = Keyboard; +exports.KeyboardMusic = KeyboardMusic; +exports.KeyboardMusicIcon = KeyboardMusic; +exports.KeyboardOff = KeyboardOff; +exports.KeyboardOffIcon = KeyboardOff; +exports.Lamp = Lamp; +exports.LampCeiling = LampCeiling; +exports.LampCeilingIcon = LampCeiling; +exports.LampDesk = LampDesk; +exports.LampDeskIcon = LampDesk; +exports.LampFloor = LampFloor; +exports.LampFloorIcon = LampFloor; +exports.LampIcon = Lamp; +exports.LampWallDown = LampWallDown; +exports.LampWallDownIcon = LampWallDown; +exports.LampWallUp = LampWallUp; +exports.LampWallUpIcon = LampWallUp; +exports.LandPlot = LandPlot; +exports.LandPlotIcon = LandPlot; +exports.Landmark = Landmark; +exports.LandmarkIcon = Landmark; +exports.Languages = Languages; +exports.LanguagesIcon = Languages; +exports.Laptop = Laptop; +exports.Laptop2 = LaptopMinimal; +exports.Laptop2Icon = LaptopMinimal; +exports.LaptopIcon = Laptop; +exports.LaptopMinimal = LaptopMinimal; +exports.LaptopMinimalCheck = LaptopMinimalCheck; +exports.LaptopMinimalCheckIcon = LaptopMinimalCheck; +exports.LaptopMinimalIcon = LaptopMinimal; +exports.Lasso = Lasso; +exports.LassoIcon = Lasso; +exports.LassoSelect = LassoSelect; +exports.LassoSelectIcon = LassoSelect; +exports.Laugh = Laugh; +exports.LaughIcon = Laugh; +exports.Layers = Layers; +exports.Layers2 = Layers2; +exports.Layers2Icon = Layers2; +exports.Layers3 = Layers; +exports.Layers3Icon = Layers; +exports.LayersIcon = Layers; +exports.Layout = PanelsTopLeft; +exports.LayoutDashboard = LayoutDashboard; +exports.LayoutDashboardIcon = LayoutDashboard; +exports.LayoutGrid = LayoutGrid; +exports.LayoutGridIcon = LayoutGrid; +exports.LayoutIcon = PanelsTopLeft; +exports.LayoutList = LayoutList; +exports.LayoutListIcon = LayoutList; +exports.LayoutPanelLeft = LayoutPanelLeft; +exports.LayoutPanelLeftIcon = LayoutPanelLeft; +exports.LayoutPanelTop = LayoutPanelTop; +exports.LayoutPanelTopIcon = LayoutPanelTop; +exports.LayoutTemplate = LayoutTemplate; +exports.LayoutTemplateIcon = LayoutTemplate; +exports.Leaf = Leaf; +exports.LeafIcon = Leaf; +exports.LeafyGreen = LeafyGreen; +exports.LeafyGreenIcon = LeafyGreen; +exports.Lectern = Lectern; +exports.LecternIcon = Lectern; +exports.LetterText = LetterText; +exports.LetterTextIcon = LetterText; +exports.Library = Library; +exports.LibraryBig = LibraryBig; +exports.LibraryBigIcon = LibraryBig; +exports.LibraryIcon = Library; +exports.LibrarySquare = SquareLibrary; +exports.LibrarySquareIcon = SquareLibrary; +exports.LifeBuoy = LifeBuoy; +exports.LifeBuoyIcon = LifeBuoy; +exports.Ligature = Ligature; +exports.LigatureIcon = Ligature; +exports.Lightbulb = Lightbulb; +exports.LightbulbIcon = Lightbulb; +exports.LightbulbOff = LightbulbOff; +exports.LightbulbOffIcon = LightbulbOff; +exports.LineChart = ChartLine; +exports.LineChartIcon = ChartLine; +exports.Link = Link; +exports.Link2 = Link2; +exports.Link2Icon = Link2; +exports.Link2Off = Link2Off; +exports.Link2OffIcon = Link2Off; +exports.LinkIcon = Link; +exports.Linkedin = Linkedin; +exports.LinkedinIcon = Linkedin; +exports.List = List; +exports.ListCheck = ListCheck; +exports.ListCheckIcon = ListCheck; +exports.ListChecks = ListChecks; +exports.ListChecksIcon = ListChecks; +exports.ListCollapse = ListCollapse; +exports.ListCollapseIcon = ListCollapse; +exports.ListEnd = ListEnd; +exports.ListEndIcon = ListEnd; +exports.ListFilter = ListFilter; +exports.ListFilterIcon = ListFilter; +exports.ListFilterPlus = ListFilterPlus; +exports.ListFilterPlusIcon = ListFilterPlus; +exports.ListIcon = List; +exports.ListMinus = ListMinus; +exports.ListMinusIcon = ListMinus; +exports.ListMusic = ListMusic; +exports.ListMusicIcon = ListMusic; +exports.ListOrdered = ListOrdered; +exports.ListOrderedIcon = ListOrdered; +exports.ListPlus = ListPlus; +exports.ListPlusIcon = ListPlus; +exports.ListRestart = ListRestart; +exports.ListRestartIcon = ListRestart; +exports.ListStart = ListStart; +exports.ListStartIcon = ListStart; +exports.ListTodo = ListTodo; +exports.ListTodoIcon = ListTodo; +exports.ListTree = ListTree; +exports.ListTreeIcon = ListTree; +exports.ListVideo = ListVideo; +exports.ListVideoIcon = ListVideo; +exports.ListX = ListX; +exports.ListXIcon = ListX; +exports.Loader = Loader; +exports.Loader2 = LoaderCircle; +exports.Loader2Icon = LoaderCircle; +exports.LoaderCircle = LoaderCircle; +exports.LoaderCircleIcon = LoaderCircle; +exports.LoaderIcon = Loader; +exports.LoaderPinwheel = LoaderPinwheel; +exports.LoaderPinwheelIcon = LoaderPinwheel; +exports.Locate = Locate; +exports.LocateFixed = LocateFixed; +exports.LocateFixedIcon = LocateFixed; +exports.LocateIcon = Locate; +exports.LocateOff = LocateOff; +exports.LocateOffIcon = LocateOff; +exports.Lock = Lock; +exports.LockIcon = Lock; +exports.LockKeyhole = LockKeyhole; +exports.LockKeyholeIcon = LockKeyhole; +exports.LockKeyholeOpen = LockKeyholeOpen; +exports.LockKeyholeOpenIcon = LockKeyholeOpen; +exports.LockOpen = LockOpen; +exports.LockOpenIcon = LockOpen; +exports.LogIn = LogIn; +exports.LogInIcon = LogIn; +exports.LogOut = LogOut; +exports.LogOutIcon = LogOut; +exports.Logs = Logs; +exports.LogsIcon = Logs; +exports.Lollipop = Lollipop; +exports.LollipopIcon = Lollipop; +exports.LucideAArrowDown = AArrowDown; +exports.LucideAArrowUp = AArrowUp; +exports.LucideALargeSmall = ALargeSmall; +exports.LucideAccessibility = Accessibility; +exports.LucideActivity = Activity; +exports.LucideActivitySquare = SquareActivity; +exports.LucideAirVent = AirVent; +exports.LucideAirplay = Airplay; +exports.LucideAlarmCheck = AlarmClockCheck; +exports.LucideAlarmClock = AlarmClock; +exports.LucideAlarmClockCheck = AlarmClockCheck; +exports.LucideAlarmClockMinus = AlarmClockMinus; +exports.LucideAlarmClockOff = AlarmClockOff; +exports.LucideAlarmClockPlus = AlarmClockPlus; +exports.LucideAlarmMinus = AlarmClockMinus; +exports.LucideAlarmPlus = AlarmClockPlus; +exports.LucideAlarmSmoke = AlarmSmoke; +exports.LucideAlbum = Album; +exports.LucideAlertCircle = CircleAlert; +exports.LucideAlertOctagon = OctagonAlert; +exports.LucideAlertTriangle = TriangleAlert; +exports.LucideAlignCenter = AlignCenter; +exports.LucideAlignCenterHorizontal = AlignCenterHorizontal; +exports.LucideAlignCenterVertical = AlignCenterVertical; +exports.LucideAlignEndHorizontal = AlignEndHorizontal; +exports.LucideAlignEndVertical = AlignEndVertical; +exports.LucideAlignHorizontalDistributeCenter = AlignHorizontalDistributeCenter; +exports.LucideAlignHorizontalDistributeEnd = AlignHorizontalDistributeEnd; +exports.LucideAlignHorizontalDistributeStart = AlignHorizontalDistributeStart; +exports.LucideAlignHorizontalJustifyCenter = AlignHorizontalJustifyCenter; +exports.LucideAlignHorizontalJustifyEnd = AlignHorizontalJustifyEnd; +exports.LucideAlignHorizontalJustifyStart = AlignHorizontalJustifyStart; +exports.LucideAlignHorizontalSpaceAround = AlignHorizontalSpaceAround; +exports.LucideAlignHorizontalSpaceBetween = AlignHorizontalSpaceBetween; +exports.LucideAlignJustify = AlignJustify; +exports.LucideAlignLeft = AlignLeft; +exports.LucideAlignRight = AlignRight; +exports.LucideAlignStartHorizontal = AlignStartHorizontal; +exports.LucideAlignStartVertical = AlignStartVertical; +exports.LucideAlignVerticalDistributeCenter = AlignVerticalDistributeCenter; +exports.LucideAlignVerticalDistributeEnd = AlignVerticalDistributeEnd; +exports.LucideAlignVerticalDistributeStart = AlignVerticalDistributeStart; +exports.LucideAlignVerticalJustifyCenter = AlignVerticalJustifyCenter; +exports.LucideAlignVerticalJustifyEnd = AlignVerticalJustifyEnd; +exports.LucideAlignVerticalJustifyStart = AlignVerticalJustifyStart; +exports.LucideAlignVerticalSpaceAround = AlignVerticalSpaceAround; +exports.LucideAlignVerticalSpaceBetween = AlignVerticalSpaceBetween; +exports.LucideAmbulance = Ambulance; +exports.LucideAmpersand = Ampersand; +exports.LucideAmpersands = Ampersands; +exports.LucideAmphora = Amphora; +exports.LucideAnchor = Anchor; +exports.LucideAngry = Angry; +exports.LucideAnnoyed = Annoyed; +exports.LucideAntenna = Antenna; +exports.LucideAnvil = Anvil; +exports.LucideAperture = Aperture; +exports.LucideAppWindow = AppWindow; +exports.LucideAppWindowMac = AppWindowMac; +exports.LucideApple = Apple; +exports.LucideArchive = Archive; +exports.LucideArchiveRestore = ArchiveRestore; +exports.LucideArchiveX = ArchiveX; +exports.LucideAreaChart = ChartArea; +exports.LucideArmchair = Armchair; +exports.LucideArrowBigDown = ArrowBigDown; +exports.LucideArrowBigDownDash = ArrowBigDownDash; +exports.LucideArrowBigLeft = ArrowBigLeft; +exports.LucideArrowBigLeftDash = ArrowBigLeftDash; +exports.LucideArrowBigRight = ArrowBigRight; +exports.LucideArrowBigRightDash = ArrowBigRightDash; +exports.LucideArrowBigUp = ArrowBigUp; +exports.LucideArrowBigUpDash = ArrowBigUpDash; +exports.LucideArrowDown = ArrowDown; +exports.LucideArrowDown01 = ArrowDown01; +exports.LucideArrowDown10 = ArrowDown10; +exports.LucideArrowDownAZ = ArrowDownAZ; +exports.LucideArrowDownAz = ArrowDownAZ; +exports.LucideArrowDownCircle = CircleArrowDown; +exports.LucideArrowDownFromLine = ArrowDownFromLine; +exports.LucideArrowDownLeft = ArrowDownLeft; +exports.LucideArrowDownLeftFromCircle = CircleArrowOutDownLeft; +exports.LucideArrowDownLeftFromSquare = SquareArrowOutDownLeft; +exports.LucideArrowDownLeftSquare = SquareArrowDownLeft; +exports.LucideArrowDownNarrowWide = ArrowDownNarrowWide; +exports.LucideArrowDownRight = ArrowDownRight; +exports.LucideArrowDownRightFromCircle = CircleArrowOutDownRight; +exports.LucideArrowDownRightFromSquare = SquareArrowOutDownRight; +exports.LucideArrowDownRightSquare = SquareArrowDownRight; +exports.LucideArrowDownSquare = SquareArrowDown; +exports.LucideArrowDownToDot = ArrowDownToDot; +exports.LucideArrowDownToLine = ArrowDownToLine; +exports.LucideArrowDownUp = ArrowDownUp; +exports.LucideArrowDownWideNarrow = ArrowDownWideNarrow; +exports.LucideArrowDownZA = ArrowDownZA; +exports.LucideArrowDownZa = ArrowDownZA; +exports.LucideArrowLeft = ArrowLeft; +exports.LucideArrowLeftCircle = CircleArrowLeft; +exports.LucideArrowLeftFromLine = ArrowLeftFromLine; +exports.LucideArrowLeftRight = ArrowLeftRight; +exports.LucideArrowLeftSquare = SquareArrowLeft; +exports.LucideArrowLeftToLine = ArrowLeftToLine; +exports.LucideArrowRight = ArrowRight; +exports.LucideArrowRightCircle = CircleArrowRight; +exports.LucideArrowRightFromLine = ArrowRightFromLine; +exports.LucideArrowRightLeft = ArrowRightLeft; +exports.LucideArrowRightSquare = SquareArrowRight; +exports.LucideArrowRightToLine = ArrowRightToLine; +exports.LucideArrowUp = ArrowUp; +exports.LucideArrowUp01 = ArrowUp01; +exports.LucideArrowUp10 = ArrowUp10; +exports.LucideArrowUpAZ = ArrowUpAZ; +exports.LucideArrowUpAz = ArrowUpAZ; +exports.LucideArrowUpCircle = CircleArrowUp; +exports.LucideArrowUpDown = ArrowUpDown; +exports.LucideArrowUpFromDot = ArrowUpFromDot; +exports.LucideArrowUpFromLine = ArrowUpFromLine; +exports.LucideArrowUpLeft = ArrowUpLeft; +exports.LucideArrowUpLeftFromCircle = CircleArrowOutUpLeft; +exports.LucideArrowUpLeftFromSquare = SquareArrowOutUpLeft; +exports.LucideArrowUpLeftSquare = SquareArrowUpLeft; +exports.LucideArrowUpNarrowWide = ArrowUpNarrowWide; +exports.LucideArrowUpRight = ArrowUpRight; +exports.LucideArrowUpRightFromCircle = CircleArrowOutUpRight; +exports.LucideArrowUpRightFromSquare = SquareArrowOutUpRight; +exports.LucideArrowUpRightSquare = SquareArrowUpRight; +exports.LucideArrowUpSquare = SquareArrowUp; +exports.LucideArrowUpToLine = ArrowUpToLine; +exports.LucideArrowUpWideNarrow = ArrowUpWideNarrow; +exports.LucideArrowUpZA = ArrowUpZA; +exports.LucideArrowUpZa = ArrowUpZA; +exports.LucideArrowsUpFromLine = ArrowsUpFromLine; +exports.LucideAsterisk = Asterisk; +exports.LucideAsteriskSquare = SquareAsterisk; +exports.LucideAtSign = AtSign; +exports.LucideAtom = Atom; +exports.LucideAudioLines = AudioLines; +exports.LucideAudioWaveform = AudioWaveform; +exports.LucideAward = Award; +exports.LucideAxe = Axe; +exports.LucideAxis3D = Axis3d; +exports.LucideAxis3d = Axis3d; +exports.LucideBaby = Baby; +exports.LucideBackpack = Backpack; +exports.LucideBadge = Badge; +exports.LucideBadgeAlert = BadgeAlert; +exports.LucideBadgeCent = BadgeCent; +exports.LucideBadgeCheck = BadgeCheck; +exports.LucideBadgeDollarSign = BadgeDollarSign; +exports.LucideBadgeEuro = BadgeEuro; +exports.LucideBadgeHelp = BadgeHelp; +exports.LucideBadgeIndianRupee = BadgeIndianRupee; +exports.LucideBadgeInfo = BadgeInfo; +exports.LucideBadgeJapaneseYen = BadgeJapaneseYen; +exports.LucideBadgeMinus = BadgeMinus; +exports.LucideBadgePercent = BadgePercent; +exports.LucideBadgePlus = BadgePlus; +exports.LucideBadgePoundSterling = BadgePoundSterling; +exports.LucideBadgeRussianRuble = BadgeRussianRuble; +exports.LucideBadgeSwissFranc = BadgeSwissFranc; +exports.LucideBadgeX = BadgeX; +exports.LucideBaggageClaim = BaggageClaim; +exports.LucideBan = Ban; +exports.LucideBanana = Banana; +exports.LucideBandage = Bandage; +exports.LucideBanknote = Banknote; +exports.LucideBarChart = ChartNoAxesColumnIncreasing; +exports.LucideBarChart2 = ChartNoAxesColumn; +exports.LucideBarChart3 = ChartColumn; +exports.LucideBarChart4 = ChartColumnIncreasing; +exports.LucideBarChartBig = ChartColumnBig; +exports.LucideBarChartHorizontal = ChartBar; +exports.LucideBarChartHorizontalBig = ChartBarBig; +exports.LucideBarcode = Barcode; +exports.LucideBaseline = Baseline; +exports.LucideBath = Bath; +exports.LucideBattery = Battery; +exports.LucideBatteryCharging = BatteryCharging; +exports.LucideBatteryFull = BatteryFull; +exports.LucideBatteryLow = BatteryLow; +exports.LucideBatteryMedium = BatteryMedium; +exports.LucideBatteryPlus = BatteryPlus; +exports.LucideBatteryWarning = BatteryWarning; +exports.LucideBeaker = Beaker; +exports.LucideBean = Bean; +exports.LucideBeanOff = BeanOff; +exports.LucideBed = Bed; +exports.LucideBedDouble = BedDouble; +exports.LucideBedSingle = BedSingle; +exports.LucideBeef = Beef; +exports.LucideBeer = Beer; +exports.LucideBeerOff = BeerOff; +exports.LucideBell = Bell; +exports.LucideBellDot = BellDot; +exports.LucideBellElectric = BellElectric; +exports.LucideBellMinus = BellMinus; +exports.LucideBellOff = BellOff; +exports.LucideBellPlus = BellPlus; +exports.LucideBellRing = BellRing; +exports.LucideBetweenHorizonalEnd = BetweenHorizontalEnd; +exports.LucideBetweenHorizonalStart = BetweenHorizontalStart; +exports.LucideBetweenHorizontalEnd = BetweenHorizontalEnd; +exports.LucideBetweenHorizontalStart = BetweenHorizontalStart; +exports.LucideBetweenVerticalEnd = BetweenVerticalEnd; +exports.LucideBetweenVerticalStart = BetweenVerticalStart; +exports.LucideBicepsFlexed = BicepsFlexed; +exports.LucideBike = Bike; +exports.LucideBinary = Binary; +exports.LucideBinoculars = Binoculars; +exports.LucideBiohazard = Biohazard; +exports.LucideBird = Bird; +exports.LucideBitcoin = Bitcoin; +exports.LucideBlend = Blend; +exports.LucideBlinds = Blinds; +exports.LucideBlocks = Blocks; +exports.LucideBluetooth = Bluetooth; +exports.LucideBluetoothConnected = BluetoothConnected; +exports.LucideBluetoothOff = BluetoothOff; +exports.LucideBluetoothSearching = BluetoothSearching; +exports.LucideBold = Bold; +exports.LucideBolt = Bolt; +exports.LucideBomb = Bomb; +exports.LucideBone = Bone; +exports.LucideBook = Book; +exports.LucideBookA = BookA; +exports.LucideBookAudio = BookAudio; +exports.LucideBookCheck = BookCheck; +exports.LucideBookCopy = BookCopy; +exports.LucideBookDashed = BookDashed; +exports.LucideBookDown = BookDown; +exports.LucideBookHeadphones = BookHeadphones; +exports.LucideBookHeart = BookHeart; +exports.LucideBookImage = BookImage; +exports.LucideBookKey = BookKey; +exports.LucideBookLock = BookLock; +exports.LucideBookMarked = BookMarked; +exports.LucideBookMinus = BookMinus; +exports.LucideBookOpen = BookOpen; +exports.LucideBookOpenCheck = BookOpenCheck; +exports.LucideBookOpenText = BookOpenText; +exports.LucideBookPlus = BookPlus; +exports.LucideBookTemplate = BookDashed; +exports.LucideBookText = BookText; +exports.LucideBookType = BookType; +exports.LucideBookUp = BookUp; +exports.LucideBookUp2 = BookUp2; +exports.LucideBookUser = BookUser; +exports.LucideBookX = BookX; +exports.LucideBookmark = Bookmark; +exports.LucideBookmarkCheck = BookmarkCheck; +exports.LucideBookmarkMinus = BookmarkMinus; +exports.LucideBookmarkPlus = BookmarkPlus; +exports.LucideBookmarkX = BookmarkX; +exports.LucideBoomBox = BoomBox; +exports.LucideBot = Bot; +exports.LucideBotMessageSquare = BotMessageSquare; +exports.LucideBotOff = BotOff; +exports.LucideBox = Box; +exports.LucideBoxSelect = SquareDashed; +exports.LucideBoxes = Boxes; +exports.LucideBraces = Braces; +exports.LucideBrackets = Brackets; +exports.LucideBrain = Brain; +exports.LucideBrainCircuit = BrainCircuit; +exports.LucideBrainCog = BrainCog; +exports.LucideBrickWall = BrickWall; +exports.LucideBriefcase = Briefcase; +exports.LucideBriefcaseBusiness = BriefcaseBusiness; +exports.LucideBriefcaseConveyorBelt = BriefcaseConveyorBelt; +exports.LucideBriefcaseMedical = BriefcaseMedical; +exports.LucideBringToFront = BringToFront; +exports.LucideBrush = Brush; +exports.LucideBug = Bug; +exports.LucideBugOff = BugOff; +exports.LucideBugPlay = BugPlay; +exports.LucideBuilding = Building; +exports.LucideBuilding2 = Building2; +exports.LucideBus = Bus; +exports.LucideBusFront = BusFront; +exports.LucideCable = Cable; +exports.LucideCableCar = CableCar; +exports.LucideCake = Cake; +exports.LucideCakeSlice = CakeSlice; +exports.LucideCalculator = Calculator; +exports.LucideCalendar = Calendar; +exports.LucideCalendar1 = Calendar1; +exports.LucideCalendarArrowDown = CalendarArrowDown; +exports.LucideCalendarArrowUp = CalendarArrowUp; +exports.LucideCalendarCheck = CalendarCheck; +exports.LucideCalendarCheck2 = CalendarCheck2; +exports.LucideCalendarClock = CalendarClock; +exports.LucideCalendarCog = CalendarCog; +exports.LucideCalendarDays = CalendarDays; +exports.LucideCalendarFold = CalendarFold; +exports.LucideCalendarHeart = CalendarHeart; +exports.LucideCalendarMinus = CalendarMinus; +exports.LucideCalendarMinus2 = CalendarMinus2; +exports.LucideCalendarOff = CalendarOff; +exports.LucideCalendarPlus = CalendarPlus; +exports.LucideCalendarPlus2 = CalendarPlus2; +exports.LucideCalendarRange = CalendarRange; +exports.LucideCalendarSearch = CalendarSearch; +exports.LucideCalendarSync = CalendarSync; +exports.LucideCalendarX = CalendarX; +exports.LucideCalendarX2 = CalendarX2; +exports.LucideCamera = Camera; +exports.LucideCameraOff = CameraOff; +exports.LucideCandlestickChart = ChartCandlestick; +exports.LucideCandy = Candy; +exports.LucideCandyCane = CandyCane; +exports.LucideCandyOff = CandyOff; +exports.LucideCannabis = Cannabis; +exports.LucideCaptions = Captions; +exports.LucideCaptionsOff = CaptionsOff; +exports.LucideCar = Car; +exports.LucideCarFront = CarFront; +exports.LucideCarTaxiFront = CarTaxiFront; +exports.LucideCaravan = Caravan; +exports.LucideCarrot = Carrot; +exports.LucideCaseLower = CaseLower; +exports.LucideCaseSensitive = CaseSensitive; +exports.LucideCaseUpper = CaseUpper; +exports.LucideCassetteTape = CassetteTape; +exports.LucideCast = Cast; +exports.LucideCastle = Castle; +exports.LucideCat = Cat; +exports.LucideCctv = Cctv; +exports.LucideChartArea = ChartArea; +exports.LucideChartBar = ChartBar; +exports.LucideChartBarBig = ChartBarBig; +exports.LucideChartBarDecreasing = ChartBarDecreasing; +exports.LucideChartBarIncreasing = ChartBarIncreasing; +exports.LucideChartBarStacked = ChartBarStacked; +exports.LucideChartCandlestick = ChartCandlestick; +exports.LucideChartColumn = ChartColumn; +exports.LucideChartColumnBig = ChartColumnBig; +exports.LucideChartColumnDecreasing = ChartColumnDecreasing; +exports.LucideChartColumnIncreasing = ChartColumnIncreasing; +exports.LucideChartColumnStacked = ChartColumnStacked; +exports.LucideChartGantt = ChartGantt; +exports.LucideChartLine = ChartLine; +exports.LucideChartNetwork = ChartNetwork; +exports.LucideChartNoAxesColumn = ChartNoAxesColumn; +exports.LucideChartNoAxesColumnDecreasing = ChartNoAxesColumnDecreasing; +exports.LucideChartNoAxesColumnIncreasing = ChartNoAxesColumnIncreasing; +exports.LucideChartNoAxesCombined = ChartNoAxesCombined; +exports.LucideChartNoAxesGantt = ChartNoAxesGantt; +exports.LucideChartPie = ChartPie; +exports.LucideChartScatter = ChartScatter; +exports.LucideChartSpline = ChartSpline; +exports.LucideCheck = Check; +exports.LucideCheckCheck = CheckCheck; +exports.LucideCheckCircle = CircleCheckBig; +exports.LucideCheckCircle2 = CircleCheck; +exports.LucideCheckSquare = SquareCheckBig; +exports.LucideCheckSquare2 = SquareCheck; +exports.LucideChefHat = ChefHat; +exports.LucideCherry = Cherry; +exports.LucideChevronDown = ChevronDown; +exports.LucideChevronDownCircle = CircleChevronDown; +exports.LucideChevronDownSquare = SquareChevronDown; +exports.LucideChevronFirst = ChevronFirst; +exports.LucideChevronLast = ChevronLast; +exports.LucideChevronLeft = ChevronLeft; +exports.LucideChevronLeftCircle = CircleChevronLeft; +exports.LucideChevronLeftSquare = SquareChevronLeft; +exports.LucideChevronRight = ChevronRight; +exports.LucideChevronRightCircle = CircleChevronRight; +exports.LucideChevronRightSquare = SquareChevronRight; +exports.LucideChevronUp = ChevronUp; +exports.LucideChevronUpCircle = CircleChevronUp; +exports.LucideChevronUpSquare = SquareChevronUp; +exports.LucideChevronsDown = ChevronsDown; +exports.LucideChevronsDownUp = ChevronsDownUp; +exports.LucideChevronsLeft = ChevronsLeft; +exports.LucideChevronsLeftRight = ChevronsLeftRight; +exports.LucideChevronsLeftRightEllipsis = ChevronsLeftRightEllipsis; +exports.LucideChevronsRight = ChevronsRight; +exports.LucideChevronsRightLeft = ChevronsRightLeft; +exports.LucideChevronsUp = ChevronsUp; +exports.LucideChevronsUpDown = ChevronsUpDown; +exports.LucideChrome = Chrome; +exports.LucideChurch = Church; +exports.LucideCigarette = Cigarette; +exports.LucideCigaretteOff = CigaretteOff; +exports.LucideCircle = Circle; +exports.LucideCircleAlert = CircleAlert; +exports.LucideCircleArrowDown = CircleArrowDown; +exports.LucideCircleArrowLeft = CircleArrowLeft; +exports.LucideCircleArrowOutDownLeft = CircleArrowOutDownLeft; +exports.LucideCircleArrowOutDownRight = CircleArrowOutDownRight; +exports.LucideCircleArrowOutUpLeft = CircleArrowOutUpLeft; +exports.LucideCircleArrowOutUpRight = CircleArrowOutUpRight; +exports.LucideCircleArrowRight = CircleArrowRight; +exports.LucideCircleArrowUp = CircleArrowUp; +exports.LucideCircleCheck = CircleCheck; +exports.LucideCircleCheckBig = CircleCheckBig; +exports.LucideCircleChevronDown = CircleChevronDown; +exports.LucideCircleChevronLeft = CircleChevronLeft; +exports.LucideCircleChevronRight = CircleChevronRight; +exports.LucideCircleChevronUp = CircleChevronUp; +exports.LucideCircleDashed = CircleDashed; +exports.LucideCircleDivide = CircleDivide; +exports.LucideCircleDollarSign = CircleDollarSign; +exports.LucideCircleDot = CircleDot; +exports.LucideCircleDotDashed = CircleDotDashed; +exports.LucideCircleEllipsis = CircleEllipsis; +exports.LucideCircleEqual = CircleEqual; +exports.LucideCircleFadingArrowUp = CircleFadingArrowUp; +exports.LucideCircleFadingPlus = CircleFadingPlus; +exports.LucideCircleGauge = CircleGauge; +exports.LucideCircleHelp = CircleHelp; +exports.LucideCircleMinus = CircleMinus; +exports.LucideCircleOff = CircleOff; +exports.LucideCircleParking = CircleParking; +exports.LucideCircleParkingOff = CircleParkingOff; +exports.LucideCirclePause = CirclePause; +exports.LucideCirclePercent = CirclePercent; +exports.LucideCirclePlay = CirclePlay; +exports.LucideCirclePlus = CirclePlus; +exports.LucideCirclePower = CirclePower; +exports.LucideCircleSlash = CircleSlash; +exports.LucideCircleSlash2 = CircleSlash2; +exports.LucideCircleSlashed = CircleSlash2; +exports.LucideCircleSmall = CircleSmall; +exports.LucideCircleStop = CircleStop; +exports.LucideCircleUser = CircleUser; +exports.LucideCircleUserRound = CircleUserRound; +exports.LucideCircleX = CircleX; +exports.LucideCircuitBoard = CircuitBoard; +exports.LucideCitrus = Citrus; +exports.LucideClapperboard = Clapperboard; +exports.LucideClipboard = Clipboard; +exports.LucideClipboardCheck = ClipboardCheck; +exports.LucideClipboardCopy = ClipboardCopy; +exports.LucideClipboardEdit = ClipboardPen; +exports.LucideClipboardList = ClipboardList; +exports.LucideClipboardMinus = ClipboardMinus; +exports.LucideClipboardPaste = ClipboardPaste; +exports.LucideClipboardPen = ClipboardPen; +exports.LucideClipboardPenLine = ClipboardPenLine; +exports.LucideClipboardPlus = ClipboardPlus; +exports.LucideClipboardSignature = ClipboardPenLine; +exports.LucideClipboardType = ClipboardType; +exports.LucideClipboardX = ClipboardX; +exports.LucideClock = Clock; +exports.LucideClock1 = Clock1; +exports.LucideClock10 = Clock10; +exports.LucideClock11 = Clock11; +exports.LucideClock12 = Clock12; +exports.LucideClock2 = Clock2; +exports.LucideClock3 = Clock3; +exports.LucideClock4 = Clock4; +exports.LucideClock5 = Clock5; +exports.LucideClock6 = Clock6; +exports.LucideClock7 = Clock7; +exports.LucideClock8 = Clock8; +exports.LucideClock9 = Clock9; +exports.LucideClockAlert = ClockAlert; +exports.LucideClockArrowDown = ClockArrowDown; +exports.LucideClockArrowUp = ClockArrowUp; +exports.LucideCloud = Cloud; +exports.LucideCloudAlert = CloudAlert; +exports.LucideCloudCog = CloudCog; +exports.LucideCloudDownload = CloudDownload; +exports.LucideCloudDrizzle = CloudDrizzle; +exports.LucideCloudFog = CloudFog; +exports.LucideCloudHail = CloudHail; +exports.LucideCloudLightning = CloudLightning; +exports.LucideCloudMoon = CloudMoon; +exports.LucideCloudMoonRain = CloudMoonRain; +exports.LucideCloudOff = CloudOff; +exports.LucideCloudRain = CloudRain; +exports.LucideCloudRainWind = CloudRainWind; +exports.LucideCloudSnow = CloudSnow; +exports.LucideCloudSun = CloudSun; +exports.LucideCloudSunRain = CloudSunRain; +exports.LucideCloudUpload = CloudUpload; +exports.LucideCloudy = Cloudy; +exports.LucideClover = Clover; +exports.LucideClub = Club; +exports.LucideCode = Code; +exports.LucideCode2 = CodeXml; +exports.LucideCodeSquare = SquareCode; +exports.LucideCodeXml = CodeXml; +exports.LucideCodepen = Codepen; +exports.LucideCodesandbox = Codesandbox; +exports.LucideCoffee = Coffee; +exports.LucideCog = Cog; +exports.LucideCoins = Coins; +exports.LucideColumns = Columns2; +exports.LucideColumns2 = Columns2; +exports.LucideColumns3 = Columns3; +exports.LucideColumns4 = Columns4; +exports.LucideCombine = Combine; +exports.LucideCommand = Command; +exports.LucideCompass = Compass; +exports.LucideComponent = Component; +exports.LucideComputer = Computer; +exports.LucideConciergeBell = ConciergeBell; +exports.LucideCone = Cone; +exports.LucideConstruction = Construction; +exports.LucideContact = Contact; +exports.LucideContact2 = ContactRound; +exports.LucideContactRound = ContactRound; +exports.LucideContainer = Container; +exports.LucideContrast = Contrast; +exports.LucideCookie = Cookie; +exports.LucideCookingPot = CookingPot; +exports.LucideCopy = Copy; +exports.LucideCopyCheck = CopyCheck; +exports.LucideCopyMinus = CopyMinus; +exports.LucideCopyPlus = CopyPlus; +exports.LucideCopySlash = CopySlash; +exports.LucideCopyX = CopyX; +exports.LucideCopyleft = Copyleft; +exports.LucideCopyright = Copyright; +exports.LucideCornerDownLeft = CornerDownLeft; +exports.LucideCornerDownRight = CornerDownRight; +exports.LucideCornerLeftDown = CornerLeftDown; +exports.LucideCornerLeftUp = CornerLeftUp; +exports.LucideCornerRightDown = CornerRightDown; +exports.LucideCornerRightUp = CornerRightUp; +exports.LucideCornerUpLeft = CornerUpLeft; +exports.LucideCornerUpRight = CornerUpRight; +exports.LucideCpu = Cpu; +exports.LucideCreativeCommons = CreativeCommons; +exports.LucideCreditCard = CreditCard; +exports.LucideCroissant = Croissant; +exports.LucideCrop = Crop; +exports.LucideCross = Cross; +exports.LucideCrosshair = Crosshair; +exports.LucideCrown = Crown; +exports.LucideCuboid = Cuboid; +exports.LucideCupSoda = CupSoda; +exports.LucideCurlyBraces = Braces; +exports.LucideCurrency = Currency; +exports.LucideCylinder = Cylinder; +exports.LucideDam = Dam; +exports.LucideDatabase = Database; +exports.LucideDatabaseBackup = DatabaseBackup; +exports.LucideDatabaseZap = DatabaseZap; +exports.LucideDelete = Delete; +exports.LucideDessert = Dessert; +exports.LucideDiameter = Diameter; +exports.LucideDiamond = Diamond; +exports.LucideDiamondMinus = DiamondMinus; +exports.LucideDiamondPercent = DiamondPercent; +exports.LucideDiamondPlus = DiamondPlus; +exports.LucideDice1 = Dice1; +exports.LucideDice2 = Dice2; +exports.LucideDice3 = Dice3; +exports.LucideDice4 = Dice4; +exports.LucideDice5 = Dice5; +exports.LucideDice6 = Dice6; +exports.LucideDices = Dices; +exports.LucideDiff = Diff; +exports.LucideDisc = Disc; +exports.LucideDisc2 = Disc2; +exports.LucideDisc3 = Disc3; +exports.LucideDiscAlbum = DiscAlbum; +exports.LucideDivide = Divide; +exports.LucideDivideCircle = CircleDivide; +exports.LucideDivideSquare = SquareDivide; +exports.LucideDna = Dna; +exports.LucideDnaOff = DnaOff; +exports.LucideDock = Dock; +exports.LucideDog = Dog; +exports.LucideDollarSign = DollarSign; +exports.LucideDonut = Donut; +exports.LucideDoorClosed = DoorClosed; +exports.LucideDoorOpen = DoorOpen; +exports.LucideDot = Dot; +exports.LucideDotSquare = SquareDot; +exports.LucideDownload = Download; +exports.LucideDownloadCloud = CloudDownload; +exports.LucideDraftingCompass = DraftingCompass; +exports.LucideDrama = Drama; +exports.LucideDribbble = Dribbble; +exports.LucideDrill = Drill; +exports.LucideDroplet = Droplet; +exports.LucideDropletOff = DropletOff; +exports.LucideDroplets = Droplets; +exports.LucideDrum = Drum; +exports.LucideDrumstick = Drumstick; +exports.LucideDumbbell = Dumbbell; +exports.LucideEar = Ear; +exports.LucideEarOff = EarOff; +exports.LucideEarth = Earth; +exports.LucideEarthLock = EarthLock; +exports.LucideEclipse = Eclipse; +exports.LucideEdit = SquarePen; +exports.LucideEdit2 = Pen; +exports.LucideEdit3 = PenLine; +exports.LucideEgg = Egg; +exports.LucideEggFried = EggFried; +exports.LucideEggOff = EggOff; +exports.LucideEllipsis = Ellipsis; +exports.LucideEllipsisVertical = EllipsisVertical; +exports.LucideEqual = Equal; +exports.LucideEqualApproximately = EqualApproximately; +exports.LucideEqualNot = EqualNot; +exports.LucideEqualSquare = SquareEqual; +exports.LucideEraser = Eraser; +exports.LucideEthernetPort = EthernetPort; +exports.LucideEuro = Euro; +exports.LucideExpand = Expand; +exports.LucideExternalLink = ExternalLink; +exports.LucideEye = Eye; +exports.LucideEyeClosed = EyeClosed; +exports.LucideEyeOff = EyeOff; +exports.LucideFacebook = Facebook; +exports.LucideFactory = Factory; +exports.LucideFan = Fan; +exports.LucideFastForward = FastForward; +exports.LucideFeather = Feather; +exports.LucideFence = Fence; +exports.LucideFerrisWheel = FerrisWheel; +exports.LucideFigma = Figma; +exports.LucideFile = File; +exports.LucideFileArchive = FileArchive; +exports.LucideFileAudio = FileAudio; +exports.LucideFileAudio2 = FileAudio2; +exports.LucideFileAxis3D = FileAxis3d; +exports.LucideFileAxis3d = FileAxis3d; +exports.LucideFileBadge = FileBadge; +exports.LucideFileBadge2 = FileBadge2; +exports.LucideFileBarChart = FileChartColumnIncreasing; +exports.LucideFileBarChart2 = FileChartColumn; +exports.LucideFileBox = FileBox; +exports.LucideFileChartColumn = FileChartColumn; +exports.LucideFileChartColumnIncreasing = FileChartColumnIncreasing; +exports.LucideFileChartLine = FileChartLine; +exports.LucideFileChartPie = FileChartPie; +exports.LucideFileCheck = FileCheck; +exports.LucideFileCheck2 = FileCheck2; +exports.LucideFileClock = FileClock; +exports.LucideFileCode = FileCode; +exports.LucideFileCode2 = FileCode2; +exports.LucideFileCog = FileCog; +exports.LucideFileCog2 = FileCog; +exports.LucideFileDiff = FileDiff; +exports.LucideFileDigit = FileDigit; +exports.LucideFileDown = FileDown; +exports.LucideFileEdit = FilePen; +exports.LucideFileHeart = FileHeart; +exports.LucideFileImage = FileImage; +exports.LucideFileInput = FileInput; +exports.LucideFileJson = FileJson; +exports.LucideFileJson2 = FileJson2; +exports.LucideFileKey = FileKey; +exports.LucideFileKey2 = FileKey2; +exports.LucideFileLineChart = FileChartLine; +exports.LucideFileLock = FileLock; +exports.LucideFileLock2 = FileLock2; +exports.LucideFileMinus = FileMinus; +exports.LucideFileMinus2 = FileMinus2; +exports.LucideFileMusic = FileMusic; +exports.LucideFileOutput = FileOutput; +exports.LucideFilePen = FilePen; +exports.LucideFilePenLine = FilePenLine; +exports.LucideFilePieChart = FileChartPie; +exports.LucideFilePlus = FilePlus; +exports.LucideFilePlus2 = FilePlus2; +exports.LucideFileQuestion = FileQuestion; +exports.LucideFileScan = FileScan; +exports.LucideFileSearch = FileSearch; +exports.LucideFileSearch2 = FileSearch2; +exports.LucideFileSignature = FilePenLine; +exports.LucideFileSliders = FileSliders; +exports.LucideFileSpreadsheet = FileSpreadsheet; +exports.LucideFileStack = FileStack; +exports.LucideFileSymlink = FileSymlink; +exports.LucideFileTerminal = FileTerminal; +exports.LucideFileText = FileText; +exports.LucideFileType = FileType; +exports.LucideFileType2 = FileType2; +exports.LucideFileUp = FileUp; +exports.LucideFileUser = FileUser; +exports.LucideFileVideo = FileVideo; +exports.LucideFileVideo2 = FileVideo2; +exports.LucideFileVolume = FileVolume; +exports.LucideFileVolume2 = FileVolume2; +exports.LucideFileWarning = FileWarning; +exports.LucideFileX = FileX; +exports.LucideFileX2 = FileX2; +exports.LucideFiles = Files; +exports.LucideFilm = Film; +exports.LucideFilter = Filter; +exports.LucideFilterX = FilterX; +exports.LucideFingerprint = Fingerprint; +exports.LucideFireExtinguisher = FireExtinguisher; +exports.LucideFish = Fish; +exports.LucideFishOff = FishOff; +exports.LucideFishSymbol = FishSymbol; +exports.LucideFlag = Flag; +exports.LucideFlagOff = FlagOff; +exports.LucideFlagTriangleLeft = FlagTriangleLeft; +exports.LucideFlagTriangleRight = FlagTriangleRight; +exports.LucideFlame = Flame; +exports.LucideFlameKindling = FlameKindling; +exports.LucideFlashlight = Flashlight; +exports.LucideFlashlightOff = FlashlightOff; +exports.LucideFlaskConical = FlaskConical; +exports.LucideFlaskConicalOff = FlaskConicalOff; +exports.LucideFlaskRound = FlaskRound; +exports.LucideFlipHorizontal = FlipHorizontal; +exports.LucideFlipHorizontal2 = FlipHorizontal2; +exports.LucideFlipVertical = FlipVertical; +exports.LucideFlipVertical2 = FlipVertical2; +exports.LucideFlower = Flower; +exports.LucideFlower2 = Flower2; +exports.LucideFocus = Focus; +exports.LucideFoldHorizontal = FoldHorizontal; +exports.LucideFoldVertical = FoldVertical; +exports.LucideFolder = Folder; +exports.LucideFolderArchive = FolderArchive; +exports.LucideFolderCheck = FolderCheck; +exports.LucideFolderClock = FolderClock; +exports.LucideFolderClosed = FolderClosed; +exports.LucideFolderCode = FolderCode; +exports.LucideFolderCog = FolderCog; +exports.LucideFolderCog2 = FolderCog; +exports.LucideFolderDot = FolderDot; +exports.LucideFolderDown = FolderDown; +exports.LucideFolderEdit = FolderPen; +exports.LucideFolderGit = FolderGit; +exports.LucideFolderGit2 = FolderGit2; +exports.LucideFolderHeart = FolderHeart; +exports.LucideFolderInput = FolderInput; +exports.LucideFolderKanban = FolderKanban; +exports.LucideFolderKey = FolderKey; +exports.LucideFolderLock = FolderLock; +exports.LucideFolderMinus = FolderMinus; +exports.LucideFolderOpen = FolderOpen; +exports.LucideFolderOpenDot = FolderOpenDot; +exports.LucideFolderOutput = FolderOutput; +exports.LucideFolderPen = FolderPen; +exports.LucideFolderPlus = FolderPlus; +exports.LucideFolderRoot = FolderRoot; +exports.LucideFolderSearch = FolderSearch; +exports.LucideFolderSearch2 = FolderSearch2; +exports.LucideFolderSymlink = FolderSymlink; +exports.LucideFolderSync = FolderSync; +exports.LucideFolderTree = FolderTree; +exports.LucideFolderUp = FolderUp; +exports.LucideFolderX = FolderX; +exports.LucideFolders = Folders; +exports.LucideFootprints = Footprints; +exports.LucideForkKnife = Utensils; +exports.LucideForkKnifeCrossed = UtensilsCrossed; +exports.LucideForklift = Forklift; +exports.LucideFormInput = RectangleEllipsis; +exports.LucideForward = Forward; +exports.LucideFrame = Frame; +exports.LucideFramer = Framer; +exports.LucideFrown = Frown; +exports.LucideFuel = Fuel; +exports.LucideFullscreen = Fullscreen; +exports.LucideFunctionSquare = SquareFunction; +exports.LucideGalleryHorizontal = GalleryHorizontal; +exports.LucideGalleryHorizontalEnd = GalleryHorizontalEnd; +exports.LucideGalleryThumbnails = GalleryThumbnails; +exports.LucideGalleryVertical = GalleryVertical; +exports.LucideGalleryVerticalEnd = GalleryVerticalEnd; +exports.LucideGamepad = Gamepad; +exports.LucideGamepad2 = Gamepad2; +exports.LucideGanttChart = ChartNoAxesGantt; +exports.LucideGanttChartSquare = SquareChartGantt; +exports.LucideGauge = Gauge; +exports.LucideGaugeCircle = CircleGauge; +exports.LucideGavel = Gavel; +exports.LucideGem = Gem; +exports.LucideGhost = Ghost; +exports.LucideGift = Gift; +exports.LucideGitBranch = GitBranch; +exports.LucideGitBranchPlus = GitBranchPlus; +exports.LucideGitCommit = GitCommitHorizontal; +exports.LucideGitCommitHorizontal = GitCommitHorizontal; +exports.LucideGitCommitVertical = GitCommitVertical; +exports.LucideGitCompare = GitCompare; +exports.LucideGitCompareArrows = GitCompareArrows; +exports.LucideGitFork = GitFork; +exports.LucideGitGraph = GitGraph; +exports.LucideGitMerge = GitMerge; +exports.LucideGitPullRequest = GitPullRequest; +exports.LucideGitPullRequestArrow = GitPullRequestArrow; +exports.LucideGitPullRequestClosed = GitPullRequestClosed; +exports.LucideGitPullRequestCreate = GitPullRequestCreate; +exports.LucideGitPullRequestCreateArrow = GitPullRequestCreateArrow; +exports.LucideGitPullRequestDraft = GitPullRequestDraft; +exports.LucideGithub = Github; +exports.LucideGitlab = Gitlab; +exports.LucideGlassWater = GlassWater; +exports.LucideGlasses = Glasses; +exports.LucideGlobe = Globe; +exports.LucideGlobe2 = Earth; +exports.LucideGlobeLock = GlobeLock; +exports.LucideGoal = Goal; +exports.LucideGrab = Grab; +exports.LucideGraduationCap = GraduationCap; +exports.LucideGrape = Grape; +exports.LucideGrid = Grid3x3; +exports.LucideGrid2X2 = Grid2x2; +exports.LucideGrid2X2Check = Grid2x2Check; +exports.LucideGrid2X2Plus = Grid2x2Plus; +exports.LucideGrid2X2X = Grid2x2X; +exports.LucideGrid2x2 = Grid2x2; +exports.LucideGrid2x2Check = Grid2x2Check; +exports.LucideGrid2x2Plus = Grid2x2Plus; +exports.LucideGrid2x2X = Grid2x2X; +exports.LucideGrid3X3 = Grid3x3; +exports.LucideGrid3x3 = Grid3x3; +exports.LucideGrip = Grip; +exports.LucideGripHorizontal = GripHorizontal; +exports.LucideGripVertical = GripVertical; +exports.LucideGroup = Group; +exports.LucideGuitar = Guitar; +exports.LucideHam = Ham; +exports.LucideHammer = Hammer; +exports.LucideHand = Hand; +exports.LucideHandCoins = HandCoins; +exports.LucideHandHeart = HandHeart; +exports.LucideHandHelping = HandHelping; +exports.LucideHandMetal = HandMetal; +exports.LucideHandPlatter = HandPlatter; +exports.LucideHandshake = Handshake; +exports.LucideHardDrive = HardDrive; +exports.LucideHardDriveDownload = HardDriveDownload; +exports.LucideHardDriveUpload = HardDriveUpload; +exports.LucideHardHat = HardHat; +exports.LucideHash = Hash; +exports.LucideHaze = Haze; +exports.LucideHdmiPort = HdmiPort; +exports.LucideHeading = Heading; +exports.LucideHeading1 = Heading1; +exports.LucideHeading2 = Heading2; +exports.LucideHeading3 = Heading3; +exports.LucideHeading4 = Heading4; +exports.LucideHeading5 = Heading5; +exports.LucideHeading6 = Heading6; +exports.LucideHeadphoneOff = HeadphoneOff; +exports.LucideHeadphones = Headphones; +exports.LucideHeadset = Headset; +exports.LucideHeart = Heart; +exports.LucideHeartCrack = HeartCrack; +exports.LucideHeartHandshake = HeartHandshake; +exports.LucideHeartOff = HeartOff; +exports.LucideHeartPulse = HeartPulse; +exports.LucideHeater = Heater; +exports.LucideHelpCircle = CircleHelp; +exports.LucideHelpingHand = HandHelping; +exports.LucideHexagon = Hexagon; +exports.LucideHighlighter = Highlighter; +exports.LucideHistory = History; +exports.LucideHome = House; +exports.LucideHop = Hop; +exports.LucideHopOff = HopOff; +exports.LucideHospital = Hospital; +exports.LucideHotel = Hotel; +exports.LucideHourglass = Hourglass; +exports.LucideHouse = House; +exports.LucideHousePlug = HousePlug; +exports.LucideHousePlus = HousePlus; +exports.LucideHouseWifi = HouseWifi; +exports.LucideIceCream = IceCreamCone; +exports.LucideIceCream2 = IceCreamBowl; +exports.LucideIceCreamBowl = IceCreamBowl; +exports.LucideIceCreamCone = IceCreamCone; +exports.LucideIdCard = IdCard; +exports.LucideImage = Image; +exports.LucideImageDown = ImageDown; +exports.LucideImageMinus = ImageMinus; +exports.LucideImageOff = ImageOff; +exports.LucideImagePlay = ImagePlay; +exports.LucideImagePlus = ImagePlus; +exports.LucideImageUp = ImageUp; +exports.LucideImageUpscale = ImageUpscale; +exports.LucideImages = Images; +exports.LucideImport = Import; +exports.LucideInbox = Inbox; +exports.LucideIndent = IndentIncrease; +exports.LucideIndentDecrease = IndentDecrease; +exports.LucideIndentIncrease = IndentIncrease; +exports.LucideIndianRupee = IndianRupee; +exports.LucideInfinity = Infinity; +exports.LucideInfo = Info; +exports.LucideInspect = SquareMousePointer; +exports.LucideInspectionPanel = InspectionPanel; +exports.LucideInstagram = Instagram; +exports.LucideItalic = Italic; +exports.LucideIterationCcw = IterationCcw; +exports.LucideIterationCw = IterationCw; +exports.LucideJapaneseYen = JapaneseYen; +exports.LucideJoystick = Joystick; +exports.LucideKanban = Kanban; +exports.LucideKanbanSquare = SquareKanban; +exports.LucideKanbanSquareDashed = SquareDashedKanban; +exports.LucideKey = Key; +exports.LucideKeyRound = KeyRound; +exports.LucideKeySquare = KeySquare; +exports.LucideKeyboard = Keyboard; +exports.LucideKeyboardMusic = KeyboardMusic; +exports.LucideKeyboardOff = KeyboardOff; +exports.LucideLamp = Lamp; +exports.LucideLampCeiling = LampCeiling; +exports.LucideLampDesk = LampDesk; +exports.LucideLampFloor = LampFloor; +exports.LucideLampWallDown = LampWallDown; +exports.LucideLampWallUp = LampWallUp; +exports.LucideLandPlot = LandPlot; +exports.LucideLandmark = Landmark; +exports.LucideLanguages = Languages; +exports.LucideLaptop = Laptop; +exports.LucideLaptop2 = LaptopMinimal; +exports.LucideLaptopMinimal = LaptopMinimal; +exports.LucideLaptopMinimalCheck = LaptopMinimalCheck; +exports.LucideLasso = Lasso; +exports.LucideLassoSelect = LassoSelect; +exports.LucideLaugh = Laugh; +exports.LucideLayers = Layers; +exports.LucideLayers2 = Layers2; +exports.LucideLayers3 = Layers; +exports.LucideLayout = PanelsTopLeft; +exports.LucideLayoutDashboard = LayoutDashboard; +exports.LucideLayoutGrid = LayoutGrid; +exports.LucideLayoutList = LayoutList; +exports.LucideLayoutPanelLeft = LayoutPanelLeft; +exports.LucideLayoutPanelTop = LayoutPanelTop; +exports.LucideLayoutTemplate = LayoutTemplate; +exports.LucideLeaf = Leaf; +exports.LucideLeafyGreen = LeafyGreen; +exports.LucideLectern = Lectern; +exports.LucideLetterText = LetterText; +exports.LucideLibrary = Library; +exports.LucideLibraryBig = LibraryBig; +exports.LucideLibrarySquare = SquareLibrary; +exports.LucideLifeBuoy = LifeBuoy; +exports.LucideLigature = Ligature; +exports.LucideLightbulb = Lightbulb; +exports.LucideLightbulbOff = LightbulbOff; +exports.LucideLineChart = ChartLine; +exports.LucideLink = Link; +exports.LucideLink2 = Link2; +exports.LucideLink2Off = Link2Off; +exports.LucideLinkedin = Linkedin; +exports.LucideList = List; +exports.LucideListCheck = ListCheck; +exports.LucideListChecks = ListChecks; +exports.LucideListCollapse = ListCollapse; +exports.LucideListEnd = ListEnd; +exports.LucideListFilter = ListFilter; +exports.LucideListFilterPlus = ListFilterPlus; +exports.LucideListMinus = ListMinus; +exports.LucideListMusic = ListMusic; +exports.LucideListOrdered = ListOrdered; +exports.LucideListPlus = ListPlus; +exports.LucideListRestart = ListRestart; +exports.LucideListStart = ListStart; +exports.LucideListTodo = ListTodo; +exports.LucideListTree = ListTree; +exports.LucideListVideo = ListVideo; +exports.LucideListX = ListX; +exports.LucideLoader = Loader; +exports.LucideLoader2 = LoaderCircle; +exports.LucideLoaderCircle = LoaderCircle; +exports.LucideLoaderPinwheel = LoaderPinwheel; +exports.LucideLocate = Locate; +exports.LucideLocateFixed = LocateFixed; +exports.LucideLocateOff = LocateOff; +exports.LucideLock = Lock; +exports.LucideLockKeyhole = LockKeyhole; +exports.LucideLockKeyholeOpen = LockKeyholeOpen; +exports.LucideLockOpen = LockOpen; +exports.LucideLogIn = LogIn; +exports.LucideLogOut = LogOut; +exports.LucideLogs = Logs; +exports.LucideLollipop = Lollipop; +exports.LucideLuggage = Luggage; +exports.LucideMSquare = SquareM; +exports.LucideMagnet = Magnet; +exports.LucideMail = Mail; +exports.LucideMailCheck = MailCheck; +exports.LucideMailMinus = MailMinus; +exports.LucideMailOpen = MailOpen; +exports.LucideMailPlus = MailPlus; +exports.LucideMailQuestion = MailQuestion; +exports.LucideMailSearch = MailSearch; +exports.LucideMailWarning = MailWarning; +exports.LucideMailX = MailX; +exports.LucideMailbox = Mailbox; +exports.LucideMails = Mails; +exports.LucideMap = Map; +exports.LucideMapPin = MapPin; +exports.LucideMapPinCheck = MapPinCheck; +exports.LucideMapPinCheckInside = MapPinCheckInside; +exports.LucideMapPinHouse = MapPinHouse; +exports.LucideMapPinMinus = MapPinMinus; +exports.LucideMapPinMinusInside = MapPinMinusInside; +exports.LucideMapPinOff = MapPinOff; +exports.LucideMapPinPlus = MapPinPlus; +exports.LucideMapPinPlusInside = MapPinPlusInside; +exports.LucideMapPinX = MapPinX; +exports.LucideMapPinXInside = MapPinXInside; +exports.LucideMapPinned = MapPinned; +exports.LucideMapPlus = MapPlus; +exports.LucideMars = Mars; +exports.LucideMarsStroke = MarsStroke; +exports.LucideMartini = Martini; +exports.LucideMaximize = Maximize; +exports.LucideMaximize2 = Maximize2; +exports.LucideMedal = Medal; +exports.LucideMegaphone = Megaphone; +exports.LucideMegaphoneOff = MegaphoneOff; +exports.LucideMeh = Meh; +exports.LucideMemoryStick = MemoryStick; +exports.LucideMenu = Menu; +exports.LucideMenuSquare = SquareMenu; +exports.LucideMerge = Merge; +exports.LucideMessageCircle = MessageCircle; +exports.LucideMessageCircleCode = MessageCircleCode; +exports.LucideMessageCircleDashed = MessageCircleDashed; +exports.LucideMessageCircleHeart = MessageCircleHeart; +exports.LucideMessageCircleMore = MessageCircleMore; +exports.LucideMessageCircleOff = MessageCircleOff; +exports.LucideMessageCirclePlus = MessageCirclePlus; +exports.LucideMessageCircleQuestion = MessageCircleQuestion; +exports.LucideMessageCircleReply = MessageCircleReply; +exports.LucideMessageCircleWarning = MessageCircleWarning; +exports.LucideMessageCircleX = MessageCircleX; +exports.LucideMessageSquare = MessageSquare; +exports.LucideMessageSquareCode = MessageSquareCode; +exports.LucideMessageSquareDashed = MessageSquareDashed; +exports.LucideMessageSquareDiff = MessageSquareDiff; +exports.LucideMessageSquareDot = MessageSquareDot; +exports.LucideMessageSquareHeart = MessageSquareHeart; +exports.LucideMessageSquareLock = MessageSquareLock; +exports.LucideMessageSquareMore = MessageSquareMore; +exports.LucideMessageSquareOff = MessageSquareOff; +exports.LucideMessageSquarePlus = MessageSquarePlus; +exports.LucideMessageSquareQuote = MessageSquareQuote; +exports.LucideMessageSquareReply = MessageSquareReply; +exports.LucideMessageSquareShare = MessageSquareShare; +exports.LucideMessageSquareText = MessageSquareText; +exports.LucideMessageSquareWarning = MessageSquareWarning; +exports.LucideMessageSquareX = MessageSquareX; +exports.LucideMessagesSquare = MessagesSquare; +exports.LucideMic = Mic; +exports.LucideMic2 = MicVocal; +exports.LucideMicOff = MicOff; +exports.LucideMicVocal = MicVocal; +exports.LucideMicrochip = Microchip; +exports.LucideMicroscope = Microscope; +exports.LucideMicrowave = Microwave; +exports.LucideMilestone = Milestone; +exports.LucideMilk = Milk; +exports.LucideMilkOff = MilkOff; +exports.LucideMinimize = Minimize; +exports.LucideMinimize2 = Minimize2; +exports.LucideMinus = Minus; +exports.LucideMinusCircle = CircleMinus; +exports.LucideMinusSquare = SquareMinus; +exports.LucideMonitor = Monitor; +exports.LucideMonitorCheck = MonitorCheck; +exports.LucideMonitorCog = MonitorCog; +exports.LucideMonitorDot = MonitorDot; +exports.LucideMonitorDown = MonitorDown; +exports.LucideMonitorOff = MonitorOff; +exports.LucideMonitorPause = MonitorPause; +exports.LucideMonitorPlay = MonitorPlay; +exports.LucideMonitorSmartphone = MonitorSmartphone; +exports.LucideMonitorSpeaker = MonitorSpeaker; +exports.LucideMonitorStop = MonitorStop; +exports.LucideMonitorUp = MonitorUp; +exports.LucideMonitorX = MonitorX; +exports.LucideMoon = Moon; +exports.LucideMoonStar = MoonStar; +exports.LucideMoreHorizontal = Ellipsis; +exports.LucideMoreVertical = EllipsisVertical; +exports.LucideMountain = Mountain; +exports.LucideMountainSnow = MountainSnow; +exports.LucideMouse = Mouse; +exports.LucideMouseOff = MouseOff; +exports.LucideMousePointer = MousePointer; +exports.LucideMousePointer2 = MousePointer2; +exports.LucideMousePointerBan = MousePointerBan; +exports.LucideMousePointerClick = MousePointerClick; +exports.LucideMousePointerSquareDashed = SquareDashedMousePointer; +exports.LucideMove = Move; +exports.LucideMove3D = Move3d; +exports.LucideMove3d = Move3d; +exports.LucideMoveDiagonal = MoveDiagonal; +exports.LucideMoveDiagonal2 = MoveDiagonal2; +exports.LucideMoveDown = MoveDown; +exports.LucideMoveDownLeft = MoveDownLeft; +exports.LucideMoveDownRight = MoveDownRight; +exports.LucideMoveHorizontal = MoveHorizontal; +exports.LucideMoveLeft = MoveLeft; +exports.LucideMoveRight = MoveRight; +exports.LucideMoveUp = MoveUp; +exports.LucideMoveUpLeft = MoveUpLeft; +exports.LucideMoveUpRight = MoveUpRight; +exports.LucideMoveVertical = MoveVertical; +exports.LucideMusic = Music; +exports.LucideMusic2 = Music2; +exports.LucideMusic3 = Music3; +exports.LucideMusic4 = Music4; +exports.LucideNavigation = Navigation; +exports.LucideNavigation2 = Navigation2; +exports.LucideNavigation2Off = Navigation2Off; +exports.LucideNavigationOff = NavigationOff; +exports.LucideNetwork = Network; +exports.LucideNewspaper = Newspaper; +exports.LucideNfc = Nfc; +exports.LucideNonBinary = NonBinary; +exports.LucideNotebook = Notebook; +exports.LucideNotebookPen = NotebookPen; +exports.LucideNotebookTabs = NotebookTabs; +exports.LucideNotebookText = NotebookText; +exports.LucideNotepadText = NotepadText; +exports.LucideNotepadTextDashed = NotepadTextDashed; +exports.LucideNut = Nut; +exports.LucideNutOff = NutOff; +exports.LucideOctagon = Octagon; +exports.LucideOctagonAlert = OctagonAlert; +exports.LucideOctagonMinus = OctagonMinus; +exports.LucideOctagonPause = OctagonPause; +exports.LucideOctagonX = OctagonX; +exports.LucideOmega = Omega; +exports.LucideOption = Option; +exports.LucideOrbit = Orbit; +exports.LucideOrigami = Origami; +exports.LucideOutdent = IndentDecrease; +exports.LucidePackage = Package; +exports.LucidePackage2 = Package2; +exports.LucidePackageCheck = PackageCheck; +exports.LucidePackageMinus = PackageMinus; +exports.LucidePackageOpen = PackageOpen; +exports.LucidePackagePlus = PackagePlus; +exports.LucidePackageSearch = PackageSearch; +exports.LucidePackageX = PackageX; +exports.LucidePaintBucket = PaintBucket; +exports.LucidePaintRoller = PaintRoller; +exports.LucidePaintbrush = Paintbrush; +exports.LucidePaintbrush2 = PaintbrushVertical; +exports.LucidePaintbrushVertical = PaintbrushVertical; +exports.LucidePalette = Palette; +exports.LucidePalmtree = TreePalm; +exports.LucidePanelBottom = PanelBottom; +exports.LucidePanelBottomClose = PanelBottomClose; +exports.LucidePanelBottomDashed = PanelBottomDashed; +exports.LucidePanelBottomInactive = PanelBottomDashed; +exports.LucidePanelBottomOpen = PanelBottomOpen; +exports.LucidePanelLeft = PanelLeft; +exports.LucidePanelLeftClose = PanelLeftClose; +exports.LucidePanelLeftDashed = PanelLeftDashed; +exports.LucidePanelLeftInactive = PanelLeftDashed; +exports.LucidePanelLeftOpen = PanelLeftOpen; +exports.LucidePanelRight = PanelRight; +exports.LucidePanelRightClose = PanelRightClose; +exports.LucidePanelRightDashed = PanelRightDashed; +exports.LucidePanelRightInactive = PanelRightDashed; +exports.LucidePanelRightOpen = PanelRightOpen; +exports.LucidePanelTop = PanelTop; +exports.LucidePanelTopClose = PanelTopClose; +exports.LucidePanelTopDashed = PanelTopDashed; +exports.LucidePanelTopInactive = PanelTopDashed; +exports.LucidePanelTopOpen = PanelTopOpen; +exports.LucidePanelsLeftBottom = PanelsLeftBottom; +exports.LucidePanelsLeftRight = Columns3; +exports.LucidePanelsRightBottom = PanelsRightBottom; +exports.LucidePanelsTopBottom = Rows3; +exports.LucidePanelsTopLeft = PanelsTopLeft; +exports.LucidePaperclip = Paperclip; +exports.LucideParentheses = Parentheses; +exports.LucideParkingCircle = CircleParking; +exports.LucideParkingCircleOff = CircleParkingOff; +exports.LucideParkingMeter = ParkingMeter; +exports.LucideParkingSquare = SquareParking; +exports.LucideParkingSquareOff = SquareParkingOff; +exports.LucidePartyPopper = PartyPopper; +exports.LucidePause = Pause; +exports.LucidePauseCircle = CirclePause; +exports.LucidePauseOctagon = OctagonPause; +exports.LucidePawPrint = PawPrint; +exports.LucidePcCase = PcCase; +exports.LucidePen = Pen; +exports.LucidePenBox = SquarePen; +exports.LucidePenLine = PenLine; +exports.LucidePenOff = PenOff; +exports.LucidePenSquare = SquarePen; +exports.LucidePenTool = PenTool; +exports.LucidePencil = Pencil; +exports.LucidePencilLine = PencilLine; +exports.LucidePencilOff = PencilOff; +exports.LucidePencilRuler = PencilRuler; +exports.LucidePentagon = Pentagon; +exports.LucidePercent = Percent; +exports.LucidePercentCircle = CirclePercent; +exports.LucidePercentDiamond = DiamondPercent; +exports.LucidePercentSquare = SquarePercent; +exports.LucidePersonStanding = PersonStanding; +exports.LucidePhilippinePeso = PhilippinePeso; +exports.LucidePhone = Phone; +exports.LucidePhoneCall = PhoneCall; +exports.LucidePhoneForwarded = PhoneForwarded; +exports.LucidePhoneIncoming = PhoneIncoming; +exports.LucidePhoneMissed = PhoneMissed; +exports.LucidePhoneOff = PhoneOff; +exports.LucidePhoneOutgoing = PhoneOutgoing; +exports.LucidePi = Pi; +exports.LucidePiSquare = SquarePi; +exports.LucidePiano = Piano; +exports.LucidePickaxe = Pickaxe; +exports.LucidePictureInPicture = PictureInPicture; +exports.LucidePictureInPicture2 = PictureInPicture2; +exports.LucidePieChart = ChartPie; +exports.LucidePiggyBank = PiggyBank; +exports.LucidePilcrow = Pilcrow; +exports.LucidePilcrowLeft = PilcrowLeft; +exports.LucidePilcrowRight = PilcrowRight; +exports.LucidePilcrowSquare = SquarePilcrow; +exports.LucidePill = Pill; +exports.LucidePillBottle = PillBottle; +exports.LucidePin = Pin; +exports.LucidePinOff = PinOff; +exports.LucidePipette = Pipette; +exports.LucidePizza = Pizza; +exports.LucidePlane = Plane; +exports.LucidePlaneLanding = PlaneLanding; +exports.LucidePlaneTakeoff = PlaneTakeoff; +exports.LucidePlay = Play; +exports.LucidePlayCircle = CirclePlay; +exports.LucidePlaySquare = SquarePlay; +exports.LucidePlug = Plug; +exports.LucidePlug2 = Plug2; +exports.LucidePlugZap = PlugZap; +exports.LucidePlugZap2 = PlugZap; +exports.LucidePlus = Plus; +exports.LucidePlusCircle = CirclePlus; +exports.LucidePlusSquare = SquarePlus; +exports.LucidePocket = Pocket; +exports.LucidePocketKnife = PocketKnife; +exports.LucidePodcast = Podcast; +exports.LucidePointer = Pointer; +exports.LucidePointerOff = PointerOff; +exports.LucidePopcorn = Popcorn; +exports.LucidePopsicle = Popsicle; +exports.LucidePoundSterling = PoundSterling; +exports.LucidePower = Power; +exports.LucidePowerCircle = CirclePower; +exports.LucidePowerOff = PowerOff; +exports.LucidePowerSquare = SquarePower; +exports.LucidePresentation = Presentation; +exports.LucidePrinter = Printer; +exports.LucidePrinterCheck = PrinterCheck; +exports.LucideProjector = Projector; +exports.LucideProportions = Proportions; +exports.LucidePuzzle = Puzzle; +exports.LucidePyramid = Pyramid; +exports.LucideQrCode = QrCode; +exports.LucideQuote = Quote; +exports.LucideRabbit = Rabbit; +exports.LucideRadar = Radar; +exports.LucideRadiation = Radiation; +exports.LucideRadical = Radical; +exports.LucideRadio = Radio; +exports.LucideRadioReceiver = RadioReceiver; +exports.LucideRadioTower = RadioTower; +exports.LucideRadius = Radius; +exports.LucideRailSymbol = RailSymbol; +exports.LucideRainbow = Rainbow; +exports.LucideRat = Rat; +exports.LucideRatio = Ratio; +exports.LucideReceipt = Receipt; +exports.LucideReceiptCent = ReceiptCent; +exports.LucideReceiptEuro = ReceiptEuro; +exports.LucideReceiptIndianRupee = ReceiptIndianRupee; +exports.LucideReceiptJapaneseYen = ReceiptJapaneseYen; +exports.LucideReceiptPoundSterling = ReceiptPoundSterling; +exports.LucideReceiptRussianRuble = ReceiptRussianRuble; +exports.LucideReceiptSwissFranc = ReceiptSwissFranc; +exports.LucideReceiptText = ReceiptText; +exports.LucideRectangleEllipsis = RectangleEllipsis; +exports.LucideRectangleHorizontal = RectangleHorizontal; +exports.LucideRectangleVertical = RectangleVertical; +exports.LucideRecycle = Recycle; +exports.LucideRedo = Redo; +exports.LucideRedo2 = Redo2; +exports.LucideRedoDot = RedoDot; +exports.LucideRefreshCcw = RefreshCcw; +exports.LucideRefreshCcwDot = RefreshCcwDot; +exports.LucideRefreshCw = RefreshCw; +exports.LucideRefreshCwOff = RefreshCwOff; +exports.LucideRefrigerator = Refrigerator; +exports.LucideRegex = Regex; +exports.LucideRemoveFormatting = RemoveFormatting; +exports.LucideRepeat = Repeat; +exports.LucideRepeat1 = Repeat1; +exports.LucideRepeat2 = Repeat2; +exports.LucideReplace = Replace; +exports.LucideReplaceAll = ReplaceAll; +exports.LucideReply = Reply; +exports.LucideReplyAll = ReplyAll; +exports.LucideRewind = Rewind; +exports.LucideRibbon = Ribbon; +exports.LucideRocket = Rocket; +exports.LucideRockingChair = RockingChair; +exports.LucideRollerCoaster = RollerCoaster; +exports.LucideRotate3D = Rotate3d; +exports.LucideRotate3d = Rotate3d; +exports.LucideRotateCcw = RotateCcw; +exports.LucideRotateCcwSquare = RotateCcwSquare; +exports.LucideRotateCw = RotateCw; +exports.LucideRotateCwSquare = RotateCwSquare; +exports.LucideRoute = Route; +exports.LucideRouteOff = RouteOff; +exports.LucideRouter = Router; +exports.LucideRows = Rows2; +exports.LucideRows2 = Rows2; +exports.LucideRows3 = Rows3; +exports.LucideRows4 = Rows4; +exports.LucideRss = Rss; +exports.LucideRuler = Ruler; +exports.LucideRussianRuble = RussianRuble; +exports.LucideSailboat = Sailboat; +exports.LucideSalad = Salad; +exports.LucideSandwich = Sandwich; +exports.LucideSatellite = Satellite; +exports.LucideSatelliteDish = SatelliteDish; +exports.LucideSave = Save; +exports.LucideSaveAll = SaveAll; +exports.LucideSaveOff = SaveOff; +exports.LucideScale = Scale; +exports.LucideScale3D = Scale3d; +exports.LucideScale3d = Scale3d; +exports.LucideScaling = Scaling; +exports.LucideScan = Scan; +exports.LucideScanBarcode = ScanBarcode; +exports.LucideScanEye = ScanEye; +exports.LucideScanFace = ScanFace; +exports.LucideScanHeart = ScanHeart; +exports.LucideScanLine = ScanLine; +exports.LucideScanQrCode = ScanQrCode; +exports.LucideScanSearch = ScanSearch; +exports.LucideScanText = ScanText; +exports.LucideScatterChart = ChartScatter; +exports.LucideSchool = School; +exports.LucideSchool2 = University; +exports.LucideScissors = Scissors; +exports.LucideScissorsLineDashed = ScissorsLineDashed; +exports.LucideScissorsSquare = SquareScissors; +exports.LucideScissorsSquareDashedBottom = SquareBottomDashedScissors; +exports.LucideScreenShare = ScreenShare; +exports.LucideScreenShareOff = ScreenShareOff; +exports.LucideScroll = Scroll; +exports.LucideScrollText = ScrollText; +exports.LucideSearch = Search; +exports.LucideSearchCheck = SearchCheck; +exports.LucideSearchCode = SearchCode; +exports.LucideSearchSlash = SearchSlash; +exports.LucideSearchX = SearchX; +exports.LucideSection = Section; +exports.LucideSend = Send; +exports.LucideSendHorizonal = SendHorizontal; +exports.LucideSendHorizontal = SendHorizontal; +exports.LucideSendToBack = SendToBack; +exports.LucideSeparatorHorizontal = SeparatorHorizontal; +exports.LucideSeparatorVertical = SeparatorVertical; +exports.LucideServer = Server; +exports.LucideServerCog = ServerCog; +exports.LucideServerCrash = ServerCrash; +exports.LucideServerOff = ServerOff; +exports.LucideSettings = Settings; +exports.LucideSettings2 = Settings2; +exports.LucideShapes = Shapes; +exports.LucideShare = Share; +exports.LucideShare2 = Share2; +exports.LucideSheet = Sheet; +exports.LucideShell = Shell; +exports.LucideShield = Shield; +exports.LucideShieldAlert = ShieldAlert; +exports.LucideShieldBan = ShieldBan; +exports.LucideShieldCheck = ShieldCheck; +exports.LucideShieldClose = ShieldX; +exports.LucideShieldEllipsis = ShieldEllipsis; +exports.LucideShieldHalf = ShieldHalf; +exports.LucideShieldMinus = ShieldMinus; +exports.LucideShieldOff = ShieldOff; +exports.LucideShieldPlus = ShieldPlus; +exports.LucideShieldQuestion = ShieldQuestion; +exports.LucideShieldX = ShieldX; +exports.LucideShip = Ship; +exports.LucideShipWheel = ShipWheel; +exports.LucideShirt = Shirt; +exports.LucideShoppingBag = ShoppingBag; +exports.LucideShoppingBasket = ShoppingBasket; +exports.LucideShoppingCart = ShoppingCart; +exports.LucideShovel = Shovel; +exports.LucideShowerHead = ShowerHead; +exports.LucideShrink = Shrink; +exports.LucideShrub = Shrub; +exports.LucideShuffle = Shuffle; +exports.LucideSidebar = PanelLeft; +exports.LucideSidebarClose = PanelLeftClose; +exports.LucideSidebarOpen = PanelLeftOpen; +exports.LucideSigma = Sigma; +exports.LucideSigmaSquare = SquareSigma; +exports.LucideSignal = Signal; +exports.LucideSignalHigh = SignalHigh; +exports.LucideSignalLow = SignalLow; +exports.LucideSignalMedium = SignalMedium; +exports.LucideSignalZero = SignalZero; +exports.LucideSignature = Signature; +exports.LucideSignpost = Signpost; +exports.LucideSignpostBig = SignpostBig; +exports.LucideSiren = Siren; +exports.LucideSkipBack = SkipBack; +exports.LucideSkipForward = SkipForward; +exports.LucideSkull = Skull; +exports.LucideSlack = Slack; +exports.LucideSlash = Slash; +exports.LucideSlashSquare = SquareSlash; +exports.LucideSlice = Slice; +exports.LucideSliders = SlidersVertical; +exports.LucideSlidersHorizontal = SlidersHorizontal; +exports.LucideSlidersVertical = SlidersVertical; +exports.LucideSmartphone = Smartphone; +exports.LucideSmartphoneCharging = SmartphoneCharging; +exports.LucideSmartphoneNfc = SmartphoneNfc; +exports.LucideSmile = Smile; +exports.LucideSmilePlus = SmilePlus; +exports.LucideSnail = Snail; +exports.LucideSnowflake = Snowflake; +exports.LucideSofa = Sofa; +exports.LucideSortAsc = ArrowUpNarrowWide; +exports.LucideSortDesc = ArrowDownWideNarrow; +exports.LucideSoup = Soup; +exports.LucideSpace = Space; +exports.LucideSpade = Spade; +exports.LucideSparkle = Sparkle; +exports.LucideSparkles = Sparkles; +exports.LucideSpeaker = Speaker; +exports.LucideSpeech = Speech; +exports.LucideSpellCheck = SpellCheck; +exports.LucideSpellCheck2 = SpellCheck2; +exports.LucideSpline = Spline; +exports.LucideSplit = Split; +exports.LucideSplitSquareHorizontal = SquareSplitHorizontal; +exports.LucideSplitSquareVertical = SquareSplitVertical; +exports.LucideSprayCan = SprayCan; +exports.LucideSprout = Sprout; +exports.LucideSquare = Square; +exports.LucideSquareActivity = SquareActivity; +exports.LucideSquareArrowDown = SquareArrowDown; +exports.LucideSquareArrowDownLeft = SquareArrowDownLeft; +exports.LucideSquareArrowDownRight = SquareArrowDownRight; +exports.LucideSquareArrowLeft = SquareArrowLeft; +exports.LucideSquareArrowOutDownLeft = SquareArrowOutDownLeft; +exports.LucideSquareArrowOutDownRight = SquareArrowOutDownRight; +exports.LucideSquareArrowOutUpLeft = SquareArrowOutUpLeft; +exports.LucideSquareArrowOutUpRight = SquareArrowOutUpRight; +exports.LucideSquareArrowRight = SquareArrowRight; +exports.LucideSquareArrowUp = SquareArrowUp; +exports.LucideSquareArrowUpLeft = SquareArrowUpLeft; +exports.LucideSquareArrowUpRight = SquareArrowUpRight; +exports.LucideSquareAsterisk = SquareAsterisk; +exports.LucideSquareBottomDashedScissors = SquareBottomDashedScissors; +exports.LucideSquareChartGantt = SquareChartGantt; +exports.LucideSquareCheck = SquareCheck; +exports.LucideSquareCheckBig = SquareCheckBig; +exports.LucideSquareChevronDown = SquareChevronDown; +exports.LucideSquareChevronLeft = SquareChevronLeft; +exports.LucideSquareChevronRight = SquareChevronRight; +exports.LucideSquareChevronUp = SquareChevronUp; +exports.LucideSquareCode = SquareCode; +exports.LucideSquareDashed = SquareDashed; +exports.LucideSquareDashedBottom = SquareDashedBottom; +exports.LucideSquareDashedBottomCode = SquareDashedBottomCode; +exports.LucideSquareDashedKanban = SquareDashedKanban; +exports.LucideSquareDashedMousePointer = SquareDashedMousePointer; +exports.LucideSquareDivide = SquareDivide; +exports.LucideSquareDot = SquareDot; +exports.LucideSquareEqual = SquareEqual; +exports.LucideSquareFunction = SquareFunction; +exports.LucideSquareGanttChart = SquareChartGantt; +exports.LucideSquareKanban = SquareKanban; +exports.LucideSquareLibrary = SquareLibrary; +exports.LucideSquareM = SquareM; +exports.LucideSquareMenu = SquareMenu; +exports.LucideSquareMinus = SquareMinus; +exports.LucideSquareMousePointer = SquareMousePointer; +exports.LucideSquareParking = SquareParking; +exports.LucideSquareParkingOff = SquareParkingOff; +exports.LucideSquarePen = SquarePen; +exports.LucideSquarePercent = SquarePercent; +exports.LucideSquarePi = SquarePi; +exports.LucideSquarePilcrow = SquarePilcrow; +exports.LucideSquarePlay = SquarePlay; +exports.LucideSquarePlus = SquarePlus; +exports.LucideSquarePower = SquarePower; +exports.LucideSquareRadical = SquareRadical; +exports.LucideSquareScissors = SquareScissors; +exports.LucideSquareSigma = SquareSigma; +exports.LucideSquareSlash = SquareSlash; +exports.LucideSquareSplitHorizontal = SquareSplitHorizontal; +exports.LucideSquareSplitVertical = SquareSplitVertical; +exports.LucideSquareSquare = SquareSquare; +exports.LucideSquareStack = SquareStack; +exports.LucideSquareTerminal = SquareTerminal; +exports.LucideSquareUser = SquareUser; +exports.LucideSquareUserRound = SquareUserRound; +exports.LucideSquareX = SquareX; +exports.LucideSquircle = Squircle; +exports.LucideSquirrel = Squirrel; +exports.LucideStamp = Stamp; +exports.LucideStar = Star; +exports.LucideStarHalf = StarHalf; +exports.LucideStarOff = StarOff; +exports.LucideStars = Sparkles; +exports.LucideStepBack = StepBack; +exports.LucideStepForward = StepForward; +exports.LucideStethoscope = Stethoscope; +exports.LucideSticker = Sticker; +exports.LucideStickyNote = StickyNote; +exports.LucideStopCircle = CircleStop; +exports.LucideStore = Store; +exports.LucideStretchHorizontal = StretchHorizontal; +exports.LucideStretchVertical = StretchVertical; +exports.LucideStrikethrough = Strikethrough; +exports.LucideSubscript = Subscript; +exports.LucideSubtitles = Captions; +exports.LucideSun = Sun; +exports.LucideSunDim = SunDim; +exports.LucideSunMedium = SunMedium; +exports.LucideSunMoon = SunMoon; +exports.LucideSunSnow = SunSnow; +exports.LucideSunrise = Sunrise; +exports.LucideSunset = Sunset; +exports.LucideSuperscript = Superscript; +exports.LucideSwatchBook = SwatchBook; +exports.LucideSwissFranc = SwissFranc; +exports.LucideSwitchCamera = SwitchCamera; +exports.LucideSword = Sword; +exports.LucideSwords = Swords; +exports.LucideSyringe = Syringe; +exports.LucideTable = Table; +exports.LucideTable2 = Table2; +exports.LucideTableCellsMerge = TableCellsMerge; +exports.LucideTableCellsSplit = TableCellsSplit; +exports.LucideTableColumnsSplit = TableColumnsSplit; +exports.LucideTableOfContents = TableOfContents; +exports.LucideTableProperties = TableProperties; +exports.LucideTableRowsSplit = TableRowsSplit; +exports.LucideTablet = Tablet; +exports.LucideTabletSmartphone = TabletSmartphone; +exports.LucideTablets = Tablets; +exports.LucideTag = Tag; +exports.LucideTags = Tags; +exports.LucideTally1 = Tally1; +exports.LucideTally2 = Tally2; +exports.LucideTally3 = Tally3; +exports.LucideTally4 = Tally4; +exports.LucideTally5 = Tally5; +exports.LucideTangent = Tangent; +exports.LucideTarget = Target; +exports.LucideTelescope = Telescope; +exports.LucideTent = Tent; +exports.LucideTentTree = TentTree; +exports.LucideTerminal = Terminal; +exports.LucideTerminalSquare = SquareTerminal; +exports.LucideTestTube = TestTube; +exports.LucideTestTube2 = TestTubeDiagonal; +exports.LucideTestTubeDiagonal = TestTubeDiagonal; +exports.LucideTestTubes = TestTubes; +exports.LucideText = Text; +exports.LucideTextCursor = TextCursor; +exports.LucideTextCursorInput = TextCursorInput; +exports.LucideTextQuote = TextQuote; +exports.LucideTextSearch = TextSearch; +exports.LucideTextSelect = TextSelect; +exports.LucideTextSelection = TextSelect; +exports.LucideTheater = Theater; +exports.LucideThermometer = Thermometer; +exports.LucideThermometerSnowflake = ThermometerSnowflake; +exports.LucideThermometerSun = ThermometerSun; +exports.LucideThumbsDown = ThumbsDown; +exports.LucideThumbsUp = ThumbsUp; +exports.LucideTicket = Ticket; +exports.LucideTicketCheck = TicketCheck; +exports.LucideTicketMinus = TicketMinus; +exports.LucideTicketPercent = TicketPercent; +exports.LucideTicketPlus = TicketPlus; +exports.LucideTicketSlash = TicketSlash; +exports.LucideTicketX = TicketX; +exports.LucideTickets = Tickets; +exports.LucideTicketsPlane = TicketsPlane; +exports.LucideTimer = Timer; +exports.LucideTimerOff = TimerOff; +exports.LucideTimerReset = TimerReset; +exports.LucideToggleLeft = ToggleLeft; +exports.LucideToggleRight = ToggleRight; +exports.LucideToilet = Toilet; +exports.LucideTornado = Tornado; +exports.LucideTorus = Torus; +exports.LucideTouchpad = Touchpad; +exports.LucideTouchpadOff = TouchpadOff; +exports.LucideTowerControl = TowerControl; +exports.LucideToyBrick = ToyBrick; +exports.LucideTractor = Tractor; +exports.LucideTrafficCone = TrafficCone; +exports.LucideTrain = TramFront; +exports.LucideTrainFront = TrainFront; +exports.LucideTrainFrontTunnel = TrainFrontTunnel; +exports.LucideTrainTrack = TrainTrack; +exports.LucideTramFront = TramFront; +exports.LucideTransgender = Transgender; +exports.LucideTrash = Trash; +exports.LucideTrash2 = Trash2; +exports.LucideTreeDeciduous = TreeDeciduous; +exports.LucideTreePalm = TreePalm; +exports.LucideTreePine = TreePine; +exports.LucideTrees = Trees; +exports.LucideTrello = Trello; +exports.LucideTrendingDown = TrendingDown; +exports.LucideTrendingUp = TrendingUp; +exports.LucideTrendingUpDown = TrendingUpDown; +exports.LucideTriangle = Triangle; +exports.LucideTriangleAlert = TriangleAlert; +exports.LucideTriangleDashed = TriangleDashed; +exports.LucideTriangleRight = TriangleRight; +exports.LucideTrophy = Trophy; +exports.LucideTruck = Truck; +exports.LucideTurtle = Turtle; +exports.LucideTv = Tv; +exports.LucideTv2 = TvMinimal; +exports.LucideTvMinimal = TvMinimal; +exports.LucideTvMinimalPlay = TvMinimalPlay; +exports.LucideTwitch = Twitch; +exports.LucideTwitter = Twitter; +exports.LucideType = Type; +exports.LucideTypeOutline = TypeOutline; +exports.LucideUmbrella = Umbrella; +exports.LucideUmbrellaOff = UmbrellaOff; +exports.LucideUnderline = Underline; +exports.LucideUndo = Undo; +exports.LucideUndo2 = Undo2; +exports.LucideUndoDot = UndoDot; +exports.LucideUnfoldHorizontal = UnfoldHorizontal; +exports.LucideUnfoldVertical = UnfoldVertical; +exports.LucideUngroup = Ungroup; +exports.LucideUniversity = University; +exports.LucideUnlink = Unlink; +exports.LucideUnlink2 = Unlink2; +exports.LucideUnlock = LockOpen; +exports.LucideUnlockKeyhole = LockKeyholeOpen; +exports.LucideUnplug = Unplug; +exports.LucideUpload = Upload; +exports.LucideUploadCloud = CloudUpload; +exports.LucideUsb = Usb; +exports.LucideUser = User; +exports.LucideUser2 = UserRound; +exports.LucideUserCheck = UserCheck; +exports.LucideUserCheck2 = UserRoundCheck; +exports.LucideUserCircle = CircleUser; +exports.LucideUserCircle2 = CircleUserRound; +exports.LucideUserCog = UserCog; +exports.LucideUserCog2 = UserRoundCog; +exports.LucideUserMinus = UserMinus; +exports.LucideUserMinus2 = UserRoundMinus; +exports.LucideUserPen = UserPen; +exports.LucideUserPlus = UserPlus; +exports.LucideUserPlus2 = UserRoundPlus; +exports.LucideUserRound = UserRound; +exports.LucideUserRoundCheck = UserRoundCheck; +exports.LucideUserRoundCog = UserRoundCog; +exports.LucideUserRoundMinus = UserRoundMinus; +exports.LucideUserRoundPen = UserRoundPen; +exports.LucideUserRoundPlus = UserRoundPlus; +exports.LucideUserRoundSearch = UserRoundSearch; +exports.LucideUserRoundX = UserRoundX; +exports.LucideUserSearch = UserSearch; +exports.LucideUserSquare = SquareUser; +exports.LucideUserSquare2 = SquareUserRound; +exports.LucideUserX = UserX; +exports.LucideUserX2 = UserRoundX; +exports.LucideUsers = Users; +exports.LucideUsers2 = UsersRound; +exports.LucideUsersRound = UsersRound; +exports.LucideUtensils = Utensils; +exports.LucideUtensilsCrossed = UtensilsCrossed; +exports.LucideUtilityPole = UtilityPole; +exports.LucideVariable = Variable; +exports.LucideVault = Vault; +exports.LucideVegan = Vegan; +exports.LucideVenetianMask = VenetianMask; +exports.LucideVenus = Venus; +exports.LucideVenusAndMars = VenusAndMars; +exports.LucideVerified = BadgeCheck; +exports.LucideVibrate = Vibrate; +exports.LucideVibrateOff = VibrateOff; +exports.LucideVideo = Video; +exports.LucideVideoOff = VideoOff; +exports.LucideVideotape = Videotape; +exports.LucideView = View; +exports.LucideVoicemail = Voicemail; +exports.LucideVolleyball = Volleyball; +exports.LucideVolume = Volume; +exports.LucideVolume1 = Volume1; +exports.LucideVolume2 = Volume2; +exports.LucideVolumeOff = VolumeOff; +exports.LucideVolumeX = VolumeX; +exports.LucideVote = Vote; +exports.LucideWallet = Wallet; +exports.LucideWallet2 = WalletMinimal; +exports.LucideWalletCards = WalletCards; +exports.LucideWalletMinimal = WalletMinimal; +exports.LucideWallpaper = Wallpaper; +exports.LucideWand = Wand; +exports.LucideWand2 = WandSparkles; +exports.LucideWandSparkles = WandSparkles; +exports.LucideWarehouse = Warehouse; +exports.LucideWashingMachine = WashingMachine; +exports.LucideWatch = Watch; +exports.LucideWaves = Waves; +exports.LucideWavesLadder = WavesLadder; +exports.LucideWaypoints = Waypoints; +exports.LucideWebcam = Webcam; +exports.LucideWebhook = Webhook; +exports.LucideWebhookOff = WebhookOff; +exports.LucideWeight = Weight; +exports.LucideWheat = Wheat; +exports.LucideWheatOff = WheatOff; +exports.LucideWholeWord = WholeWord; +exports.LucideWifi = Wifi; +exports.LucideWifiHigh = WifiHigh; +exports.LucideWifiLow = WifiLow; +exports.LucideWifiOff = WifiOff; +exports.LucideWifiZero = WifiZero; +exports.LucideWind = Wind; +exports.LucideWindArrowDown = WindArrowDown; +exports.LucideWine = Wine; +exports.LucideWineOff = WineOff; +exports.LucideWorkflow = Workflow; +exports.LucideWorm = Worm; +exports.LucideWrapText = WrapText; +exports.LucideWrench = Wrench; +exports.LucideX = X; +exports.LucideXCircle = CircleX; +exports.LucideXOctagon = OctagonX; +exports.LucideXSquare = SquareX; +exports.LucideYoutube = Youtube; +exports.LucideZap = Zap; +exports.LucideZapOff = ZapOff; +exports.LucideZoomIn = ZoomIn; +exports.LucideZoomOut = ZoomOut; +exports.Luggage = Luggage; +exports.LuggageIcon = Luggage; +exports.MSquare = SquareM; +exports.MSquareIcon = SquareM; +exports.Magnet = Magnet; +exports.MagnetIcon = Magnet; +exports.Mail = Mail; +exports.MailCheck = MailCheck; +exports.MailCheckIcon = MailCheck; +exports.MailIcon = Mail; +exports.MailMinus = MailMinus; +exports.MailMinusIcon = MailMinus; +exports.MailOpen = MailOpen; +exports.MailOpenIcon = MailOpen; +exports.MailPlus = MailPlus; +exports.MailPlusIcon = MailPlus; +exports.MailQuestion = MailQuestion; +exports.MailQuestionIcon = MailQuestion; +exports.MailSearch = MailSearch; +exports.MailSearchIcon = MailSearch; +exports.MailWarning = MailWarning; +exports.MailWarningIcon = MailWarning; +exports.MailX = MailX; +exports.MailXIcon = MailX; +exports.Mailbox = Mailbox; +exports.MailboxIcon = Mailbox; +exports.Mails = Mails; +exports.MailsIcon = Mails; +exports.Map = Map; +exports.MapIcon = Map; +exports.MapPin = MapPin; +exports.MapPinCheck = MapPinCheck; +exports.MapPinCheckIcon = MapPinCheck; +exports.MapPinCheckInside = MapPinCheckInside; +exports.MapPinCheckInsideIcon = MapPinCheckInside; +exports.MapPinHouse = MapPinHouse; +exports.MapPinHouseIcon = MapPinHouse; +exports.MapPinIcon = MapPin; +exports.MapPinMinus = MapPinMinus; +exports.MapPinMinusIcon = MapPinMinus; +exports.MapPinMinusInside = MapPinMinusInside; +exports.MapPinMinusInsideIcon = MapPinMinusInside; +exports.MapPinOff = MapPinOff; +exports.MapPinOffIcon = MapPinOff; +exports.MapPinPlus = MapPinPlus; +exports.MapPinPlusIcon = MapPinPlus; +exports.MapPinPlusInside = MapPinPlusInside; +exports.MapPinPlusInsideIcon = MapPinPlusInside; +exports.MapPinX = MapPinX; +exports.MapPinXIcon = MapPinX; +exports.MapPinXInside = MapPinXInside; +exports.MapPinXInsideIcon = MapPinXInside; +exports.MapPinned = MapPinned; +exports.MapPinnedIcon = MapPinned; +exports.MapPlus = MapPlus; +exports.MapPlusIcon = MapPlus; +exports.Mars = Mars; +exports.MarsIcon = Mars; +exports.MarsStroke = MarsStroke; +exports.MarsStrokeIcon = MarsStroke; +exports.Martini = Martini; +exports.MartiniIcon = Martini; +exports.Maximize = Maximize; +exports.Maximize2 = Maximize2; +exports.Maximize2Icon = Maximize2; +exports.MaximizeIcon = Maximize; +exports.Medal = Medal; +exports.MedalIcon = Medal; +exports.Megaphone = Megaphone; +exports.MegaphoneIcon = Megaphone; +exports.MegaphoneOff = MegaphoneOff; +exports.MegaphoneOffIcon = MegaphoneOff; +exports.Meh = Meh; +exports.MehIcon = Meh; +exports.MemoryStick = MemoryStick; +exports.MemoryStickIcon = MemoryStick; +exports.Menu = Menu; +exports.MenuIcon = Menu; +exports.MenuSquare = SquareMenu; +exports.MenuSquareIcon = SquareMenu; +exports.Merge = Merge; +exports.MergeIcon = Merge; +exports.MessageCircle = MessageCircle; +exports.MessageCircleCode = MessageCircleCode; +exports.MessageCircleCodeIcon = MessageCircleCode; +exports.MessageCircleDashed = MessageCircleDashed; +exports.MessageCircleDashedIcon = MessageCircleDashed; +exports.MessageCircleHeart = MessageCircleHeart; +exports.MessageCircleHeartIcon = MessageCircleHeart; +exports.MessageCircleIcon = MessageCircle; +exports.MessageCircleMore = MessageCircleMore; +exports.MessageCircleMoreIcon = MessageCircleMore; +exports.MessageCircleOff = MessageCircleOff; +exports.MessageCircleOffIcon = MessageCircleOff; +exports.MessageCirclePlus = MessageCirclePlus; +exports.MessageCirclePlusIcon = MessageCirclePlus; +exports.MessageCircleQuestion = MessageCircleQuestion; +exports.MessageCircleQuestionIcon = MessageCircleQuestion; +exports.MessageCircleReply = MessageCircleReply; +exports.MessageCircleReplyIcon = MessageCircleReply; +exports.MessageCircleWarning = MessageCircleWarning; +exports.MessageCircleWarningIcon = MessageCircleWarning; +exports.MessageCircleX = MessageCircleX; +exports.MessageCircleXIcon = MessageCircleX; +exports.MessageSquare = MessageSquare; +exports.MessageSquareCode = MessageSquareCode; +exports.MessageSquareCodeIcon = MessageSquareCode; +exports.MessageSquareDashed = MessageSquareDashed; +exports.MessageSquareDashedIcon = MessageSquareDashed; +exports.MessageSquareDiff = MessageSquareDiff; +exports.MessageSquareDiffIcon = MessageSquareDiff; +exports.MessageSquareDot = MessageSquareDot; +exports.MessageSquareDotIcon = MessageSquareDot; +exports.MessageSquareHeart = MessageSquareHeart; +exports.MessageSquareHeartIcon = MessageSquareHeart; +exports.MessageSquareIcon = MessageSquare; +exports.MessageSquareLock = MessageSquareLock; +exports.MessageSquareLockIcon = MessageSquareLock; +exports.MessageSquareMore = MessageSquareMore; +exports.MessageSquareMoreIcon = MessageSquareMore; +exports.MessageSquareOff = MessageSquareOff; +exports.MessageSquareOffIcon = MessageSquareOff; +exports.MessageSquarePlus = MessageSquarePlus; +exports.MessageSquarePlusIcon = MessageSquarePlus; +exports.MessageSquareQuote = MessageSquareQuote; +exports.MessageSquareQuoteIcon = MessageSquareQuote; +exports.MessageSquareReply = MessageSquareReply; +exports.MessageSquareReplyIcon = MessageSquareReply; +exports.MessageSquareShare = MessageSquareShare; +exports.MessageSquareShareIcon = MessageSquareShare; +exports.MessageSquareText = MessageSquareText; +exports.MessageSquareTextIcon = MessageSquareText; +exports.MessageSquareWarning = MessageSquareWarning; +exports.MessageSquareWarningIcon = MessageSquareWarning; +exports.MessageSquareX = MessageSquareX; +exports.MessageSquareXIcon = MessageSquareX; +exports.MessagesSquare = MessagesSquare; +exports.MessagesSquareIcon = MessagesSquare; +exports.Mic = Mic; +exports.Mic2 = MicVocal; +exports.Mic2Icon = MicVocal; +exports.MicIcon = Mic; +exports.MicOff = MicOff; +exports.MicOffIcon = MicOff; +exports.MicVocal = MicVocal; +exports.MicVocalIcon = MicVocal; +exports.Microchip = Microchip; +exports.MicrochipIcon = Microchip; +exports.Microscope = Microscope; +exports.MicroscopeIcon = Microscope; +exports.Microwave = Microwave; +exports.MicrowaveIcon = Microwave; +exports.Milestone = Milestone; +exports.MilestoneIcon = Milestone; +exports.Milk = Milk; +exports.MilkIcon = Milk; +exports.MilkOff = MilkOff; +exports.MilkOffIcon = MilkOff; +exports.Minimize = Minimize; +exports.Minimize2 = Minimize2; +exports.Minimize2Icon = Minimize2; +exports.MinimizeIcon = Minimize; +exports.Minus = Minus; +exports.MinusCircle = CircleMinus; +exports.MinusCircleIcon = CircleMinus; +exports.MinusIcon = Minus; +exports.MinusSquare = SquareMinus; +exports.MinusSquareIcon = SquareMinus; +exports.Monitor = Monitor; +exports.MonitorCheck = MonitorCheck; +exports.MonitorCheckIcon = MonitorCheck; +exports.MonitorCog = MonitorCog; +exports.MonitorCogIcon = MonitorCog; +exports.MonitorDot = MonitorDot; +exports.MonitorDotIcon = MonitorDot; +exports.MonitorDown = MonitorDown; +exports.MonitorDownIcon = MonitorDown; +exports.MonitorIcon = Monitor; +exports.MonitorOff = MonitorOff; +exports.MonitorOffIcon = MonitorOff; +exports.MonitorPause = MonitorPause; +exports.MonitorPauseIcon = MonitorPause; +exports.MonitorPlay = MonitorPlay; +exports.MonitorPlayIcon = MonitorPlay; +exports.MonitorSmartphone = MonitorSmartphone; +exports.MonitorSmartphoneIcon = MonitorSmartphone; +exports.MonitorSpeaker = MonitorSpeaker; +exports.MonitorSpeakerIcon = MonitorSpeaker; +exports.MonitorStop = MonitorStop; +exports.MonitorStopIcon = MonitorStop; +exports.MonitorUp = MonitorUp; +exports.MonitorUpIcon = MonitorUp; +exports.MonitorX = MonitorX; +exports.MonitorXIcon = MonitorX; +exports.Moon = Moon; +exports.MoonIcon = Moon; +exports.MoonStar = MoonStar; +exports.MoonStarIcon = MoonStar; +exports.MoreHorizontal = Ellipsis; +exports.MoreHorizontalIcon = Ellipsis; +exports.MoreVertical = EllipsisVertical; +exports.MoreVerticalIcon = EllipsisVertical; +exports.Mountain = Mountain; +exports.MountainIcon = Mountain; +exports.MountainSnow = MountainSnow; +exports.MountainSnowIcon = MountainSnow; +exports.Mouse = Mouse; +exports.MouseIcon = Mouse; +exports.MouseOff = MouseOff; +exports.MouseOffIcon = MouseOff; +exports.MousePointer = MousePointer; +exports.MousePointer2 = MousePointer2; +exports.MousePointer2Icon = MousePointer2; +exports.MousePointerBan = MousePointerBan; +exports.MousePointerBanIcon = MousePointerBan; +exports.MousePointerClick = MousePointerClick; +exports.MousePointerClickIcon = MousePointerClick; +exports.MousePointerIcon = MousePointer; +exports.MousePointerSquareDashed = SquareDashedMousePointer; +exports.MousePointerSquareDashedIcon = SquareDashedMousePointer; +exports.Move = Move; +exports.Move3D = Move3d; +exports.Move3DIcon = Move3d; +exports.Move3d = Move3d; +exports.Move3dIcon = Move3d; +exports.MoveDiagonal = MoveDiagonal; +exports.MoveDiagonal2 = MoveDiagonal2; +exports.MoveDiagonal2Icon = MoveDiagonal2; +exports.MoveDiagonalIcon = MoveDiagonal; +exports.MoveDown = MoveDown; +exports.MoveDownIcon = MoveDown; +exports.MoveDownLeft = MoveDownLeft; +exports.MoveDownLeftIcon = MoveDownLeft; +exports.MoveDownRight = MoveDownRight; +exports.MoveDownRightIcon = MoveDownRight; +exports.MoveHorizontal = MoveHorizontal; +exports.MoveHorizontalIcon = MoveHorizontal; +exports.MoveIcon = Move; +exports.MoveLeft = MoveLeft; +exports.MoveLeftIcon = MoveLeft; +exports.MoveRight = MoveRight; +exports.MoveRightIcon = MoveRight; +exports.MoveUp = MoveUp; +exports.MoveUpIcon = MoveUp; +exports.MoveUpLeft = MoveUpLeft; +exports.MoveUpLeftIcon = MoveUpLeft; +exports.MoveUpRight = MoveUpRight; +exports.MoveUpRightIcon = MoveUpRight; +exports.MoveVertical = MoveVertical; +exports.MoveVerticalIcon = MoveVertical; +exports.Music = Music; +exports.Music2 = Music2; +exports.Music2Icon = Music2; +exports.Music3 = Music3; +exports.Music3Icon = Music3; +exports.Music4 = Music4; +exports.Music4Icon = Music4; +exports.MusicIcon = Music; +exports.Navigation = Navigation; +exports.Navigation2 = Navigation2; +exports.Navigation2Icon = Navigation2; +exports.Navigation2Off = Navigation2Off; +exports.Navigation2OffIcon = Navigation2Off; +exports.NavigationIcon = Navigation; +exports.NavigationOff = NavigationOff; +exports.NavigationOffIcon = NavigationOff; +exports.Network = Network; +exports.NetworkIcon = Network; +exports.Newspaper = Newspaper; +exports.NewspaperIcon = Newspaper; +exports.Nfc = Nfc; +exports.NfcIcon = Nfc; +exports.NonBinary = NonBinary; +exports.NonBinaryIcon = NonBinary; +exports.Notebook = Notebook; +exports.NotebookIcon = Notebook; +exports.NotebookPen = NotebookPen; +exports.NotebookPenIcon = NotebookPen; +exports.NotebookTabs = NotebookTabs; +exports.NotebookTabsIcon = NotebookTabs; +exports.NotebookText = NotebookText; +exports.NotebookTextIcon = NotebookText; +exports.NotepadText = NotepadText; +exports.NotepadTextDashed = NotepadTextDashed; +exports.NotepadTextDashedIcon = NotepadTextDashed; +exports.NotepadTextIcon = NotepadText; +exports.Nut = Nut; +exports.NutIcon = Nut; +exports.NutOff = NutOff; +exports.NutOffIcon = NutOff; +exports.Octagon = Octagon; +exports.OctagonAlert = OctagonAlert; +exports.OctagonAlertIcon = OctagonAlert; +exports.OctagonIcon = Octagon; +exports.OctagonMinus = OctagonMinus; +exports.OctagonMinusIcon = OctagonMinus; +exports.OctagonPause = OctagonPause; +exports.OctagonPauseIcon = OctagonPause; +exports.OctagonX = OctagonX; +exports.OctagonXIcon = OctagonX; +exports.Omega = Omega; +exports.OmegaIcon = Omega; +exports.Option = Option; +exports.OptionIcon = Option; +exports.Orbit = Orbit; +exports.OrbitIcon = Orbit; +exports.Origami = Origami; +exports.OrigamiIcon = Origami; +exports.Outdent = IndentDecrease; +exports.OutdentIcon = IndentDecrease; +exports.Package = Package; +exports.Package2 = Package2; +exports.Package2Icon = Package2; +exports.PackageCheck = PackageCheck; +exports.PackageCheckIcon = PackageCheck; +exports.PackageIcon = Package; +exports.PackageMinus = PackageMinus; +exports.PackageMinusIcon = PackageMinus; +exports.PackageOpen = PackageOpen; +exports.PackageOpenIcon = PackageOpen; +exports.PackagePlus = PackagePlus; +exports.PackagePlusIcon = PackagePlus; +exports.PackageSearch = PackageSearch; +exports.PackageSearchIcon = PackageSearch; +exports.PackageX = PackageX; +exports.PackageXIcon = PackageX; +exports.PaintBucket = PaintBucket; +exports.PaintBucketIcon = PaintBucket; +exports.PaintRoller = PaintRoller; +exports.PaintRollerIcon = PaintRoller; +exports.Paintbrush = Paintbrush; +exports.Paintbrush2 = PaintbrushVertical; +exports.Paintbrush2Icon = PaintbrushVertical; +exports.PaintbrushIcon = Paintbrush; +exports.PaintbrushVertical = PaintbrushVertical; +exports.PaintbrushVerticalIcon = PaintbrushVertical; +exports.Palette = Palette; +exports.PaletteIcon = Palette; +exports.Palmtree = TreePalm; +exports.PalmtreeIcon = TreePalm; +exports.PanelBottom = PanelBottom; +exports.PanelBottomClose = PanelBottomClose; +exports.PanelBottomCloseIcon = PanelBottomClose; +exports.PanelBottomDashed = PanelBottomDashed; +exports.PanelBottomDashedIcon = PanelBottomDashed; +exports.PanelBottomIcon = PanelBottom; +exports.PanelBottomInactive = PanelBottomDashed; +exports.PanelBottomInactiveIcon = PanelBottomDashed; +exports.PanelBottomOpen = PanelBottomOpen; +exports.PanelBottomOpenIcon = PanelBottomOpen; +exports.PanelLeft = PanelLeft; +exports.PanelLeftClose = PanelLeftClose; +exports.PanelLeftCloseIcon = PanelLeftClose; +exports.PanelLeftDashed = PanelLeftDashed; +exports.PanelLeftDashedIcon = PanelLeftDashed; +exports.PanelLeftIcon = PanelLeft; +exports.PanelLeftInactive = PanelLeftDashed; +exports.PanelLeftInactiveIcon = PanelLeftDashed; +exports.PanelLeftOpen = PanelLeftOpen; +exports.PanelLeftOpenIcon = PanelLeftOpen; +exports.PanelRight = PanelRight; +exports.PanelRightClose = PanelRightClose; +exports.PanelRightCloseIcon = PanelRightClose; +exports.PanelRightDashed = PanelRightDashed; +exports.PanelRightDashedIcon = PanelRightDashed; +exports.PanelRightIcon = PanelRight; +exports.PanelRightInactive = PanelRightDashed; +exports.PanelRightInactiveIcon = PanelRightDashed; +exports.PanelRightOpen = PanelRightOpen; +exports.PanelRightOpenIcon = PanelRightOpen; +exports.PanelTop = PanelTop; +exports.PanelTopClose = PanelTopClose; +exports.PanelTopCloseIcon = PanelTopClose; +exports.PanelTopDashed = PanelTopDashed; +exports.PanelTopDashedIcon = PanelTopDashed; +exports.PanelTopIcon = PanelTop; +exports.PanelTopInactive = PanelTopDashed; +exports.PanelTopInactiveIcon = PanelTopDashed; +exports.PanelTopOpen = PanelTopOpen; +exports.PanelTopOpenIcon = PanelTopOpen; +exports.PanelsLeftBottom = PanelsLeftBottom; +exports.PanelsLeftBottomIcon = PanelsLeftBottom; +exports.PanelsLeftRight = Columns3; +exports.PanelsLeftRightIcon = Columns3; +exports.PanelsRightBottom = PanelsRightBottom; +exports.PanelsRightBottomIcon = PanelsRightBottom; +exports.PanelsTopBottom = Rows3; +exports.PanelsTopBottomIcon = Rows3; +exports.PanelsTopLeft = PanelsTopLeft; +exports.PanelsTopLeftIcon = PanelsTopLeft; +exports.Paperclip = Paperclip; +exports.PaperclipIcon = Paperclip; +exports.Parentheses = Parentheses; +exports.ParenthesesIcon = Parentheses; +exports.ParkingCircle = CircleParking; +exports.ParkingCircleIcon = CircleParking; +exports.ParkingCircleOff = CircleParkingOff; +exports.ParkingCircleOffIcon = CircleParkingOff; +exports.ParkingMeter = ParkingMeter; +exports.ParkingMeterIcon = ParkingMeter; +exports.ParkingSquare = SquareParking; +exports.ParkingSquareIcon = SquareParking; +exports.ParkingSquareOff = SquareParkingOff; +exports.ParkingSquareOffIcon = SquareParkingOff; +exports.PartyPopper = PartyPopper; +exports.PartyPopperIcon = PartyPopper; +exports.Pause = Pause; +exports.PauseCircle = CirclePause; +exports.PauseCircleIcon = CirclePause; +exports.PauseIcon = Pause; +exports.PauseOctagon = OctagonPause; +exports.PauseOctagonIcon = OctagonPause; +exports.PawPrint = PawPrint; +exports.PawPrintIcon = PawPrint; +exports.PcCase = PcCase; +exports.PcCaseIcon = PcCase; +exports.Pen = Pen; +exports.PenBox = SquarePen; +exports.PenBoxIcon = SquarePen; +exports.PenIcon = Pen; +exports.PenLine = PenLine; +exports.PenLineIcon = PenLine; +exports.PenOff = PenOff; +exports.PenOffIcon = PenOff; +exports.PenSquare = SquarePen; +exports.PenSquareIcon = SquarePen; +exports.PenTool = PenTool; +exports.PenToolIcon = PenTool; +exports.Pencil = Pencil; +exports.PencilIcon = Pencil; +exports.PencilLine = PencilLine; +exports.PencilLineIcon = PencilLine; +exports.PencilOff = PencilOff; +exports.PencilOffIcon = PencilOff; +exports.PencilRuler = PencilRuler; +exports.PencilRulerIcon = PencilRuler; +exports.Pentagon = Pentagon; +exports.PentagonIcon = Pentagon; +exports.Percent = Percent; +exports.PercentCircle = CirclePercent; +exports.PercentCircleIcon = CirclePercent; +exports.PercentDiamond = DiamondPercent; +exports.PercentDiamondIcon = DiamondPercent; +exports.PercentIcon = Percent; +exports.PercentSquare = SquarePercent; +exports.PercentSquareIcon = SquarePercent; +exports.PersonStanding = PersonStanding; +exports.PersonStandingIcon = PersonStanding; +exports.PhilippinePeso = PhilippinePeso; +exports.PhilippinePesoIcon = PhilippinePeso; +exports.Phone = Phone; +exports.PhoneCall = PhoneCall; +exports.PhoneCallIcon = PhoneCall; +exports.PhoneForwarded = PhoneForwarded; +exports.PhoneForwardedIcon = PhoneForwarded; +exports.PhoneIcon = Phone; +exports.PhoneIncoming = PhoneIncoming; +exports.PhoneIncomingIcon = PhoneIncoming; +exports.PhoneMissed = PhoneMissed; +exports.PhoneMissedIcon = PhoneMissed; +exports.PhoneOff = PhoneOff; +exports.PhoneOffIcon = PhoneOff; +exports.PhoneOutgoing = PhoneOutgoing; +exports.PhoneOutgoingIcon = PhoneOutgoing; +exports.Pi = Pi; +exports.PiIcon = Pi; +exports.PiSquare = SquarePi; +exports.PiSquareIcon = SquarePi; +exports.Piano = Piano; +exports.PianoIcon = Piano; +exports.Pickaxe = Pickaxe; +exports.PickaxeIcon = Pickaxe; +exports.PictureInPicture = PictureInPicture; +exports.PictureInPicture2 = PictureInPicture2; +exports.PictureInPicture2Icon = PictureInPicture2; +exports.PictureInPictureIcon = PictureInPicture; +exports.PieChart = ChartPie; +exports.PieChartIcon = ChartPie; +exports.PiggyBank = PiggyBank; +exports.PiggyBankIcon = PiggyBank; +exports.Pilcrow = Pilcrow; +exports.PilcrowIcon = Pilcrow; +exports.PilcrowLeft = PilcrowLeft; +exports.PilcrowLeftIcon = PilcrowLeft; +exports.PilcrowRight = PilcrowRight; +exports.PilcrowRightIcon = PilcrowRight; +exports.PilcrowSquare = SquarePilcrow; +exports.PilcrowSquareIcon = SquarePilcrow; +exports.Pill = Pill; +exports.PillBottle = PillBottle; +exports.PillBottleIcon = PillBottle; +exports.PillIcon = Pill; +exports.Pin = Pin; +exports.PinIcon = Pin; +exports.PinOff = PinOff; +exports.PinOffIcon = PinOff; +exports.Pipette = Pipette; +exports.PipetteIcon = Pipette; +exports.Pizza = Pizza; +exports.PizzaIcon = Pizza; +exports.Plane = Plane; +exports.PlaneIcon = Plane; +exports.PlaneLanding = PlaneLanding; +exports.PlaneLandingIcon = PlaneLanding; +exports.PlaneTakeoff = PlaneTakeoff; +exports.PlaneTakeoffIcon = PlaneTakeoff; +exports.Play = Play; +exports.PlayCircle = CirclePlay; +exports.PlayCircleIcon = CirclePlay; +exports.PlayIcon = Play; +exports.PlaySquare = SquarePlay; +exports.PlaySquareIcon = SquarePlay; +exports.Plug = Plug; +exports.Plug2 = Plug2; +exports.Plug2Icon = Plug2; +exports.PlugIcon = Plug; +exports.PlugZap = PlugZap; +exports.PlugZap2 = PlugZap; +exports.PlugZap2Icon = PlugZap; +exports.PlugZapIcon = PlugZap; +exports.Plus = Plus; +exports.PlusCircle = CirclePlus; +exports.PlusCircleIcon = CirclePlus; +exports.PlusIcon = Plus; +exports.PlusSquare = SquarePlus; +exports.PlusSquareIcon = SquarePlus; +exports.Pocket = Pocket; +exports.PocketIcon = Pocket; +exports.PocketKnife = PocketKnife; +exports.PocketKnifeIcon = PocketKnife; +exports.Podcast = Podcast; +exports.PodcastIcon = Podcast; +exports.Pointer = Pointer; +exports.PointerIcon = Pointer; +exports.PointerOff = PointerOff; +exports.PointerOffIcon = PointerOff; +exports.Popcorn = Popcorn; +exports.PopcornIcon = Popcorn; +exports.Popsicle = Popsicle; +exports.PopsicleIcon = Popsicle; +exports.PoundSterling = PoundSterling; +exports.PoundSterlingIcon = PoundSterling; +exports.Power = Power; +exports.PowerCircle = CirclePower; +exports.PowerCircleIcon = CirclePower; +exports.PowerIcon = Power; +exports.PowerOff = PowerOff; +exports.PowerOffIcon = PowerOff; +exports.PowerSquare = SquarePower; +exports.PowerSquareIcon = SquarePower; +exports.Presentation = Presentation; +exports.PresentationIcon = Presentation; +exports.Printer = Printer; +exports.PrinterCheck = PrinterCheck; +exports.PrinterCheckIcon = PrinterCheck; +exports.PrinterIcon = Printer; +exports.Projector = Projector; +exports.ProjectorIcon = Projector; +exports.Proportions = Proportions; +exports.ProportionsIcon = Proportions; +exports.Puzzle = Puzzle; +exports.PuzzleIcon = Puzzle; +exports.Pyramid = Pyramid; +exports.PyramidIcon = Pyramid; +exports.QrCode = QrCode; +exports.QrCodeIcon = QrCode; +exports.Quote = Quote; +exports.QuoteIcon = Quote; +exports.Rabbit = Rabbit; +exports.RabbitIcon = Rabbit; +exports.Radar = Radar; +exports.RadarIcon = Radar; +exports.Radiation = Radiation; +exports.RadiationIcon = Radiation; +exports.Radical = Radical; +exports.RadicalIcon = Radical; +exports.Radio = Radio; +exports.RadioIcon = Radio; +exports.RadioReceiver = RadioReceiver; +exports.RadioReceiverIcon = RadioReceiver; +exports.RadioTower = RadioTower; +exports.RadioTowerIcon = RadioTower; +exports.Radius = Radius; +exports.RadiusIcon = Radius; +exports.RailSymbol = RailSymbol; +exports.RailSymbolIcon = RailSymbol; +exports.Rainbow = Rainbow; +exports.RainbowIcon = Rainbow; +exports.Rat = Rat; +exports.RatIcon = Rat; +exports.Ratio = Ratio; +exports.RatioIcon = Ratio; +exports.Receipt = Receipt; +exports.ReceiptCent = ReceiptCent; +exports.ReceiptCentIcon = ReceiptCent; +exports.ReceiptEuro = ReceiptEuro; +exports.ReceiptEuroIcon = ReceiptEuro; +exports.ReceiptIcon = Receipt; +exports.ReceiptIndianRupee = ReceiptIndianRupee; +exports.ReceiptIndianRupeeIcon = ReceiptIndianRupee; +exports.ReceiptJapaneseYen = ReceiptJapaneseYen; +exports.ReceiptJapaneseYenIcon = ReceiptJapaneseYen; +exports.ReceiptPoundSterling = ReceiptPoundSterling; +exports.ReceiptPoundSterlingIcon = ReceiptPoundSterling; +exports.ReceiptRussianRuble = ReceiptRussianRuble; +exports.ReceiptRussianRubleIcon = ReceiptRussianRuble; +exports.ReceiptSwissFranc = ReceiptSwissFranc; +exports.ReceiptSwissFrancIcon = ReceiptSwissFranc; +exports.ReceiptText = ReceiptText; +exports.ReceiptTextIcon = ReceiptText; +exports.RectangleEllipsis = RectangleEllipsis; +exports.RectangleEllipsisIcon = RectangleEllipsis; +exports.RectangleHorizontal = RectangleHorizontal; +exports.RectangleHorizontalIcon = RectangleHorizontal; +exports.RectangleVertical = RectangleVertical; +exports.RectangleVerticalIcon = RectangleVertical; +exports.Recycle = Recycle; +exports.RecycleIcon = Recycle; +exports.Redo = Redo; +exports.Redo2 = Redo2; +exports.Redo2Icon = Redo2; +exports.RedoDot = RedoDot; +exports.RedoDotIcon = RedoDot; +exports.RedoIcon = Redo; +exports.RefreshCcw = RefreshCcw; +exports.RefreshCcwDot = RefreshCcwDot; +exports.RefreshCcwDotIcon = RefreshCcwDot; +exports.RefreshCcwIcon = RefreshCcw; +exports.RefreshCw = RefreshCw; +exports.RefreshCwIcon = RefreshCw; +exports.RefreshCwOff = RefreshCwOff; +exports.RefreshCwOffIcon = RefreshCwOff; +exports.Refrigerator = Refrigerator; +exports.RefrigeratorIcon = Refrigerator; +exports.Regex = Regex; +exports.RegexIcon = Regex; +exports.RemoveFormatting = RemoveFormatting; +exports.RemoveFormattingIcon = RemoveFormatting; +exports.Repeat = Repeat; +exports.Repeat1 = Repeat1; +exports.Repeat1Icon = Repeat1; +exports.Repeat2 = Repeat2; +exports.Repeat2Icon = Repeat2; +exports.RepeatIcon = Repeat; +exports.Replace = Replace; +exports.ReplaceAll = ReplaceAll; +exports.ReplaceAllIcon = ReplaceAll; +exports.ReplaceIcon = Replace; +exports.Reply = Reply; +exports.ReplyAll = ReplyAll; +exports.ReplyAllIcon = ReplyAll; +exports.ReplyIcon = Reply; +exports.Rewind = Rewind; +exports.RewindIcon = Rewind; +exports.Ribbon = Ribbon; +exports.RibbonIcon = Ribbon; +exports.Rocket = Rocket; +exports.RocketIcon = Rocket; +exports.RockingChair = RockingChair; +exports.RockingChairIcon = RockingChair; +exports.RollerCoaster = RollerCoaster; +exports.RollerCoasterIcon = RollerCoaster; +exports.Rotate3D = Rotate3d; +exports.Rotate3DIcon = Rotate3d; +exports.Rotate3d = Rotate3d; +exports.Rotate3dIcon = Rotate3d; +exports.RotateCcw = RotateCcw; +exports.RotateCcwIcon = RotateCcw; +exports.RotateCcwSquare = RotateCcwSquare; +exports.RotateCcwSquareIcon = RotateCcwSquare; +exports.RotateCw = RotateCw; +exports.RotateCwIcon = RotateCw; +exports.RotateCwSquare = RotateCwSquare; +exports.RotateCwSquareIcon = RotateCwSquare; +exports.Route = Route; +exports.RouteIcon = Route; +exports.RouteOff = RouteOff; +exports.RouteOffIcon = RouteOff; +exports.Router = Router; +exports.RouterIcon = Router; +exports.Rows = Rows2; +exports.Rows2 = Rows2; +exports.Rows2Icon = Rows2; +exports.Rows3 = Rows3; +exports.Rows3Icon = Rows3; +exports.Rows4 = Rows4; +exports.Rows4Icon = Rows4; +exports.RowsIcon = Rows2; +exports.Rss = Rss; +exports.RssIcon = Rss; +exports.Ruler = Ruler; +exports.RulerIcon = Ruler; +exports.RussianRuble = RussianRuble; +exports.RussianRubleIcon = RussianRuble; +exports.Sailboat = Sailboat; +exports.SailboatIcon = Sailboat; +exports.Salad = Salad; +exports.SaladIcon = Salad; +exports.Sandwich = Sandwich; +exports.SandwichIcon = Sandwich; +exports.Satellite = Satellite; +exports.SatelliteDish = SatelliteDish; +exports.SatelliteDishIcon = SatelliteDish; +exports.SatelliteIcon = Satellite; +exports.Save = Save; +exports.SaveAll = SaveAll; +exports.SaveAllIcon = SaveAll; +exports.SaveIcon = Save; +exports.SaveOff = SaveOff; +exports.SaveOffIcon = SaveOff; +exports.Scale = Scale; +exports.Scale3D = Scale3d; +exports.Scale3DIcon = Scale3d; +exports.Scale3d = Scale3d; +exports.Scale3dIcon = Scale3d; +exports.ScaleIcon = Scale; +exports.Scaling = Scaling; +exports.ScalingIcon = Scaling; +exports.Scan = Scan; +exports.ScanBarcode = ScanBarcode; +exports.ScanBarcodeIcon = ScanBarcode; +exports.ScanEye = ScanEye; +exports.ScanEyeIcon = ScanEye; +exports.ScanFace = ScanFace; +exports.ScanFaceIcon = ScanFace; +exports.ScanHeart = ScanHeart; +exports.ScanHeartIcon = ScanHeart; +exports.ScanIcon = Scan; +exports.ScanLine = ScanLine; +exports.ScanLineIcon = ScanLine; +exports.ScanQrCode = ScanQrCode; +exports.ScanQrCodeIcon = ScanQrCode; +exports.ScanSearch = ScanSearch; +exports.ScanSearchIcon = ScanSearch; +exports.ScanText = ScanText; +exports.ScanTextIcon = ScanText; +exports.ScatterChart = ChartScatter; +exports.ScatterChartIcon = ChartScatter; +exports.School = School; +exports.School2 = University; +exports.School2Icon = University; +exports.SchoolIcon = School; +exports.Scissors = Scissors; +exports.ScissorsIcon = Scissors; +exports.ScissorsLineDashed = ScissorsLineDashed; +exports.ScissorsLineDashedIcon = ScissorsLineDashed; +exports.ScissorsSquare = SquareScissors; +exports.ScissorsSquareDashedBottom = SquareBottomDashedScissors; +exports.ScissorsSquareDashedBottomIcon = SquareBottomDashedScissors; +exports.ScissorsSquareIcon = SquareScissors; +exports.ScreenShare = ScreenShare; +exports.ScreenShareIcon = ScreenShare; +exports.ScreenShareOff = ScreenShareOff; +exports.ScreenShareOffIcon = ScreenShareOff; +exports.Scroll = Scroll; +exports.ScrollIcon = Scroll; +exports.ScrollText = ScrollText; +exports.ScrollTextIcon = ScrollText; +exports.Search = Search; +exports.SearchCheck = SearchCheck; +exports.SearchCheckIcon = SearchCheck; +exports.SearchCode = SearchCode; +exports.SearchCodeIcon = SearchCode; +exports.SearchIcon = Search; +exports.SearchSlash = SearchSlash; +exports.SearchSlashIcon = SearchSlash; +exports.SearchX = SearchX; +exports.SearchXIcon = SearchX; +exports.Section = Section; +exports.SectionIcon = Section; +exports.Send = Send; +exports.SendHorizonal = SendHorizontal; +exports.SendHorizonalIcon = SendHorizontal; +exports.SendHorizontal = SendHorizontal; +exports.SendHorizontalIcon = SendHorizontal; +exports.SendIcon = Send; +exports.SendToBack = SendToBack; +exports.SendToBackIcon = SendToBack; +exports.SeparatorHorizontal = SeparatorHorizontal; +exports.SeparatorHorizontalIcon = SeparatorHorizontal; +exports.SeparatorVertical = SeparatorVertical; +exports.SeparatorVerticalIcon = SeparatorVertical; +exports.Server = Server; +exports.ServerCog = ServerCog; +exports.ServerCogIcon = ServerCog; +exports.ServerCrash = ServerCrash; +exports.ServerCrashIcon = ServerCrash; +exports.ServerIcon = Server; +exports.ServerOff = ServerOff; +exports.ServerOffIcon = ServerOff; +exports.Settings = Settings; +exports.Settings2 = Settings2; +exports.Settings2Icon = Settings2; +exports.SettingsIcon = Settings; +exports.Shapes = Shapes; +exports.ShapesIcon = Shapes; +exports.Share = Share; +exports.Share2 = Share2; +exports.Share2Icon = Share2; +exports.ShareIcon = Share; +exports.Sheet = Sheet; +exports.SheetIcon = Sheet; +exports.Shell = Shell; +exports.ShellIcon = Shell; +exports.Shield = Shield; +exports.ShieldAlert = ShieldAlert; +exports.ShieldAlertIcon = ShieldAlert; +exports.ShieldBan = ShieldBan; +exports.ShieldBanIcon = ShieldBan; +exports.ShieldCheck = ShieldCheck; +exports.ShieldCheckIcon = ShieldCheck; +exports.ShieldClose = ShieldX; +exports.ShieldCloseIcon = ShieldX; +exports.ShieldEllipsis = ShieldEllipsis; +exports.ShieldEllipsisIcon = ShieldEllipsis; +exports.ShieldHalf = ShieldHalf; +exports.ShieldHalfIcon = ShieldHalf; +exports.ShieldIcon = Shield; +exports.ShieldMinus = ShieldMinus; +exports.ShieldMinusIcon = ShieldMinus; +exports.ShieldOff = ShieldOff; +exports.ShieldOffIcon = ShieldOff; +exports.ShieldPlus = ShieldPlus; +exports.ShieldPlusIcon = ShieldPlus; +exports.ShieldQuestion = ShieldQuestion; +exports.ShieldQuestionIcon = ShieldQuestion; +exports.ShieldX = ShieldX; +exports.ShieldXIcon = ShieldX; +exports.Ship = Ship; +exports.ShipIcon = Ship; +exports.ShipWheel = ShipWheel; +exports.ShipWheelIcon = ShipWheel; +exports.Shirt = Shirt; +exports.ShirtIcon = Shirt; +exports.ShoppingBag = ShoppingBag; +exports.ShoppingBagIcon = ShoppingBag; +exports.ShoppingBasket = ShoppingBasket; +exports.ShoppingBasketIcon = ShoppingBasket; +exports.ShoppingCart = ShoppingCart; +exports.ShoppingCartIcon = ShoppingCart; +exports.Shovel = Shovel; +exports.ShovelIcon = Shovel; +exports.ShowerHead = ShowerHead; +exports.ShowerHeadIcon = ShowerHead; +exports.Shrink = Shrink; +exports.ShrinkIcon = Shrink; +exports.Shrub = Shrub; +exports.ShrubIcon = Shrub; +exports.Shuffle = Shuffle; +exports.ShuffleIcon = Shuffle; +exports.Sidebar = PanelLeft; +exports.SidebarClose = PanelLeftClose; +exports.SidebarCloseIcon = PanelLeftClose; +exports.SidebarIcon = PanelLeft; +exports.SidebarOpen = PanelLeftOpen; +exports.SidebarOpenIcon = PanelLeftOpen; +exports.Sigma = Sigma; +exports.SigmaIcon = Sigma; +exports.SigmaSquare = SquareSigma; +exports.SigmaSquareIcon = SquareSigma; +exports.Signal = Signal; +exports.SignalHigh = SignalHigh; +exports.SignalHighIcon = SignalHigh; +exports.SignalIcon = Signal; +exports.SignalLow = SignalLow; +exports.SignalLowIcon = SignalLow; +exports.SignalMedium = SignalMedium; +exports.SignalMediumIcon = SignalMedium; +exports.SignalZero = SignalZero; +exports.SignalZeroIcon = SignalZero; +exports.Signature = Signature; +exports.SignatureIcon = Signature; +exports.Signpost = Signpost; +exports.SignpostBig = SignpostBig; +exports.SignpostBigIcon = SignpostBig; +exports.SignpostIcon = Signpost; +exports.Siren = Siren; +exports.SirenIcon = Siren; +exports.SkipBack = SkipBack; +exports.SkipBackIcon = SkipBack; +exports.SkipForward = SkipForward; +exports.SkipForwardIcon = SkipForward; +exports.Skull = Skull; +exports.SkullIcon = Skull; +exports.Slack = Slack; +exports.SlackIcon = Slack; +exports.Slash = Slash; +exports.SlashIcon = Slash; +exports.SlashSquare = SquareSlash; +exports.SlashSquareIcon = SquareSlash; +exports.Slice = Slice; +exports.SliceIcon = Slice; +exports.Sliders = SlidersVertical; +exports.SlidersHorizontal = SlidersHorizontal; +exports.SlidersHorizontalIcon = SlidersHorizontal; +exports.SlidersIcon = SlidersVertical; +exports.SlidersVertical = SlidersVertical; +exports.SlidersVerticalIcon = SlidersVertical; +exports.Smartphone = Smartphone; +exports.SmartphoneCharging = SmartphoneCharging; +exports.SmartphoneChargingIcon = SmartphoneCharging; +exports.SmartphoneIcon = Smartphone; +exports.SmartphoneNfc = SmartphoneNfc; +exports.SmartphoneNfcIcon = SmartphoneNfc; +exports.Smile = Smile; +exports.SmileIcon = Smile; +exports.SmilePlus = SmilePlus; +exports.SmilePlusIcon = SmilePlus; +exports.Snail = Snail; +exports.SnailIcon = Snail; +exports.Snowflake = Snowflake; +exports.SnowflakeIcon = Snowflake; +exports.Sofa = Sofa; +exports.SofaIcon = Sofa; +exports.SortAsc = ArrowUpNarrowWide; +exports.SortAscIcon = ArrowUpNarrowWide; +exports.SortDesc = ArrowDownWideNarrow; +exports.SortDescIcon = ArrowDownWideNarrow; +exports.Soup = Soup; +exports.SoupIcon = Soup; +exports.Space = Space; +exports.SpaceIcon = Space; +exports.Spade = Spade; +exports.SpadeIcon = Spade; +exports.Sparkle = Sparkle; +exports.SparkleIcon = Sparkle; +exports.Sparkles = Sparkles; +exports.SparklesIcon = Sparkles; +exports.Speaker = Speaker; +exports.SpeakerIcon = Speaker; +exports.Speech = Speech; +exports.SpeechIcon = Speech; +exports.SpellCheck = SpellCheck; +exports.SpellCheck2 = SpellCheck2; +exports.SpellCheck2Icon = SpellCheck2; +exports.SpellCheckIcon = SpellCheck; +exports.Spline = Spline; +exports.SplineIcon = Spline; +exports.Split = Split; +exports.SplitIcon = Split; +exports.SplitSquareHorizontal = SquareSplitHorizontal; +exports.SplitSquareHorizontalIcon = SquareSplitHorizontal; +exports.SplitSquareVertical = SquareSplitVertical; +exports.SplitSquareVerticalIcon = SquareSplitVertical; +exports.SprayCan = SprayCan; +exports.SprayCanIcon = SprayCan; +exports.Sprout = Sprout; +exports.SproutIcon = Sprout; +exports.Square = Square; +exports.SquareActivity = SquareActivity; +exports.SquareActivityIcon = SquareActivity; +exports.SquareArrowDown = SquareArrowDown; +exports.SquareArrowDownIcon = SquareArrowDown; +exports.SquareArrowDownLeft = SquareArrowDownLeft; +exports.SquareArrowDownLeftIcon = SquareArrowDownLeft; +exports.SquareArrowDownRight = SquareArrowDownRight; +exports.SquareArrowDownRightIcon = SquareArrowDownRight; +exports.SquareArrowLeft = SquareArrowLeft; +exports.SquareArrowLeftIcon = SquareArrowLeft; +exports.SquareArrowOutDownLeft = SquareArrowOutDownLeft; +exports.SquareArrowOutDownLeftIcon = SquareArrowOutDownLeft; +exports.SquareArrowOutDownRight = SquareArrowOutDownRight; +exports.SquareArrowOutDownRightIcon = SquareArrowOutDownRight; +exports.SquareArrowOutUpLeft = SquareArrowOutUpLeft; +exports.SquareArrowOutUpLeftIcon = SquareArrowOutUpLeft; +exports.SquareArrowOutUpRight = SquareArrowOutUpRight; +exports.SquareArrowOutUpRightIcon = SquareArrowOutUpRight; +exports.SquareArrowRight = SquareArrowRight; +exports.SquareArrowRightIcon = SquareArrowRight; +exports.SquareArrowUp = SquareArrowUp; +exports.SquareArrowUpIcon = SquareArrowUp; +exports.SquareArrowUpLeft = SquareArrowUpLeft; +exports.SquareArrowUpLeftIcon = SquareArrowUpLeft; +exports.SquareArrowUpRight = SquareArrowUpRight; +exports.SquareArrowUpRightIcon = SquareArrowUpRight; +exports.SquareAsterisk = SquareAsterisk; +exports.SquareAsteriskIcon = SquareAsterisk; +exports.SquareBottomDashedScissors = SquareBottomDashedScissors; +exports.SquareBottomDashedScissorsIcon = SquareBottomDashedScissors; +exports.SquareChartGantt = SquareChartGantt; +exports.SquareChartGanttIcon = SquareChartGantt; +exports.SquareCheck = SquareCheck; +exports.SquareCheckBig = SquareCheckBig; +exports.SquareCheckBigIcon = SquareCheckBig; +exports.SquareCheckIcon = SquareCheck; +exports.SquareChevronDown = SquareChevronDown; +exports.SquareChevronDownIcon = SquareChevronDown; +exports.SquareChevronLeft = SquareChevronLeft; +exports.SquareChevronLeftIcon = SquareChevronLeft; +exports.SquareChevronRight = SquareChevronRight; +exports.SquareChevronRightIcon = SquareChevronRight; +exports.SquareChevronUp = SquareChevronUp; +exports.SquareChevronUpIcon = SquareChevronUp; +exports.SquareCode = SquareCode; +exports.SquareCodeIcon = SquareCode; +exports.SquareDashed = SquareDashed; +exports.SquareDashedBottom = SquareDashedBottom; +exports.SquareDashedBottomCode = SquareDashedBottomCode; +exports.SquareDashedBottomCodeIcon = SquareDashedBottomCode; +exports.SquareDashedBottomIcon = SquareDashedBottom; +exports.SquareDashedIcon = SquareDashed; +exports.SquareDashedKanban = SquareDashedKanban; +exports.SquareDashedKanbanIcon = SquareDashedKanban; +exports.SquareDashedMousePointer = SquareDashedMousePointer; +exports.SquareDashedMousePointerIcon = SquareDashedMousePointer; +exports.SquareDivide = SquareDivide; +exports.SquareDivideIcon = SquareDivide; +exports.SquareDot = SquareDot; +exports.SquareDotIcon = SquareDot; +exports.SquareEqual = SquareEqual; +exports.SquareEqualIcon = SquareEqual; +exports.SquareFunction = SquareFunction; +exports.SquareFunctionIcon = SquareFunction; +exports.SquareGanttChart = SquareChartGantt; +exports.SquareGanttChartIcon = SquareChartGantt; +exports.SquareIcon = Square; +exports.SquareKanban = SquareKanban; +exports.SquareKanbanIcon = SquareKanban; +exports.SquareLibrary = SquareLibrary; +exports.SquareLibraryIcon = SquareLibrary; +exports.SquareM = SquareM; +exports.SquareMIcon = SquareM; +exports.SquareMenu = SquareMenu; +exports.SquareMenuIcon = SquareMenu; +exports.SquareMinus = SquareMinus; +exports.SquareMinusIcon = SquareMinus; +exports.SquareMousePointer = SquareMousePointer; +exports.SquareMousePointerIcon = SquareMousePointer; +exports.SquareParking = SquareParking; +exports.SquareParkingIcon = SquareParking; +exports.SquareParkingOff = SquareParkingOff; +exports.SquareParkingOffIcon = SquareParkingOff; +exports.SquarePen = SquarePen; +exports.SquarePenIcon = SquarePen; +exports.SquarePercent = SquarePercent; +exports.SquarePercentIcon = SquarePercent; +exports.SquarePi = SquarePi; +exports.SquarePiIcon = SquarePi; +exports.SquarePilcrow = SquarePilcrow; +exports.SquarePilcrowIcon = SquarePilcrow; +exports.SquarePlay = SquarePlay; +exports.SquarePlayIcon = SquarePlay; +exports.SquarePlus = SquarePlus; +exports.SquarePlusIcon = SquarePlus; +exports.SquarePower = SquarePower; +exports.SquarePowerIcon = SquarePower; +exports.SquareRadical = SquareRadical; +exports.SquareRadicalIcon = SquareRadical; +exports.SquareScissors = SquareScissors; +exports.SquareScissorsIcon = SquareScissors; +exports.SquareSigma = SquareSigma; +exports.SquareSigmaIcon = SquareSigma; +exports.SquareSlash = SquareSlash; +exports.SquareSlashIcon = SquareSlash; +exports.SquareSplitHorizontal = SquareSplitHorizontal; +exports.SquareSplitHorizontalIcon = SquareSplitHorizontal; +exports.SquareSplitVertical = SquareSplitVertical; +exports.SquareSplitVerticalIcon = SquareSplitVertical; +exports.SquareSquare = SquareSquare; +exports.SquareSquareIcon = SquareSquare; +exports.SquareStack = SquareStack; +exports.SquareStackIcon = SquareStack; +exports.SquareTerminal = SquareTerminal; +exports.SquareTerminalIcon = SquareTerminal; +exports.SquareUser = SquareUser; +exports.SquareUserIcon = SquareUser; +exports.SquareUserRound = SquareUserRound; +exports.SquareUserRoundIcon = SquareUserRound; +exports.SquareX = SquareX; +exports.SquareXIcon = SquareX; +exports.Squircle = Squircle; +exports.SquircleIcon = Squircle; +exports.Squirrel = Squirrel; +exports.SquirrelIcon = Squirrel; +exports.Stamp = Stamp; +exports.StampIcon = Stamp; +exports.Star = Star; +exports.StarHalf = StarHalf; +exports.StarHalfIcon = StarHalf; +exports.StarIcon = Star; +exports.StarOff = StarOff; +exports.StarOffIcon = StarOff; +exports.Stars = Sparkles; +exports.StarsIcon = Sparkles; +exports.StepBack = StepBack; +exports.StepBackIcon = StepBack; +exports.StepForward = StepForward; +exports.StepForwardIcon = StepForward; +exports.Stethoscope = Stethoscope; +exports.StethoscopeIcon = Stethoscope; +exports.Sticker = Sticker; +exports.StickerIcon = Sticker; +exports.StickyNote = StickyNote; +exports.StickyNoteIcon = StickyNote; +exports.StopCircle = CircleStop; +exports.StopCircleIcon = CircleStop; +exports.Store = Store; +exports.StoreIcon = Store; +exports.StretchHorizontal = StretchHorizontal; +exports.StretchHorizontalIcon = StretchHorizontal; +exports.StretchVertical = StretchVertical; +exports.StretchVerticalIcon = StretchVertical; +exports.Strikethrough = Strikethrough; +exports.StrikethroughIcon = Strikethrough; +exports.Subscript = Subscript; +exports.SubscriptIcon = Subscript; +exports.Subtitles = Captions; +exports.SubtitlesIcon = Captions; +exports.Sun = Sun; +exports.SunDim = SunDim; +exports.SunDimIcon = SunDim; +exports.SunIcon = Sun; +exports.SunMedium = SunMedium; +exports.SunMediumIcon = SunMedium; +exports.SunMoon = SunMoon; +exports.SunMoonIcon = SunMoon; +exports.SunSnow = SunSnow; +exports.SunSnowIcon = SunSnow; +exports.Sunrise = Sunrise; +exports.SunriseIcon = Sunrise; +exports.Sunset = Sunset; +exports.SunsetIcon = Sunset; +exports.Superscript = Superscript; +exports.SuperscriptIcon = Superscript; +exports.SwatchBook = SwatchBook; +exports.SwatchBookIcon = SwatchBook; +exports.SwissFranc = SwissFranc; +exports.SwissFrancIcon = SwissFranc; +exports.SwitchCamera = SwitchCamera; +exports.SwitchCameraIcon = SwitchCamera; +exports.Sword = Sword; +exports.SwordIcon = Sword; +exports.Swords = Swords; +exports.SwordsIcon = Swords; +exports.Syringe = Syringe; +exports.SyringeIcon = Syringe; +exports.Table = Table; +exports.Table2 = Table2; +exports.Table2Icon = Table2; +exports.TableCellsMerge = TableCellsMerge; +exports.TableCellsMergeIcon = TableCellsMerge; +exports.TableCellsSplit = TableCellsSplit; +exports.TableCellsSplitIcon = TableCellsSplit; +exports.TableColumnsSplit = TableColumnsSplit; +exports.TableColumnsSplitIcon = TableColumnsSplit; +exports.TableIcon = Table; +exports.TableOfContents = TableOfContents; +exports.TableOfContentsIcon = TableOfContents; +exports.TableProperties = TableProperties; +exports.TablePropertiesIcon = TableProperties; +exports.TableRowsSplit = TableRowsSplit; +exports.TableRowsSplitIcon = TableRowsSplit; +exports.Tablet = Tablet; +exports.TabletIcon = Tablet; +exports.TabletSmartphone = TabletSmartphone; +exports.TabletSmartphoneIcon = TabletSmartphone; +exports.Tablets = Tablets; +exports.TabletsIcon = Tablets; +exports.Tag = Tag; +exports.TagIcon = Tag; +exports.Tags = Tags; +exports.TagsIcon = Tags; +exports.Tally1 = Tally1; +exports.Tally1Icon = Tally1; +exports.Tally2 = Tally2; +exports.Tally2Icon = Tally2; +exports.Tally3 = Tally3; +exports.Tally3Icon = Tally3; +exports.Tally4 = Tally4; +exports.Tally4Icon = Tally4; +exports.Tally5 = Tally5; +exports.Tally5Icon = Tally5; +exports.Tangent = Tangent; +exports.TangentIcon = Tangent; +exports.Target = Target; +exports.TargetIcon = Target; +exports.Telescope = Telescope; +exports.TelescopeIcon = Telescope; +exports.Tent = Tent; +exports.TentIcon = Tent; +exports.TentTree = TentTree; +exports.TentTreeIcon = TentTree; +exports.Terminal = Terminal; +exports.TerminalIcon = Terminal; +exports.TerminalSquare = SquareTerminal; +exports.TerminalSquareIcon = SquareTerminal; +exports.TestTube = TestTube; +exports.TestTube2 = TestTubeDiagonal; +exports.TestTube2Icon = TestTubeDiagonal; +exports.TestTubeDiagonal = TestTubeDiagonal; +exports.TestTubeDiagonalIcon = TestTubeDiagonal; +exports.TestTubeIcon = TestTube; +exports.TestTubes = TestTubes; +exports.TestTubesIcon = TestTubes; +exports.Text = Text; +exports.TextCursor = TextCursor; +exports.TextCursorIcon = TextCursor; +exports.TextCursorInput = TextCursorInput; +exports.TextCursorInputIcon = TextCursorInput; +exports.TextIcon = Text; +exports.TextQuote = TextQuote; +exports.TextQuoteIcon = TextQuote; +exports.TextSearch = TextSearch; +exports.TextSearchIcon = TextSearch; +exports.TextSelect = TextSelect; +exports.TextSelectIcon = TextSelect; +exports.TextSelection = TextSelect; +exports.TextSelectionIcon = TextSelect; +exports.Theater = Theater; +exports.TheaterIcon = Theater; +exports.Thermometer = Thermometer; +exports.ThermometerIcon = Thermometer; +exports.ThermometerSnowflake = ThermometerSnowflake; +exports.ThermometerSnowflakeIcon = ThermometerSnowflake; +exports.ThermometerSun = ThermometerSun; +exports.ThermometerSunIcon = ThermometerSun; +exports.ThumbsDown = ThumbsDown; +exports.ThumbsDownIcon = ThumbsDown; +exports.ThumbsUp = ThumbsUp; +exports.ThumbsUpIcon = ThumbsUp; +exports.Ticket = Ticket; +exports.TicketCheck = TicketCheck; +exports.TicketCheckIcon = TicketCheck; +exports.TicketIcon = Ticket; +exports.TicketMinus = TicketMinus; +exports.TicketMinusIcon = TicketMinus; +exports.TicketPercent = TicketPercent; +exports.TicketPercentIcon = TicketPercent; +exports.TicketPlus = TicketPlus; +exports.TicketPlusIcon = TicketPlus; +exports.TicketSlash = TicketSlash; +exports.TicketSlashIcon = TicketSlash; +exports.TicketX = TicketX; +exports.TicketXIcon = TicketX; +exports.Tickets = Tickets; +exports.TicketsIcon = Tickets; +exports.TicketsPlane = TicketsPlane; +exports.TicketsPlaneIcon = TicketsPlane; +exports.Timer = Timer; +exports.TimerIcon = Timer; +exports.TimerOff = TimerOff; +exports.TimerOffIcon = TimerOff; +exports.TimerReset = TimerReset; +exports.TimerResetIcon = TimerReset; +exports.ToggleLeft = ToggleLeft; +exports.ToggleLeftIcon = ToggleLeft; +exports.ToggleRight = ToggleRight; +exports.ToggleRightIcon = ToggleRight; +exports.Toilet = Toilet; +exports.ToiletIcon = Toilet; +exports.Tornado = Tornado; +exports.TornadoIcon = Tornado; +exports.Torus = Torus; +exports.TorusIcon = Torus; +exports.Touchpad = Touchpad; +exports.TouchpadIcon = Touchpad; +exports.TouchpadOff = TouchpadOff; +exports.TouchpadOffIcon = TouchpadOff; +exports.TowerControl = TowerControl; +exports.TowerControlIcon = TowerControl; +exports.ToyBrick = ToyBrick; +exports.ToyBrickIcon = ToyBrick; +exports.Tractor = Tractor; +exports.TractorIcon = Tractor; +exports.TrafficCone = TrafficCone; +exports.TrafficConeIcon = TrafficCone; +exports.Train = TramFront; +exports.TrainFront = TrainFront; +exports.TrainFrontIcon = TrainFront; +exports.TrainFrontTunnel = TrainFrontTunnel; +exports.TrainFrontTunnelIcon = TrainFrontTunnel; +exports.TrainIcon = TramFront; +exports.TrainTrack = TrainTrack; +exports.TrainTrackIcon = TrainTrack; +exports.TramFront = TramFront; +exports.TramFrontIcon = TramFront; +exports.Transgender = Transgender; +exports.TransgenderIcon = Transgender; +exports.Trash = Trash; +exports.Trash2 = Trash2; +exports.Trash2Icon = Trash2; +exports.TrashIcon = Trash; +exports.TreeDeciduous = TreeDeciduous; +exports.TreeDeciduousIcon = TreeDeciduous; +exports.TreePalm = TreePalm; +exports.TreePalmIcon = TreePalm; +exports.TreePine = TreePine; +exports.TreePineIcon = TreePine; +exports.Trees = Trees; +exports.TreesIcon = Trees; +exports.Trello = Trello; +exports.TrelloIcon = Trello; +exports.TrendingDown = TrendingDown; +exports.TrendingDownIcon = TrendingDown; +exports.TrendingUp = TrendingUp; +exports.TrendingUpDown = TrendingUpDown; +exports.TrendingUpDownIcon = TrendingUpDown; +exports.TrendingUpIcon = TrendingUp; +exports.Triangle = Triangle; +exports.TriangleAlert = TriangleAlert; +exports.TriangleAlertIcon = TriangleAlert; +exports.TriangleDashed = TriangleDashed; +exports.TriangleDashedIcon = TriangleDashed; +exports.TriangleIcon = Triangle; +exports.TriangleRight = TriangleRight; +exports.TriangleRightIcon = TriangleRight; +exports.Trophy = Trophy; +exports.TrophyIcon = Trophy; +exports.Truck = Truck; +exports.TruckIcon = Truck; +exports.Turtle = Turtle; +exports.TurtleIcon = Turtle; +exports.Tv = Tv; +exports.Tv2 = TvMinimal; +exports.Tv2Icon = TvMinimal; +exports.TvIcon = Tv; +exports.TvMinimal = TvMinimal; +exports.TvMinimalIcon = TvMinimal; +exports.TvMinimalPlay = TvMinimalPlay; +exports.TvMinimalPlayIcon = TvMinimalPlay; +exports.Twitch = Twitch; +exports.TwitchIcon = Twitch; +exports.Twitter = Twitter; +exports.TwitterIcon = Twitter; +exports.Type = Type; +exports.TypeIcon = Type; +exports.TypeOutline = TypeOutline; +exports.TypeOutlineIcon = TypeOutline; +exports.Umbrella = Umbrella; +exports.UmbrellaIcon = Umbrella; +exports.UmbrellaOff = UmbrellaOff; +exports.UmbrellaOffIcon = UmbrellaOff; +exports.Underline = Underline; +exports.UnderlineIcon = Underline; +exports.Undo = Undo; +exports.Undo2 = Undo2; +exports.Undo2Icon = Undo2; +exports.UndoDot = UndoDot; +exports.UndoDotIcon = UndoDot; +exports.UndoIcon = Undo; +exports.UnfoldHorizontal = UnfoldHorizontal; +exports.UnfoldHorizontalIcon = UnfoldHorizontal; +exports.UnfoldVertical = UnfoldVertical; +exports.UnfoldVerticalIcon = UnfoldVertical; +exports.Ungroup = Ungroup; +exports.UngroupIcon = Ungroup; +exports.University = University; +exports.UniversityIcon = University; +exports.Unlink = Unlink; +exports.Unlink2 = Unlink2; +exports.Unlink2Icon = Unlink2; +exports.UnlinkIcon = Unlink; +exports.Unlock = LockOpen; +exports.UnlockIcon = LockOpen; +exports.UnlockKeyhole = LockKeyholeOpen; +exports.UnlockKeyholeIcon = LockKeyholeOpen; +exports.Unplug = Unplug; +exports.UnplugIcon = Unplug; +exports.Upload = Upload; +exports.UploadCloud = CloudUpload; +exports.UploadCloudIcon = CloudUpload; +exports.UploadIcon = Upload; +exports.Usb = Usb; +exports.UsbIcon = Usb; +exports.User = User; +exports.User2 = UserRound; +exports.User2Icon = UserRound; +exports.UserCheck = UserCheck; +exports.UserCheck2 = UserRoundCheck; +exports.UserCheck2Icon = UserRoundCheck; +exports.UserCheckIcon = UserCheck; +exports.UserCircle = CircleUser; +exports.UserCircle2 = CircleUserRound; +exports.UserCircle2Icon = CircleUserRound; +exports.UserCircleIcon = CircleUser; +exports.UserCog = UserCog; +exports.UserCog2 = UserRoundCog; +exports.UserCog2Icon = UserRoundCog; +exports.UserCogIcon = UserCog; +exports.UserIcon = User; +exports.UserMinus = UserMinus; +exports.UserMinus2 = UserRoundMinus; +exports.UserMinus2Icon = UserRoundMinus; +exports.UserMinusIcon = UserMinus; +exports.UserPen = UserPen; +exports.UserPenIcon = UserPen; +exports.UserPlus = UserPlus; +exports.UserPlus2 = UserRoundPlus; +exports.UserPlus2Icon = UserRoundPlus; +exports.UserPlusIcon = UserPlus; +exports.UserRound = UserRound; +exports.UserRoundCheck = UserRoundCheck; +exports.UserRoundCheckIcon = UserRoundCheck; +exports.UserRoundCog = UserRoundCog; +exports.UserRoundCogIcon = UserRoundCog; +exports.UserRoundIcon = UserRound; +exports.UserRoundMinus = UserRoundMinus; +exports.UserRoundMinusIcon = UserRoundMinus; +exports.UserRoundPen = UserRoundPen; +exports.UserRoundPenIcon = UserRoundPen; +exports.UserRoundPlus = UserRoundPlus; +exports.UserRoundPlusIcon = UserRoundPlus; +exports.UserRoundSearch = UserRoundSearch; +exports.UserRoundSearchIcon = UserRoundSearch; +exports.UserRoundX = UserRoundX; +exports.UserRoundXIcon = UserRoundX; +exports.UserSearch = UserSearch; +exports.UserSearchIcon = UserSearch; +exports.UserSquare = SquareUser; +exports.UserSquare2 = SquareUserRound; +exports.UserSquare2Icon = SquareUserRound; +exports.UserSquareIcon = SquareUser; +exports.UserX = UserX; +exports.UserX2 = UserRoundX; +exports.UserX2Icon = UserRoundX; +exports.UserXIcon = UserX; +exports.Users = Users; +exports.Users2 = UsersRound; +exports.Users2Icon = UsersRound; +exports.UsersIcon = Users; +exports.UsersRound = UsersRound; +exports.UsersRoundIcon = UsersRound; +exports.Utensils = Utensils; +exports.UtensilsCrossed = UtensilsCrossed; +exports.UtensilsCrossedIcon = UtensilsCrossed; +exports.UtensilsIcon = Utensils; +exports.UtilityPole = UtilityPole; +exports.UtilityPoleIcon = UtilityPole; +exports.Variable = Variable; +exports.VariableIcon = Variable; +exports.Vault = Vault; +exports.VaultIcon = Vault; +exports.Vegan = Vegan; +exports.VeganIcon = Vegan; +exports.VenetianMask = VenetianMask; +exports.VenetianMaskIcon = VenetianMask; +exports.Venus = Venus; +exports.VenusAndMars = VenusAndMars; +exports.VenusAndMarsIcon = VenusAndMars; +exports.VenusIcon = Venus; +exports.Verified = BadgeCheck; +exports.VerifiedIcon = BadgeCheck; +exports.Vibrate = Vibrate; +exports.VibrateIcon = Vibrate; +exports.VibrateOff = VibrateOff; +exports.VibrateOffIcon = VibrateOff; +exports.Video = Video; +exports.VideoIcon = Video; +exports.VideoOff = VideoOff; +exports.VideoOffIcon = VideoOff; +exports.Videotape = Videotape; +exports.VideotapeIcon = Videotape; +exports.View = View; +exports.ViewIcon = View; +exports.Voicemail = Voicemail; +exports.VoicemailIcon = Voicemail; +exports.Volleyball = Volleyball; +exports.VolleyballIcon = Volleyball; +exports.Volume = Volume; +exports.Volume1 = Volume1; +exports.Volume1Icon = Volume1; +exports.Volume2 = Volume2; +exports.Volume2Icon = Volume2; +exports.VolumeIcon = Volume; +exports.VolumeOff = VolumeOff; +exports.VolumeOffIcon = VolumeOff; +exports.VolumeX = VolumeX; +exports.VolumeXIcon = VolumeX; +exports.Vote = Vote; +exports.VoteIcon = Vote; +exports.Wallet = Wallet; +exports.Wallet2 = WalletMinimal; +exports.Wallet2Icon = WalletMinimal; +exports.WalletCards = WalletCards; +exports.WalletCardsIcon = WalletCards; +exports.WalletIcon = Wallet; +exports.WalletMinimal = WalletMinimal; +exports.WalletMinimalIcon = WalletMinimal; +exports.Wallpaper = Wallpaper; +exports.WallpaperIcon = Wallpaper; +exports.Wand = Wand; +exports.Wand2 = WandSparkles; +exports.Wand2Icon = WandSparkles; +exports.WandIcon = Wand; +exports.WandSparkles = WandSparkles; +exports.WandSparklesIcon = WandSparkles; +exports.Warehouse = Warehouse; +exports.WarehouseIcon = Warehouse; +exports.WashingMachine = WashingMachine; +exports.WashingMachineIcon = WashingMachine; +exports.Watch = Watch; +exports.WatchIcon = Watch; +exports.Waves = Waves; +exports.WavesIcon = Waves; +exports.WavesLadder = WavesLadder; +exports.WavesLadderIcon = WavesLadder; +exports.Waypoints = Waypoints; +exports.WaypointsIcon = Waypoints; +exports.Webcam = Webcam; +exports.WebcamIcon = Webcam; +exports.Webhook = Webhook; +exports.WebhookIcon = Webhook; +exports.WebhookOff = WebhookOff; +exports.WebhookOffIcon = WebhookOff; +exports.Weight = Weight; +exports.WeightIcon = Weight; +exports.Wheat = Wheat; +exports.WheatIcon = Wheat; +exports.WheatOff = WheatOff; +exports.WheatOffIcon = WheatOff; +exports.WholeWord = WholeWord; +exports.WholeWordIcon = WholeWord; +exports.Wifi = Wifi; +exports.WifiHigh = WifiHigh; +exports.WifiHighIcon = WifiHigh; +exports.WifiIcon = Wifi; +exports.WifiLow = WifiLow; +exports.WifiLowIcon = WifiLow; +exports.WifiOff = WifiOff; +exports.WifiOffIcon = WifiOff; +exports.WifiZero = WifiZero; +exports.WifiZeroIcon = WifiZero; +exports.Wind = Wind; +exports.WindArrowDown = WindArrowDown; +exports.WindArrowDownIcon = WindArrowDown; +exports.WindIcon = Wind; +exports.Wine = Wine; +exports.WineIcon = Wine; +exports.WineOff = WineOff; +exports.WineOffIcon = WineOff; +exports.Workflow = Workflow; +exports.WorkflowIcon = Workflow; +exports.Worm = Worm; +exports.WormIcon = Worm; +exports.WrapText = WrapText; +exports.WrapTextIcon = WrapText; +exports.Wrench = Wrench; +exports.WrenchIcon = Wrench; +exports.X = X; +exports.XCircle = CircleX; +exports.XCircleIcon = CircleX; +exports.XIcon = X; +exports.XOctagon = OctagonX; +exports.XOctagonIcon = OctagonX; +exports.XSquare = SquareX; +exports.XSquareIcon = SquareX; +exports.Youtube = Youtube; +exports.YoutubeIcon = Youtube; +exports.Zap = Zap; +exports.ZapIcon = Zap; +exports.ZapOff = ZapOff; +exports.ZapOffIcon = ZapOff; +exports.ZoomIn = ZoomIn; +exports.ZoomInIcon = ZoomIn; +exports.ZoomOut = ZoomOut; +exports.ZoomOutIcon = ZoomOut; +exports.createLucideIcon = createLucideIcon; +exports.icons = index; +//# sourceMappingURL=lucide-vue-next.js.map diff --git a/apps/web/.output/server/node_modules/lucide-vue-next/package.json b/apps/web/.output/server/node_modules/lucide-vue-next/package.json new file mode 100644 index 0000000..ac1c976 --- /dev/null +++ b/apps/web/.output/server/node_modules/lucide-vue-next/package.json @@ -0,0 +1,64 @@ +{ + "name": "lucide-vue-next", + "version": "0.475.0", + "author": "Eric Fennis", + "description": "A Lucide icon library package for Vue 3 applications", + "license": "ISC", + "homepage": "https://lucide.dev", + "bugs": "https://github.com/lucide-icons/lucide/issues", + "repository": { + "type": "git", + "url": "https://github.com/lucide-icons/lucide.git", + "directory": "packages/lucide-vue-next" + }, + "keywords": [ + "Lucide", + "Vue", + "Feather", + "Icons", + "Icon", + "SVG", + "Feather Icons", + "Fontawesome", + "Font Awesome" + ], + "amdName": "lucide-vue-next", + "source": "build/lucide-vue-next.js", + "main": "dist/cjs/lucide-vue-next.js", + "main:umd": "dist/umd/lucide-vue-next.js", + "module": "dist/esm/lucide-vue-next.js", + "unpkg": "dist/umd/lucide-vue-next.min.js", + "typings": "dist/lucide-vue-next.d.ts", + "sideEffects": false, + "files": [ + "dist", + "nuxt.js" + ], + "devDependencies": { + "@testing-library/jest-dom": "^6.1.6", + "@testing-library/vue": "^8.0.3", + "@vitejs/plugin-vue": "^4.6.2", + "@vue/test-utils": "2.4.5", + "rollup": "^4.22.4", + "rollup-plugin-dts": "^6.1.0", + "vite": "5.1.8", + "vitest": "^1.4.0", + "vue": "^3.4.21", + "@lucide/shared": "1.0.0", + "@lucide/rollup-plugins": "1.0.0", + "@lucide/build-icons": "1.1.0" + }, + "peerDependencies": { + "vue": ">=3.0.1" + }, + "scripts": { + "build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles", + "copy:license": "cp ../../LICENSE ./LICENSE", + "clean": "rm -rf dist && rm -rf ./src/icons/*.ts", + "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts", + "build:bundles": "rollup -c ./rollup.config.mjs", + "test": "pnpm build:icons && vitest run", + "test:watch": "vitest watch", + "version": "pnpm version --git-tag-version=false" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs new file mode 100644 index 0000000..e3b8170 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs @@ -0,0 +1,206 @@ +import { MotionGlobalConfig } from 'motion-utils'; +import { time } from '../frameloop/sync-time.mjs'; +import { JSAnimation } from './JSAnimation.mjs'; +import { getFinalKeyframe } from './keyframes/get-final.mjs'; +import { KeyframeResolver, flushKeyframeResolvers } from './keyframes/KeyframesResolver.mjs'; +import { NativeAnimationExtended } from './NativeAnimationExtended.mjs'; +import { canAnimate } from './utils/can-animate.mjs'; +import { makeAnimationInstant } from './utils/make-animation-instant.mjs'; +import { resolveStartTime } from './utils/resolve-start-time.mjs'; +import { WithPromise } from './utils/WithPromise.mjs'; +import { supportsBrowserAnimation } from './waapi/supports/waapi.mjs'; +import { canGroupTransform, TransformAnimation } from './waapi/transforms/TransformAnimation.mjs'; + +class AsyncMotionValueAnimation extends WithPromise { + constructor(options) { + super(); + /** + * Bound to support return animation.stop pattern + */ + this.stop = () => { + if (this._animation) { + this._animation.stop(); + this.stopTimeline?.(); + } + this.keyframeResolver?.cancel(); + }; + this.createdAt = time.now(); + const { keyframes, name, motionValue, element } = options; + /** + * animateMotionValue builds a fresh options object per value, so + * it's completed in place as keyframes resolve rather than copied. + */ + const optionsWithDefaults = options; + optionsWithDefaults.autoplay ?? (optionsWithDefaults.autoplay = true); + optionsWithDefaults.delay ?? (optionsWithDefaults.delay = 0); + optionsWithDefaults.type ?? (optionsWithDefaults.type = "keyframes"); + optionsWithDefaults.repeat ?? (optionsWithDefaults.repeat = 0); + optionsWithDefaults.repeatDelay ?? (optionsWithDefaults.repeatDelay = 0); + optionsWithDefaults.repeatType ?? (optionsWithDefaults.repeatType = "loop"); + const KeyframeResolver$1 = element?.KeyframeResolver || KeyframeResolver; + this.keyframeResolver = new KeyframeResolver$1(keyframes, (resolvedKeyframes, finalKeyframe, forced) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe, optionsWithDefaults, !forced), name, motionValue, element); + this.keyframeResolver?.scheduleResolve(); + } + onKeyframesResolved(keyframes, finalKeyframe, options, sync) { + this.keyframeResolver = undefined; + const { name, type, velocity, delay, isHandoff, onUpdate } = options; + this.resolvedAt = time.now(); + /** + * If we can't animate this value with the resolved keyframes + * then we should complete it immediately. + */ + let canAnimateValue = true; + if (!canAnimate(keyframes, name, type, velocity)) { + canAnimateValue = false; + if (MotionGlobalConfig.instantAnimations || !delay) { + onUpdate?.(getFinalKeyframe(keyframes, options, finalKeyframe)); + } + keyframes[0] = keyframes[keyframes.length - 1]; + makeAnimationInstant(options); + options.repeat = 0; + } + const { onComplete } = options; + options.finalKeyframe = finalKeyframe; + options.keyframes = keyframes; + /** + * JSAnimation and NativeAnimation call onComplete exactly when + * their own `finished` resolves, so this replaces a promise chain + * per value with a callback. + */ + options.onComplete = () => { + onComplete?.(); + this.notifyFinished(); + }; + /** + * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via + * WAAPI. Therefore, this animation must be JS to ensure it runs "under" the + * optimised animation. + * + * Also skip WAAPI when keyframes aren't animatable, as the resolved + * values may not be valid CSS and would trigger browser warnings. + */ + const useWaapi = canAnimateValue && !isHandoff && supportsBrowserAnimation(options); + /** + * Independent transforms (x, scale etc) on an HTML element are + * composed into one WAAPI transform animation per element. + */ + const isGroupedTransform = !useWaapi && canGroupTransform(options); + /** + * Resolve startTime for the animation. A startTime passed in options + * (an optimised appear handoff syncing to its WAAPI animation) takes + * precedence. + * + * *Ideally*, we would use the createdAt time as t=0 as the following + * frame would then be the first frame of the animation in progress, + * which would feel snappier. If keyframes resolved on a later frame, + * and long after creation, we start from then instead. + * + * If they resolved immediately, a JSAnimation picks its own start + * time and resolves it the same way on its first frame, so every + * animation started in that moment stays in sync. WAAPI has no frame + * of ours to do that on. + */ + if (sync && + (useWaapi || + isGroupedTransform || + this.resolvedAt !== this.createdAt)) { + options.startTime ?? (options.startTime = resolveStartTime(this.createdAt, this.resolvedAt)); + } + let animation; + if (useWaapi) { + /** + * The resolver needed the VisualElement, WAAPI needs the DOM + * element. JSAnimation reads neither, so this is safe to + * leave in place if we fall back to it. + */ + options.element = options.motionValue?.owner?.current; + try { + animation = new NativeAnimationExtended(options); + } + catch { + animation = new JSAnimation(options); + } + } + else if (isGroupedTransform) { + animation = new TransformAnimation(options); + } + else { + animation = new JSAnimation(options); + } + if (this.pendingTimeline) { + this.stopTimeline = animation.attachTimeline(this.pendingTimeline); + this.pendingTimeline = undefined; + } + this._animation = animation; + } + get finished() { + return this._animation ? this._animation.finished : super.finished; + } + then(onResolve, _onReject) { + return this.finished.finally(onResolve).then(() => { }); + } + /** + * The value now, if the animation runs on the compositor. + */ + liveValue() { + return this._animation?.liveValue?.(); + } + get animation() { + if (!this._animation) { + this.keyframeResolver?.resume(); + flushKeyframeResolvers(); + } + return this._animation; + } + get duration() { + return this.animation.duration; + } + get iterationDuration() { + return this.animation.iterationDuration; + } + get time() { + return this.animation.time; + } + set time(newTime) { + this.animation.time = newTime; + } + get speed() { + return this.animation.speed; + } + get state() { + return this.animation.state; + } + set speed(newSpeed) { + this.animation.speed = newSpeed; + } + get startTime() { + return this.animation.startTime; + } + attachTimeline(timeline) { + if (this._animation) { + this.stopTimeline = this.animation.attachTimeline(timeline); + } + else { + this.pendingTimeline = timeline; + } + return () => this.stop(); + } + play() { + this.animation.play(); + } + pause() { + this.animation.pause(); + } + complete() { + this.animation.complete(); + } + cancel() { + if (this._animation) { + this.animation.cancel(); + } + this.keyframeResolver?.cancel(); + } +} + +export { AsyncMotionValueAnimation }; +//# sourceMappingURL=AsyncMotionValueAnimation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/FollowAnimation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/FollowAnimation.mjs new file mode 100644 index 0000000..074e66f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/FollowAnimation.mjs @@ -0,0 +1,154 @@ +import { time } from '../frameloop/sync-time.mjs'; +import { calcGeneratorVelocity } from './generators/utils/velocity.mjs'; +import { resolveStartTime } from './utils/resolve-start-time.mjs'; +import { WithPromise } from './utils/WithPromise.mjs'; +import { frame, cancelFrame } from '../frameloop/frame.mjs'; + +/** + * Every running follower ticks from this one frame callback. + */ +const active = new Set(); +const tickAll = ({ timestamp }) => { + active.forEach((animation) => animation.tick(timestamp)); +}; +/** + * A lean animation for values that follow a target (`followValue`, + * `springValue`): a single numeric generator, retargeted in place as + * the target moves and ticked from a frame callback shared by every + * follower. Only implements the controls `MotionValue.animation` + * exposes. Repeat options are ignored: a follower only ever heads for + * its latest target. + */ +class FollowAnimation extends WithPromise { + constructor(options) { + super(); + this.state = "idle"; + this.startTime = 0; + this.currentTime = 0; + /** + * Whether the first tick has fired `onPlay`. + */ + this.started = false; + /** + * A target set since the last tick, applied at the next one so any + * number of sets per frame cost one retarget. + */ + this.hasNextTarget = false; + this.nextTarget = 0; + /** + * Bound to the instance so `animation.stop` can be passed around. + */ + this.stop = () => { + if (this.state === "idle") + return; + this.teardown(); + this.options.onStop?.(); + }; + this.options = options; + this.factory = options.type; + this.generator = this.factory(options); + const { driver } = options; + if (driver) + this.driver = driver((timestamp) => this.tick(timestamp)); + this.startTime = this.now(); + this.state = "running"; + if (this.driver) { + this.driver.start(); + } + else { + active.size || frame.update(tickAll, true); + active.add(this); + } + } + /** + * Aim at a new target from wherever the animation has reached by the + * next tick. `velocity` fixes the velocity to steer with, otherwise + * the generator's is used. + */ + setTarget(target, velocity) { + this.nextTarget = target; + this.nextVelocity = velocity; + this.hasNextTarget = true; + } + /** + * Steer towards new keyframes from the current position and velocity. + * Springs are updated in place; other generators are recreated. + */ + retarget(keyframes, velocity) { + const { options, generator } = this; + options.keyframes = keyframes; + options.velocity = velocity; + this.startTime = this.now(); + this.currentTime = 0; + if (generator.retarget) { + generator.retarget(keyframes, velocity); + } + else { + this.generator = this.factory(options); + } + } + tick(timestamp) { + const { options, hasNextTarget: retargeted } = this; + const { delay = 0, onUpdate, onPlay } = options; + // Retargets happen on a tick, so only the first start can lag + if (!this.started) { + this.startTime = resolveStartTime(this.startTime, timestamp); + } + const elapsed = Math.round(timestamp - this.startTime) - delay; + const t = (this.currentTime = Math.max(0, elapsed)); + const state = this.generator.next(t); + // Hold the origin through the delay, even if the generator is already at rest + const value = elapsed < 0 ? options.keyframes[0] : state.value; + if (retargeted) { + /** + * Steer from where the current trajectory has reached this + * frame, then render that position as the new origin. + */ + this.hasNextTarget = false; + const { keyframes } = options; + keyframes[0] = value; + keyframes[1] = this.nextTarget; + this.retarget(keyframes, this.nextVelocity ?? this.getGeneratorVelocity()); + } + if (retargeted || !this.started) { + this.started = true; + onPlay?.(); + } + /** + * Callbacks may stop this animation or set a new target, so check + * the live state rather than what was read at the top of the tick. + */ + if (this.state !== "running") + return; + onUpdate?.(value); + if (state.done && + elapsed >= 0 && + !retargeted && + !this.hasNextTarget && + this.state === "running") { + this.notifyFinished(); + this.teardown(); + this.state = "finished"; + options.onComplete?.(); + } + } + getGeneratorVelocity() { + return calcGeneratorVelocity(this.generator, this.currentTime, this.options.velocity); + } + now() { + return this.driver ? this.driver.now() : time.now(); + } + teardown() { + this.state = "idle"; + if (this.driver) { + this.driver.stop(); + } + else { + active.delete(this); + active.size || cancelFrame(tickAll); + } + } +} + +export { FollowAnimation }; +//# sourceMappingURL=FollowAnimation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/GroupAnimation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/GroupAnimation.mjs new file mode 100644 index 0000000..175868b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/GroupAnimation.mjs @@ -0,0 +1,82 @@ +class GroupAnimation { + constructor(animations) { + // Bound to accommodate common `return animation.stop` pattern + this.stop = () => this.runAll("stop"); + this.animations = animations.filter(Boolean); + } + get finished() { + return Promise.all(this.animations.map((animation) => animation.finished)); + } + /** + * TODO: Filter out cancelled or stopped animations before returning + */ + getAll(propName) { + return this.animations[0][propName]; + } + setAll(propName, newValue) { + for (let i = 0; i < this.animations.length; i++) { + this.animations[i][propName] = newValue; + } + } + attachTimeline(timeline) { + const subscriptions = this.animations.map((animation) => animation.attachTimeline(timeline)); + return () => { + subscriptions.forEach((cancel, i) => { + cancel && cancel(); + this.animations[i].stop(); + }); + }; + } + get time() { + return this.getAll("time"); + } + set time(time) { + this.setAll("time", time); + } + get speed() { + return this.getAll("speed"); + } + set speed(speed) { + this.setAll("speed", speed); + } + get state() { + return this.getAll("state"); + } + get startTime() { + return this.getAll("startTime"); + } + get duration() { + return getMax(this.animations, "duration"); + } + get iterationDuration() { + return getMax(this.animations, "iterationDuration"); + } + runAll(methodName) { + this.animations.forEach((controls) => controls[methodName]()); + } + play() { + this.runAll("play"); + } + pause() { + this.runAll("pause"); + } + cancel() { + this.runAll("cancel"); + } + complete() { + this.runAll("complete"); + } +} +function getMax(animations, propName) { + let max = 0; + for (let i = 0; i < animations.length; i++) { + const value = animations[i][propName]; + if (value !== null && value > max) { + max = value; + } + } + return max; +} + +export { GroupAnimation }; +//# sourceMappingURL=GroupAnimation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs new file mode 100644 index 0000000..7d8a536 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs @@ -0,0 +1,10 @@ +import { GroupAnimation } from './GroupAnimation.mjs'; + +class GroupAnimationWithThen extends GroupAnimation { + then(onResolve, _onReject) { + return this.finished.finally(onResolve).then(() => { }); + } +} + +export { GroupAnimationWithThen }; +//# sourceMappingURL=GroupAnimationWithThen.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs new file mode 100644 index 0000000..187dcd3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/JSAnimation.mjs @@ -0,0 +1,418 @@ +import { invariant, pipe, clamp, millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils'; +import { time } from '../frameloop/sync-time.mjs'; +import { mix } from '../utils/mix/index.mjs'; +import { frameloopDriver } from './drivers/frame.mjs'; +import { inertia } from './generators/inertia.mjs'; +import { keyframes } from './generators/keyframes.mjs'; +import { calcGeneratorDuration } from './generators/utils/calc-duration.mjs'; +import { calcGeneratorVelocity } from './generators/utils/velocity.mjs'; +import { getFinalKeyframe } from './keyframes/get-final.mjs'; +import { replaceTransitionType } from './utils/replace-transition-type.mjs'; +import { resolveStartTime } from './utils/resolve-start-time.mjs'; +import { notifyAnimationStart } from './utils/notify-inspector.mjs'; +import { WithPromise } from './utils/WithPromise.mjs'; + +const percentToProgress = (percent) => percent / 100; +const round = (value) => Math.round(value * 10000) / 10000; +class JSAnimation extends WithPromise { + constructor(options) { + super(); + this.state = "idle"; + this.startTime = null; + this.isStopped = false; + /** + * The current time of the animation. + */ + this.currentTime = 0; + /** + * The time at which the animation was paused. + */ + this.holdTime = null; + /** + * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed. + */ + this.playbackSpeed = 1; + /** + * Reusable state object for the delay phase to avoid + * allocating a new object every frame. + */ + this.delayState = { + done: false, + value: undefined, + }; + /** + * This method is bound to the instance to fix a pattern where + * animation.stop is returned as a reference from a useEffect. + */ + this.stop = () => { + const { motionValue } = this.options; + if (motionValue && motionValue.updatedAt !== time.now()) { + this.tick(time.now()); + } + this.isStopped = true; + if (this.state === "idle") + return; + this.teardown(); + this.options.onStop?.(); + }; + this.options = options; + this.initAnimation(); + this.play(); + if (options.autoplay === false) + this.pause(); + notifyAnimationStart(this, this.options); + } + initAnimation() { + const { options } = this; + replaceTransitionType(options); + const { type = keyframes, repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = options; + let { keyframes: keyframes$1 } = options; + const generatorFactory = type || keyframes; + if (process.env.NODE_ENV !== "production" && + generatorFactory !== keyframes) { + invariant(keyframes$1.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`, "spring-two-frames"); + } + if (generatorFactory !== keyframes && + typeof keyframes$1[0] !== "number") { + this.mixKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1])); + keyframes$1 = [0, 100]; + } + const generator = generatorFactory(keyframes$1 === options.keyframes + ? options + : { ...options, keyframes: keyframes$1 }); + /** + * If we have a mirror repeat type we need to create a second generator that outputs the + * mirrored (not reversed) animation and later ping pong between the two generators. + */ + if (repeatType === "mirror") { + this.mirroredGenerator = generatorFactory({ + ...options, + keyframes: [...keyframes$1].reverse(), + velocity: -velocity, + }); + } + /** + * If duration is undefined and we have repeat options, + * we need to calculate a duration from the generator. + * + * We set it to the generator itself to cache the duration. + * Any timeline resolver will need to have already precalculated + * the duration by this step. + */ + if (generator.calculatedDuration === null) { + generator.calculatedDuration = calcGeneratorDuration(generator); + } + const { calculatedDuration } = generator; + this.calculatedDuration = calculatedDuration; + this.resolvedDuration = calculatedDuration + repeatDelay; + this.totalDuration = this.resolvedDuration * (repeat + 1) - repeatDelay; + this.generator = generator; + } + updateTime(timestamp) { + const animationTime = Math.round(timestamp - this.startTime) * this.playbackSpeed; + // Update currentTime + if (this.holdTime !== null) { + this.currentTime = this.holdTime; + } + else { + // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 = + // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for + // example. + this.currentTime = animationTime; + } + } + tick(timestamp, sample = false) { + const { generator, totalDuration, calculatedDuration } = this; + if (this.startTime === null) + return generator.next(0); + const { delay = 0, keyframes, type, onUpdate, finalKeyframe, } = this.options; + if (this.startTime === this.pendingStartTime) { + this.startTime = resolveStartTime(this.startTime, timestamp); + } + this.pendingStartTime = undefined; + /** + * requestAnimationFrame timestamps can come through as lower than + * the startTime as set by performance.now(). Here we prevent this, + * though in the future it could be possible to make setting startTime + * a pending operation that gets resolved here. + */ + if (this.speed > 0) { + this.startTime = Math.min(this.startTime, timestamp); + } + else if (this.speed < 0) { + this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime); + } + if (sample) { + this.currentTime = timestamp; + } + else { + this.updateTime(timestamp); + } + // Rebase on delay + const timeWithoutDelay = this.currentTime - delay * (this.playbackSpeed >= 0 ? 1 : -1); + const isInDelayPhase = this.playbackSpeed >= 0 + ? timeWithoutDelay < 0 + : timeWithoutDelay > totalDuration; + this.currentTime = Math.max(timeWithoutDelay, 0); + // If this animation has finished, set the current time to the total duration. + if (this.state === "finished" && this.holdTime === null) { + this.currentTime = totalDuration; + } + const state = this.generate(this.currentTime, isInDelayPhase); + let { done } = state; + if (!isInDelayPhase && calculatedDuration !== null) { + done = + this.playbackSpeed >= 0 + ? this.currentTime >= totalDuration + : this.currentTime <= 0; + } + const isAnimationFinished = this.holdTime === null && + (this.state === "finished" || (this.state === "running" && done)); + // TODO: The exception for inertia could be cleaner here + if (isAnimationFinished && type !== inertia) { + state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed); + } + if (onUpdate) { + onUpdate(state.value); + } + if (isAnimationFinished) { + this.finish(); + } + return state; + } + /** + * This animation's time, including delay, at a timestamp. + */ + at(timestamp) { + return (this.holdTime ?? + round((timestamp - this.startTime) * this.playbackSpeed)); + } + /** + * The value at a timestamp, without changing this animation's state. + * If resolved, it ends at the last resolved keyframe, which is in the + * same unit as the others, rather than at finalKeyframe. + */ + sampleAt(timestamp, resolved) { + const { options, totalDuration } = this; + const t = this.at(timestamp) - (options.delay || 0); + return t >= totalDuration && options.type !== inertia + ? getFinalKeyframe(options.keyframes, options, resolved ? undefined : options.finalKeyframe) + : this.generate(Math.max(t, 0), t < 0).value; + } + /** + * The generator's state `currentTime` ms after the delay, without + * changing the animation's own state. + */ + generate(currentTime, isInDelayPhase) { + const { generator, totalDuration, mixKeyframes, mirroredGenerator, resolvedDuration, } = this; + const { keyframes, repeat, repeatType, repeatDelay } = this.options; + let elapsed = currentTime; + let frameGenerator = generator; + if (repeat) { + /** + * Get the current progress (0-1) of the animation. If t is > + * than duration we'll get values like 2.5 (midway through the + * third iteration) + */ + const progress = Math.min(currentTime, totalDuration) / resolvedDuration; + /** + * Get the current iteration (0 indexed). For instance the floor of + * 2.5 is 2. + */ + let currentIteration = Math.floor(progress); + /** + * Get the current progress of the iteration by taking the remainder + * so 2.5 is 0.5 through iteration 2 + */ + let iterationProgress = progress % 1.0; + /** + * If iteration progress is 1 we count that as the end + * of the previous iteration. + */ + if (!iterationProgress && progress >= 1) { + iterationProgress = 1; + } + iterationProgress === 1 && currentIteration--; + currentIteration = Math.min(currentIteration, repeat + 1); + /** + * Reverse progress if we're not running in "normal" direction + */ + const isOddIteration = Boolean(currentIteration % 2); + if (isOddIteration) { + if (repeatType === "reverse") { + iterationProgress = 1 - iterationProgress; + if (repeatDelay) { + iterationProgress -= repeatDelay / resolvedDuration; + } + } + else if (repeatType === "mirror") { + frameGenerator = mirroredGenerator; + } + } + elapsed = clamp(0, 1, iterationProgress) * resolvedDuration; + } + /** + * If we're in negative time, set state as the initial keyframe. + * This prevents delay: x, duration: 0 animations from finishing + * instantly. + */ + let state; + if (isInDelayPhase) { + this.delayState.value = keyframes[0]; + state = this.delayState; + } + else { + state = frameGenerator.next(elapsed); + } + if (mixKeyframes && !isInDelayPhase) { + state.value = mixKeyframes(state.value); + } + return state; + } + /** + * Allows the returned animation to be awaited or promise-chained. Currently + * resolves when the animation finishes at all but in a future update could/should + * reject if its cancels. + */ + then(resolve, reject) { + return this.finished.then(resolve, reject); + } + get duration() { + return millisecondsToSeconds(this.calculatedDuration); + } + get iterationDuration() { + const { delay = 0 } = this.options || {}; + return this.duration + millisecondsToSeconds(delay); + } + get time() { + return millisecondsToSeconds(this.currentTime); + } + set time(newTime) { + newTime = secondsToMilliseconds(newTime); + this.currentTime = newTime; + if (this.startTime === null || + this.holdTime !== null || + this.playbackSpeed === 0) { + this.holdTime = newTime; + } + else if (this.driver) { + this.startTime = this.driver.now() - newTime / this.playbackSpeed; + } + if (this.driver) { + this.driver.start(false); + } + else { + this.startTime = 0; + this.state = "paused"; + this.holdTime = newTime; + this.tick(newTime); + } + } + /** + * Returns the generator's velocity at the current time in units/second. + * Uses the analytical derivative when available (springs), avoiding + * the MotionValue's frame-dependent velocity estimation. + */ + getGeneratorVelocity() { + return calcGeneratorVelocity(this.generator, this.currentTime, this.options.velocity); + } + get speed() { + return this.playbackSpeed; + } + set speed(newSpeed) { + const hasChanged = this.playbackSpeed !== newSpeed; + if (hasChanged && this.driver) { + this.updateTime(time.now()); + } + this.playbackSpeed = newSpeed; + if (hasChanged && this.driver) { + this.time = millisecondsToSeconds(this.currentTime); + } + } + play() { + if (this.isStopped) + return; + const { driver = frameloopDriver, startTime } = this.options; + if (!this.driver) { + this.driver = driver((timestamp) => this.tick(timestamp)); + } + this.options.onPlay?.(); + const now = this.driver.now(); + if (this.state === "finished") { + this.updateFinished(); + this.startTime = now; + } + else if (this.holdTime !== null) { + this.startTime = now - this.holdTime / (this.playbackSpeed || 1); + } + else if (!this.startTime) { + this.startTime = startTime ?? (this.pendingStartTime = now); + } + if (this.state === "finished" && this.speed < 0) { + this.startTime += this.calculatedDuration; + } + this.holdTime = null; + /** + * Set playState to running only after we've used it in + * the previous logic. + */ + this.state = "running"; + this.driver.start(); + } + pause() { + this.state = "paused"; + this.updateTime(time.now()); + this.holdTime = this.currentTime; + } + complete() { + if (this.state !== "running") { + this.play(); + } + this.state = "finished"; + this.holdTime = null; + } + finish() { + this.notifyFinished(); + this.teardown(); + this.state = "finished"; + this.options.onComplete?.(); + } + cancel() { + this.holdTime = null; + this.startTime = 0; + this.tick(0); + this.teardown(); + this.options.onCancel?.(); + } + teardown() { + this.state = "idle"; + this.stopDriver(); + this.startTime = this.holdTime = null; + } + stopDriver() { + if (!this.driver) + return; + this.driver.stop(); + this.driver = undefined; + } + sample(sampleTime) { + this.startTime = 0; + return this.tick(sampleTime, true); + } + attachTimeline(timeline) { + if (this.options.allowFlatten) { + this.options.type = "keyframes"; + this.options.ease = "linear"; + this.initAnimation(); + } + this.driver?.stop(); + return timeline.observe(this); + } +} +// Legacy function support +function animateValue(options) { + return new JSAnimation(options); +} + +export { JSAnimation, animateValue, round }; +//# sourceMappingURL=JSAnimation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs new file mode 100644 index 0000000..c82b825 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs @@ -0,0 +1,178 @@ +import { invariant, millisecondsToSeconds, secondsToMilliseconds, noop } from 'motion-utils'; +import { setStyle } from '../render/dom/style-set.mjs'; +import { supportsScrollTimeline } from '../utils/supports/scroll-timeline.mjs'; +import { getFinalKeyframe } from './keyframes/get-final.mjs'; +import { WithPromise } from './utils/WithPromise.mjs'; +import { notifyAnimationStart } from './utils/notify-inspector.mjs'; +import { startWaapiAnimation } from './waapi/start-waapi-animation.mjs'; +import { applyGeneratorOptions } from './waapi/utils/apply-generator.mjs'; + +/** + * NativeAnimation implements AnimationPlaybackControls for the browser's Web Animations API. + */ +class NativeAnimation extends WithPromise { + constructor(options) { + super(); + this.finishedTime = null; + this.isStopped = false; + /** + * Tracks a manually-set start time that takes precedence over WAAPI's + * dynamic startTime. This is cleared when play() or time setter is called, + * allowing WAAPI to take over timing. + */ + this.manualStartTime = null; + if (!options) + return; + const { element, name, keyframes, pseudoElement, allowFlatten = false, finalKeyframe, onComplete, } = options; + this.isPseudoElement = Boolean(pseudoElement); + this.allowFlatten = allowFlatten; + this.options = options; + invariant(typeof options.type !== "string", `Mini animate() doesn't support "type" as a string.`, "mini-spring"); + const transition = applyGeneratorOptions(options); + this.animation = startWaapiAnimation(element, name, keyframes, transition, pseudoElement); + if (transition.autoplay === false) { + this.animation.pause(); + } + this.animation.onfinish = () => { + this.finishedTime = this.time; + if (!pseudoElement) { + const keyframe = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed); + if (this.updateMotionValue) { + this.updateMotionValue(keyframe); + } + /** + * If we can, we want to commit the final style as set by the user, + * rather than the computed keyframe value supplied by the animation. + * We always do this, even when a motion value is present, to prevent + * a visual flash in Firefox where the WAAPI animation's fill is removed + * during cancel() before the scheduled render can apply the correct value. + */ + setStyle(element, name, keyframe); + this.animation.cancel(); + } + onComplete?.(); + this.notifyFinished(); + }; + notifyAnimationStart(this, options, transition); + } + play() { + if (this.isStopped) + return; + this.manualStartTime = null; + this.animation.play(); + if (this.state === "finished") { + this.updateFinished(); + } + } + pause() { + this.animation.pause(); + } + complete() { + this.animation.finish?.(); + } + cancel() { + try { + this.animation.cancel(); + } + catch (e) { } + } + stop() { + if (this.isStopped) + return; + this.isStopped = true; + const { state } = this; + if (state === "idle" || state === "finished") { + return; + } + if (this.updateMotionValue) { + this.updateMotionValue(); + } + else { + this.commitStyles(); + } + if (!this.isPseudoElement) + this.cancel(); + } + /** + * WAAPI doesn't natively have any interruption capabilities. + * + * In this method, we commit styles back to the DOM before cancelling + * the animation. + * + * This is designed to be overridden by NativeAnimationExtended, which + * will create a renderless JS animation and sample it twice to calculate + * its current value, "previous" value, and therefore allow + * Motion to also correctly calculate velocity for any subsequent animation + * while deferring the commit until the next animation frame. + */ + commitStyles() { + const element = this.options?.element; + if (!this.isPseudoElement && element?.isConnected) { + this.animation.commitStyles?.(); + } + } + get duration() { + const duration = this.animation.effect?.getComputedTiming?.().duration || 0; + return millisecondsToSeconds(Number(duration)); + } + get iterationDuration() { + const { delay = 0 } = this.options || {}; + return this.duration + millisecondsToSeconds(delay); + } + get time() { + return millisecondsToSeconds(Number(this.animation.currentTime) || 0); + } + set time(newTime) { + const wasFinished = this.finishedTime !== null; + this.manualStartTime = null; + this.finishedTime = null; + this.animation.currentTime = secondsToMilliseconds(newTime); + if (wasFinished) { + this.animation.pause(); + } + } + /** + * The playback speed of the animation. + * 1 = normal speed, 2 = double speed, 0.5 = half speed. + */ + get speed() { + return this.animation.playbackRate; + } + set speed(newSpeed) { + // Allow backwards playback after finishing + if (newSpeed < 0) + this.finishedTime = null; + this.animation.playbackRate = newSpeed; + } + get state() { + return this.finishedTime !== null + ? "finished" + : this.animation.playState; + } + get startTime() { + return this.manualStartTime ?? Number(this.animation.startTime); + } + set startTime(newStartTime) { + this.manualStartTime = this.animation.startTime = newStartTime; + } + /** + * Attaches a timeline to the animation, for instance the `ScrollTimeline`. + */ + attachTimeline({ timeline, onAttach, observe, }) { + if (this.allowFlatten) { + this.animation.effect?.updateTiming({ easing: "linear" }); + } + this.animation.onfinish = null; + if (timeline && supportsScrollTimeline()) { + this.animation.timeline = timeline; + onAttach?.(this.animation); + return noop; + } + else { + return observe(this); + } + } +} + +export { NativeAnimation }; +//# sourceMappingURL=NativeAnimation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs new file mode 100644 index 0000000..e8787cb --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs @@ -0,0 +1,115 @@ +import { clamp } from 'motion-utils'; +import { time } from '../frameloop/sync-time.mjs'; +import { setStyle } from '../render/dom/style-set.mjs'; +import { JSAnimation } from './JSAnimation.mjs'; +import { NativeAnimation } from './NativeAnimation.mjs'; +import { replaceTransitionType } from './utils/replace-transition-type.mjs'; +import { replaceStringEasing } from './waapi/utils/unsupported-easing.mjs'; + +/** + * 10ms is chosen here as it strikes a balance between smooth + * results (more than one keyframe per frame at 60fps) and + * keyframe quantity. + */ +const sampleDelta = 10; //ms +class NativeAnimationExtended extends NativeAnimation { + constructor(options) { + /** + * The base NativeAnimation function only supports a subset + * of Motion easings, and WAAPI also only supports some + * easing functions via string/cubic-bezier definitions. + * + * This function replaces those unsupported easing functions + * with a JS easing function. This will later get compiled + * to a linear() easing function. + */ + replaceStringEasing(options); + /** + * Ensure we replace the transition type with a generator function + * before passing to WAAPI. + * + * TODO: Does this have a better home? It could be shared with + * JSAnimation. + */ + replaceTransitionType(options); + super(options); + /** + * Only set startTime when the animation should autoplay. + * Setting startTime on a paused WAAPI animation unpauses it + * (per the WAAPI spec), which breaks autoplay: false. + */ + if (options.startTime !== undefined && options.autoplay !== false) { + this.startTime = options.startTime; + } + this.options = options; + } + /** + * The animation's time now, in ms. Wall-clock rather than WAAPI's + * currentTime while running, as under CPU load currentTime may not + * reflect the actual elapsed time, causing incorrect sampling and + * visual jumps. + */ + elapsed() { + return this.state === "running" + ? (time.now() - this.startTime) * this.speed + : this.time * 1000; + } + /** + * The value at a time, from a renderless JS animation. + */ + sample(sampleTime) { + if (!this.sampler) { + const { motionValue, onUpdate, onComplete, onPlay, onStop, element, ...options } = this.options; + /** + * Stop it straight away so its driver doesn't run every frame. + * It can still be sampled. + */ + this.sampler = new JSAnimation({ ...options, autoplay: false }); + this.sampler.stop(); + } + return this.sampler.sample(Math.max(0, sampleTime)).value; + } + /** + * The value now, as WAAPI doesn't set the motion value while it runs. + */ + liveValue() { + const { state } = this; + if (state === "running" || state === "paused") { + return this.sample(this.elapsed()); + } + } + /** + * WAAPI doesn't natively have any interruption capabilities. + * + * Rather than read committed styles back out of the DOM, we can + * sample a renderless JS animation twice to calculate its current + * value, "previous" value, and therefore allow Motion to calculate + * velocity for any subsequent animation. + */ + updateMotionValue(value) { + const { motionValue, element, name } = this.options; + if (!motionValue) + return; + if (value !== undefined) { + motionValue.set(value); + return; + } + const { speed } = this; + const sampleTime = this.elapsed(); + const delta = this.state === "running" && speed + ? clamp(0, sampleDelta, sampleTime) + : 0; + const current = this.sample(sampleTime); + /** + * Write the estimated value to inline style so it persists + * after cancel(), covering the async gap before the next + * animation starts. + */ + if (element && name) + setStyle(element, name, current); + motionValue.setWithVelocity(this.sample(sampleTime - delta * Math.sign(speed)), current, delta / Math.abs(speed || 1)); + } +} + +export { NativeAnimationExtended, sampleDelta }; +//# sourceMappingURL=NativeAnimationExtended.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs new file mode 100644 index 0000000..9566448 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs @@ -0,0 +1,22 @@ +import { NativeAnimation } from './NativeAnimation.mjs'; +import { notifyAnimationStart } from './utils/notify-inspector.mjs'; + +class NativeAnimationWrapper extends NativeAnimation { + constructor(animation) { + super(); + this.animation = animation; + animation.onfinish = () => { + this.finishedTime = this.time; + this.notifyFinished(); + }; + /** + * The optionless super() returns before NativeAnimation's own + * notify, so wrapped animations (view transition cross-fades) + * report here, after the wrapped WAAPI animation is attached. + */ + notifyAnimationStart(this, {}); + } +} + +export { NativeAnimationWrapper }; +//# sourceMappingURL=NativeAnimationWrapper.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/effects.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/effects.mjs new file mode 100644 index 0000000..669d2ea --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/effects.mjs @@ -0,0 +1,113 @@ +import { invariant, removeItem } from 'motion-utils'; +import { positionalKeys } from '../../render/utils/keys-position.mjs'; +import { motionValue } from '../../value/index.mjs'; +import { animateMotionValue } from '../interfaces/motion-value.mjs'; +import { frame } from '../../frameloop/frame.mjs'; + +/** + * Effects registered via `animate.addEffect()`, most recent first. + */ +const effects = []; +function addEffect(effect) { + invariant(typeof effect.test === "function" && typeof effect.read === "function", "Effects passed to animate.addEffect() need test() and read().", "effect-missing-test"); + removeEffect(effect); + effects.unshift(effect); +} +function removeEffect(effect) { + removeItem(effects, effect); +} +function findEffect(subject) { + return effects.find((effect) => effect.test(subject)); +} +/** + * Animate each key in `keyframes` on the motion value `getValue` returns + * for it. `element` is what the keyframe resolver uses to read, render + * and measure the subject when the effect defers resolution to it. + */ +function animateValues(getValue, keyframes, transition = {}, element) { + const animations = []; + const { velocity, path } = transition; + const reduceMotion = transition.reduceMotion ?? element?.shouldReduceMotion; + /** + * Only elements have x/y to move along a path. path claims them by + * deleting them, so hand it a copy. + */ + if (path?.animateValues && element) { + keyframes = { ...keyframes }; + path.animateValues(getValue, keyframes, transition, 0, animations); + } + for (const key in keyframes) { + if (key === "transition" || key === "transitionEnd") + continue; + const target = keyframes[key]; + if (target === undefined) + continue; + const value = getValue(key); + /** + * If the value is already at the defined target, skip the animation. + * We still re-assert the value via frame.update to take precedence + * over any stale transitionEnd callbacks from previous animations. + */ + const current = value.get(); + if (current !== undefined && + !value.isAnimating() && + !Array.isArray(target) && + target === current && + !velocity) { + frame.update(() => value.set(target)); + continue; + } + value.start(animateMotionValue(key, value, target, reduceMotion && positionalKeys.has(key) + ? { type: false } + : transition, element)); + value.animation && + animations.push(value.animation); + } + const { transitionEnd } = keyframes; + if (transitionEnd) { + const applyTransitionEnd = () => frame.update(() => { + for (const key in transitionEnd) { + getValue(key).set(transitionEnd[key]); + } + }); + animations.length + ? Promise.all(animations).then(applyTransitionEnd) + : applyTransitionEnd(); + } + return animations; +} +/** + * Animate the keys of `subject` via `effect`. Motion values are created on + * first animation and bound to the subject through the effect for the + * rest of its life. + * + * Without `element`, a new value is seeded synchronously from the first + * keyframe or `effect.read()`. With it, the value starts undefined and the + * keyframe resolver reads the subject (batched, with unit conversion by + * measurement) via `element`. + */ +function animateEffectSubject(effect, subject, keyframes, transition, element) { + return animateValues((key) => { + let value = effect.get(subject, key); + if (!value) { + let initial; + if (!element) { + const target = keyframes[key]; + initial = + firstKeyframe(target) ?? + effect.read(subject, key, target); + invariant(initial !== undefined, `"${key}" can't be read from the animated subject. Provide [from, to] keyframes.`, "effect-unreadable-value"); + } + value = motionValue(initial, { owner: element }); + effect(subject, { [key]: value }); + } + return value; + }, keyframes, transition, element); +} +function firstKeyframe(target) { + const first = Array.isArray(target) ? target[0] : undefined; + return first === null ? undefined : first; +} + +export { addEffect, animateEffectSubject, animateValues, findEffect, removeEffect }; +//# sourceMappingURL=effects.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/element.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/element.mjs new file mode 100644 index 0000000..b910e12 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/element.mjs @@ -0,0 +1,80 @@ +import { styleSubjectEffect } from '../../effects/style/index.mjs'; +import { svgSubjectEffect } from '../../effects/svg/index.mjs'; +import { measureViewportBox } from '../../projection/utils/measure.mjs'; +import { isSVGElement } from '../../utils/is-svg-element.mjs'; +import { DOMKeyframesResolver } from '../keyframes/DOMKeyframesResolver.mjs'; +import { animateValues, animateEffectSubject } from './effects.mjs'; + +const noProps = {}; +const getElementEffect = (element) => (isSVGElement(element) + ? svgSubjectEffect + : styleSubjectEffect); +/** + * Presents an effect bound to a DOM element in the shape the DOM keyframe + * resolver and WAAPI expect, which is that of a VisualElement. Holds no + * state: everything delegates to the effect. Goes once the resolver takes + * an effect and subject directly. + */ +class EffectSubject { + constructor(effect, current) { + this.effect = effect; + this.current = current; + this.KeyframeResolver = DOMKeyframesResolver; + } + getValue(key) { + return this.effect.get(this.current, key); + } + readValue(key, target) { + return this.effect.read(this.current, key, target); + } + render() { + this.effect.flush(this.current); + } + measureViewportBox() { + return measureViewportBox(this.current); + } + getProps() { + return noProps; + } +} +/** + * Animate a DOM element's styles. HTML elements are bound through + * styleEffect, SVG through svgEffect, and both are resolved with the DOM + * keyframe resolver so reads are batched, units are converted by + * measurement and eligible values run on WAAPI. + * + * Pass the element's VisualElement (a <motion.*> component or an + * animateLayout() node) to animate its values instead, so the two keep + * sharing values and a renderer. + */ +function animateElement(element, keyframes, transition, visualElement) { + if (visualElement) { + return animateValues((key) => visualElement.getValue(key, null), keyframes, transition, visualElement); + } + const effect = getElementEffect(element); + return animateEffectSubject(effect, element, keyframes, transition, new EffectSubject(effect, element)); +} +/** + * Hand the values styleEffect/svgEffect are rendering on `element`, + * whether bound by animate() or directly, to a VisualElement that now + * owns the element (e.g. created by animateLayout()), so a single + * renderer drives them alongside its own values. + */ +function handOffElementState(element, visualElement) { + const state = getElementEffect(element).state(element); + if (!state) + return; + const { transformKeys } = state; + state.release().forEach((value, key) => { + /** + * The style effect derives transform (from the bound transform + * keys) and transformBox itself; a VisualElement builds its own. + */ + const derived = key === "transformBox" || + (key === "transform" && transformKeys?.length); + derived || visualElement.addValue(key, value); + }); +} + +export { animateElement, handOffElementState }; +//# sourceMappingURL=element.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/single-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/single-value.mjs new file mode 100644 index 0000000..45767f1 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/animate/single-value.mjs @@ -0,0 +1,12 @@ +import { animateMotionValue } from '../interfaces/motion-value.mjs'; +import { motionValue } from '../../value/index.mjs'; +import { isMotionValue } from '../../value/utils/is-motion-value.mjs'; + +function animateSingleValue(value, keyframes, options) { + const motionValue$1 = isMotionValue(value) ? value : motionValue(value); + motionValue$1.start(animateMotionValue("", motionValue$1, keyframes, options)); + return motionValue$1.animation; +} + +export { animateSingleValue }; +//# sourceMappingURL=single-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs new file mode 100644 index 0000000..92f6c97 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/drivers/frame.mjs @@ -0,0 +1,19 @@ +import { time } from '../../frameloop/sync-time.mjs'; +import { frameData } from '../../frameloop/frame-data.mjs'; +import { cancelFrame, frame } from '../../frameloop/frame.mjs'; + +const frameloopDriver = (update) => { + const passTimestamp = ({ timestamp }) => update(timestamp); + return { + start: (keepAlive = true) => frame.update(passTimestamp, keepAlive), + stop: () => cancelFrame(passTimestamp), + /** + * If we're processing this frame we can use the + * framelocked timestamp to keep things in sync. + */ + now: () => (frameData.isProcessing ? frameData.timestamp : time.now()), + }; +}; + +export { frameloopDriver }; +//# sourceMappingURL=frame.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs new file mode 100644 index 0000000..6342080 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/inertia.mjs @@ -0,0 +1,90 @@ +import { spring } from './spring.mjs'; + +function inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) { + const origin = keyframes[0]; + const state = { + done: false, + value: origin, + }; + const isOutOfBounds = (v) => v < min || v > max; + const nearestBoundary = (v) => { + if (min === undefined) + return max; + if (max === undefined) + return min; + return Math.abs(min - v) < Math.abs(max - v) ? min : max; + }; + let amplitude = power * velocity; + const ideal = origin + amplitude; + const target = modifyTarget === undefined ? ideal : modifyTarget(ideal); + /** + * If the target has changed we need to re-calculate the amplitude, otherwise + * the animation will start from the wrong position. + */ + if (target !== ideal) + amplitude = target - origin; + const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant); + const applyFriction = (t) => { + const delta = calcDelta(t); + state.done = Math.abs(delta) <= restDelta; + state.value = state.done ? target : target + delta; + }; + /** + * Ideally this would resolve for t in a stateless way, we could + * do that by always precalculating the animation but as we know + * this will be done anyway we can assume that spring will + * be discovered during that. + */ + let timeReachedBoundary; + let spring$1; + const checkCatchBoundary = (t) => { + if (!isOutOfBounds(state.value)) + return; + timeReachedBoundary = t; + spring$1 = spring({ + keyframes: [state.value, nearestBoundary(state.value)], + /** + * The friction curve is target + calcDelta(t), so its exact + * derivative is -calcDelta(t) / timeConstant in units/ms, + * converted here to the units/second expected by spring. + */ + velocity: (-calcDelta(t) / timeConstant) * 1000, + damping: bounceDamping, + stiffness: bounceStiffness, + restDelta, + restSpeed, + }); + }; + checkCatchBoundary(0); + return { + calculatedDuration: null, + next: (t) => { + /** + * We need to resolve the friction to figure out if we need a + * spring but we don't want to do this twice per frame. So here + * we flag if we updated for this frame and later if we did + * we can skip doing it again. + */ + let hasUpdatedFrame = false; + if (!spring$1 && timeReachedBoundary === undefined) { + hasUpdatedFrame = true; + applyFriction(t); + checkCatchBoundary(t); + } + /** + * If we have a spring and the provided t is beyond the moment the friction + * animation crossed the min/max boundary, use the spring. + */ + if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) { + return spring$1.next(t - timeReachedBoundary); + } + else { + !hasUpdatedFrame && applyFriction(t); + return state; + } + }, + }; +} + +export { inertia }; +//# sourceMappingURL=inertia.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs new file mode 100644 index 0000000..d651bef --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs @@ -0,0 +1,74 @@ +import { easeInOut, isEasingArray, easingDefinitionToFunction, MotionGlobalConfig, clamp } from 'motion-utils'; +import { interpolate } from '../../utils/interpolate.mjs'; +import { mix } from '../../utils/mix/index.mjs'; +import { defaultOffset } from '../keyframes/offsets/default.mjs'; +import { convertOffsetToTimes } from '../keyframes/offsets/time.mjs'; + +function defaultEasing(values, easing) { + return values.map(() => easing || easeInOut).splice(0, values.length - 1); +} +function keyframes({ duration = 300, keyframes: keyframeValues, times, ease = "easeInOut", }) { + /** + * Easing functions can be externally defined as strings. Here we convert them + * into actual functions. + */ + const easingFunctions = isEasingArray(ease) + ? ease.map(easingDefinitionToFunction) + : easingDefinitionToFunction(ease) || easeInOut; + /** + * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator + * to reduce GC during animation. + */ + const state = { + done: false, + value: keyframeValues[0], + }; + /** + * Fast setup path for two keyframes one easing. + */ + if (keyframeValues.length === 2 && + !Array.isArray(easingFunctions) && + (!times || + times.length !== 2 || + (times[0] === 0 && times[1] === 1))) { + const [origin, target] = keyframeValues; + const mixer = origin === target + ? undefined + : (MotionGlobalConfig.mix || mix)(origin, target); + return { + calculatedDuration: duration, + next: (t) => { + state.value = mixer + ? mixer(easingFunctions(duration > 0 ? clamp(0, 1, t / duration) : 1)) + : target; + state.done = t >= duration; + return state; + }, + }; + } + /** + * Create a times array based on the provided 0-1 offsets + */ + const absoluteTimes = convertOffsetToTimes( + // Only use the provided offsets if they're the correct length + // TODO Maybe we should warn here if there's a length mismatch + times && times.length === keyframeValues.length + ? times + : defaultOffset(keyframeValues), duration); + const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, { + ease: Array.isArray(easingFunctions) + ? easingFunctions + : defaultEasing(keyframeValues, easingFunctions), + }); + return { + calculatedDuration: duration, + next: (t) => { + state.value = mapTimeToKeyframe(t); + state.done = t >= duration; + return state; + }, + }; +} + +export { defaultEasing, keyframes }; +//# sourceMappingURL=keyframes.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/spring.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/spring.mjs new file mode 100644 index 0000000..cd088e7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/spring.mjs @@ -0,0 +1,399 @@ +import { millisecondsToSeconds, secondsToMilliseconds, warning, clamp } from 'motion-utils'; +import { generateLinearEasing } from '../waapi/utils/linear.mjs'; +import { calcGeneratorDuration, maxGeneratorDuration } from './utils/calc-duration.mjs'; +import { createGeneratorEasing } from './utils/create-generator-easing.mjs'; + +const springDefaults = { + // Default spring physics + stiffness: 100, + damping: 10, + mass: 1.0, + // Default duration/bounce-based options + duration: 800, // in ms + bounce: 0.3, + visualDuration: 0.3, // in seconds + // Rest thresholds + restSpeed: { + granular: 0.01, + default: 2, + }, + restDelta: { + granular: 0.005, + default: 0.5, + }, + // Limits + minDuration: 0.01, // in seconds + maxDuration: 10.0, // in seconds + minDamping: 0.05, +}; +/** + * Maps bounce to a damping ratio as SwiftUI does: 0 is critically damped, and + * it approaches undamped towards 1 and infinitely overdamped towards -1. Both + * ends are limited so the spring still moves and settles. + */ +const bounceToDampingRatio = (bounce) => bounce < 0 + ? 1 / Math.max(1 + bounce, springDefaults.minDamping) + : Math.max(1 - bounce, springDefaults.minDamping); +/** + * Scales an overdamped spring's undamped frequency so that, at its defining + * time, it has as far left to go as the critically damped spring that's + * criticalFreqTime radians in by then. A negative bounce then changes the + * shape of the curve, not when it arrives. 1 at a damping ratio of 1, so + * there's no jump at a bounce of 0. + * + * Solved by Newton on the remaining distance (times fast - slow), which is + * convex from criticalFreqTime onwards. criticalFreqTime is always below the + * answer, so it converges from below without overshooting. + */ +function overdampedFreqScale(dampingRatio, criticalFreqTime) { + if (!(dampingRatio > 1)) + return 1; + const root = Math.sqrt(dampingRatio * dampingRatio - 1); + const slow = dampingRatio - root; + const fast = dampingRatio + root; + const target = 2 * root * Math.exp(-criticalFreqTime) * (1 + criticalFreqTime); + return (approximateRoot((freqTime) => fast * Math.exp(-slow * freqTime) - + slow * Math.exp(-fast * freqTime) - + target, (freqTime) => Math.exp(-fast * freqTime) - Math.exp(-slow * freqTime), criticalFreqTime) / criticalFreqTime); +} +function calcAngularFreq(undampedFreq, dampingRatio) { + return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio); +} +const rootIterations = 12; +function approximateRoot(envelope, derivative, initialGuess) { + let result = initialGuess; + for (let i = 1; i < rootIterations; i++) { + result = result - envelope(result) / derivative(result); + } + return result; +} +/** + * This is ported from the Framer implementation of duration-based spring resolution. + */ +const safeMin = 0.001; +/** + * Assumes zero initial velocity and the default mass: time-defined springs + * ignore inherited velocity and only resolve without valid physics. Returns + * NaN physics when the root search doesn't converge. + */ +function findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, }) { + let envelope; + let derivative; + warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), "Spring duration must be 10 seconds or less", "spring-duration-limit"); + const dampingRatio = bounceToDampingRatio(bounce); + duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration)); + if (dampingRatio < 1) { + /** + * Underdamped spring + */ + envelope = (undampedFreq) => { + const exponentialDecay = undampedFreq * dampingRatio; + const delta = exponentialDecay * duration; + const b = calcAngularFreq(undampedFreq, dampingRatio); + const c = Math.exp(-delta); + return safeMin - (exponentialDecay / b) * c; + }; + derivative = (undampedFreq) => { + const exponentialDecay = undampedFreq * dampingRatio; + const delta = exponentialDecay * duration; + const e = dampingRatio * + dampingRatio * + undampedFreq * + undampedFreq * + duration; + const f = Math.exp(-delta); + const g = calcAngularFreq(undampedFreq * undampedFreq, dampingRatio); + const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1; + return (factor * -e * f) / g; + }; + } + else { + /** + * Critically-damped spring. Overdamped springs reuse this root, + * scaled below. + */ + envelope = (undampedFreq) => { + const a = Math.exp(-undampedFreq * duration); + const b = undampedFreq * duration + 1; + return -safeMin + a * b; + }; + derivative = (undampedFreq) => { + const a = Math.exp(-undampedFreq * duration); + const b = -undampedFreq * (duration * duration); + return a * b; + }; + } + const initialGuess = 5 / duration; + const criticalFreq = approximateRoot(envelope, derivative, initialGuess); + const undampedFreq = criticalFreq * + overdampedFreqScale(dampingRatio, criticalFreq * duration); + const stiffness = undampedFreq * undampedFreq; + return { + stiffness, + damping: dampingRatio * 2 * Math.sqrt(stiffness), + duration: secondsToMilliseconds(duration), + }; +} +/** + * Spring physics must be finite. stiffness and mass are also divisors so must + * be positive, whereas a damping of 0 is a valid, perpetually oscillating + * spring. Relational rather than Number.isFinite so numeric strings still + * coerce. + */ +const isValidPhysics = (value, canBeZero) => (canBeZero ? value >= 0 : value > 0) && value < Infinity; +/** + * Returns value if it's usable spring physics, otherwise undefined so callers + * fall back to the default. An explicit `undefined`, e.g. from a forwarded + * optional prop, must fall back too. Invalid physics would otherwise resolve + * to NaN spring values that never report done. + */ +function resolvePhysics(value, canBeZero) { + if (isValidPhysics(value, canBeZero)) + return value; + if (process.env.NODE_ENV !== "production") { + warning(value === undefined, "Spring stiffness and mass must be positive, damping 0 or greater", "spring-invalid-physics"); + } + return undefined; +} +function getSpringOptions(options) { + /** + * Resolve physics before choosing between physics- and duration-based + * resolution, so an invalid stiffness doesn't also silently discard a + * valid duration/bounce. + */ + const validStiffness = resolvePhysics(options.stiffness); + const validDamping = resolvePhysics(options.damping, true); + const validMass = resolvePhysics(options.mass); + const springOptions = { + ...options, + stiffness: validStiffness ?? springDefaults.stiffness, + damping: validDamping ?? springDefaults.damping, + mass: validMass ?? springDefaults.mass, + isResolvedFromDuration: false, + // stiffness/damping/mass overrides duration/bounce + isTimeDefined: (validStiffness ?? validDamping ?? validMass) === undefined && + (options.duration !== undefined || options.bounce !== undefined), + }; + if (springOptions.isTimeDefined) { + if (options.visualDuration) { + const dampingRatio = bounceToDampingRatio(options.bounce || 0); + const root = ((2 * Math.PI) / (options.visualDuration * 1.2)) * + overdampedFreqScale(dampingRatio, (2 * Math.PI) / 1.2); + springOptions.stiffness = root * root; + springOptions.damping = + 2 * dampingRatio * Math.sqrt(springOptions.stiffness); + } + else { + Object.assign(springOptions, findSpring(springOptions)); + springOptions.isResolvedFromDuration = true; + } + /** + * Time options can degenerate: a NaN bounce gives a NaN damping, an + * infinite visualDuration a 0 stiffness, and findSpring NaN for both + * when it doesn't converge. Replace the two together, so the + * relationship duration resolution establishes between them is never + * left half-overwritten. + */ + if (!isValidPhysics(springOptions.stiffness) || + !isValidPhysics(springOptions.damping, true)) { + springOptions.stiffness = springDefaults.stiffness; + springOptions.damping = springDefaults.damping; + } + } + return springOptions; +} +function spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) { + const options = typeof optionsOrVisualDuration !== "object" + ? { + visualDuration: optionsOrVisualDuration, + keyframes: [0, 1], + bounce, + } + : optionsOrVisualDuration; + const origin = options.keyframes[0]; + const target = options.keyframes[options.keyframes.length - 1]; + /** + * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator + * to reduce GC during animation. + */ + const state = { done: false, value: origin }; + const { stiffness, damping, mass, duration, isResolvedFromDuration, isTimeDefined, } = getSpringOptions({ ...options }); + /** + * Time-defined springs ignore inherited velocity. Velocity from + * interrupted animations causes massive oscillation on small-range + * animations. + */ + const inheritVelocity = (velocity) => isTimeDefined ? 0 : -millisecondsToSeconds(velocity); + const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass)); + const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass)); + const decay = dampingRatio * undampedAngularFreq; + /** + * Everything that changes when the spring is retargeted: written by + * retarget() and update(), read by the resolvers. Grouped on one object, + * like the coefficients (c) below. Writing doubles to object fields + * measured marginally faster than to captured let variables in optimised + * code; neither allocates, so this is a grouping choice, not a GC one. + */ + const s = { + target, + delta: target - origin, + velocity: inheritVelocity(options.velocity || 0) || 0, + restSpeed: 0, + restDelta: 0, + }; + /** + * If we're working on a granular scale, use smaller defaults for determining + * when the spring is finished. + * + * These defaults have been selected empirically based on what strikes a good + * ratio between feeling good and finishing as soon as changes are imperceptible. + */ + const setRestThresholds = () => { + const isGranularScale = Math.abs(s.delta) < 5; + s.restSpeed = + options.restSpeed || + (isGranularScale + ? springDefaults.restSpeed.granular + : springDefaults.restSpeed.default); + s.restDelta = + options.restDelta || + (isGranularScale + ? springDefaults.restDelta.granular + : springDefaults.restDelta.default); + }; + setRestThresholds(); + let resolveSpring; + let resolveVelocity; + /** + * Derives the coefficients that depend on origin, target and initial + * velocity. Called once now and again whenever the spring is retargeted. + */ + let update; + if (dampingRatio < 1) { + const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio); + /** + * A is the position coefficient, sinC/cosC the coefficients of the + * analytical derivative (px/ms). The exp/sin/cos terms depend only + * on t, so they're memoized by t independently of the target: a + * spring retargeted every frame samples the same t each frame and + * skips the transcendentals entirely. + */ + const c = { A: 0, sinC: 0, cosC: 0, t: -1, env: 0, sin: 0, cos: 0 }; + update = () => { + c.A = (s.velocity + decay * s.delta) / angularFreq; + c.sinC = decay * c.A + s.delta * angularFreq; + c.cosC = decay * s.delta - c.A * angularFreq; + }; + const sample = (t) => { + if (t !== c.t) { + c.t = t; + c.env = Math.exp(-decay * t); + c.sin = Math.sin(angularFreq * t); + c.cos = Math.cos(angularFreq * t); + } + }; + // Underdamped spring + resolveSpring = (t) => { + sample(t); + return s.target - c.env * (c.A * c.sin + s.delta * c.cos); + }; + resolveVelocity = (t) => { + sample(t); + return c.env * (c.sinC * c.sin + c.cosC * c.cos); + }; + } + else if (dampingRatio === 1) { + // Critically damped spring + resolveSpring = (t) => s.target - + Math.exp(-undampedAngularFreq * t) * + (s.delta + (s.velocity + undampedAngularFreq * s.delta) * t); + // Analytical derivative of critically damped spring (px/ms) + const c = { C: 0 }; + update = () => { + c.C = s.velocity + undampedAngularFreq * s.delta; + }; + resolveVelocity = (t) => Math.exp(-undampedAngularFreq * t) * + (undampedAngularFreq * c.C * t - s.velocity); + } + else { + /** + * Overdamped spring: the sum of a slow and a fast decaying + * exponential, so no term can overflow however heavily it's damped. + */ + const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1); + const slow = decay - dampedAngularFreq; + const fast = decay + dampedAngularFreq; + /** + * Physics-defined springs keep a non-physical limit: once + * dampedAngularFreq * t passes 300, both terms decay at the damping + * rate. Heavily overdamped drag springs (dragElastic: 0, + * dragTransition) rely on this to settle almost at once rather than + * creep at stiffness / damping. Negative bounce needs the exact + * curve, so time-defined springs are exempt. + */ + const limit = isTimeDefined ? Infinity : 300 / dampedAngularFreq; + const decayAt = (rate, t) => Math.exp(t > limit ? -rate * limit - decay * (t - limit) : -rate * t); + const c = { S: 0, F: 0 }; + update = () => { + const P = (s.velocity + decay * s.delta) / dampedAngularFreq; + c.S = (s.delta + P) / 2; + c.F = (s.delta - P) / 2; + }; + resolveSpring = (t) => s.target - c.S * decayAt(slow, t) - c.F * decayAt(fast, t); + // Analytical derivative of overdamped spring (px/ms) + resolveVelocity = (t) => slow * c.S * decayAt(slow, t) + fast * c.F * decayAt(fast, t); + } + update(); + const calculatedDuration = isResolvedFromDuration ? duration || null : null; + const generator = { + calculatedDuration, + /** + * Aim the spring at a new target from its current position and + * velocity, reusing the resolved physics and closures. + */ + retarget: (keyframes, newVelocity) => { + s.target = keyframes[keyframes.length - 1]; + s.delta = s.target - keyframes[0]; + s.velocity = inheritVelocity(newVelocity); + // Default thresholds depend on the scale of the new delta + if (!(options.restSpeed && options.restDelta)) + setRestThresholds(); + // Invalidate any duration lazily cached by JSAnimation + generator.calculatedDuration = calculatedDuration; + state.done = false; + update(); + }, + velocity: (t) => secondsToMilliseconds(resolveVelocity(t)), + next: (t) => { + const current = resolveSpring(t); + if (!isResolvedFromDuration) { + const currentVelocity = secondsToMilliseconds(resolveVelocity(t)); + state.done = + Math.abs(currentVelocity) <= s.restSpeed && + Math.abs(s.target - current) <= s.restDelta; + } + else { + state.done = t >= duration; + } + state.value = state.done ? s.target : current; + return state; + }, + toString: () => { + const easingDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration); + const easing = generateLinearEasing((progress) => generator.next(easingDuration * progress).value, easingDuration, 30); + return easingDuration + "ms " + easing; + }, + toTransition: () => { }, + }; + return generator; +} +spring.applyToOptions = (options) => { + const generatorOptions = createGeneratorEasing(options, 100, spring); + options.ease = generatorOptions.ease; + options.duration = secondsToMilliseconds(generatorOptions.duration); + options.type = "keyframes"; + return options; +}; + +export { spring }; +//# sourceMappingURL=spring.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs new file mode 100644 index 0000000..4449f34 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs @@ -0,0 +1,19 @@ +/** + * Implement a practical max duration for keyframe generation + * to prevent infinite loops + */ +const maxGeneratorDuration = 20000; +function calcGeneratorDuration(generator, timeStep = 50, maxDuration = maxGeneratorDuration, keyframes) { + let duration = 0; + let state = generator.next(duration); + keyframes?.push(state.value); + while (!state.done && duration < maxDuration) { + duration += timeStep; + state = generator.next(duration); + keyframes?.push(state.value); + } + return duration >= maxDuration ? Infinity : duration; +} + +export { calcGeneratorDuration, maxGeneratorDuration }; +//# sourceMappingURL=calc-duration.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs new file mode 100644 index 0000000..cf511cb --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs @@ -0,0 +1,33 @@ +import { millisecondsToSeconds } from 'motion-utils'; +import { calcGeneratorDuration, maxGeneratorDuration } from './calc-duration.mjs'; + +/** + * Create a progress => progress easing function from a generator. + */ +function createGeneratorEasing(options, scale = 100, createGenerator) { + /** + * The easing is generated over 0 - scale, but velocity is in the + * value's own units, so scale it to match. Otherwise an interrupted + * spring hands off the wrong speed, or direction. Keyframes with + * units (colours, filters, mixed units) give NaN, which is falsy, + * so their velocity passes through unscaled. + */ + const { keyframes: k, velocity: v } = options; + const delta = k && k[k.length - 1] - k[0]; + const generator = createGenerator({ + ...options, + velocity: v && delta ? (v * scale) / delta : v, + keyframes: [0, scale], + }); + const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration); + return { + type: "keyframes", + ease: (progress) => { + return generator.next(duration * progress).value / scale; + }, + duration: millisecondsToSeconds(duration), + }; +} + +export { createGeneratorEasing }; +//# sourceMappingURL=create-generator-easing.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs new file mode 100644 index 0000000..e240fd2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs @@ -0,0 +1,6 @@ +function isGenerator(type) { + return typeof type === "function" && "applyToOptions" in type; +} + +export { isGenerator }; +//# sourceMappingURL=is-generator.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs new file mode 100644 index 0000000..ade88da --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs @@ -0,0 +1,22 @@ +import { velocityPerSecond } from 'motion-utils'; + +const velocitySampleDuration = 5; // ms +function getGeneratorVelocity(resolveValue, t, current) { + const prevT = Math.max(t - velocitySampleDuration, 0); + return velocityPerSecond(current - resolveValue(prevT), t - prevT); +} +/** + * A generator's velocity at time t in units/second: analytical where the + * generator provides it (springs), otherwise by finite difference. Before + * the animation has started this is its initial velocity. + */ +function calcGeneratorVelocity(generator, t, initialVelocity = 0) { + if (t <= 0) + return initialVelocity; + return generator.velocity + ? generator.velocity(t) + : getGeneratorVelocity((s) => generator.next(s).value, t, generator.next(t).value); +} + +export { calcGeneratorVelocity, getGeneratorVelocity }; +//# sourceMappingURL=velocity.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs new file mode 100644 index 0000000..7c42c9a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.mjs @@ -0,0 +1,106 @@ +import { secondsToMilliseconds, MotionGlobalConfig } from 'motion-utils'; +import { AsyncMotionValueAnimation } from '../AsyncMotionValueAnimation.mjs'; +import { JSAnimation } from '../JSAnimation.mjs'; +import { getValueTransition } from '../utils/get-value-transition.mjs'; +import { makeAnimationInstant } from '../utils/make-animation-instant.mjs'; +import { getDefaultTransition } from '../utils/default-transitions.mjs'; +import { getFinalKeyframe } from '../keyframes/get-final.mjs'; +import { isTransitionDefined } from '../utils/is-transition-defined.mjs'; +import { frame } from '../../frameloop/frame.mjs'; + +const animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => { + const valueTransition = getValueTransition(transition, name) || {}; + /** + * Most transition values are currently completely overwritten by value-specific + * transitions. In the future it'd be nicer to blend these transitions. But for now + * delay actually does inherit from the root transition if not value-specific. + */ + const delay = valueTransition.delay || transition.delay || 0; + /** + * Elapsed isn't a public transition option but can be passed through from + * optimized appear effects in milliseconds. + */ + let { elapsed = 0 } = transition; + elapsed = elapsed - secondsToMilliseconds(delay); + const options = { + keyframes: Array.isArray(target) ? target : [null, target], + ease: "easeOut", + velocity: value.getVelocity(), + ...valueTransition, + delay: -elapsed, + onUpdate: (v) => { + value.set(v); + valueTransition.onUpdate && valueTransition.onUpdate(v); + }, + onComplete: () => { + onComplete(); + valueTransition.onComplete && valueTransition.onComplete(); + }, + name, + motionValue: value, + element: isHandoff ? undefined : element, + hasOnUpdate: !!valueTransition.onUpdate, + }; + /** + * If there's no transition defined for this value, we can generate + * unique transition settings for this value. + */ + if (!isTransitionDefined(valueTransition)) { + Object.assign(options, getDefaultTransition(name, options)); + } + /** + * Both WAAPI and our internal animation functions use durations + * as defined by milliseconds, while our external API defines them + * as seconds. + */ + options.duration && (options.duration = secondsToMilliseconds(options.duration)); + options.repeatDelay && (options.repeatDelay = secondsToMilliseconds(options.repeatDelay)); + /** + * Support deprecated way to set initial value. Prefer keyframe syntax. + */ + if (options.from !== undefined) { + options.keyframes[0] = options.from; + } + let shouldSkip = false; + if (options.type === false || + (options.duration === 0 && !options.repeatDelay)) { + makeAnimationInstant(options); + if (options.delay === 0) { + shouldSkip = true; + } + } + if (MotionGlobalConfig.instantAnimations || + MotionGlobalConfig.skipAnimations || + element?.shouldSkipAnimations || + valueTransition.skipAnimations) { + shouldSkip = true; + makeAnimationInstant(options); + options.delay = 0; + } + /** + * If the transition type or easing has been explicitly set by the user + * then we don't want to allow flattening the animation. + */ + options.allowFlatten = !valueTransition.type && !valueTransition.ease; + /** + * If we can or must skip creating the animation, and apply only + * the final keyframe, do so. We also check once keyframes are resolved but + * this early check prevents the need to create an animation at all. + */ + if (shouldSkip && !isHandoff && value.get() !== undefined) { + const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition); + if (finalKeyframe !== undefined) { + frame.update(() => { + options.onUpdate(finalKeyframe); + options.onComplete(); + }); + return; + } + } + return valueTransition.isSync + ? new JSAnimation(options) + : new AsyncMotionValueAnimation(options); +}; + +export { animateMotionValue }; +//# sourceMappingURL=motion-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs new file mode 100644 index 0000000..23a9a9c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.mjs @@ -0,0 +1,109 @@ +import { getValueTransition } from '../utils/get-value-transition.mjs'; +import { resolveTransition } from '../utils/resolve-transition.mjs'; +import { positionalKeys } from '../../render/utils/keys-position.mjs'; +import { setTarget } from '../../render/utils/setters.mjs'; +import { addValueToWillChange } from '../../value/will-change/add-will-change.mjs'; +import { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs'; +import { animateMotionValue } from './motion-value.mjs'; +import { frame } from '../../frameloop/frame.mjs'; + +const isBrowser = typeof window !== "undefined"; +/** + * Decide whether we should block this animation. Previously, we achieved this + * just by checking whether the key was listed in protectedKeys, but this + * posed problems if an animation was triggered by afterChildren and protectedKeys + * had been set to true in the meantime. + */ +function shouldBlockAnimation({ protectedKeys, needsAnimating }, key) { + const shouldBlock = key in protectedKeys && !needsAnimating[key]; + needsAnimating[key] = false; + return shouldBlock; +} +function animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) { + let { transition, transitionEnd, ...target } = targetAndTransition; + const defaultTransition = visualElement.getDefaultTransition(); + transition = transition + ? resolveTransition(transition, defaultTransition) + : defaultTransition; + const reduceMotion = transition?.reduceMotion; + const skipAnimations = transition?.skipAnimations; + if (transitionOverride) + transition = transitionOverride; + const animations = []; + const animationTypeState = type && visualElement.animationState?.getState()[type]; + const path = transition?.path; + if (path) { + // path mutates `target` to claim x/y; loop below skips them. + path.animateValues + ? path.animateValues((key) => visualElement.getValue(key, visualElement.latestValues[key] ?? 0), target, transition, delay, animations) + : path.animateVisualElement?.(visualElement, target, transition, delay, animations); + } + for (const key in target) { + const value = visualElement.getValue(key, visualElement.latestValues[key] ?? null); + const valueTarget = target[key]; + if (valueTarget === undefined || + (animationTypeState && + shouldBlockAnimation(animationTypeState, key))) { + continue; + } + const valueTransition = { + delay, + ...getValueTransition(transition || {}, key), + }; + if (skipAnimations) + valueTransition.skipAnimations = true; + /** + * If the value is already at the defined target, skip the animation. + * We still re-assert the value via frame.update to take precedence + * over any stale transitionEnd callbacks from previous animations. + */ + const currentValue = value.get(); + if (currentValue !== undefined && + !value.isAnimating() && + !Array.isArray(valueTarget) && + valueTarget === currentValue && + !valueTransition.velocity) { + frame.update(() => value.set(valueTarget)); + continue; + } + /** + * If this is the first time a value is being animated, check + * to see if we're handling off from an existing animation. + */ + let isHandoff = false; + if (isBrowser && window.MotionHandoffAnimation) { + const appearId = getOptimisedAppearId(visualElement); + if (appearId) { + const startTime = window.MotionHandoffAnimation(appearId, key, frame); + if (startTime !== null) { + valueTransition.startTime = startTime; + isHandoff = true; + } + } + } + addValueToWillChange(visualElement, key); + const shouldReduceMotion = reduceMotion ?? visualElement.shouldReduceMotion; + value.start(animateMotionValue(key, value, valueTarget, shouldReduceMotion && positionalKeys.has(key) + ? { type: false } + : valueTransition, visualElement, isHandoff)); + const animation = value.animation; + if (animation) { + animations.push(animation); + } + } + if (transitionEnd) { + const applyTransitionEnd = () => frame.update(() => { + transitionEnd && setTarget(visualElement, transitionEnd); + }); + if (animations.length) { + Promise.all(animations).then(applyTransitionEnd); + } + else { + applyTransitionEnd(); + } + } + return animations; +} + +export { animateTarget }; +//# sourceMappingURL=visual-element-target.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs new file mode 100644 index 0000000..4b46dda --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.mjs @@ -0,0 +1,40 @@ +import { resolveVariant, getTypeCustom } from '../../render/utils/resolve-dynamic-variants.mjs'; +import { calcChildStagger } from '../utils/calc-child-stagger.mjs'; +import { animateTarget } from './visual-element-target.mjs'; + +function animateVariant(visualElement, variant, options = {}) { + const resolved = resolveVariant(visualElement, variant, getTypeCustom(visualElement, options.type)); + const transition = options.transitionOverride || + (resolved?.transition ?? (visualElement.getDefaultTransition() || {})); + const getAnimation = () => Promise.all(resolved ? animateTarget(visualElement, resolved, options) : []); + const getChildAnimations = (delay = 0) => { + const { variantChildren } = visualElement; + const { delayChildren = 0, staggerChildren, staggerDirection, } = transition; + const animations = []; + variantChildren?.forEach((child) => { + child.notify("AnimationStart", variant); + animations.push(animateVariant(child, variant, { + ...options, + delay: delay + + (typeof delayChildren === "function" + ? 0 + : delayChildren) + + calcChildStagger(variantChildren, child, delayChildren, staggerChildren, staggerDirection), + }).then(() => child.notify("AnimationComplete", variant))); + }); + return Promise.all(animations); + }; + /** + * when: "beforeChildren" | "afterChildren" runs this element's animation + * and its children's in sequence. + */ + const { when } = transition; + return when + ? when === "beforeChildren" + ? getAnimation().then(() => getChildAnimations()) + : getChildAnimations().then(getAnimation) + : Promise.all([getAnimation(), getChildAnimations(options.delay)]); +} + +export { animateVariant }; +//# sourceMappingURL=visual-element-variant.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs new file mode 100644 index 0000000..5270b19 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.mjs @@ -0,0 +1,18 @@ +import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs'; +import { animateTarget } from './visual-element-target.mjs'; +import { animateVariant } from './visual-element-variant.mjs'; + +function animateVisualElement(visualElement, definition, options = {}) { + visualElement.notify("AnimationStart", definition); + const animation = Array.isArray(definition) + ? Promise.all(definition.map((variant) => animateVariant(visualElement, variant, options))) + : typeof definition === "string" + ? animateVariant(visualElement, definition, options) + : Promise.all(animateTarget(visualElement, resolveVariant(visualElement, definition, options.custom), options)); + return animation.then(() => { + visualElement.notify("AnimationComplete", definition); + }); +} + +export { animateVisualElement }; +//# sourceMappingURL=visual-element.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs new file mode 100644 index 0000000..e72cff5 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs @@ -0,0 +1,172 @@ +import { positionalKeys } from '../../render/utils/keys-position.mjs'; +import { findDimensionValueType } from '../../value/types/dimensions.mjs'; +import { getVariableValue } from '../utils/css-variables-conversion.mjs'; +import { containsCSSVariable, isCSSVariableToken } from '../utils/is-css-variable.mjs'; +import { KeyframeResolver } from './KeyframesResolver.mjs'; +import { isNone } from './utils/is-none.mjs'; +import { makeNoneKeyframesAnimatable } from './utils/make-none-animatable.mjs'; +import { positionalValues, isNumOrPxType } from './utils/unit-conversion.mjs'; + +class DOMKeyframesResolver extends KeyframeResolver { + constructor(unresolvedKeyframes, onComplete, name, motionValue, element) { + super(unresolvedKeyframes, onComplete, name, motionValue, element, true); + } + /** + * Keyframes that don't need reading from the DOM, or measuring, + * resolve straight away rather than in the frame loop's batched read. + */ + scheduleResolve() { + if (this.canReadNow()) { + this.readKeyframes(); + if (!this.needsMeasurement) + return this.complete(); + } + super.scheduleResolve(); + } + canReadNow() { + const { unresolvedKeyframes, element, motionValue } = this; + const origin = unresolvedKeyframes[0] ?? motionValue?.get(); + if (!element?.current || origin === undefined) + return false; + for (let i = 0; i < unresolvedKeyframes.length; i++) { + if (containsCSSVariable(i ? unresolvedKeyframes[i] : origin)) { + return false; + } + } + return true; + } + readKeyframes() { + const { unresolvedKeyframes, element, name } = this; + if (!element || !element.current) + return; + super.readKeyframes(); + /** + * If any keyframe is a CSS variable, we need to find its value by sampling the element + */ + for (let i = 0; i < unresolvedKeyframes.length; i++) { + let keyframe = unresolvedKeyframes[i]; + if (typeof keyframe === "string") { + keyframe = keyframe.trim(); + if (isCSSVariableToken(keyframe)) { + const resolved = getVariableValue(keyframe, element.current); + if (resolved !== undefined) { + unresolvedKeyframes[i] = resolved; + } + if (i === unresolvedKeyframes.length - 1) { + this.finalKeyframe = keyframe; + } + } + } + } + /** + * Resolve "none" values. We do this potentially twice - once before and once after measuring keyframes. + * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which + * have a far bigger performance impact. + */ + this.resolveNoneKeyframes(); + /** + * Check to see if unit type has changed. If so schedule jobs that will + * temporarily set styles to the destination keyframes. + * Skip if we have more than two keyframes or this isn't a positional value. + * TODO: We can throw if there are multiple keyframes and the value type changes. + */ + if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) { + return; + } + const [origin, target] = unresolvedKeyframes; + // Two numbers share a unit, so skip the value type search. + if (typeof origin === "number" && typeof target === "number") + return; + const originType = findDimensionValueType(origin); + const targetType = findDimensionValueType(target); + /** + * If one keyframe contains embedded CSS variables (e.g. in calc()) and the other + * doesn't, we need to measure to convert to pixels. This handles GitHub issue #3410. + */ + const originHasVar = containsCSSVariable(origin); + const targetHasVar = containsCSSVariable(target); + if (originHasVar !== targetHasVar && positionalValues[name]) { + this.needsMeasurement = true; + return; + } + /** + * Either we don't recognise these value types or we can animate between them. + */ + if (originType === targetType) + return; + /** + * If both values are numbers or pixels, we can animate between them by + * converting them to numbers. + */ + if (isNumOrPxType(originType) && isNumOrPxType(targetType)) { + for (let i = 0; i < unresolvedKeyframes.length; i++) { + const value = unresolvedKeyframes[i]; + if (typeof value === "string") { + unresolvedKeyframes[i] = parseFloat(value); + } + } + } + else if (positionalValues[name]) { + /** + * Else, the only way to resolve this is by measuring the element. + */ + this.needsMeasurement = true; + } + } + resolveNoneKeyframes() { + const { unresolvedKeyframes, name } = this; + const noneKeyframeIndexes = []; + for (let i = 0; i < unresolvedKeyframes.length; i++) { + if (unresolvedKeyframes[i] === null || + isNone(unresolvedKeyframes[i])) { + noneKeyframeIndexes.push(i); + } + } + if (noneKeyframeIndexes.length) { + makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name); + } + } + measure() { + const { element, name } = this; + return positionalValues[name](window.getComputedStyle(element.current), () => element.measureViewportBox()); + } + measureInitialState() { + const { element, unresolvedKeyframes, name } = this; + if (!element || !element.current) + return; + if (name === "height") { + this.suspendedScrollY = window.pageYOffset; + } + this.measuredOrigin = this.measure(); + unresolvedKeyframes[0] = this.measuredOrigin; + // Set final key frame to measure after next render + const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1]; + if (measureKeyframe !== undefined) { + this.motionValue?.jump(measureKeyframe, false); + } + } + measureEndState() { + const { element, unresolvedKeyframes } = this; + if (!element || !element.current) + return; + this.motionValue?.jump(this.measuredOrigin, false); + const finalKeyframeIndex = unresolvedKeyframes.length - 1; + const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex]; + unresolvedKeyframes[finalKeyframeIndex] = this.measure(); + if (finalKeyframe !== null && this.finalKeyframe === undefined) { + this.finalKeyframe = finalKeyframe; + } + // If we removed transform values, reapply them before the next render + if (this.removedTransforms?.length) { + this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => { + element + .getValue(unsetTransformName) + .set(unsetTransformValue); + }); + } + this.resolveNoneKeyframes(); + } +} + +export { DOMKeyframesResolver }; +//# sourceMappingURL=DOMKeyframesResolver.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs new file mode 100644 index 0000000..3e7c56b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs @@ -0,0 +1,179 @@ +import { isNumericalString, isZeroValueString } from 'motion-utils'; +import { complex } from '../../value/types/complex/index.mjs'; +import { getAnimatableNone } from '../../value/types/utils/animatable-none.mjs'; +import { fillWildcards } from './utils/fill-wildcards.mjs'; +import { boxDependentValues, removeNonTranslationalTransform } from './utils/unit-conversion.mjs'; +import { frame } from '../../frameloop/frame.mjs'; + +const toResolve = new Set(); +let isScheduled = false; +let anyNeedsMeasurement = false; +let isForced = false; +function measureAllKeyframes() { + if (anyNeedsMeasurement) { + const resolversToMeasure = []; + const elementsToMeasure = new Set(); + const elementsToUntransform = new Set(); + toResolve.forEach((resolver) => { + if (!resolver.needsMeasurement) + return; + resolversToMeasure.push(resolver); + elementsToMeasure.add(resolver.element); + if (boxDependentValues.has(resolver.name)) { + elementsToUntransform.add(resolver.element); + } + }); + const transformsToRestore = new Map(); + /** + * Write pass + * Values measured from the bounding box need bounding box-changing + * transforms removed first. Values read from computed style don't. + */ + elementsToUntransform.forEach((element) => { + const removedTransforms = removeNonTranslationalTransform(element); + if (!removedTransforms.length) + return; + transformsToRestore.set(element, removedTransforms); + element.render(); + }); + // Read + resolversToMeasure.forEach((resolver) => resolver.measureInitialState()); + // Write + elementsToMeasure.forEach((element) => { + element.render(); + const restore = transformsToRestore.get(element); + if (restore) { + restore.forEach(([key, value]) => { + element.getValue(key)?.set(value); + }); + } + }); + // Read + resolversToMeasure.forEach((resolver) => resolver.measureEndState()); + // Write + resolversToMeasure.forEach((resolver) => { + if (resolver.suspendedScrollY !== undefined) { + window.scrollTo(0, resolver.suspendedScrollY); + } + }); + } + anyNeedsMeasurement = false; + isScheduled = false; + toResolve.forEach((resolver) => resolver.complete(isForced)); + toResolve.clear(); +} +function readAllKeyframes() { + toResolve.forEach((resolver) => { + resolver.readKeyframes(); + if (resolver.needsMeasurement) { + anyNeedsMeasurement = true; + } + }); +} +function flushKeyframeResolvers() { + isForced = true; + readAllKeyframes(); + measureAllKeyframes(); + isForced = false; +} +/** + * Normalise a value read from the subject into an animation origin: a + * number read as a string ("0", "200") becomes a number, and a value + * that isn't animatable (e.g. "none") but whose target is becomes an + * animatable zero in the shape of the target. + */ +function readOrigin(value, name, target) { + if (typeof value === "string") { + if (isNumericalString(value) || isZeroValueString(value)) { + return parseFloat(value); + } + else if (!complex.test(value) && complex.test(target)) { + return getAnimatableNone(name, target); + } + } + return value ?? undefined; +} +class KeyframeResolver { + constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) { + this.state = "pending"; + /** + * Track whether this resolver is async. If it is, it'll be added to the + * resolver queue and flushed in the next frame. Resolvers that aren't going + * to trigger read/write thrashing don't need to be async. + */ + this.isAsync = false; + /** + * Track whether this resolver needs to perform a measurement + * to resolve its keyframes. + */ + this.needsMeasurement = false; + this.unresolvedKeyframes = [...unresolvedKeyframes]; + this.onComplete = onComplete; + this.name = name; + this.motionValue = motionValue; + this.element = element; + this.isAsync = isAsync; + } + scheduleResolve() { + this.state = "scheduled"; + if (this.isAsync) { + toResolve.add(this); + if (!isScheduled) { + isScheduled = true; + frame.read(readAllKeyframes); + frame.resolveKeyframes(measureAllKeyframes); + } + } + else { + this.readKeyframes(); + this.complete(); + } + } + readKeyframes() { + const { unresolvedKeyframes, name, element, motionValue } = this; + // If initial keyframe is null we need to read it from the DOM + if (unresolvedKeyframes[0] === null) { + const currentValue = motionValue?.get(); + // TODO: This doesn't work if the final keyframe is a wildcard + const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1]; + if (currentValue !== undefined) { + unresolvedKeyframes[0] = currentValue; + } + else if (element && name) { + const valueAsRead = readOrigin(element.readValue(name, finalKeyframe), name, finalKeyframe); + if (valueAsRead !== undefined) { + unresolvedKeyframes[0] = valueAsRead; + } + } + if (unresolvedKeyframes[0] === undefined) { + unresolvedKeyframes[0] = finalKeyframe; + } + if (motionValue && currentValue === undefined) { + motionValue.set(unresolvedKeyframes[0]); + } + } + fillWildcards(unresolvedKeyframes); + } + setFinalKeyframe() { } + measureInitialState() { } + renderEndStyles() { } + measureEndState() { } + complete(isForcedComplete = false) { + this.state = "complete"; + this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete); + toResolve.delete(this); + } + cancel() { + if (this.state === "scheduled") { + toResolve.delete(this); + this.state = "pending"; + } + } + resume() { + if (this.state === "pending") + this.scheduleResolve(); + } +} + +export { KeyframeResolver, flushKeyframeResolvers }; +//# sourceMappingURL=KeyframesResolver.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs new file mode 100644 index 0000000..4306bd8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs @@ -0,0 +1,12 @@ +const isNotNull = (value) => value !== null; +function getFinalKeyframe(keyframes, { repeat, repeatType = "loop" }, finalKeyframe, speed = 1) { + const resolvedKeyframes = keyframes.filter(isNotNull); + const useFirstKeyframe = speed < 0 || (repeat && repeatType !== "loop" && repeat % 2 === 1); + const index = useFirstKeyframe ? 0 : resolvedKeyframes.length - 1; + return !index || finalKeyframe === undefined + ? resolvedKeyframes[index] + : finalKeyframe; +} + +export { getFinalKeyframe }; +//# sourceMappingURL=get-final.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.mjs new file mode 100644 index 0000000..c2735fe --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.mjs @@ -0,0 +1,10 @@ +import { fillOffset } from './fill.mjs'; + +function defaultOffset(arr) { + const offset = [0]; + fillOffset(offset, arr.length - 1); + return offset; +} + +export { defaultOffset }; +//# sourceMappingURL=default.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs new file mode 100644 index 0000000..9f1f783 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs @@ -0,0 +1,13 @@ +import { progress } from 'motion-utils'; +import { mixNumber } from '../../../utils/mix/number.mjs'; + +function fillOffset(offset, remaining) { + const min = offset[offset.length - 1]; + for (let i = 1; i <= remaining; i++) { + const offsetProgress = progress(0, remaining, i); + offset.push(mixNumber(min, 1, offsetProgress)); + } +} + +export { fillOffset }; +//# sourceMappingURL=fill.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs new file mode 100644 index 0000000..9c2a8cf --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs @@ -0,0 +1,6 @@ +function convertOffsetToTimes(offset, duration) { + return offset.map((o) => o * duration); +} + +export { convertOffsetToTimes }; +//# sourceMappingURL=time.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs new file mode 100644 index 0000000..1f37035 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs @@ -0,0 +1,12 @@ +import { pxValues } from '../../waapi/utils/px-values.mjs'; + +function applyPxDefaults(keyframes, name) { + for (let i = 0; i < keyframes.length; i++) { + if (typeof keyframes[i] === "number" && pxValues.has(name)) { + keyframes[i] = keyframes[i] + "px"; + } + } +} + +export { applyPxDefaults }; +//# sourceMappingURL=apply-px-defaults.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs new file mode 100644 index 0000000..3875853 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs @@ -0,0 +1,8 @@ +function fillWildcards(keyframes) { + for (let i = 1; i < keyframes.length; i++) { + keyframes[i] ?? (keyframes[i] = keyframes[i - 1]); + } +} + +export { fillWildcards }; +//# sourceMappingURL=fill-wildcards.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs new file mode 100644 index 0000000..70b7539 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs @@ -0,0 +1,16 @@ +import { isZeroValueString } from 'motion-utils'; + +function isNone(value) { + if (typeof value === "number") { + return value === 0; + } + else if (value !== null) { + return value === "none" || value === "0" || isZeroValueString(value); + } + else { + return true; + } +} + +export { isNone }; +//# sourceMappingURL=is-none.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs new file mode 100644 index 0000000..31be8a7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs @@ -0,0 +1,37 @@ +import { hasComplexValues } from '../../../value/types/complex/index.mjs'; +import { getAnimatableNone } from '../../../value/types/utils/animatable-none.mjs'; + +/** + * If we encounter keyframes like "none" or "0" and we also have keyframes like + * "#fff" or "200px 200px" we want to find a keyframe to serve as a template for + * the "none" keyframes. In this case "#fff" or "200px 200px" - then these get turned into + * zero equivalents, i.e. "#fff0" or "0px 0px". + */ +const invalidTemplates = new Set(["auto", "none", "0"]); +function makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) { + let i = 0; + let animatableTemplate = undefined; + while (i < unresolvedKeyframes.length && !animatableTemplate) { + const keyframe = unresolvedKeyframes[i]; + if (typeof keyframe === "string" && + !invalidTemplates.has(keyframe) && + hasComplexValues(keyframe)) { + animatableTemplate = unresolvedKeyframes[i]; + } + i++; + } + if (animatableTemplate && name) { + for (const noneIndex of noneKeyframeIndexes) { + /** + * A zero-valued template like "0%" is already its own + * animatable none, so there's nothing to derive. + */ + if (unresolvedKeyframes[noneIndex] === animatableTemplate) + continue; + unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate); + } + } +} + +export { makeNoneKeyframesAnimatable }; +//# sourceMappingURL=make-none-animatable.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs new file mode 100644 index 0000000..d0b933f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs @@ -0,0 +1,73 @@ +import { parseValueFromTransform } from '../../../render/dom/parse-transform.mjs'; +import { transformPropOrder } from '../../../render/utils/keys-transform.mjs'; +import { number } from '../../../value/types/numbers/index.mjs'; +import { px } from '../../../value/types/numbers/units.mjs'; + +const isNumOrPxType = (v) => v === number || v === px; +const transformKeys = new Set(["x", "y", "z"]); +const nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key)); +/** + * Reset any bounding box-changing transforms so the element can be + * measured. Returns the values to restore. Values already at their + * default don't change the box, so they're left alone: an element with + * only `rotate: 0` doesn't need to be re-rendered before measuring. + */ +function removeNonTranslationalTransform(visualElement) { + const removedTransforms = []; + nonTranslationalTransformKeys.forEach((key) => { + const value = visualElement.getValue(key); + if (value !== undefined) { + const current = value.get(); + const reset = key.startsWith("scale") ? 1 : 0; + if (current === reset) + return; + removedTransforms.push([key, current]); + value.set(reset); + } + }); + return removedTransforms; +} +/** + * Values that can only be measured from the bounding box. Elements with + * these values need bounding box-changing transforms removed first. + */ +const boxDependentValues = new Set(["bottom", "right"]); +/** + * Computed width/height is already in pixels and unaffected by + * transforms. It's "auto" for elements without a layout box (e.g. inline), + * in which case we fall back to measuring the bounding box. + */ +function measureDimension(computed, measureBox, axis, paddingStart, paddingEnd, boxSizing) { + const px = parseFloat(computed); + if (!isNaN(px)) + return px; + const { min, max } = measureBox()[axis]; + const size = max - min; + return boxSizing === "border-box" + ? size + : size - parseFloat(paddingStart) - parseFloat(paddingEnd); +} +const positionalValues = { + // Dimensions + width: ({ width, paddingLeft = "0", paddingRight = "0", boxSizing }, measureBox) => measureDimension(width, measureBox, "x", paddingLeft, paddingRight, boxSizing), + height: ({ height, paddingTop = "0", paddingBottom = "0", boxSizing }, measureBox) => measureDimension(height, measureBox, "y", paddingTop, paddingBottom, boxSizing), + top: ({ top }) => parseFloat(top), + left: ({ left }) => parseFloat(left), + bottom: ({ top }, measureBox) => { + const { y } = measureBox(); + return parseFloat(top) + (y.max - y.min); + }, + right: ({ left }, measureBox) => { + const { x } = measureBox(); + return parseFloat(left) + (x.max - x.min); + }, + // Transform + x: ({ transform }) => parseValueFromTransform(transform, "x"), + y: ({ transform }) => parseValueFromTransform(transform, "y"), +}; +// Alias translate longform names +positionalValues.translateX = positionalValues.x; +positionalValues.translateY = positionalValues.y; + +export { boxDependentValues, isNumOrPxType, positionalValues, removeNonTranslationalTransform }; +//# sourceMappingURL=unit-conversion.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.mjs new file mode 100644 index 0000000..a15a511 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.mjs @@ -0,0 +1,7 @@ +import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs'; + +const optimizedAppearDataId = "framerAppearId"; +const optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId); + +export { optimizedAppearDataAttribute, optimizedAppearDataId }; +//# sourceMappingURL=data-id.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.mjs new file mode 100644 index 0000000..7026149 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.mjs @@ -0,0 +1,8 @@ +import { optimizedAppearDataAttribute } from './data-id.mjs'; + +function getOptimisedAppearId(visualElement) { + return visualElement.props[optimizedAppearDataAttribute]; +} + +export { getOptimisedAppearId }; +//# sourceMappingURL=get-appear-id.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs new file mode 100644 index 0000000..793c186 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs @@ -0,0 +1,34 @@ +class WithPromise { + constructor() { + this.isResolved = false; + } + get finished() { + if (!this._finished) { + this._finished = this.isResolved + ? Promise.resolve() + : new Promise((resolve) => { + this._resolve = resolve; + }); + } + return this._finished; + } + updateFinished() { + this._finished = this._resolve = undefined; + this.isResolved = false; + } + notifyFinished() { + this.isResolved = true; + this._resolve?.(); + } + /** + * Allows the animation to be awaited. + * + * @deprecated Use `finished` instead. + */ + then(onResolve, onReject) { + return this.finished.then(onResolve, onReject); + } +} + +export { WithPromise }; +//# sourceMappingURL=WithPromise.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/active-animations.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/active-animations.mjs new file mode 100644 index 0000000..e548994 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/active-animations.mjs @@ -0,0 +1,13 @@ +const animationMaps = new WeakMap(); +const animationMapKey = (name, pseudoElement = "") => `${name}:${pseudoElement}`; +function getAnimationMap(element) { + let map = animationMaps.get(element); + if (!map) { + map = new Map(); + animationMaps.set(element, map); + } + return map; +} + +export { animationMapKey, getAnimationMap }; +//# sourceMappingURL=active-animations.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/arc.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/arc.mjs new file mode 100644 index 0000000..6731fcd --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/arc.mjs @@ -0,0 +1,189 @@ +import { wrap } from 'motion-utils'; +import { motionValue } from '../../value/index.mjs'; +import { animateMotionValue } from '../interfaces/motion-value.mjs'; +import { getValueTransition } from './get-value-transition.mjs'; + +const MIN_LAYOUT_DISTANCE = 20; +function bezierPoint(t, origin, control, target) { + const inv = 1 - t; + return inv * inv * origin + 2 * inv * t * control + t * t * target; +} +function bezierTangentAngle(t, originX, controlX, targetX, originY, controlY, targetY) { + const dx = 2 * (1 - t) * (controlX - originX) + 2 * t * (targetX - controlX); + const dy = 2 * (1 - t) * (controlY - originY) + 2 * t * (targetY - controlY); + return Math.atan2(dy, dx) * (180 / Math.PI); +} +function computeArcControlPoint(fromX, fromY, toX, toY, strength, peak) { + const deltaX = toX - fromX; + const deltaY = toY - fromY; + const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); + if (distance > 0) { + const normalPerpX = -deltaY / distance; + const normalPerpY = deltaX / distance; + const desiredHeight = strength * distance; + return { + x: fromX + deltaX * peak + normalPerpX * desiredHeight, + y: fromY + deltaY * peak + normalPerpY * desiredHeight, + }; + } + return { x: fromX, y: fromY }; +} +/** + * The pure sampling factory: `(from, to) => (t) => point`. Internal — + * used by {@link arc} and the unit tests. Not part of the public surface. + */ +function createArcPath({ strength = 0.5, peak = 0.5, direction, rotate = false, } = {}) { + const rotationScale = rotate === true ? 1 : typeof rotate === "number" ? rotate : 0; + // Auto-direction only: persists across calls to flip the bulge back + // onto the same screen side when the dominant axis changes between + // calls. Reuse the factory (module scope / useMemo) to keep this alive. + let prevBulgeSign; + const createInterpolator = (from, to) => { + const dx = to.x - from.x; + const dy = to.y - from.y; + let signed; + if (direction === "cw") { + signed = -strength; + } + else if (direction === "ccw") { + signed = strength; + } + else { + const dom = Math.abs(dx) >= Math.abs(dy) ? dx : dy; + signed = dom < 0 ? -strength : strength; + } + let control = computeArcControlPoint(from.x, from.y, to.x, to.y, signed, peak); + if (direction === undefined) { + const isVertical = Math.abs(dx) < Math.abs(dy); + const midX = from.x + dx * peak; + const midY = from.y + dy * peak; + const bulgeSign = isVertical + ? Math.sign(control.x - midX) + : Math.sign(control.y - midY); + if (prevBulgeSign !== undefined && + bulgeSign !== 0 && + bulgeSign !== prevBulgeSign) { + signed = -signed; + control = computeArcControlPoint(from.x, from.y, to.x, to.y, signed, peak); + } + else if (bulgeSign !== 0) { + prevBulgeSign = bulgeSign; + } + } + const tangent0 = rotationScale + ? bezierTangentAngle(0, from.x, control.x, to.x, from.y, control.y, to.y) + : 0; + const tangent1 = rotationScale + ? bezierTangentAngle(1, from.x, control.x, to.x, from.y, control.y, to.y) + : 0; + const tangentDelta = rotationScale + ? wrap(-180, 180, tangent1 - tangent0) + : 0; + return (t) => { + const out = { + x: bezierPoint(t, from.x, control.x, to.x), + y: bezierPoint(t, from.y, control.y, to.y), + }; + if (rotationScale) { + const raw = bezierTangentAngle(t, from.x, control.x, to.x, from.y, control.y, to.y); + const baseline = tangent0 + tangentDelta * t; + out.rotate = wrap(-180, 180, raw - baseline) * rotationScale; + } + return out; + }; + }; + return createInterpolator; +} +/** + * Creates a curved path for `transition.path`: + * + * ```ts + * <motion.div animate={{ x: 200, y: 100 }} transition={{ path: arc() }} /> + * ``` + * + * Reuse the returned value (module scope / useMemo / useRef) so its + * continuity closure survives re-renders — a fresh `arc()` has no memory. + */ +function arc(options = {}) { + const sample = createArcPath(options); + const path = { + interpolateProjection(delta) { + // `from` is the current translate offset (carries any in-flight + // displacement when interrupted); `to` is the new layout origin. + // The distance floor avoids visible wobble on tiny shifts. + const tx = delta.x.translate; + const ty = delta.y.translate; + if (Math.sqrt(tx * tx + ty * ty) < MIN_LAYOUT_DISTANCE) { + return undefined; + } + return sample({ x: tx, y: ty }, { x: 0, y: 0 }); + }, + animateValues(getValue, target, transition, delay, animations) { + if (!("x" in target || "y" in target)) + return; + const xValue = getValue("x"); + const yValue = getValue("y"); + const xRaw = target.x; + const yRaw = target.y; + const xFrom = (Array.isArray(xRaw) && xRaw[0] != null + ? xRaw[0] + : xValue?.get()) ?? 0; + const yFrom = (Array.isArray(yRaw) && yRaw[0] != null + ? yRaw[0] + : yValue?.get()) ?? 0; + const xTo = (Array.isArray(xRaw) + ? xRaw[xRaw.length - 1] + : xRaw ?? xFrom); + const yTo = (Array.isArray(yRaw) + ? yRaw[yRaw.length - 1] + : yRaw ?? yFrom); + // Interruption needs no flag: x/y already hold the displaced + // mid-arc position, so xFrom/yFrom carry the continuity geometry. + const interpolate = sample({ x: xFrom, y: yFrom }, { x: xTo, y: yTo }); + // Drive a dedicated `pathRotation` value (composed onto `rotate` + // at the build sites) rather than `rotate` itself, so a + // concurrent rotate animation composes and nothing accumulates + // on interrupt. + const pathRotationValue = interpolate(0).rotate !== undefined + ? getValue("pathRotation") + : undefined; + const pathTransition = { + delay, + ...getValueTransition(transition || {}, "x"), + }; + delete pathTransition.path; + const progress = motionValue(0); + progress.start(animateMotionValue("", progress, [0, 1000], { + ...pathTransition, + isSync: true, + velocity: 0, + onUpdate: (latest) => { + const point = interpolate(latest / 1000); + xValue?.set(point.x); + yValue?.set(point.y); + if (pathRotationValue && point.rotate !== undefined) { + pathRotationValue.set(point.rotate); + } + }, + onComplete: () => { + xValue?.set(xTo); + yValue?.set(yTo); + pathRotationValue?.set(0); + }, + // Interrupt/cancel must clear our additive contribution + // so it can't linger on top of the user's `rotate`. + onStop: () => pathRotationValue?.set(0), + onCancel: () => pathRotationValue?.set(0), + })); + if (progress.animation) { + animations.push(progress.animation); + } + delete target.x; + delete target.y; + }, + }; + return path; +} + +export { arc, createArcPath }; +//# sourceMappingURL=arc.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs new file mode 100644 index 0000000..4ddf789 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.mjs @@ -0,0 +1,16 @@ +function calcChildStagger(children, child, delayChildren, staggerChildren = 0, staggerDirection = 1) { + const index = Array.from(children) + .sort((a, b) => a.sortNodePosition(b)) + .indexOf(child); + const numChildren = children.size; + const maxStaggerDuration = (numChildren - 1) * staggerChildren; + const delayIsFunction = typeof delayChildren === "function"; + return delayIsFunction + ? delayChildren(index, numChildren) + : staggerDirection === 1 + ? index * staggerChildren + : maxStaggerDuration - index * staggerChildren; +} + +export { calcChildStagger }; +//# sourceMappingURL=calc-child-stagger.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs new file mode 100644 index 0000000..c50855a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs @@ -0,0 +1,46 @@ +import { warning } from 'motion-utils'; +import { isGenerator } from '../generators/utils/is-generator.mjs'; +import { isAnimatable } from './is-animatable.mjs'; + +function hasKeyframesChanged(keyframes) { + const current = keyframes[0]; + if (keyframes.length === 1) + return true; + for (let i = 0; i < keyframes.length; i++) { + if (keyframes[i] !== current) + return true; + } +} +function canAnimate(keyframes, name, type, velocity) { + /** + * Check if we're able to animate between the start and end keyframes, + * and throw a warning if we're attempting to animate between one that's + * animatable and another that isn't. + */ + const originKeyframe = keyframes[0]; + if (originKeyframe === null) { + return false; + } + /** + * These aren't traditionally animatable but we do support them. + * In future we could look into making this more generic or replacing + * this function with mix() === mixImmediate + */ + if (name === "display" || name === "visibility") + return true; + const targetKeyframe = keyframes[keyframes.length - 1]; + const isOriginAnimatable = isAnimatable(originKeyframe, name); + const isTargetAnimatable = isAnimatable(targetKeyframe, name); + // Always skip if any of these are true + if (!isOriginAnimatable || !isTargetAnimatable) { + // Only build the message when we're going to warn + isOriginAnimatable !== isTargetAnimatable && + warning(false, `You are trying to animate ${name} from "${originKeyframe}" to "${targetKeyframe}". "${isOriginAnimatable ? targetKeyframe : originKeyframe}" is not an animatable value.`, "value-not-animatable"); + return false; + } + return (hasKeyframesChanged(keyframes) || + ((type === "spring" || isGenerator(type)) && velocity)); +} + +export { canAnimate }; +//# sourceMappingURL=can-animate.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs new file mode 100644 index 0000000..78c8b40 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs @@ -0,0 +1,42 @@ +import { invariant, isNumericalString } from 'motion-utils'; +import { isCSSVariableToken } from './is-css-variable.mjs'; + +/** + * Parse Framer's special CSS variable format into a CSS token and a fallback. + * + * ``` + * `var(--foo, #fff)` => [`--foo`, '#fff'] + * ``` + * + * @param current + */ +const splitCSSVariableRegex = +// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words +/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u; +function parseCSSVariable(current) { + const match = splitCSSVariableRegex.exec(current); + if (!match) + return [,]; + const [, token1, token2, fallback] = match; + return [`--${token1 ?? token2}`, fallback]; +} +const maxDepth = 4; +function getVariableValue(current, element, depth = 1) { + invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property "${current}". This may indicate a circular fallback dependency.`, "max-css-var-depth"); + const [token, fallback] = parseCSSVariable(current); + // No CSS variable detected + if (!token) + return; + // Attempt to read this CSS variable off the element + const resolved = window.getComputedStyle(element).getPropertyValue(token); + if (resolved) { + const trimmed = resolved.trim(); + return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed; + } + return isCSSVariableToken(fallback) + ? getVariableValue(fallback, element, depth + 1) + : fallback; +} + +export { getVariableValue, parseCSSVariable }; +//# sourceMappingURL=css-variables-conversion.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs new file mode 100644 index 0000000..00ca169 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/default-transitions.mjs @@ -0,0 +1,41 @@ +import { transformProps } from '../../render/utils/keys-transform.mjs'; + +const underDampedSpring = { + type: "spring", + stiffness: 500, + damping: 25, + restSpeed: 10, +}; +const criticallyDampedSpring = (target) => ({ + type: "spring", + stiffness: 550, + damping: target === 0 ? 2 * Math.sqrt(550) : 30, + restSpeed: 10, +}); +const keyframesTransition = { + type: "keyframes", + duration: 0.8, +}; +/** + * Default easing curve is a slightly shallower version of + * the default browser easing curve. + */ +const ease = { + type: "keyframes", + ease: [0.25, 0.1, 0.35, 1], + duration: 0.3, +}; +const getDefaultTransition = (valueKey, { keyframes }) => { + if (keyframes.length > 2) { + return keyframesTransition; + } + else if (transformProps.has(valueKey)) { + return valueKey.startsWith("scale") + ? criticallyDampedSpring(keyframes[1]) + : underDampedSpring; + } + return ease; +}; + +export { getDefaultTransition }; +//# sourceMappingURL=default-transitions.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs new file mode 100644 index 0000000..d616d23 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs @@ -0,0 +1,14 @@ +import { resolveTransition } from './resolve-transition.mjs'; + +function getValueTransition(transition, key) { + const valueTransition = transition?.[key] ?? + transition?.["default"] ?? + transition; + if (valueTransition !== transition) { + return resolveTransition(valueTransition, transition); + } + return valueTransition; +} + +export { getValueTransition }; +//# sourceMappingURL=get-value-transition.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-animatable.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-animatable.mjs new file mode 100644 index 0000000..b1ca0da --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-animatable.mjs @@ -0,0 +1,31 @@ +import { complex } from '../../value/types/complex/index.mjs'; + +/** + * Check if a value is animatable. Examples: + * + * ✅: 100, "100px", "#fff" + * ❌: "block", "url(2.jpg)" + * @param value + * + * @internal + */ +const isAnimatable = (value, name) => { + // If the list of keys that might be non-animatable grows, replace with Set + if (name === "zIndex") + return false; + // If it's a number or a keyframes array, we can animate it. We might at some point + // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this, + // but for now lets leave it like this for performance reasons + if (typeof value === "number" || Array.isArray(value)) + return true; + if (typeof value === "string" && // It's animatable if we have a string + (complex.test(value) || value === "0") && // And it contains numbers and/or colors + !value.startsWith("url(") // Unless it starts with "url(" + ) { + return true; + } + return false; +}; + +export { isAnimatable }; +//# sourceMappingURL=is-animatable.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.mjs new file mode 100644 index 0000000..f0d3618 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.mjs @@ -0,0 +1,27 @@ +const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token); +const isCSSVariableName = +/*@__PURE__*/ checkStringStartsWith("--"); +const startsAsVariableToken = +/*@__PURE__*/ checkStringStartsWith("var(--"); +const isCSSVariableToken = (value) => { + const startsWithToken = startsAsVariableToken(value); + if (!startsWithToken) + return false; + // Ensure any comments are stripped from the value as this can harm performance of the regex. + return singleCssVariableRegex.test(value.split("/*")[0].trim()); +}; +const singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu; +/** + * Check if a value contains a CSS variable anywhere (e.g. inside calc()). + * Unlike isCSSVariableToken which checks if the value IS a var() token, + * this checks if the value CONTAINS var() somewhere in the string. + */ +function containsCSSVariable(value) { + if (typeof value !== "string") + return false; + // Strip comments to avoid false positives + return value.split("/*")[0].includes("var(--"); +} + +export { containsCSSVariable, isCSSVariableName, isCSSVariableToken }; +//# sourceMappingURL=is-css-variable.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.mjs new file mode 100644 index 0000000..394fca4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.mjs @@ -0,0 +1,27 @@ +const orchestrationKeys = new Set([ + "when", + "delay", + "delayChildren", + "staggerChildren", + "staggerDirection", + "repeat", + "repeatType", + "repeatDelay", + "from", + "elapsed", +]); +/** + * Decide whether a transition is defined on a given Transition. + * This filters out orchestration options and returns true + * if any options are left. + */ +function isTransitionDefined(transition) { + for (const key in transition) { + if (!orchestrationKeys.has(key)) + return true; + } + return false; +} + +export { isTransitionDefined }; +//# sourceMappingURL=is-transition-defined.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.mjs new file mode 100644 index 0000000..2c66615 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.mjs @@ -0,0 +1,7 @@ +function makeAnimationInstant(options) { + options.duration = 0; + options.type = "keyframes"; +} + +export { makeAnimationInstant }; +//# sourceMappingURL=make-animation-instant.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/notify-inspector.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/notify-inspector.mjs new file mode 100644 index 0000000..cc59346 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/notify-inspector.mjs @@ -0,0 +1,56 @@ +import { frameData } from '../../frameloop/frame-data.mjs'; +import { time } from '../../frameloop/sync-time.mjs'; + +function baseRecord(kind, animation) { + return { + kind, + animation, + timestamp: time.now(), + frameTimestamp: frameData.timestamp, + frameIsProcessing: frameData.isProcessing, + }; +} +/** + * Notify an optional inspector without adding a public Motion API. + * + * The record is a raw firehose: the live animation handle, the concrete + * animation's internal options object untouched (timing fields in + * internal milliseconds, name/keyframes/element/motionValue still + * attached), a timestamp and the raw frameloop state at notify time. + * All interpretation belongs to the consumer behind + * globalThis.__MOTION_INSPECT__. + */ +function notifyAnimationStart(animation, options, transition) { + const notify = globalThis.__MOTION_INSPECT__; + if (!notify) + return; + try { + notify({ + ...baseRecord("animation-start", animation), + options: transition ? { ...options, ...transition } : options, + }); + } + catch { } +} +/** + * Layout animations drive a projection node's progress rather than a + * property, so the record forwards the live node itself: it carries the + * DOM instance, the layout options (layoutId) and the progress handle. + * Fired inside the frame.update that starts the animation, so nodes + * animating in the same layout commit share frameTimestamp. + */ +function notifyLayoutAnimationStart(animation, node) { + const notify = globalThis.__MOTION_INSPECT__; + if (!notify) + return; + try { + notify({ + ...baseRecord("layout-animation-start", animation), + node, + }); + } + catch { } +} + +export { notifyAnimationStart, notifyLayoutAnimationStart }; +//# sourceMappingURL=notify-inspector.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.mjs new file mode 100644 index 0000000..5d06ecb --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.mjs @@ -0,0 +1,19 @@ +import { inertia } from '../generators/inertia.mjs'; +import { keyframes } from '../generators/keyframes.mjs'; +import { spring } from '../generators/spring.mjs'; + +const transitionTypeMap = { + decay: inertia, + inertia, + tween: keyframes, + keyframes: keyframes, + spring, +}; +function replaceTransitionType(transition) { + if (typeof transition.type === "string") { + transition.type = transitionTypeMap[transition.type]; + } +} + +export { replaceTransitionType }; +//# sourceMappingURL=replace-transition-type.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/resolve-start-time.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/resolve-start-time.mjs new file mode 100644 index 0000000..7623aec --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/resolve-start-time.mjs @@ -0,0 +1,17 @@ +import { MotionGlobalConfig } from 'motion-utils'; + +/** + * If an animation's keyframes resolve, or its first frame renders, more than + * this long after its start time, it starts from then instead. While we prefer + * to "start" an animation as soon as it's triggered, this avoids a visual jump + * into it after main thread work. + * + * Manual timing steps frames by however long it likes, so never lags. + */ +const MAX_START_DELAY = 40; +const resolveStartTime = (startTime, now) => now - startTime > MAX_START_DELAY && !MotionGlobalConfig.useManualTiming + ? now + : startTime; + +export { resolveStartTime }; +//# sourceMappingURL=resolve-start-time.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.mjs new file mode 100644 index 0000000..c49df0b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.mjs @@ -0,0 +1,15 @@ +/** + * If `transition` has `inherit: true`, shallow-merge it with + * `parentTransition` (child keys win) and strip the `inherit` key. + * Otherwise return `transition` unchanged. + */ +function resolveTransition(transition, parentTransition) { + if (transition?.inherit && parentTransition) { + const { inherit: _, ...rest } = transition; + return { ...parentTransition, ...rest }; + } + return transition; +} + +export { resolveTransition }; +//# sourceMappingURL=resolve-transition.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs new file mode 100644 index 0000000..3b9c686 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs @@ -0,0 +1,4 @@ +const cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`; + +export { cubicBezierAsString }; +//# sourceMappingURL=cubic-bezier.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs new file mode 100644 index 0000000..73ec416 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs @@ -0,0 +1,15 @@ +import { isBezierDefinition } from 'motion-utils'; +import { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs'; +import { supportedWaapiEasing } from './supported.mjs'; + +function isWaapiSupportedEasing(easing) { + return Boolean((typeof easing === "function" && supportsLinearEasing()) || + !easing || + (typeof easing === "string" && + (easing in supportedWaapiEasing || supportsLinearEasing())) || + isBezierDefinition(easing) || + (Array.isArray(easing) && easing.every(isWaapiSupportedEasing))); +} + +export { isWaapiSupportedEasing }; +//# sourceMappingURL=is-supported.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs new file mode 100644 index 0000000..4928688 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs @@ -0,0 +1,29 @@ +import { isBezierDefinition } from 'motion-utils'; +import { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs'; +import { generateLinearEasing } from '../utils/linear.mjs'; +import { cubicBezierAsString } from './cubic-bezier.mjs'; +import { supportedWaapiEasing } from './supported.mjs'; + +function mapEasingToNativeEasing(easing, duration) { + if (!easing) { + return undefined; + } + else if (typeof easing === "function") { + return supportsLinearEasing() + ? generateLinearEasing(easing, duration) + : "ease-out"; + } + else if (isBezierDefinition(easing)) { + return cubicBezierAsString(easing); + } + else if (Array.isArray(easing)) { + return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || + supportedWaapiEasing.easeOut); + } + else { + return supportedWaapiEasing[easing]; + } +} + +export { mapEasingToNativeEasing }; +//# sourceMappingURL=map-easing.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.mjs new file mode 100644 index 0000000..ae315b0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.mjs @@ -0,0 +1,16 @@ +import { cubicBezierAsString } from './cubic-bezier.mjs'; + +const supportedWaapiEasing = { + linear: "linear", + ease: "ease", + easeIn: "ease-in", + easeOut: "ease-out", + easeInOut: "ease-in-out", + circIn: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]), + circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]), + backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]), + backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]), +}; + +export { supportedWaapiEasing }; +//# sourceMappingURL=supported.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs new file mode 100644 index 0000000..8f46e1b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs @@ -0,0 +1,29 @@ +import { mapEasingToNativeEasing } from './easing/map-easing.mjs'; + +function startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = "loop", ease = "easeOut", times, } = {}, pseudoElement = undefined) { + const keyframeOptions = { + [valueName]: keyframes, + }; + if (times) + keyframeOptions.offset = times; + const easing = mapEasingToNativeEasing(ease, duration); + /** + * If this is an easing array, apply to keyframes, not animation as a whole + */ + if (Array.isArray(easing)) + keyframeOptions.easing = easing; + const options = { + delay, + duration, + easing: !Array.isArray(easing) ? easing : "linear", + fill: "both", + iterations: repeat + 1, + direction: repeatType === "reverse" ? "alternate" : "normal", + }; + if (pseudoElement) + options.pseudoElement = pseudoElement; + return element.animate(keyframeOptions, options); +} + +export { startWaapiAnimation }; +//# sourceMappingURL=start-waapi-animation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/supports/partial-keyframes.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/supports/partial-keyframes.mjs new file mode 100644 index 0000000..8250ebb --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/supports/partial-keyframes.mjs @@ -0,0 +1,14 @@ +import { memo } from 'motion-utils'; + +const supportsPartialKeyframes = /*@__PURE__*/ memo(() => { + try { + document.createElement("div").animate({ opacity: [1] }); + } + catch (e) { + return false; + } + return true; +}); + +export { supportsPartialKeyframes }; +//# sourceMappingURL=partial-keyframes.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs new file mode 100644 index 0000000..3ea3cee --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs @@ -0,0 +1,62 @@ +import { memo } from 'motion-utils'; +import { acceleratedValues } from '../utils/accelerated-values.mjs'; +import { hasBrowserOnlyColors } from '../utils/is-browser-color.mjs'; + +const colorProperties = new Set([ + "color", + "backgroundColor", + "outlineColor", + "fill", + "stroke", + "borderColor", + "borderTopColor", + "borderRightColor", + "borderBottomColor", + "borderLeftColor", +]); +const supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, "animate")); +function supportsBrowserAnimation(options) { + const { motionValue, name, repeatDelay, repeatType, damping, type, keyframes, } = options; + /** + * Most values can't be accelerated at all, so check the name before + * looking at the element or its props. + */ + if (!name || + !(acceleratedValues.has(name) || colorProperties.has(name))) { + return false; + } + const subject = motionValue?.owner?.current; + /** + * We use instanceof checks instead of isHTMLElement()/isSVGElement() + * because we explicitly **don't** want elements in different timing + * contexts (i.e. popups) to be accelerated, as it's not possible to sync + * these animations properly with those driven from the main window + * frameloop. + */ + if (!(subject instanceof HTMLElement) && + !(subject instanceof SVGElement)) { + return false; + } + const { onUpdate, transformTemplate } = motionValue.owner.getProps(); + return (supportsWaapi() && + /** + * Force WAAPI for color properties with browser-only color formats + * (oklch, oklab, lab, lch, etc.) that the JS animation path can't parse. + */ + (acceleratedValues.has(name) || + (colorProperties.has(name) && + hasBrowserOnlyColors(keyframes))) && + (name !== "transform" || !transformTemplate) && + /** + * If we're outputting values to onUpdate then we can't use WAAPI as there's + * no way to read the value from WAAPI every frame. + */ + !onUpdate && + !repeatDelay && + repeatType !== "mirror" && + damping !== 0 && + type !== "inertia"); +} + +export { supportsBrowserAnimation, supportsWaapi }; +//# sourceMappingURL=waapi.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/transforms/TransformAnimation.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/transforms/TransformAnimation.mjs new file mode 100644 index 0000000..4b3a646 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/transforms/TransformAnimation.mjs @@ -0,0 +1,902 @@ +import { isBezierDefinition, millisecondsToSeconds, clamp, progress } from 'motion-utils'; +import { frame } from '../../../frameloop/frame.mjs'; +import { frameData } from '../../../frameloop/frame-data.mjs'; +import { time } from '../../../frameloop/sync-time.mjs'; +import { buildTransform, translateAlias } from '../../../render/html/utils/build-transform.mjs'; +import { transformPropOrder } from '../../../render/utils/keys-transform.mjs'; +import { mixNumber } from '../../../utils/mix/number.mjs'; +import { numberValueTypes } from '../../../value/types/maps/number.mjs'; +import { getValueAsType } from '../../../value/types/utils/get-as-type.mjs'; +import { frameloopDriver } from '../../drivers/frame.mjs'; +import { keyframes } from '../../generators/keyframes.mjs'; +import { defaultOffset } from '../../keyframes/offsets/default.mjs'; +import { JSAnimation, round } from '../../JSAnimation.mjs'; +import { sampleDelta } from '../../NativeAnimationExtended.mjs'; +import { cubicBezierAsString } from '../easing/cubic-bezier.mjs'; +import { supportedWaapiEasing } from '../easing/supported.mjs'; +import { supportsWaapi } from '../supports/waapi.mjs'; +import { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs'; +import { transformGroups } from './groups.mjs'; + +/** + * Sample at the interruption sampling rate, up to a cap for long + * animations. + */ +const maxSamples = 200; +/** + * How far values may stray from the WAAPI animation: as a fraction of + * each value's change when they share an easing, otherwise in px or deg, + * or for scale. + */ +const easingTolerance = 0.001; +const sampleTolerance = 0.1; +const scaleTolerance = 0.001; +/** + * If an outside write, or a seek the WAAPI animation can't follow, + * happens again within this window, the group is being driven every + * frame (scrubbing, drag), which is cheaper on the main thread than + * rebuilding the WAAPI animation every frame. + */ +const churnWindow = 100; +/** + * Named easings that are the same cubic-bezier in JS and CSS. + */ +const isNativeEasing = (ease) => /^(linear|ease(In|Out|InOut))$/.test(ease); +const byTime = (a, b) => a - b; +/** + * n + 1 evenly spaced timestamps, from one timestamp to another. + */ +const spread = (from, to, n) => { + const result = []; + for (let i = 0; i <= n; i++) + result.push(mixNumber(from, to, i / n)); + return result; +}; +const getOwner = (options) => options.motionValue.owner; +const getGroup = (element) => transformGroups.get(element); +const read = (owner, key) => owner.latestValues ? owner.latestValues[key] : owner.getValue(key)?.get(); +/** + * Whether this animation should join its element's transform group. + * Animations that can't be accelerated still join, so the group knows + * to stay on the main thread while they run. Browsers without linear() + * easing stay on the main thread. + */ +const canGroupTransform = ({ name, motionValue, }) => name && + transformPropOrder.includes(name) && + motionValue?.owner?.current instanceof HTMLElement && + supportsWaapi() && + supportsLinearEasing(); +function canAccelerateTransform(options) { + const owner = getOwner(options); + const { onUpdate, transformTemplate } = owner.getProps(); + return ( + /** + * A handoff from an optimised appear animation is already running + * on its own WAAPI animation. onUpdate needs every value, every + * frame. + */ + !options.isHandoff && + !onUpdate && + !options.hasOnUpdate && + /** + * transformTemplate could output anything. + */ + !transformTemplate && + options.type !== "inertia" && + /** + * A literal transform, or pathRotation, replaces or adds to the + * transform we'd build. styleEffect builds its own as "none". + */ + (read(owner, "transform") || "none") === "none" && + !read(owner, "pathRotation") && + /** + * Layout animations write transform every frame. + */ + !owner.projection?.isProjecting()); +} +class TransformAnimation extends JSAnimation { + constructor(options) { + const element = getOwner(options).current; + const { driver = frameloopDriver } = options; + let animation; + /** + * Before JSAnimation replaces the type with its generator. + */ + const canAccelerate = canAccelerateTransform(options); + /** + * The driver ticks on the main thread only once the group has + * moved there. Until then, starting or stopping tells the group to + * update its WAAPI animation. + */ + options.driver = (update) => { + const js = driver(update); + return { + js, + now: js.now, + start: (keepAlive = true) => { + const group = getGroup(element); + const isJS = !group || group.isJS; + /** + * keepAlive is false when seeking. Seeking the WAAPI + * animation is free, but if a seek needs a rebuild and + * keeps happening, the group moves to the main thread. + */ + isJS + ? js.start(keepAlive) + : group.schedule(false, !keepAlive); + }, + stop: () => { + js.stop(); + const group = getGroup(element); + group && !group.isFinishing && group.release(animation); + }, + }; + }; + super(options); + animation = this; + this.canAccelerate = canAccelerate; + /** + * stop is bound in JSAnimation, so wrap it rather than override. + * Before stopping, set the motion value to where the WAAPI + * animation is now, with velocity, for the next animation to + * start from. + */ + const { stop } = this; + this.stop = () => { + this.isAccelerated() && this.sync(); + stop(); + }; + } + get group() { + return getGroup(getOwner(this.options).current); + } + get js() { + return this.driver?.js; + } + get name() { + return this.options.name; + } + /** + * When this stops moving, or, if it repeats forever, when it starts + * repeating, and how long each repeat takes. Held (paused, or at + * speed 0) animations never stop moving. + */ + timing() { + const { startTime, speed, totalDuration } = this; + const { delay = 0, repeatType } = this.options; + return this.holdTime !== null + ? [Infinity, 0] + : totalDuration === Infinity + ? [ + startTime + delay / speed, + (this.resolvedDuration * (repeatType === "loop" ? 1 : 2)) / + speed || 1, + ] + : [startTime + (delay + totalDuration) / speed, 0]; + } + /** + * Whether this is running, or paused, on the compositor. + */ + isAccelerated() { + const { group, state } = this; + return (group?.tracks.has(this) && + !group.isJS && + this.canAccelerate && + (state === "running" || state === "paused")); + } + /** + * The value now, while this runs on the compositor and so doesn't + * set its motion value every frame. + */ + liveValue() { + return this.isAccelerated() ? this.sampleAt(time.now()) : undefined; + } + /** + * If this is a two-keyframe tween whose easing WAAPI runs exactly, + * when it starts and stops moving, and that easing. + */ + tween() { + const { keyframes: keyframes$1, type, ease, times, repeat, delay = 0 } = this.options; + const easing = isBezierDefinition(ease) + ? cubicBezierAsString(ease) + : isNativeEasing(ease) && supportedWaapiEasing[ease]; + if (easing && + !repeat && + !times && + keyframes$1.length === 2 && + type === keyframes && + this.holdTime === null) { + const start = this.startTime + delay / this.speed; + return [start, start + this.resolvedDuration / this.speed, easing]; + } + } + /** + * The timestamps between two timestamps where this reaches a + * keyframe or starts a repeat, where it can turn or jump. + */ + boundaries(from, to) { + const { startTime, speed, resolvedDuration, options } = this; + const { delay = 0, repeat = 0, repeatDelay = 0, repeatType, times, keyframes: keyframes$1, type, } = options; + const offsets = (type || keyframes) === keyframes + ? times || defaultOffset(keyframes$1) + : [0, 1]; + const start = startTime + delay / speed; + const result = []; + if (this.holdTime !== null || !(resolvedDuration > 0)) + return result; + for (let i = Math.max(0, Math.floor(((from - start) * speed) / resolvedDuration)); i <= repeat; i++) { + const iterationStart = start + (i * resolvedDuration) / speed; + if (iterationStart > to) + break; + for (const offset of offsets) { + const t = iterationStart + + ((i % 2 && repeatType && repeatType !== "loop" + ? 1 - offset + : offset) * + (resolvedDuration - repeatDelay)) / + speed; + t > from && t < to && result.push(t); + } + } + return result; + } + /** + * The value at a timestamp, as a number. + */ + numberAt(timestamp) { + return parseFloat(this.sampleAt(timestamp, true)); + } + /** + * Write the current value, and velocity, to the motion value. + */ + sync() { + const now = time.now(); + this.options.motionValue.setWithVelocity(this.sampleAt(now - sampleDelta, true), this.sampleAt(now, true), sampleDelta); + } + play() { + /** + * A stopped animation (one that was interrupted) can't play again, + * so it mustn't join the group. + */ + if (this.isStopped) + return; + (this.group || createGroup(getOwner(this.options))).tracks.add(this); + super.play(); + } + pause() { + super.pause(); + if (this.isAccelerated()) { + this.sync(); + this.group.schedule(false); + } + } + /** + * JSAnimation finishes on its next tick, which only happens on the + * main thread, so finish now. + */ + complete() { + super.complete(); + const { group } = this; + group && !group.isJS && this.canAccelerate && this.tick(time.now()); + } + /** + * Without a tick to rebase it, a held time still includes the delay, + * so take it off here, as a JS animation does on its next tick. + */ + get time() { + if (this.isAccelerated()) { + return millisecondsToSeconds(clamp(0, this.totalDuration, this.at(time.now()) - (this.options.delay || 0))); + } + return super.time; + } + /** + * A JS animation sets its motion value from a seek on its next tick. + * This doesn't tick, so set it now, rather than leave it to be set + * when this next stops. + */ + set time(newTime) { + super.time = newTime; + this.isAccelerated() && this.sync(); + } + /** + * Scroll timelines set time every frame, so run these on the main + * thread. + */ + attachTimeline(timeline) { + this.canAccelerate = false; + this.group?.demote(true); + return super.attachTimeline(timeline); + } +} +function createGroup(owner) { + const element = owner.current; + const tracks = new Set(); + const byKey = new Map(); + /** + * Transforms that aren't animating, as built into the WAAPI animation. + */ + let statics = {}; + /** + * The transforms in the WAAPI animation, in order. + */ + let keys = []; + let built = new Map(); + let segments = []; + let needsBuild = false; + let isScheduled = false; + let isEnded = false; + let hasChurned = false; + let lastChurn = -Infinity; + const has = (key) => { + for (const track of tracks) + if (track.name === key) + return true; + }; + /** + * The transform values at a timestamp or, without one, from the + * motion values. Animations that don't repeat forever are sampled no + * earlier than settled, so a loop that starts from an earlier cycle + * boundary holds them at their end. + */ + const valuesAt = (timestamp, settled) => { + const values = {}; + for (const key of timestamp === undefined ? transformPropOrder : keys) { + const track = byKey.get(key); + const value = timestamp === undefined + ? read(owner, key) + : track + ? track.sampleAt(settled > timestamp && !track.timing()[1] + ? settled + : timestamp) + : statics[key]; + if (value !== undefined) + values[key] = value; + } + return values; + }; + /** + * Build the transform at a timestamp. Unlike buildTransform, every key + * is written, even at its default, so each keyframe has the same list + * of functions and the browser interpolates them one by one. + */ + const compose = (timestamp, settled) => { + let transform = ""; + const values = valuesAt(timestamp, settled); + for (const key in values) { + transform += + (translateAlias[key] || key) + + "(" + + getValueAsType(values[key], numberValueTypes[key]) + + ") "; + } + return transform || "none"; + }; + /** + * Write the transform as an inline style, as the renderer would. + */ + const commit = (values = valuesAt()) => { + element.style.transform = buildTransform(values, {}); + }; + /** + * Cancel the WAAPI animations, by default first committing the + * transform. The renderer writes its own version on its next render. + */ + const stop = (shouldCommit = true) => { + shouldCommit && commit(); + segments.forEach(({ animation }) => animation.cancel()); + segments = []; + }; + const add = (animation, offset, end = Infinity) => { + const segment = { animation, offset, end }; + animation.startTime = time.now() + offset; + /** + * Animations finish when the WAAPI animation reaches their end. + * Once a loop has taken over, the finished animation isn't needed. + */ + if (end < Infinity) { + animation.onfinish = () => { + segment.isDone = true; + if (segments.some((s) => s.end === Infinity)) { + animation.cancel(); + segments = segments.filter((s) => s !== segment); + } + group.schedule(false); + }; + } + /** + * Something else cancelled it, so carry on on the main thread. + */ + animation.oncancel = () => segments.includes(segment) && group.demote(); + segments.push(segment); + }; + /** + * Where a value jumps between two timestamps, as when a repeat starts + * again: the timestamps either side of the jump, or none if it moves + * there continuously. + */ + const jumpAt = (value, a, b) => { + const change = (x, y) => Math.abs(value(y) - value(x)); + const size = change(a, b); + while (b - a > 0.01) { + const mid = (a + b) / 2; + change(a, mid) > change(mid, b) ? (b = mid) : (a = mid); + } + return change(a, b) > size / 2 ? [a, b] : []; + }; + /** + * If every moving animation follows the same eased progress between + * two timestamps, the easing that describes it. + */ + const getEasing = (moving, from, to, bounds) => { + const samples = Math.min(maxSamples, Math.max(2, Math.ceil((to - from) / sampleDelta))); + /** + * Too many keyframes or repeats to follow with this many samples. + */ + if (bounds.length * 4 > samples) + return; + const at = spread(from, to, samples).concat(bounds).sort(byTime); + const position = (t) => progress(from, to, t); + let shared; + let progressAt; + for (const track of moving) { + const values = at.map((t) => track.numberAt(t)); + const [first] = values; + const changes = values.map((value) => value - first); + const end = changes[changes.length - 1]; + /** + * A value that ends only a tiny way from where it started, as + * a round trip does if it's built just after it starts, or + * from a float residue, ends where it started. Dividing by + * that tiny range would stretch the easing to values the + * compositor can't render. + */ + const range = changes.some((change) => Math.abs(change) * easingTolerance > Math.abs(end)) + ? 0 + : end; + const progress = changes.map((change) => range ? change / range : change); + /** + * A value that doesn't change, like one still in its delay, + * fits any easing. One that changes but ends where it started + * fits none. + */ + if (!range) { + if (progress.some((p) => !(Math.abs(p) <= easingTolerance))) { + return; + } + } + else if (!shared) { + shared = progress; + progressAt = (t) => (track.numberAt(t) - first) / range; + } + else if (progress.some((p, i) => !(Math.abs(p - shared[i]) <= easingTolerance))) { + return; + } + } + if (!shared || + shared.every((p, i) => Math.abs(p - position(at[i])) <= easingTolerance)) { + return "linear"; + } + /** + * A repeat that starts again jumps back, which takes two points at + * the same position. + */ + const points = []; + const point = (t, p = progressAt(t)) => points.push(round(p) + " " + round(position(t) * 100) + "%"); + shared.forEach((p, i) => { + i && + Math.abs(p - shared[i - 1]) > 0.2 && + jumpAt(progressAt, at[i - 1], at[i]).forEach((t) => point(t)); + point(at[i], p); + }); + return "linear(" + points + ")"; + }; + /** + * Sample timestamps between two timestamps, closer together where the + * moving animations curve. + */ + const sample = (moving, from, to, bounds) => { + const times = [from]; + /** + * Values that aren't numbers, like calc(), are left to the + * browser to interpolate. + */ + const isStraight = (a, b) => moving.every((track) => !(Math.abs(track.numberAt((a + b) / 2) - + (track.numberAt(a) + track.numberAt(b)) / 2) > + (track.name.startsWith("scale") + ? scaleTolerance + : sampleTolerance))); + const split = (a, b, depth) => { + if (b - a < 1 || isStraight(a, b)) { + times.push(b); + } + else if (depth < 4) { + split(a, (a + b) / 2, depth + 1); + split((a + b) / 2, b, depth + 1); + } + else { + /** + * Keyframes either side of a jump, like a repeat starting + * again, so it doesn't play as a quick sweep. + */ + for (const track of moving) { + times.push(...jumpAt((t) => track.numberAt(t), a, b)); + } + times.push(b); + } + }; + /** + * Split at least every 100ms, and at every keyframe and repeat, + * either side of where a value can jump. + */ + const ends = spread(from, to, Math.ceil((to - from) / 100)); + for (const t of bounds) + ends.push(t, Math.min(t + 0.01, to)); + let start = from; + for (const end of ends.sort(byTime)) { + end > start && split(start, end, 0); + start = end; + } + return times.sort(byTime); + }; + /** + * If every moving animation is the same tween, started together, as + * happens for the values of one animate() call or transition, when + * they move and their native easing. + */ + const getTween = (moving) => { + let shared; + for (const track of moving) { + const tween = track.tween(); + if (!tween || + shared?.some((v, i) => i < 2 + ? Math.abs(tween[i] - v) > 1 + : tween[i] !== v)) { + return; + } + shared = tween; + } + return shared; + }; + /** + * A WAAPI animation of the composed transform between two timestamps. + */ + const run = (moving, from, to, options = { fill: "both" }, settled, nativeEasing) => { + const bounds = moving.flatMap((track) => track.boundaries(from, to)); + const easing = nativeEasing || getEasing(moving, from, to, bounds); + const times = easing ? [from, to] : sample(moving, from, to, bounds); + const transform = times.map((t) => compose(t, settled)); + let keyframes = { transform }; + if (!easing) { + keyframes.offset = times.map((t) => progress(from, to, t)); + } + /** + * If nothing moves, don't hold a transform, which, even at its + * default, would make the element a containing block. The empty + * animation still finishes the animations. + */ + if (transform.every((t) => t === transform[0])) { + commit(valuesAt(from, settled)); + keyframes = null; + } + return element.animate(keyframes, { + ...options, + duration: to - from, + easing: easing || "linear", + }); + }; + /** + * Replace the WAAPI animations with ones built from now. Returns + * undefined if the animations can't be composed. + */ + const animate = (now) => { + /** + * The finite part runs until the last finite animation (or the + * last delay) ends. Infinitely repeating animations then continue + * as one looping WAAPI animation, which needs them to share a + * cycle. + */ + let end = now; + let cycle = 0; + let cycleStart = 0; + const moving = []; + const looping = []; + const ends = new Set(); + byKey.clear(); + built = new Map(); + for (const track of tracks) { + byKey.set(track.name, track); + const [trackEnd, trackCycle] = track.timing(); + const isHeld = trackEnd === Infinity; + built.set(track, [track.at(now), track.speed, isHeld]); + /** + * Held animations don't move, so keep their motion values up + * to date, as a JSAnimation would on a seek. + */ + if (isHeld) { + track.sync(); + continue; + } + if (track.speed < 0) + return; + if (trackCycle) { + if (cycle) { + const phase = (trackEnd - cycleStart) / trackCycle; + if (Math.abs(trackCycle - cycle) > 1 || + Math.abs(phase - Math.round(phase)) * cycle > 1) { + return; + } + } + else { + cycle = trackCycle; + cycleStart = trackEnd; + } + looping.push(track); + } + else { + ends.add(trackEnd); + } + moving.push(track); + end = Math.max(end, trackEnd); + } + statics = {}; + /** + * Transforms that aren't animating are left out at their default. + */ + keys = transformPropOrder.filter((key) => { + if (byKey.has(key)) + return true; + const value = (statics[key] = read(owner, key)); + return (value !== undefined && + parseFloat(value) !== + (key.startsWith("scale") ? 1 : 0)); + }); + stop(false); + /** + * Values that share one tween are one WAAPI animation of it, with + * two keyframes and its own easing, from when they started. + */ + const tween = !cycle && getTween(moving); + try { + if (tween && tween[1] > now) { + const [from, to, easing] = tween; + add(run(moving, from, to, undefined, undefined, easing), from - now, to - from); + } + else if (end > now) { + add(run(moving, now, end), 0, end - now); + /** + * Animations that end sooner finish on the events of + * empty animations that end with them. + */ + ends.forEach((trackEnd) => trackEnd < end - 1 && + add(element.animate(null, { + duration: trackEnd - now, + }), 0, trackEnd - now)); + } + if (cycle) { + /** + * Build one cycle from a cycle boundary, so it repeats + * seamlessly, and start it part way through. + */ + const from = cycleStart + Math.floor((end - cycleStart) / cycle) * cycle; + add(run(looping, from, from + cycle, { + iterations: Infinity, + iterationStart: (end - from) / cycle, + /** + * It must not fill backwards over the finite part + * that runs before it. + */ + fill: "forwards", + }, end), end - now); + } + } + catch { + return; + } + /** + * Everything is held, so hold it with an inline style instead. + */ + segments.length || stop(); + return true; + }; + /** + * If every animation has been paused, played, seeked or sped up + * together since the WAAPI animation was built, do the same to it. + * Returns false if it needs rebuilding instead. + */ + const retime = (now) => { + let elapsed; + let rate = 0; + for (const track of tracks) { + const state = built.get(track); + if (!state) + return false; + const [builtTime, builtSpeed, wasHeld] = state; + const trackTime = track.at(now); + const isHeld = track.timing()[0] === Infinity; + if (wasHeld) { + if (isHeld && trackTime === builtTime) + continue; + return false; + } + const trackElapsed = (trackTime - builtTime) / builtSpeed; + const trackRate = isHeld ? 0 : track.speed / builtSpeed; + if (elapsed === undefined) { + elapsed = trackElapsed; + rate = trackRate; + } + else if (Math.abs(trackElapsed - elapsed) > 1 || + trackRate !== rate) { + return false; + } + } + if (elapsed === undefined) + return true; + if (!segments.length) + return false; + for (const { offset, end, isDone } of segments) { + const local = elapsed - offset; + if (end < Infinity && + (isDone ? local < end - 1 : local < 0 || local >= end)) { + return false; + } + } + for (const { animation, offset, isDone } of segments) { + if (isDone) + continue; + const local = elapsed - offset; + if (rate) { + animation.playbackRate = rate; + animation.startTime = now - local / rate; + } + else { + animation.pause(); + animation.currentTime = local; + } + } + return true; + }; + /** + * If no animations are left, write where they got to and cancel the + * WAAPI animations. Returns whether the group ended. + */ + const end = () => { + if (tracks.size) + return false; + isEnded = true; + transformGroups.delete(element); + group.isJS || stop(); + return true; + }; + const build = () => { + const now = time.now(); + /** + * Finish the animations that have reached their end, which the + * WAAPI animation has already rendered. + */ + if (!group.isJS) { + group.isFinishing = true; + tracks.forEach((track) => { + const [trackEnd, trackCycle] = track.timing(); + if (track.state === "running" && + track.speed > 0 && + !trackCycle && + trackEnd <= now + 1) { + track.complete(); + /** + * From now it's checked for outside writes like any + * other static transform. If the WAAPI animation never + * rendered it (it was instant), rebuild with its value. + */ + statics[track.name] = read(owner, track.name); + built.has(track) || (needsBuild = true); + } + }); + group.isFinishing = false; + } + isScheduled = false; + if (isEnded) + return; + tracks.forEach(({ state }, track) => { + if (state === "idle" || state === "finished") + tracks.delete(track); + }); + if (end()) + return; + for (const track of tracks) { + if (!track.canAccelerate) + return group.demote(true); + } + /** + * Everything that kept the group on the main thread has finished, + * so move the remaining animations back to the compositor. + */ + if (group.isJS) { + group.isJS = false; + needsBuild = true; + tracks.forEach((track) => track.js?.stop()); + } + const shouldBuild = needsBuild; + const churned = hasChurned; + needsBuild = hasChurned = false; + if (shouldBuild || !retime(now)) { + if (churned) { + if (now - lastChurn < churnWindow) + return group.demote(); + lastChurn = now; + } + if (!animate(now)) + return group.demote(); + } + }; + const group = { + tracks, + isJS: false, + isFinishing: false, + schedule(build_, isChurn) { + if (isEnded) + return; + needsBuild || (needsBuild = build_); + hasChurned || (hasChurned = !!isChurn); + /** + * Build in this frame's render step, so it's in place before + * anything reads the DOM in postRender, or straight after the + * current task outside of a frame. + */ + if (!isScheduled) { + isScheduled = true; + frameData.isProcessing + ? frame.render(build, false, true) + : queueMicrotask(build); + } + }, + /** + * End the group now, rather than when it next builds, so the + * element's transform is the caller's again as soon as its last + * animation is stopped. + */ + release(track) { + /** + * Only drop the stopped animation. Others can be idle because + * they're part way through play(), and are about to run. + */ + const { state } = track; + if (state === "idle" || state === "finished") + tracks.delete(track); + end() || group.schedule(true); + }, + /** + * An outside write. Rebuild once, but if it keeps happening, move + * to the main thread. + */ + check() { + if (group.isJS) + return; + for (const key in statics) { + if (read(owner, key) !== statics[key] && !has(key)) { + return group.schedule(true, true); + } + } + }, + demote(canReturn) { + if (group.isJS || isEnded) + return; + /** + * Unless only another animation is holding the group on the + * main thread, these animations stay there until they end. + */ + tracks.forEach((track) => { + track.isAccelerated() && track.sync(); + canReturn || (track.canAccelerate = false); + }); + group.isJS = true; + built = new Map(); + stop(); + tracks.forEach((track) => track.state === "running" && track.js?.start()); + }, + }; + transformGroups.set(element, group); + return group; +} + +export { TransformAnimation, canGroupTransform }; +//# sourceMappingURL=TransformAnimation.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/transforms/groups.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/transforms/groups.mjs new file mode 100644 index 0000000..1f41545 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/transforms/groups.mjs @@ -0,0 +1,4 @@ +const transformGroups = new WeakMap(); + +export { transformGroups }; +//# sourceMappingURL=groups.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs new file mode 100644 index 0000000..37c36f1 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs @@ -0,0 +1,13 @@ +/** + * A list of values that can be hardware-accelerated. + */ +const acceleratedValues = new Set([ + "opacity", + "clipPath", + "filter", + "transform", + "backgroundColor", +]); + +export { acceleratedValues }; +//# sourceMappingURL=accelerated-values.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs new file mode 100644 index 0000000..6a828d7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs @@ -0,0 +1,16 @@ +import { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs'; +import { isGenerator } from '../../generators/utils/is-generator.mjs'; + +function applyGeneratorOptions({ type, ...options }) { + if (isGenerator(type) && supportsLinearEasing()) { + return type.applyToOptions(options); + } + else { + options.duration ?? (options.duration = 300); + options.ease ?? (options.ease = "easeOut"); + } + return options; +} + +export { applyGeneratorOptions }; +//# sourceMappingURL=apply-generator.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.mjs new file mode 100644 index 0000000..fa9eca8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.mjs @@ -0,0 +1,13 @@ +const browserColorFunctions = /^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/; +function hasBrowserOnlyColors(keyframes) { + for (let i = 0; i < keyframes.length; i++) { + if (typeof keyframes[i] === "string" && + browserColorFunctions.test(keyframes[i])) { + return true; + } + } + return false; +} + +export { hasBrowserOnlyColors }; +//# sourceMappingURL=is-browser-color.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs new file mode 100644 index 0000000..7cb72e2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs @@ -0,0 +1,13 @@ +const generateLinearEasing = (easing, duration, // as milliseconds +resolution = 10 // as milliseconds +) => { + let points = ""; + const numPoints = Math.max(Math.round(duration / resolution), 2); + for (let i = 0; i < numPoints; i++) { + points += Math.round(easing(i / (numPoints - 1)) * 10000) / 10000 + ", "; + } + return `linear(${points.substring(0, points.length - 2)})`; +}; + +export { generateLinearEasing }; +//# sourceMappingURL=linear.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/px-values.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/px-values.mjs new file mode 100644 index 0000000..f4282b4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/px-values.mjs @@ -0,0 +1,59 @@ +import { cornerRadiusProps } from '../../../utils/border-radius.mjs'; + +const pxValues = new Set([ + // Border props + "borderWidth", + "borderTopWidth", + "borderRightWidth", + "borderBottomWidth", + "borderLeftWidth", + "borderRadius", + ...cornerRadiusProps, + // Positioning props + "width", + "maxWidth", + "height", + "maxHeight", + "top", + "right", + "bottom", + "left", + "inset", + "insetBlock", + "insetBlockStart", + "insetBlockEnd", + "insetInline", + "insetInlineStart", + "insetInlineEnd", + // Spacing props + "padding", + "paddingTop", + "paddingRight", + "paddingBottom", + "paddingLeft", + "paddingBlock", + "paddingBlockStart", + "paddingBlockEnd", + "paddingInline", + "paddingInlineStart", + "paddingInlineEnd", + "margin", + "marginTop", + "marginRight", + "marginBottom", + "marginLeft", + "marginBlock", + "marginBlockStart", + "marginBlockEnd", + "marginInline", + "marginInlineStart", + "marginInlineEnd", + // Typography + "fontSize", + // Misc + "backgroundPositionX", + "backgroundPositionY", +]); + +export { pxValues }; +//# sourceMappingURL=px-values.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs new file mode 100644 index 0000000..b641587 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs @@ -0,0 +1,19 @@ +import { circInOut, backInOut, anticipate } from 'motion-utils'; + +const unsupportedEasingFunctions = { + anticipate, + backInOut, + circInOut, +}; +function isUnsupportedEase(key) { + return key in unsupportedEasingFunctions; +} +function replaceStringEasing(transition) { + if (typeof transition.ease === "string" && + isUnsupportedEase(transition.ease)) { + transition.ease = unsupportedEasingFunctions[transition.ease]; + } +} + +export { replaceStringEasing }; +//# sourceMappingURL=unsupported-easing.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/MotionValueState.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/MotionValueState.mjs new file mode 100644 index 0000000..1bf4b27 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/MotionValueState.mjs @@ -0,0 +1,112 @@ +import { frame } from '../frameloop/frame.mjs'; + +class MotionValueState { + /** + * @param step - The frameloop step renders are scheduled in. Defaults + * to `frame.render`. Effects that feed a render loop running in + * `frame.render` (GPU scenes) should write in `frame.preRender`. + */ + constructor(step = frame.render) { + this.step = step; + this.values = new Map(); + /** + * Renders scheduled for the next flush, usually one or two (values + * bound to the same computed render, e.g. `x` and `y` to `transform`, + * share an entry). Tracked with a count rather than truncating the + * array so no backing store is reallocated every frame. Kept per + * state so pending writes can be flushed synchronously before the + * subject is measured. + */ + this.pending = []; + this.numPending = 0; + /** + * Run the pending renders. Resetting the count first means a render + * scheduled while flushing lands in the next frame, as with the + * frameloop itself. + */ + this.flush = () => { + const { pending, numPending } = this; + this.numPending = 0; + for (let i = 0; i < numPending; i++) + pending[i](); + }; + } + /** + * @param render - Writes the value to the subject. Renders read the + * motion value directly rather than a cached copy, so there is one + * place a value lives. + * @param computed - A value already in this state (e.g. `transform`) + * whose render should run whenever `value` changes. + */ + set(name, value, render, computed) { + this.values.get(name)?.onRemove(); + if (computed) { + for (const entry of this.values.values()) { + if (entry.value === computed) + render = entry.render; + } + } + const onChange = () => render && this.schedule(render); + /** + * Values created ahead of a DOM read start out undefined and + * have nothing to render until they're set. + */ + value.get() !== undefined && onChange(); + const cancelOnChange = value.on("change", onChange); + const onRemove = () => { + cancelOnChange(); + render && !computed && this.cancel(render); + /** + * A later set() of the same name has already removed this + * entry, so leave the one that replaced it. + */ + this.values.get(name)?.onRemove === onRemove && + this.values.delete(name); + }; + this.values.set(name, { + value, + render: computed ? undefined : render, + onRemove, + }); + return onRemove; + } + get(name) { + return this.values.get(name)?.value; + } + /** + * Detach every value from this state and return them, so another + * renderer can take them over. The state stays cached by its effect, + * so the bound transforms are reset too rather than leaking into + * values bound later. + */ + release() { + const values = new Map(); + this.values.forEach((entry, name) => { + values.set(name, entry.value); + entry.onRemove(); + }); + this.transformKeys = this.transformValues = undefined; + return values; + } + schedule(render) { + const { pending, numPending } = this; + for (let i = 0; i < numPending; i++) { + if (pending[i] === render) + return; + } + numPending || this.step(this.flush); + pending[this.numPending++] = render; + } + cancel(render) { + const { pending } = this; + for (let i = 0; i < this.numPending; i++) { + if (pending[i] === render) { + pending[i] = pending[--this.numPending]; + return; + } + } + } +} + +export { MotionValueState }; +//# sourceMappingURL=MotionValueState.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/attr/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/attr/index.mjs new file mode 100644 index 0000000..c325be2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/attr/index.mjs @@ -0,0 +1,48 @@ +import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs'; +import { numberValueTypes } from '../../value/types/maps/number.mjs'; +import { getValueAsType } from '../../value/types/utils/get-as-type.mjs'; +import { createSelectorEffect } from '../utils/create-dom-effect.mjs'; +import { createEffect } from '../utils/create-effect.mjs'; + +function canSetAsProperty(element, name) { + if (!(name in element)) + return false; + const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(element), name) || + Object.getOwnPropertyDescriptor(element, name); + // Check if it has a setter + return descriptor && typeof descriptor.set === "function"; +} +/** + * `name` is the attribute written when it differs from the key the value + * is stored under, e.g. `attrX` -> `x`. Numbers take the attribute's + * default unit (`x: 100` -> `"100px"`), as they do when key and name match. + */ +const addAttrValue = (element, state, key, value, name = key) => { + const isProp = canSetAsProperty(element, name); + if (!isProp && (name.startsWith("data") || name.startsWith("aria"))) { + name = camelToDash(name); + } + const type = numberValueTypes[key] || numberValueTypes[name]; + /** + * Set attribute directly via property if available + */ + const render = isProp + ? () => { + element[name] = getValueAsType(value.get(), numberValueTypes[key]); + } + : () => { + const v = getValueAsType(value.get(), type); + if (v === null || v === undefined) { + element.removeAttribute(name); + } + else { + element.setAttribute(name, String(v)); + } + }; + return state.set(key, value, render); +}; +const attrEffect = /*@__PURE__*/ createSelectorEffect( +/*@__PURE__*/ createEffect(addAttrValue)); + +export { addAttrValue, attrEffect }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/prop/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/prop/index.mjs new file mode 100644 index 0000000..4e988b6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/prop/index.mjs @@ -0,0 +1,23 @@ +import { isObject } from 'motion-utils'; +import { createEffect } from '../utils/create-effect.mjs'; + +/** + * Writes motion values to the properties of any object. This is + * animate()'s fallback for subjects no registered effect claims. + */ +const propEffect = /*@__PURE__*/ createEffect((subject, state, key, value) => { + return state.set(key, value, () => { + subject[key] = value.get(); + }); +}, { + test: (subject) => isObject(subject), + read: (subject, key) => { + const value = subject[key]; + return typeof value === "string" || typeof value === "number" + ? value + : undefined; + }, +}); + +export { propEffect }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/style/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/style/index.mjs new file mode 100644 index 0000000..64bf75d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/style/index.mjs @@ -0,0 +1,99 @@ +import { transformGroups } from '../../animation/waapi/transforms/groups.mjs'; +import { isCSSVar } from '../../render/dom/is-css-var.mjs'; +import { readTransformValue } from '../../render/dom/parse-transform.mjs'; +import { transformProps, transformPropOrder } from '../../render/utils/keys-transform.mjs'; +import { isHTMLElement } from '../../utils/is-html-element.mjs'; +import { isSVGElement } from '../../utils/is-svg-element.mjs'; +import { MotionValue } from '../../value/index.mjs'; +import { numberValueTypes } from '../../value/types/maps/number.mjs'; +import { getValueAsType } from '../../value/types/utils/get-as-type.mjs'; +import { createSelectorEffect } from '../utils/create-dom-effect.mjs'; +import { createEffect } from '../utils/create-effect.mjs'; +import { buildTransform } from './transform.mjs'; + +const originProps = new Set(["originX", "originY", "originZ"]); +/** + * A bound value in its default unit, e.g. `originX: 50` -> `"50%"`. + */ +const styleValue = (state, key) => getValueAsType(state.get(key)?.get(), numberValueTypes[key]); +const addStyleValue = (element, state, key, value) => { + let render = undefined; + let computed = undefined; + if (transformProps.has(key)) { + if (key !== "pathRotation") { + const keys = (state.transformKeys ?? (state.transformKeys = [])); + (state.transformValues ?? (state.transformValues = {}))[key] = value; + if (!keys.includes(key)) { + keys.push(key); + keys.sort((a, b) => transformPropOrder.indexOf(a) - + transformPropOrder.indexOf(b)); + } + } + if (!state.get("transform")) { + // If this is an HTML element, we need to set the transform-box to fill-box + // to normalise the transform relative to the element's bounding box + if (!isHTMLElement(element) && !state.get("transformBox")) { + addStyleValue(element, state, "transformBox", new MotionValue("fill-box")); + } + state.set("transform", new MotionValue("none"), () => { + transformGroups.get(element)?.check(); + element.style.transform = buildTransform(state); + }); + } + computed = state.get("transform"); + } + else if (originProps.has(key)) { + if (!state.get("transformOrigin")) { + state.set("transformOrigin", new MotionValue(""), () => { + const originX = styleValue(state, "originX") ?? "50%"; + const originY = styleValue(state, "originY") ?? "50%"; + const originZ = styleValue(state, "originZ") ?? 0; + element.style.transformOrigin = `${originX} ${originY} ${originZ}`; + }); + } + computed = state.get("transformOrigin"); + } + else if (isCSSVar(key)) { + render = () => { + element.style.setProperty(key, value.getCurrent()); + }; + } + else { + render = () => { + element.style[key] = getValueAsType(value.getCurrent(), numberValueTypes[key]); + }; + } + return state.set(key, value, render, computed); +}; +const isStyleSubject = (subject) => isHTMLElement(subject) || isSVGElement(subject); +/** + * Reads the current value of a style from the element, as the initial + * keyframe when `animate()` targets an element via this effect. Transforms + * are parsed out of the computed matrix; everything else is the computed + * style. Units aren't converted to match the target keyframes. A style + * the browser can't report is 0, as a VisualElement reports it. + */ +const readStyleValue = (element, key) => { + if (transformProps.has(key)) { + return readTransformValue(element, key); + } + const computedStyle = getComputedStyle(element); + const value = isCSSVar(key) + ? computedStyle.getPropertyValue(key) + : computedStyle[key]; + return (typeof value === "string" && value.trim()) || 0; +}; +/** + * The per-element effect `animate()` binds through, so HTML values share + * state with a direct `styleEffect()` call. The exported `styleEffect` + * is this wrapped to also accept selectors. + */ +const styleSubjectEffect = /*@__PURE__*/ createEffect(addStyleValue, { + test: isStyleSubject, + read: readStyleValue, +}); +const styleEffect = +/*@__PURE__*/ createSelectorEffect(styleSubjectEffect); + +export { addStyleValue, originProps, readStyleValue, styleEffect, styleSubjectEffect }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/style/transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/style/transform.mjs new file mode 100644 index 0000000..f3195c5 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/style/transform.mjs @@ -0,0 +1,46 @@ +import { translateAlias } from '../../render/html/utils/build-transform.mjs'; +import { transformValueTypes } from '../../value/types/maps/transform.mjs'; +import { getValueAsType } from '../../value/types/utils/get-as-type.mjs'; + +/** + * Cache of `translateX(`-style openers so each render is a few string + * concatenations rather than a template per transform. + */ +const openers = {}; +function buildTransform(state) { + let transform = ""; + const { transformKeys: keys = [], transformValues: values = {} } = state; + /** + * Loop over the bound transforms in order, adding the ones that + * aren't at their default value to the transform string. + */ + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const value = values[key].getCurrent(); + if (value === undefined) + continue; + const parsed = typeof value === "number" ? value : parseFloat(value); + if (parsed !== (key.startsWith("scale") ? 1 : 0)) { + transform += + (transform && " ") + + (openers[key] || + (openers[key] = (translateAlias[key] || key) + "(")) + + getValueAsType(value, transformValueTypes[key]) + + ")"; + } + } + // See build-transform.ts: additive `rotate()` so user `rotate` isn't + // clobbered. Not a `transformPropOrder` slot. + const pathRotation = state.get("pathRotation")?.get(); + if (pathRotation) { + transform += + (transform && " ") + + "rotate(" + + getValueAsType(pathRotation, transformValueTypes.pathRotation) + + ")"; + } + return transform || "none"; +} + +export { buildTransform }; +//# sourceMappingURL=transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/svg/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/svg/index.mjs new file mode 100644 index 0000000..2c3e40e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/svg/index.mjs @@ -0,0 +1,91 @@ +import { isCSSVar } from '../../render/dom/is-css-var.mjs'; +import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs'; +import { cssStyleProperties } from '../../render/svg/utils/build-attrs.mjs'; +import { transformProps } from '../../render/utils/keys-transform.mjs'; +import { isSVGElement } from '../../utils/is-svg-element.mjs'; +import { MotionValue } from '../../value/index.mjs'; +import { numberValueTypes } from '../../value/types/maps/number.mjs'; +import { addAttrValue } from '../attr/index.mjs'; +import { originProps, addStyleValue, readStyleValue } from '../style/index.mjs'; +import { createSelectorEffect } from '../utils/create-dom-effect.mjs'; +import { createEffect } from '../utils/create-effect.mjs'; +import { frame } from '../../frameloop/frame.mjs'; + +function addSVGPathValue(element, state, key, value) { + frame.render(() => element.setAttribute("pathLength", "1")); + if (key === "pathOffset") { + return state.set(key, value, () => { + // Use unitless value to avoid Safari zoom bug + const offset = value.get(); + element.setAttribute("stroke-dashoffset", `${-offset}`); + }); + } + else { + if (!state.get("stroke-dasharray")) { + state.set("stroke-dasharray", new MotionValue("1 1"), () => { + const pathLength = state.get("pathLength")?.get() ?? 1; + const pathSpacing = state.get("pathSpacing")?.get(); + // Use unitless values to avoid Safari zoom bug + element.setAttribute("stroke-dasharray", `${pathLength} ${pathSpacing ?? 1 - Number(pathLength)}`); + }); + } + return state.set(key, value, undefined, state.get("stroke-dasharray")); + } +} +const addSVGValue = (element, state, key, value) => { + if (key.startsWith("path") && !transformProps.has(key)) { + return addSVGPathValue(element, state, key, value); + } + else if (key.startsWith("attr")) { + return addAttrValue(element, state, key, value, convertAttrKey(key)); + } + /** + * Transforms and origins aren't CSS properties (bar `x`/`y` in some + * browsers), so check them by name rather than `key in element.style`. + */ + const handler = transformProps.has(key) || + originProps.has(key) || + isCSSVar(key) || + key in element.style + ? addStyleValue + : addAttrValue; + return handler(element, state, key, value); +}; +/** + * Reads the current value of `key` from an SVG element as the origin of + * an animation, as the SVG VisualElement does: transforms start from + * their defaults, CSS variables and the few CSS-only properties come from + * computed style, falling back to the attribute when that's empty (e.g. + * the element isn't rendered), and everything else is read from the + * attribute, dash-cased (`strokeWidth` -> `stroke-width`) or, failing + * that, as written (`baseFrequency`). + */ +const readSVGValue = (element, key) => { + if (transformProps.has(key)) { + return numberValueTypes[key]?.default || 0; + } + if (isCSSVar(key) || cssStyleProperties.includes(key)) { + return (readStyleValue(element, key) || + element.getAttribute(camelToDash(key)) || + 0); + } + key = convertAttrKey(key); + return (element.getAttribute(camelToDash(key)) ?? + element.getAttribute(key) ?? + undefined); +}; +/** + * The per-element effect `animate()` binds through, so SVG values share + * state with a direct `svgEffect()` call. + */ +const svgSubjectEffect = /*@__PURE__*/ createEffect(addSVGValue, { + test: isSVGElement, + read: readSVGValue, +}); +const svgEffect = /*@__PURE__*/ createSelectorEffect(svgSubjectEffect); +function convertAttrKey(key) { + return key.replace(/^attr([A-Z])/, (_, firstChar) => firstChar.toLowerCase()); +} + +export { addSVGValue, readSVGValue, svgEffect, svgSubjectEffect }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/utils/create-dom-effect.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/utils/create-dom-effect.mjs new file mode 100644 index 0000000..4b1834d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/utils/create-dom-effect.mjs @@ -0,0 +1,27 @@ +import { resolveElements } from '../../utils/resolve-elements.mjs'; + +function createSelectorEffect(subjectEffect) { + const effect = (subject, values) => { + const elements = resolveElements(subject); + const subscriptions = []; + for (const element of elements) { + const remove = subjectEffect(element, values); + subscriptions.push(remove); + } + return () => { + for (const remove of subscriptions) + remove(); + }; + }; + const { test, read, get, flush, state } = subjectEffect; + return Object.assign(effect, { + test, + read, + get: get, + flush, + state, + }); +} + +export { createSelectorEffect }; +//# sourceMappingURL=create-dom-effect.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/utils/create-effect.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/utils/create-effect.mjs new file mode 100644 index 0000000..4af2909 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/effects/utils/create-effect.mjs @@ -0,0 +1,27 @@ +import { MotionValueState } from '../MotionValueState.mjs'; + +function createEffect(addValue, { step, ...options } = {}) { + const stateCache = new WeakMap(); + const effect = (subject, values) => { + const state = stateCache.get(subject) ?? new MotionValueState(step); + stateCache.set(subject, state); + const subscriptions = []; + for (const key in values) { + const value = values[key]; + const remove = addValue(subject, state, key, value); + subscriptions.push(remove); + } + return () => { + for (const cancel of subscriptions) + cancel(); + }; + }; + return Object.assign(effect, options, { + get: (subject, key) => stateCache.get(subject)?.get(key), + flush: (subject) => stateCache.get(subject)?.flush(), + state: (subject) => stateCache.get(subject), + }); +} + +export { createEffect }; +//# sourceMappingURL=create-effect.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/events/add-dom-event.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/events/add-dom-event.mjs new file mode 100644 index 0000000..af9a3c7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/events/add-dom-event.mjs @@ -0,0 +1,7 @@ +function addDomEvent(target, eventName, handler, options = { passive: true }) { + target.addEventListener(eventName, handler, options); + return () => target.removeEventListener(eventName, handler, options); +} + +export { addDomEvent }; +//# sourceMappingURL=add-dom-event.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/batcher.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/batcher.mjs new file mode 100644 index 0000000..521c586 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/batcher.mjs @@ -0,0 +1,72 @@ +import { MotionGlobalConfig } from 'motion-utils'; +import { stepsOrder } from './order.mjs'; +import { createRenderStep } from './render-step.mjs'; + +const maxElapsed = 40; +function createRenderBatcher(scheduleNextBatch, allowKeepAlive, state = { + delta: 0.0, + timestamp: 0.0, + isProcessing: false, +}) { + let runNextFrame = false; + let useDefaultElapsed = true; + const flagRunNextFrame = () => (runNextFrame = true); + const steps = stepsOrder.reduce((acc, key) => { + acc[key] = createRenderStep(flagRunNextFrame); + return acc; + }, {}); + const { setup, read, resolveKeyframes, preUpdate, update, preRender, render, postRender, } = steps; + const processBatch = () => { + const useManualTiming = MotionGlobalConfig.useManualTiming; + const timestamp = useManualTiming + ? state.timestamp + : performance.now(); + runNextFrame = false; + if (!useManualTiming) { + state.delta = useDefaultElapsed + ? 1000 / 60 + : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1); + } + state.timestamp = timestamp; + state.isProcessing = true; + // Unrolled render loop for better per-frame performance + setup.process(state); + read.process(state); + resolveKeyframes.process(state); + preUpdate.process(state); + update.process(state); + preRender.process(state); + render.process(state); + postRender.process(state); + state.isProcessing = false; + if (runNextFrame && allowKeepAlive) { + useDefaultElapsed = false; + scheduleNextBatch(processBatch); + } + }; + const wake = () => { + runNextFrame = true; + useDefaultElapsed = true; + if (!state.isProcessing) { + scheduleNextBatch(processBatch); + } + }; + const schedule = stepsOrder.reduce((acc, key) => { + const step = steps[key]; + acc[key] = (process, keepAlive = false, immediate = false) => { + if (!runNextFrame) + wake(); + return step.schedule(process, keepAlive, immediate); + }; + return acc; + }, {}); + const cancel = (process) => { + for (let i = 0; i < stepsOrder.length; i++) { + steps[stepsOrder[i]].cancel(process); + } + }; + return { schedule, cancel, state, steps }; +} + +export { createRenderBatcher }; +//# sourceMappingURL=batcher.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/frame-data.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/frame-data.mjs new file mode 100644 index 0000000..6453152 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/frame-data.mjs @@ -0,0 +1,12 @@ +/** + * The frameloop's state, kept apart from the frameloop itself so that + * reading it doesn't bundle the scheduler. + */ +const frameData = { + delta: 0.0, + timestamp: 0.0, + isProcessing: false, +}; + +export { frameData }; +//# sourceMappingURL=frame-data.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/frame.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/frame.mjs new file mode 100644 index 0000000..f4e9d6e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/frame.mjs @@ -0,0 +1,8 @@ +import { noop } from 'motion-utils'; +import { createRenderBatcher } from './batcher.mjs'; +import { frameData } from './frame-data.mjs'; + +const { schedule: frame, cancel: cancelFrame, steps: frameSteps, } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true, frameData); + +export { cancelFrame, frame, frameSteps }; +//# sourceMappingURL=frame.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/index-legacy.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/index-legacy.mjs new file mode 100644 index 0000000..aa3de45 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/index-legacy.mjs @@ -0,0 +1,21 @@ +import { stepsOrder } from './order.mjs'; +import { frame, cancelFrame } from './frame.mjs'; + +/** + * @deprecated + * + * Import as `frame` instead. + */ +const sync = frame; +/** + * @deprecated + * + * Use cancelFrame(callback) instead. + */ +const cancelSync = stepsOrder.reduce((acc, key) => { + acc[key] = (process) => cancelFrame(process); + return acc; +}, {}); + +export { cancelSync, sync }; +//# sourceMappingURL=index-legacy.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/microtask.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/microtask.mjs new file mode 100644 index 0000000..d81e76c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/microtask.mjs @@ -0,0 +1,7 @@ +import { createRenderBatcher } from './batcher.mjs'; + +const { schedule: microtask, cancel: cancelMicrotask } = +/* @__PURE__ */ createRenderBatcher(queueMicrotask, false); + +export { cancelMicrotask, microtask }; +//# sourceMappingURL=microtask.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/order.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/order.mjs new file mode 100644 index 0000000..f2fb09f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/order.mjs @@ -0,0 +1,13 @@ +const stepsOrder = [ + "setup", // Compute + "read", // Read + "resolveKeyframes", // Write/Read/Write/Read + "preUpdate", // Compute + "update", // Compute + "preRender", // Compute + "render", // Write + "postRender", // Compute +]; + +export { stepsOrder }; +//# sourceMappingURL=order.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/render-step.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/render-step.mjs new file mode 100644 index 0000000..20d5808 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/render-step.mjs @@ -0,0 +1,87 @@ +function createRenderStep(runNextFrame) { + /** + * We create and reuse two queues, one to queue jobs for the current frame + * and one for the next. We reuse to avoid triggering GC after x frames. + */ + let thisFrame = new Set(); + let nextFrame = new Set(); + /** + * Track whether we're currently processing jobs in this step. This way + * we can decide whether to schedule new jobs for this frame or next. + */ + let isProcessing = false; + let flushNextFrame = false; + /** + * A set of processes which were marked keepAlive when scheduled. + * A keepAlive process is always also held by a frame queue until + * it's cancelled, so a Set has the same lifetime semantics as a + * WeakSet here while being considerably faster to query every frame. + */ + const toKeepAlive = new Set(); + let latestFrameData = { + delta: 0.0, + timestamp: 0.0, + isProcessing: false, + }; + function triggerCallback(callback) { + if (toKeepAlive.has(callback)) { + nextFrame.add(callback); + runNextFrame(); + } + callback(latestFrameData); + } + const step = { + /** + * Schedule a process to run on the next frame. + */ + schedule: (callback, keepAlive = false, immediate = false) => { + const addToCurrentFrame = immediate && isProcessing; + const queue = addToCurrentFrame ? thisFrame : nextFrame; + if (keepAlive) + toKeepAlive.add(callback); + queue.add(callback); + return callback; + }, + /** + * Cancel the provided callback from running on the next frame. + */ + cancel: (callback) => { + nextFrame.delete(callback); + toKeepAlive.delete(callback); + }, + /** + * Execute all schedule callbacks. + */ + process: (frameData) => { + latestFrameData = frameData; + /** + * If we're already processing we've probably been triggered by a flushSync + * inside an existing process. Instead of executing, mark flushNextFrame + * as true and ensure we flush the following frame at the end of this one. + */ + if (isProcessing) { + flushNextFrame = true; + return; + } + isProcessing = true; + // Swap this frame and the next to avoid GC + const prevFrame = thisFrame; + thisFrame = nextFrame; + nextFrame = prevFrame; + // Execute this frame + thisFrame.forEach(triggerCallback); + // Clear the frame so no callbacks remain. This is to avoid + // memory leaks should this render step not run for a while. + thisFrame.clear(); + isProcessing = false; + if (flushNextFrame) { + flushNextFrame = false; + step.process(frameData); + } + }, + }; + return step; +} + +export { createRenderStep }; +//# sourceMappingURL=render-step.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs new file mode 100644 index 0000000..ce5482c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/frameloop/sync-time.mjs @@ -0,0 +1,32 @@ +import { MotionGlobalConfig } from 'motion-utils'; +import { frameData } from './frame-data.mjs'; + +let now; +function clearTime() { + now = undefined; +} +/** + * An eventloop-synchronous alternative to performance.now(). + * + * Ensures that time measurements remain consistent within a synchronous context. + * Usually calling performance.now() twice within the same synchronous context + * will return different values which isn't useful for animations when we're usually + * trying to sync animations to the same frame. + */ +const time = { + now: () => { + if (now === undefined) { + time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming + ? frameData.timestamp + : performance.now()); + } + return now; + }, + set: (newTime) => { + now = newTime; + queueMicrotask(clearTime); + }, +}; + +export { time }; +//# sourceMappingURL=sync-time.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs new file mode 100644 index 0000000..f5bfa77 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs @@ -0,0 +1,10 @@ +const isDragging = { + x: false, + y: false, +}; +function isDragActive() { + return isDragging.x || isDragging.y; +} + +export { isDragActive, isDragging }; +//# sourceMappingURL=is-active.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs new file mode 100644 index 0000000..78e2661 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs @@ -0,0 +1,29 @@ +import { isDragging } from './is-active.mjs'; + +function setDragLock(axis) { + if (axis === "x" || axis === "y") { + if (isDragging[axis]) { + return null; + } + else { + isDragging[axis] = true; + return () => { + isDragging[axis] = false; + }; + } + } + else { + if (isDragging.x || isDragging.y) { + return null; + } + else { + isDragging.x = isDragging.y = true; + return () => { + isDragging.x = isDragging.y = false; + }; + } + } +} + +export { setDragLock }; +//# sourceMappingURL=set-active.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/hover.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/hover.mjs new file mode 100644 index 0000000..5ad15e3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/hover.mjs @@ -0,0 +1,70 @@ +import { isDragActive } from './drag/state/is-active.mjs'; +import { setupGesture } from './utils/setup.mjs'; + +function isValidHover(event) { + return !(event.pointerType === "touch" || isDragActive()); +} +/** + * Create a hover gesture. hover() is different to .addEventListener("pointerenter") + * in that it has an easier syntax, filters out polyfilled touch events, interoperates + * with drag gestures, and automatically removes the "pointerleave" event listener when the hover ends. + * + * @public + */ +function hover(elementOrSelector, onHoverStart, options = {}) { + const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options); + elements.forEach((element) => { + let isPressed = false; + let deferredHoverEnd = false; + let hoverEndCallback; + const removePointerLeave = () => { + element.removeEventListener("pointerleave", onPointerLeave); + }; + const endHover = (event) => { + if (hoverEndCallback) { + hoverEndCallback(event); + hoverEndCallback = undefined; + } + removePointerLeave(); + }; + const onPointerUp = (event) => { + isPressed = false; + window.removeEventListener("pointerup", onPointerUp); + window.removeEventListener("pointercancel", onPointerUp); + if (deferredHoverEnd) { + deferredHoverEnd = false; + endHover(event); + } + }; + const onPointerDown = () => { + isPressed = true; + window.addEventListener("pointerup", onPointerUp, eventOptions); + window.addEventListener("pointercancel", onPointerUp, eventOptions); + }; + const onPointerLeave = (leaveEvent) => { + if (leaveEvent.pointerType === "touch") + return; + if (isPressed) { + deferredHoverEnd = true; + return; + } + endHover(leaveEvent); + }; + const onPointerEnter = (enterEvent) => { + if (!isValidHover(enterEvent)) + return; + deferredHoverEnd = false; + const onHoverEnd = onHoverStart(element, enterEvent); + if (typeof onHoverEnd !== "function") + return; + hoverEndCallback = onHoverEnd; + element.addEventListener("pointerleave", onPointerLeave, eventOptions); + }; + element.addEventListener("pointerenter", onPointerEnter, eventOptions); + element.addEventListener("pointerdown", onPointerDown, eventOptions); + }); + return cancel; +} + +export { hover }; +//# sourceMappingURL=hover.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/index.mjs new file mode 100644 index 0000000..b46a409 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/index.mjs @@ -0,0 +1,97 @@ +import { isHTMLElement } from '../../utils/is-html-element.mjs'; +import { isDragActive } from '../drag/state/is-active.mjs'; +import { isNodeOrChild } from '../utils/is-node-or-child.mjs'; +import { isPrimaryPointer } from '../utils/is-primary-pointer.mjs'; +import { setupGesture } from '../utils/setup.mjs'; +import { isElementKeyboardAccessible } from './utils/is-keyboard-accessible.mjs'; +import { enableKeyboardPress } from './utils/keyboard.mjs'; +import { isPressing } from './utils/state.mjs'; + +/** + * Filter out events that are not primary pointer events, or are triggering + * while a Motion gesture is active. + */ +function isValidPressEvent(event) { + return isPrimaryPointer(event) && !isDragActive(); +} +const claimedPointerDownEvents = new WeakSet(); +/** + * Create a press gesture. + * + * Press is different to `"pointerdown"`, `"pointerup"` in that it + * automatically filters out secondary pointer events like right + * click and multitouch. + * + * It also adds accessibility support for keyboards, where + * an element with a press gesture will receive focus and + * trigger on Enter `"keydown"` and `"keyup"` events. + * + * This is different to a browser's `"click"` event, which does + * respond to keyboards but only for the `"click"` itself, rather + * than the press start and end/cancel. The element also needs + * to be focusable for this to work, whereas a press gesture will + * make an element focusable by default. + * + * @public + */ +function press(targetOrSelector, onPressStart, options = {}) { + const [targets, eventOptions, cancelEvents] = setupGesture(targetOrSelector, options); + const startPress = (startEvent) => { + const target = startEvent.currentTarget; + if (!isValidPressEvent(startEvent)) + return; + if (claimedPointerDownEvents.has(startEvent)) + return; + isPressing.add(target); + if (options.stopPropagation) { + claimedPointerDownEvents.add(startEvent); + } + const onPressEnd = onPressStart(target, startEvent); + /** + * End listeners run in the capture phase so a descendant calling + * stopPropagation() in its own pointerup handler can't prevent the + * press gesture from ending. This also keeps the gesture-end + * ordering consistent with the drag gesture. See #2794. + */ + const endEventOptions = { ...eventOptions, capture: true }; + const onPointerEnd = (endEvent, success) => { + window.removeEventListener("pointerup", onPointerUp, endEventOptions); + window.removeEventListener("pointercancel", onPointerCancel, endEventOptions); + if (isPressing.has(target)) { + isPressing.delete(target); + } + if (!isValidPressEvent(endEvent)) { + return; + } + if (typeof onPressEnd === "function") { + onPressEnd(endEvent, { success }); + } + }; + const onPointerUp = (upEvent) => { + onPointerEnd(upEvent, target === window || + target === document || + options.useGlobalTarget || + isNodeOrChild(target, upEvent.target)); + }; + const onPointerCancel = (cancelEvent) => { + onPointerEnd(cancelEvent, false); + }; + window.addEventListener("pointerup", onPointerUp, endEventOptions); + window.addEventListener("pointercancel", onPointerCancel, endEventOptions); + }; + targets.forEach((target) => { + const pointerDownTarget = options.useGlobalTarget ? window : target; + pointerDownTarget.addEventListener("pointerdown", startPress, eventOptions); + if (isHTMLElement(target)) { + target.addEventListener("focus", (event) => enableKeyboardPress(event, eventOptions)); + if (!isElementKeyboardAccessible(target) && + !target.hasAttribute("tabindex")) { + target.tabIndex = 0; + } + } + }); + return cancelEvents; +} + +export { press }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs new file mode 100644 index 0000000..defa4bf --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs @@ -0,0 +1,34 @@ +const keyboardAccessibleElements = new Set([ + "BUTTON", + "INPUT", + "SELECT", + "TEXTAREA", + "A", +]); +/** + * Checks if an element is natively keyboard accessible (focusable). + * Used by the press gesture to determine if we need to add tabIndex. + */ +function isElementKeyboardAccessible(element) { + return (keyboardAccessibleElements.has(element.tagName) || + element.isContentEditable === true); +} +const textInputElements = new Set(["INPUT", "SELECT", "TEXTAREA"]); +/** + * Checks if an element has text selection or direct interaction behavior + * that should block drag gestures from starting. + * + * This specifically targets form controls where the user might want to select + * text or interact with the control (e.g., sliders, dropdowns). + * + * Buttons and links are NOT included because they don't have click-and-move + * actions of their own - they only respond to click events, so dragging + * should still work when initiated from these elements. + */ +function isElementTextInput(element) { + return (textInputElements.has(element.tagName) || + element.isContentEditable === true); +} + +export { isElementKeyboardAccessible, isElementTextInput }; +//# sourceMappingURL=is-keyboard-accessible.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs new file mode 100644 index 0000000..8186599 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs @@ -0,0 +1,39 @@ +import { isPressing } from './state.mjs'; + +/** + * Filter out events that are not "Enter" keys. + */ +function filterEvents(callback) { + return (event) => { + if (event.key !== "Enter") + return; + callback(event); + }; +} +function firePointerEvent(target, type) { + target.dispatchEvent(new PointerEvent("pointer" + type, { isPrimary: true, bubbles: true })); +} +const enableKeyboardPress = (focusEvent, eventOptions) => { + const element = focusEvent.currentTarget; + if (!element) + return; + const handleKeydown = filterEvents(() => { + if (isPressing.has(element)) + return; + firePointerEvent(element, "down"); + const handleKeyup = filterEvents(() => { + firePointerEvent(element, "up"); + }); + const handleBlur = () => firePointerEvent(element, "cancel"); + element.addEventListener("keyup", handleKeyup, eventOptions); + element.addEventListener("blur", handleBlur, eventOptions); + }); + element.addEventListener("keydown", handleKeydown, eventOptions); + /** + * Add an event listener that fires on blur to remove the keydown events. + */ + element.addEventListener("blur", () => element.removeEventListener("keydown", handleKeydown), eventOptions); +}; + +export { enableKeyboardPress }; +//# sourceMappingURL=keyboard.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs new file mode 100644 index 0000000..ac86eab --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs @@ -0,0 +1,4 @@ +const isPressing = new WeakSet(); + +export { isPressing }; +//# sourceMappingURL=state.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs new file mode 100644 index 0000000..7cc1da6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs @@ -0,0 +1,21 @@ +/** + * Recursively traverse up the tree to check whether the provided child node + * is the parent or a descendant of it. + * + * @param parent - Element to find + * @param child - Element to test against parent + */ +const isNodeOrChild = (parent, child) => { + if (!child) { + return false; + } + else if (parent === child) { + return true; + } + else { + return isNodeOrChild(parent, child.parentElement); + } +}; + +export { isNodeOrChild }; +//# sourceMappingURL=is-node-or-child.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs new file mode 100644 index 0000000..c013d7e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs @@ -0,0 +1,19 @@ +const isPrimaryPointer = (event) => { + if (event.pointerType === "mouse") { + return typeof event.button !== "number" || event.button <= 0; + } + else { + /** + * isPrimary is true for all mice buttons, whereas every touch point + * is regarded as its own input. So subsequent concurrent touch points + * will be false. + * + * Specifically match against false here as incomplete versions of + * PointerEvents in very old browser might have it set as undefined. + */ + return event.isPrimary !== false; + } +}; + +export { isPrimaryPointer }; +//# sourceMappingURL=is-primary-pointer.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs new file mode 100644 index 0000000..9505c06 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/gestures/utils/setup.mjs @@ -0,0 +1,16 @@ +import { resolveElements } from '../../utils/resolve-elements.mjs'; + +function setupGesture(elementOrSelector, options) { + const elements = resolveElements(elementOrSelector); + const gestureAbortController = new AbortController(); + const eventOptions = { + passive: true, + ...options, + signal: gestureAbortController.signal, + }; + const cancel = () => gestureAbortController.abort(); + return [elements, eventOptions, cancel]; +} + +export { setupGesture }; +//# sourceMappingURL=setup.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/index.mjs new file mode 100644 index 0000000..58db687 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/index.mjs @@ -0,0 +1,181 @@ +export { AsyncMotionValueAnimation } from './animation/AsyncMotionValueAnimation.mjs'; +export { GroupAnimation } from './animation/GroupAnimation.mjs'; +export { GroupAnimationWithThen } from './animation/GroupAnimationWithThen.mjs'; +export { JSAnimation, animateValue, round } from './animation/JSAnimation.mjs'; +export { NativeAnimation } from './animation/NativeAnimation.mjs'; +export { NativeAnimationExtended, sampleDelta } from './animation/NativeAnimationExtended.mjs'; +export { NativeAnimationWrapper } from './animation/NativeAnimationWrapper.mjs'; +export { animationMapKey, getAnimationMap } from './animation/utils/active-animations.mjs'; +export { calcChildStagger } from './animation/utils/calc-child-stagger.mjs'; +export { arc } from './animation/utils/arc.mjs'; +export { getVariableValue, parseCSSVariable } from './animation/utils/css-variables-conversion.mjs'; +export { getDefaultTransition } from './animation/utils/default-transitions.mjs'; +export { getFinalKeyframe } from './animation/keyframes/get-final.mjs'; +export { getValueTransition } from './animation/utils/get-value-transition.mjs'; +export { resolveTransition } from './animation/utils/resolve-transition.mjs'; +export { containsCSSVariable, isCSSVariableName, isCSSVariableToken } from './animation/utils/is-css-variable.mjs'; +export { isTransitionDefined } from './animation/utils/is-transition-defined.mjs'; +export { makeAnimationInstant } from './animation/utils/make-animation-instant.mjs'; +export { animateMotionValue } from './animation/interfaces/motion-value.mjs'; +export { animateVisualElement } from './animation/interfaces/visual-element.mjs'; +export { animateTarget } from './animation/interfaces/visual-element-target.mjs'; +export { animateVariant } from './animation/interfaces/visual-element-variant.mjs'; +export { optimizedAppearDataAttribute, optimizedAppearDataId } from './animation/optimized-appear/data-id.mjs'; +export { getOptimisedAppearId } from './animation/optimized-appear/get-appear-id.mjs'; +export { inertia } from './animation/generators/inertia.mjs'; +export { defaultEasing, keyframes } from './animation/generators/keyframes.mjs'; +export { spring } from './animation/generators/spring.mjs'; +export { calcGeneratorDuration, maxGeneratorDuration } from './animation/generators/utils/calc-duration.mjs'; +export { createGeneratorEasing } from './animation/generators/utils/create-generator-easing.mjs'; +export { isGenerator } from './animation/generators/utils/is-generator.mjs'; +export { DOMKeyframesResolver } from './animation/keyframes/DOMKeyframesResolver.mjs'; +export { KeyframeResolver, flushKeyframeResolvers } from './animation/keyframes/KeyframesResolver.mjs'; +export { defaultOffset } from './animation/keyframes/offsets/default.mjs'; +export { fillOffset } from './animation/keyframes/offsets/fill.mjs'; +export { convertOffsetToTimes } from './animation/keyframes/offsets/time.mjs'; +export { applyPxDefaults } from './animation/keyframes/utils/apply-px-defaults.mjs'; +export { fillWildcards } from './animation/keyframes/utils/fill-wildcards.mjs'; +export { cubicBezierAsString } from './animation/waapi/easing/cubic-bezier.mjs'; +export { isWaapiSupportedEasing } from './animation/waapi/easing/is-supported.mjs'; +export { mapEasingToNativeEasing } from './animation/waapi/easing/map-easing.mjs'; +export { supportedWaapiEasing } from './animation/waapi/easing/supported.mjs'; +export { startWaapiAnimation } from './animation/waapi/start-waapi-animation.mjs'; +export { supportsPartialKeyframes } from './animation/waapi/supports/partial-keyframes.mjs'; +export { supportsBrowserAnimation, supportsWaapi } from './animation/waapi/supports/waapi.mjs'; +export { acceleratedValues } from './animation/waapi/utils/accelerated-values.mjs'; +export { applyGeneratorOptions } from './animation/waapi/utils/apply-generator.mjs'; +export { generateLinearEasing } from './animation/waapi/utils/linear.mjs'; +export { addEffect, animateEffectSubject, animateValues, findEffect, removeEffect } from './animation/animate/effects.mjs'; +export { animateElement, handOffElementState } from './animation/animate/element.mjs'; +export { addAttrValue, attrEffect } from './effects/attr/index.mjs'; +export { MotionValueState } from './effects/MotionValueState.mjs'; +export { propEffect } from './effects/prop/index.mjs'; +export { addStyleValue, originProps, readStyleValue, styleEffect, styleSubjectEffect } from './effects/style/index.mjs'; +export { addSVGValue, readSVGValue, svgEffect, svgSubjectEffect } from './effects/svg/index.mjs'; +export { createEffect } from './effects/utils/create-effect.mjs'; +export { createRenderBatcher } from './frameloop/batcher.mjs'; +export { cancelMicrotask, microtask } from './frameloop/microtask.mjs'; +export { time } from './frameloop/sync-time.mjs'; +export { isDragActive, isDragging } from './gestures/drag/state/is-active.mjs'; +export { setDragLock } from './gestures/drag/state/set-active.mjs'; +export { hover } from './gestures/hover.mjs'; +export { press } from './gestures/press/index.mjs'; +export { isElementKeyboardAccessible, isElementTextInput } from './gestures/press/utils/is-keyboard-accessible.mjs'; +export { isNodeOrChild } from './gestures/utils/is-node-or-child.mjs'; +export { isPrimaryPointer } from './gestures/utils/is-primary-pointer.mjs'; +export { defaultTransformValue, parseValueFromTransform, readTransformValue } from './render/dom/parse-transform.mjs'; +export { getComputedStyle } from './render/dom/style-computed.mjs'; +export { setStyle } from './render/dom/style-set.mjs'; +export { isKeyframesTarget } from './render/utils/is-keyframes-target.mjs'; +export { positionalKeys } from './render/utils/keys-position.mjs'; +export { transformPropOrder, transformProps } from './render/utils/keys-transform.mjs'; +export { resize } from './resize/index.mjs'; +export { recordStats } from './stats/index.mjs'; +export { statsBuffer } from './stats/buffer.mjs'; +export { interpolate } from './utils/interpolate.mjs'; +export { isHTMLElement } from './utils/is-html-element.mjs'; +export { isSVGElement } from './utils/is-svg-element.mjs'; +export { isSVGSVGElement } from './utils/is-svg-svg-element.mjs'; +export { mix } from './utils/mix/index.mjs'; +export { mixColor, mixLinearColor } from './utils/mix/color.mjs'; +export { getMixer, mixArray, mixComplex, mixObject } from './utils/mix/complex.mjs'; +export { mixImmediate } from './utils/mix/immediate.mjs'; +export { mixNumber } from './utils/mix/number.mjs'; +export { invisibleValues, mixVisibility } from './utils/mix/visibility.mjs'; +export { resolveElements } from './utils/resolve-elements.mjs'; +export { getOriginIndex, stagger } from './utils/stagger.mjs'; +export { supportsFlags } from './utils/supports/flags.mjs'; +export { supportsLinearEasing } from './utils/supports/linear-easing.mjs'; +export { supportsScrollTimeline, supportsViewTimeline } from './utils/supports/scroll-timeline.mjs'; +export { transform } from './utils/transform.mjs'; +export { MotionValue, collectMotionValues, motionValue } from './value/index.mjs'; +export { attachFollow, followValue } from './value/follow-value.mjs'; +export { mapValue } from './value/map-value.mjs'; +export { attachSpring, springValue } from './value/spring-value.mjs'; +export { transformValue } from './value/transform-value.mjs'; +export { color } from './value/types/color/index.mjs'; +export { hex } from './value/types/color/hex.mjs'; +export { hsla } from './value/types/color/hsla.mjs'; +export { hslaToRgba } from './value/types/color/hsla-to-rgba.mjs'; +export { rgbUnit, rgba } from './value/types/color/rgba.mjs'; +export { analyseComplexValue, complex, hasComplexValues } from './value/types/complex/index.mjs'; +export { dimensionValueTypes, findDimensionValueType } from './value/types/dimensions.mjs'; +export { defaultValueTypes, getDefaultValueType } from './value/types/maps/defaults.mjs'; +export { numberValueTypes } from './value/types/maps/number.mjs'; +export { transformValueTypes } from './value/types/maps/transform.mjs'; +export { alpha, number, scale } from './value/types/numbers/index.mjs'; +export { degrees, percent, progressPercentage, px, vh, vw } from './value/types/numbers/units.mjs'; +export { testValueType } from './value/types/test.mjs'; +export { getAnimatableNone } from './value/types/utils/animatable-none.mjs'; +export { findValueType } from './value/types/utils/find.mjs'; +export { getValueAsType } from './value/types/utils/get-as-type.mjs'; +export { isMotionValue } from './value/utils/is-motion-value.mjs'; +export { addValueToWillChange } from './value/will-change/add-will-change.mjs'; +export { isWillChangeMotionValue } from './value/will-change/is.mjs'; +export { ViewTransitionBuilder, animateView } from './view/index.mjs'; +export { getViewAnimationLayerInfo } from './view/utils/get-layer-info.mjs'; +export { getViewAnimations } from './view/utils/get-view-animations.mjs'; +export { DOMVisualElement } from './render/dom/DOMVisualElement.mjs'; +export { Feature } from './render/Feature.mjs'; +export { HTMLVisualElement } from './render/html/HTMLVisualElement.mjs'; +export { ObjectVisualElement } from './render/object/ObjectVisualElement.mjs'; +export { visualElementStore } from './render/store.mjs'; +export { SVGVisualElement } from './render/svg/SVGVisualElement.mjs'; +export { VisualElement, getFeatureDefinitions, setFeatureDefinitions } from './render/VisualElement.mjs'; +export { checkVariantsDidChange, createAnimationState } from './render/utils/animation-state.mjs'; +export { getVariantContext } from './render/utils/get-variant-context.mjs'; +export { isAnimationControls } from './render/utils/is-animation-controls.mjs'; +export { isControllingVariants, isVariantNode } from './render/utils/is-controlling-variants.mjs'; +export { isForcedMotionValue } from './render/utils/is-forced-motion-value.mjs'; +export { isVariantLabel } from './render/utils/is-variant-label.mjs'; +export { updateMotionValuesFromProps } from './render/utils/motion-values.mjs'; +export { resolveVariant } from './render/utils/resolve-dynamic-variants.mjs'; +export { resolveVariantFromProps } from './render/utils/resolve-variants.mjs'; +export { setTarget } from './render/utils/setters.mjs'; +export { variantPriorityOrder, variantProps } from './render/utils/variant-props.mjs'; +export { initPrefersReducedMotion } from './render/utils/reduced-motion/index.mjs'; +export { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints } from './projection/geometry/conversion.mjs'; +export { copyAxisDeltaInto, copyAxisInto, copyBoxInto } from './projection/geometry/copy.mjs'; +export { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis } from './projection/geometry/delta-apply.mjs'; +export { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear } from './projection/geometry/delta-calc.mjs'; +export { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta } from './projection/geometry/delta-remove.mjs'; +export { createAxis, createAxisDelta, createBox, createDelta } from './projection/geometry/models.mjs'; +export { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero } from './projection/geometry/utils.mjs'; +export { eachAxis } from './projection/utils/each-axis.mjs'; +export { has2DTranslate, hasScale, hasTransform } from './projection/utils/has-transform.mjs'; +export { measurePageBox, measureViewportBox } from './projection/utils/measure.mjs'; +export { correctBorderRadius, pixelsToPercent } from './projection/styles/scale-border-radius.mjs'; +export { correctBoxShadow } from './projection/styles/scale-box-shadow.mjs'; +export { buildProjectionTransform } from './projection/styles/transform.mjs'; +export { mixValues } from './projection/animation/mix-values.mjs'; +export { animateSingleValue } from './animation/animate/single-value.mjs'; +export { addDomEvent } from './events/add-dom-event.mjs'; +export { compareByDepth } from './projection/utils/compare-by-depth.mjs'; +export { FlatTree } from './projection/utils/flat-tree.mjs'; +export { delay, delayInSeconds } from './utils/delay.mjs'; +export { resolveMotionValue } from './value/utils/resolve-motion-value.mjs'; +export { cleanDirtyNodes, createProjectionNode, propagateDirtyNodes } from './projection/node/create-projection-node.mjs'; +export { DocumentProjectionNode } from './projection/node/DocumentProjectionNode.mjs'; +export { nodeGroup } from './projection/node/group.mjs'; +export { HTMLProjectionNode, rootProjectionNode } from './projection/node/HTMLProjectionNode.mjs'; +export { globalProjectionState } from './projection/node/state.mjs'; +export { NodeStack } from './projection/shared/stack.mjs'; +export { camelToDash } from './render/dom/utils/camel-to-dash.mjs'; +export { buildHTMLStyles } from './render/html/utils/build-styles.mjs'; +export { buildTransform } from './render/html/utils/build-transform.mjs'; +export { renderHTML } from './render/html/utils/render.mjs'; +export { scrapeMotionValuesFromProps as scrapeHTMLMotionValuesFromProps } from './render/html/utils/scrape-motion-values.mjs'; +export { buildSVGAttrs } from './render/svg/utils/build-attrs.mjs'; +export { camelCaseAttributes } from './render/svg/utils/camel-case-attrs.mjs'; +export { isSVGTag } from './render/svg/utils/is-svg-tag.mjs'; +export { buildSVGPath } from './render/svg/utils/path.mjs'; +export { renderSVG } from './render/svg/utils/render.mjs'; +export { scrapeMotionValuesFromProps as scrapeSVGMotionValuesFromProps } from './render/svg/utils/scrape-motion-values.mjs'; +export { LayoutAnimationBuilder, parseAnimateLayoutArgs } from './layout/LayoutAnimationBuilder.mjs'; +export { animateLayout } from './layout/animate-layout.mjs'; +export { cancelSync, sync } from './frameloop/index-legacy.mjs'; +export { addScaleCorrector, scaleCorrectors } from './projection/styles/scale-correction.mjs'; +export { cancelFrame, frame, frameSteps } from './frameloop/frame.mjs'; +export { frameData } from './frameloop/frame-data.mjs'; +export { hasReducedMotionListener, prefersReducedMotion } from './render/utils/reduced-motion/state.mjs'; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/layout/LayoutAnimationBuilder.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/layout/LayoutAnimationBuilder.mjs new file mode 100644 index 0000000..3ff93c7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/layout/LayoutAnimationBuilder.mjs @@ -0,0 +1,363 @@ +import { clamp } from 'motion-utils'; +import { handOffElementState } from '../animation/animate/element.mjs'; +import { GroupAnimation } from '../animation/GroupAnimation.mjs'; +import { microtask } from '../frameloop/microtask.mjs'; +import { time } from '../frameloop/sync-time.mjs'; +import { HTMLProjectionNode } from '../projection/node/HTMLProjectionNode.mjs'; +import { HTMLVisualElement } from '../render/html/HTMLVisualElement.mjs'; +import { visualElementStore } from '../render/store.mjs'; +import { hasTransform } from '../projection/utils/has-transform.mjs'; +import { resolveElements } from '../utils/resolve-elements.mjs'; +import { frameData } from '../frameloop/frame-data.mjs'; +import { frameSteps } from '../frameloop/frame.mjs'; + +const layoutSelector = "[data-layout],[data-layout-id]"; +/** + * All imperatively-created projection nodes live in one persistent tree, + * shared across animateLayout() calls (and with any React-created nodes, + * via the singleton document root). Keyed by element for reuse. + */ +const layoutNodes = new WeakMap(); +/** + * Builders created within the same synchronous tick are flushed together + * as a single "commit": every node is snapshotted before any updateDom + * runs, mirroring React batching renders from different parts of the tree. + */ +let pendingBuilders; +function collectLayoutElements(scope) { + const elements = []; + if (scope instanceof HTMLElement && scope.matches(layoutSelector)) { + elements.push(scope); + } + scope.querySelectorAll(layoutSelector).forEach((element) => { + if (element instanceof HTMLElement) + elements.push(element); + }); + return elements; +} +/** + * Process any work scheduled on the frameloop now. A previous animation + * may have been seeked while paused (controls.time = x) without a frame + * having rendered it - we must materialise that state into the DOM + * before taking snapshots. + */ +function flushPendingFrame() { + if (frameData.isProcessing) + return; + const now = time.now(); + frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp); + frameData.timestamp = now; + frameData.isProcessing = true; + frameSteps.update.process(frameData); + frameSteps.preRender.process(frameData); + frameSteps.render.process(frameData); + frameData.isProcessing = false; +} +function getProjectionParent(element) { + let ancestor = element.parentElement; + while (ancestor) { + const node = layoutNodes.get(ancestor); + if (node && node.instance) + return node; + ancestor = ancestor.parentElement; + } + return undefined; +} +function createVisualElement() { + return new HTMLVisualElement({ + props: {}, + presenceContext: null, + visualState: { + latestValues: {}, + renderState: { + transform: {}, + transformOrigin: {}, + style: {}, + vars: {}, + }, + }, + }, { allowProjection: true }); +} +function readNodeOptions(element, transition) { + const layoutAttr = element.getAttribute("data-layout"); + const layoutId = element.getAttribute("data-layout-id") ?? undefined; + return { + layoutId, + layout: layoutAttr !== null ? true : undefined, + animationType: (!layoutAttr || layoutAttr === "true" + ? "both" + : layoutAttr), + transition, + }; +} +function prepareNode(element, transition) { + let node = layoutNodes.get(element); + if (!node) { + let visualElement = visualElementStore.get(element); + if (!visualElement) { + visualElement = createVisualElement(); + /** + * Values animate() has been rendering on this element move to + * the VisualElement, so the layout animation composes with + * them instead of overwriting them. + */ + handOffElementState(element, visualElement); + } + /** + * A first-time element may carry a projection transform in its + * inline style (e.g. it was cloned from an element mid-animation). + * That transform isn't tracked in latestValues so the engine can't + * reset it before measuring - clear it now so the first layout + * measurement isn't inflated. + */ + if (element.style.transform && + !hasTransform(visualElement.latestValues)) { + element.style.transform = ""; + } + node = new HTMLProjectionNode(visualElement.latestValues, getProjectionParent(element)); + visualElement.projection = node; + node.setOptions({ + ...readNodeOptions(element, transition), + visualElement, + }); + node.mount(element); + layoutNodes.set(element, node); + } + else { + node.setOptions(readNodeOptions(element, transition)); + } + node.isPresent = true; + if (node.options.onExitComplete) { + node.setOptions({ onExitComplete: undefined }); + } + return node; +} +function sortDocumentOrder(elements) { + return [...elements].sort((a, b) => a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1); +} +function dropNode(element, node) { + node.setOptions({ onExitComplete: undefined }); + /** + * Stop any lingering animation so it can't leak into future updates. + * A follow node can share its currentAnimation with a surviving lead + * (via resumingFrom), in which case it isn't ours to stop. + */ + const stack = node.getStack(); + if (!stack || node.isLead()) + node.currentAnimation?.stop(); + node.unmount(); + layoutNodes.delete(element); +} +function flushPendingBuilders() { + const builders = pendingBuilders; + pendingBuilders = undefined; + flushPendingFrame(); + /** + * Discover and mount every node across all builders before snapshotting + * any of them. Mounting during an active update flags isLayoutDirty, + * which would make that node's own willUpdate skip its snapshot. + * Document order guarantees ancestors mount before descendants, even + * when they're discovered by different builders. + */ + const targets = new Map(); + for (const builder of builders) { + for (const element of builder.collectTargets()) { + const owners = targets.get(element); + owners ? owners.push(builder) : targets.set(element, [builder]); + } + } + const union = new Map(); + for (const element of sortDocumentOrder(targets.keys())) { + const owners = targets.get(element); + const node = prepareNode(element, owners[owners.length - 1].transitionFor(element)); + for (const owner of owners) + owner.adopt(element, node); + union.set(element, node); + } + union.forEach((node) => { + node.isLayoutDirty = false; + node.willUpdate(); + }); + const updatePromises = []; + for (const builder of builders) { + const result = builder.runUpdate(); + if (result) + updatePromises.push(result); + } + const commit = () => { + /** + * Process all additions before any removals so that, even across + * builders, a removed member knows whether a replacement with the + * same layoutId was added in this commit. + */ + const newMemberIds = new Set(); + for (const builder of builders) { + builder.reconcileAdditions(newMemberIds); + } + for (const builder of builders) { + builder.reconcileRemovals(newMemberIds); + } + let root; + union.forEach((node) => (root || (root = node.root))); + for (const builder of builders) + root || (root = builder.getRoot()); + root?.didUpdate(); + /** + * The root flushes the update on a microtask, synchronously + * processing the frame that creates the layout animations. Collect + * them in a later microtask step of the same pass. + */ + microtask.render(() => { + for (const builder of builders) + builder.finalize(); + }); + }; + updatePromises.length ? Promise.all(updatePromises).then(commit) : commit(); +} +class LayoutAnimationBuilder { + constructor(scope, updateDom, defaultOptions) { + this.scope = scope; + this.updateDom = updateDom; + this.defaultOptions = defaultOptions; + this.sharedTransitions = new Map(); + this.notifyReady = () => { }; + this.rejectReady = () => { }; + this.tracked = new Map(); + this.restorePoints = new Map(); + this.readyPromise = new Promise((resolve, reject) => { + this.notifyReady = resolve; + this.rejectReady = reject; + }); + if (!pendingBuilders) { + pendingBuilders = []; + queueMicrotask(flushPendingBuilders); + } + pendingBuilders.push(this); + } + shared(id, transition) { + this.sharedTransitions.set(id, transition); + return this; + } + then(resolve, reject) { + return this.readyPromise.then(resolve, reject); + } + transitionFor(element) { + const layoutId = element.getAttribute("data-layout-id"); + return ((layoutId && this.sharedTransitions.get(layoutId)) || + this.defaultOptions); + } + adopt(element, node) { + this.tracked.set(element, node); + this.restorePoints.set(element, { + parent: element.parentElement, + next: element.nextSibling, + }); + } + collectTargets() { + return collectLayoutElements(this.scope); + } + runUpdate() { + try { + const result = this.updateDom(); + if (result && typeof result.then === "function") { + return result.then(undefined, (error) => { + this.updateError = error; + }); + } + } + catch (error) { + this.updateError = error; + } + return undefined; + } + reconcileAdditions(newMemberIds) { + for (const element of collectLayoutElements(this.scope)) { + if (this.tracked.has(element)) + continue; + const node = prepareNode(element, this.transitionFor(element)); + this.adopt(element, node); + node.options.layoutId && newMemberIds.add(node.options.layoutId); + } + } + reconcileRemovals(newMemberIds) { + this.tracked.forEach((node, element) => { + if (element.isConnected) + return; + const restore = this.restorePoints.get(element); + this.restorePoints.delete(element); + const { layoutId } = node.options; + const stack = node.getStack(); + const hasSurvivor = stack && + stack.members.some((member) => member !== node && + member.instance + ?.isConnected); + /** + * A removed lead with a surviving stack member - and no + * replacement member added this commit - runs an exit + * crossfade: restore the element to its old position in the + * DOM, relegate it and let the survivor take over. It's + * removed again once the animation completes. + */ + if (layoutId && + node.isLead() && + hasSurvivor && + !newMemberIds.has(layoutId)) { + if (restore && restore.parent.isConnected) { + restore.parent.insertBefore(element, restore.next && restore.next.parentNode === restore.parent + ? restore.next + : null); + node.isPresent = false; + node.setOptions({ + onExitComplete: () => { + element.remove(); + dropNode(element, node); + }, + }); + if (node.relegate()) + return; + element.remove(); + } + } + dropNode(element, node); + this.tracked.delete(element); + }); + } + getRoot() { + let root; + this.tracked.forEach((node) => (root || (root = node.root))); + return root; + } + finalize() { + if (this.updateError) { + this.rejectReady(this.updateError); + return; + } + const animations = new Set(); + this.tracked.forEach((node) => { + if (node.instance && node.currentAnimation) { + animations.add(node.currentAnimation); + } + }); + this.notifyReady(new GroupAnimation([...animations])); + } +} +function parseAnimateLayoutArgs(scopeOrUpdateDom, updateDomOrOptions, options) { + if (typeof scopeOrUpdateDom === "function") { + return { + scope: document, + updateDom: scopeOrUpdateDom, + defaultOptions: updateDomOrOptions, + }; + } + const scope = scopeOrUpdateDom instanceof Document + ? scopeOrUpdateDom + : resolveElements(scopeOrUpdateDom)[0] ?? document; + return { + scope, + updateDom: updateDomOrOptions, + defaultOptions: options, + }; +} + +export { LayoutAnimationBuilder, parseAnimateLayoutArgs }; +//# sourceMappingURL=LayoutAnimationBuilder.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/layout/animate-layout.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/layout/animate-layout.mjs new file mode 100644 index 0000000..a876a32 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/layout/animate-layout.mjs @@ -0,0 +1,19 @@ +import { parseAnimateLayoutArgs, LayoutAnimationBuilder } from './LayoutAnimationBuilder.mjs'; + +/** + * Animate layout changes made within `updateDom` on elements tagged + * with `data-layout` or `data-layout-id`. + * + * ``` + * animateLayout(() => { + * element.style.justifyContent = "flex-end" + * }) + * ``` + */ +function animateLayout(scopeOrUpdateDom, updateDomOrOptions, options) { + const { scope, updateDom, defaultOptions } = parseAnimateLayoutArgs(scopeOrUpdateDom, updateDomOrOptions, options); + return new LayoutAnimationBuilder(scope, updateDom, defaultOptions); +} + +export { animateLayout }; +//# sourceMappingURL=animate-layout.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs new file mode 100644 index 0000000..67529af --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/animation/mix-values.mjs @@ -0,0 +1,80 @@ +import { mixNumber } from '../../utils/mix/number.mjs'; +import { percent, px } from '../../value/types/numbers/units.mjs'; +import { progress, circOut, noop } from 'motion-utils'; +import { cornerRadiusProps } from '../../utils/border-radius.mjs'; +import { asNumber } from '../../value/utils/as-number.mjs'; + +const numBorders = cornerRadiusProps.length; +const mixedTransforms = [ + "rotate", + "rotateX", + "rotateY", + "rotateZ", + "skewX", + "skewY", +]; +const numMixedTransforms = mixedTransforms.length; +const isPx = (value) => typeof value === "number" || px.test(value); +function mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) { + if (shouldCrossfadeOpacity) { + target.opacity = mixNumber(0, lead.opacity ?? 1, easeCrossfadeIn(progress)); + target.opacityExit = mixNumber(follow.opacity ?? 1, 0, easeCrossfadeOut(progress)); + } + else if (isOnlyMember) { + target.opacity = mixNumber(follow.opacity ?? 1, lead.opacity ?? 1, progress); + } + /** + * Mix border radius + */ + for (let i = 0; i < numBorders; i++) { + const borderLabel = cornerRadiusProps[i]; + let followRadius = getRadius(follow, borderLabel); + let leadRadius = getRadius(lead, borderLabel); + if (followRadius === undefined && leadRadius === undefined) + continue; + followRadius || (followRadius = 0); + leadRadius || (leadRadius = 0); + const canMix = followRadius === 0 || + leadRadius === 0 || + isPx(followRadius) === isPx(leadRadius); + if (canMix) { + target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0); + if (percent.test(leadRadius) || percent.test(followRadius)) { + target[borderLabel] += "%"; + } + } + else { + target[borderLabel] = leadRadius; + } + } + /** + * Mix rotation and skew. These can't be projected, so mix them every + * frame rather than leaving them frozen at the animation-start snapshot. + */ + for (let i = 0; i < numMixedTransforms; i++) { + const key = mixedTransforms[i]; + if (follow[key] || lead[key]) { + target[key] = mixNumber(follow[key] || 0, lead[key] || 0, progress); + } + } +} +function getRadius(values, radiusName) { + return values[radiusName] !== undefined + ? values[radiusName] + : values.borderRadius; +} +const easeCrossfadeIn = /*@__PURE__*/ compress(0, 0.5, circOut); +const easeCrossfadeOut = /*@__PURE__*/ compress(0.5, 0.95, noop); +function compress(min, max, easing) { + return (p) => { + // Could replace ifs with clamp + if (p < min) + return 0; + if (p > max) + return 1; + return easing(progress(min, max, p)); + }; +} + +export { mixValues }; +//# sourceMappingURL=mix-values.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs new file mode 100644 index 0000000..fa9b9a0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/conversion.mjs @@ -0,0 +1,34 @@ +/** + * Bounding boxes tend to be defined as top, left, right, bottom. For various operations + * it's easier to consider each axis individually. This function returns a bounding box + * as a map of single-axis min/max values. + */ +function convertBoundingBoxToBox({ top, left, right, bottom, }) { + return { + x: { min: left, max: right }, + y: { min: top, max: bottom }, + }; +} +function convertBoxToBoundingBox({ x, y }) { + return { top: y.min, right: x.max, bottom: y.max, left: x.min }; +} +/** + * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function + * provided by Framer to allow measured points to be corrected for device scaling. This is used + * when measuring DOM elements and DOM event points. + */ +function transformBoxPoints(point, transformPoint) { + if (!transformPoint) + return point; + const topLeft = transformPoint({ x: point.left, y: point.top }); + const bottomRight = transformPoint({ x: point.right, y: point.bottom }); + return { + top: topLeft.y, + left: topLeft.x, + bottom: bottomRight.y, + right: bottomRight.x, + }; +} + +export { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints }; +//# sourceMappingURL=conversion.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/copy.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/copy.mjs new file mode 100644 index 0000000..5269ba1 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/copy.mjs @@ -0,0 +1,32 @@ +/** + * Reset an axis to the provided origin box. + * + * This is a mutative operation. + */ +function copyAxisInto(axis, originAxis) { + axis.min = originAxis.min; + axis.max = originAxis.max; +} +/** + * Reset a box to the provided origin box. + * + * This is a mutative operation. + */ +function copyBoxInto(box, originBox) { + copyAxisInto(box.x, originBox.x); + copyAxisInto(box.y, originBox.y); +} +/** + * Reset a delta to the provided origin box. + * + * This is a mutative operation. + */ +function copyAxisDeltaInto(delta, originDelta) { + delta.translate = originDelta.translate; + delta.scale = originDelta.scale; + delta.originPoint = originDelta.originPoint; + delta.origin = originDelta.origin; +} + +export { copyAxisDeltaInto, copyAxisInto, copyBoxInto }; +//# sourceMappingURL=copy.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs new file mode 100644 index 0000000..5f219f5 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.mjs @@ -0,0 +1,125 @@ +import { mixNumber } from '../../utils/mix/number.mjs'; +import { hasTransform } from '../utils/has-transform.mjs'; + +/** + * Scales a point based on a factor and an originPoint + */ +function scalePoint(point, scale, originPoint) { + const distanceFromOrigin = point - originPoint; + const scaled = scale * distanceFromOrigin; + return originPoint + scaled; +} +/** + * Applies a translate/scale delta to a point + */ +function applyPointDelta(point, translate, scale, originPoint, boxScale) { + if (boxScale !== undefined) { + point = scalePoint(point, boxScale, originPoint); + } + return scalePoint(point, scale, originPoint) + translate; +} +/** + * Applies a translate/scale delta to an axis + */ +function applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) { + axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale); + axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale); +} +/** + * Applies a translate/scale delta to a box + */ +function applyBoxDelta(box, { x, y }) { + applyAxisDelta(box.x, x.translate, x.scale, x.originPoint); + applyAxisDelta(box.y, y.translate, y.scale, y.originPoint); +} +const TREE_SCALE_SNAP_MIN = 0.999999999999; +const TREE_SCALE_SNAP_MAX = 1.0000000000001; +/** + * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms + * in a tree upon our box before then calculating how to project it into our desired viewport-relative box + * + * This is the final nested loop within updateLayoutDelta for future refactoring + */ +function applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) { + const treeLength = treePath.length; + if (!treeLength) + return; + // Reset the treeScale + treeScale.x = treeScale.y = 1; + let node; + let delta; + for (let i = 0; i < treeLength; i++) { + node = treePath[i]; + delta = node.projectionDelta; + /** + * TODO: Prefer to remove this, but currently we have motion components with + * display: contents in Framer. + */ + const { visualElement } = node.options; + if (visualElement && + visualElement.props.style && + visualElement.props.style.display === "contents") { + continue; + } + if (isSharedTransition && + node.options.layoutScroll && + node.scroll && + node !== node.root) { + translateAxis(box.x, -node.scroll.offset.x); + translateAxis(box.y, -node.scroll.offset.y); + } + if (delta) { + // Incorporate each ancestor's scale into a cumulative treeScale for this component + treeScale.x *= delta.x.scale; + treeScale.y *= delta.y.scale; + // Apply each ancestor's calculated delta into this component's recorded layout box + applyBoxDelta(box, delta); + } + if (isSharedTransition && hasTransform(node.latestValues)) { + transformBox(box, node.latestValues, node.layout?.layoutBox); + } + } + /** + * Snap tree scale back to 1 if it's within a non-perceivable threshold. + * This will help reduce useless scales getting rendered. + */ + if (treeScale.x < TREE_SCALE_SNAP_MAX && + treeScale.x > TREE_SCALE_SNAP_MIN) { + treeScale.x = 1.0; + } + if (treeScale.y < TREE_SCALE_SNAP_MAX && + treeScale.y > TREE_SCALE_SNAP_MIN) { + treeScale.y = 1.0; + } +} +function translateAxis(axis, distance) { + axis.min += distance; + axis.max += distance; +} +/** + * Apply a transform to an axis from the latest resolved motion values. + * This function basically acts as a bridge between a flat motion value map + * and applyAxisDelta + */ +function transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) { + const originPoint = mixNumber(axis.min, axis.max, axisOrigin); + // Apply the axis delta to the final axis + applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale); +} +function resolveAxisTranslate(value, axis) { + if (typeof value === "string") { + return (parseFloat(value) / 100) * (axis.max - axis.min); + } + return value; +} +/** + * Apply a transform to a box from the latest resolved motion values. + */ +function transformBox(box, transform, sourceBox) { + const resolveBox = sourceBox ?? box; + transformAxis(box.x, resolveAxisTranslate(transform.x, resolveBox.x), transform.scaleX, transform.scale, transform.originX); + transformAxis(box.y, resolveAxisTranslate(transform.y, resolveBox.y), transform.scaleY, transform.scale, transform.originY); +} + +export { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis }; +//# sourceMappingURL=delta-apply.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs new file mode 100644 index 0000000..39e0f7b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.mjs @@ -0,0 +1,59 @@ +import { mixNumber } from '../../utils/mix/number.mjs'; + +const SCALE_PRECISION = 0.0001; +const SCALE_MIN = 1 - SCALE_PRECISION; +const SCALE_MAX = 1 + SCALE_PRECISION; +const TRANSLATE_PRECISION = 0.01; +const TRANSLATE_MIN = 0 - TRANSLATE_PRECISION; +const TRANSLATE_MAX = 0 + TRANSLATE_PRECISION; +function calcLength(axis) { + return axis.max - axis.min; +} +function isNear(value, target, maxDistance) { + return Math.abs(value - target) <= maxDistance; +} +function calcAxisDelta(delta, source, target, origin = 0.5) { + delta.origin = origin; + delta.originPoint = mixNumber(source.min, source.max, delta.origin); + delta.scale = calcLength(target) / calcLength(source); + delta.translate = + mixNumber(target.min, target.max, delta.origin) - delta.originPoint; + if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) || + isNaN(delta.scale)) { + delta.scale = 1.0; + } + if ((delta.translate >= TRANSLATE_MIN && + delta.translate <= TRANSLATE_MAX) || + isNaN(delta.translate)) { + delta.translate = 0.0; + } +} +function calcBoxDelta(delta, source, target, origin) { + calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined); + calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined); +} +function calcRelativeAxis(target, relative, parent, anchor = 0) { + const anchorPoint = anchor + ? mixNumber(parent.min, parent.max, anchor) + : parent.min; + target.min = anchorPoint + relative.min; + target.max = target.min + calcLength(relative); +} +function calcRelativeBox(target, relative, parent, anchor) { + calcRelativeAxis(target.x, relative.x, parent.x, anchor?.x); + calcRelativeAxis(target.y, relative.y, parent.y, anchor?.y); +} +function calcRelativeAxisPosition(target, layout, parent, anchor = 0) { + const anchorPoint = anchor + ? mixNumber(parent.min, parent.max, anchor) + : parent.min; + target.min = layout.min - anchorPoint; + target.max = target.min + calcLength(layout); +} +function calcRelativePosition(target, layout, parent, anchor) { + calcRelativeAxisPosition(target.x, layout.x, parent.x, anchor?.x); + calcRelativeAxisPosition(target.y, layout.y, parent.y, anchor?.y); +} + +export { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear }; +//# sourceMappingURL=delta-calc.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs new file mode 100644 index 0000000..59915ad --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs @@ -0,0 +1,55 @@ +import { mixNumber } from '../../utils/mix/number.mjs'; +import { percent } from '../../value/types/numbers/units.mjs'; +import { scalePoint } from './delta-apply.mjs'; + +/** + * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse + */ +function removePointDelta(point, translate, scale, originPoint, boxScale) { + point -= translate; + point = scalePoint(point, 1 / scale, originPoint); + if (boxScale !== undefined) { + point = scalePoint(point, 1 / boxScale, originPoint); + } + return point; +} +/** + * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse + */ +function removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) { + if (percent.test(translate)) { + translate = parseFloat(translate); + const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100); + translate = relativeProgress - sourceAxis.min; + } + if (typeof translate !== "number") + return; + let originPoint = mixNumber(originAxis.min, originAxis.max, origin); + if (axis === originAxis) + originPoint -= translate; + axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale); + axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale); +} +/** + * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse + * and acts as a bridge between motion values and removeAxisDelta + */ +function removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) { + removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis); +} +/** + * The names of the motion values we want to apply as translation, scale and origin. + */ +const xKeys = ["x", "scaleX", "originX"]; +const yKeys = ["y", "scaleY", "originY"]; +/** + * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse + * and acts as a bridge between motion values and removeAxisDelta + */ +function removeBoxTransforms(box, transforms, originBox, sourceBox) { + removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined); + removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined); +} + +export { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta }; +//# sourceMappingURL=delta-remove.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/models.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/models.mjs new file mode 100644 index 0000000..f6ca4f0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/models.mjs @@ -0,0 +1,18 @@ +const createAxisDelta = () => ({ + translate: 0, + scale: 1, + origin: 0, + originPoint: 0, +}); +const createDelta = () => ({ + x: createAxisDelta(), + y: createAxisDelta(), +}); +const createAxis = () => ({ min: 0, max: 0 }); +const createBox = () => ({ + x: createAxis(), + y: createAxis(), +}); + +export { createAxis, createAxisDelta, createBox, createDelta }; +//# sourceMappingURL=models.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/utils.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/utils.mjs new file mode 100644 index 0000000..807d96d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/geometry/utils.mjs @@ -0,0 +1,32 @@ +import { calcLength } from './delta-calc.mjs'; + +function isAxisDeltaZero(delta) { + return delta.translate === 0 && delta.scale === 1; +} +function isDeltaZero(delta) { + return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y); +} +function axisEquals(a, b) { + return a.min === b.min && a.max === b.max; +} +function boxEquals(a, b) { + return axisEquals(a.x, b.x) && axisEquals(a.y, b.y); +} +function axisEqualsRounded(a, b) { + return (Math.round(a.min) === Math.round(b.min) && + Math.round(a.max) === Math.round(b.max)); +} +function boxEqualsRounded(a, b) { + return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y); +} +function aspectRatio(box) { + return calcLength(box.x) / calcLength(box.y); +} +function axisDeltaEquals(a, b) { + return (a.translate === b.translate && + a.scale === b.scale && + a.originPoint === b.originPoint); +} + +export { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero }; +//# sourceMappingURL=utils.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.mjs new file mode 100644 index 0000000..e6755c8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.mjs @@ -0,0 +1,14 @@ +import { addDomEvent } from '../../events/add-dom-event.mjs'; +import { createProjectionNode } from './create-projection-node.mjs'; + +const DocumentProjectionNode = createProjectionNode({ + attachResizeListener: (ref, notify) => addDomEvent(ref, "resize", notify), + measureScroll: () => ({ + x: document.documentElement.scrollLeft || document.body?.scrollLeft || 0, + y: document.documentElement.scrollTop || document.body?.scrollTop || 0, + }), + checkIsScrollRoot: () => true, +}); + +export { DocumentProjectionNode }; +//# sourceMappingURL=DocumentProjectionNode.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs new file mode 100644 index 0000000..2fb7f4c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.mjs @@ -0,0 +1,28 @@ +import { createProjectionNode } from './create-projection-node.mjs'; +import { DocumentProjectionNode } from './DocumentProjectionNode.mjs'; + +const rootProjectionNode = { + current: undefined, +}; +const HTMLProjectionNode = createProjectionNode({ + measureScroll: (instance) => ({ + x: instance.scrollLeft, + y: instance.scrollTop, + }), + defaultParent: () => { + if (!rootProjectionNode.current) { + const documentNode = new DocumentProjectionNode({}); + documentNode.mount(window); + documentNode.setOptions({ layoutScroll: true }); + rootProjectionNode.current = documentNode; + } + return rootProjectionNode.current; + }, + resetTransform: (instance, value) => { + instance.style.transform = value !== undefined ? value : "none"; + }, + checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === "fixed"), +}); + +export { HTMLProjectionNode, rootProjectionNode }; +//# sourceMappingURL=HTMLProjectionNode.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs new file mode 100644 index 0000000..13a8738 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs @@ -0,0 +1,1773 @@ +import { SubscriptionManager, clamp, noop } from 'motion-utils'; +import { animateSingleValue } from '../../animation/animate/single-value.mjs'; +import { notifyLayoutAnimationStart } from '../../animation/utils/notify-inspector.mjs'; +import { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs'; +import { getValueTransition } from '../../animation/utils/get-value-transition.mjs'; +import { microtask } from '../../frameloop/microtask.mjs'; +import { time } from '../../frameloop/sync-time.mjs'; +import { scaleCorrectors } from '../styles/scale-correction.mjs'; +import { statsBuffer } from '../../stats/buffer.mjs'; +import { delay } from '../../utils/delay.mjs'; +import { isSVGElement } from '../../utils/is-svg-element.mjs'; +import { isSVGSVGElement } from '../../utils/is-svg-svg-element.mjs'; +import { mixNumber } from '../../utils/mix/number.mjs'; +import { motionValue } from '../../value/index.mjs'; +import { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs'; +import { mixValues } from '../animation/mix-values.mjs'; +import { transformGroups } from '../../animation/waapi/transforms/groups.mjs'; +import { copyBoxInto, copyAxisDeltaInto, copyAxisInto } from '../geometry/copy.mjs'; +import { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs'; +import { calcLength, calcRelativeBox, calcRelativePosition, calcBoxDelta, isNear } from '../geometry/delta-calc.mjs'; +import { removeBoxTransforms } from '../geometry/delta-remove.mjs'; +import { createBox, createDelta } from '../geometry/models.mjs'; +import { boxEqualsRounded, isDeltaZero, axisDeltaEquals, boxEquals, aspectRatio } from '../geometry/utils.mjs'; +import { NodeStack } from '../shared/stack.mjs'; +import { defaultScaleCorrectors } from '../styles/default-scale-correctors.mjs'; +import { buildProjectionTransform } from '../styles/transform.mjs'; +import { eachAxis } from '../utils/each-axis.mjs'; +import { FlatTree } from '../utils/flat-tree.mjs'; +import { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs'; +import { globalProjectionState } from './state.mjs'; +import { frame, cancelFrame, frameSteps } from '../../frameloop/frame.mjs'; +import { frameData } from '../../frameloop/frame-data.mjs'; + +/** + * Correctors registered via addScaleCorrector before projection loaded + * (e.g. with an async LazyMotion bundle) take precedence over the defaults. + */ +Object.assign(scaleCorrectors, { + ...defaultScaleCorrectors, + ...scaleCorrectors, +}); +const metrics = { + nodes: 0, + calculatedTargetDeltas: 0, + calculatedProjections: 0, +}; +const transformAxes = ["", "X", "Y", "Z"]; +/** + * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1 + * which has a noticeable difference in spring animations + */ +const animationTarget = 1000; +let id = 0; +function resetDistortingTransform(key, visualElement, values, sharedAnimationValues) { + const { latestValues } = visualElement; + // Record the distorting transform and then temporarily set it to 0 + if (latestValues[key]) { + values[key] = latestValues[key]; + visualElement.setStaticValue(key, 0); + if (sharedAnimationValues) { + sharedAnimationValues[key] = 0; + } + } +} +const demoteTransforms = ({ instance }) => instance && transformGroups.get(instance)?.demote(); +function cancelTreeOptimisedTransformAnimations(projectionNode) { + projectionNode.hasCheckedOptimisedAppear = true; + if (projectionNode.root === projectionNode) + return; + const { visualElement } = projectionNode.options; + if (!visualElement) + return; + const appearId = getOptimisedAppearId(visualElement); + if (window.MotionHasOptimisedAnimation(appearId, "transform")) { + const { layout, layoutId } = projectionNode.options; + window.MotionCancelOptimisedAnimation(appearId, "transform", frame, !(layout || layoutId)); + } + const { parent } = projectionNode; + if (parent && !parent.hasCheckedOptimisedAppear) { + cancelTreeOptimisedTransformAnimations(parent); + } +} +function createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) { + return class ProjectionNode { + constructor(latestValues = {}, parent = defaultParent?.()) { + /** + * A unique ID generated for every projection node. + */ + this.id = id++; + /** + * An id that represents a unique session instigated by startUpdate. + */ + this.animationId = 0; + this.animationCommitId = 0; + /** + * A Set containing all this component's children. This is used to iterate + * through the children. + * + * TODO: This could be faster to iterate as a flat array stored on the root node. + */ + this.children = new Set(); + /** + * Options for the node. We use this to configure what kind of layout animations + * we should perform (if any). + */ + this.options = {}; + /** + * We use this to detect when its safe to shut down part of a projection tree. + * We have to keep projecting children for scale correction and relative projection + * until all their parents stop performing layout animations. + */ + this.isTreeAnimating = false; + this.isAnimationBlocked = false; + /** + * Flag to true if we think this layout has been changed. We can't always know this, + * currently we set it to true every time a component renders, or if it has a layoutDependency + * if that has changed between renders. Additionally, components can be grouped by LayoutGroup + * and if one node is dirtied, they all are. + */ + this.isLayoutDirty = false; + /** + * Flag to true if we think the projection calculations for this node needs + * recalculating as a result of an updated transform or layout animation. + */ + this.isProjectionDirty = false; + /** + * Flag to true if the layout *or* transform has changed. This then gets propagated + * throughout the projection tree, forcing any element below to recalculate on the next frame. + */ + this.isSharedProjectionDirty = false; + /** + * Flag transform dirty. This gets propagated throughout the whole tree but is only + * respected by shared nodes. + */ + this.isTransformDirty = false; + /** + * Block layout updates for instant layout transitions throughout the tree. + */ + this.updateManuallyBlocked = false; + this.updateBlockedByResize = false; + /** + * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate` + * call. + */ + this.isUpdating = false; + /** + * If this is an SVG element we currently disable projection transforms + */ + this.isSVG = false; + /** + * Flag to true (during promotion) if a node doing an instant layout transition needs to reset + * its projection styles. + */ + this.needsReset = false; + /** + * Flags whether this node should have its transform reset prior to measuring. + */ + this.shouldResetTransform = false; + /** + * Store whether this node has been checked for optimised appear animations. As + * effects fire bottom-up, and we want to look up the tree for appear animations, + * this makes sure we only check each path once, stopping at nodes that + * have already been checked. + */ + this.hasCheckedOptimisedAppear = false; + /** + * An object representing the calculated contextual/accumulated/tree scale. + * This will be used to scale calculated projection transforms, as these are + * calculated in screen-space but need to be scaled for elements to visually + * make it to their calculated destinations. + * + * TODO: Lazy-init + */ + this.treeScale = { x: 1, y: 1 }; + /** + * + */ + this.eventHandlers = new Map(); + this.hasTreeAnimated = false; + // Note: Currently only running on root node + this.updateScheduled = false; + this.scheduleUpdate = () => this.update(); + this.projectionUpdateScheduled = false; + this.checkUpdateFailed = () => { + if (this.isUpdating) { + this.isUpdating = false; + this.clearAllSnapshots(); + } + }; + /** + * This is a multi-step process as shared nodes might be of different depths. Nodes + * are sorted by depth order, so we need to resolve the entire tree before moving to + * the next step. + */ + this.updateProjection = () => { + this.projectionUpdateScheduled = false; + /** + * Reset debug counts. Manually resetting rather than creating a new + * object each frame. + */ + if (statsBuffer.value) { + metrics.nodes = + metrics.calculatedTargetDeltas = + metrics.calculatedProjections = + 0; + } + this.nodes.forEach(propagateDirtyNodes); + this.nodes.forEach(resolveTargetDelta); + this.nodes.forEach(calcProjection); + this.nodes.forEach(cleanDirtyNodes); + if (statsBuffer.addProjectionMetrics) { + statsBuffer.addProjectionMetrics(metrics); + } + }; + /** + * Frame calculations + */ + this.resolvedRelativeTargetAt = 0.0; + this.hasProjected = false; + this.isVisible = true; + this.animationProgress = 0; + /** + * Shared layout + */ + // TODO Only running on root node + this.sharedNodes = new Map(); + this.latestValues = latestValues; + this.root = parent ? parent.root || parent : this; + this.path = parent ? [...parent.path, parent] : []; + this.parent = parent; + this.depth = parent ? parent.depth + 1 : 0; + for (let i = 0; i < this.path.length; i++) { + this.path[i].shouldResetTransform = true; + } + if (this.root === this) + this.nodes = new FlatTree(); + } + addEventListener(name, handler) { + if (!this.eventHandlers.has(name)) { + this.eventHandlers.set(name, new SubscriptionManager()); + } + return this.eventHandlers.get(name).add(handler); + } + notifyListeners(name, ...args) { + const subscriptionManager = this.eventHandlers.get(name); + subscriptionManager && subscriptionManager.notify(...args); + } + hasListeners(name) { + return this.eventHandlers.has(name); + } + /** + * Lifecycles + */ + mount(instance) { + if (this.instance) + return; + this.isSVG = isSVGElement(instance) && !isSVGSVGElement(instance); + this.instance = instance; + const { layoutId, layout, visualElement } = this.options; + if (visualElement && !visualElement.current) { + visualElement.mount(instance); + } + this.root.nodes.add(this); + this.parent && this.parent.children.add(this); + if (this.root.hasTreeAnimated && (layout || layoutId)) { + this.isLayoutDirty = true; + } + if (attachResizeListener) { + let cancelDelay; + let innerWidth = 0; + const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false); + // Set initial innerWidth in a frame.read callback to batch the read + frame.read(() => { + innerWidth = window.innerWidth; + }); + attachResizeListener(instance, () => { + const newInnerWidth = window.innerWidth; + if (newInnerWidth === innerWidth) + return; + innerWidth = newInnerWidth; + this.root.updateBlockedByResize = true; + cancelDelay && cancelDelay(); + cancelDelay = delay(resizeUnblockUpdate, 250); + if (globalProjectionState.hasAnimatedSinceResize) { + globalProjectionState.hasAnimatedSinceResize = false; + this.nodes.forEach(finishAnimation); + } + }); + } + if (layoutId) { + this.root.registerSharedNode(layoutId, this); + } + this.addLayoutListener(); + } + /** + * Only register the layout animation handler if this node requires + * layout animation. This is called on mount, and again whenever options + * change, as `layout` or `layoutId` may be enabled after mount. + */ + addLayoutListener() { + const { layoutId, layout, visualElement, animate } = this.options; + if (!this.instance || + this.hasLayoutListener || + animate === false || + !visualElement || + !(layoutId || layout)) + return; + this.hasLayoutListener = true; + this.addEventListener("didUpdate", ({ delta, hasLayoutChanged, hasRelativeLayoutChanged, layout: newLayout, }) => { + if (this.isAnimationBlocked) { + this.target = undefined; + this.relativeTarget = undefined; + return; + } + // TODO: Check here if an animation exists + const layoutTransition = this.options.transition || + visualElement.getDefaultTransition() || + defaultLayoutTransition; + const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps(); + /** + * The target layout of the element might stay the same, + * but its position relative to its parent has changed. + */ + const hasTargetChanged = !this.targetLayout || + !boxEqualsRounded(this.targetLayout, newLayout); + /* + * Note: Disabled to fix relative animations always triggering new + * layout animations. If this causes further issues, we can try + * a different approach to detecting relative target changes. + */ + // || hasRelativeLayoutChanged + /** + * If the layout hasn't seemed to have changed, it might be that the + * element is visually in the same place in the document but its position + * relative to its parent has indeed changed. So here we check for that. + */ + const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeLayoutChanged; + if (this.options.layoutRoot || + this.resumeFrom || + hasOnlyRelativeTargetChanged || + (hasLayoutChanged && + (hasTargetChanged || !this.currentAnimation))) { + if (this.resumeFrom) { + this.resumingFrom = this.resumeFrom; + this.resumingFrom.resumingFrom = undefined; + } + const animationOptions = { + ...getValueTransition(layoutTransition, "layout"), + onPlay: onLayoutAnimationStart, + onComplete: onLayoutAnimationComplete, + }; + if (visualElement.shouldReduceMotion || + this.options.layoutRoot) { + animationOptions.delay = 0; + animationOptions.type = false; + } + this.startAnimation(animationOptions); + /** + * Set animation origin after starting animation to avoid layout jump + * caused by stopping previous layout animation + */ + this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged, animationOptions.path); + } + else { + /** + * If the layout hasn't changed and we have an animation that hasn't started yet, + * finish it immediately. Otherwise it will be animating from a location + * that was probably never committed to screen and look like a jumpy box. + */ + if (!hasLayoutChanged) { + finishAnimation(this); + } + if (this.isLead() && this.options.onExitComplete) { + this.options.onExitComplete(); + } + } + this.targetLayout = newLayout; + }); + } + unmount() { + this.options.layoutId && this.willUpdate(); + this.root.nodes.remove(this); + const stack = this.getStack(); + stack && stack.remove(this); + this.parent && this.parent.children.delete(this); + this.instance = undefined; + this.eventHandlers.clear(); + this.hasLayoutListener = false; + cancelFrame(this.updateProjection); + } + // only on the root + blockUpdate() { + this.updateManuallyBlocked = true; + } + unblockUpdate() { + this.updateManuallyBlocked = false; + } + isUpdateBlocked() { + return this.updateManuallyBlocked || this.updateBlockedByResize; + } + // Note: currently only running on root node + startUpdate() { + if (this.isUpdateBlocked()) + return; + this.isUpdating = true; + this.nodes && this.nodes.forEach(resetSkewAndRotation); + this.animationId++; + } + getTransformTemplate() { + const { visualElement } = this.options; + return visualElement && visualElement.getProps().transformTemplate; + } + willUpdate(shouldNotifyListeners = true) { + this.root.hasTreeAnimated = true; + if (this.root.isUpdateBlocked()) { + this.options.onExitComplete && this.options.onExitComplete(); + return; + } + /** + * If we're running optimised appear animations then these must be + * cancelled before measuring the DOM. This is so we can measure + * the true layout of the element rather than the WAAPI animation + * which will be unaffected by the resetSkewAndRotate step. + * + * Note: This is a DOM write. Worst case scenario is this is sandwiched + * between other snapshot reads which will cause unnecessary style recalculations. + * This has to happen here though, as we don't yet know which nodes will need + * snapshots in startUpdate(), but we only want to cancel optimised animations + * if a layout animation measurement is actually going to be affected by them. + */ + if (window.MotionCancelOptimisedAnimation && + !this.hasCheckedOptimisedAppear) { + cancelTreeOptimisedTransformAnimations(this); + } + !this.root.isUpdating && this.root.startUpdate(); + if (this.isLayoutDirty) + return; + /** + * Accelerated transforms aren't reflected in latestValues or + * removed by resetTransform, so move them back to the main + * thread before this node, or its ancestors, are measured. + */ + demoteTransforms(this); + this.isLayoutDirty = true; + for (let i = 0; i < this.path.length; i++) { + const node = this.path[i]; + node.shouldResetTransform = true; + demoteTransforms(node); + /** + * Percentage translates resolve against layoutBox dimensions, + * so ancestors with them must be re-measured after transform reset. + */ + if (typeof node.latestValues.x === "string" || + typeof node.latestValues.y === "string") { + node.isLayoutDirty = true; + } + node.updateScroll("snapshot"); + if (node.options.layoutRoot) { + node.willUpdate(false); + } + /** + * Measure the nearest dragged ancestor before the DOM + * changes, so this node can follow its layout change. + */ + if (node.isAnimationBlocked) { + node.dragSnapshot || (node.dragSnapshot = node.measure()); + this.dragAncestor = node; + } + } + const { layoutId, layout } = this.options; + if (layoutId === undefined && !layout) + return; + const transformTemplate = this.getTransformTemplate(); + this.prevTransformTemplateValue = transformTemplate + ? transformTemplate(this.latestValues, "") + : undefined; + this.updateSnapshot(); + shouldNotifyListeners && this.notifyListeners("willUpdate"); + } + update() { + this.updateScheduled = false; + const updateWasBlocked = this.isUpdateBlocked(); + // When doing an instant transition, we skip the layout update, + // but should still clean up the measurements so that the next + // snapshot could be taken correctly. + if (updateWasBlocked) { + const wasBlockedByResize = this.updateBlockedByResize; + this.unblockUpdate(); + this.updateBlockedByResize = false; + this.clearAllSnapshots(); + /** + * When blocked by resize, still measure layouts so + * callbacks like onLayoutMeasure fire (e.g. Reorder). + * Skip notifyLayoutUpdate to prevent animations. + */ + if (wasBlockedByResize) { + this.nodes.forEach(forceLayoutMeasure); + } + this.nodes.forEach(clearMeasurements); + return; + } + /** + * If this is a repeat of didUpdate then ignore the animation. + */ + if (this.animationId <= this.animationCommitId) { + this.nodes.forEach(clearIsLayoutDirty); + return; + } + this.animationCommitId = this.animationId; + if (!this.isUpdating) { + this.nodes.forEach(clearIsLayoutDirty); + } + else { + this.isUpdating = false; + /** + * Ensure animation-blocked nodes (e.g. during drag) + * get measured even when memoized (willUpdate skipped). + */ + this.nodes.forEach(ensureDraggedNodesSnapshotted); + this.nodes.forEach(syncRelativeLayout); + /** + * Write + */ + this.nodes.forEach(resetTransformStyle); + /** + * Read ================== + */ + // Update layout measurements of updated children + this.nodes.forEach(updateLayout); + /** + * Write + */ + // Notify listeners that the layout is updated + this.nodes.forEach(notifyLayoutUpdate); + } + this.clearAllSnapshots(); + /** + * Manually flush any pending updates. Ideally + * we could leave this to the following requestAnimationFrame but this seems + * to leave a flash of incorrectly styled content. + */ + const now = time.now(); + frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp); + frameData.timestamp = now; + frameData.isProcessing = true; + frameSteps.update.process(frameData); + frameSteps.preRender.process(frameData); + frameSteps.render.process(frameData); + frameData.isProcessing = false; + } + didUpdate() { + if (!this.updateScheduled) { + this.updateScheduled = true; + microtask.read(this.scheduleUpdate); + } + } + clearAllSnapshots() { + this.nodes.forEach(clearSnapshot); + /** + * A stack's last member can unmount while a replacement with the + * same layoutId mounts in the same commit, so the stack (and its + * lead) must outlive the unmount for the replacement to resume + * from it. By now that handoff has happened, so stacks that are + * still empty only retain unmounted nodes and can be released. + */ + this.sharedNodes.forEach((stack, layoutId) => stack.members.length + ? stack.removeLeadSnapshot() + : this.sharedNodes.delete(layoutId)); + } + scheduleUpdateProjection() { + if (!this.projectionUpdateScheduled) { + this.projectionUpdateScheduled = true; + frame.preRender(this.updateProjection, false, true); + } + } + scheduleCheckAfterUnmount() { + /** + * If the unmounting node is in a layoutGroup and did trigger a willUpdate, + * we manually call didUpdate to give a chance to the siblings to animate. + * Otherwise, cleanup all snapshots to prevents future nodes from reusing them. + */ + frame.postRender(() => { + if (this.isLayoutDirty) { + this.root.didUpdate(); + } + else { + this.root.checkUpdateFailed(); + } + }); + } + /** + * Update measurements + */ + updateSnapshot() { + if (this.snapshot || !this.instance) + return; + this.snapshot = this.measure(); + if (this.snapshot && + !calcLength(this.snapshot.measuredBox.x) && + !calcLength(this.snapshot.measuredBox.y)) { + this.snapshot = undefined; + } + } + updateLayout() { + if (!this.instance) + return; + this.updateScroll(); + if (!(this.options.alwaysMeasureLayout && this.isLead()) && + !this.isLayoutDirty) { + return; + } + /** + * When a node is mounted, it simply resumes from the prevLead's + * snapshot instead of taking a new one, but the ancestors scroll + * might have updated while the prevLead is unmounted. We need to + * update the scroll again to make sure the layout we measure is + * up to date. + */ + if (this.resumeFrom && !this.resumeFrom.instance) { + for (let i = 0; i < this.path.length; i++) { + const node = this.path[i]; + node.updateScroll(); + } + } + const prevLayout = this.layout; + this.layout = this.measure(false); + if (!this.layoutCorrected) + this.layoutCorrected = createBox(); + this.isLayoutDirty = false; + this.projectionDelta = undefined; + this.notifyListeners("measure", this.layout.layoutBox); + const { visualElement } = this.options; + visualElement && + visualElement.notify("LayoutMeasure", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined); + } + updateScroll(phase = "measure") { + let needsMeasurement = Boolean(this.options.layoutScroll && this.instance); + if (this.scroll && + this.scroll.animationId === this.root.animationId && + this.scroll.phase === phase) { + needsMeasurement = false; + } + if (needsMeasurement && this.instance) { + const isRoot = checkIsScrollRoot(this.instance); + this.scroll = { + animationId: this.root.animationId, + phase, + isRoot, + offset: measureScroll(this.instance), + wasRoot: this.scroll ? this.scroll.isRoot : isRoot, + }; + } + } + resetTransform() { + if (!resetTransform) + return; + const isResetRequested = this.isLayoutDirty || + this.shouldResetTransform || + this.options.alwaysMeasureLayout; + isResetRequested && demoteTransforms(this); + const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta); + const transformTemplate = this.getTransformTemplate(); + const transformTemplateValue = transformTemplate + ? transformTemplate(this.latestValues, "") + : undefined; + const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue; + if (isResetRequested && + this.instance && + (hasProjection || + hasTransform(this.latestValues) || + transformTemplateHasChanged)) { + resetTransform(this.instance, transformTemplateValue); + this.shouldResetTransform = false; + this.scheduleRender(); + } + } + measure(removeTransform = true) { + const pageBox = this.measurePageBox(); + let layoutBox = this.removeElementScroll(pageBox); + /** + * Measurements taken during the pre-render stage + * still have transforms applied so we remove them + * via calculation. + */ + if (removeTransform) { + layoutBox = this.removeTransform(layoutBox); + } + roundBox(layoutBox); + return { + animationId: this.root.animationId, + measuredBox: pageBox, + layoutBox, + latestValues: {}, + source: this.id, + }; + } + measurePageBox() { + const { visualElement } = this.options; + if (!visualElement) + return createBox(); + const box = visualElement.measureViewportBox(); + const wasInScrollRoot = this.scroll?.wasRoot || this.path.some(checkNodeWasScrollRoot); + if (!wasInScrollRoot) { + // Remove viewport scroll to give page-relative coordinates + const { scroll } = this.root; + if (scroll) { + translateAxis(box.x, scroll.offset.x); + translateAxis(box.y, scroll.offset.y); + } + } + return box; + } + removeElementScroll(box) { + const boxWithoutScroll = createBox(); + copyBoxInto(boxWithoutScroll, box); + if (this.scroll?.wasRoot) { + return boxWithoutScroll; + } + /** + * Performance TODO: Keep a cumulative scroll offset down the tree + * rather than loop back up the path. + */ + for (let i = 0; i < this.path.length; i++) { + const node = this.path[i]; + const { scroll, options } = node; + if (node !== this.root && scroll && options.layoutScroll) { + /** + * If this is a new scroll root, we want to remove all previous scrolls + * from the viewport box. + */ + if (scroll.wasRoot) { + copyBoxInto(boxWithoutScroll, box); + } + translateAxis(boxWithoutScroll.x, scroll.offset.x); + translateAxis(boxWithoutScroll.y, scroll.offset.y); + } + } + return boxWithoutScroll; + } + applyTransform(box, transformOnly = false, output) { + const withTransforms = output || createBox(); + copyBoxInto(withTransforms, box); + for (let i = 0; i < this.path.length; i++) { + const node = this.path[i]; + if (!transformOnly && + node.options.layoutScroll && + node.scroll && + node !== node.root) { + translateAxis(withTransforms.x, -node.scroll.offset.x); + translateAxis(withTransforms.y, -node.scroll.offset.y); + } + if (!hasTransform(node.latestValues)) + continue; + transformBox(withTransforms, node.latestValues, node.layout?.layoutBox); + } + if (hasTransform(this.latestValues)) { + transformBox(withTransforms, this.latestValues, this.layout?.layoutBox); + } + return withTransforms; + } + removeTransform(box) { + const boxWithoutTransform = createBox(); + copyBoxInto(boxWithoutTransform, box); + for (let i = 0; i < this.path.length; i++) { + const node = this.path[i]; + if (!hasTransform(node.latestValues)) + continue; + let sourceBox; + if (node.instance) { + hasScale(node.latestValues) && node.updateSnapshot(); + sourceBox = createBox(); + copyBoxInto(sourceBox, node.measurePageBox()); + } + removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot?.layoutBox, sourceBox); + } + if (hasTransform(this.latestValues)) { + removeBoxTransforms(boxWithoutTransform, this.latestValues); + } + return boxWithoutTransform; + } + setTargetDelta(delta) { + this.targetDelta = delta; + this.root.scheduleUpdateProjection(); + this.isProjectionDirty = true; + } + setOptions(options) { + this.options = { + ...this.options, + ...options, + crossfade: options.crossfade !== undefined ? options.crossfade : true, + }; + this.addLayoutListener(); + } + clearMeasurements() { + this.scroll = undefined; + this.layout = undefined; + this.snapshot = undefined; + this.prevTransformTemplateValue = undefined; + this.targetDelta = undefined; + this.target = undefined; + this.isLayoutDirty = false; + } + forceRelativeParentToResolveTarget() { + if (!this.relativeParent) + return; + /** + * If the parent target isn't up-to-date, force it to update. + * This is an unfortunate de-optimisation as it means any updating relative + * projection will cause all the relative parents to recalculate back + * up the tree. + */ + if (this.relativeParent.resolvedRelativeTargetAt !== + frameData.timestamp) { + this.relativeParent.resolveTargetDelta(true); + } + } + resolveTargetDelta(forceRecalculation = false) { + /** + * Once the dirty status of nodes has been spread through the tree, we also + * need to check if we have a shared node of a different depth that has itself + * been dirtied. + */ + const lead = this.getLead(); + this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty); + this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty); + this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty); + const isShared = Boolean(this.resumingFrom) || this !== lead; + /** + * We don't use transform for this step of processing so we don't + * need to check whether any nodes have changed transform. + */ + const canSkip = !(forceRecalculation || + (isShared && this.isSharedProjectionDirty) || + this.isProjectionDirty || + this.parent?.isProjectionDirty || + this.attemptToResolveRelativeTarget || + this.root.updateBlockedByResize); + if (canSkip) + return; + const { layout, layoutId } = this.options; + /** + * If we have no layout, we can't perform projection, so early return + */ + if (!this.layout || !(layout || layoutId)) + return; + this.resolvedRelativeTargetAt = frameData.timestamp; + const relativeParent = this.getClosestProjectingParent(); + /** + * If we don't have a targetDelta but do have a layout, we can attempt to resolve + * a relativeParent. This will allow a component to perform scale correction + * even if no animation has started. + */ + if (!this.targetDelta && !this.relativeTarget) { + if (this.options.layoutAnchor !== false && + relativeParent && + relativeParent.layout) { + this.createRelativeTarget(relativeParent, this.layout.layoutBox, relativeParent.layout.layoutBox); + } + else { + this.removeRelativeTarget(); + } + } + /** + * If we have no relative target or no target delta our target isn't valid + * for this frame. + */ + if (!this.relativeTarget && !this.targetDelta) + return; + /** + * Lazy-init target data structure + */ + if (!this.target) { + this.target = createBox(); + this.targetWithTransforms = createBox(); + } + /** + * If we've got a relative box for this component, resolve it into a target relative to the parent. + */ + if (this.relativeTarget && + this.relativeTargetOrigin && + this.relativeParent && + this.relativeParent.target) { + this.forceRelativeParentToResolveTarget(); + calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target, this.options.layoutAnchor || undefined); + /** + * If we've only got a targetDelta, resolve it into a target + */ + } + else if (this.targetDelta) { + if (Boolean(this.resumingFrom)) { + this.applyTransform(this.layout.layoutBox, false, this.target); + } + else { + copyBoxInto(this.target, this.layout.layoutBox); + } + applyBoxDelta(this.target, this.targetDelta); + } + else { + /** + * If no target, use own layout as target + */ + copyBoxInto(this.target, this.layout.layoutBox); + } + /** + * If we've been told to attempt to resolve a relative target, do so. + */ + if (this.attemptToResolveRelativeTarget) { + this.attemptToResolveRelativeTarget = false; + if (this.options.layoutAnchor !== false && + relativeParent && + Boolean(relativeParent.resumingFrom) === + Boolean(this.resumingFrom) && + !relativeParent.options.layoutScroll && + relativeParent.target && + this.animationProgress !== 1) { + this.createRelativeTarget(relativeParent, this.target, relativeParent.target); + } + else { + this.relativeParent = this.relativeTarget = undefined; + } + } + /** + * Increase debug counter for resolved target deltas + */ + if (statsBuffer.value) { + metrics.calculatedTargetDeltas++; + } + } + getClosestProjectingParent() { + if (!this.parent || + hasScale(this.parent.latestValues) || + has2DTranslate(this.parent.latestValues)) { + return undefined; + } + if (this.parent.isProjecting()) { + return this.parent; + } + else { + return this.parent.getClosestProjectingParent(); + } + } + isProjecting() { + return Boolean((this.relativeTarget || + this.targetDelta || + this.options.layoutRoot) && + this.layout); + } + createRelativeTarget(relativeParent, layout, parentLayout) { + this.relativeParent = relativeParent; + this.forceRelativeParentToResolveTarget(); + this.relativeTarget = createBox(); + this.relativeTargetOrigin = createBox(); + calcRelativePosition(this.relativeTargetOrigin, layout, parentLayout, this.options.layoutAnchor || undefined); + copyBoxInto(this.relativeTarget, this.relativeTargetOrigin); + } + removeRelativeTarget() { + this.relativeParent = this.relativeTarget = undefined; + } + calcProjection() { + const lead = this.getLead(); + const isShared = Boolean(this.resumingFrom) || this !== lead; + let canSkip = true; + /** + * If this is a normal layout animation and neither this node nor its nearest projecting + * is dirty then we can't skip. + */ + if (this.isProjectionDirty || this.parent?.isProjectionDirty) { + canSkip = false; + } + /** + * If this is a shared layout animation and this node's shared projection is dirty then + * we can't skip. + */ + if (isShared && + (this.isSharedProjectionDirty || this.isTransformDirty)) { + canSkip = false; + } + /** + * If we have resolved the target this frame we must recalculate the + * projection to ensure it visually represents the internal calculations. + */ + if (this.resolvedRelativeTargetAt === frameData.timestamp) { + canSkip = false; + } + if (canSkip) + return; + const { layout, layoutId } = this.options; + /** + * If this section of the tree isn't animating we can + * delete our target sources for the following frame. + */ + this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) || + this.currentAnimation || + this.pendingAnimation); + if (!this.isTreeAnimating) { + this.targetDelta = this.relativeTarget = undefined; + } + if (!this.layout || !(layout || layoutId)) + return; + /** + * Reset the corrected box with the latest values from box, as we're then going + * to perform mutative operations on it. + */ + copyBoxInto(this.layoutCorrected, this.layout.layoutBox); + /** + * Record previous tree scales before updating. + */ + const prevTreeScaleX = this.treeScale.x; + const prevTreeScaleY = this.treeScale.y; + /** + * Apply all the parent deltas to this box to produce the corrected box. This + * is the layout box, as it will appear on screen as a result of the transforms of its parents. + */ + applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared); + /** + * If this layer needs to perform scale correction but doesn't have a target, + * use the layout as the target. + */ + if (lead.layout && + !lead.target && + (this.treeScale.x !== 1 || this.treeScale.y !== 1)) { + lead.target = lead.layout.layoutBox; + lead.targetWithTransforms = createBox(); + } + const { target } = lead; + if (!target) { + /** + * If we don't have a target to project into, but we were previously + * projecting, we want to remove the stored transform and schedule + * a render to ensure the elements reflect the removed transform. + */ + if (this.prevProjectionDelta) { + this.createProjectionDeltas(); + this.scheduleRender(); + } + return; + } + if (!this.projectionDelta || !this.prevProjectionDelta) { + this.createProjectionDeltas(); + } + else { + copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x); + copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y); + } + /** + * Update the delta between the corrected box and the target box before user-set transforms were applied. + * This will allow us to calculate the corrected borderRadius and boxShadow to compensate + * for our layout reprojection, but still allow them to be scaled correctly by the user. + * It might be that to simplify this we may want to accept that user-set scale is also corrected + * and we wouldn't have to keep and calc both deltas, OR we could support a user setting + * to allow people to choose whether these styles are corrected based on just the + * layout reprojection or the final bounding box. + */ + calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues); + if (this.treeScale.x !== prevTreeScaleX || + this.treeScale.y !== prevTreeScaleY || + !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) || + !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) { + this.hasProjected = true; + this.scheduleRender(); + this.notifyListeners("projectionUpdate", target); + } + /** + * Increase debug counter for recalculated projections + */ + if (statsBuffer.value) { + metrics.calculatedProjections++; + } + } + hide() { + this.isVisible = false; + // TODO: Schedule render + } + show() { + this.isVisible = true; + // TODO: Schedule render + } + scheduleRender(notifyAll = true) { + this.options.visualElement?.scheduleRender(); + if (notifyAll) { + const stack = this.getStack(); + stack && stack.scheduleRender(); + } + if (this.resumingFrom && !this.resumingFrom.instance) { + this.resumingFrom = undefined; + } + } + createProjectionDeltas() { + this.prevProjectionDelta = createDelta(); + this.projectionDelta = createDelta(); + this.projectionDeltaWithTransform = createDelta(); + } + setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false, pathFn) { + const snapshot = this.snapshot; + const snapshotLatestValues = snapshot ? snapshot.latestValues : {}; + const mixedValues = { ...this.latestValues }; + const targetDelta = createDelta(); + if (!this.relativeParent || + !this.relativeParent.options.layoutRoot) { + this.relativeTarget = this.relativeTargetOrigin = undefined; + } + this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged; + const relativeLayout = createBox(); + const snapshotSource = snapshot ? snapshot.source : undefined; + const layoutSource = this.layout ? this.layout.source : undefined; + const isSharedLayoutAnimation = snapshotSource !== layoutSource; + const stack = this.getStack(); + const isOnlyMember = !stack || stack.members.length <= 1; + const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && + !isOnlyMember && + this.options.crossfade === true && + !this.path.some(hasOpacityCrossfade)); + this.animationProgress = 0; + let prevRelativeTarget; + // The path decides whether the layout shift is worth curving + // (distance floor) and resolves the interpolator from the delta. + const interpolate = pathFn?.interpolateProjection(delta); + this.mixTargetDelta = (latest) => { + const progress = latest / 1000; + const point = interpolate?.(progress); + if (point) { + targetDelta.x.translate = point.x; + targetDelta.x.scale = mixNumber(delta.x.scale, 1, progress); + targetDelta.x.origin = delta.x.origin; + targetDelta.x.originPoint = delta.x.originPoint; + targetDelta.y.translate = point.y; + targetDelta.y.scale = mixNumber(delta.y.scale, 1, progress); + targetDelta.y.origin = delta.y.origin; + targetDelta.y.originPoint = delta.y.originPoint; + } + else { + mixAxisDeltaLinear(targetDelta.x, delta.x, progress); + mixAxisDeltaLinear(targetDelta.y, delta.y, progress); + } + this.setTargetDelta(targetDelta); + if (this.relativeTarget && + this.relativeTargetOrigin && + this.layout && + this.relativeParent && + this.relativeParent.layout) { + calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox, this.options.layoutAnchor || undefined); + mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress); + /** + * If this is an unchanged relative target we can consider the + * projection not dirty. + */ + if (prevRelativeTarget && + boxEquals(this.relativeTarget, prevRelativeTarget)) { + this.isProjectionDirty = false; + } + if (!prevRelativeTarget) + prevRelativeTarget = createBox(); + copyBoxInto(prevRelativeTarget, this.relativeTarget); + } + if (isSharedLayoutAnimation) { + this.animationValues = mixedValues; + mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember); + } + if (point && point.rotate !== undefined) { + // Dedicated `pathRotation` channel, not `rotate`, so an + // animating `rotate` is composed with, never clobbered. + if (!this.animationValues) + this.animationValues = mixedValues; + this.animationValues.pathRotation = point.rotate; + } + this.root.scheduleUpdateProjection(); + this.scheduleRender(); + this.animationProgress = progress; + }; + this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0); + } + startAnimation(options) { + this.notifyListeners("animationStart"); + this.currentAnimation?.stop(); + this.resumingFrom?.currentAnimation?.stop(); + if (this.pendingAnimation) { + cancelFrame(this.pendingAnimation); + this.pendingAnimation = undefined; + } + /** + * Start the animation in the next frame to have a frame with progress 0, + * where the target is the same as when the animation started, so we can + * calculate the relative positions correctly for instant transitions. + */ + this.pendingAnimation = frame.update(() => { + globalProjectionState.hasAnimatedSinceResize = true; + this.motionValue || (this.motionValue = motionValue(0)); + this.motionValue.jump(0, false); + this.currentAnimation = animateSingleValue(this.motionValue, [0, 1000], { + ...options, + velocity: 0, + isSync: true, + onUpdate: (latest) => { + this.mixTargetDelta(latest); + options.onUpdate && options.onUpdate(latest); + }, + onComplete: () => { + options.onComplete && options.onComplete(); + this.completeAnimation(); + }, + }); + notifyLayoutAnimationStart(this.currentAnimation, this); + if (this.resumingFrom) { + this.resumingFrom.currentAnimation = this.currentAnimation; + } + this.pendingAnimation = undefined; + }); + } + completeAnimation() { + if (this.resumingFrom) { + this.resumingFrom.currentAnimation = undefined; + this.resumingFrom.preserveOpacity = undefined; + } + const stack = this.getStack(); + stack && stack.exitAnimationComplete(); + this.resumingFrom = + this.currentAnimation = + this.animationValues = + undefined; + this.notifyListeners("animationComplete"); + } + finishAnimation() { + if (this.currentAnimation) { + this.mixTargetDelta && this.mixTargetDelta(animationTarget); + this.currentAnimation.stop(); + } + this.completeAnimation(); + } + applyTransformsToTarget() { + const lead = this.getLead(); + const { targetWithTransforms, layout, latestValues } = lead; + let { target } = lead; + if (!targetWithTransforms || !target || !layout) + return; + /** + * If we're only animating position, and this element isn't the lead element, + * then instead of projecting into the lead box we instead want to calculate + * a new target that aligns the two boxes but maintains the layout shape. + */ + if (this !== lead && + this.layout && + layout && + shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) { + target = this.target || createBox(); + const xLength = calcLength(this.layout.layoutBox.x); + target.x.min = lead.target.x.min; + target.x.max = target.x.min + xLength; + const yLength = calcLength(this.layout.layoutBox.y); + target.y.min = lead.target.y.min; + target.y.max = target.y.min + yLength; + } + copyBoxInto(targetWithTransforms, target); + /** + * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal. + * This is the final box that we will then project into by calculating a transform delta and + * applying it to the corrected box. + */ + transformBox(targetWithTransforms, latestValues); + /** + * Update the delta between the corrected box and the final target box, after + * user-set transforms are applied to it. This will be used by the renderer to + * create a transform style that will reproject the element from its layout layout + * into the desired bounding box. + */ + calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues); + } + registerSharedNode(layoutId, node) { + if (!this.sharedNodes.has(layoutId)) { + this.sharedNodes.set(layoutId, new NodeStack()); + } + const stack = this.sharedNodes.get(layoutId); + stack.add(node); + const config = node.options.initialPromotionConfig; + node.promote({ + transition: config ? config.transition : undefined, + preserveFollowOpacity: config && config.shouldPreserveFollowOpacity + ? config.shouldPreserveFollowOpacity(node) + : undefined, + }); + } + isLead() { + const stack = this.getStack(); + return stack ? stack.lead === this : true; + } + getLead() { + const { layoutId } = this.options; + return layoutId ? this.getStack()?.lead || this : this; + } + getPrevLead() { + const { layoutId } = this.options; + return layoutId ? this.getStack()?.prevLead : undefined; + } + getStack() { + const { layoutId } = this.options; + if (layoutId) + return this.root.sharedNodes.get(layoutId); + } + promote({ needsReset, transition, preserveFollowOpacity, } = {}) { + const stack = this.getStack(); + if (stack) + stack.promote(this, preserveFollowOpacity); + if (needsReset) { + this.projectionDelta = undefined; + this.needsReset = true; + } + if (transition) + this.setOptions({ transition }); + } + relegate() { + const stack = this.getStack(); + if (stack) { + return stack.relegate(this); + } + else { + return false; + } + } + resetSkewAndRotation() { + const { visualElement } = this.options; + if (!visualElement) + return; + // If there's no detected skew or rotation values, we can early return without a forced render. + let hasDistortingTransform = false; + /** + * An unrolled check for rotation values. Most elements don't have any rotation and + * skipping the nested loop and new object creation is 50% faster. + */ + const { latestValues } = visualElement; + if (latestValues.z || + latestValues.rotate || + latestValues.rotateX || + latestValues.rotateY || + latestValues.rotateZ || + latestValues.skewX || + latestValues.skewY) { + hasDistortingTransform = true; + } + // If there's no distorting values, we don't need to do any more. + if (!hasDistortingTransform) + return; + const resetValues = {}; + if (latestValues.z) { + resetDistortingTransform("z", visualElement, resetValues, this.animationValues); + } + // Check the skew and rotate value of all axes and reset to 0 + for (let i = 0; i < transformAxes.length; i++) { + resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues); + resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues); + } + // Force a render of this element to apply the transform with all skews and rotations + // set to 0. + visualElement.render(); + // Put back all the values we reset + for (const key in resetValues) { + visualElement.setStaticValue(key, resetValues[key]); + if (this.animationValues) { + this.animationValues[key] = resetValues[key]; + } + } + // Schedule a render for the next frame. This ensures we won't visually + // see the element with the reset rotate value applied. + visualElement.scheduleRender(); + } + applyProjectionStyles(targetStyle, // CSSStyleDeclaration - doesn't allow numbers to be assigned to properties + styleProp) { + if (!this.instance || this.isSVG) + return; + if (!this.isVisible) { + targetStyle.visibility = "hidden"; + return; + } + const transformTemplate = this.getTransformTemplate(); + if (this.needsReset) { + this.needsReset = false; + targetStyle.visibility = ""; + targetStyle.opacity = ""; + targetStyle.pointerEvents = + resolveMotionValue(styleProp?.pointerEvents) || ""; + targetStyle.transform = transformTemplate + ? transformTemplate(this.latestValues, "") + : "none"; + return; + } + const lead = this.getLead(); + if (!this.projectionDelta || !this.layout || !lead.target) { + if (this.options.layoutId) { + targetStyle.opacity = + this.latestValues.opacity !== undefined + ? this.latestValues.opacity + : 1; + targetStyle.pointerEvents = + resolveMotionValue(styleProp?.pointerEvents) || ""; + } + if (this.hasProjected && !hasTransform(this.latestValues)) { + targetStyle.transform = transformTemplate + ? transformTemplate({}, "") + : "none"; + this.hasProjected = false; + } + return; + } + targetStyle.visibility = ""; + const valuesToRender = lead.animationValues || lead.latestValues; + this.applyTransformsToTarget(); + let transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender); + if (transformTemplate) { + transform = transformTemplate(valuesToRender, transform); + } + targetStyle.transform = transform; + const { x, y } = this.projectionDelta; + targetStyle.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`; + if (lead.animationValues) { + /** + * If the lead component is animating, assign this either the entering/leaving + * opacity + */ + targetStyle.opacity = + lead === this + ? valuesToRender.opacity ?? + this.latestValues.opacity ?? + 1 + : this.preserveOpacity + ? this.latestValues.opacity + : valuesToRender.opacityExit; + } + else { + /** + * Or we're not animating at all, set the lead component to its layout + * opacity and other components to hidden. + */ + targetStyle.opacity = + lead === this + ? valuesToRender.opacity !== undefined + ? valuesToRender.opacity + : "" + : valuesToRender.opacityExit !== undefined + ? valuesToRender.opacityExit + : 0; + } + /** + * Apply scale correction + */ + for (const key in scaleCorrectors) { + if (valuesToRender[key] === undefined) + continue; + const { correct, applyTo, isCSSVariable } = scaleCorrectors[key]; + /** + * Only apply scale correction to the value if we have an + * active projection transform. Otherwise these values become + * vulnerable to distortion if the element changes size without + * a corresponding layout animation. + */ + const corrected = transform === "none" + ? valuesToRender[key] + : correct(valuesToRender[key], lead); + if (applyTo) { + const num = applyTo.length; + for (let i = 0; i < num; i++) { + targetStyle[applyTo[i]] = corrected; + } + } + else { + // If this is a CSS variable, set it directly on the instance. + // Replacing this function from creating styles to setting them + // would be a good place to remove per frame object creation + if (isCSSVariable) { + this.options.visualElement.renderState.vars[key] = corrected; + } + else { + targetStyle[key] = corrected; + } + } + } + /** + * Disable pointer events on follow components. This is to ensure + * that if a follow component covers a lead component it doesn't block + * pointer events on the lead. + */ + if (this.options.layoutId) { + targetStyle.pointerEvents = + lead === this + ? resolveMotionValue(styleProp?.pointerEvents) || "" + : "none"; + } + } + clearSnapshot() { + this.resumeFrom = + this.snapshot = + this.dragSnapshot = + this.dragAncestor = + undefined; + } + // Only run on root + resetTree() { + this.root.nodes.forEach((node) => node.currentAnimation?.stop()); + this.root.nodes.forEach(clearMeasurements); + this.root.sharedNodes.clear(); + } + }; +} +/** + * Nodes are depth-ordered, so a dragged ancestor's layout is updated before + * its descendants'. + */ +function updateLayout(node) { + node.updateLayout(); + followDraggedAncestor(node); +} +function notifyLayoutUpdate(node) { + const snapshot = node.resumeFrom?.snapshot || node.snapshot; + if (node.isLead() && + node.layout && + snapshot && + node.hasListeners("didUpdate")) { + const { layoutBox: layout, measuredBox: measuredLayout } = node.layout; + const { animationType } = node.options; + const isShared = snapshot.source !== node.layout.source; + // TODO Maybe we want to also resize the layout snapshot so we don't trigger + // animations for instance if layout="size" and an element has only changed position + if (animationType === "size") { + eachAxis((axis) => { + const axisSnapshot = isShared + ? snapshot.measuredBox[axis] + : snapshot.layoutBox[axis]; + const length = calcLength(axisSnapshot); + axisSnapshot.min = layout[axis].min; + axisSnapshot.max = axisSnapshot.min + length; + }); + } + else if (animationType === "x" || animationType === "y") { + const snapAxis = animationType === "x" ? "y" : "x"; + copyAxisInto(isShared + ? snapshot.measuredBox[snapAxis] + : snapshot.layoutBox[snapAxis], layout[snapAxis]); + } + else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) { + eachAxis((axis) => { + const axisSnapshot = isShared + ? snapshot.measuredBox[axis] + : snapshot.layoutBox[axis]; + const length = calcLength(layout[axis]); + axisSnapshot.max = axisSnapshot.min + length; + /** + * Ensure relative target gets resized and rerendererd + */ + if (node.relativeTarget && !node.currentAnimation) { + node.isProjectionDirty = true; + node.relativeTarget[axis].max = + node.relativeTarget[axis].min + length; + } + }); + } + const layoutDelta = createDelta(); + calcBoxDelta(layoutDelta, layout, snapshot.layoutBox); + const visualDelta = createDelta(); + if (isShared) { + calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox); + } + else { + calcBoxDelta(visualDelta, layout, snapshot.layoutBox); + } + const hasLayoutChanged = !isDeltaZero(layoutDelta); + let hasRelativeLayoutChanged = false; + if (!node.resumeFrom) { + const relativeParent = node.getClosestProjectingParent(); + /** + * If the relativeParent is itself resuming from a different element then + * the relative snapshot is not relavent + */ + if (relativeParent && !relativeParent.resumeFrom) { + const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent; + if (parentSnapshot && parentLayout) { + const anchor = node.options.layoutAnchor || undefined; + const relativeSnapshot = createBox(); + calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox, anchor); + const relativeLayout = createBox(); + calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox, anchor); + if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) { + hasRelativeLayoutChanged = true; + } + if (relativeParent.options.layoutRoot) { + node.relativeTarget = relativeLayout; + node.relativeTargetOrigin = relativeSnapshot; + node.relativeParent = relativeParent; + } + } + } + } + node.notifyListeners("didUpdate", { + layout, + snapshot, + delta: visualDelta, + layoutDelta, + hasLayoutChanged, + hasRelativeLayoutChanged, + }); + } + else if (node.isLead()) { + const { onExitComplete } = node.options; + onExitComplete && onExitComplete(); + } + /** + * Clearing transition + * TODO: Investigate why this transition is being passed in as {type: false } from Framer + * and why we need it at all + */ + node.options.transition = undefined; +} +function propagateDirtyNodes(node) { + /** + * Increase debug counter for nodes encountered this frame + */ + if (statsBuffer.value) { + metrics.nodes++; + } + if (!node.parent) + return; + /** + * If this node isn't projecting, propagate isProjectionDirty. It will have + * no performance impact but it will allow the next child that *is* projecting + * but *isn't* dirty to just check its parent to see if *any* ancestor needs + * correcting. + */ + if (!node.isProjecting()) { + node.isProjectionDirty = node.parent.isProjectionDirty; + } + /** + * Propagate isSharedProjectionDirty and isTransformDirty + * throughout the whole tree. A future revision can take another look at + * this but for safety we still recalcualte shared nodes. + */ + node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || + node.parent.isProjectionDirty || + node.parent.isSharedProjectionDirty)); + node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty); +} +function cleanDirtyNodes(node) { + node.isProjectionDirty = + node.isSharedProjectionDirty = + node.isTransformDirty = + false; +} +function clearSnapshot(node) { + node.clearSnapshot(); +} +function clearMeasurements(node) { + node.clearMeasurements(); +} +function forceLayoutMeasure(node) { + node.isLayoutDirty = true; + node.updateLayout(); +} +function clearIsLayoutDirty(node) { + node.isLayoutDirty = false; +} +/** + * A dragged node doesn't layout animate, so it jumps to its new layout. Shift + * its descendants' snapshots by the same amount, so they only animate layout + * changes relative to it, rather than lagging behind. + */ +function followDraggedAncestor(node) { + const { snapshot, dragAncestor } = node; + const to = dragAncestor?.layout; + if (!snapshot || !to || node.resumeFrom || node.isAnimationBlocked) + return; + const from = dragAncestor.dragSnapshot; + eachAxis((axis) => translateAxis(snapshot.layoutBox[axis], to.layoutBox[axis].min - from.layoutBox[axis].min)); +} +/** + * When a node is animation-blocked (e.g. during drag) and its component + * didn't re-render (memoized), willUpdate() is never called so there's + * no snapshot. Use the previous layout as a snapshot and mark dirty so + * resetTransform/updateLayout/notifyLayoutUpdate process it normally. + */ +function ensureDraggedNodesSnapshotted(node) { + if (node.isAnimationBlocked && node.layout && !node.isLayoutDirty) { + node.snapshot = node.dragSnapshot || node.layout; + node.isLayoutDirty = true; + } +} +/** + * If a node's relative parent is about to be re-measured but the node isn't + * (e.g. it's in another LayoutGroup), its relative target is out of date. + * If it's layout animating, re-measure it too, so its relative target keeps + * resolving against current layouts. Otherwise its layout is still valid + * relative to its parent, so drop the relative target, and any targetDelta + * left over from a finished animation while an ancestor still animates, to be + * rebuilt from its layout. + */ +function syncRelativeLayout(node) { + if (node.relativeTarget && node.relativeParent?.isLayoutDirty) { + if (node.currentAnimation) { + node.isLayoutDirty = true; + } + else { + node.targetDelta = undefined; + node.removeRelativeTarget(); + } + } +} +function resetTransformStyle(node) { + const { visualElement } = node.options; + if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) { + visualElement.notify("BeforeLayoutMeasure"); + } + node.resetTransform(); +} +function finishAnimation(node) { + node.finishAnimation(); + node.targetDelta = node.relativeTarget = node.target = undefined; + node.isProjectionDirty = true; +} +function resolveTargetDelta(node) { + node.resolveTargetDelta(); +} +function calcProjection(node) { + node.calcProjection(); +} +function resetSkewAndRotation(node) { + node.resetSkewAndRotation(); +} +function mixAxisDeltaLinear(output, delta, p) { + output.translate = mixNumber(delta.translate, 0, p); + output.scale = mixNumber(delta.scale, 1, p); + output.origin = delta.origin; + output.originPoint = delta.originPoint; +} +function mixAxis(output, from, to, p) { + output.min = mixNumber(from.min, to.min, p); + output.max = mixNumber(from.max, to.max, p); +} +function mixBox(output, from, to, p) { + mixAxis(output.x, from.x, to.x, p); + mixAxis(output.y, from.y, to.y, p); +} +function hasOpacityCrossfade(node) { + return (node.animationValues && node.animationValues.opacityExit !== undefined); +} +const defaultLayoutTransition = { + duration: 0.45, + ease: [0.4, 0, 0.1, 1], +}; +const userAgentContains = (string) => typeof navigator !== "undefined" && + navigator.userAgent && + navigator.userAgent.toLowerCase().includes(string); +/** + * Measured bounding boxes must be rounded in Safari and + * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements + * can appear to jump. + */ +const roundPoint = userAgentContains("applewebkit/") && !userAgentContains("chrome/") + ? Math.round + : noop; +function roundAxis(axis) { + // Round to the nearest .5 pixels to support subpixel layouts + axis.min = roundPoint(axis.min); + axis.max = roundPoint(axis.max); +} +function roundBox(box) { + roundAxis(box.x); + roundAxis(box.y); +} +function shouldAnimatePositionOnly(animationType, snapshot, layout) { + return (animationType === "position" || + (animationType === "preserve-aspect" && + !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2))); +} +function checkNodeWasScrollRoot(node) { + return node !== node.root && node.scroll?.wasRoot; +} + +export { cleanDirtyNodes, createProjectionNode, mixAxis, mixBox, propagateDirtyNodes }; +//# sourceMappingURL=create-projection-node.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/group.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/group.mjs new file mode 100644 index 0000000..ad789a5 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/group.mjs @@ -0,0 +1,25 @@ +const notify = (node) => !node.isLayoutDirty && node.willUpdate(false); +function nodeGroup() { + const nodes = new Set(); + const subscriptions = new WeakMap(); + const dirtyAll = () => nodes.forEach(notify); + return { + add: (node) => { + nodes.add(node); + subscriptions.set(node, node.addEventListener("willUpdate", dirtyAll)); + }, + remove: (node) => { + nodes.delete(node); + const unsubscribe = subscriptions.get(node); + if (unsubscribe) { + unsubscribe(); + subscriptions.delete(node); + } + dirtyAll(); + }, + dirty: dirtyAll, + }; +} + +export { nodeGroup }; +//# sourceMappingURL=group.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/state.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/state.mjs new file mode 100644 index 0000000..5ad856c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/node/state.mjs @@ -0,0 +1,20 @@ +/** + * This should only ever be modified on the client otherwise it'll + * persist through server requests. If we need instanced states we + * could lazy-init via root. + */ +const globalProjectionState = { + /** + * Global flag as to whether the tree has animated since the last time + * we resized the window + */ + hasAnimatedSinceResize: true, + /** + * We set this to true once, on the first update. Any nodes added to the tree beyond that + * update will be given a `data-projection-id` attribute. + */ + hasEverUpdated: false, +}; + +export { globalProjectionState }; +//# sourceMappingURL=state.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/shared/stack.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/shared/stack.mjs new file mode 100644 index 0000000..3dd23ec --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/shared/stack.mjs @@ -0,0 +1,85 @@ +import { addUniqueItem, removeItem } from 'motion-utils'; + +class NodeStack { + constructor() { + this.members = []; + } + add(node) { + addUniqueItem(this.members, node); + for (let i = this.members.length - 1; i >= 0; i--) { + const member = this.members[i]; + if (member === node || member === this.lead || member === this.prevLead) + continue; + const inst = member.instance; + if ((!inst || inst.isConnected === false) && !member.snapshot) { + removeItem(this.members, member); + member.unmount(); + } + } + node.scheduleRender(); + } + remove(node) { + removeItem(this.members, node); + if (node === this.prevLead) + this.prevLead = undefined; + if (node === this.lead) { + const prevLead = this.members[this.members.length - 1]; + if (prevLead) + this.promote(prevLead); + } + } + relegate(node) { + for (let i = this.members.indexOf(node) - 1; i >= 0; i--) { + const member = this.members[i]; + if (member.isPresent !== false && member.instance?.isConnected !== false) { + this.promote(member); + return true; + } + } + return false; + } + promote(node, preserveFollowOpacity) { + const prevLead = this.lead; + if (node === prevLead) + return; + this.prevLead = prevLead; + this.lead = node; + node.show(); + if (prevLead) { + prevLead.updateSnapshot(); + node.scheduleRender(); + const { layoutDependency: prevDep } = prevLead.options; + const { layoutDependency: nextDep } = node.options; + if (prevDep === undefined || prevDep !== nextDep) { + node.resumeFrom = prevLead; + if (preserveFollowOpacity) + prevLead.preserveOpacity = true; + if (prevLead.snapshot) { + node.snapshot = prevLead.snapshot; + node.snapshot.latestValues = + prevLead.animationValues || prevLead.latestValues; + } + if (node.root?.isUpdating) + node.isLayoutDirty = true; + } + if (node.options.crossfade === false) + prevLead.hide(); + } + } + exitAnimationComplete() { + this.members.forEach((member) => { + member.options.onExitComplete?.(); + member.resumingFrom?.options.onExitComplete?.(); + }); + } + scheduleRender() { + this.members.forEach((member) => member.instance && member.scheduleRender(false)); + } + removeLeadSnapshot() { + if (this.lead?.snapshot) + this.lead.snapshot = undefined; + } +} + +export { NodeStack }; +//# sourceMappingURL=stack.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/default-scale-correctors.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/default-scale-correctors.mjs new file mode 100644 index 0000000..6a99a72 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/default-scale-correctors.mjs @@ -0,0 +1,18 @@ +import { cornerRadiusProps } from '../../utils/border-radius.mjs'; +import { correctBorderRadius } from './scale-border-radius.mjs'; +import { correctBoxShadow } from './scale-box-shadow.mjs'; + +const defaultScaleCorrectors = { + borderRadius: { + ...correctBorderRadius, + applyTo: [...cornerRadiusProps], + }, + borderTopLeftRadius: correctBorderRadius, + borderTopRightRadius: correctBorderRadius, + borderBottomLeftRadius: correctBorderRadius, + borderBottomRightRadius: correctBorderRadius, + boxShadow: correctBoxShadow, +}; + +export { defaultScaleCorrectors }; +//# sourceMappingURL=default-scale-correctors.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.mjs new file mode 100644 index 0000000..769cd50 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.mjs @@ -0,0 +1,42 @@ +import { px } from '../../value/types/numbers/units.mjs'; + +function pixelsToPercent(pixels, axis) { + if (axis.max === axis.min) + return 0; + return (pixels / (axis.max - axis.min)) * 100; +} +/** + * We always correct borderRadius as a percentage rather than pixels to reduce paints. + * For example, if you are projecting a box that is 100px wide with a 10px borderRadius + * into a box that is 200px wide with a 20px borderRadius, that is actually a 10% + * borderRadius in both states. If we animate between the two in pixels that will trigger + * a paint each time. If we animate between the two in percentage we'll avoid a paint. + */ +const correctBorderRadius = { + correct: (latest, node) => { + if (!node.target) + return latest; + /** + * If latest is a string, if it's a percentage we can return immediately as it's + * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number. + */ + if (typeof latest === "string") { + if (px.test(latest)) { + latest = parseFloat(latest); + } + else { + return latest; + } + } + /** + * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that + * pixel value as a percentage of each axis + */ + const x = pixelsToPercent(latest, node.target.x); + const y = pixelsToPercent(latest, node.target.y); + return `${x}% ${y}%`; + }, +}; + +export { correctBorderRadius, pixelsToPercent }; +//# sourceMappingURL=scale-border-radius.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs new file mode 100644 index 0000000..8d6464f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs @@ -0,0 +1,36 @@ +import { complex } from '../../value/types/complex/index.mjs'; +import { mixNumber } from '../../utils/mix/number.mjs'; + +const correctBoxShadow = { + correct: (latest, { treeScale, projectionDelta }) => { + const original = latest; + const shadow = complex.parse(latest); + // TODO: Doesn't support multiple shadows + if (shadow.length > 5) + return original; + const template = complex.createTransformer(latest); + const offset = typeof shadow[0] !== "number" ? 1 : 0; + // Calculate the overall context scale + const xScale = projectionDelta.x.scale * treeScale.x; + const yScale = projectionDelta.y.scale * treeScale.y; + shadow[0 + offset] /= xScale; + shadow[1 + offset] /= yScale; + /** + * Ideally we'd correct x and y scales individually, but because blur and + * spread apply to both we have to take a scale average and apply that instead. + * We could potentially improve the outcome of this by incorporating the ratio between + * the two scales. + */ + const averageScale = mixNumber(xScale, yScale, 0.5); + // Blur + if (typeof shadow[2 + offset] === "number") + shadow[2 + offset] /= averageScale; + // Spread + if (typeof shadow[3 + offset] === "number") + shadow[3 + offset] /= averageScale; + return template(shadow); + }, +}; + +export { correctBoxShadow }; +//# sourceMappingURL=scale-box-shadow.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs new file mode 100644 index 0000000..69e001f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/scale-correction.mjs @@ -0,0 +1,14 @@ +import { isCSSVariableName } from '../../animation/utils/is-css-variable.mjs'; + +const scaleCorrectors = {}; +function addScaleCorrector(correctors) { + for (const key in correctors) { + scaleCorrectors[key] = correctors[key]; + if (isCSSVariableName(key)) { + scaleCorrectors[key].isCSSVariable = true; + } + } +} + +export { addScaleCorrector, scaleCorrectors }; +//# sourceMappingURL=scale-correction.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/transform.mjs new file mode 100644 index 0000000..40732d0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/styles/transform.mjs @@ -0,0 +1,55 @@ +function buildProjectionTransform(delta, treeScale, latestTransform) { + let transform = ""; + /** + * The translations we use to calculate are always relative to the viewport coordinate space. + * But when we apply scales, we also scale the coordinate space of an element and its children. + * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need + * to move an element 100 pixels, we actually need to move it 200 in within that scaled space. + */ + const xTranslate = delta.x.translate / treeScale.x; + const yTranslate = delta.y.translate / treeScale.y; + const zTranslate = latestTransform?.z || 0; + if (xTranslate || yTranslate || zTranslate) { + transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `; + } + /** + * Apply scale correction for the tree transform. + * This will apply scale to the screen-orientated axes. + */ + if (treeScale.x !== 1 || treeScale.y !== 1) { + transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `; + } + if (latestTransform) { + const { transformPerspective, rotate, pathRotation, rotateX, rotateY, rotateZ, skewX, skewY, } = latestTransform; + if (transformPerspective) + transform = `perspective(${transformPerspective}px) ${transform}`; + if (rotate) + transform += `rotate(${rotate}deg) `; + // Additive `rotate()` so user `rotate` isn't clobbered. + if (pathRotation) + transform += `rotate(${pathRotation}deg) `; + if (rotateX) + transform += `rotateX(${rotateX}deg) `; + if (rotateY) + transform += `rotateY(${rotateY}deg) `; + if (rotateZ) + transform += `rotateZ(${rotateZ}deg) `; + if (skewX) + transform += `skewX(${skewX}deg) `; + if (skewY) + transform += `skewY(${skewY}deg) `; + } + /** + * Apply scale to match the size of the element to the size we want it. + * This will apply scale to the element-orientated axes. + */ + const elementScaleX = delta.x.scale * treeScale.x; + const elementScaleY = delta.y.scale * treeScale.y; + if (elementScaleX !== 1 || elementScaleY !== 1) { + transform += `scale(${elementScaleX}, ${elementScaleY})`; + } + return transform || "none"; +} + +export { buildProjectionTransform }; +//# sourceMappingURL=transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.mjs new file mode 100644 index 0000000..463a184 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.mjs @@ -0,0 +1,4 @@ +const compareByDepth = (a, b) => a.depth - b.depth; + +export { compareByDepth }; +//# sourceMappingURL=compare-by-depth.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/each-axis.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/each-axis.mjs new file mode 100644 index 0000000..00e4c66 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/each-axis.mjs @@ -0,0 +1,6 @@ +function eachAxis(callback) { + return [callback("x"), callback("y")]; +} + +export { eachAxis }; +//# sourceMappingURL=each-axis.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/flat-tree.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/flat-tree.mjs new file mode 100644 index 0000000..d9d6817 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/flat-tree.mjs @@ -0,0 +1,25 @@ +import { addUniqueItem, removeItem } from 'motion-utils'; +import { compareByDepth } from './compare-by-depth.mjs'; + +class FlatTree { + constructor() { + this.children = []; + this.isDirty = false; + } + add(child) { + addUniqueItem(this.children, child); + this.isDirty = true; + } + remove(child) { + removeItem(this.children, child); + this.isDirty = true; + } + forEach(callback) { + this.isDirty && this.children.sort(compareByDepth); + this.isDirty = false; + this.children.forEach(callback); + } +} + +export { FlatTree }; +//# sourceMappingURL=flat-tree.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs new file mode 100644 index 0000000..b684a28 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/has-transform.mjs @@ -0,0 +1,28 @@ +function isIdentityScale(scale) { + return scale === undefined || scale === 1; +} +function hasScale({ scale, scaleX, scaleY }) { + return (!isIdentityScale(scale) || + !isIdentityScale(scaleX) || + !isIdentityScale(scaleY)); +} +function hasTransform(values) { + return (hasScale(values) || + has2DTranslate(values) || + values.z || + values.rotate || + values.rotateX || + values.rotateY || + values.rotateZ || + values.skewX || + values.skewY); +} +function has2DTranslate(values) { + return is2DTranslate(values.x) || is2DTranslate(values.y); +} +function is2DTranslate(value) { + return value && value !== "0%"; +} + +export { has2DTranslate, hasScale, hasTransform }; +//# sourceMappingURL=has-transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/measure.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/measure.mjs new file mode 100644 index 0000000..33e0a65 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/projection/utils/measure.mjs @@ -0,0 +1,18 @@ +import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs'; +import { translateAxis } from '../geometry/delta-apply.mjs'; + +function measureViewportBox(instance, transformPoint) { + return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint)); +} +function measurePageBox(element, rootProjectionNode, transformPagePoint) { + const viewportBox = measureViewportBox(element, transformPagePoint); + const { scroll } = rootProjectionNode; + if (scroll) { + translateAxis(viewportBox.x, scroll.offset.x); + translateAxis(viewportBox.y, scroll.offset.y); + } + return viewportBox; +} + +export { measurePageBox, measureViewportBox }; +//# sourceMappingURL=measure.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/Feature.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/Feature.mjs new file mode 100644 index 0000000..d614c3c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/Feature.mjs @@ -0,0 +1,15 @@ +/** + * Feature base class for extending VisualElement functionality. + * Features are plugins that can be mounted/unmounted to add behavior + * like gestures, animations, or layout tracking. + */ +class Feature { + constructor(node) { + this.isMounted = false; + this.node = node; + } + update() { } +} + +export { Feature }; +//# sourceMappingURL=Feature.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/VisualElement.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/VisualElement.mjs new file mode 100644 index 0000000..f8e8cd6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/VisualElement.mjs @@ -0,0 +1,552 @@ +import { warnOnce, secondsToMilliseconds, isNumericalString, isZeroValueString, SubscriptionManager } from 'motion-utils'; +import { KeyframeResolver } from '../animation/keyframes/KeyframesResolver.mjs'; +import { NativeAnimation } from '../animation/NativeAnimation.mjs'; +import { acceleratedValues } from '../animation/waapi/utils/accelerated-values.mjs'; +import { transformGroups } from '../animation/waapi/transforms/groups.mjs'; +import { microtask } from '../frameloop/microtask.mjs'; +import { time } from '../frameloop/sync-time.mjs'; +import { createBox } from '../projection/geometry/models.mjs'; +import { motionValue } from '../value/index.mjs'; +import { complex } from '../value/types/complex/index.mjs'; +import { getAnimatableNone } from '../value/types/utils/animatable-none.mjs'; +import { isMotionValue } from '../value/utils/is-motion-value.mjs'; +import { visualElementStore } from './store.mjs'; +import { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs'; +import { transformProps } from './utils/keys-transform.mjs'; +import { updateMotionValuesFromProps } from './utils/motion-values.mjs'; +import { initPrefersReducedMotion } from './utils/reduced-motion/index.mjs'; +import { hasReducedMotionListener, prefersReducedMotion } from './utils/reduced-motion/state.mjs'; +import { frame, cancelFrame } from '../frameloop/frame.mjs'; + +const propEventHandlers = [ + "AnimationStart", + "AnimationComplete", + "Update", + "BeforeLayoutMeasure", + "LayoutMeasure", + "LayoutAnimationStart", + "LayoutAnimationComplete", +]; +/** + * Static feature definitions - can be injected by framework layer + */ +let featureDefinitions = {}; +/** + * Set feature definitions for all VisualElements. + * This should be called by the framework layer (e.g., framer-motion) during initialization. + */ +function setFeatureDefinitions(definitions) { + featureDefinitions = definitions; +} +/** + * Get the current feature definitions + */ +function getFeatureDefinitions() { + return featureDefinitions; +} +/** + * A VisualElement is an imperative abstraction around UI elements such as + * HTMLElement, SVGElement, Three.Object3D etc. + */ +class VisualElement { + /** + * This method takes React props and returns found MotionValues. For example, HTML + * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays. + * + * This isn't an abstract method as it needs calling in the constructor, but it is + * intended to be one. + */ + scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) { + return {}; + } + constructor({ parent, props, presenceContext, reducedMotionConfig, skipAnimations, blockInitialAnimation, visualState, }, options = {}) { + /** + * A reference to the current underlying Instance, e.g. a HTMLElement + * or Three.Mesh etc. + */ + this.current = null; + /** + * A set containing references to this VisualElement's children. + */ + this.children = new Set(); + /** + * Determine what role this visual element should take in the variant tree. + */ + this.isVariantNode = false; + this.isControllingVariants = false; + /** + * Decides whether this VisualElement should animate in reduced motion + * mode. + * + * TODO: This is currently set on every individual VisualElement but feels + * like it could be set globally. + */ + this.shouldReduceMotion = null; + /** + * Decides whether animations should be skipped for this VisualElement. + * Useful for E2E tests and visual regression testing. + */ + this.shouldSkipAnimations = false; + /** + * A map of all motion values attached to this visual element. Motion + * values are source of truth for any given animated value. A motion + * value might be provided externally by the component via props. + */ + this.values = new Map(); + this.KeyframeResolver = KeyframeResolver; + /** + * Cleanup functions for active features (hover/tap/exit etc) + */ + this.features = {}; + /** + * A map of every subscription that binds the provided or generated + * motion values onChange listeners to this visual element. + */ + this.valueSubscriptions = new Map(); + /** + * A reference to the previously-provided motion values as returned + * from scrapeMotionValuesFromProps. We use the keys in here to determine + * if any motion values need to be removed after props are updated. + */ + this.prevMotionValues = {}; + /** + * Track whether this element has been mounted before, to detect + * remounts after Suspense unmount/remount cycles. + */ + this.hasBeenMounted = false; + /** + * An object containing a SubscriptionManager for each active event. + */ + this.events = {}; + /** + * An object containing an unsubscribe function for each prop event subscription. + * For example, every "Update" event can have multiple subscribers via + * VisualElement.on(), but only one of those can be defined via the onUpdate prop. + */ + this.propEventSubscriptions = {}; + this.notifyUpdate = () => this.notify("Update", this.latestValues); + this.render = () => { + if (!this.current) + return; + this.triggerBuild(); + this.renderInstance(this.current, this.renderState, this.props.style, this.projection); + }; + this.renderScheduledAt = 0.0; + this.scheduleRender = () => { + const now = time.now(); + if (this.renderScheduledAt < now) { + this.renderScheduledAt = now; + frame.render(this.render, false, true); + } + }; + const { latestValues, renderState } = visualState; + this.latestValues = latestValues; + this.baseTarget = { ...latestValues }; + this.initialValues = props.initial ? { ...latestValues } : {}; + this.renderState = renderState; + this.parent = parent; + this.props = props; + this.presenceContext = presenceContext; + this.depth = parent ? parent.depth + 1 : 0; + this.reducedMotionConfig = reducedMotionConfig; + this.skipAnimationsConfig = skipAnimations; + this.options = options; + this.blockInitialAnimation = Boolean(blockInitialAnimation); + this.isControllingVariants = isControllingVariants(props); + this.isVariantNode = isVariantNode(props); + if (this.isVariantNode) { + this.variantChildren = new Set(); + } + this.manuallyAnimateOnMount = Boolean(parent && parent.current); + /** + * Any motion values that are provided to the element when created + * aren't yet bound to the element, as this would technically be impure. + * However, we iterate through the motion values and set them to the + * initial values for this component. + * + * TODO: This is impure and we should look at changing this to run on mount. + * Doing so will break some tests but this isn't necessarily a breaking change, + * more a reflection of the test. + */ + const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this); + for (const key in initialMotionValues) { + const value = initialMotionValues[key]; + if (latestValues[key] !== undefined && isMotionValue(value)) { + value.set(latestValues[key]); + } + } + } + mount(instance) { + /** + * If this element has been mounted before (e.g. after a Suspense + * unmount/remount), reset motion values to their initial state + * so animations replay correctly from initial → animate. + */ + if (this.hasBeenMounted) { + for (const key in this.initialValues) { + this.values.get(key)?.jump(this.initialValues[key]); + this.latestValues[key] = this.initialValues[key]; + } + } + this.current = instance; + visualElementStore.set(instance, this); + if (this.projection && !this.projection.instance) { + this.projection.mount(instance); + } + /** + * Join the closest variant node above, so its variant changes + * propagate here, unless inherit={false} cuts the chain. + */ + if (this.isVariantNode && !this.isControllingVariants) { + let node = this; + do + node = node.props.inherit !== false && node.parent; + while (node && !node.isVariantNode); + if (node) { + const { variantChildren } = node; + variantChildren.add(this); + this.removeFromVariantTree = () => variantChildren.delete(this); + } + } + this.values.forEach((value, key) => this.bindToMotionValue(key, value)); + /** + * Determine reduced motion preference. Only initialize the matchMedia + * listener if we actually need the dynamic value (i.e., when config + * is neither "never" nor "always"). + */ + if (this.reducedMotionConfig === "never") { + this.shouldReduceMotion = false; + } + else if (this.reducedMotionConfig === "always") { + this.shouldReduceMotion = true; + } + else { + if (!hasReducedMotionListener.current) { + initPrefersReducedMotion(); + } + this.shouldReduceMotion = prefersReducedMotion.current; + } + if (process.env.NODE_ENV !== "production") { + warnOnce(this.shouldReduceMotion !== true, "You have Reduced Motion enabled on your device. Animations may not appear as expected.", "reduced-motion-disabled"); + } + /** + * Set whether animations should be skipped based on the config. + */ + this.shouldSkipAnimations = this.skipAnimationsConfig ?? false; + this.parent?.addChild(this); + this.update(this.props, this.presenceContext); + this.hasBeenMounted = true; + } + unmount() { + this.projection && this.projection.unmount(); + cancelFrame(this.notifyUpdate); + cancelFrame(this.render); + this.valueSubscriptions.forEach((remove) => remove()); + this.valueSubscriptions.clear(); + this.removeFromVariantTree && this.removeFromVariantTree(); + this.parent?.removeChild(this); + for (const key in this.events) { + this.events[key].clear(); + } + for (const key in this.features) { + const feature = this.features[key]; + if (feature) { + feature.unmount(); + feature.isMounted = false; + } + } + this.current = null; + } + addChild(child) { + this.children.add(child); + this.enteringChildren ?? (this.enteringChildren = new Set()); + this.enteringChildren.add(child); + } + removeChild(child) { + this.children.delete(child); + this.enteringChildren && this.enteringChildren.delete(child); + } + bindToMotionValue(key, value) { + if (this.valueSubscriptions.has(key)) { + this.valueSubscriptions.get(key)(); + } + if (value.accelerate && + acceleratedValues.has(key) && + this.current instanceof HTMLElement) { + const { factory, keyframes, times, ease, duration } = value.accelerate; + const animation = new NativeAnimation({ + element: this.current, + name: key, + keyframes, + times, + ease, + duration: secondsToMilliseconds(duration), + }); + const cleanup = factory(animation); + this.valueSubscriptions.set(key, () => { + cleanup(); + animation.cancel(); + }); + return; + } + const valueIsTransform = transformProps.has(key); + if (valueIsTransform && this.onBindTransform) { + this.onBindTransform(); + } + const removeOnChange = value.on("change", (latestValue) => { + this.latestValues[key] = latestValue; + this.props.onUpdate && frame.preRender(this.notifyUpdate); + if (valueIsTransform) { + if (this.projection) { + this.projection.isTransformDirty = true; + } + transformGroups.get(this.current)?.check(); + } + this.scheduleRender(); + }); + let removeSyncCheck; + if (typeof window !== "undefined" && + window.MotionCheckAppearSync) { + removeSyncCheck = window.MotionCheckAppearSync(this, key, value); + } + this.valueSubscriptions.set(key, () => { + removeOnChange(); + if (removeSyncCheck) + removeSyncCheck(); + // Defer to MotionValue.on("change") auto-stop so React 19 remounts + // can resubscribe before the animation is cancelled (#3315). + }); + } + sortNodePosition(other) { + /** + * If either node isn't mounted, or they aren't even of the same type, + * we can't compare their document order. + */ + if (!this.current || + !other.current || + !this.sortInstanceNodePosition || + this.type !== other.type) { + return 0; + } + return this.sortInstanceNodePosition(this.current, other.current); + } + updateFeatures() { + let key = "animation"; + for (key in featureDefinitions) { + const featureDefinition = featureDefinitions[key]; + if (!featureDefinition) + continue; + const { isEnabled, Feature: FeatureConstructor } = featureDefinition; + /** + * If this feature is enabled but not active, make a new instance. + */ + if (!this.features[key] && + FeatureConstructor && + isEnabled(this.props)) { + this.features[key] = new FeatureConstructor(this); + } + /** + * If we have a feature, mount or update it. + */ + if (this.features[key]) { + const feature = this.features[key]; + if (feature.isMounted) { + feature.update(); + } + else { + feature.mount(); + feature.isMounted = true; + } + } + } + } + triggerBuild() { + this.build(this.renderState, this.latestValues, this.props); + } + /** + * Measure the current viewport box with or without transforms. + * Only measures axis-aligned boxes, rotate and skew must be manually + * removed with a re-render to work. + */ + measureViewportBox() { + return this.current + ? this.measureInstanceViewportBox(this.current, this.props) + : createBox(); + } + getStaticValue(key) { + return this.latestValues[key]; + } + setStaticValue(key, value) { + this.latestValues[key] = value; + } + /** + * Update the provided props. Ensure any newly-added motion values are + * added to our map, old ones removed, and listeners updated. + */ + update(props, presenceContext) { + const { transformTemplate, onUpdate } = this.props; + if (props.transformTemplate || transformTemplate) { + this.scheduleRender(); + } + /** + * Transforms on the compositor can't use a new transformTemplate + * or onUpdate, so move them to the main thread. + */ + if ((props.transformTemplate && !transformTemplate) || + (props.onUpdate && !onUpdate)) { + transformGroups.get(this.current)?.demote(); + } + this.prevProps = this.props; + this.props = props; + this.prevPresenceContext = this.presenceContext; + this.presenceContext = presenceContext; + /** + * Update prop event handlers ie onAnimationStart, onAnimationComplete + */ + for (let i = 0; i < propEventHandlers.length; i++) { + const key = propEventHandlers[i]; + if (this.propEventSubscriptions[key]) { + this.propEventSubscriptions[key](); + delete this.propEventSubscriptions[key]; + } + const listenerName = ("on" + key); + const listener = props[listenerName]; + if (listener) { + this.propEventSubscriptions[key] = this.on(key, listener); + } + } + this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps || {}, this), this.prevMotionValues); + if (this.handleChildMotionValue) { + this.handleChildMotionValue(); + } + } + getProps() { + return this.props; + } + /** + * Returns the variant definition with a given name. + */ + getVariant(name) { + return this.props.variants ? this.props.variants[name] : undefined; + } + /** + * Returns the defined default transition on this component. + */ + getDefaultTransition() { + return this.props.transition; + } + getTransformPagePoint() { + return this.props.transformPagePoint; + } + /** + * Add a motion value and bind it to this visual element. + */ + addValue(key, value) { + // Remove existing value if it exists + const existingValue = this.values.get(key); + if (value !== existingValue) { + if (existingValue) + this.removeValue(key); + this.bindToMotionValue(key, value); + this.values.set(key, value); + /** + * An animated value with no base value is undefined until the + * keyframe resolver reads its origin. Rendering it before then + * writes an invalid placeholder (e.g. points="undefined") that + * the resolver can read back from the DOM as the origin. + */ + const latest = value.get(); + if (latest !== undefined) + this.latestValues[key] = latest; + } + } + /** + * Remove a motion value and unbind any active subscriptions. + */ + removeValue(key) { + this.values.delete(key); + const unsubscribe = this.valueSubscriptions.get(key); + if (unsubscribe) { + unsubscribe(); + this.valueSubscriptions.delete(key); + } + delete this.latestValues[key]; + this.removeValueFromRenderState(key, this.renderState); + } + /** + * Check whether we have a motion value for this key + */ + hasValue(key) { + return this.values.has(key); + } + getValue(key, defaultValue) { + if (this.props.values && this.props.values[key]) { + return this.props.values[key]; + } + let value = this.values.get(key); + if (value === undefined && defaultValue !== undefined) { + value = motionValue(defaultValue ?? this.getDefaultValue?.(key), { + owner: this, + }); + this.addValue(key, value); + } + return value; + } + /** + * If we're trying to animate to a previously unencountered value, + * we need to check for it in our state and as a last resort read it + * directly from the instance (which might have performance implications). + */ + readValue(key, target) { + let value = this.latestValues[key] !== undefined || !this.current + ? this.latestValues[key] + : this.getBaseTargetFromProps(this.props, key) ?? + this.readValueFromInstance(this.current, key, this.options); + if (value !== undefined && value !== null) { + if (typeof value === "string" && + (isNumericalString(value) || isZeroValueString(value))) { + // If this is a number read as a string, ie "0" or "200", convert it to a number + value = parseFloat(value); + } + else if ( + /** + * If the value as read isn't animatable (e.g. "none") but + * the target is, derive an animatable none from the target. + * A value is animatable if it's a number or contains a + * number or color, which is cheaper to check than trying + * every value type in turn. + */ + typeof value !== "number" && + !complex.test(value) && + complex.test(target)) { + value = getAnimatableNone(key, target); + } + this.setBaseTarget(key, isMotionValue(value) ? value.get() : value); + } + return isMotionValue(value) ? value.get() : value; + } + /** + * Set the base target to later animate back to. This is currently + * only hydrated on creation and when we first read a value. + */ + setBaseTarget(key, value) { + this.baseTarget[key] = value; + } + on(eventName, callback) { + if (!this.events[eventName]) { + this.events[eventName] = new SubscriptionManager(); + } + return this.events[eventName].add(callback); + } + notify(eventName, ...args) { + if (this.events[eventName]) { + this.events[eventName].notify(...args); + } + } + scheduleRenderMicrotask() { + microtask.render(this.render); + } +} + +export { VisualElement, getFeatureDefinitions, setFeatureDefinitions }; +//# sourceMappingURL=VisualElement.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs new file mode 100644 index 0000000..5008a8e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.mjs @@ -0,0 +1,43 @@ +import { isMotionValue } from '../../value/utils/is-motion-value.mjs'; +import { DOMKeyframesResolver } from '../../animation/keyframes/DOMKeyframesResolver.mjs'; +import { VisualElement } from '../VisualElement.mjs'; + +class DOMVisualElement extends VisualElement { + constructor() { + super(...arguments); + this.KeyframeResolver = DOMKeyframesResolver; + } + sortInstanceNodePosition(a, b) { + /** + * compareDocumentPosition returns a bitmask, by using the bitwise & + * we're returning true if 2 in that bitmask is set to true. 2 is set + * to true if b precedes a. + */ + return a.compareDocumentPosition(b) & 2 ? 1 : -1; + } + getBaseTargetFromProps(props, key) { + const style = props.style; + return style ? style[key] : undefined; + } + removeValueFromRenderState(key, { vars, style }) { + delete vars[key]; + delete style[key]; + } + handleChildMotionValue() { + if (this.childSubscription) { + this.childSubscription(); + delete this.childSubscription; + } + const { children } = this.props; + if (isMotionValue(children)) { + this.childSubscription = children.on("change", (latest) => { + if (this.current) { + this.current.textContent = `${latest}`; + } + }); + } + } +} + +export { DOMVisualElement }; +//# sourceMappingURL=DOMVisualElement.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/is-css-var.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/is-css-var.mjs new file mode 100644 index 0000000..7ee34f4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/is-css-var.mjs @@ -0,0 +1,4 @@ +const isCSSVar = (name) => name.startsWith("--"); + +export { isCSSVar }; +//# sourceMappingURL=is-css-var.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs new file mode 100644 index 0000000..e5e6051 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs @@ -0,0 +1,86 @@ +const radToDeg = (rad) => (rad * 180) / Math.PI; +const rotate = (v) => { + const angle = radToDeg(Math.atan2(v[1], v[0])); + return rebaseAngle(angle); +}; +const matrix2dParsers = { + x: 4, + y: 5, + translateX: 4, + translateY: 5, + scaleX: 0, + scaleY: 3, + scaleZ: () => 1, + scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2, + rotate, + rotateZ: rotate, + skewX: (v) => radToDeg(Math.atan(v[1])), + skewY: (v) => radToDeg(Math.atan(v[2])), + skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2, +}; +const rebaseAngle = (angle) => { + angle = angle % 360; + if (angle < 0) + angle += 360; + return angle; +}; +const rotateZ = rotate; +const scaleX = (v) => Math.hypot(v[0], v[1]); +const scaleY = (v) => Math.hypot(v[4], v[5]); +const matrix3dParsers = { + x: 12, + y: 13, + z: 14, + translateX: 12, + translateY: 13, + translateZ: 14, + scaleX, + scaleY, + scaleZ: (v) => Math.hypot(v[8], v[9], v[10]), + scale: (v) => (scaleX(v) + scaleY(v)) / 2, + rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))), + rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))), + rotateZ, + rotate: rotateZ, + skewX: (v) => radToDeg(Math.atan(v[4])), + skewY: (v) => radToDeg(Math.atan(v[1])), + skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2, +}; +function defaultTransformValue(name) { + return name.includes("scale") ? 1 : 0; +} +function parseValueFromTransform(transform, name) { + if (!transform || transform === "none") { + return defaultTransformValue(name); + } + const matrix3dMatch = transform.match(/^matrix3d\(([-\d.e\s,]+)\)$/u); + let parsers; + let match; + if (matrix3dMatch) { + parsers = matrix3dParsers; + match = matrix3dMatch; + } + else { + const matrix2dMatch = transform.match(/^matrix\(([-\d.e\s,]+)\)$/u); + parsers = matrix2dParsers; + match = matrix2dMatch; + } + if (!match) { + return defaultTransformValue(name); + } + const valueParser = parsers[name]; + const values = match[1].split(",").map(convertTransformToNumber); + return typeof valueParser === "function" + ? valueParser(values) + : values[valueParser]; +} +const readTransformValue = (instance, name) => { + const { transform = "none" } = getComputedStyle(instance); + return parseValueFromTransform(transform, name); +}; +function convertTransformToNumber(value) { + return parseFloat(value.trim()); +} + +export { defaultTransformValue, parseValueFromTransform, readTransformValue }; +//# sourceMappingURL=parse-transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/style-computed.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/style-computed.mjs new file mode 100644 index 0000000..73002fb --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/style-computed.mjs @@ -0,0 +1,11 @@ +import { isCSSVar } from './is-css-var.mjs'; + +function getComputedStyle(element, name) { + const computedStyle = window.getComputedStyle(element); + return isCSSVar(name) + ? computedStyle.getPropertyValue(name) + : computedStyle[name]; +} + +export { getComputedStyle }; +//# sourceMappingURL=style-computed.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/style-set.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/style-set.mjs new file mode 100644 index 0000000..e4389cc --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/style-set.mjs @@ -0,0 +1,10 @@ +import { isCSSVar } from './is-css-var.mjs'; + +function setStyle(element, name, value) { + isCSSVar(name) + ? element.style.setProperty(name, value) + : (element.style[name] = value); +} + +export { setStyle }; +//# sourceMappingURL=style-set.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs new file mode 100644 index 0000000..aa8caef --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs @@ -0,0 +1,6 @@ +function camelToDash(str) { + return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`); +} + +export { camelToDash }; +//# sourceMappingURL=camel-to-dash.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs new file mode 100644 index 0000000..80604c6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.mjs @@ -0,0 +1,55 @@ +import { invariant } from 'motion-utils'; +import { isCSSVariableName } from '../../animation/utils/is-css-variable.mjs'; +import { transformProps } from '../utils/keys-transform.mjs'; +import { defaultTransformValue, readTransformValue } from '../dom/parse-transform.mjs'; +import { measureViewportBox } from '../../projection/utils/measure.mjs'; +import { DOMVisualElement } from '../dom/DOMVisualElement.mjs'; +import { buildHTMLStyles } from './utils/build-styles.mjs'; +import { renderHTML } from './utils/render.mjs'; +import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs'; + +function getComputedStyle(element) { + return window.getComputedStyle(element); +} +class HTMLVisualElement extends DOMVisualElement { + constructor() { + super(...arguments); + this.type = "html"; + this.renderInstance = renderHTML; + } + mount(instance) { + /** + * If a custom component forwards its ref to something other than a + * HTML/SVG element (a class instance, an imperative handle) there's + * nothing for Motion to style, measure or attach gestures to. #2777 + */ + invariant(Boolean(instance.style), "motion.create() components must forward their ref to a HTML or SVG element", "custom-component-ref"); + super.mount(instance); + } + readValueFromInstance(instance, key) { + if (transformProps.has(key)) { + return this.projection?.isProjecting + ? defaultTransformValue(key) + : readTransformValue(instance, key); + } + else { + const computedStyle = getComputedStyle(instance); + const value = (isCSSVariableName(key) + ? computedStyle.getPropertyValue(key) + : computedStyle[key]) || 0; + return typeof value === "string" ? value.trim() : value; + } + } + measureInstanceViewportBox(instance, { transformPagePoint }) { + return measureViewportBox(instance, transformPagePoint); + } + build(renderState, latestValues, props) { + buildHTMLStyles(renderState, latestValues, props.transformTemplate); + } + scrapeMotionValuesFromProps(props, prevProps, visualElement) { + return scrapeMotionValuesFromProps(props, prevProps, visualElement); + } +} + +export { HTMLVisualElement, getComputedStyle }; +//# sourceMappingURL=HTMLVisualElement.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/build-styles.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/build-styles.mjs new file mode 100644 index 0000000..bd068f2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/build-styles.mjs @@ -0,0 +1,66 @@ +import { getValueAsType } from '../../../value/types/utils/get-as-type.mjs'; +import { numberValueTypes } from '../../../value/types/maps/number.mjs'; +import { transformProps } from '../../utils/keys-transform.mjs'; +import { isCSSVariableName } from '../../../animation/utils/is-css-variable.mjs'; +import { buildTransform } from './build-transform.mjs'; + +function buildHTMLStyles(state, latestValues, transformTemplate) { + const { style, vars, transformOrigin } = state; + // Track whether we encounter any transform or transformOrigin values. + let hasTransform = false; + let hasTransformOrigin = false; + /** + * Loop over all our latest animated values and decide whether to handle them + * as a style or CSS variable. + * + * Transforms and transform origins are kept separately for further processing. + */ + for (const key in latestValues) { + const value = latestValues[key]; + if (transformProps.has(key)) { + // If this is a transform, flag to enable further transform processing + hasTransform = true; + continue; + } + else if (isCSSVariableName(key)) { + vars[key] = value; + continue; + } + else { + // Convert the value to its default value type, ie 0 -> "0px" + const valueAsType = getValueAsType(value, numberValueTypes[key]); + if (key.startsWith("origin")) { + // If this is a transform origin, flag and enable further transform-origin processing + hasTransformOrigin = true; + transformOrigin[key] = + valueAsType; + } + else { + style[key] = valueAsType; + } + } + } + if (!latestValues.transform) { + if (hasTransform || transformTemplate) { + style.transform = buildTransform(latestValues, state.transform, transformTemplate); + } + else if (style.transform) { + /** + * If we have previously created a transform but currently don't have any, + * reset transform style to none. + */ + style.transform = "none"; + } + } + /** + * Build a transformOrigin style. Uses the same defaults as the browser for + * undefined origins. + */ + if (hasTransformOrigin) { + const { originX = "50%", originY = "50%", originZ = 0, } = transformOrigin; + style.transformOrigin = `${originX} ${originY} ${originZ}`; + } +} + +export { buildHTMLStyles }; +//# sourceMappingURL=build-styles.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/build-transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/build-transform.mjs new file mode 100644 index 0000000..701efbc --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/build-transform.mjs @@ -0,0 +1,72 @@ +import { getValueAsType } from '../../../value/types/utils/get-as-type.mjs'; +import { numberValueTypes } from '../../../value/types/maps/number.mjs'; +import { transformPropOrder } from '../../utils/keys-transform.mjs'; + +const translateAlias = { + x: "translateX", + y: "translateY", + z: "translateZ", + transformPerspective: "perspective", +}; +const numTransforms = transformPropOrder.length; +/** + * Build a CSS transform style from individual x/y/scale etc properties. + * + * This outputs with a default order of transforms/scales/rotations, this can be customised by + * providing a transformTemplate function. + */ +function buildTransform(latestValues, transform, transformTemplate) { + // The transform string we're going to build into. + let transformString = ""; + let transformIsDefault = true; + /** + * Loop over all possible transforms in order, adding the ones that + * are present to the transform string. + */ + for (let i = 0; i < numTransforms; i++) { + const key = transformPropOrder[i]; + const value = latestValues[key]; + if (value === undefined) + continue; + let valueIsDefault = true; + if (typeof value === "number") { + valueIsDefault = value === (key.startsWith("scale") ? 1 : 0); + } + else { + const parsed = parseFloat(value); + valueIsDefault = key.startsWith("scale") ? parsed === 1 : parsed === 0; + } + if (!valueIsDefault || transformTemplate) { + const valueAsType = getValueAsType(value, numberValueTypes[key]); + if (!valueIsDefault) { + transformIsDefault = false; + const transformName = translateAlias[key] || key; + transformString += `${transformName}(${valueAsType}) `; + } + if (transformTemplate) { + transform[key] = valueAsType; + } + } + } + // `pathRotation` composes onto `rotate` as a separate additive term so + // the user's `rotate` is never clobbered. Deliberately not a slot in + // `transformPropOrder`. + const pathRotation = latestValues.pathRotation; + if (pathRotation) { + transformIsDefault = false; + transformString += `rotate(${getValueAsType(pathRotation, numberValueTypes.pathRotation)}) `; + } + transformString = transformString.trim(); + // If we have a custom `transform` template, pass our transform values and + // generated transformString to that before returning + if (transformTemplate) { + transformString = transformTemplate(transform, transformIsDefault ? "" : transformString); + } + else if (transformIsDefault) { + transformString = "none"; + } + return transformString; +} + +export { buildTransform, translateAlias }; +//# sourceMappingURL=build-transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/render.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/render.mjs new file mode 100644 index 0000000..d5e5241 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/render.mjs @@ -0,0 +1,18 @@ +function renderHTML(element, { style, vars }, styleProp, projection) { + const elementStyle = element.style; + let key; + for (key in style) { + // CSSStyleDeclaration has [index: number]: string; in the types, so we use that as key type. + elementStyle[key] = style[key]; + } + // Write projection styles directly to element style + projection?.applyProjectionStyles(elementStyle, styleProp); + for (key in vars) { + // Loop over any CSS variables and assign those. + // They can only be assigned using `setProperty`. + elementStyle.setProperty(key, vars[key]); + } +} + +export { renderHTML }; +//# sourceMappingURL=render.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.mjs new file mode 100644 index 0000000..fa40038 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.mjs @@ -0,0 +1,22 @@ +import { isMotionValue } from '../../../value/utils/is-motion-value.mjs'; +import { isForcedMotionValue } from '../../utils/is-forced-motion-value.mjs'; + +function scrapeMotionValuesFromProps(props, prevProps, visualElement) { + const style = props.style; + const prevStyle = prevProps?.style; + const newValues = {}; + if (!style) + return newValues; + for (const key in style) { + if (isMotionValue(style[key]) || + (prevStyle && isMotionValue(prevStyle[key])) || + isForcedMotionValue(key, props) || + visualElement?.getValue(key)?.liveStyle !== undefined) { + newValues[key] = style[key]; + } + } + return newValues; +} + +export { scrapeMotionValuesFromProps }; +//# sourceMappingURL=scrape-motion-values.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/object/ObjectVisualElement.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/object/ObjectVisualElement.mjs new file mode 100644 index 0000000..d2dedf7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/object/ObjectVisualElement.mjs @@ -0,0 +1,42 @@ +import { createBox } from '../../projection/geometry/models.mjs'; +import { VisualElement } from '../VisualElement.mjs'; + +function isObjectKey(key, object) { + return key in object; +} +class ObjectVisualElement extends VisualElement { + constructor() { + super(...arguments); + this.type = "object"; + } + readValueFromInstance(instance, key) { + if (isObjectKey(key, instance)) { + const value = instance[key]; + if (typeof value === "string" || typeof value === "number") { + return value; + } + } + return undefined; + } + getBaseTargetFromProps() { + return undefined; + } + removeValueFromRenderState(key, renderState) { + delete renderState.output[key]; + } + measureInstanceViewportBox() { + return createBox(); + } + build(renderState, latestValues) { + Object.assign(renderState.output, latestValues); + } + renderInstance(instance, { output }) { + Object.assign(instance, output); + } + sortInstanceNodePosition() { + return 0; + } +} + +export { ObjectVisualElement }; +//# sourceMappingURL=ObjectVisualElement.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/store.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/store.mjs new file mode 100644 index 0000000..9a65634 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/store.mjs @@ -0,0 +1,4 @@ +const visualElementStore = new WeakMap(); + +export { visualElementStore }; +//# sourceMappingURL=store.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.mjs new file mode 100644 index 0000000..8c834b7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.mjs @@ -0,0 +1,70 @@ +import { transformProps } from '../utils/keys-transform.mjs'; +import { getDefaultValueType } from '../../value/types/maps/defaults.mjs'; +import { createBox } from '../../projection/geometry/models.mjs'; +import { DOMVisualElement } from '../dom/DOMVisualElement.mjs'; +import { defaultTransformValue } from '../dom/parse-transform.mjs'; +import { camelToDash } from '../dom/utils/camel-to-dash.mjs'; +import { cssStyleProperties, buildSVGAttrs } from './utils/build-attrs.mjs'; +import { camelCaseAttributes } from './utils/camel-case-attrs.mjs'; +import { isSVGTag } from './utils/is-svg-tag.mjs'; +import { renderSVG } from './utils/render.mjs'; +import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs'; + +class SVGVisualElement extends DOMVisualElement { + constructor() { + super(...arguments); + this.type = "svg"; + this.isSVGTag = false; + this.measureInstanceViewportBox = createBox; + } + getBaseTargetFromProps(props, key) { + /** + * An independent transform's base is never an attribute of the same + * name, e.g. <rect x> is a position, not a translate. Like HTML it + * comes from style, falling back to the transform's default. + */ + return transformProps.has(key) + ? super.getBaseTargetFromProps(props, key) ?? + defaultTransformValue(key) + : props[key]; + } + /** + * An independent transform's origin is never read from the DOM, so it + * starts from its latest or default value and renders on mount. + */ + getDefaultValue(key) { + return transformProps.has(key) + ? this.latestValues[key] ?? defaultTransformValue(key) + : undefined; + } + readValueFromInstance(instance, key) { + if (transformProps.has(key)) { + const defaultType = getDefaultValueType(key); + return defaultType ? defaultType.default || 0 : 0; + } + if (cssStyleProperties.includes(key)) { + const computedStyle = getComputedStyle(instance); + const value = computedStyle[key]; + if (typeof value === "string" && value) + return value.trim(); + } + key = !camelCaseAttributes.has(key) ? camelToDash(key) : key; + return instance.getAttribute(key); + } + scrapeMotionValuesFromProps(props, prevProps, visualElement) { + return scrapeMotionValuesFromProps(props, prevProps, visualElement); + } + build(renderState, latestValues, props) { + buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate, props.style); + } + renderInstance(instance, renderState, styleProp, projection) { + renderSVG(instance, renderState, styleProp, projection); + } + mount(instance) { + this.isSVGTag = isSVGTag(instance.tagName); + super.mount(instance); + } +} + +export { SVGVisualElement }; +//# sourceMappingURL=SVGVisualElement.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs new file mode 100644 index 0000000..c46402e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.mjs @@ -0,0 +1,71 @@ +import { buildHTMLStyles } from '../../html/utils/build-styles.mjs'; +import { buildSVGPath } from './path.mjs'; + +/** + * Values rendered via style rather than as attributes. This must include + * every value WAAPI can accelerate, as WAAPI writes its final value to + * style, which would otherwise override later attribute writes. + */ +const cssStyleProperties = [ + "transform", + "opacity", + "clipPath", + "filter", + "offsetDistance", + "offsetPath", + "offsetRotate", + "offsetAnchor", +]; +/** + * Build SVG visual attributes, like cx and style.transform + */ +function buildSVGAttrs(state, { attrX, attrY, attrScale, pathLength, pathSpacing = 1, pathOffset = 0, +// This is object creation, which we try to avoid per-frame. +...latest }, isSVGTag, transformTemplate, styleProp) { + buildHTMLStyles(state, latest, transformTemplate); + /** + * For svg tags we just want to make sure viewBox is animatable and treat all the styles + * as normal HTML tags. + */ + if (isSVGTag) { + if (state.style.viewBox) { + state.attrs.viewBox = state.style.viewBox; + } + return; + } + state.attrs = state.style; + state.style = {}; + const { attrs, style } = state; + for (const key of cssStyleProperties) { + if (attrs[key] !== undefined) { + style[key] = attrs[key]; + delete attrs[key]; + } + } + if (style.transform || attrs.transformOrigin) { + style.transformOrigin = attrs.transformOrigin ?? "50% 50%"; + delete attrs.transformOrigin; + } + if (style.transform) { + /** + * SVG's element transform-origin uses its own median as a reference. + * Therefore, transformBox becomes a fill-box + */ + style.transformBox = styleProp?.transformBox ?? "fill-box"; + delete attrs.transformBox; + } + // Render attrX/attrY/attrScale as attributes + if (attrX !== undefined) + attrs.x = attrX; + if (attrY !== undefined) + attrs.y = attrY; + if (attrScale !== undefined) + attrs.scale = attrScale; + // Build SVG path if one has been defined + if (pathLength !== undefined) { + buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false); + } +} + +export { buildSVGAttrs, cssStyleProperties }; +//# sourceMappingURL=build-attrs.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.mjs new file mode 100644 index 0000000..4885a9b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.mjs @@ -0,0 +1,31 @@ +/** + * A set of attribute names that are always read/written as camel case. + */ +const camelCaseAttributes = new Set([ + "baseFrequency", + "diffuseConstant", + "kernelMatrix", + "kernelUnitLength", + "keySplines", + "keyTimes", + "limitingConeAngle", + "markerHeight", + "markerWidth", + "numOctaves", + "targetX", + "targetY", + "surfaceScale", + "specularConstant", + "specularExponent", + "stdDeviation", + "tableValues", + "viewBox", + "gradientTransform", + "pathLength", + "startOffset", + "textLength", + "lengthAdjust", +]); + +export { camelCaseAttributes }; +//# sourceMappingURL=camel-case-attrs.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.mjs new file mode 100644 index 0000000..37ab448 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.mjs @@ -0,0 +1,4 @@ +const isSVGTag = (tag) => typeof tag === "string" && tag.toLowerCase() === "svg"; + +export { isSVGTag }; +//# sourceMappingURL=is-svg-tag.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs new file mode 100644 index 0000000..02aff41 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/path.mjs @@ -0,0 +1,32 @@ +const dashKeys = { + offset: "stroke-dashoffset", + array: "stroke-dasharray", +}; +const camelKeys = { + offset: "strokeDashoffset", + array: "strokeDasharray", +}; +/** + * Build SVG path properties. Uses the path's measured length to convert + * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset + * and stroke-dasharray attributes. + * + * This function is mutative to reduce per-frame GC. + * + * Note: We use unitless values for stroke-dasharray and stroke-dashoffset + * because Safari incorrectly scales px values when the page is zoomed. + */ +function buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) { + // Normalise path length by setting SVG attribute pathLength to 1 + attrs.pathLength = 1; + // We use dash case when setting attributes directly to the DOM node and camel case + // when defining props on a React component. + const keys = useDashCase ? dashKeys : camelKeys; + // Build the dash offset (unitless to avoid Safari zoom bug) + attrs[keys.offset] = `${-offset}`; + // Build the dash array (unitless to avoid Safari zoom bug) + attrs[keys.array] = `${length} ${spacing}`; +} + +export { buildSVGPath }; +//# sourceMappingURL=path.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/render.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/render.mjs new file mode 100644 index 0000000..8171361 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/render.mjs @@ -0,0 +1,13 @@ +import { camelToDash } from '../../dom/utils/camel-to-dash.mjs'; +import { renderHTML } from '../../html/utils/render.mjs'; +import { camelCaseAttributes } from './camel-case-attrs.mjs'; + +function renderSVG(element, renderState, _styleProp, projection) { + renderHTML(element, renderState, undefined, projection); + for (const key in renderState.attrs) { + element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]); + } +} + +export { renderSVG }; +//# sourceMappingURL=render.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.mjs new file mode 100644 index 0000000..3e554a7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.mjs @@ -0,0 +1,25 @@ +import { isMotionValue } from '../../../value/utils/is-motion-value.mjs'; +import { transformPropOrder } from '../../utils/keys-transform.mjs'; +import { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs'; + +function scrapeMotionValuesFromProps(props, prevProps, visualElement) { + const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement); + for (const key in props) { + /** + * A MotionValue child is rendered as text content by + * DOMVisualElement, so it mustn't also be written as an attribute. + */ + if (key !== "children" && + (isMotionValue(props[key]) || + isMotionValue(prevProps[key]))) { + const targetKey = transformPropOrder.indexOf(key) !== -1 + ? "attr" + key.charAt(0).toUpperCase() + key.substring(1) + : key; + newValues[targetKey] = props[key]; + } + } + return newValues; +} + +export { scrapeMotionValuesFromProps }; +//# sourceMappingURL=scrape-motion-values.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs new file mode 100644 index 0000000..f840d82 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/animation-state.mjs @@ -0,0 +1,279 @@ +import { animateVisualElement } from '../../animation/interfaces/visual-element.mjs'; +import { calcChildStagger } from '../../animation/utils/calc-child-stagger.mjs'; +import { isMotionValue } from '../../value/utils/is-motion-value.mjs'; +import { isAnimationControls } from './is-animation-controls.mjs'; +import { isVariantLabel } from './is-variant-label.mjs'; +import { resolveVariant, getTypeCustom } from './resolve-dynamic-variants.mjs'; +import { shallowCompare } from './shallow-compare.mjs'; +import { variantPriorityOrder } from './variant-props.mjs'; + +const reversePriorityOrder = [...variantPriorityOrder].reverse(); +/** + * Diffs the element's animation props (one layer per AnimationType, highest + * priority wins each value) against the previous call and starts animations + * for what changed. + * + * Uses `any` type for visualElement to avoid circular dependencies. It reads + * props, parent, presenceContext, variantChildren, enteringChildren, + * manuallyAnimateOnMount, blockInitialAnimation, getValue(), + * getBaseTargetFromProps(), baseTarget and initialValues. + */ +function createAnimationState(visualElement) { + let animate = (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options))); + let state = createState(); + let isInitialRender = true; + /** + * After a reset (StrictMode, Suspense, AnimatePresence re-entry) the next + * animateChanges() mounts again, but initial={false} no longer applies. + */ + let wasReset = false; + function animateChanges(changedActiveType) { + const { props, parent, manuallyAnimateOnMount } = visualElement; + const isMounting = isInitialRender || wasReset; + const animations = []; + /** + * Values removed from a type. A lower-priority type that defines + * them animates them back, otherwise they fall back to a base target. + */ + const removedKeys = new Set(); + /** + * Values claimed by active, higher-priority types. + */ + let encounteredKeys = {}; + /** + * Once a type has been deactivated, lower-priority variant labels + * re-animate so variant children animate back too. + */ + let removedVariantIndex = Infinity; + /** + * Variant labels are inherited from the closest variant-controlling + * ancestor, unless an element on the way has inherit={false}. + */ + let source = visualElement; + do + source = source.props.inherit !== false && source.parent; + while (source && !source.isControllingVariants); + reversePriorityOrder.forEach((type, i) => { + const typeState = state[type]; + const ownProp = props[type]; + const inheritedProp = source && source.props[type]; + const prop = ownProp !== undefined + ? ownProp + : isVariantLabel(inheritedProp) || inheritedProp === false + ? inheritedProp + : undefined; + const propIsVariant = isVariantLabel(prop); + const activeDelta = type === changedActiveType ? typeState.isActive : null; + if (activeDelta === false) + removedVariantIndex = i; + /** + * Inherited labels are animated by the parent through + * variantChildren, unless this element mounted after its parent. + */ + const isInherited = propIsVariant && + ownProp === undefined && + !(isMounting && manuallyAnimateOnMount); + typeState.protectedKeys = { ...encounteredKeys }; + if ((!typeState.isActive && activeDelta === null) || + (!prop && !typeState.prevProp) || + isAnimationControls(prop) || + typeof prop === "boolean") { + return; + } + /** + * Don't re-resolve a running exit: a changed custom would start + * new value animations that stop the originals, leaving the exit + * promise unresolved and the element stuck in the DOM. + */ + if (type === "exit" && typeState.isActive && activeDelta !== true) { + encounteredKeys = { + ...encounteredKeys, + ...typeState.prevResolvedValues, + }; + return; + } + const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop); + let shouldAnimateType = variantDidChange || + (propIsVariant && + ((activeDelta && !isInherited) || i > removedVariantIndex)); + let handledRemovedValues = false; + const definitionList = Array.isArray(prop) ? prop : [prop]; + let resolvedValues = {}; + if (activeDelta !== false) { + for (const definition of definitionList) { + const { transition, transitionEnd, ...target } = resolveVariant(visualElement, definition, getTypeCustom(visualElement, type)) || {}; + resolvedValues = { + ...resolvedValues, + ...target, + ...transitionEnd, + }; + } + } + const { prevResolvedValues } = typeState; + for (const key in { ...prevResolvedValues, ...resolvedValues }) { + if (key in encounteredKeys) + continue; + const next = resolvedValues[key]; + const prev = prevResolvedValues[key]; + /** + * Keyframes compare by value, but replay whenever the + * variant label changed. + */ + const valueHasChanged = Array.isArray(next) && Array.isArray(prev) + ? !shallowCompare(next, prev) || variantDidChange + : next !== prev; + if (valueHasChanged && + (next === undefined || next === null)) { + removedKeys.add(key); + } + else if (valueHasChanged || + (next !== undefined && removedKeys.has(key))) { + shouldAnimateType = true; + if (removedKeys.delete(key)) + handledRemovedValues = true; + typeState.needsAnimating[key] = true; + const motionValue = visualElement.getValue(key); + if (motionValue) + motionValue.liveStyle = false; + } + else { + typeState.protectedKeys[key] = true; + } + } + typeState.prevProp = prop; + typeState.prevResolvedValues = resolvedValues; + if (typeState.isActive) { + encounteredKeys = { ...encounteredKeys, ...resolvedValues }; + } + if (shouldAnimateType && + (!(isInherited && variantDidChange) || handledRemovedValues)) { + for (const animation of definitionList) { + const options = { type }; + /** + * Elements that mount into an already-mounted parent + * animate themselves, staggered by the parent variant's + * delayChildren. + */ + if (typeof animation === "string" && + isMounting && + manuallyAnimateOnMount && + parent?.enteringChildren) { + const delayChildren = resolveVariant(parent, animation) + ?.transition?.delayChildren; + options.delay = calcChildStagger(parent.enteringChildren, visualElement, delayChildren); + } + animations.push({ animation, options }); + } + } + }); + /** + * Removed values that no lower-priority type defines animate back to + * initial, then style, then the value as first read. If initial no + * longer defines a value it once did, it stays where it is. + */ + if (removedKeys.size) { + const { initial } = props; + const fallbackAnimation = {}; + const resolvedInitial = typeof initial !== "boolean" && + resolveVariant(visualElement, Array.isArray(initial) ? initial[0] : initial, visualElement.presenceContext?.custom); + if (resolvedInitial && resolvedInitial.transition) { + fallbackAnimation.transition = resolvedInitial.transition; + } + removedKeys.forEach((key) => { + const motionValue = visualElement.getValue(key); + if (motionValue) + motionValue.liveStyle = true; + const fromInitial = resolvedInitial && !Array.isArray(initial) + ? resolvedInitial[key] + : undefined; + const fromProps = visualElement.getBaseTargetFromProps(props, key); + fallbackAnimation[key] = + (fromInitial !== undefined + ? fromInitial + : fromProps !== undefined && !isMotionValue(fromProps) + ? fromProps + : visualElement.initialValues[key] === undefined + ? visualElement.baseTarget[key] + : undefined) ?? null; + /** + * If it stays where it is, that's now its base. Otherwise a + * later removal (like a gesture ending) would also stay, + * leaving the value stuck. Stop first so accelerated + * animations sync the value they reached. In practice initial + * only changes like this with Fast Refresh, so this is + * dev-only (#3787). + */ + if (process.env.NODE_ENV !== "production" && + fallbackAnimation[key] === null && + visualElement.initialValues[key] !== undefined) { + delete visualElement.initialValues[key]; + motionValue?.stop(); + visualElement.baseTarget[key] = motionValue?.get(); + } + }); + animations.push({ animation: fallbackAnimation }); + } + const blockAnimation = (isMounting && visualElement.blockInitialAnimation) || + (isInitialRender && + !manuallyAnimateOnMount && + (props.initial === false || props.initial === props.animate)); + isInitialRender = wasReset = false; + return !blockAnimation && animations.length + ? animate(animations) + : Promise.resolve(); + } + /** + * Change whether a certain animation type is active. + */ + function setActive(type, isActive) { + if (state[type].isActive === isActive) + return Promise.resolve(); + visualElement.variantChildren?.forEach((child) => child.animationState?.setActive(type, isActive)); + state[type].isActive = isActive; + const animations = animateChanges(type); + for (const key in state) { + state[key].protectedKeys = {}; + } + return animations; + } + return { + animateChanges, + setActive, + /** + * Allows tests to inject a mocked animate function. + * @internal + */ + setAnimateFunction: (makeAnimator) => { + animate = makeAnimator(visualElement); + }, + getState: () => state, + reset: () => { + state = createState(); + wasReset = true; + }, + }; +} +function checkVariantsDidChange(prev, next) { + if (typeof next === "string") { + return next !== prev; + } + else if (Array.isArray(next)) { + return !shallowCompare(next, prev); + } + return false; +} +function createState() { + const state = {}; + for (const type of variantPriorityOrder) { + state[type] = { + isActive: type === "animate", + protectedKeys: {}, + needsAnimating: {}, + prevResolvedValues: {}, + }; + } + return state; +} + +export { checkVariantsDidChange, createAnimationState }; +//# sourceMappingURL=animation-state.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/get-variant-context.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/get-variant-context.mjs new file mode 100644 index 0000000..6866d11 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/get-variant-context.mjs @@ -0,0 +1,33 @@ +import { isVariantLabel } from './is-variant-label.mjs'; +import { variantProps } from './variant-props.mjs'; + +const numVariantProps = variantProps.length; +/** + * Get variant context from a visual element's parent chain. + * Uses `any` type for visualElement to avoid circular dependencies. + */ +function getVariantContext(visualElement) { + if (!visualElement) + return undefined; + if (!visualElement.isControllingVariants) { + const context = visualElement.parent + ? getVariantContext(visualElement.parent) || {} + : {}; + if (visualElement.props.initial !== undefined) { + context.initial = visualElement.props.initial; + } + return context; + } + const context = {}; + for (let i = 0; i < numVariantProps; i++) { + const name = variantProps[i]; + const prop = visualElement.props[name]; + if (isVariantLabel(prop) || prop === false) { + context[name] = prop; + } + } + return context; +} + +export { getVariantContext }; +//# sourceMappingURL=get-variant-context.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.mjs new file mode 100644 index 0000000..17f587f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.mjs @@ -0,0 +1,8 @@ +function isAnimationControls(v) { + return (v !== null && + typeof v === "object" && + typeof v.start === "function"); +} + +export { isAnimationControls }; +//# sourceMappingURL=is-animation-controls.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs new file mode 100644 index 0000000..5963866 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.mjs @@ -0,0 +1,20 @@ +import { isAnimationControls } from './is-animation-controls.mjs'; +import { isVariantLabel } from './is-variant-label.mjs'; +import { variantProps } from './variant-props.mjs'; + +function isControllingVariants(props) { + if (isAnimationControls(props.animate)) + return true; + for (let i = 0; i < variantProps.length; i++) { + if (isVariantLabel(props[variantProps[i]])) { + return true; + } + } + return false; +} +function isVariantNode(props) { + return Boolean(isControllingVariants(props) || props.variants); +} + +export { isControllingVariants, isVariantNode }; +//# sourceMappingURL=is-controlling-variants.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs new file mode 100644 index 0000000..e9bb0bd --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.mjs @@ -0,0 +1,13 @@ +import { transformProps } from './keys-transform.mjs'; +import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs'; +export { addScaleCorrector } from '../../projection/styles/scale-correction.mjs'; + +function isForcedMotionValue(key, { layout, layoutId }) { + return (transformProps.has(key) || + key.startsWith("origin") || + ((layout || layoutId !== undefined) && + (!!scaleCorrectors[key] || key === "opacity"))); +} + +export { isForcedMotionValue, scaleCorrectors }; +//# sourceMappingURL=is-forced-motion-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.mjs new file mode 100644 index 0000000..9e01dbe --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.mjs @@ -0,0 +1,6 @@ +const isKeyframesTarget = (v) => { + return Array.isArray(v); +}; + +export { isKeyframesTarget }; +//# sourceMappingURL=is-keyframes-target.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-variant-label.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-variant-label.mjs new file mode 100644 index 0000000..1064983 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/is-variant-label.mjs @@ -0,0 +1,9 @@ +/** + * Decides if the supplied variable is variant label + */ +function isVariantLabel(v) { + return typeof v === "string" || Array.isArray(v); +} + +export { isVariantLabel }; +//# sourceMappingURL=is-variant-label.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/keys-position.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/keys-position.mjs new file mode 100644 index 0000000..d000529 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/keys-position.mjs @@ -0,0 +1,14 @@ +import { transformPropOrder } from './keys-transform.mjs'; + +const positionalKeys = new Set([ + "width", + "height", + "top", + "left", + "right", + "bottom", + ...transformPropOrder, +]); + +export { positionalKeys }; +//# sourceMappingURL=keys-position.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs new file mode 100644 index 0000000..1391d2b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs @@ -0,0 +1,37 @@ +/** + * Generate a list of every possible transform key. + */ +const transformPropOrder = [ + "transformPerspective", + "x", + "y", + "z", + "translateX", + "translateY", + "translateZ", + "scale", + "scaleX", + "scaleY", + "scaleZ", + "rotate", + "rotateX", + "rotateY", + "rotateZ", + "skew", + "skewX", + "skewY", +]; +/** + * A quick lookup for transform props. + * + * `pathRotation` is a transform for routing purposes (skipped from raw + * style application, wired to the transform composite, flags transform + * dirty) but is intentionally NOT in `transformPropOrder` — it is + * composed onto `rotate` at the build sites, not serialized in its own + * slot, and must stay out of the order-array consumers (parse-transform, + * unit-conversion, keys-position). + */ +const transformProps = /*@__PURE__*/ (() => new Set([...transformPropOrder, "pathRotation"]))(); + +export { transformPropOrder, transformProps }; +//# sourceMappingURL=keys-transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/motion-values.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/motion-values.mjs new file mode 100644 index 0000000..be01fdf --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/motion-values.mjs @@ -0,0 +1,56 @@ +import { motionValue } from '../../value/index.mjs'; +import { isMotionValue } from '../../value/utils/is-motion-value.mjs'; + +/** + * Updates motion values from props changes. + * Uses `any` type for element to avoid circular dependencies with VisualElement. + */ +function updateMotionValuesFromProps(element, next, prev) { + for (const key in next) { + const nextValue = next[key]; + const prevValue = prev[key]; + if (isMotionValue(nextValue)) { + /** + * If this is a motion value found in props or style, we want to add it + * to our visual element's motion value map. + */ + element.addValue(key, nextValue); + } + else if (isMotionValue(prevValue)) { + /** + * If we're swapping from a motion value to a static value, + * create a new motion value from that + */ + element.addValue(key, motionValue(nextValue, { owner: element })); + } + else if (prevValue !== nextValue) { + /** + * If this is a flat value that has changed, update the motion value + * or create one if it doesn't exist. We only want to do this if we're + * not handling the value with our animation state. + */ + if (element.hasValue(key)) { + const existingValue = element.getValue(key); + if (existingValue.liveStyle === true) { + existingValue.jump(nextValue); + } + else if (!existingValue.hasAnimated) { + existingValue.set(nextValue); + } + } + else { + const latestValue = element.getStaticValue(key); + element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element })); + } + } + } + // Handle removed values + for (const key in prev) { + if (next[key] === undefined) + element.removeValue(key); + } + return next; +} + +export { updateMotionValuesFromProps }; +//# sourceMappingURL=motion-values.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.mjs new file mode 100644 index 0000000..a9550a2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.mjs @@ -0,0 +1,20 @@ +import { hasReducedMotionListener, prefersReducedMotion } from './state.mjs'; + +const isBrowser = typeof window !== "undefined"; +function initPrefersReducedMotion() { + hasReducedMotionListener.current = true; + if (!isBrowser) + return; + if (window.matchMedia) { + const motionMediaQuery = window.matchMedia("(prefers-reduced-motion)"); + const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches); + motionMediaQuery.addEventListener("change", setReducedMotionPreferences); + setReducedMotionPreferences(); + } + else { + prefersReducedMotion.current = false; + } +} + +export { hasReducedMotionListener, initPrefersReducedMotion, prefersReducedMotion }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.mjs new file mode 100644 index 0000000..c846f8f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.mjs @@ -0,0 +1,6 @@ +// Does this device prefer reduced motion? Returns `null` server-side. +const prefersReducedMotion = { current: null }; +const hasReducedMotionListener = { current: false }; + +export { hasReducedMotionListener, prefersReducedMotion }; +//# sourceMappingURL=state.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.mjs new file mode 100644 index 0000000..90288c2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.mjs @@ -0,0 +1,13 @@ +import { resolveVariantFromProps } from './resolve-variants.mjs'; + +function resolveVariant(visualElement, definition, custom) { + return resolveVariantFromProps(visualElement.getProps(), definition, custom, visualElement); +} +/** + * Exit variants resolve with AnimatePresence's custom, every other type + * with the element's own. + */ +const getTypeCustom = (visualElement, type) => type === "exit" ? visualElement.presenceContext?.custom : undefined; + +export { getTypeCustom, resolveVariant }; +//# sourceMappingURL=resolve-dynamic-variants.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs new file mode 100644 index 0000000..0f32234 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/resolve-variants.mjs @@ -0,0 +1,26 @@ +function getValueState(visualElement) { + const state = [{}, {}]; + visualElement?.values.forEach((value, key) => { + state[0][key] = value.get(); + state[1][key] = value.getVelocity(); + }); + return state; +} +function resolveVariantFromProps(props, definition, custom, visualElement) { + const resolveFunction = (def) => typeof def === "function" + ? def(custom !== undefined ? custom : props.custom, ...getValueState(visualElement)) + : def; + /** + * Resolve a function, then a variant label (which the function may have + * returned), then a function again as the label may point to one. The + * final function can only return a target object. + */ + definition = resolveFunction(definition); + if (typeof definition === "string") { + definition = props.variants && props.variants[definition]; + } + return resolveFunction(definition); +} + +export { resolveVariantFromProps }; +//# sourceMappingURL=resolve-variants.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/setters.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/setters.mjs new file mode 100644 index 0000000..9c94d6e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/setters.mjs @@ -0,0 +1,32 @@ +import { motionValue } from '../../value/index.mjs'; +import { resolveVariant } from './resolve-dynamic-variants.mjs'; +import { isKeyframesTarget } from './is-keyframes-target.mjs'; + +/** + * Set VisualElement's MotionValue, creating a new MotionValue for it if + * it doesn't exist. + */ +function setMotionValue(visualElement, key, value) { + if (visualElement.hasValue(key)) { + visualElement.getValue(key).set(value); + } + else { + visualElement.addValue(key, motionValue(value)); + } +} +function resolveFinalValueInKeyframes(v) { + // TODO maybe throw if v.length - 1 is placeholder token? + return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v; +} +function setTarget(visualElement, definition) { + const resolved = resolveVariant(visualElement, definition); + let { transitionEnd = {}, transition = {}, ...target } = resolved || {}; + target = { ...target, ...transitionEnd }; + for (const key in target) { + const value = resolveFinalValueInKeyframes(target[key]); + setMotionValue(visualElement, key, value); + } +} + +export { setTarget }; +//# sourceMappingURL=setters.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/shallow-compare.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/shallow-compare.mjs new file mode 100644 index 0000000..a6bf308 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/shallow-compare.mjs @@ -0,0 +1,15 @@ +function shallowCompare(next, prev) { + if (!Array.isArray(prev)) + return false; + const prevLength = prev.length; + if (prevLength !== next.length) + return false; + for (let i = 0; i < prevLength; i++) { + if (prev[i] !== next[i]) + return false; + } + return true; +} + +export { shallowCompare }; +//# sourceMappingURL=shallow-compare.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/variant-props.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/variant-props.mjs new file mode 100644 index 0000000..56a3899 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/render/utils/variant-props.mjs @@ -0,0 +1,13 @@ +const variantPriorityOrder = [ + "animate", + "whileInView", + "whileFocus", + "whileHover", + "whileTap", + "whileDrag", + "exit", +]; +const variantProps = ["initial", ...variantPriorityOrder]; + +export { variantPriorityOrder, variantProps }; +//# sourceMappingURL=variant-props.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/handle-element.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/handle-element.mjs new file mode 100644 index 0000000..7b4abe3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/handle-element.mjs @@ -0,0 +1,64 @@ +import { isSVGElement } from '../utils/is-svg-element.mjs'; +import { resolveElements } from '../utils/resolve-elements.mjs'; + +const resizeHandlers = new WeakMap(); +let observer; +const getSize = (borderBoxAxis, svgAxis, htmlAxis) => (target, borderBoxSize) => { + if (borderBoxSize && borderBoxSize[0]) { + return borderBoxSize[0][(borderBoxAxis + "Size")]; + } + else if (isSVGElement(target) && "getBBox" in target) { + return target.getBBox()[svgAxis]; + } + else { + return target[htmlAxis]; + } +}; +const getWidth = /*@__PURE__*/ getSize("inline", "width", "offsetWidth"); +const getHeight = /*@__PURE__*/ getSize("block", "height", "offsetHeight"); +function notifyTarget({ target, borderBoxSize }) { + resizeHandlers.get(target)?.forEach((handler) => { + handler(target, { + get width() { + return getWidth(target, borderBoxSize); + }, + get height() { + return getHeight(target, borderBoxSize); + }, + }); + }); +} +function notifyAll(entries) { + entries.forEach(notifyTarget); +} +function createResizeObserver() { + if (typeof ResizeObserver === "undefined") + return; + observer = new ResizeObserver(notifyAll); +} +function resizeElement(target, handler) { + if (!observer) + createResizeObserver(); + const elements = resolveElements(target); + elements.forEach((element) => { + let elementHandlers = resizeHandlers.get(element); + if (!elementHandlers) { + elementHandlers = new Set(); + resizeHandlers.set(element, elementHandlers); + } + elementHandlers.add(handler); + observer?.observe(element); + }); + return () => { + elements.forEach((element) => { + const elementHandlers = resizeHandlers.get(element); + elementHandlers?.delete(handler); + if (!elementHandlers?.size) { + observer?.unobserve(element); + } + }); + }; +} + +export { resizeElement }; +//# sourceMappingURL=handle-element.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/handle-window.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/handle-window.mjs new file mode 100644 index 0000000..cdc8977 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/handle-window.mjs @@ -0,0 +1,32 @@ +const windowCallbacks = new Set(); +let windowResizeHandler; +function createWindowResizeHandler() { + windowResizeHandler = () => { + const info = { + get width() { + return window.innerWidth; + }, + get height() { + return window.innerHeight; + }, + }; + windowCallbacks.forEach((callback) => callback(info)); + }; + window.addEventListener("resize", windowResizeHandler); +} +function resizeWindow(callback) { + windowCallbacks.add(callback); + if (!windowResizeHandler) + createWindowResizeHandler(); + return () => { + windowCallbacks.delete(callback); + if (!windowCallbacks.size && + typeof windowResizeHandler === "function") { + window.removeEventListener("resize", windowResizeHandler); + windowResizeHandler = undefined; + } + }; +} + +export { resizeWindow }; +//# sourceMappingURL=handle-window.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/index.mjs new file mode 100644 index 0000000..5d871a6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/resize/index.mjs @@ -0,0 +1,9 @@ +import { resizeElement } from './handle-element.mjs'; +import { resizeWindow } from './handle-window.mjs'; + +function resize(a, b) { + return typeof a === "function" ? resizeWindow(a) : resizeElement(a, b); +} + +export { resize }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/stats/buffer.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/stats/buffer.mjs new file mode 100644 index 0000000..6349d90 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/stats/buffer.mjs @@ -0,0 +1,7 @@ +const statsBuffer = { + value: null, + addProjectionMetrics: null, +}; + +export { statsBuffer }; +//# sourceMappingURL=buffer.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/stats/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/stats/index.mjs new file mode 100644 index 0000000..9a78f93 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/stats/index.mjs @@ -0,0 +1,29 @@ +import { statsBuffer } from './buffer.mjs'; + +function clearStatsBuffer() { + statsBuffer.value = null; + statsBuffer.addProjectionMetrics = null; +} +function recordStats() { + if (statsBuffer.value) { + clearStatsBuffer(); + throw new Error("Stats are already being measured"); + } + const buffer = statsBuffer; + buffer.value = { + layoutProjection: { + nodes: [], + calculatedTargetDeltas: [], + calculatedProjections: [], + }, + }; + buffer.addProjectionMetrics = (metrics) => { + const { layoutProjection } = buffer.value; + layoutProjection.nodes.push(metrics.nodes); + layoutProjection.calculatedTargetDeltas.push(metrics.calculatedTargetDeltas); + layoutProjection.calculatedProjections.push(metrics.calculatedProjections); + }; +} + +export { recordStats }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/border-radius.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/border-radius.mjs new file mode 100644 index 0000000..8fc6f60 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/border-radius.mjs @@ -0,0 +1,15 @@ +/** + * The four corner-radius longhands. Shared so the projection mixer, scale + * corrector, WAAPI px-value set and view-transition crop pass don't each carry + * their own copy. Order is irrelevant - every consumer mixes/corrects/animates + * each corner independently. + */ +const cornerRadiusProps = [ + "borderTopLeftRadius", + "borderTopRightRadius", + "borderBottomRightRadius", + "borderBottomLeftRadius", +]; + +export { cornerRadiusProps }; +//# sourceMappingURL=border-radius.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/delay.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/delay.mjs new file mode 100644 index 0000000..55bfdf8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/delay.mjs @@ -0,0 +1,25 @@ +import { time } from '../frameloop/sync-time.mjs'; +import { secondsToMilliseconds } from 'motion-utils'; +import { frame, cancelFrame } from '../frameloop/frame.mjs'; + +/** + * Timeout defined in ms + */ +function delay(callback, timeout) { + const start = time.now(); + const checkElapsed = ({ timestamp }) => { + const elapsed = timestamp - start; + if (elapsed >= timeout) { + cancelFrame(checkElapsed); + callback(elapsed - timeout); + } + }; + frame.setup(checkElapsed, true); + return () => cancelFrame(checkElapsed); +} +function delayInSeconds(callback, timeout) { + return delay(callback, secondsToMilliseconds(timeout)); +} + +export { delay, delayInSeconds }; +//# sourceMappingURL=delay.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/interpolate.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/interpolate.mjs new file mode 100644 index 0000000..a7260c7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/interpolate.mjs @@ -0,0 +1,75 @@ +import { invariant, clamp, MotionGlobalConfig, noop, pipe, progress } from 'motion-utils'; +import { mix } from './mix/index.mjs'; + +function createMixers(output, ease, customMixer) { + const mixers = []; + const mixerFactory = customMixer || MotionGlobalConfig.mix || mix; + const numMixers = output.length - 1; + for (let i = 0; i < numMixers; i++) { + let mixer = mixerFactory(output[i], output[i + 1]); + if (ease) { + const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease; + mixer = pipe(easingFunction, mixer); + } + mixers.push(mixer); + } + return mixers; +} +/** + * Create a function that maps from a numerical input array to a generic output array. + * + * Accepts: + * - Numbers + * - Colors (hex, hsl, hsla, rgb, rgba) + * - Complex (combinations of one or more numbers or strings) + * + * ```jsx + * const mixColor = interpolate([0, 1], ['#fff', '#000']) + * + * mixColor(0.5) // 'rgba(128, 128, 128, 1)' + * ``` + * + * TODO Revisit this approach once we've moved to data models for values, + * probably not needed to pregenerate mixer functions. + * + * @public + */ +function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) { + const inputLength = input.length; + invariant(inputLength === output.length, "Both input and output ranges must be the same length", "range-length"); + /** + * If we're only provided a single input, we can just make a function + * that returns the output. + */ + if (inputLength === 1) + return () => output[0]; + if (inputLength === 2 && output[0] === output[1]) + return () => output[1]; + const isZeroDeltaRange = input[0] === input[1]; + // If input runs highest -> lowest, reverse both arrays + if (input[0] > input[inputLength - 1]) { + input = [...input].reverse(); + output = [...output].reverse(); + } + const mixers = createMixers(output, ease, mixer); + const numMixers = mixers.length; + const interpolator = (v) => { + if (isZeroDeltaRange && v < input[0]) + return output[0]; + let i = 0; + if (numMixers > 1) { + for (; i < input.length - 2; i++) { + if (v < input[i + 1]) + break; + } + } + const progressInRange = progress(input[i], input[i + 1], v); + return mixers[i](progressInRange); + }; + return isClamp + ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) + : interpolator; +} + +export { interpolate }; +//# sourceMappingURL=interpolate.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-html-element.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-html-element.mjs new file mode 100644 index 0000000..9ead44d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-html-element.mjs @@ -0,0 +1,14 @@ +import { isObject } from 'motion-utils'; + +/** + * Checks if an element is an HTML element in a way + * that works across iframes + */ +function isHTMLElement(element) { + return (isObject(element) && + "offsetHeight" in element && + !("ownerSVGElement" in element)); +} + +export { isHTMLElement }; +//# sourceMappingURL=is-html-element.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-svg-element.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-svg-element.mjs new file mode 100644 index 0000000..f529a49 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-svg-element.mjs @@ -0,0 +1,12 @@ +import { isObject } from 'motion-utils'; + +/** + * Checks if an element is an SVG element in a way + * that works across iframes + */ +function isSVGElement(element) { + return isObject(element) && "ownerSVGElement" in element; +} + +export { isSVGElement }; +//# sourceMappingURL=is-svg-element.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.mjs new file mode 100644 index 0000000..e61de12 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.mjs @@ -0,0 +1,12 @@ +import { isSVGElement } from './is-svg-element.mjs'; + +/** + * Checks if an element is specifically an SVGSVGElement (the root SVG element) + * in a way that works across iframes + */ +function isSVGSVGElement(element) { + return isSVGElement(element) && element.tagName === "svg"; +} + +export { isSVGSVGElement }; +//# sourceMappingURL=is-svg-svg-element.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/color.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/color.mjs new file mode 100644 index 0000000..6d6d6f9 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/color.mjs @@ -0,0 +1,49 @@ +import { warning } from 'motion-utils'; +import { hex } from '../../value/types/color/hex.mjs'; +import { hsla } from '../../value/types/color/hsla.mjs'; +import { hslaToRgba } from '../../value/types/color/hsla-to-rgba.mjs'; +import { rgba } from '../../value/types/color/rgba.mjs'; +import { mixImmediate } from './immediate.mjs'; +import { mixNumber } from './number.mjs'; + +// Linear color space blending +// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw +// Demonstrated http://codepen.io/osublake/pen/xGVVaN +const mixLinearColor = (from, to, v) => { + const fromExpo = from * from; + const expo = v * (to * to - fromExpo) + fromExpo; + return expo < 0 ? 0 : Math.sqrt(expo); +}; +const colorTypes = [hex, rgba, hsla]; +const getColorType = (v) => colorTypes.find((type) => type.test(v)); +function asRGBA(color) { + const type = getColorType(color); + if (!type) { + warning(false, `'${color}' is not an animatable color. Use the equivalent color code instead.`, "color-not-animatable"); + return false; + } + let model = type.parse(color); + if (type === hsla) { + // TODO Remove this cast - needed since Motion's stricter typing + model = hslaToRgba(model); + } + return model; +} +const mixColor = (from, to) => { + const fromRGBA = asRGBA(from); + const toRGBA = asRGBA(to); + if (!fromRGBA || !toRGBA) { + return mixImmediate(from, to); + } + const blended = { ...fromRGBA }; + return (v) => { + blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v); + blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v); + blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v); + blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v); + return rgba.transform(blended); + }; +}; + +export { mixColor, mixLinearColor }; +//# sourceMappingURL=color.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/complex.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/complex.mjs new file mode 100644 index 0000000..687a641 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/complex.mjs @@ -0,0 +1,93 @@ +import { pipe, warning } from 'motion-utils'; +import { isCSSVariableToken } from '../../animation/utils/is-css-variable.mjs'; +import { color } from '../../value/types/color/index.mjs'; +import { complex, analyseComplexValue } from '../../value/types/complex/index.mjs'; +import { mixColor } from './color.mjs'; +import { mixImmediate } from './immediate.mjs'; +import { mixNumber as mixNumber$1 } from './number.mjs'; +import { invisibleValues, mixVisibility } from './visibility.mjs'; + +function mixNumber(a, b) { + return (p) => mixNumber$1(a, b, p); +} +function getMixer(a) { + if (typeof a === "number") { + return mixNumber; + } + else if (typeof a === "string") { + return isCSSVariableToken(a) + ? mixImmediate + : color.test(a) + ? mixColor + : mixComplex; + } + else if (Array.isArray(a)) { + return mixArray; + } + else if (typeof a === "object") { + return color.test(a) ? mixColor : mixObject; + } + return mixImmediate; +} +function mixArray(a, b) { + const output = [...a]; + const numValues = output.length; + const blendValue = a.map((v, i) => getMixer(v)(v, b[i])); + return (p) => { + for (let i = 0; i < numValues; i++) { + output[i] = blendValue[i](p); + } + return output; + }; +} +function mixObject(a, b) { + const output = { ...a, ...b }; + const blendValue = {}; + for (const key in output) { + if (a[key] !== undefined && b[key] !== undefined) { + blendValue[key] = getMixer(a[key])(a[key], b[key]); + } + } + return (v) => { + for (const key in blendValue) { + output[key] = blendValue[key](v); + } + return output; + }; +} +function matchOrder(origin, target) { + const orderedOrigin = []; + const pointers = { color: 0, var: 0, number: 0 }; + for (let i = 0; i < target.values.length; i++) { + const type = target.types[i]; + const originIndex = origin.indexes[type][pointers[type]]; + const originValue = origin.values[originIndex] ?? 0; + orderedOrigin[i] = originValue; + pointers[type]++; + } + return orderedOrigin; +} +const mixComplex = (origin, target) => { + const template = complex.createTransformer(target); + const originStats = analyseComplexValue(origin); + const targetStats = analyseComplexValue(target); + const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length && + originStats.indexes.color.length === targetStats.indexes.color.length && + originStats.indexes.number.length >= targetStats.indexes.number.length; + if (canInterpolate) { + if ((invisibleValues.has(origin) && + !targetStats.values.length) || + (invisibleValues.has(target) && + !originStats.values.length)) { + return mixVisibility(origin, target); + } + return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template); + } + else { + warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`, "complex-values-different"); + return mixImmediate(origin, target); + } +}; + +export { getMixer, mixArray, mixComplex, mixObject }; +//# sourceMappingURL=complex.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/immediate.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/immediate.mjs new file mode 100644 index 0000000..12ca872 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/immediate.mjs @@ -0,0 +1,6 @@ +function mixImmediate(a, b) { + return (p) => (p > 0 ? b : a); +} + +export { mixImmediate }; +//# sourceMappingURL=immediate.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/index.mjs new file mode 100644 index 0000000..8855bb8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/index.mjs @@ -0,0 +1,43 @@ +import { sanitize } from '../../value/types/utils/sanitize.mjs'; +import { getMixer } from './complex.mjs'; +import { mixNumber } from './number.mjs'; + +/** + * A single number with an optional unit, e.g. "50%", "-10px", ".5em". + * Exponents don't match, so they fall through to the complex mixer. + */ +const unitValue = /^(-?(?:\d+(?:\.\d*)?|\.\d+))([a-z%]*)$/iu; +/** + * Most CSS values Motion mixes are a single number with a unit. Mixing + * these directly produces the same output as the complex mixer + * ("25%", "0.33333px") without tokenising both strings. + */ +function mixUnit(from, to) { + const a = unitValue.exec(from); + if (!a) + return; + const b = unitValue.exec(to); + if (!b || a[2] !== b[2]) + return; + const unit = a[2]; + const origin = parseFloat(a[1]); + const target = parseFloat(b[1]); + return (p) => sanitize(mixNumber(origin, target, p)) + unit; +} +function mix(from, to, p) { + if (typeof from === "number" && + typeof to === "number" && + typeof p === "number") { + return mixNumber(from, to, p); + } + if (typeof from === "string" && typeof to === "string") { + const mixer = mixUnit(from, to); + if (mixer) + return mixer; + } + const mixer = getMixer(from); + return mixer(from, to); +} + +export { mix }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/number.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/number.mjs new file mode 100644 index 0000000..1e19dfc --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/number.mjs @@ -0,0 +1,27 @@ +/* + Value in range from progress + + Given a lower limit and an upper limit, we return the value within + that range as expressed by progress (usually a number from 0 to 1) + + So progress = 0.5 would change + + from -------- to + + to + + from ---- to + + E.g. from = 10, to = 20, progress = 0.5 => 15 + + @param [number]: Lower limit of range + @param [number]: Upper limit of range + @param [number]: The progress between lower and upper limits expressed 0-1 + @return [number]: Value as calculated from progress within range (not limited within range) +*/ +const mixNumber = (from, to, progress) => { + return from + (to - from) * progress; +}; + +export { mixNumber }; +//# sourceMappingURL=number.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/visibility.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/visibility.mjs new file mode 100644 index 0000000..3810ffe --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/mix/visibility.mjs @@ -0,0 +1,17 @@ +const invisibleValues = new Set(["none", "hidden"]); +/** + * Returns a function that, when provided a progress value between 0 and 1, + * will return the "none" or "hidden" string only when the progress is that of + * the origin or target. + */ +function mixVisibility(origin, target) { + if (invisibleValues.has(origin)) { + return (p) => (p <= 0 ? origin : target); + } + else { + return (p) => (p >= 1 ? target : origin); + } +} + +export { invisibleValues, mixVisibility }; +//# sourceMappingURL=visibility.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs new file mode 100644 index 0000000..a90b0c3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/resolve-elements.mjs @@ -0,0 +1,21 @@ +function resolveElements(elementOrSelector, scope, selectorCache) { + if (elementOrSelector == null) { + return []; + } + if (elementOrSelector instanceof EventTarget) { + return [elementOrSelector]; + } + else if (typeof elementOrSelector === "string") { + let root = document; + if (scope) { + root = scope.current; + } + const elements = selectorCache?.[elementOrSelector] ?? + root.querySelectorAll(elementOrSelector); + return elements ? Array.from(elements) : []; + } + return Array.from(elementOrSelector).filter((element) => element != null); +} + +export { resolveElements }; +//# sourceMappingURL=resolve-elements.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/stagger.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/stagger.mjs new file mode 100644 index 0000000..fe61568 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/stagger.mjs @@ -0,0 +1,60 @@ +import { easingDefinitionToFunction } from 'motion-utils'; + +function getOriginIndex(from, total) { + if (from === "first") { + return 0; + } + else { + const lastIndex = total - 1; + return from === "last" ? lastIndex : lastIndex / 2; + } +} +function stagger(duration = 0.1, { startDelay = 0, from = 0, ease, grid } = {}) { + /** + * Distances from the origin for each element count. The final entry + * holds the distance used to normalise easing. + */ + const cache = {}; + return (i, total) => { + let distances = cache[total]; + if (!distances) { + const [columns, rows] = grid || [Infinity, 1]; + const lastX = Math.min(columns, total) - 1; + const lastY = Math.max(rows, Math.ceil(total / columns)) - 1; + const isIndex = typeof from === "number"; + const scale = from === "first" ? 0 : from === "last" ? 1 : 0.5; + const originX = isIndex ? from % columns : lastX * scale; + const originY = isIndex ? Math.floor(from / columns) : lastY * scale; + distances = cache[total] = []; + for (let j = 0; j < total; j++) { + const x = j % columns; + const y = Math.floor(j / columns); + const edgeX = Math.min(x, lastX - x); + const edgeY = Math.min(y, lastY - y); + if (from === "random") { + // Inside-out shuffle, so each element gets a distinct step + const k = (Math.random() * (j + 1)) | 0; + distances[j] = distances[k]; + distances[k] = j; + } + else { + distances[j] = + from === "edges" + ? Math.min(lastX ? edgeX : edgeY, lastY ? edgeY : edgeX) + : Math.hypot(x - originX, y - originY); + } + } + distances.push(grid ? Math.max(...distances) : total); + } + let delay = duration * distances[i]; + const maxDelay = duration * distances[total]; + if (ease && maxDelay) { + const easingFunction = easingDefinitionToFunction(ease); + delay = easingFunction(delay / maxDelay) * maxDelay; + } + return startDelay + delay; + }; +} + +export { getOriginIndex, stagger }; +//# sourceMappingURL=stagger.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/flags.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/flags.mjs new file mode 100644 index 0000000..e0682b1 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/flags.mjs @@ -0,0 +1,8 @@ +/** + * Add the ability for test suites to manually set support flags + * to better test more environments. + */ +const supportsFlags = {}; + +export { supportsFlags }; +//# sourceMappingURL=flags.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs new file mode 100644 index 0000000..38f3729 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs @@ -0,0 +1,16 @@ +import { memoSupports } from './memo.mjs'; + +const supportsLinearEasing = /*@__PURE__*/ memoSupports(() => { + try { + document + .createElement("div") + .animate({ opacity: 0 }, { easing: "linear(0, 1)" }); + } + catch (e) { + return false; + } + return true; +}, "linearEasing"); + +export { supportsLinearEasing }; +//# sourceMappingURL=linear-easing.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/memo.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/memo.mjs new file mode 100644 index 0000000..e8dd26a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/memo.mjs @@ -0,0 +1,10 @@ +import { memo } from 'motion-utils'; +import { supportsFlags } from './flags.mjs'; + +function memoSupports(callback, supportsFlag) { + const memoized = memo(callback); + return () => supportsFlags[supportsFlag] ?? memoized(); +} + +export { memoSupports }; +//# sourceMappingURL=memo.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs new file mode 100644 index 0000000..59d9549 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs @@ -0,0 +1,7 @@ +import { memoSupports } from './memo.mjs'; + +const supportsScrollTimeline = /* @__PURE__ */ memoSupports(() => window.ScrollTimeline !== undefined, "scrollTimeline"); +const supportsViewTimeline = /* @__PURE__ */ memoSupports(() => window.ViewTimeline !== undefined, "viewTimeline"); + +export { supportsScrollTimeline, supportsViewTimeline }; +//# sourceMappingURL=scroll-timeline.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/transform.mjs new file mode 100644 index 0000000..74b624e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/utils/transform.mjs @@ -0,0 +1,15 @@ +import { interpolate } from './interpolate.mjs'; + +function transform(...args) { + const useImmediate = !Array.isArray(args[0]); + const argOffset = useImmediate ? 0 : -1; + const inputValue = args[0 + argOffset]; + const inputRange = args[1 + argOffset]; + const outputRange = args[2 + argOffset]; + const options = args[3 + argOffset]; + const interpolator = interpolate(inputRange, outputRange, options); + return useImmediate ? interpolator(inputValue) : interpolator; +} + +export { transform }; +//# sourceMappingURL=transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/follow-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/follow-value.mjs new file mode 100644 index 0000000..9fac9a9 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/follow-value.mjs @@ -0,0 +1,50 @@ +import { motionValue } from './index.mjs'; +import { keyframes } from '../animation/generators/keyframes.mjs'; +import { replaceTransitionType } from '../animation/utils/replace-transition-type.mjs'; +import { follow } from './utils/follow.mjs'; +import { isMotionValue } from './utils/is-motion-value.mjs'; + +/** + * Create a `MotionValue` that animates to its latest value using any transition type. + * Can either be a value or track another `MotionValue`. + * + * ```jsx + * const x = motionValue(0) + * const y = followValue(x, { type: "spring", stiffness: 300 }) + * // or with tween + * const z = followValue(x, { type: "tween", duration: 0.5, ease: "easeOut" }) + * ``` + * + * @param source - Initial value or MotionValue to track + * @param options - Animation transition options + * @returns `MotionValue` + * + * @public + */ +function followValue(source, options) { + const initialValue = isMotionValue(source) ? source.get() : source; + const value = motionValue(initialValue); + attachFollow(value, source, options); + return value; +} +/** + * Attach an animation to a MotionValue that will animate whenever the value changes. + * Similar to attachSpring but supports any transition type (spring, tween, inertia, etc.) + * + * @param value - The MotionValue to animate + * @param source - Initial value or MotionValue to track + * @param options - Animation transition options + * @returns Cleanup function + * + * @public + */ +function attachFollow(value, source, options = {}) { + // Default to spring if no type specified (matches useSpring behavior) + const transition = { type: "spring", ...options }; + replaceTransitionType(transition); + transition.type = transition.type || keyframes; + return follow(value, source, transition); +} + +export { attachFollow, followValue }; +//# sourceMappingURL=follow-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/index.mjs new file mode 100644 index 0000000..908958a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/index.mjs @@ -0,0 +1,380 @@ +import { warnOnce, SubscriptionManager, velocityPerSecond } from 'motion-utils'; +import { time } from '../frameloop/sync-time.mjs'; +import { frame } from '../frameloop/frame.mjs'; + +/** + * Maximum time between the value of two frames, beyond which we + * assume the velocity has since been 0. + */ +const MAX_VELOCITY_DELTA = 30; +const isFloat = (value) => { + return !isNaN(parseFloat(value)); +}; +const collectMotionValues = { + current: undefined, +}; +/** + * `MotionValue` is used to track the state and velocity of motion values. + * + * @public + */ +class MotionValue { + /** + * @param init - The initiating value + * @param config - Optional configuration options + * + * - `transformer`: A function to transform incoming values with. + */ + constructor(init, options = {}) { + /** + * Tracks whether this value can output a velocity. Currently this is only true + * if the value is numerical, but we might be able to widen the scope here and support + * other value types. + * + * @internal + */ + this.canTrackVelocity = null; + /** + * An object containing a SubscriptionManager for each active event. + */ + this.events = {}; + this.updateAndNotify = (v) => { + const currentTime = time.now(); + /** + * If we're updating the value during another frame or eventloop + * than the previous frame, then the we set the previous frame value + * to current. + */ + if (this.updatedAt !== currentTime) { + this.setPrevFrameValue(); + } + this.prev = this.current; + this.setCurrent(v); + // Update update subscribers + if (this.current !== this.prev) { + this.notifyChange(); + if (this.dependents) { + for (const dependent of this.dependents) { + dependent.dirty(); + } + } + } + }; + this.hasAnimated = false; + this.setCurrent(init); + this.owner = options.owner; + } + setCurrent(current) { + this.current = current; + this.updatedAt = time.now(); + if (this.canTrackVelocity === null && current !== undefined) { + this.canTrackVelocity = isFloat(this.current); + } + } + setPrevFrameValue(prevFrameValue = this.current) { + this.prevFrameValue = prevFrameValue; + this.prevUpdatedAt = this.updatedAt; + } + /** + * Adds a function that will be notified when the `MotionValue` is updated. + * + * It returns a function that, when called, will cancel the subscription. + * + * When calling `onChange` inside a React component, it should be wrapped with the + * `useEffect` hook. As it returns an unsubscribe function, this should be returned + * from the `useEffect` function to ensure you don't add duplicate subscribers.. + * + * ```jsx + * export const MyComponent = () => { + * const x = useMotionValue(0) + * const y = useMotionValue(0) + * const opacity = useMotionValue(1) + * + * useEffect(() => { + * function updateOpacity() { + * const maxXY = Math.max(x.get(), y.get()) + * const newOpacity = transform(maxXY, [0, 100], [1, 0]) + * opacity.set(newOpacity) + * } + * + * const unsubscribeX = x.on("change", updateOpacity) + * const unsubscribeY = y.on("change", updateOpacity) + * + * return () => { + * unsubscribeX() + * unsubscribeY() + * } + * }, []) + * + * return <motion.div style={{ x }} /> + * } + * ``` + * + * @param subscriber - A function that receives the latest value. + * @returns A function that, when called, will cancel this subscription. + * + * @deprecated + */ + onChange(subscription) { + if (process.env.NODE_ENV !== "production") { + warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on("change", callback).`); + } + return this.on("change", subscription); + } + on(eventName, callback) { + var _a; + if (eventName === "change") + return this.onChangeSubscribe(callback); + return ((_a = this.events)[eventName] || (_a[eventName] = new SubscriptionManager())).add(callback); + } + onChangeSubscribe(callback) { + const { events } = this; + if (!events.change && !this.changeSubscriber) { + this.changeSubscriber = callback; + } + else { + if (!events.change) { + events.change = new SubscriptionManager(); + events.change.add(this.changeSubscriber); + this.changeSubscriber = undefined; + } + events.change.add(callback); + } + return () => { + if (this.changeSubscriber === callback) { + this.changeSubscriber = undefined; + } + else { + events.change?.remove(callback); + } + this.stopIfUnobserved(); + }; + } + /** + * If we have no more change listeners by the start + * of the next frame, stop active animations. + */ + stopIfUnobserved() { + frame.read(() => { + if (!this.changeSubscriber && !this.events.change?.getSize()) { + this.stop(); + } + }); + } + clearListeners() { + this.changeSubscriber = undefined; + for (const eventManagers in this.events) { + this.events[eventManagers].clear(); + } + } + /** + * Attaches a passive effect to the `MotionValue`. + */ + attach(passiveEffect, stopPassiveEffect) { + this.passiveEffect = passiveEffect; + this.stopPassiveEffect = stopPassiveEffect; + } + /** + * Sets the state of the `MotionValue`. + * + * @remarks + * + * ```jsx + * const x = useMotionValue(0) + * x.set(10) + * ``` + * + * @param latest - Latest value to set. + * @param render - Whether to notify render subscribers. Defaults to `true` + * + * @public + */ + set(v) { + if (!this.passiveEffect) { + this.updateAndNotify(v); + } + else { + this.passiveEffect(v, this.updateAndNotify); + } + } + setWithVelocity(prev, current, delta) { + this.set(current); + this.prev = undefined; + this.prevFrameValue = prev; + this.prevUpdatedAt = this.updatedAt - delta; + } + /** + * Set the state of the `MotionValue`, stopping any active animations, + * effects, and resets velocity to `0`. + */ + jump(v, endAnimation = true) { + this.updateAndNotify(v); + this.prev = v; + this.prevUpdatedAt = this.prevFrameValue = undefined; + endAnimation && this.stop(); + if (this.stopPassiveEffect) + this.stopPassiveEffect(); + } + dirty() { + this.notifyChange(); + } + notifyChange() { + const { current, changeSubscriber } = this; + /** + * One or the other exists. Subscribing during the direct + * subscriber's call moves it into a new manager, which must not + * then be notified for the same change. + */ + if (changeSubscriber) { + changeSubscriber(current); + } + else { + this.events.change?.notify(current); + } + } + addDependent(dependent) { + if (!this.dependents) { + this.dependents = new Set(); + } + this.dependents.add(dependent); + } + removeDependent(dependent) { + if (this.dependents) { + this.dependents.delete(dependent); + } + } + /** + * Returns the latest state of `MotionValue` + * + * @returns - The latest state of `MotionValue` + * + * @public + */ + get() { + if (collectMotionValues.current) { + collectMotionValues.current.push(this); + } + /** + * A value animating on the compositor isn't updated every frame, + * so read it from its animation. + */ + const sampled = this.animation?.liveValue?.(); + return sampled === undefined ? this.current : sampled; + } + /** + * The value as last set. Unlike get(), this doesn't read an animation + * running on the compositor, which renders the value itself. + */ + getCurrent() { + return this.current; + } + /** + * @public + */ + getPrevious() { + return this.prev; + } + /** + * Returns the latest velocity of `MotionValue` + * + * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical. + * + * @public + */ + getVelocity() { + const currentTime = time.now(); + if (!this.canTrackVelocity || + this.prevFrameValue === undefined || + currentTime - this.updatedAt > MAX_VELOCITY_DELTA) { + return 0; + } + const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA); + // Casts because of parseFloat's poor typing + return velocityPerSecond(parseFloat(this.current) - + parseFloat(this.prevFrameValue), delta); + } + /** + * Registers a new animation to control this `MotionValue`. Only one + * animation can drive a `MotionValue` at one time. + * + * ```jsx + * value.start() + * ``` + * + * @param animation - A function that starts the provided animation + */ + start(startAnimation) { + this.stop(); + return new Promise((resolve) => { + this.hasAnimated = true; + /** + * Complete synchronously via the callback rather than chaining a + * second promise per animation. Guard against animations that + * complete before startAnimation has returned. + */ + let isComplete = false; + let animation; + // eslint-disable-next-line prefer-const -- read by the callback before assignment when completing synchronously + animation = startAnimation(() => { + isComplete = true; + this.events.animationComplete?.notify(); + if (this.animation === animation) + this.clearAnimation(); + resolve(); + }); + if (!isComplete) + this.animation = animation; + this.events.animationStart?.notify(); + }); + } + /** + * Stop the currently active animation. + * + * @public + */ + stop() { + if (this.animation) { + this.animation.stop(); + if (this.events.animationCancel) { + this.events.animationCancel.notify(); + } + } + this.clearAnimation(); + } + /** + * Returns `true` if this value is currently animating. + * + * @public + */ + isAnimating() { + return !!this.animation; + } + clearAnimation() { + // Assign rather than delete to keep the object's shape stable + this.animation = undefined; + } + /** + * Destroy and clean up subscribers to this `MotionValue`. + * + * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically + * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually + * created a `MotionValue` via the `motionValue` function. + * + * @public + */ + destroy() { + this.dependents?.clear(); + this.events.destroy?.notify(); + this.clearListeners(); + this.stop(); + if (this.stopPassiveEffect) { + this.stopPassiveEffect(); + } + } +} +function motionValue(init, options) { + return new MotionValue(init, options); +} + +export { MotionValue, collectMotionValues, motionValue }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/map-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/map-value.mjs new file mode 100644 index 0000000..d3eb12f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/map-value.mjs @@ -0,0 +1,47 @@ +import { transform } from '../utils/transform.mjs'; +import { transformValue } from './transform-value.mjs'; + +/** + * Create a `MotionValue` that maps the output of another `MotionValue` by + * mapping it from one range of values into another. + * + * @remarks + * + * Given an input range of `[-200, -100, 100, 200]` and an output range of + * `[0, 1, 1, 0]`, the returned `MotionValue` will: + * + * - When provided a value between `-200` and `-100`, will return a value between `0` and `1`. + * - When provided a value between `-100` and `100`, will return `1`. + * - When provided a value between `100` and `200`, will return a value between `1` and `0` + * + * The input range must be a linear series of numbers. The output range + * can be any value type supported by Motion: numbers, colors, shadows, etc. + * + * Every value in the output range must be of the same type and in the same format. + * + * ```jsx + * const x = motionValue(0) + * const xRange = [-200, -100, 100, 200] + * const opacityRange = [0, 1, 1, 0] + * const opacity = mapValue(x, xRange, opacityRange) + * ``` + * + * @param inputValue - `MotionValue` + * @param inputRange - A linear series of numbers (either all increasing or decreasing) + * @param outputRange - A series of numbers, colors or strings. Must be the same length as `inputRange`. + * @param options - + * + * - clamp: boolean. Clamp values to within the given range. Defaults to `true` + * - ease: EasingFunction[]. Easing functions to use on the interpolations between each value in the input and output ranges. If provided as an array, the array must be one item shorter than the input and output ranges, as the easings apply to the transition between each. + * + * @returns `MotionValue` + * + * @public + */ +function mapValue(inputValue, inputRange, outputRange, options) { + const map = transform(inputRange, outputRange, options); + return transformValue(() => map(inputValue.get())); +} + +export { mapValue }; +//# sourceMappingURL=map-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/spring-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/spring-value.mjs new file mode 100644 index 0000000..0e956f4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/spring-value.mjs @@ -0,0 +1,41 @@ +import { motionValue } from './index.mjs'; +import { spring } from '../animation/generators/spring.mjs'; +import { follow } from './utils/follow.mjs'; +import { isMotionValue } from './utils/is-motion-value.mjs'; + +/** + * Create a `MotionValue` that animates to its latest value using a spring. + * Can either be a value or track another `MotionValue`. + * + * ```jsx + * const x = motionValue(0) + * const y = springValue(x, { stiffness: 300 }) + * ``` + * + * @param source - Initial value or MotionValue to track + * @param options - Spring configuration options + * @returns `MotionValue` + * + * @public + */ +function springValue(source, options) { + const value = motionValue(isMotionValue(source) ? source.get() : source); + attachSpring(value, source, options); + return value; +} +/** + * Attach a spring animation to a MotionValue that will animate whenever the value changes. + * + * @param value - The MotionValue to animate + * @param source - Initial value or MotionValue to track + * @param options - Spring configuration options + * @returns Cleanup function + * + * @public + */ +function attachSpring(value, source, options) { + return follow(value, source, { ...options, type: spring }); +} + +export { attachSpring, springValue }; +//# sourceMappingURL=spring-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/subscribe-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/subscribe-value.mjs new file mode 100644 index 0000000..166c874 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/subscribe-value.mjs @@ -0,0 +1,14 @@ +import { cancelFrame, frame } from '../frameloop/frame.mjs'; + +function subscribeValue(inputValues, outputValue, getLatest) { + const update = () => outputValue.set(getLatest()); + const scheduleUpdate = () => frame.preRender(update, false, true); + const subscriptions = inputValues.map((v) => v.on("change", scheduleUpdate)); + outputValue.on("destroy", () => { + subscriptions.forEach((unsubscribe) => unsubscribe()); + cancelFrame(update); + }); +} + +export { subscribeValue }; +//# sourceMappingURL=subscribe-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/transform-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/transform-value.mjs new file mode 100644 index 0000000..fd2c4e0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/transform-value.mjs @@ -0,0 +1,36 @@ +import { collectMotionValues, motionValue } from './index.mjs'; +import { subscribeValue } from './subscribe-value.mjs'; + +/** + * Create a `MotionValue` that transforms the output of other `MotionValue`s by + * passing their latest values through a transform function. + * + * Whenever a `MotionValue` referred to in the provided function is updated, + * it will be re-evaluated. + * + * ```jsx + * const x = motionValue(0) + * const y = transformValue(() => x.get() * 2) // double x + * ``` + * + * @param transformer - A transform function. This function must be pure with no side-effects or conditional statements. + * @returns `MotionValue` + * + * @public + */ +function transformValue(transform) { + const collectedValues = []; + /** + * Open session of collectMotionValues. Any MotionValue that calls get() + * inside transform will be saved into this array. + */ + collectMotionValues.current = collectedValues; + const initialValue = transform(); + collectMotionValues.current = undefined; + const value = motionValue(initialValue); + subscribeValue(collectedValues, value, transform); + return value; +} + +export { transformValue }; +//# sourceMappingURL=transform-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/auto.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/auto.mjs new file mode 100644 index 0000000..b514b87 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/auto.mjs @@ -0,0 +1,10 @@ +/** + * ValueType for "auto" + */ +const auto = { + test: (v) => v === "auto", + parse: (v) => v, +}; + +export { auto }; +//# sourceMappingURL=auto.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hex.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hex.mjs new file mode 100644 index 0000000..1ec7840 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hex.mjs @@ -0,0 +1,41 @@ +import { rgba } from './rgba.mjs'; +import { isColorString } from './utils.mjs'; + +function parseHex(v) { + let r = ""; + let g = ""; + let b = ""; + let a = ""; + // If we have 6 characters, ie #FF0000 + if (v.length > 5) { + r = v.substring(1, 3); + g = v.substring(3, 5); + b = v.substring(5, 7); + a = v.substring(7, 9); + // Or we have 3 characters, ie #F00 + } + else { + r = v.substring(1, 2); + g = v.substring(2, 3); + b = v.substring(3, 4); + a = v.substring(4, 5); + r += r; + g += g; + b += b; + a += a; + } + return { + red: parseInt(r, 16), + green: parseInt(g, 16), + blue: parseInt(b, 16), + alpha: a ? parseInt(a, 16) / 255 : 1, + }; +} +const hex = { + test: /*@__PURE__*/ isColorString("#"), + parse: parseHex, + transform: rgba.transform, +}; + +export { hex }; +//# sourceMappingURL=hex.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs new file mode 100644 index 0000000..75a4e52 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs @@ -0,0 +1,43 @@ +// Adapted from https://gist.github.com/mjackson/5311256 +function hueToRgb(p, q, t) { + if (t < 0) + t += 1; + if (t > 1) + t -= 1; + if (t < 1 / 6) + return p + (q - p) * 6 * t; + if (t < 1 / 2) + return q; + if (t < 2 / 3) + return p + (q - p) * (2 / 3 - t) * 6; + return p; +} +function hslaToRgba({ hue, saturation, lightness, alpha }) { + hue /= 360; + saturation /= 100; + lightness /= 100; + let red = 0; + let green = 0; + let blue = 0; + if (!saturation) { + red = green = blue = lightness; + } + else { + const q = lightness < 0.5 + ? lightness * (1 + saturation) + : lightness + saturation - lightness * saturation; + const p = 2 * lightness - q; + red = hueToRgb(p, q, hue + 1 / 3); + green = hueToRgb(p, q, hue); + blue = hueToRgb(p, q, hue - 1 / 3); + } + return { + red: Math.round(red * 255), + green: Math.round(green * 255), + blue: Math.round(blue * 255), + alpha, + }; +} + +export { hslaToRgba }; +//# sourceMappingURL=hsla-to-rgba.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs new file mode 100644 index 0000000..d1af665 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/hsla.mjs @@ -0,0 +1,23 @@ +import { alpha } from '../numbers/index.mjs'; +import { percent } from '../numbers/units.mjs'; +import { sanitize } from '../utils/sanitize.mjs'; +import { splitColor, isColorString } from './utils.mjs'; + +const hsla = { + test: /*@__PURE__*/ isColorString("hsl", "hue"), + parse: /*@__PURE__*/ splitColor("hue", "saturation", "lightness"), + transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => { + return ("hsla(" + + Math.round(hue) + + ", " + + percent.transform(sanitize(saturation)) + + ", " + + percent.transform(sanitize(lightness)) + + ", " + + sanitize(alpha.transform(alpha$1)) + + ")"); + }, +}; + +export { hsla }; +//# sourceMappingURL=hsla.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/index.mjs new file mode 100644 index 0000000..8de642b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/index.mjs @@ -0,0 +1,33 @@ +import { hex } from './hex.mjs'; +import { hsla } from './hsla.mjs'; +import { rgba } from './rgba.mjs'; + +const color = { + test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v), + parse: (v) => { + if (rgba.test(v)) { + return rgba.parse(v); + } + else if (hsla.test(v)) { + return hsla.parse(v); + } + else { + return hex.parse(v); + } + }, + transform: (v) => { + return typeof v === "string" + ? v + : v.hasOwnProperty("red") + ? rgba.transform(v) + : hsla.transform(v); + }, + getAnimatableNone: (v) => { + const parsed = color.parse(v); + parsed.alpha = 0; + return color.transform(parsed); + }, +}; + +export { color }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs new file mode 100644 index 0000000..8c27af7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/rgba.mjs @@ -0,0 +1,26 @@ +import { clamp } from 'motion-utils'; +import { number, alpha } from '../numbers/index.mjs'; +import { sanitize } from '../utils/sanitize.mjs'; +import { splitColor, isColorString } from './utils.mjs'; + +const clampRgbUnit = (v) => clamp(0, 255, v); +const rgbUnit = { + ...number, + transform: (v) => Math.round(clampRgbUnit(v)), +}; +const rgba = { + test: /*@__PURE__*/ isColorString("rgb", "red"), + parse: /*@__PURE__*/ splitColor("red", "green", "blue"), + transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" + + rgbUnit.transform(red) + + ", " + + rgbUnit.transform(green) + + ", " + + rgbUnit.transform(blue) + + ", " + + sanitize(alpha.transform(alpha$1)) + + ")", +}; + +export { rgbUnit, rgba }; +//# sourceMappingURL=rgba.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/utils.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/utils.mjs new file mode 100644 index 0000000..cc4bd12 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/color/utils.mjs @@ -0,0 +1,30 @@ +import { floatRegex } from '../utils/float-regex.mjs'; +import { isNullish } from '../utils/is-nullish.mjs'; +import { singleColorRegex } from '../utils/single-color-regex.mjs'; + +/** + * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000, + * but false if a number or multiple colors + */ +const isColorString = (type, testProp) => (v) => { + return Boolean((typeof v === "string" && + singleColorRegex.test(v) && + v.startsWith(type)) || + (testProp && + !isNullish(v) && + Object.prototype.hasOwnProperty.call(v, testProp))); +}; +const splitColor = (aName, bName, cName) => (v) => { + if (typeof v !== "string") + return v; + const [a, b, c, alpha] = v.match(floatRegex); + return { + [aName]: parseFloat(a), + [bName]: parseFloat(b), + [cName]: parseFloat(c), + alpha: alpha !== undefined ? parseFloat(alpha) : 1, + }; +}; + +export { isColorString, splitColor }; +//# sourceMappingURL=utils.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/filter.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/filter.mjs new file mode 100644 index 0000000..c0237bc --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/filter.mjs @@ -0,0 +1,31 @@ +import { complex } from './index.mjs'; +import { floatRegex } from '../utils/float-regex.mjs'; + +/** + * Properties that should default to 1 or 100% + */ +const maxDefaults = new Set(["brightness", "contrast", "saturate", "opacity"]); +function applyDefaultFilter(v) { + const [name, value] = v.slice(0, -1).split("("); + if (name === "drop-shadow") + return v; + const [number] = value.match(floatRegex) || []; + if (!number) + return v; + const unit = value.replace(number, ""); + let defaultValue = maxDefaults.has(name) ? 1 : 0; + if (number !== value) + defaultValue *= 100; + return name + "(" + defaultValue + unit + ")"; +} +const functionRegex = /\b([a-z-]*)\(.*?\)/gu; +const filter = { + ...complex, + getAnimatableNone: (v) => { + const functions = v.match(functionRegex); + return functions ? functions.map(applyDefaultFilter).join(" ") : v; + }, +}; + +export { filter }; +//# sourceMappingURL=filter.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/index.mjs new file mode 100644 index 0000000..def8c9a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/index.mjs @@ -0,0 +1,128 @@ +import { color } from '../color/index.mjs'; +import { colorRegex } from '../utils/color-regex.mjs'; +import { floatRegex } from '../utils/float-regex.mjs'; +import { sanitize } from '../utils/sanitize.mjs'; + +/** + * Non-global copies of the token regexes so test() can use .test() + * (no match array, stops at the first token) without lastIndex state. + */ +const hasFloat = /*@__PURE__*/ new RegExp(floatRegex.source); +const hasColor = /*@__PURE__*/ new RegExp(colorRegex.source, "i"); +function test(v) { + return (isNaN(v) && + typeof v === "string" && + (hasFloat.test(v) || hasColor.test(v))); +} +const NUMBER_TOKEN = "number"; +const COLOR_TOKEN = "color"; +const VAR_TOKEN = "var"; +const VAR_FUNCTION_TOKEN = "var("; +const SPLIT_TOKEN = "${}"; +// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`. +// The lookahead skips digits in function names, like the 3 in matrix3d(. +const complexRegex = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)(?![a-z]*\()/giu; +/** + * Whether analyseComplexValue(value) would find any values, without + * tokenising the string. CSS variables are resolved before this is + * used, so it's enough to look for a number or a color. + */ +function hasComplexValues(value) { + const asString = value.toString(); + return hasFloat.test(asString) || hasColor.test(asString); +} +function analyseComplexValue(value) { + const originalValue = value.toString(); + const values = []; + const indexes = { + color: [], + number: [], + var: [], + }; + const types = []; + let i = 0; + const tokenised = originalValue.replace(complexRegex, (parsedValue) => { + if (color.test(parsedValue)) { + indexes.color.push(i); + types.push(COLOR_TOKEN); + values.push(color.parse(parsedValue)); + } + else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) { + indexes.var.push(i); + types.push(VAR_TOKEN); + values.push(parsedValue); + } + else { + indexes.number.push(i); + types.push(NUMBER_TOKEN); + values.push(parseFloat(parsedValue)); + } + ++i; + return SPLIT_TOKEN; + }); + const split = tokenised.split(SPLIT_TOKEN); + return { values, split, indexes, types }; +} +function parseComplexValue(v) { + return analyseComplexValue(v).values; +} +function buildTransformer({ split, types }) { + const numSections = split.length; + return (v) => { + let output = ""; + for (let i = 0; i < numSections; i++) { + output += split[i]; + if (v[i] !== undefined) { + const type = types[i]; + if (type === NUMBER_TOKEN) { + output += sanitize(v[i]); + } + else if (type === COLOR_TOKEN) { + output += color.transform(v[i]); + } + else { + output += v[i]; + } + } + } + return output; + }; +} +function createTransformer(source) { + return buildTransformer(analyseComplexValue(source)); +} +const convertNumbersToZero = (v) => typeof v === "number" ? 0 : color.test(v) ? color.getAnimatableNone(v) : v; +/** + * Convert a parsed value to its zero equivalent, but preserve numbers + * that act as divisors in CSS calc() expressions. + * + * analyseComplexValue extracts numbers from CSS strings and puts the + * surrounding text into a `split` template array. For example: + * "calc(var(--gap) / 5)" → values: [var(--gap), 5] + * split: ["calc(", " / ", ")"] + * + * When building a zero-equivalent for animation, naively zeroing all + * numbers turns the divisor into 0 → "calc(var(--gap) / 0)" → NaN. + * We detect this by checking whether the text preceding a number + * (split[i]) ends with "/" — the CSS calc division operator. + */ +const convertToZero = (value, splitBefore) => { + if (typeof value === "number") { + return splitBefore?.trim().endsWith("/") ? value : 0; + } + return convertNumbersToZero(value); +}; +function getAnimatableNone(v) { + const info = analyseComplexValue(v); + const transformer = buildTransformer(info); + return transformer(info.values.map((value, i) => convertToZero(value, info.split[i]))); +} +const complex = { + test, + parse: parseComplexValue, + createTransformer, + getAnimatableNone, +}; + +export { analyseComplexValue, complex, hasComplexValues }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/mask.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/mask.mjs new file mode 100644 index 0000000..2a3bb77 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/complex/mask.mjs @@ -0,0 +1,13 @@ +import { complex } from './index.mjs'; + +const mask = { + ...complex, + getAnimatableNone: (v) => { + const parsed = complex.parse(v); + const transformer = complex.createTransformer(v); + return transformer(parsed.map((v) => typeof v === "number" ? 0 : typeof v === "object" ? { ...v, alpha: 1 } : v)); + }, +}; + +export { mask }; +//# sourceMappingURL=mask.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/dimensions.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/dimensions.mjs new file mode 100644 index 0000000..de40047 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/dimensions.mjs @@ -0,0 +1,16 @@ +import { auto } from './auto.mjs'; +import { number } from './numbers/index.mjs'; +import { px, percent, degrees, vw, vh } from './numbers/units.mjs'; +import { testValueType } from './test.mjs'; + +/** + * A list of value types commonly used for dimensions + */ +const dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto]; +/** + * Tests a dimensional value against the list of dimension ValueTypes + */ +const findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v)); + +export { dimensionValueTypes, findDimensionValueType }; +//# sourceMappingURL=dimensions.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/int.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/int.mjs new file mode 100644 index 0000000..065c6ad --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/int.mjs @@ -0,0 +1,9 @@ +import { number } from './numbers/index.mjs'; + +const int = { + ...number, + transform: Math.round, +}; + +export { int }; +//# sourceMappingURL=int.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/defaults.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/defaults.mjs new file mode 100644 index 0000000..ebca742 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/defaults.mjs @@ -0,0 +1,34 @@ +import { color } from '../color/index.mjs'; +import { filter } from '../complex/filter.mjs'; +import { mask } from '../complex/mask.mjs'; +import { numberValueTypes } from './number.mjs'; + +/** + * A map of default value types for common values + */ +const defaultValueTypes = { + ...numberValueTypes, + // Color props + color, + backgroundColor: color, + outlineColor: color, + fill: color, + stroke: color, + // Border props + borderColor: color, + borderTopColor: color, + borderRightColor: color, + borderBottomColor: color, + borderLeftColor: color, + filter, + WebkitFilter: filter, + mask, + WebkitMask: mask, +}; +/** + * Gets the default ValueType for the provided value key + */ +const getDefaultValueType = (key) => defaultValueTypes[key]; + +export { defaultValueTypes, getDefaultValueType }; +//# sourceMappingURL=defaults.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/number.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/number.mjs new file mode 100644 index 0000000..e3ee5a2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/number.mjs @@ -0,0 +1,71 @@ +import { int } from '../int.mjs'; +import { alpha } from '../numbers/index.mjs'; +import { px } from '../numbers/units.mjs'; +import { transformValueTypes } from './transform.mjs'; + +const numberValueTypes = { + // Border props + borderWidth: px, + borderTopWidth: px, + borderRightWidth: px, + borderBottomWidth: px, + borderLeftWidth: px, + borderRadius: px, + borderTopLeftRadius: px, + borderTopRightRadius: px, + borderBottomRightRadius: px, + borderBottomLeftRadius: px, + // Positioning props + width: px, + maxWidth: px, + height: px, + maxHeight: px, + top: px, + right: px, + bottom: px, + left: px, + inset: px, + insetBlock: px, + insetBlockStart: px, + insetBlockEnd: px, + insetInline: px, + insetInlineStart: px, + insetInlineEnd: px, + // Spacing props + padding: px, + paddingTop: px, + paddingRight: px, + paddingBottom: px, + paddingLeft: px, + paddingBlock: px, + paddingBlockStart: px, + paddingBlockEnd: px, + paddingInline: px, + paddingInlineStart: px, + paddingInlineEnd: px, + margin: px, + marginTop: px, + marginRight: px, + marginBottom: px, + marginLeft: px, + marginBlock: px, + marginBlockStart: px, + marginBlockEnd: px, + marginInline: px, + marginInlineStart: px, + marginInlineEnd: px, + // Typography + fontSize: px, + // Misc + backgroundPositionX: px, + backgroundPositionY: px, + ...transformValueTypes, + zIndex: int, + // SVG + fillOpacity: alpha, + strokeOpacity: alpha, + numOctaves: int, +}; + +export { numberValueTypes }; +//# sourceMappingURL=number.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/transform.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/transform.mjs new file mode 100644 index 0000000..b5cc0d9 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/maps/transform.mjs @@ -0,0 +1,38 @@ +import { alpha, scale } from '../numbers/index.mjs'; +import { px, progressPercentage, degrees } from '../numbers/units.mjs'; + +const transformValueTypes = { + rotate: degrees, + /** + * Internal channel for `transition.path` orientToPath. Composed onto + * `rotate` at the transform-build sites so the user's `rotate` is + * never read or overwritten. Not part of `transformPropOrder`. + */ + pathRotation: degrees, + rotateX: degrees, + rotateY: degrees, + rotateZ: degrees, + scale, + scaleX: scale, + scaleY: scale, + scaleZ: scale, + skew: degrees, + skewX: degrees, + skewY: degrees, + distance: px, + translateX: px, + translateY: px, + translateZ: px, + x: px, + y: px, + z: px, + perspective: px, + transformPerspective: px, + opacity: alpha, + originX: progressPercentage, + originY: progressPercentage, + originZ: px, +}; + +export { transformValueTypes }; +//# sourceMappingURL=transform.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/numbers/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/numbers/index.mjs new file mode 100644 index 0000000..9639305 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/numbers/index.mjs @@ -0,0 +1,18 @@ +import { clamp } from 'motion-utils'; + +const number = { + test: (v) => typeof v === "number", + parse: parseFloat, + transform: (v) => v, +}; +const alpha = { + ...number, + transform: (v) => clamp(0, 1, v), +}; +const scale = { + ...number, + default: 1, +}; + +export { alpha, number, scale }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/numbers/units.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/numbers/units.mjs new file mode 100644 index 0000000..5f59238 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/numbers/units.mjs @@ -0,0 +1,19 @@ +/*#__NO_SIDE_EFFECTS__*/ +const createUnitType = (unit) => ({ + test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1, + parse: parseFloat, + transform: (v) => `${v}${unit}`, +}); +const degrees = /*@__PURE__*/ createUnitType("deg"); +const percent = /*@__PURE__*/ createUnitType("%"); +const px = /*@__PURE__*/ createUnitType("px"); +const vh = /*@__PURE__*/ createUnitType("vh"); +const vw = /*@__PURE__*/ createUnitType("vw"); +const progressPercentage = /*@__PURE__*/ (() => ({ + ...percent, + parse: (v) => percent.parse(v) / 100, + transform: (v) => percent.transform(v * 100), +}))(); + +export { degrees, percent, progressPercentage, px, vh, vw }; +//# sourceMappingURL=units.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/test.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/test.mjs new file mode 100644 index 0000000..26cb26e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/test.mjs @@ -0,0 +1,7 @@ +/** + * Tests a provided value against a ValueType + */ +const testValueType = (v) => (type) => type.test(v); + +export { testValueType }; +//# sourceMappingURL=test.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs new file mode 100644 index 0000000..c4efbc2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs @@ -0,0 +1,18 @@ +import { complex } from '../complex/index.mjs'; +import { filter } from '../complex/filter.mjs'; +import { mask } from '../complex/mask.mjs'; +import { getDefaultValueType } from '../maps/defaults.mjs'; + +const customTypes = /*@__PURE__*/ new Set([filter, mask]); +function getAnimatableNone(key, value) { + let defaultValueType = getDefaultValueType(key); + if (!customTypes.has(defaultValueType)) + defaultValueType = complex; + // If value is not recognised as animatable, ie "none", create an animatable version origin based on the target + return defaultValueType.getAnimatableNone + ? defaultValueType.getAnimatableNone(value) + : undefined; +} + +export { getAnimatableNone }; +//# sourceMappingURL=animatable-none.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/color-regex.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/color-regex.mjs new file mode 100644 index 0000000..645be1e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/color-regex.mjs @@ -0,0 +1,4 @@ +const colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu; + +export { colorRegex }; +//# sourceMappingURL=color-regex.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/find.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/find.mjs new file mode 100644 index 0000000..aac4531 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/find.mjs @@ -0,0 +1,16 @@ +import { color } from '../color/index.mjs'; +import { complex } from '../complex/index.mjs'; +import { dimensionValueTypes } from '../dimensions.mjs'; +import { testValueType } from '../test.mjs'; + +/** + * A list of all ValueTypes + */ +const valueTypes = [...dimensionValueTypes, color, complex]; +/** + * Tests a value against the list of ValueTypes + */ +const findValueType = (v) => valueTypes.find(testValueType(v)); + +export { findValueType }; +//# sourceMappingURL=find.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/float-regex.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/float-regex.mjs new file mode 100644 index 0000000..2e1cd7d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/float-regex.mjs @@ -0,0 +1,4 @@ +const floatRegex = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu; + +export { floatRegex }; +//# sourceMappingURL=float-regex.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.mjs new file mode 100644 index 0000000..768d566 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.mjs @@ -0,0 +1,11 @@ +/** + * Provided a value and a ValueType, returns the value as that value type. + */ +const getValueAsType = (value, type) => { + return type && typeof value === "number" + ? type.transform(value) + : value; +}; + +export { getValueAsType }; +//# sourceMappingURL=get-as-type.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.mjs new file mode 100644 index 0000000..28ccf2f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.mjs @@ -0,0 +1,6 @@ +function isNullish(v) { + return v == null; +} + +export { isNullish }; +//# sourceMappingURL=is-nullish.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/sanitize.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/sanitize.mjs new file mode 100644 index 0000000..8285b23 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/sanitize.mjs @@ -0,0 +1,6 @@ +// If this number is a decimal, make it just five decimal places +// to avoid exponents +const sanitize = (v) => Math.round(v * 100000) / 100000; + +export { sanitize }; +//# sourceMappingURL=sanitize.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.mjs new file mode 100644 index 0000000..cf67f20 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.mjs @@ -0,0 +1,4 @@ +const singleColorRegex = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu; + +export { singleColorRegex }; +//# sourceMappingURL=single-color-regex.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/as-number.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/as-number.mjs new file mode 100644 index 0000000..2b8fd9f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/as-number.mjs @@ -0,0 +1,4 @@ +const asNumber = (v) => typeof v === "number" ? v : parseFloat(v); + +export { asNumber }; +//# sourceMappingURL=as-number.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/follow.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/follow.mjs new file mode 100644 index 0000000..7232bd8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/follow.mjs @@ -0,0 +1,111 @@ +import { FollowAnimation } from '../../animation/FollowAnimation.mjs'; +import { asNumber } from './as-number.mjs'; +import { isMotionValue } from './is-motion-value.mjs'; + +/** + * Animate `value` to its latest value with the generator in + * `options.type`, tracking `source` if it's a `MotionValue`. Takes a + * generator rather than a type name, so spring-only callers don't + * bundle every generator. + */ +function follow(value, source, options) { + const initialValue = value.get(); + let activeAnimation = null; + let set; + const unit = typeof initialValue === "string" + ? initialValue.replace(/[\d.-]/g, "") + : undefined; + const onUpdate = (v) => set((unit ? v + unit : v)); + const onPlay = () => value["events"].animationStart?.notify(); + const stopAnimation = () => { + if (activeAnimation) { + activeAnimation.stop(); + activeAnimation = null; + } + value.animation = undefined; + }; + value.attach((v, safeSet) => { + set = safeSet; + const target = asNumber(v); + if (activeAnimation?.state === "running") { + /** + * Steer the running animation rather than replacing it. This + * keeps its completion promise and uses its analytical velocity + * for accuracy, preventing systematic velocity loss at high + * frame rates (240hz+). + */ + activeAnimation.setTarget(target, options.velocity); + return; + } + const current = asNumber(value.get()); + const velocity = activeAnimation + ? activeAnimation.getGeneratorVelocity() + : value.getVelocity(); + stopAnimation(); + // Don't animate if we're already at the target + if (current === target) + return; + const animationOptions = { + keyframes: [current, target], + velocity, + restDelta: 0.001, + restSpeed: 0.01, + ...options, + onUpdate, + }; + const animation = (activeAnimation = new FollowAnimation({ + ...animationOptions, + onPlay, + })); + value.animation = animation; + animation.then(() => { + // Ignore if this animation has since been replaced + if (activeAnimation !== animation) + return; + activeAnimation = null; + value.animation = undefined; + value["events"].animationComplete?.notify(); + }); + }, stopAnimation); + if (isMotionValue(source)) { + let skipNextAnimation = options.skipInitialAnimation === true; + const onSourceChange = (v) => { + if (skipNextAnimation) { + skipNextAnimation = false; + value.jump(parseValue(v, unit), false); + } + else { + value.set(parseValue(v, unit)); + } + }; + const removeSourceOnChange = source.on("change", onSourceChange); + /** + * Catch up on a change made before we subscribed, for instance + * between a React render reading the source and the effect + * attaching to it. Subtracting is falsy for equal or non-numeric + * (NaN) values. + */ + const latest = source.get(); + if (asNumber(latest) - asNumber(value.get())) + onSourceChange(latest); + const removeValueOnDestroy = value.on("destroy", removeSourceOnChange); + /** + * Stop our animation on detach, otherwise a re-attach (new + * options, Strict Mode) starts a second animation that fights + * this orphaned one. The catch-up above resumes from the + * current value and velocity. + */ + return () => { + removeSourceOnChange(); + removeValueOnDestroy(); + stopAnimation(); + }; + } + return stopAnimation; +} +function parseValue(v, unit) { + return unit ? v + unit : v; +} + +export { follow }; +//# sourceMappingURL=follow.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/is-motion-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/is-motion-value.mjs new file mode 100644 index 0000000..ae80d22 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/is-motion-value.mjs @@ -0,0 +1,4 @@ +const isMotionValue = (value) => Boolean(value && value.getVelocity); + +export { isMotionValue }; +//# sourceMappingURL=is-motion-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.mjs new file mode 100644 index 0000000..72614b6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.mjs @@ -0,0 +1,11 @@ +import { isMotionValue } from './is-motion-value.mjs'; + +/** + * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself + */ +function resolveMotionValue(value) { + return isMotionValue(value) ? value.get() : value; +} + +export { resolveMotionValue }; +//# sourceMappingURL=resolve-motion-value.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/will-change/add-will-change.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/will-change/add-will-change.mjs new file mode 100644 index 0000000..6c9ab79 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/will-change/add-will-change.mjs @@ -0,0 +1,21 @@ +import { MotionGlobalConfig } from 'motion-utils'; +import { isWillChangeMotionValue } from './is.mjs'; + +function addValueToWillChange(visualElement, key) { + const willChange = visualElement.getValue("willChange"); + /** + * It could be that a user has set willChange to a regular MotionValue, + * in which case we can't add the value to it. + */ + if (isWillChangeMotionValue(willChange)) { + return willChange.add(key); + } + else if (!willChange && MotionGlobalConfig.WillChange) { + const newWillChange = new MotionGlobalConfig.WillChange("auto"); + visualElement.addValue("willChange", newWillChange); + newWillChange.add(key); + } +} + +export { addValueToWillChange }; +//# sourceMappingURL=add-will-change.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/value/will-change/is.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/will-change/is.mjs new file mode 100644 index 0000000..b36be11 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/value/will-change/is.mjs @@ -0,0 +1,8 @@ +import { isMotionValue } from '../utils/is-motion-value.mjs'; + +function isWillChangeMotionValue(value) { + return Boolean(isMotionValue(value) && value.add); +} + +export { isWillChangeMotionValue }; +//# sourceMappingURL=is.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/index.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/index.mjs new file mode 100644 index 0000000..639a694 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/index.mjs @@ -0,0 +1,175 @@ +import { noop } from 'motion-utils'; +import { addToQueue } from './queue.mjs'; + +class ViewTransitionBuilder { + constructor(update, options = {}) { + this.currentSubject = "root"; + this.targets = new Map(); + /** + * Definitions that must be resolved to elements (and assigned a + * `view-transition-name`) rather than treated as pre-named layers. + */ + this.resolveDefs = new Set(); + /** + * Per-subject crop override: `true` forces the crop (clip + object-fit: + * cover + animated corner radii) on, `false` forces it off. A subject with + * no entry uses the default - crop only a genuine morph (a layer present in + * both snapshots), so a fade-only enter/exit isn't clipped to nothing. + */ + this.cropOverride = new Map(); + /** + * Subjects paired with a different new-snapshot target (the second `.add()` + * argument), so two distinct elements share one name and morph into each + * other - a shared-element transition. + */ + this.pairs = new Map(); + /** + * A `view-transition-class` to apply to each subject's resolved elements, + * so authors can target the generated layers from CSS by class rather than + * the opaque generated name. + */ + this.classNames = new Map(); + /** + * Subjects opted out of automatic group nesting via `.group(false)`. Their + * layer stays a flat top-level group (`view-transition-group: none`) instead + * of nesting under its DOM-ancestor layer - so it animates independently and + * escapes an ancestor's clip/transform (e.g. an element that lifts out of a + * card and flies across, which nesting would clip to the card). + */ + this.flatGroups = new Set(); + this.notifyReady = noop; + this.notifyReject = noop; + this.readyPromise = new Promise((resolve, reject) => { + this.notifyReady = resolve; + this.notifyReject = reject; + }); + this.update = update; + this.options = { + interrupt: "wait", + ...options, + }; + // Avoid an unhandled rejection when a failed transition has no + // `.then(_, reject)` handler attached (e.g. fire-and-forget). + this.readyPromise.catch(noop); + addToQueue(this); + } + /** + * Target elements resolved from a selector or Element, each assigned a + * `view-transition-name` automatically. + * + * Passing a second target pairs them: the first is resolved in the old + * snapshot and the second in the new, sharing one name so two *different* + * elements morph into each other (e.g. `.add(card, ".modal")`). Symmetric - + * pass them the other way round to morph back. + */ + add(subject, newSubject) { + this.currentSubject = subject; + this.resolveDefs.add(subject); + if (newSubject !== undefined) + this.pairs.set(subject, newSubject); + // Register the subject so it participates (and gets an automatic + // layout/morph animation) even without an explicit enter/exit/layout. + if (!this.targets.has(subject)) + this.targets.set(subject, {}); + return this; + } + /** + * Control this subject's crop (clip + `object-fit: cover` + animated + * corners). By default a subject auto-crops only when it actually morphs - + * present in both snapshots (a survivor, or an `.add(a, b)` pair). A + * fade-only enter/exit has no second box to crop against, so it's left to + * the browser default; in particular the `overflow: clip` a crop adds would + * otherwise clip a mis-sized enter/exit layer to nothing. + * + * `.crop(false)` forces the crop off (e.g. a text morph, where + * `object-fit: cover` clips glyphs as the box grows); `.crop(true)` forces + * it on for a non-morph the default wouldn't otherwise crop. + */ + crop(enabled = true) { + this.cropOverride.set(this.currentSubject, enabled); + return this; + } + /** + * By default a subject's layer nests under its nearest DOM-ancestor layer + * (`view-transition-group: contain`), so the ancestor's clip/transform/opacity + * apply to it through the transition - mirroring how the DOM actually paints, + * and letting a wrapper crop its child for the whole morph rather than only + * once the live DOM takes back over. (Needs a browser that supports nested + * view-transition groups; elsewhere it degrades to the flat default.) + * + * Call `.group(false)` to opt out: the layer stays flat and top-level, so it + * animates independently and escapes an ancestor's clip - e.g. an element + * that should lift out of a card and fly across, which nesting would clip. + */ + group(enabled = true) { + enabled + ? this.flatGroups.delete(this.currentSubject) + : this.flatGroups.add(this.currentSubject); + return this; + } + /** + * Tag this subject's generated layers with a `view-transition-class`, so + * they can be targeted from CSS - `::view-transition-group(.name)`, + * `::view-transition-old/new(.name)`, `::view-transition-image-pair(.name)` + * - without the opaque generated `view-transition-name`. Because `.add()` + * can match many elements, a shared class targets them all at once (and, + * for a pair, both ends). The escape hatch for z-index / custom keyframes + * on a morph layer. + */ + class(name) { + this.classNames.set(this.currentSubject, name); + return this; + } + /** + * Set the transition for this subject's morph. The morph is enabled + * automatically by `.add()`; this just customises its timing (duration, + * easing, a `delay`/`stagger`, …). On the implicit `root` subject it also + * opts the page into the transition (the root crossfade). + */ + layout(options = {}) { + this.updateTarget("layout", {}, options); + return this; + } + enter(keyframes, options) { + this.updateTarget("enter", keyframes, options); + return this; + } + exit(keyframes, options) { + this.updateTarget("exit", keyframes, options); + return this; + } + /** + * Animate the new view directly, whether the element is appearing or + * persisting (unlike `.enter()`, which only fires for a pure newcomer). + * Pair with `.old()` for a crossfade or slide-through. + */ + new(keyframes, options) { + this.updateTarget("new", keyframes, options); + return this; + } + /** + * Animate the old view directly, whether the element is leaving or + * persisting (unlike `.exit()`, which only fires for a pure leaver). + */ + old(keyframes, options) { + this.updateTarget("old", keyframes, options); + return this; + } + updateTarget(target, keyframes, options = {}) { + const { currentSubject, targets } = this; + if (!targets.has(currentSubject)) { + targets.set(currentSubject, {}); + } + const targetData = targets.get(currentSubject); + targetData[target] = { keyframes, options }; + } + then(resolve, reject) { + return this.readyPromise.then(resolve, reject); + } +} +function animateView(update, options = {}) { + return new ViewTransitionBuilder(update, options); +} + +export { ViewTransitionBuilder, animateView }; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/queue.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/queue.mjs new file mode 100644 index 0000000..bef9184 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/queue.mjs @@ -0,0 +1,59 @@ +import { removeItem } from 'motion-utils'; +import { microtask } from '../frameloop/microtask.mjs'; +import { startViewAnimation } from './start.mjs'; + +let builders = []; +let current = null; +function next() { + current = null; + const [nextBuilder] = builders; + if (nextBuilder) + start(nextBuilder); +} +function start(builder) { + removeItem(builders, builder); + current = builder; + startViewAnimation(builder) + .then((animation) => { + builder.notifyReady(animation); + return animation.finished; + }) + // A genuinely failed transition (a throwing update) rejects the + // builder; a skipped/interrupted one resolves with no animations (see + // start.ts). Either way, advance the queue - else later transitions hang. + .catch((error) => builder.notifyReject(error)) + .finally(next); +} +function processQueue() { + /** + * Iterate backwards over the builders array. We can ignore the + * "wait" animations. If we have an interrupting animation in the + * queue then we need to batch all preceding animations into it. + * Currently this only batches the update functions but will also + * need to batch the targets. + */ + for (let i = builders.length - 1; i >= 0; i--) { + const builder = builders[i]; + const { interrupt } = builder.options; + if (interrupt === "immediate") { + const batchedUpdates = builders.slice(0, i + 1).map((b) => b.update); + const remaining = builders.slice(i + 1); + builder.update = () => { + batchedUpdates.forEach((update) => update()); + }; + // Put the current builder at the front, followed by any "wait" builders + builders = [builder, ...remaining]; + break; + } + } + if (!current || builders[0]?.options.interrupt === "immediate") { + next(); + } +} +function addToQueue(builder) { + builders.push(builder); + microtask.render(processQueue); +} + +export { addToQueue }; +//# sourceMappingURL=queue.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/start.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/start.mjs new file mode 100644 index 0000000..869be6c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/start.mjs @@ -0,0 +1,700 @@ +import { warnOnce, secondsToMilliseconds } from 'motion-utils'; +import { GroupAnimation } from '../animation/GroupAnimation.mjs'; +import { NativeAnimation } from '../animation/NativeAnimation.mjs'; +import { NativeAnimationWrapper } from '../animation/NativeAnimationWrapper.mjs'; +import { getValueTransition } from '../animation/utils/get-value-transition.mjs'; +import { mapEasingToNativeEasing } from '../animation/waapi/easing/map-easing.mjs'; +import { applyGeneratorOptions } from '../animation/waapi/utils/apply-generator.mjs'; +import { cornerRadiusProps } from '../utils/border-radius.mjs'; +import { resolveElements } from '../utils/resolve-elements.mjs'; +import { assignViewTransitionNames, releaseViewTransitionNames } from './utils/assign-names.mjs'; +import { chooseLayerType } from './utils/choose-layer-type.mjs'; +import { css } from './utils/css.mjs'; +import { getViewAnimationLayerInfo } from './utils/get-layer-info.mjs'; +import { getViewAnimations } from './utils/get-view-animations.mjs'; +import { hasTarget } from './utils/has-target.mjs'; + +const definitionNames = ["layout", "enter", "exit", "new", "old"]; +/** + * Whether a computed border-radius is square (every component zero). Splitting + * on whitespace handles two-value/elliptical radii like "0px 20px" - a leading + * `parseFloat` alone would misread the non-zero vertical radius as square. + */ +const isSquareRadius = (radius) => radius.split(" ").every((value) => parseFloat(value) === 0); +/** + * The `ViewTransitionTarget` buckets driving each generated layer type, in + * priority order - the inverse of `chooseLayerType`. The new view is driven by + * `new`/`enter`, the old by `old`/`exit`. `group-children`/`image-pair` have no + * bucket; they follow the default layout timing. + */ +const typeBuckets = { + group: ["layout"], + new: ["new", "enter"], + old: ["old", "exit"], +}; +/** + * Default "absent" origin for a single-value keyframe, by pseudo type, so e.g. + * `enter({ scale: 1 })` grows in from 0.85 and `exit({ opacity: 0 })` fades + * from 1. `enter` prefers the matching `exit` value over these (see below). + */ +const ORIGIN_DEFAULTS = { + new: { opacity: 0, scale: 0.85 }, + old: { opacity: 1, scale: 1 }, +}; +/** + * How much two box aspect ratios must differ before a morph is treated as + * aspect-changing (and so worth cropping). Matches the projection engine's + * `preserve-aspect` threshold, so small layout jitter doesn't trigger a crop. + */ +const ASPECT_TOLERANCE = 0.2; +function startViewAnimation(builder) { + const { update, targets, resolveDefs, cropOverride, pairs, classNames, flatGroups, options: defaultOptions, } = builder; + if (!document.startViewTransition) { + // An async IIFE (not `new Promise(async …)`) so a throwing/rejecting + // update rejects this promise rather than leaving it unsettled. + return (async () => { + await update(); + return new GroupAnimation([]); + })(); + } + /** + * Resolve any selector/Element targets to layer names, assigning a + * `view-transition-name` to each element as we go. We run this before the + * update (so the elements are captured in the old snapshot) and again + * after it (for the new snapshot). An element present in both keeps the + * same name and animates as a single `group` layer. + */ + const nameRegistry = new Map(); + const assigned = []; + /** + * Elements we tagged with a `view-transition-class` (via `.class()`), + * tracked separately from `assigned` so cleanup removes the class without + * ever stripping an author's own inline `view-transition-name`. + */ + const classed = []; + /** + * Elements we set a `view-transition-group` on (for nesting), tracked for + * cleanup. `clipChildren` collects the names of nested parents that clip in + * the live layout, so their `::view-transition-group-children` is clipped + * through the transition - not just once the live DOM takes back over. + */ + const grouped = []; + const clipChildren = new Set(); + const layerTargets = new Map(); + const croppedNames = new Set(); + /** + * Each layer's explicit `.crop(true | false)` override (by resolved name), + * so `finalizeCrop` can let an author's choice win over the morph default. + */ + const cropForName = new Map(); + /** + * Each layer's stagger position (index + total) within its subject, per + * snapshot. Resolving against the snapshot the layer belongs to keeps + * stagger correct when `update()` replaces the matched elements, and lets + * us skip a layer that's absent from a snapshot (e.g. an exited element + * has no `new` pseudo-element). + */ + const layerStagger = new Map(); + /** + * Names allocated for a paired subject in the old snapshot, replayed onto + * its new-snapshot target so both ends share a layer and morph. + */ + const pairNames = new Map(); + /** + * The old (`from`) elements of each paired subject, so their names can be + * transferred off before the new (`to`) elements inherit them. + */ + const pairFrom = new Map(); + const resolveLayers = (phase) => { + targets.forEach((target, definition) => { + const className = classNames.get(definition); + /** + * Nest each resolved layer under its DOM-ancestor layer by default + * (`contain`), so an ancestor's clip/transform/opacity reach it + * through the transition; `.group(false)` opts a subject out (`none`) + * to stay flat and escape. Skipped for root / pre-named layers, which + * aren't elements we resolve and style. + */ + const group = definition === "root" || !resolveDefs.has(definition) + ? undefined + : flatGroups.has(definition) + ? "none" + : "contain"; + let names; + if (definition === "root" || !resolveDefs.has(definition)) { + names = [definition]; + } + else if (pairs.has(definition)) { + /** + * Paired morph: name the old target in the old snapshot, then + * force the same name(s) onto the new target in the new one, so + * two different elements morph as a single layer. + */ + if (phase === "old") { + pairFrom.set(definition, resolveElements(definition)); + names = assignViewTransitionNames(definition, nameRegistry, assigned, undefined, className, classed, group, grouped, clipChildren); + pairNames.set(definition, names); + } + else { + /** + * Transfer the name(s) off the `from` elements before the + * `to` elements inherit them. A `from` that survives into + * the new snapshot (e.g. hidden with `visibility: hidden` + * rather than removed) would otherwise keep the name and + * collide - "duplicate view-transition-name". + */ + for (const el of pairFrom.get(definition) ?? []) { + el.style?.removeProperty("view-transition-name"); + /** + * Drop the old end from the registry too, so the new + * end alone supplies this name's `new` crop radii - we + * neither re-measure nor get ordered by a stale element. + */ + nameRegistry.delete(el); + } + names = assignViewTransitionNames(pairs.get(definition), nameRegistry, assigned, pairNames.get(definition), className, classed, group, grouped, clipChildren); + } + } + else { + names = assignViewTransitionNames(definition, nameRegistry, assigned, undefined, className, classed, group, grouped, clipChildren); + } + // Record any explicit `.crop(true | false)` per resolved name; the + // crop set itself is computed later by `finalizeCrop` (it needs both + // snapshots to know which morphs change aspect ratio). + const override = cropOverride.get(definition); + names.forEach((name, index) => { + /** + * If two subjects resolve to the same element, merge their + * definitions so neither subject's animations are dropped. + */ + const existing = layerTargets.get(name); + layerTargets.set(name, existing && existing !== target + ? { ...existing, ...target } + : target); + if (override !== undefined) + cropForName.set(name, override); + const stagger = layerStagger.get(name) ?? {}; + stagger[phase] = [index, names.length]; + layerStagger.set(name, stagger); + }); + }); + }; + /** + * The stagger index/total for a layer, resolved against the snapshot it + * belongs to. Returns index -1 when the layer is absent from that snapshot + * so the caller can skip a pseudo-element that doesn't exist. + */ + const staggerPosition = (name, type) => { + const stagger = layerStagger.get(name); + const position = type === "old" + ? stagger?.old + : type === "new" + ? stagger?.new + : // group / group-children / image-pair persist across both. + stagger?.new ?? stagger?.old; + return position ?? [-1, 1]; + }; + /** + * Merge default + per-layer transition options for a generated layer and + * resolve any stagger/delay function against this element's position. Used + * by both the morph-retiming and crop corner-radius passes. + */ + const resolveLayerTransition = (target, type, transitionName, index, total) => { + const transition = mergeTransition(getValueTransition(defaultOptions, transitionName), getValueTransition((layerOptions(target, type) ?? {}), transitionName)); + if (typeof transition.delay === "function") { + transition.delay = transition.delay(index, total); + } + return transition; + }; + /** + * Resolve a layer's group (`layout`) timing to plain WAAPI values: native + * ms `delay`/`duration` and a baked `ease`. The single source of group + * timing, shared by the generated-group retiming and the crop corner-radius + * pass so the rounded clip animates on exactly the box's timing. It returns + * no generator `type` (the WAAPI-only `NativeAnimation` rejects a string + * type) nor `repeat`/`times` (which the group's `updateTiming` ignores), so + * none of them can leak into the radius animation and desync it. + */ + const resolveGroupTiming = (name) => { + const [index, total] = staggerPosition(name, "group"); + const transition = resolveLayerTransition(layerTargets.get(name), "group", "layout", index === -1 ? 0 : index, total); + transition.duration && (transition.duration = secondsToMilliseconds(transition.duration)); + const { delay = 0, duration, ease } = applyGeneratorOptions(transition); + return { delay: secondsToMilliseconds(delay), duration, ease }; + }; + /** + * Each layer's measured box + corner radii per snapshot. The box lets + * `finalizeCrop` tell whether a morph's aspect ratio changed (the only case + * worth cropping); the radii let a cropped morph's group clip animate each + * corner from the old element's radius to the new element's, keeping it + * rounded where `overflow: clip` would otherwise square the corners. + * + * We never flatten the source for capture (a snapshot is a paint of the live + * DOM, so squaring an element just for its capture would flash one real + * square frame). For an aspect-changing morph `object-fit: cover` crops each + * snapshot's own baked corners off-screen mid-morph, so the animated clip is + * the only visible corner; a near-same-aspect forced crop (`.crop(true)`) + * can't hide the outgoing snapshot's silhouette, but the endpoints coincide. + */ + const cropMeasurements = new Map(); + const measureLayers = (phase) => nameRegistry.forEach((name, element) => { + const el = element; + const rect = el.getBoundingClientRect?.(); + if (rect && rect.height) { + const style = getComputedStyle(el); + const radii = {}; + for (const corner of cornerRadiusProps) { + radii[corner] = style[corner]; + } + const entry = cropMeasurements.get(name) ?? {}; + entry[phase] = { width: rect.width, height: rect.height, radii }; + cropMeasurements.set(name, entry); + } + }); + /** + * With both snapshots measured, settle which layers crop. The default crops + * only a morph whose aspect ratio *changes* between snapshots - the one case + * where `object-fit: cover` does real work. A same-aspect morph or a + * fade-only layer is left uncropped: its corners scale naturally (no flash + * from squaring, no `overflow: clip` eating its shadow) and a backdrop can't + * be clipped to nothing. An explicit `.crop(true | false)` overrides either + * way. Runs after both snapshots are measured, since aspect needs both. + */ + const finalizeCrop = () => { + croppedNames.clear(); + for (const name of layerStagger.keys()) { + if (name === "root") + continue; + // An explicit `.crop(true | false)` wins; otherwise crop a morph + // whose aspect ratio changed. + if (cropForName.get(name) ?? aspectChanged(name)) { + croppedNames.add(name); + } + } + }; + /** + * Whether a layer is a morph whose box aspect ratio changed between + * snapshots (beyond a small tolerance). Fade-only layers (one snapshot) are + * never "changed". + */ + const aspectChanged = (name) => { + const box = cropMeasurements.get(name); + if (!box?.old || !box?.new || !box.old.height || !box.new.height) { + return false; + } + return (Math.abs(box.old.width / box.old.height - + box.new.width / box.new.height) > ASPECT_TOLERANCE); + }; + /** + * Write the persistent view-transition CSS: suppress root capture when the + * root has no animations of its own; force linear timing (baked into the + * keyframes, so we can retime later via updateTiming); and clip + + * object-fit: cover every cropped morph (the UA default overflows on + * aspect-ratio change). + * + * `css.commit` replaces rather than appends, so we re-set the full rule set + * each call - the crop rules are only known after `finalizeCrop` runs in the + * update callback, so the second call writes them. + */ + const commitViewCSS = () => { + if (!hasTarget("root", targets)) { + css.set(":root", { "view-transition-name": "none" }); + } + css.set("::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*)", { "animation-timing-function": "linear !important" }); + croppedNames.forEach((name) => { + css.set(`::view-transition-group(${name})`, { overflow: "clip" }); + css.set(`::view-transition-old(${name}), ::view-transition-new(${name})`, { width: "100%", height: "100%", "object-fit": "cover" }); + }); + /** + * Clip the nested children of any layer that clips in the live layout, + * so a wrapper crops its child for the whole morph (mirroring the DOM) + * rather than only at the live-DOM handoff. No-op on browsers without + * nested view-transition groups. + */ + clipChildren.forEach((name) => { + css.set(`::view-transition-group-children(${name})`, { + overflow: "clip", + }); + }); + css.commit(); // Write + }; + const cleanup = () => { + releaseViewTransitionNames(assigned, classed, grouped); + css.remove(); // Write + }; + const callback = async () => { + await update(); + /** + * Re-resolve so elements created by the update are named for the new + * snapshot, then measure them. With both snapshots measured we can + * settle the crop set (aspect-changing morphs + forced). + */ + resolveLayers("new"); + measureLayers("new"); + finalizeCrop(); + /** + * Re-commit the crop CSS unconditionally: `finalizeCrop` is computed + * here (after both snapshots are measured), so the clip rules must be + * (re)written to match the settled set. + */ + commitViewCSS(); + }; + let transition; + try { + resolveLayers("old"); + /** + * Measure the old snapshot against the optimistic crop set (the new + * snapshot doesn't exist yet, so aspect change can't be known here; + * `finalizeCrop` settles it post-update). + */ + measureLayers("old"); + commitViewCSS(); + transition = document.startViewTransition(callback); + } + catch (error) { + /** + * The prelude writes inline names before the transition exists. If it + * throws (e.g. startViewTransition rejects in a bad UA state), release + * them so we neither leak DOM state nor stall the queue on a promise + * that never settles - hand back a rejection it can advance past. + */ + cleanup(); + return Promise.reject(error); + } + transition.finished.finally(cleanup); + return new Promise((resolve, reject) => { + transition.ready + .then(() => { + const generatedViewAnimations = getViewAnimations(); + const animations = []; + /** + * Create animations for each of our explicitly-defined subjects. + * `opacityAnimated` additionally tracks which `${name}:${type}` + * we faded, so we can keep the UA `plus-lighter` blend only for a + * genuine opacity crossfade (both sides fading) and drop it for a + * slide/transform, where additive compositing would flash bright. + */ + const explicitlyAnimated = new Set(); + const opacityAnimated = new Set(); + layerTargets.forEach((target, name) => { + const stagger = layerStagger.get(name); + /** + * Presence: `enter` only fires for a pure newcomer (a new + * view with no old), `exit` only for a pure leaver. A + * survivor (both) gets neither - it just morphs. + */ + const enterApplies = !!stagger?.new && !stagger?.old; + const exitApplies = !!stagger?.old && !stagger?.new; + for (const key of definitionNames) { + if (!target[key]) + continue; + if (key === "enter" && !enterApplies) + continue; + if (key === "exit" && !exitApplies) + continue; + const type = chooseLayerType(key); + const [index, total] = staggerPosition(name, type); + // Skip a layer absent from its snapshot. + if (index === -1) + continue; + const { keyframes, options } = target[key]; + for (let [valueName, valueKeyframes] of Object.entries(keyframes)) { + // Skip only missing values - `0` (e.g. opacity: 0) + // is valid and must reach the from-value inference. + if (valueKeyframes == null) + continue; + /** + * The view path hands keyframes straight to WAAPI, + * so Motion's `x`/`y` shorthands (compiled to + * `transform` only via the value pipeline) have no + * effect. Warn and skip - use `transform`/`translate`. + */ + if (valueName === "x" || valueName === "y") { + warnOnce(false, `animateView() animates view-transition layers with CSS properties; the "${valueName}" shorthand has no effect - use transform, e.g. { transform: "translateX(40px)" }.`); + continue; + } + /** + * enter/exit win over new/old on a shared property - + * skip it here when the gated bucket also defines it. + */ + if (key === "new" && + enterApplies && + target.enter?.keyframes[valueName] != null) { + continue; + } + if (key === "old" && + exitApplies && + target.exit?.keyframes[valueName] != null) { + continue; + } + const valueOptions = mergeTransition(getValueTransition(defaultOptions, valueName), getValueTransition(options, valueName)); + /** + * Infer an origin for a single-value keyframe. An + * `enter` mirrors the matching `exit` value (a + * defined exit reverses into the enter for free); + * otherwise the per-type default (opacity 0/1, scale + * 0.85). No default -> left as-is (animates from the + * live value). + * + * `new`/`old` fire for survivors too, where only the + * opacity crossfade default applies - a transform + * default like scale 0.85 would pop a persisting + * element, so gate it on the layer actually + * entering/leaving. + */ + if (!Array.isArray(valueKeyframes)) { + const exitValue = key === "enter" + ? target.exit?.keyframes[valueName] + : undefined; + const allowDefault = valueName === "opacity" || + (type === "new" ? enterApplies : exitApplies); + const from = exitValue != null + ? Array.isArray(exitValue) + ? exitValue[exitValue.length - 1] + : exitValue + : allowDefault + ? ORIGIN_DEFAULTS[type]?.[valueName] + : undefined; + if (from !== undefined) { + valueKeyframes = [from, valueKeyframes]; + } + } + /** + * Resolve stagger function if provided, per element + * across this subject's resolved layers. + */ + if (typeof valueOptions.delay === "function") { + valueOptions.delay = valueOptions.delay(index, total); + } + valueOptions.duration && (valueOptions.duration = secondsToMilliseconds(valueOptions.duration)); + valueOptions.delay && (valueOptions.delay = secondsToMilliseconds(valueOptions.delay)); + animations.push(new NativeAnimation({ + ...valueOptions, + element: document.documentElement, + name: valueName, + pseudoElement: `::view-transition-${type}(${name})`, + keyframes: valueKeyframes, + })); + explicitlyAnimated.add(`${name}:${type}`); + if (valueName === "opacity") { + opacityAnimated.add(`${name}:${type}`); + } + } + } + }); + /** + * Handle browser generated animations + */ + for (const animation of generatedViewAnimations) { + if (animation.playState === "finished") + continue; + const { effect } = animation; + if (!effect || !(effect instanceof KeyframeEffect)) + continue; + const { pseudoElement } = effect; + if (!pseudoElement) + continue; + const name = getViewAnimationLayerInfo(pseudoElement); + if (!name) + continue; + const targetDefinition = layerTargets.get(name.layer); + /** + * We built our own animation for this layer, so drop the + * browser-generated fade we're replacing. The UA + * `plus-lighter` blend is a *separate* generated animation on + * the same pseudo (it sets `mix-blend-mode` in its keyframes): + * keep it *only* for a true opacity crossfade - both sides + * fading - so a symmetric crossfade composites without + * darkening, but a slide/transform (where both layers stay + * opaque and overlap) doesn't flash bright from the addition. + */ + if (explicitlyAnimated.has(`${name.layer}:${name.type}`)) { + const isCrossfade = opacityAnimated.has(`${name.layer}:new`) && + opacityAnimated.has(`${name.layer}:old`); + if (isCrossfade && + effect + .getKeyframes() + .some((keyframe) => keyframe.mixBlendMode)) { + animations.push(new NativeAnimationWrapper(animation)); + } + else { + animation.cancel(); + } + continue; + } + /** + * Drop the orphaned half of the default crossfade. The UA + * fades old out and new in as a *pair*; if the opposing half + * was explicitly overridden with something other than an + * opacity fade (a clip or transform reveal), this side's + * default opacity fade has no partner - left to run it would + * dissolve what should be a static backdrop (e.g. + * `.new({ clipPath })` should reveal over a still old view, + * not fade the old out around the growing clip). Cancel it - + * and its `plus-lighter` sibling on the same pseudo, which + * would otherwise flash bright where the two opaque layers + * overlap. A genuine crossfade (the opposing side also fading + * opacity) keeps both halves and is handled above. + */ + const opposite = name.type === "old" + ? "new" + : name.type === "new" + ? "old" + : undefined; + if (opposite && + explicitlyAnimated.has(`${name.layer}:${opposite}`) && + !opacityAnimated.has(`${name.layer}:${opposite}`)) { + animation.cancel(); + continue; + } + /** + * Otherwise retime the browser-generated animation to + * Motion's timing. This auto-enables the layout (group) + * morph for any resolved/named target, and applies the + * default timing to old/new layers we haven't explicitly + * overridden. + * + * group + group-children both follow the layout timing so + * the nesting container stays in sync with the morph. + */ + /** + * A survivor's old + new are the two halves of one + * `plus-lighter` crossfade. They must share identical timing + * (so their opacities stay mirrored and sum to 1 - else the + * additive blend flashes bright wherever both are partly + * visible) and fade linearly (the bounce belongs on the + * group's geometry, not the opacity). So time them as the + * group, rather than via their own - potentially staggered, + * or enter/exit-derived - old/new options. + */ + const stagger = layerStagger.get(name.layer); + const isMorphCrossfade = (name.type === "old" || name.type === "new") && + !!stagger?.old && + !!stagger?.new; + let timing; + if (name.type.startsWith("group")) { + // group + group-children follow the resolved group + // timing - the single source shared with the crop + // corner-radius pass below. + const { delay, duration, ease } = resolveGroupTiming(name.layer); + timing = { + delay, + duration, + easing: mapEasingToNativeEasing(ease, duration), + }; + } + else { + const timingType = isMorphCrossfade ? "group" : name.type; + const [index, total] = staggerPosition(name.layer, timingType); + const transitionName = timingType === "group" ? "layout" : ""; + let animationTransition = resolveLayerTransition(targetDefinition, timingType, transitionName, index === -1 ? 0 : index, total); + /** + * The crossfade should resolve at the spring's + * *perceptual* (visual) duration - the geometry can keep + * bouncing, but the opacity shouldn't drag through the + * settle. So capture `visualDuration` before + * `applyGeneratorOptions` replaces it with the full + * overshoot duration, and use it for the fade. + */ + const visualDuration = animationTransition.visualDuration; + animationTransition.duration && (animationTransition.duration = secondsToMilliseconds(animationTransition.duration)); + animationTransition = + applyGeneratorOptions(animationTransition); + timing = { + delay: secondsToMilliseconds(animationTransition.delay ?? 0), + duration: isMorphCrossfade && visualDuration !== undefined + ? secondsToMilliseconds(visualDuration) + : animationTransition.duration, + easing: isMorphCrossfade + ? "linear" + : mapEasingToNativeEasing(animationTransition.ease, animationTransition.duration), + }; + } + effect.updateTiming(timing); + animations.push(new NativeAnimationWrapper(animation)); + } + /** + * Round each cropped layer's clip. Its `::view-transition-group` + * has `overflow: clip`, which would otherwise square the corners + * mid-morph; animate each corner from the old element's radius to + * the new element's so the crop stays rounded. Timed as the group + * (`layout`) so the radius tracks the morphing box. + */ + cropMeasurements.forEach((entry, name) => { + if (!croppedNames.has(name)) + return; + // Reuse the group's resolved timing - native ms delay/ + // duration + a baked ease, with no generator `type` or + // repeat/times to leak into (or throw inside) NativeAnimation. + const { delay, duration, ease } = resolveGroupTiming(name); + for (const corner of cornerRadiusProps) { + // `||` (not `??`) so an empty measurement falls back to + // the other snapshot rather than an invalid keyframe. + const from = entry.old?.radii[corner] || + entry.new?.radii[corner] || + "0px"; + const to = entry.new?.radii[corner] || + entry.old?.radii[corner] || + "0px"; + // Nothing to round if the corner is square at both ends. + if (isSquareRadius(from) && isSquareRadius(to)) + continue; + animations.push(new NativeAnimation({ + element: document.documentElement, + name: corner, + pseudoElement: `::view-transition-group(${name})`, + keyframes: [from, to], + delay, + duration, + ease, + })); + } + }); + resolve(new GroupAnimation(animations)); + }) + .catch(() => + /** + * `ready` rejects when the transition is skipped - no visual + * change, or superseded by an interrupting transition. The DOM + * update still applied, so settle with no animations rather than + * surfacing it as an error to an awaiting caller. A genuine + * failure in `update()` rejects `updateCallbackDone` (already + * settled by now), so propagate that instead. + */ + transition.updateCallbackDone.then(() => resolve(new GroupAnimation([])), reject)); + }); +} +/** + * The options that should time a given generated layer type, so a retimed + * group/old/new picks up any per-target transition the user provided. Checks + * the type's buckets in priority order (e.g. `new` before `enter`). + */ +function layerOptions(target, type) { + for (const bucket of typeBuckets[type] ?? []) { + const options = target?.[bucket]?.options; + if (options) + return options; + } +} +/** + * Merge a base transition (e.g. the default `options`) with a per-layer/value + * override. An explicit `duration` on the override must win over an inherited + * generator's own timing: a spring prefers `visualDuration`, and + * `spring.applyToOptions` overwrites `duration` with the computed settle time - + * so without this the override is silently discarded. Dropping the inherited + * `type`/`visualDuration` makes the layer a plain tween of that duration, unless + * it asked for its own generator `type`/`visualDuration`. + */ +function mergeTransition(base, override) { + const merged = { ...base, ...override }; + if (override.duration !== undefined) { + if (override.visualDuration === undefined) + delete merged.visualDuration; + if (override.type === undefined) + delete merged.type; + } + return merged; +} + +export { startViewAnimation }; +//# sourceMappingURL=start.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/assign-names.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/assign-names.mjs new file mode 100644 index 0000000..c8a17a3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/assign-names.mjs @@ -0,0 +1,146 @@ +import { resolveElements } from '../../utils/resolve-elements.mjs'; + +let nameCount = 0; +/** + * Generated names live in their own namespace so we can tell a name we own + * (and must clean up) from an author-defined one - and so a stale generated + * name left behind by an interrupted transition is re-owned, not mistaken for + * the author's and leaked. + */ +const generatedName = () => `motion-view-${nameCount++}`; +const isGeneratedName = (name) => name.startsWith("motion-view-"); +/** + * Tag a captured element with a `view-transition-class` so authors can target + * its generated layer from CSS (e.g. `::view-transition-group(.hero)`) without + * the opaque generated name. Tracked in `classed` - separate from the generated + * names in `assigned` - so cleanup removes the class without ever stripping an + * author's own inline `view-transition-name`. + */ +function tagClass(element, className, classed) { + if (!className) + return; + element.style?.setProperty("view-transition-class", className); + classed.push(element); +} +/** + * Set the element's `view-transition-group` so its layer reconstructs the DOM + * hierarchy in the pseudo-tree (`contain`) - or stays flat (`none`). Tracked in + * `grouped` for cleanup. When the element clips (any non-`visible` overflow) its + * name is recorded in `clipChildren` so the caller can clip the nested children + * (`::view-transition-group-children(name)`), mirroring the live clip through + * the whole transition rather than only at the live-DOM handoff. + * + * Ignored by browsers without nested view-transition groups, where it harmlessly + * degrades to the flat default. + */ +function applyGroup(element, name, group, grouped, clipChildren) { + if (!group) + return; + element.style?.setProperty("view-transition-group", group); + grouped.push(element); + if (group !== "none" && clipChildren) { + const style = getComputedStyle(element); + if (style.overflowX !== "visible" || style.overflowY !== "visible") { + clipChildren.add(name); + } + } +} +/** + * Resolve a selector/Element to elements and ensure each one carries a + * `view-transition-name` we can target from script. + * + * Author-defined names are reused as-is. Elements that are unnamed (or use + * the browser's `auto`/`match-element`, whose generated name is not exposed + * to script) are given a unique generated name, set inline so it's captured, + * and tracked in `assigned` for later cleanup. + * + * `registry` maps each Element to its name so the same element keeps its name + * across both captures (before and after the update), which is what allows a + * persistent element to animate as a single `group` layer. + */ +function assignViewTransitionNames(definition, registry, assigned, forcedNames, className, classed = [], group, grouped = [], clipChildren) { + const elements = resolveElements(definition); + /** + * The new end of a paired morph: give each element the matching name from + * the old end (by index) so the two share one layer and morph. If the new + * end resolves to *more* elements than the old end named, the extras have no + * counterpart - give them a fresh name so they animate as newcomers rather + * than being silently left unnamed. We return the names actually assigned + * (sized to the resolved elements), not the raw `forcedNames`, so stagger + * totals and the layer set stay in step with what's on the page. + */ + if (forcedNames) { + return elements.map((element, i) => { + const existing = registry.get(element); + if (existing) + return existing; + const name = forcedNames[i] ?? generatedName(); + element.style?.setProperty("view-transition-name", name); + assigned.push(element); + registry.set(element, name); + tagClass(element, className, classed); + applyGroup(element, name, group, grouped, clipChildren); + return name; + }); + } + /** + * Read every current name up front, before assigning any. Interleaving the + * reads with the inline `setProperty` writes below would dirty styles + * between reads and force a style recalc per element; batching the reads + * keeps it to one. Elements already in the registry keep their name and + * need no read. + */ + const currentNames = elements.map((element) => registry.has(element) + ? undefined + : getComputedStyle(element).getPropertyValue("view-transition-name")); + return elements.map((element, i) => { + const existing = registry.get(element); + if (existing) + return existing; + const current = currentNames[i]; + let name; + if (current && + current !== "none" && + current !== "auto" && + current !== "match-element" && + !isGeneratedName(current)) { + /** + * The author already named this layer - target it as-is and leave + * it to them to clean up. `auto`/`match-element` are overridden + * because their generated name is not exposed to script, and a + * stale `motion-view-*` (e.g. left by an interrupted transition) is + * re-owned rather than adopted as an author name and leaked. + */ + name = current; + } + else { + name = generatedName(); + element.style?.setProperty("view-transition-name", name); + assigned.push(element); + } + registry.set(element, name); + tagClass(element, className, classed); + applyGroup(element, name, group, grouped, clipChildren); + return name; + }); +} +/** + * Remove the `view-transition-name`s we generated and the + * `view-transition-class`es we applied. Author-defined names are never touched + * (they're not in `assigned`). Safe to call more than once (e.g. on both a + * finished and an interrupted transition). + */ +function releaseViewTransitionNames(assigned, classed = [], grouped = []) { + for (const element of assigned) { + element.style?.removeProperty("view-transition-name"); + } + for (const element of classed) { + element.style?.removeProperty("view-transition-class"); + } + for (const element of grouped) { + element.style?.removeProperty("view-transition-group"); + } +} + +export { assignViewTransitionNames, releaseViewTransitionNames }; +//# sourceMappingURL=assign-names.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/choose-layer-type.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/choose-layer-type.mjs new file mode 100644 index 0000000..bf7e9e0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/choose-layer-type.mjs @@ -0,0 +1,10 @@ +function chooseLayerType(valueName) { + if (valueName === "layout") + return "group"; + if (valueName === "enter" || valueName === "new") + return "new"; + return "old"; +} + +export { chooseLayerType }; +//# sourceMappingURL=choose-layer-type.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/css.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/css.mjs new file mode 100644 index 0000000..24f9b67 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/css.mjs @@ -0,0 +1,33 @@ +let pendingRules = {}; +let style = null; +const css = { + set: (selector, values) => { + pendingRules[selector] = values; + }, + commit: () => { + if (!style) { + style = document.createElement("style"); + style.id = "motion-view"; + } + let cssText = ""; + for (const selector in pendingRules) { + const rule = pendingRules[selector]; + cssText += `${selector} {\n`; + for (const [property, value] of Object.entries(rule)) { + cssText += ` ${property}: ${value};\n`; + } + cssText += "}\n"; + } + style.textContent = cssText; + document.head.appendChild(style); + pendingRules = {}; + }, + remove: () => { + if (style && style.parentElement) { + style.parentElement.removeChild(style); + } + }, +}; + +export { css }; +//# sourceMappingURL=css.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/get-layer-info.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/get-layer-info.mjs new file mode 100644 index 0000000..3aff9a5 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/get-layer-info.mjs @@ -0,0 +1,11 @@ +function getViewAnimationLayerInfo(pseudoElement) { + const match = pseudoElement.match( + // `group-children` (nested transitions) before `group` so it wins. + /::view-transition-(old|new|group-children|group|image-pair)\((.*?)\)/); + if (!match) + return null; + return { layer: match[2], type: match[1] }; +} + +export { getViewAnimationLayerInfo }; +//# sourceMappingURL=get-layer-info.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/get-view-animations.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/get-view-animations.mjs new file mode 100644 index 0000000..a249893 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/get-view-animations.mjs @@ -0,0 +1,11 @@ +function getViewAnimations() { + return document.getAnimations().filter((animation) => { + const { effect } = animation; + return (!!effect && + effect.target === document.documentElement && + effect.pseudoElement?.startsWith("::view-transition")); + }); +} + +export { getViewAnimations }; +//# sourceMappingURL=get-view-animations.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/has-target.mjs b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/has-target.mjs new file mode 100644 index 0000000..ae14a10 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/dist/es/view/utils/has-target.mjs @@ -0,0 +1,6 @@ +function hasTarget(target, targets) { + return targets.has(target) && Object.keys(targets.get(target)).length > 0; +} + +export { hasTarget }; +//# sourceMappingURL=has-target.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-dom/package.json b/apps/web/.output/server/node_modules/motion-dom/package.json new file mode 100644 index 0000000..5822ad7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-dom/package.json @@ -0,0 +1,47 @@ +{ + "name": "motion-dom", + "version": "14.3.1", + "author": "Matt Perry", + "license": "MIT", + "repository": "https://github.com/motiondivision/motion", + "main": "./dist/cjs/index.js", + "types": "./dist/index.d.ts", + "module": "./dist/es/index.mjs", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/es/index.mjs", + "default": "./dist/cjs/index.js" + } + }, + "dependencies": { + "motion-utils": "14.1.1" + }, + "scripts": { + "clean": "rm -rf types dist lib", + "build": "yarn clean && tsc -p . && rollup -c && node ./scripts/check-bundle.js", + "dev": "concurrently -c blue,red -n tsc,rollup --kill-others \"tsc --watch -p . --preserveWatchOutput\" \"rollup --config --watch --no-watch.clearScreen\"", + "test": "jest --config jest.config.json --max-workers=2", + "measure": "rollup -c ./rollup.size.config.mjs", + "prepack": "yarn build && yarn measure && node ../../dev/inc/bundlesize.mjs motion-dom" + }, + "bundlesize": [ + { + "path": "./dist/size-rollup-style-effect.js", + "maxSize": "4.2 kB" + }, + { + "path": "./dist/size-rollup-motion-value.js", + "maxSize": "1.9 kB" + } + ], + "gitHead": "1785a8816da2682ef53bfc1fe8b3f61d86f17924", + "devDependencies": { + "concurrently": "^7.3.0", + "jest": "^29.7.0", + "rollup": "4.59.0", + "typescript": "5.4.3" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/array.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/array.mjs new file mode 100644 index 0000000..773d47a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/array.mjs @@ -0,0 +1,22 @@ +function addUniqueItem(arr, item) { + if (arr.indexOf(item) === -1) + arr.push(item); +} +function removeItem(arr, item) { + const index = arr.indexOf(item); + if (index > -1) + arr.splice(index, 1); +} +// Adapted from array-move +function moveItem([...arr], fromIndex, toIndex) { + const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex; + if (startIndex >= 0 && startIndex < arr.length) { + const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex; + const [item] = arr.splice(fromIndex, 1); + arr.splice(endIndex, 0, item); + } + return arr; +} + +export { addUniqueItem, moveItem, removeItem }; +//# sourceMappingURL=array.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/clamp.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/clamp.mjs new file mode 100644 index 0000000..1cfe237 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/clamp.mjs @@ -0,0 +1,10 @@ +const clamp = (min, max, v) => { + if (v > max) + return max; + if (v < min) + return min; + return v; +}; + +export { clamp }; +//# sourceMappingURL=clamp.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/anticipate.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/anticipate.mjs new file mode 100644 index 0000000..0367d40 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/anticipate.mjs @@ -0,0 +1,10 @@ +import { backIn } from './back.mjs'; + +const anticipate = (p) => p >= 1 + ? 1 + : (p *= 2) < 1 + ? 0.5 * backIn(p) + : 0.5 * (2 - Math.pow(2, -10 * (p - 1))); + +export { anticipate }; +//# sourceMappingURL=anticipate.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/back.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/back.mjs new file mode 100644 index 0000000..7498800 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/back.mjs @@ -0,0 +1,10 @@ +import { cubicBezier } from './cubic-bezier.mjs'; +import { mirrorEasing } from './modifiers/mirror.mjs'; +import { reverseEasing } from './modifiers/reverse.mjs'; + +const backOut = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99); +const backIn = /*@__PURE__*/ reverseEasing(backOut); +const backInOut = /*@__PURE__*/ mirrorEasing(backIn); + +export { backIn, backInOut, backOut }; +//# sourceMappingURL=back.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/circ.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/circ.mjs new file mode 100644 index 0000000..5e24dc4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/circ.mjs @@ -0,0 +1,9 @@ +import { mirrorEasing } from './modifiers/mirror.mjs'; +import { reverseEasing } from './modifiers/reverse.mjs'; + +const circIn = (p) => 1 - Math.sin(Math.acos(p)); +const circOut = reverseEasing(circIn); +const circInOut = mirrorEasing(circIn); + +export { circIn, circInOut, circOut }; +//# sourceMappingURL=circ.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs new file mode 100644 index 0000000..6b89b1a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs @@ -0,0 +1,55 @@ +import { noop } from '../noop.mjs'; + +/* + Bezier function generator + This has been modified from Gaëtan Renaudeau's BezierEasing + https://github.com/gre/bezier-easing/blob/master/src/index.js + https://github.com/gre/bezier-easing/blob/master/LICENSE + + t is found for a given x with Newton-Raphson, safeguarded by a bisection + bracket: whenever a Newton step would leave the bracket (near flat parts + of the curve), it bisects instead. This converges to full precision in + ~5 iterations on typical curves, so output is smooth rather than snapped + to a fixed bisection grid. The slope is estimated with a forward + difference, and the lookup table is omitted, to save bytes. + + x = 0 and x = 1 return exactly 0 and 1. x outside [0, 1] starts outside + the bracket, so it bisects towards the nearer end and saturates to within + ~1e-12 of 0 or 1. + Usage + const easeOut = cubicBezier(.17,.67,.83,.67); + const x = easeOut(0.5); // returns 0.627... +*/ +// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. +// Bernstein form, so it is exactly 0 at t = 0 and exactly 1 at t = 1. +const calcBezier = (t, a1, a2) => t * (3 * (1 - t) * ((1 - t) * a1 + t * a2) + t * t); +/*#__NO_SIDE_EFFECTS__*/ +function cubicBezier(mX1, mY1, mX2, mY2) { + // If this is a linear gradient, return linear easing + if (mX1 === mY1 && mX2 === mY2) + return noop; + return (x) => { + let lowerBound = 0; + let upperBound = 1; + let t = x; + for (let i = 0;; i++) { + // If t is outside the bracket, because x is out of range or a + // Newton step overshot where the slope is ~0, bisect instead. + if (!(t >= lowerBound && t <= upperBound)) { + t = (lowerBound + upperBound) / 2; + } + const currentX = calcBezier(t, mX1, mX2) - x; + if (currentX * currentX < 1e-28 || i === 40) + break; + currentX > 0 ? (upperBound = t) : (lowerBound = t); + // Newton-Raphson step, with dx/dt from a forward difference + t -= + (currentX * 1e-7) / + (calcBezier(t + 1e-7, mX1, mX2) - x - currentX); + } + return calcBezier(t, mY1, mY2); + }; +} + +export { cubicBezier }; +//# sourceMappingURL=cubic-bezier.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/ease.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/ease.mjs new file mode 100644 index 0000000..10cabac --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/ease.mjs @@ -0,0 +1,8 @@ +import { cubicBezier } from './cubic-bezier.mjs'; + +const easeIn = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1); +const easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1); +const easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1); + +export { easeIn, easeInOut, easeOut }; +//# sourceMappingURL=ease.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/modifiers/mirror.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/modifiers/mirror.mjs new file mode 100644 index 0000000..1ed7de1 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/modifiers/mirror.mjs @@ -0,0 +1,7 @@ +// Accepts an easing function and returns a new one that outputs mirrored values for +// the second half of the animation. Turns easeIn into easeInOut. +/*#__NO_SIDE_EFFECTS__*/ +const mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2; + +export { mirrorEasing }; +//# sourceMappingURL=mirror.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/modifiers/reverse.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/modifiers/reverse.mjs new file mode 100644 index 0000000..3a6d942 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/modifiers/reverse.mjs @@ -0,0 +1,7 @@ +// Accepts an easing function and returns a new one that outputs reversed values. +// Turns easeIn into easeOut. +/*#__NO_SIDE_EFFECTS__*/ +const reverseEasing = (easing) => (p) => 1 - easing(1 - p); + +export { reverseEasing }; +//# sourceMappingURL=reverse.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/steps.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/steps.mjs new file mode 100644 index 0000000..3e3961c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/steps.mjs @@ -0,0 +1,17 @@ +import { clamp } from '../clamp.mjs'; + +/*#__NO_SIDE_EFFECTS__*/ +function steps(numSteps, direction = "end") { + return (progress) => { + progress = + direction === "end" + ? Math.min(progress, 0.999) + : Math.max(progress, 0.001); + const expanded = progress * numSteps; + const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded); + return clamp(0, 1, rounded / numSteps); + }; +} + +export { steps }; +//# sourceMappingURL=steps.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs new file mode 100644 index 0000000..79a8519 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs @@ -0,0 +1,10 @@ +import { wrap } from '../../wrap.mjs'; +import { isEasingArray } from './is-easing-array.mjs'; + +/*#__NO_SIDE_EFFECTS__*/ +function getEasingForSegment(easing, i) { + return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing; +} + +export { getEasingForSegment }; +//# sourceMappingURL=get-easing-for-segment.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs new file mode 100644 index 0000000..1a3c736 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs @@ -0,0 +1,5 @@ +/*#__NO_SIDE_EFFECTS__*/ +const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === "number"; + +export { isBezierDefinition }; +//# sourceMappingURL=is-bezier-definition.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.mjs new file mode 100644 index 0000000..6b01de0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.mjs @@ -0,0 +1,7 @@ +/*#__NO_SIDE_EFFECTS__*/ +const isEasingArray = (ease) => { + return Array.isArray(ease) && typeof ease[0] !== "number"; +}; + +export { isEasingArray }; +//# sourceMappingURL=is-easing-array.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/map.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/map.mjs new file mode 100644 index 0000000..83b042d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/easing/utils/map.mjs @@ -0,0 +1,42 @@ +import { invariant } from '../../errors.mjs'; +import { noop } from '../../noop.mjs'; +import { anticipate } from '../anticipate.mjs'; +import { backOut, backInOut, backIn } from '../back.mjs'; +import { circOut, circInOut, circIn } from '../circ.mjs'; +import { cubicBezier } from '../cubic-bezier.mjs'; +import { easeOut, easeInOut, easeIn } from '../ease.mjs'; +import { isBezierDefinition } from './is-bezier-definition.mjs'; + +const easingLookup = { + linear: noop, + easeIn, + easeInOut, + easeOut, + circIn, + circInOut, + circOut, + backIn, + backInOut, + backOut, + anticipate, +}; +const isValidEasing = (easing) => { + return typeof easing === "string"; +}; +const easingDefinitionToFunction = (definition) => { + if (isBezierDefinition(definition)) { + // If cubic bezier definition, create bezier curve + invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`, "cubic-bezier-length"); + const [x1, y1, x2, y2] = definition; + return cubicBezier(x1, y1, x2, y2); + } + else if (isValidEasing(definition)) { + // Else lookup from table + invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`, "invalid-easing-type"); + return easingLookup[definition]; + } + return definition; +}; + +export { easingDefinitionToFunction }; +//# sourceMappingURL=map.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/errors.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/errors.mjs new file mode 100644 index 0000000..5f07b19 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/errors.mjs @@ -0,0 +1,19 @@ +import { formatErrorMessage } from './format-error-message.mjs'; + +let warning = () => { }; +let invariant = () => { }; +if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") { + warning = (check, message, errorCode) => { + if (!check && typeof console !== "undefined") { + console.warn(formatErrorMessage(message, errorCode)); + } + }; + invariant = (check, message, errorCode) => { + if (!check) { + throw new Error(formatErrorMessage(message, errorCode)); + } + }; +} + +export { invariant, warning }; +//# sourceMappingURL=errors.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/format-error-message.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/format-error-message.mjs new file mode 100644 index 0000000..dee97cc --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/format-error-message.mjs @@ -0,0 +1,8 @@ +function formatErrorMessage(message, errorCode) { + return errorCode + ? `${message}. For more information and steps for solving, visit https://motion.dev/troubleshooting/${errorCode}` + : message; +} + +export { formatErrorMessage }; +//# sourceMappingURL=format-error-message.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/global-config.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/global-config.mjs new file mode 100644 index 0000000..66ed577 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/global-config.mjs @@ -0,0 +1,4 @@ +const MotionGlobalConfig = {}; + +export { MotionGlobalConfig }; +//# sourceMappingURL=global-config.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/index.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/index.mjs new file mode 100644 index 0000000..2f07b9a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/index.mjs @@ -0,0 +1,29 @@ +export { addUniqueItem, moveItem, removeItem } from './array.mjs'; +export { clamp } from './clamp.mjs'; +export { invariant, warning } from './errors.mjs'; +export { MotionGlobalConfig } from './global-config.mjs'; +export { isNumericalString } from './is-numerical-string.mjs'; +export { isObject } from './is-object.mjs'; +export { isZeroValueString } from './is-zero-value-string.mjs'; +export { memo } from './memo.mjs'; +export { noop } from './noop.mjs'; +export { pipe } from './pipe.mjs'; +export { progress } from './progress.mjs'; +export { SubscriptionManager } from './subscription-manager.mjs'; +export { millisecondsToSeconds, secondsToMilliseconds } from './time-conversion.mjs'; +export { velocityPerSecond } from './velocity-per-second.mjs'; +export { hasWarned, warnOnce } from './warn-once.mjs'; +export { wrap } from './wrap.mjs'; +export { anticipate } from './easing/anticipate.mjs'; +export { backIn, backInOut, backOut } from './easing/back.mjs'; +export { circIn, circInOut, circOut } from './easing/circ.mjs'; +export { cubicBezier } from './easing/cubic-bezier.mjs'; +export { easeIn, easeInOut, easeOut } from './easing/ease.mjs'; +export { mirrorEasing } from './easing/modifiers/mirror.mjs'; +export { reverseEasing } from './easing/modifiers/reverse.mjs'; +export { steps } from './easing/steps.mjs'; +export { getEasingForSegment } from './easing/utils/get-easing-for-segment.mjs'; +export { isBezierDefinition } from './easing/utils/is-bezier-definition.mjs'; +export { isEasingArray } from './easing/utils/is-easing-array.mjs'; +export { easingDefinitionToFunction } from './easing/utils/map.mjs'; +//# sourceMappingURL=index.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/is-numerical-string.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/is-numerical-string.mjs new file mode 100644 index 0000000..cb4ce6e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/is-numerical-string.mjs @@ -0,0 +1,7 @@ +/** + * Check if value is a numerical string, ie a string that is purely a number eg "100" or "-100.1" + */ +const isNumericalString = (v) => /^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(v); + +export { isNumericalString }; +//# sourceMappingURL=is-numerical-string.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/is-object.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/is-object.mjs new file mode 100644 index 0000000..7f9bd3e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/is-object.mjs @@ -0,0 +1,4 @@ +const isObject = (value) => typeof value === "object" && value !== null; + +export { isObject }; +//# sourceMappingURL=is-object.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/is-zero-value-string.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/is-zero-value-string.mjs new file mode 100644 index 0000000..ba89398 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/is-zero-value-string.mjs @@ -0,0 +1,7 @@ +/** + * Check if the value is a zero value string like "0px" or "0%" + */ +const isZeroValueString = (v) => /^0[^.\s]+$/u.test(v); + +export { isZeroValueString }; +//# sourceMappingURL=is-zero-value-string.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/memo.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/memo.mjs new file mode 100644 index 0000000..d164ae4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/memo.mjs @@ -0,0 +1,12 @@ +/*#__NO_SIDE_EFFECTS__*/ +function memo(callback) { + let result; + return () => { + if (result === undefined) + result = callback(); + return result; + }; +} + +export { memo }; +//# sourceMappingURL=memo.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/noop.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/noop.mjs new file mode 100644 index 0000000..bd29da3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/noop.mjs @@ -0,0 +1,5 @@ +/*#__NO_SIDE_EFFECTS__*/ +const noop = (any) => any; + +export { noop }; +//# sourceMappingURL=noop.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/pipe.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/pipe.mjs new file mode 100644 index 0000000..bd4512c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/pipe.mjs @@ -0,0 +1,11 @@ +/** + * Pipe + * Compose other transformers to run linearily + * pipe(min(20), max(40)) + * @param {...functions} transformers + * @return {function} + */ +const pipe = (...transformers) => transformers.reduce((a, b) => (v) => b(a(v))); + +export { pipe }; +//# sourceMappingURL=pipe.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/progress.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/progress.mjs new file mode 100644 index 0000000..d964710 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/progress.mjs @@ -0,0 +1,15 @@ +/* + Progress within given range + + Given a lower limit and an upper limit, we return the progress + (expressed as a number 0-1) represented by the given value, and + limit that progress to within 0-1. +*/ +/*#__NO_SIDE_EFFECTS__*/ +const progress = (from, to, value) => { + const range = to - from; + return range ? (value - from) / range : 1; +}; + +export { progress }; +//# sourceMappingURL=progress.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/subscription-manager.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/subscription-manager.mjs new file mode 100644 index 0000000..ceee5f3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/subscription-manager.mjs @@ -0,0 +1,44 @@ +import { addUniqueItem, removeItem } from './array.mjs'; + +class SubscriptionManager { + constructor() { + this.subscriptions = []; + } + add(handler) { + addUniqueItem(this.subscriptions, handler); + return () => this.remove(handler); + } + remove(handler) { + removeItem(this.subscriptions, handler); + } + notify(a, b, c) { + const numSubscriptions = this.subscriptions.length; + if (!numSubscriptions) + return; + if (numSubscriptions === 1) { + /** + * If there's only a single handler we can just call it without invoking a loop. + */ + this.subscriptions[0](a, b, c); + } + else { + for (let i = 0; i < numSubscriptions; i++) { + /** + * Check whether the handler exists before firing as it's possible + * the subscriptions were modified during this loop running. + */ + const handler = this.subscriptions[i]; + handler && handler(a, b, c); + } + } + } + getSize() { + return this.subscriptions.length; + } + clear() { + this.subscriptions.length = 0; + } +} + +export { SubscriptionManager }; +//# sourceMappingURL=subscription-manager.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/time-conversion.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/time-conversion.mjs new file mode 100644 index 0000000..f770399 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/time-conversion.mjs @@ -0,0 +1,13 @@ +/** + * Converts seconds to milliseconds + * + * @param seconds - Time in seconds. + * @return milliseconds - Converted time in milliseconds. + */ +/*#__NO_SIDE_EFFECTS__*/ +const secondsToMilliseconds = (seconds) => seconds * 1000; +/*#__NO_SIDE_EFFECTS__*/ +const millisecondsToSeconds = (milliseconds) => milliseconds / 1000; + +export { millisecondsToSeconds, secondsToMilliseconds }; +//# sourceMappingURL=time-conversion.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/velocity-per-second.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/velocity-per-second.mjs new file mode 100644 index 0000000..6fc328a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/velocity-per-second.mjs @@ -0,0 +1,8 @@ +/* + Convert velocity into velocity per second +*/ +/*#__NO_SIDE_EFFECTS__*/ +const velocityPerSecond = (velocity, frameDuration) => frameDuration ? velocity * (1000 / frameDuration) : 0; + +export { velocityPerSecond }; +//# sourceMappingURL=velocity-per-second.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/warn-once.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/warn-once.mjs new file mode 100644 index 0000000..8d68e96 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/warn-once.mjs @@ -0,0 +1,15 @@ +import { formatErrorMessage } from './format-error-message.mjs'; + +const warned = new Set(); +function hasWarned(message) { + return warned.has(message); +} +function warnOnce(condition, message, errorCode) { + if (condition || warned.has(message)) + return; + console.warn(formatErrorMessage(message, errorCode)); + warned.add(message); +} + +export { hasWarned, warnOnce }; +//# sourceMappingURL=warn-once.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/dist/es/wrap.mjs b/apps/web/.output/server/node_modules/motion-utils/dist/es/wrap.mjs new file mode 100644 index 0000000..5fc9fba --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/dist/es/wrap.mjs @@ -0,0 +1,7 @@ +const wrap = (min, max, v) => { + const rangeSize = max - min; + return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min; +}; + +export { wrap }; +//# sourceMappingURL=wrap.mjs.map diff --git a/apps/web/.output/server/node_modules/motion-utils/package.json b/apps/web/.output/server/node_modules/motion-utils/package.json new file mode 100644 index 0000000..7a99077 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-utils/package.json @@ -0,0 +1,32 @@ +{ + "name": "motion-utils", + "version": "14.1.1", + "author": "Matt Perry", + "license": "MIT", + "repository": "https://github.com/motiondivision/motion", + "main": "./dist/cjs/index.js", + "types": "./dist/index.d.ts", + "module": "./dist/es/index.mjs", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/es/index.mjs", + "default": "./dist/cjs/index.js" + } + }, + "scripts": { + "clean": "rm -rf types dist lib", + "build": "yarn clean && tsc -p . && rollup -c", + "dev": "concurrently -c blue,red -n tsc,rollup --kill-others \"tsc --watch -p . --preserveWatchOutput\" \"rollup --config --watch --no-watch.clearScreen\"", + "test": "jest --config jest.config.json --max-workers=2" + }, + "gitHead": "23b2a5697ffa854d6da4c26b04ea0d2425e033d7", + "devDependencies": { + "concurrently": "^7.3.0", + "jest": "^29.7.0", + "rollup": "4.59.0", + "typescript": "5.4.3" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/animation-controls.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/animation-controls.mjs new file mode 100644 index 0000000..910d499 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/animation-controls.mjs @@ -0,0 +1,68 @@ +import { animateVisualElement, setTarget } from "motion-dom"; +import { invariant } from "hey-listen"; +//#region src/animation/hooks/animation-controls.ts +function stopAnimation(visualElement) { + visualElement.values.forEach((value) => value.stop()); +} +/** +* @deprecated +*/ +function animationControls() { + /** + * Track whether the host component has mounted. + */ + let hasMounted = false; + /** + * A collection of linked component animation controls. + */ + const subscribers = /* @__PURE__ */ new Set(); + const controls = { + subscribe(state) { + subscribers.add(state); + return () => void subscribers.delete(state); + }, + start(definition, transitionOverride) { + invariant(hasMounted, "controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook."); + const animations = []; + subscribers.forEach((visualElement) => { + animations.push(animateVisualElement(visualElement, definition, { transitionOverride })); + }); + return Promise.all(animations); + }, + set(definition) { + invariant(hasMounted, "controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook."); + return subscribers.forEach((visualElement) => { + setValues(visualElement, definition); + }); + }, + stop() { + subscribers.forEach((visualElement) => { + stopAnimation(visualElement); + }); + }, + mount() { + hasMounted = true; + return () => { + hasMounted = false; + controls.stop(); + }; + } + }; + return controls; +} +function setValues(visualElement, definition) { + if (Array.isArray(definition)) return setVariants(visualElement, definition); + else if (typeof definition === "string") return setVariants(visualElement, [definition]); + else setTarget(visualElement, definition); +} +function setVariants(visualElement, variantLabels) { + [...variantLabels].reverse().forEach((key) => { + const variant = visualElement.getVariant(key); + variant && setTarget(visualElement, variant); + if (visualElement.variantChildren) visualElement.variantChildren.forEach((child) => { + setVariants(child, variantLabels); + }); + }); +} +//#endregion +export { animationControls, setValues }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-animate.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-animate.mjs new file mode 100644 index 0000000..4b8ca93 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-animate.mjs @@ -0,0 +1,33 @@ +import { useMotionConfig } from "../../components/motion-config/context.mjs"; +import { createScopedAnimate } from "framer-motion/dom"; +import { computed, onUnmounted, ref } from "vue"; +//#region src/animation/hooks/use-animate.ts +function useAnimate() { + const dom = ref(null); + const domProxy = new Proxy(dom, { + get(target, key) { + if (typeof key === "string" || typeof key === "symbol") { + if (key === "current") return Reflect.get(target, "value"); + return Reflect.get(target, key); + } + }, + set(target, key, value) { + if (key === "value") return Reflect.set(target, key, value?.$el || value); + if (key === "animations") return Reflect.set(target, key, value); + return true; + } + }); + domProxy.animations = []; + const config = useMotionConfig(); + const scopedAnimate = computed(() => createScopedAnimate({ + scope: domProxy, + skipAnimations: config.value.skipAnimations + })); + const animate = ((...args) => scopedAnimate.value(...args)); + onUnmounted(() => { + domProxy.animations.forEach((animation) => animation.stop()); + }); + return [domProxy, animate]; +} +//#endregion +export { useAnimate }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-animation-controls.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-animation-controls.mjs new file mode 100644 index 0000000..8f4e567 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-animation-controls.mjs @@ -0,0 +1,48 @@ +import { animationControls } from "./animation-controls.mjs"; +import { onMounted, onUnmounted } from "vue"; +//#region src/animation/hooks/use-animation-controls.ts +/** +* Creates `AnimationControls`, which can be used to manually start, stop +* and sequence animations on one or more components. +* +* The returned `AnimationControls` should be passed to the `animate` property +* of the components you want to animate. +* +* These components can then be animated with the `start` method. +* +* ```jsx +* import { motion, useAnimationControls } from 'motion-v' +* +* export default defineComponent({ +* setup() { +* const controls = useAnimationControls() +* +* controls.start({ +* x: 100, +* transition: { duration: 0.5 }, +* }) +* +* return () => ( +* <motion.div animate={controls} /> +* ) +* } +* }) +* ``` +* +* @returns Animation controller with `start`, `stop`, `set` and `mount` methods +* +* @public +*/ +function useAnimationControls() { + const controls = animationControls(); + let unmount; + onMounted(() => { + unmount = controls.mount(); + }); + onUnmounted(() => { + unmount(); + }); + return controls; +} +//#endregion +export { useAnimationControls }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-reduced-motion.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-reduced-motion.mjs new file mode 100644 index 0000000..9f4c77c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/animation/hooks/use-reduced-motion.mjs @@ -0,0 +1,12 @@ +import { computed } from "vue"; +import { useMediaQuery } from "@vueuse/core"; +//#region src/animation/hooks/use-reduced-motion.ts +/** +* Reactive prefers-reduced-motion. +*/ +function useReducedMotion(options = {}) { + const reducedMotion = useMediaQuery("(prefers-reduced-motion: reduce)", options); + return computed(() => reducedMotion.value); +} +//#endregion +export { useReducedMotion }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/LayoutGroup.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/LayoutGroup.mjs new file mode 100644 index 0000000..38f34ee --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/LayoutGroup.mjs @@ -0,0 +1,5 @@ +import LayoutGroup_vue_vue_type_script_setup_true_lang_default from "./LayoutGroup.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/LayoutGroup.vue +var LayoutGroup_default = LayoutGroup_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { LayoutGroup_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/LayoutGroup.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/LayoutGroup.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..0df2779 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/LayoutGroup.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,24 @@ +import { useLayoutGroupProvider } from "./use-layout-group.mjs"; +import { defineComponent, renderSlot, unref } from "vue"; +//#region src/components/LayoutGroup.vue?vue&type=script&setup=true&lang.ts +var LayoutGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + __name: "LayoutGroup", + props: { + id: {}, + inherit: { + type: [Boolean, String], + default: true + } + }, + setup(__props) { + const { forceRender, key } = useLayoutGroupProvider(__props); + return (_ctx, _cache) => { + return renderSlot(_ctx.$slots, "default", { + renderKey: unref(key), + forceRender: unref(forceRender) + }); + }; + } +}); +//#endregion +export { LayoutGroup_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/RowValue.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/RowValue.mjs new file mode 100644 index 0000000..9872d1e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/RowValue.mjs @@ -0,0 +1,5 @@ +import RowValue_vue_vue_type_script_setup_true_lang_default from "./RowValue.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/RowValue.vue +var RowValue_default = RowValue_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { RowValue_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/RowValue.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/RowValue.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..15f270e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/RowValue.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,20 @@ +import { defineComponent, getCurrentInstance, toDisplayString, watchEffect } from "vue"; +//#region src/components/RowValue.vue?vue&type=script&setup=true&lang.ts +var RowValue_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + __name: "RowValue", + props: { value: {} }, + setup(__props) { + const props = __props; + const instance = getCurrentInstance()?.proxy; + watchEffect((cleanup) => { + cleanup(props.value.on("change", (value) => { + if (instance && instance.$el) instance.$el.textContent = value; + })); + }); + return (_ctx, _cache) => { + return toDisplayString(__props.value.get()); + }; + } +}); +//#endregion +export { RowValue_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.mjs new file mode 100644 index 0000000..54959d0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.mjs @@ -0,0 +1,5 @@ +import AnimatePresence_vue_vue_type_script_setup_true_lang_default from "./AnimatePresence.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/animate-presence/AnimatePresence.vue +var AnimatePresence_default = AnimatePresence_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { AnimatePresence_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..edf65f6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/AnimatePresence.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,40 @@ +import { usePresenceContainer } from "./use-presence-container.mjs"; +import { Transition, TransitionGroup, computed, createBlock, defineComponent, mergeProps, openBlock, renderSlot, resolveDynamicComponent, unref, withCtx } from "vue"; +//#region src/components/animate-presence/AnimatePresence.vue?vue&type=script&setup=true&lang.ts +var AnimatePresence_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + name: "AnimatePresence", + inheritAttrs: true, + __name: "AnimatePresence", + props: { + mode: { default: "sync" }, + initial: { + type: Boolean, + default: true + }, + as: {}, + custom: {}, + onExitComplete: {}, + anchorX: { default: "left" } + }, + setup(__props) { + const props = __props; + const { enter, exit } = usePresenceContainer(props); + const transitionProps = computed(() => { + if (props.mode !== "wait") return { tag: props.as }; + return { mode: props.mode === "wait" ? "out-in" : void 0 }; + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(resolveDynamicComponent(__props.mode === "wait" ? Transition : TransitionGroup), mergeProps(transitionProps.value, { + appear: "", + css: false, + onLeave: unref(exit), + onEnter: unref(enter) + }), { + default: withCtx(() => [renderSlot(_ctx.$slots, "default")]), + _: 3 + }, 16, ["onLeave", "onEnter"]); + }; + } +}); +//#endregion +export { AnimatePresence_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/exit-session.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/exit-session.mjs new file mode 100644 index 0000000..8fa9eee --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/exit-session.mjs @@ -0,0 +1,103 @@ +import { frame } from "motion-dom"; +//#region src/components/animate-presence/exit-session.ts +var popId = 0; +/** +* Bookkeeping unit for AnimatePresence exits: one session per exiting +* container element. Owns pop-layout styling and the fan-in toward +* `onAllComplete`. `abort` cancels a session whose element re-entered +* mid-exit; its states' exit promises then resolve silently. +*/ +function createExitSession(config) { + const sessions = /* @__PURE__ */ new Map(); + function addPopStyle(session) { + if (config.props.mode !== "popLayout") return; + const element = session.el; + const parent = element.offsetParent; + const parentWidth = parent instanceof HTMLElement ? parent.offsetWidth || 0 : 0; + const size = { + height: element.offsetHeight || 0, + width: element.offsetWidth || 0, + top: element.offsetTop, + left: element.offsetLeft, + right: 0 + }; + size.right = parentWidth - size.width - size.left; + const x = config.props.anchorX === "left" ? `left: ${size.left}px` : `right: ${size.right}px`; + const elementPopId = `pop-${popId++}`; + element.dataset.motionPopId = elementPopId; + const doc = element.ownerDocument; + const style = doc.createElement("style"); + const nonce = config.getNonce(); + if (nonce) style.nonce = nonce; + session.popStyle = style; + doc.head.appendChild(style); + if (style.sheet) style.sheet.insertRule(` + [data-motion-pop-id="${elementPopId}"] { + position: absolute !important; + width: ${size.width}px !important; + height: ${size.height}px !important; + top: ${size.top}px !important; + ${x} !important; + } + `); + } + function removePopStyle(session) { + const style = session.popStyle; + if (!style) return; + session.popStyle = void 0; + frame.render(() => { + style.parentNode?.removeChild(style); + }); + } + function track(el, states, done, handlers = []) { + const session = { + el, + states, + handlers, + done, + aborted: false + }; + sessions.set(el, session); + addPopStyle(session); + const completions = states.map((state) => state.getFeature("exit")?.exit() ?? Promise.resolve()); + for (const handler of handlers) completions.push(Promise.resolve(handler.onExit())); + Promise.all(completions).then(() => { + if (!session.aborted) finalize(session); + }); + } + function abort(el) { + const session = sessions.get(el); + if (!session) return; + session.aborted = true; + sessions.delete(el); + removePopStyle(session); + session.handlers.forEach((handler) => handler.onEnter?.()); + } + function finalize(session) { + sessions.delete(session.el); + removePopStyle(session); + session.states.forEach((state) => { + state.getSnapshot(false); + }); + session.done(); + if (!session.el.isConnected) session.states.forEach((state) => { + state.unmount(); + }); + config.onAllComplete(); + } + function dispose() { + sessions.forEach((session) => { + session.states.forEach((state) => { + state.unmount(); + }); + }); + sessions.clear(); + } + return { + track, + abort, + dispose + }; +} +//#endregion +export { createExitSession }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/presence.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/presence.mjs new file mode 100644 index 0000000..e78239a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/presence.mjs @@ -0,0 +1,5 @@ +import { createContext } from "../../utils/createContext.mjs"; +//#region src/components/animate-presence/presence.ts +var [injectAnimatePresence, provideAnimatePresence, animatePresenceInjectionKey] = createContext("AnimatePresenceContext"); +//#endregion +export { animatePresenceInjectionKey, injectAnimatePresence, provideAnimatePresence }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/use-presence-container.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/use-presence-container.mjs new file mode 100644 index 0000000..1229e37 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/use-presence-container.mjs @@ -0,0 +1,74 @@ +import { useMotionConfig } from "../motion-config/context.mjs"; +import { provideAnimatePresence } from "./presence.mjs"; +import { createExitSession } from "./exit-session.mjs"; +import { onMounted, onUnmounted } from "vue"; +//#region src/components/animate-presence/use-presence-container.ts +function usePresenceContainer(props) { + const motionConfig = useMotionConfig(); + const sessions = createExitSession({ + props, + getNonce: () => motionConfig.value.nonce, + onAllComplete: () => props.onExitComplete?.() + }); + const registered = /* @__PURE__ */ new Set(); + const handlers = /* @__PURE__ */ new Set(); + let hasMounted = false; + provideAnimatePresence({ + get initial() { + return hasMounted ? void 0 : props.initial; + }, + get custom() { + return props.custom; + }, + register: (state) => registered.add(state), + unregister: (state) => registered.delete(state), + registerHandler: (handler) => handlers.add(handler), + unregisterHandler: (handler) => handlers.delete(handler) + }); + onMounted(() => { + hasMounted = true; + }); + function findMotionStates(container) { + const states = []; + for (const state of registered) { + const el = state.element; + if (el && (el === container || container.contains(el))) states.push(state); + } + return states; + } + function findHandlers(container) { + const found = []; + for (const handler of handlers) { + const el = handler.element(); + if (el && (el === container || container.contains(el))) found.push(handler); + } + return found; + } + function enter(el, done) { + sessions.abort(el); + findMotionStates(el).forEach((state) => { + state.getFeature("exit")?.reenter(); + }); + done(); + } + function exit(el, done) { + const container = el; + const states = findMotionStates(container); + const exiting = findHandlers(container); + if (states.length === 0 && exiting.length === 0) { + done(); + props.onExitComplete?.(); + return; + } + sessions.track(container, states, done, exiting); + } + onUnmounted(() => { + sessions.dispose(); + }); + return { + enter, + exit + }; +} +//#endregion +export { usePresenceContainer }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/use-presence.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/use-presence.mjs new file mode 100644 index 0000000..6fcca73 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-presence/use-presence.mjs @@ -0,0 +1,34 @@ +import { injectAnimatePresence } from "./presence.mjs"; +import { onMounted, onUnmounted, onUpdated } from "vue"; +//#region src/components/animate-presence/use-presence.ts +/** +* Lets a component run its own exit when an `AnimatePresence` removes it, +* for components that animate out without a `motion` element's `exit`. +* +* Removal waits for the promise `onExit` returns. Vue runs the component's +* `onUnmounted` hooks before that, so teardown the exit needs (an engine, +* listeners) should wait for the same promise. `onEnter` runs if the +* element comes back while its exit is running. +* +* Outside an `AnimatePresence` it does nothing. +*/ +function usePresence(handler) { + const presence = injectAnimatePresence({}); + if (!presence.registerHandler) return; + let element; + const read = () => { + element = handler.element() ?? element; + }; + const registered = { + ...handler, + element: () => element + }; + onMounted(() => { + read(); + presence.registerHandler(registered); + }); + onUpdated(read); + onUnmounted(() => presence.unregisterHandler(registered)); +} +//#endregion +export { usePresence }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/AnimateView.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/AnimateView.mjs new file mode 100644 index 0000000..176ffbe --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/AnimateView.mjs @@ -0,0 +1,5 @@ +import AnimateView_vue_vue_type_script_setup_true_lang_default from "./AnimateView.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/animate-view/AnimateView.vue +var AnimateView_default = AnimateView_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { AnimateView_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/AnimateView.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/AnimateView.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..6a2348e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/AnimateView.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,36 @@ +import { useAnimateView } from "./use-animate-view.mjs"; +import { defineComponent, renderSlot } from "vue"; +//#region src/components/animate-view/AnimateView.vue?vue&type=script&setup=true&lang.ts +/** +* Animate enter, exit, update and shared element transitions using the +* browser's View Transitions API. Adds no wrapper DOM element. +* +* State updates must be wrapped in `startTransition`: +* +* ```vue +* <button @click="startTransition(() => show = !show)">Toggle</button> +* <AnimateView v-if="show"><div class="box" /></AnimateView> +* ``` +*/ +var AnimateView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + name: "AnimateView", + __name: "AnimateView", + props: { + name: {}, + transition: {}, + enter: { type: [Object, Function] }, + exit: { type: [Object, Function] }, + share: { type: [Object, Function] }, + update: { type: [Object, Function] }, + onAnimationStart: { type: Function }, + onAnimationComplete: { type: Function } + }, + setup(__props) { + useAnimateView(__props); + return (_ctx, _cache) => { + return renderSlot(_ctx.$slots, "default"); + }; + } +}); +//#endregion +export { AnimateView_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/animate-view-layers.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/animate-view-layers.mjs new file mode 100644 index 0000000..ffc541e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/animate-view-layers.mjs @@ -0,0 +1,92 @@ +import { GroupAnimation, NativeAnimation, NativeAnimationWrapper, applyGeneratorOptions, getValueTransition, getViewAnimationLayerInfo, getViewAnimations, mapEasingToNativeEasing } from "motion-dom"; +import { secondsToMilliseconds } from "motion-utils"; +//#region src/components/animate-view/animate-view-layers.ts +/** +* Animate the pseudo-element layers the browser has generated for a named +* view transition boundary, either retiming the browser's animations or +* replacing its crossfade with custom keyframes. +* +* Ported from framer-motion's AnimateView (`animate-view-layers.mjs`). +*/ +function animateViewLayers(name, animationType, { transition, onAnimationStart, onAnimationComplete, ...props }, types) { + const layerAnimations = []; + const definition = props[animationType]; + const { transition: typeTransition, ...values } = (typeof definition === "function" ? definition(types) : definition) || {}; + const hasValues = Object.keys(values).length > 0; + let hasBrowserLayerAnimation = false; + for (const viewAnimation of getViewAnimations()) { + if (viewAnimation.playState === "finished") continue; + const { effect } = viewAnimation; + if (typeof KeyframeEffect === "undefined" || !(effect instanceof KeyframeEffect) || !effect.pseudoElement) continue; + const info = getViewAnimationLayerInfo(effect.pseudoElement); + if (!info || info.layer !== name) continue; + hasBrowserLayerAnimation = true; + /** + * Custom values replace the browser's crossfade (old/new layers). + * The group layer carries the position/size morph, so keep it running + * with Motion's timing. + */ + if (hasValues && info.type !== "group") viewAnimation.cancel(); + else { + const transitionName = info.type === "group" ? "layout" : ""; + let options = { + ...getValueTransition(transition, transitionName), + ...getValueTransition(typeTransition, transitionName) + }; + options.duration = secondsToMilliseconds(options.duration ?? .3); + options = applyGeneratorOptions(options); + effect.updateTiming({ + delay: secondsToMilliseconds(options.delay ?? 0), + duration: options.duration, + easing: mapEasingToNativeEasing(options.ease, options.duration) + }); + layerAnimations.push(new NativeAnimationWrapper(viewAnimation)); + } + } + if (hasValues && hasBrowserLayerAnimation) layerAnimations.push(...createLayerAnimations(name, animationType, values, transition, typeTransition)); + const animation = new GroupAnimation(layerAnimations); + let active = true; + onAnimationStart?.(animation, animationType); + if (onAnimationComplete) animation.finished.then(() => { + if (active) onAnimationComplete(animationType); + }); + return () => { + active = false; + animation.cancel(); + }; +} +/** +* Run each custom value as a `NativeAnimation` against the snapshot +* pseudo-element that stays visible for this animation type: the `new` +* snapshot when entering, the `old` snapshot when exiting or sharing. +* The browser's own old/new crossfade has already been cancelled by the +* caller; the group layer (size/position morph) is untouched. +*/ +function createLayerAnimations(layerName, animationType, values, baseTransition, typeTransition) { + const animations = []; + for (const [name, value] of Object.entries(values)) { + let keyframes = value; + const options = { + ...getValueTransition(baseTransition, name), + ...getValueTransition(typeTransition, name) + }; + options.duration && (options.duration = secondsToMilliseconds(options.duration)); + options.delay && (options.delay = secondsToMilliseconds(options.delay)); + /** + * A single opacity value is a target, not a keyframe pair — backfill + * the starting frame from the snapshot's natural state: entering + * elements fade in from 0, exiting/shared ones fade out from 1. + */ + if (name === "opacity" && !Array.isArray(keyframes)) keyframes = [animationType === "enter" ? 0 : 1, keyframes]; + animations.push(new NativeAnimation({ + ...options, + element: document.documentElement, + name, + pseudoElement: `::view-transition-${animationType === "enter" ? "new" : "old"}(${layerName})`, + keyframes + })); + } + return animations; +} +//#endregion +export { animateViewLayers }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/context.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/context.mjs new file mode 100644 index 0000000..a262468 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/context.mjs @@ -0,0 +1,102 @@ +//#region src/components/animate-view/context.ts +var instances = /* @__PURE__ */ new Set(); +/** +* The transition currently collecting participants. Registration closes as +* soon as the update has flushed — NOT when the animation finishes playing +* (which can take seconds), so unrelated mounts/updates during playback are +* never misregistered. +*/ +var activeTransition = null; +/** +* The most recently started transition. The browser skips an interrupted +* transition when a new one begins, and the skipped one's `finished` settles +* too — this guard stops a stale transition from removing names the newer +* transition has applied. +*/ +var latestTransition = null; +/** Cancel functions returned by `animateViewLayers`, keyed by instance. */ +var animationCleanups = /* @__PURE__ */ new Map(); +function registerAnimateView(handle) { + instances.add(handle); +} +function unregisterAnimateView(handle) { + instances.delete(handle); +} +function getAnimateViews() { + return instances; +} +function getActiveViewTransition() { + return activeTransition; +} +function beginViewTransition(types) { + activeTransition = { + types, + participants: [] + }; + latestTransition = activeTransition; + return activeTransition; +} +/** +* Close participant registration once the transition's DOM update has +* flushed. The transition's pseudo-element snapshot is taken after this +* point, so no further lifecycle events can belong to it. +*/ +function closeViewTransitionRegistration(transition) { + if (activeTransition === transition) activeTransition = null; +} +function endViewTransition(transition) { + if (latestTransition !== transition) return; + latestTransition = null; + for (const instance of instances) instance.removeLayerNames(); + if (activeTransition === transition) activeTransition = null; + /** + * Destroy every layer animation, not just forget them. Custom-value + * animations are WAAPI animations attached to pseudo-elements BY NAME — + * left lingering, they re-attach and replay when the same name reappears + * in a later transition (wrap-around carousels, repeated shared-element + * opens), and their accumulation crashes the Chrome renderer on rapid + * navigation. + */ + for (const cleanup of animationCleanups.values()) cleanup(); + animationCleanups.clear(); +} +/** +* Store the cancel function for a participant's layer animation(s). +* Multi-root participants produce one call per layer name — compose them. +*/ +function setViewTransitionCleanup(handle, cleanup) { + const existing = animationCleanups.get(handle); + animationCleanups.set(handle, existing ? () => { + existing(); + cleanup(); + } : cleanup); +} +/** +* Cancel a layer animation still playing for an unmounted instance. Also +* suppresses its `onAnimationComplete` via the cleanup's `active` guard. +*/ +function cancelViewTransitionAnimation(handle) { + const cleanup = animationCleanups.get(handle); + if (cleanup) { + animationCleanups.delete(handle); + cleanup(); + } +} +/** +* Record that an instance is participating in the active transition. +* The first recorded type wins within a single transition — an entering +* element that also re-renders stays an "enter", not an "update". +*/ +function recordParticipant(type, handle, transition = activeTransition) { + if (!transition) return; + if (transition.participants.some((p) => p.handle === handle)) return; + transition.participants.push({ + handle, + layerNames: [...handle.layerNames], + type, + props: handle.getProps(), + shareName: handle.getShareName() + }); +} +//#endregion +export { beginViewTransition, cancelViewTransitionAnimation, closeViewTransitionRegistration, endViewTransition, getActiveViewTransition, getAnimateViews, recordParticipant, registerAnimateView, setViewTransitionCleanup, unregisterAnimateView }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/reset-styles.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/reset-styles.mjs new file mode 100644 index 0000000..ff52b62 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/reset-styles.mjs @@ -0,0 +1,20 @@ +import { isSSR } from "../../utils/is.mjs"; +//#region src/components/animate-view/reset-styles.ts +var hasInsertedTransitionResetStyle = false; +/** +* Force all view transition pseudo-elements to linear timing so Motion +* transitions fully control the easing via `updateTiming`. +*/ +function injectViewTransitionResetStyles() { + if (hasInsertedTransitionResetStyle || isSSR) return; + hasInsertedTransitionResetStyle = true; + const style = document.createElement("style"); + style.textContent = ` + ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { + animation-timing-function: linear !important; + } + `; + document.head.appendChild(style); +} +//#endregion +export { injectViewTransitionResetStyles }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/start-transition.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/start-transition.mjs new file mode 100644 index 0000000..fe9a3c8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/start-transition.mjs @@ -0,0 +1,187 @@ +import { beginViewTransition, closeViewTransitionRegistration, endViewTransition, getAnimateViews, setViewTransitionCleanup } from "./context.mjs"; +import { animateViewLayers } from "./animate-view-layers.mjs"; +import { nextTick } from "vue"; +import { noop, warnOnce } from "motion-utils"; +//#region src/components/animate-view/start-transition.ts +/** +* View transitions are non-interruptible: starting one while another is +* playing makes the browser skip the running transition, and its mid-flight +* pseudo-element images leak into the new transition's old snapshot (visual +* ghost stacking). React serializes transitions instead — updates committed +* during playback wait, then flush as a single batched transition. This +* queue mirrors that behavior. +*/ +var isTransitionRunning = false; +var updateQueue = []; +/** +* Run a state update inside a native View Transition. Any `<AnimateView>` +* component that enters, exits, updates or shares an element during the +* update will animate with its configured animations. +* +* ```ts +* startTransition(() => { show.value = !show.value }, { types: ['toggle'] }) +* ``` +* +* If a transition is already playing, the update is queued and flushed — +* batched with any others — once it finishes. Queued calls return +* `undefined` and their state changes apply only when the queue drains +* (React `startTransition` semantics). +* +* Returns the native `ViewTransition`, or `undefined` when queued, or when +* the View Transitions API is unavailable (SSR or unsupported browsers — +* the update still runs, without animation). +*/ +function startTransition(update, options = {}) { + if (!(typeof document !== "undefined" && typeof document.startViewTransition === "function")) { + if (process.env.NODE_ENV !== "production" && typeof document !== "undefined") warnOnce(true, "startTransition: the View Transitions API is not supported in this browser. The update ran without animation."); + update(); + return; + } + updateQueue.push({ + update, + types: options.types ?? [], + root: options.root + }); + if (isTransitionRunning) return void 0; + return flushUpdateQueue(); +} +/** +* Drain the queue as a single batched transition. Calls itself recursively +* from `finished` to flush updates that arrived during playback; with an +* empty queue it just marks the runner idle. +*/ +function flushUpdateQueue() { + const batch = updateQueue.splice(0); + if (batch.length === 0) { + isTransitionRunning = false; + return; + } + isTransitionRunning = true; + const types = [...new Set(batch.flatMap((item) => item.types))]; + const root = batch.some((item) => item.root); + const transition = beginViewTransition(types); + /** + * Apply layer names on every mounted instance *before* the update runs, + * so elements that are about to exit already carry their + * `view-transition-name` when the browser captures the old snapshot. + */ + for (const instance of getAnimateViews()) instance.applyLayerNames(); + /** + * Suppress the root *before* startViewTransition: the browser captures the + * old snapshot synchronously when the transition starts, so doing this in + * the update callback would leave the root in the old snapshot — an + * old-only layer that fades out as a full-page ghost instead of a hard cut. + */ + if (!root) suppressRootLayer(); + const viewTransition = document.startViewTransition(async () => { + if (!root) zeroSizeOverlayPassThrough(); + for (const item of batch) await item.update(); + await nextTick(); + /** + * The DOM update has flushed, so every mount/update/unmount belonging + * to this transition has happened. Close registration now — the window + * must not stay open while the animation plays (which can take + * seconds), or unrelated lifecycle events would be misregistered. + */ + closeViewTransitionRegistration(transition); + }); + viewTransition.ready.then(() => startParticipantAnimations(transition)).catch(noop); + viewTransition.finished.catch(noop).finally(() => { + restoreRootLayer(); + endViewTransition(transition); + flushUpdateQueue(); + }); + return viewTransition; +} +var overlayPassThroughAnimation = null; +/** +* Zero-size the `::view-transition` overlay so pointer events reach the live +* document during the transition; running animation groups keep their size +* and still block clicks over their snapshots. WAAPI scoped to this +* transition's pseudo tree, not a global stylesheet (React's technique). +* Must run inside the update callback: animations created before +* `startViewTransition()` never bind to the pseudo tree. +*/ +function zeroSizeOverlayPassThrough() { + const animation = document.documentElement.animate({ + width: [0, 0], + height: [0, 0] + }, { + duration: 0, + fill: "forwards", + pseudoElement: "::view-transition" + }); + if (animation.effect?.pseudoElement !== "::view-transition") { + animation.cancel(); + return; + } + overlayPassThroughAnimation = animation; +} +/** +* Exclude the document root from the transition (React +* `cancelRootViewTransitionName` parity): `view-transition-name: none` +* before the transition starts skips the root in both snapshots, so unnamed +* content changes hard-cut instead of crossfading the whole page. +*/ +function suppressRootLayer() { + const root = document.documentElement; + if (root.style.getPropertyValue("view-transition-name") !== "") return; + root.style.setProperty("view-transition-name", "none"); +} +/** Undo `suppressRootLayer`/`zeroSizeOverlayPassThrough` after the transition. */ +function restoreRootLayer() { + const root = document.documentElement; + if (root.style.getPropertyValue("view-transition-name") === "none") root.style.removeProperty("view-transition-name"); + overlayPassThroughAnimation?.cancel(); + overlayPassThroughAnimation = null; +} +/** +* Pair shared-element participants, then take over the browser's +* pseudo-element animations for every participant's layer. Called once the +* transition is `ready` — the pseudo tree now exists and its animations can +* be retimed or replaced. +*/ +function startParticipantAnimations(transition) { + pairSharedParticipants(transition); + const seen = /* @__PURE__ */ new Set(); + for (const participant of transition.participants) { + if (participant.consumed) continue; + for (const layerName of participant.layerNames) { + if (seen.has(layerName)) continue; + seen.add(layerName); + /** + * Keep the cancel function so an instance unmounted mid-playback can + * cancel its layer animation (and suppress `onAnimationComplete`), + * mirroring the cleanup React's `<ViewTransition>` performs. + */ + const cleanup = animateViewLayers(layerName, participant.type, participant.props, transition.types); + setViewTransitionCleanup(participant.handle, cleanup); + } + } +} +/** +* Share pairing: an exiting and an entering instance with the same `name` +* within this transition animate as a shared element, configured by the +* entering side's props. The exiting participant is marked `consumed` so +* the run loop skips it — the browser has already paired both sides under +* one layer name. +* +* Note: components that neither enter, exit nor re-render are not detected +* as participants even if the browser still morphs their position (e.g. +* list reorder without a re-render) — their group layer plays with the +* browser's default timing. Unlike React's `<ViewTransition>`, Vue has no +* reconciler-level signal for this. +*/ +function pairSharedParticipants(transition) { + const exits = transition.participants.filter((p) => p.type === "exit" && p.shareName); + for (const participant of transition.participants) { + if (participant.type !== "enter" || !participant.shareName) continue; + const exit = exits.find((p) => p.shareName === participant.shareName); + if (exit) { + participant.type = "share"; + exit.consumed = true; + } + } +} +//#endregion +export { startTransition }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/use-animate-view.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/use-animate-view.mjs new file mode 100644 index 0000000..482e545 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/animate-view/use-animate-view.mjs @@ -0,0 +1,132 @@ +import { cancelViewTransitionAnimation, getActiveViewTransition, recordParticipant, registerAnimateView, unregisterAnimateView } from "./context.mjs"; +import { injectViewTransitionResetStyles } from "./reset-styles.mjs"; +import { getCurrentInstance, onBeforeUnmount, onMounted, onUnmounted, onUpdated } from "vue"; +//#region src/components/animate-view/use-animate-view.ts +var uidCounter = 0; +/** charCode of 'a' — suffix base for multi-root layer names (`uid-a`, `uid-b`, …) */ +var SUFFIX_A = 97; +/** +* Collect the nearest host DOM nodes of a component instance. +* +* How the traversal stays inside this component's DOM range: +* +* Vue maintains two pointers on every vnode that delimit its DOM output: +* +* - `subTree.el` — the first DOM node this component rendered +* - `subTree.anchor` — the last DOM node (only set on Fragment vnodes, +* i.e. multi-root components) +* +* Vue guarantees a fragment's children are one contiguous run of siblings +* between `el` and `anchor` (its own patch/move logic relies on this), so +* walking `nextSibling` from `el` to `anchor` covers exactly this +* component's top-level DOM — never nodes before or after it. +* +* Shapes this produces: +* +* - Single root (`<div/>`): `anchor` is absent, falls back to `el`, the +* loop stops after one node. +* - Multi-root fragment (`<div/><div/>`): every top-level sibling in the +* `el → anchor` range is collected (they get suffixed names later, +* mirroring React's `name-a`/`name-b` behavior). +* - Root is a child component: the child vnode's `el` is its own root DOM +* node, so we land on the "nearest host node" without recursing into the +* child's internals (we follow `nextSibling`, never `childNodes`). +* - `<Teleport>` content renders elsewhere in the document, so it is +* structurally outside the `el → anchor` range and never collected. +* - Text and comment nodes (Vue uses comments as `v-if` placeholders) are +* filtered out by the `nodeType === 1` check. +*/ +function getRootElements(instance) { + const subTree = instance.subTree; + if (!subTree || !subTree.el) return []; + const elements = []; + let node = subTree.el; + const anchor = subTree.anchor ?? subTree.el; + const parent = subTree.el.parentNode; + while (node) { + if (node.nodeType === 1) elements.push(node); + if (node === anchor) break; + node = node.nextSibling; + /** + * Defensive bound: `el` and `anchor` must live in the same parent. + * If `anchor` were ever unreachable as a following sibling (a broken + * fragment invariant or a mid-patch intermediate state), stop instead + * of walking past the component's range into unrelated siblings. + */ + if (node && node.parentNode !== parent) break; + } + return elements; +} +/** +* Register the current `<AnimateView>` instance with the view transition +* registry and wire up lifecycle-based participation detection. +* +* Names are applied lazily: `startTransition` applies layer names on every +* mounted instance right before the DOM update, and entering instances apply +* their own on mount. Outside a transition no `view-transition-name` is +* written, so idle instances never interfere with other transitions. +*/ +function useAnimateView(props) { + const instance = getCurrentInstance(); + const uid = `motion-view-${++uidCounter}`; + let layerNames = []; + let layerElements = []; + function computeLayerNames(count) { + const name = props.name ?? uid; + if (count <= 1) return [name]; + return Array.from({ length: count }, (_, i) => `${name}-${String.fromCharCode(SUFFIX_A + i)}`); + } + function applyLayerNames() { + removeLayerNames(); + layerElements = getRootElements(instance); + layerNames = computeLayerNames(layerElements.length); + layerElements.forEach((el, i) => { + el.style.setProperty("view-transition-name", layerNames[i]); + }); + } + function removeLayerNames() { + for (const el of layerElements) el.style.removeProperty("view-transition-name"); + layerElements = []; + layerNames = []; + } + /** + * Spread, don't enumerate: any prop added to `AnimateViewProps` later is + * captured automatically, so exit-time snapshots can't silently drop it. + */ + function getPropsSnapshot() { + return { ...props }; + } + const handle = { + uid, + get layerNames() { + return layerNames; + }, + applyLayerNames, + removeLayerNames, + getProps: getPropsSnapshot, + getShareName: () => props.name + }; + onMounted(() => { + injectViewTransitionResetStyles(); + registerAnimateView(handle); + if (getActiveViewTransition()) { + applyLayerNames(); + recordParticipant("enter", handle); + } + }); + onUpdated(() => { + if (!getActiveViewTransition()) return; + applyLayerNames(); + recordParticipant("update", handle); + }); + onBeforeUnmount(() => { + if (getActiveViewTransition()) recordParticipant("exit", handle); + }); + onUnmounted(() => { + unregisterAnimateView(handle); + cancelViewTransitionAnimation(handle); + removeLayerNames(); + }); +} +//#endregion +export { useAnimateView }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/context.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/context.mjs new file mode 100644 index 0000000..47023ea --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/context.mjs @@ -0,0 +1,6 @@ +import { createContext } from "../utils/createContext.mjs"; +//#region src/components/context.ts +var [injectMotion, provideMotion, motionInjectionKey] = createContext("Motion"); +var [injectLayoutGroup, provideLayoutGroup, layoutGroupInjectionKey] = createContext("LayoutGroup"); +//#endregion +export { injectLayoutGroup, injectMotion, layoutGroupInjectionKey, motionInjectionKey, provideLayoutGroup, provideMotion }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/hooks/use-motion-elm.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/hooks/use-motion-elm.mjs new file mode 100644 index 0000000..b71d581 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/hooks/use-motion-elm.mjs @@ -0,0 +1,23 @@ +import "vue"; +import { unrefElement } from "@vueuse/core"; +//#region src/components/hooks/use-motion-elm.ts +/** +* Get the actual motion element, skipping text and comment nodes +* @param el - The HTML element to check +* @returns The first non-text/comment element +*/ +function getMotionElement(el) { + if (!el) return void 0; + if (el.nodeType === 3 || el.nodeType === 8) return getMotionElement(el.nextSibling); + return el; +} +/** +* Get the actual element, skipping text and comment nodes +* @param target - The element to check +* @returns The first non-text/comment element +*/ +function getElement(target) { + return getMotionElement(unrefElement(target)); +} +//#endregion +export { getElement, getMotionElement }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/lazy-motion/context.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/lazy-motion/context.mjs new file mode 100644 index 0000000..71c15d9 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/lazy-motion/context.mjs @@ -0,0 +1,5 @@ +import { createContext } from "../../utils/createContext.mjs"; +//#region src/components/lazy-motion/context.ts +var [useLazyMotionContext, lazyMotionContextProvider] = createContext("LazyMotionContext"); +//#endregion +export { lazyMotionContextProvider, useLazyMotionContext }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/lazy-motion/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/lazy-motion/index.mjs new file mode 100644 index 0000000..5326e0d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/lazy-motion/index.mjs @@ -0,0 +1,36 @@ +import { lazyMotionContextProvider } from "./context.mjs"; +import { defineComponent, ref } from "vue"; +//#region src/components/lazy-motion/index.ts +var LazyMotion = defineComponent({ + name: "LazyMotion", + inheritAttrs: false, + props: { + features: { + type: [Object, Function], + required: true + }, + strict: { + type: Boolean, + default: false + } + }, + setup(props, { slots }) { + const features = ref({}); + if (typeof props.features === "object" && "renderer" in props.features) features.value = props.features; + else if (typeof props.features === "function") props.features().then((mod) => { + features.value = mod; + }); + else if (props.features instanceof Promise) props.features.then((mod) => { + features.value = mod; + }); + lazyMotionContextProvider({ + features, + strict: props.strict + }); + return () => { + return slots.default?.(); + }; + } +}); +//#endregion +export { LazyMotion }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/MotionConfig.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/MotionConfig.mjs new file mode 100644 index 0000000..1c33db7 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/MotionConfig.mjs @@ -0,0 +1,5 @@ +import MotionConfig_vue_vue_type_script_setup_true_lang_default from "./MotionConfig.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/motion-config/MotionConfig.vue +var MotionConfig_default = MotionConfig_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { MotionConfig_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/MotionConfig.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/MotionConfig.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..0b05fad --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/MotionConfig.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,41 @@ +import { defaultConfig, provideMotionConfig, useMotionConfig } from "./context.mjs"; +import { computed, defineComponent, renderSlot } from "vue"; +import { isDef } from "@vueuse/core"; +import { warning } from "hey-listen"; +//#region src/components/motion-config/MotionConfig.vue?vue&type=script&setup=true&lang.ts +var MotionConfig_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + name: "MotionConfig", + inheritAttrs: false, + __name: "MotionConfig", + props: { + transition: {}, + reduceMotion: {}, + reducedMotion: { default: ({ reduceMotion }) => { + if (isDef(reduceMotion)) { + warning(false, "`reduceMotion` is deprecated. Use `reducedMotion` instead."); + return reduceMotion; + } + return defaultConfig.reducedMotion; + } }, + skipAnimations: { type: Boolean }, + nonce: {}, + inViewOptions: {} + }, + setup(__props) { + const props = __props; + const parentConfig = useMotionConfig(); + const config = computed(() => ({ + transition: props.transition ?? parentConfig.value.transition, + reducedMotion: props.reducedMotion ?? parentConfig.value.reducedMotion, + skipAnimations: props.skipAnimations ?? parentConfig.value.skipAnimations, + nonce: props.nonce ?? parentConfig.value.nonce, + inViewOptions: props.inViewOptions ?? parentConfig.value.inViewOptions + })); + provideMotionConfig(config); + return (_ctx, _cache) => { + return renderSlot(_ctx.$slots, "default"); + }; + } +}); +//#endregion +export { MotionConfig_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/context.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/context.mjs new file mode 100644 index 0000000..09cfc22 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion-config/context.mjs @@ -0,0 +1,20 @@ +import { createContext } from "../../utils/createContext.mjs"; +import { computed } from "vue"; +//#region src/components/motion-config/context.ts +/** +* Default motion configuration +*/ +var defaultConfig = { + reducedMotion: "never", + transition: void 0, + nonce: void 0 +}; +/** +* Context for sharing motion configuration with child components +*/ +var [injectMotionConfig, provideMotionConfig, motionConfigInjectionKey] = createContext("MotionConfig"); +function useMotionConfig() { + return injectMotionConfig(computed(() => defaultConfig)); +} +//#endregion +export { defaultConfig, injectMotionConfig, motionConfigInjectionKey, provideMotionConfig, useMotionConfig }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/index.mjs new file mode 100644 index 0000000..f10609e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/index.mjs @@ -0,0 +1,7 @@ +import { createMotionComponentWithFeatures } from "./utils.mjs"; +import { domMax } from "../../features/dom-max.mjs"; +//#region src/components/motion/index.ts +var motion = createMotionComponentWithFeatures(domMax); +var Motion = motion.create("div"); +//#endregion +export { Motion, motion }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/m.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/m.mjs new file mode 100644 index 0000000..6c46689 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/m.mjs @@ -0,0 +1,6 @@ +import { createMotionComponentWithFeatures } from "./utils.mjs"; +//#region src/components/motion/m.ts +var m = createMotionComponentWithFeatures(); +var M = m.create("div"); +//#endregion +export { M, m }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/props.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/props.mjs new file mode 100644 index 0000000..54b3b41 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/props.mjs @@ -0,0 +1,148 @@ +//#region src/components/motion/props.ts +var MotionComponentProps = { + "ignoreStrict": { type: Boolean }, + "forwardMotionProps": { + type: Boolean, + default: false + }, + "asChild": { + type: Boolean, + default: false + }, + "whileDrag": { type: [ + String, + Array, + Object + ] }, + "whileHover": { type: [ + String, + Array, + Object + ] }, + "whilePress": { type: [ + String, + Array, + Object + ] }, + "whileInView": { type: [ + String, + Array, + Object + ] }, + "whileFocus": { type: [ + String, + Array, + Object + ] }, + "custom": { type: [ + String, + Number, + Object, + Array + ] }, + "initial": { + type: [ + String, + Array, + Object, + Boolean + ], + default: void 0 + }, + "animate": { + type: [ + String, + Array, + Object + ], + default: void 0 + }, + "exit": { type: [ + String, + Array, + Object + ] }, + "variants": { type: Object }, + "inherit": { + type: Boolean, + default: void 0 + }, + "style": { type: Object }, + "transformTemplate": { type: Function }, + "transition": { type: Object }, + "onAnimationComplete": { type: Function }, + "onUpdate": { type: Function }, + "layout": { + type: [Boolean, String], + default: false + }, + "layoutId": { + type: String, + default: void 0 + }, + "layoutScroll": { + type: Boolean, + default: false + }, + "layoutRoot": { + type: Boolean, + default: false + }, + "data-framer-portal-id": { type: String }, + "crossfade": { + type: Boolean, + default: true + }, + "layoutDependency": { + type: null, + default: void 0 + }, + "onBeforeLayoutMeasure": { type: Function }, + "onLayoutMeasure": { type: Function }, + "onLayoutAnimationStart": { type: Function }, + "onLayoutAnimationComplete": { type: Function }, + "globalPressTarget": { type: Boolean }, + "onPressStart": { type: Function }, + "onPress": { type: Function }, + "onPressCancel": { type: Function }, + "onHoverStart": { type: Function }, + "onHoverEnd": { type: Function }, + "inViewOptions": { type: Object }, + "onViewportEnter": { type: Function }, + "onViewportLeave": { type: Function }, + "drag": { type: [Boolean, String] }, + "dragSnapToOrigin": { type: [Boolean, String] }, + "dragDirectionLock": { type: Boolean }, + "dragPropagation": { type: Boolean }, + "dragConstraints": { type: [Boolean, Object] }, + "dragElastic": { + type: [ + Boolean, + Number, + Object + ], + default: .5 + }, + "dragMomentum": { + type: Boolean, + default: true + }, + "dragTransition": { type: Object }, + "dragListener": { + type: Boolean, + default: true + }, + "dragControls": { type: Object }, + "onDragStart": { type: Function }, + "onDragEnd": { type: Function }, + "onDrag": { type: Function }, + "onDirectionLock": { type: Function }, + "onDragTransitionEnd": { type: Function }, + "onMeasureDragConstraints": { type: Function }, + "onPanSessionStart": { type: Function }, + "onPanStart": { type: Function }, + "onPan": { type: Function }, + "onPanEnd": { type: Function } +}; +//#endregion +export { MotionComponentProps }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/use-motion-state.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/use-motion-state.mjs new file mode 100644 index 0000000..1d0fb40 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/use-motion-state.mjs @@ -0,0 +1,115 @@ +import { resolveMotionProps } from "../../utils/resolve-motion-props.mjs"; +import { getMotionElement } from "../hooks/use-motion-elm.mjs"; +import { injectLayoutGroup, injectMotion, provideMotion } from "../context.mjs"; +import { useLazyMotionContext } from "../lazy-motion/context.mjs"; +import { useMotionConfig } from "../motion-config/context.mjs"; +import { injectAnimatePresence } from "../animate-presence/presence.mjs"; +import { createSVGStyles, createStyles } from "../../state/style.mjs"; +import { MotionState } from "../../state/motion-state.mjs"; +import { isMotionValue } from "motion-dom"; +import { getCurrentInstance, onActivated, onBeforeUnmount, onBeforeUpdate, onDeactivated, onMounted, onUnmounted, onUpdated, ref, useAttrs, watch } from "vue"; +import { invariant, warning } from "hey-listen"; +//#region src/components/motion/use-motion-state.ts +function useMotionState(props, bundle = {}) { + const parentState = injectMotion(null); + const layoutGroup = injectLayoutGroup({}); + const config = useMotionConfig(); + const presenceContext = injectAnimatePresence({}); + const lazyMotionContext = useLazyMotionContext({ + features: ref({}), + strict: false + }); + /** + * If we're in development mode, check to make sure we're not rendering a motion component + * as a child of LazyMotion, as this will break the file-size benefits of using it. + */ + if (process.env.NODE_ENV !== "production" && bundle.renderer && lazyMotionContext.strict) { + const strictMessage = "You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead."; + props.ignoreStrict ? warning(false, strictMessage) : invariant(false, strictMessage); + } + const attrs = useAttrs(); + function getProps() { + return resolveMotionProps(props, { + layoutGroup, + presenceContext, + config: config.value + }); + } + function getMotionProps() { + return { + ...attrs, + ...getProps() + }; + } + const state = new MotionState(getMotionProps(), parentState, bundle); + provideMotion(state); + watch(lazyMotionContext.features, (bundle) => { + state.setBundle(bundle); + }, { + immediate: true, + flush: "pre" + }); + function getAttrs() { + const isSVG = state.type === "svg"; + const attrsProps = { ...attrs }; + Object.keys(attrs).forEach((key) => { + if (isMotionValue(attrs[key])) attrsProps[key] = attrs[key].get(); + }); + const currentValues = state.visualElement?.latestValues || state.latestValues; + let styleProps = { + ...props.style, + ...isSVG ? {} : currentValues + }; + for (const key in styleProps) if (isMotionValue(styleProps[key])) styleProps[key] = styleProps[key].get(); + if (isSVG) { + const { attrs: svgAttrs, style: svgStyle } = createSVGStyles({ + ...currentValues, + ...styleProps + }, state.options.as, props.style); + Object.assign(attrsProps, svgAttrs); + styleProps = svgStyle; + } + if (props.drag && props.dragListener !== false) Object.assign(styleProps, { + userSelect: "none", + WebkitUserSelect: "none", + WebkitTouchCallout: "none", + touchAction: props.drag === true ? "none" : `pan-${props.drag === "x" ? "y" : "x"}` + }); + const style = createStyles(styleProps, props.transformTemplate); + if (style) attrsProps.style = style; + return attrsProps; + } + const instance = getCurrentInstance()?.proxy; + function mountState() { + const el = getMotionElement(instance?.$el); + state.mount(el); + } + onBeforeUnmount(() => { + state.updateOptions(getMotionProps()); + state.beforeUnmount(); + }); + onMounted(mountState); + function unmountIfDetached() { + if (!getMotionElement(instance?.$el)?.isConnected) state.unmount(); + } + onUnmounted(unmountIfDetached); + onDeactivated(unmountIfDetached); + onActivated(() => { + if (!state.isMounted()) mountState(); + }); + onBeforeUpdate(() => { + state.updateOptions(getMotionProps()); + state.beforeUpdate(); + }); + onUpdated(() => { + state.update(); + }); + return { + getProps, + getAttrs, + layoutGroup, + state + }; +} +//#endregion +export { useMotionState }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/utils.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/utils.mjs new file mode 100644 index 0000000..f771e44 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/motion/utils.mjs @@ -0,0 +1,101 @@ +import { useMotionState } from "./use-motion-state.mjs"; +import { MotionComponentProps } from "./props.mjs"; +import { Comment, cloneVNode, defineComponent, h, mergeProps } from "vue"; +//#region src/components/motion/utils.ts +var componentMaxCache = /* @__PURE__ */ new Map(); +var componentMiniCache = /* @__PURE__ */ new Map(); +function renderSlotFragments(fragments) { + if (!Array.isArray(fragments)) return [fragments]; + const result = []; + for (const item of fragments) if (Array.isArray(item)) result.push(...item); + else result.push(item); + return result; +} +var SELF_CLOSING_TAGS = [ + "area", + "img", + "input" +]; +function handlePrimitiveAndSlot(asTag, allAttrs, slots) { + if (typeof asTag === "string" && SELF_CLOSING_TAGS.includes(asTag)) return h(asTag, allAttrs); + if (asTag === "template") { + if (!slots.default) return null; + const children = renderSlotFragments(slots.default()); + const firstNonCommentIndex = children.findIndex((child) => child.type !== Comment); + if (firstNonCommentIndex === -1) return children; + const firstNonComment = children[firstNonCommentIndex]; + delete firstNonComment.props?.ref; + const mergedProps = firstNonComment.props ? mergeProps(allAttrs, firstNonComment.props) : allAttrs; + if (allAttrs.class && firstNonComment.props?.class) delete firstNonComment.props.class; + const cloned = cloneVNode(firstNonComment, mergedProps); + for (const prop in mergedProps) if (prop.startsWith("on")) { + cloned.props ||= {}; + cloned.props[prop] = mergedProps[prop]; + } + if (children.length === 1) return cloned; + children[firstNonCommentIndex] = cloned; + return children; + } + return null; +} +/** +* Creates a motion component from a base component or HTML tag +* Caches string-based components for reuse +*/ +function createMotionComponent(component, options = {}) { + const isString = typeof component === "string"; + const name = isString ? component : component.name || ""; + const componentCache = options.renderer ? componentMaxCache : componentMiniCache; + if (isString && componentCache.has(component)) return componentCache.get(component); + const motionComponent = defineComponent({ + inheritAttrs: false, + props: { + ...MotionComponentProps, + as: { + type: [String, Object], + default: component || "div" + } + }, + name: name ? `motion.${name}` : "Motion", + setup(props, { slots }) { + const { getProps, getAttrs, state } = useMotionState(props, options); + /** + * Vue reapplies all styles every render, include style properties and calculated initially styles get reapplied every render. + * To prevent this, reapply the current motion state styles in vnode updated lifecycle + */ + function onVnodeUpdated() { + const el = state.element; + if ((!(typeof props.as === "object") || props.asChild) && el) { + const { style } = getAttrs(); + if (style) for (const [key, val] of Object.entries(style)) el.style[key] = val; + } + } + return () => { + const motionProps = getProps(); + const motionAttrs = getAttrs(); + const asTag = props.asChild ? "template" : props.as; + const allAttrs = { + ...props.forwardMotionProps ? motionProps : {}, + ...motionAttrs, + onVnodeUpdated + }; + const primitiveOrSlotResult = handlePrimitiveAndSlot(asTag, allAttrs, slots); + if (primitiveOrSlotResult !== null) return primitiveOrSlotResult; + return h(asTag, { ...allAttrs }, slots); + }; + } + }); + if (isString) componentCache.set(component, motionComponent); + return motionComponent; +} +function createMotionComponentWithFeatures(featureBundle) { + return new Proxy({}, { get(_, prop) { + if (prop === "create") return (component, options) => createMotionComponent(component, { + ...options, + ...featureBundle + }); + return createMotionComponent(prop, { ...featureBundle }); + } }); +} +//#endregion +export { createMotionComponent, createMotionComponentWithFeatures }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Group.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Group.mjs new file mode 100644 index 0000000..81dd3a6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Group.mjs @@ -0,0 +1,5 @@ +import Group_vue_vue_type_script_setup_true_lang_default from "./Group.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/reorder/Group.vue +var Group_default = Group_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { Group_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Group.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Group.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..7d0b94c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Group.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,207 @@ +import { useDomRef } from "../../utils/use-dom-ref.mjs"; +import { Motion } from "../motion/index.mjs"; +import { reorderContextProvider } from "./context.mjs"; +import { checkReorder, detectAxis } from "./utils.mjs"; +import { computed, createBlock, createTextVNode, defineComponent, mergeProps, onUpdated, openBlock, ref, renderSlot, toDisplayString, unref, useAttrs, withCtx } from "vue"; +import { invariant } from "hey-listen"; +//#region src/components/reorder/Group.vue?vue&type=script&setup=true&lang.ts +var Group_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + name: "ReorderGroup", + inheritAttrs: false, + __name: "Group", + props: { + axis: {}, + "onUpdate:values": {}, + values: {}, + as: { default: "ul" }, + asChild: { type: Boolean }, + whileDrag: {}, + whileHover: {}, + whilePress: {}, + whileInView: {}, + whileFocus: {}, + forwardMotionProps: { type: Boolean }, + ignoreStrict: { type: Boolean }, + custom: {}, + initial: { + type: [ + String, + Array, + Object, + Boolean + ], + default: void 0 + }, + animate: {}, + exit: {}, + variants: {}, + inherit: { + type: Boolean, + default: void 0 + }, + style: {}, + transformTemplate: {}, + transition: {}, + onAnimationComplete: {}, + onUpdate: {}, + onAnimationStart: {}, + layout: { type: [Boolean, String] }, + layoutId: {}, + layoutScroll: { type: Boolean }, + layoutRoot: { type: Boolean }, + "data-framer-portal-id": {}, + crossfade: { + type: Boolean, + default: true + }, + layoutDependency: {}, + onBeforeLayoutMeasure: {}, + onLayoutMeasure: {}, + onLayoutAnimationStart: {}, + onLayoutAnimationComplete: {}, + globalPressTarget: { type: Boolean }, + onPressStart: {}, + onPress: {}, + onPressCancel: {}, + onHoverStart: {}, + onHoverEnd: {}, + inViewOptions: {}, + inView: {}, + onViewportEnter: {}, + onViewportLeave: {}, + drag: { type: [Boolean, String] }, + dragSnapToOrigin: { type: [Boolean, String] }, + dragDirectionLock: { type: Boolean }, + dragPropagation: { type: Boolean }, + dragConstraints: { type: [Boolean, Object] }, + dragElastic: { + type: [ + Boolean, + Number, + Object + ], + default: .5 + }, + dragMomentum: { + type: Boolean, + default: true + }, + dragTransition: {}, + dragListener: { + type: Boolean, + default: true + }, + dragControls: {}, + onDragStart: {}, + onDragEnd: {}, + onDrag: {}, + onDirectionLock: {}, + onDragTransitionEnd: {}, + onMeasureDragConstraints: {}, + onPanSessionStart: {}, + onPanStart: {}, + onPan: {}, + onPanEnd: {}, + onFocus: {}, + onBlur: {} + }, + setup(__props) { + const props = __props; + const itemLayouts = /* @__PURE__ */ new Map(); + const detectedAxis = ref("y"); + let isReordering = false; + const hasReordered = ref(false); + const axis = computed(() => props.axis || detectedAxis.value); + function warning() { + invariant(Boolean(props.values), "Reorder.Group must be provided a values prop"); + } + onUpdated(() => { + isReordering = false; + }); + const groupRef = useDomRef(); + reorderContextProvider({ + groupRef, + axis, + hasReordered, + registerItem: (value, layout) => { + const valuesSet = new Set(props.values); + itemLayouts.forEach((_, itemValue) => { + if (!valuesSet.has(itemValue)) itemLayouts.delete(itemValue); + }); + itemLayouts.set(value, layout); + if (!props.axis) { + const nextAxis = detectAxis(props.values.flatMap((itemValue) => { + const itemLayout = itemLayouts.get(itemValue); + return itemLayout ? [itemLayout] : []; + })); + if (nextAxis !== detectedAxis.value) detectedAxis.value = nextAxis; + } + }, + updateOrder: (item, offset, velocity) => { + if (isReordering) return; + const order = props.values.flatMap((value) => { + const layout = itemLayouts.get(value); + return layout ? [{ + value, + layout + }] : []; + }); + const element = groupRef.value; + const direction = element?.ownerDocument.defaultView?.getComputedStyle(element).direction === "rtl" ? "rtl" : "ltr"; + const newOrder = checkReorder(order, item, offset, velocity, axis.value, direction); + if (order !== newOrder) { + isReordering = true; + hasReordered.value = true; + const newValues = [...props.values]; + const measuredIndexes = order.map(({ value }) => props.values.indexOf(value)); + newOrder.forEach(({ value }, index) => { + newValues[measuredIndexes[index]] = value; + }); + props["onUpdate:values"]?.(newValues); + } + } + }); + const attrs = useAttrs(); + /** + * A release that ends a reordering drag isn't a click. Browsers only click an + * element holding both the press and release targets, so swallow it here, + * above every item (#2682). The flag is cleared when the drag ends — a frame + * after the release's click — or on the next press. Clicks with no pointer + * press behind them (detail 0, e.g. keyboard) are left alone. + */ + function handleClickCapture(event) { + if (hasReordered.value && event.detail) { + hasReordered.value = false; + event.stopPropagation(); + event.preventDefault(); + } + } + function handlePointerdownCapture() { + hasReordered.value = false; + } + function bindProps() { + const { axis, values, "onUpdate:values": onUpdateValues, ...rest } = props; + return { + ...attrs, + ...rest, + style: { + overflowAnchor: "none", + ...rest.style + } + }; + } + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(Motion), mergeProps(bindProps(), { + ref_key: "groupRef", + ref: groupRef, + onPointerdownCapture: handlePointerdownCapture, + onClickCapture: handleClickCapture + }), { + default: withCtx(() => [renderSlot(_ctx.$slots, "default"), createTextVNode(" " + toDisplayString(warning()), 1)]), + _: 3 + }, 16); + }; + } +}); +//#endregion +export { Group_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Item.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Item.mjs new file mode 100644 index 0000000..3a2f943 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Item.mjs @@ -0,0 +1,5 @@ +import Item_vue_vue_type_script_setup_true_lang_default from "./Item.vue_vue_type_script_setup_true_lang.mjs"; +//#region src/components/reorder/Item.vue +var Item_default = Item_vue_vue_type_script_setup_true_lang_default; +//#endregion +export { Item_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Item.vue_vue_type_script_setup_true_lang.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Item.vue_vue_type_script_setup_true_lang.mjs new file mode 100644 index 0000000..2f87f5a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/Item.vue_vue_type_script_setup_true_lang.mjs @@ -0,0 +1,191 @@ +import { Motion } from "../motion/index.mjs"; +import { useReorderContext } from "./context.mjs"; +import { useDefaultMotionValue } from "./utils.mjs"; +import { useTransform } from "../../value/use-transform.mjs"; +import { autoScrollIfNeeded, resetAutoScrollState } from "./auto-scroll.mjs"; +import { computed, createBlock, defineComponent, mergeProps, openBlock, ref, renderSlot, toRefs, unref, useAttrs, withCtx } from "vue"; +import { invariant } from "hey-listen"; +//#region src/components/reorder/Item.vue?vue&type=script&setup=true&lang.ts +var Item_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({ + name: "ReorderItem", + inheritAttrs: false, + __name: "Item", + props: { + value: {}, + layout: { + type: [Boolean, String], + default: true + }, + as: { default: "li" }, + asChild: { type: Boolean }, + whileDrag: { default: void 0 }, + whileHover: {}, + whilePress: {}, + whileInView: {}, + whileFocus: {}, + forwardMotionProps: { type: Boolean }, + ignoreStrict: { type: Boolean }, + custom: {}, + initial: { + type: [ + String, + Array, + Object, + Boolean + ], + default: void 0 + }, + animate: { default: void 0 }, + exit: {}, + variants: {}, + inherit: { + type: Boolean, + default: void 0 + }, + style: {}, + transformTemplate: {}, + transition: {}, + onAnimationComplete: {}, + onUpdate: {}, + onAnimationStart: {}, + layoutId: { default: void 0 }, + layoutScroll: { + type: Boolean, + default: false + }, + layoutRoot: { + type: Boolean, + default: false + }, + "data-framer-portal-id": {}, + crossfade: { + type: Boolean, + default: true + }, + layoutDependency: {}, + onBeforeLayoutMeasure: {}, + onLayoutMeasure: {}, + onLayoutAnimationStart: {}, + onLayoutAnimationComplete: {}, + globalPressTarget: { type: Boolean }, + onPressStart: {}, + onPress: {}, + onPressCancel: {}, + onHoverStart: {}, + onHoverEnd: {}, + inViewOptions: {}, + inView: { default: void 0 }, + onViewportEnter: {}, + onViewportLeave: {}, + drag: { + type: [Boolean, String], + default: void 0 + }, + dragSnapToOrigin: { type: [Boolean, String] }, + dragDirectionLock: { type: Boolean }, + dragPropagation: { type: Boolean }, + dragConstraints: { type: [Boolean, Object] }, + dragElastic: { + type: [ + Boolean, + Number, + Object + ], + default: .5 + }, + dragMomentum: { + type: Boolean, + default: true + }, + dragTransition: {}, + dragListener: { + type: Boolean, + default: true + }, + dragControls: {}, + onDragStart: {}, + onDragEnd: {}, + onDrag: {}, + onDirectionLock: {}, + onDragTransitionEnd: {}, + onMeasureDragConstraints: {}, + onPanSessionStart: {}, + onPanStart: {}, + onPan: {}, + onPanEnd: {}, + onFocus: {}, + onBlur: {} + }, + setup(__props) { + const props = __props; + const { style } = toRefs(props); + const context = useReorderContext(); + const point = { + x: useDefaultMotionValue(style.value?.x), + y: useDefaultMotionValue(style.value?.y) + }; + const zIndex = useTransform([point.x, point.y], ([latestX, latestY]) => latestX || latestY ? 1 : "unset"); + function warning() { + invariant(Boolean(context), "Reorder.Item must be a descendant of Reorder.Group"); + } + warning(); + const { axis, registerItem, updateOrder, groupRef, hasReordered } = context; + const attrs = useAttrs(); + function bindProps() { + const { value, onDragStart, onDragEnd, onDrag, ...rest } = props; + return { + ...attrs, + ...rest, + style: { + ...style.value, + x: point.x, + y: point.y, + zIndex + } + }; + } + const drag = computed(() => { + if (props.drag !== void 0) return props.drag; + return axis?.value === "xy" ? true : axis?.value; + }); + const isDragging = ref(false); + function handleDrag(event, gesturePoint) { + const { velocity, point: pointerPoint } = gesturePoint; + const offset = { + x: point.x.get(), + y: point.y.get() + }; + updateOrder?.(props.value, offset, velocity); + const scrollAxis = axis?.value === "xy" ? Math.abs(velocity.x) > Math.abs(velocity.y) ? "x" : "y" : axis?.value; + autoScrollIfNeeded(groupRef?.value, pointerPoint?.[scrollAxis], scrollAxis, velocity?.[scrollAxis]); + if (!isDragging.value) isDragging.value = true; + props.onDrag?.(event, gesturePoint); + } + function handleDragEnd(event, gesturePoint) { + if (hasReordered) hasReordered.value = false; + isDragging.value = false; + resetAutoScrollState(); + props.onDragEnd?.(event, gesturePoint); + } + function handleDragStart(event, gesturePoint) { + props.onDragStart?.(event, gesturePoint); + } + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(Motion), mergeProps(bindProps(), { + drag: drag.value, + "drag-snap-to-origin": true, + onDrag: handleDrag, + onDragEnd: handleDragEnd, + onDragStart: handleDragStart, + onLayoutMeasure: _cache[0] || (_cache[0] = (measured) => { + unref(registerItem)?.(__props.value, measured); + }) + }), { + default: withCtx(() => [renderSlot(_ctx.$slots, "default", { isDragging: isDragging.value })]), + _: 3 + }, 16, ["drag"]); + }; + } +}); +//#endregion +export { Item_vue_vue_type_script_setup_true_lang_default as default }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/auto-scroll.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/auto-scroll.mjs new file mode 100644 index 0000000..73a2e87 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/auto-scroll.mjs @@ -0,0 +1,93 @@ +//#region src/components/reorder/auto-scroll.ts +var threshold = 50; +var maxSpeed = 25; +var overflowStyles = /* @__PURE__ */ new Set(["auto", "scroll"]); +var initialScrollLimits = /* @__PURE__ */ new WeakMap(); +var activeScrollEdge = /* @__PURE__ */ new WeakMap(); +var currentGroupElement = null; +function resetAutoScrollState() { + if (currentGroupElement) { + const scrollableAncestor = findScrollableAncestor(currentGroupElement, "y"); + if (scrollableAncestor) { + activeScrollEdge.delete(scrollableAncestor); + initialScrollLimits.delete(scrollableAncestor); + } + const scrollableAncestorX = findScrollableAncestor(currentGroupElement, "x"); + if (scrollableAncestorX && scrollableAncestorX !== scrollableAncestor) { + activeScrollEdge.delete(scrollableAncestorX); + initialScrollLimits.delete(scrollableAncestorX); + } + currentGroupElement = null; + } +} +function isDocumentScroll(element) { + return element === document.body || element === document.documentElement; +} +function isScrollableElement(element, axis) { + const style = getComputedStyle(element); + const overflow = axis === "x" ? style.overflowX : style.overflowY; + return overflowStyles.has(overflow) || isDocumentScroll(element); +} +function findScrollableAncestor(element, axis) { + let current = element?.parentElement; + while (current) { + if (isScrollableElement(current, axis)) return current; + current = current.parentElement; + } + return null; +} +function getScrollAmount(pointerPosition, scrollElement, axis) { + const rect = scrollElement.getBoundingClientRect(); + const start = axis === "x" ? Math.max(0, rect.left) : Math.max(0, rect.top); + const end = axis === "x" ? Math.min(window.innerWidth, rect.right) : Math.min(window.innerHeight, rect.bottom); + const distanceFromStart = pointerPosition - start; + const distanceFromEnd = end - pointerPosition; + if (distanceFromStart < threshold) { + const intensity = 1 - distanceFromStart / threshold; + return { + amount: -25 * intensity * intensity, + edge: "start" + }; + } else if (distanceFromEnd < threshold) { + const intensity = 1 - distanceFromEnd / threshold; + return { + amount: maxSpeed * intensity * intensity, + edge: "end" + }; + } + return { + amount: 0, + edge: null + }; +} +function autoScrollIfNeeded(groupElement, pointerPosition, axis, velocity) { + if (!groupElement) return; + currentGroupElement = groupElement; + const scrollableAncestor = findScrollableAncestor(groupElement, axis); + if (!scrollableAncestor) return; + const { amount: scrollAmount, edge } = getScrollAmount(pointerPosition - (axis === "x" ? window.scrollX : window.scrollY), scrollableAncestor, axis); + if (edge === null) { + activeScrollEdge.delete(scrollableAncestor); + initialScrollLimits.delete(scrollableAncestor); + return; + } + const currentActiveEdge = activeScrollEdge.get(scrollableAncestor); + const isDocument = isDocumentScroll(scrollableAncestor); + if (currentActiveEdge !== edge) { + if (!(edge === "start" && velocity < 0 || edge === "end" && velocity > 0)) return; + activeScrollEdge.set(scrollableAncestor, edge); + const maxScroll = axis === "x" ? scrollableAncestor.scrollWidth - (isDocument ? window.innerWidth : scrollableAncestor.clientWidth) : scrollableAncestor.scrollHeight - (isDocument ? window.innerHeight : scrollableAncestor.clientHeight); + initialScrollLimits.set(scrollableAncestor, maxScroll); + } + if (scrollAmount > 0) { + const initialLimit = initialScrollLimits.get(scrollableAncestor); + if ((axis === "x" ? isDocument ? window.scrollX : scrollableAncestor.scrollLeft : isDocument ? window.scrollY : scrollableAncestor.scrollTop) >= initialLimit) return; + } + if (axis === "x") { + if (isDocument) window.scrollBy({ left: scrollAmount }); + else scrollableAncestor.scrollLeft += scrollAmount; + } else if (isDocument) window.scrollBy({ top: scrollAmount }); + else scrollableAncestor.scrollTop += scrollAmount; +} +//#endregion +export { autoScrollIfNeeded, resetAutoScrollState }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/context.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/context.mjs new file mode 100644 index 0000000..3640132 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/context.mjs @@ -0,0 +1,5 @@ +import { createContext } from "../../utils/createContext.mjs"; +//#region src/components/reorder/context.ts +var [useReorderContext, reorderContextProvider] = createContext("ReorderContext"); +//#endregion +export { reorderContextProvider, useReorderContext }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/index.mjs new file mode 100644 index 0000000..ea573b4 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/index.mjs @@ -0,0 +1,11 @@ +import Group_default from "./Group.mjs"; +import Item_default from "./Item.mjs"; +//#region src/components/reorder/index.ts +var ReorderGroup = Group_default; +var ReorderItem = Item_default; +var Reorder = { + Group: Group_default, + Item: Item_default +}; +//#endregion +export { Reorder, ReorderGroup, ReorderItem }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/utils.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/utils.mjs new file mode 100644 index 0000000..1ed042b --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/reorder/utils.mjs @@ -0,0 +1,92 @@ +import { isMotionValue, mixNumber, motionValue } from "motion-dom"; +import { moveItem } from "motion-utils"; +//#region src/components/reorder/utils.ts +function checkReorder(order, value, offset, velocity, axis, direction = "ltr") { + const index = order.findIndex((item) => item.value === value); + if (index === -1) return order; + if (axis === "xy") { + const { layout } = order[index]; + const center = { + x: mixNumber(layout.x.min, layout.x.max, .5) + offset.x, + y: mixNumber(layout.y.min, layout.y.max, .5) + offset.y + }; + const lines = getLines(order); + const sourceLine = lines.find((line) => line.items.includes(order[index])); + const targetLine = lines.reduce((closest, line) => distanceToLine(center.y, line) < distanceToLine(center.y, closest) ? line : closest); + if (targetLine !== sourceLine) return moveToLine(order, index, center.x, targetLine, direction); + const currentDistance = distanceToBox(center, layout); + let target = -1; + let targetDistance = currentDistance; + order.forEach((item, targetIndex) => { + if (targetIndex === index) return; + const distance = distanceToBox(center, item.layout); + if (distance < targetDistance) { + target = targetIndex; + targetDistance = distance; + } + }); + return target === -1 ? order : moveItem(order, index, index + Math.sign(target - index)); + } + if (!velocity[axis]) return order; + const nextOffset = velocity[axis] > 0 ? 1 : -1; + const nextItem = order[index + nextOffset]; + if (!nextItem) return order; + const itemLayout = order[index].layout[axis]; + const nextLayout = nextItem.layout[axis]; + const nextItemCenter = mixNumber(nextLayout.min, nextLayout.max, .5); + if (nextOffset === 1 && itemLayout.max + offset[axis] > nextItemCenter || nextOffset === -1 && itemLayout.min + offset[axis] < nextItemCenter) return moveItem(order, index, index + nextOffset); + return order; +} +function getLines(order) { + const lines = []; + order.forEach((item) => { + const { min, max } = item.layout.y; + const line = lines[lines.length - 1]; + if (!line || min >= line.max || max <= line.min) lines.push({ + items: [item], + min, + max + }); + else { + line.items.push(item); + line.min = Math.min(line.min, min); + line.max = Math.max(line.max, max); + } + }); + return lines; +} +function distanceToLine(y, line) { + return y < line.min ? line.min - y : y > line.max ? y - line.max : 0; +} +function moveToLine(order, index, x, line, direction) { + const remaining = order.filter((_, itemIndex) => itemIndex !== index); + const before = line.items.find((item) => { + const center = mixNumber(item.layout.x.min, item.layout.x.max, .5); + return direction === "ltr" ? x < center : x > center; + }); + const targetIndex = before ? remaining.indexOf(before) : remaining.indexOf(line.items[line.items.length - 1]) + 1; + const nextOrder = [...remaining]; + nextOrder.splice(targetIndex, 0, order[index]); + return nextOrder.every((item, itemIndex) => item === order[itemIndex]) ? order : nextOrder; +} +function distanceToBox(point, box) { + const x = Math.max(box.x.min - point.x, 0, point.x - box.x.max); + const y = Math.max(box.y.min - point.y, 0, point.y - box.y.max); + return x * x + y * y; +} +var isSeparated = (a, b) => a.max <= b.min || b.max <= a.min; +function detectAxis(layouts) { + let x = false; + let y = false; + for (let i = 0; i < layouts.length; i++) for (let j = i + 1; j < layouts.length; j++) { + x ||= isSeparated(layouts[i].x, layouts[j].x); + y ||= isSeparated(layouts[i].y, layouts[j].y); + if (x && y) return "xy"; + } + return x ? "x" : "y"; +} +function useDefaultMotionValue(value, defaultValue = 0) { + return isMotionValue(value) ? value : motionValue(defaultValue); +} +//#endregion +export { checkReorder, detectAxis, useDefaultMotionValue }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/use-force-update.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/use-force-update.mjs new file mode 100644 index 0000000..62028c1 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/use-force-update.mjs @@ -0,0 +1,11 @@ +import { ref } from "vue"; +//#region src/components/use-force-update.ts +function useForceUpdate() { + const key = ref(0); + function forceUpdate() { + key.value++; + } + return [forceUpdate, key]; +} +//#endregion +export { useForceUpdate }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/components/use-layout-group.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/components/use-layout-group.mjs new file mode 100644 index 0000000..ae39e30 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/components/use-layout-group.mjs @@ -0,0 +1,41 @@ +import { injectLayoutGroup, provideLayoutGroup } from "./context.mjs"; +import { useForceUpdate } from "./use-force-update.mjs"; +import { nodeGroup } from "motion-dom"; +//#region src/components/use-layout-group.ts +/** +* Hook to create and manage a layout group +* Handles group inheritance, force updates, and context management +*/ +function useLayoutGroupProvider(props) { + const parentGroup = injectLayoutGroup(null); + const [forceRender, key] = useForceUpdate(); + const context = { + id: getGroupId(props, parentGroup), + group: getGroup(props, parentGroup), + forceRender, + key + }; + provideLayoutGroup(context); + return context; +} +function useLayoutGroup() { + const { forceRender } = injectLayoutGroup({ forceRender: () => {} }); + return { forceRender }; +} +/** +* Determines the group ID based on inheritance rules +*/ +function getGroupId(props, parentGroup) { + const shouldInherit = props.inherit === true || props.inherit === "id"; + const parentId = parentGroup?.id; + if (shouldInherit && parentId) return props.id ? `${parentId}-${props.id}` : parentId; + return props.id; +} +/** +* Creates or inherits a node group based on inheritance rules +*/ +function getGroup(props, parentGroup) { + return props.inherit === true || props.inherit === "group" ? parentGroup?.group || nodeGroup() : nodeGroup(); +} +//#endregion +export { useLayoutGroup, useLayoutGroupProvider }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/config.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/config.mjs new file mode 100644 index 0000000..e6be079 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/config.mjs @@ -0,0 +1,18 @@ +//#region src/config.ts +/** +* Global configuration for motion-v. +* +* @example +* ```ts +* import { motionGlobalConfig } from 'motion-v' +* motionGlobalConfig.motionAttribute = 'data-mv' +* ``` +*/ +var motionGlobalConfig = { +/** +* The data attribute used to identify motion elements in the DOM. +* Used for AnimatePresence exit detection and VE parent hierarchy resolution. +*/ +motionAttribute: "data-ap" }; +//#endregion +export { motionGlobalConfig }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/directive/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/directive/index.mjs new file mode 100644 index 0000000..bb0a345 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/directive/index.mjs @@ -0,0 +1,242 @@ +import { resolveMotionProps } from "../utils/resolve-motion-props.mjs"; +import { layoutGroupInjectionKey, motionInjectionKey } from "../components/context.mjs"; +import { defaultConfig, motionConfigInjectionKey } from "../components/motion-config/context.mjs"; +import { animatePresenceInjectionKey } from "../components/animate-presence/presence.mjs"; +import { createSVGStyles, createStyles } from "../state/style.mjs"; +import { isSVGElement, resolveInitialValues } from "../state/utils.mjs"; +import { MotionState, mountedStates } from "../state/motion-state.mjs"; +import { createVisualElement } from "../state/create-visual-element.mjs"; +import { domMax } from "../features/dom-max.mjs"; +import { warning } from "hey-listen"; +//#region src/directive/index.ts +/** +* Extract props from VNode and merge with binding value. +* VNode props take priority over binding value for the same key. +* +* Supports both syntaxes: +* - `<div v-motion :initial="{...}" :animate="{...}" />` (props on element) +* - `<div v-motion="{ initial: {...}, animate: {...} }" />` (binding value) +* - Mix of both (VNode props override binding value) +*/ +function extractMotionProps(vnode, bindingValue) { + const vnodeProps = vnode?.props; + if (!vnodeProps) return bindingValue || {}; + return { + ...bindingValue || {}, + ...vnodeProps + }; +} +/** +* Clean up DOM side-effects from Vue's VNode prop patching on native elements. +* +* Vue checks `key in el` before patching — if true, sets as property (`el[key] = value`), +* which creates an own property shadowing the prototype method (e.g. Element.prototype.animate). +* `delete el[key]` removes the own property, restoring the prototype chain. +*/ +function cleanVNodeProps(el, vnodeProps) { + if (!vnodeProps) return; + for (const key in vnodeProps) { + const value = vnodeProps[key]; + if (typeof value !== "function" && key in Element.prototype) delete el[key]; + if (value != null && typeof value === "object" && key !== "style") el.removeAttribute(key); + } +} +function resolveTag(source) { + if (typeof Element !== "undefined" && source instanceof Element) return source.tagName.toLowerCase(); + const vnode = source; + return typeof vnode.type === "string" ? vnode.type : "div"; +} +/** +* Compute CSS styles (and SVG attrs) from motion values. +* Shared by SSR and client-side initial style application. +*/ +function computeStyles(values, tag, styleProp) { + if (isSVGElement(tag)) { + const { attrs, style } = createSVGStyles({ ...values }, tag, styleProp); + return { + styles: createStyles(style), + attrs + }; + } + return { styles: createStyles({ + ...styleProp, + ...values + }) }; +} +function resolveSSRStyles(options) { + if (!options) return null; + const latestValues = resolveInitialValues(options); + if (Object.keys(latestValues).length === 0) return null; + return computeStyles(latestValues, options.as || "div", options.style).styles; +} +function applyInitialStyles(el, state) { + const { styles, attrs } = computeStyles(state.latestValues, resolveTag(el), state.options.style); + if (attrs) for (const key in attrs) el.setAttribute(key, String(attrs[key])); + if (styles) for (const key in styles) el.style[key] = styles[key]; +} +function findComponentParent(vnode, root) { + const stack = /* @__PURE__ */ new Set(); + const walk = (children) => { + for (const child of children) { + if (!child) continue; + if (child === vnode || child.el && vnode.el && child.el === vnode.el) return true; + stack.add(child); + let result; + if (child.suspense) result = walk([child.ssContent]); + else if (Array.isArray(child.children)) result = walk(child.children); + else if (child.component?.vnode) result = walk([child.component?.subTree]); + if (result) return result; + stack.delete(child); + } + return false; + }; + if (!walk([root.subTree])) { + warning(false, "Could not find original vnode, component will not inherit provides"); + return root; + } + const result = Array.from(stack).reverse(); + for (const child of result) if (child.component) return child.component; + return root; +} +/** +* Resolve the provides object from the vnode's component tree. +*/ +function resolveProvides(vnode, binding) { + return (vnode.ctx === binding.instance.$ ? findComponentParent(vnode, binding.instance.$)?.provides : vnode.ctx?.provides) ?? binding.instance.$.provides; +} +/** +* Extract context values from the provides chain and build +* a full options object matching useMotionState behavior. +*/ +function buildMotionOptions(motionProps, provides, tag) { + const parentState = provides[motionInjectionKey] ?? null; + const layoutGroup = provides[layoutGroupInjectionKey] ?? {}; + const presenceContext = provides[animatePresenceInjectionKey] ?? {}; + const config = (provides[motionConfigInjectionKey] ?? null)?.value ?? defaultConfig; + return { + parentState, + options: resolveMotionProps({ + ...motionProps, + as: tag + }, { + layoutGroup, + presenceContext, + config + }) + }; +} +/** +* Create a v-motion directive with the given feature bundle. +* If no bundle is provided, defaults to domMax (all features). +* +* @param featureBundle - Optional feature bundle (domAnimation or domMax) +* @param defaultOptions - Optional default motion props merged under user props +*/ +function createMotionDirective(featureBundle, defaultOptions) { + const renderer = featureBundle?.renderer ?? createVisualElement; + const features = featureBundle?.features ?? domMax.features; + function mergeMotionProps(vnode, bindingValue) { + const userProps = extractMotionProps(vnode, bindingValue); + return defaultOptions ? { + ...defaultOptions, + ...userProps + } : userProps; + } + /** + * Build fresh motion options from the current vnode + binding, + * resolving context through the component tree. + */ + function resolveStateOptions(el, binding, vnode) { + const provides = resolveProvides(vnode, binding); + return buildMotionOptions(mergeMotionProps(vnode, binding.value), provides, resolveTag(el)); + } + return { + created(el, binding, vnode) { + const { options, parentState } = resolveStateOptions(el, binding, vnode); + const state = new MotionState(options, parentState, { + renderer, + features + }); + mountedStates.set(el, state); + }, + mounted(el, _binding, vnode) { + const state = mountedStates.get(el); + if (!state) return; + cleanVNodeProps(el, vnode.props); + applyInitialStyles(el, state); + state.mount(el); + }, + beforeUpdate(el, binding, vnode) { + const state = mountedStates.get(el); + if (!state) return; + state.updateOptions(resolveStateOptions(el, binding, vnode).options); + state.getSnapshot(true); + }, + updated(el, _binding, vnode) { + const state = mountedStates.get(el); + if (!state) return; + cleanVNodeProps(el, vnode.props); + state.update(); + }, + beforeUnmount(el, binding, vnode) { + const state = mountedStates.get(el); + if (!state) return; + state.updateOptions(resolveStateOptions(el, binding, vnode).options); + state.getSnapshot(false); + }, + unmounted(el) { + const state = mountedStates.get(el); + if (!state) return; + if (!el.isConnected) state.unmount(); + }, + getSSRProps(binding, vnode) { + const motionProps = mergeMotionProps(vnode, binding.value); + const tag = vnode ? resolveTag(vnode) : "div"; + const ssrStyles = resolveSSRStyles({ + ...motionProps, + as: tag + }); + if (!ssrStyles) return {}; + return { style: ssrStyles }; + } + }; +} +/** +* Create a preset directive with default motion options baked in. +* Users can still override any option via binding value or VNode props. +* +* @example +* ```ts +* const vFadeIn = createPresetDirective({ +* initial: { opacity: 0 }, +* animate: { opacity: 1 }, +* }) +* app.directive('fade-in', vFadeIn) +* ``` +*/ +function createPresetDirective(preset, featureBundle) { + return createMotionDirective(featureBundle ?? domMax, preset); +} +var vMotion = createMotionDirective(domMax); +/** +* Vue plugin for global v-motion directive registration. +* +* @example +* ```ts +* import { MotionPlugin } from 'motion-v' +* app.use(MotionPlugin) +* +* // With custom presets +* app.use(MotionPlugin, { +* presets: { +* 'fade-in': { initial: { opacity: 0 }, animate: { opacity: 1 } }, +* }, +* }) +* ``` +*/ +var MotionPlugin = { install(app, options) { + app.directive("motion", vMotion); + if (options?.presets) for (const [name, preset] of Object.entries(options.presets)) app.directive(name, createPresetDirective(preset)); +} }; +//#endregion +export { MotionPlugin, createMotionDirective, createPresetDirective, vMotion }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/events/add-pointer-event.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/events/add-pointer-event.mjs new file mode 100644 index 0000000..d0ca4b8 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/events/add-pointer-event.mjs @@ -0,0 +1,8 @@ +import { addPointerInfo } from "./event-info.mjs"; +import { addDomEvent } from "motion-dom"; +//#region src/events/add-pointer-event.ts +function addPointerEvent(target, eventName, handler, options) { + return addDomEvent(target, eventName, addPointerInfo(handler), options); +} +//#endregion +export { addPointerEvent }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/events/event-info.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/events/event-info.mjs new file mode 100644 index 0000000..1e1d070 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/events/event-info.mjs @@ -0,0 +1,13 @@ +import { isPrimaryPointer } from "motion-dom"; +//#region src/events/event-info.ts +function extractEventInfo(event, pointType = "page") { + return { point: { + x: event[`${pointType}X`], + y: event[`${pointType}Y`] + } }; +} +function addPointerInfo(handler) { + return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event)); +} +//#endregion +export { addPointerInfo, extractEventInfo }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/animation/animation.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/animation/animation.mjs new file mode 100644 index 0000000..9592e2f --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/animation/animation.mjs @@ -0,0 +1,38 @@ +import { Feature } from "../feature.mjs"; +import { isHidden } from "../../utils/is-hidden.mjs"; +import { createAnimationState, isAnimationControls } from "motion-dom"; +//#region src/features/animation/animation.ts +var AnimationFeature = class extends Feature { + static { + this.key = "animation"; + } + constructor(state) { + super(state); + const ve = state.visualElement; + ve.animationState ||= createAnimationState(ve); + } + updateAnimationControlsSubscription() { + const { animate } = this.state.options; + if (isAnimationControls(animate)) this.unmountControls = animate.subscribe(this.state.visualElement); + } + /** + * Subscribe any provided AnimationControls to the component's VisualElement + */ + mount() { + if (!!isHidden(this.state.element)) this.state.setActive("exit", true); + else this.state.visualElement.animationState?.animateChanges(); + this.updateAnimationControlsSubscription(); + } + update() { + this.state.visualElement.animationState?.animateChanges(); + const { animate } = this.state.visualElement.getProps(); + const { animate: prevAnimate } = this.state.visualElement.prevProps || {}; + if (animate !== prevAnimate) this.updateAnimationControlsSubscription(); + } + unmount() { + this.state.visualElement.animationState.reset(); + this.unmountControls?.(); + } +}; +//#endregion +export { AnimationFeature }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/dom-animation.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/dom-animation.mjs new file mode 100644 index 0000000..4bc004a --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/dom-animation.mjs @@ -0,0 +1,21 @@ +import { AnimationFeature } from "./animation/animation.mjs"; +import { ExitFeature } from "./exit/exit.mjs"; +import { createVisualElement } from "../state/create-visual-element.mjs"; +import { PressGesture } from "./gestures/press/index.mjs"; +import { HoverGesture } from "./gestures/hover/index.mjs"; +import { InViewGesture } from "./gestures/in-view/index.mjs"; +import { FocusGesture } from "./gestures/focus/index.mjs"; +//#region src/features/dom-animation.ts +var domAnimation = { + renderer: createVisualElement, + features: [ + AnimationFeature, + ExitFeature, + PressGesture, + HoverGesture, + InViewGesture, + FocusGesture + ] +}; +//#endregion +export { domAnimation }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/dom-max.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/dom-max.mjs new file mode 100644 index 0000000..6673c66 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/dom-max.mjs @@ -0,0 +1,29 @@ +import { AnimationFeature } from "./animation/animation.mjs"; +import { ExitFeature } from "./exit/exit.mjs"; +import { createVisualElement } from "../state/create-visual-element.mjs"; +import { PressGesture } from "./gestures/press/index.mjs"; +import { HoverGesture } from "./gestures/hover/index.mjs"; +import { InViewGesture } from "./gestures/in-view/index.mjs"; +import { FocusGesture } from "./gestures/focus/index.mjs"; +import { ProjectionFeature } from "./layout/projection.mjs"; +import { PanGesture } from "./gestures/pan/index.mjs"; +import { DragGesture } from "./gestures/drag/index.mjs"; +import { LayoutFeature } from "./layout/layout.mjs"; +//#region src/features/dom-max.ts +var domMax = { + renderer: createVisualElement, + features: [ + AnimationFeature, + ExitFeature, + PressGesture, + HoverGesture, + InViewGesture, + FocusGesture, + ProjectionFeature, + PanGesture, + DragGesture, + LayoutFeature + ] +}; +//#endregion +export { domMax }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/exit/exit.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/exit/exit.mjs new file mode 100644 index 0000000..2db2194 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/exit/exit.mjs @@ -0,0 +1,82 @@ +import { Feature } from "../feature.mjs"; +import { frame } from "motion-dom"; +//#region src/features/exit/exit.ts +/** +* Owns the AnimatePresence exit protocol for a motion state: run the exit +* animation, defer completion across the layoutId projection handoff, and +* resolve the session's promise exactly once. The `isExiting` flag itself +* lives on MotionState; this feature owns the sequence around it. +* +* The generation counter is bumped by exit() and reenter() — a completion +* carrying a stale generation is a silent no-op, which is how mid-exit +* reentry and re-entry-then-exit-again sequences stay consistent. +*/ +var ExitFeature = class extends Feature { + constructor(..._args) { + super(..._args); + this.exitGeneration = 0; + } + static { + this.key = "exit"; + } + /** + * Run the full exit sequence for AnimatePresence and resolve when this + * state's exit completes — including the layoutId projection handoff, + * which is signalled back via completeExitFromProjection(). + */ + exit() { + const generation = ++this.exitGeneration; + const state = this.state; + state.isExiting = true; + const completion = new Promise((resolve) => { + this.pendingExit = { resolve }; + }); + const exitAnimation = state.visualElement?.animationState?.setActive("exit", true); + if (exitAnimation) exitAnimation.then(() => { + if (generation !== this.exitGeneration) return; + state.isExiting = false; + state.options?.layoutId ? frame.postRender(() => this.tryCompleteExit(generation)) : this.tryCompleteExit(generation); + }); + else { + state.isExiting = false; + this.tryCompleteExit(generation); + } + state.getSnapshot(false); + return completion; + } + /** Re-enter while an exit is in flight; the stale exit resolves silently. */ + reenter() { + this.exitGeneration++; + this.settleExit(); + this.state.isExiting = false; + this.state.setActive("exit", false); + this.state.getSnapshot(true); + } + /** ProjectionFeature notifies here when a layoutId exit handoff completes. */ + completeExitFromProjection() { + this.tryCompleteExit(this.exitGeneration); + } + tryCompleteExit(generation) { + if (generation !== this.exitGeneration || this.state.isExiting) return; + if (this.state.options?.layoutId && this.state.visualElement.projection?.currentAnimation?.state === "running") return; + this.settleExit(); + } + settleExit() { + this.pendingExit?.resolve(); + this.pendingExit = void 0; + } + /** + * Register with the nearest AnimatePresence for exit discovery — only + * states carrying the exit feature are discoverable, and mount/unmount + * pairing keeps the registry exact (KeepAlive remounts re-register). + */ + mount() { + this.state.options.presenceContext?.register?.(this.state); + } + unmount() { + this.state.options.presenceContext?.unregister?.(this.state); + this.settleExit(); + } +}; +//#endregion +export { ExitFeature }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/feature.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/feature.mjs new file mode 100644 index 0000000..80b9235 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/feature.mjs @@ -0,0 +1,14 @@ +//#region src/features/feature.ts +var Feature = class { + constructor(state) { + this.isMount = false; + this.state = state; + } + mount() {} + beforeUnmount() {} + unmount() {} + update() {} + getSnapshot(isPresent) {} +}; +//#endregion +export { Feature }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/VisualElementDragControls.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/VisualElementDragControls.mjs new file mode 100644 index 0000000..6f40bc3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/VisualElementDragControls.mjs @@ -0,0 +1,488 @@ +import { getContextWindow } from "../../../utils/get-context-window.mjs"; +import { addPointerEvent } from "../../../events/add-pointer-event.mjs"; +import { PanSession } from "../pan/PanSession.mjs"; +import { applyConstraints, calcOrigin, calcRelativeConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveDragElastic } from "./utils/constraints.mjs"; +import { addDomEvent, addValueToWillChange, animateMotionValue, calcLength, convertBoundingBoxToBox, convertBoxToBoundingBox, createBox, eachAxis, frame, isElementTextInput, isHTMLElement, measurePageBox, mixNumber, percent, resize, setDragLock } from "motion-dom"; +import { invariant } from "hey-listen"; +//#region src/features/gestures/drag/VisualElementDragControls.ts +var elementDragControls = /* @__PURE__ */ new WeakMap(); +var VisualElementDragControls = class { + constructor(state) { + this.openGlobalLock = null; + this.isDragging = false; + this.currentDirection = null; + this.originPoint = { + x: 0, + y: 0 + }; + this.constraints = false; + this.hasMutatedConstraints = false; + this.elastic = createBox(); + this.latestPointerEvent = null; + this.latestPanInfo = null; + this.state = state; + } + get visualElement() { + return this.state.visualElement; + } + start(originEvent, { snapToCursor = false, distanceThreshold } = {}) { + /** + * Don't start dragging if this component is exiting + */ + if (this.state.isExiting) return; + const onSessionStart = (event) => { + if (snapToCursor) this.snapToCursor(event); + this.stopAnimation(); + }; + const onStart = (event, info) => { + this.stopAnimation(); + const { drag, dragPropagation, onDragStart } = this.getProps(); + if (drag && !dragPropagation) { + if (this.openGlobalLock) this.openGlobalLock(); + this.openGlobalLock = setDragLock(drag); + if (!this.openGlobalLock) return; + } + this.latestPointerEvent = event; + this.latestPanInfo = info; + this.isDragging = true; + this.currentDirection = null; + this.resolveConstraints(); + if (this.visualElement.projection) { + this.visualElement.projection.isAnimationBlocked = true; + this.visualElement.projection.target = void 0; + } + /** + * Record gesture origin + */ + eachAxis((axis) => { + let current = this.getAxisMotionValue(axis).get() || 0; + /** + * If the MotionValue is a percentage value convert to px + */ + if (percent.test(current)) { + const { projection } = this.visualElement; + if (projection && projection.layout) { + const measuredAxis = projection.layout.layoutBox[axis]; + if (measuredAxis) current = calcLength(measuredAxis) * (parseFloat(current) / 100); + } + } + this.originPoint[axis] = current; + }); + if (onDragStart) frame.update(() => onDragStart(event, info), false, true); + addValueToWillChange(this.visualElement, "transform"); + this.state.setActive("whileDrag", true); + }; + const onMove = (event, info) => { + this.latestPointerEvent = event; + this.latestPanInfo = info; + const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps(); + if (!dragPropagation && !this.openGlobalLock) return; + const { offset } = info; + if (dragDirectionLock && this.currentDirection === null) { + this.currentDirection = getCurrentDirection(offset); + if (this.currentDirection !== null) onDirectionLock && onDirectionLock(this.currentDirection); + return; + } + this.updateAxis("x", info.point, offset); + this.updateAxis("y", info.point, offset); + /** + * Ideally we would leave the renderer to fire naturally at the end of + * this frame but if the element is about to change layout as the result + * of a re-render we want to ensure the browser can read the latest + * bounding box to ensure the pointer and element don't fall out of sync. + */ + this.visualElement.render(); + /** + * This must fire after the render call as it might trigger a state + * change which itself might trigger a layout update. + */ + if (onDrag) frame.update(() => onDrag(event, info), false, true); + }; + const onSessionEnd = (event, info) => { + this.latestPointerEvent = event; + this.latestPanInfo = info; + this.stop(event, info); + this.latestPointerEvent = null; + this.latestPanInfo = null; + }; + const resumeAnimation = () => { + const { dragSnapToOrigin: snap } = this.getProps(); + if (snap || this.constraints) this.startAnimation({ + x: 0, + y: 0 + }); + }; + const { dragSnapToOrigin } = this.getProps(); + this.panSession = new PanSession(originEvent, { + onSessionStart, + onStart, + onMove, + onSessionEnd, + resumeAnimation + }, { + transformPagePoint: this.visualElement.getTransformPagePoint(), + dragSnapToOrigin, + distanceThreshold, + contextWindow: getContextWindow(this.visualElement), + element: this.state.element + }); + } + /** + * @internal + */ + stop(event, panInfo) { + const finalEvent = event || this.latestPointerEvent; + const finalPanInfo = panInfo || this.latestPanInfo; + const isDragging = this.isDragging; + this.cancel(); + if (!isDragging || !finalPanInfo || !finalEvent) return; + const { velocity } = finalPanInfo; + this.startAnimation(velocity); + const { onDragEnd } = this.getProps(); + if (onDragEnd) frame.postRender(() => onDragEnd(finalEvent, finalPanInfo)); + } + /** + * @internal + */ + cancel() { + this.isDragging = false; + const { projection } = this.visualElement; + if (projection) projection.isAnimationBlocked = false; + this.endPanSession(); + const { dragPropagation } = this.getProps(); + if (!dragPropagation && this.openGlobalLock) { + this.openGlobalLock(); + this.openGlobalLock = null; + } + this.state.setActive("whileDrag", false); + } + /** + * Clean up the pan session without modifying other drag state. + * Used during unmount to remove event listeners without affecting + * projection animations or drag locks. + * @internal + */ + endPanSession() { + this.panSession && this.panSession.end(); + this.panSession = void 0; + } + updateAxis(axis, _point, offset) { + const { drag } = this.getProps(); + if (!offset || !shouldDrag(axis, drag, this.currentDirection)) return; + const axisValue = this.getAxisMotionValue(axis); + let next = this.originPoint[axis] + offset[axis]; + if (this.constraints && this.constraints[axis]) next = applyConstraints(next, this.constraints[axis], this.elastic[axis]); + axisValue.set(next); + } + resolveConstraints() { + const { dragConstraints, dragElastic } = this.getProps(); + const layout = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(false) : this.visualElement.projection?.layout; + const prevConstraints = this.constraints; + if (dragConstraints && isHTMLElement(dragConstraints)) { + if (!this.constraints) this.constraints = this.resolveRefConstraints(); + } else if (dragConstraints && layout) this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints); + else this.constraints = false; + this.elastic = resolveDragElastic(dragElastic); + /** + * If we're outputting to external MotionValues, we want to rebase the measured constraints + * from viewport-relative to component-relative. This only applies to relative (non-element) + * constraints, as element-based constraints from calcViewportConstraints are already in the + * correct coordinate space for the motion value transform offset. + */ + if (prevConstraints !== this.constraints && !isHTMLElement(dragConstraints) && layout && this.constraints && !this.hasMutatedConstraints) eachAxis((axis) => { + if (this.constraints !== false && this.getAxisMotionValue(axis)) this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]); + }); + } + resolveRefConstraints() { + const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps(); + if (!constraints || !isHTMLElement(constraints)) return false; + const constraintsElement = constraints; + invariant(constraintsElement !== null, "If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop."); + const { projection } = this.visualElement; + if (!projection || !projection.layout) return false; + /** + * Refresh the root scroll offset so the constraint's viewport box + * translates to correct page coordinates. The scroll captured at + * drag mount can be stale if the document was scrolled afterwards — + * e.g. via the browser restoring scroll on refresh, or an ancestor + * layout effect running after this element's mount (#2829). + * + * Clear the cached scroll first so `updateScroll` bypasses its + * per-animationId cache and re-reads the live value. + */ + if (projection.root) { + projection.root.scroll = void 0; + projection.root.updateScroll(); + } + const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint()); + let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox); + /** + * If there's an onMeasureDragConstraints listener we call it and + * if different constraints are returned, set constraints to that + */ + if (onMeasureDragConstraints) { + const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints)); + this.hasMutatedConstraints = !!userConstraints; + if (userConstraints) measuredConstraints = convertBoundingBoxToBox(userConstraints); + } + return measuredConstraints; + } + startAnimation(velocity) { + const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd } = this.getProps(); + const constraints = this.constraints || {}; + const momentumAnimations = eachAxis((axis) => { + if (!shouldDrag(axis, drag, this.currentDirection)) return; + let transition = constraints && constraints[axis] || {}; + if (dragSnapToOrigin === true || dragSnapToOrigin === axis) transition = { + min: 0, + max: 0 + }; + /** + * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame + * of spring animations so we should look into adding a disable spring option to `inertia`. + * We could do something here where we affect the `bounceStiffness` and `bounceDamping` + * using the value of `dragElastic`. + */ + const bounceStiffness = dragElastic ? 200 : 1e6; + const bounceDamping = dragElastic ? 40 : 1e7; + const inertia = { + type: "inertia", + velocity: dragMomentum ? velocity[axis] : 0, + bounceStiffness, + bounceDamping, + timeConstant: 750, + restDelta: 1, + restSpeed: 10, + ...dragTransition, + ...transition + }; + return this.startAxisValueAnimation(axis, inertia); + }); + return Promise.all(momentumAnimations).then(onDragTransitionEnd); + } + startAxisValueAnimation(axis, transition) { + const axisValue = this.getAxisMotionValue(axis); + addValueToWillChange(this.visualElement, axis); + return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false)); + } + stopAnimation() { + if (!this.visualElement.projection?.isPresent) return; + eachAxis((axis) => this.getAxisMotionValue(axis).stop()); + } + /** + * Drag works differently depending on which props are provided. + * + * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values. + * - Otherwise, we apply the delta to the x/y motion values. + */ + getAxisMotionValue(axis) { + const dragKey = `_drag${axis.toUpperCase()}`; + return this.visualElement.getProps()[dragKey] || this.visualElement.getValue(axis, this.visualElement.latestValues[axis] ?? 0); + } + /** + * Measure the live box - projection.layout may or may not include the + * drag transform, depending on when it was measured. + */ + snapToCursor({ clientX, clientY }) { + const { drag } = this.getProps(); + const point = { + x: clientX, + y: clientY + }; + const cursor = this.visualElement.getTransformPagePoint()?.(point) || point; + const box = this.visualElement.measureViewportBox(); + eachAxis((axis) => { + if (!shouldDrag(axis, drag, this.currentDirection)) return; + const axisValue = this.getAxisMotionValue(axis); + const { min, max } = box[axis]; + axisValue.set((axisValue.get() || 0) + cursor[axis] - mixNumber(min, max, .5)); + }); + } + /** + * When the viewport resizes we want to check if the measured constraints + * have changed and, if so, reposition the element within those new constraints + * relative to where it was before the resize. + */ + scalePositionWithinConstraints() { + if (!this.visualElement.current) return; + const { drag, dragConstraints } = this.getProps(); + const { projection } = this.visualElement; + if (!isHTMLElement(dragConstraints) || !projection || !this.constraints) return; + /** + * Stop current animations as there can be visual glitching if we try to do + * this mid-animation + */ + this.stopAnimation(); + /** + * Record the relative position of the dragged element relative to the + * constraints box and save as a progress value. + */ + const boxProgress = { + x: 0, + y: 0 + }; + eachAxis((axis) => { + const axisValue = this.getAxisMotionValue(axis); + if (axisValue && this.constraints !== false) { + const latest = axisValue.get(); + boxProgress[axis] = calcOrigin({ + min: latest, + max: latest + }, this.constraints[axis]); + } + }); + /** + * Update the layout of this element and resolve the latest drag constraints + */ + const { transformTemplate } = this.visualElement.getProps(); + this.state.element.style.transform = transformTemplate ? transformTemplate({}, "") : "none"; + projection.root && projection.root.updateScroll(); + projection.updateLayout(); + /** + * Reset constraints so resolveConstraints() will recalculate them + * with the freshly measured layout rather than returning the cached value. + */ + this.constraints = false; + this.resolveConstraints(); + /** + * For each axis, calculate the current progress of the layout axis + * within the new constraints. + */ + eachAxis((axis) => { + const axisValue = this.getAxisMotionValue(axis); + /** + * An element resting at its origin has no offset to preserve, + * and re-projecting 0 into the new constraints would move it. + */ + if (!shouldDrag(axis, drag, null) || !axisValue.get()) return; + /** + * Calculate a new transform based on the previous box progress + */ + const { min, max } = this.constraints[axis]; + axisValue.set(mixNumber(min, max, boxProgress[axis])); + }); + /** + * Flush the updated transform to the DOM synchronously to prevent + * a visual flash at the element's CSS layout position (0,0) when + * the transform was stripped for measurement. + */ + this.visualElement.render(); + } + addListeners() { + if (!this.state.element) return; + elementDragControls.set(this.visualElement, this); + const element = this.state.element; + /** + * Attach a pointerdown event listener on this DOM element to initiate drag tracking. + */ + const stopPointerListener = addPointerEvent(element, "pointerdown", (event) => { + const { drag, dragListener = true } = this.getProps(); + const target = event.target; + /** + * Only block drag if clicking on a text input child element + * (input, textarea, select, contenteditable) where users might + * want to select text or interact with the control. + * + * Buttons and links don't block drag since they don't have + * click-and-move actions of their own. + */ + const isClickingTextInputChild = target !== element && isElementTextInput(target); + if (drag && dragListener && !isClickingTextInputChild) this.start(event); + }); + /** + * If using element-based constraints, observe both the draggable element + * and the constraint container for size changes via ResizeObserver. + */ + let stopResizeObservers; + const measureDragConstraints = () => { + const { dragConstraints } = this.getProps(); + if (isHTMLElement(dragConstraints)) { + this.constraints = this.resolveRefConstraints(); + if (!stopResizeObservers) stopResizeObservers = startResizeObservers(element, dragConstraints, () => this.scalePositionWithinConstraints()); + } + }; + const { projection } = this.visualElement; + const stopMeasureLayoutListener = projection.addEventListener("measure", measureDragConstraints); + if (projection && !projection.layout) { + projection.root && projection.root.updateScroll(); + projection.updateLayout(); + } + frame.read(measureDragConstraints); + /** + * Attach a window resize listener to scale the draggable target within its defined + * constraints as the window resizes. + */ + const stopResizeListener = addDomEvent(window, "resize", () => this.scalePositionWithinConstraints()); + /** + * If the element's layout changes, calculate the delta and apply that to + * the drag gesture's origin point. + */ + const stopLayoutUpdateListener = projection.addEventListener("didUpdate", (({ delta, hasLayoutChanged }) => { + if (this.isDragging && hasLayoutChanged) { + eachAxis((axis) => { + const motionValue = this.getAxisMotionValue(axis); + if (!motionValue) return; + this.originPoint[axis] += delta[axis].translate; + motionValue.set(motionValue.get() + delta[axis].translate); + }); + this.visualElement.render(); + } + })); + return () => { + stopResizeListener(); + stopPointerListener(); + stopMeasureLayoutListener(); + stopLayoutUpdateListener && stopLayoutUpdateListener(); + stopResizeObservers && stopResizeObservers(); + }; + } + getProps() { + const props = this.visualElement.getProps(); + const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true } = props; + return { + ...props, + drag, + dragDirectionLock, + dragPropagation, + dragConstraints, + dragElastic, + dragMomentum + }; + } +}; +function skipFirstCall(callback) { + let isFirst = true; + return () => { + if (isFirst) { + isFirst = false; + return; + } + callback(); + }; +} +function startResizeObservers(element, constraintsElement, onResize) { + const stopElement = resize(element, skipFirstCall(onResize)); + const stopContainer = resize(constraintsElement, skipFirstCall(onResize)); + return () => { + stopElement(); + stopContainer(); + }; +} +function shouldDrag(direction, drag, currentDirection) { + return (drag === true || drag === direction) && (currentDirection === null || currentDirection === direction); +} +/** +* Based on an x/y offset determine the current drag direction. If both axis' offsets are lower +* than the provided threshold, return `null`. +* +* @param offset - The x/y offset from origin. +* @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction. +*/ +function getCurrentDirection(offset, lockThreshold = 10) { + let direction = null; + if (Math.abs(offset.y) > lockThreshold) direction = "y"; + else if (Math.abs(offset.x) > lockThreshold) direction = "x"; + return direction; +} +//#endregion +export { VisualElementDragControls, elementDragControls }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/index.mjs new file mode 100644 index 0000000..fa56e05 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/index.mjs @@ -0,0 +1,36 @@ +import { Feature } from "../../feature.mjs"; +import { VisualElementDragControls } from "./VisualElementDragControls.mjs"; +import { noop } from "motion-utils"; +//#region src/features/gestures/drag/index.ts +var DragGesture = class extends Feature { + static { + this.key = "drag"; + } + constructor(state) { + super(state); + this.removeGroupControls = noop; + this.removeListeners = noop; + this.controls = new VisualElementDragControls(state); + } + mount() { + const { dragControls } = this.state.options; + if (dragControls) this.removeGroupControls = dragControls.subscribe(this.controls); + this.prevDragControls = dragControls; + this.removeListeners = this.controls.addListeners() || noop; + } + update() { + const { dragControls } = this.state.options; + if (dragControls !== this.prevDragControls) { + this.removeGroupControls(); + this.removeGroupControls = dragControls ? dragControls.subscribe(this.controls) : noop; + this.prevDragControls = dragControls; + } + } + unmount() { + this.removeGroupControls(); + this.removeListeners(); + if (!this.controls.isDragging) this.controls.endPanSession(); + } +}; +//#endregion +export { DragGesture }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/use-drag-controls.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/use-drag-controls.mjs new file mode 100644 index 0000000..8ad41ac --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/use-drag-controls.mjs @@ -0,0 +1,113 @@ +//#region src/features/gestures/drag/use-drag-controls.ts +/** +* Can manually trigger a drag gesture on one or more `drag`-enabled `motion` components. +* +* ```jsx +* const dragControls = useDragControls() +* +* function startDrag(event) { +* dragControls.start(event, { snapToCursor: true }) +* } +* +* return ( +* <> +* <div onPointerDown={startDrag} /> +* <motion.div drag="x" dragControls={dragControls} /> +* </> +* ) +* ``` +* +* @public +*/ +var DragControls = class { + constructor() { + this.componentControls = /* @__PURE__ */ new Set(); + } + /** + * Subscribe a component's internal `VisualElementDragControls` to the user-facing API. + * + * @internal + */ + subscribe(controls) { + this.componentControls.add(controls); + return () => this.componentControls.delete(controls); + } + /** + * Start a drag gesture on every `motion` component that has this set of drag controls + * passed into it via the `dragControls` prop. + * + * ```jsx + * dragControls.start(e, { + * snapToCursor: true + * }) + * ``` + * + * @param event - PointerEvent + * @param options - Options + * + * @public + */ + start(event, options) { + this.componentControls.forEach((controls) => { + controls.start(event, options); + }); + } + /** + * Cancels a drag gesture. + * + * ```jsx + * dragControls.cancel() + * ``` + * + * @public + */ + cancel() { + this.componentControls.forEach((controls) => { + controls.cancel(); + }); + } + /** + * Stops a drag gesture. + * + * ```jsx + * dragControls.stop() + * ``` + * + * @public + */ + stop() { + this.componentControls.forEach((controls) => { + controls.stop(); + }); + } +}; +var createDragControls = () => new DragControls(); +/** +* Usually, dragging is initiated by pressing down on a `motion` component with a `drag` prop +* and moving it. For some use-cases, for instance clicking at an arbitrary point on a video scrubber, we +* might want to initiate that dragging from a different component than the draggable one. +* +* By creating a `dragControls` using the `useDragControls` hook, we can pass this into +* the draggable component's `dragControls` prop. It exposes a `start` method +* that can start dragging from pointer events on other components. +* +* ```jsx +* const dragControls = useDragControls() +* +* function startDrag(event) { +* dragControls.start(event, { snapToCursor: true }) +* } +* +* return ( +* <> +* <div onPointerDown={startDrag} /> +* <motion.div drag="x" dragControls={dragControls} /> +* </> +* ) +* ``` +* +* @public +*/ +var useDragControls = createDragControls; +//#endregion +export { DragControls, useDragControls }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/utils/constraints.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/utils/constraints.mjs new file mode 100644 index 0000000..4b72451 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/drag/utils/constraints.mjs @@ -0,0 +1,99 @@ +import { calcLength, mixNumber } from "motion-dom"; +import { clamp, progress } from "motion-utils"; +//#region src/features/gestures/drag/utils/constraints.ts +/** +* Apply constraints to a point. These constraints are both physical along an +* axis, and an elastic factor that determines how much to constrain the point +* by if it does lie outside the defined parameters. +*/ +function applyConstraints(point, { min, max }, elastic) { + if (min !== void 0 && point < min) point = elastic ? mixNumber(min, point, elastic.min) : Math.max(point, min); + else if (max !== void 0 && point > max) point = elastic ? mixNumber(max, point, elastic.max) : Math.min(point, max); + return point; +} +var defaultElastic = .35; +/** +* Calculate constraints in terms of the viewport when +* defined relatively to the measured bounding box. +*/ +function calcRelativeConstraints(layoutBox, { top, left, bottom, right }) { + return { + x: calcRelativeAxisConstraints(layoutBox.x, left, right), + y: calcRelativeAxisConstraints(layoutBox.y, top, bottom) + }; +} +/** +* Calculate constraints in terms of the viewport when defined relatively to the +* measured axis. This is measured from the nearest edge, so a max constraint of 200 +* on an axis with a max value of 300 would return a constraint of 500 - axis length +*/ +function calcRelativeAxisConstraints(axis, min, max) { + return { + min: min !== void 0 ? axis.min + min : void 0, + max: max !== void 0 ? axis.max + max - (axis.max - axis.min) : void 0 + }; +} +/** +* Accepts a dragElastic prop and returns resolved elastic values for each axis. +*/ +function resolveDragElastic(dragElastic = defaultElastic) { + if (dragElastic === false) dragElastic = 0; + else if (dragElastic === true) dragElastic = defaultElastic; + return { + x: resolveAxisElastic(dragElastic, "left", "right"), + y: resolveAxisElastic(dragElastic, "top", "bottom") + }; +} +function resolveAxisElastic(dragElastic, minLabel, maxLabel) { + return { + min: resolvePointElastic(dragElastic, minLabel), + max: resolvePointElastic(dragElastic, maxLabel) + }; +} +function resolvePointElastic(dragElastic, label) { + return typeof dragElastic === "number" ? dragElastic : dragElastic[label] || 0; +} +/** +* Rebase the calculated viewport constraints relative to the layout.min point. +*/ +function rebaseAxisConstraints(layout, constraints) { + const relativeConstraints = {}; + if (constraints.min !== void 0) relativeConstraints.min = constraints.min - layout.min; + if (constraints.max !== void 0) relativeConstraints.max = constraints.max - layout.min; + return relativeConstraints; +} +/** +* Calculate viewport constraints when defined as another viewport-relative box +*/ +function calcViewportConstraints(layoutBox, constraintsBox) { + return { + x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x), + y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y) + }; +} +/** +* Calculate viewport constraints when defined as another viewport-relative axis +*/ +function calcViewportAxisConstraints(layoutAxis, constraintsAxis) { + let min = constraintsAxis.min - layoutAxis.min; + let max = constraintsAxis.max - layoutAxis.max; + if (constraintsAxis.max - constraintsAxis.min < layoutAxis.max - layoutAxis.min) [min, max] = [max, min]; + return { + min, + max + }; +} +/** +* Calculate a transform origin relative to the source axis, between 0-1, that results +* in an asthetically pleasing scale/transform needed to project from source to target. +*/ +function calcOrigin(source, target) { + let origin = .5; + const sourceLength = calcLength(source); + const targetLength = calcLength(target); + if (targetLength > sourceLength) origin = progress(target.min, target.max - sourceLength, source.min); + else if (sourceLength > targetLength) origin = progress(source.min, source.max - targetLength, target.min); + return clamp(0, 1, origin); +} +//#endregion +export { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/focus/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/focus/index.mjs new file mode 100644 index 0000000..91b9660 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/focus/index.mjs @@ -0,0 +1,45 @@ +import { Feature } from "../../feature.mjs"; +import { addDomEvent } from "motion-dom"; +import { pipe } from "motion-utils"; +//#region src/features/gestures/focus/index.ts +var FocusGesture = class extends Feature { + static { + this.key = "focus"; + } + constructor(state) { + super(state); + this.isFocused = false; + } + onFocus() { + let isFocusVisible = false; + /** + * If this element doesn't match focus-visible then don't + * apply whileFocus. But, if matches throws that focus-visible + * is not a valid selector then in that browser outline styles will be applied + * to the element by default and we want to match that behaviour with whileFocus. + */ + try { + isFocusVisible = this.state.element.matches(":focus-visible"); + } catch { + isFocusVisible = true; + } + if (!isFocusVisible) return; + this.state.setActive("whileFocus", true); + this.isFocused = true; + } + onBlur() { + if (!this.isFocused) return; + this.state.setActive("whileFocus", false); + this.isFocused = false; + } + mount() { + const element = this.state.element; + this.removeFocus = pipe(addDomEvent(element, "focus", () => this.onFocus()), addDomEvent(element, "blur", () => this.onBlur())); + } + unmount() { + this.removeFocus?.(); + this.removeFocus = void 0; + } +}; +//#endregion +export { FocusGesture }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/hover/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/hover/index.mjs new file mode 100644 index 0000000..f43d4f2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/hover/index.mjs @@ -0,0 +1,44 @@ +import { Feature } from "../../feature.mjs"; +import { extractEventInfo } from "../../../events/event-info.mjs"; +import { frame, hover } from "motion-dom"; +//#region src/features/gestures/hover/index.ts +var HoverGesture = class extends Feature { + static { + this.key = "hover"; + } + constructor(state) { + super(state); + } + isActive() { + const { whileHover, onHoverStart, onHoverEnd } = this.state.options; + return Boolean(whileHover || onHoverStart || onHoverEnd); + } + register() { + const element = this.state.element; + if (!element || !this.isActive()) return; + this.removeHover?.(); + this.removeHover = hover(element, (_el, startEvent) => { + const props = this.state.options; + this.state.setActive("whileHover", true); + if (props.onHoverStart) frame.postRender(() => props.onHoverStart(startEvent, extractEventInfo(startEvent))); + return (endEvent) => { + this.state.setActive("whileHover", false); + const callback = this.state.options.onHoverEnd; + if (callback) frame.postRender(() => callback(endEvent, extractEventInfo(endEvent))); + }; + }); + } + mount() { + this.register(); + } + update() { + const prev = this.state.visualElement.prevProps; + if (!Boolean(prev?.whileHover || prev?.onHoverStart || prev?.onHoverEnd) && this.isActive()) this.register(); + } + unmount() { + this.removeHover?.(); + this.removeHover = void 0; + } +}; +//#endregion +export { HoverGesture }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/in-view/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/in-view/index.mjs new file mode 100644 index 0000000..4e113f2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/in-view/index.mjs @@ -0,0 +1,51 @@ +import { Feature } from "../../feature.mjs"; +import { inView } from "framer-motion/dom"; +import { frame } from "motion-dom"; +//#region src/features/gestures/in-view/index.ts +var InViewGesture = class extends Feature { + static { + this.key = "inView"; + } + constructor(state) { + super(state); + } + isActive() { + const { whileInView, onViewportEnter, onViewportLeave } = this.state.options; + return Boolean(whileInView || onViewportEnter || onViewportLeave); + } + startObserver() { + const element = this.state.element; + if (!element || !this.isActive()) return; + this.removeObserver?.(); + const { once, ...viewOptions } = this.state.options.inViewOptions || {}; + this.removeObserver = inView(element, (_, entry) => { + const props = this.state.options; + this.state.setActive("whileInView", true); + if (props.onViewportEnter) frame.postRender(() => props.onViewportEnter(entry)); + if (!once) return () => { + this.state.setActive("whileInView", false); + const leaveCallback = this.state.options.onViewportLeave; + if (leaveCallback) frame.postRender(() => leaveCallback(entry)); + }; + }, viewOptions); + } + mount() { + this.startObserver(); + } + update() { + const { props, prevProps } = this.state.visualElement; + if ([ + "amount", + "margin", + "root" + ].some((name) => { + return props.inViewOptions?.[name] !== prevProps?.inViewOptions?.[name]; + })) this.startObserver(); + } + unmount() { + this.removeObserver?.(); + this.removeObserver = void 0; + } +}; +//#endregion +export { InViewGesture }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/pan/PanSession.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/pan/PanSession.mjs new file mode 100644 index 0000000..bf6319d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/pan/PanSession.mjs @@ -0,0 +1,221 @@ +import { extractEventInfo } from "../../../events/event-info.mjs"; +import { addPointerEvent } from "../../../events/add-pointer-event.mjs"; +import { distance2D } from "framer-motion/dom"; +import { cancelFrame, frame, frameData, isPrimaryPointer, time } from "motion-dom"; +import { millisecondsToSeconds, pipe, secondsToMilliseconds } from "motion-utils"; +//#region src/features/gestures/pan/PanSession.ts +var overflowStyles = /* #__PURE__ */ new Set(["auto", "scroll"]); +/** +* @internal +*/ +var PanSession = class { + constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false, distanceThreshold = 3, element } = {}) { + this.startEvent = null; + this.lastMoveEvent = null; + this.lastMoveEventInfo = null; + this.lastRawMoveEventInfo = null; + this.handlers = {}; + this.contextWindow = window; + this.scrollPositions = /* @__PURE__ */ new Map(); + this.onElementScroll = (event) => { + this.handleScroll(event.target); + }; + this.onWindowScroll = () => { + this.handleScroll(window); + }; + this.updatePoint = () => { + if (!(this.lastMoveEvent && this.lastMoveEventInfo)) return; + this.hasPendingMove = false; + if (this.lastRawMoveEventInfo) this.lastMoveEventInfo = transformPoint(this.lastRawMoveEventInfo, this.transformPagePoint); + const info = getPanInfo(this.lastMoveEventInfo, this.history); + const isPanStarted = this.startEvent !== null; + const isDistancePastThreshold = distance2D(info.offset, { + x: 0, + y: 0 + }) >= this.distanceThreshold; + if (!isPanStarted && !isDistancePastThreshold) return; + const { point } = info; + this.history.push({ + ...point, + timestamp: time.now() + }); + const { onStart, onMove } = this.handlers; + if (!isPanStarted) { + onStart && onStart(this.lastMoveEvent, info); + this.startEvent = this.lastMoveEvent; + } + onMove && onMove(this.lastMoveEvent, info); + }; + this.handlePointerMove = (event, info) => { + this.lastMoveEvent = event; + this.lastRawMoveEventInfo = info; + this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint); + this.hasPendingMove = true; + frame.update(this.updatePoint, true); + }; + this.handlePointerUp = (event, info) => { + this.hasPendingMove && this.updatePoint(); + this.end(); + const { onEnd, onSessionEnd, resumeAnimation } = this.handlers; + if (this.dragSnapToOrigin || !this.startEvent) resumeAnimation && resumeAnimation(); + if (!(this.lastMoveEvent && this.lastMoveEventInfo)) return; + const panInfo = getPanInfo(event.type === "pointercancel" ? this.lastMoveEventInfo : transformPoint(info, this.transformPagePoint), this.history); + if (this.startEvent && onEnd) onEnd(event, panInfo); + onSessionEnd && onSessionEnd(event, panInfo); + }; + if (!isPrimaryPointer(event)) return; + this.dragSnapToOrigin = dragSnapToOrigin; + this.handlers = handlers; + this.transformPagePoint = transformPagePoint; + this.distanceThreshold = distanceThreshold; + this.contextWindow = contextWindow || window; + const initialInfo = transformPoint(extractEventInfo(event), this.transformPagePoint); + const { point } = initialInfo; + const { timestamp } = frameData; + this.history = [{ + ...point, + timestamp + }]; + const { onSessionStart } = handlers; + onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history)); + const eventOptions = { + passive: true, + capture: true + }; + this.removeListeners = pipe(addPointerEvent(this.contextWindow, "pointermove", this.handlePointerMove, eventOptions), addPointerEvent(this.contextWindow, "pointerup", this.handlePointerUp, eventOptions), addPointerEvent(this.contextWindow, "pointercancel", this.handlePointerUp, eventOptions)); + if (element) this.startScrollTracking(element); + } + /** + * Start tracking scroll on ancestors and window. + */ + startScrollTracking(element) { + let current = element.parentElement; + while (current) { + const style = getComputedStyle(current); + if (overflowStyles.has(style.overflowX) || overflowStyles.has(style.overflowY)) this.scrollPositions.set(current, { + x: current.scrollLeft, + y: current.scrollTop + }); + current = current.parentElement; + } + this.scrollPositions.set(window, { + x: window.scrollX, + y: window.scrollY + }); + window.addEventListener("scroll", this.onElementScroll, { + capture: true, + passive: true + }); + window.addEventListener("scroll", this.onWindowScroll, { passive: true }); + this.removeScrollListeners = () => { + window.removeEventListener("scroll", this.onElementScroll, { capture: true }); + window.removeEventListener("scroll", this.onWindowScroll); + }; + } + /** + * Handle scroll compensation during drag. + * + * For element scroll: adjusts history origin since pageX/pageY doesn't change. + * For window scroll: adjusts lastMoveEventInfo since pageX/pageY would change. + */ + handleScroll(target) { + const initial = this.scrollPositions.get(target); + if (!initial) return; + const isWindow = target === window; + const current = isWindow ? { + x: window.scrollX, + y: window.scrollY + } : { + x: target.scrollLeft, + y: target.scrollTop + }; + const delta = { + x: current.x - initial.x, + y: current.y - initial.y + }; + if (delta.x === 0 && delta.y === 0) return; + if (isWindow) { + if (this.lastMoveEventInfo) { + this.lastMoveEventInfo.point.x += delta.x; + this.lastMoveEventInfo.point.y += delta.y; + } + } else if (this.history.length > 0) { + this.history[0].x -= delta.x; + this.history[0].y -= delta.y; + } + this.scrollPositions.set(target, current); + frame.update(this.updatePoint, true); + } + updateHandlers(handlers) { + this.handlers = handlers; + } + end() { + this.removeListeners && this.removeListeners(); + this.removeScrollListeners?.(); + this.scrollPositions.clear(); + cancelFrame(this.updatePoint); + } +}; +function transformPoint(info, transformPagePoint) { + return transformPagePoint ? { point: transformPagePoint(info.point) } : info; +} +function subtractPoint(a, b) { + return { + x: a.x - b.x, + y: a.y - b.y + }; +} +function getPanInfo({ point }, history) { + return { + point, + delta: subtractPoint(point, lastDevicePoint(history)), + offset: subtractPoint(point, startDevicePoint(history)), + velocity: getVelocity(history, .1) + }; +} +function startDevicePoint(history) { + return history[0]; +} +function lastDevicePoint(history) { + return history[history.length - 1]; +} +function getVelocity(history, timeDelta) { + if (history.length < 2) return { + x: 0, + y: 0 + }; + let i = history.length - 1; + let timestampedPoint = null; + const lastPoint = lastDevicePoint(history); + while (i >= 0) { + timestampedPoint = history[i]; + if (lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta)) break; + i--; + } + if (!timestampedPoint) return { + x: 0, + y: 0 + }; + /** + * If the selected point is the pointer-down origin (history[0]), + * there are better movement points available, and the time gap + * is suspiciously large (>2x timeDelta), use the next point instead. + * This prevents stale pointer-down points from diluting velocity + * in hold-then-flick gestures. + */ + if (timestampedPoint === history[0] && history.length > 2 && lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta) * 2) timestampedPoint = history[1]; + const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp); + if (time === 0) return { + x: 0, + y: 0 + }; + const currentVelocity = { + x: (lastPoint.x - timestampedPoint.x) / time, + y: (lastPoint.y - timestampedPoint.y) / time + }; + if (currentVelocity.x === Infinity) currentVelocity.x = 0; + if (currentVelocity.y === Infinity) currentVelocity.y = 0; + return currentVelocity; +} +//#endregion +export { PanSession }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/pan/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/pan/index.mjs new file mode 100644 index 0000000..950803c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/pan/index.mjs @@ -0,0 +1,57 @@ +import { getContextWindow } from "../../../utils/get-context-window.mjs"; +import { Feature } from "../../feature.mjs"; +import { addPointerEvent } from "../../../events/add-pointer-event.mjs"; +import { PanSession } from "./PanSession.mjs"; +import { frame } from "motion-dom"; +import { noop } from "motion-utils"; +//#region src/features/gestures/pan/index.ts +function asyncHandler(handler) { + return (event, info) => { + if (handler) frame.update(() => handler(event, info), false, true); + }; +} +var PanGesture = class extends Feature { + constructor(..._args) { + super(..._args); + this.removePointerDownListener = noop; + } + static { + this.key = "pan"; + } + onPointerDown(pointerDownEvent) { + this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), { + transformPagePoint: this.state.visualElement.getTransformPagePoint(), + contextWindow: getContextWindow(this.state.visualElement) + }); + } + createPanHandlers() { + return { + onSessionStart: asyncHandler((_, info) => { + const { onPanSessionStart } = this.state.options; + onPanSessionStart && onPanSessionStart(_, info); + }), + onStart: asyncHandler((_, info) => { + const { onPanStart } = this.state.options; + onPanStart && onPanStart(_, info); + }), + onMove: asyncHandler((event, info) => { + const { onPan } = this.state.options; + onPan && onPan(event, info); + }), + onEnd: (event, info) => { + const { onPanEnd } = this.state.options; + delete this.session; + if (onPanEnd) frame.postRender(() => onPanEnd(event, info)); + } + }; + } + mount() { + this.removePointerDownListener = addPointerEvent(this.state.element, "pointerdown", this.onPointerDown.bind(this)); + } + unmount() { + this.removePointerDownListener(); + this.session && this.session.end(); + } +}; +//#endregion +export { PanGesture }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/press/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/press/index.mjs new file mode 100644 index 0000000..8bcf3d2 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/gestures/press/index.mjs @@ -0,0 +1,45 @@ +import { Feature } from "../../feature.mjs"; +import { extractEventInfo } from "../../../events/event-info.mjs"; +import { frame, press } from "motion-dom"; +//#region src/features/gestures/press/index.ts +var PressGesture = class extends Feature { + static { + this.key = "press"; + } + constructor(state) { + super(state); + } + isActive() { + const { whilePress, onPress, onPressCancel, onPressStart } = this.state.options; + return Boolean(whilePress || onPress || onPressCancel || onPressStart); + } + register() { + const element = this.state.element; + if (!element || !this.isActive()) return; + this.removePress?.(); + this.removePress = press(element, (_el, startEvent) => { + const props = this.state.options; + this.state.setActive("whilePress", true); + if (props.onPressStart) frame.postRender(() => props.onPressStart(startEvent, extractEventInfo(startEvent))); + return (endEvent, { success }) => { + this.state.setActive("whilePress", false); + const callbackName = success ? "onPress" : "onPressCancel"; + const callback = this.state.options[callbackName]; + if (callback) frame.postRender(() => callback(endEvent, extractEventInfo(endEvent))); + }; + }, { useGlobalTarget: this.state.options.globalPressTarget }); + } + mount() { + this.register(); + } + update() { + const prev = this.state.visualElement.prevProps; + if (!Boolean(prev?.whilePress || prev?.whileTap || prev?.onPress || prev?.onPressCancel || prev?.onPressStart) && this.isActive()) this.register(); + } + unmount() { + this.removePress?.(); + this.removePress = void 0; + } +}; +//#endregion +export { PressGesture }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/config.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/config.mjs new file mode 100644 index 0000000..5b69887 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/config.mjs @@ -0,0 +1,20 @@ +import { correctBorderRadius, correctBoxShadow } from "motion-dom"; +//#region src/features/layout/config.ts +var defaultScaleCorrector = { + borderRadius: { + ...correctBorderRadius, + applyTo: [ + "borderTopLeftRadius", + "borderTopRightRadius", + "borderBottomLeftRadius", + "borderBottomRightRadius" + ] + }, + borderTopLeftRadius: correctBorderRadius, + borderTopRightRadius: correctBorderRadius, + borderBottomLeftRadius: correctBorderRadius, + borderBottomRightRadius: correctBorderRadius, + boxShadow: correctBoxShadow +}; +//#endregion +export { defaultScaleCorrector }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/layout.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/layout.mjs new file mode 100644 index 0000000..a365741 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/layout.mjs @@ -0,0 +1,78 @@ +import { Feature } from "../feature.mjs"; +import { isHidden } from "../../utils/is-hidden.mjs"; +import { defaultScaleCorrector } from "./config.mjs"; +import { addScaleCorrector, globalProjectionState } from "motion-dom"; +//#region src/features/layout/layout.ts +var LayoutFeature = class extends Feature { + static { + this.key = "layout"; + } + constructor(state) { + super(state); + addScaleCorrector(defaultScaleCorrector); + } + updatePrevLead(isPresent) { + const projection = this.state.visualElement.projection; + if (projection.isPresent !== isPresent) { + projection.isPresent = isPresent; + if (isPresent) !projection.isLead() && projection?.promote(); + else projection.isLead() && projection?.relegate(); + } + } + didUpdate() { + if (this.state.options.layout || this.state.options.layoutId || this.state.options.drag) this.state.visualElement.projection?.root?.didUpdate(); + } + mount() { + const options = this.state.options; + const layoutGroup = this.state.options.layoutGroup; + if (options.layout || options.layoutId) { + const projection = this.state.visualElement.projection; + if (options.layoutId) { + const isPresent = !isHidden(this.state.element); + projection.isPresent = isPresent; + if (isPresent) projection?.promote(); + else projection?.relegate(); + } + layoutGroup?.group?.add(projection); + globalProjectionState.hasEverUpdated = true; + } + this.didUpdate(); + } + unmount() { + const layoutGroup = this.state.options.layoutGroup; + const projection = this.state.visualElement.projection; + if (projection) { + if (layoutGroup?.group && (this.state.options.layout || this.state.options.layoutId)) layoutGroup.group.remove(projection); + } + } + /** + * Capture a layout snapshot. Options are always refreshed by the caller + * before this runs (updateOptions → lifecycle hook), so the only remaining + * signal is presence: an exiting element is treated as not present. + */ + getSnapshot(isPresent) { + const projection = this.state.visualElement.projection; + const { layout, layoutId, drag, layoutDependency } = this.state.visualElement.props; + const prevProps = this.state.visualElement.prevProps; + if (!projection || !layout && !layoutId && !drag) return; + /** + * If drag is enabled, no layoutDependency is set, or presence changed, + * we need to update the snapshot + */ + if (drag || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0 || isPresent !== projection.isPresent) projection.willUpdate(); + /** + * If presence has changed, promote or relegate the projection accordingly + */ + if (layoutId) this.updatePrevLead(isPresent); + this.didUpdate(); + } + refreshRootScroll() { + const root = this.state.visualElement?.projection?.root; + if (root && this.state.options.layoutId) { + root.scroll = void 0; + root.updateScroll?.(); + } + } +}; +//#endregion +export { LayoutFeature }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/projection.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/projection.mjs new file mode 100644 index 0000000..8296802 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/projection.mjs @@ -0,0 +1,50 @@ +import { Feature } from "../feature.mjs"; +import { getClosestProjectingNode } from "./utils.mjs"; +import { defaultScaleCorrector } from "./config.mjs"; +import { isSSR } from "../../utils/is.mjs"; +import { HTMLProjectionNode, addScaleCorrector, isHTMLElement } from "motion-dom"; +//#region src/features/layout/projection.ts +var ProjectionFeature = class extends Feature { + static { + this.key = "projection"; + } + constructor(state) { + super(state); + addScaleCorrector(defaultScaleCorrector); + if (!isSSR) this.initProjection(); + } + initProjection() { + const options = this.state.options; + this.state.visualElement.projection = new HTMLProjectionNode(this.state.visualElement.latestValues, options["data-framer-portal-id"] ? void 0 : getClosestProjectingNode(this.state.visualElement.parent)); + this.projection = this.state.visualElement.projection; + this.projection.isPresent = true; + this.setOptions(); + } + setOptions() { + const options = this.state.options; + const { layoutId, layout, drag = false, dragConstraints = false } = options; + this.projection?.setOptions({ + layout, + layoutId, + alwaysMeasureLayout: Boolean(layoutId) || Boolean(drag) || dragConstraints && isHTMLElement(dragConstraints), + visualElement: this.state.visualElement, + animationType: typeof options.layout === "string" ? options.layout : "both", + layoutRoot: options.layoutRoot, + layoutScroll: options.layoutScroll, + crossfade: options.crossfade, + onExitComplete: () => { + if (!this.projection?.isPresent && this.state.options.layoutId && !this.state.isExiting) queueMicrotask(() => { + this.state.getFeature("exit")?.completeExitFromProjection(); + }); + } + }); + } + update() { + this.setOptions(); + } + mount() { + this.projection?.mount(this.state.element); + } +}; +//#endregion +export { ProjectionFeature }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/utils.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/utils.mjs new file mode 100644 index 0000000..c53b56d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/features/layout/utils.mjs @@ -0,0 +1,7 @@ +//#region src/features/layout/utils.ts +function getClosestProjectingNode(visualElement) { + if (!visualElement) return void 0; + return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent); +} +//#endregion +export { getClosestProjectingNode }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/index.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/index.mjs new file mode 100644 index 0000000..6a610aa --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/index.mjs @@ -0,0 +1,43 @@ +import { createContext } from "./utils/createContext.mjs"; +import { resolveMotionProps } from "./utils/resolve-motion-props.mjs"; +import { useInView } from "./utils/use-in-view.mjs"; +import { useAnimationFrame } from "./utils/use-animation-frame.mjs"; +import { getContextWindow } from "./utils/get-context-window.mjs"; +import { useDomRef } from "./utils/use-dom-ref.mjs"; +import { usePageInView } from "./utils/use-page-in-view.mjs"; +import { injectLayoutGroup, injectMotion, layoutGroupInjectionKey, motionInjectionKey, provideLayoutGroup, provideMotion } from "./components/context.mjs"; +import { provideMotionConfig, useMotionConfig } from "./components/motion-config/context.mjs"; +import MotionConfig_default from "./components/motion-config/MotionConfig.mjs"; +import { mountedStates } from "./state/motion-state.mjs"; +import { domMax } from "./features/dom-max.mjs"; +import { Motion, motion } from "./components/motion/index.mjs"; +import AnimatePresence_default from "./components/animate-presence/AnimatePresence.mjs"; +import { usePresence } from "./components/animate-presence/use-presence.mjs"; +import AnimateView_default from "./components/animate-view/AnimateView.mjs"; +import { startTransition } from "./components/animate-view/start-transition.mjs"; +import { useCombineMotionValues } from "./value/use-combine-values.mjs"; +import { useComputed } from "./value/use-computed.mjs"; +import { useTransform } from "./value/use-transform.mjs"; +import { useTime } from "./value/use-time.mjs"; +import { useMotionTemplate } from "./value/use-motion-template.mjs"; +import { useMotionValueEvent } from "./value/use-motion-value-event.mjs"; +import { useFollowValue, useSpring } from "./value/use-spring.mjs"; +import { ScrollOffset, offsetToViewTimelineRange } from "./value/scroll/offsets.mjs"; +import { useScroll } from "./value/use-scroll.mjs"; +import { useVelocity } from "./value/use-velocity.mjs"; +import { Reorder, ReorderGroup, ReorderItem } from "./components/reorder/index.mjs"; +import RowValue_default from "./components/RowValue.mjs"; +import { LazyMotion } from "./components/lazy-motion/index.mjs"; +import { M, m } from "./components/motion/m.mjs"; +import { useLayoutGroup } from "./components/use-layout-group.mjs"; +import LayoutGroup_default from "./components/LayoutGroup.mjs"; +import { useAnimate } from "./animation/hooks/use-animate.mjs"; +import { useAnimationControls } from "./animation/hooks/use-animation-controls.mjs"; +import { useReducedMotion } from "./animation/hooks/use-reduced-motion.mjs"; +import { useDragControls } from "./features/gestures/drag/use-drag-controls.mjs"; +import { domAnimation } from "./features/dom-animation.mjs"; +import { MotionPlugin, createMotionDirective, createPresetDirective, vMotion } from "./directive/index.mjs"; +import { motionGlobalConfig } from "./config.mjs"; +import { delay as delayInMs, motionValue as useMotionValue } from "motion-dom"; +export * from "framer-motion/dom"; +export { AnimatePresence_default as AnimatePresence, AnimateView_default as AnimateView, LayoutGroup_default as LayoutGroup, LazyMotion, M, Motion, MotionConfig_default as MotionConfig, MotionPlugin, Reorder, ReorderGroup, ReorderItem, RowValue_default as RowValue, ScrollOffset, createContext, createMotionDirective, createPresetDirective, delayInMs, domAnimation, domMax, getContextWindow, injectLayoutGroup, injectMotion, layoutGroupInjectionKey, m, motion, motionGlobalConfig, motionInjectionKey, mountedStates, offsetToViewTimelineRange, provideLayoutGroup, provideMotion, provideMotionConfig, resolveMotionProps, startTransition, useAnimate, useAnimationControls, useAnimationFrame, useCombineMotionValues, useComputed, useDomRef, useDragControls, useFollowValue, useInView, useLayoutGroup, useMotionConfig, useMotionTemplate, useMotionValue, useMotionValueEvent, usePageInView, usePresence, useReducedMotion, useScroll, useSpring, useTime, useTransform, useVelocity, vMotion }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/state/create-visual-element.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/state/create-visual-element.mjs new file mode 100644 index 0000000..602b289 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/state/create-visual-element.mjs @@ -0,0 +1,8 @@ +import { isSVGElement } from "./utils.mjs"; +import { HTMLVisualElement, SVGVisualElement } from "motion-dom"; +//#region src/state/create-visual-element.ts +function createVisualElement(Component, options) { + return isSVGElement(Component) ? new SVGVisualElement(options) : new HTMLVisualElement(options); +} +//#endregion +export { createVisualElement }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/state/motion-state.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/state/motion-state.mjs new file mode 100644 index 0000000..a02afd3 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/state/motion-state.mjs @@ -0,0 +1,150 @@ +import { isSVGElement, resolveInitialValues } from "./utils.mjs"; +import { isVariantLabel } from "motion-dom"; +import { invariant } from "hey-listen"; +//#region src/state/motion-state.ts +var mountedStates = /* @__PURE__ */ new WeakMap(); +/** +* Core class that manages animation state and orchestrates animations. +* Handles component lifecycle methods in the correct order based on component tree position. +*/ +var MotionState = class { + constructor(options, parent, bundle = {}) { + this.element = null; + this.isExiting = false; + this.children = /* @__PURE__ */ new Set(); + this.features = /* @__PURE__ */ new Map(); + this.featureCtors = []; + this._context = null; + this.options = options; + this.parent = parent; + parent?.children?.add(this); + this.latestValues = resolveInitialValues(options, this.context); + this.type = isSVGElement(this.options.as) ? "svg" : "html"; + this.setBundle(bundle); + } + get context() { + if (!this._context) { + const handler = { get: (_target, prop) => { + const value = this.options[prop]; + if (isVariantLabel(value) || prop === "initial" && value === false) return value; + return this.parent?.context[prop]; + } }; + this._context = new Proxy({}, handler); + } + return this._context; + } + /** + * Declare (or asynchronously resolve, e.g. LazyMotion) the render + feature + * bundle for this state, then sync — the visual element and feature + * instances are created lazily inside updateFeatures(). + */ + setBundle(bundle) { + if (bundle.renderer) this.initVisualElement(bundle.renderer); + if (bundle.features?.length) this.featureCtors = bundle.features; + this.updateFeatures(); + } + /** + * Instantiate any missing features, then mount unmounted ones and update + * the rest. Feature constructors dereference the visual element, so this + * no-ops until setBundle() has created one. Feature mount is isMount-guarded, + * so this is safe to call repeatedly and from any lifecycle stage. + */ + updateFeatures() { + if (!this.visualElement) return; + for (const FeatureCtor of this.featureCtors) { + let feature = this.features.get(FeatureCtor.key); + if (!feature) { + feature = new FeatureCtor(this); + this.features.set(FeatureCtor.key, feature); + } + if (!this.isMounted()) continue; + if (feature.isMount) feature.update(); + else { + feature.mount(); + feature.isMount = true; + } + } + } + updateOptions(options) { + this.options = options; + this.visualElement?.update({ + ...this.options, + whileTap: this.options.whilePress + }, this.options.presenceContext ?? null); + } + mount(element) { + invariant(Boolean(element), "Animation state must be mounted with valid Element"); + mountedStates.set(element, this); + this.element = element; + this.features.get("layout")?.refreshRootScroll(); + this.visualElement?.mount(element); + this.updateFeatures(); + } + beforeUnmount() { + this.getSnapshot(false); + } + unmount() { + this.parent?.children?.delete(this); + if (this.element) mountedStates.delete(this.element); + this.features.forEach((f) => { + f.unmount(); + f.isMount = false; + }); + this.visualElement?.unmount(); + this.element = null; + } + beforeUpdate() { + this.getSnapshot(!this.isExiting); + } + update() { + this.updateFeatures(); + this.didUpdate(); + } + /** Access an installed feature by key, e.g. getFeature<ExitFeature>('exit') */ + getFeature(key) { + return this.features.get(key); + } + setActive(name, isActive) { + if (name === "exit" && isActive) this.isExiting = true; + const type = name === "whilePress" ? "whileTap" : name; + this.visualElement?.animationState?.setActive(type, isActive).then(() => { + if (name === "exit" && isActive) this.isExiting = false; + }); + } + isMounted() { + return Boolean(this.element); + } + /** + * Create and attach the visual element using the given renderer. + * Called by setBundle(); no-ops once created. + */ + initVisualElement(renderer) { + if (this.visualElement) return; + this.visualElement = renderer(this.options.as, { + presenceContext: this.options.presenceContext ?? null, + parent: this.parent?.visualElement, + props: { + ...this.options, + whileTap: this.options.whilePress + }, + visualState: { + renderState: { + transform: {}, + transformOrigin: {}, + style: {}, + vars: {}, + attrs: {} + }, + latestValues: { ...this.latestValues } + }, + reducedMotionConfig: this.options.motionConfig?.reducedMotion + }); + if (this.isMounted()) this.visualElement.mount(this.element); + } + getSnapshot(isPresent) { + this.features.get("layout")?.getSnapshot(isPresent); + } + didUpdate() {} +}; +//#endregion +export { MotionState, mountedStates }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/state/style.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/state/style.mjs new file mode 100644 index 0000000..61b0958 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/state/style.mjs @@ -0,0 +1,46 @@ +import { buildHTMLStyles, buildSVGAttrs, camelCaseAttributes, isSVGTag } from "motion-dom"; +//#region src/state/style.ts +function camelToDash(str) { + return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`); +} +function createHTMLRenderState() { + return { + transform: {}, + transformOrigin: {}, + style: {}, + vars: {} + }; +} +function createSVGRenderState() { + return { + ...createHTMLRenderState(), + attrs: {} + }; +} +function createStyles(latestValues, transformTemplate) { + const state = createHTMLRenderState(); + buildHTMLStyles(state, latestValues, transformTemplate); + const result = { ...state.style }; + if (result.transform === "") delete result.transform; + for (const key in state.vars) result[key] = state.vars[key]; + if (Object.keys(result).length === 0) return null; + return result; +} +function createSVGStyles(latestValues, tag, styleProp) { + const state = createSVGRenderState(); + buildSVGAttrs(state, latestValues, isSVGTag(tag), void 0, styleProp); + const attrs = {}; + for (const key in state.attrs) { + const attrKey = camelCaseAttributes.has(key) ? key : camelToDash(key); + attrs[attrKey] = state.attrs[key]; + } + return { + attrs, + style: { + ...state.style, + ...state.vars + } + }; +} +//#endregion +export { createSVGStyles, createStyles }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/state/utils.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/state/utils.mjs new file mode 100644 index 0000000..0fbabf6 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/state/utils.mjs @@ -0,0 +1,104 @@ +//#region src/state/utils.ts +function resolveVariantValue(definition, variants, custom) { + if (Array.isArray(definition)) return definition.reduce((acc, item) => { + const resolvedVariant = resolveVariantValue(item, variants, custom); + return resolvedVariant ? { + ...acc, + ...resolvedVariant + } : acc; + }, {}); + else if (typeof definition === "object") return definition; + else if (definition && variants) { + const variant = variants[definition]; + return typeof variant === "function" ? variant(custom) : variant; + } +} +function resolveVariant(definition, variants, custom) { + const resolved = resolveVariantValue(definition, variants, custom); + if (!resolved) return void 0; + const { transition, transitionEnd, ...target } = resolved; + return { + ...target, + ...transitionEnd + }; +} +/** +* Resolve initial latest values from variant sources. +* Shared by MotionState constructor and SSR style resolution. +* +* @param options - Motion options +* @param context - Optional parent context for variant inheritance (MotionState passes this) +*/ +function resolveInitialValues(options, context) { + const sources = (options.initial === void 0 && options.variants ? context?.initial : options.initial) === false ? ["initial", "animate"] : ["initial"]; + const custom = options.custom ?? options.presenceContext?.custom; + return sources.reduce((acc, variant) => { + return { + ...acc, + ...resolveVariant(options[variant] || context?.[variant], options.variants, custom) + }; + }, {}); +} +var svgElements = [ + "animate", + "circle", + "defs", + "desc", + "ellipse", + "g", + "image", + "line", + "filter", + "marker", + "mask", + "metadata", + "path", + "pattern", + "polygon", + "polyline", + "rect", + "stop", + "svg", + "switch", + "symbol", + "text", + "tspan", + "use", + "view", + "clipPath", + "feBlend", + "feColorMatrix", + "feComponentTransfer", + "feComposite", + "feConvolveMatrix", + "feDiffuseLighting", + "feDisplacementMap", + "feDistantLight", + "feDropShadow", + "feFlood", + "feFuncA", + "feFuncB", + "feFuncG", + "feFuncR", + "feGaussianBlur", + "feImage", + "feMerge", + "feMergeNode", + "feMorphology", + "feOffset", + "fePointLight", + "feSpecularLighting", + "feSpotLight", + "feTile", + "feTurbulence", + "foreignObject", + "linearGradient", + "radialGradient", + "textPath" +]; +var svgElementSet = new Set(svgElements); +function isSVGElement(as) { + return svgElementSet.has(as); +} +//#endregion +export { isSVGElement, resolveInitialValues, resolveVariant, svgElements }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/createContext.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/createContext.mjs new file mode 100644 index 0000000..c759d8c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/createContext.mjs @@ -0,0 +1,35 @@ +import { inject, provide } from "vue"; +//#region src/utils/createContext.ts +/** +* @param providerComponentName - The name(s) of the component(s) providing the context. +* +* There are situations where context can come from multiple components. In such cases, you might need to give an array of component names to provide your context, instead of just a single string. +* +* @param contextName The description for injection key symbol. +*/ +function createContext(providerComponentName, contextName) { + const symbolDescription = typeof providerComponentName === "string" && !contextName ? `${providerComponentName}Context` : contextName; + const injectionKey = Symbol(symbolDescription); + /** + * @param fallback The context value to return if the injection fails. + * + * @throws When context injection failed and no fallback is specified. + * This happens when the component injecting the context is not a child of the root component providing the context. + */ + const injectContext = (fallback) => { + const context = inject(injectionKey, fallback); + if (context === void 0) throw new Error(`Injection \`${injectionKey.toString()}\` not found. Component must be used within ${Array.isArray(providerComponentName) ? `one of the following components: ${providerComponentName.join(", ")}` : `\`${providerComponentName}\``}`); + return context; + }; + const provideContext = (contextValue) => { + provide(injectionKey, contextValue); + return contextValue; + }; + return [ + injectContext, + provideContext, + injectionKey + ]; +} +//#endregion +export { createContext }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/get-context-window.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/get-context-window.mjs new file mode 100644 index 0000000..5a4e0fa --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/get-context-window.mjs @@ -0,0 +1,6 @@ +//#region src/utils/get-context-window.ts +function getContextWindow({ current }) { + return current ? current.ownerDocument.defaultView : null; +} +//#endregion +export { getContextWindow }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/is-hidden.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/is-hidden.mjs new file mode 100644 index 0000000..512af67 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/is-hidden.mjs @@ -0,0 +1,6 @@ +//#region src/utils/is-hidden.ts +function isHidden(element) { + return element.style.display === "none" || element.offsetParent === null && window.getComputedStyle(element).position !== "fixed"; +} +//#endregion +export { isHidden }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/is.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/is.mjs new file mode 100644 index 0000000..7f8dac5 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/is.mjs @@ -0,0 +1,4 @@ +//#region src/utils/is.ts +var isSSR = typeof window === "undefined"; +//#endregion +export { isSSR }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/resolve-motion-props.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/resolve-motion-props.mjs new file mode 100644 index 0000000..09290f0 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/resolve-motion-props.mjs @@ -0,0 +1,21 @@ +//#region src/utils/resolve-motion-props.ts +/** +* Merge motion props with context values (layout group, presence, config). +* Shared by useMotionState (component) and v-motion directive. +*/ +function resolveMotionProps(props, context) { + const { layoutGroup, presenceContext, config } = context; + const layoutId = layoutGroup.id && props.layoutId ? `${layoutGroup.id}-${props.layoutId}` : props.layoutId || void 0; + return { + ...props, + layoutId, + transition: props.transition ?? config.transition, + layoutGroup, + motionConfig: config, + inViewOptions: props.inViewOptions ?? config.inViewOptions, + presenceContext, + initial: presenceContext.initial === false ? presenceContext.initial : props.initial === true ? void 0 : props.initial + }; +} +//#endregion +export { resolveMotionProps }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-animation-frame.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-animation-frame.mjs new file mode 100644 index 0000000..a0c0b98 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-animation-frame.mjs @@ -0,0 +1,19 @@ +import { cancelFrame, frame } from "motion-dom"; +import { onBeforeUpdate, onUnmounted } from "vue"; +//#region src/utils/use-animation-frame.ts +function useAnimationFrame(callback) { + let initialTimestamp = 0; + const provideTimeSinceStart = ({ timestamp, delta }) => { + if (!initialTimestamp) initialTimestamp = timestamp; + callback(timestamp - initialTimestamp, delta); + }; + const cancel = () => cancelFrame(provideTimeSinceStart); + onBeforeUpdate(() => { + cancel(); + frame.update(provideTimeSinceStart, true); + }); + onUnmounted(() => cancel()); + frame.update(provideTimeSinceStart, true); +} +//#endregion +export { useAnimationFrame }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-dom-ref.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-dom-ref.mjs new file mode 100644 index 0000000..ed1a736 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-dom-ref.mjs @@ -0,0 +1,17 @@ +import { getMotionElement } from "../components/hooks/use-motion-elm.mjs"; +import { ref } from "vue"; +//#region src/utils/use-dom-ref.ts +function useDomRef() { + const dom = ref(null); + return new Proxy(dom, { + get(target, key) { + if (typeof key === "string" || typeof key === "symbol") return Reflect.get(target, key); + }, + set(target, key, value) { + if (key === "value") return Reflect.set(target, key, getMotionElement(value?.$el || value)); + return true; + } + }); +} +//#endregion +export { useDomRef }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-in-view.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-in-view.mjs new file mode 100644 index 0000000..20a1620 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-in-view.mjs @@ -0,0 +1,29 @@ +import { inView } from "framer-motion/dom"; +import { ref, unref, watchEffect } from "vue"; +import { unrefElement } from "@vueuse/core"; +//#region src/utils/use-in-view.ts +function useInView(domRef, options) { + const isInView = ref(false); + watchEffect((onCleanup) => { + const realOptions = unref(options) || {}; + const { once } = realOptions; + const el = unrefElement(domRef); + if (!el || once && isInView.value) return; + const onEnter = () => { + isInView.value = true; + return once ? void 0 : () => { + isInView.value = false; + }; + }; + const cleanup = inView(el, onEnter, { + ...realOptions, + root: unref(realOptions.root) + }); + onCleanup(() => { + cleanup(); + }); + }, { flush: "post" }); + return isInView; +} +//#endregion +export { useInView }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-page-in-view.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-page-in-view.mjs new file mode 100644 index 0000000..ad98388 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/utils/use-page-in-view.mjs @@ -0,0 +1,18 @@ +import { onMounted, onUnmounted, ref } from "vue"; +//#region src/utils/use-page-in-view.ts +function usePageInView() { + const isInView = ref(true); + const handleVisibilityChange = () => { + isInView.value = !document.hidden; + }; + onMounted(() => { + if (document.hidden) handleVisibilityChange(); + document.addEventListener("visibilitychange", handleVisibilityChange); + }); + onUnmounted(() => { + document.removeEventListener("visibilitychange", handleVisibilityChange); + }); + return isInView; +} +//#endregion +export { usePageInView }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/scroll/offsets.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/scroll/offsets.mjs new file mode 100644 index 0000000..08a780d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/scroll/offsets.mjs @@ -0,0 +1,75 @@ +//#region src/value/scroll/offsets.ts +/** +* Preset scroll offsets matching framer-motion's ScrollOffset presets. +* Use with useScroll's offset option to define scroll-linked animation ranges. +* +* @example +* useScroll({ target: el, offset: ScrollOffset.Enter }) +*/ +var ScrollOffset = { + /** Progress 0→1 as target enters the container */ + Enter: [[0, 1], [1, 1]], + /** Progress 0→1 as target exits the container */ + Exit: [[0, 0], [1, 0]], + /** Progress 0→1 across any overlap between target and container */ + Any: [[1, 0], [0, 1]], + /** Progress 0→1 while target is fully contained within the container */ + All: [[0, 0], [1, 1]] +}; +var presets = [ + [ScrollOffset.Enter, "entry"], + [ScrollOffset.Exit, "exit"], + [ScrollOffset.Any, "cover"], + [ScrollOffset.All, "contain"] +]; +var stringToProgress = { + start: 0, + end: 1 +}; +function parseStringOffset(s) { + const parts = s.trim().split(/\s+/); + if (parts.length !== 2) return void 0; + const a = stringToProgress[parts[0]]; + const b = stringToProgress[parts[1]]; + if (a === void 0 || b === void 0) return void 0; + return [a, b]; +} +function normaliseOffset(offset) { + if (offset.length !== 2) return void 0; + const result = []; + for (const item of offset) if (Array.isArray(item)) result.push(item); + else if (typeof item === "string") { + const parsed = parseStringOffset(item); + if (!parsed) return void 0; + result.push(parsed); + } else return; + return result; +} +function matchesPreset(offset, preset) { + const normalised = normaliseOffset(offset); + if (!normalised) return false; + for (let i = 0; i < 2; i++) { + const o = normalised[i]; + const p = preset[i]; + if (o[0] !== p[0] || o[1] !== p[1]) return false; + } + return true; +} +/** +* Maps a ScrollOffset array to a ViewTimeline named range. +* Returns undefined for unrecognised patterns — signals fallback to JS scroll tracking. +* +* Ported from framer-motion's internal render/dom/scroll/utils/offset-to-range.mjs +*/ +function offsetToViewTimelineRange(offset) { + if (!offset) return { + rangeStart: "contain 0%", + rangeEnd: "contain 100%" + }; + for (const [preset, name] of presets) if (matchesPreset(offset, preset)) return { + rangeStart: `${name} 0%`, + rangeEnd: `${name} 100%` + }; +} +//#endregion +export { ScrollOffset, offsetToViewTimelineRange }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-combine-values.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-combine-values.mjs new file mode 100644 index 0000000..38e0e0c --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-combine-values.mjs @@ -0,0 +1,40 @@ +import { cancelFrame, frame, motionValue } from "motion-dom"; +import { getCurrentInstance, onUnmounted } from "vue"; +//#region src/value/use-combine-values.ts +function useCombineMotionValues(combineValues) { + /** + * Initialise the returned motion value. This remains the same between renders. + */ + const value = motionValue(combineValues()); + /** + * Create a function that will update the template motion value with the latest values. + * This is pre-bound so whenever a motion value updates it can schedule its + * execution in Framesync. If it's already been scheduled it won't be fired twice + * in a single frame. + */ + const updateValue = () => value.set(combineValues()); + /** + * Subscribe to all motion values found within the template. Whenever any of them change, + * schedule an update. + */ + const scheduleUpdate = () => frame.preRender(updateValue, false, true); + let subscriptions; + const subscribe = (values) => { + subscriptions = values.map((v) => v.on("change", scheduleUpdate)); + }; + const unsubscribe = () => { + subscriptions.forEach((unsubscribe) => unsubscribe()); + cancelFrame(updateValue); + }; + if (getCurrentInstance()) onUnmounted(() => { + unsubscribe(); + }); + return { + subscribe, + unsubscribe, + value, + updateValue + }; +} +//#endregion +export { useCombineMotionValues }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-computed.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-computed.mjs new file mode 100644 index 0000000..9730bad --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-computed.mjs @@ -0,0 +1,24 @@ +import { useCombineMotionValues } from "./use-combine-values.mjs"; +import { collectMotionValues } from "motion-dom"; +import { watchEffect } from "vue"; +//#region src/value/use-computed.ts +function useComputed(computed) { + /** + * Open session of collectMotionValues. Any MotionValue that calls get() + * will be saved into this array. + */ + collectMotionValues.current = []; + const { value, subscribe, unsubscribe, updateValue } = useCombineMotionValues(computed); + subscribe(collectMotionValues.current); + collectMotionValues.current = void 0; + watchEffect(() => { + unsubscribe(); + collectMotionValues.current = []; + updateValue(); + subscribe(collectMotionValues.current); + collectMotionValues.current = void 0; + }); + return value; +} +//#endregion +export { useComputed }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-motion-template.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-motion-template.mjs new file mode 100644 index 0000000..0e3945e --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-motion-template.mjs @@ -0,0 +1,42 @@ +import { useCombineMotionValues } from "./use-combine-values.mjs"; +import { isMotionValue } from "motion-dom"; +//#region src/value/use-motion-template.ts +/** +* 将多个motion值组合成一个新的motion值,使用模板字符串语法 +* +* ```vue +* <script setup> +* import { useSpring, motionValue, useMotionTemplate } from 'motion-v' +* +* const shadowX = useSpring(0) +* const shadowY = motionValue(0) +* const shadow = useMotionTemplate`drop-shadow(${shadowX}px ${shadowY}px 20px rgba(0,0,0,0.3))` +* <\/script> +* +* <template> +* <Motion :style="{ filter: shadow }" /> +* </template> +* ``` +* +* @public +*/ +function useMotionTemplate(fragments, ...values) { + /** + * 创建一个函数用于从最新的motion值构建字符串 + */ + const numFragments = fragments.length; + function buildValue() { + let output = ""; + for (let i = 0; i < numFragments; i++) { + output += fragments[i]; + const value = values[i]; + if (value) output += isMotionValue(value) ? value.get() : value; + } + return output; + } + const { value, subscribe } = useCombineMotionValues(buildValue); + subscribe(values.filter(isMotionValue)); + return value; +} +//#endregion +export { useMotionTemplate }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-motion-value-event.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-motion-value-event.mjs new file mode 100644 index 0000000..c4edb22 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-motion-value-event.mjs @@ -0,0 +1,17 @@ +import { onUnmounted } from "vue"; +//#region src/value/use-motion-value-event.ts +/** +* 监听 MotionValue 的事件 +* @param value MotionValue 实例 +* @param event 事件名称 +* @param callback 回调函数 +*/ +function useMotionValueEvent(value, event, callback) { + const unlisten = value.on(event, callback); + onUnmounted(() => { + unlisten(); + }); + return unlisten; +} +//#endregion +export { useMotionValueEvent }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-scroll.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-scroll.mjs new file mode 100644 index 0000000..fc14326 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-scroll.mjs @@ -0,0 +1,64 @@ +import { getElement } from "../components/hooks/use-motion-elm.mjs"; +import { isSSR } from "../utils/is.mjs"; +import { offsetToViewTimelineRange } from "./scroll/offsets.mjs"; +import { scroll } from "framer-motion/dom"; +import { motionValue, supportsScrollTimeline, supportsViewTimeline } from "motion-dom"; +import { toValue, watchEffect } from "vue"; +//#region src/value/use-scroll.ts +function createScrollMotionValues() { + return { + scrollX: motionValue(0), + scrollY: motionValue(0), + scrollXProgress: motionValue(0), + scrollYProgress: motionValue(0) + }; +} +function canAccelerateScroll(target, offset) { + if (isSSR) return false; + return target ? supportsViewTimeline() && !!offsetToViewTimelineRange(offset) : supportsScrollTimeline(); +} +function makeAccelerateConfig(axis, options) { + return { + factory: (animation) => { + const { container, target, ...rest } = toValue(options); + return scroll(animation, { + ...rest, + axis, + container: getElement(container), + target: getElement(target) + }); + }, + times: [0, 1], + keyframes: [0, 1], + ease: (v) => v, + duration: 1 + }; +} +function useScroll(options = {}) { + const values = createScrollMotionValues(); + const { target, offset } = toValue(options); + if (canAccelerateScroll(target, offset)) { + values.scrollXProgress.accelerate = makeAccelerateConfig("x", options); + values.scrollYProgress.accelerate = makeAccelerateConfig("y", options); + } + watchEffect((onCleanup) => { + if (isSSR) return; + const { container, target, ...rest } = toValue(options); + const cleanup = scroll((_progress, { x, y }) => { + values.scrollX.set(x.current); + values.scrollXProgress.set(x.progress); + values.scrollY.set(y.current); + values.scrollYProgress.set(y.progress); + }, { + ...rest, + container: getElement(container), + target: getElement(target) + }); + onCleanup(() => { + cleanup(); + }); + }, { flush: "post" }); + return values; +} +//#endregion +export { useScroll }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-spring.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-spring.mjs new file mode 100644 index 0000000..28a7262 --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-spring.mjs @@ -0,0 +1,29 @@ +import { attachFollow, isMotionValue, motionValue } from "motion-dom"; +import { toValue, watch } from "vue"; +//#region src/value/use-spring.ts +function useFollowValue(source, options = {}) { + const value = motionValue(isMotionValue(source) ? source.get() : source); + let cleanup; + watch(() => toValue(options), (_1, _2, onCleanup) => { + cleanup = attachFollow(value, source, toValue(options)); + onCleanup(() => { + cleanup?.(); + }); + }, { immediate: true }); + return value; +} +function useSpring(source, config = {}) { + const value = motionValue(isMotionValue(source) ? source.get() : source); + watch(() => toValue(config), (_1, _2, onCleanup) => { + const cleanup = attachFollow(value, source, { + type: "spring", + ...toValue(config) + }); + onCleanup(() => { + cleanup?.(); + }); + }, { immediate: true }); + return value; +} +//#endregion +export { useFollowValue, useSpring }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-time.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-time.mjs new file mode 100644 index 0000000..b85bbec --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-time.mjs @@ -0,0 +1,10 @@ +import { useAnimationFrame } from "../utils/use-animation-frame.mjs"; +import { motionValue } from "motion-dom"; +//#region src/value/use-time.ts +function useTime() { + const time = motionValue(0); + useAnimationFrame((t) => time.set(t)); + return time; +} +//#endregion +export { useTime }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-transform.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-transform.mjs new file mode 100644 index 0000000..d7678da --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-transform.mjs @@ -0,0 +1,67 @@ +import { useCombineMotionValues } from "./use-combine-values.mjs"; +import { useComputed } from "./use-computed.mjs"; +import { motionValue, transform } from "motion-dom"; +import { isRef, watch } from "vue"; +//#region src/value/use-transform.ts +function useTransform(input, inputRangeOrTransformer, outputRange, options) { + if (typeof input === "function") return useComputed(input); + if (outputRange && !Array.isArray(outputRange) && typeof outputRange === "object") { + const result = {}; + for (const key in outputRange) if (Object.prototype.hasOwnProperty.call(outputRange, key)) { + const keyOutputRange = outputRange[key]; + result[key] = useTransform(input, inputRangeOrTransformer, keyOutputRange, options); + } + return result; + } + let inputValues; + let transformer; + if (typeof inputRangeOrTransformer === "function") { + transformer = inputRangeOrTransformer; + inputValues = Array.isArray(input) ? input : [input]; + } else if (isRef(inputRangeOrTransformer)) { + const bridgeMV = motionValue(0); + let currentTransformer = transform(inputRangeOrTransformer.value, outputRange, options); + watch(inputRangeOrTransformer, (newRange) => { + currentTransformer = transform(newRange, outputRange, options); + bridgeMV.set(bridgeMV.get() + 1); + }, { flush: "sync" }); + transformer = (values) => { + return Array.isArray(values) ? currentTransformer(values[0]) : currentTransformer(values); + }; + inputValues = Array.isArray(input) ? [...input, bridgeMV] : [input, bridgeMV]; + } else { + transformer = transform(inputRangeOrTransformer, outputRange, options); + inputValues = Array.isArray(input) ? input : [input]; + } + const result = Array.isArray(input) ? useListTransform(inputValues, transformer) : useListTransform(inputValues, (values) => { + return transformer(values[0]); + }); + if (!Array.isArray(input)) { + const inputAccelerate = input.accelerate; + if (inputAccelerate && !inputAccelerate.isTransformed && typeof inputRangeOrTransformer !== "function" && Array.isArray(outputRange) && options?.clamp !== false) { + const resolvedInputRange = isRef(inputRangeOrTransformer) ? inputRangeOrTransformer.value : inputRangeOrTransformer; + result.accelerate = { + ...inputAccelerate, + times: resolvedInputRange, + keyframes: outputRange, + isTransformed: true, + ...options?.ease ? { ease: options.ease } : {} + }; + } + } + return result; +} +function useListTransform(values, transformer) { + const latest = []; + const combineValues = () => { + latest.length = 0; + const numValues = values.length; + for (let i = 0; i < numValues; i++) latest[i] = values[i].get(); + return transformer(latest); + }; + const { value, subscribe } = useCombineMotionValues(combineValues); + subscribe(values); + return value; +} +//#endregion +export { useTransform }; diff --git a/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-velocity.mjs b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-velocity.mjs new file mode 100644 index 0000000..5cf0ccd --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/dist/es/value/use-velocity.mjs @@ -0,0 +1,31 @@ +import { useMotionValueEvent } from "./use-motion-value-event.mjs"; +import { frame, motionValue } from "motion-dom"; +//#region src/value/use-velocity.ts +/** +* 创建一个 MotionValue,当提供的 MotionValue 速度变化时更新 +* +* ```javascript +* const x = useMotionValue(0) +* const xVelocity = useVelocity(x) +* const xAcceleration = useVelocity(xVelocity) +* ``` +* +* @public +*/ +function useVelocity(value) { + const velocity = motionValue(value.getVelocity()); + const updateVelocity = () => { + const latest = value.getVelocity(); + velocity.set(latest); + /** + * 如果还有速度,安排下一帧继续检查直到速度为零 + */ + if (latest) frame.update(updateVelocity); + }; + useMotionValueEvent(value, "change", () => { + frame.update(updateVelocity, false, true); + }); + return velocity; +} +//#endregion +export { useVelocity }; diff --git a/apps/web/.output/server/node_modules/motion-v/package.json b/apps/web/.output/server/node_modules/motion-v/package.json new file mode 100644 index 0000000..81de77d --- /dev/null +++ b/apps/web/.output/server/node_modules/motion-v/package.json @@ -0,0 +1,71 @@ +{ + "name": "motion-v", + "type": "module", + "version": "2.8.0", + "description": "", + "author": "", + "license": "MIT", + "homepage": "https://github.com/motiondivision/motion-vue", + "repository": { + "type": "git", + "url": "https://github.com/motiondivision/motion-vue.git" + }, + "keywords": [ + "vue", + "motion", + "motionone", + "framer-motion" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/es/index.d.ts", + "import": "./dist/es/index.mjs" + }, + "./nuxt": { + "types": "./dist/nuxt/index.d.mts", + "import": "./dist/nuxt/index.mjs" + }, + "./resolver": { + "types": "./dist/resolver/index.d.mts", + "import": "./dist/resolver/index.mjs" + } + }, + "main": "./dist/es/index.mjs", + "module": "./dist/es/index.mjs", + "types": "./dist/es/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "./dist/es/index.d.ts" + ], + "nuxt": [ + "./dist/nuxt/index.d.mts", + "./dist/nuxt/index.d.ts" + ] + } + }, + "files": [ + "./LICENSE", + "./README.md", + "./dist" + ], + "peerDependencies": { + "@vueuse/core": ">=10.0.0", + "vue": ">=3.0.0" + }, + "dependencies": { + "framer-motion": "~14.3.0", + "hey-listen": "^1.0.8", + "motion-dom": "~14.3.0", + "motion-utils": "~14.1.1" + }, + "scripts": { + "dev": "vite build --watch", + "prebuild": "cp ../../README.md ./README.md || true", + "build": "rimraf dist && vite build", + "test": "vitest --dom", + "coverage": "vitest run --coverage", + "pub:release": "pnpm publish --access public" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/nostics/dist/formatters/ansi.mjs b/apps/web/.output/server/node_modules/nostics/dist/formatters/ansi.mjs new file mode 100644 index 0000000..2fd7afc --- /dev/null +++ b/apps/web/.output/server/node_modules/nostics/dist/formatters/ansi.mjs @@ -0,0 +1,19 @@ +//#region src/formatters/ansi.ts +/* @__NO_SIDE_EFFECTS__ */ +function ansiFormatter(colors) { + return (d) => { + const header = `${colors.bold(colors.red(`[${d.name}]`))} ${d.message}`; + const details = []; + if (d.fix) details.push(`${colors.dim("fix:")} ${d.fix}`); + if (d.sources?.length) details.push(`${colors.dim("sources:")} ${d.sources.join(", ")}`); + if (d.docs) details.push(`${colors.dim("see:")} ${colors.cyan(d.docs)}`); + if (details.length === 0) return header; + return [header, ...details.map((detail, i) => { + return `${colors.dim(i < details.length - 1 ? "├▶" : "╰▶")} ${detail}`; + })].join("\n"); + }; +} +//#endregion +export { ansiFormatter }; + +//# sourceMappingURL=ansi.mjs.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/nostics/dist/index.mjs b/apps/web/.output/server/node_modules/nostics/dist/index.mjs new file mode 100644 index 0000000..3351dc6 --- /dev/null +++ b/apps/web/.output/server/node_modules/nostics/dist/index.mjs @@ -0,0 +1,194 @@ +//#region src/formatters/plain.ts +/** +* Renders a diagnostic into a multi-line, unicode-decorated string suitable +* for terminal output. The first line is `[<name>] <message>`; optional +* details (`fix`, `sources`, `docs`) follow with `├▶`/`╰▶` connectors. +*/ +function formatDiagnostic(diagnostic) { + const header = `[${diagnostic.name}] ${diagnostic.message}`; + const details = []; + if (diagnostic.fix) details.push(`fix: ${diagnostic.fix}`); + if (diagnostic.sources?.length) details.push(`sources: ${diagnostic.sources.join(", ")}`); + if (diagnostic.docs) details.push(`see: ${diagnostic.docs}`); + if (details.length === 0) return header; + return [header, ...details.map((detail, i) => { + return `${i < details.length - 1 ? "├▶" : "╰▶"} ${detail}`; + })].join("\n"); +} +//#endregion +//#region src/utils.ts +/** +* Transforms a value or a function that returns a value to a value. +* +* @param valFn either a value or a function that returns a value +* @param args arguments to pass to the function if `valFn` is a function +* +* @internal +*/ +function toValueWithArgs(valFn, ...args) { + return typeof valFn === "function" ? valFn(...args) : valFn; +} +//#endregion +//#region src/diagnostic.ts +/** +* Creates a console reporter that renders each diagnostic with `formatter` and +* prints the result via `console[method]`. Both default sensibly (`'warn'` and +* {@link formatDiagnostic}); `method` can also be overridden per call through +* the reporter options. +*/ +/* @__NO_SIDE_EFFECTS__ */ +function createConsoleReporter({ method: defaultMethod = "warn", formatter = formatDiagnostic } = {}) { + return (diagnostic, { method = defaultMethod } = {}) => { + console[method](formatter(diagnostic)); + }; +} +const captureStackTrace = Error.captureStackTrace; +var Diagnostic = class Diagnostic extends Error { + name; + /** + * The diagnostic code, e.g. `MATH_E001`. + * Also appears as the `name` property. + */ + code; + /** + * URL to extended documentation for this diagnostic code. + * Auto-generated from {@link DefineDiagnosticsOptions.docsBase}. + */ + docs; + /** + * Optional actionable instructions on how to resolve the problem. + */ + fix; + /** + * Locations in user code that contributed to this diagnostic, in + * `file:line:column` format. Relevant when the stack trace doesn't reflect + * the user's source (e.g. compilers, bundlers), otherwise redundant with the + * stack and should be omitted. + */ + sources; + /** + * Structured information associated with this diagnostic code. + */ + data; + /** + * Alias for {@link Error.message}: the reason this diagnostic was raised. + */ + get why() { + return this.message; + } + /** + * @param init structured initializer; `why` is required + * @param captureFrom V8 stack-cutoff frame. Defaults to {@link Diagnostic} + * so the top of the trace is the `new Diagnostic(...)` call site. + * `defineDiagnostics` passes its action method to strip its own frames too. + * Ignored on engines without `Error.captureStackTrace`. + */ + constructor(init, captureFrom = Diagnostic) { + super(init.why, { cause: init.cause }); + this.code = this.name = init.code; + this.fix = init.fix; + this.docs = init.docs; + this.sources = init.sources; + this.data = init.data; + captureStackTrace?.(this, captureFrom); + } + /** + * Converts the diagnostic into a serializable structured object. + */ + toJSON() { + return { + name: this.name, + why: this.why, + fix: this.fix, + docs: this.docs, + sources: this.sources, + cause: this.cause, + data: this.data, + stack: this.stack + }; + } +}; +/** +* Resolves the docs URL for a code from a `docsBase` (string template or +* resolver function). Shared by {@link defineDiagnostics} and +* {@link defineProdDiagnostics}. Per-code `docs` overrides are handled by the +* caller; this only covers the `docsBase`-derived case. +* +* @internal +*/ +function deriveDocs(docsBase, code) { + return typeof docsBase === "string" ? `${docsBase}/${code.toLowerCase()}` : docsBase?.(code); +} +/** +* Creates a typed diagnostics object from a set of code definitions. Each +* code becomes a callable {@link DiagnosticHandle}: invoke to report, or +* `throw` the result to raise. No `new` required, no proxy. +*/ +/* @__NO_SIDE_EFFECTS__ */ +function defineDiagnostics(options) { + const reporters = options.reporters ?? []; + const result = {}; + const { docsBase } = options; + for (const code of Object.keys(options.codes)) { + const def = options.codes[code]; + const docs = def.docs === false ? void 0 : def.docs || deriveDocs(docsBase, code); + const handle = (params = {}, reporterOptions = {}) => { + const diagnostic = new Diagnostic({ + code, + why: toValueWithArgs(def.why, params), + fix: toValueWithArgs(def.fix, params), + docs, + cause: params.cause, + sources: params.sources, + data: toValueWithArgs(def.data, params) + }, handle); + for (const reporter of reporters) reporter(diagnostic, reporterOptions); + return diagnostic; + }; + result[code] = handle; + } + return result; +} +//#endregion +//#region src/prod-diagnostics.ts +/** +* Production counterpart to {@link defineDiagnostics}. Returns a `Proxy` that +* builds a minimal {@link Diagnostic} for any accessed code: the code becomes +* the instance `name`, `docs` is derived from `docsBase`, and `why` points to +* the docs URL when one exists (empty otherwise, so the thrown header is just +* the code). It carries no catalog text or data, so it stays tiny in a bundle. +* +* The strip plugin (`@nostics/unplugin`) can rewrite a `defineDiagnostics()` +* call into a `process.env.NODE_ENV === 'production'` ternary that selects this +* factory in production, dropping every `why`/`fix` string from the bundle. +* +* @example +* ```ts +* const diagnostics = defineProdDiagnostics({ docsBase: 'https://docs.example.com' }) +* throw diagnostics.NUXT_B2011() // NUXT_B2011: https://docs.example.com/nuxt_b2011 +* ``` +*/ +/* @__NO_SIDE_EFFECTS__ */ +function defineProdDiagnostics(options = {}) { + const { docsBase, reporters = [] } = options; + return new Proxy({}, { get(_target, code) { + if (typeof code !== "string") return void 0; + const handle = (params = {}, reporterOptions = {}) => { + const docs = deriveDocs(docsBase, code); + const diagnostic = new Diagnostic({ + code, + why: docs ?? "", + docs, + cause: params.cause, + sources: params.sources + }, handle); + for (const reporter of reporters) reporter(diagnostic, reporterOptions); + return diagnostic; + }; + return handle; + } }); +} +//#endregion +export { Diagnostic, createConsoleReporter, defineDiagnostics, defineProdDiagnostics, formatDiagnostic }; + +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/nostics/package.json b/apps/web/.output/server/node_modules/nostics/package.json new file mode 100644 index 0000000..1ffee22 --- /dev/null +++ b/apps/web/.output/server/node_modules/nostics/package.json @@ -0,0 +1,126 @@ +{ + "name": "nostics", + "type": "module", + "version": "1.3.0", + "description": "Structured diagnostic code library", + "author": "Anthony Fu <anthonyfu117@hotmail.com>", + "contributors": [ + "Eduardo San Martin Morote <posva13@gmail.com>", + "Daniel Roe <daniel@roe.dev>" + ], + "license": "MIT", + "homepage": "https://github.com/vercel-labs/nostics#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel-labs/nostics.git" + }, + "bugs": "https://github.com/vercel-labs/nostics/issues", + "keywords": [], + "sideEffects": false, + "exports": { + ".": "./dist/index.mjs", + "./formatters/ansi": "./dist/formatters/ansi.mjs", + "./formatters/json": "./dist/formatters/json.mjs", + "./reporters/dev": "./dist/reporters/dev.mjs", + "./reporters/fetch": "./dist/reporters/fetch.mjs", + "./reporters/node": "./dist/reporters/node.mjs", + "./package.json": "./package.json" + }, + "types": "./dist/index.d.mts", + "files": [ + "dist", + "skills" + ], + "devDependencies": { + "@posva/prompts": "^2.4.4", + "@size-limit/esbuild-why": "^14.0.0", + "@size-limit/preset-small-lib": "^14.0.0", + "@types/node": "^26.6.2", + "@types/semver": "^7.8.0", + "@vitest/coverage-v8": "5.0.1", + "conventional-changelog": "^8.1.3", + "conventional-changelog-angular": "^9.4.0", + "lint-staged": "^17.5.1", + "oxfmt": "^0.68.0", + "oxlint": "^1.80.0", + "oxlint-plugin-posva": "^0.0.2", + "publint": "^0.3.24", + "semver": "^7.8.5", + "simple-git-hooks": "^2.14.0", + "size-limit": "^14.0.0", + "tsdown": "^0.23.0", + "tsnapi": "^1.5.0", + "typescript": "^6.0.0", + "vite": "^8.3.0", + "vitest": "^5.0.1" + }, + "simple-git-hooks": { + "pre-commit": "pnpm i --frozen-lockfile --ignore-scripts --offline && pnpm lint-staged" + }, + "lint-staged": { + "*": [ + "oxfmt --no-error-on-unmatched-pattern", + "oxlint --no-error-on-unmatched-pattern --fix" + ] + }, + "size-limit": [ + { + "name": "defineDiagnostics from source", + "path": "src/index.ts", + "import": "{ defineDiagnostics }" + }, + { + "name": "defineDiagnostics", + "path": "dist/index.mjs", + "import": "{ defineDiagnostics }" + }, + { + "name": "defineProdDiagnostics", + "path": "dist/index.mjs", + "import": "{ defineProdDiagnostics }" + }, + { + "name": "defineDiagnostics + createConsoleReporter", + "path": "dist/index.mjs", + "import": "{ defineDiagnostics, createConsoleReporter }" + }, + { + "name": "defineProdDiagnostics + createConsoleReporter", + "path": "dist/index.mjs", + "import": "{ defineProdDiagnostics, createConsoleReporter }" + }, + { + "name": "formatDiagnostic", + "path": "dist/index.mjs", + "import": "{ formatDiagnostic }" + }, + { + "name": "full root", + "path": "dist/index.mjs", + "import": "*" + }, + { + "name": "ansi formatter", + "path": "dist/formatters/ansi.mjs", + "import": "*" + } + ], + "scripts": { + "build": "tsdown && pnpm --filter \"./packages/*\" run build", + "dev": "vitest", + "docs": "pnpm -C docs run dev", + "docs:build": "pnpm -C docs run build", + "play": "pnpm -C playground run dev", + "lint": "oxlint ${CI:+--deny-warnings} . && oxfmt --check .", + "lint:fix": "oxfmt && oxlint --fix .", + "fmt": "oxfmt", + "release": "node scripts/release.ts", + "size": "size-limit", + "test": "pnpm run build && pnpm run \"/^test:/\"", + "test:unit": "vitest run --coverage", + "test:types": "pnpm run typecheck", + "test:lint": "pnpm run lint", + "test:demo": "pnpm -C demo-lib run build && pnpm -C demo-lib run test && pnpm -C playground run build", + "typecheck": "tsc && pnpm --filter \"./packages/*\" run typecheck" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/pinia/dist/pinia.js b/apps/web/.output/server/node_modules/pinia/dist/pinia.js new file mode 100644 index 0000000..f48442c --- /dev/null +++ b/apps/web/.output/server/node_modules/pinia/dist/pinia.js @@ -0,0 +1,1535 @@ +/*! + * pinia v4.1.0 + * (c) 2026 Eduardo San Martin Morote + * @license MIT + */ +import { computed, effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, isReactive, isReadonly, isRef, isShallow, markRaw, nextTick, onScopeDispose, reactive, ref, toRaw, toRef, toRefs, triggerRef, unref, watch } from "vue"; +import { createConsoleReporter, defineDiagnostics } from "nostics"; +import { setupDevtoolsPlugin } from "@vue/devtools-api"; +//#region src/env.ts +const IS_CLIENT = typeof window !== "undefined"; +//#endregion +//#region src/diagnostics.ts +/** +* Catalog of user-facing Pinia diagnostics. Each handle builds a diagnostic +* and runs the reporters. All call sites are dev-only (`__DEV__` guarded or +* HMR), so production builds drop the calls and tree-shake this catalog. +*/ +const diagnostics = /*#__PURE__*/ defineDiagnostics({ + reporters: [/*#__PURE__*/ createConsoleReporter()], + codes: { + PINIA_R1001: { + why: "Directly pass all stores to \"mapStores()\" without putting them in an array. This will fail in production.", + fix: "Replace mapStores([useAuthStore, useCartStore]) with mapStores(useAuthStore, useCartStore).", + docs: "https://pinia.vuejs.org/cookbook/options-api.html#Giving-access-to-the-whole-store" + }, + PINIA_R1002: { + why: (p) => `A getter cannot have the same name as another state property. Found "${p.name}" in store "${p.id}".`, + fix: "Rename either the getter or the state property.", + docs: "https://pinia.vuejs.org/core-concepts/getters.html#Accessing-other-getters" + }, + PINIA_R1003: { + why: (p) => `The "state" must be a plain object. Found in store "${p.id}".`, + fix: "Return a plain object, e.g. avoid state: () => new MyClass().", + docs: "https://pinia.vuejs.org/core-concepts/state.html#State" + }, + PINIA_R1004: { + why: "Pinia instance not found in context. This falls back to the global activePinia, which exposes you to cross-request pollution on the server.", + fix: "\"useStore()\" is a composable and follows the same rules: call it at the top of setup() (or another composable), or pass the pinia instance explicitly when used outside of a component.", + docs: "https://pinia.vuejs.org/ssr/#Using-the-store-outside-of-setup-" + }, + PINIA_R1005: { + why: (p) => `The store id changed from "${p.from}" to "${p.to}", forcing a reload.`, + docs: "https://pinia.vuejs.org/cookbook/hot-module-replacement.html#HMR-Hot-Module-Replacement-" + }, + PINIA_R1006: { + why: (p) => `Property "${p.key}" of store "${p.id}" is not reactive (not a ref, reactive object, or shallowRef), so storeToRefs() ignores it.`, + fix: "If it should be reactive state, wrap it with ref(), reactive(), or shallowRef(). If it is an intentional non-reactive property, wrap it with markRaw() so storeToRefs() skips it explicitly.", + docs: "https://pinia.vuejs.org/core-concepts/plugins.html#Adding-new-external-properties" + }, + PINIA_R1007: { + why: (p) => `The same callback was passed to "$subscribe()" of store "${p.id}" more than once. Subscriptions are deduplicated, so the duplicate is ignored.`, + fix: "Subscribe each callback only once. If you need to resubscribe, call the returned function to remove the previous subscription first, or create a new function.", + docs: "https://pinia.vuejs.org/core-concepts/state.html#Subscribing-to-the-state" + }, + PINIA_R1008: { + why: (p) => `"$dispose()" was called on an old instance of store "${p.id}" that has already been replaced by a new one. This also removes the new store.`, + fix: "Avoid keeping references to disposed stores. Call the useStore() function again to get the current store.", + docs: "https://pinia.vuejs.org/api/pinia/interfaces/StoreWithState.html#-dispose-" + } + } +}); +//#endregion +//#region src/rootStore.ts +/** +* setActivePinia must be called to handle SSR at the top of functions like +* `fetch`, `setup`, `serverPrefetch` and others +*/ +let activePinia; +/** +* Sets or unsets the active pinia. Used in SSR and internally when calling +* actions and getters +* +* @param pinia - Pinia instance +*/ +const setActivePinia = (pinia) => activePinia = pinia; +/** +* Get the currently active pinia if there is any. +*/ +const getActivePinia = process.env.NODE_ENV !== "production" ? () => { + const pinia = hasInjectionContext() && inject(piniaSymbol); + if (!pinia && !IS_CLIENT) diagnostics.PINIA_R1004({}, { method: "error" }); + return pinia || activePinia; +} : () => hasInjectionContext() && inject(piniaSymbol) || activePinia; +/** +* Get the stores that are currently in use by a pinia instance. Prefer this +* over the internal `pinia._s`: it returns a new array, so it's safe to +* dispose or create stores while iterating over it. +* +* @param pinia - pinia instance +*/ +function getStores(pinia) { + return Array.from(pinia._s.values()); +} +/** +* Symbol used to provide/inject the pinia instance in the app. Used internally +* and exposed for testing purposes and edge cases like storybook. Could break +* in a minor, **USE AT YOUR OWN RISK**. +* +* For context, see: +* - https://github.com/vuejs/pinia/issues/870 +* - https://github.com/vuejs/pinia/pull/2973 +* +* @internal +*/ +const piniaSymbol = process.env.NODE_ENV !== "production" ? Symbol("pinia") : /* istanbul ignore next */ Symbol(); +//#endregion +//#region src/types.ts +function isPlainObject(o) { + return o && typeof o === "object" && Object.prototype.toString.call(o) === "[object Object]" && typeof o.toJSON !== "function"; +} +/** +* Possible types for SubscriptionCallback +*/ +let MutationType = /* @__PURE__ */ function(MutationType) { + /** + * Direct mutation of the state: + * + * - `store.name = 'new name'` + * - `store.$state.name = 'new name'` + * - `store.list.push('new item')` + */ + MutationType["direct"] = "direct"; + /** + * Mutated the state with `$patch` and an object + * + * - `store.$patch({ name: 'newName' })` + */ + MutationType["patchObject"] = "patch object"; + /** + * Mutated the state with `$patch` and a function + * + * - `store.$patch(state => state.name = 'newName')` + */ + MutationType["patchFunction"] = "patch function"; + return MutationType; +}({}); +//#endregion +//#region src/devtools/file-saver.ts +const _global = /*#__PURE__*/ (() => typeof window === "object" && window.window === window ? window : typeof self === "object" && self.self === self ? self : typeof global === "object" && global.global === global ? global : typeof globalThis === "object" ? globalThis : { HTMLElement: null })(); +function bom(blob, { autoBom = false } = {}) { + if (autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) return new Blob([String.fromCharCode(65279), blob], { type: blob.type }); + return blob; +} +function download(url, name, opts) { + const xhr = new XMLHttpRequest(); + xhr.open("GET", url); + xhr.responseType = "blob"; + xhr.onload = function() { + saveAs(xhr.response, name, opts); + }; + xhr.onerror = function() { + console.error("could not download file"); + }; + xhr.send(); +} +function corsEnabled(url) { + const xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + try { + xhr.send(); + } catch (e) {} + return xhr.status >= 200 && xhr.status <= 299; +} +function click(node) { + try { + node.dispatchEvent(new MouseEvent("click")); + } catch (e) { + const evt = new MouseEvent("click", { + bubbles: true, + cancelable: true, + view: window, + detail: 0, + screenX: 80, + screenY: 20, + clientX: 80, + clientY: 20, + ctrlKey: false, + altKey: false, + shiftKey: false, + metaKey: false, + button: 0, + relatedTarget: null + }); + node.dispatchEvent(evt); + } +} +const _navigator = typeof navigator === "object" ? navigator : { userAgent: "" }; +const isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) && /AppleWebKit/.test(_navigator.userAgent) && !/Safari/.test(_navigator.userAgent))(); +const saveAs = !IS_CLIENT ? () => {} : typeof HTMLAnchorElement !== "undefined" && "download" in HTMLAnchorElement.prototype && !isMacOSWebView ? downloadSaveAs : "msSaveOrOpenBlob" in _navigator ? msSaveAs : fileSaverSaveAs; +function downloadSaveAs(blob, name = "download", opts) { + const a = document.createElement("a"); + a.download = name; + a.rel = "noopener"; + if (typeof blob === "string") { + a.href = blob; + if (a.origin !== location.origin) { + if (corsEnabled(a.href)) download(blob, name, opts); + else { + a.target = "_blank"; + click(a); + } + } else click(a); + } else { + a.href = URL.createObjectURL(blob); + setTimeout(function() { + URL.revokeObjectURL(a.href); + }, 4e4); + setTimeout(function() { + click(a); + }, 0); + } +} +function msSaveAs(blob, name = "download", opts) { + if (typeof blob === "string") { + if (corsEnabled(blob)) download(blob, name, opts); + else { + const a = document.createElement("a"); + a.href = blob; + a.target = "_blank"; + setTimeout(function() { + click(a); + }); + } + } else navigator.msSaveOrOpenBlob(bom(blob, opts), name); +} +function fileSaverSaveAs(blob, name, opts, popup) { + popup = popup || open("", "_blank"); + if (popup) popup.document.title = popup.document.body.innerText = "downloading..."; + if (typeof blob === "string") return download(blob, name, opts); + const force = blob.type === "application/octet-stream"; + const isSafari = /constructor/i.test(String(_global.HTMLElement)) || "safari" in _global; + const isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent); + if ((isChromeIOS || force && isSafari || isMacOSWebView) && typeof FileReader !== "undefined") { + const reader = new FileReader(); + reader.onloadend = function() { + let url = reader.result; + if (typeof url !== "string") { + popup = null; + throw new Error("Wrong reader.result type"); + } + url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, "data:attachment/file;"); + if (popup) popup.location.href = url; + else location.assign(url); + popup = null; + }; + reader.readAsDataURL(blob); + } else { + const url = URL.createObjectURL(blob); + if (popup) popup.location.assign(url); + else location.href = url; + popup = null; + setTimeout(function() { + URL.revokeObjectURL(url); + }, 4e4); + } +} +//#endregion +//#region src/devtools/utils.ts +/** +* Shows a toast or console.log +* +* @param message - message to log +* @param type - different color of the tooltip +*/ +function toastMessage(message, type) { + const piniaMessage = "🍍 " + message; + if (type === "error") console.error(piniaMessage); + else if (type === "warn") console.warn(piniaMessage); + else console.debug(piniaMessage); +} +function isPinia(o) { + return "_a" in o && "install" in o; +} +/** +* Detects if a store getter is a writable computed (has a setter) so it can be +* edited from devtools. +*/ +function isWritableComputed(store, key) { + const rawProp = toRaw(store)[key]; + return isRef(rawProp) && !isReadonly(rawProp); +} +//#endregion +//#region src/devtools/actions.ts +/** +* This file contain devtools actions, they are not Pinia actions. +*/ +function checkClipboardAccess() { + if (!("clipboard" in navigator)) { + toastMessage(`Your browser doesn't support the Clipboard API`, "error"); + return true; + } +} +function checkNotFocusedError(error) { + if (error instanceof Error && error.message.toLowerCase().includes("document is not focused")) { + toastMessage("You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.", "warn"); + return true; + } + return false; +} +async function actionGlobalCopyState(pinia) { + if (checkClipboardAccess()) return; + try { + await navigator.clipboard.writeText(JSON.stringify(pinia.state.value)); + toastMessage("Global state copied to clipboard."); + } catch (error) { + if (checkNotFocusedError(error)) return; + toastMessage(`Failed to serialize the state. Check the console for more details.`, "error"); + console.error(error); + } +} +async function actionGlobalPasteState(pinia) { + if (checkClipboardAccess()) return; + try { + loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText())); + toastMessage("Global state pasted from clipboard."); + } catch (error) { + if (checkNotFocusedError(error)) return; + toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, "error"); + console.error(error); + } +} +async function actionGlobalSaveState(pinia) { + try { + saveAs(new Blob([JSON.stringify(pinia.state.value)], { type: "text/plain;charset=utf-8" }), "pinia-state.json"); + } catch (error) { + toastMessage(`Failed to export the state as JSON. Check the console for more details.`, "error"); + console.error(error); + } +} +let fileInput; +function getFileOpener() { + if (!fileInput) { + fileInput = document.createElement("input"); + fileInput.type = "file"; + fileInput.accept = ".json"; + } + function openFile() { + return new Promise((resolve, reject) => { + fileInput.onchange = async () => { + const files = fileInput.files; + if (!files) return resolve(null); + const file = files.item(0); + if (!file) return resolve(null); + return resolve({ + text: await file.text(), + file + }); + }; + fileInput.oncancel = () => resolve(null); + fileInput.onerror = reject; + fileInput.click(); + }); + } + return openFile; +} +async function actionGlobalOpenStateFile(pinia) { + try { + const result = await getFileOpener()(); + if (!result) return; + const { text, file } = result; + loadStoresState(pinia, JSON.parse(text)); + toastMessage(`Global state imported from "${file.name}".`); + } catch (error) { + toastMessage(`Failed to import the state from JSON. Check the console for more details.`, "error"); + console.error(error); + } +} +function loadStoresState(pinia, state) { + for (const key in state) { + const storeState = pinia.state.value[key]; + if (storeState) Object.assign(storeState, state[key]); + else pinia.state.value[key] = state[key]; + } +} +//#endregion +//#region src/devtools/formatting.ts +function formatDisplay(display) { + return { _custom: { display } }; +} +const PINIA_ROOT_LABEL = "🍍 Pinia (root)"; +const PINIA_ROOT_ID = "_root"; +function formatStoreForInspectorTree(store) { + return isPinia(store) ? { + id: PINIA_ROOT_ID, + label: PINIA_ROOT_LABEL + } : { + id: store.$id, + label: store.$id + }; +} +function formatStoreForInspectorState(store) { + if (isPinia(store)) { + const storeNames = Array.from(store._s.keys()); + const storeMap = store._s; + return { + state: storeNames.map((storeId) => ({ + editable: true, + key: storeId, + value: store.state.value[storeId] + })), + getters: storeNames.filter((id) => storeMap.get(id)._getters).map((id) => { + const store = storeMap.get(id); + return { + editable: false, + key: id, + value: store._getters.reduce((getters, key) => { + getters[key] = store[key]; + return getters; + }, {}) + }; + }) + }; + } + const state = { state: Object.keys(store.$state).map((key) => ({ + editable: true, + key, + value: store.$state[key] + })) }; + if (store._getters && store._getters.length) state.getters = store._getters.map((getterName) => ({ + editable: isWritableComputed(store, getterName), + key: getterName, + value: store[getterName] + })); + if (store._customProperties.size) state.customProperties = Array.from(store._customProperties).map((key) => ({ + editable: true, + key, + value: store[key] + })); + return state; +} +function formatEventData(events) { + if (!events) return {}; + if (Array.isArray(events)) return events.reduce((data, event) => { + data.keys.push(event.key); + data.operations.push(event.type); + data.oldValue[event.key] = event.oldValue; + data.newValue[event.key] = event.newValue; + return data; + }, { + oldValue: {}, + keys: [], + operations: [], + newValue: {} + }); + else return { + operation: formatDisplay(events.type), + key: formatDisplay(events.key), + oldValue: events.oldValue, + newValue: events.newValue + }; +} +function formatMutationType(type) { + switch (type) { + case "direct": return "mutation"; + case "patch function": return "$patch"; + case "patch object": return "$patch"; + default: return "unknown"; + } +} +//#endregion +//#region src/devtools/plugin.ts +let isTimelineActive = true; +const componentStateTypes = []; +const MUTATIONS_LAYER_ID = "pinia:mutations"; +const INSPECTOR_ID = "pinia"; +const { assign: assign$1 } = Object; +/** +* Gets the displayed name of a store in devtools +* +* @param id - id of the store +* @returns a formatted string +*/ +const getStoreType = (id) => "🍍 " + id; +/** +* Add the pinia plugin without any store. Allows displaying a Pinia plugin tab +* as soon as it is added to the application. +* +* @param app - Vue application +* @param pinia - pinia instance +*/ +function registerPiniaDevtools(app, pinia) { + setupDevtoolsPlugin({ + id: "dev.esm.pinia", + label: "Pinia 🍍", + logo: "https://pinia.vuejs.org/logo.svg", + packageName: "pinia", + homepage: "https://pinia.vuejs.org", + componentStateTypes, + app + }, (api) => { + if (typeof api.now !== "function") toastMessage("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."); + api.addTimelineLayer({ + id: MUTATIONS_LAYER_ID, + label: `Pinia 🍍`, + color: 15064968 + }); + api.addInspector({ + id: INSPECTOR_ID, + label: "Pinia 🍍", + icon: "storage", + treeFilterPlaceholder: "Search stores", + actions: [ + { + icon: "content_copy", + action: () => { + actionGlobalCopyState(pinia); + }, + tooltip: "Serialize and copy the state" + }, + { + icon: "content_paste", + action: async () => { + await actionGlobalPasteState(pinia); + api.sendInspectorTree(INSPECTOR_ID); + api.sendInspectorState(INSPECTOR_ID); + }, + tooltip: "Replace the state with the content of your clipboard" + }, + { + icon: "save", + action: () => { + actionGlobalSaveState(pinia); + }, + tooltip: "Save the state as a JSON file" + }, + { + icon: "folder_open", + action: async () => { + await actionGlobalOpenStateFile(pinia); + api.sendInspectorTree(INSPECTOR_ID); + api.sendInspectorState(INSPECTOR_ID); + }, + tooltip: "Import the state from a JSON file" + } + ], + nodeActions: [{ + icon: "restore", + tooltip: "Reset the state (with \"$reset\")", + action: (nodeId) => { + const store = pinia._s.get(nodeId); + if (!store) toastMessage(`Cannot reset "${nodeId}" store because it wasn't found.`, "warn"); + else if (typeof store.$reset !== "function") toastMessage(`Cannot reset "${nodeId}" store because it doesn't have a "$reset" method implemented.`, "warn"); + else { + store.$reset(); + toastMessage(`Store "${nodeId}" reset.`); + } + } + }] + }); + api.on.inspectComponent((payload) => { + const proxy = payload.componentInstance && payload.componentInstance.proxy; + if (proxy && proxy._pStores) { + const piniaStores = payload.componentInstance.proxy._pStores; + Object.values(piniaStores).forEach((store) => { + payload.instanceData.state.push({ + type: getStoreType(store.$id), + key: "state", + editable: true, + value: store._isOptionsAPI ? { _custom: { + value: toRaw(store.$state), + actions: [{ + icon: "restore", + tooltip: "Reset the state of this store", + action: () => store.$reset() + }] + } } : Object.keys(store.$state).reduce((state, key) => { + state[key] = store.$state[key]; + return state; + }, {}) + }); + if (store._getters && store._getters.length) payload.instanceData.state.push({ + type: getStoreType(store.$id), + key: "getters", + editable: false, + value: store._getters.reduce((getters, key) => { + try { + getters[key] = store[key]; + } catch (error) { + getters[key] = error; + } + return getters; + }, {}) + }); + }); + } + }); + api.on.getInspectorTree((payload) => { + if (payload.app === app && payload.inspectorId === INSPECTOR_ID) { + let stores = [pinia]; + stores = stores.concat(Array.from(pinia._s.values())); + payload.rootNodes = (payload.filter ? stores.filter((store) => "$id" in store ? store.$id.toLowerCase().includes(payload.filter.toLowerCase()) : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase())) : stores).map(formatStoreForInspectorTree); + } + }); + globalThis.$pinia = pinia; + api.on.getInspectorState((payload) => { + if (payload.app === app && payload.inspectorId === INSPECTOR_ID) { + const inspectedStore = payload.nodeId === "_root" ? pinia : pinia._s.get(payload.nodeId); + if (!inspectedStore) return; + if (inspectedStore) { + if (payload.nodeId !== "_root") globalThis.$store = toRaw(inspectedStore); + payload.state = formatStoreForInspectorState(inspectedStore); + } + } + }); + api.on.editInspectorState((payload) => { + if (payload.app === app && payload.inspectorId === INSPECTOR_ID) { + const inspectedStore = payload.nodeId === "_root" ? pinia : pinia._s.get(payload.nodeId); + if (!inspectedStore) return toastMessage(`store "${payload.nodeId}" not found`, "error"); + const { path } = payload; + if (!isPinia(inspectedStore)) { + if (path.length !== 1 || !inspectedStore._customProperties.has(path[0]) && !isWritableComputed(inspectedStore, path[0]) || path[0] in inspectedStore.$state) path.unshift("$state"); + } else path.unshift("state"); + isTimelineActive = false; + payload.set(inspectedStore, path, payload.state.value); + isTimelineActive = true; + } + }); + api.on.editComponentState((payload) => { + if (payload.type.startsWith("🍍")) { + const storeId = payload.type.replace(/^🍍\s*/, ""); + const store = pinia._s.get(storeId); + if (!store) return toastMessage(`store "${storeId}" not found`, "error"); + const { path } = payload; + if (path[0] !== "state") return toastMessage(`Invalid path for store "${storeId}":\n${path}\nOnly state can be modified.`); + path[0] = "$state"; + isTimelineActive = false; + payload.set(store, path, payload.state.value); + isTimelineActive = true; + } + }); + }); +} +function addStoreToDevtools(app, store) { + if (!componentStateTypes.includes(getStoreType(store.$id))) componentStateTypes.push(getStoreType(store.$id)); + setupDevtoolsPlugin({ + id: "dev.esm.pinia", + label: "Pinia 🍍", + logo: "https://pinia.vuejs.org/logo.svg", + packageName: "pinia", + homepage: "https://pinia.vuejs.org", + componentStateTypes, + app, + settings: { logStoreChanges: { + label: "Notify about new/deleted stores", + type: "boolean", + defaultValue: true + } } + }, (api) => { + const now = typeof api.now === "function" ? api.now.bind(api) : Date.now; + store.$onAction(({ after, onError, name, args }) => { + const groupId = runningActionId++; + api.addTimelineEvent({ + layerId: MUTATIONS_LAYER_ID, + event: { + time: now(), + title: "🛫 " + name, + subtitle: "start", + data: { + store: formatDisplay(store.$id), + action: formatDisplay(name), + args + }, + groupId + } + }); + after((result) => { + activeAction = void 0; + api.addTimelineEvent({ + layerId: MUTATIONS_LAYER_ID, + event: { + time: now(), + title: "🛬 " + name, + subtitle: "end", + data: { + store: formatDisplay(store.$id), + action: formatDisplay(name), + args, + result + }, + groupId + } + }); + }); + onError((error) => { + activeAction = void 0; + api.addTimelineEvent({ + layerId: MUTATIONS_LAYER_ID, + event: { + time: now(), + logType: "error", + title: "💥 " + name, + subtitle: "end", + data: { + store: formatDisplay(store.$id), + action: formatDisplay(name), + args, + error + }, + groupId + } + }); + }); + }, true); + store._customProperties.forEach((name) => { + watch(() => unref(store[name]), (newValue, oldValue) => { + api.notifyComponentUpdate(); + api.sendInspectorState(INSPECTOR_ID); + if (isTimelineActive) api.addTimelineEvent({ + layerId: MUTATIONS_LAYER_ID, + event: { + time: now(), + title: "Change", + subtitle: name, + data: { + newValue, + oldValue + }, + groupId: activeAction + } + }); + }, { deep: true }); + }); + store.$subscribe(({ events, type }, state) => { + api.notifyComponentUpdate(); + api.sendInspectorState(INSPECTOR_ID); + if (!isTimelineActive) return; + const eventData = { + time: now(), + title: formatMutationType(type), + data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)), + groupId: activeAction + }; + if (type === "patch function") eventData.subtitle = "⤵️"; + else if (type === "patch object") eventData.subtitle = "🧩"; + else if (events && !Array.isArray(events)) eventData.subtitle = events.type; + if (events) eventData.data["rawEvent(s)"] = { _custom: { + display: "DebuggerEvent", + type: "object", + tooltip: "raw DebuggerEvent[]", + value: events + } }; + api.addTimelineEvent({ + layerId: MUTATIONS_LAYER_ID, + event: eventData + }); + }, { + detached: true, + flush: "sync" + }); + const hotUpdate = store._hotUpdate; + store._hotUpdate = markRaw((newStore) => { + hotUpdate(newStore); + api.addTimelineEvent({ + layerId: MUTATIONS_LAYER_ID, + event: { + time: now(), + title: "🔥 " + store.$id, + subtitle: "HMR update", + data: { + store: formatDisplay(store.$id), + info: formatDisplay(`HMR update`) + } + } + }); + api.notifyComponentUpdate(); + api.sendInspectorTree(INSPECTOR_ID); + api.sendInspectorState(INSPECTOR_ID); + }); + const { $dispose } = store; + store.$dispose = () => { + $dispose(); + api.notifyComponentUpdate(); + api.sendInspectorTree(INSPECTOR_ID); + api.sendInspectorState(INSPECTOR_ID); + api.getSettings().logStoreChanges && toastMessage(`Disposed "${store.$id}" store 🗑`); + }; + api.notifyComponentUpdate(); + api.sendInspectorTree(INSPECTOR_ID); + api.sendInspectorState(INSPECTOR_ID); + api.getSettings().logStoreChanges && toastMessage(`"${store.$id}" store installed 🆕`); + }); +} +let runningActionId = 0; +let activeAction; +/** +* Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the +* context of all actions, allowing us to set `runningAction` on each access and effectively associating any state +* mutation to the action. +* +* @param store - store to patch +* @param actionNames - list of actionst to patch +*/ +function patchActionForGrouping(store, actionNames, wrapWithProxy) { + const actions = actionNames.reduce((storeActions, actionName) => { + storeActions[actionName] = toRaw(store)[actionName]; + return storeActions; + }, {}); + for (const actionName in actions) store[actionName] = function() { + const _actionId = runningActionId; + const trackedStore = wrapWithProxy ? new Proxy(store, { + get(...args) { + activeAction = _actionId; + return Reflect.get(...args); + }, + set(...args) { + activeAction = _actionId; + return Reflect.set(...args); + } + }) : store; + activeAction = _actionId; + const retValue = actions[actionName].apply(trackedStore, arguments); + activeAction = void 0; + return retValue; + }; +} +/** +* pinia.use(devtoolsPlugin) +*/ +function devtoolsPlugin({ app, store, options }) { + if (store.$id.startsWith("__hot:")) return; + store._isOptionsAPI = !!options.state; + if (!store._p._testing) { + patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI); + const originalHotUpdate = store._hotUpdate; + toRaw(store)._hotUpdate = function(newStore) { + originalHotUpdate.apply(this, arguments); + patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI); + }; + } + addStoreToDevtools(app, store); +} +//#endregion +//#region src/createPinia.ts +/** +* Creates a Pinia instance to be used by the application +*/ +function createPinia() { + const scope = effectScope(true); + const state = scope.run(() => ref({})); + let _p = []; + let toBeInstalled = []; + const pinia = markRaw({ + install(app) { + setActivePinia(pinia); + pinia._a = app; + app.provide(piniaSymbol, pinia); + app.config.globalProperties.$pinia = pinia; + /* istanbul ignore else */ + if ((process.env.NODE_ENV !== "production" || typeof __VUE_PROD_DEVTOOLS__ !== "undefined" && __VUE_PROD_DEVTOOLS__) && !(process.env.NODE_ENV === "test") && IS_CLIENT) registerPiniaDevtools(app, pinia); + toBeInstalled.forEach((plugin) => _p.push(plugin)); + toBeInstalled = []; + }, + use(plugin) { + if (!this._a) toBeInstalled.push(plugin); + else _p.push(plugin); + return this; + }, + _p, + _a: null, + _e: scope, + _s: /* @__PURE__ */ new Map(), + state + }); + if ((process.env.NODE_ENV !== "production" || typeof __VUE_PROD_DEVTOOLS__ !== "undefined" && __VUE_PROD_DEVTOOLS__) && !(process.env.NODE_ENV === "test") && IS_CLIENT && typeof Proxy !== "undefined") pinia.use(devtoolsPlugin); + return pinia; +} +/** +* Dispose a Pinia instance by stopping its effectScope and removing the state, plugins and stores. This is mostly +* useful in tests, with both a testing pinia or a regular pinia and in applications that use multiple pinia instances. +* Once disposed, the pinia instance cannot be used anymore. +* +* @param pinia - pinia instance +*/ +function disposePinia(pinia) { + pinia._e.stop(); + pinia._s.clear(); + pinia._p.splice(0); + pinia.state.value = {}; + pinia._a = null; +} +//#endregion +//#region src/hmr.ts +/** +* Checks if a function is a `StoreDefinition`. +* +* @param fn - object to test +* @returns true if `fn` is a StoreDefinition +*/ +const isUseStore = (fn) => { + return typeof fn === "function" && typeof fn.$id === "string"; +}; +/** +* Mutates in place `newState` with `oldState` to _hot update_ it. It will +* remove any key not existing in `newState` and recursively merge plain +* objects. +* +* @param newState - new state object to be patched +* @param oldState - old state that should be used to patch newState +* @returns - newState +*/ +function patchObject(newState, oldState) { + for (const key in oldState) { + const subPatch = oldState[key]; + if (!(key in newState)) continue; + const targetValue = newState[key]; + if (isPlainObject(targetValue) && isPlainObject(subPatch) && !isRef(subPatch) && !isReactive(subPatch)) newState[key] = patchObject(targetValue, subPatch); + else newState[key] = subPatch; + } + return newState; +} +/** +* Creates an _accept_ function to pass to `import.meta.hot` in Vite applications. +* +* @example +* ```js +* const useUser = defineStore(...) +* if (import.meta.hot) { +* import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot)) +* } +* ``` +* +* @param initialUseStore - return of the defineStore to hot update +* @param hot - `import.meta.hot` +*/ +function acceptHMRUpdate(initialUseStore, hot) { + if (!(process.env.NODE_ENV !== "production")) return () => {}; + return (newModule) => { + const pinia = hot.data.pinia || initialUseStore._pinia; + if (!pinia) return; + hot.data.pinia = pinia; + for (const exportName in newModule) { + const useStore = newModule[exportName]; + if (isUseStore(useStore) && pinia._s.has(useStore.$id)) { + const id = useStore.$id; + if (id !== initialUseStore.$id) { + diagnostics.PINIA_R1005({ + from: initialUseStore.$id, + to: id + }); + return hot.invalidate(); + } + const existingStore = pinia._s.get(id); + if (!existingStore) { + console.log(`[Pinia]: skipping hmr because store doesn't exist yet`); + return; + } + useStore(pinia, existingStore); + } + } + }; +} +//#endregion +//#region src/subscriptions.ts +const noop = () => {}; +function addSubscription(subscriptions, callback, detached, onCleanup = noop) { + subscriptions.add(callback); + const removeSubscription = () => { + subscriptions.delete(callback) && onCleanup(); + }; + if (!detached && getCurrentScope()) onScopeDispose(removeSubscription); + return removeSubscription; +} +function triggerSubscriptions(subscriptions, ...args) { + subscriptions.forEach((callback) => { + callback(...args); + }); +} +//#endregion +//#region src/store.ts +const fallbackRunWithContext = (fn) => fn(); +/** +* Marks a function as an action for `$onAction` +* @internal +*/ +const ACTION_MARKER = Symbol(); +/** +* Action name symbol. Allows to add a name to an action after defining it +* @internal +*/ +const ACTION_NAME = Symbol(); +function mergeReactiveObjects(target, patchToApply) { + if (target instanceof Map && patchToApply instanceof Map) patchToApply.forEach((value, key) => target.set(key, value)); + else if (target instanceof Set && patchToApply instanceof Set) patchToApply.forEach(target.add, target); + for (const key in patchToApply) { + if (!Object.hasOwn(patchToApply, key)) continue; + const subPatch = patchToApply[key]; + const targetValue = target[key]; + if (isPlainObject(targetValue) && isPlainObject(subPatch) && Object.hasOwn(target, key) && !isRef(subPatch) && !isReactive(subPatch)) { + target[key] = mergeReactiveObjects(targetValue, subPatch); + const targetRef = toRaw(target)[key]; + if (isRef(targetRef) && isShallow(targetRef)) triggerRef(targetRef); + } else target[key] = subPatch; + } + return target; +} +const skipHydrateSymbol = process.env.NODE_ENV !== "production" ? Symbol("pinia:skipHydration") : /* istanbul ignore next */ Symbol(); +/** +* Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a +* stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store. +* +* @param obj - target object +* @returns obj +*/ +function skipHydrate(obj) { + return Object.defineProperty(obj, skipHydrateSymbol, {}); +} +/** +* Returns whether a value should be hydrated +* +* @param obj - target variable +* @returns true if `obj` should be hydrated +*/ +function shouldHydrate(obj) { + return !obj || typeof obj !== "object" || !Object.hasOwn(obj, skipHydrateSymbol); +} +const { assign } = Object; +function isComputed(o) { + return !!(isRef(o) && o.effect); +} +function createOptionsStore(id, options, pinia, hot) { + const { state, actions, getters } = options; + const initialState = pinia.state.value[id]; + let store; + function setup() { + if (!initialState && (!(process.env.NODE_ENV !== "production") || !hot)) + /* istanbul ignore if */ + pinia.state.value[id] = state ? state() : {}; + const localState = process.env.NODE_ENV !== "production" && hot ? toRefs(ref(state ? state() : {}).value) : toRefs(pinia.state.value[id]); + return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => { + if (process.env.NODE_ENV !== "production" && name in localState) diagnostics.PINIA_R1002({ + name, + id + }); + computedGetters[name] = markRaw(computed(() => { + setActivePinia(pinia); + const store = pinia._s.get(id); + return getters[name].call(store, store); + })); + return computedGetters; + }, {})); + } + store = createSetupStore(id, setup, options, pinia, hot, true); + return store; +} +function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) { + let scope; + const optionsForPlugin = assign({ actions: {} }, options); + /* istanbul ignore if */ + if (process.env.NODE_ENV !== "production" && !pinia._e.active) throw new Error("Pinia destroyed"); + const $subscribeOptions = { deep: true }; + /* istanbul ignore else */ + if (process.env.NODE_ENV !== "production") $subscribeOptions.onTrigger = (event) => { + /* istanbul ignore else */ + if (isListening) debuggerEvents = event; + else if (isListening === false && !store._hotUpdating) { + /* istanbul ignore else */ + if (Array.isArray(debuggerEvents)) debuggerEvents.push(event); + else console.error("🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug."); + } + }; + let isListening; + let isSyncListening; + let subscriptions = /* @__PURE__ */ new Set(); + let actionSubscriptions = /* @__PURE__ */ new Set(); + let debuggerEvents; + const initialState = pinia.state.value[$id]; + if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== "production") || !hot)) + /* istanbul ignore if */ + pinia.state.value[$id] = {}; + const hotState = /*#__PURE__*/ ref({}); + let activeListener; + function $patch(partialStateOrMutator) { + let subscriptionMutation; + isListening = isSyncListening = false; + /* istanbul ignore else */ + if (process.env.NODE_ENV !== "production") debuggerEvents = []; + if (typeof partialStateOrMutator === "function") { + partialStateOrMutator(pinia.state.value[$id]); + subscriptionMutation = { + type: "patch function", + storeId: $id, + events: debuggerEvents + }; + } else { + mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator); + subscriptionMutation = { + type: "patch object", + payload: partialStateOrMutator, + storeId: $id, + events: debuggerEvents + }; + } + const myListenerId = activeListener = Symbol(); + nextTick().then(() => { + if (activeListener === myListenerId) isListening = true; + }); + isSyncListening = true; + triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]); + } + const $reset = isOptionsStore ? function $reset() { + const { state } = options; + const newState = state ? state() : {}; + this.$patch(($state) => { + assign($state, newState); + }); + } : process.env.NODE_ENV !== "production" ? () => { + throw new Error(`🍍: Store "${$id}" is built using the setup syntax and does not implement $reset().`); + } : noop; + function $dispose() { + scope.stop(); + subscriptions.clear(); + actionSubscriptions.clear(); + if (process.env.NODE_ENV !== "production") { + const registeredStore = pinia._s.get($id); + if (registeredStore && registeredStore !== store) diagnostics.PINIA_R1008({ id: $id }); + } + pinia._s.delete($id); + } + /** + * Helper that wraps function so it can be tracked with $onAction + * @param fn - action to wrap + * @param name - name of the action + */ + const action = (fn, name = "") => { + if (ACTION_MARKER in fn) { + fn[ACTION_NAME] = name; + return fn; + } + const wrappedAction = function() { + setActivePinia(pinia); + const args = Array.from(arguments); + const afterCallbackSet = /* @__PURE__ */ new Set(); + const onErrorCallbackSet = /* @__PURE__ */ new Set(); + function after(callback) { + afterCallbackSet.add(callback); + } + function onError(callback) { + onErrorCallbackSet.add(callback); + } + triggerSubscriptions(actionSubscriptions, { + args, + name: wrappedAction[ACTION_NAME], + store, + after, + onError + }); + let ret; + try { + ret = fn.apply(this && this.$id === $id ? this : store, args); + } catch (error) { + triggerSubscriptions(onErrorCallbackSet, error); + throw error; + } + if (ret instanceof Promise) return ret.then((value) => { + triggerSubscriptions(afterCallbackSet, value); + return value; + }).catch((error) => { + triggerSubscriptions(onErrorCallbackSet, error); + return Promise.reject(error); + }); + triggerSubscriptions(afterCallbackSet, ret); + return ret; + }; + wrappedAction[ACTION_MARKER] = true; + wrappedAction[ACTION_NAME] = name; + return wrappedAction; + }; + const _hmrPayload = /*#__PURE__*/ markRaw({ + actions: {}, + getters: {}, + state: [], + stateKeys: {}, + hotState + }); + const partialStore = { + _p: pinia, + $id, + $onAction: addSubscription.bind(null, actionSubscriptions), + $patch, + $reset, + $subscribe(callback, options = {}) { + if (subscriptions.has(callback)) { + if (process.env.NODE_ENV !== "production") diagnostics.PINIA_R1007({ id: $id }); + return noop; + } + const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher()); + const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => { + if (options.flush === "sync" ? isSyncListening : isListening) callback({ + storeId: $id, + type: "direct", + events: debuggerEvents + }, state); + }, assign({}, $subscribeOptions, options))); + return removeSubscription; + }, + $dispose + }; + const store = reactive(process.env.NODE_ENV !== "production" || (process.env.NODE_ENV !== "production" || typeof __VUE_PROD_DEVTOOLS__ !== "undefined" && __VUE_PROD_DEVTOOLS__) && !(process.env.NODE_ENV === "test") && IS_CLIENT ? assign({ + _hmrPayload, + _customProperties: markRaw(/* @__PURE__ */ new Set()) + }, partialStore) : partialStore); + pinia._s.set($id, store); + const setupStore = (pinia._a && pinia._a.runWithContext || fallbackRunWithContext)(() => pinia._e.run(() => (scope = effectScope()).run(() => setup({ action })))); + for (const key in setupStore) { + const prop = setupStore[key]; + if (isRef(prop) && !isComputed(prop) || isReactive(prop)) { + if (process.env.NODE_ENV !== "production" && hot) hotState.value[key] = toRef(setupStore, key); + else if (!isOptionsStore) { + if (initialState && shouldHydrate(prop)) { + if (isRef(prop)) prop.value = initialState[key]; + else { + if (prop instanceof Set || prop instanceof Map) prop.clear(); + mergeReactiveObjects(prop, initialState[key]); + } + } + pinia.state.value[$id][key] = prop; + } + /* istanbul ignore else */ + if (process.env.NODE_ENV !== "production") { + _hmrPayload.state.push(key); + const stateValue = isRef(prop) ? prop.value : prop; + if (isPlainObject(stateValue) && !(isRef(prop) && isShallow(prop))) _hmrPayload.stateKeys[key] = Object.keys(stateValue); + } + } else if (typeof prop === "function") { + setupStore[key] = process.env.NODE_ENV !== "production" && hot ? prop : action(prop, key); + /* istanbul ignore else */ + if (process.env.NODE_ENV !== "production") _hmrPayload.actions[key] = prop; + optionsForPlugin.actions[key] = prop; + } else if (process.env.NODE_ENV !== "production") { + if (isComputed(prop)) { + _hmrPayload.getters[key] = isOptionsStore ? options.getters[key] : prop; + if (IS_CLIENT) (setupStore._getters || (setupStore._getters = markRaw([]))).push(key); + } + } + } + /* istanbul ignore if */ + assign(store, setupStore); + assign(toRaw(store), setupStore); + Object.defineProperty(store, "$state", { + get: () => process.env.NODE_ENV !== "production" && hot ? hotState.value : pinia.state.value[$id], + set: (state) => { + /* istanbul ignore if */ + if (process.env.NODE_ENV !== "production" && hot) throw new Error("cannot set hotState"); + $patch(($state) => { + assign($state, state); + }); + } + }); + /* istanbul ignore else */ + if (process.env.NODE_ENV !== "production") store._hotUpdate = markRaw((newStore) => { + store._hotUpdating = true; + newStore._hmrPayload.state.forEach((stateKey) => { + if (stateKey in store.$state) { + const newStateTarget = newStore.$state[stateKey]; + const oldStateSource = store.$state[stateKey]; + const newStoreProperty = toRaw(newStore)[stateKey]; + if (!(isRef(newStoreProperty) && isShallow(newStoreProperty))) { + if (Object.hasOwn(newStore._hmrPayload.stateKeys, stateKey) && typeof newStateTarget === "object" && isPlainObject(newStateTarget) && isPlainObject(oldStateSource)) { + if (isShallow(newStoreProperty)) { + for (const key in oldStateSource) if (Object.hasOwn(oldStateSource, key) && key in newStateTarget) newStateTarget[key] = oldStateSource[key]; + triggerRef(newStoreProperty); + } else patchObject(newStateTarget, oldStateSource); + const oldStateKeys = store._hmrPayload.stateKeys[stateKey]; + if (oldStateKeys) { + for (const key in oldStateSource) if (Object.hasOwn(oldStateSource, key) && !oldStateKeys.includes(key)) newStateTarget[key] = oldStateSource[key]; + } + if (isShallow(newStoreProperty)) triggerRef(newStoreProperty); + } else newStore.$state[stateKey] = oldStateSource; + } + } + store[stateKey] = toRef(newStore.$state, stateKey); + }); + Object.keys(store.$state).forEach((stateKey) => { + if (!(stateKey in newStore.$state)) delete store[stateKey]; + }); + isListening = false; + isSyncListening = false; + pinia.state.value[$id] = toRef(newStore._hmrPayload, "hotState"); + isSyncListening = true; + nextTick().then(() => { + isListening = true; + }); + for (const actionName in newStore._hmrPayload.actions) { + const actionFn = newStore[actionName]; + store[actionName] = action(actionFn, actionName); + } + for (const getterName in newStore._hmrPayload.getters) { + const getter = newStore._hmrPayload.getters[getterName]; + const getterValue = isOptionsStore ? computed(() => { + setActivePinia(pinia); + return getter.call(store, store); + }) : getter; + store[getterName] = getterValue; + } + Object.keys(store._hmrPayload.getters).forEach((key) => { + if (!(key in newStore._hmrPayload.getters)) delete store[key]; + }); + Object.keys(store._hmrPayload.actions).forEach((key) => { + if (!(key in newStore._hmrPayload.actions)) delete store[key]; + }); + store._hmrPayload = newStore._hmrPayload; + store._getters = newStore._getters; + store._hotUpdating = false; + }); + if ((process.env.NODE_ENV !== "production" || typeof __VUE_PROD_DEVTOOLS__ !== "undefined" && __VUE_PROD_DEVTOOLS__) && !(process.env.NODE_ENV === "test") && IS_CLIENT) { + const nonEnumerable = { + writable: true, + configurable: true, + enumerable: false + }; + [ + "_p", + "_hmrPayload", + "_getters", + "_customProperties" + ].forEach((p) => { + Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable)); + }); + } + pinia._p.forEach((extender) => { + const extensions = scope.run(() => extender({ + store, + app: pinia._a, + pinia, + options: optionsForPlugin + })); + /* istanbul ignore else */ + if ((process.env.NODE_ENV !== "production" || typeof __VUE_PROD_DEVTOOLS__ !== "undefined" && __VUE_PROD_DEVTOOLS__) && !(process.env.NODE_ENV === "test") && IS_CLIENT) Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key)); + if (process.env.NODE_ENV !== "production") for (const key in extensions) { + const value = extensions[key]; + if (typeof value === "object" && !isRef(value) && !isReactive(value) && !value?.__v_skip) diagnostics.PINIA_R1006({ + key, + id: $id + }); + } + assign(store, extensions); + }); + if (process.env.NODE_ENV !== "production" && store.$state && typeof store.$state === "object" && typeof store.$state.constructor === "function" && !store.$state.constructor.toString().includes("[native code]")) diagnostics.PINIA_R1003({ id: store.$id }); + if (initialState && isOptionsStore && options.hydrate) options.hydrate(store.$state, initialState); + isListening = true; + isSyncListening = true; + return store; +} +/*! #__NO_SIDE_EFFECTS__ */ +function defineStore(id, setup, setupOptions) { + let options; + const isSetupStore = typeof setup === "function"; + options = isSetupStore ? setupOptions : setup; + function useStore(pinia, hot) { + const hasContext = hasInjectionContext(); + pinia = (process.env.NODE_ENV === "test" && activePinia && activePinia._testing ? null : pinia) || (hasContext ? inject(piniaSymbol, null) : null); + if (pinia) setActivePinia(pinia); + if (process.env.NODE_ENV !== "production" && !activePinia) throw new Error("[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\nSee https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\nThis will fail in production."); + pinia = activePinia; + if (!pinia._s.has(id)) { + if (isSetupStore) createSetupStore(id, setup, options, pinia); + else createOptionsStore(id, options, pinia); + /* istanbul ignore else */ + if (process.env.NODE_ENV !== "production") useStore._pinia = pinia; + } + const store = pinia._s.get(id); + if (process.env.NODE_ENV !== "production" && hot) { + const hotId = "__hot:" + id; + const newStore = isSetupStore ? createSetupStore(hotId, setup, options, pinia, true) : createOptionsStore(hotId, assign({}, options), pinia, true); + hot._hotUpdate(newStore); + delete pinia.state.value[hotId]; + pinia._s.delete(hotId); + } + if (process.env.NODE_ENV !== "production" && IS_CLIENT) { + const currentInstance = getCurrentInstance(); + if (currentInstance && currentInstance.proxy && !hot) { + const vm = currentInstance.proxy; + const cache = "_pStores" in vm ? vm._pStores : vm._pStores = {}; + cache[id] = store; + } + } + return store; + } + useStore.$id = id; + return useStore; +} +//#endregion +//#region src/mapHelpers.ts +let mapStoreSuffix = "Store"; +/** +* Changes the suffix added by `mapStores()`. Can be set to an empty string. +* Defaults to `"Store"`. Make sure to extend the MapStoresCustomization +* interface if you are using TypeScript. +* +* @param suffix - new suffix +*/ +function setMapStoreSuffix(suffix) { + mapStoreSuffix = suffix; +} +/** +* Allows using stores without the composition API (`setup()`) by generating an +* object to be spread in the `computed` field of a component. It accepts a list +* of store definitions. +* +* @example +* ```js +* export default { +* computed: { +* // other computed properties +* ...mapStores(useUserStore, useCartStore) +* }, +* +* created() { +* this.userStore // store with id "user" +* this.cartStore // store with id "cart" +* } +* } +* ``` +* +* @param stores - list of stores to map to an object +*/ +function mapStores(...stores) { + if (process.env.NODE_ENV !== "production" && Array.isArray(stores[0])) { + diagnostics.PINIA_R1001(); + stores = stores[0]; + } + return stores.reduce((reduced, useStore) => { + reduced[useStore.$id + mapStoreSuffix] = function() { + return useStore(this.$pinia); + }; + return reduced; + }, {}); +} +/** +* Allows using state and getters from one store without using the composition +* API (`setup()`) by generating an object to be spread in the `computed` field +* of a component. +* +* @param useStore - store to map from +* @param keysOrMapper - array or object +*/ +function mapState(useStore, keysOrMapper) { + return Array.isArray(keysOrMapper) ? keysOrMapper.reduce((reduced, key) => { + reduced[key] = function() { + return useStore(this.$pinia)[key]; + }; + return reduced; + }, {}) : Object.keys(keysOrMapper).reduce((reduced, key) => { + reduced[key] = function() { + const store = useStore(this.$pinia); + const storeKey = keysOrMapper[key]; + return typeof storeKey === "function" ? storeKey.call(this, store) : store[storeKey]; + }; + return reduced; + }, {}); +} +/** +* Alias for `mapState()`. You should use `mapState()` instead. +* @deprecated use `mapState()` instead. +*/ +const mapGetters = mapState; +/** +* Allows directly using actions from your store without using the composition +* API (`setup()`) by generating an object to be spread in the `methods` field +* of a component. +* +* @param useStore - store to map from +* @param keysOrMapper - array or object +*/ +function mapActions(useStore, keysOrMapper) { + return Array.isArray(keysOrMapper) ? keysOrMapper.reduce((reduced, key) => { + reduced[key] = function(...args) { + return useStore(this.$pinia)[key](...args); + }; + return reduced; + }, {}) : Object.keys(keysOrMapper).reduce((reduced, key) => { + reduced[key] = function(...args) { + return useStore(this.$pinia)[keysOrMapper[key]](...args); + }; + return reduced; + }, {}); +} +/** +* Allows using state and getters from one store without using the composition +* API (`setup()`) by generating an object to be spread in the `computed` field +* of a component. +* +* @param useStore - store to map from +* @param keysOrMapper - array or object +*/ +function mapWritableState(useStore, keysOrMapper) { + return Array.isArray(keysOrMapper) ? keysOrMapper.reduce((reduced, key) => { + reduced[key] = { + get() { + return useStore(this.$pinia)[key]; + }, + set(value) { + return useStore(this.$pinia)[key] = value; + } + }; + return reduced; + }, {}) : Object.keys(keysOrMapper).reduce((reduced, key) => { + reduced[key] = { + get() { + return useStore(this.$pinia)[keysOrMapper[key]]; + }, + set(value) { + return useStore(this.$pinia)[keysOrMapper[key]] = value; + } + }; + return reduced; + }, {}); +} +//#endregion +//#region src/storeToRefs.ts +/** +* Creates an object of references with all the state, getters, and plugin-added +* state properties of the store. Similar to `toRefs()` but specifically +* designed for Pinia stores so methods and non reactive properties are +* completely ignored. +* +* @param store - store to extract the refs from +*/ +function storeToRefs(store) { + const rawStore = toRaw(store); + const refs = {}; + for (const key in rawStore) { + const value = rawStore[key]; + if (value?.effect) refs[key] = computed({ + get: () => store[key], + set(value) { + store[key] = value; + } + }); + else if (isRef(value) || isReactive(value)) refs[key] = toRef(store, key); + } + return refs; +} +//#endregion +export { MutationType, acceptHMRUpdate, createPinia, defineStore, disposePinia, getActivePinia, getStores, mapActions, mapGetters, mapState, mapStores, mapWritableState, piniaSymbol, setActivePinia, setMapStoreSuffix, shouldHydrate, skipHydrate, storeToRefs }; diff --git a/apps/web/.output/server/node_modules/pinia/package.json b/apps/web/.output/server/node_modules/pinia/package.json new file mode 100644 index 0000000..955a10f --- /dev/null +++ b/apps/web/.output/server/node_modules/pinia/package.json @@ -0,0 +1,82 @@ +{ + "name": "pinia", + "version": "4.1.0", + "description": "Intuitive, type safe and flexible Store for Vue", + "keywords": [ + "api", + "composition", + "pigna", + "pinia", + "piña", + "safe", + "setup", + "store", + "ts", + "type", + "typed", + "typescript", + "vue", + "vuex" + ], + "homepage": "https://pinia.vuejs.org", + "bugs": { + "url": "https://github.com/vuejs/pinia/issues" + }, + "license": "MIT", + "author": { + "name": "Eduardo San Martin Morote", + "email": "posva13@gmail.com" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/pinia.git" + }, + "funding": "https://github.com/sponsors/posva", + "files": [ + "LICENSE", + "README.md", + "dist/*.js", + "dist/*.mjs", + "dist/pinia.d.ts" + ], + "type": "module", + "sideEffects": false, + "types": "dist/pinia.d.ts", + "unpkg": "dist/pinia.iife.js", + "jsdelivr": "dist/pinia.iife.js", + "exports": { + ".": "./dist/pinia.js", + "./package.json": "./package.json" + }, + "dependencies": { + "nostics": "^1.2.0" + }, + "devDependencies": { + "@vue/devtools-api": "^8.2.1", + "@vue/test-utils": "^2.4.11", + "tsdown": "^0.22.14" + }, + "peerDependencies": { + "@vue/devtools-api": "^8.2.1", + "typescript": ">=5.6.0", + "vue": "^3.5.11" + }, + "peerDependenciesMeta": { + "@vue/devtools-api": { + "optional": false + }, + "typescript": { + "optional": true + } + }, + "inlinedDependencies": { + "nostics": "1.2.0" + }, + "scripts": { + "build": "tsdown", + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . -l pinia -r 1", + "test:dist": "node ./__tests__/dist-import.mjs", + "test:dts": "tsc -p ./test-dts/tsconfig.json", + "test": "pnpm run build && pnpm test:dts && pnpm test:dist" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/array-set.js b/apps/web/.output/server/node_modules/source-map-js/lib/array-set.js new file mode 100644 index 0000000..fbd5c81 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/array-set.js @@ -0,0 +1,121 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +exports.ArraySet = ArraySet; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js b/apps/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js new file mode 100644 index 0000000..612b404 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js @@ -0,0 +1,140 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = require('./base64'); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/base64.js b/apps/web/.output/server/node_modules/source-map-js/lib/base64.js new file mode 100644 index 0000000..8aa86b3 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/base64.js @@ -0,0 +1,67 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/binary-search.js b/apps/web/.output/server/node_modules/source-map-js/lib/binary-search.js new file mode 100644 index 0000000..010ac94 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/binary-search.js @@ -0,0 +1,111 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/mapping-list.js b/apps/web/.output/server/node_modules/source-map-js/lib/mapping-list.js new file mode 100644 index 0000000..06d1274 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/mapping-list.js @@ -0,0 +1,79 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +exports.MappingList = MappingList; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/quick-sort.js b/apps/web/.output/server/node_modules/source-map-js/lib/quick-sort.js new file mode 100644 index 0000000..c9ffe55 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/quick-sort.js @@ -0,0 +1,141 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +function SortTemplate(comparator) { + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot, false) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + + return doQuickSort; +} + +function cloneSort(comparator) { + let template = SortTemplate.toString(); + let templateFn = new Function(`return ${template}`)(); + return templateFn(comparator); +} + +let isEvalAllowed = (function () { + try { + new Function('return 0')(); + return true; + } catch { + return false; + } +})(); + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + +let sortCache = new WeakMap(); +exports.quickSort = function (ary, comparator, start = 0) { + let doQuickSort = isEvalAllowed ? sortCache.get(comparator) : SortTemplate(comparator); + if (doQuickSort === void 0) { + doQuickSort = cloneSort(comparator); + sortCache.set(comparator, doQuickSort); + } + doQuickSort(ary, comparator, start, ary.length - 1); +}; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js b/apps/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js new file mode 100644 index 0000000..b7d524b --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js @@ -0,0 +1,1236 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var binarySearch = require('./binary-search'); +var ArraySet = require('./array-set').ArraySet; +var base64VLQ = require('./base64-vlq'); +var quickSort = require('./quick-sort').quickSort; + +// Upper bound for a section's `offset.line` in an indexed source map. A flat +// map spends one ';' per generated line, so a tiny indexed map with a huge +// offset.line turns into a huge amount of work and memory once its mappings +// are copied into a SourceMapGenerator (CVE-2026-93749). Ten million lines is +// far beyond any real generated file. Columns are VLQ-encoded as deltas and +// don't amplify, so they only need to be valid integers. +var MAX_SECTION_OFFSET_LINE = 1e7; + +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +} + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + var boundCallback = aCallback.bind(context); + var names = this._names; + var sources = this._sources; + var sourceMapURL = this._sourceMapURL; + + for (var i = 0, n = mappings.length; i < n; i++) { + var mapping = mappings[i]; + var source = mapping.source === null ? null : sources.at(mapping.source); + if(source !== null) { + source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + } + boundCallback({ + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : names.at(mapping.name) + }); + } + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; +}; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + +const compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine; +function sortGenerated(array, start) { + let l = array.length; + let n = array.length - start; + if (n <= 1) { + return; + } else if (n == 2) { + let a = array[start]; + let b = array[start + 1]; + if (compareGenerated(a, b) > 0) { + array[start] = b; + array[start + 1] = a; + } + } else if (n < 20) { + for (let i = start; i < l; i++) { + for (let j = i; j > start; j--) { + let a = array[j - 1]; + let b = array[j]; + if (compareGenerated(a, b) <= 0) { + break; + } + array[j - 1] = b; + array[j] = a; + } + } + } else { + quickSort(array, compareGenerated, start); + } +} +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + let subarrayStart = 0; + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + + sortGenerated(generatedMappings, subarrayStart); + subarrayStart = generatedMappings.length; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + let currentSource = mapping.source; + while (originalMappings.length <= currentSource) { + originalMappings.push(null); + } + if (originalMappings[currentSource] === null) { + originalMappings[currentSource] = []; + } + originalMappings[currentSource].push(mapping); + } + } + } + + sortGenerated(generatedMappings, subarrayStart); + this.__generatedMappings = generatedMappings; + + for (var i = 0; i < originalMappings.length; i++) { + if (originalMappings[i] != null) { + quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource); + } + } + this.__originalMappings = [].concat(...originalMappings); + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + var maxOffsetLine = 0; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (!isValidOffset(offsetLine) || !isValidOffset(offsetColumn)) { + throw new Error('Section offset line and column must be non-negative integers.'); + } + if (offsetLine > MAX_SECTION_OFFSET_LINE) { + throw new Error('Section offset line must not exceed ' + MAX_SECTION_OFFSET_LINE + '.'); + } + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + var consumer = new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL); + + // Offsets of a nested indexed map add up with this one, so apply the + // bound to the total. + var totalOffsetLine = offsetLine + (consumer._maxOffsetLine || 0); + if (totalOffsetLine > MAX_SECTION_OFFSET_LINE) { + throw new Error('Section offset line must not exceed ' + MAX_SECTION_OFFSET_LINE + + ', including offsets of nested sections.'); + } + if (totalOffsetLine > maxOffsetLine) { + maxOffsetLine = totalOffsetLine; + } + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: consumer + } + }); + + // The largest offset.line of any section, including nested sections. + this._maxOffsetLine = maxOffsetLine; +} + +/** + * Section offsets come from untrusted input and are used as line/column + * numbers, so only accept non-negative safe integers (rejects NaN, Infinity, + * strings, fractions, etc). + */ +function isValidOffset(aValue) { + return typeof aValue === 'number' && + aValue >= 0 && + aValue <= 9007199254740991 && // Number.MAX_SAFE_INTEGER + Math.floor(aValue) === aValue; +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + // Read the getter once per section: for a nested indexed map it is + // itself this getter, and re-reading it per item is exponential in the + // nesting depth (CVE-2026-93749). + var sectionSources = this._sections[i].consumer.sources; + for (var j = 0; j < sectionSources.length; j++) { + sources.push(sectionSources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content || content === '') { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + if(source !== null) { + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js b/apps/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js new file mode 100644 index 0000000..0e247d2 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js @@ -0,0 +1,446 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = require('./base64-vlq'); +var util = require('./util'); +var ArraySet = require('./array-set').ArraySet; +var MappingList = require('./mapping-list').MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, { + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + })); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + if (this._validateMapping(generated, original, source, name) === false) { + return; + } + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + var message = 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + + if (this._ignoreInvalidMapping) { + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + return false; + } else { + throw new Error(message); + } + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + var message = 'Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + }); + + if (this._ignoreInvalidMapping) { + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + return false; + } else { + throw new Error(message) + } + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + // One ';' per skipped line. Build large gaps with a single flat + // string: appending ';' one by one creates a rope node per line, which + // can exhaust the heap for a big gap (CVE-2026-93749). + var lineDelta = mapping.generatedLine - previousGeneratedLine; + next += lineDelta === 1 ? ';' : ';'.repeat(lineDelta); + previousGeneratedLine = mapping.generatedLine; + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/source-node.js b/apps/web/.output/server/node_modules/source-map-js/lib/source-node.js new file mode 100644 index 0000000..c89fe74 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/source-node.js @@ -0,0 +1,420 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; +var util = require('./util'); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + if (remainingLinesIndex >= remainingLines.length) { + // The generated code is exhausted. Skip the rest instead of adding + // empty lines one by one: a mapping may point far past the end of + // the code (e.g. an indexed map section with a huge offset.line). + lastGeneratedLine = mapping.generatedLine; + break; + } + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; diff --git a/apps/web/.output/server/node_modules/source-map-js/lib/util.js b/apps/web/.output/server/node_modules/source-map-js/lib/util.js new file mode 100644 index 0000000..430e2d0 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/lib/util.js @@ -0,0 +1,594 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +var MAX_CACHED_INPUTS = 32; + +/** + * Takes some function `f(input) -> result` and returns a memoized version of + * `f`. + * + * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The + * memoization is a dumb-simple, linear least-recently-used cache. + */ +function lruMemoize(f) { + var cache = []; + + return function(input) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + var temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + + var result = f(input); + + cache.unshift({ + input, + result, + }); + + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + + return result; + }; +} + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +var normalize = lruMemoize(function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + // Split the path into parts between `/` characters. This is much faster than + // using `.split(/\/+/g)`. + var parts = []; + var start = 0; + var i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +}); +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { + var cmp + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; diff --git a/apps/web/.output/server/node_modules/source-map-js/package.json b/apps/web/.output/server/node_modules/source-map-js/package.json new file mode 100644 index 0000000..4e4dcb4 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/package.json @@ -0,0 +1,71 @@ +{ + "name": "source-map-js", + "description": "Generates and consumes source maps", + "version": "1.2.2", + "homepage": "https://github.com/7rulnik/source-map-js", + "author": "Valentin 7rulnik Semirulnik <v7rulnik@gmail.com>", + "contributors": [ + "Nick Fitzgerald <nfitzgerald@mozilla.com>", + "Tobias Koppers <tobias.koppers@googlemail.com>", + "Duncan Beevers <duncan@dweebd.com>", + "Stephen Crane <scrane@mozilla.com>", + "Ryan Seddon <seddon.ryan@gmail.com>", + "Miles Elam <miles.elam@deem.com>", + "Mihai Bazon <mihai.bazon@gmail.com>", + "Michael Ficarra <github.public.email@michael.ficarra.me>", + "Todd Wolfson <todd@twolfson.com>", + "Alexander Solovyov <alexander@solovyov.net>", + "Felix Gnass <fgnass@gmail.com>", + "Conrad Irwin <conrad.irwin@gmail.com>", + "usrbincc <usrbincc@yahoo.com>", + "David Glasser <glasser@davidglasser.net>", + "Chase Douglas <chase@newrelic.com>", + "Evan Wallace <evan.exe@gmail.com>", + "Heather Arthur <fayearthur@gmail.com>", + "Hugh Kennedy <hughskennedy@gmail.com>", + "David Glasser <glasser@davidglasser.net>", + "Simon Lydell <simon.lydell@gmail.com>", + "Jmeas Smith <jellyes2@gmail.com>", + "Michael Z Goddard <mzgoddard@gmail.com>", + "azu <azu@users.noreply.github.com>", + "John Gozde <john@gozde.ca>", + "Adam Kirkton <akirkton@truefitinnovation.com>", + "Chris Montgomery <christopher.montgomery@dowjones.com>", + "J. Ryan Stinnett <jryans@gmail.com>", + "Jack Herrington <jherrington@walmartlabs.com>", + "Chris Truter <jeffpalentine@gmail.com>", + "Daniel Espeset <daniel@danielespeset.com>", + "Jamie Wong <jamie.lf.wong@gmail.com>", + "Eddy Bruël <ejpbruel@mozilla.com>", + "Hawken Rives <hawkrives@gmail.com>", + "Gilad Peleg <giladp007@gmail.com>", + "djchie <djchie.dev@gmail.com>", + "Gary Ye <garysye@gmail.com>", + "Nicolas Lalevée <nicolas.lalevee@hibnet.org>" + ], + "repository": "7rulnik/source-map-js", + "main": "./source-map.js", + "files": [ + "source-map.js", + "source-map.d.ts", + "lib/" + ], + "engines": { + "node": ">=0.10.0" + }, + "license": "BSD-3-Clause", + "scripts": { + "test": "npm run build && node test/run-tests.js", + "build": "webpack --color", + "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" + }, + "devDependencies": { + "clean-publish": "^3.1.0", + "doctoc": "^0.15.0", + "webpack": "^1.12.0" + }, + "clean-publish": { + "cleanDocs": true + }, + "typings": "source-map.d.ts" +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/source-map-js/source-map.js b/apps/web/.output/server/node_modules/source-map-js/source-map.js new file mode 100644 index 0000000..bc88fe8 --- /dev/null +++ b/apps/web/.output/server/node_modules/source-map-js/source-map.js @@ -0,0 +1,8 @@ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; +exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; +exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/apps/web/.output/server/node_modules/ufo/dist/index.mjs b/apps/web/.output/server/node_modules/ufo/dist/index.mjs new file mode 100644 index 0000000..d629858 --- /dev/null +++ b/apps/web/.output/server/node_modules/ufo/dist/index.mjs @@ -0,0 +1,645 @@ +const n = /[^\0-\x7E]/; +const t = /[\x2E\u3002\uFF0E\uFF61]/g; +const o = { + overflow: "Overflow Error", + "not-basic": "Illegal Input", + "invalid-input": "Invalid Input" +}; +const e = Math.floor; +const r = String.fromCharCode; +function s(n2) { + throw new RangeError(o[n2]); +} +const c = function(n2, t2) { + return n2 + 22 + 75 * (n2 < 26) - ((t2 != 0) << 5); +}; +const u = function(n2, t2, o2) { + let r2 = 0; + for (n2 = o2 ? e(n2 / 700) : n2 >> 1, n2 += e(n2 / t2); n2 > 455; r2 += 36) { + n2 = e(n2 / 35); + } + return e(r2 + 36 * n2 / (n2 + 38)); +}; +function toASCII(o2) { + return (function(n2, o3) { + const e2 = n2.split("@"); + let r2 = ""; + e2.length > 1 && (r2 = e2[0] + "@", n2 = e2[1]); + const s2 = (function(n3, t2) { + const o4 = []; + let e3 = n3.length; + for (; e3--; ) { + o4[e3] = t2(n3[e3]); + } + return o4; + })((n2 = n2.replace(t, ".")).split("."), o3).join("."); + return r2 + s2; + })(o2, function(t2) { + return n.test(t2) ? "xn--" + (function(n2) { + const t3 = []; + const o3 = (n2 = (function(n3) { + const t4 = []; + let o4 = 0; + const e2 = n3.length; + for (; o4 < e2; ) { + const r2 = n3.charCodeAt(o4++); + if (r2 >= 55296 && r2 <= 56319 && o4 < e2) { + const e3 = n3.charCodeAt(o4++); + (64512 & e3) == 56320 ? t4.push(((1023 & r2) << 10) + (1023 & e3) + 65536) : (t4.push(r2), o4--); + } else { + t4.push(r2); + } + } + return t4; + })(n2)).length; + let f = 128; + let i = 0; + let l = 72; + for (const o4 of n2) { + o4 < 128 && t3.push(r(o4)); + } + const h = t3.length; + let p = h; + for (h && t3.push("-"); p < o3; ) { + let o4 = 2147483647; + for (const t4 of n2) { + t4 >= f && t4 < o4 && (o4 = t4); + } + const a = p + 1; + o4 - f > e((2147483647 - i) / a) && s("overflow"), i += (o4 - f) * a, f = o4; + for (const o5 of n2) { + if (o5 < f && ++i > 2147483647 && s("overflow"), o5 == f) { + let n3 = i; + for (let o6 = 36; ; o6 += 36) { + const s2 = o6 <= l ? 1 : o6 >= l + 26 ? 26 : o6 - l; + if (n3 < s2) { + break; + } + const u2 = n3 - s2; + const f2 = 36 - s2; + t3.push(r(c(s2 + u2 % f2, 0))), n3 = e(u2 / f2); + } + t3.push(r(c(n3, 0))), l = u(i, a, p == h), i = 0, ++p; + } + } + ++i, ++f; + } + return t3.join(""); + })(t2) : t2; + }); +} + +const HASH_RE = /#/g; +const AMPERSAND_RE = /&/g; +const SLASH_RE = /\//g; +const EQUAL_RE = /=/g; +const IM_RE = /\?/g; +const PLUS_RE = /\+/g; +const ENC_CARET_RE = /%5e/gi; +const ENC_BACKTICK_RE = /%60/gi; +const ENC_CURLY_OPEN_RE = /%7b/gi; +const ENC_PIPE_RE = /%7c/gi; +const ENC_CURLY_CLOSE_RE = /%7d/gi; +const ENC_SPACE_RE = /%20/gi; +const ENC_SLASH_RE = /%2f/gi; +const ENC_ENC_SLASH_RE = /%252f/gi; +function encode(text) { + return encodeURI("" + text).replace(ENC_PIPE_RE, "|"); +} +function encodeHash(text) { + return encode(text).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^"); +} +function encodeQueryValue(input) { + return encode(typeof input === "string" ? input : JSON.stringify(input)).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CARET_RE, "^").replace(SLASH_RE, "%2F"); +} +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); +} +function encodePath(text) { + return encode(text).replace(HASH_RE, "%23").replace(IM_RE, "%3F").replace(ENC_ENC_SLASH_RE, "%2F").replace(AMPERSAND_RE, "%26").replace(PLUS_RE, "%2B"); +} +function encodeParam(text) { + return encodePath(text).replace(SLASH_RE, "%2F"); +} +function decode(text = "") { + try { + return decodeURIComponent("" + text); + } catch { + return "" + text; + } +} +function decodePath(text) { + return decode(text.replace(ENC_SLASH_RE, "%252F")); +} +function decodeQueryKey(text) { + return decode(text.replace(PLUS_RE, " ")); +} +function decodeQueryValue(text) { + return decode(text.replace(PLUS_RE, " ")); +} +function encodeHost(name = "") { + return toASCII(name); +} + +function parseQuery(parametersString = "") { + const object = /* @__PURE__ */ Object.create(null); + if (parametersString[0] === "?") { + parametersString = parametersString.slice(1); + } + for (const parameter of parametersString.split("&")) { + const s = parameter.match(/([^=]+)=?(.*)/) || []; + if (s.length < 2) { + continue; + } + const key = decodeQueryKey(s[1]); + if (key === "__proto__" || key === "constructor") { + continue; + } + const value = decodeQueryValue(s[2] || ""); + if (object[key] === void 0) { + object[key] = value; + } else if (Array.isArray(object[key])) { + object[key].push(value); + } else { + object[key] = [object[key], value]; + } + } + return object; +} +function encodeQueryItem(key, value) { + if (typeof value === "number" || typeof value === "boolean") { + value = String(value); + } + if (!value) { + return encodeQueryKey(key); + } + if (Array.isArray(value)) { + return value.map( + (_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}` + ).join("&"); + } + return `${encodeQueryKey(key)}=${encodeQueryValue(value)}`; +} +function stringifyQuery(query) { + return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join("&"); +} + +const PROTOCOL_STRICT_REGEX = /^[\s\w\0+.-]{2,}:([/\\]{1,2})/; +const PROTOCOL_REGEX = /^[\s\w\0+.-]{2,}:([/\\]{2})?/; +const PROTOCOL_RELATIVE_REGEX = /^([/\\]\s*){2,}[^/\\]/; +const PROTOCOL_SCRIPT_RE = /^[\s\0]*(blob|data|javascript|vbscript):$/i; +const TRAILING_SLASH_RE = /\/$|\/\?|\/#/; +const JOIN_LEADING_SLASH_RE = /^\.?\//; +function isRelative(inputString) { + return ["./", "../"].some((string_) => inputString.startsWith(string_)); +} +function hasProtocol(inputString, opts = {}) { + if (typeof opts === "boolean") { + opts = { acceptRelative: opts }; + } + if (opts.strict) { + return PROTOCOL_STRICT_REGEX.test(inputString); + } + return PROTOCOL_REGEX.test(inputString) || (opts.acceptRelative ? PROTOCOL_RELATIVE_REGEX.test(inputString) : false); +} +function isScriptProtocol(protocol) { + return !!protocol && PROTOCOL_SCRIPT_RE.test(protocol); +} +function hasTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return input.endsWith("/"); + } + return TRAILING_SLASH_RE.test(input); +} +function withoutTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || "/"; + } + if (!hasTrailingSlash(input, true)) { + return input || "/"; + } + let path = input; + let fragment = ""; + const fragmentIndex = input.indexOf("#"); + if (fragmentIndex !== -1) { + path = input.slice(0, fragmentIndex); + fragment = input.slice(fragmentIndex); + } + const [s0, ...s] = path.split("?"); + const cleanPath = s0.endsWith("/") ? s0.slice(0, -1) : s0; + return (cleanPath || "/") + (s.length > 0 ? `?${s.join("?")}` : "") + fragment; +} +function withTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return input.endsWith("/") ? input : input + "/"; + } + if (hasTrailingSlash(input, true)) { + return input || "/"; + } + let path = input; + let fragment = ""; + const fragmentIndex = input.indexOf("#"); + if (fragmentIndex !== -1) { + path = input.slice(0, fragmentIndex); + fragment = input.slice(fragmentIndex); + if (!path) { + return fragment; + } + } + const [s0, ...s] = path.split("?"); + return s0 + "/" + (s.length > 0 ? `?${s.join("?")}` : "") + fragment; +} +function hasLeadingSlash(input = "") { + return input.startsWith("/"); +} +function withoutLeadingSlash(input = "") { + return (hasLeadingSlash(input) ? input.slice(1) : input) || "/"; +} +function withLeadingSlash(input = "") { + return hasLeadingSlash(input) ? input : "/" + input; +} +function cleanDoubleSlashes(input = "") { + return input.split("://").map((string_) => string_.replace(/\/{2,}/g, "/")).join("://"); +} +function withBase(input, base) { + if (isEmptyURL(base) || hasProtocol(input)) { + return input; + } + const _base = withoutTrailingSlash(base); + if (input.startsWith(_base)) { + const nextChar = input[_base.length]; + if (!nextChar || nextChar === "/" || nextChar === "?") { + return input; + } + } + return joinURL(_base, input); +} +function withoutBase(input, base) { + if (isEmptyURL(base)) { + return input; + } + const _base = withoutTrailingSlash(base); + if (!input.startsWith(_base)) { + return input; + } + const nextChar = input[_base.length]; + if (nextChar && nextChar !== "/" && nextChar !== "?") { + return input; + } + const trimmed = input.slice(_base.length).replace(/^\/+/, ""); + return "/" + trimmed; +} +function withQuery(input, query) { + const parsed = parseURL(input); + const mergedQuery = { ...parseQuery(parsed.search), ...query }; + parsed.search = stringifyQuery(mergedQuery); + return stringifyParsedURL(parsed); +} +function filterQuery(input, predicate) { + if (!input.includes("?")) { + return input; + } + const parsed = parseURL(input); + const query = parseQuery(parsed.search); + const filteredQuery = Object.fromEntries( + Object.entries(query).filter(([key, value]) => predicate(key, value)) + ); + parsed.search = stringifyQuery(filteredQuery); + return stringifyParsedURL(parsed); +} +function getQuery(input) { + return parseQuery(parseURL(input).search); +} +function isEmptyURL(url) { + return !url || url === "/"; +} +function isNonEmptyURL(url) { + return url && url !== "/"; +} +function joinURL(base, ...input) { + let url = base || ""; + for (const segment of input.filter((url2) => isNonEmptyURL(url2))) { + if (url) { + const _segment = segment.replace(JOIN_LEADING_SLASH_RE, ""); + url = withTrailingSlash(url) + _segment; + } else { + url = segment; + } + } + return url; +} +function joinRelativeURL(..._input) { + const JOIN_SEGMENT_SPLIT_RE = /\/(?!\/)/; + const input = _input.filter(Boolean); + const segments = []; + let segmentsDepth = 0; + for (const i of input) { + if (!i || i === "/") { + continue; + } + for (const [sindex, s] of i.split(JOIN_SEGMENT_SPLIT_RE).entries()) { + if (!s || s === ".") { + continue; + } + if (s === "..") { + if (segments.length === 1 && hasProtocol(segments[0])) { + continue; + } + segments.pop(); + segmentsDepth--; + continue; + } + if (sindex === 1 && segments[segments.length - 1]?.endsWith(":/")) { + segments[segments.length - 1] += "/" + s; + continue; + } + segments.push(s); + segmentsDepth++; + } + } + let url = segments.join("/"); + if (segmentsDepth >= 0) { + if (input[0]?.startsWith("/") && !url.startsWith("/")) { + url = "/" + url; + } else if (input[0]?.startsWith("./") && !url.startsWith("./")) { + url = "./" + url; + } + } else { + url = "../".repeat(-1 * segmentsDepth) + url; + } + if (input[input.length - 1]?.endsWith("/") && !url.endsWith("/")) { + url += "/"; + } + return url; +} +function withHttp(input) { + return withProtocol(input, "http://"); +} +function withHttps(input) { + return withProtocol(input, "https://"); +} +function withoutProtocol(input) { + return withProtocol(input, ""); +} +function withProtocol(input, protocol) { + let match = input.match(PROTOCOL_REGEX); + if (!match) { + match = input.match(/^\/{2,}/); + } + if (!match) { + return protocol + input; + } + return protocol + input.slice(match[0].length); +} +function normalizeURL(input) { + const parsed = parseURL(input); + parsed.pathname = encodePath(decodePath(parsed.pathname)); + parsed.hash = encodeHash(decode(parsed.hash)); + parsed.host = encodeHost(decode(parsed.host)); + parsed.search = stringifyQuery(parseQuery(parsed.search)); + return stringifyParsedURL(parsed); +} +function resolveURL(base = "", ...inputs) { + if (typeof base !== "string") { + throw new TypeError( + `URL input should be string received ${typeof base} (${base})` + ); + } + const filteredInputs = inputs.filter((input) => isNonEmptyURL(input)); + if (filteredInputs.length === 0) { + return base; + } + const url = parseURL(base); + for (const inputSegment of filteredInputs) { + const urlSegment = parseURL(inputSegment); + if (urlSegment.pathname) { + url.pathname = withTrailingSlash(url.pathname) + withoutLeadingSlash(urlSegment.pathname); + } + if (urlSegment.hash && urlSegment.hash !== "#") { + url.hash = urlSegment.hash; + } + if (urlSegment.search && urlSegment.search !== "?") { + if (url.search && url.search !== "?") { + const queryString = stringifyQuery({ + ...parseQuery(url.search), + ...parseQuery(urlSegment.search) + }); + url.search = queryString.length > 0 ? "?" + queryString : ""; + } else { + url.search = urlSegment.search; + } + } + } + return stringifyParsedURL(url); +} +function isSamePath(p1, p2) { + return decode(withoutTrailingSlash(p1)) === decode(withoutTrailingSlash(p2)); +} +function isEqual(a, b, options = {}) { + if (!options.trailingSlash) { + a = withTrailingSlash(a); + b = withTrailingSlash(b); + } + if (!options.leadingSlash) { + a = withLeadingSlash(a); + b = withLeadingSlash(b); + } + if (!options.encoding) { + a = decode(a); + b = decode(b); + } + return a === b; +} +function withFragment(input, hash) { + if (!hash || hash === "#") { + return input; + } + const parsed = parseURL(input); + parsed.hash = hash === "" ? "" : "#" + encodeHash(hash); + return stringifyParsedURL(parsed); +} +function withoutFragment(input) { + return stringifyParsedURL({ ...parseURL(input), hash: "" }); +} +function withoutHost(input) { + const parsed = parseURL(input); + return (parsed.pathname || "/") + parsed.search + parsed.hash; +} + +const protocolRelative = Symbol.for("ufo:protocolRelative"); +function parseURL(input = "", defaultProto) { + const _specialProtoMatch = input.match( + /^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i + ); + if (_specialProtoMatch) { + const [, _proto, _pathname = ""] = _specialProtoMatch; + return { + protocol: _proto.toLowerCase(), + pathname: _pathname, + href: _proto + _pathname, + auth: "", + host: "", + search: "", + hash: "" + }; + } + if (!hasProtocol(input, { acceptRelative: true })) { + return defaultProto ? parseURL(defaultProto + input) : parsePath(input); + } + const [, protocol = "", auth, hostAndPath = ""] = input.replace(/\\/g, "/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/) || []; + let [, host = "", path = ""] = hostAndPath.match(/([^#/?]*)(.*)?/) || []; + if (protocol === "file:") { + path = path.replace(/\/(?=[A-Za-z]:)/, ""); + } + const { pathname, search, hash } = parsePath(path); + return { + protocol: protocol.toLowerCase(), + auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : "", + host, + pathname, + search, + hash, + [protocolRelative]: !protocol + }; +} +function parsePath(input = "") { + const [pathname = "", search = "", hash = ""] = (input.match(/([^#?]*)(\?[^#]*)?(#.*)?/) || []).splice(1); + return { + pathname, + search, + hash + }; +} +function parseAuth(input = "") { + const [username, password] = input.split(":"); + return { + username: decode(username), + password: decode(password) + }; +} +function parseHost(input = "") { + const [hostname, port] = (input.match(/([^/:]*):?(\d+)?/) || []).splice(1); + return { + hostname: decode(hostname), + port + }; +} +function stringifyParsedURL(parsed) { + const pathname = parsed.pathname || ""; + const search = parsed.search ? (parsed.search.startsWith("?") ? "" : "?") + parsed.search : ""; + const hash = parsed.hash || ""; + const auth = parsed.auth ? parsed.auth + "@" : ""; + const host = parsed.host || ""; + const proto = parsed.protocol || parsed[protocolRelative] ? (parsed.protocol || "") + "//" : ""; + return proto + auth + host + pathname + search + hash; +} +const FILENAME_STRICT_REGEX = /\/([^/]+\.[^/]+)$/; +const FILENAME_REGEX = /\/([^/]+)$/; +function parseFilename(input = "", opts) { + const { pathname } = parseURL(input); + const matches = opts?.strict ? pathname.match(FILENAME_STRICT_REGEX) : pathname.match(FILENAME_REGEX); + return matches ? matches[1] : void 0; +} + +class $URL { + protocol; + host; + auth; + pathname; + query = {}; + hash; + constructor(input = "") { + if (typeof input !== "string") { + throw new TypeError( + `URL input should be string received ${typeof input} (${input})` + ); + } + const parsed = parseURL(input); + this.protocol = decode(parsed.protocol); + this.host = decode(parsed.host); + this.auth = decode(parsed.auth); + this.pathname = decodePath(parsed.pathname); + this.query = parseQuery(parsed.search); + this.hash = decode(parsed.hash); + } + get hostname() { + return parseHost(this.host).hostname; + } + get port() { + return parseHost(this.host).port || ""; + } + get username() { + return parseAuth(this.auth).username; + } + get password() { + return parseAuth(this.auth).password || ""; + } + get hasProtocol() { + return this.protocol.length; + } + get isAbsolute() { + return this.hasProtocol || this.pathname[0] === "/"; + } + get search() { + const q = stringifyQuery(this.query); + return q.length > 0 ? "?" + q : ""; + } + get searchParams() { + const p = new URLSearchParams(); + for (const name in this.query) { + const value = this.query[name]; + if (Array.isArray(value)) { + for (const v of value) { + p.append(name, v); + } + } else { + p.append( + name, + typeof value === "string" ? value : JSON.stringify(value) + ); + } + } + return p; + } + get origin() { + return (this.protocol ? this.protocol + "//" : "") + encodeHost(this.host); + } + get fullpath() { + return encodePath(this.pathname) + this.search + encodeHash(this.hash); + } + get encodedAuth() { + if (!this.auth) { + return ""; + } + const { username, password } = parseAuth(this.auth); + return encodeURIComponent(username) + (password ? ":" + encodeURIComponent(password) : ""); + } + get href() { + const auth = this.encodedAuth; + const originWithAuth = (this.protocol ? this.protocol + "//" : "") + (auth ? auth + "@" : "") + encodeHost(this.host); + return this.hasProtocol && this.isAbsolute ? originWithAuth + this.fullpath : this.fullpath; + } + append(url) { + if (url.hasProtocol) { + throw new Error("Cannot append a URL with protocol"); + } + Object.assign(this.query, url.query); + if (url.pathname) { + this.pathname = withTrailingSlash(this.pathname) + withoutLeadingSlash(url.pathname); + } + if (url.hash) { + this.hash = url.hash; + } + } + toJSON() { + return this.href; + } + toString() { + return this.href; + } +} +function createURL(input) { + return new $URL(input); +} + +export { $URL, cleanDoubleSlashes, createURL, decode, decodePath, decodeQueryKey, decodeQueryValue, encode, encodeHash, encodeHost, encodeParam, encodePath, encodeQueryItem, encodeQueryKey, encodeQueryValue, filterQuery, getQuery, hasLeadingSlash, hasProtocol, hasTrailingSlash, isEmptyURL, isEqual, isNonEmptyURL, isRelative, isSamePath, isScriptProtocol, joinRelativeURL, joinURL, normalizeURL, parseAuth, parseFilename, parseHost, parsePath, parseQuery, parseURL, resolveURL, stringifyParsedURL, stringifyQuery, withBase, withFragment, withHttp, withHttps, withLeadingSlash, withProtocol, withQuery, withTrailingSlash, withoutBase, withoutFragment, withoutHost, withoutLeadingSlash, withoutProtocol, withoutTrailingSlash }; diff --git a/apps/web/.output/server/node_modules/ufo/package.json b/apps/web/.output/server/node_modules/ufo/package.json new file mode 100644 index 0000000..4d3fff2 --- /dev/null +++ b/apps/web/.output/server/node_modules/ufo/package.json @@ -0,0 +1,48 @@ +{ + "name": "ufo", + "version": "1.6.4", + "description": "URL utils for humans", + "repository": "unjs/ufo", + "license": "MIT", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", + "default": "./dist/index.mjs" + }, + "./*": "./*" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "automd && unbuild", + "automd": "automd", + "dev": "vitest", + "lint": "eslint . && prettier -c src test", + "lint:fix": "eslint --fix . && prettier -w src test", + "prepack": "pnpm build", + "release": "pnpm test && changelogen --release && npm publish && git push --follow-tags", + "test": "pnpm lint && vitest run --typecheck" + }, + "devDependencies": { + "@types/node": "^25.6.0", + "@vitest/coverage-v8": "^4.1.5", + "automd": "^0.4.3", + "changelogen": "^0.6.2", + "eslint": "^10.2.1", + "eslint-config-unjs": "^0.6.2", + "jiti": "^2.6.1", + "prettier": "^3.8.3", + "typescript": "^6.0.3", + "unbuild": "^3.6.1", + "untyped": "^2.0.0", + "vitest": "^4.1.5" + }, + "packageManager": "pnpm@10.33.2" +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/unhead/dist/client.mjs b/apps/web/.output/server/node_modules/unhead/dist/client.mjs new file mode 100644 index 0000000..9da9454 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/client.mjs @@ -0,0 +1,22 @@ +export { c as createHead } from './shared/unhead.CaeaMM5q.mjs'; +export { c as createDomRenderer, r as renderDOMHead } from './shared/unhead.DD4N5B4k.mjs'; +import './shared/unhead.D7HkBzZn.mjs'; +import './shared/unhead.CGPOfp5O.mjs'; +import './shared/unhead.Bm4Y6XQI.mjs'; +import 'hookable'; +import './shared/unhead.C5Bksi2B.mjs'; +import './shared/unhead.DJuZwX9c.mjs'; + +function createDebouncedFn(callee, delayer) { + let ctxId = 0; + return () => { + const delayFnCtxId = ++ctxId; + delayer(() => { + if (ctxId === delayFnCtxId) { + callee(); + } + }); + }; +} + +export { createDebouncedFn }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/legacy.mjs b/apps/web/.output/server/node_modules/unhead/dist/legacy.mjs new file mode 100644 index 0000000..0d06271 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/legacy.mjs @@ -0,0 +1,33 @@ +import { D as DeprecationsPlugin, P as PromisesPlugin, T as TemplateParamsPlugin, A as AliasSortingPlugin } from './shared/unhead.D9VfQWNo.mjs'; +import { c as createUnhead } from './shared/unhead.D7HkBzZn.mjs'; +import { c as createHead$1 } from './shared/unhead.CaeaMM5q.mjs'; +import { c as createHead$2 } from './shared/unhead.DGl9jcjg.mjs'; +import './shared/unhead.CHEy9ana.mjs'; +import './shared/unhead.DspMpm6y.mjs'; +import './shared/unhead.CGPOfp5O.mjs'; +import './shared/unhead.Bm4Y6XQI.mjs'; +import 'hookable'; +import './shared/unhead.C5Bksi2B.mjs'; +import './shared/unhead.DD4N5B4k.mjs'; +import './shared/unhead.DJuZwX9c.mjs'; + +const legacyPlugins = [DeprecationsPlugin, PromisesPlugin, TemplateParamsPlugin, AliasSortingPlugin]; +const activeHead = { value: null }; +function getActiveHead() { + return activeHead.value; +} +function createHead(options = {}) { + return activeHead.value = createHead$1({ + ...options, + plugins: [...legacyPlugins, ...options.plugins || []] + }); +} +function createServerHead(options = {}) { + return activeHead.value = createHead$2({ + ...options, + plugins: [...legacyPlugins, ...options.plugins || []] + }); +} +const createHeadCore = createUnhead; + +export { DeprecationsPlugin, activeHead, createHead, createHeadCore, createServerHead, getActiveHead, legacyPlugins }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/minify.mjs b/apps/web/.output/server/node_modules/unhead/dist/minify.mjs new file mode 100644 index 0000000..c665363 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/minify.mjs @@ -0,0 +1,183 @@ +function minifyCSS(code) { + if (!/[\s/]|;\}|0\.\d/.test(code)) + return code; + let result = ""; + let last = ""; + let i = 0; + let parenDepth = 0; + const len = code.length; + const append = (value) => { + result += value; + last = value; + }; + while (i < len) { + const ch = code[i]; + if (ch === "'" || ch === '"') { + const quote = ch; + append(ch); + i++; + while (i < len && code[i] !== quote) { + if (code[i] === "\\" && i + 1 < len) + append(code[i++]); + append(code[i++]); + } + if (i < len) + append(code[i++]); + } else if (ch === "/" && code[i + 1] === "*") { + i += 2; + while (i < len && !(code[i] === "*" && code[i + 1] === "/")) + i++; + i += 2; + } else if (ch === "(") { + parenDepth++; + append(ch); + i++; + } else if (ch === ")") { + parenDepth = Math.max(0, parenDepth - 1); + append(ch); + i++; + } else if (ch === " " || ch === " " || ch === "\n" || ch === "\r") { + while (i < len && (code[i] === " " || code[i] === " " || code[i] === "\n" || code[i] === "\r")) + i++; + const next = code[i]; + if (next === "!") + continue; + if (parenDepth > 0) { + if (last && next && !isCSSCalcPunctuation(last) && !isCSSCalcPunctuation(next)) + append(" "); + } else if (last && next && !isCSSPunctuation(last) && !isCSSPunctuation(next)) { + append(" "); + } + } else if (ch === ";") { + let j = i + 1; + while (j < len && (code[j] === " " || code[j] === " " || code[j] === "\n" || code[j] === "\r")) + j++; + if (code[j] === "}") { + i++; + } else { + append(ch); + i++; + } + } else if (ch === "0" && code[i + 1] === "." && code[i + 2] >= "0" && code[i + 2] <= "9") { + if (last && last >= "0" && last <= "9") { + append(ch); + i++; + } else { + i++; + } + } else { + append(ch); + i++; + } + } + return result.trim(); +} +function isCSSPunctuation(ch) { + return ch === "{" || ch === "}" || ch === ";" || ch === ":" || ch === "," || ch === ">" || ch === "~" || ch === "+" || ch === "(" || ch === ")"; +} +function isCSSCalcPunctuation(ch) { + return ch === "*" || ch === "/" || ch === "(" || ch === ")" || ch === ","; +} + +function minifyJS(code) { + if (!/[\s/]/.test(code)) + return code; + let result = ""; + let last = ""; + let i = 0; + const len = code.length; + const append = (value) => { + result += value; + last = value; + }; + while (i < len) { + const ch = code[i]; + if (ch === "'" || ch === '"' || ch === "`") { + const quote = ch; + append(ch); + i++; + while (i < len && code[i] !== quote) { + if (code[i] === "\\" && i + 1 < len) { + append(code[i++]); + } + append(code[i++]); + } + if (i < len) + append(code[i++]); + } else if (ch === "/" && code[i + 1] === "/") { + i += 2; + while (i < len && code[i] !== "\n") + i++; + } else if (ch === "/" && code[i + 1] === "*") { + i += 2; + while (i < len && !(code[i] === "*" && code[i + 1] === "/")) + i++; + i += 2; + } else if (ch === " " || ch === " " || ch === "\n" || ch === "\r") { + let hasNewline = false; + while (i < len && (code[i] === " " || code[i] === " " || code[i] === "\n" || code[i] === "\r")) { + if (code[i] === "\n") + hasNewline = true; + i++; + } + const next = code[i]; + if (hasNewline && last && next && last !== "{" && last !== "}" && last !== ";" && next !== "}" && next !== ";") + append("\n"); + else if (last && next && isIdentChar(last) && isIdentChar(next)) + append(" "); + else if (last && next && (last === "+" && next === "+" || last === "-" && next === "-")) + append(" "); + } else { + append(ch); + i++; + } + } + return result.trim(); +} +function isIdentChar(ch) { + return ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" || ch >= "0" && ch <= "9" || ch === "_" || ch === "$"; +} + +function isJsonWhitespace(char) { + return char === " " || char === "\n" || char === "\r" || char === " "; +} +function minifyJSON(code) { + let escaped = false; + let inString = false; + let segmentStart = 0; + let chunks; + for (let i = 0; i < code.length; i++) { + const char = code[i]; + if (inString) { + if (escaped) + escaped = false; + else if (char === "\\") + escaped = true; + else if (char === '"') + inString = false; + continue; + } + if (char === '"') { + inString = true; + continue; + } + if (isJsonWhitespace(char)) { + chunks ||= []; + if (segmentStart < i) + chunks.push(code.slice(segmentStart, i)); + segmentStart = i + 1; + } + } + if (!chunks) + return code; + try { + JSON.parse(code); + } catch { + return code; + } + if (segmentStart < code.length) + chunks.push(code.slice(segmentStart)); + return chunks.join(""); +} + +export { minifyCSS, minifyJS, minifyJSON }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/parser.mjs b/apps/web/.output/server/node_modules/unhead/dist/parser.mjs new file mode 100644 index 0000000..d6a97d9 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/parser.mjs @@ -0,0 +1,518 @@ +import { h as hasOwn } from './shared/unhead.Bf_fPVYA.mjs'; + +const TAG_HTML = 0; +const TAG_HEAD = 1; +const TAG_TITLE = 4; +const TAG_META = 5; +const TAG_BODY = 44; +const TAG_SCRIPT = 52; +const TAG_STYLE = 53; +const TAG_LINK = 54; +const TAG_BASE = 56; +const LT_CHAR = 60; +const GT_CHAR = 62; +const SLASH_CHAR = 47; +const EQUALS_CHAR = 61; +const QUOTE_CHAR = 34; +const APOS_CHAR = 39; +const EXCLAMATION_CHAR = 33; +const BACKSLASH_CHAR = 92; +const DASH_CHAR = 45; +const TagIdMap = { + html: TAG_HTML, + head: TAG_HEAD, + title: TAG_TITLE, + meta: TAG_META, + body: TAG_BODY, + script: TAG_SCRIPT, + style: TAG_STYLE, + link: TAG_LINK, + base: TAG_BASE +}; +const HEAD_ELEMENTS_TO_EXTRACT = /* @__PURE__ */ new Set([TAG_TITLE, TAG_META, TAG_LINK, TAG_SCRIPT, TAG_STYLE, TAG_BASE]); +function prepareTemplate(html) { + const template = parseHtmlForIndexes(html); + Object.freeze(template.input); + Object.freeze(template.indexes); + return Object.freeze(template); +} +function isWhitespace(charCode) { + return charCode === 32 || charCode === 9 || charCode === 10 || charCode === 13; +} +function processCommentOrDoctype(htmlChunk, position) { + let i = position; + const chunkLength = htmlChunk.length; + if (i + 3 < chunkLength && htmlChunk.charCodeAt(i + 2) === DASH_CHAR && htmlChunk.charCodeAt(i + 3) === DASH_CHAR) { + i += 4; + while (i < chunkLength - 2) { + if (htmlChunk.charCodeAt(i) === DASH_CHAR && htmlChunk.charCodeAt(i + 1) === DASH_CHAR && htmlChunk.charCodeAt(i + 2) === GT_CHAR) { + i += 3; + return { + complete: true, + newPosition: i, + remainingText: "" + }; + } + i++; + } + return { + complete: false, + newPosition: position, + remainingText: htmlChunk.substring(position) + }; + } else { + i += 2; + while (i < chunkLength) { + if (htmlChunk.charCodeAt(i) === GT_CHAR) { + i++; + return { + complete: true, + newPosition: i, + remainingText: "" + }; + } + i++; + } + return { + complete: false, + newPosition: i, + remainingText: htmlChunk.substring(position, i) + }; + } +} +function parseAttributes(attrStr) { + if (!attrStr) + return {}; + const result = {}; + const setAttr = (attrName, value) => { + if (!hasOwn(result, attrName)) + result[attrName] = value; + }; + const len = attrStr.length; + let i = 0; + const WHITESPACE = 0; + const NAME = 1; + const AFTER_NAME = 2; + const BEFORE_VALUE = 3; + const QUOTED_VALUE = 4; + const UNQUOTED_VALUE = 5; + let state = WHITESPACE; + let nameStart = 0; + let nameEnd = 0; + let valueStart = 0; + let quoteChar = 0; + let name = ""; + while (i < len) { + const charCode = attrStr.charCodeAt(i); + const isSpace = isWhitespace(charCode); + switch (state) { + case WHITESPACE: + if (!isSpace) { + state = NAME; + nameStart = i; + nameEnd = 0; + } + break; + case NAME: + if (charCode === EQUALS_CHAR || isSpace) { + nameEnd = i; + name = attrStr.substring(nameStart, nameEnd).toLowerCase(); + state = charCode === EQUALS_CHAR ? BEFORE_VALUE : AFTER_NAME; + } + break; + case AFTER_NAME: + if (charCode === EQUALS_CHAR) { + state = BEFORE_VALUE; + } else if (!isSpace) { + setAttr(name, ""); + state = NAME; + nameStart = i; + nameEnd = 0; + } + break; + case BEFORE_VALUE: + if (charCode === QUOTE_CHAR || charCode === APOS_CHAR) { + quoteChar = charCode; + state = QUOTED_VALUE; + valueStart = i + 1; + } else if (!isSpace) { + state = UNQUOTED_VALUE; + valueStart = i; + } + break; + case QUOTED_VALUE: + if (charCode === quoteChar) { + setAttr(name, attrStr.substring(valueStart, i)); + state = WHITESPACE; + } + break; + case UNQUOTED_VALUE: + if (isSpace || charCode === GT_CHAR) { + setAttr(name, attrStr.substring(valueStart, i)); + state = WHITESPACE; + } + break; + } + i++; + } + if (state === QUOTED_VALUE || state === UNQUOTED_VALUE) { + if (name) { + setAttr(name, attrStr.substring(valueStart, i)); + } + } else if (state === NAME || state === AFTER_NAME || state === BEFORE_VALUE) { + nameEnd = nameEnd || i; + const currentName = attrStr.substring(nameStart, nameEnd).toLowerCase(); + if (currentName) { + setAttr(currentName, ""); + } + } + return result; +} +function parseHtmlForIndexes(html) { + const indexes = { + htmlTagStart: html.indexOf("<html"), + htmlTagEnd: -1, + headTagEnd: html.indexOf("</head>"), + bodyTagStart: html.indexOf("<body"), + bodyTagEnd: -1, + bodyCloseTagStart: html.indexOf("</body>") + }; + if (indexes.htmlTagStart >= 0) { + const htmlTagEndPos = html.indexOf(">", indexes.htmlTagStart); + if (htmlTagEndPos >= 0) { + indexes.htmlTagEnd = htmlTagEndPos + 1; + } + } + if (indexes.bodyTagStart >= 0) { + const bodyTagEndPos = html.indexOf(">", indexes.bodyTagStart); + if (bodyTagEndPos >= 0) { + indexes.bodyTagEnd = bodyTagEndPos + 1; + } + } + return { html, input: {}, indexes }; +} +function parseHtmlForUnheadExtraction(html) { + const input = {}; + const htmlParts = []; + let position = 0; + let inHead = false; + let foundBodyStart = false; + let lastCopyPosition = 0; + let currentOutputLength = 0; + const indexes = { + htmlTagStart: -1, + htmlTagEnd: -1, + headTagEnd: -1, + bodyTagStart: -1, + bodyTagEnd: -1, + bodyCloseTagStart: -1 + }; + function copyAccumulatedText() { + if (lastCopyPosition < position) { + const textToAdd = html.substring(lastCopyPosition, position); + htmlParts.push(textToAdd); + currentOutputLength += textToAdd.length; + lastCopyPosition = position; + } + } + function addText(text) { + htmlParts.push(text); + currentOutputLength += text.length; + } + while (position < html.length && !foundBodyStart) { + const currentCharCode = html.charCodeAt(position); + if (currentCharCode !== LT_CHAR) { + position++; + continue; + } + if (position + 1 >= html.length) { + copyAccumulatedText(); + addText(html[position]); + break; + } + const nextCharCode = html.charCodeAt(position + 1); + if (nextCharCode === EXCLAMATION_CHAR) { + const result = processCommentOrDoctype(html, position); + if (result.complete) { + copyAccumulatedText(); + addText(html.substring(position, result.newPosition)); + position = result.newPosition; + lastCopyPosition = position; + } else { + copyAccumulatedText(); + addText(html.substring(position)); + break; + } + continue; + } + if (nextCharCode === SLASH_CHAR) { + let tagEnd2 = position + 2; + while (tagEnd2 < html.length && html.charCodeAt(tagEnd2) !== GT_CHAR) { + tagEnd2++; + } + if (tagEnd2 >= html.length) { + copyAccumulatedText(); + addText(html.substring(position)); + break; + } + const tagName2 = html.substring(position + 2, tagEnd2).toLowerCase().trim(); + const tagId2 = TagIdMap[tagName2] ?? -1; + if (tagId2 === TAG_HEAD) { + inHead = false; + copyAccumulatedText(); + const headCloseStart = currentOutputLength; + addText(html.substring(position, tagEnd2 + 1)); + indexes.headTagEnd = headCloseStart; + } else { + copyAccumulatedText(); + addText(html.substring(position, tagEnd2 + 1)); + } + position = tagEnd2 + 1; + lastCopyPosition = position; + continue; + } + const tagStart = position + 1; + let tagNameEnd = tagStart; + while (tagNameEnd < html.length) { + const c = html.charCodeAt(tagNameEnd); + if (isWhitespace(c) || c === SLASH_CHAR || c === GT_CHAR) { + break; + } + tagNameEnd++; + } + if (tagNameEnd >= html.length) { + copyAccumulatedText(); + addText(html.substring(position)); + break; + } + const tagName = html.substring(tagStart, tagNameEnd).toLowerCase(); + const tagId = TagIdMap[tagName] ?? -1; + let tagEnd = tagNameEnd; + let inQuote = false; + let quoteChar = 0; + let foundEnd = false; + let isSelfClosing = false; + while (tagEnd < html.length && !foundEnd) { + const c = html.charCodeAt(tagEnd); + if (inQuote) { + if (c === quoteChar) { + inQuote = false; + } + } else if (c === QUOTE_CHAR || c === APOS_CHAR) { + inQuote = true; + quoteChar = c; + } else if (c === SLASH_CHAR && tagEnd + 1 < html.length && html.charCodeAt(tagEnd + 1) === GT_CHAR) { + isSelfClosing = true; + tagEnd += 2; + foundEnd = true; + continue; + } else if (c === GT_CHAR) { + tagEnd++; + foundEnd = true; + continue; + } + tagEnd++; + } + if (!foundEnd) { + copyAccumulatedText(); + addText(html.substring(position)); + break; + } + const attributesStr = html.substring(tagNameEnd, tagEnd - (isSelfClosing ? 2 : 1)).trim(); + const attributes = parseAttributes(attributesStr); + if (tagId === TAG_HTML) { + copyAccumulatedText(); + indexes.htmlTagStart = currentOutputLength; + if (Object.keys(attributes).length > 0) { + input.htmlAttrs = attributes; + addText(`<${tagName}>`); + } else { + addText(html.substring(position, tagEnd)); + } + indexes.htmlTagEnd = currentOutputLength; + } else if (tagId === TAG_BODY) { + copyAccumulatedText(); + indexes.bodyTagStart = currentOutputLength; + if (Object.keys(attributes).length > 0) { + input.bodyAttrs = attributes; + addText(`<${tagName}>`); + } else { + addText(html.substring(position, tagEnd)); + } + indexes.bodyTagEnd = currentOutputLength; + foundBodyStart = true; + position = tagEnd; + lastCopyPosition = position; + break; + } else if (tagId === TAG_HEAD) { + inHead = true; + copyAccumulatedText(); + addText(html.substring(position, tagEnd)); + } else if (inHead && HEAD_ELEMENTS_TO_EXTRACT.has(tagId)) { + if (tagId === TAG_TITLE) { + if (!isSelfClosing) { + const titleEnd = findClosingTag(html, tagEnd, tagName); + if (titleEnd !== -1) { + const titleContent = html.substring(tagEnd, titleEnd).trim(); + if (titleContent && !input.title) { + input.title = titleContent; + } + position = findTagEnd(html, titleEnd, tagName); + lastCopyPosition = position; + continue; + } + } + } else if (tagId === TAG_SCRIPT) { + const scriptAttrs = { ...attributes }; + if (!isSelfClosing) { + const scriptEnd = findClosingTag(html, tagEnd, tagName); + if (scriptEnd !== -1) { + const scriptContent = html.substring(tagEnd, scriptEnd); + scriptAttrs.innerHTML = scriptContent || ""; + position = findTagEnd(html, scriptEnd, tagName); + } else { + scriptAttrs.innerHTML = ""; + position = tagEnd; + } + } else { + scriptAttrs.innerHTML = ""; + position = tagEnd; + } + lastCopyPosition = position; + (input.script ||= []).push(scriptAttrs); + continue; + } else if (tagId === TAG_STYLE) { + const styleAttrs = { ...attributes }; + if (!isSelfClosing) { + const styleEnd = findClosingTag(html, tagEnd, tagName); + if (styleEnd !== -1) { + const styleContent = html.substring(tagEnd, styleEnd); + styleAttrs.textContent = styleContent || ""; + position = findTagEnd(html, styleEnd, tagName); + } else { + styleAttrs.textContent = ""; + position = tagEnd; + } + } else { + styleAttrs.textContent = ""; + position = tagEnd; + } + lastCopyPosition = position; + (input.style ||= []).push(styleAttrs); + continue; + } else if (tagId === TAG_META) { + (input.meta ||= []).push(attributes); + position = tagEnd; + lastCopyPosition = position; + continue; + } else if (tagId === TAG_LINK) { + (input.link ||= []).push(attributes); + position = tagEnd; + lastCopyPosition = position; + continue; + } else if (tagId === TAG_BASE && !input.base) { + input.base = attributes; + position = tagEnd; + lastCopyPosition = position; + continue; + } + } else { + copyAccumulatedText(); + addText(html.substring(position, tagEnd)); + } + position = tagEnd; + lastCopyPosition = position; + } + const remainingHtml = html.substring(position); + const bodyCloseIndex = remainingHtml.indexOf("</body>"); + if (bodyCloseIndex !== -1) { + indexes.bodyCloseTagStart = currentOutputLength + bodyCloseIndex; + } + copyAccumulatedText(); + addText(remainingHtml); + return { html: htmlParts.join(""), input, indexes }; +} +function findClosingTag(html, startPos, tagName) { + const tagId = TagIdMap[tagName]; + const isScriptOrStyle = tagId === TAG_SCRIPT || tagId === TAG_STYLE; + if (!isScriptOrStyle) { + const closingTag2 = `</${tagName}`; + const index = html.indexOf(closingTag2, startPos); + return index === -1 ? -1 : index; + } + const closingTag = `</${tagName}`; + let pos = startPos; + let inSingleQuote = false; + let inDoubleQuote = false; + let inBacktick = false; + let lastCharWasBackslash = false; + while (pos < html.length) { + const currentCharCode = html.charCodeAt(pos); + if (!lastCharWasBackslash) { + if (currentCharCode === APOS_CHAR && !inDoubleQuote && !inBacktick) { + inSingleQuote = !inSingleQuote; + } else if (currentCharCode === QUOTE_CHAR && !inSingleQuote && !inBacktick) { + inDoubleQuote = !inDoubleQuote; + } else if (currentCharCode === 96 && !inSingleQuote && !inDoubleQuote) { + inBacktick = !inBacktick; + } + } + lastCharWasBackslash = currentCharCode === BACKSLASH_CHAR && !lastCharWasBackslash; + const inQuotes = inSingleQuote || inDoubleQuote || inBacktick; + if (!inQuotes && html.startsWith(closingTag, pos)) { + const afterTagPos = pos + closingTag.length; + if (afterTagPos >= html.length) { + return pos; + } + const nextChar = html.charCodeAt(afterTagPos); + if (nextChar === GT_CHAR || isWhitespace(nextChar)) { + return pos; + } + } + pos++; + } + return -1; +} +function findTagEnd(html, closingTagStart, tagName) { + let pos = closingTagStart + tagName.length + 2; + while (pos < html.length && html.charCodeAt(pos) !== GT_CHAR) { + pos++; + } + return pos < html.length ? pos + 1 : pos; +} +function applyHeadToHtml(template, headHtml) { + const { html, indexes } = template; + const parts = []; + let lastIndex = 0; + if (indexes.htmlTagStart >= 0) { + parts.push(html.substring(lastIndex, indexes.htmlTagStart)); + parts.push(`<html${headHtml.htmlAttrs}>`); + lastIndex = indexes.htmlTagEnd; + } + if (indexes.headTagEnd >= 0) { + parts.push(html.substring(lastIndex, indexes.headTagEnd)); + parts.push(headHtml.headTags); + parts.push("</head>"); + lastIndex = indexes.headTagEnd + 7; + } + if (indexes.bodyTagStart >= 0) { + parts.push(html.substring(lastIndex, indexes.bodyTagStart)); + if (headHtml.bodyTagsOpen) { + parts.push(`<body${headHtml.bodyAttrs}> +${headHtml.bodyTagsOpen}`); + } else { + parts.push(`<body${headHtml.bodyAttrs}>`); + } + lastIndex = indexes.bodyTagEnd; + } + if (indexes.bodyCloseTagStart >= 0) { + parts.push(html.substring(lastIndex, indexes.bodyCloseTagStart)); + parts.push(headHtml.bodyTags); + parts.push(html.substring(indexes.bodyCloseTagStart)); + } else { + parts.push(html.substring(lastIndex)); + } + return parts.join(""); +} + +export { TagIdMap, applyHeadToHtml, parseAttributes, parseHtmlForIndexes, parseHtmlForUnheadExtraction, prepareTemplate }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/plugins.mjs b/apps/web/.output/server/node_modules/unhead/dist/plugins.mjs new file mode 100644 index 0000000..5f8fe63 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/plugins.mjs @@ -0,0 +1,782 @@ +export { A as AliasSortingPlugin, D as DeprecationsPlugin, P as PromisesPlugin, T as TemplateParamsPlugin } from './shared/unhead.D9VfQWNo.mjs'; +import { d as defineHeadPlugin } from './shared/unhead.CHEy9ana.mjs'; +export { F as FlatMetaPlugin, S as SafeInputPlugin } from './shared/unhead.DkxnqlHC.mjs'; +import { h as hasContent } from './shared/unhead.CGPOfp5O.mjs'; +import { minifyJS, minifyCSS, minifyJSON } from './minify.mjs'; +import { u as unpackMeta } from './shared/unhead.o8j9utSy.mjs'; +import { t as tagInputFromRuntime, u as tagPredicates, i as inputShapeFromRuntime, b as inputShapePredicates, U as URL_META_KEYS, v as titleInputFromRuntime, h as headInputPredicates } from './shared/unhead.BEmVMkeA.mjs'; +import './shared/unhead.DspMpm6y.mjs'; + +const HTTP_SCHEME_RE = /^https?:\/\//i; +const META_TRANSFORMABLE_URL = [ + "og:url", + "og:image", + "og:image:url", + "og:image:secure_url", + "twitter:image", + "twitter:image:src", + "og:video", + "og:video:url", + "og:video:secure_url", + "og:audio", + "og:audio:url", + "og:audio:secure_url", + "twitter:player", + "twitter:player:stream" +]; +const LINK_REL_RESOLVABLE = /* @__PURE__ */ new Set([ + "canonical", + "next", + "prev", + "alternate", + "author", + "license", + "help", + "search", + "pingback" +]); +const META_CANONICAL_URL = /* @__PURE__ */ new Set([ + "og:url" +]); +function CanonicalPlugin(options) { + return (head) => { + let host = options.canonicalHost || (!head.ssr ? window.location.origin : ""); + if (!HTTP_SCHEME_RE.test(host) && !host.startsWith("//")) { + host = `https://${host}`; + } + host = new URL(host).origin; + const whitelist = options.queryWhitelist !== void 0 ? options.queryWhitelist : []; + function normalizeCanonicalUrl(url) { + try { + const parsed = new URL(url, host); + parsed.hash = ""; + if (whitelist !== false && parsed.search) { + const filtered = new URLSearchParams(); + for (const key of whitelist) { + if (parsed.searchParams.has(key)) { + for (const value of parsed.searchParams.getAll(key)) { + filtered.append(key, value); + } + } + } + parsed.search = filtered.toString(); + } + if (options.trailingSlash === true && !parsed.pathname.endsWith("/")) { + parsed.pathname = `${parsed.pathname}/`; + } else if (options.trailingSlash === false && parsed.pathname !== "/" && parsed.pathname.endsWith("/")) { + parsed.pathname = parsed.pathname.slice(0, -1); + } + return parsed.toString(); + } catch { + return url; + } + } + function resolvePath(path) { + if (options?.customResolver) { + return options.customResolver(path); + } + if (HTTP_SCHEME_RE.test(path) || path.startsWith("//")) + return path; + try { + return new URL(path, host).toString(); + } catch { + return path; + } + } + return { + key: "canonical", + hooks: { + "tags:resolve": (ctx) => { + for (const tag of ctx.tags) { + const metaKey = tag.props?.property || tag.props?.name; + if (tag.tag === "meta" && META_TRANSFORMABLE_URL.includes(metaKey)) { + tag.props.content = resolvePath(tag.props.content); + if (META_CANONICAL_URL.has(metaKey)) { + tag.props.content = normalizeCanonicalUrl(tag.props.content); + } + } else if (tag.tag === "link" && LINK_REL_RESOLVABLE.has(tag.props.rel)) { + const isCanonical = tag.props.rel === "canonical"; + tag.props.href = resolvePath(tag.props.href); + if (isCanonical) { + tag.props.href = normalizeCanonicalUrl(tag.props.href); + } + } + } + } + } + }; + }; +} + +const IMAGE_META_KEYS = /* @__PURE__ */ new Set(["og:image", "og:image:url", "og:image:secure_url", "twitter:image", "twitter:image:src"]); +function isImageMeta(tag) { + if (tag.tag !== "meta") + return false; + const content = tag.props.content; + return IMAGE_META_KEYS.has(tag.props.property || tag.props.name) && !!hasContent(content) && String(content).trim() !== ""; +} +function InferSeoMetaPlugin(options = {}) { + return defineHeadPlugin((head) => { + if (options.twitterCard !== false) { + head.push({ + meta: [ + options.twitterCard ? { name: "twitter:card", content: options.twitterCard, tagPriority: "low" } : { "name": "twitter:card", "tagPriority": "low", "data-infer": "" } + ] + }); + } + head.push({ + meta: [ + // content is intentionally omitted - inferred from title/description by the hook below + { + "property": "og:title", + "tagPriority": "low", + "data-infer": "" + }, + { + "property": "og:description", + "tagPriority": "low", + "data-infer": "" + } + ] + }); + return { + key: "infer-seo-meta", + hooks: { + "tags:beforeResolve": ({ tagMap }) => { + let title = head._titleTemplate || head._title; + const ogTitle = tagMap.get("meta:og:title"); + if (typeof ogTitle?.props["data-infer"] !== "undefined") { + if (typeof title === "function") { + title = title(head._title); + } + title = hasContent(title) ? String(title) : void 0; + ogTitle.props.content = options.ogTitle ? options.ogTitle(title) : title || ""; + ogTitle.processTemplateParams = true; + } + const descriptionValue = tagMap.get("meta:description")?.props?.content; + const description = hasContent(descriptionValue) ? String(descriptionValue) : void 0; + const ogDescription = tagMap.get("meta:og:description"); + if (typeof ogDescription?.props["data-infer"] !== "undefined") { + ogDescription.props.content = options.ogDescription ? options.ogDescription(description) : description || ""; + ogDescription.processTemplateParams = true; + } + }, + // after resolve so an image added or dropped by any other hook still counts + "tags:afterResolve": (ctx) => { + let cardIndex = -1; + let hasImage = false; + for (let i = 0; i < ctx.tags.length; i++) { + const tag = ctx.tags[i]; + if (tag.tag === "meta" && tag.props.name === "twitter:card" && typeof tag.props["data-infer"] !== "undefined") + cardIndex = i; + else if (!hasImage && isImageMeta(tag)) + hasImage = true; + } + if (cardIndex === -1) + return; + const card = ctx.tags[cardIndex]; + const props = { ...card.props, content: hasImage ? "summary_large_image" : "summary" }; + delete props["data-infer"]; + ctx.tags[cardIndex] = { ...card, props }; + } + } + }; + }, "infer-seo-meta"); +} + +const JSON_TYPES = /* @__PURE__ */ new Set(["application/json", "application/ld+json", "speculationrules", "importmap"]); +function MinifyPlugin(options) { + const jsMinify = options?.js === false ? false : options?.js || minifyJS; + const cssMinify = options?.css === false ? false : options?.css || minifyCSS; + const jsonMinify = options?.json !== false; + const omitLineBreaks = options?.omitLineBreaks === true; + return { + key: "minify", + hooks: { + "ssr:render": (ctx) => { + if (omitLineBreaks) + ctx.options.omitLineBreaks = true; + for (const tag of ctx.tags) { + const content = tag.innerHTML; + if (!content || content.length < 20) + continue; + if (tag.tag === "script") { + const type = tag.props?.type; + if (type && JSON_TYPES.has(type)) { + if (jsonMinify) { + const min = minifyJSON(content); + if (min.length < content.length) + tag.innerHTML = min; + } + continue; + } + if (jsMinify) { + const min = jsMinify(content); + if (min.length < content.length) + tag.innerHTML = min; + } + } else if (tag.tag === "style" && cssMinify) { + const min = cssMinify(content); + if (min.length < content.length) + tag.innerHTML = min; + } + } + } + } + }; +} + +const TEMPLATE_PARAM_RE = /%\w+(?:\.\w+)?%/; +const TEMPLATE_PARAM_TOKEN_RE = /%\w+(?:\.\w+)?/; +const AT_PREFIX_RE = /^at\s+/; +const JAVASCRIPT_TYPES = /* @__PURE__ */ new Set([ + "application/ecmascript", + "application/javascript", + "application/x-ecmascript", + "application/x-javascript", + "text/ecmascript", + "text/javascript", + "text/javascript1.0", + "text/javascript1.1", + "text/javascript1.2", + "text/javascript1.3", + "text/javascript1.4", + "text/javascript1.5", + "text/jscript", + "text/livescript", + "text/x-ecmascript", + "text/x-javascript" +]); +const SLACK_TWITTER_META_NAMES = /* @__PURE__ */ new Set([ + "twitter:data1", + "twitter:data2", + "twitter:label1", + "twitter:label2" +]); +function isExecutableScript(type) { + const value = typeof type === "boolean" ? "" : String(type ?? ""); + if (!value) + return true; + const normalized = value.replace(/^[\t\n\f\r ]+|[\t\n\f\r ]+$/g, "").toLowerCase(); + return normalized === "module" || JAVASCRIPT_TYPES.has(normalized); +} +const PREDICATE_SEVERITY = { + "defer-on-module-script": "info", + "deprecated-prop-body": "warn", + "deprecated-prop-children": "warn", + "deprecated-prop-hid-vmid": "warn", + "empty-meta-content": "warn", + "html-in-title": "warn", + "invalid-input-shape": "warn", + "non-absolute-canonical": "warn", + "numeric-tag-priority": "info", + "possible-typo": "warn", + "preload-font-crossorigin": "warn", + "preload-missing-as": "warn", + "robots-conflict": "warn", + "script-src-with-content": "warn", + "streamed-tag-hidden-from-bots": "warn", + "twitter-handle-missing-at": "warn", + "viewport-user-scalable": "info" +}; +function isAbsoluteUrl(url) { + return url.startsWith("http://") || url.startsWith("https://"); +} +function extractOrigin(url) { + if (!isAbsoluteUrl(url)) + return void 0; + const slash = url.indexOf("/", url.indexOf("//") + 2); + return slash === -1 ? url : url.slice(0, slash); +} +function resolveSeverity(config, fallback) { + if (config == null) + return fallback; + return Array.isArray(config) ? config[0] : config; +} +function resolveOptions(config, id, defaults) { + const entry = config[id]; + if (Array.isArray(entry)) + return { ...defaults, ...entry[1] }; + return defaults; +} +function captureSource(root) { + const stack = new Error("source").stack; + if (!stack) + return void 0; + const lines = stack.split("\n"); + for (let i = 4; i < lines.length; i++) { + const line = lines[i].trim(); + if (line && !line.includes("node_modules") && !line.includes("unhead/src/")) { + let source = line.replace(AT_PREFIX_RE, ""); + if (root) { + const prefix = root.endsWith("/") ? root : `${root}/`; + source = source.replace(prefix, "./"); + } + return source; + } + } + return void 0; +} +function createInputShapeObserver() { + let remainingRootKeys; + let resolvedValues; + const resolver = (key, value) => { + if (key === void 0) { + if (value?.constructor === Object) { + remainingRootKeys = new Set(Object.keys(value)); + resolvedValues = /* @__PURE__ */ new Map(); + } else { + remainingRootKeys = void 0; + resolvedValues = void 0; + } + } else if (remainingRootKeys?.delete(key)) { + resolvedValues?.set(key, value); + } + return value; + }; + resolver._static = true; + return { + resolver, + take() { + const input = resolvedValues ? Object.fromEntries(resolvedValues) : void 0; + remainingRootKeys = void 0; + resolvedValues = void 0; + return input; + } + }; +} +const BOT_HEAD_META_NAMES = /* @__PURE__ */ new Set(["description", "robots", "googlebot", "bingbot", "slurp", "keywords"]); +const BOT_HEAD_META_EQUIVS = /* @__PURE__ */ new Set(["refresh", "content-language"]); +const BOT_HEAD_LINK_RELS = /* @__PURE__ */ new Set(["canonical", "alternate", "amphtml", "prev", "next", "author", "license"]); +const BOT_HEAD_META_PREFIX_RE = /^(?:og|twitter|article|book|profile|fb|al|music|video|place|product):/; +const JSON_LD_TYPE_RE = /^[\t\n\f\r ]*application\/ld\+json[\t\n\f\r ]*(?:;|$)/i; +const REL_SEPARATOR_RE = /[\t\n\f\r ]+/; +const SAFE_BLOCKED_RELS = /* @__PURE__ */ new Set(["canonical", "modulepreload", "prerender", "preload", "prefetch", "dns-prefetch", "preconnect", "manifest", "pingback"]); +function relTokens(value) { + return String(value || "").toLowerCase().split(REL_SEPARATOR_RE); +} +function* expandPendingTag(tag) { + if (tag._safe && tag.tag === "link" && relTokens(tag.props.rel).some((rel) => SAFE_BLOCKED_RELS.has(rel))) + return; + if (tag.props.body) + tag.tagPosition = "bodyClose"; + if (tag.tag !== "_flatMeta") { + yield tag; + return; + } + for (const props of unpackMeta(tag.props)) + yield { ...tag, tag: "meta", props }; +} +function isHiddenFromBots(tag, writesBodyTags) { + const props = tag.props; + if (tag.tag === "script") + return !writesBodyTags && JSON_LD_TYPE_RE.test(String(props.type || "")); + if (tag.tagPosition?.startsWith("body")) + return false; + switch (tag.tag) { + case "title": + case "titleTemplate": + case "base": + return true; + case "meta": { + if (BOT_HEAD_META_NAMES.has(String(props.name || "").toLowerCase())) + return true; + if (BOT_HEAD_META_EQUIVS.has(String(props["http-equiv"] || "").toLowerCase())) + return true; + return BOT_HEAD_META_PREFIX_RE.test(String(props.property || props.name || "").toLowerCase()); + } + case "link": + return relTokens(props.rel).some((rel) => BOT_HEAD_LINK_RELS.has(rel)); + default: + return false; + } +} +function describeTag(tag) { + const props = tag.props; + if (tag.tag === "meta") + return `meta[${props.property ? `property="${props.property}"` : props["http-equiv"] ? `http-equiv="${props["http-equiv"]}"` : `name="${props.name}"`}]`; + if (tag.tag === "link") + return `link[rel="${props.rel}"]`; + if (tag.tag === "script") + return 'script[type="application/ld+json"]'; + return tag.tag; +} +function ValidatePlugin(options = {}) { + const ruleConfig = options.rules || {}; + const root = options.root; + const only = options.only && new Set(options.only); + const pluginKey = options.key || "validate"; + function severityFor(id, fallback) { + if (only && !only.has(id)) + return "off"; + return resolveSeverity(ruleConfig[id], fallback); + } + return defineHeadPlugin((head) => { + const stacks = /* @__PURE__ */ new Map(); + const pendingInputDiagnostics = []; + const inputShapeObserver = createInputShapeObserver(); + head.resolvedOptions.propResolvers = [ + ...head.resolvedOptions.propResolvers || [], + inputShapeObserver.resolver + ]; + const hooks = head.hooks; + if (hooks) { + const _callHook = hooks.callHook.bind(hooks); + let warnedAsyncHook = false; + hooks.callHook = (name, ...args) => { + const result = _callHook(name, ...args); + if (result?.then && !warnedAsyncHook && !only) { + warnedAsyncHook = true; + console.warn(`[unhead] promise ignored: ${name}`); + } + return result; + }; + } + const _push = head.push.bind(head); + head.push = (input, opts) => { + if (opts?.mode && severityFor("deprecated-option-mode", "warn") !== "off") { + console.warn(`[unhead] "mode: '${opts.mode}'" option was removed in v3. Use the appropriate createHead import (unhead/client or unhead/server) instead.`); + } + const source = captureSource(root); + const active = _push(input, opts); + if (source) + stacks.set(active._i, source); + const _dispose = active.dispose; + active.dispose = () => { + stacks.delete(active._i); + _dispose(); + }; + return active; + }; + function dispatch(rules, mode) { + const head_ = head; + head_._validationRules = mode === "replace" ? rules : [...head_._validationRules || [], ...rules]; + if (!rules.length) + return; + if (options.onReport) { + options.onReport(rules); + return; + } + for (const rule of rules) { + const loc = rule.source ? ` (${rule.source})` : ""; + console.warn(`[unhead] ${rule.message}${loc}`); + } + } + return { + key: pluginKey, + hooks: { + "ssr:streamChunk": ({ tags }) => { + const severity = severityFor("streamed-tag-hidden-from-bots", "warn"); + if (severity === "off") + return; + const rules = []; + for (const pending of tags) { + for (const tag of expandPendingTag(pending)) { + if (!isHiddenFromBots(tag, !!head._stream?.writesBodyTags)) + continue; + const entryIndex = tag._p != null ? tag._p >> 10 : void 0; + rules.push({ + id: "streamed-tag-hidden-from-bots", + message: `Bots will not see ${describeTag(tag)}. It arrived after the shell, so it ships as a client patch. Register it before the shell.`, + severity, + source: entryIndex != null ? stacks.get(entryIndex) : void 0, + tag + }); + } + } + dispatch(rules, "append"); + }, + "entries:normalize": ({ entry }) => { + const input = inputShapeObserver.take(); + if (!input || input.constructor !== Object) + return; + const shape = inputShapeFromRuntime("head", input); + for (const predicate of Object.values(inputShapePredicates)) { + for (const diagnostic of predicate(shape)) + pendingInputDiagnostics.push({ diagnostic, entryIndex: entry._i }); + } + }, + "tags:afterResolve": ({ tags }) => { + const rules = []; + function report(id, message, defaultSeverity, tag, inputEntryIndex) { + const severity = severityFor(id, defaultSeverity); + if (severity === "off") + return; + const entryIndex = inputEntryIndex ?? (tag?._p != null ? tag._p >> 10 : void 0); + const source = entryIndex != null ? stacks.get(entryIndex) : void 0; + rules.push({ id, message, severity, source, tag }); + } + for (const { diagnostic, entryIndex } of pendingInputDiagnostics) { + const severity = PREDICATE_SEVERITY[diagnostic.ruleId] ?? "warn"; + report(diagnostic.ruleId, diagnostic.message, severity, void 0, entryIndex); + } + pendingInputDiagnostics.length = 0; + const metaByKey = /* @__PURE__ */ new Map(); + let canonicalHref; + let hasOgTags = false; + let hasTitle = false; + let hasDescription = false; + let isIndexable = true; + for (const tag of tags) { + if (tag.tag === "title") + hasTitle = true; + if (tag.tag === "meta") { + const key = tag.props.property || (tag.props.name ? String(tag.props.name).toLowerCase() : void 0); + if (key) { + metaByKey.set(key, tag); + if (key.startsWith("og:")) + hasOgTags = true; + if (key === "description") + hasDescription = true; + if (key === "robots" && String(tag.props.content ?? "").toLowerCase().includes("noindex")) + isIndexable = false; + } + } + if (tag.tag === "link" && tag.props.rel === "canonical") + canonicalHref = tag.props.href; + } + function emitFromPredicates(diagnostics, tag) { + for (const diag of diagnostics) { + const sev = PREDICATE_SEVERITY[diag.ruleId] ?? "warn"; + report(diag.ruleId, diag.message, sev, tag); + } + } + for (const tag of tags) { + const { props } = tag; + const metaKey = props.property || (props.name ? String(props.name).toLowerCase() : void 0); + const tagInput = tagInputFromRuntime(tag); + if (tagInput) { + for (const predicate of Object.values(tagPredicates)) + emitFromPredicates(predicate(tagInput), tag); + } + if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") { + const inputShape = inputShapeFromRuntime(tag.tag, tag.props); + for (const predicate of Object.values(inputShapePredicates)) + emitFromPredicates(predicate(inputShape), tag); + } + if (tag.tag === "meta" && typeof metaKey === "string") { + const normalizedMetaKey = metaKey.toLowerCase(); + if (normalizedMetaKey.startsWith("twitter:") && !SLACK_TWITTER_META_NAMES.has(normalizedMetaKey)) + report("deprecated-twitter-meta", `${normalizedMetaKey} is deprecated. Use Open Graph metadata instead.`, "warn", tag); + } + if (tag.tag === "meta" && metaKey && URL_META_KEYS.has(metaKey)) { + const content = String(props.content ?? ""); + if (content && !isAbsoluteUrl(content)) + report("non-absolute-og-url", `${metaKey} should be an absolute URL, received "${content}".`, "warn", tag); + } + if (tag.tag === "meta" && metaKey) { + const content = String(props.content ?? ""); + if (content && TEMPLATE_PARAM_RE.test(content)) + report("unresolved-template-param", `Unresolved template param in ${metaKey}: "${content}".`, "warn", tag); + } + if (tag.tag === "title") { + const titleInput = titleInputFromRuntime(tag); + if (titleInput) { + for (const diag of headInputPredicates["no-html-in-title"](titleInput)) + report(diag.ruleId, diag.message, "warn", tag); + } + const text = String(tag.textContent ?? ""); + if (TEMPLATE_PARAM_RE.test(text)) + report("unresolved-template-param", `Unresolved template param in title: "${text}".`, "warn", tag); + if (!text.trim()) + report("empty-title", `Title tag is empty. If using titleTemplate, ensure it produces output.`, "warn", tag); + } + if (tag.tag === "script" && props.src && !props.async && !props.defer && props.type !== "module" && (!tag.tagPosition || tag.tagPosition === "head")) + report("render-blocking-script", `Script "${props.src}" is render-blocking. Add "async", "defer", or use type="module" to avoid blocking the critical rendering path.`, "warn", tag); + if (tag.tag === "link" && props.rel === "preload" && props.fetchpriority === "low" && props.as !== "script") + report("preload-fetchpriority-conflict", `This preload uses fetchpriority="low". Check whether the resource needs a higher priority.`, "off", tag); + if (tag.tag === "style" && (tag.innerHTML || tag.textContent)) { + const content = tag.innerHTML || tag.textContent || ""; + const sizeKB = new TextEncoder().encode(content).byteLength / 1024; + const { maxKB: styleMaxKB } = resolveOptions(ruleConfig, "inline-style-size", { maxKB: 14 }); + if (sizeKB > styleMaxKB) + report("inline-style-size", `Inline <style> is ${sizeKB.toFixed(1)}KB \u2014 exceeds ${styleMaxKB}KB critical CSS budget. Consider moving to an external stylesheet for cacheability.`, "info", tag); + } + if (tag.tag === "script" && isExecutableScript(props.type) && !props.src && (tag.innerHTML || tag.textContent)) { + const content = tag.innerHTML || tag.textContent || ""; + const sizeKB = new TextEncoder().encode(content).byteLength / 1024; + const { maxKB: scriptMaxKB } = resolveOptions(ruleConfig, "inline-script-size", { maxKB: 2 }); + if (sizeKB > scriptMaxKB) + report("inline-script-size", `Inline <script> is ${sizeKB.toFixed(1)}KB \u2014 consider moving to an external file for cacheability.`, "info", tag); + } + } + const ogUrl = metaByKey.get("og:url"); + if (canonicalHref && ogUrl?.props.content && canonicalHref !== ogUrl.props.content) + report("canonical-og-url-mismatch", `Canonical URL "${canonicalHref}" differs from og:url "${ogUrl.props.content}".`, "warn", ogUrl); + if (metaByKey.has("og:image") && (!metaByKey.has("og:image:width") || !metaByKey.has("og:image:height"))) + report("og-image-missing-dimensions", `og:image is set but og:image:width and/or og:image:height are missing \u2014 social platforms may not display the image.`, "warn", metaByKey.get("og:image")); + if (hasOgTags) { + if (!metaByKey.has("og:title")) + report("og-missing-title", `Open Graph tags are present but og:title is missing.`, "warn"); + if (!metaByKey.has("og:description")) + report("og-missing-description", `Open Graph tags are present but og:description is missing.`, "warn"); + } + if (!hasTitle) + report("missing-title", `Page is missing a <title> tag.`, "warn"); + if (!hasDescription && isIndexable) + report("missing-description", `Page is missing a meta description and is indexable by search engines.`, "warn"); + const { max: maxPreloads } = resolveOptions(ruleConfig, "too-many-preloads", { max: 6 }); + const preloadCount = tags.filter((t) => t.tag === "link" && t.props.rel === "preload").length; + if (preloadCount > maxPreloads) + report("too-many-preloads", `Found ${preloadCount} preload links \u2014 more than ${maxPreloads} preloads compete for bandwidth and can hurt performance.`, "warn"); + const { max: maxPrefetches } = resolveOptions(ruleConfig, "too-many-prefetches", { max: 50 }); + const prefetchCount = tags.filter((t) => t.tag === "link" && t.props.rel === "prefetch").length; + if (prefetchCount > maxPrefetches) + report("too-many-prefetches", `Found ${prefetchCount} prefetch links. The configured maximum of ${maxPrefetches} is an advisory guardrail, not a standards limit. Large speculative fetch sets can consume bandwidth and cache capacity.`, "info"); + const { max: maxPreconnects } = resolveOptions(ruleConfig, "too-many-preconnects", { max: 4 }); + const preconnectCount = tags.filter((t) => t.tag === "link" && t.props.rel === "preconnect").length; + if (preconnectCount > maxPreconnects) + report("too-many-preconnects", `Found ${preconnectCount} preconnect links \u2014 each initiates a TCP+TLS handshake, more than ${maxPreconnects} compete for limited connections.`, "warn"); + const preconnectOrigins = /* @__PURE__ */ new Set(); + const dnsPrefetchTags = []; + for (const tag of tags) { + if (tag.tag === "link" && tag.props.href) { + if (tag.props.rel === "preconnect") + preconnectOrigins.add(tag.props.href); + else if (tag.props.rel === "dns-prefetch") + dnsPrefetchTags.push(tag); + } + } + for (const tag of dnsPrefetchTags) { + if (preconnectOrigins.has(tag.props.href)) + report("redundant-dns-prefetch", `dns-prefetch for "${tag.props.href}" is redundant \u2014 preconnect already includes DNS resolution.`, "info", tag); + } + const preloadScriptHrefs = /* @__PURE__ */ new Map(); + for (const tag of tags) { + if (tag.tag === "link" && tag.props.rel === "preload" && tag.props.as === "script" && tag.props.href && tag.props.fetchpriority !== "low") + preloadScriptHrefs.set(tag.props.href, tag); + } + for (const tag of tags) { + if (tag.tag === "script" && tag.props.src && (tag.props.async || tag.props.defer)) { + const preloadTag = preloadScriptHrefs.get(tag.props.src); + if (preloadTag) { + const attr = tag.props.async ? "async" : "defer"; + report("preload-async-defer-conflict", `Script "${tag.props.src}" is preloaded with "${attr}". Check whether early fetching is intentional.`, "off", preloadTag); + } + } + } + const preloadHrefs = /* @__PURE__ */ new Set(); + for (const tag of tags) { + if (tag.tag === "link" && tag.props.rel === "preload" && tag.props.href) + preloadHrefs.add(tag.props.href); + } + for (const tag of tags) { + if (tag.tag === "link" && tag.props.rel === "prefetch" && tag.props.href && preloadHrefs.has(tag.props.href)) + report("prefetch-preload-conflict", `"${tag.props.href}" has both preload and prefetch \u2014 use preload for current page resources, prefetch for future navigation.`, "warn", tag); + } + if (!head.plugins.has("template-params")) { + const tpTag = tags.find((t) => t.tag === "templateParams"); + if (tpTag) { + report("missing-template-params-plugin", `templateParams are set but TemplateParamsPlugin is not registered. In v3, this plugin is opt-in. Add it to createHead({ plugins: [TemplateParamsPlugin] }).`, "warn", tpTag); + } else { + const tokenTag = tags.find((t) => { + if (t.tag === "title" || t.tag === "titleTemplate") + return TEMPLATE_PARAM_TOKEN_RE.test(String(t.textContent ?? "")); + if (t.tag === "meta") + return TEMPLATE_PARAM_TOKEN_RE.test(String(t.props.content ?? "")); + return false; + }); + if (tokenTag) { + const text = String(tokenTag.tag === "meta" ? tokenTag.props.content : tokenTag.textContent); + const token = TEMPLATE_PARAM_TOKEN_RE.exec(text)[0]; + report("missing-template-params-plugin", `A template param "${token}" is used but TemplateParamsPlugin is not registered, so it renders literally. In v3, this plugin is opt-in. Add it to createHead({ plugins: [TemplateParamsPlugin] }).`, "warn", tokenTag); + } + } + } + if (!head.plugins.has("aliasSorting")) { + for (const tag of tags) { + const p = typeof tag.tagPriority === "string" ? tag.tagPriority : ""; + if (p.startsWith("before:") || p.startsWith("after:")) { + report("missing-alias-sorting-plugin", `Tag priority alias "${p}" requires AliasSortingPlugin. In v3, this plugin is opt-in. Add it to createHead({ plugins: [AliasSortingPlugin] }).`, "warn", tag); + break; + } + } + } + const { max: maxHighPriority } = resolveOptions(ruleConfig, "too-many-fetchpriority-high", { max: 2 }); + const highPriorityCount = tags.filter((t) => t.props.fetchpriority === "high").length; + if (highPriorityCount > maxHighPriority) + report("too-many-fetchpriority-high", `Found ${highPriorityCount} resources with fetchpriority="high". When everything is high priority, nothing is. Limit to ${maxHighPriority} for the signal to be effective.`, "warn"); + const resourceHintsSeen = /* @__PURE__ */ new Map(); + for (const tag of tags) { + if (tag.tag === "link" && tag.props.href && (tag.props.rel === "preload" || tag.props.rel === "prefetch" || tag.props.rel === "preconnect")) { + const crossoriginSuffix = tag.props.rel === "preconnect" && "crossorigin" in tag.props ? ":cors" : ""; + const key = `${tag.props.rel}:${tag.props.href}${crossoriginSuffix}`; + if (resourceHintsSeen.has(key)) + report("duplicate-resource-hint", `Duplicate ${tag.props.rel} for "${tag.props.href}".`, "warn", tag); + else + resourceHintsSeen.set(key, tag); + } + } + if (head.ssr) { + const { maxPosition: charsetMaxPos } = resolveOptions(ruleConfig, "charset-not-early", { maxPosition: 3 }); + const headElementTags = /* @__PURE__ */ new Set(["title", "base", "meta", "link", "style", "script", "noscript"]); + const sortedHeadTags = tags.filter((t) => headElementTags.has(t.tag) && (!t.tagPosition || t.tagPosition === "head")).sort((a, b) => (a._w ?? 100) === (b._w ?? 100) ? (a._p ?? 0) - (b._p ?? 0) : (a._w ?? 100) - (b._w ?? 100)); + let charsetTag; + let charsetPosition = -1; + for (let i = 0; i < sortedHeadTags.length; i++) { + const tag = sortedHeadTags[i]; + if (tag.tag === "meta" && ("charset" in tag.props || tag.props["http-equiv"]?.toLowerCase() === "content-type")) { + charsetTag = tag; + charsetPosition = i + 1; + break; + } + } + if (charsetTag && charsetPosition > charsetMaxPos) + report("charset-not-early", `<meta charset> is at position ${charsetPosition} in <head>. It should be within the first ${charsetMaxPos} tags so the browser doesn't need to re-parse.`, "warn", charsetTag); + } + const moduleScriptSrcs = /* @__PURE__ */ new Set(); + for (const tag of tags) { + if (tag.tag === "script" && tag.props.type === "module" && tag.props.src) + moduleScriptSrcs.add(tag.props.src); + } + for (const tag of tags) { + if (tag.tag === "link" && tag.props.rel === "preload" && tag.props.as === "script" && tag.props.href && moduleScriptSrcs.has(tag.props.href)) + report("preload-not-modulepreload", `"${tag.props.href}" is a module script but uses rel="preload". Use rel="modulepreload" instead to also trigger module parsing.`, "warn", tag); + } + const corsOrigins = /* @__PURE__ */ new Set(); + const preconnectCorsOrigins = /* @__PURE__ */ new Set(); + for (const tag of tags) { + if (tag.tag === "link" && tag.props.href && "crossorigin" in tag.props) { + const origin = extractOrigin(tag.props.href); + if (origin) { + corsOrigins.add(origin); + if (tag.props.rel === "preconnect") + preconnectCorsOrigins.add(origin); + } + } + } + for (const tag of tags) { + if (tag.tag === "link" && tag.props.rel === "preconnect" && tag.props.href && !("crossorigin" in tag.props)) { + const origin = extractOrigin(tag.props.href); + if (origin && corsOrigins.has(origin) && !preconnectCorsOrigins.has(origin)) + report("preconnect-missing-crossorigin", `Preconnect to "${tag.props.href}" is missing "crossorigin" but CORS resources are loaded from this origin. Without it, the browser opens a separate connection for CORS requests.`, "warn", tag); + } + } + const { maxBytes: crawlerMaxBytes } = resolveOptions(ruleConfig, "meta-beyond-1mb", { maxBytes: 1048576 }); + let byteOffset = 0; + for (const tag of tags) { + if (tag.tagPosition && tag.tagPosition !== "head") + continue; + const props = Object.entries(tag.props).filter(([, v]) => v !== false && v != null).map(([k, v]) => v === true || v === "" ? ` ${k}` : ` ${k}="${v}"`).join(""); + const content = tag.innerHTML || tag.textContent || ""; + const tagSize = `<${tag.tag}${props}>${content}</${tag.tag}> +`.length; + byteOffset += tagSize; + if (byteOffset > crawlerMaxBytes && tag.tag === "meta") { + const key = tag.props.property || tag.props.name || "unknown"; + report( + "meta-beyond-1mb", + `Meta tag "${key}" is rendered ~${(byteOffset / 1024).toFixed(0)}KB into <head>, beyond the ${(crawlerMaxBytes / 1048576).toFixed(0)}MB crawler parsing limit. Social crawlers (Facebook, Twitter) may not see it. Use \`tagPriority\` to promote it, or configure a custom \`tagWeight\` to reorder tags for bot requests.`, + "warn", + tag + ); + } + } + dispatch(rules, "replace"); + } + } + }; + }, pluginKey); +} + +export { CanonicalPlugin, InferSeoMetaPlugin, MinifyPlugin, ValidatePlugin, defineHeadPlugin }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/server.mjs b/apps/web/.output/server/node_modules/unhead/dist/server.mjs new file mode 100644 index 0000000..c8dac02 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/server.mjs @@ -0,0 +1,99 @@ +import { parseHtmlForUnheadExtraction, applyHeadToHtml, parseHtmlForIndexes } from './parser.mjs'; +export { prepareTemplate } from './parser.mjs'; +import { a as capoTagWeight } from './shared/unhead.DGl9jcjg.mjs'; +export { c as createHead, b as createServerRenderer, e as escapeHtml, p as propsToString, r as renderSSRHead, s as ssrRenderTags, t as tagToString } from './shared/unhead.DGl9jcjg.mjs'; +import { n as normalizeEntryToTags, d as dedupeKey, h as hashTag } from './shared/unhead.DJuZwX9c.mjs'; +import './shared/unhead.Bf_fPVYA.mjs'; +import './shared/unhead.D7HkBzZn.mjs'; +import './shared/unhead.Bm4Y6XQI.mjs'; +import 'hookable'; +import './shared/unhead.CGPOfp5O.mjs'; + +let extractedTemplates; +function cloneExtractedInput(value) { + if (Array.isArray(value)) + return value.map(cloneExtractedInput); + if (value && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype) { + const clone = {}; + for (const key of Object.keys(value)) + clone[key] = cloneExtractedInput(value[key]); + return clone; + } + return value; +} +function freezeExtractedInput(value) { + if (Array.isArray(value)) { + for (const item of value) + freezeExtractedInput(item); + } else if (value && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype) { + for (const key of Object.keys(value)) + freezeExtractedInput(value[key]); + } + return value && typeof value === "object" ? Object.freeze(value) : value; +} +function hasHooks(head) { + const hooks = head.hooks?._hooks || {}; + for (const key in hooks) { + if (hooks[key]?.length) + return true; + } + return false; +} +function precomputeExtractedTags(input) { + const tags = normalizeEntryToTags(input, []); + for (let i = 0; i < tags.length; i++) { + const tag = tags[i]; + tag._w = capoTagWeight(tag); + tag._p = i; + tag._d = dedupeKey(tag); + if (!tag._d) + tag._h = hashTag(tag); + } + return tags; +} +function extractPreparedTemplate(prepared) { + const cache = extractedTemplates ||= /* @__PURE__ */ new WeakMap(); + let extracted = cache.get(prepared); + if (!extracted) { + const template = parseHtmlForUnheadExtraction(prepared.html); + freezeExtractedInput(template.input); + Object.freeze(template.indexes); + Object.freeze(template); + const tags = precomputeExtractedTags(template.input); + freezeExtractedInput(tags); + extracted = Object.freeze({ + template, + tags + }); + cache.set(prepared, extracted); + } + return extracted; +} +// @__NO_SIDE_EFFECTS__ +function transformHtmlTemplate(head, html) { + let cached; + let template; + if (typeof html === "string") { + template = parseHtmlForUnheadExtraction(html); + } else { + cached = extractPreparedTemplate(html); + template = cached.template; + } + const hooked = cached ? hasHooks(head) : false; + const hasDynamicResolver = cached ? head.resolvedOptions.propResolvers?.some((resolver) => !resolver._static) || false : false; + const input = cached && (hooked || hasDynamicResolver) ? cloneExtractedInput(template.input) : template.input; + head.push(input, { _index: 0 }); + if (cached && !hooked && head.resolvedOptions._tagWeight === capoTagWeight && !hasDynamicResolver) { + const entry = head.entries.get(0); + if (entry) + entry._precomputedTags = cached.tags; + } + return applyHeadToHtml(template, head.render()); +} +// @__NO_SIDE_EFFECTS__ +function transformHtmlTemplateRaw(head, html) { + const template = typeof html === "string" ? parseHtmlForIndexes(html) : html; + return applyHeadToHtml(template, head.render()); +} + +export { capoTagWeight, transformHtmlTemplate, transformHtmlTemplateRaw }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs new file mode 100644 index 0000000..5a60e3e --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs @@ -0,0 +1,673 @@ +const URL_META_KEYS = /* @__PURE__ */ new Set([ + "og:url", + "og:image", + "og:image:url", + "og:image:secure_url", + "og:video", + "og:video:url", + "og:video:secure_url", + "og:audio", + "og:audio:url", + "og:audio:secure_url", + "twitter:image", + "twitter:image:src", + "twitter:player", + "twitter:player:stream", + "payment:success_url" +]); +const KNOWN_META_PROPERTIES = /* @__PURE__ */ new Set([ + "article:author", + "article:expiration_time", + "article:modified_time", + "article:published_time", + "article:section", + "article:tag", + "book:author", + "book:isbn", + "book:release_date", + "book:tag", + "fb:app_id", + "og:audio", + "og:audio:secure_url", + "og:audio:type", + "og:audio:url", + "og:description", + "og:determiner", + "og:image", + "og:image:alt", + "og:image:height", + "og:image:secure_url", + "og:image:type", + "og:image:url", + "og:image:width", + "og:locale", + "og:locale:alternate", + "og:site_name", + "og:title", + "og:type", + "og:url", + "og:video", + "og:video:alt", + "og:video:duration", + "og:video:height", + "og:video:secure_url", + "og:video:type", + "og:video:url", + "og:video:width", + "payment:amount", + "payment:currency", + "payment:description", + "payment:expires_at", + "payment:id", + "payment:status", + "payment:success_url", + "profile:first_name", + "profile:gender", + "profile:last_name", + "profile:username" +]); +const KNOWN_META_NAMES = /* @__PURE__ */ new Set([ + "apple-itunes-app", + "apple-mobile-web-app-capable", + "apple-mobile-web-app-status-bar-style", + "apple-mobile-web-app-title", + "application-name", + "author", + "color-scheme", + "creator", + "description", + "fb:app_id", + "fediverse:creator", + "format-detection", + "generator", + "google-site-verification", + "google", + "googlebot", + "keywords", + "mobile-web-app-capable", + "msapplication-config", + "msapplication-tilecolor", + "msapplication-tileimage", + "publisher", + "rating", + "referrer", + "robots", + "theme-color", + "viewport", + "twitter:app:id:googleplay", + "twitter:app:id:ipad", + "twitter:app:id:iphone", + "twitter:app:name:googleplay", + "twitter:app:name:ipad", + "twitter:app:name:iphone", + "twitter:app:url:googleplay", + "twitter:app:url:ipad", + "twitter:app:url:iphone", + "twitter:card", + "twitter:creator", + "twitter:creator:id", + "twitter:data:1", + "twitter:data:2", + "twitter:description", + "twitter:image", + "twitter:image:alt", + "twitter:label:1", + "twitter:label:2", + "twitter:player", + "twitter:player:height", + "twitter:player:stream", + "twitter:player:width", + "twitter:site", + "twitter:site:id", + "twitter:title" +]); +const TAG_PRIORITY_ALIASES = ["critical", "high", "low"]; +const DEPRECATED_PROPS = { + children: { replacement: "innerHTML", ruleId: "deprecated-prop-children" }, + hid: { replacement: "key", ruleId: "deprecated-prop-hid-vmid" }, + vmid: { replacement: "key", ruleId: "deprecated-prop-hid-vmid" }, + body: { replacement: "tagPosition: 'bodyClose'", ruleId: "deprecated-prop-body" } +}; + +function levenshtein(a, b) { + const m = a.length; + const n = b.length; + const d = Array.from({ length: n + 1 }, (_, i) => i); + for (let i = 1; i <= m; i++) { + let prev = i - 1; + d[0] = i; + for (let j = 1; j <= n; j++) { + const tmp = d[j]; + d[j] = a[i - 1] === b[j - 1] ? prev : 1 + Math.min(prev, d[j], d[j - 1]); + prev = tmp; + } + } + return d[n]; +} +function findClosestMatch(value, knownSet) { + const threshold = value.length <= 8 ? 2 : 3; + let best; + let bestDist = threshold + 1; + for (const known of knownSet) { + if (Math.abs(known.length - value.length) > threshold) + continue; + const dist = levenshtein(value, known); + if (dist < bestDist) { + bestDist = dist; + best = known; + } + } + return best; +} + +const emptyMetaContent = (tag) => { + if (tag.tagType !== "meta") + return []; + if (!tag.keys.has("content")) + return []; + if (tag.props.content !== "") + return []; + const key = typeof tag.props.name === "string" && tag.props.name || typeof tag.props.property === "string" && tag.props.property || "meta"; + const diag = { + ruleId: "empty-meta-content", + message: `Meta tag "${key}" has empty content.`, + at: { kind: "prop", key: "content" } + }; + return [diag]; +}; + +const RESOLVABLE_OBJECT = ["boolean", "function", "null", "object"]; +const RESOLVABLE_TAG_LIST = ["array", "boolean", "function", "null"]; +const RESOLVABLE_TITLE = ["boolean", "function", "null", "number", "object", "string"]; +const ATTRIBUTE_SCALAR = ["boolean", "function", "null", "number", "string"]; +const ATTRIBUTE_STRUCTURED = ["array", "boolean", "function", "null", "number", "object", "string"]; +const INPUT_SHAPE_FIELDS = { + base: { + canonical: "base", + contexts: { head: RESOLVABLE_OBJECT } + }, + bodyattrs: { + canonical: "bodyAttrs", + contexts: { head: RESOLVABLE_OBJECT } + }, + class: { + canonical: "class", + contexts: { + bodyAttrs: ATTRIBUTE_STRUCTURED, + htmlAttrs: ATTRIBUTE_STRUCTURED + } + }, + htmlattrs: { + canonical: "htmlAttrs", + contexts: { head: RESOLVABLE_OBJECT } + }, + link: { + canonical: "link", + contexts: { head: RESOLVABLE_TAG_LIST } + }, + meta: { + canonical: "meta", + contexts: { head: RESOLVABLE_TAG_LIST } + }, + noscript: { + canonical: "noscript", + contexts: { head: RESOLVABLE_TAG_LIST } + }, + script: { + canonical: "script", + contexts: { head: RESOLVABLE_TAG_LIST } + }, + style: { + canonical: "style", + contexts: { + bodyAttrs: ATTRIBUTE_STRUCTURED, + head: RESOLVABLE_TAG_LIST, + htmlAttrs: ATTRIBUTE_STRUCTURED + } + }, + templateparams: { + canonical: "templateParams", + contexts: { head: ["object"] } + }, + title: { + canonical: "title", + contexts: { + bodyAttrs: ATTRIBUTE_SCALAR, + head: RESOLVABLE_TITLE, + htmlAttrs: ATTRIBUTE_SCALAR, + seoMeta: RESOLVABLE_TITLE + } + }, + titletemplate: { + canonical: "titleTemplate", + contexts: { + head: ["function", "null", "object", "string"], + seoMeta: ["function", "null", "object", "string"] + } + } +}; +function includes(kinds, kind) { + return kinds?.includes(kind) === true; +} +function formatKinds(kinds) { + return kinds.join(", "); +} +function invalidKnownHeadField(input, key, shape, kind) { + const expected = shape.contexts[input.context]; + if (includes(expected, kind)) + return void 0; + if ((input.context === "htmlAttrs" || input.context === "bodyAttrs") && kind === "null") + return void 0; + if (input.context === "head") { + return { + ruleId: "invalid-input-shape", + message: `"${shape.canonical}" in a head input must be one of: ${formatKinds(expected || [])}. Received ${kind}.`, + at: { kind: "prop-value", key } + }; + } + if (includes(shape.contexts.head, kind)) { + return { + ruleId: "invalid-input-shape", + message: `"${shape.canonical}" has a head input shape but appears in ${input.context}. Move it to the top-level head input.`, + at: { kind: "prop-value", key } + }; + } +} +function invalidAttributeField(input, key, kind) { + if (includes(ATTRIBUTE_SCALAR, kind)) + return void 0; + return { + ruleId: "invalid-input-shape", + message: `"${key}" in ${input.context} must resolve to a scalar attribute value. Received ${kind}.`, + at: { kind: "prop-value", key } + }; +} +function validateInputShape(input) { + const diagnostics = []; + const isAttributes = input.context === "htmlAttrs" || input.context === "bodyAttrs"; + for (const key of input.keys) { + const kind = input.valueKinds.get(key) ?? "unknown"; + if (kind === "unknown") + continue; + const shape = INPUT_SHAPE_FIELDS[key.toLowerCase()]; + const knownDiagnostic = shape ? invalidKnownHeadField(input, key, shape, kind) : void 0; + if (knownDiagnostic) { + diagnostics.push(knownDiagnostic); + continue; + } + if (isAttributes && !shape?.contexts[input.context]) { + const attributeDiagnostic = invalidAttributeField(input, key, kind); + if (attributeDiagnostic) + diagnostics.push(attributeDiagnostic); + } + } + return diagnostics; +} + +const noDeprecatedProps = (tag) => { + const out = []; + for (const key of tag.keys) { + if (!(key in DEPRECATED_PROPS)) + continue; + const { replacement } = DEPRECATED_PROPS[key]; + if (key === "body") { + if (tag.props.body !== true) + continue; + const fix2 = tag.keys.has("tagPosition") ? void 0 : { type: "replace-prop", key: "body", newSource: `tagPosition: 'bodyClose'` }; + out.push({ + ruleId: "deprecated-prop-body", + message: `"body" was removed in v3 of unhead. Use "${replacement}" instead.`, + at: { kind: "prop", key }, + fix: fix2 + }); + continue; + } + const newKey = key === "children" ? "innerHTML" : "key"; + const fix = tag.keys.has(newKey) ? void 0 : { type: "rename-prop", key, newKey }; + out.push({ + ruleId: key === "children" ? "deprecated-prop-children" : "deprecated-prop-hid-vmid", + message: `"${key}" was removed in v3 of unhead. Use "${replacement}" instead.`, + at: { kind: "prop", key }, + fix + }); + } + return out; +}; + +const HTML_CHARS_RE = /[<>]/; +const noHtmlInTitle = (input) => { + const title = input.props.title; + if (typeof title !== "string" || !HTML_CHARS_RE.test(title)) + return []; + const diag = { + ruleId: "html-in-title", + message: `Title contains HTML characters which will be escaped, not rendered: "${title}".`, + at: { kind: "prop-value", key: "title" } + }; + return [diag]; +}; + +const OG_PREFIX_RE = /^(?:og|article|book|profile|fb):/; +const noUnknownMeta = (tag) => { + if (tag.tagType !== "meta") + return []; + const out = []; + const property = tag.props.property; + if (typeof property === "string" && !KNOWN_META_PROPERTIES.has(property) && OG_PREFIX_RE.test(property)) { + const suggestion = findClosestMatch(property, KNOWN_META_PROPERTIES); + if (suggestion) { + out.push({ + ruleId: "possible-typo", + message: `Unknown meta property "${property}". Did you mean "${suggestion}"?`, + at: { kind: "prop-value", key: "property" }, + fix: { type: "replace-prop-value", key: "property", newSource: `'${suggestion}'` } + }); + } + } + const name = tag.props.name; + if (typeof name === "string") { + const lower = name.toLowerCase(); + if (!KNOWN_META_NAMES.has(lower) && (lower.startsWith("twitter:") || lower.startsWith("fediverse:") || !lower.includes(":"))) { + const suggestion = findClosestMatch(lower, KNOWN_META_NAMES); + if (suggestion) { + out.push({ + ruleId: "possible-typo", + message: `Unknown meta name "${name}". Did you mean "${suggestion}"?`, + at: { kind: "prop-value", key: "name" }, + fix: { type: "replace-prop-value", key: "name", newSource: `'${suggestion}'` } + }); + } + } + } + return out; +}; + +function isAbsolute(url) { + return url.startsWith("http://") || url.startsWith("https://"); +} +const nonAbsoluteCanonical = (tag) => { + if (tag.tagType !== "link") + return []; + if (tag.props.rel !== "canonical") + return []; + const href = tag.props.href; + if (typeof href !== "string") + return []; + if (isAbsolute(href)) + return []; + const diag = { + ruleId: "non-absolute-canonical", + message: `Canonical URL should be absolute, received "${href}".`, + at: { kind: "prop-value", key: "href" } + }; + return [diag]; +}; + +const ALIASES = ["critical", "high", "low"]; +const numericTagPriority = (tag) => { + const value = tag.props.tagPriority; + if (typeof value !== "number") + return []; + const diag = { + ruleId: "numeric-tag-priority", + message: `Numeric tagPriority (${value}) is brittle. Prefer an alias ('critical' | 'high' | 'low') or 'before:<key>' / 'after:<key>'.`, + at: { kind: "prop-value", key: "tagPriority" }, + suggestions: ALIASES.map((alias) => ({ + message: `Replace with '${alias}'`, + fix: { type: "replace-prop-value", key: "tagPriority", newSource: `'${alias}'` } + })) + }; + return [diag]; +}; + +const TAG_TO_HELPER = { + link: "defineLink", + script: "defineScript" +}; +const preferDefineHelpers = (tag, ctx) => { + if (!tag.inArray) + return []; + const helper = TAG_TO_HELPER[tag.tagType]; + if (!helper) + return []; + const localName = ctx?.importedHelpers?.get(helper); + const imported = localName !== void 0; + const fix = { type: "wrap-tag", wrapWith: localName ?? helper }; + const diag = { + ruleId: "prefer-define-helpers", + message: `Wrap this ${tag.tagType} entry in \`${helper}()\` so unhead can narrow its type.`, + fix: imported ? fix : void 0, + suggestions: imported ? void 0 : [{ message: `Wrap in \`${helper}()\` (you may need to import it).`, fix: { type: "wrap-tag", wrapWith: helper } }] + }; + return [diag]; +}; + +const preloadMissingAs = (tag) => { + if (tag.tagType !== "link") + return []; + if (tag.props.rel !== "preload") + return []; + if (tag.keys.has("as")) + return []; + const diag = { + ruleId: "preload-missing-as", + message: 'Preload link is missing the required "as" attribute.' + }; + return [diag]; +}; +const preloadFontCrossorigin = (tag) => { + if (tag.tagType !== "link") + return []; + if (tag.props.rel !== "preload") + return []; + if (tag.props.as !== "font") + return []; + if (tag.keys.has("crossorigin")) + return []; + const diag = { + ruleId: "preload-font-crossorigin", + message: 'Font preload requires "crossorigin" \u2014 without it the font will be fetched twice.', + fix: { type: "insert-after-prop", afterKey: "as", insert: `, crossorigin: 'anonymous'` } + }; + return [diag]; +}; + +const robotsConflict = (tag) => { + if (tag.tagType !== "meta") + return []; + if (tag.props.name !== "robots") + return []; + const content = tag.props.content; + if (typeof content !== "string") + return []; + const directives = content.toLowerCase().split(",").map((d) => d.trim()); + const out = []; + if (directives.includes("index") && directives.includes("noindex")) { + out.push({ + ruleId: "robots-conflict", + message: 'Robots meta has conflicting "index" and "noindex" directives.' + }); + } + if (directives.includes("follow") && directives.includes("nofollow")) { + out.push({ + ruleId: "robots-conflict", + message: 'Robots meta has conflicting "follow" and "nofollow" directives.' + }); + } + return out; +}; + +const deferOnModuleScript = (tag) => { + if (tag.tagType !== "script") + return []; + if (tag.props.type !== "module") + return []; + if (tag.props.defer !== true) + return []; + const diag = { + ruleId: "defer-on-module-script", + message: '"defer" is redundant on module scripts. Modules are deferred by default.', + at: { kind: "prop", key: "defer" }, + fix: { type: "remove-prop", key: "defer" } + }; + return [diag]; +}; +const scriptSrcWithContent = (tag) => { + if (tag.tagType !== "script") + return []; + if (typeof tag.props.src !== "string") + return []; + const hasInner = tag.keys.has("innerHTML") && tag.props.innerHTML !== "" || tag.keys.has("textContent") && tag.props.textContent !== ""; + if (!hasInner) + return []; + const diag = { + ruleId: "script-src-with-content", + message: 'Script has both "src" and inline content. The browser will ignore the inline content.' + }; + return [diag]; +}; + +const NUMERIC_RE = /^\d+$/; +const twitterHandleMissingAt = (tag) => { + if (tag.tagType !== "meta") + return []; + const name = tag.props.name; + if (name !== "twitter:site" && name !== "twitter:creator") + return []; + const content = tag.props.content; + if (typeof content !== "string") + return []; + if (content.startsWith("@") || NUMERIC_RE.test(content)) + return []; + const fixedSource = JSON.stringify(`@${content}`); + const diag = { + ruleId: "twitter-handle-missing-at", + message: `${name} should start with "@", received "${content}".`, + at: { kind: "prop-value", key: "content" }, + fix: { type: "replace-prop-value", key: "content", newSource: fixedSource } + }; + return [diag]; +}; + +const USER_SCALABLE_NO_RE = /user-scalable\s*=\s*(?:no|0|false)(?:[\s,;]|$)/i; +const MAX_SCALE_RE = /maximum-scale\s*=\s*1(?:\.\d+)?(?:[\s,;]|$)/i; +const viewportUserScalable = (tag) => { + if (tag.tagType !== "meta") + return []; + if (tag.props.name !== "viewport") + return []; + const content = tag.props.content; + if (typeof content !== "string") + return []; + const out = []; + if (USER_SCALABLE_NO_RE.test(content)) { + out.push({ + ruleId: "viewport-user-scalable", + message: 'viewport "user-scalable=no" prevents zooming and harms accessibility.' + }); + } + if (MAX_SCALE_RE.test(content)) { + out.push({ + ruleId: "viewport-user-scalable", + message: 'viewport "maximum-scale=1" limits zooming and may harm accessibility.' + }); + } + return out; +}; + +const TAG_TYPES = /* @__PURE__ */ new Set(["meta", "link", "script", "noscript", "style"]); +function valueKind(value) { + if (value === null) + return "null"; + if (Array.isArray(value)) + return "array"; + const kind = typeof value; + if (kind === "boolean" || kind === "function" || kind === "number" || kind === "object" || kind === "string") + return kind; + return "unknown"; +} +function inputShapeFromRuntime(context, input) { + const keys = /* @__PURE__ */ new Set(); + const valueKinds = /* @__PURE__ */ new Map(); + for (const [key, value] of Object.entries(input)) { + keys.add(key); + valueKinds.set(key, valueKind(value)); + } + return { context, keys, valueKinds }; +} +function tagInputFromRuntime(tag) { + if (!TAG_TYPES.has(tag.tag)) + return void 0; + const props = {}; + const keys = /* @__PURE__ */ new Set(); + for (const [k, v] of Object.entries(tag.props)) { + keys.add(k); + if (v == null) { + if (tag.tag === "meta" && k === "content") + props[k] = ""; + continue; + } + if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") { + if (tag.tag === "meta" && k === "name" && typeof v === "string") + props[k] = v.toLowerCase(); + else + props[k] = v; + } else { + props[k] = String(v); + } + } + if (tag.tag === "script" || tag.tag === "style" || tag.tag === "noscript") { + if (tag.innerHTML != null && tag.innerHTML !== "") { + keys.add("innerHTML"); + } + if (tag.textContent != null && tag.textContent !== "") { + keys.add("textContent"); + } + } + if (tag.tagPriority != null) { + keys.add("tagPriority"); + if (typeof tag.tagPriority === "string" || typeof tag.tagPriority === "number") + props.tagPriority = tag.tagPriority; + } + return { + tagType: tag.tag, + props, + keys + }; +} +function titleInputFromRuntime(titleTag) { + if (titleTag.tag !== "title") + return void 0; + const text = titleTag.textContent ?? titleTag.innerHTML ?? ""; + return { + callee: "runtime", + props: { title: text }, + keys: /* @__PURE__ */ new Set(["title"]) + }; +} + +const tagPredicates = { + "defer-on-module-script": deferOnModuleScript, + "empty-meta-content": emptyMetaContent, + "no-deprecated-props": noDeprecatedProps, + "no-unknown-meta": noUnknownMeta, + "non-absolute-canonical": nonAbsoluteCanonical, + "numeric-tag-priority": numericTagPriority, + "preload-font-crossorigin": preloadFontCrossorigin, + "preload-missing-as": preloadMissingAs, + "robots-conflict": robotsConflict, + "script-src-with-content": scriptSrcWithContent, + "twitter-handle-missing-at": twitterHandleMissingAt, + "viewport-user-scalable": viewportUserScalable +}; +const inputShapePredicates = { + "invalid-input-shape": validateInputShape +}; +const migrationTagPredicates = { + "prefer-define-helpers": preferDefineHelpers +}; +const headInputPredicates = { + "no-html-in-title": noHtmlInTitle +}; + +export { DEPRECATED_PROPS as D, INPUT_SHAPE_FIELDS as I, KNOWN_META_NAMES as K, TAG_PRIORITY_ALIASES as T, URL_META_KEYS as U, KNOWN_META_PROPERTIES as a, inputShapePredicates as b, noHtmlInTitle as c, deferOnModuleScript as d, emptyMetaContent as e, findClosestMatch as f, noUnknownMeta as g, headInputPredicates as h, inputShapeFromRuntime as i, nonAbsoluteCanonical as j, numericTagPriority as k, levenshtein as l, migrationTagPredicates as m, noDeprecatedProps as n, preloadFontCrossorigin as o, preferDefineHelpers as p, preloadMissingAs as q, robotsConflict as r, scriptSrcWithContent as s, tagInputFromRuntime as t, tagPredicates as u, titleInputFromRuntime as v, twitterHandleMissingAt as w, validateInputShape as x, viewportUserScalable as y }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs new file mode 100644 index 0000000..f9787ec --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs @@ -0,0 +1,6 @@ +const hasOwnProperty = Object.prototype.hasOwnProperty; +function hasOwn(object, key) { + return hasOwnProperty.call(object, key); +} + +export { hasOwn as h }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs new file mode 100644 index 0000000..6d1c945 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs @@ -0,0 +1,17 @@ +import { HookableCore } from 'hookable'; + +function createHooks(hooks) { + const instance = new HookableCore(); + for (const key in hooks || {}) { + instance.hook(key, hooks[key]); + } + return instance; +} +function callHook(head, hook, ctx) { + const hooks = head.hooks?._hooks?.[hook]; + if (!hooks?.length) + return; + return head.hooks?.callHook(hook, ctx); +} + +export { callHook as a, createHooks as c }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.C5Bksi2B.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.C5Bksi2B.mjs new file mode 100644 index 0000000..160a20b --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.C5Bksi2B.mjs @@ -0,0 +1,49 @@ +import { r as registerPlugin } from './unhead.D7HkBzZn.mjs'; + +function createClientHeadAdapter(core, hooks, render) { + const corePush = core.push; + const head = core; + head.ssr = false; + head.hooks = hooks; + head.dirty = !!head.dirty; + head.use = (p) => registerPlugin(head, p); + head.render = () => render(head); + function notify() { + hooks.callHook("entries:updated", head); + if (!head._b) + head.render(); + } + head.invalidate = () => { + for (const entry of head.entries.values()) + delete entry._tags; + head.dirty = true; + notify(); + }; + head.push = (input, entryOptions) => { + const unhook = entryOptions?.onRendered ? hooks.hook("dom:rendered", entryOptions.onRendered) : void 0; + const active = corePush(input, entryOptions); + const entry = core.entries.get(active._i); + if (entry) + entry._o = input; + head.dirty = true; + notify(); + return { + _i: active._i, + patch(input2) { + active.patch(input2); + head.dirty = true; + notify(); + }, + dispose() { + unhook?.(); + if (core.entries.has(active._i)) { + active.dispose(); + head.invalidate(); + } + } + }; + }; + return head; +} + +export { createClientHeadAdapter as c }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs new file mode 100644 index 0000000..e6b278e --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs @@ -0,0 +1,32 @@ +const SelfClosingTags = /* @__PURE__ */ new Set(["meta", "link", "base"]); +const DupeableTags = /* @__PURE__ */ new Set(["link", "style", "script", "noscript"]); +const TagsWithInnerContent = /* @__PURE__ */ new Set(["title", "titleTemplate", "script", "style", "noscript"]); +const HasElementTags = /* @__PURE__ */ new Set(["base", "meta", "link", "style", "script", "noscript"]); +const ValidHeadTags = /* @__PURE__ */ new Set(["title", "base", "htmlAttrs", "bodyAttrs", "meta", "link", "style", "script", "noscript"]); +const UniqueTags = /* @__PURE__ */ new Set(["base", "title", "titleTemplate", "bodyAttrs", "htmlAttrs", "templateParams"]); +const TagConfigKeys = /* @__PURE__ */ new Set(["key", "tagPosition", "tagPriority", "tagDuplicateStrategy", "innerHTML", "textContent", "processTemplateParams"]); +const ScriptNetworkEvents = /* @__PURE__ */ new Set(["onload", "onerror"]); +const UsesMergeStrategy = /* @__PURE__ */ new Set(["templateParams", "htmlAttrs", "bodyAttrs"]); +const MetaTagsArrayable = /* @__PURE__ */ new Set([ + "theme-color", + "google-site-verification", + "author", + "og:locale:alternate", + "og:image", + "og:video", + "og:audio", + "article:author", + "article:tag", + "book:author", + "book:tag", + "twitter:image" +]); +const TagPriorityAliases = { critical: -8, high: -1, low: 2 }; +const hasContent = (value) => typeof value === "number" ? Number.isFinite(value) : value; + +// @__NO_SIDE_EFFECTS__ +function isUnsafeKey(key) { + return key === "__proto__" || key === "constructor" || key === "prototype"; +} + +export { DupeableTags as D, HasElementTags as H, MetaTagsArrayable as M, ScriptNetworkEvents as S, TagConfigKeys as T, UniqueTags as U, ValidHeadTags as V, SelfClosingTags as a, TagPriorityAliases as b, TagsWithInnerContent as c, UsesMergeStrategy as d, hasContent as h, isUnsafeKey as i }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs new file mode 100644 index 0000000..c5fe1f6 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs @@ -0,0 +1,7 @@ +function defineHeadPlugin(plugin, key) { + if (key && typeof plugin === "function") + plugin.key = key; + return plugin; +} + +export { defineHeadPlugin as d }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.C_7zwq8E.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.C_7zwq8E.mjs new file mode 100644 index 0000000..f0dffb4 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.C_7zwq8E.mjs @@ -0,0 +1,11 @@ +const VALID_STREAM_KEY_RE = /^[$_a-z][$\w]*$/i; +function parseStreamKey(streamKey) { + if (typeof streamKey !== "string" || !VALID_STREAM_KEY_RE.test(streamKey)) { + throw new Error( + `[unhead] Invalid streamKey: must be a valid JavaScript identifier matching ${VALID_STREAM_KEY_RE}. Received: ${JSON.stringify(streamKey)}` + ); + } + return streamKey; +} + +export { parseStreamKey as p }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CaeaMM5q.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CaeaMM5q.mjs new file mode 100644 index 0000000..d48224e --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.CaeaMM5q.mjs @@ -0,0 +1,19 @@ +import { c as createUnhead } from './unhead.D7HkBzZn.mjs'; +import { b as TagPriorityAliases } from './unhead.CGPOfp5O.mjs'; +import { c as createHooks } from './unhead.Bm4Y6XQI.mjs'; +import { c as createClientHeadAdapter } from './unhead.C5Bksi2B.mjs'; +import { c as createDomRenderer } from './unhead.DD4N5B4k.mjs'; + +const tagWeight = (tag) => typeof tag.tagPriority === "number" ? tag.tagPriority : 100 + (TagPriorityAliases[tag.tagPriority] || 0); +function createHead(options = {}) { + options.document = options.document || (typeof window !== "undefined" ? document : void 0); + const renderer = options.render || createDomRenderer({ document: options.document }); + const core = createUnhead(renderer, { document: options.document, propResolvers: options.propResolvers, _tagWeight: tagWeight, init: [] }); + const hooks = createHooks(options.hooks); + const head = createClientHeadAdapter(core, hooks, renderer); + options.plugins?.forEach((p) => head.use(p)); + options.init?.forEach((e) => e && head.push(e)); + return head; +} + +export { createHead as c }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs new file mode 100644 index 0000000..1032855 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs @@ -0,0 +1,59 @@ +function registerPlugin(head, p) { + if (typeof p === "function" && p.key && head.plugins.has(p.key)) + return; + const plugin = typeof p === "function" ? p(head) : p; + const key = plugin.key || String(head.plugins.size + 1); + if (!head.plugins.get(key)) { + head.plugins.set(key, plugin); + for (const k in plugin.hooks || {}) + head.hooks?.hook(k, plugin.hooks[k]); + } +} +// @__NO_SIDE_EFFECTS__ +function createUnhead(renderer, resolvedOptions = {}) { + const ssr = !resolvedOptions.document; + const entries = /* @__PURE__ */ new Map(); + const plugins = /* @__PURE__ */ new Map(); + const head = { + _entryCount: 1, + _h: 0, + plugins, + resolvedOptions, + ssr, + entries, + // adapters decorate this same object; reserve the slot to keep its shape stable + hooks: void 0, + render: () => renderer(head), + use: (p) => registerPlugin(head, p), + push(input, _options) { + const _i = _options?._index ?? head._entryCount++; + const options = _options ? { ..._options } : {}; + delete options.head; + delete options.onRendered; + delete options._index; + const entry = { _i, input, options }; + entries.set(_i, entry); + const active = { + _i, + dispose() { + entries.delete(_i); + }, + patch(input2) { + if (ssr) { + entry.input = input2; + delete entry._tags; + } else { + entry._pending = input2; + } + if (!entries.has(_i)) + entries.set(_i, entry); + } + }; + return active; + } + }; + resolvedOptions.init?.forEach((e) => e && head.push(e)); + return head; +} + +export { createUnhead as c, registerPlugin as r }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.D9VfQWNo.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.D9VfQWNo.mjs new file mode 100644 index 0000000..2a0560f --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.D9VfQWNo.mjs @@ -0,0 +1,240 @@ +import { d as defineHeadPlugin } from './unhead.CHEy9ana.mjs'; +import { p as processTemplateParams } from './unhead.DspMpm6y.mjs'; + +const sortTags = (a, b) => a._w === b._w ? a._p - b._p : a._w - b._w; +const formatKey = (k) => !k.includes(":key") ? k.split(":").join(":key:") : k; +const AliasSortingPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "aliasSorting", + hooks: { + "tags:resolve": (ctx) => { + let m = false; + for (const t of ctx.tags) { + const p = t.tagPriority; + if (!p) + continue; + const s = String(p); + if (s.startsWith("before:")) { + const k = formatKey(s.slice(7)); + const l = ctx.tagMap.get(k); + if (l) { + if (typeof l.tagPriority === "number") + t.tagPriority = l.tagPriority; + t._p = l._p - 1; + m = true; + } + } else if (s.startsWith("after:")) { + const k = formatKey(s.slice(6)); + const l = ctx.tagMap.get(k); + if (l) { + if (typeof l.tagPriority === "number") + t.tagPriority = l.tagPriority; + t._p = l._p + 1; + m = true; + } + } + } + if (m) + ctx.tags = ctx.tags.sort(sortTags); + } + } +}); + +const DeprecationsPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "deprecations", + hooks: { + "entries:normalize": ({ tags }) => { + for (const tag of tags) { + if (tag.props.children) { + tag.innerHTML = tag.props.children; + delete tag.props.children; + } + if (tag.props.hid) { + tag.key = tag.props.hid; + delete tag.props.hid; + } + if (tag.props.vmid) { + tag.key = tag.props.vmid; + delete tag.props.vmid; + } + if ("body" in tag.props) { + if (tag.props.body) { + tag.tagPosition = "bodyClose"; + } + delete tag.props.body; + } + if (tag.props.renderPriority != null) { + tag.tagPriority = tag.props.renderPriority; + delete tag.props.renderPriority; + } + } + } + } +}); + +function isThenable(v) { + return typeof v?.then === "function"; +} +const maxSyncPrefix = 256; +function walkArrayPromises(v, index) { + if (index === v.length) + return; + if (index === maxSyncPrefix) { + const values2 = new Array(v.length); + let hasThenable = false; + for (; index < v.length; index++) { + const value2 = walkPromises(v[index]); + values2[index] = value2; + hasThenable ||= isThenable(value2); + } + return hasThenable ? values2 : void 0; + } + const value = walkPromises(v[index]); + if (isThenable(value)) { + const values2 = new Array(v.length); + values2[index] = value; + for (let rest = index + 1; rest < v.length; rest++) + values2[rest] = walkPromises(v[rest]); + return values2; + } + const values = walkArrayPromises(v, index + 1); + if (values) + values[index] = value; + return values; +} +function walkObjectPromises(v, keys, index) { + if (index === keys.length) + return; + if (index === maxSyncPrefix) { + const values2 = new Array(keys.length); + let hasThenable = false; + for (; index < keys.length; index++) { + const value2 = walkPromises(v[keys[index]]); + values2[index] = value2; + hasThenable ||= isThenable(value2); + } + return hasThenable ? values2 : void 0; + } + const value = walkPromises(v[keys[index]]); + if (isThenable(value)) { + const values2 = new Array(keys.length); + values2[index] = value; + for (let rest = index + 1; rest < keys.length; rest++) + values2[rest] = walkPromises(v[keys[rest]]); + return values2; + } + const values = walkObjectPromises(v, keys, index + 1); + if (values) + values[index] = value; + return values; +} +function walkPromises(v) { + if (typeof v === "function") + return v; + if (isThenable(v)) + return Promise.resolve(v).then(walkPromises); + if (Array.isArray(v)) { + const values = walkArrayPromises(v, 0); + return values ? Promise.all(values) : v; + } + if (v?.constructor === Object) { + const keys = Object.keys(v); + const values = walkObjectPromises(v, keys, 0); + if (values) { + return Promise.all(values).then((resolved) => Object.fromEntries( + keys.map((key, index) => [key, resolved[index]]) + )); + } + } + return v; +} +const PromisesPlugin = /* @__PURE__ */ defineHeadPlugin((head) => { + const pending = /* @__PURE__ */ new WeakMap(); + return { + key: "promises", + hooks: { + "entries:resolve": (ctx) => { + for (let index = ctx.entries.length - 1; index >= 0; index--) { + const entry = ctx.entries[index]; + const input = entry.input; + if (pending.get(entry) === input) { + ctx.entries.splice(index, 1); + continue; + } + const result = walkPromises(input); + if (!isThenable(result)) { + pending.delete(entry); + continue; + } + pending.set(entry, input); + ctx.entries.splice(index, 1); + void Promise.resolve(result).then( + (resolved) => { + if (pending.get(entry) !== input) + return; + pending.delete(entry); + entry.input = resolved; + delete entry._tags; + head.invalidate?.(); + }, + () => { + if (pending.get(entry) === input) + pending.delete(entry); + } + ); + } + } + } + }; +}, "promises"); + +const SupportedAttrs = { + meta: "content", + link: "href", + htmlAttrs: "lang" +}; +const contentAttrs = ["innerHTML", "textContent"]; +function processIfNeeded(value, params, separator, isJson = false) { + return typeof value === "string" && value.includes("%") ? processTemplateParams(value, params, separator, isJson) : value; +} +const TemplateParamsPlugin = /* @__PURE__ */ defineHeadPlugin((head) => { + return { + key: "template-params", + hooks: { + "tags:resolve": ({ tagMap, tags }) => { + const params = tagMap.get("templateParams")?.props || {}; + const sep = params.separator || "|"; + delete params.separator; + params.pageTitle = processIfNeeded( + // find templateParams + params.pageTitle || head._title || "", + params, + sep + ); + for (const tag of tags) { + if (tag.processTemplateParams === false) { + continue; + } + const v = SupportedAttrs[tag.tag]; + if (v && typeof tag.props[v] === "string") { + tag.props[v] = processIfNeeded(tag.props[v], params, sep); + } else if (tag.processTemplateParams || tag.tag === "titleTemplate" || tag.tag === "title") { + for (const p of contentAttrs) { + if (typeof tag[p] === "string") + tag[p] = processIfNeeded(tag[p], params, sep, tag.tag === "script" && typeof tag.props.type === "string" && tag.props.type.endsWith("json")); + } + } + } + head._templateParams = params; + head._separator = sep; + }, + "tags:afterResolve": ({ tagMap }) => { + const title = tagMap.get("title"); + if (title?.textContent && title.processTemplateParams !== false) { + title.textContent = processIfNeeded(title.textContent, head._templateParams, head._separator); + } + } + } + }; +}, "template-params"); + +export { AliasSortingPlugin as A, DeprecationsPlugin as D, PromisesPlugin as P, TemplateParamsPlugin as T }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DD4N5B4k.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DD4N5B4k.mjs new file mode 100644 index 0000000..5817cf6 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DD4N5B4k.mjs @@ -0,0 +1,224 @@ +import { H as HasElementTags } from './unhead.CGPOfp5O.mjs'; +import { r as resolveTags, i as isMetaArrayDupeKey, b as normalizeProps, d as dedupeKey, h as hashTag } from './unhead.DJuZwX9c.mjs'; +import { a as callHook } from './unhead.Bm4Y6XQI.mjs'; + +const WHITESPACE_RE = /\s+/; +// @__NO_SIDE_EFFECTS__ +function createDomRenderer(options = {}) { + return (head) => _renderDOMHead(head, options); +} +function renderDOMHead(head, options = {}) { + return _renderDOMHead(head, options); +} +function hasPendingEntries(head) { + for (const entry of head.entries.values()) { + if (entry._pending !== void 0) + return true; + } + return false; +} +function createDomState(head, dom) { + const state = { _d: dom, _t: dom.title, _e: /* @__PURE__ */ new Map([["htmlAttrs", dom.documentElement], ["bodyAttrs", dom.body]]), _p: {}, _s: {}, _l: /* @__PURE__ */ new Map() }; + for (const entry of head.entries.values()) { + if (entry._o !== void 0) { + const orig = entry._o; + for (const t of ["bodyAttrs", "htmlAttrs"]) { + const cls = orig[t]?.class; + if (typeof cls === "string") { + const $el = state._e.get(t); + for (const c of cls.split(WHITESPACE_RE)) { + if (c) + state._p[`${t}:attr:class:${c}`] = () => $el.classList.remove(c); + } + } + } + } + } + return state; +} +function _renderDOMHead(head, options = {}) { + const dom = options.document || head.resolvedOptions.document; + const activeState = head._dom; + if (!dom || head._du || activeState && activeState._d === dom && !head.dirty && !hasPendingEntries(head)) + return false; + const defaultView = dom.defaultView; + head._du = true; + let didRender = false; + try { + let track = function(key, fn, fresh) { + renderState._s[key] = !fresh && previous[key] || fn; + delete previous[key]; + }, trackEvent = function(id, k, ev, source, $el, target) { + const key = `${id}:event:${k}`; + const prev = renderState._l.get(key); + if (prev && prev[0] === target && prev[1] === ev && prev[2] === source) { + track(key, prev[4]); + return; + } + prev?.[4](); + const dk = `data-${k}`; + const handler = ((e) => source.call($el, e)); + const cleanup = () => { + target.removeEventListener(ev, handler); + if ($el.getAttribute(dk) === "") + $el.removeAttribute(dk); + if (renderState._l.get(key)?.[3] === handler) + renderState._l.delete(key); + }; + target.addEventListener(ev, handler); + renderState._l.set(key, [target, ev, source, handler, cleanup]); + $el.setAttribute(dk, ""); + track(key, cleanup, true); + }, trackCtx = function({ id, $el, tag }) { + renderState._e.set(id, $el); + if (!tag.tag.endsWith("Attrs")) { + const text = tag.textContent; + if (text != null && text !== "") { + if (text !== $el.textContent) + $el.textContent = text; + track(`${id}:text`, () => { + if ($el.textContent === text) + $el.textContent = ""; + }, true); + } + const html = tag.innerHTML; + if (html != null && html !== "") { + if (html !== $el.innerHTML) + $el.innerHTML = html; + track(`${id}:html`, () => { + if ($el.innerHTML === html) + $el.innerHTML = ""; + }, true); + } + const elKey = `${id}:el`; + track(elKey, previous[elKey] || (() => { + $el?.remove(); + renderState._e.delete(id); + })); + } + for (const k in tag.props) { + const v = tag.props[k]; + if (k[0] === "o" && k[1] === "n" && typeof v === "function") { + const ev = k.slice(2); + if ($el?.dataset?.[`${k}fired`]) + v.call($el, new (defaultView?.Event || Event)(ev)); + trackEvent(id, k, ev, v, $el, tag.tag === "bodyAttrs" && defaultView ? defaultView : $el); + continue; + } + const ck = `${id}:attr:${k}`; + if (k === "class" && v) { + for (const c of v) { + const key = `${ck}:${c}`; + track(key, previous[key] || (() => $el.classList.remove(c))); + if (!$el.classList.contains(c)) + $el.classList.add(c); + } + } else if (k === "style" && v) { + for (const [sk, sv] of v) { + const key = `${ck}:${sk}`; + track(key, previous[key] || (() => $el.style.removeProperty(sk))); + $el.style.setProperty(sk, sv); + } + } else if (v !== false && v !== null) { + if ($el.getAttribute(k) !== v) + $el.setAttribute(k, v === true ? "" : String(v)); + track(ck, previous[ck] || (() => $el.removeAttribute(k))); + } + } + }; + const beforeRenderCtx = { shouldRender: true, tags: [] }; + callHook(head, "dom:beforeRender", beforeRenderCtx); + if (!beforeRenderCtx.shouldRender) + return false; + let state = activeState; + if (state?._d !== dom) { + if (state) { + for (const k in state._s) state._s[k](); + for (const k in state._p) state._p[k](); + state._s = state._p = {}; + state._e.clear(); + state._l.clear(); + } + state = void 0; + } + if (!state) { + state = createDomState(head, dom); + } else { + state._p = state._s; + } + state._s = {}; + const renderState = state; + const previous = renderState._p; + const pending = []; + const frag = {}; + head.dirty = false; + const rawTags = resolveTags(head, options.tagWeight ? { tagWeight: options.tagWeight } : void 0); + const tags = []; + const dupeKeyCounter = {}; + for (const tag of rawTags) { + const count = dupeKeyCounter[tag._d] || 0; + const id = (count ? `${tag._d}:${count}` : tag._d) || tag._h; + const ctx = { tag, id, shouldRender: true }; + if (tag.tag === "meta" && tag._d && isMetaArrayDupeKey(tag._d)) + dupeKeyCounter[tag._d] = count + 1; + tags.push(ctx); + if (tag.tag === "title") { + dom.title = tag.textContent; + track("title:", () => dom.title = renderState._t); + continue; + } + ctx.$el = renderState._e.get(id); + if (ctx.$el) + trackCtx(ctx); + else if (HasElementTags.has(tag.tag)) + pending.push(ctx); + } + if (pending.length) { + const tracked = new Set(renderState._e.values()); + for (const el of [...dom.body.children, ...dom.head.children]) { + const elTag = el.tagName.toLowerCase(); + if (!HasElementTags.has(elTag) || tracked.has(el)) + continue; + const props = { innerHTML: el.innerHTML }; + for (const n of el.getAttributeNames()) + props[n] = el.getAttribute(n); + const next = normalizeProps({ tag: elTag, props: {} }, props); + next.key = el.getAttribute("data-hid") || void 0; + const dedupe = dedupeKey(next) || hashTag(next); + let k = dedupe; + let c = 1; + while (renderState._e.has(k)) + k = `${dedupe}:${c++}`; + renderState._e.set(k, el); + } + } + for (const ctx of pending) { + const found = renderState._e.get(ctx.id); + ctx.$el = found || dom.createElement(ctx.tag.tag); + trackCtx(ctx); + if (!found) + (frag[ctx.tag.tagPosition || "head"] ??= dom.createDocumentFragment()).appendChild(ctx.$el); + } + if (frag.head) + dom.head.appendChild(frag.head); + if (frag.bodyOpen) + dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild); + if (frag.bodyClose) + dom.body.appendChild(frag.bodyClose); + for (const k in previous) + previous[k](); + head._dom = renderState; + didRender = true; + callHook(head, "dom:rendered", { renders: tags }); + } catch (e) { + head.dirty = true; + throw e; + } finally { + head._du = false; + } + if (didRender && (head.dirty || hasPendingEntries(head))) + _renderDOMHead(head, options); + return didRender; +} + +export { createDomRenderer as c, renderDOMHead as r }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DGl9jcjg.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DGl9jcjg.mjs new file mode 100644 index 0000000..b8f1db4 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DGl9jcjg.mjs @@ -0,0 +1,196 @@ +import { c as createUnhead } from './unhead.D7HkBzZn.mjs'; +import { I as INVALID_ATTR_NAME_RE, r as resolveTags, n as normalizeEntryToTags, d as dedupeKey, h as hashTag } from './unhead.DJuZwX9c.mjs'; +import { a as callHook, c as createHooks } from './unhead.Bm4Y6XQI.mjs'; +import { b as TagPriorityAliases, a as SelfClosingTags, c as TagsWithInnerContent } from './unhead.CGPOfp5O.mjs'; + +const isTruthy = (v) => v === "" || v === true; +function capoTagWeight(tag) { + if (typeof tag.tagPriority === "number") + return tag.tagPriority; + let weight = 100; + const offset = TagPriorityAliases[tag.tagPriority] || 0; + if (tag.tag === "base") { + weight = -10; + } else if (tag.tag === "title") { + weight = 10; + } else if (tag.tag === "meta") { + weight = tag.props["http-equiv"] === "content-security-policy" ? -30 : tag.props.charset ? -20 : tag.props.name === "viewport" ? -15 : weight; + } else if (tag.tag === "link" && tag.props.rel) { + const rel = tag.props.rel; + weight = rel === "preconnect" ? 20 : rel === "stylesheet" ? 60 : rel === "preload" || rel === "modulepreload" ? 70 : rel === "prefetch" || rel === "dns-prefetch" || rel === "prerender" ? 90 : weight; + } else if (tag.tag === "script") { + const type = typeof tag.props.type === "string" ? tag.props.type : ""; + const json = type.endsWith("json"); + if (type === "importmap") + weight = 25; + else if (type === "speculationrules") + weight = 90; + else if (isTruthy(tag.props.async)) + weight = 30; + else if (tag.props.src && !isTruthy(tag.props.defer) && type !== "module" && !json || (tag.innerHTML || tag.textContent) && !json) + weight = 50; + else if (isTruthy(tag.props.defer) && tag.props.src || type === "module") + weight = 80; + } else if (tag.tag === "style") { + weight = tag.innerHTML && /@import/.test(tag.innerHTML) ? 40 : 60; + } + return (weight || 100) + offset; +} + +const DOUBLE_QUOTE_RE = /"/g; +function encodeAttribute(value) { + const s = typeof value === "string" ? value : String(value); + return s.includes('"') ? s.replace(DOUBLE_QUOTE_RE, """) : s; +} +function propsToString(props) { + let attrs = ""; + for (const key in props) { + if (!Object.hasOwn(props, key) || !key || INVALID_ATTR_NAME_RE.test(key)) + continue; + let value = props[key]; + if (typeof value !== "string") { + if (key === "class") { + let out = ""; + for (const c of value) out += out ? ` ${c}` : c; + value = out; + } else if (key === "style") { + let out = ""; + for (const [k, v] of value) out += out ? `;${k}:${v}` : `${k}:${v}`; + value = out; + } + } + if (value !== false && value !== null) { + attrs += value === true ? ` ${key}` : ` ${key}="${encodeAttribute(value)}"`; + } + } + return attrs; +} + +const ESCAPE_HTML_RE = /[&<>"'/]/g; +const CLOSE_TAG_RE = {}; +const ESCAPE_HTML_MAP = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" }; +function escapeHtml(str) { + return str.replace(ESCAPE_HTML_RE, (c) => ESCAPE_HTML_MAP[c]); +} +function tagToString(tag) { + const attrs = propsToString(tag.props); + const openTag = `<${tag.tag}${attrs}>`; + if (SelfClosingTags.has(tag.tag)) + return openTag; + if (!TagsWithInnerContent.has(tag.tag)) + return `${openTag}</${tag.tag}>`; + let content = String(tag.textContent ?? tag.innerHTML ?? ""); + content = tag.tag === "title" ? escapeHtml(content) : content.replace(CLOSE_TAG_RE[tag.tag] ||= new RegExp(`</${tag.tag}`, "gi"), `<\\/${tag.tag}`); + return `${openTag}${content}</${tag.tag}>`; +} + +function ssrRenderTags(tags, options) { + const schema = { htmlAttrs: {}, bodyAttrs: {}, tags: { head: "", bodyClose: "", bodyOpen: "" } }; + const lineBreaks = !options?.omitLineBreaks ? "\n" : ""; + for (const tag of tags) { + if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") { + Object.assign(schema[tag.tag], tag.props); + continue; + } + const s = tagToString(tag); + const tagPosition = tag.tagPosition || "head"; + schema.tags[tagPosition] += schema.tags[tagPosition] ? `${lineBreaks}${s}` : s; + } + return { + headTags: schema.tags.head, + bodyTags: schema.tags.bodyClose, + bodyTagsOpen: schema.tags.bodyOpen, + htmlAttrs: propsToString(schema.htmlAttrs), + bodyAttrs: propsToString(schema.bodyAttrs) + }; +} + +// @__NO_SIDE_EFFECTS__ +function createServerRenderer(options = {}) { + return (head) => { + const beforeRenderCtx = { shouldRender: true }; + callHook(head, "ssr:beforeRender", beforeRenderCtx); + if (!beforeRenderCtx.shouldRender) + return ssrRenderTags([]); + const ctx = { + tags: options.resolvedTags || resolveTags(head, { tagWeight: options.tagWeight ?? capoTagWeight }), + options: { ...options } + }; + callHook(head, "ssr:render", ctx); + const html = ssrRenderTags(ctx.tags, ctx.options); + const renderCtx = { tags: ctx.tags, html }; + callHook(head, "ssr:rendered", renderCtx); + return renderCtx.html; + }; +} +// @__NO_SIDE_EFFECTS__ +function renderSSRHead(head, options) { + return (/* @__PURE__ */ createServerRenderer(options))(head); +} + +const DEFAULT_INIT = { + htmlAttrs: { + lang: "en" + }, + meta: [ + { + charset: "utf-8" + }, + { + name: "viewport", + content: "width=device-width, initial-scale=1" + } + ] +}; +const serverPropResolver = /* @__PURE__ */ Object.assign( + (k, v) => { + if (k && k.startsWith("on") && typeof v === "function") { + return `this.dataset.${k}fired = true`; + } + return v; + }, + { _static: true } +); +let defaultInitTags; +function getDefaultInitTags() { + if (!defaultInitTags) { + defaultInitTags = normalizeEntryToTags(DEFAULT_INIT, []); + for (let i = 0; i < defaultInitTags.length; i++) { + const t = defaultInitTags[i]; + t._w = capoTagWeight(t); + t._p = (1 << 10) + i; + t._d = dedupeKey(t); + if (!t._d) + t._h = hashTag(t); + } + } + return defaultInitTags; +} +// @__NO_SIDE_EFFECTS__ +function createHead(options = {}) { + const tagWeight = options.tagWeight || capoTagWeight; + const core = createUnhead(createServerRenderer({ tagWeight, omitLineBreaks: options.omitLineBreaks }), { + _tagWeight: tagWeight, + // @ts-expect-error untyped + document: false, + experimentalStreamKey: options.experimentalStreamKey, + propResolvers: [ + ...options.propResolvers || [], + serverPropResolver + ], + init: [ + options.disableDefaults ? void 0 : DEFAULT_INIT, + ...options.init || [] + ] + }); + if (!options.disableDefaults && !options.tagWeight && !options.propResolvers?.some((r) => !r._static)) { + const defaultEntry = core.entries.get(1); + if (defaultEntry) + defaultEntry._precomputedTags = getDefaultInitTags(); + } + core.hooks = createHooks(options.hooks); + options.plugins?.forEach((p) => core.use(p)); + return core; +} + +export { capoTagWeight as a, createServerRenderer as b, createHead as c, escapeHtml as e, propsToString as p, renderSSRHead as r, ssrRenderTags as s, tagToString as t }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DJuZwX9c.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DJuZwX9c.mjs new file mode 100644 index 0000000..c77eb72 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DJuZwX9c.mjs @@ -0,0 +1,400 @@ +import { U as UniqueTags, c as TagsWithInnerContent, M as MetaTagsArrayable, i as isUnsafeKey, H as HasElementTags, T as TagConfigKeys, D as DupeableTags, d as UsesMergeStrategy, V as ValidHeadTags, h as hasContent } from './unhead.CGPOfp5O.mjs'; +import { a as callHook } from './unhead.Bm4Y6XQI.mjs'; + +const META_NOREWRITE_RE = /^(?:viewport|description|keywords|robots)$/; +const META_KEY_ATTRS = ["name", "property", "http-equiv"]; +function isMetaArrayDupeKey(v) { + const i = v.indexOf(":"); + if (i === -1) + return false; + const key = v.slice(i + 1); + return MetaTagsArrayable.has(key) || key.startsWith("og:image:") || key.startsWith("og:video:") || key.startsWith("og:audio:") || key.startsWith("twitter:image:"); +} +function dedupeKey(tag) { + const { props, tag: t, key } = tag; + if (UniqueTags.has(t)) + return t; + if (t === "link") { + if (props.rel === "canonical") + return "canonical"; + if (props.rel === "alternate" && props.hreflang) + return `alternate:${props.hreflang}`; + } + if (props.charset) + return "charset"; + if (t === "meta") { + for (const n of META_KEY_ATTRS) { + const v = props[n]; + if (v !== void 0) + return `meta:${v}${(typeof v !== "string" || !v.includes(":")) && !META_NOREWRITE_RE.test(v) && key ? `:key:${key}` : ""}`; + } + } + if (key) + return `${t}:key:${key}`; + if (props.id) + return `${t}:id:${props.id}`; + if (t === "link" && props.rel && props.href) + return `link:${props.rel}:${props.href}`; + return TagsWithInnerContent.has(t) && (tag.textContent || tag.innerHTML) ? `${t}:content:${tag.textContent || tag.innerHTML}` : void 0; +} +function hashTag(tag) { + const identity = tag._h || tag._d || tag.textContent || tag.innerHTML; + if (identity) + return String(identity); + const keys = Object.keys(tag.props).sort(); + let hash = `${tag.tag}:`; + let separator = ""; + for (const key of keys) { + hash += `${separator}${key}:${String(tag.props[key])}`; + separator = ","; + } + return hash; +} + +function walkResolver(val, resolve, key) { + if (key === "_resolver") + return val; + if (typeof val === "function" && (!key || key !== "titleTemplate" && !key.startsWith("on"))) + val = val(); + const v = resolve ? resolve(key, val) : val; + if (Array.isArray(v)) { + let out; + for (let i = 0; i < v.length; i++) { + const r = walkResolver(v[i], resolve); + if (out) { + out[i] = r; + } else if (r !== v[i]) { + out = v.slice(0, i); + out[i] = r; + } + } + return out || v; + } + if (v?.constructor === Object) { + let next; + for (const k in v) { + const unsafe = isUnsafeKey(k); + const r = unsafe ? void 0 : walkResolver(v[k], resolve, k); + if (!next && (unsafe || r !== v[k])) { + next = {}; + for (const pk in v) { + if (pk === k) + break; + next[pk] = v[pk]; + } + } + if (next && !unsafe) + next[k] = r; + } + return next || v; + } + return v; +} + +const INVALID_ATTR_NAME_RE = /[\s"'<>/=\x00-\x1F\x7F]/; + +function normalizeStyleClassProps(key, value) { + const isStyle = key === "style"; + const store = isStyle ? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Set(); + const add = (v) => { + if (!v) + return; + if (isStyle) { + const i = v.indexOf(":"); + i > 0 && store.set(v.slice(0, i).trim(), v.slice(i + 1).trim()); + } else { + v.split(" ").forEach((c) => c && store.add(c)); + } + }; + if (typeof value === "string") { + (isStyle ? value.split(";") : [value]).forEach(add); + } else if (Array.isArray(value)) { + value.forEach(add); + } else if (value && typeof value === "object") { + for (const k in value) { + const v = value[k]; + v && v !== "false" && (isStyle ? store.set(k.trim(), String(v)) : add(k)); + } + } + return store; +} +function normalizeProps(tag, input) { + tag.props = tag.props || {}; + if (!input) + return tag; + if (tag.tag === "templateParams") { + tag.props = input; + return tag; + } + const isHtmlTag = HasElementTags.has(tag.tag) || tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs"; + for (const prop in input) { + if (isUnsafeKey(prop)) + continue; + const isData = prop.startsWith("data-"); + const isHtmlAttr = isHtmlTag && !TagConfigKeys.has(prop); + const key = isHtmlAttr && !isData ? prop.toLowerCase() : prop; + if (isHtmlAttr && (!key || INVALID_ATTR_NAME_RE.test(key))) + continue; + const value = input[prop]; + if (value === null) { + tag.props[key] = null; + } else if (prop === "class" || prop === "style") { + tag.props[prop] = normalizeStyleClassProps(prop, value); + } else if (TagConfigKeys.has(prop)) { + if ((prop === "textContent" || prop === "innerHTML") && typeof value === "object") { + const type = input.type || "application/json"; + if (type.endsWith("json") || type === "speculationrules" || type === "importmap") { + tag.props.type = type; + tag[prop] = JSON.stringify(value); + } + } else { + tag[prop] = value; + } + } else if (value !== void 0) { + const str = String(value); + const isMeta = tag.tag === "meta" && key === "content"; + tag.props[key] = str === "true" || str === "" ? isData || isMeta ? str : true : !value && isData && str === "false" ? "false" : value; + } + } + return tag; +} +function resolveHeadInput(input, propResolvers) { + let resolve; + if (propResolvers.length) { + resolve = (key, val) => { + for (let i = 0; i < propResolvers.length; i++) + val = propResolvers[i](key, val); + return val; + }; + input = resolve(void 0, input); + } + return walkResolver(input, resolve); +} +function normalizeTag(tagName, _input) { + const input = typeof _input === "object" && typeof _input !== "function" ? _input : { [tagName === "script" || tagName === "noscript" || tagName === "style" ? "innerHTML" : "textContent"]: _input }; + const tag = normalizeProps({ tag: tagName, props: {} }, input); + if (tag.key && DupeableTags.has(tag.tag)) + tag.props["data-hid"] = tag._h = tag.key; + if (tag.tag === "script" && typeof tag.innerHTML === "object") { + tag.innerHTML = JSON.stringify(tag.innerHTML); + tag.props.type = tag.props.type || "application/json"; + } + if (Array.isArray(tag.props.content)) { + const tags = []; + for (const content of tag.props.content) { + tags.push({ ...tag, props: { ...tag.props, content } }); + } + return tags; + } + return tag; +} +function pushNormalizedTag(tags, tag) { + if (Array.isArray(tag)) { + for (const t of tag) tags.push(t); + } else { + tags.push(tag); + } +} +function normalizeEntryToTags(input, propResolvers) { + if (!input) + return []; + if (typeof input === "function") + input = input(); + input = resolveHeadInput(input, propResolvers); + const tags = []; + for (const key in input) { + const value = input[key]; + if (value !== void 0) { + if (Array.isArray(value)) { + for (const v of value) pushNormalizedTag(tags, normalizeTag(key, v)); + } else { + pushNormalizedTag(tags, normalizeTag(key, value)); + } + } + } + return tags; +} + +const LT_RE = /</g; +const SCRIPT_END_RE = /<\/script/g; +const sortTags = (a, b) => a._w === b._w ? a._p - b._p : a._w - b._w; +const DEFAULT_TAG_WEIGHT = () => 100; +function isEmptyProps(props) { + for (const _ in props) + return false; + return true; +} +const TAG_MUTATING_HOOK_RE = /^tags:|:render/; +function syncEntryHookCache(head, hooks) { + const count = (hooks["entries:resolve"]?.length || 0) + (hooks["entries:normalize"]?.length || 0); + if (head._h !== count) { + head._h = count; + for (const entry of head.entries.values()) + delete entry._tags; + } +} +function cloneTagsInPlace(tags) { + for (let i = 0; i < tags.length; i++) { + const t = tags[i]; + const props = { ...t.props }; + if (props.class instanceof Set) + props.class = new Set(props.class); + if (props.style instanceof Map) + props.style = new Map(props.style); + tags[i] = { ...t, props }; + } +} +function valuesToTags(ctx, sortFlatMeta) { + const tags = ctx.tags; + let w = 0; + for (const value of ctx.tagMap.values()) { + if (Array.isArray(value)) { + for (const tag of value) tags[w++] = tag; + } else { + tags[w++] = value; + } + } + tags.length = w; + if (sortFlatMeta) + tags.sort(sortTags); +} +function dedupeTags(ctx) { + let hasFlatMeta = false; + for (const next of ctx.tags.sort(sortTags)) { + const k = next._d || hashTag(next); + if (!k) + continue; + const prev = ctx.tagMap.get(k); + if (!prev) { + ctx.tagMap.set(k, next); + continue; + } + const strategy = next.tagDuplicateStrategy || (UsesMergeStrategy.has(next.tag) ? "merge" : null) || (next.key && next.key === prev.key ? "merge" : null); + if (strategy === "merge") { + const props = { ...prev.props }; + for (const p in next.props) { + props[p] = p === "style" ? new Map([...prev.props.style || /* @__PURE__ */ new Map(), ...next.props[p]]) : p === "class" ? /* @__PURE__ */ new Set([...prev.props.class || [], ...next.props[p]]) : next.props[p]; + } + ctx.tagMap.set(k, { ...next, props }); + } else if (next._p >> 10 === prev._p >> 10 && next.tag === "meta" && isMetaArrayDupeKey(k)) { + ctx.tagMap.set(k, Object.assign([...Array.isArray(prev) ? prev : [prev], next], next)); + hasFlatMeta = true; + } else if (next._w === prev._w ? next._p > prev._p : next._w < prev._w) { + ctx.tagMap.set(k, next); + } + } + return hasFlatMeta; +} +function resolveTitleTemplate(ctx, head) { + const title = ctx.tagMap.get("title"); + const tpl = ctx.tagMap.get("titleTemplate"); + head._title = title?.textContent; + if (!tpl) + return; + const fn = tpl.textContent; + head._titleTemplate = fn; + if (!fn) + return; + let v = typeof fn === "function" ? fn(title?.textContent) : fn; + if (typeof v === "string" && !head.plugins.has("template-params")) + v = v.replace("%s", title?.textContent || ""); + if (title) { + v === null ? ctx.tagMap.delete("title") : ctx.tagMap.set("title", { ...title, textContent: v }); + } else { + ctx.tagMap.set("titleTemplate", { ...tpl, tag: "title", textContent: v }); + } +} +function sanitizeTagsInPlace(tags) { + let w = 0; + for (let t of tags) { + const { innerHTML, tag, props } = t; + if (!ValidHeadTags.has(tag) || isEmptyProps(props) && !hasContent(innerHTML) && !hasContent(t.textContent)) + continue; + if (tag === "meta") { + if (!hasContent(props.content) && !props["http-equiv"] && !props.charset) + continue; + } + if (tag === "script" && (innerHTML || t.textContent)) { + const type = String(props.type); + const isJsonLike = type.endsWith("json") || type === "importmap" || type === "speculationrules"; + const escape = (content) => isJsonLike ? (typeof content === "string" ? content : JSON.stringify(content)).replace(LT_RE, "\\u003C") : typeof content === "string" ? content.replace(SCRIPT_END_RE, "<\\/script") : content; + t = { ...t }; + if (innerHTML) + t.innerHTML = escape(innerHTML); + if (t.textContent) + t.textContent = escape(t.textContent); + t._d = dedupeKey(t); + } + tags[w++] = t; + } + tags.length = w; + return tags; +} +function sanitizeTags(tags) { + return sanitizeTagsInPlace([...tags]); +} +function resolveTags(head, options) { + const weightFn = options?.tagWeight ?? head.resolvedOptions._tagWeight ?? DEFAULT_TAG_WEIGHT; + const ctx = { tagMap: /* @__PURE__ */ new Map(), tags: [] }; + const hooks = head.hooks?._hooks || {}; + syncEntryHookCache(head, hooks); + for (const e of head.entries.values()) { + if (e._pending !== void 0) { + e.input = e._pending; + delete e._pending; + delete e._tags; + delete e._precomputedTags; + } + } + let entries; + if (hooks["entries:resolve"]?.length || hooks["entries:normalize"]?.length) { + entries = [...head.entries.values()]; + if (hooks["entries:resolve"]?.length) + callHook(head, "entries:resolve", { entries, ...ctx }); + } + syncEntryHookCache(head, hooks); + for (const e of entries || head.entries.values()) { + let tags = e._tags; + if (!tags) { + if (e._precomputedTags && weightFn === head.resolvedOptions._tagWeight && !hooks["entries:normalize"]?.length && !hooks["entries:resolve"]?.length && (!e.options || isEmptyProps(e.options))) { + tags = e._precomputedTags; + } else { + tags = normalizeEntryToTags(e.input, head.resolvedOptions.propResolvers || []); + if (e.options && !isEmptyProps(e.options)) { + for (const t of tags) + Object.assign(t, e.options); + } + if (hooks["entries:normalize"]?.length) { + const normalizeCtx = { tags, entry: e }; + callHook(head, "entries:normalize", normalizeCtx); + tags = normalizeCtx.tags; + } + for (let i = 0; i < tags.length; i++) { + const t = tags[i]; + t._w = weightFn(t); + t._p = (e._i << 10) + i; + t._d = dedupeKey(t); + if (!t._d) + t._h = hashTag(t); + } + e._tags = tags; + } + } + ctx.tags.push(...tags); + } + for (const name in hooks) { + if (hooks[name]?.length && TAG_MUTATING_HOOK_RE.test(name)) { + cloneTagsInPlace(ctx.tags); + break; + } + } + const hasFlatMeta = dedupeTags(ctx); + resolveTitleTemplate(ctx, head); + valuesToTags(ctx, hasFlatMeta); + callHook(head, "tags:beforeResolve", ctx); + callHook(head, "tags:resolve", ctx); + callHook(head, "tags:afterResolve", ctx); + return sanitizeTagsInPlace(ctx.tags); +} + +export { INVALID_ATTR_NAME_RE as I, dedupeTags as a, normalizeProps as b, resolveTitleTemplate as c, dedupeKey as d, resolveHeadInput as e, hashTag as h, isMetaArrayDupeKey as i, normalizeEntryToTags as n, resolveTags as r, sanitizeTags as s, walkResolver as w }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DkxnqlHC.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DkxnqlHC.mjs new file mode 100644 index 0000000..ed1465b --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DkxnqlHC.mjs @@ -0,0 +1,264 @@ +import { u as unpackMeta } from './unhead.o8j9utSy.mjs'; +import { d as defineHeadPlugin } from './unhead.CHEy9ana.mjs'; +import { h as hasContent, i as isUnsafeKey } from './unhead.CGPOfp5O.mjs'; + +const FlatMetaPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "flatMeta", + hooks: { + "entries:normalize": (ctx) => { + let hasFlatMeta = false; + const tags = []; + const tagsToAdd = []; + for (const t of ctx.tags) { + if (t.tag !== "_flatMeta") { + tags.push(t); + continue; + } + hasFlatMeta = true; + for (const props of unpackMeta(t.props)) + tagsToAdd.push({ ...t, tag: "meta", props }); + } + if (!hasFlatMeta) + return; + for (const tag of tagsToAdd) tags.push(tag); + ctx.tags = tags; + } + } +}); + +const WhitelistAttributes = { + htmlAttrs: /* @__PURE__ */ new Set(["class", "style", "lang", "dir"]), + bodyAttrs: /* @__PURE__ */ new Set(["class", "style"]), + meta: /* @__PURE__ */ new Set(["name", "property", "charset", "content", "media"]), + noscript: /* @__PURE__ */ new Set([]), + style: /* @__PURE__ */ new Set(["media", "nonce", "title", "blocking"]), + script: /* @__PURE__ */ new Set(["type", "textContent", "nonce", "blocking"]), + link: /* @__PURE__ */ new Set(["color", "crossorigin", "fetchpriority", "href", "hreflang", "imagesrcset", "imagesizes", "integrity", "media", "referrerpolicy", "rel", "sizes", "type"]) +}; +const BlockedLinkRels = /* @__PURE__ */ new Set(["canonical", "modulepreload", "prerender", "preload", "prefetch", "dns-prefetch", "preconnect", "manifest", "pingback"]); +const SafeDataAttrName = /^[a-z][a-z0-9-]*[a-z0-9]$/i; +const AsciiWhitespace = /[\t\n\f\r ]+/; +const HtmlEntityHex = /&#x([0-9a-f]+);?/gi; +const HtmlEntityDec = /&#(\d+);?/g; +const HtmlEntityNamed = /&(tab|newline|colon|semi|lpar|rpar|sol|bsol|comma|period|excl|num|dollar|percnt|amp|apos|ast|plus|lt|gt|equals|quest|at|lsqb|rsqb|lcub|rcub|vert|hat|grave|tilde|nbsp);?/gi; +const ControlChars = /[\x00-\x20]+/g; +const NamedEntityMap = { + tab: " ", + newline: "\n", + colon: ":", + semi: ";", + lpar: "(", + rpar: ")", + sol: "/", + bsol: "\\", + comma: ",", + period: ".", + excl: "!", + num: "#", + dollar: "$", + percnt: "%", + amp: "&", + apos: "'", + ast: "*", + plus: "+", + lt: "<", + gt: ">", + equals: "=", + quest: "?", + at: "@", + lsqb: "[", + rsqb: "]", + lcub: "{", + rcub: "}", + vert: "|", + hat: "^", + grave: "`", + tilde: "~", + nbsp: "\xA0" +}; +function safeFromCodePoint(codePoint) { + if (codePoint > 1114111 || codePoint < 0 || Number.isNaN(codePoint)) + return ""; + return String.fromCodePoint(codePoint); +} +function decodeHtmlEntities(str) { + return str.replace(HtmlEntityHex, (_, hex) => safeFromCodePoint(Number.parseInt(hex, 16))).replace(HtmlEntityDec, (_, dec) => safeFromCodePoint(Number(dec))).replace(HtmlEntityNamed, (_, name) => NamedEntityMap[name.toLowerCase()] || ""); +} +function hasDangerousProtocol(url) { + const entityDecoded = decodeHtmlEntities(url); + const cleaned = entityDecoded.replace(ControlChars, ""); + let decoded; + try { + decoded = decodeURIComponent(cleaned); + } catch { + decoded = cleaned; + } + const sanitized = decoded.replace(ControlChars, ""); + const lower = sanitized.toLowerCase(); + return lower.startsWith("javascript:") || lower.startsWith("data:") || lower.startsWith("vbscript:"); +} +function stripProtoKeys(obj) { + if (Array.isArray(obj)) + return obj.map(stripProtoKeys); + if (obj && typeof obj === "object") { + const clean = {}; + for (const key of Object.keys(obj)) { + if (isUnsafeKey(key)) + continue; + clean[key] = stripProtoKeys(obj[key]); + } + return clean; + } + return obj; +} +function acceptDataAttrs(value, allowId = true) { + const next = {}; + if (!value) + return next; + const keys = Object.keys(value); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const isData = key.startsWith("data-"); + if ((isData || allowId && key === "id") && SafeDataAttrName.test(key)) + next[key] = value[key]; + } + return next; +} +function hasBlockedRel(rel) { + const tokens = rel.split(AsciiWhitespace); + return !tokens.some(Boolean) || tokens.some((token) => BlockedLinkRels.has(token.toLowerCase())); +} +function makeTagSafe(tag) { + let next = {}; + const { tag: type, props: prev } = tag; + switch (type) { + // title: textContent is escaped in rendering (tagToString), no props needed + case "title": + break; + // virtual tags, not rendered to HTML — but sanitize to prevent injection if rendered + case "titleTemplate": + case "templateParams": + next = prev; + break; + case "htmlAttrs": + case "bodyAttrs": + WhitelistAttributes[type].forEach((attr) => { + if (prev[attr]) { + next[attr] = prev[attr]; + } + }); + delete tag.innerHTML; + delete tag.textContent; + tag.props = { ...acceptDataAttrs(prev, false), ...next }; + return !Object.keys(tag.props).length ? false : tag; + case "style": + next = acceptDataAttrs(prev); + WhitelistAttributes.style.forEach((key) => { + if (prev[key]) { + next[key] = prev[key]; + } + }); + break; + // meta is safe, except for http-equiv + case "meta": + WhitelistAttributes.meta.forEach((key) => { + if (hasContent(prev[key])) { + next[key] = prev[key]; + } + }); + break; + // link tags we block preloading, prerendering, prefetching, dns-prefetch, preconnect, manifest, etc + case "link": + WhitelistAttributes.link.forEach((key) => { + const val = prev[key]; + if (!val) { + return; + } + if (key === "rel" && (typeof val !== "string" || hasBlockedRel(val))) { + return; + } + if (key === "href" || key === "imagesrcset") { + if (typeof val !== "string") { + return; + } + const urls = key === "imagesrcset" ? val.split(",").map((s) => s.trim()) : [val]; + if (urls.some((u) => hasDangerousProtocol(u))) { + return; + } + next[key] = val; + } else if (val) { + next[key] = val; + } + }); + if (!next.href && !next.imagesrcset || !next.rel) { + return false; + } + break; + case "noscript": + WhitelistAttributes.noscript.forEach((key) => { + if (prev[key]) { + next[key] = prev[key]; + } + }); + break; + // we only allow JSON in scripts + case "script": + if (!tag.textContent || typeof prev.type !== "string" || !prev.type.endsWith("json")) { + return false; + } + try { + const jsonVal = typeof tag.textContent === "string" ? JSON.parse(tag.textContent) : tag.textContent; + tag.textContent = JSON.stringify(stripProtoKeys(jsonVal), null, 0); + } catch { + return false; + } + WhitelistAttributes.script.forEach((s) => { + if (s !== "textContent" && prev[s]) { + next[s] = prev[s]; + } + }); + break; + } + delete tag.innerHTML; + if (type !== "title" && type !== "script") { + delete tag.textContent; + } + tag.props = { ...acceptDataAttrs(prev), ...next }; + if (!Object.keys(tag.props).length && !tag.tag.endsWith("Attrs") && !tag.textContent) { + return false; + } + return tag; +} +const SafeInputPlugin = /* @__PURE__ */ defineHeadPlugin({ + key: "safe", + hooks: { + "entries:normalize": (ctx) => { + if (ctx.entry.options?._safe) { + ctx.tags = ctx.tags.reduce((acc, tag) => { + const safeTag = makeTagSafe(tag); + if (safeTag) + acc.push(safeTag); + return acc; + }, []); + } + }, + "tags:afterResolve": (ctx) => { + ctx.tags = ctx.tags.reduce((acc, tag) => { + if (!tag._safe) { + acc.push(tag); + return acc; + } + if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") { + acc.push(tag); + return acc; + } + const safeTag = makeTagSafe(tag); + if (safeTag) + acc.push(safeTag); + return acc; + }, []); + } + } +}); + +export { FlatMetaPlugin as F, SafeInputPlugin as S }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DspMpm6y.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DspMpm6y.mjs new file mode 100644 index 0000000..91585e6 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.DspMpm6y.mjs @@ -0,0 +1,48 @@ +const BACKSLASH_RE = /\\/g; +const LT_RE = /</g; +const DOUBLE_QUOTE_RE = /"/g; +const TOKEN_RE = /%\w+(?:\.\w+)?/g; +const SepSub = "%separator"; +function sub(p, token, isJson = false) { + let val; + if (token === "s" || token === "pageTitle") { + val = p.pageTitle; + } else if (token.includes(".")) { + const dotIndex = token.indexOf("."); + val = p[token.substring(0, dotIndex)]?.[token.substring(dotIndex + 1)]; + } else { + val = p[token]; + } + if (val !== void 0) { + const str = typeof val === "number" ? String(val) : String(val || ""); + return isJson ? str.replace(BACKSLASH_RE, "\\\\").replace(LT_RE, "\\u003C").replace(DOUBLE_QUOTE_RE, '\\"') : str; + } + return void 0; +} +function processTemplateParams(s, p, sep, isJson = false) { + if (typeof s !== "string" || !s.includes("%")) + return s; + let decoded = s; + try { + decoded = decodeURI(s); + } catch { + } + const tokens = decoded.match(TOKEN_RE); + if (!tokens) { + return s; + } + const hasSepSub = s.includes(SepSub); + s = s.replace(TOKEN_RE, (token) => { + if (token === SepSub || !tokens.includes(token)) { + return token; + } + const re = sub(p, token.slice(1), isJson); + return re !== void 0 ? re : token; + }).trim(); + if (hasSepSub) { + s = s.split(SepSub).map((part) => part.trim()).filter((part) => part !== "").join(sep ? ` ${sep} ` : " "); + } + return s; +} + +export { processTemplateParams as p }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.o8j9utSy.mjs b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.o8j9utSy.mjs new file mode 100644 index 0000000..1aff0cc --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/shared/unhead.o8j9utSy.mjs @@ -0,0 +1,208 @@ +import { M as MetaTagsArrayable } from './unhead.CGPOfp5O.mjs'; + +const META_NAMESPACES = ["twitter", "fediverse"]; +const PROPERTY_NAMESPACES = ["og", "book", "article", "profile", "fb", "payment"]; +const MEDIA_KEYS = ["ogImage", "ogVideo", "ogAudio", "twitterImage"]; +const HTTP_EQUIV_KEYS = ["contentType", "defaultStyle", "xUaCompatible"]; +const META_ALIASES = { + articleExpirationTime: "article:expiration_time", + articleModifiedTime: "article:modified_time", + articlePublishedTime: "article:published_time", + bookReleaseDate: "book:release_date", + fbAppId: "fb:app_id", + ogAudioSecureUrl: "og:audio:secure_url", + ogAudioUrl: "og:audio", + ogImageSecureUrl: "og:image:secure_url", + ogImageUrl: "og:image", + ogSiteName: "og:site_name", + ogVideoSecureUrl: "og:video:secure_url", + ogVideoUrl: "og:video", + paymentExpiresAt: "payment:expires_at", + paymentSuccessUrl: "payment:success_url", + profileFirstName: "profile:first_name", + profileLastName: "profile:last_name", + profileUsername: "profile:username", + msapplicationConfig: "msapplication-Config", + msapplicationTileColor: "msapplication-TileColor", + msapplicationTileImage: "msapplication-TileImage" +}; +const CAPS_RE = /([A-Z])/g; +const OG_TWITTER_RE = /^(?:og|twitter)/; +const MetaPackingSchema = { + appleItunesApp: { + unpack: { + entrySeparator: ", ", + resolve: ({ key, value }) => `${fixKeyCase(key)}=${value}` + } + }, + refresh: { + metaKey: "http-equiv", + unpack: { + entrySeparator: ";", + resolve: ({ key, value }) => key === "seconds" ? `${value}` : void 0 + } + }, + robots: { + unpack: { + entrySeparator: ", ", + resolve: ({ key, value }) => typeof value === "boolean" ? fixKeyCase(key) : `${fixKeyCase(key)}:${value}` + } + }, + contentSecurityPolicy: { + metaKey: "http-equiv", + unpack: { + entrySeparator: "; ", + resolve: ({ key, value }) => `${fixKeyCase(key)} ${value}` + } + }, + charset: {} +}; +function fixKeyCase(key) { + const updated = key.replace(CAPS_RE, "-$1").toLowerCase(); + const prefixIndex = updated.indexOf("-"); + return prefixIndex === -1 ? updated : META_NAMESPACES.includes(updated.slice(0, prefixIndex)) || PROPERTY_NAMESPACES.includes(updated.slice(0, prefixIndex)) ? key.replace(CAPS_RE, ":$1").toLowerCase() : updated; +} +function sanitizeObject(input) { + return Object.fromEntries(Object.entries(input).filter(([k, v]) => String(v) !== "false" && k)); +} +function normalizeRobotsDirectives(input) { + if (input.index !== false && input.follow !== false) + return input; + const value = { ...input }; + if (value.index === false) { + delete value.index; + if (value.noindex === void 0) + value.noindex = true; + } + if (value.follow === false) { + delete value.follow; + if (value.nofollow === void 0) + value.nofollow = true; + } + return value; +} +function transformObject(obj) { + return Array.isArray(obj) ? obj.map(transformObject) : !obj || typeof obj !== "object" ? obj : Object.fromEntries(Object.entries(obj).map(([k, v]) => [fixKeyCase(k), transformObject(v)])); +} +function unpackToString(value, options = {}) { + const { entrySeparator = "", keyValueSeparator = "", wrapValue, resolve } = options; + return Object.entries(value).map(([key, val]) => { + if (resolve) { + const resolved = resolve({ key, value: val }); + if (resolved !== void 0) + return resolved; + } + const processedVal = typeof val === "object" ? unpackToString(val, options) : typeof val === "number" ? val.toString() : typeof val === "string" && wrapValue ? `${wrapValue}${val.replace(new RegExp(wrapValue, "g"), `\\${wrapValue}`)}${wrapValue}` : val; + return `${key}${keyValueSeparator}${processedVal}`; + }).join(entrySeparator); +} +function handleObjectEntry(key, value) { + const sanitizedValue = sanitizeObject(value); + const fixedKey = fixKeyCase(key); + const attr = resolveMetaKeyType(fixedKey); + if (!MetaTagsArrayable.has(fixedKey)) { + return [{ [attr]: fixedKey, ...sanitizedValue }]; + } + const input = Object.fromEntries( + Object.entries(sanitizedValue).map(([k, v]) => [`${key}${k === "url" ? "" : `${k[0].toUpperCase()}${k.slice(1)}`}`, v]) + ); + return unpackMeta(input || {}).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0)); +} +function resolveMetaKeyType(key) { + if (MetaPackingSchema[key]?.metaKey === "http-equiv" || HTTP_EQUIV_KEYS.includes(key)) { + return "http-equiv"; + } + const fixed = fixKeyCase(key); + const colonIndex = fixed.indexOf(":"); + return colonIndex === -1 ? "name" : PROPERTY_NAMESPACES.includes(fixed.slice(0, colonIndex)) ? "property" : "name"; +} +function resolveMetaKeyValue(key) { + return META_ALIASES[key] || fixKeyCase(key); +} +function resolvePackedMetaObjectValue(value, key) { + if (key === "refresh") + return `${value.seconds};url=${value.url}`; + return unpackToString(transformObject(value), { + keyValueSeparator: "=", + entrySeparator: ", ", + resolve: ({ value: value2, key: key2 }) => value2 === null ? "" : typeof value2 === "boolean" ? key2 : void 0, + ...MetaPackingSchema[key]?.unpack + }); +} +function unpackMeta(input) { + const extras = []; + const primitives = {}; + for (const [key, value] of Object.entries(input)) { + if (Array.isArray(value)) { + if (key === "themeColor") { + value.forEach((v) => { + if (typeof v === "object" && v !== null) { + extras.push({ name: "theme-color", ...v }); + } + }); + continue; + } + for (const v of value) { + if (typeof v === "object" && v !== null) { + const urlProps = []; + const otherProps = []; + for (const [propKey, propValue] of Object.entries(v)) { + const metaKey = `${key}${propKey === "url" ? "" : `:${propKey}`}`; + const meta2 = unpackMeta({ [metaKey]: propValue }); + (propKey === "url" ? urlProps : otherProps).push(...meta2); + } + extras.push(...urlProps, ...otherProps); + } else { + extras.push(...typeof v === "string" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v)); + } + } + continue; + } + if (typeof value === "object" && value) { + if (MEDIA_KEYS.includes(key)) { + const prefix = key.startsWith("twitter") ? "twitter" : "og"; + const type = key.replace(OG_TWITTER_RE, "").toLowerCase(); + const metaKey = prefix === "twitter" ? "name" : "property"; + if (value.url) { + extras.push({ + [metaKey]: `${prefix}:${type}`, + content: value.url + }); + } + if (value.secureUrl) { + extras.push({ + [metaKey]: `${prefix}:${type}:secure_url`, + content: value.secureUrl + }); + } + for (const [propKey, propValue] of Object.entries(value)) { + if (propKey !== "url" && propKey !== "secureUrl") { + extras.push({ + [metaKey]: `${prefix}:${type}:${propKey}`, + content: propValue + }); + } + } + } else if (MetaTagsArrayable.has(fixKeyCase(key))) { + extras.push(...handleObjectEntry(key, value)); + } else { + primitives[key] = sanitizeObject(key === "robots" ? normalizeRobotsDirectives(value) : value); + } + } else { + primitives[key] = value; + } + } + const meta = Object.entries(primitives).map(([key, value]) => { + if (key === "charset") + return { charset: value === null ? "_null" : value }; + const metaKey = resolveMetaKeyType(key); + const keyValue = resolveMetaKeyValue(key); + const processedValue = value === null ? "_null" : typeof value === "object" ? resolvePackedMetaObjectValue(value, key) : typeof value === "number" ? value.toString() : value; + return metaKey === "http-equiv" ? { "http-equiv": keyValue, "content": processedValue } : { [metaKey]: keyValue, content: processedValue }; + }); + return [...extras, ...meta].map( + (m) => !("content" in m) ? m : m.content === "_null" ? { ...m, content: null } : m + ); +} + +export { resolveMetaKeyValue as a, resolvePackedMetaObjectValue as b, resolveMetaKeyType as r, unpackMeta as u }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/stream/client.mjs b/apps/web/.output/server/node_modules/unhead/dist/stream/client.mjs new file mode 100644 index 0000000..8933329 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/stream/client.mjs @@ -0,0 +1,33 @@ +import { c as createClientHeadAdapter } from '../shared/unhead.C5Bksi2B.mjs'; +import { c as createHooks } from '../shared/unhead.Bm4Y6XQI.mjs'; +import '../shared/unhead.D7HkBzZn.mjs'; +import 'hookable'; + +const DEFAULT_STREAM_KEY = "__unhead__"; +function createStreamableHead(options = {}) { + const { streamKey = DEFAULT_STREAM_KEY, ...rest } = options; + const win = typeof window !== "undefined" ? window : void 0; + const streamQueue = win?.[streamKey]; + const core = streamQueue?._head; + if (!core) + return void 0; + if (core._wrapped) { + const wrapped = core; + for (const name in rest.hooks || {}) + wrapped.hooks?.hook(name, rest.hooks[name]); + (rest.plugins || []).forEach((p) => wrapped.use(p)); + rest.init?.forEach((e) => e && wrapped.push(e)); + return wrapped; + } + const coreRender = core.render; + const hooks = createHooks(rest.hooks); + const head = createClientHeadAdapter(core, hooks, () => coreRender()); + head._wrapped = true; + (rest.plugins || []).forEach((p) => head.use(p)); + rest.init?.forEach((e) => e && head.push(e)); + if (streamQueue) + streamQueue._head = head; + return head; +} + +export { DEFAULT_STREAM_KEY, createStreamableHead }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/stream/iife.mjs b/apps/web/.output/server/node_modules/unhead/dist/stream/iife.mjs new file mode 100644 index 0000000..3217acf --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/stream/iife.mjs @@ -0,0 +1,2 @@ +export const streamingIifeCode = "var __unhead_iife__ = (function (exports) { 'use strict'; const DupeableTags = new Set([\"link\", \"style\", \"script\", \"noscript\"]); const TagsWithInnerContent = new Set([\"title\", \"titleTemplate\", \"script\", \"style\", \"noscript\"]); const HasElementTags = new Set([\"base\", \"meta\", \"link\", \"style\", \"script\", \"noscript\"]); const ValidHeadTags = new Set([\"title\", \"base\", \"htmlAttrs\", \"bodyAttrs\", \"meta\", \"link\", \"style\", \"script\", \"noscript\"]); const UniqueTags = new Set([\"base\", \"title\", \"titleTemplate\", \"bodyAttrs\", \"htmlAttrs\", \"templateParams\"]); const TagConfigKeys = new Set([\"key\", \"tagPosition\", \"tagPriority\", \"tagDuplicateStrategy\", \"innerHTML\", \"textContent\", \"\u0070rocessTemplateParams\"]); const UsesMergeStrategy = new Set([\"templateParams\", \"htmlAttrs\", \"bodyAttrs\"]); const MetaTagsArrayable = new Set([ \"theme-color\", \"google-site-verification\", \"author\", \"og:locale:alternate\", \"og:image\", \"og:video\", \"og:audio\", \"article:author\", \"article:tag\", \"book:author\", \"book:tag\", \"twitter:image\" ]); const hasContent = (value) => typeof value === \"number\" ? Number.isFinite(value) : value; function isUnsafeKey(key) { return key === \"__proto__\" || key === \"constructor\" || key === \"prototype\"; } function callHook(head, hook, ctx) { const hooks = head.hooks?._hooks?.[hook]; if (!hooks?.length) return; return head.hooks?.callHook(hook, ctx); } const META_NOREWRITE_RE = /^(?:viewport|description|keywords|robots)$/; const META_KEY_ATTRS = [\"name\", \"property\", \"http-equiv\"]; function isMetaArrayDupeKey(v) { const i = v.indexOf(\":\"); if (i === -1) return false; const key = v.slice(i + 1); return MetaTagsArrayable.has(key) || key.startsWith(\"og:image:\") || key.startsWith(\"og:video:\") || key.startsWith(\"og:audio:\") || key.startsWith(\"twitter:image:\"); } function dedupeKey(tag) { const { props, tag: t, key } = tag; if (UniqueTags.has(t)) return t; if (t === \"link\") { if (props.rel === \"canonical\") return \"canonical\"; if (props.rel === \"alternate\" && props.hreflang) return `alternate:${props.hreflang}`; } if (props.charset) return \"charset\"; if (t === \"meta\") { for (const n of META_KEY_ATTRS) { const v = props[n]; if (v !== void 0) return `meta:${v}${(typeof v !== \"string\" || !v.includes(\":\")) && !META_NOREWRITE_RE.test(v) && key ? `:key:${key}` : \"\"}`; } } if (key) return `${t}:key:${key}`; if (props.id) return `${t}:id:${props.id}`; if (t === \"link\" && props.rel && props.href) return `link:${props.rel}:${props.href}`; return TagsWithInnerContent.has(t) && (tag.textContent || tag.innerHTML) ? `${t}:content:${tag.textContent || tag.innerHTML}` : void 0; } function hashTag(tag) { const identity = tag._h || tag._d || tag.textContent || tag.innerHTML; if (identity) return String(identity); const keys = Object.keys(tag.props).sort(); let hash = `${tag.tag}:`; let separator = \"\"; for (const key of keys) { hash += `${separator}${key}:${String(tag.props[key])}`; separator = \",\"; } return hash; } function walkResolver(val, resolve, key) { if (key === \"_resolver\") return val; if (typeof val === \"function\" && (!key || key !== \"titleTemplate\" && !key.startsWith(\"on\"))) val = val(); const v = resolve ? resolve(key, val) : val; if (Array.isArray(v)) { let out; for (let i = 0; i < v.length; i++) { const r = walkResolver(v[i], resolve); if (out) { out[i] = r; } else if (r !== v[i]) { out = v.slice(0, i); out[i] = r; } } return out || v; } if (v?.constructor === Object) { let next; for (const k in v) { const unsafe = isUnsafeKey(k); const r = unsafe ? void 0 : walkResolver(v[k], resolve, k); if (!next && (unsafe || r !== v[k])) { next = {}; for (const pk in v) { if (pk === k) break; next[pk] = v[pk]; } } if (next && !unsafe) next[k] = r; } return next || v; } return v; } const INVALID_ATTR_NAME_RE = /[\\s\"'<>/=\\x00-\\x1F\\x7F]/; function normalizeStyleClassProps(key, value) { const isStyle = key === \"style\"; const store = isStyle ? new Map() : new Set(); const add = (v) => { if (!v) return; if (isStyle) { const i = v.indexOf(\":\"); i > 0 && store.set(v.slice(0, i).trim(), v.slice(i + 1).trim()); } else { v.split(\" \").forEach((c) => c && store.add(c)); } }; if (typeof value === \"string\") { (isStyle ? value.split(\";\") : [value]).forEach(add); } else if (Array.isArray(value)) { value.forEach(add); } else if (value && typeof value === \"object\") { for (const k in value) { const v = value[k]; v && v !== \"false\" && (isStyle ? store.set(k.trim(), String(v)) : add(k)); } } return store; } function normalizeProps(tag, input) { tag.props = tag.props || {}; if (!input) return tag; if (tag.tag === \"templateParams\") { tag.props = input; return tag; } const isHtmlTag = HasElementTags.has(tag.tag) || tag.tag === \"htmlAttrs\" || tag.tag === \"bodyAttrs\"; for (const prop in input) { if (isUnsafeKey(prop)) continue; const isData = prop.startsWith(\"data-\"); const isHtmlAttr = isHtmlTag && !TagConfigKeys.has(prop); const key = isHtmlAttr && !isData ? prop.toLowerCase() : prop; if (isHtmlAttr && (!key || INVALID_ATTR_NAME_RE.test(key))) continue; const value = input[prop]; if (value === null) { tag.props[key] = null; } else if (prop === \"class\" || prop === \"style\") { tag.props[prop] = normalizeStyleClassProps(prop, value); } else if (TagConfigKeys.has(prop)) { if ((prop === \"textContent\" || prop === \"innerHTML\") && typeof value === \"object\") { const type = input.type || \"application/json\"; if (type.endsWith(\"json\") || type === \"speculationrules\" || type === \"importmap\") { tag.props.type = type; tag[prop] = JSON.stringify(value); } } else { tag[prop] = value; } } else if (value !== void 0) { const str = String(value); const isMeta = tag.tag === \"meta\" && key === \"content\"; tag.props[key] = str === \"true\" || str === \"\" ? isData || isMeta ? str : true : !value && isData && str === \"false\" ? \"false\" : value; } } return tag; } function resolveHeadInput(input, propResolvers) { let resolve; if (propResolvers.length) { resolve = (key, val) => { for (let i = 0; i < propResolvers.length; i++) val = propResolvers[i](key, val); return val; }; input = resolve(void 0, input); } return walkResolver(input, resolve); } function normalizeTag(tagName, _input) { const input = typeof _input === \"object\" && typeof _input !== \"function\" ? _input : { [tagName === \"script\" || tagName === \"noscript\" || tagName === \"style\" ? \"innerHTML\" : \"textContent\"]: _input }; const tag = normalizeProps({ tag: tagName, props: {} }, input); if (tag.key && DupeableTags.has(tag.tag)) tag.props[\"data-hid\"] = tag._h = tag.key; if (tag.tag === \"script\" && typeof tag.innerHTML === \"object\") { tag.innerHTML = JSON.stringify(tag.innerHTML); tag.props.type = tag.props.type || \"application/json\"; } if (Array.isArray(tag.props.content)) { const tags = []; for (const content of tag.props.content) { tags.push({ ...tag, props: { ...tag.props, content } }); } return tags; } return tag; } function pushNormalizedTag(tags, tag) { if (Array.isArray(tag)) { for (const t of tag) tags.push(t); } else { tags.push(tag); } } function normalizeEntryToTags(input, propResolvers) { if (!input) return []; if (typeof input === \"function\") input = input(); input = resolveHeadInput(input, propResolvers); const tags = []; for (const key in input) { const value = input[key]; if (value !== void 0) { if (Array.isArray(value)) { for (const v of value) pushNormalizedTag(tags, normalizeTag(key, v)); } else { pushNormalizedTag(tags, normalizeTag(key, value)); } } } return tags; } const LT_RE = /</g; const SCRIPT_END_RE = /<\\/script/g; const sortTags = (a, b) => a._w === b._w ? a._p - b._p : a._w - b._w; const DEFAULT_TAG_WEIGHT = () => 100; function isEmptyProps(props) { for (const _ in props) return false; return true; } const TAG_MUTATING_HOOK_RE = /^tags:|:render/; function syncEntryHookCache(head, hooks) { const count = (hooks[\"entries:resolve\"]?.length || 0) + (hooks[\"entries:normalize\"]?.length || 0); if (head._h !== count) { head._h = count; for (const entry of head.entries.values()) delete entry._tags; } } function cloneTagsInPlace(tags) { for (let i = 0; i < tags.length; i++) { const t = tags[i]; const props = { ...t.props }; if (props.class instanceof Set) props.class = new Set(props.class); if (props.style instanceof Map) props.style = new Map(props.style); tags[i] = { ...t, props }; } } function valuesToTags(ctx, sortFlatMeta) { const tags = ctx.tags; let w = 0; for (const value of ctx.tagMap.values()) { if (Array.isArray(value)) { for (const tag of value) tags[w++] = tag; } else { tags[w++] = value; } } tags.length = w; if (sortFlatMeta) tags.sort(sortTags); } function dedupeTags(ctx) { let hasFlatMeta = false; for (const next of ctx.tags.sort(sortTags)) { const k = next._d || hashTag(next); if (!k) continue; const prev = ctx.tagMap.get(k); if (!prev) { ctx.tagMap.set(k, next); continue; } const strategy = next.tagDuplicateStrategy || (UsesMergeStrategy.has(next.tag) ? \"merge\" : null) || (next.key && next.key === prev.key ? \"merge\" : null); if (strategy === \"merge\") { const props = { ...prev.props }; for (const p in next.props) { props[p] = p === \"style\" ? new Map([...prev.props.style || new Map(), ...next.props[p]]) : p === \"class\" ? new Set([...prev.props.class || [], ...next.props[p]]) : next.props[p]; } ctx.tagMap.set(k, { ...next, props }); } else if (next._p >> 10 === prev._p >> 10 && next.tag === \"meta\" && isMetaArrayDupeKey(k)) { ctx.tagMap.set(k, Object.assign([...Array.isArray(prev) ? prev : [prev], next], next)); hasFlatMeta = true; } else if (next._w === prev._w ? next._p > prev._p : next._w < prev._w) { ctx.tagMap.set(k, next); } } return hasFlatMeta; } function resolveTitleTemplate(ctx, head) { const title = ctx.tagMap.get(\"title\"); const tpl = ctx.tagMap.get(\"titleTemplate\"); head._title = title?.textContent; if (!tpl) return; const fn = tpl.textContent; head._titleTemplate = fn; if (!fn) return; let v = typeof fn === \"function\" ? fn(title?.textContent) : fn; if (typeof v === \"string\" && !head.plugins.has(\"template-params\")) v = v.replace(\"%s\", title?.textContent || \"\"); if (title) { v === null ? ctx.tagMap.delete(\"title\") : ctx.tagMap.set(\"title\", { ...title, textContent: v }); } else { ctx.tagMap.set(\"titleTemplate\", { ...tpl, tag: \"title\", textContent: v }); } } function sanitizeTagsInPlace(tags) { let w = 0; for (let t of tags) { const { innerHTML, tag, props } = t; if (!ValidHeadTags.has(tag) || isEmptyProps(props) && !hasContent(innerHTML) && !hasContent(t.textContent)) continue; if (tag === \"meta\") { if (!hasContent(props.content) && !props[\"http-equiv\"] && !props.charset) continue; } if (tag === \"script\" && (innerHTML || t.textContent)) { const type = String(props.type); const isJsonLike = type.endsWith(\"json\") || type === \"importmap\" || type === \"speculationrules\"; const escape = (content) => isJsonLike ? (typeof content === \"string\" ? content : JSON.stringify(content)).replace(LT_RE, \"\\\\u003C\") : typeof content === \"string\" ? content.replace(SCRIPT_END_RE, \"<\\\\/script\") : content; t = { ...t }; if (innerHTML) t.innerHTML = escape(innerHTML); if (t.textContent) t.textContent = escape(t.textContent); t._d = dedupeKey(t); } tags[w++] = t; } tags.length = w; return tags; } function resolveTags(head, options) { const weightFn = options?.tagWeight ?? head.resolvedOptions._tagWeight ?? DEFAULT_TAG_WEIGHT; const ctx = { tagMap: new Map(), tags: [] }; const hooks = head.hooks?._hooks || {}; syncEntryHookCache(head, hooks); for (const e of head.entries.values()) { if (e._pending !== void 0) { e.input = e._pending; delete e._pending; delete e._tags; delete e._precomputedTags; } } let entries; if (hooks[\"entries:resolve\"]?.length || hooks[\"entries:normalize\"]?.length) { entries = [...head.entries.values()]; if (hooks[\"entries:resolve\"]?.length) callHook(head, \"entries:resolve\", { entries, ...ctx }); } syncEntryHookCache(head, hooks); for (const e of entries || head.entries.values()) { let tags = e._tags; if (!tags) { if (e._precomputedTags && weightFn === head.resolvedOptions._tagWeight && !hooks[\"entries:normalize\"]?.length && !hooks[\"entries:resolve\"]?.length && (!e.options || isEmptyProps(e.options))) { tags = e._precomputedTags; } else { tags = normalizeEntryToTags(e.input, head.resolvedOptions.propResolvers || []); if (e.options && !isEmptyProps(e.options)) { for (const t of tags) Object.assign(t, e.options); } if (hooks[\"entries:normalize\"]?.length) { const normalizeCtx = { tags, entry: e }; callHook(head, \"entries:normalize\", normalizeCtx); tags = normalizeCtx.tags; } for (let i = 0; i < tags.length; i++) { const t = tags[i]; t._w = weightFn(t); t._p = (e._i << 10) + i; t._d = dedupeKey(t); if (!t._d) t._h = hashTag(t); } e._tags = tags; } } ctx.tags.push(...tags); } for (const name in hooks) { if (hooks[name]?.length && TAG_MUTATING_HOOK_RE.test(name)) { cloneTagsInPlace(ctx.tags); break; } } const hasFlatMeta = dedupeTags(ctx); resolveTitleTemplate(ctx, head); valuesToTags(ctx, hasFlatMeta); callHook(head, \"tags:beforeResolve\", ctx); callHook(head, \"tags:resolve\", ctx); callHook(head, \"tags:afterResolve\", ctx); return sanitizeTagsInPlace(ctx.tags); } const WHITESPACE_RE = /\\s+/; function createDomRenderer(options = {}) { return (head) => _renderDOMHead(head, options); } function hasPendingEntries(head) { for (const entry of head.entries.values()) { if (entry._pending !== void 0) return true; } return false; } function createDomState(head, dom) { const state = { _d: dom, _t: dom.title, _e: new Map([[\"htmlAttrs\", dom.documentElement], [\"bodyAttrs\", dom.body]]), _p: {}, _s: {}, _l: new Map() }; for (const entry of head.entries.values()) { if (entry._o !== void 0) { const orig = entry._o; for (const t of [\"bodyAttrs\", \"htmlAttrs\"]) { const cls = orig[t]?.class; if (typeof cls === \"string\") { const $el = state._e.get(t); for (const c of cls.split(WHITESPACE_RE)) { if (c) state._p[`${t}:attr:class:${c}`] = () => $el.classList.remove(c); } } } } } return state; } function _renderDOMHead(head, options = {}) { const dom = options.document || head.resolvedOptions.document; const activeState = head._dom; if (!dom || head._du || activeState && activeState._d === dom && !head.dirty && !hasPendingEntries(head)) return false; const defaultView = dom.defaultView; head._du = true; let didRender = false; try { let track = function(key, fn, fresh) { renderState._s[key] = !fresh && previous[key] || fn; delete previous[key]; }, trackEvent = function(id, k, ev, source, $el, target) { const key = `${id}:event:${k}`; const prev = renderState._l.get(key); if (prev && prev[0] === target && prev[1] === ev && prev[2] === source) { track(key, prev[4]); return; } prev?.[4](); const dk = `data-${k}`; const handler = ((e) => source.call($el, e)); const cleanup = () => { target.removeEventListener(ev, handler); if ($el.getAttribute(dk) === \"\") $el.removeAttribute(dk); if (renderState._l.get(key)?.[3] === handler) renderState._l.delete(key); }; target.addEventListener(ev, handler); renderState._l.set(key, [target, ev, source, handler, cleanup]); $el.setAttribute(dk, \"\"); track(key, cleanup, true); }, trackCtx = function({ id, $el, tag }) { renderState._e.set(id, $el); if (!tag.tag.endsWith(\"Attrs\")) { const text = tag.textContent; if (text != null && text !== \"\") { if (text !== $el.textContent) $el.textContent = text; track(`${id}:text`, () => { if ($el.textContent === text) $el.textContent = \"\"; }, true); } const html = tag.innerHTML; if (html != null && html !== \"\") { if (html !== $el.innerHTML) $el.innerHTML = html; track(`${id}:html`, () => { if ($el.innerHTML === html) $el.innerHTML = \"\"; }, true); } const elKey = `${id}:el`; track(elKey, previous[elKey] || (() => { $el?.remove(); renderState._e.delete(id); })); } for (const k in tag.props) { const v = tag.props[k]; if (k[0] === \"o\" && k[1] === \"n\" && typeof v === \"function\") { const ev = k.slice(2); if ($el?.dataset?.[`${k}fired`]) v.call($el, new (defaultView?.Event || Event)(ev)); trackEvent(id, k, ev, v, $el, tag.tag === \"bodyAttrs\" && defaultView ? defaultView : $el); continue; } const ck = `${id}:attr:${k}`; if (k === \"class\" && v) { for (const c of v) { const key = `${ck}:${c}`; track(key, previous[key] || (() => $el.classList.remove(c))); if (!$el.classList.contains(c)) $el.classList.add(c); } } else if (k === \"style\" && v) { for (const [sk, sv] of v) { const key = `${ck}:${sk}`; track(key, previous[key] || (() => $el.style.removeProperty(sk))); $el.style.setProperty(sk, sv); } } else if (v !== false && v !== null) { if ($el.getAttribute(k) !== v) $el.setAttribute(k, v === true ? \"\" : String(v)); track(ck, previous[ck] || (() => $el.removeAttribute(k))); } } }; const beforeRenderCtx = { shouldRender: true, tags: [] }; callHook(head, \"dom:beforeRender\", beforeRenderCtx); if (!beforeRenderCtx.shouldRender) return false; let state = activeState; if (state?._d !== dom) { if (state) { for (const k in state._s) state._s[k](); for (const k in state._p) state._p[k](); state._s = state._p = {}; state._e.clear(); state._l.clear(); } state = void 0; } if (!state) { state = createDomState(head, dom); } else { state._p = state._s; } state._s = {}; const renderState = state; const previous = renderState._p; const pending = []; const frag = {}; head.dirty = false; const rawTags = resolveTags(head, options.tagWeight ? { tagWeight: options.tagWeight } : void 0); const tags = []; const dupeKeyCounter = {}; for (const tag of rawTags) { const count = dupeKeyCounter[tag._d] || 0; const id = (count ? `${tag._d}:${count}` : tag._d) || tag._h; const ctx = { tag, id, shouldRender: true }; if (tag.tag === \"meta\" && tag._d && isMetaArrayDupeKey(tag._d)) dupeKeyCounter[tag._d] = count + 1; tags.push(ctx); if (tag.tag === \"title\") { dom.title = tag.textContent; track(\"title:\", () => dom.title = renderState._t); continue; } ctx.$el = renderState._e.get(id); if (ctx.$el) trackCtx(ctx); else if (HasElementTags.has(tag.tag)) pending.push(ctx); } if (pending.length) { const tracked = new Set(renderState._e.values()); for (const el of [...dom.body.children, ...dom.head.children]) { const elTag = el.tagName.toLowerCase(); if (!HasElementTags.has(elTag) || tracked.has(el)) continue; const props = { innerHTML: el.innerHTML }; for (const n of el.getAttributeNames()) props[n] = el.getAttribute(n); const next = normalizeProps({ tag: elTag, props: {} }, props); next.key = el.getAttribute(\"data-hid\") || void 0; const dedupe = dedupeKey(next) || hashTag(next); let k = dedupe; let c = 1; while (renderState._e.has(k)) k = `${dedupe}:${c++}`; renderState._e.set(k, el); } } for (const ctx of pending) { const found = renderState._e.get(ctx.id); ctx.$el = found || dom.createElement(ctx.tag.tag); trackCtx(ctx); if (!found) (frag[ctx.tag.tagPosition || \"head\"] ??= dom.createDocumentFragment()).appendChild(ctx.$el); } if (frag.head) dom.head.appendChild(frag.head); if (frag.bodyOpen) dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild); if (frag.bodyClose) dom.body.appendChild(frag.bodyClose); for (const k in previous) previous[k](); head._dom = renderState; didRender = true; callHook(head, \"dom:rendered\", { renders: tags }); } catch (e) { head.dirty = true; throw e; } finally { head._du = false; } if (didRender && (head.dirty || hasPendingEntries(head))) _renderDOMHead(head, options); return didRender; } function registerPlugin(head, p) { if (typeof p === \"function\" && p.key && head.plugins.has(p.key)) return; const plugin = typeof p === \"function\" ? p(head) : p; const key = plugin.key || String(head.plugins.size + 1); if (!head.plugins.get(key)) { head.plugins.set(key, plugin); for (const k in plugin.hooks || {}) head.hooks?.hook(k, plugin.hooks[k]); } } function createUnhead(renderer, resolvedOptions = {}) { const ssr = !resolvedOptions.document; const entries = new Map(); const plugins = new Map(); const head = { _entryCount: 1, _h: 0, plugins, resolvedOptions, ssr, entries, hooks: void 0, render: () => renderer(head), use: (p) => registerPlugin(head, p), push(input, _options) { const _i = _options?._index ?? head._entryCount++; const options = _options ? { ..._options } : {}; delete options.head; delete options.onRendered; delete options._index; const entry = { _i, input, options }; entries.set(_i, entry); const active = { _i, dispose() { entries.delete(_i); }, patch(input2) { if (ssr) { entry.input = input2; delete entry._tags; } else { entry._pending = input2; } if (!entries.has(_i)) entries.set(_i, entry); } }; return active; } }; resolvedOptions.init?.forEach((e) => e && head.push(e)); return head; } const DEFAULT_STREAM_KEY = \"__unhead__\"; function init(options = {}) { const { streamKey = DEFAULT_STREAM_KEY } = options; const win = \u0074ypeof window !== \"undefined\" ? window : void 0; if (!win) return; const queue = win[streamKey]; if (queue?._head) return queue._head; const doc = typeof document !== \"undefined\" ? document : void 0; const head = createUnhead(createDomRenderer(), { document: doc }); function pushStreamed(entry) { const active = head.push(entry); const stored = head.entries.get(active._i); if (stored) stored._streamed = true; } function pushBatch(entries) { const nested = head._b; head._b = true; try { for (const entry of entries) { pushStreamed(entry); } } finally { head._b = nested; if (!nested) { head.dirty = true; head.render(); } } } if (queue?._q?.length) { pushBatch(queue._q.flat()); } win[streamKey] = { _q: [], _head: head, push: pushBatch }; return head; } exports.init = init; return exports; })({});__unhead_iife__.init();"; +export const streamingIifeSize = 21331; diff --git a/apps/web/.output/server/node_modules/unhead/dist/stream/server.mjs b/apps/web/.output/server/node_modules/unhead/dist/stream/server.mjs new file mode 100644 index 0000000..a470759 --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/stream/server.mjs @@ -0,0 +1,446 @@ +import { parseHtmlForIndexes, applyHeadToHtml } from '../parser.mjs'; +export { prepareTemplate } from '../parser.mjs'; +import { c as createHead } from '../shared/unhead.DGl9jcjg.mjs'; +import { e as resolveHeadInput, h as hashTag, n as normalizeEntryToTags, b as normalizeProps, d as dedupeKey } from '../shared/unhead.DJuZwX9c.mjs'; +import { a as callHook } from '../shared/unhead.Bm4Y6XQI.mjs'; +import { DEFAULT_STREAM_KEY } from './client.mjs'; +import { p as parseStreamKey } from '../shared/unhead.C_7zwq8E.mjs'; +import '../shared/unhead.Bf_fPVYA.mjs'; +import '../shared/unhead.D7HkBzZn.mjs'; +import '../shared/unhead.CGPOfp5O.mjs'; +import 'hookable'; +import '../shared/unhead.C5Bksi2B.mjs'; + +const LT_RE = /</g; +const GT_RE = />/g; +const AMP_RE = /&/g; +const SSR_OUTLET_RE = /<!--\s*(?:app-html|ssr-outlet)\s*-->/; +let encoder; +let preparedStreamingLayouts; +// @__NO_SIDE_EFFECTS__ +function createStreamableHead(options = {}) { + const { streamKey, writesBodyTags, nonce, ...rest } = options; + const parsedStreamKey = streamKey === void 0 ? void 0 : parseStreamKey(streamKey); + const head = createHead({ + ...rest, + experimentalStreamKey: parsedStreamKey + }); + if (writesBodyTags) + streamState(head).writesBodyTags = true; + if (nonce) + streamState(head).nonce = nonce; + let resolveShellReady; + const shellReady = new Promise((resolve) => { + resolveShellReady = resolve; + }); + return { + head, + onShellReady: () => resolveShellReady(), + shellReady + }; +} +function getStreamKey(head) { + const key = head.resolvedOptions.experimentalStreamKey || DEFAULT_STREAM_KEY; + return parseStreamKey(key); +} +function createBootstrapScript(streamKey = DEFAULT_STREAM_KEY, nonce) { + const parsedStreamKey = parseStreamKey(streamKey); + const nonceAttr = renderNonceAttribute(nonce); + return `<script${nonceAttr}>window.${parsedStreamKey}||(window.${parsedStreamKey}={_q:[],push(e){this._q.push(e)}})<\/script>`; +} +function renderNonceAttribute(nonce) { + return nonce ? ` nonce="${nonce.replace(AMP_RE, "&").replace(/"/g, """)}"` : ""; +} +function renderShell(head) { + const result = head.render(); + rememberShellBodyTags(head); + head.entries.clear(); + streamState(head).shellRendered = true; + return result; +} +function renderSSRHeadShell(head, template) { + const parsed = typeof template === "string" ? parseHtmlForIndexes(template) : template; + const result = applyShellToTemplate(head, head.render(), parsed); + rememberShellBodyTags(head); + head.entries.clear(); + streamState(head).shellRendered = true; + return result; +} +function applyShellToTemplate(head, ssr, parsed) { + return applyHeadToHtml(parsed, { + htmlAttrs: ssr.htmlAttrs, + headTags: createBootstrapScript(getStreamKey(head), head._stream?.nonce) + ssr.headTags, + bodyAttrs: ssr.bodyAttrs, + bodyTagsOpen: ssr.bodyTagsOpen, + bodyTags: ssr.bodyTags + }); +} +function normalizePendingTags(head) { + const propResolvers = head.resolvedOptions.propResolvers || []; + const tags = []; + const entries = /* @__PURE__ */ new Map(); + for (const entry of head.entries.values()) { + const resolved = resolveHeadInput(unwrapEntryInput(entry.input), propResolvers); + entries.set(entry._i, { input: entry.input, resolved }); + let index = 0; + for (const tag of normalizeEntryToTags(resolved, [])) { + if (entry.options) + Object.assign(tag, entry.options); + tag._p = (entry._i << 10) + index++; + if (tag.tag === "templateParams") + tag.props = { ...tag.props }; + tags.push(tag); + } + } + return { tags, entries }; +} +const JSON_LD_TYPE_RE = /\bld\+json\b/i; +function streamState(head) { + return head._stream ||= {}; +} +function isStreamedBodyTag(tagName, tag, entryPosition) { + if (!tag || typeof tag !== "object") + return false; + if (tagName === "noscript") + return true; + const position = tag.tagPosition ?? entryPosition; + if (position === "bodyClose" || position === "bodyOpen") + return true; + const type = tag.type ?? tag.props?.type; + return tagName === "script" && typeof type === "string" && JSON_LD_TYPE_RE.test(type); +} +function streamedBodyTagIdentity(tagName, tag) { + const normalized = normalizeProps({ tag: tagName, props: {} }, tag); + const content = hashTag(normalized); + return { slot: dedupeKey(normalized) || content, content }; +} +function unwrapEntryInput(input) { + return typeof input === "function" ? input() : input; +} +function rememberShellBodyTags(head) { + const state = streamState(head); + let seen = state.seen; + for (const entry of head.entries.values()) { + const entryPosition = entry.options?.tagPosition; + for (const tag of entry._tags || entry._precomputedTags || []) { + if (!isStreamedBodyTag(tag.tag, tag, entryPosition)) + continue; + seen ||= state.seen = /* @__PURE__ */ new Set(); + if (tag.textContent || tag.innerHTML) + seen.add(String(tag.textContent || tag.innerHTML)); + seen.add(tag._d || tag._h || hashTag(tag)); + } + } +} +function hasStreamedBodyTags(input, entryPosition) { + if (input && typeof input === "object") { + for (const key in input) { + const value = input[key]; + if (Array.isArray(value)) { + for (const tag of value) { + if (isStreamedBodyTag(key, tag, entryPosition)) + return true; + } + } + } + } + return false; +} +function splitStreamedBodyTags(input, seen, entryPosition) { + let patch; + let bodyTags; + for (const key in input) { + const value = input[key]; + if (!Array.isArray(value) || !value.some((tag) => isStreamedBodyTag(key, tag, entryPosition))) + continue; + const rest = []; + const carried = []; + for (const tag of value) { + if (!isStreamedBodyTag(key, tag, entryPosition)) { + rest.push(tag); + continue; + } + const id = streamedBodyTagIdentity(key, tag); + if (seen.has(id.content)) + continue; + if (seen.has(id.slot)) { + rest.push(tag); + continue; + } + seen.add(id.content); + carried.push({ ...tag, tagPosition: "bodyClose" }); + } + patch ||= { ...input }; + if (rest.length) + patch[key] = rest; + else + delete patch[key]; + if (carried.length) + (bodyTags ||= {})[key] = carried; + } + const hasPatch = Object.keys(patch).some((k) => patch[k] !== void 0); + return { patch: hasPatch ? patch : void 0, bodyTags }; +} +function renderStreamBodyTags(head) { + const bodyTagInputs = streamState(head).bodyTags; + if (!bodyTagInputs?.length) { + return ""; + } + const restore = new Map(head.entries); + head.entries.clear(); + try { + for (const input of bodyTagInputs) + head.push(input); + const bodyTags = head.render().bodyTags; + streamState(head).bodyTags = void 0; + return bodyTags; + } finally { + head.entries.clear(); + for (const [k, v] of restore) + head.entries.set(k, v); + } +} +function renderStreamEnd(head, parts) { + const bodyTags = renderStreamBodyTags(head); + if (!bodyTags) + return parts.end; + const at = parts.bodyTagsAt ?? parts.end.length; + return parts.end.slice(0, at) + bodyTags + parts.end.slice(at); +} +function renderSSRHeadSuspenseChunk(head) { + if (!head.entries.size) + return ""; + const streamKey = getStreamKey(head); + const propResolvers = head.resolvedOptions.propResolvers || []; + let normalizedEntries; + let serialized; + let patchCount = 0; + try { + if (head.hooks?._hooks?.["ssr:streamChunk"]?.length) { + const normalized = normalizePendingTags(head); + normalizedEntries = normalized.entries; + callHook(head, "ssr:streamChunk", { tags: normalized.tags }); + } + const state = streamState(head); + let nextSeen; + const inputs = []; + let bodyTags; + for (const entry of head.entries.values()) { + const normalized = normalizedEntries?.get(entry._i); + const input = normalized && normalized.input === entry.input ? normalized.resolved : resolveHeadInput(unwrapEntryInput(entry.input), propResolvers); + const entryPosition = entry.options?.tagPosition; + if (!state.writesBodyTags || !hasStreamedBodyTags(input, entryPosition)) { + inputs.push(input); + continue; + } + const split = splitStreamedBodyTags(input, nextSeen ||= new Set(state.seen), entryPosition); + if (split.patch) + inputs.push(split.patch); + if (split.bodyTags) + (bodyTags ||= []).push(split.bodyTags); + } + serialized = safeJsonStringify(inputs); + patchCount = inputs.length; + if (nextSeen) + state.seen = nextSeen; + if (bodyTags) + (state.bodyTags ||= []).push(...bodyTags); + } catch (error) { + for (const [key, entry] of head.entries) { + try { + safeJsonStringify(resolveHeadInput(unwrapEntryInput(entry.input), propResolvers)); + } catch { + head.entries.delete(key); + } + } + throw error; + } + head.entries.clear(); + if (!patchCount) + return ""; + return `window.${streamKey}.push(${serialized})`; +} +function safeJsonStringify(obj) { + return JSON.stringify(obj).replace(LT_RE, "\\u003c").replace(GT_RE, "\\u003e").replace(AMP_RE, "\\u0026"); +} +function wrapStream(head, stream, template, preRenderedState, options) { + streamState(head).writesBodyTags = true; + const flushChunk = options?.flushChunk ?? (() => { + let chunk; + try { + chunk = renderSSRHeadSuspenseChunk(head); + } catch { + return ""; + } + if (!chunk) + return ""; + return `<script${renderNonceAttribute(head._stream?.nonce)}>window.${getStreamKey(head)}&&(${chunk});document.currentScript.remove()<\/script>`; + }); + const enc = encoder ??= new TextEncoder(); + let reader; + let parts; + return new ReadableStream({ + // Async so a failure here rejects into an errored stream instead of + // throwing synchronously out of the constructor. The reader is acquired + // before rendering (and released if rendering fails) so a failure at + // either step leaves `head.entries` intact and the upstream unlocked + // for retry. + async start(controller) { + const activeReader = stream.getReader(); + let prepared; + try { + prepared = prepareStreamingTemplate(head, template, preRenderedState); + } catch (error) { + activeReader.releaseLock(); + throw error; + } + reader = activeReader; + parts = prepared; + controller.enqueue(enc.encode(prepared.shell)); + }, + // Read at most one upstream chunk per downstream request so backpressure + // propagates instead of eagerly draining the app stream. + async pull(controller) { + const activeReader = reader; + if (!activeReader) + return; + const result = await activeReader.read().then( + (value) => ({ ok: true, value }), + (error) => ({ ok: false, error }) + ); + if (activeReader !== reader) + return; + if (!result.ok) { + reader = void 0; + activeReader.releaseLock(); + controller.error(result.error); + return; + } + if (result.value.done) { + reader = void 0; + activeReader.releaseLock(); + const extra2 = flushChunk?.(); + if (extra2) + controller.enqueue(enc.encode(extra2)); + const closing = parts ? renderStreamEnd(head, parts) : ""; + if (closing) + controller.enqueue(enc.encode(closing)); + controller.close(); + return; + } + controller.enqueue(result.value.value); + const extra = flushChunk?.(); + if (extra) + controller.enqueue(enc.encode(extra)); + }, + async cancel(reason) { + const activeReader = reader; + reader = void 0; + if (activeReader) { + try { + await activeReader.cancel(reason); + } catch { + } + activeReader.releaseLock(); + } + } + }); +} +function createStreamingTemplateLayout(parsed) { + const html = parsed.html; + const bodyEnd = parsed.indexes.bodyTagEnd; + const bodyCloseStart = parsed.indexes.bodyCloseTagStart; + if (bodyEnd < 0 || bodyCloseStart < 0) + return; + const bodyInterior = html.substring(bodyEnd, bodyCloseStart); + const markerMatch = bodyInterior.match(SSR_OUTLET_RE); + let beforeStream; + let afterStream; + if (markerMatch) { + beforeStream = bodyInterior.substring(0, markerMatch.index); + afterStream = bodyInterior.substring(markerMatch.index + markerMatch[0].length); + } else { + beforeStream = ""; + afterStream = bodyInterior; + } + const shellPart = html.substring(0, bodyEnd) + beforeStream; + const endPart = html.substring(bodyCloseStart); + let shellTemplate; + if (bodyCloseStart >= bodyEnd) { + const shellLen = shellPart.length; + const { htmlTagStart, headTagEnd, bodyTagStart } = parsed.indexes; + const shellHtmlTagStart = htmlTagStart >= 0 && htmlTagStart + 5 <= shellLen ? htmlTagStart : -1; + let shellHtmlTagEnd = -1; + if (shellHtmlTagStart >= 0) { + const gt = shellPart.indexOf(">", shellHtmlTagStart); + shellHtmlTagEnd = gt >= 0 ? gt + 1 : shellLen + 7; + } + shellTemplate = { + html: `${shellPart}</body></html>`, + input: parsed.input, + indexes: { + htmlTagStart: shellHtmlTagStart, + htmlTagEnd: shellHtmlTagEnd, + headTagEnd: headTagEnd >= 0 && headTagEnd + 7 <= shellLen ? headTagEnd : -1, + // <body> is always fully inside the prefix in this branch. + bodyTagStart, + bodyTagEnd: bodyEnd, + bodyCloseTagStart: bodyCloseStart + 7 <= shellLen ? bodyCloseStart : shellLen + } + }; + } else { + shellTemplate = parseHtmlForIndexes(`${shellPart}</body></html>`); + } + return { + shellTemplate, + endBeforeBodyTags: afterStream, + endAfterBodyTags: endPart + }; +} +function getPreparedStreamingLayout(template) { + const cache = preparedStreamingLayouts ||= /* @__PURE__ */ new WeakMap(); + let layout = cache.get(template); + if (layout === void 0) { + layout = createStreamingTemplateLayout(template) || null; + if (layout) { + Object.freeze(layout.shellTemplate.indexes); + Object.freeze(layout.shellTemplate); + Object.freeze(layout); + } + cache.set(template, layout); + } + return layout || void 0; +} +function prepareStreamingTemplate(head, template, preRenderedState) { + const ssr = preRenderedState ?? head.render(); + const parsed = typeof template === "string" ? parseHtmlForIndexes(template) : template; + const layout = typeof template === "string" ? createStreamingTemplateLayout(parsed) : getPreparedStreamingLayout(template); + let parts; + if (layout) { + const shell = applyHeadToHtml(layout.shellTemplate, { + htmlAttrs: ssr.htmlAttrs, + headTags: createBootstrapScript(getStreamKey(head), head._stream?.nonce) + ssr.headTags, + bodyAttrs: ssr.bodyAttrs, + bodyTagsOpen: ssr.bodyTagsOpen, + bodyTags: "" + }).replace("</body></html>", ""); + parts = { + shell, + end: layout.endBeforeBodyTags + ssr.bodyTags + layout.endAfterBodyTags, + bodyTagsAt: layout.endBeforeBodyTags.length + }; + } else { + parts = { + shell: applyShellToTemplate(head, ssr, parsed), + end: "" + }; + } + if (!preRenderedState) { + rememberShellBodyTags(head); + head.entries.clear(); + } + streamState(head).shellRendered = true; + return parts; +} + +export { createBootstrapScript, createStreamableHead, prepareStreamingTemplate, renderSSRHeadShell, renderSSRHeadSuspenseChunk, renderShell, renderStreamBodyTags, renderStreamEnd, wrapStream }; diff --git a/apps/web/.output/server/node_modules/unhead/dist/utils.mjs b/apps/web/.output/server/node_modules/unhead/dist/utils.mjs new file mode 100644 index 0000000..9f2481d --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/dist/utils.mjs @@ -0,0 +1,7 @@ +export { D as DupeableTags, H as HasElementTags, M as MetaTagsArrayable, S as ScriptNetworkEvents, a as SelfClosingTags, T as TagConfigKeys, b as TagPriorityAliases, c as TagsWithInnerContent, U as UniqueTags, d as UsesMergeStrategy, V as ValidHeadTags } from './shared/unhead.CGPOfp5O.mjs'; +export { d as dedupeKey, a as dedupeTags, h as hashTag, i as isMetaArrayDupeKey, n as normalizeEntryToTags, b as normalizeProps, r as resolveTags, c as resolveTitleTemplate, s as sanitizeTags, w as walkResolver } from './shared/unhead.DJuZwX9c.mjs'; +export { h as hasOwn } from './shared/unhead.Bf_fPVYA.mjs'; +export { r as resolveMetaKeyType, a as resolveMetaKeyValue, b as resolvePackedMetaObjectValue, u as unpackMeta } from './shared/unhead.o8j9utSy.mjs'; +export { p as processTemplateParams } from './shared/unhead.DspMpm6y.mjs'; +import './shared/unhead.Bm4Y6XQI.mjs'; +import 'hookable'; diff --git a/apps/web/.output/server/node_modules/unhead/package.json b/apps/web/.output/server/node_modules/unhead/package.json new file mode 100644 index 0000000..dff8efd --- /dev/null +++ b/apps/web/.output/server/node_modules/unhead/package.json @@ -0,0 +1,179 @@ +{ + "name": "unhead", + "type": "module", + "version": "3.4.3", + "description": "Full-stack <head> manager built for any framework.", + "author": { + "name": "Harlan Wilton", + "email": "harlan@harlanzw.com", + "url": "https://harlanzw.com/" + }, + "publishConfig": { + "access": "public", + "tag": "next" + }, + "license": "MIT", + "funding": "https://github.com/sponsors/harlan-zw", + "homepage": "https://unhead.unjs.io", + "repository": { + "type": "git", + "url": "git+https://github.com/unjs/unhead.git", + "directory": "packages/unhead" + }, + "bugs": { + "url": "https://github.com/unjs/unhead/issues" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.mjs" + }, + "./plugins": { + "types": "./dist/plugins.d.ts", + "default": "./dist/plugins.mjs" + }, + "./legacy": { + "types": "./dist/legacy.d.ts", + "default": "./dist/legacy.mjs" + }, + "./minify": { + "types": "./dist/minify.d.ts", + "default": "./dist/minify.mjs" + }, + "./server": { + "types": "./dist/server.d.ts", + "default": "./dist/server.mjs" + }, + "./client": { + "types": "./dist/client.d.ts", + "default": "./dist/client.mjs" + }, + "./stream/server": { + "types": "./dist/stream/server.d.ts", + "default": "./dist/stream/server.mjs" + }, + "./stream/client": { + "types": "./dist/stream/client.d.ts", + "default": "./dist/stream/client.mjs" + }, + "./utils": { + "types": "./dist/utils.d.ts", + "default": "./dist/utils.mjs" + }, + "./types": { + "types": "./dist/types.d.ts", + "default": "./dist/types.mjs" + }, + "./scripts": { + "types": "./dist/scripts.d.ts", + "node": "./dist/scripts.node.mjs", + "default": "./dist/scripts.mjs" + }, + "./scripts/triggers": { + "types": "./dist/scripts/triggers.d.ts", + "default": "./dist/scripts/triggers.mjs" + }, + "./parser": { + "types": "./dist/parser.d.ts", + "default": "./dist/parser.mjs" + }, + "./validate": { + "types": "./dist/validate.d.ts", + "default": "./dist/validate.mjs" + }, + "./stream/unplugin": { + "types": "./dist/stream/unplugin.d.ts", + "default": "./dist/stream/unplugin.mjs" + }, + "./stream/vite": { + "types": "./dist/stream/vite.d.ts", + "default": "./dist/stream/vite.mjs" + }, + "./stream/iife": { + "types": "./dist/stream/iife.d.ts", + "default": "./dist/stream/iife.mjs" + } + }, + "main": "dist/index.mjs", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "typesVersions": { + "*": { + "plugins": [ + "dist/plugins.d.ts" + ], + "legacy": [ + "dist/legacy.d.ts" + ], + "minify": [ + "dist/minify.d.ts" + ], + "server": [ + "dist/server.d.ts" + ], + "client": [ + "dist/client.d.ts" + ], + "stream/server": [ + "dist/stream/server.d.ts" + ], + "stream/client": [ + "dist/stream/client.d.ts" + ], + "utils": [ + "dist/utils.d.ts" + ], + "types": [ + "dist/types.d.ts" + ], + "scripts": [ + "dist/scripts.d.ts" + ], + "scripts/triggers": [ + "dist/scripts/triggers.d.ts" + ], + "parser": [ + "dist/parser.d.ts" + ], + "validate": [ + "dist/validate.d.ts" + ], + "stream/unplugin": [ + "dist/stream/unplugin.d.ts" + ], + "stream/vite": [ + "dist/stream/vite.d.ts" + ], + "stream/iife": [ + "dist/stream/iife.d.ts" + ] + } + }, + "files": [ + "*.d.ts", + "dist" + ], + "peerDependencies": { + "vite": ">=6.4.2" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + }, + "dependencies": { + "hookable": "^6.1.1", + "unplugin": "^3.3.0" + }, + "devDependencies": { + "@rollup/plugin-node-resolve": "^16.0.3", + "rollup": "^4.63.2", + "vite": "^8.3.0" + }, + "scripts": { + "build": "unbuild", + "stub": "unbuild --stub", + "test:attw": "attw --pack" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs b/apps/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs new file mode 100644 index 0000000..100c3b0 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs @@ -0,0 +1,687 @@ +import { withLeadingSlash } from "ufo"; +//#region src/runtime.ts +const MAX_INITIAL_SLOTS = 8192; +function createMergeSlots(capacity = 16) { + return { + slotOf: Object.create(null), + count: 0, + idOf: [], + metaOf: [], + scripts: new Uint8Array(capacity), + styles: new Uint8Array(capacity), + preload: new Uint8Array(capacity), + prefetch: new Uint8Array(capacity), + epoch: 0 + }; +} +function slotFor(slots, id, meta) { + let slot = slots.slotOf[id]; + if (slot === void 0) { + slot = slots.count++; + slots.slotOf[id] = slot; + slots.idOf.push(id); + slots.metaOf.push(meta); + if (slot >= slots.scripts.length) { + const capacity = slots.scripts.length * 2; + for (const kind of [ + "scripts", + "styles", + "preload", + "prefetch" + ]) { + const grown = new Uint8Array(capacity); + grown.set(slots[kind]); + slots[kind] = grown; + } + } + } + return slot; +} +function createFragmentCaches() { + return { + style: [], + script: [], + preloadHint: [], + prefetchHint: [], + preloadHeader: [], + prefetchHeader: [], + href: [] + }; +} +function createRendererContext({ manifest, precomputed, buildAssetsURL, dependencySetsCacheSize }) { + if (!manifest && !precomputed) throw new Error("Either manifest or precomputed data must be provided"); + const cacheSize = typeof dependencySetsCacheSize === "number" && Number.isFinite(dependencySetsCacheSize) && dependencySetsCacheSize > 0 ? Math.floor(dependencySetsCacheSize) : dependencySetsCacheSize === void 0 ? 1e3 : 0; + const entrypoints = []; + let slotCapacity = 16; + if (precomputed) slotCapacity = precomputed.resourceCount ?? 16; + else if (manifest) for (const id in manifest) { + slotCapacity++; + if (manifest[id].isEntry) entrypoints.push(id); + } + const ctx = { + buildAssetsURL: buildAssetsURL || withLeadingSlash, + manifest, + precomputed, + updateManifest, + _dependencies: {}, + _dependencySets: /* @__PURE__ */ new Map(), + _dependencySetAliases: /* @__PURE__ */ new Map(), + _aliasIdHashes: Object.create(null), + _aliasIdHashCount: 0, + _dependencySetsCacheSize: cacheSize, + _entrypoints: [], + _renderedCache: /* @__PURE__ */ new WeakMap(), + _fragments: createFragmentCaches(), + _flatDependencies: Object.create(null), + _mergeSlots: createMergeSlots(Math.min(slotCapacity, MAX_INITIAL_SLOTS)), + _idScratch: [] + }; + function updateManifest(manifest) { + ctx.manifest = manifest; + ctx._dependencies = {}; + ctx._dependencySets.clear(); + ctx._dependencySetAliases.clear(); + ctx._aliasIdHashes = Object.create(null); + ctx._aliasIdHashCount = 0; + ctx._renderedCache = /* @__PURE__ */ new WeakMap(); + ctx._fragments = createFragmentCaches(); + ctx._flatDependencies = Object.create(null); + let capacity = 16; + const entrypoints = []; + for (const id in manifest) { + capacity++; + if (manifest[id].isEntry) entrypoints.push(id); + } + ctx._mergeSlots = createMergeSlots(Math.min(capacity, MAX_INITIAL_SLOTS)); + ctx._entrypoints = entrypoints; + } + if (precomputed) { + ctx._dependencies = precomputed.dependencies; + ctx._entrypoints = precomputed.entrypoints; + } else if (manifest) ctx._entrypoints = entrypoints; + return ctx; +} +function getModuleDependencies(id, rendererContext) { + if (rendererContext._dependencies[id]) return rendererContext._dependencies[id]; + const dependencies = rendererContext._dependencies[id] = { + scripts: {}, + styles: {}, + preload: {}, + prefetch: {} + }; + if (!rendererContext.manifest) return dependencies; + const meta = rendererContext.manifest[id]; + if (!meta) return dependencies; + if (meta.file) { + if (meta.preload) dependencies.preload[id] = meta; + if (meta.isEntry || meta.sideEffects) dependencies.scripts[id] = meta; + } + for (const css of meta.css || []) { + const cssResource = rendererContext.manifest[css]; + dependencies.styles[css] = dependencies.prefetch[css] = cssResource; + if (cssResource.preload) dependencies.preload[css] = cssResource; + } + for (const asset of meta.assets || []) { + const assetResource = rendererContext.manifest[asset]; + dependencies.prefetch[asset] = assetResource; + if (assetResource.preload) dependencies.preload[asset] = assetResource; + } + if (meta.imports) for (const depId of meta.imports) { + const depDeps = getModuleDependencies(depId, rendererContext); + Object.assign(dependencies.styles, depDeps.styles); + Object.assign(dependencies.preload, depDeps.preload); + Object.assign(dependencies.prefetch, depDeps.prefetch); + } + return dependencies; +} +/** Past this, the table is dropped wholesale; stale alias keys stop matching. */ +const MAX_ALIAS_ID_HASHES = 65536; +function aliasHash(rendererContext, entrypoints, requestIds) { + let hashes = rendererContext._aliasIdHashes; + if (rendererContext._aliasIdHashCount > MAX_ALIAS_ID_HASHES) { + hashes = rendererContext._aliasIdHashes = Object.create(null); + rendererContext._aliasIdHashCount = 0; + rendererContext._dependencySetAliases.clear(); + } + let sum = 0; + let mixed = 1; + let count = 0; + for (const id of entrypoints) { + let hash = hashes[id]; + if (hash === void 0) { + hash = rendererContext._aliasIdHashCount++ * 2654435761 | 0; + hashes[id] = hash; + } + sum = sum + hash | 0; + mixed = mixed ^ hash + count | 0; + count++; + } + if (requestIds) for (const id of requestIds) { + let hash = hashes[id]; + if (hash === void 0) { + hash = rendererContext._aliasIdHashCount++ * 2654435761 | 0; + hashes[id] = hash; + } + sum = sum + hash | 0; + mixed = mixed ^ hash + count | 0; + count++; + } + return Math.imul(sum, 2654435761) ^ Math.imul(mixed, 40503) ^ count | 0; +} +function readAlias(rendererContext, aliasKey, moduleIds, entrypoints, requestIds) { + const entry = rendererContext._dependencySetAliases.get(aliasKey); + if (entry === void 0) return; + const { ids } = entry; + let i = 0; + if (moduleIds) { + if (moduleIds.length !== ids.length) return; + for (; i < moduleIds.length; i++) if (ids[i] !== moduleIds[i]) return; + return entry.deps; + } + for (const id of entrypoints) if (ids[i++] !== id) return; + if (requestIds) { + for (const id of requestIds) if (ids[i++] !== id) return; + } + return i === ids.length ? entry.deps : void 0; +} +function setAlias(rendererContext, aliasKey, ids, deps, cacheSize) { + const aliases = rendererContext._dependencySetAliases; + aliases.set(aliasKey, { + ids: [...ids], + deps + }); + if (aliases.size > cacheSize) { + const oldest = aliases.keys().next().value; + if (oldest !== void 0) aliases.delete(oldest); + } +} +function collectInto(source, slots, mergeSlots) { + for (const id in source) slots.push(slotFor(mergeSlots, id, source[id])); +} +/** A module's own styles are never preloaded; cross-module overlap is filtered per request. */ +function collectPreload(deps, slots, mergeSlots) { + const { styles, preload } = deps; + for (const id in preload) { + if (id in styles) continue; + slots.push(slotFor(mergeSlots, id, preload[id])); + } +} +/** Opt-out and a module's own preload and styles are fixed; cross-module overlap is not. */ +function collectPrefetch(deps, source, slots, seen, mergeSlots) { + const { styles, preload } = deps; + for (const id in source) { + const meta = source[id]; + if (!meta.prefetch || id in preload || id in styles) continue; + const slot = slotFor(mergeSlots, id, meta); + if (seen.has(slot)) continue; + seen.add(slot); + slots.push(slot); + } +} +function getFlatDependencies(id, rendererContext) { + const cached = rendererContext._flatDependencies[id]; + if (cached !== void 0) return cached; + const deps = getModuleDependencies(id, rendererContext); + const mergeSlots = rendererContext._mergeSlots; + const flat = { + scriptSlots: [], + styleSlots: [], + preloadSlots: [], + prefetchSlots: [] + }; + collectInto(deps.scripts, flat.scriptSlots, mergeSlots); + collectInto(deps.styles, flat.styleSlots, mergeSlots); + collectPreload(deps, flat.preloadSlots, mergeSlots); + const prefetchSeen = /* @__PURE__ */ new Set(); + collectPrefetch(deps, deps.prefetch, flat.prefetchSlots, prefetchSeen, mergeSlots); + const dynamicImports = rendererContext.manifest?.[id]?.dynamicImports || rendererContext.precomputed?.modules[id]?.dynamicImports; + if (dynamicImports) for (const dynamicDepId of dynamicImports) { + const dynamicDeps = getModuleDependencies(dynamicDepId, rendererContext); + collectPrefetch(deps, dynamicDeps.scripts, flat.prefetchSlots, prefetchSeen, mergeSlots); + collectPrefetch(deps, dynamicDeps.styles, flat.prefetchSlots, prefetchSeen, mergeSlots); + collectPrefetch(deps, dynamicDeps.preload, flat.prefetchSlots, prefetchSeen, mergeSlots); + } + rendererContext._flatDependencies[id] = flat; + return flat; +} +function getAllDependencies(ids, rendererContext) { + const cacheSize = rendererContext._dependencySetsCacheSize; + const moduleIds = rendererContext._idScratch; + moduleIds.length = 0; + for (const id of ids) moduleIds.push(id); + let aliasKey = 0; + let hasAlias = false; + if (cacheSize > 0 && ids.size > 1) { + aliasKey = aliasHash(rendererContext, moduleIds, void 0); + hasAlias = true; + const aliased = readAlias(rendererContext, aliasKey, moduleIds, moduleIds, void 0); + if (aliased !== void 0) return aliased; + } + return resolveDependencies(moduleIds, rendererContext, aliasKey, hasAlias); +} +/** The id list may contain duplicates: merging deduplicates at resource level. */ +function resolveDependencies(moduleIds, rendererContext, aliasKey, hasAlias) { + const cacheSize = rendererContext._dependencySetsCacheSize; + const useCache = cacheSize > 0; + let cacheKey = ""; + if (useCache) { + if (moduleIds.length <= 1) cacheKey = moduleIds[0] || ""; + else cacheKey = [...new Set(moduleIds)].sort().join(","); + const cached = rendererContext._dependencySets.get(cacheKey); + if (cached !== void 0) { + if (rendererContext._dependencySets.size >= cacheSize) { + rendererContext._dependencySets.delete(cacheKey); + rendererContext._dependencySets.set(cacheKey, cached); + } + if (hasAlias) setAlias(rendererContext, aliasKey, moduleIds, cached, cacheSize); + return cached; + } + } + const styleSlots = []; + const scriptSlots = []; + const preloadSlots = []; + const prefetchSlots = []; + const mergeSlots = rendererContext._mergeSlots; + let epoch = mergeSlots.epoch + 1; + if (epoch > 255) { + epoch = 1; + mergeSlots.scripts.fill(0); + mergeSlots.styles.fill(0); + mergeSlots.preload.fill(0); + mergeSlots.prefetch.fill(0); + } + mergeSlots.epoch = epoch; + let scriptSeen = mergeSlots.scripts; + let styleSeen = mergeSlots.styles; + let preloadSeen = mergeSlots.preload; + let prefetchSeen = mergeSlots.prefetch; + for (let m = 0; m < moduleIds.length; m++) { + const flat = getFlatDependencies(moduleIds[m], rendererContext); + if (mergeSlots.scripts !== scriptSeen) { + scriptSeen = mergeSlots.scripts; + styleSeen = mergeSlots.styles; + preloadSeen = mergeSlots.preload; + prefetchSeen = mergeSlots.prefetch; + } + for (let i = 0; i < flat.scriptSlots.length; i++) { + const slot = flat.scriptSlots[i]; + if (scriptSeen[slot] === epoch) continue; + scriptSeen[slot] = epoch; + scriptSlots.push(slot); + } + for (let i = 0; i < flat.styleSlots.length; i++) { + const slot = flat.styleSlots[i]; + if (styleSeen[slot] === epoch) continue; + styleSeen[slot] = epoch; + styleSlots.push(slot); + } + for (let i = 0; i < flat.preloadSlots.length; i++) { + const slot = flat.preloadSlots[i]; + if (preloadSeen[slot] === epoch) continue; + preloadSeen[slot] = epoch; + preloadSlots.push(slot); + } + for (let i = 0; i < flat.prefetchSlots.length; i++) { + const slot = flat.prefetchSlots[i]; + if (prefetchSeen[slot] === epoch) continue; + prefetchSeen[slot] = epoch; + prefetchSlots.push(slot); + } + } + let kept = 0; + for (let i = 0; i < preloadSlots.length; i++) { + const slot = preloadSlots[i]; + if (styleSeen[slot] !== epoch) { + preloadSlots[kept] = slot; + kept++; + } + } + preloadSlots.length = kept; + kept = 0; + const metaOf = mergeSlots.metaOf; + for (let i = 0; i < prefetchSlots.length; i++) { + const slot = prefetchSlots[i]; + if (metaOf[slot].prefetch && preloadSeen[slot] !== epoch && styleSeen[slot] !== epoch) { + prefetchSlots[kept] = slot; + kept++; + } + } + prefetchSlots.length = kept; + const order = { + styleSlots, + scriptSlots, + preloadSlots, + prefetchSlots, + mergeSlots + }; + const allDeps = new Proxy({ [SLOT_SOURCE]: order }, LAZY_DEPENDENCIES); + rendererContext._renderedCache.set(allDeps, { order }); + if (useCache) { + rendererContext._dependencySets.set(cacheKey, allDeps); + if (rendererContext._dependencySets.size > cacheSize) { + const oldest = rendererContext._dependencySets.keys().next().value; + if (oldest !== void 0) rendererContext._dependencySets.delete(oldest); + } + if (hasAlias) setAlias(rendererContext, aliasKey, moduleIds, allDeps, cacheSize); + } + return allDeps; +} +function getRequestDependencies(ssrContext, rendererContext, options) { + const excluded = options?.exclude ? new Set(options.exclude) : void 0; + const hasExcluded = excluded && excluded.size > 0; + if (!hasExcluded && ssrContext._requestDependencies) return ssrContext._requestDependencies; + const requestIds = ssrContext.modules || ssrContext._registeredComponents; + let aliasKey = 0; + let hasAlias = false; + if (!hasExcluded && rendererContext._dependencySetsCacheSize > 0) { + aliasKey = aliasHash(rendererContext, rendererContext._entrypoints, requestIds); + hasAlias = true; + const aliased = readAlias(rendererContext, aliasKey, void 0, rendererContext._entrypoints, requestIds); + if (aliased !== void 0) { + ssrContext._requestDependencies = aliased; + return aliased; + } + } + const moduleIds = rendererContext._idScratch; + moduleIds.length = 0; + if (hasExcluded) { + for (const id of rendererContext._entrypoints) if (!excluded.has(id)) moduleIds.push(id); + if (requestIds) { + for (const id of requestIds) if (!excluded.has(id)) moduleIds.push(id); + } + } else { + for (const id of rendererContext._entrypoints) moduleIds.push(id); + if (requestIds) for (const id of requestIds) moduleIds.push(id); + } + const deps = resolveDependencies(moduleIds, rendererContext, aliasKey, hasAlias); + if (!hasExcluded) ssrContext._requestDependencies = deps; + return deps; +} +function getRenderedOutputs(rendererContext, deps) { + let entry = rendererContext._renderedCache.get(deps); + if (!entry) { + entry = {}; + rendererContext._renderedCache.set(deps, entry); + } + return entry; +} +const SLOT_SOURCE = Symbol("slots"); +const SLOTS_FOR = { + scripts: "scriptSlots", + styles: "styleSlots", + preload: "preloadSlots", + prefetch: "prefetchSlots" +}; +/** Records are built on first access; rendering reads the slot arrays directly. */ +const LAZY_DEPENDENCIES = { + get(target, key) { + const value = target[key]; + if (value !== void 0 || !isRecordKey(key)) return value; + return materialiseRecord(target, key); + }, + has(target, key) { + return isRecordKey(key) || key in target; + }, + ownKeys(target) { + const extra = Reflect.ownKeys(target).filter((key) => key !== SLOT_SOURCE && !isRecordKey(key)); + return extra.length > 0 ? [...RECORD_KEYS, ...extra] : RECORD_KEYS.slice(); + }, + getOwnPropertyDescriptor(target, key) { + if (!isRecordKey(key)) return key === SLOT_SOURCE ? void 0 : Reflect.getOwnPropertyDescriptor(target, key); + return { + value: target[key] ?? materialiseRecord(target, key), + writable: true, + enumerable: true, + configurable: true + }; + }, + set(target, key, value) { + target[key] = value; + return true; + }, + deleteProperty(target, key) { + return Reflect.deleteProperty(target, key); + } +}; +const RECORD_KEYS = [ + "scripts", + "styles", + "preload", + "prefetch" +]; +function isRecordKey(key) { + return key === "scripts" || key === "styles" || key === "preload" || key === "prefetch"; +} +function materialiseRecord(target, key) { + const order = target[SLOT_SOURCE]; + const record = buildRecord(order.mergeSlots, order[SLOTS_FOR[key]]); + target[key] = record; + return record; +} +function buildRecord(mergeSlots, slots) { + const { idOf, metaOf } = mergeSlots; + const record = {}; + for (let i = 0; i < slots.length; i++) { + const slot = slots[i]; + record[idOf[slot]] = metaOf[slot]; + } + return record; +} +function collectOrder(source, slots, mergeSlots) { + for (const id in source) slots.push(slotFor(mergeSlots, id, source[id])); +} +/** Records supplied by a caller carry no order, so derive and memoize one. */ +function getOrder(rendererContext, deps, rendered) { + if (rendered.order) return rendered.order; + const mergeSlots = rendererContext._mergeSlots; + const order = { + styleSlots: [], + scriptSlots: [], + preloadSlots: [], + prefetchSlots: [], + mergeSlots + }; + collectOrder(deps.styles, order.styleSlots, mergeSlots); + collectOrder(deps.scripts, order.scriptSlots, mergeSlots); + collectOrder(deps.preload, order.preloadSlots, mergeSlots); + collectOrder(deps.prefetch, order.prefetchSlots, mergeSlots); + rendered.order = order; + return order; +} +function renderStyles(ssrContext, rendererContext) { + const deps = getRequestDependencies(ssrContext, rendererContext); + const rendered = getRenderedOutputs(rendererContext, deps); + if (rendered.styles !== void 0) return rendered.styles; + const order = getOrder(rendererContext, deps, rendered); + const metaOf = rendererContext._mergeSlots.metaOf; + let result = ""; + const cache = rendererContext._fragments.style; + for (let i = 0; i < order.styleSlots.length; i++) { + const slot = order.styleSlots[i]; + let fragment = cache[slot]; + if (fragment === void 0) fragment = cache[slot] = `<link rel="stylesheet" href="${rendererContext.buildAssetsURL(metaOf[slot].file)}" crossorigin>`; + result += fragment; + } + rendered.styles = result; + return result; +} +function getResources(ssrContext, rendererContext) { + return [...getPreloadLinks(ssrContext, rendererContext), ...getPrefetchLinks(ssrContext, rendererContext)]; +} +function isScriptResource(resource) { + return !!resource.module || resource.resourceType === "script"; +} +function renderResourceHints(ssrContext, rendererContext, options) { + const deps = getRequestDependencies(ssrContext, rendererContext, options); + const rendered = getRenderedOutputs(rendererContext, deps); + const withScripts = options?.scripts !== false; + const cached = withScripts ? rendered.hints : rendered.hintsWithoutScripts; + if (cached !== void 0) return cached; + const order = getOrder(rendererContext, deps, rendered); + const metaOf = rendererContext._mergeSlots.metaOf; + let result = ""; + const preloadCache = rendererContext._fragments.preloadHint; + for (let i = 0; i < order.preloadSlots.length; i++) { + const slot = order.preloadSlots[i]; + if (!withScripts && isScriptResource(metaOf[slot])) continue; + let fragment = preloadCache[slot]; + if (fragment === void 0) { + const resource = metaOf[slot]; + const href = rendererContext.buildAssetsURL(resource.file); + const rel = resource.module ? "modulepreload" : "preload"; + const crossorigin = resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? " crossorigin" : ""; + fragment = resource.resourceType && resource.mimeType ? `<link rel="${rel}" as="${resource.resourceType}" type="${resource.mimeType}"${crossorigin} href="${href}">` : resource.resourceType ? `<link rel="${rel}" as="${resource.resourceType}"${crossorigin} href="${href}">` : `<link rel="${rel}"${crossorigin} href="${href}">`; + preloadCache[slot] = fragment; + } + result += fragment; + } + const prefetchCache = rendererContext._fragments.prefetchHint; + for (let i = 0; i < order.prefetchSlots.length; i++) { + const slot = order.prefetchSlots[i]; + if (!withScripts && isScriptResource(metaOf[slot])) continue; + let fragment = prefetchCache[slot]; + if (fragment === void 0) { + const resource = metaOf[slot]; + const href = rendererContext.buildAssetsURL(resource.file); + const crossorigin = resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? " crossorigin" : ""; + fragment = resource.resourceType && resource.mimeType ? `<link rel="prefetch" as="${resource.resourceType}" type="${resource.mimeType}"${crossorigin} href="${href}">` : resource.resourceType ? `<link rel="prefetch" as="${resource.resourceType}"${crossorigin} href="${href}">` : `<link rel="prefetch"${crossorigin} href="${href}">`; + prefetchCache[slot] = fragment; + } + result += fragment; + } + if (withScripts) rendered.hints = result; + else rendered.hintsWithoutScripts = result; + return result; +} +const NON_ASCII_RE = /[^\0-\u007F]+/g; +function renderResourceHeaders(ssrContext, rendererContext, options) { + const deps = getRequestDependencies(ssrContext, rendererContext, options); + const rendered = getRenderedOutputs(rendererContext, deps); + const withScripts = options?.scripts !== false; + const cached = withScripts ? rendered.headerLink : rendered.headerLinkWithoutScripts; + if (cached !== void 0) return { link: cached }; + const order = getOrder(rendererContext, deps, rendered); + const metaOf = rendererContext._mergeSlots.metaOf; + let link = ""; + const preloadCache = rendererContext._fragments.preloadHeader; + for (let i = 0; i < order.preloadSlots.length; i++) { + const slot = order.preloadSlots[i]; + if (!withScripts && isScriptResource(metaOf[slot])) continue; + let header = preloadCache[slot]; + if (header === void 0) { + const resource = metaOf[slot]; + header = `<${rendererContext.buildAssetsURL(resource.file).replace(NON_ASCII_RE, encodeURIComponent)}>; rel="${resource.module ? "modulepreload" : "preload"}"`; + if (resource.resourceType) header += `; as="${resource.resourceType}"`; + if (resource.mimeType) header += `; type="${resource.mimeType}"`; + if (resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module) header += "; crossorigin"; + preloadCache[slot] = header; + } + link = link ? `${link}, ${header}` : header; + } + const prefetchCache = rendererContext._fragments.prefetchHeader; + for (let i = 0; i < order.prefetchSlots.length; i++) { + const slot = order.prefetchSlots[i]; + if (!withScripts && isScriptResource(metaOf[slot])) continue; + let header = prefetchCache[slot]; + if (header === void 0) { + const resource = metaOf[slot]; + header = `<${rendererContext.buildAssetsURL(resource.file).replace(NON_ASCII_RE, encodeURIComponent)}>; rel="prefetch"`; + if (resource.resourceType) header += `; as="${resource.resourceType}"`; + if (resource.mimeType) header += `; type="${resource.mimeType}"`; + if (resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module) header += "; crossorigin"; + prefetchCache[slot] = header; + } + link = link ? `${link}, ${header}` : header; + } + if (withScripts) rendered.headerLink = link; + else rendered.headerLinkWithoutScripts = link; + return { link }; +} +/** `buildAssetsURL` is a pure function of the id, so each result is built once. */ +function hrefFor(rendererContext, slot, resource) { + const cache = rendererContext._fragments.href; + let href = cache[slot]; + if (href === void 0) href = cache[slot] = rendererContext.buildAssetsURL(resource.file); + return href; +} +function getPreloadLinks(ssrContext, rendererContext, options) { + const deps = getRequestDependencies(ssrContext, rendererContext, options); + const order = getOrder(rendererContext, deps, getRenderedOutputs(rendererContext, deps)); + const metaOf = rendererContext._mergeSlots.metaOf; + const withScripts = options?.scripts !== false; + const result = []; + for (let i = 0; i < order.preloadSlots.length; i++) { + const slot = order.preloadSlots[i]; + const resource = metaOf[slot]; + if (!withScripts && isScriptResource(resource)) continue; + result.push({ + rel: resource.module ? "modulepreload" : "preload", + as: resource.resourceType, + type: resource.mimeType ?? null, + crossorigin: resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, + href: hrefFor(rendererContext, slot, resource) + }); + } + return result; +} +function getPrefetchLinks(ssrContext, rendererContext, options) { + const deps = getRequestDependencies(ssrContext, rendererContext, options); + const order = getOrder(rendererContext, deps, getRenderedOutputs(rendererContext, deps)); + const metaOf = rendererContext._mergeSlots.metaOf; + const withScripts = options?.scripts !== false; + const result = []; + for (let i = 0; i < order.prefetchSlots.length; i++) { + const slot = order.prefetchSlots[i]; + const resource = metaOf[slot]; + if (!withScripts && isScriptResource(resource)) continue; + result.push({ + rel: "prefetch", + as: resource.resourceType, + type: resource.mimeType ?? null, + crossorigin: resource.resourceType === "style" || resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, + href: hrefFor(rendererContext, slot, resource) + }); + } + return result; +} +function renderScripts(ssrContext, rendererContext) { + const deps = getRequestDependencies(ssrContext, rendererContext); + const rendered = getRenderedOutputs(rendererContext, deps); + if (rendered.scripts !== void 0) return rendered.scripts; + const order = getOrder(rendererContext, deps, rendered); + const metaOf = rendererContext._mergeSlots.metaOf; + let result = ""; + const cache = rendererContext._fragments.script; + for (let i = 0; i < order.scriptSlots.length; i++) { + const slot = order.scriptSlots[i]; + let fragment = cache[slot]; + if (fragment === void 0) { + const resource = metaOf[order.scriptSlots[i]]; + fragment = cache[slot] = resource.module ? `<script type="module" src="${rendererContext.buildAssetsURL(resource.file)}" crossorigin><\/script>` : `<script src="${rendererContext.buildAssetsURL(resource.file)}" defer crossorigin><\/script>`; + } + result += fragment; + } + rendered.scripts = result; + return result; +} +function createRenderer(createApp, renderOptions) { + const rendererContext = createRendererContext(renderOptions); + return { + rendererContext, + async renderToString(ssrContext) { + ssrContext._registeredComponents = ssrContext._registeredComponents || /* @__PURE__ */ new Set(); + const app = await (await Promise.resolve(createApp).then((r) => "default" in r ? r.default : r))(ssrContext); + const html = await renderOptions.renderToString(app, ssrContext); + const wrap = (fn) => () => fn(ssrContext, rendererContext); + return { + html, + renderResourceHeaders: wrap(renderResourceHeaders), + renderResourceHints: wrap(renderResourceHints), + renderStyles: wrap(renderStyles), + renderScripts: wrap(renderScripts) + }; + } + }; +} +//#endregion +export { createRenderer, createRendererContext, getAllDependencies, getModuleDependencies, getPrefetchLinks, getPreloadLinks, getRequestDependencies, getResources, renderResourceHeaders, renderResourceHints, renderScripts, renderStyles }; diff --git a/apps/web/.output/server/node_modules/vue-bundle-renderer/package.json b/apps/web/.output/server/node_modules/vue-bundle-renderer/package.json new file mode 100644 index 0000000..354406f --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-bundle-renderer/package.json @@ -0,0 +1,66 @@ +{ + "name": "vue-bundle-renderer", + "version": "2.4.0", + "description": "Bundle Renderer for Vue 3.0", + "repository": { + "type": "git", + "url": "nuxt-contrib/vue-bundle-renderer" + }, + "license": "MIT", + "exports": { + ".": { + "types": "./dist/index.d.mts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./runtime": { + "types": "./dist/runtime.d.mts", + "import": "./dist/runtime.mjs", + "require": "./dist/runtime.cjs" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "files": [ + "dist", + "runtime.d.ts" + ], + "dependencies": { + "ufo": "^1.6.4" + }, + "devDependencies": { + "@codspeed/vitest-plugin": "^5.7.1", + "@nuxt/eslint-config": "^1.17.0", + "@types/node": "^24.13.4", + "@vitest/coverage-v8": "^4.1.11", + "eslint": "^10.10.0", + "pkg-pr-new": "^0.0.88", + "std-env": "^4.2.0", + "tsdown": "0.23.0", + "typescript": "^6.0.3", + "vite": "^8.3.0", + "vitest": "4.1.11", + "vue": "3.5.42" + }, + "devEngines": { + "runtime": { + "name": "node", + "version": "^24.0.0", + "onFail": "download" + }, + "packageManager": { + "name": "pnpm", + "version": "12.3.4", + "onFail": "download" + } + }, + "scripts": { + "build": "tsdown", + "dev": "vitest", + "lint": "eslint src", + "test": "pnpm lint && pnpm vitest run --coverage && tsc --noEmit", + "bench": "vitest bench" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/vue-router/dist/devtools-CxgSYwGp.js b/apps/web/.output/server/node_modules/vue-router/dist/devtools-CxgSYwGp.js new file mode 100644 index 0000000..17249d4 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-router/dist/devtools-CxgSYwGp.js @@ -0,0 +1,1067 @@ +/*! +* vue-router v5.4.0 +* (c) 2026 Eduardo San Martin Morote +* @license MIT +*/ +import { _ as isArray, d as createRouterError, g as isAbsolutePath, l as diagnostics, m as assign, r as matchedRouteKey, v as isESModule, y as isRouteComponent } from "./useApi-CUWMwLLw.js"; +import { getCurrentInstance, inject, onActivated, onDeactivated, onUnmounted, watch } from "vue"; +import { setupDevtoolsPlugin } from "@vue/devtools-api"; +//#region src/utils/env.ts +const isBrowser = typeof document !== "undefined"; +//#endregion +//#region src/encoding.ts +/** +* Encoding Rules (␣ = Space) +* - Path: ␣ " < > # ? { } +* - Query: ␣ " < > # & = +* - Hash: ␣ " < > ` +* +* On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2) +* defines some extra characters to be encoded. Most browsers do not encode them +* in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to +* also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`) +* plus `-._~`. This extra safety should be applied to query by patching the +* string returned by encodeURIComponent encodeURI also encodes `[\]^`. `\` +* should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\` +* into a `/` if directly typed in. The _backtick_ (`````) should also be +* encoded everywhere because some browsers like FF encode it when directly +* written while others don't. Safari and IE don't encode ``"<>{}``` in hash. +*/ +/** +* NOTE: `replaceAll()` is not faster than `replace()` with a global RegExp. +* Benchmarks do not show a clear benefit for these simple replacements: +* https://github.com/mathiasbynens/string-prototype-replace-regexp-benchmark +*/ +const HASH_RE = /#/g; +const AMPERSAND_RE = /&/g; +const SLASH_RE = /\//g; +const EQUAL_RE = /=/g; +const IM_RE = /\?/g; +const PLUS_RE = /\+/g; +/** +* NOTE: It's not clear to me if we should encode the + symbol in queries, it +* seems to be less flexible than not doing so and I can't find out the legacy +* systems requiring this for regular requests like text/html. In the standard, +* the encoding of the plus character is only mentioned for +* application/x-www-form-urlencoded +* (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo +* leave the plus character as is in queries. To be more flexible, we allow the +* plus character on the query, but it can also be manually encoded by the user. +* +* Resources: +* - https://url.spec.whatwg.org/#urlencoded-parsing +* - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20 +*/ +const ENC_BRACKET_OPEN_RE = /%5B/g; +const ENC_BRACKET_CLOSE_RE = /%5D/g; +const ENC_CARET_RE = /%5E/g; +const ENC_BACKTICK_RE = /%60/g; +const ENC_CURLY_OPEN_RE = /%7B/g; +const ENC_PIPE_RE = /%7C/g; +const ENC_CURLY_CLOSE_RE = /%7D/g; +const ENC_SPACE_RE = /%20/g; +/** +* Encode characters that need to be encoded on the path, search and hash +* sections of the URL. +* +* @internal +* @param text - string to encode +* @returns encoded string +*/ +function commonEncode(text) { + return text == null ? "" : encodeURI("" + text).replace(ENC_PIPE_RE, "|").replace(ENC_BRACKET_OPEN_RE, "[").replace(ENC_BRACKET_CLOSE_RE, "]"); +} +/** +* Encode characters that need to be encoded on the hash section of the URL. +* +* @param text - string to encode +* @returns encoded string +*/ +function encodeHash(text) { + return commonEncode(text).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^"); +} +/** +* Encode characters that need to be encoded query values on the query +* section of the URL. +* +* @param text - string to encode +* @returns encoded string +*/ +function encodeQueryValue(text) { + return commonEncode(text).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^"); +} +/** +* Like `encodeQueryValue` but also encodes the `=` character. +* +* @param text - string to encode +*/ +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); +} +/** +* Encode characters that need to be encoded on the path section of the URL. +* +* @param text - string to encode +* @returns encoded string +*/ +function encodePath(text) { + return commonEncode(text).replace(HASH_RE, "%23").replace(IM_RE, "%3F"); +} +/** +* Encode characters that need to be encoded on the path section of the URL as a +* param. This function encodes everything {@link encodePath} does plus the +* slash (`/`) character. If `text` is `null` or `undefined`, returns an empty +* string instead. +* +* @param text - string to encode +* @returns encoded string +*/ +function encodeParam(text) { + return encodePath(text).replace(SLASH_RE, "%2F"); +} +function decode(text) { + if (text == null) return null; + try { + return decodeURIComponent("" + text); + } catch { + process.env.NODE_ENV !== "production" && diagnostics.VUE_ROUTER_R0080({ text: "" + text }); + } + return "" + text; +} +//#endregion +//#region src/location.ts +const TRAILING_SLASH_RE = /\/$/; +const removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, ""); +/** +* Transforms a URI into a normalized history location +* +* @param parseQuery +* @param location - URI to normalize +* @param currentLocation - current absolute location. Allows resolving relative +* paths. Must start with `/`. Defaults to `/` +* @returns a normalized history location +*/ +function parseURL(parseQuery, location, currentLocation = "/") { + let path, query = {}, searchString = "", hash = ""; + const hashPos = location.indexOf("#"); + let searchPos = location.indexOf("?"); + searchPos = hashPos >= 0 && searchPos > hashPos ? -1 : searchPos; + if (searchPos >= 0) { + path = location.slice(0, searchPos); + searchString = location.slice(searchPos, hashPos > 0 ? hashPos : location.length); + query = parseQuery(searchString.slice(1)); + } + if (hashPos >= 0) { + path = path || location.slice(0, hashPos); + hash = location.slice(hashPos, location.length); + } + path = resolveRelativePath(path != null ? path : location, currentLocation); + return { + fullPath: path + searchString + hash, + path, + query, + hash: decode(hash) + }; +} +/** +* Stringifies a URL object +* +* @param stringifyQuery +* @param location +*/ +function stringifyURL(stringifyQuery, location) { + const query = location.query ? stringifyQuery(location.query) : ""; + return location.path + (query && "?") + query + (location.hash || ""); +} +/** +* Strips off the base from the beginning of a location.pathname in a non-case-sensitive way. +* +* @param pathname - location.pathname +* @param base - base to strip off +*/ +function stripBase(pathname, base) { + if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase())) return pathname; + return pathname.slice(base.length) || "/"; +} +/** +* Checks if two RouteLocation are equal. This means that both locations are +* pointing towards the same {@link RouteRecord} and that all `params`, `query` +* parameters and `hash` are the same +* +* @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it. +* @param a - first {@link RouteLocation} +* @param b - second {@link RouteLocation} +*/ +function isSameRouteLocation(stringifyQuery, a, b) { + const aLastIndex = a.matched.length - 1; + const bLastIndex = b.matched.length - 1; + return aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && isSameRouteLocationParams(a.params, b.params) && stringifyQuery(a.query) === stringifyQuery(b.query) && a.hash === b.hash; +} +/** +* Check if two `RouteRecords` are equal. Takes into account aliases: they are +* considered equal to the `RouteRecord` they are aliasing. +* +* @param a - first {@link RouteRecord} +* @param b - second {@link RouteRecord} +*/ +function isSameRouteRecord(a, b) { + return (a.aliasOf || a) === (b.aliasOf || b); +} +function isSameRouteLocationParams(a, b) { + if (Object.keys(a).length !== Object.keys(b).length) return false; + for (var key in a) if (!isSameRouteLocationParamsValue(a[key], b[key])) return false; + return true; +} +function isSameRouteLocationParamsValue(a, b) { + return isArray(a) ? isEquivalentArray(a, b) : isArray(b) ? isEquivalentArray(b, a) : (a && a.valueOf()) === (b && b.valueOf()); +} +/** +* Check if two arrays are the same or if an array with one single entry is the +* same as another primitive value. Used to check query and parameters +* +* @param a - array of values +* @param b - array of values or a single value +*/ +function isEquivalentArray(a, b) { + return isArray(b) ? a.length === b.length && a.every((value, i) => value === b[i]) : a.length === 1 && a[0] === b; +} +/** +* Resolves a relative path that starts with `.`. +* +* @param to - path location we are resolving +* @param from - currentLocation.path, should start with `/` +*/ +function resolveRelativePath(to, from) { + if (isAbsolutePath(to)) return to; + if (process.env.NODE_ENV !== "production" && !isAbsolutePath(from)) { + diagnostics.VUE_ROUTER_R0070({ + to, + from + }); + return to; + } + if (!to) return from; + const fromSegments = from.split("/"); + const toSegments = to.split("/"); + const lastToSegment = toSegments[toSegments.length - 1]; + if (lastToSegment === ".." || lastToSegment === ".") toSegments.push(""); + let position = fromSegments.length - 1; + let toPosition; + let segment; + for (toPosition = 0; toPosition < toSegments.length; toPosition++) { + segment = toSegments[toPosition]; + if (segment === ".") continue; + if (segment === "..") { + if (position > 1) position--; + } else break; + } + return fromSegments.slice(0, position).join("/") + "/" + toSegments.slice(toPosition).join("/"); +} +/** +* Initial route location where the router is. Can be used in navigation guards +* to differentiate the initial navigation. +* +* @example +* ```js +* import { START_LOCATION } from 'vue-router' +* +* router.beforeEach((to, from) => { +* if (from === START_LOCATION) { +* // initial navigation +* } +* }) +* ``` +*/ +const START_LOCATION_NORMALIZED = { + path: "/", + name: void 0, + params: {}, + query: {}, + hash: "", + fullPath: "/", + matched: [], + meta: {}, + redirectedFrom: void 0 +}; +//#endregion +//#region src/history/common.ts +/** +* Normalizes a base by removing any trailing slash and reading the base tag if +* present. +* +* @param base - base to normalize +*/ +function normalizeBase(base) { + if (!base) { + if (isBrowser) { + const baseEl = document.querySelector("base"); + base = baseEl && baseEl.getAttribute("href") || "/"; + base = base.replace(/^\w+:\/\/[^/]+/, ""); + } else base = "/"; + } + if (base[0] !== "/" && base[0] !== "#") base = "/" + base; + return removeTrailingSlash(base); +} +const BEFORE_HASH_RE = /^[^#]+#/; +function createHref(base, location) { + return base.replace(BEFORE_HASH_RE, "#") + location; +} +//#endregion +//#region src/scrollBehavior.ts +function getElementPosition(el, offset) { + const docRect = document.documentElement.getBoundingClientRect(); + const elRect = el.getBoundingClientRect(); + return { + behavior: offset.behavior, + left: elRect.left - docRect.left - (offset.left || 0), + top: elRect.top - docRect.top - (offset.top || 0) + }; +} +const computeScrollPosition = () => history.scrollRestoration === "manual" ? { + left: window.scrollX, + top: window.scrollY +} : null; +function scrollToPosition(position) { + let scrollToOptions; + if ("el" in position) { + const positionEl = position.el; + const isIdSelector = typeof positionEl === "string" && positionEl.startsWith("#"); + /** + * `id`s can accept pretty much any characters, including CSS combinators + * like `>` or `~`. It's still possible to retrieve elements using + * `document.getElementById('~')` but it needs to be escaped when using + * `document.querySelector('#\\~')` for it to be valid. The only + * requirements for `id`s are them to be unique on the page and to not be + * empty (`id=""`). Because of that, when passing an id selector, it should + * be properly escaped for it to work with `querySelector`. We could check + * for the id selector to be simple (no CSS combinators `+ >~`) but that + * would make things inconsistent since they are valid characters for an + * `id` but would need to be escaped when using `querySelector`, breaking + * their usage and ending up in no selector returned. Selectors need to be + * escaped: + * + * - `#1-thing` becomes `#\31 -thing` + * - `#with~symbols` becomes `#with\\~symbols` + * + * - More information about the topic can be found at + * https://mathiasbynens.be/notes/html5-id-class. + * - Practical example: https://mathiasbynens.be/demo/html5-id + */ + if (process.env.NODE_ENV !== "production" && typeof position.el === "string") { + if (!isIdSelector || !document.getElementById(position.el.slice(1))) try { + const foundEl = document.querySelector(position.el); + if (isIdSelector && foundEl) { + diagnostics.VUE_ROUTER_R0040({ el: position.el }); + return; + } + } catch { + diagnostics.VUE_ROUTER_R0041({ el: position.el }); + return; + } + } + const el = typeof positionEl === "string" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl; + if (!el) { + process.env.NODE_ENV !== "production" && diagnostics.VUE_ROUTER_R0042({ el: position.el }); + return; + } + scrollToOptions = getElementPosition(el, position); + } else scrollToOptions = position; + if ("scrollBehavior" in document.documentElement.style) window.scrollTo(scrollToOptions); + else window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY); +} +function getScrollKey(path, delta) { + return (history.state ? history.state.position - delta : -1) + path; +} +const scrollPositions = /* @__PURE__ */ new Map(); +function saveScrollPosition(key) { + scrollPositions.set(key, computeScrollPosition()); +} +function getSavedScrollPosition(key) { + const scroll = scrollPositions.get(key); + scrollPositions.delete(key); + return scroll; +} +function invalidateScrollPositions(position, replace = false) { + for (const key of scrollPositions.keys()) { + const entryPosition = parseInt(key, 10); + if (entryPosition === position || !replace && entryPosition > position) scrollPositions.delete(key); + } +} +/** +* ScrollBehavior instance used by the router to compute and restore the scroll +* position when navigating. +*/ +//#endregion +//#region src/types/typeGuards.ts +function isRouteLocation(route) { + return typeof route === "string" || route && typeof route === "object"; +} +function isRouteName(name) { + return typeof name === "string" || typeof name === "symbol"; +} +//#endregion +//#region src/query.ts +/** +* Transforms a queryString into a {@link LocationQuery} object. Accept both, a +* version with the leading `?` and without Should work as URLSearchParams + +* @internal +* +* @param search - search string to parse +* @returns a query object +*/ +function parseQuery(search) { + const query = {}; + if (search === "" || search === "?") return query; + const searchParams = (search[0] === "?" ? search.slice(1) : search).split("&"); + for (let i = 0; i < searchParams.length; ++i) { + const searchParam = searchParams[i].replace(PLUS_RE, " "); + const eqPos = searchParam.indexOf("="); + const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos)); + const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1)); + if (key in query) { + let currentValue = query[key]; + if (!isArray(currentValue)) currentValue = query[key] = [currentValue]; + currentValue.push(value); + } else query[key] = value; + } + return query; +} +/** +* Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it +* doesn't prepend a `?` +* +* @internal +* +* @param query - query object to stringify +* @returns string version of the query without the leading `?` +*/ +function stringifyQuery(query) { + let search = ""; + for (let key in query) { + const value = query[key]; + key = encodeQueryKey(key); + if (value == null) { + if (value !== void 0) search += (search.length ? "&" : "") + key; + continue; + } + (isArray(value) ? value.map((v) => v && encodeQueryValue(v)) : [value && encodeQueryValue(value)]).forEach((value) => { + if (value !== void 0) { + search += (search.length ? "&" : "") + key; + if (value != null) search += "=" + value; + } + }); + } + return search; +} +/** +* Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting +* numbers into strings, removing keys with an undefined value and replacing +* undefined with null in arrays +* +* @param query - query object to normalize +* @returns a normalized query object +*/ +function normalizeQuery(query) { + const normalizedQuery = {}; + for (const key in query) { + const value = query[key]; + if (value !== void 0) normalizedQuery[key] = isArray(value) ? value.map((v) => v == null ? null : "" + v) : value == null ? value : "" + value; + } + return normalizedQuery; +} +//#endregion +//#region src/utils/callbacks.ts +/** +* Create a list of callbacks that can be reset. Used to create before and after navigation guards list +*/ +function useCallbacks() { + let handlers = []; + function add(handler) { + handlers.push(handler); + return () => { + const i = handlers.indexOf(handler); + if (i > -1) handlers.splice(i, 1); + }; + } + function reset() { + handlers = []; + } + return { + add, + list: () => handlers.slice(), + reset + }; +} +//#endregion +//#region src/navigationGuards.ts +function registerGuard(activeRecordRef, name, guard) { + const record = activeRecordRef.value; + if (!record) { + if (process.env.NODE_ENV !== "production") { + const fnName = name === "updateGuards" ? "onBeforeRouteUpdate" : "onBeforeRouteLeave"; + diagnostics.VUE_ROUTER_R0020({ fn: fnName }); + } + return; + } + let currentRecord = record; + const removeFromList = () => { + currentRecord[name].delete(guard); + }; + onUnmounted(removeFromList); + onDeactivated(removeFromList); + onActivated(() => { + const newRecord = activeRecordRef.value; + if (process.env.NODE_ENV !== "production" && !newRecord) diagnostics.VUE_ROUTER_R0021(); + if (newRecord) currentRecord = newRecord; + currentRecord[name].add(guard); + }); + currentRecord[name].add(guard); +} +/** +* Add a navigation guard that triggers whenever the component for the current +* location is about to be left. Similar to {@link beforeRouteLeave} but can be +* used in any component. The guard is removed when the component is unmounted. +* +* @param leaveGuard - {@link NavigationGuard} +*/ +function onBeforeRouteLeave(leaveGuard) { + if (process.env.NODE_ENV !== "production" && !getCurrentInstance()) { + diagnostics.VUE_ROUTER_R0022({ fn: "onBeforeRouteLeave" }); + return; + } + registerGuard(inject(matchedRouteKey, {}), "leaveGuards", leaveGuard); +} +/** +* Add a navigation guard that triggers whenever the current location is about +* to be updated. Similar to {@link beforeRouteUpdate} but can be used in any +* component. The guard is removed when the component is unmounted. +* +* @param updateGuard - {@link NavigationGuard} +*/ +function onBeforeRouteUpdate(updateGuard) { + if (process.env.NODE_ENV !== "production" && !getCurrentInstance()) { + diagnostics.VUE_ROUTER_R0022({ fn: "onBeforeRouteUpdate" }); + return; + } + registerGuard(inject(matchedRouteKey, {}), "updateGuards", updateGuard); +} +function guardToPromiseFn(guard, to, from, record, name, runWithContext = (fn) => fn()) { + const enterCallbackArray = record && (record.enterCallbacks[name] = record.enterCallbacks[name] || []); + return () => new Promise((resolve, reject) => { + const next = (valid) => { + if (valid === false) reject(createRouterError(4, { + from, + to + })); + else if (valid instanceof Error) reject(valid); + else if (isRouteLocation(valid)) reject(createRouterError(2, { + from: to, + to: valid + })); + else { + if (enterCallbackArray && record.enterCallbacks[name] === enterCallbackArray && typeof valid === "function") enterCallbackArray.push(valid); + resolve(); + } + }; + const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, process.env.NODE_ENV !== "production" ? withDeprecationWarning(canOnlyBeCalledOnce(next, to, from)) : next)); + let guardCall = Promise.resolve(guardReturn); + if (guard.length < 3) guardCall = guardCall.then(next); + if (process.env.NODE_ENV !== "production" && guard.length > 2) { + const guardInfo = { + name: guard.name, + guard: guard.toString() + }; + if (typeof guardReturn === "object" && "then" in guardReturn) guardCall = guardCall.then((resolvedValue) => { + if (!next._called) { + diagnostics.VUE_ROUTER_R0023(guardInfo); + return Promise.reject(/* @__PURE__ */ new Error("Invalid navigation guard")); + } + return resolvedValue; + }); + else if (guardReturn !== void 0) { + if (!next._called) { + diagnostics.VUE_ROUTER_R0023(guardInfo); + reject(/* @__PURE__ */ new Error("Invalid navigation guard")); + return; + } + } + } + guardCall.catch((err) => reject(err)); + }); +} +/** +* Wraps the next callback to warn when it is used. Dev-only: when __DEV__ is +* false (production builds), this branch is dead code and is stripped from the +* bundle. +* +* @internal +*/ +function withDeprecationWarning(next) { + let warned = false; + return function() { + if (!warned) { + warned = true; + diagnostics.VUE_ROUTER_R0025(); + } + return next.apply(this, arguments); + }; +} +function canOnlyBeCalledOnce(next, to, from) { + let called = 0; + return function() { + if (called++ === 1) diagnostics.VUE_ROUTER_R0024({ + from: from.fullPath, + to: to.fullPath + }); + next._called = true; + if (called === 1) next.apply(null, arguments); + }; +} +function extractComponentsGuards(matched, guardType, to, from, runWithContext = (fn) => fn()) { + const guards = []; + for (const record of matched) { + if (process.env.NODE_ENV !== "production" && !record.components && record.children && !record.children.length) diagnostics.VUE_ROUTER_R0026({ path: record.path }); + for (const name in record.components) { + let rawComponent = record.components[name]; + if (process.env.NODE_ENV !== "production") { + if (!rawComponent || typeof rawComponent !== "object" && typeof rawComponent !== "function") { + diagnostics.VUE_ROUTER_R0027({ + name, + path: record.path, + received: String(rawComponent) + }); + throw new Error("Invalid route component"); + } else if ("then" in rawComponent) { + diagnostics.VUE_ROUTER_R0028({ + name, + path: record.path + }); + const promise = rawComponent; + rawComponent = () => promise; + } else if (rawComponent.__asyncLoader && !rawComponent.__warnedDefineAsync) { + rawComponent.__warnedDefineAsync = true; + diagnostics.VUE_ROUTER_R0029({ + name, + path: record.path + }); + } + } + if (guardType !== "beforeRouteEnter" && !record.instances[name]) continue; + if (isRouteComponent(rawComponent)) { + const guard = (rawComponent.__vccOpts || rawComponent)[guardType]; + guard && guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext)); + } else { + let componentPromise = rawComponent(); + if (process.env.NODE_ENV !== "production" && !("catch" in componentPromise)) { + diagnostics.VUE_ROUTER_R0030({ + name, + path: record.path + }); + componentPromise = Promise.resolve(componentPromise); + } + guards.push(() => componentPromise.then((resolved) => { + if (!resolved) throw new Error(`Couldn't resolve component "${name}" at "${record.path}"`); + const resolvedComponent = isESModule(resolved) ? resolved.default : resolved; + record.mods[name] = resolved; + record.components[name] = resolvedComponent; + const guard = (resolvedComponent.__vccOpts || resolvedComponent)[guardType]; + return guard && guardToPromiseFn(guard, to, from, record, name, runWithContext)(); + })); + } + } + } + return guards; +} +/** +* Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`. +* +* @param route - resolved route to load +*/ +function loadRouteLocation(route) { + return route.matched.every((record) => record.redirect) ? Promise.reject(/* @__PURE__ */ new Error("Cannot load a route that redirects.")) : Promise.all(route.matched.map((record) => record.components && Promise.all(Object.keys(record.components).reduce((promises, name) => { + const rawComponent = record.components[name]; + if (typeof rawComponent === "function" && !("displayName" in rawComponent)) promises.push(rawComponent().then((resolved) => { + if (!resolved) return Promise.reject(/* @__PURE__ */ new Error(`Couldn't resolve component "${name}" at "${record.path}". Ensure you passed a function that returns a promise.`)); + const resolvedComponent = isESModule(resolved) ? resolved.default : resolved; + record.mods[name] = resolved; + record.components[name] = resolvedComponent; + })); + return promises; + }, [])))).then(() => route); +} +/** +* Split the leaving, updating, and entering records. +* @internal +* +* @param to - Location we are navigating to +* @param from - Location we are navigating from +*/ +function extractChangingRecords(to, from) { + const leavingRecords = []; + const updatingRecords = []; + const enteringRecords = []; + const len = Math.max(from.matched.length, to.matched.length); + for (let i = 0; i < len; i++) { + const recordFrom = from.matched[i]; + if (recordFrom) { + if (to.matched.find((record) => isSameRouteRecord(record, recordFrom))) updatingRecords.push(recordFrom); + else leavingRecords.push(recordFrom); + } + const recordTo = to.matched[i]; + if (recordTo) { + if (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) enteringRecords.push(recordTo); + } + } + return [ + leavingRecords, + updatingRecords, + enteringRecords + ]; +} +//#endregion +//#region src/devtools.ts +/** +* Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances). +* +* @param routeLocation - routeLocation to format +* @param tooltip - optional tooltip +* @returns a copy of the routeLocation +*/ +function formatRouteLocation(routeLocation, tooltip) { + const copy = assign({}, routeLocation, { matched: routeLocation.matched.map((matched) => omit(matched, [ + "instances", + "children", + "aliasOf" + ])) }); + return { _custom: { + type: null, + readOnly: true, + display: routeLocation.fullPath, + tooltip, + value: copy + } }; +} +function formatDisplay(display) { + return { _custom: { display } }; +} +let routerId = 0; +function addDevtools(app, router, matcher) { + if (router.__hasDevtools) return; + router.__hasDevtools = true; + const id = routerId++; + setupDevtoolsPlugin({ + id: "org.vuejs.router" + (id ? "." + id : ""), + label: "Vue Router", + packageName: "vue-router", + homepage: "https://router.vuejs.org", + logo: "https://router.vuejs.org/logo.png", + componentStateTypes: ["Routing"], + app + }, (api) => { + api.on.inspectComponent((payload) => { + if (payload.instanceData) payload.instanceData.state.push({ + type: "Routing", + key: "$route", + editable: false, + value: formatRouteLocation(router.currentRoute.value, "Current Route") + }); + }); + api.on.visitComponentTree(({ treeNode: node, componentInstance }) => { + if (componentInstance.__vrv_devtools) { + const info = componentInstance.__vrv_devtools; + node.tags.push({ + label: (info.name ? `${info.name.toString()}: ` : "") + info.path, + textColor: 0, + tooltip: "This component is rendered by <router-view>", + backgroundColor: PINK_500 + }); + } + if (isArray(componentInstance.__vrl_devtools)) { + componentInstance.__devtoolsApi = api; + componentInstance.__vrl_devtools.forEach((devtoolsData) => { + let label = devtoolsData.route.path; + let backgroundColor = ORANGE_400; + let tooltip = ""; + let textColor = 0; + if (devtoolsData.error) { + label = devtoolsData.error; + backgroundColor = RED_100; + textColor = RED_700; + } else if (devtoolsData.isExactActive) { + backgroundColor = LIME_500; + tooltip = "This is exactly active"; + } else if (devtoolsData.isActive) { + backgroundColor = BLUE_600; + tooltip = "This link is active"; + } + node.tags.push({ + label, + textColor, + tooltip, + backgroundColor + }); + }); + } + }); + watch(router.currentRoute, () => { + refreshRoutesView(); + api.notifyComponentUpdate(); + api.sendInspectorTree(routerInspectorId); + api.sendInspectorState(routerInspectorId); + }); + const navigationsLayerId = "router:navigations:" + id; + api.addTimelineLayer({ + id: navigationsLayerId, + label: `Router${id ? " " + id : ""} Navigations`, + color: 4237508 + }); + router.onError((error, to) => { + api.addTimelineEvent({ + layerId: navigationsLayerId, + event: { + title: "Error during Navigation", + subtitle: to.fullPath, + logType: "error", + time: api.now(), + data: { error }, + groupId: to.meta.__navigationId + } + }); + }); + let navigationId = 0; + router.beforeEach((to, from) => { + const data = { + guard: formatDisplay("beforeEach"), + from: formatRouteLocation(from, "Current Location during this navigation"), + to: formatRouteLocation(to, "Target location") + }; + Object.defineProperty(to.meta, "__navigationId", { value: navigationId++ }); + api.addTimelineEvent({ + layerId: navigationsLayerId, + event: { + time: api.now(), + title: "Start of navigation", + subtitle: to.fullPath, + data, + groupId: to.meta.__navigationId + } + }); + }); + router.afterEach((to, from, failure) => { + const data = { guard: formatDisplay("afterEach") }; + if (failure) { + data.failure = { _custom: { + type: Error, + readOnly: true, + display: failure ? failure.message : "", + tooltip: "Navigation Failure", + value: failure + } }; + data.status = formatDisplay("❌"); + } else data.status = formatDisplay("✅"); + data.from = formatRouteLocation(from, "Current Location during this navigation"); + data.to = formatRouteLocation(to, "Target location"); + api.addTimelineEvent({ + layerId: navigationsLayerId, + event: { + title: "End of navigation", + subtitle: to.fullPath, + time: api.now(), + data, + logType: failure ? "warning" : "default", + groupId: to.meta.__navigationId + } + }); + }); + /** + * Inspector of Existing routes + */ + const routerInspectorId = "router-inspector:" + id; + api.addInspector({ + id: routerInspectorId, + label: "Routes" + (id ? " " + id : ""), + icon: "book", + treeFilterPlaceholder: "Search routes" + }); + function refreshRoutesView() { + if (!activeRoutesPayload) return; + const payload = activeRoutesPayload; + let routes = matcher.getRoutes().filter((route) => !route.parent || !route.parent.record.components); + routes.forEach(resetMatchStateOnRouteRecord); + if (payload.filter) routes = routes.filter((route) => isRouteMatching(route, payload.filter.toLowerCase())); + routes.forEach((route) => markRouteRecordActive(route, router.currentRoute.value)); + payload.rootNodes = routes.map(formatRouteRecordForInspector); + } + let activeRoutesPayload; + api.on.getInspectorTree((payload) => { + activeRoutesPayload = payload; + if (payload.app === app && payload.inspectorId === routerInspectorId) refreshRoutesView(); + }); + /** + * Display information about the currently selected route record + */ + api.on.getInspectorState((payload) => { + if (payload.app === app && payload.inspectorId === routerInspectorId) { + const route = matcher.getRoutes().find((route) => route.record.__vd_id === payload.nodeId); + if (route) payload.state = { options: formatRouteRecordMatcherForStateInspector(route) }; + } + }); + api.sendInspectorTree(routerInspectorId); + api.sendInspectorState(routerInspectorId); + }); +} +function modifierForKey(key) { + if (key.optional) return key.repeatable ? "*" : "?"; + else return key.repeatable ? "+" : ""; +} +function formatRouteRecordMatcherForStateInspector(route) { + const { record } = route; + const fields = [{ + editable: false, + key: "path", + value: record.path + }]; + if (record.name != null) fields.push({ + editable: false, + key: "name", + value: record.name + }); + fields.push({ + editable: false, + key: "regexp", + value: route.re + }); + if (route.keys.length) fields.push({ + editable: false, + key: "keys", + value: { _custom: { + type: null, + readOnly: true, + display: route.keys.map((key) => `${key.name}${modifierForKey(key)}`).join(" "), + tooltip: "Param keys", + value: route.keys + } } + }); + if (record.redirect != null) fields.push({ + editable: false, + key: "redirect", + value: record.redirect + }); + if (route.alias.length) fields.push({ + editable: false, + key: "aliases", + value: route.alias.map((alias) => alias.record.path) + }); + if (Object.keys(route.record.meta).length) fields.push({ + editable: false, + key: "meta", + value: route.record.meta + }); + fields.push({ + key: "score", + editable: false, + value: { _custom: { + type: null, + readOnly: true, + display: route.score.map((score) => score.join(", ")).join(" | "), + tooltip: "Score used to sort routes", + value: route.score + } } + }); + return fields; +} +/** +* Extracted from tailwind palette +*/ +const PINK_500 = 15485081; +const BLUE_600 = 2450411; +const LIME_500 = 8702998; +const CYAN_400 = 2282478; +const ORANGE_400 = 16486972; +const DARK = 6710886; +const RED_100 = 16704226; +const RED_700 = 12131356; +function formatRouteRecordForInspector(route) { + const tags = []; + const { record } = route; + if (record.name != null) tags.push({ + label: String(record.name), + textColor: 0, + backgroundColor: CYAN_400 + }); + if (record.aliasOf) tags.push({ + label: "alias", + textColor: 0, + backgroundColor: ORANGE_400 + }); + if (route.__vd_match) tags.push({ + label: "matches", + textColor: 0, + backgroundColor: PINK_500 + }); + if (route.__vd_exactActive) tags.push({ + label: "exact", + textColor: 0, + backgroundColor: LIME_500 + }); + if (route.__vd_active) tags.push({ + label: "active", + textColor: 0, + backgroundColor: BLUE_600 + }); + if (record.redirect) tags.push({ + label: typeof record.redirect === "string" ? `redirect: ${record.redirect}` : "redirects", + textColor: 16777215, + backgroundColor: DARK + }); + let id = record.__vd_id; + if (id == null) { + id = String(routeRecordId++); + record.__vd_id = id; + } + return { + id, + label: record.path, + tags, + children: route.children.map(formatRouteRecordForInspector) + }; +} +let routeRecordId = 0; +const EXTRACT_REGEXP_RE = /^\/(.*)\/([a-z]*)$/; +function markRouteRecordActive(route, currentRoute) { + const isExactActive = currentRoute.matched.length && isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record); + route.__vd_exactActive = route.__vd_active = isExactActive; + if (!isExactActive) route.__vd_active = currentRoute.matched.some((match) => isSameRouteRecord(match, route.record)); + route.children.forEach((childRoute) => markRouteRecordActive(childRoute, currentRoute)); +} +function resetMatchStateOnRouteRecord(route) { + route.__vd_match = false; + route.children.forEach(resetMatchStateOnRouteRecord); +} +function isRouteMatching(route, filter) { + const found = String(route.re).match(EXTRACT_REGEXP_RE); + route.__vd_match = false; + if (!found || found.length < 3) return false; + if (new RegExp(found[1].replace(/\$$/, ""), found[2]).test(filter)) { + route.children.forEach((child) => isRouteMatching(child, filter)); + if (route.record.path !== "/" || filter === "/") { + route.__vd_match = route.re.test(filter); + return true; + } + return false; + } + const path = route.record.path.toLowerCase(); + const decodedPath = decode(path); + if (!isAbsolutePath(filter) && (decodedPath.includes(filter) || path.includes(filter))) return true; + if (decodedPath.startsWith(filter) || path.startsWith(filter)) return true; + if (route.record.name && String(route.record.name).includes(filter)) return true; + return route.children.some((child) => isRouteMatching(child, filter)); +} +function omit(obj, keys) { + const ret = {}; + for (const key in obj) if (!keys.includes(key)) ret[key] = obj[key]; + return ret; +} +//#endregion +export { PLUS_RE as A, isSameRouteLocation as C, resolveRelativePath as D, parseURL as E, encodePath as F, isBrowser as I, decode as M, encodeHash as N, stringifyURL as O, encodeParam as P, START_LOCATION_NORMALIZED as S, isSameRouteRecord as T, invalidateScrollPositions as _, loadRouteLocation as a, createHref as b, useCallbacks as c, stringifyQuery as d, isRouteLocation as f, getScrollKey as g, getSavedScrollPosition as h, guardToPromiseFn as i, commonEncode as j, stripBase as k, normalizeQuery as l, computeScrollPosition as m, extractChangingRecords as n, onBeforeRouteLeave as o, isRouteName as p, extractComponentsGuards as r, onBeforeRouteUpdate as s, addDevtools as t, parseQuery as u, saveScrollPosition as v, isSameRouteLocationParams as w, normalizeBase as x, scrollToPosition as y }; diff --git a/apps/web/.output/server/node_modules/vue-router/dist/useApi-CUWMwLLw.js b/apps/web/.output/server/node_modules/vue-router/dist/useApi-CUWMwLLw.js new file mode 100644 index 0000000..941c553 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-router/dist/useApi-CUWMwLLw.js @@ -0,0 +1,483 @@ +/*! +* vue-router v5.4.0 +* (c) 2026 Eduardo San Martin Morote +* @license MIT +*/ +import { createConsoleReporter, defineDiagnostics } from "nostics"; +import { inject } from "vue"; +//#region src/utils/index.ts +/** +* Identity function that returns the value as is. +* +* @param v - the value to return +* +* @internal +*/ +const identityFn = (v) => v; +/** +* Checks if a path is absolute, meaning it starts with a `/`. +* +* @param path - path to check +* +* @internal +*/ +const isAbsolutePath = (path) => path.startsWith("/"); +/** +* Allows differentiating lazy components from functional components and vue-class-component +* @internal +* +* @param component +*/ +function isRouteComponent(component) { + return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component; +} +function isESModule(obj) { + return obj.__esModule || obj[Symbol.toStringTag] === "Module" || obj.default && isRouteComponent(obj.default); +} +const assign = Object.assign; +function applyToParams(fn, params) { + const newParams = {}; + for (const key in params) { + const value = params[key]; + newParams[key] = isArray(value) ? value.map(fn) : fn(value); + } + return newParams; +} +/** +* Transforms a value or a function that returns a value to a value. +* +* @param valFn either a value or a function that returns a value +* @param args arguments to pass to the function if `valFn` is a function +* +* @internal +*/ +function toValueWithArgs(valFn, ...args) { + return typeof valFn === "function" ? valFn(...args) : valFn; +} +const noop = () => {}; +/** +* Typesafe alternative to Array.isArray +* https://github.com/microsoft/TypeScript/pull/48228 +* +* @internal +*/ +const isArray = Array.isArray; +function mergeOptions(defaults, partialOptions) { + const options = {}; + for (const key in defaults) options[key] = key in partialOptions ? partialOptions[key] : defaults[key]; + return options; +} +//#endregion +//#region src/errors.ts +const NavigationFailureSymbol = Symbol(process.env.NODE_ENV !== "production" ? "navigation failure" : ""); +/** +* Enumeration with all possible types for navigation failures. Can be passed to +* {@link isNavigationFailure} to check for specific failures. +*/ +let NavigationFailureType = /* @__PURE__ */ function(NavigationFailureType) { + /** + * An aborted navigation is a navigation that failed because a navigation + * guard returned `false` or called `next(false)` + */ + NavigationFailureType[NavigationFailureType["aborted"] = 4] = "aborted"; + /** + * A cancelled navigation is a navigation that failed because a more recent + * navigation finished started (not necessarily finished). + */ + NavigationFailureType[NavigationFailureType["cancelled"] = 8] = "cancelled"; + /** + * A duplicated navigation is a navigation that failed because it was + * initiated while already being at the exact same location. + */ + NavigationFailureType[NavigationFailureType["duplicated"] = 16] = "duplicated"; + return NavigationFailureType; +}({}); +const ErrorTypeMessages = { + [1]({ location, currentLocation }) { + return `No match for\n ${JSON.stringify(location)}${currentLocation ? "\nwhile being at\n" + JSON.stringify(currentLocation) : ""}`; + }, + [2]({ from, to }) { + return `Redirected from "${from.fullPath}" to "${stringifyRoute(to)}" via a navigation guard.`; + }, + [4]({ from, to }) { + return `Navigation aborted from "${from.fullPath}" to "${to.fullPath}" via a navigation guard.`; + }, + [8]({ from, to }) { + return `Navigation cancelled from "${from.fullPath}" to "${to.fullPath}" with a new navigation.`; + }, + [16]({ from, to: _to }) { + return `Avoided redundant navigation to current location: "${from.fullPath}".`; + } +}; +/** +* Creates a typed NavigationFailure object. +* @internal +* @param type - NavigationFailureType +* @param params - { from, to } +*/ +function createRouterError(type, params) { + if (process.env.NODE_ENV !== "production" || false) return assign(new Error(ErrorTypeMessages[type](params)), { + type, + [NavigationFailureSymbol]: true + }, params); + else return assign(/* @__PURE__ */ new Error(), { + type, + [NavigationFailureSymbol]: true + }, params); +} +function isNavigationFailure(error, type) { + return error instanceof Error && NavigationFailureSymbol in error && (type == null || !!(error.type & type)); +} +const propertiesToLog = [ + "params", + "query", + "hash" +]; +/** +* Stringifies a raw location for display in dev warnings. +* +* @internal +*/ +function stringifyRoute(to) { + if (!to || typeof to === "string") return to; + if (to.path != null) return to.path; + const location = {}; + for (const key of propertiesToLog) if (key in to) location[key] = to[key]; + return JSON.stringify(location, null, 2); +} +//#endregion +//#region src/diagnostics.ts +/** +* Runtime diagnostics catalog for Vue Router. +* +* Every entry has a stable `VUE_ROUTER_X####` code, a `why` that states the problem +* (the diagnosis only, never the remedy) and a `fix` that states the remedy +* (only, never the diagnosis). They are complementary: the reporter prints +* both, so neither repeats the other. The diagnosis substrings asserted by the +* warning tests stay in `why`. All call sites stay behind the existing `__DEV__` (or +* `process.env.NODE_ENV !== 'production'`) guards and remain bare expression +* statements so they tree-shake out of production builds. +* +* Codes are permanent: never rename or reuse one. +* - `VUE_ROUTER_R0###` core runtime warnings +* - `VUE_ROUTER_R1###` experimental data-loaders +* - `VUE_ROUTER_D0###` deprecations +*/ +const diagnostics = /*#__PURE__*/ defineDiagnostics({ + reporters: [/*#__PURE__*/ createConsoleReporter()], + codes: { + VUE_ROUTER_R0122: { + why: (p) => `The optional path param "${p.param}" is being removed with ${p.value}.`, + fix: "Use null to remove an optional path param." + }, + VUE_ROUTER_D0001: { + why: (p) => `Route "${p.name}" uses beforeEnter, which is deprecated in the experimental router.`, + fix: "Move the condition to the route meta field and check to.meta in router.beforeEach()." + }, + VUE_ROUTER_D0002: { + why: (p) => `The query value of "${p.key}" is not an array (${p.value}). Non array query values are deprecated in the experimental router.`, + fix: (p) => `Wrap the value in an array: \`{ ${JSON.stringify(p.key)}: [${p.value}] }\`. Use undefined to remove the key.` + }, + VUE_ROUTER_R0001: { + why: (p) => `Parent route "${p.name}" not found when adding child route`, + fix: "Add the parent route before its children, or check the parent name for typos.", + docs: "https://router.vuejs.org/guide/advanced/dynamic-routing.html#Adding-nested-routes" + }, + VUE_ROUTER_R0002: { + why: (p) => `Cannot remove non-existent route "${p.name}"`, + fix: "Check the route name; it may already have been removed or was never added.", + docs: "https://router.vuejs.org/guide/advanced/dynamic-routing.html#Removing-routes" + }, + VUE_ROUTER_R0003: { + why: (p) => `Location "${stringifyRoute(p.location)}" resolved to "${p.href}". A resolved location cannot start with multiple slashes.`, + fix: "Remove the leading slashes from the location or fix the route configuration." + }, + VUE_ROUTER_R0004: { + why: (p) => `No match found for location with path "${stringifyRoute(p.path)}"`, + fix: "Add a route matching this path or check for typos in the location.", + docs: "https://router.vuejs.org/guide/essentials/dynamic-matching.html#Catch-all-404-Not-found-Route" + }, + VUE_ROUTER_R0005: { + why: (p) => `router.resolve() was passed an invalid location. This will fail in production.\nLocation: ${stringifyRoute(p.rawLocation)}`, + fix: "Pass a valid route location: a string path or an object with `path` or `name`." + }, + VUE_ROUTER_R0006: { + why: (p) => `Path "${p.path}" was passed with params but they will be ignored because a "path" was passed.`, + fix: "Use a named route `{ name, params }` instead of `{ path, params }`.", + docs: "https://router.vuejs.org/guide/essentials/navigation.html#Navigate-to-a-different-location" + }, + VUE_ROUTER_R0007: { + why: (p) => `A \`hash\` should always start with the character "#" but received "${p.hash}".`, + fix: (p) => `Prepend "#" to the hash in your route location: use "#${p.hash}".` + }, + VUE_ROUTER_R0008: { + why: (p) => `Invalid redirect found:\n${p.target}\n when navigating to "${p.to}".\nThis will break in production.`, + fix: "A redirect must resolve to a location with a `name` or `path`; return one of those (or a string path) from `redirect`.", + docs: "https://router.vuejs.org/guide/essentials/redirect-and-alias.html#Redirect" + }, + VUE_ROUTER_R0009: { + why: (p) => `Detected a possibly infinite redirection in a navigation guard when going from "${p.from}" to "${p.to}". Aborting to avoid a Stack Overflow. This might break in production if not fixed.`, + fix: "A guard is returning a new location on every call; make that return conditional so it only redirects when actually needed.", + docs: "https://router.vuejs.org/guide/advanced/navigation-guards.html#Global-Before-Guards" + }, + VUE_ROUTER_R0010: { + why: "Uncaught error during route navigation", + fix: "Register an error handler with `router.onError()` to handle navigation errors." + }, + VUE_ROUTER_R0011: { + why: "Unexpected error when starting the router:", + fix: "Inspect the actual cause; a navigation guard or async component likely threw during the initial navigation." + }, + VUE_ROUTER_R0020: { + why: (p) => `No active route record was found when calling \`${p.fn}()\`. Maybe you called it inside of App.vue?`, + fix: "Call it from a component rendered inside <router-view> (a page component or one of its children), not from App.vue.", + docs: "https://router.vuejs.org/guide/advanced/composition-api.html#Navigation-Guards" + }, + VUE_ROUTER_R0021: { + why: "No active route record was found when reactivating component with navigation guard. This is likely a bug in vue-router.", + fix: "Report with a minimal reproduction at https://github.com/vuejs/router/issues/new/choose." + }, + VUE_ROUTER_R0022: { + why: (p) => `${p.fn}() was called outside of component setup but it must be called at the top of a setup function`, + fix: "Call it synchronously at the top of `setup()`, before any `await`.", + docs: "https://router.vuejs.org/guide/advanced/composition-api.html#Navigation-Guards" + }, + VUE_ROUTER_R0023: { + why: (p) => `The "next" callback was never called inside of ${p.name ? `"${p.name}"` : ""}:\n${p.guard}`, + fix: "Make sure `next()` runs on every branch, including early returns and async paths, or drop the `next` parameter and return the value instead.", + docs: "https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next" + }, + VUE_ROUTER_R0024: { + why: (p) => `The "next" callback was called more than once in one navigation guard when going from "${p.from}" to "${p.to}". This will fail in production.`, + fix: "Call `next()` exactly once per guard: remove the extra call, or migrate to returning the value you passed to `next()`.", + docs: "https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next" + }, + VUE_ROUTER_R0025: { + why: "The `next()` callback in navigation guards is deprecated.", + fix: "Return the value instead: `next()` becomes `return`, `next(false)` becomes `return false`, `next(\"/path\")` becomes `return \"/path\"`.", + docs: "https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next" + }, + VUE_ROUTER_R0026: { + why: (p) => `Record with path "${p.path}" is either missing a "component(s)" or "children" property.`, + fix: "Add a `component`, `components`, or `children` to the route record.", + docs: "https://router.vuejs.org/guide/essentials/nested-routes.html" + }, + VUE_ROUTER_R0027: { + why: (p) => `Component "${p.name}" in record with path "${p.path}" is not a valid component. Received "${p.received}".`, + fix: "Pass a component or a function returning a Promise that resolves to one." + }, + VUE_ROUTER_R0028: { + why: (p) => `Component "${p.name}" in record with path "${p.path}" is a Promise instead of a function that returns a Promise. This will break in production if not fixed.`, + fix: `Defer the import in an arrow function so it loads lazily: write "() => import('./MyPage.vue')", not "import('./MyPage.vue')".`, + docs: "https://router.vuejs.org/guide/advanced/lazy-loading.html" + }, + VUE_ROUTER_R0029: { + why: (p) => `Component "${p.name}" in record with path "${p.path}" is defined using "defineAsyncComponent()".`, + fix: `Drop the wrapper and pass "() => import('./MyPage.vue')" directly; the router handles lazy components itself.`, + docs: "https://router.vuejs.org/guide/advanced/lazy-loading.html#Relationship-to-async-components" + }, + VUE_ROUTER_R0030: { + why: (p) => `Component "${p.name}" in record with path "${p.path}" is a function that does not return a Promise. This will break in production if not fixed.`, + fix: "Return a dynamic import (`() => import(\"./MyPage.vue\")`) from the function, or add a `displayName` if it is a functional component.", + docs: "https://router.vuejs.org/guide/advanced/lazy-loading.html" + }, + VUE_ROUTER_R0040: { + why: (p) => `Because "${p.el}" starts with "#", scrollBehavior resolves it as an element id via document.getElementById("${p.el.slice(1)}"), not as a CSS selector. No element has that id, but "${p.el}" does match an element with document.querySelector().`, + fix: (p) => `Resolve the element yourself and return the node: el: document.querySelector('${p.el}').`, + docs: "https://router.vuejs.org/guide/advanced/scroll-behavior.html" + }, + VUE_ROUTER_R0041: { + why: (p) => `The selector "${p.el}" is invalid. See https://mathiasbynens.be/notes/css-escapes or CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape) for the escaping rules.`, + fix: "Build an id selector as `#${CSS.escape(id)}` so special characters in the id are escaped.", + docs: "https://router.vuejs.org/guide/advanced/scroll-behavior.html" + }, + VUE_ROUTER_R0042: { + why: (p) => `Couldn't find element using selector "${p.el}" returned by scrollBehavior.`, + fix: "Return a selector that matches an existing element, or guard against missing elements.", + docs: "https://router.vuejs.org/guide/advanced/scroll-behavior.html" + }, + VUE_ROUTER_R0043: { + why: (p) => `Several active useScrollRestoration() calls use the key "${p.key}" with different "capture" or "restore" options. They overwrite each other's saved entry.`, + fix: "Give each call a different \"key\", or combine them if they are in the same component." + }, + VUE_ROUTER_R0044: { + why: "No ScrollRestoration plugin is available to useScrollRestoration().", + fix: "Install ScrollRestoration on the app before calling useScrollRestoration()." + }, + VUE_ROUTER_R0050: { + why: (p) => { + let to; + try { + to = p.to === void 0 ? "undefined" : JSON.stringify(p.to); + } catch { + to = String(p.to); + } + return `Invalid value for prop "to" in useLink()\n- to: ${to}`; + }, + fix: "Pass a valid route location (a string path or an object) to the \"to\" prop." + }, + VUE_ROUTER_R0060: { + why: (p) => `<router-view> can no longer be used directly inside <${p.comp}>.`, + fix: (p) => `Wrap the slot's resolved component with <${p.comp}> instead of nesting <router-view> in it:\n\n<router-view v-slot="{ Component }">\n <${p.comp}>\n <component :is="Component" />\n </${p.comp}>\n</router-view>`, + docs: "https://router.vuejs.org/guide/advanced/router-view-slot.html#KeepAlive-Transition" + }, + VUE_ROUTER_R0070: { + why: (p) => `Cannot resolve a relative location without an absolute path. Trying to resolve "${p.to}" from "${p.from}".`, + fix: (p) => `Resolve from an absolute \`from\` path that starts with "/", e.g. "/${p.from}".` + }, + VUE_ROUTER_R0080: { + why: (p) => `Error decoding "${p.text}". Using original value`, + fix: "Ensure the value is correctly percent-encoded." + }, + VUE_ROUTER_R0090: { + why: (p) => `Found duplicated params with name "${p.name}" for path "${p.path}". Only the last one will be available on "$route.params".`, + fix: "Give each param a unique name within the path.", + docs: "https://router.vuejs.org/guide/essentials/route-matching-syntax.html" + }, + VUE_ROUTER_R0100: { + why: (p) => `Discarded invalid param(s) "${p.params}" when navigating.` + p.inherited + ` See https://github.com/vuejs/router/commit/e887570 for more details.`, + fix: "Only pass params that exist on the target route." + }, + VUE_ROUTER_R0101: { + why: (p) => `The Matcher cannot resolve relative paths but received "${p.path}". Unless you directly called \`matcher.resolve("${p.path}")\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`, + fix: "Pass an absolute path (starting with \"/\") to the matcher." + }, + VUE_ROUTER_R0102: { + why: (p) => `Alias "${p.alias}" and the original record: "${p.original}" must have the exact same param named "${p.name}"`, + fix: "Use the same param names in the alias as in the original route.", + docs: "https://router.vuejs.org/guide/essentials/redirect-and-alias.html#Alias" + }, + VUE_ROUTER_R0103: { + why: (p) => `The route named "${p.name}" has a child without a name, an empty path, and no children. Using that name won't render the empty path child, so this is probably a mistake.`, + fix: "Move the `name` onto the empty-path child; or, if intentional, give the child its own name to silence this.", + docs: "https://router.vuejs.org/guide/essentials/nested-routes.html#Nested-Named-Routes" + }, + VUE_ROUTER_R0104: { + why: (p) => `Absolute path "${p.path}" must have the exact same param named "${p.name}" as its parent "${p.parent}".`, + fix: "Include the parent route params in the absolute child path.", + docs: "https://router.vuejs.org/guide/essentials/nested-routes.html" + }, + VUE_ROUTER_R0105: { + why: (p) => `Finding ancestor route "${p.ancestor}" failed for "${p.record}"`, + fix: "Report a reproduction at https://github.com/vuejs/router/issues/new/choose." + }, + VUE_ROUTER_R0110: { + why: `A hash base must end with a "#"`, + fix: (p) => `Append "#" to the "base" argument passed to "createWebHashHistory()": "${p.base}" should be "${p.suggestion}".` + }, + VUE_ROUTER_R0120: { + why: "Error with push/replace State", + fix: "The browser rejected the history API call; check for cross-origin or rate-limit issues." + }, + VUE_ROUTER_R0121: { + why: "history.state seems to have been manually replaced without preserving the necessary values.\nYou can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state", + fix: "Merge the router's state into your own when calling it manually: `history.replaceState({ ...history.state, ...yourState }, '', url)`.", + docs: "https://router.vuejs.org/guide/migration.html#Usage-of-history-state" + }, + VUE_ROUTER_R1001: { + why: (p) => `Data loader "${String(p.key)}" has a different parent than the current context. This shouldn't be happening.`, + fix: "Report a bug with a minimal reproduction at https://github.com/vuejs/router/." + }, + VUE_ROUTER_R1002: { + why: "Returning a NavigationResult is deprecated.", + fix: "Replace `return new NavigationResult(to)` with `reroute(to)`, which throws internally to reroute.", + docs: "https://router.vuejs.org/data-loaders/navigation-aware.html#Controlling-the-navigation-with-reroute-" + }, + VUE_ROUTER_R1003: { + why: (p) => `Loader "${p.key}"'s "commit()" was called but there is no staged data.`, + fix: "Ensure the loader resolved before calling `commit()`.", + docs: "https://router.vuejs.org/data-loaders/defining-loaders.html#Delaying-data-updates-with-commit" + }, + VUE_ROUTER_R1004: { + why: (p) => "A loader returned a NavigationResult but is not registered on the route." + p.key, + fix: "Export the loader from the page component so it gets registered, e.g. `export const useUserData = defineLoader(...)`.", + docs: "https://router.vuejs.org/data-loaders/organization.html" + }, + VUE_ROUTER_R1005: { + why: (p) => `Data loader "${p.key}" has itself as parent. This shouldn't be happening.`, + fix: "Report a bug with a minimal reproduction at https://github.com/vuejs/router/." + }, + VUE_ROUTER_R1006: { + why: (p) => `A query was defined with the same key as the loader "[${p.key}]".\nSee https://pinia-colada.esm.dev/#TODO`, + fix: "If the key is meant to match, use the data loader directly; otherwise rename the `useQuery()` key so it no longer collides.", + docs: "https://router.vuejs.org/data-loaders/colada.html" + }, + VUE_ROUTER_R1007: { + why: "Data Loader was setup twice.", + fix: "Register `DataLoaderPlugin` a single time via `app.use()`.", + docs: "https://router.vuejs.org/data-loaders.html#Installation" + }, + VUE_ROUTER_R1008: { + why: "Data Loader is experimental and subject to breaking changes in the future.", + docs: "https://router.vuejs.org/data-loaders.html" + }, + VUE_ROUTER_R1009: { + why: "Returning a NavigationResult from a loader is deprecated.", + fix: "Call `reroute(to)` inside the loader instead of returning `new NavigationResult(to)`; it throws internally to reroute.", + docs: "https://router.vuejs.org/data-loaders/navigation-aware.html#Controlling-the-navigation-with-reroute-" + } + } +}); +//#endregion +//#region src/injectionSymbols.ts +/** +* RouteRecord being rendered by the closest ancestor Router View. Used for +* `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View +* Location Matched +* +* @internal +*/ +const matchedRouteKey = Symbol(process.env.NODE_ENV !== "production" ? "router view location matched" : ""); +/** +* Allows overriding the router view depth to control which component in +* `matched` is rendered. rvd stands for Router View Depth +* +* @internal +*/ +const viewDepthKey = Symbol(process.env.NODE_ENV !== "production" ? "router view depth" : ""); +/** +* Allows overriding the router instance returned by `useRouter` in tests. r +* stands for router +* +* @internal +*/ +const routerKey = Symbol(process.env.NODE_ENV !== "production" ? "router" : ""); +/** +* Allows overriding the current route returned by `useRoute` in tests. rl +* stands for route location +* +* @internal +*/ +const routeLocationKey = Symbol(process.env.NODE_ENV !== "production" ? "route location" : ""); +/** +* Allows overriding the current route used by router-view. Internally this is +* used when the `route` prop is passed. +* +* @internal +*/ +const routerViewLocationKey = Symbol(process.env.NODE_ENV !== "production" ? "router view location" : ""); +/** +* Callbacks called by the closest ancestor router-view once it displays a new +* route. Used by `onRouteRendered()`. +* +* @internal +*/ +const routerViewOnRouteRenderedKey = Symbol(process.env.NODE_ENV !== "production" ? "router view on route rendered" : ""); +//#endregion +//#region src/useApi.ts +/** +* Returns the router instance. Equivalent to using `$router` inside +* templates. +*/ +function useRouter() { + return inject(routerKey); +} +/** +* Returns the current route location. Equivalent to using `$route` inside +* templates. +*/ +function useRoute(_name) { + return inject(routeLocationKey); +} +//#endregion +export { toValueWithArgs as S, isArray as _, routerKey as a, mergeOptions as b, viewDepthKey as c, createRouterError as d, isNavigationFailure as f, isAbsolutePath as g, identityFn as h, routeLocationKey as i, diagnostics as l, assign as m, useRouter as n, routerViewLocationKey as o, applyToParams as p, matchedRouteKey as r, routerViewOnRouteRenderedKey as s, useRoute as t, NavigationFailureType as u, isESModule as v, noop as x, isRouteComponent as y }; diff --git a/apps/web/.output/server/node_modules/vue-router/dist/vue-router.js b/apps/web/.output/server/node_modules/vue-router/dist/vue-router.js new file mode 100644 index 0000000..17294a1 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-router/dist/vue-router.js @@ -0,0 +1,1575 @@ +/*! +* vue-router v5.4.0 +* (c) 2026 Eduardo San Martin Morote +* @license MIT +*/ +import { C as isSameRouteLocation, E as parseURL, I as isBrowser, M as decode, N as encodeHash, O as stringifyURL, P as encodeParam, S as START_LOCATION_NORMALIZED, T as isSameRouteRecord, _ as invalidateScrollPositions, a as loadRouteLocation, b as createHref, c as useCallbacks, d as stringifyQuery, f as isRouteLocation, g as getScrollKey, h as getSavedScrollPosition, i as guardToPromiseFn, k as stripBase, l as normalizeQuery, m as computeScrollPosition, n as extractChangingRecords, o as onBeforeRouteLeave, p as isRouteName, r as extractComponentsGuards, s as onBeforeRouteUpdate, t as addDevtools, u as parseQuery, v as saveScrollPosition, w as isSameRouteLocationParams, x as normalizeBase, y as scrollToPosition } from "./devtools-CxgSYwGp.js"; +import { _ as isArray, a as routerKey, b as mergeOptions, c as viewDepthKey, d as createRouterError, f as isNavigationFailure, g as isAbsolutePath, i as routeLocationKey, l as diagnostics, m as assign, n as useRouter, o as routerViewLocationKey, p as applyToParams, r as matchedRouteKey, s as routerViewOnRouteRenderedKey, t as useRoute, u as NavigationFailureType, x as noop } from "./useApi-CUWMwLLw.js"; +import { computed, defineComponent, getCurrentInstance, h, inject, nextTick, provide, reactive, ref, shallowReactive, shallowRef, unref, watch, watchEffect } from "vue"; +//#region src/history/html5.ts +let createBaseLocation = () => location.protocol + "//" + location.host; +/** +* Creates a normalized history location from a window.location object +* @param base - The base path +* @param location - The window.location object +*/ +function createCurrentLocation(base, location) { + const { pathname, search, hash } = location; + const hashPos = base.indexOf("#"); + if (hashPos > -1) { + let slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1; + let pathFromHash = hash.slice(slicePos); + if (pathFromHash[0] !== "/") pathFromHash = "/" + pathFromHash; + return stripBase(pathFromHash, ""); + } + return stripBase(pathname, base) + search + hash; +} +function useHistoryListeners(base, historyState, currentLocation, replace) { + let listeners = []; + let teardowns = []; + let pauseState = null; + const popStateHandler = ({ state }) => { + const to = createCurrentLocation(base, location); + const from = currentLocation.value; + const fromState = historyState.value; + let delta = 0; + if (state) { + currentLocation.value = to; + historyState.value = state; + if (pauseState && pauseState === from) { + pauseState = null; + return; + } + delta = fromState ? state.position - fromState.position : 0; + } else replace(to); + listeners.forEach((listener) => { + listener(currentLocation.value, from, { + delta, + type: "pop", + direction: delta ? delta > 0 ? "forward" : "back" : "" + }); + }); + }; + function pauseListeners() { + pauseState = currentLocation.value; + } + function listen(callback) { + listeners.push(callback); + const teardown = () => { + const index = listeners.indexOf(callback); + if (index > -1) listeners.splice(index, 1); + }; + teardowns.push(teardown); + return teardown; + } + function beforeUnloadListener() { + const { history } = window; + if (!history.state) return; + history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), ""); + } + function destroy() { + for (const teardown of teardowns) teardown(); + teardowns = []; + window.removeEventListener("popstate", popStateHandler); + window.removeEventListener("pagehide", beforeUnloadListener); + } + window.addEventListener("popstate", popStateHandler); + window.addEventListener("pagehide", beforeUnloadListener); + return { + pauseListeners, + listen, + destroy + }; +} +/** +* Creates a state object +*/ +function buildState(back, current, forward, replaced = false) { + return { + back, + current, + forward, + replaced, + position: window.history.length, + scroll: null + }; +} +function useHistoryStateNavigation(base) { + const { history, location } = window; + const currentLocation = { value: createCurrentLocation(base, location) }; + const historyState = { value: history.state }; + if (!historyState.value) changeLocation(currentLocation.value, { + back: null, + current: currentLocation.value, + forward: null, + position: history.length - 1, + replaced: true, + scroll: null + }, true); + function changeLocation(to, state, replace) { + /** + * if a base tag is provided, and we are on a normal domain, we have to + * respect the provided `base` attribute because pushState() will use it and + * potentially erase anything before the `#` like at + * https://github.com/vuejs/router/issues/685 where a base of + * `/folder/#` but a base of `/` would erase the `/folder/` section. If + * there is no host, the `<base>` tag makes no sense and if there isn't a + * base tag we can just use everything after the `#`. + */ + const hashIndex = base.indexOf("#"); + const url = hashIndex > -1 ? (location.host && document.querySelector("base") ? base : base.slice(hashIndex)) + to : createBaseLocation() + base + to; + try { + history[replace ? "replaceState" : "pushState"](state, "", url); + historyState.value = state; + } catch (err) { + if (process.env.NODE_ENV !== "production") diagnostics.VUE_ROUTER_R0120({ cause: err }); + else console.error(err); + location[replace ? "replace" : "assign"](url); + } + } + function replace(to, data) { + const state = assign({}, history.state, buildState(historyState.value.back, to, historyState.value.forward, true), data, { position: historyState.value.position }); + changeLocation(to, state, true); + invalidateScrollPositions(state.position, true); + currentLocation.value = to; + } + function push(to, data) { + const currentState = assign({}, historyState.value, history.state, { + forward: to, + scroll: computeScrollPosition() + }); + if (process.env.NODE_ENV !== "production" && !history.state) diagnostics.VUE_ROUTER_R0121(); + changeLocation(currentState.current, currentState, true); + changeLocation(to, assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data), false); + invalidateScrollPositions(currentState.position); + currentLocation.value = to; + } + return { + location: currentLocation, + state: historyState, + push, + replace + }; +} +/** +* Creates an HTML5 history. Most common history for single page applications. +* +* @param base - +*/ +function createWebHistory(base) { + base = normalizeBase(base); + const historyNavigation = useHistoryStateNavigation(base); + const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace); + function go(delta, triggerListeners = true) { + if (!triggerListeners) historyListeners.pauseListeners(); + history.go(delta); + } + const routerHistory = assign({ + location: "", + base, + go, + createHref: createHref.bind(null, base) + }, historyNavigation, historyListeners); + Object.defineProperty(routerHistory, "location", { + enumerable: true, + get: () => historyNavigation.location.value + }); + Object.defineProperty(routerHistory, "state", { + enumerable: true, + get: () => historyNavigation.state.value + }); + return routerHistory; +} +//#endregion +//#region src/history/hash.ts +/** +* Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to +* handle any URL is not possible. +* +* @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag +* in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState() +* calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything +* after the `#`). +* +* @example +* ```js +* // at https://example.com/folder +* createWebHashHistory() // gives a url of `https://example.com/folder#` +* createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#` +* // if the `#` is provided in the base, it won't be added by `createWebHashHistory` +* createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/` +* // you should avoid doing this because it changes the original url and breaks copying urls +* createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#` +* +* // at file:///usr/etc/folder/index.html +* // for locations with no `host`, the base is ignored +* createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#` +* ``` +*/ +function createWebHashHistory(base) { + base = location.host ? base || location.pathname + location.search : ""; + if (!base.includes("#")) base += "#"; + if (process.env.NODE_ENV !== "production" && !base.endsWith("#/") && !base.endsWith("#")) diagnostics.VUE_ROUTER_R0110({ + base, + suggestion: base.replace(/#.*$/, "#") + }); + return createWebHistory(base); +} +//#endregion +//#region src/history/memory.ts +/** +* Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere. +* It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`. +* +* @param base - Base applied to all urls, defaults to '/' +* @returns a history object that can be passed to the router constructor +*/ +function createMemoryHistory(base = "") { + let listeners = []; + let queue = [["", {}]]; + let position = 0; + base = normalizeBase(base); + function setLocation(location, state = {}) { + position++; + if (position !== queue.length) queue.splice(position); + queue.push([location, state]); + } + function triggerListeners(to, from, { direction, delta }) { + const info = { + direction, + delta, + type: "pop" + }; + for (const callback of listeners) callback(to, from, info); + } + const routerHistory = { + location: "", + state: {}, + base, + createHref: createHref.bind(null, base), + replace(to, state) { + queue.splice(position--, 1); + setLocation(to, state); + }, + push(to, state) { + setLocation(to, state); + }, + listen(callback) { + listeners.push(callback); + return () => { + const index = listeners.indexOf(callback); + if (index > -1) listeners.splice(index, 1); + }; + }, + destroy() { + listeners = []; + queue = [["", {}]]; + position = 0; + }, + go(delta, shouldTrigger = true) { + const from = this.location; + const direction = delta < 0 ? "back" : "forward"; + position = Math.max(0, Math.min(position + delta, queue.length - 1)); + if (shouldTrigger) triggerListeners(this.location, from, { + direction, + delta + }); + } + }; + Object.defineProperty(routerHistory, "location", { + enumerable: true, + get: () => queue[position][0] + }); + Object.defineProperty(routerHistory, "state", { + enumerable: true, + get: () => queue[position][1] + }); + return routerHistory; +} +//#endregion +//#region src/matcher/pathTokenizer.ts +const ROOT_TOKEN = { + type: 0, + value: "" +}; +const VALID_PARAM_RE = /[a-zA-Z0-9_]/; +function tokenizePath(path) { + if (!path) return [[]]; + if (path === "/") return [[ROOT_TOKEN]]; + if (!isAbsolutePath(path)) throw new Error(process.env.NODE_ENV !== "production" ? `Route paths should start with a "/": "${path}" should be "/${path}".` : `Invalid path "${path}"`); + function crash(message) { + throw new Error(`ERR (${state})/"${buffer}": ${message}`); + } + let state = 0; + let previousState = state; + const tokens = []; + let segment; + function finalizeSegment() { + if (segment) tokens.push(segment); + segment = []; + } + let i = 0; + let char; + let buffer = ""; + let customRe = ""; + function consumeBuffer() { + if (!buffer) return; + if (state === 0) segment.push({ + type: 0, + value: buffer + }); + else if (state === 1 || state === 2 || state === 3) { + if (segment.length > 1 && (char === "*" || char === "+")) crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`); + segment.push({ + type: 1, + value: buffer, + regexp: customRe, + repeatable: char === "*" || char === "+", + optional: char === "*" || char === "?" + }); + } else crash("Invalid state to consume buffer"); + buffer = ""; + } + function addCharToBuffer() { + buffer += char; + } + while (i < path.length) { + char = path[i++]; + switch (state) { + case 0: + if (char === "\\") { + previousState = state; + state = 4; + } else if (char === "/") { + if (buffer) consumeBuffer(); + finalizeSegment(); + } else if (char === ":") { + consumeBuffer(); + state = 1; + } else addCharToBuffer(); + break; + case 4: + addCharToBuffer(); + state = previousState; + break; + case 1: + if (char === "(") state = 2; + else if (VALID_PARAM_RE.test(char)) addCharToBuffer(); + else { + consumeBuffer(); + state = 0; + if (char !== "*" && char !== "?" && char !== "+") i--; + } + break; + case 2: + if (char === ")") { + if (customRe[customRe.length - 1] == "\\") customRe = customRe.slice(0, -1) + char; + else state = 3; + } else customRe += char; + break; + case 3: + consumeBuffer(); + state = 0; + if (char !== "*" && char !== "?" && char !== "+") i--; + customRe = ""; + break; + default: crash("Unknown state"); + } + } + if (state === 2) crash(`Unfinished custom RegExp for param "${buffer}"`); + consumeBuffer(); + finalizeSegment(); + return tokens; +} +//#endregion +//#region src/matcher/pathParserRanker.ts +const BASE_PARAM_PATTERN = "[^/]+?"; +const BASE_PATH_PARSER_OPTIONS = { + sensitive: false, + strict: false, + start: true, + end: true +}; +const REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g; +/** +* Creates a path parser from an array of Segments (a segment is an array of Tokens) +* +* @param segments - array of segments returned by tokenizePath +* @param extraOptions - optional options for the regexp +* @returns a PathParser +*/ +function tokensToParser(segments, extraOptions) { + const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions); + const score = []; + let pattern = options.start ? "^" : ""; + const keys = []; + for (const segment of segments) { + const segmentScores = segment.length ? [] : [90]; + if (options.strict && !segment.length) pattern += "/"; + for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) { + const token = segment[tokenIndex]; + let subSegmentScore = 40 + (options.sensitive ? .25 : 0); + if (token.type === 0) { + if (!tokenIndex) pattern += "/"; + pattern += token.value.replace(REGEX_CHARS_RE, "\\$&"); + subSegmentScore += 40; + } else if (token.type === 1) { + const { value, repeatable, optional, regexp } = token; + keys.push({ + name: value, + repeatable, + optional + }); + const re = regexp ? regexp : BASE_PARAM_PATTERN; + if (re !== BASE_PARAM_PATTERN) { + subSegmentScore += 10; + try { + new RegExp(`(${re})`); + } catch (err) { + throw new Error(`Invalid custom RegExp for param "${value}" (${re}): ` + err.message); + } + } + let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`; + if (!tokenIndex) subPattern = optional && segment.length < 2 ? `(?:/${subPattern})` : "/" + subPattern; + if (optional) subPattern += "?"; + pattern += subPattern; + subSegmentScore += 20; + if (optional) subSegmentScore += -8; + if (repeatable) subSegmentScore += -20; + if (re === ".*") subSegmentScore += -50; + } + segmentScores.push(subSegmentScore); + } + score.push(segmentScores); + } + if (options.strict && options.end) { + const i = score.length - 1; + score[i][score[i].length - 1] += .7000000000000001; + } + if (!options.strict) pattern += "/?"; + if (options.end) pattern += "$"; + else if (options.strict && !pattern.endsWith("/")) pattern += "(?:/|$)"; + const re = new RegExp(pattern, options.sensitive ? "" : "i"); + function parse(path) { + const match = path.match(re); + const params = {}; + if (!match) return null; + for (let i = 1; i < match.length; i++) { + const value = match[i] || ""; + const key = keys[i - 1]; + params[key.name] = value && key.repeatable ? value.split("/") : value; + } + return params; + } + function stringify(params) { + let path = ""; + let avoidDuplicatedSlash = false; + for (const segment of segments) { + if (!avoidDuplicatedSlash || !path.endsWith("/")) path += "/"; + avoidDuplicatedSlash = false; + for (const token of segment) if (token.type === 0) path += token.value; + else if (token.type === 1) { + const { value, repeatable, optional } = token; + const param = value in params ? params[value] : ""; + if (isArray(param) && !repeatable) throw new Error(`Provided param "${value}" is an array but it is not repeatable (* or + modifiers)`); + const text = isArray(param) ? param.join("/") : param; + if (!text) { + if (optional) { + if (segment.length < 2) { + if (path.endsWith("/")) path = path.slice(0, -1); + else avoidDuplicatedSlash = true; + } + } else throw new Error(`Missing required param "${value}"`); + } + path += text; + } + } + return path || "/"; + } + return { + re, + score, + keys, + parse, + stringify + }; +} +/** +* Compares an array of numbers as used in PathParser.score and returns a +* number. This function can be used to `sort` an array +* +* @param a - first array of numbers +* @param b - second array of numbers +* @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b +* should be sorted first +*/ +function compareScoreArray(a, b) { + let i = 0; + while (i < a.length && i < b.length) { + const diff = b[i] - a[i]; + if (diff) return diff; + i++; + } + if (a.length < b.length) return a.length === 1 && a[0] === 80 ? -1 : 1; + else if (a.length > b.length) return b.length === 1 && b[0] === 80 ? 1 : -1; + return 0; +} +/** +* Compare function that can be used with `sort` to sort an array of PathParser +* +* @param a - first PathParser +* @param b - second PathParser +* @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b +*/ +function comparePathParserScore(a, b) { + let i = 0; + const aScore = a.score; + const bScore = b.score; + while (i < aScore.length && i < bScore.length) { + const comp = compareScoreArray(aScore[i], bScore[i]); + if (comp) return comp; + i++; + } + if (Math.abs(bScore.length - aScore.length) === 1) { + if (isLastScoreNegative(aScore)) return 1; + if (isLastScoreNegative(bScore)) return -1; + } + return bScore.length - aScore.length; +} +/** +* This allows detecting splats at the end of a path: /home/:id(.*)* +* +* @param score - score to check +* @returns true if the last entry is negative +*/ +function isLastScoreNegative(score) { + const last = score[score.length - 1]; + return score.length > 0 && last[last.length - 1] < 0; +} +const PATH_PARSER_OPTIONS_DEFAULTS = { + strict: false, + end: true, + sensitive: false +}; +//#endregion +//#region src/matcher/pathMatcher.ts +function createRouteRecordMatcher(record, parent, options) { + const parser = tokensToParser(tokenizePath(record.path), options); + if (process.env.NODE_ENV !== "production") { + const existingKeys = /* @__PURE__ */ new Set(); + for (const key of parser.keys) { + if (existingKeys.has(key.name)) diagnostics.VUE_ROUTER_R0090({ + name: key.name, + path: record.path + }); + existingKeys.add(key.name); + } + } + const matcher = assign(parser, { + record, + parent, + children: [], + alias: [] + }); + if (parent) { + if (!matcher.record.aliasOf === !parent.record.aliasOf) parent.children.push(matcher); + } + return matcher; +} +//#endregion +//#region src/matcher/index.ts +/** +* Creates a Router Matcher. +* +* @internal +* @param routes - array of initial routes +* @param globalOptions - global route options +*/ +function createRouterMatcher(routes, globalOptions) { + const matchers = []; + const matcherMap = /* @__PURE__ */ new Map(); + globalOptions = mergeOptions(PATH_PARSER_OPTIONS_DEFAULTS, globalOptions); + function getRecordMatcher(name) { + return matcherMap.get(name); + } + function addRoute(record, parent, originalRecord) { + const isRootAdd = !originalRecord; + const mainNormalizedRecord = normalizeRouteRecord(record); + if (process.env.NODE_ENV !== "production") checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent); + mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record; + const options = mergeOptions(globalOptions, record); + const normalizedRecords = [mainNormalizedRecord]; + if ("alias" in record) { + const aliases = typeof record.alias === "string" ? [record.alias] : record.alias; + for (const alias of aliases) normalizedRecords.push(normalizeRouteRecord(assign({}, mainNormalizedRecord, { + components: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components, + path: alias, + aliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord + }))); + } + let matcher; + let originalMatcher; + for (const normalizedRecord of normalizedRecords) { + const { path } = normalizedRecord; + if (parent && !isAbsolutePath(path)) { + const parentPath = parent.record.path; + const connectingSlash = parentPath[parentPath.length - 1] === "/" ? "" : "/"; + normalizedRecord.path = parent.record.path + (path && connectingSlash + path); + } + if (process.env.NODE_ENV !== "production" && normalizedRecord.path === "*") throw new Error("Catch all routes (\"*\") must now be defined using a param with a custom regexp.\nSee more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes."); + matcher = createRouteRecordMatcher(normalizedRecord, parent, options); + if (process.env.NODE_ENV !== "production" && parent && isAbsolutePath(path)) checkMissingParamsInAbsolutePath(matcher, parent); + if (originalRecord) { + originalRecord.alias.push(matcher); + if (process.env.NODE_ENV !== "production") checkSameParams(originalRecord, matcher); + } else { + originalMatcher = originalMatcher || matcher; + if (originalMatcher !== matcher) originalMatcher.alias.push(matcher); + if (isRootAdd && record.name && !isAliasRecord(matcher)) { + if (process.env.NODE_ENV !== "production") checkSameNameAsAncestor(record, parent); + removeRoute(record.name); + } + } + if (isMatchable(matcher)) insertMatcher(matcher); + if (mainNormalizedRecord.children) { + const children = mainNormalizedRecord.children; + for (let i = 0; i < children.length; i++) addRoute(children[i], matcher, originalRecord && originalRecord.children[i]); + } + originalRecord = originalRecord || matcher; + } + return originalMatcher ? () => { + removeRoute(originalMatcher); + } : noop; + } + function removeRoute(matcherRef) { + if (isRouteName(matcherRef)) { + const matcher = matcherMap.get(matcherRef); + if (matcher) { + matcherMap.delete(matcherRef); + matchers.splice(matchers.indexOf(matcher), 1); + matcher.children.forEach(removeRoute); + matcher.alias.forEach(removeRoute); + } + } else { + const index = matchers.indexOf(matcherRef); + if (index > -1) { + matchers.splice(index, 1); + if (matcherRef.record.name) matcherMap.delete(matcherRef.record.name); + matcherRef.children.forEach(removeRoute); + matcherRef.alias.forEach(removeRoute); + } + } + } + function getRoutes() { + return matchers; + } + function insertMatcher(matcher) { + const index = findInsertionIndex(matcher, matchers); + matchers.splice(index, 0, matcher); + if (matcher.record.name && !isAliasRecord(matcher)) matcherMap.set(matcher.record.name, matcher); + } + function resolve(location, currentLocation) { + let matcher; + let params = {}; + let path; + let name; + if ("name" in location && location.name) { + matcher = matcherMap.get(location.name); + if (!matcher) throw createRouterError(1, { location }); + if (process.env.NODE_ENV !== "production") { + const invalidParams = Object.keys(location.params || {}).filter((paramName) => !matcher.keys.find((k) => k.name === paramName)); + if (invalidParams.length) { + const isInherited = !matcher.keys.length && invalidParams.some((name) => name in currentLocation.params); + diagnostics.VUE_ROUTER_R0100({ + params: invalidParams.join("\", \""), + inherited: isInherited ? ` If you are using a catch-all route with a named redirect, pass an empty \`params\` object: \`redirect: { name: '...', params: {} }\`.` : "" + }); + } + } + name = matcher.record.name; + params = assign(pickParams(currentLocation.params, matcher.keys.filter((k) => !k.optional).concat(matcher.parent ? matcher.parent.keys.filter((k) => k.optional) : []).map((k) => k.name)), location.params && pickParams(location.params, matcher.keys.map((k) => k.name))); + path = matcher.stringify(params); + } else if (location.path != null) { + path = location.path; + if (process.env.NODE_ENV !== "production" && !isAbsolutePath(path)) diagnostics.VUE_ROUTER_R0101({ path }); + matcher = matchers.find((m) => m.re.test(path)); + if (matcher) { + params = matcher.parse(path); + name = matcher.record.name; + matcher.keys.forEach((key) => { + if (key.optional && !params[key.name]) delete params[key.name]; + }); + } + } else { + matcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m) => m.re.test(currentLocation.path)); + if (!matcher) throw createRouterError(1, { + location, + currentLocation + }); + name = matcher.record.name; + params = assign({}, currentLocation.params, location.params); + path = matcher.stringify(params); + } + const matched = []; + let parentMatcher = matcher; + while (parentMatcher) { + matched.unshift(parentMatcher.record); + parentMatcher = parentMatcher.parent; + } + return { + name, + path, + params, + matched, + meta: mergeMetaFields(matched) + }; + } + routes.forEach((route) => addRoute(route)); + function clearRoutes() { + matchers.length = 0; + matcherMap.clear(); + } + return { + addRoute, + resolve, + removeRoute, + clearRoutes, + getRoutes, + getRecordMatcher + }; +} +/** +* Picks an object param to contain only specified keys. +* +* @param params - params object to pick from +* @param keys - keys to pick +*/ +function pickParams(params, keys) { + const newParams = {}; + for (const key of keys) if (key in params) newParams[key] = params[key]; + return newParams; +} +/** +* Normalizes a RouteRecordRaw. Creates a copy +* +* @param record +* @returns the normalized version +*/ +function normalizeRouteRecord(record) { + const normalized = { + path: record.path, + redirect: record.redirect, + name: record.name, + meta: record.meta || {}, + aliasOf: record.aliasOf, + beforeEnter: record.beforeEnter, + props: normalizeRecordProps(record), + children: record.children || [], + instances: {}, + leaveGuards: /* @__PURE__ */ new Set(), + updateGuards: /* @__PURE__ */ new Set(), + enterCallbacks: {}, + components: "components" in record ? record.components || null : record.component && { default: record.component } + }; + Object.defineProperty(normalized, "mods", { value: {} }); + return normalized; +} +/** +* Normalize the optional `props` in a record to always be an object similar to +* components. Also accept a boolean for components. +* @param record +*/ +function normalizeRecordProps(record) { + const propsObject = {}; + const props = record.props || false; + if ("component" in record) propsObject.default = props; + else for (const name in record.components) propsObject[name] = typeof props === "object" ? props[name] : props; + return propsObject; +} +/** +* Checks if a record or any of its parent is an alias +* @param record +*/ +function isAliasRecord(record) { + while (record) { + if (record.record.aliasOf) return true; + record = record.parent; + } + return false; +} +/** +* Merge meta fields of an array of records +* +* @param matched - array of matched records +*/ +function mergeMetaFields(matched) { + return matched.reduce((meta, record) => assign(meta, record.meta), {}); +} +function isSameParam(a, b) { + return a.name === b.name && a.optional === b.optional && a.repeatable === b.repeatable; +} +/** +* Check if a path and its alias have the same required params +* +* @param a - original record +* @param b - alias record +*/ +function checkSameParams(a, b) { + for (const key of a.keys) if (!key.optional && !b.keys.find(isSameParam.bind(null, key))) { + diagnostics.VUE_ROUTER_R0102({ + alias: b.record.path, + original: a.record.path, + name: key.name + }); + return; + } + for (const key of b.keys) if (!key.optional && !a.keys.find(isSameParam.bind(null, key))) { + diagnostics.VUE_ROUTER_R0102({ + alias: b.record.path, + original: a.record.path, + name: key.name + }); + return; + } +} +/** +* A route with a name and a child with an empty path without a name should warn when adding the route +* +* @param mainNormalizedRecord - RouteRecordNormalized +* @param parent - RouteRecordMatcher +*/ +function checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) { + if (parent && parent.record.name && !mainNormalizedRecord.name && !mainNormalizedRecord.path && mainNormalizedRecord.children.length === 0) diagnostics.VUE_ROUTER_R0103({ name: String(parent.record.name) }); +} +function checkSameNameAsAncestor(record, parent) { + for (let ancestor = parent; ancestor; ancestor = ancestor.parent) if (ancestor.record.name === record.name) throw new Error(`A route named "${String(record.name)}" has been added as a ${parent === ancestor ? "child" : "descendant"} of a route with the same name. Route names must be unique and a nested route cannot use the same name as an ancestor.`); +} +function checkMissingParamsInAbsolutePath(record, parent) { + for (const key of parent.keys) if (!record.keys.find(isSameParam.bind(null, key))) { + diagnostics.VUE_ROUTER_R0104({ + path: record.record.path, + name: key.name, + parent: parent.record.path + }); + return; + } +} +/** +* Performs a binary search to find the correct insertion index for a new matcher. +* +* Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships, +* with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes. +* +* @param matcher - new matcher to be inserted +* @param matchers - existing matchers +*/ +function findInsertionIndex(matcher, matchers) { + let lower = 0; + let upper = matchers.length; + while (lower !== upper) { + const mid = lower + upper >> 1; + if (comparePathParserScore(matcher, matchers[mid]) < 0) upper = mid; + else lower = mid + 1; + } + const insertionAncestor = getInsertionAncestor(matcher); + if (insertionAncestor) { + upper = matchers.lastIndexOf(insertionAncestor, upper - 1); + if (process.env.NODE_ENV !== "production" && upper < 0) diagnostics.VUE_ROUTER_R0105({ + ancestor: insertionAncestor.record.path, + record: matcher.record.path + }); + } + return upper; +} +function getInsertionAncestor(matcher) { + let ancestor = matcher; + while (ancestor = ancestor.parent) if (isMatchable(ancestor) && comparePathParserScore(matcher, ancestor) === 0) return ancestor; +} +/** +* Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without +* a component, or name, or redirect, are just used to group other routes. +* @param matcher +* @param matcher.record record of the matcher +* @returns +*/ +function isMatchable({ record }) { + return !!(record.name || record.components && Object.keys(record.components).length || record.redirect); +} +//#endregion +//#region src/RouterLink.ts +/** +* Returns the internal behavior of a {@link RouterLink} without the rendering part. +* +* @param props - a `to` location and an optional `replace` flag +*/ +function useLink(props) { + const router = inject(routerKey); + const currentRoute = inject(routeLocationKey); + let hasPrevious = false; + let previousTo = null; + const route = computed(() => { + const to = unref(props.to); + if (process.env.NODE_ENV !== "production" && (!hasPrevious || to !== previousTo)) { + if (!isRouteLocation(to)) diagnostics.VUE_ROUTER_R0050({ to }); + previousTo = to; + hasPrevious = true; + } + return router.resolve(to); + }); + const activeRecordIndex = computed(() => { + const { matched } = route.value; + const { length } = matched; + const routeMatched = matched[length - 1]; + const currentMatched = currentRoute.matched; + if (!routeMatched || !currentMatched.length) return -1; + const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched)); + if (index > -1) return index; + const parentRecordPath = getOriginalPath(matched[length - 2]); + return length > 1 && getOriginalPath(routeMatched) === parentRecordPath && currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) : index; + }); + const isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params)); + const isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params)); + function navigate(e = {}) { + if (guardEvent(e)) { + const p = router[unref(props.replace) ? "replace" : "push"](unref(props.to)).catch(noop); + if (props.viewTransition && typeof document !== "undefined" && "startViewTransition" in document) document.startViewTransition(() => p); + return p; + } + return Promise.resolve(); + } + if ((process.env.NODE_ENV !== "production" || __VUE_PROD_DEVTOOLS__) && isBrowser) { + const instance = getCurrentInstance(); + if (instance) { + const linkContextDevtools = { + route: route.value, + isActive: isActive.value, + isExactActive: isExactActive.value, + error: null + }; + instance.__vrl_devtools = instance.__vrl_devtools || []; + instance.__vrl_devtools.push(linkContextDevtools); + watchEffect(() => { + linkContextDevtools.route = route.value; + linkContextDevtools.isActive = isActive.value; + linkContextDevtools.isExactActive = isExactActive.value; + linkContextDevtools.error = isRouteLocation(unref(props.to)) ? null : "Invalid \"to\" value"; + }, { flush: "post" }); + } + } + /** + * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this + */ + return { + route, + href: computed(() => route.value.href), + isActive, + isExactActive, + navigate + }; +} +function preferSingleVNode(vnodes) { + return vnodes.length === 1 ? vnodes[0] : vnodes; +} +/** +* Component to render a link that triggers a navigation on click. +*/ +const RouterLink = /* @__PURE__ */ defineComponent({ + name: "RouterLink", + compatConfig: { MODE: 3 }, + props: { + to: { + type: [String, Object], + required: true + }, + replace: Boolean, + activeClass: String, + exactActiveClass: String, + custom: Boolean, + ariaCurrentValue: { + type: String, + default: "page" + }, + viewTransition: Boolean + }, + useLink, + setup(props, { slots }) { + const link = reactive(useLink(props)); + const { options } = inject(routerKey); + const elClass = computed(() => ({ + [getLinkClass(props.activeClass, options.linkActiveClass, "router-link-active")]: link.isActive, + [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, "router-link-exact-active")]: link.isExactActive + })); + return () => { + const children = slots.default && preferSingleVNode(slots.default(link)); + return props.custom ? children : h("a", { + "aria-current": link.isExactActive ? props.ariaCurrentValue : null, + href: link.href, + onClick: link.navigate, + class: elClass.value + }, children); + }; + } +}); +function guardEvent(e) { + if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return; + if (e.defaultPrevented) return; + if (e.button !== void 0 && e.button !== 0) return; + if (e.currentTarget && e.currentTarget.getAttribute) { + const target = e.currentTarget.getAttribute("target"); + if (/\b_blank\b/i.test(target)) return; + } + if (e.preventDefault) e.preventDefault(); + return true; +} +function includesParams(outer, inner) { + for (const key in inner) { + const innerValue = inner[key]; + const outerValue = outer[key]; + if (isArray(innerValue)) { + if (!isArray(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i) => value.valueOf() !== outerValue[i].valueOf())) return false; + } else if (innerValue !== outerValue) return false; + } + return true; +} +/** +* Get the original path value of a record by following its aliasOf +* @param record +*/ +function getOriginalPath(record) { + return record ? record.aliasOf ? record.aliasOf.path : record.path : ""; +} +/** +* Utility class to get the active class based on defaults. +* @param propClass +* @param globalClass +* @param defaultClass +*/ +const getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass; +//#endregion +//#region src/RouterView.ts +const RouterViewImpl = /*#__PURE__*/ defineComponent({ + name: "RouterView", + inheritAttrs: false, + props: { + name: { + type: String, + default: "default" + }, + route: Object + }, + compatConfig: { MODE: 3 }, + setup(props, { attrs, slots }) { + process.env.NODE_ENV !== "production" && warnDeprecatedUsage(); + const injectedRoute = inject(routerViewLocationKey); + const routeToDisplay = computed(() => props.route || injectedRoute.value); + const injectedDepth = inject(viewDepthKey, 0); + const depth = computed(() => { + let initialDepth = unref(injectedDepth); + const { matched } = routeToDisplay.value; + let matchedRoute; + while ((matchedRoute = matched[initialDepth]) && !matchedRoute.components) initialDepth++; + return initialDepth; + }); + const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]); + provide(viewDepthKey, computed(() => depth.value + 1)); + provide(matchedRouteKey, matchedRouteRef); + provide(routerViewLocationKey, routeToDisplay); + const onRouteRenderedCallbacks = /* @__PURE__ */ new Set(); + provide(routerViewOnRouteRenderedKey, onRouteRenderedCallbacks); + const viewRef = ref(); + let settledRoute = START_LOCATION_NORMALIZED; + const { app } = getCurrentInstance().appContext; + watch(() => [ + viewRef.value, + matchedRouteRef.value, + props.name + ], ([instance, to, name], [oldInstance, from, _oldName]) => { + if (to) { + to.instances[name] = instance; + if (from && from !== to && instance && instance === oldInstance) { + if (!to.leaveGuards.size) to.leaveGuards = from.leaveGuards; + if (!to.updateGuards.size) to.updateGuards = from.updateGuards; + } + } + if (instance && to && (!from || !isSameRouteRecord(to, from) || !oldInstance)) (to.enterCallbacks[name] || []).forEach((callback) => callback(instance)); + }, { flush: "post" }); + return () => { + const route = routeToDisplay.value; + const currentName = props.name; + const matchedRoute = matchedRouteRef.value; + const ViewComponent = matchedRoute && matchedRoute.components[currentName]; + if (!ViewComponent) return normalizeSlot(slots.default, { + Component: ViewComponent, + route + }); + const routePropsOption = matchedRoute.props[currentName]; + const routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === "function" ? routePropsOption(route) : routePropsOption : null; + const onVnodeUnmounted = (vnode) => { + if (vnode.component.isUnmounted) matchedRoute.instances[currentName] = null; + }; + const onVnodeSettled = (vnode) => nextTick(() => { + if (settledRoute === route || routeToDisplay.value !== route || vnode.el.getRootNode() !== app._container.getRootNode()) return; + const from = settledRoute; + settledRoute = route; + for (const callback of onRouteRenderedCallbacks) callback(route, from); + }); + const component = h(ViewComponent, assign({}, routeProps, attrs, { + onVnodeUnmounted, + onVnodeMounted: onVnodeSettled, + onVnodeUpdated: onVnodeSettled, + ref: viewRef + })); + if ((process.env.NODE_ENV !== "production" || __VUE_PROD_DEVTOOLS__) && isBrowser && component.ref) { + const info = { + depth: depth.value, + name: matchedRoute.name, + path: matchedRoute.path, + meta: matchedRoute.meta + }; + (isArray(component.ref) ? component.ref.map((r) => r.i) : [component.ref.i]).forEach((instance) => { + if (instance) instance.__vrv_devtools = info; + }); + } + return normalizeSlot(slots.default, { + Component: component, + route + }) || component; + }; + } +}); +function normalizeSlot(slot, data) { + if (!slot) return null; + const slotContent = slot(data); + return slotContent.length === 1 ? slotContent[0] : slotContent; +} +/** +* Component to display the current route the user is at. +*/ +const RouterView = RouterViewImpl; +function warnDeprecatedUsage() { + const instance = getCurrentInstance(); + const parentName = instance.parent && instance.parent.type.name; + const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type; + if (parentName && (parentName === "KeepAlive" || parentName.includes("Transition")) && typeof parentSubTreeType === "object" && parentSubTreeType.name === "RouterView") { + const comp = parentName === "KeepAlive" ? "keep-alive" : "transition"; + diagnostics.VUE_ROUTER_R0060({ comp }); + } +} +//#endregion +//#region src/router.ts +/** +* Creates a Router instance that can be used by a Vue app. +* +* @param options - {@link RouterOptions} +*/ +function createRouter(options) { + const matcher = options.matcher || createRouterMatcher(options.routes, options); + const parseQuery$1 = options.parseQuery || parseQuery; + const stringifyQuery$1 = options.stringifyQuery || stringifyQuery; + const routerHistory = options.history; + if (process.env.NODE_ENV !== "production" && !routerHistory) throw new Error("Provide the \"history\" option when calling \"createRouter()\": https://router.vuejs.org/api/interfaces/RouterOptions.html#history"); + const beforeGuards = useCallbacks(); + const beforeResolveGuards = useCallbacks(); + const afterGuards = useCallbacks(); + const currentRoute = shallowRef(START_LOCATION_NORMALIZED); + const routesVersion = shallowRef(0); + let pendingLocation = START_LOCATION_NORMALIZED; + if (isBrowser && options.scrollBehavior && "scrollRestoration" in history) history.scrollRestoration = "manual"; + const normalizeParams = applyToParams.bind(null, (paramValue) => "" + paramValue); + const encodeParams = applyToParams.bind(null, encodeParam); + const decodeParams = applyToParams.bind(null, decode); + function addRoute(parentOrRoute, route) { + let parent; + let record; + if (isRouteName(parentOrRoute)) { + parent = matcher.getRecordMatcher(parentOrRoute); + if (process.env.NODE_ENV !== "production" && !parent) diagnostics.VUE_ROUTER_R0001({ name: String(parentOrRoute) }); + record = route; + } else record = parentOrRoute; + const removeRoute = matcher.addRoute(record, parent); + routesVersion.value++; + return () => { + removeRoute(); + routesVersion.value++; + }; + } + function removeRoute(name) { + const recordMatcher = matcher.getRecordMatcher(name); + if (recordMatcher) { + matcher.removeRoute(recordMatcher); + routesVersion.value++; + } else if (process.env.NODE_ENV !== "production") diagnostics.VUE_ROUTER_R0002({ name: String(name) }); + } + function clearRoutes() { + matcher.clearRoutes(); + routesVersion.value++; + } + function getRoutes() { + return matcher.getRoutes().map((routeMatcher) => routeMatcher.record); + } + function hasRoute(name) { + return !!matcher.getRecordMatcher(name); + } + function resolve(rawLocation, currentLocation) { + routesVersion.value; + if (typeof rawLocation === "string") { + currentLocation = currentLocation || (rawLocation.startsWith("/") ? START_LOCATION_NORMALIZED : currentRoute.value); + const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path); + const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation); + const href = routerHistory.createHref(locationNormalized.fullPath); + if (process.env.NODE_ENV !== "production") { + if (href.startsWith("//")) diagnostics.VUE_ROUTER_R0003({ + location: rawLocation, + href + }); + else if (!matchedRoute.matched.length) diagnostics.VUE_ROUTER_R0004({ path: rawLocation }); + } + return assign(locationNormalized, matchedRoute, { + params: decodeParams(matchedRoute.params), + redirectedFrom: void 0, + href + }); + } + if (process.env.NODE_ENV !== "production" && !isRouteLocation(rawLocation)) { + diagnostics.VUE_ROUTER_R0005({ rawLocation }); + return resolve({}); + } + currentLocation = assign({}, currentLocation || (rawLocation.path != null && rawLocation.path.startsWith("/") && !("name" in rawLocation && rawLocation.name) ? START_LOCATION_NORMALIZED : currentRoute.value)); + let matcherLocation; + if (rawLocation.path != null) { + if (process.env.NODE_ENV !== "production" && "params" in rawLocation && !("name" in rawLocation) && Object.keys(rawLocation.params).length) diagnostics.VUE_ROUTER_R0006({ path: rawLocation.path }); + matcherLocation = assign({}, rawLocation, { path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path }); + } else { + const targetParams = assign({}, rawLocation.params); + for (const key in targetParams) if (targetParams[key] == null) delete targetParams[key]; + matcherLocation = assign({}, rawLocation, { params: encodeParams(targetParams) }); + currentLocation.params = encodeParams(currentLocation.params); + } + const matchedRoute = matcher.resolve(matcherLocation, currentLocation); + const hash = rawLocation.hash || ""; + if (process.env.NODE_ENV !== "production" && hash && !hash.startsWith("#")) diagnostics.VUE_ROUTER_R0007({ hash }); + matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params)); + const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, { + hash: encodeHash(hash), + path: matchedRoute.path + })); + const href = routerHistory.createHref(fullPath); + if (process.env.NODE_ENV !== "production") { + if (href.startsWith("//")) diagnostics.VUE_ROUTER_R0003({ + location: rawLocation, + href + }); + else if (!matchedRoute.matched.length) diagnostics.VUE_ROUTER_R0004({ path: rawLocation.path != null ? rawLocation.path : rawLocation }); + } + return assign({ + fullPath, + hash, + query: stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {} + }, matchedRoute, { + redirectedFrom: void 0, + href + }); + } + function locationAsObject(to) { + return typeof to === "string" ? parseURL(parseQuery$1, to, currentRoute.value.path) : assign({}, to); + } + function checkCanceledNavigation(to, from) { + if (pendingLocation !== to) return createRouterError(8, { + from, + to + }); + } + function push(to) { + return pushWithRedirect(to); + } + function replace(to) { + return push(assign(locationAsObject(to), { replace: true })); + } + function handleRedirectRecord(to, from) { + const lastMatched = to.matched[to.matched.length - 1]; + if (lastMatched && lastMatched.redirect) { + const { redirect } = lastMatched; + let newTargetLocation = typeof redirect === "function" ? redirect(to, from) : redirect; + if (typeof newTargetLocation === "string") { + newTargetLocation = newTargetLocation.includes("?") || newTargetLocation.includes("#") ? newTargetLocation = locationAsObject(newTargetLocation) : { path: newTargetLocation }; + newTargetLocation.params = {}; + } + if (process.env.NODE_ENV !== "production" && newTargetLocation.path == null && !("name" in newTargetLocation)) { + diagnostics.VUE_ROUTER_R0008({ + target: JSON.stringify(newTargetLocation, null, 2), + to: to.fullPath + }); + throw new Error("Invalid redirect"); + } + return assign({ + query: to.query, + hash: to.hash, + params: newTargetLocation.path != null ? {} : to.params + }, newTargetLocation); + } + } + function pushWithRedirect(to, redirectedFrom) { + const targetLocation = pendingLocation = resolve(to); + const from = currentRoute.value; + const data = to.state; + const force = to.force; + const replace = to.replace === true; + const shouldRedirect = handleRedirectRecord(targetLocation, from); + if (shouldRedirect) return pushWithRedirect(assign(locationAsObject(shouldRedirect), { + state: typeof shouldRedirect === "object" ? assign({}, data, shouldRedirect.state) : data, + force, + replace + }), redirectedFrom || targetLocation); + const toLocation = targetLocation; + toLocation.redirectedFrom = redirectedFrom; + let failure; + if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) { + failure = createRouterError(16, { + to: toLocation, + from + }); + handleScroll(from, from, true, false); + } + return (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error) => isNavigationFailure(error) ? isNavigationFailure(error, 2) ? error : markAsReady(error) : triggerError(error, toLocation, from)).then((failure) => { + if (failure) { + if (isNavigationFailure(failure, 2)) { + if (process.env.NODE_ENV !== "production" && isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) && redirectedFrom && (redirectedFrom._count = redirectedFrom._count ? redirectedFrom._count + 1 : 1) > 30) { + diagnostics.VUE_ROUTER_R0009({ + from: from.fullPath, + to: toLocation.fullPath + }); + return Promise.reject(/* @__PURE__ */ new Error("Infinite redirect in navigation guard")); + } + return pushWithRedirect(assign({ replace }, locationAsObject(failure.to), { + state: typeof failure.to === "object" ? assign({}, data, failure.to.state) : data, + force + }), redirectedFrom || toLocation); + } + } else failure = finalizeNavigation(toLocation, from, true, replace, data); + triggerAfterEach(toLocation, from, failure); + return failure; + }); + } + /** + * Helper to reject and skip all navigation guards if a new navigation happened + * @param to + * @param from + */ + function checkCanceledNavigationAndReject(to, from) { + const error = checkCanceledNavigation(to, from); + return error ? Promise.reject(error) : Promise.resolve(); + } + function runWithContext(fn) { + const app = installedApps.values().next().value; + return app && typeof app.runWithContext === "function" ? app.runWithContext(fn) : fn(); + } + function navigate(to, from) { + let guards; + const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from); + guards = extractComponentsGuards(leavingRecords.reverse(), "beforeRouteLeave", to, from); + for (const record of leavingRecords) record.leaveGuards.forEach((guard) => { + guards.push(guardToPromiseFn(guard, to, from)); + }); + const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from); + guards.push(canceledNavigationCheck); + return runGuardQueue(guards).then(() => { + guards = []; + for (const guard of beforeGuards.list()) guards.push(guardToPromiseFn(guard, to, from)); + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }).then(() => { + guards = extractComponentsGuards(updatingRecords, "beforeRouteUpdate", to, from); + for (const record of updatingRecords) record.updateGuards.forEach((guard) => { + guards.push(guardToPromiseFn(guard, to, from)); + }); + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }).then(() => { + guards = []; + for (const record of enteringRecords) if (record.beforeEnter) { + if (isArray(record.beforeEnter)) for (const beforeEnter of record.beforeEnter) guards.push(guardToPromiseFn(beforeEnter, to, from)); + else guards.push(guardToPromiseFn(record.beforeEnter, to, from)); + } + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }).then(() => { + to.matched.forEach((record) => record.enterCallbacks = {}); + guards = extractComponentsGuards(enteringRecords, "beforeRouteEnter", to, from, runWithContext); + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }).then(() => { + guards = []; + for (const guard of beforeResolveGuards.list()) guards.push(guardToPromiseFn(guard, to, from)); + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }).catch((err) => isNavigationFailure(err, 8) ? err : Promise.reject(err)); + } + function triggerAfterEach(to, from, failure) { + afterGuards.list().forEach((guard) => runWithContext(() => guard(to, from, failure))); + } + /** + * - Cleans up any navigation guards + * - Changes the url if necessary + * - Calls the scrollBehavior + */ + function finalizeNavigation(toLocation, from, isPush, replace, data) { + const error = checkCanceledNavigation(toLocation, from); + if (error) return error; + const isFirstNavigation = from === START_LOCATION_NORMALIZED; + const state = !isBrowser ? {} : history.state; + if (isPush) { + if (replace || isFirstNavigation) routerHistory.replace(toLocation.fullPath, assign({ scroll: isFirstNavigation && state && state.scroll }, data)); + else routerHistory.push(toLocation.fullPath, data); + } + currentRoute.value = toLocation; + handleScroll(toLocation, from, isPush, isFirstNavigation); + markAsReady(); + } + let removeHistoryListener; + function setupListeners() { + if (removeHistoryListener) return; + removeHistoryListener = routerHistory.listen((to, _from, info) => { + if (!router.listening) return; + const toLocation = resolve(to); + const shouldRedirect = handleRedirectRecord(toLocation, router.currentRoute.value); + if (shouldRedirect) { + pushWithRedirect(assign(shouldRedirect, { + replace: true, + force: true + }), toLocation).catch(noop); + return; + } + pendingLocation = toLocation; + const from = currentRoute.value; + if (isBrowser && info.delta) saveScrollPosition(getScrollKey(from.fullPath, info.delta)); + navigate(toLocation, from).catch((error) => { + if (isNavigationFailure(error, 12)) return error; + if (isNavigationFailure(error, 2)) { + pushWithRedirect(assign(locationAsObject(error.to), { force: true }), toLocation).then((failure) => { + if (isNavigationFailure(failure, 20) && !info.delta && info.type === "pop") routerHistory.go(-1, false); + }).catch(noop); + return Promise.reject(); + } + if (info.delta) routerHistory.go(-info.delta, false); + return triggerError(error, toLocation, from); + }).then((failure) => { + failure = failure || finalizeNavigation(toLocation, from, false); + if (failure) { + if (info.delta && !isNavigationFailure(failure, 8)) routerHistory.go(-info.delta, false); + else if (info.type === "pop" && isNavigationFailure(failure, 20)) routerHistory.go(-1, false); + } + triggerAfterEach(toLocation, from, failure); + }).catch(noop); + }); + } + let readyHandlers = useCallbacks(); + let errorListeners = useCallbacks(); + let ready; + /** + * Trigger errorListeners added via onError and throws the error as well + * + * @param error - error to throw + * @param to - location we were navigating to when the error happened + * @param from - location we were navigating from when the error happened + * @returns the error as a rejected promise + */ + function triggerError(error, to, from) { + markAsReady(error); + const list = errorListeners.list(); + if (list.length) list.forEach((handler) => handler(error, to, from)); + else { + if (process.env.NODE_ENV !== "production") diagnostics.VUE_ROUTER_R0010(); + console.error(error); + } + return Promise.reject(error); + } + function isReady() { + if (ready && currentRoute.value !== START_LOCATION_NORMALIZED) return Promise.resolve(); + return new Promise((resolve, reject) => { + readyHandlers.add([resolve, reject]); + }); + } + function markAsReady(err) { + if (!ready) { + ready = !err; + setupListeners(); + readyHandlers.list().forEach(([resolve, reject]) => err ? reject(err) : resolve()); + readyHandlers.reset(); + } + return err; + } + function handleScroll(to, from, isPush, isFirstNavigation) { + const { scrollBehavior } = options; + if (!isBrowser || !scrollBehavior) return Promise.resolve(); + const scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null; + return nextTick().then(() => scrollBehavior(to, from, scrollPosition)).then((position) => to === currentRoute.value && position && scrollToPosition(position)).catch((err) => to === currentRoute.value && triggerError(err, to, from)); + } + const go = (delta) => routerHistory.go(delta); + let started; + const installedApps = /* @__PURE__ */ new Set(); + const router = { + currentRoute, + listening: true, + addRoute, + removeRoute, + clearRoutes, + hasRoute, + getRoutes, + resolve, + options, + push, + replace, + go, + back: () => go(-1), + forward: () => go(1), + beforeEach: beforeGuards.add, + beforeResolve: beforeResolveGuards.add, + afterEach: afterGuards.add, + onError: errorListeners.add, + isReady, + install(app) { + app.component("RouterLink", RouterLink); + app.component("RouterView", RouterView); + app.config.globalProperties.$router = router; + Object.defineProperty(app.config.globalProperties, "$route", { + enumerable: true, + get: () => unref(currentRoute) + }); + if (isBrowser && !started && currentRoute.value === START_LOCATION_NORMALIZED) { + started = true; + push(routerHistory.location).catch((err) => { + if (process.env.NODE_ENV !== "production") diagnostics.VUE_ROUTER_R0011({ cause: err }); + }); + } + const reactiveRoute = {}; + for (const key in START_LOCATION_NORMALIZED) Object.defineProperty(reactiveRoute, key, { + get: () => currentRoute.value[key], + enumerable: true + }); + app.provide(routerKey, router); + app.provide(routeLocationKey, shallowReactive(reactiveRoute)); + app.provide(routerViewLocationKey, currentRoute); + const unmountApp = app.unmount; + installedApps.add(app); + app.unmount = function() { + installedApps.delete(app); + if (installedApps.size < 1) { + pendingLocation = START_LOCATION_NORMALIZED; + removeHistoryListener && removeHistoryListener(); + removeHistoryListener = null; + currentRoute.value = START_LOCATION_NORMALIZED; + started = false; + ready = false; + } + unmountApp(); + }; + if ((process.env.NODE_ENV !== "production" || __VUE_PROD_DEVTOOLS__) && isBrowser && true) addDevtools(app, router, matcher); + } + }; + function runGuardQueue(guards) { + return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve()); + } + return router; +} +//#endregion +export { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey }; diff --git a/apps/web/.output/server/node_modules/vue-router/package.json b/apps/web/.output/server/node_modules/vue-router/package.json new file mode 100644 index 0000000..d0f2878 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-router/package.json @@ -0,0 +1,211 @@ +{ + "name": "vue-router", + "version": "5.4.0", + "homepage": "https://router.vuejs.org", + "bugs": { + "url": "https://github.com/vuejs/router/issues" + }, + "license": "MIT", + "author": { + "name": "Eduardo San Martin Morote", + "email": "posva13@gmail.com" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/router.git" + }, + "funding": "https://github.com/sponsors/posva", + "files": [ + "dist", + "index.cjs", + "README.md", + "route.schema.json", + "vue-router-auto-resolver.d.mts", + "vue-router-auto-routes.d.mts", + "vue-router-auto.d.ts", + "vue-router.node.mjs", + "vetur/attributes.json", + "vetur/tags.json" + ], + "type": "module", + "sideEffects": false, + "main": "index.cjs", + "module": "dist/vue-router.js", + "types": "dist/vue-router.d.ts", + "typesVersions": { + "*": { + "vite": [ + "./dist/unplugin/vite.d.mts" + ], + "unplugin": [ + "./dist/unplugin/index.d.mts" + ], + "unplugin/*": [ + "./dist/unplugin/*.d.mts" + ], + "volar/*": [ + "./dist/volar/*.d.cts" + ] + } + }, + "unpkg": "dist/vue-router.global.js", + "jsdelivr": "dist/vue-router.global.js", + "exports": { + ".": { + "types": "./dist/vue-router.d.ts", + "node": { + "import": { + "production": "./vue-router.node.mjs", + "development": "./vue-router.node.mjs", + "default": "./vue-router.node.mjs" + }, + "require": { + "production": "./dist/vue-router.prod.cjs", + "development": "./dist/vue-router.cjs", + "default": "./dist/vue-router.prod.cjs" + } + }, + "import": "./dist/vue-router.js", + "require": "./index.cjs" + }, + "./vetur/*": "./vetur/*", + "./package.json": "./package.json", + "./experimental": { + "types": "./dist/experimental/index.d.ts", + "import": "./dist/experimental/index.js" + }, + "./experimental/pinia-colada": { + "types": "./dist/experimental/pinia-colada.d.ts", + "import": "./dist/experimental/pinia-colada.js" + }, + "./auto-resolver": { + "types": "./vue-router-auto-resolver.d.mts" + }, + "./auto-routes": { + "types": "./vue-router-auto-routes.d.mts" + }, + "./auto": { + "types": "./vue-router-auto.d.ts", + "node": { + "import": { + "production": "./vue-router.node.mjs", + "development": "./vue-router.node.mjs", + "default": "./vue-router.node.mjs" + }, + "require": { + "production": "./dist/vue-router.prod.cjs", + "development": "./dist/vue-router.cjs", + "default": "./dist/vue-router.prod.cjs" + } + }, + "import": "./dist/vue-router.js", + "require": "./index.cjs" + }, + "./vite": { + "types": "./dist/unplugin/vite.d.mts", + "import": "./dist/unplugin/vite.mjs", + "require": "./dist/unplugin/vite.cjs" + }, + "./unplugin": { + "types": "./dist/unplugin/index.d.mts", + "import": "./dist/unplugin/index.mjs", + "require": "./dist/unplugin/index.cjs" + }, + "./unplugin/*": "./dist/unplugin/*", + "./volar/sfc-route-blocks": { + "types": "./dist/volar/sfc-route-blocks.d.cts", + "default": "./dist/volar/sfc-route-blocks.cjs" + }, + "./volar/sfc-typed-router": { + "types": "./dist/volar/sfc-typed-router.d.cts", + "default": "./dist/volar/sfc-typed-router.cjs" + }, + "./dist/*": "./dist/*" + }, + "dependencies": { + "@vue-macros/common": "^3.1.3", + "@vue/devtools-api": "^8.1.5", + "ast-walker-scope": "^0.10.0", + "chokidar": "^5.0.0", + "confbox": "^0.3.1", + "local-pkg": "^1.2.1", + "magic-string": "^1.4.3", + "mlly": "^1.8.2", + "muggle-string": "^0.4.1", + "nostics": "^1.3.0", + "pathe": "^2.0.3", + "picomatch": "^4.0.7", + "scule": "^1.3.0", + "tinyglobby": "^0.2.17", + "unplugin": "^3.4.0", + "unplugin-utils": "^0.3.2" + }, + "devDependencies": { + "@babel/types": "^8.0.6", + "@pinia/colada": "^1.4.7", + "@playwright/test": "^1.63.0", + "@rollup/plugin-commonjs": "^29.0.3", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@standard-schema/spec": "^1.1.0", + "@types/picomatch": "^4.0.3", + "@typescript/native-preview": "7.0.0-dev.20260707.2", + "@vitejs/plugin-vue": "^6.0.9", + "@vue/compiler-sfc": "^3.5.43", + "@vue/language-core": "^3.3.12", + "@vue/server-renderer": "^3.5.43", + "@vue/test-utils": "^2.5.1", + "connect-history-api-fallback": "^2.0.0", + "faked-promise": "^2.2.2", + "happy-dom": "^20.14.5", + "pinia": "^4.0.3", + "rimraf": "^6.1.3", + "rollup": "^4.64.0", + "rollup-plugin-typescript2": "^0.37.0", + "tsdown": "^0.23.0", + "tsup": "^8.5.1", + "valibot": "^1.5.0", + "vite": "^8.3.3", + "vue": "^3.5.43", + "zod": "^4.6.5" + }, + "peerDependencies": { + "@pinia/colada": ">=0.21.2", + "@vue/compiler-sfc": "^3.5.34 || ^4.0.0", + "pinia": "^3.0.4 || ^4.0.2", + "vite": "^7.3.0 || ^8.0.0", + "vue": "^3.5.34 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "pinia": { + "optional": true + }, + "@pinia/colada": { + "optional": true + }, + "vite": { + "optional": true + } + }, + "vetur": { + "tags": "vetur/tags.json", + "attributes": "vetur/attributes.json" + }, + "scripts": { + "dev": "vitest --ui", + "build": "tsdown", + "build:old": "rimraf dist && rollup -c rollup.config.mjs", + "build:playground": "vue-tsc --noEmit && vite build --config playground/vite.config.ts", + "build:e2e": "vue-tsc --noEmit && vite build --config e2e/vite.config.mjs", + "build:size": "pnpm run build && rollup -c size-checks/rollup.config.mjs", + "dev:e2e": "vite --config e2e/vite.config.mjs", + "test:types": "tsgo --build tsconfig.json ./test-dts/tsconfig.experimental.json", + "test:unit": "vitest --coverage run", + "test": "pnpm run build && pnpm run '/^(test:unit|test:types)$/' && pnpm run test:e2e", + "test:e2e": "playwright test" + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/vue-router/vue-router.node.mjs b/apps/web/.output/server/node_modules/vue-router/vue-router.node.mjs new file mode 100644 index 0000000..b7abbbb --- /dev/null +++ b/apps/web/.output/server/node_modules/vue-router/vue-router.node.mjs @@ -0,0 +1,2 @@ +global.__VUE_PROD_DEVTOOLS__ = false +export * from './dist/vue-router.js' diff --git a/apps/web/.output/server/node_modules/vue/dist/vue.cjs.js b/apps/web/.output/server/node_modules/vue/dist/vue.cjs.js new file mode 100644 index 0000000..e487d2d --- /dev/null +++ b/apps/web/.output/server/node_modules/vue/dist/vue.cjs.js @@ -0,0 +1,80 @@ +/** +* vue v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var runtimeDom = require('@vue/runtime-dom'); +var shared = require('@vue/shared'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var runtimeDom__namespace = /*#__PURE__*/_interopNamespaceDefault(runtimeDom); + +const compileCache = /* @__PURE__ */ Object.create(null); +function compileToFunction(template, options) { + if (!shared.isString(template)) { + if (template.nodeType) { + template = template.innerHTML; + } else { + runtimeDom.warn(`invalid template option: `, template); + return shared.NOOP; + } + } + const key = shared.genCacheKey(template, options); + const cached = compileCache[key]; + if (cached) { + return cached; + } + if (template[0] === "#") { + const el = document.querySelector(template); + if (!el) { + runtimeDom.warn(`Template element not found or is empty: ${template}`); + } + template = el ? el.innerHTML : ``; + } + const opts = shared.extend( + { + hoistStatic: true, + onError: onError , + onWarn: (e) => onError(e, true) + }, + options + ); + if (!opts.isCustomElement && typeof customElements !== "undefined") { + opts.isCustomElement = (tag) => !!customElements.get(tag); + } + const { code } = compilerDom.compile(template, opts); + function onError(err, asWarning = false) { + const message = asWarning ? err.message : `Template compilation error: ${err.message}`; + const codeFrame = err.loc && shared.generateCodeFrame( + template, + err.loc.start.offset, + err.loc.end.offset + ); + runtimeDom.warn(codeFrame ? `${message} +${codeFrame}` : message); + } + const render = new Function("Vue", code)(runtimeDom__namespace); + render._rc = true; + return compileCache[key] = render; +} +runtimeDom.registerRuntimeCompiler(compileToFunction); + +exports.compile = compileToFunction; +Object.keys(runtimeDom).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeDom[k]; +}); diff --git a/apps/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js b/apps/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js new file mode 100644 index 0000000..2c401c3 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js @@ -0,0 +1,66 @@ +/** +* vue v3.5.44 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var runtimeDom = require('@vue/runtime-dom'); +var shared = require('@vue/shared'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var runtimeDom__namespace = /*#__PURE__*/_interopNamespaceDefault(runtimeDom); + +const compileCache = /* @__PURE__ */ Object.create(null); +function compileToFunction(template, options) { + if (!shared.isString(template)) { + if (template.nodeType) { + template = template.innerHTML; + } else { + return shared.NOOP; + } + } + const key = shared.genCacheKey(template, options); + const cached = compileCache[key]; + if (cached) { + return cached; + } + if (template[0] === "#") { + const el = document.querySelector(template); + template = el ? el.innerHTML : ``; + } + const opts = shared.extend( + { + hoistStatic: true, + onError: void 0, + onWarn: shared.NOOP + }, + options + ); + if (!opts.isCustomElement && typeof customElements !== "undefined") { + opts.isCustomElement = (tag) => !!customElements.get(tag); + } + const { code } = compilerDom.compile(template, opts); + const render = new Function("Vue", code)(runtimeDom__namespace); + render._rc = true; + return compileCache[key] = render; +} +runtimeDom.registerRuntimeCompiler(compileToFunction); + +exports.compile = compileToFunction; +Object.keys(runtimeDom).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeDom[k]; +}); diff --git a/apps/web/.output/server/node_modules/vue/index.js b/apps/web/.output/server/node_modules/vue/index.js new file mode 100644 index 0000000..7a3dc2d --- /dev/null +++ b/apps/web/.output/server/node_modules/vue/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/vue.cjs.prod.js') +} else { + module.exports = require('./dist/vue.cjs.js') +} diff --git a/apps/web/.output/server/node_modules/vue/index.mjs b/apps/web/.output/server/node_modules/vue/index.mjs new file mode 100644 index 0000000..fcb9204 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/apps/web/.output/server/node_modules/vue/package.json b/apps/web/.output/server/node_modules/vue/package.json new file mode 100644 index 0000000..851bea9 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue/package.json @@ -0,0 +1,112 @@ +{ + "name": "vue", + "version": "3.5.44", + "description": "The progressive JavaScript framework for building modern web UI.", + "main": "index.js", + "module": "dist/vue.runtime.esm-bundler.js", + "types": "dist/vue.d.ts", + "unpkg": "dist/vue.global.js", + "jsdelivr": "dist/vue.global.js", + "files": [ + "index.js", + "index.mjs", + "dist", + "compiler-sfc", + "server-renderer", + "jsx-runtime", + "jsx.d.ts" + ], + "exports": { + ".": { + "import": { + "types": "./dist/vue.d.mts", + "node": "./index.mjs", + "default": "./dist/vue.runtime.esm-bundler.js" + }, + "require": { + "types": "./dist/vue.d.ts", + "node": { + "production": "./dist/vue.cjs.prod.js", + "development": "./dist/vue.cjs.js", + "default": "./dist/vue.cjs.prod.js" + }, + "default": "./index.js" + } + }, + "./server-renderer": { + "import": { + "types": "./server-renderer/index.d.mts", + "default": "./server-renderer/index.mjs" + }, + "require": { + "types": "./server-renderer/index.d.ts", + "default": "./server-renderer/index.js" + } + }, + "./compiler-sfc": { + "import": { + "types": "./compiler-sfc/index.d.mts", + "browser": "./compiler-sfc/index.browser.mjs", + "default": "./compiler-sfc/index.mjs" + }, + "require": { + "types": "./compiler-sfc/index.d.ts", + "browser": "./compiler-sfc/index.browser.js", + "default": "./compiler-sfc/index.js" + } + }, + "./jsx-runtime": { + "types": "./jsx-runtime/index.d.ts", + "import": "./jsx-runtime/index.mjs", + "require": "./jsx-runtime/index.js" + }, + "./jsx-dev-runtime": { + "types": "./jsx-runtime/index.d.ts", + "import": "./jsx-runtime/index.mjs", + "require": "./jsx-runtime/index.js" + }, + "./jsx": "./jsx.d.ts", + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, + "buildOptions": { + "name": "Vue", + "formats": [ + "esm-bundler", + "esm-bundler-runtime", + "cjs", + "global", + "global-runtime", + "esm-browser", + "esm-browser-runtime" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://vuejs.org/", + "dependencies": { + "@vue/shared": "3.5.44", + "@vue/compiler-dom": "3.5.44", + "@vue/runtime-dom": "3.5.44", + "@vue/compiler-sfc": "3.5.44", + "@vue/server-renderer": "3.5.44" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } +} \ No newline at end of file diff --git a/apps/web/.output/server/node_modules/vue/server-renderer/index.mjs b/apps/web/.output/server/node_modules/vue/server-renderer/index.mjs new file mode 100644 index 0000000..ac61472 --- /dev/null +++ b/apps/web/.output/server/node_modules/vue/server-renderer/index.mjs @@ -0,0 +1 @@ +export * from '@vue/server-renderer' diff --git a/docker-compose.yml b/docker-compose.yml index 2010c17..2ee65a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,5 @@ -# Production stack. Copy .env.example to .env, fill in the secrets, then: +# Production stack. The images only copy pre-built output (`pnpm build`, committed), nothing is +# installed or compiled on the server. Copy .env.example to .env, fill in the secrets, then: # docker compose up -d --build # docker compose exec api node dist/seed/seed.js # first run only: initial content + admin user # @@ -41,8 +42,6 @@ services: context: . dockerfile: docker/api.Dockerfile target: migrate - args: - NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmjs.org/} restart: "no" depends_on: postgres: @@ -56,8 +55,6 @@ services: context: . dockerfile: docker/api.Dockerfile target: runtime - args: - NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmjs.org/} restart: unless-stopped depends_on: migrate: @@ -88,8 +85,6 @@ services: build: context: . dockerfile: docker/web.Dockerfile - args: - NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmjs.org/} restart: unless-stopped depends_on: - api @@ -103,9 +98,6 @@ services: build: context: . dockerfile: docker/admin.Dockerfile - args: - NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmjs.org/} - SITE_URL: https://${SITE_DOMAIN} restart: unless-stopped gateway: diff --git a/docker/api.Dockerfile b/docker/api.Dockerfile index 94ecaab..021d462 100644 --- a/docker/api.Dockerfile +++ b/docker/api.Dockerfile @@ -1,40 +1,21 @@ -# NestJS API. Build context: repository root. +# NestJS API. Pre-built output: `pnpm build` bundles it into apps/api/.output (apps/api/scripts/bundle.mjs). # docker build -f docker/api.Dockerfile -t imen-api . # API server # docker build -f docker/api.Dockerfile --target migrate -t imen-migrate . # one-off migrations ARG NODE_IMAGE=docker.arvancloud.ir/node:24-alpine -FROM ${NODE_IMAGE} AS build -# npm registry (and mirror for corepack's pnpm download) — override where npmjs.org is slow or blocked -ARG NPM_REGISTRY=https://registry.npmjs.org/ -ENV COREPACK_NPM_REGISTRY=${NPM_REGISTRY} npm_config_registry=${NPM_REGISTRY} -RUN corepack enable -WORKDIR /repo -COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ -COPY packages/shared packages/shared -COPY apps/api apps/api -RUN pnpm config set fetch-retries 5 \ - && pnpm config set fetch-retry-maxtimeout 120000 \ - && pnpm install --frozen-lockfile --filter "@imen/api..." || pnpm install --no-frozen-lockfile --filter "@imen/api..." -RUN pnpm --filter "@imen/api..." build -# self-contained production node_modules (workspace packages copied, dev deps dropped). -# @prisma/client lists the Prisma CLI and TypeScript as optional peers, so pnpm keeps them -# (plus Prisma Studio's React/PGlite/effect) — none are used at runtime, drop ~300 MB. -RUN pnpm --filter @imen/api deploy --prod --legacy /out \ - && cd /out/node_modules/.pnpm \ - && rm -rf prisma@* @prisma+studio-core@* @prisma+dev@* @electric-sql+* effect@* typescript@* react@* react-dom@* - -# applies pending migrations and exits (needs the Prisma CLI, a dev dependency) -FROM build AS migrate -WORKDIR /repo/apps/api -CMD ["node_modules/.bin/prisma", "migrate", "deploy"] - -FROM ${NODE_IMAGE} AS runtime +FROM ${NODE_IMAGE} AS app WORKDIR /app -ENV NODE_ENV=production PORT=4000 -COPY --from=build /out/node_modules ./node_modules -COPY --from=build /out/package.json ./package.json -COPY --from=build /repo/apps/api/dist ./dist -COPY --from=build /repo/apps/api/seed-assets ./seed-assets +ENV NODE_ENV=production +COPY apps/api/.output ./ +COPY apps/api/prisma/migrations ./prisma/migrations +COPY apps/api/seed-assets ./seed-assets + +# applies pending migrations and exits +FROM app AS migrate +CMD ["node", "dist/migrate.js"] + +FROM app AS runtime +ENV PORT=4000 USER node EXPOSE 4000 CMD ["node", "dist/main.js"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e68de9..8748bb3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,6 +111,9 @@ importers: helmet: specifier: ^8.3.0 version: 8.3.0 + pg: + specifier: ^8.23.1 + version: 8.23.1 reflect-metadata: specifier: ^0.2.2 version: 0.2.2 @@ -145,9 +148,15 @@ importers: '@types/node': specifier: ^24.0.0 version: 24.19.2 + '@types/pg': + specifier: ^8.23.1 + version: 8.23.1 '@types/supertest': specifier: ^7.0.0 version: 7.2.1 + esbuild: + specifier: ^0.28.2 + version: 0.28.2 prisma: specifier: 7.10.1 version: 7.10.1(@types/node@24.19.2)(@types/react@19.3.0)(magicast@0.5.5)(react-dom@19.3.1(react@19.3.1))(react@19.3.1)(typescript@6.0.3) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4ff8f9d..6efadfa 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,3 +10,10 @@ onlyBuiltDependencies: - prisma - sharp - vue-demi + +# also install the Linux (Alpine/musl, x64) native binaries, so the API bundle built here +# (apps/api/scripts/bundle.mjs) runs in the docker/api.Dockerfile image without installing anything +supportedArchitectures: + os: [current, linux] + cpu: [current, x64] + libc: [current, musl]